diff --git a/public/build/assets/404-omy4z92C.js b/public/build/assets/404-VO_jnB3Q.js similarity index 94% rename from public/build/assets/404-omy4z92C.js rename to public/build/assets/404-VO_jnB3Q.js index eb8e7540..bb3c1423 100644 --- a/public/build/assets/404-omy4z92C.js +++ b/public/build/assets/404-VO_jnB3Q.js @@ -1 +1 @@ -import{L as u,e as m,k as d,r as n,o as p,c as h,b as s,t as o,a as c,w as _,p as f}from"./main-B9dpPbRR.js";const x={class:"w-full h-screen"},g={class:"flex items-center justify-center w-full h-full"},w={class:"flex flex-col items-center justify-center"},y={class:"text-primary-500",style:{"font-size":"10rem"}},b={class:"mb-10 text-3xl text-primary-500"},B={__name:"404",setup(v){const e=u();m();const l=d(()=>{if(e.path.indexOf("customer")>-1&&e.params.company)return`/${e.params.company}/customer/dashboard`;if(e.params.catchAll){let a=e.params.catchAll.indexOf("/");return a>-1?`/${e.params.catchAll.substring(a,0)}/customer/dashboard`:"/"}else return"/admin/dashboard"});return(t,a)=>{const r=n("BaseIcon"),i=n("router-link");return p(),h("div",x,[s("div",g,[s("div",w,[s("h1",y,o(t.$t("general.four_zero_four")),1),s("h5",b,o(t.$t("general.you_got_lost")),1),c(i,{class:"flex items-center w-32 h-12 px-3 py-1 text-base font-medium leading-none text-center text-white rounded whitespace-nowrap bg-primary-500 btn-lg hover:text-white",to:l.value},{default:_(()=>[c(r,{name:"ArrowLeftIcon",class:"mr-2 text-white icon"}),f(" "+o(t.$t("general.go_home")),1)]),_:1},8,["to"])])])])}}};export{B as default}; +import{L as u,e as m,k as d,r as n,o as p,c as h,b as s,t as o,a as c,w as _,p as f}from"./main-pPEsZPea.js";const x={class:"w-full h-screen"},g={class:"flex items-center justify-center w-full h-full"},w={class:"flex flex-col items-center justify-center"},y={class:"text-primary-500",style:{"font-size":"10rem"}},b={class:"mb-10 text-3xl text-primary-500"},B={__name:"404",setup(v){const e=u();m();const l=d(()=>{if(e.path.indexOf("customer")>-1&&e.params.company)return`/${e.params.company}/customer/dashboard`;if(e.params.catchAll){let a=e.params.catchAll.indexOf("/");return a>-1?`/${e.params.catchAll.substring(a,0)}/customer/dashboard`:"/"}else return"/admin/dashboard"});return(t,a)=>{const r=n("BaseIcon"),i=n("router-link");return p(),h("div",x,[s("div",g,[s("div",w,[s("h1",y,o(t.$t("general.four_zero_four")),1),s("h5",b,o(t.$t("general.you_got_lost")),1),c(i,{class:"flex items-center w-32 h-12 px-3 py-1 text-base font-medium leading-none text-center text-white rounded whitespace-nowrap bg-primary-500 btn-lg hover:text-white",to:l.value},{default:_(()=>[c(r,{name:"ArrowLeftIcon",class:"mr-2 text-white icon"}),f(" "+o(t.$t("general.go_home")),1)]),_:1},8,["to"])])])])}}};export{B as default}; diff --git a/public/build/assets/AccountSetting-B6yy8qIQ.js b/public/build/assets/AccountSetting-Yk7vmOX9.js similarity index 98% rename from public/build/assets/AccountSetting-B6yy8qIQ.js rename to public/build/assets/AccountSetting-Yk7vmOX9.js index e78a6611..6409ad2f 100644 --- a/public/build/assets/AccountSetting-B6yy8qIQ.js +++ b/public/build/assets/AccountSetting-Yk7vmOX9.js @@ -1 +1 @@ -import{M as N,G as D,E as R,v as h,f as $,k as B,H as j,j as E,r as u,o as V,c as L,a as o,w as l,l as s,n as z,m as H,J,K,p as P,t as T,q as O,b as Q,g as f,h as b,i as W,I as X,a0 as Y}from"./main-B9dpPbRR.js";const Z=Q("span",null,null,-1),ae={__name:"AccountSetting",setup(x){const i=N(),I=D(),U=R(),{t:g}=h.useI18n();let d=$(!1),m=$(null),c=$([]);const w=$(!1);i.currentUser.avatar&&c.value.push({image:i.currentUser.avatar});const S=B(()=>({name:{required:f.withMessage(g("validation.required"),b)},email:{required:f.withMessage(g("validation.required"),b),email:f.withMessage(g("validation.email_incorrect"),W)},password:{minLength:f.withMessage(g("validation.password_length",{count:8}),X(8))},confirm_password:{sameAsPassword:f.withMessage(g("validation.password_incorrect"),Y(a.password))}})),a=j({name:i.currentUser.name,email:i.currentUser.email,language:i.currentUserSettings.language||U.selectedCompanySettings.language,password:"",confirm_password:""}),n=E(S,B(()=>a));function y(r,e){m.value=e}function C(){m.value=null,w.value=!0}async function M(){if(n.value.$touch(),n.value.$invalid)return!0;d.value=!0;let r={name:a.name,email:a.email};try{if(a.password!=null&&a.password!==void 0&&a.password!==""&&(r={...r,password:a.password}),i.currentUserSettings.language!==a.language&&await i.updateUserSettings({settings:{language:a.language}}),(await i.updateCurrentUser(r)).data.data){if(d.value=!1,m.value||w.value){let v=new FormData;m.value&&v.append("admin_avatar",m.value),v.append("is_admin_avatar_removed",w.value),await i.uploadAvatar(v),m.value=null,w.value=!1}a.password="",a.confirm_password=""}}catch{return d.value=!1,!0}}return(r,e)=>{const v=u("BaseFileUploader"),p=u("BaseInputGroup"),_=u("BaseInput"),q=u("BaseMultiselect"),F=u("BaseInputGrid"),k=u("BaseIcon"),A=u("BaseButton"),G=u("BaseSettingCard");return V(),L("form",{class:"relative",onSubmit:O(M,["prevent"])},[o(G,{title:r.$t("settings.account_settings.account_settings"),description:r.$t("settings.account_settings.section_description")},{default:l(()=>[o(F,null,{default:l(()=>[o(p,{label:r.$t("settings.account_settings.profile_picture")},{default:l(()=>[o(v,{modelValue:s(c),"onUpdate:modelValue":e[0]||(e[0]=t=>z(c)?c.value=t:c=t),avatar:!0,accept:"image/*",onChange:y,onRemove:C},null,8,["modelValue"])]),_:1},8,["label"]),Z,o(p,{label:r.$t("settings.account_settings.name"),error:s(n).name.$error&&s(n).name.$errors[0].$message,required:""},{default:l(()=>[o(_,{modelValue:a.name,"onUpdate:modelValue":e[1]||(e[1]=t=>a.name=t),invalid:s(n).name.$error,onInput:e[2]||(e[2]=t=>s(n).name.$touch())},null,8,["modelValue","invalid"])]),_:1},8,["label","error"]),o(p,{label:r.$t("settings.account_settings.email"),error:s(n).email.$error&&s(n).email.$errors[0].$message,required:""},{default:l(()=>[o(_,{modelValue:a.email,"onUpdate:modelValue":e[3]||(e[3]=t=>a.email=t),invalid:s(n).email.$error,onInput:e[4]||(e[4]=t=>s(n).email.$touch())},null,8,["modelValue","invalid"])]),_:1},8,["label","error"]),o(p,{error:s(n).password.$error&&s(n).password.$errors[0].$message,label:r.$t("settings.account_settings.password")},{default:l(()=>[o(_,{modelValue:a.password,"onUpdate:modelValue":e[5]||(e[5]=t=>a.password=t),type:"password",onInput:e[6]||(e[6]=t=>s(n).password.$touch())},null,8,["modelValue"])]),_:1},8,["error","label"]),o(p,{label:r.$t("settings.account_settings.confirm_password"),error:s(n).confirm_password.$error&&s(n).confirm_password.$errors[0].$message},{default:l(()=>[o(_,{modelValue:a.confirm_password,"onUpdate:modelValue":e[7]||(e[7]=t=>a.confirm_password=t),type:"password",onInput:e[8]||(e[8]=t=>s(n).confirm_password.$touch())},null,8,["modelValue"])]),_:1},8,["label","error"]),o(p,{label:r.$t("settings.language")},{default:l(()=>[o(q,{modelValue:a.language,"onUpdate:modelValue":e[9]||(e[9]=t=>a.language=t),options:s(I).config.languages,label:"name","value-prop":"code","track-by":"name","open-direction":"top"},null,8,["modelValue","options"])]),_:1},8,["label"])]),_:1}),o(A,{loading:s(d),disabled:s(d),class:"mt-6"},{left:l(t=>[s(d)?K("",!0):(V(),H(k,{key:0,name:"SaveIcon",class:J(t.class)},null,8,["class"]))]),default:l(()=>[P(" "+T(r.$t("settings.company_info.save")),1)]),_:1},8,["loading","disabled"])]),_:1},8,["title","description"])],32)}}};export{ae as default}; +import{M as N,G as D,E as R,v as h,f as $,k as B,H as j,j as E,r as u,o as V,c as L,a as o,w as l,l as s,n as z,m as H,J,K,p as P,t as T,q as O,b as Q,g as f,h as b,i as W,I as X,a0 as Y}from"./main-pPEsZPea.js";const Z=Q("span",null,null,-1),ae={__name:"AccountSetting",setup(x){const i=N(),I=D(),U=R(),{t:g}=h.useI18n();let d=$(!1),m=$(null),c=$([]);const w=$(!1);i.currentUser.avatar&&c.value.push({image:i.currentUser.avatar});const S=B(()=>({name:{required:f.withMessage(g("validation.required"),b)},email:{required:f.withMessage(g("validation.required"),b),email:f.withMessage(g("validation.email_incorrect"),W)},password:{minLength:f.withMessage(g("validation.password_length",{count:8}),X(8))},confirm_password:{sameAsPassword:f.withMessage(g("validation.password_incorrect"),Y(a.password))}})),a=j({name:i.currentUser.name,email:i.currentUser.email,language:i.currentUserSettings.language||U.selectedCompanySettings.language,password:"",confirm_password:""}),n=E(S,B(()=>a));function y(r,e){m.value=e}function C(){m.value=null,w.value=!0}async function M(){if(n.value.$touch(),n.value.$invalid)return!0;d.value=!0;let r={name:a.name,email:a.email};try{if(a.password!=null&&a.password!==void 0&&a.password!==""&&(r={...r,password:a.password}),i.currentUserSettings.language!==a.language&&await i.updateUserSettings({settings:{language:a.language}}),(await i.updateCurrentUser(r)).data.data){if(d.value=!1,m.value||w.value){let v=new FormData;m.value&&v.append("admin_avatar",m.value),v.append("is_admin_avatar_removed",w.value),await i.uploadAvatar(v),m.value=null,w.value=!1}a.password="",a.confirm_password=""}}catch{return d.value=!1,!0}}return(r,e)=>{const v=u("BaseFileUploader"),p=u("BaseInputGroup"),_=u("BaseInput"),q=u("BaseMultiselect"),F=u("BaseInputGrid"),k=u("BaseIcon"),A=u("BaseButton"),G=u("BaseSettingCard");return V(),L("form",{class:"relative",onSubmit:O(M,["prevent"])},[o(G,{title:r.$t("settings.account_settings.account_settings"),description:r.$t("settings.account_settings.section_description")},{default:l(()=>[o(F,null,{default:l(()=>[o(p,{label:r.$t("settings.account_settings.profile_picture")},{default:l(()=>[o(v,{modelValue:s(c),"onUpdate:modelValue":e[0]||(e[0]=t=>z(c)?c.value=t:c=t),avatar:!0,accept:"image/*",onChange:y,onRemove:C},null,8,["modelValue"])]),_:1},8,["label"]),Z,o(p,{label:r.$t("settings.account_settings.name"),error:s(n).name.$error&&s(n).name.$errors[0].$message,required:""},{default:l(()=>[o(_,{modelValue:a.name,"onUpdate:modelValue":e[1]||(e[1]=t=>a.name=t),invalid:s(n).name.$error,onInput:e[2]||(e[2]=t=>s(n).name.$touch())},null,8,["modelValue","invalid"])]),_:1},8,["label","error"]),o(p,{label:r.$t("settings.account_settings.email"),error:s(n).email.$error&&s(n).email.$errors[0].$message,required:""},{default:l(()=>[o(_,{modelValue:a.email,"onUpdate:modelValue":e[3]||(e[3]=t=>a.email=t),invalid:s(n).email.$error,onInput:e[4]||(e[4]=t=>s(n).email.$touch())},null,8,["modelValue","invalid"])]),_:1},8,["label","error"]),o(p,{error:s(n).password.$error&&s(n).password.$errors[0].$message,label:r.$t("settings.account_settings.password")},{default:l(()=>[o(_,{modelValue:a.password,"onUpdate:modelValue":e[5]||(e[5]=t=>a.password=t),type:"password",onInput:e[6]||(e[6]=t=>s(n).password.$touch())},null,8,["modelValue"])]),_:1},8,["error","label"]),o(p,{label:r.$t("settings.account_settings.confirm_password"),error:s(n).confirm_password.$error&&s(n).confirm_password.$errors[0].$message},{default:l(()=>[o(_,{modelValue:a.confirm_password,"onUpdate:modelValue":e[7]||(e[7]=t=>a.confirm_password=t),type:"password",onInput:e[8]||(e[8]=t=>s(n).confirm_password.$touch())},null,8,["modelValue"])]),_:1},8,["label","error"]),o(p,{label:r.$t("settings.language")},{default:l(()=>[o(q,{modelValue:a.language,"onUpdate:modelValue":e[9]||(e[9]=t=>a.language=t),options:s(I).config.languages,label:"name","value-prop":"code","track-by":"name","open-direction":"top"},null,8,["modelValue","options"])]),_:1},8,["label"])]),_:1}),o(A,{loading:s(d),disabled:s(d),class:"mt-6"},{left:l(t=>[s(d)?K("",!0):(V(),H(k,{key:0,name:"SaveIcon",class:J(t.class)},null,8,["class"]))]),default:l(()=>[P(" "+T(r.$t("settings.company_info.save")),1)]),_:1},8,["loading","disabled"])]),_:1},8,["title","description"])],32)}}};export{ae as default}; diff --git a/public/build/assets/AddressInformation-uSpUozh3.js b/public/build/assets/AddressInformation-_ZC93Yt6.js similarity index 98% rename from public/build/assets/AddressInformation-uSpUozh3.js rename to public/build/assets/AddressInformation-_ZC93Yt6.js index 3d275d22..9054e2a8 100644 --- a/public/build/assets/AddressInformation-uSpUozh3.js +++ b/public/build/assets/AddressInformation-_ZC93Yt6.js @@ -1 +1 @@ -import{L as x,v as I,f as C,r as m,o as b,c as y,a as o,w as r,b as d,t as p,l as e,J as h,p as F,K as v,m as z,q as k}from"./main-B9dpPbRR.js";import{a as w,u as S}from"./global-1F4OAoew.js";import"./auth-6FPSPboo.js";const D={class:"mb-6"},j={class:"font-bold text-left"},A={class:"mt-2 text-sm leading-snug text-left text-gray-500",style:{"max-width":"680px"}},N={class:"grid grid-cols-5 gap-4 mb-8"},G={class:"col-span-5 text-lg font-semibold text-left lg:col-span-1"},T={class:"grid col-span-5 lg:col-span-4 gap-y-6 gap-x-4 md:grid-cols-6"},q={class:"md:col-span-3"},E={class:"flex items-center justify-start mb-6 md:justify-end md:mb-0"},J={class:"p-1"},K={class:"grid grid-cols-5 gap-4 mb-8"},L={class:"col-span-5 text-lg font-semibold text-left lg:col-span-1"},R={key:0,class:"grid col-span-5 lg:col-span-4 gap-y-6 gap-x-4 md:grid-cols-6"},H={class:"md:col-span-3"},O={class:"flex items-center justify-end"},Z={__name:"AddressInformation",setup(P){const l=w();x();const{tm:$,t:Q}=I.useI18n(),g=S();let u=C(!1);g.fetchCountries();function B(){u.value=!0;let a=l.userForm;l.updateCurrentUser({data:a,message:$("customers.address_updated_message")}).then(s=>{u.value=!1}).catch(s=>{u.value=!1})}return(a,s)=>{const i=m("BaseInput"),n=m("BaseInputGroup"),f=m("BaseMultiselect"),c=m("BaseTextarea"),U=m("BaseDivider"),_=m("BaseIcon"),V=m("BaseButton"),M=m("BaseCard");return b(),y("form",{class:"relative h-full mt-4",onSubmit:k(B,["prevent"])},[o(M,null,{default:r(()=>[d("div",D,[d("h6",j,p(a.$t("settings.menu_title.address_information")),1),d("p",A,p(a.$t("settings.address_information.section_description")),1)]),d("div",N,[d("h6",G,p(a.$t("customers.billing_address")),1),d("div",T,[o(n,{label:a.$t("customers.name"),class:"w-full md:col-span-3"},{default:r(()=>[o(i,{modelValue:e(l).userForm.billing.name,"onUpdate:modelValue":s[0]||(s[0]=t=>e(l).userForm.billing.name=t),modelModifiers:{trim:!0},type:"text",class:"w-full",name:"address_name"},null,8,["modelValue"])]),_:1},8,["label"]),o(n,{label:a.$t("customers.country"),class:"md:col-span-3"},{default:r(()=>[o(f,{modelValue:e(l).userForm.billing.country_id,"onUpdate:modelValue":s[1]||(s[1]=t=>e(l).userForm.billing.country_id=t),"value-prop":"id",label:"name","track-by":"name","resolve-on-load":"",searchable:"",options:e(g).countries,placeholder:a.$t("general.select_country"),class:"w-full"},null,8,["modelValue","options","placeholder"])]),_:1},8,["label"]),o(n,{label:a.$t("customers.state"),class:"md:col-span-3"},{default:r(()=>[o(i,{modelValue:e(l).userForm.billing.state,"onUpdate:modelValue":s[2]||(s[2]=t=>e(l).userForm.billing.state=t),name:"billing.state",type:"text"},null,8,["modelValue"])]),_:1},8,["label"]),o(n,{label:a.$t("customers.city"),class:"md:col-span-3"},{default:r(()=>[o(i,{modelValue:e(l).userForm.billing.city,"onUpdate:modelValue":s[3]||(s[3]=t=>e(l).userForm.billing.city=t),name:"billing.city",type:"text"},null,8,["modelValue"])]),_:1},8,["label"]),o(n,{label:a.$t("customers.address"),class:"md:col-span-3"},{default:r(()=>[o(c,{modelValue:e(l).userForm.billing.address_street_1,"onUpdate:modelValue":s[4]||(s[4]=t=>e(l).userForm.billing.address_street_1=t),modelModifiers:{trim:!0},placeholder:a.$t("general.street_1"),type:"text",name:"billing_street1","container-class":"mt-3"},null,8,["modelValue","placeholder"]),o(c,{modelValue:e(l).userForm.billing.address_street_2,"onUpdate:modelValue":s[5]||(s[5]=t=>e(l).userForm.billing.address_street_2=t),modelModifiers:{trim:!0},placeholder:a.$t("general.street_2"),type:"text",class:"mt-3",name:"billing_street2","container-class":"mt-3"},null,8,["modelValue","placeholder"])]),_:1},8,["label"]),d("div",q,[o(n,{label:a.$t("customers.phone"),class:"text-left"},{default:r(()=>[o(i,{modelValue:e(l).userForm.billing.phone,"onUpdate:modelValue":s[6]||(s[6]=t=>e(l).userForm.billing.phone=t),modelModifiers:{trim:!0},type:"text",name:"phone"},null,8,["modelValue"])]),_:1},8,["label"]),o(n,{label:a.$t("customers.zip_code"),class:"mt-2 text-left"},{default:r(()=>[o(i,{modelValue:e(l).userForm.billing.zip,"onUpdate:modelValue":s[7]||(s[7]=t=>e(l).userForm.billing.zip=t),modelModifiers:{trim:!0},type:"text",name:"zip"},null,8,["modelValue"])]),_:1},8,["label"])])])]),o(U,{class:"mb-5 md:mb-8"}),d("div",E,[d("div",J,[o(V,{ref:"sameAddress",type:"button",onClick:s[8]||(s[8]=t=>e(l).copyAddress(!0))},{left:r(t=>[o(_,{name:"DocumentDuplicateIcon",class:h(t.class)},null,8,["class"])]),default:r(()=>[F(" "+p(a.$t("customers.copy_billing_address")),1)]),_:1},512)])]),d("div",K,[d("h6",L,p(a.$t("customers.shipping_address")),1),e(l).userForm.shipping?(b(),y("div",R,[o(n,{label:a.$t("customers.name"),class:"md:col-span-3"},{default:r(()=>[o(i,{modelValue:e(l).userForm.shipping.name,"onUpdate:modelValue":s[9]||(s[9]=t=>e(l).userForm.shipping.name=t),modelModifiers:{trim:!0},type:"text",name:"address_name"},null,8,["modelValue"])]),_:1},8,["label"]),o(n,{label:a.$t("customers.country"),class:"md:col-span-3"},{default:r(()=>[o(f,{modelValue:e(l).userForm.shipping.country_id,"onUpdate:modelValue":s[10]||(s[10]=t=>e(l).userForm.shipping.country_id=t),"value-prop":"id",label:"name","track-by":"name","resolve-on-load":"",searchable:"",options:e(g).countries,placeholder:a.$t("general.select_country"),class:"w-full"},null,8,["modelValue","options","placeholder"])]),_:1},8,["label"]),o(n,{label:a.$t("customers.state"),class:"md:col-span-3"},{default:r(()=>[o(i,{modelValue:e(l).userForm.shipping.state,"onUpdate:modelValue":s[11]||(s[11]=t=>e(l).userForm.shipping.state=t),name:"shipping.state",type:"text"},null,8,["modelValue"])]),_:1},8,["label"]),o(n,{label:a.$t("customers.city"),class:"md:col-span-3"},{default:r(()=>[o(i,{modelValue:e(l).userForm.shipping.city,"onUpdate:modelValue":s[12]||(s[12]=t=>e(l).userForm.shipping.city=t),name:"shipping.city",type:"text"},null,8,["modelValue"])]),_:1},8,["label"]),o(n,{label:a.$t("customers.address"),class:"md:col-span-3"},{default:r(()=>[o(c,{modelValue:e(l).userForm.shipping.address_street_1,"onUpdate:modelValue":s[13]||(s[13]=t=>e(l).userForm.shipping.address_street_1=t),modelModifiers:{trim:!0},type:"text",placeholder:a.$t("general.street_1"),name:"shipping_street1"},null,8,["modelValue","placeholder"]),o(c,{modelValue:e(l).userForm.shipping.address_street_2,"onUpdate:modelValue":s[14]||(s[14]=t=>e(l).userForm.shipping.address_street_2=t),modelModifiers:{trim:!0},type:"text",placeholder:a.$t("general.street_2"),name:"shipping_street2",class:"mt-3"},null,8,["modelValue","placeholder"])]),_:1},8,["label"]),d("div",H,[o(n,{label:a.$t("customers.phone"),class:"text-left"},{default:r(()=>[o(i,{modelValue:e(l).userForm.shipping.phone,"onUpdate:modelValue":s[15]||(s[15]=t=>e(l).userForm.shipping.phone=t),modelModifiers:{trim:!0},type:"text",name:"phone"},null,8,["modelValue"])]),_:1},8,["label"]),o(n,{label:a.$t("customers.zip_code"),class:"mt-2 text-left"},{default:r(()=>[o(i,{modelValue:e(l).userForm.shipping.zip,"onUpdate:modelValue":s[16]||(s[16]=t=>e(l).userForm.shipping.zip=t),modelModifiers:{trim:!0},type:"text",name:"zip"},null,8,["modelValue"])]),_:1},8,["label"])])])):v("",!0)]),d("div",O,[o(V,{loading:e(u),disabled:e(u)},{left:r(t=>[e(u)?v("",!0):(b(),z(_,{key:0,name:"SaveIcon",class:h(t.class)},null,8,["class"]))]),default:r(()=>[F(" "+p(a.$t("general.save")),1)]),_:1},8,["loading","disabled"])])]),_:1})],32)}}};export{Z as default}; +import{L as x,v as I,f as C,r as m,o as b,c as y,a as o,w as r,b as d,t as p,l as e,J as h,p as F,K as v,m as z,q as k}from"./main-pPEsZPea.js";import{a as w,u as S}from"./global-s5lx2XuM.js";import"./auth-mYHkZCAB.js";const D={class:"mb-6"},j={class:"font-bold text-left"},A={class:"mt-2 text-sm leading-snug text-left text-gray-500",style:{"max-width":"680px"}},N={class:"grid grid-cols-5 gap-4 mb-8"},G={class:"col-span-5 text-lg font-semibold text-left lg:col-span-1"},T={class:"grid col-span-5 lg:col-span-4 gap-y-6 gap-x-4 md:grid-cols-6"},q={class:"md:col-span-3"},E={class:"flex items-center justify-start mb-6 md:justify-end md:mb-0"},J={class:"p-1"},K={class:"grid grid-cols-5 gap-4 mb-8"},L={class:"col-span-5 text-lg font-semibold text-left lg:col-span-1"},R={key:0,class:"grid col-span-5 lg:col-span-4 gap-y-6 gap-x-4 md:grid-cols-6"},H={class:"md:col-span-3"},O={class:"flex items-center justify-end"},Z={__name:"AddressInformation",setup(P){const l=w();x();const{tm:$,t:Q}=I.useI18n(),g=S();let u=C(!1);g.fetchCountries();function B(){u.value=!0;let a=l.userForm;l.updateCurrentUser({data:a,message:$("customers.address_updated_message")}).then(s=>{u.value=!1}).catch(s=>{u.value=!1})}return(a,s)=>{const i=m("BaseInput"),n=m("BaseInputGroup"),f=m("BaseMultiselect"),c=m("BaseTextarea"),U=m("BaseDivider"),_=m("BaseIcon"),V=m("BaseButton"),M=m("BaseCard");return b(),y("form",{class:"relative h-full mt-4",onSubmit:k(B,["prevent"])},[o(M,null,{default:r(()=>[d("div",D,[d("h6",j,p(a.$t("settings.menu_title.address_information")),1),d("p",A,p(a.$t("settings.address_information.section_description")),1)]),d("div",N,[d("h6",G,p(a.$t("customers.billing_address")),1),d("div",T,[o(n,{label:a.$t("customers.name"),class:"w-full md:col-span-3"},{default:r(()=>[o(i,{modelValue:e(l).userForm.billing.name,"onUpdate:modelValue":s[0]||(s[0]=t=>e(l).userForm.billing.name=t),modelModifiers:{trim:!0},type:"text",class:"w-full",name:"address_name"},null,8,["modelValue"])]),_:1},8,["label"]),o(n,{label:a.$t("customers.country"),class:"md:col-span-3"},{default:r(()=>[o(f,{modelValue:e(l).userForm.billing.country_id,"onUpdate:modelValue":s[1]||(s[1]=t=>e(l).userForm.billing.country_id=t),"value-prop":"id",label:"name","track-by":"name","resolve-on-load":"",searchable:"",options:e(g).countries,placeholder:a.$t("general.select_country"),class:"w-full"},null,8,["modelValue","options","placeholder"])]),_:1},8,["label"]),o(n,{label:a.$t("customers.state"),class:"md:col-span-3"},{default:r(()=>[o(i,{modelValue:e(l).userForm.billing.state,"onUpdate:modelValue":s[2]||(s[2]=t=>e(l).userForm.billing.state=t),name:"billing.state",type:"text"},null,8,["modelValue"])]),_:1},8,["label"]),o(n,{label:a.$t("customers.city"),class:"md:col-span-3"},{default:r(()=>[o(i,{modelValue:e(l).userForm.billing.city,"onUpdate:modelValue":s[3]||(s[3]=t=>e(l).userForm.billing.city=t),name:"billing.city",type:"text"},null,8,["modelValue"])]),_:1},8,["label"]),o(n,{label:a.$t("customers.address"),class:"md:col-span-3"},{default:r(()=>[o(c,{modelValue:e(l).userForm.billing.address_street_1,"onUpdate:modelValue":s[4]||(s[4]=t=>e(l).userForm.billing.address_street_1=t),modelModifiers:{trim:!0},placeholder:a.$t("general.street_1"),type:"text",name:"billing_street1","container-class":"mt-3"},null,8,["modelValue","placeholder"]),o(c,{modelValue:e(l).userForm.billing.address_street_2,"onUpdate:modelValue":s[5]||(s[5]=t=>e(l).userForm.billing.address_street_2=t),modelModifiers:{trim:!0},placeholder:a.$t("general.street_2"),type:"text",class:"mt-3",name:"billing_street2","container-class":"mt-3"},null,8,["modelValue","placeholder"])]),_:1},8,["label"]),d("div",q,[o(n,{label:a.$t("customers.phone"),class:"text-left"},{default:r(()=>[o(i,{modelValue:e(l).userForm.billing.phone,"onUpdate:modelValue":s[6]||(s[6]=t=>e(l).userForm.billing.phone=t),modelModifiers:{trim:!0},type:"text",name:"phone"},null,8,["modelValue"])]),_:1},8,["label"]),o(n,{label:a.$t("customers.zip_code"),class:"mt-2 text-left"},{default:r(()=>[o(i,{modelValue:e(l).userForm.billing.zip,"onUpdate:modelValue":s[7]||(s[7]=t=>e(l).userForm.billing.zip=t),modelModifiers:{trim:!0},type:"text",name:"zip"},null,8,["modelValue"])]),_:1},8,["label"])])])]),o(U,{class:"mb-5 md:mb-8"}),d("div",E,[d("div",J,[o(V,{ref:"sameAddress",type:"button",onClick:s[8]||(s[8]=t=>e(l).copyAddress(!0))},{left:r(t=>[o(_,{name:"DocumentDuplicateIcon",class:h(t.class)},null,8,["class"])]),default:r(()=>[F(" "+p(a.$t("customers.copy_billing_address")),1)]),_:1},512)])]),d("div",K,[d("h6",L,p(a.$t("customers.shipping_address")),1),e(l).userForm.shipping?(b(),y("div",R,[o(n,{label:a.$t("customers.name"),class:"md:col-span-3"},{default:r(()=>[o(i,{modelValue:e(l).userForm.shipping.name,"onUpdate:modelValue":s[9]||(s[9]=t=>e(l).userForm.shipping.name=t),modelModifiers:{trim:!0},type:"text",name:"address_name"},null,8,["modelValue"])]),_:1},8,["label"]),o(n,{label:a.$t("customers.country"),class:"md:col-span-3"},{default:r(()=>[o(f,{modelValue:e(l).userForm.shipping.country_id,"onUpdate:modelValue":s[10]||(s[10]=t=>e(l).userForm.shipping.country_id=t),"value-prop":"id",label:"name","track-by":"name","resolve-on-load":"",searchable:"",options:e(g).countries,placeholder:a.$t("general.select_country"),class:"w-full"},null,8,["modelValue","options","placeholder"])]),_:1},8,["label"]),o(n,{label:a.$t("customers.state"),class:"md:col-span-3"},{default:r(()=>[o(i,{modelValue:e(l).userForm.shipping.state,"onUpdate:modelValue":s[11]||(s[11]=t=>e(l).userForm.shipping.state=t),name:"shipping.state",type:"text"},null,8,["modelValue"])]),_:1},8,["label"]),o(n,{label:a.$t("customers.city"),class:"md:col-span-3"},{default:r(()=>[o(i,{modelValue:e(l).userForm.shipping.city,"onUpdate:modelValue":s[12]||(s[12]=t=>e(l).userForm.shipping.city=t),name:"shipping.city",type:"text"},null,8,["modelValue"])]),_:1},8,["label"]),o(n,{label:a.$t("customers.address"),class:"md:col-span-3"},{default:r(()=>[o(c,{modelValue:e(l).userForm.shipping.address_street_1,"onUpdate:modelValue":s[13]||(s[13]=t=>e(l).userForm.shipping.address_street_1=t),modelModifiers:{trim:!0},type:"text",placeholder:a.$t("general.street_1"),name:"shipping_street1"},null,8,["modelValue","placeholder"]),o(c,{modelValue:e(l).userForm.shipping.address_street_2,"onUpdate:modelValue":s[14]||(s[14]=t=>e(l).userForm.shipping.address_street_2=t),modelModifiers:{trim:!0},type:"text",placeholder:a.$t("general.street_2"),name:"shipping_street2",class:"mt-3"},null,8,["modelValue","placeholder"])]),_:1},8,["label"]),d("div",H,[o(n,{label:a.$t("customers.phone"),class:"text-left"},{default:r(()=>[o(i,{modelValue:e(l).userForm.shipping.phone,"onUpdate:modelValue":s[15]||(s[15]=t=>e(l).userForm.shipping.phone=t),modelModifiers:{trim:!0},type:"text",name:"phone"},null,8,["modelValue"])]),_:1},8,["label"]),o(n,{label:a.$t("customers.zip_code"),class:"mt-2 text-left"},{default:r(()=>[o(i,{modelValue:e(l).userForm.shipping.zip,"onUpdate:modelValue":s[16]||(s[16]=t=>e(l).userForm.shipping.zip=t),modelModifiers:{trim:!0},type:"text",name:"zip"},null,8,["modelValue"])]),_:1},8,["label"])])])):v("",!0)]),d("div",O,[o(V,{loading:e(u),disabled:e(u)},{left:r(t=>[e(u)?v("",!0):(b(),z(_,{key:0,name:"SaveIcon",class:h(t.class)},null,8,["class"]))]),default:r(()=>[F(" "+p(a.$t("general.save")),1)]),_:1},8,["loading","disabled"])])]),_:1})],32)}}};export{Z as default}; diff --git a/public/build/assets/AstronautIcon-TMugKfCR.js b/public/build/assets/AstronautIcon-8yxe-HhR.js similarity index 98% rename from public/build/assets/AstronautIcon-TMugKfCR.js rename to public/build/assets/AstronautIcon-8yxe-HhR.js index 87f60600..2573af38 100644 --- a/public/build/assets/AstronautIcon-TMugKfCR.js +++ b/public/build/assets/AstronautIcon-8yxe-HhR.js @@ -1 +1 @@ -import{o,c as n,b as l,J as d}from"./main-B9dpPbRR.js";const i={width:"125",height:"110",viewBox:"0 0 125 110",fill:"none",xmlns:"http://www.w3.org/2000/svg"},r={"clip-path":"url(#clip0)"},C=l("defs",null,[l("clipPath",{id:"clip0"},[l("rect",{width:"124.808",height:"110",fill:"white"})])],-1),s={__name:"AstronautIcon",props:{primaryFillColor:{type:String,default:"fill-primary-500"},secondaryFillColor:{type:String,default:"fill-gray-600"}},setup(e){return(a,c)=>(o(),n("svg",i,[l("g",r,[l("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M46.8031 84.4643C46.8031 88.8034 43.3104 92.3215 39.0026 92.3215C34.6948 92.3215 31.2021 88.8034 31.2021 84.4643C31.2021 80.1252 34.6948 76.6072 39.0026 76.6072C43.3104 76.6072 46.8031 80.1252 46.8031 84.4643Z",class:d(e.primaryFillColor)},null,2),l("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M60.4536 110H64.3539V72.6785H60.4536V110Z",class:d(e.secondaryFillColor)},null,2),l("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M85.8055 76.6072H70.2045C69.1319 76.6072 68.2544 77.4911 68.2544 78.5715V82.5C68.2544 83.5804 69.1319 84.4643 70.2045 84.4643H85.8055C86.878 84.4643 87.7556 83.5804 87.7556 82.5V78.5715C87.7556 77.4911 86.878 76.6072 85.8055 76.6072ZM70.2045 82.5H85.8055V78.5715H70.2045V82.5Z",class:d(e.primaryFillColor)},null,2),l("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M91.6556 1.96429C94.8811 1.96429 97.506 4.60821 97.506 7.85714V19.6429H83.8181L85.308 21.6071H99.4561V7.85714C99.4561 3.53571 95.9459 0 91.6556 0H33.152C28.8618 0 25.3516 3.53571 25.3516 7.85714V21.6071H39.3203L40.8745 19.6429H27.3017V7.85714C27.3017 4.60821 29.9265 1.96429 33.152 1.96429H91.6556Z",class:d(e.secondaryFillColor)},null,2),l("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M122.858 92.3213H117.007C115.935 92.3213 115.057 93.2052 115.057 94.2856V102.143C115.057 103.223 115.935 104.107 117.007 104.107H122.858C123.93 104.107 124.808 103.223 124.808 102.143V94.2856C124.808 93.2052 123.93 92.3213 122.858 92.3213ZM117.007 102.143H122.858V94.2856H117.007V102.143Z",class:d(e.primaryFillColor)},null,2),l("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M103.356 43.2142V70.7142H21.4511V43.2142H26.1821V41.2498H19.501V72.6783H105.306V41.2498H98.3541L98.2839 43.2142H103.356Z",class:d(e.secondaryFillColor)},null,2),l("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M101.406 21.6071C104.632 21.6071 107.257 24.251 107.257 27.5V41.25H98.2257L98.0853 43.2142H109.207V27.5C109.207 23.1609 105.714 19.6428 101.406 19.6428H83.8182L85.0878 21.6071H101.406ZM40.8746 19.6428H23.4016C19.0937 19.6428 15.6011 23.1609 15.6011 27.5V43.2142H26.1961L26.3365 41.25H17.5512V27.5C17.5512 24.251 20.1761 21.6071 23.4016 21.6071H39.3204L40.8746 19.6428Z",class:d(e.secondaryFillColor)},null,2),l("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M62.4041 9.82153C45.1709 9.82153 31.2021 23.8917 31.2021 41.2501C31.2021 58.6085 45.1709 72.6787 62.4041 72.6787C79.6373 72.6787 93.606 58.6085 93.606 41.2501C93.606 23.8917 79.6373 9.82153 62.4041 9.82153ZM62.4041 11.7858C78.5335 11.7858 91.6559 25.0035 91.6559 41.2501C91.6559 57.4967 78.5335 70.7144 62.4041 70.7144C46.2746 70.7144 33.1523 57.4967 33.1523 41.2501C33.1523 25.0035 46.2746 11.7858 62.4041 11.7858Z",class:d(e.secondaryFillColor)},null,2),l("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M62.4041 19.6428C45.1709 19.6428 31.2021 23.8916 31.2021 41.25C31.2021 58.6084 45.1709 66.7857 62.4041 66.7857C79.6373 66.7857 93.606 58.6084 93.606 41.25C93.606 23.8916 79.6373 19.6428 62.4041 19.6428ZM62.4041 21.6071C82.6346 21.6071 91.6559 27.665 91.6559 41.25C91.6559 56.0096 80.7216 64.8214 62.4041 64.8214C44.0866 64.8214 33.1523 56.0096 33.1523 41.25C33.1523 27.665 42.1735 21.6071 62.4041 21.6071Z",class:d(e.secondaryFillColor)},null,2),l("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M101.406 70.7144H23.4014C10.478 70.7144 0 81.2685 0 94.2858V110H124.808V94.2858C124.808 81.2685 114.33 70.7144 101.406 70.7144ZM101.406 72.6786C113.234 72.6786 122.858 82.3724 122.858 94.2858V108.036H1.95012V94.2858C1.95012 82.3724 11.574 72.6786 23.4014 72.6786H101.406Z",class:d(e.secondaryFillColor)},null,2),l("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M33.152 33.3928H29.2518C27.0969 33.3928 25.3516 35.1509 25.3516 37.3214V45.1785C25.3516 47.3491 27.0969 49.1071 29.2518 49.1071H33.152V33.3928ZM31.2019 35.3571V47.1428H29.2518C28.1773 47.1428 27.3017 46.2609 27.3017 45.1785V37.3214C27.3017 36.2391 28.1773 35.3571 29.2518 35.3571H31.2019Z",class:d(e.secondaryFillColor)},null,2),l("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M95.556 33.3928H91.6558V49.1071H95.556C97.7109 49.1071 99.4562 47.3491 99.4562 45.1785V37.3214C99.4562 35.1509 97.7109 33.3928 95.556 33.3928ZM95.556 35.3571C96.6305 35.3571 97.5061 36.2391 97.5061 37.3214V45.1785C97.5061 46.2609 96.6305 47.1428 95.556 47.1428H93.6059V35.3571H95.556Z",class:d(e.secondaryFillColor)},null,2),l("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M94.581 15.7144C94.0447 15.7144 93.606 16.1563 93.606 16.6965V34.3751C93.606 34.9152 94.0447 35.3572 94.581 35.3572C95.1173 35.3572 95.5561 34.9152 95.5561 34.3751V16.6965C95.5561 16.1563 95.1173 15.7144 94.581 15.7144Z",class:d(e.secondaryFillColor)},null,2),l("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M38.0273 41.2499C37.4891 41.2499 37.0522 40.8099 37.0522 40.2678C37.0522 33.3142 44.1409 25.5356 53.6283 25.5356C54.1665 25.5356 54.6033 25.9756 54.6033 26.5178C54.6033 27.0599 54.1665 27.4999 53.6283 27.4999C45.2564 27.4999 39.0024 34.2414 39.0024 40.2678C39.0024 40.8099 38.5655 41.2499 38.0273 41.2499Z",class:d(e.primaryFillColor)},null,2),l("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M97.5059 110H99.456V72.6785H97.5059V110Z",class:d(e.secondaryFillColor)},null,2),l("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M25.3516 110H27.3017V72.6785H25.3516V110Z",class:d(e.secondaryFillColor)},null,2)]),C]))}};export{s as _}; +import{o,c as n,b as l,J as d}from"./main-pPEsZPea.js";const i={width:"125",height:"110",viewBox:"0 0 125 110",fill:"none",xmlns:"http://www.w3.org/2000/svg"},r={"clip-path":"url(#clip0)"},C=l("defs",null,[l("clipPath",{id:"clip0"},[l("rect",{width:"124.808",height:"110",fill:"white"})])],-1),s={__name:"AstronautIcon",props:{primaryFillColor:{type:String,default:"fill-primary-500"},secondaryFillColor:{type:String,default:"fill-gray-600"}},setup(e){return(a,c)=>(o(),n("svg",i,[l("g",r,[l("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M46.8031 84.4643C46.8031 88.8034 43.3104 92.3215 39.0026 92.3215C34.6948 92.3215 31.2021 88.8034 31.2021 84.4643C31.2021 80.1252 34.6948 76.6072 39.0026 76.6072C43.3104 76.6072 46.8031 80.1252 46.8031 84.4643Z",class:d(e.primaryFillColor)},null,2),l("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M60.4536 110H64.3539V72.6785H60.4536V110Z",class:d(e.secondaryFillColor)},null,2),l("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M85.8055 76.6072H70.2045C69.1319 76.6072 68.2544 77.4911 68.2544 78.5715V82.5C68.2544 83.5804 69.1319 84.4643 70.2045 84.4643H85.8055C86.878 84.4643 87.7556 83.5804 87.7556 82.5V78.5715C87.7556 77.4911 86.878 76.6072 85.8055 76.6072ZM70.2045 82.5H85.8055V78.5715H70.2045V82.5Z",class:d(e.primaryFillColor)},null,2),l("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M91.6556 1.96429C94.8811 1.96429 97.506 4.60821 97.506 7.85714V19.6429H83.8181L85.308 21.6071H99.4561V7.85714C99.4561 3.53571 95.9459 0 91.6556 0H33.152C28.8618 0 25.3516 3.53571 25.3516 7.85714V21.6071H39.3203L40.8745 19.6429H27.3017V7.85714C27.3017 4.60821 29.9265 1.96429 33.152 1.96429H91.6556Z",class:d(e.secondaryFillColor)},null,2),l("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M122.858 92.3213H117.007C115.935 92.3213 115.057 93.2052 115.057 94.2856V102.143C115.057 103.223 115.935 104.107 117.007 104.107H122.858C123.93 104.107 124.808 103.223 124.808 102.143V94.2856C124.808 93.2052 123.93 92.3213 122.858 92.3213ZM117.007 102.143H122.858V94.2856H117.007V102.143Z",class:d(e.primaryFillColor)},null,2),l("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M103.356 43.2142V70.7142H21.4511V43.2142H26.1821V41.2498H19.501V72.6783H105.306V41.2498H98.3541L98.2839 43.2142H103.356Z",class:d(e.secondaryFillColor)},null,2),l("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M101.406 21.6071C104.632 21.6071 107.257 24.251 107.257 27.5V41.25H98.2257L98.0853 43.2142H109.207V27.5C109.207 23.1609 105.714 19.6428 101.406 19.6428H83.8182L85.0878 21.6071H101.406ZM40.8746 19.6428H23.4016C19.0937 19.6428 15.6011 23.1609 15.6011 27.5V43.2142H26.1961L26.3365 41.25H17.5512V27.5C17.5512 24.251 20.1761 21.6071 23.4016 21.6071H39.3204L40.8746 19.6428Z",class:d(e.secondaryFillColor)},null,2),l("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M62.4041 9.82153C45.1709 9.82153 31.2021 23.8917 31.2021 41.2501C31.2021 58.6085 45.1709 72.6787 62.4041 72.6787C79.6373 72.6787 93.606 58.6085 93.606 41.2501C93.606 23.8917 79.6373 9.82153 62.4041 9.82153ZM62.4041 11.7858C78.5335 11.7858 91.6559 25.0035 91.6559 41.2501C91.6559 57.4967 78.5335 70.7144 62.4041 70.7144C46.2746 70.7144 33.1523 57.4967 33.1523 41.2501C33.1523 25.0035 46.2746 11.7858 62.4041 11.7858Z",class:d(e.secondaryFillColor)},null,2),l("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M62.4041 19.6428C45.1709 19.6428 31.2021 23.8916 31.2021 41.25C31.2021 58.6084 45.1709 66.7857 62.4041 66.7857C79.6373 66.7857 93.606 58.6084 93.606 41.25C93.606 23.8916 79.6373 19.6428 62.4041 19.6428ZM62.4041 21.6071C82.6346 21.6071 91.6559 27.665 91.6559 41.25C91.6559 56.0096 80.7216 64.8214 62.4041 64.8214C44.0866 64.8214 33.1523 56.0096 33.1523 41.25C33.1523 27.665 42.1735 21.6071 62.4041 21.6071Z",class:d(e.secondaryFillColor)},null,2),l("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M101.406 70.7144H23.4014C10.478 70.7144 0 81.2685 0 94.2858V110H124.808V94.2858C124.808 81.2685 114.33 70.7144 101.406 70.7144ZM101.406 72.6786C113.234 72.6786 122.858 82.3724 122.858 94.2858V108.036H1.95012V94.2858C1.95012 82.3724 11.574 72.6786 23.4014 72.6786H101.406Z",class:d(e.secondaryFillColor)},null,2),l("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M33.152 33.3928H29.2518C27.0969 33.3928 25.3516 35.1509 25.3516 37.3214V45.1785C25.3516 47.3491 27.0969 49.1071 29.2518 49.1071H33.152V33.3928ZM31.2019 35.3571V47.1428H29.2518C28.1773 47.1428 27.3017 46.2609 27.3017 45.1785V37.3214C27.3017 36.2391 28.1773 35.3571 29.2518 35.3571H31.2019Z",class:d(e.secondaryFillColor)},null,2),l("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M95.556 33.3928H91.6558V49.1071H95.556C97.7109 49.1071 99.4562 47.3491 99.4562 45.1785V37.3214C99.4562 35.1509 97.7109 33.3928 95.556 33.3928ZM95.556 35.3571C96.6305 35.3571 97.5061 36.2391 97.5061 37.3214V45.1785C97.5061 46.2609 96.6305 47.1428 95.556 47.1428H93.6059V35.3571H95.556Z",class:d(e.secondaryFillColor)},null,2),l("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M94.581 15.7144C94.0447 15.7144 93.606 16.1563 93.606 16.6965V34.3751C93.606 34.9152 94.0447 35.3572 94.581 35.3572C95.1173 35.3572 95.5561 34.9152 95.5561 34.3751V16.6965C95.5561 16.1563 95.1173 15.7144 94.581 15.7144Z",class:d(e.secondaryFillColor)},null,2),l("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M38.0273 41.2499C37.4891 41.2499 37.0522 40.8099 37.0522 40.2678C37.0522 33.3142 44.1409 25.5356 53.6283 25.5356C54.1665 25.5356 54.6033 25.9756 54.6033 26.5178C54.6033 27.0599 54.1665 27.4999 53.6283 27.4999C45.2564 27.4999 39.0024 34.2414 39.0024 40.2678C39.0024 40.8099 38.5655 41.2499 38.0273 41.2499Z",class:d(e.primaryFillColor)},null,2),l("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M97.5059 110H99.456V72.6785H97.5059V110Z",class:d(e.secondaryFillColor)},null,2),l("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M25.3516 110H27.3017V72.6785H25.3516V110Z",class:d(e.secondaryFillColor)},null,2)]),C]))}};export{s as _}; diff --git a/public/build/assets/BackupSetting-Wus27-ev.js b/public/build/assets/BackupSetting-02LSsKOl.js similarity index 98% rename from public/build/assets/BackupSetting-Wus27-ev.js rename to public/build/assets/BackupSetting-02LSsKOl.js index 450e3ad4..2a7d2afb 100644 --- a/public/build/assets/BackupSetting-Wus27-ev.js +++ b/public/build/assets/BackupSetting-02LSsKOl.js @@ -1 +1 @@ -import{a4 as W,s as q,a1 as j,u as x,f as y,H as U,F as E,v as O,k as w,g as P,h as F,j as Y,r,o as G,m as L,w as n,b as D,p as $,t as S,l as c,a as s,q as Z,J as R,K as ee,a7 as te,c as ae,N as se}from"./main-B9dpPbRR.js";import{u as A}from"./disk-4FKXCHfJ.js";const H=(I=!1)=>{const m=I?window.pinia.defineStore:W,{global:_}=window.i18n;return m({id:"backup",state:()=>({backups:[],currentBackupData:{option:"full",selected_disk:null}}),actions:{fetchBackups(f){return new Promise((o,a)=>{q.get("/api/v1/backups",{params:f}).then(e=>{this.backups=e.data.data,o(e)}).catch(e=>{j(e),a(e)})})},createBackup(f){return new Promise((o,a)=>{q.post("/api/v1/backups",f).then(e=>{x().showNotification({type:"success",message:_.t("settings.backup.created_message")}),o(e)}).catch(e=>{j(e),a(e)})})},removeBackup(f){return new Promise((o,a)=>{q.delete(`/api/v1/backups/${f.disk}`,{params:f}).then(e=>{x().showNotification({type:"success",message:_.t("settings.backup.deleted_message")}),o(e)}).catch(e=>{j(e),a(e)})})}}})()},oe={class:"flex justify-between w-full"},ne={class:"p-6"},le={class:"z-0 flex justify-end p-4 border-t border-gray-200 border-solid"},ce={__name:"BackupModal",setup(I){y(null),y(!1);let m=y(!1),_=y(!1);const f=U(["full","only-db","only-files"]),o=H(),a=E(),e=A(),{t:p}=O.useI18n(),k=w(()=>a.active&&a.componentName==="BackupModal"),M=w(()=>e.disks.map(l=>({...l,name:l.name+" — ["+l.driver+"]"}))),V=w(()=>({currentBackupData:{option:{required:P.withMessage(p("validation.required"),F)},selected_disk:{required:P.withMessage(p("validation.required"),F)}}})),b=Y(V,w(()=>o));async function N(){if(b.value.currentBackupData.$touch(),b.value.currentBackupData.$invalid)return!0;let l={option:o.currentBackupData.option,file_disk_id:o.currentBackupData.selected_disk.id};try{m.value=!0,(await o.createBackup(l)).data&&(m.value=!1,a.refreshData&&a.refreshData(),a.closeModal())}catch{m.value=!1}}async function z(){_.value=!0;let l=await e.fetchDisks({limit:"all"});o.currentBackupData.selected_disk=l.data.data[0],_.value=!1}function C(){a.closeModal(),setTimeout(()=>{b.value.$reset(),o.$reset()})}return(l,g)=>{const t=r("BaseIcon"),i=r("BaseMultiselect"),d=r("BaseInputGroup"),u=r("BaseInputGrid"),h=r("BaseButton"),T=r("BaseModal");return G(),L(T,{show:k.value,onClose:C,onOpen:z},{header:n(()=>[D("div",oe,[$(S(c(a).title)+" ",1),s(t,{name:"XIcon",class:"w-6 h-6 text-gray-500 cursor-pointer",onClick:C})])]),default:n(()=>[D("form",{onSubmit:Z(N,["prevent"])},[D("div",ne,[s(u,{layout:"one-column"},{default:n(()=>[s(d,{label:l.$t("settings.backup.select_backup_type"),error:c(b).currentBackupData.option.$error&&c(b).currentBackupData.option.$errors[0].$message,horizontal:"",required:"",class:"py-2"},{default:n(()=>[s(i,{modelValue:c(o).currentBackupData.option,"onUpdate:modelValue":g[0]||(g[0]=B=>c(o).currentBackupData.option=B),options:f,"can-deselect":!1,placeholder:l.$t("settings.backup.select_backup_type"),searchable:""},null,8,["modelValue","options","placeholder"])]),_:1},8,["label","error"]),s(d,{label:l.$t("settings.disk.select_disk"),error:c(b).currentBackupData.selected_disk.$error&&c(b).currentBackupData.selected_disk.$errors[0].$message,horizontal:"",required:"",class:"py-2"},{default:n(()=>[s(i,{modelValue:c(o).currentBackupData.selected_disk,"onUpdate:modelValue":g[1]||(g[1]=B=>c(o).currentBackupData.selected_disk=B),"content-loading":c(_),options:M.value,searchable:!0,"allow-empty":!1,label:"name","value-prop":"id",placeholder:l.$t("settings.disk.select_disk"),"track-by":"name",object:""},null,8,["modelValue","content-loading","options","placeholder"])]),_:1},8,["label","error"])]),_:1})]),D("div",le,[s(h,{class:"mr-3",variant:"primary-outline",type:"button",onClick:C},{default:n(()=>[$(S(l.$t("general.cancel")),1)]),_:1}),s(h,{loading:c(m),disabled:c(m),variant:"primary",type:"submit"},{left:n(B=>[c(m)?ee("",!0):(G(),L(t,{key:0,name:"SaveIcon",class:R(B.class)},null,8,["class"]))]),default:n(()=>[$(" "+S(l.$t("general.create")),1)]),_:1},8,["loading","disabled"])])],32)]),_:1},8,["show"])}}},re={class:"grid my-14 md:grid-cols-3"},ie={class:"inline-block"},pe={__name:"BackupSetting",setup(I){const m=te(),_=H(),f=E(),o=A(),{t:a}=O.useI18n(),e=U({selected_disk:{driver:"local"}}),p=y("");let k=y(!0);const M=w(()=>[{key:"path",label:a("settings.backup.path"),thClass:"extra",tdClass:"font-medium text-gray-900"},{key:"created_at",label:a("settings.backup.created_at"),tdClass:"font-medium text-gray-900"},{key:"size",label:a("settings.backup.size"),tdClass:"font-medium text-gray-900"},{key:"actions",label:"",tdClass:"text-right text-sm font-medium",sortable:!1}]),V=w(()=>o.disks.map(t=>({...t,name:t.name+" — ["+t.driver+"]"})));z();function b(t){m.openDialog({title:a("general.are_you_sure"),message:a("settings.backup.backup_confirm_delete"),yesLabel:a("general.ok"),noLabel:a("general.cancel"),variant:"danger",hideNoButton:!1,size:"lg"}).then(async i=>{if(i){let d={disk:e.selected_disk.driver,file_disk_id:e.selected_disk.id,path:t.path},u=await _.removeBackup(d);if(u.data.success||u.data.backup)return p.value&&p.value.refresh(),!0}})}function N(){setTimeout(()=>{p.value.refresh()},100)}async function z(){k.value=!0;let t=await o.fetchDisks({limit:"all"});t.data.error,e.selected_disk=t.data.data.find(i=>i.set_as_default==0),k.value=!1}async function C({page:t,filter:i,sort:d}){let u={disk:e.selected_disk.driver,filed_disk_id:e.selected_disk.id};k.value=!0;let h=await _.fetchBackups(u);return k.value=!1,{data:h.data.backups,pagination:{totalPages:1,currentPage:1}}}async function l(){f.openModal({title:a("settings.backup.create_backup"),componentName:"BackupModal",refreshData:p.value&&p.value.refresh,size:"sm"})}async function g(t){k.value=!0,window.axios({method:"GET",url:"/api/v1/download-backup",responseType:"blob",params:{disk:e.selected_disk.driver,file_disk_id:e.selected_disk.id,path:t.path}}).then(i=>{const d=window.URL.createObjectURL(new Blob([i.data])),u=document.createElement("a");u.href=d,u.setAttribute("download",t.path.split("/")[1]),document.body.appendChild(u),u.click(),k.value=!1}).catch(i=>{k.value=!1})}return(t,i)=>{const d=r("BaseIcon"),u=r("BaseButton"),h=r("BaseMultiselect"),T=r("BaseInputGroup"),B=r("BaseDropdownItem"),J=r("BaseDropdown"),K=r("BaseTable"),X=r("BaseSettingCard");return G(),ae(se,null,[s(ce),s(X,{title:t.$t("settings.backup.title",1),description:t.$t("settings.backup.description")},{action:n(()=>[s(u,{variant:"primary-outline",onClick:l},{left:n(v=>[s(d,{class:R(v.class),name:"PlusIcon"},null,8,["class"])]),default:n(()=>[$(" "+S(t.$t("settings.backup.new_backup")),1)]),_:1})]),default:n(()=>[D("div",re,[s(T,{label:t.$t("settings.disk.select_disk"),"content-loading":c(k)},{default:n(()=>[s(h,{modelValue:e.selected_disk,"onUpdate:modelValue":i[0]||(i[0]=v=>e.selected_disk=v),"content-loading":c(k),options:V.value,"track-by":"name",placeholder:t.$t("settings.disk.select_disk"),label:"name",searchable:!0,object:"",class:"w-full","value-prop":"id",onSelect:N},null,8,["modelValue","content-loading","options","placeholder"])]),_:1},8,["label","content-loading"])]),s(K,{ref_key:"table",ref:p,class:"mt-10","show-filter":!1,data:C,columns:M.value},{"cell-actions":n(({row:v})=>[s(J,null,{activator:n(()=>[D("div",ie,[s(d,{name:"DotsHorizontalIcon",class:"text-gray-500"})])]),default:n(()=>[s(B,{onClick:Q=>g(v.data)},{default:n(()=>[s(d,{name:"CloudDownloadIcon",class:"mr-3 text-gray-600"}),$(" "+S(t.$t("general.download")),1)]),_:2},1032,["onClick"]),s(B,{onClick:Q=>b(v.data)},{default:n(()=>[s(d,{name:"TrashIcon",class:"mr-3 text-gray-600"}),$(" "+S(t.$t("general.delete")),1)]),_:2},1032,["onClick"])]),_:2},1024)]),_:1},8,["columns"])]),_:1},8,["title","description"])],64)}}};export{pe as default}; +import{a4 as W,s as q,a1 as j,u as x,f as y,H as U,F as E,v as O,k as w,g as P,h as F,j as Y,r,o as G,m as L,w as n,b as D,p as $,t as S,l as c,a as s,q as Z,J as R,K as ee,a7 as te,c as ae,N as se}from"./main-pPEsZPea.js";import{u as A}from"./disk-unBeTGDg.js";const H=(I=!1)=>{const m=I?window.pinia.defineStore:W,{global:_}=window.i18n;return m({id:"backup",state:()=>({backups:[],currentBackupData:{option:"full",selected_disk:null}}),actions:{fetchBackups(f){return new Promise((o,a)=>{q.get("/api/v1/backups",{params:f}).then(e=>{this.backups=e.data.data,o(e)}).catch(e=>{j(e),a(e)})})},createBackup(f){return new Promise((o,a)=>{q.post("/api/v1/backups",f).then(e=>{x().showNotification({type:"success",message:_.t("settings.backup.created_message")}),o(e)}).catch(e=>{j(e),a(e)})})},removeBackup(f){return new Promise((o,a)=>{q.delete(`/api/v1/backups/${f.disk}`,{params:f}).then(e=>{x().showNotification({type:"success",message:_.t("settings.backup.deleted_message")}),o(e)}).catch(e=>{j(e),a(e)})})}}})()},oe={class:"flex justify-between w-full"},ne={class:"p-6"},le={class:"z-0 flex justify-end p-4 border-t border-gray-200 border-solid"},ce={__name:"BackupModal",setup(I){y(null),y(!1);let m=y(!1),_=y(!1);const f=U(["full","only-db","only-files"]),o=H(),a=E(),e=A(),{t:p}=O.useI18n(),k=w(()=>a.active&&a.componentName==="BackupModal"),M=w(()=>e.disks.map(l=>({...l,name:l.name+" — ["+l.driver+"]"}))),V=w(()=>({currentBackupData:{option:{required:P.withMessage(p("validation.required"),F)},selected_disk:{required:P.withMessage(p("validation.required"),F)}}})),b=Y(V,w(()=>o));async function N(){if(b.value.currentBackupData.$touch(),b.value.currentBackupData.$invalid)return!0;let l={option:o.currentBackupData.option,file_disk_id:o.currentBackupData.selected_disk.id};try{m.value=!0,(await o.createBackup(l)).data&&(m.value=!1,a.refreshData&&a.refreshData(),a.closeModal())}catch{m.value=!1}}async function z(){_.value=!0;let l=await e.fetchDisks({limit:"all"});o.currentBackupData.selected_disk=l.data.data[0],_.value=!1}function C(){a.closeModal(),setTimeout(()=>{b.value.$reset(),o.$reset()})}return(l,g)=>{const t=r("BaseIcon"),i=r("BaseMultiselect"),d=r("BaseInputGroup"),u=r("BaseInputGrid"),h=r("BaseButton"),T=r("BaseModal");return G(),L(T,{show:k.value,onClose:C,onOpen:z},{header:n(()=>[D("div",oe,[$(S(c(a).title)+" ",1),s(t,{name:"XIcon",class:"w-6 h-6 text-gray-500 cursor-pointer",onClick:C})])]),default:n(()=>[D("form",{onSubmit:Z(N,["prevent"])},[D("div",ne,[s(u,{layout:"one-column"},{default:n(()=>[s(d,{label:l.$t("settings.backup.select_backup_type"),error:c(b).currentBackupData.option.$error&&c(b).currentBackupData.option.$errors[0].$message,horizontal:"",required:"",class:"py-2"},{default:n(()=>[s(i,{modelValue:c(o).currentBackupData.option,"onUpdate:modelValue":g[0]||(g[0]=B=>c(o).currentBackupData.option=B),options:f,"can-deselect":!1,placeholder:l.$t("settings.backup.select_backup_type"),searchable:""},null,8,["modelValue","options","placeholder"])]),_:1},8,["label","error"]),s(d,{label:l.$t("settings.disk.select_disk"),error:c(b).currentBackupData.selected_disk.$error&&c(b).currentBackupData.selected_disk.$errors[0].$message,horizontal:"",required:"",class:"py-2"},{default:n(()=>[s(i,{modelValue:c(o).currentBackupData.selected_disk,"onUpdate:modelValue":g[1]||(g[1]=B=>c(o).currentBackupData.selected_disk=B),"content-loading":c(_),options:M.value,searchable:!0,"allow-empty":!1,label:"name","value-prop":"id",placeholder:l.$t("settings.disk.select_disk"),"track-by":"name",object:""},null,8,["modelValue","content-loading","options","placeholder"])]),_:1},8,["label","error"])]),_:1})]),D("div",le,[s(h,{class:"mr-3",variant:"primary-outline",type:"button",onClick:C},{default:n(()=>[$(S(l.$t("general.cancel")),1)]),_:1}),s(h,{loading:c(m),disabled:c(m),variant:"primary",type:"submit"},{left:n(B=>[c(m)?ee("",!0):(G(),L(t,{key:0,name:"SaveIcon",class:R(B.class)},null,8,["class"]))]),default:n(()=>[$(" "+S(l.$t("general.create")),1)]),_:1},8,["loading","disabled"])])],32)]),_:1},8,["show"])}}},re={class:"grid my-14 md:grid-cols-3"},ie={class:"inline-block"},pe={__name:"BackupSetting",setup(I){const m=te(),_=H(),f=E(),o=A(),{t:a}=O.useI18n(),e=U({selected_disk:{driver:"local"}}),p=y("");let k=y(!0);const M=w(()=>[{key:"path",label:a("settings.backup.path"),thClass:"extra",tdClass:"font-medium text-gray-900"},{key:"created_at",label:a("settings.backup.created_at"),tdClass:"font-medium text-gray-900"},{key:"size",label:a("settings.backup.size"),tdClass:"font-medium text-gray-900"},{key:"actions",label:"",tdClass:"text-right text-sm font-medium",sortable:!1}]),V=w(()=>o.disks.map(t=>({...t,name:t.name+" — ["+t.driver+"]"})));z();function b(t){m.openDialog({title:a("general.are_you_sure"),message:a("settings.backup.backup_confirm_delete"),yesLabel:a("general.ok"),noLabel:a("general.cancel"),variant:"danger",hideNoButton:!1,size:"lg"}).then(async i=>{if(i){let d={disk:e.selected_disk.driver,file_disk_id:e.selected_disk.id,path:t.path},u=await _.removeBackup(d);if(u.data.success||u.data.backup)return p.value&&p.value.refresh(),!0}})}function N(){setTimeout(()=>{p.value.refresh()},100)}async function z(){k.value=!0;let t=await o.fetchDisks({limit:"all"});t.data.error,e.selected_disk=t.data.data.find(i=>i.set_as_default==0),k.value=!1}async function C({page:t,filter:i,sort:d}){let u={disk:e.selected_disk.driver,filed_disk_id:e.selected_disk.id};k.value=!0;let h=await _.fetchBackups(u);return k.value=!1,{data:h.data.backups,pagination:{totalPages:1,currentPage:1}}}async function l(){f.openModal({title:a("settings.backup.create_backup"),componentName:"BackupModal",refreshData:p.value&&p.value.refresh,size:"sm"})}async function g(t){k.value=!0,window.axios({method:"GET",url:"/api/v1/download-backup",responseType:"blob",params:{disk:e.selected_disk.driver,file_disk_id:e.selected_disk.id,path:t.path}}).then(i=>{const d=window.URL.createObjectURL(new Blob([i.data])),u=document.createElement("a");u.href=d,u.setAttribute("download",t.path.split("/")[1]),document.body.appendChild(u),u.click(),k.value=!1}).catch(i=>{k.value=!1})}return(t,i)=>{const d=r("BaseIcon"),u=r("BaseButton"),h=r("BaseMultiselect"),T=r("BaseInputGroup"),B=r("BaseDropdownItem"),J=r("BaseDropdown"),K=r("BaseTable"),X=r("BaseSettingCard");return G(),ae(se,null,[s(ce),s(X,{title:t.$t("settings.backup.title",1),description:t.$t("settings.backup.description")},{action:n(()=>[s(u,{variant:"primary-outline",onClick:l},{left:n(v=>[s(d,{class:R(v.class),name:"PlusIcon"},null,8,["class"])]),default:n(()=>[$(" "+S(t.$t("settings.backup.new_backup")),1)]),_:1})]),default:n(()=>[D("div",re,[s(T,{label:t.$t("settings.disk.select_disk"),"content-loading":c(k)},{default:n(()=>[s(h,{modelValue:e.selected_disk,"onUpdate:modelValue":i[0]||(i[0]=v=>e.selected_disk=v),"content-loading":c(k),options:V.value,"track-by":"name",placeholder:t.$t("settings.disk.select_disk"),label:"name",searchable:!0,object:"",class:"w-full","value-prop":"id",onSelect:N},null,8,["modelValue","content-loading","options","placeholder"])]),_:1},8,["label","content-loading"])]),s(K,{ref_key:"table",ref:p,class:"mt-10","show-filter":!1,data:C,columns:M.value},{"cell-actions":n(({row:v})=>[s(J,null,{activator:n(()=>[D("div",ie,[s(d,{name:"DotsHorizontalIcon",class:"text-gray-500"})])]),default:n(()=>[s(B,{onClick:Q=>g(v.data)},{default:n(()=>[s(d,{name:"CloudDownloadIcon",class:"mr-3 text-gray-600"}),$(" "+S(t.$t("general.download")),1)]),_:2},1032,["onClick"]),s(B,{onClick:Q=>b(v.data)},{default:n(()=>[s(d,{name:"TrashIcon",class:"mr-3 text-gray-600"}),$(" "+S(t.$t("general.delete")),1)]),_:2},1032,["onClick"])]),_:2},1024)]),_:1},8,["columns"])]),_:1},8,["title","description"])],64)}}};export{pe as default}; diff --git a/public/build/assets/BaseEditor-wQmc-HFA.js b/public/build/assets/BaseEditor-V0dpTnSD.js similarity index 65% rename from public/build/assets/BaseEditor-wQmc-HFA.js rename to public/build/assets/BaseEditor-V0dpTnSD.js index 701683c4..b8756afb 100644 --- a/public/build/assets/BaseEditor-wQmc-HFA.js +++ b/public/build/assets/BaseEditor-V0dpTnSD.js @@ -1,15 +1,15 @@ -import{aZ as yo,f as bo,bg as ko,an as xo,bf as So,l as Mo,aA as Hi,bh as Sn,bi as wo,bj as Co,Y as To,H as Oo,bk as vo,bl as Ao,Z as le,o as Q,c as ie,b as w,$ as No,az as Ft,z as Eo,aa as Do,r as z,m as Io,w as Mn,a as D,J as E,K as Ro}from"./main-B9dpPbRR.js";function J(r){this.content=r}J.prototype={constructor:J,find:function(r){for(var e=0;e>1}};J.from=function(r){if(r instanceof J)return r;var e=[];if(r)for(var t in r)e.push(t,r[t]);return new J(e)};function _i(r,e,t){for(let n=0;;n++){if(n==r.childCount||n==e.childCount)return r.childCount==e.childCount?null:t;let i=r.child(n),s=e.child(n);if(i==s){t+=i.nodeSize;continue}if(!i.sameMarkup(s))return t;if(i.isText&&i.text!=s.text){for(let o=0;i.text[o]==s.text[o];o++)t++;return t}if(i.content.size||s.content.size){let o=_i(i.content,s.content,t+1);if(o!=null)return o}t+=i.nodeSize}}function ji(r,e,t,n){for(let i=r.childCount,s=e.childCount;;){if(i==0||s==0)return i==s?null:{a:t,b:n};let o=r.child(--i),l=e.child(--s),a=o.nodeSize;if(o==l){t-=a,n-=a;continue}if(!o.sameMarkup(l))return{a:t,b:n};if(o.isText&&o.text!=l.text){let c=0,d=Math.min(o.text.length,l.text.length);for(;ce&&n(a,i+l,s||null,o)!==!1&&a.content.size){let d=l+1;a.nodesBetween(Math.max(0,e-d),Math.min(a.content.size,t-d),n,i+d)}l=c}}descendants(e){this.nodesBetween(0,this.size,e)}textBetween(e,t,n,i){let s="",o=!0;return this.nodesBetween(e,t,(l,a)=>{let c=l.isText?l.text.slice(Math.max(e,a)-a,t-a):l.isLeaf?i?typeof i=="function"?i(l):i:l.type.spec.leafText?l.type.spec.leafText(l):"":"";l.isBlock&&(l.isLeaf&&c||l.isTextblock)&&n&&(o?o=!1:s+=n),s+=c},0),s}append(e){if(!e.size)return this;if(!this.size)return e;let t=this.lastChild,n=e.firstChild,i=this.content.slice(),s=0;for(t.isText&&t.sameMarkup(n)&&(i[i.length-1]=t.withText(t.text+n.text),s=1);se)for(let s=0,o=0;oe&&((ot)&&(l.isText?l=l.cut(Math.max(0,e-o),Math.min(l.text.length,t-o)):l=l.cut(Math.max(0,e-o-1),Math.min(l.content.size,t-o-1))),n.push(l),i+=l.nodeSize),o=a}return new b(n,i)}cutByIndex(e,t){return e==t?b.empty:e==0&&t==this.content.length?this:new b(this.content.slice(e,t))}replaceChild(e,t){let n=this.content[e];if(n==t)return this;let i=this.content.slice(),s=this.size+t.nodeSize-n.nodeSize;return i[e]=t,new b(i,s)}addToStart(e){return new b([e].concat(this.content),this.size+e.nodeSize)}addToEnd(e){return new b(this.content.concat(e),this.size+e.nodeSize)}eq(e){if(this.content.length!=e.content.length)return!1;for(let t=0;tthis.size||e<0)throw new RangeError(`Position ${e} outside of fragment (${this})`);for(let n=0,i=0;;n++){let s=this.child(n),o=i+s.nodeSize;if(o>=e)return o==e||t>0?Vt(n+1,o):Vt(n,i);i=o}}toString(){return"<"+this.toStringInner()+">"}toStringInner(){return this.content.join(", ")}toJSON(){return this.content.length?this.content.map(e=>e.toJSON()):null}static fromJSON(e,t){if(!t)return b.empty;if(!Array.isArray(t))throw new RangeError("Invalid input for Fragment.fromJSON");return new b(t.map(e.nodeFromJSON))}static fromArray(e){if(!e.length)return b.empty;let t,n=0;for(let i=0;ithis.type.rank&&(t||(t=e.slice(0,i)),t.push(this),n=!0),t&&t.push(s)}}return t||(t=e.slice()),n||t.push(this),t}removeFromSet(e){for(let t=0;tn.type.rank-i.type.rank),t}};I.none=[];class qt extends Error{}class k{constructor(e,t,n){this.content=e,this.openStart=t,this.openEnd=n}get size(){return this.content.size-this.openStart-this.openEnd}insertAt(e,t){let n=Wi(this.content,e+this.openStart,t);return n&&new k(n,this.openStart,this.openEnd)}removeBetween(e,t){return new k(Ji(this.content,e+this.openStart,t+this.openStart),this.openStart,this.openEnd)}eq(e){return this.content.eq(e.content)&&this.openStart==e.openStart&&this.openEnd==e.openEnd}toString(){return this.content+"("+this.openStart+","+this.openEnd+")"}toJSON(){if(!this.content.size)return null;let e={content:this.content.toJSON()};return this.openStart>0&&(e.openStart=this.openStart),this.openEnd>0&&(e.openEnd=this.openEnd),e}static fromJSON(e,t){if(!t)return k.empty;let n=t.openStart||0,i=t.openEnd||0;if(typeof n!="number"||typeof i!="number")throw new RangeError("Invalid input for Slice.fromJSON");return new k(b.fromJSON(e,t.content),n,i)}static maxOpen(e,t=!0){let n=0,i=0;for(let s=e.firstChild;s&&!s.isLeaf&&(t||!s.type.spec.isolating);s=s.firstChild)n++;for(let s=e.lastChild;s&&!s.isLeaf&&(t||!s.type.spec.isolating);s=s.lastChild)i++;return new k(e,n,i)}}k.empty=new k(b.empty,0,0);function Ji(r,e,t){let{index:n,offset:i}=r.findIndex(e),s=r.maybeChild(n),{index:o,offset:l}=r.findIndex(t);if(i==e||s.isText){if(l!=t&&!r.child(o).isText)throw new RangeError("Removing non-flat range");return r.cut(0,e).append(r.cut(t))}if(n!=o)throw new RangeError("Removing non-flat range");return r.replaceChild(n,s.copy(Ji(s.content,e-i-1,t-i-1)))}function Wi(r,e,t,n){let{index:i,offset:s}=r.findIndex(e),o=r.maybeChild(i);if(s==e||o.isText)return n&&!n.canReplace(i,i,t)?null:r.cut(0,e).append(t).append(r.cut(e));let l=Wi(o.content,e-s-1,t);return l&&r.replaceChild(i,o.copy(l))}function Po(r,e,t){if(t.openStart>r.depth)throw new qt("Inserted content deeper than insertion position");if(r.depth-t.openStart!=e.depth-t.openEnd)throw new qt("Inconsistent open depths");return Ki(r,e,t,0)}function Ki(r,e,t,n){let i=r.index(n),s=r.node(n);if(i==e.index(n)&&n=0&&r.isText&&r.sameMarkup(e[t])?e[t]=r.withText(e[t].text+r.text):e.push(r)}function wt(r,e,t,n){let i=(e||r).node(t),s=0,o=e?e.index(t):i.childCount;r&&(s=r.index(t),r.depth>t?s++:r.textOffset&&(qe(r.nodeAfter,n),s++));for(let l=s;li&&qn(r,e,i+1),o=n.depth>i&&qn(t,n,i+1),l=[];return wt(null,r,i,l),s&&o&&e.index(i)==t.index(i)?(qi(s,o),qe(Ue(s,Ui(r,e,t,n,i+1)),l)):(s&&qe(Ue(s,Ut(r,e,i+1)),l),wt(e,t,i,l),o&&qe(Ue(o,Ut(t,n,i+1)),l)),wt(n,null,i,l),new b(l)}function Ut(r,e,t){let n=[];if(wt(null,r,t,n),r.depth>t){let i=qn(r,e,t+1);qe(Ue(i,Ut(r,e,t+1)),n)}return wt(e,null,t,n),new b(n)}function Bo(r,e){let t=e.depth-r.openStart,i=e.node(t).copy(r.content);for(let s=t-1;s>=0;s--)i=e.node(s).copy(b.from(i));return{start:i.resolveNoCache(r.openStart+t),end:i.resolveNoCache(i.content.size-r.openEnd-t)}}class vt{constructor(e,t,n){this.pos=e,this.path=t,this.parentOffset=n,this.depth=t.length/3-1}resolveDepth(e){return e==null?this.depth:e<0?this.depth+e:e}get parent(){return this.node(this.depth)}get doc(){return this.node(0)}node(e){return this.path[this.resolveDepth(e)*3]}index(e){return this.path[this.resolveDepth(e)*3+1]}indexAfter(e){return e=this.resolveDepth(e),this.index(e)+(e==this.depth&&!this.textOffset?0:1)}start(e){return e=this.resolveDepth(e),e==0?0:this.path[e*3-1]+1}end(e){return e=this.resolveDepth(e),this.start(e)+this.node(e).content.size}before(e){if(e=this.resolveDepth(e),!e)throw new RangeError("There is no position before the top-level node");return e==this.depth+1?this.pos:this.path[e*3-1]}after(e){if(e=this.resolveDepth(e),!e)throw new RangeError("There is no position after the top-level node");return e==this.depth+1?this.pos:this.path[e*3-1]+this.path[e*3].nodeSize}get textOffset(){return this.pos-this.path[this.path.length-1]}get nodeAfter(){let e=this.parent,t=this.index(this.depth);if(t==e.childCount)return null;let n=this.pos-this.path[this.path.length-1],i=e.child(t);return n?e.child(t).cut(n):i}get nodeBefore(){let e=this.index(this.depth),t=this.pos-this.path[this.path.length-1];return t?this.parent.child(e).cut(0,t):e==0?null:this.parent.child(e-1)}posAtIndex(e,t){t=this.resolveDepth(t);let n=this.path[t*3],i=t==0?0:this.path[t*3-1]+1;for(let s=0;s0;t--)if(this.start(t)<=e&&this.end(t)>=e)return t;return 0}blockRange(e=this,t){if(e.pos=0;n--)if(e.pos<=this.end(n)&&(!t||t(this.node(n))))return new Gt(this,e,n);return null}sameParent(e){return this.pos-this.parentOffset==e.pos-e.parentOffset}max(e){return e.pos>this.pos?e:this}min(e){return e.pos=0&&t<=e.content.size))throw new RangeError("Position "+t+" out of range");let n=[],i=0,s=t;for(let o=e;;){let{index:l,offset:a}=o.content.findIndex(s),c=s-a;if(n.push(o,l,i+a),!c||(o=o.child(l),o.isText))break;s=c-1,i+=a+1}return new vt(t,n,s)}static resolveCached(e,t){for(let i=0;ie&&this.nodesBetween(e,t,s=>(n.isInSet(s.marks)&&(i=!0),!i)),i}get isBlock(){return this.type.isBlock}get isTextblock(){return this.type.isTextblock}get inlineContent(){return this.type.inlineContent}get isInline(){return this.type.isInline}get isText(){return this.type.isText}get isLeaf(){return this.type.isLeaf}get isAtom(){return this.type.isAtom}toString(){if(this.type.spec.toDebugString)return this.type.spec.toDebugString(this);let e=this.type.name;return this.content.size&&(e+="("+this.content.toStringInner()+")"),Gi(this.marks,e)}contentMatchAt(e){let t=this.type.contentMatch.matchFragment(this.content,0,e);if(!t)throw new Error("Called contentMatchAt on a node with invalid content");return t}canReplace(e,t,n=b.empty,i=0,s=n.childCount){let o=this.contentMatchAt(e).matchFragment(n,i,s),l=o&&o.matchFragment(this.content,t);if(!l||!l.validEnd)return!1;for(let a=i;at.type.name)}`);this.content.forEach(t=>t.check())}toJSON(){let e={type:this.type.name};for(let t in this.attrs){e.attrs=this.attrs;break}return this.content.size&&(e.content=this.content.toJSON()),this.marks.length&&(e.marks=this.marks.map(t=>t.toJSON())),e}static fromJSON(e,t){if(!t)throw new RangeError("Invalid input for Node.fromJSON");let n=null;if(t.marks){if(!Array.isArray(t.marks))throw new RangeError("Invalid mark data for Node.fromJSON");n=t.marks.map(e.markFromJSON)}if(t.type=="text"){if(typeof t.text!="string")throw new RangeError("Invalid text node in JSON");return e.text(t.text,n)}let i=b.fromJSON(e,t.content);return e.nodeType(t.type).create(t.attrs,i,n)}};Ge.prototype.text=void 0;class Yt extends Ge{constructor(e,t,n,i){if(super(e,t,null,i),!n)throw new RangeError("Empty text nodes are not allowed");this.text=n}toString(){return this.type.spec.toDebugString?this.type.spec.toDebugString(this):Gi(this.marks,JSON.stringify(this.text))}get textContent(){return this.text}textBetween(e,t){return this.text.slice(e,t)}get nodeSize(){return this.text.length}mark(e){return e==this.marks?this:new Yt(this.type,this.attrs,this.text,e)}withText(e){return e==this.text?this:new Yt(this.type,this.attrs,e,this.marks)}cut(e=0,t=this.text.length){return e==0&&t==this.text.length?this:this.withText(this.text.slice(e,t))}eq(e){return this.sameMarkup(e)&&this.text==e.text}toJSON(){let e=super.toJSON();return e.text=this.text,e}}function Gi(r,e){for(let t=r.length-1;t>=0;t--)e=r[t].type.name+"("+e+")";return e}class Ze{constructor(e){this.validEnd=e,this.next=[],this.wrapCache=[]}static parse(e,t){let n=new Fo(e,t);if(n.next==null)return Ze.empty;let i=Yi(n);n.next&&n.err("Unexpected trailing text");let s=Wo(Jo(i));return Ko(s,n),s}matchType(e){for(let t=0;tc.createAndFill()));for(let c=0;c=this.next.length)throw new RangeError(`There's no ${e}th edge in this content match`);return this.next[e]}toString(){let e=[];function t(n){e.push(n);for(let i=0;i{let s=i+(n.validEnd?"*":" ")+" ";for(let o=0;o"+e.indexOf(n.next[o].next);return s}).join(` -`)}}Ze.empty=new Ze(!0);class Fo{constructor(e,t){this.string=e,this.nodeTypes=t,this.inline=null,this.pos=0,this.tokens=e.split(/\s*(?=\b|\W|$)/),this.tokens[this.tokens.length-1]==""&&this.tokens.pop(),this.tokens[0]==""&&this.tokens.shift()}get next(){return this.tokens[this.pos]}eat(e){return this.next==e&&(this.pos++||!0)}err(e){throw new SyntaxError(e+" (in content expression '"+this.string+"')")}}function Yi(r){let e=[];do e.push(Vo(r));while(r.eat("|"));return e.length==1?e[0]:{type:"choice",exprs:e}}function Vo(r){let e=[];do e.push($o(r));while(r.next&&r.next!=")"&&r.next!="|");return e.length==1?e[0]:{type:"seq",exprs:e}}function $o(r){let e=jo(r);for(;;)if(r.eat("+"))e={type:"plus",expr:e};else if(r.eat("*"))e={type:"star",expr:e};else if(r.eat("?"))e={type:"opt",expr:e};else if(r.eat("{"))e=Ho(r,e);else break;return e}function Dr(r){/\D/.test(r.next)&&r.err("Expected number, got '"+r.next+"'");let e=Number(r.next);return r.pos++,e}function Ho(r,e){let t=Dr(r),n=t;return r.eat(",")&&(r.next!="}"?n=Dr(r):n=-1),r.eat("}")||r.err("Unclosed braced range"),{type:"range",min:t,max:n,expr:e}}function _o(r,e){let t=r.nodeTypes,n=t[e];if(n)return[n];let i=[];for(let s in t){let o=t[s];o.groups.indexOf(e)>-1&&i.push(o)}return i.length==0&&r.err("No node type or group '"+e+"' found"),i}function jo(r){if(r.eat("(")){let e=Yi(r);return r.eat(")")||r.err("Missing closing paren"),e}else if(/\W/.test(r.next))r.err("Unexpected token '"+r.next+"'");else{let e=_o(r,r.next).map(t=>(r.inline==null?r.inline=t.isInline:r.inline!=t.isInline&&r.err("Mixing inline and block content"),{type:"name",value:t}));return r.pos++,e.length==1?e[0]:{type:"choice",exprs:e}}}function Jo(r){let e=[[]];return i(s(r,0),t()),e;function t(){return e.push([])-1}function n(o,l,a){let c={term:a,to:l};return e[o].push(c),c}function i(o,l){o.forEach(a=>a.to=l)}function s(o,l){if(o.type=="choice")return o.exprs.reduce((a,c)=>a.concat(s(c,l)),[]);if(o.type=="seq")for(let a=0;;a++){let c=s(o.exprs[a],l);if(a==o.exprs.length-1)return c;i(c,l=t())}else if(o.type=="star"){let a=t();return n(l,a),i(s(o.expr,a),a),[n(a)]}else if(o.type=="plus"){let a=t();return i(s(o.expr,l),a),i(s(o.expr,a),a),[n(a)]}else{if(o.type=="opt")return[n(l)].concat(s(o.expr,l));if(o.type=="range"){let a=l;for(let c=0;c{r[o].forEach(({term:l,to:a})=>{if(!l)return;let c;for(let d=0;d{c||i.push([l,c=[]]),c.indexOf(d)==-1&&c.push(d)})})});let s=e[n.join(",")]=new Ze(n.indexOf(r.length-1)>-1);for(let o=0;o-1}allowsMarks(e){if(this.markSet==null)return!0;for(let t=0;tn[s]=new ts(s,t,o));let i=t.spec.topNode||"doc";if(!n[i])throw new RangeError("Schema is missing its top node type ('"+i+"')");if(!n.text)throw new RangeError("Every schema needs a 'text' type");for(let s in n.text.attrs)throw new RangeError("The text node type should not have attributes");return n}};class qo{constructor(e){this.hasDefault=Object.prototype.hasOwnProperty.call(e,"default"),this.default=e.default}get isRequired(){return!this.hasDefault}}class an{constructor(e,t,n,i){this.name=e,this.rank=t,this.schema=n,this.spec=i,this.attrs=es(i.attrs),this.excluded=null;let s=Zi(this.attrs);this.instance=s?new I(this,s):null}create(e=null){return!e&&this.instance?this.instance:new I(this,Qi(this.attrs,e))}static compile(e,t){let n=Object.create(null),i=0;return e.forEach((s,o)=>n[s]=new an(s,i++,t,o)),n}removeFromSet(e){for(var t=0;t-1}}class Uo{constructor(e){this.cached=Object.create(null);let t=this.spec={};for(let i in e)t[i]=e[i];t.nodes=J.from(e.nodes),t.marks=J.from(e.marks||{}),this.nodes=Rr.compile(this.spec.nodes,this),this.marks=an.compile(this.spec.marks,this);let n=Object.create(null);for(let i in this.nodes){if(i in this.marks)throw new RangeError(i+" can not be both a node and a mark");let s=this.nodes[i],o=s.spec.content||"",l=s.spec.marks;s.contentMatch=n[o]||(n[o]=Ze.parse(o,this.nodes)),s.inlineContent=s.contentMatch.inlineContent,s.markSet=l=="_"?null:l?Pr(this,l.split(" ")):l==""||!s.inlineContent?[]:null}for(let i in this.marks){let s=this.marks[i],o=s.spec.excludes;s.excluded=o==null?[s]:o==""?[]:Pr(this,o.split(" "))}this.nodeFromJSON=this.nodeFromJSON.bind(this),this.markFromJSON=this.markFromJSON.bind(this),this.topNodeType=this.nodes[this.spec.topNode||"doc"],this.cached.wrappings=Object.create(null)}node(e,t=null,n,i){if(typeof e=="string")e=this.nodeType(e);else if(e instanceof Rr){if(e.schema!=this)throw new RangeError("Node type from different schema used ("+e.name+")")}else throw new RangeError("Invalid node type: "+e);return e.createChecked(t,n,i)}text(e,t){let n=this.nodes.text;return new Yt(n,n.defaultAttrs,e,I.setFrom(t))}mark(e,t){return typeof e=="string"&&(e=this.marks[e]),e.create(t)}nodeFromJSON(e){return Ge.fromJSON(this,e)}markFromJSON(e){return I.fromJSON(this,e)}nodeType(e){let t=this.nodes[e];if(!t)throw new RangeError("Unknown node type: "+e);return t}}function Pr(r,e){let t=[];for(let n=0;n-1)&&t.push(o=a)}if(!o)throw new SyntaxError("Unknown mark type: '"+e[n]+"'")}return t}class ut{constructor(e,t){this.schema=e,this.rules=t,this.tags=[],this.styles=[],t.forEach(n=>{n.tag?this.tags.push(n):n.style&&this.styles.push(n)}),this.normalizeLists=!this.tags.some(n=>{if(!/^(ul|ol)\b/.test(n.tag)||!n.node)return!1;let i=e.nodes[n.node];return i.contentMatch.matchType(i)})}parse(e,t={}){let n=new Lr(this,t,!1);return n.addAll(e,t.from,t.to),n.finish()}parseSlice(e,t={}){let n=new Lr(this,t,!0);return n.addAll(e,t.from,t.to),k.maxOpen(n.finish())}matchTag(e,t,n){for(let i=n?this.tags.indexOf(n)+1:0;ie.length&&(l.charCodeAt(e.length)!=61||l.slice(e.length+1)!=t))){if(o.getAttrs){let a=o.getAttrs(t);if(a===!1)continue;o.attrs=a||void 0}return o}}}static schemaRules(e){let t=[];function n(i){let s=i.priority==null?50:i.priority,o=0;for(;o{n(o=zr(o)),o.mark||o.ignore||o.clearMark||(o.mark=i)})}for(let i in e.nodes){let s=e.nodes[i].spec.parseDOM;s&&s.forEach(o=>{n(o=zr(o)),o.node||o.ignore||o.mark||(o.node=i)})}return t}static fromSchema(e){return e.cached.domParser||(e.cached.domParser=new ut(e,ut.schemaRules(e)))}}const ns={address:!0,article:!0,aside:!0,blockquote:!0,canvas:!0,dd:!0,div:!0,dl:!0,fieldset:!0,figcaption:!0,figure:!0,footer:!0,form:!0,h1:!0,h2:!0,h3:!0,h4:!0,h5:!0,h6:!0,header:!0,hgroup:!0,hr:!0,li:!0,noscript:!0,ol:!0,output:!0,p:!0,pre:!0,section:!0,table:!0,tfoot:!0,ul:!0},Go={head:!0,noscript:!0,object:!0,script:!0,style:!0,title:!0},rs={ol:!0,ul:!0},Xt=1,Zt=2,Ct=4;function Br(r,e,t){return e!=null?(e?Xt:0)|(e==="full"?Zt:0):r&&r.whitespace=="pre"?Xt|Zt:t&~Ct}class $t{constructor(e,t,n,i,s,o,l){this.type=e,this.attrs=t,this.marks=n,this.pendingMarks=i,this.solid=s,this.options=l,this.content=[],this.activeMarks=I.none,this.stashMarks=[],this.match=o||(l&Ct?null:e.contentMatch)}findWrapping(e){if(!this.match){if(!this.type)return[];let t=this.type.contentMatch.fillBefore(b.from(e));if(t)this.match=this.type.contentMatch.matchFragment(t);else{let n=this.type.contentMatch,i;return(i=n.findWrapping(e.type))?(this.match=n,i):null}}return this.match.findWrapping(e.type)}finish(e){if(!(this.options&Xt)){let n=this.content[this.content.length-1],i;if(n&&n.isText&&(i=/[ \t\r\n\u000c]+$/.exec(n.text))){let s=n;n.text.length==i[0].length?this.content.pop():this.content[this.content.length-1]=s.withText(s.text.slice(0,s.text.length-i[0].length))}}let t=b.from(this.content);return!e&&this.match&&(t=t.append(this.match.fillBefore(b.empty,!0))),this.type?this.type.create(this.attrs,t,this.marks):t}popFromStashMark(e){for(let t=this.stashMarks.length-1;t>=0;t--)if(e.eq(this.stashMarks[t]))return this.stashMarks.splice(t,1)[0]}applyPending(e){for(let t=0,n=this.pendingMarks;tthis.addAll(e)),o&&this.sync(l),this.needsBlock=a}else this.withStyleRules(e,()=>{this.addElementByRule(e,s,s.consuming===!1?i:void 0)})}leafFallback(e){e.nodeName=="BR"&&this.top.type&&this.top.type.inlineContent&&this.addTextNode(e.ownerDocument.createTextNode(` -`))}ignoreFallback(e){e.nodeName=="BR"&&(!this.top.type||!this.top.type.inlineContent)&&this.findPlace(this.parser.schema.text("-"))}readStyles(e){let t=I.none,n=I.none;for(let i=0;i{o.clearMark(l)&&(n=l.addToSet(n))}):t=this.parser.schema.marks[o.mark].create(o.attrs).addToSet(t),o.consuming===!1)s=o;else break}return[t,n]}addElementByRule(e,t,n){let i,s,o;t.node?(s=this.parser.schema.nodes[t.node],s.isLeaf?this.insertNode(s.create(t.attrs))||this.leafFallback(e):i=this.enter(s,t.attrs||null,t.preserveWhitespace)):(o=this.parser.schema.marks[t.mark].create(t.attrs),this.addPendingMark(o));let l=this.top;if(s&&s.isLeaf)this.findInside(e);else if(n)this.addElement(e,n);else if(t.getContent)this.findInside(e),t.getContent(e,this.parser.schema).forEach(a=>this.insertNode(a));else{let a=e;typeof t.contentElement=="string"?a=e.querySelector(t.contentElement):typeof t.contentElement=="function"?a=t.contentElement(e):t.contentElement&&(a=t.contentElement),this.findAround(e,a,!0),this.addAll(a)}i&&this.sync(l)&&this.open--,o&&this.removePendingMark(o,l)}addAll(e,t,n){let i=t||0;for(let s=t?e.childNodes[t]:e.firstChild,o=n==null?null:e.childNodes[n];s!=o;s=s.nextSibling,++i)this.findAtPoint(e,i),this.addDOM(s);this.findAtPoint(e,i)}findPlace(e){let t,n;for(let i=this.open;i>=0;i--){let s=this.nodes[i],o=s.findWrapping(e);if(o&&(!t||t.length>o.length)&&(t=o,n=s,!o.length)||s.solid)break}if(!t)return!1;this.sync(n);for(let i=0;ithis.open){for(;t>this.open;t--)this.nodes[t-1].content.push(this.nodes[t].finish(e));this.nodes.length=this.open+1}}finish(){return this.open=0,this.closeExtra(this.isOpen),this.nodes[0].finish(this.isOpen||this.options.topOpen)}sync(e){for(let t=this.open;t>=0;t--)if(this.nodes[t]==e)return this.open=t,!0;return!1}get currentPos(){this.closeExtra();let e=0;for(let t=this.open;t>=0;t--){let n=this.nodes[t].content;for(let i=n.length-1;i>=0;i--)e+=n[i].nodeSize;t&&e++}return e}findAtPoint(e,t){if(this.find)for(let n=0;n-1)return e.split(/\s*\|\s*/).some(this.matchesContext,this);let t=e.split("/"),n=this.options.context,i=!this.isOpen&&(!n||n.parent.type==this.nodes[0].type),s=-(n?n.depth+1:0)+(i?0:1),o=(l,a)=>{for(;l>=0;l--){let c=t[l];if(c==""){if(l==t.length-1||l==0)continue;for(;a>=s;a--)if(o(l-1,a))return!0;return!1}else{let d=a>0||a==0&&i?this.nodes[a].type:n&&a>=s?n.node(a-s).type:null;if(!d||d.name!=c&&d.groups.indexOf(c)==-1)return!1;a--}}return!0};return o(t.length-1,this.open)}textblockFromContext(){let e=this.options.context;if(e)for(let t=e.depth;t>=0;t--){let n=e.node(t).contentMatchAt(e.indexAfter(t)).defaultType;if(n&&n.isTextblock&&n.defaultAttrs)return n}for(let t in this.parser.schema.nodes){let n=this.parser.schema.nodes[t];if(n.isTextblock&&n.defaultAttrs)return n}}addPendingMark(e){let t=el(e,this.top.pendingMarks);t&&this.top.stashMarks.push(t),this.top.pendingMarks=e.addToSet(this.top.pendingMarks)}removePendingMark(e,t){for(let n=this.open;n>=0;n--){let i=this.nodes[n];if(i.pendingMarks.lastIndexOf(e)>-1)i.pendingMarks=e.removeFromSet(i.pendingMarks);else{i.activeMarks=e.removeFromSet(i.activeMarks);let o=i.popFromStashMark(e);o&&i.type&&i.type.allowsMarkType(o.type)&&(i.activeMarks=o.addToSet(i.activeMarks))}if(i==t)break}}}function Yo(r){for(let e=r.firstChild,t=null;e;e=e.nextSibling){let n=e.nodeType==1?e.nodeName.toLowerCase():null;n&&rs.hasOwnProperty(n)&&t?(t.appendChild(e),e=t):n=="li"?t=e:n&&(t=null)}}function Xo(r,e){return(r.matches||r.msMatchesSelector||r.webkitMatchesSelector||r.mozMatchesSelector).call(r,e)}function Zo(r){let e=/\s*([\w-]+)\s*:\s*([^;]+)/g,t,n=[];for(;t=e.exec(r);)n.push(t[1],t[2].trim());return n}function zr(r){let e={};for(let t in r)e[t]=r[t];return e}function Qo(r,e){let t=e.schema.nodes;for(let n in t){let i=t[n];if(!i.allowsMarkType(r))continue;let s=[],o=l=>{s.push(l);for(let a=0;a{if(s.length||o.marks.length){let l=0,a=0;for(;l=0;i--){let s=this.serializeMark(e.marks[i],e.isInline,t);s&&((s.contentDOM||s.dom).appendChild(n),n=s.dom)}return n}serializeMark(e,t,n={}){let i=this.marks[e.type.name];return i&&ke.renderSpec(On(n),i(e,t))}static renderSpec(e,t,n=null){if(typeof t=="string")return{dom:e.createTextNode(t)};if(t.nodeType!=null)return{dom:t};if(t.dom&&t.dom.nodeType!=null)return t;let i=t[0],s=i.indexOf(" ");s>0&&(n=i.slice(0,s),i=i.slice(s+1));let o,l=n?e.createElementNS(n,i):e.createElement(i),a=t[1],c=1;if(a&&typeof a=="object"&&a.nodeType==null&&!Array.isArray(a)){c=2;for(let d in a)if(a[d]!=null){let u=d.indexOf(" ");u>0?l.setAttributeNS(d.slice(0,u),d.slice(u+1),a[d]):l.setAttribute(d,a[d])}}for(let d=c;dc)throw new RangeError("Content hole must be the only child of its parent node");return{dom:l,contentDOM:l}}else{let{dom:f,contentDOM:h}=ke.renderSpec(e,u,n);if(l.appendChild(f),h){if(o)throw new RangeError("Multiple content holes");o=h}}}return{dom:l,contentDOM:o}}static fromSchema(e){return e.cached.domSerializer||(e.cached.domSerializer=new ke(this.nodesFromSchema(e),this.marksFromSchema(e)))}static nodesFromSchema(e){let t=Fr(e.nodes);return t.text||(t.text=n=>n.text),t}static marksFromSchema(e){return Fr(e.marks)}}function Fr(r){let e={};for(let t in r){let n=r[t].spec.toDOM;n&&(e[t]=n)}return e}function On(r){return r.document||window.document}const is=65535,ss=Math.pow(2,16);function tl(r,e){return r+e*ss}function Vr(r){return r&is}function nl(r){return(r-(r&is))/ss}const ls=1,as=2,jt=4,cs=8;class Gn{constructor(e,t,n){this.pos=e,this.delInfo=t,this.recover=n}get deleted(){return(this.delInfo&cs)>0}get deletedBefore(){return(this.delInfo&(ls|jt))>0}get deletedAfter(){return(this.delInfo&(as|jt))>0}get deletedAcross(){return(this.delInfo&jt)>0}}class oe{constructor(e,t=!1){if(this.ranges=e,this.inverted=t,!e.length&&oe.empty)return oe.empty}recover(e){let t=0,n=Vr(e);if(!this.inverted)for(let i=0;ie)break;let c=this.ranges[l+s],d=this.ranges[l+o],u=a+c;if(e<=u){let f=c?e==a?-1:e==u?1:t:t,h=a+i+(f<0?0:d);if(n)return h;let p=e==(t<0?a:u)?null:tl(l/3,e-a),m=e==a?as:e==u?ls:jt;return(t<0?e!=a:e!=u)&&(m|=cs),new Gn(h,m,p)}i+=d-c}return n?e+i:new Gn(e+i,0,null)}touches(e,t){let n=0,i=Vr(t),s=this.inverted?2:1,o=this.inverted?1:2;for(let l=0;le)break;let c=this.ranges[l+s],d=a+c;if(e<=d&&l==i*3)return!0;n+=this.ranges[l+o]-c}return!1}forEach(e){let t=this.inverted?2:1,n=this.inverted?1:2;for(let i=0,s=0;i=0;t--){let i=e.getMirror(t);this.appendMap(e.maps[t].invert(),i!=null&&i>t?n-i-1:void 0)}}invert(){let e=new lt;return e.appendMappingInverted(this),e}map(e,t=1){if(this.mirror)return this._map(e,t,!0);for(let n=this.from;ns&&a!o.isAtom||!l.type.allowsMarkType(this.mark.type)?o:o.mark(this.mark.addToSet(o.marks)),i),t.openStart,t.openEnd);return F.fromReplace(e,this.from,this.to,s)}invert(){return new xe(this.from,this.to,this.mark)}map(e){let t=e.mapResult(this.from,1),n=e.mapResult(this.to,-1);return t.deleted&&n.deleted||t.pos>=n.pos?null:new De(t.pos,n.pos,this.mark)}merge(e){return e instanceof De&&e.mark.eq(this.mark)&&this.from<=e.to&&this.to>=e.from?new De(Math.min(this.from,e.from),Math.max(this.to,e.to),this.mark):null}toJSON(){return{stepType:"addMark",mark:this.mark.toJSON(),from:this.from,to:this.to}}static fromJSON(e,t){if(typeof t.from!="number"||typeof t.to!="number")throw new RangeError("Invalid input for AddMarkStep.fromJSON");return new De(t.from,t.to,e.markFromJSON(t.mark))}}X.jsonID("addMark",De);class xe extends X{constructor(e,t,n){super(),this.from=e,this.to=t,this.mark=n}apply(e){let t=e.slice(this.from,this.to),n=new k(fr(t.content,i=>i.mark(this.mark.removeFromSet(i.marks)),e),t.openStart,t.openEnd);return F.fromReplace(e,this.from,this.to,n)}invert(){return new De(this.from,this.to,this.mark)}map(e){let t=e.mapResult(this.from,1),n=e.mapResult(this.to,-1);return t.deleted&&n.deleted||t.pos>=n.pos?null:new xe(t.pos,n.pos,this.mark)}merge(e){return e instanceof xe&&e.mark.eq(this.mark)&&this.from<=e.to&&this.to>=e.from?new xe(Math.min(this.from,e.from),Math.max(this.to,e.to),this.mark):null}toJSON(){return{stepType:"removeMark",mark:this.mark.toJSON(),from:this.from,to:this.to}}static fromJSON(e,t){if(typeof t.from!="number"||typeof t.to!="number")throw new RangeError("Invalid input for RemoveMarkStep.fromJSON");return new xe(t.from,t.to,e.markFromJSON(t.mark))}}X.jsonID("removeMark",xe);class Ie extends X{constructor(e,t){super(),this.pos=e,this.mark=t}apply(e){let t=e.nodeAt(this.pos);if(!t)return F.fail("No node at mark step's position");let n=t.type.create(t.attrs,null,this.mark.addToSet(t.marks));return F.fromReplace(e,this.pos,this.pos+1,new k(b.from(n),0,t.isLeaf?0:1))}invert(e){let t=e.nodeAt(this.pos);if(t){let n=this.mark.addToSet(t.marks);if(n.length==t.marks.length){for(let i=0;in.pos?null:new H(t.pos,n.pos,i,s,this.slice,this.insert,this.structure)}toJSON(){let e={stepType:"replaceAround",from:this.from,to:this.to,gapFrom:this.gapFrom,gapTo:this.gapTo,insert:this.insert};return this.slice.size&&(e.slice=this.slice.toJSON()),this.structure&&(e.structure=!0),e}static fromJSON(e,t){if(typeof t.from!="number"||typeof t.to!="number"||typeof t.gapFrom!="number"||typeof t.gapTo!="number"||typeof t.insert!="number")throw new RangeError("Invalid input for ReplaceAroundStep.fromJSON");return new H(t.from,t.to,t.gapFrom,t.gapTo,k.fromJSON(e,t.slice),t.insert,!!t.structure)}}X.jsonID("replaceAround",H);function Yn(r,e,t){let n=r.resolve(e),i=t-e,s=n.depth;for(;i>0&&s>0&&n.indexAfter(s)==n.node(s).childCount;)s--,i--;if(i>0){let o=n.node(s).maybeChild(n.indexAfter(s));for(;i>0;){if(!o||o.isLeaf)return!0;o=o.firstChild,i--}}return!1}function rl(r,e,t,n){let i=[],s=[],o,l;r.doc.nodesBetween(e,t,(a,c,d)=>{if(!a.isInline)return;let u=a.marks;if(!n.isInSet(u)&&d.type.allowsMarkType(n.type)){let f=Math.max(c,e),h=Math.min(c+a.nodeSize,t),p=n.addToSet(u);for(let m=0;mr.step(a)),s.forEach(a=>r.step(a))}function il(r,e,t,n){let i=[],s=0;r.doc.nodesBetween(e,t,(o,l)=>{if(!o.isInline)return;s++;let a=null;if(n instanceof an){let c=o.marks,d;for(;d=n.isInSet(c);)(a||(a=[])).push(d),c=d.removeFromSet(c)}else n?n.isInSet(o.marks)&&(a=[n]):a=o.marks;if(a&&a.length){let c=Math.min(l+o.nodeSize,t);for(let d=0;dr.step(new xe(o.from,o.to,o.style)))}function sl(r,e,t,n=t.contentMatch){let i=r.doc.nodeAt(e),s=[],o=e+1;for(let l=0;l=0;l--)r.step(s[l])}function ol(r,e,t){return(e==0||r.canReplace(e,r.childCount))&&(t==r.childCount||r.canReplace(0,t))}function bt(r){let t=r.parent.content.cutByIndex(r.startIndex,r.endIndex);for(let n=r.depth;;--n){let i=r.$from.node(n),s=r.$from.index(n),o=r.$to.indexAfter(n);if(nt;p--)m||n.index(p)>0?(m=!0,d=b.from(n.node(p).copy(d)),u++):a--;let f=b.empty,h=0;for(let p=s,m=!1;p>t;p--)m||i.after(p+1)=0;o--){if(n.size){let l=t[o].type.contentMatch.matchFragment(n);if(!l||!l.validEnd)throw new RangeError("Wrapper type given to Transform.wrap does not form valid content of its parent wrapper")}n=b.from(t[o].type.create(t[o].attrs,n))}let i=e.start,s=e.end;r.step(new H(i,s,i,s,new k(n,0,0),t.length,!0))}function ul(r,e,t,n,i){if(!n.isTextblock)throw new RangeError("Type given to setBlockType should be a textblock");let s=r.steps.length;r.doc.nodesBetween(e,t,(o,l)=>{if(o.isTextblock&&!o.hasMarkup(n,i)&&fl(r.doc,r.mapping.slice(s).map(l),n)){r.clearIncompatible(r.mapping.slice(s).map(l,1),n);let a=r.mapping.slice(s),c=a.map(l,1),d=a.map(l+o.nodeSize,1);return r.step(new H(c,d,c+1,d-1,new k(b.from(n.create(i,null,o.marks)),0,0),1,!0)),!1}})}function fl(r,e,t){let n=r.resolve(e),i=n.index();return n.parent.canReplaceWith(i,i+1,t)}function hl(r,e,t,n,i){let s=r.doc.nodeAt(e);if(!s)throw new RangeError("No node at given position");t||(t=s.type);let o=t.create(n,null,i||s.marks);if(s.isLeaf)return r.replaceWith(e,e+s.nodeSize,o);if(!t.validContent(s.content))throw new RangeError("Invalid content for node type "+t.name);r.step(new H(e,e+s.nodeSize,e+1,e+s.nodeSize-1,new k(b.from(o),0,0),1,!0))}function at(r,e,t=1,n){let i=r.resolve(e),s=i.depth-t,o=n&&n[n.length-1]||i.parent;if(s<0||i.parent.type.spec.isolating||!i.parent.canReplace(i.index(),i.parent.childCount)||!o.type.validContent(i.parent.content.cutByIndex(i.index(),i.parent.childCount)))return!1;for(let c=i.depth-1,d=t-2;c>s;c--,d--){let u=i.node(c),f=i.index(c);if(u.type.spec.isolating)return!1;let h=u.content.cutByIndex(f,u.childCount),p=n&&n[d+1];p&&(h=h.replaceChild(0,p.type.create(p.attrs)));let m=n&&n[d]||u;if(!u.canReplace(f+1,u.childCount)||!m.type.validContent(h))return!1}let l=i.indexAfter(s),a=n&&n[0];return i.node(s).canReplaceWith(l,l,a?a.type:i.node(s+1).type)}function pl(r,e,t=1,n){let i=r.doc.resolve(e),s=b.empty,o=b.empty;for(let l=i.depth,a=i.depth-t,c=t-1;l>a;l--,c--){s=b.from(i.node(l).copy(s));let d=n&&n[c];o=b.from(d?d.type.create(d.attrs,o):i.node(l).copy(o))}r.step(new W(e,e,new k(s.append(o),t,t),!0))}function Ve(r,e){let t=r.resolve(e),n=t.index();return ds(t.nodeBefore,t.nodeAfter)&&t.parent.canReplace(n,n+1)}function ds(r,e){return!!(r&&e&&!r.isLeaf&&r.canAppend(e))}function cn(r,e,t=-1){let n=r.resolve(e);for(let i=n.depth;;i--){let s,o,l=n.index(i);if(i==n.depth?(s=n.nodeBefore,o=n.nodeAfter):t>0?(s=n.node(i+1),l++,o=n.node(i).maybeChild(l)):(s=n.node(i).maybeChild(l-1),o=n.node(i+1)),s&&!s.isTextblock&&ds(s,o)&&n.node(i).canReplace(l,l+1))return e;if(i==0)break;e=t<0?n.before(i):n.after(i)}}function ml(r,e,t){let n=new W(e-t,e+t,k.empty,!0);r.step(n)}function gl(r,e,t){let n=r.resolve(e);if(n.parent.canReplaceWith(n.index(),n.index(),t))return e;if(n.parentOffset==0)for(let i=n.depth-1;i>=0;i--){let s=n.index(i);if(n.node(i).canReplaceWith(s,s,t))return n.before(i+1);if(s>0)return null}if(n.parentOffset==n.parent.content.size)for(let i=n.depth-1;i>=0;i--){let s=n.indexAfter(i);if(n.node(i).canReplaceWith(s,s,t))return n.after(i+1);if(s=0;o--){let l=o==n.depth?0:n.pos<=(n.start(o+1)+n.end(o+1))/2?-1:1,a=n.index(o)+(l>0?1:0),c=n.node(o),d=!1;if(s==1)d=c.canReplace(a,a,i);else{let u=c.contentMatchAt(a).findWrapping(i.firstChild.type);d=u&&c.canReplaceWith(a,a,u[0])}if(d)return l==0?n.pos:l<0?n.before(o+1):n.after(o+1)}return null}function pr(r,e,t=e,n=k.empty){if(e==t&&!n.size)return null;let i=r.resolve(e),s=r.resolve(t);return fs(i,s,n)?new W(e,t,n):new yl(i,s,n).fit()}function fs(r,e,t){return!t.openStart&&!t.openEnd&&r.start()==e.start()&&r.parent.canReplace(r.index(),e.index(),t.content)}class yl{constructor(e,t,n){this.$from=e,this.$to=t,this.unplaced=n,this.frontier=[],this.placed=b.empty;for(let i=0;i<=e.depth;i++){let s=e.node(i);this.frontier.push({type:s.type,match:s.contentMatchAt(e.indexAfter(i))})}for(let i=e.depth;i>0;i--)this.placed=b.from(e.node(i).copy(this.placed))}get depth(){return this.frontier.length-1}fit(){for(;this.unplaced.size;){let c=this.findFittable();c?this.placeNodes(c):this.openMore()||this.dropNode()}let e=this.mustMoveInline(),t=this.placed.size-this.depth-this.$from.depth,n=this.$from,i=this.close(e<0?this.$to:n.doc.resolve(e));if(!i)return null;let s=this.placed,o=n.depth,l=i.depth;for(;o&&l&&s.childCount==1;)s=s.firstChild.content,o--,l--;let a=new k(s,o,l);return e>-1?new H(n.pos,e,this.$to.pos,this.$to.end(),a,t):a.size||n.pos!=this.$to.pos?new W(n.pos,i.pos,a):null}findFittable(){let e=this.unplaced.openStart;for(let t=this.unplaced.content,n=0,i=this.unplaced.openEnd;n1&&(i=0),s.type.spec.isolating&&i<=n){e=n;break}t=s.content}for(let t=1;t<=2;t++)for(let n=t==1?e:this.unplaced.openStart;n>=0;n--){let i,s=null;n?(s=An(this.unplaced.content,n-1).firstChild,i=s.content):i=this.unplaced.content;let o=i.firstChild;for(let l=this.depth;l>=0;l--){let{type:a,match:c}=this.frontier[l],d,u=null;if(t==1&&(o?c.matchType(o.type)||(u=c.fillBefore(b.from(o),!1)):s&&a.compatibleContent(s.type)))return{sliceDepth:n,frontierDepth:l,parent:s,inject:u};if(t==2&&o&&(d=c.findWrapping(o.type)))return{sliceDepth:n,frontierDepth:l,parent:s,wrap:d};if(s&&c.matchType(s.type))break}}}openMore(){let{content:e,openStart:t,openEnd:n}=this.unplaced,i=An(e,t);return!i.childCount||i.firstChild.isLeaf?!1:(this.unplaced=new k(e,t+1,Math.max(n,i.size+t>=e.size-n?t+1:0)),!0)}dropNode(){let{content:e,openStart:t,openEnd:n}=this.unplaced,i=An(e,t);if(i.childCount<=1&&t>0){let s=e.size-t<=t+i.size;this.unplaced=new k(xt(e,t-1,1),t-1,s?t-1:n)}else this.unplaced=new k(xt(e,t,1),t,n)}placeNodes({sliceDepth:e,frontierDepth:t,parent:n,inject:i,wrap:s}){for(;this.depth>t;)this.closeFrontierNode();if(s)for(let m=0;m1||a==0||m.content.size)&&(u=g,d.push(hs(m.mark(f.allowedMarks(m.marks)),c==1?a:0,c==l.childCount?h:-1)))}let p=c==l.childCount;p||(h=-1),this.placed=St(this.placed,t,b.from(d)),this.frontier[t].match=u,p&&h<0&&n&&n.type==this.frontier[this.depth].type&&this.frontier.length>1&&this.closeFrontierNode();for(let m=0,g=l;m1&&i==this.$to.end(--n);)++i;return i}findCloseLevel(e){e:for(let t=Math.min(this.depth,e.depth);t>=0;t--){let{match:n,type:i}=this.frontier[t],s=t=0;l--){let{match:a,type:c}=this.frontier[l],d=Nn(e,l,c,a,!0);if(!d||d.childCount)continue e}return{depth:t,fit:o,move:s?e.doc.resolve(e.after(t+1)):e}}}}close(e){let t=this.findCloseLevel(e);if(!t)return null;for(;this.depth>t.depth;)this.closeFrontierNode();t.fit.childCount&&(this.placed=St(this.placed,t.depth,t.fit)),e=t.move;for(let n=t.depth+1;n<=e.depth;n++){let i=e.node(n),s=i.type.contentMatch.fillBefore(i.content,!0,e.index(n));this.openFrontierNode(i.type,i.attrs,s)}return e}openFrontierNode(e,t=null,n){let i=this.frontier[this.depth];i.match=i.match.matchType(e),this.placed=St(this.placed,this.depth,b.from(e.create(t,n))),this.frontier.push({type:e,match:e.contentMatch})}closeFrontierNode(){let t=this.frontier.pop().match.fillBefore(b.empty,!0);t.childCount&&(this.placed=St(this.placed,this.frontier.length,t))}}function xt(r,e,t){return e==0?r.cutByIndex(t,r.childCount):r.replaceChild(0,r.firstChild.copy(xt(r.firstChild.content,e-1,t)))}function St(r,e,t){return e==0?r.append(t):r.replaceChild(r.childCount-1,r.lastChild.copy(St(r.lastChild.content,e-1,t)))}function An(r,e){for(let t=0;t1&&(n=n.replaceChild(0,hs(n.firstChild,e-1,n.childCount==1?t-1:0))),e>0&&(n=r.type.contentMatch.fillBefore(n).append(n),t<=0&&(n=n.append(r.type.contentMatch.matchFragment(n).fillBefore(b.empty,!0)))),r.copy(n)}function Nn(r,e,t,n,i){let s=r.node(e),o=i?r.indexAfter(e):r.index(e);if(o==s.childCount&&!t.compatibleContent(s.type))return null;let l=n.fillBefore(s.content,!0,o);return l&&!bl(t,s.content,o)?l:null}function bl(r,e,t){for(let n=t;n0;f--,h--){let p=i.node(f).type.spec;if(p.defining||p.definingAsContext||p.isolating)break;o.indexOf(f)>-1?l=f:i.before(f)==h&&o.splice(1,0,-f)}let a=o.indexOf(l),c=[],d=n.openStart;for(let f=n.content,h=0;;h++){let p=f.firstChild;if(c.push(p),h==n.openStart)break;f=p.content}for(let f=d-1;f>=0;f--){let h=c[f],p=kl(h.type);if(p&&!h.sameMarkup(i.node(Math.abs(l)-1)))d=f;else if(p||!h.type.isTextblock)break}for(let f=n.openStart;f>=0;f--){let h=(f+d+1)%(n.openStart+1),p=c[h];if(p)for(let m=0;m=0&&(r.replace(e,t,n),!(r.steps.length>u));f--){let h=o[f];h<0||(e=i.before(h),t=s.after(h))}}function ps(r,e,t,n,i){if(en){let s=i.contentMatchAt(0),o=s.fillBefore(r).append(r);r=o.append(s.matchFragment(o).fillBefore(b.empty,!0))}return r}function Sl(r,e,t,n){if(!n.isInline&&e==t&&r.doc.resolve(e).parent.content.size){let i=gl(r.doc,e,n.type);i!=null&&(e=t=i)}r.replaceRange(e,t,new k(b.from(n),0,0))}function Ml(r,e,t){let n=r.doc.resolve(e),i=r.doc.resolve(t),s=ms(n,i);for(let o=0;o0&&(a||n.node(l-1).canReplace(n.index(l-1),i.indexAfter(l-1))))return r.delete(n.before(l),i.after(l))}for(let o=1;o<=n.depth&&o<=i.depth;o++)if(e-n.start(o)==n.depth-o&&t>n.end(o)&&i.end(o)-t!=i.depth-o)return r.delete(n.before(o),t);r.delete(e,t)}function ms(r,e){let t=[],n=Math.min(r.depth,e.depth);for(let i=n;i>=0;i--){let s=r.start(i);if(se.pos+(e.depth-i)||r.node(i).type.spec.isolating||e.node(i).type.spec.isolating)break;(s==e.start(i)||i==r.depth&&i==e.depth&&r.parent.inlineContent&&e.parent.inlineContent&&i&&e.start(i-1)==s-1)&&t.push(i)}return t}class ct extends X{constructor(e,t,n){super(),this.pos=e,this.attr=t,this.value=n}apply(e){let t=e.nodeAt(this.pos);if(!t)return F.fail("No node at attribute step's position");let n=Object.create(null);for(let s in t.attrs)n[s]=t.attrs[s];n[this.attr]=this.value;let i=t.type.create(n,null,t.marks);return F.fromReplace(e,this.pos,this.pos+1,new k(b.from(i),0,t.isLeaf?0:1))}getMap(){return oe.empty}invert(e){return new ct(this.pos,this.attr,e.nodeAt(this.pos).attrs[this.attr])}map(e){let t=e.mapResult(this.pos,1);return t.deletedAfter?null:new ct(t.pos,this.attr,this.value)}toJSON(){return{stepType:"attr",pos:this.pos,attr:this.attr,value:this.value}}static fromJSON(e,t){if(typeof t.pos!="number"||typeof t.attr!="string")throw new RangeError("Invalid input for AttrStep.fromJSON");return new ct(t.pos,t.attr,t.value)}}X.jsonID("attr",ct);class At extends X{constructor(e,t){super(),this.attr=e,this.value=t}apply(e){let t=Object.create(null);for(let i in e.attrs)t[i]=e.attrs[i];t[this.attr]=this.value;let n=e.type.create(t,e.content,e.marks);return F.ok(n)}getMap(){return oe.empty}invert(e){return new At(this.attr,e.attrs[this.attr])}map(e){return this}toJSON(){return{stepType:"docAttr",attr:this.attr,value:this.value}}static fromJSON(e,t){if(typeof t.attr!="string")throw new RangeError("Invalid input for DocAttrStep.fromJSON");return new At(t.attr,t.value)}}X.jsonID("docAttr",At);let ht=class extends Error{};ht=function r(e){let t=Error.call(this,e);return t.__proto__=r.prototype,t};ht.prototype=Object.create(Error.prototype);ht.prototype.constructor=ht;ht.prototype.name="TransformError";class wl{constructor(e){this.doc=e,this.steps=[],this.docs=[],this.mapping=new lt}get before(){return this.docs.length?this.docs[0]:this.doc}step(e){let t=this.maybeStep(e);if(t.failed)throw new ht(t.failed);return this}maybeStep(e){let t=e.apply(this.doc);return t.failed||this.addStep(e,t.doc),t}get docChanged(){return this.steps.length>0}addStep(e,t){this.docs.push(this.doc),this.steps.push(e),this.mapping.appendMap(e.getMap()),this.doc=t}replace(e,t=e,n=k.empty){let i=pr(this.doc,e,t,n);return i&&this.step(i),this}replaceWith(e,t,n){return this.replace(e,t,new k(b.from(n),0,0))}delete(e,t){return this.replace(e,t,k.empty)}insert(e,t){return this.replaceWith(e,e,t)}replaceRange(e,t,n){return xl(this,e,t,n),this}replaceRangeWith(e,t,n){return Sl(this,e,t,n),this}deleteRange(e,t){return Ml(this,e,t),this}lift(e,t){return ll(this,e,t),this}join(e,t=1){return ml(this,e,t),this}wrap(e,t){return dl(this,e,t),this}setBlockType(e,t=e,n,i=null){return ul(this,e,t,n,i),this}setNodeMarkup(e,t,n=null,i){return hl(this,e,t,n,i),this}setNodeAttribute(e,t,n){return this.step(new ct(e,t,n)),this}setDocAttribute(e,t){return this.step(new At(e,t)),this}addNodeMark(e,t){return this.step(new Ie(e,t)),this}removeNodeMark(e,t){if(!(t instanceof I)){let n=this.doc.nodeAt(e);if(!n)throw new RangeError("No node at position "+e);if(t=t.isInSet(n.marks),!t)return this}return this.step(new ft(e,t)),this}split(e,t=1,n){return pl(this,e,t,n),this}addMark(e,t,n){return rl(this,e,t,n),this}removeMark(e,t,n){return il(this,e,t,n),this}clearIncompatible(e,t,n){return sl(this,e,t,n),this}}const En=Object.create(null);class v{constructor(e,t,n){this.$anchor=e,this.$head=t,this.ranges=n||[new Cl(e.min(t),e.max(t))]}get anchor(){return this.$anchor.pos}get head(){return this.$head.pos}get from(){return this.$from.pos}get to(){return this.$to.pos}get $from(){return this.ranges[0].$from}get $to(){return this.ranges[0].$to}get empty(){let e=this.ranges;for(let t=0;t=0;s--){let o=t<0?rt(e.node(0),e.node(s),e.before(s+1),e.index(s),t,n):rt(e.node(0),e.node(s),e.after(s+1),e.index(s)+1,t,n);if(o)return o}return null}static near(e,t=1){return this.findFrom(e,t)||this.findFrom(e,-t)||new pe(e.node(0))}static atStart(e){return rt(e,e,0,0,1)||new pe(e)}static atEnd(e){return rt(e,e,e.content.size,e.childCount,-1)||new pe(e)}static fromJSON(e,t){if(!t||!t.type)throw new RangeError("Invalid input for Selection.fromJSON");let n=En[t.type];if(!n)throw new RangeError(`No selection type ${t.type} defined`);return n.fromJSON(e,t)}static jsonID(e,t){if(e in En)throw new RangeError("Duplicate use of selection JSON ID "+e);return En[e]=t,t.prototype.jsonID=e,t}getBookmark(){return C.between(this.$anchor,this.$head).getBookmark()}}v.prototype.visible=!0;class Cl{constructor(e,t){this.$from=e,this.$to=t}}let Hr=!1;function _r(r){!Hr&&!r.parent.inlineContent&&(Hr=!0,console.warn("TextSelection endpoint not pointing into a node with inline content ("+r.parent.type.name+")"))}class C extends v{constructor(e,t=e){_r(e),_r(t),super(e,t)}get $cursor(){return this.$anchor.pos==this.$head.pos?this.$head:null}map(e,t){let n=e.resolve(t.map(this.head));if(!n.parent.inlineContent)return v.near(n);let i=e.resolve(t.map(this.anchor));return new C(i.parent.inlineContent?i:n,n)}replace(e,t=k.empty){if(super.replace(e,t),t==k.empty){let n=this.$from.marksAcross(this.$to);n&&e.ensureMarks(n)}}eq(e){return e instanceof C&&e.anchor==this.anchor&&e.head==this.head}getBookmark(){return new dn(this.anchor,this.head)}toJSON(){return{type:"text",anchor:this.anchor,head:this.head}}static fromJSON(e,t){if(typeof t.anchor!="number"||typeof t.head!="number")throw new RangeError("Invalid input for TextSelection.fromJSON");return new C(e.resolve(t.anchor),e.resolve(t.head))}static create(e,t,n=t){let i=e.resolve(t);return new this(i,n==t?i:e.resolve(n))}static between(e,t,n){let i=e.pos-t.pos;if((!n||i)&&(n=i>=0?1:-1),!t.parent.inlineContent){let s=v.findFrom(t,n,!0)||v.findFrom(t,-n,!0);if(s)t=s.$head;else return v.near(t,n)}return e.parent.inlineContent||(i==0?e=t:(e=(v.findFrom(e,-n,!0)||v.findFrom(e,n,!0)).$anchor,e.pos0?0:1);i>0?o=0;o+=i){let l=e.child(o);if(l.isAtom){if(!s&&M.isSelectable(l))return M.create(r,t-(i<0?l.nodeSize:0))}else{let a=rt(r,l,t+i,i<0?l.childCount:0,i,s);if(a)return a}t+=l.nodeSize*i}return null}function jr(r,e,t){let n=r.steps.length-1;if(n{o==null&&(o=d)}),r.setSelection(v.near(r.doc.resolve(o),t))}const Jr=1,Ht=2,Wr=4;class Ol extends wl{constructor(e){super(e.doc),this.curSelectionFor=0,this.updated=0,this.meta=Object.create(null),this.time=Date.now(),this.curSelection=e.selection,this.storedMarks=e.storedMarks}get selection(){return this.curSelectionFor0}setStoredMarks(e){return this.storedMarks=e,this.updated|=Ht,this}ensureMarks(e){return I.sameSet(this.storedMarks||this.selection.$from.marks(),e)||this.setStoredMarks(e),this}addStoredMark(e){return this.ensureMarks(e.addToSet(this.storedMarks||this.selection.$head.marks()))}removeStoredMark(e){return this.ensureMarks(e.removeFromSet(this.storedMarks||this.selection.$head.marks()))}get storedMarksSet(){return(this.updated&Ht)>0}addStep(e,t){super.addStep(e,t),this.updated=this.updated&~Ht,this.storedMarks=null}setTime(e){return this.time=e,this}replaceSelection(e){return this.selection.replace(this,e),this}replaceSelectionWith(e,t=!0){let n=this.selection;return t&&(e=e.mark(this.storedMarks||(n.empty?n.$from.marks():n.$from.marksAcross(n.$to)||I.none))),n.replaceWith(this,e),this}deleteSelection(){return this.selection.replace(this),this}insertText(e,t,n){let i=this.doc.type.schema;if(t==null)return e?this.replaceSelectionWith(i.text(e),!0):this.deleteSelection();{if(n==null&&(n=t),n=n??t,!e)return this.deleteRange(t,n);let s=this.storedMarks;if(!s){let o=this.doc.resolve(t);s=n==t?o.marks():o.marksAcross(this.doc.resolve(n))}return this.replaceRangeWith(t,n,i.text(e,s)),this.selection.empty||this.setSelection(v.near(this.selection.$to)),this}}setMeta(e,t){return this.meta[typeof e=="string"?e:e.key]=t,this}getMeta(e){return this.meta[typeof e=="string"?e:e.key]}get isGeneric(){for(let e in this.meta)return!1;return!0}scrollIntoView(){return this.updated|=Wr,this}get scrolledIntoView(){return(this.updated&Wr)>0}}function Kr(r,e){return!e||!r?r:r.bind(e)}class Mt{constructor(e,t,n){this.name=e,this.init=Kr(t.init,n),this.apply=Kr(t.apply,n)}}const vl=[new Mt("doc",{init(r){return r.doc||r.schema.topNodeType.createAndFill()},apply(r){return r.doc}}),new Mt("selection",{init(r,e){return r.selection||v.atStart(e.doc)},apply(r){return r.selection}}),new Mt("storedMarks",{init(r){return r.storedMarks||null},apply(r,e,t,n){return n.selection.$cursor?r.storedMarks:null}}),new Mt("scrollToSelection",{init(){return 0},apply(r,e){return r.scrolledIntoView?e+1:e}})];class Dn{constructor(e,t){this.schema=e,this.plugins=[],this.pluginsByKey=Object.create(null),this.fields=vl.slice(),t&&t.forEach(n=>{if(this.pluginsByKey[n.key])throw new RangeError("Adding different instances of a keyed plugin ("+n.key+")");this.plugins.push(n),this.pluginsByKey[n.key]=n,n.spec.state&&this.fields.push(new Mt(n.key,n.spec.state,n))})}}class st{constructor(e){this.config=e}get schema(){return this.config.schema}get plugins(){return this.config.plugins}apply(e){return this.applyTransaction(e).state}filterTransaction(e,t=-1){for(let n=0;nn.toJSON())),e&&typeof e=="object")for(let n in e){if(n=="doc"||n=="selection")throw new RangeError("The JSON fields `doc` and `selection` are reserved");let i=e[n],s=i.spec.state;s&&s.toJSON&&(t[n]=s.toJSON.call(i,this[i.key]))}return t}static fromJSON(e,t,n){if(!t)throw new RangeError("Invalid input for EditorState.fromJSON");if(!e.schema)throw new RangeError("Required config field 'schema' missing");let i=new Dn(e.schema,e.plugins),s=new st(i);return i.fields.forEach(o=>{if(o.name=="doc")s.doc=Ge.fromJSON(e.schema,t.doc);else if(o.name=="selection")s.selection=v.fromJSON(s.doc,t.selection);else if(o.name=="storedMarks")t.storedMarks&&(s.storedMarks=t.storedMarks.map(e.schema.markFromJSON));else{if(n)for(let l in n){let a=n[l],c=a.spec.state;if(a.key==o.name&&c&&c.fromJSON&&Object.prototype.hasOwnProperty.call(t,l)){s[o.name]=c.fromJSON.call(a,e,t[l],s);return}}s[o.name]=o.init(e,s)}}),s}}function gs(r,e,t){for(let n in r){let i=r[n];i instanceof Function?i=i.bind(e):n=="handleDOMEvents"&&(i=gs(i,e,{})),t[n]=i}return t}class ue{constructor(e){this.spec=e,this.props={},e.props&&gs(e.props,this,this.props),this.key=e.key?e.key.key:ys("plugin")}getState(e){return e[this.key]}}const In=Object.create(null);function ys(r){return r in In?r+"$"+ ++In[r]:(In[r]=0,r+"$")}class $e{constructor(e="key"){this.key=ys(e)}get(e){return e.config.pluginsByKey[this.key]}getState(e){return e[this.key]}}const Z=function(r){for(var e=0;;e++)if(r=r.previousSibling,!r)return e},Nt=function(r){let e=r.assignedSlot||r.parentNode;return e&&e.nodeType==11?e.host:e};let qr=null;const Te=function(r,e,t){let n=qr||(qr=document.createRange());return n.setEnd(r,t??r.nodeValue.length),n.setStart(r,e||0),n},Qe=function(r,e,t,n){return t&&(Ur(r,e,t,n,-1)||Ur(r,e,t,n,1))},Al=/^(img|br|input|textarea|hr)$/i;function Ur(r,e,t,n,i){for(;;){if(r==t&&e==n)return!0;if(e==(i<0?0:be(r))){let s=r.parentNode;if(!s||s.nodeType!=1||gr(r)||Al.test(r.nodeName)||r.contentEditable=="false")return!1;e=Z(r)+(i<0?0:1),r=s}else if(r.nodeType==1){if(r=r.childNodes[e+(i<0?-1:0)],r.contentEditable=="false")return!1;e=i<0?be(r):0}else return!1}}function be(r){return r.nodeType==3?r.nodeValue.length:r.childNodes.length}function Nl(r,e,t){for(let n=e==0,i=e==be(r);n||i;){if(r==t)return!0;let s=Z(r);if(r=r.parentNode,!r)return!1;n=n&&s==0,i=i&&s==be(r)}}function gr(r){let e;for(let t=r;t&&!(e=t.pmViewDesc);t=t.parentNode);return e&&e.node&&e.node.isBlock&&(e.dom==r||e.contentDOM==r)}const un=function(r){return r.focusNode&&Qe(r.focusNode,r.focusOffset,r.anchorNode,r.anchorOffset)};function je(r,e){let t=document.createEvent("Event");return t.initEvent("keydown",!0,!0),t.keyCode=r,t.key=t.code=e,t}function El(r){let e=r.activeElement;for(;e&&e.shadowRoot;)e=e.shadowRoot.activeElement;return e}function Dl(r,e,t){if(r.caretPositionFromPoint)try{let n=r.caretPositionFromPoint(e,t);if(n)return{node:n.offsetNode,offset:n.offset}}catch{}if(r.caretRangeFromPoint){let n=r.caretRangeFromPoint(e,t);if(n)return{node:n.startContainer,offset:n.startOffset}}}const Se=typeof navigator<"u"?navigator:null,Gr=typeof document<"u"?document:null,He=Se&&Se.userAgent||"",Xn=/Edge\/(\d+)/.exec(He),bs=/MSIE \d/.exec(He),Zn=/Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(He),re=!!(bs||Zn||Xn),Pe=bs?document.documentMode:Zn?+Zn[1]:Xn?+Xn[1]:0,me=!re&&/gecko\/(\d+)/i.test(He);me&&+(/Firefox\/(\d+)/.exec(He)||[0,0])[1];const Qn=!re&&/Chrome\/(\d+)/.exec(He),G=!!Qn,Il=Qn?+Qn[1]:0,ee=!re&&!!Se&&/Apple Computer/.test(Se.vendor),pt=ee&&(/Mobile\/\w+/.test(He)||!!Se&&Se.maxTouchPoints>2),ae=pt||(Se?/Mac/.test(Se.platform):!1),Rl=Se?/Win/.test(Se.platform):!1,fe=/Android \d/.test(He),Bt=!!Gr&&"webkitFontSmoothing"in Gr.documentElement.style,Pl=Bt?+(/\bAppleWebKit\/(\d+)/.exec(navigator.userAgent)||[0,0])[1]:0;function Bl(r){return{left:0,right:r.documentElement.clientWidth,top:0,bottom:r.documentElement.clientHeight}}function Ce(r,e){return typeof r=="number"?r:r[e]}function Ll(r){let e=r.getBoundingClientRect(),t=e.width/r.offsetWidth||1,n=e.height/r.offsetHeight||1;return{left:e.left,right:e.left+r.clientWidth*t,top:e.top,bottom:e.top+r.clientHeight*n}}function Yr(r,e,t){let n=r.someProp("scrollThreshold")||0,i=r.someProp("scrollMargin")||5,s=r.dom.ownerDocument;for(let o=t||r.dom;o;o=Nt(o)){if(o.nodeType!=1)continue;let l=o,a=l==s.body,c=a?Bl(s):Ll(l),d=0,u=0;if(e.topc.bottom-Ce(n,"bottom")&&(u=e.bottom-e.top>c.bottom-c.top?e.top+Ce(i,"top")-c.top:e.bottom-c.bottom+Ce(i,"bottom")),e.leftc.right-Ce(n,"right")&&(d=e.right-c.right+Ce(i,"right")),d||u)if(a)s.defaultView.scrollBy(d,u);else{let f=l.scrollLeft,h=l.scrollTop;u&&(l.scrollTop+=u),d&&(l.scrollLeft+=d);let p=l.scrollLeft-f,m=l.scrollTop-h;e={left:e.left-p,top:e.top-m,right:e.right-p,bottom:e.bottom-m}}if(a||/^(fixed|sticky)$/.test(getComputedStyle(o).position))break}}function zl(r){let e=r.dom.getBoundingClientRect(),t=Math.max(0,e.top),n,i;for(let s=(e.left+e.right)/2,o=t+1;o=t-20){n=l,i=a.top;break}}return{refDOM:n,refTop:i,stack:ks(r.dom)}}function ks(r){let e=[],t=r.ownerDocument;for(let n=r;n&&(e.push({dom:n,top:n.scrollTop,left:n.scrollLeft}),r!=t);n=Nt(n));return e}function Fl({refDOM:r,refTop:e,stack:t}){let n=r?r.getBoundingClientRect().top:0;xs(t,n==0?0:n-e)}function xs(r,e){for(let t=0;t=l){o=Math.max(p.bottom,o),l=Math.min(p.top,l);let m=p.left>e.left?p.left-e.left:p.right=(p.left+p.right)/2?1:0));continue}}else p.top>e.top&&!a&&p.left<=e.left&&p.right>=e.left&&(a=d,c={left:Math.max(p.left,Math.min(p.right,e.left)),top:p.top});!t&&(e.left>=p.right&&e.top>=p.top||e.left>=p.left&&e.top>=p.bottom)&&(s=u+1)}}return!t&&a&&(t=a,i=c,n=0),t&&t.nodeType==3?$l(t,i):!t||n&&t.nodeType==1?{node:r,offset:s}:Ss(t,i)}function $l(r,e){let t=r.nodeValue.length,n=document.createRange();for(let i=0;i=(s.left+s.right)/2?1:0)}}return{node:r,offset:0}}function yr(r,e){return r.left>=e.left-1&&r.left<=e.right+1&&r.top>=e.top-1&&r.top<=e.bottom+1}function Hl(r,e){let t=r.parentNode;return t&&/^li$/i.test(t.nodeName)&&e.left(o.left+o.right)/2?1:-1}return r.docView.posFromDOM(n,i,s)}function jl(r,e,t,n){let i=-1;for(let s=e,o=!1;s!=r.dom;){let l=r.docView.nearestDesc(s,!0);if(!l)return null;if(l.dom.nodeType==1&&(l.node.isBlock&&l.parent&&!o||!l.contentDOM)){let a=l.dom.getBoundingClientRect();if(l.node.isBlock&&l.parent&&!o&&(o=!0,a.left>n.left||a.top>n.top?i=l.posBefore:(a.right-1?i:r.docView.posFromDOM(e,t,-1)}function Ms(r,e,t){let n=r.childNodes.length;if(n&&t.tope.top&&i++}let c;Bt&&i&&n.nodeType==1&&(c=n.childNodes[i-1]).nodeType==1&&c.contentEditable=="false"&&c.getBoundingClientRect().top>=e.top&&i--,n==r.dom&&i==n.childNodes.length-1&&n.lastChild.nodeType==1&&e.top>n.lastChild.getBoundingClientRect().bottom?l=r.state.doc.content.size:(i==0||n.nodeType!=1||n.childNodes[i-1].nodeName!="BR")&&(l=jl(r,n,i,e))}l==null&&(l=_l(r,o,e));let a=r.docView.nearestDesc(o,!0);return{pos:l,inside:a?a.posAtStart-a.border:-1}}function Xr(r){return r.top=0&&i==n.nodeValue.length?(a--,d=1):t<0?a--:c++,kt(ve(Te(n,a,c),d),d<0)}if(!r.state.doc.resolve(e-(s||0)).parent.inlineContent){if(s==null&&i&&(t<0||i==be(n))){let a=n.childNodes[i-1];if(a.nodeType==1)return Rn(a.getBoundingClientRect(),!1)}if(s==null&&i=0)}if(s==null&&i&&(t<0||i==be(n))){let a=n.childNodes[i-1],c=a.nodeType==3?Te(a,be(a)-(o?0:1)):a.nodeType==1&&(a.nodeName!="BR"||!a.nextSibling)?a:null;if(c)return kt(ve(c,1),!1)}if(s==null&&i=0)}function kt(r,e){if(r.width==0)return r;let t=e?r.left:r.right;return{top:r.top,bottom:r.bottom,left:t,right:t}}function Rn(r,e){if(r.height==0)return r;let t=e?r.top:r.bottom;return{top:t,bottom:t,left:r.left,right:r.right}}function Cs(r,e,t){let n=r.state,i=r.root.activeElement;n!=e&&r.updateState(e),i!=r.dom&&r.focus();try{return t()}finally{n!=e&&r.updateState(n),i!=r.dom&&i&&i.focus()}}function Kl(r,e,t){let n=e.selection,i=t=="up"?n.$from:n.$to;return Cs(r,e,()=>{let{node:s}=r.docView.domFromPos(i.pos,t=="up"?-1:1);for(;;){let l=r.docView.nearestDesc(s,!0);if(!l)break;if(l.node.isBlock){s=l.contentDOM||l.dom;break}s=l.dom.parentNode}let o=ws(r,i.pos,1);for(let l=s.firstChild;l;l=l.nextSibling){let a;if(l.nodeType==1)a=l.getClientRects();else if(l.nodeType==3)a=Te(l,0,l.nodeValue.length).getClientRects();else continue;for(let c=0;cd.top+1&&(t=="up"?o.top-d.top>(d.bottom-o.top)*2:d.bottom-o.bottom>(o.bottom-d.top)*2))return!1}}return!0})}const ql=/[\u0590-\u08ac]/;function Ul(r,e,t){let{$head:n}=e.selection;if(!n.parent.isTextblock)return!1;let i=n.parentOffset,s=!i,o=i==n.parent.content.size,l=r.domSelection();return!ql.test(n.parent.textContent)||!l.modify?t=="left"||t=="backward"?s:o:Cs(r,e,()=>{let{focusNode:a,focusOffset:c,anchorNode:d,anchorOffset:u}=r.domSelectionRange(),f=l.caretBidiLevel;l.modify("move",t,"character");let h=n.depth?r.docView.domAfterPos(n.before()):r.dom,{focusNode:p,focusOffset:m}=r.domSelectionRange(),g=p&&!h.contains(p.nodeType==1?p:p.parentNode)||a==p&&c==m;try{l.collapse(d,u),a&&(a!=d||c!=u)&&l.extend&&l.extend(a,c)}catch{}return f!=null&&(l.caretBidiLevel=f),g})}let Zr=null,Qr=null,ei=!1;function Gl(r,e,t){return Zr==e&&Qr==t?ei:(Zr=e,Qr=t,ei=t=="up"||t=="down"?Kl(r,e,t):Ul(r,e,t))}const de=0,ti=1,Je=2,Me=3;class Lt{constructor(e,t,n,i){this.parent=e,this.children=t,this.dom=n,this.contentDOM=i,this.dirty=de,n.pmViewDesc=this}matchesWidget(e){return!1}matchesMark(e){return!1}matchesNode(e,t,n){return!1}matchesHack(e){return!1}parseRule(){return null}stopEvent(e){return!1}get size(){let e=0;for(let t=0;tZ(this.contentDOM);else if(this.contentDOM&&this.contentDOM!=this.dom&&this.dom.contains(this.contentDOM))i=e.compareDocumentPosition(this.contentDOM)&2;else if(this.dom.firstChild){if(t==0)for(let s=e;;s=s.parentNode){if(s==this.dom){i=!1;break}if(s.previousSibling)break}if(i==null&&t==e.childNodes.length)for(let s=e;;s=s.parentNode){if(s==this.dom){i=!0;break}if(s.nextSibling)break}}return i??n>0?this.posAtEnd:this.posAtStart}nearestDesc(e,t=!1){for(let n=!0,i=e;i;i=i.parentNode){let s=this.getDesc(i),o;if(s&&(!t||s.node))if(n&&(o=s.nodeDOM)&&!(o.nodeType==1?o.contains(e.nodeType==1?e:e.parentNode):o==e))n=!1;else return s}}getDesc(e){let t=e.pmViewDesc;for(let n=t;n;n=n.parent)if(n==this)return t}posFromDOM(e,t,n){for(let i=e;i;i=i.parentNode){let s=this.getDesc(i);if(s)return s.localPosFromDOM(e,t,n)}return-1}descAt(e){for(let t=0,n=0;te||o instanceof Os){i=e-s;break}s=l}if(i)return this.children[n].domFromPos(i-this.children[n].border,t);for(let s;n&&!(s=this.children[n-1]).size&&s instanceof Ts&&s.side>=0;n--);if(t<=0){let s,o=!0;for(;s=n?this.children[n-1]:null,!(!s||s.dom.parentNode==this.contentDOM);n--,o=!1);return s&&t&&o&&!s.border&&!s.domAtom?s.domFromPos(s.size,t):{node:this.contentDOM,offset:s?Z(s.dom)+1:0}}else{let s,o=!0;for(;s=n=d&&t<=c-a.border&&a.node&&a.contentDOM&&this.contentDOM.contains(a.contentDOM))return a.parseRange(e,t,d);e=o;for(let u=l;u>0;u--){let f=this.children[u-1];if(f.size&&f.dom.parentNode==this.contentDOM&&!f.emptyChildAt(1)){i=Z(f.dom)+1;break}e-=f.size}i==-1&&(i=0)}if(i>-1&&(c>t||l==this.children.length-1)){t=c;for(let d=l+1;dh&&ot){let h=l;l=a,a=h}let f=document.createRange();f.setEnd(a.node,a.offset),f.setStart(l.node,l.offset),c.removeAllRanges(),c.addRange(f)}}ignoreMutation(e){return!this.contentDOM&&e.type!="selection"}get contentLost(){return this.contentDOM&&this.contentDOM!=this.dom&&!this.dom.contains(this.contentDOM)}markDirty(e,t){for(let n=0,i=0;i=n:en){let l=n+s.border,a=o-s.border;if(e>=l&&t<=a){this.dirty=e==n||t==o?Je:ti,e==l&&t==a&&(s.contentLost||s.dom.parentNode!=this.contentDOM)?s.dirty=Me:s.markDirty(e-l,t-l);return}else s.dirty=s.dom==s.contentDOM&&s.dom.parentNode==this.contentDOM&&!s.children.length?Je:Me}n=o}this.dirty=Je}markParentsDirty(){let e=1;for(let t=this.parent;t;t=t.parent,e++){let n=e==1?Je:ti;t.dirty{if(!s)return i;if(s.parent)return s.parent.posBeforeChild(s)})),!t.type.spec.raw){if(o.nodeType!=1){let l=document.createElement("span");l.appendChild(o),o=l}o.contentEditable="false",o.classList.add("ProseMirror-widget")}super(e,[],o,null),this.widget=t,this.widget=t,s=this}matchesWidget(e){return this.dirty==de&&e.type.eq(this.widget.type)}parseRule(){return{ignore:!0}}stopEvent(e){let t=this.widget.spec.stopEvent;return t?t(e):!1}ignoreMutation(e){return e.type!="selection"||this.widget.spec.ignoreSelection}destroy(){this.widget.type.destroy(this.dom),super.destroy()}get domAtom(){return!0}get side(){return this.widget.type.side}}class Yl extends Lt{constructor(e,t,n,i){super(e,[],t,null),this.textDOM=n,this.text=i}get size(){return this.text.length}localPosFromDOM(e,t){return e!=this.textDOM?this.posAtStart+(t?this.size:0):this.posAtStart+t}domFromPos(e){return{node:this.textDOM,offset:e}}ignoreMutation(e){return e.type==="characterData"&&e.target.nodeValue==e.oldValue}}class et extends Lt{constructor(e,t,n,i){super(e,[],n,i),this.mark=t}static create(e,t,n,i){let s=i.nodeViews[t.type.name],o=s&&s(t,i,n);return(!o||!o.dom)&&(o=ke.renderSpec(document,t.type.spec.toDOM(t,n))),new et(e,t,o.dom,o.contentDOM||o.dom)}parseRule(){return this.dirty&Me||this.mark.type.spec.reparseInView?null:{mark:this.mark.type.name,attrs:this.mark.attrs,contentElement:this.contentDOM}}matchesMark(e){return this.dirty!=Me&&this.mark.eq(e)}markDirty(e,t){if(super.markDirty(e,t),this.dirty!=de){let n=this.parent;for(;!n.node;)n=n.parent;n.dirty0&&(s=nr(s,0,e,n));for(let l=0;l{if(!a)return o;if(a.parent)return a.parent.posBeforeChild(a)},n,i),d=c&&c.dom,u=c&&c.contentDOM;if(t.isText){if(!d)d=document.createTextNode(t.text);else if(d.nodeType!=3)throw new RangeError("Text must be rendered as a DOM text node")}else d||({dom:d,contentDOM:u}=ke.renderSpec(document,t.type.spec.toDOM(t)));!u&&!t.isText&&d.nodeName!="BR"&&(d.hasAttribute("contenteditable")||(d.contentEditable="false"),t.type.spec.draggable&&(d.draggable=!0));let f=d;return d=Ns(d,n,t),c?a=new Xl(e,t,n,i,d,u||null,f,c,s,o+1):t.isText?new fn(e,t,n,i,d,f,s):new Be(e,t,n,i,d,u||null,f,s,o+1)}parseRule(){if(this.node.type.spec.reparseInView)return null;let e={node:this.node.type.name,attrs:this.node.attrs};if(this.node.type.whitespace=="pre"&&(e.preserveWhitespace="full"),!this.contentDOM)e.getContent=()=>this.node.content;else if(!this.contentLost)e.contentElement=this.contentDOM;else{for(let t=this.children.length-1;t>=0;t--){let n=this.children[t];if(this.dom.contains(n.dom.parentNode)){e.contentElement=n.dom.parentNode;break}}e.contentElement||(e.getContent=()=>b.empty)}return e}matchesNode(e,t,n){return this.dirty==de&&e.eq(this.node)&&tr(t,this.outerDeco)&&n.eq(this.innerDeco)}get size(){return this.node.nodeSize}get border(){return this.node.isLeaf?0:1}updateChildren(e,t){let n=this.node.inlineContent,i=t,s=e.composing?this.localCompositionInfo(e,t):null,o=s&&s.pos>-1?s:null,l=s&&s.pos<0,a=new Ql(this,o&&o.node,e);na(this.node,this.innerDeco,(c,d,u)=>{c.spec.marks?a.syncToMarks(c.spec.marks,n,e):c.type.side>=0&&!u&&a.syncToMarks(d==this.node.childCount?I.none:this.node.child(d).marks,n,e),a.placeWidget(c,e,i)},(c,d,u,f)=>{a.syncToMarks(c.marks,n,e);let h;a.findNodeMatch(c,d,u,f)||l&&e.state.selection.from>i&&e.state.selection.to-1&&a.updateNodeAt(c,d,u,h,e)||a.updateNextNode(c,d,u,e,f,i)||a.addNode(c,d,u,e,i),i+=c.nodeSize}),a.syncToMarks([],n,e),this.node.isTextblock&&a.addTextblockHacks(),a.destroyRest(),(a.changed||this.dirty==Je)&&(o&&this.protectLocalComposition(e,o),vs(this.contentDOM,this.children,e),pt&&ra(this.dom))}localCompositionInfo(e,t){let{from:n,to:i}=e.state.selection;if(!(e.state.selection instanceof C)||nt+this.node.content.size)return null;let s=e.domSelectionRange(),o=ia(s.focusNode,s.focusOffset);if(!o||!this.dom.contains(o.parentNode))return null;if(this.node.inlineContent){let l=o.nodeValue,a=sa(this.node.content,l,n-t,i-t);return a<0?null:{node:o,pos:a,text:l}}else return{node:o,pos:-1,text:""}}protectLocalComposition(e,{node:t,pos:n,text:i}){if(this.getDesc(t))return;let s=t;for(;s.parentNode!=this.contentDOM;s=s.parentNode){for(;s.previousSibling;)s.parentNode.removeChild(s.previousSibling);for(;s.nextSibling;)s.parentNode.removeChild(s.nextSibling);s.pmViewDesc&&(s.pmViewDesc=void 0)}let o=new Yl(this,s,t,i);e.input.compositionNodes.push(o),this.children=nr(this.children,n,n+i.length,e,o)}update(e,t,n,i){return this.dirty==Me||!e.sameMarkup(this.node)?!1:(this.updateInner(e,t,n,i),!0)}updateInner(e,t,n,i){this.updateOuterDeco(t),this.node=e,this.innerDeco=n,this.contentDOM&&this.updateChildren(i,this.posAtStart),this.dirty=de}updateOuterDeco(e){if(tr(e,this.outerDeco))return;let t=this.nodeDOM.nodeType!=1,n=this.dom;this.dom=As(this.dom,this.nodeDOM,er(this.outerDeco,this.node,t),er(e,this.node,t)),this.dom!=n&&(n.pmViewDesc=void 0,this.dom.pmViewDesc=this),this.outerDeco=e}selectNode(){this.nodeDOM.nodeType==1&&this.nodeDOM.classList.add("ProseMirror-selectednode"),(this.contentDOM||!this.node.type.spec.draggable)&&(this.dom.draggable=!0)}deselectNode(){this.nodeDOM.nodeType==1&&this.nodeDOM.classList.remove("ProseMirror-selectednode"),(this.contentDOM||!this.node.type.spec.draggable)&&this.dom.removeAttribute("draggable")}get domAtom(){return this.node.isAtom}}function ni(r,e,t,n,i){Ns(n,e,r);let s=new Be(void 0,r,e,t,n,n,n,i,0);return s.contentDOM&&s.updateChildren(i,0),s}class fn extends Be{constructor(e,t,n,i,s,o,l){super(e,t,n,i,s,null,o,l,0)}parseRule(){let e=this.nodeDOM.parentNode;for(;e&&e!=this.dom&&!e.pmIsDeco;)e=e.parentNode;return{skip:e||!0}}update(e,t,n,i){return this.dirty==Me||this.dirty!=de&&!this.inParent()||!e.sameMarkup(this.node)?!1:(this.updateOuterDeco(t),(this.dirty!=de||e.text!=this.node.text)&&e.text!=this.nodeDOM.nodeValue&&(this.nodeDOM.nodeValue=e.text,i.trackWrites==this.nodeDOM&&(i.trackWrites=null)),this.node=e,this.dirty=de,!0)}inParent(){let e=this.parent.contentDOM;for(let t=this.nodeDOM;t;t=t.parentNode)if(t==e)return!0;return!1}domFromPos(e){return{node:this.nodeDOM,offset:e}}localPosFromDOM(e,t,n){return e==this.nodeDOM?this.posAtStart+Math.min(t,this.node.text.length):super.localPosFromDOM(e,t,n)}ignoreMutation(e){return e.type!="characterData"&&e.type!="selection"}slice(e,t,n){let i=this.node.cut(e,t),s=document.createTextNode(i.text);return new fn(this.parent,i,this.outerDeco,this.innerDeco,s,s,n)}markDirty(e,t){super.markDirty(e,t),this.dom!=this.nodeDOM&&(e==0||t==this.nodeDOM.nodeValue.length)&&(this.dirty=Me)}get domAtom(){return!1}}class Os extends Lt{parseRule(){return{ignore:!0}}matchesHack(e){return this.dirty==de&&this.dom.nodeName==e}get domAtom(){return!0}get ignoreForCoords(){return this.dom.nodeName=="IMG"}}class Xl extends Be{constructor(e,t,n,i,s,o,l,a,c,d){super(e,t,n,i,s,o,l,c,d),this.spec=a}update(e,t,n,i){if(this.dirty==Me)return!1;if(this.spec.update){let s=this.spec.update(e,t,n);return s&&this.updateInner(e,t,n,i),s}else return!this.contentDOM&&!e.isLeaf?!1:super.update(e,t,n,i)}selectNode(){this.spec.selectNode?this.spec.selectNode():super.selectNode()}deselectNode(){this.spec.deselectNode?this.spec.deselectNode():super.deselectNode()}setSelection(e,t,n,i){this.spec.setSelection?this.spec.setSelection(e,t,n):super.setSelection(e,t,n,i)}destroy(){this.spec.destroy&&this.spec.destroy(),super.destroy()}stopEvent(e){return this.spec.stopEvent?this.spec.stopEvent(e):!1}ignoreMutation(e){return this.spec.ignoreMutation?this.spec.ignoreMutation(e):super.ignoreMutation(e)}}function vs(r,e,t){let n=r.firstChild,i=!1;for(let s=0;s>1,o=Math.min(s,e.length);for(;i-1)l>this.index&&(this.changed=!0,this.destroyBetween(this.index,l)),this.top=this.top.children[this.index];else{let a=et.create(this.top,e[s],t,n);this.top.children.splice(this.index,0,a),this.top=a,this.changed=!0}this.index=0,s++}}findNodeMatch(e,t,n,i){let s=-1,o;if(i>=this.preMatch.index&&(o=this.preMatch.matches[i-this.preMatch.index]).parent==this.top&&o.matchesNode(e,t,n))s=this.top.children.indexOf(o,this.index);else for(let l=this.index,a=Math.min(this.top.children.length,l+5);l0;){let l;for(;;)if(n){let c=t.children[n-1];if(c instanceof et)t=c,n=c.children.length;else{l=c,n--;break}}else{if(t==e)break e;n=t.parent.children.indexOf(t),t=t.parent}let a=l.node;if(a){if(a!=r.child(i-1))break;--i,s.set(l,i),o.push(l)}}return{index:i,matched:s,matches:o.reverse()}}function ta(r,e){return r.type.side-e.type.side}function na(r,e,t,n){let i=e.locals(r),s=0;if(i.length==0){for(let c=0;cs;)l.push(i[o++]);let p=s+f.nodeSize;if(f.isText){let g=p;o!g.inline):l.slice();n(f,m,e.forChild(s,f),h),s=p}}function ra(r){if(r.nodeName=="UL"||r.nodeName=="OL"){let e=r.style.cssText;r.style.cssText=e+"; list-style: square !important",window.getComputedStyle(r).listStyle,r.style.cssText=e}}function ia(r,e){for(;;){if(r.nodeType==3)return r;if(r.nodeType==1&&e>0){if(r.childNodes.length>e&&r.childNodes[e].nodeType==3)return r.childNodes[e];r=r.childNodes[e-1],e=be(r)}else if(r.nodeType==1&&e=t){if(s>=n&&a.slice(n-e.length-l,n-l)==e)return n-e.length;let c=l=0&&c+e.length+l>=t)return l+c;if(t==n&&a.length>=n+e.length-l&&a.slice(n-l,n-l+e.length)==e)return n}}return-1}function nr(r,e,t,n,i){let s=[];for(let o=0,l=0;o=t||d<=e?s.push(a):(ct&&s.push(a.slice(t-c,a.size,n)))}return s}function br(r,e=null){let t=r.domSelectionRange(),n=r.state.doc;if(!t.focusNode)return null;let i=r.docView.nearestDesc(t.focusNode),s=i&&i.size==0,o=r.docView.posFromDOM(t.focusNode,t.focusOffset,1);if(o<0)return null;let l=n.resolve(o),a,c;if(un(t)){for(a=l;i&&!i.node;)i=i.parent;let d=i.node;if(i&&d.isAtom&&M.isSelectable(d)&&i.parent&&!(d.isInline&&Nl(t.focusNode,t.focusOffset,i.dom))){let u=i.posBefore;c=new M(o==u?l:n.resolve(u))}}else{let d=r.docView.posFromDOM(t.anchorNode,t.anchorOffset,1);if(d<0)return null;a=n.resolve(d)}if(!c){let d=e=="pointer"||r.state.selection.head{(t.anchorNode!=n||t.anchorOffset!=i)&&(e.removeEventListener("selectionchange",r.input.hideSelectionGuard),setTimeout(()=>{(!Es(r)||r.state.selection.visible)&&r.dom.classList.remove("ProseMirror-hideselection")},20))})}function la(r){let e=r.domSelection(),t=document.createRange(),n=r.cursorWrapper.dom,i=n.nodeName=="IMG";i?t.setEnd(n.parentNode,Z(n)+1):t.setEnd(n,0),t.collapse(!1),e.removeAllRanges(),e.addRange(t),!i&&!r.state.selection.visible&&re&&Pe<=11&&(n.disabled=!0,n.disabled=!1)}function Ds(r,e){if(e instanceof M){let t=r.docView.descAt(e.from);t!=r.lastSelectedViewDesc&&(li(r),t&&t.selectNode(),r.lastSelectedViewDesc=t)}else li(r)}function li(r){r.lastSelectedViewDesc&&(r.lastSelectedViewDesc.parent&&r.lastSelectedViewDesc.deselectNode(),r.lastSelectedViewDesc=void 0)}function kr(r,e,t,n){return r.someProp("createSelectionBetween",i=>i(r,e,t))||C.between(e,t,n)}function ai(r){return r.editable&&!r.hasFocus()?!1:Is(r)}function Is(r){let e=r.domSelectionRange();if(!e.anchorNode)return!1;try{return r.dom.contains(e.anchorNode.nodeType==3?e.anchorNode.parentNode:e.anchorNode)&&(r.editable||r.dom.contains(e.focusNode.nodeType==3?e.focusNode.parentNode:e.focusNode))}catch{return!1}}function aa(r){let e=r.docView.domFromPos(r.state.selection.anchor,0),t=r.domSelectionRange();return Qe(e.node,e.offset,t.anchorNode,t.anchorOffset)}function rr(r,e){let{$anchor:t,$head:n}=r.selection,i=e>0?t.max(n):t.min(n),s=i.parent.inlineContent?i.depth?r.doc.resolve(e>0?i.after():i.before()):null:i;return s&&v.findFrom(s,e)}function Ae(r,e){return r.dispatch(r.state.tr.setSelection(e).scrollIntoView()),!0}function ci(r,e,t){let n=r.state.selection;if(n instanceof C)if(t.indexOf("s")>-1){let{$head:i}=n,s=i.textOffset?null:e<0?i.nodeBefore:i.nodeAfter;if(!s||s.isText||!s.isLeaf)return!1;let o=r.state.doc.resolve(i.pos+s.nodeSize*(e<0?-1:1));return Ae(r,new C(n.$anchor,o))}else if(n.empty){if(r.endOfTextblock(e>0?"forward":"backward")){let i=rr(r.state,e);return i&&i instanceof M?Ae(r,i):!1}else if(!(ae&&t.indexOf("m")>-1)){let i=n.$head,s=i.textOffset?null:e<0?i.nodeBefore:i.nodeAfter,o;if(!s||s.isText)return!1;let l=e<0?i.pos-s.nodeSize:i.pos;return s.isAtom||(o=r.docView.descAt(l))&&!o.contentDOM?M.isSelectable(s)?Ae(r,new M(e<0?r.state.doc.resolve(i.pos-s.nodeSize):i)):Bt?Ae(r,new C(r.state.doc.resolve(e<0?l:l+s.nodeSize))):!1:!1}}else return!1;else{if(n instanceof M&&n.node.isInline)return Ae(r,new C(e>0?n.$to:n.$from));{let i=rr(r.state,e);return i?Ae(r,i):!1}}}function Qt(r){return r.nodeType==3?r.nodeValue.length:r.childNodes.length}function Ot(r,e){let t=r.pmViewDesc;return t&&t.size==0&&(e<0||r.nextSibling||r.nodeName!="BR")}function nt(r,e){return e<0?ca(r):da(r)}function ca(r){let e=r.domSelectionRange(),t=e.focusNode,n=e.focusOffset;if(!t)return;let i,s,o=!1;for(me&&t.nodeType==1&&n0){if(t.nodeType!=1)break;{let l=t.childNodes[n-1];if(Ot(l,-1))i=t,s=--n;else if(l.nodeType==3)t=l,n=t.nodeValue.length;else break}}else{if(Rs(t))break;{let l=t.previousSibling;for(;l&&Ot(l,-1);)i=t.parentNode,s=Z(l),l=l.previousSibling;if(l)t=l,n=Qt(t);else{if(t=t.parentNode,t==r.dom)break;n=0}}}o?ir(r,t,n):i&&ir(r,i,s)}function da(r){let e=r.domSelectionRange(),t=e.focusNode,n=e.focusOffset;if(!t)return;let i=Qt(t),s,o;for(;;)if(n{r.state==i&&Oe(r)},50)}function di(r,e){let t=r.state.doc.resolve(e);if(!(G||Rl)&&t.parent.inlineContent){let i=r.coordsAtPos(e);if(e>t.start()){let s=r.coordsAtPos(e-1),o=(s.top+s.bottom)/2;if(o>i.top&&o1)return s.lefti.top&&o1)return s.left>i.left?"ltr":"rtl"}}return getComputedStyle(r.dom).direction=="rtl"?"rtl":"ltr"}function ui(r,e,t){let n=r.state.selection;if(n instanceof C&&!n.empty||t.indexOf("s")>-1||ae&&t.indexOf("m")>-1)return!1;let{$from:i,$to:s}=n;if(!i.parent.inlineContent||r.endOfTextblock(e<0?"up":"down")){let o=rr(r.state,e);if(o&&o instanceof M)return Ae(r,o)}if(!i.parent.inlineContent){let o=e<0?i:s,l=n instanceof pe?v.near(o,e):v.findFrom(o,e);return l?Ae(r,l):!1}return!1}function fi(r,e){if(!(r.state.selection instanceof C))return!0;let{$head:t,$anchor:n,empty:i}=r.state.selection;if(!t.sameParent(n))return!0;if(!i)return!1;if(r.endOfTextblock(e>0?"forward":"backward"))return!0;let s=!t.textOffset&&(e<0?t.nodeBefore:t.nodeAfter);if(s&&!s.isText){let o=r.state.tr;return e<0?o.delete(t.pos-s.nodeSize,t.pos):o.delete(t.pos,t.pos+s.nodeSize),r.dispatch(o),!0}return!1}function hi(r,e,t){r.domObserver.stop(),e.contentEditable=t,r.domObserver.start()}function ha(r){if(!ee||r.state.selection.$head.parentOffset>0)return!1;let{focusNode:e,focusOffset:t}=r.domSelectionRange();if(e&&e.nodeType==1&&t==0&&e.firstChild&&e.firstChild.contentEditable=="false"){let n=e.firstChild;hi(r,n,"true"),setTimeout(()=>hi(r,n,"false"),20)}return!1}function pa(r){let e="";return r.ctrlKey&&(e+="c"),r.metaKey&&(e+="m"),r.altKey&&(e+="a"),r.shiftKey&&(e+="s"),e}function ma(r,e){let t=e.keyCode,n=pa(e);if(t==8||ae&&t==72&&n=="c")return fi(r,-1)||nt(r,-1);if(t==46&&!e.shiftKey||ae&&t==68&&n=="c")return fi(r,1)||nt(r,1);if(t==13||t==27)return!0;if(t==37||ae&&t==66&&n=="c"){let i=t==37?di(r,r.state.selection.from)=="ltr"?-1:1:-1;return ci(r,i,n)||nt(r,i)}else if(t==39||ae&&t==70&&n=="c"){let i=t==39?di(r,r.state.selection.from)=="ltr"?1:-1:1;return ci(r,i,n)||nt(r,i)}else{if(t==38||ae&&t==80&&n=="c")return ui(r,-1,n)||nt(r,-1);if(t==40||ae&&t==78&&n=="c")return ha(r)||ui(r,1,n)||nt(r,1);if(n==(ae?"m":"c")&&(t==66||t==73||t==89||t==90))return!0}return!1}function Ps(r,e){r.someProp("transformCopied",h=>{e=h(e,r)});let t=[],{content:n,openStart:i,openEnd:s}=e;for(;i>1&&s>1&&n.childCount==1&&n.firstChild.childCount==1;){i--,s--;let h=n.firstChild;t.push(h.type.name,h.attrs!=h.type.defaultAttrs?h.attrs:null),n=h.content}let o=r.someProp("clipboardSerializer")||ke.fromSchema(r.state.schema),l=$s(),a=l.createElement("div");a.appendChild(o.serializeFragment(n,{document:l}));let c=a.firstChild,d,u=0;for(;c&&c.nodeType==1&&(d=Vs[c.nodeName.toLowerCase()]);){for(let h=d.length-1;h>=0;h--){let p=l.createElement(d[h]);for(;a.firstChild;)p.appendChild(a.firstChild);a.appendChild(p),u++}c=a.firstChild}c&&c.nodeType==1&&c.setAttribute("data-pm-slice",`${i} ${s}${u?` -${u}`:""} ${JSON.stringify(t)}`);let f=r.someProp("clipboardTextSerializer",h=>h(e,r))||e.content.textBetween(0,e.content.size,` +import{b0 as go,f as yo,bp as bo,an as ko,bo as xo,l as So,aD as $i,bq as xn,br as Mo,bs as wo,Y as Co,H as To,bt as Oo,bu as vo,Z as le,o as Q,c as ie,b as w,$ as Ao,bv as No,bw as Eo,bx as Do,bg as Io,z as Ro,aa as Po,r as z,m as Bo,w as Sn,a as D,J as E,K as Lo}from"./main-pPEsZPea.js";function J(r){this.content=r}J.prototype={constructor:J,find:function(r){for(var e=0;e>1}};J.from=function(r){if(r instanceof J)return r;var e=[];if(r)for(var t in r)e.push(t,r[t]);return new J(e)};function Hi(r,e,t){for(let n=0;;n++){if(n==r.childCount||n==e.childCount)return r.childCount==e.childCount?null:t;let i=r.child(n),s=e.child(n);if(i==s){t+=i.nodeSize;continue}if(!i.sameMarkup(s))return t;if(i.isText&&i.text!=s.text){for(let o=0;i.text[o]==s.text[o];o++)t++;return t}if(i.content.size||s.content.size){let o=Hi(i.content,s.content,t+1);if(o!=null)return o}t+=i.nodeSize}}function _i(r,e,t,n){for(let i=r.childCount,s=e.childCount;;){if(i==0||s==0)return i==s?null:{a:t,b:n};let o=r.child(--i),l=e.child(--s),a=o.nodeSize;if(o==l){t-=a,n-=a;continue}if(!o.sameMarkup(l))return{a:t,b:n};if(o.isText&&o.text!=l.text){let c=0,d=Math.min(o.text.length,l.text.length);for(;ce&&n(a,i+l,s||null,o)!==!1&&a.content.size){let d=l+1;a.nodesBetween(Math.max(0,e-d),Math.min(a.content.size,t-d),n,i+d)}l=c}}descendants(e){this.nodesBetween(0,this.size,e)}textBetween(e,t,n,i){let s="",o=!0;return this.nodesBetween(e,t,(l,a)=>{let c=l.isText?l.text.slice(Math.max(e,a)-a,t-a):l.isLeaf?i?typeof i=="function"?i(l):i:l.type.spec.leafText?l.type.spec.leafText(l):"":"";l.isBlock&&(l.isLeaf&&c||l.isTextblock)&&n&&(o?o=!1:s+=n),s+=c},0),s}append(e){if(!e.size)return this;if(!this.size)return e;let t=this.lastChild,n=e.firstChild,i=this.content.slice(),s=0;for(t.isText&&t.sameMarkup(n)&&(i[i.length-1]=t.withText(t.text+n.text),s=1);se)for(let s=0,o=0;oe&&((ot)&&(l.isText?l=l.cut(Math.max(0,e-o),Math.min(l.text.length,t-o)):l=l.cut(Math.max(0,e-o-1),Math.min(l.content.size,t-o-1))),n.push(l),i+=l.nodeSize),o=a}return new b(n,i)}cutByIndex(e,t){return e==t?b.empty:e==0&&t==this.content.length?this:new b(this.content.slice(e,t))}replaceChild(e,t){let n=this.content[e];if(n==t)return this;let i=this.content.slice(),s=this.size+t.nodeSize-n.nodeSize;return i[e]=t,new b(i,s)}addToStart(e){return new b([e].concat(this.content),this.size+e.nodeSize)}addToEnd(e){return new b(this.content.concat(e),this.size+e.nodeSize)}eq(e){if(this.content.length!=e.content.length)return!1;for(let t=0;tthis.size||e<0)throw new RangeError(`Position ${e} outside of fragment (${this})`);for(let n=0,i=0;;n++){let s=this.child(n),o=i+s.nodeSize;if(o>=e)return o==e||t>0?Ft(n+1,o):Ft(n,i);i=o}}toString(){return"<"+this.toStringInner()+">"}toStringInner(){return this.content.join(", ")}toJSON(){return this.content.length?this.content.map(e=>e.toJSON()):null}static fromJSON(e,t){if(!t)return b.empty;if(!Array.isArray(t))throw new RangeError("Invalid input for Fragment.fromJSON");return new b(t.map(e.nodeFromJSON))}static fromArray(e){if(!e.length)return b.empty;let t,n=0;for(let i=0;ithis.type.rank&&(t||(t=e.slice(0,i)),t.push(this),n=!0),t&&t.push(s)}}return t||(t=e.slice()),n||t.push(this),t}removeFromSet(e){for(let t=0;tn.type.rank-i.type.rank),t}};I.none=[];class qt extends Error{}class k{constructor(e,t,n){this.content=e,this.openStart=t,this.openEnd=n}get size(){return this.content.size-this.openStart-this.openEnd}insertAt(e,t){let n=Ji(this.content,e+this.openStart,t);return n&&new k(n,this.openStart,this.openEnd)}removeBetween(e,t){return new k(ji(this.content,e+this.openStart,t+this.openStart),this.openStart,this.openEnd)}eq(e){return this.content.eq(e.content)&&this.openStart==e.openStart&&this.openEnd==e.openEnd}toString(){return this.content+"("+this.openStart+","+this.openEnd+")"}toJSON(){if(!this.content.size)return null;let e={content:this.content.toJSON()};return this.openStart>0&&(e.openStart=this.openStart),this.openEnd>0&&(e.openEnd=this.openEnd),e}static fromJSON(e,t){if(!t)return k.empty;let n=t.openStart||0,i=t.openEnd||0;if(typeof n!="number"||typeof i!="number")throw new RangeError("Invalid input for Slice.fromJSON");return new k(b.fromJSON(e,t.content),n,i)}static maxOpen(e,t=!0){let n=0,i=0;for(let s=e.firstChild;s&&!s.isLeaf&&(t||!s.type.spec.isolating);s=s.firstChild)n++;for(let s=e.lastChild;s&&!s.isLeaf&&(t||!s.type.spec.isolating);s=s.lastChild)i++;return new k(e,n,i)}}k.empty=new k(b.empty,0,0);function ji(r,e,t){let{index:n,offset:i}=r.findIndex(e),s=r.maybeChild(n),{index:o,offset:l}=r.findIndex(t);if(i==e||s.isText){if(l!=t&&!r.child(o).isText)throw new RangeError("Removing non-flat range");return r.cut(0,e).append(r.cut(t))}if(n!=o)throw new RangeError("Removing non-flat range");return r.replaceChild(n,s.copy(ji(s.content,e-i-1,t-i-1)))}function Ji(r,e,t,n){let{index:i,offset:s}=r.findIndex(e),o=r.maybeChild(i);if(s==e||o.isText)return n&&!n.canReplace(i,i,t)?null:r.cut(0,e).append(t).append(r.cut(e));let l=Ji(o.content,e-s-1,t);return l&&r.replaceChild(i,o.copy(l))}function zo(r,e,t){if(t.openStart>r.depth)throw new qt("Inserted content deeper than insertion position");if(r.depth-t.openStart!=e.depth-t.openEnd)throw new qt("Inconsistent open depths");return Wi(r,e,t,0)}function Wi(r,e,t,n){let i=r.index(n),s=r.node(n);if(i==e.index(n)&&n=0&&r.isText&&r.sameMarkup(e[t])?e[t]=r.withText(e[t].text+r.text):e.push(r)}function wt(r,e,t,n){let i=(e||r).node(t),s=0,o=e?e.index(t):i.childCount;r&&(s=r.index(t),r.depth>t?s++:r.textOffset&&(Ke(r.nodeAfter,n),s++));for(let l=s;li&&qn(r,e,i+1),o=n.depth>i&&qn(t,n,i+1),l=[];return wt(null,r,i,l),s&&o&&e.index(i)==t.index(i)?(qi(s,o),Ke(Ue(s,Ki(r,e,t,n,i+1)),l)):(s&&Ke(Ue(s,Kt(r,e,i+1)),l),wt(e,t,i,l),o&&Ke(Ue(o,Kt(t,n,i+1)),l)),wt(n,null,i,l),new b(l)}function Kt(r,e,t){let n=[];if(wt(null,r,t,n),r.depth>t){let i=qn(r,e,t+1);Ke(Ue(i,Kt(r,e,t+1)),n)}return wt(e,null,t,n),new b(n)}function Fo(r,e){let t=e.depth-r.openStart,i=e.node(t).copy(r.content);for(let s=t-1;s>=0;s--)i=e.node(s).copy(b.from(i));return{start:i.resolveNoCache(r.openStart+t),end:i.resolveNoCache(i.content.size-r.openEnd-t)}}class vt{constructor(e,t,n){this.pos=e,this.path=t,this.parentOffset=n,this.depth=t.length/3-1}resolveDepth(e){return e==null?this.depth:e<0?this.depth+e:e}get parent(){return this.node(this.depth)}get doc(){return this.node(0)}node(e){return this.path[this.resolveDepth(e)*3]}index(e){return this.path[this.resolveDepth(e)*3+1]}indexAfter(e){return e=this.resolveDepth(e),this.index(e)+(e==this.depth&&!this.textOffset?0:1)}start(e){return e=this.resolveDepth(e),e==0?0:this.path[e*3-1]+1}end(e){return e=this.resolveDepth(e),this.start(e)+this.node(e).content.size}before(e){if(e=this.resolveDepth(e),!e)throw new RangeError("There is no position before the top-level node");return e==this.depth+1?this.pos:this.path[e*3-1]}after(e){if(e=this.resolveDepth(e),!e)throw new RangeError("There is no position after the top-level node");return e==this.depth+1?this.pos:this.path[e*3-1]+this.path[e*3].nodeSize}get textOffset(){return this.pos-this.path[this.path.length-1]}get nodeAfter(){let e=this.parent,t=this.index(this.depth);if(t==e.childCount)return null;let n=this.pos-this.path[this.path.length-1],i=e.child(t);return n?e.child(t).cut(n):i}get nodeBefore(){let e=this.index(this.depth),t=this.pos-this.path[this.path.length-1];return t?this.parent.child(e).cut(0,t):e==0?null:this.parent.child(e-1)}posAtIndex(e,t){t=this.resolveDepth(t);let n=this.path[t*3],i=t==0?0:this.path[t*3-1]+1;for(let s=0;s0;t--)if(this.start(t)<=e&&this.end(t)>=e)return t;return 0}blockRange(e=this,t){if(e.pos=0;n--)if(e.pos<=this.end(n)&&(!t||t(this.node(n))))return new Ut(this,e,n);return null}sameParent(e){return this.pos-this.parentOffset==e.pos-e.parentOffset}max(e){return e.pos>this.pos?e:this}min(e){return e.pos=0&&t<=e.content.size))throw new RangeError("Position "+t+" out of range");let n=[],i=0,s=t;for(let o=e;;){let{index:l,offset:a}=o.content.findIndex(s),c=s-a;if(n.push(o,l,i+a),!c||(o=o.child(l),o.isText))break;s=c-1,i+=a+1}return new vt(t,n,s)}static resolveCached(e,t){for(let i=0;ie&&this.nodesBetween(e,t,s=>(n.isInSet(s.marks)&&(i=!0),!i)),i}get isBlock(){return this.type.isBlock}get isTextblock(){return this.type.isTextblock}get inlineContent(){return this.type.inlineContent}get isInline(){return this.type.isInline}get isText(){return this.type.isText}get isLeaf(){return this.type.isLeaf}get isAtom(){return this.type.isAtom}toString(){if(this.type.spec.toDebugString)return this.type.spec.toDebugString(this);let e=this.type.name;return this.content.size&&(e+="("+this.content.toStringInner()+")"),Ui(this.marks,e)}contentMatchAt(e){let t=this.type.contentMatch.matchFragment(this.content,0,e);if(!t)throw new Error("Called contentMatchAt on a node with invalid content");return t}canReplace(e,t,n=b.empty,i=0,s=n.childCount){let o=this.contentMatchAt(e).matchFragment(n,i,s),l=o&&o.matchFragment(this.content,t);if(!l||!l.validEnd)return!1;for(let a=i;at.type.name)}`);this.content.forEach(t=>t.check())}toJSON(){let e={type:this.type.name};for(let t in this.attrs){e.attrs=this.attrs;break}return this.content.size&&(e.content=this.content.toJSON()),this.marks.length&&(e.marks=this.marks.map(t=>t.toJSON())),e}static fromJSON(e,t){if(!t)throw new RangeError("Invalid input for Node.fromJSON");let n=null;if(t.marks){if(!Array.isArray(t.marks))throw new RangeError("Invalid mark data for Node.fromJSON");n=t.marks.map(e.markFromJSON)}if(t.type=="text"){if(typeof t.text!="string")throw new RangeError("Invalid text node in JSON");return e.text(t.text,n)}let i=b.fromJSON(e,t.content);return e.nodeType(t.type).create(t.attrs,i,n)}};Ge.prototype.text=void 0;class Gt extends Ge{constructor(e,t,n,i){if(super(e,t,null,i),!n)throw new RangeError("Empty text nodes are not allowed");this.text=n}toString(){return this.type.spec.toDebugString?this.type.spec.toDebugString(this):Ui(this.marks,JSON.stringify(this.text))}get textContent(){return this.text}textBetween(e,t){return this.text.slice(e,t)}get nodeSize(){return this.text.length}mark(e){return e==this.marks?this:new Gt(this.type,this.attrs,this.text,e)}withText(e){return e==this.text?this:new Gt(this.type,this.attrs,e,this.marks)}cut(e=0,t=this.text.length){return e==0&&t==this.text.length?this:this.withText(this.text.slice(e,t))}eq(e){return this.sameMarkup(e)&&this.text==e.text}toJSON(){let e=super.toJSON();return e.text=this.text,e}}function Ui(r,e){for(let t=r.length-1;t>=0;t--)e=r[t].type.name+"("+e+")";return e}class Ze{constructor(e){this.validEnd=e,this.next=[],this.wrapCache=[]}static parse(e,t){let n=new Ho(e,t);if(n.next==null)return Ze.empty;let i=Gi(n);n.next&&n.err("Unexpected trailing text");let s=Uo(Ko(i));return Go(s,n),s}matchType(e){for(let t=0;tc.createAndFill()));for(let c=0;c=this.next.length)throw new RangeError(`There's no ${e}th edge in this content match`);return this.next[e]}toString(){let e=[];function t(n){e.push(n);for(let i=0;i{let s=i+(n.validEnd?"*":" ")+" ";for(let o=0;o"+e.indexOf(n.next[o].next);return s}).join(` +`)}}Ze.empty=new Ze(!0);class Ho{constructor(e,t){this.string=e,this.nodeTypes=t,this.inline=null,this.pos=0,this.tokens=e.split(/\s*(?=\b|\W|$)/),this.tokens[this.tokens.length-1]==""&&this.tokens.pop(),this.tokens[0]==""&&this.tokens.shift()}get next(){return this.tokens[this.pos]}eat(e){return this.next==e&&(this.pos++||!0)}err(e){throw new SyntaxError(e+" (in content expression '"+this.string+"')")}}function Gi(r){let e=[];do e.push(_o(r));while(r.eat("|"));return e.length==1?e[0]:{type:"choice",exprs:e}}function _o(r){let e=[];do e.push(jo(r));while(r.next&&r.next!=")"&&r.next!="|");return e.length==1?e[0]:{type:"seq",exprs:e}}function jo(r){let e=qo(r);for(;;)if(r.eat("+"))e={type:"plus",expr:e};else if(r.eat("*"))e={type:"star",expr:e};else if(r.eat("?"))e={type:"opt",expr:e};else if(r.eat("{"))e=Jo(r,e);else break;return e}function Er(r){/\D/.test(r.next)&&r.err("Expected number, got '"+r.next+"'");let e=Number(r.next);return r.pos++,e}function Jo(r,e){let t=Er(r),n=t;return r.eat(",")&&(r.next!="}"?n=Er(r):n=-1),r.eat("}")||r.err("Unclosed braced range"),{type:"range",min:t,max:n,expr:e}}function Wo(r,e){let t=r.nodeTypes,n=t[e];if(n)return[n];let i=[];for(let s in t){let o=t[s];o.groups.indexOf(e)>-1&&i.push(o)}return i.length==0&&r.err("No node type or group '"+e+"' found"),i}function qo(r){if(r.eat("(")){let e=Gi(r);return r.eat(")")||r.err("Missing closing paren"),e}else if(/\W/.test(r.next))r.err("Unexpected token '"+r.next+"'");else{let e=Wo(r,r.next).map(t=>(r.inline==null?r.inline=t.isInline:r.inline!=t.isInline&&r.err("Mixing inline and block content"),{type:"name",value:t}));return r.pos++,e.length==1?e[0]:{type:"choice",exprs:e}}}function Ko(r){let e=[[]];return i(s(r,0),t()),e;function t(){return e.push([])-1}function n(o,l,a){let c={term:a,to:l};return e[o].push(c),c}function i(o,l){o.forEach(a=>a.to=l)}function s(o,l){if(o.type=="choice")return o.exprs.reduce((a,c)=>a.concat(s(c,l)),[]);if(o.type=="seq")for(let a=0;;a++){let c=s(o.exprs[a],l);if(a==o.exprs.length-1)return c;i(c,l=t())}else if(o.type=="star"){let a=t();return n(l,a),i(s(o.expr,a),a),[n(a)]}else if(o.type=="plus"){let a=t();return i(s(o.expr,l),a),i(s(o.expr,a),a),[n(a)]}else{if(o.type=="opt")return[n(l)].concat(s(o.expr,l));if(o.type=="range"){let a=l;for(let c=0;c{r[o].forEach(({term:l,to:a})=>{if(!l)return;let c;for(let d=0;d{c||i.push([l,c=[]]),c.indexOf(d)==-1&&c.push(d)})})});let s=e[n.join(",")]=new Ze(n.indexOf(r.length-1)>-1);for(let o=0;o-1}allowsMarks(e){if(this.markSet==null)return!0;for(let t=0;tn[s]=new es(s,t,o));let i=t.spec.topNode||"doc";if(!n[i])throw new RangeError("Schema is missing its top node type ('"+i+"')");if(!n.text)throw new RangeError("Every schema needs a 'text' type");for(let s in n.text.attrs)throw new RangeError("The text node type should not have attributes");return n}};class Yo{constructor(e){this.hasDefault=Object.prototype.hasOwnProperty.call(e,"default"),this.default=e.default}get isRequired(){return!this.hasDefault}}class ln{constructor(e,t,n,i){this.name=e,this.rank=t,this.schema=n,this.spec=i,this.attrs=Qi(i.attrs),this.excluded=null;let s=Xi(this.attrs);this.instance=s?new I(this,s):null}create(e=null){return!e&&this.instance?this.instance:new I(this,Zi(this.attrs,e))}static compile(e,t){let n=Object.create(null),i=0;return e.forEach((s,o)=>n[s]=new ln(s,i++,t,o)),n}removeFromSet(e){for(var t=0;t-1}}class Xo{constructor(e){this.cached=Object.create(null);let t=this.spec={};for(let i in e)t[i]=e[i];t.nodes=J.from(e.nodes),t.marks=J.from(e.marks||{}),this.nodes=Ir.compile(this.spec.nodes,this),this.marks=ln.compile(this.spec.marks,this);let n=Object.create(null);for(let i in this.nodes){if(i in this.marks)throw new RangeError(i+" can not be both a node and a mark");let s=this.nodes[i],o=s.spec.content||"",l=s.spec.marks;s.contentMatch=n[o]||(n[o]=Ze.parse(o,this.nodes)),s.inlineContent=s.contentMatch.inlineContent,s.markSet=l=="_"?null:l?Rr(this,l.split(" ")):l==""||!s.inlineContent?[]:null}for(let i in this.marks){let s=this.marks[i],o=s.spec.excludes;s.excluded=o==null?[s]:o==""?[]:Rr(this,o.split(" "))}this.nodeFromJSON=this.nodeFromJSON.bind(this),this.markFromJSON=this.markFromJSON.bind(this),this.topNodeType=this.nodes[this.spec.topNode||"doc"],this.cached.wrappings=Object.create(null)}node(e,t=null,n,i){if(typeof e=="string")e=this.nodeType(e);else if(e instanceof Ir){if(e.schema!=this)throw new RangeError("Node type from different schema used ("+e.name+")")}else throw new RangeError("Invalid node type: "+e);return e.createChecked(t,n,i)}text(e,t){let n=this.nodes.text;return new Gt(n,n.defaultAttrs,e,I.setFrom(t))}mark(e,t){return typeof e=="string"&&(e=this.marks[e]),e.create(t)}nodeFromJSON(e){return Ge.fromJSON(this,e)}markFromJSON(e){return I.fromJSON(this,e)}nodeType(e){let t=this.nodes[e];if(!t)throw new RangeError("Unknown node type: "+e);return t}}function Rr(r,e){let t=[];for(let n=0;n-1)&&t.push(o=a)}if(!o)throw new SyntaxError("Unknown mark type: '"+e[n]+"'")}return t}class ut{constructor(e,t){this.schema=e,this.rules=t,this.tags=[],this.styles=[],t.forEach(n=>{n.tag?this.tags.push(n):n.style&&this.styles.push(n)}),this.normalizeLists=!this.tags.some(n=>{if(!/^(ul|ol)\b/.test(n.tag)||!n.node)return!1;let i=e.nodes[n.node];return i.contentMatch.matchType(i)})}parse(e,t={}){let n=new Br(this,t,!1);return n.addAll(e,t.from,t.to),n.finish()}parseSlice(e,t={}){let n=new Br(this,t,!0);return n.addAll(e,t.from,t.to),k.maxOpen(n.finish())}matchTag(e,t,n){for(let i=n?this.tags.indexOf(n)+1:0;ie.length&&(l.charCodeAt(e.length)!=61||l.slice(e.length+1)!=t))){if(o.getAttrs){let a=o.getAttrs(t);if(a===!1)continue;o.attrs=a||void 0}return o}}}static schemaRules(e){let t=[];function n(i){let s=i.priority==null?50:i.priority,o=0;for(;o{n(o=Lr(o)),o.mark||o.ignore||o.clearMark||(o.mark=i)})}for(let i in e.nodes){let s=e.nodes[i].spec.parseDOM;s&&s.forEach(o=>{n(o=Lr(o)),o.node||o.ignore||o.mark||(o.node=i)})}return t}static fromSchema(e){return e.cached.domParser||(e.cached.domParser=new ut(e,ut.schemaRules(e)))}}const ts={address:!0,article:!0,aside:!0,blockquote:!0,canvas:!0,dd:!0,div:!0,dl:!0,fieldset:!0,figcaption:!0,figure:!0,footer:!0,form:!0,h1:!0,h2:!0,h3:!0,h4:!0,h5:!0,h6:!0,header:!0,hgroup:!0,hr:!0,li:!0,noscript:!0,ol:!0,output:!0,p:!0,pre:!0,section:!0,table:!0,tfoot:!0,ul:!0},Zo={head:!0,noscript:!0,object:!0,script:!0,style:!0,title:!0},ns={ol:!0,ul:!0},Yt=1,Xt=2,Ct=4;function Pr(r,e,t){return e!=null?(e?Yt:0)|(e==="full"?Xt:0):r&&r.whitespace=="pre"?Yt|Xt:t&~Ct}class Vt{constructor(e,t,n,i,s,o,l){this.type=e,this.attrs=t,this.marks=n,this.pendingMarks=i,this.solid=s,this.options=l,this.content=[],this.activeMarks=I.none,this.stashMarks=[],this.match=o||(l&Ct?null:e.contentMatch)}findWrapping(e){if(!this.match){if(!this.type)return[];let t=this.type.contentMatch.fillBefore(b.from(e));if(t)this.match=this.type.contentMatch.matchFragment(t);else{let n=this.type.contentMatch,i;return(i=n.findWrapping(e.type))?(this.match=n,i):null}}return this.match.findWrapping(e.type)}finish(e){if(!(this.options&Yt)){let n=this.content[this.content.length-1],i;if(n&&n.isText&&(i=/[ \t\r\n\u000c]+$/.exec(n.text))){let s=n;n.text.length==i[0].length?this.content.pop():this.content[this.content.length-1]=s.withText(s.text.slice(0,s.text.length-i[0].length))}}let t=b.from(this.content);return!e&&this.match&&(t=t.append(this.match.fillBefore(b.empty,!0))),this.type?this.type.create(this.attrs,t,this.marks):t}popFromStashMark(e){for(let t=this.stashMarks.length-1;t>=0;t--)if(e.eq(this.stashMarks[t]))return this.stashMarks.splice(t,1)[0]}applyPending(e){for(let t=0,n=this.pendingMarks;tthis.addAll(e)),o&&this.sync(l),this.needsBlock=a}else this.withStyleRules(e,()=>{this.addElementByRule(e,s,s.consuming===!1?i:void 0)})}leafFallback(e){e.nodeName=="BR"&&this.top.type&&this.top.type.inlineContent&&this.addTextNode(e.ownerDocument.createTextNode(` +`))}ignoreFallback(e){e.nodeName=="BR"&&(!this.top.type||!this.top.type.inlineContent)&&this.findPlace(this.parser.schema.text("-"))}readStyles(e){let t=I.none,n=I.none;for(let i=0;i{o.clearMark(l)&&(n=l.addToSet(n))}):t=this.parser.schema.marks[o.mark].create(o.attrs).addToSet(t),o.consuming===!1)s=o;else break}return[t,n]}addElementByRule(e,t,n){let i,s,o;t.node?(s=this.parser.schema.nodes[t.node],s.isLeaf?this.insertNode(s.create(t.attrs))||this.leafFallback(e):i=this.enter(s,t.attrs||null,t.preserveWhitespace)):(o=this.parser.schema.marks[t.mark].create(t.attrs),this.addPendingMark(o));let l=this.top;if(s&&s.isLeaf)this.findInside(e);else if(n)this.addElement(e,n);else if(t.getContent)this.findInside(e),t.getContent(e,this.parser.schema).forEach(a=>this.insertNode(a));else{let a=e;typeof t.contentElement=="string"?a=e.querySelector(t.contentElement):typeof t.contentElement=="function"?a=t.contentElement(e):t.contentElement&&(a=t.contentElement),this.findAround(e,a,!0),this.addAll(a)}i&&this.sync(l)&&this.open--,o&&this.removePendingMark(o,l)}addAll(e,t,n){let i=t||0;for(let s=t?e.childNodes[t]:e.firstChild,o=n==null?null:e.childNodes[n];s!=o;s=s.nextSibling,++i)this.findAtPoint(e,i),this.addDOM(s);this.findAtPoint(e,i)}findPlace(e){let t,n;for(let i=this.open;i>=0;i--){let s=this.nodes[i],o=s.findWrapping(e);if(o&&(!t||t.length>o.length)&&(t=o,n=s,!o.length)||s.solid)break}if(!t)return!1;this.sync(n);for(let i=0;ithis.open){for(;t>this.open;t--)this.nodes[t-1].content.push(this.nodes[t].finish(e));this.nodes.length=this.open+1}}finish(){return this.open=0,this.closeExtra(this.isOpen),this.nodes[0].finish(this.isOpen||this.options.topOpen)}sync(e){for(let t=this.open;t>=0;t--)if(this.nodes[t]==e)return this.open=t,!0;return!1}get currentPos(){this.closeExtra();let e=0;for(let t=this.open;t>=0;t--){let n=this.nodes[t].content;for(let i=n.length-1;i>=0;i--)e+=n[i].nodeSize;t&&e++}return e}findAtPoint(e,t){if(this.find)for(let n=0;n-1)return e.split(/\s*\|\s*/).some(this.matchesContext,this);let t=e.split("/"),n=this.options.context,i=!this.isOpen&&(!n||n.parent.type==this.nodes[0].type),s=-(n?n.depth+1:0)+(i?0:1),o=(l,a)=>{for(;l>=0;l--){let c=t[l];if(c==""){if(l==t.length-1||l==0)continue;for(;a>=s;a--)if(o(l-1,a))return!0;return!1}else{let d=a>0||a==0&&i?this.nodes[a].type:n&&a>=s?n.node(a-s).type:null;if(!d||d.name!=c&&d.groups.indexOf(c)==-1)return!1;a--}}return!0};return o(t.length-1,this.open)}textblockFromContext(){let e=this.options.context;if(e)for(let t=e.depth;t>=0;t--){let n=e.node(t).contentMatchAt(e.indexAfter(t)).defaultType;if(n&&n.isTextblock&&n.defaultAttrs)return n}for(let t in this.parser.schema.nodes){let n=this.parser.schema.nodes[t];if(n.isTextblock&&n.defaultAttrs)return n}}addPendingMark(e){let t=rl(e,this.top.pendingMarks);t&&this.top.stashMarks.push(t),this.top.pendingMarks=e.addToSet(this.top.pendingMarks)}removePendingMark(e,t){for(let n=this.open;n>=0;n--){let i=this.nodes[n];if(i.pendingMarks.lastIndexOf(e)>-1)i.pendingMarks=e.removeFromSet(i.pendingMarks);else{i.activeMarks=e.removeFromSet(i.activeMarks);let o=i.popFromStashMark(e);o&&i.type&&i.type.allowsMarkType(o.type)&&(i.activeMarks=o.addToSet(i.activeMarks))}if(i==t)break}}}function Qo(r){for(let e=r.firstChild,t=null;e;e=e.nextSibling){let n=e.nodeType==1?e.nodeName.toLowerCase():null;n&&ns.hasOwnProperty(n)&&t?(t.appendChild(e),e=t):n=="li"?t=e:n&&(t=null)}}function el(r,e){return(r.matches||r.msMatchesSelector||r.webkitMatchesSelector||r.mozMatchesSelector).call(r,e)}function tl(r){let e=/\s*([\w-]+)\s*:\s*([^;]+)/g,t,n=[];for(;t=e.exec(r);)n.push(t[1],t[2].trim());return n}function Lr(r){let e={};for(let t in r)e[t]=r[t];return e}function nl(r,e){let t=e.schema.nodes;for(let n in t){let i=t[n];if(!i.allowsMarkType(r))continue;let s=[],o=l=>{s.push(l);for(let a=0;a{if(s.length||o.marks.length){let l=0,a=0;for(;l=0;i--){let s=this.serializeMark(e.marks[i],e.isInline,t);s&&((s.contentDOM||s.dom).appendChild(n),n=s.dom)}return n}serializeMark(e,t,n={}){let i=this.marks[e.type.name];return i&&ke.renderSpec(Tn(n),i(e,t))}static renderSpec(e,t,n=null){if(typeof t=="string")return{dom:e.createTextNode(t)};if(t.nodeType!=null)return{dom:t};if(t.dom&&t.dom.nodeType!=null)return t;let i=t[0],s=i.indexOf(" ");s>0&&(n=i.slice(0,s),i=i.slice(s+1));let o,l=n?e.createElementNS(n,i):e.createElement(i),a=t[1],c=1;if(a&&typeof a=="object"&&a.nodeType==null&&!Array.isArray(a)){c=2;for(let d in a)if(a[d]!=null){let u=d.indexOf(" ");u>0?l.setAttributeNS(d.slice(0,u),d.slice(u+1),a[d]):l.setAttribute(d,a[d])}}for(let d=c;dc)throw new RangeError("Content hole must be the only child of its parent node");return{dom:l,contentDOM:l}}else{let{dom:f,contentDOM:h}=ke.renderSpec(e,u,n);if(l.appendChild(f),h){if(o)throw new RangeError("Multiple content holes");o=h}}}return{dom:l,contentDOM:o}}static fromSchema(e){return e.cached.domSerializer||(e.cached.domSerializer=new ke(this.nodesFromSchema(e),this.marksFromSchema(e)))}static nodesFromSchema(e){let t=zr(e.nodes);return t.text||(t.text=n=>n.text),t}static marksFromSchema(e){return zr(e.marks)}}function zr(r){let e={};for(let t in r){let n=r[t].spec.toDOM;n&&(e[t]=n)}return e}function Tn(r){return r.document||window.document}const rs=65535,is=Math.pow(2,16);function il(r,e){return r+e*is}function Fr(r){return r&rs}function sl(r){return(r-(r&rs))/is}const ss=1,ls=2,_t=4,as=8;class Un{constructor(e,t,n){this.pos=e,this.delInfo=t,this.recover=n}get deleted(){return(this.delInfo&as)>0}get deletedBefore(){return(this.delInfo&(ss|_t))>0}get deletedAfter(){return(this.delInfo&(ls|_t))>0}get deletedAcross(){return(this.delInfo&_t)>0}}class oe{constructor(e,t=!1){if(this.ranges=e,this.inverted=t,!e.length&&oe.empty)return oe.empty}recover(e){let t=0,n=Fr(e);if(!this.inverted)for(let i=0;ie)break;let c=this.ranges[l+s],d=this.ranges[l+o],u=a+c;if(e<=u){let f=c?e==a?-1:e==u?1:t:t,h=a+i+(f<0?0:d);if(n)return h;let p=e==(t<0?a:u)?null:il(l/3,e-a),m=e==a?ls:e==u?ss:_t;return(t<0?e!=a:e!=u)&&(m|=as),new Un(h,m,p)}i+=d-c}return n?e+i:new Un(e+i,0,null)}touches(e,t){let n=0,i=Fr(t),s=this.inverted?2:1,o=this.inverted?1:2;for(let l=0;le)break;let c=this.ranges[l+s],d=a+c;if(e<=d&&l==i*3)return!0;n+=this.ranges[l+o]-c}return!1}forEach(e){let t=this.inverted?2:1,n=this.inverted?1:2;for(let i=0,s=0;i=0;t--){let i=e.getMirror(t);this.appendMap(e.maps[t].invert(),i!=null&&i>t?n-i-1:void 0)}}invert(){let e=new lt;return e.appendMappingInverted(this),e}map(e,t=1){if(this.mirror)return this._map(e,t,!0);for(let n=this.from;ns&&a!o.isAtom||!l.type.allowsMarkType(this.mark.type)?o:o.mark(this.mark.addToSet(o.marks)),i),t.openStart,t.openEnd);return F.fromReplace(e,this.from,this.to,s)}invert(){return new xe(this.from,this.to,this.mark)}map(e){let t=e.mapResult(this.from,1),n=e.mapResult(this.to,-1);return t.deleted&&n.deleted||t.pos>=n.pos?null:new De(t.pos,n.pos,this.mark)}merge(e){return e instanceof De&&e.mark.eq(this.mark)&&this.from<=e.to&&this.to>=e.from?new De(Math.min(this.from,e.from),Math.max(this.to,e.to),this.mark):null}toJSON(){return{stepType:"addMark",mark:this.mark.toJSON(),from:this.from,to:this.to}}static fromJSON(e,t){if(typeof t.from!="number"||typeof t.to!="number")throw new RangeError("Invalid input for AddMarkStep.fromJSON");return new De(t.from,t.to,e.markFromJSON(t.mark))}}X.jsonID("addMark",De);class xe extends X{constructor(e,t,n){super(),this.from=e,this.to=t,this.mark=n}apply(e){let t=e.slice(this.from,this.to),n=new k(ur(t.content,i=>i.mark(this.mark.removeFromSet(i.marks)),e),t.openStart,t.openEnd);return F.fromReplace(e,this.from,this.to,n)}invert(){return new De(this.from,this.to,this.mark)}map(e){let t=e.mapResult(this.from,1),n=e.mapResult(this.to,-1);return t.deleted&&n.deleted||t.pos>=n.pos?null:new xe(t.pos,n.pos,this.mark)}merge(e){return e instanceof xe&&e.mark.eq(this.mark)&&this.from<=e.to&&this.to>=e.from?new xe(Math.min(this.from,e.from),Math.max(this.to,e.to),this.mark):null}toJSON(){return{stepType:"removeMark",mark:this.mark.toJSON(),from:this.from,to:this.to}}static fromJSON(e,t){if(typeof t.from!="number"||typeof t.to!="number")throw new RangeError("Invalid input for RemoveMarkStep.fromJSON");return new xe(t.from,t.to,e.markFromJSON(t.mark))}}X.jsonID("removeMark",xe);class Ie extends X{constructor(e,t){super(),this.pos=e,this.mark=t}apply(e){let t=e.nodeAt(this.pos);if(!t)return F.fail("No node at mark step's position");let n=t.type.create(t.attrs,null,this.mark.addToSet(t.marks));return F.fromReplace(e,this.pos,this.pos+1,new k(b.from(n),0,t.isLeaf?0:1))}invert(e){let t=e.nodeAt(this.pos);if(t){let n=this.mark.addToSet(t.marks);if(n.length==t.marks.length){for(let i=0;in.pos?null:new H(t.pos,n.pos,i,s,this.slice,this.insert,this.structure)}toJSON(){let e={stepType:"replaceAround",from:this.from,to:this.to,gapFrom:this.gapFrom,gapTo:this.gapTo,insert:this.insert};return this.slice.size&&(e.slice=this.slice.toJSON()),this.structure&&(e.structure=!0),e}static fromJSON(e,t){if(typeof t.from!="number"||typeof t.to!="number"||typeof t.gapFrom!="number"||typeof t.gapTo!="number"||typeof t.insert!="number")throw new RangeError("Invalid input for ReplaceAroundStep.fromJSON");return new H(t.from,t.to,t.gapFrom,t.gapTo,k.fromJSON(e,t.slice),t.insert,!!t.structure)}}X.jsonID("replaceAround",H);function Gn(r,e,t){let n=r.resolve(e),i=t-e,s=n.depth;for(;i>0&&s>0&&n.indexAfter(s)==n.node(s).childCount;)s--,i--;if(i>0){let o=n.node(s).maybeChild(n.indexAfter(s));for(;i>0;){if(!o||o.isLeaf)return!0;o=o.firstChild,i--}}return!1}function ol(r,e,t,n){let i=[],s=[],o,l;r.doc.nodesBetween(e,t,(a,c,d)=>{if(!a.isInline)return;let u=a.marks;if(!n.isInSet(u)&&d.type.allowsMarkType(n.type)){let f=Math.max(c,e),h=Math.min(c+a.nodeSize,t),p=n.addToSet(u);for(let m=0;mr.step(a)),s.forEach(a=>r.step(a))}function ll(r,e,t,n){let i=[],s=0;r.doc.nodesBetween(e,t,(o,l)=>{if(!o.isInline)return;s++;let a=null;if(n instanceof ln){let c=o.marks,d;for(;d=n.isInSet(c);)(a||(a=[])).push(d),c=d.removeFromSet(c)}else n?n.isInSet(o.marks)&&(a=[n]):a=o.marks;if(a&&a.length){let c=Math.min(l+o.nodeSize,t);for(let d=0;dr.step(new xe(o.from,o.to,o.style)))}function al(r,e,t,n=t.contentMatch){let i=r.doc.nodeAt(e),s=[],o=e+1;for(let l=0;l=0;l--)r.step(s[l])}function cl(r,e,t){return(e==0||r.canReplace(e,r.childCount))&&(t==r.childCount||r.canReplace(0,t))}function bt(r){let t=r.parent.content.cutByIndex(r.startIndex,r.endIndex);for(let n=r.depth;;--n){let i=r.$from.node(n),s=r.$from.index(n),o=r.$to.indexAfter(n);if(nt;p--)m||n.index(p)>0?(m=!0,d=b.from(n.node(p).copy(d)),u++):a--;let f=b.empty,h=0;for(let p=s,m=!1;p>t;p--)m||i.after(p+1)=0;o--){if(n.size){let l=t[o].type.contentMatch.matchFragment(n);if(!l||!l.validEnd)throw new RangeError("Wrapper type given to Transform.wrap does not form valid content of its parent wrapper")}n=b.from(t[o].type.create(t[o].attrs,n))}let i=e.start,s=e.end;r.step(new H(i,s,i,s,new k(n,0,0),t.length,!0))}function pl(r,e,t,n,i){if(!n.isTextblock)throw new RangeError("Type given to setBlockType should be a textblock");let s=r.steps.length;r.doc.nodesBetween(e,t,(o,l)=>{if(o.isTextblock&&!o.hasMarkup(n,i)&&ml(r.doc,r.mapping.slice(s).map(l),n)){r.clearIncompatible(r.mapping.slice(s).map(l,1),n);let a=r.mapping.slice(s),c=a.map(l,1),d=a.map(l+o.nodeSize,1);return r.step(new H(c,d,c+1,d-1,new k(b.from(n.create(i,null,o.marks)),0,0),1,!0)),!1}})}function ml(r,e,t){let n=r.resolve(e),i=n.index();return n.parent.canReplaceWith(i,i+1,t)}function gl(r,e,t,n,i){let s=r.doc.nodeAt(e);if(!s)throw new RangeError("No node at given position");t||(t=s.type);let o=t.create(n,null,i||s.marks);if(s.isLeaf)return r.replaceWith(e,e+s.nodeSize,o);if(!t.validContent(s.content))throw new RangeError("Invalid content for node type "+t.name);r.step(new H(e,e+s.nodeSize,e+1,e+s.nodeSize-1,new k(b.from(o),0,0),1,!0))}function at(r,e,t=1,n){let i=r.resolve(e),s=i.depth-t,o=n&&n[n.length-1]||i.parent;if(s<0||i.parent.type.spec.isolating||!i.parent.canReplace(i.index(),i.parent.childCount)||!o.type.validContent(i.parent.content.cutByIndex(i.index(),i.parent.childCount)))return!1;for(let c=i.depth-1,d=t-2;c>s;c--,d--){let u=i.node(c),f=i.index(c);if(u.type.spec.isolating)return!1;let h=u.content.cutByIndex(f,u.childCount),p=n&&n[d+1];p&&(h=h.replaceChild(0,p.type.create(p.attrs)));let m=n&&n[d]||u;if(!u.canReplace(f+1,u.childCount)||!m.type.validContent(h))return!1}let l=i.indexAfter(s),a=n&&n[0];return i.node(s).canReplaceWith(l,l,a?a.type:i.node(s+1).type)}function yl(r,e,t=1,n){let i=r.doc.resolve(e),s=b.empty,o=b.empty;for(let l=i.depth,a=i.depth-t,c=t-1;l>a;l--,c--){s=b.from(i.node(l).copy(s));let d=n&&n[c];o=b.from(d?d.type.create(d.attrs,o):i.node(l).copy(o))}r.step(new W(e,e,new k(s.append(o),t,t),!0))}function Ve(r,e){let t=r.resolve(e),n=t.index();return cs(t.nodeBefore,t.nodeAfter)&&t.parent.canReplace(n,n+1)}function cs(r,e){return!!(r&&e&&!r.isLeaf&&r.canAppend(e))}function an(r,e,t=-1){let n=r.resolve(e);for(let i=n.depth;;i--){let s,o,l=n.index(i);if(i==n.depth?(s=n.nodeBefore,o=n.nodeAfter):t>0?(s=n.node(i+1),l++,o=n.node(i).maybeChild(l)):(s=n.node(i).maybeChild(l-1),o=n.node(i+1)),s&&!s.isTextblock&&cs(s,o)&&n.node(i).canReplace(l,l+1))return e;if(i==0)break;e=t<0?n.before(i):n.after(i)}}function bl(r,e,t){let n=new W(e-t,e+t,k.empty,!0);r.step(n)}function kl(r,e,t){let n=r.resolve(e);if(n.parent.canReplaceWith(n.index(),n.index(),t))return e;if(n.parentOffset==0)for(let i=n.depth-1;i>=0;i--){let s=n.index(i);if(n.node(i).canReplaceWith(s,s,t))return n.before(i+1);if(s>0)return null}if(n.parentOffset==n.parent.content.size)for(let i=n.depth-1;i>=0;i--){let s=n.indexAfter(i);if(n.node(i).canReplaceWith(s,s,t))return n.after(i+1);if(s=0;o--){let l=o==n.depth?0:n.pos<=(n.start(o+1)+n.end(o+1))/2?-1:1,a=n.index(o)+(l>0?1:0),c=n.node(o),d=!1;if(s==1)d=c.canReplace(a,a,i);else{let u=c.contentMatchAt(a).findWrapping(i.firstChild.type);d=u&&c.canReplaceWith(a,a,u[0])}if(d)return l==0?n.pos:l<0?n.before(o+1):n.after(o+1)}return null}function hr(r,e,t=e,n=k.empty){if(e==t&&!n.size)return null;let i=r.resolve(e),s=r.resolve(t);return us(i,s,n)?new W(e,t,n):new xl(i,s,n).fit()}function us(r,e,t){return!t.openStart&&!t.openEnd&&r.start()==e.start()&&r.parent.canReplace(r.index(),e.index(),t.content)}class xl{constructor(e,t,n){this.$from=e,this.$to=t,this.unplaced=n,this.frontier=[],this.placed=b.empty;for(let i=0;i<=e.depth;i++){let s=e.node(i);this.frontier.push({type:s.type,match:s.contentMatchAt(e.indexAfter(i))})}for(let i=e.depth;i>0;i--)this.placed=b.from(e.node(i).copy(this.placed))}get depth(){return this.frontier.length-1}fit(){for(;this.unplaced.size;){let c=this.findFittable();c?this.placeNodes(c):this.openMore()||this.dropNode()}let e=this.mustMoveInline(),t=this.placed.size-this.depth-this.$from.depth,n=this.$from,i=this.close(e<0?this.$to:n.doc.resolve(e));if(!i)return null;let s=this.placed,o=n.depth,l=i.depth;for(;o&&l&&s.childCount==1;)s=s.firstChild.content,o--,l--;let a=new k(s,o,l);return e>-1?new H(n.pos,e,this.$to.pos,this.$to.end(),a,t):a.size||n.pos!=this.$to.pos?new W(n.pos,i.pos,a):null}findFittable(){let e=this.unplaced.openStart;for(let t=this.unplaced.content,n=0,i=this.unplaced.openEnd;n1&&(i=0),s.type.spec.isolating&&i<=n){e=n;break}t=s.content}for(let t=1;t<=2;t++)for(let n=t==1?e:this.unplaced.openStart;n>=0;n--){let i,s=null;n?(s=vn(this.unplaced.content,n-1).firstChild,i=s.content):i=this.unplaced.content;let o=i.firstChild;for(let l=this.depth;l>=0;l--){let{type:a,match:c}=this.frontier[l],d,u=null;if(t==1&&(o?c.matchType(o.type)||(u=c.fillBefore(b.from(o),!1)):s&&a.compatibleContent(s.type)))return{sliceDepth:n,frontierDepth:l,parent:s,inject:u};if(t==2&&o&&(d=c.findWrapping(o.type)))return{sliceDepth:n,frontierDepth:l,parent:s,wrap:d};if(s&&c.matchType(s.type))break}}}openMore(){let{content:e,openStart:t,openEnd:n}=this.unplaced,i=vn(e,t);return!i.childCount||i.firstChild.isLeaf?!1:(this.unplaced=new k(e,t+1,Math.max(n,i.size+t>=e.size-n?t+1:0)),!0)}dropNode(){let{content:e,openStart:t,openEnd:n}=this.unplaced,i=vn(e,t);if(i.childCount<=1&&t>0){let s=e.size-t<=t+i.size;this.unplaced=new k(xt(e,t-1,1),t-1,s?t-1:n)}else this.unplaced=new k(xt(e,t,1),t,n)}placeNodes({sliceDepth:e,frontierDepth:t,parent:n,inject:i,wrap:s}){for(;this.depth>t;)this.closeFrontierNode();if(s)for(let m=0;m1||a==0||m.content.size)&&(u=g,d.push(fs(m.mark(f.allowedMarks(m.marks)),c==1?a:0,c==l.childCount?h:-1)))}let p=c==l.childCount;p||(h=-1),this.placed=St(this.placed,t,b.from(d)),this.frontier[t].match=u,p&&h<0&&n&&n.type==this.frontier[this.depth].type&&this.frontier.length>1&&this.closeFrontierNode();for(let m=0,g=l;m1&&i==this.$to.end(--n);)++i;return i}findCloseLevel(e){e:for(let t=Math.min(this.depth,e.depth);t>=0;t--){let{match:n,type:i}=this.frontier[t],s=t=0;l--){let{match:a,type:c}=this.frontier[l],d=An(e,l,c,a,!0);if(!d||d.childCount)continue e}return{depth:t,fit:o,move:s?e.doc.resolve(e.after(t+1)):e}}}}close(e){let t=this.findCloseLevel(e);if(!t)return null;for(;this.depth>t.depth;)this.closeFrontierNode();t.fit.childCount&&(this.placed=St(this.placed,t.depth,t.fit)),e=t.move;for(let n=t.depth+1;n<=e.depth;n++){let i=e.node(n),s=i.type.contentMatch.fillBefore(i.content,!0,e.index(n));this.openFrontierNode(i.type,i.attrs,s)}return e}openFrontierNode(e,t=null,n){let i=this.frontier[this.depth];i.match=i.match.matchType(e),this.placed=St(this.placed,this.depth,b.from(e.create(t,n))),this.frontier.push({type:e,match:e.contentMatch})}closeFrontierNode(){let t=this.frontier.pop().match.fillBefore(b.empty,!0);t.childCount&&(this.placed=St(this.placed,this.frontier.length,t))}}function xt(r,e,t){return e==0?r.cutByIndex(t,r.childCount):r.replaceChild(0,r.firstChild.copy(xt(r.firstChild.content,e-1,t)))}function St(r,e,t){return e==0?r.append(t):r.replaceChild(r.childCount-1,r.lastChild.copy(St(r.lastChild.content,e-1,t)))}function vn(r,e){for(let t=0;t1&&(n=n.replaceChild(0,fs(n.firstChild,e-1,n.childCount==1?t-1:0))),e>0&&(n=r.type.contentMatch.fillBefore(n).append(n),t<=0&&(n=n.append(r.type.contentMatch.matchFragment(n).fillBefore(b.empty,!0)))),r.copy(n)}function An(r,e,t,n,i){let s=r.node(e),o=i?r.indexAfter(e):r.index(e);if(o==s.childCount&&!t.compatibleContent(s.type))return null;let l=n.fillBefore(s.content,!0,o);return l&&!Sl(t,s.content,o)?l:null}function Sl(r,e,t){for(let n=t;n0;f--,h--){let p=i.node(f).type.spec;if(p.defining||p.definingAsContext||p.isolating)break;o.indexOf(f)>-1?l=f:i.before(f)==h&&o.splice(1,0,-f)}let a=o.indexOf(l),c=[],d=n.openStart;for(let f=n.content,h=0;;h++){let p=f.firstChild;if(c.push(p),h==n.openStart)break;f=p.content}for(let f=d-1;f>=0;f--){let h=c[f],p=Ml(h.type);if(p&&!h.sameMarkup(i.node(Math.abs(l)-1)))d=f;else if(p||!h.type.isTextblock)break}for(let f=n.openStart;f>=0;f--){let h=(f+d+1)%(n.openStart+1),p=c[h];if(p)for(let m=0;m=0&&(r.replace(e,t,n),!(r.steps.length>u));f--){let h=o[f];h<0||(e=i.before(h),t=s.after(h))}}function hs(r,e,t,n,i){if(en){let s=i.contentMatchAt(0),o=s.fillBefore(r).append(r);r=o.append(s.matchFragment(o).fillBefore(b.empty,!0))}return r}function Cl(r,e,t,n){if(!n.isInline&&e==t&&r.doc.resolve(e).parent.content.size){let i=kl(r.doc,e,n.type);i!=null&&(e=t=i)}r.replaceRange(e,t,new k(b.from(n),0,0))}function Tl(r,e,t){let n=r.doc.resolve(e),i=r.doc.resolve(t),s=ps(n,i);for(let o=0;o0&&(a||n.node(l-1).canReplace(n.index(l-1),i.indexAfter(l-1))))return r.delete(n.before(l),i.after(l))}for(let o=1;o<=n.depth&&o<=i.depth;o++)if(e-n.start(o)==n.depth-o&&t>n.end(o)&&i.end(o)-t!=i.depth-o)return r.delete(n.before(o),t);r.delete(e,t)}function ps(r,e){let t=[],n=Math.min(r.depth,e.depth);for(let i=n;i>=0;i--){let s=r.start(i);if(se.pos+(e.depth-i)||r.node(i).type.spec.isolating||e.node(i).type.spec.isolating)break;(s==e.start(i)||i==r.depth&&i==e.depth&&r.parent.inlineContent&&e.parent.inlineContent&&i&&e.start(i-1)==s-1)&&t.push(i)}return t}class ct extends X{constructor(e,t,n){super(),this.pos=e,this.attr=t,this.value=n}apply(e){let t=e.nodeAt(this.pos);if(!t)return F.fail("No node at attribute step's position");let n=Object.create(null);for(let s in t.attrs)n[s]=t.attrs[s];n[this.attr]=this.value;let i=t.type.create(n,null,t.marks);return F.fromReplace(e,this.pos,this.pos+1,new k(b.from(i),0,t.isLeaf?0:1))}getMap(){return oe.empty}invert(e){return new ct(this.pos,this.attr,e.nodeAt(this.pos).attrs[this.attr])}map(e){let t=e.mapResult(this.pos,1);return t.deletedAfter?null:new ct(t.pos,this.attr,this.value)}toJSON(){return{stepType:"attr",pos:this.pos,attr:this.attr,value:this.value}}static fromJSON(e,t){if(typeof t.pos!="number"||typeof t.attr!="string")throw new RangeError("Invalid input for AttrStep.fromJSON");return new ct(t.pos,t.attr,t.value)}}X.jsonID("attr",ct);class At extends X{constructor(e,t){super(),this.attr=e,this.value=t}apply(e){let t=Object.create(null);for(let i in e.attrs)t[i]=e.attrs[i];t[this.attr]=this.value;let n=e.type.create(t,e.content,e.marks);return F.ok(n)}getMap(){return oe.empty}invert(e){return new At(this.attr,e.attrs[this.attr])}map(e){return this}toJSON(){return{stepType:"docAttr",attr:this.attr,value:this.value}}static fromJSON(e,t){if(typeof t.attr!="string")throw new RangeError("Invalid input for DocAttrStep.fromJSON");return new At(t.attr,t.value)}}X.jsonID("docAttr",At);let ht=class extends Error{};ht=function r(e){let t=Error.call(this,e);return t.__proto__=r.prototype,t};ht.prototype=Object.create(Error.prototype);ht.prototype.constructor=ht;ht.prototype.name="TransformError";class Ol{constructor(e){this.doc=e,this.steps=[],this.docs=[],this.mapping=new lt}get before(){return this.docs.length?this.docs[0]:this.doc}step(e){let t=this.maybeStep(e);if(t.failed)throw new ht(t.failed);return this}maybeStep(e){let t=e.apply(this.doc);return t.failed||this.addStep(e,t.doc),t}get docChanged(){return this.steps.length>0}addStep(e,t){this.docs.push(this.doc),this.steps.push(e),this.mapping.appendMap(e.getMap()),this.doc=t}replace(e,t=e,n=k.empty){let i=hr(this.doc,e,t,n);return i&&this.step(i),this}replaceWith(e,t,n){return this.replace(e,t,new k(b.from(n),0,0))}delete(e,t){return this.replace(e,t,k.empty)}insert(e,t){return this.replaceWith(e,e,t)}replaceRange(e,t,n){return wl(this,e,t,n),this}replaceRangeWith(e,t,n){return Cl(this,e,t,n),this}deleteRange(e,t){return Tl(this,e,t),this}lift(e,t){return dl(this,e,t),this}join(e,t=1){return bl(this,e,t),this}wrap(e,t){return hl(this,e,t),this}setBlockType(e,t=e,n,i=null){return pl(this,e,t,n,i),this}setNodeMarkup(e,t,n=null,i){return gl(this,e,t,n,i),this}setNodeAttribute(e,t,n){return this.step(new ct(e,t,n)),this}setDocAttribute(e,t){return this.step(new At(e,t)),this}addNodeMark(e,t){return this.step(new Ie(e,t)),this}removeNodeMark(e,t){if(!(t instanceof I)){let n=this.doc.nodeAt(e);if(!n)throw new RangeError("No node at position "+e);if(t=t.isInSet(n.marks),!t)return this}return this.step(new ft(e,t)),this}split(e,t=1,n){return yl(this,e,t,n),this}addMark(e,t,n){return ol(this,e,t,n),this}removeMark(e,t,n){return ll(this,e,t,n),this}clearIncompatible(e,t,n){return al(this,e,t,n),this}}const Nn=Object.create(null);class v{constructor(e,t,n){this.$anchor=e,this.$head=t,this.ranges=n||[new vl(e.min(t),e.max(t))]}get anchor(){return this.$anchor.pos}get head(){return this.$head.pos}get from(){return this.$from.pos}get to(){return this.$to.pos}get $from(){return this.ranges[0].$from}get $to(){return this.ranges[0].$to}get empty(){let e=this.ranges;for(let t=0;t=0;s--){let o=t<0?rt(e.node(0),e.node(s),e.before(s+1),e.index(s),t,n):rt(e.node(0),e.node(s),e.after(s+1),e.index(s)+1,t,n);if(o)return o}return null}static near(e,t=1){return this.findFrom(e,t)||this.findFrom(e,-t)||new pe(e.node(0))}static atStart(e){return rt(e,e,0,0,1)||new pe(e)}static atEnd(e){return rt(e,e,e.content.size,e.childCount,-1)||new pe(e)}static fromJSON(e,t){if(!t||!t.type)throw new RangeError("Invalid input for Selection.fromJSON");let n=Nn[t.type];if(!n)throw new RangeError(`No selection type ${t.type} defined`);return n.fromJSON(e,t)}static jsonID(e,t){if(e in Nn)throw new RangeError("Duplicate use of selection JSON ID "+e);return Nn[e]=t,t.prototype.jsonID=e,t}getBookmark(){return C.between(this.$anchor,this.$head).getBookmark()}}v.prototype.visible=!0;class vl{constructor(e,t){this.$from=e,this.$to=t}}let $r=!1;function Hr(r){!$r&&!r.parent.inlineContent&&($r=!0,console.warn("TextSelection endpoint not pointing into a node with inline content ("+r.parent.type.name+")"))}class C extends v{constructor(e,t=e){Hr(e),Hr(t),super(e,t)}get $cursor(){return this.$anchor.pos==this.$head.pos?this.$head:null}map(e,t){let n=e.resolve(t.map(this.head));if(!n.parent.inlineContent)return v.near(n);let i=e.resolve(t.map(this.anchor));return new C(i.parent.inlineContent?i:n,n)}replace(e,t=k.empty){if(super.replace(e,t),t==k.empty){let n=this.$from.marksAcross(this.$to);n&&e.ensureMarks(n)}}eq(e){return e instanceof C&&e.anchor==this.anchor&&e.head==this.head}getBookmark(){return new cn(this.anchor,this.head)}toJSON(){return{type:"text",anchor:this.anchor,head:this.head}}static fromJSON(e,t){if(typeof t.anchor!="number"||typeof t.head!="number")throw new RangeError("Invalid input for TextSelection.fromJSON");return new C(e.resolve(t.anchor),e.resolve(t.head))}static create(e,t,n=t){let i=e.resolve(t);return new this(i,n==t?i:e.resolve(n))}static between(e,t,n){let i=e.pos-t.pos;if((!n||i)&&(n=i>=0?1:-1),!t.parent.inlineContent){let s=v.findFrom(t,n,!0)||v.findFrom(t,-n,!0);if(s)t=s.$head;else return v.near(t,n)}return e.parent.inlineContent||(i==0?e=t:(e=(v.findFrom(e,-n,!0)||v.findFrom(e,n,!0)).$anchor,e.pos0?0:1);i>0?o=0;o+=i){let l=e.child(o);if(l.isAtom){if(!s&&M.isSelectable(l))return M.create(r,t-(i<0?l.nodeSize:0))}else{let a=rt(r,l,t+i,i<0?l.childCount:0,i,s);if(a)return a}t+=l.nodeSize*i}return null}function _r(r,e,t){let n=r.steps.length-1;if(n{o==null&&(o=d)}),r.setSelection(v.near(r.doc.resolve(o),t))}const jr=1,$t=2,Jr=4;class Nl extends Ol{constructor(e){super(e.doc),this.curSelectionFor=0,this.updated=0,this.meta=Object.create(null),this.time=Date.now(),this.curSelection=e.selection,this.storedMarks=e.storedMarks}get selection(){return this.curSelectionFor0}setStoredMarks(e){return this.storedMarks=e,this.updated|=$t,this}ensureMarks(e){return I.sameSet(this.storedMarks||this.selection.$from.marks(),e)||this.setStoredMarks(e),this}addStoredMark(e){return this.ensureMarks(e.addToSet(this.storedMarks||this.selection.$head.marks()))}removeStoredMark(e){return this.ensureMarks(e.removeFromSet(this.storedMarks||this.selection.$head.marks()))}get storedMarksSet(){return(this.updated&$t)>0}addStep(e,t){super.addStep(e,t),this.updated=this.updated&~$t,this.storedMarks=null}setTime(e){return this.time=e,this}replaceSelection(e){return this.selection.replace(this,e),this}replaceSelectionWith(e,t=!0){let n=this.selection;return t&&(e=e.mark(this.storedMarks||(n.empty?n.$from.marks():n.$from.marksAcross(n.$to)||I.none))),n.replaceWith(this,e),this}deleteSelection(){return this.selection.replace(this),this}insertText(e,t,n){let i=this.doc.type.schema;if(t==null)return e?this.replaceSelectionWith(i.text(e),!0):this.deleteSelection();{if(n==null&&(n=t),n=n??t,!e)return this.deleteRange(t,n);let s=this.storedMarks;if(!s){let o=this.doc.resolve(t);s=n==t?o.marks():o.marksAcross(this.doc.resolve(n))}return this.replaceRangeWith(t,n,i.text(e,s)),this.selection.empty||this.setSelection(v.near(this.selection.$to)),this}}setMeta(e,t){return this.meta[typeof e=="string"?e:e.key]=t,this}getMeta(e){return this.meta[typeof e=="string"?e:e.key]}get isGeneric(){for(let e in this.meta)return!1;return!0}scrollIntoView(){return this.updated|=Jr,this}get scrolledIntoView(){return(this.updated&Jr)>0}}function Wr(r,e){return!e||!r?r:r.bind(e)}class Mt{constructor(e,t,n){this.name=e,this.init=Wr(t.init,n),this.apply=Wr(t.apply,n)}}const El=[new Mt("doc",{init(r){return r.doc||r.schema.topNodeType.createAndFill()},apply(r){return r.doc}}),new Mt("selection",{init(r,e){return r.selection||v.atStart(e.doc)},apply(r){return r.selection}}),new Mt("storedMarks",{init(r){return r.storedMarks||null},apply(r,e,t,n){return n.selection.$cursor?r.storedMarks:null}}),new Mt("scrollToSelection",{init(){return 0},apply(r,e){return r.scrolledIntoView?e+1:e}})];class En{constructor(e,t){this.schema=e,this.plugins=[],this.pluginsByKey=Object.create(null),this.fields=El.slice(),t&&t.forEach(n=>{if(this.pluginsByKey[n.key])throw new RangeError("Adding different instances of a keyed plugin ("+n.key+")");this.plugins.push(n),this.pluginsByKey[n.key]=n,n.spec.state&&this.fields.push(new Mt(n.key,n.spec.state,n))})}}class st{constructor(e){this.config=e}get schema(){return this.config.schema}get plugins(){return this.config.plugins}apply(e){return this.applyTransaction(e).state}filterTransaction(e,t=-1){for(let n=0;nn.toJSON())),e&&typeof e=="object")for(let n in e){if(n=="doc"||n=="selection")throw new RangeError("The JSON fields `doc` and `selection` are reserved");let i=e[n],s=i.spec.state;s&&s.toJSON&&(t[n]=s.toJSON.call(i,this[i.key]))}return t}static fromJSON(e,t,n){if(!t)throw new RangeError("Invalid input for EditorState.fromJSON");if(!e.schema)throw new RangeError("Required config field 'schema' missing");let i=new En(e.schema,e.plugins),s=new st(i);return i.fields.forEach(o=>{if(o.name=="doc")s.doc=Ge.fromJSON(e.schema,t.doc);else if(o.name=="selection")s.selection=v.fromJSON(s.doc,t.selection);else if(o.name=="storedMarks")t.storedMarks&&(s.storedMarks=t.storedMarks.map(e.schema.markFromJSON));else{if(n)for(let l in n){let a=n[l],c=a.spec.state;if(a.key==o.name&&c&&c.fromJSON&&Object.prototype.hasOwnProperty.call(t,l)){s[o.name]=c.fromJSON.call(a,e,t[l],s);return}}s[o.name]=o.init(e,s)}}),s}}function ms(r,e,t){for(let n in r){let i=r[n];i instanceof Function?i=i.bind(e):n=="handleDOMEvents"&&(i=ms(i,e,{})),t[n]=i}return t}class ue{constructor(e){this.spec=e,this.props={},e.props&&ms(e.props,this,this.props),this.key=e.key?e.key.key:gs("plugin")}getState(e){return e[this.key]}}const Dn=Object.create(null);function gs(r){return r in Dn?r+"$"+ ++Dn[r]:(Dn[r]=0,r+"$")}class $e{constructor(e="key"){this.key=gs(e)}get(e){return e.config.pluginsByKey[this.key]}getState(e){return e[this.key]}}const Z=function(r){for(var e=0;;e++)if(r=r.previousSibling,!r)return e},Nt=function(r){let e=r.assignedSlot||r.parentNode;return e&&e.nodeType==11?e.host:e};let qr=null;const Te=function(r,e,t){let n=qr||(qr=document.createRange());return n.setEnd(r,t??r.nodeValue.length),n.setStart(r,e||0),n},Qe=function(r,e,t,n){return t&&(Kr(r,e,t,n,-1)||Kr(r,e,t,n,1))},Dl=/^(img|br|input|textarea|hr)$/i;function Kr(r,e,t,n,i){for(;;){if(r==t&&e==n)return!0;if(e==(i<0?0:be(r))){let s=r.parentNode;if(!s||s.nodeType!=1||mr(r)||Dl.test(r.nodeName)||r.contentEditable=="false")return!1;e=Z(r)+(i<0?0:1),r=s}else if(r.nodeType==1){if(r=r.childNodes[e+(i<0?-1:0)],r.contentEditable=="false")return!1;e=i<0?be(r):0}else return!1}}function be(r){return r.nodeType==3?r.nodeValue.length:r.childNodes.length}function Il(r,e,t){for(let n=e==0,i=e==be(r);n||i;){if(r==t)return!0;let s=Z(r);if(r=r.parentNode,!r)return!1;n=n&&s==0,i=i&&s==be(r)}}function mr(r){let e;for(let t=r;t&&!(e=t.pmViewDesc);t=t.parentNode);return e&&e.node&&e.node.isBlock&&(e.dom==r||e.contentDOM==r)}const dn=function(r){return r.focusNode&&Qe(r.focusNode,r.focusOffset,r.anchorNode,r.anchorOffset)};function je(r,e){let t=document.createEvent("Event");return t.initEvent("keydown",!0,!0),t.keyCode=r,t.key=t.code=e,t}function Rl(r){let e=r.activeElement;for(;e&&e.shadowRoot;)e=e.shadowRoot.activeElement;return e}function Pl(r,e,t){if(r.caretPositionFromPoint)try{let n=r.caretPositionFromPoint(e,t);if(n)return{node:n.offsetNode,offset:n.offset}}catch{}if(r.caretRangeFromPoint){let n=r.caretRangeFromPoint(e,t);if(n)return{node:n.startContainer,offset:n.startOffset}}}const Se=typeof navigator<"u"?navigator:null,Ur=typeof document<"u"?document:null,He=Se&&Se.userAgent||"",Yn=/Edge\/(\d+)/.exec(He),ys=/MSIE \d/.exec(He),Xn=/Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(He),re=!!(ys||Xn||Yn),Pe=ys?document.documentMode:Xn?+Xn[1]:Yn?+Yn[1]:0,me=!re&&/gecko\/(\d+)/i.test(He);me&&+(/Firefox\/(\d+)/.exec(He)||[0,0])[1];const Zn=!re&&/Chrome\/(\d+)/.exec(He),G=!!Zn,Bl=Zn?+Zn[1]:0,ee=!re&&!!Se&&/Apple Computer/.test(Se.vendor),pt=ee&&(/Mobile\/\w+/.test(He)||!!Se&&Se.maxTouchPoints>2),ae=pt||(Se?/Mac/.test(Se.platform):!1),Ll=Se?/Win/.test(Se.platform):!1,fe=/Android \d/.test(He),Bt=!!Ur&&"webkitFontSmoothing"in Ur.documentElement.style,zl=Bt?+(/\bAppleWebKit\/(\d+)/.exec(navigator.userAgent)||[0,0])[1]:0;function Fl(r){return{left:0,right:r.documentElement.clientWidth,top:0,bottom:r.documentElement.clientHeight}}function Ce(r,e){return typeof r=="number"?r:r[e]}function Vl(r){let e=r.getBoundingClientRect(),t=e.width/r.offsetWidth||1,n=e.height/r.offsetHeight||1;return{left:e.left,right:e.left+r.clientWidth*t,top:e.top,bottom:e.top+r.clientHeight*n}}function Gr(r,e,t){let n=r.someProp("scrollThreshold")||0,i=r.someProp("scrollMargin")||5,s=r.dom.ownerDocument;for(let o=t||r.dom;o;o=Nt(o)){if(o.nodeType!=1)continue;let l=o,a=l==s.body,c=a?Fl(s):Vl(l),d=0,u=0;if(e.topc.bottom-Ce(n,"bottom")&&(u=e.bottom-e.top>c.bottom-c.top?e.top+Ce(i,"top")-c.top:e.bottom-c.bottom+Ce(i,"bottom")),e.leftc.right-Ce(n,"right")&&(d=e.right-c.right+Ce(i,"right")),d||u)if(a)s.defaultView.scrollBy(d,u);else{let f=l.scrollLeft,h=l.scrollTop;u&&(l.scrollTop+=u),d&&(l.scrollLeft+=d);let p=l.scrollLeft-f,m=l.scrollTop-h;e={left:e.left-p,top:e.top-m,right:e.right-p,bottom:e.bottom-m}}if(a||/^(fixed|sticky)$/.test(getComputedStyle(o).position))break}}function $l(r){let e=r.dom.getBoundingClientRect(),t=Math.max(0,e.top),n,i;for(let s=(e.left+e.right)/2,o=t+1;o=t-20){n=l,i=a.top;break}}return{refDOM:n,refTop:i,stack:bs(r.dom)}}function bs(r){let e=[],t=r.ownerDocument;for(let n=r;n&&(e.push({dom:n,top:n.scrollTop,left:n.scrollLeft}),r!=t);n=Nt(n));return e}function Hl({refDOM:r,refTop:e,stack:t}){let n=r?r.getBoundingClientRect().top:0;ks(t,n==0?0:n-e)}function ks(r,e){for(let t=0;t=l){o=Math.max(p.bottom,o),l=Math.min(p.top,l);let m=p.left>e.left?p.left-e.left:p.right=(p.left+p.right)/2?1:0));continue}}else p.top>e.top&&!a&&p.left<=e.left&&p.right>=e.left&&(a=d,c={left:Math.max(p.left,Math.min(p.right,e.left)),top:p.top});!t&&(e.left>=p.right&&e.top>=p.top||e.left>=p.left&&e.top>=p.bottom)&&(s=u+1)}}return!t&&a&&(t=a,i=c,n=0),t&&t.nodeType==3?jl(t,i):!t||n&&t.nodeType==1?{node:r,offset:s}:xs(t,i)}function jl(r,e){let t=r.nodeValue.length,n=document.createRange();for(let i=0;i=(s.left+s.right)/2?1:0)}}return{node:r,offset:0}}function gr(r,e){return r.left>=e.left-1&&r.left<=e.right+1&&r.top>=e.top-1&&r.top<=e.bottom+1}function Jl(r,e){let t=r.parentNode;return t&&/^li$/i.test(t.nodeName)&&e.left(o.left+o.right)/2?1:-1}return r.docView.posFromDOM(n,i,s)}function ql(r,e,t,n){let i=-1;for(let s=e,o=!1;s!=r.dom;){let l=r.docView.nearestDesc(s,!0);if(!l)return null;if(l.dom.nodeType==1&&(l.node.isBlock&&l.parent&&!o||!l.contentDOM)){let a=l.dom.getBoundingClientRect();if(l.node.isBlock&&l.parent&&!o&&(o=!0,a.left>n.left||a.top>n.top?i=l.posBefore:(a.right-1?i:r.docView.posFromDOM(e,t,-1)}function Ss(r,e,t){let n=r.childNodes.length;if(n&&t.tope.top&&i++}let c;Bt&&i&&n.nodeType==1&&(c=n.childNodes[i-1]).nodeType==1&&c.contentEditable=="false"&&c.getBoundingClientRect().top>=e.top&&i--,n==r.dom&&i==n.childNodes.length-1&&n.lastChild.nodeType==1&&e.top>n.lastChild.getBoundingClientRect().bottom?l=r.state.doc.content.size:(i==0||n.nodeType!=1||n.childNodes[i-1].nodeName!="BR")&&(l=ql(r,n,i,e))}l==null&&(l=Wl(r,o,e));let a=r.docView.nearestDesc(o,!0);return{pos:l,inside:a?a.posAtStart-a.border:-1}}function Yr(r){return r.top=0&&i==n.nodeValue.length?(a--,d=1):t<0?a--:c++,kt(ve(Te(n,a,c),d),d<0)}if(!r.state.doc.resolve(e-(s||0)).parent.inlineContent){if(s==null&&i&&(t<0||i==be(n))){let a=n.childNodes[i-1];if(a.nodeType==1)return In(a.getBoundingClientRect(),!1)}if(s==null&&i=0)}if(s==null&&i&&(t<0||i==be(n))){let a=n.childNodes[i-1],c=a.nodeType==3?Te(a,be(a)-(o?0:1)):a.nodeType==1&&(a.nodeName!="BR"||!a.nextSibling)?a:null;if(c)return kt(ve(c,1),!1)}if(s==null&&i=0)}function kt(r,e){if(r.width==0)return r;let t=e?r.left:r.right;return{top:r.top,bottom:r.bottom,left:t,right:t}}function In(r,e){if(r.height==0)return r;let t=e?r.top:r.bottom;return{top:t,bottom:t,left:r.left,right:r.right}}function ws(r,e,t){let n=r.state,i=r.root.activeElement;n!=e&&r.updateState(e),i!=r.dom&&r.focus();try{return t()}finally{n!=e&&r.updateState(n),i!=r.dom&&i&&i.focus()}}function Gl(r,e,t){let n=e.selection,i=t=="up"?n.$from:n.$to;return ws(r,e,()=>{let{node:s}=r.docView.domFromPos(i.pos,t=="up"?-1:1);for(;;){let l=r.docView.nearestDesc(s,!0);if(!l)break;if(l.node.isBlock){s=l.contentDOM||l.dom;break}s=l.dom.parentNode}let o=Ms(r,i.pos,1);for(let l=s.firstChild;l;l=l.nextSibling){let a;if(l.nodeType==1)a=l.getClientRects();else if(l.nodeType==3)a=Te(l,0,l.nodeValue.length).getClientRects();else continue;for(let c=0;cd.top+1&&(t=="up"?o.top-d.top>(d.bottom-o.top)*2:d.bottom-o.bottom>(o.bottom-d.top)*2))return!1}}return!0})}const Yl=/[\u0590-\u08ac]/;function Xl(r,e,t){let{$head:n}=e.selection;if(!n.parent.isTextblock)return!1;let i=n.parentOffset,s=!i,o=i==n.parent.content.size,l=r.domSelection();return!Yl.test(n.parent.textContent)||!l.modify?t=="left"||t=="backward"?s:o:ws(r,e,()=>{let{focusNode:a,focusOffset:c,anchorNode:d,anchorOffset:u}=r.domSelectionRange(),f=l.caretBidiLevel;l.modify("move",t,"character");let h=n.depth?r.docView.domAfterPos(n.before()):r.dom,{focusNode:p,focusOffset:m}=r.domSelectionRange(),g=p&&!h.contains(p.nodeType==1?p:p.parentNode)||a==p&&c==m;try{l.collapse(d,u),a&&(a!=d||c!=u)&&l.extend&&l.extend(a,c)}catch{}return f!=null&&(l.caretBidiLevel=f),g})}let Xr=null,Zr=null,Qr=!1;function Zl(r,e,t){return Xr==e&&Zr==t?Qr:(Xr=e,Zr=t,Qr=t=="up"||t=="down"?Gl(r,e,t):Xl(r,e,t))}const de=0,ei=1,Je=2,Me=3;class Lt{constructor(e,t,n,i){this.parent=e,this.children=t,this.dom=n,this.contentDOM=i,this.dirty=de,n.pmViewDesc=this}matchesWidget(e){return!1}matchesMark(e){return!1}matchesNode(e,t,n){return!1}matchesHack(e){return!1}parseRule(){return null}stopEvent(e){return!1}get size(){let e=0;for(let t=0;tZ(this.contentDOM);else if(this.contentDOM&&this.contentDOM!=this.dom&&this.dom.contains(this.contentDOM))i=e.compareDocumentPosition(this.contentDOM)&2;else if(this.dom.firstChild){if(t==0)for(let s=e;;s=s.parentNode){if(s==this.dom){i=!1;break}if(s.previousSibling)break}if(i==null&&t==e.childNodes.length)for(let s=e;;s=s.parentNode){if(s==this.dom){i=!0;break}if(s.nextSibling)break}}return i??n>0?this.posAtEnd:this.posAtStart}nearestDesc(e,t=!1){for(let n=!0,i=e;i;i=i.parentNode){let s=this.getDesc(i),o;if(s&&(!t||s.node))if(n&&(o=s.nodeDOM)&&!(o.nodeType==1?o.contains(e.nodeType==1?e:e.parentNode):o==e))n=!1;else return s}}getDesc(e){let t=e.pmViewDesc;for(let n=t;n;n=n.parent)if(n==this)return t}posFromDOM(e,t,n){for(let i=e;i;i=i.parentNode){let s=this.getDesc(i);if(s)return s.localPosFromDOM(e,t,n)}return-1}descAt(e){for(let t=0,n=0;te||o instanceof Ts){i=e-s;break}s=l}if(i)return this.children[n].domFromPos(i-this.children[n].border,t);for(let s;n&&!(s=this.children[n-1]).size&&s instanceof Cs&&s.side>=0;n--);if(t<=0){let s,o=!0;for(;s=n?this.children[n-1]:null,!(!s||s.dom.parentNode==this.contentDOM);n--,o=!1);return s&&t&&o&&!s.border&&!s.domAtom?s.domFromPos(s.size,t):{node:this.contentDOM,offset:s?Z(s.dom)+1:0}}else{let s,o=!0;for(;s=n=d&&t<=c-a.border&&a.node&&a.contentDOM&&this.contentDOM.contains(a.contentDOM))return a.parseRange(e,t,d);e=o;for(let u=l;u>0;u--){let f=this.children[u-1];if(f.size&&f.dom.parentNode==this.contentDOM&&!f.emptyChildAt(1)){i=Z(f.dom)+1;break}e-=f.size}i==-1&&(i=0)}if(i>-1&&(c>t||l==this.children.length-1)){t=c;for(let d=l+1;dh&&ot){let h=l;l=a,a=h}let f=document.createRange();f.setEnd(a.node,a.offset),f.setStart(l.node,l.offset),c.removeAllRanges(),c.addRange(f)}}ignoreMutation(e){return!this.contentDOM&&e.type!="selection"}get contentLost(){return this.contentDOM&&this.contentDOM!=this.dom&&!this.dom.contains(this.contentDOM)}markDirty(e,t){for(let n=0,i=0;i=n:en){let l=n+s.border,a=o-s.border;if(e>=l&&t<=a){this.dirty=e==n||t==o?Je:ei,e==l&&t==a&&(s.contentLost||s.dom.parentNode!=this.contentDOM)?s.dirty=Me:s.markDirty(e-l,t-l);return}else s.dirty=s.dom==s.contentDOM&&s.dom.parentNode==this.contentDOM&&!s.children.length?Je:Me}n=o}this.dirty=Je}markParentsDirty(){let e=1;for(let t=this.parent;t;t=t.parent,e++){let n=e==1?Je:ei;t.dirty{if(!s)return i;if(s.parent)return s.parent.posBeforeChild(s)})),!t.type.spec.raw){if(o.nodeType!=1){let l=document.createElement("span");l.appendChild(o),o=l}o.contentEditable="false",o.classList.add("ProseMirror-widget")}super(e,[],o,null),this.widget=t,this.widget=t,s=this}matchesWidget(e){return this.dirty==de&&e.type.eq(this.widget.type)}parseRule(){return{ignore:!0}}stopEvent(e){let t=this.widget.spec.stopEvent;return t?t(e):!1}ignoreMutation(e){return e.type!="selection"||this.widget.spec.ignoreSelection}destroy(){this.widget.type.destroy(this.dom),super.destroy()}get domAtom(){return!0}get side(){return this.widget.type.side}}class Ql extends Lt{constructor(e,t,n,i){super(e,[],t,null),this.textDOM=n,this.text=i}get size(){return this.text.length}localPosFromDOM(e,t){return e!=this.textDOM?this.posAtStart+(t?this.size:0):this.posAtStart+t}domFromPos(e){return{node:this.textDOM,offset:e}}ignoreMutation(e){return e.type==="characterData"&&e.target.nodeValue==e.oldValue}}class et extends Lt{constructor(e,t,n,i){super(e,[],n,i),this.mark=t}static create(e,t,n,i){let s=i.nodeViews[t.type.name],o=s&&s(t,i,n);return(!o||!o.dom)&&(o=ke.renderSpec(document,t.type.spec.toDOM(t,n))),new et(e,t,o.dom,o.contentDOM||o.dom)}parseRule(){return this.dirty&Me||this.mark.type.spec.reparseInView?null:{mark:this.mark.type.name,attrs:this.mark.attrs,contentElement:this.contentDOM}}matchesMark(e){return this.dirty!=Me&&this.mark.eq(e)}markDirty(e,t){if(super.markDirty(e,t),this.dirty!=de){let n=this.parent;for(;!n.node;)n=n.parent;n.dirty0&&(s=tr(s,0,e,n));for(let l=0;l{if(!a)return o;if(a.parent)return a.parent.posBeforeChild(a)},n,i),d=c&&c.dom,u=c&&c.contentDOM;if(t.isText){if(!d)d=document.createTextNode(t.text);else if(d.nodeType!=3)throw new RangeError("Text must be rendered as a DOM text node")}else d||({dom:d,contentDOM:u}=ke.renderSpec(document,t.type.spec.toDOM(t)));!u&&!t.isText&&d.nodeName!="BR"&&(d.hasAttribute("contenteditable")||(d.contentEditable="false"),t.type.spec.draggable&&(d.draggable=!0));let f=d;return d=As(d,n,t),c?a=new ea(e,t,n,i,d,u||null,f,c,s,o+1):t.isText?new un(e,t,n,i,d,f,s):new Be(e,t,n,i,d,u||null,f,s,o+1)}parseRule(){if(this.node.type.spec.reparseInView)return null;let e={node:this.node.type.name,attrs:this.node.attrs};if(this.node.type.whitespace=="pre"&&(e.preserveWhitespace="full"),!this.contentDOM)e.getContent=()=>this.node.content;else if(!this.contentLost)e.contentElement=this.contentDOM;else{for(let t=this.children.length-1;t>=0;t--){let n=this.children[t];if(this.dom.contains(n.dom.parentNode)){e.contentElement=n.dom.parentNode;break}}e.contentElement||(e.getContent=()=>b.empty)}return e}matchesNode(e,t,n){return this.dirty==de&&e.eq(this.node)&&er(t,this.outerDeco)&&n.eq(this.innerDeco)}get size(){return this.node.nodeSize}get border(){return this.node.isLeaf?0:1}updateChildren(e,t){let n=this.node.inlineContent,i=t,s=e.composing?this.localCompositionInfo(e,t):null,o=s&&s.pos>-1?s:null,l=s&&s.pos<0,a=new na(this,o&&o.node,e);sa(this.node,this.innerDeco,(c,d,u)=>{c.spec.marks?a.syncToMarks(c.spec.marks,n,e):c.type.side>=0&&!u&&a.syncToMarks(d==this.node.childCount?I.none:this.node.child(d).marks,n,e),a.placeWidget(c,e,i)},(c,d,u,f)=>{a.syncToMarks(c.marks,n,e);let h;a.findNodeMatch(c,d,u,f)||l&&e.state.selection.from>i&&e.state.selection.to-1&&a.updateNodeAt(c,d,u,h,e)||a.updateNextNode(c,d,u,e,f,i)||a.addNode(c,d,u,e,i),i+=c.nodeSize}),a.syncToMarks([],n,e),this.node.isTextblock&&a.addTextblockHacks(),a.destroyRest(),(a.changed||this.dirty==Je)&&(o&&this.protectLocalComposition(e,o),Os(this.contentDOM,this.children,e),pt&&oa(this.dom))}localCompositionInfo(e,t){let{from:n,to:i}=e.state.selection;if(!(e.state.selection instanceof C)||nt+this.node.content.size)return null;let s=e.domSelectionRange(),o=la(s.focusNode,s.focusOffset);if(!o||!this.dom.contains(o.parentNode))return null;if(this.node.inlineContent){let l=o.nodeValue,a=aa(this.node.content,l,n-t,i-t);return a<0?null:{node:o,pos:a,text:l}}else return{node:o,pos:-1,text:""}}protectLocalComposition(e,{node:t,pos:n,text:i}){if(this.getDesc(t))return;let s=t;for(;s.parentNode!=this.contentDOM;s=s.parentNode){for(;s.previousSibling;)s.parentNode.removeChild(s.previousSibling);for(;s.nextSibling;)s.parentNode.removeChild(s.nextSibling);s.pmViewDesc&&(s.pmViewDesc=void 0)}let o=new Ql(this,s,t,i);e.input.compositionNodes.push(o),this.children=tr(this.children,n,n+i.length,e,o)}update(e,t,n,i){return this.dirty==Me||!e.sameMarkup(this.node)?!1:(this.updateInner(e,t,n,i),!0)}updateInner(e,t,n,i){this.updateOuterDeco(t),this.node=e,this.innerDeco=n,this.contentDOM&&this.updateChildren(i,this.posAtStart),this.dirty=de}updateOuterDeco(e){if(er(e,this.outerDeco))return;let t=this.nodeDOM.nodeType!=1,n=this.dom;this.dom=vs(this.dom,this.nodeDOM,Qn(this.outerDeco,this.node,t),Qn(e,this.node,t)),this.dom!=n&&(n.pmViewDesc=void 0,this.dom.pmViewDesc=this),this.outerDeco=e}selectNode(){this.nodeDOM.nodeType==1&&this.nodeDOM.classList.add("ProseMirror-selectednode"),(this.contentDOM||!this.node.type.spec.draggable)&&(this.dom.draggable=!0)}deselectNode(){this.nodeDOM.nodeType==1&&this.nodeDOM.classList.remove("ProseMirror-selectednode"),(this.contentDOM||!this.node.type.spec.draggable)&&this.dom.removeAttribute("draggable")}get domAtom(){return this.node.isAtom}}function ti(r,e,t,n,i){As(n,e,r);let s=new Be(void 0,r,e,t,n,n,n,i,0);return s.contentDOM&&s.updateChildren(i,0),s}class un extends Be{constructor(e,t,n,i,s,o,l){super(e,t,n,i,s,null,o,l,0)}parseRule(){let e=this.nodeDOM.parentNode;for(;e&&e!=this.dom&&!e.pmIsDeco;)e=e.parentNode;return{skip:e||!0}}update(e,t,n,i){return this.dirty==Me||this.dirty!=de&&!this.inParent()||!e.sameMarkup(this.node)?!1:(this.updateOuterDeco(t),(this.dirty!=de||e.text!=this.node.text)&&e.text!=this.nodeDOM.nodeValue&&(this.nodeDOM.nodeValue=e.text,i.trackWrites==this.nodeDOM&&(i.trackWrites=null)),this.node=e,this.dirty=de,!0)}inParent(){let e=this.parent.contentDOM;for(let t=this.nodeDOM;t;t=t.parentNode)if(t==e)return!0;return!1}domFromPos(e){return{node:this.nodeDOM,offset:e}}localPosFromDOM(e,t,n){return e==this.nodeDOM?this.posAtStart+Math.min(t,this.node.text.length):super.localPosFromDOM(e,t,n)}ignoreMutation(e){return e.type!="characterData"&&e.type!="selection"}slice(e,t,n){let i=this.node.cut(e,t),s=document.createTextNode(i.text);return new un(this.parent,i,this.outerDeco,this.innerDeco,s,s,n)}markDirty(e,t){super.markDirty(e,t),this.dom!=this.nodeDOM&&(e==0||t==this.nodeDOM.nodeValue.length)&&(this.dirty=Me)}get domAtom(){return!1}}class Ts extends Lt{parseRule(){return{ignore:!0}}matchesHack(e){return this.dirty==de&&this.dom.nodeName==e}get domAtom(){return!0}get ignoreForCoords(){return this.dom.nodeName=="IMG"}}class ea extends Be{constructor(e,t,n,i,s,o,l,a,c,d){super(e,t,n,i,s,o,l,c,d),this.spec=a}update(e,t,n,i){if(this.dirty==Me)return!1;if(this.spec.update){let s=this.spec.update(e,t,n);return s&&this.updateInner(e,t,n,i),s}else return!this.contentDOM&&!e.isLeaf?!1:super.update(e,t,n,i)}selectNode(){this.spec.selectNode?this.spec.selectNode():super.selectNode()}deselectNode(){this.spec.deselectNode?this.spec.deselectNode():super.deselectNode()}setSelection(e,t,n,i){this.spec.setSelection?this.spec.setSelection(e,t,n):super.setSelection(e,t,n,i)}destroy(){this.spec.destroy&&this.spec.destroy(),super.destroy()}stopEvent(e){return this.spec.stopEvent?this.spec.stopEvent(e):!1}ignoreMutation(e){return this.spec.ignoreMutation?this.spec.ignoreMutation(e):super.ignoreMutation(e)}}function Os(r,e,t){let n=r.firstChild,i=!1;for(let s=0;s>1,o=Math.min(s,e.length);for(;i-1)l>this.index&&(this.changed=!0,this.destroyBetween(this.index,l)),this.top=this.top.children[this.index];else{let a=et.create(this.top,e[s],t,n);this.top.children.splice(this.index,0,a),this.top=a,this.changed=!0}this.index=0,s++}}findNodeMatch(e,t,n,i){let s=-1,o;if(i>=this.preMatch.index&&(o=this.preMatch.matches[i-this.preMatch.index]).parent==this.top&&o.matchesNode(e,t,n))s=this.top.children.indexOf(o,this.index);else for(let l=this.index,a=Math.min(this.top.children.length,l+5);l0;){let l;for(;;)if(n){let c=t.children[n-1];if(c instanceof et)t=c,n=c.children.length;else{l=c,n--;break}}else{if(t==e)break e;n=t.parent.children.indexOf(t),t=t.parent}let a=l.node;if(a){if(a!=r.child(i-1))break;--i,s.set(l,i),o.push(l)}}return{index:i,matched:s,matches:o.reverse()}}function ia(r,e){return r.type.side-e.type.side}function sa(r,e,t,n){let i=e.locals(r),s=0;if(i.length==0){for(let c=0;cs;)l.push(i[o++]);let p=s+f.nodeSize;if(f.isText){let g=p;o!g.inline):l.slice();n(f,m,e.forChild(s,f),h),s=p}}function oa(r){if(r.nodeName=="UL"||r.nodeName=="OL"){let e=r.style.cssText;r.style.cssText=e+"; list-style: square !important",window.getComputedStyle(r).listStyle,r.style.cssText=e}}function la(r,e){for(;;){if(r.nodeType==3)return r;if(r.nodeType==1&&e>0){if(r.childNodes.length>e&&r.childNodes[e].nodeType==3)return r.childNodes[e];r=r.childNodes[e-1],e=be(r)}else if(r.nodeType==1&&e=t){if(s>=n&&a.slice(n-e.length-l,n-l)==e)return n-e.length;let c=l=0&&c+e.length+l>=t)return l+c;if(t==n&&a.length>=n+e.length-l&&a.slice(n-l,n-l+e.length)==e)return n}}return-1}function tr(r,e,t,n,i){let s=[];for(let o=0,l=0;o=t||d<=e?s.push(a):(ct&&s.push(a.slice(t-c,a.size,n)))}return s}function yr(r,e=null){let t=r.domSelectionRange(),n=r.state.doc;if(!t.focusNode)return null;let i=r.docView.nearestDesc(t.focusNode),s=i&&i.size==0,o=r.docView.posFromDOM(t.focusNode,t.focusOffset,1);if(o<0)return null;let l=n.resolve(o),a,c;if(dn(t)){for(a=l;i&&!i.node;)i=i.parent;let d=i.node;if(i&&d.isAtom&&M.isSelectable(d)&&i.parent&&!(d.isInline&&Il(t.focusNode,t.focusOffset,i.dom))){let u=i.posBefore;c=new M(o==u?l:n.resolve(u))}}else{let d=r.docView.posFromDOM(t.anchorNode,t.anchorOffset,1);if(d<0)return null;a=n.resolve(d)}if(!c){let d=e=="pointer"||r.state.selection.head{(t.anchorNode!=n||t.anchorOffset!=i)&&(e.removeEventListener("selectionchange",r.input.hideSelectionGuard),setTimeout(()=>{(!Ns(r)||r.state.selection.visible)&&r.dom.classList.remove("ProseMirror-hideselection")},20))})}function da(r){let e=r.domSelection(),t=document.createRange(),n=r.cursorWrapper.dom,i=n.nodeName=="IMG";i?t.setEnd(n.parentNode,Z(n)+1):t.setEnd(n,0),t.collapse(!1),e.removeAllRanges(),e.addRange(t),!i&&!r.state.selection.visible&&re&&Pe<=11&&(n.disabled=!0,n.disabled=!1)}function Es(r,e){if(e instanceof M){let t=r.docView.descAt(e.from);t!=r.lastSelectedViewDesc&&(oi(r),t&&t.selectNode(),r.lastSelectedViewDesc=t)}else oi(r)}function oi(r){r.lastSelectedViewDesc&&(r.lastSelectedViewDesc.parent&&r.lastSelectedViewDesc.deselectNode(),r.lastSelectedViewDesc=void 0)}function br(r,e,t,n){return r.someProp("createSelectionBetween",i=>i(r,e,t))||C.between(e,t,n)}function li(r){return r.editable&&!r.hasFocus()?!1:Ds(r)}function Ds(r){let e=r.domSelectionRange();if(!e.anchorNode)return!1;try{return r.dom.contains(e.anchorNode.nodeType==3?e.anchorNode.parentNode:e.anchorNode)&&(r.editable||r.dom.contains(e.focusNode.nodeType==3?e.focusNode.parentNode:e.focusNode))}catch{return!1}}function ua(r){let e=r.docView.domFromPos(r.state.selection.anchor,0),t=r.domSelectionRange();return Qe(e.node,e.offset,t.anchorNode,t.anchorOffset)}function nr(r,e){let{$anchor:t,$head:n}=r.selection,i=e>0?t.max(n):t.min(n),s=i.parent.inlineContent?i.depth?r.doc.resolve(e>0?i.after():i.before()):null:i;return s&&v.findFrom(s,e)}function Ae(r,e){return r.dispatch(r.state.tr.setSelection(e).scrollIntoView()),!0}function ai(r,e,t){let n=r.state.selection;if(n instanceof C)if(t.indexOf("s")>-1){let{$head:i}=n,s=i.textOffset?null:e<0?i.nodeBefore:i.nodeAfter;if(!s||s.isText||!s.isLeaf)return!1;let o=r.state.doc.resolve(i.pos+s.nodeSize*(e<0?-1:1));return Ae(r,new C(n.$anchor,o))}else if(n.empty){if(r.endOfTextblock(e>0?"forward":"backward")){let i=nr(r.state,e);return i&&i instanceof M?Ae(r,i):!1}else if(!(ae&&t.indexOf("m")>-1)){let i=n.$head,s=i.textOffset?null:e<0?i.nodeBefore:i.nodeAfter,o;if(!s||s.isText)return!1;let l=e<0?i.pos-s.nodeSize:i.pos;return s.isAtom||(o=r.docView.descAt(l))&&!o.contentDOM?M.isSelectable(s)?Ae(r,new M(e<0?r.state.doc.resolve(i.pos-s.nodeSize):i)):Bt?Ae(r,new C(r.state.doc.resolve(e<0?l:l+s.nodeSize))):!1:!1}}else return!1;else{if(n instanceof M&&n.node.isInline)return Ae(r,new C(e>0?n.$to:n.$from));{let i=nr(r.state,e);return i?Ae(r,i):!1}}}function Zt(r){return r.nodeType==3?r.nodeValue.length:r.childNodes.length}function Ot(r,e){let t=r.pmViewDesc;return t&&t.size==0&&(e<0||r.nextSibling||r.nodeName!="BR")}function nt(r,e){return e<0?fa(r):ha(r)}function fa(r){let e=r.domSelectionRange(),t=e.focusNode,n=e.focusOffset;if(!t)return;let i,s,o=!1;for(me&&t.nodeType==1&&n0){if(t.nodeType!=1)break;{let l=t.childNodes[n-1];if(Ot(l,-1))i=t,s=--n;else if(l.nodeType==3)t=l,n=t.nodeValue.length;else break}}else{if(Is(t))break;{let l=t.previousSibling;for(;l&&Ot(l,-1);)i=t.parentNode,s=Z(l),l=l.previousSibling;if(l)t=l,n=Zt(t);else{if(t=t.parentNode,t==r.dom)break;n=0}}}o?rr(r,t,n):i&&rr(r,i,s)}function ha(r){let e=r.domSelectionRange(),t=e.focusNode,n=e.focusOffset;if(!t)return;let i=Zt(t),s,o;for(;;)if(n{r.state==i&&Oe(r)},50)}function ci(r,e){let t=r.state.doc.resolve(e);if(!(G||Ll)&&t.parent.inlineContent){let i=r.coordsAtPos(e);if(e>t.start()){let s=r.coordsAtPos(e-1),o=(s.top+s.bottom)/2;if(o>i.top&&o1)return s.lefti.top&&o1)return s.left>i.left?"ltr":"rtl"}}return getComputedStyle(r.dom).direction=="rtl"?"rtl":"ltr"}function di(r,e,t){let n=r.state.selection;if(n instanceof C&&!n.empty||t.indexOf("s")>-1||ae&&t.indexOf("m")>-1)return!1;let{$from:i,$to:s}=n;if(!i.parent.inlineContent||r.endOfTextblock(e<0?"up":"down")){let o=nr(r.state,e);if(o&&o instanceof M)return Ae(r,o)}if(!i.parent.inlineContent){let o=e<0?i:s,l=n instanceof pe?v.near(o,e):v.findFrom(o,e);return l?Ae(r,l):!1}return!1}function ui(r,e){if(!(r.state.selection instanceof C))return!0;let{$head:t,$anchor:n,empty:i}=r.state.selection;if(!t.sameParent(n))return!0;if(!i)return!1;if(r.endOfTextblock(e>0?"forward":"backward"))return!0;let s=!t.textOffset&&(e<0?t.nodeBefore:t.nodeAfter);if(s&&!s.isText){let o=r.state.tr;return e<0?o.delete(t.pos-s.nodeSize,t.pos):o.delete(t.pos,t.pos+s.nodeSize),r.dispatch(o),!0}return!1}function fi(r,e,t){r.domObserver.stop(),e.contentEditable=t,r.domObserver.start()}function ga(r){if(!ee||r.state.selection.$head.parentOffset>0)return!1;let{focusNode:e,focusOffset:t}=r.domSelectionRange();if(e&&e.nodeType==1&&t==0&&e.firstChild&&e.firstChild.contentEditable=="false"){let n=e.firstChild;fi(r,n,"true"),setTimeout(()=>fi(r,n,"false"),20)}return!1}function ya(r){let e="";return r.ctrlKey&&(e+="c"),r.metaKey&&(e+="m"),r.altKey&&(e+="a"),r.shiftKey&&(e+="s"),e}function ba(r,e){let t=e.keyCode,n=ya(e);if(t==8||ae&&t==72&&n=="c")return ui(r,-1)||nt(r,-1);if(t==46&&!e.shiftKey||ae&&t==68&&n=="c")return ui(r,1)||nt(r,1);if(t==13||t==27)return!0;if(t==37||ae&&t==66&&n=="c"){let i=t==37?ci(r,r.state.selection.from)=="ltr"?-1:1:-1;return ai(r,i,n)||nt(r,i)}else if(t==39||ae&&t==70&&n=="c"){let i=t==39?ci(r,r.state.selection.from)=="ltr"?1:-1:1;return ai(r,i,n)||nt(r,i)}else{if(t==38||ae&&t==80&&n=="c")return di(r,-1,n)||nt(r,-1);if(t==40||ae&&t==78&&n=="c")return ga(r)||di(r,1,n)||nt(r,1);if(n==(ae?"m":"c")&&(t==66||t==73||t==89||t==90))return!0}return!1}function Rs(r,e){r.someProp("transformCopied",h=>{e=h(e,r)});let t=[],{content:n,openStart:i,openEnd:s}=e;for(;i>1&&s>1&&n.childCount==1&&n.firstChild.childCount==1;){i--,s--;let h=n.firstChild;t.push(h.type.name,h.attrs!=h.type.defaultAttrs?h.attrs:null),n=h.content}let o=r.someProp("clipboardSerializer")||ke.fromSchema(r.state.schema),l=Vs(),a=l.createElement("div");a.appendChild(o.serializeFragment(n,{document:l}));let c=a.firstChild,d,u=0;for(;c&&c.nodeType==1&&(d=Fs[c.nodeName.toLowerCase()]);){for(let h=d.length-1;h>=0;h--){let p=l.createElement(d[h]);for(;a.firstChild;)p.appendChild(a.firstChild);a.appendChild(p),u++}c=a.firstChild}c&&c.nodeType==1&&c.setAttribute("data-pm-slice",`${i} ${s}${u?` -${u}`:""} ${JSON.stringify(t)}`);let f=r.someProp("clipboardTextSerializer",h=>h(e,r))||e.content.textBetween(0,e.content.size,` -`);return{dom:a,text:f}}function Bs(r,e,t,n,i){let s=i.parent.type.spec.code,o,l;if(!t&&!e)return null;let a=e&&(n||s||!t);if(a){if(r.someProp("transformPastedText",f=>{e=f(e,s||n,r)}),s)return e?new k(b.from(r.state.schema.text(e.replace(/\r\n?/g,` -`))),0,0):k.empty;let u=r.someProp("clipboardTextParser",f=>f(e,i,n,r));if(u)l=u;else{let f=i.marks(),{schema:h}=r.state,p=ke.fromSchema(h);o=document.createElement("div"),e.split(/(?:\r\n?|\n)+/).forEach(m=>{let g=o.appendChild(document.createElement("p"));m&&g.appendChild(p.serializeNode(h.text(m,f)))})}}else r.someProp("transformPastedHTML",u=>{t=u(t,r)}),o=ba(t),Bt&&ka(o);let c=o&&o.querySelector("[data-pm-slice]"),d=c&&/^(\d+) (\d+)(?: -(\d+))? (.*)/.exec(c.getAttribute("data-pm-slice")||"");if(d&&d[3])for(let u=+d[3];u>0;u--){let f=o.firstChild;for(;f&&f.nodeType!=1;)f=f.nextSibling;if(!f)break;o=f}if(l||(l=(r.someProp("clipboardParser")||r.someProp("domParser")||ut.fromSchema(r.state.schema)).parseSlice(o,{preserveWhitespace:!!(a||d),context:i,ruleFromNode(f){return f.nodeName=="BR"&&!f.nextSibling&&f.parentNode&&!ga.test(f.parentNode.nodeName)?{ignore:!0}:null}})),d)l=xa(pi(l,+d[1],+d[2]),d[4]);else if(l=k.maxOpen(ya(l.content,i),!0),l.openStart||l.openEnd){let u=0,f=0;for(let h=l.content.firstChild;u{l=u(l,r)}),l}const ga=/^(a|abbr|acronym|b|cite|code|del|em|i|ins|kbd|label|output|q|ruby|s|samp|span|strong|sub|sup|time|u|tt|var)$/i;function ya(r,e){if(r.childCount<2)return r;for(let t=e.depth;t>=0;t--){let i=e.node(t).contentMatchAt(e.index(t)),s,o=[];if(r.forEach(l=>{if(!o)return;let a=i.findWrapping(l.type),c;if(!a)return o=null;if(c=o.length&&s.length&&zs(a,s,l,o[o.length-1],0))o[o.length-1]=c;else{o.length&&(o[o.length-1]=Fs(o[o.length-1],s.length));let d=Ls(l,a);o.push(d),i=i.matchType(d.type),s=a}}),o)return b.from(o)}return r}function Ls(r,e,t=0){for(let n=e.length-1;n>=t;n--)r=e[n].create(null,b.from(r));return r}function zs(r,e,t,n,i){if(i1&&(s=0),i=t&&(l=e<0?o.contentMatchAt(0).fillBefore(l,s<=i).append(l):l.append(o.contentMatchAt(o.childCount).fillBefore(b.empty,!0))),r.replaceChild(e<0?0:r.childCount-1,o.copy(l))}function pi(r,e,t){return e]*>)*/.exec(r);e&&(r=r.slice(e[0].length));let t=$s().createElement("div"),n=/<([a-z][^>\s]+)/i.exec(r),i;if((i=n&&Vs[n[1].toLowerCase()])&&(r=i.map(s=>"<"+s+">").join("")+r+i.map(s=>"").reverse().join("")),t.innerHTML=r,i)for(let s=0;s=0;l-=2){let a=t.nodes[n[l]];if(!a||a.hasRequiredAttrs())break;i=b.from(a.create(n[l+1],i)),s++,o++}return new k(i,s,o)}const te={},ne={},Sa={touchstart:!0,touchmove:!0};class Ma{constructor(){this.shiftKey=!1,this.mouseDown=null,this.lastKeyCode=null,this.lastKeyCodeTime=0,this.lastClick={time:0,x:0,y:0,type:""},this.lastSelectionOrigin=null,this.lastSelectionTime=0,this.lastIOSEnter=0,this.lastIOSEnterFallbackTimeout=-1,this.lastFocus=0,this.lastTouch=0,this.lastAndroidDelete=0,this.composing=!1,this.composingTimeout=-1,this.compositionNodes=[],this.compositionEndedAt=-2e8,this.compositionID=1,this.compositionPendingChanges=0,this.domChangeCount=0,this.eventHandlers=Object.create(null),this.hideSelectionGuard=null}}function wa(r){for(let e in te){let t=te[e];r.dom.addEventListener(e,r.input.eventHandlers[e]=n=>{Ta(r,n)&&!xr(r,n)&&(r.editable||!(n.type in ne))&&t(r,n)},Sa[e]?{passive:!0}:void 0)}ee&&r.dom.addEventListener("input",()=>null),or(r)}function Re(r,e){r.input.lastSelectionOrigin=e,r.input.lastSelectionTime=Date.now()}function Ca(r){r.domObserver.stop();for(let e in r.input.eventHandlers)r.dom.removeEventListener(e,r.input.eventHandlers[e]);clearTimeout(r.input.composingTimeout),clearTimeout(r.input.lastIOSEnterFallbackTimeout)}function or(r){r.someProp("handleDOMEvents",e=>{for(let t in e)r.input.eventHandlers[t]||r.dom.addEventListener(t,r.input.eventHandlers[t]=n=>xr(r,n))})}function xr(r,e){return r.someProp("handleDOMEvents",t=>{let n=t[e.type];return n?n(r,e)||e.defaultPrevented:!1})}function Ta(r,e){if(!e.bubbles)return!0;if(e.defaultPrevented)return!1;for(let t=e.target;t!=r.dom;t=t.parentNode)if(!t||t.nodeType==11||t.pmViewDesc&&t.pmViewDesc.stopEvent(e))return!1;return!0}function Oa(r,e){!xr(r,e)&&te[e.type]&&(r.editable||!(e.type in ne))&&te[e.type](r,e)}ne.keydown=(r,e)=>{let t=e;if(r.input.shiftKey=t.keyCode==16||t.shiftKey,!_s(r,t)&&(r.input.lastKeyCode=t.keyCode,r.input.lastKeyCodeTime=Date.now(),!(fe&&G&&t.keyCode==13)))if(t.keyCode!=229&&r.domObserver.forceFlush(),pt&&t.keyCode==13&&!t.ctrlKey&&!t.altKey&&!t.metaKey){let n=Date.now();r.input.lastIOSEnter=n,r.input.lastIOSEnterFallbackTimeout=setTimeout(()=>{r.input.lastIOSEnter==n&&(r.someProp("handleKeyDown",i=>i(r,je(13,"Enter"))),r.input.lastIOSEnter=0)},200)}else r.someProp("handleKeyDown",n=>n(r,t))||ma(r,t)?t.preventDefault():Re(r,"key")};ne.keyup=(r,e)=>{e.keyCode==16&&(r.input.shiftKey=!1)};ne.keypress=(r,e)=>{let t=e;if(_s(r,t)||!t.charCode||t.ctrlKey&&!t.altKey||ae&&t.metaKey)return;if(r.someProp("handleKeyPress",i=>i(r,t))){t.preventDefault();return}let n=r.state.selection;if(!(n instanceof C)||!n.$from.sameParent(n.$to)){let i=String.fromCharCode(t.charCode);!/[\r\n]/.test(i)&&!r.someProp("handleTextInput",s=>s(r,n.$from.pos,n.$to.pos,i))&&r.dispatch(r.state.tr.insertText(i).scrollIntoView()),t.preventDefault()}};function hn(r){return{left:r.clientX,top:r.clientY}}function va(r,e){let t=e.x-r.clientX,n=e.y-r.clientY;return t*t+n*n<100}function Sr(r,e,t,n,i){if(n==-1)return!1;let s=r.state.doc.resolve(n);for(let o=s.depth+1;o>0;o--)if(r.someProp(e,l=>o>s.depth?l(r,t,s.nodeAfter,s.before(o),i,!0):l(r,t,s.node(o),s.before(o),i,!1)))return!0;return!1}function dt(r,e,t){r.focused||r.focus();let n=r.state.tr.setSelection(e);t=="pointer"&&n.setMeta("pointer",!0),r.dispatch(n)}function Aa(r,e){if(e==-1)return!1;let t=r.state.doc.resolve(e),n=t.nodeAfter;return n&&n.isAtom&&M.isSelectable(n)?(dt(r,new M(t),"pointer"),!0):!1}function Na(r,e){if(e==-1)return!1;let t=r.state.selection,n,i;t instanceof M&&(n=t.node);let s=r.state.doc.resolve(e);for(let o=s.depth+1;o>0;o--){let l=o>s.depth?s.nodeAfter:s.node(o);if(M.isSelectable(l)){n&&t.$from.depth>0&&o>=t.$from.depth&&s.before(t.$from.depth+1)==t.$from.pos?i=s.before(t.$from.depth):i=s.before(o);break}}return i!=null?(dt(r,M.create(r.state.doc,i),"pointer"),!0):!1}function Ea(r,e,t,n,i){return Sr(r,"handleClickOn",e,t,n)||r.someProp("handleClick",s=>s(r,e,n))||(i?Na(r,t):Aa(r,t))}function Da(r,e,t,n){return Sr(r,"handleDoubleClickOn",e,t,n)||r.someProp("handleDoubleClick",i=>i(r,e,n))}function Ia(r,e,t,n){return Sr(r,"handleTripleClickOn",e,t,n)||r.someProp("handleTripleClick",i=>i(r,e,n))||Ra(r,t,n)}function Ra(r,e,t){if(t.button!=0)return!1;let n=r.state.doc;if(e==-1)return n.inlineContent?(dt(r,C.create(n,0,n.content.size),"pointer"),!0):!1;let i=n.resolve(e);for(let s=i.depth+1;s>0;s--){let o=s>i.depth?i.nodeAfter:i.node(s),l=i.before(s);if(o.inlineContent)dt(r,C.create(n,l+1,l+1+o.content.size),"pointer");else if(M.isSelectable(o))dt(r,M.create(n,l),"pointer");else continue;return!0}}function Mr(r){return en(r)}const Hs=ae?"metaKey":"ctrlKey";te.mousedown=(r,e)=>{let t=e;r.input.shiftKey=t.shiftKey;let n=Mr(r),i=Date.now(),s="singleClick";i-r.input.lastClick.time<500&&va(t,r.input.lastClick)&&!t[Hs]&&(r.input.lastClick.type=="singleClick"?s="doubleClick":r.input.lastClick.type=="doubleClick"&&(s="tripleClick")),r.input.lastClick={time:i,x:t.clientX,y:t.clientY,type:s};let o=r.posAtCoords(hn(t));o&&(s=="singleClick"?(r.input.mouseDown&&r.input.mouseDown.done(),r.input.mouseDown=new Pa(r,o,t,!!n)):(s=="doubleClick"?Da:Ia)(r,o.pos,o.inside,t)?t.preventDefault():Re(r,"pointer"))};class Pa{constructor(e,t,n,i){this.view=e,this.pos=t,this.event=n,this.flushed=i,this.delayedSelectionSync=!1,this.mightDrag=null,this.startDoc=e.state.doc,this.selectNode=!!n[Hs],this.allowDefault=n.shiftKey;let s,o;if(t.inside>-1)s=e.state.doc.nodeAt(t.inside),o=t.inside;else{let d=e.state.doc.resolve(t.pos);s=d.parent,o=d.depth?d.before():0}const l=i?null:n.target,a=l?e.docView.nearestDesc(l,!0):null;this.target=a?a.dom:null;let{selection:c}=e.state;(n.button==0&&s.type.spec.draggable&&s.type.spec.selectable!==!1||c instanceof M&&c.from<=o&&c.to>o)&&(this.mightDrag={node:s,pos:o,addAttr:!!(this.target&&!this.target.draggable),setUneditable:!!(this.target&&me&&!this.target.hasAttribute("contentEditable"))}),this.target&&this.mightDrag&&(this.mightDrag.addAttr||this.mightDrag.setUneditable)&&(this.view.domObserver.stop(),this.mightDrag.addAttr&&(this.target.draggable=!0),this.mightDrag.setUneditable&&setTimeout(()=>{this.view.input.mouseDown==this&&this.target.setAttribute("contentEditable","false")},20),this.view.domObserver.start()),e.root.addEventListener("mouseup",this.up=this.up.bind(this)),e.root.addEventListener("mousemove",this.move=this.move.bind(this)),Re(e,"pointer")}done(){this.view.root.removeEventListener("mouseup",this.up),this.view.root.removeEventListener("mousemove",this.move),this.mightDrag&&this.target&&(this.view.domObserver.stop(),this.mightDrag.addAttr&&this.target.removeAttribute("draggable"),this.mightDrag.setUneditable&&this.target.removeAttribute("contentEditable"),this.view.domObserver.start()),this.delayedSelectionSync&&setTimeout(()=>Oe(this.view)),this.view.input.mouseDown=null}up(e){if(this.done(),!this.view.dom.contains(e.target))return;let t=this.pos;this.view.state.doc!=this.startDoc&&(t=this.view.posAtCoords(hn(e))),this.updateAllowDefault(e),this.allowDefault||!t?Re(this.view,"pointer"):Ea(this.view,t.pos,t.inside,e,this.selectNode)?e.preventDefault():e.button==0&&(this.flushed||ee&&this.mightDrag&&!this.mightDrag.node.isAtom||G&&!this.view.state.selection.visible&&Math.min(Math.abs(t.pos-this.view.state.selection.from),Math.abs(t.pos-this.view.state.selection.to))<=2)?(dt(this.view,v.near(this.view.state.doc.resolve(t.pos)),"pointer"),e.preventDefault()):Re(this.view,"pointer")}move(e){this.updateAllowDefault(e),Re(this.view,"pointer"),e.buttons==0&&this.done()}updateAllowDefault(e){!this.allowDefault&&(Math.abs(this.event.x-e.clientX)>4||Math.abs(this.event.y-e.clientY)>4)&&(this.allowDefault=!0)}}te.touchstart=r=>{r.input.lastTouch=Date.now(),Mr(r),Re(r,"pointer")};te.touchmove=r=>{r.input.lastTouch=Date.now(),Re(r,"pointer")};te.contextmenu=r=>Mr(r);function _s(r,e){return r.composing?!0:ee&&Math.abs(e.timeStamp-r.input.compositionEndedAt)<500?(r.input.compositionEndedAt=-2e8,!0):!1}const Ba=fe?5e3:-1;ne.compositionstart=ne.compositionupdate=r=>{if(!r.composing){r.domObserver.flush();let{state:e}=r,t=e.selection.$from;if(e.selection.empty&&(e.storedMarks||!t.textOffset&&t.parentOffset&&t.nodeBefore.marks.some(n=>n.type.spec.inclusive===!1)))r.markCursor=r.state.storedMarks||t.marks(),en(r,!0),r.markCursor=null;else if(en(r),me&&e.selection.empty&&t.parentOffset&&!t.textOffset&&t.nodeBefore.marks.length){let n=r.domSelectionRange();for(let i=n.focusNode,s=n.focusOffset;i&&i.nodeType==1&&s!=0;){let o=s<0?i.lastChild:i.childNodes[s-1];if(!o)break;if(o.nodeType==3){r.domSelection().collapse(o,o.nodeValue.length);break}else i=o,s=-1}}r.input.composing=!0}js(r,Ba)};ne.compositionend=(r,e)=>{r.composing&&(r.input.composing=!1,r.input.compositionEndedAt=e.timeStamp,r.input.compositionPendingChanges=r.domObserver.pendingRecords().length?r.input.compositionID:0,r.input.compositionPendingChanges&&Promise.resolve().then(()=>r.domObserver.flush()),r.input.compositionID++,js(r,20))};function js(r,e){clearTimeout(r.input.composingTimeout),e>-1&&(r.input.composingTimeout=setTimeout(()=>en(r),e))}function Js(r){for(r.composing&&(r.input.composing=!1,r.input.compositionEndedAt=La());r.input.compositionNodes.length>0;)r.input.compositionNodes.pop().markParentsDirty()}function La(){let r=document.createEvent("Event");return r.initEvent("event",!0,!0),r.timeStamp}function en(r,e=!1){if(!(fe&&r.domObserver.flushingSoon>=0)){if(r.domObserver.forceFlush(),Js(r),e||r.docView&&r.docView.dirty){let t=br(r);return t&&!t.eq(r.state.selection)?r.dispatch(r.state.tr.setSelection(t)):r.updateState(r.state),!0}return!1}}function za(r,e){if(!r.dom.parentNode)return;let t=r.dom.parentNode.appendChild(document.createElement("div"));t.appendChild(e),t.style.cssText="position: fixed; left: -10000px; top: 10px";let n=getSelection(),i=document.createRange();i.selectNodeContents(e),r.dom.blur(),n.removeAllRanges(),n.addRange(i),setTimeout(()=>{t.parentNode&&t.parentNode.removeChild(t),r.focus()},50)}const Et=re&&Pe<15||pt&&Pl<604;te.copy=ne.cut=(r,e)=>{let t=e,n=r.state.selection,i=t.type=="cut";if(n.empty)return;let s=Et?null:t.clipboardData,o=n.content(),{dom:l,text:a}=Ps(r,o);s?(t.preventDefault(),s.clearData(),s.setData("text/html",l.innerHTML),s.setData("text/plain",a)):za(r,l),i&&r.dispatch(r.state.tr.deleteSelection().scrollIntoView().setMeta("uiEvent","cut"))};function Fa(r){return r.openStart==0&&r.openEnd==0&&r.content.childCount==1?r.content.firstChild:null}function Va(r,e){if(!r.dom.parentNode)return;let t=r.input.shiftKey||r.state.selection.$from.parent.type.spec.code,n=r.dom.parentNode.appendChild(document.createElement(t?"textarea":"div"));t||(n.contentEditable="true"),n.style.cssText="position: fixed; left: -10000px; top: 10px",n.focus();let i=r.input.shiftKey&&r.input.lastKeyCode!=45;setTimeout(()=>{r.focus(),n.parentNode&&n.parentNode.removeChild(n),t?Dt(r,n.value,null,i,e):Dt(r,n.textContent,n.innerHTML,i,e)},50)}function Dt(r,e,t,n,i){let s=Bs(r,e,t,n,r.state.selection.$from);if(r.someProp("handlePaste",a=>a(r,i,s||k.empty)))return!0;if(!s)return!1;let o=Fa(s),l=o?r.state.tr.replaceSelectionWith(o,n):r.state.tr.replaceSelection(s);return r.dispatch(l.scrollIntoView().setMeta("paste",!0).setMeta("uiEvent","paste")),!0}function Ws(r){let e=r.getData("text/plain")||r.getData("Text");if(e)return e;let t=r.getData("text/uri-list");return t?t.replace(/\r?\n/g," "):""}ne.paste=(r,e)=>{let t=e;if(r.composing&&!fe)return;let n=Et?null:t.clipboardData,i=r.input.shiftKey&&r.input.lastKeyCode!=45;n&&Dt(r,Ws(n),n.getData("text/html"),i,t)?t.preventDefault():Va(r,t)};class Ks{constructor(e,t,n){this.slice=e,this.move=t,this.node=n}}const qs=ae?"altKey":"ctrlKey";te.dragstart=(r,e)=>{let t=e,n=r.input.mouseDown;if(n&&n.done(),!t.dataTransfer)return;let i=r.state.selection,s=i.empty?null:r.posAtCoords(hn(t)),o;if(!(s&&s.pos>=i.from&&s.pos<=(i instanceof M?i.to-1:i.to))){if(n&&n.mightDrag)o=M.create(r.state.doc,n.mightDrag.pos);else if(t.target&&t.target.nodeType==1){let d=r.docView.nearestDesc(t.target,!0);d&&d.node.type.spec.draggable&&d!=r.docView&&(o=M.create(r.state.doc,d.posBefore))}}let l=(o||r.state.selection).content(),{dom:a,text:c}=Ps(r,l);t.dataTransfer.clearData(),t.dataTransfer.setData(Et?"Text":"text/html",a.innerHTML),t.dataTransfer.effectAllowed="copyMove",Et||t.dataTransfer.setData("text/plain",c),r.dragging=new Ks(l,!t[qs],o)};te.dragend=r=>{let e=r.dragging;window.setTimeout(()=>{r.dragging==e&&(r.dragging=null)},50)};ne.dragover=ne.dragenter=(r,e)=>e.preventDefault();ne.drop=(r,e)=>{let t=e,n=r.dragging;if(r.dragging=null,!t.dataTransfer)return;let i=r.posAtCoords(hn(t));if(!i)return;let s=r.state.doc.resolve(i.pos),o=n&&n.slice;o?r.someProp("transformPasted",p=>{o=p(o,r)}):o=Bs(r,Ws(t.dataTransfer),Et?null:t.dataTransfer.getData("text/html"),!1,s);let l=!!(n&&!t[qs]);if(r.someProp("handleDrop",p=>p(r,t,o||k.empty,l))){t.preventDefault();return}if(!o)return;t.preventDefault();let a=o?us(r.state.doc,s.pos,o):s.pos;a==null&&(a=s.pos);let c=r.state.tr;if(l){let{node:p}=n;p?p.replace(c):c.deleteSelection()}let d=c.mapping.map(a),u=o.openStart==0&&o.openEnd==0&&o.content.childCount==1,f=c.doc;if(u?c.replaceRangeWith(d,d,o.content.firstChild):c.replaceRange(d,d,o),c.doc.eq(f))return;let h=c.doc.resolve(d);if(u&&M.isSelectable(o.content.firstChild)&&h.nodeAfter&&h.nodeAfter.sameMarkup(o.content.firstChild))c.setSelection(new M(h));else{let p=c.mapping.map(a);c.mapping.maps[c.mapping.maps.length-1].forEach((m,g,y,x)=>p=x),c.setSelection(kr(r,h,c.doc.resolve(p)))}r.focus(),r.dispatch(c.setMeta("uiEvent","drop"))};te.focus=r=>{r.input.lastFocus=Date.now(),r.focused||(r.domObserver.stop(),r.dom.classList.add("ProseMirror-focused"),r.domObserver.start(),r.focused=!0,setTimeout(()=>{r.docView&&r.hasFocus()&&!r.domObserver.currentSelection.eq(r.domSelectionRange())&&Oe(r)},20))};te.blur=(r,e)=>{let t=e;r.focused&&(r.domObserver.stop(),r.dom.classList.remove("ProseMirror-focused"),r.domObserver.start(),t.relatedTarget&&r.dom.contains(t.relatedTarget)&&r.domObserver.currentSelection.clear(),r.focused=!1)};te.beforeinput=(r,e)=>{if(G&&fe&&e.inputType=="deleteContentBackward"){r.domObserver.flushSoon();let{domChangeCount:n}=r.input;setTimeout(()=>{if(r.input.domChangeCount!=n||(r.dom.blur(),r.focus(),r.someProp("handleKeyDown",s=>s(r,je(8,"Backspace")))))return;let{$cursor:i}=r.state.selection;i&&i.pos>0&&r.dispatch(r.state.tr.delete(i.pos-1,i.pos).scrollIntoView())},50)}};for(let r in ne)te[r]=ne[r];function It(r,e){if(r==e)return!0;for(let t in r)if(r[t]!==e[t])return!1;for(let t in e)if(!(t in r))return!1;return!0}class tn{constructor(e,t){this.toDOM=e,this.spec=t||Ye,this.side=this.spec.side||0}map(e,t,n,i){let{pos:s,deleted:o}=e.mapResult(t.from+i,this.side<0?-1:1);return o?null:new ce(s-n,s-n,this)}valid(){return!0}eq(e){return this==e||e instanceof tn&&(this.spec.key&&this.spec.key==e.spec.key||this.toDOM==e.toDOM&&It(this.spec,e.spec))}destroy(e){this.spec.destroy&&this.spec.destroy(e)}}class Le{constructor(e,t){this.attrs=e,this.spec=t||Ye}map(e,t,n,i){let s=e.map(t.from+i,this.spec.inclusiveStart?-1:1)-n,o=e.map(t.to+i,this.spec.inclusiveEnd?1:-1)-n;return s>=o?null:new ce(s,o,this)}valid(e,t){return t.from=e&&(!s||s(l.spec))&&n.push(l.copy(l.from+i,l.to+i))}for(let o=0;oe){let l=this.children[o]+1;this.children[o+2].findInner(e-l,t-l,n,i+l,s)}}map(e,t,n){return this==U||e.maps.length==0?this:this.mapInner(e,t,0,0,n||Ye)}mapInner(e,t,n,i,s){let o;for(let l=0;l{let c=a+n,d;if(d=Gs(t,l,c)){for(i||(i=this.children.slice());sl&&u.to=e){this.children[l]==e&&(n=this.children[l+2]);break}let s=e+1,o=s+t.content.size;for(let l=0;ls&&a.type instanceof Le){let c=Math.max(s,a.from)-s,d=Math.min(o,a.to)-s;ci.map(e,t,Ye));return Ee.from(n)}forChild(e,t){if(t.isLeaf)return V.empty;let n=[];for(let i=0;it instanceof V)?e:e.reduce((t,n)=>t.concat(n instanceof V?n:n.members),[]))}}}function $a(r,e,t,n,i,s,o){let l=r.slice();for(let c=0,d=s;c{let g=m-p-(h-f);for(let y=0;yx+d-u)continue;let N=l[y]+d-u;h>=N?l[y+1]=f<=N?-2:-1:f>=d&&g&&(l[y]+=g,l[y+1]+=g)}u+=g}),d=t.maps[c].map(d,-1)}let a=!1;for(let c=0;c=n.content.size){a=!0;continue}let f=t.map(r[c+1]+s,-1),h=f-i,{index:p,offset:m}=n.content.findIndex(u),g=n.maybeChild(p);if(g&&m==u&&m+g.nodeSize==h){let y=l[c+2].mapInner(t,g,d+1,r[c]+s+1,o);y!=U?(l[c]=u,l[c+1]=h,l[c+2]=y):(l[c+1]=-2,a=!0)}else a=!0}if(a){let c=Ha(l,r,e,t,i,s,o),d=nn(c,n,0,o);e=d.local;for(let u=0;ut&&o.to{let c=Gs(r,l,a+t);if(c){s=!0;let d=nn(c,l,t+a+1,n);d!=U&&i.push(a,a+l.nodeSize,d)}});let o=Us(s?Ys(r):r,-t).sort(Xe);for(let l=0;l0;)e++;r.splice(e,0,t)}function Bn(r){let e=[];return r.someProp("decorations",t=>{let n=t(r.state);n&&n!=U&&e.push(n)}),r.cursorWrapper&&e.push(V.create(r.state.doc,[r.cursorWrapper.deco])),Ee.from(e)}const _a={childList:!0,characterData:!0,characterDataOldValue:!0,attributes:!0,attributeOldValue:!0,subtree:!0},ja=re&&Pe<=11;class Ja{constructor(){this.anchorNode=null,this.anchorOffset=0,this.focusNode=null,this.focusOffset=0}set(e){this.anchorNode=e.anchorNode,this.anchorOffset=e.anchorOffset,this.focusNode=e.focusNode,this.focusOffset=e.focusOffset}clear(){this.anchorNode=this.focusNode=null}eq(e){return e.anchorNode==this.anchorNode&&e.anchorOffset==this.anchorOffset&&e.focusNode==this.focusNode&&e.focusOffset==this.focusOffset}}class Wa{constructor(e,t){this.view=e,this.handleDOMChange=t,this.queue=[],this.flushingSoon=-1,this.observer=null,this.currentSelection=new Ja,this.onCharData=null,this.suppressingSelectionUpdates=!1,this.observer=window.MutationObserver&&new window.MutationObserver(n=>{for(let i=0;ii.type=="childList"&&i.removedNodes.length||i.type=="characterData"&&i.oldValue.length>i.target.nodeValue.length)?this.flushSoon():this.flush()}),ja&&(this.onCharData=n=>{this.queue.push({target:n.target,type:"characterData",oldValue:n.prevValue}),this.flushSoon()}),this.onSelectionChange=this.onSelectionChange.bind(this)}flushSoon(){this.flushingSoon<0&&(this.flushingSoon=window.setTimeout(()=>{this.flushingSoon=-1,this.flush()},20))}forceFlush(){this.flushingSoon>-1&&(window.clearTimeout(this.flushingSoon),this.flushingSoon=-1,this.flush())}start(){this.observer&&(this.observer.takeRecords(),this.observer.observe(this.view.dom,_a)),this.onCharData&&this.view.dom.addEventListener("DOMCharacterDataModified",this.onCharData),this.connectSelection()}stop(){if(this.observer){let e=this.observer.takeRecords();if(e.length){for(let t=0;tthis.flush(),20)}this.observer.disconnect()}this.onCharData&&this.view.dom.removeEventListener("DOMCharacterDataModified",this.onCharData),this.disconnectSelection()}connectSelection(){this.view.dom.ownerDocument.addEventListener("selectionchange",this.onSelectionChange)}disconnectSelection(){this.view.dom.ownerDocument.removeEventListener("selectionchange",this.onSelectionChange)}suppressSelectionUpdates(){this.suppressingSelectionUpdates=!0,setTimeout(()=>this.suppressingSelectionUpdates=!1,50)}onSelectionChange(){if(ai(this.view)){if(this.suppressingSelectionUpdates)return Oe(this.view);if(re&&Pe<=11&&!this.view.state.selection.empty){let e=this.view.domSelectionRange();if(e.focusNode&&Qe(e.focusNode,e.focusOffset,e.anchorNode,e.anchorOffset))return this.flushSoon()}this.flush()}}setCurSelection(){this.currentSelection.set(this.view.domSelectionRange())}ignoreSelectionChange(e){if(!e.focusNode)return!0;let t=new Set,n;for(let s=e.focusNode;s;s=Nt(s))t.add(s);for(let s=e.anchorNode;s;s=Nt(s))if(t.has(s)){n=s;break}let i=n&&this.view.docView.nearestDesc(n);if(i&&i.ignoreMutation({type:"selection",target:n.nodeType==3?n.parentNode:n}))return this.setCurSelection(),!0}pendingRecords(){if(this.observer)for(let e of this.observer.takeRecords())this.queue.push(e);return this.queue}flush(){let{view:e}=this;if(!e.docView||this.flushingSoon>-1)return;let t=this.pendingRecords();t.length&&(this.queue=[]);let n=e.domSelectionRange(),i=!this.suppressingSelectionUpdates&&!this.currentSelection.eq(n)&&ai(e)&&!this.ignoreSelectionChange(n),s=-1,o=-1,l=!1,a=[];if(e.editable)for(let d=0;d1){let d=a.filter(u=>u.nodeName=="BR");if(d.length==2){let u=d[0],f=d[1];u.parentNode&&u.parentNode.parentNode==f.parentNode?f.remove():u.remove()}}let c=null;s<0&&i&&e.input.lastFocus>Date.now()-200&&Math.max(e.input.lastTouch,e.input.lastClick.time)-1||i)&&(s>-1&&(e.docView.markDirty(s,o),Ka(e)),this.handleDOMChange(s,o,l,a),e.docView&&e.docView.dirty?e.updateState(e.state):this.currentSelection.eq(n)||Oe(e),this.currentSelection.set(n))}registerMutation(e,t){if(t.indexOf(e.target)>-1)return null;let n=this.view.docView.nearestDesc(e.target);if(e.type=="attributes"&&(n==this.view.docView||e.attributeName=="contenteditable"||e.attributeName=="style"&&!e.oldValue&&!e.target.getAttribute("style"))||!n||n.ignoreMutation(e))return null;if(e.type=="childList"){for(let d=0;di;g--){let y=n.childNodes[g-1],x=y.pmViewDesc;if(y.nodeName=="BR"&&!x){s=g;break}if(!x||x.size)break}let u=r.state.doc,f=r.someProp("domParser")||ut.fromSchema(r.state.schema),h=u.resolve(o),p=null,m=f.parse(n,{topNode:h.parent,topMatch:h.parent.contentMatchAt(h.index()),topOpen:!0,from:i,to:s,preserveWhitespace:h.parent.type.whitespace=="pre"?"full":!0,findPositions:c,ruleFromNode:Ga,context:h});if(c&&c[0].pos!=null){let g=c[0].pos,y=c[1]&&c[1].pos;y==null&&(y=g),p={anchor:g+o,head:y+o}}return{doc:m,sel:p,from:o,to:l}}function Ga(r){let e=r.pmViewDesc;if(e)return e.parseRule();if(r.nodeName=="BR"&&r.parentNode){if(ee&&/^(ul|ol)$/i.test(r.parentNode.nodeName)){let t=document.createElement("div");return t.appendChild(document.createElement("li")),{skip:t}}else if(r.parentNode.lastChild==r||ee&&/^(tr|table)$/i.test(r.parentNode.nodeName))return{ignore:!0}}else if(r.nodeName=="IMG"&&r.getAttribute("mark-placeholder"))return{ignore:!0};return null}const Ya=/^(a|abbr|acronym|b|bd[io]|big|br|button|cite|code|data(list)?|del|dfn|em|i|ins|kbd|label|map|mark|meter|output|q|ruby|s|samp|small|span|strong|su[bp]|time|u|tt|var)$/i;function Xa(r,e,t,n,i){let s=r.input.compositionPendingChanges||(r.composing?r.input.compositionID:0);if(r.input.compositionPendingChanges=0,e<0){let A=r.input.lastSelectionTime>Date.now()-50?r.input.lastSelectionOrigin:null,T=br(r,A);if(T&&!r.state.selection.eq(T)){if(G&&fe&&r.input.lastKeyCode===13&&Date.now()-100go(r,je(13,"Enter"))))return;let zt=r.state.tr.setSelection(T);A=="pointer"?zt.setMeta("pointer",!0):A=="key"&&zt.scrollIntoView(),s&&zt.setMeta("composition",s),r.dispatch(zt)}return}let o=r.state.doc.resolve(e),l=o.sharedDepth(t);e=o.before(l+1),t=r.state.doc.resolve(t).after(l+1);let a=r.state.selection,c=Ua(r,e,t),d=r.state.doc,u=d.slice(c.from,c.to),f,h;r.input.lastKeyCode===8&&Date.now()-100Date.now()-225||fe)&&i.some(A=>A.nodeType==1&&!Ya.test(A.nodeName))&&(!p||p.endA>=p.endB)&&r.someProp("handleKeyDown",A=>A(r,je(13,"Enter")))){r.input.lastIOSEnter=0;return}if(!p)if(n&&a instanceof C&&!a.empty&&a.$head.sameParent(a.$anchor)&&!r.composing&&!(c.sel&&c.sel.anchor!=c.sel.head))p={start:a.from,endA:a.to,endB:a.to};else{if(c.sel){let A=ki(r,r.state.doc,c.sel);if(A&&!A.eq(r.state.selection)){let T=r.state.tr.setSelection(A);s&&T.setMeta("composition",s),r.dispatch(T)}}return}if(G&&r.cursorWrapper&&c.sel&&c.sel.anchor==r.cursorWrapper.deco.from&&c.sel.head==c.sel.anchor){let A=p.endB-p.start;c.sel={anchor:c.sel.anchor+A,head:c.sel.anchor+A}}r.input.domChangeCount++,r.state.selection.fromr.state.selection.from&&p.start<=r.state.selection.from+2&&r.state.selection.from>=c.from?p.start=r.state.selection.from:p.endA=r.state.selection.to-2&&r.state.selection.to<=c.to&&(p.endB+=r.state.selection.to-p.endA,p.endA=r.state.selection.to)),re&&Pe<=11&&p.endB==p.start+1&&p.endA==p.start&&p.start>c.from&&c.doc.textBetween(p.start-c.from-1,p.start-c.from+1)=="  "&&(p.start--,p.endA--,p.endB--);let m=c.doc.resolveNoCache(p.start-c.from),g=c.doc.resolveNoCache(p.endB-c.from),y=d.resolve(p.start),x=m.sameParent(g)&&m.parent.inlineContent&&y.end()>=p.endA,N;if((pt&&r.input.lastIOSEnter>Date.now()-225&&(!x||i.some(A=>A.nodeName=="DIV"||A.nodeName=="P"))||!x&&m.posA(r,je(13,"Enter")))){r.input.lastIOSEnter=0;return}if(r.state.selection.anchor>p.start&&Qa(d,p.start,p.endA,m,g)&&r.someProp("handleKeyDown",A=>A(r,je(8,"Backspace")))){fe&&G&&r.domObserver.suppressSelectionUpdates();return}G&&fe&&p.endB==p.start&&(r.input.lastAndroidDelete=Date.now()),fe&&!x&&m.start()!=g.start()&&g.parentOffset==0&&m.depth==g.depth&&c.sel&&c.sel.anchor==c.sel.head&&c.sel.head==p.endA&&(p.endB-=2,g=c.doc.resolveNoCache(p.endB-c.from),setTimeout(()=>{r.someProp("handleKeyDown",function(A){return A(r,je(13,"Enter"))})},20));let P=p.start,B=p.endA,R,q,ge;if(x){if(m.pos==g.pos)re&&Pe<=11&&m.parentOffset==0&&(r.domObserver.suppressSelectionUpdates(),setTimeout(()=>Oe(r),20)),R=r.state.tr.delete(P,B),q=d.resolve(p.start).marksAcross(d.resolve(p.endA));else if(p.endA==p.endB&&(ge=Za(m.parent.content.cut(m.parentOffset,g.parentOffset),y.parent.content.cut(y.parentOffset,p.endA-y.start()))))R=r.state.tr,ge.type=="add"?R.addMark(P,B,ge.mark):R.removeMark(P,B,ge.mark);else if(m.parent.child(m.index()).isText&&m.index()==g.index()-(g.textOffset?0:1)){let A=m.parent.textBetween(m.parentOffset,g.parentOffset);if(r.someProp("handleTextInput",T=>T(r,P,B,A)))return;R=r.state.tr.insertText(A,P,B)}}if(R||(R=r.state.tr.replace(P,B,c.doc.slice(p.start-c.from,p.endB-c.from))),c.sel){let A=ki(r,R.doc,c.sel);A&&!(G&&fe&&r.composing&&A.empty&&(p.start!=p.endB||r.input.lastAndroidDeletee.content.size?null:kr(r,e.resolve(t.anchor),e.resolve(t.head))}function Za(r,e){let t=r.firstChild.marks,n=e.firstChild.marks,i=t,s=n,o,l,a;for(let d=0;dd.mark(l.addToSet(d.marks));else if(i.length==0&&s.length==1)l=s[0],o="remove",a=d=>d.mark(l.removeFromSet(d.marks));else return null;let c=[];for(let d=0;dt||Ln(o,!0,!1)0&&(e||r.indexAfter(n)==r.node(n).childCount);)n--,i++,e=!1;if(t){let s=r.node(n).maybeChild(r.indexAfter(n));for(;s&&!s.isLeaf;)s=s.firstChild,i++}return i}function ec(r,e,t,n,i){let s=r.findDiffStart(e,t);if(s==null)return null;let{a:o,b:l}=r.findDiffEnd(e,t+r.size,t+e.size);if(i=="end"){let a=Math.max(0,s-Math.min(o,l));n-=o+a-s}if(o=o?s-n:0;s-=a,s&&s=l?s-n:0;s-=a,s&&s=56320&&e<=57343&&t>=55296&&t<=56319}class tc{constructor(e,t){this._root=null,this.focused=!1,this.trackWrites=null,this.mounted=!1,this.markCursor=null,this.cursorWrapper=null,this.lastSelectedViewDesc=void 0,this.input=new Ma,this.prevDirectPlugins=[],this.pluginViews=[],this.requiresGeckoHackNode=!1,this.dragging=null,this._props=t,this.state=t.state,this.directPlugins=t.plugins||[],this.directPlugins.forEach(Ti),this.dispatch=this.dispatch.bind(this),this.dom=e&&e.mount||document.createElement("div"),e&&(e.appendChild?e.appendChild(this.dom):typeof e=="function"?e(this.dom):e.mount&&(this.mounted=!0)),this.editable=wi(this),Mi(this),this.nodeViews=Ci(this),this.docView=ni(this.state.doc,Si(this),Bn(this),this.dom,this),this.domObserver=new Wa(this,(n,i,s,o)=>Xa(this,n,i,s,o)),this.domObserver.start(),wa(this),this.updatePluginViews()}get composing(){return this.input.composing}get props(){if(this._props.state!=this.state){let e=this._props;this._props={};for(let t in e)this._props[t]=e[t];this._props.state=this.state}return this._props}update(e){e.handleDOMEvents!=this._props.handleDOMEvents&&or(this);let t=this._props;this._props=e,e.plugins&&(e.plugins.forEach(Ti),this.directPlugins=e.plugins),this.updateStateInner(e.state,t)}setProps(e){let t={};for(let n in this._props)t[n]=this._props[n];t.state=this.state;for(let n in e)t[n]=e[n];this.update(t)}updateState(e){this.updateStateInner(e,this._props)}updateStateInner(e,t){var n;let i=this.state,s=!1,o=!1;e.storedMarks&&this.composing&&(Js(this),o=!0),this.state=e;let l=i.plugins!=e.plugins||this._props.plugins!=t.plugins;if(l||this._props.plugins!=t.plugins||this._props.nodeViews!=t.nodeViews){let h=Ci(this);rc(h,this.nodeViews)&&(this.nodeViews=h,s=!0)}(l||t.handleDOMEvents!=this._props.handleDOMEvents)&&or(this),this.editable=wi(this),Mi(this);let a=Bn(this),c=Si(this),d=i.plugins!=e.plugins&&!i.doc.eq(e.doc)?"reset":e.scrollToSelection>i.scrollToSelection?"to selection":"preserve",u=s||!this.docView.matchesNode(e.doc,c,a);(u||!e.selection.eq(i.selection))&&(o=!0);let f=d=="preserve"&&o&&this.dom.style.overflowAnchor==null&&zl(this);if(o){this.domObserver.stop();let h=u&&(re||G)&&!this.composing&&!i.selection.empty&&!e.selection.empty&&nc(i.selection,e.selection);if(u){let p=G?this.trackWrites=this.domSelectionRange().focusNode:null;(s||!this.docView.update(e.doc,c,a,this))&&(this.docView.updateOuterDeco([]),this.docView.destroy(),this.docView=ni(e.doc,c,a,this.dom,this)),p&&!this.trackWrites&&(h=!0)}h||!(this.input.mouseDown&&this.domObserver.currentSelection.eq(this.domSelectionRange())&&aa(this))?Oe(this,h):(Ds(this,e.selection),this.domObserver.setCurSelection()),this.domObserver.start()}this.updatePluginViews(i),!((n=this.dragging)===null||n===void 0)&&n.node&&!i.doc.eq(e.doc)&&this.updateDraggedNode(this.dragging,i),d=="reset"?this.dom.scrollTop=0:d=="to selection"?this.scrollToSelection():f&&Fl(f)}scrollToSelection(){let e=this.domSelectionRange().focusNode;if(!this.someProp("handleScrollToSelection",t=>t(this)))if(this.state.selection instanceof M){let t=this.docView.domAfterPos(this.state.selection.from);t.nodeType==1&&Yr(this,t.getBoundingClientRect(),e)}else Yr(this,this.coordsAtPos(this.state.selection.head,1),e)}destroyPluginViews(){let e;for(;e=this.pluginViews.pop();)e.destroy&&e.destroy()}updatePluginViews(e){if(!e||e.plugins!=this.state.plugins||this.directPlugins!=this.prevDirectPlugins){this.prevDirectPlugins=this.directPlugins,this.destroyPluginViews();for(let t=0;t0&&this.state.doc.nodeAt(s))==n.node&&(i=s)}this.dragging=new Ks(e.slice,e.move,i<0?void 0:M.create(this.state.doc,i))}someProp(e,t){let n=this._props&&this._props[e],i;if(n!=null&&(i=t?t(n):n))return i;for(let o=0;ot.ownerDocument.getSelection()),this._root=t}return e||document}updateRoot(){this._root=null}posAtCoords(e){return Jl(this,e)}coordsAtPos(e,t=1){return ws(this,e,t)}domAtPos(e,t=0){return this.docView.domFromPos(e,t)}nodeDOM(e){let t=this.docView.descAt(e);return t?t.nodeDOM:null}posAtDOM(e,t,n=-1){let i=this.docView.posFromDOM(e,t,n);if(i==null)throw new RangeError("DOM position not inside the editor");return i}endOfTextblock(e,t){return Gl(this,t||this.state,e)}pasteHTML(e,t){return Dt(this,"",e,!1,t||new ClipboardEvent("paste"))}pasteText(e,t){return Dt(this,e,null,!0,t||new ClipboardEvent("paste"))}destroy(){this.docView&&(Ca(this),this.destroyPluginViews(),this.mounted?(this.docView.update(this.state.doc,[],Bn(this),this),this.dom.textContent=""):this.dom.parentNode&&this.dom.parentNode.removeChild(this.dom),this.docView.destroy(),this.docView=null)}get isDestroyed(){return this.docView==null}dispatchEvent(e){return Oa(this,e)}dispatch(e){let t=this._props.dispatchTransaction;t?t.call(this,e):this.updateState(this.state.apply(e))}domSelectionRange(){return ee&&this.root.nodeType===11&&El(this.dom.ownerDocument)==this.dom?qa(this):this.domSelection()}domSelection(){return this.root.getSelection()}}function Si(r){let e=Object.create(null);return e.class="ProseMirror",e.contenteditable=String(r.editable),r.someProp("attributes",t=>{if(typeof t=="function"&&(t=t(r.state)),t)for(let n in t)n=="class"?e.class+=" "+t[n]:n=="style"?e.style=(e.style?e.style+";":"")+t[n]:!e[n]&&n!="contenteditable"&&n!="nodeName"&&(e[n]=String(t[n]))}),e.translate||(e.translate="no"),[ce.node(0,r.state.doc.content.size,e)]}function Mi(r){if(r.markCursor){let e=document.createElement("img");e.className="ProseMirror-separator",e.setAttribute("mark-placeholder","true"),e.setAttribute("alt",""),r.cursorWrapper={dom:e,deco:ce.widget(r.state.selection.head,e,{raw:!0,marks:r.markCursor})}}else r.cursorWrapper=null}function wi(r){return!r.someProp("editable",e=>e(r.state)===!1)}function nc(r,e){let t=Math.min(r.$anchor.sharedDepth(r.head),e.$anchor.sharedDepth(e.head));return r.$anchor.start(t)!=e.$anchor.start(t)}function Ci(r){let e=Object.create(null);function t(n){for(let i in n)Object.prototype.hasOwnProperty.call(e,i)||(e[i]=n[i])}return r.someProp("nodeViews",t),r.someProp("markViews",t),e}function rc(r,e){let t=0,n=0;for(let i in r){if(r[i]!=e[i])return!0;t++}for(let i in e)n++;return t!=n}function Ti(r){if(r.spec.state||r.spec.filterTransaction||r.spec.appendTransaction)throw new RangeError("Plugins passed directly to the view must not have a state component")}var Fe={8:"Backspace",9:"Tab",10:"Enter",12:"NumLock",13:"Enter",16:"Shift",17:"Control",18:"Alt",20:"CapsLock",27:"Escape",32:" ",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",44:"PrintScreen",45:"Insert",46:"Delete",59:";",61:"=",91:"Meta",92:"Meta",106:"*",107:"+",108:",",109:"-",110:".",111:"/",144:"NumLock",145:"ScrollLock",160:"Shift",161:"Shift",162:"Control",163:"Control",164:"Alt",165:"Alt",173:"-",186:";",187:"=",188:",",189:"-",190:".",191:"/",192:"`",219:"[",220:"\\",221:"]",222:"'"},rn={48:")",49:"!",50:"@",51:"#",52:"$",53:"%",54:"^",55:"&",56:"*",57:"(",59:":",61:"+",173:"_",186:":",187:"+",188:"<",189:"_",190:">",191:"?",192:"~",219:"{",220:"|",221:"}",222:'"'},ic=typeof navigator<"u"&&/Mac/.test(navigator.platform),sc=typeof navigator<"u"&&/MSIE \d|Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(navigator.userAgent);for(var K=0;K<10;K++)Fe[48+K]=Fe[96+K]=String(K);for(var K=1;K<=24;K++)Fe[K+111]="F"+K;for(var K=65;K<=90;K++)Fe[K]=String.fromCharCode(K+32),rn[K]=String.fromCharCode(K);for(var zn in Fe)rn.hasOwnProperty(zn)||(rn[zn]=Fe[zn]);function oc(r){var e=ic&&r.metaKey&&r.shiftKey&&!r.ctrlKey&&!r.altKey||sc&&r.shiftKey&&r.key&&r.key.length==1||r.key=="Unidentified",t=!e&&r.key||(r.shiftKey?rn:Fe)[r.keyCode]||r.key||"Unidentified";return t=="Esc"&&(t="Escape"),t=="Del"&&(t="Delete"),t=="Left"&&(t="ArrowLeft"),t=="Up"&&(t="ArrowUp"),t=="Right"&&(t="ArrowRight"),t=="Down"&&(t="ArrowDown"),t}const lc=typeof navigator<"u"?/Mac|iP(hone|[oa]d)/.test(navigator.platform):!1;function ac(r){let e=r.split(/-(?!$)/),t=e[e.length-1];t=="Space"&&(t=" ");let n,i,s,o;for(let l=0;l127)&&(s=Fe[n.keyCode])&&s!=i){let l=e[Fn(s,n)];if(l&&l(t.state,t.dispatch,t))return!0}}return!1}}const uc=(r,e)=>r.selection.empty?!1:(e&&e(r.tr.deleteSelection().scrollIntoView()),!0);function fc(r,e){let{$cursor:t}=r.selection;return!t||(e?!e.endOfTextblock("backward",r):t.parentOffset>0)?null:t}const hc=(r,e,t)=>{let n=fc(r,t);if(!n)return!1;let i=Zs(n);if(!i){let o=n.blockRange(),l=o&&bt(o);return l==null?!1:(e&&e(r.tr.lift(o,l).scrollIntoView()),!0)}let s=i.nodeBefore;if(!s.type.spec.isolating&&to(r,i,e))return!0;if(n.parent.content.size==0&&(mt(s,"end")||M.isSelectable(s))){let o=pr(r.doc,n.before(),n.after(),k.empty);if(o&&o.slice.size{let{$head:n,empty:i}=r.selection,s=n;if(!i)return!1;if(n.parent.isTextblock){if(t?!t.endOfTextblock("backward",r):n.parentOffset>0)return!1;s=Zs(n)}let o=s&&s.nodeBefore;return!o||!M.isSelectable(o)?!1:(e&&e(r.tr.setSelection(M.create(r.doc,s.pos-o.nodeSize)).scrollIntoView()),!0)};function Zs(r){if(!r.parent.type.spec.isolating)for(let e=r.depth-1;e>=0;e--){if(r.index(e)>0)return r.doc.resolve(r.before(e+1));if(r.node(e).type.spec.isolating)break}return null}function mc(r,e){let{$cursor:t}=r.selection;return!t||(e?!e.endOfTextblock("forward",r):t.parentOffset{let n=mc(r,t);if(!n)return!1;let i=Qs(n);if(!i)return!1;let s=i.nodeAfter;if(to(r,i,e))return!0;if(n.parent.content.size==0&&(mt(s,"start")||M.isSelectable(s))){let o=pr(r.doc,n.before(),n.after(),k.empty);if(o&&o.slice.size{let{$head:n,empty:i}=r.selection,s=n;if(!i)return!1;if(n.parent.isTextblock){if(t?!t.endOfTextblock("forward",r):n.parentOffset=0;e--){let t=r.node(e);if(r.index(e)+1{let t=r.selection,n=t instanceof M,i;if(n){if(t.node.isTextblock||!Ve(r.doc,t.from))return!1;i=t.from}else if(i=cn(r.doc,t.from,-1),i==null)return!1;if(e){let s=r.tr.join(i);n&&s.setSelection(M.create(s.doc,i-r.doc.resolve(i).nodeBefore.nodeSize)),e(s.scrollIntoView())}return!0},kc=(r,e)=>{let t=r.selection,n;if(t instanceof M){if(t.node.isTextblock||!Ve(r.doc,t.to))return!1;n=t.to}else if(n=cn(r.doc,t.to,1),n==null)return!1;return e&&e(r.tr.join(n).scrollIntoView()),!0},xc=(r,e)=>{let{$from:t,$to:n}=r.selection,i=t.blockRange(n),s=i&&bt(i);return s==null?!1:(e&&e(r.tr.lift(i,s).scrollIntoView()),!0)},Sc=(r,e)=>{let{$head:t,$anchor:n}=r.selection;return!t.parent.type.spec.code||!t.sameParent(n)?!1:(e&&e(r.tr.insertText(` -`).scrollIntoView()),!0)};function eo(r){for(let e=0;e{let{$head:t,$anchor:n}=r.selection;if(!t.parent.type.spec.code||!t.sameParent(n))return!1;let i=t.node(-1),s=t.indexAfter(-1),o=eo(i.contentMatchAt(s));if(!o||!i.canReplaceWith(s,s,o))return!1;if(e){let l=t.after(),a=r.tr.replaceWith(l,l,o.createAndFill());a.setSelection(v.near(a.doc.resolve(l),1)),e(a.scrollIntoView())}return!0},wc=(r,e)=>{let t=r.selection,{$from:n,$to:i}=t;if(t instanceof pe||n.parent.inlineContent||i.parent.inlineContent)return!1;let s=eo(i.parent.contentMatchAt(i.indexAfter()));if(!s||!s.isTextblock)return!1;if(e){let o=(!n.parentOffset&&i.index(){let{$cursor:t}=r.selection;if(!t||t.parent.content.size)return!1;if(t.depth>1&&t.after()!=t.end(-1)){let s=t.before();if(at(r.doc,s))return e&&e(r.tr.split(s).scrollIntoView()),!0}let n=t.blockRange(),i=n&&bt(n);return i==null?!1:(e&&e(r.tr.lift(n,i).scrollIntoView()),!0)},Tc=(r,e)=>{let{$from:t,to:n}=r.selection,i,s=t.sharedDepth(n);return s==0?!1:(i=t.before(s),e&&e(r.tr.setSelection(M.create(r.doc,i))),!0)};function Oc(r,e,t){let n=e.nodeBefore,i=e.nodeAfter,s=e.index();return!n||!i||!n.type.compatibleContent(i.type)?!1:!n.content.size&&e.parent.canReplace(s-1,s)?(t&&t(r.tr.delete(e.pos-n.nodeSize,e.pos).scrollIntoView()),!0):!e.parent.canReplace(s,s+1)||!(i.isTextblock||Ve(r.doc,e.pos))?!1:(t&&t(r.tr.clearIncompatible(e.pos,n.type,n.contentMatchAt(n.childCount)).join(e.pos).scrollIntoView()),!0)}function to(r,e,t){let n=e.nodeBefore,i=e.nodeAfter,s,o;if(n.type.spec.isolating||i.type.spec.isolating)return!1;if(Oc(r,e,t))return!0;let l=e.parent.canReplace(e.index(),e.index()+1);if(l&&(s=(o=n.contentMatchAt(n.childCount)).findWrapping(i.type))&&o.matchType(s[0]||i.type).validEnd){if(t){let u=e.pos+i.nodeSize,f=b.empty;for(let m=s.length-1;m>=0;m--)f=b.from(s[m].create(null,f));f=b.from(n.copy(f));let h=r.tr.step(new H(e.pos-1,u,e.pos,u,new k(f,1,0),s.length,!0)),p=u+2*s.length;Ve(h.doc,p)&&h.join(p),t(h.scrollIntoView())}return!0}let a=v.findFrom(e,1),c=a&&a.$from.blockRange(a.$to),d=c&&bt(c);if(d!=null&&d>=e.depth)return t&&t(r.tr.lift(c,d).scrollIntoView()),!0;if(l&&mt(i,"start",!0)&&mt(n,"end")){let u=n,f=[];for(;f.push(u),!u.isTextblock;)u=u.lastChild;let h=i,p=1;for(;!h.isTextblock;h=h.firstChild)p++;if(u.canReplace(u.childCount,u.childCount,h.content)){if(t){let m=b.empty;for(let y=f.length-1;y>=0;y--)m=b.from(f[y].copy(m));let g=r.tr.step(new H(e.pos-f.length,e.pos+i.nodeSize,e.pos+p,e.pos+i.nodeSize-p,new k(m,f.length,0),0,!0));t(g.scrollIntoView())}return!0}}return!1}function no(r){return function(e,t){let n=e.selection,i=r<0?n.$from:n.$to,s=i.depth;for(;i.node(s).isInline;){if(!s)return!1;s--}return i.node(s).isTextblock?(t&&t(e.tr.setSelection(C.create(e.doc,r<0?i.start(s):i.end(s)))),!0):!1}}const vc=no(-1),Ac=no(1);function Nc(r,e=null){return function(t,n){let{$from:i,$to:s}=t.selection,o=i.blockRange(s),l=o&&hr(o,r,e);return l?(n&&n(t.tr.wrap(o,l).scrollIntoView()),!0):!1}}function Oi(r,e=null){return function(t,n){let i=!1;for(let s=0;s{if(i)return!1;if(!(!a.isTextblock||a.hasMarkup(r,e)))if(a.type==r)i=!0;else{let d=t.doc.resolve(c),u=d.index();i=d.parent.canReplaceWith(u,u+1,r)}})}if(!i)return!1;if(n){let s=t.tr;for(let o=0;o=2&&i.node(o.depth-1).type.compatibleContent(r)&&o.startIndex==0){if(i.index(o.depth-1)==0)return!1;let d=t.doc.resolve(o.start-2);a=new Gt(d,d,o.depth),o.endIndex=0;d--)s=b.from(t[d].type.create(t[d].attrs,s));r.step(new H(e.start-(n?2:0),e.end,e.start,e.end,new k(s,0,0),t.length,!0));let o=0;for(let d=0;do.childCount>0&&o.firstChild.type==r);return s?t?n.node(s.depth-1).type==r?Rc(e,t,r,s):Pc(e,t,s):!0:!1}}function Rc(r,e,t,n){let i=r.tr,s=n.end,o=n.$to.end(n.depth);sm;p--)h-=i.child(p).nodeSize,n.delete(h-1,h+1);let s=n.doc.resolve(t.start),o=s.nodeAfter;if(n.mapping.map(t.end)!=t.start+s.nodeAfter.nodeSize)return!1;let l=t.startIndex==0,a=t.endIndex==i.childCount,c=s.node(-1),d=s.index(-1);if(!c.canReplace(d+(l?0:1),d+1,o.content.append(a?b.empty:b.from(i))))return!1;let u=s.pos,f=u+o.nodeSize;return n.step(new H(u-(l?1:0),f+(a?1:0),u+1,f-1,new k((l?b.empty:b.from(i.copy(b.empty))).append(a?b.empty:b.from(i.copy(b.empty))),l?0:1,a?0:1),l?0:1)),e(n.scrollIntoView()),!0}function Bc(r){return function(e,t){let{$from:n,$to:i}=e.selection,s=n.blockRange(i,c=>c.childCount>0&&c.firstChild.type==r);if(!s)return!1;let o=s.startIndex;if(o==0)return!1;let l=s.parent,a=l.child(o-1);if(a.type!=r)return!1;if(t){let c=a.lastChild&&a.lastChild.type==l.type,d=b.from(c?r.create():null),u=new k(b.from(r.create(null,b.from(l.type.create(null,d)))),c?3:1,0),f=s.start,h=s.end;t(e.tr.step(new H(f-(c?3:1),h,f,h,u,1,!0)).scrollIntoView())}return!0}}function pn(r){const{state:e,transaction:t}=r;let{selection:n}=t,{doc:i}=t,{storedMarks:s}=t;return{...e,apply:e.apply.bind(e),applyTransaction:e.applyTransaction.bind(e),filterTransaction:e.filterTransaction,plugins:e.plugins,schema:e.schema,reconfigure:e.reconfigure.bind(e),toJSON:e.toJSON.bind(e),get storedMarks(){return s},get selection(){return n},get doc(){return i},get tr(){return n=t.selection,i=t.doc,s=t.storedMarks,t}}}class mn{constructor(e){this.editor=e.editor,this.rawCommands=this.editor.extensionManager.commands,this.customState=e.state}get hasCustomState(){return!!this.customState}get state(){return this.customState||this.editor.state}get commands(){const{rawCommands:e,editor:t,state:n}=this,{view:i}=t,{tr:s}=n,o=this.buildProps(s);return Object.fromEntries(Object.entries(e).map(([l,a])=>[l,(...d)=>{const u=a(...d)(o);return!s.getMeta("preventDispatch")&&!this.hasCustomState&&i.dispatch(s),u}]))}get chain(){return()=>this.createChain()}get can(){return()=>this.createCan()}createChain(e,t=!0){const{rawCommands:n,editor:i,state:s}=this,{view:o}=i,l=[],a=!!e,c=e||s.tr,d=()=>(!a&&t&&!c.getMeta("preventDispatch")&&!this.hasCustomState&&o.dispatch(c),l.every(f=>f===!0)),u={...Object.fromEntries(Object.entries(n).map(([f,h])=>[f,(...m)=>{const g=this.buildProps(c,t),y=h(...m)(g);return l.push(y),u}])),run:d};return u}createCan(e){const{rawCommands:t,state:n}=this,i=!1,s=e||n.tr,o=this.buildProps(s,i);return{...Object.fromEntries(Object.entries(t).map(([a,c])=>[a,(...d)=>c(...d)({...o,dispatch:void 0})])),chain:()=>this.createChain(s,i)}}buildProps(e,t=!0){const{rawCommands:n,editor:i,state:s}=this,{view:o}=i,l={tr:e,editor:i,view:o,state:pn({state:s,transaction:e}),dispatch:t?()=>{}:void 0,chain:()=>this.createChain(e,t),can:()=>this.createCan(e),get commands(){return Object.fromEntries(Object.entries(n).map(([a,c])=>[a,(...d)=>c(...d)(l)]))}};return l}}class Lc{constructor(){this.callbacks={}}on(e,t){return this.callbacks[e]||(this.callbacks[e]=[]),this.callbacks[e].push(t),this}emit(e,...t){const n=this.callbacks[e];return n&&n.forEach(i=>i.apply(this,t)),this}off(e,t){const n=this.callbacks[e];return n&&(t?this.callbacks[e]=n.filter(i=>i!==t):delete this.callbacks[e]),this}removeAllListeners(){this.callbacks={}}}function S(r,e,t){return r.config[e]===void 0&&r.parent?S(r.parent,e,t):typeof r.config[e]=="function"?r.config[e].bind({...t,parent:r.parent?S(r.parent,e,t):null}):r.config[e]}function gn(r){const e=r.filter(i=>i.type==="extension"),t=r.filter(i=>i.type==="node"),n=r.filter(i=>i.type==="mark");return{baseExtensions:e,nodeExtensions:t,markExtensions:n}}function ro(r){const e=[],{nodeExtensions:t,markExtensions:n}=gn(r),i=[...t,...n],s={default:null,rendered:!0,renderHTML:null,parseHTML:null,keepOnSplit:!0,isRequired:!1};return r.forEach(o=>{const l={name:o.name,options:o.options,storage:o.storage},a=S(o,"addGlobalAttributes",l);if(!a)return;a().forEach(d=>{d.types.forEach(u=>{Object.entries(d.attributes).forEach(([f,h])=>{e.push({type:u,name:f,attribute:{...s,...h}})})})})}),i.forEach(o=>{const l={name:o.name,options:o.options,storage:o.storage},a=S(o,"addAttributes",l);if(!a)return;const c=a();Object.entries(c).forEach(([d,u])=>{const f={...s,...u};typeof(f==null?void 0:f.default)=="function"&&(f.default=f.default()),f!=null&&f.isRequired&&(f==null?void 0:f.default)===void 0&&delete f.default,e.push({type:o.name,name:d,attribute:f})})}),e}function j(r,e){if(typeof r=="string"){if(!e.nodes[r])throw Error(`There is no node type named '${r}'. Maybe you forgot to add the extension?`);return e.nodes[r]}return r}function $(...r){return r.filter(e=>!!e).reduce((e,t)=>{const n={...e};return Object.entries(t).forEach(([i,s])=>{if(!n[i]){n[i]=s;return}if(i==="class"){const l=s?s.split(" "):[],a=n[i]?n[i].split(" "):[],c=l.filter(d=>!a.includes(d));n[i]=[...a,...c].join(" ")}else i==="style"?n[i]=[n[i],s].join("; "):n[i]=s}),n},{})}function lr(r,e){return e.filter(t=>t.attribute.rendered).map(t=>t.attribute.renderHTML?t.attribute.renderHTML(r.attrs)||{}:{[t.name]:r.attrs[t.name]}).reduce((t,n)=>$(t,n),{})}function io(r){return typeof r=="function"}function O(r,e=void 0,...t){return io(r)?e?r.bind(e)(...t):r(...t):r}function zc(r={}){return Object.keys(r).length===0&&r.constructor===Object}function Fc(r){return typeof r!="string"?r:r.match(/^[+-]?(?:\d*\.)?\d+$/)?Number(r):r==="true"?!0:r==="false"?!1:r}function vi(r,e){return r.style?r:{...r,getAttrs:t=>{const n=r.getAttrs?r.getAttrs(t):r.attrs;if(n===!1)return!1;const i=e.reduce((s,o)=>{const l=o.attribute.parseHTML?o.attribute.parseHTML(t):Fc(t.getAttribute(o.name));return l==null?s:{...s,[o.name]:l}},{});return{...n,...i}}}}function Ai(r){return Object.fromEntries(Object.entries(r).filter(([e,t])=>e==="attrs"&&zc(t)?!1:t!=null))}function Vc(r,e){var t;const n=ro(r),{nodeExtensions:i,markExtensions:s}=gn(r),o=(t=i.find(c=>S(c,"topNode")))===null||t===void 0?void 0:t.name,l=Object.fromEntries(i.map(c=>{const d=n.filter(y=>y.type===c.name),u={name:c.name,options:c.options,storage:c.storage,editor:e},f=r.reduce((y,x)=>{const N=S(x,"extendNodeSchema",u);return{...y,...N?N(c):{}}},{}),h=Ai({...f,content:O(S(c,"content",u)),marks:O(S(c,"marks",u)),group:O(S(c,"group",u)),inline:O(S(c,"inline",u)),atom:O(S(c,"atom",u)),selectable:O(S(c,"selectable",u)),draggable:O(S(c,"draggable",u)),code:O(S(c,"code",u)),defining:O(S(c,"defining",u)),isolating:O(S(c,"isolating",u)),attrs:Object.fromEntries(d.map(y=>{var x;return[y.name,{default:(x=y==null?void 0:y.attribute)===null||x===void 0?void 0:x.default}]}))}),p=O(S(c,"parseHTML",u));p&&(h.parseDOM=p.map(y=>vi(y,d)));const m=S(c,"renderHTML",u);m&&(h.toDOM=y=>m({node:y,HTMLAttributes:lr(y,d)}));const g=S(c,"renderText",u);return g&&(h.toText=g),[c.name,h]})),a=Object.fromEntries(s.map(c=>{const d=n.filter(g=>g.type===c.name),u={name:c.name,options:c.options,storage:c.storage,editor:e},f=r.reduce((g,y)=>{const x=S(y,"extendMarkSchema",u);return{...g,...x?x(c):{}}},{}),h=Ai({...f,inclusive:O(S(c,"inclusive",u)),excludes:O(S(c,"excludes",u)),group:O(S(c,"group",u)),spanning:O(S(c,"spanning",u)),code:O(S(c,"code",u)),attrs:Object.fromEntries(d.map(g=>{var y;return[g.name,{default:(y=g==null?void 0:g.attribute)===null||y===void 0?void 0:y.default}]}))}),p=O(S(c,"parseHTML",u));p&&(h.parseDOM=p.map(g=>vi(g,d)));const m=S(c,"renderHTML",u);return m&&(h.toDOM=g=>m({mark:g,HTMLAttributes:lr(g,d)})),[c.name,h]}));return new Uo({topNode:o,nodes:l,marks:a})}function Vn(r,e){return e.nodes[r]||e.marks[r]||null}function Ni(r,e){return Array.isArray(e)?e.some(t=>(typeof t=="string"?t:t.name)===r.name):e}const $c=(r,e=500)=>{let t="";const n=r.parentOffset;return r.parent.nodesBetween(Math.max(0,n-e),n,(i,s,o,l)=>{var a,c;const d=((c=(a=i.type.spec).toText)===null||c===void 0?void 0:c.call(a,{node:i,pos:s,parent:o,index:l}))||i.textContent||"%leaf%";t+=d.slice(0,Math.max(0,n-s))}),t};function Tr(r){return Object.prototype.toString.call(r)==="[object RegExp]"}class yn{constructor(e){this.find=e.find,this.handler=e.handler}}const Hc=(r,e)=>{if(Tr(e))return e.exec(r);const t=e(r);if(!t)return null;const n=[t.text];return n.index=t.index,n.input=r,n.data=t.data,t.replaceWith&&(t.text.includes(t.replaceWith)||console.warn('[tiptap warn]: "inputRuleMatch.replaceWith" must be part of "inputRuleMatch.text".'),n.push(t.replaceWith)),n};function $n(r){var e;const{editor:t,from:n,to:i,text:s,rules:o,plugin:l}=r,{view:a}=t;if(a.composing)return!1;const c=a.state.doc.resolve(n);if(c.parent.type.spec.code||!((e=c.nodeBefore||c.nodeAfter)===null||e===void 0)&&e.marks.find(f=>f.type.spec.code))return!1;let d=!1;const u=$c(c)+s;return o.forEach(f=>{if(d)return;const h=Hc(u,f.find);if(!h)return;const p=a.state.tr,m=pn({state:a.state,transaction:p}),g={from:n-(h[0].length-s.length),to:i},{commands:y,chain:x,can:N}=new mn({editor:t,state:m});f.handler({state:m,range:g,match:h,commands:y,chain:x,can:N})===null||!p.steps.length||(p.setMeta(l,{transform:p,from:n,to:i,text:s}),a.dispatch(p),d=!0)}),d}function _c(r){const{editor:e,rules:t}=r,n=new ue({state:{init(){return null},apply(i,s){const o=i.getMeta(n);return o||(i.selectionSet||i.docChanged?null:s)}},props:{handleTextInput(i,s,o,l){return $n({editor:e,from:s,to:o,text:l,rules:t,plugin:n})},handleDOMEvents:{compositionend:i=>(setTimeout(()=>{const{$cursor:s}=i.state.selection;s&&$n({editor:e,from:s.pos,to:s.pos,text:"",rules:t,plugin:n})}),!1)},handleKeyDown(i,s){if(s.key!=="Enter")return!1;const{$cursor:o}=i.state.selection;return o?$n({editor:e,from:o.pos,to:o.pos,text:` -`,rules:t,plugin:n}):!1}},isInputRules:!0});return n}function jc(r){return typeof r=="number"}class Jc{constructor(e){this.find=e.find,this.handler=e.handler}}const Wc=(r,e,t)=>{if(Tr(e))return[...r.matchAll(e)];const n=e(r,t);return n?n.map(i=>{const s=[i.text];return s.index=i.index,s.input=r,s.data=i.data,i.replaceWith&&(i.text.includes(i.replaceWith)||console.warn('[tiptap warn]: "pasteRuleMatch.replaceWith" must be part of "pasteRuleMatch.text".'),s.push(i.replaceWith)),s}):[]};function Kc(r){const{editor:e,state:t,from:n,to:i,rule:s,pasteEvent:o,dropEvent:l}=r,{commands:a,chain:c,can:d}=new mn({editor:e,state:t}),u=[];return t.doc.nodesBetween(n,i,(h,p)=>{if(!h.isTextblock||h.type.spec.code)return;const m=Math.max(n,p),g=Math.min(i,p+h.content.size),y=h.textBetween(m-p,g-p,void 0,"");Wc(y,s.find,o).forEach(N=>{if(N.index===void 0)return;const P=m+N.index+1,B=P+N[0].length,R={from:t.tr.mapping.map(P),to:t.tr.mapping.map(B)},q=s.handler({state:t,range:R,match:N,commands:a,chain:c,can:d,pasteEvent:o,dropEvent:l});u.push(q)})}),u.every(h=>h!==null)}function qc(r){const{editor:e,rules:t}=r;let n=null,i=!1,s=!1,o=new ClipboardEvent("paste"),l=new DragEvent("drop");return t.map(c=>new ue({view(d){const u=f=>{var h;n=!((h=d.dom.parentElement)===null||h===void 0)&&h.contains(f.target)?d.dom.parentElement:null};return window.addEventListener("dragstart",u),{destroy(){window.removeEventListener("dragstart",u)}}},props:{handleDOMEvents:{drop:(d,u)=>(s=n===d.dom.parentElement,l=u,!1),paste:(d,u)=>{var f;const h=(f=u.clipboardData)===null||f===void 0?void 0:f.getData("text/html");return o=u,i=!!(h!=null&&h.includes("data-pm-slice")),!1}}},appendTransaction:(d,u,f)=>{const h=d[0],p=h.getMeta("uiEvent")==="paste"&&!i,m=h.getMeta("uiEvent")==="drop"&&!s;if(!p&&!m)return;const g=u.doc.content.findDiffStart(f.doc.content),y=u.doc.content.findDiffEnd(f.doc.content);if(!jc(g)||!y||g===y.b)return;const x=f.tr,N=pn({state:f,transaction:x});if(!(!Kc({editor:e,state:N,from:Math.max(g-1,0),to:y.b-1,rule:c,pasteEvent:o,dropEvent:l})||!x.steps.length))return l=new DragEvent("drop"),o=new ClipboardEvent("paste"),x}}))}function Uc(r){const e=r.filter((t,n)=>r.indexOf(t)!==n);return[...new Set(e)]}class ot{constructor(e,t){this.splittableMarks=[],this.editor=t,this.extensions=ot.resolve(e),this.schema=Vc(this.extensions,t),this.extensions.forEach(n=>{var i;this.editor.extensionStorage[n.name]=n.storage;const s={name:n.name,options:n.options,storage:n.storage,editor:this.editor,type:Vn(n.name,this.schema)};n.type==="mark"&&(!((i=O(S(n,"keepOnSplit",s)))!==null&&i!==void 0)||i)&&this.splittableMarks.push(n.name);const o=S(n,"onBeforeCreate",s);o&&this.editor.on("beforeCreate",o);const l=S(n,"onCreate",s);l&&this.editor.on("create",l);const a=S(n,"onUpdate",s);a&&this.editor.on("update",a);const c=S(n,"onSelectionUpdate",s);c&&this.editor.on("selectionUpdate",c);const d=S(n,"onTransaction",s);d&&this.editor.on("transaction",d);const u=S(n,"onFocus",s);u&&this.editor.on("focus",u);const f=S(n,"onBlur",s);f&&this.editor.on("blur",f);const h=S(n,"onDestroy",s);h&&this.editor.on("destroy",h)})}static resolve(e){const t=ot.sort(ot.flatten(e)),n=Uc(t.map(i=>i.name));return n.length&&console.warn(`[tiptap warn]: Duplicate extension names found: [${n.map(i=>`'${i}'`).join(", ")}]. This can lead to issues.`),t}static flatten(e){return e.map(t=>{const n={name:t.name,options:t.options,storage:t.storage},i=S(t,"addExtensions",n);return i?[t,...this.flatten(i())]:t}).flat(10)}static sort(e){return e.sort((n,i)=>{const s=S(n,"priority")||100,o=S(i,"priority")||100;return s>o?-1:s{const n={name:t.name,options:t.options,storage:t.storage,editor:this.editor,type:Vn(t.name,this.schema)},i=S(t,"addCommands",n);return i?{...e,...i()}:e},{})}get plugins(){const{editor:e}=this,t=ot.sort([...this.extensions].reverse()),n=[],i=[],s=t.map(o=>{const l={name:o.name,options:o.options,storage:o.storage,editor:e,type:Vn(o.name,this.schema)},a=[],c=S(o,"addKeyboardShortcuts",l);let d={};if(o.type==="mark"&&o.config.exitable&&(d.ArrowRight=()=>we.handleExit({editor:e,mark:o})),c){const m=Object.fromEntries(Object.entries(c()).map(([g,y])=>[g,()=>y({editor:e})]));d={...d,...m}}const u=dc(d);a.push(u);const f=S(o,"addInputRules",l);Ni(o,e.options.enableInputRules)&&f&&n.push(...f());const h=S(o,"addPasteRules",l);Ni(o,e.options.enablePasteRules)&&h&&i.push(...h());const p=S(o,"addProseMirrorPlugins",l);if(p){const m=p();a.push(...m)}return a}).flat();return[_c({editor:e,rules:n}),...qc({editor:e,rules:i}),...s]}get attributes(){return ro(this.extensions)}get nodeViews(){const{editor:e}=this,{nodeExtensions:t}=gn(this.extensions);return Object.fromEntries(t.filter(n=>!!S(n,"addNodeView")).map(n=>{const i=this.attributes.filter(a=>a.type===n.name),s={name:n.name,options:n.options,storage:n.storage,editor:e,type:j(n.name,this.schema)},o=S(n,"addNodeView",s);if(!o)return[];const l=(a,c,d,u)=>{const f=lr(a,i);return o()({editor:e,node:a,getPos:d,decorations:u,HTMLAttributes:f,extension:n})};return[n.name,l]}))}}function Gc(r){return Object.prototype.toString.call(r).slice(8,-1)}function Hn(r){return Gc(r)!=="Object"?!1:r.constructor===Object&&Object.getPrototypeOf(r)===Object.prototype}function bn(r,e){const t={...r};return Hn(r)&&Hn(e)&&Object.keys(e).forEach(n=>{Hn(e[n])?n in r?t[n]=bn(r[n],e[n]):Object.assign(t,{[n]:e[n]}):Object.assign(t,{[n]:e[n]})}),t}class se{constructor(e={}){this.type="extension",this.name="extension",this.parent=null,this.child=null,this.config={name:this.name,defaultOptions:{}},this.config={...this.config,...e},this.name=this.config.name,e.defaultOptions&&console.warn(`[tiptap warn]: BREAKING CHANGE: "defaultOptions" is deprecated. Please use "addOptions" instead. Found in extension: "${this.name}".`),this.options=this.config.defaultOptions,this.config.addOptions&&(this.options=O(S(this,"addOptions",{name:this.name}))),this.storage=O(S(this,"addStorage",{name:this.name,options:this.options}))||{}}static create(e={}){return new se(e)}configure(e={}){const t=this.extend();return t.options=bn(this.options,e),t.storage=O(S(t,"addStorage",{name:t.name,options:t.options})),t}extend(e={}){const t=new se(e);return t.parent=this,this.child=t,t.name=e.name?e.name:t.parent.name,e.defaultOptions&&console.warn(`[tiptap warn]: BREAKING CHANGE: "defaultOptions" is deprecated. Please use "addOptions" instead. Found in extension: "${t.name}".`),t.options=O(S(t,"addOptions",{name:t.name})),t.storage=O(S(t,"addStorage",{name:t.name,options:t.options})),t}}function so(r,e,t){const{from:n,to:i}=e,{blockSeparator:s=` +`);return{dom:a,text:f}}function Ps(r,e,t,n,i){let s=i.parent.type.spec.code,o,l;if(!t&&!e)return null;let a=e&&(n||s||!t);if(a){if(r.someProp("transformPastedText",f=>{e=f(e,s||n,r)}),s)return e?new k(b.from(r.state.schema.text(e.replace(/\r\n?/g,` +`))),0,0):k.empty;let u=r.someProp("clipboardTextParser",f=>f(e,i,n,r));if(u)l=u;else{let f=i.marks(),{schema:h}=r.state,p=ke.fromSchema(h);o=document.createElement("div"),e.split(/(?:\r\n?|\n)+/).forEach(m=>{let g=o.appendChild(document.createElement("p"));m&&g.appendChild(p.serializeNode(h.text(m,f)))})}}else r.someProp("transformPastedHTML",u=>{t=u(t,r)}),o=Sa(t),Bt&&Ma(o);let c=o&&o.querySelector("[data-pm-slice]"),d=c&&/^(\d+) (\d+)(?: -(\d+))? (.*)/.exec(c.getAttribute("data-pm-slice")||"");if(d&&d[3])for(let u=+d[3];u>0;u--){let f=o.firstChild;for(;f&&f.nodeType!=1;)f=f.nextSibling;if(!f)break;o=f}if(l||(l=(r.someProp("clipboardParser")||r.someProp("domParser")||ut.fromSchema(r.state.schema)).parseSlice(o,{preserveWhitespace:!!(a||d),context:i,ruleFromNode(f){return f.nodeName=="BR"&&!f.nextSibling&&f.parentNode&&!ka.test(f.parentNode.nodeName)?{ignore:!0}:null}})),d)l=wa(hi(l,+d[1],+d[2]),d[4]);else if(l=k.maxOpen(xa(l.content,i),!0),l.openStart||l.openEnd){let u=0,f=0;for(let h=l.content.firstChild;u{l=u(l,r)}),l}const ka=/^(a|abbr|acronym|b|cite|code|del|em|i|ins|kbd|label|output|q|ruby|s|samp|span|strong|sub|sup|time|u|tt|var)$/i;function xa(r,e){if(r.childCount<2)return r;for(let t=e.depth;t>=0;t--){let i=e.node(t).contentMatchAt(e.index(t)),s,o=[];if(r.forEach(l=>{if(!o)return;let a=i.findWrapping(l.type),c;if(!a)return o=null;if(c=o.length&&s.length&&Ls(a,s,l,o[o.length-1],0))o[o.length-1]=c;else{o.length&&(o[o.length-1]=zs(o[o.length-1],s.length));let d=Bs(l,a);o.push(d),i=i.matchType(d.type),s=a}}),o)return b.from(o)}return r}function Bs(r,e,t=0){for(let n=e.length-1;n>=t;n--)r=e[n].create(null,b.from(r));return r}function Ls(r,e,t,n,i){if(i1&&(s=0),i=t&&(l=e<0?o.contentMatchAt(0).fillBefore(l,s<=i).append(l):l.append(o.contentMatchAt(o.childCount).fillBefore(b.empty,!0))),r.replaceChild(e<0?0:r.childCount-1,o.copy(l))}function hi(r,e,t){return e]*>)*/.exec(r);e&&(r=r.slice(e[0].length));let t=Vs().createElement("div"),n=/<([a-z][^>\s]+)/i.exec(r),i;if((i=n&&Fs[n[1].toLowerCase()])&&(r=i.map(s=>"<"+s+">").join("")+r+i.map(s=>"").reverse().join("")),t.innerHTML=r,i)for(let s=0;s=0;l-=2){let a=t.nodes[n[l]];if(!a||a.hasRequiredAttrs())break;i=b.from(a.create(n[l+1],i)),s++,o++}return new k(i,s,o)}const te={},ne={},Ca={touchstart:!0,touchmove:!0};class Ta{constructor(){this.shiftKey=!1,this.mouseDown=null,this.lastKeyCode=null,this.lastKeyCodeTime=0,this.lastClick={time:0,x:0,y:0,type:""},this.lastSelectionOrigin=null,this.lastSelectionTime=0,this.lastIOSEnter=0,this.lastIOSEnterFallbackTimeout=-1,this.lastFocus=0,this.lastTouch=0,this.lastAndroidDelete=0,this.composing=!1,this.composingTimeout=-1,this.compositionNodes=[],this.compositionEndedAt=-2e8,this.compositionID=1,this.compositionPendingChanges=0,this.domChangeCount=0,this.eventHandlers=Object.create(null),this.hideSelectionGuard=null}}function Oa(r){for(let e in te){let t=te[e];r.dom.addEventListener(e,r.input.eventHandlers[e]=n=>{Aa(r,n)&&!kr(r,n)&&(r.editable||!(n.type in ne))&&t(r,n)},Ca[e]?{passive:!0}:void 0)}ee&&r.dom.addEventListener("input",()=>null),sr(r)}function Re(r,e){r.input.lastSelectionOrigin=e,r.input.lastSelectionTime=Date.now()}function va(r){r.domObserver.stop();for(let e in r.input.eventHandlers)r.dom.removeEventListener(e,r.input.eventHandlers[e]);clearTimeout(r.input.composingTimeout),clearTimeout(r.input.lastIOSEnterFallbackTimeout)}function sr(r){r.someProp("handleDOMEvents",e=>{for(let t in e)r.input.eventHandlers[t]||r.dom.addEventListener(t,r.input.eventHandlers[t]=n=>kr(r,n))})}function kr(r,e){return r.someProp("handleDOMEvents",t=>{let n=t[e.type];return n?n(r,e)||e.defaultPrevented:!1})}function Aa(r,e){if(!e.bubbles)return!0;if(e.defaultPrevented)return!1;for(let t=e.target;t!=r.dom;t=t.parentNode)if(!t||t.nodeType==11||t.pmViewDesc&&t.pmViewDesc.stopEvent(e))return!1;return!0}function Na(r,e){!kr(r,e)&&te[e.type]&&(r.editable||!(e.type in ne))&&te[e.type](r,e)}ne.keydown=(r,e)=>{let t=e;if(r.input.shiftKey=t.keyCode==16||t.shiftKey,!Hs(r,t)&&(r.input.lastKeyCode=t.keyCode,r.input.lastKeyCodeTime=Date.now(),!(fe&&G&&t.keyCode==13)))if(t.keyCode!=229&&r.domObserver.forceFlush(),pt&&t.keyCode==13&&!t.ctrlKey&&!t.altKey&&!t.metaKey){let n=Date.now();r.input.lastIOSEnter=n,r.input.lastIOSEnterFallbackTimeout=setTimeout(()=>{r.input.lastIOSEnter==n&&(r.someProp("handleKeyDown",i=>i(r,je(13,"Enter"))),r.input.lastIOSEnter=0)},200)}else r.someProp("handleKeyDown",n=>n(r,t))||ba(r,t)?t.preventDefault():Re(r,"key")};ne.keyup=(r,e)=>{e.keyCode==16&&(r.input.shiftKey=!1)};ne.keypress=(r,e)=>{let t=e;if(Hs(r,t)||!t.charCode||t.ctrlKey&&!t.altKey||ae&&t.metaKey)return;if(r.someProp("handleKeyPress",i=>i(r,t))){t.preventDefault();return}let n=r.state.selection;if(!(n instanceof C)||!n.$from.sameParent(n.$to)){let i=String.fromCharCode(t.charCode);!/[\r\n]/.test(i)&&!r.someProp("handleTextInput",s=>s(r,n.$from.pos,n.$to.pos,i))&&r.dispatch(r.state.tr.insertText(i).scrollIntoView()),t.preventDefault()}};function fn(r){return{left:r.clientX,top:r.clientY}}function Ea(r,e){let t=e.x-r.clientX,n=e.y-r.clientY;return t*t+n*n<100}function xr(r,e,t,n,i){if(n==-1)return!1;let s=r.state.doc.resolve(n);for(let o=s.depth+1;o>0;o--)if(r.someProp(e,l=>o>s.depth?l(r,t,s.nodeAfter,s.before(o),i,!0):l(r,t,s.node(o),s.before(o),i,!1)))return!0;return!1}function dt(r,e,t){r.focused||r.focus();let n=r.state.tr.setSelection(e);t=="pointer"&&n.setMeta("pointer",!0),r.dispatch(n)}function Da(r,e){if(e==-1)return!1;let t=r.state.doc.resolve(e),n=t.nodeAfter;return n&&n.isAtom&&M.isSelectable(n)?(dt(r,new M(t),"pointer"),!0):!1}function Ia(r,e){if(e==-1)return!1;let t=r.state.selection,n,i;t instanceof M&&(n=t.node);let s=r.state.doc.resolve(e);for(let o=s.depth+1;o>0;o--){let l=o>s.depth?s.nodeAfter:s.node(o);if(M.isSelectable(l)){n&&t.$from.depth>0&&o>=t.$from.depth&&s.before(t.$from.depth+1)==t.$from.pos?i=s.before(t.$from.depth):i=s.before(o);break}}return i!=null?(dt(r,M.create(r.state.doc,i),"pointer"),!0):!1}function Ra(r,e,t,n,i){return xr(r,"handleClickOn",e,t,n)||r.someProp("handleClick",s=>s(r,e,n))||(i?Ia(r,t):Da(r,t))}function Pa(r,e,t,n){return xr(r,"handleDoubleClickOn",e,t,n)||r.someProp("handleDoubleClick",i=>i(r,e,n))}function Ba(r,e,t,n){return xr(r,"handleTripleClickOn",e,t,n)||r.someProp("handleTripleClick",i=>i(r,e,n))||La(r,t,n)}function La(r,e,t){if(t.button!=0)return!1;let n=r.state.doc;if(e==-1)return n.inlineContent?(dt(r,C.create(n,0,n.content.size),"pointer"),!0):!1;let i=n.resolve(e);for(let s=i.depth+1;s>0;s--){let o=s>i.depth?i.nodeAfter:i.node(s),l=i.before(s);if(o.inlineContent)dt(r,C.create(n,l+1,l+1+o.content.size),"pointer");else if(M.isSelectable(o))dt(r,M.create(n,l),"pointer");else continue;return!0}}function Sr(r){return Qt(r)}const $s=ae?"metaKey":"ctrlKey";te.mousedown=(r,e)=>{let t=e;r.input.shiftKey=t.shiftKey;let n=Sr(r),i=Date.now(),s="singleClick";i-r.input.lastClick.time<500&&Ea(t,r.input.lastClick)&&!t[$s]&&(r.input.lastClick.type=="singleClick"?s="doubleClick":r.input.lastClick.type=="doubleClick"&&(s="tripleClick")),r.input.lastClick={time:i,x:t.clientX,y:t.clientY,type:s};let o=r.posAtCoords(fn(t));o&&(s=="singleClick"?(r.input.mouseDown&&r.input.mouseDown.done(),r.input.mouseDown=new za(r,o,t,!!n)):(s=="doubleClick"?Pa:Ba)(r,o.pos,o.inside,t)?t.preventDefault():Re(r,"pointer"))};class za{constructor(e,t,n,i){this.view=e,this.pos=t,this.event=n,this.flushed=i,this.delayedSelectionSync=!1,this.mightDrag=null,this.startDoc=e.state.doc,this.selectNode=!!n[$s],this.allowDefault=n.shiftKey;let s,o;if(t.inside>-1)s=e.state.doc.nodeAt(t.inside),o=t.inside;else{let d=e.state.doc.resolve(t.pos);s=d.parent,o=d.depth?d.before():0}const l=i?null:n.target,a=l?e.docView.nearestDesc(l,!0):null;this.target=a?a.dom:null;let{selection:c}=e.state;(n.button==0&&s.type.spec.draggable&&s.type.spec.selectable!==!1||c instanceof M&&c.from<=o&&c.to>o)&&(this.mightDrag={node:s,pos:o,addAttr:!!(this.target&&!this.target.draggable),setUneditable:!!(this.target&&me&&!this.target.hasAttribute("contentEditable"))}),this.target&&this.mightDrag&&(this.mightDrag.addAttr||this.mightDrag.setUneditable)&&(this.view.domObserver.stop(),this.mightDrag.addAttr&&(this.target.draggable=!0),this.mightDrag.setUneditable&&setTimeout(()=>{this.view.input.mouseDown==this&&this.target.setAttribute("contentEditable","false")},20),this.view.domObserver.start()),e.root.addEventListener("mouseup",this.up=this.up.bind(this)),e.root.addEventListener("mousemove",this.move=this.move.bind(this)),Re(e,"pointer")}done(){this.view.root.removeEventListener("mouseup",this.up),this.view.root.removeEventListener("mousemove",this.move),this.mightDrag&&this.target&&(this.view.domObserver.stop(),this.mightDrag.addAttr&&this.target.removeAttribute("draggable"),this.mightDrag.setUneditable&&this.target.removeAttribute("contentEditable"),this.view.domObserver.start()),this.delayedSelectionSync&&setTimeout(()=>Oe(this.view)),this.view.input.mouseDown=null}up(e){if(this.done(),!this.view.dom.contains(e.target))return;let t=this.pos;this.view.state.doc!=this.startDoc&&(t=this.view.posAtCoords(fn(e))),this.updateAllowDefault(e),this.allowDefault||!t?Re(this.view,"pointer"):Ra(this.view,t.pos,t.inside,e,this.selectNode)?e.preventDefault():e.button==0&&(this.flushed||ee&&this.mightDrag&&!this.mightDrag.node.isAtom||G&&!this.view.state.selection.visible&&Math.min(Math.abs(t.pos-this.view.state.selection.from),Math.abs(t.pos-this.view.state.selection.to))<=2)?(dt(this.view,v.near(this.view.state.doc.resolve(t.pos)),"pointer"),e.preventDefault()):Re(this.view,"pointer")}move(e){this.updateAllowDefault(e),Re(this.view,"pointer"),e.buttons==0&&this.done()}updateAllowDefault(e){!this.allowDefault&&(Math.abs(this.event.x-e.clientX)>4||Math.abs(this.event.y-e.clientY)>4)&&(this.allowDefault=!0)}}te.touchstart=r=>{r.input.lastTouch=Date.now(),Sr(r),Re(r,"pointer")};te.touchmove=r=>{r.input.lastTouch=Date.now(),Re(r,"pointer")};te.contextmenu=r=>Sr(r);function Hs(r,e){return r.composing?!0:ee&&Math.abs(e.timeStamp-r.input.compositionEndedAt)<500?(r.input.compositionEndedAt=-2e8,!0):!1}const Fa=fe?5e3:-1;ne.compositionstart=ne.compositionupdate=r=>{if(!r.composing){r.domObserver.flush();let{state:e}=r,t=e.selection.$from;if(e.selection.empty&&(e.storedMarks||!t.textOffset&&t.parentOffset&&t.nodeBefore.marks.some(n=>n.type.spec.inclusive===!1)))r.markCursor=r.state.storedMarks||t.marks(),Qt(r,!0),r.markCursor=null;else if(Qt(r),me&&e.selection.empty&&t.parentOffset&&!t.textOffset&&t.nodeBefore.marks.length){let n=r.domSelectionRange();for(let i=n.focusNode,s=n.focusOffset;i&&i.nodeType==1&&s!=0;){let o=s<0?i.lastChild:i.childNodes[s-1];if(!o)break;if(o.nodeType==3){r.domSelection().collapse(o,o.nodeValue.length);break}else i=o,s=-1}}r.input.composing=!0}_s(r,Fa)};ne.compositionend=(r,e)=>{r.composing&&(r.input.composing=!1,r.input.compositionEndedAt=e.timeStamp,r.input.compositionPendingChanges=r.domObserver.pendingRecords().length?r.input.compositionID:0,r.input.compositionPendingChanges&&Promise.resolve().then(()=>r.domObserver.flush()),r.input.compositionID++,_s(r,20))};function _s(r,e){clearTimeout(r.input.composingTimeout),e>-1&&(r.input.composingTimeout=setTimeout(()=>Qt(r),e))}function js(r){for(r.composing&&(r.input.composing=!1,r.input.compositionEndedAt=Va());r.input.compositionNodes.length>0;)r.input.compositionNodes.pop().markParentsDirty()}function Va(){let r=document.createEvent("Event");return r.initEvent("event",!0,!0),r.timeStamp}function Qt(r,e=!1){if(!(fe&&r.domObserver.flushingSoon>=0)){if(r.domObserver.forceFlush(),js(r),e||r.docView&&r.docView.dirty){let t=yr(r);return t&&!t.eq(r.state.selection)?r.dispatch(r.state.tr.setSelection(t)):r.updateState(r.state),!0}return!1}}function $a(r,e){if(!r.dom.parentNode)return;let t=r.dom.parentNode.appendChild(document.createElement("div"));t.appendChild(e),t.style.cssText="position: fixed; left: -10000px; top: 10px";let n=getSelection(),i=document.createRange();i.selectNodeContents(e),r.dom.blur(),n.removeAllRanges(),n.addRange(i),setTimeout(()=>{t.parentNode&&t.parentNode.removeChild(t),r.focus()},50)}const Et=re&&Pe<15||pt&&zl<604;te.copy=ne.cut=(r,e)=>{let t=e,n=r.state.selection,i=t.type=="cut";if(n.empty)return;let s=Et?null:t.clipboardData,o=n.content(),{dom:l,text:a}=Rs(r,o);s?(t.preventDefault(),s.clearData(),s.setData("text/html",l.innerHTML),s.setData("text/plain",a)):$a(r,l),i&&r.dispatch(r.state.tr.deleteSelection().scrollIntoView().setMeta("uiEvent","cut"))};function Ha(r){return r.openStart==0&&r.openEnd==0&&r.content.childCount==1?r.content.firstChild:null}function _a(r,e){if(!r.dom.parentNode)return;let t=r.input.shiftKey||r.state.selection.$from.parent.type.spec.code,n=r.dom.parentNode.appendChild(document.createElement(t?"textarea":"div"));t||(n.contentEditable="true"),n.style.cssText="position: fixed; left: -10000px; top: 10px",n.focus();let i=r.input.shiftKey&&r.input.lastKeyCode!=45;setTimeout(()=>{r.focus(),n.parentNode&&n.parentNode.removeChild(n),t?Dt(r,n.value,null,i,e):Dt(r,n.textContent,n.innerHTML,i,e)},50)}function Dt(r,e,t,n,i){let s=Ps(r,e,t,n,r.state.selection.$from);if(r.someProp("handlePaste",a=>a(r,i,s||k.empty)))return!0;if(!s)return!1;let o=Ha(s),l=o?r.state.tr.replaceSelectionWith(o,n):r.state.tr.replaceSelection(s);return r.dispatch(l.scrollIntoView().setMeta("paste",!0).setMeta("uiEvent","paste")),!0}function Js(r){let e=r.getData("text/plain")||r.getData("Text");if(e)return e;let t=r.getData("text/uri-list");return t?t.replace(/\r?\n/g," "):""}ne.paste=(r,e)=>{let t=e;if(r.composing&&!fe)return;let n=Et?null:t.clipboardData,i=r.input.shiftKey&&r.input.lastKeyCode!=45;n&&Dt(r,Js(n),n.getData("text/html"),i,t)?t.preventDefault():_a(r,t)};class Ws{constructor(e,t,n){this.slice=e,this.move=t,this.node=n}}const qs=ae?"altKey":"ctrlKey";te.dragstart=(r,e)=>{let t=e,n=r.input.mouseDown;if(n&&n.done(),!t.dataTransfer)return;let i=r.state.selection,s=i.empty?null:r.posAtCoords(fn(t)),o;if(!(s&&s.pos>=i.from&&s.pos<=(i instanceof M?i.to-1:i.to))){if(n&&n.mightDrag)o=M.create(r.state.doc,n.mightDrag.pos);else if(t.target&&t.target.nodeType==1){let d=r.docView.nearestDesc(t.target,!0);d&&d.node.type.spec.draggable&&d!=r.docView&&(o=M.create(r.state.doc,d.posBefore))}}let l=(o||r.state.selection).content(),{dom:a,text:c}=Rs(r,l);t.dataTransfer.clearData(),t.dataTransfer.setData(Et?"Text":"text/html",a.innerHTML),t.dataTransfer.effectAllowed="copyMove",Et||t.dataTransfer.setData("text/plain",c),r.dragging=new Ws(l,!t[qs],o)};te.dragend=r=>{let e=r.dragging;window.setTimeout(()=>{r.dragging==e&&(r.dragging=null)},50)};ne.dragover=ne.dragenter=(r,e)=>e.preventDefault();ne.drop=(r,e)=>{let t=e,n=r.dragging;if(r.dragging=null,!t.dataTransfer)return;let i=r.posAtCoords(fn(t));if(!i)return;let s=r.state.doc.resolve(i.pos),o=n&&n.slice;o?r.someProp("transformPasted",p=>{o=p(o,r)}):o=Ps(r,Js(t.dataTransfer),Et?null:t.dataTransfer.getData("text/html"),!1,s);let l=!!(n&&!t[qs]);if(r.someProp("handleDrop",p=>p(r,t,o||k.empty,l))){t.preventDefault();return}if(!o)return;t.preventDefault();let a=o?ds(r.state.doc,s.pos,o):s.pos;a==null&&(a=s.pos);let c=r.state.tr;if(l){let{node:p}=n;p?p.replace(c):c.deleteSelection()}let d=c.mapping.map(a),u=o.openStart==0&&o.openEnd==0&&o.content.childCount==1,f=c.doc;if(u?c.replaceRangeWith(d,d,o.content.firstChild):c.replaceRange(d,d,o),c.doc.eq(f))return;let h=c.doc.resolve(d);if(u&&M.isSelectable(o.content.firstChild)&&h.nodeAfter&&h.nodeAfter.sameMarkup(o.content.firstChild))c.setSelection(new M(h));else{let p=c.mapping.map(a);c.mapping.maps[c.mapping.maps.length-1].forEach((m,g,y,x)=>p=x),c.setSelection(br(r,h,c.doc.resolve(p)))}r.focus(),r.dispatch(c.setMeta("uiEvent","drop"))};te.focus=r=>{r.input.lastFocus=Date.now(),r.focused||(r.domObserver.stop(),r.dom.classList.add("ProseMirror-focused"),r.domObserver.start(),r.focused=!0,setTimeout(()=>{r.docView&&r.hasFocus()&&!r.domObserver.currentSelection.eq(r.domSelectionRange())&&Oe(r)},20))};te.blur=(r,e)=>{let t=e;r.focused&&(r.domObserver.stop(),r.dom.classList.remove("ProseMirror-focused"),r.domObserver.start(),t.relatedTarget&&r.dom.contains(t.relatedTarget)&&r.domObserver.currentSelection.clear(),r.focused=!1)};te.beforeinput=(r,e)=>{if(G&&fe&&e.inputType=="deleteContentBackward"){r.domObserver.flushSoon();let{domChangeCount:n}=r.input;setTimeout(()=>{if(r.input.domChangeCount!=n||(r.dom.blur(),r.focus(),r.someProp("handleKeyDown",s=>s(r,je(8,"Backspace")))))return;let{$cursor:i}=r.state.selection;i&&i.pos>0&&r.dispatch(r.state.tr.delete(i.pos-1,i.pos).scrollIntoView())},50)}};for(let r in ne)te[r]=ne[r];function It(r,e){if(r==e)return!0;for(let t in r)if(r[t]!==e[t])return!1;for(let t in e)if(!(t in r))return!1;return!0}class en{constructor(e,t){this.toDOM=e,this.spec=t||Ye,this.side=this.spec.side||0}map(e,t,n,i){let{pos:s,deleted:o}=e.mapResult(t.from+i,this.side<0?-1:1);return o?null:new ce(s-n,s-n,this)}valid(){return!0}eq(e){return this==e||e instanceof en&&(this.spec.key&&this.spec.key==e.spec.key||this.toDOM==e.toDOM&&It(this.spec,e.spec))}destroy(e){this.spec.destroy&&this.spec.destroy(e)}}class Le{constructor(e,t){this.attrs=e,this.spec=t||Ye}map(e,t,n,i){let s=e.map(t.from+i,this.spec.inclusiveStart?-1:1)-n,o=e.map(t.to+i,this.spec.inclusiveEnd?1:-1)-n;return s>=o?null:new ce(s,o,this)}valid(e,t){return t.from=e&&(!s||s(l.spec))&&n.push(l.copy(l.from+i,l.to+i))}for(let o=0;oe){let l=this.children[o]+1;this.children[o+2].findInner(e-l,t-l,n,i+l,s)}}map(e,t,n){return this==U||e.maps.length==0?this:this.mapInner(e,t,0,0,n||Ye)}mapInner(e,t,n,i,s){let o;for(let l=0;l{let c=a+n,d;if(d=Us(t,l,c)){for(i||(i=this.children.slice());sl&&u.to=e){this.children[l]==e&&(n=this.children[l+2]);break}let s=e+1,o=s+t.content.size;for(let l=0;ls&&a.type instanceof Le){let c=Math.max(s,a.from)-s,d=Math.min(o,a.to)-s;ci.map(e,t,Ye));return Ee.from(n)}forChild(e,t){if(t.isLeaf)return V.empty;let n=[];for(let i=0;it instanceof V)?e:e.reduce((t,n)=>t.concat(n instanceof V?n:n.members),[]))}}}function ja(r,e,t,n,i,s,o){let l=r.slice();for(let c=0,d=s;c{let g=m-p-(h-f);for(let y=0;yx+d-u)continue;let N=l[y]+d-u;h>=N?l[y+1]=f<=N?-2:-1:f>=d&&g&&(l[y]+=g,l[y+1]+=g)}u+=g}),d=t.maps[c].map(d,-1)}let a=!1;for(let c=0;c=n.content.size){a=!0;continue}let f=t.map(r[c+1]+s,-1),h=f-i,{index:p,offset:m}=n.content.findIndex(u),g=n.maybeChild(p);if(g&&m==u&&m+g.nodeSize==h){let y=l[c+2].mapInner(t,g,d+1,r[c]+s+1,o);y!=U?(l[c]=u,l[c+1]=h,l[c+2]=y):(l[c+1]=-2,a=!0)}else a=!0}if(a){let c=Ja(l,r,e,t,i,s,o),d=tn(c,n,0,o);e=d.local;for(let u=0;ut&&o.to{let c=Us(r,l,a+t);if(c){s=!0;let d=tn(c,l,t+a+1,n);d!=U&&i.push(a,a+l.nodeSize,d)}});let o=Ks(s?Gs(r):r,-t).sort(Xe);for(let l=0;l0;)e++;r.splice(e,0,t)}function Pn(r){let e=[];return r.someProp("decorations",t=>{let n=t(r.state);n&&n!=U&&e.push(n)}),r.cursorWrapper&&e.push(V.create(r.state.doc,[r.cursorWrapper.deco])),Ee.from(e)}const Wa={childList:!0,characterData:!0,characterDataOldValue:!0,attributes:!0,attributeOldValue:!0,subtree:!0},qa=re&&Pe<=11;class Ka{constructor(){this.anchorNode=null,this.anchorOffset=0,this.focusNode=null,this.focusOffset=0}set(e){this.anchorNode=e.anchorNode,this.anchorOffset=e.anchorOffset,this.focusNode=e.focusNode,this.focusOffset=e.focusOffset}clear(){this.anchorNode=this.focusNode=null}eq(e){return e.anchorNode==this.anchorNode&&e.anchorOffset==this.anchorOffset&&e.focusNode==this.focusNode&&e.focusOffset==this.focusOffset}}class Ua{constructor(e,t){this.view=e,this.handleDOMChange=t,this.queue=[],this.flushingSoon=-1,this.observer=null,this.currentSelection=new Ka,this.onCharData=null,this.suppressingSelectionUpdates=!1,this.observer=window.MutationObserver&&new window.MutationObserver(n=>{for(let i=0;ii.type=="childList"&&i.removedNodes.length||i.type=="characterData"&&i.oldValue.length>i.target.nodeValue.length)?this.flushSoon():this.flush()}),qa&&(this.onCharData=n=>{this.queue.push({target:n.target,type:"characterData",oldValue:n.prevValue}),this.flushSoon()}),this.onSelectionChange=this.onSelectionChange.bind(this)}flushSoon(){this.flushingSoon<0&&(this.flushingSoon=window.setTimeout(()=>{this.flushingSoon=-1,this.flush()},20))}forceFlush(){this.flushingSoon>-1&&(window.clearTimeout(this.flushingSoon),this.flushingSoon=-1,this.flush())}start(){this.observer&&(this.observer.takeRecords(),this.observer.observe(this.view.dom,Wa)),this.onCharData&&this.view.dom.addEventListener("DOMCharacterDataModified",this.onCharData),this.connectSelection()}stop(){if(this.observer){let e=this.observer.takeRecords();if(e.length){for(let t=0;tthis.flush(),20)}this.observer.disconnect()}this.onCharData&&this.view.dom.removeEventListener("DOMCharacterDataModified",this.onCharData),this.disconnectSelection()}connectSelection(){this.view.dom.ownerDocument.addEventListener("selectionchange",this.onSelectionChange)}disconnectSelection(){this.view.dom.ownerDocument.removeEventListener("selectionchange",this.onSelectionChange)}suppressSelectionUpdates(){this.suppressingSelectionUpdates=!0,setTimeout(()=>this.suppressingSelectionUpdates=!1,50)}onSelectionChange(){if(li(this.view)){if(this.suppressingSelectionUpdates)return Oe(this.view);if(re&&Pe<=11&&!this.view.state.selection.empty){let e=this.view.domSelectionRange();if(e.focusNode&&Qe(e.focusNode,e.focusOffset,e.anchorNode,e.anchorOffset))return this.flushSoon()}this.flush()}}setCurSelection(){this.currentSelection.set(this.view.domSelectionRange())}ignoreSelectionChange(e){if(!e.focusNode)return!0;let t=new Set,n;for(let s=e.focusNode;s;s=Nt(s))t.add(s);for(let s=e.anchorNode;s;s=Nt(s))if(t.has(s)){n=s;break}let i=n&&this.view.docView.nearestDesc(n);if(i&&i.ignoreMutation({type:"selection",target:n.nodeType==3?n.parentNode:n}))return this.setCurSelection(),!0}pendingRecords(){if(this.observer)for(let e of this.observer.takeRecords())this.queue.push(e);return this.queue}flush(){let{view:e}=this;if(!e.docView||this.flushingSoon>-1)return;let t=this.pendingRecords();t.length&&(this.queue=[]);let n=e.domSelectionRange(),i=!this.suppressingSelectionUpdates&&!this.currentSelection.eq(n)&&li(e)&&!this.ignoreSelectionChange(n),s=-1,o=-1,l=!1,a=[];if(e.editable)for(let d=0;d1){let d=a.filter(u=>u.nodeName=="BR");if(d.length==2){let u=d[0],f=d[1];u.parentNode&&u.parentNode.parentNode==f.parentNode?f.remove():u.remove()}}let c=null;s<0&&i&&e.input.lastFocus>Date.now()-200&&Math.max(e.input.lastTouch,e.input.lastClick.time)-1||i)&&(s>-1&&(e.docView.markDirty(s,o),Ga(e)),this.handleDOMChange(s,o,l,a),e.docView&&e.docView.dirty?e.updateState(e.state):this.currentSelection.eq(n)||Oe(e),this.currentSelection.set(n))}registerMutation(e,t){if(t.indexOf(e.target)>-1)return null;let n=this.view.docView.nearestDesc(e.target);if(e.type=="attributes"&&(n==this.view.docView||e.attributeName=="contenteditable"||e.attributeName=="style"&&!e.oldValue&&!e.target.getAttribute("style"))||!n||n.ignoreMutation(e))return null;if(e.type=="childList"){for(let d=0;di;g--){let y=n.childNodes[g-1],x=y.pmViewDesc;if(y.nodeName=="BR"&&!x){s=g;break}if(!x||x.size)break}let u=r.state.doc,f=r.someProp("domParser")||ut.fromSchema(r.state.schema),h=u.resolve(o),p=null,m=f.parse(n,{topNode:h.parent,topMatch:h.parent.contentMatchAt(h.index()),topOpen:!0,from:i,to:s,preserveWhitespace:h.parent.type.whitespace=="pre"?"full":!0,findPositions:c,ruleFromNode:Za,context:h});if(c&&c[0].pos!=null){let g=c[0].pos,y=c[1]&&c[1].pos;y==null&&(y=g),p={anchor:g+o,head:y+o}}return{doc:m,sel:p,from:o,to:l}}function Za(r){let e=r.pmViewDesc;if(e)return e.parseRule();if(r.nodeName=="BR"&&r.parentNode){if(ee&&/^(ul|ol)$/i.test(r.parentNode.nodeName)){let t=document.createElement("div");return t.appendChild(document.createElement("li")),{skip:t}}else if(r.parentNode.lastChild==r||ee&&/^(tr|table)$/i.test(r.parentNode.nodeName))return{ignore:!0}}else if(r.nodeName=="IMG"&&r.getAttribute("mark-placeholder"))return{ignore:!0};return null}const Qa=/^(a|abbr|acronym|b|bd[io]|big|br|button|cite|code|data(list)?|del|dfn|em|i|ins|kbd|label|map|mark|meter|output|q|ruby|s|samp|small|span|strong|su[bp]|time|u|tt|var)$/i;function ec(r,e,t,n,i){let s=r.input.compositionPendingChanges||(r.composing?r.input.compositionID:0);if(r.input.compositionPendingChanges=0,e<0){let A=r.input.lastSelectionTime>Date.now()-50?r.input.lastSelectionOrigin:null,T=yr(r,A);if(T&&!r.state.selection.eq(T)){if(G&&fe&&r.input.lastKeyCode===13&&Date.now()-100mo(r,je(13,"Enter"))))return;let zt=r.state.tr.setSelection(T);A=="pointer"?zt.setMeta("pointer",!0):A=="key"&&zt.scrollIntoView(),s&&zt.setMeta("composition",s),r.dispatch(zt)}return}let o=r.state.doc.resolve(e),l=o.sharedDepth(t);e=o.before(l+1),t=r.state.doc.resolve(t).after(l+1);let a=r.state.selection,c=Xa(r,e,t),d=r.state.doc,u=d.slice(c.from,c.to),f,h;r.input.lastKeyCode===8&&Date.now()-100Date.now()-225||fe)&&i.some(A=>A.nodeType==1&&!Qa.test(A.nodeName))&&(!p||p.endA>=p.endB)&&r.someProp("handleKeyDown",A=>A(r,je(13,"Enter")))){r.input.lastIOSEnter=0;return}if(!p)if(n&&a instanceof C&&!a.empty&&a.$head.sameParent(a.$anchor)&&!r.composing&&!(c.sel&&c.sel.anchor!=c.sel.head))p={start:a.from,endA:a.to,endB:a.to};else{if(c.sel){let A=bi(r,r.state.doc,c.sel);if(A&&!A.eq(r.state.selection)){let T=r.state.tr.setSelection(A);s&&T.setMeta("composition",s),r.dispatch(T)}}return}if(G&&r.cursorWrapper&&c.sel&&c.sel.anchor==r.cursorWrapper.deco.from&&c.sel.head==c.sel.anchor){let A=p.endB-p.start;c.sel={anchor:c.sel.anchor+A,head:c.sel.anchor+A}}r.input.domChangeCount++,r.state.selection.fromr.state.selection.from&&p.start<=r.state.selection.from+2&&r.state.selection.from>=c.from?p.start=r.state.selection.from:p.endA=r.state.selection.to-2&&r.state.selection.to<=c.to&&(p.endB+=r.state.selection.to-p.endA,p.endA=r.state.selection.to)),re&&Pe<=11&&p.endB==p.start+1&&p.endA==p.start&&p.start>c.from&&c.doc.textBetween(p.start-c.from-1,p.start-c.from+1)=="  "&&(p.start--,p.endA--,p.endB--);let m=c.doc.resolveNoCache(p.start-c.from),g=c.doc.resolveNoCache(p.endB-c.from),y=d.resolve(p.start),x=m.sameParent(g)&&m.parent.inlineContent&&y.end()>=p.endA,N;if((pt&&r.input.lastIOSEnter>Date.now()-225&&(!x||i.some(A=>A.nodeName=="DIV"||A.nodeName=="P"))||!x&&m.posA(r,je(13,"Enter")))){r.input.lastIOSEnter=0;return}if(r.state.selection.anchor>p.start&&nc(d,p.start,p.endA,m,g)&&r.someProp("handleKeyDown",A=>A(r,je(8,"Backspace")))){fe&&G&&r.domObserver.suppressSelectionUpdates();return}G&&fe&&p.endB==p.start&&(r.input.lastAndroidDelete=Date.now()),fe&&!x&&m.start()!=g.start()&&g.parentOffset==0&&m.depth==g.depth&&c.sel&&c.sel.anchor==c.sel.head&&c.sel.head==p.endA&&(p.endB-=2,g=c.doc.resolveNoCache(p.endB-c.from),setTimeout(()=>{r.someProp("handleKeyDown",function(A){return A(r,je(13,"Enter"))})},20));let P=p.start,B=p.endA,R,K,ge;if(x){if(m.pos==g.pos)re&&Pe<=11&&m.parentOffset==0&&(r.domObserver.suppressSelectionUpdates(),setTimeout(()=>Oe(r),20)),R=r.state.tr.delete(P,B),K=d.resolve(p.start).marksAcross(d.resolve(p.endA));else if(p.endA==p.endB&&(ge=tc(m.parent.content.cut(m.parentOffset,g.parentOffset),y.parent.content.cut(y.parentOffset,p.endA-y.start()))))R=r.state.tr,ge.type=="add"?R.addMark(P,B,ge.mark):R.removeMark(P,B,ge.mark);else if(m.parent.child(m.index()).isText&&m.index()==g.index()-(g.textOffset?0:1)){let A=m.parent.textBetween(m.parentOffset,g.parentOffset);if(r.someProp("handleTextInput",T=>T(r,P,B,A)))return;R=r.state.tr.insertText(A,P,B)}}if(R||(R=r.state.tr.replace(P,B,c.doc.slice(p.start-c.from,p.endB-c.from))),c.sel){let A=bi(r,R.doc,c.sel);A&&!(G&&fe&&r.composing&&A.empty&&(p.start!=p.endB||r.input.lastAndroidDeletee.content.size?null:br(r,e.resolve(t.anchor),e.resolve(t.head))}function tc(r,e){let t=r.firstChild.marks,n=e.firstChild.marks,i=t,s=n,o,l,a;for(let d=0;dd.mark(l.addToSet(d.marks));else if(i.length==0&&s.length==1)l=s[0],o="remove",a=d=>d.mark(l.removeFromSet(d.marks));else return null;let c=[];for(let d=0;dt||Bn(o,!0,!1)0&&(e||r.indexAfter(n)==r.node(n).childCount);)n--,i++,e=!1;if(t){let s=r.node(n).maybeChild(r.indexAfter(n));for(;s&&!s.isLeaf;)s=s.firstChild,i++}return i}function rc(r,e,t,n,i){let s=r.findDiffStart(e,t);if(s==null)return null;let{a:o,b:l}=r.findDiffEnd(e,t+r.size,t+e.size);if(i=="end"){let a=Math.max(0,s-Math.min(o,l));n-=o+a-s}if(o=o?s-n:0;s-=a,s&&s=l?s-n:0;s-=a,s&&s=56320&&e<=57343&&t>=55296&&t<=56319}class ic{constructor(e,t){this._root=null,this.focused=!1,this.trackWrites=null,this.mounted=!1,this.markCursor=null,this.cursorWrapper=null,this.lastSelectedViewDesc=void 0,this.input=new Ta,this.prevDirectPlugins=[],this.pluginViews=[],this.requiresGeckoHackNode=!1,this.dragging=null,this._props=t,this.state=t.state,this.directPlugins=t.plugins||[],this.directPlugins.forEach(Ci),this.dispatch=this.dispatch.bind(this),this.dom=e&&e.mount||document.createElement("div"),e&&(e.appendChild?e.appendChild(this.dom):typeof e=="function"?e(this.dom):e.mount&&(this.mounted=!0)),this.editable=Mi(this),Si(this),this.nodeViews=wi(this),this.docView=ti(this.state.doc,xi(this),Pn(this),this.dom,this),this.domObserver=new Ua(this,(n,i,s,o)=>ec(this,n,i,s,o)),this.domObserver.start(),Oa(this),this.updatePluginViews()}get composing(){return this.input.composing}get props(){if(this._props.state!=this.state){let e=this._props;this._props={};for(let t in e)this._props[t]=e[t];this._props.state=this.state}return this._props}update(e){e.handleDOMEvents!=this._props.handleDOMEvents&&sr(this);let t=this._props;this._props=e,e.plugins&&(e.plugins.forEach(Ci),this.directPlugins=e.plugins),this.updateStateInner(e.state,t)}setProps(e){let t={};for(let n in this._props)t[n]=this._props[n];t.state=this.state;for(let n in e)t[n]=e[n];this.update(t)}updateState(e){this.updateStateInner(e,this._props)}updateStateInner(e,t){var n;let i=this.state,s=!1,o=!1;e.storedMarks&&this.composing&&(js(this),o=!0),this.state=e;let l=i.plugins!=e.plugins||this._props.plugins!=t.plugins;if(l||this._props.plugins!=t.plugins||this._props.nodeViews!=t.nodeViews){let h=wi(this);oc(h,this.nodeViews)&&(this.nodeViews=h,s=!0)}(l||t.handleDOMEvents!=this._props.handleDOMEvents)&&sr(this),this.editable=Mi(this),Si(this);let a=Pn(this),c=xi(this),d=i.plugins!=e.plugins&&!i.doc.eq(e.doc)?"reset":e.scrollToSelection>i.scrollToSelection?"to selection":"preserve",u=s||!this.docView.matchesNode(e.doc,c,a);(u||!e.selection.eq(i.selection))&&(o=!0);let f=d=="preserve"&&o&&this.dom.style.overflowAnchor==null&&$l(this);if(o){this.domObserver.stop();let h=u&&(re||G)&&!this.composing&&!i.selection.empty&&!e.selection.empty&&sc(i.selection,e.selection);if(u){let p=G?this.trackWrites=this.domSelectionRange().focusNode:null;(s||!this.docView.update(e.doc,c,a,this))&&(this.docView.updateOuterDeco([]),this.docView.destroy(),this.docView=ti(e.doc,c,a,this.dom,this)),p&&!this.trackWrites&&(h=!0)}h||!(this.input.mouseDown&&this.domObserver.currentSelection.eq(this.domSelectionRange())&&ua(this))?Oe(this,h):(Es(this,e.selection),this.domObserver.setCurSelection()),this.domObserver.start()}this.updatePluginViews(i),!((n=this.dragging)===null||n===void 0)&&n.node&&!i.doc.eq(e.doc)&&this.updateDraggedNode(this.dragging,i),d=="reset"?this.dom.scrollTop=0:d=="to selection"?this.scrollToSelection():f&&Hl(f)}scrollToSelection(){let e=this.domSelectionRange().focusNode;if(!this.someProp("handleScrollToSelection",t=>t(this)))if(this.state.selection instanceof M){let t=this.docView.domAfterPos(this.state.selection.from);t.nodeType==1&&Gr(this,t.getBoundingClientRect(),e)}else Gr(this,this.coordsAtPos(this.state.selection.head,1),e)}destroyPluginViews(){let e;for(;e=this.pluginViews.pop();)e.destroy&&e.destroy()}updatePluginViews(e){if(!e||e.plugins!=this.state.plugins||this.directPlugins!=this.prevDirectPlugins){this.prevDirectPlugins=this.directPlugins,this.destroyPluginViews();for(let t=0;t0&&this.state.doc.nodeAt(s))==n.node&&(i=s)}this.dragging=new Ws(e.slice,e.move,i<0?void 0:M.create(this.state.doc,i))}someProp(e,t){let n=this._props&&this._props[e],i;if(n!=null&&(i=t?t(n):n))return i;for(let o=0;ot.ownerDocument.getSelection()),this._root=t}return e||document}updateRoot(){this._root=null}posAtCoords(e){return Kl(this,e)}coordsAtPos(e,t=1){return Ms(this,e,t)}domAtPos(e,t=0){return this.docView.domFromPos(e,t)}nodeDOM(e){let t=this.docView.descAt(e);return t?t.nodeDOM:null}posAtDOM(e,t,n=-1){let i=this.docView.posFromDOM(e,t,n);if(i==null)throw new RangeError("DOM position not inside the editor");return i}endOfTextblock(e,t){return Zl(this,t||this.state,e)}pasteHTML(e,t){return Dt(this,"",e,!1,t||new ClipboardEvent("paste"))}pasteText(e,t){return Dt(this,e,null,!0,t||new ClipboardEvent("paste"))}destroy(){this.docView&&(va(this),this.destroyPluginViews(),this.mounted?(this.docView.update(this.state.doc,[],Pn(this),this),this.dom.textContent=""):this.dom.parentNode&&this.dom.parentNode.removeChild(this.dom),this.docView.destroy(),this.docView=null)}get isDestroyed(){return this.docView==null}dispatchEvent(e){return Na(this,e)}dispatch(e){let t=this._props.dispatchTransaction;t?t.call(this,e):this.updateState(this.state.apply(e))}domSelectionRange(){return ee&&this.root.nodeType===11&&Rl(this.dom.ownerDocument)==this.dom?Ya(this):this.domSelection()}domSelection(){return this.root.getSelection()}}function xi(r){let e=Object.create(null);return e.class="ProseMirror",e.contenteditable=String(r.editable),r.someProp("attributes",t=>{if(typeof t=="function"&&(t=t(r.state)),t)for(let n in t)n=="class"?e.class+=" "+t[n]:n=="style"?e.style=(e.style?e.style+";":"")+t[n]:!e[n]&&n!="contenteditable"&&n!="nodeName"&&(e[n]=String(t[n]))}),e.translate||(e.translate="no"),[ce.node(0,r.state.doc.content.size,e)]}function Si(r){if(r.markCursor){let e=document.createElement("img");e.className="ProseMirror-separator",e.setAttribute("mark-placeholder","true"),e.setAttribute("alt",""),r.cursorWrapper={dom:e,deco:ce.widget(r.state.selection.head,e,{raw:!0,marks:r.markCursor})}}else r.cursorWrapper=null}function Mi(r){return!r.someProp("editable",e=>e(r.state)===!1)}function sc(r,e){let t=Math.min(r.$anchor.sharedDepth(r.head),e.$anchor.sharedDepth(e.head));return r.$anchor.start(t)!=e.$anchor.start(t)}function wi(r){let e=Object.create(null);function t(n){for(let i in n)Object.prototype.hasOwnProperty.call(e,i)||(e[i]=n[i])}return r.someProp("nodeViews",t),r.someProp("markViews",t),e}function oc(r,e){let t=0,n=0;for(let i in r){if(r[i]!=e[i])return!0;t++}for(let i in e)n++;return t!=n}function Ci(r){if(r.spec.state||r.spec.filterTransaction||r.spec.appendTransaction)throw new RangeError("Plugins passed directly to the view must not have a state component")}var Fe={8:"Backspace",9:"Tab",10:"Enter",12:"NumLock",13:"Enter",16:"Shift",17:"Control",18:"Alt",20:"CapsLock",27:"Escape",32:" ",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",44:"PrintScreen",45:"Insert",46:"Delete",59:";",61:"=",91:"Meta",92:"Meta",106:"*",107:"+",108:",",109:"-",110:".",111:"/",144:"NumLock",145:"ScrollLock",160:"Shift",161:"Shift",162:"Control",163:"Control",164:"Alt",165:"Alt",173:"-",186:";",187:"=",188:",",189:"-",190:".",191:"/",192:"`",219:"[",220:"\\",221:"]",222:"'"},nn={48:")",49:"!",50:"@",51:"#",52:"$",53:"%",54:"^",55:"&",56:"*",57:"(",59:":",61:"+",173:"_",186:":",187:"+",188:"<",189:"_",190:">",191:"?",192:"~",219:"{",220:"|",221:"}",222:'"'},lc=typeof navigator<"u"&&/Mac/.test(navigator.platform),ac=typeof navigator<"u"&&/MSIE \d|Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(navigator.userAgent);for(var q=0;q<10;q++)Fe[48+q]=Fe[96+q]=String(q);for(var q=1;q<=24;q++)Fe[q+111]="F"+q;for(var q=65;q<=90;q++)Fe[q]=String.fromCharCode(q+32),nn[q]=String.fromCharCode(q);for(var Ln in Fe)nn.hasOwnProperty(Ln)||(nn[Ln]=Fe[Ln]);function cc(r){var e=lc&&r.metaKey&&r.shiftKey&&!r.ctrlKey&&!r.altKey||ac&&r.shiftKey&&r.key&&r.key.length==1||r.key=="Unidentified",t=!e&&r.key||(r.shiftKey?nn:Fe)[r.keyCode]||r.key||"Unidentified";return t=="Esc"&&(t="Escape"),t=="Del"&&(t="Delete"),t=="Left"&&(t="ArrowLeft"),t=="Up"&&(t="ArrowUp"),t=="Right"&&(t="ArrowRight"),t=="Down"&&(t="ArrowDown"),t}const dc=typeof navigator<"u"?/Mac|iP(hone|[oa]d)/.test(navigator.platform):!1;function uc(r){let e=r.split(/-(?!$)/),t=e[e.length-1];t=="Space"&&(t=" ");let n,i,s,o;for(let l=0;l127)&&(s=Fe[n.keyCode])&&s!=i){let l=e[zn(s,n)];if(l&&l(t.state,t.dispatch,t))return!0}}return!1}}const pc=(r,e)=>r.selection.empty?!1:(e&&e(r.tr.deleteSelection().scrollIntoView()),!0);function mc(r,e){let{$cursor:t}=r.selection;return!t||(e?!e.endOfTextblock("backward",r):t.parentOffset>0)?null:t}const gc=(r,e,t)=>{let n=mc(r,t);if(!n)return!1;let i=Xs(n);if(!i){let o=n.blockRange(),l=o&&bt(o);return l==null?!1:(e&&e(r.tr.lift(o,l).scrollIntoView()),!0)}let s=i.nodeBefore;if(!s.type.spec.isolating&&eo(r,i,e))return!0;if(n.parent.content.size==0&&(mt(s,"end")||M.isSelectable(s))){let o=hr(r.doc,n.before(),n.after(),k.empty);if(o&&o.slice.size{let{$head:n,empty:i}=r.selection,s=n;if(!i)return!1;if(n.parent.isTextblock){if(t?!t.endOfTextblock("backward",r):n.parentOffset>0)return!1;s=Xs(n)}let o=s&&s.nodeBefore;return!o||!M.isSelectable(o)?!1:(e&&e(r.tr.setSelection(M.create(r.doc,s.pos-o.nodeSize)).scrollIntoView()),!0)};function Xs(r){if(!r.parent.type.spec.isolating)for(let e=r.depth-1;e>=0;e--){if(r.index(e)>0)return r.doc.resolve(r.before(e+1));if(r.node(e).type.spec.isolating)break}return null}function bc(r,e){let{$cursor:t}=r.selection;return!t||(e?!e.endOfTextblock("forward",r):t.parentOffset{let n=bc(r,t);if(!n)return!1;let i=Zs(n);if(!i)return!1;let s=i.nodeAfter;if(eo(r,i,e))return!0;if(n.parent.content.size==0&&(mt(s,"start")||M.isSelectable(s))){let o=hr(r.doc,n.before(),n.after(),k.empty);if(o&&o.slice.size{let{$head:n,empty:i}=r.selection,s=n;if(!i)return!1;if(n.parent.isTextblock){if(t?!t.endOfTextblock("forward",r):n.parentOffset=0;e--){let t=r.node(e);if(r.index(e)+1{let t=r.selection,n=t instanceof M,i;if(n){if(t.node.isTextblock||!Ve(r.doc,t.from))return!1;i=t.from}else if(i=an(r.doc,t.from,-1),i==null)return!1;if(e){let s=r.tr.join(i);n&&s.setSelection(M.create(s.doc,i-r.doc.resolve(i).nodeBefore.nodeSize)),e(s.scrollIntoView())}return!0},Mc=(r,e)=>{let t=r.selection,n;if(t instanceof M){if(t.node.isTextblock||!Ve(r.doc,t.to))return!1;n=t.to}else if(n=an(r.doc,t.to,1),n==null)return!1;return e&&e(r.tr.join(n).scrollIntoView()),!0},wc=(r,e)=>{let{$from:t,$to:n}=r.selection,i=t.blockRange(n),s=i&&bt(i);return s==null?!1:(e&&e(r.tr.lift(i,s).scrollIntoView()),!0)},Cc=(r,e)=>{let{$head:t,$anchor:n}=r.selection;return!t.parent.type.spec.code||!t.sameParent(n)?!1:(e&&e(r.tr.insertText(` +`).scrollIntoView()),!0)};function Qs(r){for(let e=0;e{let{$head:t,$anchor:n}=r.selection;if(!t.parent.type.spec.code||!t.sameParent(n))return!1;let i=t.node(-1),s=t.indexAfter(-1),o=Qs(i.contentMatchAt(s));if(!o||!i.canReplaceWith(s,s,o))return!1;if(e){let l=t.after(),a=r.tr.replaceWith(l,l,o.createAndFill());a.setSelection(v.near(a.doc.resolve(l),1)),e(a.scrollIntoView())}return!0},Oc=(r,e)=>{let t=r.selection,{$from:n,$to:i}=t;if(t instanceof pe||n.parent.inlineContent||i.parent.inlineContent)return!1;let s=Qs(i.parent.contentMatchAt(i.indexAfter()));if(!s||!s.isTextblock)return!1;if(e){let o=(!n.parentOffset&&i.index(){let{$cursor:t}=r.selection;if(!t||t.parent.content.size)return!1;if(t.depth>1&&t.after()!=t.end(-1)){let s=t.before();if(at(r.doc,s))return e&&e(r.tr.split(s).scrollIntoView()),!0}let n=t.blockRange(),i=n&&bt(n);return i==null?!1:(e&&e(r.tr.lift(n,i).scrollIntoView()),!0)},Ac=(r,e)=>{let{$from:t,to:n}=r.selection,i,s=t.sharedDepth(n);return s==0?!1:(i=t.before(s),e&&e(r.tr.setSelection(M.create(r.doc,i))),!0)};function Nc(r,e,t){let n=e.nodeBefore,i=e.nodeAfter,s=e.index();return!n||!i||!n.type.compatibleContent(i.type)?!1:!n.content.size&&e.parent.canReplace(s-1,s)?(t&&t(r.tr.delete(e.pos-n.nodeSize,e.pos).scrollIntoView()),!0):!e.parent.canReplace(s,s+1)||!(i.isTextblock||Ve(r.doc,e.pos))?!1:(t&&t(r.tr.clearIncompatible(e.pos,n.type,n.contentMatchAt(n.childCount)).join(e.pos).scrollIntoView()),!0)}function eo(r,e,t){let n=e.nodeBefore,i=e.nodeAfter,s,o;if(n.type.spec.isolating||i.type.spec.isolating)return!1;if(Nc(r,e,t))return!0;let l=e.parent.canReplace(e.index(),e.index()+1);if(l&&(s=(o=n.contentMatchAt(n.childCount)).findWrapping(i.type))&&o.matchType(s[0]||i.type).validEnd){if(t){let u=e.pos+i.nodeSize,f=b.empty;for(let m=s.length-1;m>=0;m--)f=b.from(s[m].create(null,f));f=b.from(n.copy(f));let h=r.tr.step(new H(e.pos-1,u,e.pos,u,new k(f,1,0),s.length,!0)),p=u+2*s.length;Ve(h.doc,p)&&h.join(p),t(h.scrollIntoView())}return!0}let a=v.findFrom(e,1),c=a&&a.$from.blockRange(a.$to),d=c&&bt(c);if(d!=null&&d>=e.depth)return t&&t(r.tr.lift(c,d).scrollIntoView()),!0;if(l&&mt(i,"start",!0)&&mt(n,"end")){let u=n,f=[];for(;f.push(u),!u.isTextblock;)u=u.lastChild;let h=i,p=1;for(;!h.isTextblock;h=h.firstChild)p++;if(u.canReplace(u.childCount,u.childCount,h.content)){if(t){let m=b.empty;for(let y=f.length-1;y>=0;y--)m=b.from(f[y].copy(m));let g=r.tr.step(new H(e.pos-f.length,e.pos+i.nodeSize,e.pos+p,e.pos+i.nodeSize-p,new k(m,f.length,0),0,!0));t(g.scrollIntoView())}return!0}}return!1}function to(r){return function(e,t){let n=e.selection,i=r<0?n.$from:n.$to,s=i.depth;for(;i.node(s).isInline;){if(!s)return!1;s--}return i.node(s).isTextblock?(t&&t(e.tr.setSelection(C.create(e.doc,r<0?i.start(s):i.end(s)))),!0):!1}}const Ec=to(-1),Dc=to(1);function Ic(r,e=null){return function(t,n){let{$from:i,$to:s}=t.selection,o=i.blockRange(s),l=o&&fr(o,r,e);return l?(n&&n(t.tr.wrap(o,l).scrollIntoView()),!0):!1}}function Ti(r,e=null){return function(t,n){let i=!1;for(let s=0;s{if(i)return!1;if(!(!a.isTextblock||a.hasMarkup(r,e)))if(a.type==r)i=!0;else{let d=t.doc.resolve(c),u=d.index();i=d.parent.canReplaceWith(u,u+1,r)}})}if(!i)return!1;if(n){let s=t.tr;for(let o=0;o=2&&i.node(o.depth-1).type.compatibleContent(r)&&o.startIndex==0){if(i.index(o.depth-1)==0)return!1;let d=t.doc.resolve(o.start-2);a=new Ut(d,d,o.depth),o.endIndex=0;d--)s=b.from(t[d].type.create(t[d].attrs,s));r.step(new H(e.start-(n?2:0),e.end,e.start,e.end,new k(s,0,0),t.length,!0));let o=0;for(let d=0;do.childCount>0&&o.firstChild.type==r);return s?t?n.node(s.depth-1).type==r?Lc(e,t,r,s):zc(e,t,s):!0:!1}}function Lc(r,e,t,n){let i=r.tr,s=n.end,o=n.$to.end(n.depth);sm;p--)h-=i.child(p).nodeSize,n.delete(h-1,h+1);let s=n.doc.resolve(t.start),o=s.nodeAfter;if(n.mapping.map(t.end)!=t.start+s.nodeAfter.nodeSize)return!1;let l=t.startIndex==0,a=t.endIndex==i.childCount,c=s.node(-1),d=s.index(-1);if(!c.canReplace(d+(l?0:1),d+1,o.content.append(a?b.empty:b.from(i))))return!1;let u=s.pos,f=u+o.nodeSize;return n.step(new H(u-(l?1:0),f+(a?1:0),u+1,f-1,new k((l?b.empty:b.from(i.copy(b.empty))).append(a?b.empty:b.from(i.copy(b.empty))),l?0:1,a?0:1),l?0:1)),e(n.scrollIntoView()),!0}function Fc(r){return function(e,t){let{$from:n,$to:i}=e.selection,s=n.blockRange(i,c=>c.childCount>0&&c.firstChild.type==r);if(!s)return!1;let o=s.startIndex;if(o==0)return!1;let l=s.parent,a=l.child(o-1);if(a.type!=r)return!1;if(t){let c=a.lastChild&&a.lastChild.type==l.type,d=b.from(c?r.create():null),u=new k(b.from(r.create(null,b.from(l.type.create(null,d)))),c?3:1,0),f=s.start,h=s.end;t(e.tr.step(new H(f-(c?3:1),h,f,h,u,1,!0)).scrollIntoView())}return!0}}function hn(r){const{state:e,transaction:t}=r;let{selection:n}=t,{doc:i}=t,{storedMarks:s}=t;return{...e,apply:e.apply.bind(e),applyTransaction:e.applyTransaction.bind(e),filterTransaction:e.filterTransaction,plugins:e.plugins,schema:e.schema,reconfigure:e.reconfigure.bind(e),toJSON:e.toJSON.bind(e),get storedMarks(){return s},get selection(){return n},get doc(){return i},get tr(){return n=t.selection,i=t.doc,s=t.storedMarks,t}}}class pn{constructor(e){this.editor=e.editor,this.rawCommands=this.editor.extensionManager.commands,this.customState=e.state}get hasCustomState(){return!!this.customState}get state(){return this.customState||this.editor.state}get commands(){const{rawCommands:e,editor:t,state:n}=this,{view:i}=t,{tr:s}=n,o=this.buildProps(s);return Object.fromEntries(Object.entries(e).map(([l,a])=>[l,(...d)=>{const u=a(...d)(o);return!s.getMeta("preventDispatch")&&!this.hasCustomState&&i.dispatch(s),u}]))}get chain(){return()=>this.createChain()}get can(){return()=>this.createCan()}createChain(e,t=!0){const{rawCommands:n,editor:i,state:s}=this,{view:o}=i,l=[],a=!!e,c=e||s.tr,d=()=>(!a&&t&&!c.getMeta("preventDispatch")&&!this.hasCustomState&&o.dispatch(c),l.every(f=>f===!0)),u={...Object.fromEntries(Object.entries(n).map(([f,h])=>[f,(...m)=>{const g=this.buildProps(c,t),y=h(...m)(g);return l.push(y),u}])),run:d};return u}createCan(e){const{rawCommands:t,state:n}=this,i=!1,s=e||n.tr,o=this.buildProps(s,i);return{...Object.fromEntries(Object.entries(t).map(([a,c])=>[a,(...d)=>c(...d)({...o,dispatch:void 0})])),chain:()=>this.createChain(s,i)}}buildProps(e,t=!0){const{rawCommands:n,editor:i,state:s}=this,{view:o}=i,l={tr:e,editor:i,view:o,state:hn({state:s,transaction:e}),dispatch:t?()=>{}:void 0,chain:()=>this.createChain(e,t),can:()=>this.createCan(e),get commands(){return Object.fromEntries(Object.entries(n).map(([a,c])=>[a,(...d)=>c(...d)(l)]))}};return l}}class Vc{constructor(){this.callbacks={}}on(e,t){return this.callbacks[e]||(this.callbacks[e]=[]),this.callbacks[e].push(t),this}emit(e,...t){const n=this.callbacks[e];return n&&n.forEach(i=>i.apply(this,t)),this}off(e,t){const n=this.callbacks[e];return n&&(t?this.callbacks[e]=n.filter(i=>i!==t):delete this.callbacks[e]),this}removeAllListeners(){this.callbacks={}}}function S(r,e,t){return r.config[e]===void 0&&r.parent?S(r.parent,e,t):typeof r.config[e]=="function"?r.config[e].bind({...t,parent:r.parent?S(r.parent,e,t):null}):r.config[e]}function mn(r){const e=r.filter(i=>i.type==="extension"),t=r.filter(i=>i.type==="node"),n=r.filter(i=>i.type==="mark");return{baseExtensions:e,nodeExtensions:t,markExtensions:n}}function no(r){const e=[],{nodeExtensions:t,markExtensions:n}=mn(r),i=[...t,...n],s={default:null,rendered:!0,renderHTML:null,parseHTML:null,keepOnSplit:!0,isRequired:!1};return r.forEach(o=>{const l={name:o.name,options:o.options,storage:o.storage},a=S(o,"addGlobalAttributes",l);if(!a)return;a().forEach(d=>{d.types.forEach(u=>{Object.entries(d.attributes).forEach(([f,h])=>{e.push({type:u,name:f,attribute:{...s,...h}})})})})}),i.forEach(o=>{const l={name:o.name,options:o.options,storage:o.storage},a=S(o,"addAttributes",l);if(!a)return;const c=a();Object.entries(c).forEach(([d,u])=>{const f={...s,...u};typeof(f==null?void 0:f.default)=="function"&&(f.default=f.default()),f!=null&&f.isRequired&&(f==null?void 0:f.default)===void 0&&delete f.default,e.push({type:o.name,name:d,attribute:f})})}),e}function j(r,e){if(typeof r=="string"){if(!e.nodes[r])throw Error(`There is no node type named '${r}'. Maybe you forgot to add the extension?`);return e.nodes[r]}return r}function $(...r){return r.filter(e=>!!e).reduce((e,t)=>{const n={...e};return Object.entries(t).forEach(([i,s])=>{if(!n[i]){n[i]=s;return}if(i==="class"){const l=s?s.split(" "):[],a=n[i]?n[i].split(" "):[],c=l.filter(d=>!a.includes(d));n[i]=[...a,...c].join(" ")}else i==="style"?n[i]=[n[i],s].join("; "):n[i]=s}),n},{})}function or(r,e){return e.filter(t=>t.attribute.rendered).map(t=>t.attribute.renderHTML?t.attribute.renderHTML(r.attrs)||{}:{[t.name]:r.attrs[t.name]}).reduce((t,n)=>$(t,n),{})}function ro(r){return typeof r=="function"}function O(r,e=void 0,...t){return ro(r)?e?r.bind(e)(...t):r(...t):r}function $c(r={}){return Object.keys(r).length===0&&r.constructor===Object}function Hc(r){return typeof r!="string"?r:r.match(/^[+-]?(?:\d*\.)?\d+$/)?Number(r):r==="true"?!0:r==="false"?!1:r}function Oi(r,e){return r.style?r:{...r,getAttrs:t=>{const n=r.getAttrs?r.getAttrs(t):r.attrs;if(n===!1)return!1;const i=e.reduce((s,o)=>{const l=o.attribute.parseHTML?o.attribute.parseHTML(t):Hc(t.getAttribute(o.name));return l==null?s:{...s,[o.name]:l}},{});return{...n,...i}}}}function vi(r){return Object.fromEntries(Object.entries(r).filter(([e,t])=>e==="attrs"&&$c(t)?!1:t!=null))}function _c(r,e){var t;const n=no(r),{nodeExtensions:i,markExtensions:s}=mn(r),o=(t=i.find(c=>S(c,"topNode")))===null||t===void 0?void 0:t.name,l=Object.fromEntries(i.map(c=>{const d=n.filter(y=>y.type===c.name),u={name:c.name,options:c.options,storage:c.storage,editor:e},f=r.reduce((y,x)=>{const N=S(x,"extendNodeSchema",u);return{...y,...N?N(c):{}}},{}),h=vi({...f,content:O(S(c,"content",u)),marks:O(S(c,"marks",u)),group:O(S(c,"group",u)),inline:O(S(c,"inline",u)),atom:O(S(c,"atom",u)),selectable:O(S(c,"selectable",u)),draggable:O(S(c,"draggable",u)),code:O(S(c,"code",u)),defining:O(S(c,"defining",u)),isolating:O(S(c,"isolating",u)),attrs:Object.fromEntries(d.map(y=>{var x;return[y.name,{default:(x=y==null?void 0:y.attribute)===null||x===void 0?void 0:x.default}]}))}),p=O(S(c,"parseHTML",u));p&&(h.parseDOM=p.map(y=>Oi(y,d)));const m=S(c,"renderHTML",u);m&&(h.toDOM=y=>m({node:y,HTMLAttributes:or(y,d)}));const g=S(c,"renderText",u);return g&&(h.toText=g),[c.name,h]})),a=Object.fromEntries(s.map(c=>{const d=n.filter(g=>g.type===c.name),u={name:c.name,options:c.options,storage:c.storage,editor:e},f=r.reduce((g,y)=>{const x=S(y,"extendMarkSchema",u);return{...g,...x?x(c):{}}},{}),h=vi({...f,inclusive:O(S(c,"inclusive",u)),excludes:O(S(c,"excludes",u)),group:O(S(c,"group",u)),spanning:O(S(c,"spanning",u)),code:O(S(c,"code",u)),attrs:Object.fromEntries(d.map(g=>{var y;return[g.name,{default:(y=g==null?void 0:g.attribute)===null||y===void 0?void 0:y.default}]}))}),p=O(S(c,"parseHTML",u));p&&(h.parseDOM=p.map(g=>Oi(g,d)));const m=S(c,"renderHTML",u);return m&&(h.toDOM=g=>m({mark:g,HTMLAttributes:or(g,d)})),[c.name,h]}));return new Xo({topNode:o,nodes:l,marks:a})}function Fn(r,e){return e.nodes[r]||e.marks[r]||null}function Ai(r,e){return Array.isArray(e)?e.some(t=>(typeof t=="string"?t:t.name)===r.name):e}const jc=(r,e=500)=>{let t="";const n=r.parentOffset;return r.parent.nodesBetween(Math.max(0,n-e),n,(i,s,o,l)=>{var a,c;const d=((c=(a=i.type.spec).toText)===null||c===void 0?void 0:c.call(a,{node:i,pos:s,parent:o,index:l}))||i.textContent||"%leaf%";t+=d.slice(0,Math.max(0,n-s))}),t};function Cr(r){return Object.prototype.toString.call(r)==="[object RegExp]"}class gn{constructor(e){this.find=e.find,this.handler=e.handler}}const Jc=(r,e)=>{if(Cr(e))return e.exec(r);const t=e(r);if(!t)return null;const n=[t.text];return n.index=t.index,n.input=r,n.data=t.data,t.replaceWith&&(t.text.includes(t.replaceWith)||console.warn('[tiptap warn]: "inputRuleMatch.replaceWith" must be part of "inputRuleMatch.text".'),n.push(t.replaceWith)),n};function Vn(r){var e;const{editor:t,from:n,to:i,text:s,rules:o,plugin:l}=r,{view:a}=t;if(a.composing)return!1;const c=a.state.doc.resolve(n);if(c.parent.type.spec.code||!((e=c.nodeBefore||c.nodeAfter)===null||e===void 0)&&e.marks.find(f=>f.type.spec.code))return!1;let d=!1;const u=jc(c)+s;return o.forEach(f=>{if(d)return;const h=Jc(u,f.find);if(!h)return;const p=a.state.tr,m=hn({state:a.state,transaction:p}),g={from:n-(h[0].length-s.length),to:i},{commands:y,chain:x,can:N}=new pn({editor:t,state:m});f.handler({state:m,range:g,match:h,commands:y,chain:x,can:N})===null||!p.steps.length||(p.setMeta(l,{transform:p,from:n,to:i,text:s}),a.dispatch(p),d=!0)}),d}function Wc(r){const{editor:e,rules:t}=r,n=new ue({state:{init(){return null},apply(i,s){const o=i.getMeta(n);return o||(i.selectionSet||i.docChanged?null:s)}},props:{handleTextInput(i,s,o,l){return Vn({editor:e,from:s,to:o,text:l,rules:t,plugin:n})},handleDOMEvents:{compositionend:i=>(setTimeout(()=>{const{$cursor:s}=i.state.selection;s&&Vn({editor:e,from:s.pos,to:s.pos,text:"",rules:t,plugin:n})}),!1)},handleKeyDown(i,s){if(s.key!=="Enter")return!1;const{$cursor:o}=i.state.selection;return o?Vn({editor:e,from:o.pos,to:o.pos,text:` +`,rules:t,plugin:n}):!1}},isInputRules:!0});return n}function qc(r){return typeof r=="number"}class Kc{constructor(e){this.find=e.find,this.handler=e.handler}}const Uc=(r,e,t)=>{if(Cr(e))return[...r.matchAll(e)];const n=e(r,t);return n?n.map(i=>{const s=[i.text];return s.index=i.index,s.input=r,s.data=i.data,i.replaceWith&&(i.text.includes(i.replaceWith)||console.warn('[tiptap warn]: "pasteRuleMatch.replaceWith" must be part of "pasteRuleMatch.text".'),s.push(i.replaceWith)),s}):[]};function Gc(r){const{editor:e,state:t,from:n,to:i,rule:s,pasteEvent:o,dropEvent:l}=r,{commands:a,chain:c,can:d}=new pn({editor:e,state:t}),u=[];return t.doc.nodesBetween(n,i,(h,p)=>{if(!h.isTextblock||h.type.spec.code)return;const m=Math.max(n,p),g=Math.min(i,p+h.content.size),y=h.textBetween(m-p,g-p,void 0,"");Uc(y,s.find,o).forEach(N=>{if(N.index===void 0)return;const P=m+N.index+1,B=P+N[0].length,R={from:t.tr.mapping.map(P),to:t.tr.mapping.map(B)},K=s.handler({state:t,range:R,match:N,commands:a,chain:c,can:d,pasteEvent:o,dropEvent:l});u.push(K)})}),u.every(h=>h!==null)}function Yc(r){const{editor:e,rules:t}=r;let n=null,i=!1,s=!1,o=new ClipboardEvent("paste"),l=new DragEvent("drop");return t.map(c=>new ue({view(d){const u=f=>{var h;n=!((h=d.dom.parentElement)===null||h===void 0)&&h.contains(f.target)?d.dom.parentElement:null};return window.addEventListener("dragstart",u),{destroy(){window.removeEventListener("dragstart",u)}}},props:{handleDOMEvents:{drop:(d,u)=>(s=n===d.dom.parentElement,l=u,!1),paste:(d,u)=>{var f;const h=(f=u.clipboardData)===null||f===void 0?void 0:f.getData("text/html");return o=u,i=!!(h!=null&&h.includes("data-pm-slice")),!1}}},appendTransaction:(d,u,f)=>{const h=d[0],p=h.getMeta("uiEvent")==="paste"&&!i,m=h.getMeta("uiEvent")==="drop"&&!s;if(!p&&!m)return;const g=u.doc.content.findDiffStart(f.doc.content),y=u.doc.content.findDiffEnd(f.doc.content);if(!qc(g)||!y||g===y.b)return;const x=f.tr,N=hn({state:f,transaction:x});if(!(!Gc({editor:e,state:N,from:Math.max(g-1,0),to:y.b-1,rule:c,pasteEvent:o,dropEvent:l})||!x.steps.length))return l=new DragEvent("drop"),o=new ClipboardEvent("paste"),x}}))}function Xc(r){const e=r.filter((t,n)=>r.indexOf(t)!==n);return[...new Set(e)]}class ot{constructor(e,t){this.splittableMarks=[],this.editor=t,this.extensions=ot.resolve(e),this.schema=_c(this.extensions,t),this.extensions.forEach(n=>{var i;this.editor.extensionStorage[n.name]=n.storage;const s={name:n.name,options:n.options,storage:n.storage,editor:this.editor,type:Fn(n.name,this.schema)};n.type==="mark"&&(!((i=O(S(n,"keepOnSplit",s)))!==null&&i!==void 0)||i)&&this.splittableMarks.push(n.name);const o=S(n,"onBeforeCreate",s);o&&this.editor.on("beforeCreate",o);const l=S(n,"onCreate",s);l&&this.editor.on("create",l);const a=S(n,"onUpdate",s);a&&this.editor.on("update",a);const c=S(n,"onSelectionUpdate",s);c&&this.editor.on("selectionUpdate",c);const d=S(n,"onTransaction",s);d&&this.editor.on("transaction",d);const u=S(n,"onFocus",s);u&&this.editor.on("focus",u);const f=S(n,"onBlur",s);f&&this.editor.on("blur",f);const h=S(n,"onDestroy",s);h&&this.editor.on("destroy",h)})}static resolve(e){const t=ot.sort(ot.flatten(e)),n=Xc(t.map(i=>i.name));return n.length&&console.warn(`[tiptap warn]: Duplicate extension names found: [${n.map(i=>`'${i}'`).join(", ")}]. This can lead to issues.`),t}static flatten(e){return e.map(t=>{const n={name:t.name,options:t.options,storage:t.storage},i=S(t,"addExtensions",n);return i?[t,...this.flatten(i())]:t}).flat(10)}static sort(e){return e.sort((n,i)=>{const s=S(n,"priority")||100,o=S(i,"priority")||100;return s>o?-1:s{const n={name:t.name,options:t.options,storage:t.storage,editor:this.editor,type:Fn(t.name,this.schema)},i=S(t,"addCommands",n);return i?{...e,...i()}:e},{})}get plugins(){const{editor:e}=this,t=ot.sort([...this.extensions].reverse()),n=[],i=[],s=t.map(o=>{const l={name:o.name,options:o.options,storage:o.storage,editor:e,type:Fn(o.name,this.schema)},a=[],c=S(o,"addKeyboardShortcuts",l);let d={};if(o.type==="mark"&&o.config.exitable&&(d.ArrowRight=()=>we.handleExit({editor:e,mark:o})),c){const m=Object.fromEntries(Object.entries(c()).map(([g,y])=>[g,()=>y({editor:e})]));d={...d,...m}}const u=hc(d);a.push(u);const f=S(o,"addInputRules",l);Ai(o,e.options.enableInputRules)&&f&&n.push(...f());const h=S(o,"addPasteRules",l);Ai(o,e.options.enablePasteRules)&&h&&i.push(...h());const p=S(o,"addProseMirrorPlugins",l);if(p){const m=p();a.push(...m)}return a}).flat();return[Wc({editor:e,rules:n}),...Yc({editor:e,rules:i}),...s]}get attributes(){return no(this.extensions)}get nodeViews(){const{editor:e}=this,{nodeExtensions:t}=mn(this.extensions);return Object.fromEntries(t.filter(n=>!!S(n,"addNodeView")).map(n=>{const i=this.attributes.filter(a=>a.type===n.name),s={name:n.name,options:n.options,storage:n.storage,editor:e,type:j(n.name,this.schema)},o=S(n,"addNodeView",s);if(!o)return[];const l=(a,c,d,u)=>{const f=or(a,i);return o()({editor:e,node:a,getPos:d,decorations:u,HTMLAttributes:f,extension:n})};return[n.name,l]}))}}function Zc(r){return Object.prototype.toString.call(r).slice(8,-1)}function $n(r){return Zc(r)!=="Object"?!1:r.constructor===Object&&Object.getPrototypeOf(r)===Object.prototype}function yn(r,e){const t={...r};return $n(r)&&$n(e)&&Object.keys(e).forEach(n=>{$n(e[n])?n in r?t[n]=yn(r[n],e[n]):Object.assign(t,{[n]:e[n]}):Object.assign(t,{[n]:e[n]})}),t}class se{constructor(e={}){this.type="extension",this.name="extension",this.parent=null,this.child=null,this.config={name:this.name,defaultOptions:{}},this.config={...this.config,...e},this.name=this.config.name,e.defaultOptions&&console.warn(`[tiptap warn]: BREAKING CHANGE: "defaultOptions" is deprecated. Please use "addOptions" instead. Found in extension: "${this.name}".`),this.options=this.config.defaultOptions,this.config.addOptions&&(this.options=O(S(this,"addOptions",{name:this.name}))),this.storage=O(S(this,"addStorage",{name:this.name,options:this.options}))||{}}static create(e={}){return new se(e)}configure(e={}){const t=this.extend();return t.options=yn(this.options,e),t.storage=O(S(t,"addStorage",{name:t.name,options:t.options})),t}extend(e={}){const t=new se(e);return t.parent=this,this.child=t,t.name=e.name?e.name:t.parent.name,e.defaultOptions&&console.warn(`[tiptap warn]: BREAKING CHANGE: "defaultOptions" is deprecated. Please use "addOptions" instead. Found in extension: "${t.name}".`),t.options=O(S(t,"addOptions",{name:t.name})),t.storage=O(S(t,"addStorage",{name:t.name,options:t.options})),t}}function io(r,e,t){const{from:n,to:i}=e,{blockSeparator:s=` -`,textSerializers:o={}}=t||{};let l="",a=!0;return r.nodesBetween(n,i,(c,d,u,f)=>{var h;const p=o==null?void 0:o[c.type.name];p?(c.isBlock&&!a&&(l+=s,a=!0),u&&(l+=p({node:c,pos:d,parent:u,index:f,range:e}))):c.isText?(l+=(h=c==null?void 0:c.text)===null||h===void 0?void 0:h.slice(Math.max(n,d)-d,i-d),a=!1):c.isBlock&&!a&&(l+=s,a=!0)}),l}function oo(r){return Object.fromEntries(Object.entries(r.nodes).filter(([,e])=>e.spec.toText).map(([e,t])=>[e,t.spec.toText]))}const Yc=se.create({name:"clipboardTextSerializer",addProseMirrorPlugins(){return[new ue({key:new $e("clipboardTextSerializer"),props:{clipboardTextSerializer:()=>{const{editor:r}=this,{state:e,schema:t}=r,{doc:n,selection:i}=e,{ranges:s}=i,o=Math.min(...s.map(d=>d.$from.pos)),l=Math.max(...s.map(d=>d.$to.pos)),a=oo(t);return so(n,{from:o,to:l},{textSerializers:a})}}})]}}),Xc=()=>({editor:r,view:e})=>(requestAnimationFrame(()=>{var t;r.isDestroyed||(e.dom.blur(),(t=window==null?void 0:window.getSelection())===null||t===void 0||t.removeAllRanges())}),!0),Zc=(r=!1)=>({commands:e})=>e.setContent("",r),Qc=()=>({state:r,tr:e,dispatch:t})=>{const{selection:n}=e,{ranges:i}=n;return t&&i.forEach(({$from:s,$to:o})=>{r.doc.nodesBetween(s.pos,o.pos,(l,a)=>{if(l.type.isText)return;const{doc:c,mapping:d}=e,u=c.resolve(d.map(a)),f=c.resolve(d.map(a+l.nodeSize)),h=u.blockRange(f);if(!h)return;const p=bt(h);if(l.type.isTextblock){const{defaultType:m}=u.parent.contentMatchAt(u.index());e.setNodeMarkup(h.start,m)}(p||p===0)&&e.lift(h,p)})}),!0},ed=r=>e=>r(e),td=()=>({state:r,dispatch:e})=>wc(r,e),nd=(r,e)=>({editor:t,tr:n})=>{const{state:i}=t,s=i.doc.slice(r.from,r.to);n.deleteRange(r.from,r.to);const o=n.mapping.map(e);return n.insert(o,s.content),n.setSelection(new C(n.doc.resolve(o-1))),!0},rd=()=>({tr:r,dispatch:e})=>{const{selection:t}=r,n=t.$anchor.node();if(n.content.size>0)return!1;const i=r.selection.$anchor;for(let s=i.depth;s>0;s-=1)if(i.node(s).type===n.type){if(e){const l=i.before(s),a=i.after(s);r.delete(l,a).scrollIntoView()}return!0}return!1},id=r=>({tr:e,state:t,dispatch:n})=>{const i=j(r,t.schema),s=e.selection.$anchor;for(let o=s.depth;o>0;o-=1)if(s.node(o).type===i){if(n){const a=s.before(o),c=s.after(o);e.delete(a,c).scrollIntoView()}return!0}return!1},sd=r=>({tr:e,dispatch:t})=>{const{from:n,to:i}=r;return t&&e.delete(n,i),!0},od=()=>({state:r,dispatch:e})=>uc(r,e),ld=()=>({commands:r})=>r.keyboardShortcut("Enter"),ad=()=>({state:r,dispatch:e})=>Mc(r,e);function sn(r,e,t={strict:!0}){const n=Object.keys(e);return n.length?n.every(i=>t.strict?e[i]===r[i]:Tr(e[i])?e[i].test(r[i]):e[i]===r[i]):!0}function ar(r,e,t={}){return r.find(n=>n.type===e&&sn(n.attrs,t))}function cd(r,e,t={}){return!!ar(r,e,t)}function Or(r,e,t={}){if(!r||!e)return;let n=r.parent.childAfter(r.parentOffset);if(r.parentOffset===n.offset&&n.offset!==0&&(n=r.parent.childBefore(r.parentOffset)),!n.node)return;const i=ar([...n.node.marks],e,t);if(!i)return;let s=n.index,o=r.start()+n.offset,l=s+1,a=o+n.node.nodeSize;for(ar([...n.node.marks],e,t);s>0&&i.isInSet(r.parent.child(s-1).marks);)s-=1,o-=r.parent.child(s).nodeSize;for(;l({tr:t,state:n,dispatch:i})=>{const s=_e(r,n.schema),{doc:o,selection:l}=t,{$from:a,from:c,to:d}=l;if(i){const u=Or(a,s,e);if(u&&u.from<=c&&u.to>=d){const f=C.create(o,u.from,u.to);t.setSelection(f)}}return!0},ud=r=>e=>{const t=typeof r=="function"?r(e):r;for(let n=0;n({editor:t,view:n,tr:i,dispatch:s})=>{e={scrollIntoView:!0,...e};const o=()=>{vr()&&n.dom.focus(),requestAnimationFrame(()=>{t.isDestroyed||(n.focus(),e!=null&&e.scrollIntoView&&t.commands.scrollIntoView())})};if(n.hasFocus()&&r===null||r===!1)return!0;if(s&&r===null&&!lo(t.state.selection))return o(),!0;const l=ao(i.doc,r)||t.state.selection,a=t.state.selection.eq(l);return s&&(a||i.setSelection(l),a&&i.storedMarks&&i.setStoredMarks(i.storedMarks),o()),!0},hd=(r,e)=>t=>r.every((n,i)=>e(n,{...t,index:i})),pd=(r,e)=>({tr:t,commands:n})=>n.insertContentAt({from:t.selection.from,to:t.selection.to},r,e),cr=r=>{const e=r.childNodes;for(let t=e.length-1;t>=0;t-=1){const n=e[t];n.nodeType===3&&n.nodeValue&&!/\S/.test(n.nodeValue)?r.removeChild(n):n.nodeType===1&&cr(n)}return r};function Ei(r){const e=`${r}`,t=new window.DOMParser().parseFromString(e,"text/html").body;return cr(t),cr(t)}function on(r,e,t){if(t={slice:!0,parseOptions:{},...t},typeof r=="object"&&r!==null)try{return Array.isArray(r)&&r.length>0?b.fromArray(r.map(n=>e.nodeFromJSON(n))):e.nodeFromJSON(r)}catch(n){return console.warn("[tiptap warn]: Invalid content.","Passed value:",r,"Error:",n),on("",e,t)}if(typeof r=="string"){const n=ut.fromSchema(e);return t.slice?n.parseSlice(Ei(r),t.parseOptions).content:n.parse(Ei(r),t.parseOptions)}return on("",e,t)}function md(r,e,t){const n=r.steps.length-1;if(n{o===0&&(o=d)}),r.setSelection(v.near(r.doc.resolve(o),t))}const gd=r=>r.toString().startsWith("<"),yd=(r,e,t)=>({tr:n,dispatch:i,editor:s})=>{if(i){t={parseOptions:{},updateSelection:!0,...t};const o=on(e,s.schema,{parseOptions:{preserveWhitespace:"full",...t.parseOptions}});if(o.toString()==="<>")return!0;let{from:l,to:a}=typeof r=="number"?{from:r,to:r}:{from:r.from,to:r.to},c=!0,d=!0;if((gd(o)?o:[o]).forEach(f=>{f.check(),c=c?f.isText&&f.marks.length===0:!1,d=d?f.isBlock:!1}),l===a&&d){const{parent:f}=n.doc.resolve(l);f.isTextblock&&!f.type.spec.code&&!f.childCount&&(l-=1,a+=1)}c?Array.isArray(e)?n.insertText(e.map(f=>f.text||"").join(""),l,a):typeof e=="object"&&e&&e.text?n.insertText(e.text,l,a):n.insertText(e,l,a):n.replaceWith(l,a,o),t.updateSelection&&md(n,n.steps.length-1,-1)}return!0},bd=()=>({state:r,dispatch:e})=>bc(r,e),kd=()=>({state:r,dispatch:e})=>kc(r,e),xd=()=>({state:r,dispatch:e})=>hc(r,e),Sd=()=>({state:r,dispatch:e})=>gc(r,e),Md=()=>({tr:r,state:e,dispatch:t})=>{try{const n=cn(e.doc,e.selection.$from.pos,-1);return n==null?!1:(r.join(n,2),t&&t(r),!0)}catch{return!1}},wd=()=>({state:r,dispatch:e,tr:t})=>{try{const n=cn(r.doc,r.selection.$from.pos,1);return n==null?!1:(t.join(n,2),e&&e(t),!0)}catch{return!1}};function Ar(){return typeof navigator<"u"?/Mac/.test(navigator.platform):!1}function Cd(r){const e=r.split(/-(?!$)/);let t=e[e.length-1];t==="Space"&&(t=" ");let n,i,s,o;for(let l=0;l({editor:e,view:t,tr:n,dispatch:i})=>{const s=Cd(r).split(/-(?!$)/),o=s.find(c=>!["Alt","Ctrl","Meta","Shift"].includes(c)),l=new KeyboardEvent("keydown",{key:o==="Space"?" ":o,altKey:s.includes("Alt"),ctrlKey:s.includes("Ctrl"),metaKey:s.includes("Meta"),shiftKey:s.includes("Shift"),bubbles:!0,cancelable:!0}),a=e.captureTransaction(()=>{t.someProp("handleKeyDown",c=>c(t,l))});return a==null||a.steps.forEach(c=>{const d=c.map(n.mapping);d&&i&&n.maybeStep(d)}),!0};function Rt(r,e,t={}){const{from:n,to:i,empty:s}=r.selection,o=e?j(e,r.schema):null,l=[];r.doc.nodesBetween(n,i,(u,f)=>{if(u.isText)return;const h=Math.max(n,f),p=Math.min(i,f+u.nodeSize);l.push({node:u,from:h,to:p})});const a=i-n,c=l.filter(u=>o?o.name===u.node.type.name:!0).filter(u=>sn(u.node.attrs,t,{strict:!1}));return s?!!c.length:c.reduce((u,f)=>u+f.to-f.from,0)>=a}const Od=(r,e={})=>({state:t,dispatch:n})=>{const i=j(r,t.schema);return Rt(t,i,e)?xc(t,n):!1},vd=()=>({state:r,dispatch:e})=>Cc(r,e),Ad=r=>({state:e,dispatch:t})=>{const n=j(r,e.schema);return Ic(n)(e,t)},Nd=()=>({state:r,dispatch:e})=>Sc(r,e);function kn(r,e){return e.nodes[r]?"node":e.marks[r]?"mark":null}function Di(r,e){const t=typeof e=="string"?[e]:e;return Object.keys(r).reduce((n,i)=>(t.includes(i)||(n[i]=r[i]),n),{})}const Ed=(r,e)=>({tr:t,state:n,dispatch:i})=>{let s=null,o=null;const l=kn(typeof r=="string"?r:r.name,n.schema);return l?(l==="node"&&(s=j(r,n.schema)),l==="mark"&&(o=_e(r,n.schema)),i&&t.selection.ranges.forEach(a=>{n.doc.nodesBetween(a.$from.pos,a.$to.pos,(c,d)=>{s&&s===c.type&&t.setNodeMarkup(d,void 0,Di(c.attrs,e)),o&&c.marks.length&&c.marks.forEach(u=>{o===u.type&&t.addMark(d,d+c.nodeSize,o.create(Di(u.attrs,e)))})})}),!0):!1},Dd=()=>({tr:r,dispatch:e})=>(e&&r.scrollIntoView(),!0),Id=()=>({tr:r,commands:e})=>e.setTextSelection({from:0,to:r.doc.content.size}),Rd=()=>({state:r,dispatch:e})=>pc(r,e),Pd=()=>({state:r,dispatch:e})=>yc(r,e),Bd=()=>({state:r,dispatch:e})=>Tc(r,e),Ld=()=>({state:r,dispatch:e})=>Ac(r,e),zd=()=>({state:r,dispatch:e})=>vc(r,e);function co(r,e,t={}){return on(r,e,{slice:!1,parseOptions:t})}const Fd=(r,e=!1,t={})=>({tr:n,editor:i,dispatch:s})=>{const{doc:o}=n,l=co(r,i.schema,t);return s&&n.replaceWith(0,o.content.size,l).setMeta("preventUpdate",!e),!0};function xn(r,e){const t=_e(e,r.schema),{from:n,to:i,empty:s}=r.selection,o=[];s?(r.storedMarks&&o.push(...r.storedMarks),o.push(...r.selection.$head.marks())):r.doc.nodesBetween(n,i,a=>{o.push(...a.marks)});const l=o.find(a=>a.type.name===t.name);return l?{...l.attrs}:{}}function Vd(r){for(let e=0;e0;t-=1){const n=r.node(t);if(e(n))return{pos:t>0?r.before(t):0,start:r.start(t),depth:t,node:n}}}function Nr(r){return e=>$d(e.$from,r)}function Hd(r,e){const t=ke.fromSchema(e).serializeFragment(r),i=document.implementation.createHTMLDocument().createElement("div");return i.appendChild(t),i.innerHTML}function _d(r,e){const t={from:0,to:r.content.size};return so(r,t,e)}function jd(r,e){const t=j(e,r.schema),{from:n,to:i}=r.selection,s=[];r.doc.nodesBetween(n,i,l=>{s.push(l)});const o=s.reverse().find(l=>l.type.name===t.name);return o?{...o.attrs}:{}}function Jd(r,e){const t=kn(typeof e=="string"?e:e.name,r.schema);return t==="node"?jd(r,e):t==="mark"?xn(r,e):{}}function uo(r,e,t){const n=[];return r===e?t.resolve(r).marks().forEach(i=>{const s=t.resolve(r-1),o=Or(s,i.type);o&&n.push({mark:i,...o})}):t.nodesBetween(r,e,(i,s)=>{!i||i.nodeSize===void 0||n.push(...i.marks.map(o=>({from:s,to:s+i.nodeSize,mark:o})))}),n}function Jt(r,e,t){return Object.fromEntries(Object.entries(t).filter(([n])=>{const i=r.find(s=>s.type===e&&s.name===n);return i?i.attribute.keepOnSplit:!1}))}function dr(r,e,t={}){const{empty:n,ranges:i}=r.selection,s=e?_e(e,r.schema):null;if(n)return!!(r.storedMarks||r.selection.$from.marks()).filter(u=>s?s.name===u.type.name:!0).find(u=>sn(u.attrs,t,{strict:!1}));let o=0;const l=[];if(i.forEach(({$from:u,$to:f})=>{const h=u.pos,p=f.pos;r.doc.nodesBetween(h,p,(m,g)=>{if(!m.isText&&!m.marks.length)return;const y=Math.max(h,g),x=Math.min(p,g+m.nodeSize),N=x-y;o+=N,l.push(...m.marks.map(P=>({mark:P,from:y,to:x})))})}),o===0)return!1;const a=l.filter(u=>s?s.name===u.mark.type.name:!0).filter(u=>sn(u.mark.attrs,t,{strict:!1})).reduce((u,f)=>u+f.to-f.from,0),c=l.filter(u=>s?u.mark.type!==s&&u.mark.type.excludes(s):!0).reduce((u,f)=>u+f.to-f.from,0);return(a>0?a+c:a)>=o}function Wd(r,e,t={}){if(!e)return Rt(r,null,t)||dr(r,null,t);const n=kn(e,r.schema);return n==="node"?Rt(r,e,t):n==="mark"?dr(r,e,t):!1}function Ii(r,e){const{nodeExtensions:t}=gn(e),n=t.find(o=>o.name===r);if(!n)return!1;const i={name:n.name,options:n.options,storage:n.storage},s=O(S(n,"group",i));return typeof s!="string"?!1:s.split(" ").includes("list")}function Kd(r){var e;const t=(e=r.type.createAndFill())===null||e===void 0?void 0:e.toJSON(),n=r.toJSON();return JSON.stringify(t)===JSON.stringify(n)}function qd(r,e,t){var n;const{selection:i}=e;let s=null;if(lo(i)&&(s=i.$cursor),s){const l=(n=r.storedMarks)!==null&&n!==void 0?n:s.marks();return!!t.isInSet(l)||!l.some(a=>a.type.excludes(t))}const{ranges:o}=i;return o.some(({$from:l,$to:a})=>{let c=l.depth===0?r.doc.inlineContent&&r.doc.type.allowsMarkType(t):!1;return r.doc.nodesBetween(l.pos,a.pos,(d,u,f)=>{if(c)return!1;if(d.isInline){const h=!f||f.type.allowsMarkType(t),p=!!t.isInSet(d.marks)||!d.marks.some(m=>m.type.excludes(t));c=h&&p}return!c}),c})}const Ud=(r,e={})=>({tr:t,state:n,dispatch:i})=>{const{selection:s}=t,{empty:o,ranges:l}=s,a=_e(r,n.schema);if(i)if(o){const c=xn(n,a);t.addStoredMark(a.create({...c,...e}))}else l.forEach(c=>{const d=c.$from.pos,u=c.$to.pos;n.doc.nodesBetween(d,u,(f,h)=>{const p=Math.max(h,d),m=Math.min(h+f.nodeSize,u);f.marks.find(y=>y.type===a)?f.marks.forEach(y=>{a===y.type&&t.addMark(p,m,a.create({...y.attrs,...e}))}):t.addMark(p,m,a.create(e))})});return qd(n,t,a)},Gd=(r,e)=>({tr:t})=>(t.setMeta(r,e),!0),Yd=(r,e={})=>({state:t,dispatch:n,chain:i})=>{const s=j(r,t.schema);return s.isTextblock?i().command(({commands:o})=>Oi(s,e)(t)?!0:o.clearNodes()).command(({state:o})=>Oi(s,e)(o,n)).run():(console.warn('[tiptap warn]: Currently "setNode()" only supports text block nodes.'),!1)},Xd=r=>({tr:e,dispatch:t})=>{if(t){const{doc:n}=e,i=Ke(r,0,n.content.size),s=M.create(n,i);e.setSelection(s)}return!0},Zd=r=>({tr:e,dispatch:t})=>{if(t){const{doc:n}=e,{from:i,to:s}=typeof r=="number"?{from:r,to:r}:r,o=C.atStart(n).from,l=C.atEnd(n).to,a=Ke(i,o,l),c=Ke(s,o,l),d=C.create(n,a,c);e.setSelection(d)}return!0},Qd=r=>({state:e,dispatch:t})=>{const n=j(r,e.schema);return Bc(n)(e,t)};function Ri(r,e){const t=r.storedMarks||r.selection.$to.parentOffset&&r.selection.$from.marks();if(t){const n=t.filter(i=>e==null?void 0:e.includes(i.type.name));r.tr.ensureMarks(n)}}const eu=({keepMarks:r=!0}={})=>({tr:e,state:t,dispatch:n,editor:i})=>{const{selection:s,doc:o}=e,{$from:l,$to:a}=s,c=i.extensionManager.attributes,d=Jt(c,l.node().type.name,l.node().attrs);if(s instanceof M&&s.node.isBlock)return!l.parentOffset||!at(o,l.pos)?!1:(n&&(r&&Ri(t,i.extensionManager.splittableMarks),e.split(l.pos).scrollIntoView()),!0);if(!l.parent.isBlock)return!1;if(n){const u=a.parentOffset===a.parent.content.size;s instanceof C&&e.deleteSelection();const f=l.depth===0?void 0:Vd(l.node(-1).contentMatchAt(l.indexAfter(-1)));let h=u&&f?[{type:f,attrs:d}]:void 0,p=at(e.doc,e.mapping.map(l.pos),1,h);if(!h&&!p&&at(e.doc,e.mapping.map(l.pos),1,f?[{type:f}]:void 0)&&(p=!0,h=f?[{type:f,attrs:d}]:void 0),p&&(e.split(e.mapping.map(l.pos),1,h),f&&!u&&!l.parentOffset&&l.parent.type!==f)){const m=e.mapping.map(l.before()),g=e.doc.resolve(m);l.node(-1).canReplaceWith(g.index(),g.index()+1,f)&&e.setNodeMarkup(e.mapping.map(l.before()),f)}r&&Ri(t,i.extensionManager.splittableMarks),e.scrollIntoView()}return!0},tu=r=>({tr:e,state:t,dispatch:n,editor:i})=>{var s;const o=j(r,t.schema),{$from:l,$to:a}=t.selection,c=t.selection.node;if(c&&c.isBlock||l.depth<2||!l.sameParent(a))return!1;const d=l.node(-1);if(d.type!==o)return!1;const u=i.extensionManager.attributes;if(l.parent.content.size===0&&l.node(-1).childCount===l.indexAfter(-1)){if(l.depth===2||l.node(-3).type!==o||l.index(-2)!==l.node(-2).childCount-1)return!1;if(n){let g=b.empty;const y=l.index(-1)?1:l.index(-2)?2:3;for(let q=l.depth-y;q>=l.depth-3;q-=1)g=b.from(l.node(q).copy(g));const x=l.indexAfter(-1){if(R>-1)return!1;q.isTextblock&&q.content.size===0&&(R=ge+1)}),R>-1&&e.setSelection(C.near(e.doc.resolve(R))),e.scrollIntoView()}return!0}const f=a.pos===l.end()?d.contentMatchAt(0).defaultType:null,h=Jt(u,d.type.name,d.attrs),p=Jt(u,l.node().type.name,l.node().attrs);e.delete(l.pos,a.pos);const m=f?[{type:o,attrs:h},{type:f,attrs:p}]:[{type:o,attrs:h}];if(!at(e.doc,l.pos,2))return!1;if(n){const{selection:g,storedMarks:y}=t,{splittableMarks:x}=i.extensionManager,N=y||g.$to.parentOffset&&g.$from.marks();if(e.split(l.pos,2,m).scrollIntoView(),!N||!n)return!0;const P=N.filter(B=>x.includes(B.type.name));e.ensureMarks(P)}return!0},_n=(r,e)=>{const t=Nr(o=>o.type===e)(r.selection);if(!t)return!0;const n=r.doc.resolve(Math.max(0,t.pos-1)).before(t.depth);if(n===void 0)return!0;const i=r.doc.nodeAt(n);return t.node.type===(i==null?void 0:i.type)&&Ve(r.doc,t.pos)&&r.join(t.pos),!0},jn=(r,e)=>{const t=Nr(o=>o.type===e)(r.selection);if(!t)return!0;const n=r.doc.resolve(t.start).after(t.depth);if(n===void 0)return!0;const i=r.doc.nodeAt(n);return t.node.type===(i==null?void 0:i.type)&&Ve(r.doc,n)&&r.join(n),!0},nu=(r,e,t,n={})=>({editor:i,tr:s,state:o,dispatch:l,chain:a,commands:c,can:d})=>{const{extensions:u,splittableMarks:f}=i.extensionManager,h=j(r,o.schema),p=j(e,o.schema),{selection:m,storedMarks:g}=o,{$from:y,$to:x}=m,N=y.blockRange(x),P=g||m.$to.parentOffset&&m.$from.marks();if(!N)return!1;const B=Nr(R=>Ii(R.type.name,u))(m);if(N.depth>=1&&B&&N.depth-B.depth<=1){if(B.node.type===h)return c.liftListItem(p);if(Ii(B.node.type.name,u)&&h.validContent(B.node.content)&&l)return a().command(()=>(s.setNodeMarkup(B.pos,h),!0)).command(()=>_n(s,h)).command(()=>jn(s,h)).run()}return!t||!P||!l?a().command(()=>d().wrapInList(h,n)?!0:c.clearNodes()).wrapInList(h,n).command(()=>_n(s,h)).command(()=>jn(s,h)).run():a().command(()=>{const R=d().wrapInList(h,n),q=P.filter(ge=>f.includes(ge.type.name));return s.ensureMarks(q),R?!0:c.clearNodes()}).wrapInList(h,n).command(()=>_n(s,h)).command(()=>jn(s,h)).run()},ru=(r,e={},t={})=>({state:n,commands:i})=>{const{extendEmptyMarkRange:s=!1}=t,o=_e(r,n.schema);return dr(n,o,e)?i.unsetMark(o,{extendEmptyMarkRange:s}):i.setMark(o,e)},iu=(r,e,t={})=>({state:n,commands:i})=>{const s=j(r,n.schema),o=j(e,n.schema);return Rt(n,s,t)?i.setNode(o):i.setNode(s,t)},su=(r,e={})=>({state:t,commands:n})=>{const i=j(r,t.schema);return Rt(t,i,e)?n.lift(i):n.wrapIn(i,e)},ou=()=>({state:r,dispatch:e})=>{const t=r.plugins;for(let n=0;n=0;a-=1)o.step(l.steps[a].invert(l.docs[a]));if(s.text){const a=o.doc.resolve(s.from).marks();o.replaceWith(s.from,s.to,r.schema.text(s.text,a))}else o.delete(s.from,s.to)}return!0}}return!1},lu=()=>({tr:r,dispatch:e})=>{const{selection:t}=r,{empty:n,ranges:i}=t;return n||e&&i.forEach(s=>{r.removeMark(s.$from.pos,s.$to.pos)}),!0},au=(r,e={})=>({tr:t,state:n,dispatch:i})=>{var s;const{extendEmptyMarkRange:o=!1}=e,{selection:l}=t,a=_e(r,n.schema),{$from:c,empty:d,ranges:u}=l;if(!i)return!0;if(d&&o){let{from:f,to:h}=l;const p=(s=c.marks().find(g=>g.type===a))===null||s===void 0?void 0:s.attrs,m=Or(c,a,p);m&&(f=m.from,h=m.to),t.removeMark(f,h,a)}else u.forEach(f=>{t.removeMark(f.$from.pos,f.$to.pos,a)});return t.removeStoredMark(a),!0},cu=(r,e={})=>({tr:t,state:n,dispatch:i})=>{let s=null,o=null;const l=kn(typeof r=="string"?r:r.name,n.schema);return l?(l==="node"&&(s=j(r,n.schema)),l==="mark"&&(o=_e(r,n.schema)),i&&t.selection.ranges.forEach(a=>{const c=a.$from.pos,d=a.$to.pos;n.doc.nodesBetween(c,d,(u,f)=>{s&&s===u.type&&t.setNodeMarkup(f,void 0,{...u.attrs,...e}),o&&u.marks.length&&u.marks.forEach(h=>{if(o===h.type){const p=Math.max(f,c),m=Math.min(f+u.nodeSize,d);t.addMark(p,m,o.create({...h.attrs,...e}))}})})}),!0):!1},du=(r,e={})=>({state:t,dispatch:n})=>{const i=j(r,t.schema);return Nc(i,e)(t,n)},uu=(r,e={})=>({state:t,dispatch:n})=>{const i=j(r,t.schema);return Ec(i,e)(t,n)};var fu=Object.freeze({__proto__:null,blur:Xc,clearContent:Zc,clearNodes:Qc,command:ed,createParagraphNear:td,cut:nd,deleteCurrentNode:rd,deleteNode:id,deleteRange:sd,deleteSelection:od,enter:ld,exitCode:ad,extendMarkRange:dd,first:ud,focus:fd,forEach:hd,insertContent:pd,insertContentAt:yd,joinUp:bd,joinDown:kd,joinBackward:xd,joinForward:Sd,joinItemBackward:Md,joinItemForward:wd,keyboardShortcut:Td,lift:Od,liftEmptyBlock:vd,liftListItem:Ad,newlineInCode:Nd,resetAttributes:Ed,scrollIntoView:Dd,selectAll:Id,selectNodeBackward:Rd,selectNodeForward:Pd,selectParentNode:Bd,selectTextblockEnd:Ld,selectTextblockStart:zd,setContent:Fd,setMark:Ud,setMeta:Gd,setNode:Yd,setNodeSelection:Xd,setTextSelection:Zd,sinkListItem:Qd,splitBlock:eu,splitListItem:tu,toggleList:nu,toggleMark:ru,toggleNode:iu,toggleWrap:su,undoInputRule:ou,unsetAllMarks:lu,unsetMark:au,updateAttributes:cu,wrapIn:du,wrapInList:uu});const hu=se.create({name:"commands",addCommands(){return{...fu}}}),pu=se.create({name:"editable",addProseMirrorPlugins(){return[new ue({key:new $e("editable"),props:{editable:()=>this.editor.options.editable}})]}}),mu=se.create({name:"focusEvents",addProseMirrorPlugins(){const{editor:r}=this;return[new ue({key:new $e("focusEvents"),props:{handleDOMEvents:{focus:(e,t)=>{r.isFocused=!0;const n=r.state.tr.setMeta("focus",{event:t}).setMeta("addToHistory",!1);return e.dispatch(n),!1},blur:(e,t)=>{r.isFocused=!1;const n=r.state.tr.setMeta("blur",{event:t}).setMeta("addToHistory",!1);return e.dispatch(n),!1}}}})]}}),gu=se.create({name:"keymap",addKeyboardShortcuts(){const r=()=>this.editor.commands.first(({commands:o})=>[()=>o.undoInputRule(),()=>o.command(({tr:l})=>{const{selection:a,doc:c}=l,{empty:d,$anchor:u}=a,{pos:f,parent:h}=u,p=u.parent.isTextblock?l.doc.resolve(f-1):u,m=p.parent.type.spec.isolating,g=u.pos-u.parentOffset,y=m&&p.parent.childCount===1?g===u.pos:v.atStart(c).from===f;return!d||!y||!h.type.isTextblock||h.textContent.length?!1:o.clearNodes()}),()=>o.deleteSelection(),()=>o.joinBackward(),()=>o.selectNodeBackward()]),e=()=>this.editor.commands.first(({commands:o})=>[()=>o.deleteSelection(),()=>o.deleteCurrentNode(),()=>o.joinForward(),()=>o.selectNodeForward()]),n={Enter:()=>this.editor.commands.first(({commands:o})=>[()=>o.newlineInCode(),()=>o.createParagraphNear(),()=>o.liftEmptyBlock(),()=>o.splitBlock()]),"Mod-Enter":()=>this.editor.commands.exitCode(),Backspace:r,"Mod-Backspace":r,"Shift-Backspace":r,Delete:e,"Mod-Delete":e,"Mod-a":()=>this.editor.commands.selectAll()},i={...n},s={...n,"Ctrl-h":r,"Alt-Backspace":r,"Ctrl-d":e,"Ctrl-Alt-Backspace":e,"Alt-Delete":e,"Alt-d":e,"Ctrl-a":()=>this.editor.commands.selectTextblockStart(),"Ctrl-e":()=>this.editor.commands.selectTextblockEnd()};return vr()||Ar()?s:i},addProseMirrorPlugins(){return[new ue({key:new $e("clearDocument"),appendTransaction:(r,e,t)=>{if(!(r.some(p=>p.docChanged)&&!e.doc.eq(t.doc)))return;const{empty:i,from:s,to:o}=e.selection,l=v.atStart(e.doc).from,a=v.atEnd(e.doc).to;if(i||!(s===l&&o===a)||!(t.doc.textBetween(0,t.doc.content.size," "," ").length===0))return;const u=t.tr,f=pn({state:t,transaction:u}),{commands:h}=new mn({editor:this.editor,state:f});if(h.clearNodes(),!!u.steps.length)return u}})]}}),yu=se.create({name:"tabindex",addProseMirrorPlugins(){return[new ue({key:new $e("tabindex"),props:{attributes:this.editor.isEditable?{tabindex:"0"}:{}}})]}});var bu=Object.freeze({__proto__:null,ClipboardTextSerializer:Yc,Commands:hu,Editable:pu,FocusEvents:mu,Keymap:gu,Tabindex:yu});const ku=`.ProseMirror { +`,textSerializers:o={}}=t||{};let l="",a=!0;return r.nodesBetween(n,i,(c,d,u,f)=>{var h;const p=o==null?void 0:o[c.type.name];p?(c.isBlock&&!a&&(l+=s,a=!0),u&&(l+=p({node:c,pos:d,parent:u,index:f,range:e}))):c.isText?(l+=(h=c==null?void 0:c.text)===null||h===void 0?void 0:h.slice(Math.max(n,d)-d,i-d),a=!1):c.isBlock&&!a&&(l+=s,a=!0)}),l}function so(r){return Object.fromEntries(Object.entries(r.nodes).filter(([,e])=>e.spec.toText).map(([e,t])=>[e,t.spec.toText]))}const Qc=se.create({name:"clipboardTextSerializer",addProseMirrorPlugins(){return[new ue({key:new $e("clipboardTextSerializer"),props:{clipboardTextSerializer:()=>{const{editor:r}=this,{state:e,schema:t}=r,{doc:n,selection:i}=e,{ranges:s}=i,o=Math.min(...s.map(d=>d.$from.pos)),l=Math.max(...s.map(d=>d.$to.pos)),a=so(t);return io(n,{from:o,to:l},{textSerializers:a})}}})]}}),ed=()=>({editor:r,view:e})=>(requestAnimationFrame(()=>{var t;r.isDestroyed||(e.dom.blur(),(t=window==null?void 0:window.getSelection())===null||t===void 0||t.removeAllRanges())}),!0),td=(r=!1)=>({commands:e})=>e.setContent("",r),nd=()=>({state:r,tr:e,dispatch:t})=>{const{selection:n}=e,{ranges:i}=n;return t&&i.forEach(({$from:s,$to:o})=>{r.doc.nodesBetween(s.pos,o.pos,(l,a)=>{if(l.type.isText)return;const{doc:c,mapping:d}=e,u=c.resolve(d.map(a)),f=c.resolve(d.map(a+l.nodeSize)),h=u.blockRange(f);if(!h)return;const p=bt(h);if(l.type.isTextblock){const{defaultType:m}=u.parent.contentMatchAt(u.index());e.setNodeMarkup(h.start,m)}(p||p===0)&&e.lift(h,p)})}),!0},rd=r=>e=>r(e),id=()=>({state:r,dispatch:e})=>Oc(r,e),sd=(r,e)=>({editor:t,tr:n})=>{const{state:i}=t,s=i.doc.slice(r.from,r.to);n.deleteRange(r.from,r.to);const o=n.mapping.map(e);return n.insert(o,s.content),n.setSelection(new C(n.doc.resolve(o-1))),!0},od=()=>({tr:r,dispatch:e})=>{const{selection:t}=r,n=t.$anchor.node();if(n.content.size>0)return!1;const i=r.selection.$anchor;for(let s=i.depth;s>0;s-=1)if(i.node(s).type===n.type){if(e){const l=i.before(s),a=i.after(s);r.delete(l,a).scrollIntoView()}return!0}return!1},ld=r=>({tr:e,state:t,dispatch:n})=>{const i=j(r,t.schema),s=e.selection.$anchor;for(let o=s.depth;o>0;o-=1)if(s.node(o).type===i){if(n){const a=s.before(o),c=s.after(o);e.delete(a,c).scrollIntoView()}return!0}return!1},ad=r=>({tr:e,dispatch:t})=>{const{from:n,to:i}=r;return t&&e.delete(n,i),!0},cd=()=>({state:r,dispatch:e})=>pc(r,e),dd=()=>({commands:r})=>r.keyboardShortcut("Enter"),ud=()=>({state:r,dispatch:e})=>Tc(r,e);function rn(r,e,t={strict:!0}){const n=Object.keys(e);return n.length?n.every(i=>t.strict?e[i]===r[i]:Cr(e[i])?e[i].test(r[i]):e[i]===r[i]):!0}function lr(r,e,t={}){return r.find(n=>n.type===e&&rn(n.attrs,t))}function fd(r,e,t={}){return!!lr(r,e,t)}function Tr(r,e,t={}){if(!r||!e)return;let n=r.parent.childAfter(r.parentOffset);if(r.parentOffset===n.offset&&n.offset!==0&&(n=r.parent.childBefore(r.parentOffset)),!n.node)return;const i=lr([...n.node.marks],e,t);if(!i)return;let s=n.index,o=r.start()+n.offset,l=s+1,a=o+n.node.nodeSize;for(lr([...n.node.marks],e,t);s>0&&i.isInSet(r.parent.child(s-1).marks);)s-=1,o-=r.parent.child(s).nodeSize;for(;l({tr:t,state:n,dispatch:i})=>{const s=_e(r,n.schema),{doc:o,selection:l}=t,{$from:a,from:c,to:d}=l;if(i){const u=Tr(a,s,e);if(u&&u.from<=c&&u.to>=d){const f=C.create(o,u.from,u.to);t.setSelection(f)}}return!0},pd=r=>e=>{const t=typeof r=="function"?r(e):r;for(let n=0;n({editor:t,view:n,tr:i,dispatch:s})=>{e={scrollIntoView:!0,...e};const o=()=>{Or()&&n.dom.focus(),requestAnimationFrame(()=>{t.isDestroyed||(n.focus(),e!=null&&e.scrollIntoView&&t.commands.scrollIntoView())})};if(n.hasFocus()&&r===null||r===!1)return!0;if(s&&r===null&&!oo(t.state.selection))return o(),!0;const l=lo(i.doc,r)||t.state.selection,a=t.state.selection.eq(l);return s&&(a||i.setSelection(l),a&&i.storedMarks&&i.setStoredMarks(i.storedMarks),o()),!0},gd=(r,e)=>t=>r.every((n,i)=>e(n,{...t,index:i})),yd=(r,e)=>({tr:t,commands:n})=>n.insertContentAt({from:t.selection.from,to:t.selection.to},r,e),ar=r=>{const e=r.childNodes;for(let t=e.length-1;t>=0;t-=1){const n=e[t];n.nodeType===3&&n.nodeValue&&!/\S/.test(n.nodeValue)?r.removeChild(n):n.nodeType===1&&ar(n)}return r};function Ni(r){const e=`${r}`,t=new window.DOMParser().parseFromString(e,"text/html").body;return ar(t),ar(t)}function sn(r,e,t){if(t={slice:!0,parseOptions:{},...t},typeof r=="object"&&r!==null)try{return Array.isArray(r)&&r.length>0?b.fromArray(r.map(n=>e.nodeFromJSON(n))):e.nodeFromJSON(r)}catch(n){return console.warn("[tiptap warn]: Invalid content.","Passed value:",r,"Error:",n),sn("",e,t)}if(typeof r=="string"){const n=ut.fromSchema(e);return t.slice?n.parseSlice(Ni(r),t.parseOptions).content:n.parse(Ni(r),t.parseOptions)}return sn("",e,t)}function bd(r,e,t){const n=r.steps.length-1;if(n{o===0&&(o=d)}),r.setSelection(v.near(r.doc.resolve(o),t))}const kd=r=>r.toString().startsWith("<"),xd=(r,e,t)=>({tr:n,dispatch:i,editor:s})=>{if(i){t={parseOptions:{},updateSelection:!0,...t};const o=sn(e,s.schema,{parseOptions:{preserveWhitespace:"full",...t.parseOptions}});if(o.toString()==="<>")return!0;let{from:l,to:a}=typeof r=="number"?{from:r,to:r}:{from:r.from,to:r.to},c=!0,d=!0;if((kd(o)?o:[o]).forEach(f=>{f.check(),c=c?f.isText&&f.marks.length===0:!1,d=d?f.isBlock:!1}),l===a&&d){const{parent:f}=n.doc.resolve(l);f.isTextblock&&!f.type.spec.code&&!f.childCount&&(l-=1,a+=1)}c?Array.isArray(e)?n.insertText(e.map(f=>f.text||"").join(""),l,a):typeof e=="object"&&e&&e.text?n.insertText(e.text,l,a):n.insertText(e,l,a):n.replaceWith(l,a,o),t.updateSelection&&bd(n,n.steps.length-1,-1)}return!0},Sd=()=>({state:r,dispatch:e})=>Sc(r,e),Md=()=>({state:r,dispatch:e})=>Mc(r,e),wd=()=>({state:r,dispatch:e})=>gc(r,e),Cd=()=>({state:r,dispatch:e})=>kc(r,e),Td=()=>({tr:r,state:e,dispatch:t})=>{try{const n=an(e.doc,e.selection.$from.pos,-1);return n==null?!1:(r.join(n,2),t&&t(r),!0)}catch{return!1}},Od=()=>({state:r,dispatch:e,tr:t})=>{try{const n=an(r.doc,r.selection.$from.pos,1);return n==null?!1:(t.join(n,2),e&&e(t),!0)}catch{return!1}};function vr(){return typeof navigator<"u"?/Mac/.test(navigator.platform):!1}function vd(r){const e=r.split(/-(?!$)/);let t=e[e.length-1];t==="Space"&&(t=" ");let n,i,s,o;for(let l=0;l({editor:e,view:t,tr:n,dispatch:i})=>{const s=vd(r).split(/-(?!$)/),o=s.find(c=>!["Alt","Ctrl","Meta","Shift"].includes(c)),l=new KeyboardEvent("keydown",{key:o==="Space"?" ":o,altKey:s.includes("Alt"),ctrlKey:s.includes("Ctrl"),metaKey:s.includes("Meta"),shiftKey:s.includes("Shift"),bubbles:!0,cancelable:!0}),a=e.captureTransaction(()=>{t.someProp("handleKeyDown",c=>c(t,l))});return a==null||a.steps.forEach(c=>{const d=c.map(n.mapping);d&&i&&n.maybeStep(d)}),!0};function Rt(r,e,t={}){const{from:n,to:i,empty:s}=r.selection,o=e?j(e,r.schema):null,l=[];r.doc.nodesBetween(n,i,(u,f)=>{if(u.isText)return;const h=Math.max(n,f),p=Math.min(i,f+u.nodeSize);l.push({node:u,from:h,to:p})});const a=i-n,c=l.filter(u=>o?o.name===u.node.type.name:!0).filter(u=>rn(u.node.attrs,t,{strict:!1}));return s?!!c.length:c.reduce((u,f)=>u+f.to-f.from,0)>=a}const Nd=(r,e={})=>({state:t,dispatch:n})=>{const i=j(r,t.schema);return Rt(t,i,e)?wc(t,n):!1},Ed=()=>({state:r,dispatch:e})=>vc(r,e),Dd=r=>({state:e,dispatch:t})=>{const n=j(r,e.schema);return Bc(n)(e,t)},Id=()=>({state:r,dispatch:e})=>Cc(r,e);function bn(r,e){return e.nodes[r]?"node":e.marks[r]?"mark":null}function Ei(r,e){const t=typeof e=="string"?[e]:e;return Object.keys(r).reduce((n,i)=>(t.includes(i)||(n[i]=r[i]),n),{})}const Rd=(r,e)=>({tr:t,state:n,dispatch:i})=>{let s=null,o=null;const l=bn(typeof r=="string"?r:r.name,n.schema);return l?(l==="node"&&(s=j(r,n.schema)),l==="mark"&&(o=_e(r,n.schema)),i&&t.selection.ranges.forEach(a=>{n.doc.nodesBetween(a.$from.pos,a.$to.pos,(c,d)=>{s&&s===c.type&&t.setNodeMarkup(d,void 0,Ei(c.attrs,e)),o&&c.marks.length&&c.marks.forEach(u=>{o===u.type&&t.addMark(d,d+c.nodeSize,o.create(Ei(u.attrs,e)))})})}),!0):!1},Pd=()=>({tr:r,dispatch:e})=>(e&&r.scrollIntoView(),!0),Bd=()=>({tr:r,commands:e})=>e.setTextSelection({from:0,to:r.doc.content.size}),Ld=()=>({state:r,dispatch:e})=>yc(r,e),zd=()=>({state:r,dispatch:e})=>xc(r,e),Fd=()=>({state:r,dispatch:e})=>Ac(r,e),Vd=()=>({state:r,dispatch:e})=>Dc(r,e),$d=()=>({state:r,dispatch:e})=>Ec(r,e);function ao(r,e,t={}){return sn(r,e,{slice:!1,parseOptions:t})}const Hd=(r,e=!1,t={})=>({tr:n,editor:i,dispatch:s})=>{const{doc:o}=n,l=ao(r,i.schema,t);return s&&n.replaceWith(0,o.content.size,l).setMeta("preventUpdate",!e),!0};function kn(r,e){const t=_e(e,r.schema),{from:n,to:i,empty:s}=r.selection,o=[];s?(r.storedMarks&&o.push(...r.storedMarks),o.push(...r.selection.$head.marks())):r.doc.nodesBetween(n,i,a=>{o.push(...a.marks)});const l=o.find(a=>a.type.name===t.name);return l?{...l.attrs}:{}}function _d(r){for(let e=0;e0;t-=1){const n=r.node(t);if(e(n))return{pos:t>0?r.before(t):0,start:r.start(t),depth:t,node:n}}}function Ar(r){return e=>jd(e.$from,r)}function Jd(r,e){const t=ke.fromSchema(e).serializeFragment(r),i=document.implementation.createHTMLDocument().createElement("div");return i.appendChild(t),i.innerHTML}function Wd(r,e){const t={from:0,to:r.content.size};return io(r,t,e)}function qd(r,e){const t=j(e,r.schema),{from:n,to:i}=r.selection,s=[];r.doc.nodesBetween(n,i,l=>{s.push(l)});const o=s.reverse().find(l=>l.type.name===t.name);return o?{...o.attrs}:{}}function Kd(r,e){const t=bn(typeof e=="string"?e:e.name,r.schema);return t==="node"?qd(r,e):t==="mark"?kn(r,e):{}}function co(r,e,t){const n=[];return r===e?t.resolve(r).marks().forEach(i=>{const s=t.resolve(r-1),o=Tr(s,i.type);o&&n.push({mark:i,...o})}):t.nodesBetween(r,e,(i,s)=>{!i||i.nodeSize===void 0||n.push(...i.marks.map(o=>({from:s,to:s+i.nodeSize,mark:o})))}),n}function jt(r,e,t){return Object.fromEntries(Object.entries(t).filter(([n])=>{const i=r.find(s=>s.type===e&&s.name===n);return i?i.attribute.keepOnSplit:!1}))}function cr(r,e,t={}){const{empty:n,ranges:i}=r.selection,s=e?_e(e,r.schema):null;if(n)return!!(r.storedMarks||r.selection.$from.marks()).filter(u=>s?s.name===u.type.name:!0).find(u=>rn(u.attrs,t,{strict:!1}));let o=0;const l=[];if(i.forEach(({$from:u,$to:f})=>{const h=u.pos,p=f.pos;r.doc.nodesBetween(h,p,(m,g)=>{if(!m.isText&&!m.marks.length)return;const y=Math.max(h,g),x=Math.min(p,g+m.nodeSize),N=x-y;o+=N,l.push(...m.marks.map(P=>({mark:P,from:y,to:x})))})}),o===0)return!1;const a=l.filter(u=>s?s.name===u.mark.type.name:!0).filter(u=>rn(u.mark.attrs,t,{strict:!1})).reduce((u,f)=>u+f.to-f.from,0),c=l.filter(u=>s?u.mark.type!==s&&u.mark.type.excludes(s):!0).reduce((u,f)=>u+f.to-f.from,0);return(a>0?a+c:a)>=o}function Ud(r,e,t={}){if(!e)return Rt(r,null,t)||cr(r,null,t);const n=bn(e,r.schema);return n==="node"?Rt(r,e,t):n==="mark"?cr(r,e,t):!1}function Di(r,e){const{nodeExtensions:t}=mn(e),n=t.find(o=>o.name===r);if(!n)return!1;const i={name:n.name,options:n.options,storage:n.storage},s=O(S(n,"group",i));return typeof s!="string"?!1:s.split(" ").includes("list")}function Gd(r){var e;const t=(e=r.type.createAndFill())===null||e===void 0?void 0:e.toJSON(),n=r.toJSON();return JSON.stringify(t)===JSON.stringify(n)}function Yd(r,e,t){var n;const{selection:i}=e;let s=null;if(oo(i)&&(s=i.$cursor),s){const l=(n=r.storedMarks)!==null&&n!==void 0?n:s.marks();return!!t.isInSet(l)||!l.some(a=>a.type.excludes(t))}const{ranges:o}=i;return o.some(({$from:l,$to:a})=>{let c=l.depth===0?r.doc.inlineContent&&r.doc.type.allowsMarkType(t):!1;return r.doc.nodesBetween(l.pos,a.pos,(d,u,f)=>{if(c)return!1;if(d.isInline){const h=!f||f.type.allowsMarkType(t),p=!!t.isInSet(d.marks)||!d.marks.some(m=>m.type.excludes(t));c=h&&p}return!c}),c})}const Xd=(r,e={})=>({tr:t,state:n,dispatch:i})=>{const{selection:s}=t,{empty:o,ranges:l}=s,a=_e(r,n.schema);if(i)if(o){const c=kn(n,a);t.addStoredMark(a.create({...c,...e}))}else l.forEach(c=>{const d=c.$from.pos,u=c.$to.pos;n.doc.nodesBetween(d,u,(f,h)=>{const p=Math.max(h,d),m=Math.min(h+f.nodeSize,u);f.marks.find(y=>y.type===a)?f.marks.forEach(y=>{a===y.type&&t.addMark(p,m,a.create({...y.attrs,...e}))}):t.addMark(p,m,a.create(e))})});return Yd(n,t,a)},Zd=(r,e)=>({tr:t})=>(t.setMeta(r,e),!0),Qd=(r,e={})=>({state:t,dispatch:n,chain:i})=>{const s=j(r,t.schema);return s.isTextblock?i().command(({commands:o})=>Ti(s,e)(t)?!0:o.clearNodes()).command(({state:o})=>Ti(s,e)(o,n)).run():(console.warn('[tiptap warn]: Currently "setNode()" only supports text block nodes.'),!1)},eu=r=>({tr:e,dispatch:t})=>{if(t){const{doc:n}=e,i=qe(r,0,n.content.size),s=M.create(n,i);e.setSelection(s)}return!0},tu=r=>({tr:e,dispatch:t})=>{if(t){const{doc:n}=e,{from:i,to:s}=typeof r=="number"?{from:r,to:r}:r,o=C.atStart(n).from,l=C.atEnd(n).to,a=qe(i,o,l),c=qe(s,o,l),d=C.create(n,a,c);e.setSelection(d)}return!0},nu=r=>({state:e,dispatch:t})=>{const n=j(r,e.schema);return Fc(n)(e,t)};function Ii(r,e){const t=r.storedMarks||r.selection.$to.parentOffset&&r.selection.$from.marks();if(t){const n=t.filter(i=>e==null?void 0:e.includes(i.type.name));r.tr.ensureMarks(n)}}const ru=({keepMarks:r=!0}={})=>({tr:e,state:t,dispatch:n,editor:i})=>{const{selection:s,doc:o}=e,{$from:l,$to:a}=s,c=i.extensionManager.attributes,d=jt(c,l.node().type.name,l.node().attrs);if(s instanceof M&&s.node.isBlock)return!l.parentOffset||!at(o,l.pos)?!1:(n&&(r&&Ii(t,i.extensionManager.splittableMarks),e.split(l.pos).scrollIntoView()),!0);if(!l.parent.isBlock)return!1;if(n){const u=a.parentOffset===a.parent.content.size;s instanceof C&&e.deleteSelection();const f=l.depth===0?void 0:_d(l.node(-1).contentMatchAt(l.indexAfter(-1)));let h=u&&f?[{type:f,attrs:d}]:void 0,p=at(e.doc,e.mapping.map(l.pos),1,h);if(!h&&!p&&at(e.doc,e.mapping.map(l.pos),1,f?[{type:f}]:void 0)&&(p=!0,h=f?[{type:f,attrs:d}]:void 0),p&&(e.split(e.mapping.map(l.pos),1,h),f&&!u&&!l.parentOffset&&l.parent.type!==f)){const m=e.mapping.map(l.before()),g=e.doc.resolve(m);l.node(-1).canReplaceWith(g.index(),g.index()+1,f)&&e.setNodeMarkup(e.mapping.map(l.before()),f)}r&&Ii(t,i.extensionManager.splittableMarks),e.scrollIntoView()}return!0},iu=r=>({tr:e,state:t,dispatch:n,editor:i})=>{var s;const o=j(r,t.schema),{$from:l,$to:a}=t.selection,c=t.selection.node;if(c&&c.isBlock||l.depth<2||!l.sameParent(a))return!1;const d=l.node(-1);if(d.type!==o)return!1;const u=i.extensionManager.attributes;if(l.parent.content.size===0&&l.node(-1).childCount===l.indexAfter(-1)){if(l.depth===2||l.node(-3).type!==o||l.index(-2)!==l.node(-2).childCount-1)return!1;if(n){let g=b.empty;const y=l.index(-1)?1:l.index(-2)?2:3;for(let K=l.depth-y;K>=l.depth-3;K-=1)g=b.from(l.node(K).copy(g));const x=l.indexAfter(-1){if(R>-1)return!1;K.isTextblock&&K.content.size===0&&(R=ge+1)}),R>-1&&e.setSelection(C.near(e.doc.resolve(R))),e.scrollIntoView()}return!0}const f=a.pos===l.end()?d.contentMatchAt(0).defaultType:null,h=jt(u,d.type.name,d.attrs),p=jt(u,l.node().type.name,l.node().attrs);e.delete(l.pos,a.pos);const m=f?[{type:o,attrs:h},{type:f,attrs:p}]:[{type:o,attrs:h}];if(!at(e.doc,l.pos,2))return!1;if(n){const{selection:g,storedMarks:y}=t,{splittableMarks:x}=i.extensionManager,N=y||g.$to.parentOffset&&g.$from.marks();if(e.split(l.pos,2,m).scrollIntoView(),!N||!n)return!0;const P=N.filter(B=>x.includes(B.type.name));e.ensureMarks(P)}return!0},Hn=(r,e)=>{const t=Ar(o=>o.type===e)(r.selection);if(!t)return!0;const n=r.doc.resolve(Math.max(0,t.pos-1)).before(t.depth);if(n===void 0)return!0;const i=r.doc.nodeAt(n);return t.node.type===(i==null?void 0:i.type)&&Ve(r.doc,t.pos)&&r.join(t.pos),!0},_n=(r,e)=>{const t=Ar(o=>o.type===e)(r.selection);if(!t)return!0;const n=r.doc.resolve(t.start).after(t.depth);if(n===void 0)return!0;const i=r.doc.nodeAt(n);return t.node.type===(i==null?void 0:i.type)&&Ve(r.doc,n)&&r.join(n),!0},su=(r,e,t,n={})=>({editor:i,tr:s,state:o,dispatch:l,chain:a,commands:c,can:d})=>{const{extensions:u,splittableMarks:f}=i.extensionManager,h=j(r,o.schema),p=j(e,o.schema),{selection:m,storedMarks:g}=o,{$from:y,$to:x}=m,N=y.blockRange(x),P=g||m.$to.parentOffset&&m.$from.marks();if(!N)return!1;const B=Ar(R=>Di(R.type.name,u))(m);if(N.depth>=1&&B&&N.depth-B.depth<=1){if(B.node.type===h)return c.liftListItem(p);if(Di(B.node.type.name,u)&&h.validContent(B.node.content)&&l)return a().command(()=>(s.setNodeMarkup(B.pos,h),!0)).command(()=>Hn(s,h)).command(()=>_n(s,h)).run()}return!t||!P||!l?a().command(()=>d().wrapInList(h,n)?!0:c.clearNodes()).wrapInList(h,n).command(()=>Hn(s,h)).command(()=>_n(s,h)).run():a().command(()=>{const R=d().wrapInList(h,n),K=P.filter(ge=>f.includes(ge.type.name));return s.ensureMarks(K),R?!0:c.clearNodes()}).wrapInList(h,n).command(()=>Hn(s,h)).command(()=>_n(s,h)).run()},ou=(r,e={},t={})=>({state:n,commands:i})=>{const{extendEmptyMarkRange:s=!1}=t,o=_e(r,n.schema);return cr(n,o,e)?i.unsetMark(o,{extendEmptyMarkRange:s}):i.setMark(o,e)},lu=(r,e,t={})=>({state:n,commands:i})=>{const s=j(r,n.schema),o=j(e,n.schema);return Rt(n,s,t)?i.setNode(o):i.setNode(s,t)},au=(r,e={})=>({state:t,commands:n})=>{const i=j(r,t.schema);return Rt(t,i,e)?n.lift(i):n.wrapIn(i,e)},cu=()=>({state:r,dispatch:e})=>{const t=r.plugins;for(let n=0;n=0;a-=1)o.step(l.steps[a].invert(l.docs[a]));if(s.text){const a=o.doc.resolve(s.from).marks();o.replaceWith(s.from,s.to,r.schema.text(s.text,a))}else o.delete(s.from,s.to)}return!0}}return!1},du=()=>({tr:r,dispatch:e})=>{const{selection:t}=r,{empty:n,ranges:i}=t;return n||e&&i.forEach(s=>{r.removeMark(s.$from.pos,s.$to.pos)}),!0},uu=(r,e={})=>({tr:t,state:n,dispatch:i})=>{var s;const{extendEmptyMarkRange:o=!1}=e,{selection:l}=t,a=_e(r,n.schema),{$from:c,empty:d,ranges:u}=l;if(!i)return!0;if(d&&o){let{from:f,to:h}=l;const p=(s=c.marks().find(g=>g.type===a))===null||s===void 0?void 0:s.attrs,m=Tr(c,a,p);m&&(f=m.from,h=m.to),t.removeMark(f,h,a)}else u.forEach(f=>{t.removeMark(f.$from.pos,f.$to.pos,a)});return t.removeStoredMark(a),!0},fu=(r,e={})=>({tr:t,state:n,dispatch:i})=>{let s=null,o=null;const l=bn(typeof r=="string"?r:r.name,n.schema);return l?(l==="node"&&(s=j(r,n.schema)),l==="mark"&&(o=_e(r,n.schema)),i&&t.selection.ranges.forEach(a=>{const c=a.$from.pos,d=a.$to.pos;n.doc.nodesBetween(c,d,(u,f)=>{s&&s===u.type&&t.setNodeMarkup(f,void 0,{...u.attrs,...e}),o&&u.marks.length&&u.marks.forEach(h=>{if(o===h.type){const p=Math.max(f,c),m=Math.min(f+u.nodeSize,d);t.addMark(p,m,o.create({...h.attrs,...e}))}})})}),!0):!1},hu=(r,e={})=>({state:t,dispatch:n})=>{const i=j(r,t.schema);return Ic(i,e)(t,n)},pu=(r,e={})=>({state:t,dispatch:n})=>{const i=j(r,t.schema);return Rc(i,e)(t,n)};var mu=Object.freeze({__proto__:null,blur:ed,clearContent:td,clearNodes:nd,command:rd,createParagraphNear:id,cut:sd,deleteCurrentNode:od,deleteNode:ld,deleteRange:ad,deleteSelection:cd,enter:dd,exitCode:ud,extendMarkRange:hd,first:pd,focus:md,forEach:gd,insertContent:yd,insertContentAt:xd,joinUp:Sd,joinDown:Md,joinBackward:wd,joinForward:Cd,joinItemBackward:Td,joinItemForward:Od,keyboardShortcut:Ad,lift:Nd,liftEmptyBlock:Ed,liftListItem:Dd,newlineInCode:Id,resetAttributes:Rd,scrollIntoView:Pd,selectAll:Bd,selectNodeBackward:Ld,selectNodeForward:zd,selectParentNode:Fd,selectTextblockEnd:Vd,selectTextblockStart:$d,setContent:Hd,setMark:Xd,setMeta:Zd,setNode:Qd,setNodeSelection:eu,setTextSelection:tu,sinkListItem:nu,splitBlock:ru,splitListItem:iu,toggleList:su,toggleMark:ou,toggleNode:lu,toggleWrap:au,undoInputRule:cu,unsetAllMarks:du,unsetMark:uu,updateAttributes:fu,wrapIn:hu,wrapInList:pu});const gu=se.create({name:"commands",addCommands(){return{...mu}}}),yu=se.create({name:"editable",addProseMirrorPlugins(){return[new ue({key:new $e("editable"),props:{editable:()=>this.editor.options.editable}})]}}),bu=se.create({name:"focusEvents",addProseMirrorPlugins(){const{editor:r}=this;return[new ue({key:new $e("focusEvents"),props:{handleDOMEvents:{focus:(e,t)=>{r.isFocused=!0;const n=r.state.tr.setMeta("focus",{event:t}).setMeta("addToHistory",!1);return e.dispatch(n),!1},blur:(e,t)=>{r.isFocused=!1;const n=r.state.tr.setMeta("blur",{event:t}).setMeta("addToHistory",!1);return e.dispatch(n),!1}}}})]}}),ku=se.create({name:"keymap",addKeyboardShortcuts(){const r=()=>this.editor.commands.first(({commands:o})=>[()=>o.undoInputRule(),()=>o.command(({tr:l})=>{const{selection:a,doc:c}=l,{empty:d,$anchor:u}=a,{pos:f,parent:h}=u,p=u.parent.isTextblock?l.doc.resolve(f-1):u,m=p.parent.type.spec.isolating,g=u.pos-u.parentOffset,y=m&&p.parent.childCount===1?g===u.pos:v.atStart(c).from===f;return!d||!y||!h.type.isTextblock||h.textContent.length?!1:o.clearNodes()}),()=>o.deleteSelection(),()=>o.joinBackward(),()=>o.selectNodeBackward()]),e=()=>this.editor.commands.first(({commands:o})=>[()=>o.deleteSelection(),()=>o.deleteCurrentNode(),()=>o.joinForward(),()=>o.selectNodeForward()]),n={Enter:()=>this.editor.commands.first(({commands:o})=>[()=>o.newlineInCode(),()=>o.createParagraphNear(),()=>o.liftEmptyBlock(),()=>o.splitBlock()]),"Mod-Enter":()=>this.editor.commands.exitCode(),Backspace:r,"Mod-Backspace":r,"Shift-Backspace":r,Delete:e,"Mod-Delete":e,"Mod-a":()=>this.editor.commands.selectAll()},i={...n},s={...n,"Ctrl-h":r,"Alt-Backspace":r,"Ctrl-d":e,"Ctrl-Alt-Backspace":e,"Alt-Delete":e,"Alt-d":e,"Ctrl-a":()=>this.editor.commands.selectTextblockStart(),"Ctrl-e":()=>this.editor.commands.selectTextblockEnd()};return Or()||vr()?s:i},addProseMirrorPlugins(){return[new ue({key:new $e("clearDocument"),appendTransaction:(r,e,t)=>{if(!(r.some(p=>p.docChanged)&&!e.doc.eq(t.doc)))return;const{empty:i,from:s,to:o}=e.selection,l=v.atStart(e.doc).from,a=v.atEnd(e.doc).to;if(i||!(s===l&&o===a)||!(t.doc.textBetween(0,t.doc.content.size," "," ").length===0))return;const u=t.tr,f=hn({state:t,transaction:u}),{commands:h}=new pn({editor:this.editor,state:f});if(h.clearNodes(),!!u.steps.length)return u}})]}}),xu=se.create({name:"tabindex",addProseMirrorPlugins(){return[new ue({key:new $e("tabindex"),props:{attributes:this.editor.isEditable?{tabindex:"0"}:{}}})]}});var Su=Object.freeze({__proto__:null,ClipboardTextSerializer:Qc,Commands:gu,Editable:yu,FocusEvents:bu,Keymap:ku,Tabindex:xu});const Mu=`.ProseMirror { position: relative; } @@ -83,10 +83,10 @@ img.ProseMirror-separator { .tippy-box[data-animation=fade][data-state=hidden] { opacity: 0 -}`;function xu(r,e,t){const n=document.querySelector(`style[data-tiptap-style${t?`-${t}`:""}]`);if(n!==null)return n;const i=document.createElement("style");return e&&i.setAttribute("nonce",e),i.setAttribute(`data-tiptap-style${t?`-${t}`:""}`,""),i.innerHTML=r,document.getElementsByTagName("head")[0].appendChild(i),i}let Su=class extends Lc{constructor(e={}){super(),this.isFocused=!1,this.extensionStorage={},this.options={element:document.createElement("div"),content:"",injectCSS:!0,injectNonce:void 0,extensions:[],autofocus:!1,editable:!0,editorProps:{},parseOptions:{},enableInputRules:!0,enablePasteRules:!0,enableCoreExtensions:!0,onBeforeCreate:()=>null,onCreate:()=>null,onUpdate:()=>null,onSelectionUpdate:()=>null,onTransaction:()=>null,onFocus:()=>null,onBlur:()=>null,onDestroy:()=>null},this.isCapturingTransaction=!1,this.capturedTransaction=null,this.setOptions(e),this.createExtensionManager(),this.createCommandManager(),this.createSchema(),this.on("beforeCreate",this.options.onBeforeCreate),this.emit("beforeCreate",{editor:this}),this.createView(),this.injectCSS(),this.on("create",this.options.onCreate),this.on("update",this.options.onUpdate),this.on("selectionUpdate",this.options.onSelectionUpdate),this.on("transaction",this.options.onTransaction),this.on("focus",this.options.onFocus),this.on("blur",this.options.onBlur),this.on("destroy",this.options.onDestroy),window.setTimeout(()=>{this.isDestroyed||(this.commands.focus(this.options.autofocus),this.emit("create",{editor:this}))},0)}get storage(){return this.extensionStorage}get commands(){return this.commandManager.commands}chain(){return this.commandManager.chain()}can(){return this.commandManager.can()}injectCSS(){this.options.injectCSS&&document&&(this.css=xu(ku,this.options.injectNonce))}setOptions(e={}){this.options={...this.options,...e},!(!this.view||!this.state||this.isDestroyed)&&(this.options.editorProps&&this.view.setProps(this.options.editorProps),this.view.updateState(this.state))}setEditable(e,t=!0){this.setOptions({editable:e}),t&&this.emit("update",{editor:this,transaction:this.state.tr})}get isEditable(){return this.options.editable&&this.view&&this.view.editable}get state(){return this.view.state}registerPlugin(e,t){const n=io(t)?t(e,[...this.state.plugins]):[...this.state.plugins,e],i=this.state.reconfigure({plugins:n});this.view.updateState(i)}unregisterPlugin(e){if(this.isDestroyed)return;const t=typeof e=="string"?`${e}$`:e.key,n=this.state.reconfigure({plugins:this.state.plugins.filter(i=>!i.key.startsWith(t))});this.view.updateState(n)}createExtensionManager(){const t=[...this.options.enableCoreExtensions?Object.values(bu):[],...this.options.extensions].filter(n=>["extension","node","mark"].includes(n==null?void 0:n.type));this.extensionManager=new ot(t,this)}createCommandManager(){this.commandManager=new mn({editor:this})}createSchema(){this.schema=this.extensionManager.schema}createView(){const e=co(this.options.content,this.schema,this.options.parseOptions),t=ao(e,this.options.autofocus);this.view=new tc(this.options.element,{...this.options.editorProps,dispatchTransaction:this.dispatchTransaction.bind(this),state:st.create({doc:e,selection:t||void 0})});const n=this.state.reconfigure({plugins:this.extensionManager.plugins});this.view.updateState(n),this.createNodeViews(),this.prependClass();const i=this.view.dom;i.editor=this}createNodeViews(){this.view.setProps({nodeViews:this.extensionManager.nodeViews})}prependClass(){this.view.dom.className=`tiptap ${this.view.dom.className}`}captureTransaction(e){this.isCapturingTransaction=!0,e(),this.isCapturingTransaction=!1;const t=this.capturedTransaction;return this.capturedTransaction=null,t}dispatchTransaction(e){if(this.view.isDestroyed)return;if(this.isCapturingTransaction){if(!this.capturedTransaction){this.capturedTransaction=e;return}e.steps.forEach(o=>{var l;return(l=this.capturedTransaction)===null||l===void 0?void 0:l.step(o)});return}const t=this.state.apply(e),n=!this.state.selection.eq(t.selection);this.view.updateState(t),this.emit("transaction",{editor:this,transaction:e}),n&&this.emit("selectionUpdate",{editor:this,transaction:e});const i=e.getMeta("focus"),s=e.getMeta("blur");i&&this.emit("focus",{editor:this,event:i.event,transaction:e}),s&&this.emit("blur",{editor:this,event:s.event,transaction:e}),!(!e.docChanged||e.getMeta("preventUpdate"))&&this.emit("update",{editor:this,transaction:e})}getAttributes(e){return Jd(this.state,e)}isActive(e,t){const n=typeof e=="string"?e:null,i=typeof e=="string"?t:e;return Wd(this.state,n,i)}getJSON(){return this.state.doc.toJSON()}getHTML(){return Hd(this.state.doc.content,this.schema)}getText(e){const{blockSeparator:t=` +}`;function wu(r,e,t){const n=document.querySelector(`style[data-tiptap-style${t?`-${t}`:""}]`);if(n!==null)return n;const i=document.createElement("style");return e&&i.setAttribute("nonce",e),i.setAttribute(`data-tiptap-style${t?`-${t}`:""}`,""),i.innerHTML=r,document.getElementsByTagName("head")[0].appendChild(i),i}let Cu=class extends Vc{constructor(e={}){super(),this.isFocused=!1,this.extensionStorage={},this.options={element:document.createElement("div"),content:"",injectCSS:!0,injectNonce:void 0,extensions:[],autofocus:!1,editable:!0,editorProps:{},parseOptions:{},enableInputRules:!0,enablePasteRules:!0,enableCoreExtensions:!0,onBeforeCreate:()=>null,onCreate:()=>null,onUpdate:()=>null,onSelectionUpdate:()=>null,onTransaction:()=>null,onFocus:()=>null,onBlur:()=>null,onDestroy:()=>null},this.isCapturingTransaction=!1,this.capturedTransaction=null,this.setOptions(e),this.createExtensionManager(),this.createCommandManager(),this.createSchema(),this.on("beforeCreate",this.options.onBeforeCreate),this.emit("beforeCreate",{editor:this}),this.createView(),this.injectCSS(),this.on("create",this.options.onCreate),this.on("update",this.options.onUpdate),this.on("selectionUpdate",this.options.onSelectionUpdate),this.on("transaction",this.options.onTransaction),this.on("focus",this.options.onFocus),this.on("blur",this.options.onBlur),this.on("destroy",this.options.onDestroy),window.setTimeout(()=>{this.isDestroyed||(this.commands.focus(this.options.autofocus),this.emit("create",{editor:this}))},0)}get storage(){return this.extensionStorage}get commands(){return this.commandManager.commands}chain(){return this.commandManager.chain()}can(){return this.commandManager.can()}injectCSS(){this.options.injectCSS&&document&&(this.css=wu(Mu,this.options.injectNonce))}setOptions(e={}){this.options={...this.options,...e},!(!this.view||!this.state||this.isDestroyed)&&(this.options.editorProps&&this.view.setProps(this.options.editorProps),this.view.updateState(this.state))}setEditable(e,t=!0){this.setOptions({editable:e}),t&&this.emit("update",{editor:this,transaction:this.state.tr})}get isEditable(){return this.options.editable&&this.view&&this.view.editable}get state(){return this.view.state}registerPlugin(e,t){const n=ro(t)?t(e,[...this.state.plugins]):[...this.state.plugins,e],i=this.state.reconfigure({plugins:n});this.view.updateState(i)}unregisterPlugin(e){if(this.isDestroyed)return;const t=typeof e=="string"?`${e}$`:e.key,n=this.state.reconfigure({plugins:this.state.plugins.filter(i=>!i.key.startsWith(t))});this.view.updateState(n)}createExtensionManager(){const t=[...this.options.enableCoreExtensions?Object.values(Su):[],...this.options.extensions].filter(n=>["extension","node","mark"].includes(n==null?void 0:n.type));this.extensionManager=new ot(t,this)}createCommandManager(){this.commandManager=new pn({editor:this})}createSchema(){this.schema=this.extensionManager.schema}createView(){const e=ao(this.options.content,this.schema,this.options.parseOptions),t=lo(e,this.options.autofocus);this.view=new ic(this.options.element,{...this.options.editorProps,dispatchTransaction:this.dispatchTransaction.bind(this),state:st.create({doc:e,selection:t||void 0})});const n=this.state.reconfigure({plugins:this.extensionManager.plugins});this.view.updateState(n),this.createNodeViews(),this.prependClass();const i=this.view.dom;i.editor=this}createNodeViews(){this.view.setProps({nodeViews:this.extensionManager.nodeViews})}prependClass(){this.view.dom.className=`tiptap ${this.view.dom.className}`}captureTransaction(e){this.isCapturingTransaction=!0,e(),this.isCapturingTransaction=!1;const t=this.capturedTransaction;return this.capturedTransaction=null,t}dispatchTransaction(e){if(this.view.isDestroyed)return;if(this.isCapturingTransaction){if(!this.capturedTransaction){this.capturedTransaction=e;return}e.steps.forEach(o=>{var l;return(l=this.capturedTransaction)===null||l===void 0?void 0:l.step(o)});return}const t=this.state.apply(e),n=!this.state.selection.eq(t.selection);this.view.updateState(t),this.emit("transaction",{editor:this,transaction:e}),n&&this.emit("selectionUpdate",{editor:this,transaction:e});const i=e.getMeta("focus"),s=e.getMeta("blur");i&&this.emit("focus",{editor:this,event:i.event,transaction:e}),s&&this.emit("blur",{editor:this,event:s.event,transaction:e}),!(!e.docChanged||e.getMeta("preventUpdate"))&&this.emit("update",{editor:this,transaction:e})}getAttributes(e){return Kd(this.state,e)}isActive(e,t){const n=typeof e=="string"?e:null,i=typeof e=="string"?t:e;return Ud(this.state,n,i)}getJSON(){return this.state.doc.toJSON()}getHTML(){return Jd(this.state.doc.content,this.schema)}getText(e){const{blockSeparator:t=` -`,textSerializers:n={}}=e||{};return _d(this.state.doc,{blockSeparator:t,textSerializers:{...oo(this.schema),...n}})}get isEmpty(){return Kd(this.state.doc)}getCharacterCount(){return console.warn('[tiptap warn]: "editor.getCharacterCount()" is deprecated. Please use "editor.storage.characterCount.characters()" instead.'),this.state.doc.content.size-2}destroy(){this.emit("destroy"),this.view&&this.view.destroy(),this.removeAllListeners()}get isDestroyed(){var e;return!(!((e=this.view)===null||e===void 0)&&e.docView)}};function gt(r){return new yn({find:r.find,handler:({state:e,range:t,match:n})=>{const i=O(r.getAttributes,void 0,n);if(i===!1||i===null)return null;const{tr:s}=e,o=n[n.length-1],l=n[0];if(o){const a=l.search(/\S/),c=t.from+l.indexOf(o),d=c+o.length;if(uo(t.from,t.to,e.doc).filter(h=>h.mark.type.excluded.find(m=>m===r.type&&m!==h.mark.type)).filter(h=>h.to>c).length)return null;dt.from&&s.delete(t.from+a,c);const f=t.from+a+o.length;s.addMark(t.from+a,f,r.type.create(i||{})),s.removeStoredMark(r.type)}}})}function Mu(r){return new yn({find:r.find,handler:({state:e,range:t,match:n})=>{const i=O(r.getAttributes,void 0,n)||{},{tr:s}=e,o=t.from;let l=t.to;const a=r.type.create(i);if(n[1]){const c=n[0].lastIndexOf(n[1]);let d=o+c;d>l?d=l:l=d+n[1].length;const u=n[0][n[0].length-1];s.insertText(u,o+n[0].length-1),s.replaceWith(d,l,a)}else n[0]&&s.insert(o-1,r.type.create(i)).delete(s.mapping.map(o),s.mapping.map(l));s.scrollIntoView()}})}function ur(r){return new yn({find:r.find,handler:({state:e,range:t,match:n})=>{const i=e.doc.resolve(t.from),s=O(r.getAttributes,void 0,n)||{};if(!i.node(-1).canReplaceWith(i.index(-1),i.indexAfter(-1),r.type))return null;e.tr.delete(t.from,t.to).setBlockType(t.from,t.from,r.type,s)}})}function Pt(r){return new yn({find:r.find,handler:({state:e,range:t,match:n,chain:i})=>{const s=O(r.getAttributes,void 0,n)||{},o=e.tr.delete(t.from,t.to),a=o.doc.resolve(t.from).blockRange(),c=a&&hr(a,r.type,s);if(!c)return null;if(o.wrap(a,c),r.keepMarks&&r.editor){const{selection:u,storedMarks:f}=e,{splittableMarks:h}=r.editor.extensionManager,p=f||u.$to.parentOffset&&u.$from.marks();if(p){const m=p.filter(g=>h.includes(g.type.name));o.ensureMarks(m)}}if(r.keepAttributes){const u=r.type.name==="bulletList"||r.type.name==="orderedList"?"listItem":"taskList";i().updateAttributes(u,s).run()}const d=o.doc.resolve(t.from-1).nodeBefore;d&&d.type===r.type&&Ve(o.doc,t.from-1)&&(!r.joinPredicate||r.joinPredicate(n,d))&&o.join(t.from-1)}})}class we{constructor(e={}){this.type="mark",this.name="mark",this.parent=null,this.child=null,this.config={name:this.name,defaultOptions:{}},this.config={...this.config,...e},this.name=this.config.name,e.defaultOptions&&console.warn(`[tiptap warn]: BREAKING CHANGE: "defaultOptions" is deprecated. Please use "addOptions" instead. Found in extension: "${this.name}".`),this.options=this.config.defaultOptions,this.config.addOptions&&(this.options=O(S(this,"addOptions",{name:this.name}))),this.storage=O(S(this,"addStorage",{name:this.name,options:this.options}))||{}}static create(e={}){return new we(e)}configure(e={}){const t=this.extend();return t.options=bn(this.options,e),t.storage=O(S(t,"addStorage",{name:t.name,options:t.options})),t}extend(e={}){const t=new we(e);return t.parent=this,this.child=t,t.name=e.name?e.name:t.parent.name,e.defaultOptions&&console.warn(`[tiptap warn]: BREAKING CHANGE: "defaultOptions" is deprecated. Please use "addOptions" instead. Found in extension: "${t.name}".`),t.options=O(S(t,"addOptions",{name:t.name})),t.storage=O(S(t,"addStorage",{name:t.name,options:t.options})),t}static handleExit({editor:e,mark:t}){const{tr:n}=e.state,i=e.state.selection.$from;if(i.pos===i.end()){const o=i.marks();if(!!!o.find(c=>(c==null?void 0:c.type.name)===t.name))return!1;const a=o.find(c=>(c==null?void 0:c.type.name)===t.name);return a&&n.removeStoredMark(a),n.insertText(" ",i.pos),e.view.dispatch(n),!0}return!1}}class Y{constructor(e={}){this.type="node",this.name="node",this.parent=null,this.child=null,this.config={name:this.name,defaultOptions:{}},this.config={...this.config,...e},this.name=this.config.name,e.defaultOptions&&console.warn(`[tiptap warn]: BREAKING CHANGE: "defaultOptions" is deprecated. Please use "addOptions" instead. Found in extension: "${this.name}".`),this.options=this.config.defaultOptions,this.config.addOptions&&(this.options=O(S(this,"addOptions",{name:this.name}))),this.storage=O(S(this,"addStorage",{name:this.name,options:this.options}))||{}}static create(e={}){return new Y(e)}configure(e={}){const t=this.extend();return t.options=bn(this.options,e),t.storage=O(S(t,"addStorage",{name:t.name,options:t.options})),t}extend(e={}){const t=new Y(e);return t.parent=this,this.child=t,t.name=e.name?e.name:t.parent.name,e.defaultOptions&&console.warn(`[tiptap warn]: BREAKING CHANGE: "defaultOptions" is deprecated. Please use "addOptions" instead. Found in extension: "${t.name}".`),t.options=O(S(t,"addOptions",{name:t.name})),t.storage=O(S(t,"addStorage",{name:t.name,options:t.options})),t}}function yt(r){return new Jc({find:r.find,handler:({state:e,range:t,match:n,pasteEvent:i})=>{const s=O(r.getAttributes,void 0,n,i);if(s===!1||s===null)return null;const{tr:o}=e,l=n[n.length-1],a=n[0];let c=t.to;if(l){const d=a.search(/\S/),u=t.from+a.indexOf(l),f=u+l.length;if(uo(t.from,t.to,e.doc).filter(p=>p.mark.type.excluded.find(g=>g===r.type&&g!==p.mark.type)).filter(p=>p.to>u).length)return null;ft.from&&o.delete(t.from+d,u),c=t.from+d+l.length,o.addMark(t.from+d,c,r.type.create(s||{})),o.removeStoredMark(r.type)}}})}function Pi(r){return Ao((e,t)=>({get(){return e(),r},set(n){r=n,requestAnimationFrame(()=>{requestAnimationFrame(()=>{t()})})}}))}class wu extends Su{constructor(e={}){return super(e),this.vueRenderers=Oo(new Map),this.contentComponent=null,this.reactiveState=Pi(this.view.state),this.reactiveExtensionStorage=Pi(this.extensionStorage),this.on("transaction",()=>{this.reactiveState.value=this.view.state,this.reactiveExtensionStorage.value=this.extensionStorage}),vo(this)}get state(){return this.reactiveState?this.reactiveState.value:this.view.state}get storage(){return this.reactiveExtensionStorage?this.reactiveExtensionStorage.value:super.storage}registerPlugin(e,t){super.registerPlugin(e,t),this.reactiveState.value=this.view.state}unregisterPlugin(e){super.unregisterPlugin(e),this.reactiveState.value=this.view.state}}const Cu=yo({name:"EditorContent",props:{editor:{default:null,type:Object}},setup(r){const e=bo(),t=ko();return xo(()=>{const n=r.editor;n&&n.options.element&&e.value&&So(()=>{if(!e.value||!n.options.element.firstChild)return;const i=Mo(e.value);e.value.append(...n.options.element.childNodes),n.contentComponent=t.ctx._,n.setOptions({element:i}),n.createNodeViews()})}),Hi(()=>{const n=r.editor;if(!n||(n.isDestroyed||n.view.setProps({nodeViews:{}}),n.contentComponent=null,!n.options.element.firstChild))return;const i=document.createElement("div");i.append(...n.options.element.childNodes),n.setOptions({element:i})}),{rootEl:e}},render(){const r=[];return this.editor&&this.editor.vueRenderers.forEach(e=>{const t=Sn(wo,{to:e.teleportElement,key:e.id},Sn(e.component,{ref:e.id,...e.props}));r.push(t)}),Sn("div",{ref:e=>{this.rootEl=e}},...r)}}),Tu=(r={})=>{const e=Co();return To(()=>{e.value=new wu(r)}),Hi(()=>{var t;(t=e.value)===null||t===void 0||t.destroy()}),e},Ou=/^\s*>\s$/,vu=Y.create({name:"blockquote",addOptions(){return{HTMLAttributes:{}}},content:"block+",group:"block",defining:!0,parseHTML(){return[{tag:"blockquote"}]},renderHTML({HTMLAttributes:r}){return["blockquote",$(this.options.HTMLAttributes,r),0]},addCommands(){return{setBlockquote:()=>({commands:r})=>r.wrapIn(this.name),toggleBlockquote:()=>({commands:r})=>r.toggleWrap(this.name),unsetBlockquote:()=>({commands:r})=>r.lift(this.name)}},addKeyboardShortcuts(){return{"Mod-Shift-b":()=>this.editor.commands.toggleBlockquote()}},addInputRules(){return[Pt({find:Ou,type:this.type})]}}),Au=/(?:^|\s)((?:\*\*)((?:[^*]+))(?:\*\*))$/,Nu=/(?:^|\s)((?:\*\*)((?:[^*]+))(?:\*\*))/g,Eu=/(?:^|\s)((?:__)((?:[^__]+))(?:__))$/,Du=/(?:^|\s)((?:__)((?:[^__]+))(?:__))/g,Iu=we.create({name:"bold",addOptions(){return{HTMLAttributes:{}}},parseHTML(){return[{tag:"strong"},{tag:"b",getAttrs:r=>r.style.fontWeight!=="normal"&&null},{style:"font-weight",getAttrs:r=>/^(bold(er)?|[5-9]\d{2,})$/.test(r)&&null}]},renderHTML({HTMLAttributes:r}){return["strong",$(this.options.HTMLAttributes,r),0]},addCommands(){return{setBold:()=>({commands:r})=>r.setMark(this.name),toggleBold:()=>({commands:r})=>r.toggleMark(this.name),unsetBold:()=>({commands:r})=>r.unsetMark(this.name)}},addKeyboardShortcuts(){return{"Mod-b":()=>this.editor.commands.toggleBold(),"Mod-B":()=>this.editor.commands.toggleBold()}},addInputRules(){return[gt({find:Au,type:this.type}),gt({find:Eu,type:this.type})]},addPasteRules(){return[yt({find:Nu,type:this.type}),yt({find:Du,type:this.type})]}}),Ru=Y.create({name:"listItem",addOptions(){return{HTMLAttributes:{},bulletListTypeName:"bulletList",orderedListTypeName:"orderedList"}},content:"paragraph block*",defining:!0,parseHTML(){return[{tag:"li"}]},renderHTML({HTMLAttributes:r}){return["li",$(this.options.HTMLAttributes,r),0]},addKeyboardShortcuts(){return{Enter:()=>this.editor.commands.splitListItem(this.name),Tab:()=>this.editor.commands.sinkListItem(this.name),"Shift-Tab":()=>this.editor.commands.liftListItem(this.name)}}}),Bi=we.create({name:"textStyle",addOptions(){return{HTMLAttributes:{}}},parseHTML(){return[{tag:"span",getAttrs:r=>r.hasAttribute("style")?{}:!1}]},renderHTML({HTMLAttributes:r}){return["span",$(this.options.HTMLAttributes,r),0]},addCommands(){return{removeEmptyTextStyle:()=>({state:r,commands:e})=>{const t=xn(r,this.type);return Object.entries(t).some(([,i])=>!!i)?!0:e.unsetMark(this.name)}}}}),Li=/^\s*([-+*])\s$/,Pu=Y.create({name:"bulletList",addOptions(){return{itemTypeName:"listItem",HTMLAttributes:{},keepMarks:!1,keepAttributes:!1}},group:"block list",content(){return`${this.options.itemTypeName}+`},parseHTML(){return[{tag:"ul"}]},renderHTML({HTMLAttributes:r}){return["ul",$(this.options.HTMLAttributes,r),0]},addCommands(){return{toggleBulletList:()=>({commands:r,chain:e})=>this.options.keepAttributes?e().toggleList(this.name,this.options.itemTypeName,this.options.keepMarks).updateAttributes(Ru.name,this.editor.getAttributes(Bi.name)).run():r.toggleList(this.name,this.options.itemTypeName,this.options.keepMarks)}},addKeyboardShortcuts(){return{"Mod-Shift-8":()=>this.editor.commands.toggleBulletList()}},addInputRules(){let r=Pt({find:Li,type:this.type});return(this.options.keepMarks||this.options.keepAttributes)&&(r=Pt({find:Li,type:this.type,keepMarks:this.options.keepMarks,keepAttributes:this.options.keepAttributes,getAttributes:()=>this.editor.getAttributes(Bi.name),editor:this.editor})),[r]}}),Bu=/(?:^|\s)((?:`)((?:[^`]+))(?:`))$/,Lu=/(?:^|\s)((?:`)((?:[^`]+))(?:`))/g,zu=we.create({name:"code",addOptions(){return{HTMLAttributes:{}}},excludes:"_",code:!0,exitable:!0,parseHTML(){return[{tag:"code"}]},renderHTML({HTMLAttributes:r}){return["code",$(this.options.HTMLAttributes,r),0]},addCommands(){return{setCode:()=>({commands:r})=>r.setMark(this.name),toggleCode:()=>({commands:r})=>r.toggleMark(this.name),unsetCode:()=>({commands:r})=>r.unsetMark(this.name)}},addKeyboardShortcuts(){return{"Mod-e":()=>this.editor.commands.toggleCode()}},addInputRules(){return[gt({find:Bu,type:this.type})]},addPasteRules(){return[yt({find:Lu,type:this.type})]}}),Fu=/^```([a-z]+)?[\s\n]$/,Vu=/^~~~([a-z]+)?[\s\n]$/,$u=Y.create({name:"codeBlock",addOptions(){return{languageClassPrefix:"language-",exitOnTripleEnter:!0,exitOnArrowDown:!0,HTMLAttributes:{}}},content:"text*",marks:"",group:"block",code:!0,defining:!0,addAttributes(){return{language:{default:null,parseHTML:r=>{var e;const{languageClassPrefix:t}=this.options,s=[...((e=r.firstElementChild)===null||e===void 0?void 0:e.classList)||[]].filter(o=>o.startsWith(t)).map(o=>o.replace(t,""))[0];return s||null},rendered:!1}}},parseHTML(){return[{tag:"pre",preserveWhitespace:"full"}]},renderHTML({node:r,HTMLAttributes:e}){return["pre",$(this.options.HTMLAttributes,e),["code",{class:r.attrs.language?this.options.languageClassPrefix+r.attrs.language:null},0]]},addCommands(){return{setCodeBlock:r=>({commands:e})=>e.setNode(this.name,r),toggleCodeBlock:r=>({commands:e})=>e.toggleNode(this.name,"paragraph",r)}},addKeyboardShortcuts(){return{"Mod-Alt-c":()=>this.editor.commands.toggleCodeBlock(),Backspace:()=>{const{empty:r,$anchor:e}=this.editor.state.selection,t=e.pos===1;return!r||e.parent.type.name!==this.name?!1:t||!e.parent.textContent.length?this.editor.commands.clearNodes():!1},Enter:({editor:r})=>{if(!this.options.exitOnTripleEnter)return!1;const{state:e}=r,{selection:t}=e,{$from:n,empty:i}=t;if(!i||n.parent.type!==this.type)return!1;const s=n.parentOffset===n.parent.nodeSize-2,o=n.parent.textContent.endsWith(` +`,textSerializers:n={}}=e||{};return Wd(this.state.doc,{blockSeparator:t,textSerializers:{...so(this.schema),...n}})}get isEmpty(){return Gd(this.state.doc)}getCharacterCount(){return console.warn('[tiptap warn]: "editor.getCharacterCount()" is deprecated. Please use "editor.storage.characterCount.characters()" instead.'),this.state.doc.content.size-2}destroy(){this.emit("destroy"),this.view&&this.view.destroy(),this.removeAllListeners()}get isDestroyed(){var e;return!(!((e=this.view)===null||e===void 0)&&e.docView)}};function gt(r){return new gn({find:r.find,handler:({state:e,range:t,match:n})=>{const i=O(r.getAttributes,void 0,n);if(i===!1||i===null)return null;const{tr:s}=e,o=n[n.length-1],l=n[0];if(o){const a=l.search(/\S/),c=t.from+l.indexOf(o),d=c+o.length;if(co(t.from,t.to,e.doc).filter(h=>h.mark.type.excluded.find(m=>m===r.type&&m!==h.mark.type)).filter(h=>h.to>c).length)return null;dt.from&&s.delete(t.from+a,c);const f=t.from+a+o.length;s.addMark(t.from+a,f,r.type.create(i||{})),s.removeStoredMark(r.type)}}})}function Tu(r){return new gn({find:r.find,handler:({state:e,range:t,match:n})=>{const i=O(r.getAttributes,void 0,n)||{},{tr:s}=e,o=t.from;let l=t.to;const a=r.type.create(i);if(n[1]){const c=n[0].lastIndexOf(n[1]);let d=o+c;d>l?d=l:l=d+n[1].length;const u=n[0][n[0].length-1];s.insertText(u,o+n[0].length-1),s.replaceWith(d,l,a)}else n[0]&&s.insert(o-1,r.type.create(i)).delete(s.mapping.map(o),s.mapping.map(l));s.scrollIntoView()}})}function dr(r){return new gn({find:r.find,handler:({state:e,range:t,match:n})=>{const i=e.doc.resolve(t.from),s=O(r.getAttributes,void 0,n)||{};if(!i.node(-1).canReplaceWith(i.index(-1),i.indexAfter(-1),r.type))return null;e.tr.delete(t.from,t.to).setBlockType(t.from,t.from,r.type,s)}})}function Pt(r){return new gn({find:r.find,handler:({state:e,range:t,match:n,chain:i})=>{const s=O(r.getAttributes,void 0,n)||{},o=e.tr.delete(t.from,t.to),a=o.doc.resolve(t.from).blockRange(),c=a&&fr(a,r.type,s);if(!c)return null;if(o.wrap(a,c),r.keepMarks&&r.editor){const{selection:u,storedMarks:f}=e,{splittableMarks:h}=r.editor.extensionManager,p=f||u.$to.parentOffset&&u.$from.marks();if(p){const m=p.filter(g=>h.includes(g.type.name));o.ensureMarks(m)}}if(r.keepAttributes){const u=r.type.name==="bulletList"||r.type.name==="orderedList"?"listItem":"taskList";i().updateAttributes(u,s).run()}const d=o.doc.resolve(t.from-1).nodeBefore;d&&d.type===r.type&&Ve(o.doc,t.from-1)&&(!r.joinPredicate||r.joinPredicate(n,d))&&o.join(t.from-1)}})}class we{constructor(e={}){this.type="mark",this.name="mark",this.parent=null,this.child=null,this.config={name:this.name,defaultOptions:{}},this.config={...this.config,...e},this.name=this.config.name,e.defaultOptions&&console.warn(`[tiptap warn]: BREAKING CHANGE: "defaultOptions" is deprecated. Please use "addOptions" instead. Found in extension: "${this.name}".`),this.options=this.config.defaultOptions,this.config.addOptions&&(this.options=O(S(this,"addOptions",{name:this.name}))),this.storage=O(S(this,"addStorage",{name:this.name,options:this.options}))||{}}static create(e={}){return new we(e)}configure(e={}){const t=this.extend();return t.options=yn(this.options,e),t.storage=O(S(t,"addStorage",{name:t.name,options:t.options})),t}extend(e={}){const t=new we(e);return t.parent=this,this.child=t,t.name=e.name?e.name:t.parent.name,e.defaultOptions&&console.warn(`[tiptap warn]: BREAKING CHANGE: "defaultOptions" is deprecated. Please use "addOptions" instead. Found in extension: "${t.name}".`),t.options=O(S(t,"addOptions",{name:t.name})),t.storage=O(S(t,"addStorage",{name:t.name,options:t.options})),t}static handleExit({editor:e,mark:t}){const{tr:n}=e.state,i=e.state.selection.$from;if(i.pos===i.end()){const o=i.marks();if(!!!o.find(c=>(c==null?void 0:c.type.name)===t.name))return!1;const a=o.find(c=>(c==null?void 0:c.type.name)===t.name);return a&&n.removeStoredMark(a),n.insertText(" ",i.pos),e.view.dispatch(n),!0}return!1}}class Y{constructor(e={}){this.type="node",this.name="node",this.parent=null,this.child=null,this.config={name:this.name,defaultOptions:{}},this.config={...this.config,...e},this.name=this.config.name,e.defaultOptions&&console.warn(`[tiptap warn]: BREAKING CHANGE: "defaultOptions" is deprecated. Please use "addOptions" instead. Found in extension: "${this.name}".`),this.options=this.config.defaultOptions,this.config.addOptions&&(this.options=O(S(this,"addOptions",{name:this.name}))),this.storage=O(S(this,"addStorage",{name:this.name,options:this.options}))||{}}static create(e={}){return new Y(e)}configure(e={}){const t=this.extend();return t.options=yn(this.options,e),t.storage=O(S(t,"addStorage",{name:t.name,options:t.options})),t}extend(e={}){const t=new Y(e);return t.parent=this,this.child=t,t.name=e.name?e.name:t.parent.name,e.defaultOptions&&console.warn(`[tiptap warn]: BREAKING CHANGE: "defaultOptions" is deprecated. Please use "addOptions" instead. Found in extension: "${t.name}".`),t.options=O(S(t,"addOptions",{name:t.name})),t.storage=O(S(t,"addStorage",{name:t.name,options:t.options})),t}}function yt(r){return new Kc({find:r.find,handler:({state:e,range:t,match:n,pasteEvent:i})=>{const s=O(r.getAttributes,void 0,n,i);if(s===!1||s===null)return null;const{tr:o}=e,l=n[n.length-1],a=n[0];let c=t.to;if(l){const d=a.search(/\S/),u=t.from+a.indexOf(l),f=u+l.length;if(co(t.from,t.to,e.doc).filter(p=>p.mark.type.excluded.find(g=>g===r.type&&g!==p.mark.type)).filter(p=>p.to>u).length)return null;ft.from&&o.delete(t.from+d,u),c=t.from+d+l.length,o.addMark(t.from+d,c,r.type.create(s||{})),o.removeStoredMark(r.type)}}})}function Ri(r){return vo((e,t)=>({get(){return e(),r},set(n){r=n,requestAnimationFrame(()=>{requestAnimationFrame(()=>{t()})})}}))}class Ou extends Cu{constructor(e={}){return super(e),this.vueRenderers=To(new Map),this.contentComponent=null,this.reactiveState=Ri(this.view.state),this.reactiveExtensionStorage=Ri(this.extensionStorage),this.on("transaction",()=>{this.reactiveState.value=this.view.state,this.reactiveExtensionStorage.value=this.extensionStorage}),Oo(this)}get state(){return this.reactiveState?this.reactiveState.value:this.view.state}get storage(){return this.reactiveExtensionStorage?this.reactiveExtensionStorage.value:super.storage}registerPlugin(e,t){super.registerPlugin(e,t),this.reactiveState.value=this.view.state}unregisterPlugin(e){super.unregisterPlugin(e),this.reactiveState.value=this.view.state}}const vu=go({name:"EditorContent",props:{editor:{default:null,type:Object}},setup(r){const e=yo(),t=bo();return ko(()=>{const n=r.editor;n&&n.options.element&&e.value&&xo(()=>{if(!e.value||!n.options.element.firstChild)return;const i=So(e.value);e.value.append(...n.options.element.childNodes),n.contentComponent=t.ctx._,n.setOptions({element:i}),n.createNodeViews()})}),$i(()=>{const n=r.editor;if(!n||(n.isDestroyed||n.view.setProps({nodeViews:{}}),n.contentComponent=null,!n.options.element.firstChild))return;const i=document.createElement("div");i.append(...n.options.element.childNodes),n.setOptions({element:i})}),{rootEl:e}},render(){const r=[];return this.editor&&this.editor.vueRenderers.forEach(e=>{const t=xn(Mo,{to:e.teleportElement,key:e.id},xn(e.component,{ref:e.id,...e.props}));r.push(t)}),xn("div",{ref:e=>{this.rootEl=e}},...r)}}),Au=(r={})=>{const e=wo();return Co(()=>{e.value=new Ou(r)}),$i(()=>{var t;(t=e.value)===null||t===void 0||t.destroy()}),e},Nu=/^\s*>\s$/,Eu=Y.create({name:"blockquote",addOptions(){return{HTMLAttributes:{}}},content:"block+",group:"block",defining:!0,parseHTML(){return[{tag:"blockquote"}]},renderHTML({HTMLAttributes:r}){return["blockquote",$(this.options.HTMLAttributes,r),0]},addCommands(){return{setBlockquote:()=>({commands:r})=>r.wrapIn(this.name),toggleBlockquote:()=>({commands:r})=>r.toggleWrap(this.name),unsetBlockquote:()=>({commands:r})=>r.lift(this.name)}},addKeyboardShortcuts(){return{"Mod-Shift-b":()=>this.editor.commands.toggleBlockquote()}},addInputRules(){return[Pt({find:Nu,type:this.type})]}}),Du=/(?:^|\s)((?:\*\*)((?:[^*]+))(?:\*\*))$/,Iu=/(?:^|\s)((?:\*\*)((?:[^*]+))(?:\*\*))/g,Ru=/(?:^|\s)((?:__)((?:[^__]+))(?:__))$/,Pu=/(?:^|\s)((?:__)((?:[^__]+))(?:__))/g,Bu=we.create({name:"bold",addOptions(){return{HTMLAttributes:{}}},parseHTML(){return[{tag:"strong"},{tag:"b",getAttrs:r=>r.style.fontWeight!=="normal"&&null},{style:"font-weight",getAttrs:r=>/^(bold(er)?|[5-9]\d{2,})$/.test(r)&&null}]},renderHTML({HTMLAttributes:r}){return["strong",$(this.options.HTMLAttributes,r),0]},addCommands(){return{setBold:()=>({commands:r})=>r.setMark(this.name),toggleBold:()=>({commands:r})=>r.toggleMark(this.name),unsetBold:()=>({commands:r})=>r.unsetMark(this.name)}},addKeyboardShortcuts(){return{"Mod-b":()=>this.editor.commands.toggleBold(),"Mod-B":()=>this.editor.commands.toggleBold()}},addInputRules(){return[gt({find:Du,type:this.type}),gt({find:Ru,type:this.type})]},addPasteRules(){return[yt({find:Iu,type:this.type}),yt({find:Pu,type:this.type})]}}),Lu=Y.create({name:"listItem",addOptions(){return{HTMLAttributes:{},bulletListTypeName:"bulletList",orderedListTypeName:"orderedList"}},content:"paragraph block*",defining:!0,parseHTML(){return[{tag:"li"}]},renderHTML({HTMLAttributes:r}){return["li",$(this.options.HTMLAttributes,r),0]},addKeyboardShortcuts(){return{Enter:()=>this.editor.commands.splitListItem(this.name),Tab:()=>this.editor.commands.sinkListItem(this.name),"Shift-Tab":()=>this.editor.commands.liftListItem(this.name)}}}),Pi=we.create({name:"textStyle",addOptions(){return{HTMLAttributes:{}}},parseHTML(){return[{tag:"span",getAttrs:r=>r.hasAttribute("style")?{}:!1}]},renderHTML({HTMLAttributes:r}){return["span",$(this.options.HTMLAttributes,r),0]},addCommands(){return{removeEmptyTextStyle:()=>({state:r,commands:e})=>{const t=kn(r,this.type);return Object.entries(t).some(([,i])=>!!i)?!0:e.unsetMark(this.name)}}}}),Bi=/^\s*([-+*])\s$/,zu=Y.create({name:"bulletList",addOptions(){return{itemTypeName:"listItem",HTMLAttributes:{},keepMarks:!1,keepAttributes:!1}},group:"block list",content(){return`${this.options.itemTypeName}+`},parseHTML(){return[{tag:"ul"}]},renderHTML({HTMLAttributes:r}){return["ul",$(this.options.HTMLAttributes,r),0]},addCommands(){return{toggleBulletList:()=>({commands:r,chain:e})=>this.options.keepAttributes?e().toggleList(this.name,this.options.itemTypeName,this.options.keepMarks).updateAttributes(Lu.name,this.editor.getAttributes(Pi.name)).run():r.toggleList(this.name,this.options.itemTypeName,this.options.keepMarks)}},addKeyboardShortcuts(){return{"Mod-Shift-8":()=>this.editor.commands.toggleBulletList()}},addInputRules(){let r=Pt({find:Bi,type:this.type});return(this.options.keepMarks||this.options.keepAttributes)&&(r=Pt({find:Bi,type:this.type,keepMarks:this.options.keepMarks,keepAttributes:this.options.keepAttributes,getAttributes:()=>this.editor.getAttributes(Pi.name),editor:this.editor})),[r]}}),Fu=/(?:^|\s)((?:`)((?:[^`]+))(?:`))$/,Vu=/(?:^|\s)((?:`)((?:[^`]+))(?:`))/g,$u=we.create({name:"code",addOptions(){return{HTMLAttributes:{}}},excludes:"_",code:!0,exitable:!0,parseHTML(){return[{tag:"code"}]},renderHTML({HTMLAttributes:r}){return["code",$(this.options.HTMLAttributes,r),0]},addCommands(){return{setCode:()=>({commands:r})=>r.setMark(this.name),toggleCode:()=>({commands:r})=>r.toggleMark(this.name),unsetCode:()=>({commands:r})=>r.unsetMark(this.name)}},addKeyboardShortcuts(){return{"Mod-e":()=>this.editor.commands.toggleCode()}},addInputRules(){return[gt({find:Fu,type:this.type})]},addPasteRules(){return[yt({find:Vu,type:this.type})]}}),Hu=/^```([a-z]+)?[\s\n]$/,_u=/^~~~([a-z]+)?[\s\n]$/,ju=Y.create({name:"codeBlock",addOptions(){return{languageClassPrefix:"language-",exitOnTripleEnter:!0,exitOnArrowDown:!0,HTMLAttributes:{}}},content:"text*",marks:"",group:"block",code:!0,defining:!0,addAttributes(){return{language:{default:null,parseHTML:r=>{var e;const{languageClassPrefix:t}=this.options,s=[...((e=r.firstElementChild)===null||e===void 0?void 0:e.classList)||[]].filter(o=>o.startsWith(t)).map(o=>o.replace(t,""))[0];return s||null},rendered:!1}}},parseHTML(){return[{tag:"pre",preserveWhitespace:"full"}]},renderHTML({node:r,HTMLAttributes:e}){return["pre",$(this.options.HTMLAttributes,e),["code",{class:r.attrs.language?this.options.languageClassPrefix+r.attrs.language:null},0]]},addCommands(){return{setCodeBlock:r=>({commands:e})=>e.setNode(this.name,r),toggleCodeBlock:r=>({commands:e})=>e.toggleNode(this.name,"paragraph",r)}},addKeyboardShortcuts(){return{"Mod-Alt-c":()=>this.editor.commands.toggleCodeBlock(),Backspace:()=>{const{empty:r,$anchor:e}=this.editor.state.selection,t=e.pos===1;return!r||e.parent.type.name!==this.name?!1:t||!e.parent.textContent.length?this.editor.commands.clearNodes():!1},Enter:({editor:r})=>{if(!this.options.exitOnTripleEnter)return!1;const{state:e}=r,{selection:t}=e,{$from:n,empty:i}=t;if(!i||n.parent.type!==this.type)return!1;const s=n.parentOffset===n.parent.nodeSize-2,o=n.parent.textContent.endsWith(` -`);return!s||!o?!1:r.chain().command(({tr:l})=>(l.delete(n.pos-2,n.pos),!0)).exitCode().run()},ArrowDown:({editor:r})=>{if(!this.options.exitOnArrowDown)return!1;const{state:e}=r,{selection:t,doc:n}=e,{$from:i,empty:s}=t;if(!s||i.parent.type!==this.type||!(i.parentOffset===i.parent.nodeSize-2))return!1;const l=i.after();return l===void 0||n.nodeAt(l)?!1:r.commands.exitCode()}}},addInputRules(){return[ur({find:Fu,type:this.type,getAttributes:r=>({language:r[1]})}),ur({find:Vu,type:this.type,getAttributes:r=>({language:r[1]})})]},addProseMirrorPlugins(){return[new ue({key:new $e("codeBlockVSCodeHandler"),props:{handlePaste:(r,e)=>{if(!e.clipboardData||this.editor.isActive(this.type.name))return!1;const t=e.clipboardData.getData("text/plain"),n=e.clipboardData.getData("vscode-editor-data"),i=n?JSON.parse(n):void 0,s=i==null?void 0:i.mode;if(!t||!s)return!1;const{tr:o}=r.state;return o.replaceSelectionWith(this.type.create({language:s})),o.setSelection(C.near(o.doc.resolve(Math.max(0,o.selection.from-2)))),o.insertText(t.replace(/\r\n?/g,` -`)),o.setMeta("paste",!0),r.dispatch(o),!0}}})]}}),Hu=Y.create({name:"doc",topNode:!0,content:"block+"});function _u(r={}){return new ue({view(e){return new ju(e,r)}})}class ju{constructor(e,t){var n;this.editorView=e,this.cursorPos=null,this.element=null,this.timeout=-1,this.width=(n=t.width)!==null&&n!==void 0?n:1,this.color=t.color===!1?void 0:t.color||"black",this.class=t.class,this.handlers=["dragover","dragend","drop","dragleave"].map(i=>{let s=o=>{this[i](o)};return e.dom.addEventListener(i,s),{name:i,handler:s}})}destroy(){this.handlers.forEach(({name:e,handler:t})=>this.editorView.dom.removeEventListener(e,t))}update(e,t){this.cursorPos!=null&&t.doc!=e.state.doc&&(this.cursorPos>e.state.doc.content.size?this.setCursor(null):this.updateOverlay())}setCursor(e){e!=this.cursorPos&&(this.cursorPos=e,e==null?(this.element.parentNode.removeChild(this.element),this.element=null):this.updateOverlay())}updateOverlay(){let e=this.editorView.state.doc.resolve(this.cursorPos),t=!e.parent.inlineContent,n;if(t){let l=e.nodeBefore,a=e.nodeAfter;if(l||a){let c=this.editorView.nodeDOM(this.cursorPos-(l?l.nodeSize:0));if(c){let d=c.getBoundingClientRect(),u=l?d.bottom:d.top;l&&a&&(u=(u+this.editorView.nodeDOM(this.cursorPos).getBoundingClientRect().top)/2),n={left:d.left,right:d.right,top:u-this.width/2,bottom:u+this.width/2}}}}if(!n){let l=this.editorView.coordsAtPos(this.cursorPos);n={left:l.left-this.width/2,right:l.left+this.width/2,top:l.top,bottom:l.bottom}}let i=this.editorView.dom.offsetParent;this.element||(this.element=i.appendChild(document.createElement("div")),this.class&&(this.element.className=this.class),this.element.style.cssText="position: absolute; z-index: 50; pointer-events: none;",this.color&&(this.element.style.backgroundColor=this.color)),this.element.classList.toggle("prosemirror-dropcursor-block",t),this.element.classList.toggle("prosemirror-dropcursor-inline",!t);let s,o;if(!i||i==document.body&&getComputedStyle(i).position=="static")s=-pageXOffset,o=-pageYOffset;else{let l=i.getBoundingClientRect();s=l.left-i.scrollLeft,o=l.top-i.scrollTop}this.element.style.left=n.left-s+"px",this.element.style.top=n.top-o+"px",this.element.style.width=n.right-n.left+"px",this.element.style.height=n.bottom-n.top+"px"}scheduleRemoval(e){clearTimeout(this.timeout),this.timeout=setTimeout(()=>this.setCursor(null),e)}dragover(e){if(!this.editorView.editable)return;let t=this.editorView.posAtCoords({left:e.clientX,top:e.clientY}),n=t&&t.inside>=0&&this.editorView.state.doc.nodeAt(t.inside),i=n&&n.type.spec.disableDropCursor,s=typeof i=="function"?i(this.editorView,t,e):i;if(t&&!s){let o=t.pos;if(this.editorView.dragging&&this.editorView.dragging.slice){let l=us(this.editorView.state.doc,o,this.editorView.dragging.slice);l!=null&&(o=l)}this.setCursor(o),this.scheduleRemoval(5e3)}}dragend(){this.scheduleRemoval(20)}drop(){this.scheduleRemoval(20)}dragleave(e){(e.target==this.editorView.dom||!this.editorView.dom.contains(e.relatedTarget))&&this.setCursor(null)}}const Ju=se.create({name:"dropCursor",addOptions(){return{color:"currentColor",width:1,class:void 0}},addProseMirrorPlugins(){return[_u(this.options)]}});class L extends v{constructor(e){super(e,e)}map(e,t){let n=e.resolve(t.map(this.head));return L.valid(n)?new L(n):v.near(n)}content(){return k.empty}eq(e){return e instanceof L&&e.head==this.head}toJSON(){return{type:"gapcursor",pos:this.head}}static fromJSON(e,t){if(typeof t.pos!="number")throw new RangeError("Invalid input for GapCursor.fromJSON");return new L(e.resolve(t.pos))}getBookmark(){return new Er(this.anchor)}static valid(e){let t=e.parent;if(t.isTextblock||!Wu(e)||!Ku(e))return!1;let n=t.type.spec.allowGapCursor;if(n!=null)return n;let i=t.contentMatchAt(e.index()).defaultType;return i&&i.isTextblock}static findGapCursorFrom(e,t,n=!1){e:for(;;){if(!n&&L.valid(e))return e;let i=e.pos,s=null;for(let o=e.depth;;o--){let l=e.node(o);if(t>0?e.indexAfter(o)0){s=l.child(t>0?e.indexAfter(o):e.index(o)-1);break}else if(o==0)return null;i+=t;let a=e.doc.resolve(i);if(L.valid(a))return a}for(;;){let o=t>0?s.firstChild:s.lastChild;if(!o){if(s.isAtom&&!s.isText&&!M.isSelectable(s)){e=e.doc.resolve(i+s.nodeSize*t),n=!1;continue e}break}s=o,i+=t;let l=e.doc.resolve(i);if(L.valid(l))return l}return null}}}L.prototype.visible=!1;L.findFrom=L.findGapCursorFrom;v.jsonID("gapcursor",L);class Er{constructor(e){this.pos=e}map(e){return new Er(e.map(this.pos))}resolve(e){let t=e.resolve(this.pos);return L.valid(t)?new L(t):v.near(t)}}function Wu(r){for(let e=r.depth;e>=0;e--){let t=r.index(e),n=r.node(e);if(t==0){if(n.type.spec.isolating)return!0;continue}for(let i=n.child(t-1);;i=i.lastChild){if(i.childCount==0&&!i.inlineContent||i.isAtom||i.type.spec.isolating)return!0;if(i.inlineContent)return!1}}return!0}function Ku(r){for(let e=r.depth;e>=0;e--){let t=r.indexAfter(e),n=r.node(e);if(t==n.childCount){if(n.type.spec.isolating)return!0;continue}for(let i=n.child(t);;i=i.firstChild){if(i.childCount==0&&!i.inlineContent||i.isAtom||i.type.spec.isolating)return!0;if(i.inlineContent)return!1}}return!0}function qu(){return new ue({props:{decorations:Xu,createSelectionBetween(r,e,t){return e.pos==t.pos&&L.valid(t)?new L(t):null},handleClick:Gu,handleKeyDown:Uu,handleDOMEvents:{beforeinput:Yu}}})}const Uu=Xs({ArrowLeft:_t("horiz",-1),ArrowRight:_t("horiz",1),ArrowUp:_t("vert",-1),ArrowDown:_t("vert",1)});function _t(r,e){const t=r=="vert"?e>0?"down":"up":e>0?"right":"left";return function(n,i,s){let o=n.selection,l=e>0?o.$to:o.$from,a=o.empty;if(o instanceof C){if(!s.endOfTextblock(t)||l.depth==0)return!1;a=!1,l=n.doc.resolve(e>0?l.after():l.before())}let c=L.findGapCursorFrom(l,e,a);return c?(i&&i(n.tr.setSelection(new L(c))),!0):!1}}function Gu(r,e,t){if(!r||!r.editable)return!1;let n=r.state.doc.resolve(e);if(!L.valid(n))return!1;let i=r.posAtCoords({left:t.clientX,top:t.clientY});return i&&i.inside>-1&&M.isSelectable(r.state.doc.nodeAt(i.inside))?!1:(r.dispatch(r.state.tr.setSelection(new L(n))),!0)}function Yu(r,e){if(e.inputType!="insertCompositionText"||!(r.state.selection instanceof L))return!1;let{$from:t}=r.state.selection,n=t.parent.contentMatchAt(t.index()).findWrapping(r.state.schema.nodes.text);if(!n)return!1;let i=b.empty;for(let o=n.length-1;o>=0;o--)i=b.from(n[o].createAndFill(null,i));let s=r.state.tr.replace(t.pos,t.pos,new k(i,0,0));return s.setSelection(C.near(s.doc.resolve(t.pos+1))),r.dispatch(s),!1}function Xu(r){if(!(r.selection instanceof L))return null;let e=document.createElement("div");return e.className="ProseMirror-gapcursor",V.create(r.doc,[ce.widget(r.selection.head,e,{key:"gapcursor"})])}const Zu=se.create({name:"gapCursor",addProseMirrorPlugins(){return[qu()]},extendNodeSchema(r){var e;const t={name:r.name,options:r.options,storage:r.storage};return{allowGapCursor:(e=O(S(r,"allowGapCursor",t)))!==null&&e!==void 0?e:null}}}),Qu=Y.create({name:"hardBreak",addOptions(){return{keepMarks:!0,HTMLAttributes:{}}},inline:!0,group:"inline",selectable:!1,parseHTML(){return[{tag:"br"}]},renderHTML({HTMLAttributes:r}){return["br",$(this.options.HTMLAttributes,r)]},renderText(){return` -`},addCommands(){return{setHardBreak:()=>({commands:r,chain:e,state:t,editor:n})=>r.first([()=>r.exitCode(),()=>r.command(()=>{const{selection:i,storedMarks:s}=t;if(i.$from.parent.type.spec.isolating)return!1;const{keepMarks:o}=this.options,{splittableMarks:l}=n.extensionManager,a=s||i.$to.parentOffset&&i.$from.marks();return e().insertContent({type:this.name}).command(({tr:c,dispatch:d})=>{if(d&&a&&o){const u=a.filter(f=>l.includes(f.type.name));c.ensureMarks(u)}return!0}).run()})])}},addKeyboardShortcuts(){return{"Mod-Enter":()=>this.editor.commands.setHardBreak(),"Shift-Enter":()=>this.editor.commands.setHardBreak()}}}),ef=Y.create({name:"heading",addOptions(){return{levels:[1,2,3,4,5,6],HTMLAttributes:{}}},content:"inline*",group:"block",defining:!0,addAttributes(){return{level:{default:1,rendered:!1}}},parseHTML(){return this.options.levels.map(r=>({tag:`h${r}`,attrs:{level:r}}))},renderHTML({node:r,HTMLAttributes:e}){return[`h${this.options.levels.includes(r.attrs.level)?r.attrs.level:this.options.levels[0]}`,$(this.options.HTMLAttributes,e),0]},addCommands(){return{setHeading:r=>({commands:e})=>this.options.levels.includes(r.level)?e.setNode(this.name,r):!1,toggleHeading:r=>({commands:e})=>this.options.levels.includes(r.level)?e.toggleNode(this.name,"paragraph",r):!1}},addKeyboardShortcuts(){return this.options.levels.reduce((r,e)=>({...r,[`Mod-Alt-${e}`]:()=>this.editor.commands.toggleHeading({level:e})}),{})},addInputRules(){return this.options.levels.map(r=>ur({find:new RegExp(`^(#{1,${r}})\\s$`),type:this.type,getAttributes:{level:r}}))}});var ln=200,_=function(){};_.prototype.append=function(e){return e.length?(e=_.from(e),!this.length&&e||e.length=t?_.empty:this.sliceInner(Math.max(0,e),Math.min(this.length,t))};_.prototype.get=function(e){if(!(e<0||e>=this.length))return this.getInner(e)};_.prototype.forEach=function(e,t,n){t===void 0&&(t=0),n===void 0&&(n=this.length),t<=n?this.forEachInner(e,t,n,0):this.forEachInvertedInner(e,t,n,0)};_.prototype.map=function(e,t,n){t===void 0&&(t=0),n===void 0&&(n=this.length);var i=[];return this.forEach(function(s,o){return i.push(e(s,o))},t,n),i};_.from=function(e){return e instanceof _?e:e&&e.length?new fo(e):_.empty};var fo=function(r){function e(n){r.call(this),this.values=n}r&&(e.__proto__=r),e.prototype=Object.create(r&&r.prototype),e.prototype.constructor=e;var t={length:{configurable:!0},depth:{configurable:!0}};return e.prototype.flatten=function(){return this.values},e.prototype.sliceInner=function(i,s){return i==0&&s==this.length?this:new e(this.values.slice(i,s))},e.prototype.getInner=function(i){return this.values[i]},e.prototype.forEachInner=function(i,s,o,l){for(var a=s;a=o;a--)if(i(this.values[a],l+a)===!1)return!1},e.prototype.leafAppend=function(i){if(this.length+i.length<=ln)return new e(this.values.concat(i.flatten()))},e.prototype.leafPrepend=function(i){if(this.length+i.length<=ln)return new e(i.flatten().concat(this.values))},t.length.get=function(){return this.values.length},t.depth.get=function(){return 0},Object.defineProperties(e.prototype,t),e}(_);_.empty=new fo([]);var tf=function(r){function e(t,n){r.call(this),this.left=t,this.right=n,this.length=t.length+n.length,this.depth=Math.max(t.depth,n.depth)+1}return r&&(e.__proto__=r),e.prototype=Object.create(r&&r.prototype),e.prototype.constructor=e,e.prototype.flatten=function(){return this.left.flatten().concat(this.right.flatten())},e.prototype.getInner=function(n){return nl&&this.right.forEachInner(n,Math.max(i-l,0),Math.min(this.length,s)-l,o+l)===!1)return!1},e.prototype.forEachInvertedInner=function(n,i,s,o){var l=this.left.length;if(i>l&&this.right.forEachInvertedInner(n,i-l,Math.max(s,l)-l,o+l)===!1||s=s?this.right.slice(n-s,i-s):this.left.slice(n,s).append(this.right.slice(0,i-s))},e.prototype.leafAppend=function(n){var i=this.right.leafAppend(n);if(i)return new e(this.left,i)},e.prototype.leafPrepend=function(n){var i=this.left.leafPrepend(n);if(i)return new e(i,this.right)},e.prototype.appendInner=function(n){return this.left.depth>=Math.max(this.right.depth,n.depth)+1?new e(this.left,new e(this.right,n)):new e(this,n)},e}(_);const nf=500;class he{constructor(e,t){this.items=e,this.eventCount=t}popEvent(e,t){if(this.eventCount==0)return null;let n=this.items.length;for(;;n--)if(this.items.get(n-1).selection){--n;break}let i,s;t&&(i=this.remapping(n,this.items.length),s=i.maps.length);let o=e.tr,l,a,c=[],d=[];return this.items.forEach((u,f)=>{if(!u.step){i||(i=this.remapping(n,f+1),s=i.maps.length),s--,d.push(u);return}if(i){d.push(new ye(u.map));let h=u.step.map(i.slice(s)),p;h&&o.maybeStep(h).doc&&(p=o.mapping.maps[o.mapping.maps.length-1],c.push(new ye(p,void 0,void 0,c.length+d.length))),s--,p&&i.appendMap(p,s)}else o.maybeStep(u.step);if(u.selection)return l=i?u.selection.map(i.slice(s)):u.selection,a=new he(this.items.slice(0,n).append(d.reverse().concat(c)),this.eventCount-1),!1},this.items.length,0),{remaining:a,transform:o,selection:l}}addTransform(e,t,n,i){let s=[],o=this.eventCount,l=this.items,a=!i&&l.length?l.get(l.length-1):null;for(let d=0;dsf&&(l=rf(l,c),o-=c),new he(l.append(s),o)}remapping(e,t){let n=new lt;return this.items.forEach((i,s)=>{let o=i.mirrorOffset!=null&&s-i.mirrorOffset>=e?n.maps.length-i.mirrorOffset:void 0;n.appendMap(i.map,o)},e,t),n}addMaps(e){return this.eventCount==0?this:new he(this.items.append(e.map(t=>new ye(t))),this.eventCount)}rebased(e,t){if(!this.eventCount)return this;let n=[],i=Math.max(0,this.items.length-t),s=e.mapping,o=e.steps.length,l=this.eventCount;this.items.forEach(f=>{f.selection&&l--},i);let a=t;this.items.forEach(f=>{let h=s.getMirror(--a);if(h==null)return;o=Math.min(o,h);let p=s.maps[h];if(f.step){let m=e.steps[h].invert(e.docs[h]),g=f.selection&&f.selection.map(s.slice(a+1,h));g&&l++,n.push(new ye(p,m,g))}else n.push(new ye(p))},i);let c=[];for(let f=t;fnf&&(u=u.compress(this.items.length-n.length)),u}emptyItemCount(){let e=0;return this.items.forEach(t=>{t.step||e++}),e}compress(e=this.items.length){let t=this.remapping(0,e),n=t.maps.length,i=[],s=0;return this.items.forEach((o,l)=>{if(l>=e)i.push(o),o.selection&&s++;else if(o.step){let a=o.step.map(t.slice(n)),c=a&&a.getMap();if(n--,c&&t.appendMap(c,n),a){let d=o.selection&&o.selection.map(t.slice(n));d&&s++;let u=new ye(c.invert(),a,d),f,h=i.length-1;(f=i.length&&i[h].merge(u))?i[h]=f:i.push(u)}}else o.map&&n--},this.items.length,0),new he(_.from(i.reverse()),s)}}he.empty=new he(_.empty,0);function rf(r,e){let t;return r.forEach((n,i)=>{if(n.selection&&e--==0)return t=i,!1}),r.slice(t)}class ye{constructor(e,t,n,i){this.map=e,this.step=t,this.selection=n,this.mirrorOffset=i}merge(e){if(this.step&&e.step&&!e.selection){let t=e.step.merge(this.step);if(t)return new ye(t.getMap().invert(),t,this.selection)}}}class Ne{constructor(e,t,n,i,s){this.done=e,this.undone=t,this.prevRanges=n,this.prevTime=i,this.prevComposition=s}}const sf=20;function of(r,e,t,n){let i=t.getMeta(ze),s;if(i)return i.historyState;t.getMeta(af)&&(r=new Ne(r.done,r.undone,null,0,-1));let o=t.getMeta("appendedTransaction");if(t.steps.length==0)return r;if(o&&o.getMeta(ze))return o.getMeta(ze).redo?new Ne(r.done.addTransform(t,void 0,n,Wt(e)),r.undone,zi(t.mapping.maps[t.steps.length-1]),r.prevTime,r.prevComposition):new Ne(r.done,r.undone.addTransform(t,void 0,n,Wt(e)),null,r.prevTime,r.prevComposition);if(t.getMeta("addToHistory")!==!1&&!(o&&o.getMeta("addToHistory")===!1)){let l=t.getMeta("composition"),a=r.prevTime==0||!o&&r.prevComposition!=l&&(r.prevTime<(t.time||0)-n.newGroupDelay||!lf(t,r.prevRanges)),c=o?Jn(r.prevRanges,t.mapping):zi(t.mapping.maps[t.steps.length-1]);return new Ne(r.done.addTransform(t,a?e.selection.getBookmark():void 0,n,Wt(e)),he.empty,c,t.time,l??r.prevComposition)}else return(s=t.getMeta("rebased"))?new Ne(r.done.rebased(t,s),r.undone.rebased(t,s),Jn(r.prevRanges,t.mapping),r.prevTime,r.prevComposition):new Ne(r.done.addMaps(t.mapping.maps),r.undone.addMaps(t.mapping.maps),Jn(r.prevRanges,t.mapping),r.prevTime,r.prevComposition)}function lf(r,e){if(!e)return!1;if(!r.docChanged)return!0;let t=!1;return r.mapping.maps[0].forEach((n,i)=>{for(let s=0;s=e[s]&&(t=!0)}),t}function zi(r){let e=[];return r.forEach((t,n,i,s)=>e.push(i,s)),e}function Jn(r,e){if(!r)return null;let t=[];for(let n=0;n{let t=ze.getState(r);return!t||t.done.eventCount==0?!1:(e&&ho(t,r,e,!1),!0)},mo=(r,e)=>{let t=ze.getState(r);return!t||t.undone.eventCount==0?!1:(e&&ho(t,r,e,!0),!0)},df=se.create({name:"history",addOptions(){return{depth:100,newGroupDelay:500}},addCommands(){return{undo:()=>({state:r,dispatch:e})=>po(r,e),redo:()=>({state:r,dispatch:e})=>mo(r,e)}},addProseMirrorPlugins(){return[cf(this.options)]},addKeyboardShortcuts(){return{"Mod-z":()=>this.editor.commands.undo(),"Mod-Z":()=>this.editor.commands.undo(),"Mod-y":()=>this.editor.commands.redo(),"Mod-Y":()=>this.editor.commands.redo(),"Shift-Mod-z":()=>this.editor.commands.redo(),"Shift-Mod-Z":()=>this.editor.commands.redo(),"Mod-я":()=>this.editor.commands.undo(),"Shift-Mod-я":()=>this.editor.commands.redo()}}}),uf=Y.create({name:"horizontalRule",addOptions(){return{HTMLAttributes:{}}},group:"block",parseHTML(){return[{tag:"hr"}]},renderHTML({HTMLAttributes:r}){return["hr",$(this.options.HTMLAttributes,r)]},addCommands(){return{setHorizontalRule:()=>({chain:r,state:e})=>{const{$to:t}=e.selection,n=r();return t.parentOffset===0?n.insertContentAt(Math.max(t.pos-2,0),{type:this.name}):n.insertContent({type:this.name}),n.command(({tr:i,dispatch:s})=>{var o;if(s){const{$to:l}=i.selection,a=l.end();if(l.nodeAfter)l.nodeAfter.isTextblock?i.setSelection(C.create(i.doc,l.pos+1)):l.nodeAfter.isBlock?i.setSelection(M.create(i.doc,l.pos)):i.setSelection(C.create(i.doc,l.pos));else{const c=(o=l.parent.type.contentMatch.defaultType)===null||o===void 0?void 0:o.create();c&&(i.insert(a,c),i.setSelection(C.create(i.doc,a+1)))}i.scrollIntoView()}return!0}).run()}}},addInputRules(){return[Mu({find:/^(?:---|—-|___\s|\*\*\*\s)$/,type:this.type})]}}),ff=/(?:^|\s)((?:\*)((?:[^*]+))(?:\*))$/,hf=/(?:^|\s)((?:\*)((?:[^*]+))(?:\*))/g,pf=/(?:^|\s)((?:_)((?:[^_]+))(?:_))$/,mf=/(?:^|\s)((?:_)((?:[^_]+))(?:_))/g,gf=we.create({name:"italic",addOptions(){return{HTMLAttributes:{}}},parseHTML(){return[{tag:"em"},{tag:"i",getAttrs:r=>r.style.fontStyle!=="normal"&&null},{style:"font-style=italic"}]},renderHTML({HTMLAttributes:r}){return["em",$(this.options.HTMLAttributes,r),0]},addCommands(){return{setItalic:()=>({commands:r})=>r.setMark(this.name),toggleItalic:()=>({commands:r})=>r.toggleMark(this.name),unsetItalic:()=>({commands:r})=>r.unsetMark(this.name)}},addKeyboardShortcuts(){return{"Mod-i":()=>this.editor.commands.toggleItalic(),"Mod-I":()=>this.editor.commands.toggleItalic()}},addInputRules(){return[gt({find:ff,type:this.type}),gt({find:pf,type:this.type})]},addPasteRules(){return[yt({find:hf,type:this.type}),yt({find:mf,type:this.type})]}}),yf=Y.create({name:"listItem",addOptions(){return{HTMLAttributes:{},bulletListTypeName:"bulletList",orderedListTypeName:"orderedList"}},content:"paragraph block*",defining:!0,parseHTML(){return[{tag:"li"}]},renderHTML({HTMLAttributes:r}){return["li",$(this.options.HTMLAttributes,r),0]},addKeyboardShortcuts(){return{Enter:()=>this.editor.commands.splitListItem(this.name),Tab:()=>this.editor.commands.sinkListItem(this.name),"Shift-Tab":()=>this.editor.commands.liftListItem(this.name)}}}),bf=Y.create({name:"listItem",addOptions(){return{HTMLAttributes:{},bulletListTypeName:"bulletList",orderedListTypeName:"orderedList"}},content:"paragraph block*",defining:!0,parseHTML(){return[{tag:"li"}]},renderHTML({HTMLAttributes:r}){return["li",$(this.options.HTMLAttributes,r),0]},addKeyboardShortcuts(){return{Enter:()=>this.editor.commands.splitListItem(this.name),Tab:()=>this.editor.commands.sinkListItem(this.name),"Shift-Tab":()=>this.editor.commands.liftListItem(this.name)}}}),Vi=we.create({name:"textStyle",addOptions(){return{HTMLAttributes:{}}},parseHTML(){return[{tag:"span",getAttrs:r=>r.hasAttribute("style")?{}:!1}]},renderHTML({HTMLAttributes:r}){return["span",$(this.options.HTMLAttributes,r),0]},addCommands(){return{removeEmptyTextStyle:()=>({state:r,commands:e})=>{const t=xn(r,this.type);return Object.entries(t).some(([,i])=>!!i)?!0:e.unsetMark(this.name)}}}}),$i=/^(\d+)\.\s$/,kf=Y.create({name:"orderedList",addOptions(){return{itemTypeName:"listItem",HTMLAttributes:{},keepMarks:!1,keepAttributes:!1}},group:"block list",content(){return`${this.options.itemTypeName}+`},addAttributes(){return{start:{default:1,parseHTML:r=>r.hasAttribute("start")?parseInt(r.getAttribute("start")||"",10):1}}},parseHTML(){return[{tag:"ol"}]},renderHTML({HTMLAttributes:r}){const{start:e,...t}=r;return e===1?["ol",$(this.options.HTMLAttributes,t),0]:["ol",$(this.options.HTMLAttributes,r),0]},addCommands(){return{toggleOrderedList:()=>({commands:r,chain:e})=>this.options.keepAttributes?e().toggleList(this.name,this.options.itemTypeName,this.options.keepMarks).updateAttributes(bf.name,this.editor.getAttributes(Vi.name)).run():r.toggleList(this.name,this.options.itemTypeName,this.options.keepMarks)}},addKeyboardShortcuts(){return{"Mod-Shift-7":()=>this.editor.commands.toggleOrderedList()}},addInputRules(){let r=Pt({find:$i,type:this.type,getAttributes:e=>({start:+e[1]}),joinPredicate:(e,t)=>t.childCount+t.attrs.start===+e[1]});return(this.options.keepMarks||this.options.keepAttributes)&&(r=Pt({find:$i,type:this.type,keepMarks:this.options.keepMarks,keepAttributes:this.options.keepAttributes,getAttributes:e=>({start:+e[1],...this.editor.getAttributes(Vi.name)}),joinPredicate:(e,t)=>t.childCount+t.attrs.start===+e[1],editor:this.editor})),[r]}}),xf=Y.create({name:"paragraph",priority:1e3,addOptions(){return{HTMLAttributes:{}}},group:"block",content:"inline*",parseHTML(){return[{tag:"p"}]},renderHTML({HTMLAttributes:r}){return["p",$(this.options.HTMLAttributes,r),0]},addCommands(){return{setParagraph:()=>({commands:r})=>r.setNode(this.name)}},addKeyboardShortcuts(){return{"Mod-Alt-0":()=>this.editor.commands.setParagraph()}}}),Sf=/(?:^|\s)((?:~~)((?:[^~]+))(?:~~))$/,Mf=/(?:^|\s)((?:~~)((?:[^~]+))(?:~~))/g,wf=we.create({name:"strike",addOptions(){return{HTMLAttributes:{}}},parseHTML(){return[{tag:"s"},{tag:"del"},{tag:"strike"},{style:"text-decoration",consuming:!1,getAttrs:r=>r.includes("line-through")?{}:!1}]},renderHTML({HTMLAttributes:r}){return["s",$(this.options.HTMLAttributes,r),0]},addCommands(){return{setStrike:()=>({commands:r})=>r.setMark(this.name),toggleStrike:()=>({commands:r})=>r.toggleMark(this.name),unsetStrike:()=>({commands:r})=>r.unsetMark(this.name)}},addKeyboardShortcuts(){const r={};return Ar()?r["Mod-Shift-s"]=()=>this.editor.commands.toggleStrike():r["Ctrl-Shift-s"]=()=>this.editor.commands.toggleStrike(),r},addInputRules(){return[gt({find:Sf,type:this.type})]},addPasteRules(){return[yt({find:Mf,type:this.type})]}}),Cf=Y.create({name:"text",group:"inline"}),Tf=se.create({name:"starterKit",addExtensions(){var r,e,t,n,i,s,o,l,a,c,d,u,f,h,p,m,g,y;const x=[];return this.options.blockquote!==!1&&x.push(vu.configure((r=this.options)===null||r===void 0?void 0:r.blockquote)),this.options.bold!==!1&&x.push(Iu.configure((e=this.options)===null||e===void 0?void 0:e.bold)),this.options.bulletList!==!1&&x.push(Pu.configure((t=this.options)===null||t===void 0?void 0:t.bulletList)),this.options.code!==!1&&x.push(zu.configure((n=this.options)===null||n===void 0?void 0:n.code)),this.options.codeBlock!==!1&&x.push($u.configure((i=this.options)===null||i===void 0?void 0:i.codeBlock)),this.options.document!==!1&&x.push(Hu.configure((s=this.options)===null||s===void 0?void 0:s.document)),this.options.dropcursor!==!1&&x.push(Ju.configure((o=this.options)===null||o===void 0?void 0:o.dropcursor)),this.options.gapcursor!==!1&&x.push(Zu.configure((l=this.options)===null||l===void 0?void 0:l.gapcursor)),this.options.hardBreak!==!1&&x.push(Qu.configure((a=this.options)===null||a===void 0?void 0:a.hardBreak)),this.options.heading!==!1&&x.push(ef.configure((c=this.options)===null||c===void 0?void 0:c.heading)),this.options.history!==!1&&x.push(df.configure((d=this.options)===null||d===void 0?void 0:d.history)),this.options.horizontalRule!==!1&&x.push(uf.configure((u=this.options)===null||u===void 0?void 0:u.horizontalRule)),this.options.italic!==!1&&x.push(gf.configure((f=this.options)===null||f===void 0?void 0:f.italic)),this.options.listItem!==!1&&x.push(yf.configure((h=this.options)===null||h===void 0?void 0:h.listItem)),this.options.orderedList!==!1&&x.push(kf.configure((p=this.options)===null||p===void 0?void 0:p.orderedList)),this.options.paragraph!==!1&&x.push(xf.configure((m=this.options)===null||m===void 0?void 0:m.paragraph)),this.options.strike!==!1&&x.push(wf.configure((g=this.options)===null||g===void 0?void 0:g.strike)),this.options.text!==!1&&x.push(Cf.configure((y=this.options)===null||y===void 0?void 0:y.text)),x}}),Of=se.create({name:"textAlign",addOptions(){return{types:[],alignments:["left","center","right","justify"],defaultAlignment:"left"}},addGlobalAttributes(){return[{types:this.options.types,attributes:{textAlign:{default:this.options.defaultAlignment,parseHTML:r=>r.style.textAlign||this.options.defaultAlignment,renderHTML:r=>r.textAlign===this.options.defaultAlignment?{}:{style:`text-align: ${r.textAlign}`}}}}]},addCommands(){return{setTextAlign:r=>({commands:e})=>this.options.alignments.includes(r)?this.options.types.every(t=>e.updateAttributes(t,{textAlign:r})):!1,unsetTextAlign:()=>({commands:r})=>this.options.types.every(e=>r.resetAttributes(e,"textAlign"))}},addKeyboardShortcuts(){return{"Mod-Shift-l":()=>this.editor.commands.setTextAlign("left"),"Mod-Shift-e":()=>this.editor.commands.setTextAlign("center"),"Mod-Shift-r":()=>this.editor.commands.setTextAlign("right"),"Mod-Shift-j":()=>this.editor.commands.setTextAlign("justify")}}}),vf={},Af={viewBox:"0 0 24 24"},Nf=w("path",{d:"M17.194 10.962A6.271 6.271 0 0012.844.248H4.3a1.25 1.25 0 000 2.5h1.013a.25.25 0 01.25.25V21a.25.25 0 01-.25.25H4.3a1.25 1.25 0 100 2.5h9.963a6.742 6.742 0 002.93-12.786zm-4.35-8.214a3.762 3.762 0 010 7.523H8.313a.25.25 0 01-.25-.25V3a.25.25 0 01.25-.25zm1.42 18.5H8.313a.25.25 0 01-.25-.25v-7.977a.25.25 0 01.25-.25h5.951a4.239 4.239 0 010 8.477z"},null,-1),Ef=[Nf];function Df(r,e){return Q(),ie("svg",Af,Ef)}const If=le(vf,[["render",Df]]),Rf={},Pf={viewBox:"0 0 24 24"},Bf=w("path",{d:"M9.147 21.552a1.244 1.244 0 01-.895-.378L.84 13.561a2.257 2.257 0 010-3.125l7.412-7.613a1.25 1.25 0 011.791 1.744l-6.9 7.083a.5.5 0 000 .7l6.9 7.082a1.25 1.25 0 01-.9 2.122zm5.707 0a1.25 1.25 0 01-.9-2.122l6.9-7.083a.5.5 0 000-.7l-6.9-7.082a1.25 1.25 0 011.791-1.744l7.411 7.612a2.257 2.257 0 010 3.125l-7.412 7.614a1.244 1.244 0 01-.89.38zm6.514-9.373z"},null,-1),Lf=[Bf];function zf(r,e){return Q(),ie("svg",Pf,Lf)}const Ff=le(Rf,[["render",zf]]),Vf={},$f={viewBox:"0 0 24 24"},Hf=w("path",{d:"M22.5.248h-7.637a1.25 1.25 0 000 2.5h1.086a.25.25 0 01.211.384L4.78 21.017a.5.5 0 01-.422.231H1.5a1.25 1.25 0 000 2.5h7.637a1.25 1.25 0 000-2.5H8.051a.25.25 0 01-.211-.384L19.22 2.98a.5.5 0 01.422-.232H22.5a1.25 1.25 0 000-2.5z"},null,-1),_f=[Hf];function jf(r,e){return Q(),ie("svg",$f,_f)}const Jf=le(Vf,[["render",jf]]),Wf={},Kf={viewBox:"0 0 24 24"},qf=w("path",{d:"M7.75 4.5h15a1 1 0 000-2h-15a1 1 0 000 2zm15 6.5h-15a1 1 0 100 2h15a1 1 0 000-2zm0 8.5h-15a1 1 0 000 2h15a1 1 0 000-2zM2.212 17.248a2 2 0 00-1.933 1.484.75.75 0 101.45.386.5.5 0 11.483.63.75.75 0 100 1.5.5.5 0 11-.482.635.75.75 0 10-1.445.4 2 2 0 103.589-1.648.251.251 0 010-.278 2 2 0 00-1.662-3.111zm2.038-6.5a2 2 0 00-4 0 .75.75 0 001.5 0 .5.5 0 011 0 1.031 1.031 0 01-.227.645L.414 14.029A.75.75 0 001 15.248h2.5a.75.75 0 000-1.5h-.419a.249.249 0 01-.195-.406L3.7 12.33a2.544 2.544 0 00.55-1.582zM4 5.248h-.25A.25.25 0 013.5 5V1.623A1.377 1.377 0 002.125.248H1.5a.75.75 0 000 1.5h.25A.25.25 0 012 2v3a.25.25 0 01-.25.25H1.5a.75.75 0 000 1.5H4a.75.75 0 000-1.5z"},null,-1),Uf=[qf];function Gf(r,e){return Q(),ie("svg",Kf,Uf)}const Yf=le(Wf,[["render",Gf]]),Xf={},Zf={viewBox:"0 0 24 24"},Qf=No('',6),eh=[Qf];function th(r,e){return Q(),ie("svg",Zf,eh)}const nh=le(Xf,[["render",th]]),rh={},ih={viewBox:"0 0 24 24"},sh=w("path",{d:"M22.5.248H7.228a6.977 6.977 0 100 13.954h2.318a.25.25 0 01.25.25V22.5a1.25 1.25 0 002.5 0V3a.25.25 0 01.25-.25h3.682a.25.25 0 01.25.25v19.5a1.25 1.25 0 002.5 0V3a.249.249 0 01.25-.25H22.5a1.25 1.25 0 000-2.5zM9.8 11.452a.25.25 0 01-.25.25H7.228a4.477 4.477 0 110-8.954h2.318A.25.25 0 019.8 3z"},null,-1),oh=[sh];function lh(r,e){return Q(),ie("svg",ih,oh)}const ah=le(rh,[["render",lh]]),ch={},dh={viewBox:"0 0 24 24"},uh=w("path",{d:"M18.559 3.932a4.942 4.942 0 100 9.883 4.609 4.609 0 001.115-.141.25.25 0 01.276.368 6.83 6.83 0 01-5.878 3.523 1.25 1.25 0 000 2.5 9.71 9.71 0 009.428-9.95V8.873a4.947 4.947 0 00-4.941-4.941zm-12.323 0a4.942 4.942 0 000 9.883 4.6 4.6 0 001.115-.141.25.25 0 01.277.368 6.83 6.83 0 01-5.878 3.523 1.25 1.25 0 000 2.5 9.711 9.711 0 009.428-9.95V8.873a4.947 4.947 0 00-4.942-4.941z"},null,-1),fh=[uh];function hh(r,e){return Q(),ie("svg",dh,fh)}const ph=le(ch,[["render",hh]]),mh={},gh={viewBox:"0 0 24 24"},yh=w("path",{d:"M23.75 12.952A1.25 1.25 0 0022.5 11.7h-8.936a.492.492 0 01-.282-.09c-.722-.513-1.482-.981-2.218-1.432-2.8-1.715-4.5-2.9-4.5-4.863 0-2.235 2.207-2.569 3.523-2.569a4.54 4.54 0 013.081.764 2.662 2.662 0 01.447 1.99v.3a1.25 1.25 0 102.5 0v-.268a4.887 4.887 0 00-1.165-3.777C13.949.741 12.359.248 10.091.248c-3.658 0-6.023 1.989-6.023 5.069 0 2.773 1.892 4.512 4 5.927a.25.25 0 01-.139.458H1.5a1.25 1.25 0 000 2.5h10.977a.251.251 0 01.159.058 4.339 4.339 0 011.932 3.466c0 3.268-3.426 3.522-4.477 3.522-1.814 0-3.139-.405-3.834-1.173a3.394 3.394 0 01-.65-2.7 1.25 1.25 0 00-2.488-.246A5.76 5.76 0 004.4 21.753c1.2 1.324 3.114 2 5.688 2 4.174 0 6.977-2.42 6.977-6.022a6.059 6.059 0 00-.849-3.147.25.25 0 01.216-.377H22.5a1.25 1.25 0 001.25-1.255z"},null,-1),bh=[yh];function kh(r,e){return Q(),ie("svg",gh,bh)}const xh=le(mh,[["render",kh]]),Sh={},Mh={viewBox:"0 0 24 24"},wh=w("path",{d:"M17.786 3.77a12.542 12.542 0 00-12.965-.865.249.249 0 01-.292-.045L1.937.269A.507.507 0 001.392.16a.5.5 0 00-.308.462v6.7a.5.5 0 00.5.5h6.7a.5.5 0 00.354-.854L6.783 5.115a.253.253 0 01-.068-.228.249.249 0 01.152-.181 10 10 0 019.466 1.1 9.759 9.759 0 01.094 15.809 1.25 1.25 0 001.473 2.016 12.122 12.122 0 005.013-9.961 12.125 12.125 0 00-5.127-9.9z"},null,-1),Ch=[wh];function Th(r,e){return Q(),ie("svg",Mh,Ch)}const Oh=le(Sh,[["render",Th]]),vh={},Ah={viewBox:"0 0 24 24"},Nh=w("path",{d:"M22.608.161a.5.5 0 00-.545.108L19.472 2.86a.25.25 0 01-.292.045 12.537 12.537 0 00-12.966.865A12.259 12.259 0 006.1 23.632a1.25 1.25 0 001.476-2.018 9.759 9.759 0 01.091-15.809 10 10 0 019.466-1.1.25.25 0 01.084.409l-1.85 1.85a.5.5 0 00.354.853h6.7a.5.5 0 00.5-.5V.623a.5.5 0 00-.313-.462z"},null,-1),Eh=[Nh];function Dh(r,e){return Q(),ie("svg",Ah,Eh)}const Ih=le(vh,[["render",Dh]]),Rh={},Ph={viewBox:"0 0 24 24"},Bh=w("path",{d:"M9.147 21.552a1.244 1.244 0 01-.895-.378L.84 13.561a2.257 2.257 0 010-3.125l7.412-7.613a1.25 1.25 0 011.791 1.744l-6.9 7.083a.5.5 0 000 .7l6.9 7.082a1.25 1.25 0 01-.9 2.122zm5.707 0a1.25 1.25 0 01-.9-2.122l6.9-7.083a.5.5 0 000-.7l-6.9-7.082a1.25 1.25 0 011.791-1.744l7.411 7.612a2.257 2.257 0 010 3.125l-7.412 7.614a1.244 1.244 0 01-.89.38zm6.514-9.373z"},null,-1),Lh=[Bh];function zh(r,e){return Q(),ie("svg",Ph,Lh)}const Fh=le(Rh,[["render",zh]]),Vh={},$h={viewBox:"0 0 24 24"},Hh=w("path",{fill:"currentColor","fill-rule":"evenodd",d:"M3.75 5.25h16.5a.75.75 0 1 1 0 1.5H3.75a.75.75 0 0 1 0-1.5zm4 4h8.5a.75.75 0 1 1 0 1.5h-8.5a.75.75 0 1 1 0-1.5zm-4 4h16.5a.75.75 0 1 1 0 1.5H3.75a.75.75 0 1 1 0-1.5zm4 4h8.5a.75.75 0 1 1 0 1.5h-8.5a.75.75 0 1 1 0-1.5z"},null,-1),_h=[Hh];function jh(r,e){return Q(),ie("svg",$h,_h)}const Jh=le(Vh,[["render",jh]]),Wh={components:{EditorContent:Cu,BoldIcon:If,CodingIcon:Ff,ItalicIcon:Jf,ListIcon:Yf,ListUlIcon:nh,ParagraphIcon:ah,QuoteIcon:ph,StrikethroughIcon:xh,UndoIcon:Oh,RedoIcon:Ih,CodeBlockIcon:Fh,DotsVerticalIcon:Ft.DotsVerticalIcon,MenuCenterIcon:Jh,MenuAlt2Icon:Ft.MenuAlt2Icon,MenuAlt3Icon:Ft.MenuAlt3Icon,MenuIcon:Ft.MenuIcon},props:{modelValue:{type:String,default:""},contentLoading:{type:Boolean,default:!1}},emits:["update:modelValue"],setup(r,{emit:e}){const t=Tu({content:r.modelValue,extensions:[Tf,Of.configure({types:["heading","paragraph"],alignments:["left","right","center","justify"]})],onUpdate:()=>{e("update:modelValue",t.value.getHTML())}});return Eo(()=>r.modelValue,n=>{t.value.getHTML()!==n&&t.value.commands.setContent(r.modelValue,!1)}),Do(()=>{setTimeout(()=>{t.value.destroy()},500)}),{editor:t}}},Kh={key:1,class:"box-border w-full text-sm leading-8 text-left bg-white border border-gray-200 rounded-md min-h-[200px] overflow-hidden"},qh={key:0,class:"editor-content"},Uh={class:"flex justify-end p-2 border-b border-gray-200 md:hidden"},Gh={class:"flex items-center justify-center w-6 h-6 ml-2 text-sm text-black bg-white rounded-sm md:h-9 md:w-9"},Yh={class:"flex flex-wrap space-x-1"},Xh={class:"hidden p-2 border-b border-gray-200 md:flex"},Zh={class:"flex flex-wrap space-x-1"};function Qh(r,e,t,n,i,s){const o=z("BaseContentPlaceholdersBox"),l=z("BaseContentPlaceholders"),a=z("dots-vertical-icon"),c=z("bold-icon"),d=z("italic-icon"),u=z("strikethrough-icon"),f=z("coding-icon"),h=z("paragraph-icon"),p=z("list-ul-icon"),m=z("list-icon"),g=z("quote-icon"),y=z("code-block-icon"),x=z("undo-icon"),N=z("redo-icon"),P=z("BaseDropdown"),B=z("menu-alt2-icon"),R=z("menu-alt3-icon"),q=z("menu-icon"),ge=z("menu-center-icon"),A=z("editor-content");return t.contentLoading?(Q(),Io(l,{key:0},{default:Mn(()=>[D(o,{rounded:!0,class:"w-full",style:{height:"200px"}})]),_:1})):(Q(),ie("div",Kh,[n.editor?(Q(),ie("div",qh,[w("div",Uh,[D(P,{"width-class":"w-48"},{activator:Mn(()=>[w("div",Gh,[D(a,{class:"w-6 h-6 text-gray-600"})])]),default:Mn(()=>[w("div",Yh,[w("span",{class:E(["flex items-center justify-center w-6 h-6 rounded-sm cursor-pointer hover:bg-gray-100",{"bg-gray-200":n.editor.isActive("bold")}]),onClick:e[0]||(e[0]=T=>n.editor.chain().focus().toggleBold().run())},[D(c,{class:"h-3 cursor-pointer fill-current"})],2),w("span",{class:E(["flex items-center justify-center w-6 h-6 rounded-sm cursor-pointer hover:bg-gray-100",{"bg-gray-200":n.editor.isActive("italic")}]),onClick:e[1]||(e[1]=T=>n.editor.chain().focus().toggleItalic().run())},[D(d,{class:"h-3 cursor-pointer fill-current"})],2),w("span",{class:E(["flex items-center justify-center w-6 h-6 rounded-sm cursor-pointer hover:bg-gray-100",{"bg-gray-200":n.editor.isActive("strike")}]),onClick:e[2]||(e[2]=T=>n.editor.chain().focus().toggleStrike().run())},[D(u,{class:"h-3 cursor-pointer fill-current"})],2),w("span",{class:E(["flex items-center justify-center w-6 h-6 rounded-sm cursor-pointer hover:bg-gray-100",{"bg-gray-200":n.editor.isActive("code")}]),onClick:e[3]||(e[3]=T=>n.editor.chain().focus().toggleCode().run())},[D(f,{class:"h-3 cursor-pointer fill-current"})],2),w("span",{class:E(["flex items-center justify-center w-6 h-6 rounded-sm cursor-pointer hover:bg-gray-100",{"bg-gray-200":n.editor.isActive("paragraph")}]),onClick:e[4]||(e[4]=T=>n.editor.chain().focus().setParagraph().run())},[D(h,{class:"h-3 cursor-pointer fill-current"})],2),w("span",{class:E(["flex items-center justify-center w-6 h-6 rounded-sm cursor-pointer hover:bg-gray-100",{"bg-gray-200":n.editor.isActive("heading",{level:1})}]),onClick:e[5]||(e[5]=T=>n.editor.chain().focus().toggleHeading({level:1}).run())}," H1 ",2),w("span",{class:E(["flex items-center justify-center w-6 h-6 rounded-sm cursor-pointer hover:bg-gray-100",{"bg-gray-200":n.editor.isActive("heading",{level:2})}]),onClick:e[6]||(e[6]=T=>n.editor.chain().focus().toggleHeading({level:2}).run())}," H2 ",2),w("span",{class:E(["flex items-center justify-center w-6 h-6 rounded-sm cursor-pointer hover:bg-gray-100",{"bg-gray-200":n.editor.isActive("heading",{level:3})}]),onClick:e[7]||(e[7]=T=>n.editor.chain().focus().toggleHeading({level:3}).run())}," H3 ",2),w("span",{class:E(["flex items-center justify-center w-6 h-6 rounded-sm cursor-pointer hover:bg-gray-100",{"bg-gray-200":n.editor.isActive("bulletList")}]),onClick:e[8]||(e[8]=T=>n.editor.chain().focus().toggleBulletList().run())},[D(p,{class:"h-3 cursor-pointer fill-current"})],2),w("span",{class:E(["flex items-center justify-center w-6 h-6 rounded-sm cursor-pointer hover:bg-gray-100",{"bg-gray-200":n.editor.isActive("orderedList")}]),onClick:e[9]||(e[9]=T=>n.editor.chain().focus().toggleOrderedList().run())},[D(m,{class:"h-3 cursor-pointer fill-current"})],2),w("span",{class:E(["flex items-center justify-center w-6 h-6 rounded-sm cursor-pointer hover:bg-gray-100",{"bg-gray-200":n.editor.isActive("blockquote")}]),onClick:e[10]||(e[10]=T=>n.editor.chain().focus().toggleBlockquote().run())},[D(g,{class:"h-3 cursor-pointer fill-current"})],2),w("span",{class:E(["flex items-center justify-center w-6 h-6 rounded-sm cursor-pointer hover:bg-gray-100",{"bg-gray-200":n.editor.isActive("codeBlock")}]),onClick:e[11]||(e[11]=T=>n.editor.chain().focus().toggleCodeBlock().run())},[D(y,{class:"h-3 cursor-pointer fill-current"})],2),w("span",{class:E(["flex items-center justify-center w-6 h-6 rounded-sm cursor-pointer hover:bg-gray-100",{"bg-gray-200":n.editor.isActive("undo")}]),onClick:e[12]||(e[12]=T=>n.editor.chain().focus().undo().run())},[D(x,{class:"h-3 cursor-pointer fill-current"})],2),w("span",{class:E(["flex items-center justify-center w-6 h-6 rounded-sm cursor-pointer hover:bg-gray-100",{"bg-gray-200":n.editor.isActive("redo")}]),onClick:e[13]||(e[13]=T=>n.editor.chain().focus().redo().run())},[D(N,{class:"h-3 cursor-pointer fill-current"})],2)])]),_:1})]),w("div",Xh,[w("div",Zh,[w("span",{class:E(["flex items-center justify-center w-6 h-6 rounded-sm cursor-pointer hover:bg-gray-100",{"bg-gray-200":n.editor.isActive("bold")}]),onClick:e[14]||(e[14]=T=>n.editor.chain().focus().toggleBold().run())},[D(c,{class:"h-3 cursor-pointer fill-current"})],2),w("span",{class:E(["flex items-center justify-center w-6 h-6 rounded-sm cursor-pointer hover:bg-gray-100",{"bg-gray-200":n.editor.isActive("italic")}]),onClick:e[15]||(e[15]=T=>n.editor.chain().focus().toggleItalic().run())},[D(d,{class:"h-3 cursor-pointer fill-current"})],2),w("span",{class:E(["flex items-center justify-center w-6 h-6 rounded-sm cursor-pointer hover:bg-gray-100",{"bg-gray-200":n.editor.isActive("strike")}]),onClick:e[16]||(e[16]=T=>n.editor.chain().focus().toggleStrike().run())},[D(u,{class:"h-3 cursor-pointer fill-current"})],2),w("span",{class:E(["flex items-center justify-center w-6 h-6 rounded-sm cursor-pointer hover:bg-gray-100",{"bg-gray-200":n.editor.isActive("code")}]),onClick:e[17]||(e[17]=T=>n.editor.chain().focus().toggleCode().run())},[D(f,{class:"h-3 cursor-pointer fill-current"})],2),w("span",{class:E(["flex items-center justify-center w-6 h-6 rounded-sm cursor-pointer hover:bg-gray-100",{"bg-gray-200":n.editor.isActive("paragraph")}]),onClick:e[18]||(e[18]=T=>n.editor.chain().focus().setParagraph().run())},[D(h,{class:"h-3 cursor-pointer fill-current"})],2),w("span",{class:E(["flex items-center justify-center w-6 h-6 rounded-sm cursor-pointer hover:bg-gray-100",{"bg-gray-200":n.editor.isActive("heading",{level:1})}]),onClick:e[19]||(e[19]=T=>n.editor.chain().focus().toggleHeading({level:1}).run())}," H1 ",2),w("span",{class:E(["flex items-center justify-center w-6 h-6 rounded-sm cursor-pointer hover:bg-gray-100",{"bg-gray-200":n.editor.isActive("heading",{level:2})}]),onClick:e[20]||(e[20]=T=>n.editor.chain().focus().toggleHeading({level:2}).run())}," H2 ",2),w("span",{class:E(["flex items-center justify-center w-6 h-6 rounded-sm cursor-pointer hover:bg-gray-100",{"bg-gray-200":n.editor.isActive("heading",{level:3})}]),onClick:e[21]||(e[21]=T=>n.editor.chain().focus().toggleHeading({level:3}).run())}," H3 ",2),w("span",{class:E(["flex items-center justify-center w-6 h-6 rounded-sm cursor-pointer hover:bg-gray-100",{"bg-gray-200":n.editor.isActive("bulletList")}]),onClick:e[22]||(e[22]=T=>n.editor.chain().focus().toggleBulletList().run())},[D(p,{class:"h-3 cursor-pointer fill-current"})],2),w("span",{class:E(["flex items-center justify-center w-6 h-6 rounded-sm cursor-pointer hover:bg-gray-100",{"bg-gray-200":n.editor.isActive("orderedList")}]),onClick:e[23]||(e[23]=T=>n.editor.chain().focus().toggleOrderedList().run())},[D(m,{class:"h-3 cursor-pointer fill-current"})],2),w("span",{class:E(["flex items-center justify-center w-6 h-6 rounded-sm cursor-pointer hover:bg-gray-100",{"bg-gray-200":n.editor.isActive("blockquote")}]),onClick:e[24]||(e[24]=T=>n.editor.chain().focus().toggleBlockquote().run())},[D(g,{class:"h-3 cursor-pointer fill-current"})],2),w("span",{class:E(["flex items-center justify-center w-6 h-6 rounded-sm cursor-pointer hover:bg-gray-100",{"bg-gray-200":n.editor.isActive("codeBlock")}]),onClick:e[25]||(e[25]=T=>n.editor.chain().focus().toggleCodeBlock().run())},[D(y,{class:"h-3 cursor-pointer fill-current"})],2),w("span",{class:E(["flex items-center justify-center w-6 h-6 rounded-sm cursor-pointer hover:bg-gray-100",{"bg-gray-200":n.editor.isActive("undo")}]),onClick:e[26]||(e[26]=T=>n.editor.chain().focus().undo().run())},[D(x,{class:"h-3 cursor-pointer fill-current"})],2),w("span",{class:E(["flex items-center justify-center w-6 h-6 rounded-sm cursor-pointer hover:bg-gray-100",{"bg-gray-200":n.editor.isActive("redo")}]),onClick:e[27]||(e[27]=T=>n.editor.chain().focus().redo().run())},[D(N,{class:"h-3 cursor-pointer fill-current"})],2),w("span",{class:E(["flex items-center justify-center w-6 h-6 rounded-sm cursor-pointer hover:bg-gray-100",{"bg-gray-200":n.editor.isActive({textAlign:"left"})}]),onClick:e[28]||(e[28]=T=>n.editor.chain().focus().setTextAlign("left").run())},[D(B,{class:"h-5 cursor-pointer fill-current"})],2),w("span",{class:E(["flex items-center justify-center w-6 h-6 rounded-sm cursor-pointer hover:bg-gray-100",{"bg-gray-200":n.editor.isActive({textAlign:"right"})}]),onClick:e[29]||(e[29]=T=>n.editor.chain().focus().setTextAlign("right").run())},[D(R,{class:"h-5 cursor-pointer fill-current"})],2),w("span",{class:E(["flex items-center justify-center w-6 h-6 rounded-sm cursor-pointer hover:bg-gray-100",{"bg-gray-200":n.editor.isActive({textAlign:"justify"})}]),onClick:e[30]||(e[30]=T=>n.editor.chain().focus().setTextAlign("justify").run())},[D(q,{class:"h-5 cursor-pointer fill-current"})],2),w("span",{class:E(["flex items-center justify-center w-6 h-6 rounded-sm cursor-pointer hover:bg-gray-100",{"bg-gray-200":n.editor.isActive({textAlign:"center"})}]),onClick:e[31]||(e[31]=T=>n.editor.chain().focus().setTextAlign("center").run())},[D(ge,{class:"h-5 cursor-pointer fill-current"})],2)])]),D(A,{editor:n.editor,class:"box-border relative w-full text-sm leading-8 text-left editor__content"},null,8,["editor"])])):Ro("",!0)]))}const np=le(Wh,[["render",Qh]]);export{np as default}; +`);return!s||!o?!1:r.chain().command(({tr:l})=>(l.delete(n.pos-2,n.pos),!0)).exitCode().run()},ArrowDown:({editor:r})=>{if(!this.options.exitOnArrowDown)return!1;const{state:e}=r,{selection:t,doc:n}=e,{$from:i,empty:s}=t;if(!s||i.parent.type!==this.type||!(i.parentOffset===i.parent.nodeSize-2))return!1;const l=i.after();return l===void 0||n.nodeAt(l)?!1:r.commands.exitCode()}}},addInputRules(){return[dr({find:Hu,type:this.type,getAttributes:r=>({language:r[1]})}),dr({find:_u,type:this.type,getAttributes:r=>({language:r[1]})})]},addProseMirrorPlugins(){return[new ue({key:new $e("codeBlockVSCodeHandler"),props:{handlePaste:(r,e)=>{if(!e.clipboardData||this.editor.isActive(this.type.name))return!1;const t=e.clipboardData.getData("text/plain"),n=e.clipboardData.getData("vscode-editor-data"),i=n?JSON.parse(n):void 0,s=i==null?void 0:i.mode;if(!t||!s)return!1;const{tr:o}=r.state;return o.replaceSelectionWith(this.type.create({language:s})),o.setSelection(C.near(o.doc.resolve(Math.max(0,o.selection.from-2)))),o.insertText(t.replace(/\r\n?/g,` +`)),o.setMeta("paste",!0),r.dispatch(o),!0}}})]}}),Ju=Y.create({name:"doc",topNode:!0,content:"block+"});function Wu(r={}){return new ue({view(e){return new qu(e,r)}})}class qu{constructor(e,t){var n;this.editorView=e,this.cursorPos=null,this.element=null,this.timeout=-1,this.width=(n=t.width)!==null&&n!==void 0?n:1,this.color=t.color===!1?void 0:t.color||"black",this.class=t.class,this.handlers=["dragover","dragend","drop","dragleave"].map(i=>{let s=o=>{this[i](o)};return e.dom.addEventListener(i,s),{name:i,handler:s}})}destroy(){this.handlers.forEach(({name:e,handler:t})=>this.editorView.dom.removeEventListener(e,t))}update(e,t){this.cursorPos!=null&&t.doc!=e.state.doc&&(this.cursorPos>e.state.doc.content.size?this.setCursor(null):this.updateOverlay())}setCursor(e){e!=this.cursorPos&&(this.cursorPos=e,e==null?(this.element.parentNode.removeChild(this.element),this.element=null):this.updateOverlay())}updateOverlay(){let e=this.editorView.state.doc.resolve(this.cursorPos),t=!e.parent.inlineContent,n;if(t){let l=e.nodeBefore,a=e.nodeAfter;if(l||a){let c=this.editorView.nodeDOM(this.cursorPos-(l?l.nodeSize:0));if(c){let d=c.getBoundingClientRect(),u=l?d.bottom:d.top;l&&a&&(u=(u+this.editorView.nodeDOM(this.cursorPos).getBoundingClientRect().top)/2),n={left:d.left,right:d.right,top:u-this.width/2,bottom:u+this.width/2}}}}if(!n){let l=this.editorView.coordsAtPos(this.cursorPos);n={left:l.left-this.width/2,right:l.left+this.width/2,top:l.top,bottom:l.bottom}}let i=this.editorView.dom.offsetParent;this.element||(this.element=i.appendChild(document.createElement("div")),this.class&&(this.element.className=this.class),this.element.style.cssText="position: absolute; z-index: 50; pointer-events: none;",this.color&&(this.element.style.backgroundColor=this.color)),this.element.classList.toggle("prosemirror-dropcursor-block",t),this.element.classList.toggle("prosemirror-dropcursor-inline",!t);let s,o;if(!i||i==document.body&&getComputedStyle(i).position=="static")s=-pageXOffset,o=-pageYOffset;else{let l=i.getBoundingClientRect();s=l.left-i.scrollLeft,o=l.top-i.scrollTop}this.element.style.left=n.left-s+"px",this.element.style.top=n.top-o+"px",this.element.style.width=n.right-n.left+"px",this.element.style.height=n.bottom-n.top+"px"}scheduleRemoval(e){clearTimeout(this.timeout),this.timeout=setTimeout(()=>this.setCursor(null),e)}dragover(e){if(!this.editorView.editable)return;let t=this.editorView.posAtCoords({left:e.clientX,top:e.clientY}),n=t&&t.inside>=0&&this.editorView.state.doc.nodeAt(t.inside),i=n&&n.type.spec.disableDropCursor,s=typeof i=="function"?i(this.editorView,t,e):i;if(t&&!s){let o=t.pos;if(this.editorView.dragging&&this.editorView.dragging.slice){let l=ds(this.editorView.state.doc,o,this.editorView.dragging.slice);l!=null&&(o=l)}this.setCursor(o),this.scheduleRemoval(5e3)}}dragend(){this.scheduleRemoval(20)}drop(){this.scheduleRemoval(20)}dragleave(e){(e.target==this.editorView.dom||!this.editorView.dom.contains(e.relatedTarget))&&this.setCursor(null)}}const Ku=se.create({name:"dropCursor",addOptions(){return{color:"currentColor",width:1,class:void 0}},addProseMirrorPlugins(){return[Wu(this.options)]}});class L extends v{constructor(e){super(e,e)}map(e,t){let n=e.resolve(t.map(this.head));return L.valid(n)?new L(n):v.near(n)}content(){return k.empty}eq(e){return e instanceof L&&e.head==this.head}toJSON(){return{type:"gapcursor",pos:this.head}}static fromJSON(e,t){if(typeof t.pos!="number")throw new RangeError("Invalid input for GapCursor.fromJSON");return new L(e.resolve(t.pos))}getBookmark(){return new Nr(this.anchor)}static valid(e){let t=e.parent;if(t.isTextblock||!Uu(e)||!Gu(e))return!1;let n=t.type.spec.allowGapCursor;if(n!=null)return n;let i=t.contentMatchAt(e.index()).defaultType;return i&&i.isTextblock}static findGapCursorFrom(e,t,n=!1){e:for(;;){if(!n&&L.valid(e))return e;let i=e.pos,s=null;for(let o=e.depth;;o--){let l=e.node(o);if(t>0?e.indexAfter(o)0){s=l.child(t>0?e.indexAfter(o):e.index(o)-1);break}else if(o==0)return null;i+=t;let a=e.doc.resolve(i);if(L.valid(a))return a}for(;;){let o=t>0?s.firstChild:s.lastChild;if(!o){if(s.isAtom&&!s.isText&&!M.isSelectable(s)){e=e.doc.resolve(i+s.nodeSize*t),n=!1;continue e}break}s=o,i+=t;let l=e.doc.resolve(i);if(L.valid(l))return l}return null}}}L.prototype.visible=!1;L.findFrom=L.findGapCursorFrom;v.jsonID("gapcursor",L);class Nr{constructor(e){this.pos=e}map(e){return new Nr(e.map(this.pos))}resolve(e){let t=e.resolve(this.pos);return L.valid(t)?new L(t):v.near(t)}}function Uu(r){for(let e=r.depth;e>=0;e--){let t=r.index(e),n=r.node(e);if(t==0){if(n.type.spec.isolating)return!0;continue}for(let i=n.child(t-1);;i=i.lastChild){if(i.childCount==0&&!i.inlineContent||i.isAtom||i.type.spec.isolating)return!0;if(i.inlineContent)return!1}}return!0}function Gu(r){for(let e=r.depth;e>=0;e--){let t=r.indexAfter(e),n=r.node(e);if(t==n.childCount){if(n.type.spec.isolating)return!0;continue}for(let i=n.child(t);;i=i.firstChild){if(i.childCount==0&&!i.inlineContent||i.isAtom||i.type.spec.isolating)return!0;if(i.inlineContent)return!1}}return!0}function Yu(){return new ue({props:{decorations:ef,createSelectionBetween(r,e,t){return e.pos==t.pos&&L.valid(t)?new L(t):null},handleClick:Zu,handleKeyDown:Xu,handleDOMEvents:{beforeinput:Qu}}})}const Xu=Ys({ArrowLeft:Ht("horiz",-1),ArrowRight:Ht("horiz",1),ArrowUp:Ht("vert",-1),ArrowDown:Ht("vert",1)});function Ht(r,e){const t=r=="vert"?e>0?"down":"up":e>0?"right":"left";return function(n,i,s){let o=n.selection,l=e>0?o.$to:o.$from,a=o.empty;if(o instanceof C){if(!s.endOfTextblock(t)||l.depth==0)return!1;a=!1,l=n.doc.resolve(e>0?l.after():l.before())}let c=L.findGapCursorFrom(l,e,a);return c?(i&&i(n.tr.setSelection(new L(c))),!0):!1}}function Zu(r,e,t){if(!r||!r.editable)return!1;let n=r.state.doc.resolve(e);if(!L.valid(n))return!1;let i=r.posAtCoords({left:t.clientX,top:t.clientY});return i&&i.inside>-1&&M.isSelectable(r.state.doc.nodeAt(i.inside))?!1:(r.dispatch(r.state.tr.setSelection(new L(n))),!0)}function Qu(r,e){if(e.inputType!="insertCompositionText"||!(r.state.selection instanceof L))return!1;let{$from:t}=r.state.selection,n=t.parent.contentMatchAt(t.index()).findWrapping(r.state.schema.nodes.text);if(!n)return!1;let i=b.empty;for(let o=n.length-1;o>=0;o--)i=b.from(n[o].createAndFill(null,i));let s=r.state.tr.replace(t.pos,t.pos,new k(i,0,0));return s.setSelection(C.near(s.doc.resolve(t.pos+1))),r.dispatch(s),!1}function ef(r){if(!(r.selection instanceof L))return null;let e=document.createElement("div");return e.className="ProseMirror-gapcursor",V.create(r.doc,[ce.widget(r.selection.head,e,{key:"gapcursor"})])}const tf=se.create({name:"gapCursor",addProseMirrorPlugins(){return[Yu()]},extendNodeSchema(r){var e;const t={name:r.name,options:r.options,storage:r.storage};return{allowGapCursor:(e=O(S(r,"allowGapCursor",t)))!==null&&e!==void 0?e:null}}}),nf=Y.create({name:"hardBreak",addOptions(){return{keepMarks:!0,HTMLAttributes:{}}},inline:!0,group:"inline",selectable:!1,parseHTML(){return[{tag:"br"}]},renderHTML({HTMLAttributes:r}){return["br",$(this.options.HTMLAttributes,r)]},renderText(){return` +`},addCommands(){return{setHardBreak:()=>({commands:r,chain:e,state:t,editor:n})=>r.first([()=>r.exitCode(),()=>r.command(()=>{const{selection:i,storedMarks:s}=t;if(i.$from.parent.type.spec.isolating)return!1;const{keepMarks:o}=this.options,{splittableMarks:l}=n.extensionManager,a=s||i.$to.parentOffset&&i.$from.marks();return e().insertContent({type:this.name}).command(({tr:c,dispatch:d})=>{if(d&&a&&o){const u=a.filter(f=>l.includes(f.type.name));c.ensureMarks(u)}return!0}).run()})])}},addKeyboardShortcuts(){return{"Mod-Enter":()=>this.editor.commands.setHardBreak(),"Shift-Enter":()=>this.editor.commands.setHardBreak()}}}),rf=Y.create({name:"heading",addOptions(){return{levels:[1,2,3,4,5,6],HTMLAttributes:{}}},content:"inline*",group:"block",defining:!0,addAttributes(){return{level:{default:1,rendered:!1}}},parseHTML(){return this.options.levels.map(r=>({tag:`h${r}`,attrs:{level:r}}))},renderHTML({node:r,HTMLAttributes:e}){return[`h${this.options.levels.includes(r.attrs.level)?r.attrs.level:this.options.levels[0]}`,$(this.options.HTMLAttributes,e),0]},addCommands(){return{setHeading:r=>({commands:e})=>this.options.levels.includes(r.level)?e.setNode(this.name,r):!1,toggleHeading:r=>({commands:e})=>this.options.levels.includes(r.level)?e.toggleNode(this.name,"paragraph",r):!1}},addKeyboardShortcuts(){return this.options.levels.reduce((r,e)=>({...r,[`Mod-Alt-${e}`]:()=>this.editor.commands.toggleHeading({level:e})}),{})},addInputRules(){return this.options.levels.map(r=>dr({find:new RegExp(`^(#{1,${r}})\\s$`),type:this.type,getAttributes:{level:r}}))}});var on=200,_=function(){};_.prototype.append=function(e){return e.length?(e=_.from(e),!this.length&&e||e.length=t?_.empty:this.sliceInner(Math.max(0,e),Math.min(this.length,t))};_.prototype.get=function(e){if(!(e<0||e>=this.length))return this.getInner(e)};_.prototype.forEach=function(e,t,n){t===void 0&&(t=0),n===void 0&&(n=this.length),t<=n?this.forEachInner(e,t,n,0):this.forEachInvertedInner(e,t,n,0)};_.prototype.map=function(e,t,n){t===void 0&&(t=0),n===void 0&&(n=this.length);var i=[];return this.forEach(function(s,o){return i.push(e(s,o))},t,n),i};_.from=function(e){return e instanceof _?e:e&&e.length?new uo(e):_.empty};var uo=function(r){function e(n){r.call(this),this.values=n}r&&(e.__proto__=r),e.prototype=Object.create(r&&r.prototype),e.prototype.constructor=e;var t={length:{configurable:!0},depth:{configurable:!0}};return e.prototype.flatten=function(){return this.values},e.prototype.sliceInner=function(i,s){return i==0&&s==this.length?this:new e(this.values.slice(i,s))},e.prototype.getInner=function(i){return this.values[i]},e.prototype.forEachInner=function(i,s,o,l){for(var a=s;a=o;a--)if(i(this.values[a],l+a)===!1)return!1},e.prototype.leafAppend=function(i){if(this.length+i.length<=on)return new e(this.values.concat(i.flatten()))},e.prototype.leafPrepend=function(i){if(this.length+i.length<=on)return new e(i.flatten().concat(this.values))},t.length.get=function(){return this.values.length},t.depth.get=function(){return 0},Object.defineProperties(e.prototype,t),e}(_);_.empty=new uo([]);var sf=function(r){function e(t,n){r.call(this),this.left=t,this.right=n,this.length=t.length+n.length,this.depth=Math.max(t.depth,n.depth)+1}return r&&(e.__proto__=r),e.prototype=Object.create(r&&r.prototype),e.prototype.constructor=e,e.prototype.flatten=function(){return this.left.flatten().concat(this.right.flatten())},e.prototype.getInner=function(n){return nl&&this.right.forEachInner(n,Math.max(i-l,0),Math.min(this.length,s)-l,o+l)===!1)return!1},e.prototype.forEachInvertedInner=function(n,i,s,o){var l=this.left.length;if(i>l&&this.right.forEachInvertedInner(n,i-l,Math.max(s,l)-l,o+l)===!1||s=s?this.right.slice(n-s,i-s):this.left.slice(n,s).append(this.right.slice(0,i-s))},e.prototype.leafAppend=function(n){var i=this.right.leafAppend(n);if(i)return new e(this.left,i)},e.prototype.leafPrepend=function(n){var i=this.left.leafPrepend(n);if(i)return new e(i,this.right)},e.prototype.appendInner=function(n){return this.left.depth>=Math.max(this.right.depth,n.depth)+1?new e(this.left,new e(this.right,n)):new e(this,n)},e}(_);const of=500;class he{constructor(e,t){this.items=e,this.eventCount=t}popEvent(e,t){if(this.eventCount==0)return null;let n=this.items.length;for(;;n--)if(this.items.get(n-1).selection){--n;break}let i,s;t&&(i=this.remapping(n,this.items.length),s=i.maps.length);let o=e.tr,l,a,c=[],d=[];return this.items.forEach((u,f)=>{if(!u.step){i||(i=this.remapping(n,f+1),s=i.maps.length),s--,d.push(u);return}if(i){d.push(new ye(u.map));let h=u.step.map(i.slice(s)),p;h&&o.maybeStep(h).doc&&(p=o.mapping.maps[o.mapping.maps.length-1],c.push(new ye(p,void 0,void 0,c.length+d.length))),s--,p&&i.appendMap(p,s)}else o.maybeStep(u.step);if(u.selection)return l=i?u.selection.map(i.slice(s)):u.selection,a=new he(this.items.slice(0,n).append(d.reverse().concat(c)),this.eventCount-1),!1},this.items.length,0),{remaining:a,transform:o,selection:l}}addTransform(e,t,n,i){let s=[],o=this.eventCount,l=this.items,a=!i&&l.length?l.get(l.length-1):null;for(let d=0;daf&&(l=lf(l,c),o-=c),new he(l.append(s),o)}remapping(e,t){let n=new lt;return this.items.forEach((i,s)=>{let o=i.mirrorOffset!=null&&s-i.mirrorOffset>=e?n.maps.length-i.mirrorOffset:void 0;n.appendMap(i.map,o)},e,t),n}addMaps(e){return this.eventCount==0?this:new he(this.items.append(e.map(t=>new ye(t))),this.eventCount)}rebased(e,t){if(!this.eventCount)return this;let n=[],i=Math.max(0,this.items.length-t),s=e.mapping,o=e.steps.length,l=this.eventCount;this.items.forEach(f=>{f.selection&&l--},i);let a=t;this.items.forEach(f=>{let h=s.getMirror(--a);if(h==null)return;o=Math.min(o,h);let p=s.maps[h];if(f.step){let m=e.steps[h].invert(e.docs[h]),g=f.selection&&f.selection.map(s.slice(a+1,h));g&&l++,n.push(new ye(p,m,g))}else n.push(new ye(p))},i);let c=[];for(let f=t;fof&&(u=u.compress(this.items.length-n.length)),u}emptyItemCount(){let e=0;return this.items.forEach(t=>{t.step||e++}),e}compress(e=this.items.length){let t=this.remapping(0,e),n=t.maps.length,i=[],s=0;return this.items.forEach((o,l)=>{if(l>=e)i.push(o),o.selection&&s++;else if(o.step){let a=o.step.map(t.slice(n)),c=a&&a.getMap();if(n--,c&&t.appendMap(c,n),a){let d=o.selection&&o.selection.map(t.slice(n));d&&s++;let u=new ye(c.invert(),a,d),f,h=i.length-1;(f=i.length&&i[h].merge(u))?i[h]=f:i.push(u)}}else o.map&&n--},this.items.length,0),new he(_.from(i.reverse()),s)}}he.empty=new he(_.empty,0);function lf(r,e){let t;return r.forEach((n,i)=>{if(n.selection&&e--==0)return t=i,!1}),r.slice(t)}class ye{constructor(e,t,n,i){this.map=e,this.step=t,this.selection=n,this.mirrorOffset=i}merge(e){if(this.step&&e.step&&!e.selection){let t=e.step.merge(this.step);if(t)return new ye(t.getMap().invert(),t,this.selection)}}}class Ne{constructor(e,t,n,i,s){this.done=e,this.undone=t,this.prevRanges=n,this.prevTime=i,this.prevComposition=s}}const af=20;function cf(r,e,t,n){let i=t.getMeta(ze),s;if(i)return i.historyState;t.getMeta(uf)&&(r=new Ne(r.done,r.undone,null,0,-1));let o=t.getMeta("appendedTransaction");if(t.steps.length==0)return r;if(o&&o.getMeta(ze))return o.getMeta(ze).redo?new Ne(r.done.addTransform(t,void 0,n,Jt(e)),r.undone,Li(t.mapping.maps[t.steps.length-1]),r.prevTime,r.prevComposition):new Ne(r.done,r.undone.addTransform(t,void 0,n,Jt(e)),null,r.prevTime,r.prevComposition);if(t.getMeta("addToHistory")!==!1&&!(o&&o.getMeta("addToHistory")===!1)){let l=t.getMeta("composition"),a=r.prevTime==0||!o&&r.prevComposition!=l&&(r.prevTime<(t.time||0)-n.newGroupDelay||!df(t,r.prevRanges)),c=o?jn(r.prevRanges,t.mapping):Li(t.mapping.maps[t.steps.length-1]);return new Ne(r.done.addTransform(t,a?e.selection.getBookmark():void 0,n,Jt(e)),he.empty,c,t.time,l??r.prevComposition)}else return(s=t.getMeta("rebased"))?new Ne(r.done.rebased(t,s),r.undone.rebased(t,s),jn(r.prevRanges,t.mapping),r.prevTime,r.prevComposition):new Ne(r.done.addMaps(t.mapping.maps),r.undone.addMaps(t.mapping.maps),jn(r.prevRanges,t.mapping),r.prevTime,r.prevComposition)}function df(r,e){if(!e)return!1;if(!r.docChanged)return!0;let t=!1;return r.mapping.maps[0].forEach((n,i)=>{for(let s=0;s=e[s]&&(t=!0)}),t}function Li(r){let e=[];return r.forEach((t,n,i,s)=>e.push(i,s)),e}function jn(r,e){if(!r)return null;let t=[];for(let n=0;n{let t=ze.getState(r);return!t||t.done.eventCount==0?!1:(e&&fo(t,r,e,!1),!0)},po=(r,e)=>{let t=ze.getState(r);return!t||t.undone.eventCount==0?!1:(e&&fo(t,r,e,!0),!0)},hf=se.create({name:"history",addOptions(){return{depth:100,newGroupDelay:500}},addCommands(){return{undo:()=>({state:r,dispatch:e})=>ho(r,e),redo:()=>({state:r,dispatch:e})=>po(r,e)}},addProseMirrorPlugins(){return[ff(this.options)]},addKeyboardShortcuts(){return{"Mod-z":()=>this.editor.commands.undo(),"Mod-Z":()=>this.editor.commands.undo(),"Mod-y":()=>this.editor.commands.redo(),"Mod-Y":()=>this.editor.commands.redo(),"Shift-Mod-z":()=>this.editor.commands.redo(),"Shift-Mod-Z":()=>this.editor.commands.redo(),"Mod-я":()=>this.editor.commands.undo(),"Shift-Mod-я":()=>this.editor.commands.redo()}}}),pf=Y.create({name:"horizontalRule",addOptions(){return{HTMLAttributes:{}}},group:"block",parseHTML(){return[{tag:"hr"}]},renderHTML({HTMLAttributes:r}){return["hr",$(this.options.HTMLAttributes,r)]},addCommands(){return{setHorizontalRule:()=>({chain:r,state:e})=>{const{$to:t}=e.selection,n=r();return t.parentOffset===0?n.insertContentAt(Math.max(t.pos-2,0),{type:this.name}):n.insertContent({type:this.name}),n.command(({tr:i,dispatch:s})=>{var o;if(s){const{$to:l}=i.selection,a=l.end();if(l.nodeAfter)l.nodeAfter.isTextblock?i.setSelection(C.create(i.doc,l.pos+1)):l.nodeAfter.isBlock?i.setSelection(M.create(i.doc,l.pos)):i.setSelection(C.create(i.doc,l.pos));else{const c=(o=l.parent.type.contentMatch.defaultType)===null||o===void 0?void 0:o.create();c&&(i.insert(a,c),i.setSelection(C.create(i.doc,a+1)))}i.scrollIntoView()}return!0}).run()}}},addInputRules(){return[Tu({find:/^(?:---|—-|___\s|\*\*\*\s)$/,type:this.type})]}}),mf=/(?:^|\s)((?:\*)((?:[^*]+))(?:\*))$/,gf=/(?:^|\s)((?:\*)((?:[^*]+))(?:\*))/g,yf=/(?:^|\s)((?:_)((?:[^_]+))(?:_))$/,bf=/(?:^|\s)((?:_)((?:[^_]+))(?:_))/g,kf=we.create({name:"italic",addOptions(){return{HTMLAttributes:{}}},parseHTML(){return[{tag:"em"},{tag:"i",getAttrs:r=>r.style.fontStyle!=="normal"&&null},{style:"font-style=italic"}]},renderHTML({HTMLAttributes:r}){return["em",$(this.options.HTMLAttributes,r),0]},addCommands(){return{setItalic:()=>({commands:r})=>r.setMark(this.name),toggleItalic:()=>({commands:r})=>r.toggleMark(this.name),unsetItalic:()=>({commands:r})=>r.unsetMark(this.name)}},addKeyboardShortcuts(){return{"Mod-i":()=>this.editor.commands.toggleItalic(),"Mod-I":()=>this.editor.commands.toggleItalic()}},addInputRules(){return[gt({find:mf,type:this.type}),gt({find:yf,type:this.type})]},addPasteRules(){return[yt({find:gf,type:this.type}),yt({find:bf,type:this.type})]}}),xf=Y.create({name:"listItem",addOptions(){return{HTMLAttributes:{},bulletListTypeName:"bulletList",orderedListTypeName:"orderedList"}},content:"paragraph block*",defining:!0,parseHTML(){return[{tag:"li"}]},renderHTML({HTMLAttributes:r}){return["li",$(this.options.HTMLAttributes,r),0]},addKeyboardShortcuts(){return{Enter:()=>this.editor.commands.splitListItem(this.name),Tab:()=>this.editor.commands.sinkListItem(this.name),"Shift-Tab":()=>this.editor.commands.liftListItem(this.name)}}}),Sf=Y.create({name:"listItem",addOptions(){return{HTMLAttributes:{},bulletListTypeName:"bulletList",orderedListTypeName:"orderedList"}},content:"paragraph block*",defining:!0,parseHTML(){return[{tag:"li"}]},renderHTML({HTMLAttributes:r}){return["li",$(this.options.HTMLAttributes,r),0]},addKeyboardShortcuts(){return{Enter:()=>this.editor.commands.splitListItem(this.name),Tab:()=>this.editor.commands.sinkListItem(this.name),"Shift-Tab":()=>this.editor.commands.liftListItem(this.name)}}}),Fi=we.create({name:"textStyle",addOptions(){return{HTMLAttributes:{}}},parseHTML(){return[{tag:"span",getAttrs:r=>r.hasAttribute("style")?{}:!1}]},renderHTML({HTMLAttributes:r}){return["span",$(this.options.HTMLAttributes,r),0]},addCommands(){return{removeEmptyTextStyle:()=>({state:r,commands:e})=>{const t=kn(r,this.type);return Object.entries(t).some(([,i])=>!!i)?!0:e.unsetMark(this.name)}}}}),Vi=/^(\d+)\.\s$/,Mf=Y.create({name:"orderedList",addOptions(){return{itemTypeName:"listItem",HTMLAttributes:{},keepMarks:!1,keepAttributes:!1}},group:"block list",content(){return`${this.options.itemTypeName}+`},addAttributes(){return{start:{default:1,parseHTML:r=>r.hasAttribute("start")?parseInt(r.getAttribute("start")||"",10):1}}},parseHTML(){return[{tag:"ol"}]},renderHTML({HTMLAttributes:r}){const{start:e,...t}=r;return e===1?["ol",$(this.options.HTMLAttributes,t),0]:["ol",$(this.options.HTMLAttributes,r),0]},addCommands(){return{toggleOrderedList:()=>({commands:r,chain:e})=>this.options.keepAttributes?e().toggleList(this.name,this.options.itemTypeName,this.options.keepMarks).updateAttributes(Sf.name,this.editor.getAttributes(Fi.name)).run():r.toggleList(this.name,this.options.itemTypeName,this.options.keepMarks)}},addKeyboardShortcuts(){return{"Mod-Shift-7":()=>this.editor.commands.toggleOrderedList()}},addInputRules(){let r=Pt({find:Vi,type:this.type,getAttributes:e=>({start:+e[1]}),joinPredicate:(e,t)=>t.childCount+t.attrs.start===+e[1]});return(this.options.keepMarks||this.options.keepAttributes)&&(r=Pt({find:Vi,type:this.type,keepMarks:this.options.keepMarks,keepAttributes:this.options.keepAttributes,getAttributes:e=>({start:+e[1],...this.editor.getAttributes(Fi.name)}),joinPredicate:(e,t)=>t.childCount+t.attrs.start===+e[1],editor:this.editor})),[r]}}),wf=Y.create({name:"paragraph",priority:1e3,addOptions(){return{HTMLAttributes:{}}},group:"block",content:"inline*",parseHTML(){return[{tag:"p"}]},renderHTML({HTMLAttributes:r}){return["p",$(this.options.HTMLAttributes,r),0]},addCommands(){return{setParagraph:()=>({commands:r})=>r.setNode(this.name)}},addKeyboardShortcuts(){return{"Mod-Alt-0":()=>this.editor.commands.setParagraph()}}}),Cf=/(?:^|\s)((?:~~)((?:[^~]+))(?:~~))$/,Tf=/(?:^|\s)((?:~~)((?:[^~]+))(?:~~))/g,Of=we.create({name:"strike",addOptions(){return{HTMLAttributes:{}}},parseHTML(){return[{tag:"s"},{tag:"del"},{tag:"strike"},{style:"text-decoration",consuming:!1,getAttrs:r=>r.includes("line-through")?{}:!1}]},renderHTML({HTMLAttributes:r}){return["s",$(this.options.HTMLAttributes,r),0]},addCommands(){return{setStrike:()=>({commands:r})=>r.setMark(this.name),toggleStrike:()=>({commands:r})=>r.toggleMark(this.name),unsetStrike:()=>({commands:r})=>r.unsetMark(this.name)}},addKeyboardShortcuts(){const r={};return vr()?r["Mod-Shift-s"]=()=>this.editor.commands.toggleStrike():r["Ctrl-Shift-s"]=()=>this.editor.commands.toggleStrike(),r},addInputRules(){return[gt({find:Cf,type:this.type})]},addPasteRules(){return[yt({find:Tf,type:this.type})]}}),vf=Y.create({name:"text",group:"inline"}),Af=se.create({name:"starterKit",addExtensions(){var r,e,t,n,i,s,o,l,a,c,d,u,f,h,p,m,g,y;const x=[];return this.options.blockquote!==!1&&x.push(Eu.configure((r=this.options)===null||r===void 0?void 0:r.blockquote)),this.options.bold!==!1&&x.push(Bu.configure((e=this.options)===null||e===void 0?void 0:e.bold)),this.options.bulletList!==!1&&x.push(zu.configure((t=this.options)===null||t===void 0?void 0:t.bulletList)),this.options.code!==!1&&x.push($u.configure((n=this.options)===null||n===void 0?void 0:n.code)),this.options.codeBlock!==!1&&x.push(ju.configure((i=this.options)===null||i===void 0?void 0:i.codeBlock)),this.options.document!==!1&&x.push(Ju.configure((s=this.options)===null||s===void 0?void 0:s.document)),this.options.dropcursor!==!1&&x.push(Ku.configure((o=this.options)===null||o===void 0?void 0:o.dropcursor)),this.options.gapcursor!==!1&&x.push(tf.configure((l=this.options)===null||l===void 0?void 0:l.gapcursor)),this.options.hardBreak!==!1&&x.push(nf.configure((a=this.options)===null||a===void 0?void 0:a.hardBreak)),this.options.heading!==!1&&x.push(rf.configure((c=this.options)===null||c===void 0?void 0:c.heading)),this.options.history!==!1&&x.push(hf.configure((d=this.options)===null||d===void 0?void 0:d.history)),this.options.horizontalRule!==!1&&x.push(pf.configure((u=this.options)===null||u===void 0?void 0:u.horizontalRule)),this.options.italic!==!1&&x.push(kf.configure((f=this.options)===null||f===void 0?void 0:f.italic)),this.options.listItem!==!1&&x.push(xf.configure((h=this.options)===null||h===void 0?void 0:h.listItem)),this.options.orderedList!==!1&&x.push(Mf.configure((p=this.options)===null||p===void 0?void 0:p.orderedList)),this.options.paragraph!==!1&&x.push(wf.configure((m=this.options)===null||m===void 0?void 0:m.paragraph)),this.options.strike!==!1&&x.push(Of.configure((g=this.options)===null||g===void 0?void 0:g.strike)),this.options.text!==!1&&x.push(vf.configure((y=this.options)===null||y===void 0?void 0:y.text)),x}}),Nf=se.create({name:"textAlign",addOptions(){return{types:[],alignments:["left","center","right","justify"],defaultAlignment:"left"}},addGlobalAttributes(){return[{types:this.options.types,attributes:{textAlign:{default:this.options.defaultAlignment,parseHTML:r=>r.style.textAlign||this.options.defaultAlignment,renderHTML:r=>r.textAlign===this.options.defaultAlignment?{}:{style:`text-align: ${r.textAlign}`}}}}]},addCommands(){return{setTextAlign:r=>({commands:e})=>this.options.alignments.includes(r)?this.options.types.every(t=>e.updateAttributes(t,{textAlign:r})):!1,unsetTextAlign:()=>({commands:r})=>this.options.types.every(e=>r.resetAttributes(e,"textAlign"))}},addKeyboardShortcuts(){return{"Mod-Shift-l":()=>this.editor.commands.setTextAlign("left"),"Mod-Shift-e":()=>this.editor.commands.setTextAlign("center"),"Mod-Shift-r":()=>this.editor.commands.setTextAlign("right"),"Mod-Shift-j":()=>this.editor.commands.setTextAlign("justify")}}}),Ef={},Df={viewBox:"0 0 24 24"},If=w("path",{d:"M17.194 10.962A6.271 6.271 0 0012.844.248H4.3a1.25 1.25 0 000 2.5h1.013a.25.25 0 01.25.25V21a.25.25 0 01-.25.25H4.3a1.25 1.25 0 100 2.5h9.963a6.742 6.742 0 002.93-12.786zm-4.35-8.214a3.762 3.762 0 010 7.523H8.313a.25.25 0 01-.25-.25V3a.25.25 0 01.25-.25zm1.42 18.5H8.313a.25.25 0 01-.25-.25v-7.977a.25.25 0 01.25-.25h5.951a4.239 4.239 0 010 8.477z"},null,-1),Rf=[If];function Pf(r,e){return Q(),ie("svg",Df,Rf)}const Bf=le(Ef,[["render",Pf]]),Lf={},zf={viewBox:"0 0 24 24"},Ff=w("path",{d:"M9.147 21.552a1.244 1.244 0 01-.895-.378L.84 13.561a2.257 2.257 0 010-3.125l7.412-7.613a1.25 1.25 0 011.791 1.744l-6.9 7.083a.5.5 0 000 .7l6.9 7.082a1.25 1.25 0 01-.9 2.122zm5.707 0a1.25 1.25 0 01-.9-2.122l6.9-7.083a.5.5 0 000-.7l-6.9-7.082a1.25 1.25 0 011.791-1.744l7.411 7.612a2.257 2.257 0 010 3.125l-7.412 7.614a1.244 1.244 0 01-.89.38zm6.514-9.373z"},null,-1),Vf=[Ff];function $f(r,e){return Q(),ie("svg",zf,Vf)}const Hf=le(Lf,[["render",$f]]),_f={},jf={viewBox:"0 0 24 24"},Jf=w("path",{d:"M22.5.248h-7.637a1.25 1.25 0 000 2.5h1.086a.25.25 0 01.211.384L4.78 21.017a.5.5 0 01-.422.231H1.5a1.25 1.25 0 000 2.5h7.637a1.25 1.25 0 000-2.5H8.051a.25.25 0 01-.211-.384L19.22 2.98a.5.5 0 01.422-.232H22.5a1.25 1.25 0 000-2.5z"},null,-1),Wf=[Jf];function qf(r,e){return Q(),ie("svg",jf,Wf)}const Kf=le(_f,[["render",qf]]),Uf={},Gf={viewBox:"0 0 24 24"},Yf=w("path",{d:"M7.75 4.5h15a1 1 0 000-2h-15a1 1 0 000 2zm15 6.5h-15a1 1 0 100 2h15a1 1 0 000-2zm0 8.5h-15a1 1 0 000 2h15a1 1 0 000-2zM2.212 17.248a2 2 0 00-1.933 1.484.75.75 0 101.45.386.5.5 0 11.483.63.75.75 0 100 1.5.5.5 0 11-.482.635.75.75 0 10-1.445.4 2 2 0 103.589-1.648.251.251 0 010-.278 2 2 0 00-1.662-3.111zm2.038-6.5a2 2 0 00-4 0 .75.75 0 001.5 0 .5.5 0 011 0 1.031 1.031 0 01-.227.645L.414 14.029A.75.75 0 001 15.248h2.5a.75.75 0 000-1.5h-.419a.249.249 0 01-.195-.406L3.7 12.33a2.544 2.544 0 00.55-1.582zM4 5.248h-.25A.25.25 0 013.5 5V1.623A1.377 1.377 0 002.125.248H1.5a.75.75 0 000 1.5h.25A.25.25 0 012 2v3a.25.25 0 01-.25.25H1.5a.75.75 0 000 1.5H4a.75.75 0 000-1.5z"},null,-1),Xf=[Yf];function Zf(r,e){return Q(),ie("svg",Gf,Xf)}const Qf=le(Uf,[["render",Zf]]),eh={},th={viewBox:"0 0 24 24"},nh=Ao('',6),rh=[nh];function ih(r,e){return Q(),ie("svg",th,rh)}const sh=le(eh,[["render",ih]]),oh={},lh={viewBox:"0 0 24 24"},ah=w("path",{d:"M22.5.248H7.228a6.977 6.977 0 100 13.954h2.318a.25.25 0 01.25.25V22.5a1.25 1.25 0 002.5 0V3a.25.25 0 01.25-.25h3.682a.25.25 0 01.25.25v19.5a1.25 1.25 0 002.5 0V3a.249.249 0 01.25-.25H22.5a1.25 1.25 0 000-2.5zM9.8 11.452a.25.25 0 01-.25.25H7.228a4.477 4.477 0 110-8.954h2.318A.25.25 0 019.8 3z"},null,-1),ch=[ah];function dh(r,e){return Q(),ie("svg",lh,ch)}const uh=le(oh,[["render",dh]]),fh={},hh={viewBox:"0 0 24 24"},ph=w("path",{d:"M18.559 3.932a4.942 4.942 0 100 9.883 4.609 4.609 0 001.115-.141.25.25 0 01.276.368 6.83 6.83 0 01-5.878 3.523 1.25 1.25 0 000 2.5 9.71 9.71 0 009.428-9.95V8.873a4.947 4.947 0 00-4.941-4.941zm-12.323 0a4.942 4.942 0 000 9.883 4.6 4.6 0 001.115-.141.25.25 0 01.277.368 6.83 6.83 0 01-5.878 3.523 1.25 1.25 0 000 2.5 9.711 9.711 0 009.428-9.95V8.873a4.947 4.947 0 00-4.942-4.941z"},null,-1),mh=[ph];function gh(r,e){return Q(),ie("svg",hh,mh)}const yh=le(fh,[["render",gh]]),bh={},kh={viewBox:"0 0 24 24"},xh=w("path",{d:"M23.75 12.952A1.25 1.25 0 0022.5 11.7h-8.936a.492.492 0 01-.282-.09c-.722-.513-1.482-.981-2.218-1.432-2.8-1.715-4.5-2.9-4.5-4.863 0-2.235 2.207-2.569 3.523-2.569a4.54 4.54 0 013.081.764 2.662 2.662 0 01.447 1.99v.3a1.25 1.25 0 102.5 0v-.268a4.887 4.887 0 00-1.165-3.777C13.949.741 12.359.248 10.091.248c-3.658 0-6.023 1.989-6.023 5.069 0 2.773 1.892 4.512 4 5.927a.25.25 0 01-.139.458H1.5a1.25 1.25 0 000 2.5h10.977a.251.251 0 01.159.058 4.339 4.339 0 011.932 3.466c0 3.268-3.426 3.522-4.477 3.522-1.814 0-3.139-.405-3.834-1.173a3.394 3.394 0 01-.65-2.7 1.25 1.25 0 00-2.488-.246A5.76 5.76 0 004.4 21.753c1.2 1.324 3.114 2 5.688 2 4.174 0 6.977-2.42 6.977-6.022a6.059 6.059 0 00-.849-3.147.25.25 0 01.216-.377H22.5a1.25 1.25 0 001.25-1.255z"},null,-1),Sh=[xh];function Mh(r,e){return Q(),ie("svg",kh,Sh)}const wh=le(bh,[["render",Mh]]),Ch={},Th={viewBox:"0 0 24 24"},Oh=w("path",{d:"M17.786 3.77a12.542 12.542 0 00-12.965-.865.249.249 0 01-.292-.045L1.937.269A.507.507 0 001.392.16a.5.5 0 00-.308.462v6.7a.5.5 0 00.5.5h6.7a.5.5 0 00.354-.854L6.783 5.115a.253.253 0 01-.068-.228.249.249 0 01.152-.181 10 10 0 019.466 1.1 9.759 9.759 0 01.094 15.809 1.25 1.25 0 001.473 2.016 12.122 12.122 0 005.013-9.961 12.125 12.125 0 00-5.127-9.9z"},null,-1),vh=[Oh];function Ah(r,e){return Q(),ie("svg",Th,vh)}const Nh=le(Ch,[["render",Ah]]),Eh={},Dh={viewBox:"0 0 24 24"},Ih=w("path",{d:"M22.608.161a.5.5 0 00-.545.108L19.472 2.86a.25.25 0 01-.292.045 12.537 12.537 0 00-12.966.865A12.259 12.259 0 006.1 23.632a1.25 1.25 0 001.476-2.018 9.759 9.759 0 01.091-15.809 10 10 0 019.466-1.1.25.25 0 01.084.409l-1.85 1.85a.5.5 0 00.354.853h6.7a.5.5 0 00.5-.5V.623a.5.5 0 00-.313-.462z"},null,-1),Rh=[Ih];function Ph(r,e){return Q(),ie("svg",Dh,Rh)}const Bh=le(Eh,[["render",Ph]]),Lh={},zh={viewBox:"0 0 24 24"},Fh=w("path",{d:"M9.147 21.552a1.244 1.244 0 01-.895-.378L.84 13.561a2.257 2.257 0 010-3.125l7.412-7.613a1.25 1.25 0 011.791 1.744l-6.9 7.083a.5.5 0 000 .7l6.9 7.082a1.25 1.25 0 01-.9 2.122zm5.707 0a1.25 1.25 0 01-.9-2.122l6.9-7.083a.5.5 0 000-.7l-6.9-7.082a1.25 1.25 0 011.791-1.744l7.411 7.612a2.257 2.257 0 010 3.125l-7.412 7.614a1.244 1.244 0 01-.89.38zm6.514-9.373z"},null,-1),Vh=[Fh];function $h(r,e){return Q(),ie("svg",zh,Vh)}const Hh=le(Lh,[["render",$h]]),_h={},jh={viewBox:"0 0 24 24"},Jh=w("path",{fill:"currentColor","fill-rule":"evenodd",d:"M3.75 5.25h16.5a.75.75 0 1 1 0 1.5H3.75a.75.75 0 0 1 0-1.5zm4 4h8.5a.75.75 0 1 1 0 1.5h-8.5a.75.75 0 1 1 0-1.5zm-4 4h16.5a.75.75 0 1 1 0 1.5H3.75a.75.75 0 1 1 0-1.5zm4 4h8.5a.75.75 0 1 1 0 1.5h-8.5a.75.75 0 1 1 0-1.5z"},null,-1),Wh=[Jh];function qh(r,e){return Q(),ie("svg",jh,Wh)}const Kh=le(_h,[["render",qh]]),Uh={components:{EditorContent:vu,BoldIcon:Bf,CodingIcon:Hf,ItalicIcon:Kf,ListIcon:Qf,ListUlIcon:sh,ParagraphIcon:uh,QuoteIcon:yh,StrikethroughIcon:wh,UndoIcon:Nh,RedoIcon:Bh,CodeBlockIcon:Hh,DotsVerticalIcon:No,MenuCenterIcon:Kh,MenuAlt2Icon:Eo,MenuAlt3Icon:Do,MenuIcon:Io},props:{modelValue:{type:String,default:""},contentLoading:{type:Boolean,default:!1}},emits:["update:modelValue"],setup(r,{emit:e}){const t=Au({content:r.modelValue,extensions:[Af,Nf.configure({types:["heading","paragraph"],alignments:["left","right","center","justify"]})],onUpdate:()=>{e("update:modelValue",t.value.getHTML())}});return Ro(()=>r.modelValue,n=>{t.value.getHTML()!==n&&t.value.commands.setContent(r.modelValue,!1)}),Po(()=>{setTimeout(()=>{t.value.destroy()},500)}),{editor:t}}},Gh={key:1,class:"box-border w-full text-sm leading-8 text-left bg-white border border-gray-200 rounded-md min-h-[200px] overflow-hidden"},Yh={key:0,class:"editor-content"},Xh={class:"flex justify-end p-2 border-b border-gray-200 md:hidden"},Zh={class:"flex items-center justify-center w-6 h-6 ml-2 text-sm text-black bg-white rounded-sm md:h-9 md:w-9"},Qh={class:"flex flex-wrap space-x-1"},ep={class:"hidden p-2 border-b border-gray-200 md:flex"},tp={class:"flex flex-wrap space-x-1"};function np(r,e,t,n,i,s){const o=z("BaseContentPlaceholdersBox"),l=z("BaseContentPlaceholders"),a=z("dots-vertical-icon"),c=z("bold-icon"),d=z("italic-icon"),u=z("strikethrough-icon"),f=z("coding-icon"),h=z("paragraph-icon"),p=z("list-ul-icon"),m=z("list-icon"),g=z("quote-icon"),y=z("code-block-icon"),x=z("undo-icon"),N=z("redo-icon"),P=z("BaseDropdown"),B=z("menu-alt2-icon"),R=z("menu-alt3-icon"),K=z("menu-icon"),ge=z("menu-center-icon"),A=z("editor-content");return t.contentLoading?(Q(),Bo(l,{key:0},{default:Sn(()=>[D(o,{rounded:!0,class:"w-full",style:{height:"200px"}})]),_:1})):(Q(),ie("div",Gh,[n.editor?(Q(),ie("div",Yh,[w("div",Xh,[D(P,{"width-class":"w-48"},{activator:Sn(()=>[w("div",Zh,[D(a,{class:"w-6 h-6 text-gray-600"})])]),default:Sn(()=>[w("div",Qh,[w("span",{class:E(["flex items-center justify-center w-6 h-6 rounded-sm cursor-pointer hover:bg-gray-100",{"bg-gray-200":n.editor.isActive("bold")}]),onClick:e[0]||(e[0]=T=>n.editor.chain().focus().toggleBold().run())},[D(c,{class:"h-3 cursor-pointer fill-current"})],2),w("span",{class:E(["flex items-center justify-center w-6 h-6 rounded-sm cursor-pointer hover:bg-gray-100",{"bg-gray-200":n.editor.isActive("italic")}]),onClick:e[1]||(e[1]=T=>n.editor.chain().focus().toggleItalic().run())},[D(d,{class:"h-3 cursor-pointer fill-current"})],2),w("span",{class:E(["flex items-center justify-center w-6 h-6 rounded-sm cursor-pointer hover:bg-gray-100",{"bg-gray-200":n.editor.isActive("strike")}]),onClick:e[2]||(e[2]=T=>n.editor.chain().focus().toggleStrike().run())},[D(u,{class:"h-3 cursor-pointer fill-current"})],2),w("span",{class:E(["flex items-center justify-center w-6 h-6 rounded-sm cursor-pointer hover:bg-gray-100",{"bg-gray-200":n.editor.isActive("code")}]),onClick:e[3]||(e[3]=T=>n.editor.chain().focus().toggleCode().run())},[D(f,{class:"h-3 cursor-pointer fill-current"})],2),w("span",{class:E(["flex items-center justify-center w-6 h-6 rounded-sm cursor-pointer hover:bg-gray-100",{"bg-gray-200":n.editor.isActive("paragraph")}]),onClick:e[4]||(e[4]=T=>n.editor.chain().focus().setParagraph().run())},[D(h,{class:"h-3 cursor-pointer fill-current"})],2),w("span",{class:E(["flex items-center justify-center w-6 h-6 rounded-sm cursor-pointer hover:bg-gray-100",{"bg-gray-200":n.editor.isActive("heading",{level:1})}]),onClick:e[5]||(e[5]=T=>n.editor.chain().focus().toggleHeading({level:1}).run())}," H1 ",2),w("span",{class:E(["flex items-center justify-center w-6 h-6 rounded-sm cursor-pointer hover:bg-gray-100",{"bg-gray-200":n.editor.isActive("heading",{level:2})}]),onClick:e[6]||(e[6]=T=>n.editor.chain().focus().toggleHeading({level:2}).run())}," H2 ",2),w("span",{class:E(["flex items-center justify-center w-6 h-6 rounded-sm cursor-pointer hover:bg-gray-100",{"bg-gray-200":n.editor.isActive("heading",{level:3})}]),onClick:e[7]||(e[7]=T=>n.editor.chain().focus().toggleHeading({level:3}).run())}," H3 ",2),w("span",{class:E(["flex items-center justify-center w-6 h-6 rounded-sm cursor-pointer hover:bg-gray-100",{"bg-gray-200":n.editor.isActive("bulletList")}]),onClick:e[8]||(e[8]=T=>n.editor.chain().focus().toggleBulletList().run())},[D(p,{class:"h-3 cursor-pointer fill-current"})],2),w("span",{class:E(["flex items-center justify-center w-6 h-6 rounded-sm cursor-pointer hover:bg-gray-100",{"bg-gray-200":n.editor.isActive("orderedList")}]),onClick:e[9]||(e[9]=T=>n.editor.chain().focus().toggleOrderedList().run())},[D(m,{class:"h-3 cursor-pointer fill-current"})],2),w("span",{class:E(["flex items-center justify-center w-6 h-6 rounded-sm cursor-pointer hover:bg-gray-100",{"bg-gray-200":n.editor.isActive("blockquote")}]),onClick:e[10]||(e[10]=T=>n.editor.chain().focus().toggleBlockquote().run())},[D(g,{class:"h-3 cursor-pointer fill-current"})],2),w("span",{class:E(["flex items-center justify-center w-6 h-6 rounded-sm cursor-pointer hover:bg-gray-100",{"bg-gray-200":n.editor.isActive("codeBlock")}]),onClick:e[11]||(e[11]=T=>n.editor.chain().focus().toggleCodeBlock().run())},[D(y,{class:"h-3 cursor-pointer fill-current"})],2),w("span",{class:E(["flex items-center justify-center w-6 h-6 rounded-sm cursor-pointer hover:bg-gray-100",{"bg-gray-200":n.editor.isActive("undo")}]),onClick:e[12]||(e[12]=T=>n.editor.chain().focus().undo().run())},[D(x,{class:"h-3 cursor-pointer fill-current"})],2),w("span",{class:E(["flex items-center justify-center w-6 h-6 rounded-sm cursor-pointer hover:bg-gray-100",{"bg-gray-200":n.editor.isActive("redo")}]),onClick:e[13]||(e[13]=T=>n.editor.chain().focus().redo().run())},[D(N,{class:"h-3 cursor-pointer fill-current"})],2)])]),_:1})]),w("div",ep,[w("div",tp,[w("span",{class:E(["flex items-center justify-center w-6 h-6 rounded-sm cursor-pointer hover:bg-gray-100",{"bg-gray-200":n.editor.isActive("bold")}]),onClick:e[14]||(e[14]=T=>n.editor.chain().focus().toggleBold().run())},[D(c,{class:"h-3 cursor-pointer fill-current"})],2),w("span",{class:E(["flex items-center justify-center w-6 h-6 rounded-sm cursor-pointer hover:bg-gray-100",{"bg-gray-200":n.editor.isActive("italic")}]),onClick:e[15]||(e[15]=T=>n.editor.chain().focus().toggleItalic().run())},[D(d,{class:"h-3 cursor-pointer fill-current"})],2),w("span",{class:E(["flex items-center justify-center w-6 h-6 rounded-sm cursor-pointer hover:bg-gray-100",{"bg-gray-200":n.editor.isActive("strike")}]),onClick:e[16]||(e[16]=T=>n.editor.chain().focus().toggleStrike().run())},[D(u,{class:"h-3 cursor-pointer fill-current"})],2),w("span",{class:E(["flex items-center justify-center w-6 h-6 rounded-sm cursor-pointer hover:bg-gray-100",{"bg-gray-200":n.editor.isActive("code")}]),onClick:e[17]||(e[17]=T=>n.editor.chain().focus().toggleCode().run())},[D(f,{class:"h-3 cursor-pointer fill-current"})],2),w("span",{class:E(["flex items-center justify-center w-6 h-6 rounded-sm cursor-pointer hover:bg-gray-100",{"bg-gray-200":n.editor.isActive("paragraph")}]),onClick:e[18]||(e[18]=T=>n.editor.chain().focus().setParagraph().run())},[D(h,{class:"h-3 cursor-pointer fill-current"})],2),w("span",{class:E(["flex items-center justify-center w-6 h-6 rounded-sm cursor-pointer hover:bg-gray-100",{"bg-gray-200":n.editor.isActive("heading",{level:1})}]),onClick:e[19]||(e[19]=T=>n.editor.chain().focus().toggleHeading({level:1}).run())}," H1 ",2),w("span",{class:E(["flex items-center justify-center w-6 h-6 rounded-sm cursor-pointer hover:bg-gray-100",{"bg-gray-200":n.editor.isActive("heading",{level:2})}]),onClick:e[20]||(e[20]=T=>n.editor.chain().focus().toggleHeading({level:2}).run())}," H2 ",2),w("span",{class:E(["flex items-center justify-center w-6 h-6 rounded-sm cursor-pointer hover:bg-gray-100",{"bg-gray-200":n.editor.isActive("heading",{level:3})}]),onClick:e[21]||(e[21]=T=>n.editor.chain().focus().toggleHeading({level:3}).run())}," H3 ",2),w("span",{class:E(["flex items-center justify-center w-6 h-6 rounded-sm cursor-pointer hover:bg-gray-100",{"bg-gray-200":n.editor.isActive("bulletList")}]),onClick:e[22]||(e[22]=T=>n.editor.chain().focus().toggleBulletList().run())},[D(p,{class:"h-3 cursor-pointer fill-current"})],2),w("span",{class:E(["flex items-center justify-center w-6 h-6 rounded-sm cursor-pointer hover:bg-gray-100",{"bg-gray-200":n.editor.isActive("orderedList")}]),onClick:e[23]||(e[23]=T=>n.editor.chain().focus().toggleOrderedList().run())},[D(m,{class:"h-3 cursor-pointer fill-current"})],2),w("span",{class:E(["flex items-center justify-center w-6 h-6 rounded-sm cursor-pointer hover:bg-gray-100",{"bg-gray-200":n.editor.isActive("blockquote")}]),onClick:e[24]||(e[24]=T=>n.editor.chain().focus().toggleBlockquote().run())},[D(g,{class:"h-3 cursor-pointer fill-current"})],2),w("span",{class:E(["flex items-center justify-center w-6 h-6 rounded-sm cursor-pointer hover:bg-gray-100",{"bg-gray-200":n.editor.isActive("codeBlock")}]),onClick:e[25]||(e[25]=T=>n.editor.chain().focus().toggleCodeBlock().run())},[D(y,{class:"h-3 cursor-pointer fill-current"})],2),w("span",{class:E(["flex items-center justify-center w-6 h-6 rounded-sm cursor-pointer hover:bg-gray-100",{"bg-gray-200":n.editor.isActive("undo")}]),onClick:e[26]||(e[26]=T=>n.editor.chain().focus().undo().run())},[D(x,{class:"h-3 cursor-pointer fill-current"})],2),w("span",{class:E(["flex items-center justify-center w-6 h-6 rounded-sm cursor-pointer hover:bg-gray-100",{"bg-gray-200":n.editor.isActive("redo")}]),onClick:e[27]||(e[27]=T=>n.editor.chain().focus().redo().run())},[D(N,{class:"h-3 cursor-pointer fill-current"})],2),w("span",{class:E(["flex items-center justify-center w-6 h-6 rounded-sm cursor-pointer hover:bg-gray-100",{"bg-gray-200":n.editor.isActive({textAlign:"left"})}]),onClick:e[28]||(e[28]=T=>n.editor.chain().focus().setTextAlign("left").run())},[D(B,{class:"h-5 cursor-pointer fill-current"})],2),w("span",{class:E(["flex items-center justify-center w-6 h-6 rounded-sm cursor-pointer hover:bg-gray-100",{"bg-gray-200":n.editor.isActive({textAlign:"right"})}]),onClick:e[29]||(e[29]=T=>n.editor.chain().focus().setTextAlign("right").run())},[D(R,{class:"h-5 cursor-pointer fill-current"})],2),w("span",{class:E(["flex items-center justify-center w-6 h-6 rounded-sm cursor-pointer hover:bg-gray-100",{"bg-gray-200":n.editor.isActive({textAlign:"justify"})}]),onClick:e[30]||(e[30]=T=>n.editor.chain().focus().setTextAlign("justify").run())},[D(K,{class:"h-5 cursor-pointer fill-current"})],2),w("span",{class:E(["flex items-center justify-center w-6 h-6 rounded-sm cursor-pointer hover:bg-gray-100",{"bg-gray-200":n.editor.isActive({textAlign:"center"})}]),onClick:e[31]||(e[31]=T=>n.editor.chain().focus().setTextAlign("center").run())},[D(ge,{class:"h-5 cursor-pointer fill-current"})],2)])]),D(A,{editor:n.editor,class:"box-border relative w-full text-sm leading-8 text-left editor__content"},null,8,["editor"])])):Lo("",!0)]))}const sp=le(Uh,[["render",np]]);export{sp as default}; diff --git a/public/build/assets/BaseListItem-XB18biZ-.js b/public/build/assets/BaseListItem-mZe-CM4g.js similarity index 93% rename from public/build/assets/BaseListItem-XB18biZ-.js rename to public/build/assets/BaseListItem-mZe-CM4g.js index ace92d31..17cd00a8 100644 --- a/public/build/assets/BaseListItem-XB18biZ-.js +++ b/public/build/assets/BaseListItem-mZe-CM4g.js @@ -1 +1 @@ -import{Z as c,o as n,c as l,a2 as i,k as o,r as d,m,w as _,K as f,b as $,t as B,aG as h}from"./main-B9dpPbRR.js";const k={name:"List"},x={class:"list-none"};function y(e,a,t,s,r,u){return n(),l("div",x,[i(e.$slots,"default")])}const I=c(k,[["render",y]]),C={name:"ListItem",props:{title:{type:String,required:!1,default:""},active:{type:Boolean,required:!0},index:{type:Number,default:null}},setup(e,{slots:a}){const t="cursor-pointer pb-2 pr-0 text-sm font-medium leading-5 flex items-center";let s=o(()=>!!a.icon),r=o(()=>e.active?`${t} text-primary-500`:`${t} text-gray-500`);return{hasIconSlot:s,containerClass:r}}},g={key:0,class:"mr-3"};function S(e,a,t,s,r,u){const p=d("router-link");return n(),m(p,h(e.$attrs,{class:s.containerClass}),{default:_(()=>[s.hasIconSlot?(n(),l("span",g,[i(e.$slots,"icon")])):f("",!0),$("span",null,B(t.title),1)]),_:3},16,["class"])}const L=c(C,[["render",S]]);export{L as B,I as a}; +import{Z as c,o as n,c as l,a2 as i,k as o,r as d,m,w as _,K as f,b as $,t as B,aJ as h}from"./main-pPEsZPea.js";const k={name:"List"},x={class:"list-none"};function y(e,a,t,s,r,u){return n(),l("div",x,[i(e.$slots,"default")])}const I=c(k,[["render",y]]),C={name:"ListItem",props:{title:{type:String,required:!1,default:""},active:{type:Boolean,required:!0},index:{type:Number,default:null}},setup(e,{slots:a}){const t="cursor-pointer pb-2 pr-0 text-sm font-medium leading-5 flex items-center";let s=o(()=>!!a.icon),r=o(()=>e.active?`${t} text-primary-500`:`${t} text-gray-500`);return{hasIconSlot:s,containerClass:r}}},g={key:0,class:"mr-3"};function S(e,a,t,s,r,u){const p=d("router-link");return n(),m(p,h(e.$attrs,{class:s.containerClass}),{default:_(()=>[s.hasIconSlot?(n(),l("span",g,[i(e.$slots,"icon")])):f("",!0),$("span",null,B(t.title),1)]),_:3},16,["class"])}const L=c(C,[["render",S]]);export{L as B,I as a}; diff --git a/public/build/assets/BaseMultiselect-klaui7zz.js b/public/build/assets/BaseMultiselect-3XdfFYX2.js similarity index 99% rename from public/build/assets/BaseMultiselect-klaui7zz.js rename to public/build/assets/BaseMultiselect-3XdfFYX2.js index f23b03a5..f19322d8 100644 --- a/public/build/assets/BaseMultiselect-klaui7zz.js +++ b/public/build/assets/BaseMultiselect-3XdfFYX2.js @@ -1 +1 @@ -import{be as x,f as M,k as O,z as re,bf as Ie,Z as We,r as qe,o as I,m as Je,w as Ze,a as Qe,c as q,J as w,q as de,K as E,N as le,O as ne,a2 as C,p as Ue,t as J,b as P}from"./main-B9dpPbRR.js";function H(e){return[null,void 0,!1].indexOf(e)!==-1}function Xe(e,u,a){const{object:i,valueProp:o,mode:v}=x(e),f=a.iv,g=p=>{f.value=c(p);const b=t(p);u.emit("change",b),u.emit("input",b),u.emit("update:modelValue",b)},t=p=>i.value||H(p)?p:Array.isArray(p)?p.map(b=>b[o.value]):p[o.value],c=p=>H(p)?v.value==="single"?{}:[]:p;return{update:g}}function Ye(e,u){const{value:a,modelValue:i,mode:o,valueProp:v}=x(e),f=M(o.value!=="single"?[]:{}),g=u.expose!==void 0?i:a,t=O(()=>o.value==="single"?f.value[v.value]:f.value.map(p=>p[v.value])),c=O(()=>o.value!=="single"?f.value.map(p=>p[v.value]).join(","):f.value[v.value]);return{iv:f,internalValue:f,ev:g,externalValue:g,textValue:c,plainValue:t}}function $e(e,u,a){const{preserveSearch:i}=x(e),o=M(e.initialSearch)||M(null),v=M(null),f=()=>{i.value||(o.value="")},g=c=>{o.value=c.target.value},t=c=>{u.emit("paste",c)};return re(o,c=>{u.emit("search-change",c)}),{search:o,input:v,clearSearch:f,handleSearchInput:g,handlePaste:t}}function _e(e,u,a){const{groupSelect:i,mode:o,groups:v}=x(e),f=M(null),g=c=>{c===void 0||c!==null&&c.disabled||v.value&&c&&c.group&&(o.value==="single"||!i.value)||(f.value=c)};return{pointer:f,setPointer:g,clearPointer:()=>{g(null)}}}function Be(e,u=!0){return u?String(e).toLowerCase().trim():String(e).normalize("NFD").replace(new RegExp("\\p{Diacritic}","gu"),"").toLowerCase().trim()}function el(e){return Object.prototype.toString.call(e)==="[object Object]"}function ll(e,u){const a=u.slice().sort();return e.length===u.length&&e.slice().sort().every(function(i,o){return i===a[o]})}function al(e,u,a){const{options:i,mode:o,trackBy:v,limit:f,hideSelected:g,createTag:t,label:c,appendNewTag:p,multipleLabel:b,object:B,loading:V,delay:D,resolveOnLoad:h,minChars:r,filterResults:j,clearOnSearch:X,clearOnSelect:k,valueProp:d,canDeselect:R,max:L,strict:Z,closeOnSelect:Q,groups:Y,groupLabel:se,groupOptions:A,groupHideEmpty:ve,groupSelect:pe}=x(e),S=a.iv,F=a.ev,T=a.search,$=a.clearSearch,_=a.update,fe=a.pointer,ue=a.clearPointer,K=a.blur,ae=a.deactivate,n=M([]),m=M([]),G=M(!1),N=O(()=>{if(Y.value){let l=m.value||[],s=[];return l.forEach(y=>{Se(y[A.value]).forEach(W=>{s.push(Object.assign({},W,y.disabled?{disabled:!0}:{}))})}),s}else{let l=Se(m.value||[]);return n.value.length&&(l=l.concat(n.value)),l}}),Oe=O(()=>Y.value?Fe((m.value||[]).map(l=>{const s=Se(l[A.value]);return{...l,group:!0,[A.value]:ye(s,!1).map(y=>Object.assign({},y,l.disabled?{disabled:!0}:{})),__VISIBLE__:ye(s).map(y=>Object.assign({},y,l.disabled?{disabled:!0}:{}))}})):[]),oe=O(()=>{let l=N.value;return be.value.length&&(l=be.value.concat(l)),l=ye(l),f.value>0&&(l=l.slice(0,f.value)),l}),ge=O(()=>{switch(o.value){case"single":return!H(S.value[d.value]);case"multiple":case"tags":return!H(S.value)&&S.value.length>0}}),Te=O(()=>b!==void 0&&b.value!==void 0?b.value(S.value):S.value&&S.value.length>1?`${S.value.length} options selected`:"1 option selected"),Ce=O(()=>!N.value.length&&!G.value&&!be.value.length),De=O(()=>N.value.length>0&&oe.value.length==0&&(T.value&&Y.value||!Y.value)),be=O(()=>t.value===!1||!T.value?[]:Ne(T.value)!==-1?[]:[{[d.value]:T.value,[c.value]:T.value,[v.value]:T.value}]),Ee=O(()=>{switch(o.value){case"single":return null;case"multiple":case"tags":return[]}}),Ve=O(()=>V.value||G.value),te=l=>{switch(typeof l!="object"&&(l=z(l)),o.value){case"single":_(l);break;case"multiple":case"tags":_(S.value.concat(l));break}u.emit("select",we(l),l)},ee=l=>{switch(typeof l!="object"&&(l=z(l)),o.value){case"single":Pe();break;case"tags":case"multiple":_(Array.isArray(l)?S.value.filter(s=>l.map(y=>y[d.value]).indexOf(s[d.value])===-1):S.value.filter(s=>s[d.value]!=l[d.value]));break}u.emit("deselect",we(l),l)},we=l=>B.value?l:l[d.value],Le=l=>{ee(l)},Re=(l,s)=>{if(s.button!==0){s.preventDefault();return}Le(l)},Pe=()=>{u.emit("clear"),_(Ee.value)},U=l=>{if(l.group!==void 0)return o.value==="single"?!1:Me(l[A.value])&&l[A.value].length;switch(o.value){case"single":return!H(S.value)&&S.value[d.value]==l[d.value];case"tags":case"multiple":return!H(S.value)&&S.value.map(s=>s[d.value]).indexOf(l[d.value])!==-1}},he=l=>l.disabled===!0,me=()=>L===void 0||L.value===-1||!ge.value&&L.value>0?!1:S.value.length>=L.value,Ge=l=>{if(!he(l)){switch(o.value){case"single":if(U(l)){R.value&&ee(l);return}K(),te(l);break;case"multiple":if(U(l)){ee(l);return}if(me())return;te(l),k.value&&$(),g.value&&ue(),Q.value&&K();break;case"tags":if(U(l)){ee(l);return}if(me())return;z(l[d.value])===void 0&&t.value&&(u.emit("tag",l[d.value]),p.value&&xe(l),$()),k.value&&$(),te(l),g.value&&ue(),Q.value&&K();break}Q.value&&ae()}},je=l=>{if(!(he(l)||o.value==="single"||!pe.value)){switch(o.value){case"multiple":case"tags":Ae(l[A.value])?ee(l[A.value]):te(l[A.value].filter(s=>S.value.map(y=>y[d.value]).indexOf(s[d.value])===-1).filter(s=>!s.disabled).filter((s,y)=>S.value.length+1+y<=L.value||L.value===-1));break}Q.value&&ae()}},Ae=l=>l.find(s=>!U(s)&&!s.disabled)===void 0,Me=l=>l.find(s=>!U(s))===void 0,z=l=>N.value[N.value.map(s=>String(s[d.value])).indexOf(String(l))],Ne=(l,s=!0)=>N.value.map(y=>y[v.value]).indexOf(l),He=l=>["tags","multiple"].indexOf(o.value)!==-1&&g.value&&U(l),xe=l=>{n.value.push(l)},Fe=l=>ve.value?l.filter(s=>T.value?s.__VISIBLE__.length:s[A.value].length):l.filter(s=>T.value?s.__VISIBLE__.length:!0),ye=(l,s=!0)=>{let y=l;return T.value&&j.value&&(y=y.filter(W=>Be(W[v.value],Z.value).indexOf(Be(T.value,Z.value))!==-1)),g.value&&s&&(y=y.filter(W=>!He(W))),y},Se=l=>{let s=l;return el(s)&&(s=Object.keys(s).map(y=>{let W=s[y];return{[d.value]:y,[v.value]:W,[c.value]:W}})),s=s.map(y=>typeof y=="object"?y:{[d.value]:y,[v.value]:y,[c.value]:y}),s},ie=()=>{H(F.value)||(S.value=ce(F.value))},ke=l=>{G.value=!0,i.value(T.value).then(s=>{m.value=s,typeof l=="function"&&l(s),G.value=!1})},ze=()=>{if(ge.value)if(o.value==="single"){let l=z(S.value[d.value])[c.value];S.value[c.value]=l,B.value&&(F.value[c.value]=l)}else S.value.forEach((l,s)=>{let y=z(S.value[s][d.value])[c.value];S.value[s][c.value]=y,B.value&&(F.value[s][c.value]=y)})},Ke=l=>{ke(l)},ce=l=>H(l)?o.value==="single"?{}:[]:B.value?l:o.value==="single"?z(l)||{}:l.filter(s=>!!z(s)).map(s=>z(s));if(o.value!=="single"&&!H(F.value)&&!Array.isArray(F.value))throw new Error(`v-model must be an array when using "${o.value}" mode`);return i&&typeof i.value=="function"?h.value?ke(ie):B.value==!0&&ie():(m.value=i.value,ie()),D.value>-1&&re(T,l=>{l.length{l==T.value&&i.value(T.value).then(s=>{l==T.value&&(m.value=s,fe.value=oe.value.filter(y=>y.disabled!==!0)[0]||null,G.value=!1)})},D.value))},{flush:"sync"}),re(F,l=>{if(H(l)){S.value=ce(l);return}switch(o.value){case"single":(B.value?l[d.value]!=S.value[d.value]:l!=S.value[d.value])&&(S.value=ce(l));break;case"multiple":case"tags":ll(B.value?l.map(s=>s[d.value]):l,S.value.map(s=>s[d.value]))||(S.value=ce(l));break}},{deep:!0}),typeof e.options!="function"&&re(i,(l,s)=>{m.value=e.options,Object.keys(S.value).length||ie(),ze()}),{fo:oe,filteredOptions:oe,hasSelected:ge,multipleLabelText:Te,eo:N,extendedOptions:N,fg:Oe,filteredGroups:Oe,noOptions:Ce,noResults:De,resolving:G,busy:Ve,select:te,deselect:ee,remove:Le,clear:Pe,isSelected:U,isDisabled:he,isMax:me,getOption:z,handleOptionClick:Ge,handleGroupClick:je,handleTagRemove:Re,refreshOptions:Ke,resolveOptions:ke}}function tl(e,u,a){const{valueProp:i,showOptions:o,searchable:v,groupLabel:f,groups:g,mode:t,groupSelect:c}=x(e),p=a.fo,b=a.fg,B=a.handleOptionClick,V=a.handleGroupClick,D=a.search,h=a.pointer,r=a.setPointer,j=a.clearPointer,X=a.multiselect,k=O(()=>p.value.filter(n=>!n.disabled)),d=O(()=>b.value.filter(n=>!n.disabled)),R=O(()=>t.value!=="single"&&c.value),L=O(()=>h.value&&h.value.group),Z=O(()=>K(h.value)),Q=O(()=>{const n=L.value?h.value:K(h.value),m=d.value.map(N=>N[f.value]).indexOf(n[f.value]);let G=d.value[m-1];return G===void 0&&(G=se.value),G}),Y=O(()=>{let n=d.value.map(m=>m.label).indexOf(L.value?h.value[f.value]:K(h.value)[f.value])+1;return d.value.length<=n&&(n=0),d.value[n]}),se=O(()=>[...d.value].slice(-1)[0]),A=O(()=>h.value.__VISIBLE__.filter(n=>!n.disabled)[0]),ve=O(()=>{const n=Z.value.__VISIBLE__.filter(m=>!m.disabled);return n[n.map(m=>m[i.value]).indexOf(h.value[i.value])-1]}),pe=O(()=>{const n=K(h.value).__VISIBLE__.filter(m=>!m.disabled);return n[n.map(m=>m[i.value]).indexOf(h.value[i.value])+1]}),S=O(()=>[...Q.value.__VISIBLE__.filter(n=>!n.disabled)].slice(-1)[0]),F=O(()=>[...se.value.__VISIBLE__.filter(n=>!n.disabled)].slice(-1)[0]),T=n=>{if(h.value)return n.group?h.value[f.value]==n[f.value]:h.value[i.value]==n[i.value]},$=()=>{r(k.value[0]||null)},_=()=>{!h.value||h.value.disabled===!0||(L.value?V(h.value):B(h.value))},fe=()=>{if(h.value===null)r((g.value&&R.value?d.value[0]:k.value[0])||null);else if(g.value&&R.value){let n=L.value?A.value:pe.value;n===void 0&&(n=Y.value),r(n||null)}else{let n=k.value.map(m=>m[i.value]).indexOf(h.value[i.value])+1;k.value.length<=n&&(n=0),r(k.value[n]||null)}Ie(()=>{ae()})},ue=()=>{if(h.value===null){let n=k.value[k.value.length-1];g.value&&R.value&&(n=F.value,n===void 0&&(n=se.value)),r(n||null)}else if(g.value&&R.value){let n=L.value?S.value:ve.value;n===void 0&&(n=L.value?Q.value:Z.value),r(n||null)}else{let n=k.value.map(m=>m[i.value]).indexOf(h.value[i.value])-1;n<0&&(n=k.value.length-1),r(k.value[n]||null)}Ie(()=>{ae()})},K=n=>d.value.find(m=>m.__VISIBLE__.map(G=>G[i.value]).indexOf(n[i.value])!==-1),ae=()=>{let n=X.value.querySelector("[data-pointed]");if(!n)return;let m=n.parentElement.parentElement;g.value&&(m=L.value?n.parentElement.parentElement.parentElement:n.parentElement.parentElement.parentElement.parentElement),n.offsetTop+n.offsetHeight>m.clientHeight+m.scrollTop&&(m.scrollTop=n.offsetTop+n.offsetHeight-m.clientHeight),n.offsetTop{v.value&&(n.length&&o.value?$():j())}),{pointer:h,canPointGroups:R,isPointed:T,setPointerFirst:$,selectPointer:_,forwardPointer:fe,backwardPointer:ue}}function nl(e,u,a){const{disabled:i}=x(e),o=M(!1);return{isOpen:o,open:()=>{o.value||i.value||(o.value=!0,u.emit("open"))},close:()=>{o.value&&(o.value=!1,u.emit("close"))}}}function rl(e,u,a){const{searchable:i,disabled:o}=x(e),v=a.input,f=a.open,g=a.close,t=a.clearSearch,c=M(null),p=M(!1),b=O(()=>i.value||o.value?-1:0),B=()=>{i.value&&v.value.blur(),c.value.blur()},V=()=>{i.value&&!o.value&&v.value.focus()},D=()=>{o.value||(p.value=!0,f())},h=()=>{p.value=!1,setTimeout(()=>{p.value||(g(),t())},1)};return{multiselect:c,tabindex:b,isActive:p,blur:B,handleFocus:V,activate:D,deactivate:h,handleCaretClick:()=>{p.value?(h(),B()):D()}}}function sl(e,u,a){const{mode:i,addTagOn:o,createTag:v,openDirection:f,searchable:g,showOptions:t,valueProp:c,groups:p}=x(e),b=a.iv,B=a.update,V=a.search,D=a.setPointer,h=a.selectPointer,r=a.backwardPointer,j=a.forwardPointer,X=a.blur,k=a.fo,d=()=>{i.value==="tags"&&!t.value&&v.value&&g.value&&!p.value&&D(k.value[k.value.map(L=>L[c.value]).indexOf(V.value)])};return{handleKeydown:L=>{switch(L.keyCode){case 8:if(i.value==="single"||g.value&&[null,""].indexOf(V.value)===-1||b.value.length===0)return;B([...b.value].slice(0,-1));break;case 13:if(L.preventDefault(),i.value==="tags"&&o.value.indexOf("enter")===-1&&v.value)return;d(),h();break;case 32:if(g.value&&i.value!=="tags"&&!v.value||i.value==="tags"&&(o.value.indexOf("space")===-1&&v.value||!v.value))return;L.preventDefault(),d(),h();break;case 9:case 186:case 188:if(i.value!=="tags")return;const Z={9:"tab",186:";",188:","};if(o.value.indexOf(Z[L.keyCode])===-1||!v.value)return;d(),h(),L.preventDefault();break;case 27:X();break;case 38:if(L.preventDefault(),!t.value)return;f.value==="top"?j():r();break;case 40:if(L.preventDefault(),!t.value)return;f.value==="top"?r():j();break}},preparePointer:d}}function ul(e,u,a){const i=x(e),{disabled:o,openDirection:v,showOptions:f,invalid:g}=i,t=a.isOpen,c=a.isPointed,p=a.isSelected,b=a.isDisabled,B=a.isActive,V=a.canPointGroups,D=a.resolving,h=a.fo,r={container:"multiselect",containerDisabled:"is-disabled",containerOpen:"is-open",containerOpenTop:"is-open-top",containerActive:"is-active",containerInvalid:"is-invalid",containerInvalidActive:"is-invalid-active",singleLabel:"multiselect-single-label",multipleLabel:"multiselect-multiple-label",search:"multiselect-search",tags:"multiselect-tags",tag:"multiselect-tag",tagDisabled:"is-disabled",tagRemove:"multiselect-tag-remove",tagRemoveIcon:"multiselect-tag-remove-icon",tagsSearchWrapper:"multiselect-tags-search-wrapper",tagsSearch:"multiselect-tags-search",tagsSearchCopy:"multiselect-tags-search-copy",placeholder:"multiselect-placeholder",caret:"multiselect-caret",caretOpen:"is-open",clear:"multiselect-clear",clearIcon:"multiselect-clear-icon",spinner:"multiselect-spinner",dropdown:"multiselect-dropdown",dropdownTop:"is-top",dropdownHidden:"is-hidden",options:"multiselect-options",optionsTop:"is-top",group:"multiselect-group",groupLabel:"multiselect-group-label",groupLabelPointable:"is-pointable",groupLabelPointed:"is-pointed",groupLabelSelected:"is-selected",groupLabelDisabled:"is-disabled",groupLabelSelectedPointed:"is-selected is-pointed",groupLabelSelectedDisabled:"is-selected is-disabled",groupOptions:"multiselect-group-options",option:"multiselect-option",optionPointed:"is-pointed",optionSelected:"is-selected",optionDisabled:"is-disabled",optionSelectedPointed:"is-selected is-pointed",optionSelectedDisabled:"is-selected is-disabled",noOptions:"multiselect-no-options",noResults:"multiselect-no-results",fakeInput:"multiselect-fake-input",spacer:"multiselect-spacer",...i.classes.value},j=O(()=>!!(t.value&&f.value&&(!D.value||D.value&&h.value.length)));return{classList:O(()=>({container:[r.container].concat(o.value?r.containerDisabled:[]).concat(j.value&&v.value==="top"?r.containerOpenTop:[]).concat(j.value&&v.value!=="top"?r.containerOpen:[]).concat(B.value?r.containerActive:[]).concat(g.value?r.containerInvalid:[]),spacer:r.spacer,singleLabel:r.singleLabel,multipleLabel:r.multipleLabel,search:r.search,tags:r.tags,tag:[r.tag].concat(o.value?r.tagDisabled:[]),tagRemove:r.tagRemove,tagRemoveIcon:r.tagRemoveIcon,tagsSearchWrapper:r.tagsSearchWrapper,tagsSearch:r.tagsSearch,tagsSearchCopy:r.tagsSearchCopy,placeholder:r.placeholder,caret:[r.caret].concat(t.value?r.caretOpen:[]),clear:r.clear,clearIcon:r.clearIcon,spinner:r.spinner,dropdown:[r.dropdown].concat(v.value==="top"?r.dropdownTop:[]).concat(!t.value||!f.value||!j.value?r.dropdownHidden:[]),options:[r.options].concat(v.value==="top"?r.optionsTop:[]),group:r.group,groupLabel:k=>{let d=[r.groupLabel];return c(k)?d.push(p(k)?r.groupLabelSelectedPointed:r.groupLabelPointed):p(k)&&V.value?d.push(b(k)?r.groupLabelSelectedDisabled:r.groupLabelSelected):b(k)&&d.push(r.groupLabelDisabled),V.value&&d.push(r.groupLabelPointable),d},groupOptions:r.groupOptions,option:(k,d)=>{let R=[r.option];return c(k)?R.push(p(k)?r.optionSelectedPointed:r.optionPointed):p(k)?R.push(b(k)?r.optionSelectedDisabled:r.optionSelected):(b(k)||d&&b(d))&&R.push(r.optionDisabled),R},noOptions:r.noOptions,noResults:r.noResults,fakeInput:r.fakeInput})),showDropdown:j}}const ol={name:"BaseMultiselect",props:{preserveSearch:{type:Boolean,default:!1},initialSearch:{type:String,default:null},contentLoading:{type:Boolean,default:!1},value:{required:!1},modelValue:{required:!1},options:{type:[Array,Object,Function],required:!1,default:()=>[]},id:{type:[String,Number],required:!1},name:{type:[String,Number],required:!1,default:"multiselect"},disabled:{type:Boolean,required:!1,default:!1},label:{type:String,required:!1,default:"label"},trackBy:{type:String,required:!1,default:"label"},valueProp:{type:String,required:!1,default:"value"},placeholder:{type:String,required:!1,default:null},mode:{type:String,required:!1,default:"single"},searchable:{type:Boolean,required:!1,default:!1},limit:{type:Number,required:!1,default:-1},hideSelected:{type:Boolean,required:!1,default:!0},createTag:{type:Boolean,required:!1,default:!1},appendNewTag:{type:Boolean,required:!1,default:!0},caret:{type:Boolean,required:!1,default:!0},loading:{type:Boolean,required:!1,default:!1},noOptionsText:{type:String,required:!1,default:"The list is empty"},noResultsText:{type:String,required:!1,default:"No results found"},multipleLabel:{type:Function,required:!1},object:{type:Boolean,required:!1,default:!1},delay:{type:Number,required:!1,default:-1},minChars:{type:Number,required:!1,default:0},resolveOnLoad:{type:Boolean,required:!1,default:!0},filterResults:{type:Boolean,required:!1,default:!0},clearOnSearch:{type:Boolean,required:!1,default:!1},clearOnSelect:{type:Boolean,required:!1,default:!0},canDeselect:{type:Boolean,required:!1,default:!0},canClear:{type:Boolean,required:!1,default:!1},max:{type:Number,required:!1,default:-1},showOptions:{type:Boolean,required:!1,default:!0},addTagOn:{type:Array,required:!1,default:()=>["enter"]},required:{type:Boolean,required:!1,default:!1},openDirection:{type:String,required:!1,default:"bottom"},nativeSupport:{type:Boolean,required:!1,default:!1},invalid:{type:Boolean,required:!1,default:!1},classes:{type:Object,required:!1,default:()=>({container:"p-0 relative mx-auto w-full flex items-center justify-end box-border cursor-pointer border border-gray-200 rounded-md bg-white text-sm leading-snug outline-none max-h-10",containerDisabled:"cursor-default bg-gray-200 bg-opacity-50 !text-gray-400",containerOpen:"",containerOpenTop:"",containerActive:"ring-1 ring-primary-400 border-primary-400",containerInvalid:"border-red-400 ring-red-400 focus:ring-red-400 focus:border-red-400",containerInvalidActive:"ring-1 border-red-400 ring-red-400",singleLabel:"flex items-center h-full absolute left-0 top-0 pointer-events-none bg-transparent leading-snug pl-3.5",multipleLabel:"flex items-center h-full absolute left-0 top-0 pointer-events-none bg-transparent leading-snug pl-3.5",search:"w-full absolute inset-0 outline-none appearance-none box-border border-0 text-sm font-sans bg-white rounded-md pl-3.5",tags:"grow shrink flex flex-wrap mt-1 pl-2",tag:"bg-primary-500 text-white text-sm font-semibold py-0.5 pl-2 rounded mr-1 mb-1 flex items-center whitespace-nowrap",tagDisabled:"pr-2 !bg-gray-400 text-white",tagRemove:"flex items-center justify-center p-1 mx-0.5 rounded-sm hover:bg-black hover:bg-opacity-10 group",tagRemoveIcon:"bg-multiselect-remove text-white bg-center bg-no-repeat opacity-30 inline-block w-3 h-3 group-hover:opacity-60",tagsSearchWrapper:"inline-block relative mx-1 mb-1 grow shrink h-full",tagsSearch:"absolute inset-0 border-0 focus:outline-none !shadow-none !focus:shadow-none appearance-none p-0 text-sm font-sans box-border w-full",tagsSearchCopy:"invisible whitespace-pre-wrap inline-block h-px",placeholder:"flex items-center h-full absolute left-0 top-0 pointer-events-none bg-transparent leading-snug pl-3.5 text-gray-400 text-sm",caret:"bg-multiselect-caret bg-center bg-no-repeat w-5 h-5 py-px box-content z-5 relative mr-1 opacity-40 shrink-0 grow-0 transition-transform",caretOpen:"rotate-180 pointer-events-auto",clear:"pr-3.5 relative z-10 opacity-40 transition duration-300 shrink-0 grow-0 flex hover:opacity-80",clearIcon:"bg-multiselect-remove bg-center bg-no-repeat w-2.5 h-4 py-px box-content inline-block",spinner:"bg-multiselect-spinner bg-center bg-no-repeat w-4 h-4 z-10 mr-3.5 animate-spin shrink-0 grow-0",dropdown:"max-h-60 shadow-lg absolute -left-px -right-px -bottom-1 translate-y-full border border-gray-300 mt-1 overflow-y-auto z-50 bg-white flex flex-col rounded-md",dropdownTop:"-translate-y-full -top-2 bottom-auto flex-col-reverse rounded-md",dropdownHidden:"hidden",options:"flex flex-col p-0 m-0 list-none",optionsTop:"flex-col-reverse",group:"p-0 m-0",groupLabel:"flex text-sm box-border items-center justify-start text-left py-1 px-3 font-semibold bg-gray-200 cursor-default leading-normal",groupLabelPointable:"cursor-pointer",groupLabelPointed:"bg-gray-300 text-gray-700",groupLabelSelected:"bg-primary-600 text-white",groupLabelDisabled:"bg-gray-100 text-gray-300 cursor-not-allowed",groupLabelSelectedPointed:"bg-primary-600 text-white opacity-90",groupLabelSelectedDisabled:"text-primary-100 bg-primary-600 bg-opacity-50 cursor-not-allowed",groupOptions:"p-0 m-0",option:"flex items-center justify-start box-border text-left cursor-pointer text-sm leading-snug py-2 px-3",optionPointed:"text-gray-800 bg-gray-100",optionSelected:"text-white bg-primary-500",optionDisabled:"text-gray-300 cursor-not-allowed",optionSelectedPointed:"text-white bg-primary-500 opacity-90",optionSelectedDisabled:"text-primary-100 bg-primary-500 bg-opacity-50 cursor-not-allowed",noOptions:"py-2 px-3 text-gray-600 bg-white",noResults:"py-2 px-3 text-gray-600 bg-white",fakeInput:"bg-transparent absolute left-0 right-0 -bottom-px w-full h-px border-0 p-0 appearance-none outline-none text-transparent",spacer:"h-9 py-px box-content"})},strict:{type:Boolean,required:!1,default:!0},closeOnSelect:{type:Boolean,required:!1,default:!0},autocomplete:{type:String,required:!1},groups:{type:Boolean,required:!1,default:!1},groupLabel:{type:String,required:!1,default:"label"},groupOptions:{type:String,required:!1,default:"options"},groupHideEmpty:{type:Boolean,required:!1,default:!1},groupSelect:{type:Boolean,required:!1,default:!0},inputType:{type:String,required:!1,default:"text"}},emits:["open","close","select","deselect","input","search-change","tag","update:modelValue","change","clear"],setup(e,u){const a=Ye(e,u),i=_e(e),o=nl(e,u),v=$e(e,u),f=Xe(e,u,{iv:a.iv}),g=rl(e,u,{input:v.input,open:o.open,close:o.close,clearSearch:v.clearSearch}),t=al(e,u,{ev:a.ev,iv:a.iv,search:v.search,clearSearch:v.clearSearch,update:f.update,pointer:i.pointer,clearPointer:i.clearPointer,blur:g.blur,deactivate:g.deactivate}),c=tl(e,u,{fo:t.fo,fg:t.fg,handleOptionClick:t.handleOptionClick,handleGroupClick:t.handleGroupClick,search:v.search,pointer:i.pointer,setPointer:i.setPointer,clearPointer:i.clearPointer,multiselect:g.multiselect}),p=sl(e,u,{iv:a.iv,update:f.update,search:v.search,setPointer:i.setPointer,selectPointer:c.selectPointer,backwardPointer:c.backwardPointer,forwardPointer:c.forwardPointer,blur:g.blur,fo:t.fo}),b=ul(e,u,{isOpen:o.isOpen,isPointed:c.isPointed,canPointGroups:c.canPointGroups,isSelected:t.isSelected,isDisabled:t.isDisabled,isActive:g.isActive,resolving:t.resolving,fo:t.fo});return{...a,...o,...g,...i,...f,...v,...t,...c,...p,...b}}},il=["id","tabindex"],cl=["type","modelValue","value","autocomplete"],dl=["onMousedown"],vl=["type","modelValue","value","autocomplete"],pl={class:"w-full overflow-y-auto"},fl=["data-pointed","onMouseenter","onClick"],gl=["data-pointed","onMouseenter","onClick"],bl=["data-pointed","onMouseenter","onClick"],hl=["innerHTML"],ml=["innerHTML"],yl=["value"],Sl=["name","value"],kl=["name","value"];function Ol(e,u,a,i,o,v){const f=qe("BaseContentPlaceholdersBox"),g=qe("BaseContentPlaceholders");return a.contentLoading?(I(),Je(g,{key:0},{default:Ze(()=>[Qe(f,{rounded:!0,class:"w-full",style:{height:"40px"}})]),_:1})):(I(),q("div",{key:1,id:a.id,ref:"multiselect",tabindex:e.tabindex,class:w(e.classList.container),onFocusin:u[6]||(u[6]=(...t)=>e.activate&&e.activate(...t)),onFocusout:u[7]||(u[7]=(...t)=>e.deactivate&&e.deactivate(...t)),onKeydown:u[8]||(u[8]=(...t)=>e.handleKeydown&&e.handleKeydown(...t)),onFocus:u[9]||(u[9]=(...t)=>e.handleFocus&&e.handleFocus(...t))},[a.mode!=="tags"&&a.searchable&&!a.disabled?(I(),q("input",{key:0,ref:"input",type:a.inputType,modelValue:e.search,value:e.search,class:w(e.classList.search),autocomplete:a.autocomplete,onInput:u[0]||(u[0]=(...t)=>e.handleSearchInput&&e.handleSearchInput(...t)),onPaste:u[1]||(u[1]=de((...t)=>e.handlePaste&&e.handlePaste(...t),["stop"]))},null,42,cl)):E("",!0),a.mode=="tags"?(I(),q("div",{key:1,class:w(e.classList.tags)},[(I(!0),q(le,null,ne(e.iv,(t,c,p)=>C(e.$slots,"tag",{option:t,handleTagRemove:e.handleTagRemove,disabled:a.disabled},()=>[(I(),q("span",{key:p,class:w(e.classList.tag)},[Ue(J(t[a.label])+" ",1),a.disabled?E("",!0):(I(),q("span",{key:0,class:w(e.classList.tagRemove),onMousedown:de(b=>e.handleTagRemove(t,b),["stop"])},[P("span",{class:w(e.classList.tagRemoveIcon)},null,2)],42,dl))],2))])),256)),P("div",{class:w(e.classList.tagsSearchWrapper)},[P("span",{class:w(e.classList.tagsSearchCopy)},J(e.search),3),a.searchable&&!a.disabled?(I(),q("input",{key:0,ref:"input",type:a.inputType,modelValue:e.search,value:e.search,class:w(e.classList.tagsSearch),autocomplete:a.autocomplete,style:{"box-shadow":"none !important"},onInput:u[2]||(u[2]=(...t)=>e.handleSearchInput&&e.handleSearchInput(...t)),onPaste:u[3]||(u[3]=de((...t)=>e.handlePaste&&e.handlePaste(...t),["stop"]))},null,42,vl)):E("",!0)],2)],2)):E("",!0),a.mode=="single"&&e.hasSelected&&!e.search&&e.iv?C(e.$slots,"singlelabel",{key:2,value:e.iv},()=>[P("div",{class:w(e.classList.singleLabel)},J(e.iv[a.label]),3)]):E("",!0),a.mode=="multiple"&&e.hasSelected&&!e.search?C(e.$slots,"multiplelabel",{key:3,values:e.iv},()=>[P("div",{class:w(e.classList.multipleLabel)},J(e.multipleLabelText),3)]):E("",!0),a.placeholder&&!e.hasSelected&&!e.search?C(e.$slots,"placeholder",{key:4},()=>[P("div",{class:w(e.classList.placeholder)},J(a.placeholder),3)]):E("",!0),e.busy?C(e.$slots,"spinner",{key:5},()=>[P("span",{class:w(e.classList.spinner)},null,2)]):E("",!0),e.hasSelected&&!a.disabled&&a.canClear&&!e.busy?C(e.$slots,"clear",{key:6,clear:e.clear},()=>[P("span",{class:w(e.classList.clear),onMousedown:u[4]||(u[4]=(...t)=>e.clear&&e.clear(...t))},[P("span",{class:w(e.classList.clearIcon)},null,2)],34)]):E("",!0),a.caret?C(e.$slots,"caret",{key:7},()=>[P("span",{class:w(e.classList.caret),onMousedown:u[5]||(u[5]=de((...t)=>e.handleCaretClick&&e.handleCaretClick(...t),["prevent","stop"]))},null,34)]):E("",!0),P("div",{class:w(e.classList.dropdown),tabindex:"-1"},[P("div",pl,[C(e.$slots,"beforelist",{options:e.fo}),P("ul",{class:w(e.classList.options)},[a.groups?(I(!0),q(le,{key:0},ne(e.fg,(t,c,p)=>(I(),q("li",{key:p,class:w(e.classList.group)},[P("div",{class:w(e.classList.groupLabel(t)),"data-pointed":e.isPointed(t),onMouseenter:b=>e.setPointer(t),onClick:b=>e.handleGroupClick(t)},[C(e.$slots,"grouplabel",{group:t},()=>[P("span",null,J(t[a.groupLabel]),1)])],42,fl),P("ul",{class:w(e.classList.groupOptions)},[(I(!0),q(le,null,ne(t.__VISIBLE__,(b,B,V)=>(I(),q("li",{key:V,class:w(e.classList.option(b,t)),"data-pointed":e.isPointed(b),onMouseenter:D=>e.setPointer(b),onClick:D=>e.handleOptionClick(b)},[C(e.$slots,"option",{option:b,search:e.search},()=>[P("span",null,J(b[a.label]),1)])],42,gl))),128))],2)],2))),128)):(I(!0),q(le,{key:1},ne(e.fo,(t,c,p)=>(I(),q("li",{key:p,class:w(e.classList.option(t)),"data-pointed":e.isPointed(t),onMouseenter:b=>e.setPointer(t),onClick:b=>e.handleOptionClick(t)},[C(e.$slots,"option",{option:t,search:e.search},()=>[P("span",null,J(t[a.label]),1)])],42,bl))),128))],2),e.noOptions?C(e.$slots,"nooptions",{key:0},()=>[P("div",{class:w(e.classList.noOptions),innerHTML:a.noOptionsText},null,10,hl)]):E("",!0),e.noResults?C(e.$slots,"noresults",{key:1},()=>[P("div",{class:w(e.classList.noResults),innerHTML:a.noResultsText},null,10,ml)]):E("",!0),C(e.$slots,"afterlist",{options:e.fo})]),C(e.$slots,"action")],2),a.required?(I(),q("input",{key:8,class:w(e.classList.fakeInput),tabindex:"-1",value:e.textValue,required:""},null,10,yl)):E("",!0),a.nativeSupport?(I(),q(le,{key:9},[a.mode=="single"?(I(),q("input",{key:0,type:"hidden",name:a.name,value:e.plainValue!==void 0?e.plainValue:""},null,8,Sl)):(I(!0),q(le,{key:1},ne(e.plainValue,(t,c)=>(I(),q("input",{key:c,type:"hidden",name:`${a.name}[]`,value:t},null,8,kl))),128))],64)):E("",!0),P("div",{class:w(e.classList.spacer)},null,2)],42,il))}const Ll=We(ol,[["render",Ol]]);export{Ll as default}; +import{bn as x,f as M,k as O,z as re,bo as Ie,Z as We,r as qe,o as I,m as Je,w as Ze,a as Qe,c as q,J as w,q as de,K as E,N as le,O as ne,a2 as C,p as Ue,t as J,b as P}from"./main-pPEsZPea.js";function H(e){return[null,void 0,!1].indexOf(e)!==-1}function Xe(e,u,a){const{object:i,valueProp:o,mode:v}=x(e),f=a.iv,g=p=>{f.value=c(p);const b=t(p);u.emit("change",b),u.emit("input",b),u.emit("update:modelValue",b)},t=p=>i.value||H(p)?p:Array.isArray(p)?p.map(b=>b[o.value]):p[o.value],c=p=>H(p)?v.value==="single"?{}:[]:p;return{update:g}}function Ye(e,u){const{value:a,modelValue:i,mode:o,valueProp:v}=x(e),f=M(o.value!=="single"?[]:{}),g=u.expose!==void 0?i:a,t=O(()=>o.value==="single"?f.value[v.value]:f.value.map(p=>p[v.value])),c=O(()=>o.value!=="single"?f.value.map(p=>p[v.value]).join(","):f.value[v.value]);return{iv:f,internalValue:f,ev:g,externalValue:g,textValue:c,plainValue:t}}function $e(e,u,a){const{preserveSearch:i}=x(e),o=M(e.initialSearch)||M(null),v=M(null),f=()=>{i.value||(o.value="")},g=c=>{o.value=c.target.value},t=c=>{u.emit("paste",c)};return re(o,c=>{u.emit("search-change",c)}),{search:o,input:v,clearSearch:f,handleSearchInput:g,handlePaste:t}}function _e(e,u,a){const{groupSelect:i,mode:o,groups:v}=x(e),f=M(null),g=c=>{c===void 0||c!==null&&c.disabled||v.value&&c&&c.group&&(o.value==="single"||!i.value)||(f.value=c)};return{pointer:f,setPointer:g,clearPointer:()=>{g(null)}}}function Be(e,u=!0){return u?String(e).toLowerCase().trim():String(e).normalize("NFD").replace(new RegExp("\\p{Diacritic}","gu"),"").toLowerCase().trim()}function el(e){return Object.prototype.toString.call(e)==="[object Object]"}function ll(e,u){const a=u.slice().sort();return e.length===u.length&&e.slice().sort().every(function(i,o){return i===a[o]})}function al(e,u,a){const{options:i,mode:o,trackBy:v,limit:f,hideSelected:g,createTag:t,label:c,appendNewTag:p,multipleLabel:b,object:B,loading:V,delay:D,resolveOnLoad:h,minChars:r,filterResults:j,clearOnSearch:X,clearOnSelect:k,valueProp:d,canDeselect:R,max:L,strict:Z,closeOnSelect:Q,groups:Y,groupLabel:se,groupOptions:A,groupHideEmpty:ve,groupSelect:pe}=x(e),S=a.iv,F=a.ev,T=a.search,$=a.clearSearch,_=a.update,fe=a.pointer,ue=a.clearPointer,K=a.blur,ae=a.deactivate,n=M([]),m=M([]),G=M(!1),N=O(()=>{if(Y.value){let l=m.value||[],s=[];return l.forEach(y=>{Se(y[A.value]).forEach(W=>{s.push(Object.assign({},W,y.disabled?{disabled:!0}:{}))})}),s}else{let l=Se(m.value||[]);return n.value.length&&(l=l.concat(n.value)),l}}),Oe=O(()=>Y.value?Fe((m.value||[]).map(l=>{const s=Se(l[A.value]);return{...l,group:!0,[A.value]:ye(s,!1).map(y=>Object.assign({},y,l.disabled?{disabled:!0}:{})),__VISIBLE__:ye(s).map(y=>Object.assign({},y,l.disabled?{disabled:!0}:{}))}})):[]),oe=O(()=>{let l=N.value;return be.value.length&&(l=be.value.concat(l)),l=ye(l),f.value>0&&(l=l.slice(0,f.value)),l}),ge=O(()=>{switch(o.value){case"single":return!H(S.value[d.value]);case"multiple":case"tags":return!H(S.value)&&S.value.length>0}}),Te=O(()=>b!==void 0&&b.value!==void 0?b.value(S.value):S.value&&S.value.length>1?`${S.value.length} options selected`:"1 option selected"),Ce=O(()=>!N.value.length&&!G.value&&!be.value.length),De=O(()=>N.value.length>0&&oe.value.length==0&&(T.value&&Y.value||!Y.value)),be=O(()=>t.value===!1||!T.value?[]:Ne(T.value)!==-1?[]:[{[d.value]:T.value,[c.value]:T.value,[v.value]:T.value}]),Ee=O(()=>{switch(o.value){case"single":return null;case"multiple":case"tags":return[]}}),Ve=O(()=>V.value||G.value),te=l=>{switch(typeof l!="object"&&(l=z(l)),o.value){case"single":_(l);break;case"multiple":case"tags":_(S.value.concat(l));break}u.emit("select",we(l),l)},ee=l=>{switch(typeof l!="object"&&(l=z(l)),o.value){case"single":Pe();break;case"tags":case"multiple":_(Array.isArray(l)?S.value.filter(s=>l.map(y=>y[d.value]).indexOf(s[d.value])===-1):S.value.filter(s=>s[d.value]!=l[d.value]));break}u.emit("deselect",we(l),l)},we=l=>B.value?l:l[d.value],Le=l=>{ee(l)},Re=(l,s)=>{if(s.button!==0){s.preventDefault();return}Le(l)},Pe=()=>{u.emit("clear"),_(Ee.value)},U=l=>{if(l.group!==void 0)return o.value==="single"?!1:Me(l[A.value])&&l[A.value].length;switch(o.value){case"single":return!H(S.value)&&S.value[d.value]==l[d.value];case"tags":case"multiple":return!H(S.value)&&S.value.map(s=>s[d.value]).indexOf(l[d.value])!==-1}},he=l=>l.disabled===!0,me=()=>L===void 0||L.value===-1||!ge.value&&L.value>0?!1:S.value.length>=L.value,Ge=l=>{if(!he(l)){switch(o.value){case"single":if(U(l)){R.value&&ee(l);return}K(),te(l);break;case"multiple":if(U(l)){ee(l);return}if(me())return;te(l),k.value&&$(),g.value&&ue(),Q.value&&K();break;case"tags":if(U(l)){ee(l);return}if(me())return;z(l[d.value])===void 0&&t.value&&(u.emit("tag",l[d.value]),p.value&&xe(l),$()),k.value&&$(),te(l),g.value&&ue(),Q.value&&K();break}Q.value&&ae()}},je=l=>{if(!(he(l)||o.value==="single"||!pe.value)){switch(o.value){case"multiple":case"tags":Ae(l[A.value])?ee(l[A.value]):te(l[A.value].filter(s=>S.value.map(y=>y[d.value]).indexOf(s[d.value])===-1).filter(s=>!s.disabled).filter((s,y)=>S.value.length+1+y<=L.value||L.value===-1));break}Q.value&&ae()}},Ae=l=>l.find(s=>!U(s)&&!s.disabled)===void 0,Me=l=>l.find(s=>!U(s))===void 0,z=l=>N.value[N.value.map(s=>String(s[d.value])).indexOf(String(l))],Ne=(l,s=!0)=>N.value.map(y=>y[v.value]).indexOf(l),He=l=>["tags","multiple"].indexOf(o.value)!==-1&&g.value&&U(l),xe=l=>{n.value.push(l)},Fe=l=>ve.value?l.filter(s=>T.value?s.__VISIBLE__.length:s[A.value].length):l.filter(s=>T.value?s.__VISIBLE__.length:!0),ye=(l,s=!0)=>{let y=l;return T.value&&j.value&&(y=y.filter(W=>Be(W[v.value],Z.value).indexOf(Be(T.value,Z.value))!==-1)),g.value&&s&&(y=y.filter(W=>!He(W))),y},Se=l=>{let s=l;return el(s)&&(s=Object.keys(s).map(y=>{let W=s[y];return{[d.value]:y,[v.value]:W,[c.value]:W}})),s=s.map(y=>typeof y=="object"?y:{[d.value]:y,[v.value]:y,[c.value]:y}),s},ie=()=>{H(F.value)||(S.value=ce(F.value))},ke=l=>{G.value=!0,i.value(T.value).then(s=>{m.value=s,typeof l=="function"&&l(s),G.value=!1})},ze=()=>{if(ge.value)if(o.value==="single"){let l=z(S.value[d.value])[c.value];S.value[c.value]=l,B.value&&(F.value[c.value]=l)}else S.value.forEach((l,s)=>{let y=z(S.value[s][d.value])[c.value];S.value[s][c.value]=y,B.value&&(F.value[s][c.value]=y)})},Ke=l=>{ke(l)},ce=l=>H(l)?o.value==="single"?{}:[]:B.value?l:o.value==="single"?z(l)||{}:l.filter(s=>!!z(s)).map(s=>z(s));if(o.value!=="single"&&!H(F.value)&&!Array.isArray(F.value))throw new Error(`v-model must be an array when using "${o.value}" mode`);return i&&typeof i.value=="function"?h.value?ke(ie):B.value==!0&&ie():(m.value=i.value,ie()),D.value>-1&&re(T,l=>{l.length{l==T.value&&i.value(T.value).then(s=>{l==T.value&&(m.value=s,fe.value=oe.value.filter(y=>y.disabled!==!0)[0]||null,G.value=!1)})},D.value))},{flush:"sync"}),re(F,l=>{if(H(l)){S.value=ce(l);return}switch(o.value){case"single":(B.value?l[d.value]!=S.value[d.value]:l!=S.value[d.value])&&(S.value=ce(l));break;case"multiple":case"tags":ll(B.value?l.map(s=>s[d.value]):l,S.value.map(s=>s[d.value]))||(S.value=ce(l));break}},{deep:!0}),typeof e.options!="function"&&re(i,(l,s)=>{m.value=e.options,Object.keys(S.value).length||ie(),ze()}),{fo:oe,filteredOptions:oe,hasSelected:ge,multipleLabelText:Te,eo:N,extendedOptions:N,fg:Oe,filteredGroups:Oe,noOptions:Ce,noResults:De,resolving:G,busy:Ve,select:te,deselect:ee,remove:Le,clear:Pe,isSelected:U,isDisabled:he,isMax:me,getOption:z,handleOptionClick:Ge,handleGroupClick:je,handleTagRemove:Re,refreshOptions:Ke,resolveOptions:ke}}function tl(e,u,a){const{valueProp:i,showOptions:o,searchable:v,groupLabel:f,groups:g,mode:t,groupSelect:c}=x(e),p=a.fo,b=a.fg,B=a.handleOptionClick,V=a.handleGroupClick,D=a.search,h=a.pointer,r=a.setPointer,j=a.clearPointer,X=a.multiselect,k=O(()=>p.value.filter(n=>!n.disabled)),d=O(()=>b.value.filter(n=>!n.disabled)),R=O(()=>t.value!=="single"&&c.value),L=O(()=>h.value&&h.value.group),Z=O(()=>K(h.value)),Q=O(()=>{const n=L.value?h.value:K(h.value),m=d.value.map(N=>N[f.value]).indexOf(n[f.value]);let G=d.value[m-1];return G===void 0&&(G=se.value),G}),Y=O(()=>{let n=d.value.map(m=>m.label).indexOf(L.value?h.value[f.value]:K(h.value)[f.value])+1;return d.value.length<=n&&(n=0),d.value[n]}),se=O(()=>[...d.value].slice(-1)[0]),A=O(()=>h.value.__VISIBLE__.filter(n=>!n.disabled)[0]),ve=O(()=>{const n=Z.value.__VISIBLE__.filter(m=>!m.disabled);return n[n.map(m=>m[i.value]).indexOf(h.value[i.value])-1]}),pe=O(()=>{const n=K(h.value).__VISIBLE__.filter(m=>!m.disabled);return n[n.map(m=>m[i.value]).indexOf(h.value[i.value])+1]}),S=O(()=>[...Q.value.__VISIBLE__.filter(n=>!n.disabled)].slice(-1)[0]),F=O(()=>[...se.value.__VISIBLE__.filter(n=>!n.disabled)].slice(-1)[0]),T=n=>{if(h.value)return n.group?h.value[f.value]==n[f.value]:h.value[i.value]==n[i.value]},$=()=>{r(k.value[0]||null)},_=()=>{!h.value||h.value.disabled===!0||(L.value?V(h.value):B(h.value))},fe=()=>{if(h.value===null)r((g.value&&R.value?d.value[0]:k.value[0])||null);else if(g.value&&R.value){let n=L.value?A.value:pe.value;n===void 0&&(n=Y.value),r(n||null)}else{let n=k.value.map(m=>m[i.value]).indexOf(h.value[i.value])+1;k.value.length<=n&&(n=0),r(k.value[n]||null)}Ie(()=>{ae()})},ue=()=>{if(h.value===null){let n=k.value[k.value.length-1];g.value&&R.value&&(n=F.value,n===void 0&&(n=se.value)),r(n||null)}else if(g.value&&R.value){let n=L.value?S.value:ve.value;n===void 0&&(n=L.value?Q.value:Z.value),r(n||null)}else{let n=k.value.map(m=>m[i.value]).indexOf(h.value[i.value])-1;n<0&&(n=k.value.length-1),r(k.value[n]||null)}Ie(()=>{ae()})},K=n=>d.value.find(m=>m.__VISIBLE__.map(G=>G[i.value]).indexOf(n[i.value])!==-1),ae=()=>{let n=X.value.querySelector("[data-pointed]");if(!n)return;let m=n.parentElement.parentElement;g.value&&(m=L.value?n.parentElement.parentElement.parentElement:n.parentElement.parentElement.parentElement.parentElement),n.offsetTop+n.offsetHeight>m.clientHeight+m.scrollTop&&(m.scrollTop=n.offsetTop+n.offsetHeight-m.clientHeight),n.offsetTop{v.value&&(n.length&&o.value?$():j())}),{pointer:h,canPointGroups:R,isPointed:T,setPointerFirst:$,selectPointer:_,forwardPointer:fe,backwardPointer:ue}}function nl(e,u,a){const{disabled:i}=x(e),o=M(!1);return{isOpen:o,open:()=>{o.value||i.value||(o.value=!0,u.emit("open"))},close:()=>{o.value&&(o.value=!1,u.emit("close"))}}}function rl(e,u,a){const{searchable:i,disabled:o}=x(e),v=a.input,f=a.open,g=a.close,t=a.clearSearch,c=M(null),p=M(!1),b=O(()=>i.value||o.value?-1:0),B=()=>{i.value&&v.value.blur(),c.value.blur()},V=()=>{i.value&&!o.value&&v.value.focus()},D=()=>{o.value||(p.value=!0,f())},h=()=>{p.value=!1,setTimeout(()=>{p.value||(g(),t())},1)};return{multiselect:c,tabindex:b,isActive:p,blur:B,handleFocus:V,activate:D,deactivate:h,handleCaretClick:()=>{p.value?(h(),B()):D()}}}function sl(e,u,a){const{mode:i,addTagOn:o,createTag:v,openDirection:f,searchable:g,showOptions:t,valueProp:c,groups:p}=x(e),b=a.iv,B=a.update,V=a.search,D=a.setPointer,h=a.selectPointer,r=a.backwardPointer,j=a.forwardPointer,X=a.blur,k=a.fo,d=()=>{i.value==="tags"&&!t.value&&v.value&&g.value&&!p.value&&D(k.value[k.value.map(L=>L[c.value]).indexOf(V.value)])};return{handleKeydown:L=>{switch(L.keyCode){case 8:if(i.value==="single"||g.value&&[null,""].indexOf(V.value)===-1||b.value.length===0)return;B([...b.value].slice(0,-1));break;case 13:if(L.preventDefault(),i.value==="tags"&&o.value.indexOf("enter")===-1&&v.value)return;d(),h();break;case 32:if(g.value&&i.value!=="tags"&&!v.value||i.value==="tags"&&(o.value.indexOf("space")===-1&&v.value||!v.value))return;L.preventDefault(),d(),h();break;case 9:case 186:case 188:if(i.value!=="tags")return;const Z={9:"tab",186:";",188:","};if(o.value.indexOf(Z[L.keyCode])===-1||!v.value)return;d(),h(),L.preventDefault();break;case 27:X();break;case 38:if(L.preventDefault(),!t.value)return;f.value==="top"?j():r();break;case 40:if(L.preventDefault(),!t.value)return;f.value==="top"?r():j();break}},preparePointer:d}}function ul(e,u,a){const i=x(e),{disabled:o,openDirection:v,showOptions:f,invalid:g}=i,t=a.isOpen,c=a.isPointed,p=a.isSelected,b=a.isDisabled,B=a.isActive,V=a.canPointGroups,D=a.resolving,h=a.fo,r={container:"multiselect",containerDisabled:"is-disabled",containerOpen:"is-open",containerOpenTop:"is-open-top",containerActive:"is-active",containerInvalid:"is-invalid",containerInvalidActive:"is-invalid-active",singleLabel:"multiselect-single-label",multipleLabel:"multiselect-multiple-label",search:"multiselect-search",tags:"multiselect-tags",tag:"multiselect-tag",tagDisabled:"is-disabled",tagRemove:"multiselect-tag-remove",tagRemoveIcon:"multiselect-tag-remove-icon",tagsSearchWrapper:"multiselect-tags-search-wrapper",tagsSearch:"multiselect-tags-search",tagsSearchCopy:"multiselect-tags-search-copy",placeholder:"multiselect-placeholder",caret:"multiselect-caret",caretOpen:"is-open",clear:"multiselect-clear",clearIcon:"multiselect-clear-icon",spinner:"multiselect-spinner",dropdown:"multiselect-dropdown",dropdownTop:"is-top",dropdownHidden:"is-hidden",options:"multiselect-options",optionsTop:"is-top",group:"multiselect-group",groupLabel:"multiselect-group-label",groupLabelPointable:"is-pointable",groupLabelPointed:"is-pointed",groupLabelSelected:"is-selected",groupLabelDisabled:"is-disabled",groupLabelSelectedPointed:"is-selected is-pointed",groupLabelSelectedDisabled:"is-selected is-disabled",groupOptions:"multiselect-group-options",option:"multiselect-option",optionPointed:"is-pointed",optionSelected:"is-selected",optionDisabled:"is-disabled",optionSelectedPointed:"is-selected is-pointed",optionSelectedDisabled:"is-selected is-disabled",noOptions:"multiselect-no-options",noResults:"multiselect-no-results",fakeInput:"multiselect-fake-input",spacer:"multiselect-spacer",...i.classes.value},j=O(()=>!!(t.value&&f.value&&(!D.value||D.value&&h.value.length)));return{classList:O(()=>({container:[r.container].concat(o.value?r.containerDisabled:[]).concat(j.value&&v.value==="top"?r.containerOpenTop:[]).concat(j.value&&v.value!=="top"?r.containerOpen:[]).concat(B.value?r.containerActive:[]).concat(g.value?r.containerInvalid:[]),spacer:r.spacer,singleLabel:r.singleLabel,multipleLabel:r.multipleLabel,search:r.search,tags:r.tags,tag:[r.tag].concat(o.value?r.tagDisabled:[]),tagRemove:r.tagRemove,tagRemoveIcon:r.tagRemoveIcon,tagsSearchWrapper:r.tagsSearchWrapper,tagsSearch:r.tagsSearch,tagsSearchCopy:r.tagsSearchCopy,placeholder:r.placeholder,caret:[r.caret].concat(t.value?r.caretOpen:[]),clear:r.clear,clearIcon:r.clearIcon,spinner:r.spinner,dropdown:[r.dropdown].concat(v.value==="top"?r.dropdownTop:[]).concat(!t.value||!f.value||!j.value?r.dropdownHidden:[]),options:[r.options].concat(v.value==="top"?r.optionsTop:[]),group:r.group,groupLabel:k=>{let d=[r.groupLabel];return c(k)?d.push(p(k)?r.groupLabelSelectedPointed:r.groupLabelPointed):p(k)&&V.value?d.push(b(k)?r.groupLabelSelectedDisabled:r.groupLabelSelected):b(k)&&d.push(r.groupLabelDisabled),V.value&&d.push(r.groupLabelPointable),d},groupOptions:r.groupOptions,option:(k,d)=>{let R=[r.option];return c(k)?R.push(p(k)?r.optionSelectedPointed:r.optionPointed):p(k)?R.push(b(k)?r.optionSelectedDisabled:r.optionSelected):(b(k)||d&&b(d))&&R.push(r.optionDisabled),R},noOptions:r.noOptions,noResults:r.noResults,fakeInput:r.fakeInput})),showDropdown:j}}const ol={name:"BaseMultiselect",props:{preserveSearch:{type:Boolean,default:!1},initialSearch:{type:String,default:null},contentLoading:{type:Boolean,default:!1},value:{required:!1},modelValue:{required:!1},options:{type:[Array,Object,Function],required:!1,default:()=>[]},id:{type:[String,Number],required:!1},name:{type:[String,Number],required:!1,default:"multiselect"},disabled:{type:Boolean,required:!1,default:!1},label:{type:String,required:!1,default:"label"},trackBy:{type:String,required:!1,default:"label"},valueProp:{type:String,required:!1,default:"value"},placeholder:{type:String,required:!1,default:null},mode:{type:String,required:!1,default:"single"},searchable:{type:Boolean,required:!1,default:!1},limit:{type:Number,required:!1,default:-1},hideSelected:{type:Boolean,required:!1,default:!0},createTag:{type:Boolean,required:!1,default:!1},appendNewTag:{type:Boolean,required:!1,default:!0},caret:{type:Boolean,required:!1,default:!0},loading:{type:Boolean,required:!1,default:!1},noOptionsText:{type:String,required:!1,default:"The list is empty"},noResultsText:{type:String,required:!1,default:"No results found"},multipleLabel:{type:Function,required:!1},object:{type:Boolean,required:!1,default:!1},delay:{type:Number,required:!1,default:-1},minChars:{type:Number,required:!1,default:0},resolveOnLoad:{type:Boolean,required:!1,default:!0},filterResults:{type:Boolean,required:!1,default:!0},clearOnSearch:{type:Boolean,required:!1,default:!1},clearOnSelect:{type:Boolean,required:!1,default:!0},canDeselect:{type:Boolean,required:!1,default:!0},canClear:{type:Boolean,required:!1,default:!1},max:{type:Number,required:!1,default:-1},showOptions:{type:Boolean,required:!1,default:!0},addTagOn:{type:Array,required:!1,default:()=>["enter"]},required:{type:Boolean,required:!1,default:!1},openDirection:{type:String,required:!1,default:"bottom"},nativeSupport:{type:Boolean,required:!1,default:!1},invalid:{type:Boolean,required:!1,default:!1},classes:{type:Object,required:!1,default:()=>({container:"p-0 relative mx-auto w-full flex items-center justify-end box-border cursor-pointer border border-gray-200 rounded-md bg-white text-sm leading-snug outline-none max-h-10",containerDisabled:"cursor-default bg-gray-200 bg-opacity-50 !text-gray-400",containerOpen:"",containerOpenTop:"",containerActive:"ring-1 ring-primary-400 border-primary-400",containerInvalid:"border-red-400 ring-red-400 focus:ring-red-400 focus:border-red-400",containerInvalidActive:"ring-1 border-red-400 ring-red-400",singleLabel:"flex items-center h-full absolute left-0 top-0 pointer-events-none bg-transparent leading-snug pl-3.5",multipleLabel:"flex items-center h-full absolute left-0 top-0 pointer-events-none bg-transparent leading-snug pl-3.5",search:"w-full absolute inset-0 outline-none appearance-none box-border border-0 text-sm font-sans bg-white rounded-md pl-3.5",tags:"grow shrink flex flex-wrap mt-1 pl-2",tag:"bg-primary-500 text-white text-sm font-semibold py-0.5 pl-2 rounded mr-1 mb-1 flex items-center whitespace-nowrap",tagDisabled:"pr-2 !bg-gray-400 text-white",tagRemove:"flex items-center justify-center p-1 mx-0.5 rounded-sm hover:bg-black hover:bg-opacity-10 group",tagRemoveIcon:"bg-multiselect-remove text-white bg-center bg-no-repeat opacity-30 inline-block w-3 h-3 group-hover:opacity-60",tagsSearchWrapper:"inline-block relative mx-1 mb-1 grow shrink h-full",tagsSearch:"absolute inset-0 border-0 focus:outline-none !shadow-none !focus:shadow-none appearance-none p-0 text-sm font-sans box-border w-full",tagsSearchCopy:"invisible whitespace-pre-wrap inline-block h-px",placeholder:"flex items-center h-full absolute left-0 top-0 pointer-events-none bg-transparent leading-snug pl-3.5 text-gray-400 text-sm",caret:"bg-multiselect-caret bg-center bg-no-repeat w-5 h-5 py-px box-content z-5 relative mr-1 opacity-40 shrink-0 grow-0 transition-transform",caretOpen:"rotate-180 pointer-events-auto",clear:"pr-3.5 relative z-10 opacity-40 transition duration-300 shrink-0 grow-0 flex hover:opacity-80",clearIcon:"bg-multiselect-remove bg-center bg-no-repeat w-2.5 h-4 py-px box-content inline-block",spinner:"bg-multiselect-spinner bg-center bg-no-repeat w-4 h-4 z-10 mr-3.5 animate-spin shrink-0 grow-0",dropdown:"max-h-60 shadow-lg absolute -left-px -right-px -bottom-1 translate-y-full border border-gray-300 mt-1 overflow-y-auto z-50 bg-white flex flex-col rounded-md",dropdownTop:"-translate-y-full -top-2 bottom-auto flex-col-reverse rounded-md",dropdownHidden:"hidden",options:"flex flex-col p-0 m-0 list-none",optionsTop:"flex-col-reverse",group:"p-0 m-0",groupLabel:"flex text-sm box-border items-center justify-start text-left py-1 px-3 font-semibold bg-gray-200 cursor-default leading-normal",groupLabelPointable:"cursor-pointer",groupLabelPointed:"bg-gray-300 text-gray-700",groupLabelSelected:"bg-primary-600 text-white",groupLabelDisabled:"bg-gray-100 text-gray-300 cursor-not-allowed",groupLabelSelectedPointed:"bg-primary-600 text-white opacity-90",groupLabelSelectedDisabled:"text-primary-100 bg-primary-600 bg-opacity-50 cursor-not-allowed",groupOptions:"p-0 m-0",option:"flex items-center justify-start box-border text-left cursor-pointer text-sm leading-snug py-2 px-3",optionPointed:"text-gray-800 bg-gray-100",optionSelected:"text-white bg-primary-500",optionDisabled:"text-gray-300 cursor-not-allowed",optionSelectedPointed:"text-white bg-primary-500 opacity-90",optionSelectedDisabled:"text-primary-100 bg-primary-500 bg-opacity-50 cursor-not-allowed",noOptions:"py-2 px-3 text-gray-600 bg-white",noResults:"py-2 px-3 text-gray-600 bg-white",fakeInput:"bg-transparent absolute left-0 right-0 -bottom-px w-full h-px border-0 p-0 appearance-none outline-none text-transparent",spacer:"h-9 py-px box-content"})},strict:{type:Boolean,required:!1,default:!0},closeOnSelect:{type:Boolean,required:!1,default:!0},autocomplete:{type:String,required:!1},groups:{type:Boolean,required:!1,default:!1},groupLabel:{type:String,required:!1,default:"label"},groupOptions:{type:String,required:!1,default:"options"},groupHideEmpty:{type:Boolean,required:!1,default:!1},groupSelect:{type:Boolean,required:!1,default:!0},inputType:{type:String,required:!1,default:"text"}},emits:["open","close","select","deselect","input","search-change","tag","update:modelValue","change","clear"],setup(e,u){const a=Ye(e,u),i=_e(e),o=nl(e,u),v=$e(e,u),f=Xe(e,u,{iv:a.iv}),g=rl(e,u,{input:v.input,open:o.open,close:o.close,clearSearch:v.clearSearch}),t=al(e,u,{ev:a.ev,iv:a.iv,search:v.search,clearSearch:v.clearSearch,update:f.update,pointer:i.pointer,clearPointer:i.clearPointer,blur:g.blur,deactivate:g.deactivate}),c=tl(e,u,{fo:t.fo,fg:t.fg,handleOptionClick:t.handleOptionClick,handleGroupClick:t.handleGroupClick,search:v.search,pointer:i.pointer,setPointer:i.setPointer,clearPointer:i.clearPointer,multiselect:g.multiselect}),p=sl(e,u,{iv:a.iv,update:f.update,search:v.search,setPointer:i.setPointer,selectPointer:c.selectPointer,backwardPointer:c.backwardPointer,forwardPointer:c.forwardPointer,blur:g.blur,fo:t.fo}),b=ul(e,u,{isOpen:o.isOpen,isPointed:c.isPointed,canPointGroups:c.canPointGroups,isSelected:t.isSelected,isDisabled:t.isDisabled,isActive:g.isActive,resolving:t.resolving,fo:t.fo});return{...a,...o,...g,...i,...f,...v,...t,...c,...p,...b}}},il=["id","tabindex"],cl=["type","modelValue","value","autocomplete"],dl=["onMousedown"],vl=["type","modelValue","value","autocomplete"],pl={class:"w-full overflow-y-auto"},fl=["data-pointed","onMouseenter","onClick"],gl=["data-pointed","onMouseenter","onClick"],bl=["data-pointed","onMouseenter","onClick"],hl=["innerHTML"],ml=["innerHTML"],yl=["value"],Sl=["name","value"],kl=["name","value"];function Ol(e,u,a,i,o,v){const f=qe("BaseContentPlaceholdersBox"),g=qe("BaseContentPlaceholders");return a.contentLoading?(I(),Je(g,{key:0},{default:Ze(()=>[Qe(f,{rounded:!0,class:"w-full",style:{height:"40px"}})]),_:1})):(I(),q("div",{key:1,id:a.id,ref:"multiselect",tabindex:e.tabindex,class:w(e.classList.container),onFocusin:u[6]||(u[6]=(...t)=>e.activate&&e.activate(...t)),onFocusout:u[7]||(u[7]=(...t)=>e.deactivate&&e.deactivate(...t)),onKeydown:u[8]||(u[8]=(...t)=>e.handleKeydown&&e.handleKeydown(...t)),onFocus:u[9]||(u[9]=(...t)=>e.handleFocus&&e.handleFocus(...t))},[a.mode!=="tags"&&a.searchable&&!a.disabled?(I(),q("input",{key:0,ref:"input",type:a.inputType,modelValue:e.search,value:e.search,class:w(e.classList.search),autocomplete:a.autocomplete,onInput:u[0]||(u[0]=(...t)=>e.handleSearchInput&&e.handleSearchInput(...t)),onPaste:u[1]||(u[1]=de((...t)=>e.handlePaste&&e.handlePaste(...t),["stop"]))},null,42,cl)):E("",!0),a.mode=="tags"?(I(),q("div",{key:1,class:w(e.classList.tags)},[(I(!0),q(le,null,ne(e.iv,(t,c,p)=>C(e.$slots,"tag",{option:t,handleTagRemove:e.handleTagRemove,disabled:a.disabled},()=>[(I(),q("span",{key:p,class:w(e.classList.tag)},[Ue(J(t[a.label])+" ",1),a.disabled?E("",!0):(I(),q("span",{key:0,class:w(e.classList.tagRemove),onMousedown:de(b=>e.handleTagRemove(t,b),["stop"])},[P("span",{class:w(e.classList.tagRemoveIcon)},null,2)],42,dl))],2))])),256)),P("div",{class:w(e.classList.tagsSearchWrapper)},[P("span",{class:w(e.classList.tagsSearchCopy)},J(e.search),3),a.searchable&&!a.disabled?(I(),q("input",{key:0,ref:"input",type:a.inputType,modelValue:e.search,value:e.search,class:w(e.classList.tagsSearch),autocomplete:a.autocomplete,style:{"box-shadow":"none !important"},onInput:u[2]||(u[2]=(...t)=>e.handleSearchInput&&e.handleSearchInput(...t)),onPaste:u[3]||(u[3]=de((...t)=>e.handlePaste&&e.handlePaste(...t),["stop"]))},null,42,vl)):E("",!0)],2)],2)):E("",!0),a.mode=="single"&&e.hasSelected&&!e.search&&e.iv?C(e.$slots,"singlelabel",{key:2,value:e.iv},()=>[P("div",{class:w(e.classList.singleLabel)},J(e.iv[a.label]),3)]):E("",!0),a.mode=="multiple"&&e.hasSelected&&!e.search?C(e.$slots,"multiplelabel",{key:3,values:e.iv},()=>[P("div",{class:w(e.classList.multipleLabel)},J(e.multipleLabelText),3)]):E("",!0),a.placeholder&&!e.hasSelected&&!e.search?C(e.$slots,"placeholder",{key:4},()=>[P("div",{class:w(e.classList.placeholder)},J(a.placeholder),3)]):E("",!0),e.busy?C(e.$slots,"spinner",{key:5},()=>[P("span",{class:w(e.classList.spinner)},null,2)]):E("",!0),e.hasSelected&&!a.disabled&&a.canClear&&!e.busy?C(e.$slots,"clear",{key:6,clear:e.clear},()=>[P("span",{class:w(e.classList.clear),onMousedown:u[4]||(u[4]=(...t)=>e.clear&&e.clear(...t))},[P("span",{class:w(e.classList.clearIcon)},null,2)],34)]):E("",!0),a.caret?C(e.$slots,"caret",{key:7},()=>[P("span",{class:w(e.classList.caret),onMousedown:u[5]||(u[5]=de((...t)=>e.handleCaretClick&&e.handleCaretClick(...t),["prevent","stop"]))},null,34)]):E("",!0),P("div",{class:w(e.classList.dropdown),tabindex:"-1"},[P("div",pl,[C(e.$slots,"beforelist",{options:e.fo}),P("ul",{class:w(e.classList.options)},[a.groups?(I(!0),q(le,{key:0},ne(e.fg,(t,c,p)=>(I(),q("li",{key:p,class:w(e.classList.group)},[P("div",{class:w(e.classList.groupLabel(t)),"data-pointed":e.isPointed(t),onMouseenter:b=>e.setPointer(t),onClick:b=>e.handleGroupClick(t)},[C(e.$slots,"grouplabel",{group:t},()=>[P("span",null,J(t[a.groupLabel]),1)])],42,fl),P("ul",{class:w(e.classList.groupOptions)},[(I(!0),q(le,null,ne(t.__VISIBLE__,(b,B,V)=>(I(),q("li",{key:V,class:w(e.classList.option(b,t)),"data-pointed":e.isPointed(b),onMouseenter:D=>e.setPointer(b),onClick:D=>e.handleOptionClick(b)},[C(e.$slots,"option",{option:b,search:e.search},()=>[P("span",null,J(b[a.label]),1)])],42,gl))),128))],2)],2))),128)):(I(!0),q(le,{key:1},ne(e.fo,(t,c,p)=>(I(),q("li",{key:p,class:w(e.classList.option(t)),"data-pointed":e.isPointed(t),onMouseenter:b=>e.setPointer(t),onClick:b=>e.handleOptionClick(t)},[C(e.$slots,"option",{option:t,search:e.search},()=>[P("span",null,J(t[a.label]),1)])],42,bl))),128))],2),e.noOptions?C(e.$slots,"nooptions",{key:0},()=>[P("div",{class:w(e.classList.noOptions),innerHTML:a.noOptionsText},null,10,hl)]):E("",!0),e.noResults?C(e.$slots,"noresults",{key:1},()=>[P("div",{class:w(e.classList.noResults),innerHTML:a.noResultsText},null,10,ml)]):E("",!0),C(e.$slots,"afterlist",{options:e.fo})]),C(e.$slots,"action")],2),a.required?(I(),q("input",{key:8,class:w(e.classList.fakeInput),tabindex:"-1",value:e.textValue,required:""},null,10,yl)):E("",!0),a.nativeSupport?(I(),q(le,{key:9},[a.mode=="single"?(I(),q("input",{key:0,type:"hidden",name:a.name,value:e.plainValue!==void 0?e.plainValue:""},null,8,Sl)):(I(!0),q(le,{key:1},ne(e.plainValue,(t,c)=>(I(),q("input",{key:c,type:"hidden",name:`${a.name}[]`,value:t},null,8,kl))),128))],64)):E("",!0),P("div",{class:w(e.classList.spacer)},null,2)],42,il))}const Ll=We(ol,[["render",Ol]]);export{Ll as default}; diff --git a/public/build/assets/BaseTable-ZLDzRGeZ.js b/public/build/assets/BaseTable-ov5KJ7AA.js similarity index 98% rename from public/build/assets/BaseTable-ZLDzRGeZ.js rename to public/build/assets/BaseTable-ov5KJ7AA.js index d0522bf6..51d0805e 100644 --- a/public/build/assets/BaseTable-ZLDzRGeZ.js +++ b/public/build/assets/BaseTable-ov5KJ7AA.js @@ -1 +1 @@ -import{ab as G,Z as J,r as T,o as i,c as s,b as u,J as h,p as P,t as c,K as f,a as w,N as k,O as C,H as N,f as F,k as L,z as K,Y as Z,a2 as A,l as p,w as Q,S as U,m as X,P as $}from"./main-B9dpPbRR.js";function V(a,t){if(!t||a===null||typeof a!="object")return a;const[e,n]=t.split(/\.(.+)/);return V(a[e],n)}function ee(a,t){return t.reduce((e,n)=>(e[n]=a[n],e),{})}class te{constructor(t,e){this.data=t,this.columns=e}getValue(t){return V(this.data,t)}getColumn(t){return this.columns.find(e=>e.key===t)}getSortableValue(t){const e=this.getColumn(t).dataType;let n=this.getValue(t);if(n==null)return"";if(n instanceof String&&(n=n.toLowerCase()),e.startsWith("date")){const b=e.replace("date:","");return G(n,b).format("YYYYMMDDHHmmss")}return e==="numeric"?n:n.toString()}}class ae{constructor(t){const e=ee(t,["key","label","thClass","tdClass","sortBy","sortable","hidden","dataType"]);for(const n in e)this[n]=t[n];e.dataType||(this.dataType="string"),e.sortable===void 0&&(this.sortable=!0)}getFilterFieldName(){return this.filterOn||this.key}isSortable(){return this.sortable}getSortPredicate(t,e){const n=this.getSortFieldName(),l=e.find(g=>g.key===n).dataType;return l.startsWith("date")||l==="numeric"?(g,d)=>{const m=g.getSortableValue(n),x=d.getSortableValue(n);return t==="desc"?x{const m=g.getSortableValue(n),x=d.getSortableValue(n);return t==="desc"?x.localeCompare(m):m.localeCompare(x)}}getSortFieldName(){return this.sortBy||this.key}}const ne={props:{pagination:{type:Object,default:()=>({})}},computed:{pages(){return this.pagination.totalPages===void 0?[]:this.pageLinks()},hasFirst(){return this.pagination.currentPage>=4||this.pagination.totalPages<10},hasLast(){return this.pagination.currentPage<=this.pagination.totalPages-3||this.pagination.totalPages<10},hasFirstEllipsis(){return this.pagination.currentPage>=4&&this.pagination.totalPages>=10},hasLastEllipsis(){return this.pagination.currentPage<=this.pagination.totalPages-3&&this.pagination.totalPages>=10},shouldShowPagination(){return this.pagination.totalPages===void 0||this.pagination.count===0?!1:this.pagination.totalPages>1}},methods:{isActive(a){return(this.pagination.currentPage||1)===a},pageClicked(a){a==="..."||a===this.pagination.currentPage||a>this.pagination.totalPages||a<1||this.$emit("pageChange",a)},pageLinks(){const a=[];let t=2,e=this.pagination.totalPages-1;this.pagination.totalPages>=10&&(t=Math.max(1,this.pagination.currentPage-2),e=Math.min(this.pagination.currentPage+2,this.pagination.totalPages));for(let n=t;n<=e;n++)a.push(n);return a}}},re={key:0,class:"flex items-center justify-between px-4 py-3 bg-white border-t border-gray-200 sm:px-6"},ie={class:"flex justify-between flex-1 sm:hidden"},se={class:"hidden sm:flex-1 sm:flex sm:items-center sm:justify-between"},le={class:"text-sm text-gray-700"},oe={key:0,class:"font-medium"},de={key:1,class:"font-medium"},ge={key:0},ue={key:1},ce={key:2,class:"font-medium"},he={class:"relative z-0 inline-flex -space-x-px rounded-md shadow-sm","aria-label":"Pagination"},ye=u("span",{class:"sr-only"},"Previous",-1),fe={key:1,class:"relative inline-flex items-center px-4 py-2 text-sm font-medium text-gray-700 bg-white border border-gray-300"},me=["onClick"],pe={key:2,class:"relative inline-flex items-center px-4 py-2 text-sm font-medium text-gray-700 bg-white border border-gray-300"},be=u("span",{class:"sr-only"},"Next",-1);function xe(a,t,e,n,b,l){const g=T("BaseIcon");return l.shouldShowPagination?(i(),s("div",re,[u("div",ie,[u("a",{href:"#",class:h([{"disabled cursor-normal pointer-events-none !bg-gray-100 !text-gray-400":e.pagination.currentPage===1},"relative inline-flex items-center px-4 py-2 text-sm font-medium text-gray-700 bg-white border border-gray-300 rounded-md hover:bg-gray-50"]),onClick:t[0]||(t[0]=d=>l.pageClicked(e.pagination.currentPage-1))}," Previous ",2),u("a",{href:"#",class:h([{"disabled cursor-default pointer-events-none !bg-gray-100 !text-gray-400":e.pagination.currentPage===e.pagination.totalPages},"relative inline-flex items-center px-4 py-2 ml-3 text-sm font-medium text-gray-700 bg-white border border-gray-300 rounded-md hover:bg-gray-50"]),onClick:t[1]||(t[1]=d=>l.pageClicked(e.pagination.currentPage+1))}," Next ",2)]),u("div",se,[u("div",null,[u("p",le,[P(" Showing "+c(" ")+" "),e.pagination.limit&&e.pagination.currentPage?(i(),s("span",oe,c(e.pagination.currentPage*e.pagination.limit-(e.pagination.limit-1)),1)):f("",!0),P(" "+c(" ")+" to "+c(" ")+" "),e.pagination.limit&&e.pagination.currentPage?(i(),s("span",de,[e.pagination.currentPage*e.pagination.limit<=e.pagination.totalCount?(i(),s("span",ge,c(e.pagination.currentPage*e.pagination.limit),1)):(i(),s("span",ue,c(e.pagination.totalCount),1))])):f("",!0),P(" "+c(" ")+" of "+c(" ")+" "),e.pagination.totalCount?(i(),s("span",ce,c(e.pagination.totalCount),1)):f("",!0),P(" "+c(" ")+" results ")])]),u("div",null,[u("nav",he,[u("a",{href:"#",class:h([{"disabled cursor-normal pointer-events-none !bg-gray-100 !text-gray-400":e.pagination.currentPage===1},"relative inline-flex items-center px-2 py-2 text-sm font-medium text-gray-500 bg-white border border-gray-300 rounded-l-md hover:bg-gray-50"]),onClick:t[2]||(t[2]=d=>l.pageClicked(e.pagination.currentPage-1))},[ye,w(g,{name:"ChevronLeftIcon"})],2),l.hasFirst?(i(),s("a",{key:0,href:"#","aria-current":"page",class:h([{"z-10 bg-primary-50 border-primary-500 text-primary-600":l.isActive(1),"bg-white border-gray-300 text-gray-500 hover:bg-gray-50":!l.isActive(1)},"relative inline-flex items-center px-4 py-2 text-sm font-medium border"]),onClick:t[3]||(t[3]=d=>l.pageClicked(1))}," 1 ",2)):f("",!0),l.hasFirstEllipsis?(i(),s("span",fe," ... ")):f("",!0),(i(!0),s(k,null,C(l.pages,d=>(i(),s("a",{key:d,href:"#",class:h([{"z-10 bg-primary-50 border-primary-500 text-primary-600":l.isActive(d),"bg-white border-gray-300 text-gray-500 hover:bg-gray-50":!l.isActive(d),disabled:d==="..."},"relative items-center hidden px-4 py-2 text-sm font-medium text-gray-500 bg-white border border-gray-300 hover:bg-gray-50 md:inline-flex"]),onClick:m=>l.pageClicked(d)},c(d),11,me))),128)),l.hasLastEllipsis?(i(),s("span",pe," ... ")):f("",!0),l.hasLast?(i(),s("a",{key:3,href:"#","aria-current":"page",class:h([{"z-10 bg-primary-50 border-primary-500 text-primary-600":l.isActive(e.pagination.totalPages),"bg-white border-gray-300 text-gray-500 hover:bg-gray-50":!l.isActive(e.pagination.totalPages)},"relative inline-flex items-center px-4 py-2 text-sm font-medium border"]),onClick:t[4]||(t[4]=d=>l.pageClicked(e.pagination.totalPages))},c(e.pagination.totalPages),3)):f("",!0),u("a",{href:"#",class:h(["relative inline-flex items-center px-2 py-2 text-sm font-medium text-gray-500 bg-white border border-gray-300 rounded-r-md hover:bg-gray-50",{"disabled cursor-default pointer-events-none !bg-gray-100 !text-gray-400":e.pagination.currentPage===e.pagination.totalPages}]),onClick:t[5]||(t[5]=d=>l.pageClicked(e.pagination.currentPage+1))},[be,w(g,{name:"ChevronRightIcon"})],2)])])])])):f("",!0)}const ve=J(ne,[["render",xe]]),ke={class:"flex flex-col"},Ce={class:"-my-2 overflow-x-auto sm:-mx-6 lg:-mx-8 pb-4 lg:pb-0"},Pe={class:"inline-block min-w-full py-2 align-middle sm:px-6 lg:px-8"},we={class:"relative overflow-hidden bg-white border-b border-gray-200 shadow sm:rounded-lg"},_e=["onClick"],Se={key:0,class:"asc-direction"},Te={key:1,class:"desc-direction"},Ne={key:0},Be={key:1},Fe={key:0,class:"absolute top-0 left-0 z-10 flex items-center justify-center w-full h-full bg-white bg-opacity-60"},Le={key:1,class:"text-center text-gray-500 pb-2 flex h-[160px] justify-center items-center flex-col"},Ae={class:"block mt-1"},Ie={__name:"BaseTable",props:{columns:{type:Array,required:!0},data:{type:[Array,Function],required:!0},sortBy:{type:String,default:""},sortOrder:{type:String,default:""},tableClass:{type:String,default:"min-w-full divide-y divide-gray-200"},theadClass:{type:String,default:"bg-gray-50"},tbodyClass:{type:String,default:""},noResultsMessage:{type:String,default:"No Results Found"},loading:{type:Boolean,default:!1},loadingType:{type:String,default:"placeholder",validator:function(a){return["placeholder","spinner"].indexOf(a)!==-1}},placeholderCount:{type:Number,default:3}},setup(a,{expose:t}){const e=a;let n=N([]),b=F(!1),l=N(e.columns.map(r=>new ae(r))),g=N({fieldName:"",order:""}),d=F("");const m=L(()=>Array.isArray(e.data)),x=L(()=>{if(!m.value||g.fieldName===""||l.length===0)return n.value;const r=I(g.fieldName);return r?[...n.value].sort(r.getSortPredicate(g.order,l)):n.value});function I(r){return l.find(o=>o.key===r)}function z(r){let o="whitespace-nowrap px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider";return r.defaultThClass&&(o=r.defaultThClass),r.sortable?o=`${o} cursor-pointer`:o=`${o} pointer-events-none`,r.thClass&&(o=`${o} ${r.thClass}`),o}function B(r){let o="px-6 py-4 text-sm text-gray-500 whitespace-nowrap";return r.defaultTdClass&&(o=r.defaultTdClass),r.tdClass&&(o=`${o} ${r.tdClass}`),o}function D(r){let o="w-full";return r.placeholderClass&&(o=`${o} ${r.placeholderClass}`),o}function E(){return d.value=null,e.data}async function M(){const r=d.value&&d.value.currentPage||1;b.value=!0;const o=await e.data({sort:g,page:r});return b.value=!1,d.value=o.pagination,o.data}function R(r){g.fieldName!==r.key?(g.fieldName=r.key,g.order="asc"):g.order=g.order==="asc"?"desc":"asc",m.value||_()}async function _(){const r=m.value?E():await M();n.value=r.map(o=>new te(o,l))}async function Y(r){d.value.currentPage=r,await _()}async function H(){await _()}function q(r,o){return $.get(r,o)}return m.value&&K(()=>e.data,()=>{_()}),Z(async()=>{await _()}),t({refresh:H}),(r,o)=>{const O=T("base-content-placeholders-text"),W=T("base-content-placeholders"),j=T("BaseIcon");return i(),s("div",ke,[u("div",Ce,[u("div",Pe,[u("div",we,[A(r.$slots,"header"),u("table",{class:h(a.tableClass)},[u("thead",{class:h(a.theadClass)},[u("tr",null,[(i(!0),s(k,null,C(p(l),y=>(i(),s("th",{key:y.key,class:h([z(y),{"text-bold text-black":p(g).fieldName===y.key}]),onClick:v=>R(y)},[P(c(y.label)+" ",1),p(g).fieldName===y.key&&p(g).order==="asc"?(i(),s("span",Se," ↑ ")):f("",!0),p(g).fieldName===y.key&&p(g).order==="desc"?(i(),s("span",Te," ↓ ")):f("",!0)],10,_e))),128))])],2),a.loadingType==="placeholder"&&(a.loading||p(b))?(i(),s("tbody",Ne,[(i(!0),s(k,null,C(a.placeholderCount,y=>(i(),s("tr",{key:y,class:h(y%2===0?"bg-white":"bg-gray-50")},[(i(!0),s(k,null,C(a.columns,v=>(i(),s("td",{key:v.key,class:h(["",B(v)])},[w(W,{class:h(D(v)),rounded:!0},{default:Q(()=>[w(O,{class:"w-full h-6",lines:1})]),_:2},1032,["class"])],2))),128))],2))),128))])):(i(),s("tbody",Be,[(i(!0),s(k,null,C(x.value,(y,v)=>(i(),s("tr",{key:v,class:h(v%2===0?"bg-white":"bg-gray-50")},[(i(!0),s(k,null,C(a.columns,S=>(i(),s("td",{key:S.key,class:h(["",B(S)])},[A(r.$slots,"cell-"+S.key,{row:y},()=>[P(c(q(y.data,S.key)),1)])],2))),128))],2))),128))]))],2),a.loadingType==="spinner"&&(a.loading||p(b))?(i(),s("div",Fe,[w(U,{class:"w-10 h-10 text-primary-500"})])):!a.loading&&!p(b)&&x.value&&x.value.length===0?(i(),s("div",Le,[w(j,{name:"ExclamationCircleIcon",class:"w-6 h-6 text-gray-400"}),u("span",Ae,c(a.noResultsMessage),1)])):f("",!0),p(d)?(i(),X(ve,{key:2,pagination:p(d),onPageChange:Y},null,8,["pagination"])):f("",!0)])])])])}}};export{Ie as default}; +import{ab as G,Z as J,r as T,o as i,c as s,b as u,J as h,p as P,t as c,K as f,a as w,N as k,O as C,H as N,f as F,k as L,z as K,Y as Z,a2 as A,l as p,w as Q,S as U,m as X,P as $}from"./main-pPEsZPea.js";function V(a,t){if(!t||a===null||typeof a!="object")return a;const[e,n]=t.split(/\.(.+)/);return V(a[e],n)}function ee(a,t){return t.reduce((e,n)=>(e[n]=a[n],e),{})}class te{constructor(t,e){this.data=t,this.columns=e}getValue(t){return V(this.data,t)}getColumn(t){return this.columns.find(e=>e.key===t)}getSortableValue(t){const e=this.getColumn(t).dataType;let n=this.getValue(t);if(n==null)return"";if(n instanceof String&&(n=n.toLowerCase()),e.startsWith("date")){const b=e.replace("date:","");return G(n,b).format("YYYYMMDDHHmmss")}return e==="numeric"?n:n.toString()}}class ae{constructor(t){const e=ee(t,["key","label","thClass","tdClass","sortBy","sortable","hidden","dataType"]);for(const n in e)this[n]=t[n];e.dataType||(this.dataType="string"),e.sortable===void 0&&(this.sortable=!0)}getFilterFieldName(){return this.filterOn||this.key}isSortable(){return this.sortable}getSortPredicate(t,e){const n=this.getSortFieldName(),l=e.find(g=>g.key===n).dataType;return l.startsWith("date")||l==="numeric"?(g,d)=>{const m=g.getSortableValue(n),x=d.getSortableValue(n);return t==="desc"?x{const m=g.getSortableValue(n),x=d.getSortableValue(n);return t==="desc"?x.localeCompare(m):m.localeCompare(x)}}getSortFieldName(){return this.sortBy||this.key}}const ne={props:{pagination:{type:Object,default:()=>({})}},computed:{pages(){return this.pagination.totalPages===void 0?[]:this.pageLinks()},hasFirst(){return this.pagination.currentPage>=4||this.pagination.totalPages<10},hasLast(){return this.pagination.currentPage<=this.pagination.totalPages-3||this.pagination.totalPages<10},hasFirstEllipsis(){return this.pagination.currentPage>=4&&this.pagination.totalPages>=10},hasLastEllipsis(){return this.pagination.currentPage<=this.pagination.totalPages-3&&this.pagination.totalPages>=10},shouldShowPagination(){return this.pagination.totalPages===void 0||this.pagination.count===0?!1:this.pagination.totalPages>1}},methods:{isActive(a){return(this.pagination.currentPage||1)===a},pageClicked(a){a==="..."||a===this.pagination.currentPage||a>this.pagination.totalPages||a<1||this.$emit("pageChange",a)},pageLinks(){const a=[];let t=2,e=this.pagination.totalPages-1;this.pagination.totalPages>=10&&(t=Math.max(1,this.pagination.currentPage-2),e=Math.min(this.pagination.currentPage+2,this.pagination.totalPages));for(let n=t;n<=e;n++)a.push(n);return a}}},re={key:0,class:"flex items-center justify-between px-4 py-3 bg-white border-t border-gray-200 sm:px-6"},ie={class:"flex justify-between flex-1 sm:hidden"},se={class:"hidden sm:flex-1 sm:flex sm:items-center sm:justify-between"},le={class:"text-sm text-gray-700"},oe={key:0,class:"font-medium"},de={key:1,class:"font-medium"},ge={key:0},ue={key:1},ce={key:2,class:"font-medium"},he={class:"relative z-0 inline-flex -space-x-px rounded-md shadow-sm","aria-label":"Pagination"},ye=u("span",{class:"sr-only"},"Previous",-1),fe={key:1,class:"relative inline-flex items-center px-4 py-2 text-sm font-medium text-gray-700 bg-white border border-gray-300"},me=["onClick"],pe={key:2,class:"relative inline-flex items-center px-4 py-2 text-sm font-medium text-gray-700 bg-white border border-gray-300"},be=u("span",{class:"sr-only"},"Next",-1);function xe(a,t,e,n,b,l){const g=T("BaseIcon");return l.shouldShowPagination?(i(),s("div",re,[u("div",ie,[u("a",{href:"#",class:h([{"disabled cursor-normal pointer-events-none !bg-gray-100 !text-gray-400":e.pagination.currentPage===1},"relative inline-flex items-center px-4 py-2 text-sm font-medium text-gray-700 bg-white border border-gray-300 rounded-md hover:bg-gray-50"]),onClick:t[0]||(t[0]=d=>l.pageClicked(e.pagination.currentPage-1))}," Previous ",2),u("a",{href:"#",class:h([{"disabled cursor-default pointer-events-none !bg-gray-100 !text-gray-400":e.pagination.currentPage===e.pagination.totalPages},"relative inline-flex items-center px-4 py-2 ml-3 text-sm font-medium text-gray-700 bg-white border border-gray-300 rounded-md hover:bg-gray-50"]),onClick:t[1]||(t[1]=d=>l.pageClicked(e.pagination.currentPage+1))}," Next ",2)]),u("div",se,[u("div",null,[u("p",le,[P(" Showing "+c(" ")+" "),e.pagination.limit&&e.pagination.currentPage?(i(),s("span",oe,c(e.pagination.currentPage*e.pagination.limit-(e.pagination.limit-1)),1)):f("",!0),P(" "+c(" ")+" to "+c(" ")+" "),e.pagination.limit&&e.pagination.currentPage?(i(),s("span",de,[e.pagination.currentPage*e.pagination.limit<=e.pagination.totalCount?(i(),s("span",ge,c(e.pagination.currentPage*e.pagination.limit),1)):(i(),s("span",ue,c(e.pagination.totalCount),1))])):f("",!0),P(" "+c(" ")+" of "+c(" ")+" "),e.pagination.totalCount?(i(),s("span",ce,c(e.pagination.totalCount),1)):f("",!0),P(" "+c(" ")+" results ")])]),u("div",null,[u("nav",he,[u("a",{href:"#",class:h([{"disabled cursor-normal pointer-events-none !bg-gray-100 !text-gray-400":e.pagination.currentPage===1},"relative inline-flex items-center px-2 py-2 text-sm font-medium text-gray-500 bg-white border border-gray-300 rounded-l-md hover:bg-gray-50"]),onClick:t[2]||(t[2]=d=>l.pageClicked(e.pagination.currentPage-1))},[ye,w(g,{name:"ChevronLeftIcon"})],2),l.hasFirst?(i(),s("a",{key:0,href:"#","aria-current":"page",class:h([{"z-10 bg-primary-50 border-primary-500 text-primary-600":l.isActive(1),"bg-white border-gray-300 text-gray-500 hover:bg-gray-50":!l.isActive(1)},"relative inline-flex items-center px-4 py-2 text-sm font-medium border"]),onClick:t[3]||(t[3]=d=>l.pageClicked(1))}," 1 ",2)):f("",!0),l.hasFirstEllipsis?(i(),s("span",fe," ... ")):f("",!0),(i(!0),s(k,null,C(l.pages,d=>(i(),s("a",{key:d,href:"#",class:h([{"z-10 bg-primary-50 border-primary-500 text-primary-600":l.isActive(d),"bg-white border-gray-300 text-gray-500 hover:bg-gray-50":!l.isActive(d),disabled:d==="..."},"relative items-center hidden px-4 py-2 text-sm font-medium text-gray-500 bg-white border border-gray-300 hover:bg-gray-50 md:inline-flex"]),onClick:m=>l.pageClicked(d)},c(d),11,me))),128)),l.hasLastEllipsis?(i(),s("span",pe," ... ")):f("",!0),l.hasLast?(i(),s("a",{key:3,href:"#","aria-current":"page",class:h([{"z-10 bg-primary-50 border-primary-500 text-primary-600":l.isActive(e.pagination.totalPages),"bg-white border-gray-300 text-gray-500 hover:bg-gray-50":!l.isActive(e.pagination.totalPages)},"relative inline-flex items-center px-4 py-2 text-sm font-medium border"]),onClick:t[4]||(t[4]=d=>l.pageClicked(e.pagination.totalPages))},c(e.pagination.totalPages),3)):f("",!0),u("a",{href:"#",class:h(["relative inline-flex items-center px-2 py-2 text-sm font-medium text-gray-500 bg-white border border-gray-300 rounded-r-md hover:bg-gray-50",{"disabled cursor-default pointer-events-none !bg-gray-100 !text-gray-400":e.pagination.currentPage===e.pagination.totalPages}]),onClick:t[5]||(t[5]=d=>l.pageClicked(e.pagination.currentPage+1))},[be,w(g,{name:"ChevronRightIcon"})],2)])])])])):f("",!0)}const ve=J(ne,[["render",xe]]),ke={class:"flex flex-col"},Ce={class:"-my-2 overflow-x-auto sm:-mx-6 lg:-mx-8 pb-4 lg:pb-0"},Pe={class:"inline-block min-w-full py-2 align-middle sm:px-6 lg:px-8"},we={class:"relative overflow-hidden bg-white border-b border-gray-200 shadow sm:rounded-lg"},_e=["onClick"],Se={key:0,class:"asc-direction"},Te={key:1,class:"desc-direction"},Ne={key:0},Be={key:1},Fe={key:0,class:"absolute top-0 left-0 z-10 flex items-center justify-center w-full h-full bg-white bg-opacity-60"},Le={key:1,class:"text-center text-gray-500 pb-2 flex h-[160px] justify-center items-center flex-col"},Ae={class:"block mt-1"},Ie={__name:"BaseTable",props:{columns:{type:Array,required:!0},data:{type:[Array,Function],required:!0},sortBy:{type:String,default:""},sortOrder:{type:String,default:""},tableClass:{type:String,default:"min-w-full divide-y divide-gray-200"},theadClass:{type:String,default:"bg-gray-50"},tbodyClass:{type:String,default:""},noResultsMessage:{type:String,default:"No Results Found"},loading:{type:Boolean,default:!1},loadingType:{type:String,default:"placeholder",validator:function(a){return["placeholder","spinner"].indexOf(a)!==-1}},placeholderCount:{type:Number,default:3}},setup(a,{expose:t}){const e=a;let n=N([]),b=F(!1),l=N(e.columns.map(r=>new ae(r))),g=N({fieldName:"",order:""}),d=F("");const m=L(()=>Array.isArray(e.data)),x=L(()=>{if(!m.value||g.fieldName===""||l.length===0)return n.value;const r=I(g.fieldName);return r?[...n.value].sort(r.getSortPredicate(g.order,l)):n.value});function I(r){return l.find(o=>o.key===r)}function z(r){let o="whitespace-nowrap px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider";return r.defaultThClass&&(o=r.defaultThClass),r.sortable?o=`${o} cursor-pointer`:o=`${o} pointer-events-none`,r.thClass&&(o=`${o} ${r.thClass}`),o}function B(r){let o="px-6 py-4 text-sm text-gray-500 whitespace-nowrap";return r.defaultTdClass&&(o=r.defaultTdClass),r.tdClass&&(o=`${o} ${r.tdClass}`),o}function D(r){let o="w-full";return r.placeholderClass&&(o=`${o} ${r.placeholderClass}`),o}function E(){return d.value=null,e.data}async function M(){const r=d.value&&d.value.currentPage||1;b.value=!0;const o=await e.data({sort:g,page:r});return b.value=!1,d.value=o.pagination,o.data}function R(r){g.fieldName!==r.key?(g.fieldName=r.key,g.order="asc"):g.order=g.order==="asc"?"desc":"asc",m.value||_()}async function _(){const r=m.value?E():await M();n.value=r.map(o=>new te(o,l))}async function Y(r){d.value.currentPage=r,await _()}async function H(){await _()}function q(r,o){return $.get(r,o)}return m.value&&K(()=>e.data,()=>{_()}),Z(async()=>{await _()}),t({refresh:H}),(r,o)=>{const O=T("base-content-placeholders-text"),W=T("base-content-placeholders"),j=T("BaseIcon");return i(),s("div",ke,[u("div",Ce,[u("div",Pe,[u("div",we,[A(r.$slots,"header"),u("table",{class:h(a.tableClass)},[u("thead",{class:h(a.theadClass)},[u("tr",null,[(i(!0),s(k,null,C(p(l),y=>(i(),s("th",{key:y.key,class:h([z(y),{"text-bold text-black":p(g).fieldName===y.key}]),onClick:v=>R(y)},[P(c(y.label)+" ",1),p(g).fieldName===y.key&&p(g).order==="asc"?(i(),s("span",Se," ↑ ")):f("",!0),p(g).fieldName===y.key&&p(g).order==="desc"?(i(),s("span",Te," ↓ ")):f("",!0)],10,_e))),128))])],2),a.loadingType==="placeholder"&&(a.loading||p(b))?(i(),s("tbody",Ne,[(i(!0),s(k,null,C(a.placeholderCount,y=>(i(),s("tr",{key:y,class:h(y%2===0?"bg-white":"bg-gray-50")},[(i(!0),s(k,null,C(a.columns,v=>(i(),s("td",{key:v.key,class:h(["",B(v)])},[w(W,{class:h(D(v)),rounded:!0},{default:Q(()=>[w(O,{class:"w-full h-6",lines:1})]),_:2},1032,["class"])],2))),128))],2))),128))])):(i(),s("tbody",Be,[(i(!0),s(k,null,C(x.value,(y,v)=>(i(),s("tr",{key:v,class:h(v%2===0?"bg-white":"bg-gray-50")},[(i(!0),s(k,null,C(a.columns,S=>(i(),s("td",{key:S.key,class:h(["",B(S)])},[A(r.$slots,"cell-"+S.key,{row:y},()=>[P(c(q(y.data,S.key)),1)])],2))),128))],2))),128))]))],2),a.loadingType==="spinner"&&(a.loading||p(b))?(i(),s("div",Fe,[w(U,{class:"w-10 h-10 text-primary-500"})])):!a.loading&&!p(b)&&x.value&&x.value.length===0?(i(),s("div",Le,[w(j,{name:"ExclamationCircleIcon",class:"w-6 h-6 text-gray-400"}),u("span",Ae,c(a.noResultsMessage),1)])):f("",!0),p(d)?(i(),X(ve,{key:2,pagination:p(d),onPageChange:Y},null,8,["pagination"])):f("",!0)])])])])}}};export{Ie as default}; diff --git a/public/build/assets/CapsuleIcon-9lcNYnfy.js b/public/build/assets/CapsuleIcon-iOACtwU5.js similarity index 98% rename from public/build/assets/CapsuleIcon-9lcNYnfy.js rename to public/build/assets/CapsuleIcon-iOACtwU5.js index d887b4d3..4bacd9de 100644 --- a/public/build/assets/CapsuleIcon-9lcNYnfy.js +++ b/public/build/assets/CapsuleIcon-iOACtwU5.js @@ -1 +1 @@ -import{o as d,c as i,b as l,J as C}from"./main-B9dpPbRR.js";const o={width:"118",height:"110",viewBox:"0 0 118 110",fill:"none",xmlns:"http://www.w3.org/2000/svg"},r={"clip-path":"url(#clip0)"},n=l("defs",null,[l("clipPath",{id:"clip0"},[l("rect",{width:"117.333",height:"110",fill:"white"})])],-1),s={__name:"CapsuleIcon",props:{primaryFillColor:{type:String,default:"fill-primary-500"},secondaryFillColor:{type:String,default:"fill-gray-600"}},setup(e){return(a,c)=>(d(),i("svg",o,[l("g",r,[l("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M58.6672 32.9999C42.1415 32.9999 32.973 28.5119 32.5898 28.3194L33.4093 26.6804C33.4992 26.7244 42.6127 31.1666 58.6672 31.1666C74.542 31.1666 83.8388 26.7208 83.9323 26.6768L84.7354 28.3231C84.3449 28.5156 74.9618 32.9999 58.6672 32.9999Z",class:C(e.primaryFillColor)},null,2),l("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M25.2438 39.0117L28.4191 40.8451C28.839 41.0871 29.1415 41.4831 29.2698 41.9597C29.3963 42.4346 29.3321 42.9296 29.0901 43.3494L14.4235 68.7521C14.099 69.3167 13.4866 69.6669 12.8248 69.6669C12.504 69.6669 12.1978 69.5844 11.9191 69.4231L8.74382 67.5897L7.82715 69.1774L11.0025 71.0107C11.5763 71.3426 12.2051 71.5002 12.8248 71.5002C14.0953 71.5002 15.3346 70.8421 16.0111 69.6687L30.6778 44.2661C31.6861 42.5189 31.083 40.2657 29.3358 39.2574L26.1605 37.4241L25.2438 39.0117Z",class:C(e.primaryFillColor)},null,2),l("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M91.1729 37.4241L87.9976 39.2574C86.2504 40.2657 85.6472 42.5189 86.6556 44.2661L101.322 69.6687C101.999 70.8421 103.238 71.5002 104.509 71.5002C105.128 71.5002 105.757 71.3426 106.331 71.0107L109.506 69.1774L108.59 67.5897L105.414 69.4231C105.139 69.5826 104.826 69.6669 104.509 69.6669C103.847 69.6669 103.234 69.3167 102.91 68.7521L88.2432 43.3494C88.0012 42.9296 87.9371 42.4346 88.0636 41.9597C88.1919 41.4831 88.4944 41.0871 88.9142 40.8451L92.0896 39.0117L91.1729 37.4241Z",class:C(e.primaryFillColor)},null,2),l("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M115.5 84.3333V87.6993C115.5 89.2797 114.424 90.6308 112.88 90.9883C112.013 91.19 111.049 91.4393 109.96 91.7198C102.573 93.6228 88.8268 97.1667 58.6667 97.1667C28.292 97.1667 14.6942 93.6338 7.38833 91.7345C6.29383 91.4503 5.324 91.1992 4.44767 90.9938C2.90767 90.6363 1.83333 89.2833 1.83333 87.7067V84.3333L0 82.5V87.7067C0 90.134 1.66833 92.2295 4.0315 92.7795C10.9322 94.3873 23.6812 99 58.6667 99C93.3478 99 106.372 94.3818 113.296 92.7758C115.661 92.2258 117.333 90.1285 117.333 87.6993V82.5",class:C(e.primaryFillColor)},null,2),l("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M79.6139 20.1666L115.245 81.7354C115.841 82.7566 115.344 84.0656 114.214 84.4102C107.345 86.4966 89.3159 89.8333 58.6662 89.8333C27.9744 89.8333 9.97652 86.3371 3.12535 84.2526C1.99602 83.9079 1.49919 82.5989 2.09502 81.5778L37.7204 20.1666L36.6662 18.3333L0.503686 80.6666C-0.686148 82.7071 0.322186 85.3251 2.58085 86.0163C9.60985 88.1704 27.7104 91.6666 58.6662 91.6666C89.4625 91.6666 107.664 88.3189 114.742 86.1666C117.008 85.4772 118.022 82.8574 116.829 80.8133L80.6662 18.3333",class:C(e.secondaryFillColor)},null,2),l("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M110.814 92.4116L115.245 100.069C115.841 101.089 115.344 102.4 114.214 102.742C107.345 104.831 89.3159 108.167 58.6662 108.167C27.9744 108.167 9.97469 104.671 3.12535 102.585C1.99602 102.242 1.49919 100.931 2.09502 99.9117L6.41985 92.4556L4.75885 91.6672L0.503686 99.0006C-0.686148 101.041 0.322185 103.657 2.58085 104.35C9.60985 106.504 27.7104 110.001 58.6662 110.001C89.4625 110.001 107.664 106.653 114.742 104.501C117.007 103.811 118.022 101.191 116.829 99.1472L112.682 91.9789L110.814 92.4116Z",class:C(e.secondaryFillColor)},null,2),l("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M58.667 0C47.238 0 36.667 7.1335 36.667 18.3407V20.1667C36.667 20.1667 42.6052 23.8333 58.667 23.8333C74.6665 23.8333 80.667 20.1667 80.667 20.1667V18.3333C80.667 7.24167 70.767 0 58.667 0ZM58.667 1.83333C70.3527 1.83333 78.8337 8.7725 78.8337 18.3333V19.0172C76.6887 19.9302 70.5103 22 58.667 22C46.7705 22 40.6197 19.9283 38.5003 19.0227V18.3407C38.5003 12.3658 41.7692 8.55617 44.51 6.41117C48.2317 3.50167 53.3907 1.83333 58.667 1.83333Z",class:C(e.secondaryFillColor)},null,2),l("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M69.6667 53.1666C70.6768 53.1666 71.5 53.9898 71.5 54.9999V89.8333H73.3333V54.9999C73.3333 52.9741 71.6925 51.3333 69.6667 51.3333H47.6667C45.6408 51.3333 44 52.9741 44 54.9999V89.8333H45.8333V54.9999C45.8333 53.9898 46.6565 53.1666 47.6667 53.1666H69.6667Z",class:C(e.secondaryFillColor)},null,2),l("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M58.6667 56.8333C53.6048 56.8333 49.5 60.9381 49.5 65.9999C49.5 71.0618 53.6048 75.1666 58.6667 75.1666C63.7285 75.1666 67.8333 71.0618 67.8333 65.9999C67.8333 60.9381 63.7285 56.8333 58.6667 56.8333ZM58.6667 58.6666C62.711 58.6666 66 61.9556 66 65.9999C66 70.0443 62.711 73.3333 58.6667 73.3333C54.6223 73.3333 51.3333 70.0443 51.3333 65.9999C51.3333 61.9556 54.6223 58.6666 58.6667 58.6666Z",class:C(e.secondaryFillColor)},null,2),l("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M63.2503 66C62.7443 66 62.3337 65.5893 62.3337 65.0833C62.3337 63.5672 61.0998 62.3333 59.5837 62.3333C59.0777 62.3333 58.667 61.9227 58.667 61.4167C58.667 60.9107 59.0777 60.5 59.5837 60.5C62.11 60.5 64.167 62.5552 64.167 65.0833C64.167 65.5893 63.7563 66 63.2503 66Z",class:C(e.primaryFillColor)},null,2)]),n]))}};export{s as _}; +import{o as d,c as i,b as l,J as C}from"./main-pPEsZPea.js";const o={width:"118",height:"110",viewBox:"0 0 118 110",fill:"none",xmlns:"http://www.w3.org/2000/svg"},r={"clip-path":"url(#clip0)"},n=l("defs",null,[l("clipPath",{id:"clip0"},[l("rect",{width:"117.333",height:"110",fill:"white"})])],-1),s={__name:"CapsuleIcon",props:{primaryFillColor:{type:String,default:"fill-primary-500"},secondaryFillColor:{type:String,default:"fill-gray-600"}},setup(e){return(a,c)=>(d(),i("svg",o,[l("g",r,[l("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M58.6672 32.9999C42.1415 32.9999 32.973 28.5119 32.5898 28.3194L33.4093 26.6804C33.4992 26.7244 42.6127 31.1666 58.6672 31.1666C74.542 31.1666 83.8388 26.7208 83.9323 26.6768L84.7354 28.3231C84.3449 28.5156 74.9618 32.9999 58.6672 32.9999Z",class:C(e.primaryFillColor)},null,2),l("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M25.2438 39.0117L28.4191 40.8451C28.839 41.0871 29.1415 41.4831 29.2698 41.9597C29.3963 42.4346 29.3321 42.9296 29.0901 43.3494L14.4235 68.7521C14.099 69.3167 13.4866 69.6669 12.8248 69.6669C12.504 69.6669 12.1978 69.5844 11.9191 69.4231L8.74382 67.5897L7.82715 69.1774L11.0025 71.0107C11.5763 71.3426 12.2051 71.5002 12.8248 71.5002C14.0953 71.5002 15.3346 70.8421 16.0111 69.6687L30.6778 44.2661C31.6861 42.5189 31.083 40.2657 29.3358 39.2574L26.1605 37.4241L25.2438 39.0117Z",class:C(e.primaryFillColor)},null,2),l("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M91.1729 37.4241L87.9976 39.2574C86.2504 40.2657 85.6472 42.5189 86.6556 44.2661L101.322 69.6687C101.999 70.8421 103.238 71.5002 104.509 71.5002C105.128 71.5002 105.757 71.3426 106.331 71.0107L109.506 69.1774L108.59 67.5897L105.414 69.4231C105.139 69.5826 104.826 69.6669 104.509 69.6669C103.847 69.6669 103.234 69.3167 102.91 68.7521L88.2432 43.3494C88.0012 42.9296 87.9371 42.4346 88.0636 41.9597C88.1919 41.4831 88.4944 41.0871 88.9142 40.8451L92.0896 39.0117L91.1729 37.4241Z",class:C(e.primaryFillColor)},null,2),l("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M115.5 84.3333V87.6993C115.5 89.2797 114.424 90.6308 112.88 90.9883C112.013 91.19 111.049 91.4393 109.96 91.7198C102.573 93.6228 88.8268 97.1667 58.6667 97.1667C28.292 97.1667 14.6942 93.6338 7.38833 91.7345C6.29383 91.4503 5.324 91.1992 4.44767 90.9938C2.90767 90.6363 1.83333 89.2833 1.83333 87.7067V84.3333L0 82.5V87.7067C0 90.134 1.66833 92.2295 4.0315 92.7795C10.9322 94.3873 23.6812 99 58.6667 99C93.3478 99 106.372 94.3818 113.296 92.7758C115.661 92.2258 117.333 90.1285 117.333 87.6993V82.5",class:C(e.primaryFillColor)},null,2),l("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M79.6139 20.1666L115.245 81.7354C115.841 82.7566 115.344 84.0656 114.214 84.4102C107.345 86.4966 89.3159 89.8333 58.6662 89.8333C27.9744 89.8333 9.97652 86.3371 3.12535 84.2526C1.99602 83.9079 1.49919 82.5989 2.09502 81.5778L37.7204 20.1666L36.6662 18.3333L0.503686 80.6666C-0.686148 82.7071 0.322186 85.3251 2.58085 86.0163C9.60985 88.1704 27.7104 91.6666 58.6662 91.6666C89.4625 91.6666 107.664 88.3189 114.742 86.1666C117.008 85.4772 118.022 82.8574 116.829 80.8133L80.6662 18.3333",class:C(e.secondaryFillColor)},null,2),l("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M110.814 92.4116L115.245 100.069C115.841 101.089 115.344 102.4 114.214 102.742C107.345 104.831 89.3159 108.167 58.6662 108.167C27.9744 108.167 9.97469 104.671 3.12535 102.585C1.99602 102.242 1.49919 100.931 2.09502 99.9117L6.41985 92.4556L4.75885 91.6672L0.503686 99.0006C-0.686148 101.041 0.322185 103.657 2.58085 104.35C9.60985 106.504 27.7104 110.001 58.6662 110.001C89.4625 110.001 107.664 106.653 114.742 104.501C117.007 103.811 118.022 101.191 116.829 99.1472L112.682 91.9789L110.814 92.4116Z",class:C(e.secondaryFillColor)},null,2),l("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M58.667 0C47.238 0 36.667 7.1335 36.667 18.3407V20.1667C36.667 20.1667 42.6052 23.8333 58.667 23.8333C74.6665 23.8333 80.667 20.1667 80.667 20.1667V18.3333C80.667 7.24167 70.767 0 58.667 0ZM58.667 1.83333C70.3527 1.83333 78.8337 8.7725 78.8337 18.3333V19.0172C76.6887 19.9302 70.5103 22 58.667 22C46.7705 22 40.6197 19.9283 38.5003 19.0227V18.3407C38.5003 12.3658 41.7692 8.55617 44.51 6.41117C48.2317 3.50167 53.3907 1.83333 58.667 1.83333Z",class:C(e.secondaryFillColor)},null,2),l("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M69.6667 53.1666C70.6768 53.1666 71.5 53.9898 71.5 54.9999V89.8333H73.3333V54.9999C73.3333 52.9741 71.6925 51.3333 69.6667 51.3333H47.6667C45.6408 51.3333 44 52.9741 44 54.9999V89.8333H45.8333V54.9999C45.8333 53.9898 46.6565 53.1666 47.6667 53.1666H69.6667Z",class:C(e.secondaryFillColor)},null,2),l("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M58.6667 56.8333C53.6048 56.8333 49.5 60.9381 49.5 65.9999C49.5 71.0618 53.6048 75.1666 58.6667 75.1666C63.7285 75.1666 67.8333 71.0618 67.8333 65.9999C67.8333 60.9381 63.7285 56.8333 58.6667 56.8333ZM58.6667 58.6666C62.711 58.6666 66 61.9556 66 65.9999C66 70.0443 62.711 73.3333 58.6667 73.3333C54.6223 73.3333 51.3333 70.0443 51.3333 65.9999C51.3333 61.9556 54.6223 58.6666 58.6667 58.6666Z",class:C(e.secondaryFillColor)},null,2),l("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M63.2503 66C62.7443 66 62.3337 65.5893 62.3337 65.0833C62.3337 63.5672 61.0998 62.3333 59.5837 62.3333C59.0777 62.3333 58.667 61.9227 58.667 61.4167C58.667 60.9107 59.0777 60.5 59.5837 60.5C62.11 60.5 64.167 62.5552 64.167 65.0833C64.167 65.5893 63.7563 66 63.2503 66Z",class:C(e.primaryFillColor)},null,2)]),n]))}};export{s as _}; diff --git a/public/build/assets/CategoryModal-rNWu40xq.js b/public/build/assets/CategoryModal-ITqne-Qo.js similarity index 95% rename from public/build/assets/CategoryModal-rNWu40xq.js rename to public/build/assets/CategoryModal-ITqne-Qo.js index 76d0202f..7857be32 100644 --- a/public/build/assets/CategoryModal-rNWu40xq.js +++ b/public/build/assets/CategoryModal-ITqne-Qo.js @@ -1 +1 @@ -import{F as k,v as q,f as N,k as g,g as y,h as j,I as D,ai as G,j as L,r as i,o as B,m as b,w as r,b as m,p as v,t as C,l as e,a as n,q as T,J as z,K as E}from"./main-B9dpPbRR.js";import{u as U}from"./category-PmZRvdLB.js";const A={class:"flex justify-between w-full"},F={class:"p-8 sm:p-6"},J={class:"z-0 flex justify-end p-4 border-t border-gray-200 border-solid border-modal-bg"},O={__name:"CategoryModal",setup(K){const t=U(),u=k(),{t:p}=q.useI18n();let c=N(!1);const h=g(()=>({currentCategory:{name:{required:y.withMessage(p("validation.required"),j),minLength:y.withMessage(p("validation.name_min_length",{count:3}),D(3))},description:{maxLength:y.withMessage(p("validation.description_maxlength",{count:255}),G(255))}}})),a=L(h,g(()=>t)),I=g(()=>u.active&&u.componentName==="CategoryModal");async function w(){if(a.value.currentCategory.$touch(),a.value.currentCategory.$invalid)return!0;const s=t.isEdit?t.updateCategory:t.addCategory;c.value=!0,await s(t.currentCategory),c.value=!1,u.refreshData&&u.refreshData(),d()}function d(){u.closeModal(),setTimeout(()=>{t.$reset(),a.value.$reset()},300)}return(s,o)=>{const f=i("BaseIcon"),x=i("BaseInput"),_=i("BaseInputGroup"),M=i("BaseTextarea"),V=i("BaseInputGrid"),$=i("BaseButton"),S=i("BaseModal");return B(),b(S,{show:I.value,onClose:d},{header:r(()=>[m("div",A,[v(C(e(u).title)+" ",1),n(f,{name:"XIcon",class:"w-6 h-6 text-gray-500 cursor-pointer",onClick:d})])]),default:r(()=>[m("form",{action:"",onSubmit:T(w,["prevent"])},[m("div",F,[n(V,{layout:"one-column"},{default:r(()=>[n(_,{label:s.$t("expenses.category"),error:e(a).currentCategory.name.$error&&e(a).currentCategory.name.$errors[0].$message,required:""},{default:r(()=>[n(x,{modelValue:e(t).currentCategory.name,"onUpdate:modelValue":o[0]||(o[0]=l=>e(t).currentCategory.name=l),invalid:e(a).currentCategory.name.$error,type:"text",onInput:o[1]||(o[1]=l=>e(a).currentCategory.name.$touch())},null,8,["modelValue","invalid"])]),_:1},8,["label","error"]),n(_,{label:s.$t("expenses.description"),error:e(a).currentCategory.description.$error&&e(a).currentCategory.description.$errors[0].$message},{default:r(()=>[n(M,{modelValue:e(t).currentCategory.description,"onUpdate:modelValue":o[2]||(o[2]=l=>e(t).currentCategory.description=l),rows:"4",cols:"50",onInput:o[3]||(o[3]=l=>e(a).currentCategory.description.$touch())},null,8,["modelValue"])]),_:1},8,["label","error"])]),_:1})]),m("div",J,[n($,{type:"button",variant:"primary-outline",class:"mr-3 text-sm",onClick:d},{default:r(()=>[v(C(s.$t("general.cancel")),1)]),_:1}),n($,{loading:e(c),disabled:e(c),variant:"primary",type:"submit"},{left:r(l=>[e(c)?E("",!0):(B(),b(f,{key:0,name:"SaveIcon",class:z(l.class)},null,8,["class"]))]),default:r(()=>[v(" "+C(e(t).isEdit?s.$t("general.update"):s.$t("general.save")),1)]),_:1},8,["loading","disabled"])])],32)]),_:1},8,["show"])}}};export{O as _}; +import{F as k,v as q,f as N,k as g,g as y,h as j,I as D,ai as G,j as L,r as i,o as B,m as b,w as r,b as m,p as v,t as C,l as e,a as n,q as T,J as z,K as E}from"./main-pPEsZPea.js";import{u as U}from"./category-NTufFTmR.js";const A={class:"flex justify-between w-full"},F={class:"p-8 sm:p-6"},J={class:"z-0 flex justify-end p-4 border-t border-gray-200 border-solid border-modal-bg"},O={__name:"CategoryModal",setup(K){const t=U(),u=k(),{t:p}=q.useI18n();let c=N(!1);const h=g(()=>({currentCategory:{name:{required:y.withMessage(p("validation.required"),j),minLength:y.withMessage(p("validation.name_min_length",{count:3}),D(3))},description:{maxLength:y.withMessage(p("validation.description_maxlength",{count:255}),G(255))}}})),a=L(h,g(()=>t)),I=g(()=>u.active&&u.componentName==="CategoryModal");async function w(){if(a.value.currentCategory.$touch(),a.value.currentCategory.$invalid)return!0;const s=t.isEdit?t.updateCategory:t.addCategory;c.value=!0,await s(t.currentCategory),c.value=!1,u.refreshData&&u.refreshData(),d()}function d(){u.closeModal(),setTimeout(()=>{t.$reset(),a.value.$reset()},300)}return(s,o)=>{const f=i("BaseIcon"),x=i("BaseInput"),_=i("BaseInputGroup"),M=i("BaseTextarea"),V=i("BaseInputGrid"),$=i("BaseButton"),S=i("BaseModal");return B(),b(S,{show:I.value,onClose:d},{header:r(()=>[m("div",A,[v(C(e(u).title)+" ",1),n(f,{name:"XIcon",class:"w-6 h-6 text-gray-500 cursor-pointer",onClick:d})])]),default:r(()=>[m("form",{action:"",onSubmit:T(w,["prevent"])},[m("div",F,[n(V,{layout:"one-column"},{default:r(()=>[n(_,{label:s.$t("expenses.category"),error:e(a).currentCategory.name.$error&&e(a).currentCategory.name.$errors[0].$message,required:""},{default:r(()=>[n(x,{modelValue:e(t).currentCategory.name,"onUpdate:modelValue":o[0]||(o[0]=l=>e(t).currentCategory.name=l),invalid:e(a).currentCategory.name.$error,type:"text",onInput:o[1]||(o[1]=l=>e(a).currentCategory.name.$touch())},null,8,["modelValue","invalid"])]),_:1},8,["label","error"]),n(_,{label:s.$t("expenses.description"),error:e(a).currentCategory.description.$error&&e(a).currentCategory.description.$errors[0].$message},{default:r(()=>[n(M,{modelValue:e(t).currentCategory.description,"onUpdate:modelValue":o[2]||(o[2]=l=>e(t).currentCategory.description=l),rows:"4",cols:"50",onInput:o[3]||(o[3]=l=>e(a).currentCategory.description.$touch())},null,8,["modelValue"])]),_:1},8,["label","error"])]),_:1})]),m("div",J,[n($,{type:"button",variant:"primary-outline",class:"mr-3 text-sm",onClick:d},{default:r(()=>[v(C(s.$t("general.cancel")),1)]),_:1}),n($,{loading:e(c),disabled:e(c),variant:"primary",type:"submit"},{left:r(l=>[e(c)?E("",!0):(B(),b(f,{key:0,name:"SaveIcon",class:z(l.class)},null,8,["class"]))]),default:r(()=>[v(" "+C(e(t).isEdit?s.$t("general.update"):s.$t("general.save")),1)]),_:1},8,["loading","disabled"])])],32)]),_:1},8,["show"])}}};export{O as _}; diff --git a/public/build/assets/CompanyInfoSettings-FLrn6P4R.js b/public/build/assets/CompanyInfoSettings-0olCV2ld.js similarity index 99% rename from public/build/assets/CompanyInfoSettings-FLrn6P4R.js rename to public/build/assets/CompanyInfoSettings-0olCV2ld.js index af292615..dbd552cd 100644 --- a/public/build/assets/CompanyInfoSettings-FLrn6P4R.js +++ b/public/build/assets/CompanyInfoSettings-0olCV2ld.js @@ -1 +1 @@ -import{E as R,F as T,G as A,e as ee,v as E,f as V,H as J,k as q,g as w,h as x,a0 as ae,j as H,r,o as I,m as F,w as l,b as i,t as g,l as o,q as K,a as t,p as k,J as O,K as G,a5 as te,c as L,n as oe,N as ne,I as se}from"./main-B9dpPbRR.js";const le={class:"flex justify-between w-full"},de={class:"px-6 pt-6"},re={class:"font-medium text-lg text-left"},ie={class:"mt-2 text-sm leading-snug text-gray-500",style:{"max-width":"680px"}},ue={class:"p-4 sm:p-6 space-y-4"},me={class:"z-0 flex justify-end p-4 bg-gray-50 border-modal-bg"},pe={__name:"DeleteCompanyModal",setup(P){const p=R(),v=T(),h=A(),$=ee(),{t:S}=E.useI18n();let u=V(!1);const e=J({id:p.selectedCompany.id,name:null}),b=q(()=>v.active&&v.componentName==="DeleteCompanyModal"),f={formData:{name:{required:w.withMessage(S("validation.required"),x),sameAsName:w.withMessage(S("validation.company_name_not_same"),ae(p.selectedCompany.name))}}},c=H(f,{formData:e},{$scope:!1});async function B(){if(c.value.$touch(),c.value.$invalid)return!0;const y=p.companies[0];u.value=!0;try{const _=await p.deleteCompany(e);console.log(_.data.success),_.data.success&&(m(),await p.setSelectedCompany(y),$.push("/admin/dashboard"),await h.setIsAppLoaded(!1),await h.bootstrap()),u.value=!1}catch{u.value=!1}}function M(){e.id=null,e.name="",c.value.$reset()}function m(){v.closeModal(),setTimeout(()=>{M(),c.value.$reset()},300)}return(y,_)=>{const N=r("BaseInput"),U=r("BaseInputGroup"),s=r("BaseButton"),a=r("BaseIcon"),D=r("BaseModal");return I(),F(D,{show:b.value,onClose:m},{default:l(()=>[i("div",le,[i("div",de,[i("h6",re,g(o(v).title),1),i("p",ie,g(y.$t("settings.company_info.delete_company_modal_desc",{company:o(p).selectedCompany.name})),1)])]),i("form",{action:"",onSubmit:K(B,["prevent"])},[i("div",ue,[t(U,{label:y.$t("settings.company_info.delete_company_modal_label",{company:o(p).selectedCompany.name}),error:o(c).formData.name.$error&&o(c).formData.name.$errors[0].$message,required:""},{default:l(()=>[t(N,{modelValue:e.name,"onUpdate:modelValue":_[0]||(_[0]=d=>e.name=d),invalid:o(c).formData.name.$error,onInput:_[1]||(_[1]=d=>o(c).formData.name.$touch())},null,8,["modelValue","invalid"])]),_:1},8,["label","error"])]),i("div",me,[t(s,{class:"mr-3 text-sm",variant:"primary-outline",outline:"",type:"button",onClick:m},{default:l(()=>[k(g(y.$t("general.cancel")),1)]),_:1}),t(s,{loading:o(u),disabled:o(u),variant:"danger",type:"submit"},{left:l(d=>[o(u)?G("",!0):(I(),F(a,{key:0,name:"TrashIcon",class:O(d.class)},null,8,["class"]))]),default:l(()=>[k(" "+g(y.$t("general.delete")),1)]),_:1},8,["loading","disabled"])])],32)]),_:1},8,["show"])}}},ce={key:0,class:"py-5"},_e={class:"text-lg leading-6 font-medium text-gray-900"},fe={class:"mt-2 max-w-xl text-sm text-gray-500"},ye={class:"mt-5"},ve={__name:"CompanyInfoSettings",setup(P){const p=R(),v=A(),h=T(),{t:$}=E.useI18n(),S=te("utils");let u=V(!1);const e=J({name:null,logo:null,address:{address_street_1:"",address_street_2:"",website:"",country_id:null,state:"",city:"",phone:"",zip:""}});S.mergeSettings(e,{...p.selectedCompany});let b=V([]),f=V(null),c=V(null);const B=V(!1);e.logo&&b.value.push({image:e.logo});const M=q(()=>({name:{required:w.withMessage($("validation.required"),x),minLength:w.withMessage($("validation.name_min_length"),se(3))},address:{country_id:{required:w.withMessage($("validation.required"),x)}}})),m=H(M,q(()=>e));v.fetchCountries();function y(s,a,D,d){c.value=d.name,f.value=a}function _(){f.value=null,B.value=!0}async function N(){if(m.value.$touch(),m.value.$invalid)return!0;if(u.value=!0,(await p.updateCompany(e)).data.data){if(f.value||B.value){let a=new FormData;f.value&&a.append("company_logo",JSON.stringify({name:c.value,data:f.value})),a.append("is_company_logo_removed",B.value),await p.updateCompanyLogo(a),f.value=null,B.value=!1}u.value=!1}u.value=!1}function U(s){h.openModal({title:$("settings.company_info.are_you_absolutely_sure"),componentName:"DeleteCompanyModal",size:"sm"})}return(s,a)=>{const D=r("BaseFileUploader"),d=r("BaseInputGroup"),z=r("BaseInputGrid"),C=r("BaseInput"),Q=r("BaseMultiselect"),j=r("BaseTextarea"),W=r("BaseIcon"),X=r("BaseButton"),Y=r("BaseDivider"),Z=r("BaseSettingCard");return I(),L(ne,null,[i("form",{onSubmit:K(N,["prevent"])},[t(Z,{title:s.$t("settings.company_info.company_info"),description:s.$t("settings.company_info.section_description")},{default:l(()=>[t(z,{class:"mt-5"},{default:l(()=>[t(d,{label:s.$t("settings.company_info.company_logo")},{default:l(()=>[t(D,{modelValue:o(b),"onUpdate:modelValue":a[0]||(a[0]=n=>oe(b)?b.value=n:b=n),base64:"",onChange:y,onRemove:_},null,8,["modelValue"])]),_:1},8,["label"])]),_:1}),t(z,{class:"mt-5"},{default:l(()=>[t(d,{label:s.$t("settings.company_info.company_name"),error:o(m).name.$error&&o(m).name.$errors[0].$message,required:""},{default:l(()=>[t(C,{modelValue:e.name,"onUpdate:modelValue":a[1]||(a[1]=n=>e.name=n),invalid:o(m).name.$error,onBlur:a[2]||(a[2]=n=>o(m).name.$touch())},null,8,["modelValue","invalid"])]),_:1},8,["label","error"]),t(d,{label:s.$t("settings.company_info.phone")},{default:l(()=>[t(C,{modelValue:e.address.phone,"onUpdate:modelValue":a[3]||(a[3]=n=>e.address.phone=n)},null,8,["modelValue"])]),_:1},8,["label"]),t(d,{label:s.$t("settings.company_info.country"),error:o(m).address.country_id.$error&&o(m).address.country_id.$errors[0].$message,required:""},{default:l(()=>[t(Q,{modelValue:e.address.country_id,"onUpdate:modelValue":a[4]||(a[4]=n=>e.address.country_id=n),label:"name",invalid:o(m).address.country_id.$error,options:o(v).countries,"value-prop":"id","can-deselect":!0,"can-clear":!1,searchable:"","track-by":"name"},null,8,["modelValue","invalid","options"])]),_:1},8,["label","error"]),t(d,{label:s.$t("settings.company_info.state")},{default:l(()=>[t(C,{modelValue:e.address.state,"onUpdate:modelValue":a[5]||(a[5]=n=>e.address.state=n),name:"state",type:"text"},null,8,["modelValue"])]),_:1},8,["label"]),t(d,{label:s.$t("settings.company_info.city")},{default:l(()=>[t(C,{modelValue:e.address.city,"onUpdate:modelValue":a[6]||(a[6]=n=>e.address.city=n),type:"text"},null,8,["modelValue"])]),_:1},8,["label"]),t(d,{label:s.$t("settings.company_info.zip")},{default:l(()=>[t(C,{modelValue:e.address.zip,"onUpdate:modelValue":a[7]||(a[7]=n=>e.address.zip=n)},null,8,["modelValue"])]),_:1},8,["label"]),i("div",null,[t(d,{label:s.$t("settings.company_info.address")},{default:l(()=>[t(j,{modelValue:e.address.address_street_1,"onUpdate:modelValue":a[8]||(a[8]=n=>e.address.address_street_1=n),rows:"2"},null,8,["modelValue"])]),_:1},8,["label"]),t(j,{modelValue:e.address.address_street_2,"onUpdate:modelValue":a[9]||(a[9]=n=>e.address.address_street_2=n),rows:"2",row:2,class:"mt-2"},null,8,["modelValue"])])]),_:1}),t(X,{loading:o(u),disabled:o(u),type:"submit",class:"mt-6"},{left:l(n=>[o(u)?G("",!0):(I(),F(W,{key:0,class:O(n.class),name:"SaveIcon"},null,8,["class"]))]),default:l(()=>[k(" "+g(s.$t("settings.company_info.save")),1)]),_:1},8,["loading","disabled"]),o(p).companies.length!==1?(I(),L("div",ce,[t(Y,{class:"my-4"}),i("h3",_e,g(s.$t("settings.company_info.delete_company")),1),i("div",fe,[i("p",null,g(s.$t("settings.company_info.delete_company_description")),1)]),i("div",ye,[i("button",{type:"button",class:"inline-flex items-center justify-center px-4 py-2 border border-transparent font-medium rounded-md text-red-700 bg-red-100 hover:bg-red-200 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-red-500 sm:text-sm",onClick:U},g(s.$t("general.delete")),1)])])):G("",!0)]),_:1},8,["title","description"])],32),t(pe)],64)}}};export{ve as default}; +import{E as R,F as T,G as A,e as ee,v as E,f as V,H as J,k as q,g as w,h as x,a0 as ae,j as H,r,o as I,m as F,w as l,b as i,t as g,l as o,q as K,a as t,p as k,J as O,K as G,a5 as te,c as L,n as oe,N as ne,I as se}from"./main-pPEsZPea.js";const le={class:"flex justify-between w-full"},de={class:"px-6 pt-6"},re={class:"font-medium text-lg text-left"},ie={class:"mt-2 text-sm leading-snug text-gray-500",style:{"max-width":"680px"}},ue={class:"p-4 sm:p-6 space-y-4"},me={class:"z-0 flex justify-end p-4 bg-gray-50 border-modal-bg"},pe={__name:"DeleteCompanyModal",setup(P){const p=R(),v=T(),h=A(),$=ee(),{t:S}=E.useI18n();let u=V(!1);const e=J({id:p.selectedCompany.id,name:null}),b=q(()=>v.active&&v.componentName==="DeleteCompanyModal"),f={formData:{name:{required:w.withMessage(S("validation.required"),x),sameAsName:w.withMessage(S("validation.company_name_not_same"),ae(p.selectedCompany.name))}}},c=H(f,{formData:e},{$scope:!1});async function B(){if(c.value.$touch(),c.value.$invalid)return!0;const y=p.companies[0];u.value=!0;try{const _=await p.deleteCompany(e);console.log(_.data.success),_.data.success&&(m(),await p.setSelectedCompany(y),$.push("/admin/dashboard"),await h.setIsAppLoaded(!1),await h.bootstrap()),u.value=!1}catch{u.value=!1}}function M(){e.id=null,e.name="",c.value.$reset()}function m(){v.closeModal(),setTimeout(()=>{M(),c.value.$reset()},300)}return(y,_)=>{const N=r("BaseInput"),U=r("BaseInputGroup"),s=r("BaseButton"),a=r("BaseIcon"),D=r("BaseModal");return I(),F(D,{show:b.value,onClose:m},{default:l(()=>[i("div",le,[i("div",de,[i("h6",re,g(o(v).title),1),i("p",ie,g(y.$t("settings.company_info.delete_company_modal_desc",{company:o(p).selectedCompany.name})),1)])]),i("form",{action:"",onSubmit:K(B,["prevent"])},[i("div",ue,[t(U,{label:y.$t("settings.company_info.delete_company_modal_label",{company:o(p).selectedCompany.name}),error:o(c).formData.name.$error&&o(c).formData.name.$errors[0].$message,required:""},{default:l(()=>[t(N,{modelValue:e.name,"onUpdate:modelValue":_[0]||(_[0]=d=>e.name=d),invalid:o(c).formData.name.$error,onInput:_[1]||(_[1]=d=>o(c).formData.name.$touch())},null,8,["modelValue","invalid"])]),_:1},8,["label","error"])]),i("div",me,[t(s,{class:"mr-3 text-sm",variant:"primary-outline",outline:"",type:"button",onClick:m},{default:l(()=>[k(g(y.$t("general.cancel")),1)]),_:1}),t(s,{loading:o(u),disabled:o(u),variant:"danger",type:"submit"},{left:l(d=>[o(u)?G("",!0):(I(),F(a,{key:0,name:"TrashIcon",class:O(d.class)},null,8,["class"]))]),default:l(()=>[k(" "+g(y.$t("general.delete")),1)]),_:1},8,["loading","disabled"])])],32)]),_:1},8,["show"])}}},ce={key:0,class:"py-5"},_e={class:"text-lg leading-6 font-medium text-gray-900"},fe={class:"mt-2 max-w-xl text-sm text-gray-500"},ye={class:"mt-5"},ve={__name:"CompanyInfoSettings",setup(P){const p=R(),v=A(),h=T(),{t:$}=E.useI18n(),S=te("utils");let u=V(!1);const e=J({name:null,logo:null,address:{address_street_1:"",address_street_2:"",website:"",country_id:null,state:"",city:"",phone:"",zip:""}});S.mergeSettings(e,{...p.selectedCompany});let b=V([]),f=V(null),c=V(null);const B=V(!1);e.logo&&b.value.push({image:e.logo});const M=q(()=>({name:{required:w.withMessage($("validation.required"),x),minLength:w.withMessage($("validation.name_min_length"),se(3))},address:{country_id:{required:w.withMessage($("validation.required"),x)}}})),m=H(M,q(()=>e));v.fetchCountries();function y(s,a,D,d){c.value=d.name,f.value=a}function _(){f.value=null,B.value=!0}async function N(){if(m.value.$touch(),m.value.$invalid)return!0;if(u.value=!0,(await p.updateCompany(e)).data.data){if(f.value||B.value){let a=new FormData;f.value&&a.append("company_logo",JSON.stringify({name:c.value,data:f.value})),a.append("is_company_logo_removed",B.value),await p.updateCompanyLogo(a),f.value=null,B.value=!1}u.value=!1}u.value=!1}function U(s){h.openModal({title:$("settings.company_info.are_you_absolutely_sure"),componentName:"DeleteCompanyModal",size:"sm"})}return(s,a)=>{const D=r("BaseFileUploader"),d=r("BaseInputGroup"),z=r("BaseInputGrid"),C=r("BaseInput"),Q=r("BaseMultiselect"),j=r("BaseTextarea"),W=r("BaseIcon"),X=r("BaseButton"),Y=r("BaseDivider"),Z=r("BaseSettingCard");return I(),L(ne,null,[i("form",{onSubmit:K(N,["prevent"])},[t(Z,{title:s.$t("settings.company_info.company_info"),description:s.$t("settings.company_info.section_description")},{default:l(()=>[t(z,{class:"mt-5"},{default:l(()=>[t(d,{label:s.$t("settings.company_info.company_logo")},{default:l(()=>[t(D,{modelValue:o(b),"onUpdate:modelValue":a[0]||(a[0]=n=>oe(b)?b.value=n:b=n),base64:"",onChange:y,onRemove:_},null,8,["modelValue"])]),_:1},8,["label"])]),_:1}),t(z,{class:"mt-5"},{default:l(()=>[t(d,{label:s.$t("settings.company_info.company_name"),error:o(m).name.$error&&o(m).name.$errors[0].$message,required:""},{default:l(()=>[t(C,{modelValue:e.name,"onUpdate:modelValue":a[1]||(a[1]=n=>e.name=n),invalid:o(m).name.$error,onBlur:a[2]||(a[2]=n=>o(m).name.$touch())},null,8,["modelValue","invalid"])]),_:1},8,["label","error"]),t(d,{label:s.$t("settings.company_info.phone")},{default:l(()=>[t(C,{modelValue:e.address.phone,"onUpdate:modelValue":a[3]||(a[3]=n=>e.address.phone=n)},null,8,["modelValue"])]),_:1},8,["label"]),t(d,{label:s.$t("settings.company_info.country"),error:o(m).address.country_id.$error&&o(m).address.country_id.$errors[0].$message,required:""},{default:l(()=>[t(Q,{modelValue:e.address.country_id,"onUpdate:modelValue":a[4]||(a[4]=n=>e.address.country_id=n),label:"name",invalid:o(m).address.country_id.$error,options:o(v).countries,"value-prop":"id","can-deselect":!0,"can-clear":!1,searchable:"","track-by":"name"},null,8,["modelValue","invalid","options"])]),_:1},8,["label","error"]),t(d,{label:s.$t("settings.company_info.state")},{default:l(()=>[t(C,{modelValue:e.address.state,"onUpdate:modelValue":a[5]||(a[5]=n=>e.address.state=n),name:"state",type:"text"},null,8,["modelValue"])]),_:1},8,["label"]),t(d,{label:s.$t("settings.company_info.city")},{default:l(()=>[t(C,{modelValue:e.address.city,"onUpdate:modelValue":a[6]||(a[6]=n=>e.address.city=n),type:"text"},null,8,["modelValue"])]),_:1},8,["label"]),t(d,{label:s.$t("settings.company_info.zip")},{default:l(()=>[t(C,{modelValue:e.address.zip,"onUpdate:modelValue":a[7]||(a[7]=n=>e.address.zip=n)},null,8,["modelValue"])]),_:1},8,["label"]),i("div",null,[t(d,{label:s.$t("settings.company_info.address")},{default:l(()=>[t(j,{modelValue:e.address.address_street_1,"onUpdate:modelValue":a[8]||(a[8]=n=>e.address.address_street_1=n),rows:"2"},null,8,["modelValue"])]),_:1},8,["label"]),t(j,{modelValue:e.address.address_street_2,"onUpdate:modelValue":a[9]||(a[9]=n=>e.address.address_street_2=n),rows:"2",row:2,class:"mt-2"},null,8,["modelValue"])])]),_:1}),t(X,{loading:o(u),disabled:o(u),type:"submit",class:"mt-6"},{left:l(n=>[o(u)?G("",!0):(I(),F(W,{key:0,class:O(n.class),name:"SaveIcon"},null,8,["class"]))]),default:l(()=>[k(" "+g(s.$t("settings.company_info.save")),1)]),_:1},8,["loading","disabled"]),o(p).companies.length!==1?(I(),L("div",ce,[t(Y,{class:"my-4"}),i("h3",_e,g(s.$t("settings.company_info.delete_company")),1),i("div",fe,[i("p",null,g(s.$t("settings.company_info.delete_company_description")),1)]),i("div",ye,[i("button",{type:"button",class:"inline-flex items-center justify-center px-4 py-2 border border-transparent font-medium rounded-md text-red-700 bg-red-100 hover:bg-red-200 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-red-500 sm:text-sm",onClick:U},g(s.$t("general.delete")),1)])])):G("",!0)]),_:1},8,["title","description"])],32),t(pe)],64)}}};export{ve as default}; diff --git a/public/build/assets/Create-MQfmeR_6.js b/public/build/assets/Create-I8rh9FkW.js similarity index 95% rename from public/build/assets/Create-MQfmeR_6.js rename to public/build/assets/Create-I8rh9FkW.js index 27d3da6c..4972cf87 100644 --- a/public/build/assets/Create-MQfmeR_6.js +++ b/public/build/assets/Create-I8rh9FkW.js @@ -1 +1 @@ -import{a8 as ue,E as ie,ae as de,F as ce,L as pe,e as me,v as ge,G as xe,f as k,k as b,j as _e,aA as ye,r as i,o as f,c as fe,a as r,w as o,b as q,l as e,m as E,J as F,p as w,t as I,K as h,q as ve,N as Ee,g as m,h as C,aC as $e,ai as N,ag as be,X as he}from"./main-B9dpPbRR.js";import{u as Ce}from"./expense-DZq_Zbqb.js";import{u as Be}from"./category-PmZRvdLB.js";import{_ as Ve}from"./CreateCustomFields-blY-YoZ8.js";import{_ as we}from"./CategoryModal-rNWu40xq.js";import{_ as Ie}from"./ExchangeRateConverter-aybyIXMj.js";import"./dynamic-import-helper-0gtGTknh.js";import"./exchange-rate-M4ruO0OO.js";const Se={class:"hidden md:block"},Me={class:"block md:hidden"},G="newExpense",je={__name:"Create",setup(ke){const _=ue(),D=ie(),t=Ce(),y=Be(),j=de(),A=ce(),v=pe(),L=me(),{t:d}=ge.useI18n(),U=xe();let g=k(!1),u=k(!1);const S=k(!1),T=b(()=>({currentExpense:{expense_category_id:{required:m.withMessage(d("validation.required"),C)},expense_date:{required:m.withMessage(d("validation.required"),C)},amount:{required:m.withMessage(d("validation.required"),C),minValue:m.withMessage(d("validation.price_minvalue"),$e(.1)),maxLength:m.withMessage(d("validation.price_maxlength"),N(20))},notes:{maxLength:m.withMessage(d("validation.description_maxlength"),N(65e3))},currency_id:{required:m.withMessage(d("validation.required"),C)},exchange_rate:{required:be(function(){return m.withMessage(d("validation.required"),C),t.showExchangeRate}),decimal:m.withMessage(d("validation.valid_exchange_rate"),he)}}})),l=_e(T,t,{$scope:G}),R=b({get:()=>t.currentExpense.amount/100,set:a=>{t.currentExpense.amount=Math.round(a*100)}}),c=b(()=>v.name==="expenses.edit"),P=b(()=>c.value?d("expenses.edit_expense"):d("expenses.new_expense")),z=b(()=>c.value?`/reports/expenses/${v.params.id}/download-receipt`:"");t.resetCurrentExpenseData(),j.resetCustomFields(),W();function H(a,n){t.currentExpense.attachment_receipt=n}function O(){t.currentExpense.attachment_receipt=null,S.value=!0}function J(){A.openModal({title:d("settings.expense_category.add_category"),componentName:"CategoryModal",size:"sm"})}function K(a){t.currentExpense.selectedCurrency=U.currencies.find(n=>n.id===a)}async function X(a){let n=await y.fetchCategories({search:a});if(n.data.data.length>0&&y.editCategory&&!n.data.data.find(p=>p.id==y.editCategory.id)){let p=Object.assign({},y.editCategory);n.data.data.unshift(p)}return n.data.data}async function Q(a){let n=await _.fetchCustomers({search:a});if(n.data.data.length>0&&_.editCustomer&&!n.data.data.find(p=>p.id==_.editCustomer.id)){let p=Object.assign({},_.editCustomer);n.data.data.unshift(p)}return n.data.data}async function W(){if(c.value||(t.currentExpense.currency_id=D.selectedCompanyCurrency.id,t.currentExpense.selectedCurrency=D.selectedCompanyCurrency),u.value=!0,await t.fetchPaymentModes({limit:"all"}),c.value){const a=await t.fetchExpense(v.params.id);t.currentExpense.currency_id=t.currentExpense.selectedCurrency.id,a.data&&(!y.editCategory&&a.data.data.expense_category&&(y.editCategory=a.data.data.expense_category),!_.editCustomer&&a.data.data.customer&&(_.editCustomer=a.data.data.customer))}else v.query.customer&&(t.currentExpense.customer_id=v.query.customer);u.value=!1}async function Y(){if(l.value.$touch(),l.value.$invalid)return;g.value=!0;let a=t.currentExpense;try{c.value?await t.updateExpense({id:v.params.id,data:a,isAttachmentReceiptRemoved:S.value}):await t.addExpense(a),g.value=!1,t.currentExpense.attachment_receipt=null,S.value=!1,L.push("/admin/expenses")}catch(n){console.error(n),g.value=!1;return}}return ye(()=>{t.resetCurrentExpenseData(),_.editCustomer=null,y.editCategory=null}),(a,n)=>{const $=i("BaseBreadcrumbItem"),p=i("BaseBreadcrumb"),B=i("BaseIcon"),M=i("BaseButton"),Z=i("BasePageHeader"),ee=i("BaseSelectAction"),V=i("BaseMultiselect"),x=i("BaseInputGroup"),te=i("BaseDatePicker"),ne=i("BaseMoney"),ae=i("BaseTextarea"),re=i("BaseFileUploader"),se=i("BaseInputGrid"),oe=i("BaseCard"),le=i("BasePage");return f(),fe(Ee,null,[r(we),r(le,{class:"relative"},{default:o(()=>[q("form",{action:"",onSubmit:ve(Y,["prevent"])},[r(Z,{title:P.value,class:"mb-5"},{actions:o(()=>[c.value&&e(t).currentExpense.attachment_receipt_url?(f(),E(M,{key:0,href:z.value,tag:"a",variant:"primary-outline",type:"button",class:"mr-2"},{left:o(s=>[r(B,{name:"DownloadIcon",class:F(s.class)},null,8,["class"])]),default:o(()=>[w(" "+I(a.$t("expenses.download_receipt")),1)]),_:1},8,["href"])):h("",!0),q("div",Se,[r(M,{loading:e(g),"content-loading":e(u),disabled:e(g),variant:"primary",type:"submit"},{left:o(s=>[e(g)?h("",!0):(f(),E(B,{key:0,name:"SaveIcon",class:F(s.class)},null,8,["class"]))]),default:o(()=>[w(" "+I(c.value?a.$t("expenses.update_expense"):a.$t("expenses.save_expense")),1)]),_:1},8,["loading","content-loading","disabled"])])]),default:o(()=>[r(p,null,{default:o(()=>[r($,{title:a.$t("general.home"),to:"/admin/dashboard"},null,8,["title"]),r($,{title:a.$t("expenses.expense",2),to:"/admin/expenses"},null,8,["title"]),r($,{title:P.value,to:"#",active:""},null,8,["title"])]),_:1})]),_:1},8,["title"]),r(oe,null,{default:o(()=>[r(se,null,{default:o(()=>[r(x,{label:a.$t("expenses.category"),error:e(l).currentExpense.expense_category_id.$error&&e(l).currentExpense.expense_category_id.$errors[0].$message,"content-loading":e(u),required:""},{default:o(()=>[e(u)?h("",!0):(f(),E(V,{key:0,modelValue:e(t).currentExpense.expense_category_id,"onUpdate:modelValue":n[0]||(n[0]=s=>e(t).currentExpense.expense_category_id=s),"content-loading":e(u),"value-prop":"id",label:"name","track-by":"id",options:X,"filter-results":!1,"resolve-on-load":"",delay:500,searchable:"",invalid:e(l).currentExpense.expense_category_id.$error,placeholder:a.$t("expenses.categories.select_a_category"),onInput:n[1]||(n[1]=s=>e(l).currentExpense.expense_category_id.$touch())},{action:o(()=>[r(ee,{onClick:J},{default:o(()=>[r(B,{name:"PlusIcon",class:"h-4 mr-2 -ml-2 text-center text-primary-400"}),w(" "+I(a.$t("settings.expense_category.add_new_category")),1)]),_:1})]),_:1},8,["modelValue","content-loading","invalid","placeholder"]))]),_:1},8,["label","error","content-loading"]),r(x,{label:a.$t("expenses.expense_date"),error:e(l).currentExpense.expense_date.$error&&e(l).currentExpense.expense_date.$errors[0].$message,"content-loading":e(u),required:""},{default:o(()=>[r(te,{modelValue:e(t).currentExpense.expense_date,"onUpdate:modelValue":n[2]||(n[2]=s=>e(t).currentExpense.expense_date=s),"content-loading":e(u),"calendar-button":!0,invalid:e(l).currentExpense.expense_date.$error,onInput:n[3]||(n[3]=s=>e(l).currentExpense.expense_date.$touch())},null,8,["modelValue","content-loading","invalid"])]),_:1},8,["label","error","content-loading"]),r(x,{label:a.$t("expenses.amount"),error:e(l).currentExpense.amount.$error&&e(l).currentExpense.amount.$errors[0].$message,"content-loading":e(u),required:""},{default:o(()=>[(f(),E(ne,{key:e(t).currentExpense.selectedCurrency,modelValue:R.value,"onUpdate:modelValue":n[4]||(n[4]=s=>R.value=s),class:"focus:border focus:border-solid focus:border-primary-500",invalid:e(l).currentExpense.amount.$error,currency:e(t).currentExpense.selectedCurrency,onInput:n[5]||(n[5]=s=>e(l).currentExpense.amount.$touch())},null,8,["modelValue","invalid","currency"]))]),_:1},8,["label","error","content-loading"]),r(x,{label:a.$t("expenses.currency"),"content-loading":e(u),error:e(l).currentExpense.currency_id.$error&&e(l).currentExpense.currency_id.$errors[0].$message,required:""},{default:o(()=>[r(V,{modelValue:e(t).currentExpense.currency_id,"onUpdate:modelValue":[n[6]||(n[6]=s=>e(t).currentExpense.currency_id=s),K],"value-prop":"id",label:"name","track-by":"name","content-loading":e(u),options:e(U).currencies,searchable:"","can-deselect":!1,placeholder:a.$t("customers.select_currency"),invalid:e(l).currentExpense.currency_id.$error,class:"w-full"},null,8,["modelValue","content-loading","options","placeholder","invalid"])]),_:1},8,["label","content-loading","error"]),r(Ie,{store:e(t),"store-prop":"currentExpense",v:e(l).currentExpense,"is-loading":e(u),"is-edit":c.value,"customer-currency":e(t).currentExpense.currency_id},null,8,["store","v","is-loading","is-edit","customer-currency"]),r(x,{"content-loading":e(u),label:a.$t("expenses.customer")},{default:o(()=>[e(u)?h("",!0):(f(),E(V,{key:0,modelValue:e(t).currentExpense.customer_id,"onUpdate:modelValue":n[7]||(n[7]=s=>e(t).currentExpense.customer_id=s),"content-loading":e(u),"value-prop":"id",label:"name","track-by":"id",options:Q,"filter-results":!1,"resolve-on-load":"",delay:500,searchable:"",placeholder:a.$t("customers.select_a_customer")},null,8,["modelValue","content-loading","placeholder"]))]),_:1},8,["content-loading","label"]),r(x,{"content-loading":e(u),label:a.$t("payments.payment_mode")},{default:o(()=>[r(V,{modelValue:e(t).currentExpense.payment_method_id,"onUpdate:modelValue":n[8]||(n[8]=s=>e(t).currentExpense.payment_method_id=s),"content-loading":e(u),label:"name","value-prop":"id","track-by":"name",options:e(t).paymentModes,placeholder:a.$t("payments.select_payment_mode"),searchable:""},null,8,["modelValue","content-loading","options","placeholder"])]),_:1},8,["content-loading","label"]),r(x,{"content-loading":e(u),label:a.$t("expenses.note"),error:e(l).currentExpense.notes.$error&&e(l).currentExpense.notes.$errors[0].$message},{default:o(()=>[r(ae,{modelValue:e(t).currentExpense.notes,"onUpdate:modelValue":n[9]||(n[9]=s=>e(t).currentExpense.notes=s),"content-loading":e(u),row:4,rows:"4",onInput:n[10]||(n[10]=s=>e(l).currentExpense.notes.$touch())},null,8,["modelValue","content-loading"])]),_:1},8,["content-loading","label","error"]),r(x,{label:a.$t("expenses.receipt")},{default:o(()=>[r(re,{modelValue:e(t).currentExpense.receiptFiles,"onUpdate:modelValue":n[11]||(n[11]=s=>e(t).currentExpense.receiptFiles=s),accept:"image/*,.doc,.docx,.pdf,.csv,.xlsx,.xls",onChange:H,onRemove:O},null,8,["modelValue"])]),_:1},8,["label"]),r(Ve,{"is-edit":c.value,class:"col-span-2","is-loading":e(u),type:"Expense",store:e(t),"store-prop":"currentExpense","custom-field-scope":G},null,8,["is-edit","is-loading","store"]),q("div",Me,[r(M,{loading:e(g),tabindex:6,variant:"primary",type:"submit",class:"flex justify-center w-full"},{left:o(s=>[e(g)?h("",!0):(f(),E(B,{key:0,name:"SaveIcon",class:F(s.class)},null,8,["class"]))]),default:o(()=>[w(" "+I(c.value?a.$t("expenses.update_expense"):a.$t("expenses.save_expense")),1)]),_:1},8,["loading"])])]),_:1})]),_:1})],32)]),_:1})],64)}}};export{je as default}; +import{a8 as ue,E as ie,ae as de,F as ce,L as pe,e as me,v as ge,G as xe,f as k,k as b,j as _e,aD as ye,r as i,o as f,c as fe,a as r,w as o,b as q,l as e,m as E,J as F,p as w,t as I,K as h,q as ve,N as Ee,g as m,h as C,aF as $e,ai as N,ag as be,X as he}from"./main-pPEsZPea.js";import{u as Ce}from"./expense-QlFyT7e_.js";import{u as Be}from"./category-NTufFTmR.js";import{_ as Ve}from"./CreateCustomFields-8Vbtza7g.js";import{_ as we}from"./CategoryModal-ITqne-Qo.js";import{_ as Ie}from"./ExchangeRateConverter-e1MH9GPD.js";import"./dynamic-import-helper-0gtGTknh.js";import"./exchange-rate-Md-8fXjz.js";const Se={class:"hidden md:block"},Me={class:"block md:hidden"},G="newExpense",je={__name:"Create",setup(ke){const _=ue(),D=ie(),t=Ce(),y=Be(),j=de(),A=ce(),v=pe(),L=me(),{t:d}=ge.useI18n(),U=xe();let g=k(!1),u=k(!1);const S=k(!1),T=b(()=>({currentExpense:{expense_category_id:{required:m.withMessage(d("validation.required"),C)},expense_date:{required:m.withMessage(d("validation.required"),C)},amount:{required:m.withMessage(d("validation.required"),C),minValue:m.withMessage(d("validation.price_minvalue"),$e(.1)),maxLength:m.withMessage(d("validation.price_maxlength"),N(20))},notes:{maxLength:m.withMessage(d("validation.description_maxlength"),N(65e3))},currency_id:{required:m.withMessage(d("validation.required"),C)},exchange_rate:{required:be(function(){return m.withMessage(d("validation.required"),C),t.showExchangeRate}),decimal:m.withMessage(d("validation.valid_exchange_rate"),he)}}})),l=_e(T,t,{$scope:G}),R=b({get:()=>t.currentExpense.amount/100,set:a=>{t.currentExpense.amount=Math.round(a*100)}}),c=b(()=>v.name==="expenses.edit"),P=b(()=>c.value?d("expenses.edit_expense"):d("expenses.new_expense")),z=b(()=>c.value?`/reports/expenses/${v.params.id}/download-receipt`:"");t.resetCurrentExpenseData(),j.resetCustomFields(),W();function H(a,n){t.currentExpense.attachment_receipt=n}function O(){t.currentExpense.attachment_receipt=null,S.value=!0}function J(){A.openModal({title:d("settings.expense_category.add_category"),componentName:"CategoryModal",size:"sm"})}function K(a){t.currentExpense.selectedCurrency=U.currencies.find(n=>n.id===a)}async function X(a){let n=await y.fetchCategories({search:a});if(n.data.data.length>0&&y.editCategory&&!n.data.data.find(p=>p.id==y.editCategory.id)){let p=Object.assign({},y.editCategory);n.data.data.unshift(p)}return n.data.data}async function Q(a){let n=await _.fetchCustomers({search:a});if(n.data.data.length>0&&_.editCustomer&&!n.data.data.find(p=>p.id==_.editCustomer.id)){let p=Object.assign({},_.editCustomer);n.data.data.unshift(p)}return n.data.data}async function W(){if(c.value||(t.currentExpense.currency_id=D.selectedCompanyCurrency.id,t.currentExpense.selectedCurrency=D.selectedCompanyCurrency),u.value=!0,await t.fetchPaymentModes({limit:"all"}),c.value){const a=await t.fetchExpense(v.params.id);t.currentExpense.currency_id=t.currentExpense.selectedCurrency.id,a.data&&(!y.editCategory&&a.data.data.expense_category&&(y.editCategory=a.data.data.expense_category),!_.editCustomer&&a.data.data.customer&&(_.editCustomer=a.data.data.customer))}else v.query.customer&&(t.currentExpense.customer_id=v.query.customer);u.value=!1}async function Y(){if(l.value.$touch(),l.value.$invalid)return;g.value=!0;let a=t.currentExpense;try{c.value?await t.updateExpense({id:v.params.id,data:a,isAttachmentReceiptRemoved:S.value}):await t.addExpense(a),g.value=!1,t.currentExpense.attachment_receipt=null,S.value=!1,L.push("/admin/expenses")}catch(n){console.error(n),g.value=!1;return}}return ye(()=>{t.resetCurrentExpenseData(),_.editCustomer=null,y.editCategory=null}),(a,n)=>{const $=i("BaseBreadcrumbItem"),p=i("BaseBreadcrumb"),B=i("BaseIcon"),M=i("BaseButton"),Z=i("BasePageHeader"),ee=i("BaseSelectAction"),V=i("BaseMultiselect"),x=i("BaseInputGroup"),te=i("BaseDatePicker"),ne=i("BaseMoney"),ae=i("BaseTextarea"),re=i("BaseFileUploader"),se=i("BaseInputGrid"),oe=i("BaseCard"),le=i("BasePage");return f(),fe(Ee,null,[r(we),r(le,{class:"relative"},{default:o(()=>[q("form",{action:"",onSubmit:ve(Y,["prevent"])},[r(Z,{title:P.value,class:"mb-5"},{actions:o(()=>[c.value&&e(t).currentExpense.attachment_receipt_url?(f(),E(M,{key:0,href:z.value,tag:"a",variant:"primary-outline",type:"button",class:"mr-2"},{left:o(s=>[r(B,{name:"DownloadIcon",class:F(s.class)},null,8,["class"])]),default:o(()=>[w(" "+I(a.$t("expenses.download_receipt")),1)]),_:1},8,["href"])):h("",!0),q("div",Se,[r(M,{loading:e(g),"content-loading":e(u),disabled:e(g),variant:"primary",type:"submit"},{left:o(s=>[e(g)?h("",!0):(f(),E(B,{key:0,name:"SaveIcon",class:F(s.class)},null,8,["class"]))]),default:o(()=>[w(" "+I(c.value?a.$t("expenses.update_expense"):a.$t("expenses.save_expense")),1)]),_:1},8,["loading","content-loading","disabled"])])]),default:o(()=>[r(p,null,{default:o(()=>[r($,{title:a.$t("general.home"),to:"/admin/dashboard"},null,8,["title"]),r($,{title:a.$t("expenses.expense",2),to:"/admin/expenses"},null,8,["title"]),r($,{title:P.value,to:"#",active:""},null,8,["title"])]),_:1})]),_:1},8,["title"]),r(oe,null,{default:o(()=>[r(se,null,{default:o(()=>[r(x,{label:a.$t("expenses.category"),error:e(l).currentExpense.expense_category_id.$error&&e(l).currentExpense.expense_category_id.$errors[0].$message,"content-loading":e(u),required:""},{default:o(()=>[e(u)?h("",!0):(f(),E(V,{key:0,modelValue:e(t).currentExpense.expense_category_id,"onUpdate:modelValue":n[0]||(n[0]=s=>e(t).currentExpense.expense_category_id=s),"content-loading":e(u),"value-prop":"id",label:"name","track-by":"id",options:X,"filter-results":!1,"resolve-on-load":"",delay:500,searchable:"",invalid:e(l).currentExpense.expense_category_id.$error,placeholder:a.$t("expenses.categories.select_a_category"),onInput:n[1]||(n[1]=s=>e(l).currentExpense.expense_category_id.$touch())},{action:o(()=>[r(ee,{onClick:J},{default:o(()=>[r(B,{name:"PlusIcon",class:"h-4 mr-2 -ml-2 text-center text-primary-400"}),w(" "+I(a.$t("settings.expense_category.add_new_category")),1)]),_:1})]),_:1},8,["modelValue","content-loading","invalid","placeholder"]))]),_:1},8,["label","error","content-loading"]),r(x,{label:a.$t("expenses.expense_date"),error:e(l).currentExpense.expense_date.$error&&e(l).currentExpense.expense_date.$errors[0].$message,"content-loading":e(u),required:""},{default:o(()=>[r(te,{modelValue:e(t).currentExpense.expense_date,"onUpdate:modelValue":n[2]||(n[2]=s=>e(t).currentExpense.expense_date=s),"content-loading":e(u),"calendar-button":!0,invalid:e(l).currentExpense.expense_date.$error,onInput:n[3]||(n[3]=s=>e(l).currentExpense.expense_date.$touch())},null,8,["modelValue","content-loading","invalid"])]),_:1},8,["label","error","content-loading"]),r(x,{label:a.$t("expenses.amount"),error:e(l).currentExpense.amount.$error&&e(l).currentExpense.amount.$errors[0].$message,"content-loading":e(u),required:""},{default:o(()=>[(f(),E(ne,{key:e(t).currentExpense.selectedCurrency,modelValue:R.value,"onUpdate:modelValue":n[4]||(n[4]=s=>R.value=s),class:"focus:border focus:border-solid focus:border-primary-500",invalid:e(l).currentExpense.amount.$error,currency:e(t).currentExpense.selectedCurrency,onInput:n[5]||(n[5]=s=>e(l).currentExpense.amount.$touch())},null,8,["modelValue","invalid","currency"]))]),_:1},8,["label","error","content-loading"]),r(x,{label:a.$t("expenses.currency"),"content-loading":e(u),error:e(l).currentExpense.currency_id.$error&&e(l).currentExpense.currency_id.$errors[0].$message,required:""},{default:o(()=>[r(V,{modelValue:e(t).currentExpense.currency_id,"onUpdate:modelValue":[n[6]||(n[6]=s=>e(t).currentExpense.currency_id=s),K],"value-prop":"id",label:"name","track-by":"name","content-loading":e(u),options:e(U).currencies,searchable:"","can-deselect":!1,placeholder:a.$t("customers.select_currency"),invalid:e(l).currentExpense.currency_id.$error,class:"w-full"},null,8,["modelValue","content-loading","options","placeholder","invalid"])]),_:1},8,["label","content-loading","error"]),r(Ie,{store:e(t),"store-prop":"currentExpense",v:e(l).currentExpense,"is-loading":e(u),"is-edit":c.value,"customer-currency":e(t).currentExpense.currency_id},null,8,["store","v","is-loading","is-edit","customer-currency"]),r(x,{"content-loading":e(u),label:a.$t("expenses.customer")},{default:o(()=>[e(u)?h("",!0):(f(),E(V,{key:0,modelValue:e(t).currentExpense.customer_id,"onUpdate:modelValue":n[7]||(n[7]=s=>e(t).currentExpense.customer_id=s),"content-loading":e(u),"value-prop":"id",label:"name","track-by":"id",options:Q,"filter-results":!1,"resolve-on-load":"",delay:500,searchable:"",placeholder:a.$t("customers.select_a_customer")},null,8,["modelValue","content-loading","placeholder"]))]),_:1},8,["content-loading","label"]),r(x,{"content-loading":e(u),label:a.$t("payments.payment_mode")},{default:o(()=>[r(V,{modelValue:e(t).currentExpense.payment_method_id,"onUpdate:modelValue":n[8]||(n[8]=s=>e(t).currentExpense.payment_method_id=s),"content-loading":e(u),label:"name","value-prop":"id","track-by":"name",options:e(t).paymentModes,placeholder:a.$t("payments.select_payment_mode"),searchable:""},null,8,["modelValue","content-loading","options","placeholder"])]),_:1},8,["content-loading","label"]),r(x,{"content-loading":e(u),label:a.$t("expenses.note"),error:e(l).currentExpense.notes.$error&&e(l).currentExpense.notes.$errors[0].$message},{default:o(()=>[r(ae,{modelValue:e(t).currentExpense.notes,"onUpdate:modelValue":n[9]||(n[9]=s=>e(t).currentExpense.notes=s),"content-loading":e(u),row:4,rows:"4",onInput:n[10]||(n[10]=s=>e(l).currentExpense.notes.$touch())},null,8,["modelValue","content-loading"])]),_:1},8,["content-loading","label","error"]),r(x,{label:a.$t("expenses.receipt")},{default:o(()=>[r(re,{modelValue:e(t).currentExpense.receiptFiles,"onUpdate:modelValue":n[11]||(n[11]=s=>e(t).currentExpense.receiptFiles=s),accept:"image/*,.doc,.docx,.pdf,.csv,.xlsx,.xls",onChange:H,onRemove:O},null,8,["modelValue"])]),_:1},8,["label"]),r(Ve,{"is-edit":c.value,class:"col-span-2","is-loading":e(u),type:"Expense",store:e(t),"store-prop":"currentExpense","custom-field-scope":G},null,8,["is-edit","is-loading","store"]),q("div",Me,[r(M,{loading:e(g),tabindex:6,variant:"primary",type:"submit",class:"flex justify-center w-full"},{left:o(s=>[e(g)?h("",!0):(f(),E(B,{key:0,name:"SaveIcon",class:F(s.class)},null,8,["class"]))]),default:o(()=>[w(" "+I(c.value?a.$t("expenses.update_expense"):a.$t("expenses.save_expense")),1)]),_:1},8,["loading"])])]),_:1})]),_:1})],32)]),_:1})],64)}}};export{je as default}; diff --git a/public/build/assets/Create-JSaFZRYA.js b/public/build/assets/Create-P3XobVA8.js similarity index 87% rename from public/build/assets/Create-JSaFZRYA.js rename to public/build/assets/Create-P3XobVA8.js index 6f5a5de4..d0f3a0cb 100644 --- a/public/build/assets/Create-JSaFZRYA.js +++ b/public/build/assets/Create-P3XobVA8.js @@ -1 +1 @@ -import{L as ue,e as se,u as me,a8 as ie,ae as ce,E as de,F as ye,aq as pe,G as ve,a5 as _e,v as fe,f as w,H as Pe,k as I,j as ge,an as be,aA as $e,r as s,o as C,c as Be,a as r,w as l,b as $,l as t,m as q,J as G,K as N,p as M,t as P,q as he,N as Ie,g as B,h as k,aI as Ce,ag as Ve,X as Se}from"./main-B9dpPbRR.js";import{_ as we}from"./ExchangeRateConverter-aybyIXMj.js";import{u as qe}from"./payment-Y8OywN76.js";import{_ as Me}from"./SelectNotePopup-5BlBNAE0.js";import{_ as ke}from"./CreateCustomFields-blY-YoZ8.js";import{_ as Ne}from"./PaymentModeModal-ywSNH2DC.js";import"./exchange-rate-M4ruO0OO.js";import"./NoteModal-h_90cxoW.js";import"./dynamic-import-helper-0gtGTknh.js";const Ue={class:"absolute left-3.5"},Ae={class:"relative w-full"},De={class:"relative mt-6"},Ee={class:"z-20 float-right text-sm font-semibold leading-5 text-primary-400"},Fe={class:"mb-4 text-sm font-medium text-gray-800"},x="newEstimate",Xe={__name:"Create",setup(Ge){const i=ue(),j=se(),e=qe();me();const V=ie();ce(),de();const L=ye(),U=pe();ve();const A=_e("utils"),{t:y}=fe.useI18n();let g=w(!1),S=w(!1),p=w([]);const v=w(null),H=Pe(["customer","company","customerCustom","payment","paymentCustom"]),h=I({get:()=>e.currentPayment.amount/100,set:a=>{e.currentPayment.amount=Math.round(a*100)}}),u=I(()=>e.isFetchingInitialData),c=I(()=>i.name==="payments.edit"),D=I(()=>c.value?y("payments.edit_payment"):y("payments.new_payment")),R=I(()=>({currentPayment:{customer_id:{required:B.withMessage(y("validation.required"),k)},payment_date:{required:B.withMessage(y("validation.required"),k)},amount:{required:B.withMessage(y("validation.required"),k),between:B.withMessage(y("validation.payment_greater_than_due_amount"),Ce(0,e.currentPayment.maxPayableAmount))},exchange_rate:{required:Ve(function(){return B.withMessage(y("validation.required"),k),e.showExchangeRate}),decimal:B.withMessage(y("validation.valid_exchange_rate"),Se)}}})),m=ge(R,e,{$scope:x});be(()=>{e.currentPayment.customer_id&&X(e.currentPayment.customer_id),i.query.customer&&(e.currentPayment.customer_id=i.query.customer)}),e.resetCurrentPayment(),i.query.customer&&(e.currentPayment.customer_id=i.query.customer),e.fetchPaymentInitialData(c.value),i.params.id&&!c.value&&J();async function z(){L.openModal({title:y("settings.payment_modes.add_payment_mode"),componentName:"PaymentModeModal"})}function T(a){e.currentPayment.notes=""+a.notes}async function J(){var n;let a=await U.fetchInvoice((n=i==null?void 0:i.params)==null?void 0:n.id);e.currentPayment.customer_id=a.data.data.customer.id,e.currentPayment.invoice_id=a.data.data.id}async function K(a){a&&(v.value=p.value.find(n=>n.id===a),h.value=v.value.due_amount/100,e.currentPayment.maxPayableAmount=v.value.due_amount)}function X(a){if(a){let n={customer_id:a,status:"DUE",limit:"all"};c.value&&(n.status=""),S.value=!0,Promise.all([U.fetchInvoices(n),V.fetchCustomer(a)]).then(async([d,_])=>{d&&(p.value=[...d.data.data]),_&&_.data&&(e.currentPayment.selectedCustomer=_.data.data,e.currentPayment.customer=_.data.data,e.currentPayment.currency=_.data.data.currency,c.value&&!V.editCustomer&&e.currentPayment.customer_id&&(V.editCustomer=_.data.data)),e.currentPayment.invoice_id&&(v.value=p.value.find(f=>f.id===e.currentPayment.invoice_id),e.currentPayment.maxPayableAmount=v.value.due_amount+e.currentPayment.amount,h.value===0&&(h.value=v.value.due_amount/100)),c.value&&(p.value=p.value.filter(f=>f.due_amount>0||f.id==e.currentPayment.invoice_id)),S.value=!1}).catch(d=>{S.value=!1,console.error(d,"error")})}}$e(()=>{e.resetCurrentPayment(),p.value=[],V.editCustomer=null});async function O(){if(m.value.$touch(),m.value.$invalid)return!1;g.value=!0;let a={...e.currentPayment},n=null;try{n=await(c.value?e.updatePayment:e.addPayment)(a),j.push(`/admin/payments/${n.data.data.id}/view`)}catch{g.value=!1}}function Q(a){let n={userId:a};i.params.id&&(n.model_id=i.params.id),e.currentPayment.invoice_id=v.value=null,e.currentPayment.amount=0,p.value=[],e.getNextNumber(n,!0)}return(a,n)=>{const d=s("BaseBreadcrumbItem"),_=s("BaseBreadcrumb"),f=s("BaseIcon"),E=s("BaseButton"),W=s("BasePageHeader"),Y=s("BaseDatePicker"),b=s("BaseInputGroup"),Z=s("BaseInput"),ee=s("BaseCustomerSelectInput"),F=s("BaseMultiselect"),te=s("BaseMoney"),ae=s("BaseSelectAction"),ne=s("BaseInputGrid"),oe=s("BaseCustomInput"),re=s("BaseCard"),le=s("BasePage");return C(),Be(Ie,null,[r(Ne),r(le,{class:"relative payment-create"},{default:l(()=>[$("form",{action:"",onSubmit:he(O,["prevent"])},[r(W,{title:D.value,class:"mb-5"},{actions:l(()=>[r(E,{loading:t(g),disabled:t(g),variant:"primary",type:"submit",class:"hidden sm:flex"},{left:l(o=>[t(g)?N("",!0):(C(),q(f,{key:0,name:"SaveIcon",class:G(o.class)},null,8,["class"]))]),default:l(()=>[M(" "+P(c.value?a.$t("payments.update_payment"):a.$t("payments.save_payment")),1)]),_:1},8,["loading","disabled"])]),default:l(()=>[r(_,null,{default:l(()=>[r(d,{title:a.$t("general.home"),to:"/admin/dashboard"},null,8,["title"]),r(d,{title:a.$t("payments.payment",2),to:"/admin/payments"},null,8,["title"]),r(d,{title:D.value,to:"#",active:""},null,8,["title"])]),_:1})]),_:1},8,["title"]),r(re,null,{default:l(()=>[r(ne,null,{default:l(()=>[r(b,{label:a.$t("payments.date"),"content-loading":u.value,required:"",error:t(m).currentPayment.payment_date.$error&&t(m).currentPayment.payment_date.$errors[0].$message},{default:l(()=>[r(Y,{modelValue:t(e).currentPayment.payment_date,"onUpdate:modelValue":[n[0]||(n[0]=o=>t(e).currentPayment.payment_date=o),n[1]||(n[1]=o=>t(m).currentPayment.payment_date.$touch())],"content-loading":u.value,"calendar-button":!0,"calendar-button-icon":"calendar",invalid:t(m).currentPayment.payment_date.$error},null,8,["modelValue","content-loading","invalid"])]),_:1},8,["label","content-loading","error"]),r(b,{label:a.$t("payments.payment_number"),"content-loading":u.value,required:""},{default:l(()=>[r(Z,{modelValue:t(e).currentPayment.payment_number,"onUpdate:modelValue":n[2]||(n[2]=o=>t(e).currentPayment.payment_number=o),"content-loading":u.value},null,8,["modelValue","content-loading"])]),_:1},8,["label","content-loading"]),r(b,{label:a.$t("payments.customer"),error:t(m).currentPayment.customer_id.$error&&t(m).currentPayment.customer_id.$errors[0].$message,"content-loading":u.value,required:""},{default:l(()=>[u.value?N("",!0):(C(),q(ee,{key:0,modelValue:t(e).currentPayment.customer_id,"onUpdate:modelValue":[n[3]||(n[3]=o=>t(e).currentPayment.customer_id=o),n[4]||(n[4]=o=>Q(t(e).currentPayment.customer_id))],"content-loading":u.value,invalid:t(m).currentPayment.customer_id.$error,placeholder:a.$t("customers.select_a_customer"),"show-action":""},null,8,["modelValue","content-loading","invalid","placeholder"]))]),_:1},8,["label","error","content-loading"]),r(b,{"content-loading":u.value,label:a.$t("payments.invoice"),"help-text":v.value?`Due Amount: ${t(e).currentPayment.maxPayableAmount/100}`:""},{default:l(()=>[r(F,{modelValue:t(e).currentPayment.invoice_id,"onUpdate:modelValue":n[5]||(n[5]=o=>t(e).currentPayment.invoice_id=o),"content-loading":u.value,"value-prop":"id","track-by":"invoice_number",label:"invoice_number",options:t(p),loading:t(S),placeholder:a.$t("invoices.select_invoice"),onSelect:K},{singlelabel:l(({value:o})=>[$("div",Ue,P(o.invoice_number)+" ("+P(t(A).formatMoney(o.total,o.customer.currency))+") ",1)]),option:l(({option:o})=>[M(P(o.invoice_number)+" ("+P(t(A).formatMoney(o.total,o.customer.currency))+") ",1)]),_:1},8,["modelValue","content-loading","options","loading","placeholder"])]),_:1},8,["content-loading","label","help-text"]),r(b,{label:a.$t("payments.amount"),"content-loading":u.value,error:t(m).currentPayment.amount.$error&&t(m).currentPayment.amount.$errors[0].$message,required:""},{default:l(()=>[$("div",Ae,[(C(),q(te,{key:t(e).currentPayment.currency,modelValue:h.value,"onUpdate:modelValue":[n[6]||(n[6]=o=>h.value=o),n[7]||(n[7]=o=>t(m).currentPayment.amount.$touch())],currency:t(e).currentPayment.currency,"content-loading":u.value,invalid:t(m).currentPayment.amount.$error},null,8,["modelValue","currency","content-loading","invalid"]))])]),_:1},8,["label","content-loading","error"]),r(b,{"content-loading":u.value,label:a.$t("payments.payment_mode")},{default:l(()=>[r(F,{modelValue:t(e).currentPayment.payment_method_id,"onUpdate:modelValue":n[8]||(n[8]=o=>t(e).currentPayment.payment_method_id=o),"content-loading":u.value,label:"name","value-prop":"id","track-by":"name",options:t(e).paymentModes,placeholder:a.$t("payments.select_payment_mode"),searchable:""},{action:l(()=>[r(ae,{onClick:z},{default:l(()=>[r(f,{name:"PlusIcon",class:"h-4 mr-2 -ml-2 text-center text-primary-400"}),M(" "+P(a.$t("settings.payment_modes.add_payment_mode")),1)]),_:1})]),_:1},8,["modelValue","content-loading","options","placeholder"])]),_:1},8,["content-loading","label"]),r(we,{store:t(e),"store-prop":"currentPayment",v:t(m).currentPayment,"is-loading":u.value,"is-edit":c.value,"customer-currency":t(e).currentPayment.currency_id},null,8,["store","v","is-loading","is-edit","customer-currency"])]),_:1}),r(ke,{type:"Payment","is-edit":c.value,"is-loading":u.value,store:t(e),"store-prop":"currentPayment","custom-field-scope":x,class:"mt-6"},null,8,["is-edit","is-loading","store"]),$("div",De,[$("div",Ee,[r(Me,{type:"Payment",onSelect:T})]),$("label",Fe,P(a.$t("estimates.notes")),1),r(oe,{modelValue:t(e).currentPayment.notes,"onUpdate:modelValue":n[9]||(n[9]=o=>t(e).currentPayment.notes=o),"content-loading":u.value,fields:H,class:"mt-1"},null,8,["modelValue","content-loading","fields"])]),r(E,{loading:t(g),"content-loading":u.value,variant:"primary",type:"submit",class:"flex justify-center w-full mt-4 sm:hidden md:hidden"},{left:l(o=>[t(g)?N("",!0):(C(),q(f,{key:0,name:"SaveIcon",class:G(o.class)},null,8,["class"]))]),default:l(()=>[M(" "+P(c.value?a.$t("payments.update_payment"):a.$t("payments.save_payment")),1)]),_:1},8,["loading","content-loading"])]),_:1})],32)]),_:1})],64)}}};export{Xe as default}; +import{L as ue,e as se,u as me,a8 as ie,ae as ce,E as de,F as ye,aq as pe,G as ve,a5 as _e,v as fe,f as w,H as Pe,k as I,j as ge,an as be,aD as $e,r as s,o as C,c as Be,a as r,w as l,b as $,l as t,m as q,J as G,K as N,p as M,t as P,q as he,N as Ie,g as B,h as k,aL as Ce,ag as Ve,X as Se}from"./main-pPEsZPea.js";import{_ as we}from"./ExchangeRateConverter-e1MH9GPD.js";import{u as qe}from"./payment-fIjVKZH2.js";import{_ as Me}from"./SelectNotePopup-iZwUGlz-.js";import{_ as ke}from"./CreateCustomFields-8Vbtza7g.js";import{_ as Ne}from"./PaymentModeModal-vETzN8Vz.js";import"./exchange-rate-Md-8fXjz.js";import"./NoteModal-YX0uc_EM.js";import"./dynamic-import-helper-0gtGTknh.js";const Ue={class:"absolute left-3.5"},De={class:"relative w-full"},Ae={class:"relative mt-6"},Ee={class:"z-20 float-right text-sm font-semibold leading-5 text-primary-400"},Fe={class:"mb-4 text-sm font-medium text-gray-800"},x="newEstimate",Xe={__name:"Create",setup(Ge){const i=ue(),L=se(),e=qe();me();const V=ie();ce(),de();const j=ye(),U=pe();ve();const D=_e("utils"),{t:y}=fe.useI18n();let g=w(!1),S=w(!1),p=w([]);const v=w(null),H=Pe(["customer","company","customerCustom","payment","paymentCustom"]),h=I({get:()=>e.currentPayment.amount/100,set:a=>{e.currentPayment.amount=Math.round(a*100)}}),u=I(()=>e.isFetchingInitialData),c=I(()=>i.name==="payments.edit"),A=I(()=>c.value?y("payments.edit_payment"):y("payments.new_payment")),R=I(()=>({currentPayment:{customer_id:{required:B.withMessage(y("validation.required"),k)},payment_date:{required:B.withMessage(y("validation.required"),k)},amount:{required:B.withMessage(y("validation.required"),k),between:B.withMessage(y("validation.payment_greater_than_due_amount"),Ce(0,e.currentPayment.maxPayableAmount))},exchange_rate:{required:Ve(function(){return B.withMessage(y("validation.required"),k),e.showExchangeRate}),decimal:B.withMessage(y("validation.valid_exchange_rate"),Se)}}})),m=ge(R,e,{$scope:x});be(()=>{e.currentPayment.customer_id&&X(e.currentPayment.customer_id),i.query.customer&&(e.currentPayment.customer_id=i.query.customer)}),e.resetCurrentPayment(),i.query.customer&&(e.currentPayment.customer_id=i.query.customer),e.fetchPaymentInitialData(c.value),i.params.id&&!c.value&&J();async function z(){j.openModal({title:y("settings.payment_modes.add_payment_mode"),componentName:"PaymentModeModal"})}function T(a){e.currentPayment.notes=""+a.notes}async function J(){var n;let a=await U.fetchInvoice((n=i==null?void 0:i.params)==null?void 0:n.id);e.currentPayment.customer_id=a.data.data.customer.id,e.currentPayment.invoice_id=a.data.data.id}async function K(a){a&&(v.value=p.value.find(n=>n.id===a),h.value=v.value.due_amount/100,e.currentPayment.maxPayableAmount=v.value.due_amount)}function X(a){if(a){let n={customer_id:a,status:"DUE",limit:"all"};c.value&&(n.status=""),S.value=!0,Promise.all([U.fetchInvoices(n),V.fetchCustomer(a)]).then(async([d,_])=>{d&&(p.value=[...d.data.data]),_&&_.data&&(e.currentPayment.selectedCustomer=_.data.data,e.currentPayment.customer=_.data.data,e.currentPayment.currency=_.data.data.currency,c.value&&!V.editCustomer&&e.currentPayment.customer_id&&(V.editCustomer=_.data.data)),e.currentPayment.invoice_id&&(v.value=p.value.find(f=>f.id===e.currentPayment.invoice_id),e.currentPayment.maxPayableAmount=v.value.due_amount+e.currentPayment.amount,h.value===0&&(h.value=v.value.due_amount/100)),c.value&&(p.value=p.value.filter(f=>f.due_amount>0||f.id==e.currentPayment.invoice_id)),S.value=!1}).catch(d=>{S.value=!1,console.error(d,"error")})}}$e(()=>{e.resetCurrentPayment(),p.value=[],V.editCustomer=null});async function O(){if(m.value.$touch(),m.value.$invalid)return!1;g.value=!0;let a={...e.currentPayment},n=null;try{n=await(c.value?e.updatePayment:e.addPayment)(a),L.push(`/admin/payments/${n.data.data.id}/view`)}catch{g.value=!1}}function Q(a){let n={userId:a};i.params.id&&(n.model_id=i.params.id),e.currentPayment.invoice_id=v.value=null,e.currentPayment.amount=0,p.value=[],e.getNextNumber(n,!0)}return(a,n)=>{const d=s("BaseBreadcrumbItem"),_=s("BaseBreadcrumb"),f=s("BaseIcon"),E=s("BaseButton"),W=s("BasePageHeader"),Y=s("BaseDatePicker"),b=s("BaseInputGroup"),Z=s("BaseInput"),ee=s("BaseCustomerSelectInput"),F=s("BaseMultiselect"),te=s("BaseMoney"),ae=s("BaseSelectAction"),ne=s("BaseInputGrid"),oe=s("BaseCustomInput"),re=s("BaseCard"),le=s("BasePage");return C(),Be(Ie,null,[r(Ne),r(le,{class:"relative payment-create"},{default:l(()=>[$("form",{action:"",onSubmit:he(O,["prevent"])},[r(W,{title:A.value,class:"mb-5"},{actions:l(()=>[r(E,{loading:t(g),disabled:t(g),variant:"primary",type:"submit",class:"hidden sm:flex"},{left:l(o=>[t(g)?N("",!0):(C(),q(f,{key:0,name:"SaveIcon",class:G(o.class)},null,8,["class"]))]),default:l(()=>[M(" "+P(c.value?a.$t("payments.update_payment"):a.$t("payments.save_payment")),1)]),_:1},8,["loading","disabled"])]),default:l(()=>[r(_,null,{default:l(()=>[r(d,{title:a.$t("general.home"),to:"/admin/dashboard"},null,8,["title"]),r(d,{title:a.$t("payments.payment",2),to:"/admin/payments"},null,8,["title"]),r(d,{title:A.value,to:"#",active:""},null,8,["title"])]),_:1})]),_:1},8,["title"]),r(re,null,{default:l(()=>[r(ne,null,{default:l(()=>[r(b,{label:a.$t("payments.date"),"content-loading":u.value,required:"",error:t(m).currentPayment.payment_date.$error&&t(m).currentPayment.payment_date.$errors[0].$message},{default:l(()=>[r(Y,{modelValue:t(e).currentPayment.payment_date,"onUpdate:modelValue":[n[0]||(n[0]=o=>t(e).currentPayment.payment_date=o),n[1]||(n[1]=o=>t(m).currentPayment.payment_date.$touch())],"content-loading":u.value,"calendar-button":!0,"calendar-button-icon":"calendar",invalid:t(m).currentPayment.payment_date.$error},null,8,["modelValue","content-loading","invalid"])]),_:1},8,["label","content-loading","error"]),r(b,{label:a.$t("payments.payment_number"),"content-loading":u.value,required:""},{default:l(()=>[r(Z,{modelValue:t(e).currentPayment.payment_number,"onUpdate:modelValue":n[2]||(n[2]=o=>t(e).currentPayment.payment_number=o),"content-loading":u.value},null,8,["modelValue","content-loading"])]),_:1},8,["label","content-loading"]),r(b,{label:a.$t("payments.customer"),error:t(m).currentPayment.customer_id.$error&&t(m).currentPayment.customer_id.$errors[0].$message,"content-loading":u.value,required:""},{default:l(()=>[u.value?N("",!0):(C(),q(ee,{key:0,modelValue:t(e).currentPayment.customer_id,"onUpdate:modelValue":[n[3]||(n[3]=o=>t(e).currentPayment.customer_id=o),n[4]||(n[4]=o=>Q(t(e).currentPayment.customer_id))],"content-loading":u.value,invalid:t(m).currentPayment.customer_id.$error,placeholder:a.$t("customers.select_a_customer"),"show-action":""},null,8,["modelValue","content-loading","invalid","placeholder"]))]),_:1},8,["label","error","content-loading"]),r(b,{"content-loading":u.value,label:a.$t("payments.invoice"),"help-text":v.value?`Due Amount: ${t(e).currentPayment.maxPayableAmount/100}`:""},{default:l(()=>[r(F,{modelValue:t(e).currentPayment.invoice_id,"onUpdate:modelValue":n[5]||(n[5]=o=>t(e).currentPayment.invoice_id=o),"content-loading":u.value,"value-prop":"id","track-by":"invoice_number",label:"invoice_number",options:t(p),loading:t(S),placeholder:a.$t("invoices.select_invoice"),onSelect:K},{singlelabel:l(({value:o})=>[$("div",Ue,P(o.invoice_number)+" ("+P(t(D).formatMoney(o.total,o.customer.currency))+") ",1)]),option:l(({option:o})=>[M(P(o.invoice_number)+" ("+P(t(D).formatMoney(o.total,o.customer.currency))+") ",1)]),_:1},8,["modelValue","content-loading","options","loading","placeholder"])]),_:1},8,["content-loading","label","help-text"]),r(b,{label:a.$t("payments.amount"),"content-loading":u.value,error:t(m).currentPayment.amount.$error&&t(m).currentPayment.amount.$errors[0].$message,required:""},{default:l(()=>[$("div",De,[(C(),q(te,{key:t(e).currentPayment.currency,modelValue:h.value,"onUpdate:modelValue":[n[6]||(n[6]=o=>h.value=o),n[7]||(n[7]=o=>t(m).currentPayment.amount.$touch())],currency:t(e).currentPayment.currency,"content-loading":u.value,invalid:t(m).currentPayment.amount.$error},null,8,["modelValue","currency","content-loading","invalid"]))])]),_:1},8,["label","content-loading","error"]),r(b,{"content-loading":u.value,label:a.$t("payments.payment_mode")},{default:l(()=>[r(F,{modelValue:t(e).currentPayment.payment_method_id,"onUpdate:modelValue":n[8]||(n[8]=o=>t(e).currentPayment.payment_method_id=o),"content-loading":u.value,label:"name","value-prop":"id","track-by":"name",options:t(e).paymentModes,placeholder:a.$t("payments.select_payment_mode"),searchable:""},{action:l(()=>[r(ae,{onClick:z},{default:l(()=>[r(f,{name:"PlusIcon",class:"h-4 mr-2 -ml-2 text-center text-primary-400"}),M(" "+P(a.$t("settings.payment_modes.add_payment_mode")),1)]),_:1})]),_:1},8,["modelValue","content-loading","options","placeholder"])]),_:1},8,["content-loading","label"]),r(we,{store:t(e),"store-prop":"currentPayment",v:t(m).currentPayment,"is-loading":u.value,"is-edit":c.value,"customer-currency":t(e).currentPayment.currency_id},null,8,["store","v","is-loading","is-edit","customer-currency"])]),_:1}),r(ke,{type:"Payment","is-edit":c.value,"is-loading":u.value,store:t(e),"store-prop":"currentPayment","custom-field-scope":x,class:"mt-6"},null,8,["is-edit","is-loading","store"]),$("div",Ae,[$("div",Ee,[r(Me,{type:"Payment",onSelect:T})]),$("label",Fe,P(a.$t("estimates.notes")),1),r(oe,{modelValue:t(e).currentPayment.notes,"onUpdate:modelValue":n[9]||(n[9]=o=>t(e).currentPayment.notes=o),"content-loading":u.value,fields:H,class:"mt-1"},null,8,["modelValue","content-loading","fields"])]),r(E,{loading:t(g),"content-loading":u.value,variant:"primary",type:"submit",class:"flex justify-center w-full mt-4 sm:hidden md:hidden"},{left:l(o=>[t(g)?N("",!0):(C(),q(f,{key:0,name:"SaveIcon",class:G(o.class)},null,8,["class"]))]),default:l(()=>[M(" "+P(c.value?a.$t("payments.update_payment"):a.$t("payments.save_payment")),1)]),_:1},8,["loading","content-loading"])]),_:1})],32)]),_:1})],64)}}};export{Xe as default}; diff --git a/public/build/assets/Create-AmVfmh-o.js b/public/build/assets/Create-U2zj1acD.js similarity index 97% rename from public/build/assets/Create-AmVfmh-o.js rename to public/build/assets/Create-U2zj1acD.js index 60b7b11a..ed27a76f 100644 --- a/public/build/assets/Create-AmVfmh-o.js +++ b/public/build/assets/Create-U2zj1acD.js @@ -1 +1 @@ -import{at as X,au as Z,F as ee,E as te,v as ae,L as ne,e as oe,M as se,f as $,k as c,j as le,Q as re,r as s,o as y,m as V,w as l,a as o,b as C,l as a,p as U,t as k,K as P,J as ie,q as ue,g as h,h as me,I as ce,ai as de}from"./main-B9dpPbRR.js";import{_ as pe}from"./ItemUnitModal-GTT4702Z.js";const ve={__name:"Create",setup(_e){const t=X(),S=Z(),v=ee(),E=te(),{t:d}=ae.useI18n(),f=ne(),N=oe(),q=se(),_=$(!1),B=$(E.selectedCompanySettings.tax_per_item);let r=$(!1);t.$reset(),j();const b=c({get:()=>t.currentItem.price/100,set:e=>{t.currentItem.price=Math.round(e*100)}}),T=c({get:()=>{var e,n;return(n=(e=t==null?void 0:t.currentItem)==null?void 0:e.taxes)==null?void 0:n.map(m=>{if(m)return{...m,tax_type_id:m.id,tax_name:m.name+" ("+m.percent+"%)"}})},set:e=>{t.currentItem.taxes=e}}),g=c(()=>f.name==="items.edit"),w=c(()=>g.value?d("items.edit_item"):d("items.new_item")),L=c(()=>S.taxTypes.map(e=>({...e,tax_type_id:e.id,tax_name:e.name+" ("+e.percent+"%)"}))),z=c(()=>B.value==="YES"),A=c(()=>({currentItem:{name:{required:h.withMessage(d("validation.required"),me),minLength:h.withMessage(d("validation.name_min_length",{count:3}),ce(3))},description:{maxLength:h.withMessage(d("validation.description_maxlength"),de(65e3))}}})),u=le(A,t);async function G(){v.openModal({title:d("settings.customization.items.add_item_unit"),componentName:"ItemUnitModal",size:"sm"})}async function j(){if(r.value=!0,await t.fetchItemUnits({limit:"all"}),q.hasAbilities(re.VIEW_TAX_TYPE)&&await S.fetchTaxTypes({limit:"all"}),g.value){let e=f.params.id;await t.fetchItem(e),t.currentItem.tax_per_item===1?B.value="YES":B.value="NO"}r.value=!1}async function D(){if(u.value.currentItem.$touch(),u.value.currentItem.$invalid)return!1;_.value=!0;try{let n={id:f.params.id,...t.currentItem};t.currentItem&&t.currentItem.taxes&&(n.taxes=t.currentItem.taxes.map(p=>({tax_type_id:p.tax_type_id,amount:b.value*p.percent,percent:p.percent,name:p.name,collective_tax:0}))),await(g.value?t.updateItem:t.addItem)(n),_.value=!1,N.push("/admin/items"),e()}catch{_.value=!1;return}function e(){v.closeModal(),setTimeout(()=>{t.resetCurrentItem(),v.$reset(),u.value.$reset()},300)}}return(e,n)=>{const m=s("BaseBreadcrumbItem"),p=s("BaseBreadcrumb"),Y=s("BasePageHeader"),F=s("BaseInput"),I=s("BaseInputGroup"),H=s("BaseMoney"),x=s("BaseIcon"),R=s("BaseSelectAction"),M=s("BaseMultiselect"),J=s("BaseTextarea"),K=s("BaseButton"),O=s("BaseInputGrid"),Q=s("BaseCard"),W=s("BasePage");return y(),V(W,null,{default:l(()=>[o(Y,{title:w.value},{default:l(()=>[o(p,null,{default:l(()=>[o(m,{title:e.$t("general.home"),to:"dashboard"},null,8,["title"]),o(m,{title:e.$t("items.item",2),to:"/admin/items"},null,8,["title"]),o(m,{title:w.value,to:"#",active:""},null,8,["title"])]),_:1})]),_:1},8,["title"]),o(pe),C("form",{class:"grid lg:grid-cols-2 mt-6",action:"submit",onSubmit:ue(D,["prevent"])},[o(Q,{class:"w-full"},{default:l(()=>[o(O,{layout:"one-column"},{default:l(()=>[o(I,{label:e.$t("items.name"),"content-loading":a(r),required:"",error:a(u).currentItem.name.$error&&a(u).currentItem.name.$errors[0].$message},{default:l(()=>[o(F,{modelValue:a(t).currentItem.name,"onUpdate:modelValue":n[0]||(n[0]=i=>a(t).currentItem.name=i),"content-loading":a(r),invalid:a(u).currentItem.name.$error,onInput:n[1]||(n[1]=i=>a(u).currentItem.name.$touch())},null,8,["modelValue","content-loading","invalid"])]),_:1},8,["label","content-loading","error"]),o(I,{label:e.$t("items.price"),"content-loading":a(r)},{default:l(()=>[o(H,{modelValue:b.value,"onUpdate:modelValue":n[2]||(n[2]=i=>b.value=i),"content-loading":a(r)},null,8,["modelValue","content-loading"])]),_:1},8,["label","content-loading"]),o(I,{"content-loading":a(r),label:e.$t("items.unit")},{default:l(()=>[o(M,{modelValue:a(t).currentItem.unit_id,"onUpdate:modelValue":n[3]||(n[3]=i=>a(t).currentItem.unit_id=i),"content-loading":a(r),label:"name",options:a(t).itemUnits,"value-prop":"id",placeholder:e.$t("items.select_a_unit"),searchable:"","track-by":"name"},{action:l(()=>[o(R,{onClick:G},{default:l(()=>[o(x,{name:"PlusIcon",class:"h-4 mr-2 -ml-2 text-center text-primary-400"}),U(" "+k(e.$t("settings.customization.items.add_item_unit")),1)]),_:1})]),_:1},8,["modelValue","content-loading","options","placeholder"])]),_:1},8,["content-loading","label"]),z.value?(y(),V(I,{key:0,label:e.$t("items.taxes"),"content-loading":a(r)},{default:l(()=>[o(M,{modelValue:T.value,"onUpdate:modelValue":n[4]||(n[4]=i=>T.value=i),"content-loading":a(r),options:L.value,mode:"tags",label:"tax_name",class:"w-full","value-prop":"id","can-deselect":!1,"can-clear":!1,searchable:"","track-by":"tax_name",object:""},null,8,["modelValue","content-loading","options"])]),_:1},8,["label","content-loading"])):P("",!0),o(I,{label:e.$t("items.description"),"content-loading":a(r),error:a(u).currentItem.description.$error&&a(u).currentItem.description.$errors[0].$message},{default:l(()=>[o(J,{modelValue:a(t).currentItem.description,"onUpdate:modelValue":n[5]||(n[5]=i=>a(t).currentItem.description=i),"content-loading":a(r),name:"description",row:2,rows:"2",onInput:n[6]||(n[6]=i=>a(u).currentItem.description.$touch())},null,8,["modelValue","content-loading"])]),_:1},8,["label","content-loading","error"]),C("div",null,[o(K,{"content-loading":a(r),type:"submit",loading:_.value},{left:l(i=>[_.value?P("",!0):(y(),V(x,{key:0,name:"SaveIcon",class:ie(i.class)},null,8,["class"]))]),default:l(()=>[U(" "+k(g.value?e.$t("items.update_item"):e.$t("items.save_item")),1)]),_:1},8,["content-loading","loading"])])]),_:1})]),_:1})],32)]),_:1})}}};export{ve as default}; +import{at as X,au as Z,F as ee,E as te,v as ae,L as ne,e as oe,M as se,f as $,k as c,j as le,Q as re,r as s,o as y,m as V,w as l,a as o,b as C,l as a,p as U,t as k,K as P,J as ie,q as ue,g as h,h as me,I as ce,ai as de}from"./main-pPEsZPea.js";import{_ as pe}from"./ItemUnitModal-bGVyp5_i.js";const ve={__name:"Create",setup(_e){const t=X(),S=Z(),v=ee(),E=te(),{t:d}=ae.useI18n(),f=ne(),N=oe(),q=se(),_=$(!1),B=$(E.selectedCompanySettings.tax_per_item);let r=$(!1);t.$reset(),j();const b=c({get:()=>t.currentItem.price/100,set:e=>{t.currentItem.price=Math.round(e*100)}}),T=c({get:()=>{var e,n;return(n=(e=t==null?void 0:t.currentItem)==null?void 0:e.taxes)==null?void 0:n.map(m=>{if(m)return{...m,tax_type_id:m.id,tax_name:m.name+" ("+m.percent+"%)"}})},set:e=>{t.currentItem.taxes=e}}),g=c(()=>f.name==="items.edit"),w=c(()=>g.value?d("items.edit_item"):d("items.new_item")),L=c(()=>S.taxTypes.map(e=>({...e,tax_type_id:e.id,tax_name:e.name+" ("+e.percent+"%)"}))),z=c(()=>B.value==="YES"),A=c(()=>({currentItem:{name:{required:h.withMessage(d("validation.required"),me),minLength:h.withMessage(d("validation.name_min_length",{count:3}),ce(3))},description:{maxLength:h.withMessage(d("validation.description_maxlength"),de(65e3))}}})),u=le(A,t);async function G(){v.openModal({title:d("settings.customization.items.add_item_unit"),componentName:"ItemUnitModal",size:"sm"})}async function j(){if(r.value=!0,await t.fetchItemUnits({limit:"all"}),q.hasAbilities(re.VIEW_TAX_TYPE)&&await S.fetchTaxTypes({limit:"all"}),g.value){let e=f.params.id;await t.fetchItem(e),t.currentItem.tax_per_item===1?B.value="YES":B.value="NO"}r.value=!1}async function D(){if(u.value.currentItem.$touch(),u.value.currentItem.$invalid)return!1;_.value=!0;try{let n={id:f.params.id,...t.currentItem};t.currentItem&&t.currentItem.taxes&&(n.taxes=t.currentItem.taxes.map(p=>({tax_type_id:p.tax_type_id,amount:b.value*p.percent,percent:p.percent,name:p.name,collective_tax:0}))),await(g.value?t.updateItem:t.addItem)(n),_.value=!1,N.push("/admin/items"),e()}catch{_.value=!1;return}function e(){v.closeModal(),setTimeout(()=>{t.resetCurrentItem(),v.$reset(),u.value.$reset()},300)}}return(e,n)=>{const m=s("BaseBreadcrumbItem"),p=s("BaseBreadcrumb"),Y=s("BasePageHeader"),F=s("BaseInput"),I=s("BaseInputGroup"),H=s("BaseMoney"),x=s("BaseIcon"),R=s("BaseSelectAction"),M=s("BaseMultiselect"),J=s("BaseTextarea"),K=s("BaseButton"),O=s("BaseInputGrid"),Q=s("BaseCard"),W=s("BasePage");return y(),V(W,null,{default:l(()=>[o(Y,{title:w.value},{default:l(()=>[o(p,null,{default:l(()=>[o(m,{title:e.$t("general.home"),to:"dashboard"},null,8,["title"]),o(m,{title:e.$t("items.item",2),to:"/admin/items"},null,8,["title"]),o(m,{title:w.value,to:"#",active:""},null,8,["title"])]),_:1})]),_:1},8,["title"]),o(pe),C("form",{class:"grid lg:grid-cols-2 mt-6",action:"submit",onSubmit:ue(D,["prevent"])},[o(Q,{class:"w-full"},{default:l(()=>[o(O,{layout:"one-column"},{default:l(()=>[o(I,{label:e.$t("items.name"),"content-loading":a(r),required:"",error:a(u).currentItem.name.$error&&a(u).currentItem.name.$errors[0].$message},{default:l(()=>[o(F,{modelValue:a(t).currentItem.name,"onUpdate:modelValue":n[0]||(n[0]=i=>a(t).currentItem.name=i),"content-loading":a(r),invalid:a(u).currentItem.name.$error,onInput:n[1]||(n[1]=i=>a(u).currentItem.name.$touch())},null,8,["modelValue","content-loading","invalid"])]),_:1},8,["label","content-loading","error"]),o(I,{label:e.$t("items.price"),"content-loading":a(r)},{default:l(()=>[o(H,{modelValue:b.value,"onUpdate:modelValue":n[2]||(n[2]=i=>b.value=i),"content-loading":a(r)},null,8,["modelValue","content-loading"])]),_:1},8,["label","content-loading"]),o(I,{"content-loading":a(r),label:e.$t("items.unit")},{default:l(()=>[o(M,{modelValue:a(t).currentItem.unit_id,"onUpdate:modelValue":n[3]||(n[3]=i=>a(t).currentItem.unit_id=i),"content-loading":a(r),label:"name",options:a(t).itemUnits,"value-prop":"id",placeholder:e.$t("items.select_a_unit"),searchable:"","track-by":"name"},{action:l(()=>[o(R,{onClick:G},{default:l(()=>[o(x,{name:"PlusIcon",class:"h-4 mr-2 -ml-2 text-center text-primary-400"}),U(" "+k(e.$t("settings.customization.items.add_item_unit")),1)]),_:1})]),_:1},8,["modelValue","content-loading","options","placeholder"])]),_:1},8,["content-loading","label"]),z.value?(y(),V(I,{key:0,label:e.$t("items.taxes"),"content-loading":a(r)},{default:l(()=>[o(M,{modelValue:T.value,"onUpdate:modelValue":n[4]||(n[4]=i=>T.value=i),"content-loading":a(r),options:L.value,mode:"tags",label:"tax_name",class:"w-full","value-prop":"id","can-deselect":!1,"can-clear":!1,searchable:"","track-by":"tax_name",object:""},null,8,["modelValue","content-loading","options"])]),_:1},8,["label","content-loading"])):P("",!0),o(I,{label:e.$t("items.description"),"content-loading":a(r),error:a(u).currentItem.description.$error&&a(u).currentItem.description.$errors[0].$message},{default:l(()=>[o(J,{modelValue:a(t).currentItem.description,"onUpdate:modelValue":n[5]||(n[5]=i=>a(t).currentItem.description=i),"content-loading":a(r),name:"description",row:2,rows:"2",onInput:n[6]||(n[6]=i=>a(u).currentItem.description.$touch())},null,8,["modelValue","content-loading"])]),_:1},8,["label","content-loading","error"]),C("div",null,[o(K,{"content-loading":a(r),type:"submit",loading:_.value},{left:l(i=>[_.value?P("",!0):(y(),V(x,{key:0,name:"SaveIcon",class:ie(i.class)},null,8,["class"]))]),default:l(()=>[U(" "+k(g.value?e.$t("items.update_item"):e.$t("items.save_item")),1)]),_:1},8,["content-loading","loading"])])]),_:1})]),_:1})],32)]),_:1})}}};export{ve as default}; diff --git a/public/build/assets/Create-mAHdbU7f.js b/public/build/assets/Create-uZTOHLTZ.js similarity index 99% rename from public/build/assets/Create-mAHdbU7f.js rename to public/build/assets/Create-uZTOHLTZ.js index c0b1e0d3..87c3048b 100644 --- a/public/build/assets/Create-mAHdbU7f.js +++ b/public/build/assets/Create-uZTOHLTZ.js @@ -1 +1 @@ -import{a8 as oe,ae as re,G as le,E as se,v as ae,e as ie,L as ue,f as w,k as h,j as de,r as p,o as f,m as _,w as i,b as m,a as r,J as E,p as G,t as $,l as e,af as me,K as v,n as k,c as j,q as ce,g,h as N,I as z,ag as T,i as pe,a0 as ge,ah as be,ai as S}from"./main-B9dpPbRR.js";import{_ as Ce}from"./CreateCustomFields-blY-YoZ8.js";import"./dynamic-import-helper-0gtGTknh.js";const fe={class:"flex items-center justify-end"},_e={class:"grid grid-cols-5 gap-4 mb-8"},$e={class:"col-span-5 text-lg font-semibold text-left lg:col-span-1"},ve={class:"grid grid-cols-5 gap-4 mb-8"},ye={class:"col-span-5 text-lg font-semibold text-left lg:col-span-1"},Ve={class:"md:col-span-2"},we={class:"text-sm text-gray-500"},he={class:"grid grid-cols-5 gap-4 mb-8"},Be={class:"col-span-5 text-lg font-semibold text-left lg:col-span-1"},Ie={class:"space-y-6"},Me={class:"flex items-center justify-start mb-6 md:justify-end md:mb-0"},xe={class:"p-1"},Ue={key:0,class:"grid grid-cols-5 gap-4 mb-8"},ke={class:"col-span-5 text-lg font-semibold text-left lg:col-span-1"},Se={class:"space-y-6"},qe={class:"grid grid-cols-5 gap-2 mb-8"},Le={key:0,class:"col-span-5 text-lg font-semibold text-left lg:col-span-1"},ze={class:"col-span-5 lg:col-span-4"},A="customFields",Ge={__name:"Create",setup(Pe){const n=oe(),P=re(),q=le(),R=se(),{t:c}=ae.useI18n(),H=ie(),O=ue();let l=w(!1),b=w(!1),C=w(!1);w(!1);const B=w(!1),V=h(()=>O.name==="customers.edit");let J=h(()=>n.isFetchingInitialSettings);const F=h(()=>V.value?c("customers.edit_customer"):c("customers.new_customer")),K=h(()=>({currentCustomer:{name:{required:g.withMessage(c("validation.required"),N),minLength:g.withMessage(c("validation.name_min_length",{count:3}),z(3))},prefix:{minLength:g.withMessage(c("validation.name_min_length",{count:3}),z(3))},currency_id:{required:g.withMessage(c("validation.required"),N)},email:{required:g.withMessage(c("validation.required"),T(n.currentCustomer.enable_portal==!0)),email:g.withMessage(c("validation.email_incorrect"),pe)},password:{required:g.withMessage(c("validation.required"),T(n.currentCustomer.enable_portal==!0&&!n.currentCustomer.password_added)),minLength:g.withMessage(c("validation.password_min_length",{count:8}),z(8))},confirm_password:{sameAsPassword:g.withMessage(c("validation.password_incorrect"),ge(n.currentCustomer.password))},website:{url:g.withMessage(c("validation.invalid_url"),be)},billing:{address_street_1:{maxLength:g.withMessage(c("validation.address_maxlength",{count:255}),S(255))},address_street_2:{maxLength:g.withMessage(c("validation.address_maxlength",{count:255}),S(255))}},shipping:{address_street_1:{maxLength:g.withMessage(c("validation.address_maxlength",{count:255}),S(255))},address_street_2:{maxLength:g.withMessage(c("validation.address_maxlength",{count:255}),S(255))}}}})),Q=h(()=>`${window.location.origin}/${R.selectedCompany.slug}/customer/login`),a=de(K,n,{$scope:A});n.resetCurrentCustomer(),n.fetchCustomerInitialSettings(V.value);async function W(){if(a.value.$touch(),a.value.$invalid)return!0;B.value=!0;let s={...n.currentCustomer},t=null;try{t=await(V.value?n.updateCustomer:n.addCustomer)(s)}catch{B.value=!1;return}H.push(`/admin/customers/${t.data.data.id}/view`)}return(s,t)=>{const I=p("BaseBreadcrumbItem"),X=p("BaseBreadcrumb-item"),Y=p("BaseBreadcrumb"),y=p("BaseIcon"),D=p("BaseButton"),Z=p("BasePageHeader"),d=p("BaseInput"),u=p("BaseInputGroup"),L=p("BaseMultiselect"),M=p("BaseInputGrid"),x=p("BaseDivider"),ee=p("BaseSwitch"),U=p("BaseTextarea"),te=p("BaseCard"),ne=p("BasePage");return f(),_(ne,null,{default:i(()=>[m("form",{onSubmit:ce(W,["prevent"])},[r(Z,{title:F.value},{actions:i(()=>[m("div",fe,[r(D,{type:"submit",loading:B.value,disabled:B.value},{left:i(o=>[r(y,{name:"SaveIcon",class:E(o.class)},null,8,["class"])]),default:i(()=>[G(" "+$(V.value?s.$t("customers.update_customer"):s.$t("customers.save_customer")),1)]),_:1},8,["loading","disabled"])])]),default:i(()=>[r(Y,null,{default:i(()=>[r(I,{title:s.$t("general.home"),to:"dashboard"},null,8,["title"]),r(I,{title:s.$t("customers.customer",2),to:"/admin/customers"},null,8,["title"]),r(X,{title:F.value,to:"#",active:""},null,8,["title"])]),_:1})]),_:1},8,["title"]),r(te,{class:"mt-5"},{default:i(()=>[m("div",_e,[m("h6",$e,$(s.$t("customers.basic_info")),1),r(M,{class:"col-span-5 lg:col-span-4"},{default:i(()=>[r(u,{label:s.$t("customers.display_name"),required:"",error:e(a).currentCustomer.name.$error&&e(a).currentCustomer.name.$errors[0].$message,"content-loading":e(l)},{default:i(()=>[r(d,{modelValue:e(n).currentCustomer.name,"onUpdate:modelValue":t[0]||(t[0]=o=>e(n).currentCustomer.name=o),"content-loading":e(l),type:"text",name:"name",class:"",invalid:e(a).currentCustomer.name.$error,onInput:t[1]||(t[1]=o=>e(a).currentCustomer.name.$touch())},null,8,["modelValue","content-loading","invalid"])]),_:1},8,["label","error","content-loading"]),r(u,{label:s.$t("customers.primary_contact_name"),"content-loading":e(l)},{default:i(()=>[r(d,{modelValue:e(n).currentCustomer.contact_name,"onUpdate:modelValue":t[2]||(t[2]=o=>e(n).currentCustomer.contact_name=o),modelModifiers:{trim:!0},"content-loading":e(l),type:"text"},null,8,["modelValue","content-loading"])]),_:1},8,["label","content-loading"]),r(u,{error:e(a).currentCustomer.email.$error&&e(a).currentCustomer.email.$errors[0].$message,"content-loading":e(l),label:s.$t("customers.email")},{default:i(()=>[r(d,{modelValue:e(n).currentCustomer.email,"onUpdate:modelValue":t[3]||(t[3]=o=>e(n).currentCustomer.email=o),modelModifiers:{trim:!0},"content-loading":e(l),type:"text",name:"email",invalid:e(a).currentCustomer.email.$error,onInput:t[4]||(t[4]=o=>e(a).currentCustomer.email.$touch())},null,8,["modelValue","content-loading","invalid"])]),_:1},8,["error","content-loading","label"]),r(u,{label:s.$t("customers.phone"),"content-loading":e(l)},{default:i(()=>[r(d,{modelValue:e(n).currentCustomer.phone,"onUpdate:modelValue":t[5]||(t[5]=o=>e(n).currentCustomer.phone=o),modelModifiers:{trim:!0},"content-loading":e(l),type:"text",name:"phone"},null,8,["modelValue","content-loading"])]),_:1},8,["label","content-loading"]),r(u,{label:s.$t("customers.primary_currency"),"content-loading":e(l),error:e(a).currentCustomer.currency_id.$error&&e(a).currentCustomer.currency_id.$errors[0].$message,required:""},{default:i(()=>[r(L,{modelValue:e(n).currentCustomer.currency_id,"onUpdate:modelValue":t[6]||(t[6]=o=>e(n).currentCustomer.currency_id=o),"value-prop":"id",label:"name","track-by":"name","content-loading":e(l),options:e(q).currencies,searchable:"","can-deselect":!1,placeholder:s.$t("customers.select_currency"),invalid:e(a).currentCustomer.currency_id.$error,class:"w-full"},null,8,["modelValue","content-loading","options","placeholder","invalid"])]),_:1},8,["label","content-loading","error"]),r(u,{error:e(a).currentCustomer.website.$error&&e(a).currentCustomer.website.$errors[0].$message,label:s.$t("customers.website"),"content-loading":e(l)},{default:i(()=>[r(d,{modelValue:e(n).currentCustomer.website,"onUpdate:modelValue":t[7]||(t[7]=o=>e(n).currentCustomer.website=o),"content-loading":e(l),type:"url",onInput:t[8]||(t[8]=o=>e(a).currentCustomer.website.$touch())},null,8,["modelValue","content-loading"])]),_:1},8,["error","label","content-loading"]),r(u,{label:s.$t("customers.prefix"),error:e(a).currentCustomer.prefix.$error&&e(a).currentCustomer.prefix.$errors[0].$message,"content-loading":e(l)},{default:i(()=>[r(d,{modelValue:e(n).currentCustomer.prefix,"onUpdate:modelValue":t[9]||(t[9]=o=>e(n).currentCustomer.prefix=o),"content-loading":e(l),type:"text",name:"name",class:"",invalid:e(a).currentCustomer.prefix.$error,onInput:t[10]||(t[10]=o=>e(a).currentCustomer.prefix.$touch())},null,8,["modelValue","content-loading","invalid"])]),_:1},8,["label","error","content-loading"])]),_:1})]),r(x,{class:"mb-5 md:mb-8"}),m("div",ve,[m("h6",ye,$(s.$t("customers.portal_access")),1),r(M,{class:"col-span-5 lg:col-span-4"},{default:i(()=>[m("div",Ve,[m("p",we,$(s.$t("customers.portal_access_text")),1),r(ee,{modelValue:e(n).currentCustomer.enable_portal,"onUpdate:modelValue":t[11]||(t[11]=o=>e(n).currentCustomer.enable_portal=o),class:"mt-1 flex"},null,8,["modelValue"])]),e(n).currentCustomer.enable_portal?(f(),_(u,{key:0,"content-loading":e(l),label:s.$t("customers.portal_access_url"),class:"md:col-span-2","help-text":s.$t("customers.portal_access_url_help")},{default:i(()=>[r(me,{token:Q.value},null,8,["token"])]),_:1},8,["content-loading","label","help-text"])):v("",!0),e(n).currentCustomer.enable_portal?(f(),_(u,{key:1,"content-loading":e(l),error:e(a).currentCustomer.password.$error&&e(a).currentCustomer.password.$errors[0].$message,label:s.$t("customers.password")},{default:i(()=>[r(d,{modelValue:e(n).currentCustomer.password,"onUpdate:modelValue":t[14]||(t[14]=o=>e(n).currentCustomer.password=o),modelModifiers:{trim:!0},"content-loading":e(l),type:e(b)?"text":"password",name:"password",invalid:e(a).currentCustomer.password.$error,onInput:t[15]||(t[15]=o=>e(a).currentCustomer.password.$touch())},{right:i(()=>[e(b)?(f(),_(y,{key:0,name:"EyeOffIcon",class:"w-5 h-5 mr-1 text-gray-500 cursor-pointer",onClick:t[12]||(t[12]=o=>k(b)?b.value=!e(b):b=!e(b))})):(f(),_(y,{key:1,name:"EyeIcon",class:"w-5 h-5 mr-1 text-gray-500 cursor-pointer",onClick:t[13]||(t[13]=o=>k(b)?b.value=!e(b):b=!e(b))}))]),_:1},8,["modelValue","content-loading","type","invalid"])]),_:1},8,["content-loading","error","label"])):v("",!0),e(n).currentCustomer.enable_portal?(f(),_(u,{key:2,error:e(a).currentCustomer.confirm_password.$error&&e(a).currentCustomer.confirm_password.$errors[0].$message,"content-loading":e(l),label:"Confirm Password"},{default:i(()=>[r(d,{modelValue:e(n).currentCustomer.confirm_password,"onUpdate:modelValue":t[18]||(t[18]=o=>e(n).currentCustomer.confirm_password=o),modelModifiers:{trim:!0},"content-loading":e(l),type:e(C)?"text":"password",name:"confirm_password",invalid:e(a).currentCustomer.confirm_password.$error,onInput:t[19]||(t[19]=o=>e(a).currentCustomer.confirm_password.$touch())},{right:i(()=>[e(C)?(f(),_(y,{key:0,name:"EyeOffIcon",class:"w-5 h-5 mr-1 text-gray-500 cursor-pointer",onClick:t[16]||(t[16]=o=>k(C)?C.value=!e(C):C=!e(C))})):(f(),_(y,{key:1,name:"EyeIcon",class:"w-5 h-5 mr-1 text-gray-500 cursor-pointer",onClick:t[17]||(t[17]=o=>k(C)?C.value=!e(C):C=!e(C))}))]),_:1},8,["modelValue","content-loading","type","invalid"])]),_:1},8,["error","content-loading"])):v("",!0)]),_:1})]),r(x,{class:"mb-5 md:mb-8"}),m("div",he,[m("h6",Be,$(s.$t("customers.billing_address")),1),e(n).currentCustomer.billing?(f(),_(M,{key:0,class:"col-span-5 lg:col-span-4"},{default:i(()=>[r(u,{label:s.$t("customers.name"),"content-loading":e(l)},{default:i(()=>[r(d,{modelValue:e(n).currentCustomer.billing.name,"onUpdate:modelValue":t[20]||(t[20]=o=>e(n).currentCustomer.billing.name=o),modelModifiers:{trim:!0},"content-loading":e(l),type:"text",class:"w-full",name:"address_name"},null,8,["modelValue","content-loading"])]),_:1},8,["label","content-loading"]),r(u,{label:s.$t("customers.country"),"content-loading":e(l)},{default:i(()=>[r(L,{modelValue:e(n).currentCustomer.billing.country_id,"onUpdate:modelValue":t[21]||(t[21]=o=>e(n).currentCustomer.billing.country_id=o),"value-prop":"id",label:"name","track-by":"name","resolve-on-load":"",searchable:"","content-loading":e(l),options:e(q).countries,placeholder:s.$t("general.select_country"),class:"w-full"},null,8,["modelValue","content-loading","options","placeholder"])]),_:1},8,["label","content-loading"]),r(u,{label:s.$t("customers.state"),"content-loading":e(l)},{default:i(()=>[r(d,{modelValue:e(n).currentCustomer.billing.state,"onUpdate:modelValue":t[22]||(t[22]=o=>e(n).currentCustomer.billing.state=o),"content-loading":e(l),name:"billing.state",type:"text"},null,8,["modelValue","content-loading"])]),_:1},8,["label","content-loading"]),r(u,{"content-loading":e(l),label:s.$t("customers.city")},{default:i(()=>[r(d,{modelValue:e(n).currentCustomer.billing.city,"onUpdate:modelValue":t[23]||(t[23]=o=>e(n).currentCustomer.billing.city=o),"content-loading":e(l),name:"billing.city",type:"text"},null,8,["modelValue","content-loading"])]),_:1},8,["content-loading","label"]),r(u,{label:s.$t("customers.address"),error:e(a).currentCustomer.billing.address_street_1.$error&&e(a).currentCustomer.billing.address_street_1.$errors[0].$message||e(a).currentCustomer.billing.address_street_2.$error&&e(a).currentCustomer.billing.address_street_2.$errors[0].$message,"content-loading":e(l)},{default:i(()=>[r(U,{modelValue:e(n).currentCustomer.billing.address_street_1,"onUpdate:modelValue":t[24]||(t[24]=o=>e(n).currentCustomer.billing.address_street_1=o),modelModifiers:{trim:!0},"content-loading":e(l),placeholder:s.$t("general.street_1"),type:"text",name:"billing_street1","container-class":"mt-3",onInput:t[25]||(t[25]=o=>e(a).currentCustomer.billing.address_street_1.$touch())},null,8,["modelValue","content-loading","placeholder"]),r(U,{modelValue:e(n).currentCustomer.billing.address_street_2,"onUpdate:modelValue":t[26]||(t[26]=o=>e(n).currentCustomer.billing.address_street_2=o),modelModifiers:{trim:!0},"content-loading":e(l),placeholder:s.$t("general.street_2"),type:"text",class:"mt-3",name:"billing_street2","container-class":"mt-3",onInput:t[27]||(t[27]=o=>e(a).currentCustomer.billing.address_street_2.$touch())},null,8,["modelValue","content-loading","placeholder"])]),_:1},8,["label","error","content-loading"]),m("div",Ie,[r(u,{"content-loading":e(l),label:s.$t("customers.phone"),class:"text-left"},{default:i(()=>[r(d,{modelValue:e(n).currentCustomer.billing.phone,"onUpdate:modelValue":t[28]||(t[28]=o=>e(n).currentCustomer.billing.phone=o),modelModifiers:{trim:!0},"content-loading":e(l),type:"text",name:"phone"},null,8,["modelValue","content-loading"])]),_:1},8,["content-loading","label"]),r(u,{label:s.$t("customers.zip_code"),"content-loading":e(l),class:"mt-2 text-left"},{default:i(()=>[r(d,{modelValue:e(n).currentCustomer.billing.zip,"onUpdate:modelValue":t[29]||(t[29]=o=>e(n).currentCustomer.billing.zip=o),modelModifiers:{trim:!0},"content-loading":e(l),type:"text",name:"zip"},null,8,["modelValue","content-loading"])]),_:1},8,["label","content-loading"])])]),_:1})):v("",!0)]),r(x,{class:"mb-5 md:mb-8"}),m("div",Me,[m("div",xe,[r(D,{type:"button","content-loading":e(l),size:"sm",variant:"primary-outline",onClick:t[30]||(t[30]=o=>e(n).copyAddress(!0))},{left:i(o=>[r(y,{name:"DocumentDuplicateIcon",class:E(o.class)},null,8,["class"])]),default:i(()=>[G(" "+$(s.$t("customers.copy_billing_address")),1)]),_:1},8,["content-loading"])])]),e(n).currentCustomer.shipping?(f(),j("div",Ue,[m("h6",ke,$(s.$t("customers.shipping_address")),1),r(M,{class:"col-span-5 lg:col-span-4"},{default:i(()=>[r(u,{"content-loading":e(l),label:s.$t("customers.name")},{default:i(()=>[r(d,{modelValue:e(n).currentCustomer.shipping.name,"onUpdate:modelValue":t[31]||(t[31]=o=>e(n).currentCustomer.shipping.name=o),modelModifiers:{trim:!0},"content-loading":e(l),type:"text",name:"address_name"},null,8,["modelValue","content-loading"])]),_:1},8,["content-loading","label"]),r(u,{label:s.$t("customers.country"),"content-loading":e(l)},{default:i(()=>[r(L,{modelValue:e(n).currentCustomer.shipping.country_id,"onUpdate:modelValue":t[32]||(t[32]=o=>e(n).currentCustomer.shipping.country_id=o),"value-prop":"id",label:"name","track-by":"name","resolve-on-load":"",searchable:"","content-loading":e(l),options:e(q).countries,placeholder:s.$t("general.select_country"),class:"w-full"},null,8,["modelValue","content-loading","options","placeholder"])]),_:1},8,["label","content-loading"]),r(u,{label:s.$t("customers.state"),"content-loading":e(l)},{default:i(()=>[r(d,{modelValue:e(n).currentCustomer.shipping.state,"onUpdate:modelValue":t[33]||(t[33]=o=>e(n).currentCustomer.shipping.state=o),"content-loading":e(l),name:"shipping.state",type:"text"},null,8,["modelValue","content-loading"])]),_:1},8,["label","content-loading"]),r(u,{"content-loading":e(l),label:s.$t("customers.city")},{default:i(()=>[r(d,{modelValue:e(n).currentCustomer.shipping.city,"onUpdate:modelValue":t[34]||(t[34]=o=>e(n).currentCustomer.shipping.city=o),"content-loading":e(l),name:"shipping.city",type:"text"},null,8,["modelValue","content-loading"])]),_:1},8,["content-loading","label"]),r(u,{label:s.$t("customers.address"),"content-loading":e(l),error:e(a).currentCustomer.shipping.address_street_1.$error&&e(a).currentCustomer.shipping.address_street_1.$errors[0].$message||e(a).currentCustomer.shipping.address_street_2.$error&&e(a).currentCustomer.shipping.address_street_2.$errors[0].$message},{default:i(()=>[r(U,{modelValue:e(n).currentCustomer.shipping.address_street_1,"onUpdate:modelValue":t[35]||(t[35]=o=>e(n).currentCustomer.shipping.address_street_1=o),modelModifiers:{trim:!0},"content-loading":e(l),type:"text",placeholder:s.$t("general.street_1"),name:"shipping_street1",onInput:t[36]||(t[36]=o=>e(a).currentCustomer.shipping.address_street_1.$touch())},null,8,["modelValue","content-loading","placeholder"]),r(U,{modelValue:e(n).currentCustomer.shipping.address_street_2,"onUpdate:modelValue":t[37]||(t[37]=o=>e(n).currentCustomer.shipping.address_street_2=o),modelModifiers:{trim:!0},"content-loading":e(l),type:"text",placeholder:s.$t("general.street_2"),name:"shipping_street2",class:"mt-3","container-class":"mt-3",onInput:t[38]||(t[38]=o=>e(a).currentCustomer.shipping.address_street_2.$touch())},null,8,["modelValue","content-loading","placeholder"])]),_:1},8,["label","content-loading","error"]),m("div",Se,[r(u,{"content-loading":e(l),label:s.$t("customers.phone"),class:"text-left"},{default:i(()=>[r(d,{modelValue:e(n).currentCustomer.shipping.phone,"onUpdate:modelValue":t[39]||(t[39]=o=>e(n).currentCustomer.shipping.phone=o),modelModifiers:{trim:!0},"content-loading":e(l),type:"text",name:"phone"},null,8,["modelValue","content-loading"])]),_:1},8,["content-loading","label"]),r(u,{label:s.$t("customers.zip_code"),"content-loading":e(l),class:"mt-2 text-left"},{default:i(()=>[r(d,{modelValue:e(n).currentCustomer.shipping.zip,"onUpdate:modelValue":t[40]||(t[40]=o=>e(n).currentCustomer.shipping.zip=o),modelModifiers:{trim:!0},"content-loading":e(l),type:"text",name:"zip"},null,8,["modelValue","content-loading"])]),_:1},8,["label","content-loading"])])]),_:1})])):v("",!0),e(P).customFields.length>0?(f(),_(x,{key:1,class:"mb-5 md:mb-8"})):v("",!0),m("div",qe,[e(P).customFields.length>0?(f(),j("h6",Le,$(s.$t("settings.custom_fields.title")),1)):v("",!0),m("div",ze,[r(Ce,{type:"Customer",store:e(n),"store-prop":"currentCustomer","is-edit":V.value,"is-loading":e(J),"custom-field-scope":A},null,8,["store","is-edit","is-loading"])])])]),_:1})],32)]),_:1})}}};export{Ge as default}; +import{a8 as oe,ae as re,G as le,E as se,v as ae,e as ie,L as ue,f as w,k as h,j as de,r as p,o as f,m as _,w as i,b as m,a as r,J as E,p as G,t as $,l as e,af as me,K as v,n as k,c as j,q as ce,g,h as N,I as z,ag as T,i as pe,a0 as ge,ah as be,ai as S}from"./main-pPEsZPea.js";import{_ as Ce}from"./CreateCustomFields-8Vbtza7g.js";import"./dynamic-import-helper-0gtGTknh.js";const fe={class:"flex items-center justify-end"},_e={class:"grid grid-cols-5 gap-4 mb-8"},$e={class:"col-span-5 text-lg font-semibold text-left lg:col-span-1"},ve={class:"grid grid-cols-5 gap-4 mb-8"},ye={class:"col-span-5 text-lg font-semibold text-left lg:col-span-1"},Ve={class:"md:col-span-2"},we={class:"text-sm text-gray-500"},he={class:"grid grid-cols-5 gap-4 mb-8"},Be={class:"col-span-5 text-lg font-semibold text-left lg:col-span-1"},Ie={class:"space-y-6"},Me={class:"flex items-center justify-start mb-6 md:justify-end md:mb-0"},xe={class:"p-1"},Ue={key:0,class:"grid grid-cols-5 gap-4 mb-8"},ke={class:"col-span-5 text-lg font-semibold text-left lg:col-span-1"},Se={class:"space-y-6"},qe={class:"grid grid-cols-5 gap-2 mb-8"},Le={key:0,class:"col-span-5 text-lg font-semibold text-left lg:col-span-1"},ze={class:"col-span-5 lg:col-span-4"},A="customFields",Ge={__name:"Create",setup(Pe){const n=oe(),P=re(),q=le(),R=se(),{t:c}=ae.useI18n(),H=ie(),O=ue();let l=w(!1),b=w(!1),C=w(!1);w(!1);const B=w(!1),V=h(()=>O.name==="customers.edit");let J=h(()=>n.isFetchingInitialSettings);const F=h(()=>V.value?c("customers.edit_customer"):c("customers.new_customer")),K=h(()=>({currentCustomer:{name:{required:g.withMessage(c("validation.required"),N),minLength:g.withMessage(c("validation.name_min_length",{count:3}),z(3))},prefix:{minLength:g.withMessage(c("validation.name_min_length",{count:3}),z(3))},currency_id:{required:g.withMessage(c("validation.required"),N)},email:{required:g.withMessage(c("validation.required"),T(n.currentCustomer.enable_portal==!0)),email:g.withMessage(c("validation.email_incorrect"),pe)},password:{required:g.withMessage(c("validation.required"),T(n.currentCustomer.enable_portal==!0&&!n.currentCustomer.password_added)),minLength:g.withMessage(c("validation.password_min_length",{count:8}),z(8))},confirm_password:{sameAsPassword:g.withMessage(c("validation.password_incorrect"),ge(n.currentCustomer.password))},website:{url:g.withMessage(c("validation.invalid_url"),be)},billing:{address_street_1:{maxLength:g.withMessage(c("validation.address_maxlength",{count:255}),S(255))},address_street_2:{maxLength:g.withMessage(c("validation.address_maxlength",{count:255}),S(255))}},shipping:{address_street_1:{maxLength:g.withMessage(c("validation.address_maxlength",{count:255}),S(255))},address_street_2:{maxLength:g.withMessage(c("validation.address_maxlength",{count:255}),S(255))}}}})),Q=h(()=>`${window.location.origin}/${R.selectedCompany.slug}/customer/login`),a=de(K,n,{$scope:A});n.resetCurrentCustomer(),n.fetchCustomerInitialSettings(V.value);async function W(){if(a.value.$touch(),a.value.$invalid)return!0;B.value=!0;let s={...n.currentCustomer},t=null;try{t=await(V.value?n.updateCustomer:n.addCustomer)(s)}catch{B.value=!1;return}H.push(`/admin/customers/${t.data.data.id}/view`)}return(s,t)=>{const I=p("BaseBreadcrumbItem"),X=p("BaseBreadcrumb-item"),Y=p("BaseBreadcrumb"),y=p("BaseIcon"),D=p("BaseButton"),Z=p("BasePageHeader"),d=p("BaseInput"),u=p("BaseInputGroup"),L=p("BaseMultiselect"),M=p("BaseInputGrid"),x=p("BaseDivider"),ee=p("BaseSwitch"),U=p("BaseTextarea"),te=p("BaseCard"),ne=p("BasePage");return f(),_(ne,null,{default:i(()=>[m("form",{onSubmit:ce(W,["prevent"])},[r(Z,{title:F.value},{actions:i(()=>[m("div",fe,[r(D,{type:"submit",loading:B.value,disabled:B.value},{left:i(o=>[r(y,{name:"SaveIcon",class:E(o.class)},null,8,["class"])]),default:i(()=>[G(" "+$(V.value?s.$t("customers.update_customer"):s.$t("customers.save_customer")),1)]),_:1},8,["loading","disabled"])])]),default:i(()=>[r(Y,null,{default:i(()=>[r(I,{title:s.$t("general.home"),to:"dashboard"},null,8,["title"]),r(I,{title:s.$t("customers.customer",2),to:"/admin/customers"},null,8,["title"]),r(X,{title:F.value,to:"#",active:""},null,8,["title"])]),_:1})]),_:1},8,["title"]),r(te,{class:"mt-5"},{default:i(()=>[m("div",_e,[m("h6",$e,$(s.$t("customers.basic_info")),1),r(M,{class:"col-span-5 lg:col-span-4"},{default:i(()=>[r(u,{label:s.$t("customers.display_name"),required:"",error:e(a).currentCustomer.name.$error&&e(a).currentCustomer.name.$errors[0].$message,"content-loading":e(l)},{default:i(()=>[r(d,{modelValue:e(n).currentCustomer.name,"onUpdate:modelValue":t[0]||(t[0]=o=>e(n).currentCustomer.name=o),"content-loading":e(l),type:"text",name:"name",class:"",invalid:e(a).currentCustomer.name.$error,onInput:t[1]||(t[1]=o=>e(a).currentCustomer.name.$touch())},null,8,["modelValue","content-loading","invalid"])]),_:1},8,["label","error","content-loading"]),r(u,{label:s.$t("customers.primary_contact_name"),"content-loading":e(l)},{default:i(()=>[r(d,{modelValue:e(n).currentCustomer.contact_name,"onUpdate:modelValue":t[2]||(t[2]=o=>e(n).currentCustomer.contact_name=o),modelModifiers:{trim:!0},"content-loading":e(l),type:"text"},null,8,["modelValue","content-loading"])]),_:1},8,["label","content-loading"]),r(u,{error:e(a).currentCustomer.email.$error&&e(a).currentCustomer.email.$errors[0].$message,"content-loading":e(l),label:s.$t("customers.email")},{default:i(()=>[r(d,{modelValue:e(n).currentCustomer.email,"onUpdate:modelValue":t[3]||(t[3]=o=>e(n).currentCustomer.email=o),modelModifiers:{trim:!0},"content-loading":e(l),type:"text",name:"email",invalid:e(a).currentCustomer.email.$error,onInput:t[4]||(t[4]=o=>e(a).currentCustomer.email.$touch())},null,8,["modelValue","content-loading","invalid"])]),_:1},8,["error","content-loading","label"]),r(u,{label:s.$t("customers.phone"),"content-loading":e(l)},{default:i(()=>[r(d,{modelValue:e(n).currentCustomer.phone,"onUpdate:modelValue":t[5]||(t[5]=o=>e(n).currentCustomer.phone=o),modelModifiers:{trim:!0},"content-loading":e(l),type:"text",name:"phone"},null,8,["modelValue","content-loading"])]),_:1},8,["label","content-loading"]),r(u,{label:s.$t("customers.primary_currency"),"content-loading":e(l),error:e(a).currentCustomer.currency_id.$error&&e(a).currentCustomer.currency_id.$errors[0].$message,required:""},{default:i(()=>[r(L,{modelValue:e(n).currentCustomer.currency_id,"onUpdate:modelValue":t[6]||(t[6]=o=>e(n).currentCustomer.currency_id=o),"value-prop":"id",label:"name","track-by":"name","content-loading":e(l),options:e(q).currencies,searchable:"","can-deselect":!1,placeholder:s.$t("customers.select_currency"),invalid:e(a).currentCustomer.currency_id.$error,class:"w-full"},null,8,["modelValue","content-loading","options","placeholder","invalid"])]),_:1},8,["label","content-loading","error"]),r(u,{error:e(a).currentCustomer.website.$error&&e(a).currentCustomer.website.$errors[0].$message,label:s.$t("customers.website"),"content-loading":e(l)},{default:i(()=>[r(d,{modelValue:e(n).currentCustomer.website,"onUpdate:modelValue":t[7]||(t[7]=o=>e(n).currentCustomer.website=o),"content-loading":e(l),type:"url",onInput:t[8]||(t[8]=o=>e(a).currentCustomer.website.$touch())},null,8,["modelValue","content-loading"])]),_:1},8,["error","label","content-loading"]),r(u,{label:s.$t("customers.prefix"),error:e(a).currentCustomer.prefix.$error&&e(a).currentCustomer.prefix.$errors[0].$message,"content-loading":e(l)},{default:i(()=>[r(d,{modelValue:e(n).currentCustomer.prefix,"onUpdate:modelValue":t[9]||(t[9]=o=>e(n).currentCustomer.prefix=o),"content-loading":e(l),type:"text",name:"name",class:"",invalid:e(a).currentCustomer.prefix.$error,onInput:t[10]||(t[10]=o=>e(a).currentCustomer.prefix.$touch())},null,8,["modelValue","content-loading","invalid"])]),_:1},8,["label","error","content-loading"])]),_:1})]),r(x,{class:"mb-5 md:mb-8"}),m("div",ve,[m("h6",ye,$(s.$t("customers.portal_access")),1),r(M,{class:"col-span-5 lg:col-span-4"},{default:i(()=>[m("div",Ve,[m("p",we,$(s.$t("customers.portal_access_text")),1),r(ee,{modelValue:e(n).currentCustomer.enable_portal,"onUpdate:modelValue":t[11]||(t[11]=o=>e(n).currentCustomer.enable_portal=o),class:"mt-1 flex"},null,8,["modelValue"])]),e(n).currentCustomer.enable_portal?(f(),_(u,{key:0,"content-loading":e(l),label:s.$t("customers.portal_access_url"),class:"md:col-span-2","help-text":s.$t("customers.portal_access_url_help")},{default:i(()=>[r(me,{token:Q.value},null,8,["token"])]),_:1},8,["content-loading","label","help-text"])):v("",!0),e(n).currentCustomer.enable_portal?(f(),_(u,{key:1,"content-loading":e(l),error:e(a).currentCustomer.password.$error&&e(a).currentCustomer.password.$errors[0].$message,label:s.$t("customers.password")},{default:i(()=>[r(d,{modelValue:e(n).currentCustomer.password,"onUpdate:modelValue":t[14]||(t[14]=o=>e(n).currentCustomer.password=o),modelModifiers:{trim:!0},"content-loading":e(l),type:e(b)?"text":"password",name:"password",invalid:e(a).currentCustomer.password.$error,onInput:t[15]||(t[15]=o=>e(a).currentCustomer.password.$touch())},{right:i(()=>[e(b)?(f(),_(y,{key:0,name:"EyeOffIcon",class:"w-5 h-5 mr-1 text-gray-500 cursor-pointer",onClick:t[12]||(t[12]=o=>k(b)?b.value=!e(b):b=!e(b))})):(f(),_(y,{key:1,name:"EyeIcon",class:"w-5 h-5 mr-1 text-gray-500 cursor-pointer",onClick:t[13]||(t[13]=o=>k(b)?b.value=!e(b):b=!e(b))}))]),_:1},8,["modelValue","content-loading","type","invalid"])]),_:1},8,["content-loading","error","label"])):v("",!0),e(n).currentCustomer.enable_portal?(f(),_(u,{key:2,error:e(a).currentCustomer.confirm_password.$error&&e(a).currentCustomer.confirm_password.$errors[0].$message,"content-loading":e(l),label:"Confirm Password"},{default:i(()=>[r(d,{modelValue:e(n).currentCustomer.confirm_password,"onUpdate:modelValue":t[18]||(t[18]=o=>e(n).currentCustomer.confirm_password=o),modelModifiers:{trim:!0},"content-loading":e(l),type:e(C)?"text":"password",name:"confirm_password",invalid:e(a).currentCustomer.confirm_password.$error,onInput:t[19]||(t[19]=o=>e(a).currentCustomer.confirm_password.$touch())},{right:i(()=>[e(C)?(f(),_(y,{key:0,name:"EyeOffIcon",class:"w-5 h-5 mr-1 text-gray-500 cursor-pointer",onClick:t[16]||(t[16]=o=>k(C)?C.value=!e(C):C=!e(C))})):(f(),_(y,{key:1,name:"EyeIcon",class:"w-5 h-5 mr-1 text-gray-500 cursor-pointer",onClick:t[17]||(t[17]=o=>k(C)?C.value=!e(C):C=!e(C))}))]),_:1},8,["modelValue","content-loading","type","invalid"])]),_:1},8,["error","content-loading"])):v("",!0)]),_:1})]),r(x,{class:"mb-5 md:mb-8"}),m("div",he,[m("h6",Be,$(s.$t("customers.billing_address")),1),e(n).currentCustomer.billing?(f(),_(M,{key:0,class:"col-span-5 lg:col-span-4"},{default:i(()=>[r(u,{label:s.$t("customers.name"),"content-loading":e(l)},{default:i(()=>[r(d,{modelValue:e(n).currentCustomer.billing.name,"onUpdate:modelValue":t[20]||(t[20]=o=>e(n).currentCustomer.billing.name=o),modelModifiers:{trim:!0},"content-loading":e(l),type:"text",class:"w-full",name:"address_name"},null,8,["modelValue","content-loading"])]),_:1},8,["label","content-loading"]),r(u,{label:s.$t("customers.country"),"content-loading":e(l)},{default:i(()=>[r(L,{modelValue:e(n).currentCustomer.billing.country_id,"onUpdate:modelValue":t[21]||(t[21]=o=>e(n).currentCustomer.billing.country_id=o),"value-prop":"id",label:"name","track-by":"name","resolve-on-load":"",searchable:"","content-loading":e(l),options:e(q).countries,placeholder:s.$t("general.select_country"),class:"w-full"},null,8,["modelValue","content-loading","options","placeholder"])]),_:1},8,["label","content-loading"]),r(u,{label:s.$t("customers.state"),"content-loading":e(l)},{default:i(()=>[r(d,{modelValue:e(n).currentCustomer.billing.state,"onUpdate:modelValue":t[22]||(t[22]=o=>e(n).currentCustomer.billing.state=o),"content-loading":e(l),name:"billing.state",type:"text"},null,8,["modelValue","content-loading"])]),_:1},8,["label","content-loading"]),r(u,{"content-loading":e(l),label:s.$t("customers.city")},{default:i(()=>[r(d,{modelValue:e(n).currentCustomer.billing.city,"onUpdate:modelValue":t[23]||(t[23]=o=>e(n).currentCustomer.billing.city=o),"content-loading":e(l),name:"billing.city",type:"text"},null,8,["modelValue","content-loading"])]),_:1},8,["content-loading","label"]),r(u,{label:s.$t("customers.address"),error:e(a).currentCustomer.billing.address_street_1.$error&&e(a).currentCustomer.billing.address_street_1.$errors[0].$message||e(a).currentCustomer.billing.address_street_2.$error&&e(a).currentCustomer.billing.address_street_2.$errors[0].$message,"content-loading":e(l)},{default:i(()=>[r(U,{modelValue:e(n).currentCustomer.billing.address_street_1,"onUpdate:modelValue":t[24]||(t[24]=o=>e(n).currentCustomer.billing.address_street_1=o),modelModifiers:{trim:!0},"content-loading":e(l),placeholder:s.$t("general.street_1"),type:"text",name:"billing_street1","container-class":"mt-3",onInput:t[25]||(t[25]=o=>e(a).currentCustomer.billing.address_street_1.$touch())},null,8,["modelValue","content-loading","placeholder"]),r(U,{modelValue:e(n).currentCustomer.billing.address_street_2,"onUpdate:modelValue":t[26]||(t[26]=o=>e(n).currentCustomer.billing.address_street_2=o),modelModifiers:{trim:!0},"content-loading":e(l),placeholder:s.$t("general.street_2"),type:"text",class:"mt-3",name:"billing_street2","container-class":"mt-3",onInput:t[27]||(t[27]=o=>e(a).currentCustomer.billing.address_street_2.$touch())},null,8,["modelValue","content-loading","placeholder"])]),_:1},8,["label","error","content-loading"]),m("div",Ie,[r(u,{"content-loading":e(l),label:s.$t("customers.phone"),class:"text-left"},{default:i(()=>[r(d,{modelValue:e(n).currentCustomer.billing.phone,"onUpdate:modelValue":t[28]||(t[28]=o=>e(n).currentCustomer.billing.phone=o),modelModifiers:{trim:!0},"content-loading":e(l),type:"text",name:"phone"},null,8,["modelValue","content-loading"])]),_:1},8,["content-loading","label"]),r(u,{label:s.$t("customers.zip_code"),"content-loading":e(l),class:"mt-2 text-left"},{default:i(()=>[r(d,{modelValue:e(n).currentCustomer.billing.zip,"onUpdate:modelValue":t[29]||(t[29]=o=>e(n).currentCustomer.billing.zip=o),modelModifiers:{trim:!0},"content-loading":e(l),type:"text",name:"zip"},null,8,["modelValue","content-loading"])]),_:1},8,["label","content-loading"])])]),_:1})):v("",!0)]),r(x,{class:"mb-5 md:mb-8"}),m("div",Me,[m("div",xe,[r(D,{type:"button","content-loading":e(l),size:"sm",variant:"primary-outline",onClick:t[30]||(t[30]=o=>e(n).copyAddress(!0))},{left:i(o=>[r(y,{name:"DocumentDuplicateIcon",class:E(o.class)},null,8,["class"])]),default:i(()=>[G(" "+$(s.$t("customers.copy_billing_address")),1)]),_:1},8,["content-loading"])])]),e(n).currentCustomer.shipping?(f(),j("div",Ue,[m("h6",ke,$(s.$t("customers.shipping_address")),1),r(M,{class:"col-span-5 lg:col-span-4"},{default:i(()=>[r(u,{"content-loading":e(l),label:s.$t("customers.name")},{default:i(()=>[r(d,{modelValue:e(n).currentCustomer.shipping.name,"onUpdate:modelValue":t[31]||(t[31]=o=>e(n).currentCustomer.shipping.name=o),modelModifiers:{trim:!0},"content-loading":e(l),type:"text",name:"address_name"},null,8,["modelValue","content-loading"])]),_:1},8,["content-loading","label"]),r(u,{label:s.$t("customers.country"),"content-loading":e(l)},{default:i(()=>[r(L,{modelValue:e(n).currentCustomer.shipping.country_id,"onUpdate:modelValue":t[32]||(t[32]=o=>e(n).currentCustomer.shipping.country_id=o),"value-prop":"id",label:"name","track-by":"name","resolve-on-load":"",searchable:"","content-loading":e(l),options:e(q).countries,placeholder:s.$t("general.select_country"),class:"w-full"},null,8,["modelValue","content-loading","options","placeholder"])]),_:1},8,["label","content-loading"]),r(u,{label:s.$t("customers.state"),"content-loading":e(l)},{default:i(()=>[r(d,{modelValue:e(n).currentCustomer.shipping.state,"onUpdate:modelValue":t[33]||(t[33]=o=>e(n).currentCustomer.shipping.state=o),"content-loading":e(l),name:"shipping.state",type:"text"},null,8,["modelValue","content-loading"])]),_:1},8,["label","content-loading"]),r(u,{"content-loading":e(l),label:s.$t("customers.city")},{default:i(()=>[r(d,{modelValue:e(n).currentCustomer.shipping.city,"onUpdate:modelValue":t[34]||(t[34]=o=>e(n).currentCustomer.shipping.city=o),"content-loading":e(l),name:"shipping.city",type:"text"},null,8,["modelValue","content-loading"])]),_:1},8,["content-loading","label"]),r(u,{label:s.$t("customers.address"),"content-loading":e(l),error:e(a).currentCustomer.shipping.address_street_1.$error&&e(a).currentCustomer.shipping.address_street_1.$errors[0].$message||e(a).currentCustomer.shipping.address_street_2.$error&&e(a).currentCustomer.shipping.address_street_2.$errors[0].$message},{default:i(()=>[r(U,{modelValue:e(n).currentCustomer.shipping.address_street_1,"onUpdate:modelValue":t[35]||(t[35]=o=>e(n).currentCustomer.shipping.address_street_1=o),modelModifiers:{trim:!0},"content-loading":e(l),type:"text",placeholder:s.$t("general.street_1"),name:"shipping_street1",onInput:t[36]||(t[36]=o=>e(a).currentCustomer.shipping.address_street_1.$touch())},null,8,["modelValue","content-loading","placeholder"]),r(U,{modelValue:e(n).currentCustomer.shipping.address_street_2,"onUpdate:modelValue":t[37]||(t[37]=o=>e(n).currentCustomer.shipping.address_street_2=o),modelModifiers:{trim:!0},"content-loading":e(l),type:"text",placeholder:s.$t("general.street_2"),name:"shipping_street2",class:"mt-3","container-class":"mt-3",onInput:t[38]||(t[38]=o=>e(a).currentCustomer.shipping.address_street_2.$touch())},null,8,["modelValue","content-loading","placeholder"])]),_:1},8,["label","content-loading","error"]),m("div",Se,[r(u,{"content-loading":e(l),label:s.$t("customers.phone"),class:"text-left"},{default:i(()=>[r(d,{modelValue:e(n).currentCustomer.shipping.phone,"onUpdate:modelValue":t[39]||(t[39]=o=>e(n).currentCustomer.shipping.phone=o),modelModifiers:{trim:!0},"content-loading":e(l),type:"text",name:"phone"},null,8,["modelValue","content-loading"])]),_:1},8,["content-loading","label"]),r(u,{label:s.$t("customers.zip_code"),"content-loading":e(l),class:"mt-2 text-left"},{default:i(()=>[r(d,{modelValue:e(n).currentCustomer.shipping.zip,"onUpdate:modelValue":t[40]||(t[40]=o=>e(n).currentCustomer.shipping.zip=o),modelModifiers:{trim:!0},"content-loading":e(l),type:"text",name:"zip"},null,8,["modelValue","content-loading"])]),_:1},8,["label","content-loading"])])]),_:1})])):v("",!0),e(P).customFields.length>0?(f(),_(x,{key:1,class:"mb-5 md:mb-8"})):v("",!0),m("div",qe,[e(P).customFields.length>0?(f(),j("h6",Le,$(s.$t("settings.custom_fields.title")),1)):v("",!0),m("div",ze,[r(Ce,{type:"Customer",store:e(n),"store-prop":"currentCustomer","is-edit":V.value,"is-loading":e(J),"custom-field-scope":A},null,8,["store","is-edit","is-loading"])])])]),_:1})],32)]),_:1})}}};export{Ge as default}; diff --git a/public/build/assets/Create-LSgUj1Ki.js b/public/build/assets/Create-y2sPCAul.js similarity index 97% rename from public/build/assets/Create-LSgUj1Ki.js rename to public/build/assets/Create-y2sPCAul.js index e18110a6..b2e42d0b 100644 --- a/public/build/assets/Create-LSgUj1Ki.js +++ b/public/build/assets/Create-y2sPCAul.js @@ -1 +1 @@ -import{v as A,L as J,e as K,E as O,f as w,k as b,g as c,h as f,j as Q,r as i,o as B,m as V,w as u,a as o,b as h,l as e,c as W,O as X,N as Y,J as Z,K as x,p as ee,t as ae,q as te,I as C,i as oe,ag as se}from"./main-B9dpPbRR.js";import{V as ne}from"./index-qMx1f7gr.js";import{u as re}from"./users-725NVNlp.js";const le={class:"grid grid-cols-12"},ue={class:"space-y-6"},pe={__name:"Create",setup(ie){const t=re(),{t:d}=A.useI18n(),I=J(),k=K(),S=O();let p=w(!1),r=w(!1);w([]);let q=w([]);const g=b(()=>I.name==="users.edit"),y=b(()=>g.value?d("users.edit_user"):d("users.new_user")),L=b(()=>({userData:{name:{required:c.withMessage(d("validation.required"),f),minLength:c.withMessage(d("validation.name_min_length",{count:3}),C(3))},email:{required:c.withMessage(d("validation.required"),f),email:c.withMessage(d("validation.email_incorrect"),oe)},password:{required:se(function(){return c.withMessage(d("validation.required"),f),!g.value}),minLength:c.withMessage(d("validation.password_min_length",{count:8}),C(8))},companies:{required:c.withMessage(d("validation.required"),f)}}})),N={role:{required:c.withMessage(d("validation.required"),f)}},s=Q(L,t,{$scope:!0});E(),t.resetUserData();async function E(){var l;r.value=!0;try{g.value&&await t.fetchUser(I.params.id);let a=await S.fetchUserCompanies();(l=a==null?void 0:a.data)!=null&&l.data&&(q.value=a.data.data.map(m=>(m.role=null,m)))}catch{r.value=!1}r.value=!1}async function G(){if(s.value.$touch(),s.value.$invalid)return!0;try{p.value=!0;let l={...t.userData,companies:t.userData.companies.map(m=>({role:m.role,id:m.id}))};await(g.value?t.updateUser:t.addUser)(l),k.push("/admin/users"),p.value=!1}catch{p.value=!1}}return(l,a)=>{const m=i("BaseBreadcrumbItem"),P=i("BaseBreadcrumb"),j=i("BasePageHeader"),$=i("BaseInput"),v=i("BaseInputGroup"),M=i("BaseMultiselect"),R=i("BaseInputGrid"),F=i("BaseIcon"),H=i("BaseButton"),T=i("BaseCard"),z=i("BasePage");return B(),V(z,null,{default:u(()=>[o(j,{title:y.value},{default:u(()=>[o(P,null,{default:u(()=>[o(m,{title:l.$t("general.home"),to:"dashboard"},null,8,["title"]),o(m,{title:l.$t("users.user",2),to:"/admin/users"},null,8,["title"]),o(m,{title:y.value,to:"#",active:""},null,8,["title"])]),_:1})]),_:1},8,["title"]),h("form",{action:"",autocomplete:"off",onSubmit:te(G,["prevent"])},[h("div",le,[o(T,{class:"mt-6 col-span-12 md:col-span-8"},{default:u(()=>[o(R,{layout:"one-column"},{default:u(()=>[o(v,{"content-loading":e(r),label:l.$t("users.name"),error:e(s).userData.name.$error&&e(s).userData.name.$errors[0].$message,required:""},{default:u(()=>[o($,{modelValue:e(t).userData.name,"onUpdate:modelValue":a[0]||(a[0]=n=>e(t).userData.name=n),modelModifiers:{trim:!0},"content-loading":e(r),invalid:e(s).userData.name.$error,onInput:a[1]||(a[1]=n=>e(s).userData.name.$touch())},null,8,["modelValue","content-loading","invalid"])]),_:1},8,["content-loading","label","error"]),o(v,{"content-loading":e(r),label:l.$t("users.email"),error:e(s).userData.email.$error&&e(s).userData.email.$errors[0].$message,required:""},{default:u(()=>[o($,{modelValue:e(t).userData.email,"onUpdate:modelValue":a[2]||(a[2]=n=>e(t).userData.email=n),modelModifiers:{trim:!0},type:"email","content-loading":e(r),invalid:e(s).userData.email.$error,onInput:a[3]||(a[3]=n=>e(s).userData.email.$touch())},null,8,["modelValue","content-loading","invalid"])]),_:1},8,["content-loading","label","error"]),o(v,{"content-loading":e(r),label:l.$t("users.companies"),error:e(s).userData.companies.$error&&e(s).userData.companies.$errors[0].$message,required:""},{default:u(()=>[o(M,{modelValue:e(t).userData.companies,"onUpdate:modelValue":a[4]||(a[4]=n=>e(t).userData.companies=n),mode:"tags",object:!0,autocomplete:"new-password",label:"name",options:e(q),"value-prop":"id",invalid:e(s).userData.companies.$error,"content-loading":e(r),searchable:"","can-deselect":!1,class:"w-full","track-by":"name"},null,8,["modelValue","options","invalid","content-loading"])]),_:1},8,["content-loading","label","error"]),(B(!0),W(Y,null,X(e(t).userData.companies,(n,D)=>(B(),V(e(ne),{key:D,state:n,rules:N},{default:u(({v:_})=>[h("div",ue,[o(v,{"content-loading":e(r),label:l.$t("users.select_company_role",{company:n.name}),error:_.role.$error&&_.role.$errors[0].$message,required:""},{default:u(()=>[o(M,{modelValue:e(t).userData.companies[D].role,"onUpdate:modelValue":U=>e(t).userData.companies[D].role=U,"value-prop":"name","track-by":"id",autocomplete:"off","content-loading":e(r),label:"name",options:e(t).userData.companies[D].roles,"can-deselect":!1,invalid:_.role.$invalid,onChange:U=>_.role.$touch()},null,8,["modelValue","onUpdate:modelValue","content-loading","options","invalid","onChange"])]),_:2},1032,["content-loading","label","error"])])]),_:2},1032,["state"]))),128)),o(v,{"content-loading":e(r),label:l.$t("users.password"),error:e(s).userData.password.$error&&e(s).userData.password.$errors[0].$message,required:!g.value},{default:u(()=>[o($,{modelValue:e(t).userData.password,"onUpdate:modelValue":a[5]||(a[5]=n=>e(t).userData.password=n),name:"new-password",autocomplete:"new-password","content-loading":e(r),type:"password",invalid:e(s).userData.password.$error,onInput:a[6]||(a[6]=n=>e(s).userData.password.$touch())},null,8,["modelValue","content-loading","invalid"])]),_:1},8,["content-loading","label","error","required"]),o(v,{"content-loading":e(r),label:l.$t("users.phone")},{default:u(()=>[o($,{modelValue:e(t).userData.phone,"onUpdate:modelValue":a[7]||(a[7]=n=>e(t).userData.phone=n),modelModifiers:{trim:!0},"content-loading":e(r)},null,8,["modelValue","content-loading"])]),_:1},8,["content-loading","label"])]),_:1}),o(H,{"content-loading":e(r),type:"submit",loading:e(p),disabled:e(p),class:"mt-6"},{left:u(n=>[e(p)?x("",!0):(B(),V(F,{key:0,name:"SaveIcon",class:Z(n.class)},null,8,["class"]))]),default:u(()=>[ee(" "+ae(g.value?l.$t("users.update_user"):l.$t("users.save_user")),1)]),_:1},8,["content-loading","loading","disabled"])]),_:1})])],32)]),_:1})}}};export{pe as default}; +import{v as A,L as J,e as K,E as O,f as w,k as b,g as c,h as f,j as Q,r as i,o as B,m as V,w as u,a as o,b as h,l as e,c as W,O as X,N as Y,J as Z,K as x,p as ee,t as ae,q as te,I as C,i as oe,ag as se}from"./main-pPEsZPea.js";import{V as ne}from"./index-M4eah3LL.js";import{u as re}from"./users-bFFtYbqz.js";const le={class:"grid grid-cols-12"},ue={class:"space-y-6"},pe={__name:"Create",setup(ie){const t=re(),{t:d}=A.useI18n(),I=J(),k=K(),S=O();let p=w(!1),r=w(!1);w([]);let q=w([]);const g=b(()=>I.name==="users.edit"),y=b(()=>g.value?d("users.edit_user"):d("users.new_user")),L=b(()=>({userData:{name:{required:c.withMessage(d("validation.required"),f),minLength:c.withMessage(d("validation.name_min_length",{count:3}),C(3))},email:{required:c.withMessage(d("validation.required"),f),email:c.withMessage(d("validation.email_incorrect"),oe)},password:{required:se(function(){return c.withMessage(d("validation.required"),f),!g.value}),minLength:c.withMessage(d("validation.password_min_length",{count:8}),C(8))},companies:{required:c.withMessage(d("validation.required"),f)}}})),N={role:{required:c.withMessage(d("validation.required"),f)}},s=Q(L,t,{$scope:!0});E(),t.resetUserData();async function E(){var l;r.value=!0;try{g.value&&await t.fetchUser(I.params.id);let a=await S.fetchUserCompanies();(l=a==null?void 0:a.data)!=null&&l.data&&(q.value=a.data.data.map(m=>(m.role=null,m)))}catch{r.value=!1}r.value=!1}async function G(){if(s.value.$touch(),s.value.$invalid)return!0;try{p.value=!0;let l={...t.userData,companies:t.userData.companies.map(m=>({role:m.role,id:m.id}))};await(g.value?t.updateUser:t.addUser)(l),k.push("/admin/users"),p.value=!1}catch{p.value=!1}}return(l,a)=>{const m=i("BaseBreadcrumbItem"),P=i("BaseBreadcrumb"),j=i("BasePageHeader"),$=i("BaseInput"),v=i("BaseInputGroup"),M=i("BaseMultiselect"),R=i("BaseInputGrid"),F=i("BaseIcon"),H=i("BaseButton"),T=i("BaseCard"),z=i("BasePage");return B(),V(z,null,{default:u(()=>[o(j,{title:y.value},{default:u(()=>[o(P,null,{default:u(()=>[o(m,{title:l.$t("general.home"),to:"dashboard"},null,8,["title"]),o(m,{title:l.$t("users.user",2),to:"/admin/users"},null,8,["title"]),o(m,{title:y.value,to:"#",active:""},null,8,["title"])]),_:1})]),_:1},8,["title"]),h("form",{action:"",autocomplete:"off",onSubmit:te(G,["prevent"])},[h("div",le,[o(T,{class:"mt-6 col-span-12 md:col-span-8"},{default:u(()=>[o(R,{layout:"one-column"},{default:u(()=>[o(v,{"content-loading":e(r),label:l.$t("users.name"),error:e(s).userData.name.$error&&e(s).userData.name.$errors[0].$message,required:""},{default:u(()=>[o($,{modelValue:e(t).userData.name,"onUpdate:modelValue":a[0]||(a[0]=n=>e(t).userData.name=n),modelModifiers:{trim:!0},"content-loading":e(r),invalid:e(s).userData.name.$error,onInput:a[1]||(a[1]=n=>e(s).userData.name.$touch())},null,8,["modelValue","content-loading","invalid"])]),_:1},8,["content-loading","label","error"]),o(v,{"content-loading":e(r),label:l.$t("users.email"),error:e(s).userData.email.$error&&e(s).userData.email.$errors[0].$message,required:""},{default:u(()=>[o($,{modelValue:e(t).userData.email,"onUpdate:modelValue":a[2]||(a[2]=n=>e(t).userData.email=n),modelModifiers:{trim:!0},type:"email","content-loading":e(r),invalid:e(s).userData.email.$error,onInput:a[3]||(a[3]=n=>e(s).userData.email.$touch())},null,8,["modelValue","content-loading","invalid"])]),_:1},8,["content-loading","label","error"]),o(v,{"content-loading":e(r),label:l.$t("users.companies"),error:e(s).userData.companies.$error&&e(s).userData.companies.$errors[0].$message,required:""},{default:u(()=>[o(M,{modelValue:e(t).userData.companies,"onUpdate:modelValue":a[4]||(a[4]=n=>e(t).userData.companies=n),mode:"tags",object:!0,autocomplete:"new-password",label:"name",options:e(q),"value-prop":"id",invalid:e(s).userData.companies.$error,"content-loading":e(r),searchable:"","can-deselect":!1,class:"w-full","track-by":"name"},null,8,["modelValue","options","invalid","content-loading"])]),_:1},8,["content-loading","label","error"]),(B(!0),W(Y,null,X(e(t).userData.companies,(n,D)=>(B(),V(e(ne),{key:D,state:n,rules:N},{default:u(({v:_})=>[h("div",ue,[o(v,{"content-loading":e(r),label:l.$t("users.select_company_role",{company:n.name}),error:_.role.$error&&_.role.$errors[0].$message,required:""},{default:u(()=>[o(M,{modelValue:e(t).userData.companies[D].role,"onUpdate:modelValue":U=>e(t).userData.companies[D].role=U,"value-prop":"name","track-by":"id",autocomplete:"off","content-loading":e(r),label:"name",options:e(t).userData.companies[D].roles,"can-deselect":!1,invalid:_.role.$invalid,onChange:U=>_.role.$touch()},null,8,["modelValue","onUpdate:modelValue","content-loading","options","invalid","onChange"])]),_:2},1032,["content-loading","label","error"])])]),_:2},1032,["state"]))),128)),o(v,{"content-loading":e(r),label:l.$t("users.password"),error:e(s).userData.password.$error&&e(s).userData.password.$errors[0].$message,required:!g.value},{default:u(()=>[o($,{modelValue:e(t).userData.password,"onUpdate:modelValue":a[5]||(a[5]=n=>e(t).userData.password=n),name:"new-password",autocomplete:"new-password","content-loading":e(r),type:"password",invalid:e(s).userData.password.$error,onInput:a[6]||(a[6]=n=>e(s).userData.password.$touch())},null,8,["modelValue","content-loading","invalid"])]),_:1},8,["content-loading","label","error","required"]),o(v,{"content-loading":e(r),label:l.$t("users.phone")},{default:u(()=>[o($,{modelValue:e(t).userData.phone,"onUpdate:modelValue":a[7]||(a[7]=n=>e(t).userData.phone=n),modelModifiers:{trim:!0},"content-loading":e(r)},null,8,["modelValue","content-loading"])]),_:1},8,["content-loading","label"])]),_:1}),o(H,{"content-loading":e(r),type:"submit",loading:e(p),disabled:e(p),class:"mt-6"},{left:u(n=>[e(p)?x("",!0):(B(),V(F,{key:0,name:"SaveIcon",class:Z(n.class)},null,8,["class"]))]),default:u(()=>[ee(" "+ae(g.value?l.$t("users.update_user"):l.$t("users.save_user")),1)]),_:1},8,["content-loading","loading","disabled"])]),_:1})])],32)]),_:1})}}};export{pe as default}; diff --git a/public/build/assets/CreateCustomFields-blY-YoZ8.js b/public/build/assets/CreateCustomFields-8Vbtza7g.js similarity index 66% rename from public/build/assets/CreateCustomFields-blY-YoZ8.js rename to public/build/assets/CreateCustomFields-8Vbtza7g.js index 614a67cb..35b7b1dd 100644 --- a/public/build/assets/CreateCustomFields-blY-YoZ8.js +++ b/public/build/assets/CreateCustomFields-8Vbtza7g.js @@ -1,7 +1,7 @@ -import{v as T,g as E,ag as g,j as P,k as _,ax as I,ay as s,r as f,o as l,m as c,w as v,a3 as D,l as m,ae as q,aB as V,z as F,c as y,a as h,N as L,O,K as S,ab as b}from"./main-B9dpPbRR.js";import{_ as x}from"./dynamic-import-helper-0gtGTknh.js";const C={__name:"CreateCustomFieldsSingle",props:{field:{type:Object,required:!0},customFieldScope:{type:String,required:!0},index:{type:Number,required:!0},store:{type:Object,required:!0},storeProp:{type:String,required:!0}},setup(e){const i=e,{t:o}=T.useI18n(),d={value:{required:E.withMessage(o("validation.required"),g(i.field.is_required))}},a=P(d,_(()=>i.field),{$scope:i.customFieldScope}),t=_(()=>i.field.type?I(()=>x(Object.assign({"./types/DateTimeType.vue":()=>s(()=>import("./DateTimeType-a5BpvpZp.js"),__vite__mapDeps([0,1,2])),"./types/DateType.vue":()=>s(()=>import("./DateType-f9pnJsdS.js"),__vite__mapDeps([3,1,2])),"./types/DropdownType.vue":()=>s(()=>import("./DropdownType-l90eAEcc.js"),__vite__mapDeps([4,1,2])),"./types/InputType.vue":()=>s(()=>import("./InputType-RKQYBHxv.js"),__vite__mapDeps([5,1,2])),"./types/NumberType.vue":()=>s(()=>import("./NumberType-rRpwD-2g.js"),__vite__mapDeps([6,1,2])),"./types/PhoneType.vue":()=>s(()=>import("./PhoneType-WzA-1nI_.js"),__vite__mapDeps([7,1,2])),"./types/SwitchType.vue":()=>s(()=>import("./SwitchType-7loDSbd1.js"),__vite__mapDeps([8,1,2])),"./types/TextAreaType.vue":()=>s(()=>import("./TextAreaType-Y4tJ0XjS.js"),__vite__mapDeps([9,1,2])),"./types/TimeType.vue":()=>s(()=>import("./TimeType-xTM4w-r_.js"),__vite__mapDeps([10,1,2])),"./types/UrlType.vue":()=>s(()=>import("./UrlType-txLUbTpu.js"),__vite__mapDeps([11,1,2]))}),`./types/${i.field.type}Type.vue`)):!1);return(u,r)=>{const n=f("BaseInputGroup");return l(),c(n,{label:e.field.label,required:!!e.field.is_required,error:m(a).value.$error&&m(a).value.$errors[0].$message},{default:v(()=>[(l(),c(D(t.value),{modelValue:e.field.value,"onUpdate:modelValue":r[0]||(r[0]=p=>e.field.value=p),options:e.field.options,invalid:m(a).value.$error,placeholder:e.field.placeholder},null,8,["modelValue","options","invalid","placeholder"]))]),_:1},8,["label","required","error"])}}},A={key:0},R={__name:"CreateCustomFields",props:{store:{type:Object,required:!0},storeProp:{type:String,required:!0},isEdit:{type:Boolean,default:!1},type:{type:String,default:null},gridLayout:{type:String,default:"two-column"},isLoading:{type:Boolean,default:null},customFieldScope:{type:String,required:!0}},setup(e){const i=q(),o=e;a();function d(){o.isEdit&&o.store[o.storeProp].fields.forEach(t=>{const u=o.store[o.storeProp].customFields.findIndex(r=>r.id===t.custom_field_id);if(u>-1){let r=t.default_answer;r&&t.custom_field.type==="DateTime"&&(r=b(t.default_answer,"YYYY-MM-DD HH:mm:ss").format("YYYY-MM-DD HH:mm")),o.store[o.storeProp].customFields[u]={...t,id:t.custom_field_id,value:r,label:t.custom_field.label,options:t.custom_field.options,is_required:t.custom_field.is_required,placeholder:t.custom_field.placeholder,order:t.custom_field.order}}})}async function a(){let u=(await i.fetchCustomFields({type:o.type,limit:"all"})).data.data;u.map(r=>r.value=r.default_answer),o.store[o.storeProp].customFields=V.sortBy(u,r=>r.order),d()}return F(()=>o.store[o.storeProp].fields,t=>{d()}),(t,u)=>{const r=f("BaseInputGrid");return e.store[e.storeProp]&&e.store[e.storeProp].customFields.length>0&&!e.isLoading?(l(),y("div",A,[h(r,{layout:e.gridLayout},{default:v(()=>[(l(!0),y(L,null,O(e.store[e.storeProp].customFields,(n,p)=>(l(),c(C,{key:n.id,"custom-field-scope":e.customFieldScope,store:e.store,"store-prop":e.storeProp,index:p,field:n},null,8,["custom-field-scope","store","store-prop","index","field"]))),128))]),_:1},8,["layout"])])):S("",!0)}}};export{R as _}; +import{v as E,g as T,ag as g,j as P,k as _,ax as I,ay as s,r as f,o as l,m as c,w as v,a3 as D,l as m,ae as q,aE as V,z as F,c as y,a as h,N as L,O,K as S,ab as b}from"./main-pPEsZPea.js";import{_ as x}from"./dynamic-import-helper-0gtGTknh.js";const C={__name:"CreateCustomFieldsSingle",props:{field:{type:Object,required:!0},customFieldScope:{type:String,required:!0},index:{type:Number,required:!0},store:{type:Object,required:!0},storeProp:{type:String,required:!0}},setup(e){const i=e,{t:o}=E.useI18n(),d={value:{required:T.withMessage(o("validation.required"),g(i.field.is_required))}},a=P(d,_(()=>i.field),{$scope:i.customFieldScope}),t=_(()=>i.field.type?I(()=>x(Object.assign({"./types/DateTimeType.vue":()=>s(()=>import("./DateTimeType-lxr7K8cW.js"),__vite__mapDeps([0,1,2])),"./types/DateType.vue":()=>s(()=>import("./DateType-IUam2uIC.js"),__vite__mapDeps([3,1,2])),"./types/DropdownType.vue":()=>s(()=>import("./DropdownType-hGfhMyxV.js"),__vite__mapDeps([4,1,2])),"./types/InputType.vue":()=>s(()=>import("./InputType-RojMM-h7.js"),__vite__mapDeps([5,1,2])),"./types/NumberType.vue":()=>s(()=>import("./NumberType-Yfr104pP.js"),__vite__mapDeps([6,1,2])),"./types/PhoneType.vue":()=>s(()=>import("./PhoneType-2Vn08TnG.js"),__vite__mapDeps([7,1,2])),"./types/SwitchType.vue":()=>s(()=>import("./SwitchType-8zVnAshp.js"),__vite__mapDeps([8,1,2])),"./types/TextAreaType.vue":()=>s(()=>import("./TextAreaType-WkjHyMHs.js"),__vite__mapDeps([9,1,2])),"./types/TimeType.vue":()=>s(()=>import("./TimeType-HqsdM7aY.js"),__vite__mapDeps([10,1,2])),"./types/UrlType.vue":()=>s(()=>import("./UrlType-1hVHE1M4.js"),__vite__mapDeps([11,1,2]))}),`./types/${i.field.type}Type.vue`)):!1);return(u,r)=>{const n=f("BaseInputGroup");return l(),c(n,{label:e.field.label,required:!!e.field.is_required,error:m(a).value.$error&&m(a).value.$errors[0].$message},{default:v(()=>[(l(),c(D(t.value),{modelValue:e.field.value,"onUpdate:modelValue":r[0]||(r[0]=p=>e.field.value=p),options:e.field.options,invalid:m(a).value.$error,placeholder:e.field.placeholder},null,8,["modelValue","options","invalid","placeholder"]))]),_:1},8,["label","required","error"])}}},A={key:0},B={__name:"CreateCustomFields",props:{store:{type:Object,required:!0},storeProp:{type:String,required:!0},isEdit:{type:Boolean,default:!1},type:{type:String,default:null},gridLayout:{type:String,default:"two-column"},isLoading:{type:Boolean,default:null},customFieldScope:{type:String,required:!0}},setup(e){const i=q(),o=e;a();function d(){o.isEdit&&o.store[o.storeProp].fields.forEach(t=>{const u=o.store[o.storeProp].customFields.findIndex(r=>r.id===t.custom_field_id);if(u>-1){let r=t.default_answer;r&&t.custom_field.type==="DateTime"&&(r=b(t.default_answer,"YYYY-MM-DD HH:mm:ss").format("YYYY-MM-DD HH:mm")),o.store[o.storeProp].customFields[u]={...t,id:t.custom_field_id,value:r,label:t.custom_field.label,options:t.custom_field.options,is_required:t.custom_field.is_required,placeholder:t.custom_field.placeholder,order:t.custom_field.order}}})}async function a(){let u=(await i.fetchCustomFields({type:o.type,limit:"all"})).data.data;u.map(r=>r.value=r.default_answer),o.store[o.storeProp].customFields=V.sortBy(u,r=>r.order),d()}return F(()=>o.store[o.storeProp].fields,t=>{d()}),(t,u)=>{const r=f("BaseInputGrid");return e.store[e.storeProp]&&e.store[e.storeProp].customFields.length>0&&!e.isLoading?(l(),y("div",A,[h(r,{layout:e.gridLayout},{default:v(()=>[(l(!0),y(L,null,O(e.store[e.storeProp].customFields,(n,p)=>(l(),c(C,{key:n.id,"custom-field-scope":e.customFieldScope,store:e.store,"store-prop":e.storeProp,index:p,field:n},null,8,["custom-field-scope","store","store-prop","index","field"]))),128))]),_:1},8,["layout"])])):S("",!0)}}};export{B as _}; function __vite__mapDeps(indexes) { if (!__vite__mapDeps.viteFileDeps) { - __vite__mapDeps.viteFileDeps = ["assets/DateTimeType-a5BpvpZp.js","assets/main-B9dpPbRR.js","assets/main-jWFDxuC1.css","assets/DateType-f9pnJsdS.js","assets/DropdownType-l90eAEcc.js","assets/InputType-RKQYBHxv.js","assets/NumberType-rRpwD-2g.js","assets/PhoneType-WzA-1nI_.js","assets/SwitchType-7loDSbd1.js","assets/TextAreaType-Y4tJ0XjS.js","assets/TimeType-xTM4w-r_.js","assets/UrlType-txLUbTpu.js"] + __vite__mapDeps.viteFileDeps = ["assets/DateTimeType-lxr7K8cW.js","assets/main-pPEsZPea.js","assets/main-jWFDxuC1.css","assets/DateType-IUam2uIC.js","assets/DropdownType-hGfhMyxV.js","assets/InputType-RojMM-h7.js","assets/NumberType-Yfr104pP.js","assets/PhoneType-2Vn08TnG.js","assets/SwitchType-8zVnAshp.js","assets/TextAreaType-WkjHyMHs.js","assets/TimeType-HqsdM7aY.js","assets/UrlType-1hVHE1M4.js"] } return indexes.map((i) => __vite__mapDeps.viteFileDeps[i]) } diff --git a/public/build/assets/CustomFieldsSetting-KK9JvhDD.js b/public/build/assets/CustomFieldsSetting-eQj7hyR_.js similarity index 91% rename from public/build/assets/CustomFieldsSetting-KK9JvhDD.js rename to public/build/assets/CustomFieldsSetting-eQj7hyR_.js index 7ade47c7..ffa223bb 100644 --- a/public/build/assets/CustomFieldsSetting-KK9JvhDD.js +++ b/public/build/assets/CustomFieldsSetting-eQj7hyR_.js @@ -1,7 +1,7 @@ -import{a7 as ae,u as ne,v as H,ae as z,L as re,M as W,F as G,a5 as Z,r as i,o as C,m as b,w as n,a as s,l as e,Q as L,p as B,t as w,K as A,f as x,c as R,aw as ue,q as ee,H as X,k as T,ax as ie,ay as F,g as q,h as M,ar as de,j as me,b as O,n as ce,N as pe,O as _e,J as j,a3 as fe,a6 as ve}from"./main-B9dpPbRR.js";import{_ as Ce}from"./dynamic-import-helper-0gtGTknh.js";const ye={__name:"CustomFieldIndexDropdown",props:{row:{type:Object,default:null},table:{type:Object,default:null},loadData:{type:Function,default:null}},setup(k){const p=k,t=ae();ne();const{t:u}=H.useI18n(),c=z();re();const f=W(),d=G();Z("utils");async function m(v){await c.fetchCustomField(v),d.openModal({title:u("settings.custom_fields.edit_custom_field"),componentName:"CustomFieldModal",size:"sm",data:v,refreshData:p.loadData})}async function D(v){t.openDialog({title:u("general.are_you_sure"),message:u("settings.custom_fields.custom_field_confirm_delete"),yesLabel:u("general.ok"),noLabel:u("general.cancel"),variant:"danger",hideNoButton:!1,size:"lg"}).then(async g=>{g&&(await c.deleteCustomFields(v),p.loadData&&p.loadData())})}return(v,g)=>{const _=i("BaseIcon"),V=i("BaseDropdownItem"),I=i("BaseDropdown");return C(),b(I,null,{activator:n(()=>[s(_,{name:"DotsHorizontalIcon",class:"h-5 text-gray-500"})]),default:n(()=>[e(f).hasAbilities(e(L).EDIT_CUSTOM_FIELDS)?(C(),b(V,{key:0,onClick:g[0]||(g[0]=o=>m(k.row.id))},{default:n(()=>[s(_,{name:"PencilIcon",class:"w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500"}),B(" "+w(v.$t("general.edit")),1)]),_:1})):A("",!0),e(f).hasAbilities(e(L).DELETE_CUSTOM_FIELDS)?(C(),b(V,{key:1,onClick:g[1]||(g[1]=o=>D(k.row.id))},{default:n(()=>[s(_,{name:"TrashIcon",class:"w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500"}),B(" "+w(v.$t("general.delete")),1)]),_:1})):A("",!0)]),_:1})}}},ge={class:"flex items-center mt-1"},Fe={__name:"OptionsCreate",emits:["onAdd"],setup(k,{emit:p}){const t=p,u=x(null);function c(){if(u.value==null||u.value==""||u.value==null)return!0;t("onAdd",u.value),u.value=null}return(f,d)=>{const m=i("BaseInput"),D=i("BaseIcon");return C(),R("div",ge,[s(m,{modelValue:u.value,"onUpdate:modelValue":d[0]||(d[0]=v=>u.value=v),type:"text",class:"w-full md:w-96",placeholder:f.$t("settings.custom_fields.press_enter_to_add"),onClick:c,onKeydown:ue(ee(c,["prevent","stop"]),["enter"])},null,8,["modelValue","placeholder","onKeydown"]),s(D,{name:"PlusCircleIcon",class:"ml-1 text-primary-500 cursor-pointer",onClick:c})])}}},be={class:"flex justify-between w-full"},$e={class:"overflow-y-auto max-h-[550px]"},we={class:"px-4 md:px-8 py-8 overflow-y-auto sm:p-6"},Ie={class:"z-0 flex justify-end p-4 border-t border-solid border-gray-light border-modal-bg"},Te={__name:"CustomFieldModal",setup(k){const p=G(),t=z(),{t:u}=H.useI18n();let c=x(!1);const f=X(["Customer","Invoice","Estimate","Expense","Payment"]),d=X([{label:"Text",value:"Input"},{label:"Textarea",value:"TextArea"},{label:"Phone",value:"Phone"},{label:"URL",value:"Url"},{label:"Number",value:"Number"},{label:"Select Field",value:"Dropdown"},{label:"Switch Toggle",value:"Switch"},{label:"Date",value:"Date"},{label:"Time",value:"Time"},{label:"Date & Time",value:"DateTime"}]);let m=x(d[0]);const D=T(()=>p.active&&p.componentName==="CustomFieldModal"),v=T(()=>m.value&&m.value.label==="Switch Toggle"),g=T(()=>m.value&&m.value.label==="Select Field"),_=T(()=>t.currentCustomField.type?ie(()=>Ce(Object.assign({"../../custom-fields/types/DateTimeType.vue":()=>F(()=>import("./DateTimeType-a5BpvpZp.js"),__vite__mapDeps([0,1,2])),"../../custom-fields/types/DateType.vue":()=>F(()=>import("./DateType-f9pnJsdS.js"),__vite__mapDeps([3,1,2])),"../../custom-fields/types/DropdownType.vue":()=>F(()=>import("./DropdownType-l90eAEcc.js"),__vite__mapDeps([4,1,2])),"../../custom-fields/types/InputType.vue":()=>F(()=>import("./InputType-RKQYBHxv.js"),__vite__mapDeps([5,1,2])),"../../custom-fields/types/NumberType.vue":()=>F(()=>import("./NumberType-rRpwD-2g.js"),__vite__mapDeps([6,1,2])),"../../custom-fields/types/PhoneType.vue":()=>F(()=>import("./PhoneType-WzA-1nI_.js"),__vite__mapDeps([7,1,2])),"../../custom-fields/types/SwitchType.vue":()=>F(()=>import("./SwitchType-7loDSbd1.js"),__vite__mapDeps([8,1,2])),"../../custom-fields/types/TextAreaType.vue":()=>F(()=>import("./TextAreaType-Y4tJ0XjS.js"),__vite__mapDeps([9,1,2])),"../../custom-fields/types/TimeType.vue":()=>F(()=>import("./TimeType-xTM4w-r_.js"),__vite__mapDeps([10,1,2])),"../../custom-fields/types/UrlType.vue":()=>F(()=>import("./UrlType-txLUbTpu.js"),__vite__mapDeps([11,1,2]))}),`../../custom-fields/types/${t.currentCustomField.type}Type.vue`)):!1),V=T({get:()=>t.currentCustomField.is_required===1,set:l=>{const a=l?1:0;t.currentCustomField.is_required=a}}),I=T(()=>({currentCustomField:{type:{required:q.withMessage(u("validation.required"),M)},name:{required:q.withMessage(u("validation.required"),M)},label:{required:q.withMessage(u("validation.required"),M)},model_type:{required:q.withMessage(u("validation.required"),M)},order:{required:q.withMessage(u("validation.required"),M),numeric:q.withMessage(u("validation.numbers_only"),de)},type:{required:q.withMessage(u("validation.required"),M)}}})),o=me(I,T(()=>t));function h(){t.isEdit?m.value=d.find(l=>l.value==t.currentCustomField.type):(t.currentCustomField.model_type=f[0],t.currentCustomField.type=d[0].value,m.value=d[0])}async function P(){if(o.value.currentCustomField.$touch(),o.value.currentCustomField.$invalid)return!0;c.value=!0;let l={...t.currentCustomField};if(t.currentCustomField.options&&(l.options=t.currentCustomField.options.map(S=>S.name)),l.type=="Time"&&typeof l.default_answer=="object"){let S=l&&l.default_answer&&l.default_answer.HH?l.default_answer.HH:null,E=l&&l.default_answer&&l.default_answer.mm?l.default_answer.mm:null;l&&l.default_answer&&l.default_answer.ss&&l.default_answer.ss,l.default_answer=`${S}:${E}`}await(t.isEdit?t.updateCustomField:t.addCustomField)(l),c.value=!1,p.refreshData&&p.refreshData(),N()}function U(l){t.currentCustomField.options=[{name:l},...t.currentCustomField.options]}function y(l){if(t.isEdit&&t.currentCustomField.in_use)return;t.currentCustomField.options[l].name===t.currentCustomField.default_answer&&(t.currentCustomField.default_answer=null),t.currentCustomField.options.splice(l,1)}function te(l){t.currentCustomField.type=l.value}function N(){p.closeModal(),setTimeout(()=>{t.resetCurrentCustomField(),o.value.$reset()},300)}return(l,a)=>{const S=i("BaseIcon"),E=i("BaseInput"),$=i("BaseInputGroup"),K=i("BaseMultiselect"),le=i("BaseSwitch"),se=i("BaseInputGrid"),Y=i("BaseButton"),oe=i("BaseModal");return C(),b(oe,{show:D.value,onOpen:h},{header:n(()=>[O("div",be,[B(w(e(p).title)+" ",1),s(S,{name:"XIcon",class:"w-6 h-6 text-gray-500 cursor-pointer",onClick:N})])]),default:n(()=>[O("form",{action:"",onSubmit:ee(P,["prevent"])},[O("div",$e,[O("div",we,[s(se,{layout:"one-column"},{default:n(()=>[s($,{label:l.$t("settings.custom_fields.name"),required:"",error:e(o).currentCustomField.name.$error&&e(o).currentCustomField.name.$errors[0].$message},{default:n(()=>[s(E,{ref:"name",modelValue:e(t).currentCustomField.name,"onUpdate:modelValue":a[0]||(a[0]=r=>e(t).currentCustomField.name=r),invalid:e(o).currentCustomField.name.$error,onInput:a[1]||(a[1]=r=>e(o).currentCustomField.name.$touch())},null,8,["modelValue","invalid"])]),_:1},8,["label","error"]),s($,{label:l.$t("settings.custom_fields.model"),error:e(o).currentCustomField.model_type.$error&&e(o).currentCustomField.model_type.$errors[0].$message,"help-text":e(t).currentCustomField.in_use?l.$t("settings.custom_fields.model_in_use"):"",required:""},{default:n(()=>[s(K,{modelValue:e(t).currentCustomField.model_type,"onUpdate:modelValue":a[2]||(a[2]=r=>e(t).currentCustomField.model_type=r),options:f,"can-deselect":!1,invalid:e(o).currentCustomField.model_type.$error,searchable:!0,disabled:e(t).currentCustomField.in_use,onInput:a[3]||(a[3]=r=>e(o).currentCustomField.model_type.$touch())},null,8,["modelValue","options","invalid","disabled"])]),_:1},8,["label","error","help-text"]),s($,{class:"flex items-center space-x-4",label:l.$t("settings.custom_fields.required")},{default:n(()=>[s(le,{modelValue:V.value,"onUpdate:modelValue":a[4]||(a[4]=r=>V.value=r)},null,8,["modelValue"])]),_:1},8,["label"]),s($,{label:l.$t("settings.custom_fields.type"),error:e(o).currentCustomField.type.$error&&e(o).currentCustomField.type.$errors[0].$message,"help-text":e(t).currentCustomField.in_use?l.$t("settings.custom_fields.type_in_use"):"",required:""},{default:n(()=>[s(K,{modelValue:e(m),"onUpdate:modelValue":[a[5]||(a[5]=r=>ce(m)?m.value=r:m=r),te],options:d,invalid:e(o).currentCustomField.type.$error,disabled:e(t).currentCustomField.in_use,searchable:!0,"can-deselect":!1,object:""},null,8,["modelValue","options","invalid","disabled"])]),_:1},8,["label","error","help-text"]),s($,{label:l.$t("settings.custom_fields.label"),required:"",error:e(o).currentCustomField.label.$error&&e(o).currentCustomField.label.$errors[0].$message},{default:n(()=>[s(E,{modelValue:e(t).currentCustomField.label,"onUpdate:modelValue":a[6]||(a[6]=r=>e(t).currentCustomField.label=r),invalid:e(o).currentCustomField.label.$error,onInput:a[7]||(a[7]=r=>e(o).currentCustomField.label.$touch())},null,8,["modelValue","invalid"])]),_:1},8,["label","error"]),g.value?(C(),b($,{key:0,label:l.$t("settings.custom_fields.options")},{default:n(()=>[s(Fe,{onOnAdd:U}),(C(!0),R(pe,null,_e(e(t).currentCustomField.options,(r,J)=>(C(),R("div",{key:J,class:"flex items-center mt-5"},[s(E,{modelValue:r.name,"onUpdate:modelValue":Q=>r.name=Q,class:"w-64"},null,8,["modelValue","onUpdate:modelValue"]),s(S,{name:"MinusCircleIcon",class:j(["ml-1 cursor-pointer",e(t).currentCustomField.in_use?"text-gray-300":"text-red-300"]),onClick:Q=>y(J)},null,8,["class","onClick"])]))),128))]),_:1},8,["label"])):A("",!0),s($,{label:l.$t("settings.custom_fields.default_value"),class:"relative"},{default:n(()=>[(C(),b(fe(_.value),{modelValue:e(t).currentCustomField.default_answer,"onUpdate:modelValue":a[8]||(a[8]=r=>e(t).currentCustomField.default_answer=r),options:e(t).currentCustomField.options,"default-date-time":e(t).currentCustomField.dateTimeValue},null,8,["modelValue","options","default-date-time"]))]),_:1},8,["label"]),v.value?A("",!0):(C(),b($,{key:1,label:l.$t("settings.custom_fields.placeholder")},{default:n(()=>[s(E,{modelValue:e(t).currentCustomField.placeholder,"onUpdate:modelValue":a[9]||(a[9]=r=>e(t).currentCustomField.placeholder=r)},null,8,["modelValue"])]),_:1},8,["label"])),s($,{label:l.$t("settings.custom_fields.order"),error:e(o).currentCustomField.order.$error&&e(o).currentCustomField.order.$errors[0].$message,required:""},{default:n(()=>[s(E,{modelValue:e(t).currentCustomField.order,"onUpdate:modelValue":a[10]||(a[10]=r=>e(t).currentCustomField.order=r),type:"number",invalid:e(o).currentCustomField.order.$error,onInput:a[11]||(a[11]=r=>e(o).currentCustomField.order.$touch())},null,8,["modelValue","invalid"])]),_:1},8,["label","error"])]),_:1})])]),O("div",Ie,[s(Y,{class:"mr-3",type:"button",variant:"primary-outline",onClick:N},{default:n(()=>[B(w(l.$t("general.cancel")),1)]),_:1}),s(Y,{variant:"primary",loading:e(c),disabled:e(c),type:"submit"},{left:n(r=>[e(c)?A("",!0):(C(),b(S,{key:0,class:j(r.class),name:"SaveIcon"},null,8,["class"]))]),default:n(()=>[B(" "+w(e(t).isEdit?l.$t("general.update"):l.$t("general.save")),1)]),_:1},8,["loading","disabled"])])],32)]),_:1},8,["show"])}}},Be={class:"text-xs text-gray-500"},he={__name:"CustomFieldsSetting",setup(k){const p=G(),t=z(),u=W(),c=Z("utils"),{t:f}=H.useI18n(),d=x(null),m=T(()=>[{key:"name",label:f("settings.custom_fields.name"),thClass:"extra",tdClass:"font-medium text-gray-900"},{key:"model_type",label:f("settings.custom_fields.model")},{key:"type",label:f("settings.custom_fields.type")},{key:"is_required",label:f("settings.custom_fields.required")},{key:"actions",label:"",tdClass:"text-right text-sm font-medium",sortable:!1}]);async function D({page:_,filter:V,sort:I}){let o={orderByField:I.fieldName||"created_at",orderBy:I.order||"desc",page:_},h=await t.fetchCustomFields(o);return{data:h.data.data,pagination:{totalPages:h.data.meta.last_page,currentPage:_,limit:5,totalCount:h.data.meta.total}}}function v(){p.openModal({title:f("settings.custom_fields.add_custom_field"),componentName:"CustomFieldModal",size:"sm",refreshData:d.value&&d.value.refresh})}async function g(){d.value&&d.value.refresh()}return(_,V)=>{const I=i("BaseIcon"),o=i("BaseButton"),h=i("BaseBadge"),P=i("BaseTable"),U=i("BaseSettingCard");return C(),b(U,{title:_.$t("settings.menu_title.custom_fields"),description:_.$t("settings.custom_fields.section_description")},{action:n(()=>[e(u).hasAbilities(e(L).CREATE_CUSTOM_FIELDS)?(C(),b(o,{key:0,variant:"primary-outline",onClick:v},{left:n(y=>[s(I,{class:j(y.class),name:"PlusIcon"},null,8,["class"]),B(" "+w(_.$t("settings.custom_fields.add_custom_field")),1)]),_:1})):A("",!0)]),default:n(()=>[s(Te),s(P,{ref_key:"table",ref:d,data:D,columns:m.value,class:"mt-16"},ve({"cell-name":n(({row:y})=>[B(w(y.data.name)+" ",1),O("span",Be," ("+w(y.data.slug)+")",1)]),"cell-is_required":n(({row:y})=>[s(h,{"bg-color":e(c).getBadgeStatusColor(y.data.is_required?"YES":"NO").bgColor,color:e(c).getBadgeStatusColor(y.data.is_required?"YES":"NO").color},{default:n(()=>[B(w(y.data.is_required?_.$t("settings.custom_fields.yes"):_.$t("settings.custom_fields.no").replace("_"," ")),1)]),_:2},1032,["bg-color","color"])]),_:2},[e(u).hasAbilities([e(L).DELETE_CUSTOM_FIELDS,e(L).EDIT_CUSTOM_FIELDS])?{name:"cell-actions",fn:n(({row:y})=>[s(ye,{row:y.data,table:d.value,"load-data":g},null,8,["row","table"])]),key:"0"}:void 0]),1032,["columns"])]),_:1},8,["title","description"])}}};export{he as default}; +import{a7 as ae,u as ne,v as H,ae as z,L as re,M as W,F as G,a5 as Z,r as i,o as C,m as b,w as n,a as s,l as e,Q as L,p as B,t as w,K as A,f as x,c as R,aw as ue,q as ee,H as X,k as T,ax as ie,ay as F,g as q,h as M,ar as de,j as me,b as O,n as ce,N as pe,O as _e,J as j,a3 as fe,a6 as ve}from"./main-pPEsZPea.js";import{_ as Ce}from"./dynamic-import-helper-0gtGTknh.js";const ye={__name:"CustomFieldIndexDropdown",props:{row:{type:Object,default:null},table:{type:Object,default:null},loadData:{type:Function,default:null}},setup(k){const p=k,t=ae();ne();const{t:u}=H.useI18n(),c=z();re();const f=W(),d=G();Z("utils");async function m(v){await c.fetchCustomField(v),d.openModal({title:u("settings.custom_fields.edit_custom_field"),componentName:"CustomFieldModal",size:"sm",data:v,refreshData:p.loadData})}async function D(v){t.openDialog({title:u("general.are_you_sure"),message:u("settings.custom_fields.custom_field_confirm_delete"),yesLabel:u("general.ok"),noLabel:u("general.cancel"),variant:"danger",hideNoButton:!1,size:"lg"}).then(async g=>{g&&(await c.deleteCustomFields(v),p.loadData&&p.loadData())})}return(v,g)=>{const _=i("BaseIcon"),V=i("BaseDropdownItem"),I=i("BaseDropdown");return C(),b(I,null,{activator:n(()=>[s(_,{name:"DotsHorizontalIcon",class:"h-5 text-gray-500"})]),default:n(()=>[e(f).hasAbilities(e(L).EDIT_CUSTOM_FIELDS)?(C(),b(V,{key:0,onClick:g[0]||(g[0]=o=>m(k.row.id))},{default:n(()=>[s(_,{name:"PencilIcon",class:"w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500"}),B(" "+w(v.$t("general.edit")),1)]),_:1})):A("",!0),e(f).hasAbilities(e(L).DELETE_CUSTOM_FIELDS)?(C(),b(V,{key:1,onClick:g[1]||(g[1]=o=>D(k.row.id))},{default:n(()=>[s(_,{name:"TrashIcon",class:"w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500"}),B(" "+w(v.$t("general.delete")),1)]),_:1})):A("",!0)]),_:1})}}},ge={class:"flex items-center mt-1"},Fe={__name:"OptionsCreate",emits:["onAdd"],setup(k,{emit:p}){const t=p,u=x(null);function c(){if(u.value==null||u.value==""||u.value==null)return!0;t("onAdd",u.value),u.value=null}return(f,d)=>{const m=i("BaseInput"),D=i("BaseIcon");return C(),R("div",ge,[s(m,{modelValue:u.value,"onUpdate:modelValue":d[0]||(d[0]=v=>u.value=v),type:"text",class:"w-full md:w-96",placeholder:f.$t("settings.custom_fields.press_enter_to_add"),onClick:c,onKeydown:ue(ee(c,["prevent","stop"]),["enter"])},null,8,["modelValue","placeholder","onKeydown"]),s(D,{name:"PlusCircleIcon",class:"ml-1 text-primary-500 cursor-pointer",onClick:c})])}}},be={class:"flex justify-between w-full"},$e={class:"overflow-y-auto max-h-[550px]"},we={class:"px-4 md:px-8 py-8 overflow-y-auto sm:p-6"},Ie={class:"z-0 flex justify-end p-4 border-t border-solid border-gray-light border-modal-bg"},Te={__name:"CustomFieldModal",setup(k){const p=G(),t=z(),{t:u}=H.useI18n();let c=x(!1);const f=X(["Customer","Invoice","Estimate","Expense","Payment"]),d=X([{label:"Text",value:"Input"},{label:"Textarea",value:"TextArea"},{label:"Phone",value:"Phone"},{label:"URL",value:"Url"},{label:"Number",value:"Number"},{label:"Select Field",value:"Dropdown"},{label:"Switch Toggle",value:"Switch"},{label:"Date",value:"Date"},{label:"Time",value:"Time"},{label:"Date & Time",value:"DateTime"}]);let m=x(d[0]);const D=T(()=>p.active&&p.componentName==="CustomFieldModal"),v=T(()=>m.value&&m.value.label==="Switch Toggle"),g=T(()=>m.value&&m.value.label==="Select Field"),_=T(()=>t.currentCustomField.type?ie(()=>Ce(Object.assign({"../../custom-fields/types/DateTimeType.vue":()=>F(()=>import("./DateTimeType-lxr7K8cW.js"),__vite__mapDeps([0,1,2])),"../../custom-fields/types/DateType.vue":()=>F(()=>import("./DateType-IUam2uIC.js"),__vite__mapDeps([3,1,2])),"../../custom-fields/types/DropdownType.vue":()=>F(()=>import("./DropdownType-hGfhMyxV.js"),__vite__mapDeps([4,1,2])),"../../custom-fields/types/InputType.vue":()=>F(()=>import("./InputType-RojMM-h7.js"),__vite__mapDeps([5,1,2])),"../../custom-fields/types/NumberType.vue":()=>F(()=>import("./NumberType-Yfr104pP.js"),__vite__mapDeps([6,1,2])),"../../custom-fields/types/PhoneType.vue":()=>F(()=>import("./PhoneType-2Vn08TnG.js"),__vite__mapDeps([7,1,2])),"../../custom-fields/types/SwitchType.vue":()=>F(()=>import("./SwitchType-8zVnAshp.js"),__vite__mapDeps([8,1,2])),"../../custom-fields/types/TextAreaType.vue":()=>F(()=>import("./TextAreaType-WkjHyMHs.js"),__vite__mapDeps([9,1,2])),"../../custom-fields/types/TimeType.vue":()=>F(()=>import("./TimeType-HqsdM7aY.js"),__vite__mapDeps([10,1,2])),"../../custom-fields/types/UrlType.vue":()=>F(()=>import("./UrlType-1hVHE1M4.js"),__vite__mapDeps([11,1,2]))}),`../../custom-fields/types/${t.currentCustomField.type}Type.vue`)):!1),V=T({get:()=>t.currentCustomField.is_required===1,set:l=>{const a=l?1:0;t.currentCustomField.is_required=a}}),I=T(()=>({currentCustomField:{type:{required:q.withMessage(u("validation.required"),M)},name:{required:q.withMessage(u("validation.required"),M)},label:{required:q.withMessage(u("validation.required"),M)},model_type:{required:q.withMessage(u("validation.required"),M)},order:{required:q.withMessage(u("validation.required"),M),numeric:q.withMessage(u("validation.numbers_only"),de)},type:{required:q.withMessage(u("validation.required"),M)}}})),o=me(I,T(()=>t));function h(){t.isEdit?m.value=d.find(l=>l.value==t.currentCustomField.type):(t.currentCustomField.model_type=f[0],t.currentCustomField.type=d[0].value,m.value=d[0])}async function P(){if(o.value.currentCustomField.$touch(),o.value.currentCustomField.$invalid)return!0;c.value=!0;let l={...t.currentCustomField};if(t.currentCustomField.options&&(l.options=t.currentCustomField.options.map(S=>S.name)),l.type=="Time"&&typeof l.default_answer=="object"){let S=l&&l.default_answer&&l.default_answer.HH?l.default_answer.HH:null,E=l&&l.default_answer&&l.default_answer.mm?l.default_answer.mm:null;l&&l.default_answer&&l.default_answer.ss&&l.default_answer.ss,l.default_answer=`${S}:${E}`}await(t.isEdit?t.updateCustomField:t.addCustomField)(l),c.value=!1,p.refreshData&&p.refreshData(),N()}function U(l){t.currentCustomField.options=[{name:l},...t.currentCustomField.options]}function y(l){if(t.isEdit&&t.currentCustomField.in_use)return;t.currentCustomField.options[l].name===t.currentCustomField.default_answer&&(t.currentCustomField.default_answer=null),t.currentCustomField.options.splice(l,1)}function te(l){t.currentCustomField.type=l.value}function N(){p.closeModal(),setTimeout(()=>{t.resetCurrentCustomField(),o.value.$reset()},300)}return(l,a)=>{const S=i("BaseIcon"),E=i("BaseInput"),$=i("BaseInputGroup"),K=i("BaseMultiselect"),le=i("BaseSwitch"),se=i("BaseInputGrid"),Y=i("BaseButton"),oe=i("BaseModal");return C(),b(oe,{show:D.value,onOpen:h},{header:n(()=>[O("div",be,[B(w(e(p).title)+" ",1),s(S,{name:"XIcon",class:"w-6 h-6 text-gray-500 cursor-pointer",onClick:N})])]),default:n(()=>[O("form",{action:"",onSubmit:ee(P,["prevent"])},[O("div",$e,[O("div",we,[s(se,{layout:"one-column"},{default:n(()=>[s($,{label:l.$t("settings.custom_fields.name"),required:"",error:e(o).currentCustomField.name.$error&&e(o).currentCustomField.name.$errors[0].$message},{default:n(()=>[s(E,{ref:"name",modelValue:e(t).currentCustomField.name,"onUpdate:modelValue":a[0]||(a[0]=r=>e(t).currentCustomField.name=r),invalid:e(o).currentCustomField.name.$error,onInput:a[1]||(a[1]=r=>e(o).currentCustomField.name.$touch())},null,8,["modelValue","invalid"])]),_:1},8,["label","error"]),s($,{label:l.$t("settings.custom_fields.model"),error:e(o).currentCustomField.model_type.$error&&e(o).currentCustomField.model_type.$errors[0].$message,"help-text":e(t).currentCustomField.in_use?l.$t("settings.custom_fields.model_in_use"):"",required:""},{default:n(()=>[s(K,{modelValue:e(t).currentCustomField.model_type,"onUpdate:modelValue":a[2]||(a[2]=r=>e(t).currentCustomField.model_type=r),options:f,"can-deselect":!1,invalid:e(o).currentCustomField.model_type.$error,searchable:!0,disabled:e(t).currentCustomField.in_use,onInput:a[3]||(a[3]=r=>e(o).currentCustomField.model_type.$touch())},null,8,["modelValue","options","invalid","disabled"])]),_:1},8,["label","error","help-text"]),s($,{class:"flex items-center space-x-4",label:l.$t("settings.custom_fields.required")},{default:n(()=>[s(le,{modelValue:V.value,"onUpdate:modelValue":a[4]||(a[4]=r=>V.value=r)},null,8,["modelValue"])]),_:1},8,["label"]),s($,{label:l.$t("settings.custom_fields.type"),error:e(o).currentCustomField.type.$error&&e(o).currentCustomField.type.$errors[0].$message,"help-text":e(t).currentCustomField.in_use?l.$t("settings.custom_fields.type_in_use"):"",required:""},{default:n(()=>[s(K,{modelValue:e(m),"onUpdate:modelValue":[a[5]||(a[5]=r=>ce(m)?m.value=r:m=r),te],options:d,invalid:e(o).currentCustomField.type.$error,disabled:e(t).currentCustomField.in_use,searchable:!0,"can-deselect":!1,object:""},null,8,["modelValue","options","invalid","disabled"])]),_:1},8,["label","error","help-text"]),s($,{label:l.$t("settings.custom_fields.label"),required:"",error:e(o).currentCustomField.label.$error&&e(o).currentCustomField.label.$errors[0].$message},{default:n(()=>[s(E,{modelValue:e(t).currentCustomField.label,"onUpdate:modelValue":a[6]||(a[6]=r=>e(t).currentCustomField.label=r),invalid:e(o).currentCustomField.label.$error,onInput:a[7]||(a[7]=r=>e(o).currentCustomField.label.$touch())},null,8,["modelValue","invalid"])]),_:1},8,["label","error"]),g.value?(C(),b($,{key:0,label:l.$t("settings.custom_fields.options")},{default:n(()=>[s(Fe,{onOnAdd:U}),(C(!0),R(pe,null,_e(e(t).currentCustomField.options,(r,J)=>(C(),R("div",{key:J,class:"flex items-center mt-5"},[s(E,{modelValue:r.name,"onUpdate:modelValue":Q=>r.name=Q,class:"w-64"},null,8,["modelValue","onUpdate:modelValue"]),s(S,{name:"MinusCircleIcon",class:j(["ml-1 cursor-pointer",e(t).currentCustomField.in_use?"text-gray-300":"text-red-300"]),onClick:Q=>y(J)},null,8,["class","onClick"])]))),128))]),_:1},8,["label"])):A("",!0),s($,{label:l.$t("settings.custom_fields.default_value"),class:"relative"},{default:n(()=>[(C(),b(fe(_.value),{modelValue:e(t).currentCustomField.default_answer,"onUpdate:modelValue":a[8]||(a[8]=r=>e(t).currentCustomField.default_answer=r),options:e(t).currentCustomField.options,"default-date-time":e(t).currentCustomField.dateTimeValue},null,8,["modelValue","options","default-date-time"]))]),_:1},8,["label"]),v.value?A("",!0):(C(),b($,{key:1,label:l.$t("settings.custom_fields.placeholder")},{default:n(()=>[s(E,{modelValue:e(t).currentCustomField.placeholder,"onUpdate:modelValue":a[9]||(a[9]=r=>e(t).currentCustomField.placeholder=r)},null,8,["modelValue"])]),_:1},8,["label"])),s($,{label:l.$t("settings.custom_fields.order"),error:e(o).currentCustomField.order.$error&&e(o).currentCustomField.order.$errors[0].$message,required:""},{default:n(()=>[s(E,{modelValue:e(t).currentCustomField.order,"onUpdate:modelValue":a[10]||(a[10]=r=>e(t).currentCustomField.order=r),type:"number",invalid:e(o).currentCustomField.order.$error,onInput:a[11]||(a[11]=r=>e(o).currentCustomField.order.$touch())},null,8,["modelValue","invalid"])]),_:1},8,["label","error"])]),_:1})])]),O("div",Ie,[s(Y,{class:"mr-3",type:"button",variant:"primary-outline",onClick:N},{default:n(()=>[B(w(l.$t("general.cancel")),1)]),_:1}),s(Y,{variant:"primary",loading:e(c),disabled:e(c),type:"submit"},{left:n(r=>[e(c)?A("",!0):(C(),b(S,{key:0,class:j(r.class),name:"SaveIcon"},null,8,["class"]))]),default:n(()=>[B(" "+w(e(t).isEdit?l.$t("general.update"):l.$t("general.save")),1)]),_:1},8,["loading","disabled"])])],32)]),_:1},8,["show"])}}},Be={class:"text-xs text-gray-500"},he={__name:"CustomFieldsSetting",setup(k){const p=G(),t=z(),u=W(),c=Z("utils"),{t:f}=H.useI18n(),d=x(null),m=T(()=>[{key:"name",label:f("settings.custom_fields.name"),thClass:"extra",tdClass:"font-medium text-gray-900"},{key:"model_type",label:f("settings.custom_fields.model")},{key:"type",label:f("settings.custom_fields.type")},{key:"is_required",label:f("settings.custom_fields.required")},{key:"actions",label:"",tdClass:"text-right text-sm font-medium",sortable:!1}]);async function D({page:_,filter:V,sort:I}){let o={orderByField:I.fieldName||"created_at",orderBy:I.order||"desc",page:_},h=await t.fetchCustomFields(o);return{data:h.data.data,pagination:{totalPages:h.data.meta.last_page,currentPage:_,limit:5,totalCount:h.data.meta.total}}}function v(){p.openModal({title:f("settings.custom_fields.add_custom_field"),componentName:"CustomFieldModal",size:"sm",refreshData:d.value&&d.value.refresh})}async function g(){d.value&&d.value.refresh()}return(_,V)=>{const I=i("BaseIcon"),o=i("BaseButton"),h=i("BaseBadge"),P=i("BaseTable"),U=i("BaseSettingCard");return C(),b(U,{title:_.$t("settings.menu_title.custom_fields"),description:_.$t("settings.custom_fields.section_description")},{action:n(()=>[e(u).hasAbilities(e(L).CREATE_CUSTOM_FIELDS)?(C(),b(o,{key:0,variant:"primary-outline",onClick:v},{left:n(y=>[s(I,{class:j(y.class),name:"PlusIcon"},null,8,["class"]),B(" "+w(_.$t("settings.custom_fields.add_custom_field")),1)]),_:1})):A("",!0)]),default:n(()=>[s(Te),s(P,{ref_key:"table",ref:d,data:D,columns:m.value,class:"mt-16"},ve({"cell-name":n(({row:y})=>[B(w(y.data.name)+" ",1),O("span",Be," ("+w(y.data.slug)+")",1)]),"cell-is_required":n(({row:y})=>[s(h,{"bg-color":e(c).getBadgeStatusColor(y.data.is_required?"YES":"NO").bgColor,color:e(c).getBadgeStatusColor(y.data.is_required?"YES":"NO").color},{default:n(()=>[B(w(y.data.is_required?_.$t("settings.custom_fields.yes"):_.$t("settings.custom_fields.no").replace("_"," ")),1)]),_:2},1032,["bg-color","color"])]),_:2},[e(u).hasAbilities([e(L).DELETE_CUSTOM_FIELDS,e(L).EDIT_CUSTOM_FIELDS])?{name:"cell-actions",fn:n(({row:y})=>[s(ye,{row:y.data,table:d.value,"load-data":g},null,8,["row","table"])]),key:"0"}:void 0]),1032,["columns"])]),_:1},8,["title","description"])}}};export{he as default}; function __vite__mapDeps(indexes) { if (!__vite__mapDeps.viteFileDeps) { - __vite__mapDeps.viteFileDeps = ["assets/DateTimeType-a5BpvpZp.js","assets/main-B9dpPbRR.js","assets/main-jWFDxuC1.css","assets/DateType-f9pnJsdS.js","assets/DropdownType-l90eAEcc.js","assets/InputType-RKQYBHxv.js","assets/NumberType-rRpwD-2g.js","assets/PhoneType-WzA-1nI_.js","assets/SwitchType-7loDSbd1.js","assets/TextAreaType-Y4tJ0XjS.js","assets/TimeType-xTM4w-r_.js","assets/UrlType-txLUbTpu.js"] + __vite__mapDeps.viteFileDeps = ["assets/DateTimeType-lxr7K8cW.js","assets/main-pPEsZPea.js","assets/main-jWFDxuC1.css","assets/DateType-IUam2uIC.js","assets/DropdownType-hGfhMyxV.js","assets/InputType-RojMM-h7.js","assets/NumberType-Yfr104pP.js","assets/PhoneType-2Vn08TnG.js","assets/SwitchType-8zVnAshp.js","assets/TextAreaType-WkjHyMHs.js","assets/TimeType-HqsdM7aY.js","assets/UrlType-1hVHE1M4.js"] } return indexes.map((i) => __vite__mapDeps.viteFileDeps[i]) } diff --git a/public/build/assets/CustomerIndexDropdown-ywCQasB6.js b/public/build/assets/CustomerIndexDropdown-MF-wjT1X.js similarity index 96% rename from public/build/assets/CustomerIndexDropdown-ywCQasB6.js rename to public/build/assets/CustomerIndexDropdown-MF-wjT1X.js index 908b7d4e..5d5db666 100644 --- a/public/build/assets/CustomerIndexDropdown-ywCQasB6.js +++ b/public/build/assets/CustomerIndexDropdown-MF-wjT1X.js @@ -1 +1 @@ -import{a8 as C,u as S,a7 as x,M as b,v as E,L as T,e as $,a5 as N,r as l,o as a,m as s,w as t,l as e,a as n,Q as g,p,t as _,K as w}from"./main-B9dpPbRR.js";const V={__name:"CustomerIndexDropdown",props:{row:{type:Object,default:null},table:{type:Object,default:null},loadData:{type:Function,default:()=>{}}},setup(i){const y=i,f=C();S();const v=x(),m=b(),{t:u}=E.useI18n(),h=T();$(),N("utils");function I(r){v.openDialog({title:u("general.are_you_sure"),message:u("customers.confirm_delete",1),yesLabel:u("general.ok"),noLabel:u("general.cancel"),variant:"danger",hideNoButton:!1,size:"lg"}).then(c=>{c&&f.deleteCustomer({ids:[r]}).then(o=>{if(o.data.success)return y.loadData&&y.loadData(),!0})})}return(r,c)=>{const o=l("BaseIcon"),B=l("BaseButton"),d=l("BaseDropdownItem"),D=l("router-link"),k=l("BaseDropdown");return a(),s(k,{"content-loading":e(f).isFetchingViewData},{activator:t(()=>[e(h).name==="customers.view"?(a(),s(B,{key:0,variant:"primary"},{default:t(()=>[n(o,{name:"DotsHorizontalIcon",class:"h-5 text-white"})]),_:1})):(a(),s(o,{key:1,name:"DotsHorizontalIcon",class:"h-5 text-gray-500"}))]),default:t(()=>[e(m).hasAbilities(e(g).EDIT_CUSTOMER)?(a(),s(D,{key:0,to:`/admin/customers/${i.row.id}/edit`},{default:t(()=>[n(d,null,{default:t(()=>[n(o,{name:"PencilIcon",class:"w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500"}),p(" "+_(r.$t("general.edit")),1)]),_:1})]),_:1},8,["to"])):w("",!0),e(h).name!=="customers.view"&&e(m).hasAbilities(e(g).VIEW_CUSTOMER)?(a(),s(D,{key:1,to:`customers/${i.row.id}/view`},{default:t(()=>[n(d,null,{default:t(()=>[n(o,{name:"EyeIcon",class:"w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500"}),p(" "+_(r.$t("general.view")),1)]),_:1})]),_:1},8,["to"])):w("",!0),e(m).hasAbilities(e(g).DELETE_CUSTOMER)?(a(),s(d,{key:2,onClick:c[0]||(c[0]=O=>I(i.row.id))},{default:t(()=>[n(o,{name:"TrashIcon",class:"w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500"}),p(" "+_(r.$t("general.delete")),1)]),_:1})):w("",!0)]),_:1},8,["content-loading"])}}};export{V as _}; +import{a8 as C,u as S,a7 as x,M as b,v as E,L as T,e as $,a5 as N,r as l,o as a,m as s,w as t,l as e,a as n,Q as g,p,t as _,K as w}from"./main-pPEsZPea.js";const V={__name:"CustomerIndexDropdown",props:{row:{type:Object,default:null},table:{type:Object,default:null},loadData:{type:Function,default:()=>{}}},setup(i){const y=i,f=C();S();const v=x(),m=b(),{t:u}=E.useI18n(),h=T();$(),N("utils");function I(r){v.openDialog({title:u("general.are_you_sure"),message:u("customers.confirm_delete",1),yesLabel:u("general.ok"),noLabel:u("general.cancel"),variant:"danger",hideNoButton:!1,size:"lg"}).then(c=>{c&&f.deleteCustomer({ids:[r]}).then(o=>{if(o.data.success)return y.loadData&&y.loadData(),!0})})}return(r,c)=>{const o=l("BaseIcon"),B=l("BaseButton"),d=l("BaseDropdownItem"),D=l("router-link"),k=l("BaseDropdown");return a(),s(k,{"content-loading":e(f).isFetchingViewData},{activator:t(()=>[e(h).name==="customers.view"?(a(),s(B,{key:0,variant:"primary"},{default:t(()=>[n(o,{name:"DotsHorizontalIcon",class:"h-5 text-white"})]),_:1})):(a(),s(o,{key:1,name:"DotsHorizontalIcon",class:"h-5 text-gray-500"}))]),default:t(()=>[e(m).hasAbilities(e(g).EDIT_CUSTOMER)?(a(),s(D,{key:0,to:`/admin/customers/${i.row.id}/edit`},{default:t(()=>[n(d,null,{default:t(()=>[n(o,{name:"PencilIcon",class:"w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500"}),p(" "+_(r.$t("general.edit")),1)]),_:1})]),_:1},8,["to"])):w("",!0),e(h).name!=="customers.view"&&e(m).hasAbilities(e(g).VIEW_CUSTOMER)?(a(),s(D,{key:1,to:`customers/${i.row.id}/view`},{default:t(()=>[n(d,null,{default:t(()=>[n(o,{name:"EyeIcon",class:"w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500"}),p(" "+_(r.$t("general.view")),1)]),_:1})]),_:1},8,["to"])):w("",!0),e(m).hasAbilities(e(g).DELETE_CUSTOMER)?(a(),s(d,{key:2,onClick:c[0]||(c[0]=O=>I(i.row.id))},{default:t(()=>[n(o,{name:"TrashIcon",class:"w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500"}),p(" "+_(r.$t("general.delete")),1)]),_:1})):w("",!0)]),_:1},8,["content-loading"])}}};export{V as _}; diff --git a/public/build/assets/CustomerSettings-bvSAIR6O.js b/public/build/assets/CustomerSettings-LcGfgvXG.js similarity index 96% rename from public/build/assets/CustomerSettings-bvSAIR6O.js rename to public/build/assets/CustomerSettings-LcGfgvXG.js index 32631403..a28e3f1b 100644 --- a/public/build/assets/CustomerSettings-bvSAIR6O.js +++ b/public/build/assets/CustomerSettings-LcGfgvXG.js @@ -1 +1 @@ -import{L,v as A,f as p,k as h,j as D,r as v,o as c,c as G,a as u,w as i,b as I,t as C,l as e,n as _,m as y,J as P,K as j,p as O,q as z,g,h as k,I as S,i as J,a0 as K}from"./main-B9dpPbRR.js";import{a as T,u as H}from"./global-1F4OAoew.js";import"./auth-6FPSPboo.js";const Q={class:"font-bold text-left"},W={class:"mt-2 text-sm leading-snug text-left text-gray-500",style:{"max-width":"680px"}},X={class:"grid gap-6 sm:grid-col-1 md:grid-cols-2 mt-6"},Y=I("span",null,null,-1),ae={__name:"CustomerSettings",setup(Z){const r=T();H(),L();const{t:m,tm:U}=A.useI18n();let f=p([]),d=p(!1),w=p(null),n=p(!1),l=p(!1);const b=p(!1);r.userForm.avatar&&f.value.push({image:r.userForm.avatar});const q=h(()=>({userForm:{name:{required:g.withMessage(m("validation.required"),k),minLength:g.withMessage(m("validation.name_min_length",{count:3}),S(3))},email:{required:g.withMessage(m("validation.required"),k),email:g.withMessage(m("validation.email_incorrect"),J)},password:{minLength:g.withMessage(m("validation.password_min_length",{count:8}),S(8))},confirm_password:{sameAsPassword:g.withMessage(m("validation.password_incorrect"),K(r.userForm.password))}}})),o=D(q,h(()=>r));function x(t,s){w.value=s}function M(){w.value=null,b.value=!0}function E(){if(o.value.userForm.$touch(),o.value.userForm.$invalid)return!0;d.value=!0;let t=new FormData;t.append("name",r.userForm.name),t.append("email",r.userForm.email),r.userForm.password!=null&&r.userForm.password!==void 0&&r.userForm.password!==""&&t.append("password",r.userForm.password),w.value&&t.append("customer_avatar",w.value),t.append("is_customer_avatar_removed",b.value),r.updateCurrentUser({data:t,message:U("settings.account_settings.updated_message")}).then(s=>{s.data.data&&(d.value=!1,r.$patch(V=>{V.userForm.password="",V.userForm.confirm_password=""}),w.value=null,b.value=!1)}).catch(s=>{d.value=!1})}return(t,s)=>{const V=v("BaseFileUploader"),F=v("BaseInputGroup"),B=v("BaseInput"),$=v("BaseIcon"),N=v("BaseButton"),R=v("BaseCard");return c(),G("form",{class:"relative h-full mt-4",onSubmit:z(E,["prevent"])},[u(R,null,{default:i(()=>[I("div",null,[I("h6",Q,C(t.$t("settings.account_settings.account_settings")),1),I("p",W,C(t.$t("settings.account_settings.section_description")),1)]),I("div",X,[u(F,{label:t.$t("settings.account_settings.profile_picture")},{default:i(()=>[u(V,{modelValue:e(f),"onUpdate:modelValue":s[0]||(s[0]=a=>_(f)?f.value=a:f=a),avatar:!0,accept:"image/*",onChange:x,onRemove:M},null,8,["modelValue"])]),_:1},8,["label"]),Y,u(F,{label:t.$t("settings.account_settings.name"),error:e(o).userForm.name.$error&&e(o).userForm.name.$errors[0].$message,required:""},{default:i(()=>[u(B,{modelValue:e(r).userForm.name,"onUpdate:modelValue":s[1]||(s[1]=a=>e(r).userForm.name=a),invalid:e(o).userForm.name.$error,onInput:s[2]||(s[2]=a=>e(o).userForm.name.$touch())},null,8,["modelValue","invalid"])]),_:1},8,["label","error"]),u(F,{label:t.$t("settings.account_settings.email"),error:e(o).userForm.email.$error&&e(o).userForm.email.$errors[0].$message,required:""},{default:i(()=>[u(B,{modelValue:e(r).userForm.email,"onUpdate:modelValue":s[3]||(s[3]=a=>e(r).userForm.email=a),invalid:e(o).userForm.email.$error,onInput:s[4]||(s[4]=a=>e(o).userForm.email.$touch())},null,8,["modelValue","invalid"])]),_:1},8,["label","error"]),u(F,{error:e(o).userForm.password.$error&&e(o).userForm.password.$errors[0].$message,label:t.$t("settings.account_settings.password")},{default:i(()=>[u(B,{modelValue:e(r).userForm.password,"onUpdate:modelValue":s[7]||(s[7]=a=>e(r).userForm.password=a),type:e(n)?"text":"password",invalid:e(o).userForm.password.$error,onInput:s[8]||(s[8]=a=>e(o).userForm.password.$touch())},{right:i(()=>[e(n)?(c(),y($,{key:0,name:"EyeOffIcon",class:"w-5 h-5 mr-1 text-gray-500 cursor-pointer",onClick:s[5]||(s[5]=a=>_(n)?n.value=!e(n):n=!e(n))})):(c(),y($,{key:1,name:"EyeIcon",class:"w-5 h-5 mr-1 text-gray-500 cursor-pointer",onClick:s[6]||(s[6]=a=>_(n)?n.value=!e(n):n=!e(n))}))]),_:1},8,["modelValue","type","invalid"])]),_:1},8,["error","label"]),u(F,{label:t.$t("settings.account_settings.confirm_password"),error:e(o).userForm.confirm_password.$error&&e(o).userForm.confirm_password.$errors[0].$message},{default:i(()=>[u(B,{modelValue:e(r).userForm.confirm_password,"onUpdate:modelValue":s[11]||(s[11]=a=>e(r).userForm.confirm_password=a),type:e(l)?"text":"password",invalid:e(o).userForm.confirm_password.$error,onInput:s[12]||(s[12]=a=>e(o).userForm.confirm_password.$touch())},{right:i(()=>[e(l)?(c(),y($,{key:0,name:"EyeOffIcon",class:"w-5 h-5 mr-1 text-gray-500 cursor-pointer",onClick:s[9]||(s[9]=a=>_(l)?l.value=!e(l):l=!e(l))})):(c(),y($,{key:1,name:"EyeIcon",class:"w-5 h-5 mr-1 text-gray-500 cursor-pointer",onClick:s[10]||(s[10]=a=>_(l)?l.value=!e(l):l=!e(l))}))]),_:1},8,["modelValue","type","invalid"])]),_:1},8,["label","error"])]),u(N,{loading:e(d),disabled:e(d),class:"mt-6"},{left:i(a=>[e(d)?j("",!0):(c(),y($,{key:0,name:"SaveIcon",class:P(a.class)},null,8,["class"]))]),default:i(()=>[O(" "+C(t.$t("general.save")),1)]),_:1},8,["loading","disabled"])]),_:1})],32)}}};export{ae as default}; +import{L,v as A,f as p,k as h,j as D,r as v,o as c,c as G,a as u,w as i,b as I,t as C,l as e,n as _,m as y,J as P,K as j,p as O,q as z,g,h as k,I as S,i as J,a0 as K}from"./main-pPEsZPea.js";import{a as T,u as H}from"./global-s5lx2XuM.js";import"./auth-mYHkZCAB.js";const Q={class:"font-bold text-left"},W={class:"mt-2 text-sm leading-snug text-left text-gray-500",style:{"max-width":"680px"}},X={class:"grid gap-6 sm:grid-col-1 md:grid-cols-2 mt-6"},Y=I("span",null,null,-1),ae={__name:"CustomerSettings",setup(Z){const r=T();H(),L();const{t:m,tm:U}=A.useI18n();let f=p([]),d=p(!1),w=p(null),n=p(!1),l=p(!1);const b=p(!1);r.userForm.avatar&&f.value.push({image:r.userForm.avatar});const q=h(()=>({userForm:{name:{required:g.withMessage(m("validation.required"),k),minLength:g.withMessage(m("validation.name_min_length",{count:3}),S(3))},email:{required:g.withMessage(m("validation.required"),k),email:g.withMessage(m("validation.email_incorrect"),J)},password:{minLength:g.withMessage(m("validation.password_min_length",{count:8}),S(8))},confirm_password:{sameAsPassword:g.withMessage(m("validation.password_incorrect"),K(r.userForm.password))}}})),o=D(q,h(()=>r));function x(t,s){w.value=s}function M(){w.value=null,b.value=!0}function E(){if(o.value.userForm.$touch(),o.value.userForm.$invalid)return!0;d.value=!0;let t=new FormData;t.append("name",r.userForm.name),t.append("email",r.userForm.email),r.userForm.password!=null&&r.userForm.password!==void 0&&r.userForm.password!==""&&t.append("password",r.userForm.password),w.value&&t.append("customer_avatar",w.value),t.append("is_customer_avatar_removed",b.value),r.updateCurrentUser({data:t,message:U("settings.account_settings.updated_message")}).then(s=>{s.data.data&&(d.value=!1,r.$patch(V=>{V.userForm.password="",V.userForm.confirm_password=""}),w.value=null,b.value=!1)}).catch(s=>{d.value=!1})}return(t,s)=>{const V=v("BaseFileUploader"),F=v("BaseInputGroup"),B=v("BaseInput"),$=v("BaseIcon"),N=v("BaseButton"),R=v("BaseCard");return c(),G("form",{class:"relative h-full mt-4",onSubmit:z(E,["prevent"])},[u(R,null,{default:i(()=>[I("div",null,[I("h6",Q,C(t.$t("settings.account_settings.account_settings")),1),I("p",W,C(t.$t("settings.account_settings.section_description")),1)]),I("div",X,[u(F,{label:t.$t("settings.account_settings.profile_picture")},{default:i(()=>[u(V,{modelValue:e(f),"onUpdate:modelValue":s[0]||(s[0]=a=>_(f)?f.value=a:f=a),avatar:!0,accept:"image/*",onChange:x,onRemove:M},null,8,["modelValue"])]),_:1},8,["label"]),Y,u(F,{label:t.$t("settings.account_settings.name"),error:e(o).userForm.name.$error&&e(o).userForm.name.$errors[0].$message,required:""},{default:i(()=>[u(B,{modelValue:e(r).userForm.name,"onUpdate:modelValue":s[1]||(s[1]=a=>e(r).userForm.name=a),invalid:e(o).userForm.name.$error,onInput:s[2]||(s[2]=a=>e(o).userForm.name.$touch())},null,8,["modelValue","invalid"])]),_:1},8,["label","error"]),u(F,{label:t.$t("settings.account_settings.email"),error:e(o).userForm.email.$error&&e(o).userForm.email.$errors[0].$message,required:""},{default:i(()=>[u(B,{modelValue:e(r).userForm.email,"onUpdate:modelValue":s[3]||(s[3]=a=>e(r).userForm.email=a),invalid:e(o).userForm.email.$error,onInput:s[4]||(s[4]=a=>e(o).userForm.email.$touch())},null,8,["modelValue","invalid"])]),_:1},8,["label","error"]),u(F,{error:e(o).userForm.password.$error&&e(o).userForm.password.$errors[0].$message,label:t.$t("settings.account_settings.password")},{default:i(()=>[u(B,{modelValue:e(r).userForm.password,"onUpdate:modelValue":s[7]||(s[7]=a=>e(r).userForm.password=a),type:e(n)?"text":"password",invalid:e(o).userForm.password.$error,onInput:s[8]||(s[8]=a=>e(o).userForm.password.$touch())},{right:i(()=>[e(n)?(c(),y($,{key:0,name:"EyeOffIcon",class:"w-5 h-5 mr-1 text-gray-500 cursor-pointer",onClick:s[5]||(s[5]=a=>_(n)?n.value=!e(n):n=!e(n))})):(c(),y($,{key:1,name:"EyeIcon",class:"w-5 h-5 mr-1 text-gray-500 cursor-pointer",onClick:s[6]||(s[6]=a=>_(n)?n.value=!e(n):n=!e(n))}))]),_:1},8,["modelValue","type","invalid"])]),_:1},8,["error","label"]),u(F,{label:t.$t("settings.account_settings.confirm_password"),error:e(o).userForm.confirm_password.$error&&e(o).userForm.confirm_password.$errors[0].$message},{default:i(()=>[u(B,{modelValue:e(r).userForm.confirm_password,"onUpdate:modelValue":s[11]||(s[11]=a=>e(r).userForm.confirm_password=a),type:e(l)?"text":"password",invalid:e(o).userForm.confirm_password.$error,onInput:s[12]||(s[12]=a=>e(o).userForm.confirm_password.$touch())},{right:i(()=>[e(l)?(c(),y($,{key:0,name:"EyeOffIcon",class:"w-5 h-5 mr-1 text-gray-500 cursor-pointer",onClick:s[9]||(s[9]=a=>_(l)?l.value=!e(l):l=!e(l))})):(c(),y($,{key:1,name:"EyeIcon",class:"w-5 h-5 mr-1 text-gray-500 cursor-pointer",onClick:s[10]||(s[10]=a=>_(l)?l.value=!e(l):l=!e(l))}))]),_:1},8,["modelValue","type","invalid"])]),_:1},8,["label","error"])]),u(N,{loading:e(d),disabled:e(d),class:"mt-6"},{left:i(a=>[e(d)?j("",!0):(c(),y($,{key:0,name:"SaveIcon",class:P(a.class)},null,8,["class"]))]),default:i(()=>[O(" "+C(t.$t("general.save")),1)]),_:1},8,["loading","disabled"])]),_:1})],32)}}};export{ae as default}; diff --git a/public/build/assets/CustomizationSetting-MLhGHNRk.js b/public/build/assets/CustomizationSetting-okNa_46C.js similarity index 99% rename from public/build/assets/CustomizationSetting-MLhGHNRk.js rename to public/build/assets/CustomizationSetting-okNa_46C.js index 1516f5f8..e666afa8 100644 --- a/public/build/assets/CustomizationSetting-MLhGHNRk.js +++ b/public/build/assets/CustomizationSetting-okNa_46C.js @@ -1 +1 @@ -import{v as P,E as F,G as J,f as z,k as E,z as ne,ao as X,ap as ie,r as d,o as S,c as C,b as r,t as f,a as e,w as u,q as L,J as M,p as D,N as G,O as oe,m as U,l as b,K as R,aq as le,a5 as T,H as k,g as Q,ag as W,ar as Z,j as ee,as as me,at as ue,F as re,a7 as de}from"./main-B9dpPbRR.js";import{D as ce,d as _e}from"./DragIcon-w0U5hiz6.js";import{u as pe}from"./payment-Y8OywN76.js";import{_ as ge}from"./ItemUnitModal-GTT4702Z.js";const ye={class:"text-gray-900 text-lg font-medium"},fe={class:"mt-1 text-sm text-gray-500"},ve={class:"overflow-x-auto"},be={class:"w-full mt-6 table-fixed"},Se=r("colgroup",null,[r("col",{style:{width:"4%"}}),r("col",{style:{width:"45%"}}),r("col",{style:{width:"27%"}}),r("col",{style:{width:"24%"}})],-1),$e=r("thead",null,[r("tr",null,[r("th",{class:"px-5 py-3 text-sm not-italic font-medium leading-5 text-left text-gray-700 border-t border-b border-gray-200 border-solid"}),r("th",{class:"px-5 py-3 text-sm not-italic font-medium leading-5 text-left text-gray-700 border-t border-b border-gray-200 border-solid"}," Component "),r("th",{class:"px-5 py-3 text-sm not-italic font-medium leading-5 text-left text-gray-700 border-t border-b border-gray-200 border-solid"}," Parameter "),r("th",{class:"px-5 py-3 text-sm not-italic font-medium leading-5 text-left text-gray-700 border-t border-b border-gray-200 border-solid"})])],-1),Be={class:"relative"},ze={class:"text-gray-300 cursor-move handle align-middle"},he={class:"px-5 py-4"},Ie={class:"block text-sm not-italic font-medium text-primary-800 whitespace-nowrap mr-2 min-w-[200px]"},Ve={class:"text-xs text-gray-500 mt-1"},xe={class:"px-5 py-4 text-left align-middle"},we={class:"px-5 py-4 text-right align-middle pt-10"},Ce={colspan:"2",class:"px-5 py-4"},De={class:"px-5 py-4 text-right align-middle",colspan:"2"},K={__name:"NumberCustomizer",props:{type:{type:String,required:!0},typeStore:{type:Object,required:!0},defaultSeries:{type:String,default:"INV"}},setup(h){const m=h,{t:l}=P.useI18n(),_=F(),g=J(),o=z([]),s=z(!1),i=z([{label:l("settings.customization.series"),description:l("settings.customization.series_description"),name:"SERIES",paramLabel:l("settings.customization.series_param_label"),value:m.defaultSeries,inputDisabled:!1,inputType:"text",allowMultiple:!1},{label:l("settings.customization.sequence"),description:l("settings.customization.sequence_description"),name:"SEQUENCE",paramLabel:l("settings.customization.sequence_param_label"),value:"6",inputDisabled:!1,inputType:"number",allowMultiple:!1},{label:l("settings.customization.delimiter"),description:l("settings.customization.delimiter_description"),name:"DELIMITER",paramLabel:l("settings.customization.delimiter_param_label"),value:"-",inputDisabled:!1,inputType:"text",allowMultiple:!0},{label:l("settings.customization.customer_series"),description:l("settings.customization.customer_series_description"),name:"CUSTOMER_SERIES",paramLabel:"",value:"",inputDisabled:!0,inputType:"text",allowMultiple:!1},{label:l("settings.customization.customer_sequence"),description:l("settings.customization.customer_sequence_description"),name:"CUSTOMER_SEQUENCE",paramLabel:l("settings.customization.customer_sequence_param_label"),value:"6",inputDisabled:!1,inputType:"number",allowMultiple:!1},{label:l("settings.customization.date_format"),description:l("settings.customization.date_format_description"),name:"DATE_FORMAT",paramLabel:l("settings.customization.date_format_param_label"),value:"Y",inputDisabled:!1,inputType:"text",allowMultiple:!0},{label:l("settings.customization.random_sequence"),description:l("settings.customization.random_sequence_description"),name:"RANDOM_SEQUENCE",paramLabel:l("settings.customization.random_sequence_param_label"),value:"6",inputDisabled:!1,inputType:"number",allowMultiple:!1}]),t=E(()=>i.value.filter(function(y){return!o.value.some(function(I){return y.allowMultiple?!1:y.name==I.name})})),c=z(""),a=z(!1),n=z(!1),p=E(()=>{let y="";return o.value.forEach(I=>{let q=`{{${I.name}`;I.value&&(q+=`:${I.value}`),y+=`${q}}}`}),y});ne(o,y=>{N()}),$();async function $(){let y={format:_.selectedCompanySettings[`${m.type}_number_format`]};n.value=!0,(await g.fetchPlaceholders(y)).data.placeholders.forEach(q=>{let j=i.value.find(O=>O.name===q.name);const Y=q.value??"";o.value.push({...j,value:Y,id:X.raw()})}),n.value=!1,N()}function w(y){return o.value.find(I=>I.name===y.name)}function B(y){w(y)&&!y.allowMultiple||(o.value.push({...y,id:X.raw()}),N())}function v(y){o.value=o.value.filter(function(I){return y.id!==I.id})}function x(y,I){switch(I.name){case"SERIES":y.length>=6&&(y=y.substring(0,6));break;case"DELIMITER":y.length>=1&&(y=y.substring(0,1));break}setTimeout(()=>{I.value=y,N()},100)}const N=ie(()=>{H()},500);async function H(){if(!p.value){c.value="";return}let y={key:m.type,format:p.value};a.value=!0;let I=await m.typeStore.getNextNumber(y);a.value=!1,I.data&&(c.value=I.data.nextNumber)}async function te(){if(a.value||n.value)return;s.value=!0;let y={settings:{}};return y.settings[m.type+"_number_format"]=p.value,await _.updateCompanySettings({data:y,message:`settings.customization.${m.type}s.${m.type}_settings_updated`}),s.value=!1,!0}return(y,I)=>{const q=d("BaseInput"),j=d("BaseInputGroup"),Y=d("BaseIcon"),O=d("BaseButton"),se=d("BaseDropdownItem"),ae=d("BaseDropdown");return S(),C(G,null,[r("h6",ye,f(y.$t(`settings.customization.${h.type}s.${h.type}_number_format`)),1),r("p",fe,f(y.$t(`settings.customization.${h.type}s.${h.type}_number_format_description`)),1),r("div",ve,[r("table",be,[Se,$e,e(b(_e),{modelValue:o.value,"onUpdate:modelValue":I[1]||(I[1]=V=>o.value=V),class:"divide-y divide-gray-200","item-key":"id",tag:"tbody",handle:".handle",filter:".ignore-element"},{item:u(({element:V})=>[r("tr",Be,[r("td",ze,[e(ce)]),r("td",he,[r("label",Ie,f(V.label),1),r("p",Ve,f(V.description),1)]),r("td",xe,[e(j,{label:V.paramLabel,class:"lg:col-span-3",required:""},{default:u(()=>[e(q,{modelValue:V.value,"onUpdate:modelValue":[A=>V.value=A,A=>x(A,V)],disabled:V.inputDisabled,type:V.inputType},null,8,["modelValue","onUpdate:modelValue","disabled","type"])]),_:2},1032,["label"])]),r("td",we,[e(O,{variant:"white",onClick:L(A=>v(V),["prevent"])},{left:u(A=>[e(Y,{name:"XIcon",class:M(["!sm:m-0",A.class])},null,8,["class"])]),default:u(()=>[D(" Remove ")]),_:2},1032,["onClick"])])])]),footer:u(()=>[r("tr",null,[r("td",Ce,[e(j,{label:y.$t(`settings.customization.${h.type}s.preview_${h.type}_number`)},{default:u(()=>[e(q,{modelValue:c.value,"onUpdate:modelValue":I[0]||(I[0]=V=>c.value=V),disabled:"",loading:a.value},null,8,["modelValue","loading"])]),_:1},8,["label"])]),r("td",De,[e(ae,{"wrapper-class":"flex items-center justify-end mt-5"},{activator:u(()=>[e(O,{variant:"primary-outline"},{left:u(V=>[e(Y,{class:M(V.class),name:"PlusIcon"},null,8,["class"])]),default:u(()=>[D(" "+f(y.$t("settings.customization.add_new_component")),1)]),_:1})]),default:u(()=>[(S(!0),C(G,null,oe(t.value,V=>(S(),U(se,{key:V.label,onClick:L(A=>B(V),["prevent"])},{default:u(()=>[D(f(V.label),1)]),_:2},1032,["onClick"]))),128))]),_:1})])])]),_:1},8,["modelValue"])])]),e(O,{loading:s.value,disabled:s.value,variant:"primary",type:"submit",class:"mt-4",onClick:te},{left:u(V=>[s.value?R("",!0):(S(),U(Y,{key:0,class:M(V.class),name:"SaveIcon"},null,8,["class"]))]),default:u(()=>[D(" "+f(y.$t("settings.customization.save")),1)]),_:1},8,["loading","disabled"])],64)}}},Ee={__name:"InvoicesTabInvoiceNumber",setup(h){const m=le();return(l,_)=>(S(),U(K,{type:"invoice","type-store":b(m),"default-series":"INV"},null,8,["type-store"]))}},Ue={class:"text-gray-900 text-lg font-medium"},Fe={class:"mt-1 text-sm text-gray-500"},Te={__name:"InvoicesTabRetrospective",setup(h){const{t:m,tm:l}=P.useI18n(),_=F(),g=J(),o=T("utils"),s=k({retrospective_edits:null});o.mergeSettings(s,{..._.selectedCompanySettings}),E(()=>g.config.retrospective_edits.map(t=>(t.title=m(t.key),t)));async function i(){let t={settings:{...s}};return await _.updateCompanySettings({data:t,message:"settings.customization.invoices.invoice_settings_updated"}),!0}return(t,c)=>{const a=d("BaseRadio"),n=d("BaseInputGroup");return S(),C(G,null,[r("h6",Ue,f(t.$t("settings.customization.invoices.retrospective_edits")),1),r("p",Fe,f(t.$t("settings.customization.invoices.retrospective_edits_description")),1),e(n,{required:""},{default:u(()=>[e(a,{id:"allow",modelValue:s.retrospective_edits,"onUpdate:modelValue":[c[0]||(c[0]=p=>s.retrospective_edits=p),i],label:t.$t("settings.customization.invoices.allow"),size:"sm",name:"filter",value:"allow",class:"mt-2"},null,8,["modelValue","label"]),e(a,{id:"disable_on_invoice_partial_paid",modelValue:s.retrospective_edits,"onUpdate:modelValue":[c[1]||(c[1]=p=>s.retrospective_edits=p),i],label:t.$t("settings.customization.invoices.disable_on_invoice_partial_paid"),size:"sm",name:"filter",value:"disable_on_invoice_partial_paid",class:"mt-2"},null,8,["modelValue","label"]),e(a,{id:"disable_on_invoice_paid",modelValue:s.retrospective_edits,"onUpdate:modelValue":[c[2]||(c[2]=p=>s.retrospective_edits=p),i],label:t.$t("settings.customization.invoices.disable_on_invoice_paid"),size:"sm",name:"filter",value:"disable_on_invoice_paid",class:"my-2"},null,8,["modelValue","label"]),e(a,{id:"disable_on_invoice_sent",modelValue:s.retrospective_edits,"onUpdate:modelValue":[c[3]||(c[3]=p=>s.retrospective_edits=p),i],label:t.$t("settings.customization.invoices.disable_on_invoice_sent"),size:"sm",name:"filter",value:"disable_on_invoice_sent"},null,8,["modelValue","label"])]),_:1})],64)}}},ke={class:"text-gray-900 text-lg font-medium"},Ne={class:"mt-1 text-sm text-gray-500 mb-2"},Me={class:"w-full sm:w-1/2 md:w-1/4 lg:w-1/5"},qe={__name:"InvoicesTabDueDate",setup(h){const{t:m}=P.useI18n(),l=F(),_=T("utils");let g=z(!1);const o=k({invoice_set_due_date_automatically:null,invoice_due_date_days:null});_.mergeSettings(o,{...l.selectedCompanySettings});const s=E({get:()=>o.invoice_set_due_date_automatically==="YES",set:async a=>{const n=a?"YES":"NO";o.invoice_set_due_date_automatically=n}}),i=E(()=>({dueDateSettings:{invoice_due_date_days:{required:Q.withMessage(m("validation.required"),W(s.value)),numeric:Q.withMessage(m("validation.numbers_only"),Z)}}})),t=ee(i,{dueDateSettings:o});async function c(){if(t.value.dueDateSettings.$touch(),t.value.dueDateSettings.$invalid)return!1;g.value=!0;let a={settings:{...o}};return s.value||delete a.settings.invoice_due_date_days,await l.updateCompanySettings({data:a,message:"settings.customization.invoices.invoice_settings_updated"}),g.value=!1,!0}return(a,n)=>{const p=d("BaseSwitchSection"),$=d("BaseInput"),w=d("BaseInputGroup"),B=d("BaseIcon"),v=d("BaseButton");return S(),C("form",{onSubmit:L(c,["prevent"])},[r("h6",ke,f(a.$t("settings.customization.invoices.due_date")),1),r("p",Ne,f(a.$t("settings.customization.invoices.due_date_description")),1),e(p,{modelValue:s.value,"onUpdate:modelValue":n[0]||(n[0]=x=>s.value=x),title:a.$t("settings.customization.invoices.set_due_date_automatically"),description:a.$t("settings.customization.invoices.set_due_date_automatically_description")},null,8,["modelValue","title","description"]),s.value?(S(),U(w,{key:0,label:a.$t("settings.customization.invoices.due_date_days"),error:b(t).dueDateSettings.invoice_due_date_days.$error&&b(t).dueDateSettings.invoice_due_date_days.$errors[0].$message,class:"mt-2 mb-4"},{default:u(()=>[r("div",Me,[e($,{modelValue:o.invoice_due_date_days,"onUpdate:modelValue":n[1]||(n[1]=x=>o.invoice_due_date_days=x),invalid:b(t).dueDateSettings.invoice_due_date_days.$error,type:"number",onInput:n[2]||(n[2]=x=>b(t).dueDateSettings.invoice_due_date_days.$touch())},null,8,["modelValue","invalid"])])]),_:1},8,["label","error"])):R("",!0),e(v,{loading:b(g),disabled:b(g),variant:"primary",type:"submit",class:"mt-4"},{left:u(x=>[b(g)?R("",!0):(S(),U(B,{key:0,class:M(x.class),name:"SaveIcon"},null,8,["class"]))]),default:u(()=>[D(" "+f(a.$t("settings.customization.save")),1)]),_:1},8,["loading","disabled"])],32)}}},Ge={class:"text-gray-900 text-lg font-medium"},Re={class:"mt-1 text-sm text-gray-500 mb-2"},Ae={__name:"InvoicesTabDefaultFormats",setup(h){const m=F(),l=T("utils"),_=z(["customer","customerCustom","invoice","invoiceCustom","company"]),g=z(["billing","customer","customerCustom","invoiceCustom"]),o=z(["shipping","customer","customerCustom","invoiceCustom"]),s=z(["company","invoiceCustom"]);let i=z(!1);const t=k({invoice_mail_body:null,invoice_company_address_format:null,invoice_shipping_address_format:null,invoice_billing_address_format:null});l.mergeSettings(t,{...m.selectedCompanySettings});async function c(){i.value=!0;let a={settings:{...t}};return await m.updateCompanySettings({data:a,message:"settings.customization.invoices.invoice_settings_updated"}),i.value=!1,!0}return(a,n)=>{const p=d("BaseCustomInput"),$=d("BaseInputGroup"),w=d("BaseIcon"),B=d("BaseButton");return S(),C("form",{onSubmit:L(c,["prevent"])},[r("h6",Ge,f(a.$t("settings.customization.invoices.default_formats")),1),r("p",Re,f(a.$t("settings.customization.invoices.default_formats_description")),1),e($,{label:a.$t("settings.customization.invoices.default_invoice_email_body"),class:"mt-6 mb-4"},{default:u(()=>[e(p,{modelValue:t.invoice_mail_body,"onUpdate:modelValue":n[0]||(n[0]=v=>t.invoice_mail_body=v),fields:_.value},null,8,["modelValue","fields"])]),_:1},8,["label"]),e($,{label:a.$t("settings.customization.invoices.company_address_format"),class:"mt-6 mb-4"},{default:u(()=>[e(p,{modelValue:t.invoice_company_address_format,"onUpdate:modelValue":n[1]||(n[1]=v=>t.invoice_company_address_format=v),fields:s.value},null,8,["modelValue","fields"])]),_:1},8,["label"]),e($,{label:a.$t("settings.customization.invoices.shipping_address_format"),class:"mt-6 mb-4"},{default:u(()=>[e(p,{modelValue:t.invoice_shipping_address_format,"onUpdate:modelValue":n[2]||(n[2]=v=>t.invoice_shipping_address_format=v),fields:o.value},null,8,["modelValue","fields"])]),_:1},8,["label"]),e($,{label:a.$t("settings.customization.invoices.billing_address_format"),class:"mt-6 mb-4"},{default:u(()=>[e(p,{modelValue:t.invoice_billing_address_format,"onUpdate:modelValue":n[3]||(n[3]=v=>t.invoice_billing_address_format=v),fields:g.value},null,8,["modelValue","fields"])]),_:1},8,["label"]),e(B,{loading:b(i),disabled:b(i),variant:"primary",type:"submit",class:"mt-4"},{left:u(v=>[b(i)?R("",!0):(S(),U(w,{key:0,class:M(v.class),name:"SaveIcon"},null,8,["class"]))]),default:u(()=>[D(" "+f(a.$t("settings.customization.save")),1)]),_:1},8,["loading","disabled"])],32)}}},Le={class:"divide-y divide-gray-200"},Pe={__name:"InvoicesTab",setup(h){const m=T("utils"),l=F(),_=k({invoice_email_attachment:null});m.mergeSettings(_,{...l.selectedCompanySettings});const g=E({get:()=>_.invoice_email_attachment==="YES",set:async o=>{const s=o?"YES":"NO";let i={settings:{invoice_email_attachment:s}};_.invoice_email_attachment=s,await l.updateCompanySettings({data:i,message:"general.setting_updated"})}});return(o,s)=>{const i=d("BaseDivider"),t=d("BaseSwitchSection");return S(),C(G,null,[e(Ee),e(i,{class:"my-8"}),e(qe),e(i,{class:"my-8"}),e(Te),e(i,{class:"my-8"}),e(Ae),e(i,{class:"mt-6 mb-2"}),r("ul",Le,[e(t,{modelValue:g.value,"onUpdate:modelValue":s[0]||(s[0]=c=>g.value=c),title:o.$t("settings.customization.invoices.invoice_email_attachment"),description:o.$t("settings.customization.invoices.invoice_email_attachment_setting_description")},null,8,["modelValue","title","description"])])],64)}}},Ye={__name:"EstimatesTabEstimateNumber",setup(h){const m=me();return(l,_)=>(S(),U(K,{type:"estimate","type-store":b(m),"default-series":"EST"},null,8,["type-store"]))}},Oe={class:"text-gray-900 text-lg font-medium"},je={class:"mt-1 text-sm text-gray-500 mb-2"},Qe={class:"w-full sm:w-1/2 md:w-1/4 lg:w-1/5"},He={__name:"EstimatesTabExpiryDate",setup(h){const{t:m}=P.useI18n(),l=F(),_=T("utils");let g=z(!1);const o=k({estimate_set_expiry_date_automatically:null,estimate_expiry_date_days:null});_.mergeSettings(o,{...l.selectedCompanySettings});const s=E({get:()=>o.estimate_set_expiry_date_automatically==="YES",set:async a=>{const n=a?"YES":"NO";o.estimate_set_expiry_date_automatically=n}}),i=E(()=>({expiryDateSettings:{estimate_expiry_date_days:{required:Q.withMessage(m("validation.required"),W(s.value)),numeric:Q.withMessage(m("validation.numbers_only"),Z)}}})),t=ee(i,{expiryDateSettings:o});async function c(){if(t.value.expiryDateSettings.$touch(),t.value.expiryDateSettings.$invalid)return!1;g.value=!0;let a={settings:{...o}};return s.value||delete a.settings.estimate_expiry_date_days,await l.updateCompanySettings({data:a,message:"settings.customization.estimates.estimate_settings_updated"}),g.value=!1,!0}return(a,n)=>{const p=d("BaseSwitchSection"),$=d("BaseInput"),w=d("BaseInputGroup"),B=d("BaseIcon"),v=d("BaseButton");return S(),C("form",{onSubmit:L(c,["prevent"])},[r("h6",Oe,f(a.$t("settings.customization.estimates.expiry_date")),1),r("p",je,f(a.$t("settings.customization.estimates.expiry_date_description")),1),e(p,{modelValue:s.value,"onUpdate:modelValue":n[0]||(n[0]=x=>s.value=x),title:a.$t("settings.customization.estimates.set_expiry_date_automatically"),description:a.$t("settings.customization.estimates.set_expiry_date_automatically_description")},null,8,["modelValue","title","description"]),s.value?(S(),U(w,{key:0,label:a.$t("settings.customization.estimates.expiry_date_days"),error:b(t).expiryDateSettings.estimate_expiry_date_days.$error&&b(t).expiryDateSettings.estimate_expiry_date_days.$errors[0].$message,class:"mt-2 mb-4"},{default:u(()=>[r("div",Qe,[e($,{modelValue:o.estimate_expiry_date_days,"onUpdate:modelValue":n[1]||(n[1]=x=>o.estimate_expiry_date_days=x),invalid:b(t).expiryDateSettings.estimate_expiry_date_days.$error,type:"number",onInput:n[2]||(n[2]=x=>b(t).expiryDateSettings.estimate_expiry_date_days.$touch())},null,8,["modelValue","invalid"])])]),_:1},8,["label","error"])):R("",!0),e(v,{loading:b(g),disabled:b(g),variant:"primary",type:"submit",class:"mt-4"},{left:u(x=>[b(g)?R("",!0):(S(),U(B,{key:0,class:M(x.class),name:"SaveIcon"},null,8,["class"]))]),default:u(()=>[D(" "+f(a.$t("settings.customization.save")),1)]),_:1},8,["loading","disabled"])],32)}}},Je={class:"text-gray-900 text-lg font-medium"},Ke={class:"mt-1 text-sm text-gray-500 mb-2"},Xe={__name:"EstimatesTabDefaultFormats",setup(h){const m=F(),l=T("utils"),_=z(["customer","customerCustom","estimate","estimateCustom","company"]),g=z(["billing","customer","customerCustom","estimateCustom"]),o=z(["shipping","customer","customerCustom","estimateCustom"]),s=z(["company","estimateCustom"]);let i=z(!1);const t=k({estimate_mail_body:null,estimate_company_address_format:null,estimate_shipping_address_format:null,estimate_billing_address_format:null});l.mergeSettings(t,{...m.selectedCompanySettings});async function c(){i.value=!0;let a={settings:{...t}};return await m.updateCompanySettings({data:a,message:"settings.customization.estimates.estimate_settings_updated"}),i.value=!1,!0}return(a,n)=>{const p=d("BaseCustomInput"),$=d("BaseInputGroup"),w=d("BaseIcon"),B=d("BaseButton");return S(),C("form",{onSubmit:L(c,["prevent"])},[r("h6",Je,f(a.$t("settings.customization.estimates.default_formats")),1),r("p",Ke,f(a.$t("settings.customization.estimates.default_formats_description")),1),e($,{label:a.$t("settings.customization.estimates.default_estimate_email_body"),class:"mt-6 mb-4"},{default:u(()=>[e(p,{modelValue:t.estimate_mail_body,"onUpdate:modelValue":n[0]||(n[0]=v=>t.estimate_mail_body=v),fields:_.value},null,8,["modelValue","fields"])]),_:1},8,["label"]),e($,{label:a.$t("settings.customization.estimates.company_address_format"),class:"mt-6 mb-4"},{default:u(()=>[e(p,{modelValue:t.estimate_company_address_format,"onUpdate:modelValue":n[1]||(n[1]=v=>t.estimate_company_address_format=v),fields:s.value},null,8,["modelValue","fields"])]),_:1},8,["label"]),e($,{label:a.$t("settings.customization.estimates.shipping_address_format"),class:"mt-6 mb-4"},{default:u(()=>[e(p,{modelValue:t.estimate_shipping_address_format,"onUpdate:modelValue":n[2]||(n[2]=v=>t.estimate_shipping_address_format=v),fields:o.value},null,8,["modelValue","fields"])]),_:1},8,["label"]),e($,{label:a.$t("settings.customization.estimates.billing_address_format"),class:"mt-6 mb-4"},{default:u(()=>[e(p,{modelValue:t.estimate_billing_address_format,"onUpdate:modelValue":n[3]||(n[3]=v=>t.estimate_billing_address_format=v),fields:g.value},null,8,["modelValue","fields"])]),_:1},8,["label"]),e(B,{loading:b(i),disabled:b(i),variant:"primary",type:"submit",class:"mt-4"},{left:u(v=>[b(i)?R("",!0):(S(),U(w,{key:0,class:M(v.class),name:"SaveIcon"},null,8,["class"]))]),default:u(()=>[D(" "+f(a.$t("settings.customization.save")),1)]),_:1},8,["loading","disabled"])],32)}}},We={class:"text-gray-900 text-lg font-medium"},Ze={class:"mt-1 text-sm text-gray-500"},et={__name:"EstimatesTabConvertEstimate",setup(h){const{t:m,tm:l}=P.useI18n(),_=F(),g=J(),o=T("utils"),s=k({estimate_convert_action:null});o.mergeSettings(s,{..._.selectedCompanySettings}),E(()=>g.config.estimate_convert_action.map(t=>(t.title=m(t.key),t)));async function i(){let t={settings:{...s}};return await _.updateCompanySettings({data:t,message:"settings.customization.estimates.estimate_settings_updated"}),!0}return(t,c)=>{const a=d("BaseRadio"),n=d("BaseInputGroup");return S(),C(G,null,[r("h6",We,f(t.$t("settings.customization.estimates.convert_estimate_options")),1),r("p",Ze,f(t.$t("settings.customization.estimates.convert_estimate_description")),1),e(n,{required:""},{default:u(()=>[e(a,{id:"no_action",modelValue:s.estimate_convert_action,"onUpdate:modelValue":[c[0]||(c[0]=p=>s.estimate_convert_action=p),i],label:t.$t("settings.customization.estimates.no_action"),size:"sm",name:"filter",value:"no_action",class:"mt-2"},null,8,["modelValue","label"]),e(a,{id:"delete_estimate",modelValue:s.estimate_convert_action,"onUpdate:modelValue":[c[1]||(c[1]=p=>s.estimate_convert_action=p),i],label:t.$t("settings.customization.estimates.delete_estimate"),size:"sm",name:"filter",value:"delete_estimate",class:"my-2"},null,8,["modelValue","label"]),e(a,{id:"mark_estimate_as_accepted",modelValue:s.estimate_convert_action,"onUpdate:modelValue":[c[2]||(c[2]=p=>s.estimate_convert_action=p),i],label:t.$t("settings.customization.estimates.mark_estimate_as_accepted"),size:"sm",name:"filter",value:"mark_estimate_as_accepted"},null,8,["modelValue","label"])]),_:1})],64)}}},tt={class:"divide-y divide-gray-200"},st={__name:"EstimatesTab",setup(h){const m=T("utils"),l=F(),_=k({estimate_email_attachment:null});m.mergeSettings(_,{...l.selectedCompanySettings});const g=E({get:()=>_.estimate_email_attachment==="YES",set:async o=>{const s=o?"YES":"NO";let i={settings:{estimate_email_attachment:s}};_.estimate_email_attachment=s,await l.updateCompanySettings({data:i,message:"general.setting_updated"})}});return(o,s)=>{const i=d("BaseDivider"),t=d("BaseSwitchSection");return S(),C(G,null,[e(Ye),e(i,{class:"my-8"}),e(He),e(i,{class:"my-8"}),e(et),e(i,{class:"my-8"}),e(Xe),e(i,{class:"mt-6 mb-2"}),r("ul",tt,[e(t,{modelValue:g.value,"onUpdate:modelValue":s[0]||(s[0]=c=>g.value=c),title:o.$t("settings.customization.estimates.estimate_email_attachment"),description:o.$t("settings.customization.estimates.estimate_email_attachment_setting_description")},null,8,["modelValue","title","description"])])],64)}}},at={__name:"PaymentsTabPaymentNumber",setup(h){const m=pe();return(l,_)=>(S(),U(K,{type:"payment","type-store":b(m),"default-series":"PAY"},null,8,["type-store"]))}},nt={class:"text-gray-900 text-lg font-medium"},it={class:"mt-1 text-sm text-gray-500 mb-2"},ot={__name:"PaymentsTabDefaultFormats",setup(h){const m=F(),l=T("utils"),_=z(["customer","customerCustom","company","payment","paymentCustom"]),g=z(["billing","customer","customerCustom","paymentCustom"]),o=z(["company","paymentCustom"]);let s=z(!1);const i=k({payment_mail_body:null,payment_company_address_format:null,payment_from_customer_address_format:null});l.mergeSettings(i,{...m.selectedCompanySettings});async function t(){s.value=!0;let c={settings:{...i}};return await m.updateCompanySettings({data:c,message:"settings.customization.payments.payment_settings_updated"}),s.value=!1,!0}return(c,a)=>{const n=d("BaseCustomInput"),p=d("BaseInputGroup"),$=d("BaseIcon"),w=d("BaseButton");return S(),C("form",{onSubmit:L(t,["prevent"])},[r("h6",nt,f(c.$t("settings.customization.payments.default_formats")),1),r("p",it,f(c.$t("settings.customization.payments.default_formats_description")),1),e(p,{label:c.$t("settings.customization.payments.default_payment_email_body"),class:"mt-6 mb-4"},{default:u(()=>[e(n,{modelValue:i.payment_mail_body,"onUpdate:modelValue":a[0]||(a[0]=B=>i.payment_mail_body=B),fields:_.value},null,8,["modelValue","fields"])]),_:1},8,["label"]),e(p,{label:c.$t("settings.customization.payments.company_address_format"),class:"mt-6 mb-4"},{default:u(()=>[e(n,{modelValue:i.payment_company_address_format,"onUpdate:modelValue":a[1]||(a[1]=B=>i.payment_company_address_format=B),fields:o.value},null,8,["modelValue","fields"])]),_:1},8,["label"]),e(p,{label:c.$t("settings.customization.payments.from_customer_address_format"),class:"mt-6 mb-4"},{default:u(()=>[e(n,{modelValue:i.payment_from_customer_address_format,"onUpdate:modelValue":a[2]||(a[2]=B=>i.payment_from_customer_address_format=B),fields:g.value},null,8,["modelValue","fields"])]),_:1},8,["label"]),e(w,{loading:b(s),disabled:b(s),variant:"primary",type:"submit",class:"mt-4"},{left:u(B=>[b(s)?R("",!0):(S(),U($,{key:0,class:M(B.class),name:"SaveIcon"},null,8,["class"]))]),default:u(()=>[D(" "+f(c.$t("settings.customization.save")),1)]),_:1},8,["loading","disabled"])],32)}}},lt={class:"divide-y divide-gray-200"},mt={__name:"PaymentsTab",setup(h){const m=T("utils"),l=F(),_=k({payment_email_attachment:null});m.mergeSettings(_,{...l.selectedCompanySettings});const g=E({get:()=>_.payment_email_attachment==="YES",set:async o=>{const s=o?"YES":"NO";let i={settings:{payment_email_attachment:s}};_.payment_email_attachment=s,await l.updateCompanySettings({data:i,message:"general.setting_updated"})}});return(o,s)=>{const i=d("BaseDivider"),t=d("BaseSwitchSection");return S(),C(G,null,[e(at),e(i,{class:"my-8"}),e(ot),e(i,{class:"mt-6 mb-2"}),r("ul",lt,[e(t,{modelValue:g.value,"onUpdate:modelValue":s[0]||(s[0]=c=>g.value=c),title:o.$t("settings.customization.payments.payment_email_attachment"),description:o.$t("settings.customization.payments.payment_email_attachment_setting_description")},null,8,["modelValue","title","description"])])],64)}}},ut={class:"flex flex-wrap justify-end mt-2 lg:flex-nowrap"},rt={class:"inline-block"},dt={__name:"ItemsTab",setup(h){const{t:m}=P.useI18n(),l=z(null),_=ue(),g=re(),o=de(),s=E(()=>[{key:"name",label:m("settings.customization.items.unit_name"),thClass:"extra",tdClass:"font-medium text-gray-900"},{key:"actions",label:"",tdClass:"text-right text-sm font-medium",sortable:!1}]);async function i({page:n,filter:p,sort:$}){let w={orderByField:$.fieldName||"created_at",orderBy:$.order||"desc",page:n},B=await _.fetchItemUnits(w);return{data:B.data.data,pagination:{totalPages:B.data.meta.last_page,currentPage:n,totalCount:B.data.meta.total,limit:5}}}async function t(){g.openModal({title:m("settings.customization.items.add_item_unit"),componentName:"ItemUnitModal",refreshData:l.value.refresh,size:"sm"})}async function c(n){_.fetchItemUnit(n.data.id),g.openModal({title:m("settings.customization.items.edit_item_unit"),componentName:"ItemUnitModal",id:n.data.id,data:n.data,refreshData:l.value&&l.value.refresh})}function a(n){o.openDialog({title:m("general.are_you_sure"),message:m("settings.customization.items.item_unit_confirm_delete"),yesLabel:m("general.yes"),noLabel:m("general.no"),variant:"danger",hideNoButton:!1,size:"lg"}).then(async p=>{p&&(await _.deleteItemUnit(n.data.id),l.value&&l.value.refresh())})}return(n,p)=>{const $=d("BaseIcon"),w=d("BaseButton"),B=d("BaseDropdownItem"),v=d("BaseDropdown"),x=d("BaseTable");return S(),C(G,null,[e(ge),r("div",ut,[e(w,{variant:"primary-outline",onClick:t},{left:u(N=>[e($,{class:M(N.class),name:"PlusIcon"},null,8,["class"])]),default:u(()=>[D(" "+f(n.$t("settings.customization.items.add_item_unit")),1)]),_:1})]),e(x,{ref_key:"table",ref:l,class:"mt-10",data:i,columns:s.value},{"cell-actions":u(({row:N})=>[e(v,null,{activator:u(()=>[r("div",rt,[e($,{name:"DotsHorizontalIcon",class:"text-gray-500"})])]),default:u(()=>[e(B,{onClick:H=>c(N)},{default:u(()=>[e($,{name:"PencilIcon",class:"w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500"}),D(" "+f(n.$t("general.edit")),1)]),_:2},1032,["onClick"]),e(B,{onClick:H=>a(N)},{default:u(()=>[e($,{name:"TrashIcon",class:"w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500"}),D(" "+f(n.$t("general.delete")),1)]),_:2},1032,["onClick"])]),_:2},1024)]),_:1},8,["columns"])],64)}}},ct={class:"relative"},ft={__name:"CustomizationSetting",setup(h){return(m,l)=>{const _=d("BaseTab"),g=d("BaseTabGroup"),o=d("BaseCard");return S(),C("div",ct,[e(o,{"container-class":"px-4 py-5 sm:px-8 sm:py-2"},{default:u(()=>[e(g,null,{default:u(()=>[e(_,{"tab-panel-container":"py-4 mt-px",title:m.$t("settings.customization.invoices.title")},{default:u(()=>[e(Pe)]),_:1},8,["title"]),e(_,{"tab-panel-container":"py-4 mt-px",title:m.$t("settings.customization.estimates.title")},{default:u(()=>[e(st)]),_:1},8,["title"]),e(_,{"tab-panel-container":"py-4 mt-px",title:m.$t("settings.customization.payments.title")},{default:u(()=>[e(mt)]),_:1},8,["title"]),e(_,{"tab-panel-container":"py-4 mt-px",title:m.$t("settings.customization.items.title")},{default:u(()=>[e(dt)]),_:1},8,["title"])]),_:1})]),_:1})])}}};export{ft as default}; +import{v as P,E as F,G as J,f as z,k as E,z as ne,ao as X,ap as ie,r as d,o as S,c as C,b as r,t as f,a as e,w as u,q as L,J as M,p as D,N as G,O as oe,m as U,l as b,K as R,aq as le,a5 as T,H as k,g as Q,ag as W,ar as Z,j as ee,as as me,at as ue,F as re,a7 as de}from"./main-pPEsZPea.js";import{D as ce,d as _e}from"./DragIcon-lAv182Nx.js";import{u as pe}from"./payment-fIjVKZH2.js";import{_ as ge}from"./ItemUnitModal-bGVyp5_i.js";const ye={class:"text-gray-900 text-lg font-medium"},fe={class:"mt-1 text-sm text-gray-500"},ve={class:"overflow-x-auto"},be={class:"w-full mt-6 table-fixed"},Se=r("colgroup",null,[r("col",{style:{width:"4%"}}),r("col",{style:{width:"45%"}}),r("col",{style:{width:"27%"}}),r("col",{style:{width:"24%"}})],-1),$e=r("thead",null,[r("tr",null,[r("th",{class:"px-5 py-3 text-sm not-italic font-medium leading-5 text-left text-gray-700 border-t border-b border-gray-200 border-solid"}),r("th",{class:"px-5 py-3 text-sm not-italic font-medium leading-5 text-left text-gray-700 border-t border-b border-gray-200 border-solid"}," Component "),r("th",{class:"px-5 py-3 text-sm not-italic font-medium leading-5 text-left text-gray-700 border-t border-b border-gray-200 border-solid"}," Parameter "),r("th",{class:"px-5 py-3 text-sm not-italic font-medium leading-5 text-left text-gray-700 border-t border-b border-gray-200 border-solid"})])],-1),Be={class:"relative"},ze={class:"text-gray-300 cursor-move handle align-middle"},he={class:"px-5 py-4"},Ie={class:"block text-sm not-italic font-medium text-primary-800 whitespace-nowrap mr-2 min-w-[200px]"},Ve={class:"text-xs text-gray-500 mt-1"},xe={class:"px-5 py-4 text-left align-middle"},we={class:"px-5 py-4 text-right align-middle pt-10"},Ce={colspan:"2",class:"px-5 py-4"},De={class:"px-5 py-4 text-right align-middle",colspan:"2"},K={__name:"NumberCustomizer",props:{type:{type:String,required:!0},typeStore:{type:Object,required:!0},defaultSeries:{type:String,default:"INV"}},setup(h){const m=h,{t:l}=P.useI18n(),_=F(),g=J(),o=z([]),s=z(!1),i=z([{label:l("settings.customization.series"),description:l("settings.customization.series_description"),name:"SERIES",paramLabel:l("settings.customization.series_param_label"),value:m.defaultSeries,inputDisabled:!1,inputType:"text",allowMultiple:!1},{label:l("settings.customization.sequence"),description:l("settings.customization.sequence_description"),name:"SEQUENCE",paramLabel:l("settings.customization.sequence_param_label"),value:"6",inputDisabled:!1,inputType:"number",allowMultiple:!1},{label:l("settings.customization.delimiter"),description:l("settings.customization.delimiter_description"),name:"DELIMITER",paramLabel:l("settings.customization.delimiter_param_label"),value:"-",inputDisabled:!1,inputType:"text",allowMultiple:!0},{label:l("settings.customization.customer_series"),description:l("settings.customization.customer_series_description"),name:"CUSTOMER_SERIES",paramLabel:"",value:"",inputDisabled:!0,inputType:"text",allowMultiple:!1},{label:l("settings.customization.customer_sequence"),description:l("settings.customization.customer_sequence_description"),name:"CUSTOMER_SEQUENCE",paramLabel:l("settings.customization.customer_sequence_param_label"),value:"6",inputDisabled:!1,inputType:"number",allowMultiple:!1},{label:l("settings.customization.date_format"),description:l("settings.customization.date_format_description"),name:"DATE_FORMAT",paramLabel:l("settings.customization.date_format_param_label"),value:"Y",inputDisabled:!1,inputType:"text",allowMultiple:!0},{label:l("settings.customization.random_sequence"),description:l("settings.customization.random_sequence_description"),name:"RANDOM_SEQUENCE",paramLabel:l("settings.customization.random_sequence_param_label"),value:"6",inputDisabled:!1,inputType:"number",allowMultiple:!1}]),t=E(()=>i.value.filter(function(y){return!o.value.some(function(I){return y.allowMultiple?!1:y.name==I.name})})),c=z(""),a=z(!1),n=z(!1),p=E(()=>{let y="";return o.value.forEach(I=>{let q=`{{${I.name}`;I.value&&(q+=`:${I.value}`),y+=`${q}}}`}),y});ne(o,y=>{N()}),$();async function $(){let y={format:_.selectedCompanySettings[`${m.type}_number_format`]};n.value=!0,(await g.fetchPlaceholders(y)).data.placeholders.forEach(q=>{let j=i.value.find(O=>O.name===q.name);const Y=q.value??"";o.value.push({...j,value:Y,id:X.raw()})}),n.value=!1,N()}function w(y){return o.value.find(I=>I.name===y.name)}function B(y){w(y)&&!y.allowMultiple||(o.value.push({...y,id:X.raw()}),N())}function v(y){o.value=o.value.filter(function(I){return y.id!==I.id})}function x(y,I){switch(I.name){case"SERIES":y.length>=6&&(y=y.substring(0,6));break;case"DELIMITER":y.length>=1&&(y=y.substring(0,1));break}setTimeout(()=>{I.value=y,N()},100)}const N=ie(()=>{H()},500);async function H(){if(!p.value){c.value="";return}let y={key:m.type,format:p.value};a.value=!0;let I=await m.typeStore.getNextNumber(y);a.value=!1,I.data&&(c.value=I.data.nextNumber)}async function te(){if(a.value||n.value)return;s.value=!0;let y={settings:{}};return y.settings[m.type+"_number_format"]=p.value,await _.updateCompanySettings({data:y,message:`settings.customization.${m.type}s.${m.type}_settings_updated`}),s.value=!1,!0}return(y,I)=>{const q=d("BaseInput"),j=d("BaseInputGroup"),Y=d("BaseIcon"),O=d("BaseButton"),se=d("BaseDropdownItem"),ae=d("BaseDropdown");return S(),C(G,null,[r("h6",ye,f(y.$t(`settings.customization.${h.type}s.${h.type}_number_format`)),1),r("p",fe,f(y.$t(`settings.customization.${h.type}s.${h.type}_number_format_description`)),1),r("div",ve,[r("table",be,[Se,$e,e(b(_e),{modelValue:o.value,"onUpdate:modelValue":I[1]||(I[1]=V=>o.value=V),class:"divide-y divide-gray-200","item-key":"id",tag:"tbody",handle:".handle",filter:".ignore-element"},{item:u(({element:V})=>[r("tr",Be,[r("td",ze,[e(ce)]),r("td",he,[r("label",Ie,f(V.label),1),r("p",Ve,f(V.description),1)]),r("td",xe,[e(j,{label:V.paramLabel,class:"lg:col-span-3",required:""},{default:u(()=>[e(q,{modelValue:V.value,"onUpdate:modelValue":[A=>V.value=A,A=>x(A,V)],disabled:V.inputDisabled,type:V.inputType},null,8,["modelValue","onUpdate:modelValue","disabled","type"])]),_:2},1032,["label"])]),r("td",we,[e(O,{variant:"white",onClick:L(A=>v(V),["prevent"])},{left:u(A=>[e(Y,{name:"XIcon",class:M(["!sm:m-0",A.class])},null,8,["class"])]),default:u(()=>[D(" Remove ")]),_:2},1032,["onClick"])])])]),footer:u(()=>[r("tr",null,[r("td",Ce,[e(j,{label:y.$t(`settings.customization.${h.type}s.preview_${h.type}_number`)},{default:u(()=>[e(q,{modelValue:c.value,"onUpdate:modelValue":I[0]||(I[0]=V=>c.value=V),disabled:"",loading:a.value},null,8,["modelValue","loading"])]),_:1},8,["label"])]),r("td",De,[e(ae,{"wrapper-class":"flex items-center justify-end mt-5"},{activator:u(()=>[e(O,{variant:"primary-outline"},{left:u(V=>[e(Y,{class:M(V.class),name:"PlusIcon"},null,8,["class"])]),default:u(()=>[D(" "+f(y.$t("settings.customization.add_new_component")),1)]),_:1})]),default:u(()=>[(S(!0),C(G,null,oe(t.value,V=>(S(),U(se,{key:V.label,onClick:L(A=>B(V),["prevent"])},{default:u(()=>[D(f(V.label),1)]),_:2},1032,["onClick"]))),128))]),_:1})])])]),_:1},8,["modelValue"])])]),e(O,{loading:s.value,disabled:s.value,variant:"primary",type:"submit",class:"mt-4",onClick:te},{left:u(V=>[s.value?R("",!0):(S(),U(Y,{key:0,class:M(V.class),name:"SaveIcon"},null,8,["class"]))]),default:u(()=>[D(" "+f(y.$t("settings.customization.save")),1)]),_:1},8,["loading","disabled"])],64)}}},Ee={__name:"InvoicesTabInvoiceNumber",setup(h){const m=le();return(l,_)=>(S(),U(K,{type:"invoice","type-store":b(m),"default-series":"INV"},null,8,["type-store"]))}},Ue={class:"text-gray-900 text-lg font-medium"},Fe={class:"mt-1 text-sm text-gray-500"},Te={__name:"InvoicesTabRetrospective",setup(h){const{t:m,tm:l}=P.useI18n(),_=F(),g=J(),o=T("utils"),s=k({retrospective_edits:null});o.mergeSettings(s,{..._.selectedCompanySettings}),E(()=>g.config.retrospective_edits.map(t=>(t.title=m(t.key),t)));async function i(){let t={settings:{...s}};return await _.updateCompanySettings({data:t,message:"settings.customization.invoices.invoice_settings_updated"}),!0}return(t,c)=>{const a=d("BaseRadio"),n=d("BaseInputGroup");return S(),C(G,null,[r("h6",Ue,f(t.$t("settings.customization.invoices.retrospective_edits")),1),r("p",Fe,f(t.$t("settings.customization.invoices.retrospective_edits_description")),1),e(n,{required:""},{default:u(()=>[e(a,{id:"allow",modelValue:s.retrospective_edits,"onUpdate:modelValue":[c[0]||(c[0]=p=>s.retrospective_edits=p),i],label:t.$t("settings.customization.invoices.allow"),size:"sm",name:"filter",value:"allow",class:"mt-2"},null,8,["modelValue","label"]),e(a,{id:"disable_on_invoice_partial_paid",modelValue:s.retrospective_edits,"onUpdate:modelValue":[c[1]||(c[1]=p=>s.retrospective_edits=p),i],label:t.$t("settings.customization.invoices.disable_on_invoice_partial_paid"),size:"sm",name:"filter",value:"disable_on_invoice_partial_paid",class:"mt-2"},null,8,["modelValue","label"]),e(a,{id:"disable_on_invoice_paid",modelValue:s.retrospective_edits,"onUpdate:modelValue":[c[2]||(c[2]=p=>s.retrospective_edits=p),i],label:t.$t("settings.customization.invoices.disable_on_invoice_paid"),size:"sm",name:"filter",value:"disable_on_invoice_paid",class:"my-2"},null,8,["modelValue","label"]),e(a,{id:"disable_on_invoice_sent",modelValue:s.retrospective_edits,"onUpdate:modelValue":[c[3]||(c[3]=p=>s.retrospective_edits=p),i],label:t.$t("settings.customization.invoices.disable_on_invoice_sent"),size:"sm",name:"filter",value:"disable_on_invoice_sent"},null,8,["modelValue","label"])]),_:1})],64)}}},ke={class:"text-gray-900 text-lg font-medium"},Ne={class:"mt-1 text-sm text-gray-500 mb-2"},Me={class:"w-full sm:w-1/2 md:w-1/4 lg:w-1/5"},qe={__name:"InvoicesTabDueDate",setup(h){const{t:m}=P.useI18n(),l=F(),_=T("utils");let g=z(!1);const o=k({invoice_set_due_date_automatically:null,invoice_due_date_days:null});_.mergeSettings(o,{...l.selectedCompanySettings});const s=E({get:()=>o.invoice_set_due_date_automatically==="YES",set:async a=>{const n=a?"YES":"NO";o.invoice_set_due_date_automatically=n}}),i=E(()=>({dueDateSettings:{invoice_due_date_days:{required:Q.withMessage(m("validation.required"),W(s.value)),numeric:Q.withMessage(m("validation.numbers_only"),Z)}}})),t=ee(i,{dueDateSettings:o});async function c(){if(t.value.dueDateSettings.$touch(),t.value.dueDateSettings.$invalid)return!1;g.value=!0;let a={settings:{...o}};return s.value||delete a.settings.invoice_due_date_days,await l.updateCompanySettings({data:a,message:"settings.customization.invoices.invoice_settings_updated"}),g.value=!1,!0}return(a,n)=>{const p=d("BaseSwitchSection"),$=d("BaseInput"),w=d("BaseInputGroup"),B=d("BaseIcon"),v=d("BaseButton");return S(),C("form",{onSubmit:L(c,["prevent"])},[r("h6",ke,f(a.$t("settings.customization.invoices.due_date")),1),r("p",Ne,f(a.$t("settings.customization.invoices.due_date_description")),1),e(p,{modelValue:s.value,"onUpdate:modelValue":n[0]||(n[0]=x=>s.value=x),title:a.$t("settings.customization.invoices.set_due_date_automatically"),description:a.$t("settings.customization.invoices.set_due_date_automatically_description")},null,8,["modelValue","title","description"]),s.value?(S(),U(w,{key:0,label:a.$t("settings.customization.invoices.due_date_days"),error:b(t).dueDateSettings.invoice_due_date_days.$error&&b(t).dueDateSettings.invoice_due_date_days.$errors[0].$message,class:"mt-2 mb-4"},{default:u(()=>[r("div",Me,[e($,{modelValue:o.invoice_due_date_days,"onUpdate:modelValue":n[1]||(n[1]=x=>o.invoice_due_date_days=x),invalid:b(t).dueDateSettings.invoice_due_date_days.$error,type:"number",onInput:n[2]||(n[2]=x=>b(t).dueDateSettings.invoice_due_date_days.$touch())},null,8,["modelValue","invalid"])])]),_:1},8,["label","error"])):R("",!0),e(v,{loading:b(g),disabled:b(g),variant:"primary",type:"submit",class:"mt-4"},{left:u(x=>[b(g)?R("",!0):(S(),U(B,{key:0,class:M(x.class),name:"SaveIcon"},null,8,["class"]))]),default:u(()=>[D(" "+f(a.$t("settings.customization.save")),1)]),_:1},8,["loading","disabled"])],32)}}},Ge={class:"text-gray-900 text-lg font-medium"},Re={class:"mt-1 text-sm text-gray-500 mb-2"},Ae={__name:"InvoicesTabDefaultFormats",setup(h){const m=F(),l=T("utils"),_=z(["customer","customerCustom","invoice","invoiceCustom","company"]),g=z(["billing","customer","customerCustom","invoiceCustom"]),o=z(["shipping","customer","customerCustom","invoiceCustom"]),s=z(["company","invoiceCustom"]);let i=z(!1);const t=k({invoice_mail_body:null,invoice_company_address_format:null,invoice_shipping_address_format:null,invoice_billing_address_format:null});l.mergeSettings(t,{...m.selectedCompanySettings});async function c(){i.value=!0;let a={settings:{...t}};return await m.updateCompanySettings({data:a,message:"settings.customization.invoices.invoice_settings_updated"}),i.value=!1,!0}return(a,n)=>{const p=d("BaseCustomInput"),$=d("BaseInputGroup"),w=d("BaseIcon"),B=d("BaseButton");return S(),C("form",{onSubmit:L(c,["prevent"])},[r("h6",Ge,f(a.$t("settings.customization.invoices.default_formats")),1),r("p",Re,f(a.$t("settings.customization.invoices.default_formats_description")),1),e($,{label:a.$t("settings.customization.invoices.default_invoice_email_body"),class:"mt-6 mb-4"},{default:u(()=>[e(p,{modelValue:t.invoice_mail_body,"onUpdate:modelValue":n[0]||(n[0]=v=>t.invoice_mail_body=v),fields:_.value},null,8,["modelValue","fields"])]),_:1},8,["label"]),e($,{label:a.$t("settings.customization.invoices.company_address_format"),class:"mt-6 mb-4"},{default:u(()=>[e(p,{modelValue:t.invoice_company_address_format,"onUpdate:modelValue":n[1]||(n[1]=v=>t.invoice_company_address_format=v),fields:s.value},null,8,["modelValue","fields"])]),_:1},8,["label"]),e($,{label:a.$t("settings.customization.invoices.shipping_address_format"),class:"mt-6 mb-4"},{default:u(()=>[e(p,{modelValue:t.invoice_shipping_address_format,"onUpdate:modelValue":n[2]||(n[2]=v=>t.invoice_shipping_address_format=v),fields:o.value},null,8,["modelValue","fields"])]),_:1},8,["label"]),e($,{label:a.$t("settings.customization.invoices.billing_address_format"),class:"mt-6 mb-4"},{default:u(()=>[e(p,{modelValue:t.invoice_billing_address_format,"onUpdate:modelValue":n[3]||(n[3]=v=>t.invoice_billing_address_format=v),fields:g.value},null,8,["modelValue","fields"])]),_:1},8,["label"]),e(B,{loading:b(i),disabled:b(i),variant:"primary",type:"submit",class:"mt-4"},{left:u(v=>[b(i)?R("",!0):(S(),U(w,{key:0,class:M(v.class),name:"SaveIcon"},null,8,["class"]))]),default:u(()=>[D(" "+f(a.$t("settings.customization.save")),1)]),_:1},8,["loading","disabled"])],32)}}},Le={class:"divide-y divide-gray-200"},Pe={__name:"InvoicesTab",setup(h){const m=T("utils"),l=F(),_=k({invoice_email_attachment:null});m.mergeSettings(_,{...l.selectedCompanySettings});const g=E({get:()=>_.invoice_email_attachment==="YES",set:async o=>{const s=o?"YES":"NO";let i={settings:{invoice_email_attachment:s}};_.invoice_email_attachment=s,await l.updateCompanySettings({data:i,message:"general.setting_updated"})}});return(o,s)=>{const i=d("BaseDivider"),t=d("BaseSwitchSection");return S(),C(G,null,[e(Ee),e(i,{class:"my-8"}),e(qe),e(i,{class:"my-8"}),e(Te),e(i,{class:"my-8"}),e(Ae),e(i,{class:"mt-6 mb-2"}),r("ul",Le,[e(t,{modelValue:g.value,"onUpdate:modelValue":s[0]||(s[0]=c=>g.value=c),title:o.$t("settings.customization.invoices.invoice_email_attachment"),description:o.$t("settings.customization.invoices.invoice_email_attachment_setting_description")},null,8,["modelValue","title","description"])])],64)}}},Ye={__name:"EstimatesTabEstimateNumber",setup(h){const m=me();return(l,_)=>(S(),U(K,{type:"estimate","type-store":b(m),"default-series":"EST"},null,8,["type-store"]))}},Oe={class:"text-gray-900 text-lg font-medium"},je={class:"mt-1 text-sm text-gray-500 mb-2"},Qe={class:"w-full sm:w-1/2 md:w-1/4 lg:w-1/5"},He={__name:"EstimatesTabExpiryDate",setup(h){const{t:m}=P.useI18n(),l=F(),_=T("utils");let g=z(!1);const o=k({estimate_set_expiry_date_automatically:null,estimate_expiry_date_days:null});_.mergeSettings(o,{...l.selectedCompanySettings});const s=E({get:()=>o.estimate_set_expiry_date_automatically==="YES",set:async a=>{const n=a?"YES":"NO";o.estimate_set_expiry_date_automatically=n}}),i=E(()=>({expiryDateSettings:{estimate_expiry_date_days:{required:Q.withMessage(m("validation.required"),W(s.value)),numeric:Q.withMessage(m("validation.numbers_only"),Z)}}})),t=ee(i,{expiryDateSettings:o});async function c(){if(t.value.expiryDateSettings.$touch(),t.value.expiryDateSettings.$invalid)return!1;g.value=!0;let a={settings:{...o}};return s.value||delete a.settings.estimate_expiry_date_days,await l.updateCompanySettings({data:a,message:"settings.customization.estimates.estimate_settings_updated"}),g.value=!1,!0}return(a,n)=>{const p=d("BaseSwitchSection"),$=d("BaseInput"),w=d("BaseInputGroup"),B=d("BaseIcon"),v=d("BaseButton");return S(),C("form",{onSubmit:L(c,["prevent"])},[r("h6",Oe,f(a.$t("settings.customization.estimates.expiry_date")),1),r("p",je,f(a.$t("settings.customization.estimates.expiry_date_description")),1),e(p,{modelValue:s.value,"onUpdate:modelValue":n[0]||(n[0]=x=>s.value=x),title:a.$t("settings.customization.estimates.set_expiry_date_automatically"),description:a.$t("settings.customization.estimates.set_expiry_date_automatically_description")},null,8,["modelValue","title","description"]),s.value?(S(),U(w,{key:0,label:a.$t("settings.customization.estimates.expiry_date_days"),error:b(t).expiryDateSettings.estimate_expiry_date_days.$error&&b(t).expiryDateSettings.estimate_expiry_date_days.$errors[0].$message,class:"mt-2 mb-4"},{default:u(()=>[r("div",Qe,[e($,{modelValue:o.estimate_expiry_date_days,"onUpdate:modelValue":n[1]||(n[1]=x=>o.estimate_expiry_date_days=x),invalid:b(t).expiryDateSettings.estimate_expiry_date_days.$error,type:"number",onInput:n[2]||(n[2]=x=>b(t).expiryDateSettings.estimate_expiry_date_days.$touch())},null,8,["modelValue","invalid"])])]),_:1},8,["label","error"])):R("",!0),e(v,{loading:b(g),disabled:b(g),variant:"primary",type:"submit",class:"mt-4"},{left:u(x=>[b(g)?R("",!0):(S(),U(B,{key:0,class:M(x.class),name:"SaveIcon"},null,8,["class"]))]),default:u(()=>[D(" "+f(a.$t("settings.customization.save")),1)]),_:1},8,["loading","disabled"])],32)}}},Je={class:"text-gray-900 text-lg font-medium"},Ke={class:"mt-1 text-sm text-gray-500 mb-2"},Xe={__name:"EstimatesTabDefaultFormats",setup(h){const m=F(),l=T("utils"),_=z(["customer","customerCustom","estimate","estimateCustom","company"]),g=z(["billing","customer","customerCustom","estimateCustom"]),o=z(["shipping","customer","customerCustom","estimateCustom"]),s=z(["company","estimateCustom"]);let i=z(!1);const t=k({estimate_mail_body:null,estimate_company_address_format:null,estimate_shipping_address_format:null,estimate_billing_address_format:null});l.mergeSettings(t,{...m.selectedCompanySettings});async function c(){i.value=!0;let a={settings:{...t}};return await m.updateCompanySettings({data:a,message:"settings.customization.estimates.estimate_settings_updated"}),i.value=!1,!0}return(a,n)=>{const p=d("BaseCustomInput"),$=d("BaseInputGroup"),w=d("BaseIcon"),B=d("BaseButton");return S(),C("form",{onSubmit:L(c,["prevent"])},[r("h6",Je,f(a.$t("settings.customization.estimates.default_formats")),1),r("p",Ke,f(a.$t("settings.customization.estimates.default_formats_description")),1),e($,{label:a.$t("settings.customization.estimates.default_estimate_email_body"),class:"mt-6 mb-4"},{default:u(()=>[e(p,{modelValue:t.estimate_mail_body,"onUpdate:modelValue":n[0]||(n[0]=v=>t.estimate_mail_body=v),fields:_.value},null,8,["modelValue","fields"])]),_:1},8,["label"]),e($,{label:a.$t("settings.customization.estimates.company_address_format"),class:"mt-6 mb-4"},{default:u(()=>[e(p,{modelValue:t.estimate_company_address_format,"onUpdate:modelValue":n[1]||(n[1]=v=>t.estimate_company_address_format=v),fields:s.value},null,8,["modelValue","fields"])]),_:1},8,["label"]),e($,{label:a.$t("settings.customization.estimates.shipping_address_format"),class:"mt-6 mb-4"},{default:u(()=>[e(p,{modelValue:t.estimate_shipping_address_format,"onUpdate:modelValue":n[2]||(n[2]=v=>t.estimate_shipping_address_format=v),fields:o.value},null,8,["modelValue","fields"])]),_:1},8,["label"]),e($,{label:a.$t("settings.customization.estimates.billing_address_format"),class:"mt-6 mb-4"},{default:u(()=>[e(p,{modelValue:t.estimate_billing_address_format,"onUpdate:modelValue":n[3]||(n[3]=v=>t.estimate_billing_address_format=v),fields:g.value},null,8,["modelValue","fields"])]),_:1},8,["label"]),e(B,{loading:b(i),disabled:b(i),variant:"primary",type:"submit",class:"mt-4"},{left:u(v=>[b(i)?R("",!0):(S(),U(w,{key:0,class:M(v.class),name:"SaveIcon"},null,8,["class"]))]),default:u(()=>[D(" "+f(a.$t("settings.customization.save")),1)]),_:1},8,["loading","disabled"])],32)}}},We={class:"text-gray-900 text-lg font-medium"},Ze={class:"mt-1 text-sm text-gray-500"},et={__name:"EstimatesTabConvertEstimate",setup(h){const{t:m,tm:l}=P.useI18n(),_=F(),g=J(),o=T("utils"),s=k({estimate_convert_action:null});o.mergeSettings(s,{..._.selectedCompanySettings}),E(()=>g.config.estimate_convert_action.map(t=>(t.title=m(t.key),t)));async function i(){let t={settings:{...s}};return await _.updateCompanySettings({data:t,message:"settings.customization.estimates.estimate_settings_updated"}),!0}return(t,c)=>{const a=d("BaseRadio"),n=d("BaseInputGroup");return S(),C(G,null,[r("h6",We,f(t.$t("settings.customization.estimates.convert_estimate_options")),1),r("p",Ze,f(t.$t("settings.customization.estimates.convert_estimate_description")),1),e(n,{required:""},{default:u(()=>[e(a,{id:"no_action",modelValue:s.estimate_convert_action,"onUpdate:modelValue":[c[0]||(c[0]=p=>s.estimate_convert_action=p),i],label:t.$t("settings.customization.estimates.no_action"),size:"sm",name:"filter",value:"no_action",class:"mt-2"},null,8,["modelValue","label"]),e(a,{id:"delete_estimate",modelValue:s.estimate_convert_action,"onUpdate:modelValue":[c[1]||(c[1]=p=>s.estimate_convert_action=p),i],label:t.$t("settings.customization.estimates.delete_estimate"),size:"sm",name:"filter",value:"delete_estimate",class:"my-2"},null,8,["modelValue","label"]),e(a,{id:"mark_estimate_as_accepted",modelValue:s.estimate_convert_action,"onUpdate:modelValue":[c[2]||(c[2]=p=>s.estimate_convert_action=p),i],label:t.$t("settings.customization.estimates.mark_estimate_as_accepted"),size:"sm",name:"filter",value:"mark_estimate_as_accepted"},null,8,["modelValue","label"])]),_:1})],64)}}},tt={class:"divide-y divide-gray-200"},st={__name:"EstimatesTab",setup(h){const m=T("utils"),l=F(),_=k({estimate_email_attachment:null});m.mergeSettings(_,{...l.selectedCompanySettings});const g=E({get:()=>_.estimate_email_attachment==="YES",set:async o=>{const s=o?"YES":"NO";let i={settings:{estimate_email_attachment:s}};_.estimate_email_attachment=s,await l.updateCompanySettings({data:i,message:"general.setting_updated"})}});return(o,s)=>{const i=d("BaseDivider"),t=d("BaseSwitchSection");return S(),C(G,null,[e(Ye),e(i,{class:"my-8"}),e(He),e(i,{class:"my-8"}),e(et),e(i,{class:"my-8"}),e(Xe),e(i,{class:"mt-6 mb-2"}),r("ul",tt,[e(t,{modelValue:g.value,"onUpdate:modelValue":s[0]||(s[0]=c=>g.value=c),title:o.$t("settings.customization.estimates.estimate_email_attachment"),description:o.$t("settings.customization.estimates.estimate_email_attachment_setting_description")},null,8,["modelValue","title","description"])])],64)}}},at={__name:"PaymentsTabPaymentNumber",setup(h){const m=pe();return(l,_)=>(S(),U(K,{type:"payment","type-store":b(m),"default-series":"PAY"},null,8,["type-store"]))}},nt={class:"text-gray-900 text-lg font-medium"},it={class:"mt-1 text-sm text-gray-500 mb-2"},ot={__name:"PaymentsTabDefaultFormats",setup(h){const m=F(),l=T("utils"),_=z(["customer","customerCustom","company","payment","paymentCustom"]),g=z(["billing","customer","customerCustom","paymentCustom"]),o=z(["company","paymentCustom"]);let s=z(!1);const i=k({payment_mail_body:null,payment_company_address_format:null,payment_from_customer_address_format:null});l.mergeSettings(i,{...m.selectedCompanySettings});async function t(){s.value=!0;let c={settings:{...i}};return await m.updateCompanySettings({data:c,message:"settings.customization.payments.payment_settings_updated"}),s.value=!1,!0}return(c,a)=>{const n=d("BaseCustomInput"),p=d("BaseInputGroup"),$=d("BaseIcon"),w=d("BaseButton");return S(),C("form",{onSubmit:L(t,["prevent"])},[r("h6",nt,f(c.$t("settings.customization.payments.default_formats")),1),r("p",it,f(c.$t("settings.customization.payments.default_formats_description")),1),e(p,{label:c.$t("settings.customization.payments.default_payment_email_body"),class:"mt-6 mb-4"},{default:u(()=>[e(n,{modelValue:i.payment_mail_body,"onUpdate:modelValue":a[0]||(a[0]=B=>i.payment_mail_body=B),fields:_.value},null,8,["modelValue","fields"])]),_:1},8,["label"]),e(p,{label:c.$t("settings.customization.payments.company_address_format"),class:"mt-6 mb-4"},{default:u(()=>[e(n,{modelValue:i.payment_company_address_format,"onUpdate:modelValue":a[1]||(a[1]=B=>i.payment_company_address_format=B),fields:o.value},null,8,["modelValue","fields"])]),_:1},8,["label"]),e(p,{label:c.$t("settings.customization.payments.from_customer_address_format"),class:"mt-6 mb-4"},{default:u(()=>[e(n,{modelValue:i.payment_from_customer_address_format,"onUpdate:modelValue":a[2]||(a[2]=B=>i.payment_from_customer_address_format=B),fields:g.value},null,8,["modelValue","fields"])]),_:1},8,["label"]),e(w,{loading:b(s),disabled:b(s),variant:"primary",type:"submit",class:"mt-4"},{left:u(B=>[b(s)?R("",!0):(S(),U($,{key:0,class:M(B.class),name:"SaveIcon"},null,8,["class"]))]),default:u(()=>[D(" "+f(c.$t("settings.customization.save")),1)]),_:1},8,["loading","disabled"])],32)}}},lt={class:"divide-y divide-gray-200"},mt={__name:"PaymentsTab",setup(h){const m=T("utils"),l=F(),_=k({payment_email_attachment:null});m.mergeSettings(_,{...l.selectedCompanySettings});const g=E({get:()=>_.payment_email_attachment==="YES",set:async o=>{const s=o?"YES":"NO";let i={settings:{payment_email_attachment:s}};_.payment_email_attachment=s,await l.updateCompanySettings({data:i,message:"general.setting_updated"})}});return(o,s)=>{const i=d("BaseDivider"),t=d("BaseSwitchSection");return S(),C(G,null,[e(at),e(i,{class:"my-8"}),e(ot),e(i,{class:"mt-6 mb-2"}),r("ul",lt,[e(t,{modelValue:g.value,"onUpdate:modelValue":s[0]||(s[0]=c=>g.value=c),title:o.$t("settings.customization.payments.payment_email_attachment"),description:o.$t("settings.customization.payments.payment_email_attachment_setting_description")},null,8,["modelValue","title","description"])])],64)}}},ut={class:"flex flex-wrap justify-end mt-2 lg:flex-nowrap"},rt={class:"inline-block"},dt={__name:"ItemsTab",setup(h){const{t:m}=P.useI18n(),l=z(null),_=ue(),g=re(),o=de(),s=E(()=>[{key:"name",label:m("settings.customization.items.unit_name"),thClass:"extra",tdClass:"font-medium text-gray-900"},{key:"actions",label:"",tdClass:"text-right text-sm font-medium",sortable:!1}]);async function i({page:n,filter:p,sort:$}){let w={orderByField:$.fieldName||"created_at",orderBy:$.order||"desc",page:n},B=await _.fetchItemUnits(w);return{data:B.data.data,pagination:{totalPages:B.data.meta.last_page,currentPage:n,totalCount:B.data.meta.total,limit:5}}}async function t(){g.openModal({title:m("settings.customization.items.add_item_unit"),componentName:"ItemUnitModal",refreshData:l.value.refresh,size:"sm"})}async function c(n){_.fetchItemUnit(n.data.id),g.openModal({title:m("settings.customization.items.edit_item_unit"),componentName:"ItemUnitModal",id:n.data.id,data:n.data,refreshData:l.value&&l.value.refresh})}function a(n){o.openDialog({title:m("general.are_you_sure"),message:m("settings.customization.items.item_unit_confirm_delete"),yesLabel:m("general.yes"),noLabel:m("general.no"),variant:"danger",hideNoButton:!1,size:"lg"}).then(async p=>{p&&(await _.deleteItemUnit(n.data.id),l.value&&l.value.refresh())})}return(n,p)=>{const $=d("BaseIcon"),w=d("BaseButton"),B=d("BaseDropdownItem"),v=d("BaseDropdown"),x=d("BaseTable");return S(),C(G,null,[e(ge),r("div",ut,[e(w,{variant:"primary-outline",onClick:t},{left:u(N=>[e($,{class:M(N.class),name:"PlusIcon"},null,8,["class"])]),default:u(()=>[D(" "+f(n.$t("settings.customization.items.add_item_unit")),1)]),_:1})]),e(x,{ref_key:"table",ref:l,class:"mt-10",data:i,columns:s.value},{"cell-actions":u(({row:N})=>[e(v,null,{activator:u(()=>[r("div",rt,[e($,{name:"DotsHorizontalIcon",class:"text-gray-500"})])]),default:u(()=>[e(B,{onClick:H=>c(N)},{default:u(()=>[e($,{name:"PencilIcon",class:"w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500"}),D(" "+f(n.$t("general.edit")),1)]),_:2},1032,["onClick"]),e(B,{onClick:H=>a(N)},{default:u(()=>[e($,{name:"TrashIcon",class:"w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500"}),D(" "+f(n.$t("general.delete")),1)]),_:2},1032,["onClick"])]),_:2},1024)]),_:1},8,["columns"])],64)}}},ct={class:"relative"},ft={__name:"CustomizationSetting",setup(h){return(m,l)=>{const _=d("BaseTab"),g=d("BaseTabGroup"),o=d("BaseCard");return S(),C("div",ct,[e(o,{"container-class":"px-4 py-5 sm:px-8 sm:py-2"},{default:u(()=>[e(g,null,{default:u(()=>[e(_,{"tab-panel-container":"py-4 mt-px",title:m.$t("settings.customization.invoices.title")},{default:u(()=>[e(Pe)]),_:1},8,["title"]),e(_,{"tab-panel-container":"py-4 mt-px",title:m.$t("settings.customization.estimates.title")},{default:u(()=>[e(st)]),_:1},8,["title"]),e(_,{"tab-panel-container":"py-4 mt-px",title:m.$t("settings.customization.payments.title")},{default:u(()=>[e(mt)]),_:1},8,["title"]),e(_,{"tab-panel-container":"py-4 mt-px",title:m.$t("settings.customization.items.title")},{default:u(()=>[e(dt)]),_:1},8,["title"])]),_:1})]),_:1})])}}};export{ft as default}; diff --git a/public/build/assets/Dashboard-Yq-8-XxQ.js b/public/build/assets/Dashboard-QOMDegSk.js similarity index 97% rename from public/build/assets/Dashboard-Yq-8-XxQ.js rename to public/build/assets/Dashboard-QOMDegSk.js index 71161ecf..d50b58bb 100644 --- a/public/build/assets/Dashboard-Yq-8-XxQ.js +++ b/public/build/assets/Dashboard-QOMDegSk.js @@ -1 +1 @@ -import{D as L,_ as H,a as M}from"./EstimateIcon-6r_rboPc.js";import{o as m,c as v,J as D,b as r,s as V,Z as S,r as i,m as h,w as s,a as t,a2 as F,t as u,a3 as T,a5 as k,l,p as _,v as z,L as Z,k as $}from"./main-B9dpPbRR.js";import{u as C}from"./global-1F4OAoew.js";import{h as A}from"./auth-6FPSPboo.js";import w from"./BaseTable-ZLDzRGeZ.js";const q=r("circle",{cx:"25",cy:"25",r:"25",fill:"#EAF1FB"},null,-1),N=r("path",{d:"M17.8 17.8C17.1635 17.8 16.5531 18.0529 16.103 18.503C15.6529 18.9531 15.4 19.5635 15.4 20.2V21.4H34.6V20.2C34.6 19.5635 34.3472 18.9531 33.8971 18.503C33.447 18.0529 32.8365 17.8 32.2 17.8H17.8Z",fill:"currentColor"},null,-1),O=r("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M34.6 23.8H15.4V29.8C15.4 30.4366 15.6529 31.047 16.103 31.4971C16.5531 31.9472 17.1635 32.2 17.8 32.2H32.2C32.8365 32.2 33.447 31.9472 33.8971 31.4971C34.3472 31.047 34.6 30.4366 34.6 29.8V23.8ZM17.8 28.6C17.8 28.2818 17.9265 27.9766 18.1515 27.7515C18.3765 27.5265 18.6818 27.4 19 27.4H20.2C20.5183 27.4 20.8235 27.5265 21.0486 27.7515C21.2736 27.9766 21.4 28.2818 21.4 28.6C21.4 28.9183 21.2736 29.2235 21.0486 29.4486C20.8235 29.6736 20.5183 29.8 20.2 29.8H19C18.6818 29.8 18.3765 29.6736 18.1515 29.4486C17.9265 29.2235 17.8 28.9183 17.8 28.6ZM23.8 27.4C23.4818 27.4 23.1765 27.5265 22.9515 27.7515C22.7265 27.9766 22.6 28.2818 22.6 28.6C22.6 28.9183 22.7265 29.2235 22.9515 29.4486C23.1765 29.6736 23.4818 29.8 23.8 29.8H25C25.3183 29.8 25.6235 29.6736 25.8486 29.4486C26.0736 29.2235 26.2 28.9183 26.2 28.6C26.2 28.2818 26.0736 27.9766 25.8486 27.7515C25.6235 27.5265 25.3183 27.4 25 27.4H23.8Z",fill:"currentColor"},null,-1),G=[q,N,O],J={__name:"PaymentIcon",props:{colorClass:{type:String,default:"text-primary-500"}},setup(c){return(a,o)=>(m(),v("svg",{width:"50",height:"50",viewBox:"0 0 50 50",fill:"none",xmlns:"http://www.w3.org/2000/svg",class:D(c.colorClass)},G,2))}},{defineStore:R}=window.pinia,P=R({id:"dashboard",state:()=>({recentInvoices:[],recentEstimates:[],invoiceCount:0,estimateCount:0,paymentCount:0,totalDueAmount:[],isDashboardDataLoaded:!1}),actions:{loadData(c){const a=C();return new Promise((o,d)=>{V.get(`/api/v1/${a.companySlug}/customer/dashboard`,{data:c}).then(e=>{this.totalDueAmount=e.data.due_amount,this.estimateCount=e.data.estimate_count,this.invoiceCount=e.data.invoice_count,this.paymentCount=e.data.payment_count,this.recentInvoices=e.data.recentInvoices,this.recentEstimates=e.data.recentEstimates,a.getDashboardDataLoaded=!0,o(e)}).catch(e=>{A(e),d(e)})})}}}),K={},Q={class:"flex items-center"};function U(c,a){const o=i("BaseContentPlaceholdersText"),d=i("BaseContentPlaceholdersBox"),e=i("BaseContentPlaceholders");return m(),h(e,{rounded:!0,class:"relative flex justify-between w-full p-3 bg-white rounded shadow lg:col-span-3 xl:p-4"},{default:s(()=>[r("div",null,[t(o,{class:"h-5 -mb-1 w-14 xl:mb-6 xl:h-7",lines:1}),t(o,{class:"h-3 w-28 xl:h-4",lines:1})]),r("div",Q,[t(d,{circle:!0,class:"w-10 h-10 xl:w-12 xl:h-12"})])]),_:1})}const W=S(K,[["render",U]]),X={},Y={class:"flex items-center"};function ee(c,a){const o=i("BaseContentPlaceholdersText"),d=i("BaseContentPlaceholdersBox"),e=i("BaseContentPlaceholders");return m(),h(e,{rounded:!0,class:"relative flex justify-between w-full p-3 bg-white rounded shadow lg:col-span-2 xl:p-4"},{default:s(()=>[r("div",null,[t(o,{class:"w-12 h-5 -mb-1 xl:mb-6 xl:h-7",lines:1}),t(o,{class:"w-20 h-3 xl:h-4",lines:1})]),r("div",Y,[t(d,{circle:!0,class:"w-10 h-10 xl:w-12 xl:h-12"})])]),_:1})}const te=S(X,[["render",ee]]),ae={class:"text-xl font-semibold leading-tight text-black xl:text-3xl"},se={class:"block mt-1 text-sm leading-tight text-gray-500 xl:text-lg"},oe={class:"flex items-center"},g={__name:"DashboardStatsItem",props:{iconComponent:{type:Object,required:!0},loading:{type:Boolean,default:!1},route:{type:Object,required:!0},label:{type:String,required:!0},large:{type:Boolean,default:!1}},setup(c){return(a,o)=>{const d=i("router-link");return c.loading?c.large?(m(),h(W,{key:1})):(m(),h(te,{key:2})):(m(),h(d,{key:0,class:D(["relative flex justify-between p-3 bg-white rounded shadow hover:bg-gray-50 xl:p-4 lg:col-span-2",{"lg:!col-span-3":c.large}]),to:c.route},{default:s(()=>[r("div",null,[r("span",ae,[F(a.$slots,"default")]),r("span",se,u(c.label),1)]),r("div",oe,[(m(),h(T(c.iconComponent),{class:"w-10 h-10 xl:w-12 xl:h-12"}))])]),_:3},8,["class","to"]))}}},ne={class:"grid gap-6 sm:grid-cols-2 lg:grid-cols-9 xl:gap-8"},le={__name:"DashboardStats",setup(c){k("utils");const a=C(),o=P();return o.loadData(),(d,e)=>{const f=i("BaseFormatMoney");return m(),v("div",ne,[t(g,{"icon-component":L,loading:!l(a).getDashboardDataLoaded,route:{name:"invoices.dashboard"},large:!0,label:d.$t("dashboard.cards.due_amount")},{default:s(()=>[t(f,{amount:l(o).totalDueAmount,currency:l(a).currency},null,8,["amount","currency"])]),_:1},8,["loading","route","label"]),t(g,{"icon-component":H,loading:!l(a).getDashboardDataLoaded,route:{name:"invoices.dashboard"},label:d.$t("dashboard.cards.invoices")},{default:s(()=>[_(u(l(o).invoiceCount),1)]),_:1},8,["loading","route","label"]),t(g,{"icon-component":M,loading:!l(a).getDashboardDataLoaded,route:{name:"estimates.dashboard"},label:d.$t("dashboard.cards.estimates")},{default:s(()=>[_(u(l(o).estimateCount),1)]),_:1},8,["loading","route","label"]),t(g,{"icon-component":J,loading:!l(a).getDashboardDataLoaded,route:{name:"payments.dashboard"},label:d.$t("dashboard.cards.payments")},{default:s(()=>[_(u(l(o).paymentCount),1)]),_:1},8,["loading","route","label"])])}}},re={class:"grid grid-cols-1 gap-6 mt-10 xl:grid-cols-2"},ce={class:"due-invoices"},de={class:"relative z-10 flex items-center justify-between mb-3"},ie={class:"mb-0 text-xl font-semibold leading-normal"},ue={class:"recent-estimates"},me={class:"relative z-10 flex items-center justify-between mb-3"},_e={class:"mb-0 text-xl font-semibold leading-normal"},he={__name:"DashboardTable",setup(c){const a=C(),o=P(),{tm:d,t:e}=z.useI18n();k("utils"),Z();const f=$(()=>[{key:"formattedDueDate",label:e("dashboard.recent_invoices_card.due_on")},{key:"invoice_number",label:e("invoices.number")},{key:"paid_status",label:e("invoices.status")},{key:"due_amount",label:e("dashboard.recent_invoices_card.amount_due")}]),E=$(()=>[{key:"formattedEstimateDate",label:e("dashboard.recent_estimate_card.date")},{key:"estimate_number",label:e("estimates.number")},{key:"status",label:e("estimates.status")},{key:"total",label:e("dashboard.recent_estimate_card.amount_due")}]);return(b,p)=>{const y=i("BaseButton"),x=i("router-link"),I=i("BasePaidStatusBadge"),B=i("BaseFormatMoney"),j=i("BaseEstimateStatusBadge");return m(),v("div",re,[r("div",ce,[r("div",de,[r("h6",ie,u(b.$t("dashboard.recent_invoices_card.title")),1),t(y,{size:"sm",variant:"primary-outline",onClick:p[0]||(p[0]=n=>b.$router.push({name:"invoices.dashboard"}))},{default:s(()=>[_(u(b.$t("dashboard.recent_invoices_card.view_all")),1)]),_:1})]),t(w,{data:l(o).recentInvoices,columns:f.value,loading:!l(a).getDashboardDataLoaded},{"cell-invoice_number":s(({row:n})=>[t(x,{to:{path:`/${l(a).companySlug}/customer/invoices/${n.data.id}/view`},class:"font-medium text-primary-500"},{default:s(()=>[_(u(n.data.invoice_number),1)]),_:2},1032,["to"])]),"cell-paid_status":s(({row:n})=>[t(I,{status:n.data.paid_status},{default:s(()=>[_(u(n.data.paid_status),1)]),_:2},1032,["status"])]),"cell-due_amount":s(({row:n})=>[t(B,{amount:n.data.due_amount,currency:l(a).currency},null,8,["amount","currency"])]),_:1},8,["data","columns","loading"])]),r("div",ue,[r("div",me,[r("h6",_e,u(b.$t("dashboard.recent_estimate_card.title")),1),t(y,{variant:"primary-outline",size:"sm",onClick:p[1]||(p[1]=n=>b.$router.push({name:"estimates.dashboard"}))},{default:s(()=>[_(u(b.$t("dashboard.recent_estimate_card.view_all")),1)]),_:1})]),t(w,{data:l(o).recentEstimates,columns:E.value,loading:!l(a).getDashboardDataLoaded},{"cell-estimate_number":s(({row:n})=>[t(x,{to:{path:`/${l(a).companySlug}/customer/estimates/${n.data.id}/view`},class:"font-medium text-primary-500"},{default:s(()=>[_(u(n.data.estimate_number),1)]),_:2},1032,["to"])]),"cell-status":s(({row:n})=>[t(j,{status:n.data.status,class:"px-3 py-1"},{default:s(()=>[_(u(n.data.status),1)]),_:2},1032,["status"])]),"cell-total":s(({row:n})=>[t(B,{amount:n.data.total,currency:l(a).currency},null,8,["amount","currency"])]),_:1},8,["data","columns","loading"])])])}}},Ce={__name:"Dashboard",setup(c){return(a,o)=>{const d=i("BasePage");return m(),h(d,null,{default:s(()=>[t(le),t(he)]),_:1})}}};export{Ce as default}; +import{D as L,_ as H,a as M}from"./EstimateIcon-UppoM7L7.js";import{o as m,c as v,J as D,b as r,s as V,Z as S,r as i,m as h,w as s,a as t,a2 as F,t as u,a3 as T,a5 as k,l,p as _,v as z,L as Z,k as $}from"./main-pPEsZPea.js";import{u as C}from"./global-s5lx2XuM.js";import{h as A}from"./auth-mYHkZCAB.js";import w from"./BaseTable-ov5KJ7AA.js";const q=r("circle",{cx:"25",cy:"25",r:"25",fill:"#EAF1FB"},null,-1),N=r("path",{d:"M17.8 17.8C17.1635 17.8 16.5531 18.0529 16.103 18.503C15.6529 18.9531 15.4 19.5635 15.4 20.2V21.4H34.6V20.2C34.6 19.5635 34.3472 18.9531 33.8971 18.503C33.447 18.0529 32.8365 17.8 32.2 17.8H17.8Z",fill:"currentColor"},null,-1),O=r("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M34.6 23.8H15.4V29.8C15.4 30.4366 15.6529 31.047 16.103 31.4971C16.5531 31.9472 17.1635 32.2 17.8 32.2H32.2C32.8365 32.2 33.447 31.9472 33.8971 31.4971C34.3472 31.047 34.6 30.4366 34.6 29.8V23.8ZM17.8 28.6C17.8 28.2818 17.9265 27.9766 18.1515 27.7515C18.3765 27.5265 18.6818 27.4 19 27.4H20.2C20.5183 27.4 20.8235 27.5265 21.0486 27.7515C21.2736 27.9766 21.4 28.2818 21.4 28.6C21.4 28.9183 21.2736 29.2235 21.0486 29.4486C20.8235 29.6736 20.5183 29.8 20.2 29.8H19C18.6818 29.8 18.3765 29.6736 18.1515 29.4486C17.9265 29.2235 17.8 28.9183 17.8 28.6ZM23.8 27.4C23.4818 27.4 23.1765 27.5265 22.9515 27.7515C22.7265 27.9766 22.6 28.2818 22.6 28.6C22.6 28.9183 22.7265 29.2235 22.9515 29.4486C23.1765 29.6736 23.4818 29.8 23.8 29.8H25C25.3183 29.8 25.6235 29.6736 25.8486 29.4486C26.0736 29.2235 26.2 28.9183 26.2 28.6C26.2 28.2818 26.0736 27.9766 25.8486 27.7515C25.6235 27.5265 25.3183 27.4 25 27.4H23.8Z",fill:"currentColor"},null,-1),G=[q,N,O],J={__name:"PaymentIcon",props:{colorClass:{type:String,default:"text-primary-500"}},setup(c){return(a,o)=>(m(),v("svg",{width:"50",height:"50",viewBox:"0 0 50 50",fill:"none",xmlns:"http://www.w3.org/2000/svg",class:D(c.colorClass)},G,2))}},{defineStore:R}=window.pinia,P=R({id:"dashboard",state:()=>({recentInvoices:[],recentEstimates:[],invoiceCount:0,estimateCount:0,paymentCount:0,totalDueAmount:[],isDashboardDataLoaded:!1}),actions:{loadData(c){const a=C();return new Promise((o,d)=>{V.get(`/api/v1/${a.companySlug}/customer/dashboard`,{data:c}).then(e=>{this.totalDueAmount=e.data.due_amount,this.estimateCount=e.data.estimate_count,this.invoiceCount=e.data.invoice_count,this.paymentCount=e.data.payment_count,this.recentInvoices=e.data.recentInvoices,this.recentEstimates=e.data.recentEstimates,a.getDashboardDataLoaded=!0,o(e)}).catch(e=>{A(e),d(e)})})}}}),K={},Q={class:"flex items-center"};function U(c,a){const o=i("BaseContentPlaceholdersText"),d=i("BaseContentPlaceholdersBox"),e=i("BaseContentPlaceholders");return m(),h(e,{rounded:!0,class:"relative flex justify-between w-full p-3 bg-white rounded shadow lg:col-span-3 xl:p-4"},{default:s(()=>[r("div",null,[t(o,{class:"h-5 -mb-1 w-14 xl:mb-6 xl:h-7",lines:1}),t(o,{class:"h-3 w-28 xl:h-4",lines:1})]),r("div",Q,[t(d,{circle:!0,class:"w-10 h-10 xl:w-12 xl:h-12"})])]),_:1})}const W=S(K,[["render",U]]),X={},Y={class:"flex items-center"};function ee(c,a){const o=i("BaseContentPlaceholdersText"),d=i("BaseContentPlaceholdersBox"),e=i("BaseContentPlaceholders");return m(),h(e,{rounded:!0,class:"relative flex justify-between w-full p-3 bg-white rounded shadow lg:col-span-2 xl:p-4"},{default:s(()=>[r("div",null,[t(o,{class:"w-12 h-5 -mb-1 xl:mb-6 xl:h-7",lines:1}),t(o,{class:"w-20 h-3 xl:h-4",lines:1})]),r("div",Y,[t(d,{circle:!0,class:"w-10 h-10 xl:w-12 xl:h-12"})])]),_:1})}const te=S(X,[["render",ee]]),ae={class:"text-xl font-semibold leading-tight text-black xl:text-3xl"},se={class:"block mt-1 text-sm leading-tight text-gray-500 xl:text-lg"},oe={class:"flex items-center"},g={__name:"DashboardStatsItem",props:{iconComponent:{type:Object,required:!0},loading:{type:Boolean,default:!1},route:{type:Object,required:!0},label:{type:String,required:!0},large:{type:Boolean,default:!1}},setup(c){return(a,o)=>{const d=i("router-link");return c.loading?c.large?(m(),h(W,{key:1})):(m(),h(te,{key:2})):(m(),h(d,{key:0,class:D(["relative flex justify-between p-3 bg-white rounded shadow hover:bg-gray-50 xl:p-4 lg:col-span-2",{"lg:!col-span-3":c.large}]),to:c.route},{default:s(()=>[r("div",null,[r("span",ae,[F(a.$slots,"default")]),r("span",se,u(c.label),1)]),r("div",oe,[(m(),h(T(c.iconComponent),{class:"w-10 h-10 xl:w-12 xl:h-12"}))])]),_:3},8,["class","to"]))}}},ne={class:"grid gap-6 sm:grid-cols-2 lg:grid-cols-9 xl:gap-8"},le={__name:"DashboardStats",setup(c){k("utils");const a=C(),o=P();return o.loadData(),(d,e)=>{const f=i("BaseFormatMoney");return m(),v("div",ne,[t(g,{"icon-component":L,loading:!l(a).getDashboardDataLoaded,route:{name:"invoices.dashboard"},large:!0,label:d.$t("dashboard.cards.due_amount")},{default:s(()=>[t(f,{amount:l(o).totalDueAmount,currency:l(a).currency},null,8,["amount","currency"])]),_:1},8,["loading","route","label"]),t(g,{"icon-component":H,loading:!l(a).getDashboardDataLoaded,route:{name:"invoices.dashboard"},label:d.$t("dashboard.cards.invoices")},{default:s(()=>[_(u(l(o).invoiceCount),1)]),_:1},8,["loading","route","label"]),t(g,{"icon-component":M,loading:!l(a).getDashboardDataLoaded,route:{name:"estimates.dashboard"},label:d.$t("dashboard.cards.estimates")},{default:s(()=>[_(u(l(o).estimateCount),1)]),_:1},8,["loading","route","label"]),t(g,{"icon-component":J,loading:!l(a).getDashboardDataLoaded,route:{name:"payments.dashboard"},label:d.$t("dashboard.cards.payments")},{default:s(()=>[_(u(l(o).paymentCount),1)]),_:1},8,["loading","route","label"])])}}},re={class:"grid grid-cols-1 gap-6 mt-10 xl:grid-cols-2"},ce={class:"due-invoices"},de={class:"relative z-10 flex items-center justify-between mb-3"},ie={class:"mb-0 text-xl font-semibold leading-normal"},ue={class:"recent-estimates"},me={class:"relative z-10 flex items-center justify-between mb-3"},_e={class:"mb-0 text-xl font-semibold leading-normal"},he={__name:"DashboardTable",setup(c){const a=C(),o=P(),{tm:d,t:e}=z.useI18n();k("utils"),Z();const f=$(()=>[{key:"formattedDueDate",label:e("dashboard.recent_invoices_card.due_on")},{key:"invoice_number",label:e("invoices.number")},{key:"paid_status",label:e("invoices.status")},{key:"due_amount",label:e("dashboard.recent_invoices_card.amount_due")}]),E=$(()=>[{key:"formattedEstimateDate",label:e("dashboard.recent_estimate_card.date")},{key:"estimate_number",label:e("estimates.number")},{key:"status",label:e("estimates.status")},{key:"total",label:e("dashboard.recent_estimate_card.amount_due")}]);return(b,p)=>{const y=i("BaseButton"),x=i("router-link"),I=i("BasePaidStatusBadge"),B=i("BaseFormatMoney"),j=i("BaseEstimateStatusBadge");return m(),v("div",re,[r("div",ce,[r("div",de,[r("h6",ie,u(b.$t("dashboard.recent_invoices_card.title")),1),t(y,{size:"sm",variant:"primary-outline",onClick:p[0]||(p[0]=n=>b.$router.push({name:"invoices.dashboard"}))},{default:s(()=>[_(u(b.$t("dashboard.recent_invoices_card.view_all")),1)]),_:1})]),t(w,{data:l(o).recentInvoices,columns:f.value,loading:!l(a).getDashboardDataLoaded},{"cell-invoice_number":s(({row:n})=>[t(x,{to:{path:`/${l(a).companySlug}/customer/invoices/${n.data.id}/view`},class:"font-medium text-primary-500"},{default:s(()=>[_(u(n.data.invoice_number),1)]),_:2},1032,["to"])]),"cell-paid_status":s(({row:n})=>[t(I,{status:n.data.paid_status},{default:s(()=>[_(u(n.data.paid_status),1)]),_:2},1032,["status"])]),"cell-due_amount":s(({row:n})=>[t(B,{amount:n.data.due_amount,currency:l(a).currency},null,8,["amount","currency"])]),_:1},8,["data","columns","loading"])]),r("div",ue,[r("div",me,[r("h6",_e,u(b.$t("dashboard.recent_estimate_card.title")),1),t(y,{variant:"primary-outline",size:"sm",onClick:p[1]||(p[1]=n=>b.$router.push({name:"estimates.dashboard"}))},{default:s(()=>[_(u(b.$t("dashboard.recent_estimate_card.view_all")),1)]),_:1})]),t(w,{data:l(o).recentEstimates,columns:E.value,loading:!l(a).getDashboardDataLoaded},{"cell-estimate_number":s(({row:n})=>[t(x,{to:{path:`/${l(a).companySlug}/customer/estimates/${n.data.id}/view`},class:"font-medium text-primary-500"},{default:s(()=>[_(u(n.data.estimate_number),1)]),_:2},1032,["to"])]),"cell-status":s(({row:n})=>[t(j,{status:n.data.status,class:"px-3 py-1"},{default:s(()=>[_(u(n.data.status),1)]),_:2},1032,["status"])]),"cell-total":s(({row:n})=>[t(B,{amount:n.data.total,currency:l(a).currency},null,8,["amount","currency"])]),_:1},8,["data","columns","loading"])])])}}},Ce={__name:"Dashboard",setup(c){return(a,o)=>{const d=i("BasePage");return m(),h(d,null,{default:s(()=>[t(le),t(he)]),_:1})}}};export{Ce as default}; diff --git a/public/build/assets/Dashboard-sZcX62iF.js b/public/build/assets/Dashboard-cG8xRFOU.js similarity index 97% rename from public/build/assets/Dashboard-sZcX62iF.js rename to public/build/assets/Dashboard-cG8xRFOU.js index ea06e0c2..daebbed4 100644 --- a/public/build/assets/Dashboard-sZcX62iF.js +++ b/public/build/assets/Dashboard-cG8xRFOU.js @@ -1 +1 @@ -import{D as L,_ as F,a as R}from"./EstimateIcon-6r_rboPc.js";import{o as c,c as C,J as j,b as t,Z as T,r as i,m as p,w as r,a,a2 as W,t as h,a3 as z,a4 as q,s as H,a1 as U,a5 as N,E as O,M as B,l as e,Q as m,K as v,p as y,f as E,z as Z,v as Y,k as V,a6 as M,L as J,e as K,Y as Q}from"./main-B9dpPbRR.js";import{_ as G}from"./LineChart-wDTzU--w.js";import{_ as X}from"./InvoiceIndexDropdown-bkaK7_Us.js";import{_ as tt}from"./EstimateIndexDropdown-R-OPRBvb.js";const et=t("circle",{cx:"25",cy:"25",r:"25",fill:"#EAF1FB"},null,-1),at=t("path",{d:"M28.2656 23.0547C27.3021 24.0182 26.1302 24.5 24.75 24.5C23.3698 24.5 22.1849 24.0182 21.1953 23.0547C20.2318 22.0651 19.75 20.8802 19.75 19.5C19.75 18.1198 20.2318 16.9479 21.1953 15.9844C22.1849 14.9948 23.3698 14.5 24.75 14.5C26.1302 14.5 27.3021 14.9948 28.2656 15.9844C29.2552 16.9479 29.75 18.1198 29.75 19.5C29.75 20.8802 29.2552 22.0651 28.2656 23.0547ZM28.2656 25.75C29.6979 25.75 30.9219 26.2708 31.9375 27.3125C32.9792 28.3281 33.5 29.5521 33.5 30.9844V32.625C33.5 33.1458 33.3177 33.5885 32.9531 33.9531C32.5885 34.3177 32.1458 34.5 31.625 34.5H17.875C17.3542 34.5 16.9115 34.3177 16.5469 33.9531C16.1823 33.5885 16 33.1458 16 32.625V30.9844C16 29.5521 16.5078 28.3281 17.5234 27.3125C18.5651 26.2708 19.8021 25.75 21.2344 25.75H21.8984C22.8099 26.1667 23.7604 26.375 24.75 26.375C25.7396 26.375 26.6901 26.1667 27.6016 25.75H28.2656Z",fill:"currentColor"},null,-1),st=[et,at],ot={__name:"CustomerIcon",props:{colorClass:{type:String,default:"text-primary-500"}},setup(d){return(o,s)=>(c(),C("svg",{width:"50",height:"50",viewBox:"0 0 50 50",class:j(d.colorClass),fill:"none",xmlns:"http://www.w3.org/2000/svg"},st,2))}},lt={},nt={class:"flex items-center"};function ct(d,o){const s=i("BaseContentPlaceholdersText"),n=i("BaseContentPlaceholdersBox"),u=i("BaseContentPlaceholders");return c(),p(u,{rounded:!0,class:"relative flex justify-between w-full p-3 bg-white rounded shadow lg:col-span-3 xl:p-4"},{default:r(()=>[t("div",null,[a(s,{class:"h-5 -mb-1 w-14 xl:mb-6 xl:h-7",lines:1}),a(s,{class:"h-3 w-28 xl:h-4",lines:1})]),t("div",nt,[a(n,{circle:!0,class:"w-10 h-10 xl:w-12 xl:h-12"})])]),_:1})}const rt=T(lt,[["render",ct]]),it={},dt={class:"flex items-center"};function ut(d,o){const s=i("BaseContentPlaceholdersText"),n=i("BaseContentPlaceholdersBox"),u=i("BaseContentPlaceholders");return c(),p(u,{rounded:!0,class:"relative flex justify-between w-full p-3 bg-white rounded shadow lg:col-span-2 xl:p-4"},{default:r(()=>[t("div",null,[a(s,{class:"w-12 h-5 -mb-1 xl:mb-6 xl:h-7",lines:1}),a(s,{class:"w-20 h-3 xl:h-4",lines:1})]),t("div",dt,[a(n,{circle:!0,class:"w-10 h-10 xl:w-12 xl:h-12"})])]),_:1})}const _t=T(it,[["render",ut]]),mt={class:"text-xl font-semibold leading-tight text-black xl:text-3xl"},ht={class:"block mt-1 text-sm leading-tight text-gray-500 xl:text-lg"},pt={class:"flex items-center"},$={__name:"DashboardStatsItem",props:{iconComponent:{type:Object,required:!0},loading:{type:Boolean,default:!1},route:{type:String,required:!0},label:{type:String,required:!0},large:{type:Boolean,default:!1}},setup(d){return(o,s)=>{const n=i("router-link");return d.loading?d.large?(c(),p(rt,{key:1})):(c(),p(_t,{key:2})):(c(),p(n,{key:0,class:j(["relative flex justify-between p-3 bg-white rounded shadow hover:bg-gray-50 xl:p-4 lg:col-span-2",{"lg:!col-span-3":d.large}]),to:d.route},{default:r(()=>[t("div",null,[t("span",mt,[W(o.$slots,"default")]),t("span",ht,h(d.label),1)]),t("div",pt,[(c(),p(z(d.iconComponent),{class:"w-10 h-10 xl:w-12 xl:h-12"}))])]),_:3},8,["class","to"]))}}},S=(d=!1)=>(d?window.pinia.defineStore:q)({id:"dashboard",state:()=>({stats:{totalAmountDue:0,totalCustomerCount:0,totalInvoiceCount:0,totalEstimateCount:0},chartData:{months:[],invoiceTotals:[],expenseTotals:[],receiptTotals:[],netIncomeTotals:[]},totalSales:null,totalReceipts:null,totalExpenses:null,totalNetIncome:null,recentDueInvoices:[],recentEstimates:[],isDashboardDataLoaded:!1}),actions:{loadData(s){return new Promise((n,u)=>{H.get("/api/v1/dashboard",{params:s}).then(l=>{this.stats.totalAmountDue=l.data.total_amount_due,this.stats.totalCustomerCount=l.data.total_customer_count,this.stats.totalInvoiceCount=l.data.total_invoice_count,this.stats.totalEstimateCount=l.data.total_estimate_count,this.chartData&&l.data.chart_data&&(this.chartData.months=l.data.chart_data.months,this.chartData.invoiceTotals=l.data.chart_data.invoice_totals,this.chartData.expenseTotals=l.data.chart_data.expense_totals,this.chartData.receiptTotals=l.data.chart_data.receipt_totals,this.chartData.netIncomeTotals=l.data.chart_data.net_income_totals),this.totalSales=l.data.total_sales,this.totalReceipts=l.data.total_receipts,this.totalExpenses=l.data.total_expenses,this.totalNetIncome=l.data.total_net_income,this.recentDueInvoices=l.data.recent_due_invoices,this.recentEstimates=l.data.recent_estimates,this.isDashboardDataLoaded=!0,n(l)}).catch(l=>{U(l),u(l)})})}}})(),bt={class:"grid gap-6 sm:grid-cols-2 lg:grid-cols-9 xl:gap-8"},xt={__name:"DashboardStats",setup(d){N("utils");const o=S(),s=O(),n=B();return(u,l)=>{const f=i("BaseFormatMoney");return c(),C("div",bt,[e(n).hasAbilities(e(m).VIEW_INVOICE)?(c(),p($,{key:0,"icon-component":L,loading:!e(o).isDashboardDataLoaded,route:"/admin/invoices",large:!0,label:u.$t("dashboard.cards.due_amount")},{default:r(()=>[a(f,{amount:e(o).stats.totalAmountDue,currency:e(s).selectedCompanyCurrency},null,8,["amount","currency"])]),_:1},8,["loading","label"])):v("",!0),e(n).hasAbilities(e(m).VIEW_CUSTOMER)?(c(),p($,{key:1,"icon-component":ot,loading:!e(o).isDashboardDataLoaded,route:"/admin/customers",label:u.$t("dashboard.cards.customers")},{default:r(()=>[y(h(e(o).stats.totalCustomerCount),1)]),_:1},8,["loading","label"])):v("",!0),e(n).hasAbilities(e(m).VIEW_INVOICE)?(c(),p($,{key:2,"icon-component":F,loading:!e(o).isDashboardDataLoaded,route:"/admin/invoices",label:u.$t("dashboard.cards.invoices")},{default:r(()=>[y(h(e(o).stats.totalInvoiceCount),1)]),_:1},8,["loading","label"])):v("",!0),e(n).hasAbilities(e(m).VIEW_ESTIMATE)?(c(),p($,{key:3,"icon-component":R,loading:!e(o).isDashboardDataLoaded,route:"/admin/estimates",label:u.$t("dashboard.cards.estimates")},{default:r(()=>[y(h(e(o).stats.totalEstimateCount),1)]),_:1},8,["loading","label"])):v("",!0)])}}},ft={},gt={class:"grid grid-cols-1 col-span-10 px-4 py-5 lg:col-span-7 xl:col-span-8 sm:p-8"},yt={class:"flex items-center justify-between mb-2 xl:mb-4"},Ct={class:"grid grid-cols-3 col-span-10 text-center border-t border-l border-gray-200 border-solid lg:border-t-0 lg:text-right lg:col-span-3 xl:col-span-2 lg:grid-cols-1"},vt={class:"flex flex-col items-center justify-center p-6 lg:justify-end lg:items-end"},wt={class:"flex flex-col items-center justify-center p-6 lg:justify-end lg:items-end"},Dt={class:"flex flex-col items-center justify-center p-6 lg:justify-end lg:items-end"},$t={class:"flex flex-col items-center justify-center col-span-3 p-6 border-t border-gray-200 border-solid lg:justify-end lg:items-end lg:col-span-1"};function Et(d,o){const s=i("BaseContentPlaceholdersText"),n=i("BaseContentPlaceholdersBox"),u=i("BaseContentPlaceholders");return c(),p(u,{class:"grid grid-cols-10 mt-8 bg-white rounded shadow"},{default:r(()=>[t("div",gt,[t("div",yt,[a(s,{class:"h-10 w-36",lines:1}),a(s,{class:"h-10 w-36 !mt-0",lines:1})]),a(n,{class:"h-80 xl:h-72 sm:w-full"})]),t("div",Ct,[t("div",vt,[a(s,{class:"h-3 w-14 xl:h-4",lines:1}),a(s,{class:"w-20 h-5 xl:h-6",lines:1})]),t("div",wt,[a(s,{class:"h-3 w-14 xl:h-4",lines:1}),a(s,{class:"w-20 h-5 xl:h-6",lines:1})]),t("div",Dt,[a(s,{class:"h-3 w-14 xl:h-4",lines:1}),a(s,{class:"w-20 h-5 xl:h-6",lines:1})]),t("div",$t,[a(s,{class:"h-3 w-14 xl:h-4",lines:1}),a(s,{class:"w-20 h-5 xl:h-6",lines:1})])])]),_:1})}const Bt=T(ft,[["render",Et]]),It={key:0,class:"grid grid-cols-10 mt-8 bg-white rounded shadow"},Tt={class:"grid grid-cols-1 col-span-10 px-4 py-5 lg:col-span-7 xl:col-span-8 sm:p-6"},St={class:"flex justify-between mt-1 mb-4 flex-col md:flex-row"},kt={class:"flex items-center sw-section-title h-10"},At={class:"w-full my-2 md:m-0 md:w-40 h-10"},Pt={class:"grid grid-cols-3 col-span-10 text-center border-t border-l border-gray-200 border-solid lg:border-t-0 lg:text-right lg:col-span-3 xl:col-span-2 lg:grid-cols-1"},Vt={class:"p-6"},Mt={class:"text-xs leading-5 lg:text-sm"},jt=t("br",null,null,-1),Nt={class:"block mt-1 text-xl font-semibold leading-8 lg:text-2xl"},Ot={class:"p-6"},Lt={class:"text-xs leading-5 lg:text-sm"},Ft=t("br",null,null,-1),Rt={class:"block mt-1 text-xl font-semibold leading-8 lg:text-2xl text-green-400"},Wt={class:"p-6"},zt={class:"text-xs leading-5 lg:text-sm"},qt=t("br",null,null,-1),Ht={class:"block mt-1 text-xl font-semibold leading-8 lg:text-2xl text-red-400"},Ut={class:"col-span-3 p-6 border-t border-gray-200 border-solid lg:col-span-1"},Zt={class:"text-xs leading-5 lg:text-sm"},Yt=t("br",null,null,-1),Jt={class:"block mt-1 text-xl font-semibold leading-8 lg:text-2xl text-primary-500"},Kt={__name:"DashboardChart",setup(d){const o=S(),s=O();N("utils");const n=B(),u=E(["This year","Previous year"]),l=E("This year");Z(l,b=>{b==="Previous year"?f({previous_year:!0}):f()},{immediate:!0});async function f(b){n.hasAbilities(m.DASHBOARD)&&await o.loadData(b)}return(b,w)=>{const I=i("BaseIcon"),g=i("BaseMultiselect"),x=i("BaseFormatMoney");return c(),C("div",null,[e(o).isDashboardDataLoaded?(c(),C("div",It,[t("div",Tt,[t("div",St,[t("h6",kt,[a(I,{name:"ChartSquareBarIcon",class:"text-primary-400 mr-1"}),y(" "+h(b.$t("dashboard.monthly_chart.title")),1)]),t("div",At,[a(g,{modelValue:l.value,"onUpdate:modelValue":w[0]||(w[0]=D=>l.value=D),options:u.value,"allow-empty":!1,"show-labels":!1,placeholder:b.$t("dashboard.select_year"),"can-deselect":!1},null,8,["modelValue","options","placeholder"])])]),a(G,{invoices:e(o).chartData.invoiceTotals,expenses:e(o).chartData.expenseTotals,receipts:e(o).chartData.receiptTotals,income:e(o).chartData.netIncomeTotals,labels:e(o).chartData.months,class:"sm:w-full"},null,8,["invoices","expenses","receipts","income","labels"])]),t("div",Pt,[t("div",Vt,[t("span",Mt,h(b.$t("dashboard.chart_info.total_sales")),1),jt,t("span",Nt,[a(x,{amount:e(o).totalSales,currency:e(s).selectedCompanyCurrency},null,8,["amount","currency"])])]),t("div",Ot,[t("span",Lt,h(b.$t("dashboard.chart_info.total_receipts")),1),Ft,t("span",Rt,[a(x,{amount:e(o).totalReceipts,currency:e(s).selectedCompanyCurrency},null,8,["amount","currency"])])]),t("div",Wt,[t("span",zt,h(b.$t("dashboard.chart_info.total_expense")),1),qt,t("span",Ht,[a(x,{amount:e(o).totalExpenses,currency:e(s).selectedCompanyCurrency},null,8,["amount","currency"])])]),t("div",Ut,[t("span",Zt,h(b.$t("dashboard.chart_info.net_income")),1),Yt,t("span",Jt,[a(x,{amount:e(o).totalNetIncome,currency:e(s).selectedCompanyCurrency},null,8,["amount","currency"])])])])])):(c(),p(Bt,{key:1}))])}}},Qt={class:"grid grid-cols-1 gap-6 mt-10 xl:grid-cols-2"},Gt={key:0,class:"due-invoices"},Xt={class:"relative z-10 flex items-center justify-between mb-3"},te={class:"mb-0 text-xl font-semibold leading-normal"},ee={key:1,class:"recent-estimates"},ae={class:"relative z-10 flex items-center justify-between mb-3"},se={class:"mb-0 text-xl font-semibold leading-normal"},oe={__name:"DashboardTable",setup(d){const o=S(),{t:s}=Y.useI18n(),n=B(),u=E(null),l=E(null),f=V(()=>[{key:"formattedDueDate",label:s("dashboard.recent_invoices_card.due_on")},{key:"user",label:s("dashboard.recent_invoices_card.customer")},{key:"due_amount",label:s("dashboard.recent_invoices_card.amount_due")},{key:"actions",tdClass:"text-right text-sm font-medium pl-0",thClass:"text-right pl-0",sortable:!1}]),b=V(()=>[{key:"formattedEstimateDate",label:s("dashboard.recent_estimate_card.date")},{key:"user",label:s("dashboard.recent_estimate_card.customer")},{key:"total",label:s("dashboard.recent_estimate_card.amount_due")},{key:"actions",tdClass:"text-right text-sm font-medium pl-0",thClass:"text-right pl-0",sortable:!1}]);function w(){return n.hasAbilities([m.DELETE_INVOICE,m.EDIT_INVOICE,m.VIEW_INVOICE,m.SEND_INVOICE])}function I(){return n.hasAbilities([m.CREATE_ESTIMATE,m.EDIT_ESTIMATE,m.VIEW_ESTIMATE,m.SEND_ESTIMATE])}return(g,x)=>{const D=i("BaseButton"),k=i("router-link"),A=i("BaseFormatMoney"),P=i("BaseTable");return c(),C("div",null,[t("div",Qt,[e(n).hasAbilities(e(m).VIEW_INVOICE)?(c(),C("div",Gt,[t("div",Xt,[t("h6",te,h(g.$t("dashboard.recent_invoices_card.title")),1),a(D,{size:"sm",variant:"primary-outline",onClick:x[0]||(x[0]=_=>g.$router.push("/admin/invoices"))},{default:r(()=>[y(h(g.$t("dashboard.recent_invoices_card.view_all")),1)]),_:1})]),a(P,{data:e(o).recentDueInvoices,columns:f.value,loading:!e(o).isDashboardDataLoaded},M({"cell-user":r(({row:_})=>[a(k,{to:{path:`invoices/${_.data.id}/view`},class:"font-medium text-primary-500"},{default:r(()=>[y(h(_.data.customer.name),1)]),_:2},1032,["to"])]),"cell-due_amount":r(({row:_})=>[a(A,{amount:_.data.due_amount,currency:_.data.customer.currency},null,8,["amount","currency"])]),_:2},[w()?{name:"cell-actions",fn:r(({row:_})=>[a(X,{row:_.data,table:u.value},null,8,["row","table"])]),key:"0"}:void 0]),1032,["data","columns","loading"])])):v("",!0),e(n).hasAbilities(e(m).VIEW_ESTIMATE)?(c(),C("div",ee,[t("div",ae,[t("h6",se,h(g.$t("dashboard.recent_estimate_card.title")),1),a(D,{variant:"primary-outline",size:"sm",onClick:x[1]||(x[1]=_=>g.$router.push("/admin/estimates"))},{default:r(()=>[y(h(g.$t("dashboard.recent_estimate_card.view_all")),1)]),_:1})]),a(P,{data:e(o).recentEstimates,columns:b.value,loading:!e(o).isDashboardDataLoaded},M({"cell-user":r(({row:_})=>[a(k,{to:{path:`estimates/${_.data.id}/view`},class:"font-medium text-primary-500"},{default:r(()=>[y(h(_.data.customer.name),1)]),_:2},1032,["to"])]),"cell-total":r(({row:_})=>[a(A,{amount:_.data.total,currency:_.data.customer.currency},null,8,["amount","currency"])]),_:2},[I()?{name:"cell-actions",fn:r(({row:_})=>[a(tt,{row:_,table:l.value},null,8,["row","table"])]),key:"0"}:void 0]),1032,["data","columns","loading"])])):v("",!0)])])}}},de={__name:"Dashboard",setup(d){const o=J(),s=B(),n=K();return Q(()=>{o.meta.ability&&!s.hasAbilities(o.meta.ability)?n.push({name:"account.settings"}):o.meta.isOwner&&!s.currentUser.is_owner&&n.push({name:"account.settings"})}),(u,l)=>{const f=i("BasePage");return c(),p(f,null,{default:r(()=>[a(xt),a(Kt),a(oe)]),_:1})}}};export{de as default}; +import{D as L,_ as F,a as R}from"./EstimateIcon-UppoM7L7.js";import{o as c,c as C,J as j,b as t,Z as T,r as i,m as p,w as r,a,a2 as W,t as h,a3 as z,a4 as q,s as H,a1 as U,a5 as N,E as O,M as B,l as e,Q as m,K as v,p as y,f as E,z as Z,v as Y,k as V,a6 as M,L as J,e as K,Y as Q}from"./main-pPEsZPea.js";import{_ as G}from"./LineChart-4aRzOagk.js";import{_ as X}from"./InvoiceIndexDropdown-Vtuy_VYF.js";import{_ as tt}from"./EstimateIndexDropdown-q_PQ0HVZ.js";const et=t("circle",{cx:"25",cy:"25",r:"25",fill:"#EAF1FB"},null,-1),at=t("path",{d:"M28.2656 23.0547C27.3021 24.0182 26.1302 24.5 24.75 24.5C23.3698 24.5 22.1849 24.0182 21.1953 23.0547C20.2318 22.0651 19.75 20.8802 19.75 19.5C19.75 18.1198 20.2318 16.9479 21.1953 15.9844C22.1849 14.9948 23.3698 14.5 24.75 14.5C26.1302 14.5 27.3021 14.9948 28.2656 15.9844C29.2552 16.9479 29.75 18.1198 29.75 19.5C29.75 20.8802 29.2552 22.0651 28.2656 23.0547ZM28.2656 25.75C29.6979 25.75 30.9219 26.2708 31.9375 27.3125C32.9792 28.3281 33.5 29.5521 33.5 30.9844V32.625C33.5 33.1458 33.3177 33.5885 32.9531 33.9531C32.5885 34.3177 32.1458 34.5 31.625 34.5H17.875C17.3542 34.5 16.9115 34.3177 16.5469 33.9531C16.1823 33.5885 16 33.1458 16 32.625V30.9844C16 29.5521 16.5078 28.3281 17.5234 27.3125C18.5651 26.2708 19.8021 25.75 21.2344 25.75H21.8984C22.8099 26.1667 23.7604 26.375 24.75 26.375C25.7396 26.375 26.6901 26.1667 27.6016 25.75H28.2656Z",fill:"currentColor"},null,-1),st=[et,at],ot={__name:"CustomerIcon",props:{colorClass:{type:String,default:"text-primary-500"}},setup(d){return(o,s)=>(c(),C("svg",{width:"50",height:"50",viewBox:"0 0 50 50",class:j(d.colorClass),fill:"none",xmlns:"http://www.w3.org/2000/svg"},st,2))}},lt={},nt={class:"flex items-center"};function ct(d,o){const s=i("BaseContentPlaceholdersText"),n=i("BaseContentPlaceholdersBox"),u=i("BaseContentPlaceholders");return c(),p(u,{rounded:!0,class:"relative flex justify-between w-full p-3 bg-white rounded shadow lg:col-span-3 xl:p-4"},{default:r(()=>[t("div",null,[a(s,{class:"h-5 -mb-1 w-14 xl:mb-6 xl:h-7",lines:1}),a(s,{class:"h-3 w-28 xl:h-4",lines:1})]),t("div",nt,[a(n,{circle:!0,class:"w-10 h-10 xl:w-12 xl:h-12"})])]),_:1})}const rt=T(lt,[["render",ct]]),it={},dt={class:"flex items-center"};function ut(d,o){const s=i("BaseContentPlaceholdersText"),n=i("BaseContentPlaceholdersBox"),u=i("BaseContentPlaceholders");return c(),p(u,{rounded:!0,class:"relative flex justify-between w-full p-3 bg-white rounded shadow lg:col-span-2 xl:p-4"},{default:r(()=>[t("div",null,[a(s,{class:"w-12 h-5 -mb-1 xl:mb-6 xl:h-7",lines:1}),a(s,{class:"w-20 h-3 xl:h-4",lines:1})]),t("div",dt,[a(n,{circle:!0,class:"w-10 h-10 xl:w-12 xl:h-12"})])]),_:1})}const _t=T(it,[["render",ut]]),mt={class:"text-xl font-semibold leading-tight text-black xl:text-3xl"},ht={class:"block mt-1 text-sm leading-tight text-gray-500 xl:text-lg"},pt={class:"flex items-center"},$={__name:"DashboardStatsItem",props:{iconComponent:{type:Object,required:!0},loading:{type:Boolean,default:!1},route:{type:String,required:!0},label:{type:String,required:!0},large:{type:Boolean,default:!1}},setup(d){return(o,s)=>{const n=i("router-link");return d.loading?d.large?(c(),p(rt,{key:1})):(c(),p(_t,{key:2})):(c(),p(n,{key:0,class:j(["relative flex justify-between p-3 bg-white rounded shadow hover:bg-gray-50 xl:p-4 lg:col-span-2",{"lg:!col-span-3":d.large}]),to:d.route},{default:r(()=>[t("div",null,[t("span",mt,[W(o.$slots,"default")]),t("span",ht,h(d.label),1)]),t("div",pt,[(c(),p(z(d.iconComponent),{class:"w-10 h-10 xl:w-12 xl:h-12"}))])]),_:3},8,["class","to"]))}}},S=(d=!1)=>(d?window.pinia.defineStore:q)({id:"dashboard",state:()=>({stats:{totalAmountDue:0,totalCustomerCount:0,totalInvoiceCount:0,totalEstimateCount:0},chartData:{months:[],invoiceTotals:[],expenseTotals:[],receiptTotals:[],netIncomeTotals:[]},totalSales:null,totalReceipts:null,totalExpenses:null,totalNetIncome:null,recentDueInvoices:[],recentEstimates:[],isDashboardDataLoaded:!1}),actions:{loadData(s){return new Promise((n,u)=>{H.get("/api/v1/dashboard",{params:s}).then(l=>{this.stats.totalAmountDue=l.data.total_amount_due,this.stats.totalCustomerCount=l.data.total_customer_count,this.stats.totalInvoiceCount=l.data.total_invoice_count,this.stats.totalEstimateCount=l.data.total_estimate_count,this.chartData&&l.data.chart_data&&(this.chartData.months=l.data.chart_data.months,this.chartData.invoiceTotals=l.data.chart_data.invoice_totals,this.chartData.expenseTotals=l.data.chart_data.expense_totals,this.chartData.receiptTotals=l.data.chart_data.receipt_totals,this.chartData.netIncomeTotals=l.data.chart_data.net_income_totals),this.totalSales=l.data.total_sales,this.totalReceipts=l.data.total_receipts,this.totalExpenses=l.data.total_expenses,this.totalNetIncome=l.data.total_net_income,this.recentDueInvoices=l.data.recent_due_invoices,this.recentEstimates=l.data.recent_estimates,this.isDashboardDataLoaded=!0,n(l)}).catch(l=>{U(l),u(l)})})}}})(),bt={class:"grid gap-6 sm:grid-cols-2 lg:grid-cols-9 xl:gap-8"},xt={__name:"DashboardStats",setup(d){N("utils");const o=S(),s=O(),n=B();return(u,l)=>{const f=i("BaseFormatMoney");return c(),C("div",bt,[e(n).hasAbilities(e(m).VIEW_INVOICE)?(c(),p($,{key:0,"icon-component":L,loading:!e(o).isDashboardDataLoaded,route:"/admin/invoices",large:!0,label:u.$t("dashboard.cards.due_amount")},{default:r(()=>[a(f,{amount:e(o).stats.totalAmountDue,currency:e(s).selectedCompanyCurrency},null,8,["amount","currency"])]),_:1},8,["loading","label"])):v("",!0),e(n).hasAbilities(e(m).VIEW_CUSTOMER)?(c(),p($,{key:1,"icon-component":ot,loading:!e(o).isDashboardDataLoaded,route:"/admin/customers",label:u.$t("dashboard.cards.customers")},{default:r(()=>[y(h(e(o).stats.totalCustomerCount),1)]),_:1},8,["loading","label"])):v("",!0),e(n).hasAbilities(e(m).VIEW_INVOICE)?(c(),p($,{key:2,"icon-component":F,loading:!e(o).isDashboardDataLoaded,route:"/admin/invoices",label:u.$t("dashboard.cards.invoices")},{default:r(()=>[y(h(e(o).stats.totalInvoiceCount),1)]),_:1},8,["loading","label"])):v("",!0),e(n).hasAbilities(e(m).VIEW_ESTIMATE)?(c(),p($,{key:3,"icon-component":R,loading:!e(o).isDashboardDataLoaded,route:"/admin/estimates",label:u.$t("dashboard.cards.estimates")},{default:r(()=>[y(h(e(o).stats.totalEstimateCount),1)]),_:1},8,["loading","label"])):v("",!0)])}}},ft={},gt={class:"grid grid-cols-1 col-span-10 px-4 py-5 lg:col-span-7 xl:col-span-8 sm:p-8"},yt={class:"flex items-center justify-between mb-2 xl:mb-4"},Ct={class:"grid grid-cols-3 col-span-10 text-center border-t border-l border-gray-200 border-solid lg:border-t-0 lg:text-right lg:col-span-3 xl:col-span-2 lg:grid-cols-1"},vt={class:"flex flex-col items-center justify-center p-6 lg:justify-end lg:items-end"},wt={class:"flex flex-col items-center justify-center p-6 lg:justify-end lg:items-end"},Dt={class:"flex flex-col items-center justify-center p-6 lg:justify-end lg:items-end"},$t={class:"flex flex-col items-center justify-center col-span-3 p-6 border-t border-gray-200 border-solid lg:justify-end lg:items-end lg:col-span-1"};function Et(d,o){const s=i("BaseContentPlaceholdersText"),n=i("BaseContentPlaceholdersBox"),u=i("BaseContentPlaceholders");return c(),p(u,{class:"grid grid-cols-10 mt-8 bg-white rounded shadow"},{default:r(()=>[t("div",gt,[t("div",yt,[a(s,{class:"h-10 w-36",lines:1}),a(s,{class:"h-10 w-36 !mt-0",lines:1})]),a(n,{class:"h-80 xl:h-72 sm:w-full"})]),t("div",Ct,[t("div",vt,[a(s,{class:"h-3 w-14 xl:h-4",lines:1}),a(s,{class:"w-20 h-5 xl:h-6",lines:1})]),t("div",wt,[a(s,{class:"h-3 w-14 xl:h-4",lines:1}),a(s,{class:"w-20 h-5 xl:h-6",lines:1})]),t("div",Dt,[a(s,{class:"h-3 w-14 xl:h-4",lines:1}),a(s,{class:"w-20 h-5 xl:h-6",lines:1})]),t("div",$t,[a(s,{class:"h-3 w-14 xl:h-4",lines:1}),a(s,{class:"w-20 h-5 xl:h-6",lines:1})])])]),_:1})}const Bt=T(ft,[["render",Et]]),It={key:0,class:"grid grid-cols-10 mt-8 bg-white rounded shadow"},Tt={class:"grid grid-cols-1 col-span-10 px-4 py-5 lg:col-span-7 xl:col-span-8 sm:p-6"},St={class:"flex justify-between mt-1 mb-4 flex-col md:flex-row"},kt={class:"flex items-center sw-section-title h-10"},At={class:"w-full my-2 md:m-0 md:w-40 h-10"},Pt={class:"grid grid-cols-3 col-span-10 text-center border-t border-l border-gray-200 border-solid lg:border-t-0 lg:text-right lg:col-span-3 xl:col-span-2 lg:grid-cols-1"},Vt={class:"p-6"},Mt={class:"text-xs leading-5 lg:text-sm"},jt=t("br",null,null,-1),Nt={class:"block mt-1 text-xl font-semibold leading-8 lg:text-2xl"},Ot={class:"p-6"},Lt={class:"text-xs leading-5 lg:text-sm"},Ft=t("br",null,null,-1),Rt={class:"block mt-1 text-xl font-semibold leading-8 lg:text-2xl text-green-400"},Wt={class:"p-6"},zt={class:"text-xs leading-5 lg:text-sm"},qt=t("br",null,null,-1),Ht={class:"block mt-1 text-xl font-semibold leading-8 lg:text-2xl text-red-400"},Ut={class:"col-span-3 p-6 border-t border-gray-200 border-solid lg:col-span-1"},Zt={class:"text-xs leading-5 lg:text-sm"},Yt=t("br",null,null,-1),Jt={class:"block mt-1 text-xl font-semibold leading-8 lg:text-2xl text-primary-500"},Kt={__name:"DashboardChart",setup(d){const o=S(),s=O();N("utils");const n=B(),u=E(["This year","Previous year"]),l=E("This year");Z(l,b=>{b==="Previous year"?f({previous_year:!0}):f()},{immediate:!0});async function f(b){n.hasAbilities(m.DASHBOARD)&&await o.loadData(b)}return(b,w)=>{const I=i("BaseIcon"),g=i("BaseMultiselect"),x=i("BaseFormatMoney");return c(),C("div",null,[e(o).isDashboardDataLoaded?(c(),C("div",It,[t("div",Tt,[t("div",St,[t("h6",kt,[a(I,{name:"ChartSquareBarIcon",class:"text-primary-400 mr-1"}),y(" "+h(b.$t("dashboard.monthly_chart.title")),1)]),t("div",At,[a(g,{modelValue:l.value,"onUpdate:modelValue":w[0]||(w[0]=D=>l.value=D),options:u.value,"allow-empty":!1,"show-labels":!1,placeholder:b.$t("dashboard.select_year"),"can-deselect":!1},null,8,["modelValue","options","placeholder"])])]),a(G,{invoices:e(o).chartData.invoiceTotals,expenses:e(o).chartData.expenseTotals,receipts:e(o).chartData.receiptTotals,income:e(o).chartData.netIncomeTotals,labels:e(o).chartData.months,class:"sm:w-full"},null,8,["invoices","expenses","receipts","income","labels"])]),t("div",Pt,[t("div",Vt,[t("span",Mt,h(b.$t("dashboard.chart_info.total_sales")),1),jt,t("span",Nt,[a(x,{amount:e(o).totalSales,currency:e(s).selectedCompanyCurrency},null,8,["amount","currency"])])]),t("div",Ot,[t("span",Lt,h(b.$t("dashboard.chart_info.total_receipts")),1),Ft,t("span",Rt,[a(x,{amount:e(o).totalReceipts,currency:e(s).selectedCompanyCurrency},null,8,["amount","currency"])])]),t("div",Wt,[t("span",zt,h(b.$t("dashboard.chart_info.total_expense")),1),qt,t("span",Ht,[a(x,{amount:e(o).totalExpenses,currency:e(s).selectedCompanyCurrency},null,8,["amount","currency"])])]),t("div",Ut,[t("span",Zt,h(b.$t("dashboard.chart_info.net_income")),1),Yt,t("span",Jt,[a(x,{amount:e(o).totalNetIncome,currency:e(s).selectedCompanyCurrency},null,8,["amount","currency"])])])])])):(c(),p(Bt,{key:1}))])}}},Qt={class:"grid grid-cols-1 gap-6 mt-10 xl:grid-cols-2"},Gt={key:0,class:"due-invoices"},Xt={class:"relative z-10 flex items-center justify-between mb-3"},te={class:"mb-0 text-xl font-semibold leading-normal"},ee={key:1,class:"recent-estimates"},ae={class:"relative z-10 flex items-center justify-between mb-3"},se={class:"mb-0 text-xl font-semibold leading-normal"},oe={__name:"DashboardTable",setup(d){const o=S(),{t:s}=Y.useI18n(),n=B(),u=E(null),l=E(null),f=V(()=>[{key:"formattedDueDate",label:s("dashboard.recent_invoices_card.due_on")},{key:"user",label:s("dashboard.recent_invoices_card.customer")},{key:"due_amount",label:s("dashboard.recent_invoices_card.amount_due")},{key:"actions",tdClass:"text-right text-sm font-medium pl-0",thClass:"text-right pl-0",sortable:!1}]),b=V(()=>[{key:"formattedEstimateDate",label:s("dashboard.recent_estimate_card.date")},{key:"user",label:s("dashboard.recent_estimate_card.customer")},{key:"total",label:s("dashboard.recent_estimate_card.amount_due")},{key:"actions",tdClass:"text-right text-sm font-medium pl-0",thClass:"text-right pl-0",sortable:!1}]);function w(){return n.hasAbilities([m.DELETE_INVOICE,m.EDIT_INVOICE,m.VIEW_INVOICE,m.SEND_INVOICE])}function I(){return n.hasAbilities([m.CREATE_ESTIMATE,m.EDIT_ESTIMATE,m.VIEW_ESTIMATE,m.SEND_ESTIMATE])}return(g,x)=>{const D=i("BaseButton"),k=i("router-link"),A=i("BaseFormatMoney"),P=i("BaseTable");return c(),C("div",null,[t("div",Qt,[e(n).hasAbilities(e(m).VIEW_INVOICE)?(c(),C("div",Gt,[t("div",Xt,[t("h6",te,h(g.$t("dashboard.recent_invoices_card.title")),1),a(D,{size:"sm",variant:"primary-outline",onClick:x[0]||(x[0]=_=>g.$router.push("/admin/invoices"))},{default:r(()=>[y(h(g.$t("dashboard.recent_invoices_card.view_all")),1)]),_:1})]),a(P,{data:e(o).recentDueInvoices,columns:f.value,loading:!e(o).isDashboardDataLoaded},M({"cell-user":r(({row:_})=>[a(k,{to:{path:`invoices/${_.data.id}/view`},class:"font-medium text-primary-500"},{default:r(()=>[y(h(_.data.customer.name),1)]),_:2},1032,["to"])]),"cell-due_amount":r(({row:_})=>[a(A,{amount:_.data.due_amount,currency:_.data.customer.currency},null,8,["amount","currency"])]),_:2},[w()?{name:"cell-actions",fn:r(({row:_})=>[a(X,{row:_.data,table:u.value},null,8,["row","table"])]),key:"0"}:void 0]),1032,["data","columns","loading"])])):v("",!0),e(n).hasAbilities(e(m).VIEW_ESTIMATE)?(c(),C("div",ee,[t("div",ae,[t("h6",se,h(g.$t("dashboard.recent_estimate_card.title")),1),a(D,{variant:"primary-outline",size:"sm",onClick:x[1]||(x[1]=_=>g.$router.push("/admin/estimates"))},{default:r(()=>[y(h(g.$t("dashboard.recent_estimate_card.view_all")),1)]),_:1})]),a(P,{data:e(o).recentEstimates,columns:b.value,loading:!e(o).isDashboardDataLoaded},M({"cell-user":r(({row:_})=>[a(k,{to:{path:`estimates/${_.data.id}/view`},class:"font-medium text-primary-500"},{default:r(()=>[y(h(_.data.customer.name),1)]),_:2},1032,["to"])]),"cell-total":r(({row:_})=>[a(A,{amount:_.data.total,currency:_.data.customer.currency},null,8,["amount","currency"])]),_:2},[I()?{name:"cell-actions",fn:r(({row:_})=>[a(tt,{row:_,table:l.value},null,8,["row","table"])]),key:"0"}:void 0]),1032,["data","columns","loading"])])):v("",!0)])])}}},de={__name:"Dashboard",setup(d){const o=J(),s=B(),n=K();return Q(()=>{o.meta.ability&&!s.hasAbilities(o.meta.ability)?n.push({name:"account.settings"}):o.meta.isOwner&&!s.currentUser.is_owner&&n.push({name:"account.settings"})}),(u,l)=>{const f=i("BasePage");return c(),p(f,null,{default:r(()=>[a(xt),a(Kt),a(oe)]),_:1})}}};export{de as default}; diff --git a/public/build/assets/DateTimeType-a5BpvpZp.js b/public/build/assets/DateTimeType-lxr7K8cW.js similarity index 86% rename from public/build/assets/DateTimeType-a5BpvpZp.js rename to public/build/assets/DateTimeType-lxr7K8cW.js index bc6c3a7b..9f279957 100644 --- a/public/build/assets/DateTimeType-a5BpvpZp.js +++ b/public/build/assets/DateTimeType-lxr7K8cW.js @@ -1 +1 @@ -import{ab as p,k as r,r as d,o as c,m as i}from"./main-B9dpPbRR.js";const k={__name:"DateTimeType",props:{modelValue:{type:String,default:p().format("YYYY-MM-DD hh:MM")}},emits:["update:modelValue"],setup(o,{emit:l}){const m=o,s=l,e=r({get:()=>m.modelValue,set:t=>{s("update:modelValue",t)}});return(t,a)=>{const n=d("BaseDatePicker");return c(),i(n,{modelValue:e.value,"onUpdate:modelValue":a[0]||(a[0]=u=>e.value=u),"enable-time":""},null,8,["modelValue"])}}};export{k as default}; +import{ab as p,k as r,r as d,o as c,m as i}from"./main-pPEsZPea.js";const k={__name:"DateTimeType",props:{modelValue:{type:String,default:p().format("YYYY-MM-DD hh:MM")}},emits:["update:modelValue"],setup(o,{emit:l}){const m=o,s=l,e=r({get:()=>m.modelValue,set:t=>{s("update:modelValue",t)}});return(t,a)=>{const n=d("BaseDatePicker");return c(),i(n,{modelValue:e.value,"onUpdate:modelValue":a[0]||(a[0]=u=>e.value=u),"enable-time":""},null,8,["modelValue"])}}};export{k as default}; diff --git a/public/build/assets/DateType-f9pnJsdS.js b/public/build/assets/DateType-IUam2uIC.js similarity index 86% rename from public/build/assets/DateType-f9pnJsdS.js rename to public/build/assets/DateType-IUam2uIC.js index deba2c9e..dde8df50 100644 --- a/public/build/assets/DateType-f9pnJsdS.js +++ b/public/build/assets/DateType-IUam2uIC.js @@ -1 +1 @@ -import{ab as p,k as r,r as d,o as c,m as i}from"./main-B9dpPbRR.js";const k={__name:"DateType",props:{modelValue:{type:[String,Date],default:p().format("YYYY-MM-DD")}},emits:["update:modelValue"],setup(o,{emit:l}){const s=o,m=l,e=r({get:()=>s.modelValue,set:t=>{m("update:modelValue",t)}});return(t,a)=>{const u=d("BaseDatePicker");return c(),i(u,{modelValue:e.value,"onUpdate:modelValue":a[0]||(a[0]=n=>e.value=n)},null,8,["modelValue"])}}};export{k as default}; +import{ab as p,k as r,r as d,o as c,m as i}from"./main-pPEsZPea.js";const k={__name:"DateType",props:{modelValue:{type:[String,Date],default:p().format("YYYY-MM-DD")}},emits:["update:modelValue"],setup(o,{emit:l}){const s=o,m=l,e=r({get:()=>s.modelValue,set:t=>{m("update:modelValue",t)}});return(t,a)=>{const u=d("BaseDatePicker");return c(),i(u,{modelValue:e.value,"onUpdate:modelValue":a[0]||(a[0]=n=>e.value=n)},null,8,["modelValue"])}}};export{k as default}; diff --git a/public/build/assets/DragIcon-w0U5hiz6.js b/public/build/assets/DragIcon-lAv182Nx.js similarity index 99% rename from public/build/assets/DragIcon-w0U5hiz6.js rename to public/build/assets/DragIcon-lAv182Nx.js index effbfe6b..c9a4e906 100644 --- a/public/build/assets/DragIcon-w0U5hiz6.js +++ b/public/build/assets/DragIcon-lAv182Nx.js @@ -1,4 +1,4 @@ -import{aj as $r,aH as Br,al as Kr,am as Hr,Z as Wr,o as Xr,c as Yr,b as Vr}from"./main-B9dpPbRR.js";var Pr={exports:{}};/**! +import{aj as $r,aK as Br,al as Kr,am as Hr,Z as Wr,o as Xr,c as Yr,b as Vr}from"./main-pPEsZPea.js";var Pr={exports:{}};/**! * Sortable 1.14.0 * @author RubaXa * @author owenm diff --git a/public/build/assets/DropdownType-l90eAEcc.js b/public/build/assets/DropdownType-hGfhMyxV.js similarity index 90% rename from public/build/assets/DropdownType-l90eAEcc.js rename to public/build/assets/DropdownType-hGfhMyxV.js index 9653397d..3ed0b278 100644 --- a/public/build/assets/DropdownType-l90eAEcc.js +++ b/public/build/assets/DropdownType-hGfhMyxV.js @@ -1 +1 @@ -import{k as m,r,o as d,m as c}from"./main-B9dpPbRR.js";const b={__name:"DropdownType",props:{modelValue:{type:[String,Object,Number],default:null},options:{type:Array,default:()=>[]},valueProp:{type:String,default:"name"},label:{type:String,default:"name"},object:{type:Boolean,default:!1}},emits:["update:modelValue"],setup(e,{emit:a}){const u=e,n=a,t=m({get:()=>u.modelValue,set:l=>{n("update:modelValue",l)}});return(l,o)=>{const p=r("BaseMultiselect");return d(),c(p,{modelValue:t.value,"onUpdate:modelValue":o[0]||(o[0]=s=>t.value=s),options:e.options,label:e.label,"value-prop":e.valueProp,object:e.object},null,8,["modelValue","options","label","value-prop","object"])}}};export{b as default}; +import{k as m,r,o as d,m as c}from"./main-pPEsZPea.js";const b={__name:"DropdownType",props:{modelValue:{type:[String,Object,Number],default:null},options:{type:Array,default:()=>[]},valueProp:{type:String,default:"name"},label:{type:String,default:"name"},object:{type:Boolean,default:!1}},emits:["update:modelValue"],setup(e,{emit:a}){const u=e,n=a,t=m({get:()=>u.modelValue,set:l=>{n("update:modelValue",l)}});return(l,o)=>{const p=r("BaseMultiselect");return d(),c(p,{modelValue:t.value,"onUpdate:modelValue":o[0]||(o[0]=s=>t.value=s),options:e.options,label:e.label,"value-prop":e.valueProp,object:e.object},null,8,["modelValue","options","label","value-prop","object"])}}};export{b as default}; diff --git a/public/build/assets/EstimateCreate-ewZLnmBQ.js b/public/build/assets/EstimateCreate-bbtBv8WA.js similarity index 93% rename from public/build/assets/EstimateCreate-ewZLnmBQ.js rename to public/build/assets/EstimateCreate-bbtBv8WA.js index 21adc998..a65016ca 100644 --- a/public/build/assets/EstimateCreate-ewZLnmBQ.js +++ b/public/build/assets/EstimateCreate-bbtBv8WA.js @@ -1 +1 @@ -import{as as L,r as o,o as c,c as x,a,l as t,w as n,av as A,E as J,ae as K,v as O,f as S,L as X,e as Y,k as v,g as _,h as w,ai as Q,ag as W,X as Z,j as ee,z as te,m as E,K as C,b,t as q,J as ae,p as se,q as ie,N as ne}from"./main-B9dpPbRR.js";import{_ as oe,a as le,b as re,c as me,d as de,e as ue,f as ce}from"./SalesTax-ipNfFfG-.js";import{_ as ge}from"./CreateCustomFields-blY-YoZ8.js";import{_ as pe}from"./ExchangeRateConverter-aybyIXMj.js";import{_ as _e}from"./TaxTypeModal-jyzjEMpe.js";import"./DragIcon-w0U5hiz6.js";import"./SelectNotePopup-5BlBNAE0.js";import"./NoteModal-h_90cxoW.js";import"./payment-Y8OywN76.js";import"./dynamic-import-helper-0gtGTknh.js";import"./exchange-rate-M4ruO0OO.js";const fe={class:"md:grid-cols-12 grid-cols-1 md:gap-x-6 mt-6 mb-8 grid gap-y-5"},ve={__name:"EstimateCreateBasicFields",props:{v:{type:Object,default:null},isLoading:{type:Boolean,default:!1},isEdit:{type:Boolean,default:!1}},setup(s){const e=L();return(f,l)=>{const B=o("BaseCustomerSelectPopup"),r=o("BaseDatePicker"),d=o("BaseInputGroup"),$=o("BaseInput"),h=o("BaseInputGrid");return c(),x("div",fe,[a(B,{modelValue:t(e).newEstimate.customer,"onUpdate:modelValue":l[0]||(l[0]=m=>t(e).newEstimate.customer=m),valid:s.v.customer_id,"content-loading":s.isLoading,type:"estimate",class:"col-span-5 pr-0"},null,8,["modelValue","valid","content-loading"]),a(h,{class:"col-span-7"},{default:n(()=>[a(d,{label:f.$t("reports.estimates.estimate_date"),"content-loading":s.isLoading,required:"",error:s.v.estimate_date.$error&&s.v.estimate_date.$errors[0].$message},{default:n(()=>[a(r,{modelValue:t(e).newEstimate.estimate_date,"onUpdate:modelValue":l[1]||(l[1]=m=>t(e).newEstimate.estimate_date=m),"content-loading":s.isLoading,"calendar-button":!0,"calendar-button-icon":"calendar"},null,8,["modelValue","content-loading"])]),_:1},8,["label","content-loading","error"]),a(d,{label:f.$t("estimates.expiry_date"),"content-loading":s.isLoading},{default:n(()=>[a(r,{modelValue:t(e).newEstimate.expiry_date,"onUpdate:modelValue":l[2]||(l[2]=m=>t(e).newEstimate.expiry_date=m),"content-loading":s.isLoading,"calendar-button":!0,"calendar-button-icon":"calendar"},null,8,["modelValue","content-loading"])]),_:1},8,["label","content-loading"]),a(d,{label:f.$t("estimates.estimate_number"),"content-loading":s.isLoading,required:"",error:s.v.estimate_number.$error&&s.v.estimate_number.$errors[0].$message},{default:n(()=>[a($,{modelValue:t(e).newEstimate.estimate_number,"onUpdate:modelValue":l[3]||(l[3]=m=>t(e).newEstimate.estimate_number=m),"content-loading":s.isLoading},null,8,["modelValue","content-loading"])]),_:1},8,["label","content-loading","error"]),a(pe,{store:t(e),"store-prop":"newEstimate",v:s.v,"is-loading":s.isLoading,"is-edit":s.isEdit,"customer-currency":t(e).newEstimate.currency_id},null,8,["store","v","is-loading","is-edit","customer-currency"])]),_:1})])}}},Ee={class:"flex"},ye={class:"block mt-10 estimate-foot lg:flex lg:justify-between lg:items-start"},we={class:"relative w-full lg:w-1/2"},k="newEstimate",xe={__name:"EstimateCreate",setup(s){const e=L(),f=A(),l=J(),B=K(),{t:r}=O.useI18n();let d=S(!1);const $=S(!1),h=S(["customer","company","customerCustom","estimate","estimateCustom"]);let m=X(),P=Y(),g=v(()=>e.isFetchingInitialSettings),M=v(()=>p.value?r("estimates.edit_estimate"):r("estimates.new_estimate")),p=v(()=>m.name==="estimates.edit");const T=v(()=>l.selectedCompanySettings.sales_tax_us_enabled==="YES"&&f.salesTaxUSEnabled),F={estimate_date:{required:_.withMessage(r("validation.required"),w)},estimate_number:{required:_.withMessage(r("validation.required"),w)},reference_number:{maxLength:_.withMessage(r("validation.price_maxlength"),Q(255))},customer_id:{required:_.withMessage(r("validation.required"),w)},exchange_rate:{required:W(function(){return _.withMessage(r("validation.required"),w),e.showExchangeRate}),decimal:_.withMessage(r("validation.valid_exchange_rate"),Z)}},y=ee(F,v(()=>e.newEstimate),{$scope:k});te(()=>e.newEstimate.customer,i=>{i&&i.currency?e.newEstimate.selectedCurrency=i.currency:e.newEstimate.selectedCurrency=l.selectedCompanyCurrency}),e.resetCurrentEstimate(),B.resetCustomFields(),y.value.$reset,e.fetchEstimateInitialSettings(p.value);async function N(){if(y.value.$touch(),y.value.$invalid)return!1;d.value=!0;let i={...e.newEstimate,sub_total:e.getSubTotal,total:e.getTotal,tax:e.getTotalTax};const I=p.value?e.updateEstimate:e.addEstimate;try{let u=await I(i);u.data.data&&P.push(`/admin/estimates/${u.data.data.id}/view`)}catch(u){console.error(u)}d.value=!1}return(i,I)=>{const u=o("BaseBreadcrumbItem"),U=o("BaseBreadcrumb"),V=o("BaseButton"),j=o("router-link"),D=o("BaseIcon"),G=o("BasePageHeader"),R=o("BaseScrollPane"),z=o("BasePage");return c(),x(ne,null,[a(oe),a(le),a(_e),T.value&&(!t(g)||t(m).query.customer)?(c(),E(re,{key:0,store:t(e),"store-prop":"newEstimate","is-edit":t(p),customer:t(e).newEstimate.customer},null,8,["store","is-edit","customer"])):C("",!0),a(z,{class:"relative estimate-create-page"},{default:n(()=>[b("form",{onSubmit:ie(N,["prevent"])},[a(G,{title:t(M)},{actions:n(()=>[i.$route.name==="estimates.edit"?(c(),E(j,{key:0,to:`/estimates/pdf/${t(e).newEstimate.unique_hash}`,target:"_blank"},{default:n(()=>[a(V,{class:"mr-3",variant:"primary-outline",type:"button"},{default:n(()=>[b("span",Ee,q(i.$t("general.view_pdf")),1)]),_:1})]),_:1},8,["to"])):C("",!0),a(V,{loading:t(d),disabled:t(d),"content-loading":t(g),variant:"primary",type:"submit"},{left:n(H=>[t(d)?C("",!0):(c(),E(D,{key:0,class:ae(H.class),name:"SaveIcon"},null,8,["class"]))]),default:n(()=>[se(" "+q(i.$t("estimates.save_estimate")),1)]),_:1},8,["loading","disabled","content-loading"])]),default:n(()=>[a(U,null,{default:n(()=>[a(u,{title:i.$t("general.home"),to:"/admin/dashboard"},null,8,["title"]),a(u,{title:i.$t("estimates.estimate",2),to:"/admin/estimates"},null,8,["title"]),i.$route.name==="estimates.edit"?(c(),E(u,{key:0,title:i.$t("estimates.edit_estimate"),to:"#",active:""},null,8,["title"])):(c(),E(u,{key:1,title:i.$t("estimates.new_estimate"),to:"#",active:""},null,8,["title"]))]),_:1})]),_:1},8,["title"]),a(ve,{v:t(y),"is-loading":t(g),"is-edit":t(p)},null,8,["v","is-loading","is-edit"]),a(R,null,{default:n(()=>[a(me,{currency:t(e).newEstimate.selectedCurrency,"is-loading":t(g),"item-validation-scope":k,store:t(e),"store-prop":"newEstimate"},null,8,["currency","is-loading","store"]),b("div",ye,[b("div",we,[a(de,{store:t(e),"store-prop":"newEstimate",fields:h.value,type:"Estimate"},null,8,["store","fields"]),a(ge,{type:"Estimate","is-edit":t(p),"is-loading":t(g),store:t(e),"store-prop":"newEstimate","custom-field-scope":k,class:"mb-6"},null,8,["is-edit","is-loading","store"]),a(ue,{store:t(e),"component-name":"EstimateTemplate","store-prop":"newEstimate","is-mark-as-default":$.value},null,8,["store","is-mark-as-default"])]),a(ce,{currency:t(e).newEstimate.selectedCurrency,"is-loading":t(g),store:t(e),"store-prop":"newEstimate","tax-popup-type":"estimate"},null,8,["currency","is-loading","store"])])]),_:1})],32)]),_:1})],64)}}};export{xe as default}; +import{as as L,r as o,o as c,c as x,a,l as t,w as n,av as A,E as J,ae as K,v as O,f as S,L as X,e as Y,k as v,g as _,h as w,ai as Q,ag as W,X as Z,j as ee,z as te,m as E,K as C,b,t as q,J as ae,p as se,q as ie,N as ne}from"./main-pPEsZPea.js";import{_ as oe,a as le,b as re,c as me,d as de,e as ue,f as ce}from"./SalesTax-q9Vvrvve.js";import{_ as ge}from"./CreateCustomFields-8Vbtza7g.js";import{_ as pe}from"./ExchangeRateConverter-e1MH9GPD.js";import{_ as _e}from"./TaxTypeModal-rCI1vg4v.js";import"./DragIcon-lAv182Nx.js";import"./SelectNotePopup-iZwUGlz-.js";import"./NoteModal-YX0uc_EM.js";import"./payment-fIjVKZH2.js";import"./dynamic-import-helper-0gtGTknh.js";import"./exchange-rate-Md-8fXjz.js";const fe={class:"md:grid-cols-12 grid-cols-1 md:gap-x-6 mt-6 mb-8 grid gap-y-5"},ve={__name:"EstimateCreateBasicFields",props:{v:{type:Object,default:null},isLoading:{type:Boolean,default:!1},isEdit:{type:Boolean,default:!1}},setup(s){const e=L();return(f,l)=>{const B=o("BaseCustomerSelectPopup"),r=o("BaseDatePicker"),d=o("BaseInputGroup"),$=o("BaseInput"),h=o("BaseInputGrid");return c(),x("div",fe,[a(B,{modelValue:t(e).newEstimate.customer,"onUpdate:modelValue":l[0]||(l[0]=m=>t(e).newEstimate.customer=m),valid:s.v.customer_id,"content-loading":s.isLoading,type:"estimate",class:"col-span-5 pr-0"},null,8,["modelValue","valid","content-loading"]),a(h,{class:"col-span-7"},{default:n(()=>[a(d,{label:f.$t("reports.estimates.estimate_date"),"content-loading":s.isLoading,required:"",error:s.v.estimate_date.$error&&s.v.estimate_date.$errors[0].$message},{default:n(()=>[a(r,{modelValue:t(e).newEstimate.estimate_date,"onUpdate:modelValue":l[1]||(l[1]=m=>t(e).newEstimate.estimate_date=m),"content-loading":s.isLoading,"calendar-button":!0,"calendar-button-icon":"calendar"},null,8,["modelValue","content-loading"])]),_:1},8,["label","content-loading","error"]),a(d,{label:f.$t("estimates.expiry_date"),"content-loading":s.isLoading},{default:n(()=>[a(r,{modelValue:t(e).newEstimate.expiry_date,"onUpdate:modelValue":l[2]||(l[2]=m=>t(e).newEstimate.expiry_date=m),"content-loading":s.isLoading,"calendar-button":!0,"calendar-button-icon":"calendar"},null,8,["modelValue","content-loading"])]),_:1},8,["label","content-loading"]),a(d,{label:f.$t("estimates.estimate_number"),"content-loading":s.isLoading,required:"",error:s.v.estimate_number.$error&&s.v.estimate_number.$errors[0].$message},{default:n(()=>[a($,{modelValue:t(e).newEstimate.estimate_number,"onUpdate:modelValue":l[3]||(l[3]=m=>t(e).newEstimate.estimate_number=m),"content-loading":s.isLoading},null,8,["modelValue","content-loading"])]),_:1},8,["label","content-loading","error"]),a(pe,{store:t(e),"store-prop":"newEstimate",v:s.v,"is-loading":s.isLoading,"is-edit":s.isEdit,"customer-currency":t(e).newEstimate.currency_id},null,8,["store","v","is-loading","is-edit","customer-currency"])]),_:1})])}}},Ee={class:"flex"},ye={class:"block mt-10 estimate-foot lg:flex lg:justify-between lg:items-start"},we={class:"relative w-full lg:w-1/2"},k="newEstimate",xe={__name:"EstimateCreate",setup(s){const e=L(),f=A(),l=J(),B=K(),{t:r}=O.useI18n();let d=S(!1);const $=S(!1),h=S(["customer","company","customerCustom","estimate","estimateCustom"]);let m=X(),P=Y(),g=v(()=>e.isFetchingInitialSettings),M=v(()=>p.value?r("estimates.edit_estimate"):r("estimates.new_estimate")),p=v(()=>m.name==="estimates.edit");const T=v(()=>l.selectedCompanySettings.sales_tax_us_enabled==="YES"&&f.salesTaxUSEnabled),F={estimate_date:{required:_.withMessage(r("validation.required"),w)},estimate_number:{required:_.withMessage(r("validation.required"),w)},reference_number:{maxLength:_.withMessage(r("validation.price_maxlength"),Q(255))},customer_id:{required:_.withMessage(r("validation.required"),w)},exchange_rate:{required:W(function(){return _.withMessage(r("validation.required"),w),e.showExchangeRate}),decimal:_.withMessage(r("validation.valid_exchange_rate"),Z)}},y=ee(F,v(()=>e.newEstimate),{$scope:k});te(()=>e.newEstimate.customer,i=>{i&&i.currency?e.newEstimate.selectedCurrency=i.currency:e.newEstimate.selectedCurrency=l.selectedCompanyCurrency}),e.resetCurrentEstimate(),B.resetCustomFields(),y.value.$reset,e.fetchEstimateInitialSettings(p.value);async function N(){if(y.value.$touch(),y.value.$invalid)return!1;d.value=!0;let i={...e.newEstimate,sub_total:e.getSubTotal,total:e.getTotal,tax:e.getTotalTax};const I=p.value?e.updateEstimate:e.addEstimate;try{let u=await I(i);u.data.data&&P.push(`/admin/estimates/${u.data.data.id}/view`)}catch(u){console.error(u)}d.value=!1}return(i,I)=>{const u=o("BaseBreadcrumbItem"),U=o("BaseBreadcrumb"),V=o("BaseButton"),j=o("router-link"),D=o("BaseIcon"),G=o("BasePageHeader"),R=o("BaseScrollPane"),z=o("BasePage");return c(),x(ne,null,[a(oe),a(le),a(_e),T.value&&(!t(g)||t(m).query.customer)?(c(),E(re,{key:0,store:t(e),"store-prop":"newEstimate","is-edit":t(p),customer:t(e).newEstimate.customer},null,8,["store","is-edit","customer"])):C("",!0),a(z,{class:"relative estimate-create-page"},{default:n(()=>[b("form",{onSubmit:ie(N,["prevent"])},[a(G,{title:t(M)},{actions:n(()=>[i.$route.name==="estimates.edit"?(c(),E(j,{key:0,to:`/estimates/pdf/${t(e).newEstimate.unique_hash}`,target:"_blank"},{default:n(()=>[a(V,{class:"mr-3",variant:"primary-outline",type:"button"},{default:n(()=>[b("span",Ee,q(i.$t("general.view_pdf")),1)]),_:1})]),_:1},8,["to"])):C("",!0),a(V,{loading:t(d),disabled:t(d),"content-loading":t(g),variant:"primary",type:"submit"},{left:n(H=>[t(d)?C("",!0):(c(),E(D,{key:0,class:ae(H.class),name:"SaveIcon"},null,8,["class"]))]),default:n(()=>[se(" "+q(i.$t("estimates.save_estimate")),1)]),_:1},8,["loading","disabled","content-loading"])]),default:n(()=>[a(U,null,{default:n(()=>[a(u,{title:i.$t("general.home"),to:"/admin/dashboard"},null,8,["title"]),a(u,{title:i.$t("estimates.estimate",2),to:"/admin/estimates"},null,8,["title"]),i.$route.name==="estimates.edit"?(c(),E(u,{key:0,title:i.$t("estimates.edit_estimate"),to:"#",active:""},null,8,["title"])):(c(),E(u,{key:1,title:i.$t("estimates.new_estimate"),to:"#",active:""},null,8,["title"]))]),_:1})]),_:1},8,["title"]),a(ve,{v:t(y),"is-loading":t(g),"is-edit":t(p)},null,8,["v","is-loading","is-edit"]),a(R,null,{default:n(()=>[a(me,{currency:t(e).newEstimate.selectedCurrency,"is-loading":t(g),"item-validation-scope":k,store:t(e),"store-prop":"newEstimate"},null,8,["currency","is-loading","store"]),b("div",ye,[b("div",we,[a(de,{store:t(e),"store-prop":"newEstimate",fields:h.value,type:"Estimate"},null,8,["store","fields"]),a(ge,{type:"Estimate","is-edit":t(p),"is-loading":t(g),store:t(e),"store-prop":"newEstimate","custom-field-scope":k,class:"mb-6"},null,8,["is-edit","is-loading","store"]),a(ue,{store:t(e),"component-name":"EstimateTemplate","store-prop":"newEstimate","is-mark-as-default":$.value},null,8,["store","is-mark-as-default"])]),a(ce,{currency:t(e).newEstimate.selectedCurrency,"is-loading":t(g),store:t(e),"store-prop":"newEstimate","tax-popup-type":"estimate"},null,8,["currency","is-loading","store"])])]),_:1})],32)]),_:1})],64)}}};export{xe as default}; diff --git a/public/build/assets/EstimateIcon-6r_rboPc.js b/public/build/assets/EstimateIcon-UppoM7L7.js similarity index 98% rename from public/build/assets/EstimateIcon-6r_rboPc.js rename to public/build/assets/EstimateIcon-UppoM7L7.js index 0c05158d..8d03b3c5 100644 --- a/public/build/assets/EstimateIcon-6r_rboPc.js +++ b/public/build/assets/EstimateIcon-UppoM7L7.js @@ -1 +1 @@ -import{Z as n,o as s,c as o,b as C,J as c}from"./main-B9dpPbRR.js";const r={},i={width:"50",height:"50",viewBox:"0 0 50 50",fill:"none",xmlns:"http://www.w3.org/2000/svg"},_=C("circle",{cx:"25",cy:"25",r:"25",fill:"#FDE4E5"},null,-1),a=C("path",{d:"M27.2031 23.6016C28.349 23.9401 29.2083 24.6562 29.7812 25.75C30.3802 26.8438 30.4714 27.9766 30.0547 29.1484C29.7422 30.0078 29.2083 30.6979 28.4531 31.2188C27.6979 31.7135 26.8516 31.974 25.9141 32V33.875C25.9141 34.0573 25.849 34.2005 25.7188 34.3047C25.6146 34.4349 25.4714 34.5 25.2891 34.5H24.0391C23.8568 34.5 23.7005 34.4349 23.5703 34.3047C23.4661 34.2005 23.4141 34.0573 23.4141 33.875V32C22.1641 32 21.0443 31.6094 20.0547 30.8281C19.8984 30.6979 19.8073 30.5417 19.7812 30.3594C19.7552 30.1771 19.8203 30.0208 19.9766 29.8906L21.3047 28.5625C21.5651 28.3281 21.8255 28.3021 22.0859 28.4844C22.4766 28.7448 22.9193 28.875 23.4141 28.875H25.9922C26.3307 28.875 26.6042 28.7708 26.8125 28.5625C27.0469 28.3281 27.1641 28.0417 27.1641 27.7031C27.1641 27.1302 26.8906 26.7656 26.3438 26.6094L22.3203 25.4375C21.4349 25.1771 20.6927 24.7083 20.0938 24.0312C19.4948 23.3542 19.1432 22.5729 19.0391 21.6875C18.9349 20.4115 19.2995 19.3177 20.1328 18.4062C20.9922 17.4688 22.0599 17 23.3359 17H23.4141V15.125C23.4141 14.9427 23.4661 14.7995 23.5703 14.6953C23.7005 14.5651 23.8568 14.5 24.0391 14.5H25.2891C25.4714 14.5 25.6146 14.5651 25.7188 14.6953C25.849 14.7995 25.9141 14.9427 25.9141 15.125V17C27.1641 17 28.2839 17.3906 29.2734 18.1719C29.4297 18.3021 29.5208 18.4583 29.5469 18.6406C29.5729 18.8229 29.5078 18.9792 29.3516 19.1094L28.0234 20.4375C27.763 20.6719 27.5026 20.6979 27.2422 20.5156C26.8516 20.2552 26.4089 20.125 25.9141 20.125H23.3359C22.9974 20.125 22.7109 20.2422 22.4766 20.4766C22.2682 20.6849 22.1641 20.9583 22.1641 21.2969C22.1641 21.5312 22.2422 21.7526 22.3984 21.9609C22.5547 22.1693 22.75 22.3125 22.9844 22.3906L27.2031 23.6016Z",fill:"#FB7178"},null,-1),h=[_,a];function H(t,e){return s(),o("svg",i,h)}const m=n(r,[["render",H]]),V=C("circle",{cx:"25",cy:"25",r:"25",fill:"#EAF1FB"},null,-1),d=C("path",{d:"M28.25 24.5V27H20.75V24.5H28.25ZM31.7266 18.6016C31.9089 18.7839 32 19.0052 32 19.2656V19.5H27V14.5H27.2344C27.4948 14.5 27.7161 14.5911 27.8984 14.7734L31.7266 18.6016ZM25.75 19.8125C25.75 20.0729 25.8411 20.2943 26.0234 20.4766C26.2057 20.6589 26.4271 20.75 26.6875 20.75H32V33.5625C32 33.8229 31.9089 34.0443 31.7266 34.2266C31.5443 34.4089 31.3229 34.5 31.0625 34.5H17.9375C17.6771 34.5 17.4557 34.4089 17.2734 34.2266C17.0911 34.0443 17 33.8229 17 33.5625V15.4375C17 15.1771 17.0911 14.9557 17.2734 14.7734C17.4557 14.5911 17.6771 14.5 17.9375 14.5H25.75V19.8125ZM19.5 17.3125V17.9375C19.5 18.1458 19.6042 18.25 19.8125 18.25H22.9375C23.1458 18.25 23.25 18.1458 23.25 17.9375V17.3125C23.25 17.1042 23.1458 17 22.9375 17H19.8125C19.6042 17 19.5 17.1042 19.5 17.3125ZM19.5 19.8125V20.4375C19.5 20.6458 19.6042 20.75 19.8125 20.75H22.9375C23.1458 20.75 23.25 20.6458 23.25 20.4375V19.8125C23.25 19.6042 23.1458 19.5 22.9375 19.5H19.8125C19.6042 19.5 19.5 19.6042 19.5 19.8125ZM29.5 31.6875V31.0625C29.5 30.8542 29.3958 30.75 29.1875 30.75H26.0625C25.8542 30.75 25.75 30.8542 25.75 31.0625V31.6875C25.75 31.8958 25.8542 32 26.0625 32H29.1875C29.3958 32 29.5 31.8958 29.5 31.6875ZM29.5 23.875C29.5 23.6927 29.4349 23.5495 29.3047 23.4453C29.2005 23.3151 29.0573 23.25 28.875 23.25H20.125C19.9427 23.25 19.7865 23.3151 19.6562 23.4453C19.5521 23.5495 19.5 23.6927 19.5 23.875V27.625C19.5 27.8073 19.5521 27.9635 19.6562 28.0938C19.7865 28.1979 19.9427 28.25 20.125 28.25H28.875C29.0573 28.25 29.2005 28.1979 29.3047 28.0938C29.4349 27.9635 29.5 27.8073 29.5 27.625V23.875Z",fill:"currentColor"},null,-1),p=[V,d],g={__name:"InvoiceIcon",props:{colorClass:{type:String,default:"text-primary-500"}},setup(t){return(e,l)=>(s(),o("svg",{width:"50",height:"50",viewBox:"0 0 50 50",fill:"none",xmlns:"http://www.w3.org/2000/svg",class:c(t.colorClass)},p,2))}},f=C("circle",{cx:"25",cy:"25",r:"25",fill:"#EAF1FB"},null,-1),u=C("path",{d:"M26.75 19.8125C26.75 20.0729 26.8411 20.2943 27.0234 20.4766C27.2057 20.6589 27.4271 20.75 27.6875 20.75H33V33.5625C33 33.8229 32.9089 34.0443 32.7266 34.2266C32.5443 34.4089 32.3229 34.5 32.0625 34.5H18.9375C18.6771 34.5 18.4557 34.4089 18.2734 34.2266C18.0911 34.0443 18 33.8229 18 33.5625V15.4375C18 15.1771 18.0911 14.9557 18.2734 14.7734C18.4557 14.5911 18.6771 14.5 18.9375 14.5H26.75V19.8125ZM33 19.2656V19.5H28V14.5H28.2344C28.4948 14.5 28.7161 14.5911 28.8984 14.7734L32.7266 18.6016C32.9089 18.7839 33 19.0052 33 19.2656Z",fill:"currentColor"},null,-1),w=[f,u],Z={__name:"EstimateIcon",props:{colorClass:{type:String,default:"text-primary-500"}},setup(t){return(e,l)=>(s(),o("svg",{width:"50",height:"50",viewBox:"0 0 50 50",fill:"none",xmlns:"http://www.w3.org/2000/svg",class:c(t.colorClass)},w,2))}};export{m as D,g as _,Z as a}; +import{Z as n,o as s,c as o,b as C,J as c}from"./main-pPEsZPea.js";const r={},i={width:"50",height:"50",viewBox:"0 0 50 50",fill:"none",xmlns:"http://www.w3.org/2000/svg"},_=C("circle",{cx:"25",cy:"25",r:"25",fill:"#FDE4E5"},null,-1),a=C("path",{d:"M27.2031 23.6016C28.349 23.9401 29.2083 24.6562 29.7812 25.75C30.3802 26.8438 30.4714 27.9766 30.0547 29.1484C29.7422 30.0078 29.2083 30.6979 28.4531 31.2188C27.6979 31.7135 26.8516 31.974 25.9141 32V33.875C25.9141 34.0573 25.849 34.2005 25.7188 34.3047C25.6146 34.4349 25.4714 34.5 25.2891 34.5H24.0391C23.8568 34.5 23.7005 34.4349 23.5703 34.3047C23.4661 34.2005 23.4141 34.0573 23.4141 33.875V32C22.1641 32 21.0443 31.6094 20.0547 30.8281C19.8984 30.6979 19.8073 30.5417 19.7812 30.3594C19.7552 30.1771 19.8203 30.0208 19.9766 29.8906L21.3047 28.5625C21.5651 28.3281 21.8255 28.3021 22.0859 28.4844C22.4766 28.7448 22.9193 28.875 23.4141 28.875H25.9922C26.3307 28.875 26.6042 28.7708 26.8125 28.5625C27.0469 28.3281 27.1641 28.0417 27.1641 27.7031C27.1641 27.1302 26.8906 26.7656 26.3438 26.6094L22.3203 25.4375C21.4349 25.1771 20.6927 24.7083 20.0938 24.0312C19.4948 23.3542 19.1432 22.5729 19.0391 21.6875C18.9349 20.4115 19.2995 19.3177 20.1328 18.4062C20.9922 17.4688 22.0599 17 23.3359 17H23.4141V15.125C23.4141 14.9427 23.4661 14.7995 23.5703 14.6953C23.7005 14.5651 23.8568 14.5 24.0391 14.5H25.2891C25.4714 14.5 25.6146 14.5651 25.7188 14.6953C25.849 14.7995 25.9141 14.9427 25.9141 15.125V17C27.1641 17 28.2839 17.3906 29.2734 18.1719C29.4297 18.3021 29.5208 18.4583 29.5469 18.6406C29.5729 18.8229 29.5078 18.9792 29.3516 19.1094L28.0234 20.4375C27.763 20.6719 27.5026 20.6979 27.2422 20.5156C26.8516 20.2552 26.4089 20.125 25.9141 20.125H23.3359C22.9974 20.125 22.7109 20.2422 22.4766 20.4766C22.2682 20.6849 22.1641 20.9583 22.1641 21.2969C22.1641 21.5312 22.2422 21.7526 22.3984 21.9609C22.5547 22.1693 22.75 22.3125 22.9844 22.3906L27.2031 23.6016Z",fill:"#FB7178"},null,-1),h=[_,a];function H(t,e){return s(),o("svg",i,h)}const m=n(r,[["render",H]]),V=C("circle",{cx:"25",cy:"25",r:"25",fill:"#EAF1FB"},null,-1),d=C("path",{d:"M28.25 24.5V27H20.75V24.5H28.25ZM31.7266 18.6016C31.9089 18.7839 32 19.0052 32 19.2656V19.5H27V14.5H27.2344C27.4948 14.5 27.7161 14.5911 27.8984 14.7734L31.7266 18.6016ZM25.75 19.8125C25.75 20.0729 25.8411 20.2943 26.0234 20.4766C26.2057 20.6589 26.4271 20.75 26.6875 20.75H32V33.5625C32 33.8229 31.9089 34.0443 31.7266 34.2266C31.5443 34.4089 31.3229 34.5 31.0625 34.5H17.9375C17.6771 34.5 17.4557 34.4089 17.2734 34.2266C17.0911 34.0443 17 33.8229 17 33.5625V15.4375C17 15.1771 17.0911 14.9557 17.2734 14.7734C17.4557 14.5911 17.6771 14.5 17.9375 14.5H25.75V19.8125ZM19.5 17.3125V17.9375C19.5 18.1458 19.6042 18.25 19.8125 18.25H22.9375C23.1458 18.25 23.25 18.1458 23.25 17.9375V17.3125C23.25 17.1042 23.1458 17 22.9375 17H19.8125C19.6042 17 19.5 17.1042 19.5 17.3125ZM19.5 19.8125V20.4375C19.5 20.6458 19.6042 20.75 19.8125 20.75H22.9375C23.1458 20.75 23.25 20.6458 23.25 20.4375V19.8125C23.25 19.6042 23.1458 19.5 22.9375 19.5H19.8125C19.6042 19.5 19.5 19.6042 19.5 19.8125ZM29.5 31.6875V31.0625C29.5 30.8542 29.3958 30.75 29.1875 30.75H26.0625C25.8542 30.75 25.75 30.8542 25.75 31.0625V31.6875C25.75 31.8958 25.8542 32 26.0625 32H29.1875C29.3958 32 29.5 31.8958 29.5 31.6875ZM29.5 23.875C29.5 23.6927 29.4349 23.5495 29.3047 23.4453C29.2005 23.3151 29.0573 23.25 28.875 23.25H20.125C19.9427 23.25 19.7865 23.3151 19.6562 23.4453C19.5521 23.5495 19.5 23.6927 19.5 23.875V27.625C19.5 27.8073 19.5521 27.9635 19.6562 28.0938C19.7865 28.1979 19.9427 28.25 20.125 28.25H28.875C29.0573 28.25 29.2005 28.1979 29.3047 28.0938C29.4349 27.9635 29.5 27.8073 29.5 27.625V23.875Z",fill:"currentColor"},null,-1),p=[V,d],g={__name:"InvoiceIcon",props:{colorClass:{type:String,default:"text-primary-500"}},setup(t){return(e,l)=>(s(),o("svg",{width:"50",height:"50",viewBox:"0 0 50 50",fill:"none",xmlns:"http://www.w3.org/2000/svg",class:c(t.colorClass)},p,2))}},f=C("circle",{cx:"25",cy:"25",r:"25",fill:"#EAF1FB"},null,-1),u=C("path",{d:"M26.75 19.8125C26.75 20.0729 26.8411 20.2943 27.0234 20.4766C27.2057 20.6589 27.4271 20.75 27.6875 20.75H33V33.5625C33 33.8229 32.9089 34.0443 32.7266 34.2266C32.5443 34.4089 32.3229 34.5 32.0625 34.5H18.9375C18.6771 34.5 18.4557 34.4089 18.2734 34.2266C18.0911 34.0443 18 33.8229 18 33.5625V15.4375C18 15.1771 18.0911 14.9557 18.2734 14.7734C18.4557 14.5911 18.6771 14.5 18.9375 14.5H26.75V19.8125ZM33 19.2656V19.5H28V14.5H28.2344C28.4948 14.5 28.7161 14.5911 28.8984 14.7734L32.7266 18.6016C32.9089 18.7839 33 19.0052 33 19.2656Z",fill:"currentColor"},null,-1),w=[f,u],Z={__name:"EstimateIcon",props:{colorClass:{type:String,default:"text-primary-500"}},setup(t){return(e,l)=>(s(),o("svg",{width:"50",height:"50",viewBox:"0 0 50 50",fill:"none",xmlns:"http://www.w3.org/2000/svg",class:c(t.colorClass)},w,2))}};export{m as D,g as _,Z as a}; diff --git a/public/build/assets/EstimateIndexDropdown-R-OPRBvb.js b/public/build/assets/EstimateIndexDropdown-q_PQ0HVZ.js similarity index 98% rename from public/build/assets/EstimateIndexDropdown-R-OPRBvb.js rename to public/build/assets/EstimateIndexDropdown-q_PQ0HVZ.js index f9312a84..f36fc27f 100644 --- a/public/build/assets/EstimateIndexDropdown-R-OPRBvb.js +++ b/public/build/assets/EstimateIndexDropdown-q_PQ0HVZ.js @@ -1 +1 @@ -import{a5 as R,as as z,F as P,u as V,a7 as O,M as U,v as F,L as H,e as J,r as I,o as i,m as l,w as r,l as n,a as m,p as c,t as d,K as g,Q as E}from"./main-B9dpPbRR.js";const q={__name:"EstimateIndexDropdown",props:{row:{type:Object,default:null},table:{type:Object,default:null}},setup(o){const y=o,S=R("utils"),v=z(),_=P(),D=V(),p=O(),f=U(),{t:s}=F.useI18n(),k=H(),T=J();async function C(e){p.openDialog({title:s("general.are_you_sure"),message:s("estimates.confirm_delete"),yesLabel:s("general.ok"),noLabel:s("general.cancel"),variant:"danger",hideNoButton:!1,size:"lg"}).then(t=>{e=e,t&&v.deleteEstimate({ids:[e]}).then(a=>{a&&(y.table&&y.table.refresh(),a.data&&T.push("/admin/estimates"),v.$patch(h=>{h.selectedEstimates=[],h.selectAllField=!1}))})})}function $(e){p.openDialog({title:s("general.are_you_sure"),message:s("estimates.confirm_conversion"),yesLabel:s("general.ok"),noLabel:s("general.cancel"),variant:"primary",hideNoButton:!1,size:"lg"}).then(t=>{t&&v.convertToInvoice(e).then(a=>{a.data&&T.push(`/admin/invoices/${a.data.data.id}/edit`)})})}async function x(e){p.openDialog({title:s("general.are_you_sure"),message:s("estimates.confirm_mark_as_sent"),yesLabel:s("general.ok"),noLabel:s("general.cancel"),variant:"primary",hideNoButton:!1,size:"lg"}).then(t=>{const a={id:e,status:"SENT"};t&&v.markAsSent(a).then(h=>{y.table&&y.table.refresh()})})}function N(e){return(e.status=="SENT"||e.status=="VIEWED")&&k.name!=="estimates.view"&&f.hasAbilities(E.SEND_ESTIMATE)}async function b(e){_.openModal({title:s("estimates.send_estimate"),componentName:"SendEstimateModal",id:e.id,data:e,variant:"lg"})}async function B(e){p.openDialog({title:s("general.are_you_sure"),message:s("estimates.confirm_mark_as_accepted"),yesLabel:s("general.ok"),noLabel:s("general.cancel"),variant:"primary",hideNoButton:!1,size:"lg"}).then(t=>{const a={id:e,status:"ACCEPTED"};t&&v.markAsAccepted(a).then(h=>{y.table&&y.table.refresh()})})}async function M(e){p.openDialog({title:s("general.are_you_sure"),message:s("estimates.confirm_mark_as_rejected"),yesLabel:s("general.ok"),noLabel:s("general.cancel"),variant:"primary",hideNoButton:!1,size:"lg"}).then(t=>{const a={id:e,status:"REJECTED"};t&&v.markAsRejected(a).then(h=>{y.table&&y.table.refresh()})})}function L(){let e=`${window.location.origin}/estimates/pdf/${y.row.unique_hash}`;S.copyTextToClipboard(e),D.showNotification({type:"success",message:s("general.copied_pdf_url_clipboard")})}return(e,t)=>{const a=I("BaseIcon"),h=I("BaseButton"),u=I("BaseDropdownItem"),A=I("router-link"),j=I("BaseDropdown");return i(),l(j,null,{activator:r(()=>[n(k).name==="estimates.view"?(i(),l(h,{key:0,variant:"primary"},{default:r(()=>[m(a,{name:"DotsHorizontalIcon",class:"text-white"})]),_:1})):(i(),l(a,{key:1,class:"text-gray-500",name:"DotsHorizontalIcon"}))]),default:r(()=>[n(k).name==="estimates.view"?(i(),l(u,{key:0,onClick:L},{default:r(()=>[m(a,{name:"LinkIcon",class:"w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500"}),c(" "+d(e.$t("general.copy_pdf_url")),1)]),_:1})):g("",!0),n(f).hasAbilities(n(E).EDIT_ESTIMATE)?(i(),l(A,{key:1,to:`/admin/estimates/${o.row.id}/edit`},{default:r(()=>[m(u,null,{default:r(()=>[m(a,{name:"PencilIcon",class:"w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500"}),c(" "+d(e.$t("general.edit")),1)]),_:1})]),_:1},8,["to"])):g("",!0),n(f).hasAbilities(n(E).DELETE_ESTIMATE)?(i(),l(u,{key:2,onClick:t[0]||(t[0]=w=>C(o.row.id))},{default:r(()=>[m(a,{name:"TrashIcon",class:"w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500"}),c(" "+d(e.$t("general.delete")),1)]),_:1})):g("",!0),n(k).name!=="estimates.view"&&n(f).hasAbilities(n(E).VIEW_ESTIMATE)?(i(),l(A,{key:3,to:`estimates/${o.row.id}/view`},{default:r(()=>[m(u,null,{default:r(()=>[m(a,{name:"EyeIcon",class:"w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500"}),c(" "+d(e.$t("general.view")),1)]),_:1})]),_:1},8,["to"])):g("",!0),n(f).hasAbilities(n(E).CREATE_INVOICE)?(i(),l(u,{key:4,onClick:t[1]||(t[1]=w=>$(o.row.id))},{default:r(()=>[m(a,{name:"DocumentTextIcon",class:"w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500"}),c(" "+d(e.$t("estimates.convert_to_invoice")),1)]),_:1})):g("",!0),o.row.status!=="SENT"&&n(k).name!=="estimates.view"&&n(f).hasAbilities(n(E).SEND_ESTIMATE)?(i(),l(u,{key:5,onClick:t[2]||(t[2]=w=>x(o.row.id))},{default:r(()=>[m(a,{name:"CheckCircleIcon",class:"w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500"}),c(" "+d(e.$t("estimates.mark_as_sent")),1)]),_:1})):g("",!0),o.row.status!=="SENT"&&n(k).name!=="estimates.view"&&n(f).hasAbilities(n(E).SEND_ESTIMATE)?(i(),l(u,{key:6,onClick:t[3]||(t[3]=w=>b(o.row))},{default:r(()=>[m(a,{name:"PaperAirplaneIcon",class:"w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500"}),c(" "+d(e.$t("estimates.send_estimate")),1)]),_:1})):g("",!0),N(o.row)?(i(),l(u,{key:7,onClick:t[4]||(t[4]=w=>b(o.row))},{default:r(()=>[m(a,{name:"PaperAirplaneIcon",class:"w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500"}),c(" "+d(e.$t("estimates.resend_estimate")),1)]),_:1})):g("",!0),o.row.status!=="ACCEPTED"&&n(f).hasAbilities(n(E).EDIT_ESTIMATE)?(i(),l(u,{key:8,onClick:t[5]||(t[5]=w=>B(o.row.id))},{default:r(()=>[m(a,{name:"CheckCircleIcon",class:"w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500"}),c(" "+d(e.$t("estimates.mark_as_accepted")),1)]),_:1})):g("",!0),o.row.status!=="REJECTED"&&n(f).hasAbilities(n(E).EDIT_ESTIMATE)?(i(),l(u,{key:9,onClick:t[6]||(t[6]=w=>M(o.row.id))},{default:r(()=>[m(a,{name:"XCircleIcon",class:"w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500"}),c(" "+d(e.$t("estimates.mark_as_rejected")),1)]),_:1})):g("",!0)]),_:1})}}};export{q as _}; +import{a5 as R,as as z,F as P,u as V,a7 as O,M as U,v as F,L as H,e as J,r as I,o as i,m as l,w as r,l as n,a as m,p as c,t as d,K as g,Q as E}from"./main-pPEsZPea.js";const q={__name:"EstimateIndexDropdown",props:{row:{type:Object,default:null},table:{type:Object,default:null}},setup(o){const y=o,S=R("utils"),v=z(),_=P(),D=V(),p=O(),f=U(),{t:s}=F.useI18n(),k=H(),T=J();async function C(e){p.openDialog({title:s("general.are_you_sure"),message:s("estimates.confirm_delete"),yesLabel:s("general.ok"),noLabel:s("general.cancel"),variant:"danger",hideNoButton:!1,size:"lg"}).then(t=>{e=e,t&&v.deleteEstimate({ids:[e]}).then(a=>{a&&(y.table&&y.table.refresh(),a.data&&T.push("/admin/estimates"),v.$patch(h=>{h.selectedEstimates=[],h.selectAllField=!1}))})})}function $(e){p.openDialog({title:s("general.are_you_sure"),message:s("estimates.confirm_conversion"),yesLabel:s("general.ok"),noLabel:s("general.cancel"),variant:"primary",hideNoButton:!1,size:"lg"}).then(t=>{t&&v.convertToInvoice(e).then(a=>{a.data&&T.push(`/admin/invoices/${a.data.data.id}/edit`)})})}async function x(e){p.openDialog({title:s("general.are_you_sure"),message:s("estimates.confirm_mark_as_sent"),yesLabel:s("general.ok"),noLabel:s("general.cancel"),variant:"primary",hideNoButton:!1,size:"lg"}).then(t=>{const a={id:e,status:"SENT"};t&&v.markAsSent(a).then(h=>{y.table&&y.table.refresh()})})}function N(e){return(e.status=="SENT"||e.status=="VIEWED")&&k.name!=="estimates.view"&&f.hasAbilities(E.SEND_ESTIMATE)}async function b(e){_.openModal({title:s("estimates.send_estimate"),componentName:"SendEstimateModal",id:e.id,data:e,variant:"lg"})}async function B(e){p.openDialog({title:s("general.are_you_sure"),message:s("estimates.confirm_mark_as_accepted"),yesLabel:s("general.ok"),noLabel:s("general.cancel"),variant:"primary",hideNoButton:!1,size:"lg"}).then(t=>{const a={id:e,status:"ACCEPTED"};t&&v.markAsAccepted(a).then(h=>{y.table&&y.table.refresh()})})}async function M(e){p.openDialog({title:s("general.are_you_sure"),message:s("estimates.confirm_mark_as_rejected"),yesLabel:s("general.ok"),noLabel:s("general.cancel"),variant:"primary",hideNoButton:!1,size:"lg"}).then(t=>{const a={id:e,status:"REJECTED"};t&&v.markAsRejected(a).then(h=>{y.table&&y.table.refresh()})})}function L(){let e=`${window.location.origin}/estimates/pdf/${y.row.unique_hash}`;S.copyTextToClipboard(e),D.showNotification({type:"success",message:s("general.copied_pdf_url_clipboard")})}return(e,t)=>{const a=I("BaseIcon"),h=I("BaseButton"),u=I("BaseDropdownItem"),A=I("router-link"),j=I("BaseDropdown");return i(),l(j,null,{activator:r(()=>[n(k).name==="estimates.view"?(i(),l(h,{key:0,variant:"primary"},{default:r(()=>[m(a,{name:"DotsHorizontalIcon",class:"text-white"})]),_:1})):(i(),l(a,{key:1,class:"text-gray-500",name:"DotsHorizontalIcon"}))]),default:r(()=>[n(k).name==="estimates.view"?(i(),l(u,{key:0,onClick:L},{default:r(()=>[m(a,{name:"LinkIcon",class:"w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500"}),c(" "+d(e.$t("general.copy_pdf_url")),1)]),_:1})):g("",!0),n(f).hasAbilities(n(E).EDIT_ESTIMATE)?(i(),l(A,{key:1,to:`/admin/estimates/${o.row.id}/edit`},{default:r(()=>[m(u,null,{default:r(()=>[m(a,{name:"PencilIcon",class:"w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500"}),c(" "+d(e.$t("general.edit")),1)]),_:1})]),_:1},8,["to"])):g("",!0),n(f).hasAbilities(n(E).DELETE_ESTIMATE)?(i(),l(u,{key:2,onClick:t[0]||(t[0]=w=>C(o.row.id))},{default:r(()=>[m(a,{name:"TrashIcon",class:"w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500"}),c(" "+d(e.$t("general.delete")),1)]),_:1})):g("",!0),n(k).name!=="estimates.view"&&n(f).hasAbilities(n(E).VIEW_ESTIMATE)?(i(),l(A,{key:3,to:`estimates/${o.row.id}/view`},{default:r(()=>[m(u,null,{default:r(()=>[m(a,{name:"EyeIcon",class:"w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500"}),c(" "+d(e.$t("general.view")),1)]),_:1})]),_:1},8,["to"])):g("",!0),n(f).hasAbilities(n(E).CREATE_INVOICE)?(i(),l(u,{key:4,onClick:t[1]||(t[1]=w=>$(o.row.id))},{default:r(()=>[m(a,{name:"DocumentTextIcon",class:"w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500"}),c(" "+d(e.$t("estimates.convert_to_invoice")),1)]),_:1})):g("",!0),o.row.status!=="SENT"&&n(k).name!=="estimates.view"&&n(f).hasAbilities(n(E).SEND_ESTIMATE)?(i(),l(u,{key:5,onClick:t[2]||(t[2]=w=>x(o.row.id))},{default:r(()=>[m(a,{name:"CheckCircleIcon",class:"w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500"}),c(" "+d(e.$t("estimates.mark_as_sent")),1)]),_:1})):g("",!0),o.row.status!=="SENT"&&n(k).name!=="estimates.view"&&n(f).hasAbilities(n(E).SEND_ESTIMATE)?(i(),l(u,{key:6,onClick:t[3]||(t[3]=w=>b(o.row))},{default:r(()=>[m(a,{name:"PaperAirplaneIcon",class:"w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500"}),c(" "+d(e.$t("estimates.send_estimate")),1)]),_:1})):g("",!0),N(o.row)?(i(),l(u,{key:7,onClick:t[4]||(t[4]=w=>b(o.row))},{default:r(()=>[m(a,{name:"PaperAirplaneIcon",class:"w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500"}),c(" "+d(e.$t("estimates.resend_estimate")),1)]),_:1})):g("",!0),o.row.status!=="ACCEPTED"&&n(f).hasAbilities(n(E).EDIT_ESTIMATE)?(i(),l(u,{key:8,onClick:t[5]||(t[5]=w=>B(o.row.id))},{default:r(()=>[m(a,{name:"CheckCircleIcon",class:"w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500"}),c(" "+d(e.$t("estimates.mark_as_accepted")),1)]),_:1})):g("",!0),o.row.status!=="REJECTED"&&n(f).hasAbilities(n(E).EDIT_ESTIMATE)?(i(),l(u,{key:9,onClick:t[6]||(t[6]=w=>M(o.row.id))},{default:r(()=>[m(a,{name:"XCircleIcon",class:"w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500"}),c(" "+d(e.$t("estimates.mark_as_rejected")),1)]),_:1})):g("",!0)]),_:1})}}};export{q as _}; diff --git a/public/build/assets/ExchangeRateConverter-aybyIXMj.js b/public/build/assets/ExchangeRateConverter-e1MH9GPD.js similarity index 70% rename from public/build/assets/ExchangeRateConverter-aybyIXMj.js rename to public/build/assets/ExchangeRateConverter-e1MH9GPD.js index 48e9041a..3955504a 100644 --- a/public/build/assets/ExchangeRateConverter-aybyIXMj.js +++ b/public/build/assets/ExchangeRateConverter-e1MH9GPD.js @@ -1 +1 @@ -import{G as V,E as A,f as v,k as i,z as l,aA as D,r as d,aJ as F,o as x,m as G,w as h,c as N,ac as j,a as p,J as z,l as s,K as C,b as E,t as B}from"./main-B9dpPbRR.js";import{u as J}from"./exchange-rate-M4ruO0OO.js";const L={key:0},O={class:"text-gray-500 sm:text-sm"},U={class:"text-gray-400 text-xs mt-2 font-light"},H={__name:"ExchangeRateConverter",props:{v:{type:Object,default:null},isLoading:{type:Boolean,default:!1},store:{type:Object,default:null},storeProp:{type:String,default:""},isEdit:{type:Boolean,default:!1},customerCurrency:{type:[String,Number],default:null}},setup(r){const e=r,g=V(),P=A(),m=J(),f=v(!1);let n=v(!1);g.fetchCurrencies();const o=i(()=>P.selectedCompanyCurrency),c=i(()=>g.currencies.find(t=>t.id===e.store[e.storeProp].currency_id)),b=i(()=>o.value.id!==e.customerCurrency);l(()=>e.store[e.storeProp].customer,t=>{w(t)},{deep:!0}),l(()=>e.store[e.storeProp].currency_id,t=>{$(t)},{immediate:!0}),l(()=>e.customerCurrency,t=>{t&&e.isEdit&&R()},{immediate:!0});function R(){b.value&&m.checkForActiveProvider(e.customerCurrency).then(t=>{t.data.success&&(f.value=!0)})}function w(t){t?e.store[e.storeProp].currency_id=t.currency.id:e.store[e.storeProp].currency_id=o.value.id}async function $(t){t!==o.value.id?(!e.isEdit&&t&&await y(t),e.store.showExchangeRate=!0):e.store.showExchangeRate=!1}function y(t){n.value=!0,m.getCurrentExchangeRate(t).then(a=>{a.data&&!a.data.error?e.store[e.storeProp].exchange_rate=a.data.exchangeRate[0]:e.store[e.storeProp].exchange_rate="",n.value=!1}).catch(a=>{n.value=!1})}return D(()=>{e.store.showExchangeRate=!1}),(t,a)=>{const k=d("BaseIcon"),S=d("BaseInput"),I=d("BaseInputGroup"),_=F("tooltip");return r.store.showExchangeRate&&c.value?(x(),G(I,{key:0,"content-loading":s(n)&&!r.isEdit,label:t.$t("settings.exchange_rate.exchange_rate"),error:r.v.exchange_rate.$error&&r.v.exchange_rate.$errors[0].$message,required:""},{labelRight:h(()=>[f.value&&r.isEdit?(x(),N("div",L,[j(p(k,{name:"RefreshIcon",class:z(`h-4 w-4 text-primary-500 cursor-pointer outline-none ${s(n)?" animate-spin rotate-180 cursor-not-allowed pointer-events-none ":""}`),onClick:a[0]||(a[0]=u=>y(r.customerCurrency))},null,8,["class"]),[[_,{content:"Fetch Latest Exchange rate"}]])])):C("",!0)]),default:h(()=>[p(S,{modelValue:r.store[r.storeProp].exchange_rate,"onUpdate:modelValue":a[1]||(a[1]=u=>r.store[r.storeProp].exchange_rate=u),"content-loading":s(n)&&!r.isEdit,addon:`1 ${c.value.code} =`,disabled:s(n),onInput:a[2]||(a[2]=u=>r.v.exchange_rate.$touch())},{right:h(()=>[E("span",O,B(o.value.code),1)]),_:1},8,["modelValue","content-loading","addon","disabled"]),E("span",U,B(t.$t("settings.exchange_rate.exchange_help_text",{currency:c.value.code,baseCurrency:o.value.code})),1)]),_:1},8,["content-loading","label","error"])):C("",!0)}}};export{H as _}; +import{G as V,E as D,f as v,k as i,z as l,aD as F,r as d,aM as G,o as x,m as N,w as h,c as A,ac as j,a as p,J as z,l as s,K as C,b as E,t as B}from"./main-pPEsZPea.js";import{u as L}from"./exchange-rate-Md-8fXjz.js";const O={key:0},U={class:"text-gray-500 sm:text-sm"},q={class:"text-gray-400 text-xs mt-2 font-light"},M={__name:"ExchangeRateConverter",props:{v:{type:Object,default:null},isLoading:{type:Boolean,default:!1},store:{type:Object,default:null},storeProp:{type:String,default:""},isEdit:{type:Boolean,default:!1},customerCurrency:{type:[String,Number],default:null}},setup(r){const e=r,g=V(),P=D(),m=L(),f=v(!1);let n=v(!1);g.fetchCurrencies();const o=i(()=>P.selectedCompanyCurrency),c=i(()=>g.currencies.find(t=>t.id===e.store[e.storeProp].currency_id)),b=i(()=>o.value.id!==e.customerCurrency);l(()=>e.store[e.storeProp].customer,t=>{w(t)},{deep:!0}),l(()=>e.store[e.storeProp].currency_id,t=>{$(t)},{immediate:!0}),l(()=>e.customerCurrency,t=>{t&&e.isEdit&&R()},{immediate:!0});function R(){b.value&&m.checkForActiveProvider(e.customerCurrency).then(t=>{t.data.success&&(f.value=!0)})}function w(t){t?e.store[e.storeProp].currency_id=t.currency.id:e.store[e.storeProp].currency_id=o.value.id}async function $(t){t!==o.value.id?(!e.isEdit&&t&&await y(t),e.store.showExchangeRate=!0):e.store.showExchangeRate=!1}function y(t){n.value=!0,m.getCurrentExchangeRate(t).then(a=>{a.data&&!a.data.error?e.store[e.storeProp].exchange_rate=a.data.exchangeRate[0]:e.store[e.storeProp].exchange_rate="",n.value=!1}).catch(a=>{n.value=!1})}return F(()=>{e.store.showExchangeRate=!1}),(t,a)=>{const k=d("BaseIcon"),S=d("BaseInput"),I=d("BaseInputGroup"),_=G("tooltip");return r.store.showExchangeRate&&c.value?(x(),N(I,{key:0,"content-loading":s(n)&&!r.isEdit,label:t.$t("settings.exchange_rate.exchange_rate"),error:r.v.exchange_rate.$error&&r.v.exchange_rate.$errors[0].$message,required:""},{labelRight:h(()=>[f.value&&r.isEdit?(x(),A("div",O,[j(p(k,{name:"RefreshIcon",class:z(`h-4 w-4 text-primary-500 cursor-pointer outline-none ${s(n)?" animate-spin rotate-180 cursor-not-allowed pointer-events-none ":""}`),onClick:a[0]||(a[0]=u=>y(r.customerCurrency))},null,8,["class"]),[[_,{content:"Fetch Latest Exchange rate"}]])])):C("",!0)]),default:h(()=>[p(S,{modelValue:r.store[r.storeProp].exchange_rate,"onUpdate:modelValue":a[1]||(a[1]=u=>r.store[r.storeProp].exchange_rate=u),"content-loading":s(n)&&!r.isEdit,addon:`1 ${c.value.code} =`,disabled:s(n),onInput:a[2]||(a[2]=u=>r.v.exchange_rate.$touch())},{right:h(()=>[E("span",U,B(o.value.code),1)]),_:1},8,["modelValue","content-loading","addon","disabled"]),E("span",q,B(t.$t("settings.exchange_rate.exchange_help_text",{currency:c.value.code,baseCurrency:o.value.code})),1)]),_:1},8,["content-loading","label","error"])):C("",!0)}}};export{M as _}; diff --git a/public/build/assets/ExchangeRateProviderSetting-KVqEF4rd.js b/public/build/assets/ExchangeRateProviderSetting-KVqEF4rd.js new file mode 100644 index 00000000..1dcbc5be --- /dev/null +++ b/public/build/assets/ExchangeRateProviderSetting-KVqEF4rd.js @@ -0,0 +1 @@ +import{u as H}from"./exchange-rate-Md-8fXjz.js";import{v as J,f as k,F as K,k as E,g as w,h as F,ag as Y,ah as le,j as se,z as G,P as ce,r as d,o as R,m as I,w as l,b as m,p as B,t as _,l as e,a as o,q as ie,K as S,J as X,E as ue,a7 as de,a5 as ve,c as ge,az as pe,aA as he,aB as me,aC as fe,N as ye,H as _e}from"./main-pPEsZPea.js";import xe from"./BaseTable-ov5KJ7AA.js";const Ce={class:"flex justify-between w-full"},Ee={class:"px-4 md:px-8 py-8 overflow-y-auto sm:p-6"},$e={class:"z-0 flex justify-end p-4 border-t border-gray-200 border-solid"},be={__name:"ExchangeRateProviderModal",setup(Q){const{t:$}=J.useI18n();let c=k(!1),i=k(!1),x=k(!1),p=k([]),f=k([]);const y=K(),t=H();let M=k([]);const U=E(()=>({currentExchangeRate:{key:{required:w.withMessage($("validation.required"),F)},driver:{required:w.withMessage($("validation.required"),F)},currencies:{required:w.withMessage($("validation.required"),F)}},currencyConverter:{type:{required:w.withMessage($("validation.required"),Y(s))},url:{required:w.withMessage($("validation.required"),Y(C)),url:w.withMessage($("validation.invalid_url"),le)}}})),z=E(()=>t.drivers.map(r=>Object.assign({},r,{key:$(r.key)}))),A=E(()=>y.active&&y.componentName==="ExchangeRateProviderModal");E(()=>y.title);const s=E(()=>t.currentExchangeRate.driver==="currency_converter"),C=E(()=>t.currencyConverter&&t.currencyConverter.type==="DEDICATED"),V=E(()=>{switch(t.currentExchangeRate.driver){case"currency_converter":return"https://www.currencyconverterapi.com";case"currency_freak":return"https://currencyfreaks.com";case"currency_layer":return"https://currencylayer.com";case"open_exchange_rate":return"https://openexchangerates.org";default:return""}}),n=se(U,E(()=>t));function D(){p.value=[]}function j(){const{currencies:r}=t.currentExchangeRate;p.value.forEach(a=>{r.forEach((g,h)=>{g===a&&r.splice(h,1)})}),p.value=[]}function q(){t.currentExchangeRate.key=null,t.currentExchangeRate.currencies=[],t.supportedCurrencies=[]}function v(){t.supportedCurrencies=[],f.value=[],t.currentExchangeRate={id:null,name:"",driver:"",key:"",active:!0,currencies:[]},t.currencyConverter={type:"",url:""},p.value=[]}async function O(){t.currentExchangeRate.driver="currency_converter";let r={};t.isEdit&&(r.provider_id=t.currentExchangeRate.id),i.value=!0,await t.fetchDefaultProviders(),await t.fetchActiveCurrency(r),f.value=t.currentExchangeRate.currencies,i.value=!1}G(()=>s.value,(r,a)=>{r&&ee()},{immediate:!0}),G(()=>t.currentExchangeRate.key,(r,a)=>{r&&P()}),G(()=>{var r;return(r=t==null?void 0:t.currencyConverter)==null?void 0:r.type},(r,a)=>{r&&P()}),P=ce.debounce(P,500);function W(){return n.value.$touch(),te(),!!(n.value.$invalid||p.value.length&&t.currentExchangeRate.active)}async function Z(){if(W())return!0;let r={...t.currentExchangeRate};s.value&&(r.driver_config={...t.currencyConverter},C.value||(r.driver_config.url=""));const a=t.isEdit?t.updateProvider:t.addProvider;c.value=!0,await a(r).then(g=>{c.value=!1,y.refreshData&&y.refreshData(),N()}).catch(g=>{c.value=!1})}async function ee(){let r=await t.getCurrencyConverterServers();M.value=r.data.currency_converter_servers,t.currencyConverter.type="FREE"}function P(){var g;const{driver:r,key:a}=t.currentExchangeRate;if(r&&a){x.value=!0;let h={driver:r,key:a};if(s.value&&!t.currencyConverter.type){x.value=!1;return}(g=t==null?void 0:t.currencyConverter)!=null&&g.type&&(h.type=t.currencyConverter.type),t.fetchCurrencies(h).then(b=>{x.value=!1}).catch(b=>{x.value=!1})}}function te(r=!0){var g;p.value=[];const{currencies:a}=t.currentExchangeRate;a.length&&((g=t.activeUsedCurrencies)!=null&&g.length)&&a.forEach(h=>{t.activeUsedCurrencies.includes(h)&&p.value.push(h)})}function N(){y.closeModal(),setTimeout(()=>{v(),n.value.$reset()},300)}return(r,a)=>{const g=d("BaseIcon"),h=d("BaseMultiselect"),b=d("BaseInputGroup"),L=d("BaseInput"),re=d("BaseSwitch"),ae=d("BaseInputGrid"),ne=d("BaseInfoAlert"),T=d("BaseButton"),oe=d("BaseModal");return R(),I(oe,{show:A.value,onClose:N,onOpen:O},{header:l(()=>[m("div",Ce,[B(_(e(y).title)+" ",1),o(g,{name:"XIcon",class:"w-6 h-6 text-gray-500 cursor-pointer",onClick:N})])]),default:l(()=>[m("form",{onSubmit:ie(Z,["prevent"])},[m("div",Ee,[o(ae,{layout:"one-column"},{default:l(()=>[o(b,{label:r.$t("settings.exchange_rate.driver"),"content-loading":e(i),required:"",error:e(n).currentExchangeRate.driver.$error&&e(n).currentExchangeRate.driver.$errors[0].$message,"help-text":V.value},{default:l(()=>[o(h,{modelValue:e(t).currentExchangeRate.driver,"onUpdate:modelValue":[a[0]||(a[0]=u=>e(t).currentExchangeRate.driver=u),q],options:z.value,"content-loading":e(i),"value-prop":"value","can-deselect":!0,label:"key",searchable:!0,invalid:e(n).currentExchangeRate.driver.$error,"track-by":"key",onInput:a[1]||(a[1]=u=>e(n).currentExchangeRate.driver.$touch())},null,8,["modelValue","options","content-loading","invalid"])]),_:1},8,["label","content-loading","error","help-text"]),s.value?(R(),I(b,{key:0,required:"",label:r.$t("settings.exchange_rate.server"),"content-loading":e(i),error:e(n).currencyConverter.type.$error&&e(n).currencyConverter.type.$errors[0].$message},{default:l(()=>[o(h,{modelValue:e(t).currencyConverter.type,"onUpdate:modelValue":[a[2]||(a[2]=u=>e(t).currencyConverter.type=u),q],"content-loading":e(i),"value-prop":"value",searchable:"",options:e(M),invalid:e(n).currencyConverter.type.$error,label:"value","track-by":"value"},null,8,["modelValue","content-loading","options","invalid"])]),_:1},8,["label","content-loading","error"])):S("",!0),o(b,{label:r.$t("settings.exchange_rate.key"),required:"","content-loading":e(i),error:e(n).currentExchangeRate.key.$error&&e(n).currentExchangeRate.key.$errors[0].$message},{default:l(()=>[o(L,{modelValue:e(t).currentExchangeRate.key,"onUpdate:modelValue":a[3]||(a[3]=u=>e(t).currentExchangeRate.key=u),"content-loading":e(i),type:"text",name:"key",loading:e(x),"loading-position":"right",invalid:e(n).currentExchangeRate.key.$error},null,8,["modelValue","content-loading","loading","invalid"])]),_:1},8,["label","content-loading","error"]),e(t).supportedCurrencies.length?(R(),I(b,{key:1,label:r.$t("settings.exchange_rate.currency"),"content-loading":e(i),error:e(n).currentExchangeRate.currencies.$error&&e(n).currentExchangeRate.currencies.$errors[0].$message,"help-text":r.$t("settings.exchange_rate.currency_help_text")},{default:l(()=>[o(h,{modelValue:e(t).currentExchangeRate.currencies,"onUpdate:modelValue":a[4]||(a[4]=u=>e(t).currentExchangeRate.currencies=u),"content-loading":e(i),"value-prop":"code",mode:"tags",searchable:"",options:e(t).supportedCurrencies,invalid:e(n).currentExchangeRate.currencies.$error,label:"code","track-by":"code","open-direction":"top",onInput:a[5]||(a[5]=u=>e(n).currentExchangeRate.currencies.$touch())},null,8,["modelValue","content-loading","options","invalid"])]),_:1},8,["label","content-loading","error","help-text"])):S("",!0),C.value?(R(),I(b,{key:2,label:r.$t("settings.exchange_rate.url"),"content-loading":e(i),error:e(n).currencyConverter.url.$error&&e(n).currencyConverter.url.$errors[0].$message},{default:l(()=>[o(L,{modelValue:e(t).currencyConverter.url,"onUpdate:modelValue":a[6]||(a[6]=u=>e(t).currencyConverter.url=u),"content-loading":e(i),type:"url",invalid:e(n).currencyConverter.url.$error,onInput:a[7]||(a[7]=u=>e(n).currencyConverter.url.$touch())},null,8,["modelValue","content-loading","invalid"])]),_:1},8,["label","content-loading","error"])):S("",!0),o(re,{modelValue:e(t).currentExchangeRate.active,"onUpdate:modelValue":a[8]||(a[8]=u=>e(t).currentExchangeRate.active=u),class:"flex","label-right":r.$t("settings.exchange_rate.active")},null,8,["modelValue","label-right"])]),_:1}),e(p).length&&e(t).currentExchangeRate.active?(R(),I(ne,{key:0,class:"mt-5",title:r.$t("settings.exchange_rate.currency_in_used"),lists:[e(p).toString()],actions:["Remove"],onHide:D,onRemove:j},null,8,["title","lists"])):S("",!0)]),m("div",$e,[o(T,{class:"mr-3",variant:"primary-outline",type:"button",disabled:e(c),onClick:N},{default:l(()=>[B(_(r.$t("general.cancel")),1)]),_:1},8,["disabled"]),o(T,{loading:e(c),disabled:e(c)||e(x),variant:"primary",type:"submit"},{left:l(u=>[e(c)?S("",!0):(R(),I(g,{key:0,name:"SaveIcon",class:X(u.class)},null,8,["class"]))]),default:l(()=>[B(" "+_(e(t).isEdit?r.$t("general.update"):r.$t("general.save")),1)]),_:1},8,["loading","disabled"])])],32)]),_:1},8,["show"])}}},ke={slot:"header",class:"flex flex-wrap justify-between lg:flex-nowrap"},Re={class:"text-lg font-medium text-left"},Be={class:"mt-2 text-sm leading-snug text-left text-gray-500",style:{"max-width":"680px"}},we={class:"mt-4 lg:mt-0 lg:ml-2"},Ie={class:"capitalize"},Ve={class:"inline-block"},qe={__name:"ExchangeRateProviderSetting",setup(Q){const{tm:$,t:c}=J.useI18n();ue();const i=H(),x=K(),p=de();let f=k("");const y=ve("utils"),t=E(()=>[{key:"driver",label:c("settings.exchange_rate.driver"),thClass:"extra",tdClass:"font-medium text-gray-900"},{key:"key",label:c("settings.exchange_rate.key"),thClass:"extra",tdClass:"font-medium text-gray-900"},{key:"active",label:c("settings.exchange_rate.active"),thClass:"extra",tdClass:"font-medium text-gray-900"},{key:"actions",label:"",tdClass:"text-right text-sm font-medium",sortable:!1}]);async function M({page:s,sort:C}){let V=_e({orderByField:C.fieldName||"created_at",orderBy:C.order||"desc",page:s}),n=await i.fetchProviders(V);return{data:n.data.data,pagination:{totalPages:n.data.meta.last_page,currentPage:s,totalCount:n.data.meta.total,limit:5}}}function U(){x.openModal({title:c("settings.exchange_rate.new_driver"),componentName:"ExchangeRateProviderModal",size:"md",refreshData:f.value&&f.value.refresh})}function z(s){i.fetchProvider(s),x.openModal({title:c("settings.exchange_rate.edit_driver"),componentName:"ExchangeRateProviderModal",size:"md",data:s,refreshData:f.value&&f.value.refresh})}function A(s){p.openDialog({title:c("general.are_you_sure"),message:c("settings.exchange_rate.exchange_rate_confirm_delete"),yesLabel:c("general.ok"),noLabel:c("general.cancel"),variant:"danger",hideNoButton:!1,size:"lg"}).then(async C=>{C&&(await i.deleteExchangeRate(s),f.value&&f.value.refresh())})}return(s,C)=>{const V=d("BaseButton"),n=d("BaseBadge"),D=d("BaseDropdownItem"),j=d("BaseDropdown"),q=d("BaseCard");return R(),ge(ye,null,[o(be),o(q,null,{default:l(()=>[m("div",ke,[m("div",null,[m("h6",Re,_(s.$t("settings.menu_title.exchange_rate")),1),m("p",Be,_(s.$t("settings.exchange_rate.providers_description")),1)]),m("div",we,[o(V,{variant:"primary-outline",size:"lg",onClick:U},{left:l(v=>[o(e(pe),{class:X(v.class)},null,8,["class"])]),default:l(()=>[B(" "+_(s.$t("settings.exchange_rate.new_driver")),1)]),_:1})])]),o(xe,{ref_key:"table",ref:f,class:"mt-16",data:M,columns:t.value},{"cell-driver":l(({row:v})=>[m("span",Ie,_(v.data.driver.replace("_"," ")),1)]),"cell-active":l(({row:v})=>[o(n,{"bg-color":e(y).getBadgeStatusColor(v.data.active?"YES":"NO").bgColor,color:e(y).getBadgeStatusColor(v.data.active?"YES":"NO").color},{default:l(()=>[B(_(v.data.active?"YES":"NO"),1)]),_:2},1032,["bg-color","color"])]),"cell-actions":l(({row:v})=>[o(j,null,{activator:l(()=>[m("div",Ve,[o(e(he),{class:"w-5 text-gray-500"})])]),default:l(()=>[o(D,{onClick:O=>z(v.data.id)},{default:l(()=>[o(e(me),{class:"h-5 mr-3 text-gray-600"}),B(" "+_(s.$t("general.edit")),1)]),_:2},1032,["onClick"]),o(D,{onClick:O=>A(v.data.id)},{default:l(()=>[o(e(fe),{class:"h-5 mr-3 text-gray-600"}),B(" "+_(s.$t("general.delete")),1)]),_:2},1032,["onClick"])]),_:2},1024)]),_:1},8,["columns"])]),_:1})],64)}}};export{qe as default}; diff --git a/public/build/assets/ExchangeRateProviderSetting-NqjYUdkP.js b/public/build/assets/ExchangeRateProviderSetting-NqjYUdkP.js deleted file mode 100644 index 48d805fe..00000000 --- a/public/build/assets/ExchangeRateProviderSetting-NqjYUdkP.js +++ /dev/null @@ -1 +0,0 @@ -import{u as J}from"./exchange-rate-M4ruO0OO.js";import{v as K,f as k,F as X,k as E,g as w,h as G,ag as Y,ah as se,j as ce,z as T,P as ie,r as d,o as R,m as I,w as l,b as m,p as B,t as _,l as e,a as o,q as ue,K as S,J as Q,E as de,a7 as ve,a5 as ge,c as he,az as z,N as pe,H as me}from"./main-B9dpPbRR.js";import fe from"./BaseTable-ZLDzRGeZ.js";const ye={class:"flex justify-between w-full"},_e={class:"px-4 md:px-8 py-8 overflow-y-auto sm:p-6"},xe={class:"z-0 flex justify-end p-4 border-t border-gray-200 border-solid"},Ce={__name:"ExchangeRateProviderModal",setup(W){const{t:$}=K.useI18n();let c=k(!1),i=k(!1),x=k(!1),h=k([]),f=k([]);const y=X(),t=J();let D=k([]);const U=E(()=>({currentExchangeRate:{key:{required:w.withMessage($("validation.required"),G)},driver:{required:w.withMessage($("validation.required"),G)},currencies:{required:w.withMessage($("validation.required"),G)}},currencyConverter:{type:{required:w.withMessage($("validation.required"),Y(s))},url:{required:w.withMessage($("validation.required"),Y(C)),url:w.withMessage($("validation.invalid_url"),se)}}})),j=E(()=>t.drivers.map(r=>Object.assign({},r,{key:$(r.key)}))),A=E(()=>y.active&&y.componentName==="ExchangeRateProviderModal");E(()=>y.title);const s=E(()=>t.currentExchangeRate.driver==="currency_converter"),C=E(()=>t.currencyConverter&&t.currencyConverter.type==="DEDICATED"),V=E(()=>{switch(t.currentExchangeRate.driver){case"currency_converter":return"https://www.currencyconverterapi.com";case"currency_freak":return"https://currencyfreaks.com";case"currency_layer":return"https://currencylayer.com";case"open_exchange_rate":return"https://openexchangerates.org";default:return""}}),n=ce(U,E(()=>t));function M(){h.value=[]}function O(){const{currencies:r}=t.currentExchangeRate;h.value.forEach(a=>{r.forEach((g,p)=>{g===a&&r.splice(p,1)})}),h.value=[]}function q(){t.currentExchangeRate.key=null,t.currentExchangeRate.currencies=[],t.supportedCurrencies=[]}function v(){t.supportedCurrencies=[],f.value=[],t.currentExchangeRate={id:null,name:"",driver:"",key:"",active:!0,currencies:[]},t.currencyConverter={type:"",url:""},h.value=[]}async function F(){t.currentExchangeRate.driver="currency_converter";let r={};t.isEdit&&(r.provider_id=t.currentExchangeRate.id),i.value=!0,await t.fetchDefaultProviders(),await t.fetchActiveCurrency(r),f.value=t.currentExchangeRate.currencies,i.value=!1}T(()=>s.value,(r,a)=>{r&&te()},{immediate:!0}),T(()=>t.currentExchangeRate.key,(r,a)=>{r&&P()}),T(()=>{var r;return(r=t==null?void 0:t.currencyConverter)==null?void 0:r.type},(r,a)=>{r&&P()}),P=ie.debounce(P,500);function Z(){return n.value.$touch(),re(),!!(n.value.$invalid||h.value.length&&t.currentExchangeRate.active)}async function ee(){if(Z())return!0;let r={...t.currentExchangeRate};s.value&&(r.driver_config={...t.currencyConverter},C.value||(r.driver_config.url=""));const a=t.isEdit?t.updateProvider:t.addProvider;c.value=!0,await a(r).then(g=>{c.value=!1,y.refreshData&&y.refreshData(),N()}).catch(g=>{c.value=!1})}async function te(){let r=await t.getCurrencyConverterServers();D.value=r.data.currency_converter_servers,t.currencyConverter.type="FREE"}function P(){var g;const{driver:r,key:a}=t.currentExchangeRate;if(r&&a){x.value=!0;let p={driver:r,key:a};if(s.value&&!t.currencyConverter.type){x.value=!1;return}(g=t==null?void 0:t.currencyConverter)!=null&&g.type&&(p.type=t.currencyConverter.type),t.fetchCurrencies(p).then(b=>{x.value=!1}).catch(b=>{x.value=!1})}}function re(r=!0){var g;h.value=[];const{currencies:a}=t.currentExchangeRate;a.length&&((g=t.activeUsedCurrencies)!=null&&g.length)&&a.forEach(p=>{t.activeUsedCurrencies.includes(p)&&h.value.push(p)})}function N(){y.closeModal(),setTimeout(()=>{v(),n.value.$reset()},300)}return(r,a)=>{const g=d("BaseIcon"),p=d("BaseMultiselect"),b=d("BaseInputGroup"),H=d("BaseInput"),ae=d("BaseSwitch"),ne=d("BaseInputGrid"),oe=d("BaseInfoAlert"),L=d("BaseButton"),le=d("BaseModal");return R(),I(le,{show:A.value,onClose:N,onOpen:F},{header:l(()=>[m("div",ye,[B(_(e(y).title)+" ",1),o(g,{name:"XIcon",class:"w-6 h-6 text-gray-500 cursor-pointer",onClick:N})])]),default:l(()=>[m("form",{onSubmit:ue(ee,["prevent"])},[m("div",_e,[o(ne,{layout:"one-column"},{default:l(()=>[o(b,{label:r.$t("settings.exchange_rate.driver"),"content-loading":e(i),required:"",error:e(n).currentExchangeRate.driver.$error&&e(n).currentExchangeRate.driver.$errors[0].$message,"help-text":V.value},{default:l(()=>[o(p,{modelValue:e(t).currentExchangeRate.driver,"onUpdate:modelValue":[a[0]||(a[0]=u=>e(t).currentExchangeRate.driver=u),q],options:j.value,"content-loading":e(i),"value-prop":"value","can-deselect":!0,label:"key",searchable:!0,invalid:e(n).currentExchangeRate.driver.$error,"track-by":"key",onInput:a[1]||(a[1]=u=>e(n).currentExchangeRate.driver.$touch())},null,8,["modelValue","options","content-loading","invalid"])]),_:1},8,["label","content-loading","error","help-text"]),s.value?(R(),I(b,{key:0,required:"",label:r.$t("settings.exchange_rate.server"),"content-loading":e(i),error:e(n).currencyConverter.type.$error&&e(n).currencyConverter.type.$errors[0].$message},{default:l(()=>[o(p,{modelValue:e(t).currencyConverter.type,"onUpdate:modelValue":[a[2]||(a[2]=u=>e(t).currencyConverter.type=u),q],"content-loading":e(i),"value-prop":"value",searchable:"",options:e(D),invalid:e(n).currencyConverter.type.$error,label:"value","track-by":"value"},null,8,["modelValue","content-loading","options","invalid"])]),_:1},8,["label","content-loading","error"])):S("",!0),o(b,{label:r.$t("settings.exchange_rate.key"),required:"","content-loading":e(i),error:e(n).currentExchangeRate.key.$error&&e(n).currentExchangeRate.key.$errors[0].$message},{default:l(()=>[o(H,{modelValue:e(t).currentExchangeRate.key,"onUpdate:modelValue":a[3]||(a[3]=u=>e(t).currentExchangeRate.key=u),"content-loading":e(i),type:"text",name:"key",loading:e(x),"loading-position":"right",invalid:e(n).currentExchangeRate.key.$error},null,8,["modelValue","content-loading","loading","invalid"])]),_:1},8,["label","content-loading","error"]),e(t).supportedCurrencies.length?(R(),I(b,{key:1,label:r.$t("settings.exchange_rate.currency"),"content-loading":e(i),error:e(n).currentExchangeRate.currencies.$error&&e(n).currentExchangeRate.currencies.$errors[0].$message,"help-text":r.$t("settings.exchange_rate.currency_help_text")},{default:l(()=>[o(p,{modelValue:e(t).currentExchangeRate.currencies,"onUpdate:modelValue":a[4]||(a[4]=u=>e(t).currentExchangeRate.currencies=u),"content-loading":e(i),"value-prop":"code",mode:"tags",searchable:"",options:e(t).supportedCurrencies,invalid:e(n).currentExchangeRate.currencies.$error,label:"code","track-by":"code","open-direction":"top",onInput:a[5]||(a[5]=u=>e(n).currentExchangeRate.currencies.$touch())},null,8,["modelValue","content-loading","options","invalid"])]),_:1},8,["label","content-loading","error","help-text"])):S("",!0),C.value?(R(),I(b,{key:2,label:r.$t("settings.exchange_rate.url"),"content-loading":e(i),error:e(n).currencyConverter.url.$error&&e(n).currencyConverter.url.$errors[0].$message},{default:l(()=>[o(H,{modelValue:e(t).currencyConverter.url,"onUpdate:modelValue":a[6]||(a[6]=u=>e(t).currencyConverter.url=u),"content-loading":e(i),type:"url",invalid:e(n).currencyConverter.url.$error,onInput:a[7]||(a[7]=u=>e(n).currencyConverter.url.$touch())},null,8,["modelValue","content-loading","invalid"])]),_:1},8,["label","content-loading","error"])):S("",!0),o(ae,{modelValue:e(t).currentExchangeRate.active,"onUpdate:modelValue":a[8]||(a[8]=u=>e(t).currentExchangeRate.active=u),class:"flex","label-right":r.$t("settings.exchange_rate.active")},null,8,["modelValue","label-right"])]),_:1}),e(h).length&&e(t).currentExchangeRate.active?(R(),I(oe,{key:0,class:"mt-5",title:r.$t("settings.exchange_rate.currency_in_used"),lists:[e(h).toString()],actions:["Remove"],onHide:M,onRemove:O},null,8,["title","lists"])):S("",!0)]),m("div",xe,[o(L,{class:"mr-3",variant:"primary-outline",type:"button",disabled:e(c),onClick:N},{default:l(()=>[B(_(r.$t("general.cancel")),1)]),_:1},8,["disabled"]),o(L,{loading:e(c),disabled:e(c)||e(x),variant:"primary",type:"submit"},{left:l(u=>[e(c)?S("",!0):(R(),I(g,{key:0,name:"SaveIcon",class:Q(u.class)},null,8,["class"]))]),default:l(()=>[B(" "+_(e(t).isEdit?r.$t("general.update"):r.$t("general.save")),1)]),_:1},8,["loading","disabled"])])],32)]),_:1},8,["show"])}}},Ee={slot:"header",class:"flex flex-wrap justify-between lg:flex-nowrap"},$e={class:"text-lg font-medium text-left"},be={class:"mt-2 text-sm leading-snug text-left text-gray-500",style:{"max-width":"680px"}},ke={class:"mt-4 lg:mt-0 lg:ml-2"},Re={class:"capitalize"},Be={class:"inline-block"},Se={__name:"ExchangeRateProviderSetting",setup(W){const{tm:$,t:c}=K.useI18n();de();const i=J(),x=X(),h=ve();let f=k("");const y=ge("utils"),t=E(()=>[{key:"driver",label:c("settings.exchange_rate.driver"),thClass:"extra",tdClass:"font-medium text-gray-900"},{key:"key",label:c("settings.exchange_rate.key"),thClass:"extra",tdClass:"font-medium text-gray-900"},{key:"active",label:c("settings.exchange_rate.active"),thClass:"extra",tdClass:"font-medium text-gray-900"},{key:"actions",label:"",tdClass:"text-right text-sm font-medium",sortable:!1}]);async function D({page:s,sort:C}){let V=me({orderByField:C.fieldName||"created_at",orderBy:C.order||"desc",page:s}),n=await i.fetchProviders(V);return{data:n.data.data,pagination:{totalPages:n.data.meta.last_page,currentPage:s,totalCount:n.data.meta.total,limit:5}}}function U(){x.openModal({title:c("settings.exchange_rate.new_driver"),componentName:"ExchangeRateProviderModal",size:"md",refreshData:f.value&&f.value.refresh})}function j(s){i.fetchProvider(s),x.openModal({title:c("settings.exchange_rate.edit_driver"),componentName:"ExchangeRateProviderModal",size:"md",data:s,refreshData:f.value&&f.value.refresh})}function A(s){h.openDialog({title:c("general.are_you_sure"),message:c("settings.exchange_rate.exchange_rate_confirm_delete"),yesLabel:c("general.ok"),noLabel:c("general.cancel"),variant:"danger",hideNoButton:!1,size:"lg"}).then(async C=>{C&&(await i.deleteExchangeRate(s),f.value&&f.value.refresh())})}return(s,C)=>{const V=d("BaseButton"),n=d("BaseBadge"),M=d("BaseDropdownItem"),O=d("BaseDropdown"),q=d("BaseCard");return R(),he(pe,null,[o(Ce),o(q,null,{default:l(()=>[m("div",Ee,[m("div",null,[m("h6",$e,_(s.$t("settings.menu_title.exchange_rate")),1),m("p",be,_(s.$t("settings.exchange_rate.providers_description")),1)]),m("div",ke,[o(V,{variant:"primary-outline",size:"lg",onClick:U},{left:l(v=>[o(e(z.PlusIcon),{class:Q(v.class)},null,8,["class"])]),default:l(()=>[B(" "+_(s.$t("settings.exchange_rate.new_driver")),1)]),_:1})])]),o(fe,{ref_key:"table",ref:f,class:"mt-16",data:D,columns:t.value},{"cell-driver":l(({row:v})=>[m("span",Re,_(v.data.driver.replace("_"," ")),1)]),"cell-active":l(({row:v})=>[o(n,{"bg-color":e(y).getBadgeStatusColor(v.data.active?"YES":"NO").bgColor,color:e(y).getBadgeStatusColor(v.data.active?"YES":"NO").color},{default:l(()=>[B(_(v.data.active?"YES":"NO"),1)]),_:2},1032,["bg-color","color"])]),"cell-actions":l(({row:v})=>[o(O,null,{activator:l(()=>[m("div",Be,[o(e(z.DotsHorizontalIcon),{class:"w-5 text-gray-500"})])]),default:l(()=>[o(M,{onClick:F=>j(v.data.id)},{default:l(()=>[o(e(z.PencilIcon),{class:"h-5 mr-3 text-gray-600"}),B(" "+_(s.$t("general.edit")),1)]),_:2},1032,["onClick"]),o(M,{onClick:F=>A(v.data.id)},{default:l(()=>[o(e(z.TrashIcon),{class:"h-5 mr-3 text-gray-600"}),B(" "+_(s.$t("general.delete")),1)]),_:2},1032,["onClick"])]),_:2},1024)]),_:1},8,["columns"])]),_:1})],64)}}};export{Se as default}; diff --git a/public/build/assets/ExpenseCategorySetting-GOeo_7eH.js b/public/build/assets/ExpenseCategorySetting-Wu-FV_aV.js similarity index 94% rename from public/build/assets/ExpenseCategorySetting-GOeo_7eH.js rename to public/build/assets/ExpenseCategorySetting-Wu-FV_aV.js index 86d15f8a..5dbb0b4a 100644 --- a/public/build/assets/ExpenseCategorySetting-GOeo_7eH.js +++ b/public/build/assets/ExpenseCategorySetting-Wu-FV_aV.js @@ -1 +1 @@ -import{a7 as k,u as M,v as E,L as T,M as z,F as I,a5 as P,r as c,o as m,m as p,w as e,l as g,a as s,Q as v,p as D,t as C,K as w,f as j,k as F,c as L,J as V,b as S,N as A}from"./main-B9dpPbRR.js";import{u as N}from"./category-PmZRvdLB.js";import{_ as H}from"./CategoryModal-rNWu40xq.js";const O={__name:"ExpenseCategoryIndexDropdown",props:{row:{type:Object,default:null},table:{type:Object,default:null},loadData:{type:Function,default:null}},setup(y){const i=y,x=k();M();const{t:a}=E.useI18n(),o=N(),B=T(),_=z(),h=I();P("utils");function b(r){o.fetchCategory(r),h.openModal({title:a("settings.expense_category.edit_category"),componentName:"CategoryModal",refreshData:i.loadData,size:"sm"})}function n(r){x.openDialog({title:a("general.are_you_sure"),message:a("settings.expense_category.confirm_delete"),yesLabel:a("general.ok"),noLabel:a("general.cancel"),variant:"danger",hideNoButton:!1,size:"lg"}).then(async()=>{if((await o.deleteCategory(r)).data.success)return i.loadData&&i.loadData(),!0;i.loadData&&i.loadData()})}return(r,t)=>{const l=c("BaseIcon"),d=c("BaseButton"),f=c("BaseDropdownItem"),u=c("BaseDropdown");return m(),p(u,null,{activator:e(()=>[g(B).name==="expenseCategorys.view"?(m(),p(d,{key:0,variant:"primary"},{default:e(()=>[s(l,{name:"DotsHorizontalIcon",class:"h-5 text-white"})]),_:1})):(m(),p(l,{key:1,name:"DotsHorizontalIcon",class:"h-5 text-gray-500"}))]),default:e(()=>[g(_).hasAbilities(g(v).EDIT_EXPENSE)?(m(),p(f,{key:0,onClick:t[0]||(t[0]=$=>b(y.row.id))},{default:e(()=>[s(l,{name:"PencilIcon",class:"w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500"}),D(" "+C(r.$t("general.edit")),1)]),_:1})):w("",!0),g(_).hasAbilities(g(v).DELETE_EXPENSE)?(m(),p(f,{key:1,onClick:t[1]||(t[1]=$=>n(y.row.id))},{default:e(()=>[s(l,{name:"TrashIcon",class:"w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500"}),D(" "+C(r.$t("general.delete")),1)]),_:1})):w("",!0)]),_:1})}}},X={class:"w-64"},J={class:"truncate"},U={__name:"ExpenseCategorySetting",setup(y){const i=N();k();const x=I(),{t:a}=E.useI18n(),o=j(null),B=F(()=>[{key:"name",label:a("settings.expense_category.category_name"),thClass:"extra",tdClass:"font-medium text-gray-900"},{key:"description",label:a("settings.expense_category.category_description"),thClass:"extra",tdClass:"font-medium text-gray-900"},{key:"actions",label:"",tdClass:"text-right text-sm font-medium",sortable:!1}]);async function _({page:n,filter:r,sort:t}){let l={orderByField:t.fieldName||"created_at",orderBy:t.order||"desc",page:n},d=await i.fetchCategories(l);return{data:d.data.data,pagination:{totalPages:d.data.meta.last_page,currentPage:n,totalCount:d.data.meta.total,limit:5}}}function h(){x.openModal({title:a("settings.expense_category.add_category"),componentName:"CategoryModal",size:"sm",refreshData:o.value&&o.value.refresh})}async function b(){o.value&&o.value.refresh()}return(n,r)=>{const t=c("BaseIcon"),l=c("BaseButton"),d=c("BaseTable"),f=c("BaseSettingCard");return m(),L(A,null,[s(H),s(f,{title:n.$t("settings.expense_category.title"),description:n.$t("settings.expense_category.description")},{action:e(()=>[s(l,{variant:"primary-outline",type:"button",onClick:h},{left:e(u=>[s(t,{class:V(u.class),name:"PlusIcon"},null,8,["class"])]),default:e(()=>[D(" "+C(n.$t("settings.expense_category.add_new_category")),1)]),_:1})]),default:e(()=>[s(d,{ref_key:"table",ref:o,data:_,columns:B.value,class:"mt-16"},{"cell-description":e(({row:u})=>[S("div",X,[S("p",J,C(u.data.description),1)])]),"cell-actions":e(({row:u})=>[s(O,{row:u.data,table:o.value,"load-data":b},null,8,["row","table"])]),_:1},8,["columns"])]),_:1},8,["title","description"])],64)}}};export{U as default}; +import{a7 as k,u as M,v as E,L as T,M as z,F as I,a5 as P,r as c,o as m,m as p,w as e,l as g,a as s,Q as v,p as D,t as C,K as w,f as j,k as F,c as L,J as V,b as S,N as A}from"./main-pPEsZPea.js";import{u as N}from"./category-NTufFTmR.js";import{_ as H}from"./CategoryModal-ITqne-Qo.js";const O={__name:"ExpenseCategoryIndexDropdown",props:{row:{type:Object,default:null},table:{type:Object,default:null},loadData:{type:Function,default:null}},setup(y){const i=y,x=k();M();const{t:a}=E.useI18n(),o=N(),B=T(),_=z(),h=I();P("utils");function b(r){o.fetchCategory(r),h.openModal({title:a("settings.expense_category.edit_category"),componentName:"CategoryModal",refreshData:i.loadData,size:"sm"})}function n(r){x.openDialog({title:a("general.are_you_sure"),message:a("settings.expense_category.confirm_delete"),yesLabel:a("general.ok"),noLabel:a("general.cancel"),variant:"danger",hideNoButton:!1,size:"lg"}).then(async()=>{if((await o.deleteCategory(r)).data.success)return i.loadData&&i.loadData(),!0;i.loadData&&i.loadData()})}return(r,t)=>{const l=c("BaseIcon"),d=c("BaseButton"),f=c("BaseDropdownItem"),u=c("BaseDropdown");return m(),p(u,null,{activator:e(()=>[g(B).name==="expenseCategorys.view"?(m(),p(d,{key:0,variant:"primary"},{default:e(()=>[s(l,{name:"DotsHorizontalIcon",class:"h-5 text-white"})]),_:1})):(m(),p(l,{key:1,name:"DotsHorizontalIcon",class:"h-5 text-gray-500"}))]),default:e(()=>[g(_).hasAbilities(g(v).EDIT_EXPENSE)?(m(),p(f,{key:0,onClick:t[0]||(t[0]=$=>b(y.row.id))},{default:e(()=>[s(l,{name:"PencilIcon",class:"w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500"}),D(" "+C(r.$t("general.edit")),1)]),_:1})):w("",!0),g(_).hasAbilities(g(v).DELETE_EXPENSE)?(m(),p(f,{key:1,onClick:t[1]||(t[1]=$=>n(y.row.id))},{default:e(()=>[s(l,{name:"TrashIcon",class:"w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500"}),D(" "+C(r.$t("general.delete")),1)]),_:1})):w("",!0)]),_:1})}}},X={class:"w-64"},J={class:"truncate"},U={__name:"ExpenseCategorySetting",setup(y){const i=N();k();const x=I(),{t:a}=E.useI18n(),o=j(null),B=F(()=>[{key:"name",label:a("settings.expense_category.category_name"),thClass:"extra",tdClass:"font-medium text-gray-900"},{key:"description",label:a("settings.expense_category.category_description"),thClass:"extra",tdClass:"font-medium text-gray-900"},{key:"actions",label:"",tdClass:"text-right text-sm font-medium",sortable:!1}]);async function _({page:n,filter:r,sort:t}){let l={orderByField:t.fieldName||"created_at",orderBy:t.order||"desc",page:n},d=await i.fetchCategories(l);return{data:d.data.data,pagination:{totalPages:d.data.meta.last_page,currentPage:n,totalCount:d.data.meta.total,limit:5}}}function h(){x.openModal({title:a("settings.expense_category.add_category"),componentName:"CategoryModal",size:"sm",refreshData:o.value&&o.value.refresh})}async function b(){o.value&&o.value.refresh()}return(n,r)=>{const t=c("BaseIcon"),l=c("BaseButton"),d=c("BaseTable"),f=c("BaseSettingCard");return m(),L(A,null,[s(H),s(f,{title:n.$t("settings.expense_category.title"),description:n.$t("settings.expense_category.description")},{action:e(()=>[s(l,{variant:"primary-outline",type:"button",onClick:h},{left:e(u=>[s(t,{class:V(u.class),name:"PlusIcon"},null,8,["class"])]),default:e(()=>[D(" "+C(n.$t("settings.expense_category.add_new_category")),1)]),_:1})]),default:e(()=>[s(d,{ref_key:"table",ref:o,data:_,columns:B.value,class:"mt-16"},{"cell-description":e(({row:u})=>[S("div",X,[S("p",J,C(u.data.description),1)])]),"cell-actions":e(({row:u})=>[s(O,{row:u.data,table:o.value,"load-data":b},null,8,["row","table"])]),_:1},8,["columns"])]),_:1},8,["title","description"])],64)}}};export{U as default}; diff --git a/public/build/assets/FileDiskSetting-1PjwUkOr.js b/public/build/assets/FileDiskSetting-WUGVB3KY.js similarity index 99% rename from public/build/assets/FileDiskSetting-1PjwUkOr.js rename to public/build/assets/FileDiskSetting-WUGVB3KY.js index 8cf7c4b0..999093cf 100644 --- a/public/build/assets/FileDiskSetting-1PjwUkOr.js +++ b/public/build/assets/FileDiskSetting-WUGVB3KY.js @@ -1 +1 @@ -import{u as G}from"./disk-4FKXCHfJ.js";import{Z as F,F as O,v as A,f as p,k as b,g,h as D,j as T,aA as Y,H as N,r as f,o as y,c as E,b as _,a,w as n,t as V,K as h,a2 as R,q as z,ah as ie,an as oe,m as L,p as U,a3 as ae,a5 as te,E as re,a7 as se,J as le,l as J,N as ne}from"./main-B9dpPbRR.js";const de={props:{isEdit:{type:Boolean,require:!0,default:!1},loading:{type:Boolean,require:!0,default:!1},disks:{type:Array,require:!0,default:Array}},emits:["submit","onChangeDisk"],setup(r,{emit:i}){const t=G(),e=O(),{t:d}=A.useI18n();let k=p(!1),s=p(!1),l=p(null),u=p(null);const c=b({get:()=>t.selected_driver,set:v=>{t.selected_driver=v,t.dropBoxDiskConfig.selected_driver=v}}),m=b(()=>({dropBoxDiskConfig:{root:{required:g.withMessage(d("validation.required"),D)},key:{required:g.withMessage(d("validation.required"),D)},secret:{required:g.withMessage(d("validation.required"),D)},token:{required:g.withMessage(d("validation.required"),D)},app:{required:g.withMessage(d("validation.required"),D)},selected_driver:{required:g.withMessage(d("validation.required"),D)},name:{required:g.withMessage(d("validation.required"),D)}}})),o=T(m,b(()=>t));Y(()=>{t.dropBoxDiskConfig={name:null,selected_driver:"dropbox",token:null,key:null,secret:null,app:null}}),B();async function B(){s.value=!0;let v=N({disk:"dropbox"});if(r.isEdit)Object.assign(t.dropBoxDiskConfig,e.data),k.value=e.data.set_as_default,k.value&&(l.value=!0);else{let S=await t.fetchDiskEnv(v);Object.assign(t.dropBoxDiskConfig,S.data)}u.value=r.disks.find(S=>S.value=="dropbox"),s.value=!1}const M=b(()=>!!(r.isEdit&&k.value&&l.value));async function I(){if(o.value.dropBoxDiskConfig.$touch(),o.value.dropBoxDiskConfig.$invalid)return!0;let v={credentials:t.dropBoxDiskConfig,name:t.dropBoxDiskConfig.name,driver:u.value.value,set_as_default:k.value};return i("submit",v),!1}function w(){i("onChangeDisk",t.dropBoxDiskConfig.selected_driver)}return{v$:o,diskStore:t,selected_driver:c,set_as_default:k,isLoading:s,is_current_disk:l,selected_disk:u,isDisabled:M,loadData:B,submitData:I,onChangeDriver:w}}},ue={class:"px-8 py-6"},fe={key:0,class:"flex items-center mt-6"},ke={class:"relative flex items-center w-12"},me={class:"ml-4 right"},ve={class:"p-0 mb-1 text-base leading-snug text-black box-title"};function ge(r,i,t,e,d,k){const s=f("BaseInput"),l=f("BaseInputGroup"),u=f("BaseMultiselect"),c=f("BaseInputGrid"),m=f("BaseSwitch");return y(),E("form",{onSubmit:i[15]||(i[15]=z((...o)=>e.submitData&&e.submitData(...o),["prevent"]))},[_("div",ue,[a(c,null,{default:n(()=>[a(l,{label:r.$t("settings.disk.name"),error:e.v$.dropBoxDiskConfig.name.$error&&e.v$.dropBoxDiskConfig.name.$errors[0].$message,required:""},{default:n(()=>[a(s,{modelValue:e.diskStore.dropBoxDiskConfig.name,"onUpdate:modelValue":i[0]||(i[0]=o=>e.diskStore.dropBoxDiskConfig.name=o),type:"text",name:"name",invalid:e.v$.dropBoxDiskConfig.name.$error,onInput:i[1]||(i[1]=o=>e.v$.dropBoxDiskConfig.name.$touch())},null,8,["modelValue","invalid"])]),_:1},8,["label","error"]),a(l,{label:r.$t("settings.disk.driver"),error:e.v$.dropBoxDiskConfig.selected_driver.$error&&e.v$.dropBoxDiskConfig.selected_driver.$errors[0].$message,required:""},{default:n(()=>[a(u,{modelValue:e.selected_driver,"onUpdate:modelValue":[i[2]||(i[2]=o=>e.selected_driver=o),i[3]||(i[3]=o=>e.onChangeDriver(r.data))],invalid:e.v$.dropBoxDiskConfig.selected_driver.$error,"value-prop":"value",options:t.disks,searchable:"",label:"name","can-deselect":!1},null,8,["modelValue","invalid","options"])]),_:1},8,["label","error"]),a(l,{label:r.$t("settings.disk.dropbox_root"),error:e.v$.dropBoxDiskConfig.root.$error&&e.v$.dropBoxDiskConfig.root.$errors[0].$message,required:""},{default:n(()=>[a(s,{modelValue:e.diskStore.dropBoxDiskConfig.root,"onUpdate:modelValue":i[4]||(i[4]=o=>e.diskStore.dropBoxDiskConfig.root=o),modelModifiers:{trim:!0},type:"text",name:"name",placeholder:"Ex. /user/root/",invalid:e.v$.dropBoxDiskConfig.root.$error,onInput:i[5]||(i[5]=o=>e.v$.dropBoxDiskConfig.root.$touch())},null,8,["modelValue","invalid"])]),_:1},8,["label","error"]),a(l,{label:r.$t("settings.disk.dropbox_token"),error:e.v$.dropBoxDiskConfig.token.$error&&e.v$.dropBoxDiskConfig.token.$errors[0].$message,required:""},{default:n(()=>[a(s,{modelValue:e.diskStore.dropBoxDiskConfig.token,"onUpdate:modelValue":i[6]||(i[6]=o=>e.diskStore.dropBoxDiskConfig.token=o),modelModifiers:{trim:!0},type:"text",name:"name",invalid:e.v$.dropBoxDiskConfig.token.$error,onInput:i[7]||(i[7]=o=>e.v$.dropBoxDiskConfig.token.$touch())},null,8,["modelValue","invalid"])]),_:1},8,["label","error"]),a(l,{label:r.$t("settings.disk.dropbox_key"),error:e.v$.dropBoxDiskConfig.key.$error&&e.v$.dropBoxDiskConfig.key.$errors[0].$message,required:""},{default:n(()=>[a(s,{modelValue:e.diskStore.dropBoxDiskConfig.key,"onUpdate:modelValue":i[8]||(i[8]=o=>e.diskStore.dropBoxDiskConfig.key=o),modelModifiers:{trim:!0},type:"text",name:"name",placeholder:"Ex. KEIS4S39SERSDS",invalid:e.v$.dropBoxDiskConfig.key.$error,onInput:i[9]||(i[9]=o=>e.v$.dropBoxDiskConfig.key.$touch())},null,8,["modelValue","invalid"])]),_:1},8,["label","error"]),a(l,{label:r.$t("settings.disk.dropbox_secret"),error:e.v$.dropBoxDiskConfig.secret.$error&&e.v$.dropBoxDiskConfig.secret.$errors[0].$message,required:""},{default:n(()=>[a(s,{modelValue:e.diskStore.dropBoxDiskConfig.secret,"onUpdate:modelValue":i[10]||(i[10]=o=>e.diskStore.dropBoxDiskConfig.secret=o),modelModifiers:{trim:!0},type:"text",name:"name",placeholder:"Ex. ********",invalid:e.v$.dropBoxDiskConfig.secret.$error,onInput:i[11]||(i[11]=o=>e.v$.dropBoxDiskConfig.secret.$touch())},null,8,["modelValue","invalid"])]),_:1},8,["label","error"]),a(l,{label:r.$t("settings.disk.dropbox_app"),error:e.v$.dropBoxDiskConfig.app.$error&&e.v$.dropBoxDiskConfig.app.$errors[0].$message,required:""},{default:n(()=>[a(s,{modelValue:e.diskStore.dropBoxDiskConfig.app,"onUpdate:modelValue":i[12]||(i[12]=o=>e.diskStore.dropBoxDiskConfig.app=o),modelModifiers:{trim:!0},type:"text",name:"name",invalid:e.v$.dropBoxDiskConfig.app.$error,onInput:i[13]||(i[13]=o=>e.v$.dropBoxDiskConfig.app.$touch())},null,8,["modelValue","invalid"])]),_:1},8,["label","error"])]),_:1}),e.isDisabled?h("",!0):(y(),E("div",fe,[_("div",ke,[a(m,{modelValue:e.set_as_default,"onUpdate:modelValue":i[14]||(i[14]=o=>e.set_as_default=o),class:"flex"},null,8,["modelValue"])]),_("div",me,[_("p",ve,V(r.$t("settings.disk.is_default")),1)])]))]),R(r.$slots,"default",{diskData:{isLoading:e.isLoading,submitData:e.submitData}})],32)}const ce=F(de,[["render",ge]]),De={props:{isEdit:{type:Boolean,require:!0,default:!1},loading:{type:Boolean,require:!0,default:!1},disks:{type:Array,require:!0,default:Array}},emits:["submit","onChangeDisk"],setup(r,{emit:i}){const t=G(),e=O(),{t:d}=A.useI18n();let k=p(!1),s=p(!1),l=p(""),u=p(null);const c=b({get:()=>t.selected_driver,set:v=>{t.selected_driver=v,t.localDiskConfig.selected_driver=v}}),m=b(()=>({localDiskConfig:{name:{required:g.withMessage(d("validation.required"),D)},selected_driver:{required:g.withMessage(d("validation.required"),D)},root:{required:g.withMessage(d("validation.required"),D)}}})),o=T(m,b(()=>t));Y(()=>{t.localDiskConfig={name:null,selected_driver:"local",root:null}}),B();async function B(){k.value=!0;let v=N({disk:"local"});if(r.isEdit)Object.assign(t.localDiskConfig,e.data),t.localDiskConfig.root=e.data.credentials,s.value=e.data.set_as_default,s.value&&(u.value=!0);else{let S=await t.fetchDiskEnv(v);Object.assign(t.localDiskConfig,S.data)}l.value=r.disks.find(S=>S.value=="local"),k.value=!1}const M=b(()=>!!(r.isEdit&&s.value&&u.value));async function I(){if(o.value.localDiskConfig.$touch(),o.value.localDiskConfig.$invalid)return!0;let v=N({credentials:t.localDiskConfig.root,name:t.localDiskConfig.name,driver:t.localDiskConfig.selected_driver,set_as_default:s.value});return i("submit",v),!1}function w(){i("onChangeDisk",t.localDiskConfig.selected_driver)}return{v$:o,diskStore:t,modalStore:e,selected_driver:c,selected_disk:l,isLoading:k,set_as_default:s,is_current_disk:u,submitData:I,onChangeDriver:w,isDisabled:M}}},Ce={class:"px-4 sm:px-8 py-6"},pe={key:0,class:"flex items-center mt-6"},_e={class:"relative flex items-center w-12"},be={class:"ml-4 right"},Se={class:"p-0 mb-1 text-base leading-snug text-black box-title"};function $e(r,i,t,e,d,k){const s=f("BaseInput"),l=f("BaseInputGroup"),u=f("BaseMultiselect"),c=f("BaseInputGrid"),m=f("BaseSwitch");return y(),E("form",{action:"",onSubmit:i[7]||(i[7]=z((...o)=>e.submitData&&e.submitData(...o),["prevent"]))},[_("div",Ce,[a(c,null,{default:n(()=>[a(l,{label:r.$t("settings.disk.name"),error:e.v$.localDiskConfig.name.$error&&e.v$.localDiskConfig.name.$errors[0].$message,required:""},{default:n(()=>[a(s,{modelValue:e.diskStore.localDiskConfig.name,"onUpdate:modelValue":i[0]||(i[0]=o=>e.diskStore.localDiskConfig.name=o),type:"text",name:"name",invalid:e.v$.localDiskConfig.name.$error,onInput:i[1]||(i[1]=o=>e.v$.localDiskConfig.name.$touch())},null,8,["modelValue","invalid"])]),_:1},8,["label","error"]),a(l,{label:r.$t("settings.disk.driver"),error:e.v$.localDiskConfig.selected_driver.$error&&e.v$.localDiskConfig.selected_driver.$errors[0].$message,required:""},{default:n(()=>[a(u,{modelValue:e.selected_driver,"onUpdate:modelValue":[i[2]||(i[2]=o=>e.selected_driver=o),i[3]||(i[3]=o=>e.onChangeDriver(r.data))],"value-prop":"value",invalid:e.v$.localDiskConfig.selected_driver.$error,options:t.disks,searchable:"",label:"name","can-deselect":!1},null,8,["modelValue","invalid","options"])]),_:1},8,["label","error"]),a(l,{label:r.$t("settings.disk.local_root"),error:e.v$.localDiskConfig.root.$error&&e.v$.localDiskConfig.root.$errors[0].$message,required:""},{default:n(()=>[a(s,{modelValue:e.diskStore.localDiskConfig.root,"onUpdate:modelValue":i[4]||(i[4]=o=>e.diskStore.localDiskConfig.root=o),modelModifiers:{trim:!0},type:"text",name:"name",invalid:e.v$.localDiskConfig.root.$error,placeholder:"Ex./user/root/",onInput:i[5]||(i[5]=o=>e.v$.localDiskConfig.root.$touch())},null,8,["modelValue","invalid"])]),_:1},8,["label","error"])]),_:1}),e.isDisabled?h("",!0):(y(),E("div",pe,[_("div",_e,[a(m,{modelValue:e.set_as_default,"onUpdate:modelValue":i[6]||(i[6]=o=>e.set_as_default=o),class:"flex"},null,8,["modelValue"])]),_("div",be,[_("p",Se,V(r.$t("settings.disk.is_default")),1)])]))]),R(r.$slots,"default",{diskData:{isLoading:e.isLoading,submitData:e.submitData}})],32)}const ye=F(De,[["render",$e]]),Be={props:{isEdit:{type:Boolean,require:!0,default:!1},loading:{type:Boolean,require:!0,default:!1},disks:{type:Array,require:!0,default:Array}},emits:["submit","onChangeDisk"],setup(r,{emit:i}){const t=G(),e=O(),{t:d}=A.useI18n();let k=p(!1),s=p(!1),l=p(null),u=p(null);const c=b({get:()=>t.selected_driver,set:v=>{t.selected_driver=v,t.s3DiskConfigData.selected_driver=v}}),m=b(()=>({s3DiskConfigData:{name:{required:g.withMessage(d("validation.required"),D)},root:{required:g.withMessage(d("validation.required"),D)},key:{required:g.withMessage(d("validation.required"),D)},secret:{required:g.withMessage(d("validation.required"),D)},region:{required:g.withMessage(d("validation.required"),D)},bucket:{required:g.withMessage(d("validation.required"),D)},selected_driver:{required:g.withMessage(d("validation.required"),D)}}})),o=T(m,b(()=>t));Y(()=>{t.s3DiskConfigData={name:null,selected_driver:"s3",key:null,secret:null,region:null,bucket:null,root:null}}),B();async function B(){s.value=!0;let v=N({disk:"s3"});if(r.isEdit)Object.assign(t.s3DiskConfigData,e.data),k.value=e.data.set_as_default,k.value&&(u.value=!0);else{let S=await t.fetchDiskEnv(v);Object.assign(t.s3DiskConfigData,S.data)}l.value=r.disks.find(S=>S.value=="s3"),s.value=!1}const M=b(()=>!!(r.isEdit&&k.value&&u.value));async function I(){if(o.value.s3DiskConfigData.$touch(),o.value.s3DiskConfigData.$invalid)return!0;let v={credentials:t.s3DiskConfigData,name:t.s3DiskConfigData.name,driver:l.value.value,set_as_default:k.value};return i("submit",v),!1}function w(){i("onChangeDisk",t.s3DiskConfigData.selected_driver)}return{v$:o,diskStore:t,modalStore:e,set_as_default:k,isLoading:s,selected_disk:l,selected_driver:c,is_current_disk:u,loadData:B,submitData:I,onChangeDriver:w,isDisabled:M}}},xe={class:"px-8 py-6"},Ve={key:0,class:"flex items-center mt-6"},qe={class:"relative flex items-center w-12"},Me={class:"ml-4 right"},Ie={class:"p-0 mb-1 text-base leading-snug text-black box-title"};function we(r,i,t,e,d,k){const s=f("BaseInput"),l=f("BaseInputGroup"),u=f("BaseMultiselect"),c=f("BaseInputGrid"),m=f("BaseSwitch");return y(),E("form",{onSubmit:i[15]||(i[15]=z((...o)=>e.submitData&&e.submitData(...o),["prevent"]))},[_("div",xe,[a(c,null,{default:n(()=>[a(l,{label:r.$t("settings.disk.name"),error:e.v$.s3DiskConfigData.name.$error&&e.v$.s3DiskConfigData.name.$errors[0].$message,required:""},{default:n(()=>[a(s,{modelValue:e.diskStore.s3DiskConfigData.name,"onUpdate:modelValue":i[0]||(i[0]=o=>e.diskStore.s3DiskConfigData.name=o),type:"text",name:"name",invalid:e.v$.s3DiskConfigData.name.$error,onInput:i[1]||(i[1]=o=>e.v$.s3DiskConfigData.name.$touch())},null,8,["modelValue","invalid"])]),_:1},8,["label","error"]),a(l,{label:r.$t("settings.disk.driver"),error:e.v$.s3DiskConfigData.selected_driver.$error&&e.v$.s3DiskConfigData.selected_driver.$errors[0].$message,required:""},{default:n(()=>[a(u,{modelValue:e.selected_driver,"onUpdate:modelValue":[i[2]||(i[2]=o=>e.selected_driver=o),i[3]||(i[3]=o=>e.onChangeDriver(r.data))],invalid:e.v$.s3DiskConfigData.selected_driver.$error,"value-prop":"value",options:t.disks,searchable:"",label:"name","can-deselect":!1},null,8,["modelValue","invalid","options"])]),_:1},8,["label","error"]),a(l,{label:r.$t("settings.disk.aws_root"),error:e.v$.s3DiskConfigData.root.$error&&e.v$.s3DiskConfigData.root.$errors[0].$message,required:""},{default:n(()=>[a(s,{modelValue:e.diskStore.s3DiskConfigData.root,"onUpdate:modelValue":i[4]||(i[4]=o=>e.diskStore.s3DiskConfigData.root=o),modelModifiers:{trim:!0},type:"text",name:"name",placeholder:"Ex. /user/root/",invalid:e.v$.s3DiskConfigData.root.$error,onInput:i[5]||(i[5]=o=>e.v$.s3DiskConfigData.root.$touch())},null,8,["modelValue","invalid"])]),_:1},8,["label","error"]),a(l,{label:r.$t("settings.disk.aws_key"),error:e.v$.s3DiskConfigData.key.$error&&e.v$.s3DiskConfigData.key.$errors[0].$message,required:""},{default:n(()=>[a(s,{modelValue:e.diskStore.s3DiskConfigData.key,"onUpdate:modelValue":i[6]||(i[6]=o=>e.diskStore.s3DiskConfigData.key=o),modelModifiers:{trim:!0},type:"text",name:"name",placeholder:"Ex. KEIS4S39SERSDS",invalid:e.v$.s3DiskConfigData.key.$error,onInput:i[7]||(i[7]=o=>e.v$.s3DiskConfigData.key.$touch())},null,8,["modelValue","invalid"])]),_:1},8,["label","error"]),a(l,{label:r.$t("settings.disk.aws_secret"),error:e.v$.s3DiskConfigData.secret.$error&&e.v$.s3DiskConfigData.secret.$errors[0].$message,required:""},{default:n(()=>[a(s,{modelValue:e.diskStore.s3DiskConfigData.secret,"onUpdate:modelValue":i[8]||(i[8]=o=>e.diskStore.s3DiskConfigData.secret=o),modelModifiers:{trim:!0},type:"text",name:"name",placeholder:"Ex. ********",invalid:e.v$.s3DiskConfigData.secret.$error,onInput:i[9]||(i[9]=o=>e.v$.s3DiskConfigData.secret.$touch())},null,8,["modelValue","invalid"])]),_:1},8,["label","error"]),a(l,{label:r.$t("settings.disk.aws_region"),error:e.v$.s3DiskConfigData.region.$error&&e.v$.s3DiskConfigData.region.$errors[0].$message,required:""},{default:n(()=>[a(s,{modelValue:e.diskStore.s3DiskConfigData.region,"onUpdate:modelValue":i[10]||(i[10]=o=>e.diskStore.s3DiskConfigData.region=o),modelModifiers:{trim:!0},type:"text",name:"name",placeholder:"Ex. us-west",invalid:e.v$.s3DiskConfigData.region.$error,onInput:i[11]||(i[11]=o=>e.v$.s3DiskConfigData.region.$touch())},null,8,["modelValue","invalid"])]),_:1},8,["label","error"]),a(l,{label:r.$t("settings.disk.aws_bucket"),error:e.v$.s3DiskConfigData.bucket.$error&&e.v$.s3DiskConfigData.bucket.$errors[0].$message,required:""},{default:n(()=>[a(s,{modelValue:e.diskStore.s3DiskConfigData.bucket,"onUpdate:modelValue":i[12]||(i[12]=o=>e.diskStore.s3DiskConfigData.bucket=o),modelModifiers:{trim:!0},type:"text",name:"name",placeholder:"Ex. AppName",invalid:e.v$.s3DiskConfigData.bucket.$error,onInput:i[13]||(i[13]=o=>e.v$.s3DiskConfigData.bucket.$touch())},null,8,["modelValue","invalid"])]),_:1},8,["label","error"])]),_:1}),e.isDisabled?h("",!0):(y(),E("div",Ve,[_("div",qe,[a(m,{modelValue:e.set_as_default,"onUpdate:modelValue":i[14]||(i[14]=o=>e.set_as_default=o),class:"flex"},null,8,["modelValue"])]),_("div",Me,[_("p",Ie,V(r.$t("settings.disk.is_default")),1)])]))]),R(r.$slots,"default",{diskData:{isLoading:e.isLoading,submitData:e.submitData}})],32)}const he=F(Be,[["render",we]]),Ee={props:{isEdit:{type:Boolean,require:!0,default:!1},loading:{type:Boolean,require:!0,default:!1},disks:{type:Array,require:!0,default:Array}},emits:["submit","onChangeDisk"],setup(r,{emit:i}){const t=G(),e=O(),{t:d}=A.useI18n();let k=p(!1),s=p(!1),l=p(""),u=p(null);const c=b({get:()=>t.selected_driver,set:v=>{t.selected_driver=v,t.doSpaceDiskConfig.selected_driver=v}}),m=b(()=>({doSpaceDiskConfig:{root:{required:g.withMessage(d("validation.required"),D)},key:{required:g.withMessage(d("validation.required"),D)},secret:{required:g.withMessage(d("validation.required"),D)},region:{required:g.withMessage(d("validation.required"),D)},endpoint:{required:g.withMessage(d("validation.required"),D),url:g.withMessage(d("validation.invalid_url"),ie)},bucket:{required:g.withMessage(d("validation.required"),D)},selected_driver:{required:g.withMessage(d("validation.required"),D)},name:{required:g.withMessage(d("validation.required"),D)}}})),o=T(m,b(()=>t));Y(()=>{t.doSpaceDiskConfig={name:null,selected_driver:"doSpaces",key:null,secret:null,region:null,bucket:null,endpoint:null,root:null}}),B();async function B(){k.value=!0;let v=N({disk:"doSpaces"});if(r.isEdit)Object.assign(t.doSpaceDiskConfig,JSON.parse(e.data.credentials)),s.value=e.data.set_as_default,s.value&&(u.value=!0);else{let S=await t.fetchDiskEnv(v);Object.assign(t.doSpaceDiskConfig,S.data)}l.value=r.disks.find(S=>S.value=="doSpaces"),k.value=!1}const M=b(()=>!!(r.isEdit&&s.value&&u.value));async function I(){if(o.value.doSpaceDiskConfig.$touch(),o.value.doSpaceDiskConfig.$invalid)return!0;let v={credentials:t.doSpaceDiskConfig,name:t.doSpaceDiskConfig.name,driver:l.value.value,set_as_default:s.value};return i("submit",v),!1}function w(){i("onChangeDisk",t.doSpaceDiskConfig.selected_driver)}return{v$:o,diskStore:t,selected_driver:c,isLoading:k,set_as_default:s,selected_disk:l,is_current_disk:u,loadData:B,submitData:I,onChangeDriver:w,isDisabled:M}}},Ue={class:"px-8 py-6"},Le={key:0,class:"flex items-center mt-6"},Ne={class:"relative flex items-center w-12"},Ge={class:"ml-4 right"},Oe={class:"p-0 mb-1 text-base leading-snug text-black box-title"};function je(r,i,t,e,d,k){const s=f("BaseInput"),l=f("BaseInputGroup"),u=f("BaseMultiselect"),c=f("BaseInputGrid"),m=f("BaseSwitch");return y(),E("form",{onSubmit:i[17]||(i[17]=z((...o)=>e.submitData&&e.submitData(...o),["prevent"]))},[_("div",Ue,[a(c,null,{default:n(()=>[a(l,{label:r.$t("settings.disk.name"),error:e.v$.doSpaceDiskConfig.name.$error&&e.v$.doSpaceDiskConfig.name.$errors[0].$message,required:""},{default:n(()=>[a(s,{modelValue:e.diskStore.doSpaceDiskConfig.name,"onUpdate:modelValue":i[0]||(i[0]=o=>e.diskStore.doSpaceDiskConfig.name=o),type:"text",name:"name",invalid:e.v$.doSpaceDiskConfig.name.$error,onInput:i[1]||(i[1]=o=>e.v$.doSpaceDiskConfig.name.$touch())},null,8,["modelValue","invalid"])]),_:1},8,["label","error"]),a(l,{label:r.$t("settings.disk.driver"),error:e.v$.doSpaceDiskConfig.selected_driver.$error&&e.v$.doSpaceDiskConfig.selected_driver.$errors[0].$message,required:""},{default:n(()=>[a(u,{modelValue:e.selected_driver,"onUpdate:modelValue":[i[2]||(i[2]=o=>e.selected_driver=o),i[3]||(i[3]=o=>e.onChangeDriver(r.data))],invalid:e.v$.doSpaceDiskConfig.selected_driver.$error,"value-prop":"value",options:t.disks,searchable:"",label:"name","can-deselect":!1,"track-by":"name"},null,8,["modelValue","invalid","options"])]),_:1},8,["label","error"]),a(l,{label:r.$t("settings.disk.do_spaces_root"),error:e.v$.doSpaceDiskConfig.root.$error&&e.v$.doSpaceDiskConfig.root.$errors[0].$message,required:""},{default:n(()=>[a(s,{modelValue:e.diskStore.doSpaceDiskConfig.root,"onUpdate:modelValue":i[4]||(i[4]=o=>e.diskStore.doSpaceDiskConfig.root=o),modelModifiers:{trim:!0},type:"text",name:"name",placeholder:"Ex. /user/root/",invalid:e.v$.doSpaceDiskConfig.root.$error,onInput:i[5]||(i[5]=o=>e.v$.doSpaceDiskConfig.root.$touch())},null,8,["modelValue","invalid"])]),_:1},8,["label","error"]),a(l,{label:r.$t("settings.disk.do_spaces_key"),error:e.v$.doSpaceDiskConfig.key.$error&&e.v$.doSpaceDiskConfig.key.$errors[0].$message,required:""},{default:n(()=>[a(s,{modelValue:e.diskStore.doSpaceDiskConfig.key,"onUpdate:modelValue":i[6]||(i[6]=o=>e.diskStore.doSpaceDiskConfig.key=o),modelModifiers:{trim:!0},type:"text",name:"name",placeholder:"Ex. KEIS4S39SERSDS",invalid:e.v$.doSpaceDiskConfig.key.$error,onInput:i[7]||(i[7]=o=>e.v$.doSpaceDiskConfig.key.$touch())},null,8,["modelValue","invalid"])]),_:1},8,["label","error"]),a(l,{label:r.$t("settings.disk.do_spaces_secret"),error:e.v$.doSpaceDiskConfig.secret.$error&&e.v$.doSpaceDiskConfig.secret.$errors[0].$message,required:""},{default:n(()=>[a(s,{modelValue:e.diskStore.doSpaceDiskConfig.secret,"onUpdate:modelValue":i[8]||(i[8]=o=>e.diskStore.doSpaceDiskConfig.secret=o),modelModifiers:{trim:!0},type:"text",name:"name",placeholder:"Ex. ********",invalid:e.v$.doSpaceDiskConfig.secret.$error,onInput:i[9]||(i[9]=o=>e.v$.doSpaceDiskConfig.secret.$touch())},null,8,["modelValue","invalid"])]),_:1},8,["label","error"]),a(l,{label:r.$t("settings.disk.do_spaces_region"),error:e.v$.doSpaceDiskConfig.region.$error&&e.v$.doSpaceDiskConfig.region.$errors[0].$message,required:""},{default:n(()=>[a(s,{modelValue:e.diskStore.doSpaceDiskConfig.region,"onUpdate:modelValue":i[10]||(i[10]=o=>e.diskStore.doSpaceDiskConfig.region=o),modelModifiers:{trim:!0},type:"text",name:"name",placeholder:"Ex. nyc3",invalid:e.v$.doSpaceDiskConfig.region.$error,onInput:i[11]||(i[11]=o=>e.v$.doSpaceDiskConfig.region.$touch())},null,8,["modelValue","invalid"])]),_:1},8,["label","error"]),a(l,{label:r.$t("settings.disk.do_spaces_endpoint"),error:e.v$.doSpaceDiskConfig.endpoint.$error&&e.v$.doSpaceDiskConfig.endpoint.$errors[0].$message,required:""},{default:n(()=>[a(s,{modelValue:e.diskStore.doSpaceDiskConfig.endpoint,"onUpdate:modelValue":i[12]||(i[12]=o=>e.diskStore.doSpaceDiskConfig.endpoint=o),modelModifiers:{trim:!0},type:"text",name:"name",placeholder:"Ex. https://nyc3.digitaloceanspaces.com",invalid:e.v$.doSpaceDiskConfig.endpoint.$error,onInput:i[13]||(i[13]=o=>e.v$.doSpaceDiskConfig.endpoint.$touch())},null,8,["modelValue","invalid"])]),_:1},8,["label","error"]),a(l,{label:r.$t("settings.disk.do_spaces_bucket"),error:e.v$.doSpaceDiskConfig.bucket.$error&&e.v$.doSpaceDiskConfig.bucket.$errors[0].$message,required:""},{default:n(()=>[a(s,{modelValue:e.diskStore.doSpaceDiskConfig.bucket,"onUpdate:modelValue":i[14]||(i[14]=o=>e.diskStore.doSpaceDiskConfig.bucket=o),modelModifiers:{trim:!0},type:"text",name:"name",placeholder:"Ex. my-new-space",invalid:e.v$.doSpaceDiskConfig.bucket.$error,onInput:i[15]||(i[15]=o=>e.v$.doSpaceDiskConfig.bucket.$touch())},null,8,["modelValue","invalid"])]),_:1},8,["label","error"])]),_:1}),e.isDisabled?h("",!0):(y(),E("div",Le,[_("div",Ne,[a(m,{modelValue:e.set_as_default,"onUpdate:modelValue":i[16]||(i[16]=o=>e.set_as_default=o),class:"flex"},null,8,["modelValue"])]),_("div",Ge,[_("p",Oe,V(r.$t("settings.disk.is_default")),1)])]))]),R(r.$slots,"default",{diskData:{isLoading:e.isLoading,submitData:e.submitData}})],32)}const Fe=F(Ee,[["render",je]]),Ae={components:{Dropbox:ce,Local:ye,S3:he,DoSpaces:Fe},setup(){const r=G(),i=O();let t=p(!1),e=p(!1);oe(()=>{i.id&&(e.value=!0)});const d=b(()=>i.active&&i.componentName==="FileDiskModal");function k(m){return m&&(m.diskData.isLoading.value||t.value)}async function s(){t.value=!0;let m=await r.fetchDiskDrivers();e.value?r.selected_driver=i.data.driver:r.selected_driver=m.data.drivers[0].value,t.value=!1}async function l(m){Object.assign(r.diskConfigData,m),t.value=!0;let o={id:i.id,...m};await(e.value?r.updateDisk:r.createDisk)(o),t.value=!1,i.refreshData(),u()}function u(){i.closeModal()}function c(m){r.selected_driver=m,r.diskConfigData.selected_driver=m}return{isEdit:e,createNewDisk:l,isRequestFire:k,diskStore:r,closeDiskModal:u,loadData:s,diskChange:c,modalStore:i,isLoading:t,modalActive:d}}},Te={class:"flex justify-between w-full"},Ye={class:"file-disk-modal"},Re={class:"z-0 flex justify-end p-4 border-t border-solid border-gray-light"};function ze(r,i,t,e,d,k){const s=f("BaseIcon"),l=f("BaseButton"),u=f("BaseModal");return y(),L(u,{show:e.modalActive,onClose:e.closeDiskModal,onOpen:e.loadData},{header:n(()=>[_("div",Te,[U(V(e.modalStore.title)+" ",1),a(s,{name:"XIcon",class:"h-6 w-6 text-gray-500 cursor-pointer",onClick:e.closeDiskModal},null,8,["onClick"])])]),default:n(()=>[_("div",Ye,[(y(),L(ae(e.diskStore.selected_driver),{loading:e.isLoading,disks:e.diskStore.getDiskDrivers,"is-edit":e.isEdit,onOnChangeDisk:i[0]||(i[0]=c=>e.diskChange(c)),onSubmit:e.createNewDisk},{default:n(c=>[_("div",Re,[a(l,{class:"mr-3 text-sm",variant:"primary-outline",type:"button",onClick:e.closeDiskModal},{default:n(()=>[U(V(r.$t("general.cancel")),1)]),_:1},8,["onClick"]),a(l,{loading:e.isRequestFire(c),disabled:e.isRequestFire(c),variant:"primary",type:"submit"},{default:n(()=>[e.isRequestFire(c)?h("",!0):(y(),L(s,{key:0,name:"SaveIcon",class:"w-6 mr-2"})),U(" "+V(r.$t("general.save")),1)]),_:2},1032,["loading","disabled"])])]),_:1},40,["loading","disks","is-edit","onSubmit"]))])]),_:1},8,["show","onClose","onOpen"])}const Ke=F(Ae,[["render",ze]]),Pe={class:"inline-block"},Xe={__name:"FileDiskSetting",setup(r){const i=te("utils"),t=O(),e=G(),d=re(),k=se(),{t:s}=A.useI18n();let l=p(!1),u=p("");const c=b(()=>[{key:"name",label:s("settings.disk.disk_name"),thClass:"extra",tdClass:"font-medium text-gray-900"},{key:"driver",label:s("settings.disk.filesystem_driver"),thClass:"extra",tdClass:"font-medium text-gray-900"},{key:"type",label:s("settings.disk.disk_type"),thClass:"extra",tdClass:"font-medium text-gray-900"},{key:"set_as_default",label:s("settings.disk.is_default"),thClass:"extra",tdClass:"font-medium text-gray-900"},{key:"actions",label:"",tdClass:"text-right text-sm font-medium",sortable:!1}]),m=p(d.selectedCompanySettings.save_pdf_to_disk),o=b({get:()=>m.value==="YES",set:async C=>{const q=C?"YES":"NO";let x={settings:{save_pdf_to_disk:q}};m.value=q,await d.updateCompanySettings({data:x,message:"general.setting_updated"})}});async function B({page:C,filter:q,sort:x}){let K=N({orderByField:x.fieldName||"created_at",orderBy:x.order||"desc",page:C}),j=await e.fetchDisks(K);return{data:j.data.data,pagination:{totalPages:j.data.meta.last_page,currentPage:C,totalCount:j.data.meta.total}}}function M(C){return C.set_as_default?!(C.type=="SYSTEM"&&C.set_as_default):!0}function I(){t.openModal({title:s("settings.disk.new_disk"),componentName:"FileDiskModal",variant:"lg",refreshData:u.value&&u.value.refresh})}function w(C){t.openModal({title:s("settings.disk.edit_file_disk"),componentName:"FileDiskModal",variant:"lg",id:C.id,data:C,refreshData:u.value&&u.value.refresh})}function v(C){k.openDialog({title:s("general.are_you_sure"),message:s("settings.disk.set_default_disk_confirm"),yesLabel:s("general.ok"),noLabel:s("general.cancel"),variant:"primary",hideNoButton:!1,size:"lg"}).then(async q=>{if(q){l.value=!0;let x=N({set_as_default:!0,id:C});await e.updateDisk(x).then(()=>{u.value&&u.value.refresh()})}})}function S(C){k.openDialog({title:s("general.are_you_sure"),message:s("settings.disk.confirm_delete"),yesLabel:s("general.ok"),noLabel:s("general.cancel"),variant:"danger",hideNoButton:!1,size:"lg"}).then(async q=>{if(q&&(await e.deleteFileDisk(C)).data.success)return u.value&&u.value.refresh(),!0})}return(C,q)=>{const x=f("BaseIcon"),K=f("BaseButton"),j=f("BaseBadge"),P=f("BaseDropdownItem"),X=f("BaseDropdown"),Z=f("BaseTable"),Q=f("BaseDivider"),W=f("BaseSwitchSection"),ee=f("BaseSettingCard");return y(),E(ne,null,[a(Ke),a(ee,{title:C.$t("settings.disk.title",1),description:C.$t("settings.disk.description")},{action:n(()=>[a(K,{variant:"primary-outline",onClick:I},{left:n($=>[a(x,{class:le($.class),name:"PlusIcon"},null,8,["class"])]),default:n(()=>[U(" "+V(C.$t("settings.disk.new_disk")),1)]),_:1})]),default:n(()=>[a(Z,{ref_key:"table",ref:u,class:"mt-16",data:B,columns:c.value},{"cell-set_as_default":n(({row:$})=>[a(j,{"bg-color":J(i).getBadgeStatusColor($.data.set_as_default?"YES":"NO").bgColor,color:J(i).getBadgeStatusColor($.data.set_as_default?"YES":"NO").color},{default:n(()=>[U(V($.data.set_as_default?"Yes":"No".replace("_"," ")),1)]),_:2},1032,["bg-color","color"])]),"cell-actions":n(({row:$})=>[M($.data)?(y(),L(X,{key:0},{activator:n(()=>[_("div",Pe,[a(x,{name:"DotsHorizontalIcon",class:"text-gray-500"})])]),default:n(()=>[$.data.set_as_default?h("",!0):(y(),L(P,{key:0,onClick:H=>v($.data.id)},{default:n(()=>[a(x,{class:"mr-3 tetx-gray-600",name:"CheckCircleIcon"}),U(" "+V(C.$t("settings.disk.set_default_disk")),1)]),_:2},1032,["onClick"])),$.data.type!=="SYSTEM"?(y(),L(P,{key:1,onClick:H=>w($.data)},{default:n(()=>[a(x,{name:"PencilIcon",class:"mr-3 text-gray-600"}),U(" "+V(C.$t("general.edit")),1)]),_:2},1032,["onClick"])):h("",!0),$.data.type!=="SYSTEM"&&!$.data.set_as_default?(y(),L(P,{key:2,onClick:H=>S($.data.id)},{default:n(()=>[a(x,{name:"TrashIcon",class:"mr-3 text-gray-600"}),U(" "+V(C.$t("general.delete")),1)]),_:2},1032,["onClick"])):h("",!0)]),_:2},1024)):h("",!0)]),_:1},8,["columns"]),a(Q,{class:"mt-8 mb-2"}),a(W,{modelValue:o.value,"onUpdate:modelValue":q[0]||(q[0]=$=>o.value=$),title:C.$t("settings.disk.save_pdf_to_disk"),description:C.$t("settings.disk.disk_setting_description")},null,8,["modelValue","title","description"])]),_:1},8,["title","description"])],64)}}};export{Xe as default}; +import{u as G}from"./disk-unBeTGDg.js";import{Z as F,F as O,v as A,f as p,k as b,g,h as D,j as T,aD as Y,H as N,r as f,o as y,c as E,b as _,a,w as n,t as V,K as h,a2 as R,q as z,ah as ie,an as oe,m as L,p as U,a3 as ae,a5 as te,E as re,a7 as se,J as le,l as J,N as ne}from"./main-pPEsZPea.js";const de={props:{isEdit:{type:Boolean,require:!0,default:!1},loading:{type:Boolean,require:!0,default:!1},disks:{type:Array,require:!0,default:Array}},emits:["submit","onChangeDisk"],setup(r,{emit:i}){const t=G(),e=O(),{t:d}=A.useI18n();let k=p(!1),s=p(!1),l=p(null),u=p(null);const c=b({get:()=>t.selected_driver,set:v=>{t.selected_driver=v,t.dropBoxDiskConfig.selected_driver=v}}),m=b(()=>({dropBoxDiskConfig:{root:{required:g.withMessage(d("validation.required"),D)},key:{required:g.withMessage(d("validation.required"),D)},secret:{required:g.withMessage(d("validation.required"),D)},token:{required:g.withMessage(d("validation.required"),D)},app:{required:g.withMessage(d("validation.required"),D)},selected_driver:{required:g.withMessage(d("validation.required"),D)},name:{required:g.withMessage(d("validation.required"),D)}}})),o=T(m,b(()=>t));Y(()=>{t.dropBoxDiskConfig={name:null,selected_driver:"dropbox",token:null,key:null,secret:null,app:null}}),B();async function B(){s.value=!0;let v=N({disk:"dropbox"});if(r.isEdit)Object.assign(t.dropBoxDiskConfig,e.data),k.value=e.data.set_as_default,k.value&&(l.value=!0);else{let S=await t.fetchDiskEnv(v);Object.assign(t.dropBoxDiskConfig,S.data)}u.value=r.disks.find(S=>S.value=="dropbox"),s.value=!1}const M=b(()=>!!(r.isEdit&&k.value&&l.value));async function I(){if(o.value.dropBoxDiskConfig.$touch(),o.value.dropBoxDiskConfig.$invalid)return!0;let v={credentials:t.dropBoxDiskConfig,name:t.dropBoxDiskConfig.name,driver:u.value.value,set_as_default:k.value};return i("submit",v),!1}function w(){i("onChangeDisk",t.dropBoxDiskConfig.selected_driver)}return{v$:o,diskStore:t,selected_driver:c,set_as_default:k,isLoading:s,is_current_disk:l,selected_disk:u,isDisabled:M,loadData:B,submitData:I,onChangeDriver:w}}},ue={class:"px-8 py-6"},fe={key:0,class:"flex items-center mt-6"},ke={class:"relative flex items-center w-12"},me={class:"ml-4 right"},ve={class:"p-0 mb-1 text-base leading-snug text-black box-title"};function ge(r,i,t,e,d,k){const s=f("BaseInput"),l=f("BaseInputGroup"),u=f("BaseMultiselect"),c=f("BaseInputGrid"),m=f("BaseSwitch");return y(),E("form",{onSubmit:i[15]||(i[15]=z((...o)=>e.submitData&&e.submitData(...o),["prevent"]))},[_("div",ue,[a(c,null,{default:n(()=>[a(l,{label:r.$t("settings.disk.name"),error:e.v$.dropBoxDiskConfig.name.$error&&e.v$.dropBoxDiskConfig.name.$errors[0].$message,required:""},{default:n(()=>[a(s,{modelValue:e.diskStore.dropBoxDiskConfig.name,"onUpdate:modelValue":i[0]||(i[0]=o=>e.diskStore.dropBoxDiskConfig.name=o),type:"text",name:"name",invalid:e.v$.dropBoxDiskConfig.name.$error,onInput:i[1]||(i[1]=o=>e.v$.dropBoxDiskConfig.name.$touch())},null,8,["modelValue","invalid"])]),_:1},8,["label","error"]),a(l,{label:r.$t("settings.disk.driver"),error:e.v$.dropBoxDiskConfig.selected_driver.$error&&e.v$.dropBoxDiskConfig.selected_driver.$errors[0].$message,required:""},{default:n(()=>[a(u,{modelValue:e.selected_driver,"onUpdate:modelValue":[i[2]||(i[2]=o=>e.selected_driver=o),i[3]||(i[3]=o=>e.onChangeDriver(r.data))],invalid:e.v$.dropBoxDiskConfig.selected_driver.$error,"value-prop":"value",options:t.disks,searchable:"",label:"name","can-deselect":!1},null,8,["modelValue","invalid","options"])]),_:1},8,["label","error"]),a(l,{label:r.$t("settings.disk.dropbox_root"),error:e.v$.dropBoxDiskConfig.root.$error&&e.v$.dropBoxDiskConfig.root.$errors[0].$message,required:""},{default:n(()=>[a(s,{modelValue:e.diskStore.dropBoxDiskConfig.root,"onUpdate:modelValue":i[4]||(i[4]=o=>e.diskStore.dropBoxDiskConfig.root=o),modelModifiers:{trim:!0},type:"text",name:"name",placeholder:"Ex. /user/root/",invalid:e.v$.dropBoxDiskConfig.root.$error,onInput:i[5]||(i[5]=o=>e.v$.dropBoxDiskConfig.root.$touch())},null,8,["modelValue","invalid"])]),_:1},8,["label","error"]),a(l,{label:r.$t("settings.disk.dropbox_token"),error:e.v$.dropBoxDiskConfig.token.$error&&e.v$.dropBoxDiskConfig.token.$errors[0].$message,required:""},{default:n(()=>[a(s,{modelValue:e.diskStore.dropBoxDiskConfig.token,"onUpdate:modelValue":i[6]||(i[6]=o=>e.diskStore.dropBoxDiskConfig.token=o),modelModifiers:{trim:!0},type:"text",name:"name",invalid:e.v$.dropBoxDiskConfig.token.$error,onInput:i[7]||(i[7]=o=>e.v$.dropBoxDiskConfig.token.$touch())},null,8,["modelValue","invalid"])]),_:1},8,["label","error"]),a(l,{label:r.$t("settings.disk.dropbox_key"),error:e.v$.dropBoxDiskConfig.key.$error&&e.v$.dropBoxDiskConfig.key.$errors[0].$message,required:""},{default:n(()=>[a(s,{modelValue:e.diskStore.dropBoxDiskConfig.key,"onUpdate:modelValue":i[8]||(i[8]=o=>e.diskStore.dropBoxDiskConfig.key=o),modelModifiers:{trim:!0},type:"text",name:"name",placeholder:"Ex. KEIS4S39SERSDS",invalid:e.v$.dropBoxDiskConfig.key.$error,onInput:i[9]||(i[9]=o=>e.v$.dropBoxDiskConfig.key.$touch())},null,8,["modelValue","invalid"])]),_:1},8,["label","error"]),a(l,{label:r.$t("settings.disk.dropbox_secret"),error:e.v$.dropBoxDiskConfig.secret.$error&&e.v$.dropBoxDiskConfig.secret.$errors[0].$message,required:""},{default:n(()=>[a(s,{modelValue:e.diskStore.dropBoxDiskConfig.secret,"onUpdate:modelValue":i[10]||(i[10]=o=>e.diskStore.dropBoxDiskConfig.secret=o),modelModifiers:{trim:!0},type:"text",name:"name",placeholder:"Ex. ********",invalid:e.v$.dropBoxDiskConfig.secret.$error,onInput:i[11]||(i[11]=o=>e.v$.dropBoxDiskConfig.secret.$touch())},null,8,["modelValue","invalid"])]),_:1},8,["label","error"]),a(l,{label:r.$t("settings.disk.dropbox_app"),error:e.v$.dropBoxDiskConfig.app.$error&&e.v$.dropBoxDiskConfig.app.$errors[0].$message,required:""},{default:n(()=>[a(s,{modelValue:e.diskStore.dropBoxDiskConfig.app,"onUpdate:modelValue":i[12]||(i[12]=o=>e.diskStore.dropBoxDiskConfig.app=o),modelModifiers:{trim:!0},type:"text",name:"name",invalid:e.v$.dropBoxDiskConfig.app.$error,onInput:i[13]||(i[13]=o=>e.v$.dropBoxDiskConfig.app.$touch())},null,8,["modelValue","invalid"])]),_:1},8,["label","error"])]),_:1}),e.isDisabled?h("",!0):(y(),E("div",fe,[_("div",ke,[a(m,{modelValue:e.set_as_default,"onUpdate:modelValue":i[14]||(i[14]=o=>e.set_as_default=o),class:"flex"},null,8,["modelValue"])]),_("div",me,[_("p",ve,V(r.$t("settings.disk.is_default")),1)])]))]),R(r.$slots,"default",{diskData:{isLoading:e.isLoading,submitData:e.submitData}})],32)}const ce=F(de,[["render",ge]]),De={props:{isEdit:{type:Boolean,require:!0,default:!1},loading:{type:Boolean,require:!0,default:!1},disks:{type:Array,require:!0,default:Array}},emits:["submit","onChangeDisk"],setup(r,{emit:i}){const t=G(),e=O(),{t:d}=A.useI18n();let k=p(!1),s=p(!1),l=p(""),u=p(null);const c=b({get:()=>t.selected_driver,set:v=>{t.selected_driver=v,t.localDiskConfig.selected_driver=v}}),m=b(()=>({localDiskConfig:{name:{required:g.withMessage(d("validation.required"),D)},selected_driver:{required:g.withMessage(d("validation.required"),D)},root:{required:g.withMessage(d("validation.required"),D)}}})),o=T(m,b(()=>t));Y(()=>{t.localDiskConfig={name:null,selected_driver:"local",root:null}}),B();async function B(){k.value=!0;let v=N({disk:"local"});if(r.isEdit)Object.assign(t.localDiskConfig,e.data),t.localDiskConfig.root=e.data.credentials,s.value=e.data.set_as_default,s.value&&(u.value=!0);else{let S=await t.fetchDiskEnv(v);Object.assign(t.localDiskConfig,S.data)}l.value=r.disks.find(S=>S.value=="local"),k.value=!1}const M=b(()=>!!(r.isEdit&&s.value&&u.value));async function I(){if(o.value.localDiskConfig.$touch(),o.value.localDiskConfig.$invalid)return!0;let v=N({credentials:t.localDiskConfig.root,name:t.localDiskConfig.name,driver:t.localDiskConfig.selected_driver,set_as_default:s.value});return i("submit",v),!1}function w(){i("onChangeDisk",t.localDiskConfig.selected_driver)}return{v$:o,diskStore:t,modalStore:e,selected_driver:c,selected_disk:l,isLoading:k,set_as_default:s,is_current_disk:u,submitData:I,onChangeDriver:w,isDisabled:M}}},Ce={class:"px-4 sm:px-8 py-6"},pe={key:0,class:"flex items-center mt-6"},_e={class:"relative flex items-center w-12"},be={class:"ml-4 right"},Se={class:"p-0 mb-1 text-base leading-snug text-black box-title"};function $e(r,i,t,e,d,k){const s=f("BaseInput"),l=f("BaseInputGroup"),u=f("BaseMultiselect"),c=f("BaseInputGrid"),m=f("BaseSwitch");return y(),E("form",{action:"",onSubmit:i[7]||(i[7]=z((...o)=>e.submitData&&e.submitData(...o),["prevent"]))},[_("div",Ce,[a(c,null,{default:n(()=>[a(l,{label:r.$t("settings.disk.name"),error:e.v$.localDiskConfig.name.$error&&e.v$.localDiskConfig.name.$errors[0].$message,required:""},{default:n(()=>[a(s,{modelValue:e.diskStore.localDiskConfig.name,"onUpdate:modelValue":i[0]||(i[0]=o=>e.diskStore.localDiskConfig.name=o),type:"text",name:"name",invalid:e.v$.localDiskConfig.name.$error,onInput:i[1]||(i[1]=o=>e.v$.localDiskConfig.name.$touch())},null,8,["modelValue","invalid"])]),_:1},8,["label","error"]),a(l,{label:r.$t("settings.disk.driver"),error:e.v$.localDiskConfig.selected_driver.$error&&e.v$.localDiskConfig.selected_driver.$errors[0].$message,required:""},{default:n(()=>[a(u,{modelValue:e.selected_driver,"onUpdate:modelValue":[i[2]||(i[2]=o=>e.selected_driver=o),i[3]||(i[3]=o=>e.onChangeDriver(r.data))],"value-prop":"value",invalid:e.v$.localDiskConfig.selected_driver.$error,options:t.disks,searchable:"",label:"name","can-deselect":!1},null,8,["modelValue","invalid","options"])]),_:1},8,["label","error"]),a(l,{label:r.$t("settings.disk.local_root"),error:e.v$.localDiskConfig.root.$error&&e.v$.localDiskConfig.root.$errors[0].$message,required:""},{default:n(()=>[a(s,{modelValue:e.diskStore.localDiskConfig.root,"onUpdate:modelValue":i[4]||(i[4]=o=>e.diskStore.localDiskConfig.root=o),modelModifiers:{trim:!0},type:"text",name:"name",invalid:e.v$.localDiskConfig.root.$error,placeholder:"Ex./user/root/",onInput:i[5]||(i[5]=o=>e.v$.localDiskConfig.root.$touch())},null,8,["modelValue","invalid"])]),_:1},8,["label","error"])]),_:1}),e.isDisabled?h("",!0):(y(),E("div",pe,[_("div",_e,[a(m,{modelValue:e.set_as_default,"onUpdate:modelValue":i[6]||(i[6]=o=>e.set_as_default=o),class:"flex"},null,8,["modelValue"])]),_("div",be,[_("p",Se,V(r.$t("settings.disk.is_default")),1)])]))]),R(r.$slots,"default",{diskData:{isLoading:e.isLoading,submitData:e.submitData}})],32)}const ye=F(De,[["render",$e]]),Be={props:{isEdit:{type:Boolean,require:!0,default:!1},loading:{type:Boolean,require:!0,default:!1},disks:{type:Array,require:!0,default:Array}},emits:["submit","onChangeDisk"],setup(r,{emit:i}){const t=G(),e=O(),{t:d}=A.useI18n();let k=p(!1),s=p(!1),l=p(null),u=p(null);const c=b({get:()=>t.selected_driver,set:v=>{t.selected_driver=v,t.s3DiskConfigData.selected_driver=v}}),m=b(()=>({s3DiskConfigData:{name:{required:g.withMessage(d("validation.required"),D)},root:{required:g.withMessage(d("validation.required"),D)},key:{required:g.withMessage(d("validation.required"),D)},secret:{required:g.withMessage(d("validation.required"),D)},region:{required:g.withMessage(d("validation.required"),D)},bucket:{required:g.withMessage(d("validation.required"),D)},selected_driver:{required:g.withMessage(d("validation.required"),D)}}})),o=T(m,b(()=>t));Y(()=>{t.s3DiskConfigData={name:null,selected_driver:"s3",key:null,secret:null,region:null,bucket:null,root:null}}),B();async function B(){s.value=!0;let v=N({disk:"s3"});if(r.isEdit)Object.assign(t.s3DiskConfigData,e.data),k.value=e.data.set_as_default,k.value&&(u.value=!0);else{let S=await t.fetchDiskEnv(v);Object.assign(t.s3DiskConfigData,S.data)}l.value=r.disks.find(S=>S.value=="s3"),s.value=!1}const M=b(()=>!!(r.isEdit&&k.value&&u.value));async function I(){if(o.value.s3DiskConfigData.$touch(),o.value.s3DiskConfigData.$invalid)return!0;let v={credentials:t.s3DiskConfigData,name:t.s3DiskConfigData.name,driver:l.value.value,set_as_default:k.value};return i("submit",v),!1}function w(){i("onChangeDisk",t.s3DiskConfigData.selected_driver)}return{v$:o,diskStore:t,modalStore:e,set_as_default:k,isLoading:s,selected_disk:l,selected_driver:c,is_current_disk:u,loadData:B,submitData:I,onChangeDriver:w,isDisabled:M}}},xe={class:"px-8 py-6"},Ve={key:0,class:"flex items-center mt-6"},qe={class:"relative flex items-center w-12"},Me={class:"ml-4 right"},Ie={class:"p-0 mb-1 text-base leading-snug text-black box-title"};function we(r,i,t,e,d,k){const s=f("BaseInput"),l=f("BaseInputGroup"),u=f("BaseMultiselect"),c=f("BaseInputGrid"),m=f("BaseSwitch");return y(),E("form",{onSubmit:i[15]||(i[15]=z((...o)=>e.submitData&&e.submitData(...o),["prevent"]))},[_("div",xe,[a(c,null,{default:n(()=>[a(l,{label:r.$t("settings.disk.name"),error:e.v$.s3DiskConfigData.name.$error&&e.v$.s3DiskConfigData.name.$errors[0].$message,required:""},{default:n(()=>[a(s,{modelValue:e.diskStore.s3DiskConfigData.name,"onUpdate:modelValue":i[0]||(i[0]=o=>e.diskStore.s3DiskConfigData.name=o),type:"text",name:"name",invalid:e.v$.s3DiskConfigData.name.$error,onInput:i[1]||(i[1]=o=>e.v$.s3DiskConfigData.name.$touch())},null,8,["modelValue","invalid"])]),_:1},8,["label","error"]),a(l,{label:r.$t("settings.disk.driver"),error:e.v$.s3DiskConfigData.selected_driver.$error&&e.v$.s3DiskConfigData.selected_driver.$errors[0].$message,required:""},{default:n(()=>[a(u,{modelValue:e.selected_driver,"onUpdate:modelValue":[i[2]||(i[2]=o=>e.selected_driver=o),i[3]||(i[3]=o=>e.onChangeDriver(r.data))],invalid:e.v$.s3DiskConfigData.selected_driver.$error,"value-prop":"value",options:t.disks,searchable:"",label:"name","can-deselect":!1},null,8,["modelValue","invalid","options"])]),_:1},8,["label","error"]),a(l,{label:r.$t("settings.disk.aws_root"),error:e.v$.s3DiskConfigData.root.$error&&e.v$.s3DiskConfigData.root.$errors[0].$message,required:""},{default:n(()=>[a(s,{modelValue:e.diskStore.s3DiskConfigData.root,"onUpdate:modelValue":i[4]||(i[4]=o=>e.diskStore.s3DiskConfigData.root=o),modelModifiers:{trim:!0},type:"text",name:"name",placeholder:"Ex. /user/root/",invalid:e.v$.s3DiskConfigData.root.$error,onInput:i[5]||(i[5]=o=>e.v$.s3DiskConfigData.root.$touch())},null,8,["modelValue","invalid"])]),_:1},8,["label","error"]),a(l,{label:r.$t("settings.disk.aws_key"),error:e.v$.s3DiskConfigData.key.$error&&e.v$.s3DiskConfigData.key.$errors[0].$message,required:""},{default:n(()=>[a(s,{modelValue:e.diskStore.s3DiskConfigData.key,"onUpdate:modelValue":i[6]||(i[6]=o=>e.diskStore.s3DiskConfigData.key=o),modelModifiers:{trim:!0},type:"text",name:"name",placeholder:"Ex. KEIS4S39SERSDS",invalid:e.v$.s3DiskConfigData.key.$error,onInput:i[7]||(i[7]=o=>e.v$.s3DiskConfigData.key.$touch())},null,8,["modelValue","invalid"])]),_:1},8,["label","error"]),a(l,{label:r.$t("settings.disk.aws_secret"),error:e.v$.s3DiskConfigData.secret.$error&&e.v$.s3DiskConfigData.secret.$errors[0].$message,required:""},{default:n(()=>[a(s,{modelValue:e.diskStore.s3DiskConfigData.secret,"onUpdate:modelValue":i[8]||(i[8]=o=>e.diskStore.s3DiskConfigData.secret=o),modelModifiers:{trim:!0},type:"text",name:"name",placeholder:"Ex. ********",invalid:e.v$.s3DiskConfigData.secret.$error,onInput:i[9]||(i[9]=o=>e.v$.s3DiskConfigData.secret.$touch())},null,8,["modelValue","invalid"])]),_:1},8,["label","error"]),a(l,{label:r.$t("settings.disk.aws_region"),error:e.v$.s3DiskConfigData.region.$error&&e.v$.s3DiskConfigData.region.$errors[0].$message,required:""},{default:n(()=>[a(s,{modelValue:e.diskStore.s3DiskConfigData.region,"onUpdate:modelValue":i[10]||(i[10]=o=>e.diskStore.s3DiskConfigData.region=o),modelModifiers:{trim:!0},type:"text",name:"name",placeholder:"Ex. us-west",invalid:e.v$.s3DiskConfigData.region.$error,onInput:i[11]||(i[11]=o=>e.v$.s3DiskConfigData.region.$touch())},null,8,["modelValue","invalid"])]),_:1},8,["label","error"]),a(l,{label:r.$t("settings.disk.aws_bucket"),error:e.v$.s3DiskConfigData.bucket.$error&&e.v$.s3DiskConfigData.bucket.$errors[0].$message,required:""},{default:n(()=>[a(s,{modelValue:e.diskStore.s3DiskConfigData.bucket,"onUpdate:modelValue":i[12]||(i[12]=o=>e.diskStore.s3DiskConfigData.bucket=o),modelModifiers:{trim:!0},type:"text",name:"name",placeholder:"Ex. AppName",invalid:e.v$.s3DiskConfigData.bucket.$error,onInput:i[13]||(i[13]=o=>e.v$.s3DiskConfigData.bucket.$touch())},null,8,["modelValue","invalid"])]),_:1},8,["label","error"])]),_:1}),e.isDisabled?h("",!0):(y(),E("div",Ve,[_("div",qe,[a(m,{modelValue:e.set_as_default,"onUpdate:modelValue":i[14]||(i[14]=o=>e.set_as_default=o),class:"flex"},null,8,["modelValue"])]),_("div",Me,[_("p",Ie,V(r.$t("settings.disk.is_default")),1)])]))]),R(r.$slots,"default",{diskData:{isLoading:e.isLoading,submitData:e.submitData}})],32)}const he=F(Be,[["render",we]]),Ee={props:{isEdit:{type:Boolean,require:!0,default:!1},loading:{type:Boolean,require:!0,default:!1},disks:{type:Array,require:!0,default:Array}},emits:["submit","onChangeDisk"],setup(r,{emit:i}){const t=G(),e=O(),{t:d}=A.useI18n();let k=p(!1),s=p(!1),l=p(""),u=p(null);const c=b({get:()=>t.selected_driver,set:v=>{t.selected_driver=v,t.doSpaceDiskConfig.selected_driver=v}}),m=b(()=>({doSpaceDiskConfig:{root:{required:g.withMessage(d("validation.required"),D)},key:{required:g.withMessage(d("validation.required"),D)},secret:{required:g.withMessage(d("validation.required"),D)},region:{required:g.withMessage(d("validation.required"),D)},endpoint:{required:g.withMessage(d("validation.required"),D),url:g.withMessage(d("validation.invalid_url"),ie)},bucket:{required:g.withMessage(d("validation.required"),D)},selected_driver:{required:g.withMessage(d("validation.required"),D)},name:{required:g.withMessage(d("validation.required"),D)}}})),o=T(m,b(()=>t));Y(()=>{t.doSpaceDiskConfig={name:null,selected_driver:"doSpaces",key:null,secret:null,region:null,bucket:null,endpoint:null,root:null}}),B();async function B(){k.value=!0;let v=N({disk:"doSpaces"});if(r.isEdit)Object.assign(t.doSpaceDiskConfig,JSON.parse(e.data.credentials)),s.value=e.data.set_as_default,s.value&&(u.value=!0);else{let S=await t.fetchDiskEnv(v);Object.assign(t.doSpaceDiskConfig,S.data)}l.value=r.disks.find(S=>S.value=="doSpaces"),k.value=!1}const M=b(()=>!!(r.isEdit&&s.value&&u.value));async function I(){if(o.value.doSpaceDiskConfig.$touch(),o.value.doSpaceDiskConfig.$invalid)return!0;let v={credentials:t.doSpaceDiskConfig,name:t.doSpaceDiskConfig.name,driver:l.value.value,set_as_default:s.value};return i("submit",v),!1}function w(){i("onChangeDisk",t.doSpaceDiskConfig.selected_driver)}return{v$:o,diskStore:t,selected_driver:c,isLoading:k,set_as_default:s,selected_disk:l,is_current_disk:u,loadData:B,submitData:I,onChangeDriver:w,isDisabled:M}}},Ue={class:"px-8 py-6"},Le={key:0,class:"flex items-center mt-6"},Ne={class:"relative flex items-center w-12"},Ge={class:"ml-4 right"},Oe={class:"p-0 mb-1 text-base leading-snug text-black box-title"};function je(r,i,t,e,d,k){const s=f("BaseInput"),l=f("BaseInputGroup"),u=f("BaseMultiselect"),c=f("BaseInputGrid"),m=f("BaseSwitch");return y(),E("form",{onSubmit:i[17]||(i[17]=z((...o)=>e.submitData&&e.submitData(...o),["prevent"]))},[_("div",Ue,[a(c,null,{default:n(()=>[a(l,{label:r.$t("settings.disk.name"),error:e.v$.doSpaceDiskConfig.name.$error&&e.v$.doSpaceDiskConfig.name.$errors[0].$message,required:""},{default:n(()=>[a(s,{modelValue:e.diskStore.doSpaceDiskConfig.name,"onUpdate:modelValue":i[0]||(i[0]=o=>e.diskStore.doSpaceDiskConfig.name=o),type:"text",name:"name",invalid:e.v$.doSpaceDiskConfig.name.$error,onInput:i[1]||(i[1]=o=>e.v$.doSpaceDiskConfig.name.$touch())},null,8,["modelValue","invalid"])]),_:1},8,["label","error"]),a(l,{label:r.$t("settings.disk.driver"),error:e.v$.doSpaceDiskConfig.selected_driver.$error&&e.v$.doSpaceDiskConfig.selected_driver.$errors[0].$message,required:""},{default:n(()=>[a(u,{modelValue:e.selected_driver,"onUpdate:modelValue":[i[2]||(i[2]=o=>e.selected_driver=o),i[3]||(i[3]=o=>e.onChangeDriver(r.data))],invalid:e.v$.doSpaceDiskConfig.selected_driver.$error,"value-prop":"value",options:t.disks,searchable:"",label:"name","can-deselect":!1,"track-by":"name"},null,8,["modelValue","invalid","options"])]),_:1},8,["label","error"]),a(l,{label:r.$t("settings.disk.do_spaces_root"),error:e.v$.doSpaceDiskConfig.root.$error&&e.v$.doSpaceDiskConfig.root.$errors[0].$message,required:""},{default:n(()=>[a(s,{modelValue:e.diskStore.doSpaceDiskConfig.root,"onUpdate:modelValue":i[4]||(i[4]=o=>e.diskStore.doSpaceDiskConfig.root=o),modelModifiers:{trim:!0},type:"text",name:"name",placeholder:"Ex. /user/root/",invalid:e.v$.doSpaceDiskConfig.root.$error,onInput:i[5]||(i[5]=o=>e.v$.doSpaceDiskConfig.root.$touch())},null,8,["modelValue","invalid"])]),_:1},8,["label","error"]),a(l,{label:r.$t("settings.disk.do_spaces_key"),error:e.v$.doSpaceDiskConfig.key.$error&&e.v$.doSpaceDiskConfig.key.$errors[0].$message,required:""},{default:n(()=>[a(s,{modelValue:e.diskStore.doSpaceDiskConfig.key,"onUpdate:modelValue":i[6]||(i[6]=o=>e.diskStore.doSpaceDiskConfig.key=o),modelModifiers:{trim:!0},type:"text",name:"name",placeholder:"Ex. KEIS4S39SERSDS",invalid:e.v$.doSpaceDiskConfig.key.$error,onInput:i[7]||(i[7]=o=>e.v$.doSpaceDiskConfig.key.$touch())},null,8,["modelValue","invalid"])]),_:1},8,["label","error"]),a(l,{label:r.$t("settings.disk.do_spaces_secret"),error:e.v$.doSpaceDiskConfig.secret.$error&&e.v$.doSpaceDiskConfig.secret.$errors[0].$message,required:""},{default:n(()=>[a(s,{modelValue:e.diskStore.doSpaceDiskConfig.secret,"onUpdate:modelValue":i[8]||(i[8]=o=>e.diskStore.doSpaceDiskConfig.secret=o),modelModifiers:{trim:!0},type:"text",name:"name",placeholder:"Ex. ********",invalid:e.v$.doSpaceDiskConfig.secret.$error,onInput:i[9]||(i[9]=o=>e.v$.doSpaceDiskConfig.secret.$touch())},null,8,["modelValue","invalid"])]),_:1},8,["label","error"]),a(l,{label:r.$t("settings.disk.do_spaces_region"),error:e.v$.doSpaceDiskConfig.region.$error&&e.v$.doSpaceDiskConfig.region.$errors[0].$message,required:""},{default:n(()=>[a(s,{modelValue:e.diskStore.doSpaceDiskConfig.region,"onUpdate:modelValue":i[10]||(i[10]=o=>e.diskStore.doSpaceDiskConfig.region=o),modelModifiers:{trim:!0},type:"text",name:"name",placeholder:"Ex. nyc3",invalid:e.v$.doSpaceDiskConfig.region.$error,onInput:i[11]||(i[11]=o=>e.v$.doSpaceDiskConfig.region.$touch())},null,8,["modelValue","invalid"])]),_:1},8,["label","error"]),a(l,{label:r.$t("settings.disk.do_spaces_endpoint"),error:e.v$.doSpaceDiskConfig.endpoint.$error&&e.v$.doSpaceDiskConfig.endpoint.$errors[0].$message,required:""},{default:n(()=>[a(s,{modelValue:e.diskStore.doSpaceDiskConfig.endpoint,"onUpdate:modelValue":i[12]||(i[12]=o=>e.diskStore.doSpaceDiskConfig.endpoint=o),modelModifiers:{trim:!0},type:"text",name:"name",placeholder:"Ex. https://nyc3.digitaloceanspaces.com",invalid:e.v$.doSpaceDiskConfig.endpoint.$error,onInput:i[13]||(i[13]=o=>e.v$.doSpaceDiskConfig.endpoint.$touch())},null,8,["modelValue","invalid"])]),_:1},8,["label","error"]),a(l,{label:r.$t("settings.disk.do_spaces_bucket"),error:e.v$.doSpaceDiskConfig.bucket.$error&&e.v$.doSpaceDiskConfig.bucket.$errors[0].$message,required:""},{default:n(()=>[a(s,{modelValue:e.diskStore.doSpaceDiskConfig.bucket,"onUpdate:modelValue":i[14]||(i[14]=o=>e.diskStore.doSpaceDiskConfig.bucket=o),modelModifiers:{trim:!0},type:"text",name:"name",placeholder:"Ex. my-new-space",invalid:e.v$.doSpaceDiskConfig.bucket.$error,onInput:i[15]||(i[15]=o=>e.v$.doSpaceDiskConfig.bucket.$touch())},null,8,["modelValue","invalid"])]),_:1},8,["label","error"])]),_:1}),e.isDisabled?h("",!0):(y(),E("div",Le,[_("div",Ne,[a(m,{modelValue:e.set_as_default,"onUpdate:modelValue":i[16]||(i[16]=o=>e.set_as_default=o),class:"flex"},null,8,["modelValue"])]),_("div",Ge,[_("p",Oe,V(r.$t("settings.disk.is_default")),1)])]))]),R(r.$slots,"default",{diskData:{isLoading:e.isLoading,submitData:e.submitData}})],32)}const Fe=F(Ee,[["render",je]]),Ae={components:{Dropbox:ce,Local:ye,S3:he,DoSpaces:Fe},setup(){const r=G(),i=O();let t=p(!1),e=p(!1);oe(()=>{i.id&&(e.value=!0)});const d=b(()=>i.active&&i.componentName==="FileDiskModal");function k(m){return m&&(m.diskData.isLoading.value||t.value)}async function s(){t.value=!0;let m=await r.fetchDiskDrivers();e.value?r.selected_driver=i.data.driver:r.selected_driver=m.data.drivers[0].value,t.value=!1}async function l(m){Object.assign(r.diskConfigData,m),t.value=!0;let o={id:i.id,...m};await(e.value?r.updateDisk:r.createDisk)(o),t.value=!1,i.refreshData(),u()}function u(){i.closeModal()}function c(m){r.selected_driver=m,r.diskConfigData.selected_driver=m}return{isEdit:e,createNewDisk:l,isRequestFire:k,diskStore:r,closeDiskModal:u,loadData:s,diskChange:c,modalStore:i,isLoading:t,modalActive:d}}},Te={class:"flex justify-between w-full"},Ye={class:"file-disk-modal"},Re={class:"z-0 flex justify-end p-4 border-t border-solid border-gray-light"};function ze(r,i,t,e,d,k){const s=f("BaseIcon"),l=f("BaseButton"),u=f("BaseModal");return y(),L(u,{show:e.modalActive,onClose:e.closeDiskModal,onOpen:e.loadData},{header:n(()=>[_("div",Te,[U(V(e.modalStore.title)+" ",1),a(s,{name:"XIcon",class:"h-6 w-6 text-gray-500 cursor-pointer",onClick:e.closeDiskModal},null,8,["onClick"])])]),default:n(()=>[_("div",Ye,[(y(),L(ae(e.diskStore.selected_driver),{loading:e.isLoading,disks:e.diskStore.getDiskDrivers,"is-edit":e.isEdit,onOnChangeDisk:i[0]||(i[0]=c=>e.diskChange(c)),onSubmit:e.createNewDisk},{default:n(c=>[_("div",Re,[a(l,{class:"mr-3 text-sm",variant:"primary-outline",type:"button",onClick:e.closeDiskModal},{default:n(()=>[U(V(r.$t("general.cancel")),1)]),_:1},8,["onClick"]),a(l,{loading:e.isRequestFire(c),disabled:e.isRequestFire(c),variant:"primary",type:"submit"},{default:n(()=>[e.isRequestFire(c)?h("",!0):(y(),L(s,{key:0,name:"SaveIcon",class:"w-6 mr-2"})),U(" "+V(r.$t("general.save")),1)]),_:2},1032,["loading","disabled"])])]),_:1},40,["loading","disks","is-edit","onSubmit"]))])]),_:1},8,["show","onClose","onOpen"])}const Ke=F(Ae,[["render",ze]]),Pe={class:"inline-block"},Xe={__name:"FileDiskSetting",setup(r){const i=te("utils"),t=O(),e=G(),d=re(),k=se(),{t:s}=A.useI18n();let l=p(!1),u=p("");const c=b(()=>[{key:"name",label:s("settings.disk.disk_name"),thClass:"extra",tdClass:"font-medium text-gray-900"},{key:"driver",label:s("settings.disk.filesystem_driver"),thClass:"extra",tdClass:"font-medium text-gray-900"},{key:"type",label:s("settings.disk.disk_type"),thClass:"extra",tdClass:"font-medium text-gray-900"},{key:"set_as_default",label:s("settings.disk.is_default"),thClass:"extra",tdClass:"font-medium text-gray-900"},{key:"actions",label:"",tdClass:"text-right text-sm font-medium",sortable:!1}]),m=p(d.selectedCompanySettings.save_pdf_to_disk),o=b({get:()=>m.value==="YES",set:async C=>{const q=C?"YES":"NO";let x={settings:{save_pdf_to_disk:q}};m.value=q,await d.updateCompanySettings({data:x,message:"general.setting_updated"})}});async function B({page:C,filter:q,sort:x}){let K=N({orderByField:x.fieldName||"created_at",orderBy:x.order||"desc",page:C}),j=await e.fetchDisks(K);return{data:j.data.data,pagination:{totalPages:j.data.meta.last_page,currentPage:C,totalCount:j.data.meta.total}}}function M(C){return C.set_as_default?!(C.type=="SYSTEM"&&C.set_as_default):!0}function I(){t.openModal({title:s("settings.disk.new_disk"),componentName:"FileDiskModal",variant:"lg",refreshData:u.value&&u.value.refresh})}function w(C){t.openModal({title:s("settings.disk.edit_file_disk"),componentName:"FileDiskModal",variant:"lg",id:C.id,data:C,refreshData:u.value&&u.value.refresh})}function v(C){k.openDialog({title:s("general.are_you_sure"),message:s("settings.disk.set_default_disk_confirm"),yesLabel:s("general.ok"),noLabel:s("general.cancel"),variant:"primary",hideNoButton:!1,size:"lg"}).then(async q=>{if(q){l.value=!0;let x=N({set_as_default:!0,id:C});await e.updateDisk(x).then(()=>{u.value&&u.value.refresh()})}})}function S(C){k.openDialog({title:s("general.are_you_sure"),message:s("settings.disk.confirm_delete"),yesLabel:s("general.ok"),noLabel:s("general.cancel"),variant:"danger",hideNoButton:!1,size:"lg"}).then(async q=>{if(q&&(await e.deleteFileDisk(C)).data.success)return u.value&&u.value.refresh(),!0})}return(C,q)=>{const x=f("BaseIcon"),K=f("BaseButton"),j=f("BaseBadge"),P=f("BaseDropdownItem"),X=f("BaseDropdown"),Z=f("BaseTable"),Q=f("BaseDivider"),W=f("BaseSwitchSection"),ee=f("BaseSettingCard");return y(),E(ne,null,[a(Ke),a(ee,{title:C.$t("settings.disk.title",1),description:C.$t("settings.disk.description")},{action:n(()=>[a(K,{variant:"primary-outline",onClick:I},{left:n($=>[a(x,{class:le($.class),name:"PlusIcon"},null,8,["class"])]),default:n(()=>[U(" "+V(C.$t("settings.disk.new_disk")),1)]),_:1})]),default:n(()=>[a(Z,{ref_key:"table",ref:u,class:"mt-16",data:B,columns:c.value},{"cell-set_as_default":n(({row:$})=>[a(j,{"bg-color":J(i).getBadgeStatusColor($.data.set_as_default?"YES":"NO").bgColor,color:J(i).getBadgeStatusColor($.data.set_as_default?"YES":"NO").color},{default:n(()=>[U(V($.data.set_as_default?"Yes":"No".replace("_"," ")),1)]),_:2},1032,["bg-color","color"])]),"cell-actions":n(({row:$})=>[M($.data)?(y(),L(X,{key:0},{activator:n(()=>[_("div",Pe,[a(x,{name:"DotsHorizontalIcon",class:"text-gray-500"})])]),default:n(()=>[$.data.set_as_default?h("",!0):(y(),L(P,{key:0,onClick:H=>v($.data.id)},{default:n(()=>[a(x,{class:"mr-3 tetx-gray-600",name:"CheckCircleIcon"}),U(" "+V(C.$t("settings.disk.set_default_disk")),1)]),_:2},1032,["onClick"])),$.data.type!=="SYSTEM"?(y(),L(P,{key:1,onClick:H=>w($.data)},{default:n(()=>[a(x,{name:"PencilIcon",class:"mr-3 text-gray-600"}),U(" "+V(C.$t("general.edit")),1)]),_:2},1032,["onClick"])):h("",!0),$.data.type!=="SYSTEM"&&!$.data.set_as_default?(y(),L(P,{key:2,onClick:H=>S($.data.id)},{default:n(()=>[a(x,{name:"TrashIcon",class:"mr-3 text-gray-600"}),U(" "+V(C.$t("general.delete")),1)]),_:2},1032,["onClick"])):h("",!0)]),_:2},1024)):h("",!0)]),_:1},8,["columns"]),a(Q,{class:"mt-8 mb-2"}),a(W,{modelValue:o.value,"onUpdate:modelValue":q[0]||(q[0]=$=>o.value=$),title:C.$t("settings.disk.save_pdf_to_disk"),description:C.$t("settings.disk.disk_setting_description")},null,8,["modelValue","title","description"])]),_:1},8,["title","description"])],64)}}};export{Xe as default}; diff --git a/public/build/assets/ForgotPassword-CQGBjnxL.js b/public/build/assets/ForgotPassword-Dd4Qvzwd.js similarity index 96% rename from public/build/assets/ForgotPassword-CQGBjnxL.js rename to public/build/assets/ForgotPassword-Dd4Qvzwd.js index a33f0a7d..d7b90006 100644 --- a/public/build/assets/ForgotPassword-CQGBjnxL.js +++ b/public/build/assets/ForgotPassword-Dd4Qvzwd.js @@ -1 +1 @@ -import{u as k,v as I,H as V,f as _,g as f,h as S,i as q,j as x,r as i,o as l,c as u,a as n,w as m,l as r,t as d,b as N,p as M,q as j,s as C,a1 as D}from"./main-B9dpPbRR.js";const E={key:0},F={key:1},G={class:"mt-4 mb-4 text-sm"},P={__name:"ForgotPassword",setup(H){const g=k(),{t:c}=I.useI18n(),o=V({email:""}),p=_(!1),t=_(!1),y={email:{required:f.withMessage(c("validation.required"),S),email:f.withMessage(c("validation.email_incorrect"),q)}},a=x(y,o);async function $(s){if(a.value.$touch(),!a.value.$invalid)try{t.value=!0,(await C.post("/api/v1/auth/password/email",o)).data&&g.showNotification({type:"success",message:"Mail sent successfully"}),p.value=!0,t.value=!1}catch(e){D(e),t.value=!1}}return(s,e)=>{const h=i("BaseInput"),b=i("BaseInputGroup"),B=i("BaseButton"),w=i("router-link");return l(),u("form",{id:"loginForm",onSubmit:j($,["prevent"])},[n(b,{error:r(a).email.$error&&r(a).email.$errors[0].$message,label:s.$t("login.enter_email"),class:"mb-4",required:""},{default:m(()=>[n(h,{modelValue:o.email,"onUpdate:modelValue":e[0]||(e[0]=v=>o.email=v),invalid:r(a).email.$error,focus:"",type:"email",name:"email",onInput:e[1]||(e[1]=v=>r(a).email.$touch())},null,8,["modelValue","invalid"])]),_:1},8,["error","label"]),n(B,{loading:t.value,disabled:t.value,type:"submit",variant:"primary"},{default:m(()=>[p.value?(l(),u("div",F,d(s.$t("validation.not_yet")),1)):(l(),u("div",E,d(s.$t("validation.send_reset_link")),1))]),_:1},8,["loading","disabled"]),N("div",G,[n(w,{to:"/login",class:"text-sm text-primary-400 hover:text-gray-700"},{default:m(()=>[M(d(s.$t("general.back_to_login")),1)]),_:1})])],32)}}};export{P as default}; +import{u as k,v as I,H as V,f as _,g as f,h as S,i as q,j as x,r as i,o as l,c as u,a as n,w as m,l as r,t as d,b as N,p as M,q as j,s as C,a1 as D}from"./main-pPEsZPea.js";const E={key:0},F={key:1},G={class:"mt-4 mb-4 text-sm"},P={__name:"ForgotPassword",setup(H){const g=k(),{t:c}=I.useI18n(),o=V({email:""}),p=_(!1),t=_(!1),y={email:{required:f.withMessage(c("validation.required"),S),email:f.withMessage(c("validation.email_incorrect"),q)}},a=x(y,o);async function $(s){if(a.value.$touch(),!a.value.$invalid)try{t.value=!0,(await C.post("/api/v1/auth/password/email",o)).data&&g.showNotification({type:"success",message:"Mail sent successfully"}),p.value=!0,t.value=!1}catch(e){D(e),t.value=!1}}return(s,e)=>{const h=i("BaseInput"),b=i("BaseInputGroup"),B=i("BaseButton"),w=i("router-link");return l(),u("form",{id:"loginForm",onSubmit:j($,["prevent"])},[n(b,{error:r(a).email.$error&&r(a).email.$errors[0].$message,label:s.$t("login.enter_email"),class:"mb-4",required:""},{default:m(()=>[n(h,{modelValue:o.email,"onUpdate:modelValue":e[0]||(e[0]=v=>o.email=v),invalid:r(a).email.$error,focus:"",type:"email",name:"email",onInput:e[1]||(e[1]=v=>r(a).email.$touch())},null,8,["modelValue","invalid"])]),_:1},8,["error","label"]),n(B,{loading:t.value,disabled:t.value,type:"submit",variant:"primary"},{default:m(()=>[p.value?(l(),u("div",F,d(s.$t("validation.not_yet")),1)):(l(),u("div",E,d(s.$t("validation.send_reset_link")),1))]),_:1},8,["loading","disabled"]),N("div",G,[n(w,{to:"/login",class:"text-sm text-primary-400 hover:text-gray-700"},{default:m(()=>[M(d(s.$t("general.back_to_login")),1)]),_:1})])],32)}}};export{P as default}; diff --git a/public/build/assets/ForgotPassword-1SHt_IMw.js b/public/build/assets/ForgotPassword-pPaTUWOZ.js similarity index 96% rename from public/build/assets/ForgotPassword-1SHt_IMw.js rename to public/build/assets/ForgotPassword-pPaTUWOZ.js index 40d8e620..f76d97dd 100644 --- a/public/build/assets/ForgotPassword-1SHt_IMw.js +++ b/public/build/assets/ForgotPassword-pPaTUWOZ.js @@ -1 +1 @@ -import{v as I,L as V,H as S,f,k as q,j as x,r,o as u,c as m,a as n,w as d,l as i,t as c,b as M,p as N,q as j,g,h as C,i as D}from"./main-B9dpPbRR.js";import{u as F}from"./auth-6FPSPboo.js";const G={key:0},L={key:1},P={class:"mt-4 mb-4 text-sm"},R={__name:"ForgotPassword",setup(A){const $=F(),{t:p}=I.useI18n(),h=V(),s=S({email:"",company:""}),v=f(!1),t=f(!1),y=q(()=>({email:{required:g.withMessage(p("validation.required"),C),email:g.withMessage(p("validation.email_incorrect"),D)}})),e=x(y,s);function B(o){if(e.value.$touch(),e.value.$invalid)return!0;t.value=!0;let a={...s,company:h.params.company};$.forgotPassword(a).then(l=>{t.value=!1}).catch(l=>{t.value=!1}),v.value=!0}return(o,a)=>{const l=r("BaseInput"),b=r("BaseInputGroup"),k=r("BaseButton"),w=r("router-link");return u(),m("form",{id:"loginForm",onSubmit:j(B,["prevent"])},[n(b,{error:i(e).email.$error&&i(e).email.$errors[0].$message,label:o.$t("login.enter_email"),class:"mb-4",required:""},{default:d(()=>[n(l,{modelValue:s.email,"onUpdate:modelValue":a[0]||(a[0]=_=>s.email=_),type:"email",name:"email",invalid:i(e).email.$error,onInput:a[1]||(a[1]=_=>i(e).email.$touch())},null,8,["modelValue","invalid"])]),_:1},8,["error","label"]),n(k,{loading:t.value,disabled:t.value,type:"submit",variant:"primary"},{default:d(()=>[v.value?(u(),m("div",L,c(o.$t("validation.not_yet")),1)):(u(),m("div",G,c(o.$t("validation.send_reset_link")),1))]),_:1},8,["loading","disabled"]),M("div",P,[n(w,{to:"login",class:"text-sm text-primary-400 hover:text-gray-700"},{default:d(()=>[N(c(o.$t("general.back_to_login")),1)]),_:1})])],32)}}};export{R as default}; +import{v as I,L as V,H as S,f,k as q,j as x,r,o as u,c as m,a as n,w as d,l as i,t as c,b as M,p as N,q as j,g,h as C,i as D}from"./main-pPEsZPea.js";import{u as F}from"./auth-mYHkZCAB.js";const G={key:0},L={key:1},P={class:"mt-4 mb-4 text-sm"},R={__name:"ForgotPassword",setup(A){const $=F(),{t:p}=I.useI18n(),h=V(),s=S({email:"",company:""}),v=f(!1),t=f(!1),y=q(()=>({email:{required:g.withMessage(p("validation.required"),C),email:g.withMessage(p("validation.email_incorrect"),D)}})),e=x(y,s);function B(o){if(e.value.$touch(),e.value.$invalid)return!0;t.value=!0;let a={...s,company:h.params.company};$.forgotPassword(a).then(l=>{t.value=!1}).catch(l=>{t.value=!1}),v.value=!0}return(o,a)=>{const l=r("BaseInput"),b=r("BaseInputGroup"),k=r("BaseButton"),w=r("router-link");return u(),m("form",{id:"loginForm",onSubmit:j(B,["prevent"])},[n(b,{error:i(e).email.$error&&i(e).email.$errors[0].$message,label:o.$t("login.enter_email"),class:"mb-4",required:""},{default:d(()=>[n(l,{modelValue:s.email,"onUpdate:modelValue":a[0]||(a[0]=_=>s.email=_),type:"email",name:"email",invalid:i(e).email.$error,onInput:a[1]||(a[1]=_=>i(e).email.$touch())},null,8,["modelValue","invalid"])]),_:1},8,["error","label"]),n(k,{loading:t.value,disabled:t.value,type:"submit",variant:"primary"},{default:d(()=>[v.value?(u(),m("div",L,c(o.$t("validation.not_yet")),1)):(u(),m("div",G,c(o.$t("validation.send_reset_link")),1))]),_:1},8,["loading","disabled"]),M("div",P,[n(w,{to:"login",class:"text-sm text-primary-400 hover:text-gray-700"},{default:d(()=>[N(c(o.$t("general.back_to_login")),1)]),_:1})])],32)}}};export{R as default}; diff --git a/public/build/assets/Index-mPhOMhDG.js b/public/build/assets/Index-1o0Qj9Qy.js similarity index 99% rename from public/build/assets/Index-mPhOMhDG.js rename to public/build/assets/Index-1o0Qj9Qy.js index 44b90b3d..b3af3b10 100644 --- a/public/build/assets/Index-mPhOMhDG.js +++ b/public/build/assets/Index-1o0Qj9Qy.js @@ -1 +1 @@ -import{a7 as z,u as H,v as R,at as G,L as ce,e as me,M as O,a5 as W,r as o,o as m,m as C,w as e,l as c,a as l,Q as L,p as g,t as v,K as k,c as pe,b as a,J as u,E as Ce,f as T,H as fe,k as Z,a9 as he,aa as ve,ac as A,ad as P,a6 as ye}from"./main-B9dpPbRR.js";const _e={__name:"ItemIndexDropdown",props:{row:{type:Object,default:null},table:{type:Object,default:null},loadData:{type:Function,default:null}},setup(s){const i=s,M=z();H();const{t:B}=R.useI18n(),I=G(),f=ce();me();const _=O();W("utils");function b(r){M.openDialog({title:B("general.are_you_sure"),message:B("items.confirm_delete"),yesLabel:B("general.ok"),noLabel:B("general.cancel"),variant:"danger",hideNoButton:!1,size:"lg"}).then(p=>{p&&I.deleteItem({ids:[r]}).then(y=>(y.data.success&&i.loadData&&i.loadData(),!0))})}return(r,p)=>{const y=o("BaseIcon"),F=o("BaseButton"),$=o("BaseDropdownItem"),D=o("router-link"),E=o("BaseDropdown");return m(),C(E,null,{activator:e(()=>[c(f).name==="items.view"?(m(),C(F,{key:0,variant:"primary"},{default:e(()=>[l(y,{name:"DotsHorizontalIcon",class:"h-5 text-white"})]),_:1})):(m(),C(y,{key:1,name:"DotsHorizontalIcon",class:"h-5 text-gray-500"}))]),default:e(()=>[c(_).hasAbilities(c(L).EDIT_ITEM)?(m(),C(D,{key:0,to:`/admin/items/${s.row.id}/edit`},{default:e(()=>[l($,null,{default:e(()=>[l(y,{name:"PencilIcon",class:"w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500"}),g(" "+v(r.$t("general.edit")),1)]),_:1})]),_:1},8,["to"])):k("",!0),c(_).hasAbilities(c(L).DELETE_ITEM)?(m(),C($,{key:1,onClick:p[0]||(p[0]=U=>b(s.row.id))},{default:e(()=>[l(y,{name:"TrashIcon",class:"w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500"}),g(" "+v(r.$t("general.delete")),1)]),_:1})):k("",!0)]),_:1})}}},ge={width:"110",height:"110",viewBox:"0 0 110 110",fill:"none",xmlns:"http://www.w3.org/2000/svg"},Be={"clip-path":"url(#clip0)"},Le=a("defs",null,[a("clipPath",{id:"clip0"},[a("rect",{width:"110",height:"110",fill:"white"})])],-1),Ie={__name:"SatelliteIcon",props:{primaryFillColor:{type:String,default:"fill-primary-500"},secondaryFillColor:{type:String,default:"fill-gray-600"}},setup(s){return(i,M)=>(m(),pe("svg",ge,[a("g",Be,[a("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M5.76398 22.9512L4.54883 21.7361L21.7363 4.54858L22.9515 5.76374L5.76398 22.9512Z",class:u(s.secondaryFillColor)},null,2),a("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M88.264 105.451L87.0488 104.236L104.236 87.0486L105.451 88.2637L88.264 105.451Z",class:u(s.secondaryFillColor)},null,2),a("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M29.8265 81.3887L28.6113 80.1736L38.9238 69.8611L40.139 71.0762L29.8265 81.3887Z",class:u(s.primaryFillColor)},null,2),a("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M30.9375 81.6406C30.9375 83.0637 29.7825 84.2188 28.3594 84.2188C26.9362 84.2188 25.7812 83.0637 25.7812 81.6406C25.7812 80.2175 26.9362 79.0625 28.3594 79.0625C29.7825 79.0625 30.9375 80.2175 30.9375 81.6406Z",class:u(s.primaryFillColor)},null,2),a("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M77.3435 61.5801C76.4635 61.5801 75.5835 61.9152 74.9132 62.5873L62.5863 74.9124C61.244 76.2548 61.244 78.4324 62.5863 79.7748L92.8123 110.001L110 92.8132L79.7738 62.5873C79.1035 61.9152 78.2235 61.5801 77.3435 61.5801ZM77.3435 63.2988C77.8024 63.2988 78.2338 63.4776 78.5587 63.8024L107.569 92.8132L92.8123 107.569L63.8015 78.5596C63.4767 78.2348 63.2979 77.8034 63.2979 77.3445C63.2979 76.8838 63.4767 76.4524 63.8015 76.1276L76.1284 63.8024C76.4532 63.4776 76.8846 63.2988 77.3435 63.2988Z",class:u(s.secondaryFillColor)},null,2),a("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M17.1875 0L0 17.1875L30.2259 47.4134C30.8963 48.0838 31.7763 48.4206 32.6562 48.4206C33.5363 48.4206 34.4162 48.0838 35.0866 47.4134L47.4134 35.0866C48.7558 33.7442 48.7558 31.5683 47.4134 30.2259L17.1875 0ZM17.1875 2.43031L46.1983 31.4411C46.5231 31.7659 46.7019 32.1973 46.7019 32.6562C46.7019 33.1152 46.5231 33.5466 46.1983 33.8714L33.8714 46.1983C33.5466 46.5231 33.1152 46.7019 32.6562 46.7019C32.1973 46.7019 31.7659 46.5231 31.4411 46.1983L2.43031 17.1875L17.1875 2.43031Z",class:u(s.secondaryFillColor)},null,2),a("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M60.156 28.9238C59.276 28.9238 58.396 29.259 57.7257 29.931L29.9301 57.7249C28.5878 59.0673 28.5878 61.2449 29.9301 62.5873L47.4132 80.0687C48.0835 80.7407 48.9635 81.0759 49.8435 81.0759C50.7235 81.0759 51.6035 80.7407 52.2738 80.0687L80.0695 52.2748C81.4118 50.9324 81.4118 48.7548 80.0695 47.4124L62.5863 29.931C61.916 29.259 61.036 28.9238 60.156 28.9238ZM60.156 30.6426C60.6149 30.6426 61.0463 30.8213 61.3712 31.1462L78.8543 48.6276C79.1792 48.9524 79.3579 49.3838 79.3579 49.8445C79.3579 50.3034 79.1792 50.7348 78.8543 51.0596L51.0587 78.8535C50.7338 79.1784 50.3024 79.3571 49.8435 79.3571C49.3846 79.3571 48.9532 79.1784 48.6284 78.8535L31.1453 61.3721C30.8204 61.0473 30.6417 60.6159 30.6417 60.157C30.6417 59.6963 30.8204 59.2649 31.1453 58.9401L58.9409 31.1462C59.2657 30.8213 59.6971 30.6426 60.156 30.6426Z",class:u(s.secondaryFillColor)},null,2),a("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M71.0765 40.1387L69.8613 38.9236L72.4395 36.3455L73.6546 37.5606L71.0765 40.1387Z",class:u(s.secondaryFillColor)},null,2),a("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M72.9858 24.8608C69.6291 28.2176 69.6291 33.6574 72.9858 37.0141C74.6633 38.6916 76.8633 39.5321 79.0633 39.5321C81.2616 39.5321 83.4616 38.6916 85.1391 37.0141L72.9858 24.8608ZM73.1388 27.4441L82.5558 36.8612C81.5091 37.4816 80.3111 37.8133 79.0633 37.8133C77.226 37.8133 75.5003 37.0966 74.201 35.799C72.9033 34.4996 72.1883 32.774 72.1883 30.9383C72.1883 29.6888 72.5183 28.4908 73.1388 27.4441Z",class:u(s.secondaryFillColor)},null,2),a("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M86.1459 32.0051C85.9259 32.0051 85.7059 31.9209 85.5374 31.7542C85.2023 31.4173 85.2023 30.8742 85.5374 30.5373C86.3504 29.7261 86.7973 28.6467 86.7973 27.5003C86.7973 26.3522 86.3504 25.2728 85.5374 24.4615C83.9149 22.839 81.0859 22.839 79.4616 24.4615C79.1265 24.7984 78.5834 24.7984 78.2465 24.4615C77.9113 24.1264 77.9113 23.5833 78.2465 23.2464C80.5187 20.9742 84.4821 20.9742 86.7543 23.2464C87.8904 24.3825 88.516 25.8933 88.516 27.5003C88.516 29.1073 87.8904 30.6181 86.7543 31.7542C86.5859 31.9209 86.3659 32.0051 86.1459 32.0051Z",class:u(s.primaryFillColor)},null,2),a("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M89.792 35.6514C89.572 35.6514 89.352 35.5672 89.1836 35.4004C88.8484 35.0636 88.8484 34.5204 89.1836 34.1836C90.9711 32.3978 91.9525 30.0259 91.9525 27.4994C91.9525 24.9745 90.9711 22.6009 89.1836 20.8151C87.3978 19.0294 85.0259 18.0462 82.4994 18.0462C79.9745 18.0462 77.6009 19.0294 75.8152 20.8151C75.48 21.1503 74.9352 21.1503 74.6 20.8151C74.2648 20.48 74.2648 19.9351 74.6 19.6C78.9553 15.2447 86.0434 15.2447 90.4005 19.6C94.7558 23.9553 94.7558 31.0434 90.4005 35.4004C90.232 35.5672 90.012 35.6514 89.792 35.6514Z",class:u(s.primaryFillColor)},null,2),a("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M93.4379 39.297C93.2179 39.297 92.9979 39.2128 92.8295 39.0461C92.4944 38.7092 92.4944 38.1661 92.8295 37.8292C95.5898 35.0706 97.1092 31.4028 97.1092 27.4995C97.1092 23.5979 95.5898 19.9284 92.8295 17.1698C90.0709 14.4112 86.4031 12.8901 82.4998 12.8901C78.5983 12.8901 74.9287 14.4112 72.1701 17.1698C71.835 17.505 71.2901 17.505 70.955 17.1698C70.6198 16.8347 70.6198 16.2898 70.955 15.9547C74.0384 12.8712 78.1394 11.1714 82.4998 11.1714C86.862 11.1714 90.9612 12.8712 94.0464 15.9547C97.1298 19.0381 98.8279 23.139 98.8279 27.4995C98.8279 31.8617 97.1298 35.9609 94.0464 39.0461C93.8779 39.2128 93.6579 39.297 93.4379 39.297Z",class:u(s.primaryFillColor)},null,2),a("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M39.7832 40.9981L8.8457 10.0606L10.0609 8.84546L40.9984 39.783L39.7832 40.9981Z",class:u(s.primaryFillColor)},null,2),a("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M99.9395 101.154L69.002 70.2169L70.2171 69.0017L101.155 99.9392L99.9395 101.154Z",class:u(s.primaryFillColor)},null,2)]),Le]))}},be={class:"flex items-center justify-end space-x-5"},we={class:"relative table-container"},ke={class:"relative flex items-center justify-end h-5 border-gray-200 border-solid"},Me={class:"flex text-sm font-medium cursor-pointer select-none text-primary-400"},Fe={class:"absolute items-center left-6 top-2.5 select-none"},$e={class:"relative block"},Ee={__name:"Index",setup(s){W("utils");const i=G(),M=Ce();H();const B=z(),I=O(),{t:f}=R.useI18n();let _=T(!1),b=T(!0);const r=fe({name:"",unit_id:"",price:""}),p=T(null),y=Z(()=>!i.totalItems&&!b.value),F=Z({get:()=>i.selectedItems,set:n=>i.selectItem(n)}),$=Z(()=>[{key:"status",thClass:"extra w-10",tdClass:"font-medium text-gray-900",placeholderClass:"w-10",sortable:!1},{key:"name",label:f("items.name"),thClass:"extra",tdClass:"font-medium text-gray-900"},{key:"unit_name",label:f("items.unit")},{key:"price",label:f("items.price")},{key:"created_at",label:f("items.added_on")},{key:"actions",thClass:"text-right",tdClass:"text-right text-sm font-medium",sortable:!1}]);he(r,()=>{J()},{debounce:500}),i.fetchItemUnits({limit:"all"}),ve(()=>{i.selectAllField&&i.selectAllItems()});function D(){r.name="",r.unit_id="",r.price=""}function E(){return I.hasAbilities([L.DELETE_ITEM,L.EDIT_ITEM])}function U(){_.value&&D(),_.value=!_.value}function N(){p.value&&p.value.refresh()}function J(){N()}async function K(n){return(await i.fetchItemUnits({search:n})).data.data}async function Q({page:n,filter:d,sort:w}){let x={search:r.name,unit_id:r.unit_id!==null?r.unit_id:"",price:Math.round(r.price*100),orderByField:w.fieldName||"created_at",orderBy:w.order||"desc",page:n};b.value=!0;let h=await i.fetchItems(x);return b.value=!1,{data:h.data.data,pagination:{totalPages:h.data.meta.last_page,currentPage:n,totalCount:h.data.meta.total,limit:10}}}function X(){B.openDialog({title:f("general.are_you_sure"),message:f("items.confirm_delete",2),yesLabel:f("general.ok"),noLabel:f("general.cancel"),variant:"danger",hideNoButton:!1,size:"lg"}).then(n=>{n&&i.deleteMultipleItems().then(d=>{d.data.success&&p.value&&p.value.refresh()})})}return(n,d)=>{const w=o("BaseBreadcrumbItem"),x=o("BaseBreadcrumb"),h=o("BaseIcon"),S=o("BaseButton"),q=o("BasePageHeader"),Y=o("BaseInput"),V=o("BaseInputGroup"),ee=o("BaseMultiselect"),te=o("BaseMoney"),le=o("BaseFilterWrapper"),ae=o("BaseEmptyPlaceholder"),ne=o("BaseDropdownItem"),oe=o("BaseDropdown"),j=o("BaseCheckbox"),se=o("router-link"),ie=o("BaseFormatMoney"),re=o("BaseTable"),de=o("BasePage");return m(),C(de,null,{default:e(()=>[l(q,{title:n.$t("items.title")},{actions:e(()=>[a("div",be,[A(l(S,{variant:"primary-outline",onClick:U},{right:e(t=>[c(_)?(m(),C(h,{key:1,name:"XIcon",class:u(t.class)},null,8,["class"])):(m(),C(h,{key:0,class:u(t.class),name:"FilterIcon"},null,8,["class"]))]),default:e(()=>[g(v(n.$t("general.filter"))+" ",1)]),_:1},512),[[P,c(i).totalItems]]),c(I).hasAbilities(c(L).CREATE_ITEM)?(m(),C(S,{key:0,onClick:d[0]||(d[0]=t=>n.$router.push("/admin/items/create"))},{left:e(t=>[l(h,{name:"PlusIcon",class:u(t.class)},null,8,["class"])]),default:e(()=>[g(" "+v(n.$t("items.add_item")),1)]),_:1})):k("",!0)])]),default:e(()=>[l(x,null,{default:e(()=>[l(w,{title:n.$t("general.home"),to:"dashboard"},null,8,["title"]),l(w,{title:n.$t("items.item",2),to:"#",active:""},null,8,["title"])]),_:1})]),_:1},8,["title"]),l(le,{show:c(_),class:"mt-5",onClear:D},{default:e(()=>[l(V,{label:n.$t("items.name"),class:"text-left"},{default:e(()=>[l(Y,{modelValue:r.name,"onUpdate:modelValue":d[1]||(d[1]=t=>r.name=t),type:"text",name:"name",autocomplete:"off"},null,8,["modelValue"])]),_:1},8,["label"]),l(V,{label:n.$t("items.unit"),class:"text-left"},{default:e(()=>[l(ee,{modelValue:r.unit_id,"onUpdate:modelValue":d[2]||(d[2]=t=>r.unit_id=t),placeholder:n.$t("items.select_a_unit"),"value-prop":"id","track-by":"name","filter-results":!1,label:"name","resolve-on-load":"",delay:500,searchable:"",class:"w-full",options:K},null,8,["modelValue","placeholder"])]),_:1},8,["label"]),l(V,{class:"text-left",label:n.$t("items.price")},{default:e(()=>[l(te,{modelValue:r.price,"onUpdate:modelValue":d[3]||(d[3]=t=>r.price=t)},null,8,["modelValue"])]),_:1},8,["label"])]),_:1},8,["show"]),A(l(ae,{title:n.$t("items.no_items"),description:n.$t("items.list_of_items")},{actions:e(()=>[c(I).hasAbilities(c(L).CREATE_ITEM)?(m(),C(S,{key:0,variant:"primary-outline",onClick:d[4]||(d[4]=t=>n.$router.push("/admin/items/create"))},{left:e(t=>[l(h,{name:"PlusIcon",class:u(t.class)},null,8,["class"])]),default:e(()=>[g(" "+v(n.$t("items.add_new_item")),1)]),_:1})):k("",!0)]),default:e(()=>[l(Ie,{class:"mt-5 mb-4"})]),_:1},8,["title","description"]),[[P,y.value]]),A(a("div",we,[a("div",ke,[c(i).selectedItems.length?(m(),C(oe,{key:0},{activator:e(()=>[a("span",Me,[g(v(n.$t("general.actions"))+" ",1),l(h,{name:"ChevronDownIcon"})])]),default:e(()=>[l(ne,{onClick:X},{default:e(()=>[l(h,{name:"TrashIcon",class:"mr-3 text-gray-600"}),g(" "+v(n.$t("general.delete")),1)]),_:1})]),_:1})):k("",!0)]),l(re,{ref_key:"table",ref:p,data:Q,columns:$.value,"placeholder-count":c(i).totalItems>=20?10:5,class:"mt-3"},ye({header:e(()=>[a("div",Fe,[l(j,{modelValue:c(i).selectAllField,"onUpdate:modelValue":d[5]||(d[5]=t=>c(i).selectAllField=t),variant:"primary",onChange:c(i).selectAllItems},null,8,["modelValue","onChange"])])]),"cell-status":e(({row:t})=>[a("div",$e,[l(j,{id:t.id,modelValue:F.value,"onUpdate:modelValue":d[6]||(d[6]=ue=>F.value=ue),value:t.data.id},null,8,["id","modelValue","value"])])]),"cell-name":e(({row:t})=>[l(se,{to:{path:`items/${t.data.id}/edit`},class:"font-medium text-primary-500"},{default:e(()=>[g(v(t.data.name),1)]),_:2},1032,["to"])]),"cell-unit_name":e(({row:t})=>[a("span",null,v(t.data.unit?t.data.unit.name:"-"),1)]),"cell-price":e(({row:t})=>[l(ie,{amount:t.data.price,currency:c(M).selectedCompanyCurrency},null,8,["amount","currency"])]),"cell-created_at":e(({row:t})=>[a("span",null,v(t.data.formatted_created_at),1)]),_:2},[E()?{name:"cell-actions",fn:e(({row:t})=>[l(_e,{row:t.data,table:p.value,"load-data":N},null,8,["row","table"])]),key:"0"}:void 0]),1032,["columns","placeholder-count"])],512),[[P,!y.value]])]),_:1})}}};export{Ee as default}; +import{a7 as z,u as H,v as R,at as G,L as ce,e as me,M as O,a5 as W,r as o,o as m,m as C,w as e,l as c,a as l,Q as L,p as g,t as v,K as k,c as pe,b as a,J as u,E as Ce,f as T,H as fe,k as Z,a9 as he,aa as ve,ac as A,ad as P,a6 as ye}from"./main-pPEsZPea.js";const _e={__name:"ItemIndexDropdown",props:{row:{type:Object,default:null},table:{type:Object,default:null},loadData:{type:Function,default:null}},setup(s){const i=s,M=z();H();const{t:B}=R.useI18n(),I=G(),f=ce();me();const _=O();W("utils");function b(r){M.openDialog({title:B("general.are_you_sure"),message:B("items.confirm_delete"),yesLabel:B("general.ok"),noLabel:B("general.cancel"),variant:"danger",hideNoButton:!1,size:"lg"}).then(p=>{p&&I.deleteItem({ids:[r]}).then(y=>(y.data.success&&i.loadData&&i.loadData(),!0))})}return(r,p)=>{const y=o("BaseIcon"),F=o("BaseButton"),$=o("BaseDropdownItem"),D=o("router-link"),E=o("BaseDropdown");return m(),C(E,null,{activator:e(()=>[c(f).name==="items.view"?(m(),C(F,{key:0,variant:"primary"},{default:e(()=>[l(y,{name:"DotsHorizontalIcon",class:"h-5 text-white"})]),_:1})):(m(),C(y,{key:1,name:"DotsHorizontalIcon",class:"h-5 text-gray-500"}))]),default:e(()=>[c(_).hasAbilities(c(L).EDIT_ITEM)?(m(),C(D,{key:0,to:`/admin/items/${s.row.id}/edit`},{default:e(()=>[l($,null,{default:e(()=>[l(y,{name:"PencilIcon",class:"w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500"}),g(" "+v(r.$t("general.edit")),1)]),_:1})]),_:1},8,["to"])):k("",!0),c(_).hasAbilities(c(L).DELETE_ITEM)?(m(),C($,{key:1,onClick:p[0]||(p[0]=U=>b(s.row.id))},{default:e(()=>[l(y,{name:"TrashIcon",class:"w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500"}),g(" "+v(r.$t("general.delete")),1)]),_:1})):k("",!0)]),_:1})}}},ge={width:"110",height:"110",viewBox:"0 0 110 110",fill:"none",xmlns:"http://www.w3.org/2000/svg"},Be={"clip-path":"url(#clip0)"},Le=a("defs",null,[a("clipPath",{id:"clip0"},[a("rect",{width:"110",height:"110",fill:"white"})])],-1),Ie={__name:"SatelliteIcon",props:{primaryFillColor:{type:String,default:"fill-primary-500"},secondaryFillColor:{type:String,default:"fill-gray-600"}},setup(s){return(i,M)=>(m(),pe("svg",ge,[a("g",Be,[a("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M5.76398 22.9512L4.54883 21.7361L21.7363 4.54858L22.9515 5.76374L5.76398 22.9512Z",class:u(s.secondaryFillColor)},null,2),a("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M88.264 105.451L87.0488 104.236L104.236 87.0486L105.451 88.2637L88.264 105.451Z",class:u(s.secondaryFillColor)},null,2),a("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M29.8265 81.3887L28.6113 80.1736L38.9238 69.8611L40.139 71.0762L29.8265 81.3887Z",class:u(s.primaryFillColor)},null,2),a("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M30.9375 81.6406C30.9375 83.0637 29.7825 84.2188 28.3594 84.2188C26.9362 84.2188 25.7812 83.0637 25.7812 81.6406C25.7812 80.2175 26.9362 79.0625 28.3594 79.0625C29.7825 79.0625 30.9375 80.2175 30.9375 81.6406Z",class:u(s.primaryFillColor)},null,2),a("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M77.3435 61.5801C76.4635 61.5801 75.5835 61.9152 74.9132 62.5873L62.5863 74.9124C61.244 76.2548 61.244 78.4324 62.5863 79.7748L92.8123 110.001L110 92.8132L79.7738 62.5873C79.1035 61.9152 78.2235 61.5801 77.3435 61.5801ZM77.3435 63.2988C77.8024 63.2988 78.2338 63.4776 78.5587 63.8024L107.569 92.8132L92.8123 107.569L63.8015 78.5596C63.4767 78.2348 63.2979 77.8034 63.2979 77.3445C63.2979 76.8838 63.4767 76.4524 63.8015 76.1276L76.1284 63.8024C76.4532 63.4776 76.8846 63.2988 77.3435 63.2988Z",class:u(s.secondaryFillColor)},null,2),a("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M17.1875 0L0 17.1875L30.2259 47.4134C30.8963 48.0838 31.7763 48.4206 32.6562 48.4206C33.5363 48.4206 34.4162 48.0838 35.0866 47.4134L47.4134 35.0866C48.7558 33.7442 48.7558 31.5683 47.4134 30.2259L17.1875 0ZM17.1875 2.43031L46.1983 31.4411C46.5231 31.7659 46.7019 32.1973 46.7019 32.6562C46.7019 33.1152 46.5231 33.5466 46.1983 33.8714L33.8714 46.1983C33.5466 46.5231 33.1152 46.7019 32.6562 46.7019C32.1973 46.7019 31.7659 46.5231 31.4411 46.1983L2.43031 17.1875L17.1875 2.43031Z",class:u(s.secondaryFillColor)},null,2),a("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M60.156 28.9238C59.276 28.9238 58.396 29.259 57.7257 29.931L29.9301 57.7249C28.5878 59.0673 28.5878 61.2449 29.9301 62.5873L47.4132 80.0687C48.0835 80.7407 48.9635 81.0759 49.8435 81.0759C50.7235 81.0759 51.6035 80.7407 52.2738 80.0687L80.0695 52.2748C81.4118 50.9324 81.4118 48.7548 80.0695 47.4124L62.5863 29.931C61.916 29.259 61.036 28.9238 60.156 28.9238ZM60.156 30.6426C60.6149 30.6426 61.0463 30.8213 61.3712 31.1462L78.8543 48.6276C79.1792 48.9524 79.3579 49.3838 79.3579 49.8445C79.3579 50.3034 79.1792 50.7348 78.8543 51.0596L51.0587 78.8535C50.7338 79.1784 50.3024 79.3571 49.8435 79.3571C49.3846 79.3571 48.9532 79.1784 48.6284 78.8535L31.1453 61.3721C30.8204 61.0473 30.6417 60.6159 30.6417 60.157C30.6417 59.6963 30.8204 59.2649 31.1453 58.9401L58.9409 31.1462C59.2657 30.8213 59.6971 30.6426 60.156 30.6426Z",class:u(s.secondaryFillColor)},null,2),a("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M71.0765 40.1387L69.8613 38.9236L72.4395 36.3455L73.6546 37.5606L71.0765 40.1387Z",class:u(s.secondaryFillColor)},null,2),a("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M72.9858 24.8608C69.6291 28.2176 69.6291 33.6574 72.9858 37.0141C74.6633 38.6916 76.8633 39.5321 79.0633 39.5321C81.2616 39.5321 83.4616 38.6916 85.1391 37.0141L72.9858 24.8608ZM73.1388 27.4441L82.5558 36.8612C81.5091 37.4816 80.3111 37.8133 79.0633 37.8133C77.226 37.8133 75.5003 37.0966 74.201 35.799C72.9033 34.4996 72.1883 32.774 72.1883 30.9383C72.1883 29.6888 72.5183 28.4908 73.1388 27.4441Z",class:u(s.secondaryFillColor)},null,2),a("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M86.1459 32.0051C85.9259 32.0051 85.7059 31.9209 85.5374 31.7542C85.2023 31.4173 85.2023 30.8742 85.5374 30.5373C86.3504 29.7261 86.7973 28.6467 86.7973 27.5003C86.7973 26.3522 86.3504 25.2728 85.5374 24.4615C83.9149 22.839 81.0859 22.839 79.4616 24.4615C79.1265 24.7984 78.5834 24.7984 78.2465 24.4615C77.9113 24.1264 77.9113 23.5833 78.2465 23.2464C80.5187 20.9742 84.4821 20.9742 86.7543 23.2464C87.8904 24.3825 88.516 25.8933 88.516 27.5003C88.516 29.1073 87.8904 30.6181 86.7543 31.7542C86.5859 31.9209 86.3659 32.0051 86.1459 32.0051Z",class:u(s.primaryFillColor)},null,2),a("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M89.792 35.6514C89.572 35.6514 89.352 35.5672 89.1836 35.4004C88.8484 35.0636 88.8484 34.5204 89.1836 34.1836C90.9711 32.3978 91.9525 30.0259 91.9525 27.4994C91.9525 24.9745 90.9711 22.6009 89.1836 20.8151C87.3978 19.0294 85.0259 18.0462 82.4994 18.0462C79.9745 18.0462 77.6009 19.0294 75.8152 20.8151C75.48 21.1503 74.9352 21.1503 74.6 20.8151C74.2648 20.48 74.2648 19.9351 74.6 19.6C78.9553 15.2447 86.0434 15.2447 90.4005 19.6C94.7558 23.9553 94.7558 31.0434 90.4005 35.4004C90.232 35.5672 90.012 35.6514 89.792 35.6514Z",class:u(s.primaryFillColor)},null,2),a("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M93.4379 39.297C93.2179 39.297 92.9979 39.2128 92.8295 39.0461C92.4944 38.7092 92.4944 38.1661 92.8295 37.8292C95.5898 35.0706 97.1092 31.4028 97.1092 27.4995C97.1092 23.5979 95.5898 19.9284 92.8295 17.1698C90.0709 14.4112 86.4031 12.8901 82.4998 12.8901C78.5983 12.8901 74.9287 14.4112 72.1701 17.1698C71.835 17.505 71.2901 17.505 70.955 17.1698C70.6198 16.8347 70.6198 16.2898 70.955 15.9547C74.0384 12.8712 78.1394 11.1714 82.4998 11.1714C86.862 11.1714 90.9612 12.8712 94.0464 15.9547C97.1298 19.0381 98.8279 23.139 98.8279 27.4995C98.8279 31.8617 97.1298 35.9609 94.0464 39.0461C93.8779 39.2128 93.6579 39.297 93.4379 39.297Z",class:u(s.primaryFillColor)},null,2),a("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M39.7832 40.9981L8.8457 10.0606L10.0609 8.84546L40.9984 39.783L39.7832 40.9981Z",class:u(s.primaryFillColor)},null,2),a("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M99.9395 101.154L69.002 70.2169L70.2171 69.0017L101.155 99.9392L99.9395 101.154Z",class:u(s.primaryFillColor)},null,2)]),Le]))}},be={class:"flex items-center justify-end space-x-5"},we={class:"relative table-container"},ke={class:"relative flex items-center justify-end h-5 border-gray-200 border-solid"},Me={class:"flex text-sm font-medium cursor-pointer select-none text-primary-400"},Fe={class:"absolute items-center left-6 top-2.5 select-none"},$e={class:"relative block"},Ee={__name:"Index",setup(s){W("utils");const i=G(),M=Ce();H();const B=z(),I=O(),{t:f}=R.useI18n();let _=T(!1),b=T(!0);const r=fe({name:"",unit_id:"",price:""}),p=T(null),y=Z(()=>!i.totalItems&&!b.value),F=Z({get:()=>i.selectedItems,set:n=>i.selectItem(n)}),$=Z(()=>[{key:"status",thClass:"extra w-10",tdClass:"font-medium text-gray-900",placeholderClass:"w-10",sortable:!1},{key:"name",label:f("items.name"),thClass:"extra",tdClass:"font-medium text-gray-900"},{key:"unit_name",label:f("items.unit")},{key:"price",label:f("items.price")},{key:"created_at",label:f("items.added_on")},{key:"actions",thClass:"text-right",tdClass:"text-right text-sm font-medium",sortable:!1}]);he(r,()=>{J()},{debounce:500}),i.fetchItemUnits({limit:"all"}),ve(()=>{i.selectAllField&&i.selectAllItems()});function D(){r.name="",r.unit_id="",r.price=""}function E(){return I.hasAbilities([L.DELETE_ITEM,L.EDIT_ITEM])}function U(){_.value&&D(),_.value=!_.value}function N(){p.value&&p.value.refresh()}function J(){N()}async function K(n){return(await i.fetchItemUnits({search:n})).data.data}async function Q({page:n,filter:d,sort:w}){let x={search:r.name,unit_id:r.unit_id!==null?r.unit_id:"",price:Math.round(r.price*100),orderByField:w.fieldName||"created_at",orderBy:w.order||"desc",page:n};b.value=!0;let h=await i.fetchItems(x);return b.value=!1,{data:h.data.data,pagination:{totalPages:h.data.meta.last_page,currentPage:n,totalCount:h.data.meta.total,limit:10}}}function X(){B.openDialog({title:f("general.are_you_sure"),message:f("items.confirm_delete",2),yesLabel:f("general.ok"),noLabel:f("general.cancel"),variant:"danger",hideNoButton:!1,size:"lg"}).then(n=>{n&&i.deleteMultipleItems().then(d=>{d.data.success&&p.value&&p.value.refresh()})})}return(n,d)=>{const w=o("BaseBreadcrumbItem"),x=o("BaseBreadcrumb"),h=o("BaseIcon"),S=o("BaseButton"),q=o("BasePageHeader"),Y=o("BaseInput"),V=o("BaseInputGroup"),ee=o("BaseMultiselect"),te=o("BaseMoney"),le=o("BaseFilterWrapper"),ae=o("BaseEmptyPlaceholder"),ne=o("BaseDropdownItem"),oe=o("BaseDropdown"),j=o("BaseCheckbox"),se=o("router-link"),ie=o("BaseFormatMoney"),re=o("BaseTable"),de=o("BasePage");return m(),C(de,null,{default:e(()=>[l(q,{title:n.$t("items.title")},{actions:e(()=>[a("div",be,[A(l(S,{variant:"primary-outline",onClick:U},{right:e(t=>[c(_)?(m(),C(h,{key:1,name:"XIcon",class:u(t.class)},null,8,["class"])):(m(),C(h,{key:0,class:u(t.class),name:"FilterIcon"},null,8,["class"]))]),default:e(()=>[g(v(n.$t("general.filter"))+" ",1)]),_:1},512),[[P,c(i).totalItems]]),c(I).hasAbilities(c(L).CREATE_ITEM)?(m(),C(S,{key:0,onClick:d[0]||(d[0]=t=>n.$router.push("/admin/items/create"))},{left:e(t=>[l(h,{name:"PlusIcon",class:u(t.class)},null,8,["class"])]),default:e(()=>[g(" "+v(n.$t("items.add_item")),1)]),_:1})):k("",!0)])]),default:e(()=>[l(x,null,{default:e(()=>[l(w,{title:n.$t("general.home"),to:"dashboard"},null,8,["title"]),l(w,{title:n.$t("items.item",2),to:"#",active:""},null,8,["title"])]),_:1})]),_:1},8,["title"]),l(le,{show:c(_),class:"mt-5",onClear:D},{default:e(()=>[l(V,{label:n.$t("items.name"),class:"text-left"},{default:e(()=>[l(Y,{modelValue:r.name,"onUpdate:modelValue":d[1]||(d[1]=t=>r.name=t),type:"text",name:"name",autocomplete:"off"},null,8,["modelValue"])]),_:1},8,["label"]),l(V,{label:n.$t("items.unit"),class:"text-left"},{default:e(()=>[l(ee,{modelValue:r.unit_id,"onUpdate:modelValue":d[2]||(d[2]=t=>r.unit_id=t),placeholder:n.$t("items.select_a_unit"),"value-prop":"id","track-by":"name","filter-results":!1,label:"name","resolve-on-load":"",delay:500,searchable:"",class:"w-full",options:K},null,8,["modelValue","placeholder"])]),_:1},8,["label"]),l(V,{class:"text-left",label:n.$t("items.price")},{default:e(()=>[l(te,{modelValue:r.price,"onUpdate:modelValue":d[3]||(d[3]=t=>r.price=t)},null,8,["modelValue"])]),_:1},8,["label"])]),_:1},8,["show"]),A(l(ae,{title:n.$t("items.no_items"),description:n.$t("items.list_of_items")},{actions:e(()=>[c(I).hasAbilities(c(L).CREATE_ITEM)?(m(),C(S,{key:0,variant:"primary-outline",onClick:d[4]||(d[4]=t=>n.$router.push("/admin/items/create"))},{left:e(t=>[l(h,{name:"PlusIcon",class:u(t.class)},null,8,["class"])]),default:e(()=>[g(" "+v(n.$t("items.add_new_item")),1)]),_:1})):k("",!0)]),default:e(()=>[l(Ie,{class:"mt-5 mb-4"})]),_:1},8,["title","description"]),[[P,y.value]]),A(a("div",we,[a("div",ke,[c(i).selectedItems.length?(m(),C(oe,{key:0},{activator:e(()=>[a("span",Me,[g(v(n.$t("general.actions"))+" ",1),l(h,{name:"ChevronDownIcon"})])]),default:e(()=>[l(ne,{onClick:X},{default:e(()=>[l(h,{name:"TrashIcon",class:"mr-3 text-gray-600"}),g(" "+v(n.$t("general.delete")),1)]),_:1})]),_:1})):k("",!0)]),l(re,{ref_key:"table",ref:p,data:Q,columns:$.value,"placeholder-count":c(i).totalItems>=20?10:5,class:"mt-3"},ye({header:e(()=>[a("div",Fe,[l(j,{modelValue:c(i).selectAllField,"onUpdate:modelValue":d[5]||(d[5]=t=>c(i).selectAllField=t),variant:"primary",onChange:c(i).selectAllItems},null,8,["modelValue","onChange"])])]),"cell-status":e(({row:t})=>[a("div",$e,[l(j,{id:t.id,modelValue:F.value,"onUpdate:modelValue":d[6]||(d[6]=ue=>F.value=ue),value:t.data.id},null,8,["id","modelValue","value"])])]),"cell-name":e(({row:t})=>[l(se,{to:{path:`items/${t.data.id}/edit`},class:"font-medium text-primary-500"},{default:e(()=>[g(v(t.data.name),1)]),_:2},1032,["to"])]),"cell-unit_name":e(({row:t})=>[a("span",null,v(t.data.unit?t.data.unit.name:"-"),1)]),"cell-price":e(({row:t})=>[l(ie,{amount:t.data.price,currency:c(M).selectedCompanyCurrency},null,8,["amount","currency"])]),"cell-created_at":e(({row:t})=>[a("span",null,v(t.data.formatted_created_at),1)]),_:2},[E()?{name:"cell-actions",fn:e(({row:t})=>[l(_e,{row:t.data,table:p.value,"load-data":N},null,8,["row","table"])]),key:"0"}:void 0]),1032,["columns","placeholder-count"])],512),[[P,!y.value]])]),_:1})}}};export{Ee as default}; diff --git a/public/build/assets/Index-CPkDZaGI.js b/public/build/assets/Index-29Zk8_Fk.js similarity index 90% rename from public/build/assets/Index-CPkDZaGI.js rename to public/build/assets/Index-29Zk8_Fk.js index 59309644..fae3232d 100644 --- a/public/build/assets/Index-CPkDZaGI.js +++ b/public/build/assets/Index-29Zk8_Fk.js @@ -1 +1 @@ -import{aO as fe,a8 as pe,a7 as ge,u as be,M as Ie,f as b,v as Be,e as ye,H as he,k,a9 as Ce,aa as ke,r as o,o as I,m as B,w as s,a,ac as R,ad as V,l as i,J as $,p as m,t as _,Q as y,K as M,a6 as q,b as p}from"./main-B9dpPbRR.js";import{_ as Re}from"./SendInvoiceModal-gHfWsGqG.js";import{_ as Ve}from"./RecurringInvoiceIndexDropdown-FtyOunpa.js";import{_ as $e}from"./MoonwalkerIcon-049DwnAE.js";import"./mail-driver-L7_iQECX.js";const Ee=p("div",{class:"hidden w-8 h-0 mx-4 border border-gray-400 border-solid xl:block",style:{"margin-top":"1.5rem"}},null,-1),Ne={class:"relative table-container"},Ae={class:"relative flex items-center justify-between h-10 mt-5 list-none border-b-2 border-gray-200 border-solid"},Se={class:"flex text-sm font-medium cursor-pointer select-none text-primary-400"},Te={class:"absolute items-center left-6 top-2.5 select-none"},we={class:"relative block"},Pe={__name:"Index",setup(xe){const c=fe();pe();const H=ge(),w=be(),E=Ie(),h=b(null),{t:r}=Be.useI18n(),g=b(!1),x=b(["ACTIVE","ON_HOLD","ALL"]),N=b(!0),v=b("recurring-invoices.all");ye();let l=he({customer_id:"",status:"",from_date:"",to_date:""});const D=k(()=>!c.totalRecurringInvoices&&!N.value),O=k({get:()=>c.selectedRecurringInvoices,set:e=>c.selectRecurringInvoice(e)}),j=k(()=>[{key:"checkbox",thClass:"extra",tdClass:"font-medium text-gray-900"},{key:"starts_at",label:r("recurring_invoices.starts_at"),thClass:"extra",tdClass:"font-medium"},{key:"customer",label:r("invoices.customer")},{key:"frequency",label:r("recurring_invoices.frequency.title")},{key:"status",label:r("invoices.status")},{key:"total",label:r("invoices.total")},{key:"actions",label:r("recurring_invoices.action"),tdClass:"text-right text-sm font-medium",thClass:"text-right",sortable:!1}]);Ce(l,()=>{X()},{debounce:500}),ke(()=>{c.selectAllField&&c.selectAllRecurringInvoices()});const W=k(()=>x.value.findIndex(e=>e===l.status));function z(){return E.hasAbilities([y.DELETE_RECURRING_INVOICE,y.EDIT_RECURRING_INVOICE,y.VIEW_RECURRING_INVOICE])}function J(e){const n=c.frequencies.find(u=>u.value===e);return n?n.label:`CUSTOM: ${e}`}function A(){h.value&&h.value.refresh()}async function K({page:e,filter:n,sort:u}){let f={customer_id:l.customer_id,status:l.status,from_date:l.from_date,to_date:l.to_date,orderByField:u.fieldName||"created_at",orderBy:u.order||"desc",page:e};N.value=!0;let d=await c.fetchRecurringInvoices(f);return N.value=!1,{data:d.data.data,pagination:{totalPages:d.data.meta.last_page,currentPage:e,totalCount:d.data.meta.total,limit:10}}}function Q(e){if(v.value==e.title)return!0;switch(v.value=e.title,e.title){case r("recurring_invoices.active"):l.status="ACTIVE";break;case r("recurring_invoices.on_hold"):l.status="ON_HOLD";break;case r("recurring_invoices.all"):l.status="ALL";break}}function X(){c.$patch(e=>{e.selectedRecurringInvoices=[],e.selectAllField=!1}),A()}function F(){l.customer_id="",l.status="",l.from_date="",l.to_date="",l.invoice_number="",v.value=r("general.all")}async function Y(e=null){H.openDialog({title:r("general.are_you_sure"),message:r("invoices.confirm_delete"),yesLabel:r("general.ok"),noLabel:r("general.cancel"),variant:"danger",hideNoButton:!1,size:"lg"}).then(async n=>{n&&await c.deleteMultipleRecurringInvoices(e).then(u=>{u.data.success?(A(),c.$patch(f=>{f.selectedRecurringInvoices=[],f.selectAllField=!1}),w.showNotification({type:"success",message:r("recurring_invoices.deleted_message",2)})):u.data.error&&w.showNotification({type:"error",message:u.data.message})})})}function Z(){g.value&&F(),g.value=!g.value}async function ee(e,n){l.status="",A()}function te(e){switch(e){case"ACTIVE":v.value=r("recurring_invoices.active");break;case"ON_HOLD":v.value=r("recurring_invoices.on_hold");break;case"ALL":v.value=r("recurring_invoices.all");break}}return(e,n)=>{const u=o("BaseBreadcrumbItem"),f=o("BaseBreadcrumb"),d=o("BaseIcon"),S=o("BaseButton"),L=o("router-link"),ae=o("BasePageHeader"),se=o("BaseCustomerSelectInput"),C=o("BaseInputGroup"),ne=o("BaseMultiselect"),U=o("BaseDatePicker"),le=o("BaseFilterWrapper"),oe=o("BaseEmptyPlaceholder"),T=o("BaseTab"),re=o("BaseTabGroup"),ie=o("BaseDropdownItem"),ce=o("BaseDropdown"),P=o("BaseCheckbox"),G=o("BaseText"),ue=o("BaseRecurringInvoiceStatusBadge"),de=o("BaseFormatMoney"),me=o("BaseTable"),_e=o("BasePage");return I(),B(_e,null,{default:s(()=>[a(Re),a(ae,{title:e.$t("recurring_invoices.title")},{actions:s(()=>[R(a(S,{variant:"primary-outline",onClick:Z},{right:s(t=>[g.value?(I(),B(d,{key:1,name:"XIcon",class:$(t.class)},null,8,["class"])):(I(),B(d,{key:0,name:"FilterIcon",class:$(t.class)},null,8,["class"]))]),default:s(()=>[m(_(e.$t("general.filter"))+" ",1)]),_:1},512),[[V,i(c).totalRecurringInvoices]]),i(E).hasAbilities(i(y).CREATE_RECURRING_INVOICE)?(I(),B(L,{key:0,to:"recurring-invoices/create"},{default:s(()=>[a(S,{variant:"primary",class:"ml-4"},{left:s(t=>[a(d,{name:"PlusIcon",class:$(t.class)},null,8,["class"])]),default:s(()=>[m(" "+_(e.$t("recurring_invoices.new_invoice")),1)]),_:1})]),_:1})):M("",!0)]),default:s(()=>[a(f,null,{default:s(()=>[a(u,{title:e.$t("general.home"),to:"dashboard"},null,8,["title"]),a(u,{title:e.$t("recurring_invoices.invoice",2),to:"#",active:""},null,8,["title"])]),_:1})]),_:1},8,["title"]),R(a(le,{onClear:F},{default:s(()=>[a(C,{label:e.$t("customers.customer",1)},{default:s(()=>[a(se,{modelValue:i(l).customer_id,"onUpdate:modelValue":n[0]||(n[0]=t=>i(l).customer_id=t),placeholder:e.$t("customers.type_or_click"),"value-prop":"id",label:"name"},null,8,["modelValue","placeholder"])]),_:1},8,["label"]),a(C,{label:e.$t("recurring_invoices.status")},{default:s(()=>[a(ne,{modelValue:i(l).status,"onUpdate:modelValue":[n[1]||(n[1]=t=>i(l).status=t),te],options:x.value,searchable:"",placeholder:e.$t("general.select_a_status"),onRemove:n[2]||(n[2]=t=>ee())},null,8,["modelValue","options","placeholder"])]),_:1},8,["label"]),a(C,{label:e.$t("general.from")},{default:s(()=>[a(U,{modelValue:i(l).from_date,"onUpdate:modelValue":n[3]||(n[3]=t=>i(l).from_date=t),"calendar-button":!0,"calendar-button-icon":"calendar"},null,8,["modelValue"])]),_:1},8,["label"]),Ee,a(C,{label:e.$t("general.to")},{default:s(()=>[a(U,{modelValue:i(l).to_date,"onUpdate:modelValue":n[4]||(n[4]=t=>i(l).to_date=t),"calendar-button":!0,"calendar-button-icon":"calendar"},null,8,["modelValue"])]),_:1},8,["label"])]),_:1},512),[[V,g.value]]),R(a(oe,{title:e.$t("recurring_invoices.no_invoices"),description:e.$t("recurring_invoices.list_of_invoices")},q({default:s(()=>[a($e,{class:"mt-5 mb-4"})]),_:2},[i(E).hasAbilities(i(y).CREATE_RECURRING_INVOICE)?{name:"actions",fn:s(()=>[a(S,{variant:"primary-outline",onClick:n[5]||(n[5]=t=>e.$router.push("/admin/recurring-invoices/create"))},{left:s(t=>[a(d,{name:"PlusIcon",class:$(t.class)},null,8,["class"])]),default:s(()=>[m(" "+_(e.$t("recurring_invoices.add_new_invoice")),1)]),_:1})]),key:"0"}:void 0]),1032,["title","description"]),[[V,D.value]]),R(p("div",Ne,[p("div",Ae,[a(re,{class:"-mb-5","default-index":W.value,onChange:Q},{default:s(()=>[a(T,{title:e.$t("recurring_invoices.all"),filter:"ALL"},null,8,["title"]),a(T,{title:e.$t("recurring_invoices.active"),filter:"ACTIVE"},null,8,["title"]),a(T,{title:e.$t("recurring_invoices.on_hold"),filter:"ON_HOLD"},null,8,["title"])]),_:1},8,["default-index"]),i(c).selectedRecurringInvoices.length?(I(),B(ce,{key:0,class:"absolute float-right"},{activator:s(()=>[p("span",Se,[m(_(e.$t("general.actions"))+" ",1),a(d,{name:"ChevronDownIcon",class:"h-5"})])]),default:s(()=>[a(ie,{onClick:n[6]||(n[6]=t=>Y())},{default:s(()=>[a(d,{name:"TrashIcon",class:"mr-3 text-gray-600"}),m(" "+_(e.$t("general.delete")),1)]),_:1})]),_:1})):M("",!0)]),a(me,{ref_key:"table",ref:h,data:K,columns:j.value,"placeholder-count":i(c).totalRecurringInvoices>=20?10:5,class:"mt-10"},q({header:s(()=>[p("div",Te,[a(P,{modelValue:i(c).selectAllField,"onUpdate:modelValue":n[7]||(n[7]=t=>i(c).selectAllField=t),variant:"primary",onChange:i(c).selectAllRecurringInvoices},null,8,["modelValue","onChange"])])]),"cell-checkbox":s(({row:t})=>[p("div",we,[a(P,{id:t.id,modelValue:O.value,"onUpdate:modelValue":n[8]||(n[8]=ve=>O.value=ve),value:t.data.id},null,8,["id","modelValue","value"])])]),"cell-starts_at":s(({row:t})=>[m(_(t.data.formatted_starts_at),1)]),"cell-customer":s(({row:t})=>[a(L,{to:{path:`recurring-invoices/${t.data.id}/view`}},{default:s(()=>[a(G,{text:t.data.customer.name,length:30,tag:"span",class:"font-medium text-primary-500 flex flex-col"},null,8,["text"]),a(G,{text:t.data.customer.contact_name?t.data.customer.contact_name:"",length:30,tag:"span",class:"text-xs text-gray-400"},null,8,["text"])]),_:2},1032,["to"])]),"cell-frequency":s(({row:t})=>[m(_(J(t.data.frequency)),1)]),"cell-status":s(({row:t})=>[a(ue,{status:t.data.status,class:"px-3 py-1"},{default:s(()=>[m(_(t.data.status),1)]),_:2},1032,["status"])]),"cell-total":s(({row:t})=>[a(de,{amount:t.data.total,currency:t.data.customer.currency},null,8,["amount","currency"])]),_:2},[z?{name:"cell-actions",fn:s(({row:t})=>[a(Ve,{row:t.data,table:h.value},null,8,["row","table"])]),key:"0"}:void 0]),1032,["columns","placeholder-count"])],512),[[V,!D.value]])]),_:1})}}};export{Pe as default}; +import{aR as fe,a8 as pe,a7 as ge,u as be,M as Ie,f as b,v as Be,e as ye,H as he,k,a9 as Ce,aa as ke,r as o,o as I,m as B,w as s,a,ac as R,ad as V,l as i,J as $,p as m,t as _,Q as y,K as M,a6 as q,b as p}from"./main-pPEsZPea.js";import{_ as Re}from"./SendInvoiceModal-XAwfWejZ.js";import{_ as Ve}from"./RecurringInvoiceIndexDropdown-JbpbfQ9O.js";import{_ as $e}from"./MoonwalkerIcon-n6wvqx0T.js";import"./mail-driver-SNHZXvKB.js";const Ee=p("div",{class:"hidden w-8 h-0 mx-4 border border-gray-400 border-solid xl:block",style:{"margin-top":"1.5rem"}},null,-1),Ne={class:"relative table-container"},Ae={class:"relative flex items-center justify-between h-10 mt-5 list-none border-b-2 border-gray-200 border-solid"},Se={class:"flex text-sm font-medium cursor-pointer select-none text-primary-400"},Te={class:"absolute items-center left-6 top-2.5 select-none"},we={class:"relative block"},Pe={__name:"Index",setup(xe){const c=fe();pe();const H=ge(),w=be(),E=Ie(),h=b(null),{t:r}=Be.useI18n(),g=b(!1),x=b(["ACTIVE","ON_HOLD","ALL"]),N=b(!0),v=b("recurring-invoices.all");ye();let l=he({customer_id:"",status:"",from_date:"",to_date:""});const D=k(()=>!c.totalRecurringInvoices&&!N.value),F=k({get:()=>c.selectedRecurringInvoices,set:e=>c.selectRecurringInvoice(e)}),j=k(()=>[{key:"checkbox",thClass:"extra",tdClass:"font-medium text-gray-900"},{key:"starts_at",label:r("recurring_invoices.starts_at"),thClass:"extra",tdClass:"font-medium"},{key:"customer",label:r("invoices.customer")},{key:"frequency",label:r("recurring_invoices.frequency.title")},{key:"status",label:r("invoices.status")},{key:"total",label:r("invoices.total")},{key:"actions",label:r("recurring_invoices.action"),tdClass:"text-right text-sm font-medium",thClass:"text-right",sortable:!1}]);Ce(l,()=>{X()},{debounce:500}),ke(()=>{c.selectAllField&&c.selectAllRecurringInvoices()});const W=k(()=>x.value.findIndex(e=>e===l.status));function z(){return E.hasAbilities([y.DELETE_RECURRING_INVOICE,y.EDIT_RECURRING_INVOICE,y.VIEW_RECURRING_INVOICE])}function J(e){const n=c.frequencies.find(u=>u.value===e);return n?n.label:`CUSTOM: ${e}`}function A(){h.value&&h.value.refresh()}async function K({page:e,filter:n,sort:u}){let f={customer_id:l.customer_id,status:l.status,from_date:l.from_date,to_date:l.to_date,orderByField:u.fieldName||"created_at",orderBy:u.order||"desc",page:e};N.value=!0;let d=await c.fetchRecurringInvoices(f);return N.value=!1,{data:d.data.data,pagination:{totalPages:d.data.meta.last_page,currentPage:e,totalCount:d.data.meta.total,limit:10}}}function Q(e){if(v.value==e.title)return!0;switch(v.value=e.title,e.title){case r("recurring_invoices.active"):l.status="ACTIVE";break;case r("recurring_invoices.on_hold"):l.status="ON_HOLD";break;case r("recurring_invoices.all"):l.status="ALL";break}}function X(){c.$patch(e=>{e.selectedRecurringInvoices=[],e.selectAllField=!1}),A()}function L(){l.customer_id="",l.status="",l.from_date="",l.to_date="",l.invoice_number="",v.value=r("general.all")}async function Y(e=null){H.openDialog({title:r("general.are_you_sure"),message:r("invoices.confirm_delete"),yesLabel:r("general.ok"),noLabel:r("general.cancel"),variant:"danger",hideNoButton:!1,size:"lg"}).then(async n=>{n&&await c.deleteMultipleRecurringInvoices(e).then(u=>{u.data.success?(A(),c.$patch(f=>{f.selectedRecurringInvoices=[],f.selectAllField=!1}),w.showNotification({type:"success",message:r("recurring_invoices.deleted_message",2)})):u.data.error&&w.showNotification({type:"error",message:u.data.message})})})}function Z(){g.value&&L(),g.value=!g.value}async function ee(e,n){l.status="",A()}function te(e){switch(e){case"ACTIVE":v.value=r("recurring_invoices.active");break;case"ON_HOLD":v.value=r("recurring_invoices.on_hold");break;case"ALL":v.value=r("recurring_invoices.all");break}}return(e,n)=>{const u=o("BaseBreadcrumbItem"),f=o("BaseBreadcrumb"),d=o("BaseIcon"),S=o("BaseButton"),O=o("router-link"),ae=o("BasePageHeader"),se=o("BaseCustomerSelectInput"),C=o("BaseInputGroup"),ne=o("BaseMultiselect"),U=o("BaseDatePicker"),le=o("BaseFilterWrapper"),oe=o("BaseEmptyPlaceholder"),T=o("BaseTab"),re=o("BaseTabGroup"),ie=o("BaseDropdownItem"),ce=o("BaseDropdown"),P=o("BaseCheckbox"),G=o("BaseText"),ue=o("BaseRecurringInvoiceStatusBadge"),de=o("BaseFormatMoney"),me=o("BaseTable"),_e=o("BasePage");return I(),B(_e,null,{default:s(()=>[a(Re),a(ae,{title:e.$t("recurring_invoices.title")},{actions:s(()=>[R(a(S,{variant:"primary-outline",onClick:Z},{right:s(t=>[g.value?(I(),B(d,{key:1,name:"XIcon",class:$(t.class)},null,8,["class"])):(I(),B(d,{key:0,name:"FilterIcon",class:$(t.class)},null,8,["class"]))]),default:s(()=>[m(_(e.$t("general.filter"))+" ",1)]),_:1},512),[[V,i(c).totalRecurringInvoices]]),i(E).hasAbilities(i(y).CREATE_RECURRING_INVOICE)?(I(),B(O,{key:0,to:"recurring-invoices/create"},{default:s(()=>[a(S,{variant:"primary",class:"ml-4"},{left:s(t=>[a(d,{name:"PlusIcon",class:$(t.class)},null,8,["class"])]),default:s(()=>[m(" "+_(e.$t("recurring_invoices.new_invoice")),1)]),_:1})]),_:1})):M("",!0)]),default:s(()=>[a(f,null,{default:s(()=>[a(u,{title:e.$t("general.home"),to:"dashboard"},null,8,["title"]),a(u,{title:e.$t("recurring_invoices.invoice",2),to:"#",active:""},null,8,["title"])]),_:1})]),_:1},8,["title"]),R(a(le,{onClear:L},{default:s(()=>[a(C,{label:e.$t("customers.customer",1)},{default:s(()=>[a(se,{modelValue:i(l).customer_id,"onUpdate:modelValue":n[0]||(n[0]=t=>i(l).customer_id=t),placeholder:e.$t("customers.type_or_click"),"value-prop":"id",label:"name"},null,8,["modelValue","placeholder"])]),_:1},8,["label"]),a(C,{label:e.$t("recurring_invoices.status")},{default:s(()=>[a(ne,{modelValue:i(l).status,"onUpdate:modelValue":[n[1]||(n[1]=t=>i(l).status=t),te],options:x.value,searchable:"",placeholder:e.$t("general.select_a_status"),onRemove:n[2]||(n[2]=t=>ee())},null,8,["modelValue","options","placeholder"])]),_:1},8,["label"]),a(C,{label:e.$t("general.from")},{default:s(()=>[a(U,{modelValue:i(l).from_date,"onUpdate:modelValue":n[3]||(n[3]=t=>i(l).from_date=t),"calendar-button":!0,"calendar-button-icon":"calendar"},null,8,["modelValue"])]),_:1},8,["label"]),Ee,a(C,{label:e.$t("general.to")},{default:s(()=>[a(U,{modelValue:i(l).to_date,"onUpdate:modelValue":n[4]||(n[4]=t=>i(l).to_date=t),"calendar-button":!0,"calendar-button-icon":"calendar"},null,8,["modelValue"])]),_:1},8,["label"])]),_:1},512),[[V,g.value]]),R(a(oe,{title:e.$t("recurring_invoices.no_invoices"),description:e.$t("recurring_invoices.list_of_invoices")},q({default:s(()=>[a($e,{class:"mt-5 mb-4"})]),_:2},[i(E).hasAbilities(i(y).CREATE_RECURRING_INVOICE)?{name:"actions",fn:s(()=>[a(S,{variant:"primary-outline",onClick:n[5]||(n[5]=t=>e.$router.push("/admin/recurring-invoices/create"))},{left:s(t=>[a(d,{name:"PlusIcon",class:$(t.class)},null,8,["class"])]),default:s(()=>[m(" "+_(e.$t("recurring_invoices.add_new_invoice")),1)]),_:1})]),key:"0"}:void 0]),1032,["title","description"]),[[V,D.value]]),R(p("div",Ne,[p("div",Ae,[a(re,{class:"-mb-5","default-index":W.value,onChange:Q},{default:s(()=>[a(T,{title:e.$t("recurring_invoices.all"),filter:"ALL"},null,8,["title"]),a(T,{title:e.$t("recurring_invoices.active"),filter:"ACTIVE"},null,8,["title"]),a(T,{title:e.$t("recurring_invoices.on_hold"),filter:"ON_HOLD"},null,8,["title"])]),_:1},8,["default-index"]),i(c).selectedRecurringInvoices.length?(I(),B(ce,{key:0,class:"absolute float-right"},{activator:s(()=>[p("span",Se,[m(_(e.$t("general.actions"))+" ",1),a(d,{name:"ChevronDownIcon",class:"h-5"})])]),default:s(()=>[a(ie,{onClick:n[6]||(n[6]=t=>Y())},{default:s(()=>[a(d,{name:"TrashIcon",class:"mr-3 text-gray-600"}),m(" "+_(e.$t("general.delete")),1)]),_:1})]),_:1})):M("",!0)]),a(me,{ref_key:"table",ref:h,data:K,columns:j.value,"placeholder-count":i(c).totalRecurringInvoices>=20?10:5,class:"mt-10"},q({header:s(()=>[p("div",Te,[a(P,{modelValue:i(c).selectAllField,"onUpdate:modelValue":n[7]||(n[7]=t=>i(c).selectAllField=t),variant:"primary",onChange:i(c).selectAllRecurringInvoices},null,8,["modelValue","onChange"])])]),"cell-checkbox":s(({row:t})=>[p("div",we,[a(P,{id:t.id,modelValue:F.value,"onUpdate:modelValue":n[8]||(n[8]=ve=>F.value=ve),value:t.data.id},null,8,["id","modelValue","value"])])]),"cell-starts_at":s(({row:t})=>[m(_(t.data.formatted_starts_at),1)]),"cell-customer":s(({row:t})=>[a(O,{to:{path:`recurring-invoices/${t.data.id}/view`}},{default:s(()=>[a(G,{text:t.data.customer.name,length:30,tag:"span",class:"font-medium text-primary-500 flex flex-col"},null,8,["text"]),a(G,{text:t.data.customer.contact_name?t.data.customer.contact_name:"",length:30,tag:"span",class:"text-xs text-gray-400"},null,8,["text"])]),_:2},1032,["to"])]),"cell-frequency":s(({row:t})=>[m(_(J(t.data.frequency)),1)]),"cell-status":s(({row:t})=>[a(ue,{status:t.data.status,class:"px-3 py-1"},{default:s(()=>[m(_(t.data.status),1)]),_:2},1032,["status"])]),"cell-total":s(({row:t})=>[a(de,{amount:t.data.total,currency:t.data.customer.currency},null,8,["amount","currency"])]),_:2},[z?{name:"cell-actions",fn:s(({row:t})=>[a(Ve,{row:t.data,table:h.value},null,8,["row","table"])]),key:"0"}:void 0]),1032,["columns","placeholder-count"])],512),[[V,!D.value]])]),_:1})}}};export{Pe as default}; diff --git a/public/build/assets/Index-MhiU62G2.js b/public/build/assets/Index-2fI8NNez.js similarity index 99% rename from public/build/assets/Index-MhiU62G2.js rename to public/build/assets/Index-2fI8NNez.js index 1a939b9d..9541eebc 100644 --- a/public/build/assets/Index-MhiU62G2.js +++ b/public/build/assets/Index-2fI8NNez.js @@ -1 +1 @@ -import{v as j,G as I,H as V,f as v,ab as o,E as L,k as O,z as F,Y as E,r as m,o as W,c as H,b as c,a,w as i,l as G,p as q,t as x,q as N,m as K,J as X}from"./main-B9dpPbRR.js";const Z={class:"grid gap-8 md:grid-cols-12 pt-10"},ee={class:"col-span-8 md:col-span-4"},te={class:"flex flex-col my-6 lg:space-x-3 lg:flex-row"},ae=c("div",{class:"hidden w-5 h-0 mx-4 border border-gray-400 border-solid xl:block",style:{"margin-top":"2.5rem"}},null,-1),oe={class:"col-span-8"},re=["src"],se={__name:"SalesReports",setup(U){const{t:k}=j.useI18n(),h=I();h.downloadReport=$;const l=V([{label:k("dateRange.today"),key:"Today"},{label:k("dateRange.this_week"),key:"This Week"},{label:k("dateRange.this_month"),key:"This Month"},{label:k("dateRange.this_quarter"),key:"This Quarter"},{label:k("dateRange.this_year"),key:"This Year"},{label:k("dateRange.previous_week"),key:"Previous Week"},{label:k("dateRange.previous_month"),key:"Previous Month"},{label:k("dateRange.previous_quarter"),key:"Previous Quarter"},{label:k("dateRange.previous_year"),key:"Previous Year"},{label:k("dateRange.custom"),key:"Custom"}]),M=v(l[2]),r=v(["By Customer","By Item"]),b=v("By Customer");let D=v(new Date),Y=v(null),e=v(null),g=v(null),s=V({from_date:o().startOf("month").format("YYYY-MM-DD").toString(),to_date:o().endOf("month").format("YYYY-MM-DD").toString()});const B=L(),d=O(()=>Y.value),u=O(()=>B.selectedCompany),T=O(()=>`${e.value}?from_date=${o(s.from_date).format("YYYY-MM-DD")}&to_date=${o(s.to_date).format("YYYY-MM-DD")}`),P=O(()=>`${g.value}?from_date=${o(s.from_date).format("YYYY-MM-DD")}&to_date=${o(s.to_date).format("YYYY-MM-DD")}`);F(D,p=>{s.from_date=o(p).startOf("year").toString(),s.to_date=o(p).endOf("year").toString()}),E(()=>{e.value=`/reports/sales/customers/${u.value.unique_hash}`,g.value=`/reports/sales/items/${u.value.unique_hash}`,n()});function f(p,y){return o()[p](y).format("YYYY-MM-DD")}function R(p,y){return o().subtract(1,y)[p](y).format("YYYY-MM-DD")}function t(){switch(M.value.key){case"Today":s.from_date=o().format("YYYY-MM-DD"),s.to_date=o().format("YYYY-MM-DD");break;case"This Week":s.from_date=f("startOf","isoWeek"),s.to_date=f("endOf","isoWeek");break;case"This Month":s.from_date=f("startOf","month"),s.to_date=f("endOf","month");break;case"This Quarter":s.from_date=f("startOf","quarter"),s.to_date=f("endOf","quarter");break;case"This Year":s.from_date=f("startOf","year"),s.to_date=f("endOf","year");break;case"Previous Week":s.from_date=R("startOf","isoWeek"),s.to_date=R("endOf","isoWeek");break;case"Previous Month":s.from_date=R("startOf","month"),s.to_date=R("endOf","month");break;case"Previous Quarter":s.from_date=R("startOf","quarter"),s.to_date=R("endOf","quarter");break;case"Previous Year":s.from_date=R("startOf","year"),s.to_date=R("endOf","year");break}}async function n(){return b.value==="By Customer"?(Y.value=T.value,!0):(Y.value=P.value,!0)}async function S(){let p=await w();return window.open(d.value,"_blank"),p}function w(){return b.value==="By Customer"?(Y.value=T.value,!0):(Y.value=P.value,!0)}function $(){if(!w())return!1;window.open(d.value+"&download=true"),setTimeout(()=>b.value==="By Customer"?(Y.value=T.value,!0):(Y.value=P.value,!0),200)}return(p,y)=>{const _=m("BaseMultiselect"),Q=m("BaseInputGroup"),z=m("BaseDatePicker"),J=m("BaseButton"),A=m("BaseIcon");return W(),H("div",Z,[c("div",ee,[a(Q,{label:p.$t("reports.sales.date_range"),class:"col-span-12 md:col-span-8"},{default:i(()=>[a(_,{modelValue:M.value,"onUpdate:modelValue":[y[0]||(y[0]=C=>M.value=C),t],options:l,"value-prop":"key","track-by":"key",label:"label",object:""},null,8,["modelValue","options"])]),_:1},8,["label"]),c("div",te,[a(Q,{label:p.$t("reports.sales.from_date")},{default:i(()=>[a(z,{modelValue:G(s).from_date,"onUpdate:modelValue":y[1]||(y[1]=C=>G(s).from_date=C)},null,8,["modelValue"])]),_:1},8,["label"]),ae,a(Q,{label:p.$t("reports.sales.to_date")},{default:i(()=>[a(z,{modelValue:G(s).to_date,"onUpdate:modelValue":y[2]||(y[2]=C=>G(s).to_date=C)},null,8,["modelValue"])]),_:1},8,["label"])]),a(Q,{label:p.$t("reports.sales.report_type"),class:"col-span-12 md:col-span-8"},{default:i(()=>[a(_,{modelValue:b.value,"onUpdate:modelValue":[y[3]||(y[3]=C=>b.value=C),n],options:r.value,placeholder:p.$t("reports.sales.report_type"),class:"mt-1"},null,8,["modelValue","options","placeholder"])]),_:1},8,["label"]),a(J,{variant:"primary-outline",class:"content-center hidden mt-0 w-md md:flex md:mt-8",type:"submit",onClick:N(w,["prevent"])},{default:i(()=>[q(x(p.$t("reports.update_report")),1)]),_:1})]),c("div",oe,[c("iframe",{src:d.value,class:"hidden w-full h-screen border-gray-100 border-solid rounded md:flex"},null,8,re),c("a",{class:"flex items-center justify-center h-10 px-5 py-1 text-sm font-medium leading-none text-center text-white rounded whitespace-nowrap md:hidden bg-primary-500",onClick:S},[a(A,{name:"DocumentTextIcon",class:"h-5 mr-2"}),c("span",null,x(p.$t("reports.view_pdf")),1)])])])}}},ne={class:"grid gap-8 md:grid-cols-12 pt-10"},le={class:"col-span-8 md:col-span-4"},de={class:"flex flex-col mt-6 lg:space-x-3 lg:flex-row"},ue=c("div",{class:"hidden w-5 h-0 mx-4 border border-gray-400 border-solid xl:block",style:{"margin-top":"2.5rem"}},null,-1),ie={class:"col-span-8"},me=["src"],ce={__name:"ExpensesReport",setup(U){const k=I(),h=L(),{t:l}=j.useI18n();k.downloadReport=R;const M=V([{label:l("dateRange.today"),key:"Today"},{label:l("dateRange.this_week"),key:"This Week"},{label:l("dateRange.this_month"),key:"This Month"},{label:l("dateRange.this_quarter"),key:"This Quarter"},{label:l("dateRange.this_year"),key:"This Year"},{label:l("dateRange.previous_week"),key:"Previous Week"},{label:l("dateRange.previous_month"),key:"Previous Month"},{label:l("dateRange.previous_quarter"),key:"Previous Quarter"},{label:l("dateRange.previous_year"),key:"Previous Year"},{label:l("dateRange.custom"),key:"Custom"}]),r=v(M[2]);let b=v(new Date),D=v(null),Y=v(null);const e=V({from_date:o().startOf("month").toString(),to_date:o().endOf("month").toString()}),g=O(()=>D.value),s=O(()=>h.selectedCompany),B=O(()=>`${Y.value}?from_date=${o(e.from_date).format("YYYY-MM-DD")}&to_date=${o(e.to_date).format("YYYY-MM-DD")}`);E(()=>{Y.value=`/reports/expenses/${s.value.unique_hash}`,D.value=B.value}),F(()=>b,t=>{e.from_date=o(t).startOf("year").toString(),e.to_date=o(t).endOf("year").toString()});function d(t,n){return o()[t](n).format("YYYY-MM-DD")}function u(t,n){return o().subtract(1,n)[t](n).format("YYYY-MM-DD")}function T(){switch(r.value.key){case"Today":e.from_date=o().format("YYYY-MM-DD"),e.to_date=o().format("YYYY-MM-DD");break;case"This Week":e.from_date=d("startOf","isoWeek"),e.to_date=d("endOf","isoWeek");break;case"This Month":e.from_date=d("startOf","month"),e.to_date=d("endOf","month");break;case"This Quarter":e.from_date=d("startOf","quarter"),e.to_date=d("endOf","quarter");break;case"This Year":e.from_date=d("startOf","year"),e.to_date=d("endOf","year");break;case"Previous Week":e.from_date=u("startOf","isoWeek"),e.to_date=u("endOf","isoWeek");break;case"Previous Month":e.from_date=u("startOf","month"),e.to_date=u("endOf","month");break;case"Previous Quarter":e.from_date=u("startOf","quarter"),e.to_date=u("endOf","quarter");break;case"Previous Year":e.from_date=u("startOf","year"),e.to_date=u("endOf","year");break}}async function P(){let t=await f();return window.open(g.value,"_blank"),t}function f(){return D.value=B.value,!0}function R(){f(),window.open(g.value+"&download=true"),setTimeout(()=>{D.value=B.value},200)}return(t,n)=>{const S=m("BaseMultiselect"),w=m("BaseInputGroup"),$=m("BaseDatePicker"),p=m("BaseButton"),y=m("BaseIcon");return W(),H("div",ne,[c("div",le,[a(w,{label:t.$t("reports.sales.date_range"),class:"col-span-12 md:col-span-8"},{default:i(()=>[a(S,{modelValue:r.value,"onUpdate:modelValue":[n[0]||(n[0]=_=>r.value=_),T],options:M,"value-prop":"key","track-by":"key",label:"label",object:""},null,8,["modelValue","options"])]),_:1},8,["label"]),c("div",de,[a(w,{label:t.$t("reports.expenses.from_date")},{default:i(()=>[a($,{modelValue:e.from_date,"onUpdate:modelValue":n[1]||(n[1]=_=>e.from_date=_)},null,8,["modelValue"])]),_:1},8,["label"]),ue,a(w,{label:t.$t("reports.expenses.to_date")},{default:i(()=>[a($,{modelValue:e.to_date,"onUpdate:modelValue":n[2]||(n[2]=_=>e.to_date=_)},null,8,["modelValue"])]),_:1},8,["label"])]),a(p,{variant:"primary-outline",class:"content-center hidden mt-0 w-md md:flex md:mt-8",type:"submit",onClick:N(f,["prevent"])},{default:i(()=>[q(x(t.$t("reports.update_report")),1)]),_:1})]),c("div",ie,[c("iframe",{src:g.value,class:"hidden w-full h-screen border-gray-100 border-solid rounded md:flex"},null,8,me),c("a",{class:"flex items-center justify-center h-10 px-5 py-1 text-sm font-medium leading-none text-center text-white rounded whitespace-nowrap md:hidden bg-primary-500 cursor-pointer",onClick:P},[a(y,{name:"DocumentTextIcon",class:"h-5 mr-2"}),c("span",null,x(t.$t("reports.view_pdf")),1)])])])}}},pe={class:"grid gap-8 md:grid-cols-12 pt-10"},fe={class:"col-span-8 md:col-span-4"},_e={class:"flex flex-col mt-6 lg:space-x-3 lg:flex-row"},be=c("div",{class:"hidden w-5 h-0 mx-4 border border-gray-400 border-solid xl:block",style:{"margin-top":"2.5rem"}},null,-1),ye={class:"col-span-8"},ve=["src"],ke={__name:"ProfitLossReport",setup(U){const k=I(),h=L(),{t:l}=j.useI18n();k.downloadReport=R;const M=V([{label:l("dateRange.today"),key:"Today"},{label:l("dateRange.this_week"),key:"This Week"},{label:l("dateRange.this_month"),key:"This Month"},{label:l("dateRange.this_quarter"),key:"This Quarter"},{label:l("dateRange.this_year"),key:"This Year"},{label:l("dateRange.previous_week"),key:"Previous Week"},{label:l("dateRange.previous_month"),key:"Previous Month"},{label:l("dateRange.previous_quarter"),key:"Previous Quarter"},{label:l("dateRange.previous_year"),key:"Previous Year"},{label:l("dateRange.custom"),key:"Custom"}]),r=v(M[2]);let b=v(null),D=v(null),Y=v(new Date);const e=V({from_date:o().startOf("month").toString(),to_date:o().endOf("month").toString()}),g=O(()=>b.value),s=O(()=>h.selectedCompany),B=O(()=>`${D.value}?from_date=${o(e.from_date).format("YYYY-MM-DD")}&to_date=${o(e.to_date).format("YYYY-MM-DD")}`);F(Y,t=>{e.from_date=o(t).startOf("year").toString(),e.to_date=o(t).endOf("year").toString()}),E(()=>{D.value=`/reports/profit-loss/${s.value.unique_hash}`,b.value=B.value});function d(t,n){return o()[t](n).format("YYYY-MM-DD")}function u(t,n){return o().subtract(1,n)[t](n).format("YYYY-MM-DD")}function T(){switch(r.value.key){case"Today":e.from_date=o().format("YYYY-MM-DD"),e.to_date=o().format("YYYY-MM-DD");break;case"This Week":e.from_date=d("startOf","isoWeek"),e.to_date=d("endOf","isoWeek");break;case"This Month":e.from_date=d("startOf","month"),e.to_date=d("endOf","month");break;case"This Quarter":e.from_date=d("startOf","quarter"),e.to_date=d("endOf","quarter");break;case"This Year":e.from_date=d("startOf","year"),e.to_date=d("endOf","year");break;case"Previous Week":e.from_date=u("startOf","isoWeek"),e.to_date=u("endOf","isoWeek");break;case"Previous Month":e.from_date=u("startOf","month"),e.to_date=u("endOf","month");break;case"Previous Quarter":e.from_date=u("startOf","quarter"),e.to_date=u("endOf","quarter");break;case"Previous Year":e.from_date=u("startOf","year"),e.to_date=u("endOf","year");break}}async function P(){let t=await f();return window.open(g.value,"_blank"),t}function f(){return b.value=B.value,!0}function R(){f(),window.open(g.value+"&download=true"),setTimeout(()=>{b.value=B.value},200)}return(t,n)=>{const S=m("BaseMultiselect"),w=m("BaseInputGroup"),$=m("BaseDatePicker"),p=m("BaseButton"),y=m("BaseIcon");return W(),H("div",pe,[c("div",fe,[a(w,{label:t.$t("reports.profit_loss.date_range"),class:"col-span-12 md:col-span-8"},{default:i(()=>[a(S,{modelValue:r.value,"onUpdate:modelValue":[n[0]||(n[0]=_=>r.value=_),T],options:M,"value-prop":"key","track-by":"key",label:"label",object:""},null,8,["modelValue","options"])]),_:1},8,["label"]),c("div",_e,[a(w,{label:t.$t("reports.profit_loss.from_date")},{default:i(()=>[a($,{modelValue:e.from_date,"onUpdate:modelValue":n[1]||(n[1]=_=>e.from_date=_)},null,8,["modelValue"])]),_:1},8,["label"]),be,a(w,{label:t.$t("reports.profit_loss.to_date")},{default:i(()=>[a($,{modelValue:e.to_date,"onUpdate:modelValue":n[2]||(n[2]=_=>e.to_date=_)},null,8,["modelValue"])]),_:1},8,["label"])]),a(p,{variant:"primary-outline",class:"content-center hidden mt-0 w-md md:flex md:mt-8",type:"submit",onClick:N(f,["prevent"])},{default:i(()=>[q(x(t.$t("reports.update_report")),1)]),_:1})]),c("div",ye,[c("iframe",{src:g.value,class:"hidden w-full h-screen border-gray-100 border-solid rounded md:flex"},null,8,ve),c("a",{class:"flex items-center justify-center h-10 px-5 py-1 text-sm font-medium leading-none text-center text-white rounded whitespace-nowrap md:hidden bg-primary-500",onClick:P},[a(y,{name:"DocumentTextIcon",class:"h-5 mr-2"}),c("span",null,x(t.$t("reports.view_pdf")),1)])])])}}},he={class:"grid gap-8 md:grid-cols-12 pt-10"},ge={class:"col-span-8 md:col-span-4"},Ye={class:"flex flex-col mt-6 lg:space-x-3 lg:flex-row"},De=c("div",{class:"hidden w-5 h-0 mx-4 border border-gray-400 border-solid xl:block",style:{"margin-top":"2.5rem"}},null,-1),we={class:"col-span-8"},Me=["src"],Re={__name:"TaxReport",setup(U){const k=I();k.downloadReport=R;const{t:h}=j.useI18n(),l=V([{label:h("dateRange.today"),key:"Today"},{label:h("dateRange.this_week"),key:"This Week"},{label:h("dateRange.this_month"),key:"This Month"},{label:h("dateRange.this_quarter"),key:"This Quarter"},{label:h("dateRange.this_year"),key:"This Year"},{label:h("dateRange.previous_week"),key:"Previous Week"},{label:h("dateRange.previous_month"),key:"Previous Month"},{label:h("dateRange.previous_quarter"),key:"Previous Quarter"},{label:h("dateRange.previous_year"),key:"Previous Year"},{label:h("dateRange.custom"),key:"Custom"}]),M=v(l[2]),r=V({from_date:o().startOf("month").format("YYYY-MM-DD").toString(),to_date:o().endOf("month").format("YYYY-MM-DD").toString()});let b=v(null);const D=O(()=>b.value),Y=L(),e=O(()=>Y.selectedCompany);let g=v(null);E(()=>{g.value=`/reports/tax-summary/${e.value.unique_hash}`,b.value=s.value});const s=O(()=>`${g.value}?from_date=${o(r.from_date).format("YYYY-MM-DD")}&to_date=${o(r.to_date).format("YYYY-MM-DD")}`);let B=v(new Date);F(B.value,t=>{r.from_date=o(t).startOf("year").toString(),r.to_date=o(t).endOf("year").toString()});function d(t,n){return o()[t](n).format("YYYY-MM-DD")}function u(t,n){return o().subtract(1,n)[t](n).format("YYYY-MM-DD")}function T(){switch(M.value.key){case"Today":r.from_date=o().format("YYYY-MM-DD"),r.to_date=o().format("YYYY-MM-DD");break;case"This Week":r.from_date=d("startOf","isoWeek"),r.to_date=d("endOf","isoWeek");break;case"This Month":r.from_date=d("startOf","month"),r.to_date=d("endOf","month");break;case"This Quarter":r.from_date=d("startOf","quarter"),r.to_date=d("endOf","quarter");break;case"This Year":r.from_date=d("startOf","year"),r.to_date=d("endOf","year");break;case"Previous Week":r.from_date=u("startOf","isoWeek"),r.to_date=u("endOf","isoWeek");break;case"Previous Month":r.from_date=u("startOf","month"),r.to_date=u("endOf","month");break;case"Previous Quarter":r.from_date=u("startOf","quarter"),r.to_date=u("endOf","quarter");break;case"Previous Year":r.from_date=u("startOf","year"),r.to_date=u("endOf","year");break}}async function P(){let t=await f();return window.open(D.value,"_blank"),t}function f(){return b.value=s.value,!0}function R(){f(),window.open(D.value+"&download=true"),setTimeout(()=>{b.value=s.value},200)}return(t,n)=>{const S=m("BaseMultiselect"),w=m("BaseInputGroup"),$=m("BaseDatePicker"),p=m("BaseButton"),y=m("BaseIcon");return W(),H("div",he,[c("div",ge,[a(w,{label:t.$t("reports.taxes.date_range"),class:"col-span-12 md:col-span-8"},{default:i(()=>[a(S,{modelValue:M.value,"onUpdate:modelValue":[n[0]||(n[0]=_=>M.value=_),T],options:l,"value-prop":"key","track-by":"key",label:"label",object:""},null,8,["modelValue","options"])]),_:1},8,["label"]),c("div",Ye,[a(w,{label:t.$t("reports.taxes.from_date")},{default:i(()=>[a($,{modelValue:r.from_date,"onUpdate:modelValue":n[1]||(n[1]=_=>r.from_date=_)},null,8,["modelValue"])]),_:1},8,["label"]),De,a(w,{label:t.$t("reports.taxes.to_date")},{default:i(()=>[a($,{modelValue:r.to_date,"onUpdate:modelValue":n[2]||(n[2]=_=>r.to_date=_)},null,8,["modelValue"])]),_:1},8,["label"])]),a(p,{variant:"primary-outline",class:"content-center hidden mt-0 w-md md:flex md:mt-8",type:"submit",onClick:N(f,["prevent"])},{default:i(()=>[q(x(t.$t("reports.update_report")),1)]),_:1})]),c("div",we,[c("iframe",{src:D.value,class:"hidden w-full h-screen border-gray-100 border-solid rounded md:flex"},null,8,Me),c("a",{class:"flex items-center justify-center h-10 px-5 py-1 text-sm font-medium leading-none text-center text-white rounded whitespace-nowrap md:hidden bg-primary-500",onClick:P},[a(y,{name:"DocumentTextIcon",class:"h-5 mr-2"}),c("span",null,x(t.$t("reports.view_pdf")),1)])])])}}},Oe={__name:"Index",setup(U){const k=I();function h(){k.downloadReport()}return(l,M)=>{const r=m("BaseBreadcrumbItem"),b=m("BaseBreadcrumb"),D=m("BaseIcon"),Y=m("BaseButton"),e=m("BasePageHeader"),g=m("BaseTab"),s=m("BaseTabGroup"),B=m("BasePage");return W(),K(B,null,{default:i(()=>[a(e,{title:l.$t("reports.report",2)},{actions:i(()=>[a(Y,{variant:"primary",class:"ml-4",onClick:h},{left:i(d=>[a(D,{name:"DownloadIcon",class:X(d.class)},null,8,["class"])]),default:i(()=>[q(" "+x(l.$t("reports.download_pdf")),1)]),_:1})]),default:i(()=>[a(b,null,{default:i(()=>[a(r,{title:l.$t("general.home"),to:"/admin/dashboard"},null,8,["title"]),a(r,{title:l.$t("reports.report",2),to:"/admin/reports",active:""},null,8,["title"])]),_:1})]),_:1},8,["title"]),a(s,{class:"p-2"},{default:i(()=>[a(g,{title:l.$t("reports.sales.sales"),"tab-panel-container":"px-0 py-0"},{default:i(()=>[a(se,{ref:"report"},null,512)]),_:1},8,["title"]),a(g,{title:l.$t("reports.profit_loss.profit_loss"),"tab-panel-container":"px-0 py-0"},{default:i(()=>[a(ke,{ref:"report"},null,512)]),_:1},8,["title"]),a(g,{title:l.$t("reports.expenses.expenses"),"tab-panel-container":"px-0 py-0"},{default:i(()=>[a(ce,{ref:"report"},null,512)]),_:1},8,["title"]),a(g,{title:l.$t("reports.taxes.taxes"),"tab-panel-container":"px-0 py-0"},{default:i(()=>[a(Re,{ref:"report"},null,512)]),_:1},8,["title"])]),_:1})]),_:1})}}};export{Oe as default}; +import{v as j,G as I,H as V,f as v,ab as o,E as L,k as O,z as F,Y as E,r as m,o as W,c as H,b as c,a,w as i,l as G,p as q,t as x,q as N,m as K,J as X}from"./main-pPEsZPea.js";const Z={class:"grid gap-8 md:grid-cols-12 pt-10"},ee={class:"col-span-8 md:col-span-4"},te={class:"flex flex-col my-6 lg:space-x-3 lg:flex-row"},ae=c("div",{class:"hidden w-5 h-0 mx-4 border border-gray-400 border-solid xl:block",style:{"margin-top":"2.5rem"}},null,-1),oe={class:"col-span-8"},re=["src"],se={__name:"SalesReports",setup(U){const{t:k}=j.useI18n(),h=I();h.downloadReport=$;const l=V([{label:k("dateRange.today"),key:"Today"},{label:k("dateRange.this_week"),key:"This Week"},{label:k("dateRange.this_month"),key:"This Month"},{label:k("dateRange.this_quarter"),key:"This Quarter"},{label:k("dateRange.this_year"),key:"This Year"},{label:k("dateRange.previous_week"),key:"Previous Week"},{label:k("dateRange.previous_month"),key:"Previous Month"},{label:k("dateRange.previous_quarter"),key:"Previous Quarter"},{label:k("dateRange.previous_year"),key:"Previous Year"},{label:k("dateRange.custom"),key:"Custom"}]),M=v(l[2]),r=v(["By Customer","By Item"]),b=v("By Customer");let D=v(new Date),Y=v(null),e=v(null),g=v(null),s=V({from_date:o().startOf("month").format("YYYY-MM-DD").toString(),to_date:o().endOf("month").format("YYYY-MM-DD").toString()});const B=L(),d=O(()=>Y.value),u=O(()=>B.selectedCompany),T=O(()=>`${e.value}?from_date=${o(s.from_date).format("YYYY-MM-DD")}&to_date=${o(s.to_date).format("YYYY-MM-DD")}`),P=O(()=>`${g.value}?from_date=${o(s.from_date).format("YYYY-MM-DD")}&to_date=${o(s.to_date).format("YYYY-MM-DD")}`);F(D,p=>{s.from_date=o(p).startOf("year").toString(),s.to_date=o(p).endOf("year").toString()}),E(()=>{e.value=`/reports/sales/customers/${u.value.unique_hash}`,g.value=`/reports/sales/items/${u.value.unique_hash}`,n()});function f(p,y){return o()[p](y).format("YYYY-MM-DD")}function R(p,y){return o().subtract(1,y)[p](y).format("YYYY-MM-DD")}function t(){switch(M.value.key){case"Today":s.from_date=o().format("YYYY-MM-DD"),s.to_date=o().format("YYYY-MM-DD");break;case"This Week":s.from_date=f("startOf","isoWeek"),s.to_date=f("endOf","isoWeek");break;case"This Month":s.from_date=f("startOf","month"),s.to_date=f("endOf","month");break;case"This Quarter":s.from_date=f("startOf","quarter"),s.to_date=f("endOf","quarter");break;case"This Year":s.from_date=f("startOf","year"),s.to_date=f("endOf","year");break;case"Previous Week":s.from_date=R("startOf","isoWeek"),s.to_date=R("endOf","isoWeek");break;case"Previous Month":s.from_date=R("startOf","month"),s.to_date=R("endOf","month");break;case"Previous Quarter":s.from_date=R("startOf","quarter"),s.to_date=R("endOf","quarter");break;case"Previous Year":s.from_date=R("startOf","year"),s.to_date=R("endOf","year");break}}async function n(){return b.value==="By Customer"?(Y.value=T.value,!0):(Y.value=P.value,!0)}async function S(){let p=await w();return window.open(d.value,"_blank"),p}function w(){return b.value==="By Customer"?(Y.value=T.value,!0):(Y.value=P.value,!0)}function $(){if(!w())return!1;window.open(d.value+"&download=true"),setTimeout(()=>b.value==="By Customer"?(Y.value=T.value,!0):(Y.value=P.value,!0),200)}return(p,y)=>{const _=m("BaseMultiselect"),Q=m("BaseInputGroup"),z=m("BaseDatePicker"),J=m("BaseButton"),A=m("BaseIcon");return W(),H("div",Z,[c("div",ee,[a(Q,{label:p.$t("reports.sales.date_range"),class:"col-span-12 md:col-span-8"},{default:i(()=>[a(_,{modelValue:M.value,"onUpdate:modelValue":[y[0]||(y[0]=C=>M.value=C),t],options:l,"value-prop":"key","track-by":"key",label:"label",object:""},null,8,["modelValue","options"])]),_:1},8,["label"]),c("div",te,[a(Q,{label:p.$t("reports.sales.from_date")},{default:i(()=>[a(z,{modelValue:G(s).from_date,"onUpdate:modelValue":y[1]||(y[1]=C=>G(s).from_date=C)},null,8,["modelValue"])]),_:1},8,["label"]),ae,a(Q,{label:p.$t("reports.sales.to_date")},{default:i(()=>[a(z,{modelValue:G(s).to_date,"onUpdate:modelValue":y[2]||(y[2]=C=>G(s).to_date=C)},null,8,["modelValue"])]),_:1},8,["label"])]),a(Q,{label:p.$t("reports.sales.report_type"),class:"col-span-12 md:col-span-8"},{default:i(()=>[a(_,{modelValue:b.value,"onUpdate:modelValue":[y[3]||(y[3]=C=>b.value=C),n],options:r.value,placeholder:p.$t("reports.sales.report_type"),class:"mt-1"},null,8,["modelValue","options","placeholder"])]),_:1},8,["label"]),a(J,{variant:"primary-outline",class:"content-center hidden mt-0 w-md md:flex md:mt-8",type:"submit",onClick:N(w,["prevent"])},{default:i(()=>[q(x(p.$t("reports.update_report")),1)]),_:1})]),c("div",oe,[c("iframe",{src:d.value,class:"hidden w-full h-screen border-gray-100 border-solid rounded md:flex"},null,8,re),c("a",{class:"flex items-center justify-center h-10 px-5 py-1 text-sm font-medium leading-none text-center text-white rounded whitespace-nowrap md:hidden bg-primary-500",onClick:S},[a(A,{name:"DocumentTextIcon",class:"h-5 mr-2"}),c("span",null,x(p.$t("reports.view_pdf")),1)])])])}}},ne={class:"grid gap-8 md:grid-cols-12 pt-10"},le={class:"col-span-8 md:col-span-4"},de={class:"flex flex-col mt-6 lg:space-x-3 lg:flex-row"},ue=c("div",{class:"hidden w-5 h-0 mx-4 border border-gray-400 border-solid xl:block",style:{"margin-top":"2.5rem"}},null,-1),ie={class:"col-span-8"},me=["src"],ce={__name:"ExpensesReport",setup(U){const k=I(),h=L(),{t:l}=j.useI18n();k.downloadReport=R;const M=V([{label:l("dateRange.today"),key:"Today"},{label:l("dateRange.this_week"),key:"This Week"},{label:l("dateRange.this_month"),key:"This Month"},{label:l("dateRange.this_quarter"),key:"This Quarter"},{label:l("dateRange.this_year"),key:"This Year"},{label:l("dateRange.previous_week"),key:"Previous Week"},{label:l("dateRange.previous_month"),key:"Previous Month"},{label:l("dateRange.previous_quarter"),key:"Previous Quarter"},{label:l("dateRange.previous_year"),key:"Previous Year"},{label:l("dateRange.custom"),key:"Custom"}]),r=v(M[2]);let b=v(new Date),D=v(null),Y=v(null);const e=V({from_date:o().startOf("month").toString(),to_date:o().endOf("month").toString()}),g=O(()=>D.value),s=O(()=>h.selectedCompany),B=O(()=>`${Y.value}?from_date=${o(e.from_date).format("YYYY-MM-DD")}&to_date=${o(e.to_date).format("YYYY-MM-DD")}`);E(()=>{Y.value=`/reports/expenses/${s.value.unique_hash}`,D.value=B.value}),F(()=>b,t=>{e.from_date=o(t).startOf("year").toString(),e.to_date=o(t).endOf("year").toString()});function d(t,n){return o()[t](n).format("YYYY-MM-DD")}function u(t,n){return o().subtract(1,n)[t](n).format("YYYY-MM-DD")}function T(){switch(r.value.key){case"Today":e.from_date=o().format("YYYY-MM-DD"),e.to_date=o().format("YYYY-MM-DD");break;case"This Week":e.from_date=d("startOf","isoWeek"),e.to_date=d("endOf","isoWeek");break;case"This Month":e.from_date=d("startOf","month"),e.to_date=d("endOf","month");break;case"This Quarter":e.from_date=d("startOf","quarter"),e.to_date=d("endOf","quarter");break;case"This Year":e.from_date=d("startOf","year"),e.to_date=d("endOf","year");break;case"Previous Week":e.from_date=u("startOf","isoWeek"),e.to_date=u("endOf","isoWeek");break;case"Previous Month":e.from_date=u("startOf","month"),e.to_date=u("endOf","month");break;case"Previous Quarter":e.from_date=u("startOf","quarter"),e.to_date=u("endOf","quarter");break;case"Previous Year":e.from_date=u("startOf","year"),e.to_date=u("endOf","year");break}}async function P(){let t=await f();return window.open(g.value,"_blank"),t}function f(){return D.value=B.value,!0}function R(){f(),window.open(g.value+"&download=true"),setTimeout(()=>{D.value=B.value},200)}return(t,n)=>{const S=m("BaseMultiselect"),w=m("BaseInputGroup"),$=m("BaseDatePicker"),p=m("BaseButton"),y=m("BaseIcon");return W(),H("div",ne,[c("div",le,[a(w,{label:t.$t("reports.sales.date_range"),class:"col-span-12 md:col-span-8"},{default:i(()=>[a(S,{modelValue:r.value,"onUpdate:modelValue":[n[0]||(n[0]=_=>r.value=_),T],options:M,"value-prop":"key","track-by":"key",label:"label",object:""},null,8,["modelValue","options"])]),_:1},8,["label"]),c("div",de,[a(w,{label:t.$t("reports.expenses.from_date")},{default:i(()=>[a($,{modelValue:e.from_date,"onUpdate:modelValue":n[1]||(n[1]=_=>e.from_date=_)},null,8,["modelValue"])]),_:1},8,["label"]),ue,a(w,{label:t.$t("reports.expenses.to_date")},{default:i(()=>[a($,{modelValue:e.to_date,"onUpdate:modelValue":n[2]||(n[2]=_=>e.to_date=_)},null,8,["modelValue"])]),_:1},8,["label"])]),a(p,{variant:"primary-outline",class:"content-center hidden mt-0 w-md md:flex md:mt-8",type:"submit",onClick:N(f,["prevent"])},{default:i(()=>[q(x(t.$t("reports.update_report")),1)]),_:1})]),c("div",ie,[c("iframe",{src:g.value,class:"hidden w-full h-screen border-gray-100 border-solid rounded md:flex"},null,8,me),c("a",{class:"flex items-center justify-center h-10 px-5 py-1 text-sm font-medium leading-none text-center text-white rounded whitespace-nowrap md:hidden bg-primary-500 cursor-pointer",onClick:P},[a(y,{name:"DocumentTextIcon",class:"h-5 mr-2"}),c("span",null,x(t.$t("reports.view_pdf")),1)])])])}}},pe={class:"grid gap-8 md:grid-cols-12 pt-10"},fe={class:"col-span-8 md:col-span-4"},_e={class:"flex flex-col mt-6 lg:space-x-3 lg:flex-row"},be=c("div",{class:"hidden w-5 h-0 mx-4 border border-gray-400 border-solid xl:block",style:{"margin-top":"2.5rem"}},null,-1),ye={class:"col-span-8"},ve=["src"],ke={__name:"ProfitLossReport",setup(U){const k=I(),h=L(),{t:l}=j.useI18n();k.downloadReport=R;const M=V([{label:l("dateRange.today"),key:"Today"},{label:l("dateRange.this_week"),key:"This Week"},{label:l("dateRange.this_month"),key:"This Month"},{label:l("dateRange.this_quarter"),key:"This Quarter"},{label:l("dateRange.this_year"),key:"This Year"},{label:l("dateRange.previous_week"),key:"Previous Week"},{label:l("dateRange.previous_month"),key:"Previous Month"},{label:l("dateRange.previous_quarter"),key:"Previous Quarter"},{label:l("dateRange.previous_year"),key:"Previous Year"},{label:l("dateRange.custom"),key:"Custom"}]),r=v(M[2]);let b=v(null),D=v(null),Y=v(new Date);const e=V({from_date:o().startOf("month").toString(),to_date:o().endOf("month").toString()}),g=O(()=>b.value),s=O(()=>h.selectedCompany),B=O(()=>`${D.value}?from_date=${o(e.from_date).format("YYYY-MM-DD")}&to_date=${o(e.to_date).format("YYYY-MM-DD")}`);F(Y,t=>{e.from_date=o(t).startOf("year").toString(),e.to_date=o(t).endOf("year").toString()}),E(()=>{D.value=`/reports/profit-loss/${s.value.unique_hash}`,b.value=B.value});function d(t,n){return o()[t](n).format("YYYY-MM-DD")}function u(t,n){return o().subtract(1,n)[t](n).format("YYYY-MM-DD")}function T(){switch(r.value.key){case"Today":e.from_date=o().format("YYYY-MM-DD"),e.to_date=o().format("YYYY-MM-DD");break;case"This Week":e.from_date=d("startOf","isoWeek"),e.to_date=d("endOf","isoWeek");break;case"This Month":e.from_date=d("startOf","month"),e.to_date=d("endOf","month");break;case"This Quarter":e.from_date=d("startOf","quarter"),e.to_date=d("endOf","quarter");break;case"This Year":e.from_date=d("startOf","year"),e.to_date=d("endOf","year");break;case"Previous Week":e.from_date=u("startOf","isoWeek"),e.to_date=u("endOf","isoWeek");break;case"Previous Month":e.from_date=u("startOf","month"),e.to_date=u("endOf","month");break;case"Previous Quarter":e.from_date=u("startOf","quarter"),e.to_date=u("endOf","quarter");break;case"Previous Year":e.from_date=u("startOf","year"),e.to_date=u("endOf","year");break}}async function P(){let t=await f();return window.open(g.value,"_blank"),t}function f(){return b.value=B.value,!0}function R(){f(),window.open(g.value+"&download=true"),setTimeout(()=>{b.value=B.value},200)}return(t,n)=>{const S=m("BaseMultiselect"),w=m("BaseInputGroup"),$=m("BaseDatePicker"),p=m("BaseButton"),y=m("BaseIcon");return W(),H("div",pe,[c("div",fe,[a(w,{label:t.$t("reports.profit_loss.date_range"),class:"col-span-12 md:col-span-8"},{default:i(()=>[a(S,{modelValue:r.value,"onUpdate:modelValue":[n[0]||(n[0]=_=>r.value=_),T],options:M,"value-prop":"key","track-by":"key",label:"label",object:""},null,8,["modelValue","options"])]),_:1},8,["label"]),c("div",_e,[a(w,{label:t.$t("reports.profit_loss.from_date")},{default:i(()=>[a($,{modelValue:e.from_date,"onUpdate:modelValue":n[1]||(n[1]=_=>e.from_date=_)},null,8,["modelValue"])]),_:1},8,["label"]),be,a(w,{label:t.$t("reports.profit_loss.to_date")},{default:i(()=>[a($,{modelValue:e.to_date,"onUpdate:modelValue":n[2]||(n[2]=_=>e.to_date=_)},null,8,["modelValue"])]),_:1},8,["label"])]),a(p,{variant:"primary-outline",class:"content-center hidden mt-0 w-md md:flex md:mt-8",type:"submit",onClick:N(f,["prevent"])},{default:i(()=>[q(x(t.$t("reports.update_report")),1)]),_:1})]),c("div",ye,[c("iframe",{src:g.value,class:"hidden w-full h-screen border-gray-100 border-solid rounded md:flex"},null,8,ve),c("a",{class:"flex items-center justify-center h-10 px-5 py-1 text-sm font-medium leading-none text-center text-white rounded whitespace-nowrap md:hidden bg-primary-500",onClick:P},[a(y,{name:"DocumentTextIcon",class:"h-5 mr-2"}),c("span",null,x(t.$t("reports.view_pdf")),1)])])])}}},he={class:"grid gap-8 md:grid-cols-12 pt-10"},ge={class:"col-span-8 md:col-span-4"},Ye={class:"flex flex-col mt-6 lg:space-x-3 lg:flex-row"},De=c("div",{class:"hidden w-5 h-0 mx-4 border border-gray-400 border-solid xl:block",style:{"margin-top":"2.5rem"}},null,-1),we={class:"col-span-8"},Me=["src"],Re={__name:"TaxReport",setup(U){const k=I();k.downloadReport=R;const{t:h}=j.useI18n(),l=V([{label:h("dateRange.today"),key:"Today"},{label:h("dateRange.this_week"),key:"This Week"},{label:h("dateRange.this_month"),key:"This Month"},{label:h("dateRange.this_quarter"),key:"This Quarter"},{label:h("dateRange.this_year"),key:"This Year"},{label:h("dateRange.previous_week"),key:"Previous Week"},{label:h("dateRange.previous_month"),key:"Previous Month"},{label:h("dateRange.previous_quarter"),key:"Previous Quarter"},{label:h("dateRange.previous_year"),key:"Previous Year"},{label:h("dateRange.custom"),key:"Custom"}]),M=v(l[2]),r=V({from_date:o().startOf("month").format("YYYY-MM-DD").toString(),to_date:o().endOf("month").format("YYYY-MM-DD").toString()});let b=v(null);const D=O(()=>b.value),Y=L(),e=O(()=>Y.selectedCompany);let g=v(null);E(()=>{g.value=`/reports/tax-summary/${e.value.unique_hash}`,b.value=s.value});const s=O(()=>`${g.value}?from_date=${o(r.from_date).format("YYYY-MM-DD")}&to_date=${o(r.to_date).format("YYYY-MM-DD")}`);let B=v(new Date);F(B.value,t=>{r.from_date=o(t).startOf("year").toString(),r.to_date=o(t).endOf("year").toString()});function d(t,n){return o()[t](n).format("YYYY-MM-DD")}function u(t,n){return o().subtract(1,n)[t](n).format("YYYY-MM-DD")}function T(){switch(M.value.key){case"Today":r.from_date=o().format("YYYY-MM-DD"),r.to_date=o().format("YYYY-MM-DD");break;case"This Week":r.from_date=d("startOf","isoWeek"),r.to_date=d("endOf","isoWeek");break;case"This Month":r.from_date=d("startOf","month"),r.to_date=d("endOf","month");break;case"This Quarter":r.from_date=d("startOf","quarter"),r.to_date=d("endOf","quarter");break;case"This Year":r.from_date=d("startOf","year"),r.to_date=d("endOf","year");break;case"Previous Week":r.from_date=u("startOf","isoWeek"),r.to_date=u("endOf","isoWeek");break;case"Previous Month":r.from_date=u("startOf","month"),r.to_date=u("endOf","month");break;case"Previous Quarter":r.from_date=u("startOf","quarter"),r.to_date=u("endOf","quarter");break;case"Previous Year":r.from_date=u("startOf","year"),r.to_date=u("endOf","year");break}}async function P(){let t=await f();return window.open(D.value,"_blank"),t}function f(){return b.value=s.value,!0}function R(){f(),window.open(D.value+"&download=true"),setTimeout(()=>{b.value=s.value},200)}return(t,n)=>{const S=m("BaseMultiselect"),w=m("BaseInputGroup"),$=m("BaseDatePicker"),p=m("BaseButton"),y=m("BaseIcon");return W(),H("div",he,[c("div",ge,[a(w,{label:t.$t("reports.taxes.date_range"),class:"col-span-12 md:col-span-8"},{default:i(()=>[a(S,{modelValue:M.value,"onUpdate:modelValue":[n[0]||(n[0]=_=>M.value=_),T],options:l,"value-prop":"key","track-by":"key",label:"label",object:""},null,8,["modelValue","options"])]),_:1},8,["label"]),c("div",Ye,[a(w,{label:t.$t("reports.taxes.from_date")},{default:i(()=>[a($,{modelValue:r.from_date,"onUpdate:modelValue":n[1]||(n[1]=_=>r.from_date=_)},null,8,["modelValue"])]),_:1},8,["label"]),De,a(w,{label:t.$t("reports.taxes.to_date")},{default:i(()=>[a($,{modelValue:r.to_date,"onUpdate:modelValue":n[2]||(n[2]=_=>r.to_date=_)},null,8,["modelValue"])]),_:1},8,["label"])]),a(p,{variant:"primary-outline",class:"content-center hidden mt-0 w-md md:flex md:mt-8",type:"submit",onClick:N(f,["prevent"])},{default:i(()=>[q(x(t.$t("reports.update_report")),1)]),_:1})]),c("div",we,[c("iframe",{src:D.value,class:"hidden w-full h-screen border-gray-100 border-solid rounded md:flex"},null,8,Me),c("a",{class:"flex items-center justify-center h-10 px-5 py-1 text-sm font-medium leading-none text-center text-white rounded whitespace-nowrap md:hidden bg-primary-500",onClick:P},[a(y,{name:"DocumentTextIcon",class:"h-5 mr-2"}),c("span",null,x(t.$t("reports.view_pdf")),1)])])])}}},Oe={__name:"Index",setup(U){const k=I();function h(){k.downloadReport()}return(l,M)=>{const r=m("BaseBreadcrumbItem"),b=m("BaseBreadcrumb"),D=m("BaseIcon"),Y=m("BaseButton"),e=m("BasePageHeader"),g=m("BaseTab"),s=m("BaseTabGroup"),B=m("BasePage");return W(),K(B,null,{default:i(()=>[a(e,{title:l.$t("reports.report",2)},{actions:i(()=>[a(Y,{variant:"primary",class:"ml-4",onClick:h},{left:i(d=>[a(D,{name:"DownloadIcon",class:X(d.class)},null,8,["class"])]),default:i(()=>[q(" "+x(l.$t("reports.download_pdf")),1)]),_:1})]),default:i(()=>[a(b,null,{default:i(()=>[a(r,{title:l.$t("general.home"),to:"/admin/dashboard"},null,8,["title"]),a(r,{title:l.$t("reports.report",2),to:"/admin/reports",active:""},null,8,["title"])]),_:1})]),_:1},8,["title"]),a(s,{class:"p-2"},{default:i(()=>[a(g,{title:l.$t("reports.sales.sales"),"tab-panel-container":"px-0 py-0"},{default:i(()=>[a(se,{ref:"report"},null,512)]),_:1},8,["title"]),a(g,{title:l.$t("reports.profit_loss.profit_loss"),"tab-panel-container":"px-0 py-0"},{default:i(()=>[a(ke,{ref:"report"},null,512)]),_:1},8,["title"]),a(g,{title:l.$t("reports.expenses.expenses"),"tab-panel-container":"px-0 py-0"},{default:i(()=>[a(ce,{ref:"report"},null,512)]),_:1},8,["title"]),a(g,{title:l.$t("reports.taxes.taxes"),"tab-panel-container":"px-0 py-0"},{default:i(()=>[a(Re,{ref:"report"},null,512)]),_:1},8,["title"])]),_:1})]),_:1})}}};export{Oe as default}; diff --git a/public/build/assets/Index-0XtKLJ6H.js b/public/build/assets/Index-8c9F-EuN.js similarity index 73% rename from public/build/assets/Index-0XtKLJ6H.js rename to public/build/assets/Index-8c9F-EuN.js index f2009b5e..599f7d49 100644 --- a/public/build/assets/Index-0XtKLJ6H.js +++ b/public/build/assets/Index-8c9F-EuN.js @@ -1 +1 @@ -import{v as q,f as _,H as A,a5 as O,L as Q,k as $,a9 as Y,r as l,o as f,m as b,w as t,a as n,ac as k,ad as I,l as r,J as H,p as v,t as c,K as Z,b as B,bd as ee,bc as te}from"./main-B9dpPbRR.js";import ae from"./BaseTable-ZLDzRGeZ.js";import{_ as ne}from"./CapsuleIcon-9lcNYnfy.js";import{u as le}from"./payment-TUuUgmpD.js";import{u as oe}from"./global-1F4OAoew.js";import"./auth-6FPSPboo.js";const se={class:"relative table-container"},me=["innerHTML"],fe={__name:"Index",setup(re){const{tm:ce,t:u}=q.useI18n();let i=_(!1);_("created_at");let h=_(!0),P=_(null);const o=A({payment_mode:"",payment_number:""}),M=O("utils");Q();const p=le(),y=oe(),C=$(()=>!p.totalPayments&&!h.value),N=$(()=>y.currency),E=$(()=>[{key:"payment_date",label:u("payments.date"),thClass:"extra",tdClass:"font-medium text-gray-900"},{key:"payment_number",label:u("payments.payment_number")},{key:"payment_mode",label:u("payments.payment_mode")},{key:"invoice_number",label:u("invoices.invoice_number")},{key:"amount",label:u("payments.amount")},{key:"actions",label:"",tdClass:"text-right text-sm font-medium",sortable:!1}]);Y(o,()=>{j()},{debounce:500});async function T(a){return(await p.fetchPaymentModes(a,y.companySlug)).data.data}async function G({page:a,filter:m,sort:d}){let g={payment_method_id:o.payment_mode!==null?o.payment_mode:"",payment_number:o.payment_number,orderByField:d.fieldName||"created_at",orderBy:d.order||"desc",page:a};h.value=!0;let s=await p.fetchPayments(g,y.companySlug);return h.value=!1,{data:s.data.data,pagination:{totalPages:s.data.meta.last_page,currentPage:a,totalCount:s.data.meta.total,limit:10}}}function L(){P.value.refresh()}function j(){L()}function w(){o.customer="",o.payment_mode="",o.payment_number=""}function z(){i.value&&w(),i.value=!i.value}return(a,m)=>{const d=l("BaseBreadcrumbItem"),g=l("BaseBreadcrumb"),s=l("BaseIcon"),U=l("BaseButton"),W=l("BasePageHeader"),x=l("BaseInput"),S=l("BaseInputGroup"),J=l("BaseMultiselect"),K=l("BaseFilterWrapper"),R=l("BaseEmptyPlaceholder"),V=l("router-link"),X=l("BasePage");return f(),b(X,null,{default:t(()=>[n(W,{title:a.$t("payments.title")},{actions:t(()=>[k(n(U,{variant:"primary-outline",onClick:z},{right:t(e=>[r(i)?(f(),b(s,{key:1,class:H(e.class),name:"XIcon"},null,8,["class"])):(f(),b(s,{key:0,class:H(e.class),name:"FilterIcon"},null,8,["class"]))]),default:t(()=>[v(c(a.$t("general.filter"))+" ",1)]),_:1},512),[[I,r(p).totalPayments]])]),default:t(()=>[n(g,{slot:"breadcrumbs"},{default:t(()=>[n(d,{title:a.$t("general.home"),to:`/${r(y).companySlug}/customer/dashboard`},null,8,["title","to"]),n(d,{title:a.$t("payments.payment",2),to:"#",active:""},null,8,["title"])]),_:1})]),_:1},8,["title"]),k(n(K,{onClear:w},{default:t(()=>[n(S,{label:a.$t("payments.payment_number"),class:"px-3"},{default:t(()=>[n(x,{modelValue:o.payment_number,"onUpdate:modelValue":m[0]||(m[0]=e=>o.payment_number=e),placeholder:a.$t("payments.payment_number")},null,8,["modelValue","placeholder"])]),_:1},8,["label"]),n(S,{label:a.$t("payments.payment_mode"),class:"px-3"},{default:t(()=>[n(J,{modelValue:o.payment_mode,"onUpdate:modelValue":m[1]||(m[1]=e=>o.payment_mode=e),"value-prop":"id","track-by":"name","filter-results":!1,label:"name","resolve-on-load":"",delay:100,searchable:"",options:T,placeholder:a.$t("payments.payment_mode")},null,8,["modelValue","placeholder"])]),_:1},8,["label"])]),_:1},512),[[I,r(i)]]),C.value?(f(),b(R,{key:0,title:a.$t("payments.no_payments"),description:a.$t("payments.list_of_payments")},{default:t(()=>[n(ne,{class:"mt-5 mb-4"})]),_:1},8,["title","description"])):Z("",!0),k(B("div",se,[n(ae,{ref_key:"table",ref:P,data:G,columns:E.value,"placeholder-count":r(p).totalPayments>=20?10:5,class:"mt-10"},{"cell-payment_date":t(({row:e})=>[v(c(e.data.formatted_payment_date),1)]),"cell-payment_number":t(({row:e})=>[n(V,{to:{path:`payments/${e.data.id}/view`},class:"font-medium text-primary-500"},{default:t(()=>[v(c(e.data.payment_number),1)]),_:2},1032,["to"])]),"cell-payment_mode":t(({row:e})=>[B("span",null,c(e.data.payment_method?e.data.payment_method.name:a.$t("payments.not_selected")),1)]),"cell-invoice_number":t(({row:e})=>{var F,D;return[B("span",null,c((F=e.data.invoice)!=null&&F.invoice_number?(D=e.data.invoice)==null?void 0:D.invoice_number:a.$t("payments.no_invoice")),1)]}),"cell-amount":t(({row:e})=>[B("div",{innerHTML:r(M).formatMoney(e.data.amount,N.value)},null,8,me)]),"cell-actions":t(({row:e})=>[n(ee,null,{activator:t(()=>[n(s,{name:"DotsHorizontalIcon",class:"w-5 text-gray-500"})]),default:t(()=>[n(V,{to:`payments/${e.data.id}/view`},{default:t(()=>[n(te,null,{default:t(()=>[n(s,{name:"EyeIcon",class:"h-5 mr-3 text-gray-600"}),v(" "+c(a.$t("general.view")),1)]),_:1})]),_:2},1032,["to"])]),_:2},1024)]),_:1},8,["columns","placeholder-count"])],512),[[I,!C.value]])]),_:1})}}};export{fe as default}; +import{v as q,f as _,H as A,a5 as O,L as Q,k as $,a9 as Y,r as l,o as f,m as b,w as t,a as n,ac as k,ad as I,l as r,J as H,p as v,t as u,K as Z,b as B,bk as ee,bj as te}from"./main-pPEsZPea.js";import ae from"./BaseTable-ov5KJ7AA.js";import{_ as ne}from"./CapsuleIcon-iOACtwU5.js";import{u as le}from"./payment-hA--gLno.js";import{u as oe}from"./global-s5lx2XuM.js";import"./auth-mYHkZCAB.js";const se={class:"relative table-container"},me=["innerHTML"],fe={__name:"Index",setup(re){const{tm:ue,t:c}=q.useI18n();let i=_(!1);_("created_at");let h=_(!0),P=_(null);const o=A({payment_mode:"",payment_number:""}),M=O("utils");Q();const p=le(),y=oe(),C=$(()=>!p.totalPayments&&!h.value),N=$(()=>y.currency),E=$(()=>[{key:"payment_date",label:c("payments.date"),thClass:"extra",tdClass:"font-medium text-gray-900"},{key:"payment_number",label:c("payments.payment_number")},{key:"payment_mode",label:c("payments.payment_mode")},{key:"invoice_number",label:c("invoices.invoice_number")},{key:"amount",label:c("payments.amount")},{key:"actions",label:"",tdClass:"text-right text-sm font-medium",sortable:!1}]);Y(o,()=>{L()},{debounce:500});async function T(a){return(await p.fetchPaymentModes(a,y.companySlug)).data.data}async function j({page:a,filter:m,sort:d}){let g={payment_method_id:o.payment_mode!==null?o.payment_mode:"",payment_number:o.payment_number,orderByField:d.fieldName||"created_at",orderBy:d.order||"desc",page:a};h.value=!0;let s=await p.fetchPayments(g,y.companySlug);return h.value=!1,{data:s.data.data,pagination:{totalPages:s.data.meta.last_page,currentPage:a,totalCount:s.data.meta.total,limit:10}}}function G(){P.value.refresh()}function L(){G()}function w(){o.customer="",o.payment_mode="",o.payment_number=""}function z(){i.value&&w(),i.value=!i.value}return(a,m)=>{const d=l("BaseBreadcrumbItem"),g=l("BaseBreadcrumb"),s=l("BaseIcon"),U=l("BaseButton"),W=l("BasePageHeader"),x=l("BaseInput"),S=l("BaseInputGroup"),J=l("BaseMultiselect"),K=l("BaseFilterWrapper"),R=l("BaseEmptyPlaceholder"),V=l("router-link"),X=l("BasePage");return f(),b(X,null,{default:t(()=>[n(W,{title:a.$t("payments.title")},{actions:t(()=>[k(n(U,{variant:"primary-outline",onClick:z},{right:t(e=>[r(i)?(f(),b(s,{key:1,class:H(e.class),name:"XIcon"},null,8,["class"])):(f(),b(s,{key:0,class:H(e.class),name:"FilterIcon"},null,8,["class"]))]),default:t(()=>[v(u(a.$t("general.filter"))+" ",1)]),_:1},512),[[I,r(p).totalPayments]])]),default:t(()=>[n(g,{slot:"breadcrumbs"},{default:t(()=>[n(d,{title:a.$t("general.home"),to:`/${r(y).companySlug}/customer/dashboard`},null,8,["title","to"]),n(d,{title:a.$t("payments.payment",2),to:"#",active:""},null,8,["title"])]),_:1})]),_:1},8,["title"]),k(n(K,{onClear:w},{default:t(()=>[n(S,{label:a.$t("payments.payment_number"),class:"px-3"},{default:t(()=>[n(x,{modelValue:o.payment_number,"onUpdate:modelValue":m[0]||(m[0]=e=>o.payment_number=e),placeholder:a.$t("payments.payment_number")},null,8,["modelValue","placeholder"])]),_:1},8,["label"]),n(S,{label:a.$t("payments.payment_mode"),class:"px-3"},{default:t(()=>[n(J,{modelValue:o.payment_mode,"onUpdate:modelValue":m[1]||(m[1]=e=>o.payment_mode=e),"value-prop":"id","track-by":"name","filter-results":!1,label:"name","resolve-on-load":"",delay:100,searchable:"",options:T,placeholder:a.$t("payments.payment_mode")},null,8,["modelValue","placeholder"])]),_:1},8,["label"])]),_:1},512),[[I,r(i)]]),C.value?(f(),b(R,{key:0,title:a.$t("payments.no_payments"),description:a.$t("payments.list_of_payments")},{default:t(()=>[n(ne,{class:"mt-5 mb-4"})]),_:1},8,["title","description"])):Z("",!0),k(B("div",se,[n(ae,{ref_key:"table",ref:P,data:j,columns:E.value,"placeholder-count":r(p).totalPayments>=20?10:5,class:"mt-10"},{"cell-payment_date":t(({row:e})=>[v(u(e.data.formatted_payment_date),1)]),"cell-payment_number":t(({row:e})=>[n(V,{to:{path:`payments/${e.data.id}/view`},class:"font-medium text-primary-500"},{default:t(()=>[v(u(e.data.payment_number),1)]),_:2},1032,["to"])]),"cell-payment_mode":t(({row:e})=>[B("span",null,u(e.data.payment_method?e.data.payment_method.name:a.$t("payments.not_selected")),1)]),"cell-invoice_number":t(({row:e})=>{var F,D;return[B("span",null,u((F=e.data.invoice)!=null&&F.invoice_number?(D=e.data.invoice)==null?void 0:D.invoice_number:a.$t("payments.no_invoice")),1)]}),"cell-amount":t(({row:e})=>[B("div",{innerHTML:r(M).formatMoney(e.data.amount,N.value)},null,8,me)]),"cell-actions":t(({row:e})=>[n(ee,null,{activator:t(()=>[n(s,{name:"DotsHorizontalIcon",class:"w-5 text-gray-500"})]),default:t(()=>[n(V,{to:`payments/${e.data.id}/view`},{default:t(()=>[n(te,null,{default:t(()=>[n(s,{name:"EyeIcon",class:"h-5 mr-3 text-gray-600"}),v(" "+u(a.$t("general.view")),1)]),_:1})]),_:2},1032,["to"])]),_:2},1024)]),_:1},8,["columns","placeholder-count"])],512),[[I,!C.value]])]),_:1})}}};export{fe as default}; diff --git a/public/build/assets/Index-SmoEtxlb.js b/public/build/assets/Index-CQ5mh-Th.js similarity index 97% rename from public/build/assets/Index-SmoEtxlb.js rename to public/build/assets/Index-CQ5mh-Th.js index 5da2ac34..46091824 100644 --- a/public/build/assets/Index-SmoEtxlb.js +++ b/public/build/assets/Index-CQ5mh-Th.js @@ -1 +1 @@ -import{aq as ve,a7 as pe,u as fe,v as be,a5 as ge,f as y,e as Be,M as Ie,H as ye,k as P,a9 as he,aa as ke,r as o,o as b,m as g,w as l,a as t,ac as D,ad as V,l as r,J as h,p as m,t as _,Q as p,K as F,a6 as W,b as f}from"./main-B9dpPbRR.js";import{_ as Ee}from"./MoonwalkerIcon-049DwnAE.js";import{_ as Ce}from"./InvoiceIndexDropdown-bkaK7_Us.js";import{_ as De}from"./SendInvoiceModal-gHfWsGqG.js";import"./mail-driver-L7_iQECX.js";const Ve=f("div",{class:"hidden w-8 h-0 mx-4 border border-gray-400 border-solid xl:block",style:{"margin-top":"1.5rem"}},null,-1),Te={class:"relative table-container"},$e={class:"relative flex items-center justify-between h-10 mt-5 list-none border-b-2 border-gray-200 border-solid"},Ae={class:"flex text-sm font-medium cursor-pointer select-none text-primary-400"},Se={class:"absolute items-center left-6 top-2.5 select-none"},Pe={class:"relative block"},Fe={class:"flex justify-between"},Le={__name:"Index",setup(Ne){const c=ve(),j=pe();fe();const{t:n}=be.useI18n();ge("$utils");const k=y(null),B=y(!1),G=y([{label:"Status",options:["DRAFT","DUE","SENT","VIEWED","COMPLETED"]},{label:"Paid Status",options:["UNPAID","PAID","PARTIALLY_PAID"]},,]),T=y(!0),u=y("general.draft");Be();const E=Ie();let s=ye({customer_id:"",status:"",from_date:"",to_date:"",invoice_number:""});const N=P(()=>!c.invoiceTotalCount&&!T.value),w=P({get:()=>c.selectedInvoices,set:a=>c.selectInvoice(a)}),H=P(()=>[{key:"checkbox",thClass:"extra w-10",tdClass:"font-medium text-gray-900",placeholderClass:"w-10",sortable:!1},{key:"invoice_date",label:n("invoices.date"),thClass:"extra",tdClass:"font-medium"},{key:"invoice_number",label:n("invoices.number")},{key:"name",label:n("invoices.customer")},{key:"status",label:n("invoices.status")},{key:"due_amount",label:n("dashboard.recent_invoices_card.amount_due")},{key:"total",label:n("invoices.total"),tdClass:"font-medium text-gray-900"},{key:"actions",label:n("invoices.action"),tdClass:"text-right text-sm font-medium",thClass:"text-right",sortable:!1}]);he(s,()=>{K()},{debounce:500}),ke(()=>{c.selectAllField&&c.selectAllInvoices()});function q(){return E.hasAbilities([p.DELETE_INVOICE,p.EDIT_INVOICE,p.VIEW_INVOICE,p.SEND_INVOICE])}async function z(a,i){s.status="",$()}function $(){k.value&&k.value.refresh()}async function Y({page:a,filter:i,sort:v}){let A={customer_id:s.customer_id,status:s.status,from_date:s.from_date,to_date:s.to_date,invoice_number:s.invoice_number,orderByField:v.fieldName||"created_at",orderBy:v.order||"desc",page:a};T.value=!0;let d=await c.fetchInvoices(A);return T.value=!1,{data:d.data.data,pagination:{totalPages:d.data.meta.last_page,currentPage:a,totalCount:d.data.meta.total,limit:10}}}function J(a){if(u.value==a.title)return!0;switch(u.value=a.title,a.title){case n("general.draft"):s.status="DRAFT";break;case n("general.sent"):s.status="SENT";break;case n("general.due"):s.status="DUE";break;default:s.status="";break}}function K(){c.$patch(a=>{a.selectedInvoices=[],a.selectAllField=!1}),$()}function U(){s.customer_id="",s.status="",s.from_date="",s.to_date="",s.invoice_number="",u.value=n("general.all")}async function Q(){j.openDialog({title:n("general.are_you_sure"),message:n("invoices.confirm_delete"),yesLabel:n("general.ok"),noLabel:n("general.cancel"),variant:"danger",hideNoButton:!1,size:"lg"}).then(async a=>{a&&await c.deleteMultipleInvoices().then(i=>{i.data.success&&($(),c.$patch(v=>{v.selectedInvoices=[],v.selectAllField=!1}))})})}function X(){B.value&&U(),B.value=!B.value}function Z(a){switch(a){case"DRAFT":u.value=n("general.draft");break;case"SENT":u.value=n("general.sent");break;case"DUE":u.value=n("general.due");break;case"COMPLETED":u.value=n("invoices.completed");break;case"PAID":u.value=n("invoices.paid");break;case"UNPAID":u.value=n("invoices.unpaid");break;case"PARTIALLY_PAID":u.value=n("invoices.partially_paid");break;case"VIEWED":u.value=n("invoices.viewed");break;default:u.value=n("general.all");break}}return(a,i)=>{const v=o("BaseBreadcrumbItem"),A=o("BaseBreadcrumb"),d=o("BaseIcon"),S=o("BaseButton"),O=o("router-link"),ee=o("BasePageHeader"),te=o("BaseCustomerSelectInput"),I=o("BaseInputGroup"),ae=o("BaseMultiselect"),R=o("BaseDatePicker"),le=o("BaseInput"),se=o("BaseFilterWrapper"),ne=o("BaseEmptyPlaceholder"),C=o("BaseTab"),oe=o("BaseTabGroup"),ie=o("BaseDropdownItem"),re=o("BaseDropdown"),x=o("BaseCheckbox"),ce=o("BaseText"),L=o("BaseFormatMoney"),ue=o("BaseInvoiceStatusBadge"),M=o("BasePaidStatusBadge"),de=o("BaseTable"),me=o("BasePage");return b(),g(me,null,{default:l(()=>[t(De),t(ee,{title:a.$t("invoices.title")},{actions:l(()=>[D(t(S,{variant:"primary-outline",onClick:X},{right:l(e=>[B.value?(b(),g(d,{key:1,name:"XIcon",class:h(e.class)},null,8,["class"])):(b(),g(d,{key:0,name:"FilterIcon",class:h(e.class)},null,8,["class"]))]),default:l(()=>[m(_(a.$t("general.filter"))+" ",1)]),_:1},512),[[V,r(c).invoiceTotalCount]]),r(E).hasAbilities(r(p).CREATE_INVOICE)?(b(),g(O,{key:0,to:"invoices/create"},{default:l(()=>[t(S,{variant:"primary",class:"ml-4"},{left:l(e=>[t(d,{name:"PlusIcon",class:h(e.class)},null,8,["class"])]),default:l(()=>[m(" "+_(a.$t("invoices.new_invoice")),1)]),_:1})]),_:1})):F("",!0)]),default:l(()=>[t(A,null,{default:l(()=>[t(v,{title:a.$t("general.home"),to:"dashboard"},null,8,["title"]),t(v,{title:a.$t("invoices.invoice",2),to:"#",active:""},null,8,["title"])]),_:1})]),_:1},8,["title"]),D(t(se,{"row-on-xl":!0,onClear:U},{default:l(()=>[t(I,{label:a.$t("customers.customer",1)},{default:l(()=>[t(te,{modelValue:r(s).customer_id,"onUpdate:modelValue":i[0]||(i[0]=e=>r(s).customer_id=e),placeholder:a.$t("customers.type_or_click"),"value-prop":"id",label:"name"},null,8,["modelValue","placeholder"])]),_:1},8,["label"]),t(I,{label:a.$t("invoices.status")},{default:l(()=>[t(ae,{modelValue:r(s).status,"onUpdate:modelValue":[i[1]||(i[1]=e=>r(s).status=e),Z],groups:!0,options:G.value,searchable:"",placeholder:a.$t("general.select_a_status"),onRemove:i[2]||(i[2]=e=>z())},null,8,["modelValue","options","placeholder"])]),_:1},8,["label"]),t(I,{label:a.$t("general.from")},{default:l(()=>[t(R,{modelValue:r(s).from_date,"onUpdate:modelValue":i[3]||(i[3]=e=>r(s).from_date=e),"calendar-button":!0,"calendar-button-icon":"calendar"},null,8,["modelValue"])]),_:1},8,["label"]),Ve,t(I,{label:a.$t("general.to"),class:"mt-2"},{default:l(()=>[t(R,{modelValue:r(s).to_date,"onUpdate:modelValue":i[4]||(i[4]=e=>r(s).to_date=e),"calendar-button":!0,"calendar-button-icon":"calendar"},null,8,["modelValue"])]),_:1},8,["label"]),t(I,{label:a.$t("invoices.invoice_number")},{default:l(()=>[t(le,{modelValue:r(s).invoice_number,"onUpdate:modelValue":i[5]||(i[5]=e=>r(s).invoice_number=e)},{left:l(e=>[t(d,{name:"HashtagIcon",class:h(e.class)},null,8,["class"])]),_:1},8,["modelValue"])]),_:1},8,["label"])]),_:1},512),[[V,B.value]]),D(t(ne,{title:a.$t("invoices.no_invoices"),description:a.$t("invoices.list_of_invoices")},W({default:l(()=>[t(Ee,{class:"mt-5 mb-4"})]),_:2},[r(E).hasAbilities(r(p).CREATE_INVOICE)?{name:"actions",fn:l(()=>[t(S,{variant:"primary-outline",onClick:i[6]||(i[6]=e=>a.$router.push("/admin/invoices/create"))},{left:l(e=>[t(d,{name:"PlusIcon",class:h(e.class)},null,8,["class"])]),default:l(()=>[m(" "+_(a.$t("invoices.add_new_invoice")),1)]),_:1})]),key:"0"}:void 0]),1032,["title","description"]),[[V,N.value]]),D(f("div",Te,[f("div",$e,[t(oe,{class:"-mb-5",onChange:J},{default:l(()=>[t(C,{title:a.$t("general.all"),filter:""},null,8,["title"]),t(C,{title:a.$t("general.draft"),filter:"DRAFT"},null,8,["title"]),t(C,{title:a.$t("general.sent"),filter:"SENT"},null,8,["title"]),t(C,{title:a.$t("general.due"),filter:"DUE"},null,8,["title"])]),_:1}),r(c).selectedInvoices.length&&r(E).hasAbilities(r(p).DELETE_INVOICE)?(b(),g(re,{key:0,class:"absolute float-right"},{activator:l(()=>[f("span",Ae,[m(_(a.$t("general.actions"))+" ",1),t(d,{name:"ChevronDownIcon"})])]),default:l(()=>[t(ie,{onClick:Q},{default:l(()=>[t(d,{name:"TrashIcon",class:"mr-3 text-gray-600"}),m(" "+_(a.$t("general.delete")),1)]),_:1})]),_:1})):F("",!0)]),t(de,{ref_key:"table",ref:k,data:Y,columns:H.value,"placeholder-count":r(c).invoiceTotalCount>=20?10:5,class:"mt-10"},W({header:l(()=>[f("div",Se,[t(x,{modelValue:r(c).selectAllField,"onUpdate:modelValue":i[7]||(i[7]=e=>r(c).selectAllField=e),variant:"primary",onChange:r(c).selectAllInvoices},null,8,["modelValue","onChange"])])]),"cell-checkbox":l(({row:e})=>[f("div",Pe,[t(x,{id:e.id,modelValue:w.value,"onUpdate:modelValue":i[8]||(i[8]=_e=>w.value=_e),value:e.data.id},null,8,["id","modelValue","value"])])]),"cell-name":l(({row:e})=>[t(ce,{text:e.data.customer.name,length:30},null,8,["text"])]),"cell-invoice_number":l(({row:e})=>[t(O,{to:{path:`invoices/${e.data.id}/view`},class:"font-medium text-primary-500"},{default:l(()=>[m(_(e.data.invoice_number),1)]),_:2},1032,["to"])]),"cell-invoice_date":l(({row:e})=>[m(_(e.data.formatted_invoice_date),1)]),"cell-total":l(({row:e})=>[t(L,{amount:e.data.total,currency:e.data.customer.currency},null,8,["amount","currency"])]),"cell-status":l(({row:e})=>[t(ue,{status:e.data.status,class:"px-3 py-1"},{default:l(()=>[m(_(e.data.status),1)]),_:2},1032,["status"])]),"cell-due_amount":l(({row:e})=>[f("div",Fe,[t(L,{amount:e.data.due_amount,currency:e.data.currency},null,8,["amount","currency"]),e.data.overdue?(b(),g(M,{key:0,status:"OVERDUE",class:"px-1 py-0.5 ml-2"},{default:l(()=>[m(_(a.$t("invoices.overdue")),1)]),_:1})):F("",!0),t(M,{status:e.data.paid_status,class:"px-1 py-0.5 ml-2"},{default:l(()=>[m(_(e.data.paid_status),1)]),_:2},1032,["status"])])]),_:2},[q()?{name:"cell-actions",fn:l(({row:e})=>[t(Ce,{row:e.data,table:k.value},null,8,["row","table"])]),key:"0"}:void 0]),1032,["columns","placeholder-count"])],512),[[V,!N.value]])]),_:1})}}};export{Le as default}; +import{aq as ve,a7 as pe,u as fe,v as be,a5 as ge,f as y,e as Be,M as Ie,H as ye,k as P,a9 as he,aa as ke,r as o,o as b,m as g,w as l,a as t,ac as D,ad as V,l as r,J as h,p as m,t as _,Q as p,K as F,a6 as W,b as f}from"./main-pPEsZPea.js";import{_ as Ee}from"./MoonwalkerIcon-n6wvqx0T.js";import{_ as Ce}from"./InvoiceIndexDropdown-Vtuy_VYF.js";import{_ as De}from"./SendInvoiceModal-XAwfWejZ.js";import"./mail-driver-SNHZXvKB.js";const Ve=f("div",{class:"hidden w-8 h-0 mx-4 border border-gray-400 border-solid xl:block",style:{"margin-top":"1.5rem"}},null,-1),Te={class:"relative table-container"},$e={class:"relative flex items-center justify-between h-10 mt-5 list-none border-b-2 border-gray-200 border-solid"},Ae={class:"flex text-sm font-medium cursor-pointer select-none text-primary-400"},Se={class:"absolute items-center left-6 top-2.5 select-none"},Pe={class:"relative block"},Fe={class:"flex justify-between"},Le={__name:"Index",setup(Ne){const c=ve(),j=pe();fe();const{t:n}=be.useI18n();ge("$utils");const k=y(null),B=y(!1),G=y([{label:"Status",options:["DRAFT","DUE","SENT","VIEWED","COMPLETED"]},{label:"Paid Status",options:["UNPAID","PAID","PARTIALLY_PAID"]},,]),T=y(!0),u=y("general.draft");Be();const E=Ie();let s=ye({customer_id:"",status:"",from_date:"",to_date:"",invoice_number:""});const N=P(()=>!c.invoiceTotalCount&&!T.value),w=P({get:()=>c.selectedInvoices,set:a=>c.selectInvoice(a)}),H=P(()=>[{key:"checkbox",thClass:"extra w-10",tdClass:"font-medium text-gray-900",placeholderClass:"w-10",sortable:!1},{key:"invoice_date",label:n("invoices.date"),thClass:"extra",tdClass:"font-medium"},{key:"invoice_number",label:n("invoices.number")},{key:"name",label:n("invoices.customer")},{key:"status",label:n("invoices.status")},{key:"due_amount",label:n("dashboard.recent_invoices_card.amount_due")},{key:"total",label:n("invoices.total"),tdClass:"font-medium text-gray-900"},{key:"actions",label:n("invoices.action"),tdClass:"text-right text-sm font-medium",thClass:"text-right",sortable:!1}]);he(s,()=>{K()},{debounce:500}),ke(()=>{c.selectAllField&&c.selectAllInvoices()});function q(){return E.hasAbilities([p.DELETE_INVOICE,p.EDIT_INVOICE,p.VIEW_INVOICE,p.SEND_INVOICE])}async function z(a,i){s.status="",$()}function $(){k.value&&k.value.refresh()}async function Y({page:a,filter:i,sort:v}){let A={customer_id:s.customer_id,status:s.status,from_date:s.from_date,to_date:s.to_date,invoice_number:s.invoice_number,orderByField:v.fieldName||"created_at",orderBy:v.order||"desc",page:a};T.value=!0;let d=await c.fetchInvoices(A);return T.value=!1,{data:d.data.data,pagination:{totalPages:d.data.meta.last_page,currentPage:a,totalCount:d.data.meta.total,limit:10}}}function J(a){if(u.value==a.title)return!0;switch(u.value=a.title,a.title){case n("general.draft"):s.status="DRAFT";break;case n("general.sent"):s.status="SENT";break;case n("general.due"):s.status="DUE";break;default:s.status="";break}}function K(){c.$patch(a=>{a.selectedInvoices=[],a.selectAllField=!1}),$()}function U(){s.customer_id="",s.status="",s.from_date="",s.to_date="",s.invoice_number="",u.value=n("general.all")}async function Q(){j.openDialog({title:n("general.are_you_sure"),message:n("invoices.confirm_delete"),yesLabel:n("general.ok"),noLabel:n("general.cancel"),variant:"danger",hideNoButton:!1,size:"lg"}).then(async a=>{a&&await c.deleteMultipleInvoices().then(i=>{i.data.success&&($(),c.$patch(v=>{v.selectedInvoices=[],v.selectAllField=!1}))})})}function X(){B.value&&U(),B.value=!B.value}function Z(a){switch(a){case"DRAFT":u.value=n("general.draft");break;case"SENT":u.value=n("general.sent");break;case"DUE":u.value=n("general.due");break;case"COMPLETED":u.value=n("invoices.completed");break;case"PAID":u.value=n("invoices.paid");break;case"UNPAID":u.value=n("invoices.unpaid");break;case"PARTIALLY_PAID":u.value=n("invoices.partially_paid");break;case"VIEWED":u.value=n("invoices.viewed");break;default:u.value=n("general.all");break}}return(a,i)=>{const v=o("BaseBreadcrumbItem"),A=o("BaseBreadcrumb"),d=o("BaseIcon"),S=o("BaseButton"),O=o("router-link"),ee=o("BasePageHeader"),te=o("BaseCustomerSelectInput"),I=o("BaseInputGroup"),ae=o("BaseMultiselect"),R=o("BaseDatePicker"),le=o("BaseInput"),se=o("BaseFilterWrapper"),ne=o("BaseEmptyPlaceholder"),C=o("BaseTab"),oe=o("BaseTabGroup"),ie=o("BaseDropdownItem"),re=o("BaseDropdown"),x=o("BaseCheckbox"),ce=o("BaseText"),L=o("BaseFormatMoney"),ue=o("BaseInvoiceStatusBadge"),M=o("BasePaidStatusBadge"),de=o("BaseTable"),me=o("BasePage");return b(),g(me,null,{default:l(()=>[t(De),t(ee,{title:a.$t("invoices.title")},{actions:l(()=>[D(t(S,{variant:"primary-outline",onClick:X},{right:l(e=>[B.value?(b(),g(d,{key:1,name:"XIcon",class:h(e.class)},null,8,["class"])):(b(),g(d,{key:0,name:"FilterIcon",class:h(e.class)},null,8,["class"]))]),default:l(()=>[m(_(a.$t("general.filter"))+" ",1)]),_:1},512),[[V,r(c).invoiceTotalCount]]),r(E).hasAbilities(r(p).CREATE_INVOICE)?(b(),g(O,{key:0,to:"invoices/create"},{default:l(()=>[t(S,{variant:"primary",class:"ml-4"},{left:l(e=>[t(d,{name:"PlusIcon",class:h(e.class)},null,8,["class"])]),default:l(()=>[m(" "+_(a.$t("invoices.new_invoice")),1)]),_:1})]),_:1})):F("",!0)]),default:l(()=>[t(A,null,{default:l(()=>[t(v,{title:a.$t("general.home"),to:"dashboard"},null,8,["title"]),t(v,{title:a.$t("invoices.invoice",2),to:"#",active:""},null,8,["title"])]),_:1})]),_:1},8,["title"]),D(t(se,{"row-on-xl":!0,onClear:U},{default:l(()=>[t(I,{label:a.$t("customers.customer",1)},{default:l(()=>[t(te,{modelValue:r(s).customer_id,"onUpdate:modelValue":i[0]||(i[0]=e=>r(s).customer_id=e),placeholder:a.$t("customers.type_or_click"),"value-prop":"id",label:"name"},null,8,["modelValue","placeholder"])]),_:1},8,["label"]),t(I,{label:a.$t("invoices.status")},{default:l(()=>[t(ae,{modelValue:r(s).status,"onUpdate:modelValue":[i[1]||(i[1]=e=>r(s).status=e),Z],groups:!0,options:G.value,searchable:"",placeholder:a.$t("general.select_a_status"),onRemove:i[2]||(i[2]=e=>z())},null,8,["modelValue","options","placeholder"])]),_:1},8,["label"]),t(I,{label:a.$t("general.from")},{default:l(()=>[t(R,{modelValue:r(s).from_date,"onUpdate:modelValue":i[3]||(i[3]=e=>r(s).from_date=e),"calendar-button":!0,"calendar-button-icon":"calendar"},null,8,["modelValue"])]),_:1},8,["label"]),Ve,t(I,{label:a.$t("general.to"),class:"mt-2"},{default:l(()=>[t(R,{modelValue:r(s).to_date,"onUpdate:modelValue":i[4]||(i[4]=e=>r(s).to_date=e),"calendar-button":!0,"calendar-button-icon":"calendar"},null,8,["modelValue"])]),_:1},8,["label"]),t(I,{label:a.$t("invoices.invoice_number")},{default:l(()=>[t(le,{modelValue:r(s).invoice_number,"onUpdate:modelValue":i[5]||(i[5]=e=>r(s).invoice_number=e)},{left:l(e=>[t(d,{name:"HashtagIcon",class:h(e.class)},null,8,["class"])]),_:1},8,["modelValue"])]),_:1},8,["label"])]),_:1},512),[[V,B.value]]),D(t(ne,{title:a.$t("invoices.no_invoices"),description:a.$t("invoices.list_of_invoices")},W({default:l(()=>[t(Ee,{class:"mt-5 mb-4"})]),_:2},[r(E).hasAbilities(r(p).CREATE_INVOICE)?{name:"actions",fn:l(()=>[t(S,{variant:"primary-outline",onClick:i[6]||(i[6]=e=>a.$router.push("/admin/invoices/create"))},{left:l(e=>[t(d,{name:"PlusIcon",class:h(e.class)},null,8,["class"])]),default:l(()=>[m(" "+_(a.$t("invoices.add_new_invoice")),1)]),_:1})]),key:"0"}:void 0]),1032,["title","description"]),[[V,N.value]]),D(f("div",Te,[f("div",$e,[t(oe,{class:"-mb-5",onChange:J},{default:l(()=>[t(C,{title:a.$t("general.all"),filter:""},null,8,["title"]),t(C,{title:a.$t("general.draft"),filter:"DRAFT"},null,8,["title"]),t(C,{title:a.$t("general.sent"),filter:"SENT"},null,8,["title"]),t(C,{title:a.$t("general.due"),filter:"DUE"},null,8,["title"])]),_:1}),r(c).selectedInvoices.length&&r(E).hasAbilities(r(p).DELETE_INVOICE)?(b(),g(re,{key:0,class:"absolute float-right"},{activator:l(()=>[f("span",Ae,[m(_(a.$t("general.actions"))+" ",1),t(d,{name:"ChevronDownIcon"})])]),default:l(()=>[t(ie,{onClick:Q},{default:l(()=>[t(d,{name:"TrashIcon",class:"mr-3 text-gray-600"}),m(" "+_(a.$t("general.delete")),1)]),_:1})]),_:1})):F("",!0)]),t(de,{ref_key:"table",ref:k,data:Y,columns:H.value,"placeholder-count":r(c).invoiceTotalCount>=20?10:5,class:"mt-10"},W({header:l(()=>[f("div",Se,[t(x,{modelValue:r(c).selectAllField,"onUpdate:modelValue":i[7]||(i[7]=e=>r(c).selectAllField=e),variant:"primary",onChange:r(c).selectAllInvoices},null,8,["modelValue","onChange"])])]),"cell-checkbox":l(({row:e})=>[f("div",Pe,[t(x,{id:e.id,modelValue:w.value,"onUpdate:modelValue":i[8]||(i[8]=_e=>w.value=_e),value:e.data.id},null,8,["id","modelValue","value"])])]),"cell-name":l(({row:e})=>[t(ce,{text:e.data.customer.name,length:30},null,8,["text"])]),"cell-invoice_number":l(({row:e})=>[t(O,{to:{path:`invoices/${e.data.id}/view`},class:"font-medium text-primary-500"},{default:l(()=>[m(_(e.data.invoice_number),1)]),_:2},1032,["to"])]),"cell-invoice_date":l(({row:e})=>[m(_(e.data.formatted_invoice_date),1)]),"cell-total":l(({row:e})=>[t(L,{amount:e.data.total,currency:e.data.customer.currency},null,8,["amount","currency"])]),"cell-status":l(({row:e})=>[t(ue,{status:e.data.status,class:"px-3 py-1"},{default:l(()=>[m(_(e.data.status),1)]),_:2},1032,["status"])]),"cell-due_amount":l(({row:e})=>[f("div",Fe,[t(L,{amount:e.data.due_amount,currency:e.data.currency},null,8,["amount","currency"]),e.data.overdue?(b(),g(M,{key:0,status:"OVERDUE",class:"px-1 py-0.5 ml-2"},{default:l(()=>[m(_(a.$t("invoices.overdue")),1)]),_:1})):F("",!0),t(M,{status:e.data.paid_status,class:"px-1 py-0.5 ml-2"},{default:l(()=>[m(_(e.data.paid_status),1)]),_:2},1032,["status"])])]),_:2},[q()?{name:"cell-actions",fn:l(({row:e})=>[t(Ce,{row:e.data,table:k.value},null,8,["row","table"])]),key:"0"}:void 0]),1032,["columns","placeholder-count"])],512),[[V,!N.value]])]),_:1})}}};export{Le as default}; diff --git a/public/build/assets/Index-2p3IBp3-.js b/public/build/assets/Index-E1-yQF6r.js similarity index 97% rename from public/build/assets/Index-2p3IBp3-.js rename to public/build/assets/Index-E1-yQF6r.js index 56045261..d7fd824b 100644 --- a/public/build/assets/Index-2p3IBp3-.js +++ b/public/build/assets/Index-E1-yQF6r.js @@ -1 +1 @@ -import{as as de,a7 as _e,M as pe,f as h,v as fe,e as be,H as Ee,k as w,a9 as ve,aa as ge,r as o,o as b,m as E,w as s,a,ac as C,ad as I,l as r,J as y,p as _,t as p,Q as f,K as F,b as v,a6 as Be}from"./main-B9dpPbRR.js";import{_ as he}from"./ObservatoryIcon-DjHmReOJ.js";import{_ as ye}from"./EstimateIndexDropdown-R-OPRBvb.js";import{_ as Te}from"./SendEstimateModal-rZxe1u30.js";import"./mail-driver-L7_iQECX.js";const ke=v("div",{class:"hidden w-8 h-0 mx-4 border border-gray-400 border-solid xl:block",style:{"margin-top":"1.5rem"}},null,-1),Ce={class:"relative table-container"},Ie={class:"relative flex items-center justify-between h-10 mt-5 list-none border-b-2 border-gray-200 border-solid"},Ae={class:"flex text-sm font-medium cursor-pointer select-none text-primary-400"},Se={class:"absolute items-center left-6 top-2.5 select-none"},$e={class:"relative block"},Re={__name:"Index",setup(De){const u=de(),W=_e(),T=pe(),k=h(null),{t:i}=fe.useI18n(),g=h(!1),G=h(["DRAFT","SENT","VIEWED","EXPIRED","ACCEPTED","REJECTED"]),A=h(!0),c=h("general.draft");be();let l=Ee({customer_id:"",status:"",from_date:"",to_date:"",estimate_number:""});const P=w(()=>!u.totalEstimateCount&&!A.value),M=w({get:()=>u.selectedEstimates,set:t=>{u.selectEstimate(t)}}),H=w(()=>[{key:"checkbox",thClass:"extra w-10 pr-0",sortable:!1,tdClass:"font-medium text-gray-900 pr-0"},{key:"estimate_date",label:i("estimates.date"),thClass:"extra",tdClass:"font-medium text-gray-500"},{key:"estimate_number",label:i("estimates.number",2)},{key:"name",label:i("estimates.customer")},{key:"status",label:i("estimates.status")},{key:"total",label:i("estimates.total"),tdClass:"font-medium text-gray-900"},{key:"actions",tdClass:"text-right text-sm font-medium pl-0",thClass:"text-right pl-0",sortable:!1}]);ve(l,()=>{X()},{debounce:500}),ge(()=>{u.selectAllField&&u.selectAllEstimates()});function j(){return T.hasAbilities([f.CREATE_ESTIMATE,f.EDIT_ESTIMATE,f.VIEW_ESTIMATE,f.SEND_ESTIMATE])}async function J(t,n){l.status="",S()}function S(){k.value&&k.value.refresh()}async function L({page:t,filter:n,sort:d}){let $={customer_id:l.customer_id,status:l.status,from_date:l.from_date,to_date:l.to_date,estimate_number:l.estimate_number,orderByField:d.fieldName||"created_at",orderBy:d.order||"desc",page:t};A.value=!0;let m=await u.fetchEstimates($);return A.value=!1,{data:m.data.data,pagination:{totalPages:m.data.meta.last_page,currentPage:t,totalCount:m.data.meta.total,limit:10}}}function O(t){if(c.value==t.title)return!0;switch(c.value=t.title,t.title){case i("general.draft"):l.status="DRAFT";break;case i("general.sent"):l.status="SENT";break;default:l.status="";break}}function X(){u.$patch(t=>{t.selectedEstimates=[],t.selectAllField=!1}),S()}function R(){l.customer_id="",l.status="",l.from_date="",l.to_date="",l.estimate_number="",c.value=i("general.all")}function z(){g.value&&R(),g.value=!g.value}async function q(){W.openDialog({title:i("general.are_you_sure"),message:i("estimates.confirm_delete"),yesLabel:i("general.ok"),noLabel:i("general.cancel"),variant:"danger",hideNoButton:!1,size:"lg"}).then(t=>{t&&u.deleteMultipleEstimates().then(n=>{S(),n.data&&u.$patch(d=>{d.selectedEstimates=[],d.selectAllField=!1})})})}function K(t){switch(t){case"DRAFT":c.value=i("general.draft");break;case"SENT":c.value=i("general.sent");break;case"VIEWED":c.value=i("estimates.viewed");break;case"EXPIRED":c.value=i("estimates.expired");break;case"ACCEPTED":c.value=i("estimates.accepted");break;case"REJECTED":c.value=i("estimates.rejected");break;default:c.value=i("general.all");break}}return(t,n)=>{const d=o("BaseBreadcrumbItem"),$=o("BaseBreadcrumb"),m=o("BaseIcon"),D=o("BaseButton"),x=o("router-link"),Q=o("BasePageHeader"),Y=o("BaseCustomerSelectInput"),B=o("BaseInputGroup"),Z=o("BaseMultiselect"),N=o("BaseDatePicker"),ee=o("BaseInput"),te=o("BaseFilterWrapper"),ae=o("BaseEmptyPlaceholder"),V=o("BaseTab"),se=o("BaseTabGroup"),le=o("BaseDropdownItem"),oe=o("BaseDropdown"),U=o("BaseCheckbox"),ne=o("BaseText"),re=o("BaseEstimateStatusBadge"),ie=o("BaseFormatMoney"),ue=o("BaseTable"),me=o("BasePage");return b(),E(me,null,{default:s(()=>[a(Te),a(Q,{title:t.$t("estimates.title")},{actions:s(()=>[C(a(D,{variant:"primary-outline",onClick:z},{right:s(e=>[g.value?(b(),E(m,{key:1,name:"XIcon",class:y(e.class)},null,8,["class"])):(b(),E(m,{key:0,class:y(e.class),name:"FilterIcon"},null,8,["class"]))]),default:s(()=>[_(p(t.$t("general.filter"))+" ",1)]),_:1},512),[[I,r(u).totalEstimateCount]]),r(T).hasAbilities(r(f).CREATE_ESTIMATE)?(b(),E(x,{key:0,to:"estimates/create"},{default:s(()=>[a(D,{variant:"primary",class:"ml-4"},{left:s(e=>[a(m,{name:"PlusIcon",class:y(e.class)},null,8,["class"])]),default:s(()=>[_(" "+p(t.$t("estimates.new_estimate")),1)]),_:1})]),_:1})):F("",!0)]),default:s(()=>[a($,null,{default:s(()=>[a(d,{title:t.$t("general.home"),to:"dashboard"},null,8,["title"]),a(d,{title:t.$t("estimates.estimate",2),to:"#",active:""},null,8,["title"])]),_:1})]),_:1},8,["title"]),C(a(te,{"row-on-xl":!0,onClear:R},{default:s(()=>[a(B,{label:t.$t("customers.customer",1)},{default:s(()=>[a(Y,{modelValue:r(l).customer_id,"onUpdate:modelValue":n[0]||(n[0]=e=>r(l).customer_id=e),placeholder:t.$t("customers.type_or_click"),"value-prop":"id",label:"name"},null,8,["modelValue","placeholder"])]),_:1},8,["label"]),a(B,{label:t.$t("estimates.status")},{default:s(()=>[a(Z,{modelValue:r(l).status,"onUpdate:modelValue":[n[1]||(n[1]=e=>r(l).status=e),K],options:G.value,searchable:"",placeholder:t.$t("general.select_a_status"),onRemove:n[2]||(n[2]=e=>J())},null,8,["modelValue","options","placeholder"])]),_:1},8,["label"]),a(B,{label:t.$t("general.from")},{default:s(()=>[a(N,{modelValue:r(l).from_date,"onUpdate:modelValue":n[3]||(n[3]=e=>r(l).from_date=e),"calendar-button":!0,"calendar-button-icon":"calendar"},null,8,["modelValue"])]),_:1},8,["label"]),ke,a(B,{label:t.$t("general.to")},{default:s(()=>[a(N,{modelValue:r(l).to_date,"onUpdate:modelValue":n[4]||(n[4]=e=>r(l).to_date=e),"calendar-button":!0,"calendar-button-icon":"calendar"},null,8,["modelValue"])]),_:1},8,["label"]),a(B,{label:t.$t("estimates.estimate_number")},{default:s(()=>[a(ee,{modelValue:r(l).estimate_number,"onUpdate:modelValue":n[5]||(n[5]=e=>r(l).estimate_number=e)},{left:s(e=>[a(m,{name:"HashtagIcon",class:y(e.class)},null,8,["class"])]),_:1},8,["modelValue"])]),_:1},8,["label"])]),_:1},512),[[I,g.value]]),C(a(ae,{title:t.$t("estimates.no_estimates"),description:t.$t("estimates.list_of_estimates")},{actions:s(()=>[r(T).hasAbilities(r(f).CREATE_ESTIMATE)?(b(),E(D,{key:0,variant:"primary-outline",onClick:n[6]||(n[6]=e=>t.$router.push("/admin/estimates/create"))},{left:s(e=>[a(m,{name:"PlusIcon",class:y(e.class)},null,8,["class"])]),default:s(()=>[_(" "+p(t.$t("estimates.add_new_estimate")),1)]),_:1})):F("",!0)]),default:s(()=>[a(he,{class:"mt-5 mb-4"})]),_:1},8,["title","description"]),[[I,P.value]]),C(v("div",Ce,[v("div",Ie,[a(se,{class:"-mb-5",onChange:O},{default:s(()=>[a(V,{title:t.$t("general.all"),filter:""},null,8,["title"]),a(V,{title:t.$t("general.draft"),filter:"DRAFT"},null,8,["title"]),a(V,{title:t.$t("general.sent"),filter:"SENT"},null,8,["title"])]),_:1}),r(u).selectedEstimates.length&&r(T).hasAbilities(r(f).DELETE_ESTIMATE)?(b(),E(oe,{key:0,class:"absolute float-right"},{activator:s(()=>[v("span",Ae,[_(p(t.$t("general.actions"))+" ",1),a(m,{name:"ChevronDownIcon"})])]),default:s(()=>[a(le,{onClick:q},{default:s(()=>[a(m,{name:"TrashIcon",class:"mr-3 text-gray-600"}),_(" "+p(t.$t("general.delete")),1)]),_:1})]),_:1})):F("",!0)]),a(ue,{ref_key:"tableComponent",ref:k,data:L,columns:H.value,"placeholder-count":r(u).totalEstimateCount>=20?10:5,class:"mt-10"},Be({header:s(()=>[v("div",Se,[a(U,{modelValue:r(u).selectAllField,"onUpdate:modelValue":n[7]||(n[7]=e=>r(u).selectAllField=e),variant:"primary",onChange:r(u).selectAllEstimates},null,8,["modelValue","onChange"])])]),"cell-checkbox":s(({row:e})=>[v("div",$e,[a(U,{id:e.id,modelValue:M.value,"onUpdate:modelValue":n[8]||(n[8]=ce=>M.value=ce),value:e.data.id},null,8,["id","modelValue","value"])])]),"cell-estimate_date":s(({row:e})=>[_(p(e.data.formatted_estimate_date),1)]),"cell-estimate_number":s(({row:e})=>[a(x,{to:{path:`estimates/${e.data.id}/view`},class:"font-medium text-primary-500"},{default:s(()=>[_(p(e.data.estimate_number),1)]),_:2},1032,["to"])]),"cell-name":s(({row:e})=>[a(ne,{text:e.data.customer.name,length:30},null,8,["text"])]),"cell-status":s(({row:e})=>[a(re,{status:e.data.status,class:"px-3 py-1"},{default:s(()=>[_(p(e.data.status),1)]),_:2},1032,["status"])]),"cell-total":s(({row:e})=>[a(ie,{amount:e.data.total,currency:e.data.customer.currency},null,8,["amount","currency"])]),_:2},[j()?{name:"cell-actions",fn:s(({row:e})=>[a(ye,{row:e.data,table:k.value},null,8,["row","table"])]),key:"0"}:void 0]),1032,["columns","placeholder-count"])],512),[[I,!P.value]])]),_:1})}}};export{Re as default}; +import{as as de,a7 as _e,M as pe,f as h,v as fe,e as be,H as Ee,k as w,a9 as ve,aa as ge,r as o,o as b,m as E,w as s,a,ac as C,ad as I,l as r,J as y,p as _,t as p,Q as f,K as F,b as v,a6 as Be}from"./main-pPEsZPea.js";import{_ as he}from"./ObservatoryIcon-XsLvGeaX.js";import{_ as ye}from"./EstimateIndexDropdown-q_PQ0HVZ.js";import{_ as Te}from"./SendEstimateModal-bpe9IwOn.js";import"./mail-driver-SNHZXvKB.js";const ke=v("div",{class:"hidden w-8 h-0 mx-4 border border-gray-400 border-solid xl:block",style:{"margin-top":"1.5rem"}},null,-1),Ce={class:"relative table-container"},Ie={class:"relative flex items-center justify-between h-10 mt-5 list-none border-b-2 border-gray-200 border-solid"},Ae={class:"flex text-sm font-medium cursor-pointer select-none text-primary-400"},Se={class:"absolute items-center left-6 top-2.5 select-none"},$e={class:"relative block"},Re={__name:"Index",setup(De){const u=de(),W=_e(),T=pe(),k=h(null),{t:i}=fe.useI18n(),g=h(!1),G=h(["DRAFT","SENT","VIEWED","EXPIRED","ACCEPTED","REJECTED"]),A=h(!0),c=h("general.draft");be();let l=Ee({customer_id:"",status:"",from_date:"",to_date:"",estimate_number:""});const P=w(()=>!u.totalEstimateCount&&!A.value),M=w({get:()=>u.selectedEstimates,set:t=>{u.selectEstimate(t)}}),H=w(()=>[{key:"checkbox",thClass:"extra w-10 pr-0",sortable:!1,tdClass:"font-medium text-gray-900 pr-0"},{key:"estimate_date",label:i("estimates.date"),thClass:"extra",tdClass:"font-medium text-gray-500"},{key:"estimate_number",label:i("estimates.number",2)},{key:"name",label:i("estimates.customer")},{key:"status",label:i("estimates.status")},{key:"total",label:i("estimates.total"),tdClass:"font-medium text-gray-900"},{key:"actions",tdClass:"text-right text-sm font-medium pl-0",thClass:"text-right pl-0",sortable:!1}]);ve(l,()=>{X()},{debounce:500}),ge(()=>{u.selectAllField&&u.selectAllEstimates()});function j(){return T.hasAbilities([f.CREATE_ESTIMATE,f.EDIT_ESTIMATE,f.VIEW_ESTIMATE,f.SEND_ESTIMATE])}async function J(t,n){l.status="",S()}function S(){k.value&&k.value.refresh()}async function L({page:t,filter:n,sort:d}){let $={customer_id:l.customer_id,status:l.status,from_date:l.from_date,to_date:l.to_date,estimate_number:l.estimate_number,orderByField:d.fieldName||"created_at",orderBy:d.order||"desc",page:t};A.value=!0;let m=await u.fetchEstimates($);return A.value=!1,{data:m.data.data,pagination:{totalPages:m.data.meta.last_page,currentPage:t,totalCount:m.data.meta.total,limit:10}}}function O(t){if(c.value==t.title)return!0;switch(c.value=t.title,t.title){case i("general.draft"):l.status="DRAFT";break;case i("general.sent"):l.status="SENT";break;default:l.status="";break}}function X(){u.$patch(t=>{t.selectedEstimates=[],t.selectAllField=!1}),S()}function R(){l.customer_id="",l.status="",l.from_date="",l.to_date="",l.estimate_number="",c.value=i("general.all")}function z(){g.value&&R(),g.value=!g.value}async function q(){W.openDialog({title:i("general.are_you_sure"),message:i("estimates.confirm_delete"),yesLabel:i("general.ok"),noLabel:i("general.cancel"),variant:"danger",hideNoButton:!1,size:"lg"}).then(t=>{t&&u.deleteMultipleEstimates().then(n=>{S(),n.data&&u.$patch(d=>{d.selectedEstimates=[],d.selectAllField=!1})})})}function K(t){switch(t){case"DRAFT":c.value=i("general.draft");break;case"SENT":c.value=i("general.sent");break;case"VIEWED":c.value=i("estimates.viewed");break;case"EXPIRED":c.value=i("estimates.expired");break;case"ACCEPTED":c.value=i("estimates.accepted");break;case"REJECTED":c.value=i("estimates.rejected");break;default:c.value=i("general.all");break}}return(t,n)=>{const d=o("BaseBreadcrumbItem"),$=o("BaseBreadcrumb"),m=o("BaseIcon"),D=o("BaseButton"),x=o("router-link"),Q=o("BasePageHeader"),Y=o("BaseCustomerSelectInput"),B=o("BaseInputGroup"),Z=o("BaseMultiselect"),N=o("BaseDatePicker"),ee=o("BaseInput"),te=o("BaseFilterWrapper"),ae=o("BaseEmptyPlaceholder"),V=o("BaseTab"),se=o("BaseTabGroup"),le=o("BaseDropdownItem"),oe=o("BaseDropdown"),U=o("BaseCheckbox"),ne=o("BaseText"),re=o("BaseEstimateStatusBadge"),ie=o("BaseFormatMoney"),ue=o("BaseTable"),me=o("BasePage");return b(),E(me,null,{default:s(()=>[a(Te),a(Q,{title:t.$t("estimates.title")},{actions:s(()=>[C(a(D,{variant:"primary-outline",onClick:z},{right:s(e=>[g.value?(b(),E(m,{key:1,name:"XIcon",class:y(e.class)},null,8,["class"])):(b(),E(m,{key:0,class:y(e.class),name:"FilterIcon"},null,8,["class"]))]),default:s(()=>[_(p(t.$t("general.filter"))+" ",1)]),_:1},512),[[I,r(u).totalEstimateCount]]),r(T).hasAbilities(r(f).CREATE_ESTIMATE)?(b(),E(x,{key:0,to:"estimates/create"},{default:s(()=>[a(D,{variant:"primary",class:"ml-4"},{left:s(e=>[a(m,{name:"PlusIcon",class:y(e.class)},null,8,["class"])]),default:s(()=>[_(" "+p(t.$t("estimates.new_estimate")),1)]),_:1})]),_:1})):F("",!0)]),default:s(()=>[a($,null,{default:s(()=>[a(d,{title:t.$t("general.home"),to:"dashboard"},null,8,["title"]),a(d,{title:t.$t("estimates.estimate",2),to:"#",active:""},null,8,["title"])]),_:1})]),_:1},8,["title"]),C(a(te,{"row-on-xl":!0,onClear:R},{default:s(()=>[a(B,{label:t.$t("customers.customer",1)},{default:s(()=>[a(Y,{modelValue:r(l).customer_id,"onUpdate:modelValue":n[0]||(n[0]=e=>r(l).customer_id=e),placeholder:t.$t("customers.type_or_click"),"value-prop":"id",label:"name"},null,8,["modelValue","placeholder"])]),_:1},8,["label"]),a(B,{label:t.$t("estimates.status")},{default:s(()=>[a(Z,{modelValue:r(l).status,"onUpdate:modelValue":[n[1]||(n[1]=e=>r(l).status=e),K],options:G.value,searchable:"",placeholder:t.$t("general.select_a_status"),onRemove:n[2]||(n[2]=e=>J())},null,8,["modelValue","options","placeholder"])]),_:1},8,["label"]),a(B,{label:t.$t("general.from")},{default:s(()=>[a(N,{modelValue:r(l).from_date,"onUpdate:modelValue":n[3]||(n[3]=e=>r(l).from_date=e),"calendar-button":!0,"calendar-button-icon":"calendar"},null,8,["modelValue"])]),_:1},8,["label"]),ke,a(B,{label:t.$t("general.to")},{default:s(()=>[a(N,{modelValue:r(l).to_date,"onUpdate:modelValue":n[4]||(n[4]=e=>r(l).to_date=e),"calendar-button":!0,"calendar-button-icon":"calendar"},null,8,["modelValue"])]),_:1},8,["label"]),a(B,{label:t.$t("estimates.estimate_number")},{default:s(()=>[a(ee,{modelValue:r(l).estimate_number,"onUpdate:modelValue":n[5]||(n[5]=e=>r(l).estimate_number=e)},{left:s(e=>[a(m,{name:"HashtagIcon",class:y(e.class)},null,8,["class"])]),_:1},8,["modelValue"])]),_:1},8,["label"])]),_:1},512),[[I,g.value]]),C(a(ae,{title:t.$t("estimates.no_estimates"),description:t.$t("estimates.list_of_estimates")},{actions:s(()=>[r(T).hasAbilities(r(f).CREATE_ESTIMATE)?(b(),E(D,{key:0,variant:"primary-outline",onClick:n[6]||(n[6]=e=>t.$router.push("/admin/estimates/create"))},{left:s(e=>[a(m,{name:"PlusIcon",class:y(e.class)},null,8,["class"])]),default:s(()=>[_(" "+p(t.$t("estimates.add_new_estimate")),1)]),_:1})):F("",!0)]),default:s(()=>[a(he,{class:"mt-5 mb-4"})]),_:1},8,["title","description"]),[[I,P.value]]),C(v("div",Ce,[v("div",Ie,[a(se,{class:"-mb-5",onChange:O},{default:s(()=>[a(V,{title:t.$t("general.all"),filter:""},null,8,["title"]),a(V,{title:t.$t("general.draft"),filter:"DRAFT"},null,8,["title"]),a(V,{title:t.$t("general.sent"),filter:"SENT"},null,8,["title"])]),_:1}),r(u).selectedEstimates.length&&r(T).hasAbilities(r(f).DELETE_ESTIMATE)?(b(),E(oe,{key:0,class:"absolute float-right"},{activator:s(()=>[v("span",Ae,[_(p(t.$t("general.actions"))+" ",1),a(m,{name:"ChevronDownIcon"})])]),default:s(()=>[a(le,{onClick:q},{default:s(()=>[a(m,{name:"TrashIcon",class:"mr-3 text-gray-600"}),_(" "+p(t.$t("general.delete")),1)]),_:1})]),_:1})):F("",!0)]),a(ue,{ref_key:"tableComponent",ref:k,data:L,columns:H.value,"placeholder-count":r(u).totalEstimateCount>=20?10:5,class:"mt-10"},Be({header:s(()=>[v("div",Se,[a(U,{modelValue:r(u).selectAllField,"onUpdate:modelValue":n[7]||(n[7]=e=>r(u).selectAllField=e),variant:"primary",onChange:r(u).selectAllEstimates},null,8,["modelValue","onChange"])])]),"cell-checkbox":s(({row:e})=>[v("div",$e,[a(U,{id:e.id,modelValue:M.value,"onUpdate:modelValue":n[8]||(n[8]=ce=>M.value=ce),value:e.data.id},null,8,["id","modelValue","value"])])]),"cell-estimate_date":s(({row:e})=>[_(p(e.data.formatted_estimate_date),1)]),"cell-estimate_number":s(({row:e})=>[a(x,{to:{path:`estimates/${e.data.id}/view`},class:"font-medium text-primary-500"},{default:s(()=>[_(p(e.data.estimate_number),1)]),_:2},1032,["to"])]),"cell-name":s(({row:e})=>[a(ne,{text:e.data.customer.name,length:30},null,8,["text"])]),"cell-status":s(({row:e})=>[a(re,{status:e.data.status,class:"px-3 py-1"},{default:s(()=>[_(p(e.data.status),1)]),_:2},1032,["status"])]),"cell-total":s(({row:e})=>[a(ie,{amount:e.data.total,currency:e.data.customer.currency},null,8,["amount","currency"])]),_:2},[j()?{name:"cell-actions",fn:s(({row:e})=>[a(ye,{row:e.data,table:k.value},null,8,["row","table"])]),key:"0"}:void 0]),1032,["columns","placeholder-count"])],512),[[I,!P.value]])]),_:1})}}};export{Re as default}; diff --git a/public/build/assets/Index-hIak5IGl.js b/public/build/assets/Index-f2o6PmtH.js similarity index 96% rename from public/build/assets/Index-hIak5IGl.js rename to public/build/assets/Index-f2o6PmtH.js index 10facbf1..e5922e5a 100644 --- a/public/build/assets/Index-hIak5IGl.js +++ b/public/build/assets/Index-f2o6PmtH.js @@ -1 +1 @@ -import{v as ue,f as T,H as ie,E as ce,a7 as de,M as pe,k,a9 as ye,aa as _e,r as l,o as y,m as _,w as t,a,ac as Y,ad as H,l as u,J as B,p as d,t as c,Q as f,K as V,a6 as L,b as p}from"./main-B9dpPbRR.js";import{u as fe}from"./payment-Y8OywN76.js";import{_ as be}from"./CapsuleIcon-9lcNYnfy.js";import{_ as ve,a as Be}from"./SendPaymentModal-uAR5T6RF.js";import"./mail-driver-L7_iQECX.js";const he={class:"relative table-container"},ge={class:"relative flex items-center justify-end h-5"},ke={class:"flex text-sm font-medium cursor-pointer select-none text-primary-400"},Ce={class:"absolute items-center left-6 top-2.5 select-none"},Pe={class:"relative block"},Se={__name:"Index",setup(Ie){const{t:i}=ue.useI18n();let b=T(!1),C=T(!0),h=T(null);const m=ie({customer:"",payment_mode:"",payment_number:""}),o=fe();ce();const W=de(),P=pe(),A=k(()=>!o.paymentTotalCount&&!C.value),j=k(()=>[{key:"status",sortable:!1,thClass:"extra w-10",tdClass:"text-left text-sm font-medium extra"},{key:"payment_date",label:i("payments.date"),thClass:"extra",tdClass:"font-medium text-gray-900"},{key:"payment_number",label:i("payments.payment_number")},{key:"name",label:i("payments.customer")},{key:"payment_mode",label:i("payments.payment_mode")},{key:"invoice_number",label:i("invoices.invoice_number")},{key:"amount",label:i("payments.amount")},{key:"actions",label:"",tdClass:"text-right text-sm font-medium",sortable:!1}]),S=k({get:()=>o.selectedPayments,set:n=>o.selectPayment(n)}),D=k({get:()=>o.selectAllField,set:n=>o.setSelectAllState(n)});ye(m,()=>{J()},{debounce:500}),_e(()=>{o.selectAllField&&o.selectAllPayments()}),o.fetchPaymentModes({limit:"all"});async function z(n){return(await o.fetchPaymentModes({search:n})).data.data}function G(){return P.hasAbilities([f.DELETE_PAYMENT,f.EDIT_PAYMENT,f.VIEW_PAYMENT,f.SEND_PAYMENT])}async function R({page:n,filter:s,sort:v}){let I={customer_id:m.customer_id,payment_method_id:m.payment_mode!==null?m.payment_mode:"",payment_number:m.payment_number,orderByField:v.fieldName||"created_at",orderBy:v.order||"desc",page:n};C.value=!0;let r=await o.fetchPayments(I);return C.value=!1,{data:r.data.data,pagination:{totalPages:r.data.meta.last_page,currentPage:n,totalCount:r.data.meta.total,limit:10}}}function F(){h.value&&h.value.refresh()}function J(){F()}function M(){m.customer_id="",m.payment_mode="",m.payment_number=""}function K(){b.value&&M(),b.value=!b.value}function O(){W.openDialog({title:i("general.are_you_sure"),message:i("payments.confirm_delete",2),yesLabel:i("general.ok"),noLabel:i("general.cancel"),variant:"danger",hideNoButton:!1,size:"lg"}).then(n=>{n&&o.deleteMultiplePayments().then(s=>{s.data.success&&F()})})}return(n,s)=>{const v=l("BaseBreadcrumbItem"),I=l("BaseBreadcrumb"),r=l("BaseIcon"),$=l("BaseButton"),Q=l("BasePageHeader"),X=l("BaseCustomerSelectInput"),E=l("BaseInputGroup"),q=l("BaseInput"),Z=l("BaseMultiselect"),ee=l("BaseFilterWrapper"),te=l("BaseEmptyPlaceholder"),ae=l("BaseDropdownItem"),ne=l("BaseDropdown"),N=l("BaseCheckbox"),le=l("router-link"),se=l("BaseText"),oe=l("BaseFormatMoney"),me=l("BaseTable"),re=l("BasePage");return y(),_(re,{class:"payments"},{default:t(()=>[a(ve),a(Q,{title:n.$t("payments.title")},{actions:t(()=>[Y(a($,{variant:"primary-outline",onClick:K},{right:t(e=>[u(b)?(y(),_(r,{key:1,name:"XIcon",class:B(e.class)},null,8,["class"])):(y(),_(r,{key:0,class:B(e.class),name:"FilterIcon"},null,8,["class"]))]),default:t(()=>[d(c(n.$t("general.filter"))+" ",1)]),_:1},512),[[H,u(o).paymentTotalCount]]),u(P).hasAbilities(u(f).CREATE_PAYMENT)?(y(),_($,{key:0,variant:"primary",class:"ml-4",onClick:s[0]||(s[0]=e=>n.$router.push("/admin/payments/create"))},{left:t(e=>[a(r,{name:"PlusIcon",class:B(e.class)},null,8,["class"])]),default:t(()=>[d(" "+c(n.$t("payments.add_payment")),1)]),_:1})):V("",!0)]),default:t(()=>[a(I,null,{default:t(()=>[a(v,{title:n.$t("general.home"),to:"dashboard"},null,8,["title"]),a(v,{title:n.$t("payments.payment",2),to:"#",active:""},null,8,["title"])]),_:1})]),_:1},8,["title"]),a(ee,{show:u(b),class:"mt-3",onClear:M},{default:t(()=>[a(E,{label:n.$t("payments.customer")},{default:t(()=>[a(X,{modelValue:m.customer_id,"onUpdate:modelValue":s[1]||(s[1]=e=>m.customer_id=e),placeholder:n.$t("customers.type_or_click"),"value-prop":"id",label:"name"},null,8,["modelValue","placeholder"])]),_:1},8,["label"]),a(E,{label:n.$t("payments.payment_number")},{default:t(()=>[a(q,{modelValue:m.payment_number,"onUpdate:modelValue":s[2]||(s[2]=e=>m.payment_number=e)},{left:t(e=>[a(r,{name:"HashtagIcon",class:B(e.class)},null,8,["class"])]),_:1},8,["modelValue"])]),_:1},8,["label"]),a(E,{label:n.$t("payments.payment_mode")},{default:t(()=>[a(Z,{modelValue:m.payment_mode,"onUpdate:modelValue":s[3]||(s[3]=e=>m.payment_mode=e),"value-prop":"id","track-by":"name","filter-results":!1,label:"name","resolve-on-load":"",delay:500,searchable:"",options:z},null,8,["modelValue"])]),_:1},8,["label"])]),_:1},8,["show"]),A.value?(y(),_(te,{key:0,title:n.$t("payments.no_payments"),description:n.$t("payments.list_of_payments")},L({default:t(()=>[a(be,{class:"mt-5 mb-4"})]),_:2},[u(P).hasAbilities(u(f).CREATE_PAYMENT)?{name:"actions",fn:t(()=>[a($,{variant:"primary-outline",onClick:s[4]||(s[4]=e=>n.$router.push("/admin/payments/create"))},{left:t(e=>[a(r,{name:"PlusIcon",class:B(e.class)},null,8,["class"])]),default:t(()=>[d(" "+c(n.$t("payments.add_new_payment")),1)]),_:1})]),key:"0"}:void 0]),1032,["title","description"])):V("",!0),Y(p("div",he,[p("div",ge,[u(o).selectedPayments.length?(y(),_(ne,{key:0},{activator:t(()=>[p("span",ke,[d(c(n.$t("general.actions"))+" ",1),a(r,{name:"ChevronDownIcon"})])]),default:t(()=>[a(ae,{onClick:O},{default:t(()=>[a(r,{name:"TrashIcon",class:"mr-3 text-gray-600"}),d(" "+c(n.$t("general.delete")),1)]),_:1})]),_:1})):V("",!0)]),a(me,{ref_key:"tableComponent",ref:h,data:R,columns:j.value,"placeholder-count":u(o).paymentTotalCount>=20?10:5,class:"mt-3"},L({header:t(()=>[p("div",Ce,[a(N,{modelValue:D.value,"onUpdate:modelValue":s[5]||(s[5]=e=>D.value=e),variant:"primary",onChange:u(o).selectAllPayments},null,8,["modelValue","onChange"])])]),"cell-status":t(({row:e})=>[p("div",Pe,[a(N,{id:e.id,modelValue:S.value,"onUpdate:modelValue":s[6]||(s[6]=g=>S.value=g),value:e.data.id,variant:"primary"},null,8,["id","modelValue","value"])])]),"cell-payment_date":t(({row:e})=>[d(c(e.data.formatted_payment_date),1)]),"cell-payment_number":t(({row:e})=>[a(le,{to:{path:`payments/${e.data.id}/view`},class:"font-medium text-primary-500"},{default:t(()=>[d(c(e.data.payment_number),1)]),_:2},1032,["to"])]),"cell-name":t(({row:e})=>[a(se,{text:e.data.customer.name,length:30,tag:"span"},null,8,["text"])]),"cell-payment_mode":t(({row:e})=>[p("span",null,c(e.data.payment_method?e.data.payment_method.name:"-"),1)]),"cell-invoice_number":t(({row:e})=>{var g,x,w,U;return[p("span",null,c((x=(g=e==null?void 0:e.data)==null?void 0:g.invoice)!=null&&x.invoice_number?(U=(w=e==null?void 0:e.data)==null?void 0:w.invoice)==null?void 0:U.invoice_number:"-"),1)]}),"cell-amount":t(({row:e})=>[a(oe,{amount:e.data.amount,currency:e.data.customer.currency},null,8,["amount","currency"])]),_:2},[G()?{name:"cell-actions",fn:t(({row:e})=>[a(Be,{row:e.data,table:u(h)},null,8,["row","table"])]),key:"0"}:void 0]),1032,["columns","placeholder-count"])],512),[[H,!A.value]])]),_:1})}}};export{Se as default}; +import{v as ue,f as T,H as ie,E as ce,a7 as de,M as pe,k,a9 as ye,aa as _e,r as l,o as y,m as _,w as t,a,ac as Y,ad as H,l as u,J as B,p as d,t as c,Q as f,K as V,a6 as L,b as p}from"./main-pPEsZPea.js";import{u as fe}from"./payment-fIjVKZH2.js";import{_ as be}from"./CapsuleIcon-iOACtwU5.js";import{_ as ve,a as Be}from"./SendPaymentModal-MAlrG3n8.js";import"./mail-driver-SNHZXvKB.js";const he={class:"relative table-container"},ge={class:"relative flex items-center justify-end h-5"},ke={class:"flex text-sm font-medium cursor-pointer select-none text-primary-400"},Ce={class:"absolute items-center left-6 top-2.5 select-none"},Pe={class:"relative block"},Se={__name:"Index",setup(Ie){const{t:i}=ue.useI18n();let b=T(!1),C=T(!0),h=T(null);const m=ie({customer:"",payment_mode:"",payment_number:""}),o=fe();ce();const W=de(),P=pe(),A=k(()=>!o.paymentTotalCount&&!C.value),j=k(()=>[{key:"status",sortable:!1,thClass:"extra w-10",tdClass:"text-left text-sm font-medium extra"},{key:"payment_date",label:i("payments.date"),thClass:"extra",tdClass:"font-medium text-gray-900"},{key:"payment_number",label:i("payments.payment_number")},{key:"name",label:i("payments.customer")},{key:"payment_mode",label:i("payments.payment_mode")},{key:"invoice_number",label:i("invoices.invoice_number")},{key:"amount",label:i("payments.amount")},{key:"actions",label:"",tdClass:"text-right text-sm font-medium",sortable:!1}]),S=k({get:()=>o.selectedPayments,set:n=>o.selectPayment(n)}),D=k({get:()=>o.selectAllField,set:n=>o.setSelectAllState(n)});ye(m,()=>{J()},{debounce:500}),_e(()=>{o.selectAllField&&o.selectAllPayments()}),o.fetchPaymentModes({limit:"all"});async function z(n){return(await o.fetchPaymentModes({search:n})).data.data}function G(){return P.hasAbilities([f.DELETE_PAYMENT,f.EDIT_PAYMENT,f.VIEW_PAYMENT,f.SEND_PAYMENT])}async function R({page:n,filter:s,sort:v}){let I={customer_id:m.customer_id,payment_method_id:m.payment_mode!==null?m.payment_mode:"",payment_number:m.payment_number,orderByField:v.fieldName||"created_at",orderBy:v.order||"desc",page:n};C.value=!0;let r=await o.fetchPayments(I);return C.value=!1,{data:r.data.data,pagination:{totalPages:r.data.meta.last_page,currentPage:n,totalCount:r.data.meta.total,limit:10}}}function F(){h.value&&h.value.refresh()}function J(){F()}function M(){m.customer_id="",m.payment_mode="",m.payment_number=""}function K(){b.value&&M(),b.value=!b.value}function O(){W.openDialog({title:i("general.are_you_sure"),message:i("payments.confirm_delete",2),yesLabel:i("general.ok"),noLabel:i("general.cancel"),variant:"danger",hideNoButton:!1,size:"lg"}).then(n=>{n&&o.deleteMultiplePayments().then(s=>{s.data.success&&F()})})}return(n,s)=>{const v=l("BaseBreadcrumbItem"),I=l("BaseBreadcrumb"),r=l("BaseIcon"),$=l("BaseButton"),Q=l("BasePageHeader"),X=l("BaseCustomerSelectInput"),E=l("BaseInputGroup"),q=l("BaseInput"),Z=l("BaseMultiselect"),ee=l("BaseFilterWrapper"),te=l("BaseEmptyPlaceholder"),ae=l("BaseDropdownItem"),ne=l("BaseDropdown"),N=l("BaseCheckbox"),le=l("router-link"),se=l("BaseText"),oe=l("BaseFormatMoney"),me=l("BaseTable"),re=l("BasePage");return y(),_(re,{class:"payments"},{default:t(()=>[a(ve),a(Q,{title:n.$t("payments.title")},{actions:t(()=>[Y(a($,{variant:"primary-outline",onClick:K},{right:t(e=>[u(b)?(y(),_(r,{key:1,name:"XIcon",class:B(e.class)},null,8,["class"])):(y(),_(r,{key:0,class:B(e.class),name:"FilterIcon"},null,8,["class"]))]),default:t(()=>[d(c(n.$t("general.filter"))+" ",1)]),_:1},512),[[H,u(o).paymentTotalCount]]),u(P).hasAbilities(u(f).CREATE_PAYMENT)?(y(),_($,{key:0,variant:"primary",class:"ml-4",onClick:s[0]||(s[0]=e=>n.$router.push("/admin/payments/create"))},{left:t(e=>[a(r,{name:"PlusIcon",class:B(e.class)},null,8,["class"])]),default:t(()=>[d(" "+c(n.$t("payments.add_payment")),1)]),_:1})):V("",!0)]),default:t(()=>[a(I,null,{default:t(()=>[a(v,{title:n.$t("general.home"),to:"dashboard"},null,8,["title"]),a(v,{title:n.$t("payments.payment",2),to:"#",active:""},null,8,["title"])]),_:1})]),_:1},8,["title"]),a(ee,{show:u(b),class:"mt-3",onClear:M},{default:t(()=>[a(E,{label:n.$t("payments.customer")},{default:t(()=>[a(X,{modelValue:m.customer_id,"onUpdate:modelValue":s[1]||(s[1]=e=>m.customer_id=e),placeholder:n.$t("customers.type_or_click"),"value-prop":"id",label:"name"},null,8,["modelValue","placeholder"])]),_:1},8,["label"]),a(E,{label:n.$t("payments.payment_number")},{default:t(()=>[a(q,{modelValue:m.payment_number,"onUpdate:modelValue":s[2]||(s[2]=e=>m.payment_number=e)},{left:t(e=>[a(r,{name:"HashtagIcon",class:B(e.class)},null,8,["class"])]),_:1},8,["modelValue"])]),_:1},8,["label"]),a(E,{label:n.$t("payments.payment_mode")},{default:t(()=>[a(Z,{modelValue:m.payment_mode,"onUpdate:modelValue":s[3]||(s[3]=e=>m.payment_mode=e),"value-prop":"id","track-by":"name","filter-results":!1,label:"name","resolve-on-load":"",delay:500,searchable:"",options:z},null,8,["modelValue"])]),_:1},8,["label"])]),_:1},8,["show"]),A.value?(y(),_(te,{key:0,title:n.$t("payments.no_payments"),description:n.$t("payments.list_of_payments")},L({default:t(()=>[a(be,{class:"mt-5 mb-4"})]),_:2},[u(P).hasAbilities(u(f).CREATE_PAYMENT)?{name:"actions",fn:t(()=>[a($,{variant:"primary-outline",onClick:s[4]||(s[4]=e=>n.$router.push("/admin/payments/create"))},{left:t(e=>[a(r,{name:"PlusIcon",class:B(e.class)},null,8,["class"])]),default:t(()=>[d(" "+c(n.$t("payments.add_new_payment")),1)]),_:1})]),key:"0"}:void 0]),1032,["title","description"])):V("",!0),Y(p("div",he,[p("div",ge,[u(o).selectedPayments.length?(y(),_(ne,{key:0},{activator:t(()=>[p("span",ke,[d(c(n.$t("general.actions"))+" ",1),a(r,{name:"ChevronDownIcon"})])]),default:t(()=>[a(ae,{onClick:O},{default:t(()=>[a(r,{name:"TrashIcon",class:"mr-3 text-gray-600"}),d(" "+c(n.$t("general.delete")),1)]),_:1})]),_:1})):V("",!0)]),a(me,{ref_key:"tableComponent",ref:h,data:R,columns:j.value,"placeholder-count":u(o).paymentTotalCount>=20?10:5,class:"mt-3"},L({header:t(()=>[p("div",Ce,[a(N,{modelValue:D.value,"onUpdate:modelValue":s[5]||(s[5]=e=>D.value=e),variant:"primary",onChange:u(o).selectAllPayments},null,8,["modelValue","onChange"])])]),"cell-status":t(({row:e})=>[p("div",Pe,[a(N,{id:e.id,modelValue:S.value,"onUpdate:modelValue":s[6]||(s[6]=g=>S.value=g),value:e.data.id,variant:"primary"},null,8,["id","modelValue","value"])])]),"cell-payment_date":t(({row:e})=>[d(c(e.data.formatted_payment_date),1)]),"cell-payment_number":t(({row:e})=>[a(le,{to:{path:`payments/${e.data.id}/view`},class:"font-medium text-primary-500"},{default:t(()=>[d(c(e.data.payment_number),1)]),_:2},1032,["to"])]),"cell-name":t(({row:e})=>[a(se,{text:e.data.customer.name,length:30,tag:"span"},null,8,["text"])]),"cell-payment_mode":t(({row:e})=>[p("span",null,c(e.data.payment_method?e.data.payment_method.name:"-"),1)]),"cell-invoice_number":t(({row:e})=>{var g,x,w,U;return[p("span",null,c((x=(g=e==null?void 0:e.data)==null?void 0:g.invoice)!=null&&x.invoice_number?(U=(w=e==null?void 0:e.data)==null?void 0:w.invoice)==null?void 0:U.invoice_number:"-"),1)]}),"cell-amount":t(({row:e})=>[a(oe,{amount:e.data.amount,currency:e.data.customer.currency},null,8,["amount","currency"])]),_:2},[G()?{name:"cell-actions",fn:t(({row:e})=>[a(Be,{row:e.data,table:u(h)},null,8,["row","table"])]),key:"0"}:void 0]),1032,["columns","placeholder-count"])],512),[[H,!A.value]])]),_:1})}}};export{Se as default}; diff --git a/public/build/assets/Index-J9q2Id_8.js b/public/build/assets/Index-fmtpwozj.js similarity index 98% rename from public/build/assets/Index-J9q2Id_8.js rename to public/build/assets/Index-fmtpwozj.js index 4637657f..6ba12464 100644 --- a/public/build/assets/Index-J9q2Id_8.js +++ b/public/build/assets/Index-fmtpwozj.js @@ -1 +1 @@ -import{o as u,c as me,b as d,J as f,a7 as R,u as pe,v as O,L as _e,e as fe,M as G,a5 as ye,r as n,m as p,w as t,l as o,a,Q as x,p as v,t as _,K as I,E as ge,f as M,H as he,k as F,a9 as ve,aa as Ce,Y as xe,ac as T,ad as U,a6 as H}from"./main-B9dpPbRR.js";import{u as W}from"./expense-DZq_Zbqb.js";import{u as be}from"./category-PmZRvdLB.js";const Be={width:"110",height:"110",viewBox:"0 0 110 110",fill:"none",xmlns:"http://www.w3.org/2000/svg"},Ee={__name:"UFOIcon",props:{primaryFillColor:{type:String,default:"fill-primary-500"},secondaryFillColor:{type:String,default:"fill-gray-600"}},setup(c){return(r,D)=>(u(),me("svg",Be,[d("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M55 13.75C24.6245 13.75 0 22.9848 0 34.375C0 45.7652 24.6245 55 55 55C85.3755 55 110 45.7652 110 34.375C110 22.9848 85.3755 13.75 55 13.75ZM55 15.4688C86.8708 15.4688 108.281 25.245 108.281 34.375C108.281 43.505 86.8708 53.2812 55 53.2812C23.1292 53.2812 1.71875 43.505 1.71875 34.375C1.71875 25.245 23.1292 15.4688 55 15.4688Z",class:f(c.secondaryFillColor)},null,2),d("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M54.9999 1.71875C66.0842 1.71875 75.7452 7.92172 80.697 17.038L82.732 17.2081C77.6737 7.01078 67.1549 0 54.9999 0C42.7985 0 32.2454 7.06406 27.2095 17.3267L29.2479 17.1411C34.1824 7.96812 43.8745 1.71875 54.9999 1.71875Z",class:f(c.primaryFillColor)},null,2),d("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M55 96.25C40.7619 96.25 25.7812 99.3283 25.7812 103.125C25.7812 106.922 40.7619 110 55 110C69.2381 110 84.2188 106.922 84.2188 103.125C84.2188 99.3283 69.2381 96.25 55 96.25ZM55 97.9688C70.4602 97.9688 81.5959 101.317 82.4811 103.125C81.5959 104.933 70.4602 108.281 55 108.281C39.5398 108.281 28.4041 104.933 27.5189 103.125C28.4041 101.317 39.5398 97.9688 55 97.9688Z",class:f(c.primaryFillColor)},null,2),d("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M27.4756 103.328L25.8049 102.922L41.2737 39.3286L42.9443 39.7342L27.4756 103.328Z",class:f(c.primaryFillColor)},null,2),d("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M82.5247 103.328L67.0559 39.7342L68.7265 39.3286L84.1953 102.922L82.5247 103.328Z",class:f(c.primaryFillColor)},null,2),d("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M68.75 39.5312C68.75 42.3792 62.5934 44.6875 55 44.6875C47.4066 44.6875 41.25 42.3792 41.25 39.5312C41.25 36.6833 47.4066 34.375 55 34.375C62.5934 34.375 68.75 36.6833 68.75 39.5312Z",class:f(c.secondaryFillColor)},null,2)]))}},ke={__name:"ExpenseIndexDropdown",props:{row:{type:Object,default:null},table:{type:Object,default:null},loadData:{type:Function,default:null}},setup(c){const r=c,D=R();pe();const{t:b}=O.useI18n(),B=W(),E=_e();fe();const C=G();ye("utils");function i(y){D.openDialog({title:b("general.are_you_sure"),message:b("expenses.confirm_delete",1),yesLabel:b("general.ok"),noLabel:b("general.cancel"),variant:"danger",size:"lg",hideNoButton:!1}).then(g=>{g&&B.deleteExpense({ids:[y]}).then(h=>{h&&r.loadData&&r.loadData()})})}return(y,g)=>{const h=n("BaseIcon"),S=n("BaseButton"),k=n("BaseDropdownItem"),V=n("router-link"),P=n("BaseDropdown");return u(),p(P,null,{activator:t(()=>[o(E).name==="expenses.view"?(u(),p(S,{key:0,variant:"primary"},{default:t(()=>[a(h,{name:"DotsHorizontalIcon",class:"h-5 text-white"})]),_:1})):(u(),p(h,{key:1,name:"DotsHorizontalIcon",class:"h-5 text-gray-500"}))]),default:t(()=>[o(C).hasAbilities(o(x).EDIT_EXPENSE)?(u(),p(V,{key:0,to:`/admin/expenses/${c.row.id}/edit`},{default:t(()=>[a(k,null,{default:t(()=>[a(h,{name:"PencilIcon",class:"w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500"}),v(" "+_(y.$t("general.edit")),1)]),_:1})]),_:1},8,["to"])):I("",!0),o(C).hasAbilities(o(x).DELETE_EXPENSE)?(u(),p(k,{key:1,onClick:g[0]||(g[0]=X=>i(c.row.id))},{default:t(()=>[a(h,{name:"TrashIcon",class:"w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500"}),v(" "+_(y.$t("general.delete")),1)]),_:1})):I("",!0)]),_:1})}}},we=d("div",{class:"hidden w-8 h-0 mx-4 border border-gray-400 border-solid xl:block",style:{"margin-top":"1.5rem"}},null,-1),Ie={class:"relative table-container"},De={class:"relative flex items-center justify-end h-5"},Se={class:"flex text-sm font-medium cursor-pointer select-none text-primary-400"},$e={class:"absolute items-center left-6 top-2.5 select-none"},Fe={class:"relative block"},Ve={class:"notes"},Pe={class:"truncate note w-60"},Me={__name:"Index",setup(c){ge();const r=W(),D=R(),b=be(),B=G();let E=M(!0),C=M(null);const i=he({expense_category_id:"",from_date:"",to_date:"",customer_id:""}),{t:y}=O.useI18n();let g=M(null);const h=F(()=>!r.totalExpenses&&!E.value),S=F({get:()=>r.selectedExpenses,set:l=>r.selectExpense(l)}),k=F({get:()=>r.selectAllField,set:l=>r.setSelectAllState(l)}),V=F(()=>[{key:"status",thClass:"extra w-10",tdClass:"font-medium text-gray-900",placeholderClass:"w-10",sortable:!1},{key:"expense_date",label:"Date",thClass:"extra",tdClass:"font-medium text-gray-900"},{key:"name",label:"Category",thClass:"extra",tdClass:"cursor-pointer font-medium text-primary-500"},{key:"user_name",label:"Customer"},{key:"notes",label:"Note"},{key:"amount",label:"Amount"},{key:"actions",sortable:!1,tdClass:"text-right text-sm font-medium"}]);ve(i,()=>{J()},{debounce:500}),Ce(()=>{r.selectAllField&&r.selectAllExpenses()}),xe(()=>{b.fetchCategories({limit:"all"})});async function P(l){return(await b.fetchCategories({search:l})).data.data}async function X({page:l,filter:s,sort:w}){let A={...i,orderByField:w.fieldName||"created_at",orderBy:w.order||"desc",page:l};E.value=!0;let m=await r.fetchExpenses(A);return E.value=!1,{data:m.data.data,pagination:{data:m.data.data,totalPages:m.data.meta.last_page,currentPage:l,totalCount:m.data.meta.total,limit:10}}}function L(){g.value&&g.value.refresh()}function J(){L()}function Z(){i.expense_category_id="",i.from_date="",i.to_date="",i.customer_id=""}function K(){C.value&&Z(),C.value=!C.value}function Q(){return B.hasAbilities([x.DELETE_EXPENSE,x.EDIT_EXPENSE])}function Y(){D.openDialog({title:y("general.are_you_sure"),message:y("expenses.confirm_delete",2),yesLabel:y("general.ok"),noLabel:y("general.cancel"),variant:"danger",size:"lg",hideNoButton:!1}).then(l=>{l&&r.deleteMultipleExpenses().then(s=>{s.data&&L()})})}return(l,s)=>{const w=n("BaseBreadcrumbItem"),A=n("BaseBreadcrumb"),m=n("BaseIcon"),N=n("BaseButton"),q=n("BasePageHeader"),ee=n("BaseCustomerSelectInput"),$=n("BaseInputGroup"),te=n("BaseMultiselect"),j=n("BaseDatePicker"),ae=n("BaseFilterWrapper"),le=n("BaseEmptyPlaceholder"),ne=n("BaseDropdownItem"),se=n("BaseDropdown"),z=n("BaseCheckbox"),oe=n("router-link"),re=n("BaseFormatMoney"),ie=n("BaseText"),de=n("BaseTable"),ue=n("BasePage");return u(),p(ue,null,{default:t(()=>[a(q,{title:l.$t("expenses.title")},{actions:t(()=>[T(a(N,{variant:"primary-outline",onClick:K},{right:t(e=>[o(C)?(u(),p(m,{key:1,name:"XIcon",class:f(e.class)},null,8,["class"])):(u(),p(m,{key:0,name:"FilterIcon",class:f(e.class)},null,8,["class"]))]),default:t(()=>[v(_(l.$t("general.filter"))+" ",1)]),_:1},512),[[U,o(r).totalExpenses]]),o(B).hasAbilities(o(x).CREATE_EXPENSE)?(u(),p(N,{key:0,class:"ml-4",variant:"primary",onClick:s[0]||(s[0]=e=>l.$router.push("expenses/create"))},{left:t(e=>[a(m,{name:"PlusIcon",class:f(e.class)},null,8,["class"])]),default:t(()=>[v(" "+_(l.$t("expenses.add_expense")),1)]),_:1})):I("",!0)]),default:t(()=>[a(A,null,{default:t(()=>[a(w,{title:l.$t("general.home"),to:"dashboard"},null,8,["title"]),a(w,{title:l.$t("expenses.expense",2),to:"#",active:""},null,8,["title"])]),_:1})]),_:1},8,["title"]),a(ae,{show:o(C),class:"mt-5",onClear:Z},{default:t(()=>[a($,{label:l.$t("expenses.customer")},{default:t(()=>[a(ee,{modelValue:i.customer_id,"onUpdate:modelValue":s[1]||(s[1]=e=>i.customer_id=e),placeholder:l.$t("customers.type_or_click"),"value-prop":"id",label:"name"},null,8,["modelValue","placeholder"])]),_:1},8,["label"]),a($,{label:l.$t("expenses.category")},{default:t(()=>[a(te,{modelValue:i.expense_category_id,"onUpdate:modelValue":s[2]||(s[2]=e=>i.expense_category_id=e),"value-prop":"id",label:"name","track-by":"name","filter-results":!1,"resolve-on-load":"",delay:500,options:P,searchable:"",placeholder:l.$t("expenses.categories.select_a_category")},null,8,["modelValue","placeholder"])]),_:1},8,["label"]),a($,{label:l.$t("expenses.from_date")},{default:t(()=>[a(j,{modelValue:i.from_date,"onUpdate:modelValue":s[3]||(s[3]=e=>i.from_date=e),"calendar-button":!0,"calendar-button-icon":"calendar"},null,8,["modelValue"])]),_:1},8,["label"]),we,a($,{label:l.$t("expenses.to_date")},{default:t(()=>[a(j,{modelValue:i.to_date,"onUpdate:modelValue":s[4]||(s[4]=e=>i.to_date=e),"calendar-button":!0,"calendar-button-icon":"calendar"},null,8,["modelValue"])]),_:1},8,["label"])]),_:1},8,["show"]),T(a(le,{title:l.$t("expenses.no_expenses"),description:l.$t("expenses.list_of_expenses")},H({default:t(()=>[a(Ee,{class:"mt-5 mb-4"})]),_:2},[o(B).hasAbilities(o(x).CREATE_EXPENSE)?{name:"actions",fn:t(()=>[a(N,{variant:"primary-outline",onClick:s[5]||(s[5]=e=>l.$router.push("/admin/expenses/create"))},{left:t(e=>[a(m,{name:"PlusIcon",class:f(e.class)},null,8,["class"])]),default:t(()=>[v(" "+_(l.$t("expenses.add_new_expense")),1)]),_:1})]),key:"0"}:void 0]),1032,["title","description"]),[[U,h.value]]),T(d("div",Ie,[d("div",De,[o(r).selectedExpenses.length&&o(B).hasAbilities(o(x).DELETE_EXPENSE)?(u(),p(se,{key:0},{activator:t(()=>[d("span",Se,[v(_(l.$t("general.actions"))+" ",1),a(m,{name:"ChevronDownIcon"})])]),default:t(()=>[o(B).hasAbilities(o(x).DELETE_EXPENSE)?(u(),p(ne,{key:0,onClick:Y},{default:t(()=>[a(m,{name:"TrashIcon",class:"h-5 mr-3 text-gray-600"}),v(" "+_(l.$t("general.delete")),1)]),_:1})):I("",!0)]),_:1})):I("",!0)]),a(de,{ref_key:"tableComponent",ref:g,data:X,columns:V.value,class:"mt-3"},H({header:t(()=>[d("div",$e,[a(z,{modelValue:k.value,"onUpdate:modelValue":s[6]||(s[6]=e=>k.value=e),variant:"primary",onChange:o(r).selectAllExpenses},null,8,["modelValue","onChange"])])]),"cell-status":t(({row:e})=>[d("div",Fe,[a(z,{id:e.id,modelValue:S.value,"onUpdate:modelValue":s[7]||(s[7]=ce=>S.value=ce),value:e.data.id,variant:"primary"},null,8,["id","modelValue","value"])])]),"cell-name":t(({row:e})=>[a(oe,{to:{path:`expenses/${e.data.id}/edit`},class:"font-medium text-primary-500"},{default:t(()=>[v(_(e.data.expense_category.name),1)]),_:2},1032,["to"])]),"cell-amount":t(({row:e})=>[a(re,{amount:e.data.amount,currency:e.data.currency},null,8,["amount","currency"])]),"cell-expense_date":t(({row:e})=>[v(_(e.data.formatted_expense_date),1)]),"cell-user_name":t(({row:e})=>[a(ie,{text:e.data.customer?e.data.customer.name:"-",length:30},null,8,["text"])]),"cell-notes":t(({row:e})=>[d("div",Ve,[d("div",Pe,_(e.data.notes?e.data.notes:"-"),1)])]),_:2},[Q()?{name:"cell-actions",fn:t(({row:e})=>[a(ke,{row:e.data,table:o(g),"load-data":L},null,8,["row","table"])]),key:"0"}:void 0]),1032,["columns"])],512),[[U,!h.value]])]),_:1})}}};export{Me as default}; +import{o as u,c as me,b as d,J as f,a7 as R,u as pe,v as O,L as _e,e as fe,M as G,a5 as ye,r as n,m as p,w as t,l as o,a,Q as x,p as v,t as _,K as I,E as ge,f as M,H as he,k as F,a9 as ve,aa as Ce,Y as xe,ac as T,ad as U,a6 as H}from"./main-pPEsZPea.js";import{u as W}from"./expense-QlFyT7e_.js";import{u as be}from"./category-NTufFTmR.js";const Be={width:"110",height:"110",viewBox:"0 0 110 110",fill:"none",xmlns:"http://www.w3.org/2000/svg"},Ee={__name:"UFOIcon",props:{primaryFillColor:{type:String,default:"fill-primary-500"},secondaryFillColor:{type:String,default:"fill-gray-600"}},setup(c){return(r,D)=>(u(),me("svg",Be,[d("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M55 13.75C24.6245 13.75 0 22.9848 0 34.375C0 45.7652 24.6245 55 55 55C85.3755 55 110 45.7652 110 34.375C110 22.9848 85.3755 13.75 55 13.75ZM55 15.4688C86.8708 15.4688 108.281 25.245 108.281 34.375C108.281 43.505 86.8708 53.2812 55 53.2812C23.1292 53.2812 1.71875 43.505 1.71875 34.375C1.71875 25.245 23.1292 15.4688 55 15.4688Z",class:f(c.secondaryFillColor)},null,2),d("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M54.9999 1.71875C66.0842 1.71875 75.7452 7.92172 80.697 17.038L82.732 17.2081C77.6737 7.01078 67.1549 0 54.9999 0C42.7985 0 32.2454 7.06406 27.2095 17.3267L29.2479 17.1411C34.1824 7.96812 43.8745 1.71875 54.9999 1.71875Z",class:f(c.primaryFillColor)},null,2),d("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M55 96.25C40.7619 96.25 25.7812 99.3283 25.7812 103.125C25.7812 106.922 40.7619 110 55 110C69.2381 110 84.2188 106.922 84.2188 103.125C84.2188 99.3283 69.2381 96.25 55 96.25ZM55 97.9688C70.4602 97.9688 81.5959 101.317 82.4811 103.125C81.5959 104.933 70.4602 108.281 55 108.281C39.5398 108.281 28.4041 104.933 27.5189 103.125C28.4041 101.317 39.5398 97.9688 55 97.9688Z",class:f(c.primaryFillColor)},null,2),d("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M27.4756 103.328L25.8049 102.922L41.2737 39.3286L42.9443 39.7342L27.4756 103.328Z",class:f(c.primaryFillColor)},null,2),d("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M82.5247 103.328L67.0559 39.7342L68.7265 39.3286L84.1953 102.922L82.5247 103.328Z",class:f(c.primaryFillColor)},null,2),d("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M68.75 39.5312C68.75 42.3792 62.5934 44.6875 55 44.6875C47.4066 44.6875 41.25 42.3792 41.25 39.5312C41.25 36.6833 47.4066 34.375 55 34.375C62.5934 34.375 68.75 36.6833 68.75 39.5312Z",class:f(c.secondaryFillColor)},null,2)]))}},ke={__name:"ExpenseIndexDropdown",props:{row:{type:Object,default:null},table:{type:Object,default:null},loadData:{type:Function,default:null}},setup(c){const r=c,D=R();pe();const{t:b}=O.useI18n(),B=W(),E=_e();fe();const C=G();ye("utils");function i(y){D.openDialog({title:b("general.are_you_sure"),message:b("expenses.confirm_delete",1),yesLabel:b("general.ok"),noLabel:b("general.cancel"),variant:"danger",size:"lg",hideNoButton:!1}).then(g=>{g&&B.deleteExpense({ids:[y]}).then(h=>{h&&r.loadData&&r.loadData()})})}return(y,g)=>{const h=n("BaseIcon"),S=n("BaseButton"),k=n("BaseDropdownItem"),V=n("router-link"),P=n("BaseDropdown");return u(),p(P,null,{activator:t(()=>[o(E).name==="expenses.view"?(u(),p(S,{key:0,variant:"primary"},{default:t(()=>[a(h,{name:"DotsHorizontalIcon",class:"h-5 text-white"})]),_:1})):(u(),p(h,{key:1,name:"DotsHorizontalIcon",class:"h-5 text-gray-500"}))]),default:t(()=>[o(C).hasAbilities(o(x).EDIT_EXPENSE)?(u(),p(V,{key:0,to:`/admin/expenses/${c.row.id}/edit`},{default:t(()=>[a(k,null,{default:t(()=>[a(h,{name:"PencilIcon",class:"w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500"}),v(" "+_(y.$t("general.edit")),1)]),_:1})]),_:1},8,["to"])):I("",!0),o(C).hasAbilities(o(x).DELETE_EXPENSE)?(u(),p(k,{key:1,onClick:g[0]||(g[0]=X=>i(c.row.id))},{default:t(()=>[a(h,{name:"TrashIcon",class:"w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500"}),v(" "+_(y.$t("general.delete")),1)]),_:1})):I("",!0)]),_:1})}}},we=d("div",{class:"hidden w-8 h-0 mx-4 border border-gray-400 border-solid xl:block",style:{"margin-top":"1.5rem"}},null,-1),Ie={class:"relative table-container"},De={class:"relative flex items-center justify-end h-5"},Se={class:"flex text-sm font-medium cursor-pointer select-none text-primary-400"},$e={class:"absolute items-center left-6 top-2.5 select-none"},Fe={class:"relative block"},Ve={class:"notes"},Pe={class:"truncate note w-60"},Me={__name:"Index",setup(c){ge();const r=W(),D=R(),b=be(),B=G();let E=M(!0),C=M(null);const i=he({expense_category_id:"",from_date:"",to_date:"",customer_id:""}),{t:y}=O.useI18n();let g=M(null);const h=F(()=>!r.totalExpenses&&!E.value),S=F({get:()=>r.selectedExpenses,set:l=>r.selectExpense(l)}),k=F({get:()=>r.selectAllField,set:l=>r.setSelectAllState(l)}),V=F(()=>[{key:"status",thClass:"extra w-10",tdClass:"font-medium text-gray-900",placeholderClass:"w-10",sortable:!1},{key:"expense_date",label:"Date",thClass:"extra",tdClass:"font-medium text-gray-900"},{key:"name",label:"Category",thClass:"extra",tdClass:"cursor-pointer font-medium text-primary-500"},{key:"user_name",label:"Customer"},{key:"notes",label:"Note"},{key:"amount",label:"Amount"},{key:"actions",sortable:!1,tdClass:"text-right text-sm font-medium"}]);ve(i,()=>{J()},{debounce:500}),Ce(()=>{r.selectAllField&&r.selectAllExpenses()}),xe(()=>{b.fetchCategories({limit:"all"})});async function P(l){return(await b.fetchCategories({search:l})).data.data}async function X({page:l,filter:s,sort:w}){let A={...i,orderByField:w.fieldName||"created_at",orderBy:w.order||"desc",page:l};E.value=!0;let m=await r.fetchExpenses(A);return E.value=!1,{data:m.data.data,pagination:{data:m.data.data,totalPages:m.data.meta.last_page,currentPage:l,totalCount:m.data.meta.total,limit:10}}}function L(){g.value&&g.value.refresh()}function J(){L()}function Z(){i.expense_category_id="",i.from_date="",i.to_date="",i.customer_id=""}function K(){C.value&&Z(),C.value=!C.value}function Q(){return B.hasAbilities([x.DELETE_EXPENSE,x.EDIT_EXPENSE])}function Y(){D.openDialog({title:y("general.are_you_sure"),message:y("expenses.confirm_delete",2),yesLabel:y("general.ok"),noLabel:y("general.cancel"),variant:"danger",size:"lg",hideNoButton:!1}).then(l=>{l&&r.deleteMultipleExpenses().then(s=>{s.data&&L()})})}return(l,s)=>{const w=n("BaseBreadcrumbItem"),A=n("BaseBreadcrumb"),m=n("BaseIcon"),N=n("BaseButton"),q=n("BasePageHeader"),ee=n("BaseCustomerSelectInput"),$=n("BaseInputGroup"),te=n("BaseMultiselect"),j=n("BaseDatePicker"),ae=n("BaseFilterWrapper"),le=n("BaseEmptyPlaceholder"),ne=n("BaseDropdownItem"),se=n("BaseDropdown"),z=n("BaseCheckbox"),oe=n("router-link"),re=n("BaseFormatMoney"),ie=n("BaseText"),de=n("BaseTable"),ue=n("BasePage");return u(),p(ue,null,{default:t(()=>[a(q,{title:l.$t("expenses.title")},{actions:t(()=>[T(a(N,{variant:"primary-outline",onClick:K},{right:t(e=>[o(C)?(u(),p(m,{key:1,name:"XIcon",class:f(e.class)},null,8,["class"])):(u(),p(m,{key:0,name:"FilterIcon",class:f(e.class)},null,8,["class"]))]),default:t(()=>[v(_(l.$t("general.filter"))+" ",1)]),_:1},512),[[U,o(r).totalExpenses]]),o(B).hasAbilities(o(x).CREATE_EXPENSE)?(u(),p(N,{key:0,class:"ml-4",variant:"primary",onClick:s[0]||(s[0]=e=>l.$router.push("expenses/create"))},{left:t(e=>[a(m,{name:"PlusIcon",class:f(e.class)},null,8,["class"])]),default:t(()=>[v(" "+_(l.$t("expenses.add_expense")),1)]),_:1})):I("",!0)]),default:t(()=>[a(A,null,{default:t(()=>[a(w,{title:l.$t("general.home"),to:"dashboard"},null,8,["title"]),a(w,{title:l.$t("expenses.expense",2),to:"#",active:""},null,8,["title"])]),_:1})]),_:1},8,["title"]),a(ae,{show:o(C),class:"mt-5",onClear:Z},{default:t(()=>[a($,{label:l.$t("expenses.customer")},{default:t(()=>[a(ee,{modelValue:i.customer_id,"onUpdate:modelValue":s[1]||(s[1]=e=>i.customer_id=e),placeholder:l.$t("customers.type_or_click"),"value-prop":"id",label:"name"},null,8,["modelValue","placeholder"])]),_:1},8,["label"]),a($,{label:l.$t("expenses.category")},{default:t(()=>[a(te,{modelValue:i.expense_category_id,"onUpdate:modelValue":s[2]||(s[2]=e=>i.expense_category_id=e),"value-prop":"id",label:"name","track-by":"name","filter-results":!1,"resolve-on-load":"",delay:500,options:P,searchable:"",placeholder:l.$t("expenses.categories.select_a_category")},null,8,["modelValue","placeholder"])]),_:1},8,["label"]),a($,{label:l.$t("expenses.from_date")},{default:t(()=>[a(j,{modelValue:i.from_date,"onUpdate:modelValue":s[3]||(s[3]=e=>i.from_date=e),"calendar-button":!0,"calendar-button-icon":"calendar"},null,8,["modelValue"])]),_:1},8,["label"]),we,a($,{label:l.$t("expenses.to_date")},{default:t(()=>[a(j,{modelValue:i.to_date,"onUpdate:modelValue":s[4]||(s[4]=e=>i.to_date=e),"calendar-button":!0,"calendar-button-icon":"calendar"},null,8,["modelValue"])]),_:1},8,["label"])]),_:1},8,["show"]),T(a(le,{title:l.$t("expenses.no_expenses"),description:l.$t("expenses.list_of_expenses")},H({default:t(()=>[a(Ee,{class:"mt-5 mb-4"})]),_:2},[o(B).hasAbilities(o(x).CREATE_EXPENSE)?{name:"actions",fn:t(()=>[a(N,{variant:"primary-outline",onClick:s[5]||(s[5]=e=>l.$router.push("/admin/expenses/create"))},{left:t(e=>[a(m,{name:"PlusIcon",class:f(e.class)},null,8,["class"])]),default:t(()=>[v(" "+_(l.$t("expenses.add_new_expense")),1)]),_:1})]),key:"0"}:void 0]),1032,["title","description"]),[[U,h.value]]),T(d("div",Ie,[d("div",De,[o(r).selectedExpenses.length&&o(B).hasAbilities(o(x).DELETE_EXPENSE)?(u(),p(se,{key:0},{activator:t(()=>[d("span",Se,[v(_(l.$t("general.actions"))+" ",1),a(m,{name:"ChevronDownIcon"})])]),default:t(()=>[o(B).hasAbilities(o(x).DELETE_EXPENSE)?(u(),p(ne,{key:0,onClick:Y},{default:t(()=>[a(m,{name:"TrashIcon",class:"h-5 mr-3 text-gray-600"}),v(" "+_(l.$t("general.delete")),1)]),_:1})):I("",!0)]),_:1})):I("",!0)]),a(de,{ref_key:"tableComponent",ref:g,data:X,columns:V.value,class:"mt-3"},H({header:t(()=>[d("div",$e,[a(z,{modelValue:k.value,"onUpdate:modelValue":s[6]||(s[6]=e=>k.value=e),variant:"primary",onChange:o(r).selectAllExpenses},null,8,["modelValue","onChange"])])]),"cell-status":t(({row:e})=>[d("div",Fe,[a(z,{id:e.id,modelValue:S.value,"onUpdate:modelValue":s[7]||(s[7]=ce=>S.value=ce),value:e.data.id,variant:"primary"},null,8,["id","modelValue","value"])])]),"cell-name":t(({row:e})=>[a(oe,{to:{path:`expenses/${e.data.id}/edit`},class:"font-medium text-primary-500"},{default:t(()=>[v(_(e.data.expense_category.name),1)]),_:2},1032,["to"])]),"cell-amount":t(({row:e})=>[a(re,{amount:e.data.amount,currency:e.data.currency},null,8,["amount","currency"])]),"cell-expense_date":t(({row:e})=>[v(_(e.data.formatted_expense_date),1)]),"cell-user_name":t(({row:e})=>[a(ie,{text:e.data.customer?e.data.customer.name:"-",length:30},null,8,["text"])]),"cell-notes":t(({row:e})=>[d("div",Ve,[d("div",Pe,_(e.data.notes?e.data.notes:"-"),1)])]),_:2},[Q()?{name:"cell-actions",fn:t(({row:e})=>[a(ke,{row:e.data,table:o(g),"load-data":L},null,8,["row","table"])]),key:"0"}:void 0]),1032,["columns"])],512),[[U,!h.value]])]),_:1})}}};export{Me as default}; diff --git a/public/build/assets/Index-ZspX5Knx.js b/public/build/assets/Index-hsp751rP.js similarity index 99% rename from public/build/assets/Index-ZspX5Knx.js rename to public/build/assets/Index-hsp751rP.js index 50a68772..9a38548a 100644 --- a/public/build/assets/Index-ZspX5Knx.js +++ b/public/build/assets/Index-hsp751rP.js @@ -1 +1 @@ -import{v as P,k as v,r as o,o as n,c as r,t as u,K as y,b as t,a as e,l as d,Z as z,m as B,w as c,av as J,G as K,f as k,j as Z,N as Q,O as W,q as X,J as Y,p as S,g as j,h as ee,I as te}from"./main-B9dpPbRR.js";const ae={key:0,class:"absolute mt-5 px-6 w-full flex justify-end"},se={key:0,class:"bg-white bg-opacity-75 text-xs px-3 py-1 font-semibold tracking-wide rounded"},ne={key:1,class:"ml-2 bg-white bg-opacity-75 text-xs px-3 py-1 font-semibold tracking-wide rounded"},le={key:0},oe={key:1},re=["src"],ie={class:"px-6 py-5 flex flex-col bg-gray-50 flex-1 justify-between"},de={class:"text-lg sm:text-2xl font-medium whitespace-nowrap truncate text-primary-500"},ce={key:0,class:"flex items-center mt-2"},ue=["src"],me=t("span",null,"by",-1),_e={class:"ml-2 text-base font-semibold truncate"},he={class:"flex justify-between mt-4 flex-col space-y-2 sm:space-y-0 sm:flex-row"},pe={class:"text-xl md:text-2xl font-semibold whitespace-nowrap text-primary-500"},fe={__name:"ModuleCard",props:{data:{type:Object,default:null,required:!0}},setup(s){P.useI18n();const l=s;let m=v(()=>parseInt(l.data.average_rating));return(i,_)=>{const h=o("base-text"),g=o("BaseRating");return n(),r("div",{class:"relative shadow-md border-2 border-gray-200 border-opacity-60 rounded-lg cursor-pointer overflow-hidden h-100",onClick:_[0]||(_[0]=w=>i.$router.push(`/admin/modules/${s.data.slug}`))},[s.data.purchased?(n(),r("div",ae,[s.data.purchased?(n(),r("label",se,u(i.$t("modules.purchased")),1)):y("",!0),s.data.installed?(n(),r("label",ne,[s.data.update_available?(n(),r("span",le,u(i.$t("modules.update_available")),1)):(n(),r("span",oe,u(i.$t("modules.installed")),1))])):y("",!0)])):y("",!0),t("img",{class:"lg:h-64 md:h-48 w-full object-cover object-center",src:s.data.cover,alt:"cover"},null,8,re),t("div",ie,[t("span",de,u(s.data.name),1),s.data.author_avatar?(n(),r("div",ce,[t("img",{class:"hidden h-10 w-10 rounded-full sm:inline-block mr-2",src:s.data.author_avatar?s.data.author_avatar:"http://localhost:3000$images/default-avatar.jpg",alt:""},null,8,ue),me,t("span",_e,u(s.data.author_name),1)])):y("",!0),e(h,{text:s.data.short_description,class:"pt-4 text-gray-500 h-16 line-clamp-2",length:110},null,8,["text"]),t("div",he,[t("div",null,[e(g,{rating:d(m)},null,8,["rating"])]),t("div",pe," $ "+u(s.data.monthly_price?s.data.monthly_price/100:s.data.yearly_price/100),1)])])])}}},ge={},ve={class:"shadow-md border-2 border-gray-200 border-opacity-60 rounded-lg cursor-pointer overflow-hidden h-100"},be={class:"px-6 py-5 flex flex-col bg-gray-50 flex-1 justify-between"},ye={class:"flex items-center mt-2"},xe={class:"flex justify-between mt-4 flex-col space-y-2 sm:space-y-0 sm:flex-row"};function ke(s,l){const m=o("BaseContentPlaceholdersBox"),i=o("BaseContentPlaceholdersText"),_=o("BaseContentPlaceholders");return n(),B(_,null,{default:c(()=>[t("div",ve,[e(m,{class:"h-48 lg:h-64 md:h-48 w-full",rounded:""}),t("div",be,[e(i,{class:"w-32 h-8",lines:1,rounded:""}),t("div",ye,[e(m,{class:"h-10 w-10 rounded-full sm:inline-block mr-2"}),t("div",null,[e(i,{class:"w-32 h-8 ml-2",lines:1,rounded:""})])]),e(i,{class:"pt-4 w-full h-16",lines:1,rounded:""}),t("div",xe,[e(i,{class:"w-32 h-8",lines:1,rounded:""}),e(i,{class:"w-32 h-8",lines:1,rounded:""})])])])]),_:1})}const $=z(ge,[["render",ke]]),$e={key:0},Be={key:0,class:"grid mt-6 w-full grid-cols-1 items-start gap-6 lg:grid-cols-2 xl:grid-cols-3"},we={key:1},Ie={key:0,class:"grid mt-6 w-full grid-cols-1 items-start gap-6 lg:grid-cols-2 xl:grid-cols-3"},Te={key:1,class:"mt-24"},Ce={class:"flex items-center justify-center text-gray-500"},Se={class:"text-gray-900 text-lg font-medium"},je={class:"mt-1 text-sm text-gray-500"},Pe={class:"grid lg:grid-cols-2 mt-6"},Me={class:"flex space-x-2"},Ge=["href"],Le={__name:"Index",setup(s){const l=J(),m=K(),i=k(""),{t:_}=P.useI18n();let h=k(!1),g=k(!1);const w=v(()=>({api_token:{required:j.withMessage(_("validation.required"),ee),minLength:j.withMessage(_("validation.name_min_length",{count:3}),te(3))}})),M=v(()=>l.apiToken?(G(),!0):!1),p=Z(w,v(()=>l.currentUser)),x=v(()=>i.value==="INSTALLED"?l.modules.filter(a=>a.installed):l.modules);async function G(){g.value=!0,await l.fetchModules().then(()=>{g.value=!1})}async function V(){if(p.value.$touch(),p.value.$invalid)return!0;h.value=!0,l.checkApiToken(l.currentUser.api_token).then(a=>{if(a.data.success){L();return}h.value=!1})}async function L(){try{await m.updateGlobalSettings({data:{settings:{api_token:l.currentUser.api_token}},message:"settings.preferences.updated_message"}).then(a=>{if(a.data.success){l.apiToken=l.currentUser.api_token;return}}),h.value=!1}catch(a){h.value=!1,console.error(a);return}}function N(a){i.value=a.filter}return(a,b)=>{const I=o("BaseBreadcrumbItem"),U=o("BaseBreadcrumb"),q=o("BasePageHeader"),T=o("BaseTab"),A=o("BaseTabGroup"),D=o("BaseInput"),E=o("BaseInputGroup"),F=o("BaseIcon"),C=o("BaseButton"),R=o("BaseCard"),H=o("BasePage");return n(),B(H,null,{default:c(()=>[e(q,{title:a.$t("modules.title")},{default:c(()=>[e(U,null,{default:c(()=>[e(I,{title:a.$t("general.home"),to:"dashboard"},null,8,["title"]),e(I,{title:a.$t("modules.module",2),to:"#",active:""},null,8,["title"])]),_:1})]),_:1},8,["title"]),M.value&&d(l).modules?(n(),r("div",$e,[e(A,{class:"-mb-5",onChange:N},{default:c(()=>[e(T,{title:a.$t("general.all"),filter:""},null,8,["title"]),e(T,{title:a.$t("modules.installed"),filter:"INSTALLED"},null,8,["title"])]),_:1}),d(g)?(n(),r("div",Be,[e($),e($),e($)])):(n(),r("div",we,[x.value&&x.value.length?(n(),r("div",Ie,[(n(!0),r(Q,null,W(x.value,(f,O)=>(n(),r("div",{key:O},[e(fe,{data:f},null,8,["data"])]))),128))])):(n(),r("div",Te,[t("label",Ce,u(a.$t("modules.no_modules_installed")),1)]))]))])):(n(),B(R,{key:1,class:"mt-6"},{default:c(()=>[t("h6",Se,u(a.$t("modules.connect_installation")),1),t("p",je,u(a.$t("modules.api_token_description",{url:d(m).config.base_url.replace(/^http:\/\//,"")})),1),t("div",Pe,[t("form",{action:"",class:"mt-6",onSubmit:X(V,["prevent"])},[e(E,{label:a.$t("modules.api_token"),required:"",error:d(p).api_token.$error&&d(p).api_token.$errors[0].$message},{default:c(()=>[e(D,{modelValue:d(l).currentUser.api_token,"onUpdate:modelValue":b[0]||(b[0]=f=>d(l).currentUser.api_token=f),invalid:d(p).api_token.$error,onInput:b[1]||(b[1]=f=>d(p).api_token.$touch())},null,8,["modelValue","invalid"])]),_:1},8,["label","error"]),t("div",Me,[e(C,{class:"mt-6",loading:d(h),type:"submit"},{left:c(f=>[e(F,{name:"SaveIcon",class:Y(f.class)},null,8,["class"])]),default:c(()=>[S(" "+u(a.$t("general.save")),1)]),_:1},8,["loading"]),t("a",{href:`${d(m).config.base_url}/auth/customer/register`,class:"mt-6 block",target:"_blank"},[e(C,{variant:"primary-outline",type:"button"},{default:c(()=>[S(" Sign up & Get Token ")]),_:1})],8,Ge)])],32)])]),_:1}))]),_:1})}}};export{Le as default}; +import{v as P,k as v,r as o,o as n,c as r,t as u,K as y,b as t,a as e,l as d,Z as z,m as B,w as c,av as J,G as K,f as k,j as Z,N as Q,O as W,q as X,J as Y,p as S,g as j,h as ee,I as te}from"./main-pPEsZPea.js";const ae={key:0,class:"absolute mt-5 px-6 w-full flex justify-end"},se={key:0,class:"bg-white bg-opacity-75 text-xs px-3 py-1 font-semibold tracking-wide rounded"},ne={key:1,class:"ml-2 bg-white bg-opacity-75 text-xs px-3 py-1 font-semibold tracking-wide rounded"},le={key:0},oe={key:1},re=["src"],ie={class:"px-6 py-5 flex flex-col bg-gray-50 flex-1 justify-between"},de={class:"text-lg sm:text-2xl font-medium whitespace-nowrap truncate text-primary-500"},ce={key:0,class:"flex items-center mt-2"},ue=["src"],me=t("span",null,"by",-1),_e={class:"ml-2 text-base font-semibold truncate"},he={class:"flex justify-between mt-4 flex-col space-y-2 sm:space-y-0 sm:flex-row"},pe={class:"text-xl md:text-2xl font-semibold whitespace-nowrap text-primary-500"},fe={__name:"ModuleCard",props:{data:{type:Object,default:null,required:!0}},setup(s){P.useI18n();const l=s;let m=v(()=>parseInt(l.data.average_rating));return(i,_)=>{const h=o("base-text"),g=o("BaseRating");return n(),r("div",{class:"relative shadow-md border-2 border-gray-200 border-opacity-60 rounded-lg cursor-pointer overflow-hidden h-100",onClick:_[0]||(_[0]=w=>i.$router.push(`/admin/modules/${s.data.slug}`))},[s.data.purchased?(n(),r("div",ae,[s.data.purchased?(n(),r("label",se,u(i.$t("modules.purchased")),1)):y("",!0),s.data.installed?(n(),r("label",ne,[s.data.update_available?(n(),r("span",le,u(i.$t("modules.update_available")),1)):(n(),r("span",oe,u(i.$t("modules.installed")),1))])):y("",!0)])):y("",!0),t("img",{class:"lg:h-64 md:h-48 w-full object-cover object-center",src:s.data.cover,alt:"cover"},null,8,re),t("div",ie,[t("span",de,u(s.data.name),1),s.data.author_avatar?(n(),r("div",ce,[t("img",{class:"hidden h-10 w-10 rounded-full sm:inline-block mr-2",src:s.data.author_avatar?s.data.author_avatar:"http://localhost:3000$images/default-avatar.jpg",alt:""},null,8,ue),me,t("span",_e,u(s.data.author_name),1)])):y("",!0),e(h,{text:s.data.short_description,class:"pt-4 text-gray-500 h-16 line-clamp-2",length:110},null,8,["text"]),t("div",he,[t("div",null,[e(g,{rating:d(m)},null,8,["rating"])]),t("div",pe," $ "+u(s.data.monthly_price?s.data.monthly_price/100:s.data.yearly_price/100),1)])])])}}},ge={},ve={class:"shadow-md border-2 border-gray-200 border-opacity-60 rounded-lg cursor-pointer overflow-hidden h-100"},be={class:"px-6 py-5 flex flex-col bg-gray-50 flex-1 justify-between"},ye={class:"flex items-center mt-2"},xe={class:"flex justify-between mt-4 flex-col space-y-2 sm:space-y-0 sm:flex-row"};function ke(s,l){const m=o("BaseContentPlaceholdersBox"),i=o("BaseContentPlaceholdersText"),_=o("BaseContentPlaceholders");return n(),B(_,null,{default:c(()=>[t("div",ve,[e(m,{class:"h-48 lg:h-64 md:h-48 w-full",rounded:""}),t("div",be,[e(i,{class:"w-32 h-8",lines:1,rounded:""}),t("div",ye,[e(m,{class:"h-10 w-10 rounded-full sm:inline-block mr-2"}),t("div",null,[e(i,{class:"w-32 h-8 ml-2",lines:1,rounded:""})])]),e(i,{class:"pt-4 w-full h-16",lines:1,rounded:""}),t("div",xe,[e(i,{class:"w-32 h-8",lines:1,rounded:""}),e(i,{class:"w-32 h-8",lines:1,rounded:""})])])])]),_:1})}const $=z(ge,[["render",ke]]),$e={key:0},Be={key:0,class:"grid mt-6 w-full grid-cols-1 items-start gap-6 lg:grid-cols-2 xl:grid-cols-3"},we={key:1},Ie={key:0,class:"grid mt-6 w-full grid-cols-1 items-start gap-6 lg:grid-cols-2 xl:grid-cols-3"},Te={key:1,class:"mt-24"},Ce={class:"flex items-center justify-center text-gray-500"},Se={class:"text-gray-900 text-lg font-medium"},je={class:"mt-1 text-sm text-gray-500"},Pe={class:"grid lg:grid-cols-2 mt-6"},Me={class:"flex space-x-2"},Ge=["href"],Le={__name:"Index",setup(s){const l=J(),m=K(),i=k(""),{t:_}=P.useI18n();let h=k(!1),g=k(!1);const w=v(()=>({api_token:{required:j.withMessage(_("validation.required"),ee),minLength:j.withMessage(_("validation.name_min_length",{count:3}),te(3))}})),M=v(()=>l.apiToken?(G(),!0):!1),p=Z(w,v(()=>l.currentUser)),x=v(()=>i.value==="INSTALLED"?l.modules.filter(a=>a.installed):l.modules);async function G(){g.value=!0,await l.fetchModules().then(()=>{g.value=!1})}async function V(){if(p.value.$touch(),p.value.$invalid)return!0;h.value=!0,l.checkApiToken(l.currentUser.api_token).then(a=>{if(a.data.success){L();return}h.value=!1})}async function L(){try{await m.updateGlobalSettings({data:{settings:{api_token:l.currentUser.api_token}},message:"settings.preferences.updated_message"}).then(a=>{if(a.data.success){l.apiToken=l.currentUser.api_token;return}}),h.value=!1}catch(a){h.value=!1,console.error(a);return}}function N(a){i.value=a.filter}return(a,b)=>{const I=o("BaseBreadcrumbItem"),U=o("BaseBreadcrumb"),q=o("BasePageHeader"),T=o("BaseTab"),A=o("BaseTabGroup"),D=o("BaseInput"),E=o("BaseInputGroup"),F=o("BaseIcon"),C=o("BaseButton"),R=o("BaseCard"),H=o("BasePage");return n(),B(H,null,{default:c(()=>[e(q,{title:a.$t("modules.title")},{default:c(()=>[e(U,null,{default:c(()=>[e(I,{title:a.$t("general.home"),to:"dashboard"},null,8,["title"]),e(I,{title:a.$t("modules.module",2),to:"#",active:""},null,8,["title"])]),_:1})]),_:1},8,["title"]),M.value&&d(l).modules?(n(),r("div",$e,[e(A,{class:"-mb-5",onChange:N},{default:c(()=>[e(T,{title:a.$t("general.all"),filter:""},null,8,["title"]),e(T,{title:a.$t("modules.installed"),filter:"INSTALLED"},null,8,["title"])]),_:1}),d(g)?(n(),r("div",Be,[e($),e($),e($)])):(n(),r("div",we,[x.value&&x.value.length?(n(),r("div",Ie,[(n(!0),r(Q,null,W(x.value,(f,O)=>(n(),r("div",{key:O},[e(fe,{data:f},null,8,["data"])]))),128))])):(n(),r("div",Te,[t("label",Ce,u(a.$t("modules.no_modules_installed")),1)]))]))])):(n(),B(R,{key:1,class:"mt-6"},{default:c(()=>[t("h6",Se,u(a.$t("modules.connect_installation")),1),t("p",je,u(a.$t("modules.api_token_description",{url:d(m).config.base_url.replace(/^http:\/\//,"")})),1),t("div",Pe,[t("form",{action:"",class:"mt-6",onSubmit:X(V,["prevent"])},[e(E,{label:a.$t("modules.api_token"),required:"",error:d(p).api_token.$error&&d(p).api_token.$errors[0].$message},{default:c(()=>[e(D,{modelValue:d(l).currentUser.api_token,"onUpdate:modelValue":b[0]||(b[0]=f=>d(l).currentUser.api_token=f),invalid:d(p).api_token.$error,onInput:b[1]||(b[1]=f=>d(p).api_token.$touch())},null,8,["modelValue","invalid"])]),_:1},8,["label","error"]),t("div",Me,[e(C,{class:"mt-6",loading:d(h),type:"submit"},{left:c(f=>[e(F,{name:"SaveIcon",class:Y(f.class)},null,8,["class"])]),default:c(()=>[S(" "+u(a.$t("general.save")),1)]),_:1},8,["loading"]),t("a",{href:`${d(m).config.base_url}/auth/customer/register`,class:"mt-6 block",target:"_blank"},[e(C,{variant:"primary-outline",type:"button"},{default:c(()=>[S(" Sign up & Get Token ")]),_:1})],8,Ge)])],32)])]),_:1}))]),_:1})}}};export{Le as default}; diff --git a/public/build/assets/Index-Qw08FSdl.js b/public/build/assets/Index-hyQmpke_.js similarity index 97% rename from public/build/assets/Index-Qw08FSdl.js rename to public/build/assets/Index-hyQmpke_.js index b1114219..345f3f72 100644 --- a/public/build/assets/Index-Qw08FSdl.js +++ b/public/build/assets/Index-hyQmpke_.js @@ -1 +1 @@ -import{E as se,a7 as le,a8 as oe,M as ne,f as v,v as re,H as ue,k as C,a9 as ce,aa as me,ab as ie,r as o,o as p,m as _,w as t,a,b as i,ac as D,ad as w,l as n,J as b,p as h,t as d,Q as B,K as T,a6 as de}from"./main-B9dpPbRR.js";import{_ as pe}from"./CustomerIndexDropdown-ywCQasB6.js";import{_ as _e}from"./AstronautIcon-TMugKfCR.js";const fe={class:"flex items-center justify-end space-x-5"},ye={class:"relative table-container"},he={class:"relative flex items-center justify-end h-5"},Be={class:"flex text-sm font-medium cursor-pointer select-none text-primary-400"},ve={class:"absolute z-10 items-center left-6 top-2.5 select-none"},Ce={class:"relative block"},Ie={__name:"Index",setup(be){se();const O=le(),u=oe(),g=ne();let k=v(null),f=v(!1),x=v(!0);const{t:m}=re.useI18n();let r=ue({display_name:"",contact_name:"",phone:""});const F=C(()=>!u.totalCustomers&&!x.value),A=C({get:()=>u.selectedCustomers,set:s=>u.selectCustomer(s)}),M=C({get:()=>u.selectAllField,set:s=>u.setSelectAllState(s)}),Y=C(()=>[{key:"status",thClass:"extra w-10 pr-0",sortable:!1,tdClass:"font-medium text-gray-900 pr-0"},{key:"name",label:m("customers.name"),thClass:"extra",tdClass:"font-medium text-gray-900"},{key:"phone",label:m("customers.phone")},{key:"due_amount",label:m("customers.amount_due")},{key:"created_at",label:m("items.added_on")},{key:"actions",tdClass:"text-right text-sm font-medium pl-0",thClass:"pl-0",sortable:!1}]);ce(r,()=>{j()},{debounce:500}),me(()=>{u.selectAllField&&u.selectAllCustomers()});function I(){k.value.refresh()}function j(){I()}function z(){return g.hasAbilities([B.DELETE_CUSTOMER,B.EDIT_CUSTOMER,B.VIEW_CUSTOMER])}async function H({page:s,filter:l,sort:y}){let V={display_name:r.display_name,contact_name:r.contact_name,phone:r.phone,orderByField:y.fieldName||"created_at",orderBy:y.order||"desc",page:s};x.value=!0;let c=await u.fetchCustomers(V);return x.value=!1,{data:c.data.data,pagination:{totalPages:c.data.meta.last_page,currentPage:s,totalCount:c.data.meta.total,limit:10}}}function U(){r.display_name="",r.contact_name="",r.phone=""}function L(){f.value&&U(),f.value=!f.value}let P=v(new Date);P.value=ie(P).format("YYYY-MM-DD");function W(){O.openDialog({title:m("general.are_you_sure"),message:m("customers.confirm_delete",2),yesLabel:m("general.ok"),noLabel:m("general.cancel"),variant:"danger",hideNoButton:!1,size:"lg"}).then(s=>{s&&u.deleteMultipleCustomers().then(l=>{l.data&&I()})})}return(s,l)=>{const y=o("BaseBreadcrumbItem"),V=o("BaseBreadcrumb"),c=o("BaseIcon"),$=o("BaseButton"),G=o("BasePageHeader"),S=o("BaseInput"),E=o("BaseInputGroup"),J=o("BaseFilterWrapper"),K=o("BaseEmptyPlaceholder"),Q=o("BaseDropdownItem"),X=o("BaseDropdown"),R=o("BaseCheckbox"),N=o("BaseText"),q=o("router-link"),Z=o("BaseFormatMoney"),ee=o("BaseTable"),te=o("BasePage");return p(),_(te,null,{default:t(()=>[a(G,{title:s.$t("customers.title")},{actions:t(()=>[i("div",fe,[D(a($,{variant:"primary-outline",onClick:L},{right:t(e=>[n(f)?(p(),_(c,{key:1,name:"XIcon",class:b(e.class)},null,8,["class"])):(p(),_(c,{key:0,name:"FilterIcon",class:b(e.class)},null,8,["class"]))]),default:t(()=>[h(d(s.$t("general.filter"))+" ",1)]),_:1},512),[[w,n(u).totalCustomers]]),n(g).hasAbilities(n(B).CREATE_CUSTOMER)?(p(),_($,{key:0,onClick:l[0]||(l[0]=e=>s.$router.push("customers/create"))},{left:t(e=>[a(c,{name:"PlusIcon",class:b(e.class)},null,8,["class"])]),default:t(()=>[h(" "+d(s.$t("customers.new_customer")),1)]),_:1})):T("",!0)])]),default:t(()=>[a(V,null,{default:t(()=>[a(y,{title:s.$t("general.home"),to:"dashboard"},null,8,["title"]),a(y,{title:s.$t("customers.customer",2),to:"#",active:""},null,8,["title"])]),_:1})]),_:1},8,["title"]),a(J,{show:n(f),class:"mt-5",onClear:U},{default:t(()=>[a(E,{label:s.$t("customers.display_name"),class:"text-left"},{default:t(()=>[a(S,{modelValue:n(r).display_name,"onUpdate:modelValue":l[1]||(l[1]=e=>n(r).display_name=e),type:"text",name:"name",autocomplete:"off"},null,8,["modelValue"])]),_:1},8,["label"]),a(E,{label:s.$t("customers.contact_name"),class:"text-left"},{default:t(()=>[a(S,{modelValue:n(r).contact_name,"onUpdate:modelValue":l[2]||(l[2]=e=>n(r).contact_name=e),type:"text",name:"address_name",autocomplete:"off"},null,8,["modelValue"])]),_:1},8,["label"]),a(E,{label:s.$t("customers.phone"),class:"text-left"},{default:t(()=>[a(S,{modelValue:n(r).phone,"onUpdate:modelValue":l[3]||(l[3]=e=>n(r).phone=e),type:"text",name:"phone",autocomplete:"off"},null,8,["modelValue"])]),_:1},8,["label"])]),_:1},8,["show"]),D(a(K,{title:s.$t("customers.no_customers"),description:s.$t("customers.list_of_customers")},{actions:t(()=>[n(g).hasAbilities(n(B).CREATE_CUSTOMER)?(p(),_($,{key:0,variant:"primary-outline",onClick:l[4]||(l[4]=e=>s.$router.push("/admin/customers/create"))},{left:t(e=>[a(c,{name:"PlusIcon",class:b(e.class)},null,8,["class"])]),default:t(()=>[h(" "+d(s.$t("customers.add_new_customer")),1)]),_:1})):T("",!0)]),default:t(()=>[a(_e,{class:"mt-5 mb-4"})]),_:1},8,["title","description"]),[[w,F.value]]),D(i("div",ye,[i("div",he,[n(u).selectedCustomers.length?(p(),_(X,{key:0},{activator:t(()=>[i("span",Be,[h(d(s.$t("general.actions"))+" ",1),a(c,{name:"ChevronDownIcon"})])]),default:t(()=>[a(Q,{onClick:W},{default:t(()=>[a(c,{name:"TrashIcon",class:"mr-3 text-gray-600"}),h(" "+d(s.$t("general.delete")),1)]),_:1})]),_:1})):T("",!0)]),a(ee,{ref_key:"tableComponent",ref:k,class:"mt-3",data:H,columns:Y.value},de({header:t(()=>[i("div",ve,[a(R,{modelValue:M.value,"onUpdate:modelValue":l[5]||(l[5]=e=>M.value=e),variant:"primary",onChange:n(u).selectAllCustomers},null,8,["modelValue","onChange"])])]),"cell-status":t(({row:e})=>[i("div",Ce,[a(R,{id:e.data.id,modelValue:A.value,"onUpdate:modelValue":l[6]||(l[6]=ae=>A.value=ae),value:e.data.id,variant:"primary"},null,8,["id","modelValue","value"])])]),"cell-name":t(({row:e})=>[a(q,{to:{path:`customers/${e.data.id}/view`}},{default:t(()=>[a(N,{text:e.data.name,length:30,tag:"span",class:"font-medium text-primary-500 flex flex-col"},null,8,["text"]),a(N,{text:e.data.contact_name?e.data.contact_name:"",length:30,tag:"span",class:"text-xs text-gray-400"},null,8,["text"])]),_:2},1032,["to"])]),"cell-phone":t(({row:e})=>[i("span",null,d(e.data.phone?e.data.phone:"-"),1)]),"cell-due_amount":t(({row:e})=>[a(Z,{amount:e.data.due_amount||0,currency:e.data.currency},null,8,["amount","currency"])]),"cell-created_at":t(({row:e})=>[i("span",null,d(e.data.formatted_created_at),1)]),_:2},[z()?{name:"cell-actions",fn:t(({row:e})=>[a(pe,{row:e.data,table:n(k),"load-data":I},null,8,["row","table"])]),key:"0"}:void 0]),1032,["columns"])],512),[[w,!F.value]])]),_:1})}}};export{Ie as default}; +import{E as se,a7 as le,a8 as oe,M as ne,f as v,v as re,H as ue,k as C,a9 as ce,aa as me,ab as ie,r as o,o as p,m as _,w as t,a,b as i,ac as D,ad as w,l as n,J as b,p as h,t as d,Q as B,K as T,a6 as de}from"./main-pPEsZPea.js";import{_ as pe}from"./CustomerIndexDropdown-MF-wjT1X.js";import{_ as _e}from"./AstronautIcon-8yxe-HhR.js";const fe={class:"flex items-center justify-end space-x-5"},ye={class:"relative table-container"},he={class:"relative flex items-center justify-end h-5"},Be={class:"flex text-sm font-medium cursor-pointer select-none text-primary-400"},ve={class:"absolute z-10 items-center left-6 top-2.5 select-none"},Ce={class:"relative block"},Ie={__name:"Index",setup(be){se();const O=le(),u=oe(),g=ne();let k=v(null),f=v(!1),x=v(!0);const{t:m}=re.useI18n();let r=ue({display_name:"",contact_name:"",phone:""});const F=C(()=>!u.totalCustomers&&!x.value),A=C({get:()=>u.selectedCustomers,set:s=>u.selectCustomer(s)}),M=C({get:()=>u.selectAllField,set:s=>u.setSelectAllState(s)}),Y=C(()=>[{key:"status",thClass:"extra w-10 pr-0",sortable:!1,tdClass:"font-medium text-gray-900 pr-0"},{key:"name",label:m("customers.name"),thClass:"extra",tdClass:"font-medium text-gray-900"},{key:"phone",label:m("customers.phone")},{key:"due_amount",label:m("customers.amount_due")},{key:"created_at",label:m("items.added_on")},{key:"actions",tdClass:"text-right text-sm font-medium pl-0",thClass:"pl-0",sortable:!1}]);ce(r,()=>{j()},{debounce:500}),me(()=>{u.selectAllField&&u.selectAllCustomers()});function I(){k.value.refresh()}function j(){I()}function z(){return g.hasAbilities([B.DELETE_CUSTOMER,B.EDIT_CUSTOMER,B.VIEW_CUSTOMER])}async function H({page:s,filter:l,sort:y}){let V={display_name:r.display_name,contact_name:r.contact_name,phone:r.phone,orderByField:y.fieldName||"created_at",orderBy:y.order||"desc",page:s};x.value=!0;let c=await u.fetchCustomers(V);return x.value=!1,{data:c.data.data,pagination:{totalPages:c.data.meta.last_page,currentPage:s,totalCount:c.data.meta.total,limit:10}}}function U(){r.display_name="",r.contact_name="",r.phone=""}function L(){f.value&&U(),f.value=!f.value}let P=v(new Date);P.value=ie(P).format("YYYY-MM-DD");function W(){O.openDialog({title:m("general.are_you_sure"),message:m("customers.confirm_delete",2),yesLabel:m("general.ok"),noLabel:m("general.cancel"),variant:"danger",hideNoButton:!1,size:"lg"}).then(s=>{s&&u.deleteMultipleCustomers().then(l=>{l.data&&I()})})}return(s,l)=>{const y=o("BaseBreadcrumbItem"),V=o("BaseBreadcrumb"),c=o("BaseIcon"),$=o("BaseButton"),G=o("BasePageHeader"),S=o("BaseInput"),E=o("BaseInputGroup"),J=o("BaseFilterWrapper"),K=o("BaseEmptyPlaceholder"),Q=o("BaseDropdownItem"),X=o("BaseDropdown"),R=o("BaseCheckbox"),N=o("BaseText"),q=o("router-link"),Z=o("BaseFormatMoney"),ee=o("BaseTable"),te=o("BasePage");return p(),_(te,null,{default:t(()=>[a(G,{title:s.$t("customers.title")},{actions:t(()=>[i("div",fe,[D(a($,{variant:"primary-outline",onClick:L},{right:t(e=>[n(f)?(p(),_(c,{key:1,name:"XIcon",class:b(e.class)},null,8,["class"])):(p(),_(c,{key:0,name:"FilterIcon",class:b(e.class)},null,8,["class"]))]),default:t(()=>[h(d(s.$t("general.filter"))+" ",1)]),_:1},512),[[w,n(u).totalCustomers]]),n(g).hasAbilities(n(B).CREATE_CUSTOMER)?(p(),_($,{key:0,onClick:l[0]||(l[0]=e=>s.$router.push("customers/create"))},{left:t(e=>[a(c,{name:"PlusIcon",class:b(e.class)},null,8,["class"])]),default:t(()=>[h(" "+d(s.$t("customers.new_customer")),1)]),_:1})):T("",!0)])]),default:t(()=>[a(V,null,{default:t(()=>[a(y,{title:s.$t("general.home"),to:"dashboard"},null,8,["title"]),a(y,{title:s.$t("customers.customer",2),to:"#",active:""},null,8,["title"])]),_:1})]),_:1},8,["title"]),a(J,{show:n(f),class:"mt-5",onClear:U},{default:t(()=>[a(E,{label:s.$t("customers.display_name"),class:"text-left"},{default:t(()=>[a(S,{modelValue:n(r).display_name,"onUpdate:modelValue":l[1]||(l[1]=e=>n(r).display_name=e),type:"text",name:"name",autocomplete:"off"},null,8,["modelValue"])]),_:1},8,["label"]),a(E,{label:s.$t("customers.contact_name"),class:"text-left"},{default:t(()=>[a(S,{modelValue:n(r).contact_name,"onUpdate:modelValue":l[2]||(l[2]=e=>n(r).contact_name=e),type:"text",name:"address_name",autocomplete:"off"},null,8,["modelValue"])]),_:1},8,["label"]),a(E,{label:s.$t("customers.phone"),class:"text-left"},{default:t(()=>[a(S,{modelValue:n(r).phone,"onUpdate:modelValue":l[3]||(l[3]=e=>n(r).phone=e),type:"text",name:"phone",autocomplete:"off"},null,8,["modelValue"])]),_:1},8,["label"])]),_:1},8,["show"]),D(a(K,{title:s.$t("customers.no_customers"),description:s.$t("customers.list_of_customers")},{actions:t(()=>[n(g).hasAbilities(n(B).CREATE_CUSTOMER)?(p(),_($,{key:0,variant:"primary-outline",onClick:l[4]||(l[4]=e=>s.$router.push("/admin/customers/create"))},{left:t(e=>[a(c,{name:"PlusIcon",class:b(e.class)},null,8,["class"])]),default:t(()=>[h(" "+d(s.$t("customers.add_new_customer")),1)]),_:1})):T("",!0)]),default:t(()=>[a(_e,{class:"mt-5 mb-4"})]),_:1},8,["title","description"]),[[w,F.value]]),D(i("div",ye,[i("div",he,[n(u).selectedCustomers.length?(p(),_(X,{key:0},{activator:t(()=>[i("span",Be,[h(d(s.$t("general.actions"))+" ",1),a(c,{name:"ChevronDownIcon"})])]),default:t(()=>[a(Q,{onClick:W},{default:t(()=>[a(c,{name:"TrashIcon",class:"mr-3 text-gray-600"}),h(" "+d(s.$t("general.delete")),1)]),_:1})]),_:1})):T("",!0)]),a(ee,{ref_key:"tableComponent",ref:k,class:"mt-3",data:H,columns:Y.value},de({header:t(()=>[i("div",ve,[a(R,{modelValue:M.value,"onUpdate:modelValue":l[5]||(l[5]=e=>M.value=e),variant:"primary",onChange:n(u).selectAllCustomers},null,8,["modelValue","onChange"])])]),"cell-status":t(({row:e})=>[i("div",Ce,[a(R,{id:e.data.id,modelValue:A.value,"onUpdate:modelValue":l[6]||(l[6]=ae=>A.value=ae),value:e.data.id,variant:"primary"},null,8,["id","modelValue","value"])])]),"cell-name":t(({row:e})=>[a(q,{to:{path:`customers/${e.data.id}/view`}},{default:t(()=>[a(N,{text:e.data.name,length:30,tag:"span",class:"font-medium text-primary-500 flex flex-col"},null,8,["text"]),a(N,{text:e.data.contact_name?e.data.contact_name:"",length:30,tag:"span",class:"text-xs text-gray-400"},null,8,["text"])]),_:2},1032,["to"])]),"cell-phone":t(({row:e})=>[i("span",null,d(e.data.phone?e.data.phone:"-"),1)]),"cell-due_amount":t(({row:e})=>[a(Z,{amount:e.data.due_amount||0,currency:e.data.currency},null,8,["amount","currency"])]),"cell-created_at":t(({row:e})=>[i("span",null,d(e.data.formatted_created_at),1)]),_:2},[z()?{name:"cell-actions",fn:t(({row:e})=>[a(pe,{row:e.data,table:n(k),"load-data":I},null,8,["row","table"])]),key:"0"}:void 0]),1032,["columns"])],512),[[w,!F.value]])]),_:1})}}};export{Ie as default}; diff --git a/public/build/assets/Index-gDg24jVy.js b/public/build/assets/Index-jpDrpi-w.js similarity index 95% rename from public/build/assets/Index-gDg24jVy.js rename to public/build/assets/Index-jpDrpi-w.js index 5c408e39..2af7cf86 100644 --- a/public/build/assets/Index-gDg24jVy.js +++ b/public/build/assets/Index-jpDrpi-w.js @@ -1 +1 @@ -import{v as X,a5 as q,L as Q,f as b,H as Y,k as I,a9 as Z,r as s,o as B,m as y,w as a,a as e,ac as k,ad as D,l as _,J as x,p as c,t as i,K as ee,b as E}from"./main-B9dpPbRR.js";import{u as te}from"./invoice-X3Pf-vKp.js";import ae from"./BaseTable-ZLDzRGeZ.js";import{u as oe}from"./global-1F4OAoew.js";import{_ as se}from"./MoonwalkerIcon-049DwnAE.js";import"./auth-6FPSPboo.js";const ne=E("div",{class:"hidden w-8 h-0 mx-4 border border-gray-400 border-solid xl:block",style:{"margin-top":"1.5rem"}},null,-1),le={class:"relative table-container"},pe={__name:"Index",setup(re){const{t:u}=X.useI18n();q("utils"),Q();const V=b(null);let g=b(!0),d=b(!1);const P=b(["DRAFT","DUE","SENT","VIEWED","COMPLETED"]),o=Y({status:"",from_date:"",to_date:"",invoice_number:""}),p=te(),h=oe();I(()=>h.currency);const H=I(()=>[{key:"invoice_date",label:u("invoices.date"),thClass:"extra",tdClass:"font-medium text-gray-900"},{key:"invoice_number",label:u("invoices.number")},{key:"status",label:u("invoices.status")},{key:"paid_status",label:u("invoices.paid_status")},{key:"due_amount",label:u("dashboard.recent_invoices_card.amount_due")},{key:"actions",thClass:"text-right",tdClass:"text-right text-sm font-medium",sortable:!1}]),$=I(()=>!p.totalInvoices&&!g.value);Z(o,()=>{T()},{debounce:500});function N(){V.value.refresh()}function T(){N()}function S(){o.status="",o.from_date="",o.to_date="",o.invoice_number=""}function U(){d.value&&S(),d.value=!d.value}async function z({page:n,sort:l}){let v={status:o.status,invoice_number:o.invoice_number,from_date:o.from_date,to_date:o.to_date,orderByField:l.fieldName||"created_at",orderBy:l.order||"desc",page:n};g.value=!0;let m=await p.fetchInvoices(v,h.companySlug);return g.value=!1,{data:m.data.data,pagination:{totalPages:m.data.meta.last_page,currentPage:n,totalCount:m.data.meta.total,limit:10}}}return(n,l)=>{const v=s("BaseBreadcrumbItem"),m=s("BaseBreadcrumb"),r=s("BaseIcon"),G=s("BaseButton"),M=s("BasePageHeader"),W=s("BaseSelectInput"),f=s("BaseInputGroup"),j=s("BaseInput"),w=s("BaseDatePicker"),L=s("BaseFilterWrapper"),R=s("BaseEmptyPlaceholder"),C=s("router-link"),A=s("BaseFormatMoney"),F=s("BaseInvoiceStatusBadge"),J=s("BaseDropdownItem"),K=s("BaseDropdown"),O=s("BasePage");return B(),y(O,null,{default:a(()=>[e(M,{title:n.$t("invoices.title")},{actions:a(()=>[k(e(G,{variant:"primary-outline",onClick:U},{right:a(t=>[_(d)?(B(),y(r,{key:1,name:"XIcon",class:x(t.class)},null,8,["class"])):(B(),y(r,{key:0,name:"FilterIcon",class:x(t.class)},null,8,["class"]))]),default:a(()=>[c(i(n.$t("general.filter"))+" ",1)]),_:1},512),[[D,_(p).totalInvoices]])]),default:a(()=>[e(m,null,{default:a(()=>[e(v,{title:n.$t("general.home"),to:`/${_(h).companySlug}/customer/dashboard`},null,8,["title","to"]),e(v,{title:n.$t("invoices.invoice",2),to:"#",active:""},null,8,["title"])]),_:1})]),_:1},8,["title"]),k(e(L,{onClear:S},{default:a(()=>[e(f,{label:n.$t("invoices.status"),class:"px-3"},{default:a(()=>[e(W,{modelValue:o.status,"onUpdate:modelValue":l[0]||(l[0]=t=>o.status=t),options:P.value,searchable:"","allow-empty":!1,placeholder:n.$t("general.select_a_status")},null,8,["modelValue","options","placeholder"])]),_:1},8,["label"]),e(f,{label:n.$t("invoices.invoice_number"),color:"black-light",class:"px-3 mt-2"},{default:a(()=>[e(j,{modelValue:o.invoice_number,"onUpdate:modelValue":l[1]||(l[1]=t=>o.invoice_number=t)},{default:a(()=>[e(r,{name:"DotsHorizontalIcon",class:"h-5 text-gray-500"}),e(r,{name:"HashtagIcon",class:"h-5 ml-3 text-gray-600"})]),_:1},8,["modelValue"])]),_:1},8,["label"]),e(f,{label:n.$t("general.from"),class:"px-3"},{default:a(()=>[e(w,{modelValue:o.from_date,"onUpdate:modelValue":l[2]||(l[2]=t=>o.from_date=t),"calendar-button":!0,"calendar-button-icon":"calendar"},null,8,["modelValue"])]),_:1},8,["label"]),ne,e(f,{label:n.$t("general.to"),class:"px-3"},{default:a(()=>[e(w,{modelValue:o.to_date,"onUpdate:modelValue":l[3]||(l[3]=t=>o.to_date=t),"calendar-button":!0,"calendar-button-icon":"calendar"},null,8,["modelValue"])]),_:1},8,["label"])]),_:1},512),[[D,_(d)]]),$.value?(B(),y(R,{key:0,title:n.$t("invoices.no_invoices"),description:n.$t("invoices.list_of_invoices")},{default:a(()=>[e(se,{class:"mt-5 mb-4"})]),_:1},8,["title","description"])):ee("",!0),k(E("div",le,[e(ae,{ref_key:"table",ref:V,data:z,columns:H.value,"placeholder-count":_(p).totalInvoices>=20?10:5,class:"mt-10"},{"cell-invoice_date":a(({row:t})=>[c(i(t.data.formatted_invoice_date),1)]),"cell-invoice_number":a(({row:t})=>[e(C,{to:{path:`invoices/${t.data.id}/view`},class:"font-medium text-primary-500"},{default:a(()=>[c(i(t.data.invoice_number),1)]),_:2},1032,["to"])]),"cell-due_amount":a(({row:t})=>[e(A,{amount:t.data.total,currency:t.data.customer.currency},null,8,["amount","currency"])]),"cell-status":a(({row:t})=>[e(F,{status:t.data.status,class:"px-3 py-1"},{default:a(()=>[c(i(t.data.status),1)]),_:2},1032,["status"])]),"cell-paid_status":a(({row:t})=>[e(F,{status:t.data.paid_status,class:"px-3 py-1"},{default:a(()=>[c(i(t.data.paid_status),1)]),_:2},1032,["status"])]),"cell-actions":a(({row:t})=>[e(K,null,{activator:a(()=>[e(r,{name:"DotsHorizontalIcon",class:"h-5 text-gray-500"})]),default:a(()=>[e(C,{to:`invoices/${t.data.id}/view`},{default:a(()=>[e(J,null,{default:a(()=>[e(r,{name:"EyeIcon",class:"h-5 mr-3 text-gray-600"}),c(" "+i(n.$t("general.view")),1)]),_:1})]),_:2},1032,["to"])]),_:2},1024)]),_:1},8,["columns","placeholder-count"])],512),[[D,!$.value]])]),_:1})}}};export{pe as default}; +import{v as X,a5 as q,L as Q,f as b,H as Y,k as I,a9 as Z,r as s,o as B,m as y,w as a,a as e,ac as k,ad as D,l as _,J as x,p as c,t as i,K as ee,b as E}from"./main-pPEsZPea.js";import{u as te}from"./invoice-raGfV3XT.js";import ae from"./BaseTable-ov5KJ7AA.js";import{u as oe}from"./global-s5lx2XuM.js";import{_ as se}from"./MoonwalkerIcon-n6wvqx0T.js";import"./auth-mYHkZCAB.js";const ne=E("div",{class:"hidden w-8 h-0 mx-4 border border-gray-400 border-solid xl:block",style:{"margin-top":"1.5rem"}},null,-1),le={class:"relative table-container"},pe={__name:"Index",setup(re){const{t:u}=X.useI18n();q("utils"),Q();const V=b(null);let g=b(!0),d=b(!1);const P=b(["DRAFT","DUE","SENT","VIEWED","COMPLETED"]),o=Y({status:"",from_date:"",to_date:"",invoice_number:""}),p=te(),h=oe();I(()=>h.currency);const H=I(()=>[{key:"invoice_date",label:u("invoices.date"),thClass:"extra",tdClass:"font-medium text-gray-900"},{key:"invoice_number",label:u("invoices.number")},{key:"status",label:u("invoices.status")},{key:"paid_status",label:u("invoices.paid_status")},{key:"due_amount",label:u("dashboard.recent_invoices_card.amount_due")},{key:"actions",thClass:"text-right",tdClass:"text-right text-sm font-medium",sortable:!1}]),$=I(()=>!p.totalInvoices&&!g.value);Z(o,()=>{T()},{debounce:500});function N(){V.value.refresh()}function T(){N()}function S(){o.status="",o.from_date="",o.to_date="",o.invoice_number=""}function U(){d.value&&S(),d.value=!d.value}async function z({page:n,sort:l}){let v={status:o.status,invoice_number:o.invoice_number,from_date:o.from_date,to_date:o.to_date,orderByField:l.fieldName||"created_at",orderBy:l.order||"desc",page:n};g.value=!0;let m=await p.fetchInvoices(v,h.companySlug);return g.value=!1,{data:m.data.data,pagination:{totalPages:m.data.meta.last_page,currentPage:n,totalCount:m.data.meta.total,limit:10}}}return(n,l)=>{const v=s("BaseBreadcrumbItem"),m=s("BaseBreadcrumb"),r=s("BaseIcon"),G=s("BaseButton"),M=s("BasePageHeader"),W=s("BaseSelectInput"),f=s("BaseInputGroup"),j=s("BaseInput"),w=s("BaseDatePicker"),L=s("BaseFilterWrapper"),R=s("BaseEmptyPlaceholder"),C=s("router-link"),A=s("BaseFormatMoney"),F=s("BaseInvoiceStatusBadge"),J=s("BaseDropdownItem"),K=s("BaseDropdown"),O=s("BasePage");return B(),y(O,null,{default:a(()=>[e(M,{title:n.$t("invoices.title")},{actions:a(()=>[k(e(G,{variant:"primary-outline",onClick:U},{right:a(t=>[_(d)?(B(),y(r,{key:1,name:"XIcon",class:x(t.class)},null,8,["class"])):(B(),y(r,{key:0,name:"FilterIcon",class:x(t.class)},null,8,["class"]))]),default:a(()=>[c(i(n.$t("general.filter"))+" ",1)]),_:1},512),[[D,_(p).totalInvoices]])]),default:a(()=>[e(m,null,{default:a(()=>[e(v,{title:n.$t("general.home"),to:`/${_(h).companySlug}/customer/dashboard`},null,8,["title","to"]),e(v,{title:n.$t("invoices.invoice",2),to:"#",active:""},null,8,["title"])]),_:1})]),_:1},8,["title"]),k(e(L,{onClear:S},{default:a(()=>[e(f,{label:n.$t("invoices.status"),class:"px-3"},{default:a(()=>[e(W,{modelValue:o.status,"onUpdate:modelValue":l[0]||(l[0]=t=>o.status=t),options:P.value,searchable:"","allow-empty":!1,placeholder:n.$t("general.select_a_status")},null,8,["modelValue","options","placeholder"])]),_:1},8,["label"]),e(f,{label:n.$t("invoices.invoice_number"),color:"black-light",class:"px-3 mt-2"},{default:a(()=>[e(j,{modelValue:o.invoice_number,"onUpdate:modelValue":l[1]||(l[1]=t=>o.invoice_number=t)},{default:a(()=>[e(r,{name:"DotsHorizontalIcon",class:"h-5 text-gray-500"}),e(r,{name:"HashtagIcon",class:"h-5 ml-3 text-gray-600"})]),_:1},8,["modelValue"])]),_:1},8,["label"]),e(f,{label:n.$t("general.from"),class:"px-3"},{default:a(()=>[e(w,{modelValue:o.from_date,"onUpdate:modelValue":l[2]||(l[2]=t=>o.from_date=t),"calendar-button":!0,"calendar-button-icon":"calendar"},null,8,["modelValue"])]),_:1},8,["label"]),ne,e(f,{label:n.$t("general.to"),class:"px-3"},{default:a(()=>[e(w,{modelValue:o.to_date,"onUpdate:modelValue":l[3]||(l[3]=t=>o.to_date=t),"calendar-button":!0,"calendar-button-icon":"calendar"},null,8,["modelValue"])]),_:1},8,["label"])]),_:1},512),[[D,_(d)]]),$.value?(B(),y(R,{key:0,title:n.$t("invoices.no_invoices"),description:n.$t("invoices.list_of_invoices")},{default:a(()=>[e(se,{class:"mt-5 mb-4"})]),_:1},8,["title","description"])):ee("",!0),k(E("div",le,[e(ae,{ref_key:"table",ref:V,data:z,columns:H.value,"placeholder-count":_(p).totalInvoices>=20?10:5,class:"mt-10"},{"cell-invoice_date":a(({row:t})=>[c(i(t.data.formatted_invoice_date),1)]),"cell-invoice_number":a(({row:t})=>[e(C,{to:{path:`invoices/${t.data.id}/view`},class:"font-medium text-primary-500"},{default:a(()=>[c(i(t.data.invoice_number),1)]),_:2},1032,["to"])]),"cell-due_amount":a(({row:t})=>[e(A,{amount:t.data.total,currency:t.data.customer.currency},null,8,["amount","currency"])]),"cell-status":a(({row:t})=>[e(F,{status:t.data.status,class:"px-3 py-1"},{default:a(()=>[c(i(t.data.status),1)]),_:2},1032,["status"])]),"cell-paid_status":a(({row:t})=>[e(F,{status:t.data.paid_status,class:"px-3 py-1"},{default:a(()=>[c(i(t.data.paid_status),1)]),_:2},1032,["status"])]),"cell-actions":a(({row:t})=>[e(K,null,{activator:a(()=>[e(r,{name:"DotsHorizontalIcon",class:"h-5 text-gray-500"})]),default:a(()=>[e(C,{to:`invoices/${t.data.id}/view`},{default:a(()=>[e(J,null,{default:a(()=>[e(r,{name:"EyeIcon",class:"h-5 mr-3 text-gray-600"}),c(" "+i(n.$t("general.view")),1)]),_:1})]),_:2},1032,["to"])]),_:2},1024)]),_:1},8,["columns","placeholder-count"])],512),[[D,!$.value]])]),_:1})}}};export{pe as default}; diff --git a/public/build/assets/Index-Pk8nTHrn.js b/public/build/assets/Index-jwRrXkMR.js similarity index 95% rename from public/build/assets/Index-Pk8nTHrn.js rename to public/build/assets/Index-jwRrXkMR.js index 94183413..e0a15bca 100644 --- a/public/build/assets/Index-Pk8nTHrn.js +++ b/public/build/assets/Index-jwRrXkMR.js @@ -1 +1 @@ -import{v as O,a5 as Q,L as Y,f as y,H as Z,k as I,a9 as ee,r as l,o as i,m as c,w as t,a as e,l as d,J as w,p as _,t as p,K as C,ac as S,ad as F,b as P}from"./main-B9dpPbRR.js";import te from"./BaseTable-ZLDzRGeZ.js";import{u as ae}from"./global-1F4OAoew.js";import{u as se}from"./estimate-kOpVdJXW.js";import{_ as le}from"./ObservatoryIcon-DjHmReOJ.js";import"./auth-6FPSPboo.js";const oe=P("div",{class:"hidden w-8 h-0 mx-4 border border-gray-400 border-solid xl:block",style:{"margin-top":"1.5rem"}},null,-1),ne={class:"relative table-container"},pe={__name:"Index",setup(re){const{t:f}=O.useI18n();Q("utils"),Y();const E=y(null);let m=y(!1),h=y(!0);const x=y(["DRAFT","SENT","VIEWED","EXPIRED","ACCEPTED","REJECTED"]),s=Z({status:"",from_date:"",to_date:"",estimate_number:""}),v=ae(),b=se(),H=I(()=>[{key:"estimate_date",label:f("estimates.date"),thClass:"extra",tdClass:"font-medium text-gray-900"},{key:"estimate_number",label:f("estimates.number",2)},{key:"status",label:f("estimates.status")},{key:"total",label:f("estimates.total")},{key:"actions",thClass:"text-right",tdClass:"text-right text-sm font-medium",sortable:!1}]),k=I(()=>!b.totalEstimates&&!h.value);I(()=>v.currency),ee(s,()=>{T()},{debounce:500});function N(){E.value.refresh()}function T(){N()}function D(){s.status="",s.from_date="",s.to_date="",s.estimate_number=""}function R(){m.value&&D(),m.value=!m.value}async function U({page:o,sort:n}){let B={status:s.status,estimate_number:s.estimate_number,from_date:s.from_date,to_date:s.to_date,orderByField:n.fieldName||"created_at",orderBy:n.order||"desc",page:o};h.value=!0;let u=await b.fetchEstimate(B,v.companySlug);return h.value=!1,{data:u.data.data,pagination:{totalPages:u.data.meta.last_page,currentPage:o,totalCount:u.data.meta.total,limit:10}}}return(o,n)=>{const B=l("BaseBreadcrumbItem"),u=l("BaseBreadcrumb"),r=l("BaseIcon"),z=l("BaseButton"),G=l("BasePageHeader"),W=l("BaseSelectInput"),g=l("BaseInputGroup"),j=l("BaseInput"),V=l("BaseDatePicker"),A=l("BaseFilterWrapper"),J=l("BaseEmptyPlaceholder"),$=l("router-link"),M=l("BaseEstimateStatusBadge"),X=l("BaseFormatMoney"),K=l("BaseDropdownItem"),L=l("BaseDropdown"),q=l("BasePage");return i(),c(q,null,{default:t(()=>[e(G,{title:o.$t("estimates.title")},{actions:t(()=>[d(b).totalEstimates?(i(),c(z,{key:0,variant:"primary-outline",onClick:R},{right:t(a=>[d(m)?(i(),c(r,{key:1,name:"XIcon",class:w(a.class)},null,8,["class"])):(i(),c(r,{key:0,name:"FilterIcon",class:w(a.class)},null,8,["class"]))]),default:t(()=>[_(p(o.$t("general.filter"))+" ",1)]),_:1})):C("",!0)]),default:t(()=>[e(u,null,{default:t(()=>[e(B,{title:o.$t("general.home"),to:`/${d(v).companySlug}/customer/dashboard`},null,8,["title","to"]),e(B,{title:o.$t("estimates.estimate",2),to:"#",active:""},null,8,["title"])]),_:1})]),_:1},8,["title"]),S(e(A,{onClear:D},{default:t(()=>[e(g,{label:o.$t("estimates.status"),class:"px-3"},{default:t(()=>[e(W,{modelValue:s.status,"onUpdate:modelValue":n[0]||(n[0]=a=>s.status=a),options:x.value,searchable:"","show-labels":!1,"allow-empty":!1,placeholder:o.$t("general.select_a_status")},null,8,["modelValue","options","placeholder"])]),_:1},8,["label"]),e(g,{label:o.$t("estimates.estimate_number"),color:"black-light",class:"px-3 mt-2"},{default:t(()=>[e(j,{modelValue:s.estimate_number,"onUpdate:modelValue":n[1]||(n[1]=a=>s.estimate_number=a)},{default:t(()=>[e(r,{name:"DotsHorizontalIcon",class:"h-5 text-gray-500"}),e(r,{name:"HashtagIcon",class:"h-5 mr-3 text-gray-600"})]),_:1},8,["modelValue"])]),_:1},8,["label"]),e(g,{label:o.$t("general.from"),class:"px-3"},{default:t(()=>[e(V,{modelValue:s.from_date,"onUpdate:modelValue":n[2]||(n[2]=a=>s.from_date=a),"calendar-button":!0,"calendar-button-icon":"calendar"},null,8,["modelValue"])]),_:1},8,["label"]),oe,e(g,{label:o.$t("general.to"),class:"px-3"},{default:t(()=>[e(V,{modelValue:s.to_date,"onUpdate:modelValue":n[3]||(n[3]=a=>s.to_date=a),"calendar-button":!0,"calendar-button-icon":"calendar"},null,8,["modelValue"])]),_:1},8,["label"])]),_:1},512),[[F,d(m)]]),k.value?(i(),c(J,{key:0,title:o.$t("estimates.no_estimates"),description:o.$t("estimates.list_of_estimates")},{default:t(()=>[e(le,{class:"mt-5 mb-4"})]),_:1},8,["title","description"])):C("",!0),S(P("div",ne,[e(te,{ref_key:"table",ref:E,data:U,columns:H.value,"placeholder-count":d(b).totalEstimates>=20?10:5,class:"mt-10"},{"cell-estimate_date":t(({row:a})=>[_(p(a.data.formatted_estimate_date),1)]),"cell-estimate_number":t(({row:a})=>[e($,{to:{path:`estimates/${a.data.id}/view`},class:"font-medium text-primary-500"},{default:t(()=>[_(p(a.data.estimate_number),1)]),_:2},1032,["to"])]),"cell-status":t(({row:a})=>[e(M,{status:a.data.status,class:"px-3 py-1"},{default:t(()=>[_(p(a.data.status),1)]),_:2},1032,["status"])]),"cell-total":t(({row:a})=>[e(X,{amount:a.data.total},null,8,["amount"])]),"cell-actions":t(({row:a})=>[e(L,null,{activator:t(()=>[e(r,{name:"DotsHorizontalIcon",class:"h-5 text-gray-500"})]),default:t(()=>[e($,{to:`estimates/${a.data.id}/view`},{default:t(()=>[e(K,null,{default:t(()=>[e(r,{name:"EyeIcon",class:"h-5 mr-3 text-gray-600"}),_(" "+p(o.$t("general.view")),1)]),_:1})]),_:2},1032,["to"])]),_:2},1024)]),_:1},8,["columns","placeholder-count"])],512),[[F,!k.value]])]),_:1})}}};export{pe as default}; +import{v as O,a5 as Q,L as Y,f as y,H as Z,k as I,a9 as ee,r as l,o as i,m as c,w as t,a as e,l as d,J as w,p as _,t as p,K as C,ac as S,ad as F,b as P}from"./main-pPEsZPea.js";import te from"./BaseTable-ov5KJ7AA.js";import{u as ae}from"./global-s5lx2XuM.js";import{u as se}from"./estimate-QHup-rch.js";import{_ as le}from"./ObservatoryIcon-XsLvGeaX.js";import"./auth-mYHkZCAB.js";const oe=P("div",{class:"hidden w-8 h-0 mx-4 border border-gray-400 border-solid xl:block",style:{"margin-top":"1.5rem"}},null,-1),ne={class:"relative table-container"},pe={__name:"Index",setup(re){const{t:f}=O.useI18n();Q("utils"),Y();const E=y(null);let m=y(!1),h=y(!0);const x=y(["DRAFT","SENT","VIEWED","EXPIRED","ACCEPTED","REJECTED"]),s=Z({status:"",from_date:"",to_date:"",estimate_number:""}),v=ae(),b=se(),H=I(()=>[{key:"estimate_date",label:f("estimates.date"),thClass:"extra",tdClass:"font-medium text-gray-900"},{key:"estimate_number",label:f("estimates.number",2)},{key:"status",label:f("estimates.status")},{key:"total",label:f("estimates.total")},{key:"actions",thClass:"text-right",tdClass:"text-right text-sm font-medium",sortable:!1}]),k=I(()=>!b.totalEstimates&&!h.value);I(()=>v.currency),ee(s,()=>{T()},{debounce:500});function N(){E.value.refresh()}function T(){N()}function D(){s.status="",s.from_date="",s.to_date="",s.estimate_number=""}function R(){m.value&&D(),m.value=!m.value}async function U({page:o,sort:n}){let B={status:s.status,estimate_number:s.estimate_number,from_date:s.from_date,to_date:s.to_date,orderByField:n.fieldName||"created_at",orderBy:n.order||"desc",page:o};h.value=!0;let u=await b.fetchEstimate(B,v.companySlug);return h.value=!1,{data:u.data.data,pagination:{totalPages:u.data.meta.last_page,currentPage:o,totalCount:u.data.meta.total,limit:10}}}return(o,n)=>{const B=l("BaseBreadcrumbItem"),u=l("BaseBreadcrumb"),r=l("BaseIcon"),z=l("BaseButton"),G=l("BasePageHeader"),W=l("BaseSelectInput"),g=l("BaseInputGroup"),j=l("BaseInput"),V=l("BaseDatePicker"),A=l("BaseFilterWrapper"),J=l("BaseEmptyPlaceholder"),$=l("router-link"),M=l("BaseEstimateStatusBadge"),X=l("BaseFormatMoney"),K=l("BaseDropdownItem"),L=l("BaseDropdown"),q=l("BasePage");return i(),c(q,null,{default:t(()=>[e(G,{title:o.$t("estimates.title")},{actions:t(()=>[d(b).totalEstimates?(i(),c(z,{key:0,variant:"primary-outline",onClick:R},{right:t(a=>[d(m)?(i(),c(r,{key:1,name:"XIcon",class:w(a.class)},null,8,["class"])):(i(),c(r,{key:0,name:"FilterIcon",class:w(a.class)},null,8,["class"]))]),default:t(()=>[_(p(o.$t("general.filter"))+" ",1)]),_:1})):C("",!0)]),default:t(()=>[e(u,null,{default:t(()=>[e(B,{title:o.$t("general.home"),to:`/${d(v).companySlug}/customer/dashboard`},null,8,["title","to"]),e(B,{title:o.$t("estimates.estimate",2),to:"#",active:""},null,8,["title"])]),_:1})]),_:1},8,["title"]),S(e(A,{onClear:D},{default:t(()=>[e(g,{label:o.$t("estimates.status"),class:"px-3"},{default:t(()=>[e(W,{modelValue:s.status,"onUpdate:modelValue":n[0]||(n[0]=a=>s.status=a),options:x.value,searchable:"","show-labels":!1,"allow-empty":!1,placeholder:o.$t("general.select_a_status")},null,8,["modelValue","options","placeholder"])]),_:1},8,["label"]),e(g,{label:o.$t("estimates.estimate_number"),color:"black-light",class:"px-3 mt-2"},{default:t(()=>[e(j,{modelValue:s.estimate_number,"onUpdate:modelValue":n[1]||(n[1]=a=>s.estimate_number=a)},{default:t(()=>[e(r,{name:"DotsHorizontalIcon",class:"h-5 text-gray-500"}),e(r,{name:"HashtagIcon",class:"h-5 mr-3 text-gray-600"})]),_:1},8,["modelValue"])]),_:1},8,["label"]),e(g,{label:o.$t("general.from"),class:"px-3"},{default:t(()=>[e(V,{modelValue:s.from_date,"onUpdate:modelValue":n[2]||(n[2]=a=>s.from_date=a),"calendar-button":!0,"calendar-button-icon":"calendar"},null,8,["modelValue"])]),_:1},8,["label"]),oe,e(g,{label:o.$t("general.to"),class:"px-3"},{default:t(()=>[e(V,{modelValue:s.to_date,"onUpdate:modelValue":n[3]||(n[3]=a=>s.to_date=a),"calendar-button":!0,"calendar-button-icon":"calendar"},null,8,["modelValue"])]),_:1},8,["label"])]),_:1},512),[[F,d(m)]]),k.value?(i(),c(J,{key:0,title:o.$t("estimates.no_estimates"),description:o.$t("estimates.list_of_estimates")},{default:t(()=>[e(le,{class:"mt-5 mb-4"})]),_:1},8,["title","description"])):C("",!0),S(P("div",ne,[e(te,{ref_key:"table",ref:E,data:U,columns:H.value,"placeholder-count":d(b).totalEstimates>=20?10:5,class:"mt-10"},{"cell-estimate_date":t(({row:a})=>[_(p(a.data.formatted_estimate_date),1)]),"cell-estimate_number":t(({row:a})=>[e($,{to:{path:`estimates/${a.data.id}/view`},class:"font-medium text-primary-500"},{default:t(()=>[_(p(a.data.estimate_number),1)]),_:2},1032,["to"])]),"cell-status":t(({row:a})=>[e(M,{status:a.data.status,class:"px-3 py-1"},{default:t(()=>[_(p(a.data.status),1)]),_:2},1032,["status"])]),"cell-total":t(({row:a})=>[e(X,{amount:a.data.total},null,8,["amount"])]),"cell-actions":t(({row:a})=>[e(L,null,{activator:t(()=>[e(r,{name:"DotsHorizontalIcon",class:"h-5 text-gray-500"})]),default:t(()=>[e($,{to:`estimates/${a.data.id}/view`},{default:t(()=>[e(K,null,{default:t(()=>[e(r,{name:"EyeIcon",class:"h-5 mr-3 text-gray-600"}),_(" "+p(o.$t("general.view")),1)]),_:1})]),_:2},1032,["to"])]),_:2},1024)]),_:1},8,["columns","placeholder-count"])],512),[[F,!k.value]])]),_:1})}}};export{pe as default}; diff --git a/public/build/assets/Index-WIVJ4E0e.js b/public/build/assets/Index-xZYU07fM.js similarity index 98% rename from public/build/assets/Index-WIVJ4E0e.js rename to public/build/assets/Index-xZYU07fM.js index 3af5bd79..a8fc1588 100644 --- a/public/build/assets/Index-WIVJ4E0e.js +++ b/public/build/assets/Index-xZYU07fM.js @@ -1 +1 @@ -import{a7 as E,u as M,v as R,M as G,L as ne,e as O,a5 as oe,r as n,o as p,m as f,w as e,l as u,a as t,p as v,t as d,f as B,H as re,k as D,z as ue,Y as ie,aa as ce,b as g,ac as T,ad as j,J as x,K as A,a6 as de}from"./main-B9dpPbRR.js";import{u as W}from"./users-725NVNlp.js";import{_ as me}from"./AstronautIcon-TMugKfCR.js";const pe={__name:"UserIndexDropdown",props:{row:{type:Object,default:null},table:{type:Object,default:null},loadData:{type:Function,default:null}},setup(w){const U=w,r=E();M();const{t:_}=R.useI18n();G();const y=ne();O();const b=W();oe("utils");function m(i){r.openDialog({title:_("general.are_you_sure"),message:_("users.confirm_delete",1),yesLabel:_("general.ok"),noLabel:_("general.cancel"),variant:"danger",size:"lg",hideNoButton:!1}).then(l=>{l&&b.deleteUser({ids:[i]}).then(h=>{h&&U.loadData&&U.loadData()})})}return(i,l)=>{const h=n("BaseIcon"),$=n("BaseButton"),k=n("BaseDropdownItem"),C=n("router-link"),V=n("BaseDropdown");return p(),f(V,null,{activator:e(()=>[u(y).name==="users.view"?(p(),f($,{key:0,variant:"primary"},{default:e(()=>[t(h,{name:"DotsHorizontalIcon",class:"h-5 text-white"})]),_:1})):(p(),f(h,{key:1,name:"DotsHorizontalIcon",class:"h-5 text-gray-500"}))]),default:e(()=>[t(C,{to:`/admin/users/${w.row.id}/edit`},{default:e(()=>[t(k,null,{default:e(()=>[t(h,{name:"PencilIcon",class:"w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500"}),v(" "+d(i.$t("general.edit")),1)]),_:1})]),_:1},8,["to"]),t(k,{onClick:l[0]||(l[0]=S=>m(w.row.id))},{default:e(()=>[t(h,{name:"TrashIcon",class:"w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500"}),v(" "+d(i.$t("general.delete")),1)]),_:1})]),_:1})}}},fe={class:"flex items-center justify-end space-x-5"},_e={class:"relative table-container"},he={class:"relative flex items-center justify-end h-5 border-gray-200 border-solid"},ge={class:"flex text-sm font-medium cursor-pointer select-none text-primary-400"},ve={class:"absolute z-10 items-center left-6 top-2.5 select-none"},ye={class:"custom-control custom-checkbox"},Ie={__name:"Index",setup(w){M();const U=E(),r=W(),_=G();O();let y=B(!1),b=B(!0);B(null),B("created_at"),B(!1);const{t:m}=R.useI18n();let i=B(null),l=re({name:"",email:"",phone:""});const h=D(()=>[{key:"status",thClass:"extra",tdClass:"font-medium text-gray-900",sortable:!1},{key:"name",label:m("users.name"),thClass:"extra",tdClass:"font-medium text-gray-900"},{key:"email",label:"Email"},{key:"phone",label:m("users.phone")},{key:"created_at",label:m("users.added_on")},{key:"actions",tdClass:"text-right text-sm font-medium",sortable:!1}]),$=D(()=>!r.totalUsers&&!b.value),k=D({get:()=>r.selectedUsers,set:s=>r.selectUser(s)}),C=D({get:()=>r.selectAllField,set:s=>r.setSelectAllState(s)});ue(l,()=>{V()},{deep:!0}),ie(()=>{r.fetchUsers(),r.fetchRoles()}),ce(()=>{r.selectAllField&&r.selectAllUsers()});function V(){S()}function S(){i.value&&i.value.refresh()}async function J({page:s,filter:o,sort:I}){let F={display_name:l.name!==null?l.name:"",phone:l.phone!==null?l.phone:"",email:l.email!==null?l.email:"",orderByField:I.fieldName||"created_at",orderBy:I.order||"desc",page:s};b.value=!0;let c=await r.fetchUsers(F);return b.value=!1,{data:c.data.data,pagination:{totalPages:c.data.meta.last_page,currentPage:s,totalCount:c.data.meta.total,limit:10}}}function H(){l.name="",l.email="",l.phone=null}function K(){y.value&&H(),y.value=!y.value}function X(){U.openDialog({title:m("general.are_you_sure"),message:m("users.confirm_delete",2),yesLabel:m("general.ok"),noLabel:m("general.cancel"),variant:"danger",size:"lg",hideNoButton:!1}).then(s=>{s&&r.deleteMultipleUsers().then(o=>{o.data.success&&i.value&&i.value.refresh()})})}return(s,o)=>{const I=n("BaseBreadcrumbItem"),F=n("BaseBreadcrumb"),c=n("BaseIcon"),P=n("BaseButton"),Y=n("BasePageHeader"),N=n("BaseInput"),z=n("BaseInputGroup"),q=n("BaseFilterWrapper"),Q=n("BaseEmptyPlaceholder"),Z=n("BaseDropdownItem"),ee=n("BaseDropdown"),L=n("BaseCheckbox"),te=n("router-link"),ae=n("BaseTable"),se=n("BasePage");return p(),f(se,null,{default:e(()=>[t(Y,{title:s.$t("users.title")},{actions:e(()=>[g("div",fe,[T(t(P,{variant:"primary-outline",onClick:K},{right:e(a=>[u(y)?(p(),f(c,{key:1,name:"XIcon",class:x(a.class)},null,8,["class"])):(p(),f(c,{key:0,name:"FilterIcon",class:x(a.class)},null,8,["class"]))]),default:e(()=>[v(d(s.$t("general.filter"))+" ",1)]),_:1},512),[[j,u(r).totalUsers]]),u(_).currentUser.is_owner?(p(),f(P,{key:0,onClick:o[0]||(o[0]=a=>s.$router.push("users/create"))},{left:e(a=>[t(c,{name:"PlusIcon",class:x(a.class),"aria-hidden":"true"},null,8,["class"])]),default:e(()=>[v(" "+d(s.$t("users.add_user")),1)]),_:1})):A("",!0)])]),default:e(()=>[t(F,null,{default:e(()=>[t(I,{title:s.$t("general.home"),to:"dashboard"},null,8,["title"]),t(I,{title:s.$t("users.title",2),to:"#",active:""},null,8,["title"])]),_:1})]),_:1},8,["title"]),t(q,{show:u(y),class:"mt-3",onClear:H},{default:e(()=>[t(z,{label:s.$t("users.name"),class:"flex-1 mt-2 mr-4"},{default:e(()=>[t(N,{modelValue:u(l).name,"onUpdate:modelValue":o[1]||(o[1]=a=>u(l).name=a),type:"text",name:"name",autocomplete:"off"},null,8,["modelValue"])]),_:1},8,["label"]),t(z,{label:s.$t("users.email"),class:"flex-1 mt-2 mr-4"},{default:e(()=>[t(N,{modelValue:u(l).email,"onUpdate:modelValue":o[2]||(o[2]=a=>u(l).email=a),type:"text",name:"email",autocomplete:"off"},null,8,["modelValue"])]),_:1},8,["label"]),t(z,{class:"flex-1 mt-2",label:s.$t("users.phone")},{default:e(()=>[t(N,{modelValue:u(l).phone,"onUpdate:modelValue":o[3]||(o[3]=a=>u(l).phone=a),type:"text",name:"phone",autocomplete:"off"},null,8,["modelValue"])]),_:1},8,["label"])]),_:1},8,["show"]),T(t(Q,{title:s.$t("users.no_users"),description:s.$t("users.list_of_users")},{actions:e(()=>[u(_).currentUser.is_owner?(p(),f(P,{key:0,variant:"primary-outline",onClick:o[4]||(o[4]=a=>s.$router.push("/admin/users/create"))},{left:e(a=>[t(c,{name:"PlusIcon",class:x(a.class)},null,8,["class"])]),default:e(()=>[v(" "+d(s.$t("users.add_user")),1)]),_:1})):A("",!0)]),default:e(()=>[t(me,{class:"mt-5 mb-4"})]),_:1},8,["title","description"]),[[j,$.value]]),T(g("div",_e,[g("div",he,[u(r).selectedUsers.length?(p(),f(ee,{key:0},{activator:e(()=>[g("span",ge,[v(d(s.$t("general.actions"))+" ",1),t(c,{name:"ChevronDownIcon",class:"h-5"})])]),default:e(()=>[t(Z,{onClick:X},{default:e(()=>[t(c,{name:"TrashIcon",class:"h-5 mr-3 text-gray-600"}),v(" "+d(s.$t("general.delete")),1)]),_:1})]),_:1})):A("",!0)]),t(ae,{ref_key:"table",ref:i,data:J,columns:h.value,class:"mt-3"},de({header:e(()=>[g("div",ve,[t(L,{modelValue:C.value,"onUpdate:modelValue":o[5]||(o[5]=a=>C.value=a),variant:"primary",onChange:u(r).selectAllUsers},null,8,["modelValue","onChange"])])]),"cell-status":e(({row:a})=>[g("div",ye,[t(L,{id:a.data.id,modelValue:k.value,"onUpdate:modelValue":o[6]||(o[6]=le=>k.value=le),value:a.data.id,variant:"primary"},null,8,["id","modelValue","value"])])]),"cell-name":e(({row:a})=>[t(te,{to:{path:`users/${a.data.id}/edit`},class:"font-medium text-primary-500"},{default:e(()=>[v(d(a.data.name),1)]),_:2},1032,["to"])]),"cell-phone":e(({row:a})=>[g("span",null,d(a.data.phone?a.data.phone:"-"),1)]),"cell-created_at":e(({row:a})=>[g("span",null,d(a.data.formatted_created_at),1)]),_:2},[u(_).currentUser.is_owner?{name:"cell-actions",fn:e(({row:a})=>[t(pe,{row:a.data,table:u(i),"load-data":S},null,8,["row","table"])]),key:"0"}:void 0]),1032,["columns"])],512),[[j,!$.value]])]),_:1})}}};export{Ie as default}; +import{a7 as E,u as M,v as R,M as G,L as ne,e as O,a5 as oe,r as n,o as p,m as f,w as e,l as u,a as t,p as v,t as d,f as B,H as re,k as D,z as ue,Y as ie,aa as ce,b as g,ac as T,ad as j,J as x,K as A,a6 as de}from"./main-pPEsZPea.js";import{u as W}from"./users-bFFtYbqz.js";import{_ as me}from"./AstronautIcon-8yxe-HhR.js";const pe={__name:"UserIndexDropdown",props:{row:{type:Object,default:null},table:{type:Object,default:null},loadData:{type:Function,default:null}},setup(w){const U=w,r=E();M();const{t:_}=R.useI18n();G();const y=ne();O();const b=W();oe("utils");function m(i){r.openDialog({title:_("general.are_you_sure"),message:_("users.confirm_delete",1),yesLabel:_("general.ok"),noLabel:_("general.cancel"),variant:"danger",size:"lg",hideNoButton:!1}).then(l=>{l&&b.deleteUser({ids:[i]}).then(h=>{h&&U.loadData&&U.loadData()})})}return(i,l)=>{const h=n("BaseIcon"),$=n("BaseButton"),k=n("BaseDropdownItem"),C=n("router-link"),V=n("BaseDropdown");return p(),f(V,null,{activator:e(()=>[u(y).name==="users.view"?(p(),f($,{key:0,variant:"primary"},{default:e(()=>[t(h,{name:"DotsHorizontalIcon",class:"h-5 text-white"})]),_:1})):(p(),f(h,{key:1,name:"DotsHorizontalIcon",class:"h-5 text-gray-500"}))]),default:e(()=>[t(C,{to:`/admin/users/${w.row.id}/edit`},{default:e(()=>[t(k,null,{default:e(()=>[t(h,{name:"PencilIcon",class:"w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500"}),v(" "+d(i.$t("general.edit")),1)]),_:1})]),_:1},8,["to"]),t(k,{onClick:l[0]||(l[0]=S=>m(w.row.id))},{default:e(()=>[t(h,{name:"TrashIcon",class:"w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500"}),v(" "+d(i.$t("general.delete")),1)]),_:1})]),_:1})}}},fe={class:"flex items-center justify-end space-x-5"},_e={class:"relative table-container"},he={class:"relative flex items-center justify-end h-5 border-gray-200 border-solid"},ge={class:"flex text-sm font-medium cursor-pointer select-none text-primary-400"},ve={class:"absolute z-10 items-center left-6 top-2.5 select-none"},ye={class:"custom-control custom-checkbox"},Ie={__name:"Index",setup(w){M();const U=E(),r=W(),_=G();O();let y=B(!1),b=B(!0);B(null),B("created_at"),B(!1);const{t:m}=R.useI18n();let i=B(null),l=re({name:"",email:"",phone:""});const h=D(()=>[{key:"status",thClass:"extra",tdClass:"font-medium text-gray-900",sortable:!1},{key:"name",label:m("users.name"),thClass:"extra",tdClass:"font-medium text-gray-900"},{key:"email",label:"Email"},{key:"phone",label:m("users.phone")},{key:"created_at",label:m("users.added_on")},{key:"actions",tdClass:"text-right text-sm font-medium",sortable:!1}]),$=D(()=>!r.totalUsers&&!b.value),k=D({get:()=>r.selectedUsers,set:s=>r.selectUser(s)}),C=D({get:()=>r.selectAllField,set:s=>r.setSelectAllState(s)});ue(l,()=>{V()},{deep:!0}),ie(()=>{r.fetchUsers(),r.fetchRoles()}),ce(()=>{r.selectAllField&&r.selectAllUsers()});function V(){S()}function S(){i.value&&i.value.refresh()}async function J({page:s,filter:o,sort:I}){let F={display_name:l.name!==null?l.name:"",phone:l.phone!==null?l.phone:"",email:l.email!==null?l.email:"",orderByField:I.fieldName||"created_at",orderBy:I.order||"desc",page:s};b.value=!0;let c=await r.fetchUsers(F);return b.value=!1,{data:c.data.data,pagination:{totalPages:c.data.meta.last_page,currentPage:s,totalCount:c.data.meta.total,limit:10}}}function H(){l.name="",l.email="",l.phone=null}function K(){y.value&&H(),y.value=!y.value}function X(){U.openDialog({title:m("general.are_you_sure"),message:m("users.confirm_delete",2),yesLabel:m("general.ok"),noLabel:m("general.cancel"),variant:"danger",size:"lg",hideNoButton:!1}).then(s=>{s&&r.deleteMultipleUsers().then(o=>{o.data.success&&i.value&&i.value.refresh()})})}return(s,o)=>{const I=n("BaseBreadcrumbItem"),F=n("BaseBreadcrumb"),c=n("BaseIcon"),P=n("BaseButton"),Y=n("BasePageHeader"),N=n("BaseInput"),z=n("BaseInputGroup"),q=n("BaseFilterWrapper"),Q=n("BaseEmptyPlaceholder"),Z=n("BaseDropdownItem"),ee=n("BaseDropdown"),L=n("BaseCheckbox"),te=n("router-link"),ae=n("BaseTable"),se=n("BasePage");return p(),f(se,null,{default:e(()=>[t(Y,{title:s.$t("users.title")},{actions:e(()=>[g("div",fe,[T(t(P,{variant:"primary-outline",onClick:K},{right:e(a=>[u(y)?(p(),f(c,{key:1,name:"XIcon",class:x(a.class)},null,8,["class"])):(p(),f(c,{key:0,name:"FilterIcon",class:x(a.class)},null,8,["class"]))]),default:e(()=>[v(d(s.$t("general.filter"))+" ",1)]),_:1},512),[[j,u(r).totalUsers]]),u(_).currentUser.is_owner?(p(),f(P,{key:0,onClick:o[0]||(o[0]=a=>s.$router.push("users/create"))},{left:e(a=>[t(c,{name:"PlusIcon",class:x(a.class),"aria-hidden":"true"},null,8,["class"])]),default:e(()=>[v(" "+d(s.$t("users.add_user")),1)]),_:1})):A("",!0)])]),default:e(()=>[t(F,null,{default:e(()=>[t(I,{title:s.$t("general.home"),to:"dashboard"},null,8,["title"]),t(I,{title:s.$t("users.title",2),to:"#",active:""},null,8,["title"])]),_:1})]),_:1},8,["title"]),t(q,{show:u(y),class:"mt-3",onClear:H},{default:e(()=>[t(z,{label:s.$t("users.name"),class:"flex-1 mt-2 mr-4"},{default:e(()=>[t(N,{modelValue:u(l).name,"onUpdate:modelValue":o[1]||(o[1]=a=>u(l).name=a),type:"text",name:"name",autocomplete:"off"},null,8,["modelValue"])]),_:1},8,["label"]),t(z,{label:s.$t("users.email"),class:"flex-1 mt-2 mr-4"},{default:e(()=>[t(N,{modelValue:u(l).email,"onUpdate:modelValue":o[2]||(o[2]=a=>u(l).email=a),type:"text",name:"email",autocomplete:"off"},null,8,["modelValue"])]),_:1},8,["label"]),t(z,{class:"flex-1 mt-2",label:s.$t("users.phone")},{default:e(()=>[t(N,{modelValue:u(l).phone,"onUpdate:modelValue":o[3]||(o[3]=a=>u(l).phone=a),type:"text",name:"phone",autocomplete:"off"},null,8,["modelValue"])]),_:1},8,["label"])]),_:1},8,["show"]),T(t(Q,{title:s.$t("users.no_users"),description:s.$t("users.list_of_users")},{actions:e(()=>[u(_).currentUser.is_owner?(p(),f(P,{key:0,variant:"primary-outline",onClick:o[4]||(o[4]=a=>s.$router.push("/admin/users/create"))},{left:e(a=>[t(c,{name:"PlusIcon",class:x(a.class)},null,8,["class"])]),default:e(()=>[v(" "+d(s.$t("users.add_user")),1)]),_:1})):A("",!0)]),default:e(()=>[t(me,{class:"mt-5 mb-4"})]),_:1},8,["title","description"]),[[j,$.value]]),T(g("div",_e,[g("div",he,[u(r).selectedUsers.length?(p(),f(ee,{key:0},{activator:e(()=>[g("span",ge,[v(d(s.$t("general.actions"))+" ",1),t(c,{name:"ChevronDownIcon",class:"h-5"})])]),default:e(()=>[t(Z,{onClick:X},{default:e(()=>[t(c,{name:"TrashIcon",class:"h-5 mr-3 text-gray-600"}),v(" "+d(s.$t("general.delete")),1)]),_:1})]),_:1})):A("",!0)]),t(ae,{ref_key:"table",ref:i,data:J,columns:h.value,class:"mt-3"},de({header:e(()=>[g("div",ve,[t(L,{modelValue:C.value,"onUpdate:modelValue":o[5]||(o[5]=a=>C.value=a),variant:"primary",onChange:u(r).selectAllUsers},null,8,["modelValue","onChange"])])]),"cell-status":e(({row:a})=>[g("div",ye,[t(L,{id:a.data.id,modelValue:k.value,"onUpdate:modelValue":o[6]||(o[6]=le=>k.value=le),value:a.data.id,variant:"primary"},null,8,["id","modelValue","value"])])]),"cell-name":e(({row:a})=>[t(te,{to:{path:`users/${a.data.id}/edit`},class:"font-medium text-primary-500"},{default:e(()=>[v(d(a.data.name),1)]),_:2},1032,["to"])]),"cell-phone":e(({row:a})=>[g("span",null,d(a.data.phone?a.data.phone:"-"),1)]),"cell-created_at":e(({row:a})=>[g("span",null,d(a.data.formatted_created_at),1)]),_:2},[u(_).currentUser.is_owner?{name:"cell-actions",fn:e(({row:a})=>[t(pe,{row:a.data,table:u(i),"load-data":S},null,8,["row","table"])]),key:"0"}:void 0]),1032,["columns"])],512),[[j,!$.value]])]),_:1})}}};export{Ie as default}; diff --git a/public/build/assets/InputType-RKQYBHxv.js b/public/build/assets/InputType-RojMM-h7.js similarity index 85% rename from public/build/assets/InputType-RKQYBHxv.js rename to public/build/assets/InputType-RojMM-h7.js index dcc4146b..67fd204b 100644 --- a/public/build/assets/InputType-RKQYBHxv.js +++ b/public/build/assets/InputType-RojMM-h7.js @@ -1 +1 @@ -import{k as m,r as d,o as r,m as c}from"./main-B9dpPbRR.js";const i={__name:"InputType",props:{modelValue:{type:String,default:null}},emits:["update:modelValue"],setup(l,{emit:a}){const u=l,n=a,e=m({get:()=>u.modelValue,set:t=>{n("update:modelValue",t)}});return(t,o)=>{const p=d("BaseInput");return r(),c(p,{modelValue:e.value,"onUpdate:modelValue":o[0]||(o[0]=s=>e.value=s),type:"text"},null,8,["modelValue"])}}};export{i as default}; +import{k as m,r as d,o as r,m as c}from"./main-pPEsZPea.js";const i={__name:"InputType",props:{modelValue:{type:String,default:null}},emits:["update:modelValue"],setup(l,{emit:a}){const u=l,n=a,e=m({get:()=>u.modelValue,set:t=>{n("update:modelValue",t)}});return(t,o)=>{const p=d("BaseInput");return r(),c(p,{modelValue:e.value,"onUpdate:modelValue":o[0]||(o[0]=s=>e.value=s),type:"text"},null,8,["modelValue"])}}};export{i as default}; diff --git a/public/build/assets/Installation--2oiPiCa.js b/public/build/assets/Installation-THhQgZ_v.js similarity index 99% rename from public/build/assets/Installation--2oiPiCa.js rename to public/build/assets/Installation-THhQgZ_v.js index 10e0e234..f8e94067 100644 --- a/public/build/assets/Installation--2oiPiCa.js +++ b/public/build/assets/Installation-THhQgZ_v.js @@ -1 +1 @@ -import{a4 as _e,E as ae,s as W,a1 as j,f as z,k,r as b,o as q,m as M,w as d,b as C,c as U,t as P,p as N,K as G,N as ie,O as oe,a as t,J as x,v as O,a7 as ge,Y as Q,l as e,ac as le,ad as re,H as A,a5 as te,g as y,h as V,ar as ne,j as R,q as T,Z as se,u as de,a3 as ue,i as X,n as K,M as ve,I as be,ag as $e,a0 as we,G as pe,ai as me,e as fe,aP as he}from"./main-B9dpPbRR.js";import{u as ee}from"./mail-driver-L7_iQECX.js";const Y=(o=!1)=>{const S=o?window.pinia.defineStore:_e,D=ae();return S({id:"installation",state:()=>({currentDataBaseData:{database_connection:"mysql",database_hostname:"127.0.0.1",database_port:"3306",database_name:null,database_username:null,database_password:null,app_url:window.location.origin}}),actions:{fetchInstallationRequirements(){return new Promise((n,s)=>{W.get("/api/v1/installation/requirements").then(a=>{n(a)}).catch(a=>{j(a),s(a)})})},fetchInstallationStep(){return new Promise((n,s)=>{W.get("/api/v1/installation/wizard-step").then(a=>{n(a)}).catch(a=>{j(a),s(a)})})},addInstallationStep(n){return new Promise((s,a)=>{W.post("/api/v1/installation/wizard-step",n).then(p=>{s(p)}).catch(p=>{j(p),a(p)})})},fetchInstallationPermissions(){return new Promise((n,s)=>{W.get("/api/v1/installation/permissions").then(a=>{n(a)}).catch(a=>{j(a),s(a)})})},fetchInstallationDatabase(n){return new Promise((s,a)=>{W.get("/api/v1/installation/database/config",{params:n}).then(p=>{s(p)}).catch(p=>{j(p),a(p)})})},addInstallationDatabase(n){return new Promise((s,a)=>{W.post("/api/v1/installation/database/config",n).then(p=>{s(p)}).catch(p=>{j(p),a(p)})})},addInstallationFinish(){return new Promise((n,s)=>{W.post("/api/v1/installation/finish").then(a=>{n(a)}).catch(a=>{j(a),s(a)})})},setInstallationDomain(n){return new Promise((s,a)=>{W.put("/api/v1/installation/set-domain",n).then(p=>{s(p)}).catch(p=>{j(p),a(p)})})},installationLogin(){return new Promise((n,s)=>{W.get("/sanctum/csrf-cookie").then(a=>{a&&W.post("/api/v1/installation/login").then(p=>{D.setSelectedCompany(p.data.company),n(p)}).catch(p=>{j(p),s(p)})})})},checkAutheticated(){return new Promise((n,s)=>{W.get("/api/v1/auth/check").then(a=>{n(a)}).catch(a=>{s(a)})})}}})()},ye={class:"w-full md:w-2/3"},Ie={class:"mb-6"},qe={key:0,class:"grid grid-flow-row grid-cols-3 p-3 border border-gray-200 lg:gap-24 sm:gap-4"},Be={class:"col-span-2 text-sm"},Ce={class:"text-right"},Ve={key:0,class:"inline-block w-4 h-4 ml-3 mr-2 bg-green-500 rounded-full"},De={key:1,class:"inline-block w-4 h-4 ml-3 mr-2 bg-red-500 rounded-full"},Se={key:1},Fe={class:"col-span-2 text-sm"},Me={class:"text-right"},ze={key:0,class:"inline-block w-4 h-4 ml-3 mr-2 bg-green-500 rounded-full"},ke={key:1,class:"inline-block w-4 h-4 ml-3 mr-2 bg-red-500 rounded-full"},Ue={__name:"Step1RequirementsCheck",emits:["next"],setup(o,{emit:S}){const D=S,n=z(""),s=z(""),a=z(!1);z(!0);const p=Y(),m=k(()=>{if(n.value){let c=!0;for(const l in n.value)return n.value[l]||(c=!1),n.value&&s.value.supported&&c}return!1});async function v(){var l,I,i,g;a.value=!0;const c=await p.fetchInstallationRequirements();c.data&&(n.value=(i=(I=(l=c==null?void 0:c.data)==null?void 0:l.requirements)==null?void 0:I.requirements)==null?void 0:i.php,s.value=(g=c==null?void 0:c.data)==null?void 0:g.phpSupportInfo)}function r(){a.value=!0,D("next"),a.value=!1}return(c,l)=>{const I=b("BaseIcon"),i=b("BaseButton"),g=b("BaseWizardStep");return q(),M(g,{title:c.$t("wizard.req.system_req"),description:c.$t("wizard.req.system_req_desc")},{default:d(()=>[C("div",ye,[C("div",Ie,[s.value?(q(),U("div",qe,[C("div",Be,P(c.$t("wizard.req.php_req_version",{version:s.value.minimum})),1),C("div",Ce,[N(P(s.value.current)+" ",1),s.value.supported?(q(),U("span",Ve)):(q(),U("span",De))])])):G("",!0),n.value?(q(),U("div",Se,[(q(!0),U(ie,null,oe(n.value,($,B)=>(q(),U("div",{key:B,class:"grid grid-flow-row grid-cols-3 p-3 border border-gray-200 lg:gap-24 sm:gap-4"},[C("div",Fe,P(B),1),C("div",Me,[$?(q(),U("span",ze)):(q(),U("span",ke))])]))),128))])):G("",!0)]),m.value?(q(),M(i,{key:0,onClick:r},{left:d($=>[t(I,{name:"ArrowRightIcon",class:x($.class)},null,8,["class"])]),default:d(()=>[N(P(c.$t("wizard.continue"))+" ",1)]),_:1})):G("",!0),n.value?G("",!0):(q(),M(i,{key:1,loading:a.value,disabled:a.value,onClick:v},{default:d(()=>[N(P(c.$t("wizard.req.check_req")),1)]),_:1},8,["loading","disabled"]))])]),_:1},8,["title","description"])}}},Pe={key:1,class:"relative"},Ne={class:"grid grid-flow-row grid-cols-3 lg:gap-24 sm:gap-4"},Ee={class:"col-span-2 p-3"},Ge={class:"p-3 text-right"},Oe={key:0,class:"inline-block w-4 h-4 ml-3 mr-2 rounded-full bg-green-500"},xe={key:1,class:"inline-block w-4 h-4 ml-3 mr-2 rounded-full bg-red-500"},Le={__name:"Step2PermissionCheck",emits:["next"],setup(o,{emit:S}){const D=S;let n=z(!1),s=z(!1),a=z([]);const{tm:p,t:m}=O.useI18n(),v=Y(),r=ge();Q(()=>{c()});async function c(){n.value=!0;const I=await v.fetchInstallationPermissions();a.value=I.data.permissions.permissions,I.data&&I.data.permissions.errors&&setTimeout(()=>{r.openDialog({title:p("wizard.permissions.permission_confirm_title"),message:m("wizard.permissions.permission_confirm_desc"),yesLabel:"OK",noLabel:"Cancel",variant:"danger",hideNoButton:!1,size:"lg"}).then(i=>{i.data&&(n.value=!1)})},500),n.value=!1}function l(){s.value=!0,D("next"),s.value=!1}return(I,i)=>{const g=b("BaseContentPlaceholdersText"),$=b("BaseContentPlaceholdersBox"),B=b("BaseContentPlaceholders"),u=b("BaseIcon"),_=b("BaseButton"),f=b("BaseWizardStep");return q(),M(f,{title:I.$t("wizard.permissions.permissions"),description:I.$t("wizard.permissions.permission_desc")},{default:d(()=>[e(n)?(q(),M(B,{key:0},{default:d(()=>[(q(),U(ie,null,oe(3,(w,h)=>C("div",{key:h,class:"grid grid-flow-row grid-cols-3 lg:gap-24 sm:gap-4 border border-gray-200"},[t(g,{lines:1,class:"col-span-4 p-3"})])),64)),t($,{rounded:!0,class:"mt-10",style:{width:"96px",height:"42px"}})]),_:1})):(q(),U("div",Pe,[(q(!0),U(ie,null,oe(e(a),(w,h)=>(q(),U("div",{key:h,class:"border border-gray-200"},[C("div",Ne,[C("div",Ee,P(w.folder),1),C("div",Ge,[w.isSet?(q(),U("span",Oe)):(q(),U("span",xe)),C("span",null,P(w.permission),1)])])]))),128)),le(t(_,{class:"mt-10",loading:e(s),disabled:e(s),onClick:l},{left:d(w=>[t(u,{name:"ArrowRightIcon",class:x(w.class)},null,8,["class"])]),default:d(()=>[N(" "+P(I.$t("wizard.continue")),1)]),_:1},8,["loading","disabled"]),[[re,!e(n)]])]))]),_:1},8,["title","description"])}}},We={class:"grid grid-cols-1 gap-5 md:grid-cols-2 lg:mb-6 md:mb-6"},Re={__name:"MysqlDatabase",props:{configData:{type:Object,require:!0,default:Object},isSaving:{type:Boolean,require:!0,default:!1},isFetchingInitialData:{type:Boolean,default:!1}},emits:["submit-data","on-change-driver"],setup(o,{emit:S}){const D=o,n=S,s=A(["sqlite","mysql","pgsql"]),{t:a}=O.useI18n(),p=te("utils"),m=Y();Q(()=>{for(const g in v.value)D.configData.hasOwnProperty(g)&&(v.value[g]=D.configData[g])});const v=k(()=>m.currentDataBaseData),r=g=>p.checkValidUrl(g),c={database_connection:{required:y.withMessage(a("validation.required"),V)},database_hostname:{required:y.withMessage(a("validation.required"),V)},database_port:{required:y.withMessage(a("validation.required"),V),numeric:ne},database_name:{required:y.withMessage(a("validation.required"),V)},database_username:{required:y.withMessage(a("validation.required"),V)},app_url:{required:y.withMessage(a("validation.required"),V),isUrl:y.withMessage(a("validation.invalid_url"),r)}},l=R(c,v.value);function I(){if(l.value.$touch(),l.value.$invalid)return!0;n("submit-data",v.value)}function i(){l.value.database_connection.$touch(),n("on-change-driver",v.value.database_connection)}return(g,$)=>{const B=b("BaseInput"),u=b("BaseInputGroup"),_=b("BaseMultiselect"),f=b("BaseIcon"),w=b("BaseButton");return q(),U("form",{action:"",onSubmit:T(I,["prevent"])},[C("div",We,[t(u,{label:g.$t("wizard.database.app_url"),error:e(l).app_url.$error&&e(l).app_url.$errors[0].$message,required:""},{default:d(()=>[t(B,{modelValue:v.value.app_url,"onUpdate:modelValue":$[0]||($[0]=h=>v.value.app_url=h),invalid:e(l).app_url.$error,type:"text"},null,8,["modelValue","invalid"])]),_:1},8,["label","error"]),t(u,{label:g.$t("wizard.database.connection"),error:e(l).database_connection.$error&&e(l).database_connection.$errors[0].$message,required:""},{default:d(()=>[t(_,{modelValue:v.value.database_connection,"onUpdate:modelValue":[$[1]||($[1]=h=>v.value.database_connection=h),i],invalid:e(l).database_connection.$error,options:s,"can-deselect":!1,"can-clear":!1},null,8,["modelValue","invalid","options"])]),_:1},8,["label","error"]),t(u,{label:g.$t("wizard.database.port"),error:e(l).database_port.$error&&e(l).database_port.$errors[0].$message,required:""},{default:d(()=>[t(B,{modelValue:v.value.database_port,"onUpdate:modelValue":$[2]||($[2]=h=>v.value.database_port=h),invalid:e(l).database_port.$error},null,8,["modelValue","invalid"])]),_:1},8,["label","error"]),t(u,{label:g.$t("wizard.database.db_name"),error:e(l).database_name.$error&&e(l).database_name.$errors[0].$message,required:""},{default:d(()=>[t(B,{modelValue:v.value.database_name,"onUpdate:modelValue":$[3]||($[3]=h=>v.value.database_name=h),invalid:e(l).database_name.$error},null,8,["modelValue","invalid"])]),_:1},8,["label","error"]),t(u,{label:g.$t("wizard.database.username"),error:e(l).database_username.$error&&e(l).database_username.$errors[0].$message,required:""},{default:d(()=>[t(B,{modelValue:v.value.database_username,"onUpdate:modelValue":$[4]||($[4]=h=>v.value.database_username=h),invalid:e(l).database_username.$error},null,8,["modelValue","invalid"])]),_:1},8,["label","error"]),t(u,{label:g.$t("wizard.database.password")},{default:d(()=>[t(B,{modelValue:v.value.database_password,"onUpdate:modelValue":$[5]||($[5]=h=>v.value.database_password=h),type:"password"},null,8,["modelValue"])]),_:1},8,["label"]),t(u,{label:g.$t("wizard.database.host"),error:e(l).database_hostname.$error&&e(l).database_hostname.$errors[0].$message,required:""},{default:d(()=>[t(B,{modelValue:v.value.database_hostname,"onUpdate:modelValue":$[6]||($[6]=h=>v.value.database_hostname=h),invalid:e(l).database_hostname.$error},null,8,["modelValue","invalid"])]),_:1},8,["label","error"])]),t(w,{type:"submit",class:"mt-4",loading:o.isSaving,disabled:o.isSaving},{left:d(h=>[o.isSaving?G("",!0):(q(),M(f,{key:0,name:"SaveIcon",class:x(h.class)},null,8,["class"]))]),default:d(()=>[N(" "+P(g.$t("wizard.save_cont")),1)]),_:1},8,["loading","disabled"])],32)}}},Te={class:"grid grid-cols-1 gap-5 md:grid-cols-2 lg:mb-6 md:mb-6"},je={__name:"PgsqlDatabase",props:{configData:{type:Object,require:!0,default:Object},isSaving:{type:Boolean,require:!0,default:!1},isFetchingInitialData:{type:Boolean,require:!0,default:!1}},emits:["submit-data","on-change-driver"],setup(o,{emit:S}){const D=o,n=S,s=A(["sqlite","mysql","pgsql"]),{t:a}=O.useI18n(),p=te("utils"),m=Y(),v=k(()=>m.currentDataBaseData);Q(()=>{for(const g in v.value)D.configData.hasOwnProperty(g)&&(v.value[g]=D.configData[g])});const r=g=>p.checkValidUrl(g),c={database_connection:{required:y.withMessage(a("validation.required"),V)},database_hostname:{required:y.withMessage(a("validation.required"),V)},database_port:{required:y.withMessage(a("validation.required"),V),numeric:ne},database_name:{required:y.withMessage(a("validation.required"),V)},database_username:{required:y.withMessage(a("validation.required"),V)},app_url:{required:y.withMessage(a("validation.required"),V),isUrl:y.withMessage(a("validation.invalid_url"),r)}},l=R(c,v.value);function I(){if(l.value.$touch(),l.value.$invalid)return!0;n("submit-data",v.value)}function i(){l.value.database_connection.$touch(),n("on-change-driver",v.value.database_connection)}return(g,$)=>{const B=b("BaseInput"),u=b("BaseInputGroup"),_=b("BaseMultiselect"),f=b("BaseIcon"),w=b("BaseButton");return q(),U("form",{action:"",onSubmit:T(I,["prevent"])},[C("div",Te,[t(u,{label:g.$t("wizard.database.app_url"),"content-loading":o.isFetchingInitialData,error:e(l).app_url.$error&&e(l).app_url.$errors[0].$message,required:""},{default:d(()=>[t(B,{modelValue:v.value.app_url,"onUpdate:modelValue":$[0]||($[0]=h=>v.value.app_url=h),"content-loading":o.isFetchingInitialData,invalid:e(l).app_url.$error,type:"text"},null,8,["modelValue","content-loading","invalid"])]),_:1},8,["label","content-loading","error"]),t(u,{label:g.$t("wizard.database.connection"),"content-loading":o.isFetchingInitialData,error:e(l).database_connection.$error&&e(l).database_connection.$errors[0].$message,required:""},{default:d(()=>[t(_,{modelValue:v.value.database_connection,"onUpdate:modelValue":[$[1]||($[1]=h=>v.value.database_connection=h),i],"content-loading":o.isFetchingInitialData,invalid:e(l).database_connection.$error,options:s,"can-deselect":!1,"can-clear":!1},null,8,["modelValue","content-loading","invalid","options"])]),_:1},8,["label","content-loading","error"]),t(u,{label:g.$t("wizard.database.port"),"content-loading":o.isFetchingInitialData,error:e(l).database_port.$error&&e(l).database_port.$errors[0].$message,required:""},{default:d(()=>[t(B,{modelValue:v.value.database_port,"onUpdate:modelValue":$[2]||($[2]=h=>v.value.database_port=h),"content-loading":o.isFetchingInitialData,invalid:e(l).database_port.$error},null,8,["modelValue","content-loading","invalid"])]),_:1},8,["label","content-loading","error"]),t(u,{label:g.$t("wizard.database.db_name"),"content-loading":o.isFetchingInitialData,error:e(l).database_name.$error&&e(l).database_name.$errors[0].$message,required:""},{default:d(()=>[t(B,{modelValue:v.value.database_name,"onUpdate:modelValue":$[3]||($[3]=h=>v.value.database_name=h),"content-loading":o.isFetchingInitialData,invalid:e(l).database_name.$error},null,8,["modelValue","content-loading","invalid"])]),_:1},8,["label","content-loading","error"]),t(u,{label:g.$t("wizard.database.username"),"content-loading":o.isFetchingInitialData,error:e(l).database_username.$error&&e(l).database_username.$errors[0].$message,required:""},{default:d(()=>[t(B,{modelValue:v.value.database_username,"onUpdate:modelValue":$[4]||($[4]=h=>v.value.database_username=h),"content-loading":o.isFetchingInitialData,invalid:e(l).database_username.$error},null,8,["modelValue","content-loading","invalid"])]),_:1},8,["label","content-loading","error"]),t(u,{"content-loading":o.isFetchingInitialData,label:g.$t("wizard.database.password")},{default:d(()=>[t(B,{modelValue:v.value.database_password,"onUpdate:modelValue":$[5]||($[5]=h=>v.value.database_password=h),"content-loading":o.isFetchingInitialData,type:"password"},null,8,["modelValue","content-loading"])]),_:1},8,["content-loading","label"]),t(u,{label:g.$t("wizard.database.host"),"content-loading":o.isFetchingInitialData,error:e(l).database_hostname.$error&&e(l).database_hostname.$errors[0].$message,required:""},{default:d(()=>[t(B,{modelValue:v.value.database_hostname,"onUpdate:modelValue":$[6]||($[6]=h=>v.value.database_hostname=h),"content-loading":o.isFetchingInitialData,invalid:e(l).database_hostname.$error},null,8,["modelValue","content-loading","invalid"])]),_:1},8,["label","content-loading","error"])]),le(t(w,{"content-loading":o.isFetchingInitialData,type:"submit",class:"mt-4",loading:o.isSaving,disabled:o.isSaving},{left:d(h=>[o.isSaving?G("",!0):(q(),M(f,{key:0,name:"SaveIcon",class:x(h.class)},null,8,["class"]))]),default:d(()=>[N(" "+P(g.$t("wizard.save_cont")),1)]),_:1},8,["content-loading","loading","disabled"]),[[re,!o.isFetchingInitialData]])],32)}}},Ae={class:"grid grid-cols-1 gap-5 md:grid-cols-2 lg:mb-6 md:mb-6"},Ye={__name:"SqliteDatabase",props:{configData:{type:Object,require:!0,default:Object},isSaving:{type:Boolean,require:!0,default:!1},isFetchingInitialData:{type:Boolean,require:!0,default:!1}},emits:["submit-data","on-change-driver"],setup(o,{emit:S}){const D=o,n=S,s=A(["sqlite","mysql","pgsql"]),{t:a}=O.useI18n(),p=te("utils"),m=Y(),v=k(()=>m.currentDataBaseData);Q(()=>{for(const g in v.value)D.configData.hasOwnProperty(g)&&(v.value[g]=D.configData[g])});const r=g=>p.checkValidUrl(g),c={database_connection:{required:y.withMessage(a("validation.required"),V)},database_name:{required:y.withMessage(a("validation.required"),V)},app_url:{required:y.withMessage(a("validation.required"),V),isUrl:y.withMessage(a("validation.invalid_url"),r)}},l=R(c,v.value);function I(){if(l.value.$touch(),l.value.$invalid)return!0;n("submit-data",v.value)}function i(){l.value.database_connection.$touch(),n("on-change-driver",v.value.database_connection)}return(g,$)=>{const B=b("BaseInput"),u=b("BaseInputGroup"),_=b("BaseMultiselect"),f=b("BaseIcon"),w=b("BaseButton");return q(),U("form",{action:"",onSubmit:T(I,["prevent"])},[C("div",Ae,[t(u,{label:g.$t("wizard.database.app_url"),"content-loading":o.isFetchingInitialData,error:e(l).app_url.$error&&e(l).app_url.$errors[0].$message,required:""},{default:d(()=>[t(B,{modelValue:v.value.app_url,"onUpdate:modelValue":$[0]||($[0]=h=>v.value.app_url=h),"content-loading":o.isFetchingInitialData,invalid:e(l).app_url.$error,type:"text"},null,8,["modelValue","content-loading","invalid"])]),_:1},8,["label","content-loading","error"]),t(u,{label:g.$t("wizard.database.connection"),"content-loading":o.isFetchingInitialData,error:e(l).database_connection.$error&&e(l).database_connection.$errors[0].$message,required:""},{default:d(()=>[t(_,{modelValue:v.value.database_connection,"onUpdate:modelValue":[$[1]||($[1]=h=>v.value.database_connection=h),i],"content-loading":o.isFetchingInitialData,invalid:e(l).database_connection.$error,options:s,"can-deselect":!1,"can-clear":!1},null,8,["modelValue","content-loading","invalid","options"])]),_:1},8,["label","content-loading","error"]),t(u,{label:g.$t("wizard.database.db_path"),error:e(l).database_name.$error&&e(l).database_name.$errors[0].$message,"content-loading":o.isFetchingInitialData,required:""},{default:d(()=>[t(B,{modelValue:v.value.database_name,"onUpdate:modelValue":$[2]||($[2]=h=>v.value.database_name=h),"content-loading":o.isFetchingInitialData,invalid:e(l).database_name.$error},null,8,["modelValue","content-loading","invalid"])]),_:1},8,["label","error","content-loading"])]),le(t(w,{"content-loading":o.isFetchingInitialData,type:"submit",class:"mt-4",loading:o.isSaving,disabled:o.isSaving},{left:d(h=>[o.isSaving?G("",!0):(q(),M(f,{key:0,name:"SaveIcon",class:x(h.class)},null,8,["class"]))]),default:d(()=>[N(" "+P(g.$t("wizard.save_cont")),1)]),_:1},8,["content-loading","loading","disabled"]),[[re,!o.isFetchingInitialData]])],32)}}},Ze={components:{Mysql:Re,Pgsql:je,Sqlite:Ye},emits:["next"],setup(o,{emit:S}){const D=z("mysql"),n=z(!1),{t:s}=O.useI18n(),a=de(),p=Y(),m=k(()=>p.currentDataBaseData);async function v(c){let l={connection:c};const I=await p.fetchInstallationDatabase(l);I.data.success&&(m.value.database_connection=I.data.config.database_connection),c==="sqlite"?m.value.database_name=I.data.config.database_name:m.value.database_name=null}async function r(c){n.value=!0;try{let l=await p.addInstallationDatabase(c);if(n.value=!1,l.data.success){await p.addInstallationFinish(),S("next",3),a.showNotification({type:"success",message:s("wizard.success."+l.data.success)});return}else if(l.data.error){if(l.data.requirement){a.showNotification({type:"error",message:s("wizard.errors."+l.data.error,{version:l.data.requirement.minimum,name:c.value.database_connection})});return}a.showNotification({type:"error",message:s("wizard.errors."+l.data.error)})}else l.data.errors?a.showNotification({type:"error",message:l.data.errors[0]}):l.data.error_message&&a.showNotification({type:"error",message:l.data.error_message})}catch{a.showNotification({type:"error",message:s("validation.something_went_wrong")}),n.value=!1}finally{n.value=!1}}return{databaseData:m,database_connection:D,isSaving:n,getDatabaseConfig:v,next:r}}};function Je(o,S,D,n,s,a){const p=b("BaseWizardStep");return q(),M(p,{title:o.$t("wizard.database.database"),description:o.$t("wizard.database.desc"),"step-container":"w-full p-8 mb-8 bg-white border border-gray-200 border-solid rounded md:w-full"},{default:d(()=>[(q(),M(ue(n.databaseData.database_connection),{"config-data":n.databaseData,"is-saving":n.isSaving,onOnChangeDriver:n.getDatabaseConfig,onSubmitData:n.next},null,40,["config-data","is-saving","onOnChangeDriver","onSubmitData"]))]),_:1},8,["title","description"])}const Ke=se(Ze,[["render",Je]]),He={class:"w-full md:w-2/3"},Qe=C("p",{class:"mt-4 mb-0 text-sm text-gray-600"},"Notes:",-1),Xe=C("ul",{class:"w-full text-gray-600 list-disc list-inside"},[C("li",{class:"text-sm leading-8"},[N(" App domain should not contain "),C("b",{class:"inline-block px-1 bg-gray-100 rounded-sm"},"https://"),N(" or "),C("b",{class:"inline-block px-1 bg-gray-100 rounded-sm"},"http"),N(" in front of the domain. ")]),C("li",{class:"text-sm leading-8"},[N(" If you're accessing the website on a different port, please mention the port. For example: "),C("b",{class:"inline-block px-1 bg-gray-100"},"localhost:8080")])],-1),ea={__name:"Step4VerifyDomain",emits:["next"],setup(o,{emit:S}){const D=S,n=A({app_domain:window.location.origin.replace(/(^\w+:|^)\/\//,"")}),s=z(!1),{t:a}=O.useI18n(),p=te("utils"),m=i=>p.checkValidDomainUrl(i),v=Y(),r=de(),c={app_domain:{required:y.withMessage(a("validation.required"),V),isUrl:y.withMessage(a("validation.invalid_domain_url"),m)}},l=R(c,k(()=>n));async function I(){if(l.value.$touch(),l.value.$invalid)return!0;s.value=!0;try{await v.setInstallationDomain(n),await v.installationLogin(),(await v.checkAutheticated()).data&&D("next",4),s.value=!1}catch{r.showNotification({type:"error",message:a("wizard.verify_domain.failed")}),s.value=!1}}return(i,g)=>{const $=b("BaseInput"),B=b("BaseInputGroup"),u=b("BaseButton"),_=b("BaseWizardStep");return q(),M(_,{title:i.$t("wizard.verify_domain.title"),description:i.$t("wizard.verify_domain.desc")},{default:d(()=>[C("div",He,[t(B,{label:i.$t("wizard.verify_domain.app_domain"),error:e(l).app_domain.$error&&e(l).app_domain.$errors[0].$message,required:""},{default:d(()=>[t($,{modelValue:n.app_domain,"onUpdate:modelValue":g[0]||(g[0]=f=>n.app_domain=f),invalid:e(l).app_domain.$error,type:"text",onInput:g[1]||(g[1]=f=>e(l).app_domain.$touch())},null,8,["modelValue","invalid"])]),_:1},8,["label","error"])]),Qe,Xe,t(u,{loading:s.value,disabled:s.value,class:"mt-8",onClick:I},{default:d(()=>[N(P(i.$t("wizard.verify_domain.verify_now")),1)]),_:1},8,["loading","disabled"])]),_:1},8,["title","description"])}}},aa={class:"grid grid-cols-1 gap-4 mb-4 md:grid-cols-2 md:mb-6"},ta={class:"grid grid-cols-1 gap-4 mb-4 md:grid-cols-2 md:mb-6"},na={class:"grid grid-cols-1 gap-4 mb-4 md:grid-cols-2 md:mb-6"},ia={class:"grid grid-cols-1 gap-4 mb-6 md:grid-cols-2"},oa={__name:"SmtpMailDriver",props:{isSaving:{type:Boolean,require:!0,default:!1},isFetchingInitialData:{type:Boolean,require:!0,default:!1}},emits:["submit-data","on-change-driver"],setup(o,{emit:S}){const D=S;let n=z(!1);const s=A(["tls","ssl","starttls"]),{t:a}=O.useI18n(),p=ee(),m=k(()=>p.smtpConfig),v=k(()=>n.value?"text":"password");m.value.mail_driver="smtp";const r=k(()=>({smtpConfig:{mail_driver:{required:y.withMessage(a("validation.required"),V)},mail_host:{required:y.withMessage(a("validation.required"),V)},mail_port:{required:y.withMessage(a("validation.required"),V),numeric:y.withMessage(a("validation.numbers_only"),ne)},mail_encryption:{required:y.withMessage(a("validation.required"),V)},from_mail:{required:y.withMessage(a("validation.required"),V),email:y.withMessage(a("validation.email_incorrect"),X)},from_name:{required:y.withMessage(a("validation.required"),V)}}})),c=R(r,k(()=>p));async function l(){return c.value.$touch(),c.value.$invalid||D("submit-data",p.smtpConfig),!1}function I(){c.value.smtpConfig.mail_driver.$touch(),D("on-change-driver",p.smtpConfig.mail_driver)}return(i,g)=>{const $=b("BaseMultiselect"),B=b("BaseInputGroup"),u=b("BaseInput"),_=b("BaseIcon"),f=b("BaseButton");return q(),U("form",{onSubmit:T(l,["prevent"])},[C("div",aa,[t(B,{label:i.$t("wizard.mail.driver"),"content-loading":o.isFetchingInitialData,error:e(c).smtpConfig.mail_driver.$error&&e(c).smtpConfig.mail_driver.$errors[0].$message,required:""},{default:d(()=>[t($,{modelValue:m.value.mail_driver,"onUpdate:modelValue":[g[0]||(g[0]=w=>m.value.mail_driver=w),I],options:e(p).mail_drivers,"can-deselect":!1,"content-loading":o.isFetchingInitialData,invalid:e(c).smtpConfig.mail_driver.$error},null,8,["modelValue","options","content-loading","invalid"])]),_:1},8,["label","content-loading","error"]),t(B,{label:i.$t("wizard.mail.host"),"content-loading":o.isFetchingInitialData,error:e(c).smtpConfig.mail_host.$error&&e(c).smtpConfig.mail_host.$errors[0].$message,required:""},{default:d(()=>[t(u,{modelValue:m.value.mail_host,"onUpdate:modelValue":g[1]||(g[1]=w=>m.value.mail_host=w),modelModifiers:{trim:!0},invalid:e(c).smtpConfig.mail_host.$error,"content-loading":o.isFetchingInitialData,type:"text",name:"mail_host",onInput:g[2]||(g[2]=w=>e(c).smtpConfig.mail_host.$touch())},null,8,["modelValue","invalid","content-loading"])]),_:1},8,["label","content-loading","error"])]),C("div",ta,[t(B,{label:i.$t("wizard.mail.username"),"content-loading":o.isFetchingInitialData},{default:d(()=>[t(u,{modelValue:m.value.mail_username,"onUpdate:modelValue":g[3]||(g[3]=w=>m.value.mail_username=w),modelModifiers:{trim:!0},"content-loading":o.isFetchingInitialData,type:"text",name:"db_name"},null,8,["modelValue","content-loading"])]),_:1},8,["label","content-loading"]),t(B,{label:i.$t("wizard.mail.password"),"content-loading":o.isFetchingInitialData},{default:d(()=>[t(u,{modelValue:m.value.mail_password,"onUpdate:modelValue":g[6]||(g[6]=w=>m.value.mail_password=w),modelModifiers:{trim:!0},type:v.value,"content-loading":o.isFetchingInitialData,autocomplete:"off","data-lpignore":"true",name:"password"},{right:d(()=>[e(n)?(q(),M(_,{key:0,name:"EyeOffIcon",class:"w-5 h-5 mr-1 text-gray-500 cursor-pointer",onClick:g[4]||(g[4]=w=>K(n)?n.value=!e(n):n=!e(n))})):(q(),M(_,{key:1,name:"EyeIcon",class:"w-5 h-5 mr-1 text-gray-500 cursor-pointer",onClick:g[5]||(g[5]=w=>K(n)?n.value=!e(n):n=!e(n))}))]),_:1},8,["modelValue","type","content-loading"])]),_:1},8,["label","content-loading"])]),C("div",na,[t(B,{label:i.$t("wizard.mail.port"),error:e(c).smtpConfig.mail_port.$error&&e(c).smtpConfig.mail_port.$errors[0].$message,"content-loading":o.isFetchingInitialData,required:""},{default:d(()=>[t(u,{modelValue:m.value.mail_port,"onUpdate:modelValue":g[7]||(g[7]=w=>m.value.mail_port=w),modelModifiers:{trim:!0},invalid:e(c).smtpConfig.mail_port.$error,"content-loading":o.isFetchingInitialData,type:"text",name:"mail_port",onInput:g[8]||(g[8]=w=>e(c).smtpConfig.mail_port.$touch())},null,8,["modelValue","invalid","content-loading"])]),_:1},8,["label","error","content-loading"]),t(B,{label:i.$t("wizard.mail.encryption"),error:e(c).smtpConfig.mail_encryption.$error&&e(c).smtpConfig.mail_encryption.$errors[0].$message,"content-loading":o.isFetchingInitialData,required:""},{default:d(()=>[t($,{modelValue:m.value.mail_encryption,"onUpdate:modelValue":g[9]||(g[9]=w=>m.value.mail_encryption=w),modelModifiers:{trim:!0},options:s,"can-deselect":!1,invalid:e(c).smtpConfig.mail_encryption.$error,"content-loading":o.isFetchingInitialData,onInput:g[10]||(g[10]=w=>e(c).smtpConfig.mail_encryption.$touch())},null,8,["modelValue","options","invalid","content-loading"])]),_:1},8,["label","error","content-loading"])]),C("div",ia,[t(B,{label:i.$t("wizard.mail.from_mail"),error:e(c).smtpConfig.from_mail.$error&&e(c).smtpConfig.from_mail.$errors[0].$message,"content-loading":o.isFetchingInitialData,required:""},{default:d(()=>[t(u,{modelValue:m.value.from_mail,"onUpdate:modelValue":g[11]||(g[11]=w=>m.value.from_mail=w),modelModifiers:{trim:!0},invalid:e(c).smtpConfig.from_mail.$error,"content-loading":o.isFetchingInitialData,type:"text",name:"from_mail",onInput:g[12]||(g[12]=w=>e(c).smtpConfig.from_mail.$touch())},null,8,["modelValue","invalid","content-loading"])]),_:1},8,["label","error","content-loading"]),t(B,{label:i.$t("wizard.mail.from_name"),error:e(c).smtpConfig.from_name.$error&&e(c).smtpConfig.from_name.$errors[0].$message,"content-loading":o.isFetchingInitialData,required:""},{default:d(()=>[t(u,{modelValue:m.value.from_name,"onUpdate:modelValue":g[13]||(g[13]=w=>m.value.from_name=w),modelModifiers:{trim:!0},invalid:e(c).smtpConfig.from_name.$error,"content-loading":o.isFetchingInitialData,type:"text",name:"from_name",onInput:g[14]||(g[14]=w=>e(c).smtpConfig.from_name.$touch())},null,8,["modelValue","invalid","content-loading"])]),_:1},8,["label","error","content-loading"])]),t(f,{loading:o.isSaving,disabled:o.isSaving,"content-loading":o.isFetchingInitialData,class:"mt-4"},{left:d(w=>[o.isSaving?G("",!0):(q(),M(_,{key:0,name:"SaveIcon",class:x(w.class)},null,8,["class"]))]),default:d(()=>[N(" "+P(i.$t("general.save")),1)]),_:1},8,["loading","disabled","content-loading"])],32)}}},la={class:"grid grid-cols-1 gap-4 mb-4 md:grid-cols-2 lg:mb-6 md:mb-6"},ra={class:"grid grid-cols-1 gap-4 mb-4 md:grid-cols-2 lg:mb-6 md:mb-6"},sa={class:"grid grid-cols-1 gap-4 mb-6 md:grid-cols-2"},da={__name:"MailgunMailDriver",props:{isSaving:{type:Boolean,require:!0,default:!1},isFetchingInitialData:{type:Boolean,require:!0,default:!1}},emits:["submit-data","on-change-driver"],setup(o,{emit:S}){const D=S;let n=z(!1);const s=ee(),{t:a}=O.useI18n(),p=k(()=>s.mailgunConfig),m=k(()=>n.value?"text":"password");p.value.mail_driver="mailgun";const v=k(()=>({mailgunConfig:{mail_driver:{required:y.withMessage(a("validation.required"),V)},mail_mailgun_domain:{required:y.withMessage(a("validation.required"),V)},mail_mailgun_endpoint:{required:y.withMessage(a("validation.required"),V)},mail_mailgun_secret:{required:y.withMessage(a("validation.required"),V)},from_mail:{required:y.withMessage(a("validation.required"),V),email:X},from_name:{required:y.withMessage(a("validation.required"),V)}}})),r=R(v,k(()=>s));function c(){return r.value.$touch(),r.value.$invalid||D("submit-data",s.mailgunConfig),!1}function l(){r.value.mailgunConfig.mail_driver.$touch(),D("on-change-driver",s.mailgunConfig.mail_driver)}return(I,i)=>{const g=b("BaseMultiselect"),$=b("BaseInputGroup"),B=b("BaseInput"),u=b("BaseIcon"),_=b("BaseButton");return q(),U("form",{onSubmit:T(c,["prevent"])},[C("div",la,[t($,{label:I.$t("wizard.mail.driver"),"content-loading":o.isFetchingInitialData,error:e(r).mailgunConfig.mail_driver.$error&&e(r).mailgunConfig.mail_driver.$errors[0].$message,required:""},{default:d(()=>[t(g,{modelValue:p.value.mail_driver,"onUpdate:modelValue":[i[0]||(i[0]=f=>p.value.mail_driver=f),l],options:e(s).mail_drivers,"can-deselect":!1,invalid:e(r).mailgunConfig.mail_driver.$error,"content-loading":o.isFetchingInitialData},null,8,["modelValue","options","invalid","content-loading"])]),_:1},8,["label","content-loading","error"]),t($,{label:I.$t("wizard.mail.mailgun_domain"),"content-loading":o.isFetchingInitialData,error:e(r).mailgunConfig.mail_mailgun_domain.$error&&e(r).mailgunConfig.mail_mailgun_domain.$errors[0].$message,required:""},{default:d(()=>[t(B,{modelValue:p.value.mail_mailgun_domain,"onUpdate:modelValue":i[1]||(i[1]=f=>p.value.mail_mailgun_domain=f),modelModifiers:{trim:!0},invalid:e(r).mailgunConfig.mail_mailgun_domain.$error,"content-loading":o.isFetchingInitialData,type:"text",name:"mailgun_domain",onInput:i[2]||(i[2]=f=>e(r).mailgunConfig.mail_mailgun_domain.$touch())},null,8,["modelValue","invalid","content-loading"])]),_:1},8,["label","content-loading","error"])]),C("div",ra,[t($,{label:I.$t("wizard.mail.mailgun_secret"),"content-loading":o.isFetchingInitialData,error:e(r).mailgunConfig.mail_mailgun_secret.$error&&e(r).mailgunConfig.mail_mailgun_secret.$errors[0].$message,required:""},{default:d(()=>[t(B,{modelValue:p.value.mail_mailgun_secret,"onUpdate:modelValue":i[5]||(i[5]=f=>p.value.mail_mailgun_secret=f),modelModifiers:{trim:!0},invalid:e(r).mailgunConfig.mail_mailgun_secret.$error,type:m.value,"content-loading":o.isFetchingInitialData,name:"mailgun_secret",autocomplete:"off","data-lpignore":"true",onInput:i[6]||(i[6]=f=>e(r).mailgunConfig.mail_mailgun_secret.$touch())},{right:d(()=>[e(n)?(q(),M(u,{key:0,name:"EyeOffIcon",class:"w-5 h-5 mr-1 text-gray-500 cursor-pointer",onClick:i[3]||(i[3]=f=>K(n)?n.value=!e(n):n=!e(n))})):(q(),M(u,{key:1,name:"EyeIcon",class:"w-5 h-5 mr-1 text-gray-500 cursor-pointer",onClick:i[4]||(i[4]=f=>K(n)?n.value=!e(n):n=!e(n))}))]),_:1},8,["modelValue","invalid","type","content-loading"])]),_:1},8,["label","content-loading","error"]),t($,{label:I.$t("wizard.mail.mailgun_endpoint"),"content-loading":o.isFetchingInitialData,error:e(r).mailgunConfig.mail_mailgun_endpoint.$error&&e(r).mailgunConfig.mail_mailgun_endpoint.$errors[0].$message,required:""},{default:d(()=>[t(B,{modelValue:p.value.mail_mailgun_endpoint,"onUpdate:modelValue":i[7]||(i[7]=f=>p.value.mail_mailgun_endpoint=f),modelModifiers:{trim:!0},invalid:e(r).mailgunConfig.mail_mailgun_endpoint.$error,"content-loading":o.isFetchingInitialData,type:"text",name:"mailgun_endpoint",onInput:i[8]||(i[8]=f=>e(r).mailgunConfig.mail_mailgun_endpoint.$touch())},null,8,["modelValue","invalid","content-loading"])]),_:1},8,["label","content-loading","error"])]),C("div",sa,[t($,{label:I.$t("wizard.mail.from_mail"),"content-loading":o.isFetchingInitialData,error:e(r).mailgunConfig.from_mail.$error&&e(r).mailgunConfig.from_mail.$errors[0].$message,required:""},{default:d(()=>[t(B,{modelValue:p.value.from_mail,"onUpdate:modelValue":i[9]||(i[9]=f=>p.value.from_mail=f),modelModifiers:{trim:!0},name:"from_mail",type:"text",invalid:e(r).mailgunConfig.from_mail.$error,"content-loading":o.isFetchingInitialData,onInput:i[10]||(i[10]=f=>e(r).mailgunConfig.from_mail.$touch())},null,8,["modelValue","invalid","content-loading"])]),_:1},8,["label","content-loading","error"]),t($,{label:I.$t("wizard.mail.from_name"),"content-loading":o.isFetchingInitialData,error:e(r).mailgunConfig.from_name.$error&&e(r).mailgunConfig.from_name.$errors[0].$message,required:""},{default:d(()=>[t(B,{modelValue:p.value.from_name,"onUpdate:modelValue":i[11]||(i[11]=f=>p.value.from_name=f),modelModifiers:{trim:!0},invalid:e(r).mailgunConfig.from_name.$error,"content-loading":o.isFetchingInitialData,type:"text",name:"from_name",onInput:i[12]||(i[12]=f=>e(r).mailgunConfig.from_name.$touch())},null,8,["modelValue","invalid","content-loading"])]),_:1},8,["label","content-loading","error"])]),t(_,{loading:I.loading,disabled:o.isSaving,"content-loading":o.isFetchingInitialData,class:"mt-4"},{left:d(f=>[o.isSaving?G("",!0):(q(),M(u,{key:0,name:"SaveIcon",class:x(f.class)},null,8,["class"]))]),default:d(()=>[N(" "+P(I.$t("general.save")),1)]),_:1},8,["loading","disabled","content-loading"])],32)}}},ua={class:"grid grid-cols-1 gap-4 mb-4 md:grid-cols-2 md:mb-6"},ma={class:"grid grid-cols-1 gap-4 mb-4 md:grid-cols-2 md:mb-6"},ca={class:"grid grid-cols-1 gap-4 mb-4 md:grid-cols-2 md:mb-6"},ga={class:"grid grid-cols-1 gap-4 mb-6 md:grid-cols-2"},va={__name:"SesMailDriver",props:{isSaving:{type:Boolean,require:!0,default:!1},isFetchingInitialData:{type:Boolean,require:!0,default:!1}},emits:["submit-data","on-change-driver"],setup(o,{emit:S}){const D=S,{t:n}=O.useI18n(),s=A(["tls","ssl","starttls"]);let a=z(!1);const p=ee(),m=k(()=>p.sesConfig);m.value.mail_driver="ses";const v=k(()=>({sesConfig:{mail_driver:{required:y.withMessage(n("validation.required"),V)},mail_host:{required:y.withMessage(n("validation.required"),V)},mail_port:{required:y.withMessage(n("validation.required"),V),numeric:ne},mail_ses_key:{required:y.withMessage(n("validation.required"),V)},mail_ses_secret:{required:y.withMessage(n("validation.required"),V)},mail_encryption:{required:y.withMessage(n("validation.required"),V)},from_mail:{required:y.withMessage(n("validation.required"),V),email:y.withMessage(n("validation.email_incorrect"),X)},from_name:{required:y.withMessage(n("validation.required"),V)}}})),r=R(v,k(()=>p));async function c(){return r.value.$touch(),r.value.$invalid||D("submit-data",p.sesConfig),!1}function l(){r.value.sesConfig.mail_driver.$touch(),D("on-change-driver",p.sesConfig.mail_driver)}return(I,i)=>{const g=b("BaseMultiselect"),$=b("BaseInputGroup"),B=b("BaseInput"),u=b("BaseIcon"),_=b("BaseButton");return q(),U("form",{onSubmit:T(c,["prevent"])},[C("div",ua,[t($,{label:I.$t("wizard.mail.driver"),"content-loading":o.isFetchingInitialData,error:e(r).sesConfig.mail_driver.$error&&e(r).sesConfig.mail_driver.$errors[0].$message,required:""},{default:d(()=>[t(g,{modelValue:m.value.mail_driver,"onUpdate:modelValue":[i[0]||(i[0]=f=>m.value.mail_driver=f),l],options:e(p).mail_drivers,"can-deselect":!1,"content-loading":o.isFetchingInitialData,invalid:e(r).sesConfig.mail_driver.$error},null,8,["modelValue","options","content-loading","invalid"])]),_:1},8,["label","content-loading","error"]),t($,{label:I.$t("wizard.mail.host"),"content-loading":o.isFetchingInitialData,error:e(r).sesConfig.mail_host.$error&&e(r).sesConfig.mail_host.$errors[0].$message,required:""},{default:d(()=>[t(B,{modelValue:m.value.mail_host,"onUpdate:modelValue":i[1]||(i[1]=f=>m.value.mail_host=f),modelModifiers:{trim:!0},invalid:e(r).sesConfig.mail_host.$error,"content-loading":o.isFetchingInitialData,type:"text",name:"mail_host",onInput:i[2]||(i[2]=f=>e(r).sesConfig.mail_host.$touch())},null,8,["modelValue","invalid","content-loading"])]),_:1},8,["label","content-loading","error"])]),C("div",ma,[t($,{label:I.$t("wizard.mail.port"),"content-loading":o.isFetchingInitialData,error:e(r).sesConfig.mail_port.$error&&e(r).sesConfig.mail_port.$errors[0].$message,required:""},{default:d(()=>[t(B,{modelValue:m.value.mail_port,"onUpdate:modelValue":i[3]||(i[3]=f=>m.value.mail_port=f),modelModifiers:{trim:!0},invalid:e(r).sesConfig.mail_port.$error,"content-loading":o.isFetchingInitialData,type:"text",name:"mail_port",onInput:i[4]||(i[4]=f=>e(r).sesConfig.mail_port.$touch())},null,8,["modelValue","invalid","content-loading"])]),_:1},8,["label","content-loading","error"]),t($,{label:I.$t("wizard.mail.encryption"),"content-loading":o.isFetchingInitialData,error:e(r).sesConfig.mail_encryption.$error&&e(r).sesConfig.mail_encryption.$errors[0].$message,required:""},{default:d(()=>[t(g,{modelValue:m.value.mail_encryption,"onUpdate:modelValue":i[5]||(i[5]=f=>m.value.mail_encryption=f),modelModifiers:{trim:!0},invalid:e(r).sesConfig.mail_encryption.$error,options:s,"content-loading":o.isFetchingInitialData,onInput:i[6]||(i[6]=f=>e(r).sesConfig.mail_encryption.$touch())},null,8,["modelValue","invalid","options","content-loading"])]),_:1},8,["label","content-loading","error"])]),C("div",ca,[t($,{label:I.$t("wizard.mail.from_mail"),"content-loading":o.isFetchingInitialData,error:e(r).sesConfig.from_mail.$error&&e(r).sesConfig.from_mail.$errors[0].$message,required:""},{default:d(()=>[t(B,{modelValue:m.value.from_mail,"onUpdate:modelValue":i[7]||(i[7]=f=>m.value.from_mail=f),modelModifiers:{trim:!0},invalid:e(r).sesConfig.from_mail.$error,"content-loading":o.isFetchingInitialData,type:"text",name:"from_mail",onInput:i[8]||(i[8]=f=>e(r).sesConfig.from_mail.$touch())},null,8,["modelValue","invalid","content-loading"])]),_:1},8,["label","content-loading","error"]),t($,{label:I.$t("wizard.mail.from_name"),"content-loading":o.isFetchingInitialData,error:e(r).sesConfig.from_name.$error&&e(r).sesConfig.from_name.$errors[0].$message,required:""},{default:d(()=>[t(B,{modelValue:m.value.from_name,"onUpdate:modelValue":i[9]||(i[9]=f=>m.value.from_name=f),modelModifiers:{trim:!0},invalid:e(r).sesConfig.from_name.$error,"content-loading":o.isFetchingInitialData,type:"text",name:"name",onInput:i[10]||(i[10]=f=>e(r).sesConfig.from_name.$touch())},null,8,["modelValue","invalid","content-loading"])]),_:1},8,["label","content-loading","error"])]),C("div",ga,[t($,{label:I.$t("wizard.mail.ses_key"),"content-loading":o.isFetchingInitialData,error:e(r).sesConfig.mail_ses_key.$error&&e(r).sesConfig.mail_ses_key.$errors[0].$message,required:""},{default:d(()=>[t(B,{modelValue:m.value.mail_ses_key,"onUpdate:modelValue":i[11]||(i[11]=f=>m.value.mail_ses_key=f),modelModifiers:{trim:!0},invalid:e(r).sesConfig.mail_ses_key.$error,"content-loading":o.isFetchingInitialData,type:"text",name:"mail_ses_key",onInput:i[12]||(i[12]=f=>e(r).sesConfig.mail_ses_key.$touch())},null,8,["modelValue","invalid","content-loading"])]),_:1},8,["label","content-loading","error"]),t($,{label:I.$t("wizard.mail.ses_secret"),"content-loading":o.isFetchingInitialData,error:e(r).sesConfig.mail_ses_secret.$error&&e(r).sesConfig.mail_ses_secret.$errors[0].$message,required:""},{default:d(()=>[t(B,{modelValue:m.value.mail_ses_secret,"onUpdate:modelValue":i[15]||(i[15]=f=>m.value.mail_ses_secret=f),modelModifiers:{trim:!0},invalid:e(r).sesConfig.mail_ses_secret.$error,type:I.getInputType,"content-loading":o.isFetchingInitialData,name:"mail_ses_secret",autocomplete:"off","data-lpignore":"true",onInput:i[16]||(i[16]=f=>e(r).sesConfig.mail_ses_secret.$touch())},{right:d(()=>[e(a)?(q(),M(u,{key:0,name:"EyeOffIcon",class:"w-5 h-5 mr-1 text-gray-500 cursor-pointer",onClick:i[13]||(i[13]=f=>K(a)?a.value=!e(a):a=!e(a))})):(q(),M(u,{key:1,name:"EyeIcon",class:"w-5 h-5 mr-1 text-gray-500 cursor-pointer",onClick:i[14]||(i[14]=f=>K(a)?a.value=!e(a):a=!e(a))}))]),_:1},8,["modelValue","invalid","type","content-loading"])]),_:1},8,["label","content-loading","error"])]),t(_,{loading:o.isSaving,disabled:o.isSaving,"content-loading":o.isFetchingInitialData,class:"mt-4"},{left:d(f=>[o.isSaving?G("",!0):(q(),M(u,{key:0,name:"SaveIcon",class:x(f.class)},null,8,["class"]))]),default:d(()=>[N(" "+P(I.$t("general.save")),1)]),_:1},8,["loading","disabled","content-loading"])],32)}}},pa={class:"grid grid-cols-1 gap-4 mb-4 md:grid-cols-2 md:mb-6"},fa={class:"grid grid-cols-1 gap-4 mb-6 md:grid-cols-2"},ce={__name:"BasicMailDriver",props:{isSaving:{type:Boolean,require:!0,default:!1},isFetchingInitialData:{type:Boolean,require:!0,default:!1}},emits:["submit-data","on-change-driver"],setup(o,{emit:S}){const D=S,{t:n}=O.useI18n(),s=ee(),a=k(()=>s.basicMailConfig);k(()=>s.mail_drivers),a.value.mail_driver="mail";const p=k(()=>({basicMailConfig:{mail_driver:{required:y.withMessage(n("validation.required"),V)},from_mail:{required:y.withMessage(n("validation.required"),V),email:y.withMessage(n("validation.email_incorrect"),X)},from_name:{required:y.withMessage(n("validation.required"),V)}}})),m=R(p,k(()=>s));function v(){return m.value.$touch(),m.value.$invalid||D("submit-data",s.basicMailConfig),!1}function r(){var c;m.value.basicMailConfig.mail_driver.$touch(),D("on-change-driver",(c=s==null?void 0:s.basicMailConfig)==null?void 0:c.mail_driver)}return(c,l)=>{const I=b("BaseMultiselect"),i=b("BaseInputGroup"),g=b("BaseInput"),$=b("BaseIcon"),B=b("BaseButton");return q(),U("form",{onSubmit:T(v,["prevent"])},[C("div",pa,[t(i,{label:c.$t("wizard.mail.driver"),"content-loading":o.isFetchingInitialData,error:e(m).basicMailConfig.mail_driver.$error&&e(m).basicMailConfig.mail_driver.$errors[0].$message,required:""},{default:d(()=>[t(I,{modelValue:a.value.mail_driver,"onUpdate:modelValue":[l[0]||(l[0]=u=>a.value.mail_driver=u),r],invalid:e(m).basicMailConfig.mail_driver.$error,options:e(s).mail_drivers,"can-deselect":!1,"content-loading":o.isFetchingInitialData},null,8,["modelValue","invalid","options","content-loading"])]),_:1},8,["label","content-loading","error"])]),C("div",fa,[t(i,{label:c.$t("wizard.mail.from_name"),"content-loading":o.isFetchingInitialData,error:e(m).basicMailConfig.from_name.$error&&e(m).basicMailConfig.from_name.$errors[0].$message,required:""},{default:d(()=>[t(g,{modelValue:a.value.from_name,"onUpdate:modelValue":l[1]||(l[1]=u=>a.value.from_name=u),modelModifiers:{trim:!0},invalid:e(m).basicMailConfig.from_name.$error,"content-loading":o.isFetchingInitialData,type:"text",name:"name",onInput:l[2]||(l[2]=u=>e(m).basicMailConfig.from_name.$touch())},null,8,["modelValue","invalid","content-loading"])]),_:1},8,["label","content-loading","error"]),t(i,{label:c.$t("wizard.mail.from_mail"),"content-loading":o.isFetchingInitialData,error:e(m).basicMailConfig.from_mail.$error&&e(m).basicMailConfig.from_mail.$errors[0].$message,required:""},{default:d(()=>[t(g,{modelValue:a.value.from_mail,"onUpdate:modelValue":l[3]||(l[3]=u=>a.value.from_mail=u),modelModifiers:{trim:!0},invalid:e(m).basicMailConfig.from_mail.$error,"content-loading":o.isFetchingInitialData,type:"text",onInput:l[4]||(l[4]=u=>e(m).basicMailConfig.from_mail.$touch())},null,8,["modelValue","invalid","content-loading"])]),_:1},8,["label","content-loading","error"])]),t(B,{loading:o.isSaving,disabled:o.isSaving,"content-loading":o.isFetchingInitialData,class:"mt-4"},{left:d(u=>[o.isSaving?G("",!0):(q(),M($,{key:0,name:"SaveIcon",class:x(u.class)},null,8,["class"]))]),default:d(()=>[N(" "+P(c.$t("general.save")),1)]),_:1},8,["loading","disabled","content-loading"])],32)}}},_a={components:{Smtp:oa,Mailgun:da,Ses:va,sendmail:ce,Mail:ce},emits:["next"],setup(o,{emit:S}){const D=z(!1),n=z(!1),s=ee();s.mail_driver="mail",p();function a(v){s.mail_driver=v}async function p(){n.value=!0,await s.fetchMailDrivers(),n.value=!1}async function m(v){D.value=!0;let r=await s.updateMailConfig(v);D.value=!1,r.data.success&&await S("next",5)}return{mailDriverStore:s,isSaving:D,isFetchingInitialData:n,changeDriver:a,next:m}}};function ba(o,S,D,n,s,a){const p=b("BaseWizardStep");return q(),M(p,{title:o.$t("wizard.mail.mail_config"),description:o.$t("wizard.mail.mail_config_desc")},{default:d(()=>[C("form",{action:"",onSubmit:S[1]||(S[1]=T((...m)=>n.next&&n.next(...m),["prevent"]))},[(q(),M(ue(n.mailDriverStore.mail_driver),{"config-data":n.mailDriverStore.mailConfigData,"is-saving":n.isSaving,"is-fetching-initial-data":n.isFetchingInitialData,onOnChangeDriver:S[0]||(S[0]=m=>n.changeDriver(m)),onSubmitData:n.next},null,40,["config-data","is-saving","is-fetching-initial-data","onSubmitData"]))],32)]),_:1},8,["title","description"])}const $a=se(_a,[["render",ba]]),wa={class:"grid grid-cols-1 mb-4 md:grid-cols-2 md:mb-6"},ha={class:"grid grid-cols-1 gap-4 mb-4 md:grid-cols-2 md:mb-6"},ya={class:"grid grid-cols-1 gap-4 mb-6 md:grid-cols-2"},Ia={__name:"Step6AccountSettings",emits:["next"],setup(o,{emit:S}){const D=S;let n=z(!1);const s=z(!1),a=z(!1);let p=z(""),m=z(null);const v=ve(),r=ae(),{t:c}=O.useI18n(),l=k(()=>v.userForm),I=k(()=>({userForm:{name:{required:y.withMessage(c("validation.required"),V)},email:{required:y.withMessage(c("validation.required"),V),email:y.withMessage(c("validation.email_incorrect"),X)},password:{required:y.withMessage(c("validation.required"),V),minLength:y.withMessage(c("validation.password_min_length",{count:8}),be(8))},confirm_password:{required:y.withMessage(c("validation.required"),$e(v.userForm.password)),sameAsPassword:y.withMessage(c("validation.password_incorrect"),we(v.userForm.password))}}})),i=R(I,k(()=>v));function g(u,_){m.value=_}function $(){m.value=null}async function B(){if(i.value.userForm.$touch(),i.value.userForm.$invalid)return!0;n.value=!0;let u=await v.updateCurrentUser(l.value);if(n.value=!1,u.data.data){if(m.value){let f=new FormData;f.append("admin_avatar",m.value),await v.uploadAvatar(f)}const _=u.data.data.companies[0];await r.setSelectedCompany(_),D("next",6)}}return(u,_)=>{const f=b("BaseFileUploader"),w=b("BaseInputGroup"),h=b("BaseInput"),L=b("EyeOffIcon"),Z=b("EyeIcon"),J=b("BaseIcon"),H=b("BaseButton"),E=b("BaseWizardStep");return q(),M(E,{title:u.$t("wizard.account_info"),description:u.$t("wizard.account_info_desc")},{default:d(()=>[C("form",{action:"",onSubmit:T(B,["prevent"])},[C("div",wa,[t(w,{label:u.$t("settings.account_settings.profile_picture")},{default:d(()=>[t(f,{avatar:!0,"preview-image":e(p),onChange:g,onRemove:$},null,8,["preview-image"])]),_:1},8,["label"])]),C("div",ha,[t(w,{label:u.$t("wizard.name"),error:e(i).userForm.name.$error&&e(i).userForm.name.$errors[0].$message,required:""},{default:d(()=>[t(h,{modelValue:l.value.name,"onUpdate:modelValue":_[0]||(_[0]=F=>l.value.name=F),modelModifiers:{trim:!0},invalid:e(i).userForm.name.$error,type:"text",name:"name",onInput:_[1]||(_[1]=F=>e(i).userForm.name.$touch())},null,8,["modelValue","invalid"])]),_:1},8,["label","error"]),t(w,{label:u.$t("wizard.email"),error:e(i).userForm.email.$error&&e(i).userForm.email.$errors[0].$message,required:""},{default:d(()=>[t(h,{modelValue:l.value.email,"onUpdate:modelValue":_[2]||(_[2]=F=>l.value.email=F),modelModifiers:{trim:!0},invalid:e(i).userForm.email.$error,type:"text",name:"email",onInput:_[3]||(_[3]=F=>e(i).userForm.email.$touch())},null,8,["modelValue","invalid"])]),_:1},8,["label","error"])]),C("div",ya,[t(w,{label:u.$t("wizard.password"),error:e(i).userForm.password.$error&&e(i).userForm.password.$errors[0].$message,required:""},{default:d(()=>[t(h,{modelValue:l.value.password,"onUpdate:modelValue":_[6]||(_[6]=F=>l.value.password=F),modelModifiers:{trim:!0},invalid:e(i).userForm.password.$error,type:s.value?"text":"password",name:"password",onInput:_[7]||(_[7]=F=>e(i).userForm.password.$touch())},{right:d(()=>[s.value?(q(),M(L,{key:0,class:"w-5 h-5 mr-1 text-gray-500 cursor-pointer",onClick:_[4]||(_[4]=F=>s.value=!s.value)})):(q(),M(Z,{key:1,class:"w-5 h-5 mr-1 text-gray-500 cursor-pointer",onClick:_[5]||(_[5]=F=>s.value=!s.value)}))]),_:1},8,["modelValue","invalid","type"])]),_:1},8,["label","error"]),t(w,{label:u.$t("wizard.confirm_password"),error:e(i).userForm.confirm_password.$error&&e(i).userForm.confirm_password.$errors[0].$message,required:""},{default:d(()=>[t(h,{modelValue:l.value.confirm_password,"onUpdate:modelValue":_[10]||(_[10]=F=>l.value.confirm_password=F),modelModifiers:{trim:!0},invalid:e(i).userForm.confirm_password.$error,type:a.value?"text":"password",name:"confirm_password",onInput:_[11]||(_[11]=F=>e(i).userForm.confirm_password.$touch())},{right:d(()=>[a.value?(q(),M(J,{key:0,name:"EyeOffIcon",class:"w-5 h-5 mr-1 text-gray-500 cursor-pointer",onClick:_[8]||(_[8]=F=>a.value=!a.value)})):(q(),M(J,{key:1,name:"EyeIcon",class:"w-5 h-5 mr-1 text-gray-500 cursor-pointer",onClick:_[9]||(_[9]=F=>a.value=!a.value)}))]),_:1},8,["modelValue","invalid","type"])]),_:1},8,["label","error"])]),t(H,{loading:e(n),disabled:e(n),class:"mt-4"},{left:d(F=>[e(n)?G("",!0):(q(),M(J,{key:0,name:"SaveIcon",class:x(F.class)},null,8,["class"]))]),default:d(()=>[N(" "+P(u.$t("wizard.save_cont")),1)]),_:1},8,["loading","disabled"])],32)]),_:1},8,["title","description"])}}},qa={class:"grid grid-cols-1 mb-4 md:grid-cols-2 md:mb-6"},Ba={class:"grid grid-cols-1 gap-4 mb-4 md:grid-cols-2 md:mb-6"},Ca={class:"grid grid-cols-1 gap-4 mb-4 md:grid-cols-2 md:mb-6"},Va={class:"grid grid-cols-1 gap-4 mb-6 md:grid-cols-2"},Da={__name:"Step7CompanyInfo",emits:["next"],setup(o,{emit:S}){const D=S;let n=z(!1),s=z(!1);const{t:a}=O.useI18n();let p=z(null),m=z(null),v=z(null);const r=A({name:null,address:{address_street_1:"",address_street_2:"",website:"",country_id:null,state:"",city:"",phone:"",zip:""}}),c=ae(),l=pe();Q(async()=>{var u;n.value=!0,await l.fetchCountries(),n.value=!1,r.address.country_id=(u=l.countries.find(_=>_.code=="US"))==null?void 0:u.id});const I={companyForm:{name:{required:y.withMessage(a("validation.required"),V)},address:{country_id:{required:y.withMessage(a("validation.required"),V)},address_street_1:{maxLength:y.withMessage(a("validation.address_maxlength",{count:255}),me(255))},address_street_2:{maxLength:y.withMessage(a("validation.address_maxlength",{count:255}),me(255))}}}},i=R(I,{companyForm:r});function g(u,_,f,w){v.value=w.name,m.value=_}function $(){m.value=null}async function B(){if(i.value.companyForm.$touch(),i.value.$invalid)return!0;if(s.value=!0,c.updateCompany(r)){if(m.value){let _=new FormData;_.append("company_logo",JSON.stringify({name:v.value,data:m.value})),await c.updateCompanyLogo(_)}s.value=!1,D("next",7)}}return(u,_)=>{const f=b("BaseFileUploader"),w=b("BaseInputGroup"),h=b("BaseInput"),L=b("BaseMultiselect"),Z=b("BaseTextarea"),J=b("BaseIcon"),H=b("BaseButton"),E=b("BaseWizardStep");return q(),M(E,{title:u.$t("wizard.company_info"),description:u.$t("wizard.company_info_desc"),"step-container":"bg-white border border-gray-200 border-solid mb-8 md:w-full p-8 rounded w-full"},{default:d(()=>[C("form",{action:"",onSubmit:T(B,["prevent"])},[C("div",qa,[t(w,{label:u.$t("settings.company_info.company_logo")},{default:d(()=>[t(f,{base64:"","preview-image":e(p),onChange:g,onRemove:$},null,8,["preview-image"])]),_:1},8,["label"])]),C("div",Ba,[t(w,{label:u.$t("wizard.company_name"),error:e(i).companyForm.name.$error&&e(i).companyForm.name.$errors[0].$message,required:""},{default:d(()=>[t(h,{modelValue:r.name,"onUpdate:modelValue":_[0]||(_[0]=F=>r.name=F),modelModifiers:{trim:!0},invalid:e(i).companyForm.name.$error,type:"text",name:"name",onInput:_[1]||(_[1]=F=>e(i).companyForm.name.$touch())},null,8,["modelValue","invalid"])]),_:1},8,["label","error"]),t(w,{label:u.$t("wizard.country"),error:e(i).companyForm.address.country_id.$error&&e(i).companyForm.address.country_id.$errors[0].$message,"content-loading":e(n),required:""},{default:d(()=>[t(L,{modelValue:r.address.country_id,"onUpdate:modelValue":_[2]||(_[2]=F=>r.address.country_id=F),label:"name",invalid:e(i).companyForm.address.country_id.$error,options:e(l).countries,"value-prop":"id","can-deselect":!1,"can-clear":!1,"content-loading":e(n),placeholder:u.$t("general.select_country"),searchable:"","track-by":"name"},null,8,["modelValue","invalid","options","content-loading","placeholder"])]),_:1},8,["label","error","content-loading"])]),C("div",Ca,[t(w,{label:u.$t("wizard.state")},{default:d(()=>[t(h,{modelValue:r.address.state,"onUpdate:modelValue":_[3]||(_[3]=F=>r.address.state=F),name:"state",type:"text"},null,8,["modelValue"])]),_:1},8,["label"]),t(w,{label:u.$t("wizard.city")},{default:d(()=>[t(h,{modelValue:r.address.city,"onUpdate:modelValue":_[4]||(_[4]=F=>r.address.city=F),name:"city",type:"text"},null,8,["modelValue"])]),_:1},8,["label"])]),C("div",Va,[C("div",null,[t(w,{label:u.$t("wizard.address"),error:e(i).companyForm.address.address_street_1.$error&&e(i).companyForm.address.address_street_1.$errors[0].$message},{default:d(()=>[t(Z,{modelValue:r.address.address_street_1,"onUpdate:modelValue":_[5]||(_[5]=F=>r.address.address_street_1=F),modelModifiers:{trim:!0},invalid:e(i).companyForm.address.address_street_1.$error,placeholder:u.$t("general.street_1"),name:"billing_street1",rows:"2",onInput:_[6]||(_[6]=F=>e(i).companyForm.address.address_street_1.$touch())},null,8,["modelValue","invalid","placeholder"])]),_:1},8,["label","error"]),t(w,{error:e(i).companyForm.address.address_street_2.$error&&e(i).companyForm.address.address_street_2.$errors[0].$message,class:"mt-1 lg:mt-2 md:mt-2"},{default:d(()=>[t(Z,{modelValue:r.address.address_street_2,"onUpdate:modelValue":_[7]||(_[7]=F=>r.address.address_street_2=F),invalid:e(i).companyForm.address.address_street_2.$error,placeholder:u.$t("general.street_2"),name:"billing_street2",rows:"2",onInput:_[8]||(_[8]=F=>e(i).companyForm.address.address_street_2.$touch())},null,8,["modelValue","invalid","placeholder"])]),_:1},8,["error"])]),C("div",null,[t(w,{label:u.$t("wizard.zip_code")},{default:d(()=>[t(h,{modelValue:r.address.zip,"onUpdate:modelValue":_[9]||(_[9]=F=>r.address.zip=F),modelModifiers:{trim:!0},type:"text",name:"zip"},null,8,["modelValue"])]),_:1},8,["label"]),t(w,{label:u.$t("wizard.phone"),class:"mt-4"},{default:d(()=>[t(h,{modelValue:r.address.phone,"onUpdate:modelValue":_[10]||(_[10]=F=>r.address.phone=F),modelModifiers:{trim:!0},type:"text",name:"phone"},null,8,["modelValue"])]),_:1},8,["label"])])]),t(H,{loading:e(s),disabled:e(s),class:"mt-4"},{left:d(F=>[e(s)?G("",!0):(q(),M(J,{key:0,name:"SaveIcon",class:x(F.class)},null,8,["class"]))]),default:d(()=>[N(" "+P(u.$t("wizard.save_cont")),1)]),_:1},8,["loading","disabled"])],32)]),_:1},8,["title","description"])}}},Sa={class:"grid grid-cols-1 gap-4 mb-4 md:grid-cols-2 md:mb-6"},Fa={class:"grid grid-cols-1 gap-4 mb-4 md:grid-cols-2 md:mb-6"},Ma={class:"grid grid-cols-1 gap-4 mb-6 md:grid-cols-2"},za={__name:"Step8CompanyPreferences",emits:["next"],setup(o,{emit:S}){const D=S,n=z(!1);let s=z(!1),a=A({currency:1,language:"en",carbon_date_format:"d M Y",time_zone:"UTC",fiscal_year:"1-12"});const{tm:p,t:m}=O.useI18n(),v=fe();s.value=!0,A([{title:p("settings.customization.invoices.allow"),value:"allow"},{title:p("settings.customization.invoices.disable_on_invoice_partial_paid"),value:"disable_on_invoice_partial_paid"},{title:p("settings.customization.invoices.disable_on_invoice_paid"),value:"disable_on_invoice_paid"},{title:p("settings.customization.invoices.disable_on_invoice_sent"),value:"disable_on_invoice_sent"}]);const r=ge(),c=pe(),l=ae(),I=ve(),i=de();let g={key:"fiscal_years"},$={key:"languages"};s.value=!0,Promise.all([c.fetchCurrencies(),c.fetchDateFormats(),c.fetchTimeZones(),c.fetchCountries(),c.fetchConfig(g),c.fetchConfig($)]).then(([f])=>{s.value=!1});const B=k(()=>({currentPreferences:{currency:{required:y.withMessage(m("validation.required"),V)},language:{required:y.withMessage(m("validation.required"),V)},carbon_date_format:{required:y.withMessage(m("validation.required"),V)},time_zone:{required:y.withMessage(m("validation.required"),V)},fiscal_year:{required:y.withMessage(m("validation.required"),V)}}})),u=R(B,{currentPreferences:a});async function _(){if(u.value.currentPreferences.$touch(),u.value.$invalid)return!0;r.openDialog({title:m("general.do_you_wish_to_continue"),message:m("wizard.currency_set_alert"),yesLabel:m("general.ok"),noLabel:m("general.cancel"),variant:"danger",size:"lg",hideNoButton:!1}).then(async f=>{if(f){let w={settings:{...a}};n.value=!0,delete w.settings.discount_per_item;let h=await l.updateCompanySettings({data:w});if(h.data){n.value=!1;let L={settings:{language:a.language}};(await I.updateUserSettings(L)).data&&(D("next","COMPLETED"),i.showNotification({type:"success",message:"Login Successful"}),v.push("/admin/dashboard")),he.set("auth.token",h.data.token)}return!0}return n.value=!1,!0})}return(f,w)=>{const h=b("BaseMultiselect"),L=b("BaseInputGroup"),Z=b("BaseIcon"),J=b("BaseButton"),H=b("BaseWizardStep");return q(),M(H,{title:f.$t("wizard.preferences"),description:f.$t("wizard.preferences_desc"),"step-container":"bg-white border border-gray-200 border-solid mb-8 md:w-full p-8 rounded w-full"},{default:d(()=>[C("form",{action:"",onSubmit:T(_,["prevent"])},[C("div",null,[C("div",Sa,[t(L,{label:f.$t("wizard.currency"),error:e(u).currentPreferences.currency.$error&&e(u).currentPreferences.currency.$errors[0].$message,"content-loading":e(s),required:""},{default:d(()=>[t(h,{modelValue:e(a).currency,"onUpdate:modelValue":w[0]||(w[0]=E=>e(a).currency=E),"content-loading":e(s),options:e(c).currencies,label:"name","value-prop":"id",searchable:!0,"track-by":"name",placeholder:f.$t("settings.currencies.select_currency"),invalid:e(u).currentPreferences.currency.$error,class:"w-full"},null,8,["modelValue","content-loading","options","placeholder","invalid"])]),_:1},8,["label","error","content-loading"]),t(L,{label:f.$t("settings.preferences.default_language"),error:e(u).currentPreferences.language.$error&&e(u).currentPreferences.language.$errors[0].$message,"content-loading":e(s),required:""},{default:d(()=>[t(h,{modelValue:e(a).language,"onUpdate:modelValue":w[1]||(w[1]=E=>e(a).language=E),"content-loading":e(s),options:e(c).languages,label:"name","value-prop":"code",placeholder:f.$t("settings.preferences.select_language"),class:"w-full","track-by":"name",searchable:!0,invalid:e(u).currentPreferences.language.$error},null,8,["modelValue","content-loading","options","placeholder","invalid"])]),_:1},8,["label","error","content-loading"])]),C("div",Fa,[t(L,{label:f.$t("wizard.date_format"),error:e(u).currentPreferences.carbon_date_format.$error&&e(u).currentPreferences.carbon_date_format.$errors[0].$message,"content-loading":e(s),required:""},{default:d(()=>[t(h,{modelValue:e(a).carbon_date_format,"onUpdate:modelValue":w[2]||(w[2]=E=>e(a).carbon_date_format=E),"content-loading":e(s),options:e(c).dateFormats,label:"display_date","value-prop":"carbon_format_value",placeholder:f.$t("settings.preferences.select_date_format"),"track-by":"display_date",searchable:"",invalid:e(u).currentPreferences.carbon_date_format.$error,class:"w-full"},null,8,["modelValue","content-loading","options","placeholder","invalid"])]),_:1},8,["label","error","content-loading"]),t(L,{label:f.$t("wizard.time_zone"),error:e(u).currentPreferences.time_zone.$error&&e(u).currentPreferences.time_zone.$errors[0].$message,"content-loading":e(s),required:""},{default:d(()=>[t(h,{modelValue:e(a).time_zone,"onUpdate:modelValue":w[3]||(w[3]=E=>e(a).time_zone=E),"content-loading":e(s),options:e(c).timeZones,label:"key","value-prop":"value",placeholder:f.$t("settings.preferences.select_time_zone"),"track-by":"key",searchable:!0,invalid:e(u).currentPreferences.time_zone.$error},null,8,["modelValue","content-loading","options","placeholder","invalid"])]),_:1},8,["label","error","content-loading"])]),C("div",Ma,[t(L,{label:f.$t("wizard.fiscal_year"),error:e(u).currentPreferences.fiscal_year.$error&&e(u).currentPreferences.fiscal_year.$errors[0].$message,"content-loading":e(s),required:""},{default:d(()=>[t(h,{modelValue:e(a).fiscal_year,"onUpdate:modelValue":w[4]||(w[4]=E=>e(a).fiscal_year=E),"content-loading":e(s),options:e(c).fiscalYears,label:"key","value-prop":"value",placeholder:f.$t("settings.preferences.select_financial_year"),invalid:e(u).currentPreferences.fiscal_year.$error,"track-by":"key",searchable:!0,class:"w-full"},null,8,["modelValue","content-loading","options","placeholder","invalid"])]),_:1},8,["label","error","content-loading"])]),t(J,{loading:n.value,disabled:n.value,"content-loading":e(s),class:"mt-4"},{left:d(E=>[t(Z,{name:"SaveIcon",class:x(E.class)},null,8,["class"])]),default:d(()=>[N(" "+P(f.$t("wizard.save_cont")),1)]),_:1},8,["loading","disabled","content-loading"])])],32)]),_:1},8,["title","description"])}}},ka={components:{step_1:Ue,step_2:Le,step_3:Ke,step_4:ea,step_5:$a,step_6:Ia,step_7:Da,step_8:za},setup(){let o=z("step_1"),S=z(1);const D=fe(),n=Y();s();async function s(){let v=await n.fetchInstallationStep();if(v.data.profile_complete==="COMPLETED"){D.push("/admin/dashboard");return}let r=parseInt(v.data.profile_complete);r&&(S.value=r+1,o.value=`step_${r+1}`)}async function a(v){var c,l;let r={profile_complete:v};try{return await n.addInstallationStep(r),!0}catch(I){return((l=(c=I==null?void 0:I.response)==null?void 0:c.data)==null?void 0:l.message)==="The MAC is invalid."&&window.location.reload(),!1}}async function p(v){if(v&&!await a(v))return!1;S.value++,S.value<=8&&(o.value="step_"+S.value)}function m(v){}return{stepComponent:o,currentStepNumber:S,onStepChange:p,saveStepProgress:a,onNavClick:m}}},Ua={class:"flex flex-col items-center justify-between w-full pt-10"};function Pa(o,S,D,n,s,a){const p=b("BaseWizard");return q(),U("div",Ua,[t(p,{steps:7,"current-step":n.currentStepNumber,onClick:n.onNavClick},{default:d(()=>[(q(),M(ue(n.stepComponent),{onNext:n.onStepChange},null,40,["onNext"]))]),_:1},8,["current-step","onClick"])])}const Ga=se(ka,[["render",Pa]]);export{Ga as default}; +import{a4 as _e,E as ae,s as W,a1 as j,f as z,k,r as b,o as q,m as M,w as d,b as C,c as U,t as P,p as N,K as G,N as ie,O as oe,a as t,J as x,v as O,a7 as ge,Y as Q,l as e,ac as le,ad as re,H as A,a5 as te,g as y,h as V,ar as ne,j as R,q as T,Z as se,u as de,a3 as ue,i as X,n as K,M as ve,I as be,ag as $e,a0 as we,G as pe,ai as me,e as fe,aS as he}from"./main-pPEsZPea.js";import{u as ee}from"./mail-driver-SNHZXvKB.js";const Y=(o=!1)=>{const S=o?window.pinia.defineStore:_e,D=ae();return S({id:"installation",state:()=>({currentDataBaseData:{database_connection:"mysql",database_hostname:"127.0.0.1",database_port:"3306",database_name:null,database_username:null,database_password:null,app_url:window.location.origin}}),actions:{fetchInstallationRequirements(){return new Promise((n,s)=>{W.get("/api/v1/installation/requirements").then(a=>{n(a)}).catch(a=>{j(a),s(a)})})},fetchInstallationStep(){return new Promise((n,s)=>{W.get("/api/v1/installation/wizard-step").then(a=>{n(a)}).catch(a=>{j(a),s(a)})})},addInstallationStep(n){return new Promise((s,a)=>{W.post("/api/v1/installation/wizard-step",n).then(p=>{s(p)}).catch(p=>{j(p),a(p)})})},fetchInstallationPermissions(){return new Promise((n,s)=>{W.get("/api/v1/installation/permissions").then(a=>{n(a)}).catch(a=>{j(a),s(a)})})},fetchInstallationDatabase(n){return new Promise((s,a)=>{W.get("/api/v1/installation/database/config",{params:n}).then(p=>{s(p)}).catch(p=>{j(p),a(p)})})},addInstallationDatabase(n){return new Promise((s,a)=>{W.post("/api/v1/installation/database/config",n).then(p=>{s(p)}).catch(p=>{j(p),a(p)})})},addInstallationFinish(){return new Promise((n,s)=>{W.post("/api/v1/installation/finish").then(a=>{n(a)}).catch(a=>{j(a),s(a)})})},setInstallationDomain(n){return new Promise((s,a)=>{W.put("/api/v1/installation/set-domain",n).then(p=>{s(p)}).catch(p=>{j(p),a(p)})})},installationLogin(){return new Promise((n,s)=>{W.get("/sanctum/csrf-cookie").then(a=>{a&&W.post("/api/v1/installation/login").then(p=>{D.setSelectedCompany(p.data.company),n(p)}).catch(p=>{j(p),s(p)})})})},checkAutheticated(){return new Promise((n,s)=>{W.get("/api/v1/auth/check").then(a=>{n(a)}).catch(a=>{s(a)})})}}})()},ye={class:"w-full md:w-2/3"},Ie={class:"mb-6"},qe={key:0,class:"grid grid-flow-row grid-cols-3 p-3 border border-gray-200 lg:gap-24 sm:gap-4"},Be={class:"col-span-2 text-sm"},Ce={class:"text-right"},Ve={key:0,class:"inline-block w-4 h-4 ml-3 mr-2 bg-green-500 rounded-full"},De={key:1,class:"inline-block w-4 h-4 ml-3 mr-2 bg-red-500 rounded-full"},Se={key:1},Fe={class:"col-span-2 text-sm"},Me={class:"text-right"},ze={key:0,class:"inline-block w-4 h-4 ml-3 mr-2 bg-green-500 rounded-full"},ke={key:1,class:"inline-block w-4 h-4 ml-3 mr-2 bg-red-500 rounded-full"},Ue={__name:"Step1RequirementsCheck",emits:["next"],setup(o,{emit:S}){const D=S,n=z(""),s=z(""),a=z(!1);z(!0);const p=Y(),m=k(()=>{if(n.value){let c=!0;for(const l in n.value)return n.value[l]||(c=!1),n.value&&s.value.supported&&c}return!1});async function v(){var l,I,i,g;a.value=!0;const c=await p.fetchInstallationRequirements();c.data&&(n.value=(i=(I=(l=c==null?void 0:c.data)==null?void 0:l.requirements)==null?void 0:I.requirements)==null?void 0:i.php,s.value=(g=c==null?void 0:c.data)==null?void 0:g.phpSupportInfo)}function r(){a.value=!0,D("next"),a.value=!1}return(c,l)=>{const I=b("BaseIcon"),i=b("BaseButton"),g=b("BaseWizardStep");return q(),M(g,{title:c.$t("wizard.req.system_req"),description:c.$t("wizard.req.system_req_desc")},{default:d(()=>[C("div",ye,[C("div",Ie,[s.value?(q(),U("div",qe,[C("div",Be,P(c.$t("wizard.req.php_req_version",{version:s.value.minimum})),1),C("div",Ce,[N(P(s.value.current)+" ",1),s.value.supported?(q(),U("span",Ve)):(q(),U("span",De))])])):G("",!0),n.value?(q(),U("div",Se,[(q(!0),U(ie,null,oe(n.value,($,B)=>(q(),U("div",{key:B,class:"grid grid-flow-row grid-cols-3 p-3 border border-gray-200 lg:gap-24 sm:gap-4"},[C("div",Fe,P(B),1),C("div",Me,[$?(q(),U("span",ze)):(q(),U("span",ke))])]))),128))])):G("",!0)]),m.value?(q(),M(i,{key:0,onClick:r},{left:d($=>[t(I,{name:"ArrowRightIcon",class:x($.class)},null,8,["class"])]),default:d(()=>[N(P(c.$t("wizard.continue"))+" ",1)]),_:1})):G("",!0),n.value?G("",!0):(q(),M(i,{key:1,loading:a.value,disabled:a.value,onClick:v},{default:d(()=>[N(P(c.$t("wizard.req.check_req")),1)]),_:1},8,["loading","disabled"]))])]),_:1},8,["title","description"])}}},Pe={key:1,class:"relative"},Ne={class:"grid grid-flow-row grid-cols-3 lg:gap-24 sm:gap-4"},Ee={class:"col-span-2 p-3"},Ge={class:"p-3 text-right"},Oe={key:0,class:"inline-block w-4 h-4 ml-3 mr-2 rounded-full bg-green-500"},xe={key:1,class:"inline-block w-4 h-4 ml-3 mr-2 rounded-full bg-red-500"},Le={__name:"Step2PermissionCheck",emits:["next"],setup(o,{emit:S}){const D=S;let n=z(!1),s=z(!1),a=z([]);const{tm:p,t:m}=O.useI18n(),v=Y(),r=ge();Q(()=>{c()});async function c(){n.value=!0;const I=await v.fetchInstallationPermissions();a.value=I.data.permissions.permissions,I.data&&I.data.permissions.errors&&setTimeout(()=>{r.openDialog({title:p("wizard.permissions.permission_confirm_title"),message:m("wizard.permissions.permission_confirm_desc"),yesLabel:"OK",noLabel:"Cancel",variant:"danger",hideNoButton:!1,size:"lg"}).then(i=>{i.data&&(n.value=!1)})},500),n.value=!1}function l(){s.value=!0,D("next"),s.value=!1}return(I,i)=>{const g=b("BaseContentPlaceholdersText"),$=b("BaseContentPlaceholdersBox"),B=b("BaseContentPlaceholders"),u=b("BaseIcon"),_=b("BaseButton"),f=b("BaseWizardStep");return q(),M(f,{title:I.$t("wizard.permissions.permissions"),description:I.$t("wizard.permissions.permission_desc")},{default:d(()=>[e(n)?(q(),M(B,{key:0},{default:d(()=>[(q(),U(ie,null,oe(3,(w,h)=>C("div",{key:h,class:"grid grid-flow-row grid-cols-3 lg:gap-24 sm:gap-4 border border-gray-200"},[t(g,{lines:1,class:"col-span-4 p-3"})])),64)),t($,{rounded:!0,class:"mt-10",style:{width:"96px",height:"42px"}})]),_:1})):(q(),U("div",Pe,[(q(!0),U(ie,null,oe(e(a),(w,h)=>(q(),U("div",{key:h,class:"border border-gray-200"},[C("div",Ne,[C("div",Ee,P(w.folder),1),C("div",Ge,[w.isSet?(q(),U("span",Oe)):(q(),U("span",xe)),C("span",null,P(w.permission),1)])])]))),128)),le(t(_,{class:"mt-10",loading:e(s),disabled:e(s),onClick:l},{left:d(w=>[t(u,{name:"ArrowRightIcon",class:x(w.class)},null,8,["class"])]),default:d(()=>[N(" "+P(I.$t("wizard.continue")),1)]),_:1},8,["loading","disabled"]),[[re,!e(n)]])]))]),_:1},8,["title","description"])}}},We={class:"grid grid-cols-1 gap-5 md:grid-cols-2 lg:mb-6 md:mb-6"},Re={__name:"MysqlDatabase",props:{configData:{type:Object,require:!0,default:Object},isSaving:{type:Boolean,require:!0,default:!1},isFetchingInitialData:{type:Boolean,default:!1}},emits:["submit-data","on-change-driver"],setup(o,{emit:S}){const D=o,n=S,s=A(["sqlite","mysql","pgsql"]),{t:a}=O.useI18n(),p=te("utils"),m=Y();Q(()=>{for(const g in v.value)D.configData.hasOwnProperty(g)&&(v.value[g]=D.configData[g])});const v=k(()=>m.currentDataBaseData),r=g=>p.checkValidUrl(g),c={database_connection:{required:y.withMessage(a("validation.required"),V)},database_hostname:{required:y.withMessage(a("validation.required"),V)},database_port:{required:y.withMessage(a("validation.required"),V),numeric:ne},database_name:{required:y.withMessage(a("validation.required"),V)},database_username:{required:y.withMessage(a("validation.required"),V)},app_url:{required:y.withMessage(a("validation.required"),V),isUrl:y.withMessage(a("validation.invalid_url"),r)}},l=R(c,v.value);function I(){if(l.value.$touch(),l.value.$invalid)return!0;n("submit-data",v.value)}function i(){l.value.database_connection.$touch(),n("on-change-driver",v.value.database_connection)}return(g,$)=>{const B=b("BaseInput"),u=b("BaseInputGroup"),_=b("BaseMultiselect"),f=b("BaseIcon"),w=b("BaseButton");return q(),U("form",{action:"",onSubmit:T(I,["prevent"])},[C("div",We,[t(u,{label:g.$t("wizard.database.app_url"),error:e(l).app_url.$error&&e(l).app_url.$errors[0].$message,required:""},{default:d(()=>[t(B,{modelValue:v.value.app_url,"onUpdate:modelValue":$[0]||($[0]=h=>v.value.app_url=h),invalid:e(l).app_url.$error,type:"text"},null,8,["modelValue","invalid"])]),_:1},8,["label","error"]),t(u,{label:g.$t("wizard.database.connection"),error:e(l).database_connection.$error&&e(l).database_connection.$errors[0].$message,required:""},{default:d(()=>[t(_,{modelValue:v.value.database_connection,"onUpdate:modelValue":[$[1]||($[1]=h=>v.value.database_connection=h),i],invalid:e(l).database_connection.$error,options:s,"can-deselect":!1,"can-clear":!1},null,8,["modelValue","invalid","options"])]),_:1},8,["label","error"]),t(u,{label:g.$t("wizard.database.port"),error:e(l).database_port.$error&&e(l).database_port.$errors[0].$message,required:""},{default:d(()=>[t(B,{modelValue:v.value.database_port,"onUpdate:modelValue":$[2]||($[2]=h=>v.value.database_port=h),invalid:e(l).database_port.$error},null,8,["modelValue","invalid"])]),_:1},8,["label","error"]),t(u,{label:g.$t("wizard.database.db_name"),error:e(l).database_name.$error&&e(l).database_name.$errors[0].$message,required:""},{default:d(()=>[t(B,{modelValue:v.value.database_name,"onUpdate:modelValue":$[3]||($[3]=h=>v.value.database_name=h),invalid:e(l).database_name.$error},null,8,["modelValue","invalid"])]),_:1},8,["label","error"]),t(u,{label:g.$t("wizard.database.username"),error:e(l).database_username.$error&&e(l).database_username.$errors[0].$message,required:""},{default:d(()=>[t(B,{modelValue:v.value.database_username,"onUpdate:modelValue":$[4]||($[4]=h=>v.value.database_username=h),invalid:e(l).database_username.$error},null,8,["modelValue","invalid"])]),_:1},8,["label","error"]),t(u,{label:g.$t("wizard.database.password")},{default:d(()=>[t(B,{modelValue:v.value.database_password,"onUpdate:modelValue":$[5]||($[5]=h=>v.value.database_password=h),type:"password"},null,8,["modelValue"])]),_:1},8,["label"]),t(u,{label:g.$t("wizard.database.host"),error:e(l).database_hostname.$error&&e(l).database_hostname.$errors[0].$message,required:""},{default:d(()=>[t(B,{modelValue:v.value.database_hostname,"onUpdate:modelValue":$[6]||($[6]=h=>v.value.database_hostname=h),invalid:e(l).database_hostname.$error},null,8,["modelValue","invalid"])]),_:1},8,["label","error"])]),t(w,{type:"submit",class:"mt-4",loading:o.isSaving,disabled:o.isSaving},{left:d(h=>[o.isSaving?G("",!0):(q(),M(f,{key:0,name:"SaveIcon",class:x(h.class)},null,8,["class"]))]),default:d(()=>[N(" "+P(g.$t("wizard.save_cont")),1)]),_:1},8,["loading","disabled"])],32)}}},Te={class:"grid grid-cols-1 gap-5 md:grid-cols-2 lg:mb-6 md:mb-6"},je={__name:"PgsqlDatabase",props:{configData:{type:Object,require:!0,default:Object},isSaving:{type:Boolean,require:!0,default:!1},isFetchingInitialData:{type:Boolean,require:!0,default:!1}},emits:["submit-data","on-change-driver"],setup(o,{emit:S}){const D=o,n=S,s=A(["sqlite","mysql","pgsql"]),{t:a}=O.useI18n(),p=te("utils"),m=Y(),v=k(()=>m.currentDataBaseData);Q(()=>{for(const g in v.value)D.configData.hasOwnProperty(g)&&(v.value[g]=D.configData[g])});const r=g=>p.checkValidUrl(g),c={database_connection:{required:y.withMessage(a("validation.required"),V)},database_hostname:{required:y.withMessage(a("validation.required"),V)},database_port:{required:y.withMessage(a("validation.required"),V),numeric:ne},database_name:{required:y.withMessage(a("validation.required"),V)},database_username:{required:y.withMessage(a("validation.required"),V)},app_url:{required:y.withMessage(a("validation.required"),V),isUrl:y.withMessage(a("validation.invalid_url"),r)}},l=R(c,v.value);function I(){if(l.value.$touch(),l.value.$invalid)return!0;n("submit-data",v.value)}function i(){l.value.database_connection.$touch(),n("on-change-driver",v.value.database_connection)}return(g,$)=>{const B=b("BaseInput"),u=b("BaseInputGroup"),_=b("BaseMultiselect"),f=b("BaseIcon"),w=b("BaseButton");return q(),U("form",{action:"",onSubmit:T(I,["prevent"])},[C("div",Te,[t(u,{label:g.$t("wizard.database.app_url"),"content-loading":o.isFetchingInitialData,error:e(l).app_url.$error&&e(l).app_url.$errors[0].$message,required:""},{default:d(()=>[t(B,{modelValue:v.value.app_url,"onUpdate:modelValue":$[0]||($[0]=h=>v.value.app_url=h),"content-loading":o.isFetchingInitialData,invalid:e(l).app_url.$error,type:"text"},null,8,["modelValue","content-loading","invalid"])]),_:1},8,["label","content-loading","error"]),t(u,{label:g.$t("wizard.database.connection"),"content-loading":o.isFetchingInitialData,error:e(l).database_connection.$error&&e(l).database_connection.$errors[0].$message,required:""},{default:d(()=>[t(_,{modelValue:v.value.database_connection,"onUpdate:modelValue":[$[1]||($[1]=h=>v.value.database_connection=h),i],"content-loading":o.isFetchingInitialData,invalid:e(l).database_connection.$error,options:s,"can-deselect":!1,"can-clear":!1},null,8,["modelValue","content-loading","invalid","options"])]),_:1},8,["label","content-loading","error"]),t(u,{label:g.$t("wizard.database.port"),"content-loading":o.isFetchingInitialData,error:e(l).database_port.$error&&e(l).database_port.$errors[0].$message,required:""},{default:d(()=>[t(B,{modelValue:v.value.database_port,"onUpdate:modelValue":$[2]||($[2]=h=>v.value.database_port=h),"content-loading":o.isFetchingInitialData,invalid:e(l).database_port.$error},null,8,["modelValue","content-loading","invalid"])]),_:1},8,["label","content-loading","error"]),t(u,{label:g.$t("wizard.database.db_name"),"content-loading":o.isFetchingInitialData,error:e(l).database_name.$error&&e(l).database_name.$errors[0].$message,required:""},{default:d(()=>[t(B,{modelValue:v.value.database_name,"onUpdate:modelValue":$[3]||($[3]=h=>v.value.database_name=h),"content-loading":o.isFetchingInitialData,invalid:e(l).database_name.$error},null,8,["modelValue","content-loading","invalid"])]),_:1},8,["label","content-loading","error"]),t(u,{label:g.$t("wizard.database.username"),"content-loading":o.isFetchingInitialData,error:e(l).database_username.$error&&e(l).database_username.$errors[0].$message,required:""},{default:d(()=>[t(B,{modelValue:v.value.database_username,"onUpdate:modelValue":$[4]||($[4]=h=>v.value.database_username=h),"content-loading":o.isFetchingInitialData,invalid:e(l).database_username.$error},null,8,["modelValue","content-loading","invalid"])]),_:1},8,["label","content-loading","error"]),t(u,{"content-loading":o.isFetchingInitialData,label:g.$t("wizard.database.password")},{default:d(()=>[t(B,{modelValue:v.value.database_password,"onUpdate:modelValue":$[5]||($[5]=h=>v.value.database_password=h),"content-loading":o.isFetchingInitialData,type:"password"},null,8,["modelValue","content-loading"])]),_:1},8,["content-loading","label"]),t(u,{label:g.$t("wizard.database.host"),"content-loading":o.isFetchingInitialData,error:e(l).database_hostname.$error&&e(l).database_hostname.$errors[0].$message,required:""},{default:d(()=>[t(B,{modelValue:v.value.database_hostname,"onUpdate:modelValue":$[6]||($[6]=h=>v.value.database_hostname=h),"content-loading":o.isFetchingInitialData,invalid:e(l).database_hostname.$error},null,8,["modelValue","content-loading","invalid"])]),_:1},8,["label","content-loading","error"])]),le(t(w,{"content-loading":o.isFetchingInitialData,type:"submit",class:"mt-4",loading:o.isSaving,disabled:o.isSaving},{left:d(h=>[o.isSaving?G("",!0):(q(),M(f,{key:0,name:"SaveIcon",class:x(h.class)},null,8,["class"]))]),default:d(()=>[N(" "+P(g.$t("wizard.save_cont")),1)]),_:1},8,["content-loading","loading","disabled"]),[[re,!o.isFetchingInitialData]])],32)}}},Ae={class:"grid grid-cols-1 gap-5 md:grid-cols-2 lg:mb-6 md:mb-6"},Ye={__name:"SqliteDatabase",props:{configData:{type:Object,require:!0,default:Object},isSaving:{type:Boolean,require:!0,default:!1},isFetchingInitialData:{type:Boolean,require:!0,default:!1}},emits:["submit-data","on-change-driver"],setup(o,{emit:S}){const D=o,n=S,s=A(["sqlite","mysql","pgsql"]),{t:a}=O.useI18n(),p=te("utils"),m=Y(),v=k(()=>m.currentDataBaseData);Q(()=>{for(const g in v.value)D.configData.hasOwnProperty(g)&&(v.value[g]=D.configData[g])});const r=g=>p.checkValidUrl(g),c={database_connection:{required:y.withMessage(a("validation.required"),V)},database_name:{required:y.withMessage(a("validation.required"),V)},app_url:{required:y.withMessage(a("validation.required"),V),isUrl:y.withMessage(a("validation.invalid_url"),r)}},l=R(c,v.value);function I(){if(l.value.$touch(),l.value.$invalid)return!0;n("submit-data",v.value)}function i(){l.value.database_connection.$touch(),n("on-change-driver",v.value.database_connection)}return(g,$)=>{const B=b("BaseInput"),u=b("BaseInputGroup"),_=b("BaseMultiselect"),f=b("BaseIcon"),w=b("BaseButton");return q(),U("form",{action:"",onSubmit:T(I,["prevent"])},[C("div",Ae,[t(u,{label:g.$t("wizard.database.app_url"),"content-loading":o.isFetchingInitialData,error:e(l).app_url.$error&&e(l).app_url.$errors[0].$message,required:""},{default:d(()=>[t(B,{modelValue:v.value.app_url,"onUpdate:modelValue":$[0]||($[0]=h=>v.value.app_url=h),"content-loading":o.isFetchingInitialData,invalid:e(l).app_url.$error,type:"text"},null,8,["modelValue","content-loading","invalid"])]),_:1},8,["label","content-loading","error"]),t(u,{label:g.$t("wizard.database.connection"),"content-loading":o.isFetchingInitialData,error:e(l).database_connection.$error&&e(l).database_connection.$errors[0].$message,required:""},{default:d(()=>[t(_,{modelValue:v.value.database_connection,"onUpdate:modelValue":[$[1]||($[1]=h=>v.value.database_connection=h),i],"content-loading":o.isFetchingInitialData,invalid:e(l).database_connection.$error,options:s,"can-deselect":!1,"can-clear":!1},null,8,["modelValue","content-loading","invalid","options"])]),_:1},8,["label","content-loading","error"]),t(u,{label:g.$t("wizard.database.db_path"),error:e(l).database_name.$error&&e(l).database_name.$errors[0].$message,"content-loading":o.isFetchingInitialData,required:""},{default:d(()=>[t(B,{modelValue:v.value.database_name,"onUpdate:modelValue":$[2]||($[2]=h=>v.value.database_name=h),"content-loading":o.isFetchingInitialData,invalid:e(l).database_name.$error},null,8,["modelValue","content-loading","invalid"])]),_:1},8,["label","error","content-loading"])]),le(t(w,{"content-loading":o.isFetchingInitialData,type:"submit",class:"mt-4",loading:o.isSaving,disabled:o.isSaving},{left:d(h=>[o.isSaving?G("",!0):(q(),M(f,{key:0,name:"SaveIcon",class:x(h.class)},null,8,["class"]))]),default:d(()=>[N(" "+P(g.$t("wizard.save_cont")),1)]),_:1},8,["content-loading","loading","disabled"]),[[re,!o.isFetchingInitialData]])],32)}}},Ze={components:{Mysql:Re,Pgsql:je,Sqlite:Ye},emits:["next"],setup(o,{emit:S}){const D=z("mysql"),n=z(!1),{t:s}=O.useI18n(),a=de(),p=Y(),m=k(()=>p.currentDataBaseData);async function v(c){let l={connection:c};const I=await p.fetchInstallationDatabase(l);I.data.success&&(m.value.database_connection=I.data.config.database_connection),c==="sqlite"?m.value.database_name=I.data.config.database_name:m.value.database_name=null}async function r(c){n.value=!0;try{let l=await p.addInstallationDatabase(c);if(n.value=!1,l.data.success){await p.addInstallationFinish(),S("next",3),a.showNotification({type:"success",message:s("wizard.success."+l.data.success)});return}else if(l.data.error){if(l.data.requirement){a.showNotification({type:"error",message:s("wizard.errors."+l.data.error,{version:l.data.requirement.minimum,name:c.value.database_connection})});return}a.showNotification({type:"error",message:s("wizard.errors."+l.data.error)})}else l.data.errors?a.showNotification({type:"error",message:l.data.errors[0]}):l.data.error_message&&a.showNotification({type:"error",message:l.data.error_message})}catch{a.showNotification({type:"error",message:s("validation.something_went_wrong")}),n.value=!1}finally{n.value=!1}}return{databaseData:m,database_connection:D,isSaving:n,getDatabaseConfig:v,next:r}}};function Je(o,S,D,n,s,a){const p=b("BaseWizardStep");return q(),M(p,{title:o.$t("wizard.database.database"),description:o.$t("wizard.database.desc"),"step-container":"w-full p-8 mb-8 bg-white border border-gray-200 border-solid rounded md:w-full"},{default:d(()=>[(q(),M(ue(n.databaseData.database_connection),{"config-data":n.databaseData,"is-saving":n.isSaving,onOnChangeDriver:n.getDatabaseConfig,onSubmitData:n.next},null,40,["config-data","is-saving","onOnChangeDriver","onSubmitData"]))]),_:1},8,["title","description"])}const Ke=se(Ze,[["render",Je]]),He={class:"w-full md:w-2/3"},Qe=C("p",{class:"mt-4 mb-0 text-sm text-gray-600"},"Notes:",-1),Xe=C("ul",{class:"w-full text-gray-600 list-disc list-inside"},[C("li",{class:"text-sm leading-8"},[N(" App domain should not contain "),C("b",{class:"inline-block px-1 bg-gray-100 rounded-sm"},"https://"),N(" or "),C("b",{class:"inline-block px-1 bg-gray-100 rounded-sm"},"http"),N(" in front of the domain. ")]),C("li",{class:"text-sm leading-8"},[N(" If you're accessing the website on a different port, please mention the port. For example: "),C("b",{class:"inline-block px-1 bg-gray-100"},"localhost:8080")])],-1),ea={__name:"Step4VerifyDomain",emits:["next"],setup(o,{emit:S}){const D=S,n=A({app_domain:window.location.origin.replace(/(^\w+:|^)\/\//,"")}),s=z(!1),{t:a}=O.useI18n(),p=te("utils"),m=i=>p.checkValidDomainUrl(i),v=Y(),r=de(),c={app_domain:{required:y.withMessage(a("validation.required"),V),isUrl:y.withMessage(a("validation.invalid_domain_url"),m)}},l=R(c,k(()=>n));async function I(){if(l.value.$touch(),l.value.$invalid)return!0;s.value=!0;try{await v.setInstallationDomain(n),await v.installationLogin(),(await v.checkAutheticated()).data&&D("next",4),s.value=!1}catch{r.showNotification({type:"error",message:a("wizard.verify_domain.failed")}),s.value=!1}}return(i,g)=>{const $=b("BaseInput"),B=b("BaseInputGroup"),u=b("BaseButton"),_=b("BaseWizardStep");return q(),M(_,{title:i.$t("wizard.verify_domain.title"),description:i.$t("wizard.verify_domain.desc")},{default:d(()=>[C("div",He,[t(B,{label:i.$t("wizard.verify_domain.app_domain"),error:e(l).app_domain.$error&&e(l).app_domain.$errors[0].$message,required:""},{default:d(()=>[t($,{modelValue:n.app_domain,"onUpdate:modelValue":g[0]||(g[0]=f=>n.app_domain=f),invalid:e(l).app_domain.$error,type:"text",onInput:g[1]||(g[1]=f=>e(l).app_domain.$touch())},null,8,["modelValue","invalid"])]),_:1},8,["label","error"])]),Qe,Xe,t(u,{loading:s.value,disabled:s.value,class:"mt-8",onClick:I},{default:d(()=>[N(P(i.$t("wizard.verify_domain.verify_now")),1)]),_:1},8,["loading","disabled"])]),_:1},8,["title","description"])}}},aa={class:"grid grid-cols-1 gap-4 mb-4 md:grid-cols-2 md:mb-6"},ta={class:"grid grid-cols-1 gap-4 mb-4 md:grid-cols-2 md:mb-6"},na={class:"grid grid-cols-1 gap-4 mb-4 md:grid-cols-2 md:mb-6"},ia={class:"grid grid-cols-1 gap-4 mb-6 md:grid-cols-2"},oa={__name:"SmtpMailDriver",props:{isSaving:{type:Boolean,require:!0,default:!1},isFetchingInitialData:{type:Boolean,require:!0,default:!1}},emits:["submit-data","on-change-driver"],setup(o,{emit:S}){const D=S;let n=z(!1);const s=A(["tls","ssl","starttls"]),{t:a}=O.useI18n(),p=ee(),m=k(()=>p.smtpConfig),v=k(()=>n.value?"text":"password");m.value.mail_driver="smtp";const r=k(()=>({smtpConfig:{mail_driver:{required:y.withMessage(a("validation.required"),V)},mail_host:{required:y.withMessage(a("validation.required"),V)},mail_port:{required:y.withMessage(a("validation.required"),V),numeric:y.withMessage(a("validation.numbers_only"),ne)},mail_encryption:{required:y.withMessage(a("validation.required"),V)},from_mail:{required:y.withMessage(a("validation.required"),V),email:y.withMessage(a("validation.email_incorrect"),X)},from_name:{required:y.withMessage(a("validation.required"),V)}}})),c=R(r,k(()=>p));async function l(){return c.value.$touch(),c.value.$invalid||D("submit-data",p.smtpConfig),!1}function I(){c.value.smtpConfig.mail_driver.$touch(),D("on-change-driver",p.smtpConfig.mail_driver)}return(i,g)=>{const $=b("BaseMultiselect"),B=b("BaseInputGroup"),u=b("BaseInput"),_=b("BaseIcon"),f=b("BaseButton");return q(),U("form",{onSubmit:T(l,["prevent"])},[C("div",aa,[t(B,{label:i.$t("wizard.mail.driver"),"content-loading":o.isFetchingInitialData,error:e(c).smtpConfig.mail_driver.$error&&e(c).smtpConfig.mail_driver.$errors[0].$message,required:""},{default:d(()=>[t($,{modelValue:m.value.mail_driver,"onUpdate:modelValue":[g[0]||(g[0]=w=>m.value.mail_driver=w),I],options:e(p).mail_drivers,"can-deselect":!1,"content-loading":o.isFetchingInitialData,invalid:e(c).smtpConfig.mail_driver.$error},null,8,["modelValue","options","content-loading","invalid"])]),_:1},8,["label","content-loading","error"]),t(B,{label:i.$t("wizard.mail.host"),"content-loading":o.isFetchingInitialData,error:e(c).smtpConfig.mail_host.$error&&e(c).smtpConfig.mail_host.$errors[0].$message,required:""},{default:d(()=>[t(u,{modelValue:m.value.mail_host,"onUpdate:modelValue":g[1]||(g[1]=w=>m.value.mail_host=w),modelModifiers:{trim:!0},invalid:e(c).smtpConfig.mail_host.$error,"content-loading":o.isFetchingInitialData,type:"text",name:"mail_host",onInput:g[2]||(g[2]=w=>e(c).smtpConfig.mail_host.$touch())},null,8,["modelValue","invalid","content-loading"])]),_:1},8,["label","content-loading","error"])]),C("div",ta,[t(B,{label:i.$t("wizard.mail.username"),"content-loading":o.isFetchingInitialData},{default:d(()=>[t(u,{modelValue:m.value.mail_username,"onUpdate:modelValue":g[3]||(g[3]=w=>m.value.mail_username=w),modelModifiers:{trim:!0},"content-loading":o.isFetchingInitialData,type:"text",name:"db_name"},null,8,["modelValue","content-loading"])]),_:1},8,["label","content-loading"]),t(B,{label:i.$t("wizard.mail.password"),"content-loading":o.isFetchingInitialData},{default:d(()=>[t(u,{modelValue:m.value.mail_password,"onUpdate:modelValue":g[6]||(g[6]=w=>m.value.mail_password=w),modelModifiers:{trim:!0},type:v.value,"content-loading":o.isFetchingInitialData,autocomplete:"off","data-lpignore":"true",name:"password"},{right:d(()=>[e(n)?(q(),M(_,{key:0,name:"EyeOffIcon",class:"w-5 h-5 mr-1 text-gray-500 cursor-pointer",onClick:g[4]||(g[4]=w=>K(n)?n.value=!e(n):n=!e(n))})):(q(),M(_,{key:1,name:"EyeIcon",class:"w-5 h-5 mr-1 text-gray-500 cursor-pointer",onClick:g[5]||(g[5]=w=>K(n)?n.value=!e(n):n=!e(n))}))]),_:1},8,["modelValue","type","content-loading"])]),_:1},8,["label","content-loading"])]),C("div",na,[t(B,{label:i.$t("wizard.mail.port"),error:e(c).smtpConfig.mail_port.$error&&e(c).smtpConfig.mail_port.$errors[0].$message,"content-loading":o.isFetchingInitialData,required:""},{default:d(()=>[t(u,{modelValue:m.value.mail_port,"onUpdate:modelValue":g[7]||(g[7]=w=>m.value.mail_port=w),modelModifiers:{trim:!0},invalid:e(c).smtpConfig.mail_port.$error,"content-loading":o.isFetchingInitialData,type:"text",name:"mail_port",onInput:g[8]||(g[8]=w=>e(c).smtpConfig.mail_port.$touch())},null,8,["modelValue","invalid","content-loading"])]),_:1},8,["label","error","content-loading"]),t(B,{label:i.$t("wizard.mail.encryption"),error:e(c).smtpConfig.mail_encryption.$error&&e(c).smtpConfig.mail_encryption.$errors[0].$message,"content-loading":o.isFetchingInitialData,required:""},{default:d(()=>[t($,{modelValue:m.value.mail_encryption,"onUpdate:modelValue":g[9]||(g[9]=w=>m.value.mail_encryption=w),modelModifiers:{trim:!0},options:s,"can-deselect":!1,invalid:e(c).smtpConfig.mail_encryption.$error,"content-loading":o.isFetchingInitialData,onInput:g[10]||(g[10]=w=>e(c).smtpConfig.mail_encryption.$touch())},null,8,["modelValue","options","invalid","content-loading"])]),_:1},8,["label","error","content-loading"])]),C("div",ia,[t(B,{label:i.$t("wizard.mail.from_mail"),error:e(c).smtpConfig.from_mail.$error&&e(c).smtpConfig.from_mail.$errors[0].$message,"content-loading":o.isFetchingInitialData,required:""},{default:d(()=>[t(u,{modelValue:m.value.from_mail,"onUpdate:modelValue":g[11]||(g[11]=w=>m.value.from_mail=w),modelModifiers:{trim:!0},invalid:e(c).smtpConfig.from_mail.$error,"content-loading":o.isFetchingInitialData,type:"text",name:"from_mail",onInput:g[12]||(g[12]=w=>e(c).smtpConfig.from_mail.$touch())},null,8,["modelValue","invalid","content-loading"])]),_:1},8,["label","error","content-loading"]),t(B,{label:i.$t("wizard.mail.from_name"),error:e(c).smtpConfig.from_name.$error&&e(c).smtpConfig.from_name.$errors[0].$message,"content-loading":o.isFetchingInitialData,required:""},{default:d(()=>[t(u,{modelValue:m.value.from_name,"onUpdate:modelValue":g[13]||(g[13]=w=>m.value.from_name=w),modelModifiers:{trim:!0},invalid:e(c).smtpConfig.from_name.$error,"content-loading":o.isFetchingInitialData,type:"text",name:"from_name",onInput:g[14]||(g[14]=w=>e(c).smtpConfig.from_name.$touch())},null,8,["modelValue","invalid","content-loading"])]),_:1},8,["label","error","content-loading"])]),t(f,{loading:o.isSaving,disabled:o.isSaving,"content-loading":o.isFetchingInitialData,class:"mt-4"},{left:d(w=>[o.isSaving?G("",!0):(q(),M(_,{key:0,name:"SaveIcon",class:x(w.class)},null,8,["class"]))]),default:d(()=>[N(" "+P(i.$t("general.save")),1)]),_:1},8,["loading","disabled","content-loading"])],32)}}},la={class:"grid grid-cols-1 gap-4 mb-4 md:grid-cols-2 lg:mb-6 md:mb-6"},ra={class:"grid grid-cols-1 gap-4 mb-4 md:grid-cols-2 lg:mb-6 md:mb-6"},sa={class:"grid grid-cols-1 gap-4 mb-6 md:grid-cols-2"},da={__name:"MailgunMailDriver",props:{isSaving:{type:Boolean,require:!0,default:!1},isFetchingInitialData:{type:Boolean,require:!0,default:!1}},emits:["submit-data","on-change-driver"],setup(o,{emit:S}){const D=S;let n=z(!1);const s=ee(),{t:a}=O.useI18n(),p=k(()=>s.mailgunConfig),m=k(()=>n.value?"text":"password");p.value.mail_driver="mailgun";const v=k(()=>({mailgunConfig:{mail_driver:{required:y.withMessage(a("validation.required"),V)},mail_mailgun_domain:{required:y.withMessage(a("validation.required"),V)},mail_mailgun_endpoint:{required:y.withMessage(a("validation.required"),V)},mail_mailgun_secret:{required:y.withMessage(a("validation.required"),V)},from_mail:{required:y.withMessage(a("validation.required"),V),email:X},from_name:{required:y.withMessage(a("validation.required"),V)}}})),r=R(v,k(()=>s));function c(){return r.value.$touch(),r.value.$invalid||D("submit-data",s.mailgunConfig),!1}function l(){r.value.mailgunConfig.mail_driver.$touch(),D("on-change-driver",s.mailgunConfig.mail_driver)}return(I,i)=>{const g=b("BaseMultiselect"),$=b("BaseInputGroup"),B=b("BaseInput"),u=b("BaseIcon"),_=b("BaseButton");return q(),U("form",{onSubmit:T(c,["prevent"])},[C("div",la,[t($,{label:I.$t("wizard.mail.driver"),"content-loading":o.isFetchingInitialData,error:e(r).mailgunConfig.mail_driver.$error&&e(r).mailgunConfig.mail_driver.$errors[0].$message,required:""},{default:d(()=>[t(g,{modelValue:p.value.mail_driver,"onUpdate:modelValue":[i[0]||(i[0]=f=>p.value.mail_driver=f),l],options:e(s).mail_drivers,"can-deselect":!1,invalid:e(r).mailgunConfig.mail_driver.$error,"content-loading":o.isFetchingInitialData},null,8,["modelValue","options","invalid","content-loading"])]),_:1},8,["label","content-loading","error"]),t($,{label:I.$t("wizard.mail.mailgun_domain"),"content-loading":o.isFetchingInitialData,error:e(r).mailgunConfig.mail_mailgun_domain.$error&&e(r).mailgunConfig.mail_mailgun_domain.$errors[0].$message,required:""},{default:d(()=>[t(B,{modelValue:p.value.mail_mailgun_domain,"onUpdate:modelValue":i[1]||(i[1]=f=>p.value.mail_mailgun_domain=f),modelModifiers:{trim:!0},invalid:e(r).mailgunConfig.mail_mailgun_domain.$error,"content-loading":o.isFetchingInitialData,type:"text",name:"mailgun_domain",onInput:i[2]||(i[2]=f=>e(r).mailgunConfig.mail_mailgun_domain.$touch())},null,8,["modelValue","invalid","content-loading"])]),_:1},8,["label","content-loading","error"])]),C("div",ra,[t($,{label:I.$t("wizard.mail.mailgun_secret"),"content-loading":o.isFetchingInitialData,error:e(r).mailgunConfig.mail_mailgun_secret.$error&&e(r).mailgunConfig.mail_mailgun_secret.$errors[0].$message,required:""},{default:d(()=>[t(B,{modelValue:p.value.mail_mailgun_secret,"onUpdate:modelValue":i[5]||(i[5]=f=>p.value.mail_mailgun_secret=f),modelModifiers:{trim:!0},invalid:e(r).mailgunConfig.mail_mailgun_secret.$error,type:m.value,"content-loading":o.isFetchingInitialData,name:"mailgun_secret",autocomplete:"off","data-lpignore":"true",onInput:i[6]||(i[6]=f=>e(r).mailgunConfig.mail_mailgun_secret.$touch())},{right:d(()=>[e(n)?(q(),M(u,{key:0,name:"EyeOffIcon",class:"w-5 h-5 mr-1 text-gray-500 cursor-pointer",onClick:i[3]||(i[3]=f=>K(n)?n.value=!e(n):n=!e(n))})):(q(),M(u,{key:1,name:"EyeIcon",class:"w-5 h-5 mr-1 text-gray-500 cursor-pointer",onClick:i[4]||(i[4]=f=>K(n)?n.value=!e(n):n=!e(n))}))]),_:1},8,["modelValue","invalid","type","content-loading"])]),_:1},8,["label","content-loading","error"]),t($,{label:I.$t("wizard.mail.mailgun_endpoint"),"content-loading":o.isFetchingInitialData,error:e(r).mailgunConfig.mail_mailgun_endpoint.$error&&e(r).mailgunConfig.mail_mailgun_endpoint.$errors[0].$message,required:""},{default:d(()=>[t(B,{modelValue:p.value.mail_mailgun_endpoint,"onUpdate:modelValue":i[7]||(i[7]=f=>p.value.mail_mailgun_endpoint=f),modelModifiers:{trim:!0},invalid:e(r).mailgunConfig.mail_mailgun_endpoint.$error,"content-loading":o.isFetchingInitialData,type:"text",name:"mailgun_endpoint",onInput:i[8]||(i[8]=f=>e(r).mailgunConfig.mail_mailgun_endpoint.$touch())},null,8,["modelValue","invalid","content-loading"])]),_:1},8,["label","content-loading","error"])]),C("div",sa,[t($,{label:I.$t("wizard.mail.from_mail"),"content-loading":o.isFetchingInitialData,error:e(r).mailgunConfig.from_mail.$error&&e(r).mailgunConfig.from_mail.$errors[0].$message,required:""},{default:d(()=>[t(B,{modelValue:p.value.from_mail,"onUpdate:modelValue":i[9]||(i[9]=f=>p.value.from_mail=f),modelModifiers:{trim:!0},name:"from_mail",type:"text",invalid:e(r).mailgunConfig.from_mail.$error,"content-loading":o.isFetchingInitialData,onInput:i[10]||(i[10]=f=>e(r).mailgunConfig.from_mail.$touch())},null,8,["modelValue","invalid","content-loading"])]),_:1},8,["label","content-loading","error"]),t($,{label:I.$t("wizard.mail.from_name"),"content-loading":o.isFetchingInitialData,error:e(r).mailgunConfig.from_name.$error&&e(r).mailgunConfig.from_name.$errors[0].$message,required:""},{default:d(()=>[t(B,{modelValue:p.value.from_name,"onUpdate:modelValue":i[11]||(i[11]=f=>p.value.from_name=f),modelModifiers:{trim:!0},invalid:e(r).mailgunConfig.from_name.$error,"content-loading":o.isFetchingInitialData,type:"text",name:"from_name",onInput:i[12]||(i[12]=f=>e(r).mailgunConfig.from_name.$touch())},null,8,["modelValue","invalid","content-loading"])]),_:1},8,["label","content-loading","error"])]),t(_,{loading:I.loading,disabled:o.isSaving,"content-loading":o.isFetchingInitialData,class:"mt-4"},{left:d(f=>[o.isSaving?G("",!0):(q(),M(u,{key:0,name:"SaveIcon",class:x(f.class)},null,8,["class"]))]),default:d(()=>[N(" "+P(I.$t("general.save")),1)]),_:1},8,["loading","disabled","content-loading"])],32)}}},ua={class:"grid grid-cols-1 gap-4 mb-4 md:grid-cols-2 md:mb-6"},ma={class:"grid grid-cols-1 gap-4 mb-4 md:grid-cols-2 md:mb-6"},ca={class:"grid grid-cols-1 gap-4 mb-4 md:grid-cols-2 md:mb-6"},ga={class:"grid grid-cols-1 gap-4 mb-6 md:grid-cols-2"},va={__name:"SesMailDriver",props:{isSaving:{type:Boolean,require:!0,default:!1},isFetchingInitialData:{type:Boolean,require:!0,default:!1}},emits:["submit-data","on-change-driver"],setup(o,{emit:S}){const D=S,{t:n}=O.useI18n(),s=A(["tls","ssl","starttls"]);let a=z(!1);const p=ee(),m=k(()=>p.sesConfig);m.value.mail_driver="ses";const v=k(()=>({sesConfig:{mail_driver:{required:y.withMessage(n("validation.required"),V)},mail_host:{required:y.withMessage(n("validation.required"),V)},mail_port:{required:y.withMessage(n("validation.required"),V),numeric:ne},mail_ses_key:{required:y.withMessage(n("validation.required"),V)},mail_ses_secret:{required:y.withMessage(n("validation.required"),V)},mail_encryption:{required:y.withMessage(n("validation.required"),V)},from_mail:{required:y.withMessage(n("validation.required"),V),email:y.withMessage(n("validation.email_incorrect"),X)},from_name:{required:y.withMessage(n("validation.required"),V)}}})),r=R(v,k(()=>p));async function c(){return r.value.$touch(),r.value.$invalid||D("submit-data",p.sesConfig),!1}function l(){r.value.sesConfig.mail_driver.$touch(),D("on-change-driver",p.sesConfig.mail_driver)}return(I,i)=>{const g=b("BaseMultiselect"),$=b("BaseInputGroup"),B=b("BaseInput"),u=b("BaseIcon"),_=b("BaseButton");return q(),U("form",{onSubmit:T(c,["prevent"])},[C("div",ua,[t($,{label:I.$t("wizard.mail.driver"),"content-loading":o.isFetchingInitialData,error:e(r).sesConfig.mail_driver.$error&&e(r).sesConfig.mail_driver.$errors[0].$message,required:""},{default:d(()=>[t(g,{modelValue:m.value.mail_driver,"onUpdate:modelValue":[i[0]||(i[0]=f=>m.value.mail_driver=f),l],options:e(p).mail_drivers,"can-deselect":!1,"content-loading":o.isFetchingInitialData,invalid:e(r).sesConfig.mail_driver.$error},null,8,["modelValue","options","content-loading","invalid"])]),_:1},8,["label","content-loading","error"]),t($,{label:I.$t("wizard.mail.host"),"content-loading":o.isFetchingInitialData,error:e(r).sesConfig.mail_host.$error&&e(r).sesConfig.mail_host.$errors[0].$message,required:""},{default:d(()=>[t(B,{modelValue:m.value.mail_host,"onUpdate:modelValue":i[1]||(i[1]=f=>m.value.mail_host=f),modelModifiers:{trim:!0},invalid:e(r).sesConfig.mail_host.$error,"content-loading":o.isFetchingInitialData,type:"text",name:"mail_host",onInput:i[2]||(i[2]=f=>e(r).sesConfig.mail_host.$touch())},null,8,["modelValue","invalid","content-loading"])]),_:1},8,["label","content-loading","error"])]),C("div",ma,[t($,{label:I.$t("wizard.mail.port"),"content-loading":o.isFetchingInitialData,error:e(r).sesConfig.mail_port.$error&&e(r).sesConfig.mail_port.$errors[0].$message,required:""},{default:d(()=>[t(B,{modelValue:m.value.mail_port,"onUpdate:modelValue":i[3]||(i[3]=f=>m.value.mail_port=f),modelModifiers:{trim:!0},invalid:e(r).sesConfig.mail_port.$error,"content-loading":o.isFetchingInitialData,type:"text",name:"mail_port",onInput:i[4]||(i[4]=f=>e(r).sesConfig.mail_port.$touch())},null,8,["modelValue","invalid","content-loading"])]),_:1},8,["label","content-loading","error"]),t($,{label:I.$t("wizard.mail.encryption"),"content-loading":o.isFetchingInitialData,error:e(r).sesConfig.mail_encryption.$error&&e(r).sesConfig.mail_encryption.$errors[0].$message,required:""},{default:d(()=>[t(g,{modelValue:m.value.mail_encryption,"onUpdate:modelValue":i[5]||(i[5]=f=>m.value.mail_encryption=f),modelModifiers:{trim:!0},invalid:e(r).sesConfig.mail_encryption.$error,options:s,"content-loading":o.isFetchingInitialData,onInput:i[6]||(i[6]=f=>e(r).sesConfig.mail_encryption.$touch())},null,8,["modelValue","invalid","options","content-loading"])]),_:1},8,["label","content-loading","error"])]),C("div",ca,[t($,{label:I.$t("wizard.mail.from_mail"),"content-loading":o.isFetchingInitialData,error:e(r).sesConfig.from_mail.$error&&e(r).sesConfig.from_mail.$errors[0].$message,required:""},{default:d(()=>[t(B,{modelValue:m.value.from_mail,"onUpdate:modelValue":i[7]||(i[7]=f=>m.value.from_mail=f),modelModifiers:{trim:!0},invalid:e(r).sesConfig.from_mail.$error,"content-loading":o.isFetchingInitialData,type:"text",name:"from_mail",onInput:i[8]||(i[8]=f=>e(r).sesConfig.from_mail.$touch())},null,8,["modelValue","invalid","content-loading"])]),_:1},8,["label","content-loading","error"]),t($,{label:I.$t("wizard.mail.from_name"),"content-loading":o.isFetchingInitialData,error:e(r).sesConfig.from_name.$error&&e(r).sesConfig.from_name.$errors[0].$message,required:""},{default:d(()=>[t(B,{modelValue:m.value.from_name,"onUpdate:modelValue":i[9]||(i[9]=f=>m.value.from_name=f),modelModifiers:{trim:!0},invalid:e(r).sesConfig.from_name.$error,"content-loading":o.isFetchingInitialData,type:"text",name:"name",onInput:i[10]||(i[10]=f=>e(r).sesConfig.from_name.$touch())},null,8,["modelValue","invalid","content-loading"])]),_:1},8,["label","content-loading","error"])]),C("div",ga,[t($,{label:I.$t("wizard.mail.ses_key"),"content-loading":o.isFetchingInitialData,error:e(r).sesConfig.mail_ses_key.$error&&e(r).sesConfig.mail_ses_key.$errors[0].$message,required:""},{default:d(()=>[t(B,{modelValue:m.value.mail_ses_key,"onUpdate:modelValue":i[11]||(i[11]=f=>m.value.mail_ses_key=f),modelModifiers:{trim:!0},invalid:e(r).sesConfig.mail_ses_key.$error,"content-loading":o.isFetchingInitialData,type:"text",name:"mail_ses_key",onInput:i[12]||(i[12]=f=>e(r).sesConfig.mail_ses_key.$touch())},null,8,["modelValue","invalid","content-loading"])]),_:1},8,["label","content-loading","error"]),t($,{label:I.$t("wizard.mail.ses_secret"),"content-loading":o.isFetchingInitialData,error:e(r).sesConfig.mail_ses_secret.$error&&e(r).sesConfig.mail_ses_secret.$errors[0].$message,required:""},{default:d(()=>[t(B,{modelValue:m.value.mail_ses_secret,"onUpdate:modelValue":i[15]||(i[15]=f=>m.value.mail_ses_secret=f),modelModifiers:{trim:!0},invalid:e(r).sesConfig.mail_ses_secret.$error,type:I.getInputType,"content-loading":o.isFetchingInitialData,name:"mail_ses_secret",autocomplete:"off","data-lpignore":"true",onInput:i[16]||(i[16]=f=>e(r).sesConfig.mail_ses_secret.$touch())},{right:d(()=>[e(a)?(q(),M(u,{key:0,name:"EyeOffIcon",class:"w-5 h-5 mr-1 text-gray-500 cursor-pointer",onClick:i[13]||(i[13]=f=>K(a)?a.value=!e(a):a=!e(a))})):(q(),M(u,{key:1,name:"EyeIcon",class:"w-5 h-5 mr-1 text-gray-500 cursor-pointer",onClick:i[14]||(i[14]=f=>K(a)?a.value=!e(a):a=!e(a))}))]),_:1},8,["modelValue","invalid","type","content-loading"])]),_:1},8,["label","content-loading","error"])]),t(_,{loading:o.isSaving,disabled:o.isSaving,"content-loading":o.isFetchingInitialData,class:"mt-4"},{left:d(f=>[o.isSaving?G("",!0):(q(),M(u,{key:0,name:"SaveIcon",class:x(f.class)},null,8,["class"]))]),default:d(()=>[N(" "+P(I.$t("general.save")),1)]),_:1},8,["loading","disabled","content-loading"])],32)}}},pa={class:"grid grid-cols-1 gap-4 mb-4 md:grid-cols-2 md:mb-6"},fa={class:"grid grid-cols-1 gap-4 mb-6 md:grid-cols-2"},ce={__name:"BasicMailDriver",props:{isSaving:{type:Boolean,require:!0,default:!1},isFetchingInitialData:{type:Boolean,require:!0,default:!1}},emits:["submit-data","on-change-driver"],setup(o,{emit:S}){const D=S,{t:n}=O.useI18n(),s=ee(),a=k(()=>s.basicMailConfig);k(()=>s.mail_drivers),a.value.mail_driver="mail";const p=k(()=>({basicMailConfig:{mail_driver:{required:y.withMessage(n("validation.required"),V)},from_mail:{required:y.withMessage(n("validation.required"),V),email:y.withMessage(n("validation.email_incorrect"),X)},from_name:{required:y.withMessage(n("validation.required"),V)}}})),m=R(p,k(()=>s));function v(){return m.value.$touch(),m.value.$invalid||D("submit-data",s.basicMailConfig),!1}function r(){var c;m.value.basicMailConfig.mail_driver.$touch(),D("on-change-driver",(c=s==null?void 0:s.basicMailConfig)==null?void 0:c.mail_driver)}return(c,l)=>{const I=b("BaseMultiselect"),i=b("BaseInputGroup"),g=b("BaseInput"),$=b("BaseIcon"),B=b("BaseButton");return q(),U("form",{onSubmit:T(v,["prevent"])},[C("div",pa,[t(i,{label:c.$t("wizard.mail.driver"),"content-loading":o.isFetchingInitialData,error:e(m).basicMailConfig.mail_driver.$error&&e(m).basicMailConfig.mail_driver.$errors[0].$message,required:""},{default:d(()=>[t(I,{modelValue:a.value.mail_driver,"onUpdate:modelValue":[l[0]||(l[0]=u=>a.value.mail_driver=u),r],invalid:e(m).basicMailConfig.mail_driver.$error,options:e(s).mail_drivers,"can-deselect":!1,"content-loading":o.isFetchingInitialData},null,8,["modelValue","invalid","options","content-loading"])]),_:1},8,["label","content-loading","error"])]),C("div",fa,[t(i,{label:c.$t("wizard.mail.from_name"),"content-loading":o.isFetchingInitialData,error:e(m).basicMailConfig.from_name.$error&&e(m).basicMailConfig.from_name.$errors[0].$message,required:""},{default:d(()=>[t(g,{modelValue:a.value.from_name,"onUpdate:modelValue":l[1]||(l[1]=u=>a.value.from_name=u),modelModifiers:{trim:!0},invalid:e(m).basicMailConfig.from_name.$error,"content-loading":o.isFetchingInitialData,type:"text",name:"name",onInput:l[2]||(l[2]=u=>e(m).basicMailConfig.from_name.$touch())},null,8,["modelValue","invalid","content-loading"])]),_:1},8,["label","content-loading","error"]),t(i,{label:c.$t("wizard.mail.from_mail"),"content-loading":o.isFetchingInitialData,error:e(m).basicMailConfig.from_mail.$error&&e(m).basicMailConfig.from_mail.$errors[0].$message,required:""},{default:d(()=>[t(g,{modelValue:a.value.from_mail,"onUpdate:modelValue":l[3]||(l[3]=u=>a.value.from_mail=u),modelModifiers:{trim:!0},invalid:e(m).basicMailConfig.from_mail.$error,"content-loading":o.isFetchingInitialData,type:"text",onInput:l[4]||(l[4]=u=>e(m).basicMailConfig.from_mail.$touch())},null,8,["modelValue","invalid","content-loading"])]),_:1},8,["label","content-loading","error"])]),t(B,{loading:o.isSaving,disabled:o.isSaving,"content-loading":o.isFetchingInitialData,class:"mt-4"},{left:d(u=>[o.isSaving?G("",!0):(q(),M($,{key:0,name:"SaveIcon",class:x(u.class)},null,8,["class"]))]),default:d(()=>[N(" "+P(c.$t("general.save")),1)]),_:1},8,["loading","disabled","content-loading"])],32)}}},_a={components:{Smtp:oa,Mailgun:da,Ses:va,sendmail:ce,Mail:ce},emits:["next"],setup(o,{emit:S}){const D=z(!1),n=z(!1),s=ee();s.mail_driver="mail",p();function a(v){s.mail_driver=v}async function p(){n.value=!0,await s.fetchMailDrivers(),n.value=!1}async function m(v){D.value=!0;let r=await s.updateMailConfig(v);D.value=!1,r.data.success&&await S("next",5)}return{mailDriverStore:s,isSaving:D,isFetchingInitialData:n,changeDriver:a,next:m}}};function ba(o,S,D,n,s,a){const p=b("BaseWizardStep");return q(),M(p,{title:o.$t("wizard.mail.mail_config"),description:o.$t("wizard.mail.mail_config_desc")},{default:d(()=>[C("form",{action:"",onSubmit:S[1]||(S[1]=T((...m)=>n.next&&n.next(...m),["prevent"]))},[(q(),M(ue(n.mailDriverStore.mail_driver),{"config-data":n.mailDriverStore.mailConfigData,"is-saving":n.isSaving,"is-fetching-initial-data":n.isFetchingInitialData,onOnChangeDriver:S[0]||(S[0]=m=>n.changeDriver(m)),onSubmitData:n.next},null,40,["config-data","is-saving","is-fetching-initial-data","onSubmitData"]))],32)]),_:1},8,["title","description"])}const $a=se(_a,[["render",ba]]),wa={class:"grid grid-cols-1 mb-4 md:grid-cols-2 md:mb-6"},ha={class:"grid grid-cols-1 gap-4 mb-4 md:grid-cols-2 md:mb-6"},ya={class:"grid grid-cols-1 gap-4 mb-6 md:grid-cols-2"},Ia={__name:"Step6AccountSettings",emits:["next"],setup(o,{emit:S}){const D=S;let n=z(!1);const s=z(!1),a=z(!1);let p=z(""),m=z(null);const v=ve(),r=ae(),{t:c}=O.useI18n(),l=k(()=>v.userForm),I=k(()=>({userForm:{name:{required:y.withMessage(c("validation.required"),V)},email:{required:y.withMessage(c("validation.required"),V),email:y.withMessage(c("validation.email_incorrect"),X)},password:{required:y.withMessage(c("validation.required"),V),minLength:y.withMessage(c("validation.password_min_length",{count:8}),be(8))},confirm_password:{required:y.withMessage(c("validation.required"),$e(v.userForm.password)),sameAsPassword:y.withMessage(c("validation.password_incorrect"),we(v.userForm.password))}}})),i=R(I,k(()=>v));function g(u,_){m.value=_}function $(){m.value=null}async function B(){if(i.value.userForm.$touch(),i.value.userForm.$invalid)return!0;n.value=!0;let u=await v.updateCurrentUser(l.value);if(n.value=!1,u.data.data){if(m.value){let f=new FormData;f.append("admin_avatar",m.value),await v.uploadAvatar(f)}const _=u.data.data.companies[0];await r.setSelectedCompany(_),D("next",6)}}return(u,_)=>{const f=b("BaseFileUploader"),w=b("BaseInputGroup"),h=b("BaseInput"),L=b("EyeOffIcon"),Z=b("EyeIcon"),J=b("BaseIcon"),H=b("BaseButton"),E=b("BaseWizardStep");return q(),M(E,{title:u.$t("wizard.account_info"),description:u.$t("wizard.account_info_desc")},{default:d(()=>[C("form",{action:"",onSubmit:T(B,["prevent"])},[C("div",wa,[t(w,{label:u.$t("settings.account_settings.profile_picture")},{default:d(()=>[t(f,{avatar:!0,"preview-image":e(p),onChange:g,onRemove:$},null,8,["preview-image"])]),_:1},8,["label"])]),C("div",ha,[t(w,{label:u.$t("wizard.name"),error:e(i).userForm.name.$error&&e(i).userForm.name.$errors[0].$message,required:""},{default:d(()=>[t(h,{modelValue:l.value.name,"onUpdate:modelValue":_[0]||(_[0]=F=>l.value.name=F),modelModifiers:{trim:!0},invalid:e(i).userForm.name.$error,type:"text",name:"name",onInput:_[1]||(_[1]=F=>e(i).userForm.name.$touch())},null,8,["modelValue","invalid"])]),_:1},8,["label","error"]),t(w,{label:u.$t("wizard.email"),error:e(i).userForm.email.$error&&e(i).userForm.email.$errors[0].$message,required:""},{default:d(()=>[t(h,{modelValue:l.value.email,"onUpdate:modelValue":_[2]||(_[2]=F=>l.value.email=F),modelModifiers:{trim:!0},invalid:e(i).userForm.email.$error,type:"text",name:"email",onInput:_[3]||(_[3]=F=>e(i).userForm.email.$touch())},null,8,["modelValue","invalid"])]),_:1},8,["label","error"])]),C("div",ya,[t(w,{label:u.$t("wizard.password"),error:e(i).userForm.password.$error&&e(i).userForm.password.$errors[0].$message,required:""},{default:d(()=>[t(h,{modelValue:l.value.password,"onUpdate:modelValue":_[6]||(_[6]=F=>l.value.password=F),modelModifiers:{trim:!0},invalid:e(i).userForm.password.$error,type:s.value?"text":"password",name:"password",onInput:_[7]||(_[7]=F=>e(i).userForm.password.$touch())},{right:d(()=>[s.value?(q(),M(L,{key:0,class:"w-5 h-5 mr-1 text-gray-500 cursor-pointer",onClick:_[4]||(_[4]=F=>s.value=!s.value)})):(q(),M(Z,{key:1,class:"w-5 h-5 mr-1 text-gray-500 cursor-pointer",onClick:_[5]||(_[5]=F=>s.value=!s.value)}))]),_:1},8,["modelValue","invalid","type"])]),_:1},8,["label","error"]),t(w,{label:u.$t("wizard.confirm_password"),error:e(i).userForm.confirm_password.$error&&e(i).userForm.confirm_password.$errors[0].$message,required:""},{default:d(()=>[t(h,{modelValue:l.value.confirm_password,"onUpdate:modelValue":_[10]||(_[10]=F=>l.value.confirm_password=F),modelModifiers:{trim:!0},invalid:e(i).userForm.confirm_password.$error,type:a.value?"text":"password",name:"confirm_password",onInput:_[11]||(_[11]=F=>e(i).userForm.confirm_password.$touch())},{right:d(()=>[a.value?(q(),M(J,{key:0,name:"EyeOffIcon",class:"w-5 h-5 mr-1 text-gray-500 cursor-pointer",onClick:_[8]||(_[8]=F=>a.value=!a.value)})):(q(),M(J,{key:1,name:"EyeIcon",class:"w-5 h-5 mr-1 text-gray-500 cursor-pointer",onClick:_[9]||(_[9]=F=>a.value=!a.value)}))]),_:1},8,["modelValue","invalid","type"])]),_:1},8,["label","error"])]),t(H,{loading:e(n),disabled:e(n),class:"mt-4"},{left:d(F=>[e(n)?G("",!0):(q(),M(J,{key:0,name:"SaveIcon",class:x(F.class)},null,8,["class"]))]),default:d(()=>[N(" "+P(u.$t("wizard.save_cont")),1)]),_:1},8,["loading","disabled"])],32)]),_:1},8,["title","description"])}}},qa={class:"grid grid-cols-1 mb-4 md:grid-cols-2 md:mb-6"},Ba={class:"grid grid-cols-1 gap-4 mb-4 md:grid-cols-2 md:mb-6"},Ca={class:"grid grid-cols-1 gap-4 mb-4 md:grid-cols-2 md:mb-6"},Va={class:"grid grid-cols-1 gap-4 mb-6 md:grid-cols-2"},Da={__name:"Step7CompanyInfo",emits:["next"],setup(o,{emit:S}){const D=S;let n=z(!1),s=z(!1);const{t:a}=O.useI18n();let p=z(null),m=z(null),v=z(null);const r=A({name:null,address:{address_street_1:"",address_street_2:"",website:"",country_id:null,state:"",city:"",phone:"",zip:""}}),c=ae(),l=pe();Q(async()=>{var u;n.value=!0,await l.fetchCountries(),n.value=!1,r.address.country_id=(u=l.countries.find(_=>_.code=="US"))==null?void 0:u.id});const I={companyForm:{name:{required:y.withMessage(a("validation.required"),V)},address:{country_id:{required:y.withMessage(a("validation.required"),V)},address_street_1:{maxLength:y.withMessage(a("validation.address_maxlength",{count:255}),me(255))},address_street_2:{maxLength:y.withMessage(a("validation.address_maxlength",{count:255}),me(255))}}}},i=R(I,{companyForm:r});function g(u,_,f,w){v.value=w.name,m.value=_}function $(){m.value=null}async function B(){if(i.value.companyForm.$touch(),i.value.$invalid)return!0;if(s.value=!0,c.updateCompany(r)){if(m.value){let _=new FormData;_.append("company_logo",JSON.stringify({name:v.value,data:m.value})),await c.updateCompanyLogo(_)}s.value=!1,D("next",7)}}return(u,_)=>{const f=b("BaseFileUploader"),w=b("BaseInputGroup"),h=b("BaseInput"),L=b("BaseMultiselect"),Z=b("BaseTextarea"),J=b("BaseIcon"),H=b("BaseButton"),E=b("BaseWizardStep");return q(),M(E,{title:u.$t("wizard.company_info"),description:u.$t("wizard.company_info_desc"),"step-container":"bg-white border border-gray-200 border-solid mb-8 md:w-full p-8 rounded w-full"},{default:d(()=>[C("form",{action:"",onSubmit:T(B,["prevent"])},[C("div",qa,[t(w,{label:u.$t("settings.company_info.company_logo")},{default:d(()=>[t(f,{base64:"","preview-image":e(p),onChange:g,onRemove:$},null,8,["preview-image"])]),_:1},8,["label"])]),C("div",Ba,[t(w,{label:u.$t("wizard.company_name"),error:e(i).companyForm.name.$error&&e(i).companyForm.name.$errors[0].$message,required:""},{default:d(()=>[t(h,{modelValue:r.name,"onUpdate:modelValue":_[0]||(_[0]=F=>r.name=F),modelModifiers:{trim:!0},invalid:e(i).companyForm.name.$error,type:"text",name:"name",onInput:_[1]||(_[1]=F=>e(i).companyForm.name.$touch())},null,8,["modelValue","invalid"])]),_:1},8,["label","error"]),t(w,{label:u.$t("wizard.country"),error:e(i).companyForm.address.country_id.$error&&e(i).companyForm.address.country_id.$errors[0].$message,"content-loading":e(n),required:""},{default:d(()=>[t(L,{modelValue:r.address.country_id,"onUpdate:modelValue":_[2]||(_[2]=F=>r.address.country_id=F),label:"name",invalid:e(i).companyForm.address.country_id.$error,options:e(l).countries,"value-prop":"id","can-deselect":!1,"can-clear":!1,"content-loading":e(n),placeholder:u.$t("general.select_country"),searchable:"","track-by":"name"},null,8,["modelValue","invalid","options","content-loading","placeholder"])]),_:1},8,["label","error","content-loading"])]),C("div",Ca,[t(w,{label:u.$t("wizard.state")},{default:d(()=>[t(h,{modelValue:r.address.state,"onUpdate:modelValue":_[3]||(_[3]=F=>r.address.state=F),name:"state",type:"text"},null,8,["modelValue"])]),_:1},8,["label"]),t(w,{label:u.$t("wizard.city")},{default:d(()=>[t(h,{modelValue:r.address.city,"onUpdate:modelValue":_[4]||(_[4]=F=>r.address.city=F),name:"city",type:"text"},null,8,["modelValue"])]),_:1},8,["label"])]),C("div",Va,[C("div",null,[t(w,{label:u.$t("wizard.address"),error:e(i).companyForm.address.address_street_1.$error&&e(i).companyForm.address.address_street_1.$errors[0].$message},{default:d(()=>[t(Z,{modelValue:r.address.address_street_1,"onUpdate:modelValue":_[5]||(_[5]=F=>r.address.address_street_1=F),modelModifiers:{trim:!0},invalid:e(i).companyForm.address.address_street_1.$error,placeholder:u.$t("general.street_1"),name:"billing_street1",rows:"2",onInput:_[6]||(_[6]=F=>e(i).companyForm.address.address_street_1.$touch())},null,8,["modelValue","invalid","placeholder"])]),_:1},8,["label","error"]),t(w,{error:e(i).companyForm.address.address_street_2.$error&&e(i).companyForm.address.address_street_2.$errors[0].$message,class:"mt-1 lg:mt-2 md:mt-2"},{default:d(()=>[t(Z,{modelValue:r.address.address_street_2,"onUpdate:modelValue":_[7]||(_[7]=F=>r.address.address_street_2=F),invalid:e(i).companyForm.address.address_street_2.$error,placeholder:u.$t("general.street_2"),name:"billing_street2",rows:"2",onInput:_[8]||(_[8]=F=>e(i).companyForm.address.address_street_2.$touch())},null,8,["modelValue","invalid","placeholder"])]),_:1},8,["error"])]),C("div",null,[t(w,{label:u.$t("wizard.zip_code")},{default:d(()=>[t(h,{modelValue:r.address.zip,"onUpdate:modelValue":_[9]||(_[9]=F=>r.address.zip=F),modelModifiers:{trim:!0},type:"text",name:"zip"},null,8,["modelValue"])]),_:1},8,["label"]),t(w,{label:u.$t("wizard.phone"),class:"mt-4"},{default:d(()=>[t(h,{modelValue:r.address.phone,"onUpdate:modelValue":_[10]||(_[10]=F=>r.address.phone=F),modelModifiers:{trim:!0},type:"text",name:"phone"},null,8,["modelValue"])]),_:1},8,["label"])])]),t(H,{loading:e(s),disabled:e(s),class:"mt-4"},{left:d(F=>[e(s)?G("",!0):(q(),M(J,{key:0,name:"SaveIcon",class:x(F.class)},null,8,["class"]))]),default:d(()=>[N(" "+P(u.$t("wizard.save_cont")),1)]),_:1},8,["loading","disabled"])],32)]),_:1},8,["title","description"])}}},Sa={class:"grid grid-cols-1 gap-4 mb-4 md:grid-cols-2 md:mb-6"},Fa={class:"grid grid-cols-1 gap-4 mb-4 md:grid-cols-2 md:mb-6"},Ma={class:"grid grid-cols-1 gap-4 mb-6 md:grid-cols-2"},za={__name:"Step8CompanyPreferences",emits:["next"],setup(o,{emit:S}){const D=S,n=z(!1);let s=z(!1),a=A({currency:1,language:"en",carbon_date_format:"d M Y",time_zone:"UTC",fiscal_year:"1-12"});const{tm:p,t:m}=O.useI18n(),v=fe();s.value=!0,A([{title:p("settings.customization.invoices.allow"),value:"allow"},{title:p("settings.customization.invoices.disable_on_invoice_partial_paid"),value:"disable_on_invoice_partial_paid"},{title:p("settings.customization.invoices.disable_on_invoice_paid"),value:"disable_on_invoice_paid"},{title:p("settings.customization.invoices.disable_on_invoice_sent"),value:"disable_on_invoice_sent"}]);const r=ge(),c=pe(),l=ae(),I=ve(),i=de();let g={key:"fiscal_years"},$={key:"languages"};s.value=!0,Promise.all([c.fetchCurrencies(),c.fetchDateFormats(),c.fetchTimeZones(),c.fetchCountries(),c.fetchConfig(g),c.fetchConfig($)]).then(([f])=>{s.value=!1});const B=k(()=>({currentPreferences:{currency:{required:y.withMessage(m("validation.required"),V)},language:{required:y.withMessage(m("validation.required"),V)},carbon_date_format:{required:y.withMessage(m("validation.required"),V)},time_zone:{required:y.withMessage(m("validation.required"),V)},fiscal_year:{required:y.withMessage(m("validation.required"),V)}}})),u=R(B,{currentPreferences:a});async function _(){if(u.value.currentPreferences.$touch(),u.value.$invalid)return!0;r.openDialog({title:m("general.do_you_wish_to_continue"),message:m("wizard.currency_set_alert"),yesLabel:m("general.ok"),noLabel:m("general.cancel"),variant:"danger",size:"lg",hideNoButton:!1}).then(async f=>{if(f){let w={settings:{...a}};n.value=!0,delete w.settings.discount_per_item;let h=await l.updateCompanySettings({data:w});if(h.data){n.value=!1;let L={settings:{language:a.language}};(await I.updateUserSettings(L)).data&&(D("next","COMPLETED"),i.showNotification({type:"success",message:"Login Successful"}),v.push("/admin/dashboard")),he.set("auth.token",h.data.token)}return!0}return n.value=!1,!0})}return(f,w)=>{const h=b("BaseMultiselect"),L=b("BaseInputGroup"),Z=b("BaseIcon"),J=b("BaseButton"),H=b("BaseWizardStep");return q(),M(H,{title:f.$t("wizard.preferences"),description:f.$t("wizard.preferences_desc"),"step-container":"bg-white border border-gray-200 border-solid mb-8 md:w-full p-8 rounded w-full"},{default:d(()=>[C("form",{action:"",onSubmit:T(_,["prevent"])},[C("div",null,[C("div",Sa,[t(L,{label:f.$t("wizard.currency"),error:e(u).currentPreferences.currency.$error&&e(u).currentPreferences.currency.$errors[0].$message,"content-loading":e(s),required:""},{default:d(()=>[t(h,{modelValue:e(a).currency,"onUpdate:modelValue":w[0]||(w[0]=E=>e(a).currency=E),"content-loading":e(s),options:e(c).currencies,label:"name","value-prop":"id",searchable:!0,"track-by":"name",placeholder:f.$t("settings.currencies.select_currency"),invalid:e(u).currentPreferences.currency.$error,class:"w-full"},null,8,["modelValue","content-loading","options","placeholder","invalid"])]),_:1},8,["label","error","content-loading"]),t(L,{label:f.$t("settings.preferences.default_language"),error:e(u).currentPreferences.language.$error&&e(u).currentPreferences.language.$errors[0].$message,"content-loading":e(s),required:""},{default:d(()=>[t(h,{modelValue:e(a).language,"onUpdate:modelValue":w[1]||(w[1]=E=>e(a).language=E),"content-loading":e(s),options:e(c).languages,label:"name","value-prop":"code",placeholder:f.$t("settings.preferences.select_language"),class:"w-full","track-by":"name",searchable:!0,invalid:e(u).currentPreferences.language.$error},null,8,["modelValue","content-loading","options","placeholder","invalid"])]),_:1},8,["label","error","content-loading"])]),C("div",Fa,[t(L,{label:f.$t("wizard.date_format"),error:e(u).currentPreferences.carbon_date_format.$error&&e(u).currentPreferences.carbon_date_format.$errors[0].$message,"content-loading":e(s),required:""},{default:d(()=>[t(h,{modelValue:e(a).carbon_date_format,"onUpdate:modelValue":w[2]||(w[2]=E=>e(a).carbon_date_format=E),"content-loading":e(s),options:e(c).dateFormats,label:"display_date","value-prop":"carbon_format_value",placeholder:f.$t("settings.preferences.select_date_format"),"track-by":"display_date",searchable:"",invalid:e(u).currentPreferences.carbon_date_format.$error,class:"w-full"},null,8,["modelValue","content-loading","options","placeholder","invalid"])]),_:1},8,["label","error","content-loading"]),t(L,{label:f.$t("wizard.time_zone"),error:e(u).currentPreferences.time_zone.$error&&e(u).currentPreferences.time_zone.$errors[0].$message,"content-loading":e(s),required:""},{default:d(()=>[t(h,{modelValue:e(a).time_zone,"onUpdate:modelValue":w[3]||(w[3]=E=>e(a).time_zone=E),"content-loading":e(s),options:e(c).timeZones,label:"key","value-prop":"value",placeholder:f.$t("settings.preferences.select_time_zone"),"track-by":"key",searchable:!0,invalid:e(u).currentPreferences.time_zone.$error},null,8,["modelValue","content-loading","options","placeholder","invalid"])]),_:1},8,["label","error","content-loading"])]),C("div",Ma,[t(L,{label:f.$t("wizard.fiscal_year"),error:e(u).currentPreferences.fiscal_year.$error&&e(u).currentPreferences.fiscal_year.$errors[0].$message,"content-loading":e(s),required:""},{default:d(()=>[t(h,{modelValue:e(a).fiscal_year,"onUpdate:modelValue":w[4]||(w[4]=E=>e(a).fiscal_year=E),"content-loading":e(s),options:e(c).fiscalYears,label:"key","value-prop":"value",placeholder:f.$t("settings.preferences.select_financial_year"),invalid:e(u).currentPreferences.fiscal_year.$error,"track-by":"key",searchable:!0,class:"w-full"},null,8,["modelValue","content-loading","options","placeholder","invalid"])]),_:1},8,["label","error","content-loading"])]),t(J,{loading:n.value,disabled:n.value,"content-loading":e(s),class:"mt-4"},{left:d(E=>[t(Z,{name:"SaveIcon",class:x(E.class)},null,8,["class"])]),default:d(()=>[N(" "+P(f.$t("wizard.save_cont")),1)]),_:1},8,["loading","disabled","content-loading"])])],32)]),_:1},8,["title","description"])}}},ka={components:{step_1:Ue,step_2:Le,step_3:Ke,step_4:ea,step_5:$a,step_6:Ia,step_7:Da,step_8:za},setup(){let o=z("step_1"),S=z(1);const D=fe(),n=Y();s();async function s(){let v=await n.fetchInstallationStep();if(v.data.profile_complete==="COMPLETED"){D.push("/admin/dashboard");return}let r=parseInt(v.data.profile_complete);r&&(S.value=r+1,o.value=`step_${r+1}`)}async function a(v){var c,l;let r={profile_complete:v};try{return await n.addInstallationStep(r),!0}catch(I){return((l=(c=I==null?void 0:I.response)==null?void 0:c.data)==null?void 0:l.message)==="The MAC is invalid."&&window.location.reload(),!1}}async function p(v){if(v&&!await a(v))return!1;S.value++,S.value<=8&&(o.value="step_"+S.value)}function m(v){}return{stepComponent:o,currentStepNumber:S,onStepChange:p,saveStepProgress:a,onNavClick:m}}},Ua={class:"flex flex-col items-center justify-between w-full pt-10"};function Pa(o,S,D,n,s,a){const p=b("BaseWizard");return q(),U("div",Ua,[t(p,{steps:7,"current-step":n.currentStepNumber,onClick:n.onNavClick},{default:d(()=>[(q(),M(ue(n.stepComponent),{onNext:n.onStepChange},null,40,["onNext"]))]),_:1},8,["current-step","onClick"])])}const Ga=se(ka,[["render",Pa]]);export{Ga as default}; diff --git a/public/build/assets/InvoiceCreate-yj_K6THR.js b/public/build/assets/InvoiceCreate-MZJJjNuY.js similarity index 93% rename from public/build/assets/InvoiceCreate-yj_K6THR.js rename to public/build/assets/InvoiceCreate-MZJJjNuY.js index 7619be0e..7c9c4e37 100644 --- a/public/build/assets/InvoiceCreate-yj_K6THR.js +++ b/public/build/assets/InvoiceCreate-MZJJjNuY.js @@ -1 +1 @@ -import{aq as P,r as s,o as d,c as E,a as t,l as n,w as a,E as A,ae as J,av as K,v as O,L as X,e as Y,f as C,k as I,g as _,h as y,ai as Q,ag as W,X as Z,j as ee,z as ne,m as b,K as k,b as $,t as L,J as te,p as oe,q as ie,N as ae}from"./main-B9dpPbRR.js";import{_ as se,a as le,b as ce,c as re,d as ue,e as de,f as me}from"./SalesTax-ipNfFfG-.js";import{_ as ve}from"./ExchangeRateConverter-aybyIXMj.js";import{_ as ge}from"./CreateCustomFields-blY-YoZ8.js";import{_ as pe}from"./TaxTypeModal-jyzjEMpe.js";import"./DragIcon-w0U5hiz6.js";import"./SelectNotePopup-5BlBNAE0.js";import"./NoteModal-h_90cxoW.js";import"./payment-Y8OywN76.js";import"./exchange-rate-M4ruO0OO.js";import"./dynamic-import-helper-0gtGTknh.js";const _e={class:"grid grid-cols-12 gap-8 mt-6 mb-8"},fe={__name:"InvoiceCreateBasicFields",props:{v:{type:Object,default:null},isLoading:{type:Boolean,default:!1},isEdit:{type:Boolean,default:!1}},setup(o){const e=P();return(m,l)=>{const B=s("BaseCustomerSelectPopup"),c=s("BaseDatePicker"),v=s("BaseInputGroup"),h=s("BaseInput"),u=s("BaseInputGrid");return d(),E("div",_e,[t(B,{modelValue:n(e).newInvoice.customer,"onUpdate:modelValue":l[0]||(l[0]=r=>n(e).newInvoice.customer=r),valid:o.v.customer_id,"content-loading":o.isLoading,type:"invoice",class:"col-span-12 lg:col-span-5 pr-0"},null,8,["modelValue","valid","content-loading"]),t(u,{class:"col-span-12 lg:col-span-7"},{default:a(()=>[t(v,{label:m.$t("invoices.invoice_date"),"content-loading":o.isLoading,required:"",error:o.v.invoice_date.$error&&o.v.invoice_date.$errors[0].$message},{default:a(()=>[t(c,{modelValue:n(e).newInvoice.invoice_date,"onUpdate:modelValue":l[1]||(l[1]=r=>n(e).newInvoice.invoice_date=r),"content-loading":o.isLoading,"calendar-button":!0,"calendar-button-icon":"calendar"},null,8,["modelValue","content-loading"])]),_:1},8,["label","content-loading","error"]),t(v,{label:m.$t("invoices.due_date"),"content-loading":o.isLoading},{default:a(()=>[t(c,{modelValue:n(e).newInvoice.due_date,"onUpdate:modelValue":l[2]||(l[2]=r=>n(e).newInvoice.due_date=r),"content-loading":o.isLoading,"calendar-button":!0,"calendar-button-icon":"calendar"},null,8,["modelValue","content-loading"])]),_:1},8,["label","content-loading"]),t(v,{label:m.$t("invoices.invoice_number"),"content-loading":o.isLoading,error:o.v.invoice_number.$error&&o.v.invoice_number.$errors[0].$message,required:""},{default:a(()=>[t(h,{modelValue:n(e).newInvoice.invoice_number,"onUpdate:modelValue":l[3]||(l[3]=r=>n(e).newInvoice.invoice_number=r),"content-loading":o.isLoading,onInput:l[4]||(l[4]=r=>o.v.invoice_number.$touch())},null,8,["modelValue","content-loading"])]),_:1},8,["label","content-loading","error"]),t(ve,{store:n(e),"store-prop":"newInvoice",v:o.v,"is-loading":o.isLoading,"is-edit":o.isEdit,"customer-currency":n(e).newInvoice.currency_id},null,8,["store","v","is-loading","is-edit","customer-currency"])]),_:1})])}}},Ie={class:"flex"},be={class:"block mt-10 invoice-foot lg:flex lg:justify-between lg:items-start"},we={class:"relative w-full lg:w-1/2 lg:mr-4"},q="newInvoice",Ee={__name:"InvoiceCreate",setup(o){const e=P(),m=A(),l=J(),B=K(),{t:c}=O.useI18n();let v=X(),h=Y(),u=C(!1);const r=C(!1),F=C(["customer","company","customerCustom","invoice","invoiceCustom"]);let f=I(()=>e.isFetchingInvoice||e.isFetchingInitialSettings),M=I(()=>g.value?c("invoices.edit_invoice"):c("invoices.new_invoice"));const T=I(()=>m.selectedCompanySettings.sales_tax_us_enabled==="YES"&&B.salesTaxUSEnabled);let g=I(()=>v.name==="invoices.edit");const x={invoice_date:{required:_.withMessage(c("validation.required"),y)},reference_number:{maxLength:_.withMessage(c("validation.price_maxlength"),Q(255))},customer_id:{required:_.withMessage(c("validation.required"),y)},invoice_number:{required:_.withMessage(c("validation.required"),y)},exchange_rate:{required:W(function(){return _.withMessage(c("validation.required"),y),e.showExchangeRate}),decimal:_.withMessage(c("validation.valid_exchange_rate"),Z)}},w=ee(x,I(()=>e.newInvoice),{$scope:q});l.resetCustomFields(),w.value.$reset,e.resetCurrentInvoice(),e.fetchInvoiceInitialSettings(g.value),ne(()=>e.newInvoice.customer,i=>{i&&i.currency?e.newInvoice.selectedCurrency=i.currency:e.newInvoice.selectedCurrency=m.selectedCompanyCurrency});async function N(){if(w.value.$touch(),w.value.$invalid)return!1;u.value=!0;let i={...e.newInvoice,sub_total:e.getSubTotal,total:e.getTotal,tax:e.getTotalTax};try{const p=await(g.value?e.updateInvoice:e.addInvoice)(i);h.push(`/admin/invoices/${p.data.data.id}/view`)}catch(S){console.error(S)}u.value=!1}return(i,S)=>{const p=s("BaseBreadcrumbItem"),U=s("BaseBreadcrumb"),V=s("BaseButton"),j=s("router-link"),D=s("BaseIcon"),G=s("BasePageHeader"),R=s("BaseScrollPane"),z=s("BasePage");return d(),E(ae,null,[t(se),t(le),t(pe),T.value&&(!n(f)||n(v).query.customer)?(d(),b(ce,{key:0,store:n(e),"is-edit":n(g),"store-prop":"newInvoice",customer:n(e).newInvoice.customer},null,8,["store","is-edit","customer"])):k("",!0),t(z,{class:"relative invoice-create-page"},{default:a(()=>[$("form",{onSubmit:ie(N,["prevent"])},[t(G,{title:n(M)},{actions:a(()=>[i.$route.name==="invoices.edit"?(d(),b(j,{key:0,to:`/invoices/pdf/${n(e).newInvoice.unique_hash}`,target:"_blank"},{default:a(()=>[t(V,{class:"mr-3",variant:"primary-outline",type:"button"},{default:a(()=>[$("span",Ie,L(i.$t("general.view_pdf")),1)]),_:1})]),_:1},8,["to"])):k("",!0),t(V,{loading:n(u),disabled:n(u),variant:"primary",type:"submit"},{left:a(H=>[n(u)?k("",!0):(d(),b(D,{key:0,name:"SaveIcon",class:te(H.class)},null,8,["class"]))]),default:a(()=>[oe(" "+L(i.$t("invoices.save_invoice")),1)]),_:1},8,["loading","disabled"])]),default:a(()=>[t(U,null,{default:a(()=>[t(p,{title:i.$t("general.home"),to:"/admin/dashboard"},null,8,["title"]),t(p,{title:i.$t("invoices.invoice",2),to:"/admin/invoices"},null,8,["title"]),i.$route.name==="invoices.edit"?(d(),b(p,{key:0,title:i.$t("invoices.edit_invoice"),to:"#",active:""},null,8,["title"])):(d(),b(p,{key:1,title:i.$t("invoices.new_invoice"),to:"#",active:""},null,8,["title"]))]),_:1})]),_:1},8,["title"]),t(fe,{v:n(w),"is-loading":n(f),"is-edit":n(g)},null,8,["v","is-loading","is-edit"]),t(R,null,{default:a(()=>[t(re,{currency:n(e).newInvoice.selectedCurrency,"is-loading":n(f),"item-validation-scope":q,store:n(e),"store-prop":"newInvoice"},null,8,["currency","is-loading","store"]),$("div",be,[$("div",we,[t(ue,{store:n(e),"store-prop":"newInvoice",fields:F.value,type:"Invoice"},null,8,["store","fields"]),t(ge,{type:"Invoice","is-edit":n(g),"is-loading":n(f),store:n(e),"store-prop":"newInvoice","custom-field-scope":q,class:"mb-6"},null,8,["is-edit","is-loading","store"]),t(de,{store:n(e),"store-prop":"newInvoice","component-name":"InvoiceTemplate","is-mark-as-default":r.value},null,8,["store","is-mark-as-default"])]),t(me,{currency:n(e).newInvoice.selectedCurrency,"is-loading":n(f),store:n(e),"store-prop":"newInvoice","tax-popup-type":"invoice"},null,8,["currency","is-loading","store"])])]),_:1})],32)]),_:1})],64)}}};export{Ee as default}; +import{aq as P,r as s,o as d,c as E,a as t,l as n,w as a,E as A,ae as J,av as K,v as O,L as X,e as Y,f as C,k as I,g as _,h as y,ai as Q,ag as W,X as Z,j as ee,z as ne,m as b,K as k,b as $,t as L,J as te,p as oe,q as ie,N as ae}from"./main-pPEsZPea.js";import{_ as se,a as le,b as ce,c as re,d as ue,e as de,f as me}from"./SalesTax-q9Vvrvve.js";import{_ as ve}from"./ExchangeRateConverter-e1MH9GPD.js";import{_ as ge}from"./CreateCustomFields-8Vbtza7g.js";import{_ as pe}from"./TaxTypeModal-rCI1vg4v.js";import"./DragIcon-lAv182Nx.js";import"./SelectNotePopup-iZwUGlz-.js";import"./NoteModal-YX0uc_EM.js";import"./payment-fIjVKZH2.js";import"./exchange-rate-Md-8fXjz.js";import"./dynamic-import-helper-0gtGTknh.js";const _e={class:"grid grid-cols-12 gap-8 mt-6 mb-8"},fe={__name:"InvoiceCreateBasicFields",props:{v:{type:Object,default:null},isLoading:{type:Boolean,default:!1},isEdit:{type:Boolean,default:!1}},setup(o){const e=P();return(m,l)=>{const B=s("BaseCustomerSelectPopup"),c=s("BaseDatePicker"),v=s("BaseInputGroup"),h=s("BaseInput"),u=s("BaseInputGrid");return d(),E("div",_e,[t(B,{modelValue:n(e).newInvoice.customer,"onUpdate:modelValue":l[0]||(l[0]=r=>n(e).newInvoice.customer=r),valid:o.v.customer_id,"content-loading":o.isLoading,type:"invoice",class:"col-span-12 lg:col-span-5 pr-0"},null,8,["modelValue","valid","content-loading"]),t(u,{class:"col-span-12 lg:col-span-7"},{default:a(()=>[t(v,{label:m.$t("invoices.invoice_date"),"content-loading":o.isLoading,required:"",error:o.v.invoice_date.$error&&o.v.invoice_date.$errors[0].$message},{default:a(()=>[t(c,{modelValue:n(e).newInvoice.invoice_date,"onUpdate:modelValue":l[1]||(l[1]=r=>n(e).newInvoice.invoice_date=r),"content-loading":o.isLoading,"calendar-button":!0,"calendar-button-icon":"calendar"},null,8,["modelValue","content-loading"])]),_:1},8,["label","content-loading","error"]),t(v,{label:m.$t("invoices.due_date"),"content-loading":o.isLoading},{default:a(()=>[t(c,{modelValue:n(e).newInvoice.due_date,"onUpdate:modelValue":l[2]||(l[2]=r=>n(e).newInvoice.due_date=r),"content-loading":o.isLoading,"calendar-button":!0,"calendar-button-icon":"calendar"},null,8,["modelValue","content-loading"])]),_:1},8,["label","content-loading"]),t(v,{label:m.$t("invoices.invoice_number"),"content-loading":o.isLoading,error:o.v.invoice_number.$error&&o.v.invoice_number.$errors[0].$message,required:""},{default:a(()=>[t(h,{modelValue:n(e).newInvoice.invoice_number,"onUpdate:modelValue":l[3]||(l[3]=r=>n(e).newInvoice.invoice_number=r),"content-loading":o.isLoading,onInput:l[4]||(l[4]=r=>o.v.invoice_number.$touch())},null,8,["modelValue","content-loading"])]),_:1},8,["label","content-loading","error"]),t(ve,{store:n(e),"store-prop":"newInvoice",v:o.v,"is-loading":o.isLoading,"is-edit":o.isEdit,"customer-currency":n(e).newInvoice.currency_id},null,8,["store","v","is-loading","is-edit","customer-currency"])]),_:1})])}}},Ie={class:"flex"},be={class:"block mt-10 invoice-foot lg:flex lg:justify-between lg:items-start"},we={class:"relative w-full lg:w-1/2 lg:mr-4"},q="newInvoice",Ee={__name:"InvoiceCreate",setup(o){const e=P(),m=A(),l=J(),B=K(),{t:c}=O.useI18n();let v=X(),h=Y(),u=C(!1);const r=C(!1),F=C(["customer","company","customerCustom","invoice","invoiceCustom"]);let f=I(()=>e.isFetchingInvoice||e.isFetchingInitialSettings),M=I(()=>g.value?c("invoices.edit_invoice"):c("invoices.new_invoice"));const T=I(()=>m.selectedCompanySettings.sales_tax_us_enabled==="YES"&&B.salesTaxUSEnabled);let g=I(()=>v.name==="invoices.edit");const x={invoice_date:{required:_.withMessage(c("validation.required"),y)},reference_number:{maxLength:_.withMessage(c("validation.price_maxlength"),Q(255))},customer_id:{required:_.withMessage(c("validation.required"),y)},invoice_number:{required:_.withMessage(c("validation.required"),y)},exchange_rate:{required:W(function(){return _.withMessage(c("validation.required"),y),e.showExchangeRate}),decimal:_.withMessage(c("validation.valid_exchange_rate"),Z)}},w=ee(x,I(()=>e.newInvoice),{$scope:q});l.resetCustomFields(),w.value.$reset,e.resetCurrentInvoice(),e.fetchInvoiceInitialSettings(g.value),ne(()=>e.newInvoice.customer,i=>{i&&i.currency?e.newInvoice.selectedCurrency=i.currency:e.newInvoice.selectedCurrency=m.selectedCompanyCurrency});async function N(){if(w.value.$touch(),w.value.$invalid)return!1;u.value=!0;let i={...e.newInvoice,sub_total:e.getSubTotal,total:e.getTotal,tax:e.getTotalTax};try{const p=await(g.value?e.updateInvoice:e.addInvoice)(i);h.push(`/admin/invoices/${p.data.data.id}/view`)}catch(S){console.error(S)}u.value=!1}return(i,S)=>{const p=s("BaseBreadcrumbItem"),U=s("BaseBreadcrumb"),V=s("BaseButton"),j=s("router-link"),D=s("BaseIcon"),G=s("BasePageHeader"),R=s("BaseScrollPane"),z=s("BasePage");return d(),E(ae,null,[t(se),t(le),t(pe),T.value&&(!n(f)||n(v).query.customer)?(d(),b(ce,{key:0,store:n(e),"is-edit":n(g),"store-prop":"newInvoice",customer:n(e).newInvoice.customer},null,8,["store","is-edit","customer"])):k("",!0),t(z,{class:"relative invoice-create-page"},{default:a(()=>[$("form",{onSubmit:ie(N,["prevent"])},[t(G,{title:n(M)},{actions:a(()=>[i.$route.name==="invoices.edit"?(d(),b(j,{key:0,to:`/invoices/pdf/${n(e).newInvoice.unique_hash}`,target:"_blank"},{default:a(()=>[t(V,{class:"mr-3",variant:"primary-outline",type:"button"},{default:a(()=>[$("span",Ie,L(i.$t("general.view_pdf")),1)]),_:1})]),_:1},8,["to"])):k("",!0),t(V,{loading:n(u),disabled:n(u),variant:"primary",type:"submit"},{left:a(H=>[n(u)?k("",!0):(d(),b(D,{key:0,name:"SaveIcon",class:te(H.class)},null,8,["class"]))]),default:a(()=>[oe(" "+L(i.$t("invoices.save_invoice")),1)]),_:1},8,["loading","disabled"])]),default:a(()=>[t(U,null,{default:a(()=>[t(p,{title:i.$t("general.home"),to:"/admin/dashboard"},null,8,["title"]),t(p,{title:i.$t("invoices.invoice",2),to:"/admin/invoices"},null,8,["title"]),i.$route.name==="invoices.edit"?(d(),b(p,{key:0,title:i.$t("invoices.edit_invoice"),to:"#",active:""},null,8,["title"])):(d(),b(p,{key:1,title:i.$t("invoices.new_invoice"),to:"#",active:""},null,8,["title"]))]),_:1})]),_:1},8,["title"]),t(fe,{v:n(w),"is-loading":n(f),"is-edit":n(g)},null,8,["v","is-loading","is-edit"]),t(R,null,{default:a(()=>[t(re,{currency:n(e).newInvoice.selectedCurrency,"is-loading":n(f),"item-validation-scope":q,store:n(e),"store-prop":"newInvoice"},null,8,["currency","is-loading","store"]),$("div",be,[$("div",we,[t(ue,{store:n(e),"store-prop":"newInvoice",fields:F.value,type:"Invoice"},null,8,["store","fields"]),t(ge,{type:"Invoice","is-edit":n(g),"is-loading":n(f),store:n(e),"store-prop":"newInvoice","custom-field-scope":q,class:"mb-6"},null,8,["is-edit","is-loading","store"]),t(de,{store:n(e),"store-prop":"newInvoice","component-name":"InvoiceTemplate","is-mark-as-default":r.value},null,8,["store","is-mark-as-default"])]),t(me,{currency:n(e).newInvoice.selectedCurrency,"is-loading":n(f),store:n(e),"store-prop":"newInvoice","tax-popup-type":"invoice"},null,8,["currency","is-loading","store"])])]),_:1})],32)]),_:1})],64)}}};export{Ee as default}; diff --git a/public/build/assets/InvoiceIndexDropdown-bkaK7_Us.js b/public/build/assets/InvoiceIndexDropdown-Vtuy_VYF.js similarity index 98% rename from public/build/assets/InvoiceIndexDropdown-bkaK7_Us.js rename to public/build/assets/InvoiceIndexDropdown-Vtuy_VYF.js index 029d7119..59fbb241 100644 --- a/public/build/assets/InvoiceIndexDropdown-bkaK7_Us.js +++ b/public/build/assets/InvoiceIndexDropdown-Vtuy_VYF.js @@ -1 +1 @@ -import{aq as O,F as z,u as M,a7 as R,M as j,v as F,L as P,e as U,a5 as q,r as h,o as r,m as l,w as o,l as c,a as s,Q as y,ac as H,p as d,t as v,ad as W,K as m}from"./main-B9dpPbRR.js";const Q={__name:"InvoiceIndexDropdown",props:{row:{type:Object,default:null},table:{type:Object,default:null},loadData:{type:Function,default:()=>{}}},setup(a){const f=a,p=O(),$=z(),N=M(),b=R(),g=j(),{t:i}=F.useI18n(),w=P(),S=U(),_=q("utils");function x(e){return(e.status=="SENT"||e.status=="VIEWED")&&g.hasAbilities(y.SEND_INVOICE)}function C(e){return e.status=="DRAFT"&&w.name!=="invoices.view"&&g.hasAbilities(y.SEND_INVOICE)}async function B(e){b.openDialog({title:i("general.are_you_sure"),message:i("invoices.confirm_delete"),yesLabel:i("general.ok"),noLabel:i("general.cancel"),variant:"danger",hideNoButton:!1,size:"lg"}).then(n=>{e=e,n&&p.deleteInvoice({ids:[e]}).then(t=>{t.data.success&&(S.push("/admin/invoices"),f.table&&f.table.refresh(),p.$patch(I=>{I.selectedInvoices=[],I.selectAllField=!1}))})})}async function A(e){b.openDialog({title:i("general.are_you_sure"),message:i("invoices.confirm_clone"),yesLabel:i("general.ok"),noLabel:i("general.cancel"),variant:"primary",hideNoButton:!1,size:"lg"}).then(n=>{n&&p.cloneInvoice(e).then(t=>{S.push(`/admin/invoices/${t.data.data.id}/edit`)})})}async function T(e){b.openDialog({title:i("general.are_you_sure"),message:i("invoices.invoice_mark_as_sent"),yesLabel:i("general.ok"),noLabel:i("general.cancel"),variant:"primary",hideNoButton:!1,size:"lg"}).then(n=>{const t={id:e,status:"SENT"};n&&p.markAsSent(t).then(I=>{f.table&&f.table.refresh()})})}async function E(e){$.openModal({title:i("invoices.send_invoice"),componentName:"SendInvoiceModal",id:e.id,data:e,variant:"sm"})}function V(){let e=`${window.location.origin}/invoices/pdf/${f.row.unique_hash}`;_.copyTextToClipboard(e),N.showNotification({type:"success",message:i("general.copied_pdf_url_clipboard")})}return(e,n)=>{const t=h("BaseIcon"),I=h("BaseButton"),u=h("BaseDropdownItem"),D=h("router-link"),L=h("BaseDropdown");return r(),l(L,null,{activator:o(()=>[c(w).name==="invoices.view"?(r(),l(I,{key:0,variant:"primary"},{default:o(()=>[s(t,{name:"DotsHorizontalIcon",class:"h-5 text-white"})]),_:1})):(r(),l(t,{key:1,name:"DotsHorizontalIcon",class:"h-5 text-gray-500"}))]),default:o(()=>[c(g).hasAbilities(c(y).EDIT_INVOICE)?(r(),l(D,{key:0,to:`/admin/invoices/${a.row.id}/edit`},{default:o(()=>[H(s(u,null,{default:o(()=>[s(t,{name:"PencilIcon",class:"w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500"}),d(" "+v(e.$t("general.edit")),1)]),_:1},512),[[W,a.row.allow_edit]])]),_:1},8,["to"])):m("",!0),c(w).name==="invoices.view"?(r(),l(u,{key:1,onClick:V},{default:o(()=>[s(t,{name:"LinkIcon",class:"w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500"}),d(" "+v(e.$t("general.copy_pdf_url")),1)]),_:1})):m("",!0),c(w).name!=="invoices.view"&&c(g).hasAbilities(c(y).VIEW_INVOICE)?(r(),l(D,{key:2,to:`/admin/invoices/${a.row.id}/view`},{default:o(()=>[s(u,null,{default:o(()=>[s(t,{name:"EyeIcon",class:"w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500"}),d(" "+v(e.$t("general.view")),1)]),_:1})]),_:1},8,["to"])):m("",!0),C(a.row)?(r(),l(u,{key:3,onClick:n[0]||(n[0]=k=>E(a.row))},{default:o(()=>[s(t,{name:"PaperAirplaneIcon",class:"w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500"}),d(" "+v(e.$t("invoices.send_invoice")),1)]),_:1})):m("",!0),x(a.row)?(r(),l(u,{key:4,onClick:n[1]||(n[1]=k=>E(a.row))},{default:o(()=>[s(t,{name:"PaperAirplaneIcon",class:"w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500"}),d(" "+v(e.$t("invoices.resend_invoice")),1)]),_:1})):m("",!0),s(D,{to:`/admin/payments/${a.row.id}/create`},{default:o(()=>[a.row.status=="SENT"&&c(w).name!=="invoices.view"?(r(),l(u,{key:0},{default:o(()=>[s(t,{name:"CreditCardIcon",class:"w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500"}),d(" "+v(e.$t("invoices.record_payment")),1)]),_:1})):m("",!0)]),_:1},8,["to"]),C(a.row)?(r(),l(u,{key:5,onClick:n[2]||(n[2]=k=>T(a.row.id))},{default:o(()=>[s(t,{name:"CheckCircleIcon",class:"w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500"}),d(" "+v(e.$t("invoices.mark_as_sent")),1)]),_:1})):m("",!0),c(g).hasAbilities(c(y).CREATE_INVOICE)?(r(),l(u,{key:6,onClick:n[3]||(n[3]=k=>A(a.row))},{default:o(()=>[s(t,{name:"DocumentTextIcon",class:"w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500"}),d(" "+v(e.$t("invoices.clone_invoice")),1)]),_:1})):m("",!0),c(g).hasAbilities(c(y).DELETE_INVOICE)?(r(),l(u,{key:7,onClick:n[4]||(n[4]=k=>B(a.row.id))},{default:o(()=>[s(t,{name:"TrashIcon",class:"w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500"}),d(" "+v(e.$t("general.delete")),1)]),_:1})):m("",!0)]),_:1})}}};export{Q as _}; +import{aq as O,F as z,u as M,a7 as R,M as j,v as F,L as P,e as U,a5 as q,r as h,o as r,m as l,w as o,l as c,a as s,Q as y,ac as H,p as d,t as v,ad as W,K as m}from"./main-pPEsZPea.js";const Q={__name:"InvoiceIndexDropdown",props:{row:{type:Object,default:null},table:{type:Object,default:null},loadData:{type:Function,default:()=>{}}},setup(a){const f=a,p=O(),$=z(),N=M(),b=R(),g=j(),{t:i}=F.useI18n(),w=P(),S=U(),_=q("utils");function x(e){return(e.status=="SENT"||e.status=="VIEWED")&&g.hasAbilities(y.SEND_INVOICE)}function C(e){return e.status=="DRAFT"&&w.name!=="invoices.view"&&g.hasAbilities(y.SEND_INVOICE)}async function B(e){b.openDialog({title:i("general.are_you_sure"),message:i("invoices.confirm_delete"),yesLabel:i("general.ok"),noLabel:i("general.cancel"),variant:"danger",hideNoButton:!1,size:"lg"}).then(n=>{e=e,n&&p.deleteInvoice({ids:[e]}).then(t=>{t.data.success&&(S.push("/admin/invoices"),f.table&&f.table.refresh(),p.$patch(I=>{I.selectedInvoices=[],I.selectAllField=!1}))})})}async function A(e){b.openDialog({title:i("general.are_you_sure"),message:i("invoices.confirm_clone"),yesLabel:i("general.ok"),noLabel:i("general.cancel"),variant:"primary",hideNoButton:!1,size:"lg"}).then(n=>{n&&p.cloneInvoice(e).then(t=>{S.push(`/admin/invoices/${t.data.data.id}/edit`)})})}async function T(e){b.openDialog({title:i("general.are_you_sure"),message:i("invoices.invoice_mark_as_sent"),yesLabel:i("general.ok"),noLabel:i("general.cancel"),variant:"primary",hideNoButton:!1,size:"lg"}).then(n=>{const t={id:e,status:"SENT"};n&&p.markAsSent(t).then(I=>{f.table&&f.table.refresh()})})}async function E(e){$.openModal({title:i("invoices.send_invoice"),componentName:"SendInvoiceModal",id:e.id,data:e,variant:"sm"})}function V(){let e=`${window.location.origin}/invoices/pdf/${f.row.unique_hash}`;_.copyTextToClipboard(e),N.showNotification({type:"success",message:i("general.copied_pdf_url_clipboard")})}return(e,n)=>{const t=h("BaseIcon"),I=h("BaseButton"),u=h("BaseDropdownItem"),D=h("router-link"),L=h("BaseDropdown");return r(),l(L,null,{activator:o(()=>[c(w).name==="invoices.view"?(r(),l(I,{key:0,variant:"primary"},{default:o(()=>[s(t,{name:"DotsHorizontalIcon",class:"h-5 text-white"})]),_:1})):(r(),l(t,{key:1,name:"DotsHorizontalIcon",class:"h-5 text-gray-500"}))]),default:o(()=>[c(g).hasAbilities(c(y).EDIT_INVOICE)?(r(),l(D,{key:0,to:`/admin/invoices/${a.row.id}/edit`},{default:o(()=>[H(s(u,null,{default:o(()=>[s(t,{name:"PencilIcon",class:"w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500"}),d(" "+v(e.$t("general.edit")),1)]),_:1},512),[[W,a.row.allow_edit]])]),_:1},8,["to"])):m("",!0),c(w).name==="invoices.view"?(r(),l(u,{key:1,onClick:V},{default:o(()=>[s(t,{name:"LinkIcon",class:"w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500"}),d(" "+v(e.$t("general.copy_pdf_url")),1)]),_:1})):m("",!0),c(w).name!=="invoices.view"&&c(g).hasAbilities(c(y).VIEW_INVOICE)?(r(),l(D,{key:2,to:`/admin/invoices/${a.row.id}/view`},{default:o(()=>[s(u,null,{default:o(()=>[s(t,{name:"EyeIcon",class:"w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500"}),d(" "+v(e.$t("general.view")),1)]),_:1})]),_:1},8,["to"])):m("",!0),C(a.row)?(r(),l(u,{key:3,onClick:n[0]||(n[0]=k=>E(a.row))},{default:o(()=>[s(t,{name:"PaperAirplaneIcon",class:"w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500"}),d(" "+v(e.$t("invoices.send_invoice")),1)]),_:1})):m("",!0),x(a.row)?(r(),l(u,{key:4,onClick:n[1]||(n[1]=k=>E(a.row))},{default:o(()=>[s(t,{name:"PaperAirplaneIcon",class:"w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500"}),d(" "+v(e.$t("invoices.resend_invoice")),1)]),_:1})):m("",!0),s(D,{to:`/admin/payments/${a.row.id}/create`},{default:o(()=>[a.row.status=="SENT"&&c(w).name!=="invoices.view"?(r(),l(u,{key:0},{default:o(()=>[s(t,{name:"CreditCardIcon",class:"w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500"}),d(" "+v(e.$t("invoices.record_payment")),1)]),_:1})):m("",!0)]),_:1},8,["to"]),C(a.row)?(r(),l(u,{key:5,onClick:n[2]||(n[2]=k=>T(a.row.id))},{default:o(()=>[s(t,{name:"CheckCircleIcon",class:"w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500"}),d(" "+v(e.$t("invoices.mark_as_sent")),1)]),_:1})):m("",!0),c(g).hasAbilities(c(y).CREATE_INVOICE)?(r(),l(u,{key:6,onClick:n[3]||(n[3]=k=>A(a.row))},{default:o(()=>[s(t,{name:"DocumentTextIcon",class:"w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500"}),d(" "+v(e.$t("invoices.clone_invoice")),1)]),_:1})):m("",!0),c(g).hasAbilities(c(y).DELETE_INVOICE)?(r(),l(u,{key:7,onClick:n[4]||(n[4]=k=>B(a.row.id))},{default:o(()=>[s(t,{name:"TrashIcon",class:"w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500"}),d(" "+v(e.$t("general.delete")),1)]),_:1})):m("",!0)]),_:1})}}};export{Q as _}; diff --git a/public/build/assets/InvoicePublicPage-Jje65opw.js b/public/build/assets/InvoicePublicPage-Zcun4JOZ.js similarity index 96% rename from public/build/assets/InvoicePublicPage-Jje65opw.js rename to public/build/assets/InvoicePublicPage-Zcun4JOZ.js index 99b49dad..427e4996 100644 --- a/public/build/assets/InvoicePublicPage-Jje65opw.js +++ b/public/build/assets/InvoicePublicPage-Zcun4JOZ.js @@ -1 +1 @@ -import{r as m,o as n,c as i,b as t,t as s,a as c,w as d,p as u,K as v,f as $,L as k,e as I,s as L,k as g,l,m as P}from"./main-B9dpPbRR.js";const C={class:"bg-white shadow overflow-hidden rounded-lg mt-6"},j={class:"px-4 py-5 sm:px-6"},S={class:"text-lg leading-6 font-medium text-gray-900"},H={key:0,class:"border-t border-gray-200 px-4 py-5 sm:p-0"},M={class:"sm:divide-y sm:divide-gray-200"},N={class:"py-4 sm:py-5 sm:grid sm:grid-cols-3 sm:gap-4 sm:px-6"},T={class:"text-sm font-medium text-gray-500"},U={class:"mt-1 text-sm text-gray-900 sm:mt-0 sm:col-span-2"},V={class:"py-4 sm:py-5 sm:grid sm:grid-cols-3 sm:gap-4 sm:px-6"},D={class:"text-sm font-medium text-gray-500"},R={class:"mt-1 text-sm text-gray-900 sm:mt-0 sm:col-span-2"},F={class:"py-4 sm:py-5 sm:grid sm:grid-cols-3 sm:gap-4 sm:px-6"},O={class:"text-sm font-medium text-gray-500 capitalize"},q={class:"mt-1 text-sm text-gray-900 sm:mt-0 sm:col-span-2"},z={class:"py-4 sm:py-5 sm:grid sm:grid-cols-3 sm:gap-4 sm:px-6"},A={class:"text-sm font-medium text-gray-500"},E={class:"mt-1 text-sm text-gray-900 sm:mt-0 sm:col-span-2"},G={key:0,class:"py-4 sm:py-5 sm:grid sm:grid-cols-3 sm:gap-4 sm:px-6"},K={class:"text-sm font-medium text-gray-500"},J={class:"mt-1 text-sm text-gray-900 sm:mt-0 sm:col-span-2"},Q=["innerHTML"],W={key:1,class:"w-full flex items-center justify-center p-5"},X={__name:"InvoiceInformationCard",props:{invoice:{type:[Object,null],required:!0}},setup(o){return(e,r)=>{const _=m("BaseInvoiceStatusBadge"),p=m("BaseFormatMoney"),y=m("BaseSpinner");return n(),i("div",C,[t("div",j,[t("h3",S,s(e.$t("invoices.invoice_information")),1)]),o.invoice?(n(),i("div",H,[t("dl",M,[t("div",N,[t("dt",T,s(e.$t("general.from")),1),t("dd",U,s(o.invoice.company.name),1)]),t("div",V,[t("dt",D,s(e.$t("general.to")),1),t("dd",R,s(o.invoice.customer.name),1)]),t("div",F,[t("dt",O,s(e.$t("invoices.paid_status").toLowerCase()),1),t("dd",q,[c(_,{status:o.invoice.paid_status,class:"px-3 py-1"},{default:d(()=>[u(s(o.invoice.paid_status),1)]),_:1},8,["status"])])]),t("div",z,[t("dt",A,s(e.$t("invoices.total")),1),t("dd",E,[c(p,{currency:o.invoice.currency,amount:o.invoice.total},null,8,["currency","amount"])])]),o.invoice.formatted_notes?(n(),i("div",G,[t("dt",K,s(e.$t("invoices.notes")),1),t("dd",J,[t("span",{innerHTML:o.invoice.formatted_notes},null,8,Q)])])):v("",!0)])])):(n(),i("div",W,[c(y,{class:"text-primary-500 h-10 w-10"})]))])}}},Y={class:"h-screen overflow-y-auto min-h-0"},Z=t("div",{class:"bg-gradient-to-r from-primary-500 to-primary-400 h-5"},null,-1),tt={class:"relative p-6 pb-28 px-4 md:px-6 w-full md:w-auto md:max-w-xl mx-auto"},et={class:"flex flex-col md:flex-row absolute md:relative bottom-2 left-0 px-4 md:px-0 w-full md:space-x-4 md:space-y-0 space-y-2"},st=["href"],ot={key:0,class:"flex items-center justify-center mt-4 text-gray-500 font-normal"},at={href:"https://invoiceshelf.com",target:"_blank"},nt=["src"],mt={__name:"InvoicePublicPage",setup(o){let e=$(null);const r=k(),_=I();p();async function p(){let a=await L.get(`/customer/invoices/${r.params.hash}`);e.value=a.data.data}const y=g(()=>r.path+"?pdf");function f(){return new URL("/build/assets/logo-gray-5nGU86PO.png",import.meta.url)}const x=g(()=>window.customer_logo?window.customer_logo:!1),w=g(()=>{var a;return(a=e.value)==null?void 0:a.invoice_number});function b(){_.push({name:"invoice.pay",params:{hash:r.params.hash,company:e.value.company.slug}})}return(a,it)=>{const h=m("BaseButton"),B=m("BasePageHeader");return n(),i("div",Y,[Z,t("div",tt,[c(B,{title:w.value||""},{actions:d(()=>[t("div",et,[t("a",{href:y.value,target:"_blank",class:"block w-full"},[c(h,{variant:"primary-outline",class:"justify-center w-full"},{default:d(()=>[u(s(a.$t("general.download_pdf")),1)]),_:1})],8,st),l(e)&&l(e).paid_status!=="PAID"&&l(e).payment_module_enabled?(n(),P(h,{key:0,variant:"primary",class:"justify-center",onClick:b},{default:d(()=>[u(s(a.$t("general.pay_invoice")),1)]),_:1})):v("",!0)])]),_:1},8,["title"]),c(X,{invoice:l(e)},null,8,["invoice"]),x.value?v("",!0):(n(),i("div",ot,[u(" Powered by "),t("a",at,[t("img",{src:f(),class:"h-4 ml-1 mb-1"},null,8,nt)])]))])])}}};export{mt as default}; +import{r as m,o as n,c as i,b as t,t as s,a as c,w as d,p as u,K as v,f as $,L as k,e as I,s as L,k as g,l,m as P}from"./main-pPEsZPea.js";const C={class:"bg-white shadow overflow-hidden rounded-lg mt-6"},j={class:"px-4 py-5 sm:px-6"},S={class:"text-lg leading-6 font-medium text-gray-900"},H={key:0,class:"border-t border-gray-200 px-4 py-5 sm:p-0"},M={class:"sm:divide-y sm:divide-gray-200"},N={class:"py-4 sm:py-5 sm:grid sm:grid-cols-3 sm:gap-4 sm:px-6"},T={class:"text-sm font-medium text-gray-500"},U={class:"mt-1 text-sm text-gray-900 sm:mt-0 sm:col-span-2"},V={class:"py-4 sm:py-5 sm:grid sm:grid-cols-3 sm:gap-4 sm:px-6"},D={class:"text-sm font-medium text-gray-500"},R={class:"mt-1 text-sm text-gray-900 sm:mt-0 sm:col-span-2"},F={class:"py-4 sm:py-5 sm:grid sm:grid-cols-3 sm:gap-4 sm:px-6"},O={class:"text-sm font-medium text-gray-500 capitalize"},q={class:"mt-1 text-sm text-gray-900 sm:mt-0 sm:col-span-2"},z={class:"py-4 sm:py-5 sm:grid sm:grid-cols-3 sm:gap-4 sm:px-6"},A={class:"text-sm font-medium text-gray-500"},E={class:"mt-1 text-sm text-gray-900 sm:mt-0 sm:col-span-2"},G={key:0,class:"py-4 sm:py-5 sm:grid sm:grid-cols-3 sm:gap-4 sm:px-6"},K={class:"text-sm font-medium text-gray-500"},J={class:"mt-1 text-sm text-gray-900 sm:mt-0 sm:col-span-2"},Q=["innerHTML"],W={key:1,class:"w-full flex items-center justify-center p-5"},X={__name:"InvoiceInformationCard",props:{invoice:{type:[Object,null],required:!0}},setup(o){return(e,r)=>{const _=m("BaseInvoiceStatusBadge"),p=m("BaseFormatMoney"),y=m("BaseSpinner");return n(),i("div",C,[t("div",j,[t("h3",S,s(e.$t("invoices.invoice_information")),1)]),o.invoice?(n(),i("div",H,[t("dl",M,[t("div",N,[t("dt",T,s(e.$t("general.from")),1),t("dd",U,s(o.invoice.company.name),1)]),t("div",V,[t("dt",D,s(e.$t("general.to")),1),t("dd",R,s(o.invoice.customer.name),1)]),t("div",F,[t("dt",O,s(e.$t("invoices.paid_status").toLowerCase()),1),t("dd",q,[c(_,{status:o.invoice.paid_status,class:"px-3 py-1"},{default:d(()=>[u(s(o.invoice.paid_status),1)]),_:1},8,["status"])])]),t("div",z,[t("dt",A,s(e.$t("invoices.total")),1),t("dd",E,[c(p,{currency:o.invoice.currency,amount:o.invoice.total},null,8,["currency","amount"])])]),o.invoice.formatted_notes?(n(),i("div",G,[t("dt",K,s(e.$t("invoices.notes")),1),t("dd",J,[t("span",{innerHTML:o.invoice.formatted_notes},null,8,Q)])])):v("",!0)])])):(n(),i("div",W,[c(y,{class:"text-primary-500 h-10 w-10"})]))])}}},Y={class:"h-screen overflow-y-auto min-h-0"},Z=t("div",{class:"bg-gradient-to-r from-primary-500 to-primary-400 h-5"},null,-1),tt={class:"relative p-6 pb-28 px-4 md:px-6 w-full md:w-auto md:max-w-xl mx-auto"},et={class:"flex flex-col md:flex-row absolute md:relative bottom-2 left-0 px-4 md:px-0 w-full md:space-x-4 md:space-y-0 space-y-2"},st=["href"],ot={key:0,class:"flex items-center justify-center mt-4 text-gray-500 font-normal"},at={href:"https://invoiceshelf.com",target:"_blank"},nt=["src"],mt={__name:"InvoicePublicPage",setup(o){let e=$(null);const r=k(),_=I();p();async function p(){let a=await L.get(`/customer/invoices/${r.params.hash}`);e.value=a.data.data}const y=g(()=>r.path+"?pdf");function f(){return new URL("/build/assets/logo-gray-5nGU86PO.png",import.meta.url)}const x=g(()=>window.customer_logo?window.customer_logo:!1),w=g(()=>{var a;return(a=e.value)==null?void 0:a.invoice_number});function b(){_.push({name:"invoice.pay",params:{hash:r.params.hash,company:e.value.company.slug}})}return(a,it)=>{const h=m("BaseButton"),B=m("BasePageHeader");return n(),i("div",Y,[Z,t("div",tt,[c(B,{title:w.value||""},{actions:d(()=>[t("div",et,[t("a",{href:y.value,target:"_blank",class:"block w-full"},[c(h,{variant:"primary-outline",class:"justify-center w-full"},{default:d(()=>[u(s(a.$t("general.download_pdf")),1)]),_:1})],8,st),l(e)&&l(e).paid_status!=="PAID"&&l(e).payment_module_enabled?(n(),P(h,{key:0,variant:"primary",class:"justify-center",onClick:b},{default:d(()=>[u(s(a.$t("general.pay_invoice")),1)]),_:1})):v("",!0)])]),_:1},8,["title"]),c(X,{invoice:l(e)},null,8,["invoice"]),x.value?v("",!0):(n(),i("div",ot,[u(" Powered by "),t("a",at,[t("img",{src:f(),class:"h-4 ml-1 mb-1"},null,8,nt)])]))])])}}};export{mt as default}; diff --git a/public/build/assets/ItemUnitModal-GTT4702Z.js b/public/build/assets/ItemUnitModal-bGVyp5_i.js similarity index 97% rename from public/build/assets/ItemUnitModal-GTT4702Z.js rename to public/build/assets/ItemUnitModal-bGVyp5_i.js index 76aeb5e1..4ba40551 100644 --- a/public/build/assets/ItemUnitModal-GTT4702Z.js +++ b/public/build/assets/ItemUnitModal-bGVyp5_i.js @@ -1 +1 @@ -import{at as S,F as V,v as C,f as k,k as g,g as h,h as q,I as x,j as N,r as i,o as b,m as B,w as r,b as d,p,t as v,l as e,a as l,q as j,J as z,K as D}from"./main-B9dpPbRR.js";const E={class:"flex justify-between w-full"},G={class:"p-8 sm:p-6"},L={class:"z-0 flex justify-end p-4 border-t border-gray-200 border-solid border-modal-bg"},J={__name:"ItemUnitModal",setup(T){const t=S(),a=V(),{t:I}=C.useI18n();let o=k(!1);const $=g(()=>({name:{required:h.withMessage(I("validation.required"),q),minLength:h.withMessage(I("validation.name_min_length",{count:3}),x(3))}})),n=N($,g(()=>t.currentItemUnit));async function U(){if(n.value.$touch(),n.value.$invalid)return!0;try{const s=t.isItemUnitEdit?t.updateItemUnit:t.addItemUnit;o.value=!0,await s(t.currentItemUnit),a.refreshData&&a.refreshData(),u(),o.value=!1}catch{return o.value=!1,!0}}function u(){a.closeModal(),setTimeout(()=>{t.currentItemUnit={id:null,name:""},a.$reset(),n.value.$reset()},300)}return(s,m)=>{const f=i("BaseIcon"),y=i("BaseInput"),w=i("BaseInputGroup"),_=i("BaseButton"),M=i("BaseModal");return b(),B(M,{show:e(a).active&&e(a).componentName==="ItemUnitModal",onClose:u},{header:r(()=>[d("div",E,[p(v(e(a).title)+" ",1),l(f,{name:"XIcon",class:"w-6 h-6 text-gray-500 cursor-pointer",onClick:u})])]),default:r(()=>[d("form",{action:"",onSubmit:j(U,["prevent"])},[d("div",G,[l(w,{label:s.$t("settings.customization.items.unit_name"),error:e(n).name.$error&&e(n).name.$errors[0].$message,variant:"horizontal",required:""},{default:r(()=>[l(y,{modelValue:e(t).currentItemUnit.name,"onUpdate:modelValue":m[0]||(m[0]=c=>e(t).currentItemUnit.name=c),invalid:e(n).name.$error,type:"text",onInput:m[1]||(m[1]=c=>e(n).name.$touch())},null,8,["modelValue","invalid"])]),_:1},8,["label","error"])]),d("div",L,[l(_,{type:"button",variant:"primary-outline",class:"mr-3 text-sm",onClick:u},{default:r(()=>[p(v(s.$t("general.cancel")),1)]),_:1}),l(_,{loading:e(o),disabled:e(o),variant:"primary",type:"submit"},{left:r(c=>[e(o)?D("",!0):(b(),B(f,{key:0,name:"SaveIcon",class:z(c.class)},null,8,["class"]))]),default:r(()=>[p(" "+v(e(t).isItemUnitEdit?s.$t("general.update"):s.$t("general.save")),1)]),_:1},8,["loading","disabled"])])],32)]),_:1},8,["show"])}}};export{J as _}; +import{at as S,F as V,v as C,f as k,k as g,g as h,h as q,I as x,j as N,r as i,o as b,m as B,w as r,b as d,p,t as v,l as e,a as l,q as j,J as z,K as D}from"./main-pPEsZPea.js";const E={class:"flex justify-between w-full"},G={class:"p-8 sm:p-6"},L={class:"z-0 flex justify-end p-4 border-t border-gray-200 border-solid border-modal-bg"},J={__name:"ItemUnitModal",setup(T){const t=S(),a=V(),{t:I}=C.useI18n();let o=k(!1);const $=g(()=>({name:{required:h.withMessage(I("validation.required"),q),minLength:h.withMessage(I("validation.name_min_length",{count:3}),x(3))}})),n=N($,g(()=>t.currentItemUnit));async function U(){if(n.value.$touch(),n.value.$invalid)return!0;try{const s=t.isItemUnitEdit?t.updateItemUnit:t.addItemUnit;o.value=!0,await s(t.currentItemUnit),a.refreshData&&a.refreshData(),u(),o.value=!1}catch{return o.value=!1,!0}}function u(){a.closeModal(),setTimeout(()=>{t.currentItemUnit={id:null,name:""},a.$reset(),n.value.$reset()},300)}return(s,m)=>{const f=i("BaseIcon"),y=i("BaseInput"),w=i("BaseInputGroup"),_=i("BaseButton"),M=i("BaseModal");return b(),B(M,{show:e(a).active&&e(a).componentName==="ItemUnitModal",onClose:u},{header:r(()=>[d("div",E,[p(v(e(a).title)+" ",1),l(f,{name:"XIcon",class:"w-6 h-6 text-gray-500 cursor-pointer",onClick:u})])]),default:r(()=>[d("form",{action:"",onSubmit:j(U,["prevent"])},[d("div",G,[l(w,{label:s.$t("settings.customization.items.unit_name"),error:e(n).name.$error&&e(n).name.$errors[0].$message,variant:"horizontal",required:""},{default:r(()=>[l(y,{modelValue:e(t).currentItemUnit.name,"onUpdate:modelValue":m[0]||(m[0]=c=>e(t).currentItemUnit.name=c),invalid:e(n).name.$error,type:"text",onInput:m[1]||(m[1]=c=>e(n).name.$touch())},null,8,["modelValue","invalid"])]),_:1},8,["label","error"])]),d("div",L,[l(_,{type:"button",variant:"primary-outline",class:"mr-3 text-sm",onClick:u},{default:r(()=>[p(v(s.$t("general.cancel")),1)]),_:1}),l(_,{loading:e(o),disabled:e(o),variant:"primary",type:"submit"},{left:r(c=>[e(o)?D("",!0):(b(),B(f,{key:0,name:"SaveIcon",class:z(c.class)},null,8,["class"]))]),default:r(()=>[p(" "+v(e(t).isItemUnitEdit?s.$t("general.update"):s.$t("general.save")),1)]),_:1},8,["loading","disabled"])])],32)]),_:1},8,["show"])}}};export{J as _}; diff --git a/public/build/assets/LayoutBasic-0mVyUKkQ.js b/public/build/assets/LayoutBasic-0mVyUKkQ.js deleted file mode 100644 index fc5daf22..00000000 --- a/public/build/assets/LayoutBasic-0mVyUKkQ.js +++ /dev/null @@ -1 +0,0 @@ -import{u as W}from"./auth-6FPSPboo.js";import{aZ as E,f as x,a_ as R,a$ as K,b0 as D,b1 as z,b2 as ee,k as w,b3 as U,b4 as A,Y as H,aa as F,an as te,b5 as se,b6 as ae,b7 as V,a5 as G,b8 as $,v as oe,L as J,e as re,z as le,r as P,o as v,m as S,w as f,b as a,l as n,_ as ne,c as B,N as L,O as N,J as j,p as I,t as y,a as d,b9 as ue,ba as ie,az as O,K as ce}from"./main-B9dpPbRR.js";import{u as Q}from"./global-1F4OAoew.js";import{N as de}from"./NotificationRoot-VBhW4oOA.js";var pe=(s=>(s[s.Open=0]="Open",s[s.Closed=1]="Closed",s))(pe||{});let X=Symbol("DisclosureContext");function M(s){let i=G(X,null);if(i===null){let p=new Error(`<${s} /> is missing a parent component.`);throw Error.captureStackTrace&&Error.captureStackTrace(p,M),p}return i}let Y=Symbol("DisclosurePanelContext");function fe(){return G(Y,null)}let me=E({name:"Disclosure",props:{as:{type:[Object,String],default:"template"},defaultOpen:{type:[Boolean],default:!1}},setup(s,{slots:i,attrs:p}){let t=x(s.defaultOpen?0:1),e=x(null),g=x(null),r={buttonId:x(`headlessui-disclosure-button-${R()}`),panelId:x(`headlessui-disclosure-panel-${R()}`),disclosureState:t,panel:e,button:g,toggleDisclosure(){t.value=K(t.value,{0:1,1:0})},closeDisclosure(){t.value!==1&&(t.value=1)},close(o){r.closeDisclosure();let m=o?o instanceof HTMLElement?o:o.value instanceof HTMLElement?D(o):D(r.button):D(r.button);m==null||m.focus()}};return z(X,r),ee(w(()=>K(t.value,{0:U.Open,1:U.Closed}))),()=>{let{defaultOpen:o,...m}=s,h={open:t.value===0,close:r.close};return A({theirProps:m,ourProps:{},slot:h,slots:i,attrs:p,name:"Disclosure"})}}}),ve=E({name:"DisclosureButton",props:{as:{type:[Object,String],default:"button"},disabled:{type:[Boolean],default:!1},id:{type:String,default:null}},setup(s,{attrs:i,slots:p,expose:t}){let e=M("DisclosureButton"),g=fe(),r=w(()=>g===null?!1:g.value===e.panelId.value);H(()=>{r.value||s.id!==null&&(e.buttonId.value=s.id)}),F(()=>{r.value||(e.buttonId.value=null)});let o=x(null);t({el:o,$el:o}),r.value||te(()=>{e.button.value=o.value});let m=se(w(()=>({as:s.as,type:i.type})),o);function h(){var l;s.disabled||(r.value?(e.toggleDisclosure(),(l=D(e.button))==null||l.focus()):e.toggleDisclosure())}function _(l){var c;if(!s.disabled)if(r.value)switch(l.key){case $.Space:case $.Enter:l.preventDefault(),l.stopPropagation(),e.toggleDisclosure(),(c=D(e.button))==null||c.focus();break}else switch(l.key){case $.Space:case $.Enter:l.preventDefault(),l.stopPropagation(),e.toggleDisclosure();break}}function b(l){switch(l.key){case $.Space:l.preventDefault();break}}return()=>{var l;let c={open:e.disclosureState.value===0},{id:T,...k}=s,C=r.value?{ref:o,type:m.value,onClick:h,onKeydown:_}:{id:(l=e.buttonId.value)!=null?l:T,ref:o,type:m.value,"aria-expanded":e.disclosureState.value===0,"aria-controls":e.disclosureState.value===0||D(e.panel)?e.panelId.value:void 0,disabled:s.disabled?!0:void 0,onClick:h,onKeydown:_,onKeyup:b};return A({ourProps:C,theirProps:k,slot:c,attrs:i,slots:p,name:"DisclosureButton"})}}}),ge=E({name:"DisclosurePanel",props:{as:{type:[Object,String],default:"div"},static:{type:Boolean,default:!1},unmount:{type:Boolean,default:!0},id:{type:String,default:null}},setup(s,{attrs:i,slots:p,expose:t}){let e=M("DisclosurePanel");H(()=>{s.id!==null&&(e.panelId.value=s.id)}),F(()=>{e.panelId.value=null}),t({el:e.panel,$el:e.panel}),z(Y,e.panelId);let g=ae(),r=w(()=>g!==null?(g.value&U.Open)===U.Open:e.disclosureState.value===0);return()=>{var o;let m={open:e.disclosureState.value===0,close:e.close},{id:h,..._}=s,b={id:(o=e.panelId.value)!=null?o:h,ref:e.panel};return A({ourProps:b,theirProps:_,slot:m,attrs:i,slots:p,features:V.RenderStrategy|V.Static,visible:r.value,name:"DisclosurePanel"})}}});const he={class:"mx-auto px-8"},_e={class:"flex justify-between h-16 w-full"},be={class:"flex"},ye={class:"shrink-0 flex items-center"},xe=["href"],we=["src"],ke={class:"hidden sm:-my-px sm:ml-6 sm:flex sm:space-x-8"},Se={class:"hidden sm:ml-6 sm:flex sm:items-center"},De=a("button",{type:"button",class:"bg-white p-1 rounded-full text-gray-400 hover:text-gray-500 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-primary-500"},null,-1),$e=["src"],Ie={class:"-mr-2 flex items-center sm:hidden"},Be=a("span",{class:"sr-only"},"Open main menu",-1),Ce={class:"pt-2 pb-3 space-y-1"},Oe={class:"pt-4 pb-3 border-t border-gray-200"},Pe={class:"flex items-center px-4"},Ue={class:"shrink-0"},Le=["src"],Ne={class:"ml-3"},je={class:"text-base font-medium text-gray-800"},Ee={class:"text-sm font-medium text-gray-500"},Ae=a("button",{type:"button",class:"ml-auto bg-white shrink-0 p-1 rounded-full text-gray-400 hover:text-gray-500 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-primary-500"},null,-1),Me={class:"mt-3 space-y-1"},Te={__name:"TheSiteHeader",setup(s){const{t:i}=oe.useI18n(),p=J(),t=Q(),e=[{title:i("navigation.logout"),link:`/${t.companySlug}/customer/login`}],g=W(),r=re(),o=x(""),m=w(()=>t.currentUser&&t.currentUser.avatar!==0?t.currentUser.avatar:h());function h(){return new URL("/build/assets/default-avatar-4j3-l2sn.jpg",import.meta.url)}le(p,c=>{o.value=c.path},{immediate:!0});const _=w(()=>window.customer_logo?window.customer_logo:!1);function b(c){return p.path.indexOf(c)>-1}function l(){g.logout(t.companySlug).then(c=>{c&&r.push({name:"customer.login"})})}return(c,T)=>{const k=P("router-link"),C=P("BaseDropdownItem"),Z=P("BaseDropdown");return v(),S(n(me),{as:"nav",class:"bg-white shadow-sm fixed top-0 left-0 z-20 w-full"},{default:f(({open:q})=>[a("div",he,[a("div",_e,[a("div",be,[a("div",ye,[a("a",{href:`/${n(t).companySlug}/customer/dashboard`,class:"float-none text-lg not-italic font-black tracking-wider text-white brand-main md:float-left font-base"},[_.value?(v(),B("img",{key:1,src:_.value,class:"h-6"},null,8,we)):(v(),S(ne,{key:0,class:"h-6"}))],8,xe)]),a("div",ke,[(v(!0),B(L,null,N(n(t).mainMenu,u=>(v(),S(k,{key:u.title,to:`/${n(t).companySlug}${u.link}`,class:j([b(u.link)?"border-primary-500 text-primary-600":"border-transparent text-gray-500 hover:text-gray-700 hover:border-gray-300","inline-flex items-center px-1 pt-1 border-b-2 text-sm font-medium"])},{default:f(()=>[I(y(u.title),1)]),_:2},1032,["to","class"]))),128))])]),a("div",Se,[De,d(n(ue),{as:"div",class:"ml-3 relative"},{default:f(()=>[d(Z,{"width-class":"w-48"},{activator:f(()=>[d(n(ie),{class:"bg-white flex text-sm rounded-full focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-primary-500"},{default:f(()=>[a("img",{class:"h-8 w-8 rounded-full",src:m.value,alt:""},null,8,$e)]),_:1})]),default:f(()=>[d(k,{to:{name:"customer.profile"}},{default:f(()=>[d(C,null,{default:f(()=>[d(n(O.CogIcon),{class:"w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500","aria-hidden":"true"}),I(" "+y(c.$t("navigation.settings")),1)]),_:1})]),_:1},8,["to"]),d(C,{onClick:l},{default:f(()=>[d(n(O.LogoutIcon),{class:"w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500","aria-hidden":"true"}),I(" "+y(c.$t("navigation.logout")),1)]),_:1})]),_:1})]),_:1})]),a("div",Ie,[d(n(ve),{class:"bg-white inline-flex items-center justify-center p-2 rounded-md text-gray-400 hover:text-gray-500 hover:bg-gray-100 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-primary-500"},{default:f(()=>[Be,q?(v(),S(n(O.XIcon),{key:1,class:"block h-6 w-6","aria-hidden":"true"})):(v(),S(n(O.MenuIcon),{key:0,class:"block h-6 w-6","aria-hidden":"true"}))]),_:2},1024)])])]),d(n(ge),{class:"sm:hidden"},{default:f(()=>[a("div",Ce,[(v(!0),B(L,null,N(n(t).mainMenu,u=>(v(),S(k,{key:u.title,to:`/${n(t).companySlug}${u.link}`,class:j([b(u.link)?"bg-primary-50 border-primary-500 text-primary-700":"border-transparent text-gray-600 hover:bg-gray-50 hover:border-gray-300 hover:text-gray-800","block pl-3 pr-4 py-2 border-l-4 text-base font-medium"]),"aria-current":u.current?"page":void 0},{default:f(()=>[I(y(u.title),1)]),_:2},1032,["to","class","aria-current"]))),128))]),a("div",Oe,[a("div",Pe,[a("div",Ue,[a("img",{class:"h-10 w-10 rounded-full",src:m.value,alt:""},null,8,Le)]),a("div",Ne,[a("div",je,y(n(t).currentUser.title),1),a("div",Ee,y(n(t).currentUser.email),1)]),Ae]),a("div",Me,[(v(),B(L,null,N(e,u=>d(k,{key:u.title,to:u.link,class:j([b(u.link)?"bg-primary-50 border-primary-500 text-primary-700":"border-transparent text-gray-600 hover:bg-gray-50 hover:border-gray-300 hover:text-gray-800","block pl-3 pr-4 py-2 border-l-4 text-base font-medium"])},{default:f(()=>[I(y(u.title),1)]),_:2},1032,["to","class"])),64))])])]),_:1})]),_:1})}}},Re={key:0,class:"h-full"},Ke={class:"mt-16 pb-16 h-screen overflow-y-auto min-h-0"},Ge={__name:"LayoutBasic",setup(s){const i=Q(),p=J(),t=w(()=>i.isAppLoaded);e();async function e(){await i.bootstrap(p.params.company)}return(g,r)=>{const o=P("router-view");return t.value?(v(),B("div",Re,[d(de),d(Te),a("main",Ke,[d(o)])])):ce("",!0)}}};export{Ge as default}; diff --git a/public/build/assets/LayoutBasic-V9JZ7lRm.js b/public/build/assets/LayoutBasic-kqELRhJ9.js similarity index 98% rename from public/build/assets/LayoutBasic-V9JZ7lRm.js rename to public/build/assets/LayoutBasic-kqELRhJ9.js index 5bc9a86c..0f50b21f 100644 --- a/public/build/assets/LayoutBasic-V9JZ7lRm.js +++ b/public/build/assets/LayoutBasic-kqELRhJ9.js @@ -1 +1 @@ -import{x as z,y as be,z as ee,A as xe,B as le,C as we,D as $e,e as X,E as H,F as J,G,v as Y,f as S,H as ke,k as D,g as j,h as W,I as Ce,j as ie,r as b,o as s,m as C,w as i,b as l,p as A,t as f,l as e,a as t,q as te,c as _,J as N,K as B,L as K,M as ae,N as U,O as L,T as ce,P as Se,S as Be,d as Ie,_ as ue,Q as T,R as Ee,U as Q,V as Ae,W as Me,u as Ue,X as Ve,Y as Le}from"./main-B9dpPbRR.js";import{u as de}from"./exchange-rate-M4ruO0OO.js";import{u as Re}from"./users-725NVNlp.js";import{N as Fe}from"./NotificationRoot-VBhW4oOA.js";import{V as Te}from"./index-qMx1f7gr.js";function q(w){var c;const n=le(w);return(c=n==null?void 0:n.$el)!=null?c:n}const me=$e?window:void 0;function Z(...w){let c,n,o,y;if(typeof w[0]=="string"||Array.isArray(w[0])?([n,o,y]=w,c=me):[c,n,o,y]=w,!c)return z;Array.isArray(n)||(n=[n]),Array.isArray(o)||(o=[o]);const h=[],g=()=>{h.forEach(v=>v()),h.length=0},x=(v,r,m,p)=>(v.addEventListener(r,m,p),()=>v.removeEventListener(r,m,p)),d=ee(()=>[q(c),le(y)],([v,r])=>{if(g(),!v)return;const m=xe(r)?{...r}:r;h.push(...n.flatMap(p=>o.map(a=>x(v,p,a,m))))},{immediate:!0,flush:"post"}),u=()=>{d(),g()};return we(u),u}let re=!1;function pe(w,c,n={}){const{window:o=me,ignore:y=[],capture:h=!0,detectIframe:g=!1}=n;if(!o)return z;be&&!re&&(re=!0,Array.from(o.document.body.children).forEach(m=>m.addEventListener("click",z)),o.document.documentElement.addEventListener("click",z));let x=!0;const d=m=>y.some(p=>{if(typeof p=="string")return Array.from(o.document.querySelectorAll(p)).some(a=>a===m.target||m.composedPath().includes(a));{const a=q(p);return a&&(m.target===a||m.composedPath().includes(a))}}),v=[Z(o,"click",m=>{const p=q(w);if(!(!p||p===m.target||m.composedPath().includes(p))){if(m.detail===0&&(x=!d(m)),!x){x=!0;return}c(m)}},{passive:!0,capture:h}),Z(o,"pointerdown",m=>{const p=q(w);x=!d(m)&&!!(p&&!m.composedPath().includes(p))},{passive:!0}),g&&Z(o,"blur",m=>{setTimeout(()=>{var p;const a=q(w);((p=o.document.activeElement)==null?void 0:p.tagName)==="IFRAME"&&!(a!=null&&a.contains(o.document.activeElement))&&c(m)},0)})].filter(Boolean);return()=>v.forEach(m=>m())}const Ne={class:"flex justify-between w-full"},je={class:"p-4 mb-16 sm:p-6 space-y-4"},Oe={key:1,class:"flex flex-col items-center"},qe={class:"z-0 flex justify-end p-4 bg-gray-50 border-modal-bg"},De={__name:"CompanyModal",setup(w){const c=X(),n=H(),o=J(),y=G(),{t:h}=Y.useI18n();let g=S(!1),x=S(null),d=S(!1),u=S(null),v=S(null);const r=ke({name:null,currency:"",address:{country_id:null}}),m=D(()=>o.active&&o.componentName==="CompanyModal"),p={newCompanyForm:{name:{required:j.withMessage(h("validation.required"),W),minLength:j.withMessage(h("validation.name_min_length",{count:3}),Ce(3))},address:{country_id:{required:j.withMessage(h("validation.required"),W)}},currency:{required:j.withMessage(h("validation.required"),W)}}},a=ie(p,{newCompanyForm:r});async function $(){d.value=!0,await y.fetchCurrencies(),await y.fetchCountries(),r.currency=n.selectedCompanyCurrency.id,r.address.country_id=n.selectedCompany.address.country_id,d.value=!1}function M(I,E){v.value=I,u.value=E}function k(){v.value=null,u.value=null}async function O(){if(a.value.newCompanyForm.$touch(),a.value.$invalid)return!0;g.value=!0;try{const I=await n.addNewCompany(r);if(I.data.data){if(await n.setSelectedCompany(I.data.data),u&&u.value){let E=new FormData;E.append("company_logo",JSON.stringify({name:v.value,data:u.value})),await n.updateCompanyLogo(E),c.push("/admin/dashboard")}await y.setIsAppLoaded(!1),await y.bootstrap(),F()}g.value=!1}catch{g.value=!1}}function R(){r.name="",r.currency="",r.address.country_id="",a.value.$reset()}function F(){o.closeModal(),setTimeout(()=>{R(),a.value.$reset()},300)}return(I,E)=>{const ne=b("BaseIcon"),_e=b("BaseContentPlaceholdersBox"),he=b("BaseContentPlaceholders"),ye=b("BaseFileUploader"),P=b("BaseInputGroup"),fe=b("BaseInput"),oe=b("BaseMultiselect"),ge=b("BaseInputGrid"),se=b("BaseButton"),ve=b("BaseModal");return s(),C(ve,{show:m.value,onClose:F,onOpen:$},{header:i(()=>[l("div",Ne,[A(f(e(o).title)+" ",1),t(ne,{name:"XIcon",class:"w-6 h-6 text-gray-500 cursor-pointer",onClick:F})])]),default:i(()=>[l("form",{action:"",onSubmit:te(O,["prevent"])},[l("div",je,[t(ge,{layout:"one-column"},{default:i(()=>[t(P,{"content-loading":e(d),label:I.$t("settings.company_info.company_logo")},{default:i(()=>[e(d)?(s(),C(he,{key:0},{default:i(()=>[t(_e,{rounded:!0,class:"w-full h-24"})]),_:1})):(s(),_("div",Oe,[t(ye,{"preview-image":e(x),base64:"",onRemove:k,onChange:M},null,8,["preview-image"])]))]),_:1},8,["content-loading","label"]),t(P,{label:I.$t("settings.company_info.company_name"),error:e(a).newCompanyForm.name.$error&&e(a).newCompanyForm.name.$errors[0].$message,"content-loading":e(d),required:""},{default:i(()=>[t(fe,{modelValue:r.name,"onUpdate:modelValue":E[0]||(E[0]=V=>r.name=V),invalid:e(a).newCompanyForm.name.$error,"content-loading":e(d),onInput:E[1]||(E[1]=V=>e(a).newCompanyForm.name.$touch())},null,8,["modelValue","invalid","content-loading"])]),_:1},8,["label","error","content-loading"]),t(P,{"content-loading":e(d),label:I.$t("settings.company_info.country"),error:e(a).newCompanyForm.address.country_id.$error&&e(a).newCompanyForm.address.country_id.$errors[0].$message,required:""},{default:i(()=>[t(oe,{modelValue:r.address.country_id,"onUpdate:modelValue":E[2]||(E[2]=V=>r.address.country_id=V),"content-loading":e(d),label:"name",invalid:e(a).newCompanyForm.address.country_id.$error,options:e(y).countries,"value-prop":"id","can-deselect":!0,"can-clear":!1,searchable:"","track-by":"name"},null,8,["modelValue","content-loading","invalid","options"])]),_:1},8,["content-loading","label","error"]),t(P,{label:I.$t("wizard.currency"),error:e(a).newCompanyForm.currency.$error&&e(a).newCompanyForm.currency.$errors[0].$message,"content-loading":e(d),"help-text":I.$t("wizard.currency_set_alert"),required:""},{default:i(()=>[t(oe,{modelValue:r.currency,"onUpdate:modelValue":E[3]||(E[3]=V=>r.currency=V),"content-loading":e(d),options:e(y).currencies,label:"name","value-prop":"id",searchable:!0,"track-by":"name",placeholder:I.$t("settings.currencies.select_currency"),invalid:e(a).newCompanyForm.currency.$error,class:"w-full"},null,8,["modelValue","content-loading","options","placeholder","invalid"])]),_:1},8,["label","error","content-loading","help-text"])]),_:1})]),l("div",qe,[t(se,{class:"mr-3 text-sm",variant:"primary-outline",outline:"",type:"button",onClick:F},{default:i(()=>[A(f(I.$t("general.cancel")),1)]),_:1}),t(se,{loading:e(g),disabled:e(g),variant:"primary",type:"submit"},{left:i(V=>[e(g)?B("",!0):(s(),C(ne,{key:0,name:"SaveIcon",class:N(V.class)},null,8,["class"]))]),default:i(()=>[A(" "+f(I.$t("general.save")),1)]),_:1},8,["loading","disabled"])])],32)]),_:1},8,["show"])}}},Ge={key:0,class:"w-16 text-sm font-medium truncate sm:w-auto"},Pe={key:0,class:"absolute right-0 mt-2 bg-white rounded-md shadow-lg"},ze={class:"overflow-y-auto scrollbar-thin scrollbar-thumb-rounded-full w-[250px] max-h-[350px] scrollbar-thumb-gray-300 scrollbar-track-gray-10 pb-4"},We={class:"px-3 py-2 text-xs font-semibold text-gray-400 mb-0.5 block uppercase"},Xe={key:0,class:"flex flex-col items-center justify-center p-2 px-3 mt-4 text-base text-gray-400"},He={key:1},Je={key:0},Ye=["onClick"],Ke={class:"flex items-center"},Qe={class:"flex items-center justify-center mr-3 overflow-hidden text-base font-semibold bg-gray-200 rounded-md w-9 h-9 text-primary-500"},Ze={key:0},et=["src"],tt={class:"flex flex-col"},at={class:"text-sm"},nt={class:"font-medium"},ot={__name:"CompanySwitcher",setup(w){const c=H(),n=J(),o=K(),y=X(),h=G(),{t:g}=Y.useI18n(),x=ae(),d=S(!1),u=S(""),v=S(null);ee(o,()=>{d.value=!1,u.value=""}),pe(v,()=>{d.value=!1});function r(a){if(a)return a.split(" ")[0].charAt(0).toUpperCase()}function m(){n.openModal({title:g("company_switcher.new_company"),componentName:"CompanyModal",size:"sm"})}async function p(a){await c.setSelectedCompany(a),y.push("/admin/dashboard"),await h.setIsAppLoaded(!1),await h.bootstrap()}return(a,$)=>{const M=b("BaseIcon");return s(),_("div",{ref_key:"companySwitchBar",ref:v,class:"relative rounded"},[t(De),l("div",{class:"flex items-center justify-center px-3 h-8 md:h-9 ml-2 text-sm text-white bg-white rounded cursor-pointer bg-opacity-20",onClick:$[0]||($[0]=k=>d.value=!d.value)},[e(c).selectedCompany?(s(),_("span",Ge,f(e(c).selectedCompany.name),1)):B("",!0),t(M,{name:"ChevronDownIcon",class:"h-5 ml-1 text-white"})]),t(ce,{"enter-active-class":"transition duration-200 ease-out","enter-from-class":"translate-y-1 opacity-0","enter-to-class":"translate-y-0 opacity-100","leave-active-class":"transition duration-150 ease-in","leave-from-class":"translate-y-0 opacity-100","leave-to-class":"translate-y-1 opacity-0"},{default:i(()=>[d.value?(s(),_("div",Pe,[l("div",ze,[l("label",We,f(a.$t("company_switcher.label")),1),e(c).companies.length<1?(s(),_("div",Xe,[t(M,{name:"ExclamationCircleIcon",class:"h-5 text-gray-400"}),A(" "+f(a.$t("company_switcher.no_results_found")),1)])):(s(),_("div",He,[e(c).companies.length>0?(s(),_("div",Je,[(s(!0),_(U,null,L(e(c).companies,(k,O)=>(s(),_("div",{key:O,class:N(["p-2 px-3 rounded-md cursor-pointer hover:bg-gray-100 hover:text-primary-500",{"bg-gray-100 text-primary-500":e(c).selectedCompany.id===k.id}]),onClick:R=>p(k)},[l("div",Ke,[l("span",Qe,[k.logo?(s(),_("img",{key:1,src:k.logo,alt:"Company logo",class:"w-full h-full object-contain"},null,8,et)):(s(),_("span",Ze,f(r(k.name)),1))]),l("div",tt,[l("span",at,f(k.name),1)])])],10,Ye))),128))])):B("",!0)]))]),e(x).currentUser.is_owner?(s(),_("div",{key:0,class:"flex items-center justify-center p-4 pl-3 border-t-2 border-gray-100 cursor-pointer text-primary-400 hover:text-primary-500",onClick:m},[t(M,{name:"PlusIcon",class:"h-5 mr-2"}),l("span",nt,f(a.$t("company_switcher.add_new_company")),1)])):B("",!0)])):B("",!0)]),_:1})],512)}}},st={key:0,class:"scrollbar-thin scrollbar-thumb-rounded-full scrollbar-thumb-gray-300 scrollbar-track-gray-100 overflow-y-auto bg-white rounded-md mt-2 shadow-lg p-3 absolute w-[300px] h-[200px] right-0"},rt={key:0,class:"flex items-center justify-center text-gray-400 text-base flex-col mt-4"},lt={key:1},it={key:0},ct={class:"text-sm text-gray-400 mb-0.5 block px-2 uppercase"},ut={class:"flex items-center justify-center w-9 h-9 mr-3 text-base font-semibold bg-gray-200 rounded-full text-primary-500"},dt={class:"flex flex-col"},mt={class:"text-sm"},pt={key:0,class:"text-xs text-gray-400"},_t={key:1,class:"text-xs text-gray-400"},ht={key:1,class:"mt-2"},yt={class:"text-sm text-gray-400 mb-2 block px-2 mb-0.5 uppercase"},ft={class:"flex items-center justify-center w-9 h-9 mr-3 text-base font-semibold bg-gray-200 rounded-full text-primary-500"},gt={class:"flex flex-col"},vt={class:"text-sm"},bt={class:"text-xs text-gray-400"},xt={__name:"GlobalSearchBar",setup(w){const c=Re(),n=S(!1),o=S(""),y=S(null),h=S(!1),g=K();ee(g,()=>{n.value=!1,o.value=""}),x=Se.debounce(x,500),pe(y,()=>{n.value=!1,o.value=""});function x(){let u={search:o.value};o.value&&(h.value=!0,c.searchUsers(u).then(()=>{n.value=!0}),h.value=!1),o.value===""&&(n.value=!1)}function d(u){if(u)return u.split(" ")[0].charAt(0).toUpperCase()}return(u,v)=>{const r=b("BaseIcon"),m=b("BaseInput"),p=b("router-link");return s(),_("div",{ref_key:"searchBar",ref:y,class:"hidden rounded md:block relative"},[l("div",null,[t(m,{modelValue:o.value,"onUpdate:modelValue":v[0]||(v[0]=a=>o.value=a),placeholder:"Search...","container-class":"!rounded",class:"h-8 md:h-9 !rounded",onInput:x},{left:i(()=>[t(r,{name:"SearchIcon",class:"text-gray-400"})]),right:i(()=>[h.value?(s(),C(Be,{key:0,class:"h-5 text-primary-500"})):B("",!0)]),_:1},8,["modelValue"])]),t(ce,{"enter-active-class":"transition duration-200 ease-out","enter-from-class":"translate-y-1 opacity-0","enter-to-class":"translate-y-0 opacity-100","leave-active-class":"transition duration-150 ease-in","leave-from-class":"translate-y-0 opacity-100","leave-to-class":"translate-y-1 opacity-0"},{default:i(()=>[n.value?(s(),_("div",st,[e(c).userList.length<1&&e(c).customerList.length<1?(s(),_("div",rt,[t(r,{name:"ExclamationCircleIcon",class:"text-gray-400"}),A(" "+f(u.$t("global_search.no_results_found")),1)])):(s(),_("div",lt,[e(c).customerList.length>0?(s(),_("div",it,[l("label",ct,f(u.$t("global_search.customers")),1),(s(!0),_(U,null,L(e(c).customerList,(a,$)=>(s(),_("div",{key:$,class:"p-2 hover:bg-gray-100 cursor-pointer rounded-md"},[t(p,{to:{path:`/admin/customers/${a.id}/view`},class:"flex items-center"},{default:i(()=>[l("span",ut,f(d(a.name)),1),l("div",dt,[l("span",mt,f(a.name),1),a.contact_name?(s(),_("span",pt,f(a.contact_name),1)):(s(),_("span",_t,f(a.email),1))])]),_:2},1032,["to"])]))),128))])):B("",!0),e(c).userList.length>0?(s(),_("div",ht,[l("label",yt,f(u.$t("global_search.users")),1),(s(!0),_(U,null,L(e(c).userList,(a,$)=>(s(),_("div",{key:$,class:"p-2 hover:bg-gray-100 cursor-pointer rounded-md"},[t(p,{to:{path:`/admin/users/${a.id}/edit`},class:"flex items-center"},{default:i(()=>[l("span",ft,f(d(a.name)),1),l("div",gt,[l("span",vt,f(a.name),1),l("span",bt,f(a.email),1)])]),_:2},1032,["to"])]))),128))])):B("",!0)]))])):B("",!0)]),_:1})],512)}}},wt={class:"fixed top-0 left-0 z-20 flex items-center justify-between w-full px-4 py-3 md:h-16 md:px-8 bg-gradient-to-r from-primary-500 to-primary-400"},$t=["src"],kt={class:"flex float-right h-8 m-0 list-none md:h-9"},Ct={key:0,class:"relative hidden float-left m-0 md:block"},St={class:"flex items-center justify-center w-8 h-8 ml-2 text-sm text-black bg-white rounded md:h-9 md:w-9"},Bt={class:"ml-2"},It={class:"relative block float-left ml-2"},Et=["src"],At={__name:"TheSiteHeader",setup(w){const c=Ie(),n=ae(),o=G(),y=X(),h=D(()=>n.currentUser&&n.currentUser.avatar!==0?n.currentUser.avatar:x()),g=D(()=>o.globalSettings.admin_portal_logo?"/storage/"+o.globalSettings.admin_portal_logo:!1);function x(){return new URL("/build/assets/default-avatar-4j3-l2sn.jpg",import.meta.url)}function d(){return n.hasAbilities([T.CREATE_INVOICE,T.CREATE_ESTIMATE,T.CREATE_CUSTOMER])}async function u(){await c.logout(),y.push("/login")}function v(){o.setSidebarVisibility(!0)}return(r,m)=>{const p=b("router-link"),a=b("BaseIcon"),$=b("BaseDropdownItem"),M=b("BaseDropdown");return s(),_("header",wt,[t(p,{to:"/admin/dashboard",class:"float-none text-lg not-italic font-black tracking-wider text-white brand-main md:float-left font-base hidden md:block"},{default:i(()=>[g.value?(s(),_("img",{key:0,src:g.value,class:"h-6"},null,8,$t)):(s(),C(ue,{key:1,class:"h-6","light-color":"white","dark-color":"white"}))]),_:1}),l("div",{class:N([{"is-active":e(o).isSidebarOpen},"flex float-left p-1 overflow-visible text-sm ease-linear bg-white border-0 rounded cursor-pointer md:hidden md:ml-0 hover:bg-gray-100"]),onClick:te(v,["prevent"])},[t(a,{name:"MenuIcon",class:"!w-6 !h-6 text-gray-500"})],2),l("ul",kt,[d?(s(),_("li",Ct,[t(M,{"width-class":"w-48"},{activator:i(()=>[l("div",St,[t(a,{name:"PlusIcon",class:"w-5 h-5 text-gray-600"})])]),default:i(()=>[t(p,{to:"/admin/invoices/create"},{default:i(()=>[e(n).hasAbilities(e(T).CREATE_INVOICE)?(s(),C($,{key:0},{default:i(()=>[t(a,{name:"DocumentTextIcon",class:"w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500","aria-hidden":"true"}),A(" "+f(r.$t("invoices.new_invoice")),1)]),_:1})):B("",!0)]),_:1}),t(p,{to:"/admin/estimates/create"},{default:i(()=>[e(n).hasAbilities(e(T).CREATE_ESTIMATE)?(s(),C($,{key:0},{default:i(()=>[t(a,{name:"DocumentIcon",class:"w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500","aria-hidden":"true"}),A(" "+f(r.$t("estimates.new_estimate")),1)]),_:1})):B("",!0)]),_:1}),t(p,{to:"/admin/customers/create"},{default:i(()=>[e(n).hasAbilities(e(T).CREATE_CUSTOMER)?(s(),C($,{key:0},{default:i(()=>[t(a,{name:"UserIcon",class:"w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500","aria-hidden":"true"}),A(" "+f(r.$t("customers.new_customer")),1)]),_:1})):B("",!0)]),_:1})]),_:1})])):B("",!0),l("li",Bt,[e(n).currentUser.is_owner||e(n).hasAbilities(e(T).VIEW_CUSTOMER)?(s(),C(xt,{key:0})):B("",!0)]),l("li",null,[t(ot)]),l("li",It,[t(M,{"width-class":"w-48"},{activator:i(()=>[l("img",{src:h.value,class:"block w-8 h-8 rounded md:h-9 md:w-9 object-cover"},null,8,Et)]),default:i(()=>[t(p,{to:"/admin/settings/account-settings"},{default:i(()=>[t($,null,{default:i(()=>[t(a,{name:"CogIcon",class:"w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500","aria-hidden":"true"}),A(" "+f(r.$t("navigation.settings")),1)]),_:1})]),_:1}),t($,{onClick:u},{default:i(()=>[t(a,{name:"LogoutIcon",class:"w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500","aria-hidden":"true"}),A(" "+f(r.$t("navigation.logout")),1)]),_:1})]),_:1})])])])}}},Mt={class:"relative flex flex-col flex-1 w-full max-w-xs bg-white"},Ut={class:"absolute top-0 right-0 pt-2 -mr-12"},Vt=l("span",{class:"sr-only"},"Close sidebar",-1),Lt={class:"flex-1 h-0 pt-5 pb-4 overflow-y-auto"},Rt={class:"flex items-center shrink-0 px-4 mb-10"},Ft=l("div",{class:"shrink-0 w-14"},null,-1),Tt={class:"hidden w-56 h-screen pb-32 overflow-y-auto bg-white border-r border-gray-200 border-solid xl:w-64 md:fixed md:flex md:flex-col md:inset-y-0 pt-16"},Nt={__name:"TheSiteSidebar",setup(w){const c=K(),n=G();function o(y){return c.path.indexOf(y)>-1}return(y,h)=>{const g=b("BaseIcon"),x=b("router-link");return s(),_(U,null,[t(e(Me),{as:"template",show:e(n).isSidebarOpen},{default:i(()=>[t(e(Ee),{as:"div",class:"fixed inset-0 z-40 flex md:hidden",onClose:h[3]||(h[3]=d=>e(n).setSidebarVisibility(!1))},{default:i(()=>[t(e(Q),{as:"template",enter:"transition-opacity ease-linear duration-300","enter-from":"opacity-0","enter-to":"opacity-100",leave:"transition-opacity ease-linear duration-300","leave-from":"opacity-100","leave-to":"opacity-0"},{default:i(()=>[t(e(Ae),{class:"fixed inset-0 bg-gray-600 bg-opacity-75"})]),_:1}),t(e(Q),{as:"template",enter:"transition ease-in-out duration-300","enter-from":"-translate-x-full","enter-to":"translate-x-0",leave:"transition ease-in-out duration-300","leave-from":"translate-x-0","leave-to":"-translate-x-full"},{default:i(()=>[l("div",Mt,[t(e(Q),{as:"template",enter:"ease-in-out duration-300","enter-from":"opacity-0","enter-to":"opacity-100",leave:"ease-in-out duration-300","leave-from":"opacity-100","leave-to":"opacity-0"},{default:i(()=>[l("div",Ut,[l("button",{class:"flex items-center justify-center w-10 h-10 ml-1 rounded-full focus:outline-none focus:ring-2 focus:ring-inset focus:ring-white",onClick:h[0]||(h[0]=d=>e(n).setSidebarVisibility(!1))},[Vt,t(g,{name:"XIcon",class:"w-6 h-6 text-white","aria-hidden":"true"})])])]),_:1}),l("div",Lt,[l("div",Rt,[t(ue,{class:"block h-auto max-w-full w-36 text-primary-400",alt:"InvoiceShelf Logo"})]),(s(!0),_(U,null,L(e(n).menuGroups,d=>(s(),_("nav",{key:d,class:"mt-5 space-y-1"},[(s(!0),_(U,null,L(d,u=>(s(),C(x,{key:u.name,to:u.link,class:N([o(u.link)?"text-primary-500 border-primary-500 bg-gray-100 ":"text-black","cursor-pointer px-0 pl-4 py-3 border-transparent flex items-center border-l-4 border-solid text-sm not-italic font-medium"]),onClick:h[2]||(h[2]=v=>e(n).setSidebarVisibility(!1))},{default:i(()=>[t(g,{name:u.icon,class:N([o(u.link)?"text-primary-500 ":"text-gray-400","mr-4 shrink-0 h-5 w-5"]),onClick:h[1]||(h[1]=v=>e(n).setSidebarVisibility(!1))},null,8,["name","class"]),A(" "+f(y.$t(u.title)),1)]),_:2},1032,["to","class"]))),128))]))),128))])])]),_:1}),Ft]),_:1})]),_:1},8,["show"]),l("div",Tt,[(s(!0),_(U,null,L(e(n).menuGroups,d=>(s(),_("div",{key:d,class:"p-0 m-0 mt-6 list-none"},[(s(!0),_(U,null,L(d,u=>(s(),C(x,{key:u,to:u.link,class:N([o(u.link)?"text-primary-500 border-primary-500 bg-gray-100 ":"text-black","cursor-pointer px-0 pl-6 hover:bg-gray-50 py-3 group flex items-center border-l-4 border-solid border-transparent text-sm not-italic font-medium"])},{default:i(()=>[t(g,{name:u.icon,class:N([o(u.link)?"text-primary-500 group-hover:text-primary-500 ":"text-gray-400 group-hover:text-black","mr-4 shrink-0 h-5 w-5 "])},null,8,["name","class"]),A(" "+f(y.$t(u.title)),1)]),_:2},1032,["to","class"]))),128))]))),128))])],64)}}},jt={class:"font-medium text-lg text-left"},Ot={class:"mt-2 text-sm leading-snug text-gray-500",style:{"max-width":"680px"}},qt={class:"text-gray-500 sm:text-sm"},Dt={class:"text-gray-400 text-xs mt-2 font-light"},Gt={slot:"footer",class:"z-0 flex justify-end mt-4 pt-4 border-t border-gray-200 border-solid border-modal-bg"},Pt={__name:"ExchangeRateBulkUpdate",emits:["update"],setup(w,{emit:c}){const n=de();Ue();const o=H(),{t:y,tm:h}=Y.useI18n();let g=S(!1);S(!1);const x={exchange_rate:{required:j.withMessage(y("validation.required"),W),decimal:j.withMessage(y("validation.valid_exchange_rate"),Ve)}},d=ie(),u=c;async function v(){if(d.value.$touch(),d.value.$invalid)return!0;g.value=!0;let r=n.bulkCurrencies.map(p=>({id:p.id,exchange_rate:p.exchange_rate})),m=await n.updateBulkExchangeRate({currencies:r});m.data.success&&u("update",m.data.success),g.value=!1}return(r,m)=>{const p=b("BaseInput"),a=b("BaseInputGroup"),$=b("BaseButton"),M=b("BaseCard");return s(),C(M,null,{default:i(()=>[l("h6",jt,f(r.$t("settings.exchange_rate.title")),1),l("p",Ot,f(r.$t("settings.exchange_rate.description",{currency:e(o).selectedCompanyCurrency.name})),1),l("form",{action:"",onSubmit:te(v,["prevent"])},[(s(!0),_(U,null,L(e(n).bulkCurrencies,(k,O)=>(s(),C(e(Te),{key:O,state:k,rules:x},{default:i(({v:R})=>[t(a,{class:"my-5",label:`${k.code} to ${e(o).selectedCompanyCurrency.code}`,error:R.exchange_rate.$error&&R.exchange_rate.$errors[0].$message,required:""},{default:i(()=>[t(p,{modelValue:k.exchange_rate,"onUpdate:modelValue":F=>k.exchange_rate=F,addon:`1 ${k.code} =`,invalid:R.exchange_rate.$error,onInput:F=>R.exchange_rate.$touch()},{right:i(()=>[l("span",qt,f(e(o).selectedCompanyCurrency.code),1)]),_:2},1032,["modelValue","onUpdate:modelValue","addon","invalid","onInput"]),l("span",Dt,f(r.$t("settings.exchange_rate.exchange_help_text",{currency:k.code,baseCurrency:e(o).selectedCompanyCurrency.code})),1)]),_:2},1032,["label","error"])]),_:2},1032,["state"]))),128)),l("div",Gt,[t($,{loading:e(g),variant:"primary",type:"submit"},{default:i(()=>[A(f(r.$t("general.save")),1)]),_:1},8,["loading"])])],32)]),_:1})}}},zt={__name:"ExchangeRateBulkUpdateModal",setup(w){const c=J(),n=D(()=>c.active&&c.componentName==="ExchangeRateBulkUpdateModal");function o(){c.closeModal()}return(y,h)=>{const g=b("BaseModal");return s(),C(g,{show:n.value},{default:i(()=>[t(Pt,{onUpdate:h[0]||(h[0]=x=>o())})]),_:1},8,["show"])}}},Wt={key:0,class:"h-full"},Xt={class:"h-screen h-screen-ios overflow-y-auto md:pl-56 xl:pl-64 min-h-0"},Ht={class:"pt-16 pb-16"},ea={__name:"LayoutBasic",setup(w){const c=G(),n=K(),o=ae(),y=X(),h=J();Y.useI18n();const g=de(),x=H(),d=D(()=>c.isAppLoaded);return Le(()=>{c.bootstrap().then(u=>{n.meta.ability&&!o.hasAbilities(n.meta.ability)?y.push({name:"account.settings"}):n.meta.isOwner&&!o.currentUser.is_owner&&y.push({name:"account.settings"}),u.data.current_company_settings.bulk_exchange_rate_configured==="NO"&&g.fetchBulkCurrencies().then(v=>{if(v.data.currencies.length)h.openModal({componentName:"ExchangeRateBulkUpdateModal",size:"sm"});else{let r={settings:{bulk_exchange_rate_configured:"YES"}};x.updateCompanySettings({data:r})}})})}),(u,v)=>{const r=b("router-view"),m=b("BaseGlobalLoader");return d.value?(s(),_("div",Wt,[t(Fe),t(At),t(Nt),t(zt),l("main",Xt,[l("div",Ht,[t(r)])])])):(s(),C(m,{key:1}))}}};export{ea as default}; +import{x as z,y as be,z as ee,A as xe,B as le,C as we,D as $e,e as X,E as H,F as J,G,v as Y,f as S,H as ke,k as D,g as j,h as W,I as Ce,j as ie,r as b,o as s,m as C,w as i,b as l,p as A,t as f,l as e,a as t,q as te,c as _,J as N,K as B,L as K,M as ae,N as U,O as L,T as ce,P as Se,S as Be,d as Ie,_ as ue,Q as T,R as Ee,U as Q,V as Ae,W as Me,u as Ue,X as Ve,Y as Le}from"./main-pPEsZPea.js";import{u as de}from"./exchange-rate-Md-8fXjz.js";import{u as Re}from"./users-bFFtYbqz.js";import{N as Fe}from"./NotificationRoot-3GhaCSMI.js";import{V as Te}from"./index-M4eah3LL.js";function q(w){var c;const n=le(w);return(c=n==null?void 0:n.$el)!=null?c:n}const me=$e?window:void 0;function Z(...w){let c,n,o,y;if(typeof w[0]=="string"||Array.isArray(w[0])?([n,o,y]=w,c=me):[c,n,o,y]=w,!c)return z;Array.isArray(n)||(n=[n]),Array.isArray(o)||(o=[o]);const h=[],g=()=>{h.forEach(v=>v()),h.length=0},x=(v,r,m,p)=>(v.addEventListener(r,m,p),()=>v.removeEventListener(r,m,p)),d=ee(()=>[q(c),le(y)],([v,r])=>{if(g(),!v)return;const m=xe(r)?{...r}:r;h.push(...n.flatMap(p=>o.map(a=>x(v,p,a,m))))},{immediate:!0,flush:"post"}),u=()=>{d(),g()};return we(u),u}let re=!1;function pe(w,c,n={}){const{window:o=me,ignore:y=[],capture:h=!0,detectIframe:g=!1}=n;if(!o)return z;be&&!re&&(re=!0,Array.from(o.document.body.children).forEach(m=>m.addEventListener("click",z)),o.document.documentElement.addEventListener("click",z));let x=!0;const d=m=>y.some(p=>{if(typeof p=="string")return Array.from(o.document.querySelectorAll(p)).some(a=>a===m.target||m.composedPath().includes(a));{const a=q(p);return a&&(m.target===a||m.composedPath().includes(a))}}),v=[Z(o,"click",m=>{const p=q(w);if(!(!p||p===m.target||m.composedPath().includes(p))){if(m.detail===0&&(x=!d(m)),!x){x=!0;return}c(m)}},{passive:!0,capture:h}),Z(o,"pointerdown",m=>{const p=q(w);x=!d(m)&&!!(p&&!m.composedPath().includes(p))},{passive:!0}),g&&Z(o,"blur",m=>{setTimeout(()=>{var p;const a=q(w);((p=o.document.activeElement)==null?void 0:p.tagName)==="IFRAME"&&!(a!=null&&a.contains(o.document.activeElement))&&c(m)},0)})].filter(Boolean);return()=>v.forEach(m=>m())}const Ne={class:"flex justify-between w-full"},je={class:"p-4 mb-16 sm:p-6 space-y-4"},Oe={key:1,class:"flex flex-col items-center"},qe={class:"z-0 flex justify-end p-4 bg-gray-50 border-modal-bg"},De={__name:"CompanyModal",setup(w){const c=X(),n=H(),o=J(),y=G(),{t:h}=Y.useI18n();let g=S(!1),x=S(null),d=S(!1),u=S(null),v=S(null);const r=ke({name:null,currency:"",address:{country_id:null}}),m=D(()=>o.active&&o.componentName==="CompanyModal"),p={newCompanyForm:{name:{required:j.withMessage(h("validation.required"),W),minLength:j.withMessage(h("validation.name_min_length",{count:3}),Ce(3))},address:{country_id:{required:j.withMessage(h("validation.required"),W)}},currency:{required:j.withMessage(h("validation.required"),W)}}},a=ie(p,{newCompanyForm:r});async function $(){d.value=!0,await y.fetchCurrencies(),await y.fetchCountries(),r.currency=n.selectedCompanyCurrency.id,r.address.country_id=n.selectedCompany.address.country_id,d.value=!1}function M(I,E){v.value=I,u.value=E}function k(){v.value=null,u.value=null}async function O(){if(a.value.newCompanyForm.$touch(),a.value.$invalid)return!0;g.value=!0;try{const I=await n.addNewCompany(r);if(I.data.data){if(await n.setSelectedCompany(I.data.data),u&&u.value){let E=new FormData;E.append("company_logo",JSON.stringify({name:v.value,data:u.value})),await n.updateCompanyLogo(E),c.push("/admin/dashboard")}await y.setIsAppLoaded(!1),await y.bootstrap(),F()}g.value=!1}catch{g.value=!1}}function R(){r.name="",r.currency="",r.address.country_id="",a.value.$reset()}function F(){o.closeModal(),setTimeout(()=>{R(),a.value.$reset()},300)}return(I,E)=>{const ne=b("BaseIcon"),_e=b("BaseContentPlaceholdersBox"),he=b("BaseContentPlaceholders"),ye=b("BaseFileUploader"),P=b("BaseInputGroup"),fe=b("BaseInput"),oe=b("BaseMultiselect"),ge=b("BaseInputGrid"),se=b("BaseButton"),ve=b("BaseModal");return s(),C(ve,{show:m.value,onClose:F,onOpen:$},{header:i(()=>[l("div",Ne,[A(f(e(o).title)+" ",1),t(ne,{name:"XIcon",class:"w-6 h-6 text-gray-500 cursor-pointer",onClick:F})])]),default:i(()=>[l("form",{action:"",onSubmit:te(O,["prevent"])},[l("div",je,[t(ge,{layout:"one-column"},{default:i(()=>[t(P,{"content-loading":e(d),label:I.$t("settings.company_info.company_logo")},{default:i(()=>[e(d)?(s(),C(he,{key:0},{default:i(()=>[t(_e,{rounded:!0,class:"w-full h-24"})]),_:1})):(s(),_("div",Oe,[t(ye,{"preview-image":e(x),base64:"",onRemove:k,onChange:M},null,8,["preview-image"])]))]),_:1},8,["content-loading","label"]),t(P,{label:I.$t("settings.company_info.company_name"),error:e(a).newCompanyForm.name.$error&&e(a).newCompanyForm.name.$errors[0].$message,"content-loading":e(d),required:""},{default:i(()=>[t(fe,{modelValue:r.name,"onUpdate:modelValue":E[0]||(E[0]=V=>r.name=V),invalid:e(a).newCompanyForm.name.$error,"content-loading":e(d),onInput:E[1]||(E[1]=V=>e(a).newCompanyForm.name.$touch())},null,8,["modelValue","invalid","content-loading"])]),_:1},8,["label","error","content-loading"]),t(P,{"content-loading":e(d),label:I.$t("settings.company_info.country"),error:e(a).newCompanyForm.address.country_id.$error&&e(a).newCompanyForm.address.country_id.$errors[0].$message,required:""},{default:i(()=>[t(oe,{modelValue:r.address.country_id,"onUpdate:modelValue":E[2]||(E[2]=V=>r.address.country_id=V),"content-loading":e(d),label:"name",invalid:e(a).newCompanyForm.address.country_id.$error,options:e(y).countries,"value-prop":"id","can-deselect":!0,"can-clear":!1,searchable:"","track-by":"name"},null,8,["modelValue","content-loading","invalid","options"])]),_:1},8,["content-loading","label","error"]),t(P,{label:I.$t("wizard.currency"),error:e(a).newCompanyForm.currency.$error&&e(a).newCompanyForm.currency.$errors[0].$message,"content-loading":e(d),"help-text":I.$t("wizard.currency_set_alert"),required:""},{default:i(()=>[t(oe,{modelValue:r.currency,"onUpdate:modelValue":E[3]||(E[3]=V=>r.currency=V),"content-loading":e(d),options:e(y).currencies,label:"name","value-prop":"id",searchable:!0,"track-by":"name",placeholder:I.$t("settings.currencies.select_currency"),invalid:e(a).newCompanyForm.currency.$error,class:"w-full"},null,8,["modelValue","content-loading","options","placeholder","invalid"])]),_:1},8,["label","error","content-loading","help-text"])]),_:1})]),l("div",qe,[t(se,{class:"mr-3 text-sm",variant:"primary-outline",outline:"",type:"button",onClick:F},{default:i(()=>[A(f(I.$t("general.cancel")),1)]),_:1}),t(se,{loading:e(g),disabled:e(g),variant:"primary",type:"submit"},{left:i(V=>[e(g)?B("",!0):(s(),C(ne,{key:0,name:"SaveIcon",class:N(V.class)},null,8,["class"]))]),default:i(()=>[A(" "+f(I.$t("general.save")),1)]),_:1},8,["loading","disabled"])])],32)]),_:1},8,["show"])}}},Ge={key:0,class:"w-16 text-sm font-medium truncate sm:w-auto"},Pe={key:0,class:"absolute right-0 mt-2 bg-white rounded-md shadow-lg"},ze={class:"overflow-y-auto scrollbar-thin scrollbar-thumb-rounded-full w-[250px] max-h-[350px] scrollbar-thumb-gray-300 scrollbar-track-gray-10 pb-4"},We={class:"px-3 py-2 text-xs font-semibold text-gray-400 mb-0.5 block uppercase"},Xe={key:0,class:"flex flex-col items-center justify-center p-2 px-3 mt-4 text-base text-gray-400"},He={key:1},Je={key:0},Ye=["onClick"],Ke={class:"flex items-center"},Qe={class:"flex items-center justify-center mr-3 overflow-hidden text-base font-semibold bg-gray-200 rounded-md w-9 h-9 text-primary-500"},Ze={key:0},et=["src"],tt={class:"flex flex-col"},at={class:"text-sm"},nt={class:"font-medium"},ot={__name:"CompanySwitcher",setup(w){const c=H(),n=J(),o=K(),y=X(),h=G(),{t:g}=Y.useI18n(),x=ae(),d=S(!1),u=S(""),v=S(null);ee(o,()=>{d.value=!1,u.value=""}),pe(v,()=>{d.value=!1});function r(a){if(a)return a.split(" ")[0].charAt(0).toUpperCase()}function m(){n.openModal({title:g("company_switcher.new_company"),componentName:"CompanyModal",size:"sm"})}async function p(a){await c.setSelectedCompany(a),y.push("/admin/dashboard"),await h.setIsAppLoaded(!1),await h.bootstrap()}return(a,$)=>{const M=b("BaseIcon");return s(),_("div",{ref_key:"companySwitchBar",ref:v,class:"relative rounded"},[t(De),l("div",{class:"flex items-center justify-center px-3 h-8 md:h-9 ml-2 text-sm text-white bg-white rounded cursor-pointer bg-opacity-20",onClick:$[0]||($[0]=k=>d.value=!d.value)},[e(c).selectedCompany?(s(),_("span",Ge,f(e(c).selectedCompany.name),1)):B("",!0),t(M,{name:"ChevronDownIcon",class:"h-5 ml-1 text-white"})]),t(ce,{"enter-active-class":"transition duration-200 ease-out","enter-from-class":"translate-y-1 opacity-0","enter-to-class":"translate-y-0 opacity-100","leave-active-class":"transition duration-150 ease-in","leave-from-class":"translate-y-0 opacity-100","leave-to-class":"translate-y-1 opacity-0"},{default:i(()=>[d.value?(s(),_("div",Pe,[l("div",ze,[l("label",We,f(a.$t("company_switcher.label")),1),e(c).companies.length<1?(s(),_("div",Xe,[t(M,{name:"ExclamationCircleIcon",class:"h-5 text-gray-400"}),A(" "+f(a.$t("company_switcher.no_results_found")),1)])):(s(),_("div",He,[e(c).companies.length>0?(s(),_("div",Je,[(s(!0),_(U,null,L(e(c).companies,(k,O)=>(s(),_("div",{key:O,class:N(["p-2 px-3 rounded-md cursor-pointer hover:bg-gray-100 hover:text-primary-500",{"bg-gray-100 text-primary-500":e(c).selectedCompany.id===k.id}]),onClick:R=>p(k)},[l("div",Ke,[l("span",Qe,[k.logo?(s(),_("img",{key:1,src:k.logo,alt:"Company logo",class:"w-full h-full object-contain"},null,8,et)):(s(),_("span",Ze,f(r(k.name)),1))]),l("div",tt,[l("span",at,f(k.name),1)])])],10,Ye))),128))])):B("",!0)]))]),e(x).currentUser.is_owner?(s(),_("div",{key:0,class:"flex items-center justify-center p-4 pl-3 border-t-2 border-gray-100 cursor-pointer text-primary-400 hover:text-primary-500",onClick:m},[t(M,{name:"PlusIcon",class:"h-5 mr-2"}),l("span",nt,f(a.$t("company_switcher.add_new_company")),1)])):B("",!0)])):B("",!0)]),_:1})],512)}}},st={key:0,class:"scrollbar-thin scrollbar-thumb-rounded-full scrollbar-thumb-gray-300 scrollbar-track-gray-100 overflow-y-auto bg-white rounded-md mt-2 shadow-lg p-3 absolute w-[300px] h-[200px] right-0"},rt={key:0,class:"flex items-center justify-center text-gray-400 text-base flex-col mt-4"},lt={key:1},it={key:0},ct={class:"text-sm text-gray-400 mb-0.5 block px-2 uppercase"},ut={class:"flex items-center justify-center w-9 h-9 mr-3 text-base font-semibold bg-gray-200 rounded-full text-primary-500"},dt={class:"flex flex-col"},mt={class:"text-sm"},pt={key:0,class:"text-xs text-gray-400"},_t={key:1,class:"text-xs text-gray-400"},ht={key:1,class:"mt-2"},yt={class:"text-sm text-gray-400 mb-2 block px-2 mb-0.5 uppercase"},ft={class:"flex items-center justify-center w-9 h-9 mr-3 text-base font-semibold bg-gray-200 rounded-full text-primary-500"},gt={class:"flex flex-col"},vt={class:"text-sm"},bt={class:"text-xs text-gray-400"},xt={__name:"GlobalSearchBar",setup(w){const c=Re(),n=S(!1),o=S(""),y=S(null),h=S(!1),g=K();ee(g,()=>{n.value=!1,o.value=""}),x=Se.debounce(x,500),pe(y,()=>{n.value=!1,o.value=""});function x(){let u={search:o.value};o.value&&(h.value=!0,c.searchUsers(u).then(()=>{n.value=!0}),h.value=!1),o.value===""&&(n.value=!1)}function d(u){if(u)return u.split(" ")[0].charAt(0).toUpperCase()}return(u,v)=>{const r=b("BaseIcon"),m=b("BaseInput"),p=b("router-link");return s(),_("div",{ref_key:"searchBar",ref:y,class:"hidden rounded md:block relative"},[l("div",null,[t(m,{modelValue:o.value,"onUpdate:modelValue":v[0]||(v[0]=a=>o.value=a),placeholder:"Search...","container-class":"!rounded",class:"h-8 md:h-9 !rounded",onInput:x},{left:i(()=>[t(r,{name:"SearchIcon",class:"text-gray-400"})]),right:i(()=>[h.value?(s(),C(Be,{key:0,class:"h-5 text-primary-500"})):B("",!0)]),_:1},8,["modelValue"])]),t(ce,{"enter-active-class":"transition duration-200 ease-out","enter-from-class":"translate-y-1 opacity-0","enter-to-class":"translate-y-0 opacity-100","leave-active-class":"transition duration-150 ease-in","leave-from-class":"translate-y-0 opacity-100","leave-to-class":"translate-y-1 opacity-0"},{default:i(()=>[n.value?(s(),_("div",st,[e(c).userList.length<1&&e(c).customerList.length<1?(s(),_("div",rt,[t(r,{name:"ExclamationCircleIcon",class:"text-gray-400"}),A(" "+f(u.$t("global_search.no_results_found")),1)])):(s(),_("div",lt,[e(c).customerList.length>0?(s(),_("div",it,[l("label",ct,f(u.$t("global_search.customers")),1),(s(!0),_(U,null,L(e(c).customerList,(a,$)=>(s(),_("div",{key:$,class:"p-2 hover:bg-gray-100 cursor-pointer rounded-md"},[t(p,{to:{path:`/admin/customers/${a.id}/view`},class:"flex items-center"},{default:i(()=>[l("span",ut,f(d(a.name)),1),l("div",dt,[l("span",mt,f(a.name),1),a.contact_name?(s(),_("span",pt,f(a.contact_name),1)):(s(),_("span",_t,f(a.email),1))])]),_:2},1032,["to"])]))),128))])):B("",!0),e(c).userList.length>0?(s(),_("div",ht,[l("label",yt,f(u.$t("global_search.users")),1),(s(!0),_(U,null,L(e(c).userList,(a,$)=>(s(),_("div",{key:$,class:"p-2 hover:bg-gray-100 cursor-pointer rounded-md"},[t(p,{to:{path:`/admin/users/${a.id}/edit`},class:"flex items-center"},{default:i(()=>[l("span",ft,f(d(a.name)),1),l("div",gt,[l("span",vt,f(a.name),1),l("span",bt,f(a.email),1)])]),_:2},1032,["to"])]))),128))])):B("",!0)]))])):B("",!0)]),_:1})],512)}}},wt={class:"fixed top-0 left-0 z-20 flex items-center justify-between w-full px-4 py-3 md:h-16 md:px-8 bg-gradient-to-r from-primary-500 to-primary-400"},$t=["src"],kt={class:"flex float-right h-8 m-0 list-none md:h-9"},Ct={key:0,class:"relative hidden float-left m-0 md:block"},St={class:"flex items-center justify-center w-8 h-8 ml-2 text-sm text-black bg-white rounded md:h-9 md:w-9"},Bt={class:"ml-2"},It={class:"relative block float-left ml-2"},Et=["src"],At={__name:"TheSiteHeader",setup(w){const c=Ie(),n=ae(),o=G(),y=X(),h=D(()=>n.currentUser&&n.currentUser.avatar!==0?n.currentUser.avatar:x()),g=D(()=>o.globalSettings.admin_portal_logo?"/storage/"+o.globalSettings.admin_portal_logo:!1);function x(){return new URL("/build/assets/default-avatar-4j3-l2sn.jpg",import.meta.url)}function d(){return n.hasAbilities([T.CREATE_INVOICE,T.CREATE_ESTIMATE,T.CREATE_CUSTOMER])}async function u(){await c.logout(),y.push("/login")}function v(){o.setSidebarVisibility(!0)}return(r,m)=>{const p=b("router-link"),a=b("BaseIcon"),$=b("BaseDropdownItem"),M=b("BaseDropdown");return s(),_("header",wt,[t(p,{to:"/admin/dashboard",class:"float-none text-lg not-italic font-black tracking-wider text-white brand-main md:float-left font-base hidden md:block"},{default:i(()=>[g.value?(s(),_("img",{key:0,src:g.value,class:"h-6"},null,8,$t)):(s(),C(ue,{key:1,class:"h-6","light-color":"white","dark-color":"white"}))]),_:1}),l("div",{class:N([{"is-active":e(o).isSidebarOpen},"flex float-left p-1 overflow-visible text-sm ease-linear bg-white border-0 rounded cursor-pointer md:hidden md:ml-0 hover:bg-gray-100"]),onClick:te(v,["prevent"])},[t(a,{name:"MenuIcon",class:"!w-6 !h-6 text-gray-500"})],2),l("ul",kt,[d?(s(),_("li",Ct,[t(M,{"width-class":"w-48"},{activator:i(()=>[l("div",St,[t(a,{name:"PlusIcon",class:"w-5 h-5 text-gray-600"})])]),default:i(()=>[t(p,{to:"/admin/invoices/create"},{default:i(()=>[e(n).hasAbilities(e(T).CREATE_INVOICE)?(s(),C($,{key:0},{default:i(()=>[t(a,{name:"DocumentTextIcon",class:"w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500","aria-hidden":"true"}),A(" "+f(r.$t("invoices.new_invoice")),1)]),_:1})):B("",!0)]),_:1}),t(p,{to:"/admin/estimates/create"},{default:i(()=>[e(n).hasAbilities(e(T).CREATE_ESTIMATE)?(s(),C($,{key:0},{default:i(()=>[t(a,{name:"DocumentIcon",class:"w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500","aria-hidden":"true"}),A(" "+f(r.$t("estimates.new_estimate")),1)]),_:1})):B("",!0)]),_:1}),t(p,{to:"/admin/customers/create"},{default:i(()=>[e(n).hasAbilities(e(T).CREATE_CUSTOMER)?(s(),C($,{key:0},{default:i(()=>[t(a,{name:"UserIcon",class:"w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500","aria-hidden":"true"}),A(" "+f(r.$t("customers.new_customer")),1)]),_:1})):B("",!0)]),_:1})]),_:1})])):B("",!0),l("li",Bt,[e(n).currentUser.is_owner||e(n).hasAbilities(e(T).VIEW_CUSTOMER)?(s(),C(xt,{key:0})):B("",!0)]),l("li",null,[t(ot)]),l("li",It,[t(M,{"width-class":"w-48"},{activator:i(()=>[l("img",{src:h.value,class:"block w-8 h-8 rounded md:h-9 md:w-9 object-cover"},null,8,Et)]),default:i(()=>[t(p,{to:"/admin/settings/account-settings"},{default:i(()=>[t($,null,{default:i(()=>[t(a,{name:"CogIcon",class:"w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500","aria-hidden":"true"}),A(" "+f(r.$t("navigation.settings")),1)]),_:1})]),_:1}),t($,{onClick:u},{default:i(()=>[t(a,{name:"LogoutIcon",class:"w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500","aria-hidden":"true"}),A(" "+f(r.$t("navigation.logout")),1)]),_:1})]),_:1})])])])}}},Mt={class:"relative flex flex-col flex-1 w-full max-w-xs bg-white"},Ut={class:"absolute top-0 right-0 pt-2 -mr-12"},Vt=l("span",{class:"sr-only"},"Close sidebar",-1),Lt={class:"flex-1 h-0 pt-5 pb-4 overflow-y-auto"},Rt={class:"flex items-center shrink-0 px-4 mb-10"},Ft=l("div",{class:"shrink-0 w-14"},null,-1),Tt={class:"hidden w-56 h-screen pb-32 overflow-y-auto bg-white border-r border-gray-200 border-solid xl:w-64 md:fixed md:flex md:flex-col md:inset-y-0 pt-16"},Nt={__name:"TheSiteSidebar",setup(w){const c=K(),n=G();function o(y){return c.path.indexOf(y)>-1}return(y,h)=>{const g=b("BaseIcon"),x=b("router-link");return s(),_(U,null,[t(e(Me),{as:"template",show:e(n).isSidebarOpen},{default:i(()=>[t(e(Ee),{as:"div",class:"fixed inset-0 z-40 flex md:hidden",onClose:h[3]||(h[3]=d=>e(n).setSidebarVisibility(!1))},{default:i(()=>[t(e(Q),{as:"template",enter:"transition-opacity ease-linear duration-300","enter-from":"opacity-0","enter-to":"opacity-100",leave:"transition-opacity ease-linear duration-300","leave-from":"opacity-100","leave-to":"opacity-0"},{default:i(()=>[t(e(Ae),{class:"fixed inset-0 bg-gray-600 bg-opacity-75"})]),_:1}),t(e(Q),{as:"template",enter:"transition ease-in-out duration-300","enter-from":"-translate-x-full","enter-to":"translate-x-0",leave:"transition ease-in-out duration-300","leave-from":"translate-x-0","leave-to":"-translate-x-full"},{default:i(()=>[l("div",Mt,[t(e(Q),{as:"template",enter:"ease-in-out duration-300","enter-from":"opacity-0","enter-to":"opacity-100",leave:"ease-in-out duration-300","leave-from":"opacity-100","leave-to":"opacity-0"},{default:i(()=>[l("div",Ut,[l("button",{class:"flex items-center justify-center w-10 h-10 ml-1 rounded-full focus:outline-none focus:ring-2 focus:ring-inset focus:ring-white",onClick:h[0]||(h[0]=d=>e(n).setSidebarVisibility(!1))},[Vt,t(g,{name:"XIcon",class:"w-6 h-6 text-white","aria-hidden":"true"})])])]),_:1}),l("div",Lt,[l("div",Rt,[t(ue,{class:"block h-auto max-w-full w-36 text-primary-400",alt:"InvoiceShelf Logo"})]),(s(!0),_(U,null,L(e(n).menuGroups,d=>(s(),_("nav",{key:d,class:"mt-5 space-y-1"},[(s(!0),_(U,null,L(d,u=>(s(),C(x,{key:u.name,to:u.link,class:N([o(u.link)?"text-primary-500 border-primary-500 bg-gray-100 ":"text-black","cursor-pointer px-0 pl-4 py-3 border-transparent flex items-center border-l-4 border-solid text-sm not-italic font-medium"]),onClick:h[2]||(h[2]=v=>e(n).setSidebarVisibility(!1))},{default:i(()=>[t(g,{name:u.icon,class:N([o(u.link)?"text-primary-500 ":"text-gray-400","mr-4 shrink-0 h-5 w-5"]),onClick:h[1]||(h[1]=v=>e(n).setSidebarVisibility(!1))},null,8,["name","class"]),A(" "+f(y.$t(u.title)),1)]),_:2},1032,["to","class"]))),128))]))),128))])])]),_:1}),Ft]),_:1})]),_:1},8,["show"]),l("div",Tt,[(s(!0),_(U,null,L(e(n).menuGroups,d=>(s(),_("div",{key:d,class:"p-0 m-0 mt-6 list-none"},[(s(!0),_(U,null,L(d,u=>(s(),C(x,{key:u,to:u.link,class:N([o(u.link)?"text-primary-500 border-primary-500 bg-gray-100 ":"text-black","cursor-pointer px-0 pl-6 hover:bg-gray-50 py-3 group flex items-center border-l-4 border-solid border-transparent text-sm not-italic font-medium"])},{default:i(()=>[t(g,{name:u.icon,class:N([o(u.link)?"text-primary-500 group-hover:text-primary-500 ":"text-gray-400 group-hover:text-black","mr-4 shrink-0 h-5 w-5 "])},null,8,["name","class"]),A(" "+f(y.$t(u.title)),1)]),_:2},1032,["to","class"]))),128))]))),128))])],64)}}},jt={class:"font-medium text-lg text-left"},Ot={class:"mt-2 text-sm leading-snug text-gray-500",style:{"max-width":"680px"}},qt={class:"text-gray-500 sm:text-sm"},Dt={class:"text-gray-400 text-xs mt-2 font-light"},Gt={slot:"footer",class:"z-0 flex justify-end mt-4 pt-4 border-t border-gray-200 border-solid border-modal-bg"},Pt={__name:"ExchangeRateBulkUpdate",emits:["update"],setup(w,{emit:c}){const n=de();Ue();const o=H(),{t:y,tm:h}=Y.useI18n();let g=S(!1);S(!1);const x={exchange_rate:{required:j.withMessage(y("validation.required"),W),decimal:j.withMessage(y("validation.valid_exchange_rate"),Ve)}},d=ie(),u=c;async function v(){if(d.value.$touch(),d.value.$invalid)return!0;g.value=!0;let r=n.bulkCurrencies.map(p=>({id:p.id,exchange_rate:p.exchange_rate})),m=await n.updateBulkExchangeRate({currencies:r});m.data.success&&u("update",m.data.success),g.value=!1}return(r,m)=>{const p=b("BaseInput"),a=b("BaseInputGroup"),$=b("BaseButton"),M=b("BaseCard");return s(),C(M,null,{default:i(()=>[l("h6",jt,f(r.$t("settings.exchange_rate.title")),1),l("p",Ot,f(r.$t("settings.exchange_rate.description",{currency:e(o).selectedCompanyCurrency.name})),1),l("form",{action:"",onSubmit:te(v,["prevent"])},[(s(!0),_(U,null,L(e(n).bulkCurrencies,(k,O)=>(s(),C(e(Te),{key:O,state:k,rules:x},{default:i(({v:R})=>[t(a,{class:"my-5",label:`${k.code} to ${e(o).selectedCompanyCurrency.code}`,error:R.exchange_rate.$error&&R.exchange_rate.$errors[0].$message,required:""},{default:i(()=>[t(p,{modelValue:k.exchange_rate,"onUpdate:modelValue":F=>k.exchange_rate=F,addon:`1 ${k.code} =`,invalid:R.exchange_rate.$error,onInput:F=>R.exchange_rate.$touch()},{right:i(()=>[l("span",qt,f(e(o).selectedCompanyCurrency.code),1)]),_:2},1032,["modelValue","onUpdate:modelValue","addon","invalid","onInput"]),l("span",Dt,f(r.$t("settings.exchange_rate.exchange_help_text",{currency:k.code,baseCurrency:e(o).selectedCompanyCurrency.code})),1)]),_:2},1032,["label","error"])]),_:2},1032,["state"]))),128)),l("div",Gt,[t($,{loading:e(g),variant:"primary",type:"submit"},{default:i(()=>[A(f(r.$t("general.save")),1)]),_:1},8,["loading"])])],32)]),_:1})}}},zt={__name:"ExchangeRateBulkUpdateModal",setup(w){const c=J(),n=D(()=>c.active&&c.componentName==="ExchangeRateBulkUpdateModal");function o(){c.closeModal()}return(y,h)=>{const g=b("BaseModal");return s(),C(g,{show:n.value},{default:i(()=>[t(Pt,{onUpdate:h[0]||(h[0]=x=>o())})]),_:1},8,["show"])}}},Wt={key:0,class:"h-full"},Xt={class:"h-screen h-screen-ios overflow-y-auto md:pl-56 xl:pl-64 min-h-0"},Ht={class:"pt-16 pb-16"},ea={__name:"LayoutBasic",setup(w){const c=G(),n=K(),o=ae(),y=X(),h=J();Y.useI18n();const g=de(),x=H(),d=D(()=>c.isAppLoaded);return Le(()=>{c.bootstrap().then(u=>{n.meta.ability&&!o.hasAbilities(n.meta.ability)?y.push({name:"account.settings"}):n.meta.isOwner&&!o.currentUser.is_owner&&y.push({name:"account.settings"}),u.data.current_company_settings.bulk_exchange_rate_configured==="NO"&&g.fetchBulkCurrencies().then(v=>{if(v.data.currencies.length)h.openModal({componentName:"ExchangeRateBulkUpdateModal",size:"sm"});else{let r={settings:{bulk_exchange_rate_configured:"YES"}};x.updateCompanySettings({data:r})}})})}),(u,v)=>{const r=b("router-view"),m=b("BaseGlobalLoader");return d.value?(s(),_("div",Wt,[t(Fe),t(At),t(Nt),t(zt),l("main",Xt,[l("div",Ht,[t(r)])])])):(s(),C(m,{key:1}))}}};export{ea as default}; diff --git a/public/build/assets/LayoutBasic-xMtJOxOw.js b/public/build/assets/LayoutBasic-xMtJOxOw.js new file mode 100644 index 00000000..757d086f --- /dev/null +++ b/public/build/assets/LayoutBasic-xMtJOxOw.js @@ -0,0 +1 @@ +import{u as X}from"./auth-mYHkZCAB.js";import{b0 as E,f as x,b1 as M,b2 as R,b3 as D,b4 as V,b5 as Z,k as w,b6 as P,b7 as L,Y as z,aa as H,an as ee,b8 as te,b9 as se,ba as K,a5 as F,bb as $,v as ae,L as G,e as oe,z as re,r as C,o as v,m as S,w as f,b as a,l as n,_ as le,c as I,N as U,O as N,J as j,p as B,t as y,a as d,bc as ne,bd as ue,be as ie,bf as ce,bg as de,bh as pe,K as fe}from"./main-pPEsZPea.js";import{u as J}from"./global-s5lx2XuM.js";import{N as me}from"./NotificationRoot-3GhaCSMI.js";var ve=(s=>(s[s.Open=0]="Open",s[s.Closed=1]="Closed",s))(ve||{});let Q=Symbol("DisclosureContext");function A(s){let i=F(Q,null);if(i===null){let p=new Error(`<${s} /> is missing a parent component.`);throw Error.captureStackTrace&&Error.captureStackTrace(p,A),p}return i}let Y=Symbol("DisclosurePanelContext");function ge(){return F(Y,null)}let be=E({name:"Disclosure",props:{as:{type:[Object,String],default:"template"},defaultOpen:{type:[Boolean],default:!1}},setup(s,{slots:i,attrs:p}){let t=x(s.defaultOpen?0:1),e=x(null),g=x(null),r={buttonId:x(`headlessui-disclosure-button-${M()}`),panelId:x(`headlessui-disclosure-panel-${M()}`),disclosureState:t,panel:e,button:g,toggleDisclosure(){t.value=R(t.value,{0:1,1:0})},closeDisclosure(){t.value!==1&&(t.value=1)},close(o){r.closeDisclosure();let m=o?o instanceof HTMLElement?o:o.value instanceof HTMLElement?D(o):D(r.button):D(r.button);m==null||m.focus()}};return V(Q,r),Z(w(()=>R(t.value,{0:P.Open,1:P.Closed}))),()=>{let{defaultOpen:o,...m}=s,b={open:t.value===0,close:r.close};return L({theirProps:m,ourProps:{},slot:b,slots:i,attrs:p,name:"Disclosure"})}}}),he=E({name:"DisclosureButton",props:{as:{type:[Object,String],default:"button"},disabled:{type:[Boolean],default:!1},id:{type:String,default:null}},setup(s,{attrs:i,slots:p,expose:t}){let e=A("DisclosureButton"),g=ge(),r=w(()=>g===null?!1:g.value===e.panelId.value);z(()=>{r.value||s.id!==null&&(e.buttonId.value=s.id)}),H(()=>{r.value||(e.buttonId.value=null)});let o=x(null);t({el:o,$el:o}),r.value||ee(()=>{e.button.value=o.value});let m=te(w(()=>({as:s.as,type:i.type})),o);function b(){var l;s.disabled||(r.value?(e.toggleDisclosure(),(l=D(e.button))==null||l.focus()):e.toggleDisclosure())}function h(l){var c;if(!s.disabled)if(r.value)switch(l.key){case $.Space:case $.Enter:l.preventDefault(),l.stopPropagation(),e.toggleDisclosure(),(c=D(e.button))==null||c.focus();break}else switch(l.key){case $.Space:case $.Enter:l.preventDefault(),l.stopPropagation(),e.toggleDisclosure();break}}function _(l){switch(l.key){case $.Space:l.preventDefault();break}}return()=>{var l;let c={open:e.disclosureState.value===0},{id:T,...k}=s,O=r.value?{ref:o,type:m.value,onClick:b,onKeydown:h}:{id:(l=e.buttonId.value)!=null?l:T,ref:o,type:m.value,"aria-expanded":e.disclosureState.value===0,"aria-controls":e.disclosureState.value===0||D(e.panel)?e.panelId.value:void 0,disabled:s.disabled?!0:void 0,onClick:b,onKeydown:h,onKeyup:_};return L({ourProps:O,theirProps:k,slot:c,attrs:i,slots:p,name:"DisclosureButton"})}}}),_e=E({name:"DisclosurePanel",props:{as:{type:[Object,String],default:"div"},static:{type:Boolean,default:!1},unmount:{type:Boolean,default:!0},id:{type:String,default:null}},setup(s,{attrs:i,slots:p,expose:t}){let e=A("DisclosurePanel");z(()=>{s.id!==null&&(e.panelId.value=s.id)}),H(()=>{e.panelId.value=null}),t({el:e.panel,$el:e.panel}),V(Y,e.panelId);let g=se(),r=w(()=>g!==null?(g.value&P.Open)===P.Open:e.disclosureState.value===0);return()=>{var o;let m={open:e.disclosureState.value===0,close:e.close},{id:b,...h}=s,_={id:(o=e.panelId.value)!=null?o:b,ref:e.panel};return L({ourProps:_,theirProps:h,slot:m,attrs:i,slots:p,features:K.RenderStrategy|K.Static,visible:r.value,name:"DisclosurePanel"})}}});const ye={class:"mx-auto px-8"},xe={class:"flex justify-between h-16 w-full"},we={class:"flex"},ke={class:"shrink-0 flex items-center"},Se=["href"],De=["src"],$e={class:"hidden sm:-my-px sm:ml-6 sm:flex sm:space-x-8"},Be={class:"hidden sm:ml-6 sm:flex sm:items-center"},Ie=a("button",{type:"button",class:"bg-white p-1 rounded-full text-gray-400 hover:text-gray-500 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-primary-500"},null,-1),Oe=["src"],Ce={class:"-mr-2 flex items-center sm:hidden"},Pe=a("span",{class:"sr-only"},"Open main menu",-1),Ue={class:"pt-2 pb-3 space-y-1"},Ne={class:"pt-4 pb-3 border-t border-gray-200"},je={class:"flex items-center px-4"},Ee={class:"shrink-0"},Le=["src"],Ae={class:"ml-3"},Te={class:"text-base font-medium text-gray-800"},Me={class:"text-sm font-medium text-gray-500"},Re=a("button",{type:"button",class:"ml-auto bg-white shrink-0 p-1 rounded-full text-gray-400 hover:text-gray-500 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-primary-500"},null,-1),Ke={class:"mt-3 space-y-1"},Ve={__name:"TheSiteHeader",setup(s){const{t:i}=ae.useI18n(),p=G(),t=J(),e=[{title:i("navigation.logout"),link:`/${t.companySlug}/customer/login`}],g=X(),r=oe(),o=x(""),m=w(()=>t.currentUser&&t.currentUser.avatar!==0?t.currentUser.avatar:b());function b(){return new URL("/build/assets/default-avatar-4j3-l2sn.jpg",import.meta.url)}re(p,c=>{o.value=c.path},{immediate:!0});const h=w(()=>window.customer_logo?window.customer_logo:!1);function _(c){return p.path.indexOf(c)>-1}function l(){g.logout(t.companySlug).then(c=>{c&&r.push({name:"customer.login"})})}return(c,T)=>{const k=C("router-link"),O=C("BaseDropdownItem"),q=C("BaseDropdown");return v(),S(n(be),{as:"nav",class:"bg-white shadow-sm fixed top-0 left-0 z-20 w-full"},{default:f(({open:W})=>[a("div",ye,[a("div",xe,[a("div",we,[a("div",ke,[a("a",{href:`/${n(t).companySlug}/customer/dashboard`,class:"float-none text-lg not-italic font-black tracking-wider text-white brand-main md:float-left font-base"},[h.value?(v(),I("img",{key:1,src:h.value,class:"h-6"},null,8,De)):(v(),S(le,{key:0,class:"h-6"}))],8,Se)]),a("div",$e,[(v(!0),I(U,null,N(n(t).mainMenu,u=>(v(),S(k,{key:u.title,to:`/${n(t).companySlug}${u.link}`,class:j([_(u.link)?"border-primary-500 text-primary-600":"border-transparent text-gray-500 hover:text-gray-700 hover:border-gray-300","inline-flex items-center px-1 pt-1 border-b-2 text-sm font-medium"])},{default:f(()=>[B(y(u.title),1)]),_:2},1032,["to","class"]))),128))])]),a("div",Be,[Ie,d(n(ne),{as:"div",class:"ml-3 relative"},{default:f(()=>[d(q,{"width-class":"w-48"},{activator:f(()=>[d(n(ue),{class:"bg-white flex text-sm rounded-full focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-primary-500"},{default:f(()=>[a("img",{class:"h-8 w-8 rounded-full",src:m.value,alt:""},null,8,Oe)]),_:1})]),default:f(()=>[d(k,{to:{name:"customer.profile"}},{default:f(()=>[d(O,null,{default:f(()=>[d(n(ie),{class:"w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500","aria-hidden":"true"}),B(" "+y(c.$t("navigation.settings")),1)]),_:1})]),_:1},8,["to"]),d(O,{onClick:l},{default:f(()=>[d(n(ce),{class:"w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500","aria-hidden":"true"}),B(" "+y(c.$t("navigation.logout")),1)]),_:1})]),_:1})]),_:1})]),a("div",Ce,[d(n(he),{class:"bg-white inline-flex items-center justify-center p-2 rounded-md text-gray-400 hover:text-gray-500 hover:bg-gray-100 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-primary-500"},{default:f(()=>[Pe,W?(v(),S(n(pe),{key:1,class:"block h-6 w-6","aria-hidden":"true"})):(v(),S(n(de),{key:0,class:"block h-6 w-6","aria-hidden":"true"}))]),_:2},1024)])])]),d(n(_e),{class:"sm:hidden"},{default:f(()=>[a("div",Ue,[(v(!0),I(U,null,N(n(t).mainMenu,u=>(v(),S(k,{key:u.title,to:`/${n(t).companySlug}${u.link}`,class:j([_(u.link)?"bg-primary-50 border-primary-500 text-primary-700":"border-transparent text-gray-600 hover:bg-gray-50 hover:border-gray-300 hover:text-gray-800","block pl-3 pr-4 py-2 border-l-4 text-base font-medium"]),"aria-current":u.current?"page":void 0},{default:f(()=>[B(y(u.title),1)]),_:2},1032,["to","class","aria-current"]))),128))]),a("div",Ne,[a("div",je,[a("div",Ee,[a("img",{class:"h-10 w-10 rounded-full",src:m.value,alt:""},null,8,Le)]),a("div",Ae,[a("div",Te,y(n(t).currentUser.title),1),a("div",Me,y(n(t).currentUser.email),1)]),Re]),a("div",Ke,[(v(),I(U,null,N(e,u=>d(k,{key:u.title,to:u.link,class:j([_(u.link)?"bg-primary-50 border-primary-500 text-primary-700":"border-transparent text-gray-600 hover:bg-gray-50 hover:border-gray-300 hover:text-gray-800","block pl-3 pr-4 py-2 border-l-4 text-base font-medium"])},{default:f(()=>[B(y(u.title),1)]),_:2},1032,["to","class"])),64))])])]),_:1})]),_:1})}}},ze={key:0,class:"h-full"},He={class:"mt-16 pb-16 h-screen overflow-y-auto min-h-0"},Ye={__name:"LayoutBasic",setup(s){const i=J(),p=G(),t=w(()=>i.isAppLoaded);e();async function e(){await i.bootstrap(p.params.company)}return(g,r)=>{const o=C("router-view");return t.value?(v(),I("div",ze,[d(me),d(Ve),a("main",He,[d(o)])])):fe("",!0)}}};export{Ye as default}; diff --git a/public/build/assets/LayoutInstallation-fEvjtvoe.js b/public/build/assets/LayoutInstallation-n75TvDOA.js similarity index 64% rename from public/build/assets/LayoutInstallation-fEvjtvoe.js rename to public/build/assets/LayoutInstallation-n75TvDOA.js index 3b7f42a1..e7182b25 100644 --- a/public/build/assets/LayoutInstallation-fEvjtvoe.js +++ b/public/build/assets/LayoutInstallation-n75TvDOA.js @@ -1 +1 @@ -import{N as t}from"./NotificationRoot-VBhW4oOA.js";import{r as a,o as s,c as r,a as o,b as c}from"./main-B9dpPbRR.js";const n={class:"h-screen overflow-y-auto text-base"},_={class:"container mx-auto px-4"},d={__name:"LayoutInstallation",setup(i){return(l,m)=>{const e=a("router-view");return s(),r("div",n,[o(t),c("div",_,[o(e)])])}}};export{d as default}; +import{N as t}from"./NotificationRoot-3GhaCSMI.js";import{r as a,o as s,c as r,a as o,b as c}from"./main-pPEsZPea.js";const n={class:"h-screen overflow-y-auto text-base"},_={class:"container mx-auto px-4"},d={__name:"LayoutInstallation",setup(i){return(l,m)=>{const e=a("router-view");return s(),r("div",n,[o(t),c("div",_,[o(e)])])}}};export{d as default}; diff --git a/public/build/assets/LayoutLogin-rLG15CE5.js b/public/build/assets/LayoutLogin-JS-vXZu6.js similarity index 84% rename from public/build/assets/LayoutLogin-rLG15CE5.js rename to public/build/assets/LayoutLogin-JS-vXZu6.js index 14c28758..d0a1d9ee 100644 --- a/public/build/assets/LayoutLogin-rLG15CE5.js +++ b/public/build/assets/LayoutLogin-JS-vXZu6.js @@ -1 +1 @@ -import{N as m}from"./NotificationRoot-VBhW4oOA.js";import{k as r,r as l,o,c as t,a,b as s,m as n,_ as i}from"./main-B9dpPbRR.js";const u={class:"min-h-screen bg-gray-200 flex flex-col justify-center py-12 sm:px-6 lg:px-8"},_={class:"sm:mx-auto sm:w-full sm:max-w-md px-4 sm:px-0"},p=["src"],x={class:"mt-8 sm:mx-auto sm:w-full sm:max-w-md px-4 sm:px-0"},d={class:"bg-white py-8 px-4 shadow rounded-lg sm:px-10"},y={__name:"LayoutLogin",setup(w){const e=r(()=>window.customer_logo?window.customer_logo:!1);return(f,h)=>{const c=l("router-view");return o(),t("div",u,[a(m),s("div",_,[e.value?(o(),t("img",{key:1,src:e.value,class:"block w-48 h-auto max-w-full text-primary-400 mx-auto"},null,8,p)):(o(),n(i,{key:0,class:"block w-48 h-auto max-w-full text-primary-400 mx-auto"}))]),s("div",x,[s("div",d,[a(c)])])])}}};export{y as default}; +import{N as m}from"./NotificationRoot-3GhaCSMI.js";import{k as r,r as l,o,c as t,a,b as s,m as n,_ as i}from"./main-pPEsZPea.js";const u={class:"min-h-screen bg-gray-200 flex flex-col justify-center py-12 sm:px-6 lg:px-8"},_={class:"sm:mx-auto sm:w-full sm:max-w-md px-4 sm:px-0"},p=["src"],x={class:"mt-8 sm:mx-auto sm:w-full sm:max-w-md px-4 sm:px-0"},d={class:"bg-white py-8 px-4 shadow rounded-lg sm:px-10"},y={__name:"LayoutLogin",setup(w){const e=r(()=>window.customer_logo?window.customer_logo:!1);return(f,h)=>{const c=l("router-view");return o(),t("div",u,[a(m),s("div",_,[e.value?(o(),t("img",{key:1,src:e.value,class:"block w-48 h-auto max-w-full text-primary-400 mx-auto"},null,8,p)):(o(),n(i,{key:0,class:"block w-48 h-auto max-w-full text-primary-400 mx-auto"}))]),s("div",x,[s("div",d,[a(c)])])])}}};export{y as default}; diff --git a/public/build/assets/LayoutLogin-5OiQ-1Km.js b/public/build/assets/LayoutLogin-OVzXm-eU.js similarity index 98% rename from public/build/assets/LayoutLogin-5OiQ-1Km.js rename to public/build/assets/LayoutLogin-OVzXm-eU.js index f789630d..304201e4 100644 --- a/public/build/assets/LayoutLogin-5OiQ-1Km.js +++ b/public/build/assets/LayoutLogin-OVzXm-eU.js @@ -1 +1 @@ -import{N as C}from"./NotificationRoot-VBhW4oOA.js";import{Z as r,o as e,c as i,b as t,$ as _,k as s,r as f,a as l,m as g,t as n,_ as m}from"./main-B9dpPbRR.js";const w={},u={viewBox:"0 0 1012 1023",fill:"none",xmlns:"http://www.w3.org/2000/svg",preserveAspectRatio:"none",class:"text-primary-500"},y=t("path",{d:"M116.21 472.5C55.1239 693.5 78.5219 837.5 114.349 1023H1030.5V-1L0 -106C147.5 21.5 172.311 269.536 116.21 472.5Z",fill:"url(#paint0_linear)"},null,-1),x=t("defs",null,[t("linearGradient",{id:"paint0_linear",x1:"515.25",y1:"-106",x2:"515.25",y2:"1023",gradientUnits:"userSpaceOnUse"},[t("stop",{"stop-color":"rgba(var(--color-primary-500), var(--tw-text-opacity))"}),t("stop",{offset:"1","stop-color":"rgba(var(--color-primary-400), var(--tw-text-opacity))"})])],-1),v=[y,x];function b(o,a){return e(),i("svg",u,v)}const $=r(w,[["render",b]]),M={},Z={width:"422",height:"290",viewBox:"0 0 422 290",fill:"none",xmlns:"http://www.w3.org/2000/svg"},L=_('',2),k=[L];function B(o,a){return e(),i("svg",Z,k)}const O=r(M,[["render",B]]),S={},D={viewBox:"0 0 1170 20",fill:"none",xmlns:"http://www.w3.org/2000/svg"},I=t("path",{d:"M690 4.08004C518 -9.91998 231 4.08004 -6 176.361L231 197.08L1170 219.08C1113.33 175.747 909.275 21.928 690 4.08004Z",fill:"white","fill-opacity":"0.1"},null,-1),V=[I];function N(o,a){return e(),i("svg",D,V)}const E=r(S,[["render",N]]),P={},U={width:"1122",height:"1017",viewBox:"0 0 1122 1017",preserveAspectRatio:"none",fill:"none",xmlns:"http://www.w3.org/2000/svg"},z=t("path",{d:"M226.002 466.5C164.935 687.5 188.326 831.5 224.141 1017H1140V-7L0 -109.5C142.5 -7.5 282.085 263.536 226.002 466.5Z",fill:"url(#paint0_linear)","fill-opacity":"0.1"},null,-1),A=t("defs",null,[t("linearGradient",{id:"paint0_linear",x1:"649.5",y1:"-7",x2:"649.5",y2:"1017",gradientUnits:"userSpaceOnUse"},[t("stop",{"stop-color":"rgba(var(--color-primary-500), var(--tw-text-opacity))"}),t("stop",{offset:"1","stop-color":"rgba(var(--color-primary-400), var(--tw-text-opacity))"})])],-1),G=[z,A];function H(o,a){return e(),i("svg",U,G)}const R=r(P,[["render",H]]),j={class:"grid h-screen grid-cols-12 overflow-y-hidden bg-gray-100"},F={class:"flex items-center justify-center w-full max-w-sm col-span-12 p-4 mx-auto text-gray-900 md:p-8 md:col-span-6 lg:col-span-4 flex-2 md:pb-48 md:pt-40"},T={class:"w-full"},X=["src"],Y={class:"pt-24 mt-0 text-sm not-italic font-medium leading-relaxed text-left text-gray-400 md:pt-40"},q={class:"mb-3"},J={class:"relative flex-col items-center justify-center hidden w-full h-full pl-10 bg-no-repeat bg-cover md:col-span-6 lg:col-span-8 md:flex content-box overflow-hidden"},K={class:"md:pl-10 xl:pl-0 relative z-50 w-7/12 xl:w-5/12 xl:w-5/12"},Q={class:"hidden mb-3 text-3xl leading-normal text-left text-white xl:text-5xl xl:leading-tight md:none lg:block"},W={class:"hidden text-sm not-italic font-normal leading-normal text-left text-gray-100 xl:text-base xl:leading-6 md:none lg:block"},a1={__name:"LayoutLogin",setup(o){const a=s(()=>window.login_page_heading?window.login_page_heading:"Simple Invoicing for Individuals Small Businesses"),p=s(()=>window.login_page_description?window.login_page_description:"InvoiceShelf helps you track expenses, record payments & generate beautiful invoices & estimates."),d=s(()=>window.copyright_text?window.copyright_text:"Copyright @ IDEOLOGIX MEDIA DOOEL."),c=s(()=>window.login_page_logo?window.login_page_logo:!1);return(t1,e1)=>{const h=f("router-view");return e(),i("div",j,[l(C),t("div",F,[t("div",T,[c.value?(e(),i("img",{key:1,src:c.value,class:"block w-48 h-auto max-w-full mb-32 text-primary-500"},null,8,X)):(e(),g(m,{key:0,class:"block w-48 h-auto max-w-full mb-32 text-primary-500"})),l(h),t("div",Y,[t("p",q,n(d.value)+" "+n(new Date().getFullYear()),1)])])]),t("div",J,[l($,{class:"absolute h-full w-full"}),l(O,{class:"absolute z-10 top-0 right-0 h-[300px] w-[420px]"}),l(R,{class:"absolute h-full w-full right-[7.5%]"}),t("div",K,[t("h1",Q,n(a.value),1),t("p",W,n(p.value),1)]),l(E,{class:"absolute z-50 w-full bg-no-repeat content-bottom h-[15vw] lg:h-[22vw] right-[32%] bottom-0"})])])}}};export{a1 as default}; +import{N as C}from"./NotificationRoot-3GhaCSMI.js";import{Z as r,o as e,c as i,b as t,$ as _,k as s,r as f,a as l,m as g,t as n,_ as m}from"./main-pPEsZPea.js";const w={},u={viewBox:"0 0 1012 1023",fill:"none",xmlns:"http://www.w3.org/2000/svg",preserveAspectRatio:"none",class:"text-primary-500"},y=t("path",{d:"M116.21 472.5C55.1239 693.5 78.5219 837.5 114.349 1023H1030.5V-1L0 -106C147.5 21.5 172.311 269.536 116.21 472.5Z",fill:"url(#paint0_linear)"},null,-1),x=t("defs",null,[t("linearGradient",{id:"paint0_linear",x1:"515.25",y1:"-106",x2:"515.25",y2:"1023",gradientUnits:"userSpaceOnUse"},[t("stop",{"stop-color":"rgba(var(--color-primary-500), var(--tw-text-opacity))"}),t("stop",{offset:"1","stop-color":"rgba(var(--color-primary-400), var(--tw-text-opacity))"})])],-1),v=[y,x];function b(o,a){return e(),i("svg",u,v)}const $=r(w,[["render",b]]),M={},Z={width:"422",height:"290",viewBox:"0 0 422 290",fill:"none",xmlns:"http://www.w3.org/2000/svg"},L=_('',2),k=[L];function B(o,a){return e(),i("svg",Z,k)}const O=r(M,[["render",B]]),S={},D={viewBox:"0 0 1170 20",fill:"none",xmlns:"http://www.w3.org/2000/svg"},I=t("path",{d:"M690 4.08004C518 -9.91998 231 4.08004 -6 176.361L231 197.08L1170 219.08C1113.33 175.747 909.275 21.928 690 4.08004Z",fill:"white","fill-opacity":"0.1"},null,-1),V=[I];function N(o,a){return e(),i("svg",D,V)}const E=r(S,[["render",N]]),P={},U={width:"1122",height:"1017",viewBox:"0 0 1122 1017",preserveAspectRatio:"none",fill:"none",xmlns:"http://www.w3.org/2000/svg"},z=t("path",{d:"M226.002 466.5C164.935 687.5 188.326 831.5 224.141 1017H1140V-7L0 -109.5C142.5 -7.5 282.085 263.536 226.002 466.5Z",fill:"url(#paint0_linear)","fill-opacity":"0.1"},null,-1),A=t("defs",null,[t("linearGradient",{id:"paint0_linear",x1:"649.5",y1:"-7",x2:"649.5",y2:"1017",gradientUnits:"userSpaceOnUse"},[t("stop",{"stop-color":"rgba(var(--color-primary-500), var(--tw-text-opacity))"}),t("stop",{offset:"1","stop-color":"rgba(var(--color-primary-400), var(--tw-text-opacity))"})])],-1),G=[z,A];function H(o,a){return e(),i("svg",U,G)}const R=r(P,[["render",H]]),j={class:"grid h-screen grid-cols-12 overflow-y-hidden bg-gray-100"},F={class:"flex items-center justify-center w-full max-w-sm col-span-12 p-4 mx-auto text-gray-900 md:p-8 md:col-span-6 lg:col-span-4 flex-2 md:pb-48 md:pt-40"},T={class:"w-full"},X=["src"],Y={class:"pt-24 mt-0 text-sm not-italic font-medium leading-relaxed text-left text-gray-400 md:pt-40"},q={class:"mb-3"},J={class:"relative flex-col items-center justify-center hidden w-full h-full pl-10 bg-no-repeat bg-cover md:col-span-6 lg:col-span-8 md:flex content-box overflow-hidden"},K={class:"md:pl-10 xl:pl-0 relative z-50 w-7/12 xl:w-5/12 xl:w-5/12"},Q={class:"hidden mb-3 text-3xl leading-normal text-left text-white xl:text-5xl xl:leading-tight md:none lg:block"},W={class:"hidden text-sm not-italic font-normal leading-normal text-left text-gray-100 xl:text-base xl:leading-6 md:none lg:block"},a1={__name:"LayoutLogin",setup(o){const a=s(()=>window.login_page_heading?window.login_page_heading:"Simple Invoicing for Individuals Small Businesses"),p=s(()=>window.login_page_description?window.login_page_description:"InvoiceShelf helps you track expenses, record payments & generate beautiful invoices & estimates."),d=s(()=>window.copyright_text?window.copyright_text:"Copyright @ IDEOLOGIX MEDIA DOOEL."),c=s(()=>window.login_page_logo?window.login_page_logo:!1);return(t1,e1)=>{const h=f("router-view");return e(),i("div",j,[l(C),t("div",F,[t("div",T,[c.value?(e(),i("img",{key:1,src:c.value,class:"block w-48 h-auto max-w-full mb-32 text-primary-500"},null,8,X)):(e(),g(m,{key:0,class:"block w-48 h-auto max-w-full mb-32 text-primary-500"})),l(h),t("div",Y,[t("p",q,n(d.value)+" "+n(new Date().getFullYear()),1)])])]),t("div",J,[l($,{class:"absolute h-full w-full"}),l(O,{class:"absolute z-10 top-0 right-0 h-[300px] w-[420px]"}),l(R,{class:"absolute h-full w-full right-[7.5%]"}),t("div",K,[t("h1",Q,n(a.value),1),t("p",W,n(p.value),1)]),l(E,{class:"absolute z-50 w-full bg-no-repeat content-bottom h-[15vw] lg:h-[22vw] right-[32%] bottom-0"})])])}}};export{a1 as default}; diff --git a/public/build/assets/LineChart-wDTzU--w.js b/public/build/assets/LineChart-4aRzOagk.js similarity index 99% rename from public/build/assets/LineChart-wDTzU--w.js rename to public/build/assets/LineChart-4aRzOagk.js index abd9d20a..7fdc2678 100644 --- a/public/build/assets/LineChart-wDTzU--w.js +++ b/public/build/assets/LineChart-4aRzOagk.js @@ -1,4 +1,4 @@ -import{aj as Zi,ak as Ji,al as Qi,am as eo,a5 as to,f as ro,E as ao,k as no,an as io,Y as oo,H as ea,o as so,c as lo,b as uo}from"./main-B9dpPbRR.js";var ta={exports:{}};const fo=Zi(Ji);/*! +import{aj as Zi,ak as Ji,al as Qi,am as eo,a5 as to,f as ro,E as ao,k as no,an as io,Y as oo,H as ea,o as so,c as lo,b as uo}from"./main-pPEsZPea.js";var ta={exports:{}};const fo=Zi(Ji);/*! * Chart.js v2.9.4 * https://www.chartjs.org * (c) 2020 Chart.js Contributors diff --git a/public/build/assets/LoadingIcon-eCpWurti.js b/public/build/assets/LoadingIcon-EteEuBl4.js similarity index 87% rename from public/build/assets/LoadingIcon-eCpWurti.js rename to public/build/assets/LoadingIcon-EteEuBl4.js index 177d2a62..17996cb0 100644 --- a/public/build/assets/LoadingIcon-eCpWurti.js +++ b/public/build/assets/LoadingIcon-EteEuBl4.js @@ -1 +1 @@ -import{Z as c,o as t,c as e,b as o}from"./main-B9dpPbRR.js";const s={},n={xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24"},r=o("circle",{class:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor","stroke-width":"4"},null,-1),l=o("path",{class:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"},null,-1),a=[r,l];function _(i,d){return t(),e("svg",n,a)}const p=c(s,[["render",_]]);export{p as L}; +import{Z as c,o as t,c as e,b as o}from"./main-pPEsZPea.js";const s={},n={xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24"},r=o("circle",{class:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor","stroke-width":"4"},null,-1),l=o("path",{class:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"},null,-1),a=[r,l];function _(i,d){return t(),e("svg",n,a)}const p=c(s,[["render",_]]);export{p as L}; diff --git a/public/build/assets/Login-qSnFzhLI.js b/public/build/assets/Login-7v6FLB8k.js similarity index 97% rename from public/build/assets/Login-qSnFzhLI.js rename to public/build/assets/Login-7v6FLB8k.js index 813abac1..8453465e 100644 --- a/public/build/assets/Login-qSnFzhLI.js +++ b/public/build/assets/Login-7v6FLB8k.js @@ -1 +1 @@ -import{u as N,d as M,v as E,e as L,f as w,g as p,h as $,i as j,j as G,k as y,r as l,o as c,c as R,a as n,w as u,l as e,m as _,n as B,b,p as I,t as h,q as T,s as U}from"./main-B9dpPbRR.js";const A={class:"mt-5 mb-8"},F={class:"mb-4"},z={__name:"Login",setup(O){const k=N(),s=M(),{t:m}=E.useI18n(),V=L(),d=w(!1);let o=w(!1);const q={email:{required:p.withMessage(m("validation.required"),$),email:p.withMessage(m("validation.email_incorrect"),j)},password:{required:p.withMessage(m("validation.required"),$)}},t=G(q,y(()=>s.loginData)),x=y(()=>o.value?"text":"password");async function S(){if(U.defaults.withCredentials=!0,t.value.$touch(),t.value.$invalid)return!0;d.value=!0;try{d.value=!0,await s.login(s.loginData),V.push("/admin/dashboard"),k.showNotification({type:"success",message:"Logged in successfully."})}catch{d.value=!1}}return(i,a)=>{const g=l("BaseInput"),f=l("BaseInputGroup"),v=l("BaseIcon"),D=l("router-link"),C=l("BaseButton");return c(),R("form",{id:"loginForm",class:"mt-12 text-left",onSubmit:T(S,["prevent"])},[n(f,{error:e(t).email.$error&&e(t).email.$errors[0].$message,label:i.$t("login.email"),class:"mb-4",required:""},{default:u(()=>[n(g,{modelValue:e(s).loginData.email,"onUpdate:modelValue":a[0]||(a[0]=r=>e(s).loginData.email=r),invalid:e(t).email.$error,focus:"",type:"email",name:"email",onInput:a[1]||(a[1]=r=>e(t).email.$touch())},null,8,["modelValue","invalid"])]),_:1},8,["error","label"]),n(f,{error:e(t).password.$error&&e(t).password.$errors[0].$message,label:i.$t("login.password"),class:"mb-4",required:""},{default:u(()=>[n(g,{modelValue:e(s).loginData.password,"onUpdate:modelValue":a[4]||(a[4]=r=>e(s).loginData.password=r),invalid:e(t).password.$error,type:x.value,name:"password",onInput:a[5]||(a[5]=r=>e(t).password.$touch())},{right:u(()=>[e(o)?(c(),_(v,{key:0,name:"EyeOffIcon",class:"w-5 h-5 mr-1 text-gray-500 cursor-pointer",onClick:a[2]||(a[2]=r=>B(o)?o.value=!e(o):o=!e(o))})):(c(),_(v,{key:1,name:"EyeIcon",class:"w-5 h-5 mr-1 text-gray-500 cursor-pointer",onClick:a[3]||(a[3]=r=>B(o)?o.value=!e(o):o=!e(o))}))]),_:1},8,["modelValue","invalid","type"])]),_:1},8,["error","label"]),b("div",A,[b("div",F,[n(D,{to:"forgot-password",class:"text-sm text-primary-400 hover:text-gray-700"},{default:u(()=>[I(h(i.$t("login.forgot_password")),1)]),_:1})])]),n(C,{loading:d.value,type:"submit"},{default:u(()=>[I(h(i.$t("login.login")),1)]),_:1},8,["loading"])],32)}}};export{z as default}; +import{u as N,d as M,v as E,e as L,f as w,g as p,h as $,i as j,j as G,k as y,r as l,o as c,c as R,a as n,w as u,l as e,m as _,n as B,b,p as I,t as h,q as T,s as U}from"./main-pPEsZPea.js";const A={class:"mt-5 mb-8"},F={class:"mb-4"},z={__name:"Login",setup(O){const k=N(),s=M(),{t:m}=E.useI18n(),V=L(),d=w(!1);let o=w(!1);const q={email:{required:p.withMessage(m("validation.required"),$),email:p.withMessage(m("validation.email_incorrect"),j)},password:{required:p.withMessage(m("validation.required"),$)}},t=G(q,y(()=>s.loginData)),x=y(()=>o.value?"text":"password");async function S(){if(U.defaults.withCredentials=!0,t.value.$touch(),t.value.$invalid)return!0;d.value=!0;try{d.value=!0,await s.login(s.loginData),V.push("/admin/dashboard"),k.showNotification({type:"success",message:"Logged in successfully."})}catch{d.value=!1}}return(i,a)=>{const g=l("BaseInput"),f=l("BaseInputGroup"),v=l("BaseIcon"),D=l("router-link"),C=l("BaseButton");return c(),R("form",{id:"loginForm",class:"mt-12 text-left",onSubmit:T(S,["prevent"])},[n(f,{error:e(t).email.$error&&e(t).email.$errors[0].$message,label:i.$t("login.email"),class:"mb-4",required:""},{default:u(()=>[n(g,{modelValue:e(s).loginData.email,"onUpdate:modelValue":a[0]||(a[0]=r=>e(s).loginData.email=r),invalid:e(t).email.$error,focus:"",type:"email",name:"email",onInput:a[1]||(a[1]=r=>e(t).email.$touch())},null,8,["modelValue","invalid"])]),_:1},8,["error","label"]),n(f,{error:e(t).password.$error&&e(t).password.$errors[0].$message,label:i.$t("login.password"),class:"mb-4",required:""},{default:u(()=>[n(g,{modelValue:e(s).loginData.password,"onUpdate:modelValue":a[4]||(a[4]=r=>e(s).loginData.password=r),invalid:e(t).password.$error,type:x.value,name:"password",onInput:a[5]||(a[5]=r=>e(t).password.$touch())},{right:u(()=>[e(o)?(c(),_(v,{key:0,name:"EyeOffIcon",class:"w-5 h-5 mr-1 text-gray-500 cursor-pointer",onClick:a[2]||(a[2]=r=>B(o)?o.value=!e(o):o=!e(o))})):(c(),_(v,{key:1,name:"EyeIcon",class:"w-5 h-5 mr-1 text-gray-500 cursor-pointer",onClick:a[3]||(a[3]=r=>B(o)?o.value=!e(o):o=!e(o))}))]),_:1},8,["modelValue","invalid","type"])]),_:1},8,["error","label"]),b("div",A,[b("div",F,[n(D,{to:"forgot-password",class:"text-sm text-primary-400 hover:text-gray-700"},{default:u(()=>[I(h(i.$t("login.forgot_password")),1)]),_:1})])]),n(C,{loading:d.value,type:"submit"},{default:u(()=>[I(h(i.$t("login.login")),1)]),_:1},8,["loading"])],32)}}};export{z as default}; diff --git a/public/build/assets/Login-iQufiED6.js b/public/build/assets/Login-InQE2fqP.js similarity index 95% rename from public/build/assets/Login-iQufiED6.js rename to public/build/assets/Login-InQE2fqP.js index 83b50be9..3d56bae7 100644 --- a/public/build/assets/Login-iQufiED6.js +++ b/public/build/assets/Login-InQE2fqP.js @@ -1 +1 @@ -import{e as C,L as j,v as L,f as w,k as $,j as M,r as d,o as c,c as E,a as r,w as i,l as e,m as y,b as D,p as B,t as b,J as N,q as T,g,h as I,i as G}from"./main-B9dpPbRR.js";import{u as O}from"./auth-6FPSPboo.js";const P={class:"flex items-center justify-between"},A={__name:"Login",setup(R){const _=C(),k=j(),s=O(),{t:m}=L.useI18n();let u=w(!1);const l=w(!1),h=$(()=>l.value?"text":"password"),V=$(()=>({loginData:{email:{required:g.withMessage(m("validation.required"),I),email:g.withMessage(m("validation.email_incorrect"),G)},password:{required:g.withMessage(m("validation.required"),I)}}})),o=M(V,s);async function q(){if(o.value.loginData.$touch(),o.value.loginData.$invalid)return!0;u.value=!0;let n={...s.loginData,company:k.params.company};try{return await s.login(n),u.value=!1,_.push({name:"customer.dashboard"});s.$reset()}catch{u.value=!1}}return(n,a)=>{const v=d("BaseInput"),f=d("BaseInputGroup"),p=d("BaseIcon"),x=d("router-link"),S=d("BaseButton");return c(),E("form",{id:"loginForm",class:"space-y-6",action:"#",method:"POST",onSubmit:T(q,["prevent"])},[r(f,{error:e(o).loginData.email.$error&&e(o).loginData.email.$errors[0].$message,label:n.$t("login.email"),class:"mb-4",required:""},{default:i(()=>[r(v,{modelValue:e(s).loginData.email,"onUpdate:modelValue":a[0]||(a[0]=t=>e(s).loginData.email=t),type:"email",invalid:e(o).loginData.email.$error,onInput:a[1]||(a[1]=t=>e(o).loginData.email.$touch())},null,8,["modelValue","invalid"])]),_:1},8,["error","label"]),r(f,{error:e(o).loginData.password.$error&&e(o).loginData.password.$errors[0].$message,label:n.$t("login.password"),class:"mb-4",required:""},{default:i(()=>[r(v,{modelValue:e(s).loginData.password,"onUpdate:modelValue":a[4]||(a[4]=t=>e(s).loginData.password=t),type:h.value,invalid:e(o).loginData.password.$error,onInput:a[5]||(a[5]=t=>e(o).loginData.password.$touch())},{right:i(()=>[l.value?(c(),y(p,{key:0,name:"EyeOffIcon",class:"w-5 h-5 mr-1 text-gray-500 cursor-pointer",onClick:a[2]||(a[2]=t=>l.value=!l.value)})):(c(),y(p,{key:1,name:"EyeIcon",class:"w-5 h-5 mr-1 text-gray-500 cursor-pointer",onClick:a[3]||(a[3]=t=>l.value=!l.value)}))]),_:1},8,["modelValue","type","invalid"])]),_:1},8,["error","label"]),D("div",P,[r(x,{to:{name:"customer.forgot-password"},class:"text-sm text-primary-600 hover:text-gray-500"},{default:i(()=>[B(b(n.$t("login.forgot_password")),1)]),_:1},8,["to"])]),D("div",null,[r(S,{loading:e(u),disabled:e(u),type:"submit",class:"w-full justify-center"},{left:i(t=>[r(p,{name:"LockClosedIcon",class:N(t.class)},null,8,["class"])]),default:i(()=>[B(" "+b(n.$t("login.login")),1)]),_:1},8,["loading","disabled"])])],32)}}};export{A as default}; +import{e as C,L as j,v as L,f as w,k as $,j as M,r as d,o as c,c as E,a as r,w as i,l as e,m as y,b as D,p as B,t as b,J as N,q as T,g,h as I,i as G}from"./main-pPEsZPea.js";import{u as O}from"./auth-mYHkZCAB.js";const P={class:"flex items-center justify-between"},A={__name:"Login",setup(R){const _=C(),k=j(),s=O(),{t:m}=L.useI18n();let u=w(!1);const l=w(!1),h=$(()=>l.value?"text":"password"),V=$(()=>({loginData:{email:{required:g.withMessage(m("validation.required"),I),email:g.withMessage(m("validation.email_incorrect"),G)},password:{required:g.withMessage(m("validation.required"),I)}}})),o=M(V,s);async function q(){if(o.value.loginData.$touch(),o.value.loginData.$invalid)return!0;u.value=!0;let n={...s.loginData,company:k.params.company};try{return await s.login(n),u.value=!1,_.push({name:"customer.dashboard"});s.$reset()}catch{u.value=!1}}return(n,a)=>{const v=d("BaseInput"),f=d("BaseInputGroup"),p=d("BaseIcon"),x=d("router-link"),S=d("BaseButton");return c(),E("form",{id:"loginForm",class:"space-y-6",action:"#",method:"POST",onSubmit:T(q,["prevent"])},[r(f,{error:e(o).loginData.email.$error&&e(o).loginData.email.$errors[0].$message,label:n.$t("login.email"),class:"mb-4",required:""},{default:i(()=>[r(v,{modelValue:e(s).loginData.email,"onUpdate:modelValue":a[0]||(a[0]=t=>e(s).loginData.email=t),type:"email",invalid:e(o).loginData.email.$error,onInput:a[1]||(a[1]=t=>e(o).loginData.email.$touch())},null,8,["modelValue","invalid"])]),_:1},8,["error","label"]),r(f,{error:e(o).loginData.password.$error&&e(o).loginData.password.$errors[0].$message,label:n.$t("login.password"),class:"mb-4",required:""},{default:i(()=>[r(v,{modelValue:e(s).loginData.password,"onUpdate:modelValue":a[4]||(a[4]=t=>e(s).loginData.password=t),type:h.value,invalid:e(o).loginData.password.$error,onInput:a[5]||(a[5]=t=>e(o).loginData.password.$touch())},{right:i(()=>[l.value?(c(),y(p,{key:0,name:"EyeOffIcon",class:"w-5 h-5 mr-1 text-gray-500 cursor-pointer",onClick:a[2]||(a[2]=t=>l.value=!l.value)})):(c(),y(p,{key:1,name:"EyeIcon",class:"w-5 h-5 mr-1 text-gray-500 cursor-pointer",onClick:a[3]||(a[3]=t=>l.value=!l.value)}))]),_:1},8,["modelValue","type","invalid"])]),_:1},8,["error","label"]),D("div",P,[r(x,{to:{name:"customer.forgot-password"},class:"text-sm text-primary-600 hover:text-gray-500"},{default:i(()=>[B(b(n.$t("login.forgot_password")),1)]),_:1},8,["to"])]),D("div",null,[r(S,{loading:e(u),disabled:e(u),type:"submit",class:"w-full justify-center"},{left:i(t=>[r(p,{name:"LockClosedIcon",class:N(t.class)},null,8,["class"])]),default:i(()=>[B(" "+b(n.$t("login.login")),1)]),_:1},8,["loading","disabled"])])],32)}}};export{A as default}; diff --git a/public/build/assets/MailConfigSetting-cbiuQ4Mn.js b/public/build/assets/MailConfigSetting--Zfu5UwD.js similarity index 99% rename from public/build/assets/MailConfigSetting-cbiuQ4Mn.js rename to public/build/assets/MailConfigSetting--Zfu5UwD.js index bcb713d9..bfb1f7d2 100644 --- a/public/build/assets/MailConfigSetting-cbiuQ4Mn.js +++ b/public/build/assets/MailConfigSetting--Zfu5UwD.js @@ -1 +1 @@ -import{v as T,f as j,H as J,k as V,g as f,h as I,ar as Y,i as x,j as P,Y as L,r as c,o as B,c as G,a as o,w as s,l as e,m as w,n as O,b as S,J as N,K as E,p as k,t as U,a2 as H,q as z,F as Q,ai as K,a3 as W,N as Z}from"./main-B9dpPbRR.js";import{u as A}from"./mail-driver-L7_iQECX.js";const ee={class:"flex my-10"},R={__name:"SmtpMailDriver",props:{configData:{type:Object,require:!0,default:Object},isSaving:{type:Boolean,require:!0,default:!1},isFetchingInitialData:{type:Boolean,require:!0,default:!1},mailDrivers:{type:Array,require:!0,default:Array}},emits:["submit-data","on-change-driver"],setup(i,{emit:h}){const $=i,v=h,n=A(),{t:u}=T.useI18n();let m=j(!1);const _=J(["tls","ssl","starttls"]),b=V(()=>m.value?"text":"password"),l=V(()=>({smtpConfig:{mail_driver:{required:f.withMessage(u("validation.required"),I)},mail_host:{required:f.withMessage(u("validation.required"),I)},mail_port:{required:f.withMessage(u("validation.required"),I),numeric:f.withMessage(u("validation.numbers_only"),Y)},mail_encryption:{required:f.withMessage(u("validation.required"),I)},from_mail:{required:f.withMessage(u("validation.required"),I),email:f.withMessage(u("validation.email_incorrect"),x)},from_name:{required:f.withMessage(u("validation.required"),I)}}})),d=P(l,V(()=>n));L(()=>{for(const a in n.smtpConfig)$.configData.hasOwnProperty(a)&&(n.smtpConfig[a]=$.configData[a])});async function g(){return d.value.smtpConfig.$touch(),d.value.smtpConfig.$invalid||v("submit-data",n.smtpConfig),!1}function p(){d.value.smtpConfig.mail_driver.$touch(),v("on-change-driver",n.smtpConfig.mail_driver)}return(a,t)=>{const q=c("BaseMultiselect"),C=c("BaseInputGroup"),D=c("BaseInput"),M=c("BaseIcon"),F=c("BaseInputGrid"),y=c("BaseButton");return B(),G("form",{onSubmit:z(g,["prevent"])},[o(F,null,{default:s(()=>[o(C,{label:a.$t("settings.mail.driver"),"content-loading":i.isFetchingInitialData,error:e(d).smtpConfig.mail_driver.$error&&e(d).smtpConfig.mail_driver.$errors[0].$message,required:""},{default:s(()=>[o(q,{modelValue:e(n).smtpConfig.mail_driver,"onUpdate:modelValue":[t[0]||(t[0]=r=>e(n).smtpConfig.mail_driver=r),p],"content-loading":i.isFetchingInitialData,options:i.mailDrivers,"can-deselect":!1,invalid:e(d).smtpConfig.mail_driver.$error},null,8,["modelValue","content-loading","options","invalid"])]),_:1},8,["label","content-loading","error"]),o(C,{label:a.$t("settings.mail.host"),"content-loading":i.isFetchingInitialData,error:e(d).smtpConfig.mail_host.$error&&e(d).smtpConfig.mail_host.$errors[0].$message,required:""},{default:s(()=>[o(D,{modelValue:e(n).smtpConfig.mail_host,"onUpdate:modelValue":t[1]||(t[1]=r=>e(n).smtpConfig.mail_host=r),modelModifiers:{trim:!0},"content-loading":i.isFetchingInitialData,type:"text",name:"mail_host",invalid:e(d).smtpConfig.mail_host.$error,onInput:t[2]||(t[2]=r=>e(d).smtpConfig.mail_host.$touch())},null,8,["modelValue","content-loading","invalid"])]),_:1},8,["label","content-loading","error"]),o(C,{"content-loading":i.isFetchingInitialData,label:a.$t("settings.mail.username")},{default:s(()=>[o(D,{modelValue:e(n).smtpConfig.mail_username,"onUpdate:modelValue":t[3]||(t[3]=r=>e(n).smtpConfig.mail_username=r),modelModifiers:{trim:!0},"content-loading":i.isFetchingInitialData,type:"text",name:"db_name"},null,8,["modelValue","content-loading"])]),_:1},8,["content-loading","label"]),o(C,{"content-loading":i.isFetchingInitialData,label:a.$t("settings.mail.password")},{default:s(()=>[o(D,{modelValue:e(n).smtpConfig.mail_password,"onUpdate:modelValue":t[6]||(t[6]=r=>e(n).smtpConfig.mail_password=r),modelModifiers:{trim:!0},"content-loading":i.isFetchingInitialData,type:b.value,name:"password"},{right:s(()=>[e(m)?(B(),w(M,{key:0,class:"mr-1 text-gray-500 cursor-pointer",name:"EyeOffIcon",onClick:t[4]||(t[4]=r=>O(m)?m.value=!e(m):m=!e(m))})):(B(),w(M,{key:1,class:"mr-1 text-gray-500 cursor-pointer",name:"EyeIcon",onClick:t[5]||(t[5]=r=>O(m)?m.value=!e(m):m=!e(m))}))]),_:1},8,["modelValue","content-loading","type"])]),_:1},8,["content-loading","label"]),o(C,{label:a.$t("settings.mail.port"),"content-loading":i.isFetchingInitialData,error:e(d).smtpConfig.mail_port.$error&&e(d).smtpConfig.mail_port.$errors[0].$message,required:""},{default:s(()=>[o(D,{modelValue:e(n).smtpConfig.mail_port,"onUpdate:modelValue":t[7]||(t[7]=r=>e(n).smtpConfig.mail_port=r),modelModifiers:{trim:!0},"content-loading":i.isFetchingInitialData,type:"text",name:"mail_port",invalid:e(d).smtpConfig.mail_port.$error,onInput:t[8]||(t[8]=r=>e(d).smtpConfig.mail_port.$touch())},null,8,["modelValue","content-loading","invalid"])]),_:1},8,["label","content-loading","error"]),o(C,{label:a.$t("settings.mail.encryption"),"content-loading":i.isFetchingInitialData,error:e(d).smtpConfig.mail_encryption.$error&&e(d).smtpConfig.mail_encryption.$errors[0].$message,required:""},{default:s(()=>[o(q,{modelValue:e(n).smtpConfig.mail_encryption,"onUpdate:modelValue":t[9]||(t[9]=r=>e(n).smtpConfig.mail_encryption=r),modelModifiers:{trim:!0},"content-loading":i.isFetchingInitialData,options:_,searchable:!0,"show-labels":!1,placeholder:"Select option",invalid:e(d).smtpConfig.mail_encryption.$error,onInput:t[10]||(t[10]=r=>e(d).smtpConfig.mail_encryption.$touch())},null,8,["modelValue","content-loading","options","invalid"])]),_:1},8,["label","content-loading","error"]),o(C,{label:a.$t("settings.mail.from_mail"),"content-loading":i.isFetchingInitialData,error:e(d).smtpConfig.from_mail.$error&&e(d).smtpConfig.from_mail.$errors[0].$message,required:""},{default:s(()=>[o(D,{modelValue:e(n).smtpConfig.from_mail,"onUpdate:modelValue":t[11]||(t[11]=r=>e(n).smtpConfig.from_mail=r),modelModifiers:{trim:!0},"content-loading":i.isFetchingInitialData,type:"text",name:"from_mail",invalid:e(d).smtpConfig.from_mail.$error,onInput:t[12]||(t[12]=r=>e(d).smtpConfig.from_mail.$touch())},null,8,["modelValue","content-loading","invalid"])]),_:1},8,["label","content-loading","error"]),o(C,{label:a.$t("settings.mail.from_name"),"content-loading":i.isFetchingInitialData,error:e(d).smtpConfig.from_name.$error&&e(d).smtpConfig.from_name.$errors[0].$message,required:""},{default:s(()=>[o(D,{modelValue:e(n).smtpConfig.from_name,"onUpdate:modelValue":t[13]||(t[13]=r=>e(n).smtpConfig.from_name=r),modelModifiers:{trim:!0},"content-loading":i.isFetchingInitialData,type:"text",name:"from_name",invalid:e(d).smtpConfig.from_name.$error,onInput:t[14]||(t[14]=r=>e(d).smtpConfig.from_name.$touch())},null,8,["modelValue","content-loading","invalid"])]),_:1},8,["label","content-loading","error"])]),_:1}),S("div",ee,[o(y,{disabled:i.isSaving,"content-loading":i.isFetchingInitialData,loading:i.isSaving,type:"submit",variant:"primary"},{left:s(r=>[i.isSaving?E("",!0):(B(),w(M,{key:0,name:"SaveIcon",class:N(r.class)},null,8,["class"]))]),default:s(()=>[k(" "+U(a.$t("general.save")),1)]),_:1},8,["disabled","content-loading","loading"]),H(a.$slots,"default")])],32)}}},ie={class:"flex my-10"},ne={__name:"MailgunMailDriver",props:{configData:{type:Object,require:!0,default:Object},isSaving:{type:Boolean,require:!0,default:!1},isFetchingInitialData:{type:Boolean,require:!0,default:!1},mailDrivers:{type:Array,require:!0,default:Array}},emits:["submit-data","on-change-driver"],setup(i,{emit:h}){const $=i,v=h,n=A(),{t:u}=T.useI18n();let m=j(!1);const _=V(()=>m.value?"text":"password"),b=V(()=>({mailgunConfig:{mail_driver:{required:f.withMessage(u("validation.required"),I)},mail_mailgun_domain:{required:f.withMessage(u("validation.required"),I)},mail_mailgun_endpoint:{required:f.withMessage(u("validation.required"),I)},mail_mailgun_secret:{required:f.withMessage(u("validation.required"),I)},from_mail:{required:f.withMessage(u("validation.required"),I),email:x},from_name:{required:f.withMessage(u("validation.required"),I)}}})),l=P(b,V(()=>n));L(()=>{for(const p in n.mailgunConfig)$.configData.hasOwnProperty(p)&&(n.mailgunConfig[p]=$.configData[p])});async function d(){return l.value.mailgunConfig.$touch(),l.value.mailgunConfig.$invalid||v("submit-data",n.mailgunConfig),!1}function g(){l.value.mailgunConfig.mail_driver.$touch(),v("on-change-driver",n.mailgunConfig.mail_driver)}return(p,a)=>{const t=c("BaseMultiselect"),q=c("BaseInputGroup"),C=c("BaseInput"),D=c("BaseIcon"),M=c("BaseInputGrid"),F=c("BaseButton");return B(),G("form",{onSubmit:z(d,["prevent"])},[o(M,null,{default:s(()=>[o(q,{label:p.$t("settings.mail.driver"),"content-loading":i.isFetchingInitialData,error:e(l).mailgunConfig.mail_driver.$error&&e(l).mailgunConfig.mail_driver.$errors[0].$message,required:""},{default:s(()=>[o(t,{modelValue:e(n).mailgunConfig.mail_driver,"onUpdate:modelValue":[a[0]||(a[0]=y=>e(n).mailgunConfig.mail_driver=y),g],"content-loading":i.isFetchingInitialData,options:i.mailDrivers,"can-deselect":!1,invalid:e(l).mailgunConfig.mail_driver.$error},null,8,["modelValue","content-loading","options","invalid"])]),_:1},8,["label","content-loading","error"]),o(q,{label:p.$t("settings.mail.mailgun_domain"),"content-loading":i.isFetchingInitialData,error:e(l).mailgunConfig.mail_mailgun_domain.$error&&e(l).mailgunConfig.mail_mailgun_domain.$errors[0].$message,required:""},{default:s(()=>[o(C,{modelValue:e(n).mailgunConfig.mail_mailgun_domain,"onUpdate:modelValue":a[1]||(a[1]=y=>e(n).mailgunConfig.mail_mailgun_domain=y),modelModifiers:{trim:!0},"content-loading":i.isFetchingInitialData,type:"text",name:"mailgun_domain",invalid:e(l).mailgunConfig.mail_mailgun_domain.$error,onInput:a[2]||(a[2]=y=>e(l).mailgunConfig.mail_mailgun_domain.$touch())},null,8,["modelValue","content-loading","invalid"])]),_:1},8,["label","content-loading","error"]),o(q,{label:p.$t("settings.mail.mailgun_secret"),"content-loading":i.isFetchingInitialData,error:e(l).mailgunConfig.mail_mailgun_secret.$error&&e(l).mailgunConfig.mail_mailgun_secret.$errors[0].$message,required:""},{default:s(()=>[o(C,{modelValue:e(n).mailgunConfig.mail_mailgun_secret,"onUpdate:modelValue":a[5]||(a[5]=y=>e(n).mailgunConfig.mail_mailgun_secret=y),modelModifiers:{trim:!0},"content-loading":i.isFetchingInitialData,type:_.value,name:"mailgun_secret",autocomplete:"off",invalid:e(l).mailgunConfig.mail_mailgun_secret.$error,onInput:a[6]||(a[6]=y=>e(l).mailgunConfig.mail_mailgun_secret.$touch())},{right:s(()=>[e(m)?(B(),w(D,{key:0,class:"mr-1 text-gray-500 cursor-pointer",name:"EyeOffIcon",onClick:a[3]||(a[3]=y=>O(m)?m.value=!e(m):m=!e(m))})):(B(),w(D,{key:1,class:"mr-1 text-gray-500 cursor-pointer",name:"EyeIcon",onClick:a[4]||(a[4]=y=>O(m)?m.value=!e(m):m=!e(m))}))]),_:1},8,["modelValue","content-loading","type","invalid"])]),_:1},8,["label","content-loading","error"]),o(q,{label:p.$t("settings.mail.mailgun_endpoint"),"content-loading":i.isFetchingInitialData,error:e(l).mailgunConfig.mail_mailgun_endpoint.$error&&e(l).mailgunConfig.mail_mailgun_endpoint.$errors[0].$message,required:""},{default:s(()=>[o(C,{modelValue:e(n).mailgunConfig.mail_mailgun_endpoint,"onUpdate:modelValue":a[7]||(a[7]=y=>e(n).mailgunConfig.mail_mailgun_endpoint=y),modelModifiers:{trim:!0},"content-loading":i.isFetchingInitialData,type:"text",name:"mailgun_endpoint",invalid:e(l).mailgunConfig.mail_mailgun_endpoint.$error,onInput:a[8]||(a[8]=y=>e(l).mailgunConfig.mail_mailgun_endpoint.$touch())},null,8,["modelValue","content-loading","invalid"])]),_:1},8,["label","content-loading","error"]),o(q,{label:p.$t("settings.mail.from_mail"),"content-loading":i.isFetchingInitialData,error:e(l).mailgunConfig.from_mail.$error&&e(l).mailgunConfig.from_mail.$errors[0].$message,required:""},{default:s(()=>[o(C,{modelValue:e(n).mailgunConfig.from_mail,"onUpdate:modelValue":a[9]||(a[9]=y=>e(n).mailgunConfig.from_mail=y),modelModifiers:{trim:!0},"content-loading":i.isFetchingInitialData,type:"text",name:"from_mail",invalid:e(l).mailgunConfig.from_mail.$error,onInput:a[10]||(a[10]=y=>e(l).mailgunConfig.from_mail.$touch())},null,8,["modelValue","content-loading","invalid"])]),_:1},8,["label","content-loading","error"]),o(q,{label:p.$t("settings.mail.from_name"),"content-loading":i.isFetchingInitialData,error:e(l).mailgunConfig.from_name.$error&&e(l).mailgunConfig.from_name.$errors[0].$message,required:""},{default:s(()=>[o(C,{modelValue:e(n).mailgunConfig.from_name,"onUpdate:modelValue":a[11]||(a[11]=y=>e(n).mailgunConfig.from_name=y),modelModifiers:{trim:!0},"content-loading":i.isFetchingInitialData,type:"text",name:"from_name",invalid:e(l).mailgunConfig.from_name.$error,onInput:a[12]||(a[12]=y=>e(l).mailgunConfig.from_name.$touch())},null,8,["modelValue","content-loading","invalid"])]),_:1},8,["label","content-loading","error"])]),_:1}),S("div",ie,[o(F,{disabled:i.isSaving,"content-loading":i.isFetchingInitialData,loading:i.isSaving,variant:"primary",type:"submit"},{left:s(y=>[i.isSaving?E("",!0):(B(),w(D,{key:0,name:"SaveIcon",class:N(y.class)},null,8,["class"]))]),default:s(()=>[k(" "+U(p.$t("general.save")),1)]),_:1},8,["disabled","content-loading","loading"]),H(p.$slots,"default")])],32)}}},ae={class:"flex my-10"},te={__name:"SesMailDriver",props:{configData:{type:Object,require:!0,default:Object},isSaving:{type:Boolean,require:!0,default:!1},isFetchingInitialData:{type:Boolean,require:!0,default:!1},mailDrivers:{type:Array,require:!0,default:Array}},emits:["submit-data","on-change-driver"],setup(i,{emit:h}){const $=i,v=h,n=A(),{t:u}=T.useI18n();let m=j(!1);const _=J(["tls","ssl","starttls"]),b=V(()=>({sesConfig:{mail_driver:{required:f.withMessage(u("validation.required"),I)},mail_host:{required:f.withMessage(u("validation.required"),I)},mail_port:{required:f.withMessage(u("validation.required"),I),numeric:Y},mail_ses_key:{required:f.withMessage(u("validation.required"),I)},mail_ses_secret:{required:f.withMessage(u("validation.required"),I)},mail_encryption:{required:f.withMessage(u("validation.required"),I)},from_mail:{required:f.withMessage(u("validation.required"),I),email:f.withMessage(u("validation.email_incorrect"),x)},from_name:{required:f.withMessage(u("validation.required"),I)}}})),l=P(b,V(()=>n)),d=V(()=>m.value?"text":"password");L(()=>{for(const a in n.sesConfig)$.configData.hasOwnProperty(a)&&(n.sesConfig[a]=$.configData[a])});async function g(){return l.value.sesConfig.$touch(),l.value.sesConfig.$invalid||v("submit-data",n.sesConfig),!1}function p(){l.value.sesConfig.mail_driver.$touch(),v("on-change-driver",n.sesConfig.mail_driver)}return(a,t)=>{const q=c("BaseMultiselect"),C=c("BaseInputGroup"),D=c("BaseInput"),M=c("BaseIcon"),F=c("BaseInputGrid"),y=c("BaseButton");return B(),G("form",{onSubmit:z(g,["prevent"])},[o(F,null,{default:s(()=>[o(C,{label:a.$t("settings.mail.driver"),"content-loading":i.isFetchingInitialData,error:e(l).sesConfig.mail_driver.$error&&e(l).sesConfig.mail_driver.$errors[0].$message,required:""},{default:s(()=>[o(q,{modelValue:e(n).sesConfig.mail_driver,"onUpdate:modelValue":[t[0]||(t[0]=r=>e(n).sesConfig.mail_driver=r),p],"content-loading":i.isFetchingInitialData,options:i.mailDrivers,"can-deselect":!1,invalid:e(l).sesConfig.mail_driver.$error},null,8,["modelValue","content-loading","options","invalid"])]),_:1},8,["label","content-loading","error"]),o(C,{label:a.$t("settings.mail.host"),"content-loading":i.isFetchingInitialData,error:e(l).sesConfig.mail_host.$error&&e(l).sesConfig.mail_host.$errors[0].$message,required:""},{default:s(()=>[o(D,{modelValue:e(n).sesConfig.mail_host,"onUpdate:modelValue":t[1]||(t[1]=r=>e(n).sesConfig.mail_host=r),modelModifiers:{trim:!0},"content-loading":i.isFetchingInitialData,type:"text",name:"mail_host",invalid:e(l).sesConfig.mail_host.$error,onInput:t[2]||(t[2]=r=>e(l).sesConfig.mail_host.$touch())},null,8,["modelValue","content-loading","invalid"])]),_:1},8,["label","content-loading","error"]),o(C,{label:a.$t("settings.mail.port"),"content-loading":i.isFetchingInitialData,error:e(l).sesConfig.mail_port.$error&&e(l).sesConfig.mail_port.$errors[0].$message,required:""},{default:s(()=>[o(D,{modelValue:e(n).sesConfig.mail_port,"onUpdate:modelValue":t[3]||(t[3]=r=>e(n).sesConfig.mail_port=r),modelModifiers:{trim:!0},"content-loading":i.isFetchingInitialData,type:"text",name:"mail_port",invalid:e(l).sesConfig.mail_port.$error,onInput:t[4]||(t[4]=r=>e(l).sesConfig.mail_port.$touch())},null,8,["modelValue","content-loading","invalid"])]),_:1},8,["label","content-loading","error"]),o(C,{label:a.$t("settings.mail.encryption"),"content-loading":i.isFetchingInitialData,error:e(l).sesConfig.mail_encryption.$error&&e(l).sesConfig.mail_encryption.$errors[0].$message,required:""},{default:s(()=>[o(q,{modelValue:e(n).sesConfig.mail_encryption,"onUpdate:modelValue":t[5]||(t[5]=r=>e(n).sesConfig.mail_encryption=r),modelModifiers:{trim:!0},"content-loading":i.isFetchingInitialData,options:_,invalid:e(l).sesConfig.mail_encryption.$error,placeholder:"Select option",onInput:t[6]||(t[6]=r=>e(l).sesConfig.mail_encryption.$touch())},null,8,["modelValue","content-loading","options","invalid"])]),_:1},8,["label","content-loading","error"]),o(C,{label:a.$t("settings.mail.from_mail"),"content-loading":i.isFetchingInitialData,error:e(l).sesConfig.from_mail.$error&&e(l).sesConfig.from_mail.$errors[0].$message,required:""},{default:s(()=>[o(D,{modelValue:e(n).sesConfig.from_mail,"onUpdate:modelValue":t[7]||(t[7]=r=>e(n).sesConfig.from_mail=r),modelModifiers:{trim:!0},"content-loading":i.isFetchingInitialData,type:"text",name:"from_mail",invalid:e(l).sesConfig.from_mail.$error,onInput:t[8]||(t[8]=r=>e(l).sesConfig.from_mail.$touch())},null,8,["modelValue","content-loading","invalid"])]),_:1},8,["label","content-loading","error"]),o(C,{label:a.$t("settings.mail.from_name"),"content-loading":i.isFetchingInitialData,error:e(l).sesConfig.from_name.$error&&e(l).sesConfig.from_name.$errors[0].$message,required:""},{default:s(()=>[o(D,{modelValue:e(n).sesConfig.from_name,"onUpdate:modelValue":t[9]||(t[9]=r=>e(n).sesConfig.from_name=r),modelModifiers:{trim:!0},"content-loading":i.isFetchingInitialData,type:"text",name:"name",invalid:e(l).sesConfig.from_name.$error,onInput:t[10]||(t[10]=r=>e(l).sesConfig.from_name.$touch())},null,8,["modelValue","content-loading","invalid"])]),_:1},8,["label","content-loading","error"]),o(C,{label:a.$t("settings.mail.ses_key"),"content-loading":i.isFetchingInitialData,error:e(l).sesConfig.mail_ses_key.$error&&e(l).sesConfig.mail_ses_key.$errors[0].$message,required:""},{default:s(()=>[o(D,{modelValue:e(n).sesConfig.mail_ses_key,"onUpdate:modelValue":t[11]||(t[11]=r=>e(n).sesConfig.mail_ses_key=r),modelModifiers:{trim:!0},"content-loading":i.isFetchingInitialData,type:"text",name:"mail_ses_key",invalid:e(l).sesConfig.mail_ses_key.$error,onInput:t[12]||(t[12]=r=>e(l).sesConfig.mail_ses_key.$touch())},null,8,["modelValue","content-loading","invalid"])]),_:1},8,["label","content-loading","error"]),o(C,{label:a.$t("settings.mail.ses_secret"),"content-loading":i.isFetchingInitialData,error:e(l).sesConfig.mail_ses_secret.$error&&e(l).mail_ses_secret.$errors[0].$message,required:""},{default:s(()=>[o(D,{modelValue:e(n).sesConfig.mail_ses_secret,"onUpdate:modelValue":t[15]||(t[15]=r=>e(n).sesConfig.mail_ses_secret=r),modelModifiers:{trim:!0},"content-loading":i.isFetchingInitialData,type:d.value,name:"mail_ses_secret",autocomplete:"off",invalid:e(l).sesConfig.mail_ses_secret.$error,onInput:t[16]||(t[16]=r=>e(l).sesConfig.mail_ses_secret.$touch())},{right:s(()=>[e(m)?(B(),w(M,{key:0,class:"mr-1 text-gray-500 cursor-pointer",name:"EyeOffIcon",onClick:t[13]||(t[13]=r=>O(m)?m.value=!e(m):m=!e(m))})):(B(),w(M,{key:1,class:"mr-1 text-gray-500 cursor-pointer",name:"EyeIcon",onClick:t[14]||(t[14]=r=>O(m)?m.value=!e(m):m=!e(m))}))]),_:1},8,["modelValue","content-loading","type","invalid"])]),_:1},8,["label","content-loading","error"])]),_:1}),S("div",ae,[o(y,{disabled:i.isSaving,"content-loading":i.isFetchingInitialData,loading:i.isSaving,variant:"primary",type:"submit"},{left:s(r=>[i.isSaving?E("",!0):(B(),w(M,{key:0,name:"SaveIcon",class:N(r.class)},null,8,["class"]))]),default:s(()=>[k(" "+U(a.$t("general.save")),1)]),_:1},8,["disabled","content-loading","loading"]),H(a.$slots,"default")])],32)}}},oe={class:"flex mt-8"},X={__name:"BasicMailDriver",props:{configData:{type:Object,require:!0,default:Object},isSaving:{type:Boolean,require:!0,default:!1},isFetchingInitialData:{type:Boolean,require:!0,default:!1},mailDrivers:{type:Array,require:!0,default:Array}},emits:["submit-data","on-change-driver"],setup(i,{emit:h}){const $=i,v=h,n=A(),{t:u}=T.useI18n(),m=V(()=>({basicMailConfig:{mail_driver:{required:f.withMessage(u("validation.required"),I)},from_mail:{required:f.withMessage(u("validation.required"),I),email:f.withMessage(u("validation.email_incorrect"),x)},from_name:{required:f.withMessage(u("validation.required"),I)}}})),_=P(m,V(()=>n));L(()=>{for(const d in n.basicMailConfig)$.configData.hasOwnProperty(d)&&n.$patch(g=>{g.basicMailConfig[d]=$.configData[d]})});async function b(){return _.value.basicMailConfig.$touch(),_.value.basicMailConfig.$invalid||v("submit-data",n.basicMailConfig),!1}function l(){_.value.basicMailConfig.mail_driver.$touch(),v("on-change-driver",n.basicMailConfig.mail_driver)}return(d,g)=>{const p=c("BaseMultiselect"),a=c("BaseInputGroup"),t=c("BaseInput"),q=c("BaseInputGrid"),C=c("BaseIcon"),D=c("BaseButton");return B(),G("form",{onSubmit:z(b,["prevent"])},[o(q,null,{default:s(()=>[o(a,{label:d.$t("settings.mail.driver"),"content-loading":i.isFetchingInitialData,error:e(_).basicMailConfig.mail_driver.$error&&e(_).basicMailConfig.mail_driver.$errors[0].$message,required:""},{default:s(()=>[o(p,{modelValue:e(n).basicMailConfig.mail_driver,"onUpdate:modelValue":[g[0]||(g[0]=M=>e(n).basicMailConfig.mail_driver=M),l],"content-loading":i.isFetchingInitialData,options:i.mailDrivers,"can-deselect":!1,invalid:e(_).basicMailConfig.mail_driver.$error},null,8,["modelValue","content-loading","options","invalid"])]),_:1},8,["label","content-loading","error"]),o(a,{label:d.$t("settings.mail.from_mail"),"content-loading":i.isFetchingInitialData,error:e(_).basicMailConfig.from_mail.$error&&e(_).basicMailConfig.from_mail.$errors[0].$message,required:""},{default:s(()=>[o(t,{modelValue:e(n).basicMailConfig.from_mail,"onUpdate:modelValue":g[1]||(g[1]=M=>e(n).basicMailConfig.from_mail=M),modelModifiers:{trim:!0},"content-loading":i.isFetchingInitialData,type:"text",name:"from_mail",invalid:e(_).basicMailConfig.from_mail.$error,onInput:g[2]||(g[2]=M=>e(_).basicMailConfig.from_mail.$touch())},null,8,["modelValue","content-loading","invalid"])]),_:1},8,["label","content-loading","error"]),o(a,{label:d.$t("settings.mail.from_name"),"content-loading":i.isFetchingInitialData,error:e(_).basicMailConfig.from_name.$error&&e(_).basicMailConfig.from_name.$errors[0].$message,required:""},{default:s(()=>[o(t,{modelValue:e(n).basicMailConfig.from_name,"onUpdate:modelValue":g[3]||(g[3]=M=>e(n).basicMailConfig.from_name=M),modelModifiers:{trim:!0},"content-loading":i.isFetchingInitialData,type:"text",name:"name",invalid:e(_).basicMailConfig.from_name.$error,onInput:g[4]||(g[4]=M=>e(_).basicMailConfig.from_name.$touch())},null,8,["modelValue","content-loading","invalid"])]),_:1},8,["label","content-loading","error"])]),_:1}),S("div",oe,[o(D,{"content-loading":i.isFetchingInitialData,disabled:i.isSaving,loading:i.isSaving,variant:"primary",type:"submit"},{left:s(M=>[i.isSaving?E("",!0):(B(),w(C,{key:0,class:N(M.class),name:"SaveIcon"},null,8,["class"]))]),default:s(()=>[k(" "+U(d.$t("general.save")),1)]),_:1},8,["content-loading","disabled","loading"]),H(d.$slots,"default")])],32)}}},le={class:"flex justify-between w-full"},re={class:"p-4 md:p-8"},se={class:"z-0 flex justify-end p-4 border-t border-gray-200 border-solid"},me={__name:"MailTestModal",setup(i){let h=j(!1),$=J({to:"",subject:"",message:""});const v=Q(),n=A(),{t:u}=T.useI18n(),m=V(()=>v.active&&v.componentName==="MailTestModal"),_={formData:{to:{required:f.withMessage(u("validation.required"),I),email:f.withMessage(u("validation.email_incorrect"),x)},subject:{required:f.withMessage(u("validation.required"),I),maxLength:f.withMessage(u("validation.subject_maxlength"),K(100))},message:{required:f.withMessage(u("validation.required"),I),maxLength:f.withMessage(u("validation.message_maxlength"),K(255))}}},b=P(_,{formData:$});function l(){$.id="",$.to="",$.subject="",$.message="",b.value.$reset()}async function d(){if(b.value.formData.$touch(),b.value.$invalid)return!0;h.value=!0,(await n.sendTestMail($)).data&&(g(),h.value=!1)}function g(){v.closeModal(),setTimeout(()=>{v.resetModalData(),l()},300)}return(p,a)=>{const t=c("BaseIcon"),q=c("BaseInput"),C=c("BaseInputGroup"),D=c("BaseTextarea"),M=c("BaseInputGrid"),F=c("BaseButton"),y=c("BaseModal");return B(),w(y,{show:m.value,onClose:g},{header:s(()=>[S("div",le,[k(U(e(v).title)+" ",1),o(t,{name:"XIcon",class:"w-6 h-6 text-gray-500 cursor-pointer",onClick:g})])]),default:s(()=>[S("form",{action:"",onSubmit:z(d,["prevent"])},[S("div",re,[o(M,{layout:"one-column"},{default:s(()=>[o(C,{label:p.$t("general.to"),error:e(b).formData.to.$error&&e(b).formData.to.$errors[0].$message,variant:"horizontal",required:""},{default:s(()=>[o(q,{ref:"to",modelValue:e($).to,"onUpdate:modelValue":a[0]||(a[0]=r=>e($).to=r),type:"text",invalid:e(b).formData.to.$error,onInput:a[1]||(a[1]=r=>e(b).formData.to.$touch())},null,8,["modelValue","invalid"])]),_:1},8,["label","error"]),o(C,{label:p.$t("general.subject"),error:e(b).formData.subject.$error&&e(b).formData.subject.$errors[0].$message,variant:"horizontal",required:""},{default:s(()=>[o(q,{modelValue:e($).subject,"onUpdate:modelValue":a[2]||(a[2]=r=>e($).subject=r),type:"text",invalid:e(b).formData.subject.$error,onInput:a[3]||(a[3]=r=>e(b).formData.subject.$touch())},null,8,["modelValue","invalid"])]),_:1},8,["label","error"]),o(C,{label:p.$t("general.message"),error:e(b).formData.message.$error&&e(b).formData.message.$errors[0].$message,variant:"horizontal",required:""},{default:s(()=>[o(D,{modelValue:e($).message,"onUpdate:modelValue":a[4]||(a[4]=r=>e($).message=r),rows:"4",cols:"50",invalid:e(b).formData.message.$error,onInput:a[5]||(a[5]=r=>e(b).formData.message.$touch())},null,8,["modelValue","invalid"])]),_:1},8,["label","error"])]),_:1})]),S("div",se,[o(F,{variant:"primary-outline",type:"button",class:"mr-3",onClick:a[6]||(a[6]=r=>g())},{default:s(()=>[k(U(p.$t("general.cancel")),1)]),_:1}),o(F,{loading:e(h),variant:"primary",type:"submit"},{left:s(r=>[e(h)?E("",!0):(B(),w(t,{key:0,name:"PaperAirplaneIcon",class:N(r.class)},null,8,["class"]))]),default:s(()=>[k(" "+U(p.$t("general.send")),1)]),_:1},8,["loading"])])],32)]),_:1},8,["show"])}}},de={key:0,class:"mt-14"},fe={__name:"MailConfigSetting",setup(i){let h=j(!1),$=j(!1);const v=A(),n=Q(),{t:u}=T.useI18n();_();function m(g){v.mail_driver=g,v.mailConfigData.mail_driver=g}async function _(){$.value=!0,Promise.all([await v.fetchMailDrivers(),await v.fetchMailConfig()]).then(([g])=>{$.value=!1})}const b=V(()=>v.mail_driver=="smtp"?R:v.mail_driver=="mailgun"?ne:v.mail_driver=="sendmail"?X:v.mail_driver=="ses"?te:v.mail_driver=="mail"?X:R);async function l(g){try{return h.value=!0,await v.updateMailConfig(g),h.value=!1,!0}catch(p){console.error(p)}}function d(){n.openModal({title:u("general.test_mail_conf"),componentName:"MailTestModal",size:"sm"})}return(g,p)=>{const a=c("BaseButton"),t=c("BaseSettingCard");return B(),G(Z,null,[o(me),o(t,{title:g.$t("settings.mail.mail_config"),description:g.$t("settings.mail.mail_config_desc")},{default:s(()=>[e(v)&&e(v).mailConfigData?(B(),G("div",de,[(B(),w(W(b.value),{"config-data":e(v).mailConfigData,"is-saving":e(h),"mail-drivers":e(v).mail_drivers,"is-fetching-initial-data":e($),onOnChangeDriver:p[0]||(p[0]=q=>m(q)),onSubmitData:l},{default:s(()=>[o(a,{variant:"primary-outline",type:"button",class:"ml-2","content-loading":e($),onClick:d},{default:s(()=>[k(U(g.$t("general.test_mail_conf")),1)]),_:1},8,["content-loading"])]),_:1},40,["config-data","is-saving","mail-drivers","is-fetching-initial-data"]))])):E("",!0)]),_:1},8,["title","description"])],64)}}};export{fe as default}; +import{v as T,f as j,H as J,k as V,g as f,h as I,ar as Y,i as x,j as P,Y as L,r as c,o as B,c as G,a as o,w as s,l as e,m as w,n as O,b as S,J as N,K as E,p as k,t as U,a2 as H,q as z,F as Q,ai as K,a3 as W,N as Z}from"./main-pPEsZPea.js";import{u as A}from"./mail-driver-SNHZXvKB.js";const ee={class:"flex my-10"},R={__name:"SmtpMailDriver",props:{configData:{type:Object,require:!0,default:Object},isSaving:{type:Boolean,require:!0,default:!1},isFetchingInitialData:{type:Boolean,require:!0,default:!1},mailDrivers:{type:Array,require:!0,default:Array}},emits:["submit-data","on-change-driver"],setup(i,{emit:h}){const $=i,v=h,n=A(),{t:u}=T.useI18n();let m=j(!1);const _=J(["tls","ssl","starttls"]),b=V(()=>m.value?"text":"password"),l=V(()=>({smtpConfig:{mail_driver:{required:f.withMessage(u("validation.required"),I)},mail_host:{required:f.withMessage(u("validation.required"),I)},mail_port:{required:f.withMessage(u("validation.required"),I),numeric:f.withMessage(u("validation.numbers_only"),Y)},mail_encryption:{required:f.withMessage(u("validation.required"),I)},from_mail:{required:f.withMessage(u("validation.required"),I),email:f.withMessage(u("validation.email_incorrect"),x)},from_name:{required:f.withMessage(u("validation.required"),I)}}})),d=P(l,V(()=>n));L(()=>{for(const a in n.smtpConfig)$.configData.hasOwnProperty(a)&&(n.smtpConfig[a]=$.configData[a])});async function g(){return d.value.smtpConfig.$touch(),d.value.smtpConfig.$invalid||v("submit-data",n.smtpConfig),!1}function p(){d.value.smtpConfig.mail_driver.$touch(),v("on-change-driver",n.smtpConfig.mail_driver)}return(a,t)=>{const q=c("BaseMultiselect"),C=c("BaseInputGroup"),D=c("BaseInput"),M=c("BaseIcon"),F=c("BaseInputGrid"),y=c("BaseButton");return B(),G("form",{onSubmit:z(g,["prevent"])},[o(F,null,{default:s(()=>[o(C,{label:a.$t("settings.mail.driver"),"content-loading":i.isFetchingInitialData,error:e(d).smtpConfig.mail_driver.$error&&e(d).smtpConfig.mail_driver.$errors[0].$message,required:""},{default:s(()=>[o(q,{modelValue:e(n).smtpConfig.mail_driver,"onUpdate:modelValue":[t[0]||(t[0]=r=>e(n).smtpConfig.mail_driver=r),p],"content-loading":i.isFetchingInitialData,options:i.mailDrivers,"can-deselect":!1,invalid:e(d).smtpConfig.mail_driver.$error},null,8,["modelValue","content-loading","options","invalid"])]),_:1},8,["label","content-loading","error"]),o(C,{label:a.$t("settings.mail.host"),"content-loading":i.isFetchingInitialData,error:e(d).smtpConfig.mail_host.$error&&e(d).smtpConfig.mail_host.$errors[0].$message,required:""},{default:s(()=>[o(D,{modelValue:e(n).smtpConfig.mail_host,"onUpdate:modelValue":t[1]||(t[1]=r=>e(n).smtpConfig.mail_host=r),modelModifiers:{trim:!0},"content-loading":i.isFetchingInitialData,type:"text",name:"mail_host",invalid:e(d).smtpConfig.mail_host.$error,onInput:t[2]||(t[2]=r=>e(d).smtpConfig.mail_host.$touch())},null,8,["modelValue","content-loading","invalid"])]),_:1},8,["label","content-loading","error"]),o(C,{"content-loading":i.isFetchingInitialData,label:a.$t("settings.mail.username")},{default:s(()=>[o(D,{modelValue:e(n).smtpConfig.mail_username,"onUpdate:modelValue":t[3]||(t[3]=r=>e(n).smtpConfig.mail_username=r),modelModifiers:{trim:!0},"content-loading":i.isFetchingInitialData,type:"text",name:"db_name"},null,8,["modelValue","content-loading"])]),_:1},8,["content-loading","label"]),o(C,{"content-loading":i.isFetchingInitialData,label:a.$t("settings.mail.password")},{default:s(()=>[o(D,{modelValue:e(n).smtpConfig.mail_password,"onUpdate:modelValue":t[6]||(t[6]=r=>e(n).smtpConfig.mail_password=r),modelModifiers:{trim:!0},"content-loading":i.isFetchingInitialData,type:b.value,name:"password"},{right:s(()=>[e(m)?(B(),w(M,{key:0,class:"mr-1 text-gray-500 cursor-pointer",name:"EyeOffIcon",onClick:t[4]||(t[4]=r=>O(m)?m.value=!e(m):m=!e(m))})):(B(),w(M,{key:1,class:"mr-1 text-gray-500 cursor-pointer",name:"EyeIcon",onClick:t[5]||(t[5]=r=>O(m)?m.value=!e(m):m=!e(m))}))]),_:1},8,["modelValue","content-loading","type"])]),_:1},8,["content-loading","label"]),o(C,{label:a.$t("settings.mail.port"),"content-loading":i.isFetchingInitialData,error:e(d).smtpConfig.mail_port.$error&&e(d).smtpConfig.mail_port.$errors[0].$message,required:""},{default:s(()=>[o(D,{modelValue:e(n).smtpConfig.mail_port,"onUpdate:modelValue":t[7]||(t[7]=r=>e(n).smtpConfig.mail_port=r),modelModifiers:{trim:!0},"content-loading":i.isFetchingInitialData,type:"text",name:"mail_port",invalid:e(d).smtpConfig.mail_port.$error,onInput:t[8]||(t[8]=r=>e(d).smtpConfig.mail_port.$touch())},null,8,["modelValue","content-loading","invalid"])]),_:1},8,["label","content-loading","error"]),o(C,{label:a.$t("settings.mail.encryption"),"content-loading":i.isFetchingInitialData,error:e(d).smtpConfig.mail_encryption.$error&&e(d).smtpConfig.mail_encryption.$errors[0].$message,required:""},{default:s(()=>[o(q,{modelValue:e(n).smtpConfig.mail_encryption,"onUpdate:modelValue":t[9]||(t[9]=r=>e(n).smtpConfig.mail_encryption=r),modelModifiers:{trim:!0},"content-loading":i.isFetchingInitialData,options:_,searchable:!0,"show-labels":!1,placeholder:"Select option",invalid:e(d).smtpConfig.mail_encryption.$error,onInput:t[10]||(t[10]=r=>e(d).smtpConfig.mail_encryption.$touch())},null,8,["modelValue","content-loading","options","invalid"])]),_:1},8,["label","content-loading","error"]),o(C,{label:a.$t("settings.mail.from_mail"),"content-loading":i.isFetchingInitialData,error:e(d).smtpConfig.from_mail.$error&&e(d).smtpConfig.from_mail.$errors[0].$message,required:""},{default:s(()=>[o(D,{modelValue:e(n).smtpConfig.from_mail,"onUpdate:modelValue":t[11]||(t[11]=r=>e(n).smtpConfig.from_mail=r),modelModifiers:{trim:!0},"content-loading":i.isFetchingInitialData,type:"text",name:"from_mail",invalid:e(d).smtpConfig.from_mail.$error,onInput:t[12]||(t[12]=r=>e(d).smtpConfig.from_mail.$touch())},null,8,["modelValue","content-loading","invalid"])]),_:1},8,["label","content-loading","error"]),o(C,{label:a.$t("settings.mail.from_name"),"content-loading":i.isFetchingInitialData,error:e(d).smtpConfig.from_name.$error&&e(d).smtpConfig.from_name.$errors[0].$message,required:""},{default:s(()=>[o(D,{modelValue:e(n).smtpConfig.from_name,"onUpdate:modelValue":t[13]||(t[13]=r=>e(n).smtpConfig.from_name=r),modelModifiers:{trim:!0},"content-loading":i.isFetchingInitialData,type:"text",name:"from_name",invalid:e(d).smtpConfig.from_name.$error,onInput:t[14]||(t[14]=r=>e(d).smtpConfig.from_name.$touch())},null,8,["modelValue","content-loading","invalid"])]),_:1},8,["label","content-loading","error"])]),_:1}),S("div",ee,[o(y,{disabled:i.isSaving,"content-loading":i.isFetchingInitialData,loading:i.isSaving,type:"submit",variant:"primary"},{left:s(r=>[i.isSaving?E("",!0):(B(),w(M,{key:0,name:"SaveIcon",class:N(r.class)},null,8,["class"]))]),default:s(()=>[k(" "+U(a.$t("general.save")),1)]),_:1},8,["disabled","content-loading","loading"]),H(a.$slots,"default")])],32)}}},ie={class:"flex my-10"},ne={__name:"MailgunMailDriver",props:{configData:{type:Object,require:!0,default:Object},isSaving:{type:Boolean,require:!0,default:!1},isFetchingInitialData:{type:Boolean,require:!0,default:!1},mailDrivers:{type:Array,require:!0,default:Array}},emits:["submit-data","on-change-driver"],setup(i,{emit:h}){const $=i,v=h,n=A(),{t:u}=T.useI18n();let m=j(!1);const _=V(()=>m.value?"text":"password"),b=V(()=>({mailgunConfig:{mail_driver:{required:f.withMessage(u("validation.required"),I)},mail_mailgun_domain:{required:f.withMessage(u("validation.required"),I)},mail_mailgun_endpoint:{required:f.withMessage(u("validation.required"),I)},mail_mailgun_secret:{required:f.withMessage(u("validation.required"),I)},from_mail:{required:f.withMessage(u("validation.required"),I),email:x},from_name:{required:f.withMessage(u("validation.required"),I)}}})),l=P(b,V(()=>n));L(()=>{for(const p in n.mailgunConfig)$.configData.hasOwnProperty(p)&&(n.mailgunConfig[p]=$.configData[p])});async function d(){return l.value.mailgunConfig.$touch(),l.value.mailgunConfig.$invalid||v("submit-data",n.mailgunConfig),!1}function g(){l.value.mailgunConfig.mail_driver.$touch(),v("on-change-driver",n.mailgunConfig.mail_driver)}return(p,a)=>{const t=c("BaseMultiselect"),q=c("BaseInputGroup"),C=c("BaseInput"),D=c("BaseIcon"),M=c("BaseInputGrid"),F=c("BaseButton");return B(),G("form",{onSubmit:z(d,["prevent"])},[o(M,null,{default:s(()=>[o(q,{label:p.$t("settings.mail.driver"),"content-loading":i.isFetchingInitialData,error:e(l).mailgunConfig.mail_driver.$error&&e(l).mailgunConfig.mail_driver.$errors[0].$message,required:""},{default:s(()=>[o(t,{modelValue:e(n).mailgunConfig.mail_driver,"onUpdate:modelValue":[a[0]||(a[0]=y=>e(n).mailgunConfig.mail_driver=y),g],"content-loading":i.isFetchingInitialData,options:i.mailDrivers,"can-deselect":!1,invalid:e(l).mailgunConfig.mail_driver.$error},null,8,["modelValue","content-loading","options","invalid"])]),_:1},8,["label","content-loading","error"]),o(q,{label:p.$t("settings.mail.mailgun_domain"),"content-loading":i.isFetchingInitialData,error:e(l).mailgunConfig.mail_mailgun_domain.$error&&e(l).mailgunConfig.mail_mailgun_domain.$errors[0].$message,required:""},{default:s(()=>[o(C,{modelValue:e(n).mailgunConfig.mail_mailgun_domain,"onUpdate:modelValue":a[1]||(a[1]=y=>e(n).mailgunConfig.mail_mailgun_domain=y),modelModifiers:{trim:!0},"content-loading":i.isFetchingInitialData,type:"text",name:"mailgun_domain",invalid:e(l).mailgunConfig.mail_mailgun_domain.$error,onInput:a[2]||(a[2]=y=>e(l).mailgunConfig.mail_mailgun_domain.$touch())},null,8,["modelValue","content-loading","invalid"])]),_:1},8,["label","content-loading","error"]),o(q,{label:p.$t("settings.mail.mailgun_secret"),"content-loading":i.isFetchingInitialData,error:e(l).mailgunConfig.mail_mailgun_secret.$error&&e(l).mailgunConfig.mail_mailgun_secret.$errors[0].$message,required:""},{default:s(()=>[o(C,{modelValue:e(n).mailgunConfig.mail_mailgun_secret,"onUpdate:modelValue":a[5]||(a[5]=y=>e(n).mailgunConfig.mail_mailgun_secret=y),modelModifiers:{trim:!0},"content-loading":i.isFetchingInitialData,type:_.value,name:"mailgun_secret",autocomplete:"off",invalid:e(l).mailgunConfig.mail_mailgun_secret.$error,onInput:a[6]||(a[6]=y=>e(l).mailgunConfig.mail_mailgun_secret.$touch())},{right:s(()=>[e(m)?(B(),w(D,{key:0,class:"mr-1 text-gray-500 cursor-pointer",name:"EyeOffIcon",onClick:a[3]||(a[3]=y=>O(m)?m.value=!e(m):m=!e(m))})):(B(),w(D,{key:1,class:"mr-1 text-gray-500 cursor-pointer",name:"EyeIcon",onClick:a[4]||(a[4]=y=>O(m)?m.value=!e(m):m=!e(m))}))]),_:1},8,["modelValue","content-loading","type","invalid"])]),_:1},8,["label","content-loading","error"]),o(q,{label:p.$t("settings.mail.mailgun_endpoint"),"content-loading":i.isFetchingInitialData,error:e(l).mailgunConfig.mail_mailgun_endpoint.$error&&e(l).mailgunConfig.mail_mailgun_endpoint.$errors[0].$message,required:""},{default:s(()=>[o(C,{modelValue:e(n).mailgunConfig.mail_mailgun_endpoint,"onUpdate:modelValue":a[7]||(a[7]=y=>e(n).mailgunConfig.mail_mailgun_endpoint=y),modelModifiers:{trim:!0},"content-loading":i.isFetchingInitialData,type:"text",name:"mailgun_endpoint",invalid:e(l).mailgunConfig.mail_mailgun_endpoint.$error,onInput:a[8]||(a[8]=y=>e(l).mailgunConfig.mail_mailgun_endpoint.$touch())},null,8,["modelValue","content-loading","invalid"])]),_:1},8,["label","content-loading","error"]),o(q,{label:p.$t("settings.mail.from_mail"),"content-loading":i.isFetchingInitialData,error:e(l).mailgunConfig.from_mail.$error&&e(l).mailgunConfig.from_mail.$errors[0].$message,required:""},{default:s(()=>[o(C,{modelValue:e(n).mailgunConfig.from_mail,"onUpdate:modelValue":a[9]||(a[9]=y=>e(n).mailgunConfig.from_mail=y),modelModifiers:{trim:!0},"content-loading":i.isFetchingInitialData,type:"text",name:"from_mail",invalid:e(l).mailgunConfig.from_mail.$error,onInput:a[10]||(a[10]=y=>e(l).mailgunConfig.from_mail.$touch())},null,8,["modelValue","content-loading","invalid"])]),_:1},8,["label","content-loading","error"]),o(q,{label:p.$t("settings.mail.from_name"),"content-loading":i.isFetchingInitialData,error:e(l).mailgunConfig.from_name.$error&&e(l).mailgunConfig.from_name.$errors[0].$message,required:""},{default:s(()=>[o(C,{modelValue:e(n).mailgunConfig.from_name,"onUpdate:modelValue":a[11]||(a[11]=y=>e(n).mailgunConfig.from_name=y),modelModifiers:{trim:!0},"content-loading":i.isFetchingInitialData,type:"text",name:"from_name",invalid:e(l).mailgunConfig.from_name.$error,onInput:a[12]||(a[12]=y=>e(l).mailgunConfig.from_name.$touch())},null,8,["modelValue","content-loading","invalid"])]),_:1},8,["label","content-loading","error"])]),_:1}),S("div",ie,[o(F,{disabled:i.isSaving,"content-loading":i.isFetchingInitialData,loading:i.isSaving,variant:"primary",type:"submit"},{left:s(y=>[i.isSaving?E("",!0):(B(),w(D,{key:0,name:"SaveIcon",class:N(y.class)},null,8,["class"]))]),default:s(()=>[k(" "+U(p.$t("general.save")),1)]),_:1},8,["disabled","content-loading","loading"]),H(p.$slots,"default")])],32)}}},ae={class:"flex my-10"},te={__name:"SesMailDriver",props:{configData:{type:Object,require:!0,default:Object},isSaving:{type:Boolean,require:!0,default:!1},isFetchingInitialData:{type:Boolean,require:!0,default:!1},mailDrivers:{type:Array,require:!0,default:Array}},emits:["submit-data","on-change-driver"],setup(i,{emit:h}){const $=i,v=h,n=A(),{t:u}=T.useI18n();let m=j(!1);const _=J(["tls","ssl","starttls"]),b=V(()=>({sesConfig:{mail_driver:{required:f.withMessage(u("validation.required"),I)},mail_host:{required:f.withMessage(u("validation.required"),I)},mail_port:{required:f.withMessage(u("validation.required"),I),numeric:Y},mail_ses_key:{required:f.withMessage(u("validation.required"),I)},mail_ses_secret:{required:f.withMessage(u("validation.required"),I)},mail_encryption:{required:f.withMessage(u("validation.required"),I)},from_mail:{required:f.withMessage(u("validation.required"),I),email:f.withMessage(u("validation.email_incorrect"),x)},from_name:{required:f.withMessage(u("validation.required"),I)}}})),l=P(b,V(()=>n)),d=V(()=>m.value?"text":"password");L(()=>{for(const a in n.sesConfig)$.configData.hasOwnProperty(a)&&(n.sesConfig[a]=$.configData[a])});async function g(){return l.value.sesConfig.$touch(),l.value.sesConfig.$invalid||v("submit-data",n.sesConfig),!1}function p(){l.value.sesConfig.mail_driver.$touch(),v("on-change-driver",n.sesConfig.mail_driver)}return(a,t)=>{const q=c("BaseMultiselect"),C=c("BaseInputGroup"),D=c("BaseInput"),M=c("BaseIcon"),F=c("BaseInputGrid"),y=c("BaseButton");return B(),G("form",{onSubmit:z(g,["prevent"])},[o(F,null,{default:s(()=>[o(C,{label:a.$t("settings.mail.driver"),"content-loading":i.isFetchingInitialData,error:e(l).sesConfig.mail_driver.$error&&e(l).sesConfig.mail_driver.$errors[0].$message,required:""},{default:s(()=>[o(q,{modelValue:e(n).sesConfig.mail_driver,"onUpdate:modelValue":[t[0]||(t[0]=r=>e(n).sesConfig.mail_driver=r),p],"content-loading":i.isFetchingInitialData,options:i.mailDrivers,"can-deselect":!1,invalid:e(l).sesConfig.mail_driver.$error},null,8,["modelValue","content-loading","options","invalid"])]),_:1},8,["label","content-loading","error"]),o(C,{label:a.$t("settings.mail.host"),"content-loading":i.isFetchingInitialData,error:e(l).sesConfig.mail_host.$error&&e(l).sesConfig.mail_host.$errors[0].$message,required:""},{default:s(()=>[o(D,{modelValue:e(n).sesConfig.mail_host,"onUpdate:modelValue":t[1]||(t[1]=r=>e(n).sesConfig.mail_host=r),modelModifiers:{trim:!0},"content-loading":i.isFetchingInitialData,type:"text",name:"mail_host",invalid:e(l).sesConfig.mail_host.$error,onInput:t[2]||(t[2]=r=>e(l).sesConfig.mail_host.$touch())},null,8,["modelValue","content-loading","invalid"])]),_:1},8,["label","content-loading","error"]),o(C,{label:a.$t("settings.mail.port"),"content-loading":i.isFetchingInitialData,error:e(l).sesConfig.mail_port.$error&&e(l).sesConfig.mail_port.$errors[0].$message,required:""},{default:s(()=>[o(D,{modelValue:e(n).sesConfig.mail_port,"onUpdate:modelValue":t[3]||(t[3]=r=>e(n).sesConfig.mail_port=r),modelModifiers:{trim:!0},"content-loading":i.isFetchingInitialData,type:"text",name:"mail_port",invalid:e(l).sesConfig.mail_port.$error,onInput:t[4]||(t[4]=r=>e(l).sesConfig.mail_port.$touch())},null,8,["modelValue","content-loading","invalid"])]),_:1},8,["label","content-loading","error"]),o(C,{label:a.$t("settings.mail.encryption"),"content-loading":i.isFetchingInitialData,error:e(l).sesConfig.mail_encryption.$error&&e(l).sesConfig.mail_encryption.$errors[0].$message,required:""},{default:s(()=>[o(q,{modelValue:e(n).sesConfig.mail_encryption,"onUpdate:modelValue":t[5]||(t[5]=r=>e(n).sesConfig.mail_encryption=r),modelModifiers:{trim:!0},"content-loading":i.isFetchingInitialData,options:_,invalid:e(l).sesConfig.mail_encryption.$error,placeholder:"Select option",onInput:t[6]||(t[6]=r=>e(l).sesConfig.mail_encryption.$touch())},null,8,["modelValue","content-loading","options","invalid"])]),_:1},8,["label","content-loading","error"]),o(C,{label:a.$t("settings.mail.from_mail"),"content-loading":i.isFetchingInitialData,error:e(l).sesConfig.from_mail.$error&&e(l).sesConfig.from_mail.$errors[0].$message,required:""},{default:s(()=>[o(D,{modelValue:e(n).sesConfig.from_mail,"onUpdate:modelValue":t[7]||(t[7]=r=>e(n).sesConfig.from_mail=r),modelModifiers:{trim:!0},"content-loading":i.isFetchingInitialData,type:"text",name:"from_mail",invalid:e(l).sesConfig.from_mail.$error,onInput:t[8]||(t[8]=r=>e(l).sesConfig.from_mail.$touch())},null,8,["modelValue","content-loading","invalid"])]),_:1},8,["label","content-loading","error"]),o(C,{label:a.$t("settings.mail.from_name"),"content-loading":i.isFetchingInitialData,error:e(l).sesConfig.from_name.$error&&e(l).sesConfig.from_name.$errors[0].$message,required:""},{default:s(()=>[o(D,{modelValue:e(n).sesConfig.from_name,"onUpdate:modelValue":t[9]||(t[9]=r=>e(n).sesConfig.from_name=r),modelModifiers:{trim:!0},"content-loading":i.isFetchingInitialData,type:"text",name:"name",invalid:e(l).sesConfig.from_name.$error,onInput:t[10]||(t[10]=r=>e(l).sesConfig.from_name.$touch())},null,8,["modelValue","content-loading","invalid"])]),_:1},8,["label","content-loading","error"]),o(C,{label:a.$t("settings.mail.ses_key"),"content-loading":i.isFetchingInitialData,error:e(l).sesConfig.mail_ses_key.$error&&e(l).sesConfig.mail_ses_key.$errors[0].$message,required:""},{default:s(()=>[o(D,{modelValue:e(n).sesConfig.mail_ses_key,"onUpdate:modelValue":t[11]||(t[11]=r=>e(n).sesConfig.mail_ses_key=r),modelModifiers:{trim:!0},"content-loading":i.isFetchingInitialData,type:"text",name:"mail_ses_key",invalid:e(l).sesConfig.mail_ses_key.$error,onInput:t[12]||(t[12]=r=>e(l).sesConfig.mail_ses_key.$touch())},null,8,["modelValue","content-loading","invalid"])]),_:1},8,["label","content-loading","error"]),o(C,{label:a.$t("settings.mail.ses_secret"),"content-loading":i.isFetchingInitialData,error:e(l).sesConfig.mail_ses_secret.$error&&e(l).mail_ses_secret.$errors[0].$message,required:""},{default:s(()=>[o(D,{modelValue:e(n).sesConfig.mail_ses_secret,"onUpdate:modelValue":t[15]||(t[15]=r=>e(n).sesConfig.mail_ses_secret=r),modelModifiers:{trim:!0},"content-loading":i.isFetchingInitialData,type:d.value,name:"mail_ses_secret",autocomplete:"off",invalid:e(l).sesConfig.mail_ses_secret.$error,onInput:t[16]||(t[16]=r=>e(l).sesConfig.mail_ses_secret.$touch())},{right:s(()=>[e(m)?(B(),w(M,{key:0,class:"mr-1 text-gray-500 cursor-pointer",name:"EyeOffIcon",onClick:t[13]||(t[13]=r=>O(m)?m.value=!e(m):m=!e(m))})):(B(),w(M,{key:1,class:"mr-1 text-gray-500 cursor-pointer",name:"EyeIcon",onClick:t[14]||(t[14]=r=>O(m)?m.value=!e(m):m=!e(m))}))]),_:1},8,["modelValue","content-loading","type","invalid"])]),_:1},8,["label","content-loading","error"])]),_:1}),S("div",ae,[o(y,{disabled:i.isSaving,"content-loading":i.isFetchingInitialData,loading:i.isSaving,variant:"primary",type:"submit"},{left:s(r=>[i.isSaving?E("",!0):(B(),w(M,{key:0,name:"SaveIcon",class:N(r.class)},null,8,["class"]))]),default:s(()=>[k(" "+U(a.$t("general.save")),1)]),_:1},8,["disabled","content-loading","loading"]),H(a.$slots,"default")])],32)}}},oe={class:"flex mt-8"},X={__name:"BasicMailDriver",props:{configData:{type:Object,require:!0,default:Object},isSaving:{type:Boolean,require:!0,default:!1},isFetchingInitialData:{type:Boolean,require:!0,default:!1},mailDrivers:{type:Array,require:!0,default:Array}},emits:["submit-data","on-change-driver"],setup(i,{emit:h}){const $=i,v=h,n=A(),{t:u}=T.useI18n(),m=V(()=>({basicMailConfig:{mail_driver:{required:f.withMessage(u("validation.required"),I)},from_mail:{required:f.withMessage(u("validation.required"),I),email:f.withMessage(u("validation.email_incorrect"),x)},from_name:{required:f.withMessage(u("validation.required"),I)}}})),_=P(m,V(()=>n));L(()=>{for(const d in n.basicMailConfig)$.configData.hasOwnProperty(d)&&n.$patch(g=>{g.basicMailConfig[d]=$.configData[d]})});async function b(){return _.value.basicMailConfig.$touch(),_.value.basicMailConfig.$invalid||v("submit-data",n.basicMailConfig),!1}function l(){_.value.basicMailConfig.mail_driver.$touch(),v("on-change-driver",n.basicMailConfig.mail_driver)}return(d,g)=>{const p=c("BaseMultiselect"),a=c("BaseInputGroup"),t=c("BaseInput"),q=c("BaseInputGrid"),C=c("BaseIcon"),D=c("BaseButton");return B(),G("form",{onSubmit:z(b,["prevent"])},[o(q,null,{default:s(()=>[o(a,{label:d.$t("settings.mail.driver"),"content-loading":i.isFetchingInitialData,error:e(_).basicMailConfig.mail_driver.$error&&e(_).basicMailConfig.mail_driver.$errors[0].$message,required:""},{default:s(()=>[o(p,{modelValue:e(n).basicMailConfig.mail_driver,"onUpdate:modelValue":[g[0]||(g[0]=M=>e(n).basicMailConfig.mail_driver=M),l],"content-loading":i.isFetchingInitialData,options:i.mailDrivers,"can-deselect":!1,invalid:e(_).basicMailConfig.mail_driver.$error},null,8,["modelValue","content-loading","options","invalid"])]),_:1},8,["label","content-loading","error"]),o(a,{label:d.$t("settings.mail.from_mail"),"content-loading":i.isFetchingInitialData,error:e(_).basicMailConfig.from_mail.$error&&e(_).basicMailConfig.from_mail.$errors[0].$message,required:""},{default:s(()=>[o(t,{modelValue:e(n).basicMailConfig.from_mail,"onUpdate:modelValue":g[1]||(g[1]=M=>e(n).basicMailConfig.from_mail=M),modelModifiers:{trim:!0},"content-loading":i.isFetchingInitialData,type:"text",name:"from_mail",invalid:e(_).basicMailConfig.from_mail.$error,onInput:g[2]||(g[2]=M=>e(_).basicMailConfig.from_mail.$touch())},null,8,["modelValue","content-loading","invalid"])]),_:1},8,["label","content-loading","error"]),o(a,{label:d.$t("settings.mail.from_name"),"content-loading":i.isFetchingInitialData,error:e(_).basicMailConfig.from_name.$error&&e(_).basicMailConfig.from_name.$errors[0].$message,required:""},{default:s(()=>[o(t,{modelValue:e(n).basicMailConfig.from_name,"onUpdate:modelValue":g[3]||(g[3]=M=>e(n).basicMailConfig.from_name=M),modelModifiers:{trim:!0},"content-loading":i.isFetchingInitialData,type:"text",name:"name",invalid:e(_).basicMailConfig.from_name.$error,onInput:g[4]||(g[4]=M=>e(_).basicMailConfig.from_name.$touch())},null,8,["modelValue","content-loading","invalid"])]),_:1},8,["label","content-loading","error"])]),_:1}),S("div",oe,[o(D,{"content-loading":i.isFetchingInitialData,disabled:i.isSaving,loading:i.isSaving,variant:"primary",type:"submit"},{left:s(M=>[i.isSaving?E("",!0):(B(),w(C,{key:0,class:N(M.class),name:"SaveIcon"},null,8,["class"]))]),default:s(()=>[k(" "+U(d.$t("general.save")),1)]),_:1},8,["content-loading","disabled","loading"]),H(d.$slots,"default")])],32)}}},le={class:"flex justify-between w-full"},re={class:"p-4 md:p-8"},se={class:"z-0 flex justify-end p-4 border-t border-gray-200 border-solid"},me={__name:"MailTestModal",setup(i){let h=j(!1),$=J({to:"",subject:"",message:""});const v=Q(),n=A(),{t:u}=T.useI18n(),m=V(()=>v.active&&v.componentName==="MailTestModal"),_={formData:{to:{required:f.withMessage(u("validation.required"),I),email:f.withMessage(u("validation.email_incorrect"),x)},subject:{required:f.withMessage(u("validation.required"),I),maxLength:f.withMessage(u("validation.subject_maxlength"),K(100))},message:{required:f.withMessage(u("validation.required"),I),maxLength:f.withMessage(u("validation.message_maxlength"),K(255))}}},b=P(_,{formData:$});function l(){$.id="",$.to="",$.subject="",$.message="",b.value.$reset()}async function d(){if(b.value.formData.$touch(),b.value.$invalid)return!0;h.value=!0,(await n.sendTestMail($)).data&&(g(),h.value=!1)}function g(){v.closeModal(),setTimeout(()=>{v.resetModalData(),l()},300)}return(p,a)=>{const t=c("BaseIcon"),q=c("BaseInput"),C=c("BaseInputGroup"),D=c("BaseTextarea"),M=c("BaseInputGrid"),F=c("BaseButton"),y=c("BaseModal");return B(),w(y,{show:m.value,onClose:g},{header:s(()=>[S("div",le,[k(U(e(v).title)+" ",1),o(t,{name:"XIcon",class:"w-6 h-6 text-gray-500 cursor-pointer",onClick:g})])]),default:s(()=>[S("form",{action:"",onSubmit:z(d,["prevent"])},[S("div",re,[o(M,{layout:"one-column"},{default:s(()=>[o(C,{label:p.$t("general.to"),error:e(b).formData.to.$error&&e(b).formData.to.$errors[0].$message,variant:"horizontal",required:""},{default:s(()=>[o(q,{ref:"to",modelValue:e($).to,"onUpdate:modelValue":a[0]||(a[0]=r=>e($).to=r),type:"text",invalid:e(b).formData.to.$error,onInput:a[1]||(a[1]=r=>e(b).formData.to.$touch())},null,8,["modelValue","invalid"])]),_:1},8,["label","error"]),o(C,{label:p.$t("general.subject"),error:e(b).formData.subject.$error&&e(b).formData.subject.$errors[0].$message,variant:"horizontal",required:""},{default:s(()=>[o(q,{modelValue:e($).subject,"onUpdate:modelValue":a[2]||(a[2]=r=>e($).subject=r),type:"text",invalid:e(b).formData.subject.$error,onInput:a[3]||(a[3]=r=>e(b).formData.subject.$touch())},null,8,["modelValue","invalid"])]),_:1},8,["label","error"]),o(C,{label:p.$t("general.message"),error:e(b).formData.message.$error&&e(b).formData.message.$errors[0].$message,variant:"horizontal",required:""},{default:s(()=>[o(D,{modelValue:e($).message,"onUpdate:modelValue":a[4]||(a[4]=r=>e($).message=r),rows:"4",cols:"50",invalid:e(b).formData.message.$error,onInput:a[5]||(a[5]=r=>e(b).formData.message.$touch())},null,8,["modelValue","invalid"])]),_:1},8,["label","error"])]),_:1})]),S("div",se,[o(F,{variant:"primary-outline",type:"button",class:"mr-3",onClick:a[6]||(a[6]=r=>g())},{default:s(()=>[k(U(p.$t("general.cancel")),1)]),_:1}),o(F,{loading:e(h),variant:"primary",type:"submit"},{left:s(r=>[e(h)?E("",!0):(B(),w(t,{key:0,name:"PaperAirplaneIcon",class:N(r.class)},null,8,["class"]))]),default:s(()=>[k(" "+U(p.$t("general.send")),1)]),_:1},8,["loading"])])],32)]),_:1},8,["show"])}}},de={key:0,class:"mt-14"},fe={__name:"MailConfigSetting",setup(i){let h=j(!1),$=j(!1);const v=A(),n=Q(),{t:u}=T.useI18n();_();function m(g){v.mail_driver=g,v.mailConfigData.mail_driver=g}async function _(){$.value=!0,Promise.all([await v.fetchMailDrivers(),await v.fetchMailConfig()]).then(([g])=>{$.value=!1})}const b=V(()=>v.mail_driver=="smtp"?R:v.mail_driver=="mailgun"?ne:v.mail_driver=="sendmail"?X:v.mail_driver=="ses"?te:v.mail_driver=="mail"?X:R);async function l(g){try{return h.value=!0,await v.updateMailConfig(g),h.value=!1,!0}catch(p){console.error(p)}}function d(){n.openModal({title:u("general.test_mail_conf"),componentName:"MailTestModal",size:"sm"})}return(g,p)=>{const a=c("BaseButton"),t=c("BaseSettingCard");return B(),G(Z,null,[o(me),o(t,{title:g.$t("settings.mail.mail_config"),description:g.$t("settings.mail.mail_config_desc")},{default:s(()=>[e(v)&&e(v).mailConfigData?(B(),G("div",de,[(B(),w(W(b.value),{"config-data":e(v).mailConfigData,"is-saving":e(h),"mail-drivers":e(v).mail_drivers,"is-fetching-initial-data":e($),onOnChangeDriver:p[0]||(p[0]=q=>m(q)),onSubmitData:l},{default:s(()=>[o(a,{variant:"primary-outline",type:"button",class:"ml-2","content-loading":e($),onClick:d},{default:s(()=>[k(U(g.$t("general.test_mail_conf")),1)]),_:1},8,["content-loading"])]),_:1},40,["config-data","is-saving","mail-drivers","is-fetching-initial-data"]))])):E("",!0)]),_:1},8,["title","description"])],64)}}};export{fe as default}; diff --git a/public/build/assets/MoonwalkerIcon-049DwnAE.js b/public/build/assets/MoonwalkerIcon-n6wvqx0T.js similarity index 99% rename from public/build/assets/MoonwalkerIcon-049DwnAE.js rename to public/build/assets/MoonwalkerIcon-n6wvqx0T.js index c949fc06..18cd1609 100644 --- a/public/build/assets/MoonwalkerIcon-049DwnAE.js +++ b/public/build/assets/MoonwalkerIcon-n6wvqx0T.js @@ -1 +1 @@ -import{o as C,c as i,b as l,J as d}from"./main-B9dpPbRR.js";const o={width:"154",height:"110",viewBox:"0 0 154 110",fill:"none",xmlns:"http://www.w3.org/2000/svg"},r={"clip-path":"url(#clip0)"},n=l("defs",null,[l("clipPath",{id:"clip0"},[l("rect",{width:"153.043",height:"110",fill:"white"})])],-1),s={__name:"MoonwalkerIcon",props:{primaryFillColor:{type:String,default:"fill-primary-500"},secondaryFillColor:{type:String,default:"fill-gray-600"}},setup(e){return(a,c)=>(C(),i("svg",o,[l("g",r,[l("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M33.4784 93.2609C33.4784 94.5809 32.4071 95.6522 31.0871 95.6522C29.7671 95.6522 28.6958 94.5809 28.6958 93.2609C28.6958 91.9409 29.7671 90.8696 31.0871 90.8696C32.4071 90.8696 33.4784 91.9409 33.4784 93.2609Z",class:d(e.primaryFillColor)},null,2),l("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M78.913 93.2609C78.913 94.5809 77.8417 95.6522 76.5217 95.6522C75.2017 95.6522 74.1304 94.5809 74.1304 93.2609C74.1304 91.9409 75.2017 90.8696 76.5217 90.8696C77.8417 90.8696 78.913 91.9409 78.913 93.2609Z",class:d(e.primaryFillColor)},null,2),l("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M124.348 93.2609C124.348 94.5809 123.277 95.6522 121.957 95.6522C120.637 95.6522 119.565 94.5809 119.565 93.2609C119.565 91.9409 120.637 90.8696 121.957 90.8696C123.277 90.8696 124.348 91.9409 124.348 93.2609Z",class:d(e.primaryFillColor)},null,2),l("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M148.261 54.9999C149.578 54.9999 150.652 56.0736 150.652 57.3913V83.6956C150.652 87.658 147.441 90.8695 143.478 90.8695H137.352V93.2608H143.478C148.761 93.2608 153.043 88.978 153.043 83.6956V57.3913C153.043 54.7489 150.903 52.6086 148.261 52.6086H4.78261C2.14022 52.6086 0 54.7489 0 57.3913V83.6956C0 88.978 4.28283 93.2608 9.56522 93.2608H15.4478V90.8695H9.56522C5.60283 90.8695 2.3913 87.658 2.3913 83.6956V57.3913C2.3913 56.0713 3.46261 54.9999 4.78261 54.9999H148.261ZM106.243 90.8695H91.7113L92.1011 93.2608H106.145L106.243 90.8695ZM60.8946 90.8695H46.5587L46.4607 93.2608H60.6985L60.8946 90.8695Z",class:d(e.secondaryFillColor)},null,2),l("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M38.2611 45.4348H23.9133C22.5933 45.4348 21.522 46.5061 21.522 47.8261V52.6087C21.522 53.9287 22.5933 55 23.9133 55H38.2611C39.5811 55 40.6524 53.9287 40.6524 52.6087V47.8261C40.6524 46.5061 39.5811 45.4348 38.2611 45.4348ZM23.9133 52.6087H38.2611V47.8261H23.9133V52.6087Z",class:d(e.secondaryFillColor)},null,2),l("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M28.6957 62.174C28.6957 63.494 27.6244 64.5653 26.3044 64.5653C24.9844 64.5653 23.9131 63.494 23.9131 62.174C23.9131 60.854 24.9844 59.7827 26.3044 59.7827C27.6244 59.7827 28.6957 60.854 28.6957 62.174Z",class:d(e.primaryFillColor)},null,2),l("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M38.2606 62.174C38.2606 63.494 37.1893 64.5653 35.8693 64.5653C34.5493 64.5653 33.478 63.494 33.478 62.174C33.478 60.854 34.5493 59.7827 35.8693 59.7827C37.1893 59.7827 38.2606 60.854 38.2606 62.174Z",class:d(e.primaryFillColor)},null,2),l("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M59.7826 64.5653H45.4348C44.1195 64.5653 43.0435 63.4892 43.0435 62.174C43.0435 60.8588 44.1195 59.7827 45.4348 59.7827H59.7826C61.0978 59.7827 62.1739 60.8588 62.1739 62.174C62.1739 63.4892 61.0978 64.5653 59.7826 64.5653Z",class:d(e.primaryFillColor)},null,2),l("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M101.793 40.0497L118.533 11.354L119.982 13.6162L104.754 39.722L101.793 40.0497Z",class:d(e.primaryFillColor)},null,2),l("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M110.163 40.0496L124.556 15.3761L127.383 15.2781L112.973 39.9826L110.163 40.0496Z",class:d(e.primaryFillColor)},null,2),l("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M74.1304 7.17402H119.565V4.78271H74.1304V7.17402Z",class:d(e.primaryFillColor)},null,2),l("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M74.1304 14.3478H119.565V11.9565H74.1304V14.3478Z",class:d(e.primaryFillColor)},null,2),l("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M71.7389 2.3913V16.7391H50.2172C48.8996 16.7391 47.8259 15.6654 47.8259 14.3478V11.9565H45.4346V14.3478C45.4346 16.9902 47.5748 19.1304 50.2172 19.1304H74.1302V0H50.2172C47.5748 0 45.4346 2.14022 45.4346 4.78261V7.17391H47.8259V4.78261C47.8259 3.465 48.8996 2.3913 50.2172 2.3913H71.7389Z",class:d(e.secondaryFillColor)},null,2),l("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M124.348 2.39136C120.385 2.39136 117.174 5.60288 117.174 9.56527C117.174 13.5277 120.385 16.7392 124.348 16.7392C128.31 16.7392 131.522 13.5277 131.522 9.56527C131.522 5.60288 128.31 2.39136 124.348 2.39136ZM124.348 4.78266C126.985 4.78266 129.13 6.92766 129.13 9.56527C129.13 12.2029 126.985 14.3479 124.348 14.3479C121.71 14.3479 119.565 12.2029 119.565 9.56527C119.565 6.92766 121.71 4.78266 124.348 4.78266Z",class:d(e.secondaryFillColor)},null,2),l("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M108.902 38.261C98.1965 38.261 89.1358 45.2986 86.0869 55.0001H131.718C128.669 45.2986 119.608 38.261 108.902 38.261ZM108.902 40.6523C117.219 40.6523 124.608 45.3416 128.191 52.6088H89.6141C93.1963 45.3416 100.585 40.6523 108.902 40.6523Z",class:d(e.secondaryFillColor)},null,2),l("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M31.0868 76.5217C21.842 76.5217 14.3477 84.0161 14.3477 93.2609C14.3477 102.506 21.842 110 31.0868 110C40.3316 110 47.8259 102.506 47.8259 93.2609C47.8259 84.0161 40.3316 76.5217 31.0868 76.5217ZM31.0868 78.913C38.9972 78.913 45.4346 85.3504 45.4346 93.2609C45.4346 101.171 38.9972 107.609 31.0868 107.609C23.1764 107.609 16.739 101.171 16.739 93.2609C16.739 85.3504 23.1764 78.913 31.0868 78.913Z",class:d(e.secondaryFillColor)},null,2),l("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M121.956 76.5217C112.712 76.5217 105.217 84.0161 105.217 93.2609C105.217 102.506 112.712 110 121.956 110C131.201 110 138.696 102.506 138.696 93.2609C138.696 84.0161 131.201 76.5217 121.956 76.5217ZM121.956 78.913C129.867 78.913 136.304 85.3504 136.304 93.2609C136.304 101.171 129.867 107.609 121.956 107.609C114.046 107.609 107.609 101.171 107.609 93.2609C107.609 85.3504 114.046 78.913 121.956 78.913Z",class:d(e.secondaryFillColor)},null,2),l("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M76.5218 76.5217C67.2771 76.5217 59.7827 84.0161 59.7827 93.2609C59.7827 102.506 67.2771 110 76.5218 110C85.7666 110 93.261 102.506 93.261 93.2609C93.261 84.0161 85.7666 76.5217 76.5218 76.5217ZM76.5218 78.913C84.4323 78.913 90.8697 85.3504 90.8697 93.2609C90.8697 101.171 84.4323 107.609 76.5218 107.609C68.6114 107.609 62.174 101.171 62.174 93.2609C62.174 85.3504 68.6114 78.913 76.5218 78.913Z",class:d(e.secondaryFillColor)},null,2)]),n]))}};export{s as _}; +import{o as C,c as i,b as l,J as d}from"./main-pPEsZPea.js";const o={width:"154",height:"110",viewBox:"0 0 154 110",fill:"none",xmlns:"http://www.w3.org/2000/svg"},r={"clip-path":"url(#clip0)"},n=l("defs",null,[l("clipPath",{id:"clip0"},[l("rect",{width:"153.043",height:"110",fill:"white"})])],-1),s={__name:"MoonwalkerIcon",props:{primaryFillColor:{type:String,default:"fill-primary-500"},secondaryFillColor:{type:String,default:"fill-gray-600"}},setup(e){return(a,c)=>(C(),i("svg",o,[l("g",r,[l("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M33.4784 93.2609C33.4784 94.5809 32.4071 95.6522 31.0871 95.6522C29.7671 95.6522 28.6958 94.5809 28.6958 93.2609C28.6958 91.9409 29.7671 90.8696 31.0871 90.8696C32.4071 90.8696 33.4784 91.9409 33.4784 93.2609Z",class:d(e.primaryFillColor)},null,2),l("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M78.913 93.2609C78.913 94.5809 77.8417 95.6522 76.5217 95.6522C75.2017 95.6522 74.1304 94.5809 74.1304 93.2609C74.1304 91.9409 75.2017 90.8696 76.5217 90.8696C77.8417 90.8696 78.913 91.9409 78.913 93.2609Z",class:d(e.primaryFillColor)},null,2),l("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M124.348 93.2609C124.348 94.5809 123.277 95.6522 121.957 95.6522C120.637 95.6522 119.565 94.5809 119.565 93.2609C119.565 91.9409 120.637 90.8696 121.957 90.8696C123.277 90.8696 124.348 91.9409 124.348 93.2609Z",class:d(e.primaryFillColor)},null,2),l("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M148.261 54.9999C149.578 54.9999 150.652 56.0736 150.652 57.3913V83.6956C150.652 87.658 147.441 90.8695 143.478 90.8695H137.352V93.2608H143.478C148.761 93.2608 153.043 88.978 153.043 83.6956V57.3913C153.043 54.7489 150.903 52.6086 148.261 52.6086H4.78261C2.14022 52.6086 0 54.7489 0 57.3913V83.6956C0 88.978 4.28283 93.2608 9.56522 93.2608H15.4478V90.8695H9.56522C5.60283 90.8695 2.3913 87.658 2.3913 83.6956V57.3913C2.3913 56.0713 3.46261 54.9999 4.78261 54.9999H148.261ZM106.243 90.8695H91.7113L92.1011 93.2608H106.145L106.243 90.8695ZM60.8946 90.8695H46.5587L46.4607 93.2608H60.6985L60.8946 90.8695Z",class:d(e.secondaryFillColor)},null,2),l("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M38.2611 45.4348H23.9133C22.5933 45.4348 21.522 46.5061 21.522 47.8261V52.6087C21.522 53.9287 22.5933 55 23.9133 55H38.2611C39.5811 55 40.6524 53.9287 40.6524 52.6087V47.8261C40.6524 46.5061 39.5811 45.4348 38.2611 45.4348ZM23.9133 52.6087H38.2611V47.8261H23.9133V52.6087Z",class:d(e.secondaryFillColor)},null,2),l("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M28.6957 62.174C28.6957 63.494 27.6244 64.5653 26.3044 64.5653C24.9844 64.5653 23.9131 63.494 23.9131 62.174C23.9131 60.854 24.9844 59.7827 26.3044 59.7827C27.6244 59.7827 28.6957 60.854 28.6957 62.174Z",class:d(e.primaryFillColor)},null,2),l("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M38.2606 62.174C38.2606 63.494 37.1893 64.5653 35.8693 64.5653C34.5493 64.5653 33.478 63.494 33.478 62.174C33.478 60.854 34.5493 59.7827 35.8693 59.7827C37.1893 59.7827 38.2606 60.854 38.2606 62.174Z",class:d(e.primaryFillColor)},null,2),l("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M59.7826 64.5653H45.4348C44.1195 64.5653 43.0435 63.4892 43.0435 62.174C43.0435 60.8588 44.1195 59.7827 45.4348 59.7827H59.7826C61.0978 59.7827 62.1739 60.8588 62.1739 62.174C62.1739 63.4892 61.0978 64.5653 59.7826 64.5653Z",class:d(e.primaryFillColor)},null,2),l("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M101.793 40.0497L118.533 11.354L119.982 13.6162L104.754 39.722L101.793 40.0497Z",class:d(e.primaryFillColor)},null,2),l("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M110.163 40.0496L124.556 15.3761L127.383 15.2781L112.973 39.9826L110.163 40.0496Z",class:d(e.primaryFillColor)},null,2),l("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M74.1304 7.17402H119.565V4.78271H74.1304V7.17402Z",class:d(e.primaryFillColor)},null,2),l("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M74.1304 14.3478H119.565V11.9565H74.1304V14.3478Z",class:d(e.primaryFillColor)},null,2),l("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M71.7389 2.3913V16.7391H50.2172C48.8996 16.7391 47.8259 15.6654 47.8259 14.3478V11.9565H45.4346V14.3478C45.4346 16.9902 47.5748 19.1304 50.2172 19.1304H74.1302V0H50.2172C47.5748 0 45.4346 2.14022 45.4346 4.78261V7.17391H47.8259V4.78261C47.8259 3.465 48.8996 2.3913 50.2172 2.3913H71.7389Z",class:d(e.secondaryFillColor)},null,2),l("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M124.348 2.39136C120.385 2.39136 117.174 5.60288 117.174 9.56527C117.174 13.5277 120.385 16.7392 124.348 16.7392C128.31 16.7392 131.522 13.5277 131.522 9.56527C131.522 5.60288 128.31 2.39136 124.348 2.39136ZM124.348 4.78266C126.985 4.78266 129.13 6.92766 129.13 9.56527C129.13 12.2029 126.985 14.3479 124.348 14.3479C121.71 14.3479 119.565 12.2029 119.565 9.56527C119.565 6.92766 121.71 4.78266 124.348 4.78266Z",class:d(e.secondaryFillColor)},null,2),l("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M108.902 38.261C98.1965 38.261 89.1358 45.2986 86.0869 55.0001H131.718C128.669 45.2986 119.608 38.261 108.902 38.261ZM108.902 40.6523C117.219 40.6523 124.608 45.3416 128.191 52.6088H89.6141C93.1963 45.3416 100.585 40.6523 108.902 40.6523Z",class:d(e.secondaryFillColor)},null,2),l("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M31.0868 76.5217C21.842 76.5217 14.3477 84.0161 14.3477 93.2609C14.3477 102.506 21.842 110 31.0868 110C40.3316 110 47.8259 102.506 47.8259 93.2609C47.8259 84.0161 40.3316 76.5217 31.0868 76.5217ZM31.0868 78.913C38.9972 78.913 45.4346 85.3504 45.4346 93.2609C45.4346 101.171 38.9972 107.609 31.0868 107.609C23.1764 107.609 16.739 101.171 16.739 93.2609C16.739 85.3504 23.1764 78.913 31.0868 78.913Z",class:d(e.secondaryFillColor)},null,2),l("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M121.956 76.5217C112.712 76.5217 105.217 84.0161 105.217 93.2609C105.217 102.506 112.712 110 121.956 110C131.201 110 138.696 102.506 138.696 93.2609C138.696 84.0161 131.201 76.5217 121.956 76.5217ZM121.956 78.913C129.867 78.913 136.304 85.3504 136.304 93.2609C136.304 101.171 129.867 107.609 121.956 107.609C114.046 107.609 107.609 101.171 107.609 93.2609C107.609 85.3504 114.046 78.913 121.956 78.913Z",class:d(e.secondaryFillColor)},null,2),l("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M76.5218 76.5217C67.2771 76.5217 59.7827 84.0161 59.7827 93.2609C59.7827 102.506 67.2771 110 76.5218 110C85.7666 110 93.261 102.506 93.261 93.2609C93.261 84.0161 85.7666 76.5217 76.5218 76.5217ZM76.5218 78.913C84.4323 78.913 90.8697 85.3504 90.8697 93.2609C90.8697 101.171 84.4323 107.609 76.5218 107.609C68.6114 107.609 62.174 101.171 62.174 93.2609C62.174 85.3504 68.6114 78.913 76.5218 78.913Z",class:d(e.secondaryFillColor)},null,2)]),n]))}};export{s as _}; diff --git a/public/build/assets/NoteModal-h_90cxoW.js b/public/build/assets/NoteModal-YX0uc_EM.js similarity index 97% rename from public/build/assets/NoteModal-h_90cxoW.js rename to public/build/assets/NoteModal-YX0uc_EM.js index af980290..d2f2fd55 100644 --- a/public/build/assets/NoteModal-h_90cxoW.js +++ b/public/build/assets/NoteModal-YX0uc_EM.js @@ -1 +1 @@ -import{a4 as T,s as g,a1 as $,F as A,u as H,aq as J,as as O,L as R,v as X,f as E,H as Y,k as B,g as _,h as S,I as K,j as Q,z as W,Y as Z,r as p,o as ee,m as te,w as m,b as I,p as b,t as C,l as o,a as l,q as ae,J as oe}from"./main-B9dpPbRR.js";import{u as ne}from"./payment-Y8OywN76.js";const se=(M=!1)=>(M?window.pinia.defineStore:T)({id:"notes",state:()=>({notes:[],currentNote:{id:null,type:"",name:"",notes:""}}),getters:{isEdit:n=>!!n.currentNote.id},actions:{resetCurrentNote(){this.currentNote={type:"",name:"",notes:""}},fetchNotes(n){return new Promise((e,u)=>{g.get("/api/v1/notes",{params:n}).then(t=>{this.notes=t.data.data,e(t)}).catch(t=>{$(t),u(t)})})},fetchNote(n){return new Promise((e,u)=>{g.get(`/api/v1/notes/${n}`).then(t=>{this.currentNote=t.data.data,e(t)}).catch(t=>{$(t),u(t)})})},addNote(n){return new Promise((e,u)=>{g.post("/api/v1/notes",n).then(t=>{this.notes.push(t.data),e(t)}).catch(t=>{$(t),u(t)})})},updateNote(n){return new Promise((e,u)=>{g.put(`/api/v1/notes/${n.id}`,n).then(t=>{if(t.data){let N=this.notes.findIndex(i=>i.id===t.data.data.id);this.notes[N]=n.notes}e(t)}).catch(t=>{$(t),u(t)})})},deleteNote(n){return new Promise((e,u)=>{g.delete(`/api/v1/notes/${n}`).then(t=>{let N=this.notes.findIndex(i=>i.id===n);this.notes.splice(N,1),e(t)}).catch(t=>{$(t),u(t)})})}}})(),re={class:"flex justify-between w-full"},ie={class:"px-8 py-8 sm:p-6"},ue={class:"z-0 flex justify-end px-4 py-4 border-t border-solid border-gray-light"},de={__name:"NoteModal",setup(M){const c=A(),n=H(),e=se(),u=J(),t=ne(),N=O(),i=R(),{t:v}=X.useI18n();let f=E(!1);const x=Y(["Invoice","Estimate","Payment"]);let y=E(["customer","customerCustom"]);const z=B(()=>c.active&&c.componentName==="NoteModal"),k=B(()=>({currentNote:{name:{required:_.withMessage(v("validation.required"),S),minLength:_.withMessage(v("validation.name_min_length",{count:3}),K(3))},notes:{required:_.withMessage(v("validation.required"),S)},type:{required:_.withMessage(v("validation.required"),S)}}})),s=Q(k,B(()=>e));W(()=>e.currentNote.type,a=>{V()}),Z(()=>{i.name==="estimates.create"?e.currentNote.type="Estimate":i.name==="invoices.create"?e.currentNote.type="Invoice":e.currentNote.type="Payment"});function V(){y.value=["customer","customerCustom"],e.currentNote.type=="Invoice"&&y.value.push("invoice","invoiceCustom"),e.currentNote.type=="Estimate"&&y.value.push("estimate","estimateCustom"),e.currentNote.type=="Payment"&&y.value.push("payment","paymentCustom")}async function D(){if(s.value.currentNote.$touch(),s.value.currentNote.$invalid)return!0;if(f.value=!0,e.isEdit){let a={id:e.currentNote.id,...e.currentNote};await e.updateNote(a).then(r=>{f.value=!1,r.data&&(n.showNotification({type:"success",message:v("settings.customization.notes.note_updated")}),c.refreshData&&c.refreshData(),h())}).catch(r=>{f.value=!1})}else await e.addNote(e.currentNote).then(a=>{f.value=!1,a.data&&(n.showNotification({type:"success",message:v("settings.customization.notes.note_added")}),(i.name==="invoices.create"&&a.data.data.type==="Invoice"||i.name==="invoices.edit"&&a.data.data.type==="Invoice")&&u.selectNote(a.data.data),(i.name==="estimates.create"&&a.data.data.type==="Estimate"||i.name==="estimates.edit"&&a.data.data.type==="Estimate")&&N.selectNote(a.data.data),(i.name==="payments.create"&&a.data.data.type==="Payment"||i.name==="payments.edit"&&a.data.data.type==="Payment")&&t.selectNote(a.data.data)),c.refreshData&&c.refreshData(),h()}).catch(a=>{f.value=!1})}function h(){c.closeModal(),setTimeout(()=>{e.resetCurrentNote(),s.value.$reset()},300)}return(a,r)=>{const q=p("BaseIcon"),j=p("BaseInput"),w=p("BaseInputGroup"),F=p("BaseMultiselect"),G=p("BaseCustomInput"),L=p("BaseInputGrid"),P=p("BaseButton"),U=p("BaseModal");return ee(),te(U,{show:z.value,onClose:h,onOpen:V},{header:m(()=>[I("div",re,[b(C(o(c).title)+" ",1),l(q,{name:"XIcon",class:"h-6 w-6 text-gray-500 cursor-pointer",onClick:h})])]),default:m(()=>[I("form",{action:"",onSubmit:ae(D,["prevent"])},[I("div",ie,[l(L,{layout:"one-column"},{default:m(()=>[l(w,{label:a.$t("settings.customization.notes.name"),variant:"vertical",error:o(s).currentNote.name.$error&&o(s).currentNote.name.$errors[0].$message,required:""},{default:m(()=>[l(j,{modelValue:o(e).currentNote.name,"onUpdate:modelValue":r[0]||(r[0]=d=>o(e).currentNote.name=d),invalid:o(s).currentNote.name.$error,type:"text",onInput:r[1]||(r[1]=d=>o(s).currentNote.name.$touch())},null,8,["modelValue","invalid"])]),_:1},8,["label","error"]),l(w,{label:a.$t("settings.customization.notes.type"),error:o(s).currentNote.type.$error&&o(s).currentNote.type.$errors[0].$message,required:""},{default:m(()=>[l(F,{modelValue:o(e).currentNote.type,"onUpdate:modelValue":r[2]||(r[2]=d=>o(e).currentNote.type=d),options:x,"value-prop":"type",class:"mt-2"},null,8,["modelValue","options"])]),_:1},8,["label","error"]),l(w,{label:a.$t("settings.customization.notes.notes"),error:o(s).currentNote.notes.$error&&o(s).currentNote.notes.$errors[0].$message,required:""},{default:m(()=>[l(G,{modelValue:o(e).currentNote.notes,"onUpdate:modelValue":r[3]||(r[3]=d=>o(e).currentNote.notes=d),invalid:o(s).currentNote.notes.$error,fields:o(y),onInput:r[4]||(r[4]=d=>o(s).currentNote.notes.$touch())},null,8,["modelValue","invalid","fields"])]),_:1},8,["label","error"])]),_:1})]),I("div",ue,[l(P,{class:"mr-2",variant:"primary-outline",type:"button",onClick:h},{default:m(()=>[b(C(a.$t("general.cancel")),1)]),_:1}),l(P,{loading:o(f),disabled:o(f),variant:"primary",type:"submit"},{left:m(d=>[l(q,{name:"SaveIcon",class:oe(d.class)},null,8,["class"])]),default:m(()=>[b(" "+C(o(e).isEdit?a.$t("general.update"):a.$t("general.save")),1)]),_:1},8,["loading","disabled"])])],32)]),_:1},8,["show"])}}};export{de as _,se as u}; +import{a4 as T,s as g,a1 as $,F as A,u as H,aq as J,as as O,L as R,v as X,f as E,H as Y,k as B,g as _,h as S,I as K,j as Q,z as W,Y as Z,r as p,o as ee,m as te,w as m,b as I,p as b,t as C,l as o,a as l,q as ae,J as oe}from"./main-pPEsZPea.js";import{u as ne}from"./payment-fIjVKZH2.js";const se=(M=!1)=>(M?window.pinia.defineStore:T)({id:"notes",state:()=>({notes:[],currentNote:{id:null,type:"",name:"",notes:""}}),getters:{isEdit:n=>!!n.currentNote.id},actions:{resetCurrentNote(){this.currentNote={type:"",name:"",notes:""}},fetchNotes(n){return new Promise((e,u)=>{g.get("/api/v1/notes",{params:n}).then(t=>{this.notes=t.data.data,e(t)}).catch(t=>{$(t),u(t)})})},fetchNote(n){return new Promise((e,u)=>{g.get(`/api/v1/notes/${n}`).then(t=>{this.currentNote=t.data.data,e(t)}).catch(t=>{$(t),u(t)})})},addNote(n){return new Promise((e,u)=>{g.post("/api/v1/notes",n).then(t=>{this.notes.push(t.data),e(t)}).catch(t=>{$(t),u(t)})})},updateNote(n){return new Promise((e,u)=>{g.put(`/api/v1/notes/${n.id}`,n).then(t=>{if(t.data){let N=this.notes.findIndex(i=>i.id===t.data.data.id);this.notes[N]=n.notes}e(t)}).catch(t=>{$(t),u(t)})})},deleteNote(n){return new Promise((e,u)=>{g.delete(`/api/v1/notes/${n}`).then(t=>{let N=this.notes.findIndex(i=>i.id===n);this.notes.splice(N,1),e(t)}).catch(t=>{$(t),u(t)})})}}})(),re={class:"flex justify-between w-full"},ie={class:"px-8 py-8 sm:p-6"},ue={class:"z-0 flex justify-end px-4 py-4 border-t border-solid border-gray-light"},de={__name:"NoteModal",setup(M){const c=A(),n=H(),e=se(),u=J(),t=ne(),N=O(),i=R(),{t:v}=X.useI18n();let f=E(!1);const x=Y(["Invoice","Estimate","Payment"]);let y=E(["customer","customerCustom"]);const z=B(()=>c.active&&c.componentName==="NoteModal"),k=B(()=>({currentNote:{name:{required:_.withMessage(v("validation.required"),S),minLength:_.withMessage(v("validation.name_min_length",{count:3}),K(3))},notes:{required:_.withMessage(v("validation.required"),S)},type:{required:_.withMessage(v("validation.required"),S)}}})),s=Q(k,B(()=>e));W(()=>e.currentNote.type,a=>{V()}),Z(()=>{i.name==="estimates.create"?e.currentNote.type="Estimate":i.name==="invoices.create"?e.currentNote.type="Invoice":e.currentNote.type="Payment"});function V(){y.value=["customer","customerCustom"],e.currentNote.type=="Invoice"&&y.value.push("invoice","invoiceCustom"),e.currentNote.type=="Estimate"&&y.value.push("estimate","estimateCustom"),e.currentNote.type=="Payment"&&y.value.push("payment","paymentCustom")}async function D(){if(s.value.currentNote.$touch(),s.value.currentNote.$invalid)return!0;if(f.value=!0,e.isEdit){let a={id:e.currentNote.id,...e.currentNote};await e.updateNote(a).then(r=>{f.value=!1,r.data&&(n.showNotification({type:"success",message:v("settings.customization.notes.note_updated")}),c.refreshData&&c.refreshData(),h())}).catch(r=>{f.value=!1})}else await e.addNote(e.currentNote).then(a=>{f.value=!1,a.data&&(n.showNotification({type:"success",message:v("settings.customization.notes.note_added")}),(i.name==="invoices.create"&&a.data.data.type==="Invoice"||i.name==="invoices.edit"&&a.data.data.type==="Invoice")&&u.selectNote(a.data.data),(i.name==="estimates.create"&&a.data.data.type==="Estimate"||i.name==="estimates.edit"&&a.data.data.type==="Estimate")&&N.selectNote(a.data.data),(i.name==="payments.create"&&a.data.data.type==="Payment"||i.name==="payments.edit"&&a.data.data.type==="Payment")&&t.selectNote(a.data.data)),c.refreshData&&c.refreshData(),h()}).catch(a=>{f.value=!1})}function h(){c.closeModal(),setTimeout(()=>{e.resetCurrentNote(),s.value.$reset()},300)}return(a,r)=>{const q=p("BaseIcon"),j=p("BaseInput"),w=p("BaseInputGroup"),F=p("BaseMultiselect"),G=p("BaseCustomInput"),L=p("BaseInputGrid"),P=p("BaseButton"),U=p("BaseModal");return ee(),te(U,{show:z.value,onClose:h,onOpen:V},{header:m(()=>[I("div",re,[b(C(o(c).title)+" ",1),l(q,{name:"XIcon",class:"h-6 w-6 text-gray-500 cursor-pointer",onClick:h})])]),default:m(()=>[I("form",{action:"",onSubmit:ae(D,["prevent"])},[I("div",ie,[l(L,{layout:"one-column"},{default:m(()=>[l(w,{label:a.$t("settings.customization.notes.name"),variant:"vertical",error:o(s).currentNote.name.$error&&o(s).currentNote.name.$errors[0].$message,required:""},{default:m(()=>[l(j,{modelValue:o(e).currentNote.name,"onUpdate:modelValue":r[0]||(r[0]=d=>o(e).currentNote.name=d),invalid:o(s).currentNote.name.$error,type:"text",onInput:r[1]||(r[1]=d=>o(s).currentNote.name.$touch())},null,8,["modelValue","invalid"])]),_:1},8,["label","error"]),l(w,{label:a.$t("settings.customization.notes.type"),error:o(s).currentNote.type.$error&&o(s).currentNote.type.$errors[0].$message,required:""},{default:m(()=>[l(F,{modelValue:o(e).currentNote.type,"onUpdate:modelValue":r[2]||(r[2]=d=>o(e).currentNote.type=d),options:x,"value-prop":"type",class:"mt-2"},null,8,["modelValue","options"])]),_:1},8,["label","error"]),l(w,{label:a.$t("settings.customization.notes.notes"),error:o(s).currentNote.notes.$error&&o(s).currentNote.notes.$errors[0].$message,required:""},{default:m(()=>[l(G,{modelValue:o(e).currentNote.notes,"onUpdate:modelValue":r[3]||(r[3]=d=>o(e).currentNote.notes=d),invalid:o(s).currentNote.notes.$error,fields:o(y),onInput:r[4]||(r[4]=d=>o(s).currentNote.notes.$touch())},null,8,["modelValue","invalid","fields"])]),_:1},8,["label","error"])]),_:1})]),I("div",ue,[l(P,{class:"mr-2",variant:"primary-outline",type:"button",onClick:h},{default:m(()=>[b(C(a.$t("general.cancel")),1)]),_:1}),l(P,{loading:o(f),disabled:o(f),variant:"primary",type:"submit"},{left:m(d=>[l(q,{name:"SaveIcon",class:oe(d.class)},null,8,["class"])]),default:m(()=>[b(" "+C(o(e).isEdit?a.$t("general.update"):a.$t("general.save")),1)]),_:1},8,["loading","disabled"])])],32)]),_:1},8,["show"])}}};export{de as _,se as u}; diff --git a/public/build/assets/NotesSetting--1BykhOs.js b/public/build/assets/NotesSetting-Rzov00xL.js similarity index 94% rename from public/build/assets/NotesSetting--1BykhOs.js rename to public/build/assets/NotesSetting-Rzov00xL.js index 92fe43d1..cba51a20 100644 --- a/public/build/assets/NotesSetting--1BykhOs.js +++ b/public/build/assets/NotesSetting-Rzov00xL.js @@ -1 +1 @@ -import{a7 as z,u as C,v as I,L as T,M as x,F as M,a5 as E,r,o as d,m as p,w as t,l as m,a as i,Q as v,p as S,t as D,K as k,f as O,k as j,c as F,J as P,N as G,H}from"./main-B9dpPbRR.js";import{u as A,_ as L}from"./NoteModal-h_90cxoW.js";import"./payment-Y8OywN76.js";const V={__name:"NoteIndexDropdown",props:{row:{type:Object,default:null},table:{type:Object,default:null},loadData:{type:Function,default:null}},setup(_){const c=_,B=z(),g=C(),{t:a}=I.useI18n(),o=A(),h=T(),y=x(),w=M();E("utils");function b(n){o.fetchNote(n),w.openModal({title:a("settings.customization.notes.edit_note"),componentName:"NoteModal",size:"md",refreshData:c.loadData})}function s(n){B.openDialog({title:a("general.are_you_sure"),message:a("settings.customization.notes.note_confirm_delete"),yesLabel:a("general.yes"),noLabel:a("general.no"),variant:"danger",hideNoButton:!1,size:"lg"}).then(async()=>{(await o.deleteNote(n)).data.success?g.showNotification({type:"success",message:a("settings.customization.notes.deleted_message")}):g.showNotification({type:"error",message:a("settings.customization.notes.already_in_use")}),c.loadData&&c.loadData()})}return(n,e)=>{const l=r("BaseIcon"),u=r("BaseButton"),N=r("BaseDropdownItem"),f=r("BaseDropdown");return d(),p(f,null,{activator:t(()=>[m(h).name==="notes.view"?(d(),p(u,{key:0,variant:"primary"},{default:t(()=>[i(l,{name:"DotsHorizontalIcon",class:"h-5 text-white"})]),_:1})):(d(),p(l,{key:1,name:"DotsHorizontalIcon",class:"h-5 text-gray-500"}))]),default:t(()=>[m(y).hasAbilities(m(v).MANAGE_NOTE)?(d(),p(N,{key:0,onClick:e[0]||(e[0]=$=>b(_.row.id))},{default:t(()=>[i(l,{name:"PencilIcon",class:"w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500"}),S(" "+D(n.$t("general.edit")),1)]),_:1})):k("",!0),m(y).hasAbilities(m(v).MANAGE_NOTE)?(d(),p(N,{key:1,onClick:e[1]||(e[1]=$=>s(_.row.id))},{default:t(()=>[i(l,{name:"TrashIcon",class:"w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500"}),S(" "+D(n.$t("general.delete")),1)]),_:1})):k("",!0)]),_:1})}}},R={__name:"NotesSetting",setup(_){const{t:c}=I.useI18n(),B=M();z();const g=A();C();const a=x(),o=O(""),h=j(()=>[{key:"name",label:c("settings.customization.notes.name"),thClass:"extra",tdClass:"font-medium text-gray-900"},{key:"type",label:c("settings.customization.notes.type"),thClass:"extra",tdClass:"font-medium text-gray-900"},{key:"actions",label:"",tdClass:"text-right text-sm font-medium",sortable:!1}]);async function y({page:s,filter:n,sort:e}){let l=H({orderByField:e.fieldName||"created_at",orderBy:e.order||"desc",page:s}),u=await g.fetchNotes(l);return{data:u.data.data,pagination:{totalPages:u.data.meta.last_page,currentPage:s,totalCount:u.data.meta.total,limit:5}}}async function w(){await B.openModal({title:c("settings.customization.notes.add_note"),componentName:"NoteModal",size:"md",refreshData:o.value&&o.value.refresh})}async function b(){o.value&&o.value.refresh()}return(s,n)=>{const e=r("BaseIcon"),l=r("BaseButton"),u=r("BaseTable"),N=r("BaseSettingCard");return d(),F(G,null,[i(L),i(N,{title:s.$t("settings.customization.notes.title"),description:s.$t("settings.customization.notes.description")},{action:t(()=>[m(a).hasAbilities(m(v).MANAGE_NOTE)?(d(),p(l,{key:0,variant:"primary-outline",onClick:w},{left:t(f=>[i(e,{class:P(f.class),name:"PlusIcon"},null,8,["class"])]),default:t(()=>[S(" "+D(s.$t("settings.customization.notes.add_note")),1)]),_:1})):k("",!0)]),default:t(()=>[i(u,{ref_key:"table",ref:o,data:y,columns:h.value,class:"mt-14"},{"cell-actions":t(({row:f})=>[i(V,{row:f.data,table:o.value,"load-data":b},null,8,["row","table"])]),_:1},8,["columns"])]),_:1},8,["title","description"])],64)}}};export{R as default}; +import{a7 as z,u as C,v as I,L as T,M as x,F as M,a5 as E,r,o as d,m as p,w as t,l as m,a as i,Q as v,p as S,t as D,K as k,f as O,k as j,c as F,J as P,N as G,H}from"./main-pPEsZPea.js";import{u as A,_ as L}from"./NoteModal-YX0uc_EM.js";import"./payment-fIjVKZH2.js";const V={__name:"NoteIndexDropdown",props:{row:{type:Object,default:null},table:{type:Object,default:null},loadData:{type:Function,default:null}},setup(_){const c=_,B=z(),g=C(),{t:a}=I.useI18n(),o=A(),h=T(),y=x(),w=M();E("utils");function b(n){o.fetchNote(n),w.openModal({title:a("settings.customization.notes.edit_note"),componentName:"NoteModal",size:"md",refreshData:c.loadData})}function s(n){B.openDialog({title:a("general.are_you_sure"),message:a("settings.customization.notes.note_confirm_delete"),yesLabel:a("general.yes"),noLabel:a("general.no"),variant:"danger",hideNoButton:!1,size:"lg"}).then(async()=>{(await o.deleteNote(n)).data.success?g.showNotification({type:"success",message:a("settings.customization.notes.deleted_message")}):g.showNotification({type:"error",message:a("settings.customization.notes.already_in_use")}),c.loadData&&c.loadData()})}return(n,e)=>{const l=r("BaseIcon"),u=r("BaseButton"),N=r("BaseDropdownItem"),f=r("BaseDropdown");return d(),p(f,null,{activator:t(()=>[m(h).name==="notes.view"?(d(),p(u,{key:0,variant:"primary"},{default:t(()=>[i(l,{name:"DotsHorizontalIcon",class:"h-5 text-white"})]),_:1})):(d(),p(l,{key:1,name:"DotsHorizontalIcon",class:"h-5 text-gray-500"}))]),default:t(()=>[m(y).hasAbilities(m(v).MANAGE_NOTE)?(d(),p(N,{key:0,onClick:e[0]||(e[0]=$=>b(_.row.id))},{default:t(()=>[i(l,{name:"PencilIcon",class:"w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500"}),S(" "+D(n.$t("general.edit")),1)]),_:1})):k("",!0),m(y).hasAbilities(m(v).MANAGE_NOTE)?(d(),p(N,{key:1,onClick:e[1]||(e[1]=$=>s(_.row.id))},{default:t(()=>[i(l,{name:"TrashIcon",class:"w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500"}),S(" "+D(n.$t("general.delete")),1)]),_:1})):k("",!0)]),_:1})}}},R={__name:"NotesSetting",setup(_){const{t:c}=I.useI18n(),B=M();z();const g=A();C();const a=x(),o=O(""),h=j(()=>[{key:"name",label:c("settings.customization.notes.name"),thClass:"extra",tdClass:"font-medium text-gray-900"},{key:"type",label:c("settings.customization.notes.type"),thClass:"extra",tdClass:"font-medium text-gray-900"},{key:"actions",label:"",tdClass:"text-right text-sm font-medium",sortable:!1}]);async function y({page:s,filter:n,sort:e}){let l=H({orderByField:e.fieldName||"created_at",orderBy:e.order||"desc",page:s}),u=await g.fetchNotes(l);return{data:u.data.data,pagination:{totalPages:u.data.meta.last_page,currentPage:s,totalCount:u.data.meta.total,limit:5}}}async function w(){await B.openModal({title:c("settings.customization.notes.add_note"),componentName:"NoteModal",size:"md",refreshData:o.value&&o.value.refresh})}async function b(){o.value&&o.value.refresh()}return(s,n)=>{const e=r("BaseIcon"),l=r("BaseButton"),u=r("BaseTable"),N=r("BaseSettingCard");return d(),F(G,null,[i(L),i(N,{title:s.$t("settings.customization.notes.title"),description:s.$t("settings.customization.notes.description")},{action:t(()=>[m(a).hasAbilities(m(v).MANAGE_NOTE)?(d(),p(l,{key:0,variant:"primary-outline",onClick:w},{left:t(f=>[i(e,{class:P(f.class),name:"PlusIcon"},null,8,["class"])]),default:t(()=>[S(" "+D(s.$t("settings.customization.notes.add_note")),1)]),_:1})):k("",!0)]),default:t(()=>[i(u,{ref_key:"table",ref:o,data:y,columns:h.value,class:"mt-14"},{"cell-actions":t(({row:f})=>[i(V,{row:f.data,table:o.value,"load-data":b},null,8,["row","table"])]),_:1},8,["columns"])]),_:1},8,["title","description"])],64)}}};export{R as default}; diff --git a/public/build/assets/NotificationRoot-VBhW4oOA.js b/public/build/assets/NotificationRoot-3GhaCSMI.js similarity index 85% rename from public/build/assets/NotificationRoot-VBhW4oOA.js rename to public/build/assets/NotificationRoot-3GhaCSMI.js index aa76cfcb..9afef8ea 100644 --- a/public/build/assets/NotificationRoot-VBhW4oOA.js +++ b/public/build/assets/NotificationRoot-3GhaCSMI.js @@ -1 +1 @@ -import{u as h,f as x,k as u,Y as w,o as s,c as a,b as t,K as f,J as r,t as _,q as g,Z as y,r as k,a as N,w as C,N as z,O as L,m as M,aE as B}from"./main-B9dpPbRR.js";const b={class:"overflow-hidden rounded-lg shadow-xs"},S={class:"p-4"},$={class:"flex items-start"},T={class:"shrink-0"},O={key:0,class:"w-6 h-6 text-green-400",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},I=t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"},null,-1),V=[I],j={key:1,class:"w-6 h-6 text-blue-400",fill:"currentColor",viewBox:"0 0 20 20",xmlns:"http://www.w3.org/2000/svg"},E=t("path",{"fill-rule":"evenodd",d:"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7 4a1 1 0 11-2 0 1 1 0 012 0zm-1-9a1 1 0 00-1 1v4a1 1 0 102 0V6a1 1 0 00-1-1z","clip-rule":"evenodd"},null,-1),q=[E],A={key:2,class:"w-6 h-6 text-red-400",fill:"currentColor",viewBox:"0 0 24 24"},D=t("path",{"fill-rule":"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zM8.707 7.293a1 1 0 00-1.414 1.414L8.586 10l-1.293 1.293a1 1 0 101.414 1.414L10 11.414l1.293 1.293a1 1 0 001.414-1.414L11.414 10l1.293-1.293a1 1 0 00-1.414-1.414L10 8.586 8.707 7.293z","clip-rule":"evenodd"},null,-1),F=[D],G={class:"flex-1 w-0 ml-3 text-left"},J={class:"flex shrink-0"},K=t("svg",{class:"w-6 h-6",fill:"currentColor",viewBox:"0 0 20 20",xmlns:"http://www.w3.org/2000/svg"},[t("path",{"fill-rule":"evenodd",d:"M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z","clip-rule":"evenodd"})],-1),R=[K],Y={__name:"NotificationItem",props:{notification:{type:Object,default:null}},setup(e){const o=e,d=h();let l=x("");const i=u(()=>o.notification.type=="success"),m=u(()=>o.notification.type=="error"),n=u(()=>o.notification.type=="info");function c(){d.hideNotification(o.notification)}function p(){clearTimeout(l)}function v(){l=setTimeout(()=>{d.hideNotification(o.notification)},o.notification.time||5e3)}return w(()=>{v()}),(Q,U)=>(s(),a("div",{class:r([i.value||n.value?"bg-white":"bg-red-50","max-w-sm mb-3 rounded-lg shadow-lg cursor-pointer pointer-events-auto w-full md:w-96"]),onClick:g(c,["stop"]),onMouseenter:p,onMouseleave:v},[t("div",b,[t("div",S,[t("div",$,[t("div",T,[i.value?(s(),a("svg",O,V)):f("",!0),n.value?(s(),a("svg",j,q)):f("",!0),m.value?(s(),a("svg",A,F)):f("",!0)]),t("div",G,[t("p",{class:r(`text-sm leading-5 font-medium ${i.value||n.value?"text-gray-900":"text-red-800"}`)},_(e.notification.title?e.notification.title:i.value?"Success!":"Error"),3),t("p",{class:r(`mt-1 text-sm leading-5 ${i.value||n.value?"text-gray-500":"text-red-700"}`)},_(e.notification.message?e.notification.message:i.value?"Successful":"Something went wrong"),3)]),t("div",J,[t("button",{class:r([i.value||n.value?" text-gray-400 focus:text-gray-500":"text-red-400 focus:text-red-500","inline-flex w-5 h-5 transition duration-150 ease-in-out focus:outline-none"]),onClick:c},R,2)])])])])],34))}},Z={components:{NotificationItem:Y},setup(){const e=h();return{notifications:u(()=>e.notifications)}}},H={class:"fixed inset-0 z-50 flex flex-col items-end justify-start w-full px-4 py-6 pointer-events-none sm:p-6"};function P(e,o,d,l,i,m){const n=k("NotificationItem");return s(),a("div",H,[N(B,{"enter-active-class":"transition duration-300 ease-out","enter-from-class":"translate-y-2 opacity-0 sm:translate-y-0 sm:translate-x-2","enter-to-class":"translate-y-0 opacity-100 sm:translate-x-0","leave-active-class":"transition duration-100 ease-in","leave-from-class":"opacity-100","leave-to-class":"opacity-0"},{default:C(()=>[(s(!0),a(z,null,L(l.notifications,c=>(s(),M(n,{key:c.id,notification:c},null,8,["notification"]))),128))]),_:1})])}const X=y(Z,[["render",P]]);export{X as N}; +import{u as h,f as x,k as u,Y as w,o as s,c as a,b as t,K as f,J as r,t as _,q as g,Z as y,r as k,a as N,w as C,N as z,O as L,m as M,aH as B}from"./main-pPEsZPea.js";const b={class:"overflow-hidden rounded-lg shadow-xs"},S={class:"p-4"},$={class:"flex items-start"},T={class:"shrink-0"},O={key:0,class:"w-6 h-6 text-green-400",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},I=t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"},null,-1),V=[I],j={key:1,class:"w-6 h-6 text-blue-400",fill:"currentColor",viewBox:"0 0 20 20",xmlns:"http://www.w3.org/2000/svg"},E=t("path",{"fill-rule":"evenodd",d:"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7 4a1 1 0 11-2 0 1 1 0 012 0zm-1-9a1 1 0 00-1 1v4a1 1 0 102 0V6a1 1 0 00-1-1z","clip-rule":"evenodd"},null,-1),q=[E],A={key:2,class:"w-6 h-6 text-red-400",fill:"currentColor",viewBox:"0 0 24 24"},D=t("path",{"fill-rule":"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zM8.707 7.293a1 1 0 00-1.414 1.414L8.586 10l-1.293 1.293a1 1 0 101.414 1.414L10 11.414l1.293 1.293a1 1 0 001.414-1.414L11.414 10l1.293-1.293a1 1 0 00-1.414-1.414L10 8.586 8.707 7.293z","clip-rule":"evenodd"},null,-1),F=[D],G={class:"flex-1 w-0 ml-3 text-left"},H={class:"flex shrink-0"},J=t("svg",{class:"w-6 h-6",fill:"currentColor",viewBox:"0 0 20 20",xmlns:"http://www.w3.org/2000/svg"},[t("path",{"fill-rule":"evenodd",d:"M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z","clip-rule":"evenodd"})],-1),K=[J],R={__name:"NotificationItem",props:{notification:{type:Object,default:null}},setup(e){const o=e,d=h();let l=x("");const i=u(()=>o.notification.type=="success"),m=u(()=>o.notification.type=="error"),n=u(()=>o.notification.type=="info");function c(){d.hideNotification(o.notification)}function p(){clearTimeout(l)}function v(){l=setTimeout(()=>{d.hideNotification(o.notification)},o.notification.time||5e3)}return w(()=>{v()}),(Q,U)=>(s(),a("div",{class:r([i.value||n.value?"bg-white":"bg-red-50","max-w-sm mb-3 rounded-lg shadow-lg cursor-pointer pointer-events-auto w-full md:w-96"]),onClick:g(c,["stop"]),onMouseenter:p,onMouseleave:v},[t("div",b,[t("div",S,[t("div",$,[t("div",T,[i.value?(s(),a("svg",O,V)):f("",!0),n.value?(s(),a("svg",j,q)):f("",!0),m.value?(s(),a("svg",A,F)):f("",!0)]),t("div",G,[t("p",{class:r(`text-sm leading-5 font-medium ${i.value||n.value?"text-gray-900":"text-red-800"}`)},_(e.notification.title?e.notification.title:i.value?"Success!":"Error"),3),t("p",{class:r(`mt-1 text-sm leading-5 ${i.value||n.value?"text-gray-500":"text-red-700"}`)},_(e.notification.message?e.notification.message:i.value?"Successful":"Something went wrong"),3)]),t("div",H,[t("button",{class:r([i.value||n.value?" text-gray-400 focus:text-gray-500":"text-red-400 focus:text-red-500","inline-flex w-5 h-5 transition duration-150 ease-in-out focus:outline-none"]),onClick:c},K,2)])])])])],34))}},Y={components:{NotificationItem:R},setup(){const e=h();return{notifications:u(()=>e.notifications)}}},Z={class:"fixed inset-0 z-50 flex flex-col items-end justify-start w-full px-4 py-6 pointer-events-none sm:p-6"};function P(e,o,d,l,i,m){const n=k("NotificationItem");return s(),a("div",Z,[N(B,{"enter-active-class":"transition duration-300 ease-out","enter-from-class":"translate-y-2 opacity-0 sm:translate-y-0 sm:translate-x-2","enter-to-class":"translate-y-0 opacity-100 sm:translate-x-0","leave-active-class":"transition duration-100 ease-in","leave-from-class":"opacity-100","leave-to-class":"opacity-0"},{default:C(()=>[(s(!0),a(z,null,L(l.notifications,c=>(s(),M(n,{key:c.id,notification:c},null,8,["notification"]))),128))]),_:1})])}const X=y(Y,[["render",P]]);export{X as N}; diff --git a/public/build/assets/NotificationsSetting-jWGngTC2.js b/public/build/assets/NotificationsSetting-H_JlZbOt.js similarity index 97% rename from public/build/assets/NotificationsSetting-jWGngTC2.js rename to public/build/assets/NotificationsSetting-H_JlZbOt.js index e3528c82..ecb65089 100644 --- a/public/build/assets/NotificationsSetting-jWGngTC2.js +++ b/public/build/assets/NotificationsSetting-H_JlZbOt.js @@ -1 +1 @@ -import{E as q,f as E,v as h,H as k,k as m,j as F,r as a,o as y,m as w,w as u,b as _,a as d,l as o,J as M,K as Y,p as D,t as U,q as j,g as S,h as G,i as O}from"./main-B9dpPbRR.js";const z={class:"grid-cols-2 col-span-1 mt-14"},H={class:"divide-y divide-gray-200"},T={__name:"NotificationsSetting",setup(J){const s=q();let r=E(!1);const{t:v}=h.useI18n(),i=k({notify_invoice_viewed:s.selectedCompanySettings.notify_invoice_viewed,notify_estimate_viewed:s.selectedCompanySettings.notify_estimate_viewed,notification_email:s.selectedCompanySettings.notification_email}),B=m(()=>({notification_email:{required:S.withMessage(v("validation.required"),G),email:S.withMessage(v("validation.email_incorrect"),O)}})),l=F(B,m(()=>i)),p=m({get:()=>i.notify_invoice_viewed==="YES",set:async e=>{const t=e?"YES":"NO";let c={settings:{notify_invoice_viewed:t}};i.notify_invoice_viewed=t,await s.updateCompanySettings({data:c,message:"general.setting_updated"})}}),f=m({get:()=>i.notify_estimate_viewed==="YES",set:async e=>{const t=e?"YES":"NO";let c={settings:{notify_estimate_viewed:t}};i.notify_estimate_viewed=t,await s.updateCompanySettings({data:c,message:"general.setting_updated"})}});async function $(){if(l.value.$touch(),l.value.$invalid)return!0;r.value=!0;const e={settings:{notification_email:i.notification_email}};await s.updateCompanySettings({data:e,message:"settings.notification.email_save_message"}),r.value=!1}return(e,t)=>{const c=a("BaseInput"),V=a("BaseInputGroup"),C=a("BaseIcon"),I=a("BaseButton"),b=a("BaseDivider"),g=a("BaseSwitchSection"),N=a("BaseSettingCard");return y(),w(N,{title:e.$t("settings.notification.title"),description:e.$t("settings.notification.description")},{default:u(()=>[_("form",{action:"",onSubmit:j($,["prevent"])},[_("div",z,[d(V,{error:o(l).notification_email.$error&&o(l).notification_email.$errors[0].$message,label:e.$t("settings.notification.email"),class:"my-2",required:""},{default:u(()=>[d(c,{modelValue:i.notification_email,"onUpdate:modelValue":t[0]||(t[0]=n=>i.notification_email=n),modelModifiers:{trim:!0},invalid:o(l).notification_email.$error,type:"email",onInput:t[1]||(t[1]=n=>o(l).notification_email.$touch())},null,8,["modelValue","invalid"])]),_:1},8,["error","label"]),d(I,{disabled:o(r),loading:o(r),variant:"primary",type:"submit",class:"mt-6"},{left:u(n=>[o(r)?Y("",!0):(y(),w(C,{key:0,class:M(n.class),name:"SaveIcon"},null,8,["class"]))]),default:u(()=>[D(" "+U(e.$t("settings.notification.save")),1)]),_:1},8,["disabled","loading"])])],32),d(b,{class:"mt-6 mb-2"}),_("ul",H,[d(g,{modelValue:p.value,"onUpdate:modelValue":t[2]||(t[2]=n=>p.value=n),title:e.$t("settings.notification.invoice_viewed"),description:e.$t("settings.notification.invoice_viewed_desc")},null,8,["modelValue","title","description"]),d(g,{modelValue:f.value,"onUpdate:modelValue":t[3]||(t[3]=n=>f.value=n),title:e.$t("settings.notification.estimate_viewed"),description:e.$t("settings.notification.estimate_viewed_desc")},null,8,["modelValue","title","description"])])]),_:1},8,["title","description"])}}};export{T as default}; +import{E as q,f as E,v as h,H as k,k as m,j as F,r as a,o as y,m as w,w as u,b as _,a as d,l as o,J as M,K as Y,p as D,t as U,q as j,g as S,h as G,i as O}from"./main-pPEsZPea.js";const z={class:"grid-cols-2 col-span-1 mt-14"},H={class:"divide-y divide-gray-200"},T={__name:"NotificationsSetting",setup(J){const s=q();let r=E(!1);const{t:v}=h.useI18n(),i=k({notify_invoice_viewed:s.selectedCompanySettings.notify_invoice_viewed,notify_estimate_viewed:s.selectedCompanySettings.notify_estimate_viewed,notification_email:s.selectedCompanySettings.notification_email}),B=m(()=>({notification_email:{required:S.withMessage(v("validation.required"),G),email:S.withMessage(v("validation.email_incorrect"),O)}})),l=F(B,m(()=>i)),p=m({get:()=>i.notify_invoice_viewed==="YES",set:async e=>{const t=e?"YES":"NO";let c={settings:{notify_invoice_viewed:t}};i.notify_invoice_viewed=t,await s.updateCompanySettings({data:c,message:"general.setting_updated"})}}),f=m({get:()=>i.notify_estimate_viewed==="YES",set:async e=>{const t=e?"YES":"NO";let c={settings:{notify_estimate_viewed:t}};i.notify_estimate_viewed=t,await s.updateCompanySettings({data:c,message:"general.setting_updated"})}});async function $(){if(l.value.$touch(),l.value.$invalid)return!0;r.value=!0;const e={settings:{notification_email:i.notification_email}};await s.updateCompanySettings({data:e,message:"settings.notification.email_save_message"}),r.value=!1}return(e,t)=>{const c=a("BaseInput"),V=a("BaseInputGroup"),C=a("BaseIcon"),I=a("BaseButton"),b=a("BaseDivider"),g=a("BaseSwitchSection"),N=a("BaseSettingCard");return y(),w(N,{title:e.$t("settings.notification.title"),description:e.$t("settings.notification.description")},{default:u(()=>[_("form",{action:"",onSubmit:j($,["prevent"])},[_("div",z,[d(V,{error:o(l).notification_email.$error&&o(l).notification_email.$errors[0].$message,label:e.$t("settings.notification.email"),class:"my-2",required:""},{default:u(()=>[d(c,{modelValue:i.notification_email,"onUpdate:modelValue":t[0]||(t[0]=n=>i.notification_email=n),modelModifiers:{trim:!0},invalid:o(l).notification_email.$error,type:"email",onInput:t[1]||(t[1]=n=>o(l).notification_email.$touch())},null,8,["modelValue","invalid"])]),_:1},8,["error","label"]),d(I,{disabled:o(r),loading:o(r),variant:"primary",type:"submit",class:"mt-6"},{left:u(n=>[o(r)?Y("",!0):(y(),w(C,{key:0,class:M(n.class),name:"SaveIcon"},null,8,["class"]))]),default:u(()=>[D(" "+U(e.$t("settings.notification.save")),1)]),_:1},8,["disabled","loading"])])],32),d(b,{class:"mt-6 mb-2"}),_("ul",H,[d(g,{modelValue:p.value,"onUpdate:modelValue":t[2]||(t[2]=n=>p.value=n),title:e.$t("settings.notification.invoice_viewed"),description:e.$t("settings.notification.invoice_viewed_desc")},null,8,["modelValue","title","description"]),d(g,{modelValue:f.value,"onUpdate:modelValue":t[3]||(t[3]=n=>f.value=n),title:e.$t("settings.notification.estimate_viewed"),description:e.$t("settings.notification.estimate_viewed_desc")},null,8,["modelValue","title","description"])])]),_:1},8,["title","description"])}}};export{T as default}; diff --git a/public/build/assets/NumberType-rRpwD-2g.js b/public/build/assets/NumberType-Yfr104pP.js similarity index 85% rename from public/build/assets/NumberType-rRpwD-2g.js rename to public/build/assets/NumberType-Yfr104pP.js index bf5719b5..5c6b926d 100644 --- a/public/build/assets/NumberType-rRpwD-2g.js +++ b/public/build/assets/NumberType-Yfr104pP.js @@ -1 +1 @@ -import{k as s,r,o as d,m as c}from"./main-B9dpPbRR.js";const i={__name:"NumberType",props:{modelValue:{type:[String,Number],default:null}},emits:["update:modelValue"],setup(l,{emit:u}){const a=l,n=u,e=s({get:()=>a.modelValue,set:t=>{n("update:modelValue",t)}});return(t,o)=>{const m=r("BaseInput");return d(),c(m,{modelValue:e.value,"onUpdate:modelValue":o[0]||(o[0]=p=>e.value=p),type:"number"},null,8,["modelValue"])}}};export{i as default}; +import{k as s,r,o as d,m as c}from"./main-pPEsZPea.js";const i={__name:"NumberType",props:{modelValue:{type:[String,Number],default:null}},emits:["update:modelValue"],setup(l,{emit:u}){const a=l,n=u,e=s({get:()=>a.modelValue,set:t=>{n("update:modelValue",t)}});return(t,o)=>{const m=r("BaseInput");return d(),c(m,{modelValue:e.value,"onUpdate:modelValue":o[0]||(o[0]=p=>e.value=p),type:"number"},null,8,["modelValue"])}}};export{i as default}; diff --git a/public/build/assets/ObservatoryIcon-DjHmReOJ.js b/public/build/assets/ObservatoryIcon-XsLvGeaX.js similarity index 98% rename from public/build/assets/ObservatoryIcon-DjHmReOJ.js rename to public/build/assets/ObservatoryIcon-XsLvGeaX.js index f32fbdac..67183da3 100644 --- a/public/build/assets/ObservatoryIcon-DjHmReOJ.js +++ b/public/build/assets/ObservatoryIcon-XsLvGeaX.js @@ -1 +1 @@ -import{o,c as n,b as l,J as d}from"./main-B9dpPbRR.js";const i={width:"97",height:"110",viewBox:"0 0 97 110",fill:"none",xmlns:"http://www.w3.org/2000/svg"},r={"clip-path":"url(#clip0)"},C=l("defs",null,[l("clipPath",{id:"clip0"},[l("rect",{width:"96.25",height:"110",fill:"white"})])],-1),s={__name:"ObservatoryIcon",props:{primaryFillColor:{type:String,default:"fill-primary-500"},secondaryFillColor:{type:String,default:"fill-gray-600"}},setup(e){return(a,c)=>(o(),n("svg",i,[l("g",r,[l("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M41.25 104.844H55V84.2188H41.25V104.844ZM42.9688 103.125H53.2813V85.9375H42.9688V103.125Z",class:d(e.secondaryFillColor)},null,2),l("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M0 110H96.25V103.125H0V110ZM1.71875 108.281H94.5312V104.844H1.71875V108.281Z",class:d(e.primaryFillColor)},null,2),l("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M34.375 8.59375H61.875V6.875H34.375V8.59375Z",class:d(e.secondaryFillColor)},null,2),l("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M48.125 15.4688C42.4291 15.4688 37.8125 20.0853 37.8125 25.7812C37.8125 31.4772 42.4291 36.0938 48.125 36.0938C53.8209 36.0938 58.4375 31.4772 58.4375 25.7812C58.4375 20.0853 53.8209 15.4688 48.125 15.4688ZM48.125 17.1875C52.8636 17.1875 56.7188 21.0427 56.7188 25.7812C56.7188 30.5198 52.8636 34.375 48.125 34.375C43.3864 34.375 39.5312 30.5198 39.5312 25.7812C39.5312 21.0427 43.3864 17.1875 48.125 17.1875Z",class:d(e.secondaryFillColor)},null,2),l("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M12.8906 63.5938C12.418 63.5938 12.0312 63.207 12.0312 62.7344V55.8594C12.0312 55.3867 12.418 55 12.8906 55C13.3633 55 13.75 55.3867 13.75 55.8594V62.7344C13.75 63.207 13.3633 63.5938 12.8906 63.5938Z",class:d(e.secondaryFillColor)},null,2),l("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M21.4844 63.5938C21.0117 63.5938 20.625 63.207 20.625 62.7344V55.8594C20.625 55.3867 21.0117 55 21.4844 55C21.957 55 22.3438 55.3867 22.3438 55.8594V62.7344C22.3438 63.207 21.957 63.5938 21.4844 63.5938Z",class:d(e.secondaryFillColor)},null,2),l("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M30.0781 63.5938C29.6055 63.5938 29.2188 63.207 29.2188 62.7344V55.8594C29.2188 55.3867 29.6055 55 30.0781 55C30.5508 55 30.9375 55.3867 30.9375 55.8594V62.7344C30.9375 63.207 30.5508 63.5938 30.0781 63.5938Z",class:d(e.secondaryFillColor)},null,2),l("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M38.6719 63.5938C38.1992 63.5938 37.8125 63.207 37.8125 62.7344V55.8594C37.8125 55.3867 38.1992 55 38.6719 55C39.1445 55 39.5312 55.3867 39.5312 55.8594V62.7344C39.5312 63.207 39.1445 63.5938 38.6719 63.5938Z",class:d(e.secondaryFillColor)},null,2),l("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M47.2656 63.5938C46.793 63.5938 46.4062 63.207 46.4062 62.7344V55.8594C46.4062 55.3867 46.793 55 47.2656 55C47.7383 55 48.125 55.3867 48.125 55.8594V62.7344C48.125 63.207 47.7383 63.5938 47.2656 63.5938Z",class:d(e.secondaryFillColor)},null,2),l("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M55.8594 63.5938C55.3867 63.5938 55 63.207 55 62.7344V55.8594C55 55.3867 55.3867 55 55.8594 55C56.332 55 56.7187 55.3867 56.7187 55.8594V62.7344C56.7187 63.207 56.332 63.5938 55.8594 63.5938Z",class:d(e.secondaryFillColor)},null,2),l("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M64.4531 63.5938C63.9805 63.5938 63.5938 63.207 63.5938 62.7344V55.8594C63.5938 55.3867 63.9805 55 64.4531 55C64.9258 55 65.3125 55.3867 65.3125 55.8594V62.7344C65.3125 63.207 64.9258 63.5938 64.4531 63.5938Z",class:d(e.secondaryFillColor)},null,2),l("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M73.0469 63.5938C72.5742 63.5938 72.1875 63.207 72.1875 62.7344V55.8594C72.1875 55.3867 72.5742 55 73.0469 55C73.5195 55 73.9062 55.3867 73.9062 55.8594V62.7344C73.9062 63.207 73.5195 63.5938 73.0469 63.5938Z",class:d(e.secondaryFillColor)},null,2),l("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M81.6406 63.5938C81.168 63.5938 80.7812 63.207 80.7812 62.7344V55.8594C80.7812 55.3867 81.168 55 81.6406 55C82.1133 55 82.5 55.3867 82.5 55.8594V62.7344C82.5 63.207 82.1133 63.5938 81.6406 63.5938Z",class:d(e.secondaryFillColor)},null,2),l("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M3.4375 103.125H5.15625V56.7188H3.4375V103.125Z",class:d(e.secondaryFillColor)},null,2),l("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M91.0938 103.125H92.8125V56.7188H91.0938V103.125Z",class:d(e.secondaryFillColor)},null,2),l("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M34.375 0C17.2098 0.9075 3.4375 15.2745 3.4375 32.6562V51.5625H34.375V0ZM32.6562 1.86484V49.8438H5.15625V32.6562C5.15625 16.7853 17.0947 3.59391 32.6562 1.86484Z",class:d(e.secondaryFillColor)},null,2),l("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M61.875 0V51.5625H92.8125V32.6562C92.8125 15.2745 79.0402 0.9075 61.875 0ZM63.5938 1.86484C79.1553 3.59391 91.0938 16.7853 91.0938 32.6562V49.8438H63.5938V1.86484Z",class:d(e.secondaryFillColor)},null,2),l("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M9.45312 34.375C8.97875 34.375 8.59375 33.99 8.59375 33.5157C8.59375 22.9316 13.6262 14.1247 22.7648 8.71238C23.1756 8.47347 23.7033 8.60925 23.9422 9.01488C24.1845 9.42222 24.0487 9.9516 23.6414 10.1939C14.9222 15.3553 10.3125 23.4197 10.3125 33.5157C10.3125 33.99 9.9275 34.375 9.45312 34.375Z",class:d(e.primaryFillColor)},null,2),l("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M54.1406 25.7812C53.6663 25.7812 53.2813 25.3962 53.2813 24.9219C53.2813 22.8748 51.0314 20.625 48.9844 20.625C48.51 20.625 48.125 20.24 48.125 19.7656C48.125 19.2913 48.51 18.9062 48.9844 18.9062C51.963 18.9062 55 21.9433 55 24.9219C55 25.3962 54.615 25.7812 54.1406 25.7812Z",class:d(e.primaryFillColor)},null,2),l("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M0 56.7188H96.25V49.8438H0V56.7188ZM1.71875 55H94.5312V51.5625H1.71875V55Z",class:d(e.primaryFillColor)},null,2)]),C]))}};export{s as _}; +import{o,c as n,b as l,J as d}from"./main-pPEsZPea.js";const i={width:"97",height:"110",viewBox:"0 0 97 110",fill:"none",xmlns:"http://www.w3.org/2000/svg"},r={"clip-path":"url(#clip0)"},C=l("defs",null,[l("clipPath",{id:"clip0"},[l("rect",{width:"96.25",height:"110",fill:"white"})])],-1),s={__name:"ObservatoryIcon",props:{primaryFillColor:{type:String,default:"fill-primary-500"},secondaryFillColor:{type:String,default:"fill-gray-600"}},setup(e){return(a,c)=>(o(),n("svg",i,[l("g",r,[l("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M41.25 104.844H55V84.2188H41.25V104.844ZM42.9688 103.125H53.2813V85.9375H42.9688V103.125Z",class:d(e.secondaryFillColor)},null,2),l("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M0 110H96.25V103.125H0V110ZM1.71875 108.281H94.5312V104.844H1.71875V108.281Z",class:d(e.primaryFillColor)},null,2),l("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M34.375 8.59375H61.875V6.875H34.375V8.59375Z",class:d(e.secondaryFillColor)},null,2),l("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M48.125 15.4688C42.4291 15.4688 37.8125 20.0853 37.8125 25.7812C37.8125 31.4772 42.4291 36.0938 48.125 36.0938C53.8209 36.0938 58.4375 31.4772 58.4375 25.7812C58.4375 20.0853 53.8209 15.4688 48.125 15.4688ZM48.125 17.1875C52.8636 17.1875 56.7188 21.0427 56.7188 25.7812C56.7188 30.5198 52.8636 34.375 48.125 34.375C43.3864 34.375 39.5312 30.5198 39.5312 25.7812C39.5312 21.0427 43.3864 17.1875 48.125 17.1875Z",class:d(e.secondaryFillColor)},null,2),l("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M12.8906 63.5938C12.418 63.5938 12.0312 63.207 12.0312 62.7344V55.8594C12.0312 55.3867 12.418 55 12.8906 55C13.3633 55 13.75 55.3867 13.75 55.8594V62.7344C13.75 63.207 13.3633 63.5938 12.8906 63.5938Z",class:d(e.secondaryFillColor)},null,2),l("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M21.4844 63.5938C21.0117 63.5938 20.625 63.207 20.625 62.7344V55.8594C20.625 55.3867 21.0117 55 21.4844 55C21.957 55 22.3438 55.3867 22.3438 55.8594V62.7344C22.3438 63.207 21.957 63.5938 21.4844 63.5938Z",class:d(e.secondaryFillColor)},null,2),l("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M30.0781 63.5938C29.6055 63.5938 29.2188 63.207 29.2188 62.7344V55.8594C29.2188 55.3867 29.6055 55 30.0781 55C30.5508 55 30.9375 55.3867 30.9375 55.8594V62.7344C30.9375 63.207 30.5508 63.5938 30.0781 63.5938Z",class:d(e.secondaryFillColor)},null,2),l("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M38.6719 63.5938C38.1992 63.5938 37.8125 63.207 37.8125 62.7344V55.8594C37.8125 55.3867 38.1992 55 38.6719 55C39.1445 55 39.5312 55.3867 39.5312 55.8594V62.7344C39.5312 63.207 39.1445 63.5938 38.6719 63.5938Z",class:d(e.secondaryFillColor)},null,2),l("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M47.2656 63.5938C46.793 63.5938 46.4062 63.207 46.4062 62.7344V55.8594C46.4062 55.3867 46.793 55 47.2656 55C47.7383 55 48.125 55.3867 48.125 55.8594V62.7344C48.125 63.207 47.7383 63.5938 47.2656 63.5938Z",class:d(e.secondaryFillColor)},null,2),l("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M55.8594 63.5938C55.3867 63.5938 55 63.207 55 62.7344V55.8594C55 55.3867 55.3867 55 55.8594 55C56.332 55 56.7187 55.3867 56.7187 55.8594V62.7344C56.7187 63.207 56.332 63.5938 55.8594 63.5938Z",class:d(e.secondaryFillColor)},null,2),l("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M64.4531 63.5938C63.9805 63.5938 63.5938 63.207 63.5938 62.7344V55.8594C63.5938 55.3867 63.9805 55 64.4531 55C64.9258 55 65.3125 55.3867 65.3125 55.8594V62.7344C65.3125 63.207 64.9258 63.5938 64.4531 63.5938Z",class:d(e.secondaryFillColor)},null,2),l("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M73.0469 63.5938C72.5742 63.5938 72.1875 63.207 72.1875 62.7344V55.8594C72.1875 55.3867 72.5742 55 73.0469 55C73.5195 55 73.9062 55.3867 73.9062 55.8594V62.7344C73.9062 63.207 73.5195 63.5938 73.0469 63.5938Z",class:d(e.secondaryFillColor)},null,2),l("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M81.6406 63.5938C81.168 63.5938 80.7812 63.207 80.7812 62.7344V55.8594C80.7812 55.3867 81.168 55 81.6406 55C82.1133 55 82.5 55.3867 82.5 55.8594V62.7344C82.5 63.207 82.1133 63.5938 81.6406 63.5938Z",class:d(e.secondaryFillColor)},null,2),l("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M3.4375 103.125H5.15625V56.7188H3.4375V103.125Z",class:d(e.secondaryFillColor)},null,2),l("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M91.0938 103.125H92.8125V56.7188H91.0938V103.125Z",class:d(e.secondaryFillColor)},null,2),l("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M34.375 0C17.2098 0.9075 3.4375 15.2745 3.4375 32.6562V51.5625H34.375V0ZM32.6562 1.86484V49.8438H5.15625V32.6562C5.15625 16.7853 17.0947 3.59391 32.6562 1.86484Z",class:d(e.secondaryFillColor)},null,2),l("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M61.875 0V51.5625H92.8125V32.6562C92.8125 15.2745 79.0402 0.9075 61.875 0ZM63.5938 1.86484C79.1553 3.59391 91.0938 16.7853 91.0938 32.6562V49.8438H63.5938V1.86484Z",class:d(e.secondaryFillColor)},null,2),l("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M9.45312 34.375C8.97875 34.375 8.59375 33.99 8.59375 33.5157C8.59375 22.9316 13.6262 14.1247 22.7648 8.71238C23.1756 8.47347 23.7033 8.60925 23.9422 9.01488C24.1845 9.42222 24.0487 9.9516 23.6414 10.1939C14.9222 15.3553 10.3125 23.4197 10.3125 33.5157C10.3125 33.99 9.9275 34.375 9.45312 34.375Z",class:d(e.primaryFillColor)},null,2),l("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M54.1406 25.7812C53.6663 25.7812 53.2813 25.3962 53.2813 24.9219C53.2813 22.8748 51.0314 20.625 48.9844 20.625C48.51 20.625 48.125 20.24 48.125 19.7656C48.125 19.2913 48.51 18.9062 48.9844 18.9062C51.963 18.9062 55 21.9433 55 24.9219C55 25.3962 54.615 25.7812 54.1406 25.7812Z",class:d(e.primaryFillColor)},null,2),l("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M0 56.7188H96.25V49.8438H0V56.7188ZM1.71875 55H94.5312V51.5625H1.71875V55Z",class:d(e.primaryFillColor)},null,2)]),C]))}};export{s as _}; diff --git a/public/build/assets/PaymentModeModal-ywSNH2DC.js b/public/build/assets/PaymentModeModal-vETzN8Vz.js similarity index 94% rename from public/build/assets/PaymentModeModal-ywSNH2DC.js rename to public/build/assets/PaymentModeModal-vETzN8Vz.js index e0c8d141..024d4ae6 100644 --- a/public/build/assets/PaymentModeModal-ywSNH2DC.js +++ b/public/build/assets/PaymentModeModal-vETzN8Vz.js @@ -1 +1 @@ -import{F as w,v as S,f as V,k as p,g as P,h as C,I as k,j as q,r as u,o as j,m as N,w as r,b as c,p as y,t as v,l as a,a as s,q as x,J as D}from"./main-B9dpPbRR.js";import{u as z}from"./payment-Y8OywN76.js";const G={class:"flex justify-between w-full"},L={class:"p-4 sm:p-6"},T={class:"z-0 flex justify-end p-4 border-t border-gray-200 border-solid"},U={__name:"PaymentModeModal",setup(A){const o=w(),e=z(),{t:M}=S.useI18n(),l=V(!1),g=p(()=>({currentPaymentMode:{name:{required:P.withMessage(M("validation.required"),C),minLength:P.withMessage(M("validation.name_min_length",{count:3}),k(3))}}})),t=q(g,p(()=>e)),h=p(()=>o.active&&o.componentName==="PaymentModeModal");async function B(){if(t.value.currentPaymentMode.$touch(),t.value.currentPaymentMode.$invalid)return!0;try{const n=e.currentPaymentMode.id?e.updatePaymentMode:e.addPaymentMode;l.value=!0,await n(e.currentPaymentMode),l.value=!1,o.refreshData&&o.refreshData(),d()}catch{return l.value=!1,!0}}function d(){o.closeModal(),setTimeout(()=>{t.value.$reset(),e.currentPaymentMode={id:"",name:null}})}return(n,m)=>{const f=u("BaseIcon"),$=u("BaseInput"),b=u("BaseInputGroup"),_=u("BaseButton"),I=u("BaseModal");return j(),N(I,{show:h.value,onClose:d},{header:r(()=>[c("div",G,[y(v(a(o).title)+" ",1),s(f,{name:"XIcon",class:"w-6 h-6 text-gray-500 cursor-pointer",onClick:d})])]),default:r(()=>[c("form",{action:"",onSubmit:x(B,["prevent"])},[c("div",L,[s(b,{label:n.$t("settings.payment_modes.mode_name"),error:a(t).currentPaymentMode.name.$error&&a(t).currentPaymentMode.name.$errors[0].$message,required:""},{default:r(()=>[s($,{modelValue:a(e).currentPaymentMode.name,"onUpdate:modelValue":m[0]||(m[0]=i=>a(e).currentPaymentMode.name=i),invalid:a(t).currentPaymentMode.name.$error,onInput:m[1]||(m[1]=i=>a(t).currentPaymentMode.name.$touch())},null,8,["modelValue","invalid"])]),_:1},8,["label","error"])]),c("div",T,[s(_,{variant:"primary-outline",class:"mr-3",type:"button",onClick:d},{default:r(()=>[y(v(n.$t("general.cancel")),1)]),_:1}),s(_,{loading:l.value,disabled:l.value,variant:"primary",type:"submit"},{left:r(i=>[s(f,{name:"SaveIcon",class:D(i.class)},null,8,["class"])]),default:r(()=>[y(" "+v(a(e).currentPaymentMode.id?n.$t("general.update"):n.$t("general.save")),1)]),_:1},8,["loading","disabled"])])],32)]),_:1},8,["show"])}}};export{U as _}; +import{F as w,v as S,f as V,k as p,g as P,h as C,I as k,j as q,r as u,o as j,m as N,w as r,b as c,p as y,t as v,l as a,a as s,q as x,J as D}from"./main-pPEsZPea.js";import{u as z}from"./payment-fIjVKZH2.js";const G={class:"flex justify-between w-full"},L={class:"p-4 sm:p-6"},T={class:"z-0 flex justify-end p-4 border-t border-gray-200 border-solid"},U={__name:"PaymentModeModal",setup(A){const o=w(),e=z(),{t:M}=S.useI18n(),l=V(!1),g=p(()=>({currentPaymentMode:{name:{required:P.withMessage(M("validation.required"),C),minLength:P.withMessage(M("validation.name_min_length",{count:3}),k(3))}}})),t=q(g,p(()=>e)),h=p(()=>o.active&&o.componentName==="PaymentModeModal");async function B(){if(t.value.currentPaymentMode.$touch(),t.value.currentPaymentMode.$invalid)return!0;try{const n=e.currentPaymentMode.id?e.updatePaymentMode:e.addPaymentMode;l.value=!0,await n(e.currentPaymentMode),l.value=!1,o.refreshData&&o.refreshData(),d()}catch{return l.value=!1,!0}}function d(){o.closeModal(),setTimeout(()=>{t.value.$reset(),e.currentPaymentMode={id:"",name:null}})}return(n,m)=>{const f=u("BaseIcon"),$=u("BaseInput"),b=u("BaseInputGroup"),_=u("BaseButton"),I=u("BaseModal");return j(),N(I,{show:h.value,onClose:d},{header:r(()=>[c("div",G,[y(v(a(o).title)+" ",1),s(f,{name:"XIcon",class:"w-6 h-6 text-gray-500 cursor-pointer",onClick:d})])]),default:r(()=>[c("form",{action:"",onSubmit:x(B,["prevent"])},[c("div",L,[s(b,{label:n.$t("settings.payment_modes.mode_name"),error:a(t).currentPaymentMode.name.$error&&a(t).currentPaymentMode.name.$errors[0].$message,required:""},{default:r(()=>[s($,{modelValue:a(e).currentPaymentMode.name,"onUpdate:modelValue":m[0]||(m[0]=i=>a(e).currentPaymentMode.name=i),invalid:a(t).currentPaymentMode.name.$error,onInput:m[1]||(m[1]=i=>a(t).currentPaymentMode.name.$touch())},null,8,["modelValue","invalid"])]),_:1},8,["label","error"])]),c("div",T,[s(_,{variant:"primary-outline",class:"mr-3",type:"button",onClick:d},{default:r(()=>[y(v(n.$t("general.cancel")),1)]),_:1}),s(_,{loading:l.value,disabled:l.value,variant:"primary",type:"submit"},{left:r(i=>[s(f,{name:"SaveIcon",class:D(i.class)},null,8,["class"])]),default:r(()=>[y(" "+v(a(e).currentPaymentMode.id?n.$t("general.update"):n.$t("general.save")),1)]),_:1},8,["loading","disabled"])])],32)]),_:1},8,["show"])}}};export{U as _}; diff --git a/public/build/assets/PaymentsModeSetting-pqfwRfb2.js b/public/build/assets/PaymentsModeSetting-JnXQoV2x.js similarity index 94% rename from public/build/assets/PaymentsModeSetting-pqfwRfb2.js rename to public/build/assets/PaymentsModeSetting-JnXQoV2x.js index 9a885442..2dca611f 100644 --- a/public/build/assets/PaymentsModeSetting-pqfwRfb2.js +++ b/public/build/assets/PaymentsModeSetting-JnXQoV2x.js @@ -1 +1 @@ -import{a7 as M,u as S,v as b,L as k,M as C,F as I,a5 as x,r as m,o as p,m as v,w as a,l as $,a as t,p as w,t as D,f as N,k as z,c as T,J as j,N as F}from"./main-B9dpPbRR.js";import{u as P}from"./payment-Y8OywN76.js";import{_ as L}from"./PaymentModeModal-ywSNH2DC.js";const H={__name:"PaymentModeIndexDropdown",props:{row:{type:Object,default:null},table:{type:Object,default:null},loadData:{type:Function,default:null}},setup(u){const d=u,y=M();S();const{t:s}=b.useI18n(),o=P(),_=k();C();const f=I();x("utils");function g(e){o.fetchPaymentMode(e),f.openModal({title:s("settings.payment_modes.edit_payment_mode"),componentName:"PaymentModeModal",refreshData:d.loadData&&d.loadData,size:"sm"})}function B(e){y.openDialog({title:s("general.are_you_sure"),message:s("settings.payment_modes.payment_mode_confirm_delete"),yesLabel:s("general.ok"),noLabel:s("general.cancel"),variant:"danger",hideNoButton:!1,size:"lg"}).then(async l=>{l&&(await o.deletePaymentMode(e),d.loadData&&d.loadData())})}return(e,l)=>{const n=m("BaseIcon"),c=m("BaseButton"),r=m("BaseDropdownItem"),h=m("BaseDropdown");return p(),v(h,null,{activator:a(()=>[$(_).name==="paymentModes.view"?(p(),v(c,{key:0,variant:"primary"},{default:a(()=>[t(n,{name:"DotsHorizontalIcon",class:"h-5 text-white"})]),_:1})):(p(),v(n,{key:1,name:"DotsHorizontalIcon",class:"h-5 text-gray-500"}))]),default:a(()=>[t(r,{onClick:l[0]||(l[0]=i=>g(u.row.id))},{default:a(()=>[t(n,{name:"PencilIcon",class:"w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500"}),w(" "+D(e.$t("general.edit")),1)]),_:1}),t(r,{onClick:l[1]||(l[1]=i=>B(u.row.id))},{default:a(()=>[t(n,{name:"TrashIcon",class:"w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500"}),w(" "+D(e.$t("general.delete")),1)]),_:1})]),_:1})}}},J={__name:"PaymentsModeSetting",setup(u){const d=I();M();const y=P(),{t:s}=b.useI18n(),o=N(null),_=z(()=>[{key:"name",label:s("settings.payment_modes.mode_name"),thClass:"extra",tdClass:"font-medium text-gray-900"},{key:"actions",label:"",tdClass:"text-right text-sm font-medium",sortable:!1}]);async function f(){o.value&&o.value.refresh()}async function g({page:e,filter:l,sort:n}){let c={orderByField:n.fieldName||"created_at",orderBy:n.order||"desc",page:e},r=await y.fetchPaymentModes(c);return{data:r.data.data,pagination:{totalPages:r.data.meta.last_page,currentPage:e,totalCount:r.data.meta.total,limit:5}}}function B(){d.openModal({title:s("settings.payment_modes.add_payment_mode"),componentName:"PaymentModeModal",refreshData:o.value&&o.value.refresh,size:"sm"})}return(e,l)=>{const n=m("BaseIcon"),c=m("BaseButton"),r=m("BaseTable"),h=m("BaseSettingCard");return p(),T(F,null,[t(L),t(h,{title:e.$t("settings.payment_modes.title"),description:e.$t("settings.payment_modes.description")},{action:a(()=>[t(c,{type:"submit",variant:"primary-outline",onClick:B},{left:a(i=>[t(n,{class:j(i.class),name:"PlusIcon"},null,8,["class"])]),default:a(()=>[w(" "+D(e.$t("settings.payment_modes.add_payment_mode")),1)]),_:1})]),default:a(()=>[t(r,{ref_key:"table",ref:o,data:g,columns:_.value,class:"mt-16"},{"cell-actions":a(({row:i})=>[t(H,{row:i.data,table:o.value,"load-data":f},null,8,["row","table"])]),_:1},8,["columns"])]),_:1},8,["title","description"])],64)}}};export{J as default}; +import{a7 as M,u as S,v as b,L as k,M as C,F as I,a5 as x,r as m,o as p,m as v,w as a,l as $,a as t,p as w,t as D,f as N,k as z,c as T,J as j,N as F}from"./main-pPEsZPea.js";import{u as P}from"./payment-fIjVKZH2.js";import{_ as L}from"./PaymentModeModal-vETzN8Vz.js";const H={__name:"PaymentModeIndexDropdown",props:{row:{type:Object,default:null},table:{type:Object,default:null},loadData:{type:Function,default:null}},setup(u){const d=u,y=M();S();const{t:s}=b.useI18n(),o=P(),_=k();C();const f=I();x("utils");function g(e){o.fetchPaymentMode(e),f.openModal({title:s("settings.payment_modes.edit_payment_mode"),componentName:"PaymentModeModal",refreshData:d.loadData&&d.loadData,size:"sm"})}function B(e){y.openDialog({title:s("general.are_you_sure"),message:s("settings.payment_modes.payment_mode_confirm_delete"),yesLabel:s("general.ok"),noLabel:s("general.cancel"),variant:"danger",hideNoButton:!1,size:"lg"}).then(async l=>{l&&(await o.deletePaymentMode(e),d.loadData&&d.loadData())})}return(e,l)=>{const n=m("BaseIcon"),c=m("BaseButton"),r=m("BaseDropdownItem"),h=m("BaseDropdown");return p(),v(h,null,{activator:a(()=>[$(_).name==="paymentModes.view"?(p(),v(c,{key:0,variant:"primary"},{default:a(()=>[t(n,{name:"DotsHorizontalIcon",class:"h-5 text-white"})]),_:1})):(p(),v(n,{key:1,name:"DotsHorizontalIcon",class:"h-5 text-gray-500"}))]),default:a(()=>[t(r,{onClick:l[0]||(l[0]=i=>g(u.row.id))},{default:a(()=>[t(n,{name:"PencilIcon",class:"w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500"}),w(" "+D(e.$t("general.edit")),1)]),_:1}),t(r,{onClick:l[1]||(l[1]=i=>B(u.row.id))},{default:a(()=>[t(n,{name:"TrashIcon",class:"w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500"}),w(" "+D(e.$t("general.delete")),1)]),_:1})]),_:1})}}},J={__name:"PaymentsModeSetting",setup(u){const d=I();M();const y=P(),{t:s}=b.useI18n(),o=N(null),_=z(()=>[{key:"name",label:s("settings.payment_modes.mode_name"),thClass:"extra",tdClass:"font-medium text-gray-900"},{key:"actions",label:"",tdClass:"text-right text-sm font-medium",sortable:!1}]);async function f(){o.value&&o.value.refresh()}async function g({page:e,filter:l,sort:n}){let c={orderByField:n.fieldName||"created_at",orderBy:n.order||"desc",page:e},r=await y.fetchPaymentModes(c);return{data:r.data.data,pagination:{totalPages:r.data.meta.last_page,currentPage:e,totalCount:r.data.meta.total,limit:5}}}function B(){d.openModal({title:s("settings.payment_modes.add_payment_mode"),componentName:"PaymentModeModal",refreshData:o.value&&o.value.refresh,size:"sm"})}return(e,l)=>{const n=m("BaseIcon"),c=m("BaseButton"),r=m("BaseTable"),h=m("BaseSettingCard");return p(),T(F,null,[t(L),t(h,{title:e.$t("settings.payment_modes.title"),description:e.$t("settings.payment_modes.description")},{action:a(()=>[t(c,{type:"submit",variant:"primary-outline",onClick:B},{left:a(i=>[t(n,{class:j(i.class),name:"PlusIcon"},null,8,["class"])]),default:a(()=>[w(" "+D(e.$t("settings.payment_modes.add_payment_mode")),1)]),_:1})]),default:a(()=>[t(r,{ref_key:"table",ref:o,data:g,columns:_.value,class:"mt-16"},{"cell-actions":a(({row:i})=>[t(H,{row:i.data,table:o.value,"load-data":f},null,8,["row","table"])]),_:1},8,["columns"])]),_:1},8,["title","description"])],64)}}};export{J as default}; diff --git a/public/build/assets/PhoneType-WzA-1nI_.js b/public/build/assets/PhoneType-2Vn08TnG.js similarity index 85% rename from public/build/assets/PhoneType-WzA-1nI_.js rename to public/build/assets/PhoneType-2Vn08TnG.js index 930d5e7f..b2ebe6d3 100644 --- a/public/build/assets/PhoneType-WzA-1nI_.js +++ b/public/build/assets/PhoneType-2Vn08TnG.js @@ -1 +1 @@ -import{k as s,r,o as d,m as c}from"./main-B9dpPbRR.js";const i={__name:"PhoneType",props:{modelValue:{type:[String,Number],default:null}},emits:["update:modelValue"],setup(l,{emit:a}){const u=l,n=a,e=s({get:()=>u.modelValue,set:t=>{n("update:modelValue",t)}});return(t,o)=>{const p=r("BaseInput");return d(),c(p,{modelValue:e.value,"onUpdate:modelValue":o[0]||(o[0]=m=>e.value=m),type:"tel"},null,8,["modelValue"])}}};export{i as default}; +import{k as s,r,o as d,m as c}from"./main-pPEsZPea.js";const i={__name:"PhoneType",props:{modelValue:{type:[String,Number],default:null}},emits:["update:modelValue"],setup(l,{emit:a}){const u=l,n=a,e=s({get:()=>u.modelValue,set:t=>{n("update:modelValue",t)}});return(t,o)=>{const p=r("BaseInput");return d(),c(p,{modelValue:e.value,"onUpdate:modelValue":o[0]||(o[0]=m=>e.value=m),type:"tel"},null,8,["modelValue"])}}};export{i as default}; diff --git a/public/build/assets/PreferencesSetting-vRzqnBdk.js b/public/build/assets/PreferencesSetting-P9ngdEO5.js similarity index 99% rename from public/build/assets/PreferencesSetting-vRzqnBdk.js rename to public/build/assets/PreferencesSetting-P9ngdEO5.js index 68c8fdd3..3fd3bbce 100644 --- a/public/build/assets/PreferencesSetting-vRzqnBdk.js +++ b/public/build/assets/PreferencesSetting-P9ngdEO5.js @@ -1 +1 @@ -import{E as O,G as Y,v as j,f as V,H as T,k as f,z as Z,j as H,r as c,o as I,c as J,a as l,w as i,l as e,J as C,p as h,t as z,b as D,q as M,m as K,K as A,g,h as _}from"./main-B9dpPbRR.js";const W={__name:"PreferencesSetting",setup(L){const b=O(),d=Y(),{t:m,tm:Q}=j.useI18n();let y=V(!1),v=V(!1),o=V(!1);const a=T({...b.selectedCompanySettings});f(()=>d.config.retrospective_edits.map(t=>(t.title=m(t.key),t))),Z(()=>a.carbon_date_format,t=>{if(t){const n=d.dateFormats.find(u=>u.carbon_format_value===t);a.moment_date_format=n.moment_format_value}});const k=f({get:()=>a.discount_per_item==="YES",set:async t=>{const n=t?"YES":"NO";let u={settings:{discount_per_item:n}};a.discount_per_item=n,await b.updateCompanySettings({data:u,message:"general.setting_updated"})}}),$=f({get:()=>a.automatically_expire_public_links==="YES",set:async t=>{const n=t?"YES":"NO";a.automatically_expire_public_links=n}}),F=f(()=>({currency:{required:g.withMessage(m("validation.required"),_)},language:{required:g.withMessage(m("validation.required"),_)},carbon_date_format:{required:g.withMessage(m("validation.required"),_)},moment_date_format:{required:g.withMessage(m("validation.required"),_)},time_zone:{required:g.withMessage(m("validation.required"),_)},fiscal_year:{required:g.withMessage(m("validation.required"),_)}})),r=H(F,f(()=>a));U();async function U(){o.value=!0,Promise.all([d.fetchCurrencies(),d.fetchDateFormats(),d.fetchTimeZones()]).then(([t])=>{o.value=!1})}async function N(){if(r.value.$touch(),r.value.$invalid)return;let t={settings:{...a}};y.value=!0,delete t.settings.link_expiry_days,await b.updateCompanySettings({data:t,message:"settings.preferences.updated_message"}),y.value=!1}async function E(){v.value=!0,await b.updateCompanySettings({data:{settings:{link_expiry_days:a.link_expiry_days,automatically_expire_public_links:a.automatically_expire_public_links}},message:"settings.preferences.updated_message"}),v.value=!1}return(t,n)=>{const u=c("BaseMultiselect"),p=c("BaseInputGroup"),G=c("BaseInputGrid"),S=c("BaseIcon"),B=c("BaseButton"),q=c("BaseDivider"),w=c("BaseSwitchSection"),x=c("BaseInput"),P=c("BaseSettingCard");return I(),J("form",{action:"",class:"relative",onSubmit:M(N,["prevent"])},[l(P,{title:t.$t("settings.menu_title.preferences"),description:t.$t("settings.preferences.general_settings")},{default:i(()=>[l(G,{class:"mt-5"},{default:i(()=>[l(p,{"content-loading":e(o),label:t.$t("settings.preferences.currency"),"help-text":t.$t("settings.preferences.company_currency_unchangeable"),error:e(r).currency.$error&&e(r).currency.$errors[0].$message,required:""},{default:i(()=>[l(u,{modelValue:a.currency,"onUpdate:modelValue":n[0]||(n[0]=s=>a.currency=s),"content-loading":e(o),options:e(d).currencies,label:"name","value-prop":"id",searchable:!0,"track-by":"name",invalid:e(r).currency.$error,disabled:"",class:"w-full"},null,8,["modelValue","content-loading","options","invalid"])]),_:1},8,["content-loading","label","help-text","error"]),l(p,{label:t.$t("settings.preferences.default_language"),"content-loading":e(o),error:e(r).language.$error&&e(r).language.$errors[0].$message,required:""},{default:i(()=>[l(u,{modelValue:a.language,"onUpdate:modelValue":n[1]||(n[1]=s=>a.language=s),"content-loading":e(o),options:e(d).config.languages,label:"name","value-prop":"code",class:"w-full","track-by":"name",searchable:!0,invalid:e(r).language.$error},null,8,["modelValue","content-loading","options","invalid"])]),_:1},8,["label","content-loading","error"]),l(p,{label:t.$t("settings.preferences.time_zone"),"content-loading":e(o),error:e(r).time_zone.$error&&e(r).time_zone.$errors[0].$message,required:""},{default:i(()=>[l(u,{modelValue:a.time_zone,"onUpdate:modelValue":n[2]||(n[2]=s=>a.time_zone=s),"content-loading":e(o),options:e(d).timeZones,label:"key","value-prop":"value","track-by":"key",searchable:!0,invalid:e(r).time_zone.$error},null,8,["modelValue","content-loading","options","invalid"])]),_:1},8,["label","content-loading","error"]),l(p,{label:t.$t("settings.preferences.date_format"),"content-loading":e(o),error:e(r).carbon_date_format.$error&&e(r).carbon_date_format.$errors[0].$message,required:""},{default:i(()=>[l(u,{modelValue:a.carbon_date_format,"onUpdate:modelValue":n[3]||(n[3]=s=>a.carbon_date_format=s),"content-loading":e(o),options:e(d).dateFormats,label:"display_date","value-prop":"carbon_format_value","track-by":"display_date",searchable:"",invalid:e(r).carbon_date_format.$error,class:"w-full"},null,8,["modelValue","content-loading","options","invalid"])]),_:1},8,["label","content-loading","error"]),l(p,{"content-loading":e(o),error:e(r).fiscal_year.$error&&e(r).fiscal_year.$errors[0].$message,label:t.$t("settings.preferences.fiscal_year"),required:""},{default:i(()=>[l(u,{modelValue:a.fiscal_year,"onUpdate:modelValue":n[4]||(n[4]=s=>a.fiscal_year=s),"content-loading":e(o),options:e(d).config.fiscal_years,label:"key","value-prop":"value",invalid:e(r).fiscal_year.$error,"track-by":"key",searchable:!0,class:"w-full"},null,8,["modelValue","content-loading","options","invalid"])]),_:1},8,["content-loading","error","label"])]),_:1}),l(B,{"content-loading":e(o),disabled:e(y),loading:e(y),type:"submit",class:"mt-6"},{left:i(s=>[l(S,{name:"SaveIcon",class:C(s.class)},null,8,["class"])]),default:i(()=>[h(" "+z(t.$t("settings.company_info.save")),1)]),_:1},8,["content-loading","disabled","loading"]),l(q,{class:"mt-6 mb-2"}),D("ul",null,[D("form",{onSubmit:M(E,["prevent"])},[l(w,{modelValue:$.value,"onUpdate:modelValue":n[5]||(n[5]=s=>$.value=s),title:t.$t("settings.preferences.expire_public_links"),description:t.$t("settings.preferences.expire_setting_description")},null,8,["modelValue","title","description"]),$.value?(I(),K(p,{key:0,"content-loading":e(o),label:t.$t("settings.preferences.expire_public_links"),class:"mt-2 mb-4"},{default:i(()=>[l(x,{modelValue:a.link_expiry_days,"onUpdate:modelValue":n[6]||(n[6]=s=>a.link_expiry_days=s),disabled:a.automatically_expire_public_links==="NO","content-loading":e(o),type:"number"},null,8,["modelValue","disabled","content-loading"])]),_:1},8,["content-loading","label"])):A("",!0),l(B,{"content-loading":e(o),disabled:e(v),loading:e(v),type:"submit",class:"mt-6"},{left:i(s=>[l(S,{name:"SaveIcon",class:C(s.class)},null,8,["class"])]),default:i(()=>[h(" "+z(t.$t("general.save")),1)]),_:1},8,["content-loading","disabled","loading"])],32),l(q,{class:"mt-6 mb-2"}),l(w,{modelValue:k.value,"onUpdate:modelValue":n[7]||(n[7]=s=>k.value=s),title:t.$t("settings.preferences.discount_per_item"),description:t.$t("settings.preferences.discount_setting_description")},null,8,["modelValue","title","description"])])]),_:1},8,["title","description"])],32)}}};export{W as default}; +import{E as O,G as Y,v as j,f as V,H as T,k as f,z as Z,j as H,r as c,o as I,c as J,a as l,w as i,l as e,J as C,p as h,t as z,b as D,q as M,m as K,K as A,g,h as _}from"./main-pPEsZPea.js";const W={__name:"PreferencesSetting",setup(L){const b=O(),d=Y(),{t:m,tm:Q}=j.useI18n();let y=V(!1),v=V(!1),o=V(!1);const a=T({...b.selectedCompanySettings});f(()=>d.config.retrospective_edits.map(t=>(t.title=m(t.key),t))),Z(()=>a.carbon_date_format,t=>{if(t){const n=d.dateFormats.find(u=>u.carbon_format_value===t);a.moment_date_format=n.moment_format_value}});const k=f({get:()=>a.discount_per_item==="YES",set:async t=>{const n=t?"YES":"NO";let u={settings:{discount_per_item:n}};a.discount_per_item=n,await b.updateCompanySettings({data:u,message:"general.setting_updated"})}}),$=f({get:()=>a.automatically_expire_public_links==="YES",set:async t=>{const n=t?"YES":"NO";a.automatically_expire_public_links=n}}),F=f(()=>({currency:{required:g.withMessage(m("validation.required"),_)},language:{required:g.withMessage(m("validation.required"),_)},carbon_date_format:{required:g.withMessage(m("validation.required"),_)},moment_date_format:{required:g.withMessage(m("validation.required"),_)},time_zone:{required:g.withMessage(m("validation.required"),_)},fiscal_year:{required:g.withMessage(m("validation.required"),_)}})),r=H(F,f(()=>a));U();async function U(){o.value=!0,Promise.all([d.fetchCurrencies(),d.fetchDateFormats(),d.fetchTimeZones()]).then(([t])=>{o.value=!1})}async function N(){if(r.value.$touch(),r.value.$invalid)return;let t={settings:{...a}};y.value=!0,delete t.settings.link_expiry_days,await b.updateCompanySettings({data:t,message:"settings.preferences.updated_message"}),y.value=!1}async function E(){v.value=!0,await b.updateCompanySettings({data:{settings:{link_expiry_days:a.link_expiry_days,automatically_expire_public_links:a.automatically_expire_public_links}},message:"settings.preferences.updated_message"}),v.value=!1}return(t,n)=>{const u=c("BaseMultiselect"),p=c("BaseInputGroup"),G=c("BaseInputGrid"),S=c("BaseIcon"),B=c("BaseButton"),q=c("BaseDivider"),w=c("BaseSwitchSection"),x=c("BaseInput"),P=c("BaseSettingCard");return I(),J("form",{action:"",class:"relative",onSubmit:M(N,["prevent"])},[l(P,{title:t.$t("settings.menu_title.preferences"),description:t.$t("settings.preferences.general_settings")},{default:i(()=>[l(G,{class:"mt-5"},{default:i(()=>[l(p,{"content-loading":e(o),label:t.$t("settings.preferences.currency"),"help-text":t.$t("settings.preferences.company_currency_unchangeable"),error:e(r).currency.$error&&e(r).currency.$errors[0].$message,required:""},{default:i(()=>[l(u,{modelValue:a.currency,"onUpdate:modelValue":n[0]||(n[0]=s=>a.currency=s),"content-loading":e(o),options:e(d).currencies,label:"name","value-prop":"id",searchable:!0,"track-by":"name",invalid:e(r).currency.$error,disabled:"",class:"w-full"},null,8,["modelValue","content-loading","options","invalid"])]),_:1},8,["content-loading","label","help-text","error"]),l(p,{label:t.$t("settings.preferences.default_language"),"content-loading":e(o),error:e(r).language.$error&&e(r).language.$errors[0].$message,required:""},{default:i(()=>[l(u,{modelValue:a.language,"onUpdate:modelValue":n[1]||(n[1]=s=>a.language=s),"content-loading":e(o),options:e(d).config.languages,label:"name","value-prop":"code",class:"w-full","track-by":"name",searchable:!0,invalid:e(r).language.$error},null,8,["modelValue","content-loading","options","invalid"])]),_:1},8,["label","content-loading","error"]),l(p,{label:t.$t("settings.preferences.time_zone"),"content-loading":e(o),error:e(r).time_zone.$error&&e(r).time_zone.$errors[0].$message,required:""},{default:i(()=>[l(u,{modelValue:a.time_zone,"onUpdate:modelValue":n[2]||(n[2]=s=>a.time_zone=s),"content-loading":e(o),options:e(d).timeZones,label:"key","value-prop":"value","track-by":"key",searchable:!0,invalid:e(r).time_zone.$error},null,8,["modelValue","content-loading","options","invalid"])]),_:1},8,["label","content-loading","error"]),l(p,{label:t.$t("settings.preferences.date_format"),"content-loading":e(o),error:e(r).carbon_date_format.$error&&e(r).carbon_date_format.$errors[0].$message,required:""},{default:i(()=>[l(u,{modelValue:a.carbon_date_format,"onUpdate:modelValue":n[3]||(n[3]=s=>a.carbon_date_format=s),"content-loading":e(o),options:e(d).dateFormats,label:"display_date","value-prop":"carbon_format_value","track-by":"display_date",searchable:"",invalid:e(r).carbon_date_format.$error,class:"w-full"},null,8,["modelValue","content-loading","options","invalid"])]),_:1},8,["label","content-loading","error"]),l(p,{"content-loading":e(o),error:e(r).fiscal_year.$error&&e(r).fiscal_year.$errors[0].$message,label:t.$t("settings.preferences.fiscal_year"),required:""},{default:i(()=>[l(u,{modelValue:a.fiscal_year,"onUpdate:modelValue":n[4]||(n[4]=s=>a.fiscal_year=s),"content-loading":e(o),options:e(d).config.fiscal_years,label:"key","value-prop":"value",invalid:e(r).fiscal_year.$error,"track-by":"key",searchable:!0,class:"w-full"},null,8,["modelValue","content-loading","options","invalid"])]),_:1},8,["content-loading","error","label"])]),_:1}),l(B,{"content-loading":e(o),disabled:e(y),loading:e(y),type:"submit",class:"mt-6"},{left:i(s=>[l(S,{name:"SaveIcon",class:C(s.class)},null,8,["class"])]),default:i(()=>[h(" "+z(t.$t("settings.company_info.save")),1)]),_:1},8,["content-loading","disabled","loading"]),l(q,{class:"mt-6 mb-2"}),D("ul",null,[D("form",{onSubmit:M(E,["prevent"])},[l(w,{modelValue:$.value,"onUpdate:modelValue":n[5]||(n[5]=s=>$.value=s),title:t.$t("settings.preferences.expire_public_links"),description:t.$t("settings.preferences.expire_setting_description")},null,8,["modelValue","title","description"]),$.value?(I(),K(p,{key:0,"content-loading":e(o),label:t.$t("settings.preferences.expire_public_links"),class:"mt-2 mb-4"},{default:i(()=>[l(x,{modelValue:a.link_expiry_days,"onUpdate:modelValue":n[6]||(n[6]=s=>a.link_expiry_days=s),disabled:a.automatically_expire_public_links==="NO","content-loading":e(o),type:"number"},null,8,["modelValue","disabled","content-loading"])]),_:1},8,["content-loading","label"])):A("",!0),l(B,{"content-loading":e(o),disabled:e(v),loading:e(v),type:"submit",class:"mt-6"},{left:i(s=>[l(S,{name:"SaveIcon",class:C(s.class)},null,8,["class"])]),default:i(()=>[h(" "+z(t.$t("general.save")),1)]),_:1},8,["content-loading","disabled","loading"])],32),l(q,{class:"mt-6 mb-2"}),l(w,{modelValue:k.value,"onUpdate:modelValue":n[7]||(n[7]=s=>k.value=s),title:t.$t("settings.preferences.discount_per_item"),description:t.$t("settings.preferences.discount_setting_description")},null,8,["modelValue","title","description"])])]),_:1},8,["title","description"])],32)}}};export{W as default}; diff --git a/public/build/assets/RecurringInvoiceCreate-ujZcDwNz.js b/public/build/assets/RecurringInvoiceCreate-PLUdTdl7.js similarity index 94% rename from public/build/assets/RecurringInvoiceCreate-ujZcDwNz.js rename to public/build/assets/RecurringInvoiceCreate-PLUdTdl7.js index 39dc5518..350a3945 100644 --- a/public/build/assets/RecurringInvoiceCreate-ujZcDwNz.js +++ b/public/build/assets/RecurringInvoiceCreate-PLUdTdl7.js @@ -1 +1 @@ -import{L as O,aO as P,G as Z,f as x,H as ee,k as p,z as j,Y as ne,r as g,o as y,c as A,b as v,a as i,l as e,t as k,w as c,m as w,K as S,N as G,ap as te,E as ie,ae as re,av as oe,F as ae,a8 as le,u as se,v as ce,e as ue,g as f,h as q,ag as U,X as de,j as ge,J as ve,p as me,q as fe}from"./main-B9dpPbRR.js";import{_ as ye,a as Ie,b as be,c as we,d as _e,e as $e,f as Re}from"./SalesTax-ipNfFfG-.js";import{_ as qe}from"./ExchangeRateConverter-aybyIXMj.js";import{_ as pe}from"./CreateCustomFields-blY-YoZ8.js";import{_ as Be}from"./TaxTypeModal-jyzjEMpe.js";import"./DragIcon-w0U5hiz6.js";import"./SelectNotePopup-5BlBNAE0.js";import"./NoteModal-h_90cxoW.js";import"./payment-Y8OywN76.js";import"./exchange-rate-M4ruO0OO.js";import"./dynamic-import-helper-0gtGTknh.js";const Se={class:"col-span-5 pr-0"},he={class:"flex mt-7"},Ce={class:"relative w-20 mt-8"},Ve={class:"ml-2"},Fe={class:"p-0 mb-1 leading-snug text-left text-black"},Le={class:"p-0 m-0 text-xs leading-tight text-left text-gray-500",style:{"max-width":"480px"}},Me={class:"grid grid-cols-1 col-span-7 gap-4 mt-8 lg:gap-6 lg:mt-0 lg:grid-cols-2"},ke={__name:"RecurringInvoiceCreateBasicFields",props:{v:{type:Object,default:null},isLoading:{type:Boolean,default:!1},isEdit:{type:Boolean,default:!1}},setup(n){const r=n,C=O(),t=P(),V=Z(),_=x(!1),N=ee([{label:"None",value:"NONE"},{label:"Date",value:"DATE"},{label:"Count",value:"COUNT"}]),F=p(()=>t.newRecurringInvoice.selectedFrequency&&t.newRecurringInvoice.selectedFrequency.value==="CUSTOM"),u=p(()=>r.isEdit?V.config.recurring_invoice_status.update_status:V.config.recurring_invoice_status.create_status);j(()=>t.newRecurringInvoice.selectedFrequency,a=>{t.isFetchingInitialSettings||(a&&a.value!=="CUSTOM"?t.newRecurringInvoice.frequency=a.value:t.newRecurringInvoice.frequency=null)}),ne(()=>{C.params.id||$()});function d(a){return t.newRecurringInvoice.limit_by===a}const T=te(()=>{$()},500);async function $(){const a=t.newRecurringInvoice.frequency;if(!a)return;_.value=!0;let o={starts_at:t.newRecurringInvoice.starts_at,frequency:a};try{await t.fetchRecurringInvoiceFrequencyDate(o)}catch(B){console.error(B),_.value=!1}_.value=!1}return(a,o)=>{const B=g("BaseCustomerSelectPopup"),R=g("BaseSwitch"),h=g("BaseDatePicker"),m=g("BaseInputGroup"),I=g("BaseMultiselect"),L=g("BaseInput");return y(),A(G,null,[v("div",Se,[i(B,{modelValue:e(t).newRecurringInvoice.customer,"onUpdate:modelValue":o[0]||(o[0]=l=>e(t).newRecurringInvoice.customer=l),valid:n.v.customer_id,"content-loading":n.isLoading,type:"recurring-invoice"},null,8,["modelValue","valid","content-loading"]),v("div",he,[v("div",Ce,[i(R,{modelValue:e(t).newRecurringInvoice.send_automatically,"onUpdate:modelValue":o[1]||(o[1]=l=>e(t).newRecurringInvoice.send_automatically=l),class:"absolute -top-4"},null,8,["modelValue"])]),v("div",Ve,[v("p",Fe,k(a.$t("recurring_invoices.send_automatically")),1),v("p",Le,k(a.$t("recurring_invoices.send_automatically_desc")),1)])])]),v("div",Me,[i(m,{label:a.$t("recurring_invoices.starts_at"),"content-loading":n.isLoading,required:"",error:n.v.starts_at.$error&&n.v.starts_at.$errors[0].$message},{default:c(()=>[i(h,{modelValue:e(t).newRecurringInvoice.starts_at,"onUpdate:modelValue":o[2]||(o[2]=l=>e(t).newRecurringInvoice.starts_at=l),"content-loading":n.isLoading,"calendar-button":!0,"calendar-button-icon":"calendar",invalid:n.v.starts_at.$error,onChange:o[3]||(o[3]=l=>$())},null,8,["modelValue","content-loading","invalid"])]),_:1},8,["label","content-loading","error"]),i(m,{label:a.$t("recurring_invoices.next_invoice_date"),"content-loading":n.isLoading,required:""},{default:c(()=>[i(h,{modelValue:e(t).newRecurringInvoice.next_invoice_at,"onUpdate:modelValue":o[4]||(o[4]=l=>e(t).newRecurringInvoice.next_invoice_at=l),"content-loading":n.isLoading,"calendar-button":!0,disabled:!0,loading:_.value,"calendar-button-icon":"calendar"},null,8,["modelValue","content-loading","loading"])]),_:1},8,["label","content-loading"]),i(m,{label:a.$t("recurring_invoices.limit_by"),"content-loading":n.isLoading,class:"lg:mt-0",required:"",error:n.v.limit_by.$error&&n.v.limit_by.$errors[0].$message},{default:c(()=>[i(I,{modelValue:e(t).newRecurringInvoice.limit_by,"onUpdate:modelValue":o[5]||(o[5]=l=>e(t).newRecurringInvoice.limit_by=l),"content-loading":n.isLoading,options:N,label:"label",invalid:n.v.limit_by.$error,"value-prop":"value"},null,8,["modelValue","content-loading","options","invalid"])]),_:1},8,["label","content-loading","error"]),d("DATE")?(y(),w(m,{key:0,label:a.$t("recurring_invoices.limit_date"),"content-loading":n.isLoading,required:d("DATE"),error:n.v.limit_date.$error&&n.v.limit_date.$errors[0].$message},{default:c(()=>[i(h,{modelValue:e(t).newRecurringInvoice.limit_date,"onUpdate:modelValue":o[6]||(o[6]=l=>e(t).newRecurringInvoice.limit_date=l),"content-loading":n.isLoading,invalid:n.v.limit_date.$error,"calendar-button-icon":"calendar"},null,8,["modelValue","content-loading","invalid"])]),_:1},8,["label","content-loading","required","error"])):S("",!0),d("COUNT")?(y(),w(m,{key:1,label:a.$t("recurring_invoices.count"),"content-loading":n.isLoading,required:d("COUNT"),error:n.v.limit_count.$error&&n.v.limit_count.$errors[0].$message},{default:c(()=>[i(L,{modelValue:e(t).newRecurringInvoice.limit_count,"onUpdate:modelValue":o[7]||(o[7]=l=>e(t).newRecurringInvoice.limit_count=l),"content-loading":n.isLoading,invalid:n.v.limit_count.$error,type:"number"},null,8,["modelValue","content-loading","invalid"])]),_:1},8,["label","content-loading","required","error"])):S("",!0),i(m,{label:a.$t("recurring_invoices.status"),required:"","content-loading":n.isLoading,error:n.v.status.$error&&n.v.status.$errors[0].$message},{default:c(()=>[i(I,{modelValue:e(t).newRecurringInvoice.status,"onUpdate:modelValue":o[8]||(o[8]=l=>e(t).newRecurringInvoice.status=l),options:u.value,"content-loading":n.isLoading,invalid:n.v.status.$error,placeholder:a.$t("recurring_invoices.select_a_status"),"value-prop":"value",label:"value"},null,8,["modelValue","options","content-loading","invalid","placeholder"])]),_:1},8,["label","content-loading","error"]),i(m,{label:a.$t("recurring_invoices.frequency.select_frequency"),required:"","content-loading":n.isLoading,error:n.v.selectedFrequency.$error&&n.v.selectedFrequency.$errors[0].$message},{default:c(()=>[i(I,{modelValue:e(t).newRecurringInvoice.selectedFrequency,"onUpdate:modelValue":o[9]||(o[9]=l=>e(t).newRecurringInvoice.selectedFrequency=l),"content-loading":n.isLoading,options:e(t).frequencies,label:"label",invalid:n.v.selectedFrequency.$error,object:"",onChange:$},null,8,["modelValue","content-loading","options","invalid"])]),_:1},8,["label","content-loading","error"]),F.value?(y(),w(m,{key:2,label:a.$t("recurring_invoices.frequency.title"),"content-loading":n.isLoading,required:"",error:n.v.frequency.$error&&n.v.frequency.$errors[0].$message},{default:c(()=>[i(L,{modelValue:e(t).newRecurringInvoice.frequency,"onUpdate:modelValue":[o[10]||(o[10]=l=>e(t).newRecurringInvoice.frequency=l),e(T)],"content-loading":n.isLoading,disabled:!F.value,invalid:n.v.frequency.$error,loading:_.value},null,8,["modelValue","content-loading","disabled","invalid","loading","onUpdate:modelValue"])]),_:1},8,["label","content-loading","error"])):S("",!0),i(qe,{store:e(t),"store-prop":"newRecurringInvoice",v:n.v,"is-loading":n.isLoading,"is-edit":n.isEdit,"customer-currency":e(t).newRecurringInvoice.currency_id},null,8,["store","v","is-loading","is-edit","customer-currency"])])],64)}}},Ne={class:"flex"},Te={class:"grid-cols-12 gap-8 mt-6 mb-8 lg:grid"},Ue={class:"block mt-10 invoice-foot lg:flex lg:justify-between lg:items-start"},Ee={class:"w-full relative lg:w-1/2"},E="newRecurringInvoice",Ke={__name:"RecurringInvoiceCreate",setup(n){const r=P(),C=ie(),t=re(),V=oe(),_=ae(),N=le(),F=se(),{t:u}=ce.useI18n();let d=x(!1);const T=x(["customer","company","customerCustom","invoice","invoiceCustom"]);let $=O(),a=ue(),o=p(()=>r.isFetchingInvoice||r.isFetchingInitialSettings),B=p(()=>R.value?u("recurring_invoices.edit_invoice"):u("recurring_invoices.new_invoice")),R=p(()=>$.name==="recurring-invoices.edit");const h=p(()=>C.selectedCompanySettings.sales_tax_us_enabled==="YES"&&V.salesTaxUSEnabled),m={starts_at:{required:f.withMessage(u("validation.required"),q)},status:{required:f.withMessage(u("validation.required"),q)},frequency:{required:f.withMessage(u("validation.required"),q)},limit_by:{required:f.withMessage(u("validation.required"),q)},limit_date:{required:f.withMessage(u("validation.required"),U(function(){return r.newRecurringInvoice.limit_by==="DATE"}))},limit_count:{required:f.withMessage(u("validation.required"),U(function(){return r.newRecurringInvoice.limit_by==="COUNT"}))},selectedFrequency:{required:f.withMessage(u("validation.required"),q)},customer_id:{required:f.withMessage(u("validation.required"),q)},exchange_rate:{required:U(function(){return f.withMessage(u("validation.required"),q),r.showExchangeRate}),decimal:f.withMessage(u("validation.valid_exchange_rate"),de)}},I=ge(m,p(()=>r.newRecurringInvoice),{$scope:E});r.resetCurrentRecurringInvoice(),r.fetchRecurringInvoiceInitialSettings(R.value),t.resetCustomFields(),I.value.$reset,j(()=>r.newRecurringInvoice.customer,s=>{s&&s.currency?r.newRecurringInvoice.currency=s.currency:r.newRecurringInvoice.currency=C.selectedCompanyCurrency});async function L(){if(I.value.$touch(),I.value.$invalid)return!1;d.value=!0;let s={...r.newRecurringInvoice,sub_total:r.getSubTotal,total:r.getTotal,tax:r.getTotalTax};if(s.customer&&!s.customer.email&&s.send_automatically){F.showNotification({type:"error",message:u("recurring_invoices.add_customer_email")}),l(),d.value=!1;return}$.params.id?r.updateRecurringInvoice(s).then(b=>{b.data.data&&a.push(`/admin/recurring-invoices/${b.data.data.id}/view`),d.value=!1}).catch(b=>{d.value=!1}):H(s)}async function l(){let s=r.newRecurringInvoice.customer.id;await N.fetchCustomer(s),_.openModal({title:u("customers.edit_customer"),componentName:"CustomerModal"})}function H(s){r.addRecurringInvoice(s).then(b=>{b.data.data&&a.push(`/admin/recurring-invoices/${b.data.data.id}/view`),d.value=!1}).catch(b=>{d.value=!1})}return(s,b)=>{const M=g("BaseBreadcrumbItem"),z=g("BaseBreadcrumb"),D=g("BaseButton"),Y=g("router-link"),J=g("BaseIcon"),K=g("BasePageHeader"),X=g("BaseScrollPane"),Q=g("BasePage");return y(),A(G,null,[i(ye),i(Ie),i(Be),h.value&&!e(o)?(y(),w(be,{key:0,store:e(r),"store-prop":"newRecurringInvoice","is-edit":e(R),customer:e(r).newRecurringInvoice.customer},null,8,["store","is-edit","customer"])):S("",!0),i(Q,{class:"relative invoice-create-page"},{default:c(()=>[v("form",{onSubmit:fe(L,["prevent"])},[i(K,{title:e(B)},{actions:c(()=>[i(Y,{to:`/invoices/pdf/${e(r).newRecurringInvoice.unique_hash}`},{default:c(()=>[s.$route.name==="invoices.edit"?(y(),w(D,{key:0,target:"_blank",class:"mr-3",variant:"primary-outline",type:"button"},{default:c(()=>[v("span",Ne,k(s.$t("general.view_pdf")),1)]),_:1})):S("",!0)]),_:1},8,["to"]),i(D,{loading:e(d),disabled:e(d),variant:"primary",type:"submit"},{left:c(W=>[e(d)?S("",!0):(y(),w(J,{key:0,name:"SaveIcon",class:ve(W.class)},null,8,["class"]))]),default:c(()=>[me(" "+k(s.$t("recurring_invoices.save_invoice")),1)]),_:1},8,["loading","disabled"])]),default:c(()=>[i(z,null,{default:c(()=>[i(M,{title:s.$t("general.home"),to:"/admin/dashboard"},null,8,["title"]),i(M,{title:s.$t("recurring_invoices.title",2),to:"/admin/recurring-invoices"},null,8,["title"]),s.$route.name==="invoices.edit"?(y(),w(M,{key:0,title:s.$t("recurring_invoices.edit_invoice"),to:"#",active:""},null,8,["title"])):(y(),w(M,{key:1,title:e(B),to:"#",active:""},null,8,["title"]))]),_:1})]),_:1},8,["title"]),v("div",Te,[i(ke,{v:e(I),"is-loading":e(o),"is-edit":e(R)},null,8,["v","is-loading","is-edit"])]),i(X,null,{default:c(()=>[i(we,{currency:e(r).newRecurringInvoice.currency,"is-loading":e(o),"item-validation-scope":E,store:e(r),"store-prop":"newRecurringInvoice"},null,8,["currency","is-loading","store"]),v("div",Ue,[v("div",Ee,[i(_e,{store:e(r),"store-prop":"newRecurringInvoice",fields:T.value,type:"Invoice"},null,8,["store","fields"]),i(pe,{type:"Invoice","is-edit":e(R),"is-loading":e(o),store:e(r),"store-prop":"newRecurringInvoice","custom-field-scope":E,class:"mb-6"},null,8,["is-edit","is-loading","store"]),i($e,{store:e(r),"store-prop":"newRecurringInvoice"},null,8,["store"])]),i(Re,{currency:e(r).newRecurringInvoice.currency,"is-loading":e(o),store:e(r),"store-prop":"newRecurringInvoice","tax-popup-type":"invoice"},null,8,["currency","is-loading","store"])])]),_:1})],32)]),_:1})],64)}}};export{Ke as default}; +import{L as P,aR as O,G as Z,f as x,H as ee,k as p,z as j,Y as ne,r as g,o as y,c as A,b as v,a as i,l as e,t as k,w as c,m as w,K as S,N as G,ap as te,E as ie,ae as re,av as oe,F as ae,a8 as le,u as se,v as ce,e as ue,g as f,h as q,ag as U,X as de,j as ge,J as ve,p as me,q as fe}from"./main-pPEsZPea.js";import{_ as ye,a as Ie,b as be,c as we,d as _e,e as $e,f as Re}from"./SalesTax-q9Vvrvve.js";import{_ as qe}from"./ExchangeRateConverter-e1MH9GPD.js";import{_ as pe}from"./CreateCustomFields-8Vbtza7g.js";import{_ as Be}from"./TaxTypeModal-rCI1vg4v.js";import"./DragIcon-lAv182Nx.js";import"./SelectNotePopup-iZwUGlz-.js";import"./NoteModal-YX0uc_EM.js";import"./payment-fIjVKZH2.js";import"./exchange-rate-Md-8fXjz.js";import"./dynamic-import-helper-0gtGTknh.js";const Se={class:"col-span-5 pr-0"},he={class:"flex mt-7"},Ce={class:"relative w-20 mt-8"},Ve={class:"ml-2"},Fe={class:"p-0 mb-1 leading-snug text-left text-black"},Le={class:"p-0 m-0 text-xs leading-tight text-left text-gray-500",style:{"max-width":"480px"}},Me={class:"grid grid-cols-1 col-span-7 gap-4 mt-8 lg:gap-6 lg:mt-0 lg:grid-cols-2"},ke={__name:"RecurringInvoiceCreateBasicFields",props:{v:{type:Object,default:null},isLoading:{type:Boolean,default:!1},isEdit:{type:Boolean,default:!1}},setup(n){const r=n,C=P(),t=O(),V=Z(),_=x(!1),N=ee([{label:"None",value:"NONE"},{label:"Date",value:"DATE"},{label:"Count",value:"COUNT"}]),F=p(()=>t.newRecurringInvoice.selectedFrequency&&t.newRecurringInvoice.selectedFrequency.value==="CUSTOM"),u=p(()=>r.isEdit?V.config.recurring_invoice_status.update_status:V.config.recurring_invoice_status.create_status);j(()=>t.newRecurringInvoice.selectedFrequency,a=>{t.isFetchingInitialSettings||(a&&a.value!=="CUSTOM"?t.newRecurringInvoice.frequency=a.value:t.newRecurringInvoice.frequency=null)}),ne(()=>{C.params.id||$()});function d(a){return t.newRecurringInvoice.limit_by===a}const T=te(()=>{$()},500);async function $(){const a=t.newRecurringInvoice.frequency;if(!a)return;_.value=!0;let o={starts_at:t.newRecurringInvoice.starts_at,frequency:a};try{await t.fetchRecurringInvoiceFrequencyDate(o)}catch(B){console.error(B),_.value=!1}_.value=!1}return(a,o)=>{const B=g("BaseCustomerSelectPopup"),R=g("BaseSwitch"),h=g("BaseDatePicker"),m=g("BaseInputGroup"),I=g("BaseMultiselect"),L=g("BaseInput");return y(),A(G,null,[v("div",Se,[i(B,{modelValue:e(t).newRecurringInvoice.customer,"onUpdate:modelValue":o[0]||(o[0]=l=>e(t).newRecurringInvoice.customer=l),valid:n.v.customer_id,"content-loading":n.isLoading,type:"recurring-invoice"},null,8,["modelValue","valid","content-loading"]),v("div",he,[v("div",Ce,[i(R,{modelValue:e(t).newRecurringInvoice.send_automatically,"onUpdate:modelValue":o[1]||(o[1]=l=>e(t).newRecurringInvoice.send_automatically=l),class:"absolute -top-4"},null,8,["modelValue"])]),v("div",Ve,[v("p",Fe,k(a.$t("recurring_invoices.send_automatically")),1),v("p",Le,k(a.$t("recurring_invoices.send_automatically_desc")),1)])])]),v("div",Me,[i(m,{label:a.$t("recurring_invoices.starts_at"),"content-loading":n.isLoading,required:"",error:n.v.starts_at.$error&&n.v.starts_at.$errors[0].$message},{default:c(()=>[i(h,{modelValue:e(t).newRecurringInvoice.starts_at,"onUpdate:modelValue":o[2]||(o[2]=l=>e(t).newRecurringInvoice.starts_at=l),"content-loading":n.isLoading,"calendar-button":!0,"calendar-button-icon":"calendar",invalid:n.v.starts_at.$error,onChange:o[3]||(o[3]=l=>$())},null,8,["modelValue","content-loading","invalid"])]),_:1},8,["label","content-loading","error"]),i(m,{label:a.$t("recurring_invoices.next_invoice_date"),"content-loading":n.isLoading,required:""},{default:c(()=>[i(h,{modelValue:e(t).newRecurringInvoice.next_invoice_at,"onUpdate:modelValue":o[4]||(o[4]=l=>e(t).newRecurringInvoice.next_invoice_at=l),"content-loading":n.isLoading,"calendar-button":!0,disabled:!0,loading:_.value,"calendar-button-icon":"calendar"},null,8,["modelValue","content-loading","loading"])]),_:1},8,["label","content-loading"]),i(m,{label:a.$t("recurring_invoices.limit_by"),"content-loading":n.isLoading,class:"lg:mt-0",required:"",error:n.v.limit_by.$error&&n.v.limit_by.$errors[0].$message},{default:c(()=>[i(I,{modelValue:e(t).newRecurringInvoice.limit_by,"onUpdate:modelValue":o[5]||(o[5]=l=>e(t).newRecurringInvoice.limit_by=l),"content-loading":n.isLoading,options:N,label:"label",invalid:n.v.limit_by.$error,"value-prop":"value"},null,8,["modelValue","content-loading","options","invalid"])]),_:1},8,["label","content-loading","error"]),d("DATE")?(y(),w(m,{key:0,label:a.$t("recurring_invoices.limit_date"),"content-loading":n.isLoading,required:d("DATE"),error:n.v.limit_date.$error&&n.v.limit_date.$errors[0].$message},{default:c(()=>[i(h,{modelValue:e(t).newRecurringInvoice.limit_date,"onUpdate:modelValue":o[6]||(o[6]=l=>e(t).newRecurringInvoice.limit_date=l),"content-loading":n.isLoading,invalid:n.v.limit_date.$error,"calendar-button-icon":"calendar"},null,8,["modelValue","content-loading","invalid"])]),_:1},8,["label","content-loading","required","error"])):S("",!0),d("COUNT")?(y(),w(m,{key:1,label:a.$t("recurring_invoices.count"),"content-loading":n.isLoading,required:d("COUNT"),error:n.v.limit_count.$error&&n.v.limit_count.$errors[0].$message},{default:c(()=>[i(L,{modelValue:e(t).newRecurringInvoice.limit_count,"onUpdate:modelValue":o[7]||(o[7]=l=>e(t).newRecurringInvoice.limit_count=l),"content-loading":n.isLoading,invalid:n.v.limit_count.$error,type:"number"},null,8,["modelValue","content-loading","invalid"])]),_:1},8,["label","content-loading","required","error"])):S("",!0),i(m,{label:a.$t("recurring_invoices.status"),required:"","content-loading":n.isLoading,error:n.v.status.$error&&n.v.status.$errors[0].$message},{default:c(()=>[i(I,{modelValue:e(t).newRecurringInvoice.status,"onUpdate:modelValue":o[8]||(o[8]=l=>e(t).newRecurringInvoice.status=l),options:u.value,"content-loading":n.isLoading,invalid:n.v.status.$error,placeholder:a.$t("recurring_invoices.select_a_status"),"value-prop":"value",label:"value"},null,8,["modelValue","options","content-loading","invalid","placeholder"])]),_:1},8,["label","content-loading","error"]),i(m,{label:a.$t("recurring_invoices.frequency.select_frequency"),required:"","content-loading":n.isLoading,error:n.v.selectedFrequency.$error&&n.v.selectedFrequency.$errors[0].$message},{default:c(()=>[i(I,{modelValue:e(t).newRecurringInvoice.selectedFrequency,"onUpdate:modelValue":o[9]||(o[9]=l=>e(t).newRecurringInvoice.selectedFrequency=l),"content-loading":n.isLoading,options:e(t).frequencies,label:"label",invalid:n.v.selectedFrequency.$error,object:"",onChange:$},null,8,["modelValue","content-loading","options","invalid"])]),_:1},8,["label","content-loading","error"]),F.value?(y(),w(m,{key:2,label:a.$t("recurring_invoices.frequency.title"),"content-loading":n.isLoading,required:"",error:n.v.frequency.$error&&n.v.frequency.$errors[0].$message},{default:c(()=>[i(L,{modelValue:e(t).newRecurringInvoice.frequency,"onUpdate:modelValue":[o[10]||(o[10]=l=>e(t).newRecurringInvoice.frequency=l),e(T)],"content-loading":n.isLoading,disabled:!F.value,invalid:n.v.frequency.$error,loading:_.value},null,8,["modelValue","content-loading","disabled","invalid","loading","onUpdate:modelValue"])]),_:1},8,["label","content-loading","error"])):S("",!0),i(qe,{store:e(t),"store-prop":"newRecurringInvoice",v:n.v,"is-loading":n.isLoading,"is-edit":n.isEdit,"customer-currency":e(t).newRecurringInvoice.currency_id},null,8,["store","v","is-loading","is-edit","customer-currency"])])],64)}}},Ne={class:"flex"},Te={class:"grid-cols-12 gap-8 mt-6 mb-8 lg:grid"},Ue={class:"block mt-10 invoice-foot lg:flex lg:justify-between lg:items-start"},Ee={class:"w-full relative lg:w-1/2"},E="newRecurringInvoice",Ke={__name:"RecurringInvoiceCreate",setup(n){const r=O(),C=ie(),t=re(),V=oe(),_=ae(),N=le(),F=se(),{t:u}=ce.useI18n();let d=x(!1);const T=x(["customer","company","customerCustom","invoice","invoiceCustom"]);let $=P(),a=ue(),o=p(()=>r.isFetchingInvoice||r.isFetchingInitialSettings),B=p(()=>R.value?u("recurring_invoices.edit_invoice"):u("recurring_invoices.new_invoice")),R=p(()=>$.name==="recurring-invoices.edit");const h=p(()=>C.selectedCompanySettings.sales_tax_us_enabled==="YES"&&V.salesTaxUSEnabled),m={starts_at:{required:f.withMessage(u("validation.required"),q)},status:{required:f.withMessage(u("validation.required"),q)},frequency:{required:f.withMessage(u("validation.required"),q)},limit_by:{required:f.withMessage(u("validation.required"),q)},limit_date:{required:f.withMessage(u("validation.required"),U(function(){return r.newRecurringInvoice.limit_by==="DATE"}))},limit_count:{required:f.withMessage(u("validation.required"),U(function(){return r.newRecurringInvoice.limit_by==="COUNT"}))},selectedFrequency:{required:f.withMessage(u("validation.required"),q)},customer_id:{required:f.withMessage(u("validation.required"),q)},exchange_rate:{required:U(function(){return f.withMessage(u("validation.required"),q),r.showExchangeRate}),decimal:f.withMessage(u("validation.valid_exchange_rate"),de)}},I=ge(m,p(()=>r.newRecurringInvoice),{$scope:E});r.resetCurrentRecurringInvoice(),r.fetchRecurringInvoiceInitialSettings(R.value),t.resetCustomFields(),I.value.$reset,j(()=>r.newRecurringInvoice.customer,s=>{s&&s.currency?r.newRecurringInvoice.currency=s.currency:r.newRecurringInvoice.currency=C.selectedCompanyCurrency});async function L(){if(I.value.$touch(),I.value.$invalid)return!1;d.value=!0;let s={...r.newRecurringInvoice,sub_total:r.getSubTotal,total:r.getTotal,tax:r.getTotalTax};if(s.customer&&!s.customer.email&&s.send_automatically){F.showNotification({type:"error",message:u("recurring_invoices.add_customer_email")}),l(),d.value=!1;return}$.params.id?r.updateRecurringInvoice(s).then(b=>{b.data.data&&a.push(`/admin/recurring-invoices/${b.data.data.id}/view`),d.value=!1}).catch(b=>{d.value=!1}):H(s)}async function l(){let s=r.newRecurringInvoice.customer.id;await N.fetchCustomer(s),_.openModal({title:u("customers.edit_customer"),componentName:"CustomerModal"})}function H(s){r.addRecurringInvoice(s).then(b=>{b.data.data&&a.push(`/admin/recurring-invoices/${b.data.data.id}/view`),d.value=!1}).catch(b=>{d.value=!1})}return(s,b)=>{const M=g("BaseBreadcrumbItem"),z=g("BaseBreadcrumb"),D=g("BaseButton"),Y=g("router-link"),J=g("BaseIcon"),K=g("BasePageHeader"),X=g("BaseScrollPane"),Q=g("BasePage");return y(),A(G,null,[i(ye),i(Ie),i(Be),h.value&&!e(o)?(y(),w(be,{key:0,store:e(r),"store-prop":"newRecurringInvoice","is-edit":e(R),customer:e(r).newRecurringInvoice.customer},null,8,["store","is-edit","customer"])):S("",!0),i(Q,{class:"relative invoice-create-page"},{default:c(()=>[v("form",{onSubmit:fe(L,["prevent"])},[i(K,{title:e(B)},{actions:c(()=>[i(Y,{to:`/invoices/pdf/${e(r).newRecurringInvoice.unique_hash}`},{default:c(()=>[s.$route.name==="invoices.edit"?(y(),w(D,{key:0,target:"_blank",class:"mr-3",variant:"primary-outline",type:"button"},{default:c(()=>[v("span",Ne,k(s.$t("general.view_pdf")),1)]),_:1})):S("",!0)]),_:1},8,["to"]),i(D,{loading:e(d),disabled:e(d),variant:"primary",type:"submit"},{left:c(W=>[e(d)?S("",!0):(y(),w(J,{key:0,name:"SaveIcon",class:ve(W.class)},null,8,["class"]))]),default:c(()=>[me(" "+k(s.$t("recurring_invoices.save_invoice")),1)]),_:1},8,["loading","disabled"])]),default:c(()=>[i(z,null,{default:c(()=>[i(M,{title:s.$t("general.home"),to:"/admin/dashboard"},null,8,["title"]),i(M,{title:s.$t("recurring_invoices.title",2),to:"/admin/recurring-invoices"},null,8,["title"]),s.$route.name==="invoices.edit"?(y(),w(M,{key:0,title:s.$t("recurring_invoices.edit_invoice"),to:"#",active:""},null,8,["title"])):(y(),w(M,{key:1,title:e(B),to:"#",active:""},null,8,["title"]))]),_:1})]),_:1},8,["title"]),v("div",Te,[i(ke,{v:e(I),"is-loading":e(o),"is-edit":e(R)},null,8,["v","is-loading","is-edit"])]),i(X,null,{default:c(()=>[i(we,{currency:e(r).newRecurringInvoice.currency,"is-loading":e(o),"item-validation-scope":E,store:e(r),"store-prop":"newRecurringInvoice"},null,8,["currency","is-loading","store"]),v("div",Ue,[v("div",Ee,[i(_e,{store:e(r),"store-prop":"newRecurringInvoice",fields:T.value,type:"Invoice"},null,8,["store","fields"]),i(pe,{type:"Invoice","is-edit":e(R),"is-loading":e(o),store:e(r),"store-prop":"newRecurringInvoice","custom-field-scope":E,class:"mb-6"},null,8,["is-edit","is-loading","store"]),i($e,{store:e(r),"store-prop":"newRecurringInvoice"},null,8,["store"])]),i(Re,{currency:e(r).newRecurringInvoice.currency,"is-loading":e(o),store:e(r),"store-prop":"newRecurringInvoice","tax-popup-type":"invoice"},null,8,["currency","is-loading","store"])])]),_:1})],32)]),_:1})],64)}}};export{Ke as default}; diff --git a/public/build/assets/RecurringInvoiceIndexDropdown-FtyOunpa.js b/public/build/assets/RecurringInvoiceIndexDropdown-JbpbfQ9O.js similarity index 94% rename from public/build/assets/RecurringInvoiceIndexDropdown-FtyOunpa.js rename to public/build/assets/RecurringInvoiceIndexDropdown-JbpbfQ9O.js index fedec2e1..69412605 100644 --- a/public/build/assets/RecurringInvoiceIndexDropdown-FtyOunpa.js +++ b/public/build/assets/RecurringInvoiceIndexDropdown-JbpbfQ9O.js @@ -1 +1 @@ -import{aO as E,u as b,a7 as k,M as x,v as C,L as S,e as V,a5 as $,r as c,o as n,m as a,w as o,l as t,a as r,Q as p,p as v,t as _,K as f}from"./main-B9dpPbRR.js";const A={__name:"RecurringInvoiceIndexDropdown",props:{row:{type:Object,default:null},table:{type:Object,default:null},loadData:{type:Function,default:()=>{}}},setup(l){const y=l,g=E(),w=b(),D=k(),m=x(),{t:s}=C.useI18n(),h=S();V(),$("utils");async function B(i=null){D.openDialog({title:s("general.are_you_sure"),message:s("invoices.confirm_delete"),yesLabel:s("general.ok"),noLabel:s("general.cancel"),variant:"danger",hideNoButton:!1,size:"lg"}).then(async u=>{u&&await g.deleteMultipleRecurringInvoices(i).then(e=>{e.data.success?(y.table&&y.table.refresh(),g.$patch(d=>{d.selectedRecurringInvoices=[],d.selectAllField=!1}),w.showNotification({type:"success",message:s("recurring_invoices.deleted_message",2)})):e.data.error&&w.showNotification({type:"error",message:e.data.message})})})}return(i,u)=>{const e=c("BaseIcon"),d=c("BaseButton"),I=c("BaseDropdownItem"),R=c("router-link"),N=c("BaseDropdown");return n(),a(N,{"content-loading":t(g).isFetchingViewData},{activator:o(()=>[t(h).name==="recurring-invoices.view"?(n(),a(d,{key:0,variant:"primary"},{default:o(()=>[r(e,{name:"DotsHorizontalIcon",class:"h-5 text-white"})]),_:1})):(n(),a(e,{key:1,name:"DotsHorizontalIcon",class:"h-5 text-gray-500"}))]),default:o(()=>[t(m).hasAbilities(t(p).EDIT_RECURRING_INVOICE)?(n(),a(R,{key:0,to:`/admin/recurring-invoices/${l.row.id}/edit`},{default:o(()=>[r(I,null,{default:o(()=>[r(e,{name:"PencilIcon",class:"w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500"}),v(" "+_(i.$t("general.edit")),1)]),_:1})]),_:1},8,["to"])):f("",!0),t(h).name!=="recurring-invoices.view"&&t(m).hasAbilities(t(p).VIEW_RECURRING_INVOICE)?(n(),a(R,{key:1,to:`recurring-invoices/${l.row.id}/view`},{default:o(()=>[r(I,null,{default:o(()=>[r(e,{name:"EyeIcon",class:"w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500"}),v(" "+_(i.$t("general.view")),1)]),_:1})]),_:1},8,["to"])):f("",!0),t(m).hasAbilities(t(p).DELETE_RECURRING_INVOICE)?(n(),a(I,{key:2,onClick:u[0]||(u[0]=O=>B(l.row.id))},{default:o(()=>[r(e,{name:"TrashIcon",class:"w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500"}),v(" "+_(i.$t("general.delete")),1)]),_:1})):f("",!0)]),_:1},8,["content-loading"])}}};export{A as _}; +import{aR as E,u as b,a7 as k,M as x,v as C,L as S,e as V,a5 as $,r as c,o as n,m as a,w as o,l as t,a as r,Q as p,p as v,t as _,K as f}from"./main-pPEsZPea.js";const A={__name:"RecurringInvoiceIndexDropdown",props:{row:{type:Object,default:null},table:{type:Object,default:null},loadData:{type:Function,default:()=>{}}},setup(l){const y=l,g=E(),w=b(),D=k(),m=x(),{t:s}=C.useI18n(),h=S();V(),$("utils");async function B(i=null){D.openDialog({title:s("general.are_you_sure"),message:s("invoices.confirm_delete"),yesLabel:s("general.ok"),noLabel:s("general.cancel"),variant:"danger",hideNoButton:!1,size:"lg"}).then(async u=>{u&&await g.deleteMultipleRecurringInvoices(i).then(e=>{e.data.success?(y.table&&y.table.refresh(),g.$patch(d=>{d.selectedRecurringInvoices=[],d.selectAllField=!1}),w.showNotification({type:"success",message:s("recurring_invoices.deleted_message",2)})):e.data.error&&w.showNotification({type:"error",message:e.data.message})})})}return(i,u)=>{const e=c("BaseIcon"),d=c("BaseButton"),I=c("BaseDropdownItem"),R=c("router-link"),N=c("BaseDropdown");return n(),a(N,{"content-loading":t(g).isFetchingViewData},{activator:o(()=>[t(h).name==="recurring-invoices.view"?(n(),a(d,{key:0,variant:"primary"},{default:o(()=>[r(e,{name:"DotsHorizontalIcon",class:"h-5 text-white"})]),_:1})):(n(),a(e,{key:1,name:"DotsHorizontalIcon",class:"h-5 text-gray-500"}))]),default:o(()=>[t(m).hasAbilities(t(p).EDIT_RECURRING_INVOICE)?(n(),a(R,{key:0,to:`/admin/recurring-invoices/${l.row.id}/edit`},{default:o(()=>[r(I,null,{default:o(()=>[r(e,{name:"PencilIcon",class:"w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500"}),v(" "+_(i.$t("general.edit")),1)]),_:1})]),_:1},8,["to"])):f("",!0),t(h).name!=="recurring-invoices.view"&&t(m).hasAbilities(t(p).VIEW_RECURRING_INVOICE)?(n(),a(R,{key:1,to:`recurring-invoices/${l.row.id}/view`},{default:o(()=>[r(I,null,{default:o(()=>[r(e,{name:"EyeIcon",class:"w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500"}),v(" "+_(i.$t("general.view")),1)]),_:1})]),_:1},8,["to"])):f("",!0),t(m).hasAbilities(t(p).DELETE_RECURRING_INVOICE)?(n(),a(I,{key:2,onClick:u[0]||(u[0]=O=>B(l.row.id))},{default:o(()=>[r(e,{name:"TrashIcon",class:"w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500"}),v(" "+_(i.$t("general.delete")),1)]),_:1})):f("",!0)]),_:1},8,["content-loading"])}}};export{A as _}; diff --git a/public/build/assets/ResetPassword--Lr41cj3.js b/public/build/assets/ResetPassword-NJmXWokN.js similarity index 93% rename from public/build/assets/ResetPassword--Lr41cj3.js rename to public/build/assets/ResetPassword-NJmXWokN.js index 606c1dd4..a1782831 100644 --- a/public/build/assets/ResetPassword--Lr41cj3.js +++ b/public/build/assets/ResetPassword-NJmXWokN.js @@ -1 +1 @@ -import{L as S,e as M,v as E,H as C,f as $,k as L,j as P,r as d,o as f,c as R,a as n,w as u,l as o,m as g,n as _,p as x,t as A,q as G,g as p,h as y,i as U,I as j,a0 as D}from"./main-B9dpPbRR.js";import{u as N}from"./global-1F4OAoew.js";import{u as O}from"./auth-6FPSPboo.js";const J={__name:"ResetPassword",setup(F){const c=S(),I=M(),b=O(),{t:i}=E.useI18n(),r=C({email:"",password:"",password_confirmation:""});N();let a=$(!1),v=$(!1);const V=L(()=>({email:{required:p.withMessage(i("validation.required"),y),email:p.withMessage(i("validation.email_incorrect"),U)},password:{required:p.withMessage(i("validation.required"),y),minLength:p.withMessage(i("validation.password_min_length",{count:8}),j(8))},password_confirmation:{sameAsPassword:p.withMessage(i("validation.password_incorrect"),D(r.password))}})),s=P(V,r);async function B(l){if(s.value.$touch(),!s.value.$invalid){let e={email:r.email,password:r.password,password_confirmation:r.password_confirmation,token:c.params.token};v.value=!0;let m=b.resetPassword(e,c.params.company);v.value=!1,m.data&&I.push({name:"customer.login"})}}return(l,e)=>{const m=d("BaseInput"),w=d("BaseInputGroup"),k=d("EyeOffIcon"),q=d("EyeIcon"),h=d("BaseButton");return f(),R("form",{id:"loginForm",onSubmit:G(B,["prevent"])},[n(w,{error:o(s).email.$error&&o(s).email.$errors[0].$message,label:l.$t("login.email"),class:"mb-4",required:""},{default:u(()=>[n(m,{modelValue:r.email,"onUpdate:modelValue":e[0]||(e[0]=t=>r.email=t),type:"email",name:"email",invalid:o(s).email.$error,onInput:e[1]||(e[1]=t=>o(s).email.$touch())},null,8,["modelValue","invalid"])]),_:1},8,["error","label"]),n(w,{error:o(s).password.$error&&o(s).password.$errors[0].$message,label:l.$t("login.password"),class:"mb-4",required:""},{default:u(()=>[n(m,{modelValue:r.password,"onUpdate:modelValue":e[4]||(e[4]=t=>r.password=t),type:o(a)?"text":"password",name:"password",invalid:o(s).password.$error,onInput:e[5]||(e[5]=t=>o(s).password.$touch())},{right:u(()=>[o(a)?(f(),g(k,{key:0,class:"w-5 h-5 mr-1 text-gray-500 cursor-pointer",onClick:e[2]||(e[2]=t=>_(a)?a.value=!o(a):a=!o(a))})):(f(),g(q,{key:1,class:"w-5 h-5 mr-1 text-gray-500 cursor-pointer",onClick:e[3]||(e[3]=t=>_(a)?a.value=!o(a):a=!o(a))}))]),_:1},8,["modelValue","type","invalid"])]),_:1},8,["error","label"]),n(w,{error:o(s).password_confirmation.$error&&o(s).password_confirmation.$errors[0].$message,label:l.$t("login.retype_password"),class:"mb-4",required:""},{default:u(()=>[n(m,{modelValue:r.password_confirmation,"onUpdate:modelValue":e[6]||(e[6]=t=>r.password_confirmation=t),type:"password",name:"password",invalid:o(s).password_confirmation.$error,onInput:e[7]||(e[7]=t=>o(s).password_confirmation.$touch())},null,8,["modelValue","invalid"])]),_:1},8,["error","label"]),n(h,{type:"submit",variant:"primary"},{default:u(()=>[x(A(l.$t("login.reset_password")),1)]),_:1})],32)}}};export{J as default}; +import{L as S,e as M,v as E,H as C,f as $,k as L,j as P,r as d,o as f,c as R,a as n,w as u,l as o,m as g,n as _,p as x,t as A,q as G,g as p,h as y,i as U,I as j,a0 as D}from"./main-pPEsZPea.js";import{u as N}from"./global-s5lx2XuM.js";import{u as O}from"./auth-mYHkZCAB.js";const J={__name:"ResetPassword",setup(F){const c=S(),I=M(),b=O(),{t:i}=E.useI18n(),r=C({email:"",password:"",password_confirmation:""});N();let a=$(!1),v=$(!1);const V=L(()=>({email:{required:p.withMessage(i("validation.required"),y),email:p.withMessage(i("validation.email_incorrect"),U)},password:{required:p.withMessage(i("validation.required"),y),minLength:p.withMessage(i("validation.password_min_length",{count:8}),j(8))},password_confirmation:{sameAsPassword:p.withMessage(i("validation.password_incorrect"),D(r.password))}})),s=P(V,r);async function B(l){if(s.value.$touch(),!s.value.$invalid){let e={email:r.email,password:r.password,password_confirmation:r.password_confirmation,token:c.params.token};v.value=!0;let m=b.resetPassword(e,c.params.company);v.value=!1,m.data&&I.push({name:"customer.login"})}}return(l,e)=>{const m=d("BaseInput"),w=d("BaseInputGroup"),k=d("EyeOffIcon"),q=d("EyeIcon"),h=d("BaseButton");return f(),R("form",{id:"loginForm",onSubmit:G(B,["prevent"])},[n(w,{error:o(s).email.$error&&o(s).email.$errors[0].$message,label:l.$t("login.email"),class:"mb-4",required:""},{default:u(()=>[n(m,{modelValue:r.email,"onUpdate:modelValue":e[0]||(e[0]=t=>r.email=t),type:"email",name:"email",invalid:o(s).email.$error,onInput:e[1]||(e[1]=t=>o(s).email.$touch())},null,8,["modelValue","invalid"])]),_:1},8,["error","label"]),n(w,{error:o(s).password.$error&&o(s).password.$errors[0].$message,label:l.$t("login.password"),class:"mb-4",required:""},{default:u(()=>[n(m,{modelValue:r.password,"onUpdate:modelValue":e[4]||(e[4]=t=>r.password=t),type:o(a)?"text":"password",name:"password",invalid:o(s).password.$error,onInput:e[5]||(e[5]=t=>o(s).password.$touch())},{right:u(()=>[o(a)?(f(),g(k,{key:0,class:"w-5 h-5 mr-1 text-gray-500 cursor-pointer",onClick:e[2]||(e[2]=t=>_(a)?a.value=!o(a):a=!o(a))})):(f(),g(q,{key:1,class:"w-5 h-5 mr-1 text-gray-500 cursor-pointer",onClick:e[3]||(e[3]=t=>_(a)?a.value=!o(a):a=!o(a))}))]),_:1},8,["modelValue","type","invalid"])]),_:1},8,["error","label"]),n(w,{error:o(s).password_confirmation.$error&&o(s).password_confirmation.$errors[0].$message,label:l.$t("login.retype_password"),class:"mb-4",required:""},{default:u(()=>[n(m,{modelValue:r.password_confirmation,"onUpdate:modelValue":e[6]||(e[6]=t=>r.password_confirmation=t),type:"password",name:"password",invalid:o(s).password_confirmation.$error,onInput:e[7]||(e[7]=t=>o(s).password_confirmation.$touch())},null,8,["modelValue","invalid"])]),_:1},8,["error","label"]),n(h,{type:"submit",variant:"primary"},{default:u(()=>[x(A(l.$t("login.reset_password")),1)]),_:1})],32)}}};export{J as default}; diff --git a/public/build/assets/ResetPassword-PSrdG8Tw.js b/public/build/assets/ResetPassword-mA7VRxO2.js similarity index 97% rename from public/build/assets/ResetPassword-PSrdG8Tw.js rename to public/build/assets/ResetPassword-mA7VRxO2.js index 63365e4c..58b7a97d 100644 --- a/public/build/assets/ResetPassword-PSrdG8Tw.js +++ b/public/build/assets/ResetPassword-mA7VRxO2.js @@ -1 +1 @@ -import{u as I,v as q,L as h,e as L,H as k,f as P,k as d,j as S,r as f,o as N,c as A,a as o,w as p,l as t,p as C,t as E,q as R,h as v,i as U,I as j,a0 as D,s as G,a1 as x}from"./main-B9dpPbRR.js";const M={__name:"ResetPassword",setup(F){const w=I(),{t:n}=q.useI18n(),c=h(),$=L(),r=k({email:"",password:"",password_confirmation:""}),u=P(!1),_=d(()=>({email:{required:v,email:U},password:{required:v,minLength:j(8)},password_confirmation:{sameAsPassword:D(r.password)}})),a=S(_,r),g=d(()=>a.value.email.$error?a.value.email.required.$invalid?n("validation.required"):a.value.email.email?n("validation.email_incorrect"):!1:""),b=d(()=>a.value.password.$error?a.value.password.required.$invalid?n("validation.required"):a.value.password.minLength?n("validation.password_min_length",{count:a.value.password.minLength.$params.min}):!1:""),V=d(()=>a.value.password_confirmation.$error?a.value.password_confirmation.sameAsPassword.$invalid?n("validation.password_incorrect"):!1:"");async function y(i){if(a.value.$touch(),!a.value.$invalid)try{let e={email:r.email,password:r.password,password_confirmation:r.password_confirmation,token:c.params.token};u.value=!0;let l=await G.post("/api/v1/auth/reset/password",e);u.value=!1,l.data&&(w.showNotification({type:"success",message:n("login.password_reset_successfully")}),$.push("/login"))}catch(e){x(e),u.value=!1,e.response&&e.response.status}}return(i,e)=>{const l=f("BaseInput"),m=f("BaseInputGroup"),B=f("BaseButton");return N(),A("form",{id:"loginForm",onSubmit:R(y,["prevent"])},[o(m,{error:g.value,label:i.$t("login.email"),class:"mb-4",required:""},{default:p(()=>[o(l,{modelValue:r.email,"onUpdate:modelValue":e[0]||(e[0]=s=>r.email=s),invalid:t(a).email.$error,focus:"",type:"email",name:"email",onInput:e[1]||(e[1]=s=>t(a).email.$touch())},null,8,["modelValue","invalid"])]),_:1},8,["error","label"]),o(m,{error:b.value,label:i.$t("login.password"),class:"mb-4",required:""},{default:p(()=>[o(l,{modelValue:r.password,"onUpdate:modelValue":e[2]||(e[2]=s=>r.password=s),invalid:t(a).password.$error,type:"password",name:"password",onInput:e[3]||(e[3]=s=>t(a).password.$touch())},null,8,["modelValue","invalid"])]),_:1},8,["error","label"]),o(m,{error:V.value,label:i.$t("login.retype_password"),class:"mb-4",required:""},{default:p(()=>[o(l,{modelValue:r.password_confirmation,"onUpdate:modelValue":e[4]||(e[4]=s=>r.password_confirmation=s),invalid:t(a).password_confirmation.$error,type:"password",name:"password",onInput:e[5]||(e[5]=s=>t(a).password_confirmation.$touch())},null,8,["modelValue","invalid"])]),_:1},8,["error","label"]),o(B,{loading:u.value,type:"submit",variant:"primary"},{default:p(()=>[C(E(i.$t("login.reset_password")),1)]),_:1},8,["loading"])],32)}}};export{M as default}; +import{u as I,v as q,L as h,e as L,H as k,f as P,k as d,j as S,r as f,o as N,c as A,a as o,w as p,l as t,p as C,t as E,q as R,h as v,i as U,I as j,a0 as D,s as G,a1 as x}from"./main-pPEsZPea.js";const M={__name:"ResetPassword",setup(F){const w=I(),{t:n}=q.useI18n(),c=h(),$=L(),r=k({email:"",password:"",password_confirmation:""}),u=P(!1),_=d(()=>({email:{required:v,email:U},password:{required:v,minLength:j(8)},password_confirmation:{sameAsPassword:D(r.password)}})),a=S(_,r),g=d(()=>a.value.email.$error?a.value.email.required.$invalid?n("validation.required"):a.value.email.email?n("validation.email_incorrect"):!1:""),b=d(()=>a.value.password.$error?a.value.password.required.$invalid?n("validation.required"):a.value.password.minLength?n("validation.password_min_length",{count:a.value.password.minLength.$params.min}):!1:""),V=d(()=>a.value.password_confirmation.$error?a.value.password_confirmation.sameAsPassword.$invalid?n("validation.password_incorrect"):!1:"");async function y(i){if(a.value.$touch(),!a.value.$invalid)try{let e={email:r.email,password:r.password,password_confirmation:r.password_confirmation,token:c.params.token};u.value=!0;let l=await G.post("/api/v1/auth/reset/password",e);u.value=!1,l.data&&(w.showNotification({type:"success",message:n("login.password_reset_successfully")}),$.push("/login"))}catch(e){x(e),u.value=!1,e.response&&e.response.status}}return(i,e)=>{const l=f("BaseInput"),m=f("BaseInputGroup"),B=f("BaseButton");return N(),A("form",{id:"loginForm",onSubmit:R(y,["prevent"])},[o(m,{error:g.value,label:i.$t("login.email"),class:"mb-4",required:""},{default:p(()=>[o(l,{modelValue:r.email,"onUpdate:modelValue":e[0]||(e[0]=s=>r.email=s),invalid:t(a).email.$error,focus:"",type:"email",name:"email",onInput:e[1]||(e[1]=s=>t(a).email.$touch())},null,8,["modelValue","invalid"])]),_:1},8,["error","label"]),o(m,{error:b.value,label:i.$t("login.password"),class:"mb-4",required:""},{default:p(()=>[o(l,{modelValue:r.password,"onUpdate:modelValue":e[2]||(e[2]=s=>r.password=s),invalid:t(a).password.$error,type:"password",name:"password",onInput:e[3]||(e[3]=s=>t(a).password.$touch())},null,8,["modelValue","invalid"])]),_:1},8,["error","label"]),o(m,{error:V.value,label:i.$t("login.retype_password"),class:"mb-4",required:""},{default:p(()=>[o(l,{modelValue:r.password_confirmation,"onUpdate:modelValue":e[4]||(e[4]=s=>r.password_confirmation=s),invalid:t(a).password_confirmation.$error,type:"password",name:"password",onInput:e[5]||(e[5]=s=>t(a).password_confirmation.$touch())},null,8,["modelValue","invalid"])]),_:1},8,["error","label"]),o(B,{loading:u.value,type:"submit",variant:"primary"},{default:p(()=>[C(E(i.$t("login.reset_password")),1)]),_:1},8,["loading"])],32)}}};export{M as default}; diff --git a/public/build/assets/RolesSettings-PhafmDPz.js b/public/build/assets/RolesSettings-GppRjFXc.js similarity index 90% rename from public/build/assets/RolesSettings-PhafmDPz.js rename to public/build/assets/RolesSettings-GppRjFXc.js index ea44935d..ae10d6eb 100644 --- a/public/build/assets/RolesSettings-PhafmDPz.js +++ b/public/build/assets/RolesSettings-GppRjFXc.js @@ -1 +1 @@ -import{a4 as Y,aB as Z,s as D,a1 as L,u as j,a7 as ee,v as q,L as te,M as X,F,a5 as se,r as h,o as _,m as C,w as u,l as d,a as f,p as k,t as v,K as O,f as U,k as V,g as P,h as J,I as ae,j as oe,b as g,q as ne,c as E,N as z,O as K,J as Q,E as ie,a6 as le}from"./main-B9dpPbRR.js";const T=(I=!1)=>{const p=I?window.pinia.defineStore:Y,{global:e}=window.i18n;return p({id:"role",state:()=>({roles:[],allAbilities:[],selectedRoles:[],currentRole:{id:null,name:"",abilities:[]}}),getters:{isEdit:a=>!!a.currentRole.id,abilitiesList:a=>{let o=a.allAbilities.map(n=>({modelName:n.model?n.model.substring(n.model.lastIndexOf("\\")+1):"Common",disabled:!1,...n}));return Z.groupBy(o,"modelName")}},actions:{fetchRoles(a){return new Promise((o,n)=>{D.get("/api/v1/roles",{params:a}).then(t=>{this.roles=t.data.data,o(t)}).catch(t=>{L(t),n(t)})})},fetchRole(a){return new Promise((o,n)=>{D.get(`/api/v1/roles/${a}`).then(t=>{this.currentRole.name=t.data.data.name,this.currentRole.id=t.data.data.id,t.data.data.abilities.forEach(i=>{for(const c in this.abilitiesList)this.abilitiesList[c].forEach(y=>{y.ability===i.name&&this.currentRole.abilities.push(y)})}),o(t)}).catch(t=>{L(t),n(t)})})},addRole(a){const o=j();return new Promise((n,t)=>{D.post("/api/v1/roles",a).then(i=>{this.roles.push(i.data.role),o.showNotification({type:"success",message:e.t("settings.roles.created_message")}),n(i)}).catch(i=>{L(i),t(i)})})},updateRole(a){const o=j();return new Promise((n,t)=>{D.put(`/api/v1/roles/${a.id}`,a).then(i=>{if(i.data){let c=this.roles.findIndex(y=>y.id===i.data.data.id);this.roles[c]=a.role,o.showNotification({type:"success",message:e.t("settings.roles.updated_message")})}n(i)}).catch(i=>{L(i),t(i)})})},fetchAbilities(a){return new Promise((o,n)=>{this.allAbilities.length?o(this.allAbilities):D.get("/api/v1/abilities",{params:a}).then(t=>{this.allAbilities=t.data.abilities,o(t)}).catch(t=>{L(t),n(t)})})},deleteRole(a){const o=j();return new Promise((n,t)=>{D.delete(`/api/v1/roles/${a}`).then(i=>{let c=this.roles.findIndex(y=>y.id===a);this.roles.splice(c,1),o.showNotification({type:"success",message:e.t("settings.roles.deleted_message")}),n(i)}).catch(i=>{L(i),t(i)})})}}})()},re={__name:"RoleIndexDropdown",props:{row:{type:Object,default:null},table:{type:Object,default:null},loadData:{type:Function,default:null}},setup(I){const p=I,e=ee();j();const{t:a}=q.useI18n(),o=T(),n=te(),t=X(),i=F();se("utils");async function c(B){Promise.all([await o.fetchAbilities(),await o.fetchRole(B)]).then(()=>{i.openModal({title:a("settings.roles.edit_role"),componentName:"RolesModal",size:"lg",refreshData:p.loadData})})}async function y(B){e.openDialog({title:a("general.are_you_sure"),message:a("settings.roles.confirm_delete"),yesLabel:a("general.ok"),noLabel:a("general.cancel"),variant:"danger",hideNoButton:!1,size:"lg"}).then(async b=>{b&&await o.deleteRole(B).then(R=>{R.data&&p.loadData&&p.loadData()})})}return(B,b)=>{const R=h("BaseIcon"),w=h("BaseButton"),s=h("BaseDropdownItem"),r=h("BaseDropdown");return _(),C(r,null,{activator:u(()=>[d(n).name==="roles.view"?(_(),C(w,{key:0,variant:"primary"},{default:u(()=>[f(R,{name:"DotsHorizontalIcon",class:"h-5 text-white"})]),_:1})):(_(),C(R,{key:1,name:"DotsHorizontalIcon",class:"h-5 text-gray-500"}))]),default:u(()=>[d(t).currentUser.is_owner?(_(),C(s,{key:0,onClick:b[0]||(b[0]=m=>c(I.row.id))},{default:u(()=>[f(R,{name:"PencilIcon",class:"w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500"}),k(" "+v(B.$t("general.edit")),1)]),_:1})):O("",!0),d(t).currentUser.is_owner?(_(),C(s,{key:1,onClick:b[1]||(b[1]=m=>y(I.row.id))},{default:u(()=>[f(R,{name:"TrashIcon",class:"w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500"}),k(" "+v(B.$t("general.delete")),1)]),_:1})):O("",!0)]),_:1})}}},de={class:"flex justify-between w-full"},ce={class:"px-4 md:px-8 py-4 md:py-6"},ue={class:"flex justify-between"},me={class:"text-sm not-italic font-medium text-gray-800 px-4 md:px-8 py-1.5"},fe=g("span",{class:"text-sm text-red-500"}," *",-1),pe={class:"text-sm not-italic font-medium text-gray-300 px-4 md:px-8 py-1.5"},be={class:"border-t border-gray-200 py-3"},he={class:"grid grid-cols-1 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-4 gap-4 px-8 sm:px-8"},ge={class:"text-sm text-gray-500 border-b border-gray-200 pb-1 mb-2"},_e={key:0,class:"block mt-0.5 text-sm text-red-500"},ye={class:"z-0 flex justify-end p-4 border-t border-solid border--200 border-modal-bg"},ve={__name:"RolesModal",setup(I){const p=F(),e=T(),{t:a}=q.useI18n();let o=U(!1),n=U(!1);const t=V(()=>p.active&&p.componentName==="RolesModal"),i=V(()=>({name:{required:P.withMessage(a("validation.required"),J),minLength:P.withMessage(a("validation.name_min_length",{count:3}),ae(3))},abilities:{required:P.withMessage(a("validation.at_least_one_ability"),J)}})),c=oe(i,V(()=>e.currentRole));async function y(){if(c.value.$touch(),c.value.$invalid)return!0;try{const s=e.isEdit?e.updateRole:e.addRole;o.value=!0,await s(e.currentRole),o.value=!1,p.refreshData&&p.refreshData(),w()}catch{return o.value=!1,!0}}function B(s){var m,l;if(!e.currentRole.abilities.find(S=>S.ability===s.ability)&&((m=s==null?void 0:s.depends_on)!=null&&m.length)){R(s);return}(l=s==null?void 0:s.depends_on)==null||l.forEach(S=>{Object.keys(e.abilitiesList).forEach(M=>{e.abilitiesList[M].forEach($=>{S===$.ability&&($.disabled=!0,e.currentRole.abilities.find(x=>x.ability===S)||e.currentRole.abilities.push($))})})})}function b(s){let r=[];Object.keys(e.abilitiesList).forEach(m=>{e.abilitiesList[m].forEach(l=>{l!=null&&l.depends_on&&(r=[...r,...l.depends_on])})}),Object.keys(e.abilitiesList).forEach(m=>{e.abilitiesList[m].forEach(l=>{r.includes(l.ability)&&(s?l.disabled=!0:l.disabled=!1),e.currentRole.abilities.push(l)})}),s||(e.currentRole.abilities=[])}function R(s){s.depends_on.forEach(r=>{Object.keys(e.abilitiesList).forEach(m=>{e.abilitiesList[m].forEach(l=>{let S=e.currentRole.abilities.find(M=>{var $;return($=M.depends_on)==null?void 0:$.includes(l.ability)});r===l.ability&&!S&&(l.disabled=!1)})})})}function w(){p.closeModal(),setTimeout(()=>{e.currentRole={id:null,name:"",abilities:[]},Object.keys(e.abilitiesList).forEach(s=>{e.abilitiesList[s].forEach(r=>{r.disabled=!1})}),c.value.$reset()},300)}return(s,r)=>{const m=h("BaseIcon"),l=h("BaseInput"),S=h("BaseInputGroup"),M=h("BaseCheckbox"),$=h("BaseButton"),G=h("BaseModal");return _(),C(G,{show:t.value,onClose:w},{header:u(()=>[g("div",de,[k(v(d(p).title)+" ",1),f(m,{name:"XIcon",class:"w-6 h-6 text-gray-500 cursor-pointer",onClick:w})])]),default:u(()=>[g("form",{onSubmit:ne(y,["prevent"])},[g("div",ce,[f(S,{label:s.$t("settings.roles.name"),class:"mt-3",error:d(c).name.$error&&d(c).name.$errors[0].$message,required:"","content-loading":d(n)},{default:u(()=>[f(l,{modelValue:d(e).currentRole.name,"onUpdate:modelValue":r[0]||(r[0]=x=>d(e).currentRole.name=x),invalid:d(c).name.$error,type:"text","content-loading":d(n),onInput:r[1]||(r[1]=x=>d(c).name.$touch())},null,8,["modelValue","invalid","content-loading"])]),_:1},8,["label","error","content-loading"])]),g("div",ue,[g("h6",me,[k(v(s.$t("settings.roles.permission",2))+" ",1),fe]),g("div",pe,[g("a",{class:"cursor-pointer text-primary-400",onClick:r[2]||(r[2]=x=>b(!0))},v(s.$t("settings.roles.select_all")),1),k(" / "),g("a",{class:"cursor-pointer text-primary-400",onClick:r[3]||(r[3]=x=>b(!1))},v(s.$t("settings.roles.none")),1)])]),g("div",be,[g("div",he,[(_(!0),E(z,null,K(d(e).abilitiesList,(x,H)=>(_(),E("div",{key:H,class:"flex flex-col space-y-1"},[g("p",ge,v(H),1),(_(!0),E(z,null,K(x,(N,W)=>(_(),E("div",{key:W,class:"flex"},[f(M,{modelValue:d(e).currentRole.abilities,"onUpdate:modelValue":[r[4]||(r[4]=A=>d(e).currentRole.abilities=A),A=>B(N)],"set-initial-value":!0,variant:"primary",disabled:N.disabled,label:N.name,value:N},null,8,["modelValue","disabled","label","value","onUpdate:modelValue"])]))),128))]))),128)),d(c).abilities.$error?(_(),E("span",_e,v(d(c).abilities.$errors[0].$message),1)):O("",!0)])]),g("div",ye,[f($,{class:"mr-3 text-sm",variant:"primary-outline",type:"button",onClick:w},{default:u(()=>[k(v(s.$t("general.cancel")),1)]),_:1}),f($,{loading:d(o),disabled:d(o),variant:"primary",type:"submit"},{left:u(x=>[f(m,{name:"SaveIcon",class:Q(x.class)},null,8,["class"])]),default:u(()=>[k(" "+v(d(e).isEdit?s.$t("general.update"):s.$t("general.save")),1)]),_:1},8,["loading","disabled"])])],32)]),_:1},8,["show"])}}},Be={__name:"RolesSettings",setup(I){const p=F(),e=T(),a=X(),o=ie(),{t:n}=q.useI18n(),t=U(null),i=V(()=>[{key:"name",label:n("settings.roles.role_name"),thClass:"extra",tdClass:"font-medium text-gray-900"},{key:"created_at",label:n("settings.roles.added_on"),tdClass:"font-medium text-gray-900"},{key:"actions",label:"",tdClass:"text-right text-sm font-medium",sortable:!1}]);async function c({page:b,filter:R,sort:w}){let s={orderByField:w.fieldName||"created_at",orderBy:w.order||"desc",company_id:o.selectedCompany.id};return{data:(await e.fetchRoles(s)).data.data}}async function y(){t.value&&t.value.refresh()}async function B(){await e.fetchAbilities(),p.openModal({title:n("settings.roles.add_role"),componentName:"RolesModal",size:"lg",refreshData:t.value&&t.value.refresh})}return(b,R)=>{const w=h("BaseIcon"),s=h("BaseButton"),r=h("BaseTable"),m=h("BaseSettingCard");return _(),E(z,null,[f(ve),f(m,{title:b.$t("settings.roles.title"),description:b.$t("settings.roles.description")},le({default:u(()=>[f(r,{ref_key:"table",ref:t,data:c,columns:i.value,class:"mt-14"},{"cell-created_at":u(({row:l})=>[k(v(l.data.formatted_created_at),1)]),"cell-actions":u(({row:l})=>[d(a).currentUser.is_owner&&l.data.name!=="super admin"?(_(),C(re,{key:0,row:l.data,table:t.value,"load-data":y},null,8,["row","table"])):O("",!0)]),_:1},8,["columns"])]),_:2},[d(a).currentUser.is_owner?{name:"action",fn:u(()=>[f(s,{variant:"primary-outline",onClick:B},{left:u(l=>[f(w,{name:"PlusIcon",class:Q(l.class)},null,8,["class"])]),default:u(()=>[k(" "+v(b.$t("settings.roles.add_new_role")),1)]),_:1})]),key:"0"}:void 0]),1032,["title","description"])],64)}}};export{Be as default}; +import{a4 as Y,aE as Z,s as D,a1 as E,u as j,a7 as ee,v as q,L as te,M as X,F,a5 as se,r as h,o as _,m as C,w as u,l as d,a as f,p as k,t as v,K as O,f as U,k as V,g as P,h as J,I as ae,j as oe,b as g,q as ne,c as L,N as z,O as K,J as Q,E as ie,a6 as le}from"./main-pPEsZPea.js";const T=(I=!1)=>{const p=I?window.pinia.defineStore:Y,{global:e}=window.i18n;return p({id:"role",state:()=>({roles:[],allAbilities:[],selectedRoles:[],currentRole:{id:null,name:"",abilities:[]}}),getters:{isEdit:a=>!!a.currentRole.id,abilitiesList:a=>{let o=a.allAbilities.map(n=>({modelName:n.model?n.model.substring(n.model.lastIndexOf("\\")+1):"Common",disabled:!1,...n}));return Z.groupBy(o,"modelName")}},actions:{fetchRoles(a){return new Promise((o,n)=>{D.get("/api/v1/roles",{params:a}).then(t=>{this.roles=t.data.data,o(t)}).catch(t=>{E(t),n(t)})})},fetchRole(a){return new Promise((o,n)=>{D.get(`/api/v1/roles/${a}`).then(t=>{this.currentRole.name=t.data.data.name,this.currentRole.id=t.data.data.id,t.data.data.abilities.forEach(i=>{for(const c in this.abilitiesList)this.abilitiesList[c].forEach(y=>{y.ability===i.name&&this.currentRole.abilities.push(y)})}),o(t)}).catch(t=>{E(t),n(t)})})},addRole(a){const o=j();return new Promise((n,t)=>{D.post("/api/v1/roles",a).then(i=>{this.roles.push(i.data.role),o.showNotification({type:"success",message:e.t("settings.roles.created_message")}),n(i)}).catch(i=>{E(i),t(i)})})},updateRole(a){const o=j();return new Promise((n,t)=>{D.put(`/api/v1/roles/${a.id}`,a).then(i=>{if(i.data){let c=this.roles.findIndex(y=>y.id===i.data.data.id);this.roles[c]=a.role,o.showNotification({type:"success",message:e.t("settings.roles.updated_message")})}n(i)}).catch(i=>{E(i),t(i)})})},fetchAbilities(a){return new Promise((o,n)=>{this.allAbilities.length?o(this.allAbilities):D.get("/api/v1/abilities",{params:a}).then(t=>{this.allAbilities=t.data.abilities,o(t)}).catch(t=>{E(t),n(t)})})},deleteRole(a){const o=j();return new Promise((n,t)=>{D.delete(`/api/v1/roles/${a}`).then(i=>{let c=this.roles.findIndex(y=>y.id===a);this.roles.splice(c,1),o.showNotification({type:"success",message:e.t("settings.roles.deleted_message")}),n(i)}).catch(i=>{E(i),t(i)})})}}})()},re={__name:"RoleIndexDropdown",props:{row:{type:Object,default:null},table:{type:Object,default:null},loadData:{type:Function,default:null}},setup(I){const p=I,e=ee();j();const{t:a}=q.useI18n(),o=T(),n=te(),t=X(),i=F();se("utils");async function c(B){Promise.all([await o.fetchAbilities(),await o.fetchRole(B)]).then(()=>{i.openModal({title:a("settings.roles.edit_role"),componentName:"RolesModal",size:"lg",refreshData:p.loadData})})}async function y(B){e.openDialog({title:a("general.are_you_sure"),message:a("settings.roles.confirm_delete"),yesLabel:a("general.ok"),noLabel:a("general.cancel"),variant:"danger",hideNoButton:!1,size:"lg"}).then(async b=>{b&&await o.deleteRole(B).then(R=>{R.data&&p.loadData&&p.loadData()})})}return(B,b)=>{const R=h("BaseIcon"),w=h("BaseButton"),s=h("BaseDropdownItem"),r=h("BaseDropdown");return _(),C(r,null,{activator:u(()=>[d(n).name==="roles.view"?(_(),C(w,{key:0,variant:"primary"},{default:u(()=>[f(R,{name:"DotsHorizontalIcon",class:"h-5 text-white"})]),_:1})):(_(),C(R,{key:1,name:"DotsHorizontalIcon",class:"h-5 text-gray-500"}))]),default:u(()=>[d(t).currentUser.is_owner?(_(),C(s,{key:0,onClick:b[0]||(b[0]=m=>c(I.row.id))},{default:u(()=>[f(R,{name:"PencilIcon",class:"w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500"}),k(" "+v(B.$t("general.edit")),1)]),_:1})):O("",!0),d(t).currentUser.is_owner?(_(),C(s,{key:1,onClick:b[1]||(b[1]=m=>y(I.row.id))},{default:u(()=>[f(R,{name:"TrashIcon",class:"w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500"}),k(" "+v(B.$t("general.delete")),1)]),_:1})):O("",!0)]),_:1})}}},de={class:"flex justify-between w-full"},ce={class:"px-4 md:px-8 py-4 md:py-6"},ue={class:"flex justify-between"},me={class:"text-sm not-italic font-medium text-gray-800 px-4 md:px-8 py-1.5"},fe=g("span",{class:"text-sm text-red-500"}," *",-1),pe={class:"text-sm not-italic font-medium text-gray-300 px-4 md:px-8 py-1.5"},be={class:"border-t border-gray-200 py-3"},he={class:"grid grid-cols-1 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-4 gap-4 px-8 sm:px-8"},ge={class:"text-sm text-gray-500 border-b border-gray-200 pb-1 mb-2"},_e={key:0,class:"block mt-0.5 text-sm text-red-500"},ye={class:"z-0 flex justify-end p-4 border-t border-solid border--200 border-modal-bg"},ve={__name:"RolesModal",setup(I){const p=F(),e=T(),{t:a}=q.useI18n();let o=U(!1),n=U(!1);const t=V(()=>p.active&&p.componentName==="RolesModal"),i=V(()=>({name:{required:P.withMessage(a("validation.required"),J),minLength:P.withMessage(a("validation.name_min_length",{count:3}),ae(3))},abilities:{required:P.withMessage(a("validation.at_least_one_ability"),J)}})),c=oe(i,V(()=>e.currentRole));async function y(){if(c.value.$touch(),c.value.$invalid)return!0;try{const s=e.isEdit?e.updateRole:e.addRole;o.value=!0,await s(e.currentRole),o.value=!1,p.refreshData&&p.refreshData(),w()}catch{return o.value=!1,!0}}function B(s){var m,l;if(!e.currentRole.abilities.find(S=>S.ability===s.ability)&&((m=s==null?void 0:s.depends_on)!=null&&m.length)){R(s);return}(l=s==null?void 0:s.depends_on)==null||l.forEach(S=>{Object.keys(e.abilitiesList).forEach(M=>{e.abilitiesList[M].forEach($=>{S===$.ability&&($.disabled=!0,e.currentRole.abilities.find(x=>x.ability===S)||e.currentRole.abilities.push($))})})})}function b(s){let r=[];Object.keys(e.abilitiesList).forEach(m=>{e.abilitiesList[m].forEach(l=>{l!=null&&l.depends_on&&(r=[...r,...l.depends_on])})}),Object.keys(e.abilitiesList).forEach(m=>{e.abilitiesList[m].forEach(l=>{r.includes(l.ability)&&(s?l.disabled=!0:l.disabled=!1),e.currentRole.abilities.push(l)})}),s||(e.currentRole.abilities=[])}function R(s){s.depends_on.forEach(r=>{Object.keys(e.abilitiesList).forEach(m=>{e.abilitiesList[m].forEach(l=>{let S=e.currentRole.abilities.find(M=>{var $;return($=M.depends_on)==null?void 0:$.includes(l.ability)});r===l.ability&&!S&&(l.disabled=!1)})})})}function w(){p.closeModal(),setTimeout(()=>{e.currentRole={id:null,name:"",abilities:[]},Object.keys(e.abilitiesList).forEach(s=>{e.abilitiesList[s].forEach(r=>{r.disabled=!1})}),c.value.$reset()},300)}return(s,r)=>{const m=h("BaseIcon"),l=h("BaseInput"),S=h("BaseInputGroup"),M=h("BaseCheckbox"),$=h("BaseButton"),G=h("BaseModal");return _(),C(G,{show:t.value,onClose:w},{header:u(()=>[g("div",de,[k(v(d(p).title)+" ",1),f(m,{name:"XIcon",class:"w-6 h-6 text-gray-500 cursor-pointer",onClick:w})])]),default:u(()=>[g("form",{onSubmit:ne(y,["prevent"])},[g("div",ce,[f(S,{label:s.$t("settings.roles.name"),class:"mt-3",error:d(c).name.$error&&d(c).name.$errors[0].$message,required:"","content-loading":d(n)},{default:u(()=>[f(l,{modelValue:d(e).currentRole.name,"onUpdate:modelValue":r[0]||(r[0]=x=>d(e).currentRole.name=x),invalid:d(c).name.$error,type:"text","content-loading":d(n),onInput:r[1]||(r[1]=x=>d(c).name.$touch())},null,8,["modelValue","invalid","content-loading"])]),_:1},8,["label","error","content-loading"])]),g("div",ue,[g("h6",me,[k(v(s.$t("settings.roles.permission",2))+" ",1),fe]),g("div",pe,[g("a",{class:"cursor-pointer text-primary-400",onClick:r[2]||(r[2]=x=>b(!0))},v(s.$t("settings.roles.select_all")),1),k(" / "),g("a",{class:"cursor-pointer text-primary-400",onClick:r[3]||(r[3]=x=>b(!1))},v(s.$t("settings.roles.none")),1)])]),g("div",be,[g("div",he,[(_(!0),L(z,null,K(d(e).abilitiesList,(x,H)=>(_(),L("div",{key:H,class:"flex flex-col space-y-1"},[g("p",ge,v(H),1),(_(!0),L(z,null,K(x,(N,W)=>(_(),L("div",{key:W,class:"flex"},[f(M,{modelValue:d(e).currentRole.abilities,"onUpdate:modelValue":[r[4]||(r[4]=A=>d(e).currentRole.abilities=A),A=>B(N)],"set-initial-value":!0,variant:"primary",disabled:N.disabled,label:N.name,value:N},null,8,["modelValue","disabled","label","value","onUpdate:modelValue"])]))),128))]))),128)),d(c).abilities.$error?(_(),L("span",_e,v(d(c).abilities.$errors[0].$message),1)):O("",!0)])]),g("div",ye,[f($,{class:"mr-3 text-sm",variant:"primary-outline",type:"button",onClick:w},{default:u(()=>[k(v(s.$t("general.cancel")),1)]),_:1}),f($,{loading:d(o),disabled:d(o),variant:"primary",type:"submit"},{left:u(x=>[f(m,{name:"SaveIcon",class:Q(x.class)},null,8,["class"])]),default:u(()=>[k(" "+v(d(e).isEdit?s.$t("general.update"):s.$t("general.save")),1)]),_:1},8,["loading","disabled"])])],32)]),_:1},8,["show"])}}},Be={__name:"RolesSettings",setup(I){const p=F(),e=T(),a=X(),o=ie(),{t:n}=q.useI18n(),t=U(null),i=V(()=>[{key:"name",label:n("settings.roles.role_name"),thClass:"extra",tdClass:"font-medium text-gray-900"},{key:"created_at",label:n("settings.roles.added_on"),tdClass:"font-medium text-gray-900"},{key:"actions",label:"",tdClass:"text-right text-sm font-medium",sortable:!1}]);async function c({page:b,filter:R,sort:w}){let s={orderByField:w.fieldName||"created_at",orderBy:w.order||"desc",company_id:o.selectedCompany.id};return{data:(await e.fetchRoles(s)).data.data}}async function y(){t.value&&t.value.refresh()}async function B(){await e.fetchAbilities(),p.openModal({title:n("settings.roles.add_role"),componentName:"RolesModal",size:"lg",refreshData:t.value&&t.value.refresh})}return(b,R)=>{const w=h("BaseIcon"),s=h("BaseButton"),r=h("BaseTable"),m=h("BaseSettingCard");return _(),L(z,null,[f(ve),f(m,{title:b.$t("settings.roles.title"),description:b.$t("settings.roles.description")},le({default:u(()=>[f(r,{ref_key:"table",ref:t,data:c,columns:i.value,class:"mt-14"},{"cell-created_at":u(({row:l})=>[k(v(l.data.formatted_created_at),1)]),"cell-actions":u(({row:l})=>[d(a).currentUser.is_owner&&l.data.name!=="super admin"?(_(),C(re,{key:0,row:l.data,table:t.value,"load-data":y},null,8,["row","table"])):O("",!0)]),_:1},8,["columns"])]),_:2},[d(a).currentUser.is_owner?{name:"action",fn:u(()=>[f(s,{variant:"primary-outline",onClick:B},{left:u(l=>[f(w,{name:"PlusIcon",class:Q(l.class)},null,8,["class"])]),default:u(()=>[k(" "+v(b.$t("settings.roles.add_new_role")),1)]),_:1})]),key:"0"}:void 0]),1032,["title","description"])],64)}}};export{Be as default}; diff --git a/public/build/assets/SalesTax-ipNfFfG-.js b/public/build/assets/SalesTax-q9Vvrvve.js similarity index 96% rename from public/build/assets/SalesTax-ipNfFfG-.js rename to public/build/assets/SalesTax-q9Vvrvve.js index 162b02cb..4ccdd581 100644 --- a/public/build/assets/SalesTax-ipNfFfG-.js +++ b/public/build/assets/SalesTax-q9Vvrvve.js @@ -1 +1 @@ -import{au as Q,F as X,M as oe,f as W,H as pe,a5 as ne,v as K,k,z as ae,r as f,o as r,c as $,b as a,t as g,a as s,a6 as $e,l as p,w as c,p as j,m as M,K as A,E as Z,at as ye,L as we,P as R,g as U,h as G,aC as me,ai as ee,aI as Ie,j as re,N as H,O as J,Q as le,aK as Be,ao as fe,an as Se,aL as Te,J as Y,T as ke,aM as Pe,aN as Ce,as as Me,u as De,I as Ve,Y as xe,q as _e,G as je}from"./main-B9dpPbRR.js";import{D as qe,d as Ee}from"./DragIcon-w0U5hiz6.js";import{_ as Ae}from"./SelectNotePopup-5BlBNAE0.js";const Le={class:"flex items-center justify-between mb-3"},Oe={class:"flex items-center text-base",style:{flex:"4"}},Ue={class:"pr-2 mb-0",align:"right"},ze={class:"absolute left-3.5"},Ne={class:"ml-2 text-sm leading-none cursor-pointer text-primary-400"},Fe=a("br",null,null,-1),Ge={class:"text-sm text-right",style:{flex:"3"}},Ye={class:"flex items-center justify-center w-6 h-10 mx-2 cursor-pointer"},We={__name:"CreateItemRowTax",props:{ability:{type:String,default:""},store:{type:Object,default:null},storeProp:{type:String,default:""},itemIndex:{type:Number,required:!0},index:{type:Number,required:!0},taxData:{type:Object,required:!0},taxes:{type:Array,default:[]},total:{type:Number,default:0},totalTax:{type:Number,default:0},discountedTotal:{type:Number,default:0},currency:{type:[Object,String],required:!0},updateItems:{type:Function,default:()=>{}}},emits:["remove","update"],setup(t,{emit:x}){const e=t,o=x,I=Q(),b=X(),m=oe(),B=W(null),S=pe({...e.taxData});ne("utils");const{t:y}=K.useI18n(),D=k(()=>I.taxTypes.map(_=>({..._})).map(_=>(e.taxes.find(n=>n.tax_type_id===_.id)?_.disabled=!0:_.disabled=!1,_))),V=k(()=>S.compound_tax&&e.discountedTotal?(e.discountedTotal+e.totalTax)*S.percent/100:e.discountedTotal&&S.percent?e.discountedTotal*S.percent/100:0);ae(()=>e.discountedTotal,()=>{i()}),ae(()=>e.totalTax,()=>{i()}),e.taxData.tax_type_id>0&&(B.value=I.taxTypes.find(u=>u.id===e.taxData.tax_type_id)),i();function q(u){S.percent=u.percent,S.tax_type_id=u.id,S.compound_tax=u.compound_tax,S.name=u.name,i()}function i(){S.tax_type_id!==0&&o("update",{index:e.index,item:{...S,amount:V.value}})}function d(){let u={itemIndex:e.itemIndex,taxIndex:e.index};b.openModal({title:y("settings.tax_types.add_tax"),componentName:"TaxTypeModal",data:u,size:"sm"})}function l(u){e.store.$patch(_=>{_[e.storeProp].items[e.itemIndex].taxes.splice(u,1)})}return(u,_)=>{const h=f("BaseIcon"),n=f("BaseMultiselect"),w=f("BaseFormatMoney");return r(),$("div",Le,[a("div",Oe,[a("label",Ue,g(u.$t("invoices.item.tax")),1),s(n,{modelValue:B.value,"onUpdate:modelValue":[_[0]||(_[0]=T=>B.value=T),_[1]||(_[1]=T=>q(T))],"value-prop":"id",options:D.value,placeholder:u.$t("general.select_a_tax"),"open-direction":"top","track-by":"name",searchable:"",object:"",label:"name"},$e({singlelabel:c(({value:T})=>[a("div",ze,g(T.name)+" - "+g(T.percent)+" % ",1)]),option:c(({option:T})=>[j(g(T.name)+" - "+g(T.percent)+" % ",1)]),_:2},[p(m).hasAbilities(t.ability)?{name:"action",fn:c(()=>[a("button",{type:"button",class:"flex items-center justify-center w-full px-2 py-2 bg-gray-200 border-none outline-none cursor-pointer",onClick:d},[s(h,{name:"CheckCircleIcon",class:"h-5 text-primary-400"}),a("label",Ne,g(u.$t("invoices.add_new_tax")),1)])]),key:"0"}:void 0]),1032,["modelValue","options","placeholder"]),Fe]),a("div",Ge,[s(w,{amount:V.value,currency:t.currency},null,8,["amount","currency"])]),a("div",Ye,[t.taxes.length&&t.index!==t.taxes.length-1?(r(),M(h,{key:0,name:"TrashIcon",class:"h-5 text-gray-700 cursor-pointer",onClick:_[2]||(_[2]=T=>l(t.index))})):A("",!0)])])}}},Re={class:"box-border bg-white border border-gray-200 border-solid rounded-b"},Xe={colspan:"5",class:"p-0 text-left align-top"},Ke={class:"w-full"},He=a("col",{style:{width:"40%","min-width":"280px"}},null,-1),Je=a("col",{style:{width:"10%","min-width":"120px"}},null,-1),Qe=a("col",{style:{width:"15%","min-width":"120px"}},null,-1),Ze={key:0,style:{width:"15%","min-width":"160px"}},et=a("col",{style:{width:"15%","min-width":"120px"}},null,-1),tt={class:"px-5 py-4 text-left align-top"},st={class:"flex justify-start"},at={class:"flex items-center justify-center w-5 h-5 mt-2 mr-2 text-gray-300 cursor-move handle"},ot={class:"px-5 py-4 text-right align-top"},nt={class:"px-5 py-4 text-left align-top"},rt={class:"flex flex-col"},lt={class:"flex-auto flex-fill bd-highlight"},it={class:"relative w-full"},dt={key:0,class:"px-5 py-4 text-left align-top"},ct={class:"flex flex-col"},ut={class:"flex",style:{width:"120px"},role:"group"},mt={class:"flex items-center"},pt={class:"px-5 py-4 text-right align-top"},yt={class:"flex items-center justify-end text-sm"},ft={class:"flex items-center justify-center w-6 h-10 mx-2"},xt={key:0},_t=a("td",{class:"px-5 py-4 text-left align-top"},null,-1),gt={colspan:"4",class:"px-5 py-4 text-left align-top"},ht={__name:"CreateItemRow",props:{store:{type:Object,default:null},storeProp:{type:String,default:""},itemData:{type:Object,default:null},index:{type:Number,default:null},type:{type:String,default:""},loading:{type:Boolean,default:!1},currency:{type:[Object,String],required:!0},invoiceItems:{type:Array,required:!0},itemValidationScope:{type:String,default:""}},emits:["update","remove","itemValidate"],setup(t,{emit:x}){const e=t,o=Z(),I=ye();we();const{t:b}=K.useI18n(),m=k({get:()=>e.itemData.quantity,set:v=>{E("quantity",parseFloat(v))}}),B=k({get:()=>{const v=e.itemData.price;return parseFloat(v)>0?v/100:v},set:v=>{if(parseFloat(v)>0){let C=Math.round(v*100);E("price",C)}else E("price",v)}}),S=k(()=>e.itemData.price*e.itemData.quantity),y=k({get:()=>e.itemData.discount,set:v=>{e.itemData.discount_type==="percentage"?E("discount_val",S.value*v/100):E("discount_val",Math.round(v*100)),E("discount",v)}}),D=k(()=>S.value-e.itemData.discount_val),V=k(()=>e.currency?e.currency:o.selectedCompanyCurrency),q=k(()=>e.store[e.storeProp].items.length!=1),i=k(()=>Math.round(R.sumBy(e.itemData.taxes,function(v){return v.compound_tax?0:v.amount}))),d=k(()=>Math.round(R.sumBy(e.itemData.taxes,function(v){return v.compound_tax?v.amount:0}))),l=k(()=>i.value+d.value),u={name:{required:U.withMessage(b("validation.required"),G)},quantity:{required:U.withMessage(b("validation.required"),G),minValue:U.withMessage(b("validation.qty_must_greater_than_zero"),me(0)),maxLength:U.withMessage(b("validation.amount_maxlength"),ee(20))},price:{required:U.withMessage(b("validation.required"),G),minValue:U.withMessage(b("validation.number_length_minvalue"),me(1)),maxLength:U.withMessage(b("validation.price_maxlength"),ee(20))},discount_val:{between:U.withMessage(b("validation.discount_maxlength"),Ie(0,k(()=>S.value)))},description:{maxLength:U.withMessage(b("validation.notes_maxlength"),ee(65e3))}},_=re(u,k(()=>e.store[e.storeProp].items[e.index]),{$scope:e.itemValidationScope});function h(v){e.store.$patch(O=>{O[e.storeProp].items[e.index].taxes[v.index]=v.item});let C=e.itemData.taxes[e.itemData.taxes.length-1];(C==null?void 0:C.tax_type_id)!==0&&e.store.$patch(O=>{O[e.storeProp].items[e.index].taxes.push({...Be,id:fe.raw()})}),P()}function n(v){E("name",v)}function w(v){e.store.$patch(C=>{if(C[e.storeProp].items[e.index].name=v.name,C[e.storeProp].items[e.index].price=v.price,C[e.storeProp].items[e.index].item_id=v.id,C[e.storeProp].items[e.index].description=v.description,v.unit&&(C[e.storeProp].items[e.index].unit_name=v.unit.name),e.store[e.storeProp].tax_per_item==="YES"&&v.taxes){let O=0;v.taxes.forEach(F=>{h({index:O,item:{...F}}),O++})}C[e.storeProp].exchange_rate&&(C[e.storeProp].items[e.index].price/=C[e.storeProp].exchange_rate)}),I.fetchItems(),P()}function T(){e.itemData.discount_type!=="fixed"&&(E("discount_val",Math.round(e.itemData.discount*100)),E("discount_type","fixed"))}function L(){e.itemData.discount_type!=="percentage"&&(E("discount_val",S.value*e.itemData.discount/100),E("discount_type","percentage"))}function P(){var O,F;let v=(F=(O=e.store[e.storeProp])==null?void 0:O.items[e.index])==null?void 0:F.taxes;v||(v=[]);let C={...e.store[e.storeProp].items[e.index],index:e.index,total:D.value,sub_total:S.value,totalSimpleTax:i.value,totalCompoundTax:d.value,totalTax:l.value,tax:l.value,taxes:[...v]};e.store.updateItem(C)}function E(v,C){e.store.$patch(O=>{O[e.storeProp].items[e.index][v]=C}),P()}return(v,C)=>{const O=f("BaseItemSelect"),F=f("BaseInput"),z=f("BaseMoney"),ie=f("BaseIcon"),ge=f("BaseButton"),de=f("BaseDropdownItem"),he=f("BaseDropdown"),ce=f("BaseContentPlaceholdersText"),ue=f("BaseContentPlaceholders"),ve=f("BaseFormatMoney");return r(),$("tr",Re,[a("td",Xe,[a("table",Ke,[a("colgroup",null,[He,Je,Qe,t.store[t.storeProp].discount_per_item==="YES"?(r(),$("col",Ze)):A("",!0),et]),a("tbody",null,[a("tr",null,[a("td",tt,[a("div",st,[a("div",at,[s(qe)]),s(O,{type:"Invoice",item:t.itemData,invalid:p(_).name.$error,"invalid-description":p(_).description.$error,taxes:t.itemData.taxes,index:t.index,"store-prop":t.storeProp,store:t.store,onSearch:n,onSelect:w},null,8,["item","invalid","invalid-description","taxes","index","store-prop","store"])])]),a("td",ot,[s(F,{modelValue:m.value,"onUpdate:modelValue":C[0]||(C[0]=N=>m.value=N),invalid:p(_).quantity.$error,"content-loading":t.loading,type:"number",small:"",min:"0",step:"any",onChange:C[1]||(C[1]=N=>P()),onInput:C[2]||(C[2]=N=>p(_).quantity.$touch())},null,8,["modelValue","invalid","content-loading"])]),a("td",nt,[a("div",rt,[a("div",lt,[a("div",it,[(r(),M(z,{key:V.value,modelValue:B.value,"onUpdate:modelValue":C[3]||(C[3]=N=>B.value=N),invalid:p(_).price.$error,"content-loading":t.loading,currency:V.value},null,8,["modelValue","invalid","content-loading","currency"]))])])])]),t.store[t.storeProp].discount_per_item==="YES"?(r(),$("td",dt,[a("div",ct,[a("div",ut,[s(F,{modelValue:y.value,"onUpdate:modelValue":C[4]||(C[4]=N=>y.value=N),invalid:p(_).discount_val.$error,"content-loading":t.loading,class:"border-r-0 focus:border-r-2 rounded-tr-sm rounded-br-sm h-[38px]"},null,8,["modelValue","invalid","content-loading"]),s(he,{position:"bottom-end"},{activator:c(()=>[s(ge,{"content-loading":t.loading,class:"rounded-tr-md rounded-br-md !p-2 rounded-none",type:"button",variant:"white"},{default:c(()=>[a("span",mt,[j(g(t.itemData.discount_type=="fixed"?t.currency.symbol:"%")+" ",1),s(ie,{name:"ChevronDownIcon",class:"w-4 h-4 ml-1 text-gray-500"})])]),_:1},8,["content-loading"])]),default:c(()=>[s(de,{onClick:T},{default:c(()=>[j(g(v.$t("general.fixed")),1)]),_:1}),s(de,{onClick:L},{default:c(()=>[j(g(v.$t("general.percentage")),1)]),_:1})]),_:1})])])])):A("",!0),a("td",pt,[a("div",yt,[a("span",null,[t.loading?(r(),M(ue,{key:0},{default:c(()=>[s(ce,{lines:1,class:"w-16 h-5"})]),_:1})):(r(),M(ve,{key:1,amount:D.value,currency:V.value},null,8,["amount","currency"]))]),a("div",ft,[q.value?(r(),M(ie,{key:0,class:"h-5 text-gray-700 cursor-pointer",name:"TrashIcon",onClick:C[5]||(C[5]=N=>t.store.removeItem(t.index))})):A("",!0)])])])]),t.store[t.storeProp].tax_per_item==="YES"?(r(),$("tr",xt,[_t,a("td",gt,[t.loading?(r(),M(ue,{key:0},{default:c(()=>[s(ce,{lines:1,class:"w-24 h-8 border rounded-md"})]),_:1})):(r(!0),$(H,{key:1},J(t.itemData.taxes,(N,be)=>(r(),M(We,{key:N.id,index:be,"item-index":t.index,"tax-data":N,taxes:t.itemData.taxes,"discounted-total":D.value,"total-tax":i.value,total:S.value,currency:t.currency,"update-items":P,ability:p(le).CREATE_INVOICE,store:t.store,"store-prop":t.storeProp,discount:y.value,onUpdate:h},null,8,["index","item-index","tax-data","taxes","discounted-total","total-tax","total","currency","ability","store","store-prop","discount"]))),128))])])):A("",!0)])])])])}}},vt={class:"text-center item-table min-w-full"},bt=a("col",{style:{width:"40%","min-width":"280px"}},null,-1),$t=a("col",{style:{width:"10%","min-width":"120px"}},null,-1),wt=a("col",{style:{width:"15%","min-width":"120px"}},null,-1),It={key:0,style:{width:"15%","min-width":"160px"}},Bt=a("col",{style:{width:"15%","min-width":"120px"}},null,-1),St={class:"bg-white border border-gray-200 border-solid"},Tt={class:"px-5 py-3 text-sm not-italic font-medium leading-5 text-left text-gray-700 border-t border-b border-gray-200 border-solid"},kt={key:1,class:"pl-7"},Pt={class:"px-5 py-3 text-sm not-italic font-medium leading-5 text-right text-gray-700 border-t border-b border-gray-200 border-solid"},Ct={key:1},Mt={class:"px-5 py-3 text-sm not-italic font-medium leading-5 text-left text-gray-700 border-t border-b border-gray-200 border-solid"},Dt={key:1},Vt={key:0,class:"px-5 py-3 text-sm not-italic font-medium leading-5 text-left text-gray-700 border-t border-b border-gray-200 border-solid"},jt={key:1},qt={class:"px-5 py-3 text-sm not-italic font-medium leading-5 text-right text-gray-700 border-t border-b border-gray-200 border-solid"},Et={key:1,class:"pr-10 column-heading"},zs={__name:"CreateItems",props:{store:{type:Object,default:null},storeProp:{type:String,default:""},currency:{type:[Object,String,null],required:!0},isLoading:{type:Boolean,default:!1},itemValidationScope:{type:String,default:""}},setup(t){const x=t,e=Z(),o=k(()=>x.currency?x.currency:e.selectedCompanyCurrency);return(I,b)=>{const m=f("BaseContentPlaceholdersText"),B=f("BaseContentPlaceholders"),S=f("BaseIcon");return r(),$(H,null,[a("table",vt,[a("colgroup",null,[bt,$t,wt,t.store[t.storeProp].discount_per_item==="YES"?(r(),$("col",It)):A("",!0),Bt]),a("thead",St,[a("tr",null,[a("th",Tt,[t.isLoading?(r(),M(B,{key:0},{default:c(()=>[s(m,{lines:1,class:"w-16 h-5"})]),_:1})):(r(),$("span",kt,g(I.$t("items.item",2)),1))]),a("th",Pt,[t.isLoading?(r(),M(B,{key:0},{default:c(()=>[s(m,{lines:1,class:"w-16 h-5"})]),_:1})):(r(),$("span",Ct,g(I.$t("invoices.item.quantity")),1))]),a("th",Mt,[t.isLoading?(r(),M(B,{key:0},{default:c(()=>[s(m,{lines:1,class:"w-16 h-5"})]),_:1})):(r(),$("span",Dt,g(I.$t("invoices.item.price")),1))]),t.store[t.storeProp].discount_per_item==="YES"?(r(),$("th",Vt,[t.isLoading?(r(),M(B,{key:0},{default:c(()=>[s(m,{lines:1,class:"w-16 h-5"})]),_:1})):(r(),$("span",jt,g(I.$t("invoices.item.discount")),1))])):A("",!0),a("th",qt,[t.isLoading?(r(),M(B,{key:0},{default:c(()=>[s(m,{lines:1,class:"w-16 h-5"})]),_:1})):(r(),$("span",Et,g(I.$t("invoices.item.amount")),1))])])]),s(p(Ee),{modelValue:t.store[t.storeProp].items,"onUpdate:modelValue":b[0]||(b[0]=y=>t.store[t.storeProp].items=y),"item-key":"id",tag:"tbody",handle:".handle"},{item:c(({element:y,index:D})=>[(r(),M(ht,{key:y.id,index:D,"item-data":y,loading:t.isLoading,currency:o.value,"item-validation-scope":t.itemValidationScope,"invoice-items":t.store[t.storeProp].items,store:t.store,"store-prop":t.storeProp},null,8,["index","item-data","loading","currency","item-validation-scope","invoice-items","store","store-prop"]))]),_:1},8,["modelValue"])]),a("div",{class:"flex items-center justify-center w-full px-6 py-3 text-base border border-t-0 border-gray-200 border-solid cursor-pointer text-primary-400 hover:bg-primary-100",onClick:b[1]||(b[1]=(...y)=>t.store.addItem&&t.store.addItem(...y))},[s(S,{name:"PlusCircleIcon",class:"mr-2"}),j(" "+g(I.$t("general.add_new_item")),1)])],64)}}},At={class:"flex items-center justify-between w-full mt-2 text-sm"},Lt={class:"font-semibold leading-5 text-gray-500 uppercase"},Ot={class:"flex items-center justify-center text-lg text-black"},Ut={__name:"CreateTotalTaxes",props:{index:{type:Number,required:!0},tax:{type:Object,required:!0},taxes:{type:Array,required:!0},currency:{type:[Object,String],required:!0},store:{type:Object,default:null},data:{type:String,default:""}},emits:["update","remove"],setup(t,{emit:x}){const e=t,o=x;ne("$utils");const I=k(()=>e.tax.compound_tax&&e.store.getSubtotalWithDiscount?Math.round((e.store.getSubtotalWithDiscount+e.store.getTotalSimpleTax)*e.tax.percent/100):e.store.getSubtotalWithDiscount&&e.tax.percent?Math.round(e.store.getSubtotalWithDiscount*e.tax.percent/100):0);Se(()=>{e.store.getSubtotalWithDiscount&&b(),e.store.getTotalSimpleTax&&b()});function b(){o("update",{...e.tax,amount:I.value})}return(m,B)=>{const S=f("BaseFormatMoney"),y=f("BaseIcon");return r(),$("div",At,[a("label",Lt,g(t.tax.name)+" ("+g(t.tax.percent)+" %) ",1),a("label",Ot,[s(S,{amount:t.tax.amount,currency:t.currency},null,8,["amount","currency"]),s(y,{name:"TrashIcon",class:"h-5 ml-2 cursor-pointer",onClick:B[0]||(B[0]=D=>m.$emit("remove",t.tax.id))})])])}}},zt={class:"w-full mt-4 tax-select"},Nt={class:"relative w-full max-w-md px-4"},Ft={class:"overflow-hidden rounded-md shadow-lg ring-1 ring-black ring-opacity-5"},Gt={class:"relative bg-white"},Yt={class:"relative p-4"},Wt={key:0,class:"relative flex flex-col overflow-auto list max-h-36 border-t border-gray-200"},Rt=["onClick"],Xt={class:"flex justify-between px-2"},Kt={class:"m-0 text-base font-semibold leading-tight text-gray-700 cursor-pointer"},Ht={class:"m-0 text-base font-semibold text-gray-700 cursor-pointer"},Jt={key:1,class:"flex justify-center p-5 text-gray-400"},Qt={class:"text-base text-gray-500 cursor-pointer"},Zt={class:"m-0 ml-3 text-sm leading-none cursor-pointer font-base text-primary-400"},es={__name:"SelectTaxPopup",props:{type:{type:String,default:null},store:{type:Object,default:null},storeProp:{type:String,default:""}},emits:["select:taxType"],setup(t,{emit:x}){const e=t,o=x,I=X(),b=Q(),m=oe(),{t:B}=K.useI18n(),S=W(null),y=k(()=>S.value?b.taxTypes.filter(function(i){return i.name.toLowerCase().indexOf(S.value.toLowerCase())!==-1}):b.taxTypes),D=k(()=>e.store[e.storeProp].taxes);function V(i,d){o("select:taxType",{...i}),d()}function q(){I.openModal({title:B("settings.tax_types.add_tax"),componentName:"TaxTypeModal",size:"sm",refreshData:i=>o("select:taxType",i)})}return(i,d)=>{const l=f("BaseIcon"),u=f("BaseInput");return r(),$("div",zt,[s(p(Ce),{class:"relative"},{default:c(({isOpen:_})=>[s(p(Te),{class:Y([_?"":"text-opacity-90","flex items-center text-sm font-medium text-primary-400 focus:outline-none focus:border-none"])},{default:c(()=>[s(l,{name:"PlusIcon",class:"w-4 h-4 font-medium text-primary-400"}),j(" "+g(i.$t("settings.tax_types.add_tax")),1)]),_:2},1032,["class"]),a("div",Nt,[s(ke,{"enter-active-class":"transition duration-200 ease-out","enter-from-class":"translate-y-1 opacity-0","enter-to-class":"translate-y-0 opacity-100","leave-active-class":"transition duration-150 ease-in","leave-from-class":"translate-y-0 opacity-100","leave-to-class":"translate-y-1 opacity-0"},{default:c(()=>[s(p(Pe),{style:{"min-width":"350px","margin-left":"62px",top:"-28px"},class:"absolute z-10 px-4 py-2 -translate-x-full sm:px-0"},{default:c(({close:h})=>[a("div",Ft,[a("div",Gt,[a("div",Yt,[s(u,{modelValue:S.value,"onUpdate:modelValue":d[0]||(d[0]=n=>S.value=n),placeholder:i.$t("general.search"),type:"text",class:"text-black"},null,8,["modelValue","placeholder"])]),y.value.length>0?(r(),$("div",Wt,[(r(!0),$(H,null,J(y.value,(n,w)=>(r(),$("div",{key:w,class:Y([{"bg-gray-100 cursor-not-allowed opacity-50 pointer-events-none":D.value.find(T=>T.tax_type_id===n.id)},"px-6 py-4 border-b border-gray-200 border-solid cursor-pointer hover:bg-gray-100 hover:cursor-pointer last:border-b-0"]),tabindex:"2",onClick:T=>V(n,h)},[a("div",Xt,[a("label",Kt,g(n.name),1),a("label",Ht,g(n.percent)+" % ",1)])],10,Rt))),128))])):(r(),$("div",Jt,[a("label",Qt,g(i.$t("general.no_tax_found")),1)]))]),p(m).hasAbilities(p(le).CREATE_TAX_TYPE)?(r(),$("button",{key:0,type:"button",class:"flex items-center justify-center w-full h-10 px-2 py-3 bg-gray-200 border-none outline-none",onClick:q},[s(l,{name:"CheckCircleIcon",class:"text-primary-400"}),a("label",Zt,g(i.$t("estimates.add_new_tax")),1)])):A("",!0)])]),_:1})]),_:1})])]),_:1})])}}},ts={class:"px-5 py-4 mt-6 bg-white border border-gray-200 border-solid rounded md:min-w-[390px] min-w-[300px] lg:mt-7"},ss={class:"flex items-center justify-between w-full"},as={key:1,class:"text-sm font-semibold leading-5 text-gray-400 uppercase"},os={key:3,class:"flex items-center justify-center m-0 text-lg text-black uppercase"},ns={key:1,class:"m-0 text-sm font-semibold leading-5 text-gray-500 uppercase"},rs={key:3,class:"flex items-center justify-center m-0 text-lg text-black uppercase"},ls={key:0,class:"flex items-center justify-between w-full mt-2"},is={key:1,class:"text-sm font-semibold leading-5 text-gray-400 uppercase"},ds={key:3,class:"flex",style:{width:"140px"},role:"group"},cs={class:"flex items-center"},us={key:1},ms={class:"flex items-center justify-between w-full pt-2 mt-5 border-t border-gray-200 border-solid"},ps={key:1,class:"m-0 text-sm font-semibold leading-5 text-gray-400 uppercase"},ys={key:3,class:"flex items-center justify-center text-lg uppercase text-primary-400"},Ns={__name:"CreateTotal",props:{store:{type:Object,default:null},storeProp:{type:String,default:""},taxPopupType:{type:String,default:""},currency:{type:[Object,String],default:""},isLoading:{type:Boolean,default:!1}},setup(t){const x=W(null),e=t;ne("$utils");const o=Z(),I=k({get:()=>e.store[e.storeProp].discount,set:i=>{e.store[e.storeProp].discount_type==="percentage"?e.store[e.storeProp].discount_val=Math.round(e.store.getSubTotal*i/100):e.store[e.storeProp].discount_val=Math.round(i*100),e.store[e.storeProp].discount=i}}),b=k({get:()=>e.store[e.storeProp].taxes,set:i=>{e.store.$patch(d=>{d[e.storeProp].taxes=i})}}),m=k(()=>{let i=[];return e.store[e.storeProp].items.forEach(d=>{d.taxes&&d.taxes.forEach(l=>{let u=i.find(_=>_.tax_type_id===l.tax_type_id);u?u.amount+=l.amount:l.tax_type_id&&i.push({tax_type_id:l.tax_type_id,amount:l.amount,percent:l.percent,name:l.name})})}),i}),B=k(()=>e.currency?e.currency:o.selectedCompanyCurrency);function S(){e.store[e.storeProp].discount_type!=="fixed"&&(e.store[e.storeProp].discount_val=Math.round(e.store[e.storeProp].discount*100),e.store[e.storeProp].discount_type="fixed")}function y(){e.store[e.storeProp].discount_type!=="percentage"&&(e.store[e.storeProp].discount_val=e.store.getSubTotal*e.store[e.storeProp].discount/100,e.store[e.storeProp].discount_type="percentage")}function D(i){let d=0;i.compound_tax&&e.store.getSubtotalWithDiscount?d=Math.round((e.store.getSubtotalWithDiscount+e.store.getTotalSimpleTax)*i.percent/100):e.store.getSubtotalWithDiscount&&i.percent&&(d=Math.round(e.store.getSubtotalWithDiscount*i.percent/100));let l={...le,id:fe.raw(),name:i.name,percent:i.percent,compound_tax:i.compound_tax,tax_type_id:i.id,amount:d};e.store.$patch(u=>{u[e.storeProp].taxes.push({...l})})}function V(i){const d=e.store[e.storeProp].taxes.find(l=>l.id===i.id);d&&Object.assign(d,{...i})}function q(i){const d=e.store[e.storeProp].taxes.findIndex(l=>l.id===i);e.store.$patch(l=>{l[e.storeProp].taxes.splice(d,1)})}return(i,d)=>{const l=f("BaseContentPlaceholdersText"),u=f("BaseContentPlaceholders"),_=f("BaseFormatMoney"),h=f("BaseInput"),n=f("BaseIcon"),w=f("BaseButton"),T=f("BaseDropdownItem"),L=f("BaseDropdown");return r(),$("div",ts,[a("div",ss,[t.isLoading?(r(),M(u,{key:0},{default:c(()=>[s(l,{lines:1,class:"w-16 h-5"})]),_:1})):(r(),$("label",as,g(i.$t("estimates.sub_total")),1)),t.isLoading?(r(),M(u,{key:2},{default:c(()=>[s(l,{lines:1,class:"w-16 h-5"})]),_:1})):(r(),$("label",os,[s(_,{amount:t.store.getSubTotal,currency:B.value},null,8,["amount","currency"])]))]),(r(!0),$(H,null,J(m.value,P=>(r(),$("div",{key:P.tax_type_id,class:"flex items-center justify-between w-full"},[t.isLoading?(r(),M(u,{key:0},{default:c(()=>[s(l,{lines:1,class:"w-16 h-5"})]),_:1})):t.store[t.storeProp].tax_per_item==="YES"?(r(),$("label",ns,g(P.name)+" - "+g(P.percent)+"% ",1)):A("",!0),t.isLoading?(r(),M(u,{key:2},{default:c(()=>[s(l,{lines:1,class:"w-16 h-5"})]),_:1})):t.store[t.storeProp].tax_per_item==="YES"?(r(),$("label",rs,[s(_,{amount:P.amount,currency:B.value},null,8,["amount","currency"])])):A("",!0)]))),128)),t.store[t.storeProp].discount_per_item==="NO"||t.store[t.storeProp].discount_per_item===null?(r(),$("div",ls,[t.isLoading?(r(),M(u,{key:0},{default:c(()=>[s(l,{lines:1,class:"w-16 h-5"})]),_:1})):(r(),$("label",is,g(i.$t("estimates.discount")),1)),t.isLoading?(r(),M(u,{key:2},{default:c(()=>[s(l,{lines:1,class:"w-24 h-8 border rounded-md"})]),_:1})):(r(),$("div",ds,[s(h,{modelValue:I.value,"onUpdate:modelValue":d[0]||(d[0]=P=>I.value=P),class:"border-r-0 focus:border-r-2 rounded-tr-sm rounded-br-sm h-[38px]"},null,8,["modelValue"]),s(L,{position:"bottom-end"},{activator:c(()=>[s(w,{class:"p-2 rounded-none rounded-tr-md rounded-br-md",type:"button",variant:"white"},{default:c(()=>[a("span",cs,[j(g(t.store[t.storeProp].discount_type=="fixed"?B.value.symbol:"%")+" ",1),s(n,{name:"ChevronDownIcon",class:"w-4 h-4 ml-1 text-gray-500"})])]),_:1})]),default:c(()=>[s(T,{onClick:S},{default:c(()=>[j(g(i.$t("general.fixed")),1)]),_:1}),s(T,{onClick:y},{default:c(()=>[j(g(i.$t("general.percentage")),1)]),_:1})]),_:1})]))])):A("",!0),t.store[t.storeProp].tax_per_item==="NO"||t.store[t.storeProp].tax_per_item===null?(r(),$("div",us,[(r(!0),$(H,null,J(b.value,(P,E)=>(r(),M(Ut,{key:P.id,index:E,tax:P,taxes:b.value,currency:t.currency,store:t.store,onRemove:q,onUpdate:V},null,8,["index","tax","taxes","currency","store"]))),128))])):A("",!0),t.store[t.storeProp].tax_per_item==="NO"||t.store[t.storeProp].tax_per_item===null?(r(),$("div",{key:2,ref_key:"taxModal",ref:x,class:"float-right pt-2 pb-4"},[s(es,{"store-prop":t.storeProp,store:t.store,type:t.taxPopupType,"onSelect:taxType":D},null,8,["store-prop","store","type"])],512)):A("",!0),a("div",ms,[t.isLoading?(r(),M(u,{key:0},{default:c(()=>[s(l,{lines:1,class:"w-16 h-5"})]),_:1})):(r(),$("label",ps,g(i.$t("estimates.total"))+" "+g(i.$t("estimates.amount"))+":",1)),t.isLoading?(r(),M(u,{key:2},{default:c(()=>[s(l,{lines:1,class:"w-16 h-5"})]),_:1})):(r(),$("label",ys,[s(_,{amount:t.store.getTotal,currency:B.value},null,8,["amount","currency"])]))])])}}},fs={class:"flex text-gray-800 font-medium text-sm mb-2"},xs=a("span",{class:"text-sm text-red-500"}," *",-1),Fs={__name:"SelectTemplateButton",props:{store:{type:Object,default:null},storeProp:{type:String,default:""},isMarkAsDefault:{type:Boolean,default:!1}},setup(t){const x=t,e=X(),{t:o}=K.useI18n();function I(){let b="";x.storeProp=="newEstimate"?b=o("estimates.mark_as_default_estimate_template_description"):x.storeProp=="newInvoice"&&(b=o("invoices.mark_as_default_invoice_template_description")),e.openModal({title:o("general.choose_template"),componentName:"SelectTemplate",data:{templates:x.store.templates,store:x.store,storeProp:x.storeProp,isMarkAsDefault:x.isMarkAsDefault,markAsDefaultDescription:b}})}return(b,m)=>{const B=f("BaseIcon"),S=f("BaseButton");return r(),$("div",null,[a("label",fs,[j(g(b.$t("general.select_template"))+" ",1),xs]),s(S,{type:"button",class:"flex justify-center w-full text-sm lg:w-auto hover:bg-gray-200",variant:"gray",onClick:I},{right:c(y=>[s(B,{name:"PencilIcon",class:Y(y.class)},null,8,["class"])]),default:c(()=>[j(" "+g(t.store[t.storeProp].template_name),1)]),_:1})])}}},_s={class:"mb-6"},gs={class:"z-20 text-sm font-semibold leading-5 text-primary-400 float-right"},hs={class:"text-gray-800 font-medium mb-4 text-sm"},Gs={__name:"CreateNotesField",props:{store:{type:Object,default:null},storeProp:{type:String,default:""},fields:{type:Object,default:null},type:{type:String,default:null}},setup(t){const x=t;function e(o){x.store[x.storeProp].notes=""+o.notes}return(o,I)=>{const b=f("BaseCustomInput");return r(),$("div",_s,[a("div",gs,[s(Ae,{type:t.type,onSelect:e},null,8,["type"])]),a("label",hs,g(o.$t("invoices.notes")),1),s(b,{modelValue:t.store[t.storeProp].notes,"onUpdate:modelValue":I[0]||(I[0]=m=>t.store[t.storeProp].notes=m),"content-loading":t.store.isFetchingInitialSettings,fields:t.fields,class:"mt-1"},null,8,["modelValue","content-loading","fields"])])}}},vs={class:"flex justify-between w-full"},bs={class:"px-8 py-8 sm:p-6"},$s={key:0,class:"grid grid-cols-3 gap-2 p-1 overflow-x-auto"},ws=["onClick"],Is=["src","alt"],Bs=["alt","src"],Ss={key:1,class:"z-0 flex ml-3 pt-5"},Ts={class:"z-0 flex justify-end p-4 border-t border-gray-200 border-solid"},Ys={__name:"SelectTemplateModal",setup(t){const x=X(),e=oe(),o=W(""),I=k(()=>x.active&&x.componentName==="SelectTemplate"),b=k(()=>x.title);function m(){x.data.store[x.data.storeProp].template_name?o.value=x.data.store[x.data.storeProp].template_name:o.value=x.data.templates[0]}async function B(){await x.data.store.setTemplate(o.value),!x.data.store.isEdit&&x.data.isMarkAsDefault&&(x.data.storeProp=="newEstimate"?await e.updateUserSettings({settings:{default_estimate_template:o.value}}):x.data.storeProp=="newInvoice"&&await e.updateUserSettings({settings:{default_invoice_template:o.value}})),y()}function S(){return new URL("/build/assets/tick-ZCqPAN6j.png",import.meta.url)}function y(){x.closeModal(),setTimeout(()=>{x.$reset()},300)}return(D,V)=>{const q=f("BaseIcon"),i=f("BaseCheckbox"),d=f("BaseButton"),l=f("BaseModal");return r(),M(l,{show:I.value,onClose:y,onOpen:m},{header:c(()=>[a("div",vs,[j(g(b.value)+" ",1),s(q,{name:"XIcon",class:"h-6 w-6 text-gray-500 cursor-pointer",onClick:y})])]),default:c(()=>[a("div",bs,[p(x).data?(r(),$("div",$s,[(r(!0),$(H,null,J(p(x).data.templates,(u,_)=>(r(),$("div",{key:_,class:Y([{"border border-solid border-primary-500":o.value===u.name},"relative flex flex-col m-2 border border-gray-200 border-solid cursor-pointer hover:border-primary-300"]),onClick:h=>o.value=u.name},[a("img",{src:u.path,alt:u.name,class:"w-full min-h-[100px]"},null,8,Is),o.value===u.name?(r(),$("img",{key:0,alt:u.name,class:"absolute z-10 w-5 h-5 text-primary-500",style:{top:"-6px",right:"-5px"},src:S()},null,8,Bs)):A("",!0),a("span",{class:Y(["w-full p-1 bg-gray-200 text-sm text-center absolute bottom-0 left-0",{"text-primary-500 bg-primary-100":o.value===u.name,"text-gray-600":o.value!=u.name}])},g(u.name),3)],10,ws))),128))])):A("",!0),p(x).data.store.isEdit?A("",!0):(r(),$("div",Ss,[s(i,{modelValue:p(x).data.isMarkAsDefault,"onUpdate:modelValue":V[0]||(V[0]=u=>p(x).data.isMarkAsDefault=u),"set-initial-value":!1,variant:"primary",label:D.$t("general.mark_as_default"),description:p(x).data.markAsDefaultDescription},null,8,["modelValue","label","description"])]))]),a("div",Ts,[s(d,{class:"mr-3",variant:"primary-outline",onClick:y},{default:c(()=>[j(g(D.$t("general.cancel")),1)]),_:1}),s(d,{variant:"primary",onClick:V[1]||(V[1]=u=>B())},{left:c(u=>[s(q,{name:"SaveIcon",class:Y(u.class)},null,8,["class"])]),default:c(()=>[j(" "+g(D.$t("general.choose")),1)]),_:1})])]),_:1},8,["show"])}}},ks={class:"flex justify-between w-full"},Ps={class:"item-modal"},Cs={class:"px-8 py-8 sm:p-6"},Ms={class:"z-0 flex justify-end p-4 border-t border-gray-200 border-solid"},Ws={__name:"ItemModal",emits:["newItem"],setup(t,{emit:x}){const e=X(),o=ye(),I=Z(),b=Q();Me(),De();const{t:m}=K.useI18n(),B=W(!1),S=W(I.selectedCompanySettings.tax_per_item),y=k(()=>e.active&&e.componentName==="ItemModal"),D=k({get:()=>o.currentItem.price/100,set:h=>{o.currentItem.price=Math.round(h*100)}}),V=k({get:()=>o.currentItem.taxes.map(h=>{if(h)return{...h,tax_type_id:h.id,tax_name:h.name+" ("+h.percent+"%)"}}),set:h=>{o.$patch(n=>{n.currentItem.taxes=h})}}),q=k(()=>S.value==="YES"),i={name:{required:U.withMessage(m("validation.required"),G),minLength:U.withMessage(m("validation.name_min_length",{count:3}),Ve(3))},description:{maxLength:U.withMessage(m("validation.description_maxlength",{count:255}),ee(255))}},d=re(i,k(()=>o.currentItem)),l=k(()=>b.taxTypes.map(h=>({...h,tax_name:h.name+" ("+h.percent+"%)"})));xe(()=>{d.value.$reset(),o.fetchItemUnits({limit:"all"})});async function u(){if(d.value.$touch(),d.value.$invalid)return!0;let h={...o.currentItem,taxes:o.currentItem.taxes.map(w=>({tax_type_id:w.id,amount:D.value*w.percent/100,percent:w.percent,name:w.name,collective_tax:0}))};B.value=!0,await(o.isEdit?o.updateItem:o.addItem)(h).then(w=>{B.value=!1,w.data.data&&e.data&&e.refreshData(w.data.data),_()})}function _(){e.closeModal(),setTimeout(()=>{o.resetCurrentItem(),e.$reset(),d.value.$reset()},300)}return(h,n)=>{const w=f("BaseIcon"),T=f("BaseInput"),L=f("BaseInputGroup"),P=f("BaseMoney"),E=f("BaseMultiselect"),v=f("BaseTextarea"),C=f("BaseInputGrid"),O=f("BaseButton"),F=f("BaseModal");return r(),M(F,{show:y.value,onClose:_},{header:c(()=>[a("div",ks,[j(g(p(e).title)+" ",1),s(w,{name:"XIcon",class:"h-6 w-6 text-gray-500 cursor-pointer",onClick:_})])]),default:c(()=>[a("div",Ps,[a("form",{action:"",onSubmit:_e(u,["prevent"])},[a("div",Cs,[s(C,{layout:"one-column"},{default:c(()=>[s(L,{label:h.$t("items.name"),required:"",error:p(d).name.$error&&p(d).name.$errors[0].$message},{default:c(()=>[s(T,{modelValue:p(o).currentItem.name,"onUpdate:modelValue":n[0]||(n[0]=z=>p(o).currentItem.name=z),type:"text",invalid:p(d).name.$error,onInput:n[1]||(n[1]=z=>p(d).name.$touch())},null,8,["modelValue","invalid"])]),_:1},8,["label","error"]),s(L,{label:h.$t("items.price")},{default:c(()=>[(r(),M(P,{key:p(I).selectedCompanyCurrency,modelValue:D.value,"onUpdate:modelValue":n[2]||(n[2]=z=>D.value=z),currency:p(I).selectedCompanyCurrency,class:"relative w-full focus:border focus:border-solid focus:border-primary"},null,8,["modelValue","currency"]))]),_:1},8,["label"]),s(L,{label:h.$t("items.unit")},{default:c(()=>[s(E,{modelValue:p(o).currentItem.unit_id,"onUpdate:modelValue":n[3]||(n[3]=z=>p(o).currentItem.unit_id=z),label:"name",options:p(o).itemUnits,"value-prop":"id","can-deselect":!1,"can-clear":!1,placeholder:h.$t("items.select_a_unit"),searchable:"","track-by":"name"},null,8,["modelValue","options","placeholder"])]),_:1},8,["label"]),q.value?(r(),M(L,{key:0,label:h.$t("items.taxes")},{default:c(()=>[s(E,{modelValue:V.value,"onUpdate:modelValue":n[4]||(n[4]=z=>V.value=z),options:l.value,mode:"tags",label:"tax_name","value-prop":"id",class:"w-full","can-deselect":!1,"can-clear":!1,searchable:"","track-by":"tax_name",object:""},null,8,["modelValue","options"])]),_:1},8,["label"])):A("",!0),s(L,{label:h.$t("items.description"),error:p(d).description.$error&&p(d).description.$errors[0].$message},{default:c(()=>[s(v,{modelValue:p(o).currentItem.description,"onUpdate:modelValue":n[5]||(n[5]=z=>p(o).currentItem.description=z),rows:"4",cols:"50",invalid:p(d).description.$error,onInput:n[6]||(n[6]=z=>p(d).description.$touch())},null,8,["modelValue","invalid"])]),_:1},8,["label","error"])]),_:1})]),a("div",Ms,[s(O,{class:"mr-3",variant:"primary-outline",type:"button",onClick:_},{default:c(()=>[j(g(h.$t("general.cancel")),1)]),_:1}),s(O,{loading:B.value,disabled:B.value,variant:"primary",type:"submit"},{left:c(z=>[s(w,{name:"SaveIcon",class:Y(z.class)},null,8,["class"])]),default:c(()=>[j(" "+g(p(o).isEdit?h.$t("general.update"):h.$t("general.save")),1)]),_:1},8,["loading","disabled"])])],32)])]),_:1},8,["show"])}}},Ds={class:"flex justify-between w-full"},Vs={class:"flex flex-col"},js={class:"text-sm text-gray-500 mt-1"},qs={class:"p-4 sm:p-6"},Es={class:"z-0 flex justify-end p-4 border-t border-gray-200 border-solid"},As={__name:"TaxationAddressModal",emits:["addTax"],setup(t,{emit:x}){const e=X();je();const o=pe({state:"",city:"",address_street_1:"",zip:""}),I=W(!1),b=Q(),{t:m}=K.useI18n(),B=k(()=>e.active&&e.componentName==="TaxationAddressModal"),S=k(()=>({state:{required:U.withMessage(m("validation.required"),G)},city:{required:U.withMessage(m("validation.required"),G)},address_street_1:{required:U.withMessage(m("validation.required"),G)},zip:{required:U.withMessage(m("validation.required"),G)}})),y=re(S,k(()=>o));async function D(){if(y.value.$touch(),y.value.$invalid)return!0;let d={address:o};e.id&&(d.customer_id=e.id),o.address_street_1=o.address_street_1.replace(/(\r\n|\n|\r)/gm,""),I.value=!0,await b.fetchSalesTax(d).then(l=>{I.value=!1,V("addTax",l.data.data),i()}).catch(l=>{I.value=!1})}const V=x;function q(){var d,l,u,_;o.state=(d=e==null?void 0:e.data)==null?void 0:d.state,o.city=(l=e==null?void 0:e.data)==null?void 0:l.city,o.address_street_1=(u=e==null?void 0:e.data)==null?void 0:u.address_street_1,o.zip=(_=e==null?void 0:e.data)==null?void 0:_.zip}function i(){e.closeModal()}return(d,l)=>{const u=f("BaseIcon"),_=f("BaseInput"),h=f("BaseInputGroup"),n=f("BaseTextarea"),w=f("BaseInputGrid"),T=f("BaseButton"),L=f("BaseModal");return r(),M(L,{show:B.value,onClose:i,onOpen:q},{header:c(()=>[a("div",Ds,[a("div",Vs,[j(g(p(e).title)+" ",1),a("p",js,g(p(e).content),1)]),s(u,{name:"XIcon",class:"h-6 w-6 text-gray-500 cursor-pointer",onClick:i})])]),default:c(()=>[a("form",{onSubmit:_e(D,["prevent"])},[a("div",qs,[s(w,{layout:"one-column"},{default:c(()=>[s(h,{required:"",error:p(y).state.$error&&p(y).state.$errors[0].$message,label:d.$t("customers.state")},{default:c(()=>[s(_,{modelValue:o.state,"onUpdate:modelValue":l[0]||(l[0]=P=>o.state=P),type:"text",name:"shippingState",class:"mt-1 md:mt-0",invalid:p(y).state.$error,onInput:l[1]||(l[1]=P=>p(y).state.$touch()),placeholder:d.$t("settings.taxations.state_placeholder")},null,8,["modelValue","invalid","placeholder"])]),_:1},8,["error","label"]),s(h,{required:"",error:p(y).city.$error&&p(y).city.$errors[0].$message,label:d.$t("customers.city")},{default:c(()=>[s(_,{modelValue:o.city,"onUpdate:modelValue":l[2]||(l[2]=P=>o.city=P),type:"text",name:"shippingCity",class:"mt-1 md:mt-0",invalid:p(y).city.$error,onInput:l[3]||(l[3]=P=>p(y).city.$touch()),placeholder:d.$t("settings.taxations.city_placeholder")},null,8,["modelValue","invalid","placeholder"])]),_:1},8,["error","label"]),s(h,{required:"",error:p(y).address_street_1.$error&&p(y).address_street_1.$errors[0].$message,label:d.$t("customers.address")},{default:c(()=>[s(n,{modelValue:o.address_street_1,"onUpdate:modelValue":l[4]||(l[4]=P=>o.address_street_1=P),rows:"2",cols:"50",class:"mt-1 md:mt-0",invalid:p(y).address_street_1.$error,onInput:l[5]||(l[5]=P=>p(y).address_street_1.$touch()),placeholder:d.$t("settings.taxations.address_placeholder")},null,8,["modelValue","invalid","placeholder"])]),_:1},8,["error","label"]),s(h,{required:"",error:p(y).zip.$error&&p(y).zip.$errors[0].$message,label:d.$t("customers.zip_code")},{default:c(()=>[s(_,{modelValue:o.zip,"onUpdate:modelValue":l[6]||(l[6]=P=>o.zip=P),invalid:p(y).zip.$error,onInput:l[7]||(l[7]=P=>p(y).zip.$touch()),type:"text",class:"mt-1 md:mt-0",placeholder:d.$t("settings.taxations.zip_placeholder")},null,8,["modelValue","invalid","placeholder"])]),_:1},8,["error","label"])]),_:1})]),a("div",Es,[s(T,{class:"mr-3 text-sm",type:"button",variant:"primary-outline",onClick:i},{default:c(()=>[j(g(d.$t("general.cancel")),1)]),_:1}),s(T,{loading:I.value,variant:"primary",type:"submit"},{left:c(P=>[I.value?A("",!0):(r(),M(u,{key:0,name:"SaveIcon",class:Y(P.class)},null,8,["class"]))]),default:c(()=>[j(" "+g(d.$t("general.save")),1)]),_:1},8,["loading"])])],32)]),_:1},8,["show"])}}},te="Sales Tax",se="MODULE",Rs={__name:"SalesTax",props:{isEdit:{type:Boolean,default:null},type:{type:String,default:null},customer:{type:[Object],default:null},store:{type:Object,default:null},storeProp:{type:String,default:null}},setup(t){const x=X(),e=Z(),o=Q(),{t:I}=K.useI18n(),b=W(!1),m=t,B=k(()=>m.isEdit?m.store[m.storeProp].sales_tax_address_type==="billing":e.selectedCompanySettings.sales_tax_address_type==="billing"),S=k(()=>e.selectedCompanySettings.sales_tax_us_enabled==="YES"),y=k(()=>m.isEdit?m.store[m.storeProp].sales_tax_type==="customer_level":e.selectedCompanySettings.sales_tax_type==="customer_level"),D=k(()=>m.isEdit?m.store[m.storeProp].sales_tax_type==="company_level":e.selectedCompanySettings.sales_tax_type==="company_level"),V=k(()=>{if(y.value&&q.value){let n=B.value?m.customer.billing:m.customer.shipping;return{address:R.pick(n,["address_street_1","city","state","zip"]),customer_id:m.customer.id}}else if(D.value&&q.value)return{address:R.pick(address,["address_street_1","city","state","zip"])}}),q=k(()=>{var n,w;if(y.value){let T=B.value?(n=m.customer)==null?void 0:n.billing:(w=m.customer)==null?void 0:w.shipping;return i(T)}else if(D.value)return i(e.selectedCompany.address);return!1});ae(()=>m.customer,(n,w)=>{if(n&&w&&y.value){d(n,w);return}!q.value&&y.value&&n?setTimeout(()=>{l()},500):y.value&&n?u():y.value&&!n&&h()}),xe(()=>{D.value&&(q.value?u():l())});function i(n){return n?n.address_street_1&&n.city&&n.state&&n.zip:!1}function d(n,w){const T=B.value?n.billing:n.shipping,L=B.value?w.billing:w.shipping,P=R.pick(T,["address_street_1","city","state","zip"]),E=R.pick(L,["address_street_1","city","state","zip"]);R.isEqual(P,E)||u()}function l(){var T,L;if(!S.value)return;let n=null,w="";y.value?B.value?(n=(T=m.customer)==null?void 0:T.billing,w=I("settings.taxations.add_billing_address")):(n=(L=m.customer)==null?void 0:L.shipping,w=I("settings.taxations.add_shipping_address")):(n=e.selectedCompany.address,w=I("settings.taxations.add_company_address")),x.openModal({title:w,content:I("settings.taxations.modal_description"),componentName:"TaxationAddressModal",data:n,id:y.value?m.customer.id:""})}async function u(){S.value&&(b.value=!0,await o.fetchSalesTax(V.value).then(n=>{_(n.data.data),b.value=!1}).catch(n=>{n.response.data.error&&setTimeout(()=>{l()},500),b.value=!1}))}function _(n){n.tax_type_id=n.id;const w=m.store[m.storeProp].taxes.findIndex(T=>T.name===te&&T.type===se);w>-1?Object.assign(m.store[m.storeProp].taxes[w],n):m.store[m.storeProp].taxes.push(n)}function h(){const n=m.store[m.storeProp].taxes.findIndex(T=>T.name===te&&T.type===se);n>-1&&m.store[m.storeProp].taxes.splice(n,1);let w=o.taxTypes.findIndex(T=>T.name===te&&T.type===se);w>-1&&o.taxTypes.splice(w,1)}return(n,w)=>(r(),M(As,{onAddTax:_}))}};export{Ys as _,Ws as a,Rs as b,zs as c,Gs as d,Fs as e,Ns as f}; +import{au as K,F as X,M as oe,f as W,H as pe,a5 as ne,v as Q,k,z as ae,r as f,o as r,c as $,b as a,t as g,a as s,a6 as $e,l as p,w as c,p as j,m as M,K as A,E as Z,at as ye,L as we,P as R,g as U,h as G,aF as me,ai as ee,aL as Ie,j as re,N as H,O as J,Q as le,aN as Be,ao as fe,an as Se,aO as Te,J as Y,T as ke,aP as Pe,aQ as Ce,as as Me,u as De,I as Ve,Y as xe,q as _e,G as je}from"./main-pPEsZPea.js";import{D as qe,d as Ee}from"./DragIcon-lAv182Nx.js";import{_ as Ae}from"./SelectNotePopup-iZwUGlz-.js";const Le={class:"flex items-center justify-between mb-3"},Oe={class:"flex items-center text-base",style:{flex:"4"}},Ue={class:"pr-2 mb-0",align:"right"},ze={class:"absolute left-3.5"},Ne={class:"ml-2 text-sm leading-none cursor-pointer text-primary-400"},Fe=a("br",null,null,-1),Ge={class:"text-sm text-right",style:{flex:"3"}},Ye={class:"flex items-center justify-center w-6 h-10 mx-2 cursor-pointer"},We={__name:"CreateItemRowTax",props:{ability:{type:String,default:""},store:{type:Object,default:null},storeProp:{type:String,default:""},itemIndex:{type:Number,required:!0},index:{type:Number,required:!0},taxData:{type:Object,required:!0},taxes:{type:Array,default:[]},total:{type:Number,default:0},totalTax:{type:Number,default:0},discountedTotal:{type:Number,default:0},currency:{type:[Object,String],required:!0},updateItems:{type:Function,default:()=>{}}},emits:["remove","update"],setup(t,{emit:x}){const e=t,o=x,I=K(),b=X(),m=oe(),B=W(null),S=pe({...e.taxData});ne("utils");const{t:y}=Q.useI18n(),D=k(()=>I.taxTypes.map(_=>({..._})).map(_=>(e.taxes.find(n=>n.tax_type_id===_.id)?_.disabled=!0:_.disabled=!1,_))),V=k(()=>S.compound_tax&&e.discountedTotal?(e.discountedTotal+e.totalTax)*S.percent/100:e.discountedTotal&&S.percent?e.discountedTotal*S.percent/100:0);ae(()=>e.discountedTotal,()=>{i()}),ae(()=>e.totalTax,()=>{i()}),e.taxData.tax_type_id>0&&(B.value=I.taxTypes.find(u=>u.id===e.taxData.tax_type_id)),i();function q(u){S.percent=u.percent,S.tax_type_id=u.id,S.compound_tax=u.compound_tax,S.name=u.name,i()}function i(){S.tax_type_id!==0&&o("update",{index:e.index,item:{...S,amount:V.value}})}function d(){let u={itemIndex:e.itemIndex,taxIndex:e.index};b.openModal({title:y("settings.tax_types.add_tax"),componentName:"TaxTypeModal",data:u,size:"sm"})}function l(u){e.store.$patch(_=>{_[e.storeProp].items[e.itemIndex].taxes.splice(u,1)})}return(u,_)=>{const h=f("BaseIcon"),n=f("BaseMultiselect"),w=f("BaseFormatMoney");return r(),$("div",Le,[a("div",Oe,[a("label",Ue,g(u.$t("invoices.item.tax")),1),s(n,{modelValue:B.value,"onUpdate:modelValue":[_[0]||(_[0]=T=>B.value=T),_[1]||(_[1]=T=>q(T))],"value-prop":"id",options:D.value,placeholder:u.$t("general.select_a_tax"),"open-direction":"top","track-by":"name",searchable:"",object:"",label:"name"},$e({singlelabel:c(({value:T})=>[a("div",ze,g(T.name)+" - "+g(T.percent)+" % ",1)]),option:c(({option:T})=>[j(g(T.name)+" - "+g(T.percent)+" % ",1)]),_:2},[p(m).hasAbilities(t.ability)?{name:"action",fn:c(()=>[a("button",{type:"button",class:"flex items-center justify-center w-full px-2 py-2 bg-gray-200 border-none outline-none cursor-pointer",onClick:d},[s(h,{name:"CheckCircleIcon",class:"h-5 text-primary-400"}),a("label",Ne,g(u.$t("invoices.add_new_tax")),1)])]),key:"0"}:void 0]),1032,["modelValue","options","placeholder"]),Fe]),a("div",Ge,[s(w,{amount:V.value,currency:t.currency},null,8,["amount","currency"])]),a("div",Ye,[t.taxes.length&&t.index!==t.taxes.length-1?(r(),M(h,{key:0,name:"TrashIcon",class:"h-5 text-gray-700 cursor-pointer",onClick:_[2]||(_[2]=T=>l(t.index))})):A("",!0)])])}}},Re={class:"box-border bg-white border border-gray-200 border-solid rounded-b"},Xe={colspan:"5",class:"p-0 text-left align-top"},Qe={class:"w-full"},He=a("col",{style:{width:"40%","min-width":"280px"}},null,-1),Je=a("col",{style:{width:"10%","min-width":"120px"}},null,-1),Ke=a("col",{style:{width:"15%","min-width":"120px"}},null,-1),Ze={key:0,style:{width:"15%","min-width":"160px"}},et=a("col",{style:{width:"15%","min-width":"120px"}},null,-1),tt={class:"px-5 py-4 text-left align-top"},st={class:"flex justify-start"},at={class:"flex items-center justify-center w-5 h-5 mt-2 mr-2 text-gray-300 cursor-move handle"},ot={class:"px-5 py-4 text-right align-top"},nt={class:"px-5 py-4 text-left align-top"},rt={class:"flex flex-col"},lt={class:"flex-auto flex-fill bd-highlight"},it={class:"relative w-full"},dt={key:0,class:"px-5 py-4 text-left align-top"},ct={class:"flex flex-col"},ut={class:"flex",style:{width:"120px"},role:"group"},mt={class:"flex items-center"},pt={class:"px-5 py-4 text-right align-top"},yt={class:"flex items-center justify-end text-sm"},ft={class:"flex items-center justify-center w-6 h-10 mx-2"},xt={key:0},_t=a("td",{class:"px-5 py-4 text-left align-top"},null,-1),gt={colspan:"4",class:"px-5 py-4 text-left align-top"},ht={__name:"CreateItemRow",props:{store:{type:Object,default:null},storeProp:{type:String,default:""},itemData:{type:Object,default:null},index:{type:Number,default:null},type:{type:String,default:""},loading:{type:Boolean,default:!1},currency:{type:[Object,String],required:!0},invoiceItems:{type:Array,required:!0},itemValidationScope:{type:String,default:""}},emits:["update","remove","itemValidate"],setup(t,{emit:x}){const e=t,o=Z(),I=ye();we();const{t:b}=Q.useI18n(),m=k({get:()=>e.itemData.quantity,set:v=>{E("quantity",parseFloat(v))}}),B=k({get:()=>{const v=e.itemData.price;return parseFloat(v)>0?v/100:v},set:v=>{if(parseFloat(v)>0){let C=Math.round(v*100);E("price",C)}else E("price",v)}}),S=k(()=>e.itemData.price*e.itemData.quantity),y=k({get:()=>e.itemData.discount,set:v=>{e.itemData.discount_type==="percentage"?E("discount_val",S.value*v/100):E("discount_val",Math.round(v*100)),E("discount",v)}}),D=k(()=>S.value-e.itemData.discount_val),V=k(()=>e.currency?e.currency:o.selectedCompanyCurrency),q=k(()=>e.store[e.storeProp].items.length!=1),i=k(()=>Math.round(R.sumBy(e.itemData.taxes,function(v){return v.compound_tax?0:v.amount}))),d=k(()=>Math.round(R.sumBy(e.itemData.taxes,function(v){return v.compound_tax?v.amount:0}))),l=k(()=>i.value+d.value),u={name:{required:U.withMessage(b("validation.required"),G)},quantity:{required:U.withMessage(b("validation.required"),G),minValue:U.withMessage(b("validation.qty_must_greater_than_zero"),me(0)),maxLength:U.withMessage(b("validation.amount_maxlength"),ee(20))},price:{required:U.withMessage(b("validation.required"),G),minValue:U.withMessage(b("validation.number_length_minvalue"),me(1)),maxLength:U.withMessage(b("validation.price_maxlength"),ee(20))},discount_val:{between:U.withMessage(b("validation.discount_maxlength"),Ie(0,k(()=>S.value)))},description:{maxLength:U.withMessage(b("validation.notes_maxlength"),ee(65e3))}},_=re(u,k(()=>e.store[e.storeProp].items[e.index]),{$scope:e.itemValidationScope});function h(v){e.store.$patch(O=>{O[e.storeProp].items[e.index].taxes[v.index]=v.item});let C=e.itemData.taxes[e.itemData.taxes.length-1];(C==null?void 0:C.tax_type_id)!==0&&e.store.$patch(O=>{O[e.storeProp].items[e.index].taxes.push({...Be,id:fe.raw()})}),P()}function n(v){E("name",v)}function w(v){e.store.$patch(C=>{if(C[e.storeProp].items[e.index].name=v.name,C[e.storeProp].items[e.index].price=v.price,C[e.storeProp].items[e.index].item_id=v.id,C[e.storeProp].items[e.index].description=v.description,v.unit&&(C[e.storeProp].items[e.index].unit_name=v.unit.name),e.store[e.storeProp].tax_per_item==="YES"&&v.taxes){let O=0;v.taxes.forEach(F=>{h({index:O,item:{...F}}),O++})}C[e.storeProp].exchange_rate&&(C[e.storeProp].items[e.index].price/=C[e.storeProp].exchange_rate)}),I.fetchItems(),P()}function T(){e.itemData.discount_type!=="fixed"&&(E("discount_val",Math.round(e.itemData.discount*100)),E("discount_type","fixed"))}function L(){e.itemData.discount_type!=="percentage"&&(E("discount_val",S.value*e.itemData.discount/100),E("discount_type","percentage"))}function P(){var O,F;let v=(F=(O=e.store[e.storeProp])==null?void 0:O.items[e.index])==null?void 0:F.taxes;v||(v=[]);let C={...e.store[e.storeProp].items[e.index],index:e.index,total:D.value,sub_total:S.value,totalSimpleTax:i.value,totalCompoundTax:d.value,totalTax:l.value,tax:l.value,taxes:[...v]};e.store.updateItem(C)}function E(v,C){e.store.$patch(O=>{O[e.storeProp].items[e.index][v]=C}),P()}return(v,C)=>{const O=f("BaseItemSelect"),F=f("BaseInput"),z=f("BaseMoney"),ie=f("BaseIcon"),ge=f("BaseButton"),de=f("BaseDropdownItem"),he=f("BaseDropdown"),ce=f("BaseContentPlaceholdersText"),ue=f("BaseContentPlaceholders"),ve=f("BaseFormatMoney");return r(),$("tr",Re,[a("td",Xe,[a("table",Qe,[a("colgroup",null,[He,Je,Ke,t.store[t.storeProp].discount_per_item==="YES"?(r(),$("col",Ze)):A("",!0),et]),a("tbody",null,[a("tr",null,[a("td",tt,[a("div",st,[a("div",at,[s(qe)]),s(O,{type:"Invoice",item:t.itemData,invalid:p(_).name.$error,"invalid-description":p(_).description.$error,taxes:t.itemData.taxes,index:t.index,"store-prop":t.storeProp,store:t.store,onSearch:n,onSelect:w},null,8,["item","invalid","invalid-description","taxes","index","store-prop","store"])])]),a("td",ot,[s(F,{modelValue:m.value,"onUpdate:modelValue":C[0]||(C[0]=N=>m.value=N),invalid:p(_).quantity.$error,"content-loading":t.loading,type:"number",small:"",min:"0",step:"any",onChange:C[1]||(C[1]=N=>P()),onInput:C[2]||(C[2]=N=>p(_).quantity.$touch())},null,8,["modelValue","invalid","content-loading"])]),a("td",nt,[a("div",rt,[a("div",lt,[a("div",it,[(r(),M(z,{key:V.value,modelValue:B.value,"onUpdate:modelValue":C[3]||(C[3]=N=>B.value=N),invalid:p(_).price.$error,"content-loading":t.loading,currency:V.value},null,8,["modelValue","invalid","content-loading","currency"]))])])])]),t.store[t.storeProp].discount_per_item==="YES"?(r(),$("td",dt,[a("div",ct,[a("div",ut,[s(F,{modelValue:y.value,"onUpdate:modelValue":C[4]||(C[4]=N=>y.value=N),invalid:p(_).discount_val.$error,"content-loading":t.loading,class:"border-r-0 focus:border-r-2 rounded-tr-sm rounded-br-sm h-[38px]"},null,8,["modelValue","invalid","content-loading"]),s(he,{position:"bottom-end"},{activator:c(()=>[s(ge,{"content-loading":t.loading,class:"rounded-tr-md rounded-br-md !p-2 rounded-none",type:"button",variant:"white"},{default:c(()=>[a("span",mt,[j(g(t.itemData.discount_type=="fixed"?t.currency.symbol:"%")+" ",1),s(ie,{name:"ChevronDownIcon",class:"w-4 h-4 ml-1 text-gray-500"})])]),_:1},8,["content-loading"])]),default:c(()=>[s(de,{onClick:T},{default:c(()=>[j(g(v.$t("general.fixed")),1)]),_:1}),s(de,{onClick:L},{default:c(()=>[j(g(v.$t("general.percentage")),1)]),_:1})]),_:1})])])])):A("",!0),a("td",pt,[a("div",yt,[a("span",null,[t.loading?(r(),M(ue,{key:0},{default:c(()=>[s(ce,{lines:1,class:"w-16 h-5"})]),_:1})):(r(),M(ve,{key:1,amount:D.value,currency:V.value},null,8,["amount","currency"]))]),a("div",ft,[q.value?(r(),M(ie,{key:0,class:"h-5 text-gray-700 cursor-pointer",name:"TrashIcon",onClick:C[5]||(C[5]=N=>t.store.removeItem(t.index))})):A("",!0)])])])]),t.store[t.storeProp].tax_per_item==="YES"?(r(),$("tr",xt,[_t,a("td",gt,[t.loading?(r(),M(ue,{key:0},{default:c(()=>[s(ce,{lines:1,class:"w-24 h-8 border rounded-md"})]),_:1})):(r(!0),$(H,{key:1},J(t.itemData.taxes,(N,be)=>(r(),M(We,{key:N.id,index:be,"item-index":t.index,"tax-data":N,taxes:t.itemData.taxes,"discounted-total":D.value,"total-tax":i.value,total:S.value,currency:t.currency,"update-items":P,ability:p(le).CREATE_INVOICE,store:t.store,"store-prop":t.storeProp,discount:y.value,onUpdate:h},null,8,["index","item-index","tax-data","taxes","discounted-total","total-tax","total","currency","ability","store","store-prop","discount"]))),128))])])):A("",!0)])])])])}}},vt={class:"text-center item-table min-w-full"},bt=a("col",{style:{width:"40%","min-width":"280px"}},null,-1),$t=a("col",{style:{width:"10%","min-width":"120px"}},null,-1),wt=a("col",{style:{width:"15%","min-width":"120px"}},null,-1),It={key:0,style:{width:"15%","min-width":"160px"}},Bt=a("col",{style:{width:"15%","min-width":"120px"}},null,-1),St={class:"bg-white border border-gray-200 border-solid"},Tt={class:"px-5 py-3 text-sm not-italic font-medium leading-5 text-left text-gray-700 border-t border-b border-gray-200 border-solid"},kt={key:1,class:"pl-7"},Pt={class:"px-5 py-3 text-sm not-italic font-medium leading-5 text-right text-gray-700 border-t border-b border-gray-200 border-solid"},Ct={key:1},Mt={class:"px-5 py-3 text-sm not-italic font-medium leading-5 text-left text-gray-700 border-t border-b border-gray-200 border-solid"},Dt={key:1},Vt={key:0,class:"px-5 py-3 text-sm not-italic font-medium leading-5 text-left text-gray-700 border-t border-b border-gray-200 border-solid"},jt={key:1},qt={class:"px-5 py-3 text-sm not-italic font-medium leading-5 text-right text-gray-700 border-t border-b border-gray-200 border-solid"},Et={key:1,class:"pr-10 column-heading"},zs={__name:"CreateItems",props:{store:{type:Object,default:null},storeProp:{type:String,default:""},currency:{type:[Object,String,null],required:!0},isLoading:{type:Boolean,default:!1},itemValidationScope:{type:String,default:""}},setup(t){const x=t,e=Z(),o=k(()=>x.currency?x.currency:e.selectedCompanyCurrency);return(I,b)=>{const m=f("BaseContentPlaceholdersText"),B=f("BaseContentPlaceholders"),S=f("BaseIcon");return r(),$(H,null,[a("table",vt,[a("colgroup",null,[bt,$t,wt,t.store[t.storeProp].discount_per_item==="YES"?(r(),$("col",It)):A("",!0),Bt]),a("thead",St,[a("tr",null,[a("th",Tt,[t.isLoading?(r(),M(B,{key:0},{default:c(()=>[s(m,{lines:1,class:"w-16 h-5"})]),_:1})):(r(),$("span",kt,g(I.$t("items.item",2)),1))]),a("th",Pt,[t.isLoading?(r(),M(B,{key:0},{default:c(()=>[s(m,{lines:1,class:"w-16 h-5"})]),_:1})):(r(),$("span",Ct,g(I.$t("invoices.item.quantity")),1))]),a("th",Mt,[t.isLoading?(r(),M(B,{key:0},{default:c(()=>[s(m,{lines:1,class:"w-16 h-5"})]),_:1})):(r(),$("span",Dt,g(I.$t("invoices.item.price")),1))]),t.store[t.storeProp].discount_per_item==="YES"?(r(),$("th",Vt,[t.isLoading?(r(),M(B,{key:0},{default:c(()=>[s(m,{lines:1,class:"w-16 h-5"})]),_:1})):(r(),$("span",jt,g(I.$t("invoices.item.discount")),1))])):A("",!0),a("th",qt,[t.isLoading?(r(),M(B,{key:0},{default:c(()=>[s(m,{lines:1,class:"w-16 h-5"})]),_:1})):(r(),$("span",Et,g(I.$t("invoices.item.amount")),1))])])]),s(p(Ee),{modelValue:t.store[t.storeProp].items,"onUpdate:modelValue":b[0]||(b[0]=y=>t.store[t.storeProp].items=y),"item-key":"id",tag:"tbody",handle:".handle"},{item:c(({element:y,index:D})=>[(r(),M(ht,{key:y.id,index:D,"item-data":y,loading:t.isLoading,currency:o.value,"item-validation-scope":t.itemValidationScope,"invoice-items":t.store[t.storeProp].items,store:t.store,"store-prop":t.storeProp},null,8,["index","item-data","loading","currency","item-validation-scope","invoice-items","store","store-prop"]))]),_:1},8,["modelValue"])]),a("div",{class:"flex items-center justify-center w-full px-6 py-3 text-base border border-t-0 border-gray-200 border-solid cursor-pointer text-primary-400 hover:bg-primary-100",onClick:b[1]||(b[1]=(...y)=>t.store.addItem&&t.store.addItem(...y))},[s(S,{name:"PlusCircleIcon",class:"mr-2"}),j(" "+g(I.$t("general.add_new_item")),1)])],64)}}},At={class:"flex items-center justify-between w-full mt-2 text-sm"},Lt={class:"font-semibold leading-5 text-gray-500 uppercase"},Ot={class:"flex items-center justify-center text-lg text-black"},Ut={__name:"CreateTotalTaxes",props:{index:{type:Number,required:!0},tax:{type:Object,required:!0},taxes:{type:Array,required:!0},currency:{type:[Object,String],required:!0},store:{type:Object,default:null},data:{type:String,default:""}},emits:["update","remove"],setup(t,{emit:x}){const e=t,o=x;ne("$utils");const I=k(()=>e.tax.compound_tax&&e.store.getSubtotalWithDiscount?Math.round((e.store.getSubtotalWithDiscount+e.store.getTotalSimpleTax)*e.tax.percent/100):e.store.getSubtotalWithDiscount&&e.tax.percent?Math.round(e.store.getSubtotalWithDiscount*e.tax.percent/100):0);Se(()=>{e.store.getSubtotalWithDiscount&&b(),e.store.getTotalSimpleTax&&b()});function b(){o("update",{...e.tax,amount:I.value})}return(m,B)=>{const S=f("BaseFormatMoney"),y=f("BaseIcon");return r(),$("div",At,[a("label",Lt,g(t.tax.name)+" ("+g(t.tax.percent)+" %) ",1),a("label",Ot,[s(S,{amount:t.tax.amount,currency:t.currency},null,8,["amount","currency"]),s(y,{name:"TrashIcon",class:"h-5 ml-2 cursor-pointer",onClick:B[0]||(B[0]=D=>m.$emit("remove",t.tax.id))})])])}}},zt={class:"w-full mt-4 tax-select"},Nt={class:"relative w-full max-w-md px-4"},Ft={class:"overflow-hidden rounded-md shadow-lg ring-1 ring-black ring-opacity-5"},Gt={class:"relative bg-white"},Yt={class:"relative p-4"},Wt={key:0,class:"relative flex flex-col overflow-auto list max-h-36 border-t border-gray-200"},Rt=["onClick"],Xt={class:"flex justify-between px-2"},Qt={class:"m-0 text-base font-semibold leading-tight text-gray-700 cursor-pointer"},Ht={class:"m-0 text-base font-semibold text-gray-700 cursor-pointer"},Jt={key:1,class:"flex justify-center p-5 text-gray-400"},Kt={class:"text-base text-gray-500 cursor-pointer"},Zt={class:"m-0 ml-3 text-sm leading-none cursor-pointer font-base text-primary-400"},es={__name:"SelectTaxPopup",props:{type:{type:String,default:null},store:{type:Object,default:null},storeProp:{type:String,default:""}},emits:["select:taxType"],setup(t,{emit:x}){const e=t,o=x,I=X(),b=K(),m=oe(),{t:B}=Q.useI18n(),S=W(null),y=k(()=>S.value?b.taxTypes.filter(function(i){return i.name.toLowerCase().indexOf(S.value.toLowerCase())!==-1}):b.taxTypes),D=k(()=>e.store[e.storeProp].taxes);function V(i,d){o("select:taxType",{...i}),d()}function q(){I.openModal({title:B("settings.tax_types.add_tax"),componentName:"TaxTypeModal",size:"sm",refreshData:i=>o("select:taxType",i)})}return(i,d)=>{const l=f("BaseIcon"),u=f("BaseInput");return r(),$("div",zt,[s(p(Ce),{class:"relative"},{default:c(({isOpen:_})=>[s(p(Te),{class:Y([_?"":"text-opacity-90","flex items-center text-sm font-medium text-primary-400 focus:outline-none focus:border-none"])},{default:c(()=>[s(l,{name:"PlusIcon",class:"w-4 h-4 font-medium text-primary-400"}),j(" "+g(i.$t("settings.tax_types.add_tax")),1)]),_:2},1032,["class"]),a("div",Nt,[s(ke,{"enter-active-class":"transition duration-200 ease-out","enter-from-class":"translate-y-1 opacity-0","enter-to-class":"translate-y-0 opacity-100","leave-active-class":"transition duration-150 ease-in","leave-from-class":"translate-y-0 opacity-100","leave-to-class":"translate-y-1 opacity-0"},{default:c(()=>[s(p(Pe),{style:{"min-width":"350px","margin-left":"62px",top:"-28px"},class:"absolute z-10 px-4 py-2 -translate-x-full sm:px-0"},{default:c(({close:h})=>[a("div",Ft,[a("div",Gt,[a("div",Yt,[s(u,{modelValue:S.value,"onUpdate:modelValue":d[0]||(d[0]=n=>S.value=n),placeholder:i.$t("general.search"),type:"text",class:"text-black"},null,8,["modelValue","placeholder"])]),y.value.length>0?(r(),$("div",Wt,[(r(!0),$(H,null,J(y.value,(n,w)=>(r(),$("div",{key:w,class:Y([{"bg-gray-100 cursor-not-allowed opacity-50 pointer-events-none":D.value.find(T=>T.tax_type_id===n.id)},"px-6 py-4 border-b border-gray-200 border-solid cursor-pointer hover:bg-gray-100 hover:cursor-pointer last:border-b-0"]),tabindex:"2",onClick:T=>V(n,h)},[a("div",Xt,[a("label",Qt,g(n.name),1),a("label",Ht,g(n.percent)+" % ",1)])],10,Rt))),128))])):(r(),$("div",Jt,[a("label",Kt,g(i.$t("general.no_tax_found")),1)]))]),p(m).hasAbilities(p(le).CREATE_TAX_TYPE)?(r(),$("button",{key:0,type:"button",class:"flex items-center justify-center w-full h-10 px-2 py-3 bg-gray-200 border-none outline-none",onClick:q},[s(l,{name:"CheckCircleIcon",class:"text-primary-400"}),a("label",Zt,g(i.$t("estimates.add_new_tax")),1)])):A("",!0)])]),_:1})]),_:1})])]),_:1})])}}},ts={class:"px-5 py-4 mt-6 bg-white border border-gray-200 border-solid rounded md:min-w-[390px] min-w-[300px] lg:mt-7"},ss={class:"flex items-center justify-between w-full"},as={key:1,class:"text-sm font-semibold leading-5 text-gray-400 uppercase"},os={key:3,class:"flex items-center justify-center m-0 text-lg text-black uppercase"},ns={key:1,class:"m-0 text-sm font-semibold leading-5 text-gray-500 uppercase"},rs={key:3,class:"flex items-center justify-center m-0 text-lg text-black uppercase"},ls={key:0,class:"flex items-center justify-between w-full mt-2"},is={key:1,class:"text-sm font-semibold leading-5 text-gray-400 uppercase"},ds={key:3,class:"flex",style:{width:"140px"},role:"group"},cs={class:"flex items-center"},us={key:1},ms={class:"flex items-center justify-between w-full pt-2 mt-5 border-t border-gray-200 border-solid"},ps={key:1,class:"m-0 text-sm font-semibold leading-5 text-gray-400 uppercase"},ys={key:3,class:"flex items-center justify-center text-lg uppercase text-primary-400"},Ns={__name:"CreateTotal",props:{store:{type:Object,default:null},storeProp:{type:String,default:""},taxPopupType:{type:String,default:""},currency:{type:[Object,String],default:""},isLoading:{type:Boolean,default:!1}},setup(t){const x=W(null),e=t;ne("$utils");const o=Z(),I=k({get:()=>e.store[e.storeProp].discount,set:i=>{e.store[e.storeProp].discount_type==="percentage"?e.store[e.storeProp].discount_val=Math.round(e.store.getSubTotal*i/100):e.store[e.storeProp].discount_val=Math.round(i*100),e.store[e.storeProp].discount=i}}),b=k({get:()=>e.store[e.storeProp].taxes,set:i=>{e.store.$patch(d=>{d[e.storeProp].taxes=i})}}),m=k(()=>{let i=[];return e.store[e.storeProp].items.forEach(d=>{d.taxes&&d.taxes.forEach(l=>{let u=i.find(_=>_.tax_type_id===l.tax_type_id);u?u.amount+=l.amount:l.tax_type_id&&i.push({tax_type_id:l.tax_type_id,amount:l.amount,percent:l.percent,name:l.name})})}),i}),B=k(()=>e.currency?e.currency:o.selectedCompanyCurrency);function S(){e.store[e.storeProp].discount_type!=="fixed"&&(e.store[e.storeProp].discount_val=Math.round(e.store[e.storeProp].discount*100),e.store[e.storeProp].discount_type="fixed")}function y(){e.store[e.storeProp].discount_type!=="percentage"&&(e.store[e.storeProp].discount_val=e.store.getSubTotal*e.store[e.storeProp].discount/100,e.store[e.storeProp].discount_type="percentage")}function D(i){let d=0;i.compound_tax&&e.store.getSubtotalWithDiscount?d=Math.round((e.store.getSubtotalWithDiscount+e.store.getTotalSimpleTax)*i.percent/100):e.store.getSubtotalWithDiscount&&i.percent&&(d=Math.round(e.store.getSubtotalWithDiscount*i.percent/100));let l={...le,id:fe.raw(),name:i.name,percent:i.percent,compound_tax:i.compound_tax,tax_type_id:i.id,amount:d};e.store.$patch(u=>{u[e.storeProp].taxes.push({...l})})}function V(i){const d=e.store[e.storeProp].taxes.find(l=>l.id===i.id);d&&Object.assign(d,{...i})}function q(i){const d=e.store[e.storeProp].taxes.findIndex(l=>l.id===i);e.store.$patch(l=>{l[e.storeProp].taxes.splice(d,1)})}return(i,d)=>{const l=f("BaseContentPlaceholdersText"),u=f("BaseContentPlaceholders"),_=f("BaseFormatMoney"),h=f("BaseInput"),n=f("BaseIcon"),w=f("BaseButton"),T=f("BaseDropdownItem"),L=f("BaseDropdown");return r(),$("div",ts,[a("div",ss,[t.isLoading?(r(),M(u,{key:0},{default:c(()=>[s(l,{lines:1,class:"w-16 h-5"})]),_:1})):(r(),$("label",as,g(i.$t("estimates.sub_total")),1)),t.isLoading?(r(),M(u,{key:2},{default:c(()=>[s(l,{lines:1,class:"w-16 h-5"})]),_:1})):(r(),$("label",os,[s(_,{amount:t.store.getSubTotal,currency:B.value},null,8,["amount","currency"])]))]),(r(!0),$(H,null,J(m.value,P=>(r(),$("div",{key:P.tax_type_id,class:"flex items-center justify-between w-full"},[t.isLoading?(r(),M(u,{key:0},{default:c(()=>[s(l,{lines:1,class:"w-16 h-5"})]),_:1})):t.store[t.storeProp].tax_per_item==="YES"?(r(),$("label",ns,g(P.name)+" - "+g(P.percent)+"% ",1)):A("",!0),t.isLoading?(r(),M(u,{key:2},{default:c(()=>[s(l,{lines:1,class:"w-16 h-5"})]),_:1})):t.store[t.storeProp].tax_per_item==="YES"?(r(),$("label",rs,[s(_,{amount:P.amount,currency:B.value},null,8,["amount","currency"])])):A("",!0)]))),128)),t.store[t.storeProp].discount_per_item==="NO"||t.store[t.storeProp].discount_per_item===null?(r(),$("div",ls,[t.isLoading?(r(),M(u,{key:0},{default:c(()=>[s(l,{lines:1,class:"w-16 h-5"})]),_:1})):(r(),$("label",is,g(i.$t("estimates.discount")),1)),t.isLoading?(r(),M(u,{key:2},{default:c(()=>[s(l,{lines:1,class:"w-24 h-8 border rounded-md"})]),_:1})):(r(),$("div",ds,[s(h,{modelValue:I.value,"onUpdate:modelValue":d[0]||(d[0]=P=>I.value=P),class:"border-r-0 focus:border-r-2 rounded-tr-sm rounded-br-sm h-[38px]"},null,8,["modelValue"]),s(L,{position:"bottom-end"},{activator:c(()=>[s(w,{class:"p-2 rounded-none rounded-tr-md rounded-br-md",type:"button",variant:"white"},{default:c(()=>[a("span",cs,[j(g(t.store[t.storeProp].discount_type=="fixed"?B.value.symbol:"%")+" ",1),s(n,{name:"ChevronDownIcon",class:"w-4 h-4 ml-1 text-gray-500"})])]),_:1})]),default:c(()=>[s(T,{onClick:S},{default:c(()=>[j(g(i.$t("general.fixed")),1)]),_:1}),s(T,{onClick:y},{default:c(()=>[j(g(i.$t("general.percentage")),1)]),_:1})]),_:1})]))])):A("",!0),t.store[t.storeProp].tax_per_item==="NO"||t.store[t.storeProp].tax_per_item===null?(r(),$("div",us,[(r(!0),$(H,null,J(b.value,(P,E)=>(r(),M(Ut,{key:P.id,index:E,tax:P,taxes:b.value,currency:t.currency,store:t.store,onRemove:q,onUpdate:V},null,8,["index","tax","taxes","currency","store"]))),128))])):A("",!0),t.store[t.storeProp].tax_per_item==="NO"||t.store[t.storeProp].tax_per_item===null?(r(),$("div",{key:2,ref_key:"taxModal",ref:x,class:"float-right pt-2 pb-4"},[s(es,{"store-prop":t.storeProp,store:t.store,type:t.taxPopupType,"onSelect:taxType":D},null,8,["store-prop","store","type"])],512)):A("",!0),a("div",ms,[t.isLoading?(r(),M(u,{key:0},{default:c(()=>[s(l,{lines:1,class:"w-16 h-5"})]),_:1})):(r(),$("label",ps,g(i.$t("estimates.total"))+" "+g(i.$t("estimates.amount"))+":",1)),t.isLoading?(r(),M(u,{key:2},{default:c(()=>[s(l,{lines:1,class:"w-16 h-5"})]),_:1})):(r(),$("label",ys,[s(_,{amount:t.store.getTotal,currency:B.value},null,8,["amount","currency"])]))])])}}},fs={class:"flex text-gray-800 font-medium text-sm mb-2"},xs=a("span",{class:"text-sm text-red-500"}," *",-1),Fs={__name:"SelectTemplateButton",props:{store:{type:Object,default:null},storeProp:{type:String,default:""},isMarkAsDefault:{type:Boolean,default:!1}},setup(t){const x=t,e=X(),{t:o}=Q.useI18n();function I(){let b="";x.storeProp=="newEstimate"?b=o("estimates.mark_as_default_estimate_template_description"):x.storeProp=="newInvoice"&&(b=o("invoices.mark_as_default_invoice_template_description")),e.openModal({title:o("general.choose_template"),componentName:"SelectTemplate",data:{templates:x.store.templates,store:x.store,storeProp:x.storeProp,isMarkAsDefault:x.isMarkAsDefault,markAsDefaultDescription:b}})}return(b,m)=>{const B=f("BaseIcon"),S=f("BaseButton");return r(),$("div",null,[a("label",fs,[j(g(b.$t("general.select_template"))+" ",1),xs]),s(S,{type:"button",class:"flex justify-center w-full text-sm lg:w-auto hover:bg-gray-200",variant:"gray",onClick:I},{right:c(y=>[s(B,{name:"PencilIcon",class:Y(y.class)},null,8,["class"])]),default:c(()=>[j(" "+g(t.store[t.storeProp].template_name),1)]),_:1})])}}},_s={class:"mb-6"},gs={class:"z-20 text-sm font-semibold leading-5 text-primary-400 float-right"},hs={class:"text-gray-800 font-medium mb-4 text-sm"},Gs={__name:"CreateNotesField",props:{store:{type:Object,default:null},storeProp:{type:String,default:""},fields:{type:Object,default:null},type:{type:String,default:null}},setup(t){const x=t;function e(o){x.store[x.storeProp].notes=""+o.notes}return(o,I)=>{const b=f("BaseCustomInput");return r(),$("div",_s,[a("div",gs,[s(Ae,{type:t.type,onSelect:e},null,8,["type"])]),a("label",hs,g(o.$t("invoices.notes")),1),s(b,{modelValue:t.store[t.storeProp].notes,"onUpdate:modelValue":I[0]||(I[0]=m=>t.store[t.storeProp].notes=m),"content-loading":t.store.isFetchingInitialSettings,fields:t.fields,class:"mt-1"},null,8,["modelValue","content-loading","fields"])])}}},vs={class:"flex justify-between w-full"},bs={class:"px-8 py-8 sm:p-6"},$s={key:0,class:"grid grid-cols-3 gap-2 p-1 overflow-x-auto"},ws=["onClick"],Is=["src","alt"],Bs=["alt","src"],Ss={key:1,class:"z-0 flex ml-3 pt-5"},Ts={class:"z-0 flex justify-end p-4 border-t border-gray-200 border-solid"},Ys={__name:"SelectTemplateModal",setup(t){const x=X(),e=oe(),o=W(""),I=k(()=>x.active&&x.componentName==="SelectTemplate"),b=k(()=>x.title);function m(){x.data.store[x.data.storeProp].template_name?o.value=x.data.store[x.data.storeProp].template_name:o.value=x.data.templates[0]}async function B(){await x.data.store.setTemplate(o.value),!x.data.store.isEdit&&x.data.isMarkAsDefault&&(x.data.storeProp=="newEstimate"?await e.updateUserSettings({settings:{default_estimate_template:o.value}}):x.data.storeProp=="newInvoice"&&await e.updateUserSettings({settings:{default_invoice_template:o.value}})),y()}function S(){return new URL("/build/assets/tick-ZCqPAN6j.png",import.meta.url)}function y(){x.closeModal(),setTimeout(()=>{x.$reset()},300)}return(D,V)=>{const q=f("BaseIcon"),i=f("BaseCheckbox"),d=f("BaseButton"),l=f("BaseModal");return r(),M(l,{show:I.value,onClose:y,onOpen:m},{header:c(()=>[a("div",vs,[j(g(b.value)+" ",1),s(q,{name:"XIcon",class:"h-6 w-6 text-gray-500 cursor-pointer",onClick:y})])]),default:c(()=>[a("div",bs,[p(x).data?(r(),$("div",$s,[(r(!0),$(H,null,J(p(x).data.templates,(u,_)=>(r(),$("div",{key:_,class:Y([{"border border-solid border-primary-500":o.value===u.name},"relative flex flex-col m-2 border border-gray-200 border-solid cursor-pointer hover:border-primary-300"]),onClick:h=>o.value=u.name},[a("img",{src:u.path,alt:u.name,class:"w-full min-h-[100px]"},null,8,Is),o.value===u.name?(r(),$("img",{key:0,alt:u.name,class:"absolute z-10 w-5 h-5 text-primary-500",style:{top:"-6px",right:"-5px"},src:S()},null,8,Bs)):A("",!0),a("span",{class:Y(["w-full p-1 bg-gray-200 text-sm text-center absolute bottom-0 left-0",{"text-primary-500 bg-primary-100":o.value===u.name,"text-gray-600":o.value!=u.name}])},g(u.name),3)],10,ws))),128))])):A("",!0),p(x).data.store.isEdit?A("",!0):(r(),$("div",Ss,[s(i,{modelValue:p(x).data.isMarkAsDefault,"onUpdate:modelValue":V[0]||(V[0]=u=>p(x).data.isMarkAsDefault=u),"set-initial-value":!1,variant:"primary",label:D.$t("general.mark_as_default"),description:p(x).data.markAsDefaultDescription},null,8,["modelValue","label","description"])]))]),a("div",Ts,[s(d,{class:"mr-3",variant:"primary-outline",onClick:y},{default:c(()=>[j(g(D.$t("general.cancel")),1)]),_:1}),s(d,{variant:"primary",onClick:V[1]||(V[1]=u=>B())},{left:c(u=>[s(q,{name:"SaveIcon",class:Y(u.class)},null,8,["class"])]),default:c(()=>[j(" "+g(D.$t("general.choose")),1)]),_:1})])]),_:1},8,["show"])}}},ks={class:"flex justify-between w-full"},Ps={class:"item-modal"},Cs={class:"px-8 py-8 sm:p-6"},Ms={class:"z-0 flex justify-end p-4 border-t border-gray-200 border-solid"},Ws={__name:"ItemModal",emits:["newItem"],setup(t,{emit:x}){const e=X(),o=ye(),I=Z(),b=K();Me(),De();const{t:m}=Q.useI18n(),B=W(!1),S=W(I.selectedCompanySettings.tax_per_item),y=k(()=>e.active&&e.componentName==="ItemModal"),D=k({get:()=>o.currentItem.price/100,set:h=>{o.currentItem.price=Math.round(h*100)}}),V=k({get:()=>o.currentItem.taxes.map(h=>{if(h)return{...h,tax_type_id:h.id,tax_name:h.name+" ("+h.percent+"%)"}}),set:h=>{o.$patch(n=>{n.currentItem.taxes=h})}}),q=k(()=>S.value==="YES"),i={name:{required:U.withMessage(m("validation.required"),G),minLength:U.withMessage(m("validation.name_min_length",{count:3}),Ve(3))},description:{maxLength:U.withMessage(m("validation.description_maxlength",{count:255}),ee(255))}},d=re(i,k(()=>o.currentItem)),l=k(()=>b.taxTypes.map(h=>({...h,tax_name:h.name+" ("+h.percent+"%)"})));xe(()=>{d.value.$reset(),o.fetchItemUnits({limit:"all"})});async function u(){if(d.value.$touch(),d.value.$invalid)return!0;let h={...o.currentItem,taxes:o.currentItem.taxes.map(w=>({tax_type_id:w.id,amount:D.value*w.percent/100,percent:w.percent,name:w.name,collective_tax:0}))};B.value=!0,await(o.isEdit?o.updateItem:o.addItem)(h).then(w=>{B.value=!1,w.data.data&&e.data&&e.refreshData(w.data.data),_()})}function _(){e.closeModal(),setTimeout(()=>{o.resetCurrentItem(),e.$reset(),d.value.$reset()},300)}return(h,n)=>{const w=f("BaseIcon"),T=f("BaseInput"),L=f("BaseInputGroup"),P=f("BaseMoney"),E=f("BaseMultiselect"),v=f("BaseTextarea"),C=f("BaseInputGrid"),O=f("BaseButton"),F=f("BaseModal");return r(),M(F,{show:y.value,onClose:_},{header:c(()=>[a("div",ks,[j(g(p(e).title)+" ",1),s(w,{name:"XIcon",class:"h-6 w-6 text-gray-500 cursor-pointer",onClick:_})])]),default:c(()=>[a("div",Ps,[a("form",{action:"",onSubmit:_e(u,["prevent"])},[a("div",Cs,[s(C,{layout:"one-column"},{default:c(()=>[s(L,{label:h.$t("items.name"),required:"",error:p(d).name.$error&&p(d).name.$errors[0].$message},{default:c(()=>[s(T,{modelValue:p(o).currentItem.name,"onUpdate:modelValue":n[0]||(n[0]=z=>p(o).currentItem.name=z),type:"text",invalid:p(d).name.$error,onInput:n[1]||(n[1]=z=>p(d).name.$touch())},null,8,["modelValue","invalid"])]),_:1},8,["label","error"]),s(L,{label:h.$t("items.price")},{default:c(()=>[(r(),M(P,{key:p(I).selectedCompanyCurrency,modelValue:D.value,"onUpdate:modelValue":n[2]||(n[2]=z=>D.value=z),currency:p(I).selectedCompanyCurrency,class:"relative w-full focus:border focus:border-solid focus:border-primary"},null,8,["modelValue","currency"]))]),_:1},8,["label"]),s(L,{label:h.$t("items.unit")},{default:c(()=>[s(E,{modelValue:p(o).currentItem.unit_id,"onUpdate:modelValue":n[3]||(n[3]=z=>p(o).currentItem.unit_id=z),label:"name",options:p(o).itemUnits,"value-prop":"id","can-deselect":!1,"can-clear":!1,placeholder:h.$t("items.select_a_unit"),searchable:"","track-by":"name"},null,8,["modelValue","options","placeholder"])]),_:1},8,["label"]),q.value?(r(),M(L,{key:0,label:h.$t("items.taxes")},{default:c(()=>[s(E,{modelValue:V.value,"onUpdate:modelValue":n[4]||(n[4]=z=>V.value=z),options:l.value,mode:"tags",label:"tax_name","value-prop":"id",class:"w-full","can-deselect":!1,"can-clear":!1,searchable:"","track-by":"tax_name",object:""},null,8,["modelValue","options"])]),_:1},8,["label"])):A("",!0),s(L,{label:h.$t("items.description"),error:p(d).description.$error&&p(d).description.$errors[0].$message},{default:c(()=>[s(v,{modelValue:p(o).currentItem.description,"onUpdate:modelValue":n[5]||(n[5]=z=>p(o).currentItem.description=z),rows:"4",cols:"50",invalid:p(d).description.$error,onInput:n[6]||(n[6]=z=>p(d).description.$touch())},null,8,["modelValue","invalid"])]),_:1},8,["label","error"])]),_:1})]),a("div",Ms,[s(O,{class:"mr-3",variant:"primary-outline",type:"button",onClick:_},{default:c(()=>[j(g(h.$t("general.cancel")),1)]),_:1}),s(O,{loading:B.value,disabled:B.value,variant:"primary",type:"submit"},{left:c(z=>[s(w,{name:"SaveIcon",class:Y(z.class)},null,8,["class"])]),default:c(()=>[j(" "+g(p(o).isEdit?h.$t("general.update"):h.$t("general.save")),1)]),_:1},8,["loading","disabled"])])],32)])]),_:1},8,["show"])}}},Ds={class:"flex justify-between w-full"},Vs={class:"flex flex-col"},js={class:"text-sm text-gray-500 mt-1"},qs={class:"p-4 sm:p-6"},Es={class:"z-0 flex justify-end p-4 border-t border-gray-200 border-solid"},As={__name:"TaxationAddressModal",emits:["addTax"],setup(t,{emit:x}){const e=X();je();const o=pe({state:"",city:"",address_street_1:"",zip:""}),I=W(!1),b=K(),{t:m}=Q.useI18n(),B=k(()=>e.active&&e.componentName==="TaxationAddressModal"),S=k(()=>({state:{required:U.withMessage(m("validation.required"),G)},city:{required:U.withMessage(m("validation.required"),G)},address_street_1:{required:U.withMessage(m("validation.required"),G)},zip:{required:U.withMessage(m("validation.required"),G)}})),y=re(S,k(()=>o));async function D(){if(y.value.$touch(),y.value.$invalid)return!0;let d={address:o};e.id&&(d.customer_id=e.id),o.address_street_1=o.address_street_1.replace(/(\r\n|\n|\r)/gm,""),I.value=!0,await b.fetchSalesTax(d).then(l=>{I.value=!1,V("addTax",l.data.data),i()}).catch(l=>{I.value=!1})}const V=x;function q(){var d,l,u,_;o.state=(d=e==null?void 0:e.data)==null?void 0:d.state,o.city=(l=e==null?void 0:e.data)==null?void 0:l.city,o.address_street_1=(u=e==null?void 0:e.data)==null?void 0:u.address_street_1,o.zip=(_=e==null?void 0:e.data)==null?void 0:_.zip}function i(){e.closeModal()}return(d,l)=>{const u=f("BaseIcon"),_=f("BaseInput"),h=f("BaseInputGroup"),n=f("BaseTextarea"),w=f("BaseInputGrid"),T=f("BaseButton"),L=f("BaseModal");return r(),M(L,{show:B.value,onClose:i,onOpen:q},{header:c(()=>[a("div",Ds,[a("div",Vs,[j(g(p(e).title)+" ",1),a("p",js,g(p(e).content),1)]),s(u,{name:"XIcon",class:"h-6 w-6 text-gray-500 cursor-pointer",onClick:i})])]),default:c(()=>[a("form",{onSubmit:_e(D,["prevent"])},[a("div",qs,[s(w,{layout:"one-column"},{default:c(()=>[s(h,{required:"",error:p(y).state.$error&&p(y).state.$errors[0].$message,label:d.$t("customers.state")},{default:c(()=>[s(_,{modelValue:o.state,"onUpdate:modelValue":l[0]||(l[0]=P=>o.state=P),type:"text",name:"shippingState",class:"mt-1 md:mt-0",invalid:p(y).state.$error,onInput:l[1]||(l[1]=P=>p(y).state.$touch()),placeholder:d.$t("settings.taxations.state_placeholder")},null,8,["modelValue","invalid","placeholder"])]),_:1},8,["error","label"]),s(h,{required:"",error:p(y).city.$error&&p(y).city.$errors[0].$message,label:d.$t("customers.city")},{default:c(()=>[s(_,{modelValue:o.city,"onUpdate:modelValue":l[2]||(l[2]=P=>o.city=P),type:"text",name:"shippingCity",class:"mt-1 md:mt-0",invalid:p(y).city.$error,onInput:l[3]||(l[3]=P=>p(y).city.$touch()),placeholder:d.$t("settings.taxations.city_placeholder")},null,8,["modelValue","invalid","placeholder"])]),_:1},8,["error","label"]),s(h,{required:"",error:p(y).address_street_1.$error&&p(y).address_street_1.$errors[0].$message,label:d.$t("customers.address")},{default:c(()=>[s(n,{modelValue:o.address_street_1,"onUpdate:modelValue":l[4]||(l[4]=P=>o.address_street_1=P),rows:"2",cols:"50",class:"mt-1 md:mt-0",invalid:p(y).address_street_1.$error,onInput:l[5]||(l[5]=P=>p(y).address_street_1.$touch()),placeholder:d.$t("settings.taxations.address_placeholder")},null,8,["modelValue","invalid","placeholder"])]),_:1},8,["error","label"]),s(h,{required:"",error:p(y).zip.$error&&p(y).zip.$errors[0].$message,label:d.$t("customers.zip_code")},{default:c(()=>[s(_,{modelValue:o.zip,"onUpdate:modelValue":l[6]||(l[6]=P=>o.zip=P),invalid:p(y).zip.$error,onInput:l[7]||(l[7]=P=>p(y).zip.$touch()),type:"text",class:"mt-1 md:mt-0",placeholder:d.$t("settings.taxations.zip_placeholder")},null,8,["modelValue","invalid","placeholder"])]),_:1},8,["error","label"])]),_:1})]),a("div",Es,[s(T,{class:"mr-3 text-sm",type:"button",variant:"primary-outline",onClick:i},{default:c(()=>[j(g(d.$t("general.cancel")),1)]),_:1}),s(T,{loading:I.value,variant:"primary",type:"submit"},{left:c(P=>[I.value?A("",!0):(r(),M(u,{key:0,name:"SaveIcon",class:Y(P.class)},null,8,["class"]))]),default:c(()=>[j(" "+g(d.$t("general.save")),1)]),_:1},8,["loading"])])],32)]),_:1},8,["show"])}}},te="Sales Tax",se="MODULE",Rs={__name:"SalesTax",props:{isEdit:{type:Boolean,default:null},type:{type:String,default:null},customer:{type:[Object],default:null},store:{type:Object,default:null},storeProp:{type:String,default:null}},setup(t){const x=X(),e=Z(),o=K(),{t:I}=Q.useI18n(),b=W(!1),m=t,B=k(()=>m.isEdit?m.store[m.storeProp].sales_tax_address_type==="billing":e.selectedCompanySettings.sales_tax_address_type==="billing"),S=k(()=>e.selectedCompanySettings.sales_tax_us_enabled==="YES"),y=k(()=>m.isEdit?m.store[m.storeProp].sales_tax_type==="customer_level":e.selectedCompanySettings.sales_tax_type==="customer_level"),D=k(()=>m.isEdit?m.store[m.storeProp].sales_tax_type==="company_level":e.selectedCompanySettings.sales_tax_type==="company_level"),V=k(()=>{if(y.value&&q.value){let n=B.value?m.customer.billing:m.customer.shipping;return{address:R.pick(n,["address_street_1","city","state","zip"]),customer_id:m.customer.id}}else if(D.value&&q.value)return{address:R.pick(address,["address_street_1","city","state","zip"])}}),q=k(()=>{var n,w;if(y.value){let T=B.value?(n=m.customer)==null?void 0:n.billing:(w=m.customer)==null?void 0:w.shipping;return i(T)}else if(D.value)return i(e.selectedCompany.address);return!1});ae(()=>m.customer,(n,w)=>{if(n&&w&&y.value){d(n,w);return}!q.value&&y.value&&n?setTimeout(()=>{l()},500):y.value&&n?u():y.value&&!n&&h()}),xe(()=>{D.value&&(q.value?u():l())});function i(n){return n?n.address_street_1&&n.city&&n.state&&n.zip:!1}function d(n,w){const T=B.value?n.billing:n.shipping,L=B.value?w.billing:w.shipping,P=R.pick(T,["address_street_1","city","state","zip"]),E=R.pick(L,["address_street_1","city","state","zip"]);R.isEqual(P,E)||u()}function l(){var T,L;if(!S.value)return;let n=null,w="";y.value?B.value?(n=(T=m.customer)==null?void 0:T.billing,w=I("settings.taxations.add_billing_address")):(n=(L=m.customer)==null?void 0:L.shipping,w=I("settings.taxations.add_shipping_address")):(n=e.selectedCompany.address,w=I("settings.taxations.add_company_address")),x.openModal({title:w,content:I("settings.taxations.modal_description"),componentName:"TaxationAddressModal",data:n,id:y.value?m.customer.id:""})}async function u(){S.value&&(b.value=!0,await o.fetchSalesTax(V.value).then(n=>{_(n.data.data),b.value=!1}).catch(n=>{n.response.data.error&&setTimeout(()=>{l()},500),b.value=!1}))}function _(n){n.tax_type_id=n.id;const w=m.store[m.storeProp].taxes.findIndex(T=>T.name===te&&T.type===se);w>-1?Object.assign(m.store[m.storeProp].taxes[w],n):m.store[m.storeProp].taxes.push(n)}function h(){const n=m.store[m.storeProp].taxes.findIndex(T=>T.name===te&&T.type===se);n>-1&&m.store[m.storeProp].taxes.splice(n,1);let w=o.taxTypes.findIndex(T=>T.name===te&&T.type===se);w>-1&&o.taxTypes.splice(w,1)}return(n,w)=>(r(),M(As,{onAddTax:_}))}};export{Ys as _,Ws as a,Rs as b,zs as c,Gs as d,Fs as e,Ns as f}; diff --git a/public/build/assets/SelectNotePopup-5BlBNAE0.js b/public/build/assets/SelectNotePopup-iZwUGlz-.js similarity index 70% rename from public/build/assets/SelectNotePopup-5BlBNAE0.js rename to public/build/assets/SelectNotePopup-iZwUGlz-.js index b3573534..b480afde 100644 --- a/public/build/assets/SelectNotePopup-5BlBNAE0.js +++ b/public/build/assets/SelectNotePopup-iZwUGlz-.js @@ -1 +1 @@ -import{f as v,v as j,F as E,M as T,k as A,r as h,o as s,c as n,a as o,b as t,w as c,l as a,Q as b,m as L,aL as O,J as F,p as D,t as u,K as x,T as G,aM as P,N as g,O as U,aN as J}from"./main-B9dpPbRR.js";import{u as K,_ as Q}from"./NoteModal-h_90cxoW.js";const W={class:"w-full"},q={class:"overflow-hidden rounded-md shadow-lg ring-1 ring-black ring-opacity-5"},H={class:"relative grid bg-white"},R={class:"relative p-4"},X={key:0,class:"relative flex flex-col overflow-auto list max-h-36"},Y=["onClick"],Z={class:"flex justify-between px-2"},ee={class:"m-0 text-base font-semibold leading-tight text-gray-700 cursor-pointer"},te={key:1,class:"flex justify-center p-5 text-gray-400"},se={class:"text-base text-gray-500"},oe={class:"m-0 ml-3 text-sm leading-none cursor-pointer font-base text-primary-400"},re={__name:"SelectNotePopup",props:{type:{type:String,default:null}},emits:["select"],setup(N,{emit:k}){const d=N,w=k;v(null);const{t:C}=j.useI18n(),l=v(null),B=E(),r=K(),m=T(),f=A(()=>l.value?r.notes.filter(function(e){return e.name.toLowerCase().indexOf(l.value.toLowerCase())!==-1}):r.notes);async function I(){await r.fetchNotes({filter:{},orderByField:"",orderBy:"",type:d.type?d.type:""})}function S(e,i){w("select",{...r.notes[e]}),l.value=null,i()}function V(){B.openModal({title:C("settings.customization.notes.add_note"),componentName:"NoteModal",size:"lg",data:d.type})}return(e,i)=>{const y=h("BaseIcon"),M=h("BaseInput");return s(),n(g,null,[o(Q),t("div",W,[o(a(J),null,{default:c(({isOpen:z})=>[a(m).hasAbilities(a(b).VIEW_NOTE)?(s(),L(a(O),{key:0,class:F([z?"":"text-opacity-90","flex items-center z-10 font-medium text-primary-400 focus:outline-none focus:border-none"]),onClick:I},{default:c(()=>[o(y,{name:"PlusIcon",class:"w-4 h-4 font-medium text-primary-400"}),D(" "+u(e.$t("general.insert_note")),1)]),_:2},1032,["class"])):x("",!0),o(G,{"enter-active-class":"transition duration-200 ease-out","enter-from-class":"translate-y-1 opacity-0","enter-to-class":"translate-y-0 opacity-100","leave-active-class":"transition duration-150 ease-in","leave-from-class":"translate-y-0 opacity-100","leave-to-class":"translate-y-1 opacity-0"},{default:c(()=>[o(a(P),{class:"absolute z-20 px-4 mt-3 sm:px-0 w-screen max-w-full left-0 top-3"},{default:c(({close:$})=>[t("div",q,[t("div",H,[t("div",R,[o(M,{modelValue:l.value,"onUpdate:modelValue":i[0]||(i[0]=p=>l.value=p),placeholder:e.$t("general.search"),type:"text",class:"text-black"},null,8,["modelValue","placeholder"])]),f.value.length>0?(s(),n("div",X,[(s(!0),n(g,null,U(f.value,(p,_)=>(s(),n("div",{key:_,tabindex:"2",class:"px-6 py-4 border-b border-gray-200 border-solid cursor-pointer hover:bg-gray-100 hover:cursor-pointer last:border-b-0",onClick:ae=>S(_,$)},[t("div",Z,[t("label",ee,u(p.name),1)])],8,Y))),128))])):(s(),n("div",te,[t("label",se,u(e.$t("general.no_note_found")),1)]))]),a(m).hasAbilities(a(b).MANAGE_NOTE)?(s(),n("button",{key:0,type:"button",class:"h-10 flex items-center justify-center w-full px-2 py-3 bg-gray-200 border-none outline-none",onClick:V},[o(y,{name:"CheckCircleIcon",class:"text-primary-400"}),t("label",oe,u(e.$t("settings.customization.notes.add_new_note")),1)])):x("",!0)])]),_:1})]),_:1})]),_:1})])],64)}}};export{re as _}; +import{f as v,v as j,F as E,M as O,k as T,r as h,o as s,c as n,a as o,b as t,w as c,l as a,Q as b,m as A,aO as F,J as L,p as P,t as u,K as x,T as D,aP as G,N as g,O as Q,aQ as U}from"./main-pPEsZPea.js";import{u as J,_ as K}from"./NoteModal-YX0uc_EM.js";const W={class:"w-full"},q={class:"overflow-hidden rounded-md shadow-lg ring-1 ring-black ring-opacity-5"},H={class:"relative grid bg-white"},R={class:"relative p-4"},X={key:0,class:"relative flex flex-col overflow-auto list max-h-36"},Y=["onClick"],Z={class:"flex justify-between px-2"},ee={class:"m-0 text-base font-semibold leading-tight text-gray-700 cursor-pointer"},te={key:1,class:"flex justify-center p-5 text-gray-400"},se={class:"text-base text-gray-500"},oe={class:"m-0 ml-3 text-sm leading-none cursor-pointer font-base text-primary-400"},re={__name:"SelectNotePopup",props:{type:{type:String,default:null}},emits:["select"],setup(k,{emit:w}){const d=k,N=w;v(null);const{t:C}=j.useI18n(),l=v(null),B=E(),r=J(),m=O(),f=T(()=>l.value?r.notes.filter(function(e){return e.name.toLowerCase().indexOf(l.value.toLowerCase())!==-1}):r.notes);async function I(){await r.fetchNotes({filter:{},orderByField:"",orderBy:"",type:d.type?d.type:""})}function S(e,i){N("select",{...r.notes[e]}),l.value=null,i()}function V(){B.openModal({title:C("settings.customization.notes.add_note"),componentName:"NoteModal",size:"lg",data:d.type})}return(e,i)=>{const y=h("BaseIcon"),z=h("BaseInput");return s(),n(g,null,[o(K),t("div",W,[o(a(U),null,{default:c(({isOpen:M})=>[a(m).hasAbilities(a(b).VIEW_NOTE)?(s(),A(a(F),{key:0,class:L([M?"":"text-opacity-90","flex items-center z-10 font-medium text-primary-400 focus:outline-none focus:border-none"]),onClick:I},{default:c(()=>[o(y,{name:"PlusIcon",class:"w-4 h-4 font-medium text-primary-400"}),P(" "+u(e.$t("general.insert_note")),1)]),_:2},1032,["class"])):x("",!0),o(D,{"enter-active-class":"transition duration-200 ease-out","enter-from-class":"translate-y-1 opacity-0","enter-to-class":"translate-y-0 opacity-100","leave-active-class":"transition duration-150 ease-in","leave-from-class":"translate-y-0 opacity-100","leave-to-class":"translate-y-1 opacity-0"},{default:c(()=>[o(a(G),{class:"absolute z-20 px-4 mt-3 sm:px-0 w-screen max-w-full left-0 top-3"},{default:c(({close:$})=>[t("div",q,[t("div",H,[t("div",R,[o(z,{modelValue:l.value,"onUpdate:modelValue":i[0]||(i[0]=p=>l.value=p),placeholder:e.$t("general.search"),type:"text",class:"text-black"},null,8,["modelValue","placeholder"])]),f.value.length>0?(s(),n("div",X,[(s(!0),n(g,null,Q(f.value,(p,_)=>(s(),n("div",{key:_,tabindex:"2",class:"px-6 py-4 border-b border-gray-200 border-solid cursor-pointer hover:bg-gray-100 hover:cursor-pointer last:border-b-0",onClick:ae=>S(_,$)},[t("div",Z,[t("label",ee,u(p.name),1)])],8,Y))),128))])):(s(),n("div",te,[t("label",se,u(e.$t("general.no_note_found")),1)]))]),a(m).hasAbilities(a(b).MANAGE_NOTE)?(s(),n("button",{key:0,type:"button",class:"h-10 flex items-center justify-center w-full px-2 py-3 bg-gray-200 border-none outline-none",onClick:V},[o(y,{name:"CheckCircleIcon",class:"text-primary-400"}),t("label",oe,u(e.$t("settings.customization.notes.add_new_note")),1)])):x("",!0)])]),_:1})]),_:1})]),_:1})])],64)}}};export{re as _}; diff --git a/public/build/assets/SendEstimateModal-rZxe1u30.js b/public/build/assets/SendEstimateModal-bpe9IwOn.js similarity index 97% rename from public/build/assets/SendEstimateModal-rZxe1u30.js rename to public/build/assets/SendEstimateModal-bpe9IwOn.js index 18192f40..0d2434a0 100644 --- a/public/build/assets/SendEstimateModal-rZxe1u30.js +++ b/public/build/assets/SendEstimateModal-bpe9IwOn.js @@ -1 +1 @@ -import{F as H,as as K,u as X,E as J,v as Q,f as h,H as W,k as M,g as p,h as B,i as E,j as Y,r as d,o as _,m as V,w as l,b as v,p as f,t as $,l as e,a,c as N,K as x}from"./main-B9dpPbRR.js";import{u as Z}from"./mail-driver-L7_iQECX.js";const ee={class:"flex justify-between w-full"},te={key:0,action:""},ae={class:"px-8 py-8 sm:p-6"},oe={class:"z-0 flex justify-end p-4 border-t border-gray-200 border-solid"},se={key:1},re={class:"my-6 mx-4 border border-gray-200 relative"},le=["src"],ne={class:"z-0 flex justify-end p-4 border-t border-gray-200 border-solid"},me={__name:"SendEstimateModal",emits:["update"],setup(ie,{emit:U}){const m=H(),j=K(),P=X(),k=J();Z();const{t:u}=Q.useI18n(),n=h(!1),I=h(""),b=h(!1),D=h(["customer","customerCustom","estimate","estimateCustom","company"]);let o=W({id:null,from:null,to:null,subject:"New Estimate",body:null});const F=U,G=M(()=>m.active&&m.componentName==="SendEstimateModal"),S=M(()=>m.data),L={from:{required:p.withMessage(u("validation.required"),B),email:p.withMessage(u("validation.email_incorrect"),E)},to:{required:p.withMessage(u("validation.required"),B),email:p.withMessage(u("validation.email_incorrect"),E)},subject:{required:p.withMessage(u("validation.required"),B)},body:{required:p.withMessage(u("validation.required"),B)}},s=Y(L,M(()=>o));function R(){b.value=!1}async function z(){let r=await k.fetchBasicMailConfig();o.id=m.id,r.data&&(o.from=r.data.from_mail),S.value&&(o.to=S.value.customer.email),o.body=k.selectedCompanySettings.estimate_mail_body}async function q(){if(s.value.$touch(),s.value.$invalid)return!0;try{if(n.value=!0,!b.value){const c=await j.previewEstimate(o);n.value=!1,b.value=!0;var r=new Blob([c.data],{type:"text/html"});I.value=URL.createObjectURL(r);return}const t=await j.sendEstimate(o);if(n.value=!1,t.data.success)return F("update"),y(),!0}catch(t){console.error(t),n.value=!1,P.showNotification({type:"error",message:u("estimates.something_went_wrong")})}}function y(){m.closeModal(),setTimeout(()=>{s.value.$reset(),b.value=!1,I.value=null},300)}return(r,t)=>{const c=d("BaseIcon"),C=d("BaseInput"),w=d("BaseInputGroup"),A=d("BaseCustomInput"),O=d("BaseInputGrid"),g=d("BaseButton"),T=d("BaseModal");return _(),V(T,{show:G.value,onClose:y,onOpen:z},{header:l(()=>[v("div",ee,[f($(e(m).title)+" ",1),a(c,{name:"XIcon",class:"h-6 w-6 text-gray-500 cursor-pointer",onClick:y})])]),default:l(()=>[b.value?(_(),N("div",se,[v("div",re,[a(g,{class:"absolute top-4 right-4",disabled:n.value,variant:"primary-outline",onClick:R},{default:l(()=>[a(c,{name:"PencilIcon",class:"h-5 mr-2"}),f(" Edit ")]),_:1},8,["disabled"]),v("iframe",{src:I.value,frameborder:"0",class:"w-full",style:{"min-height":"500px"}},null,8,le)]),v("div",ne,[a(g,{class:"mr-3",variant:"primary-outline",type:"button",onClick:y},{default:l(()=>[f($(r.$t("general.cancel")),1)]),_:1}),a(g,{loading:n.value,disabled:n.value,variant:"primary",type:"button",onClick:q},{default:l(()=>[n.value?x("",!0):(_(),V(c,{key:0,name:"PaperAirplaneIcon",class:"mr-2"})),f(" "+$(r.$t("general.send")),1)]),_:1},8,["loading","disabled"])])])):(_(),N("form",te,[v("div",ae,[a(O,{layout:"one-column"},{default:l(()=>[a(w,{label:r.$t("general.from"),required:"",error:e(s).from.$error&&e(s).from.$errors[0].$message},{default:l(()=>[a(C,{modelValue:e(o).from,"onUpdate:modelValue":t[0]||(t[0]=i=>e(o).from=i),type:"text",invalid:e(s).from.$error,onInput:t[1]||(t[1]=i=>e(s).from.$touch())},null,8,["modelValue","invalid"])]),_:1},8,["label","error"]),a(w,{label:r.$t("general.to"),required:"",error:e(s).to.$error&&e(s).to.$errors[0].$message},{default:l(()=>[a(C,{modelValue:e(o).to,"onUpdate:modelValue":t[2]||(t[2]=i=>e(o).to=i),type:"text",invalid:e(s).to.$error,onInput:t[3]||(t[3]=i=>e(s).to.$touch())},null,8,["modelValue","invalid"])]),_:1},8,["label","error"]),a(w,{label:r.$t("general.subject"),required:"",error:e(s).subject.$error&&e(s).subject.$errors[0].$message},{default:l(()=>[a(C,{modelValue:e(o).subject,"onUpdate:modelValue":t[4]||(t[4]=i=>e(o).subject=i),type:"text",invalid:e(s).subject.$error,onInput:t[5]||(t[5]=i=>e(s).subject.$touch())},null,8,["modelValue","invalid"])]),_:1},8,["label","error"]),a(w,{label:r.$t("general.body"),required:""},{default:l(()=>[a(A,{modelValue:e(o).body,"onUpdate:modelValue":t[6]||(t[6]=i=>e(o).body=i),fields:D.value},null,8,["modelValue","fields"])]),_:1},8,["label"])]),_:1})]),v("div",oe,[a(g,{class:"mr-3",variant:"primary-outline",type:"button",onClick:y},{default:l(()=>[f($(r.$t("general.cancel")),1)]),_:1}),a(g,{loading:n.value,disabled:n.value,variant:"primary",type:"button",class:"mr-3",onClick:q},{default:l(()=>[n.value?x("",!0):(_(),V(c,{key:0,name:"PhotographIcon",class:"h-5 mr-2"})),f(" "+$(r.$t("general.preview")),1)]),_:1},8,["loading","disabled"])])]))]),_:1},8,["show"])}}};export{me as _}; +import{F as H,as as K,u as X,E as J,v as Q,f as h,H as W,k as M,g as p,h as B,i as E,j as Y,r as d,o as _,m as V,w as l,b as v,p as f,t as $,l as e,a,c as N,K as x}from"./main-pPEsZPea.js";import{u as Z}from"./mail-driver-SNHZXvKB.js";const ee={class:"flex justify-between w-full"},te={key:0,action:""},ae={class:"px-8 py-8 sm:p-6"},oe={class:"z-0 flex justify-end p-4 border-t border-gray-200 border-solid"},se={key:1},re={class:"my-6 mx-4 border border-gray-200 relative"},le=["src"],ne={class:"z-0 flex justify-end p-4 border-t border-gray-200 border-solid"},me={__name:"SendEstimateModal",emits:["update"],setup(ie,{emit:U}){const m=H(),j=K(),P=X(),k=J();Z();const{t:u}=Q.useI18n(),n=h(!1),I=h(""),b=h(!1),D=h(["customer","customerCustom","estimate","estimateCustom","company"]);let o=W({id:null,from:null,to:null,subject:"New Estimate",body:null});const F=U,G=M(()=>m.active&&m.componentName==="SendEstimateModal"),S=M(()=>m.data),L={from:{required:p.withMessage(u("validation.required"),B),email:p.withMessage(u("validation.email_incorrect"),E)},to:{required:p.withMessage(u("validation.required"),B),email:p.withMessage(u("validation.email_incorrect"),E)},subject:{required:p.withMessage(u("validation.required"),B)},body:{required:p.withMessage(u("validation.required"),B)}},s=Y(L,M(()=>o));function R(){b.value=!1}async function z(){let r=await k.fetchBasicMailConfig();o.id=m.id,r.data&&(o.from=r.data.from_mail),S.value&&(o.to=S.value.customer.email),o.body=k.selectedCompanySettings.estimate_mail_body}async function q(){if(s.value.$touch(),s.value.$invalid)return!0;try{if(n.value=!0,!b.value){const c=await j.previewEstimate(o);n.value=!1,b.value=!0;var r=new Blob([c.data],{type:"text/html"});I.value=URL.createObjectURL(r);return}const t=await j.sendEstimate(o);if(n.value=!1,t.data.success)return F("update"),y(),!0}catch(t){console.error(t),n.value=!1,P.showNotification({type:"error",message:u("estimates.something_went_wrong")})}}function y(){m.closeModal(),setTimeout(()=>{s.value.$reset(),b.value=!1,I.value=null},300)}return(r,t)=>{const c=d("BaseIcon"),C=d("BaseInput"),w=d("BaseInputGroup"),A=d("BaseCustomInput"),O=d("BaseInputGrid"),g=d("BaseButton"),T=d("BaseModal");return _(),V(T,{show:G.value,onClose:y,onOpen:z},{header:l(()=>[v("div",ee,[f($(e(m).title)+" ",1),a(c,{name:"XIcon",class:"h-6 w-6 text-gray-500 cursor-pointer",onClick:y})])]),default:l(()=>[b.value?(_(),N("div",se,[v("div",re,[a(g,{class:"absolute top-4 right-4",disabled:n.value,variant:"primary-outline",onClick:R},{default:l(()=>[a(c,{name:"PencilIcon",class:"h-5 mr-2"}),f(" Edit ")]),_:1},8,["disabled"]),v("iframe",{src:I.value,frameborder:"0",class:"w-full",style:{"min-height":"500px"}},null,8,le)]),v("div",ne,[a(g,{class:"mr-3",variant:"primary-outline",type:"button",onClick:y},{default:l(()=>[f($(r.$t("general.cancel")),1)]),_:1}),a(g,{loading:n.value,disabled:n.value,variant:"primary",type:"button",onClick:q},{default:l(()=>[n.value?x("",!0):(_(),V(c,{key:0,name:"PaperAirplaneIcon",class:"mr-2"})),f(" "+$(r.$t("general.send")),1)]),_:1},8,["loading","disabled"])])])):(_(),N("form",te,[v("div",ae,[a(O,{layout:"one-column"},{default:l(()=>[a(w,{label:r.$t("general.from"),required:"",error:e(s).from.$error&&e(s).from.$errors[0].$message},{default:l(()=>[a(C,{modelValue:e(o).from,"onUpdate:modelValue":t[0]||(t[0]=i=>e(o).from=i),type:"text",invalid:e(s).from.$error,onInput:t[1]||(t[1]=i=>e(s).from.$touch())},null,8,["modelValue","invalid"])]),_:1},8,["label","error"]),a(w,{label:r.$t("general.to"),required:"",error:e(s).to.$error&&e(s).to.$errors[0].$message},{default:l(()=>[a(C,{modelValue:e(o).to,"onUpdate:modelValue":t[2]||(t[2]=i=>e(o).to=i),type:"text",invalid:e(s).to.$error,onInput:t[3]||(t[3]=i=>e(s).to.$touch())},null,8,["modelValue","invalid"])]),_:1},8,["label","error"]),a(w,{label:r.$t("general.subject"),required:"",error:e(s).subject.$error&&e(s).subject.$errors[0].$message},{default:l(()=>[a(C,{modelValue:e(o).subject,"onUpdate:modelValue":t[4]||(t[4]=i=>e(o).subject=i),type:"text",invalid:e(s).subject.$error,onInput:t[5]||(t[5]=i=>e(s).subject.$touch())},null,8,["modelValue","invalid"])]),_:1},8,["label","error"]),a(w,{label:r.$t("general.body"),required:""},{default:l(()=>[a(A,{modelValue:e(o).body,"onUpdate:modelValue":t[6]||(t[6]=i=>e(o).body=i),fields:D.value},null,8,["modelValue","fields"])]),_:1},8,["label"])]),_:1})]),v("div",oe,[a(g,{class:"mr-3",variant:"primary-outline",type:"button",onClick:y},{default:l(()=>[f($(r.$t("general.cancel")),1)]),_:1}),a(g,{loading:n.value,disabled:n.value,variant:"primary",type:"button",class:"mr-3",onClick:q},{default:l(()=>[n.value?x("",!0):(_(),V(c,{key:0,name:"PhotographIcon",class:"h-5 mr-2"})),f(" "+$(r.$t("general.preview")),1)]),_:1},8,["loading","disabled"])])]))]),_:1},8,["show"])}}};export{me as _}; diff --git a/public/build/assets/SendInvoiceModal-gHfWsGqG.js b/public/build/assets/SendInvoiceModal-XAwfWejZ.js similarity index 97% rename from public/build/assets/SendInvoiceModal-gHfWsGqG.js rename to public/build/assets/SendInvoiceModal-XAwfWejZ.js index f8c91513..46123882 100644 --- a/public/build/assets/SendInvoiceModal-gHfWsGqG.js +++ b/public/build/assets/SendInvoiceModal-XAwfWejZ.js @@ -1 +1 @@ -import{F as J,E as K,u as X,aq as Q,v as W,f as I,H as Y,k as B,g as v,h,i as N,j as Z,r as c,o as _,m as V,w as n,b as p,p as f,t as $,a,c as x,l as e,J as ee,K as U}from"./main-B9dpPbRR.js";import{u as oe}from"./mail-driver-L7_iQECX.js";const te={class:"flex justify-between w-full"},ae={key:0,action:""},re={class:"px-8 py-8 sm:p-6"},se={class:"z-0 flex justify-end p-4 border-t border-gray-200 border-solid"},le={key:1},ne={class:"my-6 mx-4 border border-gray-200 relative"},ie=["src"],ue={class:"z-0 flex justify-end p-4 border-t border-gray-200 border-solid"},ve={__name:"SendInvoiceModal",emits:["update"],setup(de,{emit:P}){const u=J(),j=K(),D=X(),k=Q();oe();const{t:d}=W.useI18n();let i=I(!1);const C=I(""),b=I(!1),F=P,G=I(["customer","customerCustom","invoice","invoiceCustom","company"]),r=Y({id:null,from:null,to:null,subject:"New Invoice",body:null}),z=B(()=>u.active&&u.componentName==="SendInvoiceModal"),E=B(()=>u.title),q=B(()=>u.data),L={from:{required:v.withMessage(d("validation.required"),h),email:v.withMessage(d("validation.email_incorrect"),N)},to:{required:v.withMessage(d("validation.required"),h),email:v.withMessage(d("validation.email_incorrect"),N)},subject:{required:v.withMessage(d("validation.required"),h)},body:{required:v.withMessage(d("validation.required"),h)}},t=Z(L,B(()=>r));function R(){b.value=!1}async function T(){let s=await j.fetchBasicMailConfig();r.id=u.id,s.data&&(r.from=s.data.from_mail),q.value&&(r.to=q.value.customer.email),r.body=j.selectedCompanySettings.invoice_mail_body}async function S(){if(t.value.$touch(),t.value.$invalid)return!0;try{if(i.value=!0,!b.value){const m=await k.previewInvoice(r);i.value=!1,b.value=!0;var s=new Blob([m.data],{type:"text/html"});C.value=URL.createObjectURL(s);return}const o=await k.sendInvoice(r);if(i.value=!1,o.data.success)return F("update",u.id),y(),!0}catch(o){console.error(o),i.value=!1,D.showNotification({type:"error",message:d("invoices.something_went_wrong")})}}function y(){u.closeModal(),setTimeout(()=>{t.value.$reset(),b.value=!1,C.value=null},300)}return(s,o)=>{const m=c("BaseIcon"),M=c("BaseInput"),w=c("BaseInputGroup"),A=c("BaseCustomInput"),O=c("BaseInputGrid"),g=c("BaseButton"),H=c("BaseModal");return _(),V(H,{show:z.value,onClose:y,onOpen:T},{header:n(()=>[p("div",te,[f($(E.value)+" ",1),a(m,{name:"XIcon",class:"w-6 h-6 text-gray-500 cursor-pointer",onClick:y})])]),default:n(()=>[b.value?(_(),x("div",le,[p("div",ne,[a(g,{class:"absolute top-4 right-4",disabled:e(i),variant:"primary-outline",onClick:R},{default:n(()=>[a(m,{name:"PencilIcon",class:"h-5 mr-2"}),f(" Edit ")]),_:1},8,["disabled"]),p("iframe",{src:C.value,frameborder:"0",class:"w-full",style:{"min-height":"500px"}},null,8,ie)]),p("div",ue,[a(g,{class:"mr-3",variant:"primary-outline",type:"button",onClick:y},{default:n(()=>[f($(s.$t("general.cancel")),1)]),_:1}),a(g,{loading:e(i),disabled:e(i),variant:"primary",type:"button",onClick:o[7]||(o[7]=l=>S())},{default:n(()=>[e(i)?U("",!0):(_(),V(m,{key:0,name:"PaperAirplaneIcon",class:"h-5 mr-2"})),f(" "+$(s.$t("general.send")),1)]),_:1},8,["loading","disabled"])])])):(_(),x("form",ae,[p("div",re,[a(O,{layout:"one-column",class:"col-span-7"},{default:n(()=>[a(w,{label:s.$t("general.from"),required:"",error:e(t).from.$error&&e(t).from.$errors[0].$message},{default:n(()=>[a(M,{modelValue:r.from,"onUpdate:modelValue":o[0]||(o[0]=l=>r.from=l),type:"text",invalid:e(t).from.$error,onInput:o[1]||(o[1]=l=>e(t).from.$touch())},null,8,["modelValue","invalid"])]),_:1},8,["label","error"]),a(w,{label:s.$t("general.to"),required:"",error:e(t).to.$error&&e(t).to.$errors[0].$message},{default:n(()=>[a(M,{modelValue:r.to,"onUpdate:modelValue":o[2]||(o[2]=l=>r.to=l),type:"text",invalid:e(t).to.$error,onInput:o[3]||(o[3]=l=>e(t).to.$touch())},null,8,["modelValue","invalid"])]),_:1},8,["label","error"]),a(w,{error:e(t).subject.$error&&e(t).subject.$errors[0].$message,label:s.$t("general.subject"),required:""},{default:n(()=>[a(M,{modelValue:r.subject,"onUpdate:modelValue":o[4]||(o[4]=l=>r.subject=l),type:"text",invalid:e(t).subject.$error,onInput:o[5]||(o[5]=l=>e(t).subject.$touch())},null,8,["modelValue","invalid"])]),_:1},8,["error","label"]),a(w,{label:s.$t("general.body"),error:e(t).body.$error&&e(t).body.$errors[0].$message,required:""},{default:n(()=>[a(A,{modelValue:r.body,"onUpdate:modelValue":o[6]||(o[6]=l=>r.body=l),fields:G.value},null,8,["modelValue","fields"])]),_:1},8,["label","error"])]),_:1})]),p("div",se,[a(g,{class:"mr-3",variant:"primary-outline",type:"button",onClick:y},{default:n(()=>[f($(s.$t("general.cancel")),1)]),_:1}),a(g,{loading:e(i),disabled:e(i),variant:"primary",type:"button",class:"mr-3",onClick:S},{left:n(l=>[e(i)?U("",!0):(_(),V(m,{key:0,class:ee(l.class),name:"PhotographIcon"},null,8,["class"]))]),default:n(()=>[f(" "+$(s.$t("general.preview")),1)]),_:1},8,["loading","disabled"])])]))]),_:1},8,["show"])}}};export{ve as _}; +import{F as J,E as K,u as X,aq as Q,v as W,f as I,H as Y,k as B,g as v,h,i as N,j as Z,r as c,o as _,m as V,w as n,b as p,p as f,t as $,a,c as x,l as e,J as ee,K as U}from"./main-pPEsZPea.js";import{u as oe}from"./mail-driver-SNHZXvKB.js";const te={class:"flex justify-between w-full"},ae={key:0,action:""},re={class:"px-8 py-8 sm:p-6"},se={class:"z-0 flex justify-end p-4 border-t border-gray-200 border-solid"},le={key:1},ne={class:"my-6 mx-4 border border-gray-200 relative"},ie=["src"],ue={class:"z-0 flex justify-end p-4 border-t border-gray-200 border-solid"},ve={__name:"SendInvoiceModal",emits:["update"],setup(de,{emit:P}){const u=J(),j=K(),D=X(),k=Q();oe();const{t:d}=W.useI18n();let i=I(!1);const C=I(""),b=I(!1),F=P,G=I(["customer","customerCustom","invoice","invoiceCustom","company"]),r=Y({id:null,from:null,to:null,subject:"New Invoice",body:null}),z=B(()=>u.active&&u.componentName==="SendInvoiceModal"),E=B(()=>u.title),q=B(()=>u.data),L={from:{required:v.withMessage(d("validation.required"),h),email:v.withMessage(d("validation.email_incorrect"),N)},to:{required:v.withMessage(d("validation.required"),h),email:v.withMessage(d("validation.email_incorrect"),N)},subject:{required:v.withMessage(d("validation.required"),h)},body:{required:v.withMessage(d("validation.required"),h)}},t=Z(L,B(()=>r));function R(){b.value=!1}async function T(){let s=await j.fetchBasicMailConfig();r.id=u.id,s.data&&(r.from=s.data.from_mail),q.value&&(r.to=q.value.customer.email),r.body=j.selectedCompanySettings.invoice_mail_body}async function S(){if(t.value.$touch(),t.value.$invalid)return!0;try{if(i.value=!0,!b.value){const m=await k.previewInvoice(r);i.value=!1,b.value=!0;var s=new Blob([m.data],{type:"text/html"});C.value=URL.createObjectURL(s);return}const o=await k.sendInvoice(r);if(i.value=!1,o.data.success)return F("update",u.id),y(),!0}catch(o){console.error(o),i.value=!1,D.showNotification({type:"error",message:d("invoices.something_went_wrong")})}}function y(){u.closeModal(),setTimeout(()=>{t.value.$reset(),b.value=!1,C.value=null},300)}return(s,o)=>{const m=c("BaseIcon"),M=c("BaseInput"),w=c("BaseInputGroup"),A=c("BaseCustomInput"),O=c("BaseInputGrid"),g=c("BaseButton"),H=c("BaseModal");return _(),V(H,{show:z.value,onClose:y,onOpen:T},{header:n(()=>[p("div",te,[f($(E.value)+" ",1),a(m,{name:"XIcon",class:"w-6 h-6 text-gray-500 cursor-pointer",onClick:y})])]),default:n(()=>[b.value?(_(),x("div",le,[p("div",ne,[a(g,{class:"absolute top-4 right-4",disabled:e(i),variant:"primary-outline",onClick:R},{default:n(()=>[a(m,{name:"PencilIcon",class:"h-5 mr-2"}),f(" Edit ")]),_:1},8,["disabled"]),p("iframe",{src:C.value,frameborder:"0",class:"w-full",style:{"min-height":"500px"}},null,8,ie)]),p("div",ue,[a(g,{class:"mr-3",variant:"primary-outline",type:"button",onClick:y},{default:n(()=>[f($(s.$t("general.cancel")),1)]),_:1}),a(g,{loading:e(i),disabled:e(i),variant:"primary",type:"button",onClick:o[7]||(o[7]=l=>S())},{default:n(()=>[e(i)?U("",!0):(_(),V(m,{key:0,name:"PaperAirplaneIcon",class:"h-5 mr-2"})),f(" "+$(s.$t("general.send")),1)]),_:1},8,["loading","disabled"])])])):(_(),x("form",ae,[p("div",re,[a(O,{layout:"one-column",class:"col-span-7"},{default:n(()=>[a(w,{label:s.$t("general.from"),required:"",error:e(t).from.$error&&e(t).from.$errors[0].$message},{default:n(()=>[a(M,{modelValue:r.from,"onUpdate:modelValue":o[0]||(o[0]=l=>r.from=l),type:"text",invalid:e(t).from.$error,onInput:o[1]||(o[1]=l=>e(t).from.$touch())},null,8,["modelValue","invalid"])]),_:1},8,["label","error"]),a(w,{label:s.$t("general.to"),required:"",error:e(t).to.$error&&e(t).to.$errors[0].$message},{default:n(()=>[a(M,{modelValue:r.to,"onUpdate:modelValue":o[2]||(o[2]=l=>r.to=l),type:"text",invalid:e(t).to.$error,onInput:o[3]||(o[3]=l=>e(t).to.$touch())},null,8,["modelValue","invalid"])]),_:1},8,["label","error"]),a(w,{error:e(t).subject.$error&&e(t).subject.$errors[0].$message,label:s.$t("general.subject"),required:""},{default:n(()=>[a(M,{modelValue:r.subject,"onUpdate:modelValue":o[4]||(o[4]=l=>r.subject=l),type:"text",invalid:e(t).subject.$error,onInput:o[5]||(o[5]=l=>e(t).subject.$touch())},null,8,["modelValue","invalid"])]),_:1},8,["error","label"]),a(w,{label:s.$t("general.body"),error:e(t).body.$error&&e(t).body.$errors[0].$message,required:""},{default:n(()=>[a(A,{modelValue:r.body,"onUpdate:modelValue":o[6]||(o[6]=l=>r.body=l),fields:G.value},null,8,["modelValue","fields"])]),_:1},8,["label","error"])]),_:1})]),p("div",se,[a(g,{class:"mr-3",variant:"primary-outline",type:"button",onClick:y},{default:n(()=>[f($(s.$t("general.cancel")),1)]),_:1}),a(g,{loading:e(i),disabled:e(i),variant:"primary",type:"button",class:"mr-3",onClick:S},{left:n(l=>[e(i)?U("",!0):(_(),V(m,{key:0,class:ee(l.class),name:"PhotographIcon"},null,8,["class"]))]),default:n(()=>[f(" "+$(s.$t("general.preview")),1)]),_:1},8,["loading","disabled"])])]))]),_:1},8,["show"])}}};export{ve as _}; diff --git a/public/build/assets/SendPaymentModal-uAR5T6RF.js b/public/build/assets/SendPaymentModal-MAlrG3n8.js similarity index 97% rename from public/build/assets/SendPaymentModal-uAR5T6RF.js rename to public/build/assets/SendPaymentModal-MAlrG3n8.js index c84fc5c7..93da223e 100644 --- a/public/build/assets/SendPaymentModal-uAR5T6RF.js +++ b/public/build/assets/SendPaymentModal-MAlrG3n8.js @@ -1 +1 @@ -import{a7 as G,u as O,v as F,L as X,e as Z,M as ee,F as H,a5 as te,r as m,o as d,m as p,w as o,l as e,a,Q as C,p as y,t as v,K as B,E as ae,f as N,H as oe,k as z,g as k,h as x,i as R,j as ne,b as M,c as Y,J as re}from"./main-B9dpPbRR.js";import{u as W}from"./payment-Y8OywN76.js";import{u as se}from"./mail-driver-L7_iQECX.js";const be={__name:"PaymentIndexDropdown",props:{row:{type:Object,default:null},table:{type:Object,default:null},contentLoading:{type:Boolean,default:!1}},setup(_){const I=_,D=G(),w=O(),{t:$}=F.useI18n(),g=W(),s=X(),P=Z(),c=ee(),q=H(),r=te("utils");function T(i){D.openDialog({title:$("general.are_you_sure"),message:$("payments.confirm_delete",1),yesLabel:$("general.ok"),noLabel:$("general.cancel"),variant:"danger",size:"lg",hideNoButton:!1}).then(async t=>{if(t)return await g.deletePayment({ids:[i]}),P.push("/admin/payments"),I.table&&I.table.refresh(),!0})}function A(){var t;let i=`${window.location.origin}/payments/pdf/${(t=I.row)==null?void 0:t.unique_hash}`;r.copyTextToClipboard(i),w.showNotification({type:"success",message:$("general.copied_pdf_url_clipboard")})}async function V(i){q.openModal({title:$("payments.send_payment"),componentName:"SendPaymentModal",id:i.id,data:i,variant:"lg"})}return(i,t)=>{const b=m("BaseIcon"),L=m("BaseButton"),j=m("BaseDropdown-item"),f=m("BaseDropdownItem"),l=m("router-link"),n=m("BaseDropdown");return d(),p(n,{"content-loading":_.contentLoading},{activator:o(()=>[e(s).name==="payments.view"?(d(),p(L,{key:0,variant:"primary"},{default:o(()=>[a(b,{name:"DotsHorizontalIcon",class:"h-5 text-white"})]),_:1})):(d(),p(b,{key:1,name:"DotsHorizontalIcon",class:"h-5 text-gray-500"}))]),default:o(()=>[e(s).name==="payments.view"&&e(c).hasAbilities(e(C).VIEW_PAYMENT)?(d(),p(j,{key:0,class:"rounded-md",onClick:A},{default:o(()=>[a(b,{name:"LinkIcon",class:"w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500"}),y(" "+v(i.$t("general.copy_pdf_url")),1)]),_:1})):B("",!0),e(c).hasAbilities(e(C).EDIT_PAYMENT)?(d(),p(l,{key:1,to:`/admin/payments/${_.row.id}/edit`},{default:o(()=>[a(f,null,{default:o(()=>[a(b,{name:"PencilIcon",class:"w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500"}),y(" "+v(i.$t("general.edit")),1)]),_:1})]),_:1},8,["to"])):B("",!0),e(s).name!=="payments.view"&&e(c).hasAbilities(e(C).VIEW_PAYMENT)?(d(),p(l,{key:2,to:`/admin/payments/${_.row.id}/view`},{default:o(()=>[a(f,null,{default:o(()=>[a(b,{name:"EyeIcon",class:"w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500"}),y(" "+v(i.$t("general.view")),1)]),_:1})]),_:1},8,["to"])):B("",!0),_.row.status!=="SENT"&&e(s).name!=="payments.view"&&e(c).hasAbilities(e(C).SEND_PAYMENT)?(d(),p(f,{key:3,onClick:t[0]||(t[0]=h=>V(_.row))},{default:o(()=>[a(b,{name:"PaperAirplaneIcon",class:"w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500"}),y(" "+v(i.$t("payments.send_payment")),1)]),_:1})):B("",!0),e(c).hasAbilities(e(C).DELETE_PAYMENT)?(d(),p(f,{key:4,onClick:t[1]||(t[1]=h=>T(_.row.id))},{default:o(()=>[a(b,{name:"TrashIcon",class:"w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500"}),y(" "+v(i.$t("general.delete")),1)]),_:1})):B("",!0)]),_:1},8,["content-loading"])}}},le={class:"flex justify-between w-full"},ie={key:0,action:""},ue={class:"px-8 py-8 sm:p-6"},de={class:"z-0 flex justify-end p-4 border-t border-gray-200 border-solid"},me={key:1},ce={class:"my-6 mx-4 border border-gray-200 relative"},pe=["src"],ye={class:"z-0 flex justify-end p-4 border-t border-gray-200 border-solid"},_e={__name:"SendPaymentModal",setup(_){const I=W(),D=ae(),w=H(),$=O();se(),G();const{t:g}=F.useI18n();let s=N(!1);const P=N(""),c=N(!1),q=N(["customer","customerCustom","payments","paymentsCustom","company"]),r=oe({id:null,from:null,to:null,subject:"New Payment",body:null}),T=z(()=>w.active&&w.componentName==="SendPaymentModal"),A=z(()=>w.title),V=z(()=>w.data),i={from:{required:k.withMessage(g("validation.required"),x),email:k.withMessage(g("validation.email_incorrect"),R)},to:{required:k.withMessage(g("validation.required"),x),email:k.withMessage(g("validation.email_incorrect"),R)},subject:{required:k.withMessage(g("validation.required"),x)},body:{required:k.withMessage(g("validation.required"),x)}},t=ne(i,r);function b(){c.value=!1}async function L(){let l=await D.fetchBasicMailConfig();r.id=w.id,l.data&&(r.from=l.data.from_mail),V.value&&(r.to=V.value.customer.email),r.body=D.selectedCompanySettings.payment_mail_body}async function j(){if(t.value.$touch(),t.value.$invalid)return!0;try{if(s.value=!0,!c.value){const h=await I.previewPayment(r);s.value=!1,c.value=!0;var l=new Blob([h.data],{type:"text/html"});P.value=URL.createObjectURL(l);return}const n=await I.sendEmail(r);if(s.value=!1,n.data.success)return f(),!0}catch{s.value=!1,$.showNotification({type:"error",message:g("payments.something_went_wrong")})}}function f(){setTimeout(()=>{t.value.$reset(),c.value=!1,P.value=null,w.resetModalData()},300)}return(l,n)=>{const h=m("BaseIcon"),U=m("BaseInput"),E=m("BaseInputGroup"),J=m("BaseCustomInput"),K=m("BaseInputGrid"),S=m("BaseButton"),Q=m("BaseModal");return d(),p(Q,{show:T.value,onClose:f,onOpen:L},{header:o(()=>[M("div",le,[y(v(A.value)+" ",1),a(h,{name:"XIcon",class:"w-6 h-6 text-gray-500 cursor-pointer",onClick:f})])]),default:o(()=>[c.value?(d(),Y("div",me,[M("div",ce,[a(S,{class:"absolute top-4 right-4",disabled:e(s),variant:"primary-outline",onClick:b},{default:o(()=>[a(h,{name:"PencilIcon",class:"h-5 mr-2"}),y(" Edit ")]),_:1},8,["disabled"]),M("iframe",{src:P.value,frameborder:"0",class:"w-full",style:{"min-height":"500px"}},null,8,pe)]),M("div",ye,[a(S,{class:"mr-3",variant:"primary-outline",type:"button",onClick:f},{default:o(()=>[y(v(l.$t("general.cancel")),1)]),_:1}),a(S,{loading:e(s),disabled:e(s),variant:"primary",type:"button",onClick:n[7]||(n[7]=u=>j())},{default:o(()=>[e(s)?B("",!0):(d(),p(h,{key:0,name:"PaperAirplaneIcon",class:"h-5 mr-2"})),y(" "+v(l.$t("general.send")),1)]),_:1},8,["loading","disabled"])])])):(d(),Y("form",ie,[M("div",ue,[a(K,{layout:"one-column",class:"col-span-7"},{default:o(()=>[a(E,{label:l.$t("general.from"),required:"",error:e(t).from.$error&&e(t).from.$errors[0].$message},{default:o(()=>[a(U,{modelValue:r.from,"onUpdate:modelValue":n[0]||(n[0]=u=>r.from=u),type:"text",invalid:e(t).from.$error,onInput:n[1]||(n[1]=u=>e(t).from.$touch())},null,8,["modelValue","invalid"])]),_:1},8,["label","error"]),a(E,{label:l.$t("general.to"),required:"",error:e(t).to.$error&&e(t).to.$errors[0].$message},{default:o(()=>[a(U,{modelValue:r.to,"onUpdate:modelValue":n[2]||(n[2]=u=>r.to=u),type:"text",invalid:e(t).to.$error,onInput:n[3]||(n[3]=u=>e(t).to.$touch())},null,8,["modelValue","invalid"])]),_:1},8,["label","error"]),a(E,{error:e(t).subject.$error&&e(t).subject.$errors[0].$message,label:l.$t("general.subject"),required:""},{default:o(()=>[a(U,{modelValue:r.subject,"onUpdate:modelValue":n[4]||(n[4]=u=>r.subject=u),type:"text",invalid:e(t).subject.$error,onInput:n[5]||(n[5]=u=>e(t).subject.$touch())},null,8,["modelValue","invalid"])]),_:1},8,["error","label"]),a(E,{label:l.$t("general.body"),error:e(t).body.$error&&e(t).body.$errors[0].$message,required:""},{default:o(()=>[a(J,{modelValue:r.body,"onUpdate:modelValue":n[6]||(n[6]=u=>r.body=u),fields:q.value},null,8,["modelValue","fields"])]),_:1},8,["label","error"])]),_:1})]),M("div",de,[a(S,{class:"mr-3",variant:"primary-outline",type:"button",onClick:f},{default:o(()=>[y(v(l.$t("general.cancel")),1)]),_:1}),a(S,{loading:e(s),disabled:e(s),variant:"primary",type:"button",class:"mr-3",onClick:j},{left:o(u=>[e(s)?B("",!0):(d(),p(h,{key:0,class:re(u.class),name:"PhotographIcon"},null,8,["class"]))]),default:o(()=>[y(" "+v(l.$t("general.preview")),1)]),_:1},8,["loading","disabled"])])]))]),_:1},8,["show"])}}};export{_e as _,be as a}; +import{a7 as G,u as O,v as F,L as X,e as Z,M as ee,F as H,a5 as te,r as m,o as d,m as p,w as o,l as e,a,Q as C,p as y,t as v,K as B,E as ae,f as N,H as oe,k as z,g as k,h as x,i as R,j as ne,b as M,c as Y,J as re}from"./main-pPEsZPea.js";import{u as W}from"./payment-fIjVKZH2.js";import{u as se}from"./mail-driver-SNHZXvKB.js";const be={__name:"PaymentIndexDropdown",props:{row:{type:Object,default:null},table:{type:Object,default:null},contentLoading:{type:Boolean,default:!1}},setup(_){const I=_,D=G(),w=O(),{t:$}=F.useI18n(),g=W(),s=X(),P=Z(),c=ee(),q=H(),r=te("utils");function T(i){D.openDialog({title:$("general.are_you_sure"),message:$("payments.confirm_delete",1),yesLabel:$("general.ok"),noLabel:$("general.cancel"),variant:"danger",size:"lg",hideNoButton:!1}).then(async t=>{if(t)return await g.deletePayment({ids:[i]}),P.push("/admin/payments"),I.table&&I.table.refresh(),!0})}function A(){var t;let i=`${window.location.origin}/payments/pdf/${(t=I.row)==null?void 0:t.unique_hash}`;r.copyTextToClipboard(i),w.showNotification({type:"success",message:$("general.copied_pdf_url_clipboard")})}async function V(i){q.openModal({title:$("payments.send_payment"),componentName:"SendPaymentModal",id:i.id,data:i,variant:"lg"})}return(i,t)=>{const b=m("BaseIcon"),L=m("BaseButton"),j=m("BaseDropdown-item"),f=m("BaseDropdownItem"),l=m("router-link"),n=m("BaseDropdown");return d(),p(n,{"content-loading":_.contentLoading},{activator:o(()=>[e(s).name==="payments.view"?(d(),p(L,{key:0,variant:"primary"},{default:o(()=>[a(b,{name:"DotsHorizontalIcon",class:"h-5 text-white"})]),_:1})):(d(),p(b,{key:1,name:"DotsHorizontalIcon",class:"h-5 text-gray-500"}))]),default:o(()=>[e(s).name==="payments.view"&&e(c).hasAbilities(e(C).VIEW_PAYMENT)?(d(),p(j,{key:0,class:"rounded-md",onClick:A},{default:o(()=>[a(b,{name:"LinkIcon",class:"w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500"}),y(" "+v(i.$t("general.copy_pdf_url")),1)]),_:1})):B("",!0),e(c).hasAbilities(e(C).EDIT_PAYMENT)?(d(),p(l,{key:1,to:`/admin/payments/${_.row.id}/edit`},{default:o(()=>[a(f,null,{default:o(()=>[a(b,{name:"PencilIcon",class:"w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500"}),y(" "+v(i.$t("general.edit")),1)]),_:1})]),_:1},8,["to"])):B("",!0),e(s).name!=="payments.view"&&e(c).hasAbilities(e(C).VIEW_PAYMENT)?(d(),p(l,{key:2,to:`/admin/payments/${_.row.id}/view`},{default:o(()=>[a(f,null,{default:o(()=>[a(b,{name:"EyeIcon",class:"w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500"}),y(" "+v(i.$t("general.view")),1)]),_:1})]),_:1},8,["to"])):B("",!0),_.row.status!=="SENT"&&e(s).name!=="payments.view"&&e(c).hasAbilities(e(C).SEND_PAYMENT)?(d(),p(f,{key:3,onClick:t[0]||(t[0]=h=>V(_.row))},{default:o(()=>[a(b,{name:"PaperAirplaneIcon",class:"w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500"}),y(" "+v(i.$t("payments.send_payment")),1)]),_:1})):B("",!0),e(c).hasAbilities(e(C).DELETE_PAYMENT)?(d(),p(f,{key:4,onClick:t[1]||(t[1]=h=>T(_.row.id))},{default:o(()=>[a(b,{name:"TrashIcon",class:"w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500"}),y(" "+v(i.$t("general.delete")),1)]),_:1})):B("",!0)]),_:1},8,["content-loading"])}}},le={class:"flex justify-between w-full"},ie={key:0,action:""},ue={class:"px-8 py-8 sm:p-6"},de={class:"z-0 flex justify-end p-4 border-t border-gray-200 border-solid"},me={key:1},ce={class:"my-6 mx-4 border border-gray-200 relative"},pe=["src"],ye={class:"z-0 flex justify-end p-4 border-t border-gray-200 border-solid"},_e={__name:"SendPaymentModal",setup(_){const I=W(),D=ae(),w=H(),$=O();se(),G();const{t:g}=F.useI18n();let s=N(!1);const P=N(""),c=N(!1),q=N(["customer","customerCustom","payments","paymentsCustom","company"]),r=oe({id:null,from:null,to:null,subject:"New Payment",body:null}),T=z(()=>w.active&&w.componentName==="SendPaymentModal"),A=z(()=>w.title),V=z(()=>w.data),i={from:{required:k.withMessage(g("validation.required"),x),email:k.withMessage(g("validation.email_incorrect"),R)},to:{required:k.withMessage(g("validation.required"),x),email:k.withMessage(g("validation.email_incorrect"),R)},subject:{required:k.withMessage(g("validation.required"),x)},body:{required:k.withMessage(g("validation.required"),x)}},t=ne(i,r);function b(){c.value=!1}async function L(){let l=await D.fetchBasicMailConfig();r.id=w.id,l.data&&(r.from=l.data.from_mail),V.value&&(r.to=V.value.customer.email),r.body=D.selectedCompanySettings.payment_mail_body}async function j(){if(t.value.$touch(),t.value.$invalid)return!0;try{if(s.value=!0,!c.value){const h=await I.previewPayment(r);s.value=!1,c.value=!0;var l=new Blob([h.data],{type:"text/html"});P.value=URL.createObjectURL(l);return}const n=await I.sendEmail(r);if(s.value=!1,n.data.success)return f(),!0}catch{s.value=!1,$.showNotification({type:"error",message:g("payments.something_went_wrong")})}}function f(){setTimeout(()=>{t.value.$reset(),c.value=!1,P.value=null,w.resetModalData()},300)}return(l,n)=>{const h=m("BaseIcon"),U=m("BaseInput"),E=m("BaseInputGroup"),J=m("BaseCustomInput"),K=m("BaseInputGrid"),S=m("BaseButton"),Q=m("BaseModal");return d(),p(Q,{show:T.value,onClose:f,onOpen:L},{header:o(()=>[M("div",le,[y(v(A.value)+" ",1),a(h,{name:"XIcon",class:"w-6 h-6 text-gray-500 cursor-pointer",onClick:f})])]),default:o(()=>[c.value?(d(),Y("div",me,[M("div",ce,[a(S,{class:"absolute top-4 right-4",disabled:e(s),variant:"primary-outline",onClick:b},{default:o(()=>[a(h,{name:"PencilIcon",class:"h-5 mr-2"}),y(" Edit ")]),_:1},8,["disabled"]),M("iframe",{src:P.value,frameborder:"0",class:"w-full",style:{"min-height":"500px"}},null,8,pe)]),M("div",ye,[a(S,{class:"mr-3",variant:"primary-outline",type:"button",onClick:f},{default:o(()=>[y(v(l.$t("general.cancel")),1)]),_:1}),a(S,{loading:e(s),disabled:e(s),variant:"primary",type:"button",onClick:n[7]||(n[7]=u=>j())},{default:o(()=>[e(s)?B("",!0):(d(),p(h,{key:0,name:"PaperAirplaneIcon",class:"h-5 mr-2"})),y(" "+v(l.$t("general.send")),1)]),_:1},8,["loading","disabled"])])])):(d(),Y("form",ie,[M("div",ue,[a(K,{layout:"one-column",class:"col-span-7"},{default:o(()=>[a(E,{label:l.$t("general.from"),required:"",error:e(t).from.$error&&e(t).from.$errors[0].$message},{default:o(()=>[a(U,{modelValue:r.from,"onUpdate:modelValue":n[0]||(n[0]=u=>r.from=u),type:"text",invalid:e(t).from.$error,onInput:n[1]||(n[1]=u=>e(t).from.$touch())},null,8,["modelValue","invalid"])]),_:1},8,["label","error"]),a(E,{label:l.$t("general.to"),required:"",error:e(t).to.$error&&e(t).to.$errors[0].$message},{default:o(()=>[a(U,{modelValue:r.to,"onUpdate:modelValue":n[2]||(n[2]=u=>r.to=u),type:"text",invalid:e(t).to.$error,onInput:n[3]||(n[3]=u=>e(t).to.$touch())},null,8,["modelValue","invalid"])]),_:1},8,["label","error"]),a(E,{error:e(t).subject.$error&&e(t).subject.$errors[0].$message,label:l.$t("general.subject"),required:""},{default:o(()=>[a(U,{modelValue:r.subject,"onUpdate:modelValue":n[4]||(n[4]=u=>r.subject=u),type:"text",invalid:e(t).subject.$error,onInput:n[5]||(n[5]=u=>e(t).subject.$touch())},null,8,["modelValue","invalid"])]),_:1},8,["error","label"]),a(E,{label:l.$t("general.body"),error:e(t).body.$error&&e(t).body.$errors[0].$message,required:""},{default:o(()=>[a(J,{modelValue:r.body,"onUpdate:modelValue":n[6]||(n[6]=u=>r.body=u),fields:q.value},null,8,["modelValue","fields"])]),_:1},8,["label","error"])]),_:1})]),M("div",de,[a(S,{class:"mr-3",variant:"primary-outline",type:"button",onClick:f},{default:o(()=>[y(v(l.$t("general.cancel")),1)]),_:1}),a(S,{loading:e(s),disabled:e(s),variant:"primary",type:"button",class:"mr-3",onClick:j},{left:o(u=>[e(s)?B("",!0):(d(),p(h,{key:0,class:re(u.class),name:"PhotographIcon"},null,8,["class"]))]),default:o(()=>[y(" "+v(l.$t("general.preview")),1)]),_:1},8,["loading","disabled"])])]))]),_:1},8,["show"])}}};export{_e as _,be as a}; diff --git a/public/build/assets/SettingsIndex-WE5DRCcH.js b/public/build/assets/SettingsIndex-Amg-jcMV.js similarity index 92% rename from public/build/assets/SettingsIndex-WE5DRCcH.js rename to public/build/assets/SettingsIndex-Amg-jcMV.js index 55a7103e..791c1cb6 100644 --- a/public/build/assets/SettingsIndex-WE5DRCcH.js +++ b/public/build/assets/SettingsIndex-Amg-jcMV.js @@ -1 +1 @@ -import{v as M,f as R,G as S,L,e as P,k as j,an as y,r as n,o as r,m as f,w as o,a as t,b as i,l as g,n as N,c as O,O as $,N as C}from"./main-B9dpPbRR.js";import{B as E,a as G}from"./BaseListItem-XB18biZ-.js";const H={class:"w-full mb-6 select-wrapper xl:hidden"},U={class:"flex"},A={class:"hidden mt-1 xl:block min-w-[240px]"},F={class:"w-full overflow-hidden"},D={__name:"SettingsIndex",setup(T){const{t:B}=M.useI18n();let a=R({});const u=S(),c=L(),d=P(),m=j(()=>u.settingMenu.map(e=>Object.assign({},e,{title:B(e.title)})));y(()=>{c.path==="/admin/settings"&&d.push("/admin/settings/account-settings");const e=m.value.find(l=>l.link===c.path);a.value=e});function v(e){return c.path.indexOf(e)>-1}function h(e){return d.push(e.link)}return(e,l)=>{const p=n("BaseBreadcrumbItem"),b=n("BaseBreadcrumb"),k=n("BasePageHeader"),w=n("BaseMultiselect"),V=n("BaseIcon"),x=n("RouterView"),I=n("BasePage");return r(),f(I,null,{default:o(()=>[t(k,{title:e.$t("settings.setting",1),class:"mb-6"},{default:o(()=>[t(b,null,{default:o(()=>[t(p,{title:e.$t("general.home"),to:"/admin/dashboard"},null,8,["title"]),t(p,{title:e.$t("settings.setting",2),to:"/admin/settings/account-settings",active:""},null,8,["title"])]),_:1})]),_:1},8,["title"]),i("div",H,[t(w,{modelValue:g(a),"onUpdate:modelValue":[l[0]||(l[0]=s=>N(a)?a.value=s:a=s),h],options:m.value,"can-deselect":!1,"value-prop":"title","track-by":"title",label:"title",object:""},null,8,["modelValue","options"])]),i("div",U,[i("div",A,[t(G,null,{default:o(()=>[(r(!0),O(C,null,$(g(u).settingMenu,(s,_)=>(r(),f(E,{key:_,title:e.$t(s.title),to:s.link,active:v(s.link),index:_,class:"py-3"},{icon:o(()=>[t(V,{name:s.icon},null,8,["name"])]),_:2},1032,["title","to","active","index"]))),128))]),_:1})]),i("div",F,[t(x)])])]),_:1})}}};export{D as default}; +import{v as M,f as R,G as S,L,e as P,k as j,an as y,r as n,o as r,m as f,w as o,a as t,b as i,l as g,n as N,c as O,O as $,N as C}from"./main-pPEsZPea.js";import{B as E,a as G}from"./BaseListItem-mZe-CM4g.js";const H={class:"w-full mb-6 select-wrapper xl:hidden"},U={class:"flex"},A={class:"hidden mt-1 xl:block min-w-[240px]"},F={class:"w-full overflow-hidden"},D={__name:"SettingsIndex",setup(T){const{t:B}=M.useI18n();let a=R({});const u=S(),c=L(),d=P(),m=j(()=>u.settingMenu.map(e=>Object.assign({},e,{title:B(e.title)})));y(()=>{c.path==="/admin/settings"&&d.push("/admin/settings/account-settings");const e=m.value.find(l=>l.link===c.path);a.value=e});function v(e){return c.path.indexOf(e)>-1}function h(e){return d.push(e.link)}return(e,l)=>{const p=n("BaseBreadcrumbItem"),b=n("BaseBreadcrumb"),k=n("BasePageHeader"),w=n("BaseMultiselect"),V=n("BaseIcon"),x=n("RouterView"),I=n("BasePage");return r(),f(I,null,{default:o(()=>[t(k,{title:e.$t("settings.setting",1),class:"mb-6"},{default:o(()=>[t(b,null,{default:o(()=>[t(p,{title:e.$t("general.home"),to:"/admin/dashboard"},null,8,["title"]),t(p,{title:e.$t("settings.setting",2),to:"/admin/settings/account-settings",active:""},null,8,["title"])]),_:1})]),_:1},8,["title"]),i("div",H,[t(w,{modelValue:g(a),"onUpdate:modelValue":[l[0]||(l[0]=s=>N(a)?a.value=s:a=s),h],options:m.value,"can-deselect":!1,"value-prop":"title","track-by":"title",label:"title",object:""},null,8,["modelValue","options"])]),i("div",U,[i("div",A,[t(G,null,{default:o(()=>[(r(!0),O(C,null,$(g(u).settingMenu,(s,_)=>(r(),f(E,{key:_,title:e.$t(s.title),to:s.link,active:v(s.link),index:_,class:"py-3"},{icon:o(()=>[t(V,{name:s.icon},null,8,["name"])]),_:2},1032,["title","to","active","index"]))),128))]),_:1})]),i("div",F,[t(x)])])]),_:1})}}};export{D as default}; diff --git a/public/build/assets/SettingsIndex-D1AcZECg.js b/public/build/assets/SettingsIndex-D1AcZECg.js deleted file mode 100644 index c3742911..00000000 --- a/public/build/assets/SettingsIndex-D1AcZECg.js +++ /dev/null @@ -1 +0,0 @@ -import{B as h,a as v}from"./BaseListItem-XB18biZ-.js";import{v as N,k as B,f as k,H as O,az as w,an as E,r as i,o as s,m as l,w as o,a as n,b as a,c as b,O as y,a3 as S,N as x}from"./main-B9dpPbRR.js";import{u as U}from"./global-1F4OAoew.js";import"./auth-6FPSPboo.js";const j={class:"w-full mb-6 select-wrapper xl:hidden"},z={class:"pb-3 lg:col-span-3"},A={class:"space-y-1"},D={class:"flex"},F={class:"hidden mt-1 xl:block min-w-[240px]"},G={class:"w-full overflow-hidden"},T={__name:"SettingsIndex",setup(q){const{t:m}=N.useI18n(),{useRoute:$,useRouter:R}=window.VueRouter,d=$(),V=R(),r=U(),_=B(()=>r.companySlug);let P=k({});k();const u=O([{link:`/${r.companySlug}/customer/settings/customer-profile`,title:m("settings.account_settings.account_settings"),icon:w.UserIcon},{link:`/${r.companySlug}/customer/settings/address-info`,title:m("settings.menu_title.address_information"),icon:w.OfficeBuildingIcon}]);E(()=>{d.path===`/${r.companySlug}/customer/settings`&&V.push({name:"customer.profile"});const e=u.find(f=>f.link===d.path);P.value={...e}}),B(()=>u);function p(e){return d.path.indexOf(e)>-1}return(e,f)=>{const g=i("BaseBreadcrumbItem"),C=i("BaseBreadcrumb"),H=i("BasePageHeader"),I=i("RouterView"),L=i("BasePage");return s(),l(L,null,{default:o(()=>[n(H,{title:e.$t("settings.setting",2),class:"pb-6"},{default:o(()=>[n(C,null,{default:o(()=>[n(g,{title:e.$t("general.home"),to:`/${_.value}/customer/dashboard`},null,8,["title","to"]),n(g,{title:e.$t("settings.setting",2),to:`/${_.value}/customer/settings/customer-profile`,active:""},null,8,["title","to"])]),_:1})]),_:1},8,["title"]),a("div",j,[a("aside",z,[a("nav",A,[n(v,null,{default:o(()=>[(s(!0),b(x,null,y(u,(t,c)=>(s(),l(h,{key:c,title:t.title,to:t.link,active:p(t.link),index:c,class:"py-3"},{icon:o(()=>[(s(),l(S(t.icon),{class:"h-5 w-6"}))]),_:2},1032,["title","to","active","index"]))),128))]),_:1})])])]),a("div",D,[a("div",F,[n(v,null,{default:o(()=>[(s(!0),b(x,null,y(u,(t,c)=>(s(),l(h,{key:c,title:t.title,to:t.link,active:p(t.link),index:c,class:"py-3"},{icon:o(()=>[(s(),l(S(t.icon),{class:"h-5 w-6"}))]),_:2},1032,["title","to","active","index"]))),128))]),_:1})]),a("div",G,[n(I)])])]),_:1})}}};export{T as default}; diff --git a/public/build/assets/SettingsIndex-p68i9jV8.js b/public/build/assets/SettingsIndex-p68i9jV8.js new file mode 100644 index 00000000..12d6aaf4 --- /dev/null +++ b/public/build/assets/SettingsIndex-p68i9jV8.js @@ -0,0 +1 @@ +import{B as h,a as v}from"./BaseListItem-mZe-CM4g.js";import{v as N,k as B,f as b,H as E,bl as O,bm as j,an as A,r as c,o as s,m as i,w as n,a as o,b as a,c as k,O as w,a3 as y,N as S}from"./main-pPEsZPea.js";import{u as D}from"./global-s5lx2XuM.js";import"./auth-mYHkZCAB.js";const F={class:"w-full mb-6 select-wrapper xl:hidden"},G={class:"pb-3 lg:col-span-3"},I={class:"space-y-1"},U={class:"flex"},q={class:"hidden mt-1 xl:block min-w-[240px]"},z={class:"w-full overflow-hidden"},W={__name:"SettingsIndex",setup(J){const{t:m}=N.useI18n(),{useRoute:$,useRouter:x}=window.VueRouter,d=$(),R=x(),r=D(),_=B(()=>r.companySlug);let V=b({});b();const u=E([{link:`/${r.companySlug}/customer/settings/customer-profile`,title:m("settings.account_settings.account_settings"),icon:O},{link:`/${r.companySlug}/customer/settings/address-info`,title:m("settings.menu_title.address_information"),icon:j}]);A(()=>{d.path===`/${r.companySlug}/customer/settings`&&R.push({name:"customer.profile"});const t=u.find(f=>f.link===d.path);V.value={...t}}),B(()=>u);function p(t){return d.path.indexOf(t)>-1}return(t,f)=>{const g=c("BaseBreadcrumbItem"),P=c("BaseBreadcrumb"),C=c("BasePageHeader"),H=c("RouterView"),L=c("BasePage");return s(),i(L,null,{default:n(()=>[o(C,{title:t.$t("settings.setting",2),class:"pb-6"},{default:n(()=>[o(P,null,{default:n(()=>[o(g,{title:t.$t("general.home"),to:`/${_.value}/customer/dashboard`},null,8,["title","to"]),o(g,{title:t.$t("settings.setting",2),to:`/${_.value}/customer/settings/customer-profile`,active:""},null,8,["title","to"])]),_:1})]),_:1},8,["title"]),a("div",F,[a("aside",G,[a("nav",I,[o(v,null,{default:n(()=>[(s(!0),k(S,null,w(u,(e,l)=>(s(),i(h,{key:l,title:e.title,to:e.link,active:p(e.link),index:l,class:"py-3"},{icon:n(()=>[(s(),i(y(e.icon),{class:"h-5 w-6"}))]),_:2},1032,["title","to","active","index"]))),128))]),_:1})])])]),a("div",U,[a("div",q,[o(v,null,{default:n(()=>[(s(!0),k(S,null,w(u,(e,l)=>(s(),i(h,{key:l,title:e.title,to:e.link,active:p(e.link),index:l,class:"py-3"},{icon:n(()=>[(s(),i(y(e.icon),{class:"h-5 w-6"}))]),_:2},1032,["title","to","active","index"]))),128))]),_:1})]),a("div",z,[o(H)])])]),_:1})}}};export{W as default}; diff --git a/public/build/assets/SwitchType-7loDSbd1.js b/public/build/assets/SwitchType-8zVnAshp.js similarity index 85% rename from public/build/assets/SwitchType-7loDSbd1.js rename to public/build/assets/SwitchType-8zVnAshp.js index e1ae5ff9..58b0bc21 100644 --- a/public/build/assets/SwitchType-7loDSbd1.js +++ b/public/build/assets/SwitchType-8zVnAshp.js @@ -1 +1 @@ -import{k as p,r as c,o as r,m as d}from"./main-B9dpPbRR.js";const V={__name:"SwitchType",props:{modelValue:{type:[String,Number,Boolean],default:null}},emits:["update:modelValue"],setup(l,{emit:a}){const n=l,u=a,t=p({get:()=>n.modelValue===1,set:o=>{u("update:modelValue",o?1:0)}});return(o,e)=>{const s=c("BaseSwitch");return r(),d(s,{modelValue:t.value,"onUpdate:modelValue":e[0]||(e[0]=m=>t.value=m)},null,8,["modelValue"])}}};export{V as default}; +import{k as p,r as c,o as r,m as d}from"./main-pPEsZPea.js";const V={__name:"SwitchType",props:{modelValue:{type:[String,Number,Boolean],default:null}},emits:["update:modelValue"],setup(l,{emit:a}){const n=l,u=a,t=p({get:()=>n.modelValue===1,set:o=>{u("update:modelValue",o?1:0)}});return(o,e)=>{const s=c("BaseSwitch");return r(),d(s,{modelValue:t.value,"onUpdate:modelValue":e[0]||(e[0]=m=>t.value=m)},null,8,["modelValue"])}}};export{V as default}; diff --git a/public/build/assets/TaxTypeModal-jyzjEMpe.js b/public/build/assets/TaxTypeModal-rCI1vg4v.js similarity index 84% rename from public/build/assets/TaxTypeModal-jyzjEMpe.js rename to public/build/assets/TaxTypeModal-rCI1vg4v.js index b32ec968..e936ca89 100644 --- a/public/build/assets/TaxTypeModal-jyzjEMpe.js +++ b/public/build/assets/TaxTypeModal-rCI1vg4v.js @@ -1 +1 @@ -import{au as k,F as z,u as N,as as j,v as D,f as G,k as $,g as c,h as b,I as L,aI as U,ai as E,j as F,r as i,o as g,m as B,w as l,b as y,p as x,t as v,l as e,a as o,q as J,J as K,K as X}from"./main-B9dpPbRR.js";const A={class:"flex justify-between w-full"},H={class:"p-4 sm:p-6"},O={class:"z-0 flex justify-end p-4 border-t border-solid border--200 border-modal-bg"},W={__name:"TaxTypeModal",setup(P){const t=k(),u=z();N(),j();const{t:p,tm:Q}=D.useI18n();let d=G(!1);const h=$(()=>({currentTaxType:{name:{required:c.withMessage(p("validation.required"),b),minLength:c.withMessage(p("validation.name_min_length",{count:3}),L(3))},percent:{required:c.withMessage(p("validation.required"),b),between:c.withMessage(p("validation.enter_valid_tax_rate"),U(0,100))},description:{maxLength:c.withMessage(p("validation.description_maxlength",{count:255}),E(255))}}})),r=F(h,$(()=>t));async function w(){if(r.value.currentTaxType.$touch(),r.value.currentTaxType.$invalid)return!0;try{const s=t.isEdit?t.updateTaxType:t.addTaxType;d.value=!0;let a=await s(t.currentTaxType);d.value=!1,u.refreshData&&u.refreshData(a.data.data),m()}catch{return d.value=!1,!0}}function m(){u.closeModal(),setTimeout(()=>{t.resetCurrentTaxType(),r.value.$reset()},300)}return(s,a)=>{const f=i("BaseIcon"),I=i("BaseInput"),T=i("BaseInputGroup"),V=i("BaseMoney"),M=i("BaseTextarea"),S=i("BaseSwitch"),q=i("BaseInputGrid"),_=i("BaseButton"),C=i("BaseModal");return g(),B(C,{show:e(u).active&&e(u).componentName==="TaxTypeModal",onClose:m},{header:l(()=>[y("div",A,[x(v(e(u).title)+" ",1),o(f,{name:"XIcon",class:"h-6 w-6 text-gray-500 cursor-pointer",onClick:m})])]),default:l(()=>[y("form",{action:"",onSubmit:J(w,["prevent"])},[y("div",H,[o(q,{layout:"one-column"},{default:l(()=>[o(T,{label:s.$t("tax_types.name"),variant:"horizontal",error:e(r).currentTaxType.name.$error&&e(r).currentTaxType.name.$errors[0].$message,required:""},{default:l(()=>[o(I,{modelValue:e(t).currentTaxType.name,"onUpdate:modelValue":a[0]||(a[0]=n=>e(t).currentTaxType.name=n),invalid:e(r).currentTaxType.name.$error,type:"text",onInput:a[1]||(a[1]=n=>e(r).currentTaxType.name.$touch())},null,8,["modelValue","invalid"])]),_:1},8,["label","error"]),o(T,{label:s.$t("tax_types.percent"),variant:"horizontal",error:e(r).currentTaxType.percent.$error&&e(r).currentTaxType.percent.$errors[0].$message,required:""},{default:l(()=>[o(V,{modelValue:e(t).currentTaxType.percent,"onUpdate:modelValue":a[2]||(a[2]=n=>e(t).currentTaxType.percent=n),currency:{decimal:".",thousands:",",symbol:"% ",precision:2,masked:!1},invalid:e(r).currentTaxType.percent.$error,class:"relative w-full focus:border focus:border-solid focus:border-primary",onInput:a[3]||(a[3]=n=>e(r).currentTaxType.percent.$touch())},null,8,["modelValue","currency","invalid"])]),_:1},8,["label","error"]),o(T,{label:s.$t("tax_types.description"),error:e(r).currentTaxType.description.$error&&e(r).currentTaxType.description.$errors[0].$message,variant:"horizontal"},{default:l(()=>[o(M,{modelValue:e(t).currentTaxType.description,"onUpdate:modelValue":a[4]||(a[4]=n=>e(t).currentTaxType.description=n),invalid:e(r).currentTaxType.description.$error,rows:"4",cols:"50",onInput:a[5]||(a[5]=n=>e(r).currentTaxType.description.$touch())},null,8,["modelValue","invalid"])]),_:1},8,["label","error"]),o(T,{label:s.$t("tax_types.compound_tax"),variant:"horizontal",class:"flex flex-row-reverse"},{default:l(()=>[o(S,{modelValue:e(t).currentTaxType.compound_tax,"onUpdate:modelValue":a[6]||(a[6]=n=>e(t).currentTaxType.compound_tax=n),class:"flex items-center"},null,8,["modelValue"])]),_:1},8,["label"])]),_:1})]),y("div",O,[o(_,{class:"mr-3 text-sm",variant:"primary-outline",type:"button",onClick:m},{default:l(()=>[x(v(s.$t("general.cancel")),1)]),_:1}),o(_,{loading:e(d),disabled:e(d),variant:"primary",type:"submit"},{left:l(n=>[e(d)?X("",!0):(g(),B(f,{key:0,name:"SaveIcon",class:K(n.class)},null,8,["class"]))]),default:l(()=>[x(" "+v(e(t).isEdit?s.$t("general.update"):s.$t("general.save")),1)]),_:1},8,["loading","disabled"])])],32)]),_:1},8,["show"])}}};export{W as _}; +import{au as k,F as z,u as N,as as L,v as j,f as D,k as $,g as c,h as b,I as G,aL as U,ai as E,j as F,r as i,o as g,m as B,w as l,b as y,p as x,t as v,l as e,a as o,q as J,J as K,K as X}from"./main-pPEsZPea.js";const A={class:"flex justify-between w-full"},H={class:"p-4 sm:p-6"},O={class:"z-0 flex justify-end p-4 border-t border-solid border--200 border-modal-bg"},W={__name:"TaxTypeModal",setup(P){const t=k(),u=z();N(),L();const{t:p,tm:Q}=j.useI18n();let d=D(!1);const h=$(()=>({currentTaxType:{name:{required:c.withMessage(p("validation.required"),b),minLength:c.withMessage(p("validation.name_min_length",{count:3}),G(3))},percent:{required:c.withMessage(p("validation.required"),b),between:c.withMessage(p("validation.enter_valid_tax_rate"),U(0,100))},description:{maxLength:c.withMessage(p("validation.description_maxlength",{count:255}),E(255))}}})),r=F(h,$(()=>t));async function w(){if(r.value.currentTaxType.$touch(),r.value.currentTaxType.$invalid)return!0;try{const s=t.isEdit?t.updateTaxType:t.addTaxType;d.value=!0;let a=await s(t.currentTaxType);d.value=!1,u.refreshData&&u.refreshData(a.data.data),m()}catch{return d.value=!1,!0}}function m(){u.closeModal(),setTimeout(()=>{t.resetCurrentTaxType(),r.value.$reset()},300)}return(s,a)=>{const f=i("BaseIcon"),V=i("BaseInput"),T=i("BaseInputGroup"),I=i("BaseMoney"),M=i("BaseTextarea"),S=i("BaseSwitch"),q=i("BaseInputGrid"),_=i("BaseButton"),C=i("BaseModal");return g(),B(C,{show:e(u).active&&e(u).componentName==="TaxTypeModal",onClose:m},{header:l(()=>[y("div",A,[x(v(e(u).title)+" ",1),o(f,{name:"XIcon",class:"h-6 w-6 text-gray-500 cursor-pointer",onClick:m})])]),default:l(()=>[y("form",{action:"",onSubmit:J(w,["prevent"])},[y("div",H,[o(q,{layout:"one-column"},{default:l(()=>[o(T,{label:s.$t("tax_types.name"),variant:"horizontal",error:e(r).currentTaxType.name.$error&&e(r).currentTaxType.name.$errors[0].$message,required:""},{default:l(()=>[o(V,{modelValue:e(t).currentTaxType.name,"onUpdate:modelValue":a[0]||(a[0]=n=>e(t).currentTaxType.name=n),invalid:e(r).currentTaxType.name.$error,type:"text",onInput:a[1]||(a[1]=n=>e(r).currentTaxType.name.$touch())},null,8,["modelValue","invalid"])]),_:1},8,["label","error"]),o(T,{label:s.$t("tax_types.percent"),variant:"horizontal",error:e(r).currentTaxType.percent.$error&&e(r).currentTaxType.percent.$errors[0].$message,required:""},{default:l(()=>[o(I,{modelValue:e(t).currentTaxType.percent,"onUpdate:modelValue":a[2]||(a[2]=n=>e(t).currentTaxType.percent=n),currency:{decimal:".",thousands:",",symbol:"% ",precision:2,masked:!1},invalid:e(r).currentTaxType.percent.$error,class:"relative w-full focus:border focus:border-solid focus:border-primary",onInput:a[3]||(a[3]=n=>e(r).currentTaxType.percent.$touch())},null,8,["modelValue","currency","invalid"])]),_:1},8,["label","error"]),o(T,{label:s.$t("tax_types.description"),error:e(r).currentTaxType.description.$error&&e(r).currentTaxType.description.$errors[0].$message,variant:"horizontal"},{default:l(()=>[o(M,{modelValue:e(t).currentTaxType.description,"onUpdate:modelValue":a[4]||(a[4]=n=>e(t).currentTaxType.description=n),invalid:e(r).currentTaxType.description.$error,rows:"4",cols:"50",onInput:a[5]||(a[5]=n=>e(r).currentTaxType.description.$touch())},null,8,["modelValue","invalid"])]),_:1},8,["label","error"]),o(T,{label:s.$t("tax_types.compound_tax"),variant:"horizontal",class:"flex flex-row-reverse"},{default:l(()=>[o(S,{modelValue:e(t).currentTaxType.compound_tax,"onUpdate:modelValue":a[6]||(a[6]=n=>e(t).currentTaxType.compound_tax=n),class:"flex items-center"},null,8,["modelValue"])]),_:1},8,["label"])]),_:1})]),y("div",O,[o(_,{class:"mr-3 text-sm",variant:"primary-outline",type:"button",onClick:m},{default:l(()=>[x(v(s.$t("general.cancel")),1)]),_:1}),o(_,{loading:e(d),disabled:e(d),variant:"primary",type:"submit"},{left:l(n=>[e(d)?X("",!0):(g(),B(f,{key:0,name:"SaveIcon",class:K(n.class)},null,8,["class"]))]),default:l(()=>[x(" "+v(e(t).isEdit?s.$t("general.update"):s.$t("general.save")),1)]),_:1},8,["loading","disabled"])])],32)]),_:1},8,["show"])}}};export{W as _}; diff --git a/public/build/assets/TaxTypesSetting-BIuO7eBP.js b/public/build/assets/TaxTypesSetting-NZ-33S7N.js similarity index 98% rename from public/build/assets/TaxTypesSetting-BIuO7eBP.js rename to public/build/assets/TaxTypesSetting-NZ-33S7N.js index 92028213..82aac268 100644 --- a/public/build/assets/TaxTypesSetting-BIuO7eBP.js +++ b/public/build/assets/TaxTypesSetting-NZ-33S7N.js @@ -1 +1 @@ -import{a7 as H,u as R,v as M,au as z,L as J,M as O,F as V,a5 as L,r as o,o as p,m as g,w as e,l,a as s,Q as f,p as T,t as S,K as P,E as K,av as Q,f as Y,k as N,a6 as $,J as q,c as G}from"./main-B9dpPbRR.js";import{_ as W}from"./TaxTypeModal-jyzjEMpe.js";const Z={__name:"TaxTypeIndexDropdown",props:{row:{type:Object,default:null},table:{type:Object,default:null},loadData:{type:Function,default:null}},setup(B){const t=B,b=H();R();const{t:r}=M.useI18n(),v=z(),C=J(),m=O(),E=V();L("utils");async function i(c){await v.fetchTaxType(c),E.openModal({title:r("settings.tax_types.edit_tax"),componentName:"TaxTypeModal",size:"sm",refreshData:t.loadData&&t.loadData})}function h(c){b.openDialog({title:r("general.are_you_sure"),message:r("settings.tax_types.confirm_delete"),yesLabel:r("general.ok"),noLabel:r("general.cancel"),variant:"danger",hideNoButton:!1,size:"lg"}).then(async d=>{if(d){if((await v.deleteTaxType(c)).data.success)return t.loadData&&t.loadData(),!0;t.loadData&&t.loadData()}})}return(c,d)=>{const u=o("BaseIcon"),w=o("BaseButton"),D=o("BaseDropdownItem"),k=o("BaseDropdown");return p(),g(k,null,{activator:e(()=>[l(C).name==="tax-types.view"?(p(),g(w,{key:0,variant:"primary"},{default:e(()=>[s(u,{name:"DotsHorizontalIcon",class:"h-5 text-white"})]),_:1})):(p(),g(u,{key:1,name:"DotsHorizontalIcon",class:"h-5 text-gray-500"}))]),default:e(()=>[l(m).hasAbilities(l(f).EDIT_TAX_TYPE)?(p(),g(D,{key:0,onClick:d[0]||(d[0]=I=>i(B.row.id))},{default:e(()=>[s(u,{name:"PencilIcon",class:"w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500"}),T(" "+S(c.$t("general.edit")),1)]),_:1})):P("",!0),l(m).hasAbilities(l(f).DELETE_TAX_TYPE)?(p(),g(D,{key:1,onClick:d[1]||(d[1]=I=>h(B.row.id))},{default:e(()=>[s(u,{name:"TrashIcon",class:"w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500"}),T(" "+S(c.$t("general.delete")),1)]),_:1})):P("",!0)]),_:1})}}},ee={key:0},se={__name:"TaxTypesSetting",setup(B){const{t}=M.useI18n(),b=L("utils"),r=K(),v=z(),C=V(),m=O(),E=Q(),i=Y(null),h=Y(r.selectedCompanySettings.tax_per_item),c=N(()=>[{key:"name",label:t("settings.tax_types.tax_name"),thClass:"extra",tdClass:"font-medium text-gray-900"},{key:"compound_tax",label:t("settings.tax_types.compound_tax"),tdClass:"font-medium text-gray-900"},{key:"percent",label:t("settings.tax_types.percent"),thClass:"extra",tdClass:"font-medium text-gray-900"},{key:"actions",label:"",tdClass:"text-right text-sm font-medium",sortable:!1}]),d=N(()=>r.selectedCompanySettings.sales_tax_us_enabled==="YES"&&E.salesTaxUSEnabled),u=N({get:()=>h.value==="YES",set:async n=>{const _=n?"YES":"NO";let y={settings:{tax_per_item:_}};h.value=_,await r.updateCompanySettings({data:y,message:"general.setting_updated"})}});function w(){return m.hasAbilities([f.DELETE_TAX_TYPE,f.EDIT_TAX_TYPE])}async function D({page:n,filter:_,sort:y}){let A={orderByField:y.fieldName||"created_at",orderBy:y.order||"desc",page:n},x=await v.fetchTaxTypes(A);return{data:x.data.data,pagination:{totalPages:x.data.meta.last_page,currentPage:n,totalCount:x.data.meta.total,limit:5}}}async function k(){i.value&&i.value.refresh()}function I(){C.openModal({title:t("settings.tax_types.add_tax"),componentName:"TaxTypeModal",size:"sm",refreshData:i.value&&i.value.refresh})}return(n,_)=>{const y=o("BaseIcon"),A=o("BaseButton"),x=o("BaseBadge"),X=o("BaseTable"),j=o("BaseDivider"),F=o("BaseSwitchSection"),U=o("BaseSettingCard");return p(),g(U,{title:n.$t("settings.tax_types.title"),description:n.$t("settings.tax_types.description")},$({default:e(()=>[s(W),s(X,{ref_key:"table",ref:i,class:"mt-16",data:D,columns:c.value},$({"cell-compound_tax":e(({row:a})=>[s(x,{"bg-color":l(b).getBadgeStatusColor(a.data.compound_tax?"YES":"NO").bgColor,color:l(b).getBadgeStatusColor(a.data.compound_tax?"YES":"NO").color},{default:e(()=>[T(S(a.data.compound_tax?"Yes":"No".replace("_"," ")),1)]),_:2},1032,["bg-color","color"])]),"cell-percent":e(({row:a})=>[T(S(a.data.percent)+" % ",1)]),_:2},[w()?{name:"cell-actions",fn:e(({row:a})=>[s(Z,{row:a.data,table:i.value,"load-data":k},null,8,["row","table"])]),key:"0"}:void 0]),1032,["columns"]),l(m).currentUser.is_owner?(p(),G("div",ee,[s(j,{class:"mt-8 mb-2"}),s(F,{modelValue:u.value,"onUpdate:modelValue":_[0]||(_[0]=a=>u.value=a),disabled:d.value,title:n.$t("settings.tax_types.tax_per_item"),description:n.$t("settings.tax_types.tax_setting_description")},null,8,["modelValue","disabled","title","description"])])):P("",!0)]),_:2},[l(m).hasAbilities(l(f).CREATE_TAX_TYPE)?{name:"action",fn:e(()=>[s(A,{type:"submit",variant:"primary-outline",onClick:I},{left:e(a=>[s(y,{class:q(a.class),name:"PlusIcon"},null,8,["class"])]),default:e(()=>[T(" "+S(n.$t("settings.tax_types.add_new_tax")),1)]),_:1})]),key:"0"}:void 0]),1032,["title","description"])}}};export{se as default}; +import{a7 as H,u as R,v as M,au as z,L as J,M as O,F as V,a5 as L,r as o,o as p,m as g,w as e,l,a as s,Q as f,p as T,t as S,K as P,E as K,av as Q,f as Y,k as N,a6 as $,J as q,c as G}from"./main-pPEsZPea.js";import{_ as W}from"./TaxTypeModal-rCI1vg4v.js";const Z={__name:"TaxTypeIndexDropdown",props:{row:{type:Object,default:null},table:{type:Object,default:null},loadData:{type:Function,default:null}},setup(B){const t=B,b=H();R();const{t:r}=M.useI18n(),v=z(),C=J(),m=O(),E=V();L("utils");async function i(c){await v.fetchTaxType(c),E.openModal({title:r("settings.tax_types.edit_tax"),componentName:"TaxTypeModal",size:"sm",refreshData:t.loadData&&t.loadData})}function h(c){b.openDialog({title:r("general.are_you_sure"),message:r("settings.tax_types.confirm_delete"),yesLabel:r("general.ok"),noLabel:r("general.cancel"),variant:"danger",hideNoButton:!1,size:"lg"}).then(async d=>{if(d){if((await v.deleteTaxType(c)).data.success)return t.loadData&&t.loadData(),!0;t.loadData&&t.loadData()}})}return(c,d)=>{const u=o("BaseIcon"),w=o("BaseButton"),D=o("BaseDropdownItem"),k=o("BaseDropdown");return p(),g(k,null,{activator:e(()=>[l(C).name==="tax-types.view"?(p(),g(w,{key:0,variant:"primary"},{default:e(()=>[s(u,{name:"DotsHorizontalIcon",class:"h-5 text-white"})]),_:1})):(p(),g(u,{key:1,name:"DotsHorizontalIcon",class:"h-5 text-gray-500"}))]),default:e(()=>[l(m).hasAbilities(l(f).EDIT_TAX_TYPE)?(p(),g(D,{key:0,onClick:d[0]||(d[0]=I=>i(B.row.id))},{default:e(()=>[s(u,{name:"PencilIcon",class:"w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500"}),T(" "+S(c.$t("general.edit")),1)]),_:1})):P("",!0),l(m).hasAbilities(l(f).DELETE_TAX_TYPE)?(p(),g(D,{key:1,onClick:d[1]||(d[1]=I=>h(B.row.id))},{default:e(()=>[s(u,{name:"TrashIcon",class:"w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500"}),T(" "+S(c.$t("general.delete")),1)]),_:1})):P("",!0)]),_:1})}}},ee={key:0},se={__name:"TaxTypesSetting",setup(B){const{t}=M.useI18n(),b=L("utils"),r=K(),v=z(),C=V(),m=O(),E=Q(),i=Y(null),h=Y(r.selectedCompanySettings.tax_per_item),c=N(()=>[{key:"name",label:t("settings.tax_types.tax_name"),thClass:"extra",tdClass:"font-medium text-gray-900"},{key:"compound_tax",label:t("settings.tax_types.compound_tax"),tdClass:"font-medium text-gray-900"},{key:"percent",label:t("settings.tax_types.percent"),thClass:"extra",tdClass:"font-medium text-gray-900"},{key:"actions",label:"",tdClass:"text-right text-sm font-medium",sortable:!1}]),d=N(()=>r.selectedCompanySettings.sales_tax_us_enabled==="YES"&&E.salesTaxUSEnabled),u=N({get:()=>h.value==="YES",set:async n=>{const _=n?"YES":"NO";let y={settings:{tax_per_item:_}};h.value=_,await r.updateCompanySettings({data:y,message:"general.setting_updated"})}});function w(){return m.hasAbilities([f.DELETE_TAX_TYPE,f.EDIT_TAX_TYPE])}async function D({page:n,filter:_,sort:y}){let A={orderByField:y.fieldName||"created_at",orderBy:y.order||"desc",page:n},x=await v.fetchTaxTypes(A);return{data:x.data.data,pagination:{totalPages:x.data.meta.last_page,currentPage:n,totalCount:x.data.meta.total,limit:5}}}async function k(){i.value&&i.value.refresh()}function I(){C.openModal({title:t("settings.tax_types.add_tax"),componentName:"TaxTypeModal",size:"sm",refreshData:i.value&&i.value.refresh})}return(n,_)=>{const y=o("BaseIcon"),A=o("BaseButton"),x=o("BaseBadge"),X=o("BaseTable"),j=o("BaseDivider"),F=o("BaseSwitchSection"),U=o("BaseSettingCard");return p(),g(U,{title:n.$t("settings.tax_types.title"),description:n.$t("settings.tax_types.description")},$({default:e(()=>[s(W),s(X,{ref_key:"table",ref:i,class:"mt-16",data:D,columns:c.value},$({"cell-compound_tax":e(({row:a})=>[s(x,{"bg-color":l(b).getBadgeStatusColor(a.data.compound_tax?"YES":"NO").bgColor,color:l(b).getBadgeStatusColor(a.data.compound_tax?"YES":"NO").color},{default:e(()=>[T(S(a.data.compound_tax?"Yes":"No".replace("_"," ")),1)]),_:2},1032,["bg-color","color"])]),"cell-percent":e(({row:a})=>[T(S(a.data.percent)+" % ",1)]),_:2},[w()?{name:"cell-actions",fn:e(({row:a})=>[s(Z,{row:a.data,table:i.value,"load-data":k},null,8,["row","table"])]),key:"0"}:void 0]),1032,["columns"]),l(m).currentUser.is_owner?(p(),G("div",ee,[s(j,{class:"mt-8 mb-2"}),s(F,{modelValue:u.value,"onUpdate:modelValue":_[0]||(_[0]=a=>u.value=a),disabled:d.value,title:n.$t("settings.tax_types.tax_per_item"),description:n.$t("settings.tax_types.tax_setting_description")},null,8,["modelValue","disabled","title","description"])])):P("",!0)]),_:2},[l(m).hasAbilities(l(f).CREATE_TAX_TYPE)?{name:"action",fn:e(()=>[s(A,{type:"submit",variant:"primary-outline",onClick:I},{left:e(a=>[s(y,{class:q(a.class),name:"PlusIcon"},null,8,["class"])]),default:e(()=>[T(" "+S(n.$t("settings.tax_types.add_new_tax")),1)]),_:1})]),key:"0"}:void 0]),1032,["title","description"])}}};export{se as default}; diff --git a/public/build/assets/TextAreaType-Y4tJ0XjS.js b/public/build/assets/TextAreaType-WkjHyMHs.js similarity index 88% rename from public/build/assets/TextAreaType-Y4tJ0XjS.js rename to public/build/assets/TextAreaType-WkjHyMHs.js index d6bd5f34..cc82f88b 100644 --- a/public/build/assets/TextAreaType-Y4tJ0XjS.js +++ b/public/build/assets/TextAreaType-WkjHyMHs.js @@ -1 +1 @@ -import{k as r,r as p,o as d,m as i}from"./main-B9dpPbRR.js";const V={__name:"TextAreaType",props:{modelValue:{type:String,default:null},rows:{type:String,default:"2"},inputName:{type:String,default:"description"}},emits:["update:modelValue"],setup(e,{emit:l}){const n=e,u=l,t=r({get:()=>n.modelValue,set:a=>{u("update:modelValue",a)}});return(a,o)=>{const m=p("BaseTextarea");return d(),i(m,{modelValue:t.value,"onUpdate:modelValue":o[0]||(o[0]=s=>t.value=s),rows:e.rows,name:e.inputName},null,8,["modelValue","rows","name"])}}};export{V as default}; +import{k as r,r as p,o as d,m as i}from"./main-pPEsZPea.js";const V={__name:"TextAreaType",props:{modelValue:{type:String,default:null},rows:{type:String,default:"2"},inputName:{type:String,default:"description"}},emits:["update:modelValue"],setup(e,{emit:l}){const n=e,u=l,t=r({get:()=>n.modelValue,set:a=>{u("update:modelValue",a)}});return(a,o)=>{const m=p("BaseTextarea");return d(),i(m,{modelValue:t.value,"onUpdate:modelValue":o[0]||(o[0]=s=>t.value=s),rows:e.rows,name:e.inputName},null,8,["modelValue","rows","name"])}}};export{V as default}; diff --git a/public/build/assets/TimeType-xTM4w-r_.js b/public/build/assets/TimeType-HqsdM7aY.js similarity index 86% rename from public/build/assets/TimeType-xTM4w-r_.js rename to public/build/assets/TimeType-HqsdM7aY.js index ddeef2cf..c95e4372 100644 --- a/public/build/assets/TimeType-xTM4w-r_.js +++ b/public/build/assets/TimeType-HqsdM7aY.js @@ -1 +1 @@ -import{ab as p,k as r,r as d,o as c,m as i}from"./main-B9dpPbRR.js";const k={__name:"TimeType",props:{modelValue:{type:[String,Date,Object],default:p().format("YYYY-MM-DD")}},emits:["update:modelValue"],setup(a,{emit:l}){const m=a,s=l,e=r({get:()=>m.modelValue,set:o=>{s("update:modelValue",o)}});return(o,t)=>{const u=d("BaseTimePicker");return c(),i(u,{modelValue:e.value,"onUpdate:modelValue":t[0]||(t[0]=n=>e.value=n)},null,8,["modelValue"])}}};export{k as default}; +import{ab as p,k as r,r as d,o as c,m as i}from"./main-pPEsZPea.js";const k={__name:"TimeType",props:{modelValue:{type:[String,Date,Object],default:p().format("YYYY-MM-DD")}},emits:["update:modelValue"],setup(a,{emit:l}){const m=a,s=l,e=r({get:()=>m.modelValue,set:o=>{s("update:modelValue",o)}});return(o,t)=>{const u=d("BaseTimePicker");return c(),i(u,{modelValue:e.value,"onUpdate:modelValue":t[0]||(t[0]=n=>e.value=n)},null,8,["modelValue"])}}};export{k as default}; diff --git a/public/build/assets/UpdateAppSetting-Zh2KTamO.js b/public/build/assets/UpdateAppSetting-tBxb5CQ-.js similarity index 98% rename from public/build/assets/UpdateAppSetting-Zh2KTamO.js rename to public/build/assets/UpdateAppSetting-tBxb5CQ-.js index c269b679..6b2ece19 100644 --- a/public/build/assets/UpdateAppSetting-Zh2KTamO.js +++ b/public/build/assets/UpdateAppSetting-tBxb5CQ-.js @@ -1 +1 @@ -import{u as O,a7 as R,v as J,E as Y,f as d,H as D,s as S,k as G,r as h,o as s,m as V,w,b as t,t as a,l as n,a as v,p as $,K as y,ac as Q,ad as W,c as i,N as E,O as T,J as X,a1 as q}from"./main-B9dpPbRR.js";import{L as Z}from"./LoadingIcon-eCpWurti.js";import{u as ee}from"./exchange-rate-M4ruO0OO.js";const te={class:"pb-8 ml-0"},ae={class:"text-sm not-italic font-medium input-label"},se={class:"box-border flex w-16 p-3 my-2 text-sm text-gray-600 bg-gray-200 border border-gray-200 border-solid rounded-md version"},ne={key:1,class:"mt-4 content"},ie={class:"rounded-md bg-primary-50 p-4 mb-3"},re={class:"flex"},le={class:"shrink-0"},oe={class:"ml-3"},de={class:"text-sm font-medium text-primary-800"},pe={class:"mt-2 text-sm text-primary-700"},ue={class:"text-sm not-italic font-medium input-label"},ce=t("br",null,null,-1),me={class:"box-border flex w-16 p-3 my-2 text-sm text-gray-600 bg-gray-200 border border-gray-200 border-solid rounded-md version"},_e=["innerHTML"],ge={class:"text-sm not-italic font-medium input-label"},fe={class:"w-1/2 mt-2 border-2 border-gray-200 BaseTable-fixed"},he={width:"70%",class:"p-2 text-sm truncate"},ve={width:"30%",class:"p-2 text-sm text-right"},ye={key:0,class:"inline-block w-4 h-4 ml-3 mr-2 bg-green-500 rounded-full"},be={key:1,class:"inline-block w-4 h-4 ml-3 mr-2 bg-red-500 rounded-full"},xe={key:2,class:"relative flex justify-between mt-4 content"},we={class:"m-0 mb-3 font-medium sw-section-title"},ke={class:"mb-8 text-sm leading-snug text-gray-500",style:{"max-width":"480px"}},Be={key:3,class:"w-full p-0 list-none"},Ue={class:"m-0 text-sm leading-8"},Se={class:"flex flex-row items-center"},$e={key:0,class:"mr-3 text-xs text-gray-500"},De={__name:"UpdateAppSetting",setup(Ce){const k=O(),z=R(),{t:p,tm:Ne}=J.useI18n();Y(),ee();let b=d(!1),c=d(!1),C=d(""),B=d(""),m=d(null),N=d(null),l=d(!1);const U=D([{translationKey:"settings.update_app.download_zip_file",stepUrl:"/api/v1/update/download",time:null,started:!1,completed:!1},{translationKey:"settings.update_app.unzipping_package",stepUrl:"/api/v1/update/unzip",time:null,started:!1,completed:!1},{translationKey:"settings.update_app.copying_files",stepUrl:"/api/v1/update/copy",time:null,started:!1,completed:!1},{translationKey:"settings.update_app.deleting_files",stepUrl:"/api/v1/update/delete",time:null,started:!1,completed:!1},{translationKey:"settings.update_app.running_migrations",stepUrl:"/api/v1/update/migrate",time:null,started:!1,completed:!1},{translationKey:"settings.update_app.finishing_update",stepUrl:"/api/v1/update/finish",time:null,started:!1,completed:!1}]),x=D({isMinor:Boolean,installed:"",version:""});let H=d(null);window.addEventListener("beforeunload",e=>{l.value&&(e.returnValue="Update is in progress!")}),S.get("/api/v1/app/version").then(e=>{B.value=e.data.version});const j=G(()=>m.value!==null?Object.keys(m.value).every(e=>m.value[e]):!0);function M(e){switch(I(e)){case"pending":return"text-primary-800 bg-gray-200";case"finished":return"text-teal-500 bg-teal-100";case"running":return"text-blue-400 bg-blue-100";case"error":return"text-danger bg-red-200";default:return""}}async function A(){try{c.value=!0;let e=await S.get("/api/v1/check/update");if(c.value=!1,!e.data.version){k.showNotification({title:"Info!",type:"info",message:p("settings.update_app.latest_message")});return}e.data&&(x.isMinor=e.data.is_minor,x.version=e.data.version.version,C.value=e.data.version.description,m.value=e.data.version.extensions,b.value=!0,H.value=e.data.version.minimum_php_version,N.value=e.data.version.deleted_files)}catch(e){b.value=!1,c.value=!1,q(e)}}function K(){z.openDialog({title:p("general.are_you_sure"),message:p("settings.update_app.update_warning"),yesLabel:p("general.ok"),noLabel:p("general.cancel"),variant:"danger",hideNoButton:!1,size:"lg"}).then(async e=>{if(e){let _=null;if(!j.value)return k.showNotification({type:"error",message:"Your current configuration does not match the update requirements. Please try again after all the requirements are fulfilled."}),!0;for(let u=0;u{location.reload()},3e3))}catch(g){return r.started=!1,r.completed=!0,q(g),F(r.translationKey),!1}}}})}function F(e){if(p(e).value){K();return}l.value=!1}function I(e){return e.started&&e.completed?"finished":e.started&&!e.completed?"running":!e.started&&!e.completed?"pending":"error"}return(e,_)=>{const u=h("BaseButton"),r=h("BaseDivider"),g=h("BaseHeading"),f=h("BaseIcon"),P=h("BaseSettingCard");return s(),V(P,{title:e.$t("settings.update_app.title"),description:e.$t("settings.update_app.description")},{default:w(()=>[t("div",te,[t("label",ae,a(e.$t("settings.update_app.current_version")),1),t("div",se,a(n(B)),1),v(u,{loading:n(c),disabled:n(c)||n(l),variant:"primary-outline",class:"mt-6",onClick:A},{default:w(()=>[$(a(e.$t("settings.update_app.check_update")),1)]),_:1},8,["loading","disabled"]),n(b)?(s(),V(r,{key:0,class:"mt-6 mb-4"})):y("",!0),n(b)?Q((s(),i("div",ne,[v(g,{type:"heading-title",class:"mb-2"},{default:w(()=>[$(a(e.$t("settings.update_app.avail_update")),1)]),_:1}),t("div",ie,[t("div",re,[t("div",le,[v(f,{name:"InformationCircleIcon",class:"h-5 w-5 text-primary-400","aria-hidden":"true"})]),t("div",oe,[t("h3",de,a(e.$t("general.note")),1),t("div",pe,[t("p",null,a(e.$t("settings.update_app.update_warning")),1)])])])]),t("label",ue,a(e.$t("settings.update_app.next_version")),1),ce,t("div",me,a(x.version),1),t("div",{class:"pl-5 mt-4 mb-8 text-sm leading-snug text-gray-500 update-description",style:{"white-space":"pre-wrap","max-width":"480px"},innerHTML:n(C)},null,8,_e),t("label",ge,a(e.$t("settings.update_app.requirements")),1),t("table",fe,[(s(!0),i(E,null,T(n(m),(o,L)=>(s(),i("tr",{key:L,class:"p-2 border-2 border-gray-200"},[t("td",he,a(L),1),t("td",ve,[o?(s(),i("span",ye)):(s(),i("span",be))])]))),128))]),v(u,{class:"mt-10",variant:"primary",onClick:K},{default:w(()=>[$(a(e.$t("settings.update_app.update")),1)]),_:1})],512)),[[W,!n(l)]]):y("",!0),n(l)?(s(),i("div",xe,[t("div",null,[t("h6",we,a(e.$t("settings.update_app.update_progress")),1),t("p",ke,a(e.$t("settings.update_app.progress_text")),1)]),v(Z,{class:"absolute right-0 h-6 m-1 animate-spin text-primary-400"})])):y("",!0),n(l)?(s(),i("ul",Be,[(s(!0),i(E,null,T(U,o=>(s(),i("li",{key:o.stepUrl,class:"flex justify-between w-full py-3 border-b border-gray-200 border-solid last:border-b-0"},[t("p",Ue,a(e.$t(o.translationKey)),1),t("div",Se,[o.time?(s(),i("span",$e,a(o.time),1)):y("",!0),t("span",{class:X([M(o),"block py-1 text-sm text-center uppercase rounded-full"]),style:{width:"88px"}},a(I(o)),3)])]))),128))])):y("",!0)])]),_:1},8,["title","description"])}}};export{De as default}; +import{u as O,a7 as R,v as J,E as Y,f as d,H as D,s as S,k as G,r as h,o as s,m as V,w,b as t,t as a,l as n,a as v,p as $,K as y,ac as Q,ad as W,c as i,N as E,O as T,J as X,a1 as q}from"./main-pPEsZPea.js";import{L as Z}from"./LoadingIcon-EteEuBl4.js";import{u as ee}from"./exchange-rate-Md-8fXjz.js";const te={class:"pb-8 ml-0"},ae={class:"text-sm not-italic font-medium input-label"},se={class:"box-border flex w-16 p-3 my-2 text-sm text-gray-600 bg-gray-200 border border-gray-200 border-solid rounded-md version"},ne={key:1,class:"mt-4 content"},ie={class:"rounded-md bg-primary-50 p-4 mb-3"},re={class:"flex"},le={class:"shrink-0"},oe={class:"ml-3"},de={class:"text-sm font-medium text-primary-800"},pe={class:"mt-2 text-sm text-primary-700"},ue={class:"text-sm not-italic font-medium input-label"},ce=t("br",null,null,-1),me={class:"box-border flex w-16 p-3 my-2 text-sm text-gray-600 bg-gray-200 border border-gray-200 border-solid rounded-md version"},_e=["innerHTML"],ge={class:"text-sm not-italic font-medium input-label"},fe={class:"w-1/2 mt-2 border-2 border-gray-200 BaseTable-fixed"},he={width:"70%",class:"p-2 text-sm truncate"},ve={width:"30%",class:"p-2 text-sm text-right"},ye={key:0,class:"inline-block w-4 h-4 ml-3 mr-2 bg-green-500 rounded-full"},be={key:1,class:"inline-block w-4 h-4 ml-3 mr-2 bg-red-500 rounded-full"},xe={key:2,class:"relative flex justify-between mt-4 content"},we={class:"m-0 mb-3 font-medium sw-section-title"},ke={class:"mb-8 text-sm leading-snug text-gray-500",style:{"max-width":"480px"}},Be={key:3,class:"w-full p-0 list-none"},Ue={class:"m-0 text-sm leading-8"},Se={class:"flex flex-row items-center"},$e={key:0,class:"mr-3 text-xs text-gray-500"},De={__name:"UpdateAppSetting",setup(Ce){const k=O(),z=R(),{t:p,tm:Ne}=J.useI18n();Y(),ee();let b=d(!1),c=d(!1),C=d(""),B=d(""),m=d(null),N=d(null),l=d(!1);const U=D([{translationKey:"settings.update_app.download_zip_file",stepUrl:"/api/v1/update/download",time:null,started:!1,completed:!1},{translationKey:"settings.update_app.unzipping_package",stepUrl:"/api/v1/update/unzip",time:null,started:!1,completed:!1},{translationKey:"settings.update_app.copying_files",stepUrl:"/api/v1/update/copy",time:null,started:!1,completed:!1},{translationKey:"settings.update_app.deleting_files",stepUrl:"/api/v1/update/delete",time:null,started:!1,completed:!1},{translationKey:"settings.update_app.running_migrations",stepUrl:"/api/v1/update/migrate",time:null,started:!1,completed:!1},{translationKey:"settings.update_app.finishing_update",stepUrl:"/api/v1/update/finish",time:null,started:!1,completed:!1}]),x=D({isMinor:Boolean,installed:"",version:""});let H=d(null);window.addEventListener("beforeunload",e=>{l.value&&(e.returnValue="Update is in progress!")}),S.get("/api/v1/app/version").then(e=>{B.value=e.data.version});const j=G(()=>m.value!==null?Object.keys(m.value).every(e=>m.value[e]):!0);function M(e){switch(I(e)){case"pending":return"text-primary-800 bg-gray-200";case"finished":return"text-teal-500 bg-teal-100";case"running":return"text-blue-400 bg-blue-100";case"error":return"text-danger bg-red-200";default:return""}}async function A(){try{c.value=!0;let e=await S.get("/api/v1/check/update");if(c.value=!1,!e.data.version){k.showNotification({title:"Info!",type:"info",message:p("settings.update_app.latest_message")});return}e.data&&(x.isMinor=e.data.is_minor,x.version=e.data.version.version,C.value=e.data.version.description,m.value=e.data.version.extensions,b.value=!0,H.value=e.data.version.minimum_php_version,N.value=e.data.version.deleted_files)}catch(e){b.value=!1,c.value=!1,q(e)}}function K(){z.openDialog({title:p("general.are_you_sure"),message:p("settings.update_app.update_warning"),yesLabel:p("general.ok"),noLabel:p("general.cancel"),variant:"danger",hideNoButton:!1,size:"lg"}).then(async e=>{if(e){let _=null;if(!j.value)return k.showNotification({type:"error",message:"Your current configuration does not match the update requirements. Please try again after all the requirements are fulfilled."}),!0;for(let u=0;u{location.reload()},3e3))}catch(g){return r.started=!1,r.completed=!0,q(g),F(r.translationKey),!1}}}})}function F(e){if(p(e).value){K();return}l.value=!1}function I(e){return e.started&&e.completed?"finished":e.started&&!e.completed?"running":!e.started&&!e.completed?"pending":"error"}return(e,_)=>{const u=h("BaseButton"),r=h("BaseDivider"),g=h("BaseHeading"),f=h("BaseIcon"),P=h("BaseSettingCard");return s(),V(P,{title:e.$t("settings.update_app.title"),description:e.$t("settings.update_app.description")},{default:w(()=>[t("div",te,[t("label",ae,a(e.$t("settings.update_app.current_version")),1),t("div",se,a(n(B)),1),v(u,{loading:n(c),disabled:n(c)||n(l),variant:"primary-outline",class:"mt-6",onClick:A},{default:w(()=>[$(a(e.$t("settings.update_app.check_update")),1)]),_:1},8,["loading","disabled"]),n(b)?(s(),V(r,{key:0,class:"mt-6 mb-4"})):y("",!0),n(b)?Q((s(),i("div",ne,[v(g,{type:"heading-title",class:"mb-2"},{default:w(()=>[$(a(e.$t("settings.update_app.avail_update")),1)]),_:1}),t("div",ie,[t("div",re,[t("div",le,[v(f,{name:"InformationCircleIcon",class:"h-5 w-5 text-primary-400","aria-hidden":"true"})]),t("div",oe,[t("h3",de,a(e.$t("general.note")),1),t("div",pe,[t("p",null,a(e.$t("settings.update_app.update_warning")),1)])])])]),t("label",ue,a(e.$t("settings.update_app.next_version")),1),ce,t("div",me,a(x.version),1),t("div",{class:"pl-5 mt-4 mb-8 text-sm leading-snug text-gray-500 update-description",style:{"white-space":"pre-wrap","max-width":"480px"},innerHTML:n(C)},null,8,_e),t("label",ge,a(e.$t("settings.update_app.requirements")),1),t("table",fe,[(s(!0),i(E,null,T(n(m),(o,L)=>(s(),i("tr",{key:L,class:"p-2 border-2 border-gray-200"},[t("td",he,a(L),1),t("td",ve,[o?(s(),i("span",ye)):(s(),i("span",be))])]))),128))]),v(u,{class:"mt-10",variant:"primary",onClick:K},{default:w(()=>[$(a(e.$t("settings.update_app.update")),1)]),_:1})],512)),[[W,!n(l)]]):y("",!0),n(l)?(s(),i("div",xe,[t("div",null,[t("h6",we,a(e.$t("settings.update_app.update_progress")),1),t("p",ke,a(e.$t("settings.update_app.progress_text")),1)]),v(Z,{class:"absolute right-0 h-6 m-1 animate-spin text-primary-400"})])):y("",!0),n(l)?(s(),i("ul",Be,[(s(!0),i(E,null,T(U,o=>(s(),i("li",{key:o.stepUrl,class:"flex justify-between w-full py-3 border-b border-gray-200 border-solid last:border-b-0"},[t("p",Ue,a(e.$t(o.translationKey)),1),t("div",Se,[o.time?(s(),i("span",$e,a(o.time),1)):y("",!0),t("span",{class:X([M(o),"block py-1 text-sm text-center uppercase rounded-full"]),style:{width:"88px"}},a(I(o)),3)])]))),128))])):y("",!0)])]),_:1},8,["title","description"])}}};export{De as default}; diff --git a/public/build/assets/UrlType-txLUbTpu.js b/public/build/assets/UrlType-1hVHE1M4.js similarity index 85% rename from public/build/assets/UrlType-txLUbTpu.js rename to public/build/assets/UrlType-1hVHE1M4.js index 26a36ba1..83b5f358 100644 --- a/public/build/assets/UrlType-txLUbTpu.js +++ b/public/build/assets/UrlType-1hVHE1M4.js @@ -1 +1 @@ -import{k as m,r,o as d,m as c}from"./main-B9dpPbRR.js";const i={__name:"UrlType",props:{modelValue:{type:String,default:null}},emits:["update:modelValue"],setup(o,{emit:a}){const u=o,n=a,e=m({get:()=>u.modelValue,set:t=>{n("update:modelValue",t)}});return(t,l)=>{const p=r("BaseInput");return d(),c(p,{modelValue:e.value,"onUpdate:modelValue":l[0]||(l[0]=s=>e.value=s),type:"url"},null,8,["modelValue"])}}};export{i as default}; +import{k as m,r,o as d,m as c}from"./main-pPEsZPea.js";const i={__name:"UrlType",props:{modelValue:{type:String,default:null}},emits:["update:modelValue"],setup(o,{emit:a}){const u=o,n=a,e=m({get:()=>u.modelValue,set:t=>{n("update:modelValue",t)}});return(t,l)=>{const p=r("BaseInput");return d(),c(p,{modelValue:e.value,"onUpdate:modelValue":l[0]||(l[0]=s=>e.value=s),type:"url"},null,8,["modelValue"])}}};export{i as default}; diff --git a/public/build/assets/View-AlNYu5Xd.js b/public/build/assets/View-27zXteWI.js similarity index 93% rename from public/build/assets/View-AlNYu5Xd.js rename to public/build/assets/View-27zXteWI.js index 46240585..e5b2dd57 100644 --- a/public/build/assets/View-AlNYu5Xd.js +++ b/public/build/assets/View-27zXteWI.js @@ -1 +1 @@ -import{L as Q,v as W,H as j,f as v,a5 as X,u as Y,k as B,z as Z,P as ee,r as d,o as u,m as y,w as s,a,l as n,J as z,p as V,t as m,K as k,b as l,bc as F,bd as te,c as S,O as oe,N as ae}from"./main-B9dpPbRR.js";import{u as se}from"./invoice-X3Pf-vKp.js";import{u as ne}from"./global-1F4OAoew.js";import"./auth-6FPSPboo.js";const re={class:"fixed top-0 left-0 hidden h-full pt-16 pb-4 bg-white w-88 xl:block"},le={class:"flex items-center justify-between px-4 pt-8 pb-6 border border-gray-200 border-solid"},ie={class:"flex ml-3",role:"group","aria-label":"First group"},de={class:"px-4 py-1 pb-2 mb-2 text-sm border-b border-gray-200 border-solid"},ce={class:"px-2"},ue={class:"px-2"},me={class:"px-2"},pe={class:"h-full pb-32 overflow-y-scroll border-l border-gray-200 border-solid sw-scroll"},_e={class:"flex-2"},fe={class:"mb-1 not-italic font-medium leading-5 text-gray-500 capitalize text-md"},ve={class:"flex-1 whitespace-nowrap right"},ye={class:"text-sm text-right text-gray-500 non-italic"},be={key:0,class:"flex justify-center px-4 mt-5 text-sm text-gray-600"},he={class:"flex flex-col min-h-0 mt-8 overflow-hidden",style:{height:"75vh"}},ge=["src"],ke={__name:"View",setup(Be){const p=Q(),i=se(),_=ne(),{tm:$}=W.useI18n();let b=j({}),t=j({orderBy:"",orderByField:"",invoice_number:""});v(null),v(null);let w=v(!1),N=v(!1);v(!1),X("utils"),Y();const R=B(()=>i.selectedViewInvoice),P=B(()=>t.orderBy==="asc"||t.orderBy==null);B(()=>P.value?$("general.ascending"):$("general.descending"));const D=B(()=>b.unique_hash?`/invoices/pdf/${b.unique_hash}`:!1);Z(p,()=>{C()}),E(),C(),c=ee.debounce(c,500);function U(e){return p.params.id==e}async function E(){await i.fetchInvoices({limit:"all"},_.companySlug),setTimeout(()=>{L()},500)}async function C(){if(p&&p.params.id){let e=await i.fetchViewInvoice({id:p.params.id},_.companySlug);e.data&&Object.assign(b,e.data.data)}}function L(){const e=document.getElementById(`invoice-${p.params.id}`);e&&(e.scrollIntoView({behavior:"smooth"}),e.classList.add("shake"))}async function c(){let e={};t.invoice_number!==""&&t.invoice_number!==null&&t.invoice_number!==void 0&&(e.invoice_number=t.invoice_number),t.orderBy!==null&&t.orderBy!==void 0&&(e.orderBy=t.orderBy),t.orderByField!==null&&t.orderByField!==void 0&&(e.orderByField=t.orderByField),w.value=!0;try{let r=await i.searchInvoice(e,_.companySlug);w.value=!1,r.data.data&&(i.invoices=r.data.data)}catch{w.value=!1}}function T(){return t.orderBy==="asc"?(t.orderBy="desc",c(),!0):(t.orderBy="asc",c(),!0)}function q(){router.push({name:"invoice.portal.payment",params:{id:i.selectedViewInvoice.id,company:i.selectedViewInvoice.company.slug}})}return(e,r)=>{const f=d("BaseIcon"),h=d("BaseButton"),A=d("BasePageHeader"),G=d("BaseInput"),I=d("BaseRadio"),x=d("BaseInputGroup"),H=d("BaseInvoiceStatusBadge"),M=d("BaseFormatMoney"),O=d("router-link"),J=d("BasePage");return u(),y(J,{class:"xl:pl-96"},{default:s(()=>[a(A,{title:R.value.invoice_number},{actions:s(()=>{var o,g;return[a(h,{disabled:n(N),variant:"primary-outline",class:"mr-2",tag:"a",href:`/invoices/pdf/${n(b).unique_hash}`,download:""},{left:s(K=>[a(f,{name:"DownloadIcon",class:z(K.class)},null,8,["class"]),V(" "+m(e.$t("invoices.download")),1)]),_:1},8,["disabled","href"]),((g=(o=n(i))==null?void 0:o.selectedViewInvoice)==null?void 0:g.paid_status)!=="PAID"&&n(_).enabledModules.includes("Payments")?(u(),y(h,{key:0,variant:"primary",onClick:q},{default:s(()=>[V(m(e.$t("invoices.pay_invoice")),1)]),_:1})):k("",!0)]}),_:1},8,["title"]),l("div",re,[l("div",le,[a(G,{modelValue:n(t).invoice_number,"onUpdate:modelValue":r[0]||(r[0]=o=>n(t).invoice_number=o),placeholder:e.$t("general.search"),type:"text",variant:"gray",onInput:c},{right:s(()=>[a(f,{name:"SearchIcon",class:"h-5 text-gray-400"})]),_:1},8,["modelValue","placeholder"]),l("div",ie,[a(te,{position:"bottom-start","width-class":"w-50","position-class":"left-0"},{activator:s(()=>[a(h,{variant:"gray"},{default:s(()=>[a(f,{name:"FilterIcon",class:"h-5"})]),_:1})]),default:s(()=>[l("div",de,m(e.$t("general.sort_by")),1),l("div",ce,[a(F,{class:"pt-3 rounded-md hover:rounded-md"},{default:s(()=>[a(x,{class:"-mt-3 font-normal"},{default:s(()=>[a(I,{id:"filter_invoice_date",modelValue:n(t).orderByField,"onUpdate:modelValue":[r[1]||(r[1]=o=>n(t).orderByField=o),c],label:e.$t("invoices.invoice_date"),name:"filter",size:"sm",value:"invoice_date"},null,8,["modelValue","label"])]),_:1})]),_:1})]),l("div",ue,[a(F,{class:"pt-3 rounded-md hover:rounded-md"},{default:s(()=>[a(x,{class:"-mt-3 font-normal"},{default:s(()=>[a(I,{id:"filter_due_date",modelValue:n(t).orderByField,"onUpdate:modelValue":[r[2]||(r[2]=o=>n(t).orderByField=o),c],label:e.$t("invoices.due_date"),name:"filter",size:"sm",value:"due_date"},null,8,["modelValue","label"])]),_:1})]),_:1})]),l("div",me,[a(F,{class:"pt-3 rounded-md hover:rounded-md"},{default:s(()=>[a(x,{class:"-mt-3 font-normal"},{default:s(()=>[a(I,{id:"filter_invoice_number",modelValue:n(t).orderByField,"onUpdate:modelValue":[r[3]||(r[3]=o=>n(t).orderByField=o),c],label:e.$t("invoices.invoice_number"),size:"sm",name:"filter",value:"invoice_number"},null,8,["modelValue","label"])]),_:1})]),_:1})])]),_:1}),a(h,{class:"ml-1",variant:"white",onClick:T},{default:s(()=>[P.value?(u(),y(f,{key:0,name:"SortAscendingIcon",class:"h-5"})):(u(),y(f,{key:1,name:"SortDescendingIcon",class:"h-5"}))]),_:1})])]),l("div",pe,[(u(!0),S(ae,null,oe(n(i).invoices,(o,g)=>(u(),y(O,{id:"invoice-"+o.id,key:g,to:`/${n(_).companySlug}/customer/invoices/${o.id}/view`,class:z(["flex justify-between p-4 items-center cursor-pointer hover:bg-gray-100 border-l-4 border-transparent",{"bg-gray-100 border-l-4 border-primary-500 border-solid":U(o.id)}]),style:{"border-bottom":"1px solid rgba(185, 193, 209, 0.41)"}},{default:s(()=>[l("div",_e,[l("div",fe,m(o.invoice_number),1),a(H,{status:o.status},{default:s(()=>[V(m(o.status),1)]),_:2},1032,["status"])]),l("div",ve,[a(M,{class:"mb-2 text-xl not-italic font-semibold leading-8 text-right text-gray-900 block",amount:o.total,currency:o.currency},null,8,["amount","currency"]),l("div",ye,m(o.formatted_invoice_date),1)])]),_:2},1032,["id","to","class"]))),128)),n(i).invoices.length?k("",!0):(u(),S("p",be,m(e.$t("invoices.no_matching_invoices")),1))])]),l("div",he,[D.value?(u(),S("iframe",{key:0,ref:"report",src:D.value,class:"flex-1 border border-gray-400 border-solid rounded-md",onClick:r[4]||(r[4]=(...o)=>e.ViewReportsPDF&&e.ViewReportsPDF(...o))},null,8,ge)):k("",!0)])]),_:1})}}};export{ke as default}; +import{L as Q,v as W,H as C,f as v,a5 as X,u as Y,k as B,z as Z,P as ee,r as d,o as u,m as y,w as s,a,l as n,J as z,p as V,t as m,K as k,b as l,bj as F,bk as te,c as S,O as oe,N as ae}from"./main-pPEsZPea.js";import{u as se}from"./invoice-raGfV3XT.js";import{u as ne}from"./global-s5lx2XuM.js";import"./auth-mYHkZCAB.js";const re={class:"fixed top-0 left-0 hidden h-full pt-16 pb-4 bg-white w-88 xl:block"},le={class:"flex items-center justify-between px-4 pt-8 pb-6 border border-gray-200 border-solid"},ie={class:"flex ml-3",role:"group","aria-label":"First group"},de={class:"px-4 py-1 pb-2 mb-2 text-sm border-b border-gray-200 border-solid"},ce={class:"px-2"},ue={class:"px-2"},me={class:"px-2"},pe={class:"h-full pb-32 overflow-y-scroll border-l border-gray-200 border-solid sw-scroll"},_e={class:"flex-2"},fe={class:"mb-1 not-italic font-medium leading-5 text-gray-500 capitalize text-md"},ve={class:"flex-1 whitespace-nowrap right"},ye={class:"text-sm text-right text-gray-500 non-italic"},be={key:0,class:"flex justify-center px-4 mt-5 text-sm text-gray-600"},he={class:"flex flex-col min-h-0 mt-8 overflow-hidden",style:{height:"75vh"}},ge=["src"],ke={__name:"View",setup(Be){const p=Q(),i=se(),_=ne(),{tm:$}=W.useI18n();let b=C({}),t=C({orderBy:"",orderByField:"",invoice_number:""});v(null),v(null);let w=v(!1),N=v(!1);v(!1),X("utils"),Y();const R=B(()=>i.selectedViewInvoice),P=B(()=>t.orderBy==="asc"||t.orderBy==null);B(()=>P.value?$("general.ascending"):$("general.descending"));const D=B(()=>b.unique_hash?`/invoices/pdf/${b.unique_hash}`:!1);Z(p,()=>{j()}),E(),j(),c=ee.debounce(c,500);function U(e){return p.params.id==e}async function E(){await i.fetchInvoices({limit:"all"},_.companySlug),setTimeout(()=>{L()},500)}async function j(){if(p&&p.params.id){let e=await i.fetchViewInvoice({id:p.params.id},_.companySlug);e.data&&Object.assign(b,e.data.data)}}function L(){const e=document.getElementById(`invoice-${p.params.id}`);e&&(e.scrollIntoView({behavior:"smooth"}),e.classList.add("shake"))}async function c(){let e={};t.invoice_number!==""&&t.invoice_number!==null&&t.invoice_number!==void 0&&(e.invoice_number=t.invoice_number),t.orderBy!==null&&t.orderBy!==void 0&&(e.orderBy=t.orderBy),t.orderByField!==null&&t.orderByField!==void 0&&(e.orderByField=t.orderByField),w.value=!0;try{let r=await i.searchInvoice(e,_.companySlug);w.value=!1,r.data.data&&(i.invoices=r.data.data)}catch{w.value=!1}}function T(){return t.orderBy==="asc"?(t.orderBy="desc",c(),!0):(t.orderBy="asc",c(),!0)}function q(){router.push({name:"invoice.portal.payment",params:{id:i.selectedViewInvoice.id,company:i.selectedViewInvoice.company.slug}})}return(e,r)=>{const f=d("BaseIcon"),h=d("BaseButton"),A=d("BasePageHeader"),G=d("BaseInput"),I=d("BaseRadio"),x=d("BaseInputGroup"),H=d("BaseInvoiceStatusBadge"),M=d("BaseFormatMoney"),O=d("router-link"),J=d("BasePage");return u(),y(J,{class:"xl:pl-96"},{default:s(()=>[a(A,{title:R.value.invoice_number},{actions:s(()=>{var o,g;return[a(h,{disabled:n(N),variant:"primary-outline",class:"mr-2",tag:"a",href:`/invoices/pdf/${n(b).unique_hash}`,download:""},{left:s(K=>[a(f,{name:"DownloadIcon",class:z(K.class)},null,8,["class"]),V(" "+m(e.$t("invoices.download")),1)]),_:1},8,["disabled","href"]),((g=(o=n(i))==null?void 0:o.selectedViewInvoice)==null?void 0:g.paid_status)!=="PAID"&&n(_).enabledModules.includes("Payments")?(u(),y(h,{key:0,variant:"primary",onClick:q},{default:s(()=>[V(m(e.$t("invoices.pay_invoice")),1)]),_:1})):k("",!0)]}),_:1},8,["title"]),l("div",re,[l("div",le,[a(G,{modelValue:n(t).invoice_number,"onUpdate:modelValue":r[0]||(r[0]=o=>n(t).invoice_number=o),placeholder:e.$t("general.search"),type:"text",variant:"gray",onInput:c},{right:s(()=>[a(f,{name:"SearchIcon",class:"h-5 text-gray-400"})]),_:1},8,["modelValue","placeholder"]),l("div",ie,[a(te,{position:"bottom-start","width-class":"w-50","position-class":"left-0"},{activator:s(()=>[a(h,{variant:"gray"},{default:s(()=>[a(f,{name:"FilterIcon",class:"h-5"})]),_:1})]),default:s(()=>[l("div",de,m(e.$t("general.sort_by")),1),l("div",ce,[a(F,{class:"pt-3 rounded-md hover:rounded-md"},{default:s(()=>[a(x,{class:"-mt-3 font-normal"},{default:s(()=>[a(I,{id:"filter_invoice_date",modelValue:n(t).orderByField,"onUpdate:modelValue":[r[1]||(r[1]=o=>n(t).orderByField=o),c],label:e.$t("invoices.invoice_date"),name:"filter",size:"sm",value:"invoice_date"},null,8,["modelValue","label"])]),_:1})]),_:1})]),l("div",ue,[a(F,{class:"pt-3 rounded-md hover:rounded-md"},{default:s(()=>[a(x,{class:"-mt-3 font-normal"},{default:s(()=>[a(I,{id:"filter_due_date",modelValue:n(t).orderByField,"onUpdate:modelValue":[r[2]||(r[2]=o=>n(t).orderByField=o),c],label:e.$t("invoices.due_date"),name:"filter",size:"sm",value:"due_date"},null,8,["modelValue","label"])]),_:1})]),_:1})]),l("div",me,[a(F,{class:"pt-3 rounded-md hover:rounded-md"},{default:s(()=>[a(x,{class:"-mt-3 font-normal"},{default:s(()=>[a(I,{id:"filter_invoice_number",modelValue:n(t).orderByField,"onUpdate:modelValue":[r[3]||(r[3]=o=>n(t).orderByField=o),c],label:e.$t("invoices.invoice_number"),size:"sm",name:"filter",value:"invoice_number"},null,8,["modelValue","label"])]),_:1})]),_:1})])]),_:1}),a(h,{class:"ml-1",variant:"white",onClick:T},{default:s(()=>[P.value?(u(),y(f,{key:0,name:"SortAscendingIcon",class:"h-5"})):(u(),y(f,{key:1,name:"SortDescendingIcon",class:"h-5"}))]),_:1})])]),l("div",pe,[(u(!0),S(ae,null,oe(n(i).invoices,(o,g)=>(u(),y(O,{id:"invoice-"+o.id,key:g,to:`/${n(_).companySlug}/customer/invoices/${o.id}/view`,class:z(["flex justify-between p-4 items-center cursor-pointer hover:bg-gray-100 border-l-4 border-transparent",{"bg-gray-100 border-l-4 border-primary-500 border-solid":U(o.id)}]),style:{"border-bottom":"1px solid rgba(185, 193, 209, 0.41)"}},{default:s(()=>[l("div",_e,[l("div",fe,m(o.invoice_number),1),a(H,{status:o.status},{default:s(()=>[V(m(o.status),1)]),_:2},1032,["status"])]),l("div",ve,[a(M,{class:"mb-2 text-xl not-italic font-semibold leading-8 text-right text-gray-900 block",amount:o.total,currency:o.currency},null,8,["amount","currency"]),l("div",ye,m(o.formatted_invoice_date),1)])]),_:2},1032,["id","to","class"]))),128)),n(i).invoices.length?k("",!0):(u(),S("p",be,m(e.$t("invoices.no_matching_invoices")),1))])]),l("div",he,[D.value?(u(),S("iframe",{key:0,ref:"report",src:D.value,class:"flex-1 border border-gray-400 border-solid rounded-md",onClick:r[4]||(r[4]=(...o)=>e.ViewReportsPDF&&e.ViewReportsPDF(...o))},null,8,ge)):k("",!0)])]),_:1})}}};export{ke as default}; diff --git a/public/build/assets/View-OTsA5-it.js b/public/build/assets/View-7_e7P4hR.js similarity index 96% rename from public/build/assets/View-OTsA5-it.js rename to public/build/assets/View-7_e7P4hR.js index 2bfaf585..9ed1016b 100644 --- a/public/build/assets/View-OTsA5-it.js +++ b/public/build/assets/View-7_e7P4hR.js @@ -1 +1 @@ -import{L as oe,v as se,H,f as y,F as le,M as ne,k as x,z as re,P as de,a7 as ie,r,o as i,c as v,a as o,w as s,l,Q as ce,m as V,p as ue,t as g,K as k,b as n,N as Y,O as me,J as fe,ab as pe}from"./main-B9dpPbRR.js";import{u as _e}from"./payment-Y8OywN76.js";import{_ as ye,a as ve}from"./SendPaymentModal-uAR5T6RF.js";import{L as ge}from"./LoadingIcon-eCpWurti.js";import"./mail-driver-L7_iQECX.js";const he={class:"fixed top-0 left-0 hidden h-full pt-16 pb-[6rem] ml-56 bg-white xl:ml-64 w-88 xl:block"},be={class:"flex items-center justify-between px-4 pt-8 pb-6 border border-gray-200 border-solid"},Be={class:"flex ml-3",role:"group","aria-label":"First group"},xe={class:"px-4 py-1 pb-2 mb-2 text-sm border-b border-gray-200 border-solid"},ke={class:"px-2"},we={class:"px-2"},Fe={class:"px-2"},Ie={class:"flex-2"},Ve={class:"mb-1 text-xs not-italic font-medium leading-5 text-gray-500 capitalize"},Pe={class:"mb-1 text-xs not-italic font-medium leading-5 text-gray-500 capitalize"},Te={class:"flex-1 whitespace-nowrap right"},Se={class:"text-sm text-right text-gray-500 non-italic"},De={key:0,class:"flex justify-center p-4 items-center"},$e={key:1,class:"flex justify-center px-4 mt-5 text-sm text-gray-600"},Le={class:"flex flex-col min-h-0 mt-8 overflow-hidden",style:{height:"75vh"}},ze=["src"],He={__name:"View",setup(Me){const _=oe(),{t:P}=se.useI18n();let f=H({}),a=H({orderBy:null,orderByField:null,searchText:null}),h=y(!1),w=y(!1);const b=_e(),A=le(),O=ne(),c=y(null),B=y(1),T=y(1),z=y(null),R=x(()=>f.payment_number||""),M=x(()=>a.orderBy==="asc"||a.orderBy==null);x(()=>M.value?P("general.ascending"):P("general.descending"));const N=x(()=>f.unique_hash?`/payments/pdf/${f.unique_hash}`:!1);x(()=>{var e;return pe((e=b==null?void 0:b.selectedPayment)==null?void 0:e.payment_date).format("YYYY/MM/DD")}),re(_,()=>{j()}),F(),j(),m=de.debounce(m,500);function q(e){return _.params.id==e}ie();async function F(e,d=!1){if(h.value)return;let u={};a.searchText!==""&&a.searchText!==null&&a.searchText!==void 0&&(u.search=a.searchText),a.orderBy!==null&&a.orderBy!==void 0&&(u.orderBy=a.orderBy),a.orderByField!==null&&a.orderByField!==void 0&&(u.orderByField=a.orderByField),h.value=!0;let I=await b.fetchPayments({page:e,...u});h.value=!1,c.value=c.value?c.value:[],c.value=[...c.value,...I.data.data],B.value=e||1,T.value=I.data.meta.last_page;let p=c.value.find(S=>S.id==_.params.id);d==!1&&!p&&B.value{d==!1&&G()},500)}async function j(){if(!_.params.id)return;w.value=!0;let e=await b.fetchPayment(_.params.id);e.data&&(w.value=!1,Object.assign(f,e.data.data))}function G(){const e=document.getElementById(`payment-${_.params.id}`);e&&(e.scrollIntoView({behavior:"smooth"}),e.classList.add("shake"),J())}function J(){z.value.addEventListener("scroll",e=>{e.target.scrollTop>0&&e.target.scrollTop+e.target.clientHeight>e.target.scrollHeight-200&&B.value{const u=r("BaseButton"),I=r("BasePageHeader"),p=r("BaseIcon"),S=r("BaseInput"),D=r("BaseRadio"),$=r("BaseInputGroup"),L=r("BaseDropdownItem"),W=r("BaseDropdown"),X=r("BaseText"),Z=r("BaseFormatMoney"),ee=r("router-link"),te=r("BasePage");return i(),v(Y,null,[o(ye),o(te,{class:"xl:pl-96"},{default:s(()=>{var C;return[o(I,{title:R.value},{actions:s(()=>[l(O).hasAbilities(l(ce).SEND_PAYMENT)?(i(),V(u,{key:0,"content-loading":l(w),variant:"primary",onClick:Q},{default:s(()=>[ue(g(e.$t("payments.send_payment_receipt")),1)]),_:1},8,["content-loading"])):k("",!0),o(ve,{"content-loading":l(w),class:"ml-3",row:l(f)},null,8,["content-loading","row"])]),_:1},8,["title"]),n("div",he,[n("div",be,[o(S,{modelValue:l(a).searchText,"onUpdate:modelValue":d[0]||(d[0]=t=>l(a).searchText=t),placeholder:e.$t("general.search"),type:"text",onInput:m},{default:s(()=>[o(p,{name:"SearchIcon",class:"h-5"})]),_:1},8,["modelValue","placeholder"]),n("div",Be,[o(W,{position:"bottom-start","width-class":"w-50","position-class":"left-0"},{activator:s(()=>[o(u,{variant:"gray"},{default:s(()=>[o(p,{name:"FilterIcon"})]),_:1})]),default:s(()=>[n("div",xe,g(e.$t("general.sort_by")),1),n("div",ke,[o(L,{class:"pt-3 rounded-md hover:rounded-md"},{default:s(()=>[o($,{class:"-mt-3 font-normal"},{default:s(()=>[o(D,{id:"filter_invoice_number",modelValue:l(a).orderByField,"onUpdate:modelValue":[d[1]||(d[1]=t=>l(a).orderByField=t),m],label:e.$t("invoices.title"),size:"sm",name:"filter",value:"invoice_number"},null,8,["modelValue","label"])]),_:1})]),_:1})]),n("div",we,[o(L,{class:"pt-3 rounded-md hover:rounded-md"},{default:s(()=>[o($,{class:"-mt-3 font-normal"},{default:s(()=>[o(D,{modelValue:l(a).orderByField,"onUpdate:modelValue":[d[2]||(d[2]=t=>l(a).orderByField=t),m],label:e.$t("payments.date"),size:"sm",name:"filter",value:"payment_date"},null,8,["modelValue","label"])]),_:1})]),_:1})]),n("div",Fe,[o(L,{class:"pt-3 rounded-md hover:rounded-md"},{default:s(()=>[o($,{class:"-mt-3 font-normal"},{default:s(()=>[o(D,{id:"filter_payment_number",modelValue:l(a).orderByField,"onUpdate:modelValue":[d[3]||(d[3]=t=>l(a).orderByField=t),m],label:e.$t("payments.payment_number"),size:"sm",name:"filter",value:"payment_number"},null,8,["modelValue","label"])]),_:1})]),_:1})])]),_:1}),o(u,{class:"ml-1",size:"md",variant:"gray",onClick:K},{default:s(()=>[M.value?(i(),V(p,{key:0,name:"SortAscendingIcon"})):(i(),V(p,{key:1,name:"SortDescendingIcon"}))]),_:1})])]),n("div",{ref_key:"paymentListSection",ref:z,class:"h-full overflow-y-scroll border-l border-gray-200 border-solid"},[(i(!0),v(Y,null,me(c.value,(t,ae)=>(i(),v("div",{key:ae},[t?(i(),V(ee,{key:0,id:"payment-"+t.id,to:`/admin/payments/${t.id}/view`,class:fe(["flex justify-between p-4 items-center cursor-pointer hover:bg-gray-100 border-l-4 border-transparent",{"bg-gray-100 border-l-4 border-primary-500 border-solid":q(t.id)}]),style:{"border-bottom":"1px solid rgba(185, 193, 209, 0.41)"}},{default:s(()=>{var E,U;return[n("div",Ie,[o(X,{text:(E=t==null?void 0:t.customer)==null?void 0:E.name,length:30,class:"pr-2 mb-2 text-sm not-italic font-normal leading-5 text-black capitalize truncate"},null,8,["text"]),n("div",Ve,g(t==null?void 0:t.payment_number),1),n("div",Pe,g(t==null?void 0:t.invoice_number),1)]),n("div",Te,[o(Z,{class:"block mb-2 text-xl not-italic font-semibold leading-8 text-right text-gray-900",amount:t==null?void 0:t.amount,currency:(U=t.customer)==null?void 0:U.currency},null,8,["amount","currency"]),n("div",Se,g(t.formatted_payment_date),1)])]}),_:2},1032,["id","to","class"])):k("",!0)]))),128)),l(h)?(i(),v("div",De,[o(ge,{class:"h-6 m-1 animate-spin text-primary-400"})])):k("",!0),!((C=c.value)!=null&&C.length)&&!l(h)?(i(),v("p",$e,g(e.$t("payments.no_matching_payments")),1)):k("",!0)],512)]),n("div",Le,[N.value?(i(),v("iframe",{key:0,src:N.value,class:"flex-1 border border-gray-400 border-solid rounded-md"},null,8,ze)):k("",!0)])]}),_:1})],64)}}};export{He as default}; +import{L as oe,v as se,H,f as y,F as le,M as ne,k as x,z as re,P as de,a7 as ie,r,o as i,c as v,a as o,w as s,l,Q as ce,m as V,p as ue,t as g,K as k,b as n,N as Y,O as me,J as fe,ab as pe}from"./main-pPEsZPea.js";import{u as _e}from"./payment-fIjVKZH2.js";import{_ as ye,a as ve}from"./SendPaymentModal-MAlrG3n8.js";import{L as ge}from"./LoadingIcon-EteEuBl4.js";import"./mail-driver-SNHZXvKB.js";const he={class:"fixed top-0 left-0 hidden h-full pt-16 pb-[6rem] ml-56 bg-white xl:ml-64 w-88 xl:block"},be={class:"flex items-center justify-between px-4 pt-8 pb-6 border border-gray-200 border-solid"},Be={class:"flex ml-3",role:"group","aria-label":"First group"},xe={class:"px-4 py-1 pb-2 mb-2 text-sm border-b border-gray-200 border-solid"},ke={class:"px-2"},we={class:"px-2"},Fe={class:"px-2"},Ie={class:"flex-2"},Ve={class:"mb-1 text-xs not-italic font-medium leading-5 text-gray-500 capitalize"},Pe={class:"mb-1 text-xs not-italic font-medium leading-5 text-gray-500 capitalize"},Te={class:"flex-1 whitespace-nowrap right"},Se={class:"text-sm text-right text-gray-500 non-italic"},De={key:0,class:"flex justify-center p-4 items-center"},$e={key:1,class:"flex justify-center px-4 mt-5 text-sm text-gray-600"},Le={class:"flex flex-col min-h-0 mt-8 overflow-hidden",style:{height:"75vh"}},ze=["src"],He={__name:"View",setup(Me){const _=oe(),{t:P}=se.useI18n();let f=H({}),a=H({orderBy:null,orderByField:null,searchText:null}),h=y(!1),w=y(!1);const b=_e(),A=le(),O=ne(),c=y(null),B=y(1),T=y(1),z=y(null),R=x(()=>f.payment_number||""),M=x(()=>a.orderBy==="asc"||a.orderBy==null);x(()=>M.value?P("general.ascending"):P("general.descending"));const N=x(()=>f.unique_hash?`/payments/pdf/${f.unique_hash}`:!1);x(()=>{var e;return pe((e=b==null?void 0:b.selectedPayment)==null?void 0:e.payment_date).format("YYYY/MM/DD")}),re(_,()=>{j()}),F(),j(),m=de.debounce(m,500);function q(e){return _.params.id==e}ie();async function F(e,d=!1){if(h.value)return;let u={};a.searchText!==""&&a.searchText!==null&&a.searchText!==void 0&&(u.search=a.searchText),a.orderBy!==null&&a.orderBy!==void 0&&(u.orderBy=a.orderBy),a.orderByField!==null&&a.orderByField!==void 0&&(u.orderByField=a.orderByField),h.value=!0;let I=await b.fetchPayments({page:e,...u});h.value=!1,c.value=c.value?c.value:[],c.value=[...c.value,...I.data.data],B.value=e||1,T.value=I.data.meta.last_page;let p=c.value.find(S=>S.id==_.params.id);d==!1&&!p&&B.value{d==!1&&G()},500)}async function j(){if(!_.params.id)return;w.value=!0;let e=await b.fetchPayment(_.params.id);e.data&&(w.value=!1,Object.assign(f,e.data.data))}function G(){const e=document.getElementById(`payment-${_.params.id}`);e&&(e.scrollIntoView({behavior:"smooth"}),e.classList.add("shake"),J())}function J(){z.value.addEventListener("scroll",e=>{e.target.scrollTop>0&&e.target.scrollTop+e.target.clientHeight>e.target.scrollHeight-200&&B.value{const u=r("BaseButton"),I=r("BasePageHeader"),p=r("BaseIcon"),S=r("BaseInput"),D=r("BaseRadio"),$=r("BaseInputGroup"),L=r("BaseDropdownItem"),W=r("BaseDropdown"),X=r("BaseText"),Z=r("BaseFormatMoney"),ee=r("router-link"),te=r("BasePage");return i(),v(Y,null,[o(ye),o(te,{class:"xl:pl-96"},{default:s(()=>{var C;return[o(I,{title:R.value},{actions:s(()=>[l(O).hasAbilities(l(ce).SEND_PAYMENT)?(i(),V(u,{key:0,"content-loading":l(w),variant:"primary",onClick:Q},{default:s(()=>[ue(g(e.$t("payments.send_payment_receipt")),1)]),_:1},8,["content-loading"])):k("",!0),o(ve,{"content-loading":l(w),class:"ml-3",row:l(f)},null,8,["content-loading","row"])]),_:1},8,["title"]),n("div",he,[n("div",be,[o(S,{modelValue:l(a).searchText,"onUpdate:modelValue":d[0]||(d[0]=t=>l(a).searchText=t),placeholder:e.$t("general.search"),type:"text",onInput:m},{default:s(()=>[o(p,{name:"SearchIcon",class:"h-5"})]),_:1},8,["modelValue","placeholder"]),n("div",Be,[o(W,{position:"bottom-start","width-class":"w-50","position-class":"left-0"},{activator:s(()=>[o(u,{variant:"gray"},{default:s(()=>[o(p,{name:"FilterIcon"})]),_:1})]),default:s(()=>[n("div",xe,g(e.$t("general.sort_by")),1),n("div",ke,[o(L,{class:"pt-3 rounded-md hover:rounded-md"},{default:s(()=>[o($,{class:"-mt-3 font-normal"},{default:s(()=>[o(D,{id:"filter_invoice_number",modelValue:l(a).orderByField,"onUpdate:modelValue":[d[1]||(d[1]=t=>l(a).orderByField=t),m],label:e.$t("invoices.title"),size:"sm",name:"filter",value:"invoice_number"},null,8,["modelValue","label"])]),_:1})]),_:1})]),n("div",we,[o(L,{class:"pt-3 rounded-md hover:rounded-md"},{default:s(()=>[o($,{class:"-mt-3 font-normal"},{default:s(()=>[o(D,{modelValue:l(a).orderByField,"onUpdate:modelValue":[d[2]||(d[2]=t=>l(a).orderByField=t),m],label:e.$t("payments.date"),size:"sm",name:"filter",value:"payment_date"},null,8,["modelValue","label"])]),_:1})]),_:1})]),n("div",Fe,[o(L,{class:"pt-3 rounded-md hover:rounded-md"},{default:s(()=>[o($,{class:"-mt-3 font-normal"},{default:s(()=>[o(D,{id:"filter_payment_number",modelValue:l(a).orderByField,"onUpdate:modelValue":[d[3]||(d[3]=t=>l(a).orderByField=t),m],label:e.$t("payments.payment_number"),size:"sm",name:"filter",value:"payment_number"},null,8,["modelValue","label"])]),_:1})]),_:1})])]),_:1}),o(u,{class:"ml-1",size:"md",variant:"gray",onClick:K},{default:s(()=>[M.value?(i(),V(p,{key:0,name:"SortAscendingIcon"})):(i(),V(p,{key:1,name:"SortDescendingIcon"}))]),_:1})])]),n("div",{ref_key:"paymentListSection",ref:z,class:"h-full overflow-y-scroll border-l border-gray-200 border-solid"},[(i(!0),v(Y,null,me(c.value,(t,ae)=>(i(),v("div",{key:ae},[t?(i(),V(ee,{key:0,id:"payment-"+t.id,to:`/admin/payments/${t.id}/view`,class:fe(["flex justify-between p-4 items-center cursor-pointer hover:bg-gray-100 border-l-4 border-transparent",{"bg-gray-100 border-l-4 border-primary-500 border-solid":q(t.id)}]),style:{"border-bottom":"1px solid rgba(185, 193, 209, 0.41)"}},{default:s(()=>{var E,U;return[n("div",Ie,[o(X,{text:(E=t==null?void 0:t.customer)==null?void 0:E.name,length:30,class:"pr-2 mb-2 text-sm not-italic font-normal leading-5 text-black capitalize truncate"},null,8,["text"]),n("div",Ve,g(t==null?void 0:t.payment_number),1),n("div",Pe,g(t==null?void 0:t.invoice_number),1)]),n("div",Te,[o(Z,{class:"block mb-2 text-xl not-italic font-semibold leading-8 text-right text-gray-900",amount:t==null?void 0:t.amount,currency:(U=t.customer)==null?void 0:U.currency},null,8,["amount","currency"]),n("div",Se,g(t.formatted_payment_date),1)])]}),_:2},1032,["id","to","class"])):k("",!0)]))),128)),l(h)?(i(),v("div",De,[o(ge,{class:"h-6 m-1 animate-spin text-primary-400"})])):k("",!0),!((C=c.value)!=null&&C.length)&&!l(h)?(i(),v("p",$e,g(e.$t("payments.no_matching_payments")),1)):k("",!0)],512)]),n("div",Le,[N.value?(i(),v("iframe",{key:0,src:N.value,class:"flex-1 border border-gray-400 border-solid rounded-md"},null,8,ze)):k("",!0)])]}),_:1})],64)}}};export{He as default}; diff --git a/public/build/assets/View-2muwgQJS.js b/public/build/assets/View-8QpdfLxS.js similarity index 86% rename from public/build/assets/View-2muwgQJS.js rename to public/build/assets/View-8QpdfLxS.js index 8b4022b5..933919c0 100644 --- a/public/build/assets/View-2muwgQJS.js +++ b/public/build/assets/View-8QpdfLxS.js @@ -1 +1 @@ -import{Z as he,r as v,o as a,m as g,w as u,a as o,b as e,v as se,t as r,p as k,G as fe,av as ye,u as be,a7 as xe,L as we,f as _,z as ke,k as w,H as R,l as n,c as d,J as b,K as p,O as C,N as $,aQ as ee,aR as $e,aS as Be,aT as Me,aU as Ce,aV as G,aW as je,aX as Q,ab as te,aY as Pe,s as Ie}from"./main-B9dpPbRR.js";const Le={},Te={class:"lg:grid lg:grid-rows-1 lg:grid-cols-7 lg:gap-x-8 lg:gap-y-10 xl:gap-x-16 mt-6"},Se={class:"lg:row-end-1 lg:col-span-4"},Ye={class:"max-w-2xl mx-auto mt-10 lg:max-w-none lg:mt-0 lg:row-end-2 lg:row-span-2 lg:col-span-3 w-full"},He=e("h3",{class:"sr-only"},"Reviews",-1),Ve=e("p",{class:"sr-only"},"4 out of 5 stars",-1),Re={class:"flex flex-col-reverse"},Ne={class:"mt-4"},ze={class:"mt-10 grid grid-cols-1 gap-x-6 gap-y-4 sm:grid-cols-2"},Ue=e("div",{class:"mt-10"},null,-1),De={class:"border-t border-gray-200 mt-10 pt-10"},Ke={class:"border-t border-gray-200 mt-10 pt-10"},qe={class:"w-full max-w-2xl mx-auto mt-16 lg:max-w-none lg:mt-0 lg:col-span-4"};function Ee(j,N){const m=v("BaseContentPlaceholdersText"),B=v("BaseContentPlaceholdersBox"),q=v("BasePage"),T=v("BaseContentPlaceholders");return a(),g(T,{rounded:""},{default:u(()=>[o(q,{class:"bg-white"},{default:u(()=>[o(m,{class:"mt-4 h-8 w-40",lines:1}),o(m,{class:"mt-4 h-8 w-56 mb-4",lines:1}),e("div",Te,[e("div",Se,[o(B,{class:"h-96 sm:w-full",rounded:""})]),e("div",Ye,[e("div",null,[He,o(m,{class:"w-32 h-8",lines:1}),Ve]),e("div",Re,[e("div",Ne,[o(m,{class:"w-48 xl:w-80 h-12",lines:1}),o(m,{class:"w-64 xl:w-80 h-8 mt-2",lines:1})])]),e("div",null,[o(m,{class:"w-full h-24 my-10",lines:1})]),e("div",null,[o(m,{class:"w-full h-24 mt-6 mb-6",lines:1})]),e("div",ze,[o(m,{class:"w-full h-14",lines:1})]),Ue,e("div",De,[e("div",null,[o(m,{class:"w-24 h-6",lines:1}),o(m,{class:"mt-4 w-full h-20",lines:1})])]),e("div",Ke,[o(m,{class:"h-6 w-24",lines:1}),o(m,{class:"h-10 w-32 mt-4",lines:1})])]),e("div",qe,[o(B,{class:"h-96 sm:w-full",rounded:""})])])]),_:1})]),_:1})}const Oe=he(Le,[["render",Ee]]),Ae={class:"relative group"},Fe={class:"aspect-w-4 aspect-h-3 rounded-lg overflow-hidden bg-gray-100"},Ge=["src"],Qe={class:"flex items-end opacity-0 p-4 group-hover:opacity-100","aria-hidden":"true"},Je={class:"w-full bg-white bg-opacity-75 backdrop-filter backdrop-blur py-2 px-4 rounded-md text-sm font-medium text-primary-500 text-center"},We={class:"mt-4 flex items-center justify-between text-base font-medium text-gray-900 space-x-8 cursor-pointer"},Xe={class:"text-primary-500 font-bold"},Ze=e("span",{"aria-hidden":"true",class:"absolute inset-0"},null,-1),et={class:"text-primary-500 font-bold"},tt={__name:"RecentModuleCard",props:{data:{type:Object,default:null,required:!0}},setup(j){return se.useI18n(),(N,m)=>{const B=v("router-link");return a(),g(B,{class:"relative group",to:`/admin/modules/${j.data.slug}`},{default:u(()=>[e("div",Ae,[e("div",Fe,[e("img",{src:j.data.cover,class:"object-center object-cover"},null,8,Ge),e("div",Qe,[e("div",Je,r(N.$t("modules.view_module")),1)])]),e("div",We,[e("h3",Xe,[Ze,k(" "+r(j.data.name),1)]),e("p",et," $ "+r(j.data.monthly_price/100),1)])])]),_:1},8,["to"])}}},st={class:"lg:grid lg:grid-rows-1 lg:grid-cols-7 lg:gap-x-8 lg:gap-y-10 xl:gap-x-16 mt-6"},lt={class:"lg:row-end-1 lg:col-span-4"},at={class:"flex flex-col-reverse"},ot={class:"hidden mt-6 w-full max-w-2xl mx-auto sm:block lg:max-w-none"},nt={class:"grid grid-cols-3 xl:grid-cols-4 gap-6","aria-orientation":"horizontal",role:"tablist"},rt={class:"absolute inset-0 rounded-md overflow-hidden"},it=["src"],dt=e("span",{class:"ring-transparent absolute inset-0 rounded-md ring-2 ring-offset-2 pointer-events-none","aria-hidden":"true"},null,-1),ut=["onClick"],ct={class:"absolute inset-0 rounded-md overflow-hidden"},mt=["src"],_t=e("span",{class:"ring-transparent absolute inset-0 rounded-md ring-2 ring-offset-2 pointer-events-none","aria-hidden":"true"},null,-1),pt={key:0,class:"aspect-w-4 aspect-h-3"},gt=["src"],vt={key:1,class:"aspect-w-4 aspect-h-3 rounded-lg bg-gray-100 overflow-hidden"},ht=["src"],ft={class:"max-w-2xl mx-auto mt-10 lg:max-w-none lg:mt-0 lg:row-end-2 lg:row-span-2 lg:col-span-3 w-full"},yt=e("h3",{class:"sr-only"},"Reviews",-1),bt={class:"flex items-center"},xt=e("p",{class:"sr-only"},"4 out of 5 stars",-1),wt={class:"flex flex-col-reverse"},kt={class:"mt-4"},$t={class:"text-2xl font-extrabold tracking-tight text-gray-900 sm:text-3xl"},Bt=e("h2",{id:"information-heading",class:"sr-only"}," Product information ",-1),Mt={key:0,class:"text-sm text-gray-500 mt-2"},Ct=["innerHTML"],jt={key:0},Pt={class:"relative bg-white rounded-md -space-y-px"},It={class:"flex items-center text-sm"},Lt=e("span",{class:"rounded-full bg-white w-1.5 h-1.5"},null,-1),Tt=[Lt],St=["href"],Yt={key:2},Ht={key:0,class:"grid grid-cols-1 gap-x-6 gap-y-4 sm:grid-cols-2"},Vt={key:1},Rt={class:"grid grid-cols-1 gap-x-6 gap-y-4 sm:grid-cols-2"},Nt={class:"ml-2"},zt=e("div",{class:"mt-10"},null,-1),Ut={class:"border-t border-gray-200 mt-10 pt-10"},Dt={class:"text-sm font-medium text-gray-900"},Kt={class:"mt-4 prose prose-sm max-w-none text-gray-500"},qt=["innerHTML"],Et={class:"border-t border-gray-200 mt-10 pt-10"},Ot=["href"],At={key:3,class:"border-t border-gray-200 mt-10 pt-10"},Ft={class:"w-full p-0 list-none"},Gt={class:"m-0 text-sm leading-8"},Qt={class:"flex flex-row items-center"},Jt={key:0,class:"mr-3 text-xs text-gray-500"},Wt={class:"w-full max-w-2xl mx-auto mt-16 lg:max-w-none lg:mt-0 lg:col-span-4"},Xt=e("h3",{class:"sr-only"},"Customer Reviews",-1),Zt={key:0},es={class:"flex-none py-10"},ts={class:"inline-flex items-center justify-center h-12 w-12 rounded-full bg-gray-500"},ss={class:"text-lg font-medium leading-none text-white uppercase"},ls={class:"font-medium text-gray-900"},as={class:"flex items-center mt-4"},os=["innerHTML"],ns={key:1,class:"flex w-full items-center justify-center"},rs={class:"text-gray-500 mt-10 text-sm"},is=e("h3",{class:"sr-only"},"Frequently Asked Questions",-1),ds={class:"mt-10 font-medium text-gray-900"},us={class:"mt-2 prose prose-sm max-w-none text-gray-500"},cs=e("h3",{class:"sr-only"},"License",-1),ms=["innerHTML"],_s={key:0,class:"mt-24 sm:mt-32 lg:max-w-none"},ps={class:"flex items-center justify-between space-x-4"},gs={class:"text-lg font-medium text-gray-900"},vs={href:"/admin/modules",class:"whitespace-nowrap text-sm font-medium text-primary-600 hover:text-primary-500"},hs=e("span",{"aria-hidden":"true"}," →",-1),fs={class:"mt-6 grid grid-cols-1 gap-x-8 gap-y-8 sm:grid-cols-2 sm:gap-y-10 lg:grid-cols-4"},ys=e("div",{class:"p-6"},null,-1),xs={__name:"View",setup(j){const N=fe(),m=ye(),B=be(),q=xe(),T=we(),{t:h}=se.useI18n();let x=_(!1),z=_(!0),S=_(""),P=_(!1),I=_(!1);_(!1),W(),ke(()=>T.params.slug,async t=>{W()});const s=w(()=>m.currentModule.data),U=w(()=>{var M,f;let t=[],i=R({name:h("modules.monthly"),price:((M=s==null?void 0:s.value)==null?void 0:M.monthly_price)/100}),c=R({name:h("modules.yearly"),price:((f=s==null?void 0:s.value)==null?void 0:f.yearly_price)/100});return le.value?t.push(c):ae.value?t.push(i):(t.push(i),t.push(c)),t}),le=w(()=>s.value?s.value.type==="YEARLY":!1),ae=w(()=>s.value?s.value.type==="MONTHLY":!1),oe=w(()=>!!(s.value.installed&&s.value.latest_module_version)),E=w(()=>m.currentModule.meta.modules);let ne=w(()=>{let t=_(s.value.latest_module_version_updated_at),i=_(s.value.installed_module_version_updated_at);const c=i.value?i.value:t.value;return te(c).format("MMMM Do YYYY")}),re=w(()=>{let t=_(s.value.latest_module_version),i=_(s.value.installed_module_version);return i.value?i.value:t.value}),ie=w(()=>parseInt(s.value.average_rating));const de=w(()=>{let t=R([]),i=R({id:null,url:s.value.cover});return t.push(i),s.value.screenshots&&s.value.screenshots.forEach(c=>{t.push(c)}),t}),D=_(!1),O=_(null),K=_(null),A=_(U.value[0]),F=R([{translationKey:"modules.download_zip_file",stepUrl:"/api/v1/modules/download",time:null,started:!1,completed:!1},{translationKey:"modules.unzipping_package",stepUrl:"/api/v1/modules/unzip",time:null,started:!1,completed:!1},{translationKey:"modules.copying_files",stepUrl:"/api/v1/modules/copy",time:null,started:!1,completed:!1},{translationKey:"modules.completing_installation",stepUrl:"/api/v1/modules/complete",time:null,started:!1,completed:!1}]);async function J(){let t=null;for(let i=0;i{location.reload()},1500))}catch{return x.value=!1,c.started=!1,c.completed=!0,!1}}}function ue(t){let i=_("");switch(t){case"module_not_found":i=h("modules.module_not_found");break;case"module_not_purchased":i=h("modules.module_not_purchased");break;case"version_not_supported":i=h("modules.version_not_supported");break;default:i=t;break}return i}async function W(){T.params.slug&&(z.value=!0,await m.fetchModule(T.params.slug).then(t=>{if(A.value=U.value[0],K.value=s.value.video_link,O.value=s.value.video_thumbnail,K.value){Z(),z.value=!1;return}S.value=s.value.cover,z.value=!1}))}function ce(t){switch(X(t)){case"pending":return"text-primary-800 bg-gray-200";case"finished":return"text-teal-500 bg-teal-100";case"running":return"text-blue-400 bg-blue-100";case"error":return"text-danger bg-red-200";default:return""}}function me(){q.openDialog({title:h("general.are_you_sure"),message:h("modules.disable_warning"),yesLabel:h("general.ok"),noLabel:h("general.cancel"),variant:"danger",hideNoButton:!1,size:"lg"}).then(async t=>{if(t){I.value=!0,await m.disableModule(s.value.module_name).then(i=>{if(i.data.success){s.value.enabled=0,I.value=!1,setTimeout(()=>{location.reload()},1500);return}}),I.value=!1;return}})}async function _e(){P.value=!0,await m.enableModule(s.value.module_name).then(t=>{t.data.success&&(s.value.enabled=1,setTimeout(()=>{location.reload()},1500)),P.value=!1}),P.value=!1}function X(t){return t.started&&t.completed?"finished":t.started&&!t.completed?"running":!t.started&&!t.completed?"pending":"error"}function pe(t){D.value=!1,S.value=t}function Z(){D.value=!0,S.value=null}return(t,i)=>{const c=v("BaseBreadcrumbItem"),M=v("BaseBreadcrumb"),f=v("BasePageHeader"),L=v("BaseRating"),Y=v("BaseIcon"),H=v("BaseButton"),ge=v("BasePage");return n(z)?(a(),g(Oe,{key:0})):(a(),g(ge,{key:1,class:"bg-white"},{default:u(()=>[o(f,{title:s.value.name},{default:u(()=>[o(M,null,{default:u(()=>[o(c,{title:t.$t("general.home"),to:"dashboard"},null,8,["title"]),o(c,{title:t.$t("modules.title"),to:"/admin/modules"},null,8,["title"]),o(c,{title:s.value.name,to:"#",active:""},null,8,["title"])]),_:1})]),_:1},8,["title"]),e("div",st,[e("div",lt,[e("div",at,[e("div",ot,[e("div",nt,[O.value&&K.value?(a(),d("button",{key:0,class:b(["relative md:h-24 lg:h-36 rounded hover:bg-gray-50",{"outline-none ring ring-offset-1 ring-primary-500":D.value}]),type:"button",onClick:Z},[e("span",rt,[e("img",{src:O.value,alt:"",class:"w-full h-full object-center object-cover"},null,8,it)]),dt],2)):p("",!0),(a(!0),d($,null,C(de.value,(l,y)=>(a(),d("button",{id:"tabs-1-tab-1",key:y,class:b(["relative md:h-24 lg:h-36 rounded hover:bg-gray-50",{"outline-none ring ring-offset-1 ring-primary-500":n(S)===l.url}]),type:"button",onClick:V=>pe(l.url)},[e("span",ct,[e("img",{src:l.url,alt:"",class:"w-full h-full object-center object-cover"},null,8,mt)]),_t],10,ut))),128))])]),D.value?(a(),d("div",pt,[e("iframe",{src:K.value,class:"sm:rounded-lg",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",allowfullscreen:""},null,8,gt)])):(a(),d("div",vt,[e("img",{src:n(S),alt:"Module Images",class:"w-full h-full object-center object-cover sm:rounded-lg"},null,8,ht)]))])]),e("div",ft,[yt,e("div",bt,[o(L,{rating:n(ie)},null,8,["rating"])]),xt,e("div",wt,[e("div",kt,[e("h1",$t,r(s.value.name),1),Bt,s.value.latest_module_version?(a(),d("p",Mt,r(t.$t("modules.version"))+" "+r(n(re))+" ("+r(t.$t("modules.last_updated"))+" "+r(n(ne))+") ",1)):p("",!0)])]),e("div",{class:"prose prose-sm max-w-none text-gray-500 text-sm my-10",innerHTML:s.value.long_description},null,8,Ct),s.value.purchased?p("",!0):(a(),d("div",jt,[o(n(Me),{modelValue:A.value,"onUpdate:modelValue":i[0]||(i[0]=l=>A.value=l)},{default:u(()=>[o(n(ee),{class:"sr-only"},{default:u(()=>[k(" Pricing plans ")]),_:1}),e("div",Pt,[(a(!0),d($,null,C(U.value,(l,y)=>(a(),g(n($e),{key:l.name,as:"template",value:l},{default:u(({checked:V,active:ve})=>[e("div",{class:b([y===0?"rounded-tl-md rounded-tr-md":"",y===U.value.length-1?"rounded-bl-md rounded-br-md":"",V?"bg-primary-50 border-primary-200 z-10":"border-gray-200","relative border p-4 flex flex-col cursor-pointer md:pl-4 md:pr-6 md:grid md:grid-cols-2 focus:outline-none"])},[e("div",It,[e("span",{class:b([V?"bg-primary-600 border-transparent":"bg-white border-gray-300",ve?"ring-2 ring-offset-2 ring-primary-500":"","h-4 w-4 rounded-full border flex items-center justify-center"]),"aria-hidden":"true"},Tt,2),o(n(ee),{as:"span",class:b([V?"text-primary-900":"text-gray-900","ml-3 font-medium"])},{default:u(()=>[k(r(l.name),1)]),_:2},1032,["class"])]),o(n(Be),{class:"ml-6 pl-1 text-base md:ml-0 md:pl-0 md:text-center"},{default:u(()=>[e("span",{class:b([V?"text-primary-900":"text-gray-900","font-medium"])}," $ "+r(l.price),3)]),_:2},1024)],2)]),_:2},1032,["value"]))),128))])]),_:1},8,["modelValue"])])),s.value.purchased?(a(),d("div",Yt,[s.value.installed?oe.value?(a(),d("div",Vt,[e("div",Rt,[s.value.update_available?(a(),g(H,{key:0,variant:"primary",size:"xl",loading:n(x),disabled:n(x),class:"mr-4 flex items-center justify-center text-base",onClick:i[2]||(i[2]=l=>J())},{default:u(()=>[k(r(t.$t("modules.update_to"))+" ",1),e("span",Nt,r(s.value.latest_module_version),1)]),_:1},8,["loading","disabled"])):p("",!0),s.value.enabled?(a(),g(H,{key:1,variant:"danger",size:"xl",loading:n(I),disabled:n(I),class:"mr-4 flex items-center justify-center text-base",onClick:me},{default:u(()=>[n(I)?p("",!0):(a(),g(Y,{key:0,name:"BanIcon",class:"mr-2"})),k(" "+r(t.$t("modules.disable")),1)]),_:1},8,["loading","disabled"])):(a(),g(H,{key:2,variant:"primary-outline",size:"xl",loading:n(P),disabled:n(P),class:"mr-4 flex items-center justify-center text-base",onClick:_e},{default:u(()=>[n(P)?p("",!0):(a(),g(Y,{key:0,name:"CheckIcon",class:"mr-2"})),k(" "+r(t.$t("modules.enable")),1)]),_:1},8,["loading","disabled"]))])])):p("",!0):(a(),d("div",Ht,[s.value.latest_module_version?(a(),g(H,{key:0,size:"xl",variant:"primary-outline",outline:"",loading:n(x),disabled:n(x),class:"mr-4 flex items-center justify-center text-base",onClick:i[1]||(i[1]=l=>J())},{default:u(()=>[n(x)?p("",!0):(a(),g(Y,{key:0,name:"DownloadIcon",class:"mr-2"})),k(" "+r(t.$t("modules.install")),1)]),_:1},8,["loading","disabled"])):p("",!0)]))])):(a(),d("a",{key:1,href:`${n(N).config.base_url}/modules/${s.value.slug}`,target:"_blank",class:"grid grid-cols-1 gap-x-6 gap-y-4 sm:grid-cols-2"},[o(H,{size:"xl",class:"items-center flex justify-center text-base mt-10"},{default:u(()=>[o(Y,{name:"ShoppingCartIcon",class:"mr-2"}),k(" "+r(t.$t("modules.buy_now")),1)]),_:1})],8,St)),zt,e("div",Ut,[e("h3",Dt,r(t.$t("modules.what_you_get")),1),e("div",Kt,[e("div",{class:"prose prose-sm max-w-none text-gray-500 text-sm",innerHTML:s.value.highlights},null,8,qt)])]),e("div",Et,[(a(!0),d($,null,C(s.value.links,(l,y)=>(a(),d("div",{key:y,class:"mb-4 last:mb-0 flex"},[o(Y,{name:l.icon,class:"mr-4"},null,8,["name"]),e("a",{href:l.link,class:"text-primary-500",target:"_blank"},r(l.label),9,Ot)]))),128))]),n(x)?(a(),d("div",At,[e("ul",Ft,[(a(!0),d($,null,C(F,l=>(a(),d("li",{key:l.stepUrl,class:"flex justify-between w-full py-3 border-b border-gray-200 border-solid last:border-b-0"},[e("p",Gt,r(t.$t(l.translationKey)),1),e("div",Qt,[l.time?(a(),d("span",Jt,r(l.time),1)):p("",!0),e("span",{class:b([ce(l),"block py-1 text-sm text-center uppercase rounded-full"]),style:{width:"88px"}},r(X(l)),3)])]))),128))])])):p("",!0)]),e("div",Wt,[o(n(Pe),{as:"div"},{default:u(()=>[o(n(Ce),{class:"-mb-px flex space-x-8 border-b border-gray-200"},{default:u(()=>[o(n(G),{as:"template"},{default:u(({selected:l})=>[e("button",{class:b([l?"border-primary-600 text-primary-600":"border-transparent text-gray-700 hover:text-gray-800 hover:border-gray-300","whitespace-nowrap py-6 border-b-2 font-medium text-sm"])},r(t.$t("modules.customer_reviews")),3)]),_:1}),o(n(G),{as:"template"},{default:u(({selected:l})=>[e("button",{class:b([l?"border-primary-600 text-primary-600":"border-transparent text-gray-700 hover:text-gray-800 hover:border-gray-300","whitespace-nowrap py-6 border-b-2 font-medium text-sm"])},r(t.$t("modules.faq")),3)]),_:1}),o(n(G),{as:"template"},{default:u(({selected:l})=>[e("button",{class:b([l?"border-primary-600 text-primary-600":"border-transparent text-gray-700 hover:text-gray-800 hover:border-gray-300","whitespace-nowrap py-6 border-b-2 font-medium text-sm"])},r(t.$t("modules.license")),3)]),_:1})]),_:1}),o(n(je),{as:"template"},{default:u(()=>[o(n(Q),{class:"-mb-10"},{default:u(()=>[Xt,s.value.reviews.length?(a(),d("div",Zt,[(a(!0),d($,null,C(s.value.reviews,(l,y)=>(a(),d("div",{key:y,class:"flex text-sm text-gray-500 space-x-4"},[e("div",es,[e("span",ts,[e("span",ss,r(l.customer.name[0]),1)])]),e("div",{class:b([y===0?"":"border-t border-gray-200","py-10"])},[e("h3",ls,r(l.customer.name),1),e("p",null,r(n(te)(l.created_at).format("MMMM Do YYYY")),1),e("div",as,[o(L,{rating:l.rating},null,8,["rating"])]),e("div",{class:"mt-4 prose prose-sm max-w-none text-gray-500",innerHTML:l.feedback},null,8,os)],2)]))),128))])):(a(),d("div",ns,[e("p",rs,r(t.$t("modules.no_reviews_found")),1)]))]),_:1}),o(n(Q),{as:"dl",class:"text-sm text-gray-500"},{default:u(()=>[is,(a(!0),d($,null,C(s.value.faq,l=>(a(),d($,{key:l.question},[e("dt",ds,r(l.question),1),e("dd",us,[e("p",null,r(l.answer),1)])],64))),128))]),_:1}),o(n(Q),{class:"pt-10"},{default:u(()=>[cs,e("div",{class:"prose prose-sm max-w-none text-gray-500",innerHTML:s.value.license},null,8,ms)]),_:1})]),_:1})]),_:1})])]),E.value&&E.value.length?(a(),d("div",_s,[e("div",ps,[e("h2",gs,r(t.$t("modules.other_modules")),1),e("a",vs,[k(r(t.$t("modules.view_all")),1),hs])]),e("div",fs,[(a(!0),d($,null,C(E.value,(l,y)=>(a(),d("div",{key:y},[o(tt,{data:l},null,8,["data"])]))),128))])])):p("",!0),ys]),_:1}))}}};export{xs as default}; +import{Z as he,r as v,o as a,m as g,w as u,a as o,b as e,v as se,t as r,p as k,G as fe,av as ye,u as be,a7 as xe,L as we,f as _,z as ke,k as w,H as N,l as n,c as d,J as b,K as p,O as C,N as $,aT as ee,aU as $e,aV as Be,aW as Me,aX as Ce,aY as G,aZ as je,a_ as Z,ab as te,a$ as Pe,s as Ie}from"./main-pPEsZPea.js";const Le={},Te={class:"lg:grid lg:grid-rows-1 lg:grid-cols-7 lg:gap-x-8 lg:gap-y-10 xl:gap-x-16 mt-6"},Se={class:"lg:row-end-1 lg:col-span-4"},Ye={class:"max-w-2xl mx-auto mt-10 lg:max-w-none lg:mt-0 lg:row-end-2 lg:row-span-2 lg:col-span-3 w-full"},He=e("h3",{class:"sr-only"},"Reviews",-1),Ve=e("p",{class:"sr-only"},"4 out of 5 stars",-1),Ne={class:"flex flex-col-reverse"},Re={class:"mt-4"},ze={class:"mt-10 grid grid-cols-1 gap-x-6 gap-y-4 sm:grid-cols-2"},Ue=e("div",{class:"mt-10"},null,-1),De={class:"border-t border-gray-200 mt-10 pt-10"},Ke={class:"border-t border-gray-200 mt-10 pt-10"},qe={class:"w-full max-w-2xl mx-auto mt-16 lg:max-w-none lg:mt-0 lg:col-span-4"};function Ee(j,R){const m=v("BaseContentPlaceholdersText"),B=v("BaseContentPlaceholdersBox"),q=v("BasePage"),T=v("BaseContentPlaceholders");return a(),g(T,{rounded:""},{default:u(()=>[o(q,{class:"bg-white"},{default:u(()=>[o(m,{class:"mt-4 h-8 w-40",lines:1}),o(m,{class:"mt-4 h-8 w-56 mb-4",lines:1}),e("div",Te,[e("div",Se,[o(B,{class:"h-96 sm:w-full",rounded:""})]),e("div",Ye,[e("div",null,[He,o(m,{class:"w-32 h-8",lines:1}),Ve]),e("div",Ne,[e("div",Re,[o(m,{class:"w-48 xl:w-80 h-12",lines:1}),o(m,{class:"w-64 xl:w-80 h-8 mt-2",lines:1})])]),e("div",null,[o(m,{class:"w-full h-24 my-10",lines:1})]),e("div",null,[o(m,{class:"w-full h-24 mt-6 mb-6",lines:1})]),e("div",ze,[o(m,{class:"w-full h-14",lines:1})]),Ue,e("div",De,[e("div",null,[o(m,{class:"w-24 h-6",lines:1}),o(m,{class:"mt-4 w-full h-20",lines:1})])]),e("div",Ke,[o(m,{class:"h-6 w-24",lines:1}),o(m,{class:"h-10 w-32 mt-4",lines:1})])]),e("div",qe,[o(B,{class:"h-96 sm:w-full",rounded:""})])])]),_:1})]),_:1})}const Oe=he(Le,[["render",Ee]]),Ae={class:"relative group"},Fe={class:"aspect-w-4 aspect-h-3 rounded-lg overflow-hidden bg-gray-100"},Ge=["src"],Ze={class:"flex items-end opacity-0 p-4 group-hover:opacity-100","aria-hidden":"true"},Je={class:"w-full bg-white bg-opacity-75 backdrop-filter backdrop-blur py-2 px-4 rounded-md text-sm font-medium text-primary-500 text-center"},Qe={class:"mt-4 flex items-center justify-between text-base font-medium text-gray-900 space-x-8 cursor-pointer"},We={class:"text-primary-500 font-bold"},Xe=e("span",{"aria-hidden":"true",class:"absolute inset-0"},null,-1),et={class:"text-primary-500 font-bold"},tt={__name:"RecentModuleCard",props:{data:{type:Object,default:null,required:!0}},setup(j){return se.useI18n(),(R,m)=>{const B=v("router-link");return a(),g(B,{class:"relative group",to:`/admin/modules/${j.data.slug}`},{default:u(()=>[e("div",Ae,[e("div",Fe,[e("img",{src:j.data.cover,class:"object-center object-cover"},null,8,Ge),e("div",Ze,[e("div",Je,r(R.$t("modules.view_module")),1)])]),e("div",Qe,[e("h3",We,[Xe,k(" "+r(j.data.name),1)]),e("p",et," $ "+r(j.data.monthly_price/100),1)])])]),_:1},8,["to"])}}},st={class:"lg:grid lg:grid-rows-1 lg:grid-cols-7 lg:gap-x-8 lg:gap-y-10 xl:gap-x-16 mt-6"},lt={class:"lg:row-end-1 lg:col-span-4"},at={class:"flex flex-col-reverse"},ot={class:"hidden mt-6 w-full max-w-2xl mx-auto sm:block lg:max-w-none"},nt={class:"grid grid-cols-3 xl:grid-cols-4 gap-6","aria-orientation":"horizontal",role:"tablist"},rt={class:"absolute inset-0 rounded-md overflow-hidden"},it=["src"],dt=e("span",{class:"ring-transparent absolute inset-0 rounded-md ring-2 ring-offset-2 pointer-events-none","aria-hidden":"true"},null,-1),ut=["onClick"],ct={class:"absolute inset-0 rounded-md overflow-hidden"},mt=["src"],_t=e("span",{class:"ring-transparent absolute inset-0 rounded-md ring-2 ring-offset-2 pointer-events-none","aria-hidden":"true"},null,-1),pt={key:0,class:"aspect-w-4 aspect-h-3"},gt=["src"],vt={key:1,class:"aspect-w-4 aspect-h-3 rounded-lg bg-gray-100 overflow-hidden"},ht=["src"],ft={class:"max-w-2xl mx-auto mt-10 lg:max-w-none lg:mt-0 lg:row-end-2 lg:row-span-2 lg:col-span-3 w-full"},yt=e("h3",{class:"sr-only"},"Reviews",-1),bt={class:"flex items-center"},xt=e("p",{class:"sr-only"},"4 out of 5 stars",-1),wt={class:"flex flex-col-reverse"},kt={class:"mt-4"},$t={class:"text-2xl font-extrabold tracking-tight text-gray-900 sm:text-3xl"},Bt=e("h2",{id:"information-heading",class:"sr-only"}," Product information ",-1),Mt={key:0,class:"text-sm text-gray-500 mt-2"},Ct=["innerHTML"],jt={key:0},Pt={class:"relative bg-white rounded-md -space-y-px"},It={class:"flex items-center text-sm"},Lt=e("span",{class:"rounded-full bg-white w-1.5 h-1.5"},null,-1),Tt=[Lt],St=["href"],Yt={key:2},Ht={key:0,class:"grid grid-cols-1 gap-x-6 gap-y-4 sm:grid-cols-2"},Vt={key:1},Nt={class:"grid grid-cols-1 gap-x-6 gap-y-4 sm:grid-cols-2"},Rt={class:"ml-2"},zt=e("div",{class:"mt-10"},null,-1),Ut={class:"border-t border-gray-200 mt-10 pt-10"},Dt={class:"text-sm font-medium text-gray-900"},Kt={class:"mt-4 prose prose-sm max-w-none text-gray-500"},qt=["innerHTML"],Et={class:"border-t border-gray-200 mt-10 pt-10"},Ot=["href"],At={key:3,class:"border-t border-gray-200 mt-10 pt-10"},Ft={class:"w-full p-0 list-none"},Gt={class:"m-0 text-sm leading-8"},Zt={class:"flex flex-row items-center"},Jt={key:0,class:"mr-3 text-xs text-gray-500"},Qt={class:"w-full max-w-2xl mx-auto mt-16 lg:max-w-none lg:mt-0 lg:col-span-4"},Wt=e("h3",{class:"sr-only"},"Customer Reviews",-1),Xt={key:0},es={class:"flex-none py-10"},ts={class:"inline-flex items-center justify-center h-12 w-12 rounded-full bg-gray-500"},ss={class:"text-lg font-medium leading-none text-white uppercase"},ls={class:"font-medium text-gray-900"},as={class:"flex items-center mt-4"},os=["innerHTML"],ns={key:1,class:"flex w-full items-center justify-center"},rs={class:"text-gray-500 mt-10 text-sm"},is=e("h3",{class:"sr-only"},"Frequently Asked Questions",-1),ds={class:"mt-10 font-medium text-gray-900"},us={class:"mt-2 prose prose-sm max-w-none text-gray-500"},cs=e("h3",{class:"sr-only"},"License",-1),ms=["innerHTML"],_s={key:0,class:"mt-24 sm:mt-32 lg:max-w-none"},ps={class:"flex items-center justify-between space-x-4"},gs={class:"text-lg font-medium text-gray-900"},vs={href:"/admin/modules",class:"whitespace-nowrap text-sm font-medium text-primary-600 hover:text-primary-500"},hs=e("span",{"aria-hidden":"true"}," →",-1),fs={class:"mt-6 grid grid-cols-1 gap-x-8 gap-y-8 sm:grid-cols-2 sm:gap-y-10 lg:grid-cols-4"},ys=e("div",{class:"p-6"},null,-1),xs={__name:"View",setup(j){const R=fe(),m=ye(),B=be(),q=xe(),T=we(),{t:h}=se.useI18n();let x=_(!1),z=_(!0),S=_(""),P=_(!1),I=_(!1);_(!1),Q(),ke(()=>T.params.slug,async t=>{Q()});const s=w(()=>m.currentModule.data),U=w(()=>{var M,f;let t=[],i=N({name:h("modules.monthly"),price:((M=s==null?void 0:s.value)==null?void 0:M.monthly_price)/100}),c=N({name:h("modules.yearly"),price:((f=s==null?void 0:s.value)==null?void 0:f.yearly_price)/100});return le.value?t.push(c):ae.value?t.push(i):(t.push(i),t.push(c)),t}),le=w(()=>s.value?s.value.type==="YEARLY":!1),ae=w(()=>s.value?s.value.type==="MONTHLY":!1),oe=w(()=>!!(s.value.installed&&s.value.latest_module_version)),E=w(()=>m.currentModule.meta.modules);let ne=w(()=>{let t=_(s.value.latest_module_version_updated_at),i=_(s.value.installed_module_version_updated_at);const c=i.value?i.value:t.value;return te(c).format("MMMM Do YYYY")}),re=w(()=>{let t=_(s.value.latest_module_version),i=_(s.value.installed_module_version);return i.value?i.value:t.value}),ie=w(()=>parseInt(s.value.average_rating));const de=w(()=>{let t=N([]),i=N({id:null,url:s.value.cover});return t.push(i),s.value.screenshots&&s.value.screenshots.forEach(c=>{t.push(c)}),t}),D=_(!1),O=_(null),K=_(null),A=_(U.value[0]),F=N([{translationKey:"modules.download_zip_file",stepUrl:"/api/v1/modules/download",time:null,started:!1,completed:!1},{translationKey:"modules.unzipping_package",stepUrl:"/api/v1/modules/unzip",time:null,started:!1,completed:!1},{translationKey:"modules.copying_files",stepUrl:"/api/v1/modules/copy",time:null,started:!1,completed:!1},{translationKey:"modules.completing_installation",stepUrl:"/api/v1/modules/complete",time:null,started:!1,completed:!1}]);async function J(){let t=null;for(let i=0;i{location.reload()},1500))}catch{return x.value=!1,c.started=!1,c.completed=!0,!1}}}function ue(t){let i=_("");switch(t){case"module_not_found":i=h("modules.module_not_found");break;case"module_not_purchased":i=h("modules.module_not_purchased");break;case"version_not_supported":i=h("modules.version_not_supported");break;default:i=t;break}return i}async function Q(){T.params.slug&&(z.value=!0,await m.fetchModule(T.params.slug).then(t=>{if(A.value=U.value[0],K.value=s.value.video_link,O.value=s.value.video_thumbnail,K.value){X(),z.value=!1;return}S.value=s.value.cover,z.value=!1}))}function ce(t){switch(W(t)){case"pending":return"text-primary-800 bg-gray-200";case"finished":return"text-teal-500 bg-teal-100";case"running":return"text-blue-400 bg-blue-100";case"error":return"text-danger bg-red-200";default:return""}}function me(){q.openDialog({title:h("general.are_you_sure"),message:h("modules.disable_warning"),yesLabel:h("general.ok"),noLabel:h("general.cancel"),variant:"danger",hideNoButton:!1,size:"lg"}).then(async t=>{if(t){I.value=!0,await m.disableModule(s.value.module_name).then(i=>{if(i.data.success){s.value.enabled=0,I.value=!1,setTimeout(()=>{location.reload()},1500);return}}),I.value=!1;return}})}async function _e(){P.value=!0,await m.enableModule(s.value.module_name).then(t=>{t.data.success&&(s.value.enabled=1,setTimeout(()=>{location.reload()},1500)),P.value=!1}),P.value=!1}function W(t){return t.started&&t.completed?"finished":t.started&&!t.completed?"running":!t.started&&!t.completed?"pending":"error"}function pe(t){D.value=!1,S.value=t}function X(){D.value=!0,S.value=null}return(t,i)=>{const c=v("BaseBreadcrumbItem"),M=v("BaseBreadcrumb"),f=v("BasePageHeader"),L=v("BaseRating"),Y=v("BaseIcon"),H=v("BaseButton"),ge=v("BasePage");return n(z)?(a(),g(Oe,{key:0})):(a(),g(ge,{key:1,class:"bg-white"},{default:u(()=>[o(f,{title:s.value.name},{default:u(()=>[o(M,null,{default:u(()=>[o(c,{title:t.$t("general.home"),to:"dashboard"},null,8,["title"]),o(c,{title:t.$t("modules.title"),to:"/admin/modules"},null,8,["title"]),o(c,{title:s.value.name,to:"#",active:""},null,8,["title"])]),_:1})]),_:1},8,["title"]),e("div",st,[e("div",lt,[e("div",at,[e("div",ot,[e("div",nt,[O.value&&K.value?(a(),d("button",{key:0,class:b(["relative md:h-24 lg:h-36 rounded hover:bg-gray-50",{"outline-none ring ring-offset-1 ring-primary-500":D.value}]),type:"button",onClick:X},[e("span",rt,[e("img",{src:O.value,alt:"",class:"w-full h-full object-center object-cover"},null,8,it)]),dt],2)):p("",!0),(a(!0),d($,null,C(de.value,(l,y)=>(a(),d("button",{id:"tabs-1-tab-1",key:y,class:b(["relative md:h-24 lg:h-36 rounded hover:bg-gray-50",{"outline-none ring ring-offset-1 ring-primary-500":n(S)===l.url}]),type:"button",onClick:V=>pe(l.url)},[e("span",ct,[e("img",{src:l.url,alt:"",class:"w-full h-full object-center object-cover"},null,8,mt)]),_t],10,ut))),128))])]),D.value?(a(),d("div",pt,[e("iframe",{src:K.value,class:"sm:rounded-lg",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",allowfullscreen:""},null,8,gt)])):(a(),d("div",vt,[e("img",{src:n(S),alt:"Module Images",class:"w-full h-full object-center object-cover sm:rounded-lg"},null,8,ht)]))])]),e("div",ft,[yt,e("div",bt,[o(L,{rating:n(ie)},null,8,["rating"])]),xt,e("div",wt,[e("div",kt,[e("h1",$t,r(s.value.name),1),Bt,s.value.latest_module_version?(a(),d("p",Mt,r(t.$t("modules.version"))+" "+r(n(re))+" ("+r(t.$t("modules.last_updated"))+" "+r(n(ne))+") ",1)):p("",!0)])]),e("div",{class:"prose prose-sm max-w-none text-gray-500 text-sm my-10",innerHTML:s.value.long_description},null,8,Ct),s.value.purchased?p("",!0):(a(),d("div",jt,[o(n(Me),{modelValue:A.value,"onUpdate:modelValue":i[0]||(i[0]=l=>A.value=l)},{default:u(()=>[o(n(ee),{class:"sr-only"},{default:u(()=>[k(" Pricing plans ")]),_:1}),e("div",Pt,[(a(!0),d($,null,C(U.value,(l,y)=>(a(),g(n($e),{key:l.name,as:"template",value:l},{default:u(({checked:V,active:ve})=>[e("div",{class:b([y===0?"rounded-tl-md rounded-tr-md":"",y===U.value.length-1?"rounded-bl-md rounded-br-md":"",V?"bg-primary-50 border-primary-200 z-10":"border-gray-200","relative border p-4 flex flex-col cursor-pointer md:pl-4 md:pr-6 md:grid md:grid-cols-2 focus:outline-none"])},[e("div",It,[e("span",{class:b([V?"bg-primary-600 border-transparent":"bg-white border-gray-300",ve?"ring-2 ring-offset-2 ring-primary-500":"","h-4 w-4 rounded-full border flex items-center justify-center"]),"aria-hidden":"true"},Tt,2),o(n(ee),{as:"span",class:b([V?"text-primary-900":"text-gray-900","ml-3 font-medium"])},{default:u(()=>[k(r(l.name),1)]),_:2},1032,["class"])]),o(n(Be),{class:"ml-6 pl-1 text-base md:ml-0 md:pl-0 md:text-center"},{default:u(()=>[e("span",{class:b([V?"text-primary-900":"text-gray-900","font-medium"])}," $ "+r(l.price),3)]),_:2},1024)],2)]),_:2},1032,["value"]))),128))])]),_:1},8,["modelValue"])])),s.value.purchased?(a(),d("div",Yt,[s.value.installed?oe.value?(a(),d("div",Vt,[e("div",Nt,[s.value.update_available?(a(),g(H,{key:0,variant:"primary",size:"xl",loading:n(x),disabled:n(x),class:"mr-4 flex items-center justify-center text-base",onClick:i[2]||(i[2]=l=>J())},{default:u(()=>[k(r(t.$t("modules.update_to"))+" ",1),e("span",Rt,r(s.value.latest_module_version),1)]),_:1},8,["loading","disabled"])):p("",!0),s.value.enabled?(a(),g(H,{key:1,variant:"danger",size:"xl",loading:n(I),disabled:n(I),class:"mr-4 flex items-center justify-center text-base",onClick:me},{default:u(()=>[n(I)?p("",!0):(a(),g(Y,{key:0,name:"BanIcon",class:"mr-2"})),k(" "+r(t.$t("modules.disable")),1)]),_:1},8,["loading","disabled"])):(a(),g(H,{key:2,variant:"primary-outline",size:"xl",loading:n(P),disabled:n(P),class:"mr-4 flex items-center justify-center text-base",onClick:_e},{default:u(()=>[n(P)?p("",!0):(a(),g(Y,{key:0,name:"CheckIcon",class:"mr-2"})),k(" "+r(t.$t("modules.enable")),1)]),_:1},8,["loading","disabled"]))])])):p("",!0):(a(),d("div",Ht,[s.value.latest_module_version?(a(),g(H,{key:0,size:"xl",variant:"primary-outline",outline:"",loading:n(x),disabled:n(x),class:"mr-4 flex items-center justify-center text-base",onClick:i[1]||(i[1]=l=>J())},{default:u(()=>[n(x)?p("",!0):(a(),g(Y,{key:0,name:"DownloadIcon",class:"mr-2"})),k(" "+r(t.$t("modules.install")),1)]),_:1},8,["loading","disabled"])):p("",!0)]))])):(a(),d("a",{key:1,href:`${n(R).config.base_url}/modules/${s.value.slug}`,target:"_blank",class:"grid grid-cols-1 gap-x-6 gap-y-4 sm:grid-cols-2"},[o(H,{size:"xl",class:"items-center flex justify-center text-base mt-10"},{default:u(()=>[o(Y,{name:"ShoppingCartIcon",class:"mr-2"}),k(" "+r(t.$t("modules.buy_now")),1)]),_:1})],8,St)),zt,e("div",Ut,[e("h3",Dt,r(t.$t("modules.what_you_get")),1),e("div",Kt,[e("div",{class:"prose prose-sm max-w-none text-gray-500 text-sm",innerHTML:s.value.highlights},null,8,qt)])]),e("div",Et,[(a(!0),d($,null,C(s.value.links,(l,y)=>(a(),d("div",{key:y,class:"mb-4 last:mb-0 flex"},[o(Y,{name:l.icon,class:"mr-4"},null,8,["name"]),e("a",{href:l.link,class:"text-primary-500",target:"_blank"},r(l.label),9,Ot)]))),128))]),n(x)?(a(),d("div",At,[e("ul",Ft,[(a(!0),d($,null,C(F,l=>(a(),d("li",{key:l.stepUrl,class:"flex justify-between w-full py-3 border-b border-gray-200 border-solid last:border-b-0"},[e("p",Gt,r(t.$t(l.translationKey)),1),e("div",Zt,[l.time?(a(),d("span",Jt,r(l.time),1)):p("",!0),e("span",{class:b([ce(l),"block py-1 text-sm text-center uppercase rounded-full"]),style:{width:"88px"}},r(W(l)),3)])]))),128))])])):p("",!0)]),e("div",Qt,[o(n(Pe),{as:"div"},{default:u(()=>[o(n(Ce),{class:"-mb-px flex space-x-8 border-b border-gray-200"},{default:u(()=>[o(n(G),{as:"template"},{default:u(({selected:l})=>[e("button",{class:b([l?"border-primary-600 text-primary-600":"border-transparent text-gray-700 hover:text-gray-800 hover:border-gray-300","whitespace-nowrap py-6 border-b-2 font-medium text-sm"])},r(t.$t("modules.customer_reviews")),3)]),_:1}),o(n(G),{as:"template"},{default:u(({selected:l})=>[e("button",{class:b([l?"border-primary-600 text-primary-600":"border-transparent text-gray-700 hover:text-gray-800 hover:border-gray-300","whitespace-nowrap py-6 border-b-2 font-medium text-sm"])},r(t.$t("modules.faq")),3)]),_:1}),o(n(G),{as:"template"},{default:u(({selected:l})=>[e("button",{class:b([l?"border-primary-600 text-primary-600":"border-transparent text-gray-700 hover:text-gray-800 hover:border-gray-300","whitespace-nowrap py-6 border-b-2 font-medium text-sm"])},r(t.$t("modules.license")),3)]),_:1})]),_:1}),o(n(je),{as:"template"},{default:u(()=>[o(n(Z),{class:"-mb-10"},{default:u(()=>[Wt,s.value.reviews.length?(a(),d("div",Xt,[(a(!0),d($,null,C(s.value.reviews,(l,y)=>(a(),d("div",{key:y,class:"flex text-sm text-gray-500 space-x-4"},[e("div",es,[e("span",ts,[e("span",ss,r(l.customer.name[0]),1)])]),e("div",{class:b([y===0?"":"border-t border-gray-200","py-10"])},[e("h3",ls,r(l.customer.name),1),e("p",null,r(n(te)(l.created_at).format("MMMM Do YYYY")),1),e("div",as,[o(L,{rating:l.rating},null,8,["rating"])]),e("div",{class:"mt-4 prose prose-sm max-w-none text-gray-500",innerHTML:l.feedback},null,8,os)],2)]))),128))])):(a(),d("div",ns,[e("p",rs,r(t.$t("modules.no_reviews_found")),1)]))]),_:1}),o(n(Z),{as:"dl",class:"text-sm text-gray-500"},{default:u(()=>[is,(a(!0),d($,null,C(s.value.faq,l=>(a(),d($,{key:l.question},[e("dt",ds,r(l.question),1),e("dd",us,[e("p",null,r(l.answer),1)])],64))),128))]),_:1}),o(n(Z),{class:"pt-10"},{default:u(()=>[cs,e("div",{class:"prose prose-sm max-w-none text-gray-500",innerHTML:s.value.license},null,8,ms)]),_:1})]),_:1})]),_:1})])]),E.value&&E.value.length?(a(),d("div",_s,[e("div",ps,[e("h2",gs,r(t.$t("modules.other_modules")),1),e("a",vs,[k(r(t.$t("modules.view_all")),1),hs])]),e("div",fs,[(a(!0),d($,null,C(E.value,(l,y)=>(a(),d("div",{key:y},[o(tt,{data:l},null,8,["data"])]))),128))])])):p("",!0),ys]),_:1}))}}};export{xs as default}; diff --git a/public/build/assets/View-vRzg6k5F.js b/public/build/assets/View-Mv-Rah7E.js similarity index 96% rename from public/build/assets/View-vRzg6k5F.js rename to public/build/assets/View-Mv-Rah7E.js index e3c0e125..cde5ccd5 100644 --- a/public/build/assets/View-vRzg6k5F.js +++ b/public/build/assets/View-Mv-Rah7E.js @@ -1 +1 @@ -import{F as ne,aq as re,M as ie,a7 as de,v as ue,f as y,L as ce,H as me,k as S,z as ve,P as fe,r,o as i,c as w,a,m as v,w as o,b as d,l as b,Q as C,p as E,t as f,K as p,N as j,O as pe,J as _e}from"./main-B9dpPbRR.js";import{_ as ye}from"./SendInvoiceModal-gHfWsGqG.js";import{_ as ge}from"./InvoiceIndexDropdown-bkaK7_Us.js";import{L as be}from"./LoadingIcon-eCpWurti.js";import"./mail-driver-L7_iQECX.js";const he={class:"text-sm mr-3"},Be={class:"fixed top-0 left-0 hidden h-full pt-16 pb-[6.4rem] ml-56 bg-white xl:ml-64 w-88 xl:block"},xe={class:"flex items-center justify-between px-4 pt-8 pb-2 border border-gray-200 border-solid height-full"},Ie={class:"mb-6"},ke={class:"flex mb-6 ml-3",role:"group","aria-label":"First group"},Se={class:"px-2 py-1 pb-2 mb-1 mb-2 text-sm border-b border-gray-200 border-solid"},we={class:"flex-2"},Te={class:"mt-1 mb-2 text-xs not-italic font-medium leading-5 text-gray-600"},Ve={class:"flex-1 whitespace-nowrap right"},Ee={class:"text-sm not-italic font-normal leading-5 text-right text-gray-600 est-date"},Fe={key:0,class:"flex justify-center p-4 items-center"},$e={key:1,class:"flex justify-center px-4 mt-5 text-sm text-gray-600"},De={class:"flex flex-col min-h-0 mt-8 overflow-hidden",style:{height:"75vh"}},Ne=["src"],Ue={__name:"View",setup(Le){const R=ne(),F=re(),$=ie(),H=de(),{t:_}=ue.useI18n(),l=y(null),h=ce(),T=y(!1),B=y(!1),u=y(null),x=y(1),D=y(1),z=y(null),t=me({orderBy:null,orderByField:null,searchText:null}),O=S(()=>l.value.invoice_number),M=S(()=>t.orderBy==="asc"||t.orderBy==null);S(()=>M.value?_("general.ascending"):_("general.descending"));const q=S(()=>`/invoices/pdf/${l.value.unique_hash}`);S(()=>l.value&&l.value.id?invoice.value.id:null),ve(h,(e,n)=>{e.name==="invoices.view"&&P()});async function G(){H.openDialog({title:_("general.are_you_sure"),message:_("invoices.invoice_mark_as_sent"),yesLabel:_("general.ok"),noLabel:_("general.cancel"),variant:"primary",hideNoButton:!1,size:"lg"}).then(async e=>{T.value=!1,e&&(await F.markAsSent({id:l.value.id,status:"SENT"}),l.value.status="SENT",T.value=!0),T.value=!1})}async function J(e){R.openModal({title:_("invoices.send_invoice"),componentName:"SendInvoiceModal",id:l.value.id,data:l.value})}function K(e){return h.params.id==e}async function I(e,n=!1){if(B.value)return;let c={};t.searchText!==""&&t.searchText!==null&&t.searchText!==void 0&&(c.search=t.searchText),t.orderBy!==null&&t.orderBy!==void 0&&(c.orderBy=t.orderBy),t.orderByField!==null&&t.orderByField!==void 0&&(c.orderByField=t.orderByField),B.value=!0;let k=await F.fetchInvoices({page:e,...c});B.value=!1,u.value=u.value?u.value:[],u.value=[...u.value,...k.data.data],x.value=e||1,D.value=k.data.meta.last_page;let V=u.value.find(g=>g.id==h.params.id);n==!1&&!V&&x.value{n==!1&&Q()},500)}function Q(){const e=document.getElementById(`invoice-${h.params.id}`);e&&(e.scrollIntoView({behavior:"smooth"}),e.classList.add("shake"),W())}function W(){z.value.addEventListener("scroll",e=>{e.target.scrollTop>0&&e.target.scrollTop+e.target.clientHeight>e.target.scrollHeight-200&&x.valuen.id===l.value.id);u.value[e]&&(u.value[e].status="SENT",l.value.status="SENT")}return I(),P(),m=fe.debounce(m,500),(e,n)=>{const c=r("BaseButton"),k=r("router-link"),V=r("BasePageHeader"),g=r("BaseIcon"),Z=r("BaseInput"),N=r("BaseRadio"),L=r("BaseInputGroup"),A=r("BaseDropdownItem"),ee=r("BaseDropdown"),te=r("BaseText"),ae=r("BaseEstimateStatusBadge"),se=r("BaseFormatMoney"),oe=r("BasePage");return i(),w(j,null,[a(ye,{onUpdate:X}),l.value?(i(),v(oe,{key:0,class:"xl:pl-96 xl:ml-8"},{default:o(()=>{var U;return[a(V,{title:O.value},{actions:o(()=>[d("div",he,[l.value.status==="DRAFT"&&b($).hasAbilities(b(C).EDIT_INVOICE)?(i(),v(c,{key:0,disabled:T.value,variant:"primary-outline",onClick:G},{default:o(()=>[E(f(e.$t("invoices.mark_as_sent")),1)]),_:1},8,["disabled"])):p("",!0)]),l.value.status==="DRAFT"&&b($).hasAbilities(b(C).SEND_INVOICE)?(i(),v(c,{key:0,variant:"primary",class:"text-sm",onClick:J},{default:o(()=>[E(f(e.$t("invoices.send_invoice")),1)]),_:1})):p("",!0),b($).hasAbilities(b(C).CREATE_PAYMENT)?(i(),v(k,{key:1,to:`/admin/payments/${e.$route.params.id}/create`},{default:o(()=>[l.value.status==="SENT"||l.value.status==="VIEWED"?(i(),v(c,{key:0,variant:"primary"},{default:o(()=>[E(f(e.$t("invoices.record_payment")),1)]),_:1})):p("",!0)]),_:1},8,["to"])):p("",!0),a(ge,{class:"ml-3",row:l.value,"load-data":I},null,8,["row"])]),_:1},8,["title"]),d("div",Be,[d("div",xe,[d("div",Ie,[a(Z,{modelValue:t.searchText,"onUpdate:modelValue":n[0]||(n[0]=s=>t.searchText=s),placeholder:e.$t("general.search"),type:"text",variant:"gray",onInput:n[1]||(n[1]=s=>m())},{right:o(()=>[a(g,{name:"SearchIcon",class:"h-5 text-gray-400"})]),_:1},8,["modelValue","placeholder"])]),d("div",ke,[a(ee,{class:"ml-3",position:"bottom-start"},{activator:o(()=>[a(c,{size:"md",variant:"gray"},{default:o(()=>[a(g,{name:"FilterIcon"})]),_:1})]),default:o(()=>[d("div",Se,f(e.$t("general.sort_by")),1),a(A,{class:"flex px-1 py-2 cursor-pointer"},{default:o(()=>[a(L,{class:"-mt-3 font-normal"},{default:o(()=>[a(N,{id:"filter_invoice_date",modelValue:t.orderByField,"onUpdate:modelValue":[n[2]||(n[2]=s=>t.orderByField=s),m],label:e.$t("reports.invoices.invoice_date"),size:"sm",name:"filter",value:"invoice_date"},null,8,["modelValue","label"])]),_:1})]),_:1}),a(A,{class:"flex px-1 py-2 cursor-pointer"},{default:o(()=>[a(L,{class:"-mt-3 font-normal"},{default:o(()=>[a(N,{id:"filter_due_date",modelValue:t.orderByField,"onUpdate:modelValue":[n[3]||(n[3]=s=>t.orderByField=s),m],label:e.$t("invoices.due_date"),value:"due_date",size:"sm",name:"filter"},null,8,["modelValue","label"])]),_:1})]),_:1}),a(A,{class:"flex px-1 py-2 cursor-pointer"},{default:o(()=>[a(L,{class:"-mt-3 font-normal"},{default:o(()=>[a(N,{id:"filter_invoice_number",modelValue:t.orderByField,"onUpdate:modelValue":[n[4]||(n[4]=s=>t.orderByField=s),m],label:e.$t("invoices.invoice_number"),value:"invoice_number",size:"sm",name:"filter"},null,8,["modelValue","label"])]),_:1})]),_:1})]),_:1}),a(c,{class:"ml-1",size:"md",variant:"gray",onClick:Y},{default:o(()=>[M.value?(i(),v(g,{key:0,name:"SortAscendingIcon"})):(i(),v(g,{key:1,name:"SortDescendingIcon"}))]),_:1})])]),d("div",{ref_key:"invoiceListSection",ref:z,class:"h-full overflow-y-scroll border-l border-gray-200 border-solid base-scroll"},[(i(!0),w(j,null,pe(u.value,(s,le)=>(i(),w("div",{key:le},[s?(i(),v(k,{key:0,id:"invoice-"+s.id,to:`/admin/invoices/${s.id}/view`,class:_e(["flex justify-between side-invoice p-4 cursor-pointer hover:bg-gray-100 items-center border-l-4 border-transparent",{"bg-gray-100 border-l-4 border-primary-500 border-solid":K(s.id)}]),style:{"border-bottom":"1px solid rgba(185, 193, 209, 0.41)"}},{default:o(()=>[d("div",we,[a(te,{text:s.customer.name,length:30,class:"pr-2 mb-2 text-sm not-italic font-normal leading-5 text-black capitalize truncate"},null,8,["text"]),d("div",Te,f(s.invoice_number),1),a(ae,{status:s.status,class:"px-1 text-xs"},{default:o(()=>[E(f(s.status),1)]),_:2},1032,["status"])]),d("div",Ve,[a(se,{class:"mb-2 text-xl not-italic font-semibold leading-8 text-right text-gray-900 block",amount:s.total,currency:s.customer.currency},null,8,["amount","currency"]),d("div",Ee,f(s.formatted_invoice_date),1)])]),_:2},1032,["id","to","class"])):p("",!0)]))),128)),B.value?(i(),w("div",Fe,[a(be,{class:"h-6 m-1 animate-spin text-primary-400"})])):p("",!0),!((U=u.value)!=null&&U.length)&&!B.value?(i(),w("p",$e,f(e.$t("invoices.no_matching_invoices")),1)):p("",!0)],512)]),d("div",De,[d("iframe",{src:`${q.value}`,class:"flex-1 border border-gray-400 border-solid bg-white rounded-md frame-style"},null,8,Ne)])]}),_:1})):p("",!0)],64)}}};export{Ue as default}; +import{F as ne,aq as re,M as ie,a7 as de,v as ue,f as y,L as ce,H as me,k as S,z as ve,P as fe,r,o as i,c as w,a,m as v,w as o,b as d,l as b,Q as C,p as E,t as f,K as p,N as j,O as pe,J as _e}from"./main-pPEsZPea.js";import{_ as ye}from"./SendInvoiceModal-XAwfWejZ.js";import{_ as ge}from"./InvoiceIndexDropdown-Vtuy_VYF.js";import{L as be}from"./LoadingIcon-EteEuBl4.js";import"./mail-driver-SNHZXvKB.js";const he={class:"text-sm mr-3"},Be={class:"fixed top-0 left-0 hidden h-full pt-16 pb-[6.4rem] ml-56 bg-white xl:ml-64 w-88 xl:block"},xe={class:"flex items-center justify-between px-4 pt-8 pb-2 border border-gray-200 border-solid height-full"},Ie={class:"mb-6"},ke={class:"flex mb-6 ml-3",role:"group","aria-label":"First group"},Se={class:"px-2 py-1 pb-2 mb-1 mb-2 text-sm border-b border-gray-200 border-solid"},we={class:"flex-2"},Te={class:"mt-1 mb-2 text-xs not-italic font-medium leading-5 text-gray-600"},Ve={class:"flex-1 whitespace-nowrap right"},Ee={class:"text-sm not-italic font-normal leading-5 text-right text-gray-600 est-date"},Fe={key:0,class:"flex justify-center p-4 items-center"},$e={key:1,class:"flex justify-center px-4 mt-5 text-sm text-gray-600"},De={class:"flex flex-col min-h-0 mt-8 overflow-hidden",style:{height:"75vh"}},Ne=["src"],Ue={__name:"View",setup(Le){const R=ne(),F=re(),$=ie(),H=de(),{t:_}=ue.useI18n(),l=y(null),h=ce(),T=y(!1),B=y(!1),u=y(null),x=y(1),D=y(1),z=y(null),t=me({orderBy:null,orderByField:null,searchText:null}),O=S(()=>l.value.invoice_number),M=S(()=>t.orderBy==="asc"||t.orderBy==null);S(()=>M.value?_("general.ascending"):_("general.descending"));const q=S(()=>`/invoices/pdf/${l.value.unique_hash}`);S(()=>l.value&&l.value.id?invoice.value.id:null),ve(h,(e,n)=>{e.name==="invoices.view"&&P()});async function G(){H.openDialog({title:_("general.are_you_sure"),message:_("invoices.invoice_mark_as_sent"),yesLabel:_("general.ok"),noLabel:_("general.cancel"),variant:"primary",hideNoButton:!1,size:"lg"}).then(async e=>{T.value=!1,e&&(await F.markAsSent({id:l.value.id,status:"SENT"}),l.value.status="SENT",T.value=!0),T.value=!1})}async function J(e){R.openModal({title:_("invoices.send_invoice"),componentName:"SendInvoiceModal",id:l.value.id,data:l.value})}function K(e){return h.params.id==e}async function I(e,n=!1){if(B.value)return;let c={};t.searchText!==""&&t.searchText!==null&&t.searchText!==void 0&&(c.search=t.searchText),t.orderBy!==null&&t.orderBy!==void 0&&(c.orderBy=t.orderBy),t.orderByField!==null&&t.orderByField!==void 0&&(c.orderByField=t.orderByField),B.value=!0;let k=await F.fetchInvoices({page:e,...c});B.value=!1,u.value=u.value?u.value:[],u.value=[...u.value,...k.data.data],x.value=e||1,D.value=k.data.meta.last_page;let V=u.value.find(g=>g.id==h.params.id);n==!1&&!V&&x.value{n==!1&&Q()},500)}function Q(){const e=document.getElementById(`invoice-${h.params.id}`);e&&(e.scrollIntoView({behavior:"smooth"}),e.classList.add("shake"),W())}function W(){z.value.addEventListener("scroll",e=>{e.target.scrollTop>0&&e.target.scrollTop+e.target.clientHeight>e.target.scrollHeight-200&&x.valuen.id===l.value.id);u.value[e]&&(u.value[e].status="SENT",l.value.status="SENT")}return I(),P(),m=fe.debounce(m,500),(e,n)=>{const c=r("BaseButton"),k=r("router-link"),V=r("BasePageHeader"),g=r("BaseIcon"),Z=r("BaseInput"),N=r("BaseRadio"),L=r("BaseInputGroup"),A=r("BaseDropdownItem"),ee=r("BaseDropdown"),te=r("BaseText"),ae=r("BaseEstimateStatusBadge"),se=r("BaseFormatMoney"),oe=r("BasePage");return i(),w(j,null,[a(ye,{onUpdate:X}),l.value?(i(),v(oe,{key:0,class:"xl:pl-96 xl:ml-8"},{default:o(()=>{var U;return[a(V,{title:O.value},{actions:o(()=>[d("div",he,[l.value.status==="DRAFT"&&b($).hasAbilities(b(C).EDIT_INVOICE)?(i(),v(c,{key:0,disabled:T.value,variant:"primary-outline",onClick:G},{default:o(()=>[E(f(e.$t("invoices.mark_as_sent")),1)]),_:1},8,["disabled"])):p("",!0)]),l.value.status==="DRAFT"&&b($).hasAbilities(b(C).SEND_INVOICE)?(i(),v(c,{key:0,variant:"primary",class:"text-sm",onClick:J},{default:o(()=>[E(f(e.$t("invoices.send_invoice")),1)]),_:1})):p("",!0),b($).hasAbilities(b(C).CREATE_PAYMENT)?(i(),v(k,{key:1,to:`/admin/payments/${e.$route.params.id}/create`},{default:o(()=>[l.value.status==="SENT"||l.value.status==="VIEWED"?(i(),v(c,{key:0,variant:"primary"},{default:o(()=>[E(f(e.$t("invoices.record_payment")),1)]),_:1})):p("",!0)]),_:1},8,["to"])):p("",!0),a(ge,{class:"ml-3",row:l.value,"load-data":I},null,8,["row"])]),_:1},8,["title"]),d("div",Be,[d("div",xe,[d("div",Ie,[a(Z,{modelValue:t.searchText,"onUpdate:modelValue":n[0]||(n[0]=s=>t.searchText=s),placeholder:e.$t("general.search"),type:"text",variant:"gray",onInput:n[1]||(n[1]=s=>m())},{right:o(()=>[a(g,{name:"SearchIcon",class:"h-5 text-gray-400"})]),_:1},8,["modelValue","placeholder"])]),d("div",ke,[a(ee,{class:"ml-3",position:"bottom-start"},{activator:o(()=>[a(c,{size:"md",variant:"gray"},{default:o(()=>[a(g,{name:"FilterIcon"})]),_:1})]),default:o(()=>[d("div",Se,f(e.$t("general.sort_by")),1),a(A,{class:"flex px-1 py-2 cursor-pointer"},{default:o(()=>[a(L,{class:"-mt-3 font-normal"},{default:o(()=>[a(N,{id:"filter_invoice_date",modelValue:t.orderByField,"onUpdate:modelValue":[n[2]||(n[2]=s=>t.orderByField=s),m],label:e.$t("reports.invoices.invoice_date"),size:"sm",name:"filter",value:"invoice_date"},null,8,["modelValue","label"])]),_:1})]),_:1}),a(A,{class:"flex px-1 py-2 cursor-pointer"},{default:o(()=>[a(L,{class:"-mt-3 font-normal"},{default:o(()=>[a(N,{id:"filter_due_date",modelValue:t.orderByField,"onUpdate:modelValue":[n[3]||(n[3]=s=>t.orderByField=s),m],label:e.$t("invoices.due_date"),value:"due_date",size:"sm",name:"filter"},null,8,["modelValue","label"])]),_:1})]),_:1}),a(A,{class:"flex px-1 py-2 cursor-pointer"},{default:o(()=>[a(L,{class:"-mt-3 font-normal"},{default:o(()=>[a(N,{id:"filter_invoice_number",modelValue:t.orderByField,"onUpdate:modelValue":[n[4]||(n[4]=s=>t.orderByField=s),m],label:e.$t("invoices.invoice_number"),value:"invoice_number",size:"sm",name:"filter"},null,8,["modelValue","label"])]),_:1})]),_:1})]),_:1}),a(c,{class:"ml-1",size:"md",variant:"gray",onClick:Y},{default:o(()=>[M.value?(i(),v(g,{key:0,name:"SortAscendingIcon"})):(i(),v(g,{key:1,name:"SortDescendingIcon"}))]),_:1})])]),d("div",{ref_key:"invoiceListSection",ref:z,class:"h-full overflow-y-scroll border-l border-gray-200 border-solid base-scroll"},[(i(!0),w(j,null,pe(u.value,(s,le)=>(i(),w("div",{key:le},[s?(i(),v(k,{key:0,id:"invoice-"+s.id,to:`/admin/invoices/${s.id}/view`,class:_e(["flex justify-between side-invoice p-4 cursor-pointer hover:bg-gray-100 items-center border-l-4 border-transparent",{"bg-gray-100 border-l-4 border-primary-500 border-solid":K(s.id)}]),style:{"border-bottom":"1px solid rgba(185, 193, 209, 0.41)"}},{default:o(()=>[d("div",we,[a(te,{text:s.customer.name,length:30,class:"pr-2 mb-2 text-sm not-italic font-normal leading-5 text-black capitalize truncate"},null,8,["text"]),d("div",Te,f(s.invoice_number),1),a(ae,{status:s.status,class:"px-1 text-xs"},{default:o(()=>[E(f(s.status),1)]),_:2},1032,["status"])]),d("div",Ve,[a(se,{class:"mb-2 text-xl not-italic font-semibold leading-8 text-right text-gray-900 block",amount:s.total,currency:s.customer.currency},null,8,["amount","currency"]),d("div",Ee,f(s.formatted_invoice_date),1)])]),_:2},1032,["id","to","class"])):p("",!0)]))),128)),B.value?(i(),w("div",Fe,[a(be,{class:"h-6 m-1 animate-spin text-primary-400"})])):p("",!0),!((U=u.value)!=null&&U.length)&&!B.value?(i(),w("p",$e,f(e.$t("invoices.no_matching_invoices")),1)):p("",!0)],512)]),d("div",De,[d("iframe",{src:`${q.value}`,class:"flex-1 border border-gray-400 border-solid bg-white rounded-md frame-style"},null,8,Ne)])]}),_:1})):p("",!0)],64)}}};export{Ue as default}; diff --git a/public/build/assets/View-NkeVhKPD.js b/public/build/assets/View-Yah6n2cE.js similarity index 98% rename from public/build/assets/View-NkeVhKPD.js rename to public/build/assets/View-Yah6n2cE.js index 127bc58d..4d6199b3 100644 --- a/public/build/assets/View-NkeVhKPD.js +++ b/public/build/assets/View-Yah6n2cE.js @@ -1 +1 @@ -import{a8 as M,L as N,v as Y,f as P,H as R,P as ee,k as E,r as u,o as l,c as b,b as o,a as e,w as n,l as a,t as x,m,N as G,O as X,K as p,J as q,p as V,Z as te,E as se,a5 as J,z as ae,n as ne,a7 as le,M as oe,e as re,Q as S}from"./main-B9dpPbRR.js";import{L as ce}from"./LoadingIcon-eCpWurti.js";import{_ as ie}from"./LineChart-wDTzU--w.js";import{_ as ue}from"./CustomerIndexDropdown-ywCQasB6.js";const de={class:"fixed top-0 left-0 hidden h-full pt-16 pb-[6.6rem] ml-56 bg-white xl:ml-64 w-88 xl:block"},me={class:"flex items-center justify-between px-4 pt-8 pb-2 border border-gray-200 border-solid height-full"},_e={class:"flex mb-6 ml-3",role:"group","aria-label":"First group"},pe={class:"px-4 py-3 pb-2 mb-2 text-sm border-b border-gray-200 border-solid"},fe={class:"px-2"},he={class:"px-2"},ye={class:"flex-1 font-bold text-right whitespace-nowrap"},ge={key:0,class:"flex justify-center p-4 items-center"},ve={key:1,class:"flex justify-center px-4 mt-5 text-sm text-gray-600"},xe={__name:"CustomerViewSidebar",setup(j){const k=M(),t=N(),{t:d}=Y.useI18n();let r=P(!1),s=R({orderBy:null,orderByField:null,searchText:null});const _=P(null),h=P(1),y=P(1),I=P(null);i=ee.debounce(i,500);const f=E(()=>s.orderBy==="asc"||s.orderBy==null);E(()=>f.value?d("general.ascending"):d("general.descending"));function B(c){return t.params.id==c}async function g(c,w=!1){if(r.value)return;let C={};s.searchText!==""&&s.searchText!==null&&s.searchText!==void 0&&(C.display_name=s.searchText),s.orderBy!==null&&s.orderBy!==void 0&&(C.orderBy=s.orderBy),s.orderByField!==null&&s.orderByField!==void 0&&(C.orderByField=s.orderByField),r.value=!0;let F=await k.fetchCustomers({page:c,...C,limit:15});r.value=!1,_.value=_.value?_.value:[],_.value=[..._.value,...F.data.data],h.value=c||1,y.value=F.data.meta.last_page;let A=_.value.find(L=>L.id==t.params.id);w==!1&&!A&&h.value{w==!1&&$()},500)}function $(){const c=document.getElementById(`customer-${t.params.id}`);c&&(c.scrollIntoView({behavior:"smooth"}),c.classList.add("shake"),D())}function D(){I.value.addEventListener("scroll",c=>{c.target.scrollTop>0&&c.target.scrollTop+c.target.clientHeight>c.target.scrollHeight-200&&h.value{var H;const C=u("BaseIcon"),F=u("BaseInput"),A=u("BaseButton"),L=u("BaseRadio"),O=u("BaseInputGroup"),U=u("BaseDropdownItem"),K=u("BaseDropdown"),z=u("BaseText"),Q=u("BaseFormatMoney"),Z=u("router-link");return l(),b("div",de,[o("div",me,[e(F,{modelValue:a(s).searchText,"onUpdate:modelValue":w[0]||(w[0]=v=>a(s).searchText=v),placeholder:c.$t("general.search"),"container-class":"mb-6",type:"text",variant:"gray",onInput:w[1]||(w[1]=v=>i())},{default:n(()=>[e(C,{name:"SearchIcon",class:"text-gray-500"})]),_:1},8,["modelValue","placeholder"]),o("div",_e,[e(K,{"close-on-select":!1,position:"bottom-start","width-class":"w-40","position-class":"left-0"},{activator:n(()=>[e(A,{variant:"gray"},{default:n(()=>[e(C,{name:"FilterIcon"})]),_:1})]),default:n(()=>[o("div",pe,x(c.$t("general.sort_by")),1),o("div",fe,[e(U,{class:"flex px-1 py-2 mt-1 cursor-pointer hover:rounded-md"},{default:n(()=>[e(O,{class:"pt-2 -mt-4"},{default:n(()=>[e(L,{id:"filter_create_date",modelValue:a(s).orderByField,"onUpdate:modelValue":[w[2]||(w[2]=v=>a(s).orderByField=v),i],label:c.$t("customers.create_date"),size:"sm",name:"filter",value:"invoices.created_at"},null,8,["modelValue","label"])]),_:1})]),_:1})]),o("div",he,[e(U,{class:"flex px-1 cursor-pointer hover:rounded-md"},{default:n(()=>[e(O,{class:"pt-2 -mt-4"},{default:n(()=>[e(L,{id:"filter_display_name",modelValue:a(s).orderByField,"onUpdate:modelValue":[w[3]||(w[3]=v=>a(s).orderByField=v),i],label:c.$t("customers.display_name"),size:"sm",name:"filter",value:"name"},null,8,["modelValue","label"])]),_:1})]),_:1})])]),_:1}),e(A,{class:"ml-1",size:"md",variant:"gray",onClick:T},{default:n(()=>[f.value?(l(),m(C,{key:0,name:"SortAscendingIcon"})):(l(),m(C,{key:1,name:"SortDescendingIcon"}))]),_:1})])]),o("div",{ref_key:"customerListSection",ref:I,class:"h-full overflow-y-scroll border-l border-gray-200 border-solid sidebar base-scroll"},[(l(!0),b(G,null,X(_.value,(v,W)=>(l(),b("div",{key:W},[v?(l(),m(Z,{key:0,id:"customer-"+v.id,to:`/admin/customers/${v.id}/view`,class:q(["flex justify-between p-4 items-center cursor-pointer hover:bg-gray-100 border-l-4 border-transparent",{"bg-gray-100 border-l-4 border-primary-500 border-solid":B(v.id)}]),style:{"border-top":"1px solid rgba(185, 193, 209, 0.41)"}},{default:n(()=>[o("div",null,[e(z,{text:v.name,length:30,class:"pr-2 text-sm not-italic font-normal leading-5 text-black capitalize truncate"},null,8,["text"]),v.contact_name?(l(),m(z,{key:0,text:v.contact_name,length:30,class:"mt-1 text-xs not-italic font-medium leading-5 text-gray-600"},null,8,["text"])):p("",!0)]),o("div",ye,[e(Q,{amount:v.due_amount!==null?v.due_amount:0,currency:v.currency},null,8,["amount","currency"])])]),_:2},1032,["id","to","class"])):p("",!0)]))),128)),a(r)?(l(),b("div",ge,[e(ce,{class:"h-6 m-1 animate-spin text-primary-400"})])):p("",!0),!((H=_.value)!=null&&H.length)&&!a(r)?(l(),b("p",ve,x(c.$t("customers.no_matching_customers")),1)):p("",!0)],512)])}}},be={class:"pt-6 mt-5 border-t border-solid lg:pt-8 md:pt-4 border-gray-200"},Be={key:0,class:"text-sm font-bold leading-5 text-black non-italic"},$e={key:0},we={key:1},Ce={key:1,class:"text-sm font-bold leading-5 text-black non-italic"},ke={__name:"CustomerInfo",setup(j){const k=M(),t=E(()=>k.selectedViewCustomer),d=E(()=>k.isFetchingViewData),r=E(()=>{var s,_;return(s=t==null?void 0:t.value)!=null&&s.fields?(_=t==null?void 0:t.value)==null?void 0:_.fields:[]});return(s,_)=>{const h=u("BaseHeading"),y=u("BaseDescriptionListItem"),I=u("BaseDescriptionList"),f=u("BaseCustomerAddressDisplay");return l(),b("div",be,[e(h,null,{default:n(()=>[V(x(s.$t("customers.basic_info")),1)]),_:1}),e(I,null,{default:n(()=>{var B,g,$;return[e(y,{"content-loading":d.value,label:s.$t("customers.display_name"),value:(B=t.value)==null?void 0:B.name},null,8,["content-loading","label","value"]),e(y,{"content-loading":d.value,label:s.$t("customers.primary_contact_name"),value:(g=t.value)==null?void 0:g.contact_name},null,8,["content-loading","label","value"]),e(y,{"content-loading":d.value,label:s.$t("customers.email"),value:($=t.value)==null?void 0:$.email},null,8,["content-loading","label","value"])]}),_:1}),e(I,{class:"mt-5"},{default:n(()=>{var B,g,$,D,i,T,c;return[e(y,{"content-loading":d.value,label:s.$t("wizard.currency"),value:(B=t.value)!=null&&B.currency?`${($=(g=t.value)==null?void 0:g.currency)==null?void 0:$.code} (${(i=(D=t.value)==null?void 0:D.currency)==null?void 0:i.symbol})`:""},null,8,["content-loading","label","value"]),e(y,{"content-loading":d.value,label:s.$t("customers.phone_number"),value:(T=t.value)==null?void 0:T.phone},null,8,["content-loading","label","value"]),e(y,{"content-loading":d.value,label:s.$t("customers.website"),value:(c=t.value)==null?void 0:c.website},null,8,["content-loading","label","value"])]}),_:1}),t.value.billing||t.value.shipping?(l(),m(h,{key:0,class:"mt-8"},{default:n(()=>[V(x(s.$t("customers.address")),1)]),_:1})):p("",!0),e(I,{class:"mt-5"},{default:n(()=>[t.value.billing?(l(),m(y,{key:0,"content-loading":d.value,label:s.$t("customers.billing_address")},{default:n(()=>[e(f,{address:t.value.billing},null,8,["address"])]),_:1},8,["content-loading","label"])):p("",!0),t.value.shipping?(l(),m(y,{key:1,"content-loading":d.value,label:s.$t("customers.shipping_address")},{default:n(()=>[e(f,{address:t.value.shipping},null,8,["address"])]),_:1},8,["content-loading","label"])):p("",!0)]),_:1}),r.value.length>0?(l(),m(h,{key:1,class:"mt-8"},{default:n(()=>[V(x(s.$t("settings.custom_fields.title")),1)]),_:1})):p("",!0),e(I,{class:"mt-5"},{default:n(()=>[(l(!0),b(G,null,X(r.value,(B,g)=>(l(),m(y,{key:g,"content-loading":d.value,label:B.custom_field.label},{default:n(()=>[B.type==="Switch"?(l(),b("p",Be,[B.default_answer===1?(l(),b("span",$e," Yes ")):(l(),b("span",we," No "))])):(l(),b("p",Ce,x(B.default_answer),1))]),_:2},1032,["content-loading","label"]))),128))]),_:1})])}}},Te={},Ee={class:"col-span-12 xl:col-span-9 xxl:col-span-10"},Ie={class:"flex justify-between mt-1 mb-6"},De={class:"grid col-span-12 mt-6 text-center xl:mt-0 sm:grid-cols-4 xl:text-right xl:col-span-3 xl:grid-cols-1 xxl:col-span-2"},Se={class:"flex flex-col items-center justify-center px-6 py-2 lg:justify-end lg:items-end"},Ve={class:"flex flex-col items-center justify-center px-6 py-2 lg:justify-end lg:items-end"},Ae={class:"flex flex-col items-center justify-center px-6 py-2 lg:justify-end lg:items-end"},Pe={class:"flex flex-col items-center justify-center px-6 py-2 lg:justify-end lg:items-end"};function Fe(j,k){const t=u("BaseContentPlaceholdersText"),d=u("BaseContentPlaceholdersBox"),r=u("BaseContentPlaceholders");return l(),m(r,{class:"grid grid-cols-12"},{default:n(()=>[o("div",Ee,[o("div",Ie,[e(t,{class:"h-10 w-36",lines:1}),e(t,{class:"h-10 w-40 !mt-0",lines:1})]),e(d,{class:"h-80 xl:h-72 sm:w-full"})]),o("div",De,[o("div",Se,[e(t,{class:"h-3 w-14 xl:h-4",lines:1}),e(t,{class:"w-20 h-5 xl:h-6",lines:1})]),o("div",Ve,[e(t,{class:"h-3 w-14 xl:h-4",lines:1}),e(t,{class:"w-20 h-5 xl:h-6",lines:1})]),o("div",Ae,[e(t,{class:"h-3 w-14 xl:h-4",lines:1}),e(t,{class:"w-20 h-5 xl:h-6",lines:1})]),o("div",Pe,[e(t,{class:"h-3 w-14 xl:h-4",lines:1}),e(t,{class:"w-20 h-5 xl:h-6",lines:1})])])]),_:1})}const je=te(Te,[["render",Fe]]),Le={key:1,class:"grid grid-cols-12"},Re={class:"col-span-12 xl:col-span-9 xxl:col-span-10"},Me={class:"flex justify-between mt-1 mb-6"},Ne={class:"flex items-center"},Oe={class:"w-40 h-10"},Ue={class:"grid col-span-12 mt-6 text-center xl:mt-0 sm:grid-cols-4 xl:text-right xl:col-span-3 xl:grid-cols-1 xxl:col-span-2"},ze={class:"px-6 py-2"},He={class:"text-xs leading-5 lg:text-sm"},Ye=o("br",null,null,-1),Ge={key:0,class:"block mt-1 text-xl font-semibold leading-8"},Xe={class:"px-6 py-2"},qe={class:"text-xs leading-5 lg:text-sm"},Je=o("br",null,null,-1),Ke={key:0,class:"block mt-1 text-xl font-semibold leading-8",style:{color:"#00c99c"}},Qe={class:"px-6 py-2"},Ze={class:"text-xs leading-5 lg:text-sm"},We=o("br",null,null,-1),et={key:0,class:"block mt-1 text-xl font-semibold leading-8",style:{color:"#fb7178"}},tt={class:"px-6 py-2"},st={class:"text-xs leading-5 lg:text-sm"},at=o("br",null,null,-1),nt={key:0,class:"block mt-1 text-xl font-semibold leading-8",style:{color:"#5851d8"}},lt={__name:"CustomerChart",setup(j){se();const k=M();J("utils");const t=N();let d=P(!1),r=R({}),s=R({}),_=R(["This year","Previous year"]),h=P("This year");const y=E(()=>r.expenseTotals?r.expenseTotals:[]),I=E(()=>r.netProfits?r.netProfits:[]),f=E(()=>r&&r.months?r.months:[]),B=E(()=>r.receiptTotals?r.receiptTotals:[]),g=E(()=>r.invoiceTotals?r.invoiceTotals:[]);ae(t,()=>{t.params.id&&$(),h.value="This year"},{immediate:!0});async function $(){d.value=!1;let i=await k.fetchViewCustomer({id:t.params.id});i.data&&(Object.assign(r,i.data.meta.chartData),Object.assign(s,i.data.data)),d.value=!0}async function D(i){let T={id:t.params.id};i==="Previous year"?T.previous_year=!0:T.this_year=!0;let c=await k.fetchViewCustomer(T);return c.data.meta.chartData&&Object.assign(r,c.data.meta.chartData),!0}return(i,T)=>{const c=u("BaseIcon"),w=u("BaseMultiselect"),C=u("BaseFormatMoney"),F=u("BaseCard");return l(),m(F,{class:"flex flex-col mt-6"},{default:n(()=>[a(k).isFetchingViewData?(l(),m(je,{key:0})):(l(),b("div",Le,[o("div",Re,[o("div",Me,[o("h6",Ne,[e(c,{name:"ChartSquareBarIcon",class:"h-5 text-primary-400"}),V(" "+x(i.$t("dashboard.monthly_chart.title")),1)]),o("div",Oe,[e(w,{modelValue:a(h),"onUpdate:modelValue":T[0]||(T[0]=A=>ne(h)?h.value=A:h=A),options:a(_),"allow-empty":!1,"show-labels":!1,placeholder:i.$t("dashboard.select_year"),"can-deselect":!1,onSelect:D},null,8,["modelValue","options","placeholder"])])]),a(d)?(l(),m(ie,{key:0,invoices:g.value,expenses:y.value,receipts:B.value,income:I.value,labels:f.value,class:"sm:w-full"},null,8,["invoices","expenses","receipts","income","labels"])):p("",!0)]),o("div",Ue,[o("div",ze,[o("span",He,x(i.$t("dashboard.chart_info.total_sales")),1),Ye,a(d)?(l(),b("span",Ge,[e(C,{amount:a(r).salesTotal,currency:a(s).currency},null,8,["amount","currency"])])):p("",!0)]),o("div",Xe,[o("span",qe,x(i.$t("dashboard.chart_info.total_receipts")),1),Je,a(d)?(l(),b("span",Ke,[e(C,{amount:a(r).totalExpenses,currency:a(s).currency},null,8,["amount","currency"])])):p("",!0)]),o("div",Qe,[o("span",Ze,x(i.$t("dashboard.chart_info.total_expense")),1),We,a(d)?(l(),b("span",et,[e(C,{amount:a(r).totalExpenses,currency:a(s).currency},null,8,["amount","currency"])])):p("",!0)]),o("div",tt,[o("span",st,x(i.$t("dashboard.chart_info.net_income")),1),at,a(d)?(l(),b("span",nt,[e(C,{amount:a(r).netProfit,currency:a(s).currency},null,8,["amount","currency"])])):p("",!0)])])])),e(ke)]),_:1})}}},ut={__name:"View",setup(j){J("utils"),le();const k=M(),t=oe();Y.useI18n();const d=re(),r=N();P(null);const s=E(()=>k.selectedViewCustomer.customer?k.selectedViewCustomer.customer.name:"");let _=E(()=>k.isFetchingViewData);function h(){return t.hasAbilities([S.CREATE_ESTIMATE,S.CREATE_INVOICE,S.CREATE_PAYMENT,S.CREATE_EXPENSE])}function y(){return t.hasAbilities([S.DELETE_CUSTOMER,S.EDIT_CUSTOMER])}function I(){d.push("/admin/customers")}return(f,B)=>{const g=u("BaseButton"),$=u("router-link"),D=u("BaseIcon"),i=u("BaseDropdownItem"),T=u("BaseDropdown"),c=u("BasePageHeader"),w=u("BasePage");return l(),m(w,{class:"xl:pl-96"},{default:n(()=>[e(c,{title:s.value},{actions:n(()=>[a(t).hasAbilities(a(S).EDIT_CUSTOMER)?(l(),m($,{key:0,to:`/admin/customers/${a(r).params.id}/edit`},{default:n(()=>[e(g,{class:"mr-3",variant:"primary-outline","content-loading":a(_)},{default:n(()=>[V(x(f.$t("general.edit")),1)]),_:1},8,["content-loading"])]),_:1},8,["to"])):p("",!0),h()?(l(),m(T,{key:1,position:"bottom-end","content-loading":a(_)},{activator:n(()=>[e(g,{class:"mr-3",variant:"primary","content-loading":a(_)},{default:n(()=>[V(x(f.$t("customers.new_transaction")),1)]),_:1},8,["content-loading"])]),default:n(()=>[a(t).hasAbilities(a(S).CREATE_ESTIMATE)?(l(),m($,{key:0,to:`/admin/estimates/create?customer=${f.$route.params.id}`},{default:n(()=>[e(i,{class:""},{default:n(()=>[e(D,{name:"DocumentIcon",class:"mr-3 text-gray-600"}),V(" "+x(f.$t("estimates.new_estimate")),1)]),_:1})]),_:1},8,["to"])):p("",!0),a(t).hasAbilities(a(S).CREATE_INVOICE)?(l(),m($,{key:1,to:`/admin/invoices/create?customer=${f.$route.params.id}`},{default:n(()=>[e(i,null,{default:n(()=>[e(D,{name:"DocumentTextIcon",class:"mr-3 text-gray-600"}),V(" "+x(f.$t("invoices.new_invoice")),1)]),_:1})]),_:1},8,["to"])):p("",!0),a(t).hasAbilities(a(S).CREATE_PAYMENT)?(l(),m($,{key:2,to:`/admin/payments/create?customer=${f.$route.params.id}`},{default:n(()=>[e(i,null,{default:n(()=>[e(D,{name:"CreditCardIcon",class:"mr-3 text-gray-600"}),V(" "+x(f.$t("payments.new_payment")),1)]),_:1})]),_:1},8,["to"])):p("",!0),a(t).hasAbilities(a(S).CREATE_EXPENSE)?(l(),m($,{key:3,to:`/admin/expenses/create?customer=${f.$route.params.id}`},{default:n(()=>[e(i,null,{default:n(()=>[e(D,{name:"CalculatorIcon",class:"mr-3 text-gray-600"}),V(" "+x(f.$t("expenses.new_expense")),1)]),_:1})]),_:1},8,["to"])):p("",!0)]),_:1},8,["content-loading"])):p("",!0),y()?(l(),m(ue,{key:2,class:q({"ml-3":a(_)}),row:a(k).selectedViewCustomer,"load-data":I},null,8,["class","row"])):p("",!0)]),_:1},8,["title"]),e(xe),e(lt)]),_:1})}}};export{ut as default}; +import{a8 as M,L as N,v as Y,f as P,H as R,P as ee,k as E,r as u,o as l,c as b,b as o,a as e,w as n,l as a,t as x,m,N as G,O as X,K as p,J as q,p as V,Z as te,E as se,a5 as J,z as ae,n as ne,a7 as le,M as oe,e as re,Q as S}from"./main-pPEsZPea.js";import{L as ce}from"./LoadingIcon-EteEuBl4.js";import{_ as ie}from"./LineChart-4aRzOagk.js";import{_ as ue}from"./CustomerIndexDropdown-MF-wjT1X.js";const de={class:"fixed top-0 left-0 hidden h-full pt-16 pb-[6.6rem] ml-56 bg-white xl:ml-64 w-88 xl:block"},me={class:"flex items-center justify-between px-4 pt-8 pb-2 border border-gray-200 border-solid height-full"},_e={class:"flex mb-6 ml-3",role:"group","aria-label":"First group"},pe={class:"px-4 py-3 pb-2 mb-2 text-sm border-b border-gray-200 border-solid"},fe={class:"px-2"},he={class:"px-2"},ye={class:"flex-1 font-bold text-right whitespace-nowrap"},ge={key:0,class:"flex justify-center p-4 items-center"},ve={key:1,class:"flex justify-center px-4 mt-5 text-sm text-gray-600"},xe={__name:"CustomerViewSidebar",setup(j){const k=M(),t=N(),{t:d}=Y.useI18n();let r=P(!1),s=R({orderBy:null,orderByField:null,searchText:null});const _=P(null),h=P(1),y=P(1),I=P(null);i=ee.debounce(i,500);const f=E(()=>s.orderBy==="asc"||s.orderBy==null);E(()=>f.value?d("general.ascending"):d("general.descending"));function B(c){return t.params.id==c}async function g(c,w=!1){if(r.value)return;let C={};s.searchText!==""&&s.searchText!==null&&s.searchText!==void 0&&(C.display_name=s.searchText),s.orderBy!==null&&s.orderBy!==void 0&&(C.orderBy=s.orderBy),s.orderByField!==null&&s.orderByField!==void 0&&(C.orderByField=s.orderByField),r.value=!0;let F=await k.fetchCustomers({page:c,...C,limit:15});r.value=!1,_.value=_.value?_.value:[],_.value=[..._.value,...F.data.data],h.value=c||1,y.value=F.data.meta.last_page;let A=_.value.find(L=>L.id==t.params.id);w==!1&&!A&&h.value{w==!1&&$()},500)}function $(){const c=document.getElementById(`customer-${t.params.id}`);c&&(c.scrollIntoView({behavior:"smooth"}),c.classList.add("shake"),D())}function D(){I.value.addEventListener("scroll",c=>{c.target.scrollTop>0&&c.target.scrollTop+c.target.clientHeight>c.target.scrollHeight-200&&h.value{var H;const C=u("BaseIcon"),F=u("BaseInput"),A=u("BaseButton"),L=u("BaseRadio"),O=u("BaseInputGroup"),U=u("BaseDropdownItem"),K=u("BaseDropdown"),z=u("BaseText"),Q=u("BaseFormatMoney"),Z=u("router-link");return l(),b("div",de,[o("div",me,[e(F,{modelValue:a(s).searchText,"onUpdate:modelValue":w[0]||(w[0]=v=>a(s).searchText=v),placeholder:c.$t("general.search"),"container-class":"mb-6",type:"text",variant:"gray",onInput:w[1]||(w[1]=v=>i())},{default:n(()=>[e(C,{name:"SearchIcon",class:"text-gray-500"})]),_:1},8,["modelValue","placeholder"]),o("div",_e,[e(K,{"close-on-select":!1,position:"bottom-start","width-class":"w-40","position-class":"left-0"},{activator:n(()=>[e(A,{variant:"gray"},{default:n(()=>[e(C,{name:"FilterIcon"})]),_:1})]),default:n(()=>[o("div",pe,x(c.$t("general.sort_by")),1),o("div",fe,[e(U,{class:"flex px-1 py-2 mt-1 cursor-pointer hover:rounded-md"},{default:n(()=>[e(O,{class:"pt-2 -mt-4"},{default:n(()=>[e(L,{id:"filter_create_date",modelValue:a(s).orderByField,"onUpdate:modelValue":[w[2]||(w[2]=v=>a(s).orderByField=v),i],label:c.$t("customers.create_date"),size:"sm",name:"filter",value:"invoices.created_at"},null,8,["modelValue","label"])]),_:1})]),_:1})]),o("div",he,[e(U,{class:"flex px-1 cursor-pointer hover:rounded-md"},{default:n(()=>[e(O,{class:"pt-2 -mt-4"},{default:n(()=>[e(L,{id:"filter_display_name",modelValue:a(s).orderByField,"onUpdate:modelValue":[w[3]||(w[3]=v=>a(s).orderByField=v),i],label:c.$t("customers.display_name"),size:"sm",name:"filter",value:"name"},null,8,["modelValue","label"])]),_:1})]),_:1})])]),_:1}),e(A,{class:"ml-1",size:"md",variant:"gray",onClick:T},{default:n(()=>[f.value?(l(),m(C,{key:0,name:"SortAscendingIcon"})):(l(),m(C,{key:1,name:"SortDescendingIcon"}))]),_:1})])]),o("div",{ref_key:"customerListSection",ref:I,class:"h-full overflow-y-scroll border-l border-gray-200 border-solid sidebar base-scroll"},[(l(!0),b(G,null,X(_.value,(v,W)=>(l(),b("div",{key:W},[v?(l(),m(Z,{key:0,id:"customer-"+v.id,to:`/admin/customers/${v.id}/view`,class:q(["flex justify-between p-4 items-center cursor-pointer hover:bg-gray-100 border-l-4 border-transparent",{"bg-gray-100 border-l-4 border-primary-500 border-solid":B(v.id)}]),style:{"border-top":"1px solid rgba(185, 193, 209, 0.41)"}},{default:n(()=>[o("div",null,[e(z,{text:v.name,length:30,class:"pr-2 text-sm not-italic font-normal leading-5 text-black capitalize truncate"},null,8,["text"]),v.contact_name?(l(),m(z,{key:0,text:v.contact_name,length:30,class:"mt-1 text-xs not-italic font-medium leading-5 text-gray-600"},null,8,["text"])):p("",!0)]),o("div",ye,[e(Q,{amount:v.due_amount!==null?v.due_amount:0,currency:v.currency},null,8,["amount","currency"])])]),_:2},1032,["id","to","class"])):p("",!0)]))),128)),a(r)?(l(),b("div",ge,[e(ce,{class:"h-6 m-1 animate-spin text-primary-400"})])):p("",!0),!((H=_.value)!=null&&H.length)&&!a(r)?(l(),b("p",ve,x(c.$t("customers.no_matching_customers")),1)):p("",!0)],512)])}}},be={class:"pt-6 mt-5 border-t border-solid lg:pt-8 md:pt-4 border-gray-200"},Be={key:0,class:"text-sm font-bold leading-5 text-black non-italic"},$e={key:0},we={key:1},Ce={key:1,class:"text-sm font-bold leading-5 text-black non-italic"},ke={__name:"CustomerInfo",setup(j){const k=M(),t=E(()=>k.selectedViewCustomer),d=E(()=>k.isFetchingViewData),r=E(()=>{var s,_;return(s=t==null?void 0:t.value)!=null&&s.fields?(_=t==null?void 0:t.value)==null?void 0:_.fields:[]});return(s,_)=>{const h=u("BaseHeading"),y=u("BaseDescriptionListItem"),I=u("BaseDescriptionList"),f=u("BaseCustomerAddressDisplay");return l(),b("div",be,[e(h,null,{default:n(()=>[V(x(s.$t("customers.basic_info")),1)]),_:1}),e(I,null,{default:n(()=>{var B,g,$;return[e(y,{"content-loading":d.value,label:s.$t("customers.display_name"),value:(B=t.value)==null?void 0:B.name},null,8,["content-loading","label","value"]),e(y,{"content-loading":d.value,label:s.$t("customers.primary_contact_name"),value:(g=t.value)==null?void 0:g.contact_name},null,8,["content-loading","label","value"]),e(y,{"content-loading":d.value,label:s.$t("customers.email"),value:($=t.value)==null?void 0:$.email},null,8,["content-loading","label","value"])]}),_:1}),e(I,{class:"mt-5"},{default:n(()=>{var B,g,$,D,i,T,c;return[e(y,{"content-loading":d.value,label:s.$t("wizard.currency"),value:(B=t.value)!=null&&B.currency?`${($=(g=t.value)==null?void 0:g.currency)==null?void 0:$.code} (${(i=(D=t.value)==null?void 0:D.currency)==null?void 0:i.symbol})`:""},null,8,["content-loading","label","value"]),e(y,{"content-loading":d.value,label:s.$t("customers.phone_number"),value:(T=t.value)==null?void 0:T.phone},null,8,["content-loading","label","value"]),e(y,{"content-loading":d.value,label:s.$t("customers.website"),value:(c=t.value)==null?void 0:c.website},null,8,["content-loading","label","value"])]}),_:1}),t.value.billing||t.value.shipping?(l(),m(h,{key:0,class:"mt-8"},{default:n(()=>[V(x(s.$t("customers.address")),1)]),_:1})):p("",!0),e(I,{class:"mt-5"},{default:n(()=>[t.value.billing?(l(),m(y,{key:0,"content-loading":d.value,label:s.$t("customers.billing_address")},{default:n(()=>[e(f,{address:t.value.billing},null,8,["address"])]),_:1},8,["content-loading","label"])):p("",!0),t.value.shipping?(l(),m(y,{key:1,"content-loading":d.value,label:s.$t("customers.shipping_address")},{default:n(()=>[e(f,{address:t.value.shipping},null,8,["address"])]),_:1},8,["content-loading","label"])):p("",!0)]),_:1}),r.value.length>0?(l(),m(h,{key:1,class:"mt-8"},{default:n(()=>[V(x(s.$t("settings.custom_fields.title")),1)]),_:1})):p("",!0),e(I,{class:"mt-5"},{default:n(()=>[(l(!0),b(G,null,X(r.value,(B,g)=>(l(),m(y,{key:g,"content-loading":d.value,label:B.custom_field.label},{default:n(()=>[B.type==="Switch"?(l(),b("p",Be,[B.default_answer===1?(l(),b("span",$e," Yes ")):(l(),b("span",we," No "))])):(l(),b("p",Ce,x(B.default_answer),1))]),_:2},1032,["content-loading","label"]))),128))]),_:1})])}}},Te={},Ee={class:"col-span-12 xl:col-span-9 xxl:col-span-10"},Ie={class:"flex justify-between mt-1 mb-6"},De={class:"grid col-span-12 mt-6 text-center xl:mt-0 sm:grid-cols-4 xl:text-right xl:col-span-3 xl:grid-cols-1 xxl:col-span-2"},Se={class:"flex flex-col items-center justify-center px-6 py-2 lg:justify-end lg:items-end"},Ve={class:"flex flex-col items-center justify-center px-6 py-2 lg:justify-end lg:items-end"},Ae={class:"flex flex-col items-center justify-center px-6 py-2 lg:justify-end lg:items-end"},Pe={class:"flex flex-col items-center justify-center px-6 py-2 lg:justify-end lg:items-end"};function Fe(j,k){const t=u("BaseContentPlaceholdersText"),d=u("BaseContentPlaceholdersBox"),r=u("BaseContentPlaceholders");return l(),m(r,{class:"grid grid-cols-12"},{default:n(()=>[o("div",Ee,[o("div",Ie,[e(t,{class:"h-10 w-36",lines:1}),e(t,{class:"h-10 w-40 !mt-0",lines:1})]),e(d,{class:"h-80 xl:h-72 sm:w-full"})]),o("div",De,[o("div",Se,[e(t,{class:"h-3 w-14 xl:h-4",lines:1}),e(t,{class:"w-20 h-5 xl:h-6",lines:1})]),o("div",Ve,[e(t,{class:"h-3 w-14 xl:h-4",lines:1}),e(t,{class:"w-20 h-5 xl:h-6",lines:1})]),o("div",Ae,[e(t,{class:"h-3 w-14 xl:h-4",lines:1}),e(t,{class:"w-20 h-5 xl:h-6",lines:1})]),o("div",Pe,[e(t,{class:"h-3 w-14 xl:h-4",lines:1}),e(t,{class:"w-20 h-5 xl:h-6",lines:1})])])]),_:1})}const je=te(Te,[["render",Fe]]),Le={key:1,class:"grid grid-cols-12"},Re={class:"col-span-12 xl:col-span-9 xxl:col-span-10"},Me={class:"flex justify-between mt-1 mb-6"},Ne={class:"flex items-center"},Oe={class:"w-40 h-10"},Ue={class:"grid col-span-12 mt-6 text-center xl:mt-0 sm:grid-cols-4 xl:text-right xl:col-span-3 xl:grid-cols-1 xxl:col-span-2"},ze={class:"px-6 py-2"},He={class:"text-xs leading-5 lg:text-sm"},Ye=o("br",null,null,-1),Ge={key:0,class:"block mt-1 text-xl font-semibold leading-8"},Xe={class:"px-6 py-2"},qe={class:"text-xs leading-5 lg:text-sm"},Je=o("br",null,null,-1),Ke={key:0,class:"block mt-1 text-xl font-semibold leading-8",style:{color:"#00c99c"}},Qe={class:"px-6 py-2"},Ze={class:"text-xs leading-5 lg:text-sm"},We=o("br",null,null,-1),et={key:0,class:"block mt-1 text-xl font-semibold leading-8",style:{color:"#fb7178"}},tt={class:"px-6 py-2"},st={class:"text-xs leading-5 lg:text-sm"},at=o("br",null,null,-1),nt={key:0,class:"block mt-1 text-xl font-semibold leading-8",style:{color:"#5851d8"}},lt={__name:"CustomerChart",setup(j){se();const k=M();J("utils");const t=N();let d=P(!1),r=R({}),s=R({}),_=R(["This year","Previous year"]),h=P("This year");const y=E(()=>r.expenseTotals?r.expenseTotals:[]),I=E(()=>r.netProfits?r.netProfits:[]),f=E(()=>r&&r.months?r.months:[]),B=E(()=>r.receiptTotals?r.receiptTotals:[]),g=E(()=>r.invoiceTotals?r.invoiceTotals:[]);ae(t,()=>{t.params.id&&$(),h.value="This year"},{immediate:!0});async function $(){d.value=!1;let i=await k.fetchViewCustomer({id:t.params.id});i.data&&(Object.assign(r,i.data.meta.chartData),Object.assign(s,i.data.data)),d.value=!0}async function D(i){let T={id:t.params.id};i==="Previous year"?T.previous_year=!0:T.this_year=!0;let c=await k.fetchViewCustomer(T);return c.data.meta.chartData&&Object.assign(r,c.data.meta.chartData),!0}return(i,T)=>{const c=u("BaseIcon"),w=u("BaseMultiselect"),C=u("BaseFormatMoney"),F=u("BaseCard");return l(),m(F,{class:"flex flex-col mt-6"},{default:n(()=>[a(k).isFetchingViewData?(l(),m(je,{key:0})):(l(),b("div",Le,[o("div",Re,[o("div",Me,[o("h6",Ne,[e(c,{name:"ChartSquareBarIcon",class:"h-5 text-primary-400"}),V(" "+x(i.$t("dashboard.monthly_chart.title")),1)]),o("div",Oe,[e(w,{modelValue:a(h),"onUpdate:modelValue":T[0]||(T[0]=A=>ne(h)?h.value=A:h=A),options:a(_),"allow-empty":!1,"show-labels":!1,placeholder:i.$t("dashboard.select_year"),"can-deselect":!1,onSelect:D},null,8,["modelValue","options","placeholder"])])]),a(d)?(l(),m(ie,{key:0,invoices:g.value,expenses:y.value,receipts:B.value,income:I.value,labels:f.value,class:"sm:w-full"},null,8,["invoices","expenses","receipts","income","labels"])):p("",!0)]),o("div",Ue,[o("div",ze,[o("span",He,x(i.$t("dashboard.chart_info.total_sales")),1),Ye,a(d)?(l(),b("span",Ge,[e(C,{amount:a(r).salesTotal,currency:a(s).currency},null,8,["amount","currency"])])):p("",!0)]),o("div",Xe,[o("span",qe,x(i.$t("dashboard.chart_info.total_receipts")),1),Je,a(d)?(l(),b("span",Ke,[e(C,{amount:a(r).totalExpenses,currency:a(s).currency},null,8,["amount","currency"])])):p("",!0)]),o("div",Qe,[o("span",Ze,x(i.$t("dashboard.chart_info.total_expense")),1),We,a(d)?(l(),b("span",et,[e(C,{amount:a(r).totalExpenses,currency:a(s).currency},null,8,["amount","currency"])])):p("",!0)]),o("div",tt,[o("span",st,x(i.$t("dashboard.chart_info.net_income")),1),at,a(d)?(l(),b("span",nt,[e(C,{amount:a(r).netProfit,currency:a(s).currency},null,8,["amount","currency"])])):p("",!0)])])])),e(ke)]),_:1})}}},ut={__name:"View",setup(j){J("utils"),le();const k=M(),t=oe();Y.useI18n();const d=re(),r=N();P(null);const s=E(()=>k.selectedViewCustomer.customer?k.selectedViewCustomer.customer.name:"");let _=E(()=>k.isFetchingViewData);function h(){return t.hasAbilities([S.CREATE_ESTIMATE,S.CREATE_INVOICE,S.CREATE_PAYMENT,S.CREATE_EXPENSE])}function y(){return t.hasAbilities([S.DELETE_CUSTOMER,S.EDIT_CUSTOMER])}function I(){d.push("/admin/customers")}return(f,B)=>{const g=u("BaseButton"),$=u("router-link"),D=u("BaseIcon"),i=u("BaseDropdownItem"),T=u("BaseDropdown"),c=u("BasePageHeader"),w=u("BasePage");return l(),m(w,{class:"xl:pl-96"},{default:n(()=>[e(c,{title:s.value},{actions:n(()=>[a(t).hasAbilities(a(S).EDIT_CUSTOMER)?(l(),m($,{key:0,to:`/admin/customers/${a(r).params.id}/edit`},{default:n(()=>[e(g,{class:"mr-3",variant:"primary-outline","content-loading":a(_)},{default:n(()=>[V(x(f.$t("general.edit")),1)]),_:1},8,["content-loading"])]),_:1},8,["to"])):p("",!0),h()?(l(),m(T,{key:1,position:"bottom-end","content-loading":a(_)},{activator:n(()=>[e(g,{class:"mr-3",variant:"primary","content-loading":a(_)},{default:n(()=>[V(x(f.$t("customers.new_transaction")),1)]),_:1},8,["content-loading"])]),default:n(()=>[a(t).hasAbilities(a(S).CREATE_ESTIMATE)?(l(),m($,{key:0,to:`/admin/estimates/create?customer=${f.$route.params.id}`},{default:n(()=>[e(i,{class:""},{default:n(()=>[e(D,{name:"DocumentIcon",class:"mr-3 text-gray-600"}),V(" "+x(f.$t("estimates.new_estimate")),1)]),_:1})]),_:1},8,["to"])):p("",!0),a(t).hasAbilities(a(S).CREATE_INVOICE)?(l(),m($,{key:1,to:`/admin/invoices/create?customer=${f.$route.params.id}`},{default:n(()=>[e(i,null,{default:n(()=>[e(D,{name:"DocumentTextIcon",class:"mr-3 text-gray-600"}),V(" "+x(f.$t("invoices.new_invoice")),1)]),_:1})]),_:1},8,["to"])):p("",!0),a(t).hasAbilities(a(S).CREATE_PAYMENT)?(l(),m($,{key:2,to:`/admin/payments/create?customer=${f.$route.params.id}`},{default:n(()=>[e(i,null,{default:n(()=>[e(D,{name:"CreditCardIcon",class:"mr-3 text-gray-600"}),V(" "+x(f.$t("payments.new_payment")),1)]),_:1})]),_:1},8,["to"])):p("",!0),a(t).hasAbilities(a(S).CREATE_EXPENSE)?(l(),m($,{key:3,to:`/admin/expenses/create?customer=${f.$route.params.id}`},{default:n(()=>[e(i,null,{default:n(()=>[e(D,{name:"CalculatorIcon",class:"mr-3 text-gray-600"}),V(" "+x(f.$t("expenses.new_expense")),1)]),_:1})]),_:1},8,["to"])):p("",!0)]),_:1},8,["content-loading"])):p("",!0),y()?(l(),m(ue,{key:2,class:q({"ml-3":a(_)}),row:a(k).selectedViewCustomer,"load-data":I},null,8,["class","row"])):p("",!0)]),_:1},8,["title"]),e(xe),e(lt)]),_:1})}}};export{ut as default}; diff --git a/public/build/assets/View-Nhrvsi0r.js b/public/build/assets/View-_jDExR9_.js similarity index 96% rename from public/build/assets/View-Nhrvsi0r.js rename to public/build/assets/View-_jDExR9_.js index 5ffcc592..aa70c586 100644 --- a/public/build/assets/View-Nhrvsi0r.js +++ b/public/build/assets/View-_jDExR9_.js @@ -1 +1 @@ -import{F as ne,as as ie,a7 as de,M as ue,v as ce,f,L as me,e as fe,H as pe,k as B,z as _e,P as ve,r as n,o as u,c as k,a,m as y,w as l,b as i,l as I,Q as j,p as A,t as v,K as g,N as R,O as ye,J as ge}from"./main-B9dpPbRR.js";import{_ as be}from"./EstimateIndexDropdown-R-OPRBvb.js";import{_ as he}from"./SendEstimateModal-rZxe1u30.js";import{L as xe}from"./LoadingIcon-eCpWurti.js";import"./mail-driver-L7_iQECX.js";const Be={class:"mr-3 text-sm"},ke={class:"fixed top-0 left-0 hidden h-full pt-16 pb-[6.4rem] ml-56 bg-white xl:ml-64 w-88 xl:block"},Se={class:"flex items-center justify-between px-4 pt-8 pb-2 border border-gray-200 border-solid height-full"},we={class:"mb-6"},Ee={class:"flex mb-6 ml-3",role:"group","aria-label":"First group"},Te={class:"px-4 py-1 pb-2 mb-1 mb-2 text-sm border-b border-gray-200 border-solid"},Ie={class:"flex-2"},Fe={class:"mt-1 mb-2 text-xs not-italic font-medium leading-5 text-gray-600"},Ve={class:"flex-1 whitespace-nowrap right"},De={class:"text-sm not-italic font-normal leading-5 text-right text-gray-600 est-date"},$e={key:0,class:"flex justify-center p-4 items-center"},Le={key:1,class:"flex justify-center px-4 mt-5 text-sm text-gray-600"},Ne={class:"flex flex-col min-h-0 mt-8 overflow-hidden",style:{height:"75vh"}},Ae=["src"],Re={__name:"View",setup(Me){const H=ne(),F=ie(),O=de(),M=ue(),{t:p}=ce.useI18n(),r=f(null),b=me();fe();const S=f(!1),h=f(!1),w=f(!1),d=f(null),x=f(1),V=f(1),z=f(null),t=pe({orderBy:null,orderByField:null,searchText:null}),G=B(()=>r.value.estimate_number),C=B(()=>t.orderBy==="asc"||t.orderBy==null);B(()=>C.value?p("general.ascending"):p("general.descending"));const q=B(()=>`/estimates/pdf/${r.value.unique_hash}`);B(()=>r.value&&r.value.id?estimate.value.id:null),_e(b,(e,o)=>{e.name==="estimates.view"&&P()}),E(),P(),m=ve.debounce(m,500);function J(e){return b.params.id==e}async function E(e,o=!1){if(h.value)return;let c={};t.searchText!==""&&t.searchText!==null&&t.searchText!==void 0&&(c.search=t.searchText),t.orderBy!==null&&t.orderBy!==void 0&&(c.orderBy=t.orderBy),t.orderByField!==null&&t.orderByField!==void 0&&(c.orderByField=t.orderByField),h.value=!0;let T=await F.fetchEstimates({page:e,...c});h.value=!1,d.value=d.value?d.value:[],d.value=[...d.value,...T.data.data],x.value=e||1,V.value=T.data.meta.last_page;let _=d.value.find(D=>D.id==b.params.id);o==!1&&!_&&x.value{o==!1&&K()},500)}function K(){const e=document.getElementById(`estimate-${b.params.id}`);e&&(e.scrollIntoView({behavior:"smooth"}),e.classList.add("shake"),Q())}function Q(){z.value.addEventListener("scroll",e=>{e.target.scrollTop>0&&e.target.scrollTop+e.target.clientHeight>e.target.scrollHeight-200&&x.value{S.value=!1,e&&(F.markAsSent({id:r.value.id,status:"SENT"}),r.value.status="SENT",S.value=!0),S.value=!1})}async function Y(e){H.openModal({title:p("estimates.send_estimate"),componentName:"SendEstimateModal",id:r.value.id,data:r.value})}function Z(){let e=d.value.findIndex(o=>o.id===r.value.id);d.value[e]&&(d.value[e].status="SENT",r.value.status="SENT")}return(e,o)=>{const c=n("BaseButton"),T=n("BasePageHeader"),_=n("BaseIcon"),D=n("BaseInput"),$=n("BaseRadio"),L=n("BaseInputGroup"),N=n("BaseDropdownItem"),ee=n("BaseDropdown"),te=n("BaseText"),ae=n("BaseEstimateStatusBadge"),se=n("BaseFormatMoney"),le=n("router-link"),oe=n("BasePage");return u(),k(R,null,[a(he,{onUpdate:Z}),r.value?(u(),y(oe,{key:0,class:"xl:pl-96 xl:ml-8"},{default:l(()=>{var U;return[a(T,{title:G.value},{actions:l(()=>[i("div",Be,[r.value.status==="DRAFT"&&I(M).hasAbilities(I(j).EDIT_ESTIMATE)?(u(),y(c,{key:0,disabled:S.value,"content-loading":w.value,variant:"primary-outline",onClick:X},{default:l(()=>[A(v(e.$t("estimates.mark_as_sent")),1)]),_:1},8,["disabled","content-loading"])):g("",!0)]),r.value.status==="DRAFT"&&I(M).hasAbilities(I(j).SEND_ESTIMATE)?(u(),y(c,{key:0,"content-loading":w.value,variant:"primary",class:"text-sm",onClick:Y},{default:l(()=>[A(v(e.$t("estimates.send_estimate")),1)]),_:1},8,["content-loading"])):g("",!0),a(be,{class:"ml-3",row:r.value},null,8,["row"])]),_:1},8,["title"]),i("div",ke,[i("div",Se,[i("div",we,[a(D,{modelValue:t.searchText,"onUpdate:modelValue":o[0]||(o[0]=s=>t.searchText=s),placeholder:e.$t("general.search"),type:"text",variant:"gray",onInput:o[1]||(o[1]=s=>m())},{right:l(()=>[a(_,{name:"SearchIcon",class:"text-gray-400"})]),_:1},8,["modelValue","placeholder"])]),i("div",Ee,[a(ee,{class:"ml-3",position:"bottom-start","width-class":"w-45","position-class":"left-0"},{activator:l(()=>[a(c,{size:"md",variant:"gray"},{default:l(()=>[a(_,{name:"FilterIcon"})]),_:1})]),default:l(()=>[i("div",Te,v(e.$t("general.sort_by")),1),a(N,{class:"flex px-4 py-2 cursor-pointer"},{default:l(()=>[a(L,{class:"-mt-3 font-normal"},{default:l(()=>[a($,{id:"filter_estimate_date",modelValue:t.orderByField,"onUpdate:modelValue":[o[2]||(o[2]=s=>t.orderByField=s),m],label:e.$t("reports.estimates.estimate_date"),size:"sm",name:"filter",value:"estimate_date"},null,8,["modelValue","label"])]),_:1})]),_:1}),a(N,{class:"flex px-4 py-2 cursor-pointer"},{default:l(()=>[a(L,{class:"-mt-3 font-normal"},{default:l(()=>[a($,{id:"filter_due_date",modelValue:t.orderByField,"onUpdate:modelValue":[o[3]||(o[3]=s=>t.orderByField=s),m],label:e.$t("estimates.due_date"),value:"expiry_date",size:"sm",name:"filter"},null,8,["modelValue","label"])]),_:1})]),_:1}),a(N,{class:"flex px-4 py-2 cursor-pointer"},{default:l(()=>[a(L,{class:"-mt-3 font-normal"},{default:l(()=>[a($,{id:"filter_estimate_number",modelValue:t.orderByField,"onUpdate:modelValue":[o[4]||(o[4]=s=>t.orderByField=s),m],label:e.$t("estimates.estimate_number"),value:"estimate_number",size:"sm",name:"filter"},null,8,["modelValue","label"])]),_:1})]),_:1})]),_:1}),a(c,{class:"ml-1",size:"md",variant:"gray",onClick:W},{default:l(()=>[C.value?(u(),y(_,{key:0,name:"SortAscendingIcon"})):(u(),y(_,{key:1,name:"SortDescendingIcon"}))]),_:1})])]),i("div",{ref_key:"estimateListSection",ref:z,class:"h-full overflow-y-scroll border-l border-gray-200 border-solid base-scroll"},[(u(!0),k(R,null,ye(d.value,(s,re)=>(u(),k("div",{key:re},[s?(u(),y(le,{key:0,id:"estimate-"+s.id,to:`/admin/estimates/${s.id}/view`,class:ge(["flex justify-between side-estimate p-4 cursor-pointer hover:bg-gray-100 items-center border-l-4 border-transparent",{"bg-gray-100 border-l-4 border-primary-500 border-solid":J(s.id)}]),style:{"border-bottom":"1px solid rgba(185, 193, 209, 0.41)"}},{default:l(()=>[i("div",Ie,[a(te,{text:s.customer.name,length:30,class:"pr-2 mb-2 text-sm not-italic font-normal leading-5 text-black capitalize truncate"},null,8,["text"]),i("div",Fe,v(s.estimate_number),1),a(ae,{status:s.status,class:"px-1 text-xs"},{default:l(()=>[A(v(s.status),1)]),_:2},1032,["status"])]),i("div",Ve,[a(se,{amount:s.total,currency:s.customer.currency,class:"block mb-2 text-xl not-italic font-semibold leading-8 text-right text-gray-900"},null,8,["amount","currency"]),i("div",De,v(s.formatted_estimate_date),1)])]),_:2},1032,["id","to","class"])):g("",!0)]))),128)),h.value?(u(),k("div",$e,[a(xe,{class:"h-6 m-1 animate-spin text-primary-400"})])):g("",!0),!((U=d.value)!=null&&U.length)&&!h.value?(u(),k("p",Le,v(e.$t("estimates.no_matching_estimates")),1)):g("",!0)],512)]),i("div",Ne,[i("iframe",{src:`${q.value}`,class:"flex-1 border border-gray-400 border-solid rounded-md bg-white frame-style"},null,8,Ae)])]}),_:1})):g("",!0)],64)}}};export{Re as default}; +import{F as ne,as as ie,a7 as de,M as ue,v as ce,f,L as me,e as fe,H as pe,k as B,z as _e,P as ve,r as n,o as u,c as k,a,m as y,w as l,b as i,l as I,Q as j,p as A,t as v,K as g,N as R,O as ye,J as ge}from"./main-pPEsZPea.js";import{_ as be}from"./EstimateIndexDropdown-q_PQ0HVZ.js";import{_ as he}from"./SendEstimateModal-bpe9IwOn.js";import{L as xe}from"./LoadingIcon-EteEuBl4.js";import"./mail-driver-SNHZXvKB.js";const Be={class:"mr-3 text-sm"},ke={class:"fixed top-0 left-0 hidden h-full pt-16 pb-[6.4rem] ml-56 bg-white xl:ml-64 w-88 xl:block"},Se={class:"flex items-center justify-between px-4 pt-8 pb-2 border border-gray-200 border-solid height-full"},we={class:"mb-6"},Ee={class:"flex mb-6 ml-3",role:"group","aria-label":"First group"},Te={class:"px-4 py-1 pb-2 mb-1 mb-2 text-sm border-b border-gray-200 border-solid"},Ie={class:"flex-2"},Fe={class:"mt-1 mb-2 text-xs not-italic font-medium leading-5 text-gray-600"},Ve={class:"flex-1 whitespace-nowrap right"},De={class:"text-sm not-italic font-normal leading-5 text-right text-gray-600 est-date"},$e={key:0,class:"flex justify-center p-4 items-center"},Le={key:1,class:"flex justify-center px-4 mt-5 text-sm text-gray-600"},Ne={class:"flex flex-col min-h-0 mt-8 overflow-hidden",style:{height:"75vh"}},Ae=["src"],Re={__name:"View",setup(Me){const H=ne(),F=ie(),O=de(),M=ue(),{t:p}=ce.useI18n(),r=f(null),b=me();fe();const S=f(!1),h=f(!1),w=f(!1),d=f(null),x=f(1),V=f(1),z=f(null),t=pe({orderBy:null,orderByField:null,searchText:null}),G=B(()=>r.value.estimate_number),C=B(()=>t.orderBy==="asc"||t.orderBy==null);B(()=>C.value?p("general.ascending"):p("general.descending"));const q=B(()=>`/estimates/pdf/${r.value.unique_hash}`);B(()=>r.value&&r.value.id?estimate.value.id:null),_e(b,(e,o)=>{e.name==="estimates.view"&&P()}),E(),P(),m=ve.debounce(m,500);function J(e){return b.params.id==e}async function E(e,o=!1){if(h.value)return;let c={};t.searchText!==""&&t.searchText!==null&&t.searchText!==void 0&&(c.search=t.searchText),t.orderBy!==null&&t.orderBy!==void 0&&(c.orderBy=t.orderBy),t.orderByField!==null&&t.orderByField!==void 0&&(c.orderByField=t.orderByField),h.value=!0;let T=await F.fetchEstimates({page:e,...c});h.value=!1,d.value=d.value?d.value:[],d.value=[...d.value,...T.data.data],x.value=e||1,V.value=T.data.meta.last_page;let _=d.value.find(D=>D.id==b.params.id);o==!1&&!_&&x.value{o==!1&&K()},500)}function K(){const e=document.getElementById(`estimate-${b.params.id}`);e&&(e.scrollIntoView({behavior:"smooth"}),e.classList.add("shake"),Q())}function Q(){z.value.addEventListener("scroll",e=>{e.target.scrollTop>0&&e.target.scrollTop+e.target.clientHeight>e.target.scrollHeight-200&&x.value{S.value=!1,e&&(F.markAsSent({id:r.value.id,status:"SENT"}),r.value.status="SENT",S.value=!0),S.value=!1})}async function Y(e){H.openModal({title:p("estimates.send_estimate"),componentName:"SendEstimateModal",id:r.value.id,data:r.value})}function Z(){let e=d.value.findIndex(o=>o.id===r.value.id);d.value[e]&&(d.value[e].status="SENT",r.value.status="SENT")}return(e,o)=>{const c=n("BaseButton"),T=n("BasePageHeader"),_=n("BaseIcon"),D=n("BaseInput"),$=n("BaseRadio"),L=n("BaseInputGroup"),N=n("BaseDropdownItem"),ee=n("BaseDropdown"),te=n("BaseText"),ae=n("BaseEstimateStatusBadge"),se=n("BaseFormatMoney"),le=n("router-link"),oe=n("BasePage");return u(),k(R,null,[a(he,{onUpdate:Z}),r.value?(u(),y(oe,{key:0,class:"xl:pl-96 xl:ml-8"},{default:l(()=>{var U;return[a(T,{title:G.value},{actions:l(()=>[i("div",Be,[r.value.status==="DRAFT"&&I(M).hasAbilities(I(j).EDIT_ESTIMATE)?(u(),y(c,{key:0,disabled:S.value,"content-loading":w.value,variant:"primary-outline",onClick:X},{default:l(()=>[A(v(e.$t("estimates.mark_as_sent")),1)]),_:1},8,["disabled","content-loading"])):g("",!0)]),r.value.status==="DRAFT"&&I(M).hasAbilities(I(j).SEND_ESTIMATE)?(u(),y(c,{key:0,"content-loading":w.value,variant:"primary",class:"text-sm",onClick:Y},{default:l(()=>[A(v(e.$t("estimates.send_estimate")),1)]),_:1},8,["content-loading"])):g("",!0),a(be,{class:"ml-3",row:r.value},null,8,["row"])]),_:1},8,["title"]),i("div",ke,[i("div",Se,[i("div",we,[a(D,{modelValue:t.searchText,"onUpdate:modelValue":o[0]||(o[0]=s=>t.searchText=s),placeholder:e.$t("general.search"),type:"text",variant:"gray",onInput:o[1]||(o[1]=s=>m())},{right:l(()=>[a(_,{name:"SearchIcon",class:"text-gray-400"})]),_:1},8,["modelValue","placeholder"])]),i("div",Ee,[a(ee,{class:"ml-3",position:"bottom-start","width-class":"w-45","position-class":"left-0"},{activator:l(()=>[a(c,{size:"md",variant:"gray"},{default:l(()=>[a(_,{name:"FilterIcon"})]),_:1})]),default:l(()=>[i("div",Te,v(e.$t("general.sort_by")),1),a(N,{class:"flex px-4 py-2 cursor-pointer"},{default:l(()=>[a(L,{class:"-mt-3 font-normal"},{default:l(()=>[a($,{id:"filter_estimate_date",modelValue:t.orderByField,"onUpdate:modelValue":[o[2]||(o[2]=s=>t.orderByField=s),m],label:e.$t("reports.estimates.estimate_date"),size:"sm",name:"filter",value:"estimate_date"},null,8,["modelValue","label"])]),_:1})]),_:1}),a(N,{class:"flex px-4 py-2 cursor-pointer"},{default:l(()=>[a(L,{class:"-mt-3 font-normal"},{default:l(()=>[a($,{id:"filter_due_date",modelValue:t.orderByField,"onUpdate:modelValue":[o[3]||(o[3]=s=>t.orderByField=s),m],label:e.$t("estimates.due_date"),value:"expiry_date",size:"sm",name:"filter"},null,8,["modelValue","label"])]),_:1})]),_:1}),a(N,{class:"flex px-4 py-2 cursor-pointer"},{default:l(()=>[a(L,{class:"-mt-3 font-normal"},{default:l(()=>[a($,{id:"filter_estimate_number",modelValue:t.orderByField,"onUpdate:modelValue":[o[4]||(o[4]=s=>t.orderByField=s),m],label:e.$t("estimates.estimate_number"),value:"estimate_number",size:"sm",name:"filter"},null,8,["modelValue","label"])]),_:1})]),_:1})]),_:1}),a(c,{class:"ml-1",size:"md",variant:"gray",onClick:W},{default:l(()=>[C.value?(u(),y(_,{key:0,name:"SortAscendingIcon"})):(u(),y(_,{key:1,name:"SortDescendingIcon"}))]),_:1})])]),i("div",{ref_key:"estimateListSection",ref:z,class:"h-full overflow-y-scroll border-l border-gray-200 border-solid base-scroll"},[(u(!0),k(R,null,ye(d.value,(s,re)=>(u(),k("div",{key:re},[s?(u(),y(le,{key:0,id:"estimate-"+s.id,to:`/admin/estimates/${s.id}/view`,class:ge(["flex justify-between side-estimate p-4 cursor-pointer hover:bg-gray-100 items-center border-l-4 border-transparent",{"bg-gray-100 border-l-4 border-primary-500 border-solid":J(s.id)}]),style:{"border-bottom":"1px solid rgba(185, 193, 209, 0.41)"}},{default:l(()=>[i("div",Ie,[a(te,{text:s.customer.name,length:30,class:"pr-2 mb-2 text-sm not-italic font-normal leading-5 text-black capitalize truncate"},null,8,["text"]),i("div",Fe,v(s.estimate_number),1),a(ae,{status:s.status,class:"px-1 text-xs"},{default:l(()=>[A(v(s.status),1)]),_:2},1032,["status"])]),i("div",Ve,[a(se,{amount:s.total,currency:s.customer.currency,class:"block mb-2 text-xl not-italic font-semibold leading-8 text-right text-gray-900"},null,8,["amount","currency"]),i("div",De,v(s.formatted_estimate_date),1)])]),_:2},1032,["id","to","class"])):g("",!0)]))),128)),h.value?(u(),k("div",$e,[a(xe,{class:"h-6 m-1 animate-spin text-primary-400"})])):g("",!0),!((U=d.value)!=null&&U.length)&&!h.value?(u(),k("p",Le,v(e.$t("estimates.no_matching_estimates")),1)):g("",!0)],512)]),i("div",Ne,[i("iframe",{src:`${q.value}`,class:"flex-1 border border-gray-400 border-solid rounded-md bg-white frame-style"},null,8,Ae)])]}),_:1})):g("",!0)],64)}}};export{Re as default}; diff --git a/public/build/assets/View-IPZV5Tae.js b/public/build/assets/View-aoNTTF1A.js similarity index 96% rename from public/build/assets/View-IPZV5Tae.js rename to public/build/assets/View-aoNTTF1A.js index 10a57bc4..586cadc4 100644 --- a/public/build/assets/View-IPZV5Tae.js +++ b/public/build/assets/View-aoNTTF1A.js @@ -1 +1 @@ -import{aO as O,v as j,L as H,f as x,H as Y,k as A,P as Z,r as l,o as d,c as T,b as f,a as t,w as o,t as B,m as y,N as P,O as ee,p as N,J as te,K as w,a5 as ne,e as M,M as G,a6 as ae,l as i,Q as F,z as oe,a7 as re}from"./main-B9dpPbRR.js";import{L as se}from"./LoadingIcon-eCpWurti.js";import{_ as ie}from"./InvoiceIndexDropdown-bkaK7_Us.js";import{_ as le}from"./SendInvoiceModal-gHfWsGqG.js";import{_ as ce}from"./RecurringInvoiceIndexDropdown-FtyOunpa.js";import"./mail-driver-L7_iQECX.js";const ue={class:"fixed top-0 left-0 hidden h-full pt-16 pb-[6.4rem] ml-56 bg-white xl:ml-64 w-88 xl:block"},de={class:"flex items-center justify-between px-4 pt-8 pb-2 border border-gray-200 border-solid height-full"},me={class:"mb-6"},_e={class:"flex mb-6 ml-3",role:"group","aria-label":"First group"},ve={class:"px-2 py-1 pb-2 mb-1 mb-2 text-sm border-b border-gray-200 border-solid"},ge={class:"flex-2"},pe={class:"mt-1 mb-2 text-xs not-italic font-medium leading-5 text-gray-600"},fe={class:"flex-1 whitespace-nowrap right"},ye={class:"text-sm not-italic font-normal leading-5 text-right text-gray-600 est-date"},be={key:0,class:"flex justify-center p-4 items-center"},Ie={key:1,class:"flex justify-center px-4 mt-5 text-sm text-gray-600"},Be={__name:"RecurringInvoiceViewSidebar",setup(U){const n=O();j.useI18n();const v=H(),r=x(!1),m=x(null),c=x(1),p=x(1),b=x(null),e=Y({orderBy:null,orderByField:null,searchText:null}),R=A(()=>e.orderBy==="asc"||e.orderBy==null);function k(a){return v.params.id==a}async function I(a,_=!1){if(r.value)return;let g={};e.searchText!==""&&e.searchText!==null&&e.searchText!==void 0&&(g.search=e.searchText),e.orderBy!==null&&e.orderBy!==void 0&&(g.orderBy=e.orderBy),e.orderByField!==null&&e.orderByField!==void 0&&(g.orderByField=e.orderByField),r.value=!0;let S=await n.fetchRecurringInvoices({page:a,...g});r.value=!1,m.value=m.value?m.value:[],m.value=[...m.value,...S.data.data],c.value=a||1,p.value=S.data.meta.last_page;let h=m.value.find(E=>E.id==v.params.id);_==!1&&!h&&c.value{_==!1&&V()},500)}function V(){const a=document.getElementById(`recurring-invoice-${v.params.id}`);a&&(a.scrollIntoView({behavior:"smooth"}),a.classList.add("shake"),$())}function $(){b.value.addEventListener("scroll",a=>{a.target.scrollTop>0&&a.target.scrollTop+a.target.clientHeight>a.target.scrollHeight-200&&c.value{var z;const g=l("BaseIcon"),S=l("BaseInput"),h=l("BaseButton"),E=l("BaseRadio"),C=l("BaseInputGroup"),D=l("BaseDropdownItem"),q=l("BaseDropdown"),J=l("BaseText"),K=l("BaseRecurringInvoiceStatusBadge"),Q=l("BaseFormatMoney"),W=l("router-link");return d(),T("div",ue,[f("div",de,[f("div",me,[t(S,{modelValue:e.searchText,"onUpdate:modelValue":_[0]||(_[0]=u=>e.searchText=u),placeholder:a.$t("general.search"),type:"text",variant:"gray",onInput:_[1]||(_[1]=u=>s())},{right:o(()=>[t(g,{name:"SearchIcon",class:"h-5 text-gray-400"})]),_:1},8,["modelValue","placeholder"])]),f("div",_e,[t(q,{class:"ml-3",position:"bottom-start"},{activator:o(()=>[t(h,{size:"md",variant:"gray"},{default:o(()=>[t(g,{name:"FilterIcon",class:"h-5"})]),_:1})]),default:o(()=>[f("div",ve,B(a.$t("general.sort_by")),1),t(D,{class:"flex px-1 py-2 cursor-pointer"},{default:o(()=>[t(C,{class:"-mt-3 font-normal"},{default:o(()=>[t(E,{id:"filter_next_invoice_date",modelValue:e.orderByField,"onUpdate:modelValue":[_[2]||(_[2]=u=>e.orderByField=u),s],label:a.$t("recurring_invoices.next_invoice_date"),size:"sm",name:"filter",value:"next_invoice_at"},null,8,["modelValue","label"])]),_:1})]),_:1}),t(D,{class:"flex px-1 py-2 cursor-pointer"},{default:o(()=>[t(C,{class:"-mt-3 font-normal"},{default:o(()=>[t(E,{id:"filter_start_date",modelValue:e.orderByField,"onUpdate:modelValue":[_[3]||(_[3]=u=>e.orderByField=u),s],label:a.$t("recurring_invoices.starts_at"),value:"starts_at",size:"sm",name:"filter"},null,8,["modelValue","label"])]),_:1})]),_:1})]),_:1}),t(h,{class:"ml-1",size:"md",variant:"gray",onClick:L},{default:o(()=>[R.value?(d(),y(g,{key:0,name:"SortAscendingIcon",class:"h-5"})):(d(),y(g,{key:1,name:"SortDescendingIcon",class:"h-5"}))]),_:1})])]),f("div",{ref_key:"invoiceListSection",ref:b,class:"h-full overflow-y-scroll border-l border-gray-200 border-solid base-scroll"},[(d(!0),T(P,null,ee(m.value,(u,X)=>(d(),T("div",{key:X},[u?(d(),y(W,{key:0,id:"recurring-invoice-"+u.id,to:`/admin/recurring-invoices/${u.id}/view`,class:te(["flex justify-between side-invoice p-4 cursor-pointer hover:bg-gray-100 items-center border-l-4 border-transparent",{"bg-gray-100 border-l-4 border-primary-500 border-solid":k(u.id)}]),style:{"border-bottom":"1px solid rgba(185, 193, 209, 0.41)"}},{default:o(()=>[f("div",ge,[t(J,{text:u.customer.name,length:30,class:"pr-2 mb-2 text-sm not-italic font-normal leading-5 text-black capitalize truncate"},null,8,["text"]),f("div",pe,B(u.invoice_number),1),t(K,{status:u.status,class:"px-1 text-xs"},{default:o(()=>[N(B(u.status),1)]),_:2},1032,["status"])]),f("div",fe,[t(Q,{class:"block mb-2 text-xl not-italic font-semibold leading-8 text-right text-gray-900",amount:u.total,currency:u.customer.currency},null,8,["amount","currency"]),f("div",ye,B(u.formatted_starts_at),1)])]),_:2},1032,["id","to","class"])):w("",!0)]))),128)),r.value?(d(),T("div",be,[t(se,{class:"h-6 m-1 animate-spin text-primary-400"})])):w("",!0),!((z=m.value)!=null&&z.length)&&!r.value?(d(),T("p",Ie,B(a.$t("invoices.no_matching_invoices")),1)):w("",!0)],512)])}}},he={class:"relative table-container"},xe={__name:"Invoices",setup(U){const n=O(),v=x(null);x(null),ne("$utils");const{t:r}=j.useI18n();x(null),M();const m=G(),c=A(()=>[{key:"invoice_date",label:r("invoices.date"),thClass:"extra",tdClass:"font-medium text-gray-900"},{key:"invoice_number",label:r("invoices.invoice")},{key:"customer.name",label:r("invoices.customer")},{key:"status",label:r("invoices.status")},{key:"total",label:r("invoices.total")},{key:"actions",label:r("invoices.action"),tdClass:"text-right text-sm font-medium",thClass:"text-right",sortable:!1}]);function p(){return m.hasAbilities([F.DELETE_INVOICE,F.EDIT_INVOICE,F.VIEW_INVOICE,F.SEND_INVOICE])}function b(e){let R=n.newRecurringInvoice.invoices.findIndex(k=>k.id===e);n.newRecurringInvoice.invoices[R]&&(n.newRecurringInvoice.invoices[R].status="SENT")}return(e,R)=>{const k=l("router-link"),I=l("BaseFormatMoney"),V=l("BaseInvoiceStatusBadge"),$=l("BaseTable");return d(),T(P,null,[t(le,{onUpdate:b}),f("div",he,[t($,{ref_key:"table",ref:v,data:i(n).newRecurringInvoice.invoices,columns:c.value,loading:i(n).isFetchingViewData,"placeholder-count":5,class:"mt-5"},ae({"cell-invoice_number":o(({row:s})=>[t(k,{to:{path:`/admin/invoices/${s.data.id}/view`},class:"font-medium text-primary-500"},{default:o(()=>[N(B(s.data.invoice_number),1)]),_:2},1032,["to"])]),"cell-total":o(({row:s})=>[t(I,{amount:s.data.due_amount,currency:s.data.currency},null,8,["amount","currency"])]),"cell-status":o(({row:s})=>[t(V,{status:s.data.status,class:"px-3 py-1"},{default:o(()=>[N(B(s.data.status),1)]),_:2},1032,["status"])]),_:2},[p()?{name:"cell-actions",fn:o(({row:s})=>[t(ie,{row:s.data,table:v.value},null,8,["row","table"])]),key:"0"}:void 0]),1032,["data","columns","loading"])])],64)}}},we={__name:"RecurringInvoiceInfo",setup(U){const n=O(),v=H();let r=A(()=>n.isFetchingViewData);oe(v,()=>{v.params.id&&v.name==="recurring-invoices.view"&&m()},{immediate:!0});async function m(){await n.fetchRecurringInvoice(v.params.id)}return(c,p)=>{const b=l("BaseHeading"),e=l("BaseDescriptionListItem"),R=l("BaseDescriptionList"),k=l("BaseCard");return d(),y(k,{class:"mt-10"},{default:o(()=>[t(b,null,{default:o(()=>[N(B(c.$t("customers.basic_info")),1)]),_:1}),t(R,{class:"mt-5"},{default:o(()=>{var I,V,$,s,L,a,_,g,S,h,E,C,D;return[t(e,{label:c.$t("recurring_invoices.starts_at"),"content-loading":i(r),value:(I=i(n).newRecurringInvoice)==null?void 0:I.formatted_starts_at},null,8,["label","content-loading","value"]),t(e,{label:c.$t("recurring_invoices.next_invoice_date"),"content-loading":i(r),value:(V=i(n).newRecurringInvoice)==null?void 0:V.formatted_next_invoice_at},null,8,["label","content-loading","value"]),($=i(n).newRecurringInvoice)!=null&&$.limit_date&&((s=i(n).newRecurringInvoice)==null?void 0:s.limit_by)!=="NONE"?(d(),y(e,{key:0,label:c.$t("recurring_invoices.limit_date"),"content-loading":i(r),value:(L=i(n).newRecurringInvoice)==null?void 0:L.limit_date},null,8,["label","content-loading","value"])):w("",!0),(a=i(n).newRecurringInvoice)!=null&&a.limit_date&&((_=i(n).newRecurringInvoice)==null?void 0:_.limit_by)!=="NONE"?(d(),y(e,{key:1,label:c.$t("recurring_invoices.limit_by"),"content-loading":i(r),value:(g=i(n).newRecurringInvoice)==null?void 0:g.limit_by},null,8,["label","content-loading","value"])):w("",!0),(S=i(n).newRecurringInvoice)!=null&&S.limit_count?(d(),y(e,{key:2,label:c.$t("recurring_invoices.limit_count"),value:(h=i(n).newRecurringInvoice)==null?void 0:h.limit_count,"content-loading":i(r)},null,8,["label","value","content-loading"])):w("",!0),(E=i(n).newRecurringInvoice)!=null&&E.selectedFrequency?(d(),y(e,{key:3,label:c.$t("recurring_invoices.frequency.title"),value:(D=(C=i(n).newRecurringInvoice)==null?void 0:C.selectedFrequency)==null?void 0:D.label,"content-loading":i(r)},null,8,["label","value","content-loading"])):w("",!0)]}),_:1}),t(b,{class:"mt-8"},{default:o(()=>[N(B(c.$t("invoices.title",2)),1)]),_:1}),t(xe)]),_:1})}}},Te={__name:"View",setup(U){re();const n=O(),v=G();j.useI18n(),M();const r=A(()=>{var c,p;return n.newRecurringInvoice?(p=(c=n.newRecurringInvoice)==null?void 0:c.customer)==null?void 0:p.name:""});function m(){return v.hasAbilities([F.DELETE_RECURRING_INVOICE,F.EDIT_RECURRING_INVOICE])}return(c,p)=>{const b=l("BasePageHeader"),e=l("BasePage");return d(),y(e,{class:"xl:pl-96"},{default:o(()=>[t(b,{title:r.value},{actions:o(()=>[m()?(d(),y(ce,{key:0,row:i(n).newRecurringInvoice},null,8,["row"])):w("",!0)]),_:1},8,["title"]),t(Be),t(we)]),_:1})}}};export{Te as default}; +import{aR as O,v as j,L as H,f as x,H as Y,k as A,P as Z,r as l,o as d,c as T,b as f,a as t,w as o,t as B,m as y,N as P,O as ee,p as N,J as te,K as w,a5 as ne,e as M,M as G,a6 as ae,l as i,Q as F,z as oe,a7 as re}from"./main-pPEsZPea.js";import{L as se}from"./LoadingIcon-EteEuBl4.js";import{_ as ie}from"./InvoiceIndexDropdown-Vtuy_VYF.js";import{_ as le}from"./SendInvoiceModal-XAwfWejZ.js";import{_ as ce}from"./RecurringInvoiceIndexDropdown-JbpbfQ9O.js";import"./mail-driver-SNHZXvKB.js";const ue={class:"fixed top-0 left-0 hidden h-full pt-16 pb-[6.4rem] ml-56 bg-white xl:ml-64 w-88 xl:block"},de={class:"flex items-center justify-between px-4 pt-8 pb-2 border border-gray-200 border-solid height-full"},me={class:"mb-6"},_e={class:"flex mb-6 ml-3",role:"group","aria-label":"First group"},ve={class:"px-2 py-1 pb-2 mb-1 mb-2 text-sm border-b border-gray-200 border-solid"},ge={class:"flex-2"},pe={class:"mt-1 mb-2 text-xs not-italic font-medium leading-5 text-gray-600"},fe={class:"flex-1 whitespace-nowrap right"},ye={class:"text-sm not-italic font-normal leading-5 text-right text-gray-600 est-date"},be={key:0,class:"flex justify-center p-4 items-center"},Ie={key:1,class:"flex justify-center px-4 mt-5 text-sm text-gray-600"},Be={__name:"RecurringInvoiceViewSidebar",setup(U){const n=O();j.useI18n();const v=H(),r=x(!1),m=x(null),c=x(1),p=x(1),b=x(null),e=Y({orderBy:null,orderByField:null,searchText:null}),R=A(()=>e.orderBy==="asc"||e.orderBy==null);function k(a){return v.params.id==a}async function I(a,_=!1){if(r.value)return;let g={};e.searchText!==""&&e.searchText!==null&&e.searchText!==void 0&&(g.search=e.searchText),e.orderBy!==null&&e.orderBy!==void 0&&(g.orderBy=e.orderBy),e.orderByField!==null&&e.orderByField!==void 0&&(g.orderByField=e.orderByField),r.value=!0;let S=await n.fetchRecurringInvoices({page:a,...g});r.value=!1,m.value=m.value?m.value:[],m.value=[...m.value,...S.data.data],c.value=a||1,p.value=S.data.meta.last_page;let h=m.value.find(E=>E.id==v.params.id);_==!1&&!h&&c.value{_==!1&&V()},500)}function V(){const a=document.getElementById(`recurring-invoice-${v.params.id}`);a&&(a.scrollIntoView({behavior:"smooth"}),a.classList.add("shake"),$())}function $(){b.value.addEventListener("scroll",a=>{a.target.scrollTop>0&&a.target.scrollTop+a.target.clientHeight>a.target.scrollHeight-200&&c.value{var z;const g=l("BaseIcon"),S=l("BaseInput"),h=l("BaseButton"),E=l("BaseRadio"),C=l("BaseInputGroup"),D=l("BaseDropdownItem"),q=l("BaseDropdown"),J=l("BaseText"),K=l("BaseRecurringInvoiceStatusBadge"),Q=l("BaseFormatMoney"),W=l("router-link");return d(),T("div",ue,[f("div",de,[f("div",me,[t(S,{modelValue:e.searchText,"onUpdate:modelValue":_[0]||(_[0]=u=>e.searchText=u),placeholder:a.$t("general.search"),type:"text",variant:"gray",onInput:_[1]||(_[1]=u=>s())},{right:o(()=>[t(g,{name:"SearchIcon",class:"h-5 text-gray-400"})]),_:1},8,["modelValue","placeholder"])]),f("div",_e,[t(q,{class:"ml-3",position:"bottom-start"},{activator:o(()=>[t(h,{size:"md",variant:"gray"},{default:o(()=>[t(g,{name:"FilterIcon",class:"h-5"})]),_:1})]),default:o(()=>[f("div",ve,B(a.$t("general.sort_by")),1),t(D,{class:"flex px-1 py-2 cursor-pointer"},{default:o(()=>[t(C,{class:"-mt-3 font-normal"},{default:o(()=>[t(E,{id:"filter_next_invoice_date",modelValue:e.orderByField,"onUpdate:modelValue":[_[2]||(_[2]=u=>e.orderByField=u),s],label:a.$t("recurring_invoices.next_invoice_date"),size:"sm",name:"filter",value:"next_invoice_at"},null,8,["modelValue","label"])]),_:1})]),_:1}),t(D,{class:"flex px-1 py-2 cursor-pointer"},{default:o(()=>[t(C,{class:"-mt-3 font-normal"},{default:o(()=>[t(E,{id:"filter_start_date",modelValue:e.orderByField,"onUpdate:modelValue":[_[3]||(_[3]=u=>e.orderByField=u),s],label:a.$t("recurring_invoices.starts_at"),value:"starts_at",size:"sm",name:"filter"},null,8,["modelValue","label"])]),_:1})]),_:1})]),_:1}),t(h,{class:"ml-1",size:"md",variant:"gray",onClick:L},{default:o(()=>[R.value?(d(),y(g,{key:0,name:"SortAscendingIcon",class:"h-5"})):(d(),y(g,{key:1,name:"SortDescendingIcon",class:"h-5"}))]),_:1})])]),f("div",{ref_key:"invoiceListSection",ref:b,class:"h-full overflow-y-scroll border-l border-gray-200 border-solid base-scroll"},[(d(!0),T(P,null,ee(m.value,(u,X)=>(d(),T("div",{key:X},[u?(d(),y(W,{key:0,id:"recurring-invoice-"+u.id,to:`/admin/recurring-invoices/${u.id}/view`,class:te(["flex justify-between side-invoice p-4 cursor-pointer hover:bg-gray-100 items-center border-l-4 border-transparent",{"bg-gray-100 border-l-4 border-primary-500 border-solid":k(u.id)}]),style:{"border-bottom":"1px solid rgba(185, 193, 209, 0.41)"}},{default:o(()=>[f("div",ge,[t(J,{text:u.customer.name,length:30,class:"pr-2 mb-2 text-sm not-italic font-normal leading-5 text-black capitalize truncate"},null,8,["text"]),f("div",pe,B(u.invoice_number),1),t(K,{status:u.status,class:"px-1 text-xs"},{default:o(()=>[N(B(u.status),1)]),_:2},1032,["status"])]),f("div",fe,[t(Q,{class:"block mb-2 text-xl not-italic font-semibold leading-8 text-right text-gray-900",amount:u.total,currency:u.customer.currency},null,8,["amount","currency"]),f("div",ye,B(u.formatted_starts_at),1)])]),_:2},1032,["id","to","class"])):w("",!0)]))),128)),r.value?(d(),T("div",be,[t(se,{class:"h-6 m-1 animate-spin text-primary-400"})])):w("",!0),!((z=m.value)!=null&&z.length)&&!r.value?(d(),T("p",Ie,B(a.$t("invoices.no_matching_invoices")),1)):w("",!0)],512)])}}},he={class:"relative table-container"},xe={__name:"Invoices",setup(U){const n=O(),v=x(null);x(null),ne("$utils");const{t:r}=j.useI18n();x(null),M();const m=G(),c=A(()=>[{key:"invoice_date",label:r("invoices.date"),thClass:"extra",tdClass:"font-medium text-gray-900"},{key:"invoice_number",label:r("invoices.invoice")},{key:"customer.name",label:r("invoices.customer")},{key:"status",label:r("invoices.status")},{key:"total",label:r("invoices.total")},{key:"actions",label:r("invoices.action"),tdClass:"text-right text-sm font-medium",thClass:"text-right",sortable:!1}]);function p(){return m.hasAbilities([F.DELETE_INVOICE,F.EDIT_INVOICE,F.VIEW_INVOICE,F.SEND_INVOICE])}function b(e){let R=n.newRecurringInvoice.invoices.findIndex(k=>k.id===e);n.newRecurringInvoice.invoices[R]&&(n.newRecurringInvoice.invoices[R].status="SENT")}return(e,R)=>{const k=l("router-link"),I=l("BaseFormatMoney"),V=l("BaseInvoiceStatusBadge"),$=l("BaseTable");return d(),T(P,null,[t(le,{onUpdate:b}),f("div",he,[t($,{ref_key:"table",ref:v,data:i(n).newRecurringInvoice.invoices,columns:c.value,loading:i(n).isFetchingViewData,"placeholder-count":5,class:"mt-5"},ae({"cell-invoice_number":o(({row:s})=>[t(k,{to:{path:`/admin/invoices/${s.data.id}/view`},class:"font-medium text-primary-500"},{default:o(()=>[N(B(s.data.invoice_number),1)]),_:2},1032,["to"])]),"cell-total":o(({row:s})=>[t(I,{amount:s.data.due_amount,currency:s.data.currency},null,8,["amount","currency"])]),"cell-status":o(({row:s})=>[t(V,{status:s.data.status,class:"px-3 py-1"},{default:o(()=>[N(B(s.data.status),1)]),_:2},1032,["status"])]),_:2},[p()?{name:"cell-actions",fn:o(({row:s})=>[t(ie,{row:s.data,table:v.value},null,8,["row","table"])]),key:"0"}:void 0]),1032,["data","columns","loading"])])],64)}}},we={__name:"RecurringInvoiceInfo",setup(U){const n=O(),v=H();let r=A(()=>n.isFetchingViewData);oe(v,()=>{v.params.id&&v.name==="recurring-invoices.view"&&m()},{immediate:!0});async function m(){await n.fetchRecurringInvoice(v.params.id)}return(c,p)=>{const b=l("BaseHeading"),e=l("BaseDescriptionListItem"),R=l("BaseDescriptionList"),k=l("BaseCard");return d(),y(k,{class:"mt-10"},{default:o(()=>[t(b,null,{default:o(()=>[N(B(c.$t("customers.basic_info")),1)]),_:1}),t(R,{class:"mt-5"},{default:o(()=>{var I,V,$,s,L,a,_,g,S,h,E,C,D;return[t(e,{label:c.$t("recurring_invoices.starts_at"),"content-loading":i(r),value:(I=i(n).newRecurringInvoice)==null?void 0:I.formatted_starts_at},null,8,["label","content-loading","value"]),t(e,{label:c.$t("recurring_invoices.next_invoice_date"),"content-loading":i(r),value:(V=i(n).newRecurringInvoice)==null?void 0:V.formatted_next_invoice_at},null,8,["label","content-loading","value"]),($=i(n).newRecurringInvoice)!=null&&$.limit_date&&((s=i(n).newRecurringInvoice)==null?void 0:s.limit_by)!=="NONE"?(d(),y(e,{key:0,label:c.$t("recurring_invoices.limit_date"),"content-loading":i(r),value:(L=i(n).newRecurringInvoice)==null?void 0:L.limit_date},null,8,["label","content-loading","value"])):w("",!0),(a=i(n).newRecurringInvoice)!=null&&a.limit_date&&((_=i(n).newRecurringInvoice)==null?void 0:_.limit_by)!=="NONE"?(d(),y(e,{key:1,label:c.$t("recurring_invoices.limit_by"),"content-loading":i(r),value:(g=i(n).newRecurringInvoice)==null?void 0:g.limit_by},null,8,["label","content-loading","value"])):w("",!0),(S=i(n).newRecurringInvoice)!=null&&S.limit_count?(d(),y(e,{key:2,label:c.$t("recurring_invoices.limit_count"),value:(h=i(n).newRecurringInvoice)==null?void 0:h.limit_count,"content-loading":i(r)},null,8,["label","value","content-loading"])):w("",!0),(E=i(n).newRecurringInvoice)!=null&&E.selectedFrequency?(d(),y(e,{key:3,label:c.$t("recurring_invoices.frequency.title"),value:(D=(C=i(n).newRecurringInvoice)==null?void 0:C.selectedFrequency)==null?void 0:D.label,"content-loading":i(r)},null,8,["label","value","content-loading"])):w("",!0)]}),_:1}),t(b,{class:"mt-8"},{default:o(()=>[N(B(c.$t("invoices.title",2)),1)]),_:1}),t(xe)]),_:1})}}},Te={__name:"View",setup(U){re();const n=O(),v=G();j.useI18n(),M();const r=A(()=>{var c,p;return n.newRecurringInvoice?(p=(c=n.newRecurringInvoice)==null?void 0:c.customer)==null?void 0:p.name:""});function m(){return v.hasAbilities([F.DELETE_RECURRING_INVOICE,F.EDIT_RECURRING_INVOICE])}return(c,p)=>{const b=l("BasePageHeader"),e=l("BasePage");return d(),y(e,{class:"xl:pl-96"},{default:o(()=>[t(b,{title:r.value},{actions:o(()=>[m()?(d(),y(ce,{key:0,row:i(n).newRecurringInvoice},null,8,["row"])):w("",!0)]),_:1},8,["title"]),t(Be),t(we)]),_:1})}}};export{Te as default}; diff --git a/public/build/assets/View-JlVuxFuE.js b/public/build/assets/View-ba37d3J9.js similarity index 96% rename from public/build/assets/View-JlVuxFuE.js rename to public/build/assets/View-ba37d3J9.js index 2ab8d526..2659d825 100644 --- a/public/build/assets/View-JlVuxFuE.js +++ b/public/build/assets/View-ba37d3J9.js @@ -1 +1 @@ -import{L as A,v as M,H as P,f as w,a5 as J,u as K,k as b,z as Q,P as W,r as d,o as c,m as h,w as s,a,l as n,J as j,p as X,t as y,b as r,bc as V,bd as Y,c as k,O as Z,N as ee,K as z}from"./main-B9dpPbRR.js";import{u as te}from"./payment-TUuUgmpD.js";import{u as ae}from"./global-1F4OAoew.js";import"./auth-6FPSPboo.js";const oe={class:"fixed top-0 left-0 hidden h-full pt-16 pb-4 bg-white w-88 xl:block"},se={class:"flex items-center justify-between px-4 pt-8 pb-6 border border-gray-200 border-solid"},ne={class:"flex ml-3",role:"group","aria-label":"First group"},re={class:"px-4 py-1 pb-2 mb-2 text-sm border-b border-gray-200 border-solid"},le={class:"px-2"},de={class:"px-2"},ie={class:"px-2"},me={class:"h-full pb-32 overflow-y-scroll border-l border-gray-200 border-solid sw-scroll"},ce={class:"flex-2"},ue={class:"mb-1 text-md not-italic font-medium leading-5 text-gray-500 capitalize"},pe={class:"flex-1 whitespace-nowrap right"},ye={class:"text-sm text-right text-gray-500 non-italic"},_e={key:0,class:"flex justify-center px-4 mt-5 text-sm text-gray-600"},fe={class:"flex flex-col min-h-0 mt-8 overflow-hidden",style:{height:"75vh"}},be=["src"],Ve={__name:"View",setup(he){const u=A(),m=te(),_=ae(),{tm:F,t:ge}=M.useI18n();let f=P({}),e=P({orderBy:"",orderByField:"",payment_number:""}),g=w(!1),N=w(!1);w(!1),J("utils"),K();const C=b(()=>m.selectedViewPayment),I=b(()=>e.orderBy==="asc"||e.orderBy==null);b(()=>I.value?F("general.ascending"):F("general.descending"));const S=b(()=>f.unique_hash?`/payments/pdf/${f.unique_hash}`:!1);Q(u,()=>{$()}),U(),$(),i=W.debounce(i,500);function D(t){return u.params.id==t}async function U(){await m.fetchPayments({limit:"all"},_.companySlug),setTimeout(()=>{E()},500)}async function $(){if(u&&u.params.id){let t=await m.fetchViewPayment({id:u.params.id},_.companySlug);t.data&&Object.assign(f,t.data.data)}}function E(){const t=document.getElementById(`payment-${u.params.id}`);t&&(t.scrollIntoView({behavior:"smooth"}),t.classList.add("shake"))}async function i(){let t={};e.payment_number!==""&&e.payment_number!==null&&e.payment_number!==void 0&&(t.payment_number=e.payment_number),e.orderBy!==null&&e.orderBy!==void 0&&(t.orderBy=e.orderBy),e.orderByField!==null&&e.orderByField!==void 0&&(t.orderByField=e.orderByField),g.value=!0;try{let l=await m.searchPayment(t,_.companySlug);g.value=!1,l.data.data&&(m.payments=l.data.data)}catch{g.value=!1}}function L(){return e.orderBy==="asc"?(e.orderBy="desc",i(),!0):(e.orderBy="asc",i(),!0)}return(t,l)=>{const p=d("BaseIcon"),v=d("BaseButton"),T=d("BasePageHeader"),q=d("BaseInput"),B=d("BaseRadio"),x=d("BaseInputGroup"),G=d("BaseFormatMoney"),H=d("router-link"),O=d("BasePage");return c(),h(O,{class:"xl:pl-96"},{default:s(()=>[a(T,{title:C.value.payment_number},{actions:s(()=>[a(v,{disabled:n(N),variant:"primary-outline",tag:"a",download:"",href:`/payments/pdf/${n(f).unique_hash}`},{left:s(o=>[a(p,{name:"DownloadIcon",class:j(o.class)},null,8,["class"]),X(" "+y(t.$t("general.download")),1)]),_:1},8,["disabled","href"])]),_:1},8,["title"]),r("div",oe,[r("div",se,[a(q,{modelValue:n(e).payment_number,"onUpdate:modelValue":l[0]||(l[0]=o=>n(e).payment_number=o),placeholder:t.$t("general.search"),type:"text",variant:"gray",onInput:i},{right:s(()=>[a(p,{name:"SearchIcon",class:"h-5 text-gray-400"})]),_:1},8,["modelValue","placeholder"]),r("div",ne,[a(Y,{position:"bottom-start","width-class":"w-50","position-class":"left-0"},{activator:s(()=>[a(v,{variant:"gray"},{default:s(()=>[a(p,{name:"FilterIcon",class:"h-5"})]),_:1})]),default:s(()=>[r("div",re,y(t.$t("general.sort_by")),1),r("div",le,[a(V,{class:"rounded-md pt-3 hover:rounded-md"},{default:s(()=>[a(x,{class:"-mt-3 font-normal"},{default:s(()=>[a(B,{id:"filter_invoice_number",modelValue:n(e).orderByField,"onUpdate:modelValue":[l[1]||(l[1]=o=>n(e).orderByField=o),i],label:t.$t("invoices.title"),size:"sm",name:"filter",value:"invoice_number"},null,8,["modelValue","label"])]),_:1})]),_:1})]),r("div",de,[a(V,{class:"rounded-md pt-3 hover:rounded-md"},{default:s(()=>[a(x,{class:"-mt-3 font-normal"},{default:s(()=>[a(B,{id:"filter_payment_date",modelValue:n(e).orderByField,"onUpdate:modelValue":[l[2]||(l[2]=o=>n(e).orderByField=o),i],label:t.$t("payments.date"),size:"sm",name:"filter",value:"payment_date"},null,8,["modelValue","label"])]),_:1})]),_:1})]),r("div",ie,[a(V,{class:"rounded-md pt-3 hover:rounded-md"},{default:s(()=>[a(x,{class:"-mt-3 font-normal"},{default:s(()=>[a(B,{id:"filter_payment_number",modelValue:n(e).orderByField,"onUpdate:modelValue":[l[3]||(l[3]=o=>n(e).orderByField=o),i],label:t.$t("payments.payment_number"),size:"sm",name:"filter",value:"payment_number"},null,8,["modelValue","label"])]),_:1})]),_:1})])]),_:1}),a(v,{class:"ml-1",variant:"white",onClick:L},{default:s(()=>[I.value?(c(),h(p,{key:0,name:"SortAscendingIcon",class:"h-5"})):(c(),h(p,{key:1,name:"SortDescendingIcon",class:"h-5"}))]),_:1})])]),r("div",me,[(c(!0),k(ee,null,Z(n(m).payments,(o,R)=>(c(),h(H,{id:"payment-"+o.id,key:R,to:`/${n(_).companySlug}/customer/payments/${o.id}/view`,class:j(["flex justify-between p-4 items-center cursor-pointer hover:bg-gray-100 border-l-4 border-transparent",{"bg-gray-100 border-l-4 border-primary-500 border-solid":D(o.id)}]),style:{"border-bottom":"1px solid rgba(185, 193, 209, 0.41)"}},{default:s(()=>[r("div",ce,[r("div",ue,y(o.payment_number),1)]),r("div",pe,[a(G,{class:"mb-2 text-xl not-italic font-semibold leading-8 text-right text-gray-900 block",amount:o.amount,currency:o.currency},null,8,["amount","currency"]),r("div",ye,y(o.formatted_payment_date),1)])]),_:2},1032,["id","to","class"]))),128)),n(m).payments.length?z("",!0):(c(),k("p",_e,y(t.$t("payments.no_matching_payments")),1))])]),r("div",fe,[S.value?(c(),k("iframe",{key:0,src:S.value,class:"flex-1 border border-gray-400 border-solid rounded-md"},null,8,be)):z("",!0)])]),_:1})}}};export{Ve as default}; +import{L as A,v as M,H as P,f as w,a5 as J,u as K,k as b,z as Q,P as W,r as d,o as c,m as h,w as s,a,l as n,J as j,p as X,t as y,b as r,bj as V,bk as Y,c as k,O as Z,N as ee,K as z}from"./main-pPEsZPea.js";import{u as te}from"./payment-hA--gLno.js";import{u as ae}from"./global-s5lx2XuM.js";import"./auth-mYHkZCAB.js";const oe={class:"fixed top-0 left-0 hidden h-full pt-16 pb-4 bg-white w-88 xl:block"},se={class:"flex items-center justify-between px-4 pt-8 pb-6 border border-gray-200 border-solid"},ne={class:"flex ml-3",role:"group","aria-label":"First group"},re={class:"px-4 py-1 pb-2 mb-2 text-sm border-b border-gray-200 border-solid"},le={class:"px-2"},de={class:"px-2"},ie={class:"px-2"},me={class:"h-full pb-32 overflow-y-scroll border-l border-gray-200 border-solid sw-scroll"},ce={class:"flex-2"},ue={class:"mb-1 text-md not-italic font-medium leading-5 text-gray-500 capitalize"},pe={class:"flex-1 whitespace-nowrap right"},ye={class:"text-sm text-right text-gray-500 non-italic"},_e={key:0,class:"flex justify-center px-4 mt-5 text-sm text-gray-600"},fe={class:"flex flex-col min-h-0 mt-8 overflow-hidden",style:{height:"75vh"}},be=["src"],Ve={__name:"View",setup(he){const u=A(),m=te(),_=ae(),{tm:F,t:ge}=M.useI18n();let f=P({}),e=P({orderBy:"",orderByField:"",payment_number:""}),g=w(!1),N=w(!1);w(!1),J("utils"),K();const C=b(()=>m.selectedViewPayment),I=b(()=>e.orderBy==="asc"||e.orderBy==null);b(()=>I.value?F("general.ascending"):F("general.descending"));const S=b(()=>f.unique_hash?`/payments/pdf/${f.unique_hash}`:!1);Q(u,()=>{$()}),U(),$(),i=W.debounce(i,500);function D(t){return u.params.id==t}async function U(){await m.fetchPayments({limit:"all"},_.companySlug),setTimeout(()=>{E()},500)}async function $(){if(u&&u.params.id){let t=await m.fetchViewPayment({id:u.params.id},_.companySlug);t.data&&Object.assign(f,t.data.data)}}function E(){const t=document.getElementById(`payment-${u.params.id}`);t&&(t.scrollIntoView({behavior:"smooth"}),t.classList.add("shake"))}async function i(){let t={};e.payment_number!==""&&e.payment_number!==null&&e.payment_number!==void 0&&(t.payment_number=e.payment_number),e.orderBy!==null&&e.orderBy!==void 0&&(t.orderBy=e.orderBy),e.orderByField!==null&&e.orderByField!==void 0&&(t.orderByField=e.orderByField),g.value=!0;try{let l=await m.searchPayment(t,_.companySlug);g.value=!1,l.data.data&&(m.payments=l.data.data)}catch{g.value=!1}}function L(){return e.orderBy==="asc"?(e.orderBy="desc",i(),!0):(e.orderBy="asc",i(),!0)}return(t,l)=>{const p=d("BaseIcon"),v=d("BaseButton"),T=d("BasePageHeader"),q=d("BaseInput"),B=d("BaseRadio"),x=d("BaseInputGroup"),G=d("BaseFormatMoney"),H=d("router-link"),O=d("BasePage");return c(),h(O,{class:"xl:pl-96"},{default:s(()=>[a(T,{title:C.value.payment_number},{actions:s(()=>[a(v,{disabled:n(N),variant:"primary-outline",tag:"a",download:"",href:`/payments/pdf/${n(f).unique_hash}`},{left:s(o=>[a(p,{name:"DownloadIcon",class:j(o.class)},null,8,["class"]),X(" "+y(t.$t("general.download")),1)]),_:1},8,["disabled","href"])]),_:1},8,["title"]),r("div",oe,[r("div",se,[a(q,{modelValue:n(e).payment_number,"onUpdate:modelValue":l[0]||(l[0]=o=>n(e).payment_number=o),placeholder:t.$t("general.search"),type:"text",variant:"gray",onInput:i},{right:s(()=>[a(p,{name:"SearchIcon",class:"h-5 text-gray-400"})]),_:1},8,["modelValue","placeholder"]),r("div",ne,[a(Y,{position:"bottom-start","width-class":"w-50","position-class":"left-0"},{activator:s(()=>[a(v,{variant:"gray"},{default:s(()=>[a(p,{name:"FilterIcon",class:"h-5"})]),_:1})]),default:s(()=>[r("div",re,y(t.$t("general.sort_by")),1),r("div",le,[a(V,{class:"rounded-md pt-3 hover:rounded-md"},{default:s(()=>[a(x,{class:"-mt-3 font-normal"},{default:s(()=>[a(B,{id:"filter_invoice_number",modelValue:n(e).orderByField,"onUpdate:modelValue":[l[1]||(l[1]=o=>n(e).orderByField=o),i],label:t.$t("invoices.title"),size:"sm",name:"filter",value:"invoice_number"},null,8,["modelValue","label"])]),_:1})]),_:1})]),r("div",de,[a(V,{class:"rounded-md pt-3 hover:rounded-md"},{default:s(()=>[a(x,{class:"-mt-3 font-normal"},{default:s(()=>[a(B,{id:"filter_payment_date",modelValue:n(e).orderByField,"onUpdate:modelValue":[l[2]||(l[2]=o=>n(e).orderByField=o),i],label:t.$t("payments.date"),size:"sm",name:"filter",value:"payment_date"},null,8,["modelValue","label"])]),_:1})]),_:1})]),r("div",ie,[a(V,{class:"rounded-md pt-3 hover:rounded-md"},{default:s(()=>[a(x,{class:"-mt-3 font-normal"},{default:s(()=>[a(B,{id:"filter_payment_number",modelValue:n(e).orderByField,"onUpdate:modelValue":[l[3]||(l[3]=o=>n(e).orderByField=o),i],label:t.$t("payments.payment_number"),size:"sm",name:"filter",value:"payment_number"},null,8,["modelValue","label"])]),_:1})]),_:1})])]),_:1}),a(v,{class:"ml-1",variant:"white",onClick:L},{default:s(()=>[I.value?(c(),h(p,{key:0,name:"SortAscendingIcon",class:"h-5"})):(c(),h(p,{key:1,name:"SortDescendingIcon",class:"h-5"}))]),_:1})])]),r("div",me,[(c(!0),k(ee,null,Z(n(m).payments,(o,R)=>(c(),h(H,{id:"payment-"+o.id,key:R,to:`/${n(_).companySlug}/customer/payments/${o.id}/view`,class:j(["flex justify-between p-4 items-center cursor-pointer hover:bg-gray-100 border-l-4 border-transparent",{"bg-gray-100 border-l-4 border-primary-500 border-solid":D(o.id)}]),style:{"border-bottom":"1px solid rgba(185, 193, 209, 0.41)"}},{default:s(()=>[r("div",ce,[r("div",ue,y(o.payment_number),1)]),r("div",pe,[a(G,{class:"mb-2 text-xl not-italic font-semibold leading-8 text-right text-gray-900 block",amount:o.amount,currency:o.currency},null,8,["amount","currency"]),r("div",ye,y(o.formatted_payment_date),1)])]),_:2},1032,["id","to","class"]))),128)),n(m).payments.length?z("",!0):(c(),k("p",_e,y(t.$t("payments.no_matching_payments")),1))])]),r("div",fe,[S.value?(c(),k("iframe",{key:0,src:S.value,class:"flex-1 border border-gray-400 border-solid rounded-md"},null,8,be)):z("",!0)])]),_:1})}}};export{Ve as default}; diff --git a/public/build/assets/View-5H6o1eed.js b/public/build/assets/View-j1em_-J5.js similarity index 79% rename from public/build/assets/View-5H6o1eed.js rename to public/build/assets/View-j1em_-J5.js index 28b75d9b..5e16ba8e 100644 --- a/public/build/assets/View-5H6o1eed.js +++ b/public/build/assets/View-j1em_-J5.js @@ -1 +1 @@ -import{L as Q,e as W,a7 as X,v as Y,H as z,f as Z,a5 as ee,u as te,k as h,z as ae,P as se,r as d,o as m,m as y,w as o,a,b as l,l as n,p as E,t as p,K as B,bc as V,bd as oe,c as S,O as re,J as le,N as ne}from"./main-B9dpPbRR.js";import{u as ie}from"./estimate-kOpVdJXW.js";import{u as de}from"./global-1F4OAoew.js";import"./auth-6FPSPboo.js";const me={class:"mr-3 text-sm"},ce={class:"mr-3 text-sm"},ue={class:"fixed top-0 left-0 hidden h-full pt-16 pb-4 bg-white w-88 xl:block"},_e={class:"flex items-center justify-between px-4 pt-8 pb-6 border border-gray-200 border-solid"},pe={class:"flex ml-3",role:"group","aria-label":"First group"},fe={class:"px-4 py-1 pb-2 mb-2 text-sm border-b border-gray-200 border-solid"},ye={class:"px-2"},be={class:"px-2"},ge={class:"px-2"},he={class:"h-full pb-32 overflow-y-scroll border-l border-gray-200 border-solid sw-scroll"},Be={class:"flex-2"},ve={class:"mb-1 text-md not-italic font-medium leading-5 text-gray-500 capitalize"},xe={class:"flex-1 whitespace-nowrap right"},we={class:"text-sm text-right text-gray-500 non-italic"},ke={key:0,class:"flex justify-center px-4 mt-5 text-sm text-gray-600"},Ee={class:"flex flex-col min-h-0 mt-8 overflow-hidden",style:{height:"75vh"}},Ve=["src"],De={__name:"View",setup(Se){const c=Q(),F=W(),i=ie(),f=de(),I=X(),{tm:$,t:u}=Y.useI18n();let v=z({}),t=z({orderBy:"",orderByField:"",estimate_number:""}),x=Z(!1);ee("utils"),te();const L=h(()=>i.selectedViewEstimate),C=h(()=>t.orderBy==="asc"||t.orderBy==null);h(()=>C.value?$("general.ascending"):$("general.descending"));const D=h(()=>v.unique_hash?`/estimates/pdf/${v.unique_hash}`:!1);ae(c,()=>{j()}),R(),j(),_=se.debounce(_,500);function N(e){return c.params.id==e}async function R(){await i.fetchEstimate({limit:"all"},f.companySlug),setTimeout(()=>{T()},500)}async function j(){if(c&&c.params.id){let e=await i.fetchViewEstimate({id:c.params.id},f.companySlug);e.data&&Object.assign(v,e.data.data)}}function T(){const e=document.getElementById(`estimate-${c.params.id}`);e&&(e.scrollIntoView({behavior:"smooth"}),e.classList.add("shake"))}async function _(){let e={};t.estimate_number!==""&&t.estimate_number!==null&&t.estimate_number!==void 0&&(e.estimate_number=t.estimate_number),t.orderBy!==null&&t.orderBy!==void 0&&(e.orderBy=t.orderBy),t.orderByField!==null&&t.orderByField!==void 0&&(e.orderByField=t.orderByField),x.value=!0;try{let r=await i.searchEstimate(e,f.companySlug);x.value=!1,r.data.data&&(i.estimates=r.data.data)}catch{x.value=!1}}function A(){return t.orderBy==="asc"?(t.orderBy="desc",_(),!0):(t.orderBy="asc",_(),!0)}async function P(){I.openDialog({title:u("general.are_you_sure"),message:u("estimates.confirm_mark_as_accepted",1),yesLabel:u("general.ok"),noLabel:u("general.cancel"),variant:"primary",size:"lg",hideNoButton:!1}).then(async e=>{let r={slug:f.companySlug,id:c.params.id,status:"ACCEPTED"};e&&(i.acceptEstimate(r),F.push({name:"estimates.dashboard"}))})}async function U(){I.openDialog({title:u("general.are_you_sure"),message:u("estimates.confirm_mark_as_rejected",1),yesLabel:u("general.ok"),noLabel:u("general.cancel"),variant:"primary",size:"lg",hideNoButton:!1}).then(async e=>{let r={slug:f.companySlug,id:c.params.id,status:"REJECTED"};e&&(i.rejectEstimate(r),F.push({name:"estimates.dashboard"}))})}return(e,r)=>{const b=d("BaseButton"),G=d("BasePageHeader"),g=d("BaseIcon"),H=d("BaseInput"),w=d("BaseRadio"),k=d("BaseInputGroup"),O=d("BaseEstimateStatusBadge"),q=d("BaseFormatMoney"),J=d("router-link"),M=d("BasePage");return m(),y(M,{class:"xl:pl-96"},{default:o(()=>[a(G,{title:L.value.estimate_number},{actions:o(()=>[l("div",me,[n(i).selectedViewEstimate.status==="DRAFT"?(m(),y(b,{key:0,variant:"primary",onClick:P},{default:o(()=>[E(p(e.$t("estimates.accept_estimate")),1)]),_:1})):B("",!0)]),l("div",ce,[n(i).selectedViewEstimate.status==="DRAFT"?(m(),y(b,{key:0,variant:"primary-outline",onClick:U},{default:o(()=>[E(p(e.$t("estimates.reject_estimate")),1)]),_:1})):B("",!0)])]),_:1},8,["title"]),l("div",ue,[l("div",_e,[a(H,{modelValue:n(t).estimate_number,"onUpdate:modelValue":r[0]||(r[0]=s=>n(t).estimate_number=s),placeholder:e.$t("general.search"),type:"text",variant:"gray",onInput:_},{right:o(()=>[a(g,{name:"SearchIcon",class:"h-5 text-gray-400"})]),_:1},8,["modelValue","placeholder"]),l("div",pe,[a(oe,{position:"bottom-start","width-class":"w-50","position-class":"left-0"},{activator:o(()=>[a(b,{variant:"gray"},{default:o(()=>[a(g,{name:"FilterIcon",class:"h-5"})]),_:1})]),default:o(()=>[l("div",fe,p(e.$t("general.sort_by")),1),l("div",ye,[a(V,{class:"rounded-md pt-3 hover:rounded-md"},{default:o(()=>[a(k,{class:"-mt-3 font-normal"},{default:o(()=>[a(w,{id:"filter_estimate_date",modelValue:n(t).orderByField,"onUpdate:modelValue":r[1]||(r[1]=s=>n(t).orderByField=s),label:e.$t("reports.estimates.estimate_date"),size:"sm",name:"filter",value:"estimate_date",onChange:_},null,8,["modelValue","label"])]),_:1})]),_:1})]),l("div",be,[a(V,{class:"rounded-md pt-3 hover:rounded-md"},{default:o(()=>[a(k,{class:"-mt-3 font-normal"},{default:o(()=>[a(w,{id:"filter_due_date",modelValue:n(t).orderByField,"onUpdate:modelValue":[r[2]||(r[2]=s=>n(t).orderByField=s),_],label:e.$t("estimates.due_date"),value:"expiry_date",size:"sm",name:"filter"},null,8,["modelValue","label"])]),_:1})]),_:1})]),l("div",ge,[a(V,{class:"rounded-md pt-3 hover:rounded-md"},{default:o(()=>[a(k,{class:"-mt-3 font-normal"},{default:o(()=>[a(w,{id:"filter_estimate_number",modelValue:n(t).orderByField,"onUpdate:modelValue":[r[3]||(r[3]=s=>n(t).orderByField=s),_],label:e.$t("estimates.estimate_number"),value:"estimate_number",size:"sm",name:"filter"},null,8,["modelValue","label"])]),_:1})]),_:1})])]),_:1}),a(b,{class:"ml-1",variant:"white",onClick:A},{default:o(()=>[C.value?(m(),y(g,{key:0,name:"SortAscendingIcon",class:"h-5"})):(m(),y(g,{key:1,name:"SortDescendingIcon",class:"h-5"}))]),_:1})])]),l("div",he,[(m(!0),S(ne,null,re(n(i).estimates,(s,K)=>(m(),y(J,{id:"estimate-"+s.id,key:K,to:`/${n(f).companySlug}/customer/estimates/${s.id}/view`,class:le(["flex justify-between p-4 items-center cursor-pointer hover:bg-gray-100 border-l-4 border-transparent",{"bg-gray-100 border-l-4 border-primary-500 border-solid":N(s.id)}]),style:{"border-bottom":"1px solid rgba(185, 193, 209, 0.41)"}},{default:o(()=>[l("div",Be,[l("div",ve,p(s.estimate_number),1),a(O,{status:s.status},{default:o(()=>[E(p(s.status),1)]),_:2},1032,["status"])]),l("div",xe,[a(q,{class:"mb-2 text-xl not-italic font-semibold leading-8 text-right text-gray-900 block",amount:s.total,currency:s.currency},null,8,["amount","currency"]),l("div",we,p(s.formatted_estimate_date),1)])]),_:2},1032,["id","to","class"]))),128)),n(i).estimates.length?B("",!0):(m(),S("p",ke,p(e.$t("estimates.no_matching_estimates")),1))])]),l("div",Ee,[D.value?(m(),S("iframe",{key:0,src:D.value,class:"flex-1 border border-gray-400 border-solid rounded-md"},null,8,Ve)):B("",!0)])]),_:1})}}};export{De as default}; +import{L as Q,e as W,a7 as X,v as Y,H as z,f as Z,a5 as ee,u as te,k as h,z as ae,P as se,r as d,o as m,m as y,w as o,a,b as l,l as n,p as E,t as p,K as B,bj as V,bk as oe,c as S,O as re,J as le,N as ne}from"./main-pPEsZPea.js";import{u as ie}from"./estimate-QHup-rch.js";import{u as de}from"./global-s5lx2XuM.js";import"./auth-mYHkZCAB.js";const me={class:"mr-3 text-sm"},ce={class:"mr-3 text-sm"},ue={class:"fixed top-0 left-0 hidden h-full pt-16 pb-4 bg-white w-88 xl:block"},_e={class:"flex items-center justify-between px-4 pt-8 pb-6 border border-gray-200 border-solid"},pe={class:"flex ml-3",role:"group","aria-label":"First group"},fe={class:"px-4 py-1 pb-2 mb-2 text-sm border-b border-gray-200 border-solid"},ye={class:"px-2"},be={class:"px-2"},ge={class:"px-2"},he={class:"h-full pb-32 overflow-y-scroll border-l border-gray-200 border-solid sw-scroll"},Be={class:"flex-2"},ve={class:"mb-1 text-md not-italic font-medium leading-5 text-gray-500 capitalize"},xe={class:"flex-1 whitespace-nowrap right"},ke={class:"text-sm text-right text-gray-500 non-italic"},we={key:0,class:"flex justify-center px-4 mt-5 text-sm text-gray-600"},Ee={class:"flex flex-col min-h-0 mt-8 overflow-hidden",style:{height:"75vh"}},Ve=["src"],Ce={__name:"View",setup(Se){const c=Q(),F=W(),i=ie(),f=de(),I=X(),{tm:$,t:u}=Y.useI18n();let v=z({}),t=z({orderBy:"",orderByField:"",estimate_number:""}),x=Z(!1);ee("utils"),te();const L=h(()=>i.selectedViewEstimate),j=h(()=>t.orderBy==="asc"||t.orderBy==null);h(()=>j.value?$("general.ascending"):$("general.descending"));const C=h(()=>v.unique_hash?`/estimates/pdf/${v.unique_hash}`:!1);ae(c,()=>{D()}),R(),D(),_=se.debounce(_,500);function N(e){return c.params.id==e}async function R(){await i.fetchEstimate({limit:"all"},f.companySlug),setTimeout(()=>{T()},500)}async function D(){if(c&&c.params.id){let e=await i.fetchViewEstimate({id:c.params.id},f.companySlug);e.data&&Object.assign(v,e.data.data)}}function T(){const e=document.getElementById(`estimate-${c.params.id}`);e&&(e.scrollIntoView({behavior:"smooth"}),e.classList.add("shake"))}async function _(){let e={};t.estimate_number!==""&&t.estimate_number!==null&&t.estimate_number!==void 0&&(e.estimate_number=t.estimate_number),t.orderBy!==null&&t.orderBy!==void 0&&(e.orderBy=t.orderBy),t.orderByField!==null&&t.orderByField!==void 0&&(e.orderByField=t.orderByField),x.value=!0;try{let r=await i.searchEstimate(e,f.companySlug);x.value=!1,r.data.data&&(i.estimates=r.data.data)}catch{x.value=!1}}function A(){return t.orderBy==="asc"?(t.orderBy="desc",_(),!0):(t.orderBy="asc",_(),!0)}async function P(){I.openDialog({title:u("general.are_you_sure"),message:u("estimates.confirm_mark_as_accepted",1),yesLabel:u("general.ok"),noLabel:u("general.cancel"),variant:"primary",size:"lg",hideNoButton:!1}).then(async e=>{let r={slug:f.companySlug,id:c.params.id,status:"ACCEPTED"};e&&(i.acceptEstimate(r),F.push({name:"estimates.dashboard"}))})}async function U(){I.openDialog({title:u("general.are_you_sure"),message:u("estimates.confirm_mark_as_rejected",1),yesLabel:u("general.ok"),noLabel:u("general.cancel"),variant:"primary",size:"lg",hideNoButton:!1}).then(async e=>{let r={slug:f.companySlug,id:c.params.id,status:"REJECTED"};e&&(i.rejectEstimate(r),F.push({name:"estimates.dashboard"}))})}return(e,r)=>{const b=d("BaseButton"),G=d("BasePageHeader"),g=d("BaseIcon"),H=d("BaseInput"),k=d("BaseRadio"),w=d("BaseInputGroup"),O=d("BaseEstimateStatusBadge"),q=d("BaseFormatMoney"),J=d("router-link"),M=d("BasePage");return m(),y(M,{class:"xl:pl-96"},{default:o(()=>[a(G,{title:L.value.estimate_number},{actions:o(()=>[l("div",me,[n(i).selectedViewEstimate.status==="DRAFT"?(m(),y(b,{key:0,variant:"primary",onClick:P},{default:o(()=>[E(p(e.$t("estimates.accept_estimate")),1)]),_:1})):B("",!0)]),l("div",ce,[n(i).selectedViewEstimate.status==="DRAFT"?(m(),y(b,{key:0,variant:"primary-outline",onClick:U},{default:o(()=>[E(p(e.$t("estimates.reject_estimate")),1)]),_:1})):B("",!0)])]),_:1},8,["title"]),l("div",ue,[l("div",_e,[a(H,{modelValue:n(t).estimate_number,"onUpdate:modelValue":r[0]||(r[0]=s=>n(t).estimate_number=s),placeholder:e.$t("general.search"),type:"text",variant:"gray",onInput:_},{right:o(()=>[a(g,{name:"SearchIcon",class:"h-5 text-gray-400"})]),_:1},8,["modelValue","placeholder"]),l("div",pe,[a(oe,{position:"bottom-start","width-class":"w-50","position-class":"left-0"},{activator:o(()=>[a(b,{variant:"gray"},{default:o(()=>[a(g,{name:"FilterIcon",class:"h-5"})]),_:1})]),default:o(()=>[l("div",fe,p(e.$t("general.sort_by")),1),l("div",ye,[a(V,{class:"rounded-md pt-3 hover:rounded-md"},{default:o(()=>[a(w,{class:"-mt-3 font-normal"},{default:o(()=>[a(k,{id:"filter_estimate_date",modelValue:n(t).orderByField,"onUpdate:modelValue":r[1]||(r[1]=s=>n(t).orderByField=s),label:e.$t("reports.estimates.estimate_date"),size:"sm",name:"filter",value:"estimate_date",onChange:_},null,8,["modelValue","label"])]),_:1})]),_:1})]),l("div",be,[a(V,{class:"rounded-md pt-3 hover:rounded-md"},{default:o(()=>[a(w,{class:"-mt-3 font-normal"},{default:o(()=>[a(k,{id:"filter_due_date",modelValue:n(t).orderByField,"onUpdate:modelValue":[r[2]||(r[2]=s=>n(t).orderByField=s),_],label:e.$t("estimates.due_date"),value:"expiry_date",size:"sm",name:"filter"},null,8,["modelValue","label"])]),_:1})]),_:1})]),l("div",ge,[a(V,{class:"rounded-md pt-3 hover:rounded-md"},{default:o(()=>[a(w,{class:"-mt-3 font-normal"},{default:o(()=>[a(k,{id:"filter_estimate_number",modelValue:n(t).orderByField,"onUpdate:modelValue":[r[3]||(r[3]=s=>n(t).orderByField=s),_],label:e.$t("estimates.estimate_number"),value:"estimate_number",size:"sm",name:"filter"},null,8,["modelValue","label"])]),_:1})]),_:1})])]),_:1}),a(b,{class:"ml-1",variant:"white",onClick:A},{default:o(()=>[j.value?(m(),y(g,{key:0,name:"SortAscendingIcon",class:"h-5"})):(m(),y(g,{key:1,name:"SortDescendingIcon",class:"h-5"}))]),_:1})])]),l("div",he,[(m(!0),S(ne,null,re(n(i).estimates,(s,K)=>(m(),y(J,{id:"estimate-"+s.id,key:K,to:`/${n(f).companySlug}/customer/estimates/${s.id}/view`,class:le(["flex justify-between p-4 items-center cursor-pointer hover:bg-gray-100 border-l-4 border-transparent",{"bg-gray-100 border-l-4 border-primary-500 border-solid":N(s.id)}]),style:{"border-bottom":"1px solid rgba(185, 193, 209, 0.41)"}},{default:o(()=>[l("div",Be,[l("div",ve,p(s.estimate_number),1),a(O,{status:s.status},{default:o(()=>[E(p(s.status),1)]),_:2},1032,["status"])]),l("div",xe,[a(q,{class:"mb-2 text-xl not-italic font-semibold leading-8 text-right text-gray-900 block",amount:s.total,currency:s.currency},null,8,["amount","currency"]),l("div",ke,p(s.formatted_estimate_date),1)])]),_:2},1032,["id","to","class"]))),128)),n(i).estimates.length?B("",!0):(m(),S("p",we,p(e.$t("estimates.no_matching_estimates")),1))])]),l("div",Ee,[C.value?(m(),S("iframe",{key:0,src:C.value,class:"flex-1 border border-gray-400 border-solid rounded-md"},null,8,Ve)):B("",!0)])]),_:1})}}};export{Ce as default}; diff --git a/public/build/assets/auth-6FPSPboo.js b/public/build/assets/auth-mYHkZCAB.js similarity index 97% rename from public/build/assets/auth-6FPSPboo.js rename to public/build/assets/auth-mYHkZCAB.js index 81fc5d24..0f62623a 100644 --- a/public/build/assets/auth-6FPSPboo.js +++ b/public/build/assets/auth-mYHkZCAB.js @@ -1 +1 @@ -import{u as r,s as l,bb as m}from"./main-B9dpPbRR.js";const u=e=>{const t=p(),a=r();if(!e.response)a.showNotification({type:"error",message:"Please check your internet connection or wait until servers are back online."});else if(e.response.data&&(e.response.statusText==="Unauthorized"||e.response.data===" Unauthorized.")){const o=e.response.data.message?e.response.data.message:"Unauthorized";i(o),t.logout()}else if(e.response.data.errors){const o=JSON.parse(JSON.stringify(e.response.data.errors));for(const s in o)d(o[s][0])}else e.response.data.error?d(e.response.data.error):d(e.response.data.message)},d=e=>{switch(e){case"These credentials do not match our records.":i("errors.login_invalid_credentials");break;case"The email has already been taken.":i("validation.email_already_taken");break;case"invalid_credentials":i("errors.invalid_credentials");break;case"Email could not be sent to this email address.":i("errors.email_could_not_be_sent");break;case"not_allowed":i("errors.not_allowed");break;default:i(e,!1);break}},i=(e,t=!0)=>{const{global:a}=window.i18n;r().showNotification({type:"error",message:t?a.t(e):e})},{defineStore:f}=window.pinia,{global:n}=window.i18n,p=f({id:"customerAuth",state:()=>({loginData:{email:"",password:"",device_name:"xyz",company:""}}),actions:{login(e){const t=r(!0);return new Promise((a,o)=>{l.get("/sanctum/csrf-cookie").then(s=>{s&&l.post(`/${e.company}/customer/login`,e).then(c=>{t.showNotification({type:"success",message:n.tm("general.login_successfully")}),a(c),setTimeout(()=>{this.loginData.email="",this.loginData.password=""},1e3)}).catch(c=>{u(c),o(c)})})})},forgotPassword(e){const t=r(!0);return new Promise((a,o)=>{l.post(`/api/v1/${e.company}/customer/auth/password/email`,e).then(s=>{s.data&&t.showNotification({type:"success",message:n.tm("general.send_mail_successfully")}),a(s)}).catch(s=>{s.response&&s.response.status===403?t.showNotification({type:"error",message:n.tm("errors.email_could_not_be_sent")}):u(s),o(s)})})},resetPassword(e,t){return new Promise((a,o)=>{l.post(`/api/v1/${t}/customer/auth/reset/password`,e).then(s=>{s.data&&r(!0).showNotification({type:"success",message:n.tm("login.password_reset_successfully")}),a(s)}).catch(s=>{s.response&&s.response.status===403&¬ificationStore.showNotification({type:"error",message:n.tm("validation.email_incorrect")}),o(s)})})},logout(e){return new Promise((t,a)=>{l.post(`/${e}/customer/logout`).then(o=>{r().showNotification({type:"success",message:n.tm("general.logged_out_successfully")}),m.push({name:"customer.login"}),t(o)}).catch(o=>{u(o),a(o)})})}}});export{u as h,p as u}; +import{u as r,s as l,bi as m}from"./main-pPEsZPea.js";const u=e=>{const t=p(),a=r();if(!e.response)a.showNotification({type:"error",message:"Please check your internet connection or wait until servers are back online."});else if(e.response.data&&(e.response.statusText==="Unauthorized"||e.response.data===" Unauthorized.")){const o=e.response.data.message?e.response.data.message:"Unauthorized";i(o),t.logout()}else if(e.response.data.errors){const o=JSON.parse(JSON.stringify(e.response.data.errors));for(const s in o)d(o[s][0])}else e.response.data.error?d(e.response.data.error):d(e.response.data.message)},d=e=>{switch(e){case"These credentials do not match our records.":i("errors.login_invalid_credentials");break;case"The email has already been taken.":i("validation.email_already_taken");break;case"invalid_credentials":i("errors.invalid_credentials");break;case"Email could not be sent to this email address.":i("errors.email_could_not_be_sent");break;case"not_allowed":i("errors.not_allowed");break;default:i(e,!1);break}},i=(e,t=!0)=>{const{global:a}=window.i18n;r().showNotification({type:"error",message:t?a.t(e):e})},{defineStore:f}=window.pinia,{global:n}=window.i18n,p=f({id:"customerAuth",state:()=>({loginData:{email:"",password:"",device_name:"xyz",company:""}}),actions:{login(e){const t=r(!0);return new Promise((a,o)=>{l.get("/sanctum/csrf-cookie").then(s=>{s&&l.post(`/${e.company}/customer/login`,e).then(c=>{t.showNotification({type:"success",message:n.tm("general.login_successfully")}),a(c),setTimeout(()=>{this.loginData.email="",this.loginData.password=""},1e3)}).catch(c=>{u(c),o(c)})})})},forgotPassword(e){const t=r(!0);return new Promise((a,o)=>{l.post(`/api/v1/${e.company}/customer/auth/password/email`,e).then(s=>{s.data&&t.showNotification({type:"success",message:n.tm("general.send_mail_successfully")}),a(s)}).catch(s=>{s.response&&s.response.status===403?t.showNotification({type:"error",message:n.tm("errors.email_could_not_be_sent")}):u(s),o(s)})})},resetPassword(e,t){return new Promise((a,o)=>{l.post(`/api/v1/${t}/customer/auth/reset/password`,e).then(s=>{s.data&&r(!0).showNotification({type:"success",message:n.tm("login.password_reset_successfully")}),a(s)}).catch(s=>{s.response&&s.response.status===403&¬ificationStore.showNotification({type:"error",message:n.tm("validation.email_incorrect")}),o(s)})})},logout(e){return new Promise((t,a)=>{l.post(`/${e}/customer/logout`).then(o=>{r().showNotification({type:"success",message:n.tm("general.logged_out_successfully")}),m.push({name:"customer.login"}),t(o)}).catch(o=>{u(o),a(o)})})}}});export{u as h,p as u}; diff --git a/public/build/assets/category-PmZRvdLB.js b/public/build/assets/category-NTufFTmR.js similarity index 95% rename from public/build/assets/category-PmZRvdLB.js rename to public/build/assets/category-NTufFTmR.js index 3655c1da..e520868f 100644 --- a/public/build/assets/category-PmZRvdLB.js +++ b/public/build/assets/category-NTufFTmR.js @@ -1 +1 @@ -import{a4 as f,s as o,a1 as s,u as r}from"./main-B9dpPbRR.js";const l=(d=!1)=>{const h=d?window.pinia.defineStore:f,{global:n}=window.i18n;return h({id:"category",state:()=>({categories:[],currentCategory:{id:null,name:"",description:""},editCategory:null}),getters:{isEdit:t=>!!t.currentCategory.id},actions:{fetchCategories(t){return new Promise((a,i)=>{o.get("/api/v1/categories",{params:t}).then(e=>{this.categories=e.data.data,a(e)}).catch(e=>{s(e),i(e)})})},fetchCategory(t){return new Promise((a,i)=>{o.get(`/api/v1/categories/${t}`).then(e=>{this.currentCategory=e.data.data,a(e)}).catch(e=>{s(e),i(e)})})},addCategory(t){return new Promise((a,i)=>{o.post("/api/v1/categories",t).then(e=>{this.categories.push(e.data.data),r().showNotification({type:"success",message:n.t("settings.expense_category.created_message")}),a(e)}).catch(e=>{s(e),i(e)})})},updateCategory(t){return new Promise((a,i)=>{o.put(`/api/v1/categories/${t.id}`,t).then(e=>{if(e.data){let c=this.categories.findIndex(u=>u.id===e.data.data.id);this.categories[c]=t.categories,r().showNotification({type:"success",message:n.t("settings.expense_category.updated_message")})}a(e)}).catch(e=>{s(e),i(e)})})},deleteCategory(t){return new Promise(a=>{o.delete(`/api/v1/categories/${t}`).then(i=>{let e=this.categories.findIndex(g=>g.id===t);this.categories.splice(e,1),r().showNotification({type:"success",message:n.t("settings.expense_category.deleted_message")}),a(i)}).catch(i=>{s(i),console.error(i)})})}}})()};export{l as u}; +import{a4 as f,s as o,a1 as s,u as r}from"./main-pPEsZPea.js";const l=(d=!1)=>{const h=d?window.pinia.defineStore:f,{global:n}=window.i18n;return h({id:"category",state:()=>({categories:[],currentCategory:{id:null,name:"",description:""},editCategory:null}),getters:{isEdit:t=>!!t.currentCategory.id},actions:{fetchCategories(t){return new Promise((a,i)=>{o.get("/api/v1/categories",{params:t}).then(e=>{this.categories=e.data.data,a(e)}).catch(e=>{s(e),i(e)})})},fetchCategory(t){return new Promise((a,i)=>{o.get(`/api/v1/categories/${t}`).then(e=>{this.currentCategory=e.data.data,a(e)}).catch(e=>{s(e),i(e)})})},addCategory(t){return new Promise((a,i)=>{o.post("/api/v1/categories",t).then(e=>{this.categories.push(e.data.data),r().showNotification({type:"success",message:n.t("settings.expense_category.created_message")}),a(e)}).catch(e=>{s(e),i(e)})})},updateCategory(t){return new Promise((a,i)=>{o.put(`/api/v1/categories/${t.id}`,t).then(e=>{if(e.data){let c=this.categories.findIndex(u=>u.id===e.data.data.id);this.categories[c]=t.categories,r().showNotification({type:"success",message:n.t("settings.expense_category.updated_message")})}a(e)}).catch(e=>{s(e),i(e)})})},deleteCategory(t){return new Promise(a=>{o.delete(`/api/v1/categories/${t}`).then(i=>{let e=this.categories.findIndex(g=>g.id===t);this.categories.splice(e,1),r().showNotification({type:"success",message:n.t("settings.expense_category.deleted_message")}),a(i)}).catch(i=>{s(i),console.error(i)})})}}})()};export{l as u}; diff --git a/public/build/assets/disk-4FKXCHfJ.js b/public/build/assets/disk-unBeTGDg.js similarity index 96% rename from public/build/assets/disk-4FKXCHfJ.js rename to public/build/assets/disk-unBeTGDg.js index 8707a257..8c54b800 100644 --- a/public/build/assets/disk-4FKXCHfJ.js +++ b/public/build/assets/disk-unBeTGDg.js @@ -1 +1 @@ -import{a4 as l,s as a,a1 as o,u as r}from"./main-B9dpPbRR.js";const g=(k=!1)=>{const f=k?window.pinia.defineStore:l,{global:n}=window.i18n;return f({id:"disk",state:()=>({disks:[],diskDrivers:[],diskConfigData:null,selected_driver:"local",doSpaceDiskConfig:{name:"",selected_driver:"doSpaces",key:"",secret:"",region:"",bucket:"",endpoint:"",root:""},dropBoxDiskConfig:{name:"",selected_driver:"dropbox",token:"",key:"",secret:"",app:""},localDiskConfig:{name:"",selected_driver:"local",root:""},s3DiskConfigData:{name:"",selected_driver:"s3",key:"",secret:"",region:"",bucket:"",root:""}}),getters:{getDiskDrivers:t=>t.diskDrivers},actions:{fetchDiskEnv(t){return new Promise((s,e)=>{a.get(`/api/v1/disks/${t.disk}`).then(i=>{s(i)}).catch(i=>{o(i),e(i)})})},fetchDisks(t){return new Promise((s,e)=>{a.get("/api/v1/disks",{params:t}).then(i=>{this.disks=i.data.data,s(i)}).catch(i=>{o(i),e(i)})})},fetchDiskDrivers(){return new Promise((t,s)=>{a.get("/api/v1/disk/drivers").then(e=>{this.diskConfigData=e.data,this.diskDrivers=e.data.drivers,t(e)}).catch(e=>{o(e),s(e)})})},deleteFileDisk(t){return new Promise((s,e)=>{a.delete(`/api/v1/disks/${t}`).then(i=>{if(i.data.success){let d=this.disks.findIndex(c=>c.id===t);this.disks.splice(d,1),r().showNotification({type:"success",message:n.t("settings.disk.deleted_message")})}s(i)}).catch(i=>{o(i),e(i)})})},updateDisk(t){return new Promise((s,e)=>{a.put(`/api/v1/disks/${t.id}`,t).then(i=>{if(i.data){let d=this.disks.findIndex(c=>c.id===i.data.data);this.disks[d]=t.disks,r().showNotification({type:"success",message:n.t("settings.disk.success_set_default_disk")})}s(i)}).catch(i=>{o(i),e(i)})})},createDisk(t){return new Promise((s,e)=>{a.post("/api/v1/disks",t).then(i=>{i.data&&r().showNotification({type:"success",message:n.t("settings.disk.success_create")}),this.disks.push(i.data),s(i)}).catch(i=>{o(i),e(i)})})}}})()};export{g as u}; +import{a4 as l,s as a,a1 as o,u as r}from"./main-pPEsZPea.js";const g=(k=!1)=>{const f=k?window.pinia.defineStore:l,{global:n}=window.i18n;return f({id:"disk",state:()=>({disks:[],diskDrivers:[],diskConfigData:null,selected_driver:"local",doSpaceDiskConfig:{name:"",selected_driver:"doSpaces",key:"",secret:"",region:"",bucket:"",endpoint:"",root:""},dropBoxDiskConfig:{name:"",selected_driver:"dropbox",token:"",key:"",secret:"",app:""},localDiskConfig:{name:"",selected_driver:"local",root:""},s3DiskConfigData:{name:"",selected_driver:"s3",key:"",secret:"",region:"",bucket:"",root:""}}),getters:{getDiskDrivers:t=>t.diskDrivers},actions:{fetchDiskEnv(t){return new Promise((s,e)=>{a.get(`/api/v1/disks/${t.disk}`).then(i=>{s(i)}).catch(i=>{o(i),e(i)})})},fetchDisks(t){return new Promise((s,e)=>{a.get("/api/v1/disks",{params:t}).then(i=>{this.disks=i.data.data,s(i)}).catch(i=>{o(i),e(i)})})},fetchDiskDrivers(){return new Promise((t,s)=>{a.get("/api/v1/disk/drivers").then(e=>{this.diskConfigData=e.data,this.diskDrivers=e.data.drivers,t(e)}).catch(e=>{o(e),s(e)})})},deleteFileDisk(t){return new Promise((s,e)=>{a.delete(`/api/v1/disks/${t}`).then(i=>{if(i.data.success){let d=this.disks.findIndex(c=>c.id===t);this.disks.splice(d,1),r().showNotification({type:"success",message:n.t("settings.disk.deleted_message")})}s(i)}).catch(i=>{o(i),e(i)})})},updateDisk(t){return new Promise((s,e)=>{a.put(`/api/v1/disks/${t.id}`,t).then(i=>{if(i.data){let d=this.disks.findIndex(c=>c.id===i.data.data);this.disks[d]=t.disks,r().showNotification({type:"success",message:n.t("settings.disk.success_set_default_disk")})}s(i)}).catch(i=>{o(i),e(i)})})},createDisk(t){return new Promise((s,e)=>{a.post("/api/v1/disks",t).then(i=>{i.data&&r().showNotification({type:"success",message:n.t("settings.disk.success_create")}),this.disks.push(i.data),s(i)}).catch(i=>{o(i),e(i)})})}}})()};export{g as u}; diff --git a/public/build/assets/estimate-kOpVdJXW.js b/public/build/assets/estimate-QHup-rch.js similarity index 91% rename from public/build/assets/estimate-kOpVdJXW.js rename to public/build/assets/estimate-QHup-rch.js index 0a18b924..bd949e1a 100644 --- a/public/build/assets/estimate-kOpVdJXW.js +++ b/public/build/assets/estimate-QHup-rch.js @@ -1 +1 @@ -import{s as n,u as h}from"./main-B9dpPbRR.js";import{h as r}from"./auth-6FPSPboo.js";const{defineStore:u}=window.pinia,f=u({id:"customerEstimateStore",state:()=>({estimates:[],totalEstimates:0,selectedViewEstimate:[]}),actions:{fetchEstimate(s,e){return new Promise((i,a)=>{n.get(`/api/v1/${e}/customer/estimates`,{params:s}).then(t=>{this.estimates=t.data.data,this.totalEstimates=t.data.meta.estimateTotalCount,i(t)}).catch(t=>{r(t),a(t)})})},fetchViewEstimate(s,e){return new Promise((i,a)=>{n.get(`/api/v1/${e}/customer/estimates/${s.id}`,{params:s}).then(t=>{this.selectedViewEstimate=t.data.data,i(t)}).catch(t=>{r(t),a(t)})})},searchEstimate(s,e){return new Promise((i,a)=>{n.get(`/api/v1/${e}/customer/estimates`,{params:s}).then(t=>{this.estimates=t.data,i(t)}).catch(t=>{r(t),a(t)})})},acceptEstimate({slug:s,id:e,status:i}){return new Promise((a,t)=>{n.post(`/api/v1/${s}/customer/estimate/${e}/status`,{status:i}).then(o=>{let m=this.estimates.findIndex(c=>c.id===e);this.estimates[m]&&(this.estimates[m].status="ACCEPTED",h(!0).showNotification({type:"success",message:global.t("estimates.marked_as_accepted_message")})),a(o)}).catch(o=>{r(o),t(o)})})},rejectEstimate({slug:s,id:e,status:i}){return new Promise((a,t)=>{n.post(`/api/v1/${s}/customer/estimate/${e}/status`,{status:i}).then(o=>{let m=this.estimates.findIndex(c=>c.id===e);this.estimates[m]&&(this.estimates[m].status="REJECTED",h(!0).showNotification({type:"success",message:global.t("estimates.marked_as_rejected_message")})),a(o)}).catch(o=>{r(o),t(o)})})}}});export{f as u}; +import{s as n,u as h}from"./main-pPEsZPea.js";import{h as r}from"./auth-mYHkZCAB.js";const{defineStore:u}=window.pinia,f=u({id:"customerEstimateStore",state:()=>({estimates:[],totalEstimates:0,selectedViewEstimate:[]}),actions:{fetchEstimate(s,e){return new Promise((i,a)=>{n.get(`/api/v1/${e}/customer/estimates`,{params:s}).then(t=>{this.estimates=t.data.data,this.totalEstimates=t.data.meta.estimateTotalCount,i(t)}).catch(t=>{r(t),a(t)})})},fetchViewEstimate(s,e){return new Promise((i,a)=>{n.get(`/api/v1/${e}/customer/estimates/${s.id}`,{params:s}).then(t=>{this.selectedViewEstimate=t.data.data,i(t)}).catch(t=>{r(t),a(t)})})},searchEstimate(s,e){return new Promise((i,a)=>{n.get(`/api/v1/${e}/customer/estimates`,{params:s}).then(t=>{this.estimates=t.data,i(t)}).catch(t=>{r(t),a(t)})})},acceptEstimate({slug:s,id:e,status:i}){return new Promise((a,t)=>{n.post(`/api/v1/${s}/customer/estimate/${e}/status`,{status:i}).then(o=>{let m=this.estimates.findIndex(c=>c.id===e);this.estimates[m]&&(this.estimates[m].status="ACCEPTED",h(!0).showNotification({type:"success",message:global.t("estimates.marked_as_accepted_message")})),a(o)}).catch(o=>{r(o),t(o)})})},rejectEstimate({slug:s,id:e,status:i}){return new Promise((a,t)=>{n.post(`/api/v1/${s}/customer/estimate/${e}/status`,{status:i}).then(o=>{let m=this.estimates.findIndex(c=>c.id===e);this.estimates[m]&&(this.estimates[m].status="REJECTED",h(!0).showNotification({type:"success",message:global.t("estimates.marked_as_rejected_message")})),a(o)}).catch(o=>{r(o),t(o)})})}}});export{f as u}; diff --git a/public/build/assets/exchange-rate-M4ruO0OO.js b/public/build/assets/exchange-rate-Md-8fXjz.js similarity index 97% rename from public/build/assets/exchange-rate-M4ruO0OO.js rename to public/build/assets/exchange-rate-Md-8fXjz.js index 0213a0fb..6e8fd288 100644 --- a/public/build/assets/exchange-rate-M4ruO0OO.js +++ b/public/build/assets/exchange-rate-Md-8fXjz.js @@ -1 +1 @@ -import{a4 as g,u as v,s as i,a1 as c}from"./main-B9dpPbRR.js";const x=(u=!1)=>{const o=u?window.pinia.defineStore:g,{global:n}=window.i18n,s=v();return o({id:"exchange-rate",state:()=>({supportedCurrencies:[],drivers:[],activeUsedCurrencies:[],providers:[],currencies:null,currentExchangeRate:{id:null,driver:"",key:"",active:!0,currencies:[]},currencyConverter:{type:"",url:""},bulkCurrencies:[]}),getters:{isEdit:r=>!!r.currentExchangeRate.id},actions:{fetchProviders(r){return new Promise((a,t)=>{i.get("/api/v1/exchange-rate-providers",{params:r}).then(e=>{this.providers=e.data.data,a(e)}).catch(e=>{c(e),t(e)})})},fetchDefaultProviders(){return new Promise((r,a)=>{i.get("/api/v1/config?key=exchange_rate_drivers").then(t=>{this.drivers=t.data.exchange_rate_drivers,r(t)}).catch(t=>{c(t),a(t)})})},fetchProvider(r){return new Promise((a,t)=>{i.get(`/api/v1/exchange-rate-providers/${r}`).then(e=>{this.currentExchangeRate=e.data.data,this.currencyConverter=e.data.data.driver_config,a(e)}).catch(e=>{c(e),t(e)})})},addProvider(r){return new Promise((a,t)=>{i.post("/api/v1/exchange-rate-providers",r).then(e=>{s.showNotification({type:"success",message:n.t("settings.exchange_rate.created_message")}),a(e)}).catch(e=>{c(e),t(e)})})},updateProvider(r){return new Promise((a,t)=>{i.put(`/api/v1/exchange-rate-providers/${r.id}`,r).then(e=>{s.showNotification({type:"success",message:n.t("settings.exchange_rate.updated_message")}),a(e)}).catch(e=>{c(e),t(e)})})},deleteExchangeRate(r){return new Promise((a,t)=>{i.delete(`/api/v1/exchange-rate-providers/${r}`).then(e=>{let h=this.drivers.findIndex(d=>d.id===r);this.drivers.splice(h,1),e.data.success?s.showNotification({type:"success",message:n.t("settings.exchange_rate.deleted_message")}):s.showNotification({type:"error",message:n.t("settings.exchange_rate.error")}),a(e)}).catch(e=>{c(e),t(e)})})},fetchCurrencies(r){return new Promise((a,t)=>{i.get("/api/v1/supported-currencies",{params:r}).then(e=>{this.supportedCurrencies=e.data.supportedCurrencies,a(e)}).catch(e=>{c(e),t(e)})})},fetchActiveCurrency(r){return new Promise((a,t)=>{i.get("/api/v1/used-currencies",{params:r}).then(e=>{this.activeUsedCurrencies=e.data.activeUsedCurrencies,a(e)}).catch(e=>{c(e),t(e)})})},fetchBulkCurrencies(){return new Promise((r,a)=>{i.get("/api/v1/currencies/used").then(t=>{this.bulkCurrencies=t.data.currencies.map(e=>(e.exchange_rate=null,e)),r(t)}).catch(t=>{c(t),a(t)})})},updateBulkExchangeRate(r){return new Promise((a,t)=>{i.post("/api/v1/currencies/bulk-update-exchange-rate",r).then(e=>{a(e)}).catch(e=>{c(e),t(e)})})},getCurrentExchangeRate(r){return new Promise((a,t)=>{i.get(`/api/v1/currencies/${r}/exchange-rate`).then(e=>{a(e)}).catch(e=>{t(e)})})},getCurrencyConverterServers(){return new Promise((r,a)=>{i.get("/api/v1/config?key=currency_converter_servers").then(t=>{r(t)}).catch(t=>{c(t),a(t)})})},checkForActiveProvider(r){return new Promise((a,t)=>{i.get(`/api/v1/currencies/${r}/active-provider`).then(e=>{a(e)}).catch(e=>{t(e)})})}}})()};export{x as u}; +import{a4 as g,u as v,s as i,a1 as c}from"./main-pPEsZPea.js";const x=(u=!1)=>{const o=u?window.pinia.defineStore:g,{global:n}=window.i18n,s=v();return o({id:"exchange-rate",state:()=>({supportedCurrencies:[],drivers:[],activeUsedCurrencies:[],providers:[],currencies:null,currentExchangeRate:{id:null,driver:"",key:"",active:!0,currencies:[]},currencyConverter:{type:"",url:""},bulkCurrencies:[]}),getters:{isEdit:r=>!!r.currentExchangeRate.id},actions:{fetchProviders(r){return new Promise((a,t)=>{i.get("/api/v1/exchange-rate-providers",{params:r}).then(e=>{this.providers=e.data.data,a(e)}).catch(e=>{c(e),t(e)})})},fetchDefaultProviders(){return new Promise((r,a)=>{i.get("/api/v1/config?key=exchange_rate_drivers").then(t=>{this.drivers=t.data.exchange_rate_drivers,r(t)}).catch(t=>{c(t),a(t)})})},fetchProvider(r){return new Promise((a,t)=>{i.get(`/api/v1/exchange-rate-providers/${r}`).then(e=>{this.currentExchangeRate=e.data.data,this.currencyConverter=e.data.data.driver_config,a(e)}).catch(e=>{c(e),t(e)})})},addProvider(r){return new Promise((a,t)=>{i.post("/api/v1/exchange-rate-providers",r).then(e=>{s.showNotification({type:"success",message:n.t("settings.exchange_rate.created_message")}),a(e)}).catch(e=>{c(e),t(e)})})},updateProvider(r){return new Promise((a,t)=>{i.put(`/api/v1/exchange-rate-providers/${r.id}`,r).then(e=>{s.showNotification({type:"success",message:n.t("settings.exchange_rate.updated_message")}),a(e)}).catch(e=>{c(e),t(e)})})},deleteExchangeRate(r){return new Promise((a,t)=>{i.delete(`/api/v1/exchange-rate-providers/${r}`).then(e=>{let h=this.drivers.findIndex(d=>d.id===r);this.drivers.splice(h,1),e.data.success?s.showNotification({type:"success",message:n.t("settings.exchange_rate.deleted_message")}):s.showNotification({type:"error",message:n.t("settings.exchange_rate.error")}),a(e)}).catch(e=>{c(e),t(e)})})},fetchCurrencies(r){return new Promise((a,t)=>{i.get("/api/v1/supported-currencies",{params:r}).then(e=>{this.supportedCurrencies=e.data.supportedCurrencies,a(e)}).catch(e=>{c(e),t(e)})})},fetchActiveCurrency(r){return new Promise((a,t)=>{i.get("/api/v1/used-currencies",{params:r}).then(e=>{this.activeUsedCurrencies=e.data.activeUsedCurrencies,a(e)}).catch(e=>{c(e),t(e)})})},fetchBulkCurrencies(){return new Promise((r,a)=>{i.get("/api/v1/currencies/used").then(t=>{this.bulkCurrencies=t.data.currencies.map(e=>(e.exchange_rate=null,e)),r(t)}).catch(t=>{c(t),a(t)})})},updateBulkExchangeRate(r){return new Promise((a,t)=>{i.post("/api/v1/currencies/bulk-update-exchange-rate",r).then(e=>{a(e)}).catch(e=>{c(e),t(e)})})},getCurrentExchangeRate(r){return new Promise((a,t)=>{i.get(`/api/v1/currencies/${r}/exchange-rate`).then(e=>{a(e)}).catch(e=>{t(e)})})},getCurrencyConverterServers(){return new Promise((r,a)=>{i.get("/api/v1/config?key=currency_converter_servers").then(t=>{r(t)}).catch(t=>{c(t),a(t)})})},checkForActiveProvider(r){return new Promise((a,t)=>{i.get(`/api/v1/currencies/${r}/active-provider`).then(e=>{a(e)}).catch(e=>{t(e)})})}}})()};export{x as u}; diff --git a/public/build/assets/expense-DZq_Zbqb.js b/public/build/assets/expense-QlFyT7e_.js similarity index 96% rename from public/build/assets/expense-DZq_Zbqb.js rename to public/build/assets/expense-QlFyT7e_.js index d50a043b..2a7798ce 100644 --- a/public/build/assets/expense-DZq_Zbqb.js +++ b/public/build/assets/expense-QlFyT7e_.js @@ -1 +1 @@ -import{ab as E,a4 as _,s as c,a1 as p,aD as h,u as o}from"./main-B9dpPbRR.js";const r={expense_category_id:null,expense_date:E().format("YYYY-MM-DD"),amount:100,notes:"",attachment_receipt:null,customer_id:"",currency_id:"",payment_method_id:"",receiptFiles:[],customFields:[],fields:[],in_use:!1,selectedCurrency:null},w=(x=!1)=>{const m=x?window.pinia.defineStore:_,{global:d}=window.i18n;return m({id:"expense",state:()=>({expenses:[],totalExpenses:0,selectAllField:!1,selectedExpenses:[],paymentModes:[],showExchangeRate:!1,currentExpense:{...r}}),getters:{getCurrentExpense:t=>t.currentExpense,getSelectedExpenses:t=>t.selectedExpenses},actions:{resetCurrentExpenseData(){this.currentExpense={...r}},fetchExpenses(t){return new Promise((s,a)=>{c.get("/api/v1/expenses",{params:t}).then(e=>{this.expenses=e.data.data,this.totalExpenses=e.data.meta.expense_total_count,s(e)}).catch(e=>{p(e),a(e)})})},fetchExpense(t){return new Promise((s,a)=>{c.get(`/api/v1/expenses/${t}`).then(e=>{e.data&&(Object.assign(this.currentExpense,e.data.data),this.currentExpense.selectedCurrency=e.data.data.currency,this.currentExpense.attachment_receipt=null,e.data.data.attachment_receipt_url?h.isImageFile(e.data.data.attachment_receipt_meta.mime_type)?this.currentExpense.receiptFiles=[{image:`/reports/expenses/${t}/receipt?${e.data.data.attachment_receipt_meta.uuid}`}]:this.currentExpense.receiptFiles=[{type:"document",name:e.data.data.attachment_receipt_meta.file_name}]:this.currentExpense.receiptFiles=[]),s(e)}).catch(e=>{p(e),a(e)})})},addExpense(t){const s=h.toFormData(t);return new Promise((a,e)=>{c.post("/api/v1/expenses",s).then(n=>{this.expenses.push(n.data),o().showNotification({type:"success",message:d.t("expenses.created_message")}),a(n)}).catch(n=>{p(n),e(n)})})},updateExpense({id:t,data:s,isAttachmentReceiptRemoved:a}){const e=o(),n=h.toFormData(s);return n.append("_method","PUT"),n.append("is_attachment_receipt_removed",a),new Promise(i=>{c.post(`/api/v1/expenses/${t}`,n).then(l=>{let u=this.expenses.findIndex(f=>f.id===l.data.id);this.expenses[u]=s.expense,e.showNotification({type:"success",message:d.t("expenses.updated_message")}),i(l)})}).catch(i=>{p(i),reject(i)})},setSelectAllState(t){this.selectAllField=t},selectExpense(t){this.selectedExpenses=t,this.selectedExpenses.length===this.expenses.length?this.selectAllField=!0:this.selectAllField=!1},selectAllExpenses(t){if(this.selectedExpenses.length===this.expenses.length)this.selectedExpenses=[],this.selectAllField=!1;else{let s=this.expenses.map(a=>a.id);this.selectedExpenses=s,this.selectAllField=!0}},deleteExpense(t){const s=o();return new Promise((a,e)=>{c.post("/api/v1/expenses/delete",t).then(n=>{let i=this.expenses.findIndex(l=>l.id===t);this.expenses.splice(i,1),s.showNotification({type:"success",message:d.tc("expenses.deleted_message",1)}),a(n)}).catch(n=>{p(n),e(n)})})},deleteMultipleExpenses(){const t=o();return new Promise((s,a)=>{c.post("/api/v1/expenses/delete",{ids:this.selectedExpenses}).then(e=>{this.selectedExpenses.forEach(n=>{let i=this.expenses.findIndex(l=>l.id===n.id);this.expenses.splice(i,1)}),t.showNotification({type:"success",message:d.tc("expenses.deleted_message",2)}),s(e)}).catch(e=>{p(e),a(e)})})},fetchPaymentModes(t){return new Promise((s,a)=>{c.get("/api/v1/payment-methods",{params:t}).then(e=>{this.paymentModes=e.data.data,s(e)}).catch(e=>{p(e),a(e)})})}}})()};export{w as u}; +import{ab as E,a4 as _,s as c,a1 as p,aG as h,u as o}from"./main-pPEsZPea.js";const r={expense_category_id:null,expense_date:E().format("YYYY-MM-DD"),amount:100,notes:"",attachment_receipt:null,customer_id:"",currency_id:"",payment_method_id:"",receiptFiles:[],customFields:[],fields:[],in_use:!1,selectedCurrency:null},w=(x=!1)=>{const m=x?window.pinia.defineStore:_,{global:d}=window.i18n;return m({id:"expense",state:()=>({expenses:[],totalExpenses:0,selectAllField:!1,selectedExpenses:[],paymentModes:[],showExchangeRate:!1,currentExpense:{...r}}),getters:{getCurrentExpense:t=>t.currentExpense,getSelectedExpenses:t=>t.selectedExpenses},actions:{resetCurrentExpenseData(){this.currentExpense={...r}},fetchExpenses(t){return new Promise((s,a)=>{c.get("/api/v1/expenses",{params:t}).then(e=>{this.expenses=e.data.data,this.totalExpenses=e.data.meta.expense_total_count,s(e)}).catch(e=>{p(e),a(e)})})},fetchExpense(t){return new Promise((s,a)=>{c.get(`/api/v1/expenses/${t}`).then(e=>{e.data&&(Object.assign(this.currentExpense,e.data.data),this.currentExpense.selectedCurrency=e.data.data.currency,this.currentExpense.attachment_receipt=null,e.data.data.attachment_receipt_url?h.isImageFile(e.data.data.attachment_receipt_meta.mime_type)?this.currentExpense.receiptFiles=[{image:`/reports/expenses/${t}/receipt?${e.data.data.attachment_receipt_meta.uuid}`}]:this.currentExpense.receiptFiles=[{type:"document",name:e.data.data.attachment_receipt_meta.file_name}]:this.currentExpense.receiptFiles=[]),s(e)}).catch(e=>{p(e),a(e)})})},addExpense(t){const s=h.toFormData(t);return new Promise((a,e)=>{c.post("/api/v1/expenses",s).then(n=>{this.expenses.push(n.data),o().showNotification({type:"success",message:d.t("expenses.created_message")}),a(n)}).catch(n=>{p(n),e(n)})})},updateExpense({id:t,data:s,isAttachmentReceiptRemoved:a}){const e=o(),n=h.toFormData(s);return n.append("_method","PUT"),n.append("is_attachment_receipt_removed",a),new Promise(i=>{c.post(`/api/v1/expenses/${t}`,n).then(l=>{let u=this.expenses.findIndex(f=>f.id===l.data.id);this.expenses[u]=s.expense,e.showNotification({type:"success",message:d.t("expenses.updated_message")}),i(l)})}).catch(i=>{p(i),reject(i)})},setSelectAllState(t){this.selectAllField=t},selectExpense(t){this.selectedExpenses=t,this.selectedExpenses.length===this.expenses.length?this.selectAllField=!0:this.selectAllField=!1},selectAllExpenses(t){if(this.selectedExpenses.length===this.expenses.length)this.selectedExpenses=[],this.selectAllField=!1;else{let s=this.expenses.map(a=>a.id);this.selectedExpenses=s,this.selectAllField=!0}},deleteExpense(t){const s=o();return new Promise((a,e)=>{c.post("/api/v1/expenses/delete",t).then(n=>{let i=this.expenses.findIndex(l=>l.id===t);this.expenses.splice(i,1),s.showNotification({type:"success",message:d.tc("expenses.deleted_message",1)}),a(n)}).catch(n=>{p(n),e(n)})})},deleteMultipleExpenses(){const t=o();return new Promise((s,a)=>{c.post("/api/v1/expenses/delete",{ids:this.selectedExpenses}).then(e=>{this.selectedExpenses.forEach(n=>{let i=this.expenses.findIndex(l=>l.id===n.id);this.expenses.splice(i,1)}),t.showNotification({type:"success",message:d.tc("expenses.deleted_message",2)}),s(e)}).catch(e=>{p(e),a(e)})})},fetchPaymentModes(t){return new Promise((s,a)=>{c.get("/api/v1/payment-methods",{params:t}).then(e=>{this.paymentModes=e.data.data,s(e)}).catch(e=>{p(e),a(e)})})}}})()};export{w as u}; diff --git a/public/build/assets/global-1F4OAoew.js b/public/build/assets/global-s5lx2XuM.js similarity index 92% rename from public/build/assets/global-1F4OAoew.js rename to public/build/assets/global-s5lx2XuM.js index 1e3ddd17..65470316 100644 --- a/public/build/assets/global-1F4OAoew.js +++ b/public/build/assets/global-s5lx2XuM.js @@ -1 +1 @@ -import{h as i}from"./auth-6FPSPboo.js";import{s as r,u as l}from"./main-B9dpPbRR.js";const u={name:null,phone:null,address_street_1:null,address_street_2:null,city:null,state:null,country_id:null,zip:null,type:null},{defineStore:d}=window.pinia,m=d({id:"customerUserStore",state:()=>({customers:[],userForm:{avatar:null,name:"",email:"",password:"",company:"",confirm_password:"",billing:{...u},shipping:{...u}}}),actions:{copyAddress(){this.userForm.shipping={...this.userForm.billing,type:"shipping"}},fetchCurrentUser(){const e=c();return new Promise((o,t)=>{r.get(`/api/v1/${e.companySlug}/customer/me`).then(s=>{Object.assign(this.userForm,s.data.data),o(s)}).catch(s=>{i(s),t(s)})})},updateCurrentUser({data:e,message:o}){const t=c();return new Promise((s,a)=>{r.post(`/api/v1/${t.companySlug}/customer/profile`,e).then(n=>{this.userForm=n.data.data,t.currentUser=n.data.data,s(n),o&&l(!0).showNotification({type:"success",message:o})}).catch(n=>{i(n),a(n)})})}}}),{defineStore:h}=window.pinia,c=h({id:"CustomerPortalGlobalStore",state:()=>({languages:[],currency:null,isAppLoaded:!1,countries:[],getDashboardDataLoaded:!1,currentUser:null,companySlug:"",mainMenu:null,enabledModules:[]}),actions:{bootstrap(e){this.companySlug=e;const o=m();return new Promise((t,s)=>{r.get(`/api/v1/${e}/customer/bootstrap`).then(a=>{this.currentUser=a.data.data,this.mainMenu=a.data.meta.menu,this.currency=a.data.data.currency,this.enabledModules=a.data.meta.modules,Object.assign(o.userForm,a.data.data),window.i18n.locale=a.data.default_language,this.isAppLoaded=!0,t(a)}).catch(a=>{i(a),s(a)})})},fetchCountries(){return new Promise((e,o)=>{this.countries.length?e(this.countries):r.get(`/api/v1/${this.companySlug}/customer/countries`).then(t=>{this.countries=t.data.data,e(t)}).catch(t=>{i(t),o(t)})})}}});export{m as a,c as u}; +import{h as i}from"./auth-mYHkZCAB.js";import{s as r,u as l}from"./main-pPEsZPea.js";const u={name:null,phone:null,address_street_1:null,address_street_2:null,city:null,state:null,country_id:null,zip:null,type:null},{defineStore:d}=window.pinia,m=d({id:"customerUserStore",state:()=>({customers:[],userForm:{avatar:null,name:"",email:"",password:"",company:"",confirm_password:"",billing:{...u},shipping:{...u}}}),actions:{copyAddress(){this.userForm.shipping={...this.userForm.billing,type:"shipping"}},fetchCurrentUser(){const e=c();return new Promise((o,t)=>{r.get(`/api/v1/${e.companySlug}/customer/me`).then(s=>{Object.assign(this.userForm,s.data.data),o(s)}).catch(s=>{i(s),t(s)})})},updateCurrentUser({data:e,message:o}){const t=c();return new Promise((s,a)=>{r.post(`/api/v1/${t.companySlug}/customer/profile`,e).then(n=>{this.userForm=n.data.data,t.currentUser=n.data.data,s(n),o&&l(!0).showNotification({type:"success",message:o})}).catch(n=>{i(n),a(n)})})}}}),{defineStore:h}=window.pinia,c=h({id:"CustomerPortalGlobalStore",state:()=>({languages:[],currency:null,isAppLoaded:!1,countries:[],getDashboardDataLoaded:!1,currentUser:null,companySlug:"",mainMenu:null,enabledModules:[]}),actions:{bootstrap(e){this.companySlug=e;const o=m();return new Promise((t,s)=>{r.get(`/api/v1/${e}/customer/bootstrap`).then(a=>{this.currentUser=a.data.data,this.mainMenu=a.data.meta.menu,this.currency=a.data.data.currency,this.enabledModules=a.data.meta.modules,Object.assign(o.userForm,a.data.data),window.i18n.locale=a.data.default_language,this.isAppLoaded=!0,t(a)}).catch(a=>{i(a),s(a)})})},fetchCountries(){return new Promise((e,o)=>{this.countries.length?e(this.countries):r.get(`/api/v1/${this.companySlug}/customer/countries`).then(t=>{this.countries=t.data.data,e(t)}).catch(t=>{i(t),o(t)})})}}});export{m as a,c as u}; diff --git a/public/build/assets/index-qMx1f7gr.js b/public/build/assets/index-M4eah3LL.js similarity index 80% rename from public/build/assets/index-qMx1f7gr.js rename to public/build/assets/index-M4eah3LL.js index de3c3f62..eb9146ca 100644 --- a/public/build/assets/index-qMx1f7gr.js +++ b/public/build/assets/index-M4eah3LL.js @@ -1 +1 @@ -import{j as r,aF as s}from"./main-B9dpPbRR.js";var d={name:"ValidateEach",props:{rules:{type:Object,required:!0},state:{type:Object,required:!0},options:{type:Object,default:()=>({})},index:{type:Number,default:0}},setup(e,t){let{slots:a}=t;const u=r(e.rules,s(e,"state"),e.options);return()=>a.default({v:u.value})}};export{d as V}; +import{j as r,aI as s}from"./main-pPEsZPea.js";var d={name:"ValidateEach",props:{rules:{type:Object,required:!0},state:{type:Object,required:!0},options:{type:Object,default:()=>({})},index:{type:Number,default:0}},setup(e,t){let{slots:a}=t;const u=r(e.rules,s(e,"state"),e.options);return()=>a.default({v:u.value})}};export{d as V}; diff --git a/public/build/assets/invoice-X3Pf-vKp.js b/public/build/assets/invoice-raGfV3XT.js similarity index 83% rename from public/build/assets/invoice-X3Pf-vKp.js rename to public/build/assets/invoice-raGfV3XT.js index bc1af228..01a47c17 100644 --- a/public/build/assets/invoice-X3Pf-vKp.js +++ b/public/build/assets/invoice-raGfV3XT.js @@ -1 +1 @@ -import{h as a}from"./auth-6FPSPboo.js";import{s as n}from"./main-B9dpPbRR.js";const{defineStore:s}=window.pinia,r=s({id:"customerInvoiceStore",state:()=>({totalInvoices:0,invoices:[],selectedViewInvoice:[]}),actions:{fetchInvoices(e,i){return new Promise((o,c)=>{n.get(`/api/v1/${i}/customer/invoices`,{params:e}).then(t=>{this.invoices=t.data.data,this.totalInvoices=t.data.meta.invoiceTotalCount,o(t)}).catch(t=>{a(t),c(t)})})},fetchViewInvoice(e,i){return new Promise((o,c)=>{n.get(`/api/v1/${i}/customer/invoices/${e.id}`,{params:e}).then(t=>{this.selectedViewInvoice=t.data.data,o(t)}).catch(t=>{a(t),c(t)})})},searchInvoice(e,i){return new Promise((o,c)=>{n.get(`/api/v1/${i}/customer/invoices`,{params:e}).then(t=>{this.invoices=t.data,o(t)}).catch(t=>{a(t),c(t)})})}}});export{r as u}; +import{h as a}from"./auth-mYHkZCAB.js";import{s as n}from"./main-pPEsZPea.js";const{defineStore:s}=window.pinia,r=s({id:"customerInvoiceStore",state:()=>({totalInvoices:0,invoices:[],selectedViewInvoice:[]}),actions:{fetchInvoices(e,i){return new Promise((o,c)=>{n.get(`/api/v1/${i}/customer/invoices`,{params:e}).then(t=>{this.invoices=t.data.data,this.totalInvoices=t.data.meta.invoiceTotalCount,o(t)}).catch(t=>{a(t),c(t)})})},fetchViewInvoice(e,i){return new Promise((o,c)=>{n.get(`/api/v1/${i}/customer/invoices/${e.id}`,{params:e}).then(t=>{this.selectedViewInvoice=t.data.data,o(t)}).catch(t=>{a(t),c(t)})})},searchInvoice(e,i){return new Promise((o,c)=>{n.get(`/api/v1/${i}/customer/invoices`,{params:e}).then(t=>{this.invoices=t.data,o(t)}).catch(t=>{a(t),c(t)})})}}});export{r as u}; diff --git a/public/build/assets/mail-driver-L7_iQECX.js b/public/build/assets/mail-driver-SNHZXvKB.js similarity index 96% rename from public/build/assets/mail-driver-L7_iQECX.js rename to public/build/assets/mail-driver-SNHZXvKB.js index 76042db6..f68a191b 100644 --- a/public/build/assets/mail-driver-L7_iQECX.js +++ b/public/build/assets/mail-driver-SNHZXvKB.js @@ -1 +1 @@ -import{a4 as _,s as r,a1 as m,u as n}from"./main-B9dpPbRR.js";const d=(l=!1)=>{const c=l?window.pinia.defineStore:_,{global:o}=window.i18n;return c({id:"mail-driver",state:()=>({mailConfigData:null,mail_driver:"smtp",mail_drivers:[],basicMailConfig:{mail_driver:"",mail_host:"",from_mail:"",from_name:""},mailgunConfig:{mail_driver:"",mail_mailgun_domain:"",mail_mailgun_secret:"",mail_mailgun_endpoint:"",from_mail:"",from_name:""},sesConfig:{mail_driver:"",mail_host:"",mail_port:null,mail_ses_key:"",mail_ses_secret:"",mail_encryption:"tls",from_mail:"",from_name:""},smtpConfig:{mail_driver:"",mail_host:"",mail_port:null,mail_username:"",mail_password:"",mail_encryption:"tls",from_mail:"",from_name:""}}),actions:{fetchMailDrivers(){return new Promise((t,e)=>{r.get("/api/v1/mail/drivers").then(i=>{i.data&&(this.mail_drivers=i.data),t(i)}).catch(i=>{m(i),e(i)})})},fetchMailConfig(){return new Promise((t,e)=>{r.get("/api/v1/mail/config").then(i=>{i.data&&(this.mailConfigData=i.data,this.mail_driver=i.data.mail_driver),t(i)}).catch(i=>{m(i),e(i)})})},updateMailConfig(t){return new Promise((e,i)=>{r.post("/api/v1/mail/config",t).then(a=>{const s=n();a.data.success?s.showNotification({type:"success",message:o.t("wizard.success."+a.data.success)}):s.showNotification({type:"error",message:o.t("wizard.errors."+a.data.error)}),e(a)}).catch(a=>{m(a),i(a)})})},sendTestMail(t){return new Promise((e,i)=>{r.post("/api/v1/mail/test",t).then(a=>{const s=n();a.data.success?s.showNotification({type:"success",message:o.t("general.send_mail_successfully")}):s.showNotification({type:"error",message:o.t("validation.something_went_wrong")}),e(a)}).catch(a=>{m(a),i(a)})})}}})()};export{d as u}; +import{a4 as _,s as r,a1 as m,u as n}from"./main-pPEsZPea.js";const d=(l=!1)=>{const c=l?window.pinia.defineStore:_,{global:o}=window.i18n;return c({id:"mail-driver",state:()=>({mailConfigData:null,mail_driver:"smtp",mail_drivers:[],basicMailConfig:{mail_driver:"",mail_host:"",from_mail:"",from_name:""},mailgunConfig:{mail_driver:"",mail_mailgun_domain:"",mail_mailgun_secret:"",mail_mailgun_endpoint:"",from_mail:"",from_name:""},sesConfig:{mail_driver:"",mail_host:"",mail_port:null,mail_ses_key:"",mail_ses_secret:"",mail_encryption:"tls",from_mail:"",from_name:""},smtpConfig:{mail_driver:"",mail_host:"",mail_port:null,mail_username:"",mail_password:"",mail_encryption:"tls",from_mail:"",from_name:""}}),actions:{fetchMailDrivers(){return new Promise((t,e)=>{r.get("/api/v1/mail/drivers").then(i=>{i.data&&(this.mail_drivers=i.data),t(i)}).catch(i=>{m(i),e(i)})})},fetchMailConfig(){return new Promise((t,e)=>{r.get("/api/v1/mail/config").then(i=>{i.data&&(this.mailConfigData=i.data,this.mail_driver=i.data.mail_driver),t(i)}).catch(i=>{m(i),e(i)})})},updateMailConfig(t){return new Promise((e,i)=>{r.post("/api/v1/mail/config",t).then(a=>{const s=n();a.data.success?s.showNotification({type:"success",message:o.t("wizard.success."+a.data.success)}):s.showNotification({type:"error",message:o.t("wizard.errors."+a.data.error)}),e(a)}).catch(a=>{m(a),i(a)})})},sendTestMail(t){return new Promise((e,i)=>{r.post("/api/v1/mail/test",t).then(a=>{const s=n();a.data.success?s.showNotification({type:"success",message:o.t("general.send_mail_successfully")}):s.showNotification({type:"error",message:o.t("validation.something_went_wrong")}),e(a)}).catch(a=>{m(a),i(a)})})}}})()};export{d as u}; diff --git a/public/build/assets/main-B9dpPbRR.js b/public/build/assets/main-pPEsZPea.js similarity index 57% rename from public/build/assets/main-B9dpPbRR.js rename to public/build/assets/main-pPEsZPea.js index 12e8c253..15b773be 100644 --- a/public/build/assets/main-B9dpPbRR.js +++ b/public/build/assets/main-pPEsZPea.js @@ -1,128 +1,128 @@ -var NO=Object.defineProperty;var IO=(e,t,a)=>t in e?NO(e,t,{enumerable:!0,configurable:!0,writable:!0,value:a}):e[t]=a;var Qu=(e,t,a)=>(IO(e,typeof t!="symbol"?t+"":t,a),a);function FO(e,t){for(var a=0;an[i]})}}}return Object.freeze(Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}))}const RO="modulepreload",OO=function(e){return"/build/"+e},i0={},Ue=function(t,a,n){let i=Promise.resolve();if(a&&a.length>0){const o=document.getElementsByTagName("link");i=Promise.all(a.map(s=>{if(s=OO(s),s in i0)return;i0[s]=!0;const l=s.endsWith(".css"),d=l?'[rel="stylesheet"]':"";if(!!n)for(let f=o.length-1;f>=0;f--){const p=o[f];if(p.href===s&&(!l||p.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${s}"]${d}`))return;const _=document.createElement("link");if(_.rel=l?"stylesheet":RO,l||(_.as="script",_.crossOrigin=""),_.href=s,document.head.appendChild(_),l)return new Promise((f,p)=>{_.addEventListener("load",f),_.addEventListener("error",()=>p(new Error(`Unable to preload CSS for ${s}`)))})}))}return i.then(()=>t()).catch(o=>{const s=new Event("vite:preloadError",{cancelable:!0});if(s.payload=o,window.dispatchEvent(s),!s.defaultPrevented)throw o})};var Oc=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function fm(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function wv(e){if(e.__esModule)return e;var t=e.default;if(typeof t=="function"){var a=function n(){return this instanceof n?Reflect.construct(t,arguments,this.constructor):t.apply(this,arguments)};a.prototype=t.prototype}else a={};return Object.defineProperty(a,"__esModule",{value:!0}),Object.keys(e).forEach(function(n){var i=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(a,n,i.get?i:{enumerable:!0,get:function(){return e[n]}})}),a}var Dv={exports:{}},BS=function(t,a){return function(){for(var i=new Array(arguments.length),o=0;o"u"}function $O(e){return e!==null&&!O_(e)&&e.constructor!==null&&!O_(e.constructor)&&typeof e.constructor.isBuffer=="function"&&e.constructor.isBuffer(e)}var US=qr("ArrayBuffer");function LO(e){var t;return typeof ArrayBuffer<"u"&&ArrayBuffer.isView?t=ArrayBuffer.isView(e):t=e&&e.buffer&&US(e.buffer),t}function BO(e){return typeof e=="string"}function UO(e){return typeof e=="number"}function VS(e){return e!==null&&typeof e=="object"}function D_(e){if(Sv(e)!=="object")return!1;var t=Object.getPrototypeOf(e);return t===null||t===Object.prototype}var VO=qr("Date"),qO=qr("File"),WO=qr("Blob"),HO=qr("FileList");function Ev(e){return xv.call(e)==="[object Function]"}function KO(e){return VS(e)&&Ev(e.pipe)}function YO(e){var t="[object FormData]";return e&&(typeof FormData=="function"&&e instanceof FormData||xv.call(e)===t||Ev(e.toString)&&e.toString()===t)}var ZO=qr("URLSearchParams");function GO(e){return e.trim?e.trim():e.replace(/^\s+|\s+$/g,"")}function QO(){return typeof navigator<"u"&&(navigator.product==="ReactNative"||navigator.product==="NativeScript"||navigator.product==="NS")?!1:typeof window<"u"&&typeof document<"u"}function zv(e,t){if(!(e===null||typeof e>"u"))if(typeof e!="object"&&(e=[e]),Pv(e))for(var a=0,n=e.length;a0;)o=n[i],s[o]||(t[o]=e[o],s[o]=!0);e=Object.getPrototypeOf(e)}while(e&&(!a||a(e,t))&&e!==Object.prototype);return t}function aM(e,t,a){e=String(e),(a===void 0||a>e.length)&&(a=e.length),a-=t.length;var n=e.indexOf(t,a);return n!==-1&&n===a}function nM(e){if(!e)return null;var t=e.length;if(O_(t))return null;for(var a=new Array(t);t-- >0;)a[t]=e[t];return a}var iM=function(e){return function(t){return e&&t instanceof e}}(typeof Uint8Array<"u"&&Object.getPrototypeOf(Uint8Array)),an={isArray:Pv,isArrayBuffer:US,isBuffer:$O,isFormData:YO,isArrayBufferView:LO,isString:BO,isNumber:UO,isObject:VS,isPlainObject:D_,isUndefined:O_,isDate:VO,isFile:qO,isBlob:WO,isFunction:Ev,isStream:KO,isURLSearchParams:ZO,isStandardBrowserEnv:QO,forEach:zv,merge:Zh,extend:JO,trim:GO,stripBOM:XO,inherits:eM,toFlatObject:tM,kindOf:Sv,kindOfTest:qr,endsWith:aM,toArray:nM,isTypedArray:iM,isFileList:HO},yl=an;function o0(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}var qS=function(t,a,n){if(!a)return t;var i;if(n)i=n(a);else if(yl.isURLSearchParams(a))i=a.toString();else{var o=[];yl.forEach(a,function(d,u){d===null||typeof d>"u"||(yl.isArray(d)?u=u+"[]":d=[d],yl.forEach(d,function(f){yl.isDate(f)?f=f.toISOString():yl.isObject(f)&&(f=JSON.stringify(f)),o.push(o0(u)+"="+o0(f))}))}),i=o.join("&")}if(i){var s=t.indexOf("#");s!==-1&&(t=t.slice(0,s)),t+=(t.indexOf("?")===-1?"?":"&")+i}return t},oM=an;function hm(){this.handlers=[]}hm.prototype.use=function(t,a,n){return this.handlers.push({fulfilled:t,rejected:a,synchronous:n?n.synchronous:!1,runWhen:n?n.runWhen:null}),this.handlers.length-1};hm.prototype.eject=function(t){this.handlers[t]&&(this.handlers[t]=null)};hm.prototype.forEach=function(t){oM.forEach(this.handlers,function(n){n!==null&&t(n)})};var sM=hm,rM=an,lM=function(t,a){rM.forEach(t,function(i,o){o!==a&&o.toUpperCase()===a.toUpperCase()&&(t[a]=i,delete t[o])})},WS=an;function Wl(e,t,a,n,i){Error.call(this),this.message=e,this.name="AxiosError",t&&(this.code=t),a&&(this.config=a),n&&(this.request=n),i&&(this.response=i)}WS.inherits(Wl,Error,{toJSON:function(){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:this.config,code:this.code,status:this.response&&this.response.status?this.response.status:null}}});var HS=Wl.prototype,KS={};["ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","ECONNABORTED","ETIMEDOUT","ERR_NETWORK","ERR_FR_TOO_MANY_REDIRECTS","ERR_DEPRECATED","ERR_BAD_RESPONSE","ERR_BAD_REQUEST","ERR_CANCELED"].forEach(function(e){KS[e]={value:e}});Object.defineProperties(Wl,KS);Object.defineProperty(HS,"isAxiosError",{value:!0});Wl.from=function(e,t,a,n,i,o){var s=Object.create(HS);return WS.toFlatObject(e,s,function(d){return d!==Error.prototype}),Wl.call(s,e.message,t,a,n,i),s.name=e.name,o&&Object.assign(s,o),s};var cc=Wl,YS={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},qi=an;function cM(e,t){t=t||new FormData;var a=[];function n(o){return o===null?"":qi.isDate(o)?o.toISOString():qi.isArrayBuffer(o)||qi.isTypedArray(o)?typeof Blob=="function"?new Blob([o]):Buffer.from(o):o}function i(o,s){if(qi.isPlainObject(o)||qi.isArray(o)){if(a.indexOf(o)!==-1)throw Error("Circular reference detected in "+s);a.push(o),qi.forEach(o,function(d,u){if(!qi.isUndefined(d)){var _=s?s+"."+u:u,f;if(d&&!s&&typeof d=="object"){if(qi.endsWith(u,"{}"))d=JSON.stringify(d);else if(qi.endsWith(u,"[]")&&(f=qi.toArray(d))){f.forEach(function(p){!qi.isUndefined(p)&&t.append(_,n(p))});return}}i(d,_)}}),a.pop()}else t.append(s,n(o))}return i(e),t}var ZS=cM,Gf,s0;function dM(){if(s0)return Gf;s0=1;var e=cc;return Gf=function(a,n,i){var o=i.config.validateStatus;!i.status||!o||o(i.status)?a(i):n(new e("Request failed with status code "+i.status,[e.ERR_BAD_REQUEST,e.ERR_BAD_RESPONSE][Math.floor(i.status/100)-4],i.config,i.request,i))},Gf}var Qf,r0;function uM(){if(r0)return Qf;r0=1;var e=an;return Qf=e.isStandardBrowserEnv()?function(){return{write:function(n,i,o,s,l,d){var u=[];u.push(n+"="+encodeURIComponent(i)),e.isNumber(o)&&u.push("expires="+new Date(o).toGMTString()),e.isString(s)&&u.push("path="+s),e.isString(l)&&u.push("domain="+l),d===!0&&u.push("secure"),document.cookie=u.join("; ")},read:function(n){var i=document.cookie.match(new RegExp("(^|;\\s*)("+n+")=([^;]*)"));return i?decodeURIComponent(i[3]):null},remove:function(n){this.write(n,"",Date.now()-864e5)}}}():function(){return{write:function(){},read:function(){return null},remove:function(){}}}(),Qf}var _M=function(t){return/^([a-z][a-z\d+\-.]*:)?\/\//i.test(t)},mM=function(t,a){return a?t.replace(/\/+$/,"")+"/"+a.replace(/^\/+/,""):t},pM=_M,fM=mM,GS=function(t,a){return t&&!pM(a)?fM(t,a):a},Jf,l0;function hM(){if(l0)return Jf;l0=1;var e=an,t=["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"];return Jf=function(n){var i={},o,s,l;return n&&e.forEach(n.split(` -`),function(u){if(l=u.indexOf(":"),o=e.trim(u.substr(0,l)).toLowerCase(),s=e.trim(u.substr(l+1)),o){if(i[o]&&t.indexOf(o)>=0)return;o==="set-cookie"?i[o]=(i[o]?i[o]:[]).concat([s]):i[o]=i[o]?i[o]+", "+s:s}}),i},Jf}var Xf,c0;function gM(){if(c0)return Xf;c0=1;var e=an;return Xf=e.isStandardBrowserEnv()?function(){var a=/(msie|trident)/i.test(navigator.userAgent),n=document.createElement("a"),i;function o(s){var l=s;return a&&(n.setAttribute("href",l),l=n.href),n.setAttribute("href",l),{href:n.href,protocol:n.protocol?n.protocol.replace(/:$/,""):"",host:n.host,search:n.search?n.search.replace(/^\?/,""):"",hash:n.hash?n.hash.replace(/^#/,""):"",hostname:n.hostname,port:n.port,pathname:n.pathname.charAt(0)==="/"?n.pathname:"/"+n.pathname}}return i=o(window.location.href),function(l){var d=e.isString(l)?o(l):l;return d.protocol===i.protocol&&d.host===i.host}}():function(){return function(){return!0}}(),Xf}var eh,d0;function gm(){if(d0)return eh;d0=1;var e=cc,t=an;function a(n){e.call(this,n??"canceled",e.ERR_CANCELED),this.name="CanceledError"}return t.inherits(a,e,{__CANCEL__:!0}),eh=a,eh}var th,u0;function vM(){return u0||(u0=1,th=function(t){var a=/^([-+\w]{1,25})(:?\/\/|:)/.exec(t);return a&&a[1]||""}),th}var ah,_0;function m0(){if(_0)return ah;_0=1;var e=an,t=dM(),a=uM(),n=qS,i=GS,o=hM(),s=gM(),l=YS,d=cc,u=gm(),_=vM();return ah=function(p){return new Promise(function(g,y){var k=p.data,b=p.headers,P=p.responseType,w;function x(){p.cancelToken&&p.cancelToken.unsubscribe(w),p.signal&&p.signal.removeEventListener("abort",w)}e.isFormData(k)&&e.isStandardBrowserEnv()&&delete b["Content-Type"];var E=new XMLHttpRequest;if(p.auth){var C=p.auth.username||"",j=p.auth.password?unescape(encodeURIComponent(p.auth.password)):"";b.Authorization="Basic "+btoa(C+":"+j)}var A=i(p.baseURL,p.url);E.open(p.method.toUpperCase(),n(A,p.params,p.paramsSerializer),!0),E.timeout=p.timeout;function U(){if(E){var J="getAllResponseHeaders"in E?o(E.getAllResponseHeaders()):null,ie=!P||P==="text"||P==="json"?E.responseText:E.response,Te={data:ie,status:E.status,statusText:E.statusText,headers:J,config:p,request:E};t(function(ce){g(ce),x()},function(ce){y(ce),x()},Te),E=null}}if("onloadend"in E?E.onloadend=U:E.onreadystatechange=function(){!E||E.readyState!==4||E.status===0&&!(E.responseURL&&E.responseURL.indexOf("file:")===0)||setTimeout(U)},E.onabort=function(){E&&(y(new d("Request aborted",d.ECONNABORTED,p,E)),E=null)},E.onerror=function(){y(new d("Network Error",d.ERR_NETWORK,p,E,E)),E=null},E.ontimeout=function(){var ie=p.timeout?"timeout of "+p.timeout+"ms exceeded":"timeout exceeded",Te=p.transitional||l;p.timeoutErrorMessage&&(ie=p.timeoutErrorMessage),y(new d(ie,Te.clarifyTimeoutError?d.ETIMEDOUT:d.ECONNABORTED,p,E)),E=null},e.isStandardBrowserEnv()){var V=(p.withCredentials||s(A))&&p.xsrfCookieName?a.read(p.xsrfCookieName):void 0;V&&(b[p.xsrfHeaderName]=V)}"setRequestHeader"in E&&e.forEach(b,function(ie,Te){typeof k>"u"&&Te.toLowerCase()==="content-type"?delete b[Te]:E.setRequestHeader(Te,ie)}),e.isUndefined(p.withCredentials)||(E.withCredentials=!!p.withCredentials),P&&P!=="json"&&(E.responseType=p.responseType),typeof p.onDownloadProgress=="function"&&E.addEventListener("progress",p.onDownloadProgress),typeof p.onUploadProgress=="function"&&E.upload&&E.upload.addEventListener("progress",p.onUploadProgress),(p.cancelToken||p.signal)&&(w=function(J){E&&(y(!J||J&&J.type?new u:J),E.abort(),E=null)},p.cancelToken&&p.cancelToken.subscribe(w),p.signal&&(p.signal.aborted?w():p.signal.addEventListener("abort",w))),k||(k=null);var ee=_(A);if(ee&&["http","https","file"].indexOf(ee)===-1){y(new d("Unsupported protocol "+ee+":",d.ERR_BAD_REQUEST,p));return}E.send(k)})},ah}var nh,p0;function yM(){return p0||(p0=1,nh=null),nh}var Ya=an,f0=lM,h0=cc,bM=YS,kM=ZS,wM={"Content-Type":"application/x-www-form-urlencoded"};function g0(e,t){!Ya.isUndefined(e)&&Ya.isUndefined(e["Content-Type"])&&(e["Content-Type"]=t)}function DM(){var e;return(typeof XMLHttpRequest<"u"||typeof process<"u"&&Object.prototype.toString.call(process)==="[object process]")&&(e=m0()),e}function xM(e,t,a){if(Ya.isString(e))try{return(t||JSON.parse)(e),Ya.trim(e)}catch(n){if(n.name!=="SyntaxError")throw n}return(a||JSON.stringify)(e)}var vm={transitional:bM,adapter:DM(),transformRequest:[function(t,a){if(f0(a,"Accept"),f0(a,"Content-Type"),Ya.isFormData(t)||Ya.isArrayBuffer(t)||Ya.isBuffer(t)||Ya.isStream(t)||Ya.isFile(t)||Ya.isBlob(t))return t;if(Ya.isArrayBufferView(t))return t.buffer;if(Ya.isURLSearchParams(t))return g0(a,"application/x-www-form-urlencoded;charset=utf-8"),t.toString();var n=Ya.isObject(t),i=a&&a["Content-Type"],o;if((o=Ya.isFileList(t))||n&&i==="multipart/form-data"){var s=this.env&&this.env.FormData;return kM(o?{"files[]":t}:t,s&&new s)}else if(n||i==="application/json")return g0(a,"application/json"),xM(t);return t}],transformResponse:[function(t){var a=this.transitional||vm.transitional,n=a&&a.silentJSONParsing,i=a&&a.forcedJSONParsing,o=!n&&this.responseType==="json";if(o||i&&Ya.isString(t)&&t.length)try{return JSON.parse(t)}catch(s){if(o)throw s.name==="SyntaxError"?h0.from(s,h0.ERR_BAD_RESPONSE,this,null,this.response):s}return t}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:yM()},validateStatus:function(t){return t>=200&&t<300},headers:{common:{Accept:"application/json, text/plain, */*"}}};Ya.forEach(["delete","get","head"],function(t){vm.headers[t]={}});Ya.forEach(["post","put","patch"],function(t){vm.headers[t]=Ya.merge(wM)});var Av=vm,SM=an,PM=Av,EM=function(t,a,n){var i=this||PM;return SM.forEach(n,function(s){t=s.call(i,t,a)}),t},ih,v0;function QS(){return v0||(v0=1,ih=function(t){return!!(t&&t.__CANCEL__)}),ih}var y0=an,oh=EM,zM=QS(),AM=Av,CM=gm();function sh(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new CM}var TM=function(t){sh(t),t.headers=t.headers||{},t.data=oh.call(t,t.data,t.headers,t.transformRequest),t.headers=y0.merge(t.headers.common||{},t.headers[t.method]||{},t.headers),y0.forEach(["delete","get","head","post","put","patch","common"],function(i){delete t.headers[i]});var a=t.adapter||AM.adapter;return a(t).then(function(i){return sh(t),i.data=oh.call(t,i.data,i.headers,t.transformResponse),i},function(i){return zM(i)||(sh(t),i&&i.response&&(i.response.data=oh.call(t,i.response.data,i.response.headers,t.transformResponse))),Promise.reject(i)})},Qn=an,JS=function(t,a){a=a||{};var n={};function i(_,f){return Qn.isPlainObject(_)&&Qn.isPlainObject(f)?Qn.merge(_,f):Qn.isPlainObject(f)?Qn.merge({},f):Qn.isArray(f)?f.slice():f}function o(_){if(Qn.isUndefined(a[_])){if(!Qn.isUndefined(t[_]))return i(void 0,t[_])}else return i(t[_],a[_])}function s(_){if(!Qn.isUndefined(a[_]))return i(void 0,a[_])}function l(_){if(Qn.isUndefined(a[_])){if(!Qn.isUndefined(t[_]))return i(void 0,t[_])}else return i(void 0,a[_])}function d(_){if(_ in a)return i(t[_],a[_]);if(_ in t)return i(void 0,t[_])}var u={url:s,method:s,data:s,baseURL:l,transformRequest:l,transformResponse:l,paramsSerializer:l,timeout:l,timeoutMessage:l,withCredentials:l,adapter:l,responseType:l,xsrfCookieName:l,xsrfHeaderName:l,onUploadProgress:l,onDownloadProgress:l,decompress:l,maxContentLength:l,maxBodyLength:l,beforeRedirect:l,transport:l,httpAgent:l,httpsAgent:l,cancelToken:l,socketPath:l,responseEncoding:l,validateStatus:d};return Qn.forEach(Object.keys(t).concat(Object.keys(a)),function(f){var p=u[f]||o,h=p(f);Qn.isUndefined(h)&&p!==d||(n[f]=h)}),n},rh,b0;function XS(){return b0||(b0=1,rh={version:"0.27.2"}),rh}var jM=XS().version,Es=cc,Cv={};["object","boolean","number","function","string","symbol"].forEach(function(e,t){Cv[e]=function(n){return typeof n===e||"a"+(t<1?"n ":" ")+e}});var k0={};Cv.transitional=function(t,a,n){function i(o,s){return"[Axios v"+jM+"] Transitional option '"+o+"'"+s+(n?". "+n:"")}return function(o,s,l){if(t===!1)throw new Es(i(s," has been removed"+(a?" in "+a:"")),Es.ERR_DEPRECATED);return a&&!k0[s]&&(k0[s]=!0,console.warn(i(s," has been deprecated since v"+a+" and will be removed in the near future"))),t?t(o,s,l):!0}};function NM(e,t,a){if(typeof e!="object")throw new Es("options must be an object",Es.ERR_BAD_OPTION_VALUE);for(var n=Object.keys(e),i=n.length;i-- >0;){var o=n[i],s=t[o];if(s){var l=e[o],d=l===void 0||s(l,o,e);if(d!==!0)throw new Es("option "+o+" must be "+d,Es.ERR_BAD_OPTION_VALUE);continue}if(a!==!0)throw new Es("Unknown option "+o,Es.ERR_BAD_OPTION)}}var IM={assertOptions:NM,validators:Cv},e1=an,FM=qS,w0=sM,D0=TM,ym=JS,RM=GS,t1=IM,bl=t1.validators;function Hl(e){this.defaults=e,this.interceptors={request:new w0,response:new w0}}Hl.prototype.request=function(t,a){typeof t=="string"?(a=a||{},a.url=t):a=t||{},a=ym(this.defaults,a),a.method?a.method=a.method.toLowerCase():this.defaults.method?a.method=this.defaults.method.toLowerCase():a.method="get";var n=a.transitional;n!==void 0&&t1.assertOptions(n,{silentJSONParsing:bl.transitional(bl.boolean),forcedJSONParsing:bl.transitional(bl.boolean),clarifyTimeoutError:bl.transitional(bl.boolean)},!1);var i=[],o=!0;this.interceptors.request.forEach(function(h){typeof h.runWhen=="function"&&h.runWhen(a)===!1||(o=o&&h.synchronous,i.unshift(h.fulfilled,h.rejected))});var s=[];this.interceptors.response.forEach(function(h){s.push(h.fulfilled,h.rejected)});var l;if(!o){var d=[D0,void 0];for(Array.prototype.unshift.apply(d,i),d=d.concat(s),l=Promise.resolve(a);d.length;)l=l.then(d.shift(),d.shift());return l}for(var u=a;i.length;){var _=i.shift(),f=i.shift();try{u=_(u)}catch(p){f(p);break}}try{l=D0(u)}catch(p){return Promise.reject(p)}for(;s.length;)l=l.then(s.shift(),s.shift());return l};Hl.prototype.getUri=function(t){t=ym(this.defaults,t);var a=RM(t.baseURL,t.url);return FM(a,t.params,t.paramsSerializer)};e1.forEach(["delete","get","head","options"],function(t){Hl.prototype[t]=function(a,n){return this.request(ym(n||{},{method:t,url:a,data:(n||{}).data}))}});e1.forEach(["post","put","patch"],function(t){function a(n){return function(o,s,l){return this.request(ym(l||{},{method:t,headers:n?{"Content-Type":"multipart/form-data"}:{},url:o,data:s}))}}Hl.prototype[t]=a(),Hl.prototype[t+"Form"]=a(!0)});var OM=Hl,lh,x0;function MM(){if(x0)return lh;x0=1;var e=gm();function t(a){if(typeof a!="function")throw new TypeError("executor must be a function.");var n;this.promise=new Promise(function(s){n=s});var i=this;this.promise.then(function(o){if(i._listeners){var s,l=i._listeners.length;for(s=0;st in e?TF(e,t,{enumerable:!0,configurable:!0,writable:!0,value:a}):e[t]=a;var Qu=(e,t,a)=>(IF(e,typeof t!="symbol"?t+"":t,a),a);const NF="modulepreload",FF=function(e){return"/build/"+e},iw={},Ve=function(t,a,n){let i=Promise.resolve();if(a&&a.length>0){const o=document.getElementsByTagName("link");i=Promise.all(a.map(r=>{if(r=FF(r),r in iw)return;iw[r]=!0;const l=r.endsWith(".css"),d=l?'[rel="stylesheet"]':"";if(!!n)for(let f=o.length-1;f>=0;f--){const p=o[f];if(p.href===r&&(!l||p.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${r}"]${d}`))return;const _=document.createElement("link");if(_.rel=l?"stylesheet":NF,l||(_.as="script",_.crossOrigin=""),_.href=r,document.head.appendChild(_),l)return new Promise((f,p)=>{_.addEventListener("load",f),_.addEventListener("error",()=>p(new Error(`Unable to preload CSS for ${r}`)))})}))}return i.then(()=>t()).catch(o=>{const r=new Event("vite:preloadError",{cancelable:!0});if(r.payload=o,window.dispatchEvent(r),!r.defaultPrevented)throw o})};var Rc=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function kv(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function wv(e){if(e.__esModule)return e;var t=e.default;if(typeof t=="function"){var a=function n(){return this instanceof n?Reflect.construct(t,arguments,this.constructor):t.apply(this,arguments)};a.prototype=t.prototype}else a={};return Object.defineProperty(a,"__esModule",{value:!0}),Object.keys(e).forEach(function(n){var i=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(a,n,i.get?i:{enumerable:!0,get:function(){return e[n]}})}),a}var xv={exports:{}},Bx=function(t,a){return function(){for(var i=new Array(arguments.length),o=0;o"u"}function RF(e){return e!==null&&!R_(e)&&e.constructor!==null&&!R_(e.constructor)&&typeof e.constructor.isBuffer=="function"&&e.constructor.isBuffer(e)}var Ux=qs("ArrayBuffer");function OF(e){var t;return typeof ArrayBuffer<"u"&&ArrayBuffer.isView?t=ArrayBuffer.isView(e):t=e&&e.buffer&&Ux(e.buffer),t}function $F(e){return typeof e=="string"}function LF(e){return typeof e=="number"}function Vx(e){return e!==null&&typeof e=="object"}function x_(e){if(Sv(e)!=="object")return!1;var t=Object.getPrototypeOf(e);return t===null||t===Object.prototype}var BF=qs("Date"),UF=qs("File"),VF=qs("Blob"),qF=qs("FileList");function Pv(e){return Dv.call(e)==="[object Function]"}function HF(e){return Vx(e)&&Pv(e.pipe)}function WF(e){var t="[object FormData]";return e&&(typeof FormData=="function"&&e instanceof FormData||Dv.call(e)===t||Pv(e.toString)&&e.toString()===t)}var KF=qs("URLSearchParams");function YF(e){return e.trim?e.trim():e.replace(/^\s+|\s+$/g,"")}function ZF(){return typeof navigator<"u"&&(navigator.product==="ReactNative"||navigator.product==="NativeScript"||navigator.product==="NS")?!1:typeof window<"u"&&typeof document<"u"}function Ev(e,t){if(!(e===null||typeof e>"u"))if(typeof e!="object"&&(e=[e]),zv(e))for(var a=0,n=e.length;a0;)o=n[i],r[o]||(t[o]=e[o],r[o]=!0);e=Object.getPrototypeOf(e)}while(e&&(!a||a(e,t))&&e!==Object.prototype);return t}function eM(e,t,a){e=String(e),(a===void 0||a>e.length)&&(a=e.length),a-=t.length;var n=e.indexOf(t,a);return n!==-1&&n===a}function tM(e){if(!e)return null;var t=e.length;if(R_(t))return null;for(var a=new Array(t);t-- >0;)a[t]=e[t];return a}var aM=function(e){return function(t){return e&&t instanceof e}}(typeof Uint8Array<"u"&&Object.getPrototypeOf(Uint8Array)),an={isArray:zv,isArrayBuffer:Ux,isBuffer:RF,isFormData:WF,isArrayBufferView:OF,isString:$F,isNumber:LF,isObject:Vx,isPlainObject:x_,isUndefined:R_,isDate:BF,isFile:UF,isBlob:VF,isFunction:Pv,isStream:HF,isURLSearchParams:KF,isStandardBrowserEnv:ZF,forEach:Ev,merge:Yh,extend:GF,trim:YF,stripBOM:QF,inherits:JF,toFlatObject:XF,kindOf:Sv,kindOfTest:qs,endsWith:eM,toArray:tM,isTypedArray:aM,isFileList:qF},yl=an;function ow(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}var qx=function(t,a,n){if(!a)return t;var i;if(n)i=n(a);else if(yl.isURLSearchParams(a))i=a.toString();else{var o=[];yl.forEach(a,function(d,u){d===null||typeof d>"u"||(yl.isArray(d)?u=u+"[]":d=[d],yl.forEach(d,function(f){yl.isDate(f)?f=f.toISOString():yl.isObject(f)&&(f=JSON.stringify(f)),o.push(ow(u)+"="+ow(f))}))}),i=o.join("&")}if(i){var r=t.indexOf("#");r!==-1&&(t=t.slice(0,r)),t+=(t.indexOf("?")===-1?"?":"&")+i}return t},nM=an;function fm(){this.handlers=[]}fm.prototype.use=function(t,a,n){return this.handlers.push({fulfilled:t,rejected:a,synchronous:n?n.synchronous:!1,runWhen:n?n.runWhen:null}),this.handlers.length-1};fm.prototype.eject=function(t){this.handlers[t]&&(this.handlers[t]=null)};fm.prototype.forEach=function(t){nM.forEach(this.handlers,function(n){n!==null&&t(n)})};var iM=fm,oM=an,rM=function(t,a){oM.forEach(t,function(i,o){o!==a&&o.toUpperCase()===a.toUpperCase()&&(t[a]=i,delete t[o])})},Hx=an;function Hl(e,t,a,n,i){Error.call(this),this.message=e,this.name="AxiosError",t&&(this.code=t),a&&(this.config=a),n&&(this.request=n),i&&(this.response=i)}Hx.inherits(Hl,Error,{toJSON:function(){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:this.config,code:this.code,status:this.response&&this.response.status?this.response.status:null}}});var Wx=Hl.prototype,Kx={};["ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","ECONNABORTED","ETIMEDOUT","ERR_NETWORK","ERR_FR_TOO_MANY_REDIRECTS","ERR_DEPRECATED","ERR_BAD_RESPONSE","ERR_BAD_REQUEST","ERR_CANCELED"].forEach(function(e){Kx[e]={value:e}});Object.defineProperties(Hl,Kx);Object.defineProperty(Wx,"isAxiosError",{value:!0});Hl.from=function(e,t,a,n,i,o){var r=Object.create(Wx);return Hx.toFlatObject(e,r,function(d){return d!==Error.prototype}),Hl.call(r,e.message,t,a,n,i),r.name=e.name,o&&Object.assign(r,o),r};var cc=Hl,Yx={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},qi=an;function sM(e,t){t=t||new FormData;var a=[];function n(o){return o===null?"":qi.isDate(o)?o.toISOString():qi.isArrayBuffer(o)||qi.isTypedArray(o)?typeof Blob=="function"?new Blob([o]):Buffer.from(o):o}function i(o,r){if(qi.isPlainObject(o)||qi.isArray(o)){if(a.indexOf(o)!==-1)throw Error("Circular reference detected in "+r);a.push(o),qi.forEach(o,function(d,u){if(!qi.isUndefined(d)){var _=r?r+"."+u:u,f;if(d&&!r&&typeof d=="object"){if(qi.endsWith(u,"{}"))d=JSON.stringify(d);else if(qi.endsWith(u,"[]")&&(f=qi.toArray(d))){f.forEach(function(p){!qi.isUndefined(p)&&t.append(_,n(p))});return}}i(d,_)}}),a.pop()}else t.append(r,n(o))}return i(e),t}var Zx=sM,Zf,rw;function lM(){if(rw)return Zf;rw=1;var e=cc;return Zf=function(a,n,i){var o=i.config.validateStatus;!i.status||!o||o(i.status)?a(i):n(new e("Request failed with status code "+i.status,[e.ERR_BAD_REQUEST,e.ERR_BAD_RESPONSE][Math.floor(i.status/100)-4],i.config,i.request,i))},Zf}var Gf,sw;function cM(){if(sw)return Gf;sw=1;var e=an;return Gf=e.isStandardBrowserEnv()?function(){return{write:function(n,i,o,r,l,d){var u=[];u.push(n+"="+encodeURIComponent(i)),e.isNumber(o)&&u.push("expires="+new Date(o).toGMTString()),e.isString(r)&&u.push("path="+r),e.isString(l)&&u.push("domain="+l),d===!0&&u.push("secure"),document.cookie=u.join("; ")},read:function(n){var i=document.cookie.match(new RegExp("(^|;\\s*)("+n+")=([^;]*)"));return i?decodeURIComponent(i[3]):null},remove:function(n){this.write(n,"",Date.now()-864e5)}}}():function(){return{write:function(){},read:function(){return null},remove:function(){}}}(),Gf}var dM=function(t){return/^([a-z][a-z\d+\-.]*:)?\/\//i.test(t)},uM=function(t,a){return a?t.replace(/\/+$/,"")+"/"+a.replace(/^\/+/,""):t},_M=dM,mM=uM,Gx=function(t,a){return t&&!_M(a)?mM(t,a):a},Qf,lw;function pM(){if(lw)return Qf;lw=1;var e=an,t=["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"];return Qf=function(n){var i={},o,r,l;return n&&e.forEach(n.split(` +`),function(u){if(l=u.indexOf(":"),o=e.trim(u.substr(0,l)).toLowerCase(),r=e.trim(u.substr(l+1)),o){if(i[o]&&t.indexOf(o)>=0)return;o==="set-cookie"?i[o]=(i[o]?i[o]:[]).concat([r]):i[o]=i[o]?i[o]+", "+r:r}}),i},Qf}var Jf,cw;function fM(){if(cw)return Jf;cw=1;var e=an;return Jf=e.isStandardBrowserEnv()?function(){var a=/(msie|trident)/i.test(navigator.userAgent),n=document.createElement("a"),i;function o(r){var l=r;return a&&(n.setAttribute("href",l),l=n.href),n.setAttribute("href",l),{href:n.href,protocol:n.protocol?n.protocol.replace(/:$/,""):"",host:n.host,search:n.search?n.search.replace(/^\?/,""):"",hash:n.hash?n.hash.replace(/^#/,""):"",hostname:n.hostname,port:n.port,pathname:n.pathname.charAt(0)==="/"?n.pathname:"/"+n.pathname}}return i=o(window.location.href),function(l){var d=e.isString(l)?o(l):l;return d.protocol===i.protocol&&d.host===i.host}}():function(){return function(){return!0}}(),Jf}var Xf,dw;function hm(){if(dw)return Xf;dw=1;var e=cc,t=an;function a(n){e.call(this,n??"canceled",e.ERR_CANCELED),this.name="CanceledError"}return t.inherits(a,e,{__CANCEL__:!0}),Xf=a,Xf}var eh,uw;function hM(){return uw||(uw=1,eh=function(t){var a=/^([-+\w]{1,25})(:?\/\/|:)/.exec(t);return a&&a[1]||""}),eh}var th,_w;function mw(){if(_w)return th;_w=1;var e=an,t=lM(),a=cM(),n=qx,i=Gx,o=pM(),r=fM(),l=Yx,d=cc,u=hm(),_=hM();return th=function(p){return new Promise(function(g,y){var k=p.data,b=p.headers,z=p.responseType,w;function D(){p.cancelToken&&p.cancelToken.unsubscribe(w),p.signal&&p.signal.removeEventListener("abort",w)}e.isFormData(k)&&e.isStandardBrowserEnv()&&delete b["Content-Type"];var E=new XMLHttpRequest;if(p.auth){var T=p.auth.username||"",N=p.auth.password?unescape(encodeURIComponent(p.auth.password)):"";b.Authorization="Basic "+btoa(T+":"+N)}var j=i(p.baseURL,p.url);E.open(p.method.toUpperCase(),n(j,p.params,p.paramsSerializer),!0),E.timeout=p.timeout;function q(){if(E){var X="getAllResponseHeaders"in E?o(E.getAllResponseHeaders()):null,oe=!z||z==="text"||z==="json"?E.responseText:E.response,Te={data:oe,status:E.status,statusText:E.statusText,headers:X,config:p,request:E};t(function(de){g(de),D()},function(de){y(de),D()},Te),E=null}}if("onloadend"in E?E.onloadend=q:E.onreadystatechange=function(){!E||E.readyState!==4||E.status===0&&!(E.responseURL&&E.responseURL.indexOf("file:")===0)||setTimeout(q)},E.onabort=function(){E&&(y(new d("Request aborted",d.ECONNABORTED,p,E)),E=null)},E.onerror=function(){y(new d("Network Error",d.ERR_NETWORK,p,E,E)),E=null},E.ontimeout=function(){var oe=p.timeout?"timeout of "+p.timeout+"ms exceeded":"timeout exceeded",Te=p.transitional||l;p.timeoutErrorMessage&&(oe=p.timeoutErrorMessage),y(new d(oe,Te.clarifyTimeoutError?d.ETIMEDOUT:d.ECONNABORTED,p,E)),E=null},e.isStandardBrowserEnv()){var H=(p.withCredentials||r(j))&&p.xsrfCookieName?a.read(p.xsrfCookieName):void 0;H&&(b[p.xsrfHeaderName]=H)}"setRequestHeader"in E&&e.forEach(b,function(oe,Te){typeof k>"u"&&Te.toLowerCase()==="content-type"?delete b[Te]:E.setRequestHeader(Te,oe)}),e.isUndefined(p.withCredentials)||(E.withCredentials=!!p.withCredentials),z&&z!=="json"&&(E.responseType=p.responseType),typeof p.onDownloadProgress=="function"&&E.addEventListener("progress",p.onDownloadProgress),typeof p.onUploadProgress=="function"&&E.upload&&E.upload.addEventListener("progress",p.onUploadProgress),(p.cancelToken||p.signal)&&(w=function(X){E&&(y(!X||X&&X.type?new u:X),E.abort(),E=null)},p.cancelToken&&p.cancelToken.subscribe(w),p.signal&&(p.signal.aborted?w():p.signal.addEventListener("abort",w))),k||(k=null);var te=_(j);if(te&&["http","https","file"].indexOf(te)===-1){y(new d("Unsupported protocol "+te+":",d.ERR_BAD_REQUEST,p));return}E.send(k)})},th}var ah,pw;function gM(){return pw||(pw=1,ah=null),ah}var Ya=an,fw=rM,hw=cc,vM=Yx,yM=Zx,bM={"Content-Type":"application/x-www-form-urlencoded"};function gw(e,t){!Ya.isUndefined(e)&&Ya.isUndefined(e["Content-Type"])&&(e["Content-Type"]=t)}function kM(){var e;return(typeof XMLHttpRequest<"u"||typeof process<"u"&&Object.prototype.toString.call(process)==="[object process]")&&(e=mw()),e}function wM(e,t,a){if(Ya.isString(e))try{return(t||JSON.parse)(e),Ya.trim(e)}catch(n){if(n.name!=="SyntaxError")throw n}return(a||JSON.stringify)(e)}var gm={transitional:vM,adapter:kM(),transformRequest:[function(t,a){if(fw(a,"Accept"),fw(a,"Content-Type"),Ya.isFormData(t)||Ya.isArrayBuffer(t)||Ya.isBuffer(t)||Ya.isStream(t)||Ya.isFile(t)||Ya.isBlob(t))return t;if(Ya.isArrayBufferView(t))return t.buffer;if(Ya.isURLSearchParams(t))return gw(a,"application/x-www-form-urlencoded;charset=utf-8"),t.toString();var n=Ya.isObject(t),i=a&&a["Content-Type"],o;if((o=Ya.isFileList(t))||n&&i==="multipart/form-data"){var r=this.env&&this.env.FormData;return yM(o?{"files[]":t}:t,r&&new r)}else if(n||i==="application/json")return gw(a,"application/json"),wM(t);return t}],transformResponse:[function(t){var a=this.transitional||gm.transitional,n=a&&a.silentJSONParsing,i=a&&a.forcedJSONParsing,o=!n&&this.responseType==="json";if(o||i&&Ya.isString(t)&&t.length)try{return JSON.parse(t)}catch(r){if(o)throw r.name==="SyntaxError"?hw.from(r,hw.ERR_BAD_RESPONSE,this,null,this.response):r}return t}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:gM()},validateStatus:function(t){return t>=200&&t<300},headers:{common:{Accept:"application/json, text/plain, */*"}}};Ya.forEach(["delete","get","head"],function(t){gm.headers[t]={}});Ya.forEach(["post","put","patch"],function(t){gm.headers[t]=Ya.merge(bM)});var Av=gm,xM=an,DM=Av,SM=function(t,a,n){var i=this||DM;return xM.forEach(n,function(r){t=r.call(i,t,a)}),t},nh,vw;function Qx(){return vw||(vw=1,nh=function(t){return!!(t&&t.__CANCEL__)}),nh}var yw=an,ih=SM,zM=Qx(),PM=Av,EM=hm();function oh(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new EM}var AM=function(t){oh(t),t.headers=t.headers||{},t.data=ih.call(t,t.data,t.headers,t.transformRequest),t.headers=yw.merge(t.headers.common||{},t.headers[t.method]||{},t.headers),yw.forEach(["delete","get","head","post","put","patch","common"],function(i){delete t.headers[i]});var a=t.adapter||PM.adapter;return a(t).then(function(i){return oh(t),i.data=ih.call(t,i.data,i.headers,t.transformResponse),i},function(i){return zM(i)||(oh(t),i&&i.response&&(i.response.data=ih.call(t,i.response.data,i.response.headers,t.transformResponse))),Promise.reject(i)})},Qn=an,Jx=function(t,a){a=a||{};var n={};function i(_,f){return Qn.isPlainObject(_)&&Qn.isPlainObject(f)?Qn.merge(_,f):Qn.isPlainObject(f)?Qn.merge({},f):Qn.isArray(f)?f.slice():f}function o(_){if(Qn.isUndefined(a[_])){if(!Qn.isUndefined(t[_]))return i(void 0,t[_])}else return i(t[_],a[_])}function r(_){if(!Qn.isUndefined(a[_]))return i(void 0,a[_])}function l(_){if(Qn.isUndefined(a[_])){if(!Qn.isUndefined(t[_]))return i(void 0,t[_])}else return i(void 0,a[_])}function d(_){if(_ in a)return i(t[_],a[_]);if(_ in t)return i(void 0,t[_])}var u={url:r,method:r,data:r,baseURL:l,transformRequest:l,transformResponse:l,paramsSerializer:l,timeout:l,timeoutMessage:l,withCredentials:l,adapter:l,responseType:l,xsrfCookieName:l,xsrfHeaderName:l,onUploadProgress:l,onDownloadProgress:l,decompress:l,maxContentLength:l,maxBodyLength:l,beforeRedirect:l,transport:l,httpAgent:l,httpsAgent:l,cancelToken:l,socketPath:l,responseEncoding:l,validateStatus:d};return Qn.forEach(Object.keys(t).concat(Object.keys(a)),function(f){var p=u[f]||o,h=p(f);Qn.isUndefined(h)&&p!==d||(n[f]=h)}),n},rh,bw;function Xx(){return bw||(bw=1,rh={version:"0.27.2"}),rh}var CM=Xx().version,Pr=cc,Cv={};["object","boolean","number","function","string","symbol"].forEach(function(e,t){Cv[e]=function(n){return typeof n===e||"a"+(t<1?"n ":" ")+e}});var kw={};Cv.transitional=function(t,a,n){function i(o,r){return"[Axios v"+CM+"] Transitional option '"+o+"'"+r+(n?". "+n:"")}return function(o,r,l){if(t===!1)throw new Pr(i(r," has been removed"+(a?" in "+a:"")),Pr.ERR_DEPRECATED);return a&&!kw[r]&&(kw[r]=!0,console.warn(i(r," has been deprecated since v"+a+" and will be removed in the near future"))),t?t(o,r,l):!0}};function jM(e,t,a){if(typeof e!="object")throw new Pr("options must be an object",Pr.ERR_BAD_OPTION_VALUE);for(var n=Object.keys(e),i=n.length;i-- >0;){var o=n[i],r=t[o];if(r){var l=e[o],d=l===void 0||r(l,o,e);if(d!==!0)throw new Pr("option "+o+" must be "+d,Pr.ERR_BAD_OPTION_VALUE);continue}if(a!==!0)throw new Pr("Unknown option "+o,Pr.ERR_BAD_OPTION)}}var TM={assertOptions:jM,validators:Cv},eD=an,IM=qx,ww=iM,xw=AM,vm=Jx,NM=Gx,tD=TM,bl=tD.validators;function Wl(e){this.defaults=e,this.interceptors={request:new ww,response:new ww}}Wl.prototype.request=function(t,a){typeof t=="string"?(a=a||{},a.url=t):a=t||{},a=vm(this.defaults,a),a.method?a.method=a.method.toLowerCase():this.defaults.method?a.method=this.defaults.method.toLowerCase():a.method="get";var n=a.transitional;n!==void 0&&tD.assertOptions(n,{silentJSONParsing:bl.transitional(bl.boolean),forcedJSONParsing:bl.transitional(bl.boolean),clarifyTimeoutError:bl.transitional(bl.boolean)},!1);var i=[],o=!0;this.interceptors.request.forEach(function(h){typeof h.runWhen=="function"&&h.runWhen(a)===!1||(o=o&&h.synchronous,i.unshift(h.fulfilled,h.rejected))});var r=[];this.interceptors.response.forEach(function(h){r.push(h.fulfilled,h.rejected)});var l;if(!o){var d=[xw,void 0];for(Array.prototype.unshift.apply(d,i),d=d.concat(r),l=Promise.resolve(a);d.length;)l=l.then(d.shift(),d.shift());return l}for(var u=a;i.length;){var _=i.shift(),f=i.shift();try{u=_(u)}catch(p){f(p);break}}try{l=xw(u)}catch(p){return Promise.reject(p)}for(;r.length;)l=l.then(r.shift(),r.shift());return l};Wl.prototype.getUri=function(t){t=vm(this.defaults,t);var a=NM(t.baseURL,t.url);return IM(a,t.params,t.paramsSerializer)};eD.forEach(["delete","get","head","options"],function(t){Wl.prototype[t]=function(a,n){return this.request(vm(n||{},{method:t,url:a,data:(n||{}).data}))}});eD.forEach(["post","put","patch"],function(t){function a(n){return function(o,r,l){return this.request(vm(l||{},{method:t,headers:n?{"Content-Type":"multipart/form-data"}:{},url:o,data:r}))}}Wl.prototype[t]=a(),Wl.prototype[t+"Form"]=a(!0)});var FM=Wl,sh,Dw;function MM(){if(Dw)return sh;Dw=1;var e=hm();function t(a){if(typeof a!="function")throw new TypeError("executor must be a function.");var n;this.promise=new Promise(function(r){n=r});var i=this;this.promise.then(function(o){if(i._listeners){var r,l=i._listeners.length;for(r=0;ra.has(n.toLowerCase()):n=>a.has(n)}const ia={},Nl=[],Rn=()=>{},HM=()=>!1,Nd=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),Tv=e=>e.startsWith("onUpdate:"),wa=Object.assign,jv=(e,t)=>{const a=e.indexOf(t);a>-1&&e.splice(a,1)},KM=Object.prototype.hasOwnProperty,Vt=(e,t)=>KM.call(e,t),Ye=Array.isArray,Il=e=>dc(e)==="[object Map]",Wr=e=>dc(e)==="[object Set]",z0=e=>dc(e)==="[object Date]",YM=e=>dc(e)==="[object RegExp]",_t=e=>typeof e=="function",Da=e=>typeof e=="string",Bs=e=>typeof e=="symbol",sa=e=>e!==null&&typeof e=="object",Nv=e=>(sa(e)||_t(e))&&_t(e.then)&&_t(e.catch),n1=Object.prototype.toString,dc=e=>n1.call(e),ZM=e=>dc(e).slice(8,-1),i1=e=>dc(e)==="[object Object]",Iv=e=>Da(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,Qc=bm(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),km=e=>{const t=Object.create(null);return a=>t[a]||(t[a]=e(a))},GM=/-(\w)/g,wn=km(e=>e.replace(GM,(t,a)=>a?a.toUpperCase():"")),QM=/\B([A-Z])/g,ai=km(e=>e.replace(QM,"-$1").toLowerCase()),Id=km(e=>e.charAt(0).toUpperCase()+e.slice(1)),Jc=km(e=>e?`on${Id(e)}`:""),Ji=(e,t)=>!Object.is(e,t),Fl=(e,t)=>{for(let a=0;a{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,value:a})},md=e=>{const t=parseFloat(e);return isNaN(t)?e:t},$_=e=>{const t=Da(e)?Number(e):NaN;return isNaN(t)?e:t};let A0;const o1=()=>A0||(A0=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{}),JM="Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt,console,Error",XM=bm(JM);function oo(e){if(Ye(e)){const t={};for(let a=0;a{if(a){const n=a.split(t$);n.length>1&&(t[n[0].trim()]=n[1].trim())}}),t}function Le(e){let t="";if(Da(e))t=e;else if(Ye(e))for(let a=0;aGo(a,t))}const je=e=>Da(e)?e:e==null?"":Ye(e)||sa(e)&&(e.toString===n1||!_t(e.toString))?JSON.stringify(e,l1,2):String(e),l1=(e,t)=>t&&t.__v_isRef?l1(e,t.value):Il(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((a,[n,i],o)=>(a[uh(n,o)+" =>"]=i,a),{})}:Wr(t)?{[`Set(${t.size})`]:[...t.values()].map(a=>uh(a))}:Bs(t)?uh(t):sa(t)&&!Ye(t)&&!i1(t)?String(t):t,uh=(e,t="")=>{var a;return Bs(e)?`Symbol(${(a=e.description)!=null?a:t})`:e};/** +**/function ym(e,t){const a=new Set(e.split(","));return t?n=>a.has(n.toLowerCase()):n=>a.has(n)}const ia={},Il=[],Mn=()=>{},qM=()=>!1,Id=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),jv=e=>e.startsWith("onUpdate:"),wa=Object.assign,Tv=(e,t)=>{const a=e.indexOf(t);a>-1&&e.splice(a,1)},HM=Object.prototype.hasOwnProperty,Vt=(e,t)=>HM.call(e,t),Ze=Array.isArray,Nl=e=>dc(e)==="[object Map]",Hs=e=>dc(e)==="[object Set]",Ew=e=>dc(e)==="[object Date]",WM=e=>dc(e)==="[object RegExp]",_t=e=>typeof e=="function",xa=e=>typeof e=="string",Br=e=>typeof e=="symbol",ra=e=>e!==null&&typeof e=="object",Iv=e=>(ra(e)||_t(e))&&_t(e.then)&&_t(e.catch),nD=Object.prototype.toString,dc=e=>nD.call(e),KM=e=>dc(e).slice(8,-1),iD=e=>dc(e)==="[object Object]",Nv=e=>xa(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,Qc=ym(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),bm=e=>{const t=Object.create(null);return a=>t[a]||(t[a]=e(a))},YM=/-(\w)/g,wn=bm(e=>e.replace(YM,(t,a)=>a?a.toUpperCase():"")),ZM=/\B([A-Z])/g,ai=bm(e=>e.replace(ZM,"-$1").toLowerCase()),Nd=bm(e=>e.charAt(0).toUpperCase()+e.slice(1)),Jc=bm(e=>e?`on${Nd(e)}`:""),Ji=(e,t)=>!Object.is(e,t),Fl=(e,t)=>{for(let a=0;a{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,value:a})},md=e=>{const t=parseFloat(e);return isNaN(t)?e:t},$_=e=>{const t=xa(e)?Number(e):NaN;return isNaN(t)?e:t};let Aw;const oD=()=>Aw||(Aw=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{}),GM="Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt,console,Error",QM=ym(GM);function oo(e){if(Ze(e)){const t={};for(let a=0;a{if(a){const n=a.split(XM);n.length>1&&(t[n[0].trim()]=n[1].trim())}}),t}function Be(e){let t="";if(xa(e))t=e;else if(Ze(e))for(let a=0;aGo(a,t))}const Ie=e=>xa(e)?e:e==null?"":Ze(e)||ra(e)&&(e.toString===nD||!_t(e.toString))?JSON.stringify(e,lD,2):String(e),lD=(e,t)=>t&&t.__v_isRef?lD(e,t.value):Nl(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((a,[n,i],o)=>(a[dh(n,o)+" =>"]=i,a),{})}:Hs(t)?{[`Set(${t.size})`]:[...t.values()].map(a=>dh(a))}:Br(t)?dh(t):ra(t)&&!Ze(t)&&!iD(t)?String(t):t,dh=(e,t="")=>{var a;return Br(e)?`Symbol(${(a=e.description)!=null?a:t})`:e};/** * @vue/reactivity v3.4.15 * (c) 2018-present Yuxi (Evan) You and Vue contributors * @license MIT -**/let ei;class Fv{constructor(t=!1){this.detached=t,this._active=!0,this.effects=[],this.cleanups=[],this.parent=ei,!t&&ei&&(this.index=(ei.scopes||(ei.scopes=[])).push(this)-1)}get active(){return this._active}run(t){if(this._active){const a=ei;try{return ei=this,t()}finally{ei=a}}}on(){ei=this}off(){ei=this.parent}stop(t){if(this._active){let a,n;for(a=0,n=this.effects.length;a=2))break}this._dirtyLevel<2&&(this._dirtyLevel=0),Kr()}return this._dirtyLevel>=2}set dirty(t){this._dirtyLevel=t?2:0}run(){if(this._dirtyLevel=0,!this.active)return this.fn();let t=Os,a=Pr;try{return Os=!0,Pr=this,this._runnings++,C0(this),this.fn()}finally{T0(this),this._runnings--,Pr=a,Os=t}}stop(){var t;this.active&&(C0(this),T0(this),(t=this.onStop)==null||t.call(this),this.active=!1)}}function r$(e){return e.value}function C0(e){e._trackId++,e._depsLength=0}function T0(e){if(e.deps&&e.deps.length>e._depsLength){for(let t=e._depsLength;t{a.dirty&&a.run()});t&&(wa(a,t),t.scope&&c1(a,t.scope)),(!t||!t.lazy)&&a.run();const n=a.run.bind(a);return n.effect=a,n}function c$(e){e.effect.stop()}let Os=!0,Qh=0;const u1=[];function Hr(){u1.push(Os),Os=!1}function Kr(){const e=u1.pop();Os=e===void 0?!0:e}function Mv(){Qh++}function $v(){for(Qh--;!Qh&&Jh.length;)Jh.shift()()}function _1(e,t,a){if(t.get(e)!==e._trackId){t.set(e,e._trackId);const n=e.deps[e._depsLength];n!==t?(n&&d1(n,e),e.deps[e._depsLength++]=t):e._depsLength++}}const Jh=[];function m1(e,t,a){Mv();for(const n of e.keys())if(n._dirtyLevel{const a=new Map;return a.cleanup=e,a.computed=t,a},L_=new WeakMap,Er=Symbol(""),Xh=Symbol("");function Bn(e,t,a){if(Os&&Pr){let n=L_.get(e);n||L_.set(e,n=new Map);let i=n.get(a);i||n.set(a,i=f1(()=>n.delete(a))),_1(Pr,i)}}function Ho(e,t,a,n,i,o){const s=L_.get(e);if(!s)return;let l=[];if(t==="clear")l=[...s.values()];else if(a==="length"&&Ye(e)){const d=Number(n);s.forEach((u,_)=>{(_==="length"||!Bs(_)&&_>=d)&&l.push(u)})}else switch(a!==void 0&&l.push(s.get(a)),t){case"add":Ye(e)?Iv(a)&&l.push(s.get("length")):(l.push(s.get(Er)),Il(e)&&l.push(s.get(Xh)));break;case"delete":Ye(e)||(l.push(s.get(Er)),Il(e)&&l.push(s.get(Xh)));break;case"set":Il(e)&&l.push(s.get(Er));break}Mv();for(const d of l)d&&m1(d,2);$v()}function d$(e,t){var a;return(a=L_.get(e))==null?void 0:a.get(t)}const u$=bm("__proto__,__v_isRef,__isVue"),h1=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(Bs)),j0=_$();function _$(){const e={};return["includes","indexOf","lastIndexOf"].forEach(t=>{e[t]=function(...a){const n=et(this);for(let o=0,s=this.length;o{e[t]=function(...a){Hr(),Mv();const n=et(this)[t].apply(this,a);return $v(),Kr(),n}}),e}function m$(e){const t=et(this);return Bn(t,"has",e),t.hasOwnProperty(e)}class g1{constructor(t=!1,a=!1){this._isReadonly=t,this._shallow=a}get(t,a,n){const i=this._isReadonly,o=this._shallow;if(a==="__v_isReactive")return!i;if(a==="__v_isReadonly")return i;if(a==="__v_isShallow")return o;if(a==="__v_raw")return n===(i?o?D1:w1:o?k1:b1).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(n)?t:void 0;const s=Ye(t);if(!i){if(s&&Vt(j0,a))return Reflect.get(j0,a,n);if(a==="hasOwnProperty")return m$}const l=Reflect.get(t,a,n);return(Bs(a)?h1.has(a):u$(a))||(i||Bn(t,"get",a),o)?l:ea(l)?s&&Iv(a)?l:l.value:sa(l)?i?Uv(l):ui(l):l}}class v1 extends g1{constructor(t=!1){super(!1,t)}set(t,a,n,i){let o=t[a];if(!this._shallow){const d=Us(o);if(!pd(n)&&!Us(n)&&(o=et(o),n=et(n)),!Ye(t)&&ea(o)&&!ea(n))return d?!1:(o.value=n,!0)}const s=Ye(t)&&Iv(a)?Number(a)e,xm=e=>Reflect.getPrototypeOf(e);function Ju(e,t,a=!1,n=!1){e=e.__v_raw;const i=et(e),o=et(t);a||(Ji(t,o)&&Bn(i,"get",t),Bn(i,"get",o));const{has:s}=xm(i),l=n?Lv:a?qv:fd;if(s.call(i,t))return l(e.get(t));if(s.call(i,o))return l(e.get(o));e!==i&&e.get(t)}function Xu(e,t=!1){const a=this.__v_raw,n=et(a),i=et(e);return t||(Ji(e,i)&&Bn(n,"has",e),Bn(n,"has",i)),e===i?a.has(e):a.has(e)||a.has(i)}function e_(e,t=!1){return e=e.__v_raw,!t&&Bn(et(e),"iterate",Er),Reflect.get(e,"size",e)}function N0(e){e=et(e);const t=et(this);return xm(t).has.call(t,e)||(t.add(e),Ho(t,"add",e,e)),this}function I0(e,t){t=et(t);const a=et(this),{has:n,get:i}=xm(a);let o=n.call(a,e);o||(e=et(e),o=n.call(a,e));const s=i.call(a,e);return a.set(e,t),o?Ji(t,s)&&Ho(a,"set",e,t):Ho(a,"add",e,t),this}function F0(e){const t=et(this),{has:a,get:n}=xm(t);let i=a.call(t,e);i||(e=et(e),i=a.call(t,e)),n&&n.call(t,e);const o=t.delete(e);return i&&Ho(t,"delete",e,void 0),o}function R0(){const e=et(this),t=e.size!==0,a=e.clear();return t&&Ho(e,"clear",void 0,void 0),a}function t_(e,t){return function(n,i){const o=this,s=o.__v_raw,l=et(s),d=t?Lv:e?qv:fd;return!e&&Bn(l,"iterate",Er),s.forEach((u,_)=>n.call(i,d(u),d(_),o))}}function a_(e,t,a){return function(...n){const i=this.__v_raw,o=et(i),s=Il(o),l=e==="entries"||e===Symbol.iterator&&s,d=e==="keys"&&s,u=i[e](...n),_=a?Lv:t?qv:fd;return!t&&Bn(o,"iterate",d?Xh:Er),{next(){const{value:f,done:p}=u.next();return p?{value:f,done:p}:{value:l?[_(f[0]),_(f[1])]:_(f),done:p}},[Symbol.iterator](){return this}}}}function ys(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function v$(){const e={get(o){return Ju(this,o)},get size(){return e_(this)},has:Xu,add:N0,set:I0,delete:F0,clear:R0,forEach:t_(!1,!1)},t={get(o){return Ju(this,o,!1,!0)},get size(){return e_(this)},has:Xu,add:N0,set:I0,delete:F0,clear:R0,forEach:t_(!1,!0)},a={get(o){return Ju(this,o,!0)},get size(){return e_(this,!0)},has(o){return Xu.call(this,o,!0)},add:ys("add"),set:ys("set"),delete:ys("delete"),clear:ys("clear"),forEach:t_(!0,!1)},n={get(o){return Ju(this,o,!0,!0)},get size(){return e_(this,!0)},has(o){return Xu.call(this,o,!0)},add:ys("add"),set:ys("set"),delete:ys("delete"),clear:ys("clear"),forEach:t_(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach(o=>{e[o]=a_(o,!1,!1),a[o]=a_(o,!0,!1),t[o]=a_(o,!1,!0),n[o]=a_(o,!0,!0)}),[e,a,t,n]}const[y$,b$,k$,w$]=v$();function Sm(e,t){const a=t?e?w$:k$:e?b$:y$;return(n,i,o)=>i==="__v_isReactive"?!e:i==="__v_isReadonly"?e:i==="__v_raw"?n:Reflect.get(Vt(a,i)&&i in n?a:n,i,o)}const D$={get:Sm(!1,!1)},x$={get:Sm(!1,!0)},S$={get:Sm(!0,!1)},P$={get:Sm(!0,!0)},b1=new WeakMap,k1=new WeakMap,w1=new WeakMap,D1=new WeakMap;function E$(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function z$(e){return e.__v_skip||!Object.isExtensible(e)?0:E$(ZM(e))}function ui(e){return Us(e)?e:Pm(e,!1,p$,D$,b1)}function Bv(e){return Pm(e,!1,h$,x$,k1)}function Uv(e){return Pm(e,!0,f$,S$,w1)}function A$(e){return Pm(e,!0,g$,P$,D1)}function Pm(e,t,a,n,i){if(!sa(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const o=i.get(e);if(o)return o;const s=z$(e);if(s===0)return e;const l=new Proxy(e,s===2?n:a);return i.set(e,l),l}function Gi(e){return Us(e)?Gi(e.__v_raw):!!(e&&e.__v_isReactive)}function Us(e){return!!(e&&e.__v_isReadonly)}function pd(e){return!!(e&&e.__v_isShallow)}function Vv(e){return Gi(e)||Us(e)}function et(e){const t=e&&e.__v_raw;return t?et(t):e}function Fd(e){return M_(e,"__v_skip",!0),e}const fd=e=>sa(e)?ui(e):e,qv=e=>sa(e)?Uv(e):e;class x1{constructor(t,a,n,i){this._setter=a,this.dep=void 0,this.__v_isRef=!0,this.__v_isReadonly=!1,this.effect=new Kl(()=>t(this._value),()=>Rl(this,1),()=>this.dep&&p1(this.dep)),this.effect.computed=this,this.effect.active=this._cacheable=!i,this.__v_isReadonly=n}get value(){const t=et(this);return(!t._cacheable||t.effect.dirty)&&Ji(t._value,t._value=t.effect.run())&&Rl(t,2),Wv(t),t.effect._dirtyLevel>=1&&Rl(t,1),t._value}set value(t){this._setter(t)}get _dirty(){return this.effect.dirty}set _dirty(t){this.effect.dirty=t}}function C$(e,t,a=!1){let n,i;const o=_t(e);return o?(n=e,i=Rn):(n=e.get,i=e.set),new x1(n,i,o||!i,a)}function Wv(e){Os&&Pr&&(e=et(e),_1(Pr,e.dep||(e.dep=f1(()=>e.dep=void 0,e instanceof x1?e:void 0))))}function Rl(e,t=2,a){e=et(e);const n=e.dep;n&&m1(n,t)}function ea(e){return!!(e&&e.__v_isRef===!0)}function re(e){return S1(e,!1)}function Hv(e){return S1(e,!0)}function S1(e,t){return ea(e)?e:new T$(e,t)}class T${constructor(t,a){this.__v_isShallow=a,this.dep=void 0,this.__v_isRef=!0,this._rawValue=a?t:et(t),this._value=a?t:fd(t)}get value(){return Wv(this),this._value}set value(t){const a=this.__v_isShallow||pd(t)||Us(t);t=a?t:et(t),Ji(t,this._rawValue)&&(this._rawValue=t,this._value=a?t:fd(t),Rl(this,2))}}function j$(e){Rl(e,2)}function O(e){return ea(e)?e.value:e}function N$(e){return _t(e)?e():O(e)}const I$={get:(e,t,a)=>O(Reflect.get(e,t,a)),set:(e,t,a,n)=>{const i=e[t];return ea(i)&&!ea(a)?(i.value=a,!0):Reflect.set(e,t,a,n)}};function Kv(e){return Gi(e)?e:new Proxy(e,I$)}class F${constructor(t){this.dep=void 0,this.__v_isRef=!0;const{get:a,set:n}=t(()=>Wv(this),()=>Rl(this));this._get=a,this._set=n}get value(){return this._get()}set value(t){this._set(t)}}function P1(e){return new F$(e)}function Yv(e){const t=Ye(e)?new Array(e.length):{};for(const a in e)t[a]=z1(e,a);return t}class R${constructor(t,a,n){this._object=t,this._key=a,this._defaultValue=n,this.__v_isRef=!0}get value(){const t=this._object[this._key];return t===void 0?this._defaultValue:t}set value(t){this._object[this._key]=t}get dep(){return d$(et(this._object),this._key)}}class O${constructor(t){this._getter=t,this.__v_isRef=!0,this.__v_isReadonly=!0}get value(){return this._getter()}}function E1(e,t,a){return ea(e)?e:_t(e)?new O$(e):sa(e)&&arguments.length>1?z1(e,t,a):re(e)}function z1(e,t,a){const n=e[t];return ea(n)?n:new R$(e,t,a)}const M$={GET:"get",HAS:"has",ITERATE:"iterate"},$$={SET:"set",ADD:"add",DELETE:"delete",CLEAR:"clear"};/** +**/let ei;class Fv{constructor(t=!1){this.detached=t,this._active=!0,this.effects=[],this.cleanups=[],this.parent=ei,!t&&ei&&(this.index=(ei.scopes||(ei.scopes=[])).push(this)-1)}get active(){return this._active}run(t){if(this._active){const a=ei;try{return ei=this,t()}finally{ei=a}}}on(){ei=this}off(){ei=this.parent}stop(t){if(this._active){let a,n;for(a=0,n=this.effects.length;a=2))break}this._dirtyLevel<2&&(this._dirtyLevel=0),Ks()}return this._dirtyLevel>=2}set dirty(t){this._dirtyLevel=t?2:0}run(){if(this._dirtyLevel=0,!this.active)return this.fn();let t=Rr,a=zs;try{return Rr=!0,zs=this,this._runnings++,Cw(this),this.fn()}finally{jw(this),this._runnings--,zs=a,Rr=t}}stop(){var t;this.active&&(Cw(this),jw(this),(t=this.onStop)==null||t.call(this),this.active=!1)}}function oR(e){return e.value}function Cw(e){e._trackId++,e._depsLength=0}function jw(e){if(e.deps&&e.deps.length>e._depsLength){for(let t=e._depsLength;t{a.dirty&&a.run()});t&&(wa(a,t),t.scope&&cD(a,t.scope)),(!t||!t.lazy)&&a.run();const n=a.run.bind(a);return n.effect=a,n}function sR(e){e.effect.stop()}let Rr=!0,Gh=0;const uD=[];function Ws(){uD.push(Rr),Rr=!1}function Ks(){const e=uD.pop();Rr=e===void 0?!0:e}function Ov(){Gh++}function $v(){for(Gh--;!Gh&&Qh.length;)Qh.shift()()}function _D(e,t,a){if(t.get(e)!==e._trackId){t.set(e,e._trackId);const n=e.deps[e._depsLength];n!==t?(n&&dD(n,e),e.deps[e._depsLength++]=t):e._depsLength++}}const Qh=[];function mD(e,t,a){Ov();for(const n of e.keys())if(n._dirtyLevel{const a=new Map;return a.cleanup=e,a.computed=t,a},L_=new WeakMap,Ps=Symbol(""),Jh=Symbol("");function Bn(e,t,a){if(Rr&&zs){let n=L_.get(e);n||L_.set(e,n=new Map);let i=n.get(a);i||n.set(a,i=fD(()=>n.delete(a))),_D(zs,i)}}function Wo(e,t,a,n,i,o){const r=L_.get(e);if(!r)return;let l=[];if(t==="clear")l=[...r.values()];else if(a==="length"&&Ze(e)){const d=Number(n);r.forEach((u,_)=>{(_==="length"||!Br(_)&&_>=d)&&l.push(u)})}else switch(a!==void 0&&l.push(r.get(a)),t){case"add":Ze(e)?Nv(a)&&l.push(r.get("length")):(l.push(r.get(Ps)),Nl(e)&&l.push(r.get(Jh)));break;case"delete":Ze(e)||(l.push(r.get(Ps)),Nl(e)&&l.push(r.get(Jh)));break;case"set":Nl(e)&&l.push(r.get(Ps));break}Ov();for(const d of l)d&&mD(d,2);$v()}function lR(e,t){var a;return(a=L_.get(e))==null?void 0:a.get(t)}const cR=ym("__proto__,__v_isRef,__isVue"),hD=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(Br)),Tw=dR();function dR(){const e={};return["includes","indexOf","lastIndexOf"].forEach(t=>{e[t]=function(...a){const n=et(this);for(let o=0,r=this.length;o{e[t]=function(...a){Ws(),Ov();const n=et(this)[t].apply(this,a);return $v(),Ks(),n}}),e}function uR(e){const t=et(this);return Bn(t,"has",e),t.hasOwnProperty(e)}class gD{constructor(t=!1,a=!1){this._isReadonly=t,this._shallow=a}get(t,a,n){const i=this._isReadonly,o=this._shallow;if(a==="__v_isReactive")return!i;if(a==="__v_isReadonly")return i;if(a==="__v_isShallow")return o;if(a==="__v_raw")return n===(i?o?xD:wD:o?kD:bD).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(n)?t:void 0;const r=Ze(t);if(!i){if(r&&Vt(Tw,a))return Reflect.get(Tw,a,n);if(a==="hasOwnProperty")return uR}const l=Reflect.get(t,a,n);return(Br(a)?hD.has(a):cR(a))||(i||Bn(t,"get",a),o)?l:ea(l)?r&&Nv(a)?l:l.value:ra(l)?i?Uv(l):ui(l):l}}class vD extends gD{constructor(t=!1){super(!1,t)}set(t,a,n,i){let o=t[a];if(!this._shallow){const d=Ur(o);if(!pd(n)&&!Ur(n)&&(o=et(o),n=et(n)),!Ze(t)&&ea(o)&&!ea(n))return d?!1:(o.value=n,!0)}const r=Ze(t)&&Nv(a)?Number(a)e,xm=e=>Reflect.getPrototypeOf(e);function Ju(e,t,a=!1,n=!1){e=e.__v_raw;const i=et(e),o=et(t);a||(Ji(t,o)&&Bn(i,"get",t),Bn(i,"get",o));const{has:r}=xm(i),l=n?Lv:a?qv:fd;if(r.call(i,t))return l(e.get(t));if(r.call(i,o))return l(e.get(o));e!==i&&e.get(t)}function Xu(e,t=!1){const a=this.__v_raw,n=et(a),i=et(e);return t||(Ji(e,i)&&Bn(n,"has",e),Bn(n,"has",i)),e===i?a.has(e):a.has(e)||a.has(i)}function e_(e,t=!1){return e=e.__v_raw,!t&&Bn(et(e),"iterate",Ps),Reflect.get(e,"size",e)}function Iw(e){e=et(e);const t=et(this);return xm(t).has.call(t,e)||(t.add(e),Wo(t,"add",e,e)),this}function Nw(e,t){t=et(t);const a=et(this),{has:n,get:i}=xm(a);let o=n.call(a,e);o||(e=et(e),o=n.call(a,e));const r=i.call(a,e);return a.set(e,t),o?Ji(t,r)&&Wo(a,"set",e,t):Wo(a,"add",e,t),this}function Fw(e){const t=et(this),{has:a,get:n}=xm(t);let i=a.call(t,e);i||(e=et(e),i=a.call(t,e)),n&&n.call(t,e);const o=t.delete(e);return i&&Wo(t,"delete",e,void 0),o}function Mw(){const e=et(this),t=e.size!==0,a=e.clear();return t&&Wo(e,"clear",void 0,void 0),a}function t_(e,t){return function(n,i){const o=this,r=o.__v_raw,l=et(r),d=t?Lv:e?qv:fd;return!e&&Bn(l,"iterate",Ps),r.forEach((u,_)=>n.call(i,d(u),d(_),o))}}function a_(e,t,a){return function(...n){const i=this.__v_raw,o=et(i),r=Nl(o),l=e==="entries"||e===Symbol.iterator&&r,d=e==="keys"&&r,u=i[e](...n),_=a?Lv:t?qv:fd;return!t&&Bn(o,"iterate",d?Jh:Ps),{next(){const{value:f,done:p}=u.next();return p?{value:f,done:p}:{value:l?[_(f[0]),_(f[1])]:_(f),done:p}},[Symbol.iterator](){return this}}}}function yr(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function hR(){const e={get(o){return Ju(this,o)},get size(){return e_(this)},has:Xu,add:Iw,set:Nw,delete:Fw,clear:Mw,forEach:t_(!1,!1)},t={get(o){return Ju(this,o,!1,!0)},get size(){return e_(this)},has:Xu,add:Iw,set:Nw,delete:Fw,clear:Mw,forEach:t_(!1,!0)},a={get(o){return Ju(this,o,!0)},get size(){return e_(this,!0)},has(o){return Xu.call(this,o,!0)},add:yr("add"),set:yr("set"),delete:yr("delete"),clear:yr("clear"),forEach:t_(!0,!1)},n={get(o){return Ju(this,o,!0,!0)},get size(){return e_(this,!0)},has(o){return Xu.call(this,o,!0)},add:yr("add"),set:yr("set"),delete:yr("delete"),clear:yr("clear"),forEach:t_(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach(o=>{e[o]=a_(o,!1,!1),a[o]=a_(o,!0,!1),t[o]=a_(o,!1,!0),n[o]=a_(o,!0,!0)}),[e,a,t,n]}const[gR,vR,yR,bR]=hR();function Dm(e,t){const a=t?e?bR:yR:e?vR:gR;return(n,i,o)=>i==="__v_isReactive"?!e:i==="__v_isReadonly"?e:i==="__v_raw"?n:Reflect.get(Vt(a,i)&&i in n?a:n,i,o)}const kR={get:Dm(!1,!1)},wR={get:Dm(!1,!0)},xR={get:Dm(!0,!1)},DR={get:Dm(!0,!0)},bD=new WeakMap,kD=new WeakMap,wD=new WeakMap,xD=new WeakMap;function SR(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function zR(e){return e.__v_skip||!Object.isExtensible(e)?0:SR(KM(e))}function ui(e){return Ur(e)?e:Sm(e,!1,_R,kR,bD)}function Bv(e){return Sm(e,!1,pR,wR,kD)}function Uv(e){return Sm(e,!0,mR,xR,wD)}function PR(e){return Sm(e,!0,fR,DR,xD)}function Sm(e,t,a,n,i){if(!ra(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const o=i.get(e);if(o)return o;const r=zR(e);if(r===0)return e;const l=new Proxy(e,r===2?n:a);return i.set(e,l),l}function Gi(e){return Ur(e)?Gi(e.__v_raw):!!(e&&e.__v_isReactive)}function Ur(e){return!!(e&&e.__v_isReadonly)}function pd(e){return!!(e&&e.__v_isShallow)}function Vv(e){return Gi(e)||Ur(e)}function et(e){const t=e&&e.__v_raw;return t?et(t):e}function Fd(e){return O_(e,"__v_skip",!0),e}const fd=e=>ra(e)?ui(e):e,qv=e=>ra(e)?Uv(e):e;class DD{constructor(t,a,n,i){this._setter=a,this.dep=void 0,this.__v_isRef=!0,this.__v_isReadonly=!1,this.effect=new Kl(()=>t(this._value),()=>Ml(this,1),()=>this.dep&&pD(this.dep)),this.effect.computed=this,this.effect.active=this._cacheable=!i,this.__v_isReadonly=n}get value(){const t=et(this);return(!t._cacheable||t.effect.dirty)&&Ji(t._value,t._value=t.effect.run())&&Ml(t,2),Hv(t),t.effect._dirtyLevel>=1&&Ml(t,1),t._value}set value(t){this._setter(t)}get _dirty(){return this.effect.dirty}set _dirty(t){this.effect.dirty=t}}function ER(e,t,a=!1){let n,i;const o=_t(e);return o?(n=e,i=Mn):(n=e.get,i=e.set),new DD(n,i,o||!i,a)}function Hv(e){Rr&&zs&&(e=et(e),_D(zs,e.dep||(e.dep=fD(()=>e.dep=void 0,e instanceof DD?e:void 0))))}function Ml(e,t=2,a){e=et(e);const n=e.dep;n&&mD(n,t)}function ea(e){return!!(e&&e.__v_isRef===!0)}function le(e){return SD(e,!1)}function Wv(e){return SD(e,!0)}function SD(e,t){return ea(e)?e:new AR(e,t)}class AR{constructor(t,a){this.__v_isShallow=a,this.dep=void 0,this.__v_isRef=!0,this._rawValue=a?t:et(t),this._value=a?t:fd(t)}get value(){return Hv(this),this._value}set value(t){const a=this.__v_isShallow||pd(t)||Ur(t);t=a?t:et(t),Ji(t,this._rawValue)&&(this._rawValue=t,this._value=a?t:fd(t),Ml(this,2))}}function CR(e){Ml(e,2)}function L(e){return ea(e)?e.value:e}function jR(e){return _t(e)?e():L(e)}const TR={get:(e,t,a)=>L(Reflect.get(e,t,a)),set:(e,t,a,n)=>{const i=e[t];return ea(i)&&!ea(a)?(i.value=a,!0):Reflect.set(e,t,a,n)}};function Kv(e){return Gi(e)?e:new Proxy(e,TR)}class IR{constructor(t){this.dep=void 0,this.__v_isRef=!0;const{get:a,set:n}=t(()=>Hv(this),()=>Ml(this));this._get=a,this._set=n}get value(){return this._get()}set value(t){this._set(t)}}function zD(e){return new IR(e)}function Yv(e){const t=Ze(e)?new Array(e.length):{};for(const a in e)t[a]=ED(e,a);return t}class NR{constructor(t,a,n){this._object=t,this._key=a,this._defaultValue=n,this.__v_isRef=!0}get value(){const t=this._object[this._key];return t===void 0?this._defaultValue:t}set value(t){this._object[this._key]=t}get dep(){return lR(et(this._object),this._key)}}class FR{constructor(t){this._getter=t,this.__v_isRef=!0,this.__v_isReadonly=!0}get value(){return this._getter()}}function PD(e,t,a){return ea(e)?e:_t(e)?new FR(e):ra(e)&&arguments.length>1?ED(e,t,a):le(e)}function ED(e,t,a){const n=e[t];return ea(n)?n:new NR(e,t,a)}const MR={GET:"get",HAS:"has",ITERATE:"iterate"},RR={SET:"set",ADD:"add",DELETE:"delete",CLEAR:"clear"};/** * @vue/runtime-core v3.4.15 * (c) 2018-present Yuxi (Evan) You and Vue contributors * @license MIT -**/function L$(e,t){}const B$={SETUP_FUNCTION:0,0:"SETUP_FUNCTION",RENDER_FUNCTION:1,1:"RENDER_FUNCTION",WATCH_GETTER:2,2:"WATCH_GETTER",WATCH_CALLBACK:3,3:"WATCH_CALLBACK",WATCH_CLEANUP:4,4:"WATCH_CLEANUP",NATIVE_EVENT_HANDLER:5,5:"NATIVE_EVENT_HANDLER",COMPONENT_EVENT_HANDLER:6,6:"COMPONENT_EVENT_HANDLER",VNODE_HOOK:7,7:"VNODE_HOOK",DIRECTIVE_HOOK:8,8:"DIRECTIVE_HOOK",TRANSITION_HOOK:9,9:"TRANSITION_HOOK",APP_ERROR_HANDLER:10,10:"APP_ERROR_HANDLER",APP_WARN_HANDLER:11,11:"APP_WARN_HANDLER",FUNCTION_REF:12,12:"FUNCTION_REF",ASYNC_COMPONENT_LOADER:13,13:"ASYNC_COMPONENT_LOADER",SCHEDULER:14,14:"SCHEDULER"},U$={sp:"serverPrefetch hook",bc:"beforeCreate hook",c:"created hook",bm:"beforeMount hook",m:"mounted hook",bu:"beforeUpdate hook",u:"updated",bum:"beforeUnmount hook",um:"unmounted hook",a:"activated hook",da:"deactivated hook",ec:"errorCaptured hook",rtc:"renderTracked hook",rtg:"renderTriggered hook",0:"setup function",1:"render function",2:"watcher getter",3:"watcher callback",4:"watcher cleanup function",5:"native event handler",6:"component event handler",7:"vnode hook",8:"directive hook",9:"transition hook",10:"app errorHandler",11:"app warnHandler",12:"ref function",13:"async component loader",14:"scheduler flush. This is likely a Vue internals bug. Please open an issue at https://github.com/vuejs/core ."};function Ko(e,t,a,n){let i;try{i=n?e(...n):e()}catch(o){Yr(o,t,a)}return i}function li(e,t,a,n){if(_t(e)){const o=Ko(e,t,a,n);return o&&Nv(o)&&o.catch(s=>{Yr(s,t,a)}),o}const i=[];for(let o=0;o>>1,i=ln[n],o=gd(i);ofo&&ln.splice(t,1)}function B_(e){Ye(e)?Ol.push(...e):(!zs||!zs.includes(e,e.allowRecurse?vr+1:vr))&&Ol.push(e),C1()}function O0(e,t,a=hd?fo+1:0){for(;agd(a)-gd(n));if(Ol.length=0,zs){zs.push(...t);return}for(zs=t,vr=0;vre.id==null?1/0:e.id,H$=(e,t)=>{const a=gd(e)-gd(t);if(a===0){if(e.pre&&!t.pre)return-1;if(t.pre&&!e.pre)return 1}return a};function T1(e){eg=!1,hd=!0,ln.sort(H$);try{for(fo=0;foxl.emit(i,...o)),n_=[]):typeof window<"u"&&window.HTMLElement&&!((n=(a=window.navigator)==null?void 0:a.userAgent)!=null&&n.includes("jsdom"))?((t.__VUE_DEVTOOLS_HOOK_REPLAY__=t.__VUE_DEVTOOLS_HOOK_REPLAY__||[]).push(o=>{j1(o,t)}),setTimeout(()=>{xl||(t.__VUE_DEVTOOLS_HOOK_REPLAY__=null,n_=[])},3e3)):n_=[]}function K$(e,t,...a){if(e.isUnmounted)return;const n=e.vnode.props||ia;let i=a;const o=t.startsWith("update:"),s=o&&t.slice(7);if(s&&s in n){const _=`${s==="modelValue"?"model":s}Modifiers`,{number:f,trim:p}=n[_]||ia;p&&(i=a.map(h=>Da(h)?h.trim():h)),f&&(i=a.map(md))}let l,d=n[l=Jc(t)]||n[l=Jc(wn(t))];!d&&o&&(d=n[l=Jc(ai(t))]),d&&li(d,e,6,i);const u=n[l+"Once"];if(u){if(!e.emitted)e.emitted={};else if(e.emitted[l])return;e.emitted[l]=!0,li(u,e,6,i)}}function N1(e,t,a=!1){const n=t.emitsCache,i=n.get(e);if(i!==void 0)return i;const o=e.emits;let s={},l=!1;if(!_t(e)){const d=u=>{const _=N1(u,t,!0);_&&(l=!0,wa(s,_))};!a&&t.mixins.length&&t.mixins.forEach(d),e.extends&&d(e.extends),e.mixins&&e.mixins.forEach(d)}return!o&&!l?(sa(e)&&n.set(e,null),null):(Ye(o)?o.forEach(d=>s[d]=null):wa(s,o),sa(e)&&n.set(e,s),s)}function zm(e,t){return!e||!Nd(t)?!1:(t=t.slice(2).replace(/Once$/,""),Vt(e,t[0].toLowerCase()+t.slice(1))||Vt(e,ai(t))||Vt(e,t))}let Ma=null,Am=null;function vd(e){const t=Ma;return Ma=e,Am=e&&e.type.__scopeId||null,t}function I1(e){Am=e}function F1(){Am=null}const R1=e=>_e;function _e(e,t=Ma,a){if(!t||e._n)return e;const n=(...i)=>{n._d&&lg(-1);const o=vd(t);let s;try{s=e(...i)}finally{vd(o),n._d&&lg(1)}return s};return n._n=!0,n._c=!0,n._d=!0,n}function S_(e){const{type:t,vnode:a,proxy:n,withProxy:i,props:o,propsOptions:[s],slots:l,attrs:d,emit:u,render:_,renderCache:f,data:p,setupState:h,ctx:g,inheritAttrs:y}=e;let k,b;const P=vd(e);try{if(a.shapeFlag&4){const x=i||n,E=x;k=ti(_.call(E,x,f,o,h,p,g)),b=d}else{const x=t;k=ti(x.length>1?x(o,{attrs:d,slots:l,emit:u}):x(o,null)),b=t.props?d:Z$(d)}}catch(x){td.length=0,Yr(x,e,1),k=G(cn)}let w=k;if(b&&y!==!1){const x=Object.keys(b),{shapeFlag:E}=w;x.length&&E&7&&(s&&x.some(Tv)&&(b=G$(b,s)),w=Xi(w,b))}return a.dirs&&(w=Xi(w),w.dirs=w.dirs?w.dirs.concat(a.dirs):a.dirs),a.transition&&(w.transition=a.transition),k=w,vd(P),k}function Y$(e,t=!0){let a;for(let n=0;n{let t;for(const a in e)(a==="class"||a==="style"||Nd(a))&&((t||(t={}))[a]=e[a]);return t},G$=(e,t)=>{const a={};for(const n in e)(!Tv(n)||!(n.slice(9)in t))&&(a[n]=e[n]);return a};function Q$(e,t,a){const{props:n,children:i,component:o}=e,{props:s,children:l,patchFlag:d}=t,u=o.emitsOptions;if(t.dirs||t.transition)return!0;if(a&&d>=0){if(d&1024)return!0;if(d&16)return n?M0(n,s,u):!!s;if(d&8){const _=t.dynamicProps;for(let f=0;f<_.length;f++){const p=_[f];if(s[p]!==n[p]&&!zm(u,p))return!0}}}else return(i||l)&&(!l||!l.$stable)?!0:n===s?!1:n?s?M0(n,s,u):!0:!!s;return!1}function M0(e,t,a){const n=Object.keys(t);if(n.length!==Object.keys(e).length)return!0;for(let i=0;ie.__isSuspense;let tg=0;const X$={name:"Suspense",__isSuspense:!0,process(e,t,a,n,i,o,s,l,d,u){if(e==null)tL(t,a,n,i,o,s,l,d,u);else{if(o&&o.deps>0){t.suspense=e.suspense;return}aL(e,t,a,n,i,s,l,d,u)}},hydrate:nL,create:Xv,normalize:iL},eL=X$;function yd(e,t){const a=e.props&&e.props[t];_t(a)&&a()}function tL(e,t,a,n,i,o,s,l,d){const{p:u,o:{createElement:_}}=d,f=_("div"),p=e.suspense=Xv(e,i,n,t,f,a,o,s,l,d);u(null,p.pendingBranch=e.ssContent,f,null,n,p,o,s),p.deps>0?(yd(e,"onPending"),yd(e,"onFallback"),u(null,e.ssFallback,t,a,n,null,o,s),Ml(p,e.ssFallback)):p.resolve(!1,!0)}function aL(e,t,a,n,i,o,s,l,{p:d,um:u,o:{createElement:_}}){const f=t.suspense=e.suspense;f.vnode=t,t.el=e.el;const p=t.ssContent,h=t.ssFallback,{activeBranch:g,pendingBranch:y,isInFallback:k,isHydrating:b}=f;if(y)f.pendingBranch=p,Hi(p,y)?(d(y,p,f.hiddenContainer,null,i,f,o,s,l),f.deps<=0?f.resolve():k&&(b||(d(g,h,a,n,i,null,o,s,l),Ml(f,h)))):(f.pendingId=tg++,b?(f.isHydrating=!1,f.activeBranch=y):u(y,i,f),f.deps=0,f.effects.length=0,f.hiddenContainer=_("div"),k?(d(null,p,f.hiddenContainer,null,i,f,o,s,l),f.deps<=0?f.resolve():(d(g,h,a,n,i,null,o,s,l),Ml(f,h))):g&&Hi(p,g)?(d(g,p,a,n,i,f,o,s,l),f.resolve(!0)):(d(null,p,f.hiddenContainer,null,i,f,o,s,l),f.deps<=0&&f.resolve()));else if(g&&Hi(p,g))d(g,p,a,n,i,f,o,s,l),Ml(f,p);else if(yd(t,"onPending"),f.pendingBranch=p,p.shapeFlag&512?f.pendingId=p.component.suspenseId:f.pendingId=tg++,d(null,p,f.hiddenContainer,null,i,f,o,s,l),f.deps<=0)f.resolve();else{const{timeout:P,pendingId:w}=f;P>0?setTimeout(()=>{f.pendingId===w&&f.fallback(h)},P):P===0&&f.fallback(h)}}function Xv(e,t,a,n,i,o,s,l,d,u,_=!1){const{p:f,m:p,um:h,n:g,o:{parentNode:y,remove:k}}=u;let b;const P=oL(e);P&&t!=null&&t.pendingBranch&&(b=t.pendingId,t.deps++);const w=e.props?$_(e.props.timeout):void 0,x=o,E={vnode:e,parent:t,parentComponent:a,namespace:s,container:n,hiddenContainer:i,deps:0,pendingId:tg++,timeout:typeof w=="number"?w:-1,activeBranch:null,pendingBranch:null,isInFallback:!_,isHydrating:_,isUnmounted:!1,effects:[],resolve(C=!1,j=!1){const{vnode:A,activeBranch:U,pendingBranch:V,pendingId:ee,effects:J,parentComponent:ie,container:Te}=E;let ze=!1;E.isHydrating?E.isHydrating=!1:C||(ze=U&&V.transition&&V.transition.mode==="out-in",ze&&(U.transition.afterLeave=()=>{ee===E.pendingId&&(p(V,Te,o===x?g(U):o,0),B_(J))}),U&&(y(U.el)!==E.hiddenContainer&&(o=g(U)),h(U,ie,E,!0)),ze||p(V,Te,o,0)),Ml(E,V),E.pendingBranch=null,E.isInFallback=!1;let ce=E.parent,Ae=!1;for(;ce;){if(ce.pendingBranch){ce.effects.push(...J),Ae=!0;break}ce=ce.parent}!Ae&&!ze&&B_(J),E.effects=[],P&&t&&t.pendingBranch&&b===t.pendingId&&(t.deps--,t.deps===0&&!j&&t.resolve()),yd(A,"onResolve")},fallback(C){if(!E.pendingBranch)return;const{vnode:j,activeBranch:A,parentComponent:U,container:V,namespace:ee}=E;yd(j,"onFallback");const J=g(A),ie=()=>{E.isInFallback&&(f(null,C,V,J,U,null,ee,l,d),Ml(E,C))},Te=C.transition&&C.transition.mode==="out-in";Te&&(A.transition.afterLeave=ie),E.isInFallback=!0,h(A,U,null,!0),Te||ie()},move(C,j,A){E.activeBranch&&p(E.activeBranch,C,j,A),E.container=C},next(){return E.activeBranch&&g(E.activeBranch)},registerDep(C,j){const A=!!E.pendingBranch;A&&E.deps++;const U=C.vnode.el;C.asyncDep.catch(V=>{Yr(V,C,0)}).then(V=>{if(C.isUnmounted||E.isUnmounted||E.pendingId!==C.suspenseId)return;C.asyncResolved=!0;const{vnode:ee}=C;ug(C,V,!1),U&&(ee.el=U);const J=!U&&C.subTree.el;j(C,ee,y(U||C.subTree.el),U?null:g(C.subTree),E,s,d),J&&k(J),Gv(C,ee.el),A&&--E.deps===0&&E.resolve()})},unmount(C,j){E.isUnmounted=!0,E.activeBranch&&h(E.activeBranch,a,C,j),E.pendingBranch&&h(E.pendingBranch,a,C,j)}};return E}function nL(e,t,a,n,i,o,s,l,d){const u=t.suspense=Xv(t,n,a,e.parentNode,document.createElement("div"),null,i,o,s,l,!0),_=d(e,u.pendingBranch=t.ssContent,a,u,o,s);return u.deps===0&&u.resolve(!1,!0),_}function iL(e){const{shapeFlag:t,children:a}=e,n=t&32;e.ssContent=L0(n?a.default:a),e.ssFallback=n?L0(a.fallback):G(cn)}function L0(e){let t;if(_t(e)){const a=Or&&e._c;a&&(e._d=!1,$()),e=e(),a&&(e._d=!0,t=On,gP())}return Ye(e)&&(e=Y$(e)),e=ti(e),t&&!e.dynamicChildren&&(e.dynamicChildren=t.filter(a=>a!==e)),e}function L1(e,t){t&&t.pendingBranch?Ye(e)?t.effects.push(...e):t.effects.push(e):B_(e)}function Ml(e,t){e.activeBranch=t;const{vnode:a,parentComponent:n}=e;let i=t.el;for(;!i&&t.component;)t=t.component.subTree,i=t.el;a.el=i,n&&n.subTree===a&&(n.vnode.el=i,Gv(n,i))}function oL(e){var t;return((t=e.props)==null?void 0:t.suspensible)!=null&&e.props.suspensible!==!1}const B1=Symbol.for("v-scx"),U1=()=>bt(B1);function Ca(e,t){return Rd(e,null,t)}function V1(e,t){return Rd(e,null,{flush:"post"})}function q1(e,t){return Rd(e,null,{flush:"sync"})}const i_={};function Yt(e,t,a){return Rd(e,t,a)}function Rd(e,t,{immediate:a,deep:n,flush:i,once:o,onTrack:s,onTrigger:l}=ia){if(t&&o){const C=t;t=(...j)=>{C(...j),E()}}const d=Ua,u=C=>n===!0?C:wr(C,n===!1?1:void 0);let _,f=!1,p=!1;if(ea(e)?(_=()=>e.value,f=pd(e)):Gi(e)?(_=()=>u(e),f=!0):Ye(e)?(p=!0,f=e.some(C=>Gi(C)||pd(C)),_=()=>e.map(C=>{if(ea(C))return C.value;if(Gi(C))return u(C);if(_t(C))return Ko(C,d,2)})):_t(e)?t?_=()=>Ko(e,d,2):_=()=>(h&&h(),li(e,d,3,[g])):_=Rn,t&&n){const C=_;_=()=>wr(C())}let h,g=C=>{h=w.onStop=()=>{Ko(C,d,4),h=w.onStop=void 0}},y;if($d)if(g=Rn,t?a&&li(t,d,3,[_(),p?[]:void 0,g]):_(),i==="sync"){const C=U1();y=C.__watcherHandles||(C.__watcherHandles=[])}else return Rn;let k=p?new Array(e.length).fill(i_):i_;const b=()=>{if(!(!w.active||!w.dirty))if(t){const C=w.run();(n||f||(p?C.some((j,A)=>Ji(j,k[A])):Ji(C,k)))&&(h&&h(),li(t,d,3,[C,k===i_?void 0:p&&k[0]===i_?[]:k,g]),k=C)}else w.run()};b.allowRecurse=!!t;let P;i==="sync"?P=b:i==="post"?P=()=>en(b,d&&d.suspense):(b.pre=!0,d&&(b.id=d.uid),P=()=>Em(b));const w=new Kl(_,Rn,P),x=Dm(),E=()=>{w.stop(),x&&jv(x.effects,w)};return t?a?b():k=w.run():i==="post"?en(w.run.bind(w),d&&d.suspense):w.run(),y&&y.push(E),E}function sL(e,t,a){const n=this.proxy,i=Da(e)?e.includes(".")?W1(n,e):()=>n[e]:e.bind(n,n);let o;_t(t)?o=t:(o=t.handler,a=t);const s=Mr(this),l=Rd(i,o.bind(n),a);return s(),l}function W1(e,t){const a=t.split(".");return()=>{let n=e;for(let i=0;i0){if(a>=t)return e;a++}if(n=n||new Set,n.has(e))return e;if(n.add(e),ea(e))wr(e.value,t,a,n);else if(Ye(e))for(let i=0;i{wr(i,t,a,n)});else if(i1(e))for(const i in e)wr(e[i],t,a,n);return e}function Ir(e,t){if(Ma===null)return e;const a=Fm(Ma)||Ma.proxy,n=e.dirs||(e.dirs=[]);for(let i=0;i{e.isMounted=!0}),Md(()=>{e.isUnmounting=!0}),e}const xi=[Function,Array],ty={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:xi,onEnter:xi,onAfterEnter:xi,onEnterCancelled:xi,onBeforeLeave:xi,onLeave:xi,onAfterLeave:xi,onLeaveCancelled:xi,onBeforeAppear:xi,onAppear:xi,onAfterAppear:xi,onAppearCancelled:xi},rL={name:"BaseTransition",props:ty,setup(e,{slots:t}){const a=Oi(),n=ey();let i;return()=>{const o=t.default&&Tm(t.default(),!0);if(!o||!o.length)return;let s=o[0];if(o.length>1){for(const y of o)if(y.type!==cn){s=y;break}}const l=et(e),{mode:d}=l;if(n.isLeaving)return _h(s);const u=B0(s);if(!u)return _h(s);const _=Yl(u,l,n,a);Fr(u,_);const f=a.subTree,p=f&&B0(f);let h=!1;const{getTransitionKey:g}=u.type;if(g){const y=g();i===void 0?i=y:y!==i&&(i=y,h=!0)}if(p&&p.type!==cn&&(!Hi(u,p)||h)){const y=Yl(p,l,n,a);if(Fr(p,y),d==="out-in")return n.isLeaving=!0,y.afterLeave=()=>{n.isLeaving=!1,a.update.active!==!1&&(a.effect.dirty=!0,a.update())},_h(s);d==="in-out"&&u.type!==cn&&(y.delayLeave=(k,b,P)=>{const w=K1(n,p);w[String(p.key)]=p,k[As]=()=>{b(),k[As]=void 0,delete _.delayedLeave},_.delayedLeave=P})}return s}}},H1=rL;function K1(e,t){const{leavingVNodes:a}=e;let n=a.get(t.type);return n||(n=Object.create(null),a.set(t.type,n)),n}function Yl(e,t,a,n){const{appear:i,mode:o,persisted:s=!1,onBeforeEnter:l,onEnter:d,onAfterEnter:u,onEnterCancelled:_,onBeforeLeave:f,onLeave:p,onAfterLeave:h,onLeaveCancelled:g,onBeforeAppear:y,onAppear:k,onAfterAppear:b,onAppearCancelled:P}=t,w=String(e.key),x=K1(a,e),E=(A,U)=>{A&&li(A,n,9,U)},C=(A,U)=>{const V=U[1];E(A,U),Ye(A)?A.every(ee=>ee.length<=1)&&V():A.length<=1&&V()},j={mode:o,persisted:s,beforeEnter(A){let U=l;if(!a.isMounted)if(i)U=y||l;else return;A[As]&&A[As](!0);const V=x[w];V&&Hi(e,V)&&V.el[As]&&V.el[As](),E(U,[A])},enter(A){let U=d,V=u,ee=_;if(!a.isMounted)if(i)U=k||d,V=b||u,ee=P||_;else return;let J=!1;const ie=A[o_]=Te=>{J||(J=!0,Te?E(ee,[A]):E(V,[A]),j.delayedLeave&&j.delayedLeave(),A[o_]=void 0)};U?C(U,[A,ie]):ie()},leave(A,U){const V=String(e.key);if(A[o_]&&A[o_](!0),a.isUnmounting)return U();E(f,[A]);let ee=!1;const J=A[As]=ie=>{ee||(ee=!0,U(),ie?E(g,[A]):E(h,[A]),A[As]=void 0,x[V]===e&&delete x[V])};x[V]=e,p?C(p,[A,J]):J()},clone(A){return Yl(A,t,a,n)}};return j}function _h(e){if(Od(e))return e=Xi(e),e.children=null,e}function B0(e){return Od(e)?e.children?e.children[0]:void 0:e}function Fr(e,t){e.shapeFlag&6&&e.component?Fr(e.component.subTree,t):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function Tm(e,t=!1,a){let n=[],i=0;for(let o=0;o1)for(let o=0;o!!e.type.__asyncLoader;/*! #__NO_SIDE_EFFECTS__ */function P_(e){_t(e)&&(e={loader:e});const{loader:t,loadingComponent:a,errorComponent:n,delay:i=200,timeout:o,suspensible:s=!0,onError:l}=e;let d=null,u,_=0;const f=()=>(_++,d=null,p()),p=()=>{let h;return d||(h=d=t().catch(g=>{if(g=g instanceof Error?g:new Error(String(g)),l)return new Promise((y,k)=>{l(g,()=>y(f()),()=>k(g),_+1)});throw g}).then(g=>h!==d&&d?d:(g&&(g.__esModule||g[Symbol.toStringTag]==="Module")&&(g=g.default),u=g,g)))};return kt({name:"AsyncComponentWrapper",__asyncLoader:p,get __asyncResolved(){return u},setup(){const h=Ua;if(u)return()=>mh(u,h);const g=P=>{d=null,Yr(P,h,13,!n)};if(s&&h.suspense||$d)return p().then(P=>()=>mh(P,h)).catch(P=>(g(P),()=>n?G(n,{error:P}):null));const y=re(!1),k=re(),b=re(!!i);return i&&setTimeout(()=>{b.value=!1},i),o!=null&&setTimeout(()=>{if(!y.value&&!k.value){const P=new Error(`Async component timed out after ${o}ms.`);g(P),k.value=P}},o),p().then(()=>{y.value=!0,h.parent&&Od(h.parent.vnode)&&(h.parent.effect.dirty=!0,Em(h.parent.update))}).catch(P=>{g(P),k.value=P}),()=>{if(y.value&&u)return mh(u,h);if(k.value&&n)return G(n,{error:k.value});if(a&&!b.value)return G(a)}}})}function mh(e,t){const{ref:a,props:n,children:i,ce:o}=t.vnode,s=G(e,n,i);return s.ref=a,s.ce=o,delete t.vnode.ce,s}const Od=e=>e.type.__isKeepAlive,lL={name:"KeepAlive",__isKeepAlive:!0,props:{include:[String,RegExp,Array],exclude:[String,RegExp,Array],max:[String,Number]},setup(e,{slots:t}){const a=Oi(),n=a.ctx;if(!n.renderer)return()=>{const P=t.default&&t.default();return P&&P.length===1?P[0]:P};const i=new Map,o=new Set;let s=null;const l=a.suspense,{renderer:{p:d,m:u,um:_,o:{createElement:f}}}=n,p=f("div");n.activate=(P,w,x,E,C)=>{const j=P.component;u(P,w,x,0,l),d(j.vnode,P,w,x,j,l,E,P.slotScopeIds,C),en(()=>{j.isDeactivated=!1,j.a&&Fl(j.a);const A=P.props&&P.props.onVnodeMounted;A&&Nn(A,j.parent,P)},l)},n.deactivate=P=>{const w=P.component;u(P,p,null,1,l),en(()=>{w.da&&Fl(w.da);const x=P.props&&P.props.onVnodeUnmounted;x&&Nn(x,w.parent,P),w.isDeactivated=!0},l)};function h(P){ph(P),_(P,a,l,!0)}function g(P){i.forEach((w,x)=>{const E=mg(w.type);E&&(!P||!P(E))&&y(x)})}function y(P){const w=i.get(P);!s||!Hi(w,s)?h(w):s&&ph(s),i.delete(P),o.delete(P)}Yt(()=>[e.include,e.exclude],([P,w])=>{P&&g(x=>Kc(P,x)),w&&g(x=>!Kc(w,x))},{flush:"post",deep:!0});let k=null;const b=()=>{k!=null&&i.set(k,fh(a.subTree))};return Ct(b),Nm(b),Md(()=>{i.forEach(P=>{const{subTree:w,suspense:x}=a,E=fh(w);if(P.type===E.type&&P.key===E.key){ph(E);const C=E.component.da;C&&en(C,x);return}h(P)})}),()=>{if(k=null,!t.default)return null;const P=t.default(),w=P[0];if(P.length>1)return s=null,P;if(!Vs(w)||!(w.shapeFlag&4)&&!(w.shapeFlag&128))return s=null,w;let x=fh(w);const E=x.type,C=mg(zr(x)?x.type.__asyncResolved||{}:E),{include:j,exclude:A,max:U}=e;if(j&&(!C||!Kc(j,C))||A&&C&&Kc(A,C))return s=x,w;const V=x.key==null?E:x.key,ee=i.get(V);return x.el&&(x=Xi(x),w.shapeFlag&128&&(w.ssContent=x)),k=V,ee?(x.el=ee.el,x.component=ee.component,x.transition&&Fr(x,x.transition),x.shapeFlag|=512,o.delete(V),o.add(V)):(o.add(V),U&&o.size>parseInt(U,10)&&y(o.values().next().value)),x.shapeFlag|=256,s=x,$1(w.type)?w:x}}},cL=lL;function Kc(e,t){return Ye(e)?e.some(a=>Kc(a,t)):Da(e)?e.split(",").includes(t):YM(e)?e.test(t):!1}function ay(e,t){Y1(e,"a",t)}function ny(e,t){Y1(e,"da",t)}function Y1(e,t,a=Ua){const n=e.__wdc||(e.__wdc=()=>{let i=a;for(;i;){if(i.isDeactivated)return;i=i.parent}return e()});if(jm(t,n,a),a){let i=a.parent;for(;i&&i.parent;)Od(i.parent.vnode)&&dL(n,t,a,i),i=i.parent}}function dL(e,t,a,n){const i=jm(t,e,n,!0);xa(()=>{jv(n[t],i)},a)}function ph(e){e.shapeFlag&=-257,e.shapeFlag&=-513}function fh(e){return e.shapeFlag&128?e.ssContent:e}function jm(e,t,a=Ua,n=!1){if(a){const i=a[e]||(a[e]=[]),o=t.__weh||(t.__weh=(...s)=>{if(a.isUnmounted)return;Hr();const l=Mr(a),d=li(t,a,e,s);return l(),Kr(),d});return n?i.unshift(o):i.push(o),o}}const Xo=e=>(t,a=Ua)=>(!$d||e==="sp")&&jm(e,(...n)=>t(...n),a),iy=Xo("bm"),Ct=Xo("m"),Z1=Xo("bu"),Nm=Xo("u"),Md=Xo("bum"),xa=Xo("um"),G1=Xo("sp"),Q1=Xo("rtg"),J1=Xo("rtc");function X1(e,t=Ua){jm("ec",e,t)}function Un(e,t,a,n){let i;const o=a&&a[n];if(Ye(e)||Da(e)){i=new Array(e.length);for(let s=0,l=e.length;st(s,l,void 0,o&&o[l]));else{const s=Object.keys(e);i=new Array(s.length);for(let l=0,d=s.length;l{const o=n.fn(...i);return o&&(o.key=n.key),o}:n.fn)}return e}function it(e,t,a={},n,i){if(Ma.isCE||Ma.parent&&zr(Ma.parent)&&Ma.parent.isCE)return t!=="default"&&(a.name=t),G("slot",a,n&&n());let o=e[t];o&&o._c&&(o._d=!1),$();const s=o&&tP(o(a)),l=Xe(yt,{key:a.key||s&&s.key||`_${t}`},s||(n?n():[]),s&&e._===1?64:-2);return!i&&l.scopeId&&(l.slotScopeIds=[l.scopeId+"-s"]),o&&o._c&&(o._d=!0),l}function tP(e){return e.some(t=>Vs(t)?!(t.type===cn||t.type===yt&&!tP(t.children)):!0)?e:null}function uL(e,t){const a={};for(const n in e)a[t&&/[A-Z]/.test(n)?`on:${n}`:Jc(n)]=e[n];return a}const ag=e=>e?wP(e)?Fm(e)||e.proxy:ag(e.parent):null,Xc=wa(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=>ag(e.parent),$root:e=>ag(e.root),$emit:e=>e.emit,$options:e=>oy(e),$forceUpdate:e=>e.f||(e.f=()=>{e.effect.dirty=!0,Em(e.update)}),$nextTick:e=>e.n||(e.n=ha.bind(e.proxy)),$watch:e=>sL.bind(e)}),hh=(e,t)=>e!==ia&&!e.__isScriptSetup&&Vt(e,t),ng={get({_:e},t){const{ctx:a,setupState:n,data:i,props:o,accessCache:s,type:l,appContext:d}=e;let u;if(t[0]!=="$"){const h=s[t];if(h!==void 0)switch(h){case 1:return n[t];case 2:return i[t];case 4:return a[t];case 3:return o[t]}else{if(hh(n,t))return s[t]=1,n[t];if(i!==ia&&Vt(i,t))return s[t]=2,i[t];if((u=e.propsOptions[0])&&Vt(u,t))return s[t]=3,o[t];if(a!==ia&&Vt(a,t))return s[t]=4,a[t];ig&&(s[t]=0)}}const _=Xc[t];let f,p;if(_)return t==="$attrs"&&Bn(e,"get",t),_(e);if((f=l.__cssModules)&&(f=f[t]))return f;if(a!==ia&&Vt(a,t))return s[t]=4,a[t];if(p=d.config.globalProperties,Vt(p,t))return p[t]},set({_:e},t,a){const{data:n,setupState:i,ctx:o}=e;return hh(i,t)?(i[t]=a,!0):n!==ia&&Vt(n,t)?(n[t]=a,!0):Vt(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(o[t]=a,!0)},has({_:{data:e,setupState:t,accessCache:a,ctx:n,appContext:i,propsOptions:o}},s){let l;return!!a[s]||e!==ia&&Vt(e,s)||hh(t,s)||(l=o[0])&&Vt(l,s)||Vt(n,s)||Vt(Xc,s)||Vt(i.config.globalProperties,s)},defineProperty(e,t,a){return a.get!=null?e._.accessCache[t]=0:Vt(a,"value")&&this.set(e,t,a.value,null),Reflect.defineProperty(e,t,a)}},_L=wa({},ng,{get(e,t){if(t!==Symbol.unscopables)return ng.get(e,t,e)},has(e,t){return t[0]!=="_"&&!XM(t)}});function mL(){return null}function pL(){return null}function fL(e){}function hL(e){}function gL(){return null}function vL(){}function yL(e,t){return null}function Ys(){return nP().slots}function aP(){return nP().attrs}function nP(){const e=Oi();return e.setupContext||(e.setupContext=SP(e))}function bd(e){return Ye(e)?e.reduce((t,a)=>(t[a]=null,t),{}):e}function bL(e,t){const a=bd(e);for(const n in t){if(n.startsWith("__skip"))continue;let i=a[n];i?Ye(i)||_t(i)?i=a[n]={type:i,default:t[n]}:i.default=t[n]:i===null&&(i=a[n]={default:t[n]}),i&&t[`__skip_${n}`]&&(i.skipFactory=!0)}return a}function kL(e,t){return!e||!t?e||t:Ye(e)&&Ye(t)?e.concat(t):wa({},bd(e),bd(t))}function wL(e,t){const a={};for(const n in e)t.includes(n)||Object.defineProperty(a,n,{enumerable:!0,get:()=>e[n]});return a}function DL(e){const t=Oi();let a=e();return dg(),Nv(a)&&(a=a.catch(n=>{throw Mr(t),n})),[a,()=>Mr(t)]}let ig=!0;function xL(e){const t=oy(e),a=e.proxy,n=e.ctx;ig=!1,t.beforeCreate&&U0(t.beforeCreate,e,"bc");const{data:i,computed:o,methods:s,watch:l,provide:d,inject:u,created:_,beforeMount:f,mounted:p,beforeUpdate:h,updated:g,activated:y,deactivated:k,beforeDestroy:b,beforeUnmount:P,destroyed:w,unmounted:x,render:E,renderTracked:C,renderTriggered:j,errorCaptured:A,serverPrefetch:U,expose:V,inheritAttrs:ee,components:J,directives:ie,filters:Te}=t;if(u&&SL(u,n,null),s)for(const Ae in s){const Pe=s[Ae];_t(Pe)&&(n[Ae]=Pe.bind(a))}if(i){const Ae=i.call(a,a);sa(Ae)&&(e.data=ui(Ae))}if(ig=!0,o)for(const Ae in o){const Pe=o[Ae],He=_t(Pe)?Pe.bind(a,a):_t(Pe.get)?Pe.get.bind(a,a):Rn,oe=!_t(Pe)&&_t(Pe.set)?Pe.set.bind(a):Rn,Ge=B({get:He,set:oe});Object.defineProperty(n,Ae,{enumerable:!0,configurable:!0,get:()=>Ge.value,set:at=>Ge.value=at})}if(l)for(const Ae in l)iP(l[Ae],n,a,Ae);if(d){const Ae=_t(d)?d.call(a):d;Reflect.ownKeys(Ae).forEach(Pe=>{ma(Pe,Ae[Pe])})}_&&U0(_,e,"c");function ce(Ae,Pe){Ye(Pe)?Pe.forEach(He=>Ae(He.bind(a))):Pe&&Ae(Pe.bind(a))}if(ce(iy,f),ce(Ct,p),ce(Z1,h),ce(Nm,g),ce(ay,y),ce(ny,k),ce(X1,A),ce(J1,C),ce(Q1,j),ce(Md,P),ce(xa,x),ce(G1,U),Ye(V))if(V.length){const Ae=e.exposed||(e.exposed={});V.forEach(Pe=>{Object.defineProperty(Ae,Pe,{get:()=>a[Pe],set:He=>a[Pe]=He})})}else e.exposed||(e.exposed={});E&&e.render===Rn&&(e.render=E),ee!=null&&(e.inheritAttrs=ee),J&&(e.components=J),ie&&(e.directives=ie)}function SL(e,t,a=Rn){Ye(e)&&(e=og(e));for(const n in e){const i=e[n];let o;sa(i)?"default"in i?o=bt(i.from||n,i.default,!0):o=bt(i.from||n):o=bt(i),ea(o)?Object.defineProperty(t,n,{enumerable:!0,configurable:!0,get:()=>o.value,set:s=>o.value=s}):t[n]=o}}function U0(e,t,a){li(Ye(e)?e.map(n=>n.bind(t.proxy)):e.bind(t.proxy),t,a)}function iP(e,t,a,n){const i=n.includes(".")?W1(a,n):()=>a[n];if(Da(e)){const o=t[e];_t(o)&&Yt(i,o)}else if(_t(e))Yt(i,e.bind(a));else if(sa(e))if(Ye(e))e.forEach(o=>iP(o,t,a,n));else{const o=_t(e.handler)?e.handler.bind(a):t[e.handler];_t(o)&&Yt(i,o,e)}}function oy(e){const t=e.type,{mixins:a,extends:n}=t,{mixins:i,optionsCache:o,config:{optionMergeStrategies:s}}=e.appContext,l=o.get(t);let d;return l?d=l:!i.length&&!a&&!n?d=t:(d={},i.length&&i.forEach(u=>V_(d,u,s,!0)),V_(d,t,s)),sa(t)&&o.set(t,d),d}function V_(e,t,a,n=!1){const{mixins:i,extends:o}=t;o&&V_(e,o,a,!0),i&&i.forEach(s=>V_(e,s,a,!0));for(const s in t)if(!(n&&s==="expose")){const l=PL[s]||a&&a[s];e[s]=l?l(e[s],t[s]):t[s]}return e}const PL={data:V0,props:q0,emits:q0,methods:Yc,computed:Yc,beforeCreate:gn,created:gn,beforeMount:gn,mounted:gn,beforeUpdate:gn,updated:gn,beforeDestroy:gn,beforeUnmount:gn,destroyed:gn,unmounted:gn,activated:gn,deactivated:gn,errorCaptured:gn,serverPrefetch:gn,components:Yc,directives:Yc,watch:zL,provide:V0,inject:EL};function V0(e,t){return t?e?function(){return wa(_t(e)?e.call(this,this):e,_t(t)?t.call(this,this):t)}:t:e}function EL(e,t){return Yc(og(e),og(t))}function og(e){if(Ye(e)){const t={};for(let a=0;a1)return a&&_t(t)?t.call(n&&n.proxy):t}}function sy(){return!!(Ua||Ma||kd)}function TL(e,t,a,n=!1){const i={},o={};M_(o,Im,1),e.propsDefaults=Object.create(null),sP(e,t,i,o);for(const s in e.propsOptions[0])s in i||(i[s]=void 0);a?e.props=n?i:Bv(i):e.type.props?e.props=i:e.props=o,e.attrs=o}function jL(e,t,a,n){const{props:i,attrs:o,vnode:{patchFlag:s}}=e,l=et(i),[d]=e.propsOptions;let u=!1;if((n||s>0)&&!(s&16)){if(s&8){const _=e.vnode.dynamicProps;for(let f=0;f<_.length;f++){let p=_[f];if(zm(e.emitsOptions,p))continue;const h=t[p];if(d)if(Vt(o,p))h!==o[p]&&(o[p]=h,u=!0);else{const g=wn(p);i[g]=sg(d,l,g,h,e,!1)}else h!==o[p]&&(o[p]=h,u=!0)}}}else{sP(e,t,i,o)&&(u=!0);let _;for(const f in l)(!t||!Vt(t,f)&&((_=ai(f))===f||!Vt(t,_)))&&(d?a&&(a[f]!==void 0||a[_]!==void 0)&&(i[f]=sg(d,l,f,void 0,e,!0)):delete i[f]);if(o!==l)for(const f in o)(!t||!Vt(t,f))&&(delete o[f],u=!0)}u&&Ho(e,"set","$attrs")}function sP(e,t,a,n){const[i,o]=e.propsOptions;let s=!1,l;if(t)for(let d in t){if(Qc(d))continue;const u=t[d];let _;i&&Vt(i,_=wn(d))?!o||!o.includes(_)?a[_]=u:(l||(l={}))[_]=u:zm(e.emitsOptions,d)||(!(d in n)||u!==n[d])&&(n[d]=u,s=!0)}if(o){const d=et(a),u=l||ia;for(let _=0;_{d=!0;const[p,h]=rP(f,t,!0);wa(s,p),h&&l.push(...h)};!a&&t.mixins.length&&t.mixins.forEach(_),e.extends&&_(e.extends),e.mixins&&e.mixins.forEach(_)}if(!o&&!d)return sa(e)&&n.set(e,Nl),Nl;if(Ye(o))for(let _=0;_-1,h[1]=y<0||g-1||Vt(h,"default"))&&l.push(f)}}}const u=[s,l];return sa(e)&&n.set(e,u),u}function W0(e){return e[0]!=="$"}function H0(e){const t=e&&e.toString().match(/^\s*(function|class) (\w+)/);return t?t[2]:e===null?"null":""}function K0(e,t){return H0(e)===H0(t)}function Y0(e,t){return Ye(t)?t.findIndex(a=>K0(a,e)):_t(t)&&K0(t,e)?0:-1}const lP=e=>e[0]==="_"||e==="$stable",ry=e=>Ye(e)?e.map(ti):[ti(e)],NL=(e,t,a)=>{if(t._n)return t;const n=_e((...i)=>ry(t(...i)),a);return n._c=!1,n},cP=(e,t,a)=>{const n=e._ctx;for(const i in e){if(lP(i))continue;const o=e[i];if(_t(o))t[i]=NL(i,o,n);else if(o!=null){const s=ry(o);t[i]=()=>s}}},dP=(e,t)=>{const a=ry(t);e.slots.default=()=>a},IL=(e,t)=>{if(e.vnode.shapeFlag&32){const a=t._;a?(e.slots=et(t),M_(t,"_",a)):cP(t,e.slots={})}else e.slots={},t&&dP(e,t);M_(e.slots,Im,1)},FL=(e,t,a)=>{const{vnode:n,slots:i}=e;let o=!0,s=ia;if(n.shapeFlag&32){const l=t._;l?a&&l===1?o=!1:(wa(i,t),!a&&l===1&&delete i._):(o=!t.$stable,cP(t,i)),s=t}else t&&(dP(e,t),s={default:1});if(o)for(const l in i)!lP(l)&&s[l]==null&&delete i[l]};function q_(e,t,a,n,i=!1){if(Ye(e)){e.forEach((p,h)=>q_(p,t&&(Ye(t)?t[h]:t),a,n,i));return}if(zr(n)&&!i)return;const o=n.shapeFlag&4?Fm(n.component)||n.component.proxy:n.el,s=i?null:o,{i:l,r:d}=e,u=t&&t.r,_=l.refs===ia?l.refs={}:l.refs,f=l.setupState;if(u!=null&&u!==d&&(Da(u)?(_[u]=null,Vt(f,u)&&(f[u]=null)):ea(u)&&(u.value=null)),_t(d))Ko(d,l,12,[s,_]);else{const p=Da(d),h=ea(d),g=e.f;if(p||h){const y=()=>{if(g){const k=p?Vt(f,d)?f[d]:_[d]:d.value;i?Ye(k)&&jv(k,o):Ye(k)?k.includes(o)||k.push(o):p?(_[d]=[o],Vt(f,d)&&(f[d]=_[d])):(d.value=[o],e.k&&(_[e.k]=d.value))}else p?(_[d]=s,Vt(f,d)&&(f[d]=s)):h&&(d.value=s,e.k&&(_[e.k]=s))};i||g?y():(y.id=-1,en(y,a))}}}let bs=!1;const RL=e=>e.namespaceURI.includes("svg")&&e.tagName!=="foreignObject",OL=e=>e.namespaceURI.includes("MathML"),s_=e=>{if(RL(e))return"svg";if(OL(e))return"mathml"},r_=e=>e.nodeType===8;function ML(e){const{mt:t,p:a,o:{patchProp:n,createText:i,nextSibling:o,parentNode:s,remove:l,insert:d,createComment:u}}=e,_=(w,x)=>{if(!x.hasChildNodes()){a(null,w,x),U_(),x._vnode=w;return}bs=!1,f(x.firstChild,w,null,null,null),U_(),x._vnode=w,bs&&console.error("Hydration completed but contains mismatches.")},f=(w,x,E,C,j,A=!1)=>{const U=r_(w)&&w.data==="[",V=()=>y(w,x,E,C,j,U),{type:ee,ref:J,shapeFlag:ie,patchFlag:Te}=x;let ze=w.nodeType;x.el=w,Te===-2&&(A=!1,x.dynamicChildren=null);let ce=null;switch(ee){case Rr:ze!==3?x.children===""?(d(x.el=i(""),s(w),w),ce=w):ce=V():(w.data!==x.children&&(bs=!0,w.data=x.children),ce=o(w));break;case cn:P(w)?(ce=o(w),b(x.el=w.content.firstChild,w,E)):ze!==8||U?ce=V():ce=o(w);break;case Ar:if(U&&(w=o(w),ze=w.nodeType),ze===1||ze===3){ce=w;const Ae=!x.children.length;for(let Pe=0;Pe{A=A||!!x.dynamicChildren;const{type:U,props:V,patchFlag:ee,shapeFlag:J,dirs:ie,transition:Te}=x,ze=U==="input"||U==="option";if(ze||ee!==-1){ie&&po(x,null,E,"created");let ce=!1;if(P(w)){ce=pP(C,Te)&&E&&E.vnode.props&&E.vnode.props.appear;const Pe=w.content.firstChild;ce&&Te.beforeEnter(Pe),b(Pe,w,E),x.el=w=Pe}if(J&16&&!(V&&(V.innerHTML||V.textContent))){let Pe=h(w.firstChild,x,w,E,C,j,A);for(;Pe;){bs=!0;const He=Pe;Pe=Pe.nextSibling,l(He)}}else J&8&&w.textContent!==x.children&&(bs=!0,w.textContent=x.children);if(V)if(ze||!A||ee&48)for(const Pe in V)(ze&&(Pe.endsWith("value")||Pe==="indeterminate")||Nd(Pe)&&!Qc(Pe)||Pe[0]===".")&&n(w,Pe,null,V[Pe],void 0,void 0,E);else V.onClick&&n(w,"onClick",null,V.onClick,void 0,void 0,E);let Ae;(Ae=V&&V.onVnodeBeforeMount)&&Nn(Ae,E,x),ie&&po(x,null,E,"beforeMount"),((Ae=V&&V.onVnodeMounted)||ie||ce)&&L1(()=>{Ae&&Nn(Ae,E,x),ce&&Te.enter(w),ie&&po(x,null,E,"mounted")},C)}return w.nextSibling},h=(w,x,E,C,j,A,U)=>{U=U||!!x.dynamicChildren;const V=x.children,ee=V.length;for(let J=0;J{const{slotScopeIds:U}=x;U&&(j=j?j.concat(U):U);const V=s(w),ee=h(o(w),x,V,E,C,j,A);return ee&&r_(ee)&&ee.data==="]"?o(x.anchor=ee):(bs=!0,d(x.anchor=u("]"),V,ee),ee)},y=(w,x,E,C,j,A)=>{if(bs=!0,x.el=null,A){const ee=k(w);for(;;){const J=o(w);if(J&&J!==ee)l(J);else break}}const U=o(w),V=s(w);return l(w),a(null,x,V,U,E,C,s_(V),j),U},k=(w,x="[",E="]")=>{let C=0;for(;w;)if(w=o(w),w&&r_(w)&&(w.data===x&&C++,w.data===E)){if(C===0)return o(w);C--}return w},b=(w,x,E)=>{const C=x.parentNode;C&&C.replaceChild(w,x);let j=E;for(;j;)j.vnode.el===x&&(j.vnode.el=j.subTree.el=w),j=j.parent},P=w=>w.nodeType===1&&w.tagName.toLowerCase()==="template";return[_,f]}const en=L1;function uP(e){return mP(e)}function _P(e){return mP(e,ML)}function mP(e,t){const a=o1();a.__VUE__=!0;const{insert:n,remove:i,patchProp:o,createElement:s,createText:l,createComment:d,setText:u,setElementText:_,parentNode:f,nextSibling:p,setScopeId:h=Rn,insertStaticContent:g}=e,y=(S,D,F,q=null,H=null,ue=null,xe=void 0,he=null,ke=!!D.dynamicChildren)=>{if(S===D)return;S&&!Hi(S,D)&&(q=le(S),at(S,H,ue,!0),S=null),D.patchFlag===-2&&(ke=!1,D.dynamicChildren=null);const{type:ge,ref:Ne,shapeFlag:Ze}=D;switch(ge){case Rr:k(S,D,F,q);break;case cn:b(S,D,F,q);break;case Ar:S==null&&P(D,F,q,xe);break;case yt:J(S,D,F,q,H,ue,xe,he,ke);break;default:Ze&1?E(S,D,F,q,H,ue,xe,he,ke):Ze&6?ie(S,D,F,q,H,ue,xe,he,ke):(Ze&64||Ze&128)&&ge.process(S,D,F,q,H,ue,xe,he,ke,Oe)}Ne!=null&&H&&q_(Ne,S&&S.ref,ue,D||S,!D)},k=(S,D,F,q)=>{if(S==null)n(D.el=l(D.children),F,q);else{const H=D.el=S.el;D.children!==S.children&&u(H,D.children)}},b=(S,D,F,q)=>{S==null?n(D.el=d(D.children||""),F,q):D.el=S.el},P=(S,D,F,q)=>{[S.el,S.anchor]=g(S.children,D,F,q,S.el,S.anchor)},w=({el:S,anchor:D},F,q)=>{let H;for(;S&&S!==D;)H=p(S),n(S,F,q),S=H;n(D,F,q)},x=({el:S,anchor:D})=>{let F;for(;S&&S!==D;)F=p(S),i(S),S=F;i(D)},E=(S,D,F,q,H,ue,xe,he,ke)=>{D.type==="svg"?xe="svg":D.type==="math"&&(xe="mathml"),S==null?C(D,F,q,H,ue,xe,he,ke):U(S,D,H,ue,xe,he,ke)},C=(S,D,F,q,H,ue,xe,he)=>{let ke,ge;const{props:Ne,shapeFlag:Ze,transition:Ee,dirs:Q}=S;if(ke=S.el=s(S.type,ue,Ne&&Ne.is,Ne),Ze&8?_(ke,S.children):Ze&16&&A(S.children,ke,null,q,H,gh(S,ue),xe,he),Q&&po(S,null,q,"created"),j(ke,S,S.scopeId,xe,q),Ne){for(const Me in Ne)Me!=="value"&&!Qc(Me)&&o(ke,Me,null,Ne[Me],ue,S.children,q,H,jt);"value"in Ne&&o(ke,"value",null,Ne.value,ue),(ge=Ne.onVnodeBeforeMount)&&Nn(ge,q,S)}Q&&po(S,null,q,"beforeMount");const ne=pP(H,Ee);ne&&Ee.beforeEnter(ke),n(ke,D,F),((ge=Ne&&Ne.onVnodeMounted)||ne||Q)&&en(()=>{ge&&Nn(ge,q,S),ne&&Ee.enter(ke),Q&&po(S,null,q,"mounted")},H)},j=(S,D,F,q,H)=>{if(F&&h(S,F),q)for(let ue=0;ue{for(let ge=ke;ge{const he=D.el=S.el;let{patchFlag:ke,dynamicChildren:ge,dirs:Ne}=D;ke|=S.patchFlag&16;const Ze=S.props||ia,Ee=D.props||ia;let Q;if(F&&_r(F,!1),(Q=Ee.onVnodeBeforeUpdate)&&Nn(Q,F,D,S),Ne&&po(D,S,F,"beforeUpdate"),F&&_r(F,!0),ge?V(S.dynamicChildren,ge,he,F,q,gh(D,H),ue):xe||Pe(S,D,he,null,F,q,gh(D,H),ue,!1),ke>0){if(ke&16)ee(he,D,Ze,Ee,F,q,H);else if(ke&2&&Ze.class!==Ee.class&&o(he,"class",null,Ee.class,H),ke&4&&o(he,"style",Ze.style,Ee.style,H),ke&8){const ne=D.dynamicProps;for(let Me=0;Me{Q&&Nn(Q,F,D,S),Ne&&po(D,S,F,"updated")},q)},V=(S,D,F,q,H,ue,xe)=>{for(let he=0;he{if(F!==q){if(F!==ia)for(const he in F)!Qc(he)&&!(he in q)&&o(S,he,F[he],null,xe,D.children,H,ue,jt);for(const he in q){if(Qc(he))continue;const ke=q[he],ge=F[he];ke!==ge&&he!=="value"&&o(S,he,ge,ke,xe,D.children,H,ue,jt)}"value"in q&&o(S,"value",F.value,q.value,xe)}},J=(S,D,F,q,H,ue,xe,he,ke)=>{const ge=D.el=S?S.el:l(""),Ne=D.anchor=S?S.anchor:l("");let{patchFlag:Ze,dynamicChildren:Ee,slotScopeIds:Q}=D;Q&&(he=he?he.concat(Q):Q),S==null?(n(ge,F,q),n(Ne,F,q),A(D.children||[],F,Ne,H,ue,xe,he,ke)):Ze>0&&Ze&64&&Ee&&S.dynamicChildren?(V(S.dynamicChildren,Ee,F,H,ue,xe,he),(D.key!=null||H&&D===H.subTree)&&ly(S,D,!0)):Pe(S,D,F,Ne,H,ue,xe,he,ke)},ie=(S,D,F,q,H,ue,xe,he,ke)=>{D.slotScopeIds=he,S==null?D.shapeFlag&512?H.ctx.activate(D,F,q,xe,ke):Te(D,F,q,H,ue,xe,ke):ze(S,D,ke)},Te=(S,D,F,q,H,ue,xe)=>{const he=S.component=kP(S,q,H);if(Od(S)&&(he.ctx.renderer=Oe),DP(he),he.asyncDep){if(H&&H.registerDep(he,ce),!S.el){const ke=he.subTree=G(cn);b(null,ke,D,F)}}else ce(he,S,D,F,H,ue,xe)},ze=(S,D,F)=>{const q=D.component=S.component;if(Q$(S,D,F))if(q.asyncDep&&!q.asyncResolved){Ae(q,D,F);return}else q.next=D,W$(q.update),q.effect.dirty=!0,q.update();else D.el=S.el,q.vnode=D},ce=(S,D,F,q,H,ue,xe)=>{const he=()=>{if(S.isMounted){let{next:Ne,bu:Ze,u:Ee,parent:Q,vnode:ne}=S;{const Ra=fP(S);if(Ra){Ne&&(Ne.el=ne.el,Ae(S,Ne,xe)),Ra.asyncDep.then(()=>{S.isUnmounted||he()});return}}let Me=Ne,nt;_r(S,!1),Ne?(Ne.el=ne.el,Ae(S,Ne,xe)):Ne=ne,Ze&&Fl(Ze),(nt=Ne.props&&Ne.props.onVnodeBeforeUpdate)&&Nn(nt,Q,Ne,ne),_r(S,!0);const Ht=S_(S),Ea=S.subTree;S.subTree=Ht,y(Ea,Ht,f(Ea.el),le(Ea),S,H,ue),Ne.el=Ht.el,Me===null&&Gv(S,Ht.el),Ee&&en(Ee,H),(nt=Ne.props&&Ne.props.onVnodeUpdated)&&en(()=>Nn(nt,Q,Ne,ne),H)}else{let Ne;const{el:Ze,props:Ee}=D,{bm:Q,m:ne,parent:Me}=S,nt=zr(D);if(_r(S,!1),Q&&Fl(Q),!nt&&(Ne=Ee&&Ee.onVnodeBeforeMount)&&Nn(Ne,Me,D),_r(S,!0),Ze&&vt){const Ht=()=>{S.subTree=S_(S),vt(Ze,S.subTree,S,H,null)};nt?D.type.__asyncLoader().then(()=>!S.isUnmounted&&Ht()):Ht()}else{const Ht=S.subTree=S_(S);y(null,Ht,F,q,S,H,ue),D.el=Ht.el}if(ne&&en(ne,H),!nt&&(Ne=Ee&&Ee.onVnodeMounted)){const Ht=D;en(()=>Nn(Ne,Me,Ht),H)}(D.shapeFlag&256||Me&&zr(Me.vnode)&&Me.vnode.shapeFlag&256)&&S.a&&en(S.a,H),S.isMounted=!0,D=F=q=null}},ke=S.effect=new Kl(he,Rn,()=>Em(ge),S.scope),ge=S.update=()=>{ke.dirty&&ke.run()};ge.id=S.uid,_r(S,!0),ge()},Ae=(S,D,F)=>{D.component=S;const q=S.vnode.props;S.vnode=D,S.next=null,jL(S,D.props,q,F),FL(S,D.children,F),Hr(),O0(S),Kr()},Pe=(S,D,F,q,H,ue,xe,he,ke=!1)=>{const ge=S&&S.children,Ne=S?S.shapeFlag:0,Ze=D.children,{patchFlag:Ee,shapeFlag:Q}=D;if(Ee>0){if(Ee&128){oe(ge,Ze,F,q,H,ue,xe,he,ke);return}else if(Ee&256){He(ge,Ze,F,q,H,ue,xe,he,ke);return}}Q&8?(Ne&16&&jt(ge,H,ue),Ze!==ge&&_(F,Ze)):Ne&16?Q&16?oe(ge,Ze,F,q,H,ue,xe,he,ke):jt(ge,H,ue,!0):(Ne&8&&_(F,""),Q&16&&A(Ze,F,q,H,ue,xe,he,ke))},He=(S,D,F,q,H,ue,xe,he,ke)=>{S=S||Nl,D=D||Nl;const ge=S.length,Ne=D.length,Ze=Math.min(ge,Ne);let Ee;for(Ee=0;EeNe?jt(S,H,ue,!0,!1,Ze):A(D,F,q,H,ue,xe,he,ke,Ze)},oe=(S,D,F,q,H,ue,xe,he,ke)=>{let ge=0;const Ne=D.length;let Ze=S.length-1,Ee=Ne-1;for(;ge<=Ze&&ge<=Ee;){const Q=S[ge],ne=D[ge]=ke?Cs(D[ge]):ti(D[ge]);if(Hi(Q,ne))y(Q,ne,F,null,H,ue,xe,he,ke);else break;ge++}for(;ge<=Ze&&ge<=Ee;){const Q=S[Ze],ne=D[Ee]=ke?Cs(D[Ee]):ti(D[Ee]);if(Hi(Q,ne))y(Q,ne,F,null,H,ue,xe,he,ke);else break;Ze--,Ee--}if(ge>Ze){if(ge<=Ee){const Q=Ee+1,ne=QEe)for(;ge<=Ze;)at(S[ge],H,ue,!0),ge++;else{const Q=ge,ne=ge,Me=new Map;for(ge=ne;ge<=Ee;ge++){const Ta=D[ge]=ke?Cs(D[ge]):ti(D[ge]);Ta.key!=null&&Me.set(Ta.key,ge)}let nt,Ht=0;const Ea=Ee-ne+1;let Ra=!1,nn=0;const qn=new Array(Ea);for(ge=0;ge=Ea){at(Ta,H,ue,!0);continue}let Ha;if(Ta.key!=null)Ha=Me.get(Ta.key);else for(nt=ne;nt<=Ee;nt++)if(qn[nt-ne]===0&&Hi(Ta,D[nt])){Ha=nt;break}Ha===void 0?at(Ta,H,ue,!0):(qn[Ha-ne]=ge+1,Ha>=nn?nn=Ha:Ra=!0,y(Ta,D[Ha],F,null,H,ue,xe,he,ke),Ht++)}const Ut=Ra?$L(qn):Nl;for(nt=Ut.length-1,ge=Ea-1;ge>=0;ge--){const Ta=ne+ge,Ha=D[Ta],al=Ta+1{const{el:ue,type:xe,transition:he,children:ke,shapeFlag:ge}=S;if(ge&6){Ge(S.component.subTree,D,F,q);return}if(ge&128){S.suspense.move(D,F,q);return}if(ge&64){xe.move(S,D,F,Oe);return}if(xe===yt){n(ue,D,F);for(let Ze=0;Zehe.enter(ue),H);else{const{leave:Ze,delayLeave:Ee,afterLeave:Q}=he,ne=()=>n(ue,D,F),Me=()=>{Ze(ue,()=>{ne(),Q&&Q()})};Ee?Ee(ue,ne,Me):Me()}else n(ue,D,F)},at=(S,D,F,q=!1,H=!1)=>{const{type:ue,props:xe,ref:he,children:ke,dynamicChildren:ge,shapeFlag:Ne,patchFlag:Ze,dirs:Ee}=S;if(he!=null&&q_(he,null,F,S,!0),Ne&256){D.ctx.deactivate(S);return}const Q=Ne&1&&Ee,ne=!zr(S);let Me;if(ne&&(Me=xe&&xe.onVnodeBeforeUnmount)&&Nn(Me,D,S),Ne&6)Wt(S.component,F,q);else{if(Ne&128){S.suspense.unmount(F,q);return}Q&&po(S,null,D,"beforeUnmount"),Ne&64?S.type.remove(S,D,F,H,Oe,q):ge&&(ue!==yt||Ze>0&&Ze&64)?jt(ge,D,F,!1,!0):(ue===yt&&Ze&384||!H&&Ne&16)&&jt(ke,D,F),q&&la(S)}(ne&&(Me=xe&&xe.onVnodeUnmounted)||Q)&&en(()=>{Me&&Nn(Me,D,S),Q&&po(S,null,D,"unmounted")},F)},la=S=>{const{type:D,el:F,anchor:q,transition:H}=S;if(D===yt){Bt(F,q);return}if(D===Ar){x(S);return}const ue=()=>{i(F),H&&!H.persisted&&H.afterLeave&&H.afterLeave()};if(S.shapeFlag&1&&H&&!H.persisted){const{leave:xe,delayLeave:he}=H,ke=()=>xe(F,ue);he?he(S.el,ue,ke):ke()}else ue()},Bt=(S,D)=>{let F;for(;S!==D;)F=p(S),i(S),S=F;i(D)},Wt=(S,D,F)=>{const{bum:q,scope:H,update:ue,subTree:xe,um:he}=S;q&&Fl(q),H.stop(),ue&&(ue.active=!1,at(xe,S,D,F)),he&&en(he,D),en(()=>{S.isUnmounted=!0},D),D&&D.pendingBranch&&!D.isUnmounted&&S.asyncDep&&!S.asyncResolved&&S.suspenseId===D.pendingId&&(D.deps--,D.deps===0&&D.resolve())},jt=(S,D,F,q=!1,H=!1,ue=0)=>{for(let xe=ue;xeS.shapeFlag&6?le(S.component.subTree):S.shapeFlag&128?S.suspense.next():p(S.anchor||S.el);let we=!1;const De=(S,D,F)=>{S==null?D._vnode&&at(D._vnode,null,null,!0):y(D._vnode||null,S,D,null,null,null,F),we||(we=!0,O0(),U_(),we=!1),D._vnode=S},Oe={p:y,um:at,m:Ge,r:la,mt:Te,mc:A,pc:Pe,pbc:V,n:le,o:e};let st,vt;return t&&([st,vt]=t(Oe)),{render:De,hydrate:st,createApp:CL(De,st)}}function gh({type:e,props:t},a){return a==="svg"&&e==="foreignObject"||a==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:a}function _r({effect:e,update:t},a){e.allowRecurse=t.allowRecurse=a}function pP(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function ly(e,t,a=!1){const n=e.children,i=t.children;if(Ye(n)&&Ye(i))for(let o=0;o>1,e[a[l]]0&&(t[n]=a[o-1]),a[o]=n)}}for(o=a.length,s=a[o-1];o-- >0;)a[o]=s,s=t[s];return a}function fP(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:fP(t)}const LL=e=>e.__isTeleport,ed=e=>e&&(e.disabled||e.disabled===""),Z0=e=>typeof SVGElement<"u"&&e instanceof SVGElement,G0=e=>typeof MathMLElement=="function"&&e instanceof MathMLElement,rg=(e,t)=>{const a=e&&e.to;return Da(a)?t?t(a):null:a},BL={name:"Teleport",__isTeleport:!0,process(e,t,a,n,i,o,s,l,d,u){const{mc:_,pc:f,pbc:p,o:{insert:h,querySelector:g,createText:y,createComment:k}}=u,b=ed(t.props);let{shapeFlag:P,children:w,dynamicChildren:x}=t;if(e==null){const E=t.el=y(""),C=t.anchor=y("");h(E,a,n),h(C,a,n);const j=t.target=rg(t.props,g),A=t.targetAnchor=y("");j&&(h(A,j),s==="svg"||Z0(j)?s="svg":(s==="mathml"||G0(j))&&(s="mathml"));const U=(V,ee)=>{P&16&&_(w,V,ee,i,o,s,l,d)};b?U(a,C):j&&U(j,A)}else{t.el=e.el;const E=t.anchor=e.anchor,C=t.target=e.target,j=t.targetAnchor=e.targetAnchor,A=ed(e.props),U=A?a:C,V=A?E:j;if(s==="svg"||Z0(C)?s="svg":(s==="mathml"||G0(C))&&(s="mathml"),x?(p(e.dynamicChildren,x,U,i,o,s,l),ly(e,t,!0)):d||f(e,t,U,V,i,o,s,l,!1),b)A?t.props&&e.props&&t.props.to!==e.props.to&&(t.props.to=e.props.to):l_(t,a,E,u,1);else if((t.props&&t.props.to)!==(e.props&&e.props.to)){const ee=t.target=rg(t.props,g);ee&&l_(t,ee,null,u,0)}else A&&l_(t,C,j,u,1)}hP(t)},remove(e,t,a,n,{um:i,o:{remove:o}},s){const{shapeFlag:l,children:d,anchor:u,targetAnchor:_,target:f,props:p}=e;if(f&&o(_),s&&o(u),l&16){const h=s||!ed(p);for(let g=0;g0?On||Nl:null,gP(),Or>0&&On&&On.push(e),e}function te(e,t,a,n,i,o){return vP(X(e,t,a,n,i,o,!0))}function Xe(e,t,a,n,i){return vP(G(e,t,a,n,i,!0))}function Vs(e){return e?e.__v_isVNode===!0:!1}function Hi(e,t){return e.type===t.type&&e.key===t.key}function VL(e){}const Im="__vInternal",yP=({key:e})=>e??null,E_=({ref:e,ref_key:t,ref_for:a})=>(typeof e=="number"&&(e=""+e),e!=null?Da(e)||ea(e)||_t(e)?{i:Ma,r:e,k:t,f:!!a}:e:null);function X(e,t=null,a=null,n=0,i=null,o=e===yt?0:1,s=!1,l=!1){const d={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&yP(t),ref:t&&E_(t),scopeId:Am,slotScopeIds:null,children:a,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetAnchor:null,staticCount:0,shapeFlag:o,patchFlag:n,dynamicProps:i,dynamicChildren:null,appContext:null,ctx:Ma};return l?(uy(d,a),o&128&&e.normalize(d)):a&&(d.shapeFlag|=Da(a)?8:16),Or>0&&!s&&On&&(d.patchFlag>0||o&6)&&d.patchFlag!==32&&On.push(d),d}const G=qL;function qL(e,t=null,a=null,n=0,i=null,o=!1){if((!e||e===O1)&&(e=cn),Vs(e)){const l=Xi(e,t,!0);return a&&uy(l,a),Or>0&&!o&&On&&(l.shapeFlag&6?On[On.indexOf(e)]=l:On.push(l)),l.patchFlag|=-2,l}if(QL(e)&&(e=e.__vccOpts),t){t=dy(t);let{class:l,style:d}=t;l&&!Da(l)&&(t.class=Le(l)),sa(d)&&(Vv(d)&&!Ye(d)&&(d=wa({},d)),t.style=oo(d))}const s=Da(e)?1:$1(e)?128:LL(e)?64:sa(e)?4:_t(e)?2:0;return X(e,t,a,n,i,s,o,!0)}function dy(e){return e?Vv(e)||Im in e?wa({},e):e:null}function Xi(e,t,a=!1){const{props:n,ref:i,patchFlag:o,children:s}=e,l=t?xn(n||{},t):n;return{__v_isVNode:!0,__v_skip:!0,type:e.type,props:l,key:l&&yP(l),ref:t&&t.ref?a&&i?Ye(i)?i.concat(E_(t)):[i,E_(t)]:E_(t):i,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:s,target:e.target,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==yt?o===-1?16:o|16:o,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:e.transition,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&Xi(e.ssContent),ssFallback:e.ssFallback&&Xi(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce}}function $t(e=" ",t=0){return G(Rr,null,e,t)}function bP(e,t){const a=G(Ar,null,e);return a.staticCount=t,a}function Re(e="",t=!1){return t?($(),Xe(cn,null,e)):G(cn,null,e)}function ti(e){return e==null||typeof e=="boolean"?G(cn):Ye(e)?G(yt,null,e.slice()):typeof e=="object"?Cs(e):G(Rr,null,String(e))}function Cs(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:Xi(e)}function uy(e,t){let a=0;const{shapeFlag:n}=e;if(t==null)t=null;else if(Ye(t))a=16;else if(typeof t=="object")if(n&65){const i=t.default;i&&(i._c&&(i._d=!1),uy(e,i()),i._c&&(i._d=!0));return}else{a=32;const i=t._;!i&&!(Im in t)?t._ctx=Ma:i===3&&Ma&&(Ma.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else _t(t)?(t={default:t,_ctx:Ma},a=32):(t=String(t),n&64?(a=16,t=[$t(t)]):a=8);e.children=t,e.shapeFlag|=a}function xn(...e){const t={};for(let a=0;aUa||Ma;let W_,cg;{const e=o1(),t=(a,n)=>{let i;return(i=e[a])||(i=e[a]=[]),i.push(n),o=>{i.length>1?i.forEach(s=>s(o)):i[0](o)}};W_=t("__VUE_INSTANCE_SETTERS__",a=>Ua=a),cg=t("__VUE_SSR_SETTERS__",a=>$d=a)}const Mr=e=>{const t=Ua;return W_(e),e.scope.on(),()=>{e.scope.off(),W_(t)}},dg=()=>{Ua&&Ua.scope.off(),W_(null)};function wP(e){return e.vnode.shapeFlag&4}let $d=!1;function DP(e,t=!1){t&&cg(t);const{props:a,children:n}=e.vnode,i=wP(e);TL(e,a,i,t),IL(e,n);const o=i?KL(e,t):void 0;return t&&cg(!1),o}function KL(e,t){const a=e.type;e.accessCache=Object.create(null),e.proxy=Fd(new Proxy(e.ctx,ng));const{setup:n}=a;if(n){const i=e.setupContext=n.length>1?SP(e):null,o=Mr(e);Hr();const s=Ko(n,e,0,[e.props,i]);if(Kr(),o(),Nv(s)){if(s.then(dg,dg),t)return s.then(l=>{ug(e,l,t)}).catch(l=>{Yr(l,e,0)});e.asyncDep=s}else ug(e,s,t)}else xP(e,t)}function ug(e,t,a){_t(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:sa(t)&&(e.setupState=Kv(t)),xP(e,a)}let H_,_g;function YL(e){H_=e,_g=t=>{t.render._rc&&(t.withProxy=new Proxy(t.ctx,_L))}}const ZL=()=>!H_;function xP(e,t,a){const n=e.type;if(!e.render){if(!t&&H_&&!n.render){const i=n.template||oy(e).template;if(i){const{isCustomElement:o,compilerOptions:s}=e.appContext.config,{delimiters:l,compilerOptions:d}=n,u=wa(wa({isCustomElement:o,delimiters:l},s),d);n.render=H_(i,u)}}e.render=n.render||Rn,_g&&_g(e)}{const i=Mr(e);Hr();try{xL(e)}finally{Kr(),i()}}}function GL(e){return e.attrsProxy||(e.attrsProxy=new Proxy(e.attrs,{get(t,a){return Bn(e,"get","$attrs"),t[a]}}))}function SP(e){const t=a=>{e.exposed=a||{}};return{get attrs(){return GL(e)},slots:e.slots,emit:e.emit,expose:t}}function Fm(e){if(e.exposed)return e.exposeProxy||(e.exposeProxy=new Proxy(Kv(Fd(e.exposed)),{get(t,a){if(a in t)return t[a];if(a in Xc)return Xc[a](e)},has(t,a){return a in t||a in Xc}}))}function mg(e,t=!0){return _t(e)?e.displayName||e.name:e.name||t&&e.__name}function QL(e){return _t(e)&&"__vccOpts"in e}const B=(e,t)=>C$(e,t,$d);function JL(e,t,a=ia){const n=Oi(),i=wn(t),o=ai(t),s=P1((d,u)=>{let _;return q1(()=>{const f=e[t];Ji(_,f)&&(_=f,u())}),{get(){return d(),a.get?a.get(_):_},set(f){const p=n.vnode.props;!(p&&(t in p||i in p||o in p)&&(`onUpdate:${t}`in p||`onUpdate:${i}`in p||`onUpdate:${o}`in p))&&Ji(f,_)&&(_=f,u()),n.emit(`update:${t}`,a.set?a.set(f):f)}}}),l=t==="modelValue"?"modelModifiers":`${t}Modifiers`;return s[Symbol.iterator]=()=>{let d=0;return{next(){return d<2?{value:d++?e[l]||{}:s,done:!1}:{done:!0}}}},s}function Et(e,t,a){const n=arguments.length;return n===2?sa(t)&&!Ye(t)?Vs(t)?G(e,null,[t]):G(e,t):G(e,null,t):(n>3?a=Array.prototype.slice.call(arguments,2):n===3&&Vs(a)&&(a=[a]),G(e,t,a))}function XL(){}function e3(e,t,a,n){const i=a[n];if(i&&PP(i,e))return i;const o=t();return o.memo=e.slice(),a[n]=o}function PP(e,t){const a=e.memo;if(a.length!=t.length)return!1;for(let n=0;n0&&On&&On.push(e),!0}const EP="3.4.15",t3=Rn,a3=U$,n3=xl,i3=j1,o3={createComponentInstance:kP,setupComponent:DP,renderComponentRoot:S_,setCurrentRenderingInstance:vd,isVNode:Vs,normalizeVNode:ti},s3=o3,r3=null,l3=null,c3=null;/** +**/function OR(e,t){}const $R={SETUP_FUNCTION:0,0:"SETUP_FUNCTION",RENDER_FUNCTION:1,1:"RENDER_FUNCTION",WATCH_GETTER:2,2:"WATCH_GETTER",WATCH_CALLBACK:3,3:"WATCH_CALLBACK",WATCH_CLEANUP:4,4:"WATCH_CLEANUP",NATIVE_EVENT_HANDLER:5,5:"NATIVE_EVENT_HANDLER",COMPONENT_EVENT_HANDLER:6,6:"COMPONENT_EVENT_HANDLER",VNODE_HOOK:7,7:"VNODE_HOOK",DIRECTIVE_HOOK:8,8:"DIRECTIVE_HOOK",TRANSITION_HOOK:9,9:"TRANSITION_HOOK",APP_ERROR_HANDLER:10,10:"APP_ERROR_HANDLER",APP_WARN_HANDLER:11,11:"APP_WARN_HANDLER",FUNCTION_REF:12,12:"FUNCTION_REF",ASYNC_COMPONENT_LOADER:13,13:"ASYNC_COMPONENT_LOADER",SCHEDULER:14,14:"SCHEDULER"},LR={sp:"serverPrefetch hook",bc:"beforeCreate hook",c:"created hook",bm:"beforeMount hook",m:"mounted hook",bu:"beforeUpdate hook",u:"updated",bum:"beforeUnmount hook",um:"unmounted hook",a:"activated hook",da:"deactivated hook",ec:"errorCaptured hook",rtc:"renderTracked hook",rtg:"renderTriggered hook",0:"setup function",1:"render function",2:"watcher getter",3:"watcher callback",4:"watcher cleanup function",5:"native event handler",6:"component event handler",7:"vnode hook",8:"directive hook",9:"transition hook",10:"app errorHandler",11:"app warnHandler",12:"ref function",13:"async component loader",14:"scheduler flush. This is likely a Vue internals bug. Please open an issue at https://github.com/vuejs/core ."};function Ko(e,t,a,n){let i;try{i=n?e(...n):e()}catch(o){Ys(o,t,a)}return i}function li(e,t,a,n){if(_t(e)){const o=Ko(e,t,a,n);return o&&Iv(o)&&o.catch(r=>{Ys(r,t,a)}),o}const i=[];for(let o=0;o>>1,i=ln[n],o=gd(i);ofo&&ln.splice(t,1)}function B_(e){Ze(e)?Rl.push(...e):(!Er||!Er.includes(e,e.allowRecurse?vs+1:vs))&&Rl.push(e),CD()}function Rw(e,t,a=hd?fo+1:0){for(;agd(a)-gd(n));if(Rl.length=0,Er){Er.push(...t);return}for(Er=t,vs=0;vse.id==null?1/0:e.id,qR=(e,t)=>{const a=gd(e)-gd(t);if(a===0){if(e.pre&&!t.pre)return-1;if(t.pre&&!e.pre)return 1}return a};function jD(e){Xh=!1,hd=!0,ln.sort(qR);try{for(fo=0;foDl.emit(i,...o)),n_=[]):typeof window<"u"&&window.HTMLElement&&!((n=(a=window.navigator)==null?void 0:a.userAgent)!=null&&n.includes("jsdom"))?((t.__VUE_DEVTOOLS_HOOK_REPLAY__=t.__VUE_DEVTOOLS_HOOK_REPLAY__||[]).push(o=>{TD(o,t)}),setTimeout(()=>{Dl||(t.__VUE_DEVTOOLS_HOOK_REPLAY__=null,n_=[])},3e3)):n_=[]}function HR(e,t,...a){if(e.isUnmounted)return;const n=e.vnode.props||ia;let i=a;const o=t.startsWith("update:"),r=o&&t.slice(7);if(r&&r in n){const _=`${r==="modelValue"?"model":r}Modifiers`,{number:f,trim:p}=n[_]||ia;p&&(i=a.map(h=>xa(h)?h.trim():h)),f&&(i=a.map(md))}let l,d=n[l=Jc(t)]||n[l=Jc(wn(t))];!d&&o&&(d=n[l=Jc(ai(t))]),d&&li(d,e,6,i);const u=n[l+"Once"];if(u){if(!e.emitted)e.emitted={};else if(e.emitted[l])return;e.emitted[l]=!0,li(u,e,6,i)}}function ID(e,t,a=!1){const n=t.emitsCache,i=n.get(e);if(i!==void 0)return i;const o=e.emits;let r={},l=!1;if(!_t(e)){const d=u=>{const _=ID(u,t,!0);_&&(l=!0,wa(r,_))};!a&&t.mixins.length&&t.mixins.forEach(d),e.extends&&d(e.extends),e.mixins&&e.mixins.forEach(d)}return!o&&!l?(ra(e)&&n.set(e,null),null):(Ze(o)?o.forEach(d=>r[d]=null):wa(r,o),ra(e)&&n.set(e,r),r)}function Pm(e,t){return!e||!Id(t)?!1:(t=t.slice(2).replace(/Once$/,""),Vt(e,t[0].toLowerCase()+t.slice(1))||Vt(e,ai(t))||Vt(e,t))}let Oa=null,Em=null;function vd(e){const t=Oa;return Oa=e,Em=e&&e.type.__scopeId||null,t}function ND(e){Em=e}function FD(){Em=null}const MD=e=>me;function me(e,t=Oa,a){if(!t||e._n)return e;const n=(...i)=>{n._d&&sg(-1);const o=vd(t);let r;try{r=e(...i)}finally{vd(o),n._d&&sg(1)}return r};return n._n=!0,n._c=!0,n._d=!0,n}function S_(e){const{type:t,vnode:a,proxy:n,withProxy:i,props:o,propsOptions:[r],slots:l,attrs:d,emit:u,render:_,renderCache:f,data:p,setupState:h,ctx:g,inheritAttrs:y}=e;let k,b;const z=vd(e);try{if(a.shapeFlag&4){const D=i||n,E=D;k=ti(_.call(E,D,f,o,h,p,g)),b=d}else{const D=t;k=ti(D.length>1?D(o,{attrs:d,slots:l,emit:u}):D(o,null)),b=t.props?d:KR(d)}}catch(D){td.length=0,Ys(D,e,1),k=C(cn)}let w=k;if(b&&y!==!1){const D=Object.keys(b),{shapeFlag:E}=w;D.length&&E&7&&(r&&D.some(jv)&&(b=YR(b,r)),w=Xi(w,b))}return a.dirs&&(w=Xi(w),w.dirs=w.dirs?w.dirs.concat(a.dirs):a.dirs),a.transition&&(w.transition=a.transition),k=w,vd(z),k}function WR(e,t=!0){let a;for(let n=0;n{let t;for(const a in e)(a==="class"||a==="style"||Id(a))&&((t||(t={}))[a]=e[a]);return t},YR=(e,t)=>{const a={};for(const n in e)(!jv(n)||!(n.slice(9)in t))&&(a[n]=e[n]);return a};function ZR(e,t,a){const{props:n,children:i,component:o}=e,{props:r,children:l,patchFlag:d}=t,u=o.emitsOptions;if(t.dirs||t.transition)return!0;if(a&&d>=0){if(d&1024)return!0;if(d&16)return n?Ow(n,r,u):!!r;if(d&8){const _=t.dynamicProps;for(let f=0;f<_.length;f++){const p=_[f];if(r[p]!==n[p]&&!Pm(u,p))return!0}}}else return(i||l)&&(!l||!l.$stable)?!0:n===r?!1:n?r?Ow(n,r,u):!0:!!r;return!1}function Ow(e,t,a){const n=Object.keys(t);if(n.length!==Object.keys(e).length)return!0;for(let i=0;ie.__isSuspense;let eg=0;const QR={name:"Suspense",__isSuspense:!0,process(e,t,a,n,i,o,r,l,d,u){if(e==null)XR(t,a,n,i,o,r,l,d,u);else{if(o&&o.deps>0){t.suspense=e.suspense;return}eO(e,t,a,n,i,r,l,d,u)}},hydrate:tO,create:Xv,normalize:aO},JR=QR;function yd(e,t){const a=e.props&&e.props[t];_t(a)&&a()}function XR(e,t,a,n,i,o,r,l,d){const{p:u,o:{createElement:_}}=d,f=_("div"),p=e.suspense=Xv(e,i,n,t,f,a,o,r,l,d);u(null,p.pendingBranch=e.ssContent,f,null,n,p,o,r),p.deps>0?(yd(e,"onPending"),yd(e,"onFallback"),u(null,e.ssFallback,t,a,n,null,o,r),Ol(p,e.ssFallback)):p.resolve(!1,!0)}function eO(e,t,a,n,i,o,r,l,{p:d,um:u,o:{createElement:_}}){const f=t.suspense=e.suspense;f.vnode=t,t.el=e.el;const p=t.ssContent,h=t.ssFallback,{activeBranch:g,pendingBranch:y,isInFallback:k,isHydrating:b}=f;if(y)f.pendingBranch=p,Wi(p,y)?(d(y,p,f.hiddenContainer,null,i,f,o,r,l),f.deps<=0?f.resolve():k&&(b||(d(g,h,a,n,i,null,o,r,l),Ol(f,h)))):(f.pendingId=eg++,b?(f.isHydrating=!1,f.activeBranch=y):u(y,i,f),f.deps=0,f.effects.length=0,f.hiddenContainer=_("div"),k?(d(null,p,f.hiddenContainer,null,i,f,o,r,l),f.deps<=0?f.resolve():(d(g,h,a,n,i,null,o,r,l),Ol(f,h))):g&&Wi(p,g)?(d(g,p,a,n,i,f,o,r,l),f.resolve(!0)):(d(null,p,f.hiddenContainer,null,i,f,o,r,l),f.deps<=0&&f.resolve()));else if(g&&Wi(p,g))d(g,p,a,n,i,f,o,r,l),Ol(f,p);else if(yd(t,"onPending"),f.pendingBranch=p,p.shapeFlag&512?f.pendingId=p.component.suspenseId:f.pendingId=eg++,d(null,p,f.hiddenContainer,null,i,f,o,r,l),f.deps<=0)f.resolve();else{const{timeout:z,pendingId:w}=f;z>0?setTimeout(()=>{f.pendingId===w&&f.fallback(h)},z):z===0&&f.fallback(h)}}function Xv(e,t,a,n,i,o,r,l,d,u,_=!1){const{p:f,m:p,um:h,n:g,o:{parentNode:y,remove:k}}=u;let b;const z=nO(e);z&&t!=null&&t.pendingBranch&&(b=t.pendingId,t.deps++);const w=e.props?$_(e.props.timeout):void 0,D=o,E={vnode:e,parent:t,parentComponent:a,namespace:r,container:n,hiddenContainer:i,deps:0,pendingId:eg++,timeout:typeof w=="number"?w:-1,activeBranch:null,pendingBranch:null,isInFallback:!_,isHydrating:_,isUnmounted:!1,effects:[],resolve(T=!1,N=!1){const{vnode:j,activeBranch:q,pendingBranch:H,pendingId:te,effects:X,parentComponent:oe,container:Te}=E;let Ae=!1;E.isHydrating?E.isHydrating=!1:T||(Ae=q&&H.transition&&H.transition.mode==="out-in",Ae&&(q.transition.afterLeave=()=>{te===E.pendingId&&(p(H,Te,o===D?g(q):o,0),B_(X))}),q&&(y(q.el)!==E.hiddenContainer&&(o=g(q)),h(q,oe,E,!0)),Ae||p(H,Te,o,0)),Ol(E,H),E.pendingBranch=null,E.isInFallback=!1;let de=E.parent,Ce=!1;for(;de;){if(de.pendingBranch){de.effects.push(...X),Ce=!0;break}de=de.parent}!Ce&&!Ae&&B_(X),E.effects=[],z&&t&&t.pendingBranch&&b===t.pendingId&&(t.deps--,t.deps===0&&!N&&t.resolve()),yd(j,"onResolve")},fallback(T){if(!E.pendingBranch)return;const{vnode:N,activeBranch:j,parentComponent:q,container:H,namespace:te}=E;yd(N,"onFallback");const X=g(j),oe=()=>{E.isInFallback&&(f(null,T,H,X,q,null,te,l,d),Ol(E,T))},Te=T.transition&&T.transition.mode==="out-in";Te&&(j.transition.afterLeave=oe),E.isInFallback=!0,h(j,q,null,!0),Te||oe()},move(T,N,j){E.activeBranch&&p(E.activeBranch,T,N,j),E.container=T},next(){return E.activeBranch&&g(E.activeBranch)},registerDep(T,N){const j=!!E.pendingBranch;j&&E.deps++;const q=T.vnode.el;T.asyncDep.catch(H=>{Ys(H,T,0)}).then(H=>{if(T.isUnmounted||E.isUnmounted||E.pendingId!==T.suspenseId)return;T.asyncResolved=!0;const{vnode:te}=T;dg(T,H,!1),q&&(te.el=q);const X=!q&&T.subTree.el;N(T,te,y(q||T.subTree.el),q?null:g(T.subTree),E,r,d),X&&k(X),Gv(T,te.el),j&&--E.deps===0&&E.resolve()})},unmount(T,N){E.isUnmounted=!0,E.activeBranch&&h(E.activeBranch,a,T,N),E.pendingBranch&&h(E.pendingBranch,a,T,N)}};return E}function tO(e,t,a,n,i,o,r,l,d){const u=t.suspense=Xv(t,n,a,e.parentNode,document.createElement("div"),null,i,o,r,l,!0),_=d(e,u.pendingBranch=t.ssContent,a,u,o,r);return u.deps===0&&u.resolve(!1,!0),_}function aO(e){const{shapeFlag:t,children:a}=e,n=t&32;e.ssContent=Lw(n?a.default:a),e.ssFallback=n?Lw(a.fallback):C(cn)}function Lw(e){let t;if(_t(e)){const a=Rs&&e._c;a&&(e._d=!1,P()),e=e(),a&&(e._d=!0,t=Rn,gS())}return Ze(e)&&(e=WR(e)),e=ti(e),t&&!e.dynamicChildren&&(e.dynamicChildren=t.filter(a=>a!==e)),e}function LD(e,t){t&&t.pendingBranch?Ze(e)?t.effects.push(...e):t.effects.push(e):B_(e)}function Ol(e,t){e.activeBranch=t;const{vnode:a,parentComponent:n}=e;let i=t.el;for(;!i&&t.component;)t=t.component.subTree,i=t.el;a.el=i,n&&n.subTree===a&&(n.vnode.el=i,Gv(n,i))}function nO(e){var t;return((t=e.props)==null?void 0:t.suspensible)!=null&&e.props.suspensible!==!1}const BD=Symbol.for("v-scx"),UD=()=>bt(BD);function Ca(e,t){return Md(e,null,t)}function VD(e,t){return Md(e,null,{flush:"post"})}function qD(e,t){return Md(e,null,{flush:"sync"})}const i_={};function Yt(e,t,a){return Md(e,t,a)}function Md(e,t,{immediate:a,deep:n,flush:i,once:o,onTrack:r,onTrigger:l}=ia){if(t&&o){const T=t;t=(...N)=>{T(...N),E()}}const d=Ua,u=T=>n===!0?T:ws(T,n===!1?1:void 0);let _,f=!1,p=!1;if(ea(e)?(_=()=>e.value,f=pd(e)):Gi(e)?(_=()=>u(e),f=!0):Ze(e)?(p=!0,f=e.some(T=>Gi(T)||pd(T)),_=()=>e.map(T=>{if(ea(T))return T.value;if(Gi(T))return u(T);if(_t(T))return Ko(T,d,2)})):_t(e)?t?_=()=>Ko(e,d,2):_=()=>(h&&h(),li(e,d,3,[g])):_=Mn,t&&n){const T=_;_=()=>ws(T())}let h,g=T=>{h=w.onStop=()=>{Ko(T,d,4),h=w.onStop=void 0}},y;if($d)if(g=Mn,t?a&&li(t,d,3,[_(),p?[]:void 0,g]):_(),i==="sync"){const T=UD();y=T.__watcherHandles||(T.__watcherHandles=[])}else return Mn;let k=p?new Array(e.length).fill(i_):i_;const b=()=>{if(!(!w.active||!w.dirty))if(t){const T=w.run();(n||f||(p?T.some((N,j)=>Ji(N,k[j])):Ji(T,k)))&&(h&&h(),li(t,d,3,[T,k===i_?void 0:p&&k[0]===i_?[]:k,g]),k=T)}else w.run()};b.allowRecurse=!!t;let z;i==="sync"?z=b:i==="post"?z=()=>en(b,d&&d.suspense):(b.pre=!0,d&&(b.id=d.uid),z=()=>zm(b));const w=new Kl(_,Mn,z),D=wm(),E=()=>{w.stop(),D&&Tv(D.effects,w)};return t?a?b():k=w.run():i==="post"?en(w.run.bind(w),d&&d.suspense):w.run(),y&&y.push(E),E}function iO(e,t,a){const n=this.proxy,i=xa(e)?e.includes(".")?HD(n,e):()=>n[e]:e.bind(n,n);let o;_t(t)?o=t:(o=t.handler,a=t);const r=Os(this),l=Md(i,o.bind(n),a);return r(),l}function HD(e,t){const a=t.split(".");return()=>{let n=e;for(let i=0;i0){if(a>=t)return e;a++}if(n=n||new Set,n.has(e))return e;if(n.add(e),ea(e))ws(e.value,t,a,n);else if(Ze(e))for(let i=0;i{ws(i,t,a,n)});else if(iD(e))for(const i in e)ws(e[i],t,a,n);return e}function Ns(e,t){if(Oa===null)return e;const a=Nm(Oa)||Oa.proxy,n=e.dirs||(e.dirs=[]);for(let i=0;i{e.isMounted=!0}),Od(()=>{e.isUnmounting=!0}),e}const Di=[Function,Array],ty={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:Di,onEnter:Di,onAfterEnter:Di,onEnterCancelled:Di,onBeforeLeave:Di,onLeave:Di,onAfterLeave:Di,onLeaveCancelled:Di,onBeforeAppear:Di,onAppear:Di,onAfterAppear:Di,onAppearCancelled:Di},oO={name:"BaseTransition",props:ty,setup(e,{slots:t}){const a=Ri(),n=ey();let i;return()=>{const o=t.default&&Cm(t.default(),!0);if(!o||!o.length)return;let r=o[0];if(o.length>1){for(const y of o)if(y.type!==cn){r=y;break}}const l=et(e),{mode:d}=l;if(n.isLeaving)return uh(r);const u=Bw(r);if(!u)return uh(r);const _=Yl(u,l,n,a);Fs(u,_);const f=a.subTree,p=f&&Bw(f);let h=!1;const{getTransitionKey:g}=u.type;if(g){const y=g();i===void 0?i=y:y!==i&&(i=y,h=!0)}if(p&&p.type!==cn&&(!Wi(u,p)||h)){const y=Yl(p,l,n,a);if(Fs(p,y),d==="out-in")return n.isLeaving=!0,y.afterLeave=()=>{n.isLeaving=!1,a.update.active!==!1&&(a.effect.dirty=!0,a.update())},uh(r);d==="in-out"&&u.type!==cn&&(y.delayLeave=(k,b,z)=>{const w=KD(n,p);w[String(p.key)]=p,k[Ar]=()=>{b(),k[Ar]=void 0,delete _.delayedLeave},_.delayedLeave=z})}return r}}},WD=oO;function KD(e,t){const{leavingVNodes:a}=e;let n=a.get(t.type);return n||(n=Object.create(null),a.set(t.type,n)),n}function Yl(e,t,a,n){const{appear:i,mode:o,persisted:r=!1,onBeforeEnter:l,onEnter:d,onAfterEnter:u,onEnterCancelled:_,onBeforeLeave:f,onLeave:p,onAfterLeave:h,onLeaveCancelled:g,onBeforeAppear:y,onAppear:k,onAfterAppear:b,onAppearCancelled:z}=t,w=String(e.key),D=KD(a,e),E=(j,q)=>{j&&li(j,n,9,q)},T=(j,q)=>{const H=q[1];E(j,q),Ze(j)?j.every(te=>te.length<=1)&&H():j.length<=1&&H()},N={mode:o,persisted:r,beforeEnter(j){let q=l;if(!a.isMounted)if(i)q=y||l;else return;j[Ar]&&j[Ar](!0);const H=D[w];H&&Wi(e,H)&&H.el[Ar]&&H.el[Ar](),E(q,[j])},enter(j){let q=d,H=u,te=_;if(!a.isMounted)if(i)q=k||d,H=b||u,te=z||_;else return;let X=!1;const oe=j[o_]=Te=>{X||(X=!0,Te?E(te,[j]):E(H,[j]),N.delayedLeave&&N.delayedLeave(),j[o_]=void 0)};q?T(q,[j,oe]):oe()},leave(j,q){const H=String(e.key);if(j[o_]&&j[o_](!0),a.isUnmounting)return q();E(f,[j]);let te=!1;const X=j[Ar]=oe=>{te||(te=!0,q(),oe?E(g,[j]):E(h,[j]),j[Ar]=void 0,D[H]===e&&delete D[H])};D[H]=e,p?T(p,[j,X]):X()},clone(j){return Yl(j,t,a,n)}};return N}function uh(e){if(Rd(e))return e=Xi(e),e.children=null,e}function Bw(e){return Rd(e)?e.children?e.children[0]:void 0:e}function Fs(e,t){e.shapeFlag&6&&e.component?Fs(e.component.subTree,t):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function Cm(e,t=!1,a){let n=[],i=0;for(let o=0;o1)for(let o=0;o!!e.type.__asyncLoader;/*! #__NO_SIDE_EFFECTS__ */function z_(e){_t(e)&&(e={loader:e});const{loader:t,loadingComponent:a,errorComponent:n,delay:i=200,timeout:o,suspensible:r=!0,onError:l}=e;let d=null,u,_=0;const f=()=>(_++,d=null,p()),p=()=>{let h;return d||(h=d=t().catch(g=>{if(g=g instanceof Error?g:new Error(String(g)),l)return new Promise((y,k)=>{l(g,()=>y(f()),()=>k(g),_+1)});throw g}).then(g=>h!==d&&d?d:(g&&(g.__esModule||g[Symbol.toStringTag]==="Module")&&(g=g.default),u=g,g)))};return kt({name:"AsyncComponentWrapper",__asyncLoader:p,get __asyncResolved(){return u},setup(){const h=Ua;if(u)return()=>_h(u,h);const g=z=>{d=null,Ys(z,h,13,!n)};if(r&&h.suspense||$d)return p().then(z=>()=>_h(z,h)).catch(z=>(g(z),()=>n?C(n,{error:z}):null));const y=le(!1),k=le(),b=le(!!i);return i&&setTimeout(()=>{b.value=!1},i),o!=null&&setTimeout(()=>{if(!y.value&&!k.value){const z=new Error(`Async component timed out after ${o}ms.`);g(z),k.value=z}},o),p().then(()=>{y.value=!0,h.parent&&Rd(h.parent.vnode)&&(h.parent.effect.dirty=!0,zm(h.parent.update))}).catch(z=>{g(z),k.value=z}),()=>{if(y.value&&u)return _h(u,h);if(k.value&&n)return C(n,{error:k.value});if(a&&!b.value)return C(a)}}})}function _h(e,t){const{ref:a,props:n,children:i,ce:o}=t.vnode,r=C(e,n,i);return r.ref=a,r.ce=o,delete t.vnode.ce,r}const Rd=e=>e.type.__isKeepAlive,rO={name:"KeepAlive",__isKeepAlive:!0,props:{include:[String,RegExp,Array],exclude:[String,RegExp,Array],max:[String,Number]},setup(e,{slots:t}){const a=Ri(),n=a.ctx;if(!n.renderer)return()=>{const z=t.default&&t.default();return z&&z.length===1?z[0]:z};const i=new Map,o=new Set;let r=null;const l=a.suspense,{renderer:{p:d,m:u,um:_,o:{createElement:f}}}=n,p=f("div");n.activate=(z,w,D,E,T)=>{const N=z.component;u(z,w,D,0,l),d(N.vnode,z,w,D,N,l,E,z.slotScopeIds,T),en(()=>{N.isDeactivated=!1,N.a&&Fl(N.a);const j=z.props&&z.props.onVnodeMounted;j&&In(j,N.parent,z)},l)},n.deactivate=z=>{const w=z.component;u(z,p,null,1,l),en(()=>{w.da&&Fl(w.da);const D=z.props&&z.props.onVnodeUnmounted;D&&In(D,w.parent,z),w.isDeactivated=!0},l)};function h(z){mh(z),_(z,a,l,!0)}function g(z){i.forEach((w,D)=>{const E=_g(w.type);E&&(!z||!z(E))&&y(D)})}function y(z){const w=i.get(z);!r||!Wi(w,r)?h(w):r&&mh(r),i.delete(z),o.delete(z)}Yt(()=>[e.include,e.exclude],([z,w])=>{z&&g(D=>Kc(z,D)),w&&g(D=>!Kc(w,D))},{flush:"post",deep:!0});let k=null;const b=()=>{k!=null&&i.set(k,ph(a.subTree))};return Ct(b),Tm(b),Od(()=>{i.forEach(z=>{const{subTree:w,suspense:D}=a,E=ph(w);if(z.type===E.type&&z.key===E.key){mh(E);const T=E.component.da;T&&en(T,D);return}h(z)})}),()=>{if(k=null,!t.default)return null;const z=t.default(),w=z[0];if(z.length>1)return r=null,z;if(!Vr(w)||!(w.shapeFlag&4)&&!(w.shapeFlag&128))return r=null,w;let D=ph(w);const E=D.type,T=_g(Es(D)?D.type.__asyncResolved||{}:E),{include:N,exclude:j,max:q}=e;if(N&&(!T||!Kc(N,T))||j&&T&&Kc(j,T))return r=D,w;const H=D.key==null?E:D.key,te=i.get(H);return D.el&&(D=Xi(D),w.shapeFlag&128&&(w.ssContent=D)),k=H,te?(D.el=te.el,D.component=te.component,D.transition&&Fs(D,D.transition),D.shapeFlag|=512,o.delete(H),o.add(H)):(o.add(H),q&&o.size>parseInt(q,10)&&y(o.values().next().value)),D.shapeFlag|=256,r=D,$D(w.type)?w:D}}},sO=rO;function Kc(e,t){return Ze(e)?e.some(a=>Kc(a,t)):xa(e)?e.split(",").includes(t):WM(e)?e.test(t):!1}function ay(e,t){YD(e,"a",t)}function ny(e,t){YD(e,"da",t)}function YD(e,t,a=Ua){const n=e.__wdc||(e.__wdc=()=>{let i=a;for(;i;){if(i.isDeactivated)return;i=i.parent}return e()});if(jm(t,n,a),a){let i=a.parent;for(;i&&i.parent;)Rd(i.parent.vnode)&&lO(n,t,a,i),i=i.parent}}function lO(e,t,a,n){const i=jm(t,e,n,!0);Da(()=>{Tv(n[t],i)},a)}function mh(e){e.shapeFlag&=-257,e.shapeFlag&=-513}function ph(e){return e.shapeFlag&128?e.ssContent:e}function jm(e,t,a=Ua,n=!1){if(a){const i=a[e]||(a[e]=[]),o=t.__weh||(t.__weh=(...r)=>{if(a.isUnmounted)return;Ws();const l=Os(a),d=li(t,a,e,r);return l(),Ks(),d});return n?i.unshift(o):i.push(o),o}}const Xo=e=>(t,a=Ua)=>(!$d||e==="sp")&&jm(e,(...n)=>t(...n),a),iy=Xo("bm"),Ct=Xo("m"),ZD=Xo("bu"),Tm=Xo("u"),Od=Xo("bum"),Da=Xo("um"),GD=Xo("sp"),QD=Xo("rtg"),JD=Xo("rtc");function XD(e,t=Ua){jm("ec",e,t)}function Un(e,t,a,n){let i;const o=a&&a[n];if(Ze(e)||xa(e)){i=new Array(e.length);for(let r=0,l=e.length;rt(r,l,void 0,o&&o[l]));else{const r=Object.keys(e);i=new Array(r.length);for(let l=0,d=r.length;l{const o=n.fn(...i);return o&&(o.key=n.key),o}:n.fn)}return e}function it(e,t,a={},n,i){if(Oa.isCE||Oa.parent&&Es(Oa.parent)&&Oa.parent.isCE)return t!=="default"&&(a.name=t),C("slot",a,n&&n());let o=e[t];o&&o._c&&(o._d=!1),P();const r=o&&tS(o(a)),l=R(yt,{key:a.key||r&&r.key||`_${t}`},r||(n?n():[]),r&&e._===1?64:-2);return!i&&l.scopeId&&(l.slotScopeIds=[l.scopeId+"-s"]),o&&o._c&&(o._d=!0),l}function tS(e){return e.some(t=>Vr(t)?!(t.type===cn||t.type===yt&&!tS(t.children)):!0)?e:null}function cO(e,t){const a={};for(const n in e)a[t&&/[A-Z]/.test(n)?`on:${n}`:Jc(n)]=e[n];return a}const tg=e=>e?wS(e)?Nm(e)||e.proxy:tg(e.parent):null,Xc=wa(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=>tg(e.parent),$root:e=>tg(e.root),$emit:e=>e.emit,$options:e=>oy(e),$forceUpdate:e=>e.f||(e.f=()=>{e.effect.dirty=!0,zm(e.update)}),$nextTick:e=>e.n||(e.n=ha.bind(e.proxy)),$watch:e=>iO.bind(e)}),fh=(e,t)=>e!==ia&&!e.__isScriptSetup&&Vt(e,t),ag={get({_:e},t){const{ctx:a,setupState:n,data:i,props:o,accessCache:r,type:l,appContext:d}=e;let u;if(t[0]!=="$"){const h=r[t];if(h!==void 0)switch(h){case 1:return n[t];case 2:return i[t];case 4:return a[t];case 3:return o[t]}else{if(fh(n,t))return r[t]=1,n[t];if(i!==ia&&Vt(i,t))return r[t]=2,i[t];if((u=e.propsOptions[0])&&Vt(u,t))return r[t]=3,o[t];if(a!==ia&&Vt(a,t))return r[t]=4,a[t];ng&&(r[t]=0)}}const _=Xc[t];let f,p;if(_)return t==="$attrs"&&Bn(e,"get",t),_(e);if((f=l.__cssModules)&&(f=f[t]))return f;if(a!==ia&&Vt(a,t))return r[t]=4,a[t];if(p=d.config.globalProperties,Vt(p,t))return p[t]},set({_:e},t,a){const{data:n,setupState:i,ctx:o}=e;return fh(i,t)?(i[t]=a,!0):n!==ia&&Vt(n,t)?(n[t]=a,!0):Vt(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(o[t]=a,!0)},has({_:{data:e,setupState:t,accessCache:a,ctx:n,appContext:i,propsOptions:o}},r){let l;return!!a[r]||e!==ia&&Vt(e,r)||fh(t,r)||(l=o[0])&&Vt(l,r)||Vt(n,r)||Vt(Xc,r)||Vt(i.config.globalProperties,r)},defineProperty(e,t,a){return a.get!=null?e._.accessCache[t]=0:Vt(a,"value")&&this.set(e,t,a.value,null),Reflect.defineProperty(e,t,a)}},dO=wa({},ag,{get(e,t){if(t!==Symbol.unscopables)return ag.get(e,t,e)},has(e,t){return t[0]!=="_"&&!QM(t)}});function uO(){return null}function _O(){return null}function mO(e){}function pO(e){}function fO(){return null}function hO(){}function gO(e,t){return null}function Yr(){return nS().slots}function aS(){return nS().attrs}function nS(){const e=Ri();return e.setupContext||(e.setupContext=SS(e))}function bd(e){return Ze(e)?e.reduce((t,a)=>(t[a]=null,t),{}):e}function vO(e,t){const a=bd(e);for(const n in t){if(n.startsWith("__skip"))continue;let i=a[n];i?Ze(i)||_t(i)?i=a[n]={type:i,default:t[n]}:i.default=t[n]:i===null&&(i=a[n]={default:t[n]}),i&&t[`__skip_${n}`]&&(i.skipFactory=!0)}return a}function yO(e,t){return!e||!t?e||t:Ze(e)&&Ze(t)?e.concat(t):wa({},bd(e),bd(t))}function bO(e,t){const a={};for(const n in e)t.includes(n)||Object.defineProperty(a,n,{enumerable:!0,get:()=>e[n]});return a}function kO(e){const t=Ri();let a=e();return cg(),Iv(a)&&(a=a.catch(n=>{throw Os(t),n})),[a,()=>Os(t)]}let ng=!0;function wO(e){const t=oy(e),a=e.proxy,n=e.ctx;ng=!1,t.beforeCreate&&Uw(t.beforeCreate,e,"bc");const{data:i,computed:o,methods:r,watch:l,provide:d,inject:u,created:_,beforeMount:f,mounted:p,beforeUpdate:h,updated:g,activated:y,deactivated:k,beforeDestroy:b,beforeUnmount:z,destroyed:w,unmounted:D,render:E,renderTracked:T,renderTriggered:N,errorCaptured:j,serverPrefetch:q,expose:H,inheritAttrs:te,components:X,directives:oe,filters:Te}=t;if(u&&xO(u,n,null),r)for(const Ce in r){const Pe=r[Ce];_t(Pe)&&(n[Ce]=Pe.bind(a))}if(i){const Ce=i.call(a,a);ra(Ce)&&(e.data=ui(Ce))}if(ng=!0,o)for(const Ce in o){const Pe=o[Ce],Ke=_t(Pe)?Pe.bind(a,a):_t(Pe.get)?Pe.get.bind(a,a):Mn,re=!_t(Pe)&&_t(Pe.set)?Pe.set.bind(a):Mn,Qe=V({get:Ke,set:re});Object.defineProperty(n,Ce,{enumerable:!0,configurable:!0,get:()=>Qe.value,set:at=>Qe.value=at})}if(l)for(const Ce in l)iS(l[Ce],n,a,Ce);if(d){const Ce=_t(d)?d.call(a):d;Reflect.ownKeys(Ce).forEach(Pe=>{ma(Pe,Ce[Pe])})}_&&Uw(_,e,"c");function de(Ce,Pe){Ze(Pe)?Pe.forEach(Ke=>Ce(Ke.bind(a))):Pe&&Ce(Pe.bind(a))}if(de(iy,f),de(Ct,p),de(ZD,h),de(Tm,g),de(ay,y),de(ny,k),de(XD,j),de(JD,T),de(QD,N),de(Od,z),de(Da,D),de(GD,q),Ze(H))if(H.length){const Ce=e.exposed||(e.exposed={});H.forEach(Pe=>{Object.defineProperty(Ce,Pe,{get:()=>a[Pe],set:Ke=>a[Pe]=Ke})})}else e.exposed||(e.exposed={});E&&e.render===Mn&&(e.render=E),te!=null&&(e.inheritAttrs=te),X&&(e.components=X),oe&&(e.directives=oe)}function xO(e,t,a=Mn){Ze(e)&&(e=ig(e));for(const n in e){const i=e[n];let o;ra(i)?"default"in i?o=bt(i.from||n,i.default,!0):o=bt(i.from||n):o=bt(i),ea(o)?Object.defineProperty(t,n,{enumerable:!0,configurable:!0,get:()=>o.value,set:r=>o.value=r}):t[n]=o}}function Uw(e,t,a){li(Ze(e)?e.map(n=>n.bind(t.proxy)):e.bind(t.proxy),t,a)}function iS(e,t,a,n){const i=n.includes(".")?HD(a,n):()=>a[n];if(xa(e)){const o=t[e];_t(o)&&Yt(i,o)}else if(_t(e))Yt(i,e.bind(a));else if(ra(e))if(Ze(e))e.forEach(o=>iS(o,t,a,n));else{const o=_t(e.handler)?e.handler.bind(a):t[e.handler];_t(o)&&Yt(i,o,e)}}function oy(e){const t=e.type,{mixins:a,extends:n}=t,{mixins:i,optionsCache:o,config:{optionMergeStrategies:r}}=e.appContext,l=o.get(t);let d;return l?d=l:!i.length&&!a&&!n?d=t:(d={},i.length&&i.forEach(u=>V_(d,u,r,!0)),V_(d,t,r)),ra(t)&&o.set(t,d),d}function V_(e,t,a,n=!1){const{mixins:i,extends:o}=t;o&&V_(e,o,a,!0),i&&i.forEach(r=>V_(e,r,a,!0));for(const r in t)if(!(n&&r==="expose")){const l=DO[r]||a&&a[r];e[r]=l?l(e[r],t[r]):t[r]}return e}const DO={data:Vw,props:qw,emits:qw,methods:Yc,computed:Yc,beforeCreate:gn,created:gn,beforeMount:gn,mounted:gn,beforeUpdate:gn,updated:gn,beforeDestroy:gn,beforeUnmount:gn,destroyed:gn,unmounted:gn,activated:gn,deactivated:gn,errorCaptured:gn,serverPrefetch:gn,components:Yc,directives:Yc,watch:zO,provide:Vw,inject:SO};function Vw(e,t){return t?e?function(){return wa(_t(e)?e.call(this,this):e,_t(t)?t.call(this,this):t)}:t:e}function SO(e,t){return Yc(ig(e),ig(t))}function ig(e){if(Ze(e)){const t={};for(let a=0;a1)return a&&_t(t)?t.call(n&&n.proxy):t}}function ry(){return!!(Ua||Oa||kd)}function AO(e,t,a,n=!1){const i={},o={};O_(o,Im,1),e.propsDefaults=Object.create(null),rS(e,t,i,o);for(const r in e.propsOptions[0])r in i||(i[r]=void 0);a?e.props=n?i:Bv(i):e.type.props?e.props=i:e.props=o,e.attrs=o}function CO(e,t,a,n){const{props:i,attrs:o,vnode:{patchFlag:r}}=e,l=et(i),[d]=e.propsOptions;let u=!1;if((n||r>0)&&!(r&16)){if(r&8){const _=e.vnode.dynamicProps;for(let f=0;f<_.length;f++){let p=_[f];if(Pm(e.emitsOptions,p))continue;const h=t[p];if(d)if(Vt(o,p))h!==o[p]&&(o[p]=h,u=!0);else{const g=wn(p);i[g]=og(d,l,g,h,e,!1)}else h!==o[p]&&(o[p]=h,u=!0)}}}else{rS(e,t,i,o)&&(u=!0);let _;for(const f in l)(!t||!Vt(t,f)&&((_=ai(f))===f||!Vt(t,_)))&&(d?a&&(a[f]!==void 0||a[_]!==void 0)&&(i[f]=og(d,l,f,void 0,e,!0)):delete i[f]);if(o!==l)for(const f in o)(!t||!Vt(t,f))&&(delete o[f],u=!0)}u&&Wo(e,"set","$attrs")}function rS(e,t,a,n){const[i,o]=e.propsOptions;let r=!1,l;if(t)for(let d in t){if(Qc(d))continue;const u=t[d];let _;i&&Vt(i,_=wn(d))?!o||!o.includes(_)?a[_]=u:(l||(l={}))[_]=u:Pm(e.emitsOptions,d)||(!(d in n)||u!==n[d])&&(n[d]=u,r=!0)}if(o){const d=et(a),u=l||ia;for(let _=0;_{d=!0;const[p,h]=sS(f,t,!0);wa(r,p),h&&l.push(...h)};!a&&t.mixins.length&&t.mixins.forEach(_),e.extends&&_(e.extends),e.mixins&&e.mixins.forEach(_)}if(!o&&!d)return ra(e)&&n.set(e,Il),Il;if(Ze(o))for(let _=0;_-1,h[1]=y<0||g-1||Vt(h,"default"))&&l.push(f)}}}const u=[r,l];return ra(e)&&n.set(e,u),u}function Hw(e){return e[0]!=="$"}function Ww(e){const t=e&&e.toString().match(/^\s*(function|class) (\w+)/);return t?t[2]:e===null?"null":""}function Kw(e,t){return Ww(e)===Ww(t)}function Yw(e,t){return Ze(t)?t.findIndex(a=>Kw(a,e)):_t(t)&&Kw(t,e)?0:-1}const lS=e=>e[0]==="_"||e==="$stable",sy=e=>Ze(e)?e.map(ti):[ti(e)],jO=(e,t,a)=>{if(t._n)return t;const n=me((...i)=>sy(t(...i)),a);return n._c=!1,n},cS=(e,t,a)=>{const n=e._ctx;for(const i in e){if(lS(i))continue;const o=e[i];if(_t(o))t[i]=jO(i,o,n);else if(o!=null){const r=sy(o);t[i]=()=>r}}},dS=(e,t)=>{const a=sy(t);e.slots.default=()=>a},TO=(e,t)=>{if(e.vnode.shapeFlag&32){const a=t._;a?(e.slots=et(t),O_(t,"_",a)):cS(t,e.slots={})}else e.slots={},t&&dS(e,t);O_(e.slots,Im,1)},IO=(e,t,a)=>{const{vnode:n,slots:i}=e;let o=!0,r=ia;if(n.shapeFlag&32){const l=t._;l?a&&l===1?o=!1:(wa(i,t),!a&&l===1&&delete i._):(o=!t.$stable,cS(t,i)),r=t}else t&&(dS(e,t),r={default:1});if(o)for(const l in i)!lS(l)&&r[l]==null&&delete i[l]};function q_(e,t,a,n,i=!1){if(Ze(e)){e.forEach((p,h)=>q_(p,t&&(Ze(t)?t[h]:t),a,n,i));return}if(Es(n)&&!i)return;const o=n.shapeFlag&4?Nm(n.component)||n.component.proxy:n.el,r=i?null:o,{i:l,r:d}=e,u=t&&t.r,_=l.refs===ia?l.refs={}:l.refs,f=l.setupState;if(u!=null&&u!==d&&(xa(u)?(_[u]=null,Vt(f,u)&&(f[u]=null)):ea(u)&&(u.value=null)),_t(d))Ko(d,l,12,[r,_]);else{const p=xa(d),h=ea(d),g=e.f;if(p||h){const y=()=>{if(g){const k=p?Vt(f,d)?f[d]:_[d]:d.value;i?Ze(k)&&Tv(k,o):Ze(k)?k.includes(o)||k.push(o):p?(_[d]=[o],Vt(f,d)&&(f[d]=_[d])):(d.value=[o],e.k&&(_[e.k]=d.value))}else p?(_[d]=r,Vt(f,d)&&(f[d]=r)):h&&(d.value=r,e.k&&(_[e.k]=r))};i||g?y():(y.id=-1,en(y,a))}}}let br=!1;const NO=e=>e.namespaceURI.includes("svg")&&e.tagName!=="foreignObject",FO=e=>e.namespaceURI.includes("MathML"),r_=e=>{if(NO(e))return"svg";if(FO(e))return"mathml"},s_=e=>e.nodeType===8;function MO(e){const{mt:t,p:a,o:{patchProp:n,createText:i,nextSibling:o,parentNode:r,remove:l,insert:d,createComment:u}}=e,_=(w,D)=>{if(!D.hasChildNodes()){a(null,w,D),U_(),D._vnode=w;return}br=!1,f(D.firstChild,w,null,null,null),U_(),D._vnode=w,br&&console.error("Hydration completed but contains mismatches.")},f=(w,D,E,T,N,j=!1)=>{const q=s_(w)&&w.data==="[",H=()=>y(w,D,E,T,N,q),{type:te,ref:X,shapeFlag:oe,patchFlag:Te}=D;let Ae=w.nodeType;D.el=w,Te===-2&&(j=!1,D.dynamicChildren=null);let de=null;switch(te){case Ms:Ae!==3?D.children===""?(d(D.el=i(""),r(w),w),de=w):de=H():(w.data!==D.children&&(br=!0,w.data=D.children),de=o(w));break;case cn:z(w)?(de=o(w),b(D.el=w.content.firstChild,w,E)):Ae!==8||q?de=H():de=o(w);break;case As:if(q&&(w=o(w),Ae=w.nodeType),Ae===1||Ae===3){de=w;const Ce=!D.children.length;for(let Pe=0;Pe{j=j||!!D.dynamicChildren;const{type:q,props:H,patchFlag:te,shapeFlag:X,dirs:oe,transition:Te}=D,Ae=q==="input"||q==="option";if(Ae||te!==-1){oe&&po(D,null,E,"created");let de=!1;if(z(w)){de=pS(T,Te)&&E&&E.vnode.props&&E.vnode.props.appear;const Pe=w.content.firstChild;de&&Te.beforeEnter(Pe),b(Pe,w,E),D.el=w=Pe}if(X&16&&!(H&&(H.innerHTML||H.textContent))){let Pe=h(w.firstChild,D,w,E,T,N,j);for(;Pe;){br=!0;const Ke=Pe;Pe=Pe.nextSibling,l(Ke)}}else X&8&&w.textContent!==D.children&&(br=!0,w.textContent=D.children);if(H)if(Ae||!j||te&48)for(const Pe in H)(Ae&&(Pe.endsWith("value")||Pe==="indeterminate")||Id(Pe)&&!Qc(Pe)||Pe[0]===".")&&n(w,Pe,null,H[Pe],void 0,void 0,E);else H.onClick&&n(w,"onClick",null,H.onClick,void 0,void 0,E);let Ce;(Ce=H&&H.onVnodeBeforeMount)&&In(Ce,E,D),oe&&po(D,null,E,"beforeMount"),((Ce=H&&H.onVnodeMounted)||oe||de)&&LD(()=>{Ce&&In(Ce,E,D),de&&Te.enter(w),oe&&po(D,null,E,"mounted")},T)}return w.nextSibling},h=(w,D,E,T,N,j,q)=>{q=q||!!D.dynamicChildren;const H=D.children,te=H.length;for(let X=0;X{const{slotScopeIds:q}=D;q&&(N=N?N.concat(q):q);const H=r(w),te=h(o(w),D,H,E,T,N,j);return te&&s_(te)&&te.data==="]"?o(D.anchor=te):(br=!0,d(D.anchor=u("]"),H,te),te)},y=(w,D,E,T,N,j)=>{if(br=!0,D.el=null,j){const te=k(w);for(;;){const X=o(w);if(X&&X!==te)l(X);else break}}const q=o(w),H=r(w);return l(w),a(null,D,H,q,E,T,r_(H),N),q},k=(w,D="[",E="]")=>{let T=0;for(;w;)if(w=o(w),w&&s_(w)&&(w.data===D&&T++,w.data===E)){if(T===0)return o(w);T--}return w},b=(w,D,E)=>{const T=D.parentNode;T&&T.replaceChild(w,D);let N=E;for(;N;)N.vnode.el===D&&(N.vnode.el=N.subTree.el=w),N=N.parent},z=w=>w.nodeType===1&&w.tagName.toLowerCase()==="template";return[_,f]}const en=LD;function uS(e){return mS(e)}function _S(e){return mS(e,MO)}function mS(e,t){const a=oD();a.__VUE__=!0;const{insert:n,remove:i,patchProp:o,createElement:r,createText:l,createComment:d,setText:u,setElementText:_,parentNode:f,nextSibling:p,setScopeId:h=Mn,insertStaticContent:g}=e,y=(S,x,O,W=null,Y=null,_e=null,Se=void 0,ge=null,we=!!x.dynamicChildren)=>{if(S===x)return;S&&!Wi(S,x)&&(W=ce(S),at(S,Y,_e,!0),S=null),x.patchFlag===-2&&(we=!1,x.dynamicChildren=null);const{type:ve,ref:Ne,shapeFlag:Ge}=x;switch(ve){case Ms:k(S,x,O,W);break;case cn:b(S,x,O,W);break;case As:S==null&&z(x,O,W,Se);break;case yt:X(S,x,O,W,Y,_e,Se,ge,we);break;default:Ge&1?E(S,x,O,W,Y,_e,Se,ge,we):Ge&6?oe(S,x,O,W,Y,_e,Se,ge,we):(Ge&64||Ge&128)&&ve.process(S,x,O,W,Y,_e,Se,ge,we,Oe)}Ne!=null&&Y&&q_(Ne,S&&S.ref,_e,x||S,!x)},k=(S,x,O,W)=>{if(S==null)n(x.el=l(x.children),O,W);else{const Y=x.el=S.el;x.children!==S.children&&u(Y,x.children)}},b=(S,x,O,W)=>{S==null?n(x.el=d(x.children||""),O,W):x.el=S.el},z=(S,x,O,W)=>{[S.el,S.anchor]=g(S.children,x,O,W,S.el,S.anchor)},w=({el:S,anchor:x},O,W)=>{let Y;for(;S&&S!==x;)Y=p(S),n(S,O,W),S=Y;n(x,O,W)},D=({el:S,anchor:x})=>{let O;for(;S&&S!==x;)O=p(S),i(S),S=O;i(x)},E=(S,x,O,W,Y,_e,Se,ge,we)=>{x.type==="svg"?Se="svg":x.type==="math"&&(Se="mathml"),S==null?T(x,O,W,Y,_e,Se,ge,we):q(S,x,Y,_e,Se,ge,we)},T=(S,x,O,W,Y,_e,Se,ge)=>{let we,ve;const{props:Ne,shapeFlag:Ge,transition:Ee,dirs:J}=S;if(we=S.el=r(S.type,_e,Ne&&Ne.is,Ne),Ge&8?_(we,S.children):Ge&16&&j(S.children,we,null,W,Y,hh(S,_e),Se,ge),J&&po(S,null,W,"created"),N(we,S,S.scopeId,Se,W),Ne){for(const $e in Ne)$e!=="value"&&!Qc($e)&&o(we,$e,null,Ne[$e],_e,S.children,W,Y,Tt);"value"in Ne&&o(we,"value",null,Ne.value,_e),(ve=Ne.onVnodeBeforeMount)&&In(ve,W,S)}J&&po(S,null,W,"beforeMount");const ie=pS(Y,Ee);ie&&Ee.beforeEnter(we),n(we,x,O),((ve=Ne&&Ne.onVnodeMounted)||ie||J)&&en(()=>{ve&&In(ve,W,S),ie&&Ee.enter(we),J&&po(S,null,W,"mounted")},Y)},N=(S,x,O,W,Y)=>{if(O&&h(S,O),W)for(let _e=0;_e{for(let ve=we;ve{const ge=x.el=S.el;let{patchFlag:we,dynamicChildren:ve,dirs:Ne}=x;we|=S.patchFlag&16;const Ge=S.props||ia,Ee=x.props||ia;let J;if(O&&_s(O,!1),(J=Ee.onVnodeBeforeUpdate)&&In(J,O,x,S),Ne&&po(x,S,O,"beforeUpdate"),O&&_s(O,!0),ve?H(S.dynamicChildren,ve,ge,O,W,hh(x,Y),_e):Se||Pe(S,x,ge,null,O,W,hh(x,Y),_e,!1),we>0){if(we&16)te(ge,x,Ge,Ee,O,W,Y);else if(we&2&&Ge.class!==Ee.class&&o(ge,"class",null,Ee.class,Y),we&4&&o(ge,"style",Ge.style,Ee.style,Y),we&8){const ie=x.dynamicProps;for(let $e=0;$e{J&&In(J,O,x,S),Ne&&po(x,S,O,"updated")},W)},H=(S,x,O,W,Y,_e,Se)=>{for(let ge=0;ge{if(O!==W){if(O!==ia)for(const ge in O)!Qc(ge)&&!(ge in W)&&o(S,ge,O[ge],null,Se,x.children,Y,_e,Tt);for(const ge in W){if(Qc(ge))continue;const we=W[ge],ve=O[ge];we!==ve&&ge!=="value"&&o(S,ge,ve,we,Se,x.children,Y,_e,Tt)}"value"in W&&o(S,"value",O.value,W.value,Se)}},X=(S,x,O,W,Y,_e,Se,ge,we)=>{const ve=x.el=S?S.el:l(""),Ne=x.anchor=S?S.anchor:l("");let{patchFlag:Ge,dynamicChildren:Ee,slotScopeIds:J}=x;J&&(ge=ge?ge.concat(J):J),S==null?(n(ve,O,W),n(Ne,O,W),j(x.children||[],O,Ne,Y,_e,Se,ge,we)):Ge>0&&Ge&64&&Ee&&S.dynamicChildren?(H(S.dynamicChildren,Ee,O,Y,_e,Se,ge),(x.key!=null||Y&&x===Y.subTree)&&ly(S,x,!0)):Pe(S,x,O,Ne,Y,_e,Se,ge,we)},oe=(S,x,O,W,Y,_e,Se,ge,we)=>{x.slotScopeIds=ge,S==null?x.shapeFlag&512?Y.ctx.activate(x,O,W,Se,we):Te(x,O,W,Y,_e,Se,we):Ae(S,x,we)},Te=(S,x,O,W,Y,_e,Se)=>{const ge=S.component=kS(S,W,Y);if(Rd(S)&&(ge.ctx.renderer=Oe),xS(ge),ge.asyncDep){if(Y&&Y.registerDep(ge,de),!S.el){const we=ge.subTree=C(cn);b(null,we,x,O)}}else de(ge,S,x,O,Y,_e,Se)},Ae=(S,x,O)=>{const W=x.component=S.component;if(ZR(S,x,O))if(W.asyncDep&&!W.asyncResolved){Ce(W,x,O);return}else W.next=x,VR(W.update),W.effect.dirty=!0,W.update();else x.el=S.el,W.vnode=x},de=(S,x,O,W,Y,_e,Se)=>{const ge=()=>{if(S.isMounted){let{next:Ne,bu:Ge,u:Ee,parent:J,vnode:ie}=S;{const Ma=fS(S);if(Ma){Ne&&(Ne.el=ie.el,Ce(S,Ne,Se)),Ma.asyncDep.then(()=>{S.isUnmounted||ge()});return}}let $e=Ne,nt;_s(S,!1),Ne?(Ne.el=ie.el,Ce(S,Ne,Se)):Ne=ie,Ge&&Fl(Ge),(nt=Ne.props&&Ne.props.onVnodeBeforeUpdate)&&In(nt,J,Ne,ie),_s(S,!0);const Wt=S_(S),Pa=S.subTree;S.subTree=Wt,y(Pa,Wt,f(Pa.el),ce(Pa),S,Y,_e),Ne.el=Wt.el,$e===null&&Gv(S,Wt.el),Ee&&en(Ee,Y),(nt=Ne.props&&Ne.props.onVnodeUpdated)&&en(()=>In(nt,J,Ne,ie),Y)}else{let Ne;const{el:Ge,props:Ee}=x,{bm:J,m:ie,parent:$e}=S,nt=Es(x);if(_s(S,!1),J&&Fl(J),!nt&&(Ne=Ee&&Ee.onVnodeBeforeMount)&&In(Ne,$e,x),_s(S,!0),Ge&&vt){const Wt=()=>{S.subTree=S_(S),vt(Ge,S.subTree,S,Y,null)};nt?x.type.__asyncLoader().then(()=>!S.isUnmounted&&Wt()):Wt()}else{const Wt=S.subTree=S_(S);y(null,Wt,O,W,S,Y,_e),x.el=Wt.el}if(ie&&en(ie,Y),!nt&&(Ne=Ee&&Ee.onVnodeMounted)){const Wt=x;en(()=>In(Ne,$e,Wt),Y)}(x.shapeFlag&256||$e&&Es($e.vnode)&&$e.vnode.shapeFlag&256)&&S.a&&en(S.a,Y),S.isMounted=!0,x=O=W=null}},we=S.effect=new Kl(ge,Mn,()=>zm(ve),S.scope),ve=S.update=()=>{we.dirty&&we.run()};ve.id=S.uid,_s(S,!0),ve()},Ce=(S,x,O)=>{x.component=S;const W=S.vnode.props;S.vnode=x,S.next=null,CO(S,x.props,W,O),IO(S,x.children,O),Ws(),Rw(S),Ks()},Pe=(S,x,O,W,Y,_e,Se,ge,we=!1)=>{const ve=S&&S.children,Ne=S?S.shapeFlag:0,Ge=x.children,{patchFlag:Ee,shapeFlag:J}=x;if(Ee>0){if(Ee&128){re(ve,Ge,O,W,Y,_e,Se,ge,we);return}else if(Ee&256){Ke(ve,Ge,O,W,Y,_e,Se,ge,we);return}}J&8?(Ne&16&&Tt(ve,Y,_e),Ge!==ve&&_(O,Ge)):Ne&16?J&16?re(ve,Ge,O,W,Y,_e,Se,ge,we):Tt(ve,Y,_e,!0):(Ne&8&&_(O,""),J&16&&j(Ge,O,W,Y,_e,Se,ge,we))},Ke=(S,x,O,W,Y,_e,Se,ge,we)=>{S=S||Il,x=x||Il;const ve=S.length,Ne=x.length,Ge=Math.min(ve,Ne);let Ee;for(Ee=0;EeNe?Tt(S,Y,_e,!0,!1,Ge):j(x,O,W,Y,_e,Se,ge,we,Ge)},re=(S,x,O,W,Y,_e,Se,ge,we)=>{let ve=0;const Ne=x.length;let Ge=S.length-1,Ee=Ne-1;for(;ve<=Ge&&ve<=Ee;){const J=S[ve],ie=x[ve]=we?Cr(x[ve]):ti(x[ve]);if(Wi(J,ie))y(J,ie,O,null,Y,_e,Se,ge,we);else break;ve++}for(;ve<=Ge&&ve<=Ee;){const J=S[Ge],ie=x[Ee]=we?Cr(x[Ee]):ti(x[Ee]);if(Wi(J,ie))y(J,ie,O,null,Y,_e,Se,ge,we);else break;Ge--,Ee--}if(ve>Ge){if(ve<=Ee){const J=Ee+1,ie=JEe)for(;ve<=Ge;)at(S[ve],Y,_e,!0),ve++;else{const J=ve,ie=ve,$e=new Map;for(ve=ie;ve<=Ee;ve++){const ja=x[ve]=we?Cr(x[ve]):ti(x[ve]);ja.key!=null&&$e.set(ja.key,ve)}let nt,Wt=0;const Pa=Ee-ie+1;let Ma=!1,nn=0;const qn=new Array(Pa);for(ve=0;ve=Pa){at(ja,Y,_e,!0);continue}let Wa;if(ja.key!=null)Wa=$e.get(ja.key);else for(nt=ie;nt<=Ee;nt++)if(qn[nt-ie]===0&&Wi(ja,x[nt])){Wa=nt;break}Wa===void 0?at(ja,Y,_e,!0):(qn[Wa-ie]=ve+1,Wa>=nn?nn=Wa:Ma=!0,y(ja,x[Wa],O,null,Y,_e,Se,ge,we),Wt++)}const Ut=Ma?RO(qn):Il;for(nt=Ut.length-1,ve=Pa-1;ve>=0;ve--){const ja=ie+ve,Wa=x[ja],al=ja+1{const{el:_e,type:Se,transition:ge,children:we,shapeFlag:ve}=S;if(ve&6){Qe(S.component.subTree,x,O,W);return}if(ve&128){S.suspense.move(x,O,W);return}if(ve&64){Se.move(S,x,O,Oe);return}if(Se===yt){n(_e,x,O);for(let Ge=0;Gege.enter(_e),Y);else{const{leave:Ge,delayLeave:Ee,afterLeave:J}=ge,ie=()=>n(_e,x,O),$e=()=>{Ge(_e,()=>{ie(),J&&J()})};Ee?Ee(_e,ie,$e):$e()}else n(_e,x,O)},at=(S,x,O,W=!1,Y=!1)=>{const{type:_e,props:Se,ref:ge,children:we,dynamicChildren:ve,shapeFlag:Ne,patchFlag:Ge,dirs:Ee}=S;if(ge!=null&&q_(ge,null,O,S,!0),Ne&256){x.ctx.deactivate(S);return}const J=Ne&1&&Ee,ie=!Es(S);let $e;if(ie&&($e=Se&&Se.onVnodeBeforeUnmount)&&In($e,x,S),Ne&6)Ht(S.component,O,W);else{if(Ne&128){S.suspense.unmount(O,W);return}J&&po(S,null,x,"beforeUnmount"),Ne&64?S.type.remove(S,x,O,Y,Oe,W):ve&&(_e!==yt||Ge>0&&Ge&64)?Tt(ve,x,O,!1,!0):(_e===yt&&Ge&384||!Y&&Ne&16)&&Tt(we,x,O),W&&la(S)}(ie&&($e=Se&&Se.onVnodeUnmounted)||J)&&en(()=>{$e&&In($e,x,S),J&&po(S,null,x,"unmounted")},O)},la=S=>{const{type:x,el:O,anchor:W,transition:Y}=S;if(x===yt){Bt(O,W);return}if(x===As){D(S);return}const _e=()=>{i(O),Y&&!Y.persisted&&Y.afterLeave&&Y.afterLeave()};if(S.shapeFlag&1&&Y&&!Y.persisted){const{leave:Se,delayLeave:ge}=Y,we=()=>Se(O,_e);ge?ge(S.el,_e,we):we()}else _e()},Bt=(S,x)=>{let O;for(;S!==x;)O=p(S),i(S),S=O;i(x)},Ht=(S,x,O)=>{const{bum:W,scope:Y,update:_e,subTree:Se,um:ge}=S;W&&Fl(W),Y.stop(),_e&&(_e.active=!1,at(Se,S,x,O)),ge&&en(ge,x),en(()=>{S.isUnmounted=!0},x),x&&x.pendingBranch&&!x.isUnmounted&&S.asyncDep&&!S.asyncResolved&&S.suspenseId===x.pendingId&&(x.deps--,x.deps===0&&x.resolve())},Tt=(S,x,O,W=!1,Y=!1,_e=0)=>{for(let Se=_e;SeS.shapeFlag&6?ce(S.component.subTree):S.shapeFlag&128?S.suspense.next():p(S.anchor||S.el);let xe=!1;const De=(S,x,O)=>{S==null?x._vnode&&at(x._vnode,null,null,!0):y(x._vnode||null,S,x,null,null,null,O),xe||(xe=!0,Rw(),U_(),xe=!1),x._vnode=S},Oe={p:y,um:at,m:Qe,r:la,mt:Te,mc:j,pc:Pe,pbc:H,n:ce,o:e};let rt,vt;return t&&([rt,vt]=t(Oe)),{render:De,hydrate:rt,createApp:EO(De,rt)}}function hh({type:e,props:t},a){return a==="svg"&&e==="foreignObject"||a==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:a}function _s({effect:e,update:t},a){e.allowRecurse=t.allowRecurse=a}function pS(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function ly(e,t,a=!1){const n=e.children,i=t.children;if(Ze(n)&&Ze(i))for(let o=0;o>1,e[a[l]]0&&(t[n]=a[o-1]),a[o]=n)}}for(o=a.length,r=a[o-1];o-- >0;)a[o]=r,r=t[r];return a}function fS(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:fS(t)}const OO=e=>e.__isTeleport,ed=e=>e&&(e.disabled||e.disabled===""),Zw=e=>typeof SVGElement<"u"&&e instanceof SVGElement,Gw=e=>typeof MathMLElement=="function"&&e instanceof MathMLElement,rg=(e,t)=>{const a=e&&e.to;return xa(a)?t?t(a):null:a},$O={name:"Teleport",__isTeleport:!0,process(e,t,a,n,i,o,r,l,d,u){const{mc:_,pc:f,pbc:p,o:{insert:h,querySelector:g,createText:y,createComment:k}}=u,b=ed(t.props);let{shapeFlag:z,children:w,dynamicChildren:D}=t;if(e==null){const E=t.el=y(""),T=t.anchor=y("");h(E,a,n),h(T,a,n);const N=t.target=rg(t.props,g),j=t.targetAnchor=y("");N&&(h(j,N),r==="svg"||Zw(N)?r="svg":(r==="mathml"||Gw(N))&&(r="mathml"));const q=(H,te)=>{z&16&&_(w,H,te,i,o,r,l,d)};b?q(a,T):N&&q(N,j)}else{t.el=e.el;const E=t.anchor=e.anchor,T=t.target=e.target,N=t.targetAnchor=e.targetAnchor,j=ed(e.props),q=j?a:T,H=j?E:N;if(r==="svg"||Zw(T)?r="svg":(r==="mathml"||Gw(T))&&(r="mathml"),D?(p(e.dynamicChildren,D,q,i,o,r,l),ly(e,t,!0)):d||f(e,t,q,H,i,o,r,l,!1),b)j?t.props&&e.props&&t.props.to!==e.props.to&&(t.props.to=e.props.to):l_(t,a,E,u,1);else if((t.props&&t.props.to)!==(e.props&&e.props.to)){const te=t.target=rg(t.props,g);te&&l_(t,te,null,u,0)}else j&&l_(t,T,N,u,1)}hS(t)},remove(e,t,a,n,{um:i,o:{remove:o}},r){const{shapeFlag:l,children:d,anchor:u,targetAnchor:_,target:f,props:p}=e;if(f&&o(_),r&&o(u),l&16){const h=r||!ed(p);for(let g=0;g0?Rn||Il:null,gS(),Rs>0&&Rn&&Rn.push(e),e}function ae(e,t,a,n,i,o){return vS(ee(e,t,a,n,i,o,!0))}function R(e,t,a,n,i){return vS(C(e,t,a,n,i,!0))}function Vr(e){return e?e.__v_isVNode===!0:!1}function Wi(e,t){return e.type===t.type&&e.key===t.key}function BO(e){}const Im="__vInternal",yS=({key:e})=>e??null,P_=({ref:e,ref_key:t,ref_for:a})=>(typeof e=="number"&&(e=""+e),e!=null?xa(e)||ea(e)||_t(e)?{i:Oa,r:e,k:t,f:!!a}:e:null);function ee(e,t=null,a=null,n=0,i=null,o=e===yt?0:1,r=!1,l=!1){const d={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&yS(t),ref:t&&P_(t),scopeId:Em,slotScopeIds:null,children:a,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetAnchor:null,staticCount:0,shapeFlag:o,patchFlag:n,dynamicProps:i,dynamicChildren:null,appContext:null,ctx:Oa};return l?(uy(d,a),o&128&&e.normalize(d)):a&&(d.shapeFlag|=xa(a)?8:16),Rs>0&&!r&&Rn&&(d.patchFlag>0||o&6)&&d.patchFlag!==32&&Rn.push(d),d}const C=UO;function UO(e,t=null,a=null,n=0,i=null,o=!1){if((!e||e===RD)&&(e=cn),Vr(e)){const l=Xi(e,t,!0);return a&&uy(l,a),Rs>0&&!o&&Rn&&(l.shapeFlag&6?Rn[Rn.indexOf(e)]=l:Rn.push(l)),l.patchFlag|=-2,l}if(ZO(e)&&(e=e.__vccOpts),t){t=dy(t);let{class:l,style:d}=t;l&&!xa(l)&&(t.class=Be(l)),ra(d)&&(Vv(d)&&!Ze(d)&&(d=wa({},d)),t.style=oo(d))}const r=xa(e)?1:$D(e)?128:OO(e)?64:ra(e)?4:_t(e)?2:0;return ee(e,t,a,n,i,r,o,!0)}function dy(e){return e?Vv(e)||Im in e?wa({},e):e:null}function Xi(e,t,a=!1){const{props:n,ref:i,patchFlag:o,children:r}=e,l=t?Dn(n||{},t):n;return{__v_isVNode:!0,__v_skip:!0,type:e.type,props:l,key:l&&yS(l),ref:t&&t.ref?a&&i?Ze(i)?i.concat(P_(t)):[i,P_(t)]:P_(t):i,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:r,target:e.target,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==yt?o===-1?16:o|16:o,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:e.transition,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&Xi(e.ssContent),ssFallback:e.ssFallback&&Xi(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce}}function $t(e=" ",t=0){return C(Ms,null,e,t)}function bS(e,t){const a=C(As,null,e);return a.staticCount=t,a}function Re(e="",t=!1){return t?(P(),R(cn,null,e)):C(cn,null,e)}function ti(e){return e==null||typeof e=="boolean"?C(cn):Ze(e)?C(yt,null,e.slice()):typeof e=="object"?Cr(e):C(Ms,null,String(e))}function Cr(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:Xi(e)}function uy(e,t){let a=0;const{shapeFlag:n}=e;if(t==null)t=null;else if(Ze(t))a=16;else if(typeof t=="object")if(n&65){const i=t.default;i&&(i._c&&(i._d=!1),uy(e,i()),i._c&&(i._d=!0));return}else{a=32;const i=t._;!i&&!(Im in t)?t._ctx=Oa:i===3&&Oa&&(Oa.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else _t(t)?(t={default:t,_ctx:Oa},a=32):(t=String(t),n&64?(a=16,t=[$t(t)]):a=8);e.children=t,e.shapeFlag|=a}function Dn(...e){const t={};for(let a=0;aUa||Oa;let H_,lg;{const e=oD(),t=(a,n)=>{let i;return(i=e[a])||(i=e[a]=[]),i.push(n),o=>{i.length>1?i.forEach(r=>r(o)):i[0](o)}};H_=t("__VUE_INSTANCE_SETTERS__",a=>Ua=a),lg=t("__VUE_SSR_SETTERS__",a=>$d=a)}const Os=e=>{const t=Ua;return H_(e),e.scope.on(),()=>{e.scope.off(),H_(t)}},cg=()=>{Ua&&Ua.scope.off(),H_(null)};function wS(e){return e.vnode.shapeFlag&4}let $d=!1;function xS(e,t=!1){t&&lg(t);const{props:a,children:n}=e.vnode,i=wS(e);AO(e,a,i,t),TO(e,n);const o=i?HO(e,t):void 0;return t&&lg(!1),o}function HO(e,t){const a=e.type;e.accessCache=Object.create(null),e.proxy=Fd(new Proxy(e.ctx,ag));const{setup:n}=a;if(n){const i=e.setupContext=n.length>1?SS(e):null,o=Os(e);Ws();const r=Ko(n,e,0,[e.props,i]);if(Ks(),o(),Iv(r)){if(r.then(cg,cg),t)return r.then(l=>{dg(e,l,t)}).catch(l=>{Ys(l,e,0)});e.asyncDep=r}else dg(e,r,t)}else DS(e,t)}function dg(e,t,a){_t(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:ra(t)&&(e.setupState=Kv(t)),DS(e,a)}let W_,ug;function WO(e){W_=e,ug=t=>{t.render._rc&&(t.withProxy=new Proxy(t.ctx,dO))}}const KO=()=>!W_;function DS(e,t,a){const n=e.type;if(!e.render){if(!t&&W_&&!n.render){const i=n.template||oy(e).template;if(i){const{isCustomElement:o,compilerOptions:r}=e.appContext.config,{delimiters:l,compilerOptions:d}=n,u=wa(wa({isCustomElement:o,delimiters:l},r),d);n.render=W_(i,u)}}e.render=n.render||Mn,ug&&ug(e)}{const i=Os(e);Ws();try{wO(e)}finally{Ks(),i()}}}function YO(e){return e.attrsProxy||(e.attrsProxy=new Proxy(e.attrs,{get(t,a){return Bn(e,"get","$attrs"),t[a]}}))}function SS(e){const t=a=>{e.exposed=a||{}};return{get attrs(){return YO(e)},slots:e.slots,emit:e.emit,expose:t}}function Nm(e){if(e.exposed)return e.exposeProxy||(e.exposeProxy=new Proxy(Kv(Fd(e.exposed)),{get(t,a){if(a in t)return t[a];if(a in Xc)return Xc[a](e)},has(t,a){return a in t||a in Xc}}))}function _g(e,t=!0){return _t(e)?e.displayName||e.name:e.name||t&&e.__name}function ZO(e){return _t(e)&&"__vccOpts"in e}const V=(e,t)=>ER(e,t,$d);function GO(e,t,a=ia){const n=Ri(),i=wn(t),o=ai(t),r=zD((d,u)=>{let _;return qD(()=>{const f=e[t];Ji(_,f)&&(_=f,u())}),{get(){return d(),a.get?a.get(_):_},set(f){const p=n.vnode.props;!(p&&(t in p||i in p||o in p)&&(`onUpdate:${t}`in p||`onUpdate:${i}`in p||`onUpdate:${o}`in p))&&Ji(f,_)&&(_=f,u()),n.emit(`update:${t}`,a.set?a.set(f):f)}}}),l=t==="modelValue"?"modelModifiers":`${t}Modifiers`;return r[Symbol.iterator]=()=>{let d=0;return{next(){return d<2?{value:d++?e[l]||{}:r,done:!1}:{done:!0}}}},r}function Pt(e,t,a){const n=arguments.length;return n===2?ra(t)&&!Ze(t)?Vr(t)?C(e,null,[t]):C(e,t):C(e,null,t):(n>3?a=Array.prototype.slice.call(arguments,2):n===3&&Vr(a)&&(a=[a]),C(e,t,a))}function QO(){}function JO(e,t,a,n){const i=a[n];if(i&&zS(i,e))return i;const o=t();return o.memo=e.slice(),a[n]=o}function zS(e,t){const a=e.memo;if(a.length!=t.length)return!1;for(let n=0;n0&&Rn&&Rn.push(e),!0}const PS="3.4.15",XO=Mn,e$=LR,t$=Dl,a$=TD,n$={createComponentInstance:kS,setupComponent:xS,renderComponentRoot:S_,setCurrentRenderingInstance:vd,isVNode:Vr,normalizeVNode:ti},i$=n$,o$=null,r$=null,s$=null;/** * @vue/runtime-dom v3.4.15 * (c) 2018-present Yuxi (Evan) You and Vue contributors * @license MIT -**/const d3="http://www.w3.org/2000/svg",u3="http://www.w3.org/1998/Math/MathML",Ts=typeof document<"u"?document:null,Q0=Ts&&Ts.createElement("template"),_3={insert:(e,t,a)=>{t.insertBefore(e,a||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,a,n)=>{const i=t==="svg"?Ts.createElementNS(d3,e):t==="mathml"?Ts.createElementNS(u3,e):Ts.createElement(e,a?{is:a}:void 0);return e==="select"&&n&&n.multiple!=null&&i.setAttribute("multiple",n.multiple),i},createText:e=>Ts.createTextNode(e),createComment:e=>Ts.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Ts.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,a,n,i,o){const s=a?a.previousSibling:t.lastChild;if(i&&(i===o||i.nextSibling))for(;t.insertBefore(i.cloneNode(!0),a),!(i===o||!(i=i.nextSibling)););else{Q0.innerHTML=n==="svg"?`${e}`:n==="mathml"?`${e}`:e;const l=Q0.content;if(n==="svg"||n==="mathml"){const d=l.firstChild;for(;d.firstChild;)l.appendChild(d.firstChild);l.removeChild(d)}t.insertBefore(l,a)}return[s?s.nextSibling:t.firstChild,a?a.previousSibling:t.lastChild]}},ks="transition",Mc="animation",Zl=Symbol("_vtc"),Zr=(e,{slots:t})=>Et(H1,AP(e),t);Zr.displayName="Transition";const zP={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},m3=Zr.props=wa({},ty,zP),mr=(e,t=[])=>{Ye(e)?e.forEach(a=>a(...t)):e&&e(...t)},J0=e=>e?Ye(e)?e.some(t=>t.length>1):e.length>1:!1;function AP(e){const t={};for(const J in e)J in zP||(t[J]=e[J]);if(e.css===!1)return t;const{name:a="v",type:n,duration:i,enterFromClass:o=`${a}-enter-from`,enterActiveClass:s=`${a}-enter-active`,enterToClass:l=`${a}-enter-to`,appearFromClass:d=o,appearActiveClass:u=s,appearToClass:_=l,leaveFromClass:f=`${a}-leave-from`,leaveActiveClass:p=`${a}-leave-active`,leaveToClass:h=`${a}-leave-to`}=e,g=p3(i),y=g&&g[0],k=g&&g[1],{onBeforeEnter:b,onEnter:P,onEnterCancelled:w,onLeave:x,onLeaveCancelled:E,onBeforeAppear:C=b,onAppear:j=P,onAppearCancelled:A=w}=t,U=(J,ie,Te)=>{Ss(J,ie?_:l),Ss(J,ie?u:s),Te&&Te()},V=(J,ie)=>{J._isLeaving=!1,Ss(J,f),Ss(J,h),Ss(J,p),ie&&ie()},ee=J=>(ie,Te)=>{const ze=J?j:P,ce=()=>U(ie,J,Te);mr(ze,[ie,ce]),X0(()=>{Ss(ie,J?d:o),Oo(ie,J?_:l),J0(ze)||eD(ie,n,y,ce)})};return wa(t,{onBeforeEnter(J){mr(b,[J]),Oo(J,o),Oo(J,s)},onBeforeAppear(J){mr(C,[J]),Oo(J,d),Oo(J,u)},onEnter:ee(!1),onAppear:ee(!0),onLeave(J,ie){J._isLeaving=!0;const Te=()=>V(J,ie);Oo(J,f),TP(),Oo(J,p),X0(()=>{J._isLeaving&&(Ss(J,f),Oo(J,h),J0(x)||eD(J,n,k,Te))}),mr(x,[J,Te])},onEnterCancelled(J){U(J,!1),mr(w,[J])},onAppearCancelled(J){U(J,!0),mr(A,[J])},onLeaveCancelled(J){V(J),mr(E,[J])}})}function p3(e){if(e==null)return null;if(sa(e))return[vh(e.enter),vh(e.leave)];{const t=vh(e);return[t,t]}}function vh(e){return $_(e)}function Oo(e,t){t.split(/\s+/).forEach(a=>a&&e.classList.add(a)),(e[Zl]||(e[Zl]=new Set)).add(t)}function Ss(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.remove(n));const a=e[Zl];a&&(a.delete(t),a.size||(e[Zl]=void 0))}function X0(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let f3=0;function eD(e,t,a,n){const i=e._endId=++f3,o=()=>{i===e._endId&&n()};if(a)return setTimeout(o,a);const{type:s,timeout:l,propCount:d}=CP(e,t);if(!s)return n();const u=s+"end";let _=0;const f=()=>{e.removeEventListener(u,p),o()},p=h=>{h.target===e&&++_>=d&&f()};setTimeout(()=>{_(a[g]||"").split(", "),i=n(`${ks}Delay`),o=n(`${ks}Duration`),s=tD(i,o),l=n(`${Mc}Delay`),d=n(`${Mc}Duration`),u=tD(l,d);let _=null,f=0,p=0;t===ks?s>0&&(_=ks,f=s,p=o.length):t===Mc?u>0&&(_=Mc,f=u,p=d.length):(f=Math.max(s,u),_=f>0?s>u?ks:Mc:null,p=_?_===ks?o.length:d.length:0);const h=_===ks&&/\b(transform|all)(,|$)/.test(n(`${ks}Property`).toString());return{type:_,timeout:f,propCount:p,hasTransform:h}}function tD(e,t){for(;e.lengthaD(a)+aD(e[n])))}function aD(e){return e==="auto"?0:Number(e.slice(0,-1).replace(",","."))*1e3}function TP(){return document.body.offsetHeight}function h3(e,t,a){const n=e[Zl];n&&(t=(t?[t,...n]:[...n]).join(" ")),t==null?e.removeAttribute("class"):a?e.setAttribute("class",t):e.className=t}const _y=Symbol("_vod"),Rm={beforeMount(e,{value:t},{transition:a}){e[_y]=e.style.display==="none"?"":e.style.display,a&&t?a.beforeEnter(e):$c(e,t)},mounted(e,{value:t},{transition:a}){a&&t&&a.enter(e)},updated(e,{value:t,oldValue:a},{transition:n}){!t!=!a&&(n?t?(n.beforeEnter(e),$c(e,!0),n.enter(e)):n.leave(e,()=>{$c(e,!1)}):$c(e,t))},beforeUnmount(e,{value:t}){$c(e,t)}};function $c(e,t){e.style.display=t?e[_y]:"none"}function g3(){Rm.getSSRProps=({value:e})=>{if(!e)return{style:{display:"none"}}}}const jP=Symbol("");function v3(e){const t=Oi();if(!t)return;const a=t.ut=(i=e(t.proxy))=>{Array.from(document.querySelectorAll(`[data-v-owner="${t.uid}"]`)).forEach(o=>fg(o,i))},n=()=>{const i=e(t.proxy);pg(t.subTree,i),a(i)};V1(n),Ct(()=>{const i=new MutationObserver(n);i.observe(t.subTree.el.parentNode,{childList:!0}),xa(()=>i.disconnect())})}function pg(e,t){if(e.shapeFlag&128){const a=e.suspense;e=a.activeBranch,a.pendingBranch&&!a.isHydrating&&a.effects.push(()=>{pg(a.activeBranch,t)})}for(;e.component;)e=e.component.subTree;if(e.shapeFlag&1&&e.el)fg(e.el,t);else if(e.type===yt)e.children.forEach(a=>pg(a,t));else if(e.type===Ar){let{el:a,anchor:n}=e;for(;a&&(fg(a,t),a!==n);)a=a.nextSibling}}function fg(e,t){if(e.nodeType===1){const a=e.style;let n="";for(const i in t)a.setProperty(`--${i}`,t[i]),n+=`--${i}: ${t[i]};`;a[jP]=n}}function y3(e,t,a){const n=e.style,i=n.display,o=Da(a);if(a&&!o){if(t&&!Da(t))for(const s in t)a[s]==null&&hg(n,s,"");for(const s in a)hg(n,s,a[s])}else if(o){if(t!==a){const s=n[jP];s&&(a+=";"+s),n.cssText=a}}else t&&e.removeAttribute("style");_y in e&&(n.display=i)}const nD=/\s*!important$/;function hg(e,t,a){if(Ye(a))a.forEach(n=>hg(e,t,n));else if(a==null&&(a=""),t.startsWith("--"))e.setProperty(t,a);else{const n=b3(e,t);nD.test(a)?e.setProperty(ai(n),a.replace(nD,""),"important"):e[n]=a}}const iD=["Webkit","Moz","ms"],yh={};function b3(e,t){const a=yh[t];if(a)return a;let n=wn(t);if(n!=="filter"&&n in e)return yh[t]=n;n=Id(n);for(let i=0;ibh||(P3.then(()=>bh=0),bh=Date.now());function z3(e,t){const a=n=>{if(!n._vts)n._vts=Date.now();else if(n._vts<=a.attached)return;li(A3(n,a.value),t,5,[n])};return a.value=e,a.attached=E3(),a}function A3(e,t){if(Ye(t)){const a=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{a.call(e),e._stopped=!0},t.map(n=>i=>!i._stopped&&n&&n(i))}else return t}const lD=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,C3=(e,t,a,n,i,o,s,l,d)=>{const u=i==="svg";t==="class"?h3(e,n,u):t==="style"?y3(e,a,n):Nd(t)?Tv(t)||x3(e,t,a,n,s):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):T3(e,t,n,u))?w3(e,t,n,o,s,l,d):(t==="true-value"?e._trueValue=n:t==="false-value"&&(e._falseValue=n),k3(e,t,n,u))};function T3(e,t,a,n){if(n)return!!(t==="innerHTML"||t==="textContent"||t in e&&lD(t)&&_t(a));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const i=e.tagName;if(i==="IMG"||i==="VIDEO"||i==="CANVAS"||i==="SOURCE")return!1}return lD(t)&&Da(a)?!1:t in e}/*! #__NO_SIDE_EFFECTS__ */function NP(e,t){const a=kt(e);class n extends Om{constructor(o){super(a,o,t)}}return n.def=a,n}/*! #__NO_SIDE_EFFECTS__ */const j3=e=>NP(e,WP),N3=typeof HTMLElement<"u"?HTMLElement:class{};class Om extends N3{constructor(t,a={},n){super(),this._def=t,this._props=a,this._instance=null,this._connected=!1,this._resolved=!1,this._numberProps=null,this._ob=null,this.shadowRoot&&n?n(this._createVNode(),this.shadowRoot):(this.attachShadow({mode:"open"}),this._def.__asyncLoader||this._resolveProps(this._def))}connectedCallback(){this._connected=!0,this._instance||(this._resolved?this._update():this._resolveDef())}disconnectedCallback(){this._connected=!1,this._ob&&(this._ob.disconnect(),this._ob=null),ha(()=>{this._connected||(gg(null,this.shadowRoot),this._instance=null)})}_resolveDef(){this._resolved=!0;for(let n=0;n{for(const i of n)this._setAttr(i.attributeName)}),this._ob.observe(this,{attributes:!0});const t=(n,i=!1)=>{const{props:o,styles:s}=n;let l;if(o&&!Ye(o))for(const d in o){const u=o[d];(u===Number||u&&u.type===Number)&&(d in this._props&&(this._props[d]=$_(this._props[d])),(l||(l=Object.create(null)))[wn(d)]=!0)}this._numberProps=l,i&&this._resolveProps(n),this._applyStyles(s),this._update()},a=this._def.__asyncLoader;a?a().then(n=>t(n,!0)):t(this._def)}_resolveProps(t){const{props:a}=t,n=Ye(a)?a:Object.keys(a||{});for(const i of Object.keys(this))i[0]!=="_"&&n.includes(i)&&this._setProp(i,this[i],!0,!1);for(const i of n.map(wn))Object.defineProperty(this,i,{get(){return this._getProp(i)},set(o){this._setProp(i,o)}})}_setAttr(t){let a=this.getAttribute(t);const n=wn(t);this._numberProps&&this._numberProps[n]&&(a=$_(a)),this._setProp(n,a,!1)}_getProp(t){return this._props[t]}_setProp(t,a,n=!0,i=!0){a!==this._props[t]&&(this._props[t]=a,i&&this._instance&&this._update(),n&&(a===!0?this.setAttribute(ai(t),""):typeof a=="string"||typeof a=="number"?this.setAttribute(ai(t),a+""):a||this.removeAttribute(ai(t))))}_update(){gg(this._createVNode(),this.shadowRoot)}_createVNode(){const t=G(this._def,wa({},this._props));return this._instance||(t.ce=a=>{this._instance=a,a.isCE=!0;const n=(o,s)=>{this.dispatchEvent(new CustomEvent(o,{detail:s}))};a.emit=(o,...s)=>{n(o,s),ai(o)!==o&&n(ai(o),s)};let i=this;for(;i=i&&(i.parentNode||i.host);)if(i instanceof Om){a.parent=i._instance,a.provides=i._instance.provides;break}}),t}_applyStyles(t){t&&t.forEach(a=>{const n=document.createElement("style");n.textContent=a,this.shadowRoot.appendChild(n)})}}function I3(e="$style"){{const t=Oi();if(!t)return ia;const a=t.type.__cssModules;if(!a)return ia;const n=a[e];return n||ia}}const IP=new WeakMap,FP=new WeakMap,K_=Symbol("_moveCb"),cD=Symbol("_enterCb"),RP={name:"TransitionGroup",props:wa({},m3,{tag:String,moveClass:String}),setup(e,{slots:t}){const a=Oi(),n=ey();let i,o;return Nm(()=>{if(!i.length)return;const s=e.moveClass||`${e.name||"v"}-move`;if(!L3(i[0].el,a.vnode.el,s))return;i.forEach(O3),i.forEach(M3);const l=i.filter($3);TP(),l.forEach(d=>{const u=d.el,_=u.style;Oo(u,s),_.transform=_.webkitTransform=_.transitionDuration="";const f=u[K_]=p=>{p&&p.target!==u||(!p||/transform$/.test(p.propertyName))&&(u.removeEventListener("transitionend",f),u[K_]=null,Ss(u,s))};u.addEventListener("transitionend",f)})}),()=>{const s=et(e),l=AP(s);let d=s.tag||yt;i=o,o=t.default?Tm(t.default()):[];for(let u=0;udelete e.mode;RP.props;const R3=RP;function O3(e){const t=e.el;t[K_]&&t[K_](),t[cD]&&t[cD]()}function M3(e){FP.set(e,e.el.getBoundingClientRect())}function $3(e){const t=IP.get(e),a=FP.get(e),n=t.left-a.left,i=t.top-a.top;if(n||i){const o=e.el.style;return o.transform=o.webkitTransform=`translate(${n}px,${i}px)`,o.transitionDuration="0s",e}}function L3(e,t,a){const n=e.cloneNode(),i=e[Zl];i&&i.forEach(l=>{l.split(/\s+/).forEach(d=>d&&n.classList.remove(d))}),a.split(/\s+/).forEach(l=>l&&n.classList.add(l)),n.style.display="none";const o=t.nodeType===1?t:t.parentNode;o.appendChild(n);const{hasTransform:s}=CP(n);return o.removeChild(n),s}const qs=e=>{const t=e.props["onUpdate:modelValue"]||!1;return Ye(t)?a=>Fl(t,a):t};function B3(e){e.target.composing=!0}function dD(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const Ai=Symbol("_assign"),Y_={created(e,{modifiers:{lazy:t,trim:a,number:n}},i){e[Ai]=qs(i);const o=n||i.props&&i.props.type==="number";Bo(e,t?"change":"input",s=>{if(s.target.composing)return;let l=e.value;a&&(l=l.trim()),o&&(l=md(l)),e[Ai](l)}),a&&Bo(e,"change",()=>{e.value=e.value.trim()}),t||(Bo(e,"compositionstart",B3),Bo(e,"compositionend",dD),Bo(e,"change",dD))},mounted(e,{value:t}){e.value=t??""},beforeUpdate(e,{value:t,modifiers:{lazy:a,trim:n,number:i}},o){if(e[Ai]=qs(o),e.composing)return;const s=i||e.type==="number"?md(e.value):e.value,l=t??"";s!==l&&(document.activeElement===e&&e.type!=="range"&&(a||n&&e.value.trim()===l)||(e.value=l))}},Mm={deep:!0,created(e,t,a){e[Ai]=qs(a),Bo(e,"change",()=>{const n=e._modelValue,i=Gl(e),o=e.checked,s=e[Ai];if(Ye(n)){const l=wm(n,i),d=l!==-1;if(o&&!d)s(n.concat(i));else if(!o&&d){const u=[...n];u.splice(l,1),s(u)}}else if(Wr(n)){const l=new Set(n);o?l.add(i):l.delete(i),s(l)}else s(MP(e,o))})},mounted:uD,beforeUpdate(e,t,a){e[Ai]=qs(a),uD(e,t,a)}};function uD(e,{value:t,oldValue:a},n){e._modelValue=t,Ye(t)?e.checked=wm(t,n.props.value)>-1:Wr(t)?e.checked=t.has(n.props.value):t!==a&&(e.checked=Go(t,MP(e,!0)))}const my={created(e,{value:t},a){e.checked=Go(t,a.props.value),e[Ai]=qs(a),Bo(e,"change",()=>{e[Ai](Gl(e))})},beforeUpdate(e,{value:t,oldValue:a},n){e[Ai]=qs(n),t!==a&&(e.checked=Go(t,n.props.value))}},OP={deep:!0,created(e,{value:t,modifiers:{number:a}},n){const i=Wr(t);Bo(e,"change",()=>{const o=Array.prototype.filter.call(e.options,s=>s.selected).map(s=>a?md(Gl(s)):Gl(s));e[Ai](e.multiple?i?new Set(o):o:o[0]),e._assigning=!0,ha(()=>{e._assigning=!1})}),e[Ai]=qs(n)},mounted(e,{value:t,oldValue:a,modifiers:{number:n}}){_D(e,t,a,n)},beforeUpdate(e,t,a){e[Ai]=qs(a)},updated(e,{value:t,oldValue:a,modifiers:{number:n}}){e._assigning||_D(e,t,a,n)}};function _D(e,t,a,n){const i=e.multiple,o=Ye(t);if(!(i&&!o&&!Wr(t))&&!(o&&Go(t,a))){for(let s=0,l=e.options.length;s-1}else d.selected=t.has(u);else if(Go(Gl(d),t)){e.selectedIndex!==s&&(e.selectedIndex=s);return}}!i&&e.selectedIndex!==-1&&(e.selectedIndex=-1)}}function Gl(e){return"_value"in e?e._value:e.value}function MP(e,t){const a=t?"_trueValue":"_falseValue";return a in e?e[a]:t}const $P={created(e,t,a){c_(e,t,a,null,"created")},mounted(e,t,a){c_(e,t,a,null,"mounted")},beforeUpdate(e,t,a,n){c_(e,t,a,n,"beforeUpdate")},updated(e,t,a,n){c_(e,t,a,n,"updated")}};function LP(e,t){switch(e){case"SELECT":return OP;case"TEXTAREA":return Y_;default:switch(t){case"checkbox":return Mm;case"radio":return my;default:return Y_}}}function c_(e,t,a,n,i){const s=LP(e.tagName,a.props&&a.props.type)[i];s&&s(e,t,a,n)}function U3(){Y_.getSSRProps=({value:e})=>({value:e}),my.getSSRProps=({value:e},t)=>{if(t.props&&Go(t.props.value,e))return{checked:!0}},Mm.getSSRProps=({value:e},t)=>{if(Ye(e)){if(t.props&&wm(e,t.props.value)>-1)return{checked:!0}}else if(Wr(e)){if(t.props&&e.has(t.props.value))return{checked:!0}}else if(e)return{checked:!0}},$P.getSSRProps=(e,t)=>{if(typeof t.type!="string")return;const a=LP(t.type.toUpperCase(),t.props&&t.props.type);if(a.getSSRProps)return a.getSSRProps(e,t)}}const V3=["ctrl","shift","alt","meta"],q3={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)=>V3.some(a=>e[`${a}Key`]&&!t.includes(a))},Pi=(e,t)=>{const a=e._withMods||(e._withMods={}),n=t.join(".");return a[n]||(a[n]=(i,...o)=>{for(let s=0;s{const a=e._withKeys||(e._withKeys={}),n=t.join(".");return a[n]||(a[n]=i=>{if(!("key"in i))return;const o=ai(i.key);if(t.some(s=>s===o||W3[s]===o))return e(i)})},UP=wa({patchProp:C3},_3);let ad,mD=!1;function VP(){return ad||(ad=uP(UP))}function qP(){return ad=mD?ad:_P(UP),mD=!0,ad}const gg=(...e)=>{VP().render(...e)},WP=(...e)=>{qP().hydrate(...e)},py=(...e)=>{const t=VP().createApp(...e),{mount:a}=t;return t.mount=n=>{const i=KP(n);if(!i)return;const o=t._component;!_t(o)&&!o.render&&!o.template&&(o.template=i.innerHTML),i.innerHTML="";const s=a(i,!1,HP(i));return i instanceof Element&&(i.removeAttribute("v-cloak"),i.setAttribute("data-v-app","")),s},t},H3=(...e)=>{const t=qP().createApp(...e),{mount:a}=t;return t.mount=n=>{const i=KP(n);if(i)return a(i,!0,HP(i))},t};function HP(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function KP(e){return Da(e)?document.querySelector(e):e}let pD=!1;const K3=()=>{pD||(pD=!0,U3(),g3())};/** +**/const l$="http://www.w3.org/2000/svg",c$="http://www.w3.org/1998/Math/MathML",jr=typeof document<"u"?document:null,Qw=jr&&jr.createElement("template"),d$={insert:(e,t,a)=>{t.insertBefore(e,a||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,a,n)=>{const i=t==="svg"?jr.createElementNS(l$,e):t==="mathml"?jr.createElementNS(c$,e):jr.createElement(e,a?{is:a}:void 0);return e==="select"&&n&&n.multiple!=null&&i.setAttribute("multiple",n.multiple),i},createText:e=>jr.createTextNode(e),createComment:e=>jr.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>jr.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,a,n,i,o){const r=a?a.previousSibling:t.lastChild;if(i&&(i===o||i.nextSibling))for(;t.insertBefore(i.cloneNode(!0),a),!(i===o||!(i=i.nextSibling)););else{Qw.innerHTML=n==="svg"?`${e}`:n==="mathml"?`${e}`:e;const l=Qw.content;if(n==="svg"||n==="mathml"){const d=l.firstChild;for(;d.firstChild;)l.appendChild(d.firstChild);l.removeChild(d)}t.insertBefore(l,a)}return[r?r.nextSibling:t.firstChild,a?a.previousSibling:t.lastChild]}},kr="transition",Oc="animation",Zl=Symbol("_vtc"),Zs=(e,{slots:t})=>Pt(WD,AS(e),t);Zs.displayName="Transition";const ES={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},u$=Zs.props=wa({},ty,ES),ms=(e,t=[])=>{Ze(e)?e.forEach(a=>a(...t)):e&&e(...t)},Jw=e=>e?Ze(e)?e.some(t=>t.length>1):e.length>1:!1;function AS(e){const t={};for(const X in e)X in ES||(t[X]=e[X]);if(e.css===!1)return t;const{name:a="v",type:n,duration:i,enterFromClass:o=`${a}-enter-from`,enterActiveClass:r=`${a}-enter-active`,enterToClass:l=`${a}-enter-to`,appearFromClass:d=o,appearActiveClass:u=r,appearToClass:_=l,leaveFromClass:f=`${a}-leave-from`,leaveActiveClass:p=`${a}-leave-active`,leaveToClass:h=`${a}-leave-to`}=e,g=_$(i),y=g&&g[0],k=g&&g[1],{onBeforeEnter:b,onEnter:z,onEnterCancelled:w,onLeave:D,onLeaveCancelled:E,onBeforeAppear:T=b,onAppear:N=z,onAppearCancelled:j=w}=t,q=(X,oe,Te)=>{Sr(X,oe?_:l),Sr(X,oe?u:r),Te&&Te()},H=(X,oe)=>{X._isLeaving=!1,Sr(X,f),Sr(X,h),Sr(X,p),oe&&oe()},te=X=>(oe,Te)=>{const Ae=X?N:z,de=()=>q(oe,X,Te);ms(Ae,[oe,de]),Xw(()=>{Sr(oe,X?d:o),Ro(oe,X?_:l),Jw(Ae)||e1(oe,n,y,de)})};return wa(t,{onBeforeEnter(X){ms(b,[X]),Ro(X,o),Ro(X,r)},onBeforeAppear(X){ms(T,[X]),Ro(X,d),Ro(X,u)},onEnter:te(!1),onAppear:te(!0),onLeave(X,oe){X._isLeaving=!0;const Te=()=>H(X,oe);Ro(X,f),jS(),Ro(X,p),Xw(()=>{X._isLeaving&&(Sr(X,f),Ro(X,h),Jw(D)||e1(X,n,k,Te))}),ms(D,[X,Te])},onEnterCancelled(X){q(X,!1),ms(w,[X])},onAppearCancelled(X){q(X,!0),ms(j,[X])},onLeaveCancelled(X){H(X),ms(E,[X])}})}function _$(e){if(e==null)return null;if(ra(e))return[gh(e.enter),gh(e.leave)];{const t=gh(e);return[t,t]}}function gh(e){return $_(e)}function Ro(e,t){t.split(/\s+/).forEach(a=>a&&e.classList.add(a)),(e[Zl]||(e[Zl]=new Set)).add(t)}function Sr(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.remove(n));const a=e[Zl];a&&(a.delete(t),a.size||(e[Zl]=void 0))}function Xw(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let m$=0;function e1(e,t,a,n){const i=e._endId=++m$,o=()=>{i===e._endId&&n()};if(a)return setTimeout(o,a);const{type:r,timeout:l,propCount:d}=CS(e,t);if(!r)return n();const u=r+"end";let _=0;const f=()=>{e.removeEventListener(u,p),o()},p=h=>{h.target===e&&++_>=d&&f()};setTimeout(()=>{_(a[g]||"").split(", "),i=n(`${kr}Delay`),o=n(`${kr}Duration`),r=t1(i,o),l=n(`${Oc}Delay`),d=n(`${Oc}Duration`),u=t1(l,d);let _=null,f=0,p=0;t===kr?r>0&&(_=kr,f=r,p=o.length):t===Oc?u>0&&(_=Oc,f=u,p=d.length):(f=Math.max(r,u),_=f>0?r>u?kr:Oc:null,p=_?_===kr?o.length:d.length:0);const h=_===kr&&/\b(transform|all)(,|$)/.test(n(`${kr}Property`).toString());return{type:_,timeout:f,propCount:p,hasTransform:h}}function t1(e,t){for(;e.lengtha1(a)+a1(e[n])))}function a1(e){return e==="auto"?0:Number(e.slice(0,-1).replace(",","."))*1e3}function jS(){return document.body.offsetHeight}function p$(e,t,a){const n=e[Zl];n&&(t=(t?[t,...n]:[...n]).join(" ")),t==null?e.removeAttribute("class"):a?e.setAttribute("class",t):e.className=t}const _y=Symbol("_vod"),Fm={beforeMount(e,{value:t},{transition:a}){e[_y]=e.style.display==="none"?"":e.style.display,a&&t?a.beforeEnter(e):$c(e,t)},mounted(e,{value:t},{transition:a}){a&&t&&a.enter(e)},updated(e,{value:t,oldValue:a},{transition:n}){!t!=!a&&(n?t?(n.beforeEnter(e),$c(e,!0),n.enter(e)):n.leave(e,()=>{$c(e,!1)}):$c(e,t))},beforeUnmount(e,{value:t}){$c(e,t)}};function $c(e,t){e.style.display=t?e[_y]:"none"}function f$(){Fm.getSSRProps=({value:e})=>{if(!e)return{style:{display:"none"}}}}const TS=Symbol("");function h$(e){const t=Ri();if(!t)return;const a=t.ut=(i=e(t.proxy))=>{Array.from(document.querySelectorAll(`[data-v-owner="${t.uid}"]`)).forEach(o=>pg(o,i))},n=()=>{const i=e(t.proxy);mg(t.subTree,i),a(i)};VD(n),Ct(()=>{const i=new MutationObserver(n);i.observe(t.subTree.el.parentNode,{childList:!0}),Da(()=>i.disconnect())})}function mg(e,t){if(e.shapeFlag&128){const a=e.suspense;e=a.activeBranch,a.pendingBranch&&!a.isHydrating&&a.effects.push(()=>{mg(a.activeBranch,t)})}for(;e.component;)e=e.component.subTree;if(e.shapeFlag&1&&e.el)pg(e.el,t);else if(e.type===yt)e.children.forEach(a=>mg(a,t));else if(e.type===As){let{el:a,anchor:n}=e;for(;a&&(pg(a,t),a!==n);)a=a.nextSibling}}function pg(e,t){if(e.nodeType===1){const a=e.style;let n="";for(const i in t)a.setProperty(`--${i}`,t[i]),n+=`--${i}: ${t[i]};`;a[TS]=n}}function g$(e,t,a){const n=e.style,i=n.display,o=xa(a);if(a&&!o){if(t&&!xa(t))for(const r in t)a[r]==null&&fg(n,r,"");for(const r in a)fg(n,r,a[r])}else if(o){if(t!==a){const r=n[TS];r&&(a+=";"+r),n.cssText=a}}else t&&e.removeAttribute("style");_y in e&&(n.display=i)}const n1=/\s*!important$/;function fg(e,t,a){if(Ze(a))a.forEach(n=>fg(e,t,n));else if(a==null&&(a=""),t.startsWith("--"))e.setProperty(t,a);else{const n=v$(e,t);n1.test(a)?e.setProperty(ai(n),a.replace(n1,""),"important"):e[n]=a}}const i1=["Webkit","Moz","ms"],vh={};function v$(e,t){const a=vh[t];if(a)return a;let n=wn(t);if(n!=="filter"&&n in e)return vh[t]=n;n=Nd(n);for(let i=0;iyh||(D$.then(()=>yh=0),yh=Date.now());function z$(e,t){const a=n=>{if(!n._vts)n._vts=Date.now();else if(n._vts<=a.attached)return;li(P$(n,a.value),t,5,[n])};return a.value=e,a.attached=S$(),a}function P$(e,t){if(Ze(t)){const a=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{a.call(e),e._stopped=!0},t.map(n=>i=>!i._stopped&&n&&n(i))}else return t}const l1=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,E$=(e,t,a,n,i,o,r,l,d)=>{const u=i==="svg";t==="class"?p$(e,n,u):t==="style"?g$(e,a,n):Id(t)?jv(t)||w$(e,t,a,n,r):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):A$(e,t,n,u))?b$(e,t,n,o,r,l,d):(t==="true-value"?e._trueValue=n:t==="false-value"&&(e._falseValue=n),y$(e,t,n,u))};function A$(e,t,a,n){if(n)return!!(t==="innerHTML"||t==="textContent"||t in e&&l1(t)&&_t(a));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const i=e.tagName;if(i==="IMG"||i==="VIDEO"||i==="CANVAS"||i==="SOURCE")return!1}return l1(t)&&xa(a)?!1:t in e}/*! #__NO_SIDE_EFFECTS__ */function IS(e,t){const a=kt(e);class n extends Mm{constructor(o){super(a,o,t)}}return n.def=a,n}/*! #__NO_SIDE_EFFECTS__ */const C$=e=>IS(e,HS),j$=typeof HTMLElement<"u"?HTMLElement:class{};class Mm extends j${constructor(t,a={},n){super(),this._def=t,this._props=a,this._instance=null,this._connected=!1,this._resolved=!1,this._numberProps=null,this._ob=null,this.shadowRoot&&n?n(this._createVNode(),this.shadowRoot):(this.attachShadow({mode:"open"}),this._def.__asyncLoader||this._resolveProps(this._def))}connectedCallback(){this._connected=!0,this._instance||(this._resolved?this._update():this._resolveDef())}disconnectedCallback(){this._connected=!1,this._ob&&(this._ob.disconnect(),this._ob=null),ha(()=>{this._connected||(hg(null,this.shadowRoot),this._instance=null)})}_resolveDef(){this._resolved=!0;for(let n=0;n{for(const i of n)this._setAttr(i.attributeName)}),this._ob.observe(this,{attributes:!0});const t=(n,i=!1)=>{const{props:o,styles:r}=n;let l;if(o&&!Ze(o))for(const d in o){const u=o[d];(u===Number||u&&u.type===Number)&&(d in this._props&&(this._props[d]=$_(this._props[d])),(l||(l=Object.create(null)))[wn(d)]=!0)}this._numberProps=l,i&&this._resolveProps(n),this._applyStyles(r),this._update()},a=this._def.__asyncLoader;a?a().then(n=>t(n,!0)):t(this._def)}_resolveProps(t){const{props:a}=t,n=Ze(a)?a:Object.keys(a||{});for(const i of Object.keys(this))i[0]!=="_"&&n.includes(i)&&this._setProp(i,this[i],!0,!1);for(const i of n.map(wn))Object.defineProperty(this,i,{get(){return this._getProp(i)},set(o){this._setProp(i,o)}})}_setAttr(t){let a=this.getAttribute(t);const n=wn(t);this._numberProps&&this._numberProps[n]&&(a=$_(a)),this._setProp(n,a,!1)}_getProp(t){return this._props[t]}_setProp(t,a,n=!0,i=!0){a!==this._props[t]&&(this._props[t]=a,i&&this._instance&&this._update(),n&&(a===!0?this.setAttribute(ai(t),""):typeof a=="string"||typeof a=="number"?this.setAttribute(ai(t),a+""):a||this.removeAttribute(ai(t))))}_update(){hg(this._createVNode(),this.shadowRoot)}_createVNode(){const t=C(this._def,wa({},this._props));return this._instance||(t.ce=a=>{this._instance=a,a.isCE=!0;const n=(o,r)=>{this.dispatchEvent(new CustomEvent(o,{detail:r}))};a.emit=(o,...r)=>{n(o,r),ai(o)!==o&&n(ai(o),r)};let i=this;for(;i=i&&(i.parentNode||i.host);)if(i instanceof Mm){a.parent=i._instance,a.provides=i._instance.provides;break}}),t}_applyStyles(t){t&&t.forEach(a=>{const n=document.createElement("style");n.textContent=a,this.shadowRoot.appendChild(n)})}}function T$(e="$style"){{const t=Ri();if(!t)return ia;const a=t.type.__cssModules;if(!a)return ia;const n=a[e];return n||ia}}const NS=new WeakMap,FS=new WeakMap,K_=Symbol("_moveCb"),c1=Symbol("_enterCb"),MS={name:"TransitionGroup",props:wa({},u$,{tag:String,moveClass:String}),setup(e,{slots:t}){const a=Ri(),n=ey();let i,o;return Tm(()=>{if(!i.length)return;const r=e.moveClass||`${e.name||"v"}-move`;if(!O$(i[0].el,a.vnode.el,r))return;i.forEach(F$),i.forEach(M$);const l=i.filter(R$);jS(),l.forEach(d=>{const u=d.el,_=u.style;Ro(u,r),_.transform=_.webkitTransform=_.transitionDuration="";const f=u[K_]=p=>{p&&p.target!==u||(!p||/transform$/.test(p.propertyName))&&(u.removeEventListener("transitionend",f),u[K_]=null,Sr(u,r))};u.addEventListener("transitionend",f)})}),()=>{const r=et(e),l=AS(r);let d=r.tag||yt;i=o,o=t.default?Cm(t.default()):[];for(let u=0;udelete e.mode;MS.props;const N$=MS;function F$(e){const t=e.el;t[K_]&&t[K_](),t[c1]&&t[c1]()}function M$(e){FS.set(e,e.el.getBoundingClientRect())}function R$(e){const t=NS.get(e),a=FS.get(e),n=t.left-a.left,i=t.top-a.top;if(n||i){const o=e.el.style;return o.transform=o.webkitTransform=`translate(${n}px,${i}px)`,o.transitionDuration="0s",e}}function O$(e,t,a){const n=e.cloneNode(),i=e[Zl];i&&i.forEach(l=>{l.split(/\s+/).forEach(d=>d&&n.classList.remove(d))}),a.split(/\s+/).forEach(l=>l&&n.classList.add(l)),n.style.display="none";const o=t.nodeType===1?t:t.parentNode;o.appendChild(n);const{hasTransform:r}=CS(n);return o.removeChild(n),r}const qr=e=>{const t=e.props["onUpdate:modelValue"]||!1;return Ze(t)?a=>Fl(t,a):t};function $$(e){e.target.composing=!0}function d1(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const Ai=Symbol("_assign"),Y_={created(e,{modifiers:{lazy:t,trim:a,number:n}},i){e[Ai]=qr(i);const o=n||i.props&&i.props.type==="number";Bo(e,t?"change":"input",r=>{if(r.target.composing)return;let l=e.value;a&&(l=l.trim()),o&&(l=md(l)),e[Ai](l)}),a&&Bo(e,"change",()=>{e.value=e.value.trim()}),t||(Bo(e,"compositionstart",$$),Bo(e,"compositionend",d1),Bo(e,"change",d1))},mounted(e,{value:t}){e.value=t??""},beforeUpdate(e,{value:t,modifiers:{lazy:a,trim:n,number:i}},o){if(e[Ai]=qr(o),e.composing)return;const r=i||e.type==="number"?md(e.value):e.value,l=t??"";r!==l&&(document.activeElement===e&&e.type!=="range"&&(a||n&&e.value.trim()===l)||(e.value=l))}},Rm={deep:!0,created(e,t,a){e[Ai]=qr(a),Bo(e,"change",()=>{const n=e._modelValue,i=Gl(e),o=e.checked,r=e[Ai];if(Ze(n)){const l=km(n,i),d=l!==-1;if(o&&!d)r(n.concat(i));else if(!o&&d){const u=[...n];u.splice(l,1),r(u)}}else if(Hs(n)){const l=new Set(n);o?l.add(i):l.delete(i),r(l)}else r(OS(e,o))})},mounted:u1,beforeUpdate(e,t,a){e[Ai]=qr(a),u1(e,t,a)}};function u1(e,{value:t,oldValue:a},n){e._modelValue=t,Ze(t)?e.checked=km(t,n.props.value)>-1:Hs(t)?e.checked=t.has(n.props.value):t!==a&&(e.checked=Go(t,OS(e,!0)))}const my={created(e,{value:t},a){e.checked=Go(t,a.props.value),e[Ai]=qr(a),Bo(e,"change",()=>{e[Ai](Gl(e))})},beforeUpdate(e,{value:t,oldValue:a},n){e[Ai]=qr(n),t!==a&&(e.checked=Go(t,n.props.value))}},RS={deep:!0,created(e,{value:t,modifiers:{number:a}},n){const i=Hs(t);Bo(e,"change",()=>{const o=Array.prototype.filter.call(e.options,r=>r.selected).map(r=>a?md(Gl(r)):Gl(r));e[Ai](e.multiple?i?new Set(o):o:o[0]),e._assigning=!0,ha(()=>{e._assigning=!1})}),e[Ai]=qr(n)},mounted(e,{value:t,oldValue:a,modifiers:{number:n}}){_1(e,t,a,n)},beforeUpdate(e,t,a){e[Ai]=qr(a)},updated(e,{value:t,oldValue:a,modifiers:{number:n}}){e._assigning||_1(e,t,a,n)}};function _1(e,t,a,n){const i=e.multiple,o=Ze(t);if(!(i&&!o&&!Hs(t))&&!(o&&Go(t,a))){for(let r=0,l=e.options.length;r-1}else d.selected=t.has(u);else if(Go(Gl(d),t)){e.selectedIndex!==r&&(e.selectedIndex=r);return}}!i&&e.selectedIndex!==-1&&(e.selectedIndex=-1)}}function Gl(e){return"_value"in e?e._value:e.value}function OS(e,t){const a=t?"_trueValue":"_falseValue";return a in e?e[a]:t}const $S={created(e,t,a){c_(e,t,a,null,"created")},mounted(e,t,a){c_(e,t,a,null,"mounted")},beforeUpdate(e,t,a,n){c_(e,t,a,n,"beforeUpdate")},updated(e,t,a,n){c_(e,t,a,n,"updated")}};function LS(e,t){switch(e){case"SELECT":return RS;case"TEXTAREA":return Y_;default:switch(t){case"checkbox":return Rm;case"radio":return my;default:return Y_}}}function c_(e,t,a,n,i){const r=LS(e.tagName,a.props&&a.props.type)[i];r&&r(e,t,a,n)}function L$(){Y_.getSSRProps=({value:e})=>({value:e}),my.getSSRProps=({value:e},t)=>{if(t.props&&Go(t.props.value,e))return{checked:!0}},Rm.getSSRProps=({value:e},t)=>{if(Ze(e)){if(t.props&&km(e,t.props.value)>-1)return{checked:!0}}else if(Hs(e)){if(t.props&&e.has(t.props.value))return{checked:!0}}else if(e)return{checked:!0}},$S.getSSRProps=(e,t)=>{if(typeof t.type!="string")return;const a=LS(t.type.toUpperCase(),t.props&&t.props.type);if(a.getSSRProps)return a.getSSRProps(e,t)}}const B$=["ctrl","shift","alt","meta"],U$={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)=>B$.some(a=>e[`${a}Key`]&&!t.includes(a))},zi=(e,t)=>{const a=e._withMods||(e._withMods={}),n=t.join(".");return a[n]||(a[n]=(i,...o)=>{for(let r=0;r{const a=e._withKeys||(e._withKeys={}),n=t.join(".");return a[n]||(a[n]=i=>{if(!("key"in i))return;const o=ai(i.key);if(t.some(r=>r===o||V$[r]===o))return e(i)})},US=wa({patchProp:E$},d$);let ad,m1=!1;function VS(){return ad||(ad=uS(US))}function qS(){return ad=m1?ad:_S(US),m1=!0,ad}const hg=(...e)=>{VS().render(...e)},HS=(...e)=>{qS().hydrate(...e)},py=(...e)=>{const t=VS().createApp(...e),{mount:a}=t;return t.mount=n=>{const i=KS(n);if(!i)return;const o=t._component;!_t(o)&&!o.render&&!o.template&&(o.template=i.innerHTML),i.innerHTML="";const r=a(i,!1,WS(i));return i instanceof Element&&(i.removeAttribute("v-cloak"),i.setAttribute("data-v-app","")),r},t},q$=(...e)=>{const t=qS().createApp(...e),{mount:a}=t;return t.mount=n=>{const i=KS(n);if(i)return a(i,!0,WS(i))},t};function WS(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function KS(e){return xa(e)?document.querySelector(e):e}let p1=!1;const H$=()=>{p1||(p1=!0,L$(),f$())};/** * vue v3.4.15 * (c) 2018-present Yuxi (Evan) You and Vue contributors * @license MIT -**/const Y3=()=>{},YP=Object.freeze(Object.defineProperty({__proto__:null,BaseTransition:H1,BaseTransitionPropsValidators:ty,Comment:cn,DeprecationTypes:c3,EffectScope:Fv,ErrorCodes:B$,ErrorTypeStrings:a3,Fragment:yt,KeepAlive:cL,ReactiveEffect:Kl,Static:Ar,Suspense:eL,Teleport:cy,Text:Rr,TrackOpTypes:M$,Transition:Zr,TransitionGroup:R3,TriggerOpTypes:$$,VueElement:Om,assertNumber:L$,callWithAsyncErrorHandling:li,callWithErrorHandling:Ko,camelize:wn,capitalize:Id,cloneVNode:Xi,compatUtils:l3,compile:Y3,computed:B,createApp:py,createBlock:Xe,createCommentVNode:Re,createElementBlock:te,createElementVNode:X,createHydrationRenderer:_P,createPropsRestProxy:wL,createRenderer:uP,createSSRApp:H3,createSlots:eP,createStaticVNode:bP,createTextVNode:$t,createVNode:G,customRef:P1,defineAsyncComponent:P_,defineComponent:kt,defineCustomElement:NP,defineEmits:pL,defineExpose:fL,defineModel:vL,defineOptions:hL,defineProps:mL,defineSSRCustomElement:j3,defineSlots:gL,devtools:n3,effect:l$,effectScope:Rv,getCurrentInstance:Oi,getCurrentScope:Dm,getTransitionRawChildren:Tm,guardReactiveProps:dy,h:Et,handleError:Yr,hasInjectionContext:sy,hydrate:WP,initCustomFormatter:XL,initDirectivesForSSR:K3,inject:bt,isMemoSame:PP,isProxy:Vv,isReactive:Gi,isReadonly:Us,isRef:ea,isRuntimeOnly:ZL,isShallow:pd,isVNode:Vs,markRaw:Fd,mergeDefaults:bL,mergeModels:kL,mergeProps:xn,nextTick:ha,normalizeClass:Le,normalizeProps:s1,normalizeStyle:oo,onActivated:ay,onBeforeMount:iy,onBeforeUnmount:Md,onBeforeUpdate:Z1,onDeactivated:ny,onErrorCaptured:X1,onMounted:Ct,onRenderTracked:J1,onRenderTriggered:Q1,onScopeDispose:Ov,onServerPrefetch:G1,onUnmounted:xa,onUpdated:Nm,openBlock:$,popScopeId:F1,provide:ma,proxyRefs:Kv,pushScopeId:I1,queuePostFlushCb:B_,reactive:ui,readonly:Uv,ref:re,registerRuntimeCompiler:YL,render:gg,renderList:Un,renderSlot:it,resolveComponent:Be,resolveDirective:Cm,resolveDynamicComponent:M1,resolveFilter:r3,resolveTransitionHooks:Yl,setBlockTracking:lg,setDevtoolsHook:i3,setTransitionHooks:Fr,shallowReactive:Bv,shallowReadonly:A$,shallowRef:Hv,ssrContextKey:B1,ssrUtils:s3,stop:c$,toDisplayString:je,toHandlerKey:Jc,toHandlers:uL,toRaw:et,toRef:E1,toRefs:Yv,toValue:N$,transformVNodeArgs:VL,triggerRef:j$,unref:O,useAttrs:aP,useCssModule:I3,useCssVars:v3,useModel:JL,useSSRContext:U1,useSlots:Ys,useTransitionState:ey,vModelCheckbox:Mm,vModelDynamic:$P,vModelRadio:my,vModelSelect:OP,vModelText:Y_,vShow:Rm,version:EP,warn:t3,watch:Yt,watchEffect:Ca,watchPostEffect:V1,watchSyncEffect:q1,withAsyncContext:DL,withCtx:_e,withDefaults:yL,withDirectives:Ir,withKeys:BP,withMemo:e3,withModifiers:Pi,withScopeId:R1},Symbol.toStringTag,{value:"Module"}));/*! +**/const W$=()=>{},YS=Object.freeze(Object.defineProperty({__proto__:null,BaseTransition:WD,BaseTransitionPropsValidators:ty,Comment:cn,DeprecationTypes:s$,EffectScope:Fv,ErrorCodes:$R,ErrorTypeStrings:e$,Fragment:yt,KeepAlive:sO,ReactiveEffect:Kl,Static:As,Suspense:JR,Teleport:cy,Text:Ms,TrackOpTypes:MR,Transition:Zs,TransitionGroup:N$,TriggerOpTypes:RR,VueElement:Mm,assertNumber:OR,callWithAsyncErrorHandling:li,callWithErrorHandling:Ko,camelize:wn,capitalize:Nd,cloneVNode:Xi,compatUtils:r$,compile:W$,computed:V,createApp:py,createBlock:R,createCommentVNode:Re,createElementBlock:ae,createElementVNode:ee,createHydrationRenderer:_S,createPropsRestProxy:bO,createRenderer:uS,createSSRApp:q$,createSlots:eS,createStaticVNode:bS,createTextVNode:$t,createVNode:C,customRef:zD,defineAsyncComponent:z_,defineComponent:kt,defineCustomElement:IS,defineEmits:_O,defineExpose:mO,defineModel:hO,defineOptions:pO,defineProps:uO,defineSSRCustomElement:C$,defineSlots:fO,devtools:t$,effect:rR,effectScope:Mv,getCurrentInstance:Ri,getCurrentScope:wm,getTransitionRawChildren:Cm,guardReactiveProps:dy,h:Pt,handleError:Ys,hasInjectionContext:ry,hydrate:HS,initCustomFormatter:QO,initDirectivesForSSR:H$,inject:bt,isMemoSame:zS,isProxy:Vv,isReactive:Gi,isReadonly:Ur,isRef:ea,isRuntimeOnly:KO,isShallow:pd,isVNode:Vr,markRaw:Fd,mergeDefaults:vO,mergeModels:yO,mergeProps:Dn,nextTick:ha,normalizeClass:Be,normalizeProps:rD,normalizeStyle:oo,onActivated:ay,onBeforeMount:iy,onBeforeUnmount:Od,onBeforeUpdate:ZD,onDeactivated:ny,onErrorCaptured:XD,onMounted:Ct,onRenderTracked:JD,onRenderTriggered:QD,onScopeDispose:Rv,onServerPrefetch:GD,onUnmounted:Da,onUpdated:Tm,openBlock:P,popScopeId:FD,provide:ma,proxyRefs:Kv,pushScopeId:ND,queuePostFlushCb:B_,reactive:ui,readonly:Uv,ref:le,registerRuntimeCompiler:WO,render:hg,renderList:Un,renderSlot:it,resolveComponent:Ue,resolveDirective:Am,resolveDynamicComponent:OD,resolveFilter:o$,resolveTransitionHooks:Yl,setBlockTracking:sg,setDevtoolsHook:a$,setTransitionHooks:Fs,shallowReactive:Bv,shallowReadonly:PR,shallowRef:Wv,ssrContextKey:BD,ssrUtils:i$,stop:sR,toDisplayString:Ie,toHandlerKey:Jc,toHandlers:cO,toRaw:et,toRef:PD,toRefs:Yv,toValue:jR,transformVNodeArgs:BO,triggerRef:CR,unref:L,useAttrs:aS,useCssModule:T$,useCssVars:h$,useModel:GO,useSSRContext:UD,useSlots:Yr,useTransitionState:ey,vModelCheckbox:Rm,vModelDynamic:$S,vModelRadio:my,vModelSelect:RS,vModelText:Y_,vShow:Fm,version:PS,warn:XO,watch:Yt,watchEffect:Ca,watchPostEffect:VD,watchSyncEffect:qD,withAsyncContext:kO,withCtx:me,withDefaults:gO,withDirectives:Ns,withKeys:BS,withMemo:JO,withModifiers:zi,withScopeId:MD},Symbol.toStringTag,{value:"Module"}));/*! * vue-router v4.2.5 * (c) 2023 Eduardo San Martin Morote * @license MIT - */const Sl=typeof window<"u";function ZP(e){return e.__esModule||e[Symbol.toStringTag]==="Module"}const na=Object.assign;function kh(e,t){const a={};for(const n in t){const i=t[n];a[n]=eo(i)?i.map(e):e(i)}return a}const nd=()=>{},eo=Array.isArray,Z3=/\/$/,G3=e=>e.replace(Z3,"");function wh(e,t,a="/"){let n,i={},o="",s="";const l=t.indexOf("#");let d=t.indexOf("?");return l=0&&(d=-1),d>-1&&(n=t.slice(0,d),o=t.slice(d+1,l>-1?l:t.length),i=e(o)),l>-1&&(n=n||t.slice(0,l),s=t.slice(l,t.length)),n=e4(n??t,a),{fullPath:n+(o&&"?")+o+s,path:n,query:i,hash:s}}function Q3(e,t){const a=t.query?e(t.query):"";return t.path+(a&&"?")+a+(t.hash||"")}function fD(e,t){return!t||!e.toLowerCase().startsWith(t.toLowerCase())?e:e.slice(t.length)||"/"}function J3(e,t,a){const n=t.matched.length-1,i=a.matched.length-1;return n>-1&&n===i&&Ql(t.matched[n],a.matched[i])&&GP(t.params,a.params)&&e(t.query)===e(a.query)&&t.hash===a.hash}function Ql(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function GP(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(const a in e)if(!X3(e[a],t[a]))return!1;return!0}function X3(e,t){return eo(e)?hD(e,t):eo(t)?hD(t,e):e===t}function hD(e,t){return eo(t)?e.length===t.length&&e.every((a,n)=>a===t[n]):e.length===1&&e[0]===t}function e4(e,t){if(e.startsWith("/"))return e;if(!e)return t;const a=t.split("/"),n=e.split("/"),i=n[n.length-1];(i===".."||i===".")&&n.push("");let o=a.length-1,s,l;for(s=0;s1&&o--;else break;return a.slice(0,o).join("/")+"/"+n.slice(s-(s===n.length?1:0)).join("/")}var Jl;(function(e){e.pop="pop",e.push="push"})(Jl||(Jl={}));var Cr;(function(e){e.back="back",e.forward="forward",e.unknown=""})(Cr||(Cr={}));const Dh="";function QP(e){if(!e)if(Sl){const t=document.querySelector("base");e=t&&t.getAttribute("href")||"/",e=e.replace(/^\w+:\/\/[^\/]+/,"")}else e="/";return e[0]!=="/"&&e[0]!=="#"&&(e="/"+e),G3(e)}const t4=/^[^#]+#/;function JP(e,t){return e.replace(t4,"#")+t}function a4(e,t){const a=document.documentElement.getBoundingClientRect(),n=e.getBoundingClientRect();return{behavior:t.behavior,left:n.left-a.left-(t.left||0),top:n.top-a.top-(t.top||0)}}const $m=()=>({left:window.pageXOffset,top:window.pageYOffset});function n4(e){let t;if("el"in e){const a=e.el,n=typeof a=="string"&&a.startsWith("#"),i=typeof a=="string"?n?document.getElementById(a.slice(1)):document.querySelector(a):a;if(!i)return;t=a4(i,e)}else t=e;"scrollBehavior"in document.documentElement.style?window.scrollTo(t):window.scrollTo(t.left!=null?t.left:window.pageXOffset,t.top!=null?t.top:window.pageYOffset)}function gD(e,t){return(history.state?history.state.position-t:-1)+e}const vg=new Map;function i4(e,t){vg.set(e,t)}function o4(e){const t=vg.get(e);return vg.delete(e),t}let s4=()=>location.protocol+"//"+location.host;function XP(e,t){const{pathname:a,search:n,hash:i}=t,o=e.indexOf("#");if(o>-1){let l=i.includes(e.slice(o))?e.slice(o).length:1,d=i.slice(l);return d[0]!=="/"&&(d="/"+d),fD(d,"")}return fD(a,e)+n+i}function r4(e,t,a,n){let i=[],o=[],s=null;const l=({state:p})=>{const h=XP(e,location),g=a.value,y=t.value;let k=0;if(p){if(a.value=h,t.value=p,s&&s===g){s=null;return}k=y?p.position-y.position:0}else n(h);i.forEach(b=>{b(a.value,g,{delta:k,type:Jl.pop,direction:k?k>0?Cr.forward:Cr.back:Cr.unknown})})};function d(){s=a.value}function u(p){i.push(p);const h=()=>{const g=i.indexOf(p);g>-1&&i.splice(g,1)};return o.push(h),h}function _(){const{history:p}=window;p.state&&p.replaceState(na({},p.state,{scroll:$m()}),"")}function f(){for(const p of o)p();o=[],window.removeEventListener("popstate",l),window.removeEventListener("beforeunload",_)}return window.addEventListener("popstate",l),window.addEventListener("beforeunload",_,{passive:!0}),{pauseListeners:d,listen:u,destroy:f}}function vD(e,t,a,n=!1,i=!1){return{back:e,current:t,forward:a,replaced:n,position:window.history.length,scroll:i?$m():null}}function l4(e){const{history:t,location:a}=window,n={value:XP(e,a)},i={value:t.state};i.value||o(n.value,{back:null,current:n.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function o(d,u,_){const f=e.indexOf("#"),p=f>-1?(a.host&&document.querySelector("base")?e:e.slice(f))+d:s4()+e+d;try{t[_?"replaceState":"pushState"](u,"",p),i.value=u}catch(h){console.error(h),a[_?"replace":"assign"](p)}}function s(d,u){const _=na({},t.state,vD(i.value.back,d,i.value.forward,!0),u,{position:i.value.position});o(d,_,!0),n.value=d}function l(d,u){const _=na({},i.value,t.state,{forward:d,scroll:$m()});o(_.current,_,!0);const f=na({},vD(n.value,d,null),{position:_.position+1},u);o(d,f,!1),n.value=d}return{location:n,state:i,push:l,replace:s}}function fy(e){e=QP(e);const t=l4(e),a=r4(e,t.state,t.location,t.replace);function n(o,s=!0){s||a.pauseListeners(),history.go(o)}const i=na({location:"",base:e,go:n,createHref:JP.bind(null,e)},t,a);return Object.defineProperty(i,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(i,"state",{enumerable:!0,get:()=>t.state.value}),i}function c4(e=""){let t=[],a=[Dh],n=0;e=QP(e);function i(l){n++,n!==a.length&&a.splice(n),a.push(l)}function o(l,d,{direction:u,delta:_}){const f={direction:u,delta:_,type:Jl.pop};for(const p of t)p(l,d,f)}const s={location:Dh,state:{},base:e,createHref:JP.bind(null,e),replace(l){a.splice(n--,1),i(l)},push(l,d){i(l)},listen(l){return t.push(l),()=>{const d=t.indexOf(l);d>-1&&t.splice(d,1)}},destroy(){t=[],a=[Dh],n=0},go(l,d=!0){const u=this.location,_=l<0?Cr.back:Cr.forward;n=Math.max(0,Math.min(n+l,a.length-1)),d&&o(this.location,u,{direction:_,delta:l})}};return Object.defineProperty(s,"location",{enumerable:!0,get:()=>a[n]}),s}function d4(e){return e=location.host?e||location.pathname+location.search:"",e.includes("#")||(e+="#"),fy(e)}function u4(e){return typeof e=="string"||e&&typeof e=="object"}function eE(e){return typeof e=="string"||typeof e=="symbol"}const Mo={path:"/",name:void 0,params:{},query:{},hash:"",fullPath:"/",matched:[],meta:{},redirectedFrom:void 0},tE=Symbol("");var yg;(function(e){e[e.aborted=4]="aborted",e[e.cancelled=8]="cancelled",e[e.duplicated=16]="duplicated"})(yg||(yg={}));function Xl(e,t){return na(new Error,{type:e,[tE]:!0},t)}function _o(e,t){return e instanceof Error&&tE in e&&(t==null||!!(e.type&t))}const yD="[^/]+?",_4={sensitive:!1,strict:!1,start:!0,end:!0},m4=/[.+*?^${}()[\]/\\]/g;function p4(e,t){const a=na({},_4,t),n=[];let i=a.start?"^":"";const o=[];for(const u of e){const _=u.length?[]:[90];a.strict&&!u.length&&(i+="/");for(let f=0;ft.length?t.length===1&&t[0]===80?1:-1:0}function h4(e,t){let a=0;const n=e.score,i=t.score;for(;a0&&t[t.length-1]<0}const g4={type:0,value:""},v4=/[a-zA-Z0-9_]/;function y4(e){if(!e)return[[]];if(e==="/")return[[g4]];if(!e.startsWith("/"))throw new Error(`Invalid path "${e}"`);function t(h){throw new Error(`ERR (${a})/"${u}": ${h}`)}let a=0,n=a;const i=[];let o;function s(){o&&i.push(o),o=[]}let l=0,d,u="",_="";function f(){u&&(a===0?o.push({type:0,value:u}):a===1||a===2||a===3?(o.length>1&&(d==="*"||d==="+")&&t(`A repeatable param (${u}) must be alone in its segment. eg: '/:ids+.`),o.push({type:1,value:u,regexp:_,repeatable:d==="*"||d==="+",optional:d==="*"||d==="?"})):t("Invalid state to consume buffer"),u="")}function p(){u+=d}for(;l{s(P)}:nd}function s(_){if(eE(_)){const f=n.get(_);f&&(n.delete(_),a.splice(a.indexOf(f),1),f.children.forEach(s),f.alias.forEach(s))}else{const f=a.indexOf(_);f>-1&&(a.splice(f,1),_.record.name&&n.delete(_.record.name),_.children.forEach(s),_.alias.forEach(s))}}function l(){return a}function d(_){let f=0;for(;f=0&&(_.record.path!==a[f].record.path||!nE(_,a[f]));)f++;a.splice(f,0,_),_.record.name&&!wD(_)&&n.set(_.record.name,_)}function u(_,f){let p,h={},g,y;if("name"in _&&_.name){if(p=n.get(_.name),!p)throw Xl(1,{location:_});y=p.record.name,h=na(kD(f.params,p.keys.filter(P=>!P.optional).map(P=>P.name)),_.params&&kD(_.params,p.keys.map(P=>P.name))),g=p.stringify(h)}else if("path"in _)g=_.path,p=a.find(P=>P.re.test(g)),p&&(h=p.parse(g),y=p.record.name);else{if(p=f.name?n.get(f.name):a.find(P=>P.re.test(f.path)),!p)throw Xl(1,{location:_,currentLocation:f});y=p.record.name,h=na({},f.params,_.params),g=p.stringify(h)}const k=[];let b=p;for(;b;)k.unshift(b.record),b=b.parent;return{name:y,path:g,params:h,matched:k,meta:D4(k)}}return e.forEach(_=>o(_)),{addRoute:o,resolve:u,removeRoute:s,getRoutes:l,getRecordMatcher:i}}function kD(e,t){const a={};for(const n of t)n in e&&(a[n]=e[n]);return a}function k4(e){return{path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:void 0,beforeEnter:e.beforeEnter,props:w4(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:"components"in e?e.components||null:e.component&&{default:e.component}}}function w4(e){const t={},a=e.props||!1;if("component"in e)t.default=a;else for(const n in e.components)t[n]=typeof a=="object"?a[n]:a;return t}function wD(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function D4(e){return e.reduce((t,a)=>na(t,a.meta),{})}function DD(e,t){const a={};for(const n in e)a[n]=n in t?t[n]:e[n];return a}function nE(e,t){return t.children.some(a=>a===e||nE(e,a))}const iE=/#/g,x4=/&/g,S4=/\//g,P4=/=/g,E4=/\?/g,oE=/\+/g,z4=/%5B/g,A4=/%5D/g,sE=/%5E/g,C4=/%60/g,rE=/%7B/g,T4=/%7C/g,lE=/%7D/g,j4=/%20/g;function hy(e){return encodeURI(""+e).replace(T4,"|").replace(z4,"[").replace(A4,"]")}function N4(e){return hy(e).replace(rE,"{").replace(lE,"}").replace(sE,"^")}function bg(e){return hy(e).replace(oE,"%2B").replace(j4,"+").replace(iE,"%23").replace(x4,"%26").replace(C4,"`").replace(rE,"{").replace(lE,"}").replace(sE,"^")}function I4(e){return bg(e).replace(P4,"%3D")}function F4(e){return hy(e).replace(iE,"%23").replace(E4,"%3F")}function R4(e){return e==null?"":F4(e).replace(S4,"%2F")}function Z_(e){try{return decodeURIComponent(""+e)}catch{}return""+e}function cE(e){const t={};if(e===""||e==="?")return t;const n=(e[0]==="?"?e.slice(1):e).split("&");for(let i=0;io&&bg(o)):[n&&bg(n)]).forEach(o=>{o!==void 0&&(t+=(t.length?"&":"")+a,o!=null&&(t+="="+o))})}return t}function O4(e){const t={};for(const a in e){const n=e[a];n!==void 0&&(t[a]=eo(n)?n.map(i=>i==null?null:""+i):n==null?n:""+n)}return t}const Lm=Symbol(""),wg=Symbol(""),Ld=Symbol(""),Bm=Symbol(""),G_=Symbol("");function Lc(){let e=[];function t(n){return e.push(n),()=>{const i=e.indexOf(n);i>-1&&e.splice(i,1)}}function a(){e=[]}return{add:t,list:()=>e.slice(),reset:a}}function dE(e,t,a){const n=()=>{e[t].delete(a)};xa(n),ny(n),ay(()=>{e[t].add(a)}),e[t].add(a)}function M4(e){const t=bt(Lm,{}).value;t&&dE(t,"leaveGuards",e)}function $4(e){const t=bt(Lm,{}).value;t&&dE(t,"updateGuards",e)}function js(e,t,a,n,i){const o=n&&(n.enterCallbacks[i]=n.enterCallbacks[i]||[]);return()=>new Promise((s,l)=>{const d=f=>{f===!1?l(Xl(4,{from:a,to:t})):f instanceof Error?l(f):u4(f)?l(Xl(2,{from:t,to:f})):(o&&n.enterCallbacks[i]===o&&typeof f=="function"&&o.push(f),s())},u=e.call(n&&n.instances[i],t,a,d);let _=Promise.resolve(u);e.length<3&&(_=_.then(d)),_.catch(f=>l(f))})}function xh(e,t,a,n){const i=[];for(const o of e)for(const s in o.components){let l=o.components[s];if(!(t!=="beforeRouteEnter"&&!o.instances[s]))if(L4(l)){const u=(l.__vccOpts||l)[t];u&&i.push(js(u,a,n,o,s))}else{let d=l();i.push(()=>d.then(u=>{if(!u)return Promise.reject(new Error(`Couldn't resolve component "${s}" at "${o.path}"`));const _=ZP(u)?u.default:u;o.components[s]=_;const p=(_.__vccOpts||_)[t];return p&&js(p,a,n,o,s)()}))}}return i}function L4(e){return typeof e=="object"||"displayName"in e||"props"in e||"__vccOpts"in e}function B4(e){return e.matched.every(t=>t.redirect)?Promise.reject(new Error("Cannot load a route that redirects.")):Promise.all(e.matched.map(t=>t.components&&Promise.all(Object.keys(t.components).reduce((a,n)=>{const i=t.components[n];return typeof i=="function"&&!("displayName"in i)&&a.push(i().then(o=>{if(!o)return Promise.reject(new Error(`Couldn't resolve component "${n}" at "${t.path}". Ensure you passed a function that returns a promise.`));const s=ZP(o)?o.default:o;t.components[n]=s})),a},[])))).then(()=>e)}function Dg(e){const t=bt(Ld),a=bt(Bm),n=B(()=>t.resolve(O(e.to))),i=B(()=>{const{matched:d}=n.value,{length:u}=d,_=d[u-1],f=a.matched;if(!_||!f.length)return-1;const p=f.findIndex(Ql.bind(null,_));if(p>-1)return p;const h=xD(d[u-2]);return u>1&&xD(_)===h&&f[f.length-1].path!==h?f.findIndex(Ql.bind(null,d[u-2])):p}),o=B(()=>i.value>-1&&q4(a.params,n.value.params)),s=B(()=>i.value>-1&&i.value===a.matched.length-1&&GP(a.params,n.value.params));function l(d={}){return V4(d)?t[O(e.replace)?"replace":"push"](O(e.to)).catch(nd):Promise.resolve()}return{route:n,href:B(()=>n.value.href),isActive:o,isExactActive:s,navigate:l}}const U4=kt({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"}},useLink:Dg,setup(e,{slots:t}){const a=ui(Dg(e)),{options:n}=bt(Ld),i=B(()=>({[SD(e.activeClass,n.linkActiveClass,"router-link-active")]:a.isActive,[SD(e.exactActiveClass,n.linkExactActiveClass,"router-link-exact-active")]:a.isExactActive}));return()=>{const o=t.default&&t.default(a);return e.custom?o:Et("a",{"aria-current":a.isExactActive?e.ariaCurrentValue:null,href:a.href,onClick:a.navigate,class:i.value},o)}}}),uE=U4;function V4(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 q4(e,t){for(const a in t){const n=t[a],i=e[a];if(typeof n=="string"){if(n!==i)return!1}else if(!eo(i)||i.length!==n.length||n.some((o,s)=>o!==i[s]))return!1}return!0}function xD(e){return e?e.aliasOf?e.aliasOf.path:e.path:""}const SD=(e,t,a)=>e??t??a,W4=kt({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:a}){const n=bt(G_),i=B(()=>e.route||n.value),o=bt(wg,0),s=B(()=>{let u=O(o);const{matched:_}=i.value;let f;for(;(f=_[u])&&!f.components;)u++;return u}),l=B(()=>i.value.matched[s.value]);ma(wg,B(()=>s.value+1)),ma(Lm,l),ma(G_,i);const d=re();return Yt(()=>[d.value,l.value,e.name],([u,_,f],[p,h,g])=>{_&&(_.instances[f]=u,h&&h!==_&&u&&u===p&&(_.leaveGuards.size||(_.leaveGuards=h.leaveGuards),_.updateGuards.size||(_.updateGuards=h.updateGuards))),u&&_&&(!h||!Ql(_,h)||!p)&&(_.enterCallbacks[f]||[]).forEach(y=>y(u))},{flush:"post"}),()=>{const u=i.value,_=e.name,f=l.value,p=f&&f.components[_];if(!p)return PD(a.default,{Component:p,route:u});const h=f.props[_],g=h?h===!0?u.params:typeof h=="function"?h(u):h:null,k=Et(p,na({},g,t,{onVnodeUnmounted:b=>{b.component.isUnmounted&&(f.instances[_]=null)},ref:d}));return PD(a.default,{Component:k,route:u})||k}}});function PD(e,t){if(!e)return null;const a=e(t);return a.length===1?a[0]:a}const _E=W4;function mE(e){const t=aE(e.routes,e),a=e.parseQuery||cE,n=e.stringifyQuery||kg,i=e.history,o=Lc(),s=Lc(),l=Lc(),d=Hv(Mo);let u=Mo;Sl&&e.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const _=kh.bind(null,le=>""+le),f=kh.bind(null,R4),p=kh.bind(null,Z_);function h(le,we){let De,Oe;return eE(le)?(De=t.getRecordMatcher(le),Oe=we):Oe=le,t.addRoute(Oe,De)}function g(le){const we=t.getRecordMatcher(le);we&&t.removeRoute(we)}function y(){return t.getRoutes().map(le=>le.record)}function k(le){return!!t.getRecordMatcher(le)}function b(le,we){if(we=na({},we||d.value),typeof le=="string"){const D=wh(a,le,we.path),F=t.resolve({path:D.path},we),q=i.createHref(D.fullPath);return na(D,F,{params:p(F.params),hash:Z_(D.hash),redirectedFrom:void 0,href:q})}let De;if("path"in le)De=na({},le,{path:wh(a,le.path,we.path).path});else{const D=na({},le.params);for(const F in D)D[F]==null&&delete D[F];De=na({},le,{params:f(D)}),we.params=f(we.params)}const Oe=t.resolve(De,we),st=le.hash||"";Oe.params=_(p(Oe.params));const vt=Q3(n,na({},le,{hash:N4(st),path:Oe.path})),S=i.createHref(vt);return na({fullPath:vt,hash:st,query:n===kg?O4(le.query):le.query||{}},Oe,{redirectedFrom:void 0,href:S})}function P(le){return typeof le=="string"?wh(a,le,d.value.path):na({},le)}function w(le,we){if(u!==le)return Xl(8,{from:we,to:le})}function x(le){return j(le)}function E(le){return x(na(P(le),{replace:!0}))}function C(le){const we=le.matched[le.matched.length-1];if(we&&we.redirect){const{redirect:De}=we;let Oe=typeof De=="function"?De(le):De;return typeof Oe=="string"&&(Oe=Oe.includes("?")||Oe.includes("#")?Oe=P(Oe):{path:Oe},Oe.params={}),na({query:le.query,hash:le.hash,params:"path"in Oe?{}:le.params},Oe)}}function j(le,we){const De=u=b(le),Oe=d.value,st=le.state,vt=le.force,S=le.replace===!0,D=C(De);if(D)return j(na(P(D),{state:typeof D=="object"?na({},st,D.state):st,force:vt,replace:S}),we||De);const F=De;F.redirectedFrom=we;let q;return!vt&&J3(n,Oe,De)&&(q=Xl(16,{to:F,from:Oe}),Ge(Oe,Oe,!0,!1)),(q?Promise.resolve(q):V(F,Oe)).catch(H=>_o(H)?_o(H,2)?H:oe(H):Pe(H,F,Oe)).then(H=>{if(H){if(_o(H,2))return j(na({replace:S},P(H.to),{state:typeof H.to=="object"?na({},st,H.to.state):st,force:vt}),we||F)}else H=J(F,Oe,!0,S,st);return ee(F,Oe,H),H})}function A(le,we){const De=w(le,we);return De?Promise.reject(De):Promise.resolve()}function U(le){const we=Bt.values().next().value;return we&&typeof we.runWithContext=="function"?we.runWithContext(le):le()}function V(le,we){let De;const[Oe,st,vt]=H4(le,we);De=xh(Oe.reverse(),"beforeRouteLeave",le,we);for(const D of Oe)D.leaveGuards.forEach(F=>{De.push(js(F,le,we))});const S=A.bind(null,le,we);return De.push(S),jt(De).then(()=>{De=[];for(const D of o.list())De.push(js(D,le,we));return De.push(S),jt(De)}).then(()=>{De=xh(st,"beforeRouteUpdate",le,we);for(const D of st)D.updateGuards.forEach(F=>{De.push(js(F,le,we))});return De.push(S),jt(De)}).then(()=>{De=[];for(const D of vt)if(D.beforeEnter)if(eo(D.beforeEnter))for(const F of D.beforeEnter)De.push(js(F,le,we));else De.push(js(D.beforeEnter,le,we));return De.push(S),jt(De)}).then(()=>(le.matched.forEach(D=>D.enterCallbacks={}),De=xh(vt,"beforeRouteEnter",le,we),De.push(S),jt(De))).then(()=>{De=[];for(const D of s.list())De.push(js(D,le,we));return De.push(S),jt(De)}).catch(D=>_o(D,8)?D:Promise.reject(D))}function ee(le,we,De){l.list().forEach(Oe=>U(()=>Oe(le,we,De)))}function J(le,we,De,Oe,st){const vt=w(le,we);if(vt)return vt;const S=we===Mo,D=Sl?history.state:{};De&&(Oe||S?i.replace(le.fullPath,na({scroll:S&&D&&D.scroll},st)):i.push(le.fullPath,st)),d.value=le,Ge(le,we,De,S),oe()}let ie;function Te(){ie||(ie=i.listen((le,we,De)=>{if(!Wt.listening)return;const Oe=b(le),st=C(Oe);if(st){j(na(st,{replace:!0}),Oe).catch(nd);return}u=Oe;const vt=d.value;Sl&&i4(gD(vt.fullPath,De.delta),$m()),V(Oe,vt).catch(S=>_o(S,12)?S:_o(S,2)?(j(S.to,Oe).then(D=>{_o(D,20)&&!De.delta&&De.type===Jl.pop&&i.go(-1,!1)}).catch(nd),Promise.reject()):(De.delta&&i.go(-De.delta,!1),Pe(S,Oe,vt))).then(S=>{S=S||J(Oe,vt,!1),S&&(De.delta&&!_o(S,8)?i.go(-De.delta,!1):De.type===Jl.pop&&_o(S,20)&&i.go(-1,!1)),ee(Oe,vt,S)}).catch(nd)}))}let ze=Lc(),ce=Lc(),Ae;function Pe(le,we,De){oe(le);const Oe=ce.list();return Oe.length?Oe.forEach(st=>st(le,we,De)):console.error(le),Promise.reject(le)}function He(){return Ae&&d.value!==Mo?Promise.resolve():new Promise((le,we)=>{ze.add([le,we])})}function oe(le){return Ae||(Ae=!le,Te(),ze.list().forEach(([we,De])=>le?De(le):we()),ze.reset()),le}function Ge(le,we,De,Oe){const{scrollBehavior:st}=e;if(!Sl||!st)return Promise.resolve();const vt=!De&&o4(gD(le.fullPath,0))||(Oe||!De)&&history.state&&history.state.scroll||null;return ha().then(()=>st(le,we,vt)).then(S=>S&&n4(S)).catch(S=>Pe(S,le,we))}const at=le=>i.go(le);let la;const Bt=new Set,Wt={currentRoute:d,listening:!0,addRoute:h,removeRoute:g,hasRoute:k,getRoutes:y,resolve:b,options:e,push:x,replace:E,go:at,back:()=>at(-1),forward:()=>at(1),beforeEach:o.add,beforeResolve:s.add,afterEach:l.add,onError:ce.add,isReady:He,install(le){const we=this;le.component("RouterLink",uE),le.component("RouterView",_E),le.config.globalProperties.$router=we,Object.defineProperty(le.config.globalProperties,"$route",{enumerable:!0,get:()=>O(d)}),Sl&&!la&&d.value===Mo&&(la=!0,x(i.location).catch(st=>{}));const De={};for(const st in Mo)Object.defineProperty(De,st,{get:()=>d.value[st],enumerable:!0});le.provide(Ld,we),le.provide(Bm,Bv(De)),le.provide(G_,d);const Oe=le.unmount;Bt.add(le),le.unmount=function(){Bt.delete(le),Bt.size<1&&(u=Mo,ie&&ie(),ie=null,d.value=Mo,la=!1,Ae=!1),Oe()}}};function jt(le){return le.reduce((we,De)=>we.then(()=>U(De)),Promise.resolve())}return Wt}function H4(e,t){const a=[],n=[],i=[],o=Math.max(t.matched.length,e.matched.length);for(let s=0;sQl(u,l))?n.push(l):a.push(l));const d=e.matched[s];d&&(t.matched.find(u=>Ql(u,d))||i.push(d))}return[a,n,i]}function K4(){return bt(Ld)}function Zs(){return bt(Bm)}const Y4=Object.freeze(Object.defineProperty({__proto__:null,get NavigationFailureType(){return yg},RouterLink:uE,RouterView:_E,START_LOCATION:Mo,createMemoryHistory:c4,createRouter:mE,createRouterMatcher:aE,createWebHashHistory:d4,createWebHistory:fy,isNavigationFailure:_o,loadRouteLocation:B4,matchedRouteKey:Lm,onBeforeRouteLeave:M4,onBeforeRouteUpdate:$4,parseQuery:cE,routeLocationKey:Bm,routerKey:Ld,routerViewLocationKey:G_,stringifyQuery:kg,useLink:Dg,useRoute:Zs,useRouter:K4,viewDepthKey:wg},Symbol.toStringTag,{value:"Module"}));var Z4=!1;/*! + */const Sl=typeof window<"u";function ZS(e){return e.__esModule||e[Symbol.toStringTag]==="Module"}const na=Object.assign;function bh(e,t){const a={};for(const n in t){const i=t[n];a[n]=eo(i)?i.map(e):e(i)}return a}const nd=()=>{},eo=Array.isArray,K$=/\/$/,Y$=e=>e.replace(K$,"");function kh(e,t,a="/"){let n,i={},o="",r="";const l=t.indexOf("#");let d=t.indexOf("?");return l=0&&(d=-1),d>-1&&(n=t.slice(0,d),o=t.slice(d+1,l>-1?l:t.length),i=e(o)),l>-1&&(n=n||t.slice(0,l),r=t.slice(l,t.length)),n=J$(n??t,a),{fullPath:n+(o&&"?")+o+r,path:n,query:i,hash:r}}function Z$(e,t){const a=t.query?e(t.query):"";return t.path+(a&&"?")+a+(t.hash||"")}function f1(e,t){return!t||!e.toLowerCase().startsWith(t.toLowerCase())?e:e.slice(t.length)||"/"}function G$(e,t,a){const n=t.matched.length-1,i=a.matched.length-1;return n>-1&&n===i&&Ql(t.matched[n],a.matched[i])&&GS(t.params,a.params)&&e(t.query)===e(a.query)&&t.hash===a.hash}function Ql(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function GS(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(const a in e)if(!Q$(e[a],t[a]))return!1;return!0}function Q$(e,t){return eo(e)?h1(e,t):eo(t)?h1(t,e):e===t}function h1(e,t){return eo(t)?e.length===t.length&&e.every((a,n)=>a===t[n]):e.length===1&&e[0]===t}function J$(e,t){if(e.startsWith("/"))return e;if(!e)return t;const a=t.split("/"),n=e.split("/"),i=n[n.length-1];(i===".."||i===".")&&n.push("");let o=a.length-1,r,l;for(r=0;r1&&o--;else break;return a.slice(0,o).join("/")+"/"+n.slice(r-(r===n.length?1:0)).join("/")}var Jl;(function(e){e.pop="pop",e.push="push"})(Jl||(Jl={}));var Cs;(function(e){e.back="back",e.forward="forward",e.unknown=""})(Cs||(Cs={}));const wh="";function QS(e){if(!e)if(Sl){const t=document.querySelector("base");e=t&&t.getAttribute("href")||"/",e=e.replace(/^\w+:\/\/[^\/]+/,"")}else e="/";return e[0]!=="/"&&e[0]!=="#"&&(e="/"+e),Y$(e)}const X$=/^[^#]+#/;function JS(e,t){return e.replace(X$,"#")+t}function e5(e,t){const a=document.documentElement.getBoundingClientRect(),n=e.getBoundingClientRect();return{behavior:t.behavior,left:n.left-a.left-(t.left||0),top:n.top-a.top-(t.top||0)}}const Om=()=>({left:window.pageXOffset,top:window.pageYOffset});function t5(e){let t;if("el"in e){const a=e.el,n=typeof a=="string"&&a.startsWith("#"),i=typeof a=="string"?n?document.getElementById(a.slice(1)):document.querySelector(a):a;if(!i)return;t=e5(i,e)}else t=e;"scrollBehavior"in document.documentElement.style?window.scrollTo(t):window.scrollTo(t.left!=null?t.left:window.pageXOffset,t.top!=null?t.top:window.pageYOffset)}function g1(e,t){return(history.state?history.state.position-t:-1)+e}const gg=new Map;function a5(e,t){gg.set(e,t)}function n5(e){const t=gg.get(e);return gg.delete(e),t}let i5=()=>location.protocol+"//"+location.host;function XS(e,t){const{pathname:a,search:n,hash:i}=t,o=e.indexOf("#");if(o>-1){let l=i.includes(e.slice(o))?e.slice(o).length:1,d=i.slice(l);return d[0]!=="/"&&(d="/"+d),f1(d,"")}return f1(a,e)+n+i}function o5(e,t,a,n){let i=[],o=[],r=null;const l=({state:p})=>{const h=XS(e,location),g=a.value,y=t.value;let k=0;if(p){if(a.value=h,t.value=p,r&&r===g){r=null;return}k=y?p.position-y.position:0}else n(h);i.forEach(b=>{b(a.value,g,{delta:k,type:Jl.pop,direction:k?k>0?Cs.forward:Cs.back:Cs.unknown})})};function d(){r=a.value}function u(p){i.push(p);const h=()=>{const g=i.indexOf(p);g>-1&&i.splice(g,1)};return o.push(h),h}function _(){const{history:p}=window;p.state&&p.replaceState(na({},p.state,{scroll:Om()}),"")}function f(){for(const p of o)p();o=[],window.removeEventListener("popstate",l),window.removeEventListener("beforeunload",_)}return window.addEventListener("popstate",l),window.addEventListener("beforeunload",_,{passive:!0}),{pauseListeners:d,listen:u,destroy:f}}function v1(e,t,a,n=!1,i=!1){return{back:e,current:t,forward:a,replaced:n,position:window.history.length,scroll:i?Om():null}}function r5(e){const{history:t,location:a}=window,n={value:XS(e,a)},i={value:t.state};i.value||o(n.value,{back:null,current:n.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function o(d,u,_){const f=e.indexOf("#"),p=f>-1?(a.host&&document.querySelector("base")?e:e.slice(f))+d:i5()+e+d;try{t[_?"replaceState":"pushState"](u,"",p),i.value=u}catch(h){console.error(h),a[_?"replace":"assign"](p)}}function r(d,u){const _=na({},t.state,v1(i.value.back,d,i.value.forward,!0),u,{position:i.value.position});o(d,_,!0),n.value=d}function l(d,u){const _=na({},i.value,t.state,{forward:d,scroll:Om()});o(_.current,_,!0);const f=na({},v1(n.value,d,null),{position:_.position+1},u);o(d,f,!1),n.value=d}return{location:n,state:i,push:l,replace:r}}function fy(e){e=QS(e);const t=r5(e),a=o5(e,t.state,t.location,t.replace);function n(o,r=!0){r||a.pauseListeners(),history.go(o)}const i=na({location:"",base:e,go:n,createHref:JS.bind(null,e)},t,a);return Object.defineProperty(i,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(i,"state",{enumerable:!0,get:()=>t.state.value}),i}function s5(e=""){let t=[],a=[wh],n=0;e=QS(e);function i(l){n++,n!==a.length&&a.splice(n),a.push(l)}function o(l,d,{direction:u,delta:_}){const f={direction:u,delta:_,type:Jl.pop};for(const p of t)p(l,d,f)}const r={location:wh,state:{},base:e,createHref:JS.bind(null,e),replace(l){a.splice(n--,1),i(l)},push(l,d){i(l)},listen(l){return t.push(l),()=>{const d=t.indexOf(l);d>-1&&t.splice(d,1)}},destroy(){t=[],a=[wh],n=0},go(l,d=!0){const u=this.location,_=l<0?Cs.back:Cs.forward;n=Math.max(0,Math.min(n+l,a.length-1)),d&&o(this.location,u,{direction:_,delta:l})}};return Object.defineProperty(r,"location",{enumerable:!0,get:()=>a[n]}),r}function l5(e){return e=location.host?e||location.pathname+location.search:"",e.includes("#")||(e+="#"),fy(e)}function c5(e){return typeof e=="string"||e&&typeof e=="object"}function ez(e){return typeof e=="string"||typeof e=="symbol"}const Oo={path:"/",name:void 0,params:{},query:{},hash:"",fullPath:"/",matched:[],meta:{},redirectedFrom:void 0},tz=Symbol("");var vg;(function(e){e[e.aborted=4]="aborted",e[e.cancelled=8]="cancelled",e[e.duplicated=16]="duplicated"})(vg||(vg={}));function Xl(e,t){return na(new Error,{type:e,[tz]:!0},t)}function _o(e,t){return e instanceof Error&&tz in e&&(t==null||!!(e.type&t))}const y1="[^/]+?",d5={sensitive:!1,strict:!1,start:!0,end:!0},u5=/[.+*?^${}()[\]/\\]/g;function _5(e,t){const a=na({},d5,t),n=[];let i=a.start?"^":"";const o=[];for(const u of e){const _=u.length?[]:[90];a.strict&&!u.length&&(i+="/");for(let f=0;ft.length?t.length===1&&t[0]===80?1:-1:0}function p5(e,t){let a=0;const n=e.score,i=t.score;for(;a0&&t[t.length-1]<0}const f5={type:0,value:""},h5=/[a-zA-Z0-9_]/;function g5(e){if(!e)return[[]];if(e==="/")return[[f5]];if(!e.startsWith("/"))throw new Error(`Invalid path "${e}"`);function t(h){throw new Error(`ERR (${a})/"${u}": ${h}`)}let a=0,n=a;const i=[];let o;function r(){o&&i.push(o),o=[]}let l=0,d,u="",_="";function f(){u&&(a===0?o.push({type:0,value:u}):a===1||a===2||a===3?(o.length>1&&(d==="*"||d==="+")&&t(`A repeatable param (${u}) must be alone in its segment. eg: '/:ids+.`),o.push({type:1,value:u,regexp:_,repeatable:d==="*"||d==="+",optional:d==="*"||d==="?"})):t("Invalid state to consume buffer"),u="")}function p(){u+=d}for(;l{r(z)}:nd}function r(_){if(ez(_)){const f=n.get(_);f&&(n.delete(_),a.splice(a.indexOf(f),1),f.children.forEach(r),f.alias.forEach(r))}else{const f=a.indexOf(_);f>-1&&(a.splice(f,1),_.record.name&&n.delete(_.record.name),_.children.forEach(r),_.alias.forEach(r))}}function l(){return a}function d(_){let f=0;for(;f=0&&(_.record.path!==a[f].record.path||!nz(_,a[f]));)f++;a.splice(f,0,_),_.record.name&&!w1(_)&&n.set(_.record.name,_)}function u(_,f){let p,h={},g,y;if("name"in _&&_.name){if(p=n.get(_.name),!p)throw Xl(1,{location:_});y=p.record.name,h=na(k1(f.params,p.keys.filter(z=>!z.optional).map(z=>z.name)),_.params&&k1(_.params,p.keys.map(z=>z.name))),g=p.stringify(h)}else if("path"in _)g=_.path,p=a.find(z=>z.re.test(g)),p&&(h=p.parse(g),y=p.record.name);else{if(p=f.name?n.get(f.name):a.find(z=>z.re.test(f.path)),!p)throw Xl(1,{location:_,currentLocation:f});y=p.record.name,h=na({},f.params,_.params),g=p.stringify(h)}const k=[];let b=p;for(;b;)k.unshift(b.record),b=b.parent;return{name:y,path:g,params:h,matched:k,meta:k5(k)}}return e.forEach(_=>o(_)),{addRoute:o,resolve:u,removeRoute:r,getRoutes:l,getRecordMatcher:i}}function k1(e,t){const a={};for(const n of t)n in e&&(a[n]=e[n]);return a}function y5(e){return{path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:void 0,beforeEnter:e.beforeEnter,props:b5(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:"components"in e?e.components||null:e.component&&{default:e.component}}}function b5(e){const t={},a=e.props||!1;if("component"in e)t.default=a;else for(const n in e.components)t[n]=typeof a=="object"?a[n]:a;return t}function w1(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function k5(e){return e.reduce((t,a)=>na(t,a.meta),{})}function x1(e,t){const a={};for(const n in e)a[n]=n in t?t[n]:e[n];return a}function nz(e,t){return t.children.some(a=>a===e||nz(e,a))}const iz=/#/g,w5=/&/g,x5=/\//g,D5=/=/g,S5=/\?/g,oz=/\+/g,z5=/%5B/g,P5=/%5D/g,rz=/%5E/g,E5=/%60/g,sz=/%7B/g,A5=/%7C/g,lz=/%7D/g,C5=/%20/g;function hy(e){return encodeURI(""+e).replace(A5,"|").replace(z5,"[").replace(P5,"]")}function j5(e){return hy(e).replace(sz,"{").replace(lz,"}").replace(rz,"^")}function yg(e){return hy(e).replace(oz,"%2B").replace(C5,"+").replace(iz,"%23").replace(w5,"%26").replace(E5,"`").replace(sz,"{").replace(lz,"}").replace(rz,"^")}function T5(e){return yg(e).replace(D5,"%3D")}function I5(e){return hy(e).replace(iz,"%23").replace(S5,"%3F")}function N5(e){return e==null?"":I5(e).replace(x5,"%2F")}function Z_(e){try{return decodeURIComponent(""+e)}catch{}return""+e}function cz(e){const t={};if(e===""||e==="?")return t;const n=(e[0]==="?"?e.slice(1):e).split("&");for(let i=0;io&&yg(o)):[n&&yg(n)]).forEach(o=>{o!==void 0&&(t+=(t.length?"&":"")+a,o!=null&&(t+="="+o))})}return t}function F5(e){const t={};for(const a in e){const n=e[a];n!==void 0&&(t[a]=eo(n)?n.map(i=>i==null?null:""+i):n==null?n:""+n)}return t}const $m=Symbol(""),kg=Symbol(""),Ld=Symbol(""),Lm=Symbol(""),G_=Symbol("");function Lc(){let e=[];function t(n){return e.push(n),()=>{const i=e.indexOf(n);i>-1&&e.splice(i,1)}}function a(){e=[]}return{add:t,list:()=>e.slice(),reset:a}}function dz(e,t,a){const n=()=>{e[t].delete(a)};Da(n),ny(n),ay(()=>{e[t].add(a)}),e[t].add(a)}function M5(e){const t=bt($m,{}).value;t&&dz(t,"leaveGuards",e)}function R5(e){const t=bt($m,{}).value;t&&dz(t,"updateGuards",e)}function Tr(e,t,a,n,i){const o=n&&(n.enterCallbacks[i]=n.enterCallbacks[i]||[]);return()=>new Promise((r,l)=>{const d=f=>{f===!1?l(Xl(4,{from:a,to:t})):f instanceof Error?l(f):c5(f)?l(Xl(2,{from:t,to:f})):(o&&n.enterCallbacks[i]===o&&typeof f=="function"&&o.push(f),r())},u=e.call(n&&n.instances[i],t,a,d);let _=Promise.resolve(u);e.length<3&&(_=_.then(d)),_.catch(f=>l(f))})}function xh(e,t,a,n){const i=[];for(const o of e)for(const r in o.components){let l=o.components[r];if(!(t!=="beforeRouteEnter"&&!o.instances[r]))if(O5(l)){const u=(l.__vccOpts||l)[t];u&&i.push(Tr(u,a,n,o,r))}else{let d=l();i.push(()=>d.then(u=>{if(!u)return Promise.reject(new Error(`Couldn't resolve component "${r}" at "${o.path}"`));const _=ZS(u)?u.default:u;o.components[r]=_;const p=(_.__vccOpts||_)[t];return p&&Tr(p,a,n,o,r)()}))}}return i}function O5(e){return typeof e=="object"||"displayName"in e||"props"in e||"__vccOpts"in e}function $5(e){return e.matched.every(t=>t.redirect)?Promise.reject(new Error("Cannot load a route that redirects.")):Promise.all(e.matched.map(t=>t.components&&Promise.all(Object.keys(t.components).reduce((a,n)=>{const i=t.components[n];return typeof i=="function"&&!("displayName"in i)&&a.push(i().then(o=>{if(!o)return Promise.reject(new Error(`Couldn't resolve component "${n}" at "${t.path}". Ensure you passed a function that returns a promise.`));const r=ZS(o)?o.default:o;t.components[n]=r})),a},[])))).then(()=>e)}function wg(e){const t=bt(Ld),a=bt(Lm),n=V(()=>t.resolve(L(e.to))),i=V(()=>{const{matched:d}=n.value,{length:u}=d,_=d[u-1],f=a.matched;if(!_||!f.length)return-1;const p=f.findIndex(Ql.bind(null,_));if(p>-1)return p;const h=D1(d[u-2]);return u>1&&D1(_)===h&&f[f.length-1].path!==h?f.findIndex(Ql.bind(null,d[u-2])):p}),o=V(()=>i.value>-1&&U5(a.params,n.value.params)),r=V(()=>i.value>-1&&i.value===a.matched.length-1&&GS(a.params,n.value.params));function l(d={}){return B5(d)?t[L(e.replace)?"replace":"push"](L(e.to)).catch(nd):Promise.resolve()}return{route:n,href:V(()=>n.value.href),isActive:o,isExactActive:r,navigate:l}}const L5=kt({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"}},useLink:wg,setup(e,{slots:t}){const a=ui(wg(e)),{options:n}=bt(Ld),i=V(()=>({[S1(e.activeClass,n.linkActiveClass,"router-link-active")]:a.isActive,[S1(e.exactActiveClass,n.linkExactActiveClass,"router-link-exact-active")]:a.isExactActive}));return()=>{const o=t.default&&t.default(a);return e.custom?o:Pt("a",{"aria-current":a.isExactActive?e.ariaCurrentValue:null,href:a.href,onClick:a.navigate,class:i.value},o)}}}),uz=L5;function B5(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 U5(e,t){for(const a in t){const n=t[a],i=e[a];if(typeof n=="string"){if(n!==i)return!1}else if(!eo(i)||i.length!==n.length||n.some((o,r)=>o!==i[r]))return!1}return!0}function D1(e){return e?e.aliasOf?e.aliasOf.path:e.path:""}const S1=(e,t,a)=>e??t??a,V5=kt({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:a}){const n=bt(G_),i=V(()=>e.route||n.value),o=bt(kg,0),r=V(()=>{let u=L(o);const{matched:_}=i.value;let f;for(;(f=_[u])&&!f.components;)u++;return u}),l=V(()=>i.value.matched[r.value]);ma(kg,V(()=>r.value+1)),ma($m,l),ma(G_,i);const d=le();return Yt(()=>[d.value,l.value,e.name],([u,_,f],[p,h,g])=>{_&&(_.instances[f]=u,h&&h!==_&&u&&u===p&&(_.leaveGuards.size||(_.leaveGuards=h.leaveGuards),_.updateGuards.size||(_.updateGuards=h.updateGuards))),u&&_&&(!h||!Ql(_,h)||!p)&&(_.enterCallbacks[f]||[]).forEach(y=>y(u))},{flush:"post"}),()=>{const u=i.value,_=e.name,f=l.value,p=f&&f.components[_];if(!p)return z1(a.default,{Component:p,route:u});const h=f.props[_],g=h?h===!0?u.params:typeof h=="function"?h(u):h:null,k=Pt(p,na({},g,t,{onVnodeUnmounted:b=>{b.component.isUnmounted&&(f.instances[_]=null)},ref:d}));return z1(a.default,{Component:k,route:u})||k}}});function z1(e,t){if(!e)return null;const a=e(t);return a.length===1?a[0]:a}const _z=V5;function mz(e){const t=az(e.routes,e),a=e.parseQuery||cz,n=e.stringifyQuery||bg,i=e.history,o=Lc(),r=Lc(),l=Lc(),d=Wv(Oo);let u=Oo;Sl&&e.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const _=bh.bind(null,ce=>""+ce),f=bh.bind(null,N5),p=bh.bind(null,Z_);function h(ce,xe){let De,Oe;return ez(ce)?(De=t.getRecordMatcher(ce),Oe=xe):Oe=ce,t.addRoute(Oe,De)}function g(ce){const xe=t.getRecordMatcher(ce);xe&&t.removeRoute(xe)}function y(){return t.getRoutes().map(ce=>ce.record)}function k(ce){return!!t.getRecordMatcher(ce)}function b(ce,xe){if(xe=na({},xe||d.value),typeof ce=="string"){const x=kh(a,ce,xe.path),O=t.resolve({path:x.path},xe),W=i.createHref(x.fullPath);return na(x,O,{params:p(O.params),hash:Z_(x.hash),redirectedFrom:void 0,href:W})}let De;if("path"in ce)De=na({},ce,{path:kh(a,ce.path,xe.path).path});else{const x=na({},ce.params);for(const O in x)x[O]==null&&delete x[O];De=na({},ce,{params:f(x)}),xe.params=f(xe.params)}const Oe=t.resolve(De,xe),rt=ce.hash||"";Oe.params=_(p(Oe.params));const vt=Z$(n,na({},ce,{hash:j5(rt),path:Oe.path})),S=i.createHref(vt);return na({fullPath:vt,hash:rt,query:n===bg?F5(ce.query):ce.query||{}},Oe,{redirectedFrom:void 0,href:S})}function z(ce){return typeof ce=="string"?kh(a,ce,d.value.path):na({},ce)}function w(ce,xe){if(u!==ce)return Xl(8,{from:xe,to:ce})}function D(ce){return N(ce)}function E(ce){return D(na(z(ce),{replace:!0}))}function T(ce){const xe=ce.matched[ce.matched.length-1];if(xe&&xe.redirect){const{redirect:De}=xe;let Oe=typeof De=="function"?De(ce):De;return typeof Oe=="string"&&(Oe=Oe.includes("?")||Oe.includes("#")?Oe=z(Oe):{path:Oe},Oe.params={}),na({query:ce.query,hash:ce.hash,params:"path"in Oe?{}:ce.params},Oe)}}function N(ce,xe){const De=u=b(ce),Oe=d.value,rt=ce.state,vt=ce.force,S=ce.replace===!0,x=T(De);if(x)return N(na(z(x),{state:typeof x=="object"?na({},rt,x.state):rt,force:vt,replace:S}),xe||De);const O=De;O.redirectedFrom=xe;let W;return!vt&&G$(n,Oe,De)&&(W=Xl(16,{to:O,from:Oe}),Qe(Oe,Oe,!0,!1)),(W?Promise.resolve(W):H(O,Oe)).catch(Y=>_o(Y)?_o(Y,2)?Y:re(Y):Pe(Y,O,Oe)).then(Y=>{if(Y){if(_o(Y,2))return N(na({replace:S},z(Y.to),{state:typeof Y.to=="object"?na({},rt,Y.to.state):rt,force:vt}),xe||O)}else Y=X(O,Oe,!0,S,rt);return te(O,Oe,Y),Y})}function j(ce,xe){const De=w(ce,xe);return De?Promise.reject(De):Promise.resolve()}function q(ce){const xe=Bt.values().next().value;return xe&&typeof xe.runWithContext=="function"?xe.runWithContext(ce):ce()}function H(ce,xe){let De;const[Oe,rt,vt]=q5(ce,xe);De=xh(Oe.reverse(),"beforeRouteLeave",ce,xe);for(const x of Oe)x.leaveGuards.forEach(O=>{De.push(Tr(O,ce,xe))});const S=j.bind(null,ce,xe);return De.push(S),Tt(De).then(()=>{De=[];for(const x of o.list())De.push(Tr(x,ce,xe));return De.push(S),Tt(De)}).then(()=>{De=xh(rt,"beforeRouteUpdate",ce,xe);for(const x of rt)x.updateGuards.forEach(O=>{De.push(Tr(O,ce,xe))});return De.push(S),Tt(De)}).then(()=>{De=[];for(const x of vt)if(x.beforeEnter)if(eo(x.beforeEnter))for(const O of x.beforeEnter)De.push(Tr(O,ce,xe));else De.push(Tr(x.beforeEnter,ce,xe));return De.push(S),Tt(De)}).then(()=>(ce.matched.forEach(x=>x.enterCallbacks={}),De=xh(vt,"beforeRouteEnter",ce,xe),De.push(S),Tt(De))).then(()=>{De=[];for(const x of r.list())De.push(Tr(x,ce,xe));return De.push(S),Tt(De)}).catch(x=>_o(x,8)?x:Promise.reject(x))}function te(ce,xe,De){l.list().forEach(Oe=>q(()=>Oe(ce,xe,De)))}function X(ce,xe,De,Oe,rt){const vt=w(ce,xe);if(vt)return vt;const S=xe===Oo,x=Sl?history.state:{};De&&(Oe||S?i.replace(ce.fullPath,na({scroll:S&&x&&x.scroll},rt)):i.push(ce.fullPath,rt)),d.value=ce,Qe(ce,xe,De,S),re()}let oe;function Te(){oe||(oe=i.listen((ce,xe,De)=>{if(!Ht.listening)return;const Oe=b(ce),rt=T(Oe);if(rt){N(na(rt,{replace:!0}),Oe).catch(nd);return}u=Oe;const vt=d.value;Sl&&a5(g1(vt.fullPath,De.delta),Om()),H(Oe,vt).catch(S=>_o(S,12)?S:_o(S,2)?(N(S.to,Oe).then(x=>{_o(x,20)&&!De.delta&&De.type===Jl.pop&&i.go(-1,!1)}).catch(nd),Promise.reject()):(De.delta&&i.go(-De.delta,!1),Pe(S,Oe,vt))).then(S=>{S=S||X(Oe,vt,!1),S&&(De.delta&&!_o(S,8)?i.go(-De.delta,!1):De.type===Jl.pop&&_o(S,20)&&i.go(-1,!1)),te(Oe,vt,S)}).catch(nd)}))}let Ae=Lc(),de=Lc(),Ce;function Pe(ce,xe,De){re(ce);const Oe=de.list();return Oe.length?Oe.forEach(rt=>rt(ce,xe,De)):console.error(ce),Promise.reject(ce)}function Ke(){return Ce&&d.value!==Oo?Promise.resolve():new Promise((ce,xe)=>{Ae.add([ce,xe])})}function re(ce){return Ce||(Ce=!ce,Te(),Ae.list().forEach(([xe,De])=>ce?De(ce):xe()),Ae.reset()),ce}function Qe(ce,xe,De,Oe){const{scrollBehavior:rt}=e;if(!Sl||!rt)return Promise.resolve();const vt=!De&&n5(g1(ce.fullPath,0))||(Oe||!De)&&history.state&&history.state.scroll||null;return ha().then(()=>rt(ce,xe,vt)).then(S=>S&&t5(S)).catch(S=>Pe(S,ce,xe))}const at=ce=>i.go(ce);let la;const Bt=new Set,Ht={currentRoute:d,listening:!0,addRoute:h,removeRoute:g,hasRoute:k,getRoutes:y,resolve:b,options:e,push:D,replace:E,go:at,back:()=>at(-1),forward:()=>at(1),beforeEach:o.add,beforeResolve:r.add,afterEach:l.add,onError:de.add,isReady:Ke,install(ce){const xe=this;ce.component("RouterLink",uz),ce.component("RouterView",_z),ce.config.globalProperties.$router=xe,Object.defineProperty(ce.config.globalProperties,"$route",{enumerable:!0,get:()=>L(d)}),Sl&&!la&&d.value===Oo&&(la=!0,D(i.location).catch(rt=>{}));const De={};for(const rt in Oo)Object.defineProperty(De,rt,{get:()=>d.value[rt],enumerable:!0});ce.provide(Ld,xe),ce.provide(Lm,Bv(De)),ce.provide(G_,d);const Oe=ce.unmount;Bt.add(ce),ce.unmount=function(){Bt.delete(ce),Bt.size<1&&(u=Oo,oe&&oe(),oe=null,d.value=Oo,la=!1,Ce=!1),Oe()}}};function Tt(ce){return ce.reduce((xe,De)=>xe.then(()=>q(De)),Promise.resolve())}return Ht}function q5(e,t){const a=[],n=[],i=[],o=Math.max(t.matched.length,e.matched.length);for(let r=0;rQl(u,l))?n.push(l):a.push(l));const d=e.matched[r];d&&(t.matched.find(u=>Ql(u,d))||i.push(d))}return[a,n,i]}function H5(){return bt(Ld)}function Zr(){return bt(Lm)}const W5=Object.freeze(Object.defineProperty({__proto__:null,get NavigationFailureType(){return vg},RouterLink:uz,RouterView:_z,START_LOCATION:Oo,createMemoryHistory:s5,createRouter:mz,createRouterMatcher:az,createWebHashHistory:l5,createWebHistory:fy,isNavigationFailure:_o,loadRouteLocation:$5,matchedRouteKey:$m,onBeforeRouteLeave:M5,onBeforeRouteUpdate:R5,parseQuery:cz,routeLocationKey:Lm,routerKey:Ld,routerViewLocationKey:G_,stringifyQuery:bg,useLink:wg,useRoute:Zr,useRouter:H5,viewDepthKey:kg},Symbol.toStringTag,{value:"Module"}));var K5=!1;/*! * pinia v2.1.7 * (c) 2023 Eduardo San Martin Morote * @license MIT - */let gy;const uc=e=>gy=e,G4=()=>sy()&&bt(Um)||gy,Um=Symbol();function xg(e){return e&&typeof e=="object"&&Object.prototype.toString.call(e)==="[object Object]"&&typeof e.toJSON!="function"}var $l;(function(e){e.direct="direct",e.patchObject="patch object",e.patchFunction="patch function"})($l||($l={}));const Q4=typeof window<"u";function J4(){const e=Rv(!0),t=e.run(()=>re({}));let a=[],n=[];const i=Fd({install(o){uc(i),i._a=o,o.provide(Um,i),o.config.globalProperties.$pinia=i,n.forEach(s=>a.push(s)),n=[]},use(o){return!this._a&&!Z4?n.push(o):a.push(o),this},_p:a,_a:null,_e:e,_s:new Map,state:t});return i}function X4(e,t){return()=>{}}const pE=()=>{};function ED(e,t,a,n=pE){e.push(t);const i=()=>{const o=e.indexOf(t);o>-1&&(e.splice(o,1),n())};return!a&&Dm()&&Ov(i),i}function kl(e,...t){e.slice().forEach(a=>{a(...t)})}const e8=e=>e();function Sg(e,t){e instanceof Map&&t instanceof Map&&t.forEach((a,n)=>e.set(n,a)),e instanceof Set&&t instanceof Set&&t.forEach(e.add,e);for(const a in t){if(!t.hasOwnProperty(a))continue;const n=t[a],i=e[a];xg(i)&&xg(n)&&e.hasOwnProperty(a)&&!ea(n)&&!Gi(n)?e[a]=Sg(i,n):e[a]=n}return e}const fE=Symbol();function t8(e){return Object.defineProperty(e,fE,{})}function a8(e){return!xg(e)||!e.hasOwnProperty(fE)}const{assign:Ps}=Object;function n8(e){return!!(ea(e)&&e.effect)}function i8(e,t,a,n){const{state:i,actions:o,getters:s}=t,l=a.state.value[e];let d;function u(){l||(a.state.value[e]=i?i():{});const _=Yv(a.state.value[e]);return Ps(_,o,Object.keys(s||{}).reduce((f,p)=>(f[p]=Fd(B(()=>{uc(a);const h=a._s.get(e);return s[p].call(h,h)})),f),{}))}return d=hE(e,u,t,a,n,!0),d}function hE(e,t,a={},n,i,o){let s;const l=Ps({actions:{}},a),d={deep:!0};let u,_,f=[],p=[],h;const g=n.state.value[e];!o&&!g&&(n.state.value[e]={}),re({});let y;function k(A){let U;u=_=!1,typeof A=="function"?(A(n.state.value[e]),U={type:$l.patchFunction,storeId:e,events:h}):(Sg(n.state.value[e],A),U={type:$l.patchObject,payload:A,storeId:e,events:h});const V=y=Symbol();ha().then(()=>{y===V&&(u=!0)}),_=!0,kl(f,U,n.state.value[e])}const b=o?function(){const{state:U}=a,V=U?U():{};this.$patch(ee=>{Ps(ee,V)})}:pE;function P(){s.stop(),f=[],p=[],n._s.delete(e)}function w(A,U){return function(){uc(n);const V=Array.from(arguments),ee=[],J=[];function ie(ce){ee.push(ce)}function Te(ce){J.push(ce)}kl(p,{args:V,name:A,store:E,after:ie,onError:Te});let ze;try{ze=U.apply(this&&this.$id===e?this:E,V)}catch(ce){throw kl(J,ce),ce}return ze instanceof Promise?ze.then(ce=>(kl(ee,ce),ce)).catch(ce=>(kl(J,ce),Promise.reject(ce))):(kl(ee,ze),ze)}}const x={_p:n,$id:e,$onAction:ED.bind(null,p),$patch:k,$reset:b,$subscribe(A,U={}){const V=ED(f,A,U.detached,()=>ee()),ee=s.run(()=>Yt(()=>n.state.value[e],J=>{(U.flush==="sync"?_:u)&&A({storeId:e,type:$l.direct,events:h},J)},Ps({},d,U)));return V},$dispose:P},E=ui(x);n._s.set(e,E);const j=(n._a&&n._a.runWithContext||e8)(()=>n._e.run(()=>(s=Rv()).run(t)));for(const A in j){const U=j[A];if(ea(U)&&!n8(U)||Gi(U))o||(g&&a8(U)&&(ea(U)?U.value=g[A]:Sg(U,g[A])),n.state.value[e][A]=U);else if(typeof U=="function"){const V=w(A,U);j[A]=V,l.actions[A]=U}}return Ps(E,j),Ps(et(E),j),Object.defineProperty(E,"$state",{get:()=>n.state.value[e],set:A=>{k(U=>{Ps(U,A)})}}),n._p.forEach(A=>{Ps(E,s.run(()=>A({store:E,app:n._a,pinia:n,options:l})))}),g&&o&&a.hydrate&&a.hydrate(E.$state,g),u=!0,_=!0,E}function un(e,t,a){let n,i;const o=typeof t=="function";typeof e=="string"?(n=e,i=o?a:t):(i=e,n=e.id);function s(l,d){const u=sy();return l=l||(u?bt(Um,null):null),l&&uc(l),l=gy,l._s.has(n)||(o?hE(n,t,i,l):i8(n,i,l)),l._s.get(n)}return s.$id=n,s}let gE="Store";function o8(e){gE=e}function s8(...e){return e.reduce((t,a)=>(t[a.$id+gE]=function(){return a(this.$pinia)},t),{})}function vE(e,t){return Array.isArray(t)?t.reduce((a,n)=>(a[n]=function(){return e(this.$pinia)[n]},a),{}):Object.keys(t).reduce((a,n)=>(a[n]=function(){const i=e(this.$pinia),o=t[n];return typeof o=="function"?o.call(this,i):i[o]},a),{})}const r8=vE;function l8(e,t){return Array.isArray(t)?t.reduce((a,n)=>(a[n]=function(...i){return e(this.$pinia)[n](...i)},a),{}):Object.keys(t).reduce((a,n)=>(a[n]=function(...i){return e(this.$pinia)[t[n]](...i)},a),{})}function c8(e,t){return Array.isArray(t)?t.reduce((a,n)=>(a[n]={get(){return e(this.$pinia)[n]},set(i){return e(this.$pinia)[n]=i}},a),{}):Object.keys(t).reduce((a,n)=>(a[n]={get(){return e(this.$pinia)[t[n]]},set(i){return e(this.$pinia)[t[n]]=i}},a),{})}function d8(e){{e=et(e);const t={};for(const a in e){const n=e[a];(ea(n)||Gi(n))&&(t[a]=E1(e,a))}return t}}const u8=function(e){e.mixin({beforeCreate(){const t=this.$options;if(t.pinia){const a=t.pinia;if(!this._provided){const n={};Object.defineProperty(this,"_provided",{get:()=>n,set:i=>Object.assign(n,i)})}this._provided[Um]=a,this.$pinia||(this.$pinia=a),a._a=this,Q4&&uc(a)}else!this.$pinia&&t.parent&&t.parent.$pinia&&(this.$pinia=t.parent.$pinia)},destroyed(){delete this._pStores}})},_8=Object.freeze(Object.defineProperty({__proto__:null,get MutationType(){return $l},PiniaVuePlugin:u8,acceptHMRUpdate:X4,createPinia:J4,defineStore:un,getActivePinia:G4,mapActions:l8,mapGetters:r8,mapState:vE,mapStores:s8,mapWritableState:c8,setActivePinia:uc,setMapStoreSuffix:o8,skipHydrate:t8,storeToRefs:d8},Symbol.toStringTag,{value:"Module"})),gt=(e=!1)=>(e?window.pinia.defineStore:un)({id:"notification",state:()=>({active:!1,autoHide:!0,notifications:[]}),actions:{showNotification(a){this.notifications.push({...a,id:(Math.random().toString(36)+Date.now().toString(36)).substr(2)})},hideNotification(a){this.notifications=this.notifications.filter(n=>n.id!=a.id)}}})(),m8=(e=!1)=>(e?window.pinia.defineStore:un)({id:"auth",state:()=>({status:"",loginData:{email:"",password:"",remember:""}}),actions:{login(a){return new Promise((n,i)=>{ve.get("/sanctum/csrf-cookie").then(o=>{o&&ve.post("/login",a).then(s=>{n(s),setTimeout(()=>{this.loginData.email="",this.loginData.password=""},1e3)}).catch(s=>{be(s),i(s)})})})},logout(){return new Promise((a,n)=>{ve.post("/auth/logout").then(i=>{gt().showNotification({type:"success",message:"Logged out successfully."}),window.router.push("/login"),a(i)}).catch(i=>{be(i),window.router.push("/"),n(i)})})}}})(),be=e=>{var n;const t=m8(),a=gt();if(!e.response)a.showNotification({type:"error",message:"Please check your internet connection or wait until servers are back online."});else if(e.response.data&&(e.response.statusText==="Unauthorized"||e.response.data===" Unauthorized.")){const i=e.response.data.message?e.response.data.message:"Unauthorized";At(i),t.logout()}else if(e.response.data.errors){const i=JSON.parse(JSON.stringify(e.response.data.errors));for(const o in i)d_(i[o][0])}else e.response.data.error?typeof e.response.data.error=="boolean"?d_((n=e.response.data)==null?void 0:n.message):d_(e.response.data.error):d_(e.response.data.message)},d_=e=>{switch(e){case"These credentials do not match our records.":At("errors.login_invalid_credentials");break;case"invalid_key":At("errors.invalid_provider_key");break;case"This feature is available on Starter plan and onwards!":At("errors.starter_plan");break;case"taxes_attached":At("settings.tax_types.already_in_use");break;case"expense_attached":At("settings.expense_category.already_in_use");break;case"payments_attached":At("settings.payment_modes.payments_attached");break;case"expenses_attached":At("settings.payment_modes.expenses_attached");break;case"role_attached_to_users":At("settings.roles.already_in_use");break;case"items_attached":At("settings.customization.items.already_in_use");break;case"payment_attached_message":At("invoices.payment_attached_message");break;case"The email has already been taken.":At("validation.email_already_taken");break;case"Relation estimateItems exists.":At("items.item_attached_message");break;case"Relation invoiceItems exists.":At("items.item_attached_message");break;case"Relation taxes exists.":At("settings.tax_types.already_in_use");break;case"Relation taxes exists.":At("settings.tax_types.already_in_use");break;case"Relation payments exists.":At("errors.payment_attached");break;case"The estimate number has already been taken.":At("errors.estimate_number_used");break;case"The payment number has already been taken.":At("errors.estimate_number_used");break;case"The invoice number has already been taken.":At("errors.invoice_number_used");break;case"The name has already been taken.":At("errors.name_already_taken");break;case"total_invoice_amount_must_be_more_than_paid_amount":At("invoices.invalid_due_amount_message");break;case"you_cannot_edit_currency":At("customers.edit_currency_not_allowed");break;case"receipt_does_not_exist":At("errors.receipt_does_not_exist");break;case"customer_cannot_be_changed_after_payment_is_added":At("errors.customer_cannot_be_changed_after_payment_is_added");break;case"invalid_credentials":At("errors.invalid_credentials");break;case"not_allowed":At("errors.not_allowed");break;case"invalid_key":At("errors.invalid_key");break;case"invalid_state":At("errors.invalid_state");break;case"invalid_city":At("errors.invalid_city");break;case"invalid_postal_code":At("errors.invalid_postal_code");break;case"invalid_format":At("errors.invalid_format");break;case"api_error":At("errors.api_error");break;case"feature_not_enabled":At("errors.feature_not_enabled");break;case"request_limit_met":At("errors.request_limit_met");break;case"address_incomplete":At("errors.address_incomplete");break;case"invalid_address":At("errors.invalid_address");break;case"Email could not be sent to this email address.":At("errors.email_could_not_be_sent");break;default:At(e,!1);break}},At=(e,t=!0)=>{const{global:a}=window.i18n;gt().showNotification({type:"error",message:t?a.t(e):e})},Gr=(e=!1)=>{const t=e?window.pinia.defineStore:un,{global:a}=window.i18n;return t({id:"user",state:()=>({currentUser:null,currentAbilities:[],currentUserSettings:{},userForm:{name:"",email:"",password:"",confirm_password:"",language:""}}),getters:{currentAbilitiesCount:n=>n.currentAbilities.length},actions:{updateCurrentUser(n){return new Promise((i,o)=>{ve.put("/api/v1/me",n).then(s=>{this.currentUser=s.data.data,Object.assign(this.userForm,s.data.data),gt().showNotification({type:"success",message:a.t("settings.account_settings.updated_message")}),i(s)}).catch(s=>{be(s),o(s)})})},fetchCurrentUser(n){return new Promise((i,o)=>{ve.get("/api/v1/me",n).then(s=>{this.currentUser=s.data.data,this.userForm=s.data.data,i(s)}).catch(s=>{be(s),o(s)})})},uploadAvatar(n){return new Promise((i,o)=>{ve.post("/api/v1/me/upload-avatar",n).then(s=>{this.currentUser.avatar=s.data.data.avatar,i(s)}).catch(s=>{be(s),o(s)})})},fetchUserSettings(n){return new Promise((i,o)=>{ve.get("/api/v1/me/settings",{params:{settings:n}}).then(s=>{i(s)}).catch(s=>{be(s),o(s)})})},updateUserSettings(n){return new Promise((i,o)=>{ve.put("/api/v1/me/settings",n).then(s=>{n.settings.language&&(this.currentUserSettings.language=n.settings.language,a.locale=n.settings.language),n.settings.default_estimate_template&&(this.currentUserSettings.default_estimate_template=n.settings.default_estimate_template),n.settings.default_invoice_template&&(this.currentUserSettings.default_invoice_template=n.settings.default_invoice_template),i(s)}).catch(s=>{be(s),o(s)})})},hasAbilities(n){return!!this.currentAbilities.find(i=>i.name==="*"?!0:typeof n=="string"?i.name===n:!!n.find(o=>i.name===o))},hasAllAbilities(n){let i=!0;return this.currentAbilities.filter(o=>{!!n.find(l=>o.name===l)||(i=!1)}),i}}})()},es=(e=!1)=>{const t=e?window.pinia.defineStore:un,{global:a}=window.i18n;return t({id:"company",state:()=>({companies:[],selectedCompany:null,selectedCompanySettings:{},selectedCompanyCurrency:null}),actions:{setSelectedCompany(n){window.Ls.set("selectedCompany",n.id),this.selectedCompany=n},fetchBasicMailConfig(){return new Promise((n,i)=>{ve.get("/api/v1/company/mail/config").then(o=>{n(o)}).catch(o=>{be(o),i(o)})})},updateCompany(n){return new Promise((i,o)=>{ve.put("/api/v1/company",n).then(s=>{gt().showNotification({type:"success",message:a.t("settings.company_info.updated_message")}),this.selectedCompany=s.data.data,i(s)}).catch(s=>{be(s),o(s)})})},updateCompanyLogo(n){return new Promise((i,o)=>{ve.post("/api/v1/company/upload-logo",n).then(s=>{i(s)}).catch(s=>{be(s),o(s)})})},addNewCompany(n){return new Promise((i,o)=>{ve.post("/api/v1/companies",n).then(s=>{gt().showNotification({type:"success",message:a.t("company_switcher.created_message")}),i(s)}).catch(s=>{be(s),o(s)})})},fetchCompany(n){return new Promise((i,o)=>{ve.get("/api/v1/current-company",n).then(s=>{Object.assign(this.companyForm,s.data.data.address),this.companyForm.name=s.data.data.name,i(s)}).catch(s=>{be(s),o(s)})})},fetchUserCompanies(){return new Promise((n,i)=>{ve.get("/api/v1/companies").then(o=>{n(o)}).catch(o=>{be(o),i(o)})})},fetchCompanySettings(n){return new Promise((i,o)=>{ve.get("/api/v1/company/settings",{params:{settings:n}}).then(s=>{i(s)}).catch(s=>{be(s),o(s)})})},updateCompanySettings({data:n,message:i}){return new Promise((o,s)=>{ve.post("/api/v1/company/settings",n).then(l=>{Object.assign(this.selectedCompanySettings,n.settings),i&>().showNotification({type:"success",message:a.t(i)}),o(l)}).catch(l=>{be(l),s(l)})})},deleteCompany(n){return new Promise((i,o)=>{ve.post("/api/v1/companies/delete",n).then(s=>{i(s)}).catch(s=>{be(s),o(s)})})},setDefaultCurrency(n){this.defaultCurrency=n.currency}}})()},p8=(e=!1)=>{const t=e?window.pinia.defineStore:un,{global:a}=window.i18n;return t({id:"modules",state:()=>({currentModule:{},modules:[],apiToken:null,currentUser:{api_token:null},enableModules:[]}),getters:{salesTaxUSEnabled:n=>n.enableModules.includes("SalesTaxUS")},actions:{fetchModules(n){return new Promise((i,o)=>{ve.get("/api/v1/modules").then(s=>{this.modules=s.data.data,i(s)}).catch(s=>{be(s),o(s)})})},fetchModule(n){return new Promise((i,o)=>{ve.get(`/api/v1/modules/${n}`).then(s=>{s.data.error==="invalid_token"?(this.currentModule={},this.modules=[],this.apiToken=null,this.currentUser.api_token=null,window.router.push("/admin/modules")):this.currentModule=s.data,i(s)}).catch(s=>{be(s),o(s)})})},checkApiToken(n){return new Promise((i,o)=>{ve.get(`/api/v1/modules/check?api_token=${n}`).then(s=>{const l=gt();s.data.error==="invalid_token"&&l.showNotification({type:"error",message:a.t("modules.invalid_api_token")}),i(s)}).catch(s=>{be(s),o(s)})})},disableModule(n){return new Promise((i,o)=>{ve.post(`/api/v1/modules/${n}/disable`).then(s=>{const l=gt();s.data.success&&l.showNotification({type:"success",message:a.t("modules.module_disabled")}),i(s)}).catch(s=>{be(s),o(s)})})},enableModule(n){return new Promise((i,o)=>{ve.post(`/api/v1/modules/${n}/enable`).then(s=>{const l=gt();s.data.success&&l.showNotification({type:"success",message:a.t("modules.module_enabled")}),i(s)}).catch(s=>{be(s),o(s)})})}}})()};var Q_={exports:{}};/** + */let gy;const uc=e=>gy=e,Y5=()=>ry()&&bt(Bm)||gy,Bm=Symbol();function xg(e){return e&&typeof e=="object"&&Object.prototype.toString.call(e)==="[object Object]"&&typeof e.toJSON!="function"}var $l;(function(e){e.direct="direct",e.patchObject="patch object",e.patchFunction="patch function"})($l||($l={}));const Z5=typeof window<"u";function G5(){const e=Mv(!0),t=e.run(()=>le({}));let a=[],n=[];const i=Fd({install(o){uc(i),i._a=o,o.provide(Bm,i),o.config.globalProperties.$pinia=i,n.forEach(r=>a.push(r)),n=[]},use(o){return!this._a&&!K5?n.push(o):a.push(o),this},_p:a,_a:null,_e:e,_s:new Map,state:t});return i}function Q5(e,t){return()=>{}}const pz=()=>{};function P1(e,t,a,n=pz){e.push(t);const i=()=>{const o=e.indexOf(t);o>-1&&(e.splice(o,1),n())};return!a&&wm()&&Rv(i),i}function kl(e,...t){e.slice().forEach(a=>{a(...t)})}const J5=e=>e();function Dg(e,t){e instanceof Map&&t instanceof Map&&t.forEach((a,n)=>e.set(n,a)),e instanceof Set&&t instanceof Set&&t.forEach(e.add,e);for(const a in t){if(!t.hasOwnProperty(a))continue;const n=t[a],i=e[a];xg(i)&&xg(n)&&e.hasOwnProperty(a)&&!ea(n)&&!Gi(n)?e[a]=Dg(i,n):e[a]=n}return e}const fz=Symbol();function X5(e){return Object.defineProperty(e,fz,{})}function e8(e){return!xg(e)||!e.hasOwnProperty(fz)}const{assign:zr}=Object;function t8(e){return!!(ea(e)&&e.effect)}function a8(e,t,a,n){const{state:i,actions:o,getters:r}=t,l=a.state.value[e];let d;function u(){l||(a.state.value[e]=i?i():{});const _=Yv(a.state.value[e]);return zr(_,o,Object.keys(r||{}).reduce((f,p)=>(f[p]=Fd(V(()=>{uc(a);const h=a._s.get(e);return r[p].call(h,h)})),f),{}))}return d=hz(e,u,t,a,n,!0),d}function hz(e,t,a={},n,i,o){let r;const l=zr({actions:{}},a),d={deep:!0};let u,_,f=[],p=[],h;const g=n.state.value[e];!o&&!g&&(n.state.value[e]={}),le({});let y;function k(j){let q;u=_=!1,typeof j=="function"?(j(n.state.value[e]),q={type:$l.patchFunction,storeId:e,events:h}):(Dg(n.state.value[e],j),q={type:$l.patchObject,payload:j,storeId:e,events:h});const H=y=Symbol();ha().then(()=>{y===H&&(u=!0)}),_=!0,kl(f,q,n.state.value[e])}const b=o?function(){const{state:q}=a,H=q?q():{};this.$patch(te=>{zr(te,H)})}:pz;function z(){r.stop(),f=[],p=[],n._s.delete(e)}function w(j,q){return function(){uc(n);const H=Array.from(arguments),te=[],X=[];function oe(de){te.push(de)}function Te(de){X.push(de)}kl(p,{args:H,name:j,store:E,after:oe,onError:Te});let Ae;try{Ae=q.apply(this&&this.$id===e?this:E,H)}catch(de){throw kl(X,de),de}return Ae instanceof Promise?Ae.then(de=>(kl(te,de),de)).catch(de=>(kl(X,de),Promise.reject(de))):(kl(te,Ae),Ae)}}const D={_p:n,$id:e,$onAction:P1.bind(null,p),$patch:k,$reset:b,$subscribe(j,q={}){const H=P1(f,j,q.detached,()=>te()),te=r.run(()=>Yt(()=>n.state.value[e],X=>{(q.flush==="sync"?_:u)&&j({storeId:e,type:$l.direct,events:h},X)},zr({},d,q)));return H},$dispose:z},E=ui(D);n._s.set(e,E);const N=(n._a&&n._a.runWithContext||J5)(()=>n._e.run(()=>(r=Mv()).run(t)));for(const j in N){const q=N[j];if(ea(q)&&!t8(q)||Gi(q))o||(g&&e8(q)&&(ea(q)?q.value=g[j]:Dg(q,g[j])),n.state.value[e][j]=q);else if(typeof q=="function"){const H=w(j,q);N[j]=H,l.actions[j]=q}}return zr(E,N),zr(et(E),N),Object.defineProperty(E,"$state",{get:()=>n.state.value[e],set:j=>{k(q=>{zr(q,j)})}}),n._p.forEach(j=>{zr(E,r.run(()=>j({store:E,app:n._a,pinia:n,options:l})))}),g&&o&&a.hydrate&&a.hydrate(E.$state,g),u=!0,_=!0,E}function un(e,t,a){let n,i;const o=typeof t=="function";typeof e=="string"?(n=e,i=o?a:t):(i=e,n=e.id);function r(l,d){const u=ry();return l=l||(u?bt(Bm,null):null),l&&uc(l),l=gy,l._s.has(n)||(o?hz(n,t,i,l):a8(n,i,l)),l._s.get(n)}return r.$id=n,r}let gz="Store";function n8(e){gz=e}function i8(...e){return e.reduce((t,a)=>(t[a.$id+gz]=function(){return a(this.$pinia)},t),{})}function vz(e,t){return Array.isArray(t)?t.reduce((a,n)=>(a[n]=function(){return e(this.$pinia)[n]},a),{}):Object.keys(t).reduce((a,n)=>(a[n]=function(){const i=e(this.$pinia),o=t[n];return typeof o=="function"?o.call(this,i):i[o]},a),{})}const o8=vz;function r8(e,t){return Array.isArray(t)?t.reduce((a,n)=>(a[n]=function(...i){return e(this.$pinia)[n](...i)},a),{}):Object.keys(t).reduce((a,n)=>(a[n]=function(...i){return e(this.$pinia)[t[n]](...i)},a),{})}function s8(e,t){return Array.isArray(t)?t.reduce((a,n)=>(a[n]={get(){return e(this.$pinia)[n]},set(i){return e(this.$pinia)[n]=i}},a),{}):Object.keys(t).reduce((a,n)=>(a[n]={get(){return e(this.$pinia)[t[n]]},set(i){return e(this.$pinia)[t[n]]=i}},a),{})}function l8(e){{e=et(e);const t={};for(const a in e){const n=e[a];(ea(n)||Gi(n))&&(t[a]=PD(e,a))}return t}}const c8=function(e){e.mixin({beforeCreate(){const t=this.$options;if(t.pinia){const a=t.pinia;if(!this._provided){const n={};Object.defineProperty(this,"_provided",{get:()=>n,set:i=>Object.assign(n,i)})}this._provided[Bm]=a,this.$pinia||(this.$pinia=a),a._a=this,Z5&&uc(a)}else!this.$pinia&&t.parent&&t.parent.$pinia&&(this.$pinia=t.parent.$pinia)},destroyed(){delete this._pStores}})},d8=Object.freeze(Object.defineProperty({__proto__:null,get MutationType(){return $l},PiniaVuePlugin:c8,acceptHMRUpdate:Q5,createPinia:G5,defineStore:un,getActivePinia:Y5,mapActions:r8,mapGetters:o8,mapState:vz,mapStores:i8,mapWritableState:s8,setActivePinia:uc,setMapStoreSuffix:n8,skipHydrate:X5,storeToRefs:l8},Symbol.toStringTag,{value:"Module"})),gt=(e=!1)=>(e?window.pinia.defineStore:un)({id:"notification",state:()=>({active:!1,autoHide:!0,notifications:[]}),actions:{showNotification(a){this.notifications.push({...a,id:(Math.random().toString(36)+Date.now().toString(36)).substr(2)})},hideNotification(a){this.notifications=this.notifications.filter(n=>n.id!=a.id)}}})(),u8=(e=!1)=>(e?window.pinia.defineStore:un)({id:"auth",state:()=>({status:"",loginData:{email:"",password:"",remember:""}}),actions:{login(a){return new Promise((n,i)=>{ye.get("/sanctum/csrf-cookie").then(o=>{o&&ye.post("/login",a).then(r=>{n(r),setTimeout(()=>{this.loginData.email="",this.loginData.password=""},1e3)}).catch(r=>{ke(r),i(r)})})})},logout(){return new Promise((a,n)=>{ye.post("/auth/logout").then(i=>{gt().showNotification({type:"success",message:"Logged out successfully."}),window.router.push("/login"),a(i)}).catch(i=>{ke(i),window.router.push("/"),n(i)})})}}})(),ke=e=>{var n;const t=u8(),a=gt();if(!e.response)a.showNotification({type:"error",message:"Please check your internet connection or wait until servers are back online."});else if(e.response.data&&(e.response.statusText==="Unauthorized"||e.response.data===" Unauthorized.")){const i=e.response.data.message?e.response.data.message:"Unauthorized";At(i),t.logout()}else if(e.response.data.errors){const i=JSON.parse(JSON.stringify(e.response.data.errors));for(const o in i)d_(i[o][0])}else e.response.data.error?typeof e.response.data.error=="boolean"?d_((n=e.response.data)==null?void 0:n.message):d_(e.response.data.error):d_(e.response.data.message)},d_=e=>{switch(e){case"These credentials do not match our records.":At("errors.login_invalid_credentials");break;case"invalid_key":At("errors.invalid_provider_key");break;case"This feature is available on Starter plan and onwards!":At("errors.starter_plan");break;case"taxes_attached":At("settings.tax_types.already_in_use");break;case"expense_attached":At("settings.expense_category.already_in_use");break;case"payments_attached":At("settings.payment_modes.payments_attached");break;case"expenses_attached":At("settings.payment_modes.expenses_attached");break;case"role_attached_to_users":At("settings.roles.already_in_use");break;case"items_attached":At("settings.customization.items.already_in_use");break;case"payment_attached_message":At("invoices.payment_attached_message");break;case"The email has already been taken.":At("validation.email_already_taken");break;case"Relation estimateItems exists.":At("items.item_attached_message");break;case"Relation invoiceItems exists.":At("items.item_attached_message");break;case"Relation taxes exists.":At("settings.tax_types.already_in_use");break;case"Relation taxes exists.":At("settings.tax_types.already_in_use");break;case"Relation payments exists.":At("errors.payment_attached");break;case"The estimate number has already been taken.":At("errors.estimate_number_used");break;case"The payment number has already been taken.":At("errors.estimate_number_used");break;case"The invoice number has already been taken.":At("errors.invoice_number_used");break;case"The name has already been taken.":At("errors.name_already_taken");break;case"total_invoice_amount_must_be_more_than_paid_amount":At("invoices.invalid_due_amount_message");break;case"you_cannot_edit_currency":At("customers.edit_currency_not_allowed");break;case"receipt_does_not_exist":At("errors.receipt_does_not_exist");break;case"customer_cannot_be_changed_after_payment_is_added":At("errors.customer_cannot_be_changed_after_payment_is_added");break;case"invalid_credentials":At("errors.invalid_credentials");break;case"not_allowed":At("errors.not_allowed");break;case"invalid_key":At("errors.invalid_key");break;case"invalid_state":At("errors.invalid_state");break;case"invalid_city":At("errors.invalid_city");break;case"invalid_postal_code":At("errors.invalid_postal_code");break;case"invalid_format":At("errors.invalid_format");break;case"api_error":At("errors.api_error");break;case"feature_not_enabled":At("errors.feature_not_enabled");break;case"request_limit_met":At("errors.request_limit_met");break;case"address_incomplete":At("errors.address_incomplete");break;case"invalid_address":At("errors.invalid_address");break;case"Email could not be sent to this email address.":At("errors.email_could_not_be_sent");break;default:At(e,!1);break}},At=(e,t=!0)=>{const{global:a}=window.i18n;gt().showNotification({type:"error",message:t?a.t(e):e})},Gs=(e=!1)=>{const t=e?window.pinia.defineStore:un,{global:a}=window.i18n;return t({id:"user",state:()=>({currentUser:null,currentAbilities:[],currentUserSettings:{},userForm:{name:"",email:"",password:"",confirm_password:"",language:""}}),getters:{currentAbilitiesCount:n=>n.currentAbilities.length},actions:{updateCurrentUser(n){return new Promise((i,o)=>{ye.put("/api/v1/me",n).then(r=>{this.currentUser=r.data.data,Object.assign(this.userForm,r.data.data),gt().showNotification({type:"success",message:a.t("settings.account_settings.updated_message")}),i(r)}).catch(r=>{ke(r),o(r)})})},fetchCurrentUser(n){return new Promise((i,o)=>{ye.get("/api/v1/me",n).then(r=>{this.currentUser=r.data.data,this.userForm=r.data.data,i(r)}).catch(r=>{ke(r),o(r)})})},uploadAvatar(n){return new Promise((i,o)=>{ye.post("/api/v1/me/upload-avatar",n).then(r=>{this.currentUser.avatar=r.data.data.avatar,i(r)}).catch(r=>{ke(r),o(r)})})},fetchUserSettings(n){return new Promise((i,o)=>{ye.get("/api/v1/me/settings",{params:{settings:n}}).then(r=>{i(r)}).catch(r=>{ke(r),o(r)})})},updateUserSettings(n){return new Promise((i,o)=>{ye.put("/api/v1/me/settings",n).then(r=>{n.settings.language&&(this.currentUserSettings.language=n.settings.language,a.locale=n.settings.language),n.settings.default_estimate_template&&(this.currentUserSettings.default_estimate_template=n.settings.default_estimate_template),n.settings.default_invoice_template&&(this.currentUserSettings.default_invoice_template=n.settings.default_invoice_template),i(r)}).catch(r=>{ke(r),o(r)})})},hasAbilities(n){return!!this.currentAbilities.find(i=>i.name==="*"?!0:typeof n=="string"?i.name===n:!!n.find(o=>i.name===o))},hasAllAbilities(n){let i=!0;return this.currentAbilities.filter(o=>{!!n.find(l=>o.name===l)||(i=!1)}),i}}})()},er=(e=!1)=>{const t=e?window.pinia.defineStore:un,{global:a}=window.i18n;return t({id:"company",state:()=>({companies:[],selectedCompany:null,selectedCompanySettings:{},selectedCompanyCurrency:null}),actions:{setSelectedCompany(n){window.Ls.set("selectedCompany",n.id),this.selectedCompany=n},fetchBasicMailConfig(){return new Promise((n,i)=>{ye.get("/api/v1/company/mail/config").then(o=>{n(o)}).catch(o=>{ke(o),i(o)})})},updateCompany(n){return new Promise((i,o)=>{ye.put("/api/v1/company",n).then(r=>{gt().showNotification({type:"success",message:a.t("settings.company_info.updated_message")}),this.selectedCompany=r.data.data,i(r)}).catch(r=>{ke(r),o(r)})})},updateCompanyLogo(n){return new Promise((i,o)=>{ye.post("/api/v1/company/upload-logo",n).then(r=>{i(r)}).catch(r=>{ke(r),o(r)})})},addNewCompany(n){return new Promise((i,o)=>{ye.post("/api/v1/companies",n).then(r=>{gt().showNotification({type:"success",message:a.t("company_switcher.created_message")}),i(r)}).catch(r=>{ke(r),o(r)})})},fetchCompany(n){return new Promise((i,o)=>{ye.get("/api/v1/current-company",n).then(r=>{Object.assign(this.companyForm,r.data.data.address),this.companyForm.name=r.data.data.name,i(r)}).catch(r=>{ke(r),o(r)})})},fetchUserCompanies(){return new Promise((n,i)=>{ye.get("/api/v1/companies").then(o=>{n(o)}).catch(o=>{ke(o),i(o)})})},fetchCompanySettings(n){return new Promise((i,o)=>{ye.get("/api/v1/company/settings",{params:{settings:n}}).then(r=>{i(r)}).catch(r=>{ke(r),o(r)})})},updateCompanySettings({data:n,message:i}){return new Promise((o,r)=>{ye.post("/api/v1/company/settings",n).then(l=>{Object.assign(this.selectedCompanySettings,n.settings),i&>().showNotification({type:"success",message:a.t(i)}),o(l)}).catch(l=>{ke(l),r(l)})})},deleteCompany(n){return new Promise((i,o)=>{ye.post("/api/v1/companies/delete",n).then(r=>{i(r)}).catch(r=>{ke(r),o(r)})})},setDefaultCurrency(n){this.defaultCurrency=n.currency}}})()},_8=(e=!1)=>{const t=e?window.pinia.defineStore:un,{global:a}=window.i18n;return t({id:"modules",state:()=>({currentModule:{},modules:[],apiToken:null,currentUser:{api_token:null},enableModules:[]}),getters:{salesTaxUSEnabled:n=>n.enableModules.includes("SalesTaxUS")},actions:{fetchModules(n){return new Promise((i,o)=>{ye.get("/api/v1/modules").then(r=>{this.modules=r.data.data,i(r)}).catch(r=>{ke(r),o(r)})})},fetchModule(n){return new Promise((i,o)=>{ye.get(`/api/v1/modules/${n}`).then(r=>{r.data.error==="invalid_token"?(this.currentModule={},this.modules=[],this.apiToken=null,this.currentUser.api_token=null,window.router.push("/admin/modules")):this.currentModule=r.data,i(r)}).catch(r=>{ke(r),o(r)})})},checkApiToken(n){return new Promise((i,o)=>{ye.get(`/api/v1/modules/check?api_token=${n}`).then(r=>{const l=gt();r.data.error==="invalid_token"&&l.showNotification({type:"error",message:a.t("modules.invalid_api_token")}),i(r)}).catch(r=>{ke(r),o(r)})})},disableModule(n){return new Promise((i,o)=>{ye.post(`/api/v1/modules/${n}/disable`).then(r=>{const l=gt();r.data.success&&l.showNotification({type:"success",message:a.t("modules.module_disabled")}),i(r)}).catch(r=>{ke(r),o(r)})})},enableModule(n){return new Promise((i,o)=>{ye.post(`/api/v1/modules/${n}/enable`).then(r=>{const l=gt();r.data.success&&l.showNotification({type:"success",message:a.t("modules.module_enabled")}),i(r)}).catch(r=>{ke(r),o(r)})})}}})()};var Q_={exports:{}};/** * @license * Lodash * Copyright OpenJS Foundation and other contributors * Released under MIT license * Based on Underscore.js 1.8.3 * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - */Q_.exports;(function(e,t){(function(){var a,n="4.17.21",i=200,o="Unsupported core-js use. Try https://npms.io/search?q=ponyfill.",s="Expected a function",l="Invalid `variable` option passed into `_.template`",d="__lodash_hash_undefined__",u=500,_="__lodash_placeholder__",f=1,p=2,h=4,g=1,y=2,k=1,b=2,P=4,w=8,x=16,E=32,C=64,j=128,A=256,U=512,V=30,ee="...",J=800,ie=16,Te=1,ze=2,ce=3,Ae=1/0,Pe=9007199254740991,He=17976931348623157e292,oe=NaN,Ge=4294967295,at=Ge-1,la=Ge>>>1,Bt=[["ary",j],["bind",k],["bindKey",b],["curry",w],["curryRight",x],["flip",U],["partial",E],["partialRight",C],["rearg",A]],Wt="[object Arguments]",jt="[object Array]",le="[object AsyncFunction]",we="[object Boolean]",De="[object Date]",Oe="[object DOMException]",st="[object Error]",vt="[object Function]",S="[object GeneratorFunction]",D="[object Map]",F="[object Number]",q="[object Null]",H="[object Object]",ue="[object Promise]",xe="[object Proxy]",he="[object RegExp]",ke="[object Set]",ge="[object String]",Ne="[object Symbol]",Ze="[object Undefined]",Ee="[object WeakMap]",Q="[object WeakSet]",ne="[object ArrayBuffer]",Me="[object DataView]",nt="[object Float32Array]",Ht="[object Float64Array]",Ea="[object Int8Array]",Ra="[object Int16Array]",nn="[object Int32Array]",qn="[object Uint8Array]",Ut="[object Uint8ClampedArray]",Ta="[object Uint16Array]",Ha="[object Uint32Array]",al=/\b__p \+= '';/g,nl=/\b(__p \+=) '' \+/g,bc=/(__e\(.*?\)|\b__t\)) \+\n'';/g,pi=/&(?:amp|lt|gt|quot|#39);/g,lu=/[&<>"']/g,Tp=RegExp(pi.source),I=RegExp(lu.source),R=/<%-([\s\S]+?)%>/g,K=/<%([\s\S]+?)%>/g,se=/<%=([\s\S]+?)%>/g,Ce=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,$e=/^\w*$/,ft=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Ke=/[\\^$.*+?()[\]{}|]/g,St=RegExp(Ke.source),We=/^\s+/,ut=/\s/,ta=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,fi=/\{\n\/\* \[wrapped with (.+)\] \*/,_n=/,? & /,ar=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,cs=/[()=,{}\[\]\/\s]/,jp=/\\(\\)?/g,kc=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,cu=/\w*$/,Np=/^[-+]0x[0-9a-f]+$/i,Ip=/^0b[01]+$/i,Fp=/^\[object .+?Constructor\]$/,Rp=/^0o[0-7]+$/i,Op=/^(?:0|[1-9]\d*)$/,Mp=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,il=/($^)/,ST=/['\n\r\u2028\u2029\\]/g,du="\\ud800-\\udfff",PT="\\u0300-\\u036f",ET="\\ufe20-\\ufe2f",zT="\\u20d0-\\u20ff",Nb=PT+ET+zT,Ib="\\u2700-\\u27bf",Fb="a-z\\xdf-\\xf6\\xf8-\\xff",AT="\\xac\\xb1\\xd7\\xf7",CT="\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf",TT="\\u2000-\\u206f",jT=" \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",Rb="A-Z\\xc0-\\xd6\\xd8-\\xde",Ob="\\ufe0e\\ufe0f",Mb=AT+CT+TT+jT,$p="['’]",NT="["+du+"]",$b="["+Mb+"]",uu="["+Nb+"]",Lb="\\d+",IT="["+Ib+"]",Bb="["+Fb+"]",Ub="[^"+du+Mb+Lb+Ib+Fb+Rb+"]",Lp="\\ud83c[\\udffb-\\udfff]",FT="(?:"+uu+"|"+Lp+")",Vb="[^"+du+"]",Bp="(?:\\ud83c[\\udde6-\\uddff]){2}",Up="[\\ud800-\\udbff][\\udc00-\\udfff]",ol="["+Rb+"]",qb="\\u200d",Wb="(?:"+Bb+"|"+Ub+")",RT="(?:"+ol+"|"+Ub+")",Hb="(?:"+$p+"(?:d|ll|m|re|s|t|ve))?",Kb="(?:"+$p+"(?:D|LL|M|RE|S|T|VE))?",Yb=FT+"?",Zb="["+Ob+"]?",OT="(?:"+qb+"(?:"+[Vb,Bp,Up].join("|")+")"+Zb+Yb+")*",MT="\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",$T="\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])",Gb=Zb+Yb+OT,LT="(?:"+[IT,Bp,Up].join("|")+")"+Gb,BT="(?:"+[Vb+uu+"?",uu,Bp,Up,NT].join("|")+")",UT=RegExp($p,"g"),VT=RegExp(uu,"g"),Vp=RegExp(Lp+"(?="+Lp+")|"+BT+Gb,"g"),qT=RegExp([ol+"?"+Bb+"+"+Hb+"(?="+[$b,ol,"$"].join("|")+")",RT+"+"+Kb+"(?="+[$b,ol+Wb,"$"].join("|")+")",ol+"?"+Wb+"+"+Hb,ol+"+"+Kb,$T,MT,Lb,LT].join("|"),"g"),WT=RegExp("["+qb+du+Nb+Ob+"]"),HT=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,KT=["Array","Buffer","DataView","Date","Error","Float32Array","Float64Array","Function","Int8Array","Int16Array","Int32Array","Map","Math","Object","Promise","RegExp","Set","String","Symbol","TypeError","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap","_","clearTimeout","isFinite","parseInt","setTimeout"],YT=-1,pa={};pa[nt]=pa[Ht]=pa[Ea]=pa[Ra]=pa[nn]=pa[qn]=pa[Ut]=pa[Ta]=pa[Ha]=!0,pa[Wt]=pa[jt]=pa[ne]=pa[we]=pa[Me]=pa[De]=pa[st]=pa[vt]=pa[D]=pa[F]=pa[H]=pa[he]=pa[ke]=pa[ge]=pa[Ee]=!1;var _a={};_a[Wt]=_a[jt]=_a[ne]=_a[Me]=_a[we]=_a[De]=_a[nt]=_a[Ht]=_a[Ea]=_a[Ra]=_a[nn]=_a[D]=_a[F]=_a[H]=_a[he]=_a[ke]=_a[ge]=_a[Ne]=_a[qn]=_a[Ut]=_a[Ta]=_a[Ha]=!0,_a[st]=_a[vt]=_a[Ee]=!1;var ZT={À:"A",Á:"A",Â:"A",Ã:"A",Ä:"A",Å:"A",à:"a",á:"a",â:"a",ã:"a",ä:"a",å:"a",Ç:"C",ç:"c",Ð:"D",ð:"d",È:"E",É:"E",Ê:"E",Ë:"E",è:"e",é:"e",ê:"e",ë:"e",Ì:"I",Í:"I",Î:"I",Ï:"I",ì:"i",í:"i",î:"i",ï:"i",Ñ:"N",ñ:"n",Ò:"O",Ó:"O",Ô:"O",Õ:"O",Ö:"O",Ø:"O",ò:"o",ó:"o",ô:"o",õ:"o",ö:"o",ø:"o",Ù:"U",Ú:"U",Û:"U",Ü:"U",ù:"u",ú:"u",û:"u",ü:"u",Ý:"Y",ý:"y",ÿ:"y",Æ:"Ae",æ:"ae",Þ:"Th",þ:"th",ß:"ss",Ā:"A",Ă:"A",Ą:"A",ā:"a",ă:"a",ą:"a",Ć:"C",Ĉ:"C",Ċ:"C",Č:"C",ć:"c",ĉ:"c",ċ:"c",č:"c",Ď:"D",Đ:"D",ď:"d",đ:"d",Ē:"E",Ĕ:"E",Ė:"E",Ę:"E",Ě:"E",ē:"e",ĕ:"e",ė:"e",ę:"e",ě:"e",Ĝ:"G",Ğ:"G",Ġ:"G",Ģ:"G",ĝ:"g",ğ:"g",ġ:"g",ģ:"g",Ĥ:"H",Ħ:"H",ĥ:"h",ħ:"h",Ĩ:"I",Ī:"I",Ĭ:"I",Į:"I",İ:"I",ĩ:"i",ī:"i",ĭ:"i",į:"i",ı:"i",Ĵ:"J",ĵ:"j",Ķ:"K",ķ:"k",ĸ:"k",Ĺ:"L",Ļ:"L",Ľ:"L",Ŀ:"L",Ł:"L",ĺ:"l",ļ:"l",ľ:"l",ŀ:"l",ł:"l",Ń:"N",Ņ:"N",Ň:"N",Ŋ:"N",ń:"n",ņ:"n",ň:"n",ŋ:"n",Ō:"O",Ŏ:"O",Ő:"O",ō:"o",ŏ:"o",ő:"o",Ŕ:"R",Ŗ:"R",Ř:"R",ŕ:"r",ŗ:"r",ř:"r",Ś:"S",Ŝ:"S",Ş:"S",Š:"S",ś:"s",ŝ:"s",ş:"s",š:"s",Ţ:"T",Ť:"T",Ŧ:"T",ţ:"t",ť:"t",ŧ:"t",Ũ:"U",Ū:"U",Ŭ:"U",Ů:"U",Ű:"U",Ų:"U",ũ:"u",ū:"u",ŭ:"u",ů:"u",ű:"u",ų:"u",Ŵ:"W",ŵ:"w",Ŷ:"Y",ŷ:"y",Ÿ:"Y",Ź:"Z",Ż:"Z",Ž:"Z",ź:"z",ż:"z",ž:"z",IJ:"IJ",ij:"ij",Œ:"Oe",œ:"oe",ʼn:"'n",ſ:"s"},GT={"&":"&","<":"<",">":">",'"':""","'":"'"},QT={"&":"&","<":"<",">":">",""":'"',"'":"'"},JT={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},XT=parseFloat,ej=parseInt,Qb=typeof Oc=="object"&&Oc&&Oc.Object===Object&&Oc,tj=typeof self=="object"&&self&&self.Object===Object&&self,Ja=Qb||tj||Function("return this")(),qp=t&&!t.nodeType&&t,nr=qp&&!0&&e&&!e.nodeType&&e,Jb=nr&&nr.exports===qp,Wp=Jb&&Qb.process,hi=function(){try{var W=nr&&nr.require&&nr.require("util").types;return W||Wp&&Wp.binding&&Wp.binding("util")}catch{}}(),Xb=hi&&hi.isArrayBuffer,ek=hi&&hi.isDate,tk=hi&&hi.isMap,ak=hi&&hi.isRegExp,nk=hi&&hi.isSet,ik=hi&&hi.isTypedArray;function Wn(W,de,ae){switch(ae.length){case 0:return W.call(de);case 1:return W.call(de,ae[0]);case 2:return W.call(de,ae[0],ae[1]);case 3:return W.call(de,ae[0],ae[1],ae[2])}return W.apply(de,ae)}function aj(W,de,ae,Ve){for(var pt=-1,Qt=W==null?0:W.length;++pt-1}function Hp(W,de,ae){for(var Ve=-1,pt=W==null?0:W.length;++Ve-1;);return ae}function _k(W,de){for(var ae=W.length;ae--&&sl(de,W[ae],0)>-1;);return ae}function uj(W,de){for(var ae=W.length,Ve=0;ae--;)W[ae]===de&&++Ve;return Ve}var _j=Gp(ZT),mj=Gp(GT);function pj(W){return"\\"+JT[W]}function fj(W,de){return W==null?a:W[de]}function rl(W){return WT.test(W)}function hj(W){return HT.test(W)}function gj(W){for(var de,ae=[];!(de=W.next()).done;)ae.push(de.value);return ae}function ef(W){var de=-1,ae=Array(W.size);return W.forEach(function(Ve,pt){ae[++de]=[pt,Ve]}),ae}function mk(W,de){return function(ae){return W(de(ae))}}function _s(W,de){for(var ae=-1,Ve=W.length,pt=0,Qt=[];++ae-1}function iN(r,c){var m=this.__data__,v=Au(m,r);return v<0?(++this.size,m.push([r,c])):m[v][1]=c,this}So.prototype.clear=eN,So.prototype.delete=tN,So.prototype.get=aN,So.prototype.has=nN,So.prototype.set=iN;function Po(r){var c=-1,m=r==null?0:r.length;for(this.clear();++c=c?r:c)),r}function bi(r,c,m,v,z,N){var M,L=c&f,Y=c&p,me=c&h;if(m&&(M=z?m(r,v,z,N):m(r)),M!==a)return M;if(!Sa(r))return r;var fe=ht(r);if(fe){if(M=lI(r),!L)return Pn(r,M)}else{var ye=sn(r),Fe=ye==vt||ye==S;if(vs(r))return Zk(r,L);if(ye==H||ye==Wt||Fe&&!z){if(M=Y||Fe?{}:pw(r),!L)return Y?QN(r,bN(M,r)):GN(r,Sk(M,r))}else{if(!_a[ye])return z?r:{};M=cI(r,ye,L)}}N||(N=new Bi);var Qe=N.get(r);if(Qe)return Qe;N.set(r,M),Vw(r)?r.forEach(function(lt){M.add(bi(lt,c,m,lt,r,N))}):Bw(r)&&r.forEach(function(lt,Nt){M.set(Nt,bi(lt,c,m,Nt,r,N))});var rt=me?Y?Ef:Pf:Y?zn:Ka,Pt=fe?a:rt(r);return gi(Pt||r,function(lt,Nt){Pt&&(Nt=lt,lt=r[Nt]),zc(M,Nt,bi(lt,c,m,Nt,r,N))}),M}function kN(r){var c=Ka(r);return function(m){return Pk(m,r,c)}}function Pk(r,c,m){var v=m.length;if(r==null)return!v;for(r=ca(r);v--;){var z=m[v],N=c[z],M=r[z];if(M===a&&!(z in r)||!N(M))return!1}return!0}function Ek(r,c,m){if(typeof r!="function")throw new vi(s);return Fc(function(){r.apply(a,m)},c)}function Ac(r,c,m,v){var z=-1,N=_u,M=!0,L=r.length,Y=[],me=c.length;if(!L)return Y;m&&(c=ya(c,Hn(m))),v?(N=Hp,M=!1):c.length>=i&&(N=wc,M=!1,c=new sr(c));e:for(;++zz?0:z+m),v=v===a||v>z?z:wt(v),v<0&&(v+=z),v=m>v?0:Ww(v);m0&&m(L)?c>1?Xa(L,c-1,m,v,z):us(z,L):v||(z[z.length]=L)}return z}var lf=tw(),Ck=tw(!0);function ro(r,c){return r&&lf(r,c,Ka)}function cf(r,c){return r&&Ck(r,c,Ka)}function Tu(r,c){return ds(c,function(m){return To(r[m])})}function lr(r,c){c=hs(c,r);for(var m=0,v=c.length;r!=null&&mc}function xN(r,c){return r!=null&&aa.call(r,c)}function SN(r,c){return r!=null&&c in ca(r)}function PN(r,c,m){return r>=on(c,m)&&r=120&&fe.length>=120)?new sr(M&&fe):a}fe=r[0];var ye=-1,Fe=L[0];e:for(;++ye-1;)L!==r&&wu.call(L,Y,1),wu.call(r,Y,1);return r}function Bk(r,c){for(var m=r?c.length:0,v=m-1;m--;){var z=c[m];if(m==v||z!==N){var N=z;Co(z)?wu.call(r,z,1):yf(r,z)}}return r}function hf(r,c){return r+Su(kk()*(c-r+1))}function $N(r,c,m,v){for(var z=-1,N=La(xu((c-r)/(m||1)),0),M=ae(N);N--;)M[v?N:++z]=r,r+=m;return M}function gf(r,c){var m="";if(!r||c<1||c>Pe)return m;do c%2&&(m+=r),c=Su(c/2),c&&(r+=r);while(c);return m}function zt(r,c){return If(gw(r,c,An),r+"")}function LN(r){return xk(vl(r))}function BN(r,c){var m=vl(r);return Uu(m,rr(c,0,m.length))}function jc(r,c,m,v){if(!Sa(r))return r;c=hs(c,r);for(var z=-1,N=c.length,M=N-1,L=r;L!=null&&++zz?0:z+c),m=m>z?z:m,m<0&&(m+=z),z=c>m?0:m-c>>>0,c>>>=0;for(var N=ae(z);++v>>1,M=r[N];M!==null&&!Yn(M)&&(m?M<=c:M=i){var me=c?null:tI(r);if(me)return pu(me);M=!1,z=wc,Y=new sr}else Y=c?[]:L;e:for(;++v=v?r:ki(r,c,m)}var Yk=jj||function(r){return Ja.clearTimeout(r)};function Zk(r,c){if(c)return r.slice();var m=r.length,v=hk?hk(m):new r.constructor(m);return r.copy(v),v}function Df(r){var c=new r.constructor(r.byteLength);return new bu(c).set(new bu(r)),c}function HN(r,c){var m=c?Df(r.buffer):r.buffer;return new r.constructor(m,r.byteOffset,r.byteLength)}function KN(r){var c=new r.constructor(r.source,cu.exec(r));return c.lastIndex=r.lastIndex,c}function YN(r){return Ec?ca(Ec.call(r)):{}}function Gk(r,c){var m=c?Df(r.buffer):r.buffer;return new r.constructor(m,r.byteOffset,r.length)}function Qk(r,c){if(r!==c){var m=r!==a,v=r===null,z=r===r,N=Yn(r),M=c!==a,L=c===null,Y=c===c,me=Yn(c);if(!L&&!me&&!N&&r>c||N&&M&&Y&&!L&&!me||v&&M&&Y||!m&&Y||!z)return 1;if(!v&&!N&&!me&&r=L)return Y;var me=m[v];return Y*(me=="desc"?-1:1)}}return r.index-c.index}function Jk(r,c,m,v){for(var z=-1,N=r.length,M=m.length,L=-1,Y=c.length,me=La(N-M,0),fe=ae(Y+me),ye=!v;++L1?m[z-1]:a,M=z>2?m[2]:a;for(N=r.length>3&&typeof N=="function"?(z--,N):a,M&&pn(m[0],m[1],M)&&(N=z<3?a:N,z=1),c=ca(c);++v-1?z[N?c[M]:M]:a}}function iw(r){return Ao(function(c){var m=c.length,v=m,z=yi.prototype.thru;for(r&&c.reverse();v--;){var N=c[v];if(typeof N!="function")throw new vi(s);if(z&&!M&&Lu(N)=="wrapper")var M=new yi([],!0)}for(v=M?v:m;++v1&&Ot.reverse(),fe&&YL))return!1;var me=N.get(r),fe=N.get(c);if(me&&fe)return me==c&&fe==r;var ye=-1,Fe=!0,Qe=m&y?new sr:a;for(N.set(r,c),N.set(c,r);++ye1?"& ":"")+c[v],c=c.join(m>2?", ":" "),r.replace(ta,`{ + */Q_.exports;(function(e,t){(function(){var a,n="4.17.21",i=200,o="Unsupported core-js use. Try https://npms.io/search?q=ponyfill.",r="Expected a function",l="Invalid `variable` option passed into `_.template`",d="__lodash_hash_undefined__",u=500,_="__lodash_placeholder__",f=1,p=2,h=4,g=1,y=2,k=1,b=2,z=4,w=8,D=16,E=32,T=64,N=128,j=256,q=512,H=30,te="...",X=800,oe=16,Te=1,Ae=2,de=3,Ce=1/0,Pe=9007199254740991,Ke=17976931348623157e292,re=NaN,Qe=4294967295,at=Qe-1,la=Qe>>>1,Bt=[["ary",N],["bind",k],["bindKey",b],["curry",w],["curryRight",D],["flip",q],["partial",E],["partialRight",T],["rearg",j]],Ht="[object Arguments]",Tt="[object Array]",ce="[object AsyncFunction]",xe="[object Boolean]",De="[object Date]",Oe="[object DOMException]",rt="[object Error]",vt="[object Function]",S="[object GeneratorFunction]",x="[object Map]",O="[object Number]",W="[object Null]",Y="[object Object]",_e="[object Promise]",Se="[object Proxy]",ge="[object RegExp]",we="[object Set]",ve="[object String]",Ne="[object Symbol]",Ge="[object Undefined]",Ee="[object WeakMap]",J="[object WeakSet]",ie="[object ArrayBuffer]",$e="[object DataView]",nt="[object Float32Array]",Wt="[object Float64Array]",Pa="[object Int8Array]",Ma="[object Int16Array]",nn="[object Int32Array]",qn="[object Uint8Array]",Ut="[object Uint8ClampedArray]",ja="[object Uint16Array]",Wa="[object Uint32Array]",al=/\b__p \+= '';/g,nl=/\b(__p \+=) '' \+/g,bc=/(__e\(.*?\)|\b__t\)) \+\n'';/g,pi=/&(?:amp|lt|gt|quot|#39);/g,lu=/[&<>"']/g,Cp=RegExp(pi.source),M=RegExp(lu.source),$=/<%-([\s\S]+?)%>/g,Z=/<%([\s\S]+?)%>/g,se=/<%=([\s\S]+?)%>/g,je=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Le=/^\w*$/,ft=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Ye=/[\\^$.*+?()[\]{}|]/g,St=RegExp(Ye.source),We=/^\s+/,ut=/\s/,ta=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,fi=/\{\n\/\* \[wrapped with (.+)\] \*/,_n=/,? & /,as=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,cr=/[()=,{}\[\]\/\s]/,jp=/\\(\\)?/g,kc=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,cu=/\w*$/,Tp=/^[-+]0x[0-9a-f]+$/i,Ip=/^0b[01]+$/i,Np=/^\[object .+?Constructor\]$/,Fp=/^0o[0-7]+$/i,Mp=/^(?:0|[1-9]\d*)$/,Rp=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,il=/($^)/,DC=/['\n\r\u2028\u2029\\]/g,du="\\ud800-\\udfff",SC="\\u0300-\\u036f",zC="\\ufe20-\\ufe2f",PC="\\u20d0-\\u20ff",Ib=SC+zC+PC,Nb="\\u2700-\\u27bf",Fb="a-z\\xdf-\\xf6\\xf8-\\xff",EC="\\xac\\xb1\\xd7\\xf7",AC="\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf",CC="\\u2000-\\u206f",jC=" \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",Mb="A-Z\\xc0-\\xd6\\xd8-\\xde",Rb="\\ufe0e\\ufe0f",Ob=EC+AC+CC+jC,Op="['’]",TC="["+du+"]",$b="["+Ob+"]",uu="["+Ib+"]",Lb="\\d+",IC="["+Nb+"]",Bb="["+Fb+"]",Ub="[^"+du+Ob+Lb+Nb+Fb+Mb+"]",$p="\\ud83c[\\udffb-\\udfff]",NC="(?:"+uu+"|"+$p+")",Vb="[^"+du+"]",Lp="(?:\\ud83c[\\udde6-\\uddff]){2}",Bp="[\\ud800-\\udbff][\\udc00-\\udfff]",ol="["+Mb+"]",qb="\\u200d",Hb="(?:"+Bb+"|"+Ub+")",FC="(?:"+ol+"|"+Ub+")",Wb="(?:"+Op+"(?:d|ll|m|re|s|t|ve))?",Kb="(?:"+Op+"(?:D|LL|M|RE|S|T|VE))?",Yb=NC+"?",Zb="["+Rb+"]?",MC="(?:"+qb+"(?:"+[Vb,Lp,Bp].join("|")+")"+Zb+Yb+")*",RC="\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",OC="\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])",Gb=Zb+Yb+MC,$C="(?:"+[IC,Lp,Bp].join("|")+")"+Gb,LC="(?:"+[Vb+uu+"?",uu,Lp,Bp,TC].join("|")+")",BC=RegExp(Op,"g"),UC=RegExp(uu,"g"),Up=RegExp($p+"(?="+$p+")|"+LC+Gb,"g"),VC=RegExp([ol+"?"+Bb+"+"+Wb+"(?="+[$b,ol,"$"].join("|")+")",FC+"+"+Kb+"(?="+[$b,ol+Hb,"$"].join("|")+")",ol+"?"+Hb+"+"+Wb,ol+"+"+Kb,OC,RC,Lb,$C].join("|"),"g"),qC=RegExp("["+qb+du+Ib+Rb+"]"),HC=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,WC=["Array","Buffer","DataView","Date","Error","Float32Array","Float64Array","Function","Int8Array","Int16Array","Int32Array","Map","Math","Object","Promise","RegExp","Set","String","Symbol","TypeError","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap","_","clearTimeout","isFinite","parseInt","setTimeout"],KC=-1,pa={};pa[nt]=pa[Wt]=pa[Pa]=pa[Ma]=pa[nn]=pa[qn]=pa[Ut]=pa[ja]=pa[Wa]=!0,pa[Ht]=pa[Tt]=pa[ie]=pa[xe]=pa[$e]=pa[De]=pa[rt]=pa[vt]=pa[x]=pa[O]=pa[Y]=pa[ge]=pa[we]=pa[ve]=pa[Ee]=!1;var _a={};_a[Ht]=_a[Tt]=_a[ie]=_a[$e]=_a[xe]=_a[De]=_a[nt]=_a[Wt]=_a[Pa]=_a[Ma]=_a[nn]=_a[x]=_a[O]=_a[Y]=_a[ge]=_a[we]=_a[ve]=_a[Ne]=_a[qn]=_a[Ut]=_a[ja]=_a[Wa]=!0,_a[rt]=_a[vt]=_a[Ee]=!1;var YC={À:"A",Á:"A",Â:"A",Ã:"A",Ä:"A",Å:"A",à:"a",á:"a",â:"a",ã:"a",ä:"a",å:"a",Ç:"C",ç:"c",Ð:"D",ð:"d",È:"E",É:"E",Ê:"E",Ë:"E",è:"e",é:"e",ê:"e",ë:"e",Ì:"I",Í:"I",Î:"I",Ï:"I",ì:"i",í:"i",î:"i",ï:"i",Ñ:"N",ñ:"n",Ò:"O",Ó:"O",Ô:"O",Õ:"O",Ö:"O",Ø:"O",ò:"o",ó:"o",ô:"o",õ:"o",ö:"o",ø:"o",Ù:"U",Ú:"U",Û:"U",Ü:"U",ù:"u",ú:"u",û:"u",ü:"u",Ý:"Y",ý:"y",ÿ:"y",Æ:"Ae",æ:"ae",Þ:"Th",þ:"th",ß:"ss",Ā:"A",Ă:"A",Ą:"A",ā:"a",ă:"a",ą:"a",Ć:"C",Ĉ:"C",Ċ:"C",Č:"C",ć:"c",ĉ:"c",ċ:"c",č:"c",Ď:"D",Đ:"D",ď:"d",đ:"d",Ē:"E",Ĕ:"E",Ė:"E",Ę:"E",Ě:"E",ē:"e",ĕ:"e",ė:"e",ę:"e",ě:"e",Ĝ:"G",Ğ:"G",Ġ:"G",Ģ:"G",ĝ:"g",ğ:"g",ġ:"g",ģ:"g",Ĥ:"H",Ħ:"H",ĥ:"h",ħ:"h",Ĩ:"I",Ī:"I",Ĭ:"I",Į:"I",İ:"I",ĩ:"i",ī:"i",ĭ:"i",į:"i",ı:"i",Ĵ:"J",ĵ:"j",Ķ:"K",ķ:"k",ĸ:"k",Ĺ:"L",Ļ:"L",Ľ:"L",Ŀ:"L",Ł:"L",ĺ:"l",ļ:"l",ľ:"l",ŀ:"l",ł:"l",Ń:"N",Ņ:"N",Ň:"N",Ŋ:"N",ń:"n",ņ:"n",ň:"n",ŋ:"n",Ō:"O",Ŏ:"O",Ő:"O",ō:"o",ŏ:"o",ő:"o",Ŕ:"R",Ŗ:"R",Ř:"R",ŕ:"r",ŗ:"r",ř:"r",Ś:"S",Ŝ:"S",Ş:"S",Š:"S",ś:"s",ŝ:"s",ş:"s",š:"s",Ţ:"T",Ť:"T",Ŧ:"T",ţ:"t",ť:"t",ŧ:"t",Ũ:"U",Ū:"U",Ŭ:"U",Ů:"U",Ű:"U",Ų:"U",ũ:"u",ū:"u",ŭ:"u",ů:"u",ű:"u",ų:"u",Ŵ:"W",ŵ:"w",Ŷ:"Y",ŷ:"y",Ÿ:"Y",Ź:"Z",Ż:"Z",Ž:"Z",ź:"z",ż:"z",ž:"z",IJ:"IJ",ij:"ij",Œ:"Oe",œ:"oe",ʼn:"'n",ſ:"s"},ZC={"&":"&","<":"<",">":">",'"':""","'":"'"},GC={"&":"&","<":"<",">":">",""":'"',"'":"'"},QC={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},JC=parseFloat,XC=parseInt,Qb=typeof Rc=="object"&&Rc&&Rc.Object===Object&&Rc,ej=typeof self=="object"&&self&&self.Object===Object&&self,Ja=Qb||ej||Function("return this")(),Vp=t&&!t.nodeType&&t,ns=Vp&&!0&&e&&!e.nodeType&&e,Jb=ns&&ns.exports===Vp,qp=Jb&&Qb.process,hi=function(){try{var K=ns&&ns.require&&ns.require("util").types;return K||qp&&qp.binding&&qp.binding("util")}catch{}}(),Xb=hi&&hi.isArrayBuffer,e0=hi&&hi.isDate,t0=hi&&hi.isMap,a0=hi&&hi.isRegExp,n0=hi&&hi.isSet,i0=hi&&hi.isTypedArray;function Hn(K,ue,ne){switch(ne.length){case 0:return K.call(ue);case 1:return K.call(ue,ne[0]);case 2:return K.call(ue,ne[0],ne[1]);case 3:return K.call(ue,ne[0],ne[1],ne[2])}return K.apply(ue,ne)}function tj(K,ue,ne,qe){for(var pt=-1,Qt=K==null?0:K.length;++pt-1}function Hp(K,ue,ne){for(var qe=-1,pt=K==null?0:K.length;++qe-1;);return ne}function _0(K,ue){for(var ne=K.length;ne--&&rl(ue,K[ne],0)>-1;);return ne}function dj(K,ue){for(var ne=K.length,qe=0;ne--;)K[ne]===ue&&++qe;return qe}var uj=Zp(YC),_j=Zp(ZC);function mj(K){return"\\"+QC[K]}function pj(K,ue){return K==null?a:K[ue]}function sl(K){return qC.test(K)}function fj(K){return HC.test(K)}function hj(K){for(var ue,ne=[];!(ue=K.next()).done;)ne.push(ue.value);return ne}function Xp(K){var ue=-1,ne=Array(K.size);return K.forEach(function(qe,pt){ne[++ue]=[pt,qe]}),ne}function m0(K,ue){return function(ne){return K(ue(ne))}}function _r(K,ue){for(var ne=-1,qe=K.length,pt=0,Qt=[];++ne-1}function nT(s,c){var m=this.__data__,v=Au(m,s);return v<0?(++this.size,m.push([s,c])):m[v][1]=c,this}So.prototype.clear=Xj,So.prototype.delete=eT,So.prototype.get=tT,So.prototype.has=aT,So.prototype.set=nT;function zo(s){var c=-1,m=s==null?0:s.length;for(this.clear();++c=c?s:c)),s}function bi(s,c,m,v,A,F){var B,U=c&f,G=c&p,pe=c&h;if(m&&(B=A?m(s,v,A,F):m(s)),B!==a)return B;if(!Sa(s))return s;var he=ht(s);if(he){if(B=sI(s),!U)return zn(s,B)}else{var be=rn(s),Me=be==vt||be==S;if(vr(s))return Z0(s,U);if(be==Y||be==Ht||Me&&!A){if(B=G||Me?{}:pk(s),!U)return G?GT(s,yT(B,s)):ZT(s,S0(B,s))}else{if(!_a[be])return A?s:{};B=lI(s,be,U)}}F||(F=new Bi);var Je=F.get(s);if(Je)return Je;F.set(s,B),Vk(s)?s.forEach(function(lt){B.add(bi(lt,c,m,lt,s,F))}):Bk(s)&&s.forEach(function(lt,It){B.set(It,bi(lt,c,m,It,s,F))});var st=pe?G?zf:Sf:G?En:Ka,zt=he?a:st(s);return gi(zt||s,function(lt,It){zt&&(It=lt,lt=s[It]),Ec(B,It,bi(lt,c,m,It,s,F))}),B}function bT(s){var c=Ka(s);return function(m){return z0(m,s,c)}}function z0(s,c,m){var v=m.length;if(s==null)return!v;for(s=ca(s);v--;){var A=m[v],F=c[A],B=s[A];if(B===a&&!(A in s)||!F(B))return!1}return!0}function P0(s,c,m){if(typeof s!="function")throw new vi(r);return Fc(function(){s.apply(a,m)},c)}function Ac(s,c,m,v){var A=-1,F=_u,B=!0,U=s.length,G=[],pe=c.length;if(!U)return G;m&&(c=ya(c,Wn(m))),v?(F=Hp,B=!1):c.length>=i&&(F=wc,B=!1,c=new rs(c));e:for(;++AA?0:A+m),v=v===a||v>A?A:wt(v),v<0&&(v+=A),v=m>v?0:Hk(v);m0&&m(U)?c>1?Xa(U,c-1,m,v,A):ur(A,U):v||(A[A.length]=U)}return A}var sf=tk(),C0=tk(!0);function so(s,c){return s&&sf(s,c,Ka)}function lf(s,c){return s&&C0(s,c,Ka)}function ju(s,c){return dr(c,function(m){return jo(s[m])})}function ls(s,c){c=hr(c,s);for(var m=0,v=c.length;s!=null&&mc}function xT(s,c){return s!=null&&aa.call(s,c)}function DT(s,c){return s!=null&&c in ca(s)}function ST(s,c,m){return s>=on(c,m)&&s=120&&he.length>=120)?new rs(B&&he):a}he=s[0];var be=-1,Me=U[0];e:for(;++be-1;)U!==s&&wu.call(U,G,1),wu.call(s,G,1);return s}function B0(s,c){for(var m=s?c.length:0,v=m-1;m--;){var A=c[m];if(m==v||A!==F){var F=A;Co(A)?wu.call(s,A,1):vf(s,A)}}return s}function ff(s,c){return s+Su(k0()*(c-s+1))}function OT(s,c,m,v){for(var A=-1,F=La(Du((c-s)/(m||1)),0),B=ne(F);F--;)B[v?F:++A]=s,s+=m;return B}function hf(s,c){var m="";if(!s||c<1||c>Pe)return m;do c%2&&(m+=s),c=Su(c/2),c&&(s+=s);while(c);return m}function Et(s,c){return If(gk(s,c,An),s+"")}function $T(s){return D0(vl(s))}function LT(s,c){var m=vl(s);return Uu(m,ss(c,0,m.length))}function Tc(s,c,m,v){if(!Sa(s))return s;c=hr(c,s);for(var A=-1,F=c.length,B=F-1,U=s;U!=null&&++AA?0:A+c),m=m>A?A:m,m<0&&(m+=A),A=c>m?0:m-c>>>0,c>>>=0;for(var F=ne(A);++v>>1,B=s[F];B!==null&&!Yn(B)&&(m?B<=c:B=i){var pe=c?null:eI(s);if(pe)return pu(pe);B=!1,A=wc,G=new rs}else G=c?[]:U;e:for(;++v=v?s:ki(s,c,m)}var Y0=jj||function(s){return Ja.clearTimeout(s)};function Z0(s,c){if(c)return s.slice();var m=s.length,v=h0?h0(m):new s.constructor(m);return s.copy(v),v}function wf(s){var c=new s.constructor(s.byteLength);return new bu(c).set(new bu(s)),c}function HT(s,c){var m=c?wf(s.buffer):s.buffer;return new s.constructor(m,s.byteOffset,s.byteLength)}function WT(s){var c=new s.constructor(s.source,cu.exec(s));return c.lastIndex=s.lastIndex,c}function KT(s){return Pc?ca(Pc.call(s)):{}}function G0(s,c){var m=c?wf(s.buffer):s.buffer;return new s.constructor(m,s.byteOffset,s.length)}function Q0(s,c){if(s!==c){var m=s!==a,v=s===null,A=s===s,F=Yn(s),B=c!==a,U=c===null,G=c===c,pe=Yn(c);if(!U&&!pe&&!F&&s>c||F&&B&&G&&!U&&!pe||v&&B&&G||!m&&G||!A)return 1;if(!v&&!F&&!pe&&s=U)return G;var pe=m[v];return G*(pe=="desc"?-1:1)}}return s.index-c.index}function J0(s,c,m,v){for(var A=-1,F=s.length,B=m.length,U=-1,G=c.length,pe=La(F-B,0),he=ne(G+pe),be=!v;++U1?m[A-1]:a,B=A>2?m[2]:a;for(F=s.length>3&&typeof F=="function"?(A--,F):a,B&&pn(m[0],m[1],B)&&(F=A<3?a:F,A=1),c=ca(c);++v-1?A[F?c[B]:B]:a}}function ik(s){return Ao(function(c){var m=c.length,v=m,A=yi.prototype.thru;for(s&&c.reverse();v--;){var F=c[v];if(typeof F!="function")throw new vi(r);if(A&&!B&&Lu(F)=="wrapper")var B=new yi([],!0)}for(v=B?v:m;++v1&&Rt.reverse(),he&&GU))return!1;var pe=F.get(s),he=F.get(c);if(pe&&he)return pe==c&&he==s;var be=-1,Me=!0,Je=m&y?new rs:a;for(F.set(s,c),F.set(c,s);++be1?"& ":"")+c[v],c=c.join(m>2?", ":" "),s.replace(ta,`{ /* [wrapped with `+c+`] */ -`)}function uI(r){return ht(r)||ur(r)||!!(yk&&r&&r[yk])}function Co(r,c){var m=typeof r;return c=c??Pe,!!c&&(m=="number"||m!="symbol"&&Op.test(r))&&r>-1&&r%1==0&&r0){if(++c>=J)return arguments[0]}else c=0;return r.apply(a,arguments)}}function Uu(r,c){var m=-1,v=r.length,z=v-1;for(c=c===a?v:c;++m1?r[c-1]:a;return m=typeof m=="function"?(r.pop(),m):a,Aw(r,m)});function Cw(r){var c=T(r);return c.__chain__=!0,c}function w2(r,c){return c(r),r}function Vu(r,c){return c(r)}var D2=Ao(function(r){var c=r.length,m=c?r[0]:0,v=this.__wrapped__,z=function(N){return rf(N,r)};return c>1||this.__actions__.length||!(v instanceof Ft)||!Co(m)?this.thru(z):(v=v.slice(m,+m+(c?1:0)),v.__actions__.push({func:Vu,args:[z],thisArg:a}),new yi(v,this.__chain__).thru(function(N){return c&&!N.length&&N.push(a),N}))});function x2(){return Cw(this)}function S2(){return new yi(this.value(),this.__chain__)}function P2(){this.__values__===a&&(this.__values__=qw(this.value()));var r=this.__index__>=this.__values__.length,c=r?a:this.__values__[this.__index__++];return{done:r,value:c}}function E2(){return this}function z2(r){for(var c,m=this;m instanceof zu;){var v=Dw(m);v.__index__=0,v.__values__=a,c?z.__wrapped__=v:c=v;var z=v;m=m.__wrapped__}return z.__wrapped__=r,c}function A2(){var r=this.__wrapped__;if(r instanceof Ft){var c=r;return this.__actions__.length&&(c=new Ft(this)),c=c.reverse(),c.__actions__.push({func:Vu,args:[Ff],thisArg:a}),new yi(c,this.__chain__)}return this.thru(Ff)}function C2(){return Hk(this.__wrapped__,this.__actions__)}var T2=Fu(function(r,c,m){aa.call(r,m)?++r[m]:Eo(r,m,1)});function j2(r,c,m){var v=ht(r)?ok:wN;return m&&pn(r,c,m)&&(c=a),v(r,ot(c,3))}function N2(r,c){var m=ht(r)?ds:Ak;return m(r,ot(c,3))}var I2=nw(xw),F2=nw(Sw);function R2(r,c){return Xa(qu(r,c),1)}function O2(r,c){return Xa(qu(r,c),Ae)}function M2(r,c,m){return m=m===a?1:wt(m),Xa(qu(r,c),m)}function Tw(r,c){var m=ht(r)?gi:ps;return m(r,ot(c,3))}function jw(r,c){var m=ht(r)?nj:zk;return m(r,ot(c,3))}var $2=Fu(function(r,c,m){aa.call(r,m)?r[m].push(c):Eo(r,m,[c])});function L2(r,c,m,v){r=En(r)?r:vl(r),m=m&&!v?wt(m):0;var z=r.length;return m<0&&(m=La(z+m,0)),Zu(r)?m<=z&&r.indexOf(c,m)>-1:!!z&&sl(r,c,m)>-1}var B2=zt(function(r,c,m){var v=-1,z=typeof c=="function",N=En(r)?ae(r.length):[];return ps(r,function(M){N[++v]=z?Wn(c,M,m):Cc(M,c,m)}),N}),U2=Fu(function(r,c,m){Eo(r,m,c)});function qu(r,c){var m=ht(r)?ya:Fk;return m(r,ot(c,3))}function V2(r,c,m,v){return r==null?[]:(ht(c)||(c=c==null?[]:[c]),m=v?a:m,ht(m)||(m=m==null?[]:[m]),$k(r,c,m))}var q2=Fu(function(r,c,m){r[m?0:1].push(c)},function(){return[[],[]]});function W2(r,c,m){var v=ht(r)?Kp:ck,z=arguments.length<3;return v(r,ot(c,4),m,z,ps)}function H2(r,c,m){var v=ht(r)?ij:ck,z=arguments.length<3;return v(r,ot(c,4),m,z,zk)}function K2(r,c){var m=ht(r)?ds:Ak;return m(r,Ku(ot(c,3)))}function Y2(r){var c=ht(r)?xk:LN;return c(r)}function Z2(r,c,m){(m?pn(r,c,m):c===a)?c=1:c=wt(c);var v=ht(r)?gN:BN;return v(r,c)}function G2(r){var c=ht(r)?vN:VN;return c(r)}function Q2(r){if(r==null)return 0;if(En(r))return Zu(r)?ll(r):r.length;var c=sn(r);return c==D||c==ke?r.size:mf(r).length}function J2(r,c,m){var v=ht(r)?Yp:qN;return m&&pn(r,c,m)&&(c=a),v(r,ot(c,3))}var X2=zt(function(r,c){if(r==null)return[];var m=c.length;return m>1&&pn(r,c[0],c[1])?c=[]:m>2&&pn(c[0],c[1],c[2])&&(c=[c[0]]),$k(r,Xa(c,1),[])}),Wu=Nj||function(){return Ja.Date.now()};function eF(r,c){if(typeof c!="function")throw new vi(s);return r=wt(r),function(){if(--r<1)return c.apply(this,arguments)}}function Nw(r,c,m){return c=m?a:c,c=r&&c==null?r.length:c,zo(r,j,a,a,a,a,c)}function Iw(r,c){var m;if(typeof c!="function")throw new vi(s);return r=wt(r),function(){return--r>0&&(m=c.apply(this,arguments)),r<=1&&(c=a),m}}var Of=zt(function(r,c,m){var v=k;if(m.length){var z=_s(m,hl(Of));v|=E}return zo(r,v,c,m,z)}),Fw=zt(function(r,c,m){var v=k|b;if(m.length){var z=_s(m,hl(Fw));v|=E}return zo(c,v,r,m,z)});function Rw(r,c,m){c=m?a:c;var v=zo(r,w,a,a,a,a,a,c);return v.placeholder=Rw.placeholder,v}function Ow(r,c,m){c=m?a:c;var v=zo(r,x,a,a,a,a,a,c);return v.placeholder=Ow.placeholder,v}function Mw(r,c,m){var v,z,N,M,L,Y,me=0,fe=!1,ye=!1,Fe=!0;if(typeof r!="function")throw new vi(s);c=Di(c)||0,Sa(m)&&(fe=!!m.leading,ye="maxWait"in m,N=ye?La(Di(m.maxWait)||0,c):N,Fe="trailing"in m?!!m.trailing:Fe);function Qe(Na){var Vi=v,No=z;return v=z=a,me=Na,M=r.apply(No,Vi),M}function rt(Na){return me=Na,L=Fc(Nt,c),fe?Qe(Na):M}function Pt(Na){var Vi=Na-Y,No=Na-me,n0=c-Vi;return ye?on(n0,N-No):n0}function lt(Na){var Vi=Na-Y,No=Na-me;return Y===a||Vi>=c||Vi<0||ye&&No>=N}function Nt(){var Na=Wu();if(lt(Na))return Ot(Na);L=Fc(Nt,Pt(Na))}function Ot(Na){return L=a,Fe&&v?Qe(Na):(v=z=a,M)}function Zn(){L!==a&&Yk(L),me=0,v=Y=z=L=a}function fn(){return L===a?M:Ot(Wu())}function Gn(){var Na=Wu(),Vi=lt(Na);if(v=arguments,z=this,Y=Na,Vi){if(L===a)return rt(Y);if(ye)return Yk(L),L=Fc(Nt,c),Qe(Y)}return L===a&&(L=Fc(Nt,c)),M}return Gn.cancel=Zn,Gn.flush=fn,Gn}var tF=zt(function(r,c){return Ek(r,1,c)}),aF=zt(function(r,c,m){return Ek(r,Di(c)||0,m)});function nF(r){return zo(r,U)}function Hu(r,c){if(typeof r!="function"||c!=null&&typeof c!="function")throw new vi(s);var m=function(){var v=arguments,z=c?c.apply(this,v):v[0],N=m.cache;if(N.has(z))return N.get(z);var M=r.apply(this,v);return m.cache=N.set(z,M)||N,M};return m.cache=new(Hu.Cache||Po),m}Hu.Cache=Po;function Ku(r){if(typeof r!="function")throw new vi(s);return function(){var c=arguments;switch(c.length){case 0:return!r.call(this);case 1:return!r.call(this,c[0]);case 2:return!r.call(this,c[0],c[1]);case 3:return!r.call(this,c[0],c[1],c[2])}return!r.apply(this,c)}}function iF(r){return Iw(2,r)}var oF=WN(function(r,c){c=c.length==1&&ht(c[0])?ya(c[0],Hn(ot())):ya(Xa(c,1),Hn(ot()));var m=c.length;return zt(function(v){for(var z=-1,N=on(v.length,m);++z=c}),ur=jk(function(){return arguments}())?jk:function(r){return za(r)&&aa.call(r,"callee")&&!vk.call(r,"callee")},ht=ae.isArray,bF=Xb?Hn(Xb):zN;function En(r){return r!=null&&Yu(r.length)&&!To(r)}function ja(r){return za(r)&&En(r)}function kF(r){return r===!0||r===!1||za(r)&&mn(r)==we}var vs=Fj||Zf,wF=ek?Hn(ek):AN;function DF(r){return za(r)&&r.nodeType===1&&!Rc(r)}function xF(r){if(r==null)return!0;if(En(r)&&(ht(r)||typeof r=="string"||typeof r.splice=="function"||vs(r)||gl(r)||ur(r)))return!r.length;var c=sn(r);if(c==D||c==ke)return!r.size;if(Ic(r))return!mf(r).length;for(var m in r)if(aa.call(r,m))return!1;return!0}function SF(r,c){return Tc(r,c)}function PF(r,c,m){m=typeof m=="function"?m:a;var v=m?m(r,c):a;return v===a?Tc(r,c,a,m):!!v}function $f(r){if(!za(r))return!1;var c=mn(r);return c==st||c==Oe||typeof r.message=="string"&&typeof r.name=="string"&&!Rc(r)}function EF(r){return typeof r=="number"&&bk(r)}function To(r){if(!Sa(r))return!1;var c=mn(r);return c==vt||c==S||c==le||c==xe}function Lw(r){return typeof r=="number"&&r==wt(r)}function Yu(r){return typeof r=="number"&&r>-1&&r%1==0&&r<=Pe}function Sa(r){var c=typeof r;return r!=null&&(c=="object"||c=="function")}function za(r){return r!=null&&typeof r=="object"}var Bw=tk?Hn(tk):TN;function zF(r,c){return r===c||_f(r,c,Af(c))}function AF(r,c,m){return m=typeof m=="function"?m:a,_f(r,c,Af(c),m)}function CF(r){return Uw(r)&&r!=+r}function TF(r){if(pI(r))throw new pt(o);return Nk(r)}function jF(r){return r===null}function NF(r){return r==null}function Uw(r){return typeof r=="number"||za(r)&&mn(r)==F}function Rc(r){if(!za(r)||mn(r)!=H)return!1;var c=ku(r);if(c===null)return!0;var m=aa.call(c,"constructor")&&c.constructor;return typeof m=="function"&&m instanceof m&&gu.call(m)==Aj}var Lf=ak?Hn(ak):jN;function IF(r){return Lw(r)&&r>=-Pe&&r<=Pe}var Vw=nk?Hn(nk):NN;function Zu(r){return typeof r=="string"||!ht(r)&&za(r)&&mn(r)==ge}function Yn(r){return typeof r=="symbol"||za(r)&&mn(r)==Ne}var gl=ik?Hn(ik):IN;function FF(r){return r===a}function RF(r){return za(r)&&sn(r)==Ee}function OF(r){return za(r)&&mn(r)==Q}var MF=$u(pf),$F=$u(function(r,c){return r<=c});function qw(r){if(!r)return[];if(En(r))return Zu(r)?Li(r):Pn(r);if(Dc&&r[Dc])return gj(r[Dc]());var c=sn(r),m=c==D?ef:c==ke?pu:vl;return m(r)}function jo(r){if(!r)return r===0?r:0;if(r=Di(r),r===Ae||r===-Ae){var c=r<0?-1:1;return c*He}return r===r?r:0}function wt(r){var c=jo(r),m=c%1;return c===c?m?c-m:c:0}function Ww(r){return r?rr(wt(r),0,Ge):0}function Di(r){if(typeof r=="number")return r;if(Yn(r))return oe;if(Sa(r)){var c=typeof r.valueOf=="function"?r.valueOf():r;r=Sa(c)?c+"":c}if(typeof r!="string")return r===0?r:+r;r=dk(r);var m=Ip.test(r);return m||Rp.test(r)?ej(r.slice(2),m?2:8):Np.test(r)?oe:+r}function Hw(r){return lo(r,zn(r))}function LF(r){return r?rr(wt(r),-Pe,Pe):r===0?r:0}function Xt(r){return r==null?"":Kn(r)}var BF=pl(function(r,c){if(Ic(c)||En(c)){lo(c,Ka(c),r);return}for(var m in c)aa.call(c,m)&&zc(r,m,c[m])}),Kw=pl(function(r,c){lo(c,zn(c),r)}),Gu=pl(function(r,c,m,v){lo(c,zn(c),r,v)}),UF=pl(function(r,c,m,v){lo(c,Ka(c),r,v)}),VF=Ao(rf);function qF(r,c){var m=ml(r);return c==null?m:Sk(m,c)}var WF=zt(function(r,c){r=ca(r);var m=-1,v=c.length,z=v>2?c[2]:a;for(z&&pn(c[0],c[1],z)&&(v=1);++m1),N}),lo(r,Ef(r),m),v&&(m=bi(m,f|p|h,aI));for(var z=c.length;z--;)yf(m,c[z]);return m});function cR(r,c){return Zw(r,Ku(ot(c)))}var dR=Ao(function(r,c){return r==null?{}:ON(r,c)});function Zw(r,c){if(r==null)return{};var m=ya(Ef(r),function(v){return[v]});return c=ot(c),Lk(r,m,function(v,z){return c(v,z[0])})}function uR(r,c,m){c=hs(c,r);var v=-1,z=c.length;for(z||(z=1,r=a);++vc){var v=r;r=c,c=v}if(m||r%1||c%1){var z=kk();return on(r+z*(c-r+XT("1e-"+((z+"").length-1))),c)}return hf(r,c)}var wR=fl(function(r,c,m){return c=c.toLowerCase(),r+(m?Jw(c):c)});function Jw(r){return Vf(Xt(r).toLowerCase())}function Xw(r){return r=Xt(r),r&&r.replace(Mp,_j).replace(VT,"")}function DR(r,c,m){r=Xt(r),c=Kn(c);var v=r.length;m=m===a?v:rr(wt(m),0,v);var z=m;return m-=c.length,m>=0&&r.slice(m,z)==c}function xR(r){return r=Xt(r),r&&I.test(r)?r.replace(lu,mj):r}function SR(r){return r=Xt(r),r&&St.test(r)?r.replace(Ke,"\\$&"):r}var PR=fl(function(r,c,m){return r+(m?"-":"")+c.toLowerCase()}),ER=fl(function(r,c,m){return r+(m?" ":"")+c.toLowerCase()}),zR=aw("toLowerCase");function AR(r,c,m){r=Xt(r),c=wt(c);var v=c?ll(r):0;if(!c||v>=c)return r;var z=(c-v)/2;return Mu(Su(z),m)+r+Mu(xu(z),m)}function CR(r,c,m){r=Xt(r),c=wt(c);var v=c?ll(r):0;return c&&v>>0,m?(r=Xt(r),r&&(typeof c=="string"||c!=null&&!Lf(c))&&(c=Kn(c),!c&&rl(r))?gs(Li(r),0,m):r.split(c,m)):[]}var OR=fl(function(r,c,m){return r+(m?" ":"")+Vf(c)});function MR(r,c,m){return r=Xt(r),m=m==null?0:rr(wt(m),0,r.length),c=Kn(c),r.slice(m,m+c.length)==c}function $R(r,c,m){var v=T.templateSettings;m&&pn(r,c,m)&&(c=a),r=Xt(r),c=Gu({},c,v,cw);var z=Gu({},c.imports,v.imports,cw),N=Ka(z),M=Xp(z,N),L,Y,me=0,fe=c.interpolate||il,ye="__p += '",Fe=tf((c.escape||il).source+"|"+fe.source+"|"+(fe===se?kc:il).source+"|"+(c.evaluate||il).source+"|$","g"),Qe="//# sourceURL="+(aa.call(c,"sourceURL")?(c.sourceURL+"").replace(/\s/g," "):"lodash.templateSources["+ ++YT+"]")+` -`;r.replace(Fe,function(lt,Nt,Ot,Zn,fn,Gn){return Ot||(Ot=Zn),ye+=r.slice(me,Gn).replace(ST,pj),Nt&&(L=!0,ye+=`' + -__e(`+Nt+`) + -'`),fn&&(Y=!0,ye+=`'; +`)}function dI(s){return ht(s)||us(s)||!!(y0&&s&&s[y0])}function Co(s,c){var m=typeof s;return c=c??Pe,!!c&&(m=="number"||m!="symbol"&&Mp.test(s))&&s>-1&&s%1==0&&s0){if(++c>=X)return arguments[0]}else c=0;return s.apply(a,arguments)}}function Uu(s,c){var m=-1,v=s.length,A=v-1;for(c=c===a?v:c;++m1?s[c-1]:a;return m=typeof m=="function"?(s.pop(),m):a,Ak(s,m)});function Ck(s){var c=I(s);return c.__chain__=!0,c}function kN(s,c){return c(s),s}function Vu(s,c){return c(s)}var wN=Ao(function(s){var c=s.length,m=c?s[0]:0,v=this.__wrapped__,A=function(F){return rf(F,s)};return c>1||this.__actions__.length||!(v instanceof Ft)||!Co(m)?this.thru(A):(v=v.slice(m,+m+(c?1:0)),v.__actions__.push({func:Vu,args:[A],thisArg:a}),new yi(v,this.__chain__).thru(function(F){return c&&!F.length&&F.push(a),F}))});function xN(){return Ck(this)}function DN(){return new yi(this.value(),this.__chain__)}function SN(){this.__values__===a&&(this.__values__=qk(this.value()));var s=this.__index__>=this.__values__.length,c=s?a:this.__values__[this.__index__++];return{done:s,value:c}}function zN(){return this}function PN(s){for(var c,m=this;m instanceof Eu;){var v=xk(m);v.__index__=0,v.__values__=a,c?A.__wrapped__=v:c=v;var A=v;m=m.__wrapped__}return A.__wrapped__=s,c}function EN(){var s=this.__wrapped__;if(s instanceof Ft){var c=s;return this.__actions__.length&&(c=new Ft(this)),c=c.reverse(),c.__actions__.push({func:Vu,args:[Nf],thisArg:a}),new yi(c,this.__chain__)}return this.thru(Nf)}function AN(){return W0(this.__wrapped__,this.__actions__)}var CN=Fu(function(s,c,m){aa.call(s,m)?++s[m]:Po(s,m,1)});function jN(s,c,m){var v=ht(s)?o0:kT;return m&&pn(s,c,m)&&(c=a),v(s,ot(c,3))}function TN(s,c){var m=ht(s)?dr:A0;return m(s,ot(c,3))}var IN=nk(Dk),NN=nk(Sk);function FN(s,c){return Xa(qu(s,c),1)}function MN(s,c){return Xa(qu(s,c),Ce)}function RN(s,c,m){return m=m===a?1:wt(m),Xa(qu(s,c),m)}function jk(s,c){var m=ht(s)?gi:pr;return m(s,ot(c,3))}function Tk(s,c){var m=ht(s)?aj:E0;return m(s,ot(c,3))}var ON=Fu(function(s,c,m){aa.call(s,m)?s[m].push(c):Po(s,m,[c])});function $N(s,c,m,v){s=Pn(s)?s:vl(s),m=m&&!v?wt(m):0;var A=s.length;return m<0&&(m=La(A+m,0)),Zu(s)?m<=A&&s.indexOf(c,m)>-1:!!A&&rl(s,c,m)>-1}var LN=Et(function(s,c,m){var v=-1,A=typeof c=="function",F=Pn(s)?ne(s.length):[];return pr(s,function(B){F[++v]=A?Hn(c,B,m):Cc(B,c,m)}),F}),BN=Fu(function(s,c,m){Po(s,m,c)});function qu(s,c){var m=ht(s)?ya:F0;return m(s,ot(c,3))}function UN(s,c,m,v){return s==null?[]:(ht(c)||(c=c==null?[]:[c]),m=v?a:m,ht(m)||(m=m==null?[]:[m]),$0(s,c,m))}var VN=Fu(function(s,c,m){s[m?0:1].push(c)},function(){return[[],[]]});function qN(s,c,m){var v=ht(s)?Wp:c0,A=arguments.length<3;return v(s,ot(c,4),m,A,pr)}function HN(s,c,m){var v=ht(s)?nj:c0,A=arguments.length<3;return v(s,ot(c,4),m,A,E0)}function WN(s,c){var m=ht(s)?dr:A0;return m(s,Ku(ot(c,3)))}function KN(s){var c=ht(s)?D0:$T;return c(s)}function YN(s,c,m){(m?pn(s,c,m):c===a)?c=1:c=wt(c);var v=ht(s)?hT:LT;return v(s,c)}function ZN(s){var c=ht(s)?gT:UT;return c(s)}function GN(s){if(s==null)return 0;if(Pn(s))return Zu(s)?ll(s):s.length;var c=rn(s);return c==x||c==we?s.size:_f(s).length}function QN(s,c,m){var v=ht(s)?Kp:VT;return m&&pn(s,c,m)&&(c=a),v(s,ot(c,3))}var JN=Et(function(s,c){if(s==null)return[];var m=c.length;return m>1&&pn(s,c[0],c[1])?c=[]:m>2&&pn(c[0],c[1],c[2])&&(c=[c[0]]),$0(s,Xa(c,1),[])}),Hu=Tj||function(){return Ja.Date.now()};function XN(s,c){if(typeof c!="function")throw new vi(r);return s=wt(s),function(){if(--s<1)return c.apply(this,arguments)}}function Ik(s,c,m){return c=m?a:c,c=s&&c==null?s.length:c,Eo(s,N,a,a,a,a,c)}function Nk(s,c){var m;if(typeof c!="function")throw new vi(r);return s=wt(s),function(){return--s>0&&(m=c.apply(this,arguments)),s<=1&&(c=a),m}}var Mf=Et(function(s,c,m){var v=k;if(m.length){var A=_r(m,hl(Mf));v|=E}return Eo(s,v,c,m,A)}),Fk=Et(function(s,c,m){var v=k|b;if(m.length){var A=_r(m,hl(Fk));v|=E}return Eo(c,v,s,m,A)});function Mk(s,c,m){c=m?a:c;var v=Eo(s,w,a,a,a,a,a,c);return v.placeholder=Mk.placeholder,v}function Rk(s,c,m){c=m?a:c;var v=Eo(s,D,a,a,a,a,a,c);return v.placeholder=Rk.placeholder,v}function Ok(s,c,m){var v,A,F,B,U,G,pe=0,he=!1,be=!1,Me=!0;if(typeof s!="function")throw new vi(r);c=xi(c)||0,Sa(m)&&(he=!!m.leading,be="maxWait"in m,F=be?La(xi(m.maxWait)||0,c):F,Me="trailing"in m?!!m.trailing:Me);function Je(Ia){var Vi=v,Io=A;return v=A=a,pe=Ia,B=s.apply(Io,Vi),B}function st(Ia){return pe=Ia,U=Fc(It,c),he?Je(Ia):B}function zt(Ia){var Vi=Ia-G,Io=Ia-pe,nw=c-Vi;return be?on(nw,F-Io):nw}function lt(Ia){var Vi=Ia-G,Io=Ia-pe;return G===a||Vi>=c||Vi<0||be&&Io>=F}function It(){var Ia=Hu();if(lt(Ia))return Rt(Ia);U=Fc(It,zt(Ia))}function Rt(Ia){return U=a,Me&&v?Je(Ia):(v=A=a,B)}function Zn(){U!==a&&Y0(U),pe=0,v=G=A=U=a}function fn(){return U===a?B:Rt(Hu())}function Gn(){var Ia=Hu(),Vi=lt(Ia);if(v=arguments,A=this,G=Ia,Vi){if(U===a)return st(G);if(be)return Y0(U),U=Fc(It,c),Je(G)}return U===a&&(U=Fc(It,c)),B}return Gn.cancel=Zn,Gn.flush=fn,Gn}var e4=Et(function(s,c){return P0(s,1,c)}),t4=Et(function(s,c,m){return P0(s,xi(c)||0,m)});function a4(s){return Eo(s,q)}function Wu(s,c){if(typeof s!="function"||c!=null&&typeof c!="function")throw new vi(r);var m=function(){var v=arguments,A=c?c.apply(this,v):v[0],F=m.cache;if(F.has(A))return F.get(A);var B=s.apply(this,v);return m.cache=F.set(A,B)||F,B};return m.cache=new(Wu.Cache||zo),m}Wu.Cache=zo;function Ku(s){if(typeof s!="function")throw new vi(r);return function(){var c=arguments;switch(c.length){case 0:return!s.call(this);case 1:return!s.call(this,c[0]);case 2:return!s.call(this,c[0],c[1]);case 3:return!s.call(this,c[0],c[1],c[2])}return!s.apply(this,c)}}function n4(s){return Nk(2,s)}var i4=qT(function(s,c){c=c.length==1&&ht(c[0])?ya(c[0],Wn(ot())):ya(Xa(c,1),Wn(ot()));var m=c.length;return Et(function(v){for(var A=-1,F=on(v.length,m);++A=c}),us=T0(function(){return arguments}())?T0:function(s){return Ea(s)&&aa.call(s,"callee")&&!v0.call(s,"callee")},ht=ne.isArray,y4=Xb?Wn(Xb):PT;function Pn(s){return s!=null&&Yu(s.length)&&!jo(s)}function Ta(s){return Ea(s)&&Pn(s)}function b4(s){return s===!0||s===!1||Ea(s)&&mn(s)==xe}var vr=Nj||Yf,k4=e0?Wn(e0):ET;function w4(s){return Ea(s)&&s.nodeType===1&&!Mc(s)}function x4(s){if(s==null)return!0;if(Pn(s)&&(ht(s)||typeof s=="string"||typeof s.splice=="function"||vr(s)||gl(s)||us(s)))return!s.length;var c=rn(s);if(c==x||c==we)return!s.size;if(Nc(s))return!_f(s).length;for(var m in s)if(aa.call(s,m))return!1;return!0}function D4(s,c){return jc(s,c)}function S4(s,c,m){m=typeof m=="function"?m:a;var v=m?m(s,c):a;return v===a?jc(s,c,a,m):!!v}function Of(s){if(!Ea(s))return!1;var c=mn(s);return c==rt||c==Oe||typeof s.message=="string"&&typeof s.name=="string"&&!Mc(s)}function z4(s){return typeof s=="number"&&b0(s)}function jo(s){if(!Sa(s))return!1;var c=mn(s);return c==vt||c==S||c==ce||c==Se}function Lk(s){return typeof s=="number"&&s==wt(s)}function Yu(s){return typeof s=="number"&&s>-1&&s%1==0&&s<=Pe}function Sa(s){var c=typeof s;return s!=null&&(c=="object"||c=="function")}function Ea(s){return s!=null&&typeof s=="object"}var Bk=t0?Wn(t0):CT;function P4(s,c){return s===c||uf(s,c,Ef(c))}function E4(s,c,m){return m=typeof m=="function"?m:a,uf(s,c,Ef(c),m)}function A4(s){return Uk(s)&&s!=+s}function C4(s){if(mI(s))throw new pt(o);return I0(s)}function j4(s){return s===null}function T4(s){return s==null}function Uk(s){return typeof s=="number"||Ea(s)&&mn(s)==O}function Mc(s){if(!Ea(s)||mn(s)!=Y)return!1;var c=ku(s);if(c===null)return!0;var m=aa.call(c,"constructor")&&c.constructor;return typeof m=="function"&&m instanceof m&&gu.call(m)==Ej}var $f=a0?Wn(a0):jT;function I4(s){return Lk(s)&&s>=-Pe&&s<=Pe}var Vk=n0?Wn(n0):TT;function Zu(s){return typeof s=="string"||!ht(s)&&Ea(s)&&mn(s)==ve}function Yn(s){return typeof s=="symbol"||Ea(s)&&mn(s)==Ne}var gl=i0?Wn(i0):IT;function N4(s){return s===a}function F4(s){return Ea(s)&&rn(s)==Ee}function M4(s){return Ea(s)&&mn(s)==J}var R4=$u(mf),O4=$u(function(s,c){return s<=c});function qk(s){if(!s)return[];if(Pn(s))return Zu(s)?Li(s):zn(s);if(xc&&s[xc])return hj(s[xc]());var c=rn(s),m=c==x?Xp:c==we?pu:vl;return m(s)}function To(s){if(!s)return s===0?s:0;if(s=xi(s),s===Ce||s===-Ce){var c=s<0?-1:1;return c*Ke}return s===s?s:0}function wt(s){var c=To(s),m=c%1;return c===c?m?c-m:c:0}function Hk(s){return s?ss(wt(s),0,Qe):0}function xi(s){if(typeof s=="number")return s;if(Yn(s))return re;if(Sa(s)){var c=typeof s.valueOf=="function"?s.valueOf():s;s=Sa(c)?c+"":c}if(typeof s!="string")return s===0?s:+s;s=d0(s);var m=Ip.test(s);return m||Fp.test(s)?XC(s.slice(2),m?2:8):Tp.test(s)?re:+s}function Wk(s){return lo(s,En(s))}function $4(s){return s?ss(wt(s),-Pe,Pe):s===0?s:0}function Xt(s){return s==null?"":Kn(s)}var L4=pl(function(s,c){if(Nc(c)||Pn(c)){lo(c,Ka(c),s);return}for(var m in c)aa.call(c,m)&&Ec(s,m,c[m])}),Kk=pl(function(s,c){lo(c,En(c),s)}),Gu=pl(function(s,c,m,v){lo(c,En(c),s,v)}),B4=pl(function(s,c,m,v){lo(c,Ka(c),s,v)}),U4=Ao(rf);function V4(s,c){var m=ml(s);return c==null?m:S0(m,c)}var q4=Et(function(s,c){s=ca(s);var m=-1,v=c.length,A=v>2?c[2]:a;for(A&&pn(c[0],c[1],A)&&(v=1);++m1),F}),lo(s,zf(s),m),v&&(m=bi(m,f|p|h,tI));for(var A=c.length;A--;)vf(m,c[A]);return m});function l3(s,c){return Zk(s,Ku(ot(c)))}var c3=Ao(function(s,c){return s==null?{}:MT(s,c)});function Zk(s,c){if(s==null)return{};var m=ya(zf(s),function(v){return[v]});return c=ot(c),L0(s,m,function(v,A){return c(v,A[0])})}function d3(s,c,m){c=hr(c,s);var v=-1,A=c.length;for(A||(A=1,s=a);++vc){var v=s;s=c,c=v}if(m||s%1||c%1){var A=k0();return on(s+A*(c-s+JC("1e-"+((A+"").length-1))),c)}return ff(s,c)}var k3=fl(function(s,c,m){return c=c.toLowerCase(),s+(m?Jk(c):c)});function Jk(s){return Uf(Xt(s).toLowerCase())}function Xk(s){return s=Xt(s),s&&s.replace(Rp,uj).replace(UC,"")}function w3(s,c,m){s=Xt(s),c=Kn(c);var v=s.length;m=m===a?v:ss(wt(m),0,v);var A=m;return m-=c.length,m>=0&&s.slice(m,A)==c}function x3(s){return s=Xt(s),s&&M.test(s)?s.replace(lu,_j):s}function D3(s){return s=Xt(s),s&&St.test(s)?s.replace(Ye,"\\$&"):s}var S3=fl(function(s,c,m){return s+(m?"-":"")+c.toLowerCase()}),z3=fl(function(s,c,m){return s+(m?" ":"")+c.toLowerCase()}),P3=ak("toLowerCase");function E3(s,c,m){s=Xt(s),c=wt(c);var v=c?ll(s):0;if(!c||v>=c)return s;var A=(c-v)/2;return Ou(Su(A),m)+s+Ou(Du(A),m)}function A3(s,c,m){s=Xt(s),c=wt(c);var v=c?ll(s):0;return c&&v>>0,m?(s=Xt(s),s&&(typeof c=="string"||c!=null&&!$f(c))&&(c=Kn(c),!c&&sl(s))?gr(Li(s),0,m):s.split(c,m)):[]}var M3=fl(function(s,c,m){return s+(m?" ":"")+Uf(c)});function R3(s,c,m){return s=Xt(s),m=m==null?0:ss(wt(m),0,s.length),c=Kn(c),s.slice(m,m+c.length)==c}function O3(s,c,m){var v=I.templateSettings;m&&pn(s,c,m)&&(c=a),s=Xt(s),c=Gu({},c,v,ck);var A=Gu({},c.imports,v.imports,ck),F=Ka(A),B=Jp(A,F),U,G,pe=0,he=c.interpolate||il,be="__p += '",Me=ef((c.escape||il).source+"|"+he.source+"|"+(he===se?kc:il).source+"|"+(c.evaluate||il).source+"|$","g"),Je="//# sourceURL="+(aa.call(c,"sourceURL")?(c.sourceURL+"").replace(/\s/g," "):"lodash.templateSources["+ ++KC+"]")+` +`;s.replace(Me,function(lt,It,Rt,Zn,fn,Gn){return Rt||(Rt=Zn),be+=s.slice(pe,Gn).replace(DC,mj),It&&(U=!0,be+=`' + +__e(`+It+`) + +'`),fn&&(G=!0,be+=`'; `+fn+`; -__p += '`),Ot&&(ye+=`' + -((__t = (`+Ot+`)) == null ? '' : __t) + -'`),me=Gn+lt.length,lt}),ye+=`'; -`;var rt=aa.call(c,"variable")&&c.variable;if(!rt)ye=`with (obj) { -`+ye+` +__p += '`),Rt&&(be+=`' + +((__t = (`+Rt+`)) == null ? '' : __t) + +'`),pe=Gn+lt.length,lt}),be+=`'; +`;var st=aa.call(c,"variable")&&c.variable;if(!st)be=`with (obj) { +`+be+` } -`;else if(cs.test(rt))throw new pt(l);ye=(Y?ye.replace(al,""):ye).replace(nl,"$1").replace(bc,"$1;"),ye="function("+(rt||"obj")+`) { -`+(rt?"":`obj || (obj = {}); -`)+"var __t, __p = ''"+(L?", __e = _.escape":"")+(Y?`, __j = Array.prototype.join; +`;else if(cr.test(st))throw new pt(l);be=(G?be.replace(al,""):be).replace(nl,"$1").replace(bc,"$1;"),be="function("+(st||"obj")+`) { +`+(st?"":`obj || (obj = {}); +`)+"var __t, __p = ''"+(U?", __e = _.escape":"")+(G?`, __j = Array.prototype.join; function print() { __p += __j.call(arguments, '') } `:`; -`)+ye+`return __p -}`;var Pt=t0(function(){return Qt(N,Qe+"return "+ye).apply(a,M)});if(Pt.source=ye,$f(Pt))throw Pt;return Pt}function LR(r){return Xt(r).toLowerCase()}function BR(r){return Xt(r).toUpperCase()}function UR(r,c,m){if(r=Xt(r),r&&(m||c===a))return dk(r);if(!r||!(c=Kn(c)))return r;var v=Li(r),z=Li(c),N=uk(v,z),M=_k(v,z)+1;return gs(v,N,M).join("")}function VR(r,c,m){if(r=Xt(r),r&&(m||c===a))return r.slice(0,pk(r)+1);if(!r||!(c=Kn(c)))return r;var v=Li(r),z=_k(v,Li(c))+1;return gs(v,0,z).join("")}function qR(r,c,m){if(r=Xt(r),r&&(m||c===a))return r.replace(We,"");if(!r||!(c=Kn(c)))return r;var v=Li(r),z=uk(v,Li(c));return gs(v,z).join("")}function WR(r,c){var m=V,v=ee;if(Sa(c)){var z="separator"in c?c.separator:z;m="length"in c?wt(c.length):m,v="omission"in c?Kn(c.omission):v}r=Xt(r);var N=r.length;if(rl(r)){var M=Li(r);N=M.length}if(m>=N)return r;var L=m-ll(v);if(L<1)return v;var Y=M?gs(M,0,L).join(""):r.slice(0,L);if(z===a)return Y+v;if(M&&(L+=Y.length-L),Lf(z)){if(r.slice(L).search(z)){var me,fe=Y;for(z.global||(z=tf(z.source,Xt(cu.exec(z))+"g")),z.lastIndex=0;me=z.exec(fe);)var ye=me.index;Y=Y.slice(0,ye===a?L:ye)}}else if(r.indexOf(Kn(z),L)!=L){var Fe=Y.lastIndexOf(z);Fe>-1&&(Y=Y.slice(0,Fe))}return Y+v}function HR(r){return r=Xt(r),r&&Tp.test(r)?r.replace(pi,kj):r}var KR=fl(function(r,c,m){return r+(m?" ":"")+c.toUpperCase()}),Vf=aw("toUpperCase");function e0(r,c,m){return r=Xt(r),c=m?a:c,c===a?hj(r)?xj(r):rj(r):r.match(c)||[]}var t0=zt(function(r,c){try{return Wn(r,a,c)}catch(m){return $f(m)?m:new pt(m)}}),YR=Ao(function(r,c){return gi(c,function(m){m=co(m),Eo(r,m,Of(r[m],r))}),r});function ZR(r){var c=r==null?0:r.length,m=ot();return r=c?ya(r,function(v){if(typeof v[1]!="function")throw new vi(s);return[m(v[0]),v[1]]}):[],zt(function(v){for(var z=-1;++zPe)return[];var m=Ge,v=on(r,Ge);c=ot(c),r-=Ge;for(var z=Jp(v,c);++m0||c<0)?new Ft(m):(r<0?m=m.takeRight(-r):r&&(m=m.drop(r)),c!==a&&(c=wt(c),m=c<0?m.dropRight(-c):m.take(c-r)),m)},Ft.prototype.takeRightWhile=function(r){return this.reverse().takeWhile(r).reverse()},Ft.prototype.toArray=function(){return this.take(Ge)},ro(Ft.prototype,function(r,c){var m=/^(?:filter|find|map|reject)|While$/.test(c),v=/^(?:head|last)$/.test(c),z=T[v?"take"+(c=="last"?"Right":""):c],N=v||/^find/.test(c);z&&(T.prototype[c]=function(){var M=this.__wrapped__,L=v?[1]:arguments,Y=M instanceof Ft,me=L[0],fe=Y||ht(M),ye=function(Nt){var Ot=z.apply(T,us([Nt],L));return v&&Fe?Ot[0]:Ot};fe&&m&&typeof me=="function"&&me.length!=1&&(Y=fe=!1);var Fe=this.__chain__,Qe=!!this.__actions__.length,rt=N&&!Fe,Pt=Y&&!Qe;if(!N&&fe){M=Pt?M:new Ft(this);var lt=r.apply(M,L);return lt.__actions__.push({func:Vu,args:[ye],thisArg:a}),new yi(lt,Fe)}return rt&&Pt?r.apply(this,L):(lt=this.thru(ye),rt?v?lt.value()[0]:lt.value():lt)})}),gi(["pop","push","shift","sort","splice","unshift"],function(r){var c=fu[r],m=/^(?:push|sort|unshift)$/.test(r)?"tap":"thru",v=/^(?:pop|shift)$/.test(r);T.prototype[r]=function(){var z=arguments;if(v&&!this.__chain__){var N=this.value();return c.apply(ht(N)?N:[],z)}return this[m](function(M){return c.apply(ht(M)?M:[],z)})}}),ro(Ft.prototype,function(r,c){var m=T[c];if(m){var v=m.name+"";aa.call(_l,v)||(_l[v]=[]),_l[v].push({name:c,func:m})}}),_l[Ru(a,b).name]=[{name:"wrapper",func:a}],Ft.prototype.clone=Hj,Ft.prototype.reverse=Kj,Ft.prototype.value=Yj,T.prototype.at=D2,T.prototype.chain=x2,T.prototype.commit=S2,T.prototype.next=P2,T.prototype.plant=z2,T.prototype.reverse=A2,T.prototype.toJSON=T.prototype.valueOf=T.prototype.value=C2,T.prototype.first=T.prototype.head,Dc&&(T.prototype[Dc]=E2),T},cl=Sj();nr?((nr.exports=cl)._=cl,qp._=cl):Ja._=cl}).call(Oc)})(Q_,Q_.exports);var yE=Q_.exports;const Qi=fm(yE),Vm=(e=!1)=>{const t=e?window.pinia.defineStore:un,{global:a}=window.i18n;return t({id:"global",state:()=>({config:null,globalSettings:null,timeZones:[],dateFormats:[],currencies:[],countries:[],languages:[],fiscalYears:[],mainMenu:[],settingMenu:[],isAppLoaded:!1,isSidebarOpen:!1,areCurrenciesLoading:!1,downloadReport:null}),getters:{menuGroups:n=>Object.values(Qi.groupBy(n.mainMenu,"group"))},actions:{bootstrap(){return new Promise((n,i)=>{ve.get("/api/v1/bootstrap").then(o=>{const s=es(),l=Gr(),d=p8();this.mainMenu=o.data.main_menu,this.settingMenu=o.data.setting_menu,this.config=o.data.config,this.globalSettings=o.data.global_settings,l.currentUser=o.data.current_user,l.currentUserSettings=o.data.current_user_settings,l.currentAbilities=o.data.current_user_abilities,d.apiToken=o.data.global_settings.api_token,d.enableModules=o.data.modules,s.companies=o.data.companies,s.selectedCompany=o.data.current_company,s.setSelectedCompany(o.data.current_company),s.selectedCompanySettings=o.data.current_company_settings,s.selectedCompanyCurrency=o.data.current_company_currency,a.locale=o.data.current_user_settings.language||"en",this.isAppLoaded=!0,n(o)}).catch(o=>{be(o),i(o)})})},fetchCurrencies(){return new Promise((n,i)=>{this.currencies.length||this.areCurrenciesLoading?n(this.currencies):(this.areCurrenciesLoading=!0,ve.get("/api/v1/currencies").then(o=>{this.currencies=o.data.data.filter(s=>s.name=`${s.code} - ${s.name}`),this.areCurrenciesLoading=!1,n(o)}).catch(o=>{be(o),this.areCurrenciesLoading=!1,i(o)}))})},fetchConfig(n){return new Promise((i,o)=>{ve.get("/api/v1/config",{params:n}).then(s=>{s.data.languages?this.languages=s.data.languages:this.fiscalYears=s.data.fiscal_years,i(s)}).catch(s=>{be(s),o(s)})})},fetchDateFormats(){return new Promise((n,i)=>{this.dateFormats.length?n(this.dateFormats):ve.get("/api/v1/date/formats").then(o=>{this.dateFormats=o.data.date_formats,n(o)}).catch(o=>{be(o),i(o)})})},fetchTimeZones(){return new Promise((n,i)=>{this.timeZones.length?n(this.timeZones):ve.get("/api/v1/timezones").then(o=>{this.timeZones=o.data.time_zones,n(o)}).catch(o=>{be(o),i(o)})})},fetchCountries(){return new Promise((n,i)=>{this.countries.length?n(this.countries):ve.get("/api/v1/countries").then(o=>{this.countries=o.data.data,n(o)}).catch(o=>{be(o),i(o)})})},fetchPlaceholders(n){return new Promise((i,o)=>{ve.get("/api/v1/number-placeholders",{params:n}).then(s=>{i(s)}).catch(s=>{be(s),o(s)})})},setSidebarVisibility(n){this.isSidebarOpen=n},setIsAppLoaded(n){this.isAppLoaded=n},updateGlobalSettings({data:n,message:i}){return new Promise((o,s)=>{ve.post("/api/v1/settings",n).then(l=>{Object.assign(this.globalSettings,n.settings),i&>().showNotification({type:"success",message:a.t(i)}),o(l)}).catch(l=>{be(l),s(l)})})}}})()},It={DASHBOARD:"dashboard",CREATE_CUSTOMER:"create-customer",DELETE_CUSTOMER:"delete-customer",EDIT_CUSTOMER:"edit-customer",VIEW_CUSTOMER:"view-customer",CREATE_ITEM:"create-item",DELETE_ITEM:"delete-item",EDIT_ITEM:"edit-item",VIEW_ITEM:"view-item",CREATE_TAX_TYPE:"create-tax-type",DELETE_TAX_TYPE:"delete-tax-type",EDIT_TAX_TYPE:"edit-tax-type",VIEW_TAX_TYPE:"view-tax-type",CREATE_ESTIMATE:"create-estimate",DELETE_ESTIMATE:"delete-estimate",EDIT_ESTIMATE:"edit-estimate",VIEW_ESTIMATE:"view-estimate",SEND_ESTIMATE:"send-estimate",CREATE_INVOICE:"create-invoice",DELETE_INVOICE:"delete-invoice",EDIT_INVOICE:"edit-invoice",VIEW_INVOICE:"view-invoice",SEND_INVOICE:"send-invoice",CREATE_RECURRING_INVOICE:"create-recurring-invoice",DELETE_RECURRING_INVOICE:"delete-recurring-invoice",EDIT_RECURRING_INVOICE:"edit-recurring-invoice",VIEW_RECURRING_INVOICE:"view-recurring-invoice",CREATE_PAYMENT:"create-payment",DELETE_PAYMENT:"delete-payment",EDIT_PAYMENT:"edit-payment",VIEW_PAYMENT:"view-payment",SEND_PAYMENT:"send-payment",CREATE_EXPENSE:"create-expense",DELETE_EXPENSE:"delete-expense",EDIT_EXPENSE:"edit-expense",VIEW_EXPENSE:"view-expense",CREATE_CUSTOM_FIELDS:"create-custom-field",DELETE_CUSTOM_FIELDS:"delete-custom-field",EDIT_CUSTOM_FIELDS:"edit-custom-field",VIEW_CUSTOM_FIELDS:"view-custom-field",CREATE_ROLE:"create-role",DELETE_ROLE:"delete-role",EDIT_ROLE:"edit-role",VIEW_ROLE:"view-role",VIEW_EXCHANGE_RATE:"view-exchange-rate-provider",CREATE_EXCHANGE_RATE:"create-exchange-rate-provider",EDIT_EXCHANGE_RATE:"edit-exchange-rate-provider",DELETE_EXCHANGE_RATE:"delete-exchange-rate-provider",VIEW_FINANCIAL_REPORT:"view-financial-reports",MANAGE_NOTE:"manage-all-notes",VIEW_NOTE:"view-all-notes"},f8=()=>Ue(()=>import("./LayoutInstallation-fEvjtvoe.js"),__vite__mapDeps([0,1])),zD=()=>Ue(()=>import("./Login-qSnFzhLI.js"),__vite__mapDeps([])),h8=()=>Ue(()=>import("./LayoutBasic-V9JZ7lRm.js"),__vite__mapDeps([2,3,4,1,5])),g8=()=>Ue(()=>import("./LayoutLogin-5OiQ-1Km.js"),__vite__mapDeps([6,1])),v8=()=>Ue(()=>import("./ResetPassword-PSrdG8Tw.js"),__vite__mapDeps([])),y8=()=>Ue(()=>import("./ForgotPassword-CQGBjnxL.js"),__vite__mapDeps([])),b8=()=>Ue(()=>import("./Dashboard-sZcX62iF.js"),__vite__mapDeps([7,8,9,10,11])),k8=()=>Ue(()=>import("./Index-Qw08FSdl.js"),__vite__mapDeps([12,13,14])),AD=()=>Ue(()=>import("./Create-mAHdbU7f.js"),__vite__mapDeps([15,16,17])),w8=()=>Ue(()=>import("./View-NkeVhKPD.js"),__vite__mapDeps([18,19,9,13])),D8=()=>Ue(()=>import("./SettingsIndex-WE5DRCcH.js"),__vite__mapDeps([20,21])),x8=()=>Ue(()=>import("./AccountSetting-B6yy8qIQ.js"),__vite__mapDeps([])),S8=()=>Ue(()=>import("./CompanyInfoSettings-FLrn6P4R.js"),__vite__mapDeps([])),P8=()=>Ue(()=>import("./PreferencesSetting-vRzqnBdk.js"),__vite__mapDeps([])),E8=()=>Ue(()=>import("./CustomizationSetting-MLhGHNRk.js"),__vite__mapDeps([22,23,24,25])),z8=()=>Ue(()=>import("./NotificationsSetting-jWGngTC2.js"),__vite__mapDeps([])),A8=()=>Ue(()=>import("./TaxTypesSetting-BIuO7eBP.js"),__vite__mapDeps([26,27])),C8=()=>Ue(()=>import("./PaymentsModeSetting-pqfwRfb2.js"),__vite__mapDeps([28,24,29])),T8=()=>Ue(()=>import("./CustomFieldsSetting-KK9JvhDD.js"),__vite__mapDeps([30,17])),j8=()=>Ue(()=>import("./NotesSetting--1BykhOs.js"),__vite__mapDeps([31,32,24,33])),N8=()=>Ue(()=>import("./ExpenseCategorySetting-GOeo_7eH.js"),__vite__mapDeps([34,35,36])),I8=()=>Ue(()=>import("./ExchangeRateProviderSetting-NqjYUdkP.js"),__vite__mapDeps([37,3,38])),F8=()=>Ue(()=>import("./MailConfigSetting-cbiuQ4Mn.js"),__vite__mapDeps([39,40])),R8=()=>Ue(()=>import("./FileDiskSetting-1PjwUkOr.js"),__vite__mapDeps([41,42])),O8=()=>Ue(()=>import("./BackupSetting-Wus27-ev.js"),__vite__mapDeps([43,42])),M8=()=>Ue(()=>import("./UpdateAppSetting-Zh2KTamO.js"),__vite__mapDeps([44,19,3,45])),$8=()=>Ue(()=>import("./RolesSettings-PhafmDPz.js"),__vite__mapDeps([])),L8=()=>Ue(()=>import("./Index-mPhOMhDG.js"),__vite__mapDeps([])),CD=()=>Ue(()=>import("./Create-AmVfmh-o.js"),__vite__mapDeps([46,25])),B8=()=>Ue(()=>import("./Index-J9q2Id_8.js"),__vite__mapDeps([47,48,35])),TD=()=>Ue(()=>import("./Create-MQfmeR_6.js"),__vite__mapDeps([49,48,35,16,17,36,50,3])),U8=()=>Ue(()=>import("./Index-WIVJ4E0e.js"),__vite__mapDeps([51,4,14])),jD=()=>Ue(()=>import("./Create-LSgUj1Ki.js"),__vite__mapDeps([52,5,4])),V8=()=>Ue(()=>import("./Index-2p3IBp3-.js"),__vite__mapDeps([53,54,11,55,40])),ND=()=>Ue(()=>import("./EstimateCreate-ewZLnmBQ.js"),__vite__mapDeps([56,57,23,58,32,24,33,16,17,50,3,27])),q8=()=>Ue(()=>import("./View-Nhrvsi0r.js"),__vite__mapDeps([59,11,55,40,19])),W8=()=>Ue(()=>import("./Index-hIak5IGl.js"),__vite__mapDeps([60,24,61,62,40])),Sh=()=>Ue(()=>import("./Create-JSaFZRYA.js"),__vite__mapDeps([63,50,3,24,58,32,33,16,17,29])),H8=()=>Ue(()=>import("./View-OTsA5-it.js"),__vite__mapDeps([64,24,62,40,19])),K8=()=>Ue(()=>import("./404-omy4z92C.js"),__vite__mapDeps([])),Y8=()=>Ue(()=>import("./Index-SmoEtxlb.js"),__vite__mapDeps([65,66,10,67,40])),ID=()=>Ue(()=>import("./InvoiceCreate-yj_K6THR.js"),__vite__mapDeps([68,57,23,58,32,24,33,50,3,16,17,27])),Z8=()=>Ue(()=>import("./View-vRzg6k5F.js"),__vite__mapDeps([69,67,40,10,19])),G8=()=>Ue(()=>import("./Index-CPkDZaGI.js"),__vite__mapDeps([70,67,40,71,66])),FD=()=>Ue(()=>import("./RecurringInvoiceCreate-ujZcDwNz.js"),__vite__mapDeps([72,57,23,58,32,24,33,50,3,16,17,27])),Q8=()=>Ue(()=>import("./View-IPZV5Tae.js"),__vite__mapDeps([73,19,10,67,40,71])),J8=()=>Ue(()=>import("./Index-MhiU62G2.js"),__vite__mapDeps([])),X8=()=>Ue(()=>import("./Installation--2oiPiCa.js"),__vite__mapDeps([74,40])),eB=()=>Ue(()=>import("./Index-ZspX5Knx.js"),__vite__mapDeps([])),tB=()=>Ue(()=>import("./View-2muwgQJS.js"),__vite__mapDeps([])),aB=()=>Ue(()=>import("./InvoicePublicPage-Jje65opw.js"),__vite__mapDeps([])),nB=[{path:"/installation",component:f8,meta:{requiresAuth:!1},children:[{path:"/installation",component:X8,name:"installation"}]},{path:"/customer/invoices/view/:hash",component:aB,name:"invoice.public"},{path:"/",component:g8,meta:{requiresAuth:!1,redirectIfAuthenticated:!0},children:[{path:"",component:zD},{path:"login",name:"login",component:zD},{path:"forgot-password",component:y8,name:"forgot-password"},{path:"/reset-password/:token",component:v8,name:"reset-password"}]},{path:"/admin",component:h8,meta:{requiresAuth:!0},children:[{path:"dashboard",name:"dashboard",meta:{ability:It.DASHBOARD},component:b8},{path:"customers",meta:{ability:It.VIEW_CUSTOMER},component:k8},{path:"customers/create",name:"customers.create",meta:{ability:It.CREATE_CUSTOMER},component:AD},{path:"customers/:id/edit",name:"customers.edit",meta:{ability:It.EDIT_CUSTOMER},component:AD},{path:"customers/:id/view",name:"customers.view",meta:{ability:It.VIEW_CUSTOMER},component:w8},{path:"payments",meta:{ability:It.VIEW_PAYMENT},component:W8},{path:"payments/create",name:"payments.create",meta:{ability:It.CREATE_PAYMENT},component:Sh},{path:"payments/:id/create",name:"invoice.payments.create",meta:{ability:It.CREATE_PAYMENT},component:Sh},{path:"payments/:id/edit",name:"payments.edit",meta:{ability:It.EDIT_PAYMENT},component:Sh},{path:"payments/:id/view",name:"payments.view",meta:{ability:It.VIEW_PAYMENT},component:H8},{path:"settings",name:"settings",component:D8,children:[{path:"account-settings",name:"account.settings",component:x8},{path:"company-info",name:"company.info",meta:{isOwner:!0},component:S8},{path:"preferences",name:"preferences",meta:{isOwner:!0},component:P8},{path:"customization",name:"customization",meta:{isOwner:!0},component:E8},{path:"notifications",name:"notifications",meta:{isOwner:!0},component:z8},{path:"roles-settings",name:"roles.settings",meta:{isOwner:!0},component:$8},{path:"exchange-rate-provider",name:"exchange.rate.provider",meta:{ability:It.VIEW_EXCHANGE_RATE},component:I8},{path:"tax-types",name:"tax.types",meta:{ability:It.VIEW_TAX_TYPE},component:A8},{path:"notes",name:"notes",meta:{ability:It.VIEW_ALL_NOTES},component:j8},{path:"payment-mode",name:"payment.mode",component:C8},{path:"custom-fields",name:"custom.fields",meta:{ability:It.VIEW_CUSTOM_FIELDS},component:T8},{path:"expense-category",name:"expense.category",meta:{ability:It.VIEW_EXPENSE},component:N8},{path:"mail-configuration",name:"mailconfig",meta:{isOwner:!0},component:F8},{path:"file-disk",name:"file-disk",meta:{isOwner:!0},component:R8},{path:"backup",name:"backup",meta:{isOwner:!0},component:O8},{path:"update-app",name:"updateapp",meta:{isOwner:!0},component:M8}]},{path:"items",meta:{ability:It.VIEW_ITEM},component:L8},{path:"items/create",name:"items.create",meta:{ability:It.CREATE_ITEM},component:CD},{path:"items/:id/edit",name:"items.edit",meta:{ability:It.EDIT_ITEM},component:CD},{path:"expenses",meta:{ability:It.VIEW_EXPENSE},component:B8},{path:"expenses/create",name:"expenses.create",meta:{ability:It.CREATE_EXPENSE},component:TD},{path:"expenses/:id/edit",name:"expenses.edit",meta:{ability:It.EDIT_EXPENSE},component:TD},{path:"users",name:"users.index",meta:{isOwner:!0},component:U8},{path:"users/create",meta:{isOwner:!0},name:"users.create",component:jD},{path:"users/:id/edit",name:"users.edit",meta:{isOwner:!0},component:jD},{path:"estimates",name:"estimates.index",meta:{ability:It.VIEW_ESTIMATE},component:V8},{path:"estimates/create",name:"estimates.create",meta:{ability:It.CREATE_ESTIMATE},component:ND},{path:"estimates/:id/view",name:"estimates.view",meta:{ability:It.VIEW_ESTIMATE},component:q8},{path:"estimates/:id/edit",name:"estimates.edit",meta:{ability:It.EDIT_ESTIMATE},component:ND},{path:"invoices",name:"invoices.index",meta:{ability:It.VIEW_INVOICE},component:Y8},{path:"invoices/create",name:"invoices.create",meta:{ability:It.CREATE_INVOICE},component:ID},{path:"invoices/:id/view",name:"invoices.view",meta:{ability:It.VIEW_INVOICE},component:Z8},{path:"invoices/:id/edit",name:"invoices.edit",meta:{ability:It.EDIT_INVOICE},component:ID},{path:"recurring-invoices",name:"recurring-invoices.index",meta:{ability:It.VIEW_RECURRING_INVOICE},component:G8},{path:"recurring-invoices/create",name:"recurring-invoices.create",meta:{ability:It.CREATE_RECURRING_INVOICE},component:FD},{path:"recurring-invoices/:id/view",name:"recurring-invoices.view",meta:{ability:It.VIEW_RECURRING_INVOICE},component:Q8},{path:"recurring-invoices/:id/edit",name:"recurring-invoices.edit",meta:{ability:It.EDIT_RECURRING_INVOICE},component:FD},{path:"modules",name:"modules.index",meta:{isOwner:!0},component:eB},{path:"modules/:slug",name:"modules.view",meta:{isOwner:!0},component:tB},{path:"reports",meta:{ability:It.VIEW_FINANCIAL_REPORT},component:J8}]},{path:"/:catchAll(.*)",component:K8}],iB=()=>Ue(()=>import("./LayoutBasic-0mVyUKkQ.js"),__vite__mapDeps([75,76,77,1])),oB=()=>Ue(()=>import("./LayoutLogin-rLG15CE5.js"),__vite__mapDeps([78,1])),RD=()=>Ue(()=>import("./Login-iQufiED6.js"),__vite__mapDeps([79,76])),sB=()=>Ue(()=>import("./ForgotPassword-1SHt_IMw.js"),__vite__mapDeps([80,76])),rB=()=>Ue(()=>import("./ResetPassword--Lr41cj3.js"),__vite__mapDeps([81,77,76])),lB=()=>Ue(()=>import("./Dashboard-Yq-8-XxQ.js"),__vite__mapDeps([82,8,77,76,38])),cB=()=>Ue(()=>import("./Index-gDg24jVy.js"),__vite__mapDeps([83,84,76,38,77,66])),dB=()=>Ue(()=>import("./View-AlNYu5Xd.js"),__vite__mapDeps([85,84,76,77])),uB=()=>Ue(()=>import("./Index-Pk8nTHrn.js"),__vite__mapDeps([86,38,77,76,87,54])),_B=()=>Ue(()=>import("./View-5H6o1eed.js"),__vite__mapDeps([88,87,76,77])),mB=()=>Ue(()=>import("./Index-0XtKLJ6H.js"),__vite__mapDeps([89,38,61,90,76,77])),pB=()=>Ue(()=>import("./View-JlVuxFuE.js"),__vite__mapDeps([91,90,76,77])),fB=()=>Ue(()=>import("./SettingsIndex-D1AcZECg.js"),__vite__mapDeps([92,21,77,76])),hB=()=>Ue(()=>import("./CustomerSettings-bvSAIR6O.js"),__vite__mapDeps([93,77,76])),gB=()=>Ue(()=>import("./AddressInformation-uSpUozh3.js"),__vite__mapDeps([94,77,76])),vB=[{path:"/:company/customer",component:oB,meta:{redirectIfAuthenticated:!0},children:[{path:"",component:RD},{path:"login",component:RD,name:"customer.login"},{path:"forgot-password",component:sB,name:"customer.forgot-password"},{path:"reset/password/:token",component:rB,name:"customer.reset-password"}]},{path:"/:company/customer",component:iB,meta:{requiresAuth:!0},children:[{path:"dashboard",component:lB,name:"customer.dashboard"},{path:"invoices",component:cB,name:"invoices.dashboard"},{path:"invoices/:id/view",component:dB,name:"customer.invoices.view"},{path:"estimates",component:uB,name:"estimates.dashboard"},{path:"estimates/:id/view",component:_B,name:"customer.estimates.view"},{path:"payments",component:mB,name:"payments.dashboard"},{path:"payments/:id/view",component:pB,name:"customer.payments.view"},{path:"settings",component:fB,name:"customer",children:[{path:"customer-profile",component:hB,name:"customer.profile"},{path:"address-info",component:gB,name:"customer.address.info"}]}]}];let Pg=[];Pg=Pg.concat(nB,vB);const J_=mE({history:fy(),linkActiveClass:"active",routes:Pg});J_.beforeEach((e,t,a)=>{const n=Gr(),i=Vm();let o=e.meta.ability;const{isAppLoaded:s}=i;o&&s&&e.meta.requiresAuth?n.hasAbilities(o)?a():a({name:"account.settings"}):e.meta.isOwner&&s?n.currentUser.is_owner?a():a({name:"dashboard"}):a()});function OD(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),a.push.apply(a,n)}return a}function Ns(e){for(var t=1;t1&&arguments[1]!==void 0?arguments[1]:[];return Object.keys(e).reduce((a,n)=>(t.includes(n)||(a[n]=O(e[n])),a),{})}function X_(e){return typeof e=="function"}function bB(e){return Gi(e)||Us(e)}function bE(e,t,a){let n=e;const i=t.split(".");for(let o=0;oe.some(n=>bE(t,n,{[a]:!1})[a]))}function $D(e,t,a){return B(()=>e.reduce((n,i)=>{const o=bE(t,i,{[a]:!1})[a]||[];return n.concat(o)},[]))}function kE(e,t,a,n){return e.call(n,O(t),O(a),n)}function wE(e){return e.$valid!==void 0?!e.$valid:!e}function kB(e,t,a,n,i,o,s){let{$lazy:l,$rewardEarly:d}=i,u=arguments.length>7&&arguments[7]!==void 0?arguments[7]:[],_=arguments.length>8?arguments[8]:void 0,f=arguments.length>9?arguments[9]:void 0,p=arguments.length>10?arguments[10]:void 0;const h=re(!!n.value),g=re(0);a.value=!1;const y=Yt([t,n].concat(u,p),()=>{if(l&&!n.value||d&&!f.value&&!a.value)return;let k;try{k=kE(e,t,_,s)}catch(b){k=Promise.reject(b)}g.value++,a.value=!!g.value,h.value=!1,Promise.resolve(k).then(b=>{g.value--,a.value=!!g.value,o.value=b,h.value=wE(b)}).catch(b=>{g.value--,a.value=!!g.value,o.value=b,h.value=!0})},{immediate:!0,deep:typeof t=="object"});return{$invalid:h,$unwatch:y}}function wB(e,t,a,n,i,o,s,l){let{$lazy:d,$rewardEarly:u}=n;const _=()=>({}),f=B(()=>{if(d&&!a.value||u&&!l.value)return!1;let p=!0;try{const h=kE(e,t,s,o);i.value=h,p=wE(h)}catch(h){i.value=h}return p});return{$unwatch:_,$invalid:f}}function DB(e,t,a,n,i,o,s,l,d,u,_){const f=re(!1),p=e.$params||{},h=re(null);let g,y;e.$async?{$invalid:g,$unwatch:y}=kB(e.$validator,t,f,a,n,h,i,e.$watchTargets,d,u,_):{$invalid:g,$unwatch:y}=wB(e.$validator,t,a,n,h,i,d,u);const k=e.$message;return{$message:X_(k)?B(()=>k(MD({$pending:f,$invalid:g,$params:MD(p),$model:t,$response:h,$validator:o,$propertyPath:l,$property:s}))):k||"",$params:p,$pending:f,$invalid:g,$response:h,$unwatch:y}}function xB(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const t=O(e),a=Object.keys(t),n={},i={},o={};let s=null;return a.forEach(l=>{const d=t[l];switch(!0){case X_(d.$validator):n[l]=d;break;case X_(d):n[l]={$validator:d};break;case l==="$validationGroups":s=d;break;case l.startsWith("$"):o[l]=d;break;default:i[l]=d}}),{rules:n,nestedValidators:i,config:o,validationGroups:s}}const SB="__root";function PB(e,t,a,n,i,o,s,l,d){const u=Object.keys(e),_=n.get(i,e),f=re(!1),p=re(!1),h=re(0);if(_){if(!_.$partial)return _;_.$unwatch(),f.value=_.$dirty.value}const g={$dirty:f,$path:i,$touch:()=>{f.value||(f.value=!0)},$reset:()=>{f.value&&(f.value=!1)},$commit:()=>{}};return u.length?(u.forEach(y=>{g[y]=DB(e[y],t,g.$dirty,o,s,y,a,i,d,p,h)}),g.$externalResults=B(()=>l.value?[].concat(l.value).map((y,k)=>({$propertyPath:i,$property:a,$validator:"$externalResults",$uid:`${i}-externalResult-${k}`,$message:y,$params:{},$response:null,$pending:!1})):[]),g.$invalid=B(()=>{const y=u.some(k=>O(g[k].$invalid));return p.value=y,!!g.$externalResults.value.length||y}),g.$pending=B(()=>u.some(y=>O(g[y].$pending))),g.$error=B(()=>g.$dirty.value?g.$pending.value||g.$invalid.value:!1),g.$silentErrors=B(()=>u.filter(y=>O(g[y].$invalid)).map(y=>{const k=g[y];return ui({$propertyPath:i,$property:a,$validator:y,$uid:`${i}-${y}`,$message:k.$message,$params:k.$params,$response:k.$response,$pending:k.$pending})}).concat(g.$externalResults.value)),g.$errors=B(()=>g.$dirty.value?g.$silentErrors.value:[]),g.$unwatch=()=>u.forEach(y=>{g[y].$unwatch()}),g.$commit=()=>{p.value=!0,h.value=Date.now()},n.set(i,e,g),g):(_&&n.set(i,e,g),g)}function EB(e,t,a,n,i,o,s){const l=Object.keys(e);return l.length?l.reduce((d,u)=>(d[u]=Eg({validations:e[u],state:t,key:u,parentKey:a,resultsCache:n,globalConfig:i,instance:o,externalResults:s}),d),{}):{}}function zB(e,t,a){const n=B(()=>[t,a].filter(g=>g).reduce((g,y)=>g.concat(Object.values(O(y))),[])),i=B({get(){return e.$dirty.value||(n.value.length?n.value.every(g=>g.$dirty):!1)},set(g){e.$dirty.value=g}}),o=B(()=>{const g=O(e.$silentErrors)||[],y=n.value.filter(k=>(O(k).$silentErrors||[]).length).reduce((k,b)=>k.concat(...b.$silentErrors),[]);return g.concat(y)}),s=B(()=>{const g=O(e.$errors)||[],y=n.value.filter(k=>(O(k).$errors||[]).length).reduce((k,b)=>k.concat(...b.$errors),[]);return g.concat(y)}),l=B(()=>n.value.some(g=>g.$invalid)||O(e.$invalid)||!1),d=B(()=>n.value.some(g=>O(g.$pending))||O(e.$pending)||!1),u=B(()=>n.value.some(g=>g.$dirty)||n.value.some(g=>g.$anyDirty)||i.value),_=B(()=>i.value?d.value||l.value:!1),f=()=>{e.$touch(),n.value.forEach(g=>{g.$touch()})},p=()=>{e.$commit(),n.value.forEach(g=>{g.$commit()})},h=()=>{e.$reset(),n.value.forEach(g=>{g.$reset()})};return n.value.length&&n.value.every(g=>g.$dirty)&&f(),{$dirty:i,$errors:s,$invalid:l,$anyDirty:u,$error:_,$pending:d,$touch:f,$reset:h,$silentErrors:o,$commit:p}}function Eg(e){let{validations:t,state:a,key:n,parentKey:i,childResults:o,resultsCache:s,globalConfig:l={},instance:d,externalResults:u}=e;const _=i?`${i}.${n}`:n,{rules:f,nestedValidators:p,config:h,validationGroups:g}=xB(t),y=Ns(Ns({},l),h),k=n?B(()=>{const oe=O(a);return oe?O(oe[n]):void 0}):a,b=Ns({},O(u)||{}),P=B(()=>{const oe=O(u);return n?oe?O(oe[n]):void 0:oe}),w=PB(f,k,n,s,_,y,d,P,a),x=EB(p,k,_,s,y,d,P),E={};g&&Object.entries(g).forEach(oe=>{let[Ge,at]=oe;E[Ge]={$invalid:Ph(at,x,"$invalid"),$error:Ph(at,x,"$error"),$pending:Ph(at,x,"$pending"),$errors:$D(at,x,"$errors"),$silentErrors:$D(at,x,"$silentErrors")}});const{$dirty:C,$errors:j,$invalid:A,$anyDirty:U,$error:V,$pending:ee,$touch:J,$reset:ie,$silentErrors:Te,$commit:ze}=zB(w,x,o),ce=n?B({get:()=>O(k),set:oe=>{C.value=!0;const Ge=O(a),at=O(u);at&&(at[n]=b[n]),ea(Ge[n])?Ge[n].value=oe:Ge[n]=oe}}):null;n&&y.$autoDirty&&Yt(k,()=>{C.value||J();const oe=O(u);oe&&(oe[n]=b[n])},{flush:"sync"});async function Ae(){return J(),y.$rewardEarly&&(ze(),await ha()),await ha(),new Promise(oe=>{if(!ee.value)return oe(!A.value);const Ge=Yt(ee,()=>{oe(!A.value),Ge()})})}function Pe(oe){return(o.value||{})[oe]}function He(){ea(u)?u.value=b:Object.keys(b).length===0?Object.keys(u).forEach(oe=>{delete u[oe]}):Object.assign(u,b)}return ui(Ns(Ns(Ns({},w),{},{$model:ce,$dirty:C,$error:V,$errors:j,$invalid:A,$anyDirty:U,$pending:ee,$touch:J,$reset:ie,$path:_||SB,$silentErrors:Te,$validate:Ae,$commit:ze},o&&{$getResultsForChild:Pe,$clearExternalResults:He,$validationGroups:E}),x))}class AB{constructor(){this.storage=new Map}set(t,a,n){this.storage.set(t,{rules:a,result:n})}checkRulesValidity(t,a,n){const i=Object.keys(n),o=Object.keys(a);return o.length!==i.length||!o.every(l=>i.includes(l))?!1:o.every(l=>a[l].$params?Object.keys(a[l].$params).every(d=>O(n[l].$params[d])===O(a[l].$params[d])):!0)}get(t,a){const n=this.storage.get(t);if(!n)return;const{rules:i,result:o}=n,s=this.checkRulesValidity(t,a,i),l=o.$unwatch?o.$unwatch:()=>({});return s?o:{$dirty:o.$dirty,$partial:!0,$unwatch:l}}}const id={COLLECT_ALL:!0,COLLECT_NONE:!1},LD=Symbol("vuelidate#injectChildResults"),BD=Symbol("vuelidate#removeChildResults");function CB(e){let{$scope:t,instance:a}=e;const n={},i=re([]),o=B(()=>i.value.reduce((_,f)=>(_[f]=O(n[f]),_),{}));function s(_,f){let{$registerAs:p,$scope:h,$stopPropagation:g}=f;g||t===id.COLLECT_NONE||h===id.COLLECT_NONE||t!==id.COLLECT_ALL&&t!==h||(n[p]=_,i.value.push(p))}a.__vuelidateInjectInstances=[].concat(a.__vuelidateInjectInstances||[],s);function l(_){i.value=i.value.filter(f=>f!==_),delete n[_]}a.__vuelidateRemoveInstances=[].concat(a.__vuelidateRemoveInstances||[],l);const d=bt(LD,[]);ma(LD,a.__vuelidateInjectInstances);const u=bt(BD,[]);return ma(BD,a.__vuelidateRemoveInstances),{childResults:o,sendValidationResultsToParent:d,removeValidationResultsFromParent:u}}function DE(e){return new Proxy(e,{get(t,a){return typeof t[a]=="object"?DE(t[a]):B(()=>t[a])}})}let UD=0;function zg(e,t){var a;let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};arguments.length===1&&(n=e,e=void 0,t=void 0);let{$registerAs:i,$scope:o=id.COLLECT_ALL,$stopPropagation:s,$externalResults:l,currentVueInstance:d}=n;const u=d||((a=Oi())===null||a===void 0?void 0:a.proxy),_=u?u.$options:{};i||(UD+=1,i=`_vuelidate_${UD}`);const f=re({}),p=new AB,{childResults:h,sendValidationResultsToParent:g,removeValidationResultsFromParent:y}=u?CB({$scope:o,instance:u}):{childResults:re({})};if(!e&&_.validations){const k=_.validations;t=re({}),iy(()=>{t.value=u,Yt(()=>X_(k)?k.call(t.value,new DE(t.value)):k,b=>{f.value=Eg({validations:b,state:t,childResults:h,resultsCache:p,globalConfig:n,instance:u,externalResults:l||u.vuelidateExternalResults})},{immediate:!0})}),n=_.validationsConfig||n}else{const k=ea(e)||bB(e)?e:ui(e||{});Yt(k,b=>{f.value=Eg({validations:b,state:t,childResults:h,resultsCache:p,globalConfig:n,instance:u??{},externalResults:l})},{immediate:!0})}return u&&(g.forEach(k=>k(f,{$registerAs:i,$scope:o,$stopPropagation:s})),Md(()=>y.forEach(k=>k(i)))),B(()=>Ns(Ns({},O(f.value)),h.value))}const TB=Object.freeze(Object.defineProperty({__proto__:null,CollectFlag:id,default:zg,useVuelidate:zg},Symbol.toStringTag,{value:"Module"})),Sn=(e,t)=>{const a=e.__vccOpts||e;for(const[n,i]of t)a[n]=i;return a},jB={};function NB(e,t){const a=Be("router-view"),n=Be("BaseDialog");return $(),te(yt,null,[G(a),G(n)],64)}const IB=Sn(jB,[["render",NB]]);var _i={};/*! +`)+be+`return __p +}`;var zt=tw(function(){return Qt(F,Je+"return "+be).apply(a,B)});if(zt.source=be,Of(zt))throw zt;return zt}function $3(s){return Xt(s).toLowerCase()}function L3(s){return Xt(s).toUpperCase()}function B3(s,c,m){if(s=Xt(s),s&&(m||c===a))return d0(s);if(!s||!(c=Kn(c)))return s;var v=Li(s),A=Li(c),F=u0(v,A),B=_0(v,A)+1;return gr(v,F,B).join("")}function U3(s,c,m){if(s=Xt(s),s&&(m||c===a))return s.slice(0,p0(s)+1);if(!s||!(c=Kn(c)))return s;var v=Li(s),A=_0(v,Li(c))+1;return gr(v,0,A).join("")}function V3(s,c,m){if(s=Xt(s),s&&(m||c===a))return s.replace(We,"");if(!s||!(c=Kn(c)))return s;var v=Li(s),A=u0(v,Li(c));return gr(v,A).join("")}function q3(s,c){var m=H,v=te;if(Sa(c)){var A="separator"in c?c.separator:A;m="length"in c?wt(c.length):m,v="omission"in c?Kn(c.omission):v}s=Xt(s);var F=s.length;if(sl(s)){var B=Li(s);F=B.length}if(m>=F)return s;var U=m-ll(v);if(U<1)return v;var G=B?gr(B,0,U).join(""):s.slice(0,U);if(A===a)return G+v;if(B&&(U+=G.length-U),$f(A)){if(s.slice(U).search(A)){var pe,he=G;for(A.global||(A=ef(A.source,Xt(cu.exec(A))+"g")),A.lastIndex=0;pe=A.exec(he);)var be=pe.index;G=G.slice(0,be===a?U:be)}}else if(s.indexOf(Kn(A),U)!=U){var Me=G.lastIndexOf(A);Me>-1&&(G=G.slice(0,Me))}return G+v}function H3(s){return s=Xt(s),s&&Cp.test(s)?s.replace(pi,bj):s}var W3=fl(function(s,c,m){return s+(m?" ":"")+c.toUpperCase()}),Uf=ak("toUpperCase");function ew(s,c,m){return s=Xt(s),c=m?a:c,c===a?fj(s)?xj(s):rj(s):s.match(c)||[]}var tw=Et(function(s,c){try{return Hn(s,a,c)}catch(m){return Of(m)?m:new pt(m)}}),K3=Ao(function(s,c){return gi(c,function(m){m=co(m),Po(s,m,Mf(s[m],s))}),s});function Y3(s){var c=s==null?0:s.length,m=ot();return s=c?ya(s,function(v){if(typeof v[1]!="function")throw new vi(r);return[m(v[0]),v[1]]}):[],Et(function(v){for(var A=-1;++APe)return[];var m=Qe,v=on(s,Qe);c=ot(c),s-=Qe;for(var A=Qp(v,c);++m0||c<0)?new Ft(m):(s<0?m=m.takeRight(-s):s&&(m=m.drop(s)),c!==a&&(c=wt(c),m=c<0?m.dropRight(-c):m.take(c-s)),m)},Ft.prototype.takeRightWhile=function(s){return this.reverse().takeWhile(s).reverse()},Ft.prototype.toArray=function(){return this.take(Qe)},so(Ft.prototype,function(s,c){var m=/^(?:filter|find|map|reject)|While$/.test(c),v=/^(?:head|last)$/.test(c),A=I[v?"take"+(c=="last"?"Right":""):c],F=v||/^find/.test(c);A&&(I.prototype[c]=function(){var B=this.__wrapped__,U=v?[1]:arguments,G=B instanceof Ft,pe=U[0],he=G||ht(B),be=function(It){var Rt=A.apply(I,ur([It],U));return v&&Me?Rt[0]:Rt};he&&m&&typeof pe=="function"&&pe.length!=1&&(G=he=!1);var Me=this.__chain__,Je=!!this.__actions__.length,st=F&&!Me,zt=G&&!Je;if(!F&&he){B=zt?B:new Ft(this);var lt=s.apply(B,U);return lt.__actions__.push({func:Vu,args:[be],thisArg:a}),new yi(lt,Me)}return st&&zt?s.apply(this,U):(lt=this.thru(be),st?v?lt.value()[0]:lt.value():lt)})}),gi(["pop","push","shift","sort","splice","unshift"],function(s){var c=fu[s],m=/^(?:push|sort|unshift)$/.test(s)?"tap":"thru",v=/^(?:pop|shift)$/.test(s);I.prototype[s]=function(){var A=arguments;if(v&&!this.__chain__){var F=this.value();return c.apply(ht(F)?F:[],A)}return this[m](function(B){return c.apply(ht(B)?B:[],A)})}}),so(Ft.prototype,function(s,c){var m=I[c];if(m){var v=m.name+"";aa.call(_l,v)||(_l[v]=[]),_l[v].push({name:c,func:m})}}),_l[Mu(a,b).name]=[{name:"wrapper",func:a}],Ft.prototype.clone=Hj,Ft.prototype.reverse=Wj,Ft.prototype.value=Kj,I.prototype.at=wN,I.prototype.chain=xN,I.prototype.commit=DN,I.prototype.next=SN,I.prototype.plant=PN,I.prototype.reverse=EN,I.prototype.toJSON=I.prototype.valueOf=I.prototype.value=AN,I.prototype.first=I.prototype.head,xc&&(I.prototype[xc]=zN),I},cl=Dj();ns?((ns.exports=cl)._=cl,Vp._=cl):Ja._=cl}).call(Rc)})(Q_,Q_.exports);var yz=Q_.exports;const Qi=kv(yz),Um=(e=!1)=>{const t=e?window.pinia.defineStore:un,{global:a}=window.i18n;return t({id:"global",state:()=>({config:null,globalSettings:null,timeZones:[],dateFormats:[],currencies:[],countries:[],languages:[],fiscalYears:[],mainMenu:[],settingMenu:[],isAppLoaded:!1,isSidebarOpen:!1,areCurrenciesLoading:!1,downloadReport:null}),getters:{menuGroups:n=>Object.values(Qi.groupBy(n.mainMenu,"group"))},actions:{bootstrap(){return new Promise((n,i)=>{ye.get("/api/v1/bootstrap").then(o=>{const r=er(),l=Gs(),d=_8();this.mainMenu=o.data.main_menu,this.settingMenu=o.data.setting_menu,this.config=o.data.config,this.globalSettings=o.data.global_settings,l.currentUser=o.data.current_user,l.currentUserSettings=o.data.current_user_settings,l.currentAbilities=o.data.current_user_abilities,d.apiToken=o.data.global_settings.api_token,d.enableModules=o.data.modules,r.companies=o.data.companies,r.selectedCompany=o.data.current_company,r.setSelectedCompany(o.data.current_company),r.selectedCompanySettings=o.data.current_company_settings,r.selectedCompanyCurrency=o.data.current_company_currency,a.locale=o.data.current_user_settings.language||"en",this.isAppLoaded=!0,n(o)}).catch(o=>{ke(o),i(o)})})},fetchCurrencies(){return new Promise((n,i)=>{this.currencies.length||this.areCurrenciesLoading?n(this.currencies):(this.areCurrenciesLoading=!0,ye.get("/api/v1/currencies").then(o=>{this.currencies=o.data.data.filter(r=>r.name=`${r.code} - ${r.name}`),this.areCurrenciesLoading=!1,n(o)}).catch(o=>{ke(o),this.areCurrenciesLoading=!1,i(o)}))})},fetchConfig(n){return new Promise((i,o)=>{ye.get("/api/v1/config",{params:n}).then(r=>{r.data.languages?this.languages=r.data.languages:this.fiscalYears=r.data.fiscal_years,i(r)}).catch(r=>{ke(r),o(r)})})},fetchDateFormats(){return new Promise((n,i)=>{this.dateFormats.length?n(this.dateFormats):ye.get("/api/v1/date/formats").then(o=>{this.dateFormats=o.data.date_formats,n(o)}).catch(o=>{ke(o),i(o)})})},fetchTimeZones(){return new Promise((n,i)=>{this.timeZones.length?n(this.timeZones):ye.get("/api/v1/timezones").then(o=>{this.timeZones=o.data.time_zones,n(o)}).catch(o=>{ke(o),i(o)})})},fetchCountries(){return new Promise((n,i)=>{this.countries.length?n(this.countries):ye.get("/api/v1/countries").then(o=>{this.countries=o.data.data,n(o)}).catch(o=>{ke(o),i(o)})})},fetchPlaceholders(n){return new Promise((i,o)=>{ye.get("/api/v1/number-placeholders",{params:n}).then(r=>{i(r)}).catch(r=>{ke(r),o(r)})})},setSidebarVisibility(n){this.isSidebarOpen=n},setIsAppLoaded(n){this.isAppLoaded=n},updateGlobalSettings({data:n,message:i}){return new Promise((o,r)=>{ye.post("/api/v1/settings",n).then(l=>{Object.assign(this.globalSettings,n.settings),i&>().showNotification({type:"success",message:a.t(i)}),o(l)}).catch(l=>{ke(l),r(l)})})}}})()},Nt={DASHBOARD:"dashboard",CREATE_CUSTOMER:"create-customer",DELETE_CUSTOMER:"delete-customer",EDIT_CUSTOMER:"edit-customer",VIEW_CUSTOMER:"view-customer",CREATE_ITEM:"create-item",DELETE_ITEM:"delete-item",EDIT_ITEM:"edit-item",VIEW_ITEM:"view-item",CREATE_TAX_TYPE:"create-tax-type",DELETE_TAX_TYPE:"delete-tax-type",EDIT_TAX_TYPE:"edit-tax-type",VIEW_TAX_TYPE:"view-tax-type",CREATE_ESTIMATE:"create-estimate",DELETE_ESTIMATE:"delete-estimate",EDIT_ESTIMATE:"edit-estimate",VIEW_ESTIMATE:"view-estimate",SEND_ESTIMATE:"send-estimate",CREATE_INVOICE:"create-invoice",DELETE_INVOICE:"delete-invoice",EDIT_INVOICE:"edit-invoice",VIEW_INVOICE:"view-invoice",SEND_INVOICE:"send-invoice",CREATE_RECURRING_INVOICE:"create-recurring-invoice",DELETE_RECURRING_INVOICE:"delete-recurring-invoice",EDIT_RECURRING_INVOICE:"edit-recurring-invoice",VIEW_RECURRING_INVOICE:"view-recurring-invoice",CREATE_PAYMENT:"create-payment",DELETE_PAYMENT:"delete-payment",EDIT_PAYMENT:"edit-payment",VIEW_PAYMENT:"view-payment",SEND_PAYMENT:"send-payment",CREATE_EXPENSE:"create-expense",DELETE_EXPENSE:"delete-expense",EDIT_EXPENSE:"edit-expense",VIEW_EXPENSE:"view-expense",CREATE_CUSTOM_FIELDS:"create-custom-field",DELETE_CUSTOM_FIELDS:"delete-custom-field",EDIT_CUSTOM_FIELDS:"edit-custom-field",VIEW_CUSTOM_FIELDS:"view-custom-field",CREATE_ROLE:"create-role",DELETE_ROLE:"delete-role",EDIT_ROLE:"edit-role",VIEW_ROLE:"view-role",VIEW_EXCHANGE_RATE:"view-exchange-rate-provider",CREATE_EXCHANGE_RATE:"create-exchange-rate-provider",EDIT_EXCHANGE_RATE:"edit-exchange-rate-provider",DELETE_EXCHANGE_RATE:"delete-exchange-rate-provider",VIEW_FINANCIAL_REPORT:"view-financial-reports",MANAGE_NOTE:"manage-all-notes",VIEW_NOTE:"view-all-notes"},m8=()=>Ve(()=>import("./LayoutInstallation-n75TvDOA.js"),__vite__mapDeps([0,1])),E1=()=>Ve(()=>import("./Login-7v6FLB8k.js"),__vite__mapDeps([])),p8=()=>Ve(()=>import("./LayoutBasic-kqELRhJ9.js"),__vite__mapDeps([2,3,4,1,5])),f8=()=>Ve(()=>import("./LayoutLogin-OVzXm-eU.js"),__vite__mapDeps([6,1])),h8=()=>Ve(()=>import("./ResetPassword-mA7VRxO2.js"),__vite__mapDeps([])),g8=()=>Ve(()=>import("./ForgotPassword-Dd4Qvzwd.js"),__vite__mapDeps([])),v8=()=>Ve(()=>import("./Dashboard-cG8xRFOU.js"),__vite__mapDeps([7,8,9,10,11])),y8=()=>Ve(()=>import("./Index-hyQmpke_.js"),__vite__mapDeps([12,13,14])),A1=()=>Ve(()=>import("./Create-uZTOHLTZ.js"),__vite__mapDeps([15,16,17])),b8=()=>Ve(()=>import("./View-Yah6n2cE.js"),__vite__mapDeps([18,19,9,13])),k8=()=>Ve(()=>import("./SettingsIndex-Amg-jcMV.js"),__vite__mapDeps([20,21])),w8=()=>Ve(()=>import("./AccountSetting-Yk7vmOX9.js"),__vite__mapDeps([])),x8=()=>Ve(()=>import("./CompanyInfoSettings-0olCV2ld.js"),__vite__mapDeps([])),D8=()=>Ve(()=>import("./PreferencesSetting-P9ngdEO5.js"),__vite__mapDeps([])),S8=()=>Ve(()=>import("./CustomizationSetting-okNa_46C.js"),__vite__mapDeps([22,23,24,25])),z8=()=>Ve(()=>import("./NotificationsSetting-H_JlZbOt.js"),__vite__mapDeps([])),P8=()=>Ve(()=>import("./TaxTypesSetting-NZ-33S7N.js"),__vite__mapDeps([26,27])),E8=()=>Ve(()=>import("./PaymentsModeSetting-JnXQoV2x.js"),__vite__mapDeps([28,24,29])),A8=()=>Ve(()=>import("./CustomFieldsSetting-eQj7hyR_.js"),__vite__mapDeps([30,17])),C8=()=>Ve(()=>import("./NotesSetting-Rzov00xL.js"),__vite__mapDeps([31,32,24,33])),j8=()=>Ve(()=>import("./ExpenseCategorySetting-Wu-FV_aV.js"),__vite__mapDeps([34,35,36])),T8=()=>Ve(()=>import("./ExchangeRateProviderSetting-KVqEF4rd.js"),__vite__mapDeps([37,3,38])),I8=()=>Ve(()=>import("./MailConfigSetting--Zfu5UwD.js"),__vite__mapDeps([39,40])),N8=()=>Ve(()=>import("./FileDiskSetting-WUGVB3KY.js"),__vite__mapDeps([41,42])),F8=()=>Ve(()=>import("./BackupSetting-02LSsKOl.js"),__vite__mapDeps([43,42])),M8=()=>Ve(()=>import("./UpdateAppSetting-tBxb5CQ-.js"),__vite__mapDeps([44,19,3,45])),R8=()=>Ve(()=>import("./RolesSettings-GppRjFXc.js"),__vite__mapDeps([])),O8=()=>Ve(()=>import("./Index-1o0Qj9Qy.js"),__vite__mapDeps([])),C1=()=>Ve(()=>import("./Create-U2zj1acD.js"),__vite__mapDeps([46,25])),$8=()=>Ve(()=>import("./Index-fmtpwozj.js"),__vite__mapDeps([47,48,35])),j1=()=>Ve(()=>import("./Create-I8rh9FkW.js"),__vite__mapDeps([49,48,35,16,17,36,50,3])),L8=()=>Ve(()=>import("./Index-xZYU07fM.js"),__vite__mapDeps([51,4,14])),T1=()=>Ve(()=>import("./Create-y2sPCAul.js"),__vite__mapDeps([52,5,4])),B8=()=>Ve(()=>import("./Index-E1-yQF6r.js"),__vite__mapDeps([53,54,11,55,40])),I1=()=>Ve(()=>import("./EstimateCreate-bbtBv8WA.js"),__vite__mapDeps([56,57,23,58,32,24,33,16,17,50,3,27])),U8=()=>Ve(()=>import("./View-_jDExR9_.js"),__vite__mapDeps([59,11,55,40,19])),V8=()=>Ve(()=>import("./Index-f2o6PmtH.js"),__vite__mapDeps([60,24,61,62,40])),Dh=()=>Ve(()=>import("./Create-P3XobVA8.js"),__vite__mapDeps([63,50,3,24,58,32,33,16,17,29])),q8=()=>Ve(()=>import("./View-7_e7P4hR.js"),__vite__mapDeps([64,24,62,40,19])),H8=()=>Ve(()=>import("./404-VO_jnB3Q.js"),__vite__mapDeps([])),W8=()=>Ve(()=>import("./Index-CQ5mh-Th.js"),__vite__mapDeps([65,66,10,67,40])),N1=()=>Ve(()=>import("./InvoiceCreate-MZJJjNuY.js"),__vite__mapDeps([68,57,23,58,32,24,33,50,3,16,17,27])),K8=()=>Ve(()=>import("./View-Mv-Rah7E.js"),__vite__mapDeps([69,67,40,10,19])),Y8=()=>Ve(()=>import("./Index-29Zk8_Fk.js"),__vite__mapDeps([70,67,40,71,66])),F1=()=>Ve(()=>import("./RecurringInvoiceCreate-PLUdTdl7.js"),__vite__mapDeps([72,57,23,58,32,24,33,50,3,16,17,27])),Z8=()=>Ve(()=>import("./View-aoNTTF1A.js"),__vite__mapDeps([73,19,10,67,40,71])),G8=()=>Ve(()=>import("./Index-2fI8NNez.js"),__vite__mapDeps([])),Q8=()=>Ve(()=>import("./Installation-THhQgZ_v.js"),__vite__mapDeps([74,40])),J8=()=>Ve(()=>import("./Index-hsp751rP.js"),__vite__mapDeps([])),X8=()=>Ve(()=>import("./View-8QpdfLxS.js"),__vite__mapDeps([])),e6=()=>Ve(()=>import("./InvoicePublicPage-Zcun4JOZ.js"),__vite__mapDeps([])),t6=[{path:"/installation",component:m8,meta:{requiresAuth:!1},children:[{path:"/installation",component:Q8,name:"installation"}]},{path:"/customer/invoices/view/:hash",component:e6,name:"invoice.public"},{path:"/",component:f8,meta:{requiresAuth:!1,redirectIfAuthenticated:!0},children:[{path:"",component:E1},{path:"login",name:"login",component:E1},{path:"forgot-password",component:g8,name:"forgot-password"},{path:"/reset-password/:token",component:h8,name:"reset-password"}]},{path:"/admin",component:p8,meta:{requiresAuth:!0},children:[{path:"dashboard",name:"dashboard",meta:{ability:Nt.DASHBOARD},component:v8},{path:"customers",meta:{ability:Nt.VIEW_CUSTOMER},component:y8},{path:"customers/create",name:"customers.create",meta:{ability:Nt.CREATE_CUSTOMER},component:A1},{path:"customers/:id/edit",name:"customers.edit",meta:{ability:Nt.EDIT_CUSTOMER},component:A1},{path:"customers/:id/view",name:"customers.view",meta:{ability:Nt.VIEW_CUSTOMER},component:b8},{path:"payments",meta:{ability:Nt.VIEW_PAYMENT},component:V8},{path:"payments/create",name:"payments.create",meta:{ability:Nt.CREATE_PAYMENT},component:Dh},{path:"payments/:id/create",name:"invoice.payments.create",meta:{ability:Nt.CREATE_PAYMENT},component:Dh},{path:"payments/:id/edit",name:"payments.edit",meta:{ability:Nt.EDIT_PAYMENT},component:Dh},{path:"payments/:id/view",name:"payments.view",meta:{ability:Nt.VIEW_PAYMENT},component:q8},{path:"settings",name:"settings",component:k8,children:[{path:"account-settings",name:"account.settings",component:w8},{path:"company-info",name:"company.info",meta:{isOwner:!0},component:x8},{path:"preferences",name:"preferences",meta:{isOwner:!0},component:D8},{path:"customization",name:"customization",meta:{isOwner:!0},component:S8},{path:"notifications",name:"notifications",meta:{isOwner:!0},component:z8},{path:"roles-settings",name:"roles.settings",meta:{isOwner:!0},component:R8},{path:"exchange-rate-provider",name:"exchange.rate.provider",meta:{ability:Nt.VIEW_EXCHANGE_RATE},component:T8},{path:"tax-types",name:"tax.types",meta:{ability:Nt.VIEW_TAX_TYPE},component:P8},{path:"notes",name:"notes",meta:{ability:Nt.VIEW_ALL_NOTES},component:C8},{path:"payment-mode",name:"payment.mode",component:E8},{path:"custom-fields",name:"custom.fields",meta:{ability:Nt.VIEW_CUSTOM_FIELDS},component:A8},{path:"expense-category",name:"expense.category",meta:{ability:Nt.VIEW_EXPENSE},component:j8},{path:"mail-configuration",name:"mailconfig",meta:{isOwner:!0},component:I8},{path:"file-disk",name:"file-disk",meta:{isOwner:!0},component:N8},{path:"backup",name:"backup",meta:{isOwner:!0},component:F8},{path:"update-app",name:"updateapp",meta:{isOwner:!0},component:M8}]},{path:"items",meta:{ability:Nt.VIEW_ITEM},component:O8},{path:"items/create",name:"items.create",meta:{ability:Nt.CREATE_ITEM},component:C1},{path:"items/:id/edit",name:"items.edit",meta:{ability:Nt.EDIT_ITEM},component:C1},{path:"expenses",meta:{ability:Nt.VIEW_EXPENSE},component:$8},{path:"expenses/create",name:"expenses.create",meta:{ability:Nt.CREATE_EXPENSE},component:j1},{path:"expenses/:id/edit",name:"expenses.edit",meta:{ability:Nt.EDIT_EXPENSE},component:j1},{path:"users",name:"users.index",meta:{isOwner:!0},component:L8},{path:"users/create",meta:{isOwner:!0},name:"users.create",component:T1},{path:"users/:id/edit",name:"users.edit",meta:{isOwner:!0},component:T1},{path:"estimates",name:"estimates.index",meta:{ability:Nt.VIEW_ESTIMATE},component:B8},{path:"estimates/create",name:"estimates.create",meta:{ability:Nt.CREATE_ESTIMATE},component:I1},{path:"estimates/:id/view",name:"estimates.view",meta:{ability:Nt.VIEW_ESTIMATE},component:U8},{path:"estimates/:id/edit",name:"estimates.edit",meta:{ability:Nt.EDIT_ESTIMATE},component:I1},{path:"invoices",name:"invoices.index",meta:{ability:Nt.VIEW_INVOICE},component:W8},{path:"invoices/create",name:"invoices.create",meta:{ability:Nt.CREATE_INVOICE},component:N1},{path:"invoices/:id/view",name:"invoices.view",meta:{ability:Nt.VIEW_INVOICE},component:K8},{path:"invoices/:id/edit",name:"invoices.edit",meta:{ability:Nt.EDIT_INVOICE},component:N1},{path:"recurring-invoices",name:"recurring-invoices.index",meta:{ability:Nt.VIEW_RECURRING_INVOICE},component:Y8},{path:"recurring-invoices/create",name:"recurring-invoices.create",meta:{ability:Nt.CREATE_RECURRING_INVOICE},component:F1},{path:"recurring-invoices/:id/view",name:"recurring-invoices.view",meta:{ability:Nt.VIEW_RECURRING_INVOICE},component:Z8},{path:"recurring-invoices/:id/edit",name:"recurring-invoices.edit",meta:{ability:Nt.EDIT_RECURRING_INVOICE},component:F1},{path:"modules",name:"modules.index",meta:{isOwner:!0},component:J8},{path:"modules/:slug",name:"modules.view",meta:{isOwner:!0},component:X8},{path:"reports",meta:{ability:Nt.VIEW_FINANCIAL_REPORT},component:G8}]},{path:"/:catchAll(.*)",component:H8}],a6=()=>Ve(()=>import("./LayoutBasic-xMtJOxOw.js"),__vite__mapDeps([75,76,77,1])),n6=()=>Ve(()=>import("./LayoutLogin-JS-vXZu6.js"),__vite__mapDeps([78,1])),M1=()=>Ve(()=>import("./Login-InQE2fqP.js"),__vite__mapDeps([79,76])),i6=()=>Ve(()=>import("./ForgotPassword-pPaTUWOZ.js"),__vite__mapDeps([80,76])),o6=()=>Ve(()=>import("./ResetPassword-NJmXWokN.js"),__vite__mapDeps([81,77,76])),r6=()=>Ve(()=>import("./Dashboard-QOMDegSk.js"),__vite__mapDeps([82,8,77,76,38])),s6=()=>Ve(()=>import("./Index-jpDrpi-w.js"),__vite__mapDeps([83,84,76,38,77,66])),l6=()=>Ve(()=>import("./View-27zXteWI.js"),__vite__mapDeps([85,84,76,77])),c6=()=>Ve(()=>import("./Index-jwRrXkMR.js"),__vite__mapDeps([86,38,77,76,87,54])),d6=()=>Ve(()=>import("./View-j1em_-J5.js"),__vite__mapDeps([88,87,76,77])),u6=()=>Ve(()=>import("./Index-8c9F-EuN.js"),__vite__mapDeps([89,38,61,90,76,77])),_6=()=>Ve(()=>import("./View-ba37d3J9.js"),__vite__mapDeps([91,90,76,77])),m6=()=>Ve(()=>import("./SettingsIndex-p68i9jV8.js"),__vite__mapDeps([92,21,77,76])),p6=()=>Ve(()=>import("./CustomerSettings-LcGfgvXG.js"),__vite__mapDeps([93,77,76])),f6=()=>Ve(()=>import("./AddressInformation-_ZC93Yt6.js"),__vite__mapDeps([94,77,76])),h6=[{path:"/:company/customer",component:n6,meta:{redirectIfAuthenticated:!0},children:[{path:"",component:M1},{path:"login",component:M1,name:"customer.login"},{path:"forgot-password",component:i6,name:"customer.forgot-password"},{path:"reset/password/:token",component:o6,name:"customer.reset-password"}]},{path:"/:company/customer",component:a6,meta:{requiresAuth:!0},children:[{path:"dashboard",component:r6,name:"customer.dashboard"},{path:"invoices",component:s6,name:"invoices.dashboard"},{path:"invoices/:id/view",component:l6,name:"customer.invoices.view"},{path:"estimates",component:c6,name:"estimates.dashboard"},{path:"estimates/:id/view",component:d6,name:"customer.estimates.view"},{path:"payments",component:u6,name:"payments.dashboard"},{path:"payments/:id/view",component:_6,name:"customer.payments.view"},{path:"settings",component:m6,name:"customer",children:[{path:"customer-profile",component:p6,name:"customer.profile"},{path:"address-info",component:f6,name:"customer.address.info"}]}]}];let Sg=[];Sg=Sg.concat(t6,h6);const J_=mz({history:fy(),linkActiveClass:"active",routes:Sg});J_.beforeEach((e,t,a)=>{const n=Gs(),i=Um();let o=e.meta.ability;const{isAppLoaded:r}=i;o&&r&&e.meta.requiresAuth?n.hasAbilities(o)?a():a({name:"account.settings"}):e.meta.isOwner&&r?n.currentUser.is_owner?a():a({name:"dashboard"}):a()});function R1(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),a.push.apply(a,n)}return a}function Ir(e){for(var t=1;t1&&arguments[1]!==void 0?arguments[1]:[];return Object.keys(e).reduce((a,n)=>(t.includes(n)||(a[n]=L(e[n])),a),{})}function X_(e){return typeof e=="function"}function v6(e){return Gi(e)||Ur(e)}function bz(e,t,a){let n=e;const i=t.split(".");for(let o=0;oe.some(n=>bz(t,n,{[a]:!1})[a]))}function $1(e,t,a){return V(()=>e.reduce((n,i)=>{const o=bz(t,i,{[a]:!1})[a]||[];return n.concat(o)},[]))}function kz(e,t,a,n){return e.call(n,L(t),L(a),n)}function wz(e){return e.$valid!==void 0?!e.$valid:!e}function y6(e,t,a,n,i,o,r){let{$lazy:l,$rewardEarly:d}=i,u=arguments.length>7&&arguments[7]!==void 0?arguments[7]:[],_=arguments.length>8?arguments[8]:void 0,f=arguments.length>9?arguments[9]:void 0,p=arguments.length>10?arguments[10]:void 0;const h=le(!!n.value),g=le(0);a.value=!1;const y=Yt([t,n].concat(u,p),()=>{if(l&&!n.value||d&&!f.value&&!a.value)return;let k;try{k=kz(e,t,_,r)}catch(b){k=Promise.reject(b)}g.value++,a.value=!!g.value,h.value=!1,Promise.resolve(k).then(b=>{g.value--,a.value=!!g.value,o.value=b,h.value=wz(b)}).catch(b=>{g.value--,a.value=!!g.value,o.value=b,h.value=!0})},{immediate:!0,deep:typeof t=="object"});return{$invalid:h,$unwatch:y}}function b6(e,t,a,n,i,o,r,l){let{$lazy:d,$rewardEarly:u}=n;const _=()=>({}),f=V(()=>{if(d&&!a.value||u&&!l.value)return!1;let p=!0;try{const h=kz(e,t,r,o);i.value=h,p=wz(h)}catch(h){i.value=h}return p});return{$unwatch:_,$invalid:f}}function k6(e,t,a,n,i,o,r,l,d,u,_){const f=le(!1),p=e.$params||{},h=le(null);let g,y;e.$async?{$invalid:g,$unwatch:y}=y6(e.$validator,t,f,a,n,h,i,e.$watchTargets,d,u,_):{$invalid:g,$unwatch:y}=b6(e.$validator,t,a,n,h,i,d,u);const k=e.$message;return{$message:X_(k)?V(()=>k(O1({$pending:f,$invalid:g,$params:O1(p),$model:t,$response:h,$validator:o,$propertyPath:l,$property:r}))):k||"",$params:p,$pending:f,$invalid:g,$response:h,$unwatch:y}}function w6(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const t=L(e),a=Object.keys(t),n={},i={},o={};let r=null;return a.forEach(l=>{const d=t[l];switch(!0){case X_(d.$validator):n[l]=d;break;case X_(d):n[l]={$validator:d};break;case l==="$validationGroups":r=d;break;case l.startsWith("$"):o[l]=d;break;default:i[l]=d}}),{rules:n,nestedValidators:i,config:o,validationGroups:r}}const x6="__root";function D6(e,t,a,n,i,o,r,l,d){const u=Object.keys(e),_=n.get(i,e),f=le(!1),p=le(!1),h=le(0);if(_){if(!_.$partial)return _;_.$unwatch(),f.value=_.$dirty.value}const g={$dirty:f,$path:i,$touch:()=>{f.value||(f.value=!0)},$reset:()=>{f.value&&(f.value=!1)},$commit:()=>{}};return u.length?(u.forEach(y=>{g[y]=k6(e[y],t,g.$dirty,o,r,y,a,i,d,p,h)}),g.$externalResults=V(()=>l.value?[].concat(l.value).map((y,k)=>({$propertyPath:i,$property:a,$validator:"$externalResults",$uid:`${i}-externalResult-${k}`,$message:y,$params:{},$response:null,$pending:!1})):[]),g.$invalid=V(()=>{const y=u.some(k=>L(g[k].$invalid));return p.value=y,!!g.$externalResults.value.length||y}),g.$pending=V(()=>u.some(y=>L(g[y].$pending))),g.$error=V(()=>g.$dirty.value?g.$pending.value||g.$invalid.value:!1),g.$silentErrors=V(()=>u.filter(y=>L(g[y].$invalid)).map(y=>{const k=g[y];return ui({$propertyPath:i,$property:a,$validator:y,$uid:`${i}-${y}`,$message:k.$message,$params:k.$params,$response:k.$response,$pending:k.$pending})}).concat(g.$externalResults.value)),g.$errors=V(()=>g.$dirty.value?g.$silentErrors.value:[]),g.$unwatch=()=>u.forEach(y=>{g[y].$unwatch()}),g.$commit=()=>{p.value=!0,h.value=Date.now()},n.set(i,e,g),g):(_&&n.set(i,e,g),g)}function S6(e,t,a,n,i,o,r){const l=Object.keys(e);return l.length?l.reduce((d,u)=>(d[u]=zg({validations:e[u],state:t,key:u,parentKey:a,resultsCache:n,globalConfig:i,instance:o,externalResults:r}),d),{}):{}}function z6(e,t,a){const n=V(()=>[t,a].filter(g=>g).reduce((g,y)=>g.concat(Object.values(L(y))),[])),i=V({get(){return e.$dirty.value||(n.value.length?n.value.every(g=>g.$dirty):!1)},set(g){e.$dirty.value=g}}),o=V(()=>{const g=L(e.$silentErrors)||[],y=n.value.filter(k=>(L(k).$silentErrors||[]).length).reduce((k,b)=>k.concat(...b.$silentErrors),[]);return g.concat(y)}),r=V(()=>{const g=L(e.$errors)||[],y=n.value.filter(k=>(L(k).$errors||[]).length).reduce((k,b)=>k.concat(...b.$errors),[]);return g.concat(y)}),l=V(()=>n.value.some(g=>g.$invalid)||L(e.$invalid)||!1),d=V(()=>n.value.some(g=>L(g.$pending))||L(e.$pending)||!1),u=V(()=>n.value.some(g=>g.$dirty)||n.value.some(g=>g.$anyDirty)||i.value),_=V(()=>i.value?d.value||l.value:!1),f=()=>{e.$touch(),n.value.forEach(g=>{g.$touch()})},p=()=>{e.$commit(),n.value.forEach(g=>{g.$commit()})},h=()=>{e.$reset(),n.value.forEach(g=>{g.$reset()})};return n.value.length&&n.value.every(g=>g.$dirty)&&f(),{$dirty:i,$errors:r,$invalid:l,$anyDirty:u,$error:_,$pending:d,$touch:f,$reset:h,$silentErrors:o,$commit:p}}function zg(e){let{validations:t,state:a,key:n,parentKey:i,childResults:o,resultsCache:r,globalConfig:l={},instance:d,externalResults:u}=e;const _=i?`${i}.${n}`:n,{rules:f,nestedValidators:p,config:h,validationGroups:g}=w6(t),y=Ir(Ir({},l),h),k=n?V(()=>{const re=L(a);return re?L(re[n]):void 0}):a,b=Ir({},L(u)||{}),z=V(()=>{const re=L(u);return n?re?L(re[n]):void 0:re}),w=D6(f,k,n,r,_,y,d,z,a),D=S6(p,k,_,r,y,d,z),E={};g&&Object.entries(g).forEach(re=>{let[Qe,at]=re;E[Qe]={$invalid:Sh(at,D,"$invalid"),$error:Sh(at,D,"$error"),$pending:Sh(at,D,"$pending"),$errors:$1(at,D,"$errors"),$silentErrors:$1(at,D,"$silentErrors")}});const{$dirty:T,$errors:N,$invalid:j,$anyDirty:q,$error:H,$pending:te,$touch:X,$reset:oe,$silentErrors:Te,$commit:Ae}=z6(w,D,o),de=n?V({get:()=>L(k),set:re=>{T.value=!0;const Qe=L(a),at=L(u);at&&(at[n]=b[n]),ea(Qe[n])?Qe[n].value=re:Qe[n]=re}}):null;n&&y.$autoDirty&&Yt(k,()=>{T.value||X();const re=L(u);re&&(re[n]=b[n])},{flush:"sync"});async function Ce(){return X(),y.$rewardEarly&&(Ae(),await ha()),await ha(),new Promise(re=>{if(!te.value)return re(!j.value);const Qe=Yt(te,()=>{re(!j.value),Qe()})})}function Pe(re){return(o.value||{})[re]}function Ke(){ea(u)?u.value=b:Object.keys(b).length===0?Object.keys(u).forEach(re=>{delete u[re]}):Object.assign(u,b)}return ui(Ir(Ir(Ir({},w),{},{$model:de,$dirty:T,$error:H,$errors:N,$invalid:j,$anyDirty:q,$pending:te,$touch:X,$reset:oe,$path:_||x6,$silentErrors:Te,$validate:Ce,$commit:Ae},o&&{$getResultsForChild:Pe,$clearExternalResults:Ke,$validationGroups:E}),D))}class P6{constructor(){this.storage=new Map}set(t,a,n){this.storage.set(t,{rules:a,result:n})}checkRulesValidity(t,a,n){const i=Object.keys(n),o=Object.keys(a);return o.length!==i.length||!o.every(l=>i.includes(l))?!1:o.every(l=>a[l].$params?Object.keys(a[l].$params).every(d=>L(n[l].$params[d])===L(a[l].$params[d])):!0)}get(t,a){const n=this.storage.get(t);if(!n)return;const{rules:i,result:o}=n,r=this.checkRulesValidity(t,a,i),l=o.$unwatch?o.$unwatch:()=>({});return r?o:{$dirty:o.$dirty,$partial:!0,$unwatch:l}}}const id={COLLECT_ALL:!0,COLLECT_NONE:!1},L1=Symbol("vuelidate#injectChildResults"),B1=Symbol("vuelidate#removeChildResults");function E6(e){let{$scope:t,instance:a}=e;const n={},i=le([]),o=V(()=>i.value.reduce((_,f)=>(_[f]=L(n[f]),_),{}));function r(_,f){let{$registerAs:p,$scope:h,$stopPropagation:g}=f;g||t===id.COLLECT_NONE||h===id.COLLECT_NONE||t!==id.COLLECT_ALL&&t!==h||(n[p]=_,i.value.push(p))}a.__vuelidateInjectInstances=[].concat(a.__vuelidateInjectInstances||[],r);function l(_){i.value=i.value.filter(f=>f!==_),delete n[_]}a.__vuelidateRemoveInstances=[].concat(a.__vuelidateRemoveInstances||[],l);const d=bt(L1,[]);ma(L1,a.__vuelidateInjectInstances);const u=bt(B1,[]);return ma(B1,a.__vuelidateRemoveInstances),{childResults:o,sendValidationResultsToParent:d,removeValidationResultsFromParent:u}}function xz(e){return new Proxy(e,{get(t,a){return typeof t[a]=="object"?xz(t[a]):V(()=>t[a])}})}let U1=0;function Pg(e,t){var a;let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};arguments.length===1&&(n=e,e=void 0,t=void 0);let{$registerAs:i,$scope:o=id.COLLECT_ALL,$stopPropagation:r,$externalResults:l,currentVueInstance:d}=n;const u=d||((a=Ri())===null||a===void 0?void 0:a.proxy),_=u?u.$options:{};i||(U1+=1,i=`_vuelidate_${U1}`);const f=le({}),p=new P6,{childResults:h,sendValidationResultsToParent:g,removeValidationResultsFromParent:y}=u?E6({$scope:o,instance:u}):{childResults:le({})};if(!e&&_.validations){const k=_.validations;t=le({}),iy(()=>{t.value=u,Yt(()=>X_(k)?k.call(t.value,new xz(t.value)):k,b=>{f.value=zg({validations:b,state:t,childResults:h,resultsCache:p,globalConfig:n,instance:u,externalResults:l||u.vuelidateExternalResults})},{immediate:!0})}),n=_.validationsConfig||n}else{const k=ea(e)||v6(e)?e:ui(e||{});Yt(k,b=>{f.value=zg({validations:b,state:t,childResults:h,resultsCache:p,globalConfig:n,instance:u??{},externalResults:l})},{immediate:!0})}return u&&(g.forEach(k=>k(f,{$registerAs:i,$scope:o,$stopPropagation:r})),Od(()=>y.forEach(k=>k(i)))),V(()=>Ir(Ir({},L(f.value)),h.value))}const A6=Object.freeze(Object.defineProperty({__proto__:null,CollectFlag:id,default:Pg,useVuelidate:Pg},Symbol.toStringTag,{value:"Module"})),Sn=(e,t)=>{const a=e.__vccOpts||e;for(const[n,i]of t)a[n]=i;return a},C6={};function j6(e,t){const a=Ue("router-view"),n=Ue("BaseDialog");return P(),ae(yt,null,[C(a),C(n)],64)}const T6=Sn(C6,[["render",j6]]);var _i={};/*! * shared v9.9.0 * (c) 2024 kazuya kawaguchi * Released under the MIT License. - */const xE=typeof window<"u";let SE,PE;{const e=xE&&window.performance;e&&e.mark&&e.measure&&e.clearMarks&&e.clearMeasures&&(SE=t=>{e.mark(t)},PE=(t,a,n)=>{e.measure(t,a,n),e.clearMarks(a),e.clearMarks(n)})}const FB=/\{([0-9a-zA-Z]+)\}/g;function RB(e,...t){return t.length===1&&Bd(t[0])&&(t=t[0]),(!t||!t.hasOwnProperty)&&(t={}),e.replace(FB,(a,n)=>t.hasOwnProperty(n)?t[n]:"")}const OB=(e,t=!1)=>t?Symbol.for(e):Symbol(e),MB=(e,t,a)=>EE({l:e,k:t,s:a}),EE=e=>JSON.stringify(e).replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029").replace(/\u0027/g,"\\u0027"),$B=e=>typeof e=="number"&&isFinite(e),LB=e=>by(e)==="[object Date]",BB=e=>by(e)==="[object RegExp]",UB=e=>ky(e)&&Object.keys(e).length===0,VB=Object.assign;let VD;const qB=()=>VD||(VD=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function WB(e){return e.replace(//g,">").replace(/"/g,""").replace(/'/g,"'")}const HB=Object.prototype.hasOwnProperty;function KB(e,t){return HB.call(e,t)}const vy=Array.isArray,Ag=e=>typeof e=="function",YB=e=>typeof e=="string",ZB=e=>typeof e=="boolean",GB=e=>typeof e=="symbol",Bd=e=>e!==null&&typeof e=="object",QB=e=>Bd(e)&&Ag(e.then)&&Ag(e.catch),yy=Object.prototype.toString,by=e=>yy.call(e),ky=e=>{if(!Bd(e))return!1;const t=Object.getPrototypeOf(e);return t===null||t.constructor===Object},JB=e=>e==null?"":vy(e)||ky(e)&&e.toString===yy?JSON.stringify(e,null,2):String(e);function XB(e,t=""){return e.reduce((a,n,i)=>i===0?a+n:a+t+n,"")}const qD=2;function e6(e,t=0,a=e.length){const n=e.split(/\r?\n/);let i=0;const o=[];for(let s=0;s=t){for(let l=s-qD;l<=s+qD||a>i;l++){if(l<0||l>=n.length)continue;const d=l+1;o.push(`${d}${" ".repeat(3-String(d).length)}| ${n[l]}`);const u=n[l].length;if(l===s){const _=t-(i-u)+1,f=Math.max(1,a>i?u-_:a-t);o.push(" | "+" ".repeat(_)+"^".repeat(f))}else if(l>s){if(a>i){const _=Math.max(Math.min(a-i,u),1);o.push(" | "+"^".repeat(_))}i+=u+1}}break}return o.join(` -`)}function t6(e){let t=e;return()=>++t}function zE(e,t){typeof console<"u"&&(console.warn("[intlify] "+e),t&&console.warn(t.stack))}const WD={};function a6(e){WD[e]||(WD[e]=!0,zE(e))}function n6(){const e=new Map;return{events:e,on(a,n){const i=e.get(a);i&&i.push(n)||e.set(a,[n])},off(a,n){const i=e.get(a);i&&i.splice(i.indexOf(n)>>>0,1)},emit(a,n){(e.get(a)||[]).slice().map(i=>i(n)),(e.get("*")||[]).slice().map(i=>i(a,n))}}}const u_=e=>!Bd(e)||vy(e);function i6(e,t){if(u_(e)||u_(t))throw new Error("Invalid value");const a=[{src:e,des:t}];for(;a.length;){const{src:n,des:i}=a.pop();Object.keys(n).forEach(o=>{u_(n[o])||u_(i[o])?i[o]=n[o]:a.push({src:n[o],des:i[o]})})}}const o6=Object.freeze(Object.defineProperty({__proto__:null,assign:VB,createEmitter:n6,deepCopy:i6,escapeHtml:WB,format:RB,friendlyJSONstringify:EE,generateCodeFrame:e6,generateFormatCacheKey:MB,getGlobalThis:qB,hasOwn:KB,inBrowser:xE,incrementer:t6,isArray:vy,isBoolean:ZB,isDate:LB,isEmptyObject:UB,isFunction:Ag,isNumber:$B,isObject:Bd,isPlainObject:ky,isPromise:QB,isRegExp:BB,isString:YB,isSymbol:GB,join:XB,makeSymbol:OB,get mark(){return SE},get measure(){return PE},objectToString:yy,toDisplayString:JB,toTypeString:by,warn:zE,warnOnce:a6},Symbol.toStringTag,{value:"Module"})),s6=wv(o6);/*! + */const Dz=typeof window<"u";let Sz,zz;{const e=Dz&&window.performance;e&&e.mark&&e.measure&&e.clearMarks&&e.clearMeasures&&(Sz=t=>{e.mark(t)},zz=(t,a,n)=>{e.measure(t,a,n),e.clearMarks(a),e.clearMarks(n)})}const I6=/\{([0-9a-zA-Z]+)\}/g;function N6(e,...t){return t.length===1&&Bd(t[0])&&(t=t[0]),(!t||!t.hasOwnProperty)&&(t={}),e.replace(I6,(a,n)=>t.hasOwnProperty(n)?t[n]:"")}const F6=(e,t=!1)=>t?Symbol.for(e):Symbol(e),M6=(e,t,a)=>Pz({l:e,k:t,s:a}),Pz=e=>JSON.stringify(e).replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029").replace(/\u0027/g,"\\u0027"),R6=e=>typeof e=="number"&&isFinite(e),O6=e=>by(e)==="[object Date]",$6=e=>by(e)==="[object RegExp]",L6=e=>ky(e)&&Object.keys(e).length===0,B6=Object.assign;let V1;const U6=()=>V1||(V1=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function V6(e){return e.replace(//g,">").replace(/"/g,""").replace(/'/g,"'")}const q6=Object.prototype.hasOwnProperty;function H6(e,t){return q6.call(e,t)}const vy=Array.isArray,Eg=e=>typeof e=="function",W6=e=>typeof e=="string",K6=e=>typeof e=="boolean",Y6=e=>typeof e=="symbol",Bd=e=>e!==null&&typeof e=="object",Z6=e=>Bd(e)&&Eg(e.then)&&Eg(e.catch),yy=Object.prototype.toString,by=e=>yy.call(e),ky=e=>{if(!Bd(e))return!1;const t=Object.getPrototypeOf(e);return t===null||t.constructor===Object},G6=e=>e==null?"":vy(e)||ky(e)&&e.toString===yy?JSON.stringify(e,null,2):String(e);function Q6(e,t=""){return e.reduce((a,n,i)=>i===0?a+n:a+t+n,"")}const q1=2;function J6(e,t=0,a=e.length){const n=e.split(/\r?\n/);let i=0;const o=[];for(let r=0;r=t){for(let l=r-q1;l<=r+q1||a>i;l++){if(l<0||l>=n.length)continue;const d=l+1;o.push(`${d}${" ".repeat(3-String(d).length)}| ${n[l]}`);const u=n[l].length;if(l===r){const _=t-(i-u)+1,f=Math.max(1,a>i?u-_:a-t);o.push(" | "+" ".repeat(_)+"^".repeat(f))}else if(l>r){if(a>i){const _=Math.max(Math.min(a-i,u),1);o.push(" | "+"^".repeat(_))}i+=u+1}}break}return o.join(` +`)}function X6(e){let t=e;return()=>++t}function Ez(e,t){typeof console<"u"&&(console.warn("[intlify] "+e),t&&console.warn(t.stack))}const H1={};function eL(e){H1[e]||(H1[e]=!0,Ez(e))}function tL(){const e=new Map;return{events:e,on(a,n){const i=e.get(a);i&&i.push(n)||e.set(a,[n])},off(a,n){const i=e.get(a);i&&i.splice(i.indexOf(n)>>>0,1)},emit(a,n){(e.get(a)||[]).slice().map(i=>i(n)),(e.get("*")||[]).slice().map(i=>i(a,n))}}}const u_=e=>!Bd(e)||vy(e);function aL(e,t){if(u_(e)||u_(t))throw new Error("Invalid value");const a=[{src:e,des:t}];for(;a.length;){const{src:n,des:i}=a.pop();Object.keys(n).forEach(o=>{u_(n[o])||u_(i[o])?i[o]=n[o]:a.push({src:n[o],des:i[o]})})}}const nL=Object.freeze(Object.defineProperty({__proto__:null,assign:B6,createEmitter:tL,deepCopy:aL,escapeHtml:V6,format:N6,friendlyJSONstringify:Pz,generateCodeFrame:J6,generateFormatCacheKey:M6,getGlobalThis:U6,hasOwn:H6,inBrowser:Dz,incrementer:X6,isArray:vy,isBoolean:K6,isDate:O6,isEmptyObject:L6,isFunction:Eg,isNumber:R6,isObject:Bd,isPlainObject:ky,isPromise:Z6,isRegExp:$6,isString:W6,isSymbol:Y6,join:Q6,makeSymbol:F6,get mark(){return Sz},get measure(){return zz},objectToString:yy,toDisplayString:G6,toTypeString:by,warn:Ez,warnOnce:eL},Symbol.toStringTag,{value:"Module"})),iL=wv(nL);/*! * core-base v9.9.0 * (c) 2024 kazuya kawaguchi * Released under the MIT License. - */const $r=typeof window<"u";let oi,Lr;{const e=$r&&window.performance;e&&e.mark&&e.measure&&e.clearMarks&&e.clearMeasures&&(oi=t=>{e.mark(t)},Lr=(t,a,n)=>{e.measure(t,a,n),e.clearMarks(a),e.clearMarks(n)})}const r6=/\{([0-9a-zA-Z]+)\}/g;function wy(e,...t){return t.length===1&&Va(t[0])&&(t=t[0]),(!t||!t.hasOwnProperty)&&(t={}),e.replace(r6,(a,n)=>t.hasOwnProperty(n)?t[n]:"")}const l6=(e,t,a)=>c6({l:e,k:t,s:a}),c6=e=>JSON.stringify(e).replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029").replace(/\u0027/g,"\\u0027"),ni=e=>typeof e=="number"&&isFinite(e),d6=e=>CE(e)==="[object Date]",HD=e=>CE(e)==="[object RegExp]",Dy=e=>ka(e)&&Object.keys(e).length===0,Gs=Object.assign;function KD(e){return e.replace(//g,">").replace(/"/g,""").replace(/'/g,"'")}const vo=Array.isArray,Ba=e=>typeof e=="function",mt=e=>typeof e=="string",kn=e=>typeof e=="boolean",Va=e=>e!==null&&typeof e=="object",u6=e=>Va(e)&&Ba(e.then)&&Ba(e.catch),AE=Object.prototype.toString,CE=e=>AE.call(e),ka=e=>{if(!Va(e))return!1;const t=Object.getPrototypeOf(e);return t===null||t.constructor===Object},_6=e=>e==null?"":vo(e)||ka(e)&&e.toString===AE?JSON.stringify(e,null,2):String(e);function xy(e,t=""){return e.reduce((a,n,i)=>i===0?a+n:a+t+n,"")}const YD=2;function m6(e,t=0,a=e.length){const n=e.split(/\r?\n/);let i=0;const o=[];for(let s=0;s=t){for(let l=s-YD;l<=s+YD||a>i;l++){if(l<0||l>=n.length)continue;const d=l+1;o.push(`${d}${" ".repeat(3-String(d).length)}| ${n[l]}`);const u=n[l].length;if(l===s){const _=t-(i-u)+1,f=Math.max(1,a>i?u-_:a-t);o.push(" | "+" ".repeat(_)+"^".repeat(f))}else if(l>s){if(a>i){const _=Math.max(Math.min(a-i,u),1);o.push(" | "+"^".repeat(_))}i+=u+1}}break}return o.join(` -`)}function p6(e){let t=e;return()=>++t}function Ud(e,t){typeof console<"u"&&(console.warn("[intlify] "+e),t&&console.warn(t.stack))}const ZD={};function f6(e){ZD[e]||(ZD[e]=!0,Ud(e))}function h6(e,t,a){return{line:e,column:t,offset:a}}function Cg(e,t,a){const n={start:e,end:t};return a!=null&&(n.source=a),n}const dt={EXPECTED_TOKEN:1,INVALID_TOKEN_IN_PLACEHOLDER:2,UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER:3,UNKNOWN_ESCAPE_SEQUENCE:4,INVALID_UNICODE_ESCAPE_SEQUENCE:5,UNBALANCED_CLOSING_BRACE:6,UNTERMINATED_CLOSING_BRACE:7,EMPTY_PLACEHOLDER:8,NOT_ALLOW_NEST_PLACEHOLDER:9,INVALID_LINKED_FORMAT:10,MUST_HAVE_MESSAGES_IN_PLURAL:11,UNEXPECTED_EMPTY_LINKED_MODIFIER:12,UNEXPECTED_EMPTY_LINKED_KEY:13,UNEXPECTED_LEXICAL_ANALYSIS:14,UNHANDLED_CODEGEN_NODE_TYPE:15,UNHANDLED_MINIFIER_NODE_TYPE:16,__EXTEND_POINT__:17},g6={[dt.EXPECTED_TOKEN]:"Expected token: '{0}'",[dt.INVALID_TOKEN_IN_PLACEHOLDER]:"Invalid token in placeholder: '{0}'",[dt.UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER]:"Unterminated single quote in placeholder",[dt.UNKNOWN_ESCAPE_SEQUENCE]:"Unknown escape sequence: \\{0}",[dt.INVALID_UNICODE_ESCAPE_SEQUENCE]:"Invalid unicode escape sequence: {0}",[dt.UNBALANCED_CLOSING_BRACE]:"Unbalanced closing brace",[dt.UNTERMINATED_CLOSING_BRACE]:"Unterminated closing brace",[dt.EMPTY_PLACEHOLDER]:"Empty placeholder",[dt.NOT_ALLOW_NEST_PLACEHOLDER]:"Not allowed nest placeholder",[dt.INVALID_LINKED_FORMAT]:"Invalid linked format",[dt.MUST_HAVE_MESSAGES_IN_PLURAL]:"Plural must have messages",[dt.UNEXPECTED_EMPTY_LINKED_MODIFIER]:"Unexpected empty linked modifier",[dt.UNEXPECTED_EMPTY_LINKED_KEY]:"Unexpected empty linked key",[dt.UNEXPECTED_LEXICAL_ANALYSIS]:"Unexpected lexical analysis in token: '{0}'",[dt.UNHANDLED_CODEGEN_NODE_TYPE]:"unhandled codegen node type: '{0}'",[dt.UNHANDLED_MINIFIER_NODE_TYPE]:"unhandled mimifier node type: '{0}'"};function _c(e,t,a={}){const{domain:n,messages:i,args:o}=a,s=wy((i||g6)[e]||"",...o||[]),l=new SyntaxError(String(s));return l.code=e,t&&(l.location=t),l.domain=n,l}function v6(e){throw e}const y6=/<\/?[\w\s="/.':;#-\/]+>/,b6=e=>y6.test(e),Io=" ",k6="\r",vn=` -`,w6="\u2028",D6="\u2029";function x6(e){const t=e;let a=0,n=1,i=1,o=0;const s=j=>t[j]===k6&&t[j+1]===vn,l=j=>t[j]===vn,d=j=>t[j]===D6,u=j=>t[j]===w6,_=j=>s(j)||l(j)||d(j)||u(j),f=()=>a,p=()=>n,h=()=>i,g=()=>o,y=j=>s(j)||d(j)||u(j)?vn:t[j],k=()=>y(a),b=()=>y(a+o);function P(){return o=0,_(a)&&(n++,i=0),s(a)&&a++,a++,i++,t[a]}function w(){return s(a+o)&&o++,o++,t[a+o]}function x(){a=0,n=1,i=1,o=0}function E(j=0){o=j}function C(){const j=a+o;for(;j!==a;)P();o=0}return{index:f,line:p,column:h,peekOffset:g,charAt:y,currentChar:k,currentPeek:b,next:P,peek:w,reset:x,resetPeek:E,skipToPeek:C}}const ws=void 0,S6=".",GD="'",P6="tokenizer";function E6(e,t={}){const a=t.location!==!1,n=x6(e),i=()=>n.index(),o=()=>h6(n.line(),n.column(),n.index()),s=o(),l=i(),d={currentType:14,offset:l,startLoc:s,endLoc:s,lastType:14,lastOffset:l,lastStartLoc:s,lastEndLoc:s,braceNest:0,inLinked:!1,text:""},u=()=>d,{onError:_}=t;function f(S,D,F,...q){const H=u();if(D.column+=F,D.offset+=F,_){const ue=a?Cg(H.startLoc,D):null,xe=_c(S,ue,{domain:P6,args:q});_(xe)}}function p(S,D,F){S.endLoc=o(),S.currentType=D;const q={type:D};return a&&(q.loc=Cg(S.startLoc,S.endLoc)),F!=null&&(q.value=F),q}const h=S=>p(S,14);function g(S,D){return S.currentChar()===D?(S.next(),D):(f(dt.EXPECTED_TOKEN,o(),0,D),"")}function y(S){let D="";for(;S.currentPeek()===Io||S.currentPeek()===vn;)D+=S.currentPeek(),S.peek();return D}function k(S){const D=y(S);return S.skipToPeek(),D}function b(S){if(S===ws)return!1;const D=S.charCodeAt(0);return D>=97&&D<=122||D>=65&&D<=90||D===95}function P(S){if(S===ws)return!1;const D=S.charCodeAt(0);return D>=48&&D<=57}function w(S,D){const{currentType:F}=D;if(F!==2)return!1;y(S);const q=b(S.currentPeek());return S.resetPeek(),q}function x(S,D){const{currentType:F}=D;if(F!==2)return!1;y(S);const q=S.currentPeek()==="-"?S.peek():S.currentPeek(),H=P(q);return S.resetPeek(),H}function E(S,D){const{currentType:F}=D;if(F!==2)return!1;y(S);const q=S.currentPeek()===GD;return S.resetPeek(),q}function C(S,D){const{currentType:F}=D;if(F!==8)return!1;y(S);const q=S.currentPeek()===".";return S.resetPeek(),q}function j(S,D){const{currentType:F}=D;if(F!==9)return!1;y(S);const q=b(S.currentPeek());return S.resetPeek(),q}function A(S,D){const{currentType:F}=D;if(!(F===8||F===12))return!1;y(S);const q=S.currentPeek()===":";return S.resetPeek(),q}function U(S,D){const{currentType:F}=D;if(F!==10)return!1;const q=()=>{const ue=S.currentPeek();return ue==="{"?b(S.peek()):ue==="@"||ue==="%"||ue==="|"||ue===":"||ue==="."||ue===Io||!ue?!1:ue===vn?(S.peek(),q()):b(ue)},H=q();return S.resetPeek(),H}function V(S){y(S);const D=S.currentPeek()==="|";return S.resetPeek(),D}function ee(S){const D=y(S),F=S.currentPeek()==="%"&&S.peek()==="{";return S.resetPeek(),{isModulo:F,hasSpace:D.length>0}}function J(S,D=!0){const F=(H=!1,ue="",xe=!1)=>{const he=S.currentPeek();return he==="{"?ue==="%"?!1:H:he==="@"||!he?ue==="%"?!0:H:he==="%"?(S.peek(),F(H,"%",!0)):he==="|"?ue==="%"||xe?!0:!(ue===Io||ue===vn):he===Io?(S.peek(),F(!0,Io,xe)):he===vn?(S.peek(),F(!0,vn,xe)):!0},q=F();return D&&S.resetPeek(),q}function ie(S,D){const F=S.currentChar();return F===ws?ws:D(F)?(S.next(),F):null}function Te(S){return ie(S,F=>{const q=F.charCodeAt(0);return q>=97&&q<=122||q>=65&&q<=90||q>=48&&q<=57||q===95||q===36})}function ze(S){return ie(S,F=>{const q=F.charCodeAt(0);return q>=48&&q<=57})}function ce(S){return ie(S,F=>{const q=F.charCodeAt(0);return q>=48&&q<=57||q>=65&&q<=70||q>=97&&q<=102})}function Ae(S){let D="",F="";for(;D=ze(S);)F+=D;return F}function Pe(S){k(S);const D=S.currentChar();return D!=="%"&&f(dt.EXPECTED_TOKEN,o(),0,D),S.next(),"%"}function He(S){let D="";for(;;){const F=S.currentChar();if(F==="{"||F==="}"||F==="@"||F==="|"||!F)break;if(F==="%")if(J(S))D+=F,S.next();else break;else if(F===Io||F===vn)if(J(S))D+=F,S.next();else{if(V(S))break;D+=F,S.next()}else D+=F,S.next()}return D}function oe(S){k(S);let D="",F="";for(;D=Te(S);)F+=D;return S.currentChar()===ws&&f(dt.UNTERMINATED_CLOSING_BRACE,o(),0),F}function Ge(S){k(S);let D="";return S.currentChar()==="-"?(S.next(),D+=`-${Ae(S)}`):D+=Ae(S),S.currentChar()===ws&&f(dt.UNTERMINATED_CLOSING_BRACE,o(),0),D}function at(S){k(S),g(S,"'");let D="",F="";const q=ue=>ue!==GD&&ue!==vn;for(;D=ie(S,q);)D==="\\"?F+=la(S):F+=D;const H=S.currentChar();return H===vn||H===ws?(f(dt.UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER,o(),0),H===vn&&(S.next(),g(S,"'")),F):(g(S,"'"),F)}function la(S){const D=S.currentChar();switch(D){case"\\":case"'":return S.next(),`\\${D}`;case"u":return Bt(S,D,4);case"U":return Bt(S,D,6);default:return f(dt.UNKNOWN_ESCAPE_SEQUENCE,o(),0,D),""}}function Bt(S,D,F){g(S,D);let q="";for(let H=0;HH!=="{"&&H!=="}"&&H!==Io&&H!==vn;for(;D=ie(S,q);)F+=D;return F}function jt(S){let D="",F="";for(;D=Te(S);)F+=D;return F}function le(S){const D=(F=!1,q)=>{const H=S.currentChar();return H==="{"||H==="%"||H==="@"||H==="|"||H==="("||H===")"||!H||H===Io?q:H===vn||H===S6?(q+=H,S.next(),D(F,q)):(q+=H,S.next(),D(!0,q))};return D(!1,"")}function we(S){k(S);const D=g(S,"|");return k(S),D}function De(S,D){let F=null;switch(S.currentChar()){case"{":return D.braceNest>=1&&f(dt.NOT_ALLOW_NEST_PLACEHOLDER,o(),0),S.next(),F=p(D,2,"{"),k(S),D.braceNest++,F;case"}":return D.braceNest>0&&D.currentType===2&&f(dt.EMPTY_PLACEHOLDER,o(),0),S.next(),F=p(D,3,"}"),D.braceNest--,D.braceNest>0&&k(S),D.inLinked&&D.braceNest===0&&(D.inLinked=!1),F;case"@":return D.braceNest>0&&f(dt.UNTERMINATED_CLOSING_BRACE,o(),0),F=Oe(S,D)||h(D),D.braceNest=0,F;default:let H=!0,ue=!0,xe=!0;if(V(S))return D.braceNest>0&&f(dt.UNTERMINATED_CLOSING_BRACE,o(),0),F=p(D,1,we(S)),D.braceNest=0,D.inLinked=!1,F;if(D.braceNest>0&&(D.currentType===5||D.currentType===6||D.currentType===7))return f(dt.UNTERMINATED_CLOSING_BRACE,o(),0),D.braceNest=0,st(S,D);if(H=w(S,D))return F=p(D,5,oe(S)),k(S),F;if(ue=x(S,D))return F=p(D,6,Ge(S)),k(S),F;if(xe=E(S,D))return F=p(D,7,at(S)),k(S),F;if(!H&&!ue&&!xe)return F=p(D,13,Wt(S)),f(dt.INVALID_TOKEN_IN_PLACEHOLDER,o(),0,F.value),k(S),F;break}return F}function Oe(S,D){const{currentType:F}=D;let q=null;const H=S.currentChar();switch((F===8||F===9||F===12||F===10)&&(H===vn||H===Io)&&f(dt.INVALID_LINKED_FORMAT,o(),0),H){case"@":return S.next(),q=p(D,8,"@"),D.inLinked=!0,q;case".":return k(S),S.next(),p(D,9,".");case":":return k(S),S.next(),p(D,10,":");default:return V(S)?(q=p(D,1,we(S)),D.braceNest=0,D.inLinked=!1,q):C(S,D)||A(S,D)?(k(S),Oe(S,D)):j(S,D)?(k(S),p(D,12,jt(S))):U(S,D)?(k(S),H==="{"?De(S,D)||q:p(D,11,le(S))):(F===8&&f(dt.INVALID_LINKED_FORMAT,o(),0),D.braceNest=0,D.inLinked=!1,st(S,D))}}function st(S,D){let F={type:14};if(D.braceNest>0)return De(S,D)||h(D);if(D.inLinked)return Oe(S,D)||h(D);switch(S.currentChar()){case"{":return De(S,D)||h(D);case"}":return f(dt.UNBALANCED_CLOSING_BRACE,o(),0),S.next(),p(D,3,"}");case"@":return Oe(S,D)||h(D);default:if(V(S))return F=p(D,1,we(S)),D.braceNest=0,D.inLinked=!1,F;const{isModulo:H,hasSpace:ue}=ee(S);if(H)return ue?p(D,0,He(S)):p(D,4,Pe(S));if(J(S))return p(D,0,He(S));break}return F}function vt(){const{currentType:S,offset:D,startLoc:F,endLoc:q}=d;return d.lastType=S,d.lastOffset=D,d.lastStartLoc=F,d.lastEndLoc=q,d.offset=i(),d.startLoc=o(),n.currentChar()===ws?p(d,14):st(n,d)}return{nextToken:vt,currentOffset:i,currentPosition:o,context:u}}const z6="parser",A6=/(?:\\\\|\\'|\\u([0-9a-fA-F]{4})|\\U([0-9a-fA-F]{6}))/g;function C6(e,t,a){switch(e){case"\\\\":return"\\";case"\\'":return"'";default:{const n=parseInt(t||a,16);return n<=55295||n>=57344?String.fromCodePoint(n):"�"}}}function T6(e={}){const t=e.location!==!1,{onError:a}=e;function n(b,P,w,x,...E){const C=b.currentPosition();if(C.offset+=x,C.column+=x,a){const j=t?Cg(w,C):null,A=_c(P,j,{domain:z6,args:E});a(A)}}function i(b,P,w){const x={type:b};return t&&(x.start=P,x.end=P,x.loc={start:w,end:w}),x}function o(b,P,w,x){x&&(b.type=x),t&&(b.end=P,b.loc&&(b.loc.end=w))}function s(b,P){const w=b.context(),x=i(3,w.offset,w.startLoc);return x.value=P,o(x,b.currentOffset(),b.currentPosition()),x}function l(b,P){const w=b.context(),{lastOffset:x,lastStartLoc:E}=w,C=i(5,x,E);return C.index=parseInt(P,10),b.nextToken(),o(C,b.currentOffset(),b.currentPosition()),C}function d(b,P){const w=b.context(),{lastOffset:x,lastStartLoc:E}=w,C=i(4,x,E);return C.key=P,b.nextToken(),o(C,b.currentOffset(),b.currentPosition()),C}function u(b,P){const w=b.context(),{lastOffset:x,lastStartLoc:E}=w,C=i(9,x,E);return C.value=P.replace(A6,C6),b.nextToken(),o(C,b.currentOffset(),b.currentPosition()),C}function _(b){const P=b.nextToken(),w=b.context(),{lastOffset:x,lastStartLoc:E}=w,C=i(8,x,E);return P.type!==12?(n(b,dt.UNEXPECTED_EMPTY_LINKED_MODIFIER,w.lastStartLoc,0),C.value="",o(C,x,E),{nextConsumeToken:P,node:C}):(P.value==null&&n(b,dt.UNEXPECTED_LEXICAL_ANALYSIS,w.lastStartLoc,0,uo(P)),C.value=P.value||"",o(C,b.currentOffset(),b.currentPosition()),{node:C})}function f(b,P){const w=b.context(),x=i(7,w.offset,w.startLoc);return x.value=P,o(x,b.currentOffset(),b.currentPosition()),x}function p(b){const P=b.context(),w=i(6,P.offset,P.startLoc);let x=b.nextToken();if(x.type===9){const E=_(b);w.modifier=E.node,x=E.nextConsumeToken||b.nextToken()}switch(x.type!==10&&n(b,dt.UNEXPECTED_LEXICAL_ANALYSIS,P.lastStartLoc,0,uo(x)),x=b.nextToken(),x.type===2&&(x=b.nextToken()),x.type){case 11:x.value==null&&n(b,dt.UNEXPECTED_LEXICAL_ANALYSIS,P.lastStartLoc,0,uo(x)),w.key=f(b,x.value||"");break;case 5:x.value==null&&n(b,dt.UNEXPECTED_LEXICAL_ANALYSIS,P.lastStartLoc,0,uo(x)),w.key=d(b,x.value||"");break;case 6:x.value==null&&n(b,dt.UNEXPECTED_LEXICAL_ANALYSIS,P.lastStartLoc,0,uo(x)),w.key=l(b,x.value||"");break;case 7:x.value==null&&n(b,dt.UNEXPECTED_LEXICAL_ANALYSIS,P.lastStartLoc,0,uo(x)),w.key=u(b,x.value||"");break;default:n(b,dt.UNEXPECTED_EMPTY_LINKED_KEY,P.lastStartLoc,0);const E=b.context(),C=i(7,E.offset,E.startLoc);return C.value="",o(C,E.offset,E.startLoc),w.key=C,o(w,E.offset,E.startLoc),{nextConsumeToken:x,node:w}}return o(w,b.currentOffset(),b.currentPosition()),{node:w}}function h(b){const P=b.context(),w=P.currentType===1?b.currentOffset():P.offset,x=P.currentType===1?P.endLoc:P.startLoc,E=i(2,w,x);E.items=[];let C=null;do{const U=C||b.nextToken();switch(C=null,U.type){case 0:U.value==null&&n(b,dt.UNEXPECTED_LEXICAL_ANALYSIS,P.lastStartLoc,0,uo(U)),E.items.push(s(b,U.value||""));break;case 6:U.value==null&&n(b,dt.UNEXPECTED_LEXICAL_ANALYSIS,P.lastStartLoc,0,uo(U)),E.items.push(l(b,U.value||""));break;case 5:U.value==null&&n(b,dt.UNEXPECTED_LEXICAL_ANALYSIS,P.lastStartLoc,0,uo(U)),E.items.push(d(b,U.value||""));break;case 7:U.value==null&&n(b,dt.UNEXPECTED_LEXICAL_ANALYSIS,P.lastStartLoc,0,uo(U)),E.items.push(u(b,U.value||""));break;case 8:const V=p(b);E.items.push(V.node),C=V.nextConsumeToken||null;break}}while(P.currentType!==14&&P.currentType!==1);const j=P.currentType===1?P.lastOffset:b.currentOffset(),A=P.currentType===1?P.lastEndLoc:b.currentPosition();return o(E,j,A),E}function g(b,P,w,x){const E=b.context();let C=x.items.length===0;const j=i(1,P,w);j.cases=[],j.cases.push(x);do{const A=h(b);C||(C=A.items.length===0),j.cases.push(A)}while(E.currentType!==14);return C&&n(b,dt.MUST_HAVE_MESSAGES_IN_PLURAL,w,0),o(j,b.currentOffset(),b.currentPosition()),j}function y(b){const P=b.context(),{offset:w,startLoc:x}=P,E=h(b);return P.currentType===14?E:g(b,w,x,E)}function k(b){const P=E6(b,Gs({},e)),w=P.context(),x=i(0,w.offset,w.startLoc);return t&&x.loc&&(x.loc.source=b),x.body=y(P),e.onCacheKey&&(x.cacheKey=e.onCacheKey(b)),w.currentType!==14&&n(P,dt.UNEXPECTED_LEXICAL_ANALYSIS,w.lastStartLoc,0,b[w.offset]||""),o(x,P.currentOffset(),P.currentPosition()),x}return{parse:k}}function uo(e){if(e.type===14)return"EOF";const t=(e.value||"").replace(/\r?\n/gu,"\\n");return t.length>10?t.slice(0,9)+"…":t}function j6(e,t={}){const a={ast:e,helpers:new Set};return{context:()=>a,helper:o=>(a.helpers.add(o),o)}}function QD(e,t){for(let a=0;aJD(a)),e}function JD(e){if(e.items.length===1){const t=e.items[0];(t.type===3||t.type===9)&&(e.static=t.value,delete t.value)}else{const t=[];for(let a=0;al;function u(k,b){l.code+=k}function _(k,b=!0){const P=b?i:"";u(o?P+" ".repeat(k):P)}function f(k=!0){const b=++l.indentLevel;k&&_(b)}function p(k=!0){const b=--l.indentLevel;k&&_(b)}function h(){_(l.indentLevel)}return{context:d,push:u,indent:f,deindent:p,newline:h,helper:k=>`_${k}`,needIndent:()=>l.needIndent}}function M6(e,t){const{helper:a}=e;e.push(`${a("linked")}(`),ec(e,t.key),t.modifier?(e.push(", "),ec(e,t.modifier),e.push(", _type")):e.push(", undefined, _type"),e.push(")")}function $6(e,t){const{helper:a,needIndent:n}=e;e.push(`${a("normalize")}([`),e.indent(n());const i=t.items.length;for(let o=0;o1){e.push(`${a("plural")}([`),e.indent(n());const i=t.cases.length;for(let o=0;o{const a=mt(t.mode)?t.mode:"normal",n=mt(t.filename)?t.filename:"message.intl",i=!!t.sourceMap,o=t.breakLineCode!=null?t.breakLineCode:a==="arrow"?";":` -`,s=t.needIndent?t.needIndent:a!=="arrow",l=e.helpers||[],d=O6(e,{mode:a,filename:n,sourceMap:i,breakLineCode:o,needIndent:s});d.push(a==="normal"?"function __msg__ (ctx) {":"(ctx) => {"),d.indent(s),l.length>0&&(d.push(`const { ${xy(l.map(f=>`${f}: _${f}`),", ")} } = ctx`),d.newline()),d.push("return "),ec(d,e),d.deindent(s),d.push("}"),delete e.helpers;const{code:u,map:_}=d.context();return{ast:e,code:u,map:_?_.toJSON():void 0}};function V6(e,t={}){const a=Gs({},t),n=!!a.jit,i=!!a.minify,o=a.optimize==null?!0:a.optimize,l=T6(a).parse(e);return n?(o&&I6(l),i&&Pl(l),{ast:l,code:""}):(N6(l,a),U6(l,a))}const Qs=[];Qs[0]={w:[0],i:[3,0],"[":[4],o:[7]};Qs[1]={w:[1],".":[2],"[":[4],o:[7]};Qs[2]={w:[2],i:[3,0],0:[3,0]};Qs[3]={i:[3,0],0:[3,0],w:[1,1],".":[2,1],"[":[4,1],o:[7,1]};Qs[4]={"'":[5,0],'"':[6,0],"[":[4,2],"]":[1,3],o:8,l:[4,0]};Qs[5]={"'":[4,0],o:8,l:[5,0]};Qs[6]={'"':[4,0],o:8,l:[6,0]};const q6=/^\s?(?:true|false|-?[\d.]+|'[^']*'|"[^"]*")\s?$/;function W6(e){return q6.test(e)}function H6(e){const t=e.charCodeAt(0),a=e.charCodeAt(e.length-1);return t===a&&(t===34||t===39)?e.slice(1,-1):e}function K6(e){if(e==null)return"o";switch(e.charCodeAt(0)){case 91:case 93:case 46:case 34:case 39:return e;case 95:case 36:case 45:return"i";case 9:case 10:case 13:case 160:case 65279:case 8232:case 8233:return"w"}return"i"}function Y6(e){const t=e.trim();return e.charAt(0)==="0"&&isNaN(parseInt(e))?!1:W6(t)?H6(t):"*"+t}function TE(e){const t=[];let a=-1,n=0,i=0,o,s,l,d,u,_,f;const p=[];p[0]=()=>{s===void 0?s=l:s+=l},p[1]=()=>{s!==void 0&&(t.push(s),s=void 0)},p[2]=()=>{p[0](),i++},p[3]=()=>{if(i>0)i--,n=4,p[0]();else{if(i=0,s===void 0||(s=Y6(s),s===!1))return!1;p[1]()}};function h(){const g=e[a+1];if(n===5&&g==="'"||n===6&&g==='"')return a++,l="\\"+g,p[0](),!0}for(;n!==null;)if(a++,o=e[a],!(o==="\\"&&h())){if(d=K6(o),f=Qs[n],u=f[d]||f.l||8,u===8||(n=u[0],u[1]!==void 0&&(_=p[u[1]],_&&(l=o,_()===!1))))return;if(n===7)return t}}const XD=new Map;function jE(e,t){return Va(e)?e[t]:null}function Z6(e,t){if(!Va(e))return null;let a=XD.get(t);if(a||(a=TE(t),a&&XD.set(t,a)),!a)return null;const n=a.length;let i=e,o=0;for(;oe,Q6=e=>"",NE="text",J6=e=>e.length===0?"":xy(e),X6=_6;function ex(e,t){return e=Math.abs(e),t===2?e?e>1?1:0:1:e?Math.min(e,2):0}function e5(e){const t=ni(e.pluralIndex)?e.pluralIndex:-1;return e.named&&(ni(e.named.count)||ni(e.named.n))?ni(e.named.count)?e.named.count:ni(e.named.n)?e.named.n:t:t}function t5(e,t){t.count||(t.count=e),t.n||(t.n=e)}function IE(e={}){const t=e.locale,a=e5(e),n=Va(e.pluralRules)&&mt(t)&&Ba(e.pluralRules[t])?e.pluralRules[t]:ex,i=Va(e.pluralRules)&&mt(t)&&Ba(e.pluralRules[t])?ex:void 0,o=b=>b[n(a,b.length,i)],s=e.list||[],l=b=>s[b],d=e.named||{};ni(e.pluralIndex)&&t5(a,d);const u=b=>d[b];function _(b){const P=Ba(e.messages)?e.messages(b):Va(e.messages)?e.messages[b]:!1;return P||(e.parent?e.parent.message(b):Q6)}const f=b=>e.modifiers?e.modifiers[b]:G6,p=ka(e.processor)&&Ba(e.processor.normalize)?e.processor.normalize:J6,h=ka(e.processor)&&Ba(e.processor.interpolate)?e.processor.interpolate:X6,g=ka(e.processor)&&mt(e.processor.type)?e.processor.type:NE,k={list:l,named:u,plural:o,linked:(b,...P)=>{const[w,x]=P;let E="text",C="";P.length===1?Va(w)?(C=w.modifier||C,E=w.type||E):mt(w)&&(C=w||C):P.length===2&&(mt(w)&&(C=w||C),mt(x)&&(E=x||E));const j=_(b)(k),A=E==="vnode"&&vo(j)&&C?j[0]:j;return C?f(C)(A,E):A},message:_,type:g,interpolate:h,normalize:p,values:Gs({},s,d)};return k}let tc=null;function a5(e){tc=e}function n5(){return tc}function FE(e,t,a){tc&&tc.emit("i18n:init",{timestamp:Date.now(),i18n:e,version:t,meta:a})}const RE=i5("function:translate");function i5(e){return t=>tc&&tc.emit(e,t)}const bn={NOT_FOUND_KEY:1,FALLBACK_TO_TRANSLATE:2,CANNOT_FORMAT_NUMBER:3,FALLBACK_TO_NUMBER_FORMAT:4,CANNOT_FORMAT_DATE:5,FALLBACK_TO_DATE_FORMAT:6,EXPERIMENTAL_CUSTOM_MESSAGE_COMPILER:7,__EXTEND_POINT__:8},o5={[bn.NOT_FOUND_KEY]:"Not found '{key}' key in '{locale}' locale messages.",[bn.FALLBACK_TO_TRANSLATE]:"Fall back to translate '{key}' key with '{target}' locale.",[bn.CANNOT_FORMAT_NUMBER]:"Cannot format a number value due to not supported Intl.NumberFormat.",[bn.FALLBACK_TO_NUMBER_FORMAT]:"Fall back to number format '{key}' key with '{target}' locale.",[bn.CANNOT_FORMAT_DATE]:"Cannot format a date value due to not supported Intl.DateTimeFormat.",[bn.FALLBACK_TO_DATE_FORMAT]:"Fall back to datetime format '{key}' key with '{target}' locale.",[bn.EXPERIMENTAL_CUSTOM_MESSAGE_COMPILER]:"This project is using Custom Message Compiler, which is an experimental feature. It may receive breaking changes or be removed in the future."};function Ws(e,...t){return wy(o5[e],...t)}const OE=dt.__EXTEND_POINT__,pr=p6(OE),Ga={INVALID_ARGUMENT:OE,INVALID_DATE_ARGUMENT:pr(),INVALID_ISO_DATE_ARGUMENT:pr(),NOT_SUPPORT_NON_STRING_MESSAGE:pr(),NOT_SUPPORT_LOCALE_PROMISE_VALUE:pr(),NOT_SUPPORT_LOCALE_ASYNC_FUNCTION:pr(),NOT_SUPPORT_LOCALE_TYPE:pr(),__EXTEND_POINT__:pr()};function Ki(e){return _c(e,null,{messages:s5})}const s5={[Ga.INVALID_ARGUMENT]:"Invalid arguments",[Ga.INVALID_DATE_ARGUMENT]:"The date provided is an invalid Date object.Make sure your Date represents a valid date.",[Ga.INVALID_ISO_DATE_ARGUMENT]:"The argument provided is not a valid ISO date string",[Ga.NOT_SUPPORT_NON_STRING_MESSAGE]:"Not support non-string message",[Ga.NOT_SUPPORT_LOCALE_PROMISE_VALUE]:"cannot support promise value",[Ga.NOT_SUPPORT_LOCALE_ASYNC_FUNCTION]:"cannot support async function",[Ga.NOT_SUPPORT_LOCALE_TYPE]:"cannot support locale type"};function qm(e,t){return t.locale!=null?Tg(t.locale):Tg(e.locale)}let Eh;function Tg(e){if(mt(e))return e;if(Ba(e)){if(e.resolvedOnce&&Eh!=null)return Eh;if(e.constructor.name==="Function"){const t=e();if(u6(t))throw Ki(Ga.NOT_SUPPORT_LOCALE_PROMISE_VALUE);return Eh=t}else throw Ki(Ga.NOT_SUPPORT_LOCALE_ASYNC_FUNCTION)}else throw Ki(Ga.NOT_SUPPORT_LOCALE_TYPE)}function ME(e,t,a){return[...new Set([a,...vo(t)?t:Va(t)?Object.keys(t):mt(t)?[t]:[a]])]}function r5(e,t,a){const n=mt(a)?a:em,i=e;i.__localeChainCache||(i.__localeChainCache=new Map);let o=i.__localeChainCache.get(n);if(!o){o=[];let s=[a];for(;vo(s);)s=tx(o,s,t);const l=vo(t)||!ka(t)?t:t.default?t.default:null;s=mt(l)?[l]:l,vo(s)&&tx(o,s,!1),i.__localeChainCache.set(n,o)}return o}function tx(e,t,a){let n=!0;for(let i=0;i`${e.charAt(0).toLocaleUpperCase()}${e.substr(1)}`;function d5(){return{upper:(e,t)=>t==="text"&&mt(e)?e.toUpperCase():t==="vnode"&&Va(e)&&"__v_isVNode"in e?e.children.toUpperCase():e,lower:(e,t)=>t==="text"&&mt(e)?e.toLowerCase():t==="vnode"&&Va(e)&&"__v_isVNode"in e?e.children.toLowerCase():e,capitalize:(e,t)=>t==="text"&&mt(e)?ax(e):t==="vnode"&&Va(e)&&"__v_isVNode"in e?ax(e.children):e}}let LE;function u5(e){LE=e}let BE;function _5(e){BE=e}let UE;function m5(e){UE=e}let VE=null;const p5=e=>{VE=e},qE=()=>VE;let WE=null;const f5=e=>{WE=e},h5=()=>WE;let nx=0;function g5(e={}){const t=Ba(e.onWarn)?e.onWarn:Ud,a=mt(e.version)?e.version:$E,n=mt(e.locale)||Ba(e.locale)?e.locale:em,i=Ba(n)?em:n,o=vo(e.fallbackLocale)||ka(e.fallbackLocale)||mt(e.fallbackLocale)||e.fallbackLocale===!1?e.fallbackLocale:i,s=ka(e.messages)?e.messages:{[i]:{}},l=ka(e.datetimeFormats)?e.datetimeFormats:{[i]:{}},d=ka(e.numberFormats)?e.numberFormats:{[i]:{}},u=Gs({},e.modifiers||{},d5()),_=e.pluralRules||{},f=Ba(e.missing)?e.missing:null,p=kn(e.missingWarn)||HD(e.missingWarn)?e.missingWarn:!0,h=kn(e.fallbackWarn)||HD(e.fallbackWarn)?e.fallbackWarn:!0,g=!!e.fallbackFormat,y=!!e.unresolving,k=Ba(e.postTranslation)?e.postTranslation:null,b=ka(e.processor)?e.processor:null,P=kn(e.warnHtmlMessage)?e.warnHtmlMessage:!0,w=!!e.escapeParameter,x=Ba(e.messageCompiler)?e.messageCompiler:LE;Ba(e.messageCompiler)&&f6(Ws(bn.EXPERIMENTAL_CUSTOM_MESSAGE_COMPILER));const E=Ba(e.messageResolver)?e.messageResolver:BE||jE,C=Ba(e.localeFallbacker)?e.localeFallbacker:UE||ME,j=Va(e.fallbackContext)?e.fallbackContext:void 0,A=e,U=Va(A.__datetimeFormatters)?A.__datetimeFormatters:new Map,V=Va(A.__numberFormatters)?A.__numberFormatters:new Map,ee=Va(A.__meta)?A.__meta:{};nx++;const J={version:a,cid:nx,locale:n,fallbackLocale:o,messages:s,modifiers:u,pluralRules:_,missing:f,missingWarn:p,fallbackWarn:h,fallbackFormat:g,unresolving:y,postTranslation:k,processor:b,warnHtmlMessage:P,escapeParameter:w,messageCompiler:x,messageResolver:E,localeFallbacker:C,fallbackContext:j,onWarn:t,__meta:ee};return J.datetimeFormats=l,J.numberFormats=d,J.__datetimeFormatters=U,J.__numberFormatters=V,J.__v_emitter=A.__v_emitter!=null?A.__v_emitter:void 0,FE(J,a,ee),J}function Hm(e,t){return e instanceof RegExp?e.test(t):e}function HE(e,t){return e instanceof RegExp?e.test(t):e}function Km(e,t,a,n,i){const{missing:o,onWarn:s}=e;{const l=e.__v_emitter;l&&l.emit("missing",{locale:a,key:t,type:i,groupId:`${i}:${t}`})}if(o!==null){const l=o(e,a,t,i);return mt(l)?l:t}else return HE(n,t)&&s(Ws(bn.NOT_FOUND_KEY,{key:t,locale:a})),t}function v5(e,t,a){const n=e;n.__localeChainCache=new Map,e.localeFallbacker(e,a,t)}function zh(e){return a=>y5(a,e)}function y5(e,t){const a=t.b||t.body;if((a.t||a.type)===1){const n=a,i=n.c||n.cases;return e.plural(i.reduce((o,s)=>[...o,ix(e,s)],[]))}else return ix(e,a)}function ix(e,t){const a=t.s||t.static;if(a)return e.type==="text"?a:e.normalize([a]);{const n=(t.i||t.items).reduce((i,o)=>[...i,jg(e,o)],[]);return e.normalize(n)}}function jg(e,t){const a=t.t||t.type;switch(a){case 3:const n=t;return n.v||n.value;case 9:const i=t;return i.v||i.value;case 4:const o=t;return e.interpolate(e.named(o.k||o.key));case 5:const s=t;return e.interpolate(e.list(s.i!=null?s.i:s.index));case 6:const l=t,d=l.m||l.modifier;return e.linked(jg(e,l.k||l.key),d?jg(e,d):void 0,e.type);case 7:const u=t;return u.v||u.value;case 8:const _=t;return _.v||_.value;default:throw new Error(`unhandled node type on format message part: ${a}`)}}const b5="Detected HTML in '{source}' message. Recommend not using HTML messages to avoid XSS.";function KE(e,t){t&&b6(e)&&Ud(wy(b5,{source:e}))}const YE=e=>e;let Dr=Object.create(null);function k5(){Dr=Object.create(null)}const Br=e=>Va(e)&&(e.t===0||e.type===0)&&("b"in e||"body"in e);function ZE(e,t={}){let a=!1;const n=t.onError||v6;return t.onError=i=>{a=!0,n(i)},{...V6(e,t),detectError:a}}const w5=(e,t)=>{if(!mt(e))throw Ki(Ga.NOT_SUPPORT_NON_STRING_MESSAGE);{const a=kn(t.warnHtmlMessage)?t.warnHtmlMessage:!0;KE(e,a);const i=(t.onCacheKey||YE)(e),o=Dr[i];if(o)return o;const{code:s,detectError:l}=ZE(e,t),d=new Function(`return ${s}`)();return l?d:Dr[i]=d}};function D5(e,t){if(mt(e)){const a=kn(t.warnHtmlMessage)?t.warnHtmlMessage:!0;KE(e,a);const i=(t.onCacheKey||YE)(e),o=Dr[i];if(o)return o;const{ast:s,detectError:l}=ZE(e,{...t,location:!0,jit:!0}),d=zh(s);return l?d:Dr[i]=d}else{if(!Br(e))return Ud(`the message that is resolve with key '${t.key}' is not supported for jit compilation`),()=>e;const a=e.cacheKey;if(a){const n=Dr[a];return n||(Dr[a]=zh(e))}else return zh(e)}}const ox=()=>"",Ei=e=>Ba(e);function x5(e,...t){const{fallbackFormat:a,postTranslation:n,unresolving:i,messageCompiler:o,fallbackLocale:s,messages:l}=e,[d,u]=JE(...t),_=kn(u.missingWarn)?u.missingWarn:e.missingWarn,f=kn(u.fallbackWarn)?u.fallbackWarn:e.fallbackWarn,p=kn(u.escapeParameter)?u.escapeParameter:e.escapeParameter,h=!!u.resolvedMessage,g=mt(u.default)||kn(u.default)?kn(u.default)?o?d:()=>d:u.default:a?o?d:()=>d:"",y=a||g!=="",k=qm(e,u);p&&S5(u);let[b,P,w]=h?[d,k,l[k]||{}]:GE(e,d,k,s,f,_),x=b,E=d;if(!h&&!(mt(x)||Br(x)||Ei(x))&&y&&(x=g,E=x),!h&&(!(mt(x)||Br(x)||Ei(x))||!mt(P)))return i?Wm:d;if(mt(x)&&e.messageCompiler==null)return Ud(`The message format compilation is not supported in this build. Because message compiler isn't included. You need to pre-compilation all message format. So translate function return '${d}'.`),d;let C=!1;const j=()=>{C=!0},A=Ei(x)?x:QE(e,d,P,x,E,j);if(C)return x;const U=A5(e,P,w,u),V=IE(U),ee=P5(e,A,V),J=n?n(ee,d):ee;{const ie={timestamp:Date.now(),key:mt(d)?d:Ei(x)?x.key:"",locale:P||(Ei(x)?x.locale:""),format:mt(x)?x:Ei(x)?x.source:"",message:J};ie.meta=Gs({},e.__meta,qE()||{}),RE(ie)}return J}function S5(e){vo(e.list)?e.list=e.list.map(t=>mt(t)?KD(t):t):Va(e.named)&&Object.keys(e.named).forEach(t=>{mt(e.named[t])&&(e.named[t]=KD(e.named[t]))})}function GE(e,t,a,n,i,o){const{messages:s,onWarn:l,messageResolver:d,localeFallbacker:u}=e,_=u(e,n,a);let f={},p,h=null,g=a,y=null;const k="translate";for(let b=0;b<_.length;b++){if(p=y=_[b],a!==p&&Hm(i,t)&&l(Ws(bn.FALLBACK_TO_TRANSLATE,{key:t,target:p})),a!==p){const C=e.__v_emitter;C&&C.emit("fallback",{type:k,key:t,from:g,to:y,groupId:`${k}:${t}`})}f=s[p]||{};let P=null,w,x;if($r&&(P=window.performance.now(),w="intlify-message-resolve-start",x="intlify-message-resolve-end",oi&&oi(w)),(h=d(f,t))===null&&(h=f[t]),$r){const C=window.performance.now(),j=e.__v_emitter;j&&P&&h&&j.emit("message-resolve",{type:"message-resolve",key:t,message:h,time:C-P,groupId:`${k}:${t}`}),w&&x&&oi&&Lr&&(oi(x),Lr("intlify message resolve",w,x))}if(mt(h)||Br(h)||Ei(h))break;const E=Km(e,t,p,o,k);E!==t&&(h=E),g=y}return[h,p,f]}function QE(e,t,a,n,i,o){const{messageCompiler:s,warnHtmlMessage:l}=e;if(Ei(n)){const p=n;return p.locale=p.locale||a,p.key=p.key||t,p}if(s==null){const p=()=>n;return p.locale=a,p.key=t,p}let d=null,u,_;$r&&(d=window.performance.now(),u="intlify-message-compilation-start",_="intlify-message-compilation-end",oi&&oi(u));const f=s(n,E5(e,a,i,n,l,o));if($r){const p=window.performance.now(),h=e.__v_emitter;h&&d&&h.emit("message-compilation",{type:"message-compilation",message:n,time:p-d,groupId:`translate:${t}`}),u&&_&&oi&&Lr&&(oi(_),Lr("intlify message compilation",u,_))}return f.locale=a,f.key=t,f.source=n,f}function P5(e,t,a){let n=null,i,o;$r&&(n=window.performance.now(),i="intlify-message-evaluation-start",o="intlify-message-evaluation-end",oi&&oi(i));const s=t(a);if($r){const l=window.performance.now(),d=e.__v_emitter;d&&n&&d.emit("message-evaluation",{type:"message-evaluation",value:s,time:l-n,groupId:`translate:${t.key}`}),i&&o&&oi&&Lr&&(oi(o),Lr("intlify message evaluation",i,o))}return s}function JE(...e){const[t,a,n]=e,i={};if(!mt(t)&&!ni(t)&&!Ei(t)&&!Br(t))throw Ki(Ga.INVALID_ARGUMENT);const o=ni(t)?String(t):(Ei(t),t);return ni(a)?i.plural=a:mt(a)?i.default=a:ka(a)&&!Dy(a)?i.named=a:vo(a)&&(i.list=a),ni(n)?i.plural=n:mt(n)?i.default=n:ka(n)&&Gs(i,n),[o,i]}function E5(e,t,a,n,i,o){return{locale:t,key:a,warnHtmlMessage:i,onError:s=>{o&&o(s);{const l=z5(n),d=`Message compilation error: ${s.message}`,u=s.location&&l&&m6(l,s.location.start.offset,s.location.end.offset),_=e.__v_emitter;_&&l&&_.emit("compile-error",{message:l,error:s.message,start:s.location&&s.location.start.offset,end:s.location&&s.location.end.offset,groupId:`translate:${a}`}),console.error(u?`${d} -${u}`:d)}},onCacheKey:s=>l6(t,a,s)}}function z5(e){if(mt(e))return e;if(e.loc&&e.loc.source)return e.loc.source}function A5(e,t,a,n){const{modifiers:i,pluralRules:o,messageResolver:s,fallbackLocale:l,fallbackWarn:d,missingWarn:u,fallbackContext:_}=e,p={locale:t,modifiers:i,pluralRules:o,messages:h=>{let g=s(a,h);if(g==null&&_){const[,,y]=GE(_,h,t,l,d,u);g=s(y,h)}if(mt(g)||Br(g)){let y=!1;const b=QE(e,h,t,g,h,()=>{y=!0});return y?ox:b}else return Ei(g)?g:ox}};return e.processor&&(p.processor=e.processor),n.list&&(p.list=n.list),n.named&&(p.named=n.named),ni(n.plural)&&(p.pluralIndex=n.plural),p}const sx=typeof Intl<"u",XE={dateTimeFormat:sx&&typeof Intl.DateTimeFormat<"u",numberFormat:sx&&typeof Intl.NumberFormat<"u"};function C5(e,...t){const{datetimeFormats:a,unresolving:n,fallbackLocale:i,onWarn:o,localeFallbacker:s}=e,{__datetimeFormatters:l}=e;if(!XE.dateTimeFormat)return o(Ws(bn.CANNOT_FORMAT_DATE)),Py;const[d,u,_,f]=tz(...t),p=kn(_.missingWarn)?_.missingWarn:e.missingWarn,h=kn(_.fallbackWarn)?_.fallbackWarn:e.fallbackWarn,g=!!_.part,y=qm(e,_),k=s(e,i,y);if(!mt(d)||d==="")return new Intl.DateTimeFormat(y,f).format(u);let b={},P,w=null,x=y,E=null;const C="datetime format";for(let U=0;U{ez.includes(d)?s[d]=a[d]:o[d]=a[d]}),mt(n)?o.locale=n:ka(n)&&(s=n),ka(i)&&(s=i),[o.key||"",l,o,s]}function T5(e,t,a){const n=e;for(const i in a){const o=`${t}__${i}`;n.__datetimeFormatters.has(o)&&n.__datetimeFormatters.delete(o)}}function j5(e,...t){const{numberFormats:a,unresolving:n,fallbackLocale:i,onWarn:o,localeFallbacker:s}=e,{__numberFormatters:l}=e;if(!XE.numberFormat)return o(Ws(bn.CANNOT_FORMAT_NUMBER)),Py;const[d,u,_,f]=nz(...t),p=kn(_.missingWarn)?_.missingWarn:e.missingWarn,h=kn(_.fallbackWarn)?_.fallbackWarn:e.fallbackWarn,g=!!_.part,y=qm(e,_),k=s(e,i,y);if(!mt(d)||d==="")return new Intl.NumberFormat(y,f).format(u);let b={},P,w=null,x=y,E=null;const C="number format";for(let U=0;U{az.includes(d)?s[d]=a[d]:o[d]=a[d]}),mt(n)?o.locale=n:ka(n)&&(s=n),ka(i)&&(s=i),[o.key||"",l,o,s]}function N5(e,t,a){const n=e;for(const i in a){const o=`${t}__${i}`;n.__numberFormatters.has(o)&&n.__numberFormatters.delete(o)}}const I5=Object.freeze(Object.defineProperty({__proto__:null,CompileErrorCodes:dt,CoreErrorCodes:Ga,CoreWarnCodes:bn,DATETIME_FORMAT_OPTIONS_KEYS:ez,DEFAULT_LOCALE:em,DEFAULT_MESSAGE_DATA_TYPE:NE,MISSING_RESOLVE_VALUE:Py,NOT_REOSLVED:Wm,NUMBER_FORMAT_OPTIONS_KEYS:az,VERSION:$E,clearCompileCache:k5,clearDateTimeFormat:T5,clearNumberFormat:N5,compile:D5,compileToFunction:w5,createCompileError:_c,createCoreContext:g5,createCoreError:Ki,createMessageContext:IE,datetime:C5,fallbackWithLocaleChain:r5,fallbackWithSimple:ME,getAdditionalMeta:qE,getDevToolsHook:n5,getFallbackContext:h5,getLocale:qm,getWarnMessage:Ws,handleMissing:Km,initI18nDevTools:FE,isMessageAST:Br,isMessageFunction:Ei,isTranslateFallbackWarn:Hm,isTranslateMissingWarn:HE,number:j5,parse:TE,parseDateTimeArgs:tz,parseNumberArgs:nz,parseTranslateArgs:JE,registerLocaleFallbacker:m5,registerMessageCompiler:u5,registerMessageResolver:_5,resolveLocale:Tg,resolveValue:Z6,resolveWithKeyValue:jE,setAdditionalMeta:p5,setDevToolsHook:a5,setFallbackContext:f5,translate:x5,translateDevTools:RE,updateFallbackLocale:v5},Symbol.toStringTag,{value:"Module"})),F5=wv(I5),R5=wv(YP);/*! + */const $s=typeof window<"u";let oi,Ls;{const e=$s&&window.performance;e&&e.mark&&e.measure&&e.clearMarks&&e.clearMeasures&&(oi=t=>{e.mark(t)},Ls=(t,a,n)=>{e.measure(t,a,n),e.clearMarks(a),e.clearMarks(n)})}const oL=/\{([0-9a-zA-Z]+)\}/g;function wy(e,...t){return t.length===1&&Va(t[0])&&(t=t[0]),(!t||!t.hasOwnProperty)&&(t={}),e.replace(oL,(a,n)=>t.hasOwnProperty(n)?t[n]:"")}const rL=(e,t,a)=>sL({l:e,k:t,s:a}),sL=e=>JSON.stringify(e).replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029").replace(/\u0027/g,"\\u0027"),ni=e=>typeof e=="number"&&isFinite(e),lL=e=>Cz(e)==="[object Date]",W1=e=>Cz(e)==="[object RegExp]",xy=e=>ka(e)&&Object.keys(e).length===0,Gr=Object.assign;function K1(e){return e.replace(//g,">").replace(/"/g,""").replace(/'/g,"'")}const vo=Array.isArray,Ba=e=>typeof e=="function",mt=e=>typeof e=="string",kn=e=>typeof e=="boolean",Va=e=>e!==null&&typeof e=="object",cL=e=>Va(e)&&Ba(e.then)&&Ba(e.catch),Az=Object.prototype.toString,Cz=e=>Az.call(e),ka=e=>{if(!Va(e))return!1;const t=Object.getPrototypeOf(e);return t===null||t.constructor===Object},dL=e=>e==null?"":vo(e)||ka(e)&&e.toString===Az?JSON.stringify(e,null,2):String(e);function Dy(e,t=""){return e.reduce((a,n,i)=>i===0?a+n:a+t+n,"")}const Y1=2;function uL(e,t=0,a=e.length){const n=e.split(/\r?\n/);let i=0;const o=[];for(let r=0;r=t){for(let l=r-Y1;l<=r+Y1||a>i;l++){if(l<0||l>=n.length)continue;const d=l+1;o.push(`${d}${" ".repeat(3-String(d).length)}| ${n[l]}`);const u=n[l].length;if(l===r){const _=t-(i-u)+1,f=Math.max(1,a>i?u-_:a-t);o.push(" | "+" ".repeat(_)+"^".repeat(f))}else if(l>r){if(a>i){const _=Math.max(Math.min(a-i,u),1);o.push(" | "+"^".repeat(_))}i+=u+1}}break}return o.join(` +`)}function _L(e){let t=e;return()=>++t}function Ud(e,t){typeof console<"u"&&(console.warn("[intlify] "+e),t&&console.warn(t.stack))}const Z1={};function mL(e){Z1[e]||(Z1[e]=!0,Ud(e))}function pL(e,t,a){return{line:e,column:t,offset:a}}function Ag(e,t,a){const n={start:e,end:t};return a!=null&&(n.source=a),n}const dt={EXPECTED_TOKEN:1,INVALID_TOKEN_IN_PLACEHOLDER:2,UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER:3,UNKNOWN_ESCAPE_SEQUENCE:4,INVALID_UNICODE_ESCAPE_SEQUENCE:5,UNBALANCED_CLOSING_BRACE:6,UNTERMINATED_CLOSING_BRACE:7,EMPTY_PLACEHOLDER:8,NOT_ALLOW_NEST_PLACEHOLDER:9,INVALID_LINKED_FORMAT:10,MUST_HAVE_MESSAGES_IN_PLURAL:11,UNEXPECTED_EMPTY_LINKED_MODIFIER:12,UNEXPECTED_EMPTY_LINKED_KEY:13,UNEXPECTED_LEXICAL_ANALYSIS:14,UNHANDLED_CODEGEN_NODE_TYPE:15,UNHANDLED_MINIFIER_NODE_TYPE:16,__EXTEND_POINT__:17},fL={[dt.EXPECTED_TOKEN]:"Expected token: '{0}'",[dt.INVALID_TOKEN_IN_PLACEHOLDER]:"Invalid token in placeholder: '{0}'",[dt.UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER]:"Unterminated single quote in placeholder",[dt.UNKNOWN_ESCAPE_SEQUENCE]:"Unknown escape sequence: \\{0}",[dt.INVALID_UNICODE_ESCAPE_SEQUENCE]:"Invalid unicode escape sequence: {0}",[dt.UNBALANCED_CLOSING_BRACE]:"Unbalanced closing brace",[dt.UNTERMINATED_CLOSING_BRACE]:"Unterminated closing brace",[dt.EMPTY_PLACEHOLDER]:"Empty placeholder",[dt.NOT_ALLOW_NEST_PLACEHOLDER]:"Not allowed nest placeholder",[dt.INVALID_LINKED_FORMAT]:"Invalid linked format",[dt.MUST_HAVE_MESSAGES_IN_PLURAL]:"Plural must have messages",[dt.UNEXPECTED_EMPTY_LINKED_MODIFIER]:"Unexpected empty linked modifier",[dt.UNEXPECTED_EMPTY_LINKED_KEY]:"Unexpected empty linked key",[dt.UNEXPECTED_LEXICAL_ANALYSIS]:"Unexpected lexical analysis in token: '{0}'",[dt.UNHANDLED_CODEGEN_NODE_TYPE]:"unhandled codegen node type: '{0}'",[dt.UNHANDLED_MINIFIER_NODE_TYPE]:"unhandled mimifier node type: '{0}'"};function _c(e,t,a={}){const{domain:n,messages:i,args:o}=a,r=wy((i||fL)[e]||"",...o||[]),l=new SyntaxError(String(r));return l.code=e,t&&(l.location=t),l.domain=n,l}function hL(e){throw e}const gL=/<\/?[\w\s="/.':;#-\/]+>/,vL=e=>gL.test(e),No=" ",yL="\r",vn=` +`,bL="\u2028",kL="\u2029";function wL(e){const t=e;let a=0,n=1,i=1,o=0;const r=N=>t[N]===yL&&t[N+1]===vn,l=N=>t[N]===vn,d=N=>t[N]===kL,u=N=>t[N]===bL,_=N=>r(N)||l(N)||d(N)||u(N),f=()=>a,p=()=>n,h=()=>i,g=()=>o,y=N=>r(N)||d(N)||u(N)?vn:t[N],k=()=>y(a),b=()=>y(a+o);function z(){return o=0,_(a)&&(n++,i=0),r(a)&&a++,a++,i++,t[a]}function w(){return r(a+o)&&o++,o++,t[a+o]}function D(){a=0,n=1,i=1,o=0}function E(N=0){o=N}function T(){const N=a+o;for(;N!==a;)z();o=0}return{index:f,line:p,column:h,peekOffset:g,charAt:y,currentChar:k,currentPeek:b,next:z,peek:w,reset:D,resetPeek:E,skipToPeek:T}}const wr=void 0,xL=".",G1="'",DL="tokenizer";function SL(e,t={}){const a=t.location!==!1,n=wL(e),i=()=>n.index(),o=()=>pL(n.line(),n.column(),n.index()),r=o(),l=i(),d={currentType:14,offset:l,startLoc:r,endLoc:r,lastType:14,lastOffset:l,lastStartLoc:r,lastEndLoc:r,braceNest:0,inLinked:!1,text:""},u=()=>d,{onError:_}=t;function f(S,x,O,...W){const Y=u();if(x.column+=O,x.offset+=O,_){const _e=a?Ag(Y.startLoc,x):null,Se=_c(S,_e,{domain:DL,args:W});_(Se)}}function p(S,x,O){S.endLoc=o(),S.currentType=x;const W={type:x};return a&&(W.loc=Ag(S.startLoc,S.endLoc)),O!=null&&(W.value=O),W}const h=S=>p(S,14);function g(S,x){return S.currentChar()===x?(S.next(),x):(f(dt.EXPECTED_TOKEN,o(),0,x),"")}function y(S){let x="";for(;S.currentPeek()===No||S.currentPeek()===vn;)x+=S.currentPeek(),S.peek();return x}function k(S){const x=y(S);return S.skipToPeek(),x}function b(S){if(S===wr)return!1;const x=S.charCodeAt(0);return x>=97&&x<=122||x>=65&&x<=90||x===95}function z(S){if(S===wr)return!1;const x=S.charCodeAt(0);return x>=48&&x<=57}function w(S,x){const{currentType:O}=x;if(O!==2)return!1;y(S);const W=b(S.currentPeek());return S.resetPeek(),W}function D(S,x){const{currentType:O}=x;if(O!==2)return!1;y(S);const W=S.currentPeek()==="-"?S.peek():S.currentPeek(),Y=z(W);return S.resetPeek(),Y}function E(S,x){const{currentType:O}=x;if(O!==2)return!1;y(S);const W=S.currentPeek()===G1;return S.resetPeek(),W}function T(S,x){const{currentType:O}=x;if(O!==8)return!1;y(S);const W=S.currentPeek()===".";return S.resetPeek(),W}function N(S,x){const{currentType:O}=x;if(O!==9)return!1;y(S);const W=b(S.currentPeek());return S.resetPeek(),W}function j(S,x){const{currentType:O}=x;if(!(O===8||O===12))return!1;y(S);const W=S.currentPeek()===":";return S.resetPeek(),W}function q(S,x){const{currentType:O}=x;if(O!==10)return!1;const W=()=>{const _e=S.currentPeek();return _e==="{"?b(S.peek()):_e==="@"||_e==="%"||_e==="|"||_e===":"||_e==="."||_e===No||!_e?!1:_e===vn?(S.peek(),W()):b(_e)},Y=W();return S.resetPeek(),Y}function H(S){y(S);const x=S.currentPeek()==="|";return S.resetPeek(),x}function te(S){const x=y(S),O=S.currentPeek()==="%"&&S.peek()==="{";return S.resetPeek(),{isModulo:O,hasSpace:x.length>0}}function X(S,x=!0){const O=(Y=!1,_e="",Se=!1)=>{const ge=S.currentPeek();return ge==="{"?_e==="%"?!1:Y:ge==="@"||!ge?_e==="%"?!0:Y:ge==="%"?(S.peek(),O(Y,"%",!0)):ge==="|"?_e==="%"||Se?!0:!(_e===No||_e===vn):ge===No?(S.peek(),O(!0,No,Se)):ge===vn?(S.peek(),O(!0,vn,Se)):!0},W=O();return x&&S.resetPeek(),W}function oe(S,x){const O=S.currentChar();return O===wr?wr:x(O)?(S.next(),O):null}function Te(S){return oe(S,O=>{const W=O.charCodeAt(0);return W>=97&&W<=122||W>=65&&W<=90||W>=48&&W<=57||W===95||W===36})}function Ae(S){return oe(S,O=>{const W=O.charCodeAt(0);return W>=48&&W<=57})}function de(S){return oe(S,O=>{const W=O.charCodeAt(0);return W>=48&&W<=57||W>=65&&W<=70||W>=97&&W<=102})}function Ce(S){let x="",O="";for(;x=Ae(S);)O+=x;return O}function Pe(S){k(S);const x=S.currentChar();return x!=="%"&&f(dt.EXPECTED_TOKEN,o(),0,x),S.next(),"%"}function Ke(S){let x="";for(;;){const O=S.currentChar();if(O==="{"||O==="}"||O==="@"||O==="|"||!O)break;if(O==="%")if(X(S))x+=O,S.next();else break;else if(O===No||O===vn)if(X(S))x+=O,S.next();else{if(H(S))break;x+=O,S.next()}else x+=O,S.next()}return x}function re(S){k(S);let x="",O="";for(;x=Te(S);)O+=x;return S.currentChar()===wr&&f(dt.UNTERMINATED_CLOSING_BRACE,o(),0),O}function Qe(S){k(S);let x="";return S.currentChar()==="-"?(S.next(),x+=`-${Ce(S)}`):x+=Ce(S),S.currentChar()===wr&&f(dt.UNTERMINATED_CLOSING_BRACE,o(),0),x}function at(S){k(S),g(S,"'");let x="",O="";const W=_e=>_e!==G1&&_e!==vn;for(;x=oe(S,W);)x==="\\"?O+=la(S):O+=x;const Y=S.currentChar();return Y===vn||Y===wr?(f(dt.UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER,o(),0),Y===vn&&(S.next(),g(S,"'")),O):(g(S,"'"),O)}function la(S){const x=S.currentChar();switch(x){case"\\":case"'":return S.next(),`\\${x}`;case"u":return Bt(S,x,4);case"U":return Bt(S,x,6);default:return f(dt.UNKNOWN_ESCAPE_SEQUENCE,o(),0,x),""}}function Bt(S,x,O){g(S,x);let W="";for(let Y=0;YY!=="{"&&Y!=="}"&&Y!==No&&Y!==vn;for(;x=oe(S,W);)O+=x;return O}function Tt(S){let x="",O="";for(;x=Te(S);)O+=x;return O}function ce(S){const x=(O=!1,W)=>{const Y=S.currentChar();return Y==="{"||Y==="%"||Y==="@"||Y==="|"||Y==="("||Y===")"||!Y||Y===No?W:Y===vn||Y===xL?(W+=Y,S.next(),x(O,W)):(W+=Y,S.next(),x(!0,W))};return x(!1,"")}function xe(S){k(S);const x=g(S,"|");return k(S),x}function De(S,x){let O=null;switch(S.currentChar()){case"{":return x.braceNest>=1&&f(dt.NOT_ALLOW_NEST_PLACEHOLDER,o(),0),S.next(),O=p(x,2,"{"),k(S),x.braceNest++,O;case"}":return x.braceNest>0&&x.currentType===2&&f(dt.EMPTY_PLACEHOLDER,o(),0),S.next(),O=p(x,3,"}"),x.braceNest--,x.braceNest>0&&k(S),x.inLinked&&x.braceNest===0&&(x.inLinked=!1),O;case"@":return x.braceNest>0&&f(dt.UNTERMINATED_CLOSING_BRACE,o(),0),O=Oe(S,x)||h(x),x.braceNest=0,O;default:let Y=!0,_e=!0,Se=!0;if(H(S))return x.braceNest>0&&f(dt.UNTERMINATED_CLOSING_BRACE,o(),0),O=p(x,1,xe(S)),x.braceNest=0,x.inLinked=!1,O;if(x.braceNest>0&&(x.currentType===5||x.currentType===6||x.currentType===7))return f(dt.UNTERMINATED_CLOSING_BRACE,o(),0),x.braceNest=0,rt(S,x);if(Y=w(S,x))return O=p(x,5,re(S)),k(S),O;if(_e=D(S,x))return O=p(x,6,Qe(S)),k(S),O;if(Se=E(S,x))return O=p(x,7,at(S)),k(S),O;if(!Y&&!_e&&!Se)return O=p(x,13,Ht(S)),f(dt.INVALID_TOKEN_IN_PLACEHOLDER,o(),0,O.value),k(S),O;break}return O}function Oe(S,x){const{currentType:O}=x;let W=null;const Y=S.currentChar();switch((O===8||O===9||O===12||O===10)&&(Y===vn||Y===No)&&f(dt.INVALID_LINKED_FORMAT,o(),0),Y){case"@":return S.next(),W=p(x,8,"@"),x.inLinked=!0,W;case".":return k(S),S.next(),p(x,9,".");case":":return k(S),S.next(),p(x,10,":");default:return H(S)?(W=p(x,1,xe(S)),x.braceNest=0,x.inLinked=!1,W):T(S,x)||j(S,x)?(k(S),Oe(S,x)):N(S,x)?(k(S),p(x,12,Tt(S))):q(S,x)?(k(S),Y==="{"?De(S,x)||W:p(x,11,ce(S))):(O===8&&f(dt.INVALID_LINKED_FORMAT,o(),0),x.braceNest=0,x.inLinked=!1,rt(S,x))}}function rt(S,x){let O={type:14};if(x.braceNest>0)return De(S,x)||h(x);if(x.inLinked)return Oe(S,x)||h(x);switch(S.currentChar()){case"{":return De(S,x)||h(x);case"}":return f(dt.UNBALANCED_CLOSING_BRACE,o(),0),S.next(),p(x,3,"}");case"@":return Oe(S,x)||h(x);default:if(H(S))return O=p(x,1,xe(S)),x.braceNest=0,x.inLinked=!1,O;const{isModulo:Y,hasSpace:_e}=te(S);if(Y)return _e?p(x,0,Ke(S)):p(x,4,Pe(S));if(X(S))return p(x,0,Ke(S));break}return O}function vt(){const{currentType:S,offset:x,startLoc:O,endLoc:W}=d;return d.lastType=S,d.lastOffset=x,d.lastStartLoc=O,d.lastEndLoc=W,d.offset=i(),d.startLoc=o(),n.currentChar()===wr?p(d,14):rt(n,d)}return{nextToken:vt,currentOffset:i,currentPosition:o,context:u}}const zL="parser",PL=/(?:\\\\|\\'|\\u([0-9a-fA-F]{4})|\\U([0-9a-fA-F]{6}))/g;function EL(e,t,a){switch(e){case"\\\\":return"\\";case"\\'":return"'";default:{const n=parseInt(t||a,16);return n<=55295||n>=57344?String.fromCodePoint(n):"�"}}}function AL(e={}){const t=e.location!==!1,{onError:a}=e;function n(b,z,w,D,...E){const T=b.currentPosition();if(T.offset+=D,T.column+=D,a){const N=t?Ag(w,T):null,j=_c(z,N,{domain:zL,args:E});a(j)}}function i(b,z,w){const D={type:b};return t&&(D.start=z,D.end=z,D.loc={start:w,end:w}),D}function o(b,z,w,D){D&&(b.type=D),t&&(b.end=z,b.loc&&(b.loc.end=w))}function r(b,z){const w=b.context(),D=i(3,w.offset,w.startLoc);return D.value=z,o(D,b.currentOffset(),b.currentPosition()),D}function l(b,z){const w=b.context(),{lastOffset:D,lastStartLoc:E}=w,T=i(5,D,E);return T.index=parseInt(z,10),b.nextToken(),o(T,b.currentOffset(),b.currentPosition()),T}function d(b,z){const w=b.context(),{lastOffset:D,lastStartLoc:E}=w,T=i(4,D,E);return T.key=z,b.nextToken(),o(T,b.currentOffset(),b.currentPosition()),T}function u(b,z){const w=b.context(),{lastOffset:D,lastStartLoc:E}=w,T=i(9,D,E);return T.value=z.replace(PL,EL),b.nextToken(),o(T,b.currentOffset(),b.currentPosition()),T}function _(b){const z=b.nextToken(),w=b.context(),{lastOffset:D,lastStartLoc:E}=w,T=i(8,D,E);return z.type!==12?(n(b,dt.UNEXPECTED_EMPTY_LINKED_MODIFIER,w.lastStartLoc,0),T.value="",o(T,D,E),{nextConsumeToken:z,node:T}):(z.value==null&&n(b,dt.UNEXPECTED_LEXICAL_ANALYSIS,w.lastStartLoc,0,uo(z)),T.value=z.value||"",o(T,b.currentOffset(),b.currentPosition()),{node:T})}function f(b,z){const w=b.context(),D=i(7,w.offset,w.startLoc);return D.value=z,o(D,b.currentOffset(),b.currentPosition()),D}function p(b){const z=b.context(),w=i(6,z.offset,z.startLoc);let D=b.nextToken();if(D.type===9){const E=_(b);w.modifier=E.node,D=E.nextConsumeToken||b.nextToken()}switch(D.type!==10&&n(b,dt.UNEXPECTED_LEXICAL_ANALYSIS,z.lastStartLoc,0,uo(D)),D=b.nextToken(),D.type===2&&(D=b.nextToken()),D.type){case 11:D.value==null&&n(b,dt.UNEXPECTED_LEXICAL_ANALYSIS,z.lastStartLoc,0,uo(D)),w.key=f(b,D.value||"");break;case 5:D.value==null&&n(b,dt.UNEXPECTED_LEXICAL_ANALYSIS,z.lastStartLoc,0,uo(D)),w.key=d(b,D.value||"");break;case 6:D.value==null&&n(b,dt.UNEXPECTED_LEXICAL_ANALYSIS,z.lastStartLoc,0,uo(D)),w.key=l(b,D.value||"");break;case 7:D.value==null&&n(b,dt.UNEXPECTED_LEXICAL_ANALYSIS,z.lastStartLoc,0,uo(D)),w.key=u(b,D.value||"");break;default:n(b,dt.UNEXPECTED_EMPTY_LINKED_KEY,z.lastStartLoc,0);const E=b.context(),T=i(7,E.offset,E.startLoc);return T.value="",o(T,E.offset,E.startLoc),w.key=T,o(w,E.offset,E.startLoc),{nextConsumeToken:D,node:w}}return o(w,b.currentOffset(),b.currentPosition()),{node:w}}function h(b){const z=b.context(),w=z.currentType===1?b.currentOffset():z.offset,D=z.currentType===1?z.endLoc:z.startLoc,E=i(2,w,D);E.items=[];let T=null;do{const q=T||b.nextToken();switch(T=null,q.type){case 0:q.value==null&&n(b,dt.UNEXPECTED_LEXICAL_ANALYSIS,z.lastStartLoc,0,uo(q)),E.items.push(r(b,q.value||""));break;case 6:q.value==null&&n(b,dt.UNEXPECTED_LEXICAL_ANALYSIS,z.lastStartLoc,0,uo(q)),E.items.push(l(b,q.value||""));break;case 5:q.value==null&&n(b,dt.UNEXPECTED_LEXICAL_ANALYSIS,z.lastStartLoc,0,uo(q)),E.items.push(d(b,q.value||""));break;case 7:q.value==null&&n(b,dt.UNEXPECTED_LEXICAL_ANALYSIS,z.lastStartLoc,0,uo(q)),E.items.push(u(b,q.value||""));break;case 8:const H=p(b);E.items.push(H.node),T=H.nextConsumeToken||null;break}}while(z.currentType!==14&&z.currentType!==1);const N=z.currentType===1?z.lastOffset:b.currentOffset(),j=z.currentType===1?z.lastEndLoc:b.currentPosition();return o(E,N,j),E}function g(b,z,w,D){const E=b.context();let T=D.items.length===0;const N=i(1,z,w);N.cases=[],N.cases.push(D);do{const j=h(b);T||(T=j.items.length===0),N.cases.push(j)}while(E.currentType!==14);return T&&n(b,dt.MUST_HAVE_MESSAGES_IN_PLURAL,w,0),o(N,b.currentOffset(),b.currentPosition()),N}function y(b){const z=b.context(),{offset:w,startLoc:D}=z,E=h(b);return z.currentType===14?E:g(b,w,D,E)}function k(b){const z=SL(b,Gr({},e)),w=z.context(),D=i(0,w.offset,w.startLoc);return t&&D.loc&&(D.loc.source=b),D.body=y(z),e.onCacheKey&&(D.cacheKey=e.onCacheKey(b)),w.currentType!==14&&n(z,dt.UNEXPECTED_LEXICAL_ANALYSIS,w.lastStartLoc,0,b[w.offset]||""),o(D,z.currentOffset(),z.currentPosition()),D}return{parse:k}}function uo(e){if(e.type===14)return"EOF";const t=(e.value||"").replace(/\r?\n/gu,"\\n");return t.length>10?t.slice(0,9)+"…":t}function CL(e,t={}){const a={ast:e,helpers:new Set};return{context:()=>a,helper:o=>(a.helpers.add(o),o)}}function Q1(e,t){for(let a=0;aJ1(a)),e}function J1(e){if(e.items.length===1){const t=e.items[0];(t.type===3||t.type===9)&&(e.static=t.value,delete t.value)}else{const t=[];for(let a=0;al;function u(k,b){l.code+=k}function _(k,b=!0){const z=b?i:"";u(o?z+" ".repeat(k):z)}function f(k=!0){const b=++l.indentLevel;k&&_(b)}function p(k=!0){const b=--l.indentLevel;k&&_(b)}function h(){_(l.indentLevel)}return{context:d,push:u,indent:f,deindent:p,newline:h,helper:k=>`_${k}`,needIndent:()=>l.needIndent}}function ML(e,t){const{helper:a}=e;e.push(`${a("linked")}(`),ec(e,t.key),t.modifier?(e.push(", "),ec(e,t.modifier),e.push(", _type")):e.push(", undefined, _type"),e.push(")")}function RL(e,t){const{helper:a,needIndent:n}=e;e.push(`${a("normalize")}([`),e.indent(n());const i=t.items.length;for(let o=0;o1){e.push(`${a("plural")}([`),e.indent(n());const i=t.cases.length;for(let o=0;o{const a=mt(t.mode)?t.mode:"normal",n=mt(t.filename)?t.filename:"message.intl",i=!!t.sourceMap,o=t.breakLineCode!=null?t.breakLineCode:a==="arrow"?";":` +`,r=t.needIndent?t.needIndent:a!=="arrow",l=e.helpers||[],d=FL(e,{mode:a,filename:n,sourceMap:i,breakLineCode:o,needIndent:r});d.push(a==="normal"?"function __msg__ (ctx) {":"(ctx) => {"),d.indent(r),l.length>0&&(d.push(`const { ${Dy(l.map(f=>`${f}: _${f}`),", ")} } = ctx`),d.newline()),d.push("return "),ec(d,e),d.deindent(r),d.push("}"),delete e.helpers;const{code:u,map:_}=d.context();return{ast:e,code:u,map:_?_.toJSON():void 0}};function BL(e,t={}){const a=Gr({},t),n=!!a.jit,i=!!a.minify,o=a.optimize==null?!0:a.optimize,l=AL(a).parse(e);return n?(o&&TL(l),i&&zl(l),{ast:l,code:""}):(jL(l,a),LL(l,a))}const Qr=[];Qr[0]={w:[0],i:[3,0],"[":[4],o:[7]};Qr[1]={w:[1],".":[2],"[":[4],o:[7]};Qr[2]={w:[2],i:[3,0],0:[3,0]};Qr[3]={i:[3,0],0:[3,0],w:[1,1],".":[2,1],"[":[4,1],o:[7,1]};Qr[4]={"'":[5,0],'"':[6,0],"[":[4,2],"]":[1,3],o:8,l:[4,0]};Qr[5]={"'":[4,0],o:8,l:[5,0]};Qr[6]={'"':[4,0],o:8,l:[6,0]};const UL=/^\s?(?:true|false|-?[\d.]+|'[^']*'|"[^"]*")\s?$/;function VL(e){return UL.test(e)}function qL(e){const t=e.charCodeAt(0),a=e.charCodeAt(e.length-1);return t===a&&(t===34||t===39)?e.slice(1,-1):e}function HL(e){if(e==null)return"o";switch(e.charCodeAt(0)){case 91:case 93:case 46:case 34:case 39:return e;case 95:case 36:case 45:return"i";case 9:case 10:case 13:case 160:case 65279:case 8232:case 8233:return"w"}return"i"}function WL(e){const t=e.trim();return e.charAt(0)==="0"&&isNaN(parseInt(e))?!1:VL(t)?qL(t):"*"+t}function jz(e){const t=[];let a=-1,n=0,i=0,o,r,l,d,u,_,f;const p=[];p[0]=()=>{r===void 0?r=l:r+=l},p[1]=()=>{r!==void 0&&(t.push(r),r=void 0)},p[2]=()=>{p[0](),i++},p[3]=()=>{if(i>0)i--,n=4,p[0]();else{if(i=0,r===void 0||(r=WL(r),r===!1))return!1;p[1]()}};function h(){const g=e[a+1];if(n===5&&g==="'"||n===6&&g==='"')return a++,l="\\"+g,p[0](),!0}for(;n!==null;)if(a++,o=e[a],!(o==="\\"&&h())){if(d=HL(o),f=Qr[n],u=f[d]||f.l||8,u===8||(n=u[0],u[1]!==void 0&&(_=p[u[1]],_&&(l=o,_()===!1))))return;if(n===7)return t}}const X1=new Map;function Tz(e,t){return Va(e)?e[t]:null}function KL(e,t){if(!Va(e))return null;let a=X1.get(t);if(a||(a=jz(t),a&&X1.set(t,a)),!a)return null;const n=a.length;let i=e,o=0;for(;oe,ZL=e=>"",Iz="text",GL=e=>e.length===0?"":Dy(e),QL=dL;function e2(e,t){return e=Math.abs(e),t===2?e?e>1?1:0:1:e?Math.min(e,2):0}function JL(e){const t=ni(e.pluralIndex)?e.pluralIndex:-1;return e.named&&(ni(e.named.count)||ni(e.named.n))?ni(e.named.count)?e.named.count:ni(e.named.n)?e.named.n:t:t}function XL(e,t){t.count||(t.count=e),t.n||(t.n=e)}function Nz(e={}){const t=e.locale,a=JL(e),n=Va(e.pluralRules)&&mt(t)&&Ba(e.pluralRules[t])?e.pluralRules[t]:e2,i=Va(e.pluralRules)&&mt(t)&&Ba(e.pluralRules[t])?e2:void 0,o=b=>b[n(a,b.length,i)],r=e.list||[],l=b=>r[b],d=e.named||{};ni(e.pluralIndex)&&XL(a,d);const u=b=>d[b];function _(b){const z=Ba(e.messages)?e.messages(b):Va(e.messages)?e.messages[b]:!1;return z||(e.parent?e.parent.message(b):ZL)}const f=b=>e.modifiers?e.modifiers[b]:YL,p=ka(e.processor)&&Ba(e.processor.normalize)?e.processor.normalize:GL,h=ka(e.processor)&&Ba(e.processor.interpolate)?e.processor.interpolate:QL,g=ka(e.processor)&&mt(e.processor.type)?e.processor.type:Iz,k={list:l,named:u,plural:o,linked:(b,...z)=>{const[w,D]=z;let E="text",T="";z.length===1?Va(w)?(T=w.modifier||T,E=w.type||E):mt(w)&&(T=w||T):z.length===2&&(mt(w)&&(T=w||T),mt(D)&&(E=D||E));const N=_(b)(k),j=E==="vnode"&&vo(N)&&T?N[0]:N;return T?f(T)(j,E):j},message:_,type:g,interpolate:h,normalize:p,values:Gr({},r,d)};return k}let tc=null;function e7(e){tc=e}function t7(){return tc}function Fz(e,t,a){tc&&tc.emit("i18n:init",{timestamp:Date.now(),i18n:e,version:t,meta:a})}const Mz=a7("function:translate");function a7(e){return t=>tc&&tc.emit(e,t)}const bn={NOT_FOUND_KEY:1,FALLBACK_TO_TRANSLATE:2,CANNOT_FORMAT_NUMBER:3,FALLBACK_TO_NUMBER_FORMAT:4,CANNOT_FORMAT_DATE:5,FALLBACK_TO_DATE_FORMAT:6,EXPERIMENTAL_CUSTOM_MESSAGE_COMPILER:7,__EXTEND_POINT__:8},n7={[bn.NOT_FOUND_KEY]:"Not found '{key}' key in '{locale}' locale messages.",[bn.FALLBACK_TO_TRANSLATE]:"Fall back to translate '{key}' key with '{target}' locale.",[bn.CANNOT_FORMAT_NUMBER]:"Cannot format a number value due to not supported Intl.NumberFormat.",[bn.FALLBACK_TO_NUMBER_FORMAT]:"Fall back to number format '{key}' key with '{target}' locale.",[bn.CANNOT_FORMAT_DATE]:"Cannot format a date value due to not supported Intl.DateTimeFormat.",[bn.FALLBACK_TO_DATE_FORMAT]:"Fall back to datetime format '{key}' key with '{target}' locale.",[bn.EXPERIMENTAL_CUSTOM_MESSAGE_COMPILER]:"This project is using Custom Message Compiler, which is an experimental feature. It may receive breaking changes or be removed in the future."};function Hr(e,...t){return wy(n7[e],...t)}const Rz=dt.__EXTEND_POINT__,ps=_L(Rz),Ga={INVALID_ARGUMENT:Rz,INVALID_DATE_ARGUMENT:ps(),INVALID_ISO_DATE_ARGUMENT:ps(),NOT_SUPPORT_NON_STRING_MESSAGE:ps(),NOT_SUPPORT_LOCALE_PROMISE_VALUE:ps(),NOT_SUPPORT_LOCALE_ASYNC_FUNCTION:ps(),NOT_SUPPORT_LOCALE_TYPE:ps(),__EXTEND_POINT__:ps()};function Ki(e){return _c(e,null,{messages:i7})}const i7={[Ga.INVALID_ARGUMENT]:"Invalid arguments",[Ga.INVALID_DATE_ARGUMENT]:"The date provided is an invalid Date object.Make sure your Date represents a valid date.",[Ga.INVALID_ISO_DATE_ARGUMENT]:"The argument provided is not a valid ISO date string",[Ga.NOT_SUPPORT_NON_STRING_MESSAGE]:"Not support non-string message",[Ga.NOT_SUPPORT_LOCALE_PROMISE_VALUE]:"cannot support promise value",[Ga.NOT_SUPPORT_LOCALE_ASYNC_FUNCTION]:"cannot support async function",[Ga.NOT_SUPPORT_LOCALE_TYPE]:"cannot support locale type"};function Vm(e,t){return t.locale!=null?Cg(t.locale):Cg(e.locale)}let zh;function Cg(e){if(mt(e))return e;if(Ba(e)){if(e.resolvedOnce&&zh!=null)return zh;if(e.constructor.name==="Function"){const t=e();if(cL(t))throw Ki(Ga.NOT_SUPPORT_LOCALE_PROMISE_VALUE);return zh=t}else throw Ki(Ga.NOT_SUPPORT_LOCALE_ASYNC_FUNCTION)}else throw Ki(Ga.NOT_SUPPORT_LOCALE_TYPE)}function Oz(e,t,a){return[...new Set([a,...vo(t)?t:Va(t)?Object.keys(t):mt(t)?[t]:[a]])]}function o7(e,t,a){const n=mt(a)?a:em,i=e;i.__localeChainCache||(i.__localeChainCache=new Map);let o=i.__localeChainCache.get(n);if(!o){o=[];let r=[a];for(;vo(r);)r=t2(o,r,t);const l=vo(t)||!ka(t)?t:t.default?t.default:null;r=mt(l)?[l]:l,vo(r)&&t2(o,r,!1),i.__localeChainCache.set(n,o)}return o}function t2(e,t,a){let n=!0;for(let i=0;i`${e.charAt(0).toLocaleUpperCase()}${e.substr(1)}`;function l7(){return{upper:(e,t)=>t==="text"&&mt(e)?e.toUpperCase():t==="vnode"&&Va(e)&&"__v_isVNode"in e?e.children.toUpperCase():e,lower:(e,t)=>t==="text"&&mt(e)?e.toLowerCase():t==="vnode"&&Va(e)&&"__v_isVNode"in e?e.children.toLowerCase():e,capitalize:(e,t)=>t==="text"&&mt(e)?a2(e):t==="vnode"&&Va(e)&&"__v_isVNode"in e?a2(e.children):e}}let Lz;function c7(e){Lz=e}let Bz;function d7(e){Bz=e}let Uz;function u7(e){Uz=e}let Vz=null;const _7=e=>{Vz=e},qz=()=>Vz;let Hz=null;const m7=e=>{Hz=e},p7=()=>Hz;let n2=0;function f7(e={}){const t=Ba(e.onWarn)?e.onWarn:Ud,a=mt(e.version)?e.version:$z,n=mt(e.locale)||Ba(e.locale)?e.locale:em,i=Ba(n)?em:n,o=vo(e.fallbackLocale)||ka(e.fallbackLocale)||mt(e.fallbackLocale)||e.fallbackLocale===!1?e.fallbackLocale:i,r=ka(e.messages)?e.messages:{[i]:{}},l=ka(e.datetimeFormats)?e.datetimeFormats:{[i]:{}},d=ka(e.numberFormats)?e.numberFormats:{[i]:{}},u=Gr({},e.modifiers||{},l7()),_=e.pluralRules||{},f=Ba(e.missing)?e.missing:null,p=kn(e.missingWarn)||W1(e.missingWarn)?e.missingWarn:!0,h=kn(e.fallbackWarn)||W1(e.fallbackWarn)?e.fallbackWarn:!0,g=!!e.fallbackFormat,y=!!e.unresolving,k=Ba(e.postTranslation)?e.postTranslation:null,b=ka(e.processor)?e.processor:null,z=kn(e.warnHtmlMessage)?e.warnHtmlMessage:!0,w=!!e.escapeParameter,D=Ba(e.messageCompiler)?e.messageCompiler:Lz;Ba(e.messageCompiler)&&mL(Hr(bn.EXPERIMENTAL_CUSTOM_MESSAGE_COMPILER));const E=Ba(e.messageResolver)?e.messageResolver:Bz||Tz,T=Ba(e.localeFallbacker)?e.localeFallbacker:Uz||Oz,N=Va(e.fallbackContext)?e.fallbackContext:void 0,j=e,q=Va(j.__datetimeFormatters)?j.__datetimeFormatters:new Map,H=Va(j.__numberFormatters)?j.__numberFormatters:new Map,te=Va(j.__meta)?j.__meta:{};n2++;const X={version:a,cid:n2,locale:n,fallbackLocale:o,messages:r,modifiers:u,pluralRules:_,missing:f,missingWarn:p,fallbackWarn:h,fallbackFormat:g,unresolving:y,postTranslation:k,processor:b,warnHtmlMessage:z,escapeParameter:w,messageCompiler:D,messageResolver:E,localeFallbacker:T,fallbackContext:N,onWarn:t,__meta:te};return X.datetimeFormats=l,X.numberFormats=d,X.__datetimeFormatters=q,X.__numberFormatters=H,X.__v_emitter=j.__v_emitter!=null?j.__v_emitter:void 0,Fz(X,a,te),X}function Hm(e,t){return e instanceof RegExp?e.test(t):e}function Wz(e,t){return e instanceof RegExp?e.test(t):e}function Wm(e,t,a,n,i){const{missing:o,onWarn:r}=e;{const l=e.__v_emitter;l&&l.emit("missing",{locale:a,key:t,type:i,groupId:`${i}:${t}`})}if(o!==null){const l=o(e,a,t,i);return mt(l)?l:t}else return Wz(n,t)&&r(Hr(bn.NOT_FOUND_KEY,{key:t,locale:a})),t}function h7(e,t,a){const n=e;n.__localeChainCache=new Map,e.localeFallbacker(e,a,t)}function Ph(e){return a=>g7(a,e)}function g7(e,t){const a=t.b||t.body;if((a.t||a.type)===1){const n=a,i=n.c||n.cases;return e.plural(i.reduce((o,r)=>[...o,i2(e,r)],[]))}else return i2(e,a)}function i2(e,t){const a=t.s||t.static;if(a)return e.type==="text"?a:e.normalize([a]);{const n=(t.i||t.items).reduce((i,o)=>[...i,jg(e,o)],[]);return e.normalize(n)}}function jg(e,t){const a=t.t||t.type;switch(a){case 3:const n=t;return n.v||n.value;case 9:const i=t;return i.v||i.value;case 4:const o=t;return e.interpolate(e.named(o.k||o.key));case 5:const r=t;return e.interpolate(e.list(r.i!=null?r.i:r.index));case 6:const l=t,d=l.m||l.modifier;return e.linked(jg(e,l.k||l.key),d?jg(e,d):void 0,e.type);case 7:const u=t;return u.v||u.value;case 8:const _=t;return _.v||_.value;default:throw new Error(`unhandled node type on format message part: ${a}`)}}const v7="Detected HTML in '{source}' message. Recommend not using HTML messages to avoid XSS.";function Kz(e,t){t&&vL(e)&&Ud(wy(v7,{source:e}))}const Yz=e=>e;let xs=Object.create(null);function y7(){xs=Object.create(null)}const Bs=e=>Va(e)&&(e.t===0||e.type===0)&&("b"in e||"body"in e);function Zz(e,t={}){let a=!1;const n=t.onError||hL;return t.onError=i=>{a=!0,n(i)},{...BL(e,t),detectError:a}}const b7=(e,t)=>{if(!mt(e))throw Ki(Ga.NOT_SUPPORT_NON_STRING_MESSAGE);{const a=kn(t.warnHtmlMessage)?t.warnHtmlMessage:!0;Kz(e,a);const i=(t.onCacheKey||Yz)(e),o=xs[i];if(o)return o;const{code:r,detectError:l}=Zz(e,t),d=new Function(`return ${r}`)();return l?d:xs[i]=d}};function k7(e,t){if(mt(e)){const a=kn(t.warnHtmlMessage)?t.warnHtmlMessage:!0;Kz(e,a);const i=(t.onCacheKey||Yz)(e),o=xs[i];if(o)return o;const{ast:r,detectError:l}=Zz(e,{...t,location:!0,jit:!0}),d=Ph(r);return l?d:xs[i]=d}else{if(!Bs(e))return Ud(`the message that is resolve with key '${t.key}' is not supported for jit compilation`),()=>e;const a=e.cacheKey;if(a){const n=xs[a];return n||(xs[a]=Ph(e))}else return Ph(e)}}const o2=()=>"",Pi=e=>Ba(e);function w7(e,...t){const{fallbackFormat:a,postTranslation:n,unresolving:i,messageCompiler:o,fallbackLocale:r,messages:l}=e,[d,u]=Jz(...t),_=kn(u.missingWarn)?u.missingWarn:e.missingWarn,f=kn(u.fallbackWarn)?u.fallbackWarn:e.fallbackWarn,p=kn(u.escapeParameter)?u.escapeParameter:e.escapeParameter,h=!!u.resolvedMessage,g=mt(u.default)||kn(u.default)?kn(u.default)?o?d:()=>d:u.default:a?o?d:()=>d:"",y=a||g!=="",k=Vm(e,u);p&&x7(u);let[b,z,w]=h?[d,k,l[k]||{}]:Gz(e,d,k,r,f,_),D=b,E=d;if(!h&&!(mt(D)||Bs(D)||Pi(D))&&y&&(D=g,E=D),!h&&(!(mt(D)||Bs(D)||Pi(D))||!mt(z)))return i?qm:d;if(mt(D)&&e.messageCompiler==null)return Ud(`The message format compilation is not supported in this build. Because message compiler isn't included. You need to pre-compilation all message format. So translate function return '${d}'.`),d;let T=!1;const N=()=>{T=!0},j=Pi(D)?D:Qz(e,d,z,D,E,N);if(T)return D;const q=P7(e,z,w,u),H=Nz(q),te=D7(e,j,H),X=n?n(te,d):te;{const oe={timestamp:Date.now(),key:mt(d)?d:Pi(D)?D.key:"",locale:z||(Pi(D)?D.locale:""),format:mt(D)?D:Pi(D)?D.source:"",message:X};oe.meta=Gr({},e.__meta,qz()||{}),Mz(oe)}return X}function x7(e){vo(e.list)?e.list=e.list.map(t=>mt(t)?K1(t):t):Va(e.named)&&Object.keys(e.named).forEach(t=>{mt(e.named[t])&&(e.named[t]=K1(e.named[t]))})}function Gz(e,t,a,n,i,o){const{messages:r,onWarn:l,messageResolver:d,localeFallbacker:u}=e,_=u(e,n,a);let f={},p,h=null,g=a,y=null;const k="translate";for(let b=0;b<_.length;b++){if(p=y=_[b],a!==p&&Hm(i,t)&&l(Hr(bn.FALLBACK_TO_TRANSLATE,{key:t,target:p})),a!==p){const T=e.__v_emitter;T&&T.emit("fallback",{type:k,key:t,from:g,to:y,groupId:`${k}:${t}`})}f=r[p]||{};let z=null,w,D;if($s&&(z=window.performance.now(),w="intlify-message-resolve-start",D="intlify-message-resolve-end",oi&&oi(w)),(h=d(f,t))===null&&(h=f[t]),$s){const T=window.performance.now(),N=e.__v_emitter;N&&z&&h&&N.emit("message-resolve",{type:"message-resolve",key:t,message:h,time:T-z,groupId:`${k}:${t}`}),w&&D&&oi&&Ls&&(oi(D),Ls("intlify message resolve",w,D))}if(mt(h)||Bs(h)||Pi(h))break;const E=Wm(e,t,p,o,k);E!==t&&(h=E),g=y}return[h,p,f]}function Qz(e,t,a,n,i,o){const{messageCompiler:r,warnHtmlMessage:l}=e;if(Pi(n)){const p=n;return p.locale=p.locale||a,p.key=p.key||t,p}if(r==null){const p=()=>n;return p.locale=a,p.key=t,p}let d=null,u,_;$s&&(d=window.performance.now(),u="intlify-message-compilation-start",_="intlify-message-compilation-end",oi&&oi(u));const f=r(n,S7(e,a,i,n,l,o));if($s){const p=window.performance.now(),h=e.__v_emitter;h&&d&&h.emit("message-compilation",{type:"message-compilation",message:n,time:p-d,groupId:`translate:${t}`}),u&&_&&oi&&Ls&&(oi(_),Ls("intlify message compilation",u,_))}return f.locale=a,f.key=t,f.source=n,f}function D7(e,t,a){let n=null,i,o;$s&&(n=window.performance.now(),i="intlify-message-evaluation-start",o="intlify-message-evaluation-end",oi&&oi(i));const r=t(a);if($s){const l=window.performance.now(),d=e.__v_emitter;d&&n&&d.emit("message-evaluation",{type:"message-evaluation",value:r,time:l-n,groupId:`translate:${t.key}`}),i&&o&&oi&&Ls&&(oi(o),Ls("intlify message evaluation",i,o))}return r}function Jz(...e){const[t,a,n]=e,i={};if(!mt(t)&&!ni(t)&&!Pi(t)&&!Bs(t))throw Ki(Ga.INVALID_ARGUMENT);const o=ni(t)?String(t):(Pi(t),t);return ni(a)?i.plural=a:mt(a)?i.default=a:ka(a)&&!xy(a)?i.named=a:vo(a)&&(i.list=a),ni(n)?i.plural=n:mt(n)?i.default=n:ka(n)&&Gr(i,n),[o,i]}function S7(e,t,a,n,i,o){return{locale:t,key:a,warnHtmlMessage:i,onError:r=>{o&&o(r);{const l=z7(n),d=`Message compilation error: ${r.message}`,u=r.location&&l&&uL(l,r.location.start.offset,r.location.end.offset),_=e.__v_emitter;_&&l&&_.emit("compile-error",{message:l,error:r.message,start:r.location&&r.location.start.offset,end:r.location&&r.location.end.offset,groupId:`translate:${a}`}),console.error(u?`${d} +${u}`:d)}},onCacheKey:r=>rL(t,a,r)}}function z7(e){if(mt(e))return e;if(e.loc&&e.loc.source)return e.loc.source}function P7(e,t,a,n){const{modifiers:i,pluralRules:o,messageResolver:r,fallbackLocale:l,fallbackWarn:d,missingWarn:u,fallbackContext:_}=e,p={locale:t,modifiers:i,pluralRules:o,messages:h=>{let g=r(a,h);if(g==null&&_){const[,,y]=Gz(_,h,t,l,d,u);g=r(y,h)}if(mt(g)||Bs(g)){let y=!1;const b=Qz(e,h,t,g,h,()=>{y=!0});return y?o2:b}else return Pi(g)?g:o2}};return e.processor&&(p.processor=e.processor),n.list&&(p.list=n.list),n.named&&(p.named=n.named),ni(n.plural)&&(p.pluralIndex=n.plural),p}const r2=typeof Intl<"u",Xz={dateTimeFormat:r2&&typeof Intl.DateTimeFormat<"u",numberFormat:r2&&typeof Intl.NumberFormat<"u"};function E7(e,...t){const{datetimeFormats:a,unresolving:n,fallbackLocale:i,onWarn:o,localeFallbacker:r}=e,{__datetimeFormatters:l}=e;if(!Xz.dateTimeFormat)return o(Hr(bn.CANNOT_FORMAT_DATE)),zy;const[d,u,_,f]=tP(...t),p=kn(_.missingWarn)?_.missingWarn:e.missingWarn,h=kn(_.fallbackWarn)?_.fallbackWarn:e.fallbackWarn,g=!!_.part,y=Vm(e,_),k=r(e,i,y);if(!mt(d)||d==="")return new Intl.DateTimeFormat(y,f).format(u);let b={},z,w=null,D=y,E=null;const T="datetime format";for(let q=0;q{eP.includes(d)?r[d]=a[d]:o[d]=a[d]}),mt(n)?o.locale=n:ka(n)&&(r=n),ka(i)&&(r=i),[o.key||"",l,o,r]}function A7(e,t,a){const n=e;for(const i in a){const o=`${t}__${i}`;n.__datetimeFormatters.has(o)&&n.__datetimeFormatters.delete(o)}}function C7(e,...t){const{numberFormats:a,unresolving:n,fallbackLocale:i,onWarn:o,localeFallbacker:r}=e,{__numberFormatters:l}=e;if(!Xz.numberFormat)return o(Hr(bn.CANNOT_FORMAT_NUMBER)),zy;const[d,u,_,f]=nP(...t),p=kn(_.missingWarn)?_.missingWarn:e.missingWarn,h=kn(_.fallbackWarn)?_.fallbackWarn:e.fallbackWarn,g=!!_.part,y=Vm(e,_),k=r(e,i,y);if(!mt(d)||d==="")return new Intl.NumberFormat(y,f).format(u);let b={},z,w=null,D=y,E=null;const T="number format";for(let q=0;q{aP.includes(d)?r[d]=a[d]:o[d]=a[d]}),mt(n)?o.locale=n:ka(n)&&(r=n),ka(i)&&(r=i),[o.key||"",l,o,r]}function j7(e,t,a){const n=e;for(const i in a){const o=`${t}__${i}`;n.__numberFormatters.has(o)&&n.__numberFormatters.delete(o)}}const T7=Object.freeze(Object.defineProperty({__proto__:null,CompileErrorCodes:dt,CoreErrorCodes:Ga,CoreWarnCodes:bn,DATETIME_FORMAT_OPTIONS_KEYS:eP,DEFAULT_LOCALE:em,DEFAULT_MESSAGE_DATA_TYPE:Iz,MISSING_RESOLVE_VALUE:zy,NOT_REOSLVED:qm,NUMBER_FORMAT_OPTIONS_KEYS:aP,VERSION:$z,clearCompileCache:y7,clearDateTimeFormat:A7,clearNumberFormat:j7,compile:k7,compileToFunction:b7,createCompileError:_c,createCoreContext:f7,createCoreError:Ki,createMessageContext:Nz,datetime:E7,fallbackWithLocaleChain:o7,fallbackWithSimple:Oz,getAdditionalMeta:qz,getDevToolsHook:t7,getFallbackContext:p7,getLocale:Vm,getWarnMessage:Hr,handleMissing:Wm,initI18nDevTools:Fz,isMessageAST:Bs,isMessageFunction:Pi,isTranslateFallbackWarn:Hm,isTranslateMissingWarn:Wz,number:C7,parse:jz,parseDateTimeArgs:tP,parseNumberArgs:nP,parseTranslateArgs:Jz,registerLocaleFallbacker:u7,registerMessageCompiler:c7,registerMessageResolver:d7,resolveLocale:Cg,resolveValue:KL,resolveWithKeyValue:Tz,setAdditionalMeta:_7,setDevToolsHook:e7,setFallbackContext:m7,translate:w7,translateDevTools:Mz,updateFallbackLocale:h7},Symbol.toStringTag,{value:"Module"})),I7=wv(T7),N7=wv(YS);/*! * vue-i18n v9.9.0 * (c) 2024 kazuya kawaguchi * Released under the MIT License. - */var Z=s6,ct=F5,Dt=R5;const iz="9.9.0",oz=ct.CoreWarnCodes.__EXTEND_POINT__,Ds=Z.incrementer(oz),Aa={FALLBACK_TO_ROOT:oz,NOT_SUPPORTED_PRESERVE:Ds(),NOT_SUPPORTED_FORMATTER:Ds(),NOT_SUPPORTED_PRESERVE_DIRECTIVE:Ds(),NOT_SUPPORTED_GET_CHOICE_INDEX:Ds(),COMPONENT_NAME_LEGACY_COMPATIBLE:Ds(),NOT_FOUND_PARENT_SCOPE:Ds(),IGNORE_OBJ_FLATTEN:Ds(),NOTICE_DROP_ALLOW_COMPOSITION:Ds()},O5={[Aa.FALLBACK_TO_ROOT]:"Fall back to {type} '{key}' with root locale.",[Aa.NOT_SUPPORTED_PRESERVE]:"Not supported 'preserve'.",[Aa.NOT_SUPPORTED_FORMATTER]:"Not supported 'formatter'.",[Aa.NOT_SUPPORTED_PRESERVE_DIRECTIVE]:"Not supported 'preserveDirectiveContent'.",[Aa.NOT_SUPPORTED_GET_CHOICE_INDEX]:"Not supported 'getChoiceIndex'.",[Aa.COMPONENT_NAME_LEGACY_COMPATIBLE]:"Component name legacy compatible: '{name}' -> 'i18n'",[Aa.NOT_FOUND_PARENT_SCOPE]:"Not found parent scope. use the global scope.",[Aa.IGNORE_OBJ_FLATTEN]:"Ignore object flatten: '{key}' key has an string value",[Aa.NOTICE_DROP_ALLOW_COMPOSITION]:"'allowComposition' option will be dropped in the next major version. For more information, please see 👉 https://tinyurl.com/2p97mcze"};function ii(e,...t){return Z.format(O5[e],...t)}const sz=ct.CoreErrorCodes.__EXTEND_POINT__,Cn=Z.incrementer(sz),Mt={UNEXPECTED_RETURN_TYPE:sz,INVALID_ARGUMENT:Cn(),MUST_BE_CALL_SETUP_TOP:Cn(),NOT_INSTALLED:Cn(),NOT_AVAILABLE_IN_LEGACY_MODE:Cn(),REQUIRED_VALUE:Cn(),INVALID_VALUE:Cn(),CANNOT_SETUP_VUE_DEVTOOLS_PLUGIN:Cn(),NOT_INSTALLED_WITH_PROVIDE:Cn(),UNEXPECTED_ERROR:Cn(),NOT_COMPATIBLE_LEGACY_VUE_I18N:Cn(),BRIDGE_SUPPORT_VUE_2_ONLY:Cn(),MUST_DEFINE_I18N_OPTION_IN_ALLOW_COMPOSITION:Cn(),NOT_AVAILABLE_COMPOSITION_IN_LEGACY:Cn(),__EXTEND_POINT__:Cn()};function Wa(e,...t){return ct.createCompileError(e,null,{messages:M5,args:t})}const M5={[Mt.UNEXPECTED_RETURN_TYPE]:"Unexpected return type in composer",[Mt.INVALID_ARGUMENT]:"Invalid argument",[Mt.MUST_BE_CALL_SETUP_TOP]:"Must be called at the top of a `setup` function",[Mt.NOT_INSTALLED]:"Need to install with `app.use` function",[Mt.UNEXPECTED_ERROR]:"Unexpected error",[Mt.NOT_AVAILABLE_IN_LEGACY_MODE]:"Not available in legacy mode",[Mt.REQUIRED_VALUE]:"Required in value: {0}",[Mt.INVALID_VALUE]:"Invalid value",[Mt.CANNOT_SETUP_VUE_DEVTOOLS_PLUGIN]:"Cannot setup vue-devtools plugin",[Mt.NOT_INSTALLED_WITH_PROVIDE]:"Need to install with `provide` function",[Mt.NOT_COMPATIBLE_LEGACY_VUE_I18N]:"Not compatible legacy VueI18n.",[Mt.BRIDGE_SUPPORT_VUE_2_ONLY]:"vue-i18n-bridge support Vue 2.x only",[Mt.MUST_DEFINE_I18N_OPTION_IN_ALLOW_COMPOSITION]:"Must define ‘i18n’ option or custom block in Composition API with using local scope in Legacy API mode",[Mt.NOT_AVAILABLE_COMPOSITION_IN_LEGACY]:"Not available Compostion API in Legacy API mode. Please make sure that the legacy API mode is working properly"},Ng=Z.makeSymbol("__translateVNode"),Ig=Z.makeSymbol("__datetimeParts"),Fg=Z.makeSymbol("__numberParts"),Rg=Z.makeSymbol("__enableEmitter"),Og=Z.makeSymbol("__disableEmitter"),rz=Z.makeSymbol("__setPluralRules");Z.makeSymbol("__intlifyMeta");const lz=Z.makeSymbol("__injectWithOption"),Mg=Z.makeSymbol("__dispose"),$5="__VUE_I18N_BRIDGE__";function wd(e){if(!Z.isObject(e))return e;for(const t in e)if(Z.hasOwn(e,t))if(!t.includes("."))Z.isObject(e[t])&&wd(e[t]);else{const a=t.split("."),n=a.length-1;let i=e,o=!1;for(let s=0;s{if("locale"in l&&"resource"in l){const{locale:d,resource:u}=l;d?(s[d]=s[d]||{},Z.deepCopy(u,s[d])):Z.deepCopy(u,s)}else Z.isString(l)&&Z.deepCopy(JSON.parse(l),s)}),i==null&&o)for(const l in s)Z.hasOwn(s,l)&&wd(s[l]);return s}function cz(e){return e.type}function dz(e,t,a){let n=Z.isObject(t.messages)?t.messages:{};"__i18nGlobal"in a&&(n=Ym(e.locale.value,{messages:n,__i18n:a.__i18nGlobal}));const i=Object.keys(n);i.length&&i.forEach(o=>{e.mergeLocaleMessage(o,n[o])});{if(Z.isObject(t.datetimeFormats)){const o=Object.keys(t.datetimeFormats);o.length&&o.forEach(s=>{e.mergeDateTimeFormat(s,t.datetimeFormats[s])})}if(Z.isObject(t.numberFormats)){const o=Object.keys(t.numberFormats);o.length&&o.forEach(s=>{e.mergeNumberFormat(s,t.numberFormats[s])})}}}function rx(e){return Dt.createVNode(Dt.Text,null,e,0)}const lx="__INTLIFY_META__",cx=()=>[],L5=()=>!1;let dx=0;function ux(e){return(t,a,n,i)=>e(a,n,Dt.getCurrentInstance()||void 0,i)}const B5=()=>{const e=Dt.getCurrentInstance();let t=null;return e&&(t=cz(e)[lx])?{[lx]:t}:null};function Ey(e={},t){const{__root:a,__injectWithOption:n}=e,i=a===void 0,o=e.flatJson,s=Z.inBrowser?Dt.ref:Dt.shallowRef;let l=Z.isBoolean(e.inheritLocale)?e.inheritLocale:!0;const d=s(a&&l?a.locale.value:Z.isString(e.locale)?e.locale:ct.DEFAULT_LOCALE),u=s(a&&l?a.fallbackLocale.value:Z.isString(e.fallbackLocale)||Z.isArray(e.fallbackLocale)||Z.isPlainObject(e.fallbackLocale)||e.fallbackLocale===!1?e.fallbackLocale:d.value),_=s(Ym(d.value,e)),f=s(Z.isPlainObject(e.datetimeFormats)?e.datetimeFormats:{[d.value]:{}}),p=s(Z.isPlainObject(e.numberFormats)?e.numberFormats:{[d.value]:{}});let h=a?a.missingWarn:Z.isBoolean(e.missingWarn)||Z.isRegExp(e.missingWarn)?e.missingWarn:!0,g=a?a.fallbackWarn:Z.isBoolean(e.fallbackWarn)||Z.isRegExp(e.fallbackWarn)?e.fallbackWarn:!0,y=a?a.fallbackRoot:Z.isBoolean(e.fallbackRoot)?e.fallbackRoot:!0,k=!!e.fallbackFormat,b=Z.isFunction(e.missing)?e.missing:null,P=Z.isFunction(e.missing)?ux(e.missing):null,w=Z.isFunction(e.postTranslation)?e.postTranslation:null,x=a?a.warnHtmlMessage:Z.isBoolean(e.warnHtmlMessage)?e.warnHtmlMessage:!0,E=!!e.escapeParameter;const C=a?a.modifiers:Z.isPlainObject(e.modifiers)?e.modifiers:{};let j=e.pluralRules||a&&a.pluralRules,A;A=(()=>{i&&ct.setFallbackContext(null);const Q={version:iz,locale:d.value,fallbackLocale:u.value,messages:_.value,modifiers:C,pluralRules:j,missing:P===null?void 0:P,missingWarn:h,fallbackWarn:g,fallbackFormat:k,unresolving:!0,postTranslation:w===null?void 0:w,warnHtmlMessage:x,escapeParameter:E,messageResolver:e.messageResolver,messageCompiler:e.messageCompiler,__meta:{framework:"vue"}};Q.datetimeFormats=f.value,Q.numberFormats=p.value,Q.__datetimeFormatters=Z.isPlainObject(A)?A.__datetimeFormatters:void 0,Q.__numberFormatters=Z.isPlainObject(A)?A.__numberFormatters:void 0,Q.__v_emitter=Z.isPlainObject(A)?A.__v_emitter:void 0;const ne=ct.createCoreContext(Q);return i&&ct.setFallbackContext(ne),ne})(),ct.updateFallbackLocale(A,d.value,u.value);function V(){return[d.value,u.value,_.value,f.value,p.value]}const ee=Dt.computed({get:()=>d.value,set:Q=>{d.value=Q,A.locale=d.value}}),J=Dt.computed({get:()=>u.value,set:Q=>{u.value=Q,A.fallbackLocale=u.value,ct.updateFallbackLocale(A,d.value,Q)}}),ie=Dt.computed(()=>_.value),Te=Dt.computed(()=>f.value),ze=Dt.computed(()=>p.value);function ce(){return Z.isFunction(w)?w:null}function Ae(Q){w=Q,A.postTranslation=Q}function Pe(){return b}function He(Q){Q!==null&&(P=ux(Q)),b=Q,A.missing=P}function oe(Q,ne){return Q!=="translate"||!ne.resolvedMessage}const Ge=(Q,ne,Me,nt,Ht,Ea)=>{V();let Ra;try{ct.setAdditionalMeta(B5()),i||(A.fallbackContext=a?ct.getFallbackContext():void 0),Ra=Q(A)}finally{ct.setAdditionalMeta(null),i||(A.fallbackContext=void 0)}if(Me!=="translate exists"&&Z.isNumber(Ra)&&Ra===ct.NOT_REOSLVED||Me==="translate exists"&&!Ra){const[nn,qn]=ne();if(a&&Z.isString(nn)&&oe(Me,qn)){y&&(ct.isTranslateFallbackWarn(g,nn)||ct.isTranslateMissingWarn(h,nn))&&Z.warn(ii(Aa.FALLBACK_TO_ROOT,{key:nn,type:Me}));{const{__v_emitter:Ut}=A;Ut&&y&&Ut.emit("fallback",{type:Me,key:nn,to:"global",groupId:`${Me}:${nn}`})}}return a&&y?nt(a):Ht(nn)}else{if(Ea(Ra))return Ra;throw Wa(Mt.UNEXPECTED_RETURN_TYPE)}};function at(...Q){return Ge(ne=>Reflect.apply(ct.translate,null,[ne,...Q]),()=>ct.parseTranslateArgs(...Q),"translate",ne=>Reflect.apply(ne.t,ne,[...Q]),ne=>ne,ne=>Z.isString(ne))}function la(...Q){const[ne,Me,nt]=Q;if(nt&&!Z.isObject(nt))throw Wa(Mt.INVALID_ARGUMENT);return at(ne,Me,Z.assign({resolvedMessage:!0},nt||{}))}function Bt(...Q){return Ge(ne=>Reflect.apply(ct.datetime,null,[ne,...Q]),()=>ct.parseDateTimeArgs(...Q),"datetime format",ne=>Reflect.apply(ne.d,ne,[...Q]),()=>ct.MISSING_RESOLVE_VALUE,ne=>Z.isString(ne))}function Wt(...Q){return Ge(ne=>Reflect.apply(ct.number,null,[ne,...Q]),()=>ct.parseNumberArgs(...Q),"number format",ne=>Reflect.apply(ne.n,ne,[...Q]),()=>ct.MISSING_RESOLVE_VALUE,ne=>Z.isString(ne))}function jt(Q){return Q.map(ne=>Z.isString(ne)||Z.isNumber(ne)||Z.isBoolean(ne)?rx(String(ne)):ne)}const we={normalize:jt,interpolate:Q=>Q,type:"vnode"};function De(...Q){return Ge(ne=>{let Me;const nt=ne;try{nt.processor=we,Me=Reflect.apply(ct.translate,null,[nt,...Q])}finally{nt.processor=null}return Me},()=>ct.parseTranslateArgs(...Q),"translate",ne=>ne[Ng](...Q),ne=>[rx(ne)],ne=>Z.isArray(ne))}function Oe(...Q){return Ge(ne=>Reflect.apply(ct.number,null,[ne,...Q]),()=>ct.parseNumberArgs(...Q),"number format",ne=>ne[Fg](...Q),cx,ne=>Z.isString(ne)||Z.isArray(ne))}function st(...Q){return Ge(ne=>Reflect.apply(ct.datetime,null,[ne,...Q]),()=>ct.parseDateTimeArgs(...Q),"datetime format",ne=>ne[Ig](...Q),cx,ne=>Z.isString(ne)||Z.isArray(ne))}function vt(Q){j=Q,A.pluralRules=j}function S(Q,ne){return Ge(()=>{if(!Q)return!1;const Me=Z.isString(ne)?ne:d.value,nt=q(Me),Ht=A.messageResolver(nt,Q);return ct.isMessageAST(Ht)||ct.isMessageFunction(Ht)||Z.isString(Ht)},()=>[Q],"translate exists",Me=>Reflect.apply(Me.te,Me,[Q,ne]),L5,Me=>Z.isBoolean(Me))}function D(Q){let ne=null;const Me=ct.fallbackWithLocaleChain(A,u.value,d.value);for(let nt=0;nt{l&&(d.value=Q,A.locale=Q,ct.updateFallbackLocale(A,d.value,u.value))}),Dt.watch(a.fallbackLocale,Q=>{l&&(u.value=Q,A.fallbackLocale=Q,ct.updateFallbackLocale(A,d.value,u.value))}));const Ee={id:dx,locale:ee,fallbackLocale:J,get inheritLocale(){return l},set inheritLocale(Q){l=Q,Q&&a&&(d.value=a.locale.value,u.value=a.fallbackLocale.value,ct.updateFallbackLocale(A,d.value,u.value))},get availableLocales(){return Object.keys(_.value).sort()},messages:ie,get modifiers(){return C},get pluralRules(){return j||{}},get isGlobal(){return i},get missingWarn(){return h},set missingWarn(Q){h=Q,A.missingWarn=h},get fallbackWarn(){return g},set fallbackWarn(Q){g=Q,A.fallbackWarn=g},get fallbackRoot(){return y},set fallbackRoot(Q){y=Q},get fallbackFormat(){return k},set fallbackFormat(Q){k=Q,A.fallbackFormat=k},get warnHtmlMessage(){return x},set warnHtmlMessage(Q){x=Q,A.warnHtmlMessage=Q},get escapeParameter(){return E},set escapeParameter(Q){E=Q,A.escapeParameter=Q},t:at,getLocaleMessage:q,setLocaleMessage:H,mergeLocaleMessage:ue,getPostTranslationHandler:ce,setPostTranslationHandler:Ae,getMissingHandler:Pe,setMissingHandler:He,[rz]:vt};return Ee.datetimeFormats=Te,Ee.numberFormats=ze,Ee.rt=la,Ee.te=S,Ee.tm=F,Ee.d=Bt,Ee.n=Wt,Ee.getDateTimeFormat=xe,Ee.setDateTimeFormat=he,Ee.mergeDateTimeFormat=ke,Ee.getNumberFormat=ge,Ee.setNumberFormat=Ne,Ee.mergeNumberFormat=Ze,Ee[lz]=n,Ee[Ng]=De,Ee[Ig]=st,Ee[Fg]=Oe,Ee[Rg]=Q=>{A.__v_emitter=Q},Ee[Og]=()=>{A.__v_emitter=void 0},Ee}function U5(e){const t=Z.isString(e.locale)?e.locale:ct.DEFAULT_LOCALE,a=Z.isString(e.fallbackLocale)||Z.isArray(e.fallbackLocale)||Z.isPlainObject(e.fallbackLocale)||e.fallbackLocale===!1?e.fallbackLocale:t,n=Z.isFunction(e.missing)?e.missing:void 0,i=Z.isBoolean(e.silentTranslationWarn)||Z.isRegExp(e.silentTranslationWarn)?!e.silentTranslationWarn:!0,o=Z.isBoolean(e.silentFallbackWarn)||Z.isRegExp(e.silentFallbackWarn)?!e.silentFallbackWarn:!0,s=Z.isBoolean(e.fallbackRoot)?e.fallbackRoot:!0,l=!!e.formatFallbackMessages,d=Z.isPlainObject(e.modifiers)?e.modifiers:{},u=e.pluralizationRules,_=Z.isFunction(e.postTranslation)?e.postTranslation:void 0,f=Z.isString(e.warnHtmlInMessage)?e.warnHtmlInMessage!=="off":!0,p=!!e.escapeParameterHtml,h=Z.isBoolean(e.sync)?e.sync:!0;e.formatter&&Z.warn(ii(Aa.NOT_SUPPORTED_FORMATTER)),e.preserveDirectiveContent&&Z.warn(ii(Aa.NOT_SUPPORTED_PRESERVE_DIRECTIVE));let g=e.messages;if(Z.isPlainObject(e.sharedMessages)){const E=e.sharedMessages;g=Object.keys(E).reduce((j,A)=>{const U=j[A]||(j[A]={});return Z.assign(U,E[A]),j},g||{})}const{__i18n:y,__root:k,__injectWithOption:b}=e,P=e.datetimeFormats,w=e.numberFormats,x=e.flatJson;return{locale:t,fallbackLocale:a,messages:g,flatJson:x,datetimeFormats:P,numberFormats:w,missing:n,missingWarn:i,fallbackWarn:o,fallbackRoot:s,fallbackFormat:l,modifiers:d,pluralRules:u,postTranslation:_,warnHtmlMessage:f,escapeParameter:p,messageResolver:e.messageResolver,inheritLocale:h,__i18n:y,__root:k,__injectWithOption:b}}function $g(e={},t){{const a=Ey(U5(e)),{__extender:n}=e,i={id:a.id,get locale(){return a.locale.value},set locale(o){a.locale.value=o},get fallbackLocale(){return a.fallbackLocale.value},set fallbackLocale(o){a.fallbackLocale.value=o},get messages(){return a.messages.value},get datetimeFormats(){return a.datetimeFormats.value},get numberFormats(){return a.numberFormats.value},get availableLocales(){return a.availableLocales},get formatter(){return Z.warn(ii(Aa.NOT_SUPPORTED_FORMATTER)),{interpolate(){return[]}}},set formatter(o){Z.warn(ii(Aa.NOT_SUPPORTED_FORMATTER))},get missing(){return a.getMissingHandler()},set missing(o){a.setMissingHandler(o)},get silentTranslationWarn(){return Z.isBoolean(a.missingWarn)?!a.missingWarn:a.missingWarn},set silentTranslationWarn(o){a.missingWarn=Z.isBoolean(o)?!o:o},get silentFallbackWarn(){return Z.isBoolean(a.fallbackWarn)?!a.fallbackWarn:a.fallbackWarn},set silentFallbackWarn(o){a.fallbackWarn=Z.isBoolean(o)?!o:o},get modifiers(){return a.modifiers},get formatFallbackMessages(){return a.fallbackFormat},set formatFallbackMessages(o){a.fallbackFormat=o},get postTranslation(){return a.getPostTranslationHandler()},set postTranslation(o){a.setPostTranslationHandler(o)},get sync(){return a.inheritLocale},set sync(o){a.inheritLocale=o},get warnHtmlInMessage(){return a.warnHtmlMessage?"warn":"off"},set warnHtmlInMessage(o){a.warnHtmlMessage=o!=="off"},get escapeParameterHtml(){return a.escapeParameter},set escapeParameterHtml(o){a.escapeParameter=o},get preserveDirectiveContent(){return Z.warn(ii(Aa.NOT_SUPPORTED_PRESERVE_DIRECTIVE)),!0},set preserveDirectiveContent(o){Z.warn(ii(Aa.NOT_SUPPORTED_PRESERVE_DIRECTIVE))},get pluralizationRules(){return a.pluralRules||{}},__composer:a,t(...o){const[s,l,d]=o,u={};let _=null,f=null;if(!Z.isString(s))throw Wa(Mt.INVALID_ARGUMENT);const p=s;return Z.isString(l)?u.locale=l:Z.isArray(l)?_=l:Z.isPlainObject(l)&&(f=l),Z.isArray(d)?_=d:Z.isPlainObject(d)&&(f=d),Reflect.apply(a.t,a,[p,_||f||{},u])},rt(...o){return Reflect.apply(a.rt,a,[...o])},tc(...o){const[s,l,d]=o,u={plural:1};let _=null,f=null;if(!Z.isString(s))throw Wa(Mt.INVALID_ARGUMENT);const p=s;return Z.isString(l)?u.locale=l:Z.isNumber(l)?u.plural=l:Z.isArray(l)?_=l:Z.isPlainObject(l)&&(f=l),Z.isString(d)?u.locale=d:Z.isArray(d)?_=d:Z.isPlainObject(d)&&(f=d),Reflect.apply(a.t,a,[p,_||f||{},u])},te(o,s){return a.te(o,s)},tm(o){return a.tm(o)},getLocaleMessage(o){return a.getLocaleMessage(o)},setLocaleMessage(o,s){a.setLocaleMessage(o,s)},mergeLocaleMessage(o,s){a.mergeLocaleMessage(o,s)},d(...o){return Reflect.apply(a.d,a,[...o])},getDateTimeFormat(o){return a.getDateTimeFormat(o)},setDateTimeFormat(o,s){a.setDateTimeFormat(o,s)},mergeDateTimeFormat(o,s){a.mergeDateTimeFormat(o,s)},n(...o){return Reflect.apply(a.n,a,[...o])},getNumberFormat(o){return a.getNumberFormat(o)},setNumberFormat(o,s){a.setNumberFormat(o,s)},mergeNumberFormat(o,s){a.mergeNumberFormat(o,s)},getChoiceIndex(o,s){return Z.warn(ii(Aa.NOT_SUPPORTED_GET_CHOICE_INDEX)),-1}};return i.__extender=n,i.__enableEmitter=o=>{const s=a;s[Rg]&&s[Rg](o)},i.__disableEmitter=()=>{const o=a;o[Og]&&o[Og]()},i}}const zy={tag:{type:[String,Object]},locale:{type:String},scope:{type:String,validator:e=>e==="parent"||e==="global",default:"parent"},i18n:{type:Object}};function V5({slots:e},t){return t.length===1&&t[0]==="default"?(e.default?e.default():[]).reduce((n,i)=>[...n,...i.type===Dt.Fragment?i.children:[i]],[]):t.reduce((a,n)=>{const i=e[n];return i&&(a[n]=i()),a},{})}function uz(e){return Dt.Fragment}const q5=Dt.defineComponent({name:"i18n-t",props:Z.assign({keypath:{type:String,required:!0},plural:{type:[Number,String],validator:e=>Z.isNumber(e)||!isNaN(e)}},zy),setup(e,t){const{slots:a,attrs:n}=t,i=e.i18n||Zm({useScope:e.scope,__useComponent:!0});return()=>{const o=Object.keys(a).filter(f=>f!=="_"),s={};e.locale&&(s.locale=e.locale),e.plural!==void 0&&(s.plural=Z.isString(e.plural)?+e.plural:e.plural);const l=V5(t,o),d=i[Ng](e.keypath,l,s),u=Z.assign({},n),_=Z.isString(e.tag)||Z.isObject(e.tag)?e.tag:uz();return Dt.h(_,u,d)}}}),od=q5,W5=od;function H5(e){return Z.isArray(e)&&!Z.isString(e[0])}function _z(e,t,a,n){const{slots:i,attrs:o}=t;return()=>{const s={part:!0};let l={};e.locale&&(s.locale=e.locale),Z.isString(e.format)?s.key=e.format:Z.isObject(e.format)&&(Z.isString(e.format.key)&&(s.key=e.format.key),l=Object.keys(e.format).reduce((p,h)=>a.includes(h)?Z.assign({},p,{[h]:e.format[h]}):p,{}));const d=n(e.value,s,l);let u=[s.key];Z.isArray(d)?u=d.map((p,h)=>{const g=i[p.type],y=g?g({[p.type]:p.value,index:h,parts:d}):[p.value];return H5(y)&&(y[0].key=`${p.type}-${h}`),y}):Z.isString(d)&&(u=[d]);const _=Z.assign({},o),f=Z.isString(e.tag)||Z.isObject(e.tag)?e.tag:uz();return Dt.h(f,_,u)}}const K5=Dt.defineComponent({name:"i18n-n",props:Z.assign({value:{type:Number,required:!0},format:{type:[String,Object]}},zy),setup(e,t){const a=e.i18n||Zm({useScope:"parent",__useComponent:!0});return _z(e,t,ct.NUMBER_FORMAT_OPTIONS_KEYS,(...n)=>a[Fg](...n))}}),tm=K5,Y5=tm,Z5=Dt.defineComponent({name:"i18n-d",props:Z.assign({value:{type:[Number,Date],required:!0},format:{type:[String,Object]}},zy),setup(e,t){const a=e.i18n||Zm({useScope:"parent",__useComponent:!0});return _z(e,t,ct.DATETIME_FORMAT_OPTIONS_KEYS,(...n)=>a[Ig](...n))}}),am=Z5,G5=am;function Q5(e,t){const a=e;if(e.mode==="composition")return a.__getInstance(t)||e.global;{const n=a.__getInstance(t);return n!=null?n.__composer:e.global.__composer}}function mz(e){const t=s=>{const{instance:l,modifiers:d,value:u}=s;if(!l||!l.$)throw Wa(Mt.UNEXPECTED_ERROR);const _=Q5(e,l.$);d.preserve&&Z.warn(ii(Aa.NOT_SUPPORTED_PRESERVE));const f=_x(u);return[Reflect.apply(_.t,_,[...mx(f)]),_]};return{created:(s,l)=>{const[d,u]=t(l);Z.inBrowser&&e.global===u&&(s.__i18nWatcher=Dt.watch(u.locale,()=>{l.instance&&l.instance.$forceUpdate()})),s.__composer=u,s.textContent=d},unmounted:s=>{Z.inBrowser&&s.__i18nWatcher&&(s.__i18nWatcher(),s.__i18nWatcher=void 0,delete s.__i18nWatcher),s.__composer&&(s.__composer=void 0,delete s.__composer)},beforeUpdate:(s,{value:l})=>{if(s.__composer){const d=s.__composer,u=_x(l);s.textContent=Reflect.apply(d.t,d,[...mx(u)])}},getSSRProps:s=>{const[l]=t(s);return{textContent:l}}}}function _x(e){if(Z.isString(e))return{path:e};if(Z.isPlainObject(e)){if(!("path"in e))throw Wa(Mt.REQUIRED_VALUE,"path");return e}else throw Wa(Mt.INVALID_VALUE)}function mx(e){const{path:t,locale:a,args:n,choice:i,plural:o}=e,s={},l=n||{};return Z.isString(a)&&(s.locale=a),Z.isNumber(i)&&(s.plural=i),Z.isNumber(o)&&(s.plural=o),[t,l,s]}function J5(e,t,...a){const n=Z.isPlainObject(a[0])?a[0]:{},i=!!n.useI18nComponentName,o=Z.isBoolean(n.globalInstall)?n.globalInstall:!0;o&&i&&Z.warn(ii(Aa.COMPONENT_NAME_LEGACY_COMPATIBLE,{name:od.name})),o&&([i?"i18n":od.name,"I18nT"].forEach(s=>e.component(s,od)),[tm.name,"I18nN"].forEach(s=>e.component(s,tm)),[am.name,"I18nD"].forEach(s=>e.component(s,am))),e.directive("t",mz(t))}function X5(e,t,a){return{beforeCreate(){const n=Dt.getCurrentInstance();if(!n)throw Wa(Mt.UNEXPECTED_ERROR);const i=this.$options;if(i.i18n){const o=i.i18n;if(i.__i18n&&(o.__i18n=i.__i18n),o.__root=t,this===this.$root)this.$i18n=px(e,o);else{o.__injectWithOption=!0,o.__extender=a.__vueI18nExtend,this.$i18n=$g(o);const s=this.$i18n;s.__extender&&(s.__disposer=s.__extender(this.$i18n))}}else if(i.__i18n)if(this===this.$root)this.$i18n=px(e,i);else{this.$i18n=$g({__i18n:i.__i18n,__injectWithOption:!0,__extender:a.__vueI18nExtend,__root:t});const o=this.$i18n;o.__extender&&(o.__disposer=o.__extender(this.$i18n))}else this.$i18n=e;i.__i18nGlobal&&dz(t,i,i),this.$t=(...o)=>this.$i18n.t(...o),this.$rt=(...o)=>this.$i18n.rt(...o),this.$tc=(...o)=>this.$i18n.tc(...o),this.$te=(o,s)=>this.$i18n.te(o,s),this.$d=(...o)=>this.$i18n.d(...o),this.$n=(...o)=>this.$i18n.n(...o),this.$tm=o=>this.$i18n.tm(o),a.__setInstance(n,this.$i18n)},mounted(){},unmounted(){const n=Dt.getCurrentInstance();if(!n)throw Wa(Mt.UNEXPECTED_ERROR);const i=this.$i18n;delete this.$t,delete this.$rt,delete this.$tc,delete this.$te,delete this.$d,delete this.$n,delete this.$tm,i.__disposer&&(i.__disposer(),delete i.__disposer,delete i.__extender),a.__deleteInstance(n),delete this.$i18n}}}function px(e,t){e.locale=t.locale||e.locale,e.fallbackLocale=t.fallbackLocale||e.fallbackLocale,e.missing=t.missing||e.missing,e.silentTranslationWarn=t.silentTranslationWarn||e.silentFallbackWarn,e.silentFallbackWarn=t.silentFallbackWarn||e.silentFallbackWarn,e.formatFallbackMessages=t.formatFallbackMessages||e.formatFallbackMessages,e.postTranslation=t.postTranslation||e.postTranslation,e.warnHtmlInMessage=t.warnHtmlInMessage||e.warnHtmlInMessage,e.escapeParameterHtml=t.escapeParameterHtml||e.escapeParameterHtml,e.sync=t.sync||e.sync,e.__composer[rz](t.pluralizationRules||e.pluralizationRules);const a=Ym(e.locale,{messages:t.messages,__i18n:t.__i18n});return Object.keys(a).forEach(n=>e.mergeLocaleMessage(n,a[n])),t.datetimeFormats&&Object.keys(t.datetimeFormats).forEach(n=>e.mergeDateTimeFormat(n,t.datetimeFormats[n])),t.numberFormats&&Object.keys(t.numberFormats).forEach(n=>e.mergeNumberFormat(n,t.numberFormats[n])),e}const pz=Z.makeSymbol("global-vue-i18n");function eU(e={},t){const a=Z.isBoolean(e.legacy)?e.legacy:!0,n=Z.isBoolean(e.globalInjection)?e.globalInjection:!0,i=a?!!e.allowComposition:!0,o=new Map,[s,l]=aU(e,a),d=Z.makeSymbol("vue-i18n");a&&i&&Z.warn(ii(Aa.NOTICE_DROP_ALLOW_COMPOSITION));function u(p){return o.get(p)||null}function _(p,h){o.set(p,h)}function f(p){o.delete(p)}{const p={get mode(){return a?"legacy":"composition"},get allowComposition(){return i},async install(h,...g){if(h.__VUE_I18N_SYMBOL__=d,h.provide(h.__VUE_I18N_SYMBOL__,p),Z.isPlainObject(g[0])){const b=g[0];p.__composerExtend=b.__composerExtend,p.__vueI18nExtend=b.__vueI18nExtend}let y=null;!a&&n&&(y=uU(h,p.global)),J5(h,p,...g),a&&h.mixin(X5(l,l.__composer,p));const k=h.unmount;h.unmount=()=>{y&&y(),p.dispose(),k()}},get global(){return l},dispose(){s.stop()},__instances:o,__getInstance:u,__setInstance:_,__deleteInstance:f};return p}}function Zm(e={}){const t=Dt.getCurrentInstance();if(t==null)throw Wa(Mt.MUST_BE_CALL_SETUP_TOP);if(!t.isCE&&t.appContext.app!=null&&!t.appContext.app.__VUE_I18N_SYMBOL__)throw Wa(Mt.NOT_INSTALLED);const a=nU(t),n=oU(a),i=cz(t),o=iU(e,i);if(a.mode==="legacy"&&!e.__useComponent){if(!a.allowComposition)throw Wa(Mt.NOT_AVAILABLE_IN_LEGACY_MODE);return cU(t,o,n,e)}if(o==="global")return dz(n,e,i),n;if(o==="parent"){let d=sU(a,t,e.__useComponent);return d==null&&(Z.warn(ii(Aa.NOT_FOUND_PARENT_SCOPE)),d=n),d}const s=a;let l=s.__getInstance(t);if(l==null){const d=Z.assign({},e);"__i18n"in i&&(d.__i18n=i.__i18n),n&&(d.__root=n),l=Ey(d),s.__composerExtend&&(l[Mg]=s.__composerExtend(l)),lU(s,t,l),s.__setInstance(t,l)}return l}const tU=e=>{if(!($5 in e))throw Wa(Mt.NOT_COMPATIBLE_LEGACY_VUE_I18N);return e};function aU(e,t,a){const n=Dt.effectScope();{const i=t?n.run(()=>$g(e)):n.run(()=>Ey(e));if(i==null)throw Wa(Mt.UNEXPECTED_ERROR);return[n,i]}}function nU(e){{const t=Dt.inject(e.isCE?pz:e.appContext.app.__VUE_I18N_SYMBOL__);if(!t)throw Wa(e.isCE?Mt.NOT_INSTALLED_WITH_PROVIDE:Mt.UNEXPECTED_ERROR);return t}}function iU(e,t){return Z.isEmptyObject(e)?"__i18n"in t?"local":"global":e.useScope?e.useScope:"local"}function oU(e){return e.mode==="composition"?e.global:e.global.__composer}function sU(e,t,a=!1){let n=null;const i=t.root;let o=rU(t,a);for(;o!=null;){const s=e;if(e.mode==="composition")n=s.__getInstance(o);else{const l=s.__getInstance(o);l!=null&&(n=l.__composer,a&&n&&!n[lz]&&(n=null))}if(n!=null||i===o)break;o=o.parent}return n}function rU(e,t=!1){return e==null?null:t&&e.vnode.ctx||e.parent}function lU(e,t,a){Dt.onMounted(()=>{},t),Dt.onUnmounted(()=>{const n=a;e.__deleteInstance(t);const i=n[Mg];i&&(i(),delete n[Mg])},t)}function cU(e,t,a,n={}){const i=t==="local",o=Dt.shallowRef(null);if(i&&e.proxy&&!(e.proxy.$options.i18n||e.proxy.$options.__i18n))throw Wa(Mt.MUST_DEFINE_I18N_OPTION_IN_ALLOW_COMPOSITION);const s=Z.isBoolean(n.inheritLocale)?n.inheritLocale:!Z.isString(n.locale),l=Dt.ref(!i||s?a.locale.value:Z.isString(n.locale)?n.locale:ct.DEFAULT_LOCALE),d=Dt.ref(!i||s?a.fallbackLocale.value:Z.isString(n.fallbackLocale)||Z.isArray(n.fallbackLocale)||Z.isPlainObject(n.fallbackLocale)||n.fallbackLocale===!1?n.fallbackLocale:l.value),u=Dt.ref(Ym(l.value,n)),_=Dt.ref(Z.isPlainObject(n.datetimeFormats)?n.datetimeFormats:{[l.value]:{}}),f=Dt.ref(Z.isPlainObject(n.numberFormats)?n.numberFormats:{[l.value]:{}}),p=i?a.missingWarn:Z.isBoolean(n.missingWarn)||Z.isRegExp(n.missingWarn)?n.missingWarn:!0,h=i?a.fallbackWarn:Z.isBoolean(n.fallbackWarn)||Z.isRegExp(n.fallbackWarn)?n.fallbackWarn:!0,g=i?a.fallbackRoot:Z.isBoolean(n.fallbackRoot)?n.fallbackRoot:!0,y=!!n.fallbackFormat,k=Z.isFunction(n.missing)?n.missing:null,b=Z.isFunction(n.postTranslation)?n.postTranslation:null,P=i?a.warnHtmlMessage:Z.isBoolean(n.warnHtmlMessage)?n.warnHtmlMessage:!0,w=!!n.escapeParameter,x=i?a.modifiers:Z.isPlainObject(n.modifiers)?n.modifiers:{},E=n.pluralRules||i&&a.pluralRules;function C(){return[l.value,d.value,u.value,_.value,f.value]}const j=Dt.computed({get:()=>o.value?o.value.locale.value:l.value,set:D=>{o.value&&(o.value.locale.value=D),l.value=D}}),A=Dt.computed({get:()=>o.value?o.value.fallbackLocale.value:d.value,set:D=>{o.value&&(o.value.fallbackLocale.value=D),d.value=D}}),U=Dt.computed(()=>o.value?o.value.messages.value:u.value),V=Dt.computed(()=>_.value),ee=Dt.computed(()=>f.value);function J(){return o.value?o.value.getPostTranslationHandler():b}function ie(D){o.value&&o.value.setPostTranslationHandler(D)}function Te(){return o.value?o.value.getMissingHandler():k}function ze(D){o.value&&o.value.setMissingHandler(D)}function ce(D){return C(),D()}function Ae(...D){return o.value?ce(()=>Reflect.apply(o.value.t,null,[...D])):ce(()=>"")}function Pe(...D){return o.value?Reflect.apply(o.value.rt,null,[...D]):""}function He(...D){return o.value?ce(()=>Reflect.apply(o.value.d,null,[...D])):ce(()=>"")}function oe(...D){return o.value?ce(()=>Reflect.apply(o.value.n,null,[...D])):ce(()=>"")}function Ge(D){return o.value?o.value.tm(D):{}}function at(D,F){return o.value?o.value.te(D,F):!1}function la(D){return o.value?o.value.getLocaleMessage(D):{}}function Bt(D,F){o.value&&(o.value.setLocaleMessage(D,F),u.value[D]=F)}function Wt(D,F){o.value&&o.value.mergeLocaleMessage(D,F)}function jt(D){return o.value?o.value.getDateTimeFormat(D):{}}function le(D,F){o.value&&(o.value.setDateTimeFormat(D,F),_.value[D]=F)}function we(D,F){o.value&&o.value.mergeDateTimeFormat(D,F)}function De(D){return o.value?o.value.getNumberFormat(D):{}}function Oe(D,F){o.value&&(o.value.setNumberFormat(D,F),f.value[D]=F)}function st(D,F){o.value&&o.value.mergeNumberFormat(D,F)}const vt={get id(){return o.value?o.value.id:-1},locale:j,fallbackLocale:A,messages:U,datetimeFormats:V,numberFormats:ee,get inheritLocale(){return o.value?o.value.inheritLocale:s},set inheritLocale(D){o.value&&(o.value.inheritLocale=D)},get availableLocales(){return o.value?o.value.availableLocales:Object.keys(u.value)},get modifiers(){return o.value?o.value.modifiers:x},get pluralRules(){return o.value?o.value.pluralRules:E},get isGlobal(){return o.value?o.value.isGlobal:!1},get missingWarn(){return o.value?o.value.missingWarn:p},set missingWarn(D){o.value&&(o.value.missingWarn=D)},get fallbackWarn(){return o.value?o.value.fallbackWarn:h},set fallbackWarn(D){o.value&&(o.value.missingWarn=D)},get fallbackRoot(){return o.value?o.value.fallbackRoot:g},set fallbackRoot(D){o.value&&(o.value.fallbackRoot=D)},get fallbackFormat(){return o.value?o.value.fallbackFormat:y},set fallbackFormat(D){o.value&&(o.value.fallbackFormat=D)},get warnHtmlMessage(){return o.value?o.value.warnHtmlMessage:P},set warnHtmlMessage(D){o.value&&(o.value.warnHtmlMessage=D)},get escapeParameter(){return o.value?o.value.escapeParameter:w},set escapeParameter(D){o.value&&(o.value.escapeParameter=D)},t:Ae,getPostTranslationHandler:J,setPostTranslationHandler:ie,getMissingHandler:Te,setMissingHandler:ze,rt:Pe,d:He,n:oe,tm:Ge,te:at,getLocaleMessage:la,setLocaleMessage:Bt,mergeLocaleMessage:Wt,getDateTimeFormat:jt,setDateTimeFormat:le,mergeDateTimeFormat:we,getNumberFormat:De,setNumberFormat:Oe,mergeNumberFormat:st};function S(D){D.locale.value=l.value,D.fallbackLocale.value=d.value,Object.keys(u.value).forEach(F=>{D.mergeLocaleMessage(F,u.value[F])}),Object.keys(_.value).forEach(F=>{D.mergeDateTimeFormat(F,_.value[F])}),Object.keys(f.value).forEach(F=>{D.mergeNumberFormat(F,f.value[F])}),D.escapeParameter=w,D.fallbackFormat=y,D.fallbackRoot=g,D.fallbackWarn=h,D.missingWarn=p,D.warnHtmlMessage=P}return Dt.onBeforeMount(()=>{if(e.proxy==null||e.proxy.$i18n==null)throw Wa(Mt.NOT_AVAILABLE_COMPOSITION_IN_LEGACY);const D=o.value=e.proxy.$i18n.__composer;t==="global"?(l.value=D.locale.value,d.value=D.fallbackLocale.value,u.value=D.messages.value,_.value=D.datetimeFormats.value,f.value=D.numberFormats.value):i&&S(D)}),vt}const dU=["locale","fallbackLocale","availableLocales"],fx=["t","rt","d","n","tm","te"];function uU(e,t){const a=Object.create(null);return dU.forEach(i=>{const o=Object.getOwnPropertyDescriptor(t,i);if(!o)throw Wa(Mt.UNEXPECTED_ERROR);const s=Dt.isRef(o.value)?{get(){return o.value.value},set(l){o.value.value=l}}:{get(){return o.get&&o.get()}};Object.defineProperty(a,i,s)}),e.config.globalProperties.$i18n=a,fx.forEach(i=>{const o=Object.getOwnPropertyDescriptor(t,i);if(!o||!o.value)throw Wa(Mt.UNEXPECTED_ERROR);Object.defineProperty(e.config.globalProperties,`$${i}`,o)}),()=>{delete e.config.globalProperties.$i18n,fx.forEach(i=>{delete e.config.globalProperties[`$${i}`]})}}ct.registerMessageCompiler(ct.compile);ct.registerMessageResolver(ct.resolveValue);ct.registerLocaleFallbacker(ct.fallbackWithLocaleChain);{const e=Z.getGlobalThis();e.__INTLIFY__=!0,ct.setDevToolsHook(e.__INTLIFY_DEVTOOLS_GLOBAL_HOOK__)}_i.DatetimeFormat=am;_i.I18nD=G5;_i.I18nInjectionKey=pz;_i.I18nN=Y5;_i.I18nT=W5;_i.NumberFormat=tm;_i.Translation=od;_i.VERSION=iz;_i.castToVueI18n=tU;_i.createI18n=eU;_i.useI18n=Zm;_i.vTDirective=mz;var Qr=_i;const _U={dashboard:"Nástěnka",customers:"Zákazníci",items:"Položky",invoices:"Faktury","recurring-invoices":"Opakující se faktury",expenses:"Výdaje",estimates:"Nabídky",payments:"Platby",reports:"Hlášení",settings:"Nastavení",logout:"Odhlásit se",users:"Uživatelé",modules:"Moduly"},mU={add_company:"Přidat firmu",view_pdf:"Zobrazit PDF",copy_pdf_url:"Kopírovat adresu PDF",download_pdf:"Stáhnout PDF",save:"Uložit",create:"Vytvořit",cancel:"Zrušit",update:"Aktualizovat",deselect:"Odznačit",download:"Stáhnout",from_date:"Od data",to_date:"Do data",from:"Od",to:"Do",ok:"OK",yes:"Ano",no:"Ne",sort_by:"Seřadit podle",ascending:"Vzestupně",descending:"Sestupně",subject:"Předmět",body:"Tělo",message:"Zpráva",send:"Odeslat",preview:"Náhled",go_back:"Vrátit se",back_to_login:"Zpět na přihlášení?",home:"Domů",filter:"Filtr",delete:"Smazat",edit:"Upravit",view:"Zobrazit",add_new_item:"Přidat novou položku",clear_all:"Vymazat vše",showing:"Zobrazuji",of:"z",actions:"Akce",subtotal:"MEZISOUČET",discount:"SLEVA",fixed:"Fixní",percentage:"Procentuálně",tax:"DANĚ",total_amount:"CELKOVÉ MNOŽSTVÍ",bill_to:"Příjemce faktury",ship_to:"Doručovací adresa",due:"Datum platnosti",draft:"Koncept",sent:"Odesláno",all:"Vše",select_all:"Vybrat vše",select_template:"Vybrat šablonu",choose_file:"Klikněte zde pro výběr souboru",choose_template:"Zvolit šablonu",choose:"Vybrat",remove:"Odebrat",select_a_status:"Vybrat stav",select_a_tax:"Vybrat daň",search:"Hledat",are_you_sure:"Opravdu?",list_is_empty:"Seznam je prázdný.",no_tax_found:"Žádná daň nebyla nalezena!",four_zero_four:"404",you_got_lost:"Jejda! Ztratili jste se!",go_home:"Návrat domů",test_mail_conf:"Otestovat konfiguraci mailů",send_mail_successfully:"Mail byl úspěšně odeslán",setting_updated:"Nastavení úspěšně aktualizováno",select_state:"Zvolte stát",select_country:"Zvolte zemi",select_city:"Zvolte město",street_1:"Ulice 1",street_2:"Ulice 2",action_failed:"Akce se nezdařila",retry:"Zkusit znovu",choose_note:"Zvolit poznámku",no_note_found:"Nebyly nalezeny žádné poznámky",insert_note:"Vložit poznámku",copied_pdf_url_clipboard:"Adresa PDF zkopírována do schránky!",copied_url_clipboard:"Zkopírováno do schránky!",docs:"Dokumentace",do_you_wish_to_continue:"Přejete si pokračovat?",note:"Poznámka",pay_invoice:"Zaplatit fakturu",login_successfully:"Přihlášení proběhlo úspěšně!",logged_out_successfully:"Odhlášení proběhlo úspěšně",mark_as_default:"Označit jako výchozí"},pU={select_year:"Vybrat rok",cards:{due_amount:"Částka k zaplacení",customers:"Zákazníci",invoices:"Faktury",estimates:"Nabídky",payments:"Platby"},chart_info:{total_sales:"Slevy",total_receipts:"Doklady",total_expense:"Výdaje",net_income:"Čistý příjem",year:"Vybrat rok"},monthly_chart:{title:"Prodeje a výdaje"},recent_invoices_card:{title:"Splatné faktury",due_on:"Splatnost",customer:"Zákazník",amount_due:"Splatná částka",actions:"Akce",view_all:"Zobrazit vše"},recent_estimate_card:{title:"Nedávné nabídky",date:"Datum",customer:"Zákazník",amount_due:"Částka k zaplacení",actions:"Akce",view_all:"Zobrazit vše"}},fU={name:"Jméno",description:"Popis",percent:"Procento",compound_tax:"Kombinovaná daň"},hU={search:"Hledat...",customers:"Zákazníci",users:"Uživatelé",no_results_found:"Nebyly nalezeny žádné výsledky"},gU={label:"Přepnout firmy",no_results_found:"Nebyly nalezeny žádné výsledky",add_new_company:"Přidat firmu",new_company:"Nová firma",created_message:"Firma úspěšně vytvořena"},vU={today:"Dnes",this_week:"Tento týden",this_month:"Tento měsíc",this_quarter:"Toto čtvrtletí",this_year:"Tento rok",previous_week:"Předchozí týden",previous_month:"Předchozí měsíc",previous_quarter:"Předchozí čtvrtletí",previous_year:"Předchozí rok",custom:"Vlastní"},yU={title:"Zákazníci",prefix:"Prefix",add_customer:"Přidat zákazníka",contacts_list:"Seznam zákazníků",name:"Jméno",mail:"E-mail | E-maily",statement:"Výpis",display_name:"Zobrazené jméno",primary_contact_name:"Jméno primárního kontaktu",contact_name:"Jméno kontaktu",amount_due:"Částka k zaplacení",email:"Email",address:"Adresa",phone:"Telefon",website:"Webová stránka",overview:"Přehled",invoice_prefix:"Prefix pro faktury",estimate_prefix:"Prefix pro nabídky",payment_prefix:"Prefix pro platby",enable_portal:"Povolit portál",country:"Země",state:"Stát",city:"Město",zip_code:"PSČ",added_on:"Přidáno dne",action:"Akce",password:"Heslo",confirm_password:"Potvrdit heslo",street_number:"Číslo ulice",primary_currency:"Primární měna",description:"Popis",add_new_customer:"Přidat nového zákazníka",save_customer:"Uložit zákazníka",update_customer:"Aktualizovat zákazníka",customer:"Zákazník | Zákazníci",new_customer:"Nový zákazník",edit_customer:"Upravit zákazníka",basic_info:"Základní informace",portal_access:"Přístup do portálu",portal_access_text:"Chcete povolit tomuto zákazníkovi možnost přihlásit se na zákaznický portál?",portal_access_url:"URL pro přihlášení do zákaznického portálu",portal_access_url_help:"Zkopírujte a pošlete výše uvedenou adresu URL vašemu zákazníkovi pro poskytnutí přístupu.",billing_address:"Fakturační adresa",shipping_address:"Doručovací adresa",copy_billing_address:"Zkopírovat z fakturace",no_customers:"Dosud žádní zákazníci!",no_customers_found:"Nebyli nalezeni žádní zákazníci!",no_contact:"Žádný kontakt",no_contact_name:"Bez jména kontaktu",list_of_customers:"Tato sekce bude obsahovat seznam zákazníků.",primary_display_name:"Primární zobrazované jméno",select_currency:"Vybrat měnu",select_a_customer:"Vybrat zákazníka",type_or_click:"Zadejte nebo klikněte pro výběr",new_transaction:"Nová transakce",no_matching_customers:"Neexistují žádní odpovídající zákazníci!",phone_number:"Telefonní číslo",create_date:"Datum vytvoření",confirm_delete:"Nebudete moci obnovit tohoto zákazníka a všechny jeho faktury, odhady a platby. | Nebudete moci obnovit tyto zákazníky a všechny jejich faktury, odhady a platby.",created_message:"Zákazník úspěšně vytvořen",updated_message:"Zákazník úspěšně upraven",address_updated_message:"Adresa úspěšně aktualizována",deleted_message:"Zákazník úspěšně smazán | Zákazníci úspěšně smazáni",edit_currency_not_allowed:"Po vytvoření transakce nelze změnit měnu."},bU={title:"Položky",items_list:"Seznam položek",name:"Název",unit:"Jednotka",description:"Popis",added_on:"Přidáno",price:"Cena",date_of_creation:"Datum vytvoření",not_selected:"Není vybrána žádná položka",action:"Akce",add_item:"Přidat položku",save_item:"Uložit položku",update_item:"Aktualizovat položku",item:"Položka | Položky",add_new_item:"Přidat novou položku",new_item:"Nová položka",edit_item:"Upravit položku",no_items:"Zatím žádné položky!",list_of_items:"Tato sekce bude obsahovat seznam položek.",select_a_unit:"vyberte jednotku",taxes:"Daně",item_attached_message:"Nelze odstranit položku, která se již používá",confirm_delete:"Nebudete moci obnovit tuto položku | Nebudete moci obnovit tyto položky",created_message:"Položka byla úspěšně vytvořena",updated_message:"Položka úspěšně upravena",deleted_message:"Položka byla úspěšně odstraněna | Položky byly úspěšně odstraněny"},kU={title:"Nabídky",accept_estimate:"Přijmout nabídku",reject_estimate:"Odmítnout nabídku",estimate:"Nabídka | Nabídky",estimates_list:"Seznam nabídek",days:"{days} dní",months:"{months} měsíc",years:"{years} rok",all:"Vše",paid:"Zaplacené",unpaid:"Neplacené",customer:"ZÁKAZNÍK",ref_no:"REFERENČNÍ ČÍSLO",number:"ČÍSLO",amount_due:"ČÁSTKA K ZAPLACENÍ",partially_paid:"Částečně zaplaceno",total:"Celkem",discount:"Sleva",sub_total:"Mezisoučet",estimate_number:"Číslo nabídky",ref_number:"Referenční číslo",contact:"Kontakt",add_item:"Přidat položku",date:"Datum",due_date:"Datum splatnosti",expiry_date:"Datum expirace",status:"Stav",add_tax:"Přidat daň",amount:"Částka",action:"Akce",notes:"Poznámky",tax:"Daň",estimate_template:"Šablona",convert_to_invoice:"Převést na fakturu",mark_as_sent:"Označit jako odeslané",send_estimate:"Odeslat nabídku",resend_estimate:"Znovu odeslat nabídku",record_payment:"Zaznamenat platbu",add_estimate:"Přidat nabídku",save_estimate:"Uložit nabídku",confirm_conversion:"Tento odhad bude použit k vytvoření nové faktury.",conversion_message:"Faktura byla úspěšně vytvořena",confirm_send_estimate:"Tento odhad bude zaslán e-mailem zákazníkovi",confirm_mark_as_sent:"Tento odhad bude označen jako odeslaný",confirm_mark_as_accepted:"Tento odhad bude označen jako Přijatý",confirm_mark_as_rejected:"Tento odhad bude označen jako Odmítnutý",no_matching_estimates:"Neexistují žádné odpovídající odhady!",mark_as_sent_successfully:"Odhad byl označen jako úspěšně odeslán",send_estimate_successfully:"Odhad byl úspěšně odeslán",errors:{required:"Pole je povinné"},accepted:"Přijato",rejected:"Odmítnuto",expired:"Vypršela platnost",sent:"Odesláno",draft:"Koncept",viewed:"Zobrazené",declined:"Odmítnuto",new_estimate:"Nový odhad",add_new_estimate:"Přidat nový odhad",update_Estimate:"Aktualizovat odhad",edit_estimate:"Upravit odhad",items:"položky",Estimate:"Odhad | Odhady",add_new_tax:"Přidat novou daň",no_estimates:"Zatím žádné odhady!",list_of_estimates:"Tato sekce bude obsahovat seznam odhadů.",mark_as_rejected:"Označit jako odmítnuté",mark_as_accepted:"Označit jako přijaté",marked_as_accepted_message:"Odhad označen jako přijatý",marked_as_rejected_message:"Odhad označen jako odmítnutý",confirm_delete:"Nebudete moci obnovit tento odhad | Nebudete moci obnovit tyto odhady",created_message:"Odhad úspěšně vytvořen",updated_message:"Odhad úspěšně upraven",deleted_message:"Odhad úspěšně odstraněn | Odhady úspěšně odstraněny",something_went_wrong:"něco se nezdařilo",item:{title:"Název položky",description:"Popis",quantity:"Množství",price:"Cena",discount:"Sleva",total:"Celkem",total_discount:"Celková sleva",sub_total:"Mezisoučet",tax:"Daň",amount:"Množství",select_an_item:"Pište nebo klikněte pro výběr položky",type_item_description:"Zadejte popis položky (volitelné)"},mark_as_default_estimate_template_description:"Je-li povoleno, bude vybraná šablona automaticky vybrána pro nové nabídky."},wU={title:"Faktury",download:"Stáhnout",pay_invoice:"Zaplatit fakturu",invoices_list:"Seznam faktur",invoice_information:"Informace o faktuře",days:"{days} dní",months:"{months} měsíc",years:"{years} rok",all:"Vše",paid:"Zaplacené",unpaid:"Neplacené",viewed:"Zobrazené",overdue:"Po splatnosti",completed:"Dokončené",customer:"ZÁKAZNÍK",paid_status:"STAV PLATBY",ref_no:"REFERENČNÍ ČÍSLO",number:"ČÍSLO",amount_due:"ČÁSTKA K ZAPLACENÍ",partially_paid:"Částečně zaplaceno",total:"Celkem",discount:"Sleva",sub_total:"Mezisoučet",invoice:"Faktura | Faktury",invoice_number:"Číslo faktury",ref_number:"Referenční číslo",contact:"Kontakt",add_item:"Přidat položku",date:"Datum",due_date:"Datum splatnosti",status:"Stav",add_tax:"Přidat daň",amount:"Částka",action:"Akce",notes:"Poznámky",view:"Zobrazit",send_invoice:"Odeslat fakturu",resend_invoice:"Znovu odeslat fakturu",invoice_template:"Šablona faktury",conversion_message:"Faktura byla úspěšně naklonována",template:"Vybrat šablonu",mark_as_sent:"Označit jako odeslané",confirm_send_invoice:"Tato faktura bude zaslána e-mailem zákazníkovi",invoice_mark_as_sent:"Tato faktura bude označena jako odeslaná",confirm_mark_as_accepted:"Tato faktura bude označena jako přijatá",confirm_mark_as_rejected:"Tato faktura bude označena jako odmítnutá",confirm_send:"Tato faktura bude zaslána e-mailem zákazníkovi",invoice_date:"Datum fakturace",record_payment:"Zaznamenat platbu",add_new_invoice:"Přidat novou fakturu",update_expense:"Aktualizovat výdaj",edit_invoice:"Upravit fakturu",new_invoice:"Nová faktura",save_invoice:"Uložit fakturu",update_invoice:"Upravit fakturu",add_new_tax:"Přidat novou daň",no_invoices:"Zatím žádné faktury!",mark_as_rejected:"Označit jako odmítnuté",mark_as_accepted:"Označit jako přijaté",list_of_invoices:"Tato sekce bude obsahovat seznam faktur.",select_invoice:"Vybrat fakturu",no_matching_invoices:"Neexistují žádné odpovídající faktury!",mark_as_sent_successfully:"Faktura označena jako úspěšně odeslaná",invoice_sent_successfully:"Faktura byla úspěšně odeslána",cloned_successfully:"Faktura úspěšně naklonována",clone_invoice:"Naklonovat fakturu",confirm_clone:"Tato faktura bude naklonována do nové faktury",item:{title:"Název položky",description:"Popis",quantity:"Množství",price:"Cena",discount:"Sleva",total:"Celkem",total_discount:"Celková sleva",sub_total:"Mezisoučet",tax:"Daň",amount:"Množství",select_an_item:"Pište nebo klikněte pro výběr položky",type_item_description:"Zadejte popis položky (volitelné)"},payment_attached_message:"Na jedné z vybraných faktur je již přiložena platba. Nezapomeňte nejprve odstranit připojené platby, abyste mohli pokračovat s odstraněním",confirm_delete:"Nebudete moci obnovit tuto fakturu | Nebudete moci obnovit tyto faktury",created_message:"Faktura byla úspěšně vytvořena",updated_message:"Faktura byla úspěšně upravena",deleted_message:"Faktura byla úspěšně odstraněna | Faktury byly úspěšně odstraněny",marked_as_sent_message:"Faktura označena jako úspěšně odeslaná",something_went_wrong:"něco se nezdařilo",invalid_due_amount_message:"Celková částka faktury nemůže být nižší než celková částka zaplacená za tuto fakturu. Chcete-li pokračovat, upravte fakturu nebo smažte související platby.",mark_as_default_invoice_template_description:"Je-li povoleno, bude vybraná šablona automaticky vybrána pro nové faktury."},DU={title:"Opakující se faktury",invoices_list:"Seznam opakujících se faktur",days:"{days} dní",months:"{months} měsíc",years:"{years} rok",all:"Všechny",paid:"Zaplacené",unpaid:"Neplacené",viewed:"Zobrazené",overdue:"Po splatnosti",active:"Aktivní",completed:"Dokončené",customer:"ZÁKAZNÍK",paid_status:"STAV PLATBY",ref_no:"REFERENČNÍ ČÍSLO",number:"ČÍSLO",amount_due:"ČÁSTKA K ZAPLACENÍ",partially_paid:"Částečně zaplaceno",total:"Celkem",discount:"Sleva",sub_total:"Mezisoučet",invoice:"Opakující se faktura | Opakující se faktury",invoice_number:"Číslo opakující se faktury",next_invoice_date:"Datum další fakturace",ref_number:"Referenční číslo",contact:"Kontakt",add_item:"Přidat položku",date:"Datum",limit_by:"Omezit podle",limit_date:"Omezit datum",limit_count:"Omezit počet",count:"Počet",status:"Stav",select_a_status:"Vyberte stav",working:"Pracuje",on_hold:"Čekající",complete:"Dokončeno",add_tax:"Přidat daň",amount:"Množství",action:"Akce",notes:"Poznámky",view:"Zobrazit",basic_info:"Základní informace",send_invoice:"Odeslat opakující se fakturu",auto_send:"Automaticky odeslat",resend_invoice:"Znovu odeslat opakující se fakturu",invoice_template:"Šablona opakující se faktury",conversion_message:"Opakující se faktura byla úspěšně naklonována",template:"Šablona",mark_as_sent:"Označit jako odeslané",confirm_send_invoice:"Tato opakující se faktura bude odeslána e-mailem zákazníkovi",invoice_mark_as_sent:"Tato opakující se faktura bude označena jako odeslaná",confirm_send:"Tato opakující se faktura bude odeslána e-mailem zákazníkovi",starts_at:"Počáteční datum",due_date:"Splatnost faktury",record_payment:"Zaznamenat platbu",add_new_invoice:"Přidat novou opakující se fakturu",update_expense:"Aktualizovat výdaje",edit_invoice:"Upravit opakující se fakturu",new_invoice:"Přidat novou opakující se fakturu",send_automatically:"Odeslat automaticky",send_automatically_desc:"Povolte, pokud chcete automaticky odeslat fakturu zákazníkovi po jejím vytvoření.",save_invoice:"Uložit opakující se fakturu",update_invoice:"Upravit opakující se fakturu",add_new_tax:"Přidat novou daň",no_invoices:"Zatím žádné opakující se faktury!",mark_as_rejected:"Označit jako odmítnuté",mark_as_accepted:"Označit jako přijaté",list_of_invoices:"Tato sekce bude obsahovat seznam opakujících se faktur.",select_invoice:"Vybrat fakturu",no_matching_invoices:"Neexistují žádné odpovídající opakující se faktury!",mark_as_sent_successfully:"Opakující se faktura označena jako úspěšně odeslaná",invoice_sent_successfully:"Opakující se faktura byla úspěšně odeslána",cloned_successfully:"Opakující se faktura úspěšně naklonována",clone_invoice:"Naklonovat opakující se fakturu",confirm_clone:"Tato opakující se faktura bude naklonována do nové opakující se faktury",add_customer_email:"Pro automatické odesílání faktur prosím přidejte e-mailovou adresu tohoto zákazníka.",item:{title:"Název položky",description:"Popis",quantity:"Množství",price:"Cena",discount:"Sleva",total:"Celkem",total_discount:"Celková sleva",sub_total:"Mezisoučet",tax:"Daň",amount:"Množství",select_an_item:"Pište nebo klikněte pro výběr položky",type_item_description:"Zadejte popis položky (volitelné)"},frequency:{title:"Četnost",select_frequency:"Vybrat četnost",minute:"Minuta",hour:"Hodina",day_month:"Den v měsíci",month:"Měsíc",day_week:"Den v týdnu"},confirm_delete:"Nebudete moci obnovit tuto fakturu | Nebudete moci obnovit tyto faktury",created_message:"Opakující se faktura byla úspěšně vytvořena",updated_message:"Opakující se faktura úspěšně upravena",deleted_message:"Opakující se faktura úspěšně smazána | Opakující se faktury úspěšně odstraněny",marked_as_sent_message:"Opakující se faktura označena jako úspěšně odeslána",user_email_does_not_exist:"E-mail uživatele neexistuje",something_went_wrong:"něco se nezdařilo",invalid_due_amount_message:"Celková částka opakované faktury nemůže být nižší než celková částka zaplacená za tuto opakující se fakturu. Pro pokračování aktualizujte fakturu nebo odstraňte související platby."},xU={title:"Platby",payments_list:"Seznam plateb",record_payment:"Zaznamenat platbu",customer:"Zákazník",date:"Datum",amount:"Množství",action:"Akce",payment_number:"Číslo platby",payment_mode:"Platební metoda",invoice:"Faktura",note:"Poznámka",add_payment:"Přidat platbu",new_payment:"Nová platba",edit_payment:"Upravit platbu",view_payment:"Zobrazit platbu",add_new_payment:"Přidat novou platbu",send_payment_receipt:"Odeslat potvrzení o platbě",send_payment:"Odeslat platbu",save_payment:"Uložit platbu",update_payment:"Upravit platbu",payment:"Platba | Platby",no_payments:"Zatím žádné platby!",not_selected:"Nevybráno",no_invoice:"Žádná faktura",no_matching_payments:"Neexistují žádné odpovídající platby!",list_of_payments:"Tato sekce bude obsahovat seznam plateb.",select_payment_mode:"Vyberte platební metodu",confirm_mark_as_sent:"Tento odhad bude označen jako odeslaný",confirm_send_payment:"Tato platba bude odeslána e-mailem zákazníkovi",send_payment_successfully:"Platba byla úspěšně odeslána",something_went_wrong:"něco se nezdařilo",confirm_delete:"Tuto platbu nebudete moci obnovit | Tyto platby nebudete moci obnovit",created_message:"Platba úspěšně vytvořena",updated_message:"Platba úspěšně upravena",deleted_message:"Platba úspěšně odstraněna | Platby úspěšně odstraněny",invalid_amount_message:"Částka platby je neplatná"},SU={title:"Výdaje",expenses_list:"Seznam výdajů",select_a_customer:"Vyberte zákazníka",expense_title:"Nadpis",customer:"Zákazník",currency:"Měna",contact:"Kontakt",category:"Kategorie",from_date:"Od data",to_date:"Do data",expense_date:"Datum",description:"Popis",receipt:"Doklad",amount:"Částka",action:"Akce",not_selected:"Nevybráno",note:"Poznámka",category_id:"ID kategorie",date:"Datum",add_expense:"Přidat výdaj",add_new_expense:"Přidat nový výdaj",save_expense:"Uložit výdaj",update_expense:"Upravit výdaj",download_receipt:"Stáhnout doklad",edit_expense:"Upravit výdaj",new_expense:"Nový výdaj",expense:"Výdaj | Výdaje",no_expenses:"Zatím žádné výdaje!",list_of_expenses:"Tato sekce bude obsahovat seznam výdajů.",confirm_delete:"Nebudete moci obnovit tento výdaj | Nebudete moci obnovit tyto výdaje",created_message:"Výdaj úspěšně vytvořen",updated_message:"Výdaj úspěšně aktualizován",deleted_message:"Výdaj byl úspěšně odstraněn | Výdaje byly úspěšně odstraněny",categories:{categories_list:"Seznam kategorií",title:"Nadpis",name:"Název",description:"Popis",amount:"Množství",actions:"Akce",add_category:"Přidat kategorii",new_category:"Nová kategorie",category:"Kategorie | Kategorie",select_a_category:"Vyberte kategorii"}},PU={email:"E-mail",password:"Heslo",forgot_password:"Zapomněli jste heslo?",or_signIn_with:"nebo se přihlašte pomocí",login:"Přihlášení",register:"Registrace",reset_password:"Obnovit heslo",password_reset_successfully:"Obnovení hesla proběhlo úspěšně",enter_email:"Zadejte e-mail",enter_password:"Zadejte heslo",retype_password:"Zadejte heslo znovu"},EU={buy_now:"Koupit",install:"Instalovat",price:"Cena",download_zip_file:"Stáhnout soubor ZIP",unzipping_package:"Rozbalování balíku",copying_files:"Kopírování souborů",deleting_files:"Odstraňování nepoužitých souborů",completing_installation:"Dokončování instalace",update_failed:"Aktualizace se nezdařila",install_success:"Modul byl úspěšně nainstalován!",customer_reviews:"Recenze",license:"Licence",faq:"Často kladené dotazy (FAQ)",monthly:"Měsíčně",yearly:"Ročně",updated:"Aktualizováno",version:"Verze",disable:"Zakázat",module_disabled:"Modul zakázán",enable:"Povolit",module_enabled:"Modul povolen",update_to:"Aktualizovat na",module_updated:"Modul byl úspěšně aktualizován!",title:"Moduly",module:"Modul | Moduly",api_token:"API token",invalid_api_token:"Neplatný API token.",other_modules:"Další moduly",view_all:"Zobrazit vše",no_reviews_found:"Pro tento modul zatím neexistují žádné recenze!",module_not_purchased:"Modul není zakoupený",module_not_found:"Modul nebyl nalezen",version_not_supported:"This module version doesn't support the current version of InvoiceShelf",last_updated:"Naposledy aktualizováno",connect_installation:"Připojte vaši instalaci",api_token_description:"Přihlaste se k {url} a připojte tuto instalaci zadáním API tokenu. Vaše zakoupené moduly se zde zobrazí po navázání připojení.",view_module:"Zobrazit modul",update_available:"Je k dispozici aktualizace",purchased:"Zakoupeno",installed:"Nainstalováno",no_modules_installed:"Nejsou nainstalovány žádné moduly!",disable_warning:"Všechna nastavení pro tuto konkrétní položku budou vrácena zpět.",what_you_get:"Co získáte"},zU={title:"Uživatelé",users_list:"Seznam uživatelů",name:"Jméno",description:"Popis",added_on:"Přidáno dne",date_of_creation:"Datum vytvoření",action:"Akce",add_user:"Přidat uživatele",save_user:"Uložit uživatele",update_user:"Upravit uživatele",user:"Uživatel | Uživatelé",add_new_user:"Přidat nového uživatele",new_user:"Nový uživatel",edit_user:"Upravit uživatele",no_users:"Zatím žádní uživatelé!",list_of_users:"Tato sekce bude obsahovat seznam uživatelů.",email:"E-mail",phone:"Telefon",password:"Heslo",user_attached_message:"Nelze odstranit položku, která se již používá",confirm_delete:"Nebudete moci obnovit tohoto uživatele | Nebudete schopni obnovit tyto uživatele",created_message:"Uživatel byl úspěšně vytvořen",updated_message:"Uživatel byl úspěšně upraven",deleted_message:"Uživatel byl úspěšně odstraněn | Uživatelé byli úspěšně odstraněni",select_company_role:"Vyberte roli pro {company}",companies:"Společnosti"},AU={title:"Hlášení",from_date:"Datum od",to_date:"Do data",status:"Stav",paid:"Zaplaceno",unpaid:"Nezaplaceno",download_pdf:"Stáhnout PDF",view_pdf:"Zobrazit PDF",update_report:"Upravit hlášení",report:"Hlášení | Hlášení",profit_loss:{profit_loss:"Zisk a ztráta",to_date:"Do data",from_date:"Od data",date_range:"Vybrat časový rozsah"},sales:{sales:"Prodeje",date_range:"Vybrat časový rozsah",to_date:"Do data",from_date:"Od data",report_type:"Typ hlášení"},taxes:{taxes:"Daně",to_date:"Do data",from_date:"Od data",date_range:"Vybrat časový rozsah"},errors:{required:"Pole je povinné"},invoices:{invoice:"Faktura",invoice_date:"Datum fakturace",due_date:"Datum splatnosti",amount:"Množství",contact_name:"Jméno kontaktu",status:"Stav"},estimates:{estimate:"Odhad",estimate_date:"Datum odhadu",due_date:"Datum splatnosti",estimate_number:"Číslo odhadu",ref_number:"Referenční číslo",amount:"Množství",contact_name:"Jméno kontaktu",status:"Stav"},expenses:{expenses:"Výdaje",category:"Kategorie",date:"Datum",amount:"Množství",to_date:"Do data",from_date:"Od data",date_range:"Vyberte rozsah data"}},CU={menu_title:{account_settings:"Nastavení účtu",company_information:"Informace o společnosti",customization:"Přizpůsobení",preferences:"Preference",notifications:"Oznámení",tax_types:"Typy daní",expense_category:"Kategorie výdajů",update_app:"Aktualizace aplikace",backup:"Zálohování",file_disk:"Souborový disk",custom_fields:"Vlastní pole",payment_modes:"Způsoby plateb",notes:"Poznámky",exchange_rate:"Směnný kurz",address_information:"Adresa"},address_information:{section_description:" Adresu můžete aktualizovat pomocí formuláře níže."},title:"Nastavení",setting:"Nastavení | Nastavení",general:"Obecné",language:"Jazyk",primary_currency:"Primární měna",timezone:"Časová zóna",date_format:"Formát data",currencies:{title:"Měny",currency:"Měna | Měny",currencies_list:"Seznam měn",select_currency:"Vyberte měnu",name:"Název",code:"Kód",symbol:"Symbol",precision:"Přesnost",thousand_separator:"Oddělovač tisíců",decimal_separator:"Oddělovač desetinných míst",position:"Umístění",position_of_symbol:"Umístění symbolu",right:"Vpravo",left:"Vlevo",action:"Akce",add_currency:"Přidat měnu"},mail:{host:"Hostitel e-mailu",port:"Port e-mailu",driver:"Ovladač e-mailů",secret:"Tajný klíč",mailgun_secret:"Mailgun Secret",mailgun_domain:"Doména",mailgun_endpoint:"Mailgun Endpoint",ses_secret:"SES Secret",ses_key:"SES Key",password:"E-mailové heslo",username:"Uživatelské jméno pro e-mail",mail_config:"Konfigurace e-mailu",from_name:"Jméno odesílatele",from_mail:"Z e-mailové adresy",encryption:"Šifrování e-mailu",mail_config_desc:"Níže je uveden formulář pro konfiguraci e-mailového ovladače pro odesílání e-mailů z aplikace. Můžete také nakonfigurovat poskytovatele třetích stran, jako je Sendgrid, SES atd."},pdf:{title:"Nastavení PDF",footer_text:"Text zápatí",pdf_layout:"Rozvržení PDF"},company_info:{company_info:"Údaje o společnosti",company_name:"Název společnosti",company_logo:"Logo společnosti",section_description:"Informace o vaší společnosti, která bude zobrazena na fakturách, odhadech a dalších dokladech vytvořených v InvoiceShelfu.",phone:"Telefon",country:"Země",state:"Stát",city:"Město",address:"Adresa",zip:"PSČ",save:"Uložit",delete:"Smazat",updated_message:"Informace o společnosti byly úspěšně aktualizovány",delete_company:"Odstranit společnost",delete_company_description:"Jakmile svou společnost odstraníte, trvale přijdete o všechna data a soubory s ní spojené.",are_you_absolutely_sure:"Jste si opravdu jisti?",delete_company_modal_desc:"Tuto akci nelze vrátit zpět. Tato akce trvale odstraní {company} a všechna související data.",delete_company_modal_label:"Zadejte prosím {company} pro potvrzení"},custom_fields:{title:"Vlastní pole",section_description:"Přizpůsobte si své faktury, odhady a potvrzení o platbě podle vlastních polí. Ujistěte se, že používáte níže přidaná pole ve formátu adresy na stránce pro přizpůsobení.",add_custom_field:"Přidat vlastní pole",edit_custom_field:"Upravit vlastní pole",field_name:"Název pole",label:"Popis",type:"Typ",name:"Jméno",slug:"Pahýl",required:"Povinné",placeholder:"Zástupný text",help_text:"Text nápovědy",default_value:"Výchozí hodnota",prefix:"Prefix",starting_number:"Počáteční číslo",model:"Model",help_text_description:"Zadejte nějaký text, který pomůže uživatelům pochopit účel tohoto vlastního pole.",suffix:"Sufix",yes:"Ano",no:"Ne",order:"Pořadí",custom_field_confirm_delete:"Nebudete moci obnovit toto vlastní pole",already_in_use:"Vlastní pole je již používáno",deleted_message:"Vlastní pole bylo úspěšně odstraněno",options:"možnosti",add_option:"Přidat možnosti",add_another_option:"Přidat další možnost",sort_in_alphabetical_order:"Řadit v abecedním pořadí",add_options_in_bulk:"Přidat možnosti hromadně",use_predefined_options:"Použít předdefinované možnosti",select_custom_date:"Vyberte vlastní datum",select_relative_date:"Vyberte relativní datum",ticked_by_default:"Ve výchozím nastavení zaškrtnuto",updated_message:"Vlastní pole bylo úspěšně upraveno",added_message:"Vlastní pole bylo úspěšně přidáno",press_enter_to_add:"Stiskněte Enter pro přidání nové možnosti",model_in_use:"Nelze aktualizovat model pro pole, která jsou již používána.",type_in_use:"Nelze aktualizovat typ pro pole, která jsou již používána."},customization:{customization:"přizpůsobení",updated_message:"Informace o společnosti byly úspěšně aktualizovány",save:"Uložit",insert_fields:"Vložit pole",learn_custom_format:"Zjistěte, jak používat vlastní formát",add_new_component:"Přidat novou komponentu",component:"Komponenty",Parameter:"Parametr",series:"Řada",series_description:"Pro nastavení statického prefixu/postfixu jako 'INV' napříč vaší společností. Podporuje délku až 4 znaky.",series_param_label:"Hodnota řady",delimiter:"Oddělovač",delimiter_description:"Jeden znak pro určení hranice mezi 2 samostatnými komponentami. Ve výchozím nastavení je nastaveno na -",delimiter_param_label:"Hodnota oddělovače",date_format:"Formát data",date_format_description:"Pole pro formát místní data a času. Výchozí formát: 'Y' vykresluje aktuální rok.",date_format_param_label:"Formát",sequence:"Sekvence",sequence_description:"Po sobě jdoucí posloupnost čísel ve vaší společnosti. Můžete určit délku daného parametru.",sequence_param_label:"Délka sekvence",customer_series:"Řada zákazníků",customer_series_description:"Možnost nastavit jiný prefix/postfix pro každého zákazníka.",customer_sequence:"Sekvence zákazníků",customer_sequence_description:"Po sobě jdoucí posloupnost čísel pro každého zákazníka.",customer_sequence_param_label:"Délka sekvence",random_sequence:"Náhodná sekvence",random_sequence_description:"Náhodný alfanumerický řetězec. Můžete určit délku daného parametru.",random_sequence_param_label:"Délka sekvence",invoices:{title:"Faktury",invoice_number_format:"Formát čísla faktury",invoice_number_format_description:"Přizpůsobte si, jak bude vaše číslo faktury automaticky generováno při vytváření nové faktury.",preview_invoice_number:"Náhled čísla faktury",due_date:"Datum splatnosti",due_date_description:"Určete, jak se automaticky nastavuje datum splatnosti vytváření faktury.",due_date_days:"Splatnost faktury po dnech",set_due_date_automatically:"Automaticky nastavit datum splatnosti",set_due_date_automatically_description:"Povolte, pokud chcete nastavit datum splatnosti automaticky při vytvoření nové faktury.",default_formats:"Výchozí formáty",default_formats_description:"Níže uvedené formáty se používají k automatickému vyplnění polí při vytváření faktury.",default_invoice_email_body:"Výchozí text e-mailu pro faktury",company_address_format:"Formát adresy společnosti",shipping_address_format:"Formát doručovací adresy",billing_address_format:"Formát fakturační adresy",invoice_email_attachment:"Odesílat faktury jako přílohy",invoice_email_attachment_setting_description:"Povolte, pokud chcete odesílat faktury jako přílohy e-mailu. Vezměte prosím na vědomí, že tlačítko 'Zobrazit fakturu' v e-mailech se již nezobrazí, pokud je povoleno.",invoice_settings_updated:"Nastavení faktur bylo úspěšně upraveno",retrospective_edits:"Zpětné úpravy",allow:"Povolit",disable_on_invoice_partial_paid:"Zakázat po zaznamenání částečné platby",disable_on_invoice_paid:"Vypnout po zaplacení plné platby",disable_on_invoice_sent:"Vypnout po odeslání faktury",retrospective_edits_description:" Na základě zákonů vaší země nebo vašich preferencí můžete uživatelům bránit v úpravě dokončených faktur."},estimates:{title:"Odhady",estimate_number_format:"Formát čísla odhadu",estimate_number_format_description:"Přizpůsobte si, jak bude vaše číslo odhadu automaticky generováno, při vytváření nového odhadu.",preview_estimate_number:"Náhled čísla odhadu",expiry_date:"Datum expirace",expiry_date_description:"Určete, jak se automaticky nastavuje datum expirace při vytváření odhadu.",expiry_date_days:"Platnost odhadu vyprší za dny",set_expiry_date_automatically:"Automaticky nastavit datum expirace",set_expiry_date_automatically_description:"Povolte, pokud chcete nastavit datum expirace automaticky při vytvoření nového odhadu.",default_formats:"Výchozí formáty",default_formats_description:"Níže uvedené formáty se používají k automatickému vyplnění polí při vytváření odhadu.",default_estimate_email_body:"Výchozí text e-mailu pro odhady",company_address_format:"Formát adresy společnosti",shipping_address_format:"Formát doručovací adresy",billing_address_format:"Formát fakturační adresy",estimate_email_attachment:"Odeslat odhady jako přílohy",estimate_email_attachment_setting_description:"Povolte, pokud chcete odesílat odhady jako přílohy e-mailu. Vezměte prosím na vědomí, že tlačítko 'Zobrazit odhad' v e-mailech se již nezobrazí, pokud je povoleno.",estimate_settings_updated:"Nastavení odhadů úspěšně upraveno",convert_estimate_options:"Akce konverze odhadu",convert_estimate_description:"Určete, co se stane s odhadem poté, co se převede na fakturu.",no_action:"Žádná akce",delete_estimate:"Odstranit odhad",mark_estimate_as_accepted:"Označit odhad za přijatý"},payments:{title:"Platby",payment_number_format:"Formát čísel plateb",payment_number_format_description:"Přizpůsobte si, jak se bude číslo platby automaticky generovat, když vytvoříte novou platbu.",preview_payment_number:"Náhled čísla platby",default_formats:"Výchozí formáty",default_formats_description:"Níže uvedené formáty se používají k automatickému vyplnění polí při vytváření plateb.",default_payment_email_body:"Výchozí text e-mailu platby",company_address_format:"Formát adresy společnosti",from_customer_address_format:"Z formátu adresy zákazníka",payment_email_attachment:"Odesílat platby jako přílohy",payment_email_attachment_setting_description:"Povolte, pokud chcete odeslat potvrzení o platbě jako přílohu e-mailu. Vezměte prosím na vědomí, že tlačítko 'Zobrazit platbu' v e-mailech se již nebude zobrazovat, pokud je povoleno.",payment_settings_updated:"Nastavení plateb bylo úspěšně upraveno"},items:{title:"Položky",units:"Jednotky",add_item_unit:"Přidat jednotku položky",edit_item_unit:"Upravit jednotku položky",unit_name:"Název jednotky",item_unit_added:"Jednotka položky přidána",item_unit_updated:"Jednotka položky upravena",item_unit_confirm_delete:"Nebudete moci obnovit tuto jednotku položky",already_in_use:"Jednotka položky se již používá",deleted_message:"Jednotka položky byla úspěšně odstraněna"},notes:{title:"Poznámky",description:"Ušetřete čas vytvořením poznámek a jejich opětovným použitím na fakturách, odhadech a platbách.",notes:"Poznámky",type:"Typ",add_note:"Přidat poznámku",add_new_note:"Přidat novou poznámku",name:"Jméno",edit_note:"Upravit poznámku",note_added:"Poznámka úspěšně přidána",note_updated:"Poznámka úspěšně upravena",note_confirm_delete:"Nebudete moci obnovit tuto poznámku",already_in_use:"Poznámka je již používána",deleted_message:"Poznámka byla úspěšně smazána"}},account_settings:{profile_picture:"Profilový obrázek",name:"Jméno",email:"E-mail",password:"Heslo",confirm_password:"Potvrdit heslo",account_settings:"Nastavení účtu",save:"Uložit",section_description:"Své jméno, e-mail a heslo můžete aktualizovat pomocí formuláře níže.",updated_message:"Nastavení účtu bylo úspěšně aktualizováno"},user_profile:{name:"Jméno",email:"E-mail",password:"Heslo",confirm_password:"Potvrzení hesla"},notification:{title:"Oznámení",email:"Posílat oznámení na",description:"Která e-mailová oznámení chcete dostávat, když se něco změní?",invoice_viewed:"Faktura zobrazena",invoice_viewed_desc:"Když si váš zákazník zobrazí fakturu odeslánou přes hlavní panel InvoiceShelfu.",estimate_viewed:"Odhad zobrazen",estimate_viewed_desc:"Když si váš zákazník zobrazí odhad odeslaný přes hlavní panel InvoiceShelfu.",save:"Uložit",email_save_message:"E-mail úspěšně uložen",please_enter_email:"Prosím, zadejte e-mail"},roles:{title:"Role",description:"Správa rolí a oprávnění této společnosti",save:"Uložit",add_new_role:"Přidat novou roli",role_name:"Název role",added_on:"Přidáno dne",add_role:"Přidat roli",edit_role:"Upravit roli",name:"Název",permission:"Oprávnění | Oprávnění",select_all:"Vybrat vše",none:"Žádné",confirm_delete:"Nebudete moci obnovit tuto roli",created_message:"Role byla úspěšně vytvořena",updated_message:"Role úspěšně změněna",deleted_message:"Role úspěšně odstraněna",already_in_use:"Role je již používána"},exchange_rate:{exchange_rate:"Směnný kurz",title:"Opravit problémy se směnným kurzem",description:"Zadejte prosím směnný kurz všech níže uvedených měn, abyste pomohli InvoiceShelfu správně vypočítat částky v {currency}.",drivers:"Ovladače",new_driver:"Přidat nového poskytovatele",edit_driver:"Upravit poskytovatele",select_driver:"Vybrat ovladač",update:"vybrat směnný kurz ",providers_description:"Nakonfigurujte zde poskytovatele směnných kurzů, aby automaticky načítali nejnovější směnný kurz u transakcí.",key:"API klíč",name:"Název",driver:"Ovladač",is_default:"JE VÝCHOZÍ",currency:"Měny",exchange_rate_confirm_delete:"Nebudete moci obnovit tento ovladač",created_message:"Poskytovatel úspěšně vytvořen",updated_message:"Poskytovatel úspěšně upraven",deleted_message:"Poskytovatel úspěšně odstraněn",error:" Aktivní ovladač nelze odstranit",default_currency_error:"Tato měna je již používána v jednom z aktivních poskytovatelů",exchange_help_text:"Zadejte směnný kurz pro převod z {currency} do {baseCurrency}",currency_freak:"Currency Freak",currency_layer:"Currency Layer",open_exchange_rate:"Otevřít směnný kurz",currency_converter:"Převodník měn",server:"Server",url:"URL",active:"Aktivní",currency_help_text:"Tento poskytovatel bude použit pouze na výše vybraných měnách",currency_in_used:"Následující měny jsou již aktivní u jiného poskytovatele. Odstraňte tyto měny z výběru a znovu aktivujte tohoto poskytovatele."},tax_types:{title:"Typy daní",add_tax:"Přidat daň",edit_tax:"Upravit daň",description:"Můžete přidat nebo odebrat daně, jak chcete. InvoiceShelf podporuje daně z jednotlivých položek i z celé faktury.",add_new_tax:"Přidat novou daň",tax_settings:"Nastavení daně",tax_per_item:"Daň za položku",tax_name:"Název daně",compound_tax:"Složená daň",percent:"Procento",action:"Akce",tax_setting_description:"Povolte, pokud chcete přidat daně k jednotlivým položkám faktury. Ve výchozím nastavení jsou daně přidány přímo na fakturu.",created_message:"Typ daně úspěšně vytvořen",updated_message:"Typ daně úspěšně upraven",deleted_message:"Typ daně úspěšně odstraněn",confirm_delete:"Tento typ daně nebudete moci obnovit",already_in_use:"Daň se již používá"},payment_modes:{title:"Platební metody",description:"Platební metody transakcí pro platby",add_payment_mode:"Přidat platební metodu",edit_payment_mode:"Upravit platební metodu",mode_name:"Název metody",payment_mode_added:"Platební metoda přidána",payment_mode_updated:"Platební metoda upravena",payment_mode_confirm_delete:"Nebudete moci obnovit tuto platební metodu",payments_attached:"Tento způsob platby je již připojen k platbám. Chcete-li pokračovat v odstranění, odstraňte připojené platby.",expenses_attached:"Tento způsob platby je již připojen k výdajům. Chcete-li pokračovat v odstranění, odstraňte připojené výdaje.",deleted_message:"Platební metoda byla úspěšně odstraněna"},expense_category:{title:"Kategorie výdajů",action:"Akce",description:"Kategorie jsou vyžadovány pro přidání výdajových položek. Můžete přidat nebo odebrat tyto kategorie podle vašich preferencí.",add_new_category:"Přidat novou kategorii",add_category:"Přidat kategorii",edit_category:"Upravit Kategorii",category_name:"Název kategorie",category_description:"Popis",created_message:"Kategorie výdajů úspěšně vytvořena",deleted_message:"Kategorie výdajů úspěšně odstraněna",updated_message:"Kategorie výdajů úspěšně upravena",confirm_delete:"Nebudete moci obnovit tuto kategorii výdajů",already_in_use:"Kategorie se již používá"},preferences:{currency:"Měna",default_language:"Výchozí jazyk",time_zone:"Časové pásmo",fiscal_year:"Fiskální rok",date_format:"Formát data",discount_setting:"Nastavení slev",discount_per_item:"Sleva za položku ",discount_setting_description:"Povolte tuto možnost, pokud chcete přidat slevu do jednotlivých položek faktury. Ve výchozím nastavení je sleva přidána přímo na fakturu.",expire_public_links:"Automaticky zrušit platnost veřejných odkazů",expire_setting_description:"Určete, zda chcete zrušit všechny odkazy odeslané aplikací k zobrazení faktur, odhadů, plateb atd. po stanovené době trvání.",save:"Uložit",preference:"Předvolba | Předvolby",general_settings:"Výchozí předvolby systému.",updated_message:"Předvolby úspěšně upraveny",select_language:"Vyberte jazyk",select_time_zone:"Vyberte časové pásmo",select_date_format:"Vyberte formát data",select_financial_year:"Vyberte fiskální rok",recurring_invoice_status:"Stav opakující se faktury",create_status:"Vytvořit stav",active:"Aktivní",on_hold:"Čekající",update_status:"Upravit stav",completed:"Dokončeno",company_currency_unchangeable:"Měnu společnosti nelze měnit"},update_app:{title:"Aktualizace aplikace",description:"Kliknutím na tlačítko níže můžete jednoduše aktualizovat InvoiceShelf",check_update:"Zkontrolovat aktualizace",avail_update:"K dispozici je nová aktualizace",next_version:"Další verze",requirements:"Požadavky",update:"Aktualizovat teď",update_progress:"Probíhá aktualizace...",progress_text:"Bude to trvat jen několik minut. Neobnovujte obrazovku ani nezavírejte okno před dokončením aktualizace",update_success:"Aplikace byla aktualizována! Počkejte prosím, než se okno prohlížeče automaticky znovu načte.",latest_message:"Žádná aktualizace není k dispozici! Jste na nejnovější verzi.",current_version:"Aktuální verze",download_zip_file:"Stáhnout soubor ZIP",unzipping_package:"Rozbalování balíku",copying_files:"Kopírování souborů",deleting_files:"Odstraňování nepoužitých souborů",running_migrations:"Spouštění migrací",finishing_update:"Dokončování aktualizace",update_failed:"Aktualizace se nezdařila",update_failed_text:"Omlouváme se! Aktualizace se nezdařila v {step}. kroku",update_warning:"Všechny soubory aplikace a výchozí soubory šablon budou přepsány při aktualizaci aplikace pomocí tohoto nástroje. Před aktualizací si prosím zálohujte šablony a databázi."},backup:{title:"Záloha | Zálohy",description:"Záloha je soubor ZIP, který obsahuje všechny soubory ve složkách, které zadáte spolu s kopií vaší databáze",new_backup:"Přidat novou zálohu",create_backup:"Vytvořit zálohu",select_backup_type:"Vyberte typ zálohy",backup_confirm_delete:"Tuto zálohu nebudete moci obnovit",path:"cesta",new_disk:"Nový disk",created_at:"vytvořeno v",size:"velikost",dropbox:"dropbox",local:"místní",healthy:"zdravý",amount_of_backups:"počet záloh",newest_backups:"nejnovější zálohy",used_storage:"využité úložiště",select_disk:"Vyberte disk",action:"Akce",deleted_message:"Záloha úspěšně odstraněna",created_message:"Záloha byla úspěšně vytvořena",invalid_disk_credentials:"Nesprávné přihlašovací údaje pro vybraný disk"},disk:{title:"Souborový disk | Souborové disky",description:"Ve výchozím nastavení bude InvoiceShelf používat váš lokální disk pro ukládání záloh, avataru a dalších obrázků. Podle vašich preferencí můžete nakonfigurovat více než jeden ovladač disku, jako je DigitalOcean, S3 nebo Dropbox.",created_at:"vytvořeno v",dropbox:"dropbox",name:"Název",driver:"Ovladač",disk_type:"Typ",disk_name:"Název disku",new_disk:"Přidat nový disk",filesystem_driver:"Ovladač souborového systému",local_driver:"místní ovladač",local_root:"místní kořenový adresář",public_driver:"Veřejný ovladač",public_root:"Veřejný kořenový adresář",public_url:"Veřejná adresa URL",public_visibility:"Veřejná viditelnost",media_driver:"Ovladač médií",media_root:"Kořenový adresář medií",aws_driver:"AWS ovladač",aws_key:"AWS Key",aws_secret:"AWS Secret",aws_region:"AWS Region",aws_bucket:"AWS Bucket",aws_root:"AWS Root",do_spaces_type:"Do Spaces type",do_spaces_key:"Do Spaces key",do_spaces_secret:"Do Spaces Secret",do_spaces_region:"Do Spaces Region",do_spaces_bucket:"Do Spaces Bucket",do_spaces_endpoint:"Do Spaces Endpoint",do_spaces_root:"Do Spaces Root",dropbox_type:"Dropbox Type",dropbox_token:"Dropbox Token",dropbox_key:"Dropbox Key",dropbox_secret:"Dropbox Secret",dropbox_app:"Dropbox App",dropbox_root:"Dropbox Root",default_driver:"Výchozí ovladač",is_default:"JE VÝCHOZÍ",set_default_disk:"Nastavit výchozí disk",set_default_disk_confirm:"Tento disk bude nastaven jako výchozí a všechny nové PDF budou uloženy na tomto disku",success_set_default_disk:"Disk úspěšně nastaven jako výchozí",save_pdf_to_disk:"Ukládat PDF na disk",disk_setting_description:" Povolte, pokud chcete automaticky uložit kopii PDF každé faktury, odhadu a potvrzení o platbě. Zapnutí této možnosti sníží dobu načítání při prohlížení PDF.",select_disk:"Vyberte disk",disk_settings:"Nastavení disku",confirm_delete:"Vaše existující soubory a složky na určeném disku nebudou ovlivněny, ale konfigurace disku bude odstraněna z InvoiceShelfu",action:"Akce",edit_file_disk:"Upravit souborový disk",success_create:"Disk byl úspěšně přidán",success_update:"Disk úspěšně upraven",error:"Přidání disku se nezdařilo",deleted_message:"Souborový disk úspěšně smazán",disk_variables_save_successfully:"Disk úspěšně nakonfigurován",disk_variables_save_error:"Konfigurace disku selhala.",invalid_disk_credentials:"Nesprávné přihlašovací údaje pro vybraný disk"},taxations:{add_billing_address:"Zadejte fakturační adresu",add_shipping_address:"Zadejte doručovací adresu",add_company_address:"Zadejte adresu firmy",modal_description:"Níže uvedené informace jsou vyžadovány pro načtení daně z prodeje.",add_address:"Přidat adresu pro načtení daně z prodeje.",address_placeholder:"Například: Moje Ulice 123",city_placeholder:"Například: Praha",state_placeholder:"Například: CZ",zip_placeholder:"Například: 90024",invalid_address:"Zadejte prosím platnou adresu."}},TU={account_info:"Informace o účtu",account_info_desc:"Níže uvedené údaje budou použity k vytvoření hlavního účtu správce. Také můžete změnit podrobnosti kdykoliv po přihlášení.",name:"Jméno",email:"E-mail",password:"Heslo",confirm_password:"Potvrdit heslo",save_cont:"Uložit a pokračovat",company_info:"Informace o společnosti",company_info_desc:"Tyto informace budou zobrazeny na fakturách. Později je můžete upravit na stránce s nastavením.",company_name:"Název společnosti",company_logo:"Logo společnosti",logo_preview:"Náhled loga",preferences:"Předvolby společnosti",preferences_desc:"Zadejte výchozí předvolby pro tuto společnost.",currency_set_alert:"Měnu společnosti nelze později změnit.",country:"Země",state:"Stát",city:"Město",address:"Adresa",street:"Ulice1 | Ulice2",phone:"Telefon",zip_code:"PSČ",go_back:"Jít zpět",currency:"Měna",language:"Jazyk",time_zone:"Časové pásmo",fiscal_year:"Fiskální rok",date_format:"Formát data",from_address:"Z adresy",username:"Uživatelské jméno",next:"Další",continue:"Pokračovat",skip:"Přeskočit",database:{database:"URL webu a databáze",connection:"Připojení k databázi",host:"Host databáze",port:"Port databáze",password:"Heslo do databáze",app_url:"URL aplikace",app_domain:"Doména aplikace",username:"Uživatelské jméno k databázi",db_name:"Název databáze",db_path:"Cesta k databázi",desc:"Vytvořte databázi na svém serveru a nastavte přihlašovací údaje pomocí níže uvedeného formuláře."},permissions:{permissions:"Oprávnění",permission_confirm_title:"Opravdu chcete pokračovat?",permission_confirm_desc:"Kontrola oprávnění složky selhala",permission_desc:"Níže je seznam oprávnění složek, která jsou vyžadována, aby aplikace pracovala. Pokud kontrola oprávnění selže, aktualizujte oprávnění daných složek."},verify_domain:{title:"Ověření domény",desc:"InvoiceShelf používá ověření na základě relace, které vyžaduje ověření domény pro účely zabezpečení. Zadejte prosím doménu, na které budete přistupovat ke své webové aplikaci.",app_domain:"Doména aplikace",verify_now:"Ověřit teď",success:"Ověření domény bylo úspěšné.",failed:"Ověření domény se nezdařilo. Zadejte prosím platný název domény.",verify_and_continue:"Ověřit a pokračovat"},mail:{host:"Hostitel e-mailu",port:"Port e-mailu",driver:"Ovladač e-mailů",secret:"Secret",mailgun_secret:"Mailgun Secret",mailgun_domain:"Doména",mailgun_endpoint:"Mailgun Endpoint",ses_secret:"SES Secret",ses_key:"SES Key",password:"E-mailové heslo",username:"Uživatelské jméno e-mailu",mail_config:"Konfigurace e-mailu",from_name:"Jméno odesílatele",from_mail:"Z e-mailové adresy",encryption:"Šifrování e-mailu",mail_config_desc:"Níže je uveden formulář pro konfiguraci e-mailového ovladače pro odesílání e-mailů z aplikace. Můžete také nakonfigurovat poskytovatele třetích stran, jako je Sendgrid, SES atd."},req:{system_req:"Systémové požadavky",php_req_version:"Php (požadovaná verze {version})",check_req:"Zkontrolujte požadavky",system_req_desc:"InvoiceShelf má několik požadavků na server. Ujistěte se, že váš server má požadovanou php verzi a všechna níže uvedená rozšíření."},errors:{migrate_failed:"Migrace se nezdařila",database_variables_save_error:"Nelze zapsat konfiguraci do souboru .env. Zkontrolujte prosím jeho oprávnění",mail_variables_save_error:"Nastavení e-mailu se nezdařilo.",connection_failed:"Spojení s databází se nezdařilo",database_should_be_empty:"Databáze by měla být prázdná"},success:{mail_variables_save_successfully:"E-mail byl úspěšně nastaven",database_variables_save_successfully:"Databáze byla úspěšně nastavena."}},jU={invalid_phone:"Neplatné telefonní číslo",invalid_url:"Neplatná URL (např. http://www.invoiceshelf.com)",invalid_domain_url:"Neplatná URL (např. invoiceshelf.com)",required:"Pole je povinné",email_incorrect:"Nesprávný e-mail.",email_already_taken:"Tento e-mail již byl použit.",email_does_not_exist:"Uživatel s daným e-mailem neexistuje",item_unit_already_taken:"Tento název jednotky je již obsazen",payment_mode_already_taken:"Tento název platební metody již byl použit",send_reset_link:"Zaslat odkaz na obnovení hesla",not_yet:"Ještě ne? Poslat znovu",password_min_length:"Heslo musí obsahovat {count} znaků",name_min_length:"Jméno musí mít alespoň {count} písmen.",prefix_min_length:"Prefix musí mít alespoň {count} písmen.",enter_valid_tax_rate:"Zadejte platnou daňovou sazbu",numbers_only:"Pouze čísla.",characters_only:"Pouze písmena.",password_incorrect:"Hesla musí být stejná",password_length:"Heslo musí být dlouhé {count} znaků.",qty_must_greater_than_zero:"Množství musí být větší než nula.",price_greater_than_zero:"Cena musí být vyšší než nula.",payment_greater_than_zero:"Platba musí být vyšší než nula.",payment_greater_than_due_amount:"Zadaná platba je vyšší než splatná částka této faktury.",quantity_maxlength:"Množství by nemělo být delší než 20 číslic.",price_maxlength:"Cena by neměla být delší než 20 číslic.",price_minvalue:"Cena by měla být větší než 0.",amount_maxlength:"Množství by nemělo být delší než 20 číslic.",amount_minvalue:"Množství by mělo být větší než 0.",discount_maxlength:"Sleva by neměla být vyšší než maximální sleva",description_maxlength:"Popis by neměl být delší než 255 znaků.",subject_maxlength:"Předmět by neměl být delší než 100 znaků.",message_maxlength:"Zpráva by neměla být delší než 255 znaků.",maximum_options_error:"Vybráno maximum z {max} možností. Nejprve odeberte vybranou možnost pro další výběr.",notes_maxlength:"Poznámky by neměly být delší než 65 000 znaků.",address_maxlength:"Adresa by neměla být delší než 255 znaků.",ref_number_maxlength:"Referenční číslo by nemělo být delší než 255 znaků.",prefix_maxlength:"Prefix by neměl být delší než 5 znaků.",something_went_wrong:"něco se nezdařilo",number_length_minvalue:"Délka čísla by měla být větší než 0",at_least_one_ability:"Vyberte prosím alespoň jedno oprávnění.",valid_driver_key:"Zadejte prosím platný {driver} klíč.",valid_exchange_rate:"Zadejte prosím platný směnný kurz.",company_name_not_same:"Název společnosti se musí shodovat se zadaným názvem."},NU={starter_plan:"Tato funkce je k dispozici na Starter Plánu a dále!",invalid_provider_key:"Zadejte prosím platný API klíč poskytovatele.",estimate_number_used:"Číslo odhadu již bylo použito.",invoice_number_used:"Číslo faktury již bylo použito.",payment_attached:"Na této faktuře je již přiložena platba. Abyste mohli pokračovat v odstranění, odstraňtě nejdříve přiložené platby.",payment_number_used:"Číslo platby již bylo použito.",name_already_taken:"Název již byl použit.",receipt_does_not_exist:"Doklad neexistuje.",customer_cannot_be_changed_after_payment_is_added:"Zákazníka nelze měnit po přidání platby",invalid_credentials:"Neplatné přihlašovací údaje.",not_allowed:"Není povoleno",login_invalid_credentials:"Tyto údaje neodpovídají našim záznamům.",enter_valid_cron_format:"Zadejte platný formát cronu",email_could_not_be_sent:"E-mail nemohl být odeslán na tuto e-mailovou adresu.",invalid_address:"Zadejte prosím platnou adresu.",invalid_key:"Zadejte prosím platný klíč.",invalid_state:"Zadejte prosím platný název státu.",invalid_city:"Zadejte prosím platný název města.",invalid_postal_code:"Zadejte prosím platné PSČ.",invalid_format:"Zadejte prosím data v platném formátu.",api_error:"Server neodpovídá.",feature_not_enabled:"Funkce není zapnuta.",request_limit_met:"Limit požadavků API překročen.",address_incomplete:"Neúplná adresa"},IU="Odhad",FU="Číslo odhadu",RU="Datum odhadu",OU="Doba platnosti",MU="Faktura",$U="Číslo faktury",LU="Datum fakturace",BU="Datum splatnosti",UU="Poznámky",VU="Položky",qU="Množství",WU="Cena",HU="Sleva",KU="Množství",YU="Mezisoučet",ZU="Celkem",GU="Platba",QU="DOKLAD O PLATBĚ",JU="Datum platby",XU="Číslo platby",eV="Platební metoda",tV="Obdržená částka",aV="HLÁŠENÍ VÝDAJŮ",nV="VÝDAJE CELKEM",iV="HLÁŠENÍ ZISKU A ZTRÁT",oV="Hlášení o zákaznících prodeje",sV="Hlášení o položkách prodeje",rV="Hlášení o daních",lV="PŘÍJEM",cV="ČISTÝ ZISK",dV="Hlášení o prodeji: Podle zákazníka",uV="PRODEJE CELKEM",_V="Hlášení o prodeji: Podle položky",mV="DAŇOVÉ HLÁŠENÍ",pV="DANĚ CELKEM",fV="Typy daní",hV="Výdaje",gV="Odběratel",vV="Příjemce",yV="Přijato od:",bV="Daň",kV={navigation:_U,general:mU,dashboard:pU,tax_types:fU,global_search:hU,company_switcher:gU,dateRange:vU,customers:yU,items:bU,estimates:kU,invoices:wU,recurring_invoices:DU,payments:xU,expenses:SU,login:PU,modules:EU,users:zU,reports:AU,settings:CU,wizard:TU,validation:jU,errors:NU,pdf_estimate_label:IU,pdf_estimate_number:FU,pdf_estimate_date:RU,pdf_estimate_expire_date:OU,pdf_invoice_label:MU,pdf_invoice_number:$U,pdf_invoice_date:LU,pdf_invoice_due_date:BU,pdf_notes:UU,pdf_items_label:VU,pdf_quantity_label:qU,pdf_price_label:WU,pdf_discount_label:HU,pdf_amount_label:KU,pdf_subtotal:YU,pdf_total:ZU,pdf_payment_label:GU,pdf_payment_receipt_label:QU,pdf_payment_date:JU,pdf_payment_number:XU,pdf_payment_mode:eV,pdf_payment_amount_received_label:tV,pdf_expense_report_label:aV,pdf_total_expenses_label:nV,pdf_profit_loss_label:iV,pdf_sales_customers_label:oV,pdf_sales_items_label:sV,pdf_tax_summery_label:rV,pdf_income_label:lV,pdf_net_profit_label:cV,pdf_customer_sales_report:dV,pdf_total_sales_label:uV,pdf_item_sales_label:_V,pdf_tax_report_label:mV,pdf_total_tax_label:pV,pdf_tax_types_label:fV,pdf_expenses_label:hV,pdf_bill_to:gV,pdf_ship_to:vV,pdf_received_from:yV,pdf_tax_label:bV},wV={dashboard:"Dashboard",customers:"Customers",items:"Items",invoices:"Invoices","recurring-invoices":"Recurring Invoices",expenses:"Expenses",estimates:"Estimates",payments:"Payments",reports:"Reports",settings:"Settings",logout:"Logout",users:"Users",modules:"Modules"},DV={add_company:"Add Company",view_pdf:"View PDF",copy_pdf_url:"Copy PDF Url",download_pdf:"Download PDF",save:"Save",create:"Create",cancel:"Cancel",update:"Update",deselect:"Deselect",download:"Download",from_date:"From Date",to_date:"To Date",from:"From",to:"To",ok:"Ok",yes:"Yes",no:"No",sort_by:"Sort By",ascending:"Ascending",descending:"Descending",subject:"Subject",body:"Body",message:"Message",send:"Send",preview:"Preview",go_back:"Go Back",back_to_login:"Back to Login?",home:"Home",filter:"Filter",delete:"Delete",edit:"Edit",view:"View",add_new_item:"Add New Item",clear_all:"Clear All",showing:"Showing",of:"of",actions:"Actions",subtotal:"SUBTOTAL",discount:"DISCOUNT",fixed:"Fixed",percentage:"Percentage",tax:"TAX",total_amount:"TOTAL AMOUNT",bill_to:"Bill to",ship_to:"Ship to",due:"Due",draft:"Draft",sent:"Sent",all:"All",select_all:"Select All",select_template:"Select Template",choose_file:"Click here to choose a file",choose_template:"Choose a template",choose:"Choose",remove:"Remove",select_a_status:"Select a status",select_a_tax:"Select a tax",search:"Search",are_you_sure:"Are you sure?",list_is_empty:"List is empty.",no_tax_found:"No tax found!",four_zero_four:"404",you_got_lost:"Whoops! You got Lost!",go_home:"Go Home",test_mail_conf:"Test Mail Configuration",send_mail_successfully:"Mail sent successfully",setting_updated:"Setting updated successfully",select_state:"Select state",select_country:"Select Country",select_city:"Select City",street_1:"Street 1",street_2:"Street 2",action_failed:"Action Failed",retry:"Retry",choose_note:"Choose Note",no_note_found:"No Note Found",insert_note:"Insert Note",copied_pdf_url_clipboard:"Copied PDF url to clipboard!",copied_url_clipboard:"Copied url to clipboard!",docs:"Docs",do_you_wish_to_continue:"Do you wish to continue?",note:"Note",pay_invoice:"Pay Invoice",login_successfully:"Logged in successfully!",logged_out_successfully:"Logged out successfully",mark_as_default:"Mark as default"},xV={select_year:"Select year",cards:{due_amount:"Amount Due",customers:"Customers",invoices:"Invoices",estimates:"Estimates",payments:"Payments"},chart_info:{total_sales:"Sales",total_receipts:"Receipts",total_expense:"Expenses",net_income:"Net Income",year:"Select year"},monthly_chart:{title:"Sales & Expenses"},recent_invoices_card:{title:"Due Invoices",due_on:"Due On",customer:"Customer",amount_due:"Amount Due",actions:"Actions",view_all:"View All"},recent_estimate_card:{title:"Recent Estimates",date:"Date",customer:"Customer",amount_due:"Amount Due",actions:"Actions",view_all:"View All"}},SV={name:"Name",description:"Description",percent:"Percent",compound_tax:"Compound Tax"},PV={search:"Search...",customers:"Customers",users:"Users",no_results_found:"No Results Found"},EV={label:"SWITCH COMPANY",no_results_found:"No Results Found",add_new_company:"Add new company",new_company:"New company",created_message:"Company created successfully"},zV={today:"Today",this_week:"This Week",this_month:"This Month",this_quarter:"This Quarter",this_year:"This Year",previous_week:"Previous Week",previous_month:"Previous Month",previous_quarter:"Previous Quarter",previous_year:"Previous Year",custom:"Custom"},AV={title:"Customers",prefix:"Prefix",add_customer:"Add Customer",contacts_list:"Customer List",name:"Name",mail:"Mail | Mails",statement:"Statement",display_name:"Display Name",primary_contact_name:"Primary Contact Name",contact_name:"Contact Name",amount_due:"Amount Due",email:"Email",address:"Address",phone:"Phone",website:"Website",overview:"Overview",invoice_prefix:"Invoice Prefix",estimate_prefix:"Estimate Prefix",payment_prefix:"Payment Prefix",enable_portal:"Enable Portal",country:"Country",state:"State",city:"City",zip_code:"Zip Code",added_on:"Added On",action:"Action",password:"Password",confirm_password:"Confirm Password",street_number:"Street Number",primary_currency:"Primary Currency",description:"Description",add_new_customer:"Add New Customer",save_customer:"Save Customer",update_customer:"Update Customer",customer:"Customer | Customers",new_customer:"New Customer",edit_customer:"Edit Customer",basic_info:"Basic Info",portal_access:"Portal Access",portal_access_text:"Would you like to allow this customer to login to the Customer Portal?",portal_access_url:"Customer Portal Login URL",portal_access_url_help:"Please copy & forward the above given URL to your customer for providing access.",billing_address:"Billing Address",shipping_address:"Shipping Address",copy_billing_address:"Copy from Billing",no_customers:"No customers yet!",no_customers_found:"No customers found!",no_contact:"No contact",no_contact_name:"No contact name",list_of_customers:"This section will contain the list of customers.",primary_display_name:"Primary Display Name",select_currency:"Select currency",select_a_customer:"Select a customer",type_or_click:"Type or click to select",new_transaction:"New Transaction",no_matching_customers:"There are no matching customers!",phone_number:"Phone Number",create_date:"Create Date",confirm_delete:"You will not be able to recover this customer and all the related Invoices, Estimates and Payments. | You will not be able to recover these customers and all the related Invoices, Estimates and Payments.",created_message:"Customer created successfully",updated_message:"Customer updated successfully",address_updated_message:"Address Information Updated succesfully",deleted_message:"Customer deleted successfully | Customers deleted successfully",edit_currency_not_allowed:"Cannot change currency once transactions created."},CV={title:"Items",items_list:"Items List",name:"Name",unit:"Unit",description:"Description",added_on:"Added On",price:"Price",date_of_creation:"Date Of Creation",not_selected:"No item selected",action:"Action",add_item:"Add Item",save_item:"Save Item",update_item:"Update Item",item:"Item | Items",add_new_item:"Add New Item",new_item:"New Item",edit_item:"Edit Item",no_items:"No items yet!",list_of_items:"This section will contain the list of items.",select_a_unit:"select unit",taxes:"Taxes",item_attached_message:"Cannot delete an item which is already in use",confirm_delete:"You will not be able to recover this Item | You will not be able to recover these Items",created_message:"Item created successfully",updated_message:"Item updated successfully",deleted_message:"Item deleted successfully | Items deleted successfully"},TV={title:"Estimates",accept_estimate:"Accept Estimate",reject_estimate:"Reject Estimate",estimate:"Estimate | Estimates",estimates_list:"Estimates List",days:"{days} Days",months:"{months} Month",years:"{years} Year",all:"All",paid:"Paid",unpaid:"Unpaid",customer:"CUSTOMER",ref_no:"REF NO.",number:"NUMBER",amount_due:"AMOUNT DUE",partially_paid:"Partially Paid",total:"Total",discount:"Discount",sub_total:"Sub Total",estimate_number:"Estimate Number",ref_number:"Ref Number",contact:"Contact",add_item:"Add an Item",date:"Date",due_date:"Due Date",expiry_date:"Expiry Date",status:"Status",add_tax:"Add Tax",amount:"Amount",action:"Action",notes:"Notes",tax:"Tax",estimate_template:"Template",convert_to_invoice:"Convert to Invoice",mark_as_sent:"Mark as Sent",send_estimate:"Send Estimate",resend_estimate:"Resend Estimate",record_payment:"Record Payment",add_estimate:"Add Estimate",save_estimate:"Save Estimate",confirm_conversion:"This estimate will be used to create a new Invoice.",conversion_message:"Invoice created successful",confirm_send_estimate:"This estimate will be sent via email to the customer",confirm_mark_as_sent:"This estimate will be marked as sent",confirm_mark_as_accepted:"This estimate will be marked as Accepted",confirm_mark_as_rejected:"This estimate will be marked as Rejected",no_matching_estimates:"There are no matching estimates!",mark_as_sent_successfully:"Estimate marked as sent successfully",send_estimate_successfully:"Estimate sent successfully",errors:{required:"Field is required"},accepted:"Accepted",rejected:"Rejected",expired:"Expired",sent:"Sent",draft:"Draft",viewed:"Viewed",declined:"Declined",new_estimate:"New Estimate",add_new_estimate:"Add New Estimate",update_Estimate:"Update Estimate",edit_estimate:"Edit Estimate",items:"items",Estimate:"Estimate | Estimates",add_new_tax:"Add New Tax",no_estimates:"No estimates yet!",list_of_estimates:"This section will contain the list of estimates.",mark_as_rejected:"Mark as rejected",mark_as_accepted:"Mark as accepted",marked_as_accepted_message:"Estimate marked as accepted",marked_as_rejected_message:"Estimate marked as rejected",confirm_delete:"You will not be able to recover this Estimate | You will not be able to recover these Estimates",created_message:"Estimate created successfully",updated_message:"Estimate updated successfully",deleted_message:"Estimate deleted successfully | Estimates deleted successfully",something_went_wrong:"something went wrong",item:{title:"Item Title",description:"Description",quantity:"Quantity",price:"Price",discount:"Discount",total:"Total",total_discount:"Total Discount",sub_total:"Sub Total",tax:"Tax",amount:"Amount",select_an_item:"Type or click to select an item",type_item_description:"Type Item Description (optional)"},mark_as_default_estimate_template_description:"If enabled, the selected template will be automatically selected for new estimates."},jV={title:"Invoices",download:"Download",pay_invoice:"Pay Invoice",invoices_list:"Invoices List",invoice_information:"Invoice Information",days:"{days} Days",months:"{months} Month",years:"{years} Year",all:"All",paid:"Paid",unpaid:"Unpaid",viewed:"Viewed",overdue:"Overdue",completed:"Completed",customer:"CUSTOMER",paid_status:"PAID STATUS",ref_no:"REF NO.",number:"NUMBER",amount_due:"AMOUNT DUE",partially_paid:"Partially Paid",total:"Total",discount:"Discount",sub_total:"Sub Total",invoice:"Invoice | Invoices",invoice_number:"Invoice Number",ref_number:"Ref Number",contact:"Contact",add_item:"Add an Item",date:"Date",due_date:"Due Date",status:"Status",add_tax:"Add Tax",amount:"Amount",action:"Action",notes:"Notes",view:"View",send_invoice:"Send Invoice",resend_invoice:"Resend Invoice",invoice_template:"Invoice Template",conversion_message:"Invoice cloned successful",template:"Select Template",mark_as_sent:"Mark as sent",confirm_send_invoice:"This invoice will be sent via email to the customer",invoice_mark_as_sent:"This invoice will be marked as sent",confirm_mark_as_accepted:"This invoice will be marked as Accepted",confirm_mark_as_rejected:"This invoice will be marked as Rejected",confirm_send:"This invoice will be sent via email to the customer",invoice_date:"Invoice Date",record_payment:"Record Payment",add_new_invoice:"Add New Invoice",update_expense:"Update Expense",edit_invoice:"Edit Invoice",new_invoice:"New Invoice",save_invoice:"Save Invoice",update_invoice:"Update Invoice",add_new_tax:"Add New Tax",no_invoices:"No Invoices yet!",mark_as_rejected:"Mark as rejected",mark_as_accepted:"Mark as accepted",list_of_invoices:"This section will contain the list of invoices.",select_invoice:"Select Invoice",no_matching_invoices:"There are no matching invoices!",mark_as_sent_successfully:"Invoice marked as sent successfully",invoice_sent_successfully:"Invoice sent successfully",cloned_successfully:"Invoice cloned successfully",clone_invoice:"Clone Invoice",confirm_clone:"This invoice will be cloned into a new Invoice",item:{title:"Item Title",description:"Description",quantity:"Quantity",price:"Price",discount:"Discount",total:"Total",total_discount:"Total Discount",sub_total:"Sub Total",tax:"Tax",amount:"Amount",select_an_item:"Type or click to select an item",type_item_description:"Type Item Description (optional)"},payment_attached_message:"One of the selected invoices already have a payment attached to it. Make sure to delete the attached payments first in order to go ahead with the removal",confirm_delete:"You will not be able to recover this Invoice | You will not be able to recover these Invoices",created_message:"Invoice created successfully",updated_message:"Invoice updated successfully",deleted_message:"Invoice deleted successfully | Invoices deleted successfully",marked_as_sent_message:"Invoice marked as sent successfully",something_went_wrong:"something went wrong",invalid_due_amount_message:"Total Invoice amount cannot be less than total paid amount for this Invoice. Please update the invoice or delete the associated payments to continue.",mark_as_default_invoice_template_description:"If enabled, the selected template will be automatically selected for new invoices."},NV={title:"Recurring Invoices",invoices_list:"Recurring Invoices List",days:"{days} Days",months:"{months} Month",years:"{years} Year",all:"All",paid:"Paid",unpaid:"Unpaid",viewed:"Viewed",overdue:"Overdue",active:"Active",completed:"Completed",customer:"CUSTOMER",paid_status:"PAID STATUS",ref_no:"REF NO.",number:"NUMBER",amount_due:"AMOUNT DUE",partially_paid:"Partially Paid",total:"Total",discount:"Discount",sub_total:"Sub Total",invoice:"Recurring Invoice | Recurring Invoices",invoice_number:"Recurring Invoice Number",next_invoice_date:"Next Invoice Date",ref_number:"Ref Number",contact:"Contact",add_item:"Add an Item",date:"Date",limit_by:"Limit by",limit_date:"Limit Date",limit_count:"Limit Count",count:"Count",status:"Status",select_a_status:"Select a status",working:"Working",on_hold:"On Hold",complete:"Completed",add_tax:"Add Tax",amount:"Amount",action:"Action",notes:"Notes",view:"View",basic_info:"Basic Info",send_invoice:"Send Recurring Invoice",auto_send:"Auto Send",resend_invoice:"Resend Recurring Invoice",invoice_template:"Recurring Invoice Template",conversion_message:"Recurring Invoice cloned successful",template:"Template",mark_as_sent:"Mark as sent",confirm_send_invoice:"This recurring invoice will be sent via email to the customer",invoice_mark_as_sent:"This recurring invoice will be marked as sent",confirm_send:"This recurring invoice will be sent via email to the customer",starts_at:"Start Date",due_date:"Invoice Due Date",record_payment:"Record Payment",add_new_invoice:"Add New Recurring Invoice",update_expense:"Update Expense",edit_invoice:"Edit Recurring Invoice",new_invoice:"New Recurring Invoice",send_automatically:"Send Automatically",send_automatically_desc:"Enable this, if you would like to send the invoice automatically to the customer when its created.",save_invoice:"Save Recurring Invoice",update_invoice:"Update Recurring Invoice",add_new_tax:"Add New Tax",no_invoices:"No Recurring Invoices yet!",mark_as_rejected:"Mark as rejected",mark_as_accepted:"Mark as accepted",list_of_invoices:"This section will contain the list of recurring invoices.",select_invoice:"Select Invoice",no_matching_invoices:"There are no matching recurring invoices!",mark_as_sent_successfully:"Recurring Invoice marked as sent successfully",invoice_sent_successfully:"Recurring Invoice sent successfully",cloned_successfully:"Recurring Invoice cloned successfully",clone_invoice:"Clone Recurring Invoice",confirm_clone:"This recurring invoice will be cloned into a new Recurring Invoice",add_customer_email:"Please add an email address for this customer to send invoices automatically.",item:{title:"Item Title",description:"Description",quantity:"Quantity",price:"Price",discount:"Discount",total:"Total",total_discount:"Total Discount",sub_total:"Sub Total",tax:"Tax",amount:"Amount",select_an_item:"Type or click to select an item",type_item_description:"Type Item Description (optional)"},frequency:{title:"Frequency",select_frequency:"Select Frequency",minute:"Minute",hour:"Hour",day_month:"Day of month",month:"Month",day_week:"Day of week"},confirm_delete:"You will not be able to recover this Invoice | You will not be able to recover these Invoices",created_message:"Recurring Invoice created successfully",updated_message:"Recurring Invoice updated successfully",deleted_message:"Recurring Invoice deleted successfully | Recurring Invoices deleted successfully",marked_as_sent_message:"Recurring Invoice marked as sent successfully",user_email_does_not_exist:"User email does not exist",something_went_wrong:"something went wrong",invalid_due_amount_message:"Total Recurring Invoice amount cannot be less than total paid amount for this Recurring Invoice. Please update the invoice or delete the associated payments to continue."},IV={title:"Payments",payments_list:"Payments List",record_payment:"Record Payment",customer:"Customer",date:"Date",amount:"Amount",action:"Action",payment_number:"Payment Number",payment_mode:"Payment Mode",invoice:"Invoice",note:"Note",add_payment:"Add Payment",new_payment:"New Payment",edit_payment:"Edit Payment",view_payment:"View Payment",add_new_payment:"Add New Payment",send_payment_receipt:"Send Payment Receipt",send_payment:"Send Payment",save_payment:"Save Payment",update_payment:"Update Payment",payment:"Payment | Payments",no_payments:"No payments yet!",not_selected:"Not selected",no_invoice:"No invoice",no_matching_payments:"There are no matching payments!",list_of_payments:"This section will contain the list of payments.",select_payment_mode:"Select payment mode",confirm_mark_as_sent:"This estimate will be marked as sent",confirm_send_payment:"This payment will be sent via email to the customer",send_payment_successfully:"Payment sent successfully",something_went_wrong:"something went wrong",confirm_delete:"You will not be able to recover this Payment | You will not be able to recover these Payments",created_message:"Payment created successfully",updated_message:"Payment updated successfully",deleted_message:"Payment deleted successfully | Payments deleted successfully",invalid_amount_message:"Payment amount is invalid"},FV={title:"Expenses",expenses_list:"Expenses List",select_a_customer:"Select a customer",expense_title:"Title",customer:"Customer",currency:"Currency",contact:"Contact",category:"Category",from_date:"From Date",to_date:"To Date",expense_date:"Date",description:"Description",receipt:"Receipt",amount:"Amount",action:"Action",not_selected:"Not selected",note:"Note",category_id:"Category Id",date:"Date",add_expense:"Add Expense",add_new_expense:"Add New Expense",save_expense:"Save Expense",update_expense:"Update Expense",download_receipt:"Download Receipt",edit_expense:"Edit Expense",new_expense:"New Expense",expense:"Expense | Expenses",no_expenses:"No expenses yet!",list_of_expenses:"This section will contain the list of expenses.",confirm_delete:"You will not be able to recover this Expense | You will not be able to recover these Expenses",created_message:"Expense created successfully",updated_message:"Expense updated successfully",deleted_message:"Expense deleted successfully | Expenses deleted successfully",categories:{categories_list:"Categories List",title:"Title",name:"Name",description:"Description",amount:"Amount",actions:"Actions",add_category:"Add Category",new_category:"New Category",category:"Category | Categories",select_a_category:"Select a category"}},RV={email:"Email",password:"Password",forgot_password:"Forgot Password?",or_signIn_with:"or Sign in with",login:"Login",register:"Register",reset_password:"Reset Password",password_reset_successfully:"Password Reset Successfully",enter_email:"Enter email",enter_password:"Enter Password",retype_password:"Retype Password"},OV={buy_now:"Buy Now",install:"Install",price:"Price",download_zip_file:"Download ZIP file",unzipping_package:"Unzipping Package",copying_files:"Copying Files",deleting_files:"Deleting Unused files",completing_installation:"Completing Installation",update_failed:"Update Failed",install_success:"Module has been installed successfully!",customer_reviews:"Reviews",license:"License",faq:"FAQ",monthly:"Monthly",yearly:"Yearly",updated:"Updated",version:"Version",disable:"Disable",module_disabled:"Module Disabled",enable:"Enable",module_enabled:"Module Enabled",update_to:"Update To",module_updated:"Module Updated Successfully!",title:"Modules",module:"Module | Modules",api_token:"API token",invalid_api_token:"Invalid API Token.",other_modules:"Other Modules",view_all:"View All",no_reviews_found:"There are no reviews for this module yet!",module_not_purchased:"Module Not Purchased",module_not_found:"Module Not Found",version_not_supported:"The minimum required version for this module does not match. Please upgrade your invoiceshelf app to version: {version} to proceed.",last_updated:"Last Updated On",connect_installation:"Connect your installation",api_token_description:"Login to {url} and connect this installation by entering the API Token. Your purchased modules will show up here after the connection is established.",view_module:"View Module",update_available:"Update Available",purchased:"Purchased",installed:"Installed",no_modules_installed:"No Modules Installed Yet!",disable_warning:"All the settings for this particular will be reverted.",what_you_get:"What you get"},MV={title:"Users",users_list:"Users List",name:"Name",description:"Description",added_on:"Added On",date_of_creation:"Date Of Creation",action:"Action",add_user:"Add User",save_user:"Save User",update_user:"Update User",user:"User | Users",add_new_user:"Add New User",new_user:"New User",edit_user:"Edit User",no_users:"No users yet!",list_of_users:"This section will contain the list of users.",email:"Email",phone:"Phone",password:"Password",user_attached_message:"Cannot delete an item which is already in use",confirm_delete:"You will not be able to recover this User | You will not be able to recover these Users",created_message:"User created successfully",updated_message:"User updated successfully",deleted_message:"User deleted successfully | Users deleted successfully",select_company_role:"Select Role for {company}",companies:"Companies"},$V={title:"Report",from_date:"From Date",to_date:"To Date",status:"Status",paid:"Paid",unpaid:"Unpaid",download_pdf:"Download PDF",view_pdf:"View PDF",update_report:"Update Report",report:"Report | Reports",profit_loss:{profit_loss:"Profit & Loss",to_date:"To Date",from_date:"From Date",date_range:"Select Date Range"},sales:{sales:"Sales",date_range:"Select Date Range",to_date:"To Date",from_date:"From Date",report_type:"Report Type"},taxes:{taxes:"Taxes",to_date:"To Date",from_date:"From Date",date_range:"Select Date Range"},errors:{required:"Field is required"},invoices:{invoice:"Invoice",invoice_date:"Invoice Date",due_date:"Due Date",amount:"Amount",contact_name:"Contact Name",status:"Status"},estimates:{estimate:"Estimate",estimate_date:"Estimate Date",due_date:"Due Date",estimate_number:"Estimate Number",ref_number:"Ref Number",amount:"Amount",contact_name:"Contact Name",status:"Status"},expenses:{expenses:"Expenses",category:"Category",date:"Date",amount:"Amount",to_date:"To Date",from_date:"From Date",date_range:"Select Date Range"}},LV={menu_title:{account_settings:"Account Settings",company_information:"Company Information",customization:"Customization",preferences:"Preferences",notifications:"Notifications",tax_types:"Tax Types",expense_category:"Expense Categories",update_app:"Update App",backup:"Backup",file_disk:"File Disk",custom_fields:"Custom Fields",payment_modes:"Payment Modes",notes:"Notes",exchange_rate:"Exchange Rate",address_information:"Address Information"},address_information:{section_description:" You can update Your Address information using form below."},title:"Settings",setting:"Settings | Settings",general:"General",language:"Language",primary_currency:"Primary Currency",timezone:"Time Zone",date_format:"Date Format",currencies:{title:"Currencies",currency:"Currency | Currencies",currencies_list:"Currencies List",select_currency:"Select Currency",name:"Name",code:"Code",symbol:"Symbol",precision:"Precision",thousand_separator:"Thousand Separator",decimal_separator:"Decimal Separator",position:"Position",position_of_symbol:"Position Of Symbol",right:"Right",left:"Left",action:"Action",add_currency:"Add Currency"},mail:{host:"Mail Host",port:"Mail Port",driver:"Mail Driver",secret:"Secret",mailgun_secret:"Mailgun Secret",mailgun_domain:"Domain",mailgun_endpoint:"Mailgun Endpoint",ses_secret:"SES Secret",ses_key:"SES Key",password:"Mail Password",username:"Mail Username",mail_config:"Mail Configuration",from_name:"From Mail Name",from_mail:"From Mail Address",encryption:"Mail Encryption",mail_config_desc:"Below is the form for Configuring Email driver for sending emails from the app. You can also configure third party providers like Sendgrid, SES etc."},pdf:{title:"PDF Setting",footer_text:"Footer Text",pdf_layout:"PDF Layout"},company_info:{company_info:"Company info",company_name:"Company Name",company_logo:"Company Logo",section_description:"Information about your company that will be displayed on invoices, estimates and other documents created by InvoiceShelf.",phone:"Phone",country:"Country",state:"State",city:"City",address:"Address",zip:"Zip",save:"Save",delete:"Delete",updated_message:"Company information updated successfully",delete_company:"Delete Company",delete_company_description:"Once you delete your company, you will lose all the data and files associated with it permanently.",are_you_absolutely_sure:"Are you absolutely sure?",delete_company_modal_desc:"This action cannot be undone. This will permanently delete {company} and all of its associated data.",delete_company_modal_label:"Please type {company} to confirm"},custom_fields:{title:"Custom Fields",section_description:"Customize your Invoices, Estimates & Payment Receipts with your own fields. Make sure to use the below added fields on the address formats on Customization settings page.",add_custom_field:"Add Custom Field",edit_custom_field:"Edit Custom Field",field_name:"Field Name",label:"Label",type:"Type",name:"Name",slug:"Slug",required:"Required",placeholder:"Placeholder",help_text:"Help Text",default_value:"Default Value",prefix:"Prefix",starting_number:"Starting Number",model:"Model",help_text_description:"Enter some text to help users understand the purpose of this custom field.",suffix:"Suffix",yes:"Yes",no:"No",order:"Order",custom_field_confirm_delete:"You will not be able to recover this Custom Field",already_in_use:"Custom Field is already in use",deleted_message:"Custom Field deleted successfully",options:"options",add_option:"Add Options",add_another_option:"Add another option",sort_in_alphabetical_order:"Sort in Alphabetical Order",add_options_in_bulk:"Add options in bulk",use_predefined_options:"Use Predefined Options",select_custom_date:"Select Custom Date",select_relative_date:"Select Relative Date",ticked_by_default:"Ticked by default",updated_message:"Custom Field updated successfully",added_message:"Custom Field added successfully",press_enter_to_add:"Press enter to add new option",model_in_use:"Cannot update model for fields which are already in use.",type_in_use:"Cannot update type for fields which are already in use."},customization:{customization:"customization",updated_message:"Company information updated successfully",save:"Save",insert_fields:"Insert Fields",learn_custom_format:"Learn how to use custom format",add_new_component:"Add New Component",component:"Component",Parameter:"Parameter",series:"Series",series_description:"To set a static prefix/postfix like 'INV' across your company. It supports character length of up to 6 chars.",series_param_label:"Series Value",delimiter:"Delimiter",delimiter_description:"Single character for specifying the boundary between 2 separate components. By default its set to -",delimiter_param_label:"Delimiter Value",date_format:"Date Format",date_format_description:"A local date and time field which accepts a format parameter. The default format: 'Y' renders the current year.",date_format_param_label:"Format",sequence:"Sequence",sequence_description:"Consecutive sequence of numbers across your company. You can specify the length on the given parameter.",sequence_param_label:"Sequence Length",customer_series:"Customer Series",customer_series_description:"To set a different prefix/postfix for each customer.",customer_sequence:"Customer Sequence",customer_sequence_description:"Consecutive sequence of numbers for each of your customer.",customer_sequence_param_label:"Sequence Length",random_sequence:"Random Sequence",random_sequence_description:"Random alphanumeric string. You can specify the length on the given parameter.",random_sequence_param_label:"Sequence Length",invoices:{title:"Invoices",invoice_number_format:"Invoice Number Format",invoice_number_format_description:"Customize how your invoice number gets generated automatically when you create a new invoice.",preview_invoice_number:"Preview Invoice Number",due_date:"Due Date",due_date_description:"Specify how due date is automatically set when you create an invoice.",due_date_days:"Invoice Due after days",set_due_date_automatically:"Set Due Date Automatically",set_due_date_automatically_description:"Enable this if you wish to set due date automatically when you create a new invoice.",default_formats:"Default Formats",default_formats_description:"Below given formats are used to fill up the fields automatically on invoice creation.",default_invoice_email_body:"Default Invoice Email Body",company_address_format:"Company Address Format",shipping_address_format:"Shipping Address Format",billing_address_format:"Billing Address Format",invoice_email_attachment:"Send invoices as attachments",invoice_email_attachment_setting_description:"Enable this if you want to send invoices as email attachment. Please note that 'View Invoice' button in emails will not be displayed anymore when enabled.",invoice_settings_updated:"Invoice Settings updated successfully",retrospective_edits:"Retrospective Edits",allow:"Allow",disable_on_invoice_partial_paid:"Disable after partial payment is recorded",disable_on_invoice_paid:"Disable after full payment is recorded",disable_on_invoice_sent:"Disable after invoice is sent",retrospective_edits_description:" Based on your country's laws or your preference, you can restrict users from editing finalised invoices."},estimates:{title:"Estimates",estimate_number_format:"Estimate Number Format",estimate_number_format_description:"Customize how your estimate number gets generated automatically when you create a new estimate.",preview_estimate_number:"Preview Estimate Number",expiry_date:"Expiry Date",expiry_date_description:"Specify how expiry date is automatically set when you create an estimate.",expiry_date_days:"Estimate Expires after days",set_expiry_date_automatically:"Set Expiry Date Automatically",set_expiry_date_automatically_description:"Enable this if you wish to set expiry date automatically when you create a new estimate.",default_formats:"Default Formats",default_formats_description:"Below given formats are used to fill up the fields automatically on estimate creation.",default_estimate_email_body:"Default Estimate Email Body",company_address_format:"Company Address Format",shipping_address_format:"Shipping Address Format",billing_address_format:"Billing Address Format",estimate_email_attachment:"Send estimates as attachments",estimate_email_attachment_setting_description:"Enable this if you want to send the estimates as an email attachment. Please note that 'View Estimate' button in emails will not be displayed anymore when enabled.",estimate_settings_updated:"Estimate Settings updated successfully",convert_estimate_options:"Estimate Convert Action",convert_estimate_description:"Specify what happens to the estimate after it gets converted to an invoice.",no_action:"No action",delete_estimate:"Delete estimate",mark_estimate_as_accepted:"Mark estimate as accepted"},payments:{title:"Payments",payment_number_format:"Payment Number Format",payment_number_format_description:"Customize how your payment number gets generated automatically when you create a new payment.",preview_payment_number:"Preview Payment Number",default_formats:"Default Formats",default_formats_description:"Below given formats are used to fill up the fields automatically on payment creation.",default_payment_email_body:"Default Payment Email Body",company_address_format:"Company Address Format",from_customer_address_format:"From Customer Address Format",payment_email_attachment:"Send payments as attachments",payment_email_attachment_setting_description:"Enable this if you want to send the payment receipts as an email attachment. Please note that 'View Payment' button in emails will not be displayed anymore when enabled.",payment_settings_updated:"Payment Settings updated successfully"},items:{title:"Items",units:"Units",add_item_unit:"Add Item Unit",edit_item_unit:"Edit Item Unit",unit_name:"Unit Name",item_unit_added:"Item Unit Added",item_unit_updated:"Item Unit Updated",item_unit_confirm_delete:"You will not be able to recover this Item unit",already_in_use:"Item Unit is already in use",deleted_message:"Item Unit deleted successfully"},notes:{title:"Notes",description:"Save time by creating notes and reusing them on your invoices, estimates & payments.",notes:"Notes",type:"Type",add_note:"Add Note",add_new_note:"Add New Note",name:"Name",edit_note:"Edit Note",note_added:"Note added successfully",note_updated:"Note Updated successfully",note_confirm_delete:"You will not be able to recover this Note",already_in_use:"Note is already in use",deleted_message:"Note deleted successfully"}},account_settings:{profile_picture:"Profile Picture",name:"Name",email:"Email",password:"Password",confirm_password:"Confirm Password",account_settings:"Account Settings",save:"Save",section_description:"You can update your name, email & password using the form below.",updated_message:"Account Settings updated successfully"},user_profile:{name:"Name",email:"Email",password:"Password",confirm_password:"Confirm Password"},notification:{title:"Notifications",email:"Send Notifications to",description:"Which email notifications would you like to receive when something changes?",invoice_viewed:"Invoice viewed",invoice_viewed_desc:"When your customer views the invoice sent via invoiceshelf dashboard.",estimate_viewed:"Estimate viewed",estimate_viewed_desc:"When your customer views the estimate sent via invoiceshelf dashboard.",save:"Save",email_save_message:"Email saved successfully",please_enter_email:"Please Enter Email"},roles:{title:"Roles",description:"Manage the roles & permissions of this company",save:"Save",add_new_role:"Add New Role",role_name:"Role Name",added_on:"Added on",add_role:"Add Role",edit_role:"Edit Role",name:"Name",permission:"Permission | Permissions",select_all:"Select All",none:"None",confirm_delete:"You will not be able to recover this Role",created_message:"Role created successfully",updated_message:"Role updated successfully",deleted_message:"Role deleted successfully",already_in_use:"Role is already in use"},exchange_rate:{exchange_rate:"Exchange Rate",title:"Fix Currency Exchange issues",description:"Please enter exchange rate of all the currencies mentioned below to help InvoiceShelf properly calculate the amounts in {currency}.",drivers:"Drivers",new_driver:"Add New Provider",edit_driver:"Edit Provider",select_driver:"Select Driver",update:"select exchange rate ",providers_description:"Configure your exchange rate providers here to automatically fetch the latest exchange rate on transactions.",key:"API Key",name:"Name",driver:"Driver",is_default:"IS DEFAULT",currency:"Currencies",exchange_rate_confirm_delete:"You will not be able to recover this driver",created_message:"Provider Created successfully",updated_message:"Provider Updated Successfully",deleted_message:"Provider Deleted Successfully",error:" You cannot Delete Active Driver",default_currency_error:"This currency is already used in one of the Active Provider",exchange_help_text:"Enter exchange rate to convert from {currency} to {baseCurrency}",currency_freak:"Currency Freak",currency_layer:"Currency Layer",open_exchange_rate:"Open Exchange Rate",currency_converter:"Currency Converter",server:"Server",url:"URL",active:"Active",currency_help_text:"This provider will only be used on above selected currencies",currency_in_used:"The following currencies are already active on another provider. Please remove these currencies from selection to activate this provider again."},tax_types:{title:"Tax Types",add_tax:"Add Tax",edit_tax:"Edit Tax",description:"You can add or Remove Taxes as you please. InvoiceShelf supports Taxes on Individual Items as well as on the invoice.",add_new_tax:"Add New Tax",tax_settings:"Tax Settings",tax_per_item:"Tax Per Item",tax_name:"Tax Name",compound_tax:"Compound Tax",percent:"Percent",action:"Action",tax_setting_description:"Enable this if you want to add taxes to individual invoice items. By default, taxes are added directly to the invoice.",created_message:"Tax type created successfully",updated_message:"Tax type updated successfully",deleted_message:"Tax type deleted successfully",confirm_delete:"You will not be able to recover this Tax Type",already_in_use:"Tax is already in use"},payment_modes:{title:"Payment Modes",description:"Modes of transaction for payments",add_payment_mode:"Add Payment Mode",edit_payment_mode:"Edit Payment Mode",mode_name:"Mode Name",payment_mode_added:"Payment Mode Added",payment_mode_updated:"Payment Mode Updated",payment_mode_confirm_delete:"You will not be able to recover this Payment Mode",payments_attached:"This payment method is already attached to payments. Please delete the attached payments to proceed with deletion.",expenses_attached:"This payment method is already attached to expenses. Please delete the attached expenses to proceed with deletion.",deleted_message:"Payment Mode deleted successfully"},expense_category:{title:"Expense Categories",action:"Action",description:"Categories are required for adding expense entries. You can Add or Remove these categories according to your preference.",add_new_category:"Add New Category",add_category:"Add Category",edit_category:"Edit Category",category_name:"Category Name",category_description:"Description",created_message:"Expense Category created successfully",deleted_message:"Expense category deleted successfully",updated_message:"Expense category updated successfully",confirm_delete:"You will not be able to recover this Expense Category",already_in_use:"Category is already in use"},preferences:{currency:"Currency",default_language:"Default Language",time_zone:"Time Zone",fiscal_year:"Financial Year",date_format:"Date Format",discount_setting:"Discount Setting",discount_per_item:"Discount Per Item ",discount_setting_description:"Enable this if you want to add Discount to individual invoice items. By default, Discount is added directly to the invoice.",expire_public_links:"Automatically Expire Public Links",expire_setting_description:"Specify whether you would like to expire all the links sent by application to view invoices, estimates & payments, etc after a specified duration.",save:"Save",preference:"Preference | Preferences",general_settings:"Default preferences for the system.",updated_message:"Preferences updated successfully",select_language:"Select Language",select_time_zone:"Select Time Zone",select_date_format:"Select Date Format",select_financial_year:"Select Financial Year",recurring_invoice_status:"Recurring Invoice Status",create_status:"Create Status",active:"Active",on_hold:"On Hold",update_status:"Update Status",completed:"Completed",company_currency_unchangeable:"Company currency cannot be changed"},update_app:{title:"Update App",description:"You can easily update InvoiceShelf by checking for a new update by clicking the button below",check_update:"Check for updates",avail_update:"New Update available",next_version:"Next version",requirements:"Requirements",update:"Update Now",update_progress:"Update in progress...",progress_text:"It will just take a few minutes. Please do not refresh the screen or close the window before the update finishes",update_success:"App has been updated! Please wait while your browser window gets reloaded automatically.",latest_message:"No update available! You are on the latest version.",current_version:"Current Version",download_zip_file:"Download ZIP file",unzipping_package:"Unzipping Package",copying_files:"Copying Files",deleting_files:"Deleting Unused files",running_migrations:"Running Migrations",finishing_update:"Finishing Update",update_failed:"Update Failed",update_failed_text:"Sorry! Your update failed on : {step} step",update_warning:"All of the application files and default template files will be overwritten when you update the application using this utility. Please take a backup of your templates & database before updating."},backup:{title:"Backup | Backups",description:"The backup is a zipfile that contains all files in the directories you specify along with a dump of your database",new_backup:"Add New Backup",create_backup:"Create Backup",select_backup_type:"Select Backup Type",backup_confirm_delete:"You will not be able to recover this Backup",path:"path",new_disk:"New Disk",created_at:"created at",size:"size",dropbox:"dropbox",local:"local",healthy:"healthy",amount_of_backups:"amount of backups",newest_backups:"newest backups",used_storage:"used storage",select_disk:"Select Disk",action:"Action",deleted_message:"Backup deleted successfully",created_message:"Backup created successfully",invalid_disk_credentials:"Invalid credential of selected disk"},disk:{title:"File Disk | File Disks",description:"By default, InvoiceShelf will use your local disk for saving backups, avatar and other image files. You can configure more than one disk drivers like DigitalOcean, S3 and Dropbox according to your preference.",created_at:"created at",dropbox:"dropbox",name:"Name",driver:"Driver",disk_type:"Type",disk_name:"Disk Name",new_disk:"Add New Disk",filesystem_driver:"Filesystem Driver",local_driver:"local Driver",local_root:"local Root",public_driver:"Public Driver",public_root:"Public Root",public_url:"Public URL",public_visibility:"Public Visibility",media_driver:"Media Driver",media_root:"Media Root",aws_driver:"AWS Driver",aws_key:"AWS Key",aws_secret:"AWS Secret",aws_region:"AWS Region",aws_bucket:"AWS Bucket",aws_root:"AWS Root",do_spaces_type:"Do Spaces type",do_spaces_key:"Do Spaces key",do_spaces_secret:"Do Spaces Secret",do_spaces_region:"Do Spaces Region",do_spaces_bucket:"Do Spaces Bucket",do_spaces_endpoint:"Do Spaces Endpoint",do_spaces_root:"Do Spaces Root",dropbox_type:"Dropbox Type",dropbox_token:"Dropbox Token",dropbox_key:"Dropbox Key",dropbox_secret:"Dropbox Secret",dropbox_app:"Dropbox App",dropbox_root:"Dropbox Root",default_driver:"Default Driver",is_default:"IS DEFAULT",set_default_disk:"Set Default Disk",set_default_disk_confirm:"This disk will be set as default and all the new PDFs will be saved on this disk",success_set_default_disk:"Disk set as default successfully",save_pdf_to_disk:"Save PDFs to Disk",disk_setting_description:" Enable this, if you wish to save a copy of each Invoice, Estimate & Payment Receipt PDF on your default disk automatically. Turning this option will decrease the load-time when viewing the PDFs.",select_disk:"Select Disk",disk_settings:"Disk Settings",confirm_delete:"Your existing files & folders in the specified disk will not be affected but your disk configuration will be deleted from InvoiceShelf",action:"Action",edit_file_disk:"Edit File Disk",success_create:"Disk added successfully",success_update:"Disk updated successfully",error:"Disk addition failed",deleted_message:"File Disk deleted successfully",disk_variables_save_successfully:"Disk Configured Successfully",disk_variables_save_error:"Disk configuration failed.",invalid_disk_credentials:"Invalid credential of selected disk"},taxations:{add_billing_address:"Enter Billing Address",add_shipping_address:"Enter Shipping Address",add_company_address:"Enter Company Address",modal_description:"The information below is required in order to fetch sales tax.",add_address:"Add Address for fetching sales tax.",address_placeholder:"Example: 123, My Street",city_placeholder:"Example: Los Angeles",state_placeholder:"Example: CA",zip_placeholder:"Example: 90024",invalid_address:"Please provide valid address details."}},BV={account_info:"Account Information",account_info_desc:"Below details will be used to create the main Administrator account. Also you can change the details anytime after logging in.",name:"Name",email:"Email",password:"Password",confirm_password:"Confirm Password",save_cont:"Save & Continue",company_info:"Company Information",company_info_desc:"This information will be displayed on invoices. Note that you can edit this later on settings page.",company_name:"Company Name",company_logo:"Company Logo",logo_preview:"Logo Preview",preferences:"Company Preferences",preferences_desc:"Specify the default preferences for this company.",currency_set_alert:"The company's currency cannot be changed later.",country:"Country",state:"State",city:"City",address:"Address",street:"Street1 | Street2",phone:"Phone",zip_code:"Zip Code",go_back:"Go Back",currency:"Currency",language:"Language",time_zone:"Time Zone",fiscal_year:"Financial Year",date_format:"Date Format",from_address:"From Address",username:"Username",next:"Next",continue:"Continue",skip:"Skip",database:{database:"Site URL & Database",connection:"Database Connection",host:"Database Host",port:"Database Port",password:"Database Password",app_url:"App URL",app_domain:"App Domain",username:"Database Username",db_name:"Database Name",db_path:"Database Path",desc:"Create a database on your server and set the credentials using the form below."},permissions:{permissions:"Permissions",permission_confirm_title:"Are you sure you want to continue?",permission_confirm_desc:"Folder permission check failed",permission_desc:"Below is the list of folder permissions which are required in order for the app to work. If the permission check fails, make sure to update your folder permissions."},verify_domain:{title:"Domain Verification",desc:"InvoiceShelf uses Session based authentication which requires domain verification for security purposes. Please enter the domain on which you will be accessing your web application.",app_domain:"App Domain",verify_now:"Verify Now",success:"Domain Verify Successfully.",failed:"Domain verification failed. Please enter valid domain name.",verify_and_continue:"Verify And Continue"},mail:{host:"Mail Host",port:"Mail Port",driver:"Mail Driver",secret:"Secret",mailgun_secret:"Mailgun Secret",mailgun_domain:"Domain",mailgun_endpoint:"Mailgun Endpoint",ses_secret:"SES Secret",ses_key:"SES Key",password:"Mail Password",username:"Mail Username",mail_config:"Mail Configuration",from_name:"From Mail Name",from_mail:"From Mail Address",encryption:"Mail Encryption",mail_config_desc:"Below is the form for Configuring Email driver for sending emails from the app. You can also configure third party providers like Sendgrid, SES etc."},req:{system_req:"System Requirements",php_req_version:"Php (version {version} required)",check_req:"Check Requirements",system_req_desc:"InvoiceShelf has a few server requirements. Make sure that your server has the required php version and all the extensions mentioned below."},errors:{migrate_failed:"Migrate Failed",database_variables_save_error:"Cannot write configuration to .env file. Please check its file permissions",mail_variables_save_error:"Email configuration failed.",connection_failed:"Database connection failed",database_should_be_empty:"Database should be empty"},success:{mail_variables_save_successfully:"Email configured successfully",database_variables_save_successfully:"Database configured successfully."}},UV={invalid_phone:"Invalid Phone Number",invalid_url:"Invalid url (ex: http://www.invoiceshelf.com)",invalid_domain_url:"Invalid url (ex: invoiceshelf.com)",required:"Field is required",email_incorrect:"Incorrect Email.",email_already_taken:"The email has already been taken.",email_does_not_exist:"User with given email doesn't exist",item_unit_already_taken:"This item unit name has already been taken",payment_mode_already_taken:"This payment mode name has already been taken",send_reset_link:"Send Reset Link",not_yet:"Not yet? Send it again",password_min_length:"Password must contain {count} characters",name_min_length:"Name must have at least {count} letters.",prefix_min_length:"Prefix must have at least {count} letters.",enter_valid_tax_rate:"Enter valid tax rate",numbers_only:"Numbers Only.",characters_only:"Characters Only.",password_incorrect:"Passwords must be identical",password_length:"Password must be {count} character long.",qty_must_greater_than_zero:"Quantity must be greater than zero.",price_greater_than_zero:"Price must be greater than zero.",payment_greater_than_zero:"Payment must be greater than zero.",payment_greater_than_due_amount:"Entered Payment is more than due amount of this invoice.",quantity_maxlength:"Quantity should not be greater than 20 digits.",price_maxlength:"Price should not be greater than 20 digits.",price_minvalue:"Price should be greater than 0.",amount_maxlength:"Amount should not be greater than 20 digits.",amount_minvalue:"Amount should be greater than 0.",discount_maxlength:"Discount should not be greater than max discount",description_maxlength:"Description should not be greater than 255 characters.",subject_maxlength:"Subject should not be greater than 100 characters.",message_maxlength:"Message should not be greater than 255 characters.",maximum_options_error:"Maximum of {max} options selected. First remove a selected option to select another.",notes_maxlength:"Notes should not be greater than 65,000 characters.",address_maxlength:"Address should not be greater than 255 characters.",ref_number_maxlength:"Ref Number should not be greater than 255 characters.",prefix_maxlength:"Prefix should not be greater than 5 characters.",something_went_wrong:"something went wrong",number_length_minvalue:"Number length should be greater than 0",at_least_one_ability:"Please select atleast one Permission.",valid_driver_key:"Please enter a valid {driver} key.",valid_exchange_rate:"Please enter a valid exchange rate.",company_name_not_same:"Company name must match with given name."},VV={starter_plan:"This feature is available on Starter plan and onwards!",invalid_provider_key:"Please Enter Valid Provider API Key.",estimate_number_used:"The estimate number has already been taken.",invoice_number_used:"The invoice number has already been taken.",payment_attached:"This invoice already has a payment attached to it. Make sure to delete the attached payments first in order to go ahead with the removal.",payment_number_used:"The payment number has already been taken.",name_already_taken:"The name has already been taken.",receipt_does_not_exist:"Receipt does not exist.",customer_cannot_be_changed_after_payment_is_added:"Customer cannot be change after payment is added",invalid_credentials:"Invalid Credentials.",not_allowed:"Not Allowed",login_invalid_credentials:"These credentials do not match our records.",enter_valid_cron_format:"Please enter a valid cron format",email_could_not_be_sent:"Email could not be sent to this email address.",invalid_address:"Please enter a valid address.",invalid_key:"Please enter valid key.",invalid_state:"Please enter a valid state.",invalid_city:"Please enter a valid city.",invalid_postal_code:"Please enter a valid zip.",invalid_format:"Please enter valid query string format.",api_error:"Server not responding.",feature_not_enabled:"Feature not enabled.",request_limit_met:"Api request limit exceeded.",address_incomplete:"Incomplete Address"},qV="Estimate",WV="Estimate Number",HV="Estimate Date",KV="Expiry Date",YV="Invoice",ZV="Invoice Number",GV="Invoice Date",QV="Due date",JV="Notes",XV="Items",e7="Quantity",t7="Price",a7="Discount",n7="Amount",i7="Subtotal",o7="Total",s7="Payment",r7="PAYMENT RECEIPT",l7="Payment Date",c7="Payment Number",d7="Payment Mode",u7="Amount Received",_7="EXPENSES REPORT",m7="TOTAL EXPENSE",p7="PROFIT & LOSS REPORT",f7="Sales Customer Report",h7="Sales Item Report",g7="Tax Summary Report",v7="INCOME",y7="NET PROFIT",b7="Sales Report: By Customer",k7="TOTAL SALES",w7="Sales Report: By Item",D7="TAX REPORT",x7="TOTAL TAX",S7="Tax Types",P7="Expenses",E7="Bill to,",z7="Ship to,",A7="Received from:",C7="Tax",T7={navigation:wV,general:DV,dashboard:xV,tax_types:SV,global_search:PV,company_switcher:EV,dateRange:zV,customers:AV,items:CV,estimates:TV,invoices:jV,recurring_invoices:NV,payments:IV,expenses:FV,login:RV,modules:OV,users:MV,reports:$V,settings:LV,wizard:BV,validation:UV,errors:VV,pdf_estimate_label:qV,pdf_estimate_number:WV,pdf_estimate_date:HV,pdf_estimate_expire_date:KV,pdf_invoice_label:YV,pdf_invoice_number:ZV,pdf_invoice_date:GV,pdf_invoice_due_date:QV,pdf_notes:JV,pdf_items_label:XV,pdf_quantity_label:e7,pdf_price_label:t7,pdf_discount_label:a7,pdf_amount_label:n7,pdf_subtotal:i7,pdf_total:o7,pdf_payment_label:s7,pdf_payment_receipt_label:r7,pdf_payment_date:l7,pdf_payment_number:c7,pdf_payment_mode:d7,pdf_payment_amount_received_label:u7,pdf_expense_report_label:_7,pdf_total_expenses_label:m7,pdf_profit_loss_label:p7,pdf_sales_customers_label:f7,pdf_sales_items_label:h7,pdf_tax_summery_label:g7,pdf_income_label:v7,pdf_net_profit_label:y7,pdf_customer_sales_report:b7,pdf_total_sales_label:k7,pdf_item_sales_label:w7,pdf_tax_report_label:D7,pdf_total_tax_label:x7,pdf_tax_types_label:S7,pdf_expenses_label:P7,pdf_bill_to:E7,pdf_ship_to:z7,pdf_received_from:A7,pdf_tax_label:C7},j7={dashboard:"Tableau de bord",customers:"Clients",items:"Articles",invoices:"Factures","recurring-invoices":"Factures récurrentes",expenses:"Dépenses",estimates:"Devis",payments:"Paiements",reports:"Rapports",settings:"Paramètres",logout:"Déconnexion",users:"Utilisateurs",modules:"Modules"},N7={add_company:"Ajouter une entreprise",view_pdf:"Afficher le PDF",copy_pdf_url:"Copier l'URL du PDF",download_pdf:"Télécharger le PDF",save:"Enregistrer",create:"Créer",cancel:"Annuler",update:"Mettre à jour",deselect:"Enlever",download:"Télécharger",from_date:"Du",to_date:"Au",from:"Du",to:"Au",ok:"Ok",yes:"Oui",no:"Non",sort_by:"Trier par",ascending:"Ascendant",descending:"Descendant",subject:"Objet",body:"Message",message:"Message",send:"Envoyer",preview:"Aperçu",go_back:"Retourner",back_to_login:"Revenir à la page de connexion ?",home:"Tableau de bord",filter:"Filtrer",delete:"Supprimer",edit:"Modifier",view:"Afficher",add_new_item:"Ajouter une ligne",clear_all:"Tout supprimer",showing:"Affichage ",of:"sur",actions:"Actions",subtotal:"SOUS-TOTAL",discount:"REMISE",fixed:"Fixe",percentage:"Pourcentage",tax:"TAXE",total_amount:"TOTAL ",bill_to:"Facturer à",ship_to:"Expédier à",due:"En cours",draft:"Brouillon",sent:"Envoyée",all:"Tout",select_all:"Tout sélectionner",select_template:"Modèle",choose_file:"Cliquez ici pour choisir un fichier",choose_template:"Choisissez un modèle",choose:"Choisir",remove:"Supprimer",select_a_status:"Sélectionnez un statut",select_a_tax:"Sélectionnez une taxe",search:"Rechercher",are_you_sure:"Êtes-vous sûr ?",list_is_empty:"La liste est vide.",no_tax_found:"Aucune taxe trouvée !",four_zero_four:"404",you_got_lost:"Oups! Vous vous êtes perdus!",go_home:"Retour au tableau de bord",test_mail_conf:"Envoyer un email de test",send_mail_successfully:"Email envoyé",setting_updated:"Paramètres mis à jour",select_state:"Sélectionnez l'état",select_country:"Choisissez le pays",select_city:"Sélectionnez une ville",street_1:"Rue, voie, boite postale",street_2:"Bâtiment, étage, lieu-dit, complément,...",action_failed:"Action : échoué",retry:"Réessayez",choose_note:"Choisissez une note de bas de page",no_note_found:"Aucune note de bas de page trouvée",insert_note:"Insérer une note",copied_pdf_url_clipboard:"L'adresse du PDF a été copiée.",copied_url_clipboard:"URL copiée vers le presse-papier!",docs:"Documents",do_you_wish_to_continue:"Voulez-vous continuer ?",note:"Note de bas de page",pay_invoice:"Payer facture",login_successfully:"Identifié avec succès!",logged_out_successfully:"Déconnecté avec succès",mark_as_default:"Marquer par défaut"},I7={select_year:"Sélectionnez l'année",cards:{due_amount:"Encours clients",customers:"Clients",invoices:"Factures",estimates:"Devis",payments:"Paiements"},chart_info:{total_sales:"Ventes",total_receipts:"Recettes",total_expense:"Dépenses",net_income:"Résultat",year:"Sélectionnez l'année"},monthly_chart:{title:"Recettes et dépenses"},recent_invoices_card:{title:"Factures en cours",due_on:"Échéance",customer:"Client",amount_due:"Montant",actions:"Actions",view_all:"Tout afficher"},recent_estimate_card:{title:"Devis récents",date:"Expiration",customer:"Client",amount_due:"Montant",actions:"Actions",view_all:"Tout afficher"}},F7={name:"Nom",description:"Description",percent:"Pourcentage",compound_tax:"Taxe composée"},R7={search:"Rechercher",customers:"Clients",users:"Utilisateurs",no_results_found:"Aucun résultat"},O7={label:"CHANGER DE SOCIÉTÉ",no_results_found:"Aucun résultat",add_new_company:"Ajouter une société",new_company:"Nouvelle société",created_message:"Société créée"},M7={today:"Aujourd'hui",this_week:"Cette semaine",this_month:"Ce mois",this_quarter:"Ce trimestre",this_year:"Cette année",previous_week:"Semaine précédente",previous_month:"Mois précédent",previous_quarter:"Trimestre précédent",previous_year:"Année précédente",custom:"Personnalisée"},$7={title:"Clients",prefix:"Code client",add_customer:"Ajouter un client",contacts_list:"Liste de clients",name:"Nom",mail:"Email | Emails",statement:"Déclaration",display_name:"Nom",primary_contact_name:"Contact principal",contact_name:"Contact",amount_due:"Montant dû",email:"Email",address:"Adresse",phone:"Téléphone",website:"Site Internet",overview:"Aperçu",invoice_prefix:"Préfixe de facture",estimate_prefix:"Préfixe des devis",payment_prefix:"Préfixe de paiement",enable_portal:"Activer le portail",country:"Pays",state:"État",city:"Ville",zip_code:"Code postal",added_on:"Ajouté le",action:"Action",password:"Mot de passe",confirm_password:"Confirmez le mot de passe",street_number:"Numéro de rue",primary_currency:"Devise principale",description:"Description",add_new_customer:"Ajouter un client",save_customer:"Enregistrer",update_customer:"Enregistrer",customer:"Client | Clients",new_customer:"Nouveau client",edit_customer:"Modifier le client",basic_info:"Informations de base",portal_access:"Accès Portail",portal_access_text:"Souhaitez vous autoriser ce client à se connecter au Portail Client ?",portal_access_url:"URL de connexion Portail Client",portal_access_url_help:"Veuillez copiez et envoyez le lien ci-dessus au client pour lui fournir l'accès au portail.",billing_address:"Adresse de facturation",shipping_address:"Adresse de livraison",copy_billing_address:"Copier depuis l'adresse de facturation",no_customers:"Vous n’avez pas encore de clients !",no_customers_found:"Aucun client",no_contact:"-",no_contact_name:"-",list_of_customers:"Ajoutez des clients et retrouvez-les ici.",primary_display_name:"Nom d'affichage principal",select_currency:"Sélectionnez la devise",select_a_customer:"Sélectionnez un client",type_or_click:"Sélectionnez un article",new_transaction:"Ajouter une opération",no_matching_customers:"Il n'y a aucun client correspondant !",phone_number:"Numéro de téléphone",create_date:"Date de création",confirm_delete:"Vous ne pourrez pas récupérer ce client et les devis, factures et paiements associés. | Vous ne serez pas en mesure de récupérer ces clients et les devis, factures et paiements associés.",created_message:"Client créé",updated_message:"Client mis à jour",address_updated_message:"Adresse mise à jour avec succès",deleted_message:"Client supprimé | Clients supprimés",edit_currency_not_allowed:"Impossible de changer de devise une fois les transactions créées."},L7={title:"Articles",items_list:"Liste d'articles",name:"Nom",unit:"Unité",description:"Description",added_on:"Ajouté le",price:"Prix",date_of_creation:"Date de création",not_selected:"Aucun article sélectionné",action:"Action",add_item:"Nouvel article",save_item:"Enregistrer",update_item:"Enregistrer",item:"Article | Articles",add_new_item:"Ajouter un article",new_item:"Nouvel article",edit_item:"Modifier cet article",no_items:"Aucun article",list_of_items:"Ajoutez des articles et retrouvez-les ici",select_a_unit:"Sélectionnez l'unité",taxes:"Taxes",item_attached_message:"Impossible de supprimer un article déjà utilisé",confirm_delete:"Vous ne pourrez pas récupérer cet article | Vous ne pourrez pas récupérer ces objets",created_message:"Article créé",updated_message:"Article mis à jour",deleted_message:"Article supprimé avec succès | Articles supprimés avec succès"},B7={title:"Devis",accept_estimate:"Accepter devis",reject_estimate:"Rejeter devis",estimate:"Devis | Devis",estimates_list:"Liste des devis",days:"{days} jours",months:"{months} mois",years:"{years} Année",all:"Tous",paid:"Payé",unpaid:"Non payé",customer:"Client",ref_no:"Réf.",number:"N°",amount_due:"MONTANT",partially_paid:"Partiellement payé",total:"Total",discount:"Remise",sub_total:"Sous-total",estimate_number:"N°",ref_number:"Référence",contact:"Contact",add_item:"Ajouter un article",date:"Date",due_date:"Date d'échéance",expiry_date:"Date d'expiration",status:"Statut",add_tax:"Ajouter une taxe",amount:"Montant",action:"Action",notes:"Notes de bas de page",tax:"Taxe",estimate_template:"Modèle de devis",convert_to_invoice:"Convertir en facture",mark_as_sent:"Marquer comme envoyé",send_estimate:"Envoyer par email",resend_estimate:"Renvoyer le devis",record_payment:"Enregistrer un paiement",add_estimate:"Nouveau devis",save_estimate:"Enregistrer",confirm_conversion:"Ce devis sera utilisé pour créer une nouvelle facture.",conversion_message:"Conversion réussie",confirm_send_estimate:"Ce devis sera envoyée par email au client",confirm_mark_as_sent:"Ce devis sera marqué comme envoyé",confirm_mark_as_accepted:"Ce devis sera marqué comme accepté",confirm_mark_as_rejected:"Ce devis sera marqué comme rejeté",no_matching_estimates:"Aucune estimation correspondante !",mark_as_sent_successfully:"Devis marqué comme envoyé",send_estimate_successfully:"Devis envoyé",errors:{required:"Champ requis"},accepted:"Accepté",rejected:"Refusé",expired:"Expiré",sent:"Envoyé",draft:"Brouillon",viewed:"Consultée",declined:"Refusé",new_estimate:"Nouveau devis",add_new_estimate:"Nouveau devis",update_Estimate:"Enregistrer",edit_estimate:"Modifier ce devis",items:"articles",Estimate:"Devis | Devis",add_new_tax:"Ajouter une taxe",no_estimates:"Aucun devis",list_of_estimates:"Ajoutez des clients et retrouvez-les ici",mark_as_rejected:"Marquer comme rejeté",mark_as_accepted:"Marquer comme accepté",marked_as_accepted_message:"Devis marqué comme accepté",marked_as_rejected_message:"Devis marqué comme rejeté",confirm_delete:"Vous ne pourrez pas récupérer ce devis | Vous ne pourrez pas récupérer ces devis",created_message:"Devis créé",updated_message:"Devis mise à jour",deleted_message:"Devis supprimé | Devis supprimés",something_went_wrong:"quelque chose a mal tourné",item:{title:"Titre de l'article",description:"Description",quantity:"Quantité",price:"Prix",discount:"Remise",total:"Total",total_discount:"Remise totale",sub_total:"Sous-total",tax:"Taxe",amount:"Montant",select_an_item:"Sélectionnez un article",type_item_description:"Taper la description de l'article (facultatif)"},mark_as_default_estimate_template_description:"If enabled, the selected template will be automatically selected for new estimates."},U7={title:"Factures",download:"Télécharger",pay_invoice:"Payer facture",invoices_list:"Liste des factures",invoice_information:"Informations sur la facture",days:"{days} jours",months:"{months} mois",years:"{years} années",all:"Toutes",paid:"Payée",unpaid:"Non payée",viewed:"Consultée",overdue:"En retard",completed:"Payée",customer:"CLIENT",paid_status:"État du paiement",ref_no:"Réf.",number:"N°",amount_due:"MONTANT",partially_paid:"Partiellement payée",total:"Total",discount:"Remise",sub_total:"Sous-total",invoice:"Facture | Factures",invoice_number:"N°",ref_number:"Référence",contact:"Contact",add_item:"Nouvel article",date:"Date",due_date:"Date d'échéance",status:"Statut",add_tax:"Ajouter une taxe",amount:"Montant",action:"Action",notes:"Notes de bas de page",view:"Afficher",send_invoice:"Envoyer par email",resend_invoice:"Renvoyer la facture",invoice_template:"Modèle de facture",conversion_message:"Facture clonée",template:"Modèle",mark_as_sent:"Marquer comme envoyée",confirm_send_invoice:"Cette facture sera envoyée par email au client",invoice_mark_as_sent:"Cette facture sera marquée comme envoyé",confirm_mark_as_accepted:"Cette facture sera marquée comme acceptée",confirm_mark_as_rejected:"Cette facture sera marquée comme rejetée",confirm_send:"Cette facture sera envoyée par email au client",invoice_date:"Date",record_payment:"Enregistrer un paiement",add_new_invoice:"Nouvelle facture",update_expense:"Enregistrer la dépense",edit_invoice:"Modifier cette facture",new_invoice:"Nouvelle facture",save_invoice:"Enregistrer",update_invoice:"Enregistrer",add_new_tax:"Ajouter une taxe",no_invoices:"Aucune facture",mark_as_rejected:"Marquer comme rejetée",mark_as_accepted:"Marquer comme acceptée",list_of_invoices:"Ajoutez des factures et retrouvez-les ici",select_invoice:"Sélectionnez facture",no_matching_invoices:"Aucune facture correspondante !",mark_as_sent_successfully:"Facture marquée comme envoyée",invoice_sent_successfully:"Facture envoyée",cloned_successfully:"Facture clonée",clone_invoice:"Dupliquer",confirm_clone:"Cette facture sera dupliquée dans une nouvelle facture",item:{title:"Titre de l'article",description:"Description",quantity:"Quantité",price:"Prix",discount:"Remise",total:"Total",total_discount:"Remise totale",sub_total:"Sous-total",tax:"Taxe",amount:"Montant",select_an_item:"Sélectionnez un article",type_item_description:"Saisissez une description (facultatif)"},payment_attached_message:"Un paiement est lié à l'une des factures sélectionnées. Veuillez d'abord les supprimer, puis réessayez",confirm_delete:"Vous ne pourrez pas récupérer cette facture | Vous ne pourrez pas récupérer ces factures",created_message:"Facture créée",updated_message:"Facture mise à jour",deleted_message:"La facture a été supprimée | Les factures ont été supprimées",marked_as_sent_message:"Facture supprimée | Factures supprimées",something_went_wrong:"quelque chose a mal tourné",invalid_due_amount_message:"Le paiement entré est supérieur au montant total dû pour cette facture. Veuillez vérifier et réessayer.",mark_as_default_invoice_template_description:"If enabled, the selected template will be automatically selected for new invoices."},V7={title:"Factures récurrentes",invoices_list:"Liste des factures récurrentes",days:"{days} jours",months:"{months} mois",years:"{years} ans",all:"Toutes",paid:"Payée",unpaid:"Non payée",viewed:"Consultée",overdue:"En retard",active:"Active",completed:"Payée",customer:"CLIENT",paid_status:"ÉTAT DU PAIEMENT",ref_no:"N° de REF.",number:"N°",amount_due:"MONTANT DÛ",partially_paid:"Partiellement payée",total:"Total",discount:"Remise",sub_total:"Sous-total",invoice:"Facture récurrente | Factures récurrentes",invoice_number:"N°",next_invoice_date:"Prochaine date de facturation",ref_number:"N° de référence",contact:"Contact",add_item:"Ajouter un article",date:"Date",limit_by:"Limiter par",limit_date:"Date limite",limit_count:"Nombre limite",count:"Nombre",status:"Statut",select_a_status:"Sélectionnez un statut",working:"Active",on_hold:"Suspendue",complete:"Payée",add_tax:"Ajouter une taxe",amount:"Montant",action:"Action",notes:"Notes de bas de page",view:"Afficher",basic_info:"Informations générales",send_invoice:"Envoyer la facture récurrente",auto_send:"Envoi automatique",resend_invoice:"Renvoyer la facture récurrente",invoice_template:"Modèle de facture récurrente",conversion_message:"Facture récurrente clonée",template:"Modèle",mark_as_sent:"Marquer comme envoyée",confirm_send_invoice:"Cette facture récurrente sera envoyée par email au client",invoice_mark_as_sent:"Cette facture récurrente sera marquée comme envoyée",confirm_send:"Cette facture récurrente sera envoyée par email au client",starts_at:"Date de début",due_date:"Date d'échéance",record_payment:"Enregister un paiement",add_new_invoice:"Nouvelle facture récurrente",update_expense:"Mettre à jour les dépenses",edit_invoice:"Modifier cette facture récurrente",new_invoice:"Nouvelle facture récurrente",send_automatically:"Envoyer automatiquement",send_automatically_desc:"Activez ceci si vous souhaitez envoyer la facture automatiquement au client lorsque celle-ci est créée.",save_invoice:"Enregistrer",update_invoice:"Modifier la facture récurrente",add_new_tax:"Ajouter une taxe",no_invoices:"Aucune facture récurrente pour le moment !",mark_as_rejected:"Marquer comme rejetée",mark_as_accepted:"Marquer comme accepté",list_of_invoices:"Ajoutez des factures récurrentes et retrouvez-les ici",select_invoice:"Sélectionnez la facture",no_matching_invoices:"Aucune facture récurrente correspondante",mark_as_sent_successfully:"Facture récurrente marquée comme envoyée",invoice_sent_successfully:"Facture récurrente envoyée",cloned_successfully:"Facture récurrente clonée",clone_invoice:"Dupliquer",confirm_clone:"Cette facture récurrente sera clonée dans une nouvelle facture récurrente",add_customer_email:"Please add an email address for this customer to send invoices automatically.",item:{title:"Nom",description:"Description",quantity:"Quantité",price:"Prix",discount:"Remise",total:"Total",total_discount:"Remise totale",sub_total:"Sous-total",tax:"Taxe",amount:"Montant",select_an_item:"Tapez ou cliquez pour sélectionner un article",type_item_description:"Description de l'article (facultatif)"},frequency:{title:"Fréquence",select_frequency:"Sélectionner la fréquence",minute:"Minute",hour:"Heure",day_month:"Jour du mois",month:"Mois",day_week:"Jour de la semaine"},confirm_delete:"Vous ne pourrez pas récupérer cette facture | Vous ne pourrez pas récupérer ces factures",created_message:"Facture récurrente créée",updated_message:"Facture récurrente mise à jour",deleted_message:"Facture récurrente supprimée",marked_as_sent_message:"Facture récurrente envoyée",user_email_does_not_exist:"L'email de l'utilisateur n'existe pas",something_went_wrong:"une erreur s’est produite",invalid_due_amount_message:"Le montant total de la facture récurrente ne peut pas être inférieur au montant total payé pour cette facture récurrente. Veuillez mettre à jour la facture ou supprimer les paiements associés pour continuer."},q7={title:"Paiements",payments_list:"Liste de paiements",record_payment:"Enregistrer un paiement",customer:"Client",date:"Date",amount:"Montant",action:"Action",payment_number:"N°",payment_mode:"Mode de paiement",invoice:"Facture",note:"Description",add_payment:"Nouveau paiement",new_payment:"Nouveau paiement",edit_payment:"Modifier ce paiement",view_payment:"Afficher le paiement",add_new_payment:"Nouveau paiement",send_payment_receipt:"Envoyer le reçu",send_payment:"Envoyer par email",save_payment:"Enregistrer",update_payment:"Enregistrer",payment:"Paiement | Paiements",no_payments:"Aucun paiement",not_selected:"-",no_invoice:"Aucune facture",no_matching_payments:"Il n'y a aucun paiement correspondant !",list_of_payments:"Ajoutez des paiements et retrouvez-les ici",select_payment_mode:"Sélectionnez le mode de paiement",confirm_mark_as_sent:"Ce devis sera marqué comme envoyé",confirm_send_payment:"Ce paiement sera envoyé par email au client",send_payment_successfully:"Paiement envoyé",something_went_wrong:"quelque chose a mal tourné",confirm_delete:"Vous ne pourrez pas récupérer ce paiement | Vous ne pourrez pas récupérer ces paiements",created_message:"Paiement créé",updated_message:"Paiement mis à jour",deleted_message:"Paiement supprimé | Paiements supprimés",invalid_amount_message:"Le montant du paiement est invalide"},W7={title:"Dépenses",expenses_list:"Liste des dépenses",select_a_customer:"Sélectionnez un client",expense_title:"Titre",customer:"Client",currency:"Devise",contact:"Contact",category:"Catégorie",from_date:"Du",to_date:"Au",expense_date:"Date",description:"Description",receipt:"Reçu",amount:"Montant",action:"Action",not_selected:"-",note:"Description",category_id:"Identifiant de catégorie",date:"Date",add_expense:"Nouvelle dépense",add_new_expense:"Nouvelle dépense",save_expense:"Enregistrer",update_expense:"Enregistrer",download_receipt:"Télécharger le reçu",edit_expense:"Modifier cette dépense",new_expense:"Nouvelle dépense",expense:"Dépense | Dépenses",no_expenses:"Aucune dépense",list_of_expenses:"Ajoutez des dépenses et retrouvez-les ici",confirm_delete:"Vous ne pourrez pas récupérer cette dépense | Vous ne pourrez pas récupérer ces dépenses",created_message:"Dépense créée",updated_message:"Dépense mise à jour",deleted_message:"Dépense supprimée | Dépenses supprimées",categories:{categories_list:"Liste des catégories",title:"Titre",name:"Nom",description:"Description",amount:"Montant",actions:"Actions",add_category:"Nouvelle catégorie",new_category:"Nouvelle catégorie",category:"Catégorie | Catégories",select_a_category:"Choisissez une catégorie"}},H7={email:"Email",password:"Mot de passe",forgot_password:"Mot de passe oublié ?",or_signIn_with:"ou connectez-vous avec",login:"Se connecter",register:"S'inscrire",reset_password:"Réinitialiser le mot de passe",password_reset_successfully:"Réinitialisation du mot de passe réussie",enter_email:"Entrez votre email",enter_password:"Entrer le mot de passe",retype_password:"Retaper le mot de passe"},K7={buy_now:"Acheter maintenant",install:"Installer",price:"Prix",download_zip_file:"Télécharger le fichier ZIP",unzipping_package:"Décompresser le fichier",copying_files:"Copie de fichiers en cours",deleting_files:"Supprimer les fichiers inutilisés",completing_installation:"Terminer l'installation",update_failed:"Échec de la mise à jour",install_success:"Votre module a été correctement installé !",customer_reviews:"Évaluations",license:"License",faq:"FAQ",monthly:"Mensuel",yearly:"Annuel",updated:"Mis à jour",version:"Version",disable:"Désactiver",module_disabled:"Module désactivé",enable:"Activer",module_enabled:"Module activé",update_to:"Mise à jour vers",module_updated:"Le module a bien été mis à jour !",title:"Modules",module:"Module | Modules",api_token:"Jeton API",invalid_api_token:"Jeton API invalide.",other_modules:"Autres modules",view_all:"Tout afficher",no_reviews_found:"Il n'y a pas encore d'avis pour ce module !",module_not_purchased:"Module non acheté",module_not_found:"Module non trouvé",version_not_supported:"This module version doesn't support the current version of InvoiceShelf",last_updated:"Mis à jour le",connect_installation:"Connectez votre installation",api_token_description:"Rendez-vous à {url} et connectez votre application en entrant le jeton d'API. Vos modules achetés apparaîtront ici une fois la connexion établie.",view_module:"Afficher le module",update_available:"Mise à jour disponible",purchased:"Acheté",installed:"Installé",no_modules_installed:"Aucun module installé !",disable_warning:"Tous les paramètres de ce module seront réinitialisés.",what_you_get:"Ce que vous obtenez"},Y7={title:"Utilisateurs",users_list:"Liste des utilisateurs",name:"Nom",description:"Description",added_on:"Ajouté le",date_of_creation:"Date de création",action:"Action",add_user:"Nouvel utilisateur",save_user:"Enregistrer l'utilisateur",update_user:"Enregistrer",user:"Utilisateur | Utilisateurs",add_new_user:"Nouvel utilisateur",new_user:"Nouvel utilisateur",edit_user:"Modifier cet utilisateur",no_users:"Aucun utilisateur",list_of_users:"Ajoutez des utilisateurs et retrouvez-les ici",email:"Email",phone:"Téléphone",password:"Mot de passe",user_attached_message:"Impossible de supprimer un élément déjà utilisé",confirm_delete:"Vous ne pourrez pas récupérer cet utilisateur | Vous ne pourrez pas récupérer ces utilisateurs",created_message:"Utilisateur créé",updated_message:"Utilisateur mis à jour",deleted_message:"Utilisateur supprimé | Utilisateurs supprimés",select_company_role:"Sélectionner un rôle pour {company}",companies:"Sociétés"},Z7={title:"Rapport",from_date:"Du",to_date:"Au",status:"Statut",paid:"Payé",unpaid:"Non payé",download_pdf:"Télécharger le PDF",view_pdf:"Afficher le PDF",update_report:"Actualiser",report:"Rapport | Rapports",profit_loss:{profit_loss:"Balance",to_date:"Au",from_date:"Du",date_range:"Période"},sales:{sales:"Ventes",date_range:"Période",to_date:"Au",from_date:"Du",report_type:"Trier"},taxes:{taxes:"Taxes",to_date:"Au",from_date:"Du",date_range:"Période"},errors:{required:"Champ requis"},invoices:{invoice:"Facture",invoice_date:"Date",due_date:"Date déchéance",amount:"Montant ",contact_name:"Contact",status:"Statut"},estimates:{estimate:"Devis",estimate_date:"Date",due_date:"Date d'échéance",estimate_number:"N°",ref_number:"Référence",amount:"Montant",contact_name:"Contact",status:"Statut"},expenses:{expenses:"Dépenses",category:"Nom",date:"Date",amount:"Montant",to_date:"Au",from_date:"Du",date_range:"Période"}},G7={menu_title:{account_settings:"Profil",company_information:"Coordonnées de la société",customization:"Personnalisation",preferences:"Préférences",notifications:"Notifications",tax_types:"Taxes",expense_category:"Catégories de dépense",update_app:"Mise à jour",backup:"Sauvegarde",file_disk:"Stockage",custom_fields:"Champs personnalisés",payment_modes:"Modes de paiement",notes:"Notes de bas de page",exchange_rate:"Taux de change",address_information:"Information d'adresse"},address_information:{section_description:" Vous pouvez mettre à jour vos informations d'adresse via le formulaire ci dessous."},title:"Paramètres",setting:"Paramètres | Paramètres",general:"Paramètres généraux",language:"Langue",primary_currency:"Devise principale",timezone:"Fuseau horaire",date_format:"Format de date",currencies:{title:"Devises",currency:"Devise | Devises",currencies_list:"Liste des devises",select_currency:"Sélectionnez la devise",name:"Nom",code:"Code ",symbol:"Symbole",precision:"Précision",thousand_separator:"Séparateur de milliers",decimal_separator:"Séparateur décimal",position:"Position",position_of_symbol:"Position du symbole",right:"Droite",left:"Gauche",action:"Action",add_currency:"Ajouter une devise"},mail:{host:"Adresse du serveur",port:"Port",driver:"Fournisseur",secret:"Secret",mailgun_secret:"Secret Mailgun",mailgun_domain:"Domaine",mailgun_endpoint:"Mailgun Endpoint",ses_secret:"SES Secret",ses_key:"SES Key",password:"Mot de passe",username:"Nom d'utilisateur",mail_config:"Envoi d'emails",from_name:"Nom de l'expéditeur",from_mail:"Email de l'expéditeur",encryption:"Chiffrement",mail_config_desc:"Saisissez ici les paramètres d'envoi de votre boîte email, afin que l'application puisse envoyer des messages. Vous pouvez également utiliser un service tiers, comme Sendgrid par exemple."},pdf:{title:"Paramètre PDF",footer_text:"Pied de page",pdf_layout:"Mise en page PDF"},company_info:{company_info:"Coordonnées de la société",company_name:"Nom",company_logo:"Logo",section_description:"Saisissez ici les coordonnées de votre entreprise qui s'afficheront sur tous vos documents.",phone:"Téléphone",country:"Pays",state:"État",city:"Ville",address:"Adresse",zip:"Code postal",save:"Enregistrer",delete:"Supprimer",updated_message:"Informations sur la société mises à jour",delete_company:"Supprimer la société",delete_company_description:"Une fois votre société supprimée, vous perdrez définitivement toutes les données et fichiers qui lui sont associés.",are_you_absolutely_sure:"En êtes vous vraiment sûr?",delete_company_modal_desc:"Cette action ne peut pas être annulée. Cela supprimera définitivement {company} et toutes les données associées.",delete_company_modal_label:"Veuillez saisir {company} pour confirmer"},custom_fields:{title:"Champs personnalisés",section_description:"Personnalisez vos factures, devis et reçus de paiement avec vos propres champs. Vous pouvez les utiliser dans les formats d'adresse ou dans les notes de bas de page.",add_custom_field:"Ajouter un champ personnalisé",edit_custom_field:"Modifier ce champ personnalisé",field_name:"Nom du champs",label:"Étiquette",type:"Type ",name:"Nom",slug:"Jeton",required:"Obligatoire",placeholder:"Indication",help_text:"Texte d'aide",default_value:"Valeur par défaut",prefix:"Préfixe",starting_number:"Numéro de départ",model:"Appliquer à",help_text_description:"Saisissez du texte pour aider les utilisateurs à comprendre l'objectif de ce champ personnalisé.",suffix:"Suffixe",yes:"Oui",no:"Non",order:"Ordre",custom_field_confirm_delete:"Vous ne pourrez pas récupérer ce champ personnalisé",already_in_use:"Le champ personnalisé est déjà utilisé",deleted_message:"Champ personnalisé supprimé",options:"les options",add_option:"Ajouter des options",add_another_option:"Ajouter une autre option",sort_in_alphabetical_order:"Trier par ordre alphabétique",add_options_in_bulk:"Ajouter des options en masse",use_predefined_options:"Utiliser des options prédéfinies",select_custom_date:"Sélectionnez une date personnalisée",select_relative_date:"Sélectionnez la date relative",ticked_by_default:"Coché par défaut",updated_message:"Champ personnalisé mis à jour",added_message:"Champ personnalisé ajouté",press_enter_to_add:"Appuyez sur Entrée pour ajouter une nouvelle option",model_in_use:"Impossible de mettre à jour le modèle pour les champs qui sont déjà utilisés.",type_in_use:"Impossible de mettre à jour le type des champs déjà utilisés."},customization:{customization:"Personnalisation",updated_message:"Informations la société mises à jour",save:"Enregistrer",insert_fields:"Insérer des champs",learn_custom_format:"Apprenez à utiliser le format personnalisé",add_new_component:"Ajouter un composant",component:"Composant",Parameter:"Paramètre",series:"Texte",series_description:"Un texte statique qui peut faire jusqu'à quatre caractères.",series_param_label:"Texte",delimiter:"Séparateur",delimiter_description:"Un caractère servant à séparer deux composants. Par exemple, un trait d'union",delimiter_param_label:"Caractère",date_format:"Date",date_format_description:`Une date qui peut formatée. Par exemple, "Y" affichera l'année en cours.`,date_format_param_label:"Format",sequence:"Suite",sequence_description:"Génère un numéro de facture unique. Vous pouvez indiquer le nombre de chiffres à utiliser.",sequence_param_label:"Longueur",customer_series:"Code client",customer_series_description:"Un code unique à chaque client, qui peut être indiqué dans les paramètres du client.",customer_sequence:"Numéro client",customer_sequence_description:"Un numéro de client unique.",customer_sequence_param_label:"Longueur",random_sequence:"Suite aléatoire",random_sequence_description:`Suite alphanumérique aléatoire. -Vous pouvez spécifier le nombre de caractère.`,random_sequence_param_label:"Longueur",invoices:{title:"Factures",invoice_number_format:"Format de numéro",invoice_number_format_description:"Personnalisez la structure de vos numéros de facture.",preview_invoice_number:"Aperçu",due_date:"Date d'échéance",due_date_description:"Indiquez si la date d'échéance doit être automatiquement définie lorsque vous créez une facture.",due_date_days:"Nombre de jours avant l'échéance de la facture",set_due_date_automatically:"Remplir automatiquement la date d'échéance",set_due_date_automatically_description:"Activez cette option si vous souhaitez définir automatiquement la date d'échéance lors de la création d'une facture.",default_formats:"Modèles",default_formats_description:"Modifiez ci-dessous les formats d'adresse ou l'email utilisé lors de la création d'une facture.",default_invoice_email_body:"Modèle d'email",company_address_format:"Adresse de la société",shipping_address_format:"Adresse d'expédition",billing_address_format:"Adresse de facturation",invoice_email_attachment:"Envoyer les factures en pièces jointes",invoice_email_attachment_setting_description:`Activez cette option si vous souhaitez envoyer les factures en pièces jointes. Le bouton "Afficher la facture" n'apparaîtra plus dans l'email.`,invoice_settings_updated:"Paramètres de facturation mis à jour",retrospective_edits:"Édition à postériori",allow:"Autoriser",disable_on_invoice_partial_paid:"Désactiver après l'enregistrement d'un paiement partiel",disable_on_invoice_paid:"Désactiver après l'enregistrement du paiement intégral",disable_on_invoice_sent:"Désactiver après l'envoi de la facture",retrospective_edits_description:"Vous pouvez empêcher la modification de factures lorsque un paiement est effectué, pour être en conformité avec la loi de certains pays."},estimates:{title:"Devis",estimate_number_format:"Format de numéro",estimate_number_format_description:"Personnalisez la structure de vos numéros de devis.",preview_estimate_number:"Aperçu",expiry_date:"Date d'expiration",expiry_date_description:"Indiquez si la date d'échéance doit être automatiquement définie lorsque vous créez un devis.",expiry_date_days:"Le devis expire après les jours",set_expiry_date_automatically:"Définir automatiquement la date d'expiration",set_expiry_date_automatically_description:"Activez cette option si vous souhaitez définir automatiquement la date d'échéance lors de la création d'un devis.",default_formats:"Formats par défaut",default_formats_description:"Modifiez ci-dessous les formats d'adresse ou l'email utilisé lors de la création d'un devis.",default_estimate_email_body:"Modèle d'email",company_address_format:"Adresse de la société",shipping_address_format:"Adresse d'expédition",billing_address_format:"Adresse de facturation",estimate_email_attachment:"Envoyer les devis en pièces jointes",estimate_email_attachment_setting_description:`Activez cette option si vous souhaitez envoyer les devis en pièces jointes. Le bouton "Afficher le devis" n'apparaîtra plus dans l'email.`,estimate_settings_updated:"Paramètres de devis mis à jour",convert_estimate_options:"Conversion du devis",convert_estimate_description:"Indiquez quoi faire du devis après sa conversion en facture.",no_action:"Ne rien faire",delete_estimate:"Supprimer le devis",mark_estimate_as_accepted:"Marquer le devis comme accepté"},payments:{title:"Paiements",payment_number_format:"Format de numéro",payment_number_format_description:"Personnalisez la structure de vos numéros de reçu de paiement.",preview_payment_number:"Aperçu",default_formats:"Formats par défaut",default_formats_description:"Modifiez ci-dessous les formats d'adresse ou l'email utilisé lors de la création d'un reçu de paiement.",default_payment_email_body:"Modèle d'email",company_address_format:"Adresse de la société",from_customer_address_format:"Adresse de facturation",payment_email_attachment:"Envoyer les reçus de paiement en pièces jointes",payment_email_attachment_setting_description:`Activez cette option si vous souhaitez envoyer les devis en pièces jointes. Le bouton "Afficher le reçu de paiement" n'apparaîtra plus dans l'email.`,payment_settings_updated:"Paramètres mis à jour"},items:{title:"Articles",units:"Unités",add_item_unit:"Ajouter une unité",edit_item_unit:"Modifier cette unité",unit_name:"Nom",item_unit_added:"Unité ajoutée",item_unit_updated:"Unité mis à jour",item_unit_confirm_delete:"Êtes-vous sur de supprimer cette unité ?",already_in_use:"Cette unité existe déjà",deleted_message:"Unité supprimée"},notes:{title:"Notes de bas de page",description:"Créez des notes de bas de page réutilisable sur vos factures, devis et paiements.",notes:"Note de bas de page",type:"Type ",add_note:"Nouvelle note de bas de page",add_new_note:"Ajouter une note de bas de page",name:"Nom",edit_note:"Modifier cette note de bas de page",note_added:"Note de bas de page ajoutée",note_updated:"Note de bas de page mise à jour",note_confirm_delete:"Vous ne pourrez pas récupérer cette note de bas de page",already_in_use:"La note de bas de page est déjà utilisée",deleted_message:"Note de bas de page supprimée"}},account_settings:{profile_picture:"Image de profil",name:"Nom",email:"Email",password:"Mot de passe",confirm_password:"Confirmez le mot de passe",account_settings:"Profil",save:"Enregistrer",section_description:"Mettez à jour ici vos paramètres de compte, tels que votre nom, votre email ou votre mot de passe.",updated_message:"Profil mis à jour"},user_profile:{name:"Nom",email:"Email",password:"Mot de passe",confirm_password:"Confirmez le mot de passe"},notification:{title:"Notifications",email:"Envoyer des notifications à",description:"Définissez ici les notifications que vous souhaitez recevoir par email.",invoice_viewed:"Facture consultée",invoice_viewed_desc:"Lorsque le client visualise la facture envoyée via le tableau de bord de Neptune.",estimate_viewed:"Devis consulté",estimate_viewed_desc:"Lorsque le client visualise le devis envoyé via le tableau de bord de Neptune.",save:"Enregistrer",email_save_message:"Email enregistré",please_enter_email:"Veuillez entrer un email"},roles:{title:"Rôles",description:"Gérer les rôles & autorisations de cette société",save:"Enregistrer",add_new_role:"Ajouter un rôle",role_name:"Nom",added_on:"Ajouté le",add_role:"Ajouter un rôle",edit_role:"Modifier ce rôle",name:"Nom",permission:"Autorisation | Autorisations",select_all:"Tout sélectionner",none:"Aucun",confirm_delete:"Vous ne pourrez pas récupérer ce rôle",created_message:"Rôle créé",updated_message:"Rôle mis à jour",deleted_message:"Rôle supprimé",already_in_use:"Le rôle est déjà utilisé"},exchange_rate:{exchange_rate:"Taux de change",title:"Résoudre les problèmes de taux de change",description:"Veuillez entrez le taux de change pour toutes les devises mentionnées ci-dessous pour calculer les totaux en {currency}.",drivers:"Fournisseurs",new_driver:"Ajouter un fournisseur",edit_driver:"Modifier ce fournisseur",select_driver:"Sélectionner un fournisseur",update:"sélectionner le taux de change ",providers_description:"Configurez vos fournisseurs de taux de change ici pour récupérer automatiquement le dernier taux de change sur les transactions.",key:"Clé d'API",name:"Nom",driver:"Fournisseur",is_default:"PAR DÉFAUT",currency:"Devises",exchange_rate_confirm_delete:"Vous ne pourrez pas récupérer ce fournisseur",created_message:"Fournisseur créé",updated_message:"Fournisseur mis à jour",deleted_message:"Fournisseur supprimé",error:"Vous ne pouvez pas supprimer le fournisseur actif",default_currency_error:"Cette devise est déjà affectée à un fournisseur",exchange_help_text:"Veuillez entrer le taux de change pour convertir {currency} en {baseCurrency}",currency_freak:"Currency Freak",currency_layer:"Currency Layer",open_exchange_rate:"Open Exchange Rate",currency_converter:"Currency Converter",server:"Serveur",url:"URL",active:"Actif",currency_help_text:"Ce fournisseur ne sera utilisé que pour les devises sélectionnées ci-dessus",currency_in_used:"Les devises suivantes sont déjà affectées à un autre fournisseur. Veuillez désélectionner ces devises pour réactiver ce fournisseur."},tax_types:{title:"Taxes",add_tax:"Ajouter une taxe",edit_tax:"Modifier cette taxe",description:"Ajoutez ou supprimez ici des taxes, et choisissez si elles s'appliquent individuellement aux articles ou au montant total.",add_new_tax:"Nouvelle taxe",tax_settings:"Paramètres de taxe",tax_per_item:"Taxe par article",tax_name:"Nom",compound_tax:"Taxe empilée",percent:"Pourcentage",action:"action",tax_setting_description:"Activez cette option si vous souhaitez ajouter des taxes à des postes de facture individuels. Par défaut, les taxes sont ajoutées directement à la facture.",created_message:"Taxe créée",updated_message:"Taxe mise à jour",deleted_message:"Taxe supprimée",confirm_delete:"Vous ne pourrez pas récupérer ce type de taxe",already_in_use:"La taxe est déjà utilisée"},payment_modes:{title:"Moyens de paiement",description:"Indiquez les différents moyen de paiement que vous utilisez",add_payment_mode:"Ajouter un mode de paiement",edit_payment_mode:"Modifier le mode de paiement",mode_name:"Nom",payment_mode_added:"Mode de paiement ajouté",payment_mode_updated:"Mode de paiement mis à jour",payment_mode_confirm_delete:"Vous ne pourrez pas récupérer ce mode de paiement",payments_attached:"This payment method is already attached to payments. Please delete the attached payments to proceed with deletion.",expenses_attached:"This payment method is already attached to expenses. Please delete the attached expenses to proceed with deletion.",deleted_message:"Mode de paiement supprimé"},expense_category:{title:"Catégories de dépense",action:"action",description:"Ajoutez ou supprimez ici des catégories de dépense.",add_new_category:"Ajouter une catégorie",add_category:"Nouvelle catégorie",edit_category:"Modifier cette catégorie",category_name:"Nom",category_description:"Description",created_message:"Catégorie de dépenses créée",deleted_message:"Catégorie de dépenses supprimée",updated_message:"Catégorie de dépenses mise à jour",confirm_delete:"Vous ne pourrez pas récupérer cette catégorie de dépenses",already_in_use:"La catégorie est déjà utilisée"},preferences:{currency:"Devise",default_language:"Langue par défaut",time_zone:"Fuseau horaire",fiscal_year:"Exercice fiscal",date_format:"Format de date",discount_setting:"Réglage de remise",discount_per_item:"Remise par article",discount_setting_description:"Activez cette option si vous souhaitez détailler les remises par article. Par défaut, les remises sont ajoutées au sous-total.",expire_public_links:"Expiration automatique des liens publics",expire_setting_description:"Spécifiez si vous souhaitez faire expirer tous les liens publiques envoyés par l'application pour consulter les factures, devis, paiements,... après une durée spécifique.",save:"Enregistrer",preference:"Préférence | Préférences",general_settings:"Modifiez ici les paramètres globaux de InvoiceShelf.",updated_message:"Préférences mises à jour",select_language:"Choisir la langue",select_time_zone:"Sélectionnez le fuseau horaire",select_date_format:"Sélectionnez le format de date",select_financial_year:"Exercice fiscal",recurring_invoice_status:"Statut de la facture récurrente",create_status:"Créer un statut",active:"Actif",on_hold:"En attente",update_status:"Mettre à jour le statut",completed:"Terminé",company_currency_unchangeable:"La devise de la société ne peut pas être modifiée"},update_app:{title:"Mise à jour",description:"Mettez simplement InvoiceShelf à jour en cliquant sur le bouton ci-dessous.",check_update:"Rechercher des mises à jour",avail_update:"Nouvelle mise à jour disponible",next_version:"Version suivante",requirements:"Spécifications requises",update:"Mettre à jour maintenant",update_progress:"Mise à jour en cours...",progress_text:"Cela ne prendra que quelques minutes. Veuillez ne pas actualiser ou fermer la fenêtre avant la fin de la mise à jour",update_success:"L'application a été mise à jour. Veuillez patienter pendant le rechargement de la fenêtre de votre navigateur.",latest_message:"Bravo, vous êtes à jour.",current_version:"Version actuelle",download_zip_file:"Télécharger le fichier ZIP",unzipping_package:"Dézipper le package",copying_files:"Copie de fichiers en cours",deleting_files:"Supprimer les fichiers inutilisés",running_migrations:"Migrations en cours",finishing_update:"Finalisation de la mise à jour",update_failed:"Échec de la mise à jour",update_failed_text:"Désolé ! Votre mise à jour a échoué à: {step} étape",update_warning:"Cet utilitaire va écraser tous les fichiers et templates de l'application. Veuillez faire une sauvegarde de vos templates et de la base de donnée avant de faire la mise à jour."},backup:{title:"Sauvegarde | Sauvegardes",description:"Gérez ici vos sauvegardes. InvoiceShelf créée un fichiez ZIP contenant vos fichiers et un export de la base de données.",new_backup:"Faire une sauvegarde",create_backup:"Créer une sauvegarde",select_backup_type:"Type de sauvegarde",backup_confirm_delete:"Vous ne pourrez pas récupérer cette sauvegarde",path:"chemin",new_disk:"Nouveau stockage",created_at:"créé à",size:"taille",dropbox:"dropbox",local:"local",healthy:"en bonne santé",amount_of_backups:"nombre de sauvegardes",newest_backups:"dernières sauvegardes",used_storage:"Stockage utilisé",select_disk:"Emplacement",action:"Action",deleted_message:"Sauvegarde supprimée",created_message:"Sauvegarde créée",invalid_disk_credentials:"Informations d'identification invalides de l'espace de stockage"},disk:{title:"Stockage | Stockages",description:"InvoiceShelf utilise par défaut votre disque local pour stocker les sauvegardes, les avatar et d'autres fichiers image. Vous pouvez configurer d'autres comptes de stockage, comme DigitalOcean, S3 et Dropbox.",created_at:"créé à",dropbox:"dropbox",name:"Nom",driver:"Compte de stockage",disk_type:"Type ",disk_name:"Nom",new_disk:"Ajouter un espace de stockage",filesystem_driver:"Fournisseur",local_driver:"stockage local",local_root:"répertoire local",public_driver:"Stockage public",public_root:"Répertoire public",public_url:"URL publique",public_visibility:"Visibilité publique",media_driver:"Stockage multimédia",media_root:"Répertoire média",aws_driver:"AWS",aws_key:"AWS Key",aws_secret:"AWS Secret",aws_region:"Région AWS",aws_bucket:"Bucket",aws_root:"Répertoire",do_spaces_type:"Type",do_spaces_key:"Key",do_spaces_secret:"Secret",do_spaces_region:"Région",do_spaces_bucket:"Bucket",do_spaces_endpoint:"Endpoint",do_spaces_root:"Répertoire",dropbox_type:"Type",dropbox_token:"Token",dropbox_key:"Key",dropbox_secret:"Secret",dropbox_app:"Application",dropbox_root:"Répertoire",default_driver:"Fournisseur par défaut",is_default:"Par défaut",set_default_disk:"Définir l'espace par défaut",set_default_disk_confirm:"Cet espace sera utilisé par défaut pour l'enregistrement des PDF",success_set_default_disk:"Stockage par défaut mis à jour",save_pdf_to_disk:"Enregistrer les PDF sur le disque",disk_setting_description:"Activez cette option si vous souhaitez enregistrer automatiquement une copie de chaque facture, devis et reçu de paiement PDF sur votre disque par défaut. L'activation de cette option réduira le temps de chargement lors de l'affichage des PDF.",select_disk:"Emplacement",disk_settings:"Paramètres de stockage",confirm_delete:"Vos fichiers et dossiers existants sur le disque spécifié ne seront pas affectés, mais la configuration de votre disque sera supprimée de InvoiceShelf",action:"Action",edit_file_disk:"Modifier cet espace de stockage",success_create:"Stockage ajouté",success_update:"Stockage mis à jour",error:"L'ajout de disque a échoué",deleted_message:"Stockage supprimé",disk_variables_save_successfully:"Stockage configuré",disk_variables_save_error:"La configuration du stockage a échoué.",invalid_disk_credentials:"Informations d'identification non valides du stockage sélectionné"},taxations:{add_billing_address:"Entrez l'adresse de facturation",add_shipping_address:"Entrez l'adresse de livraison",add_company_address:"Entrez l'adresse de la société",modal_description:"Les informations ci-dessous sont requises afin de récupérer les taxes de vente.",add_address:"Ajoutez une adresse pour récupérer les taxes de vente.",address_placeholder:"Exemple: 123, My Street",city_placeholder:"Exemple: Los Angeles",state_placeholder:"Exemple: CA",zip_placeholder:"Exemple: 90024",invalid_address:"Veuillez fournir une adresse valide."}},Q7={account_info:"Information du compte",account_info_desc:"Les détails ci-dessous seront utilisés pour créer le compte administrateur principal. Aussi, vous pouvez modifier les détails à tout moment après la connexion.",name:"Nom",email:"Email",password:"Mot de passe",confirm_password:"Confirmez le mot de passe",save_cont:"Enregistrer et poursuivre",company_info:"Coordonnées de la société",company_info_desc:"Ces informations seront affichées sur les factures. Notez que vous pouvez éditer ceci plus tard sur la page des paramètres.",company_name:"Nom",company_logo:"Logo",logo_preview:"Aperçu",preferences:"Préférences",preferences_desc:"Préférences par défaut du système.",currency_set_alert:"La devise ne pourra pas être changé.",country:"Pays",state:"État",city:"Ville",address:"Adresse",street:"Rue 1 | Rue 2",phone:"Téléphone",zip_code:"Code postal",go_back:"Revenir",currency:"Devise",language:"Langue",time_zone:"Fuseau horaire",fiscal_year:"Exercice fiscal",date_format:"Format de date",from_address:"De l'adresse",username:"Nom d'utilisateur",next:"Suivant",continue:"Poursuivre",skip:"Ignorer",database:{database:"URL du site et base de données",connection:"Connexion à la base de données",host:"Serveur de la base de données",port:"Port de la base de données",password:"Mot de passe de la base de données",app_url:"Application URL",app_domain:"Nom de domaine",username:"Nom d'utilisateur de la base de données",db_name:"Nom de la base de données",db_path:"Emplacement de la base de données",desc:"Créez une base de données sur votre serveur et définissez les informations d'identification à l'aide du formulaire ci-dessous."},permissions:{permissions:"Permissions",permission_confirm_title:"Êtes-vous certain de vouloir continuer ?",permission_confirm_desc:"La vérification des permissions du dossier a échoué",permission_desc:"Vous trouverez ci-dessous la liste des permissions de dossier requises pour le fonctionnement de l'application. Si la vérification des permissions échoue, veillez mettre à jour vos permissions de dossier."},verify_domain:{title:"Vérification du domaine",desc:"InvoiceShelf utilise l'authentification basée sur la session qui nécessite une vérification du domaine pour des raisons de sécurité. Veuillez saisir le domaine sur lequel vous allez accéder à votre application web.",app_domain:"Domaine de l'application",verify_now:"Vérifier maintenant",success:"Vérification du domaine réussie.",failed:"La vérification du domaine a échoué. Veuillez entrer un nom de domaine valide.",verify_and_continue:"Vérifier et continuer"},mail:{host:"Serveur email",port:"Port",driver:"Fournisseur d'email",secret:"Secret",mailgun_secret:"Secret",mailgun_domain:"Nom de domaine",mailgun_endpoint:"Endpoint",ses_secret:"Secret",ses_key:"Key",password:"Mot de passe",username:"Nom d'utilisateur",mail_config:"Envoi d'emails",from_name:"Nom de messagerie",from_mail:"Email de l'expéditeur",encryption:"Chiffrement des emails",mail_config_desc:"Les détails ci-dessous seront utilisés pour mettre à jour le fournisseur de messagerie. Vous pourrez modifier ceux-ci à tout moment après la connexion."},req:{system_req:"Configuration requise",php_req_version:"Php (version {version} nécessaire)",check_req:"Vérifier les prérequis",system_req_desc:"InvoiceShelf a quelques prérequis. Assurez-vous que votre serveur dispose de la version Php requise et de toutes les extensions mentionnées ci-dessous."},errors:{migrate_failed:"Échec de la migration",database_variables_save_error:"Impossible de créer le fichier de configuration. Veuillez vérifier les permissions du répertoire",mail_variables_save_error:"La configuration du courrier électronique a échoué.",connection_failed:"La connexion à la base de données a échoué",database_should_be_empty:"La base de données devrait être vide"},success:{mail_variables_save_successfully:"Email configuré",database_variables_save_successfully:"Base de données configurée."}},J7={invalid_phone:"Numéro de téléphone invalide",invalid_url:"URL invalide (ex: http://www.invoiceshelf.com)",invalid_domain_url:"URL invalide (ex: invoiceshelf.com)",required:"Champ requis",email_incorrect:"Adresse Email incorrecte.",email_already_taken:"Un compte est déjà associé à cette adresse email.",email_does_not_exist:"Cet utilisateur n'existe pas",item_unit_already_taken:"Cette unité est déjà été utilisée",payment_mode_already_taken:"Ce moyen de paiement est déjà utilisé",send_reset_link:"Envoyer le lien de réinitialisation",not_yet:"Pas encore reçu ? Réessayer",password_min_length:"Le mot de passe doit contenir au moins {count} caractères",name_min_length:"Le nom doit comporter au moins {count} lettres.",prefix_min_length:"Le préfixe doit faire au moins {count} lettres.",enter_valid_tax_rate:"Entrez un taux de taxe valide",numbers_only:"Chiffres uniquement.",characters_only:"Caractères seulement.",password_incorrect:"Les mots de passe doivent être identiques",password_length:"Le mot de passe doit comporter au moins {count} caractères.",qty_must_greater_than_zero:"La quantité doit être supérieure à zéro.",price_greater_than_zero:"Le prix doit être supérieur à zéro.",payment_greater_than_zero:"Le paiement doit être supérieur à zéro.",payment_greater_than_due_amount:"Le paiement saisi est plus élevé que le montant dû de cette facture.",quantity_maxlength:"La quantité ne doit pas dépasser 20 chiffres.",price_maxlength:"Le prix ne doit pas dépasser 20 chiffres.",price_minvalue:"Le prix doit être supérieur à 0.",amount_maxlength:"Le montant ne doit pas dépasser 20 chiffres.",amount_minvalue:"Le montant doit être supérieur à 0.",discount_maxlength:"La remise ne doit pas être supérieure à la remise maximale",description_maxlength:"La description ne doit pas dépasser 255 caractères.",subject_maxlength:"L'objet ne doit pas dépasser 100 caractères.",message_maxlength:"Le message ne doit pas dépasser 255 caractères.",maximum_options_error:"Maximum de {max} options sélectionnées. Commencez par supprimer une option sélectionnée pour en sélectionner une autre.",notes_maxlength:"Les notes de bas de page ne doivent pas dépasser 255 caractères.",address_maxlength:"L'adresse ne doit pas dépasser 255 caractères.",ref_number_maxlength:"Le numéro de référence ne doit pas dépasser 255 caractères.",prefix_maxlength:"Le préfixe ne doit pas dépasser 5 caractères.",something_went_wrong:"quelque chose a mal tourné",number_length_minvalue:"Ce nombre doit être supérieur à 0",at_least_one_ability:"Veuillez sélectionner au moins une autorisation.",valid_driver_key:"Veuillez saisir une clé {driver} valide.",valid_exchange_rate:"Veuillez saisir un taux de change valide.",company_name_not_same:"Le nom de la société doit correspondre au nom fourni."},X7={starter_plan:"Cette fonctionnalité est disponible à partir du plan Starter.",invalid_provider_key:"Veuillez entrer une clé d'API valide du fournisseur.",estimate_number_used:"Ce numéro de devis est déjà utilisé.",invoice_number_used:"Ce numéro de facture est déjà utilisé.",payment_attached:"Cette facture est liée à un reçu de paiement. Veuillez d'abord le supprimer avant de poursuivre.",payment_number_used:"Ce numéro de paiement est déjà utilisé.",name_already_taken:"Ce nom est déjà pris.",receipt_does_not_exist:"Le reçu n'existe pas.",customer_cannot_be_changed_after_payment_is_added:"Le client ne peut pas être modifié après l'ajout du paiement",invalid_credentials:"Identifiants invalides.",not_allowed:"Non autorisé",login_invalid_credentials:"Ces identifiants ne correspondent pas à nos enregistrements.",enter_valid_cron_format:"Veuillez entrer une tâche Cron valide",email_could_not_be_sent:"L'Email n'a pas pu être envoyé vers cette adresse email.",invalid_address:"Veuillez spécifier une adresse valide.",invalid_key:"Veuillez spécifier une clé valide.",invalid_state:"Veuillez spécifier un état valide.",invalid_city:"Veuillez spécifier une ville valide.",invalid_postal_code:"Veuillez spécifier un code postal valide.",invalid_format:"Veuillez spécifier un format de requête valide.",api_error:"Le serveur ne répond plus.",feature_not_enabled:"Fonctionnalité inactive.",request_limit_met:"Limite de requêtes API dépassée.",address_incomplete:"Adresse incomplète"},e9="Devis",t9="N°",a9="Date",n9="Date d'expiration",i9="Facture",o9="Numéro",s9="Date",r9="Date d’échéance",l9="Notes de bas de page",c9="Articles",d9="Quantité",u9="Prix",_9="Remise",m9="Montant",p9="Sous-total",f9="Total TTC",h9="Paiement",g9="Reçu de paiement",v9="Date de paiement",y9="Numéro",b9="Moyen de paiement",k9="Montant reçu",w9="RAPPORT DE DÉPENSES",D9="TOTAL DES DÉPENSES",x9="RECETTES ET DÉPENSES",S9="Rapport de vente client",P9="Rapport de vente par articles",E9="Rapport de résumé fiscal",z9="REVENU",A9="RÉSULTAT",C9="Rapport de ventes : par client",T9="TOTAL DES VENTES",j9="Rapport des ventes : par article",N9="TAXES",I9="TOTAL",F9="Taxe",R9="Dépenses",O9="Facturer à",M9="Expédier à",$9="Reçu de :",L9="Taxe",B9={navigation:j7,general:N7,dashboard:I7,tax_types:F7,global_search:R7,company_switcher:O7,dateRange:M7,customers:$7,items:L7,estimates:B7,invoices:U7,recurring_invoices:V7,payments:q7,expenses:W7,login:H7,modules:K7,users:Y7,reports:Z7,settings:G7,wizard:Q7,validation:J7,errors:X7,pdf_estimate_label:e9,pdf_estimate_number:t9,pdf_estimate_date:a9,pdf_estimate_expire_date:n9,pdf_invoice_label:i9,pdf_invoice_number:o9,pdf_invoice_date:s9,pdf_invoice_due_date:r9,pdf_notes:l9,pdf_items_label:c9,pdf_quantity_label:d9,pdf_price_label:u9,pdf_discount_label:_9,pdf_amount_label:m9,pdf_subtotal:p9,pdf_total:f9,pdf_payment_label:h9,pdf_payment_receipt_label:g9,pdf_payment_date:v9,pdf_payment_number:y9,pdf_payment_mode:b9,pdf_payment_amount_received_label:k9,pdf_expense_report_label:w9,pdf_total_expenses_label:D9,pdf_profit_loss_label:x9,pdf_sales_customers_label:S9,pdf_sales_items_label:P9,pdf_tax_summery_label:E9,pdf_income_label:z9,pdf_net_profit_label:A9,pdf_customer_sales_report:C9,pdf_total_sales_label:T9,pdf_item_sales_label:j9,pdf_tax_report_label:N9,pdf_total_tax_label:I9,pdf_tax_types_label:F9,pdf_expenses_label:R9,pdf_bill_to:O9,pdf_ship_to:M9,pdf_received_from:$9,pdf_tax_label:L9},U9={dashboard:"Tablero",customers:"Clientes",items:"Artículos",invoices:"Facturas","recurring-invoices":"Facturas recurrentes",expenses:"Gastos",estimates:"Presupuestos",payments:"Pagos",reports:"Informes",settings:"Ajustes",logout:"Cerrar sesión",users:"Usuarios",modules:"Módulos"},V9={add_company:"Añadir empresa",view_pdf:"Ver PDF",copy_pdf_url:"Copiar dirección URL del archivo PDF",download_pdf:"Descargar PDF",save:"Guardar",create:"Crear",cancel:"Cancelar",update:"Actualizar",deselect:"Deseleccionar",download:"Descargar",from_date:"Desde la fecha",to_date:"Hasta la fecha",from:"De",to:"A",ok:"De acuerdo",yes:"Sí",no:"No",sort_by:"Ordenar por",ascending:"Ascendente",descending:"Descendente",subject:"Asunto",body:"Cuerpo",message:"Mensaje",send:"Enviar",preview:"Previsualizar",go_back:"Volver",back_to_login:"¿Volver al inicio de sesión?",home:"Inicio",filter:"Filtrar",delete:"Eliminar",edit:"Editar",view:"Ver",add_new_item:"Agregar ítem nuevo",clear_all:"Limpiar todo",showing:"Mostrar",of:"de",actions:"Acciones",subtotal:"SUBTOTAL",discount:"DESCUENTO",fixed:"Fijo",percentage:"Porcentaje",tax:"IMPUESTO",total_amount:"VALOR TOTAL",bill_to:"Cobrar a",ship_to:"Enviar a",due:"Debido",draft:"Borrador",sent:"Enviado",all:"Todas",select_all:"Seleccionar todo",select_template:"Seleccionar plantilla",choose_file:"Haga clic aquí para elegir un archivo",choose_template:"Elige una plantilla",choose:"Escoger",remove:"Eliminar",select_a_status:"Selecciona un estado",select_a_tax:"Selecciona un impuesto",search:"Buscar",are_you_sure:"¿Estás seguro?",list_is_empty:"La lista esta vacía.",no_tax_found:"¡No se encontraron impuestos!",four_zero_four:"404",you_got_lost:"Whoops! ¡Te perdiste!",go_home:"Volver al Inicio",test_mail_conf:"Probar configuración de correo",send_mail_successfully:"El correo enviado con éxito",setting_updated:"Configuración actualizada con éxito",select_state:"Seleccionar estado",select_country:"Seleccionar país",select_city:"Seleccionar ciudad",street_1:"Calle 1",street_2:"Calle 2",action_failed:"Accion Fallida",retry:"Procesar de nuevo",choose_note:"Elegir nota",no_note_found:"No se encontró ninguna nota",insert_note:"Insertar una nota",copied_pdf_url_clipboard:"Copiar Url al portapapeles",copied_url_clipboard:"¡URL copiada al portapapeles!",docs:"Documentación",do_you_wish_to_continue:"¿Deseas continuar?",note:"Nota",pay_invoice:"Pagar factura",login_successfully:"Logeado Satisfactoriamente!",logged_out_successfully:"Logeado Satisfactoriamente",mark_as_default:"Marcar como predeterminado"},q9={select_year:"Seleccionar año",cards:{due_amount:"Importe pendiente",customers:"Clientes",invoices:"Facturas",estimates:"Presupuestos",payments:"Ver Medios de Pago"},chart_info:{total_sales:"Ventas",total_receipts:"Ingresos",total_expense:"Gastos",net_income:"Ingresos netos",year:"Seleccione año"},monthly_chart:{title:"Gastos de venta"},recent_invoices_card:{title:"Facturas adeudadas",due_on:"Debido a",customer:"Cliente",amount_due:"Importe pendiente",actions:"Acciones",view_all:"Ver todo"},recent_estimate_card:{title:"Presupuestos recientes",date:"Fecha",customer:"Cliente",amount_due:"Importe pendiente",actions:"Acciones",view_all:"Ver todo"}},W9={name:"Nombre",description:"Descripción",percent:"Por ciento",compound_tax:"Impuesto compuesto"},H9={search:"Buscar...",customers:"Clientes",users:"Usuarios",no_results_found:"No se encontraron resultados"},K9={label:"CAMBIAR EMPRESA",no_results_found:"No se encontraron resultados",add_new_company:"Añadir nueva empresa",new_company:"Nueva empresa",created_message:"Empresa creada satisfactoriamente"},Y9={today:"Hoy",this_week:"Esta semana",this_month:"Este mes",this_quarter:"Este trimestre",this_year:"Año actual",previous_week:"Semana pasada",previous_month:"Mes pasado",previous_quarter:"Trimestre pasado",previous_year:"Año pasado",custom:"Personalizado"},Z9={title:"Clientes",prefix:"Prefijo",add_customer:"Agregar cliente",contacts_list:"Lista de clientes",name:"Nombre",mail:"Correo | Correos",statement:"Declaración",display_name:"Nombre para mostrar",primary_contact_name:"Nombre de contacto primario",contact_name:"Nombre de contacto",amount_due:"Importe pendiente",email:"Correo electrónico",address:"Dirección",phone:"Teléfono",website:"Sitio web",overview:"Descripción general",invoice_prefix:"Prefijo de la factura",estimate_prefix:"Prefijo de los presupuestos",payment_prefix:"Prefijo de pago",enable_portal:"Habilitar Portal",country:"País",state:"Estado",city:"Ciudad",zip_code:"Código postal",added_on:"Añadido el",action:"Acción",password:"Contraseña",confirm_password:"Confirmar contraseña",street_number:"Número de calle",primary_currency:"Moneda primaria",description:"Descripción",add_new_customer:"Agregar nuevo cliente",save_customer:"Guardar cliente",update_customer:"Actualizar cliente",customer:"Cliente | Clientes",new_customer:"Nuevo cliente",edit_customer:"Editar cliente",basic_info:"Información básica",portal_access:"Acceso al portal",portal_access_text:"¿Le gustaría permitir que este cliente inicie sesión en el Portal del Cliente?",portal_access_url:"Portal URL del cliente",portal_access_url_help:"Por favor, copie y reenvíe la URL anterior a su cliente para proporcionar acceso.",billing_address:"Dirección de Facturación",shipping_address:"Dirección de Envío",copy_billing_address:"Copia de facturación",no_customers:"¡Aún no hay clientes!",no_customers_found:"¡No se encontraron clientes!",no_contact:"No hay contactos",no_contact_name:"No hay nombres de contactos",list_of_customers:"Esta sección contendrá la lista de clientes.",primary_display_name:"Nombre de visualización principal",select_currency:"Seleccione el tipo de moneda",select_a_customer:"Selecciona un cliente",type_or_click:"Escriba o haga clic para seleccionar",new_transaction:"Nueva transacción",no_matching_customers:"¡No hay clientes coincidentes!",phone_number:"Número de teléfono",create_date:"Fecha de Creación",confirm_delete:"No podrá recuperar este cliente y todas las facturas, estimaciones y pagos relacionados. | No podrá recuperar estos clientes y todas las facturas, estimaciones y pagos relacionados.",created_message:"Cliente creado con éxito",updated_message:"Cliente actualizado con éxito",address_updated_message:"Información del domicilio actualizado correctamente",deleted_message:"Cliente eliminado correctamente | Clientes eliminados exitosamente",edit_currency_not_allowed:"No se puede cambiar la divisa una vez creadas las transacciones."},G9={title:"Artículos",items_list:"Lista de artículos",name:"Nombre",unit:"Unidad",description:"Descripción",added_on:"Añadido",price:"Precio",date_of_creation:"Fecha de creación",not_selected:"Ningún elemento seleccionado",action:"Acción",add_item:"Añadir artículo",save_item:"Guardar artículo",update_item:"Actualizar elemento",item:"Artículo | Artículos",add_new_item:"Agregar ítem nuevo",new_item:"Nuevo artículo",edit_item:"Editar elemento",no_items:"¡Aún no hay artículos!",list_of_items:"Esta sección contendrá la lista de artículos.",select_a_unit:"seleccionar unidad",taxes:"Impuestos",item_attached_message:"No se puede eliminar un elemento que ya está en uso.",confirm_delete:"No podrá recuperar este artículo | No podrás recuperar estos elementos",created_message:"Artículo creado con éxito",updated_message:"Artículo actualizado con éxito",deleted_message:"Elemento eliminado con éxito | Elementos eliminados correctamente"},Q9={title:"Presupuestos",accept_estimate:"Aceptar cotización",reject_estimate:"Rechazar cotización",estimate:"Presupuesto | Presupuestos",estimates_list:"Lista de presupuestos",days:"{días} Días",months:"{meses} Mes",years:"{años} Año",all:"Todas",paid:"Pagada",unpaid:"No pagado",customer:"CLIENTE",ref_no:"NÚMERO DE REFERENCIA.",number:"NÚMERO",amount_due:"IMPORTE PENDIENTE",partially_paid:"Parcialmente pagado",total:"Total",discount:"Descuento",sub_total:"Subtotal",estimate_number:"Número de Presupuesto",ref_number:"Número de referencia",contact:"Contacto",add_item:"Agregar un artículo",date:"Fecha",due_date:"Fecha de vencimiento",expiry_date:"Fecha de caducidad",status:"Estado",add_tax:"Agregar impuesto",amount:"Cantidad",action:"Acción",notes:"Notas",tax:"Impuesto",estimate_template:"Plantilla de presupuesto",convert_to_invoice:"Convertir a factura",mark_as_sent:"Marcar como enviado",send_estimate:"Enviar presupuesto",resend_estimate:"Reenviar estimado",record_payment:"Registro de pago",add_estimate:"Agregar presupuesto",save_estimate:"Guardar presupuesto",confirm_conversion:"¿Quiere convertir este presupuesto en una factura?",conversion_message:"Conversión exitosa",confirm_send_estimate:"Este presupuesto se enviará por correo electrónico al cliente",confirm_mark_as_sent:"Este presupuesto se marcará como enviado",confirm_mark_as_accepted:"Este presupuesto se marcará como Aceptado",confirm_mark_as_rejected:"Este presupuesto se marcará como Rechazado",no_matching_estimates:"¡No hay presupuestos coincidentes!",mark_as_sent_successfully:"Presupuesto marcado como enviado correctamente",send_estimate_successfully:"Presupuesto enviado con éxito",errors:{required:"Se requiere campo"},accepted:"Aceptado",rejected:"Rechazado",expired:"Caducado",sent:"Enviado",draft:"Borrador",viewed:"Visto",declined:"Rechazado",new_estimate:"Nuevo presupuesto",add_new_estimate:"Añadir nuevo presupuesto",update_Estimate:"Actualizar presupuesto",edit_estimate:"Editar presupuesto",items:"artículos",Estimate:"Presupuestos | Presupuestos",add_new_tax:"Agregar nuevo impuesto",no_estimates:"¡Aún no hay presupuestos!",list_of_estimates:"Esta sección contendrá la lista de presupuestos.",mark_as_rejected:"Marcar como rechazado",mark_as_accepted:"Marcar como aceptado",marked_as_accepted_message:"Presupuesto marcado como aceptado",marked_as_rejected_message:"Presupuesto marcado como rechazado",confirm_delete:"No podrá recuperar este presupuesto | No podrá recuperar estos presupuestos",created_message:"Presupuesto creada con éxito",updated_message:"Presupuesto actualizada con éxito",deleted_message:"Presupuesto eliminada con éxito | Presupuestos eliminadas exitosamente",something_went_wrong:"Algo fue mal",item:{title:"Título del artículo",description:"Descripción",quantity:"Cantidad",price:"Precio",discount:"Descuento",total:"Total",total_discount:"Descuento total",sub_total:"Subtotal",tax:"Impuesto",amount:"Cantidad",select_an_item:"Escriba o haga clic para seleccionar un elemento",type_item_description:"Descripción del tipo de elemento(opcional)"},mark_as_default_estimate_template_description:"Si se activa, esta plantilla se selccionará automáticamente para nuevos presupuestos. "},J9={title:"Facturas",download:"Descargar",pay_invoice:"Pagar factura",invoices_list:"Lista de facturas",invoice_information:"Información de la factura",days:"{días} Días",months:"{meses} Mes",years:"{años} Año",all:"Todas",paid:"Pagada",unpaid:"No pagado",viewed:"Visto",overdue:"Vencido",completed:"Completado",customer:"CLIENTE",paid_status:"ESTADO PAGADO",ref_no:"NÚMERO DE REFERENCIA.",number:"NÚMERO",amount_due:"IMPORTE PENDIENTE",partially_paid:"Parcialmente pagado",total:"Total",discount:"Descuento",sub_total:"Subtotal",invoice:"Factura | Facturas",invoice_number:"Numero de factura",ref_number:"Número de referencia",contact:"Contacto",add_item:"Agregar un artículo",date:"Fecha",due_date:"Fecha de vencimiento",status:"Estado",add_tax:"Agregar impuesto",amount:"Cantidad",action:"Acción",notes:"Notas",view:"Ver",send_invoice:"Enviar la factura",resend_invoice:"Reenviar factura",invoice_template:"Plantilla de factura",conversion_message:"Factura clonada correctamente",template:"Modelo",mark_as_sent:"Marcar como enviada",confirm_send_invoice:"Esta factura será enviada por email al cliente",invoice_mark_as_sent:"Esta factura se marcará como enviada",confirm_mark_as_accepted:"Esta factura se marcará como aceptada",confirm_mark_as_rejected:"Esta factura se marcará como rechazada",confirm_send:"Estas facturas se enviarán por correo electrónico al cliente.",invoice_date:"Fecha de la factura",record_payment:"Registro de pago",add_new_invoice:"Añadir nueva factura",update_expense:"Actualizar gasto",edit_invoice:"Editar factura",new_invoice:"Nueva factura",save_invoice:"Guardar factura",update_invoice:"Actualizar factura",add_new_tax:"Agregar nuevo impuesto",no_invoices:"¡Aún no hay facturas!",mark_as_rejected:"Marcar como rechazado",mark_as_accepted:"Marcar como aceptado",list_of_invoices:"Esta sección contendrá la lista de facturas.",select_invoice:"Seleccionar factura",no_matching_invoices:"¡No hay facturas coincidentes con la selección!",mark_as_sent_successfully:"Factura marcada como enviada con éxito",invoice_sent_successfully:"Factura enviada satisfactoriamente",cloned_successfully:"Factura clonada correctamente",clone_invoice:"Clonar factura",confirm_clone:"Esta factura se clonará en una nueva factura.",item:{title:"Título del artículo",description:"Descripción",quantity:"Cantidad",price:"Precio",discount:"Descuento",total:"Total",total_discount:"Descuento total",sub_total:"Subtotal",tax:"Impuesto",amount:"Cantidad",select_an_item:"Escriba o haga clic para seleccionar un elemento",type_item_description:"Descripción del tipo de elemento (opcional)"},payment_attached_message:"Una de las facturas seleccionadas ya tiene un pago adjunto. Asegúrese de eliminar primero los pagos adjuntos para continuar con la eliminación",confirm_delete:"No podrá recuperar esta factura | No podrá recuperar estas facturas",created_message:"Factura creada exitosamente",updated_message:"Factura actualizada exitosamente",deleted_message:"Factura eliminada con éxito | Facturas borradas exitosamente",marked_as_sent_message:"Factura marcada como enviada con éxito",something_went_wrong:"Algo fue mal",invalid_due_amount_message:"El pago introducido es mayor que el importe total pendiente de esta factura. Por favor, verificalo y vuelve a intentarlo.",mark_as_default_invoice_template_description:"Si se activa, esta plantilla se seleccionará automáticamente para nuevas facturas. "},X9={title:"Facturas recurrentes",invoices_list:"Lista de facturas recurrentes",days:"{days} Días",months:"{months} Mes/es",years:"{years} Año/s",all:"Todas",paid:"Pagada",unpaid:"No pagada",viewed:"Vista",overdue:"Vencido",active:"Activo",completed:"Completado",customer:"CLIENTE",paid_status:"ESTADO DE PAGO",ref_no:"NÚM. DE REFERENCIA.",number:"NÚMERO",amount_due:"IMPORTE PENDIENTE",partially_paid:"Parcialmente pagada",total:"Total",discount:"Descuento",sub_total:"Subtotal",invoice:"Factura recurrente | Facturas recurrentes",invoice_number:"Número de factura recurrente",next_invoice_date:"Fecha de la próxima factura",ref_number:"Número de referencia",contact:"Contacto",add_item:"Añadir un elemento",date:"Fecha",limit_by:"Limitar por",limit_date:"Fecha límite",limit_count:"Número de Límites",count:"Recuento",status:"Estado",select_a_status:"Selecciona un estado",working:"Trabajando",on_hold:"En espera",complete:"Completado",add_tax:"Agregar impuesto",amount:"Cantidad",action:"Acción",notes:"Notas",view:"Ver",basic_info:"Información básica",send_invoice:"Enviar factura recurrente",auto_send:"Autoenviar",resend_invoice:"Reenviar factura recurrente",invoice_template:"Plantilla de la factura recurrente",conversion_message:"Factura recurrente clonada con éxito",template:"Plantilla",mark_as_sent:"Marcar como enviada",confirm_send_invoice:"Esta factura recurrente se enviará por correo electrónico al cliente",invoice_mark_as_sent:"Esta factura recurrente se marcará como enviada",confirm_send:"Esta factura recurrente se enviará por correo electrónico al cliente",starts_at:"Fecha de inicio",due_date:"Fecha límite de la factura",record_payment:"Registrar pago",add_new_invoice:"Añadir nueva factura recurrente",update_expense:"Actualizar gasto",edit_invoice:"Editar factura recurrente",new_invoice:"Nueva factura recurrente",send_automatically:"Enviar automáticamente",send_automatically_desc:"Habilite esto, si desea enviar la factura automáticamente al cliente cuando se haya creado.",save_invoice:"Guardar factura recurrente",update_invoice:"Actualizar factura recurrente",add_new_tax:"Agregar nuevo impuesto",no_invoices:"¡Aún no hay facturas recurrentes!",mark_as_rejected:"Marcar como rechazado",mark_as_accepted:"Marcar como aceptado",list_of_invoices:"Esta sección contiene la lista de facturas recurrentes.",select_invoice:"Seleccionar factura",no_matching_invoices:"¡No hay facturas recurrentes que coincidan!",mark_as_sent_successfully:"Factura recurrente marcada como enviada correctamente",invoice_sent_successfully:"Factura recurrente enviada correctamente",cloned_successfully:"Factura recurrente clonada con éxito",clone_invoice:"Clonar factura recurrente",confirm_clone:"Esta factura recurrente será clonada en una nueva factura recurrente",add_customer_email:"Por favor, agregue una dirección de correo electrónico para que este cliente envíe las facturas automáticamente.",item:{title:"Título del artículo",description:"Descripción",quantity:"Cantidad",price:"Precio",discount:"Descuento",total:"Total",total_discount:"Descuento total",sub_total:"Subtotal",tax:"Impuesto",amount:"Cantidad",select_an_item:"Escribe o haz clic para seleccionar un elemento",type_item_description:"Descripción del tipo de elemento(opcional)"},frequency:{title:"Frecuencia",select_frequency:"Seleccionar frecuencia",minute:"Minuto",hour:"Hora",day_month:"Día del mes",month:"Mes",day_week:"Día de la semana"},confirm_delete:"No podrá recuperar esta factura | No podrás recuperar estas facturas",created_message:"Factura recurrente creada con éxito",updated_message:"Factura recurrente actualizada correctamente",deleted_message:"Factura recurrente eliminada correctamente | Facturas recurrentes eliminadas correctamente",marked_as_sent_message:"Factura recurrente marcada como enviada con éxito",user_email_does_not_exist:"El email del usuario no existe",something_went_wrong:"algo ha ido mal",invalid_due_amount_message:"La cantidad total de la factura recurrente no puede ser menor a la cantidad total pagada. Por favor, actualiza la factura o elimina los pagos asociados para continuar."},eq={title:"Pagos",payments_list:"Lista de pagos",record_payment:"Registro de pago",customer:"Cliente",date:"Fecha",amount:"Cantidad",action:"Acción",payment_number:"Numero de pago",payment_mode:"Modo de pago",invoice:"Factura",note:"Nota",add_payment:"Agregar pago",new_payment:"Nuevo pago",edit_payment:"Editar pago",view_payment:"Ver pago",add_new_payment:"Agregar nuevo pago",send_payment_receipt:"Enviar recibo de pago",send_payment:"Enviar pago",save_payment:"Guardar pago",update_payment:"Actualizar pago",payment:"Pago | Pagos",no_payments:"¡Aún no hay pagos!",not_selected:"No seleccionado",no_invoice:"Sin facturas",no_matching_payments:"¡No hay pagos equivalentes!",list_of_payments:"Esta sección contendrá la lista de pagos.",select_payment_mode:"Seleccionar modo de pago",confirm_mark_as_sent:"Este presupuesto se marcará como enviado",confirm_send_payment:"Este pago se enviará por correo electrónico al cliente",send_payment_successfully:"Pago enviado correctamente",something_went_wrong:"Algo fue mal",confirm_delete:"No podrá recuperar este pago | No podrá recuperar estos pagos",created_message:"Pago creado con éxito",updated_message:"Pago actualizado con éxito",deleted_message:"Pago eliminado con éxito | Pagos eliminados exitosamente",invalid_amount_message:"El importe del pago no es válido."},tq={title:"Gastos",expenses_list:"Lista de gastos",select_a_customer:"Selecciona un cliente",expense_title:"Título",customer:"Cliente",currency:"Divisa",contact:"Contacto",category:"Categoría",from_date:"Desde la fecha",to_date:"Hasta la fecha",expense_date:"Fecha",description:"Descripción",receipt:"Recibo",amount:"Cantidad",action:"Acción",not_selected:"Sin seleccionar",note:"Nota",category_id:"Categoria ID",date:"Fecha de gastos",add_expense:"Añadir gastos",add_new_expense:"Añadir nuevo gasto",save_expense:"Guardar gasto",update_expense:"Actualizar gasto",download_receipt:"Descargar recibo",edit_expense:"Editar gasto",new_expense:"Nuevo gasto",expense:"Gastos | Gastos",no_expenses:"¡No hay gastos todavía!",list_of_expenses:"Esta sección contendrá la lista de gastos.",confirm_delete:"No podrá recuperar este gasto | No podrá recuperar estos gastos",created_message:"Gastos creados exitosamente",updated_message:"Gastos actualizados con éxito",deleted_message:"Gastos eliminados con éxito | Gastos eliminados exitosamente",categories:{categories_list:"Lista de categorías",title:"Título",name:"Nombre",description:"Descripción",amount:"Cantidad",actions:"Comportamiento",add_category:"añadir categoría",new_category:"Nueva categoría",category:"Categoría | Categorias",select_a_category:"Seleccione una categoría"}},aq={email:"Correo electrónico",password:"Contraseña",forgot_password:"¿Olvidaste tu contraseña?",or_signIn_with:"o Inicia sesión con",login:"Iniciar sesión",register:"Registro",reset_password:"Restablecer la contraseña",password_reset_successfully:"Contraseña reestablecida con éxito",enter_email:"Escriba el correo electrónico",enter_password:"Escriba la contraseña",retype_password:"Reescriba la contraseña"},nq={buy_now:"Comprar ahora",install:"Instalar",price:"Precio",download_zip_file:"Descargar archivo ZIP",unzipping_package:"Descomprimir paquete",copying_files:"Copiando archivos",deleting_files:"Eliminando archivos no usados",completing_installation:"Completando la instalación",update_failed:"Falló la actualización",install_success:"¡El módulo se ha instalado correctamente!",customer_reviews:"Reseñas",license:"Licencia",faq:"Preguntas Frecuentes (FAQ)",monthly:"Mensual",yearly:"Anual",updated:"Actualizado",version:"Versión",disable:"Deshabilitar",module_disabled:"Módulo desactivado",enable:"Habilitar",module_enabled:"Módulo habilitado",update_to:"Actualizar a",module_updated:"¡Módulo actualizado correctamente!",title:"Módulos",module:"Módulo | Módulos",api_token:"API token",invalid_api_token:"API Token inválido.",other_modules:"Otros módulos",view_all:"Ver todo",no_reviews_found:"¡Este módulo aún no tiene reseñas!",module_not_purchased:"Módulo no comprado",module_not_found:"Módulo no encontrado",version_not_supported:"This module version doesn't support the current version of InvoiceShelf",last_updated:"Actualizado",connect_installation:"Conecte su instalación",api_token_description:"Inicie sesión en {url} y conecte esta instalación introduciendo el token de API. Los módulos comprados aparecerán aquí después de establecer la conexión.",view_module:"Ver módulo",update_available:"Actualización disponible",purchased:"Comprado",installed:"Instalado",no_modules_installed:"¡No hay módulos instalados todavía!",disable_warning:"Se revertirán todos los ajustes para este particular.",what_you_get:"Beneficios que obtiene"},iq={title:"Usuarios",users_list:"Lista de usuarios",name:"Nombre",description:"Descripción",added_on:"Añadido",date_of_creation:"Fecha de creación",action:"Acción",add_user:"Agregar usuario",save_user:"Guardar usuario",update_user:"Actualizar usuario",user:"Usuario | Usuarios",add_new_user:"Agregar Nuevo Usuario",new_user:"Nuevo usuario",edit_user:"Editar usuario",no_users:"¡Aún no hay usuarios!",list_of_users:"Esta sección contendrá la lista de usuarios.",email:"Correo",phone:"Teléfono",password:"Contraseña",user_attached_message:"No se puede eliminar un elemento que ya está en uso.",confirm_delete:"No podrá recuperar este Usuario | No podrá recuperar estos Usuarios",created_message:"Usuario creado satisfactoriamente",updated_message:"Usuario actualizado satisfactoriamente",deleted_message:"Usuario eliminado exitosamente | Usuario eliminado correctamente",select_company_role:"Seleccionar rol para {company}",companies:"Empresas"},oq={title:"Informe",from_date:"A partir de la fecha",to_date:"Hasta la fecha",status:"Estado",paid:"Pagada",unpaid:"No pagado",download_pdf:"Descargar PDF",view_pdf:"Ver PDF",update_report:"Informe de actualización",report:"Informe | Informes",profit_loss:{profit_loss:"Pérdida de beneficios",to_date:"Hasta la fecha",from_date:"A partir de la fecha",date_range:"Seleccionar rango de fechas"},sales:{sales:"Ventas",date_range:"Seleccionar rango de fechas",to_date:"Hasta la fecha",from_date:"A partir de la fecha",report_type:"Tipo de informe"},taxes:{taxes:"Impuestos",to_date:"Hasta la fecha",from_date:"A partir de la fecha",date_range:"Seleccionar rango de fechas"},errors:{required:"Se requiere campo"},invoices:{invoice:"Factura",invoice_date:"Fecha de la factura",due_date:"Fecha de vencimiento",amount:"Cantidad",contact_name:"Nombre de contacto",status:"Estado"},estimates:{estimate:"Presupuestar",estimate_date:"Fecha presupuesto",due_date:"Fecha de vencimiento",estimate_number:"Número de Presupuesto",ref_number:"Número de referencia",amount:"Cantidad",contact_name:"Nombre de contacto",status:"Estado"},expenses:{expenses:"Gastos",category:"Categoría",date:"Fecha",amount:"Cantidad",to_date:"Hasta la fecha",from_date:"A partir de la fecha",date_range:"Seleccionar rango de fechas"}},sq={menu_title:{account_settings:"Configuraciones de la cuenta",company_information:"Información de la empresa",customization:"Personalización",preferences:"Preferencias",notifications:"Notificaciones",tax_types:"Tipos de impuestos",expense_category:"Categorías de gastos",update_app:"Actualizar aplicación",backup:"Copias de seguridad",file_disk:"Disco de archivo",custom_fields:"Campos Personalizados",payment_modes:"Formas de pago",notes:"Notas",exchange_rate:"Tasa de cambio",address_information:"Información de dirección"},address_information:{section_description:"Puede actualizar la información de su dirección utilizando el siguiente formulario."},title:"Configuraciones",setting:"Configuraciones | Configuraciones",general:"General",language:"Idioma",primary_currency:"Moneda primaria",timezone:"Zona horaria",date_format:"Formato de fecha",currencies:{title:"Monedas",currency:"Moneda | Monedas",currencies_list:"Lista de monedas",select_currency:"Seleccione el tipo de moneda",name:"Nombre",code:"Código",symbol:"Símbolo",precision:"Precisión",thousand_separator:"Separador de miles",decimal_separator:"Separador decimal",position:"Posición",position_of_symbol:"Posición del símbolo",right:"Derecho",left:"Izquierda",action:"Acción",add_currency:"Agregar moneda"},mail:{host:"Host de correo",port:"Puerto de correo",driver:"Conductor de correo",secret:"Secreto",mailgun_secret:"Mailgun Secreto",mailgun_domain:"Domino",mailgun_endpoint:"Mailgun endpoint",ses_secret:"Secreto SES",ses_key:"Clave SES",password:"Contraseña de correo",username:"Nombre de usuario de correo",mail_config:"Configuración de correo",from_name:"Del nombre del correo",from_mail:"Desde la dirección de correo",encryption:"Cifrado de correo",mail_config_desc:"Los detalles a continuación se utilizarán para actualizar el entorno de correo. También puede cambiar los detalles en cualquier momento después de iniciar sesión."},pdf:{title:"Configuración de PDF",footer_text:"Texto de pie de página",pdf_layout:"Diseño PDF"},company_info:{company_info:"Información de la compañía",company_name:"Nombre de Empresa",company_logo:"Logo de la compañía",section_description:"Información sobre su empresa que se mostrará en las facturas, presupuestos y otros documentos creados por InvoiceShelf.",phone:"Teléfono",country:"País",state:"Estado",city:"Ciudad",address:"Dirección",zip:"Código Postal",save:"Guardar",delete:"Eliminar",updated_message:"Información de la empresa actualizada con éxito",delete_company:"Eliminar empresa",delete_company_description:"Una vez que elimines tu empresa, perderás todos los datos y archivos asociados a ella permanentemente.",are_you_absolutely_sure:"¿Estás realmente seguro?",delete_company_modal_desc:"Est acción no se puede deshacer. Se eliminará de manera permanente {company} y todos sus datos asociados.",delete_company_modal_label:"Por favor escribe {company} para confirmar"},custom_fields:{title:"Campos Personalizados",section_description:"Personalice sus facturas, estimaciones y recibos de pago en sus propios campos. Asegúrese de usar los siguientes campos añadidos en los formatos de dirección de la página de configuración de personalización.",add_custom_field:"Agregar campo personalizado",edit_custom_field:"Editar campo personalizado",field_name:"Nombre del campo",label:"Etiqueta",type:"Tipo",name:"Nombre",slug:"Slug",required:"Necesaria",placeholder:"Marcador de posición",help_text:"texto de ayuda",default_value:"Valor por defecto",prefix:"Prefijo",starting_number:"Número inicial",model:"Modelo",help_text_description:"Ingrese un texto para ayudar a los usuarios a comprender el propósito de este campo personalizado.",suffix:"Sufijo",yes:"si",no:"No",order:"Orden",custom_field_confirm_delete:"No podrá recuperar este campo personalizado",already_in_use:"El campo personalizado ya está en uso",deleted_message:"Campo personalizado eliminado correctamente",options:"opciones",add_option:"Agregar opciones",add_another_option:"Agregar otra opción",sort_in_alphabetical_order:"Ordenar en orden alfabético",add_options_in_bulk:"Agregar opciones a granel",use_predefined_options:"Usar opciones predefinidas",select_custom_date:"Seleccionar fecha personalizada",select_relative_date:"Seleccionar fecha relativa",ticked_by_default:"Marcada por defecto",updated_message:"Campo personalizado actualizado correctamente",added_message:"Campo personalizado agregado correctamente",press_enter_to_add:"Presiona Enter para añadir una nueva opción",model_in_use:"No se puede actualizar el modelo para los campos que ya están en uso.",type_in_use:"No se puede actualizar el tipo de los campos que ya están en uso."},customization:{customization:"Personalización",updated_message:"Información de la empresa actualizada con éxito",save:"Guardar",insert_fields:"Insertar campos",learn_custom_format:"Aprende a utilizar el formato personalizado",add_new_component:"Añadir nuevo componente",component:"Componente",Parameter:"Parámetro",series:"Series",series_description:"Para establecer un prefijo/sufijo fijo como por ejemplo 'INV' para las facturas de tu empresa. El número máximo de caracteres permitidos es 4.",series_param_label:"Valor de series",delimiter:"Delimitador",delimiter_description:"Carácter único para especificar el límite entre 2 componentes separados. Por defecto está configurado en -",delimiter_param_label:"Valor delimitador",date_format:"Formato de fecha",date_format_description:"Un campo de fecha y hora local que acepta un parámetro de formato. El formato predeterminado: 'Y' representa el año actual.",date_format_param_label:"Formato",sequence:"Secuencia",sequence_description:"Secuencia consecutiva de números en su empresa. Puede especificar la longitud en el parámetro dado.",sequence_param_label:"Longitud de la secuencia",customer_series:"Series de clientes",customer_series_description:"Establecer un prefijo/postfijo diferente para cada cliente.",customer_sequence:"Secuencia de cliente",customer_sequence_description:"Secuencia consecutiva de números para cada uno de sus clientes.",customer_sequence_param_label:"Longitud de la secuencia",random_sequence:"Secuencia aleatoria",random_sequence_description:"Cadena alfanumérica aleatoria. Puedes especificar la longitud en el parámetro dado.",random_sequence_param_label:"Longitud de la secuencia",invoices:{title:"Facturas",invoice_number_format:"Formato de número de factura",invoice_number_format_description:"Personalice cómo se genera automáticamente su número de factura cuando crea una nueva factura.",preview_invoice_number:"Previsualizar número de factura",due_date:"Fecha de vencimiento",due_date_description:"Especifique cómo se establece automáticamente la fecha de vencimiento cuando crea una factura.",due_date_days:"Factura vence después de días",set_due_date_automatically:"Establecer fecha de vencimiento automáticamente",set_due_date_automatically_description:"Habilite esto si desea establecer la fecha de vencimiento automáticamente cuando crea una nueva factura.",default_formats:"Formatos por defecto",default_formats_description:"Los formatos dados a continuación se utilizan para completar los campos automáticamente en la creación de la factura.",default_invoice_email_body:"Cuerpo predeterminado del correo electrónico de la factura",company_address_format:"Formato de dirección de la empresa",shipping_address_format:"Formato de la dirección de envío",billing_address_format:"Formato de dirección de facturación",invoice_email_attachment:"Enviar cotización como adjunto",invoice_email_attachment_setting_description:"Activa esto si quieres enviar facturas como archivo adjunto de correo electrónico. Tenga en cuenta que el botón 'Ver factura' en los correos electrónicos ya no se mostrará cuando esté habilitado.",invoice_settings_updated:"La configuración de facturas se ha actualizado correctamente",retrospective_edits:"Ediciones retrospectivas",allow:"Permitir",disable_on_invoice_partial_paid:"Desactivar después de que se registre un pago parcial",disable_on_invoice_paid:"Desactivar después de que se registre el pago completo",disable_on_invoice_sent:"Desactivar después de enviar la factura",retrospective_edits_description:" Según las leyes de su país o sus preferencias, puede restringir que los usuarios editen las facturas finalizadas."},estimates:{title:"Estimaciones",estimate_number_format:"Formato de número de estimación",estimate_number_format_description:"Personalice cómo se genera automáticamente su número de presupuesto cuando crea un nuevo presupuesto.",preview_estimate_number:"Vista previa del número de presupuesto",expiry_date:"Fecha de vencimiento",expiry_date_description:"Especifique cómo se establece automáticamente la fecha de caducidad cuando crea un presupuesto.",expiry_date_days:"Estimación Caduca después de días",set_expiry_date_automatically:"Establecer fecha de expiración automáticamente",set_expiry_date_automatically_description:"Habilite esto si desea establecer la fecha de vencimiento automáticamente cuando crea un nuevo presupuesto.",default_formats:"Formatos por defecto",default_formats_description:"Los formatos dados a continuación se utilizan para completar los campos automáticamente en la creación del presupuesto.",default_estimate_email_body:"Cuerpo predeterminado estimado del correo electrónico",company_address_format:"Formato de dirección de la empresa",shipping_address_format:"Formato de dirección de envío",billing_address_format:"Formato de la dirección de facturación",estimate_email_attachment:"Enviar cotización como adjunto",estimate_email_attachment_setting_description:"Activa esto si quieres enviar facturas como archivo adjunto de correo electrónico. Tenga en cuenta que el botón 'Ver factura' en los correos electrónicos ya no se mostrará cuando esté habilitado.",estimate_settings_updated:"Ajustes de presupuesto actualizados con éxito",convert_estimate_options:"Acción de conversión de presupuesto",convert_estimate_description:"Especifique lo que sucede con el presupuesto una vez que se convierte en una factura.",no_action:"No hacer nada",delete_estimate:"Eliminar presupuesto",mark_estimate_as_accepted:"Marcar presupuesto como aceptado"},payments:{title:"Pagos",payment_number_format:"Formato del número de pago",payment_number_format_description:"Personalice cómo se genera automáticamente su número de pago cuando crea un nuevo pago.",preview_payment_number:"Previsualizar número de pago",default_formats:"Formatos predeterminados",default_formats_description:"Los formatos dados a continuación se utilizan para completar los campos automáticamente en la creación del pago.",default_payment_email_body:"Cuerpo predeterminado del correo electrónico del pago",company_address_format:"Formato de dirección de la empresa",from_customer_address_format:"Desde el formato de dirección del cliente",payment_email_attachment:"Enviar pagos como adjunto",payment_email_attachment_setting_description:"Activa esto si quieres enviar los pagos como archivo adjunto de correo electrónico. Tenga en cuenta que el botón 'Ver pago' en los correos electrónicos ya no se mostrará cuando esté habilitado.",payment_settings_updated:"Los métodos de pago se han actualizado correctamente"},items:{title:"Artículos",units:"unidades",add_item_unit:"Agregar unidad de artículo",edit_item_unit:"Editar unidad de artículo",unit_name:"Nombre de la unidad",item_unit_added:"Unidad de artículo agregada",item_unit_updated:"Unidad de artículo actualizada",item_unit_confirm_delete:"No podrás recuperar esta unidad de artículo",already_in_use:"Unidad de artículo ya está en uso",deleted_message:"Unidad de elemento eliminada correctamente"},notes:{title:"Notas",description:"Ahorre tiempo creando notas y reutilizándolas en sus facturas, cálculos y pagos.",notes:"Notas",type:"Tipo",add_note:"Agregar nota",add_new_note:"Agregar nueva nota",name:"Nombre",edit_note:"Editar nota",note_added:"Nota agregada correctamente",note_updated:"Nota actualizada correctamente",note_confirm_delete:"No podrá recuperar esta nota",already_in_use:"Nota ya está en uso",deleted_message:"Nota eliminada correctamente"}},account_settings:{profile_picture:"Foto de perfil",name:"Nombre",email:"Correo electrónico",password:"Contraseña",confirm_password:"Confirmar contraseña",account_settings:"Configuraciones de la cuenta",save:"Guardar",section_description:"Puede actualizar su nombre, correo electrónico y contraseña utilizando el siguiente formulario.",updated_message:"Configuración de la cuenta actualizada correctamente"},user_profile:{name:"Nombre",email:"Correo electrónico",password:"Contraseña",confirm_password:"Confirmar contraseña"},notification:{title:"Notificación",email:"Enviar notificaciones a",description:"¿Qué notificaciones por correo electrónico le gustaría recibir cuando algo cambia?",invoice_viewed:"Factura vista",invoice_viewed_desc:"Cuando su cliente vio la factura enviada a través del panel de control de InvoiceShelf.",estimate_viewed:"Presupuesto visto",estimate_viewed_desc:"Cuando su cliente vio el presupuesto enviado a través del panel de control de InvoiceShelf.",save:"Guardar",email_save_message:"Correo electrónico guardado con éxito",please_enter_email:"Por favor, introduzca su correo electrónico"},roles:{title:"Roles",description:"Configura los roles y permisos de esta empresa",save:"Guardar",add_new_role:"Añadir nuevo rol",role_name:"Nombre del rol",added_on:"Añadido el",add_role:"Añadir rol",edit_role:"Editar rol",name:"Nombre",permission:"Permiso | Permisos",select_all:"Seleccionar todo",none:"Ninguno",confirm_delete:"No podrá recuperar este Rol",created_message:"Rol creado correctamente",updated_message:"Rol actualizado correctamente",deleted_message:"Rol eliminado correctamente",already_in_use:"El rol ya está en uso"},exchange_rate:{exchange_rate:"Tasa de cambio",title:"Solucionar problemas de cambio de moneda",description:"Por favor, selecciona un tipo de cambio para todas las monedas mencionadas a continuación para ayudar a InvoiceShelf a calcular correctamente las cantidades en {currency}.",drivers:"Controladores",new_driver:"Añadir nuevo proveedor",edit_driver:"Editar proveedor",select_driver:"Seleccione un controlador",update:"selecciona un tipo de cambio ",providers_description:"Configure sus proveedores de tipos de cambio aquí para obtener automáticamente el tipo de cambio más reciente en las transacciones.",key:"Clave API",name:"Nombre",driver:"Controlador",is_default:"Usar por defecto",currency:"Divisas",exchange_rate_confirm_delete:"No podrá recuperar este controlador",created_message:"Proveedor creado correctamente",updated_message:"Proveedor actualizado correctamente",deleted_message:"Proveedor eliminado correctamente",error:" No puede eliminar el controlador activo",default_currency_error:"Esta moneda ya se usa en uno de los proveedores activos",exchange_help_text:"Ingrese el tipo de cambio para convertir de {currency} a {baseCurrency}",currency_freak:"Moneda",currency_layer:"Capa de moneda",open_exchange_rate:"Tasa de cambio",currency_converter:"Conversor de moneda",server:"Servidor",url:"URL",active:"Activo",currency_help_text:"Este proveedor solo se utilizará en las monedas seleccionadas anteriormente",currency_in_used:"Las siguientes monedas ya están activas en otro proveedor. Elimine estas monedas de la selección para volver a activar este proveedor."},tax_types:{title:"Tipos de impuestos",add_tax:"Agregar impuesto",edit_tax:"Editar impuesto",description:"Puede agregar o eliminar impuestos a su gusto. InvoiceShelf admite impuestos sobre artículos individuales, así como sobre la factura.",add_new_tax:"Agregar nuevo impuesto",tax_settings:"Configuraciones de impuestos",tax_per_item:"Impuesto por artículo",tax_name:"Nombre del impuesto",compound_tax:"Impuesto compuesto",percent:"Porcentaje",action:"Acción",tax_setting_description:"Habilítelo si desea agregar impuestos a artículos de factura de forma individual. Por defecto, los impuestos se agregan directamente a la factura.",created_message:"Tipo de impuesto creado con éxito",updated_message:"Tipo de impuesto actualizado correctamente",deleted_message:"Tipo de impuesto eliminado correctamente",confirm_delete:"No podrá recuperar este tipo de impuesto",already_in_use:"El impuesto ya está en uso."},payment_modes:{title:"Formas de pago",description:"Modos de transacción para pagos",add_payment_mode:"Agregar modo de pago",edit_payment_mode:"Editar modo de pago",mode_name:"Nombre del modo",payment_mode_added:"Forma de pago añadida",payment_mode_updated:"Forma de pago actualizada",payment_mode_confirm_delete:"No podrás recuperar este Modo de Pago",payments_attached:"Esta forma de pago ya está vinculada a los pagos. Por favor, elimine los pagos adjuntos para proceder con la eliminación.",expenses_attached:"Esta forma de pago ya está adjunta a los gastos. Por favor, elimine los gastos adjuntos para proceder con la eliminación.",deleted_message:"Método de pago eliminado correctamente"},expense_category:{title:"Categorías de gastos",action:"Acción",description:"Se requieren categorías para agregar entradas de gastos. Puede Agregar o Eliminar estas categorías según su preferencia.",add_new_category:"Añadir nueva categoria",add_category:"Añadir categoría",edit_category:"Editar categoria",category_name:"nombre de la categoría",category_description:"Descripción",created_message:"Categoría de gastos creada con éxito",deleted_message:"Categoría de gastos eliminada correctamente",updated_message:"Categoría de gastos actualizada con éxito",confirm_delete:"No podrá recuperar esta categoría de gastos",already_in_use:"La categoría ya está en uso."},preferences:{currency:"Moneda",default_language:"Idioma predeterminado",time_zone:"Zona horaria",fiscal_year:"Año financiero",date_format:"Formato de fecha",discount_setting:"Ajuste de descuento",discount_per_item:"Descuento por artículo",discount_setting_description:"Habilítelo si desea agregar Descuento a artículos de factura individuales. Por defecto, los descuentos se agregan directamente a la factura.",expire_public_links:"Expirar automáticamente enlaces públicos",expire_setting_description:"Especifique si desea expirar todos los enlaces enviados por la aplicación para ver facturas, estimaciones y pagos, etc. después de una duración especificada.",save:"Guardar",preference:"Preferencia | Preferencias",general_settings:"Preferencias predeterminadas para el sistema.",updated_message:"Preferencias actualizadas exitosamente",select_language:"seleccione el idioma",select_time_zone:"selecciona la zona horaria",select_date_format:"Seleccionar formato de fecha",select_financial_year:"seleccione año financiero",recurring_invoice_status:"Estado de la factura recurrente",create_status:"Crear estado",active:"Activo",on_hold:"En espera",update_status:"Actualizar estado",completed:"Completado",company_currency_unchangeable:"No se puede cambiar la divisa de la empresa"},update_app:{title:"Actualizar aplicación",description:"Puedes actualizar InvoiceShelf fácilmente comprobando si existe una nueva actualización haciendo clic en el botón de abajo",check_update:"Buscar actualizaciones",avail_update:"Nueva actualización disponible",next_version:"Próxima versión",requirements:"Requisitos",update:"Actualizar",update_progress:"Actualización en progreso...",progress_text:"Solo tomará unos minutos. No actualice la pantalla ni cierre la ventana antes de que finalice la actualización.",update_success:"¡La aplicación ha sido actualizada! Espere mientras la ventana de su navegador se vuelve a cargar automáticamente.",latest_message:"¡Actualización no disponible! Estás en la última versión.",current_version:"Versión actual",download_zip_file:"Descargar archivo ZIP",unzipping_package:"Descomprimir paquete",copying_files:"Copiando documentos",deleting_files:"Eliminando archivos no usados",running_migrations:"Ejecutar migraciones",finishing_update:"Actualización final",update_failed:"Actualización fallida",update_failed_text:"¡Lo siento! Su actualización falló el: {step} paso",update_warning:"Todos los archivos y temas predeterminados se sobreescribirán cuando actualice la aplicación a través de esta utilidad. Por favor, cree una copia de seguridad de sus temas y base de datos antes de actualizar."},backup:{title:"Copia de seguridad | Copias de seguridad",description:"La copia de seguridad es un archivo comprimido zip que contiene todos los archivos en los directorios que especifiques junto con tu base de datos",new_backup:"Agregar nueva copia de seguridad",create_backup:"Crear copia de seguridad",select_backup_type:"Seleccione Tipo de Copia de Seguridad",backup_confirm_delete:"No podrá recuperar esta copia de seguridad",path:"ruta",new_disk:"Nuevo Disco",created_at:"creado el",size:"tamaño",dropbox:"dropbox",local:"local",healthy:"saludable",amount_of_backups:"cantidad de copias de seguridad",newest_backups:"copias de seguridad más recientes",used_storage:"almacenamiento utilizado",select_disk:"Seleccionar Disco",action:"Acción",deleted_message:"Copia de seguridad eliminada exitosamente",created_message:"Copia de seguridad creada satisfactoriamente",invalid_disk_credentials:"Credencial no válida del disco seleccionado"},disk:{title:"Disco de archivos | Discos de archivos",description:"Por defecto, InvoiceShelf utilizará su disco local para guardar copias de seguridad, avatar y otros archivos de imagen. Puede configurar varios controladores de disco como DigitalOcean, S3 y Dropbox según sus preferencias.",created_at:"creado el",dropbox:"dropbox",name:"Nombre",driver:"Controlador",disk_type:"Tipo",disk_name:"Nombre del disco",new_disk:"Agregar nuevo disco",filesystem_driver:"Controlador del sistema de archivos",local_driver:"controlador local",local_root:"raíz local",public_driver:"Controlador público",public_root:"Raíz pública",public_url:"URL pública",public_visibility:"Visibilidad pública",media_driver:"Controlador multimedia",media_root:"Raíz multimedia",aws_driver:"Controlador AWS",aws_key:"Clave AWS",aws_secret:"Secreto AWS",aws_region:"Región de AWS",aws_bucket:"Cubo AWS",aws_root:"Raíz AWS",do_spaces_type:"Hacer Espacios tipo",do_spaces_key:"Disponer espacios",do_spaces_secret:"Disponer espacios secretos",do_spaces_region:"Disponer región de espacios",do_spaces_bucket:"Disponer espacios",do_spaces_endpoint:"Disponer espacios extremos",do_spaces_root:"Disponer espacios en la raíz",dropbox_type:"Tipo de Dropbox",dropbox_token:"Token de DropBox",dropbox_key:"Clave Dropbox",dropbox_secret:"Dropbox Secret",dropbox_app:"Aplicación Dropbox",dropbox_root:"Raíz Dropbox",default_driver:"Controlador por defecto",is_default:"Usar por defecto",set_default_disk:"Establecer disco predeterminado",set_default_disk_confirm:"Este disco se establecerá por defecto y todos los nuevos PDFs se guardarán en este disco",success_set_default_disk:"Disco establecido correctamente como predeterminado",save_pdf_to_disk:"Guardar PDFs a disco",disk_setting_description:" Habilite esto, si desea guardar automáticamente una copia en formato pdf de cada factura, cálculo y recibo de pago en su disco predeterminado. Al activar esta opción, se reducirá el tiempo de carga al visualizar los archivos PDFs.",select_disk:"Seleccionar Disco",disk_settings:"Configuración del disco",confirm_delete:"Los archivos y carpetas existentes en el disco especificado no se verán afectados, pero su configuración de disco será eliminada de InvoiceShelf",action:"Acción",edit_file_disk:"Editar disco de ficheros",success_create:"Disco añadido satisfactoriamente",success_update:"Disco actualizado satisfactoriamente",error:"Error al añadir disco",deleted_message:"Disco de archivo borrado correctamente",disk_variables_save_successfully:"Disco configurado correctamente",disk_variables_save_error:"La configuración del disco ha fallado.",invalid_disk_credentials:"Credencial no válida del disco seleccionado"},taxations:{add_billing_address:"Introduzca su dirección de facturación",add_shipping_address:"Introduzca la dirección de envío",add_company_address:"Introduzca la dirección de la empresa",modal_description:"La siguiente información es requerida para obtener el impuesto de venta.",add_address:"Añadir dirección para obtener impuestos de venta.",address_placeholder:"Ejemplo: 123, Mi Calle",city_placeholder:"Ejemplo: Los Angeles",state_placeholder:"Ejemplo: CA",zip_placeholder:"Ejemplo: 90024",invalid_address:"Proporciona una dirección válida."}},rq={account_info:"Información de la cuenta",account_info_desc:"Los detalles a continuación se utilizarán para crear la cuenta principal de administrador. También puede cambiar los detalles en cualquier momento después de iniciar sesión.",name:"Nombre",email:"Correo",password:"Contraseña",confirm_password:"Confirmar contraseña",save_cont:"Guardar y continuar",company_info:"Información de la empresa",company_info_desc:"Esta información se mostrará en las facturas. Tenga en cuenta que puede editar esto más adelante en la página de configuración.",company_name:"nombre de empresa",company_logo:"Logo de la compañía",logo_preview:"Vista previa del logotipo",preferences:"Preferencias",preferences_desc:"Preferencias predeterminadas para el sistema.",currency_set_alert:"La moneda de la empresa no se puede cambiar más tarde.",country:"País",state:"Estado",city:"Ciudad",address:"Dirección",street:"Calle1 | Calle2",phone:"Teléfono",zip_code:"Código postal",go_back:"Regresa",currency:"Moneda",language:"Idioma",time_zone:"Zona horaria",fiscal_year:"Año financiero",date_format:"Formato de fecha",from_address:"Desde la Dirección",username:"Nombre de usuario",next:"Siguiente",continue:"Continuar",skip:"Saltar",database:{database:"URL del sitio y base de datose",connection:"Conexión de base de datos",host:"Host de la base de datos",port:"Puerto de la base de datos",password:"Contraseña de la base de datos",app_url:"URL de la aplicación",app_domain:"Dominio",username:"Nombre de usuario de la base de datos",db_name:"Nombre de la base de datos",db_path:"Ruta de la base de datos",desc:"Cree una base de datos en su servidor y establezca las credenciales utilizando el siguiente formulario."},permissions:{permissions:"Permisos",permission_confirm_title:"¿Estás seguro de que quieres continuar?",permission_confirm_desc:"Error de verificación de permisos de carpeta",permission_desc:"A continuación se muestra la lista de permisos de carpeta necesarios para que la aplicación funcione. Si la verificación de permisos falla, asegúrese de actualizar los permisos de su carpeta."},verify_domain:{title:"Verificación de dominio",desc:"InvoiceShelf utiliza la autenticación basada en Sesión que requiere verificación de dominio por motivos de seguridad. Por favor, introduzca el dominio en el que accederá a su aplicación web.",app_domain:"Dominio de aplicación",verify_now:"Verificar ahora",success:"Dominio verificado correctamente.",failed:"La verificación del dominio falló. Ingrese un nombre de dominio válido.",verify_and_continue:"Verificar y continuar"},mail:{host:"Host de correo",port:"Puerto de correo",driver:"Conductor de correo",secret:"Secreto",mailgun_secret:"Mailgun Secreto",mailgun_domain:"Dominio",mailgun_endpoint:"Mailgun endpoint",ses_secret:"Secreto SES",ses_key:"Clave SES",password:"Contraseña de correo",username:"Nombre de usuario de correo",mail_config:"Configuración de correo",from_name:"Del nombre del correo",from_mail:"Desde la dirección de correo",encryption:"Cifrado de correo",mail_config_desc:"Los detalles a continuación se utilizarán para actualizar el entorno de correo. También puede cambiar los detalles en cualquier momento después de iniciar sesión."},req:{system_req:"Requisitos del sistema",php_req_version:"Php (versión {version} necesario)",check_req:"Consultar requisitos",system_req_desc:"InvoiceShelf tiene algunos requisitos de servidor. Asegúrese de que su servidor tenga la versión de php requerida y todas las extensiones mencionadas a continuación."},errors:{migrate_failed:"La migración falló",database_variables_save_error:"No se puede conectar a la base de datos con los valores proporcionados.",mail_variables_save_error:"La configuración del correo electrónico ha fallado.",connection_failed:"Conexión de base de datos fallida",database_should_be_empty:"La base de datos debe estar vacía"},success:{mail_variables_save_successfully:"Correo electrónico configurado correctamente",database_variables_save_successfully:"Base de datos configurada con éxito."}},lq={invalid_phone:"Numero de telefono invalido",invalid_url:"URL no válida (por ejemplo, http://www.invoiceshelf.com)",invalid_domain_url:"URL no válida (por ejemplo, invoiceshelf.com)",required:"Se requiere campo",email_incorrect:"Email incorrecto.",email_already_taken:"Este email ya está en uso",email_does_not_exist:"El usuario con el correo electrónico dado no existe",item_unit_already_taken:"El nombre de la unidad ya está en uso",payment_mode_already_taken:"El modo de pago ya ha sido tomado",send_reset_link:"Enviar enlace de restablecimiento",not_yet:"¿Aún no? Envíalo de nuevo",password_min_length:"La contraseña debe contener {count} caracteres",name_min_length:"El nombre debe tener al menos {count} letras.",prefix_min_length:"El prefijo debe tener al menos {count} letras.",enter_valid_tax_rate:"Ingrese una tasa impositiva válida",numbers_only:"Solo números.",characters_only:"Solo caracteres.",password_incorrect:"Las contraseñas deben ser idénticas",password_length:"La contraseña debe tener 5 caracteres de longitud.",qty_must_greater_than_zero:"La cantidad debe ser mayor que cero.",price_greater_than_zero:"El precio debe ser mayor que cero.",payment_greater_than_zero:"El pago debe ser mayor que cero.",payment_greater_than_due_amount:"El pago introducido es mayor que el importe pendiente de esta factura.",quantity_maxlength:"La cantidad no debe ser mayor de 20 dígitos.",price_maxlength:"El precio no debe ser mayor de 20 dígitos.",price_minvalue:"El precio debe ser mayor que 0 dígitos",amount_maxlength:"La cantidad no debe ser mayor de 20 dígitos.",amount_minvalue:"La cantidad debe ser mayor que 0 dígitos",discount_maxlength:"El descuento no debe ser mayor que el descuento máximo",description_maxlength:"La descripción no debe tener más de 255 caracteres.",subject_maxlength:"El asunto no debe tener más de 100 caracteres.",message_maxlength:"El mensaje no debe tener más de 255 caracteres.",maximum_options_error:"Máximo de {max} opciones seleccionadas. Primero elimine una opción seleccionada para seleccionar otra.",notes_maxlength:"Las notas no deben tener más de 255 caracteres.",address_maxlength:"La dirección no debe tener más de 255 caracteres.",ref_number_maxlength:"El número de referencia no debe tener más de 255 caracteres.",prefix_maxlength:"El prefijo no debe tener más de 5 caracteres.",something_went_wrong:"Algo fue mal",number_length_minvalue:"La cantidad debe ser mayor que 0",at_least_one_ability:"Por favor, selecciona al menos un permiso.",valid_driver_key:"Por favor, introduza una clave {driver} válida.",valid_exchange_rate:"Por favor, introduce una tasa de cambio válida.",company_name_not_same:"El nombre de la empresa debe coincidir con el nombre indicado."},cq={starter_plan:"¡Esta función está disponible en el plan Starter y en adelante!",invalid_provider_key:"Por favor, introduzca un proveedor de claves API válido.",estimate_number_used:"El número de estimación ya se ha tomado.",invoice_number_used:"El número de factura ya está en uso.",payment_attached:"Esta factura ya tiene un pago adjunto. Asegúrese de eliminar primero los pagos adjuntos para continuar con la eliminación.",payment_number_used:"El número de pago ya está en uso.",name_already_taken:"El nombre ya está en uso.",receipt_does_not_exist:"No existe el recibo.",customer_cannot_be_changed_after_payment_is_added:"El cliente no puede ser modificado después de agregar el pago",invalid_credentials:"Credenciales inválidas.",not_allowed:"No permitido",login_invalid_credentials:"Estas credenciales no coinciden con nuestros registros.",enter_valid_cron_format:"Por favor, introduzca un formato cron válido",email_could_not_be_sent:"No se pudo enviar el correo a esta dirección de correo electrónico.",invalid_address:"Por favor, introduzca una dirección válida.",invalid_key:"Por favor, introduzca una clave válida.",invalid_state:"Por favor, introduzca un estado válido.",invalid_city:"Por favor, introduzca una ciudad válida.",invalid_postal_code:"Por favor, introduzca un código postal válido.",invalid_format:"Por favor, introduzca un formato de consulta válido.",api_error:"El servidor no responde.",feature_not_enabled:"Característica no habilitada.",request_limit_met:"Ha alcanzado el límite de solicitudes.",address_incomplete:"Dirección incompleta"},dq="Presupuestar",uq="Número de Presupuesto",_q="Fecha presupuesto",mq="Fecha de caducidad",pq="Factura",fq="Numero de factura",hq="Fecha de la factura",gq="Fecha final",vq="Notas",yq="Artículos",bq="Cantidad",kq="Precio",wq="Descuento",Dq="Cantidad",xq="Subtotal",Sq="Total",Pq="Pagos",Eq="RECIBO DE PAGO",zq="Fecha de pago",Aq="Numero de pago",Cq="Modo de pago",Tq="Importe recibido",jq="INFORME DE GASTOS",Nq="GASTO TOTAL",Iq="INFORME PERDIDAS & GANANCIAS",Fq="Informe de ventas por cliente",Rq="Informe de ventas por ítem",Oq="Informe de ventas impuestos",Mq="INGRESO",$q="GANANCIA NETA",Lq="Informe de ventas: Por cliente",Bq="VENTAS TOTALES",Uq="Informe de ventas: por artículo",Vq="INFORME DE IMPUESTOS",qq="TOTAL IMPUESTOS",Wq="Tipos de impuestos",Hq="Gastos",Kq="Cobrar a,",Yq="Enviar a,",Zq="Recibido desde:",Gq="Impuesto",Qq={navigation:U9,general:V9,dashboard:q9,tax_types:W9,global_search:H9,company_switcher:K9,dateRange:Y9,customers:Z9,items:G9,estimates:Q9,invoices:J9,recurring_invoices:X9,payments:eq,expenses:tq,login:aq,modules:nq,users:iq,reports:oq,settings:sq,wizard:rq,validation:lq,errors:cq,pdf_estimate_label:dq,pdf_estimate_number:uq,pdf_estimate_date:_q,pdf_estimate_expire_date:mq,pdf_invoice_label:pq,pdf_invoice_number:fq,pdf_invoice_date:hq,pdf_invoice_due_date:gq,pdf_notes:vq,pdf_items_label:yq,pdf_quantity_label:bq,pdf_price_label:kq,pdf_discount_label:wq,pdf_amount_label:Dq,pdf_subtotal:xq,pdf_total:Sq,pdf_payment_label:Pq,pdf_payment_receipt_label:Eq,pdf_payment_date:zq,pdf_payment_number:Aq,pdf_payment_mode:Cq,pdf_payment_amount_received_label:Tq,pdf_expense_report_label:jq,pdf_total_expenses_label:Nq,pdf_profit_loss_label:Iq,pdf_sales_customers_label:Fq,pdf_sales_items_label:Rq,pdf_tax_summery_label:Oq,pdf_income_label:Mq,pdf_net_profit_label:$q,pdf_customer_sales_report:Lq,pdf_total_sales_label:Bq,pdf_item_sales_label:Uq,pdf_tax_report_label:Vq,pdf_total_tax_label:qq,pdf_tax_types_label:Wq,pdf_expenses_label:Hq,pdf_bill_to:Kq,pdf_ship_to:Yq,pdf_received_from:Zq,pdf_tax_label:Gq},Jq={dashboard:"لوحة التحكم",customers:"العملاء",items:"بضائع/خدمات",invoices:"الفواتير","recurring-invoices":"Recurring Invoices",expenses:"النفقات",estimates:"التقديرات",payments:"الدفوعات",reports:"التقارير",settings:"الإعدادات",logout:"تسجيل الخروج",users:"المستخدمون",modules:"Modules"},Xq={add_company:"أضف شركة",view_pdf:"عرض PDF",copy_pdf_url:"نسخ رابط PDF",download_pdf:"تنزيل PDF",save:"حفظ",create:"إنشاء",cancel:"تراجع",update:"تحديث",deselect:"إلغاء الإختيار",download:"تحميل",from_date:"من تاريخ",to_date:"إلى تاريخ",from:"من",to:"إلى",ok:"Ok",yes:"Yes",no:"No",sort_by:"ترتيب حسب",ascending:"تصاعدي",descending:"تنازلي",subject:"موضوع",body:"الجسم",message:"رسالة",send:"إرسال",preview:"Preview",go_back:"إلى الخلف",back_to_login:"العودة إلى تسجيل الدخول؟",home:"الرئيسية",filter:"تصفية",delete:"حذف",edit:"تعديل",view:"عرض",add_new_item:"إضافة صنف جديد",clear_all:"مسح الكل",showing:"عرض",of:"من",actions:"العمليات",subtotal:"المجموع الفرعي",discount:"خصم",fixed:"ثابت",percentage:"نسبة",tax:"اداء",total_amount:"المبلغ الإجمالي",bill_to:"الفاتورة لـ",ship_to:"يشحن إلى",due:"المتبقي",draft:"مسودة",sent:"ارسلت",all:"الكل",select_all:"تحديد الكل",select_template:"Select Template",choose_file:"اضغط هنا لاختيار ملف",choose_template:"اختيار القالب",choose:"اختر",remove:"حذف",select_a_status:"اختر الحالة",select_a_tax:"اختر الاداء",search:"بحث",are_you_sure:"هل أنت متأكد؟",list_is_empty:"القائمة فارغة.",no_tax_found:"لا يوجد ضريبة!",four_zero_four:"404",you_got_lost:"عفواً! يبدو أنك قد تهت!",go_home:"الذهاب الى الصفحة الرئيسية",test_mail_conf:"اختبار اعدادات البريد",send_mail_successfully:"تم إرسال البريد بنجاح",setting_updated:"تم تحديث الإعدادات بنجاح",select_state:"اختر الولاية/المنطقة",select_country:"اختر الدولة",select_city:"اختر المدينة",street_1:"عنوان الشارع 1",street_2:"الشارع 2",action_failed:"فشلت العملية",retry:"أعد المحاولة",choose_note:"اختر ملاحظة",no_note_found:"لم يتم العثور على الملاحظة",insert_note:"أدخل ملاحظة",copied_pdf_url_clipboard:"تم نسخ رابط PDF إلى الحافظة!",copied_url_clipboard:"Copied url to clipboard!",docs:"Docs",do_you_wish_to_continue:"Do you wish to continue?",note:"Note",pay_invoice:"Pay Invoice",login_successfully:"Logged in successfully!",logged_out_successfully:"Logged out successfully",mark_as_default:"Mark as default"},eW={select_year:"اختر السنة",cards:{due_amount:"المبلغ المطلوب",customers:"العملاء",invoices:"الفواتير",estimates:"التقديرات",payments:"Payments"},chart_info:{total_sales:"المبيعات",total_receipts:"إجمالي الدخل",total_expense:"النفقات",net_income:"صافي الدخل",year:"اختر السنة"},monthly_chart:{title:"المبيعات والنفقات"},recent_invoices_card:{title:"فواتير مستحقة",due_on:"مستحقة في",customer:"العميل",amount_due:"المبلغ المطلوب",actions:"العمليات",view_all:"عرض الكل"},recent_estimate_card:{title:"أحدث التقديرات",date:"التاريخ",customer:"العميل",amount_due:"المبلغ المطلوب",actions:"العمليات",view_all:"عرض الكل"}},tW={name:"الاسم",description:"الوصف",percent:"نسبه مئويه",compound_tax:"الضريبة المركبة"},aW={search:"بحث...",customers:"العملاء",users:"المستخدمون",no_results_found:"لم يتم العثور على نتائج"},nW={label:"SWITCH COMPANY",no_results_found:"No Results Found",add_new_company:"Add new company",new_company:"New company",created_message:"Company created successfully"},iW={today:"Today",this_week:"This Week",this_month:"This Month",this_quarter:"This Quarter",this_year:"This Year",previous_week:"Previous Week",previous_month:"Previous Month",previous_quarter:"Previous Quarter",previous_year:"Previous Year",custom:"Custom"},oW={title:"العملاء",prefix:"Prefix",add_customer:"إضافة عميل",contacts_list:"قائمة العملاء",name:"الاسم",mail:"البريد",statement:"البيان",display_name:"اسم العرض",primary_contact_name:"اسم التواصل الرئيسي",contact_name:"اسم تواصل آخر",amount_due:"المبلغ المطلوب",email:"البريد الإلكتروني",address:"العنوان",phone:"الهاتف",website:"موقع الإنترنت",overview:"استعراض",invoice_prefix:"Invoice Prefix",estimate_prefix:"Estimate Prefix",payment_prefix:"Payment Prefix",enable_portal:"تفعيل البوابة",country:"الدولة",state:"الولاية/المنطقة",city:"المدينة",zip_code:"الرمز البريدي",added_on:"أضيف في",action:"إجراء",password:"كلمة المرور",confirm_password:"Confirm Password",street_number:"رقم الشارع",primary_currency:"العملة الرئيسية",description:"الوصف",add_new_customer:"إضافة عميل جديد",save_customer:"حفظ العميل",update_customer:"تحديث بيانات العميل",customer:"عميل | عملاء",new_customer:"عميل جديد",edit_customer:"تعديل عميل",basic_info:"معلوات أساسية",portal_access:"Portal Access",portal_access_text:"Would you like to allow this customer to login to the Customer Portal?",portal_access_url:"Customer Portal Login URL",portal_access_url_help:"Please copy & forward the above given URL to your customer for providing access.",billing_address:"عنوان الفوترة",shipping_address:"عنوان الشحن",copy_billing_address:"نسخ من عنوان الفوترة",no_customers:"لا يوجد عملاء حتى الآن!",no_customers_found:"لم يتم الحصول على عملاء!",no_contact:"ليست هناك جهات اتصال",no_contact_name:"اسم جهة الاتصال غير موجود",list_of_customers:"سوف يحتوي هذا القسم على قائمة العملاء.",primary_display_name:"اسم العرض الرئيسي",select_currency:"اختر العملة",select_a_customer:"اختر العميل",type_or_click:"اكتب أو اضغط للاختيار",new_transaction:"معاملة جديدة",no_matching_customers:"لا يوجد عملاء مطابقين!",phone_number:"رقم الهاتف",create_date:"تاريخ الإنشاء",confirm_delete:"لن تتمكن من استرداد هذا العميل وجميع الفواتير والتقديرات والمدفوعات ذات الصلة. | لن تتمكن من استرداد هؤلاء العملاء وجميع الفواتير والتقديرات والمدفوعات ذات الصلة.",created_message:"تم إنشاء العملاء بنجاح",updated_message:"تم تحديث العملاء بنجاح",address_updated_message:"Address Information Updated succesfully",deleted_message:"تم حذف العملاء بنجاح | تم حذف العميل بنجاح",edit_currency_not_allowed:"Cannot change currency once transactions created."},sW={title:"الأصناف",items_list:"قائمة الأصناف",name:"الاسم",unit:"الوحدة",description:"الوصف",added_on:"أضيف في",price:"السعر",date_of_creation:"تاريخ الإنشاء",not_selected:"لم يتم إختيار أي عنصر",action:"إجراء",add_item:"إضافة صنف",save_item:"حفظ الصنف",update_item:"تحديث الصنف",item:"صنف | أصناف",add_new_item:"إضافة صنف جديد",new_item:"جديد صنف",edit_item:"تحديث صنف",no_items:"لا يوجد أصناف حتى الآن!",list_of_items:"هذا القسم سوف يحتوي على قائمة الأصناف.",select_a_unit:"اختر الوحدة",taxes:"الضرائب",item_attached_message:"لا يمكن حذف الصنف قيد الاستخدام",confirm_delete:"لن تتمكن من استرجاع هذا الصنف | لن تتمكن من استرجاع هذه الأصناف",created_message:"تم إنشاء الصنف بنجاح",updated_message:"تم تحديث الصنف بنجاح",deleted_message:"تم حذف الصنف بنجاح | تم حذف الأصناف بنجاح"},rW={title:"التقديرات",accept_estimate:"Accept Estimate",reject_estimate:"Reject Estimate",estimate:"تقدير | تقديرات",estimates_list:"قائمة التقديرات",days:"{days} أيام",months:"{months} أشهر",years:"{years} سنوات",all:"الكل",paid:"مدفوع",unpaid:"غير مدفوع",customer:"العميل",ref_no:"رقم المرجع.",number:"الرقم",amount_due:"المبلغ المطلوب",partially_paid:"مدفوع جزئيا",total:"الإجمالي",discount:"الخصم",sub_total:"حاصل الجمع",estimate_number:"رقم تقدير",ref_number:"رقم المرجع",contact:"تواصل",add_item:"إضافة صنف",date:"تاريخ",due_date:"تاريخ الاستحقاق",expiry_date:"تاريخ الصلاحية",status:"الحالة",add_tax:"إضافة ضرية",amount:"المبلغ المطلوب",action:"إجراء",notes:"ملاحظات",tax:"ضريبة",estimate_template:"قالب",convert_to_invoice:"تحويل إلى فاتورة",mark_as_sent:"تحديد كمرسل",send_estimate:"إرسال التقدير",resend_estimate:"إعادة إرسال التقدير",record_payment:"تسجيل مدفوات",add_estimate:"إضافة تقدير",save_estimate:"حفظ التقدير",confirm_conversion:"هل تريد تحويل هذا التقدير إلى فاتورة؟",conversion_message:"تم إنشاء الفاتورة بنجاح",confirm_send_estimate:"سيتم إرسال هذا التقدير بالبريد الإلكتروني إلى العميل",confirm_mark_as_sent:"سيتم التحديد كمرسل على هذا التقدير",confirm_mark_as_accepted:"سيتم التحديد كمقبول على هذا التقدير",confirm_mark_as_rejected:"سيتم التحديد كمرفوض على هذا التقدير",no_matching_estimates:"لا يوجد تقديرات مطابقة!",mark_as_sent_successfully:"تم التحديد كمرسل بنجاح",send_estimate_successfully:"تم إرسال التقدير بنجاح",errors:{required:"حقل مطلوب"},accepted:"مقبول",rejected:"مرفوض",expired:"Expired",sent:"مرسل",draft:"مسودة",viewed:"Viewed",declined:"مرفوض",new_estimate:"تقدير جديد",add_new_estimate:"إضافة تقدير جديد",update_Estimate:"تحديث تقدير",edit_estimate:"تعديل التقدير",items:"الأصناف",Estimate:"تقدير | تقديرات",add_new_tax:"إضافة ضريبة جديدة",no_estimates:"لا يوجد تقديرات حالياً!",list_of_estimates:"هذا القسم سوف يحتوي على التقديرات.",mark_as_rejected:"تحديد كمرفوض",mark_as_accepted:"تحديد كمقروء",marked_as_accepted_message:"تحديد التقدير كمقبول",marked_as_rejected_message:"تحديد التقدير كمرفوض",confirm_delete:"لن تستطيع استرجاع هذا التقدير | لن تستطيع إستعادة هذه التقديرات",created_message:"تم إنشاء التقدير بنجاح",updated_message:"تم تحديث التقدير بنجاح",deleted_message:"تم حذف التقدير بنجاح | تم حذف التقديرات بنجاح",something_went_wrong:"خطأ غير معروف!",item:{title:"اسم الصنف",description:"الوصف",quantity:"الكمية",price:"السعر",discount:"الخصم",total:"الإجمالي",total_discount:"مجموع الخصم",sub_total:"حاصل الجمع",tax:"الضرية",amount:"المبلغ المطلوب",select_an_item:"اكتب أو اختر الصنف",type_item_description:"اكتب وصف الصنف (اختياري)"},mark_as_default_estimate_template_description:"If enabled, the selected template will be automatically selected for new estimates."},lW={title:"الفواتير",download:"Download",pay_invoice:"Pay Invoice",invoices_list:"قائمة الفواتير",invoice_information:"Invoice Information",days:"{days} أيام",months:"{months} أشهر",years:"{years} سنوات",all:"الكل",paid:"مدفوع",unpaid:"غير مدفوع",viewed:"شوهد",overdue:"متأخر",completed:"اكتمل",customer:"العميل",paid_status:"حالة الدفع",ref_no:"رقم المرجع.",number:"الرقم",amount_due:"المبلغ المطلوب",partially_paid:"مدفوع جزئياً",total:"الإجمالي",discount:"الخصم",sub_total:"حاصل الجمع",invoice:"فاتورة | فواتير",invoice_number:"رقم الفاتورة",ref_number:"رقم المرجع",contact:"تواصل",add_item:"إضافة صنف",date:"التاريخ",due_date:"تاريخ الاستحقاق",status:"الحالة",add_tax:"إضافة ضريبة",amount:"المبلغ المطلوب",action:"إجراء",notes:"ملاحظات",view:"عرض",send_invoice:"إرسال الفاتورة",resend_invoice:"إعادة إرسال الفاتورة",invoice_template:"قالب الفاتورة",conversion_message:"Invoice cloned successful",template:"قالب",mark_as_sent:"تحديد كمرسل",confirm_send_invoice:"سيتم إرسال هذه الفاتورة بالبريد الألكتروني إلى العميل",invoice_mark_as_sent:"سيتم تحديد هذه الفاتورة كمرسلة",confirm_mark_as_accepted:"This invoice will be marked as Accepted",confirm_mark_as_rejected:"This invoice will be marked as Rejected",confirm_send:"سيتم إرسال هذه الفاتورة بالبريد الألكتروني إلى العميل",invoice_date:"تاريخ الفاتورة",record_payment:"تسجيل مدفوعات",add_new_invoice:"إضافة فاتورة جديدة",update_expense:"تحديث المصروفات",edit_invoice:"تعديل الفاتورة",new_invoice:"فاتورة جديدة",save_invoice:"حفظ الفاتورة",update_invoice:"تحديث الفاتورة",add_new_tax:"إضافة ضريبة جديدة",no_invoices:"لا يوجد فواتير حتى الآن!",mark_as_rejected:"Mark as rejected",mark_as_accepted:"Mark as accepted",list_of_invoices:"قائمة الفواتير .",select_invoice:"اختر الفاتورة",no_matching_invoices:"لا يوجد فواتير مطابقة!",mark_as_sent_successfully:"تم تحديد الفاتورة كمرسلة بنجاح",invoice_sent_successfully:"Invoice sent successfully",cloned_successfully:"تم استنساخ الفاتورة بنجاح",clone_invoice:"استنساخ الفاتورة",confirm_clone:"سيتم استنساخ هذه الفاتورة في فاتورة جديدة",item:{title:"اسم الصنف",description:"الوصف",quantity:"الكمية",price:"السعر",discount:"الخصم",total:"الإجمالي",total_discount:"إجمالي الخصم",sub_total:"حاصل الجمع",tax:"الضريبة",amount:"المبلغ المطلوب",select_an_item:"اكتب أو انقر لاختيار صنف",type_item_description:"وصف الصنف (اختياري)"},payment_attached_message:"هناك مدفوعات مرتبطة بالفعل بإحدى الفواتير المحددة. تأكد من حذف المدفوعات المرتبطة أولاً قبل حذف الفاتورة.",confirm_delete:"لن تتمكن من استرجاع الفاتورة بعد هذه الإجراء | لن تتمكن من استرجاع الفواتير بعد هذا الإجراء",created_message:"تم إنشاء الفاتورة بنجاح",updated_message:"تم تحديث الفاتورة بنجاح",deleted_message:"تم حذف الفاتورة بنجاح | تم حذف الفواتير بنجاح",marked_as_sent_message:"تم إرسال الفاتورة بنجاح",something_went_wrong:"خطأ غير معروف!",invalid_due_amount_message:"المبلغ النهائي للفاتورة لا يمكن أن يكون أقل من المبلغ المطلوب لها. رجاءاً حدث الفاتورة أو قم بحذف المدفوعات المرتبطة بها للاستمرار.",mark_as_default_invoice_template_description:"If enabled, the selected template will be automatically selected for new invoices."},cW={title:"Recurring Invoices",invoices_list:"Recurring Invoices List",days:"{days} Days",months:"{months} Month",years:"{years} Year",all:"All",paid:"Paid",unpaid:"Unpaid",viewed:"Viewed",overdue:"Overdue",active:"Active",completed:"Completed",customer:"CUSTOMER",paid_status:"PAID STATUS",ref_no:"REF NO.",number:"NUMBER",amount_due:"AMOUNT DUE",partially_paid:"Partially Paid",total:"Total",discount:"Discount",sub_total:"Sub Total",invoice:"Recurring Invoice | Recurring Invoices",invoice_number:"Recurring Invoice Number",next_invoice_date:"Next Invoice Date",ref_number:"Ref Number",contact:"Contact",add_item:"Add an Item",date:"Date",limit_by:"Limit by",limit_date:"Limit Date",limit_count:"Limit Count",count:"Count",status:"Status",select_a_status:"Select a status",working:"Working",on_hold:"On Hold",complete:"Completed",add_tax:"Add Tax",amount:"Amount",action:"Action",notes:"Notes",view:"View",basic_info:"Basic Info",send_invoice:"Send Recurring Invoice",auto_send:"Auto Send",resend_invoice:"Resend Recurring Invoice",invoice_template:"Recurring Invoice Template",conversion_message:"Recurring Invoice cloned successful",template:"Template",mark_as_sent:"Mark as sent",confirm_send_invoice:"This recurring invoice will be sent via email to the customer",invoice_mark_as_sent:"This recurring invoice will be marked as sent",confirm_send:"This recurring invoice will be sent via email to the customer",starts_at:"Start Date",due_date:"Invoice Due Date",record_payment:"Record Payment",add_new_invoice:"Add New Recurring Invoice",update_expense:"Update Expense",edit_invoice:"Edit Recurring Invoice",new_invoice:"New Recurring Invoice",send_automatically:"Send Automatically",send_automatically_desc:"Enable this, if you would like to send the invoice automatically to the customer when its created.",save_invoice:"Save Recurring Invoice",update_invoice:"Update Recurring Invoice",add_new_tax:"Add New Tax",no_invoices:"No Recurring Invoices yet!",mark_as_rejected:"Mark as rejected",mark_as_accepted:"Mark as accepted",list_of_invoices:"This section will contain the list of recurring invoices.",select_invoice:"Select Invoice",no_matching_invoices:"There are no matching recurring invoices!",mark_as_sent_successfully:"Recurring Invoice marked as sent successfully",invoice_sent_successfully:"Recurring Invoice sent successfully",cloned_successfully:"Recurring Invoice cloned successfully",clone_invoice:"Clone Recurring Invoice",confirm_clone:"This recurring invoice will be cloned into a new Recurring Invoice",add_customer_email:"Please add an email address for this customer to send invoices automatically.",item:{title:"Item Title",description:"Description",quantity:"Quantity",price:"Price",discount:"Discount",total:"Total",total_discount:"Total Discount",sub_total:"Sub Total",tax:"Tax",amount:"Amount",select_an_item:"Type or click to select an item",type_item_description:"Type Item Description (optional)"},frequency:{title:"Frequency",select_frequency:"Select Frequency",minute:"Minute",hour:"Hour",day_month:"Day of month",month:"Month",day_week:"Day of week"},confirm_delete:"You will not be able to recover this Invoice | You will not be able to recover these Invoices",created_message:"Recurring Invoice created successfully",updated_message:"Recurring Invoice updated successfully",deleted_message:"Recurring Invoice deleted successfully | Recurring Invoices deleted successfully",marked_as_sent_message:"Recurring Invoice marked as sent successfully",user_email_does_not_exist:"User email does not exist",something_went_wrong:"something went wrong",invalid_due_amount_message:"Total Recurring Invoice amount cannot be less than total paid amount for this Recurring Invoice. Please update the invoice or delete the associated payments to continue."},dW={title:"المدفوعات",payments_list:"قائمة المدفوعات",record_payment:"تسجيل دفعة",customer:"العميل",date:"التاريخ",amount:"المبلغ المطلوب",action:"إجراء",payment_number:"رقم الدفعة",payment_mode:"نوع الدفعة",invoice:"الفاتورة",note:"ملاحظة",add_payment:"إضافة دفعة",new_payment:"دفعة جديدة",edit_payment:"تعديل الدفعة",view_payment:"عرض الدفعة",add_new_payment:"إضافة دفعة جديدة",send_payment_receipt:"إرسال إيصال الدفع",send_payment:"إرسال الدفعة",save_payment:"حفظ الدفعة",update_payment:"تحديث الدفعة",payment:"دفعة | مدفوعات",no_payments:"لا يوجد مدفوعات حتى الآن!",not_selected:"لم يتم تحديد",no_invoice:"لا توجد فاتورة",no_matching_payments:"لا توجد مدفوعات مطابقة!",list_of_payments:"سوف تحتوي هذه القائمة على مدفوعات الفواتير.",select_payment_mode:"اختر طريقة الدفع",confirm_mark_as_sent:"سيتم التحديد كمرسل على هذا التقدير",confirm_send_payment:"سيتم إرسال هذه الدفعة عبر البريد الإلكتروني إلى العميل",send_payment_successfully:"تم إرسال الدفعة بنجاح",something_went_wrong:"خطأ غير معروف!",confirm_delete:"لن تكون قادر على استرجاع هذه الدفعة | لن تكون قادراً على استرجاع هذه المدفوعات",created_message:"تم إنشاء الدفعة بنجاح",updated_message:"تم تحديث الدفعة بنجاح",deleted_message:"تم حذف الدفعة بنجاح | تم حذف المدفوعات بنجاح",invalid_amount_message:"قيمة الدفعة غير صحيحة!"},uW={title:"النفقات",expenses_list:"قائمة النفقات",select_a_customer:"حدد عميلاً",expense_title:"العنوان",customer:"العميل",currency:"Currency",contact:"تواصل",category:"الفئة",from_date:"من تاريخ",to_date:"حتى تاريخ",expense_date:"التاريخ",description:"الوصف",receipt:"سند القبض",amount:"المبلغ المطلوب",action:"إجراء",not_selected:"لم يتم تحديد",note:"ملاحظة",category_id:"رمز الفئة",date:"تاريخ النفقات",add_expense:"أضف نفقات",add_new_expense:"أضف نفقات جديدة",save_expense:"حفظ النفقات",update_expense:"تحديث النفقات",download_receipt:"تنزيل السند",edit_expense:"تعديل النفقات",new_expense:"نفقات جديدة",expense:"إنفاق | نفقات",no_expenses:"لا يوجد نفقات حتى الآن!",list_of_expenses:"هذه القائمة ستحتوي النفقات الخاصة بك",confirm_delete:"لن تتمكن من استرجاع هذا الإنفاق | لن تتمكن من استرجاع هذه النفقات",created_message:"تم إنشاء النفقات بنجاح",updated_message:"تم تحديث النفقات بنجاح",deleted_message:"تم حذف النفقات بنجاح",categories:{categories_list:"قائمة الفئات",title:"العنوان",name:"الاسم",description:"الوصف",amount:"المبلغ المطلوب",actions:"العمليات",add_category:"إضافة فئمة",new_category:"فئة جديدة",category:"فئة | فئات",select_a_category:"اختر الفئة"}},_W={email:"البريد الإلكتروني",password:"كلمة المرور",forgot_password:"نسيت كلمة المرور؟",or_signIn_with:"أو سجل الدخول بواسطة",login:"دخول",register:"تسجيل",reset_password:"إعادة تعيين كلمة المرور",password_reset_successfully:"تم إعادة تعيين كلمة المرور بنجاح",enter_email:"أدخل البريد الالكتروني",enter_password:"أكتب كلمة المرور",retype_password:"أعد كتابة كلمة المرور"},mW={buy_now:"Buy Now",install:"Install",price:"Price",download_zip_file:"Download ZIP file",unzipping_package:"Unzipping Package",copying_files:"Copying Files",deleting_files:"Deleting Unused files",completing_installation:"Completing Installation",update_failed:"Update Failed",install_success:"Module has been installed successfully!",customer_reviews:"Reviews",license:"License",faq:"FAQ",monthly:"Monthly",yearly:"Yearly",updated:"Updated",version:"Version",disable:"Disable",module_disabled:"Module Disabled",enable:"Enable",module_enabled:"Module Enabled",update_to:"Update To",module_updated:"Module Updated Successfully!",title:"Modules",module:"Module | Modules",api_token:"API token",invalid_api_token:"Invalid API Token.",other_modules:"Other Modules",view_all:"View All",no_reviews_found:"There are no reviews for this module yet!",module_not_purchased:"Module Not Purchased",module_not_found:"Module Not Found",version_not_supported:"This module version doesn't support the current version of InvoiceShelf",last_updated:"Last Updated On",connect_installation:"Connect your installation",api_token_description:"Login to {url} and connect this installation by entering the API Token. Your purchased modules will show up here after the connection is established.",view_module:"View Module",update_available:"Update Available",purchased:"Purchased",installed:"Installed",no_modules_installed:"No Modules Installed Yet!",disable_warning:"All the settings for this particular will be reverted.",what_you_get:"What you get"},pW={title:"المستخدمون",users_list:"قائمة المستخدمين",name:"اسم",description:"وصف",added_on:"وأضاف في",date_of_creation:"تاريخ الخلق",action:"عمل",add_user:"إضافة مستخدم",save_user:"حفظ المستخدم",update_user:"تحديث المستخدم",user:"تحديث المستخدم",add_new_user:"إضافة مستخدم جديد",new_user:"مستخدم جديد",edit_user:"تحرير العضو",no_users:"لا مستخدمين حتى الآن!",list_of_users:"سيحتوي هذا القسم على قائمة المستخدمين.",email:"البريد الإلكتروني",phone:"هاتف",password:"كلمه السر",user_attached_message:"لا يمكن حذف عنصر قيد الاستخدام بالفعل",confirm_delete:"لن تتمكن من استرداد هذا العنصر | لن تتمكن من استرداد هؤلاء المستخدمين",created_message:"تم إنشاء المستخدم بنجاح",updated_message:"تم تحديث المستخدم بنجاح",deleted_message:"تم حذف المستخدم بنجاح | تم حذف المستخدم بنجاح",select_company_role:"Select Role for {company}",companies:"Companies"},fW={title:"تقرير",from_date:"من تاريخ",to_date:"حتى تاريخ",status:"الحالة",paid:"مدفوع",unpaid:"غير مدفوع",download_pdf:"تنزيل PDF",view_pdf:"عرض PDF",update_report:"تحديث التقرير",report:"تقرير | تقارير",profit_loss:{profit_loss:"الخسائر والأرباح",to_date:"حتى تاريخ",from_date:"من تاريخ",date_range:"اختر مدى التاريخ"},sales:{sales:"المبيعات",date_range:"اختر مدى التاريخ",to_date:"حتى تاريخ",from_date:"من تاريخ",report_type:"نوع التقرير"},taxes:{taxes:"الضرائب",to_date:"حتى تاريخ",from_date:"من تاريخ",date_range:"اختر مدى التاريخ"},errors:{required:"حقل مطلوب"},invoices:{invoice:"الفاتورة",invoice_date:"تاريخ الفاتورة",due_date:"تاريخ الاستحقاق",amount:"المبلغ المطلوب",contact_name:"اسم التواصل",status:"الحالة"},estimates:{estimate:"تقدير",estimate_date:"تاريخ التقدير",due_date:"مستحق بتاريخ",estimate_number:"رقم مستحق",ref_number:"رقم المرجع",amount:"المبلغ المطلوب",contact_name:"اسم التواصل",status:"الحالة"},expenses:{expenses:"النفقات",category:"الفئة",date:"التاريخ",amount:"المبلغ المطلوب",to_date:"حتى تاريخ",from_date:"من تاريخ",date_range:"اختر مدى التاريخ"}},hW={menu_title:{account_settings:"إعدادات الحساب",company_information:"معلومات المنشأة",customization:"تخصيص",preferences:"تفضيلات",notifications:"تنبيهات",tax_types:"نوع الضريبة",expense_category:"فئات النفقات",update_app:"تحديث النظام",backup:"دعم",file_disk:"قرص الملف",custom_fields:"الحقول المخصصة",payment_modes:"طرق الدفع",notes:"ملاحظات",exchange_rate:"Exchange Rate",address_information:"Address Information"},address_information:{section_description:" You can update Your Address information using form below."},title:"إعدادات",setting:"إعدادات | إعدادات",general:"عام",language:"اللغة",primary_currency:"العملة الرئيسية",timezone:"المنطقة الزمنية",date_format:"صيغة التاريخ",currencies:{title:"العملات",currency:"العملة | العملات",currencies_list:"قائمة العملات",select_currency:"اختر العملة",name:"الاسم",code:"المرجع",symbol:"الرمز",precision:"الدقة",thousand_separator:"فاصل الآلاف",decimal_separator:"الفاصلة العشرية",position:"الموقع",position_of_symbol:"موقع رمز العملة",right:"يمين",left:"يسار",action:"إجراء",add_currency:"أضف عملة"},mail:{host:"خادم البريد",port:"منفذ البريد",driver:"مشغل البريد",secret:"سري",mailgun_secret:"الرمز السري لـ Mailgun",mailgun_domain:"المجال",mailgun_endpoint:"النهاية الطرفية لـ Mailgun",ses_secret:"SES الرمز السري",ses_key:"SES مفتاح",password:"كلمة مرور البريد الالكتروني",username:"اسم المستخدم للبريد الإلكتروني",mail_config:"إعدادات البريد الالكتروني",from_name:"اسم المرسل",from_mail:"عنوان البريد الالكتروني للمرسل",encryption:"صيغة ا لتشفير",mail_config_desc:"أدناه هو نموذج لتكوين برنامج تشغيل البريد الإلكتروني لإرسال رسائل البريد الإلكتروني من التطبيق. يمكنك أيضًا تهيئة موفري الجهات الخارجية مثل Sendgrid و SES إلخ."},pdf:{title:"PDF إعدادات",footer_text:"نص التذييل",pdf_layout:"اتجاه صفحة PDF"},company_info:{company_info:"معلومات الشركة",company_name:"اسم الشركة",company_logo:"شعار الشركة",section_description:"معلومات عن شركتك سيتم عرضها على الفواتير والتقديرات والمستندات الأخرى.",phone:"الهاتف",country:"الدولة",state:"الولاية/المنطقة",city:"المدينة",address:"العنوان",zip:"الرمز البريدي",save:"حفظ",delete:"Delete",updated_message:"تم تحديث معلومات الشركة بنجاح",delete_company:"Delete Company",delete_company_description:"Once you delete your company, you will lose all the data and files associated with it permanently.",are_you_absolutely_sure:"Are you absolutely sure?",delete_company_modal_desc:"This action cannot be undone. This will permanently delete {company} and all of its associated data.",delete_company_modal_label:"Please type {company} to confirm"},custom_fields:{title:"الحقول المخصصة",section_description:"قم بتخصيص فواتيرك وتقديراتك وإيصالات الدفع باستخدام الحقول الخاصة بك. تأكد من استخدام الحقول المضافة أدناه في تنسيقات العناوين في صفحة إعدادات التخصيص.",add_custom_field:"إضافة حقل مخصص",edit_custom_field:"تحرير الحقل المخصص",field_name:"اسم الحقل",label:"ضع الكلمة المناسبة",type:"نوع",name:"اسم",slug:"Slug",required:"مطلوب",placeholder:"عنصر نائب",help_text:"نص المساعدة",default_value:"القيمة الافتراضية",prefix:"اختصار",starting_number:"رقم البداية",model:"نموذج",help_text_description:"أدخل بعض النص لمساعدة المستخدمين على فهم الغرض من هذا الحقل المخصص.",suffix:"لاحقة",yes:"نعم",no:"لا",order:"طلب",custom_field_confirm_delete:"لن تتمكن من استعادة هذا الحقل المخصص",already_in_use:"الحقل المخصص قيد الاستخدام بالفعل",deleted_message:"تم حذف الحقل المخصص بنجاح",options:"خيارات",add_option:"أضف خيارات",add_another_option:"أضف خيارًا آخر",sort_in_alphabetical_order:"فرز حسب الترتيب الأبجدي",add_options_in_bulk:"أضف الخيارات بشكل مجمّع",use_predefined_options:"استخدم الخيارات المحددة مسبقًا",select_custom_date:"حدد التاريخ المخصص",select_relative_date:"حدد التاريخ النسبي",ticked_by_default:"يتم تحديده بشكل افتراضي",updated_message:"تم تحديث الحقل المخصص بنجاح",added_message:"تمت إضافة الحقل المخصص بنجاح",press_enter_to_add:"Press enter to add new option",model_in_use:"Cannot update model for fields which are already in use.",type_in_use:"Cannot update type for fields which are already in use."},customization:{customization:"التخصيص",updated_message:"تم تحديث معلومات الشركة بنجاح",save:"حفظ",insert_fields:"Insert Fields",learn_custom_format:"Learn how to use custom format",add_new_component:"Add New Component",component:"Component",Parameter:"Parameter",series:"Series",series_description:"To set a static prefix/postfix like 'INV' across your company. It supports character length of up to 6 chars.",series_param_label:"Series Value",delimiter:"Delimiter",delimiter_description:"Single character for specifying the boundary between 2 separate components. By default its set to -",delimiter_param_label:"Delimiter Value",date_format:"Date Format",date_format_description:"A local date and time field which accepts a format parameter. The default format: 'Y' renders the current year.",date_format_param_label:"Format",sequence:"Sequence",sequence_description:"Consecutive sequence of numbers across your company. You can specify the length on the given parameter.",sequence_param_label:"Sequence Length",customer_series:"Customer Series",customer_series_description:"To set a different prefix/postfix for each customer.",customer_sequence:"Customer Sequence",customer_sequence_description:"Consecutive sequence of numbers for each of your customer.",customer_sequence_param_label:"Sequence Length",random_sequence:"Random Sequence",random_sequence_description:"Random alphanumeric string. You can specify the length on the given parameter.",random_sequence_param_label:"Sequence Length",invoices:{title:"الفواتير",invoice_number_format:"Invoice Number Format",invoice_number_format_description:"Customize how your invoice number gets generated automatically when you create a new invoice.",preview_invoice_number:"Preview Invoice Number",due_date:"Due Date",due_date_description:"Specify how due date is automatically set when you create an invoice.",due_date_days:"Invoice Due after days",set_due_date_automatically:"Set Due Date Automatically",set_due_date_automatically_description:"Enable this if you wish to set due date automatically when you create a new invoice.",default_formats:"Default Formats",default_formats_description:"Below given formats are used to fill up the fields automatically on invoice creation.",default_invoice_email_body:"نص الفاتورة الافتراضي للبريد الإلكتروني",company_address_format:"تنسيق عنوان الشركة",shipping_address_format:"تنسيق عنوان الشحن",billing_address_format:"تنسيق عنوان الفواتير",invoice_email_attachment:"إرسال الفواتير كمرفقات",invoice_email_attachment_setting_description:'تفعيل هذا إذا كنت ترغب في إرسال الفواتير كمرفق بريد إلكتروني. يرجى ملاحظة أن زر "عرض الفواتير" في رسائل البريد الإلكتروني لن يتم عرضه بعد الآن عند التفعيل.',invoice_settings_updated:"Invoice Settings updated successfully",retrospective_edits:"Retrospective Edits",allow:"Allow",disable_on_invoice_partial_paid:"Disable after partial payment is recorded",disable_on_invoice_paid:"Disable after full payment is recorded",disable_on_invoice_sent:"Disable after invoice is sent",retrospective_edits_description:" Based on your country's laws or your preference, you can restrict users from editing finalised invoices."},estimates:{title:"التقديرات",estimate_number_format:"Estimate Number Format",estimate_number_format_description:"Customize how your estimate number gets generated automatically when you create a new estimate.",preview_estimate_number:"Preview Estimate Number",expiry_date:"Expiry Date",expiry_date_description:"Specify how expiry date is automatically set when you create an estimate.",expiry_date_days:"Estimate Expires after days",set_expiry_date_automatically:"Set Expiry Date Automatically",set_expiry_date_automatically_description:"Enable this if you wish to set expiry date automatically when you create a new estimate.",default_formats:"Default Formats",default_formats_description:"Below given formats are used to fill up the fields automatically on estimate creation.",default_estimate_email_body:"تقدير نص البريد الإلكتروني الافتراضي",company_address_format:"تنسيق عنوان الشركة",shipping_address_format:"تنسيق عنوان الشحن",billing_address_format:"تنسيق عنوان الفواتير",estimate_email_attachment:"إرسال التقديرات كمرفقات",estimate_email_attachment_setting_description:'تفعيل هذا إذا كنت ترغب في إرسال الفواتير كمرفق بريد إلكتروني. يرجى ملاحظة أن زر "عرض التقديرات" في رسائل البريد الإلكتروني لن يتم عرضه بعد الآن عند التفعيل.',estimate_settings_updated:"Estimate Settings updated successfully",convert_estimate_options:"Estimate Convert Action",convert_estimate_description:"Specify what happens to the estimate after it gets converted to an invoice.",no_action:"No action",delete_estimate:"Delete estimate",mark_estimate_as_accepted:"Mark estimate as accepted"},payments:{title:"المدفوعات",payment_number_format:"Payment Number Format",payment_number_format_description:"Customize how your payment number gets generated automatically when you create a new payment.",preview_payment_number:"Preview Payment Number",default_formats:"Default Formats",default_formats_description:"Below given formats are used to fill up the fields automatically on payment creation.",default_payment_email_body:"نص البريد الإلكتروني للدفع الافتراضي",company_address_format:"تنسيق عنوان الشركة",from_customer_address_format:"من تنسيق عنوان العميل",payment_email_attachment:"إرسال المدفوعات كمرفقات",payment_email_attachment_setting_description:'تفعيل هذا إذا كنت ترغب في إرسال الفواتير كمرفق بريد إلكتروني. يرجى ملاحظة أن زر "عرض المدفوعات" في رسائل البريد الإلكتروني لن يتم عرضه بعد الآن عند التفعيل.',payment_settings_updated:"Payment Settings updated successfully"},items:{title:"العناصر",units:"الوحدات",add_item_unit:"إضافة وحدة عنصر",edit_item_unit:"تحرير وحدة العناصر",unit_name:"إسم الوحدة",item_unit_added:"تمت إضافة وحدة العنصر",item_unit_updated:"تم تحديث وحدة العنصر",item_unit_confirm_delete:"لن تتمكن من استرداد وحدة العنصر هذه",already_in_use:"وحدة العنصر قيد الاستخدام بالفعل",deleted_message:"تم حذف وحدة العنصر بنجاح"},notes:{title:"ملاحظات",description:"توفير الوقت عن طريق إنشاء الملاحظات وإعادة استخدامها على الفواتير والتقديرات والمدفوعات.",notes:"ملاحظات",type:"نوع",add_note:"اضف ملاحظة",add_new_note:"أضف ملاحظة جديدة",name:"اسم",edit_note:"تحرير مذكرة",note_added:"تمت إضافة الملاحظة",note_updated:"تم تحديث الملاحظة",note_confirm_delete:"لن تتمكن من استعادة هذه الملاحظة",already_in_use:"الملاحظة قيد الاستخدام بالفعل",deleted_message:"تم حذف الملاحظة بنجاح"}},account_settings:{profile_picture:"صورة الملف الشخصي",name:"الاسم",email:"البريد الإلكتروني",password:"كلمة المرور",confirm_password:"أعد كتابة كلمة المرور",account_settings:"إعدادات الجساب",save:"حفظ",section_description:"يمكنك تحديث اسمك والبريد الإلكتروني وكلمة المرور باستخدام النموذج أدناه.",updated_message:"تم تحديث إعدادات الحساب بنجاح"},user_profile:{name:"الاسم",email:"البريد الإلكتروني",password:"كلمة المرور",confirm_password:"أعد كتابة كلمة المرور"},notification:{title:"الإشعارات",email:"إرسال الإشعارات إلى",description:"ما هي إشعارات البريد الإلكتروني التي ترغب في تلقيها عندما يتغير شيء ما؟",invoice_viewed:"تم عرض الفاتورة",invoice_viewed_desc:"عندما يستعرض عميلك الفاتورة المرسلة عبر الشاشة الرئيسية.",estimate_viewed:"تم عرض التقدير",estimate_viewed_desc:"عندما يستعرض عميلك التقدير المرسلة عبر الشاشة الرئيسية.",save:"حفظ",email_save_message:"تم حفظ البريد الإلكتروني بنجاح",please_enter_email:"فضلاً أدخل البريد الإلكتروني"},roles:{title:"Roles",description:"Manage the roles & permissions of this company",save:"Save",add_new_role:"Add New Role",role_name:"Role Name",added_on:"Added on",add_role:"Add Role",edit_role:"Edit Role",name:"Name",permission:"Permission | Permissions",select_all:"Select All",none:"None",confirm_delete:"You will not be able to recover this Role",created_message:"Role created successfully",updated_message:"Role updated successfully",deleted_message:"Role deleted successfully",already_in_use:"Role is already in use"},exchange_rate:{exchange_rate:"Exchange Rate",title:"Fix Currency Exchange issues",description:"Please enter exchange rate of all the currencies mentioned below to help InvoiceShelf properly calculate the amounts in {currency}.",drivers:"Drivers",new_driver:"Add New Provider",edit_driver:"Edit Provider",select_driver:"Select Driver",update:"select exchange rate ",providers_description:"Configure your exchange rate providers here to automatically fetch the latest exchange rate on transactions.",key:"API Key",name:"Name",driver:"Driver",is_default:"IS DEFAULT",currency:"Currencies",exchange_rate_confirm_delete:"You will not be able to recover this driver",created_message:"Provider Created successfully",updated_message:"Provider Updated Successfully",deleted_message:"Provider Deleted Successfully",error:" You cannot Delete Active Driver",default_currency_error:"This currency is already used in one of the Active Provider",exchange_help_text:"Enter exchange rate to convert from {currency} to {baseCurrency}",currency_freak:"Currency Freak",currency_layer:"Currency Layer",open_exchange_rate:"Open Exchange Rate",currency_converter:"Currency Converter",server:"Server",url:"URL",active:"Active",currency_help_text:"This provider will only be used on above selected currencies",currency_in_used:"The following currencies are already active on another provider. Please remove these currencies from selection to activate this provider again."},tax_types:{title:"أنواع الضرائب",add_tax:"أضف ضريبة",edit_tax:"تحرير الضريبة",description:"يمكنك إضافة أو إزالة الضرائب كما يحلو لك. النظام يدعم الضرائب على العناصر الفردية وكذلك على الفاتورة.",add_new_tax:"إضافة ضريبة جديدة",tax_settings:"إعدادات الضريبة",tax_per_item:"ضريبة على الصنف",tax_name:"اسم الضريبة",compound_tax:"ضريبة مجمعة",percent:"نسبة مؤوية",action:"إجراء",tax_setting_description:"قم بتمكين هذا إذا كنت تريد إضافة ضرائب لعناصر الفاتورة الفردية. بشكل افتراضي ، تضاف الضرائب مباشرة إلى الفاتورة.",created_message:"تم إنشاء نوع الضريبة بنجاح",updated_message:"تم تحديث نوع الضريبة بنجاح",deleted_message:"تم حذف نوع الضريبة بنجاح",confirm_delete:"لن تتمكن من استرجاع نوع الضرية هذا",already_in_use:"ضريبة قيد الاستخدام"},payment_modes:{title:"Payment Modes",description:"Modes of transaction for payments",add_payment_mode:"Add Payment Mode",edit_payment_mode:"Edit Payment Mode",mode_name:"Mode Name",payment_mode_added:"Payment Mode Added",payment_mode_updated:"Payment Mode Updated",payment_mode_confirm_delete:"You will not be able to recover this Payment Mode",payments_attached:"This payment method is already attached to payments. Please delete the attached payments to proceed with deletion.",expenses_attached:"This payment method is already attached to expenses. Please delete the attached expenses to proceed with deletion.",deleted_message:"Payment Mode deleted successfully"},expense_category:{title:"فئات النفقات",action:"إجراء",description:"الفئات مطلوبة لإضافة إدخالات النفقات. يمكنك إضافة أو إزالة هذه الفئات وفقًا لتفضيلاتك.",add_new_category:"إضافة فئة جديدة",add_category:"إضافة فئة",edit_category:"تحرير الفئة",category_name:"اسم الفئة",category_description:"الوصف",created_message:"تم إنشاء نوع النفقات بنجاح",deleted_message:"تم حذف نوع النفقات بنجاح",updated_message:"تم تحديث نوع النفقات بنجاح",confirm_delete:"لن تتمكن من استرجاع نوع النفقات هذا",already_in_use:"نوع قيد الاستخدام"},preferences:{currency:"العملة",default_language:"اللغة الافتراضية",time_zone:"المنطة الزمنية",fiscal_year:"السنة المالية",date_format:"صيغة التاريخ",discount_setting:"إعدادات الخصم",discount_per_item:"خصم على الصنف ",discount_setting_description:"قم بتمكين هذا إذا كنت تريد إضافة خصم إلى عناصر الفاتورة الفردية. بشكل افتراضي ، يتم إضافة الخصم مباشرة إلى الفاتورة.",expire_public_links:"Automatically Expire Public Links",expire_setting_description:"Specify whether you would like to expire all the links sent by application to view invoices, estimates & payments, etc after a specified duration.",save:"حفظ",preference:"تفضيل | تفضيلات",general_settings:"التفضيلات الافتراضية للنظام.",updated_message:"تم تحديث التفضيلات بنجاح",select_language:"اختر اللغة",select_time_zone:"اختر المنطة الزمنية",select_date_format:"اختر صيغة التاريخ",select_financial_year:"اختر السنة المالية",recurring_invoice_status:"Recurring Invoice Status",create_status:"Create Status",active:"Active",on_hold:"On Hold",update_status:"Update Status",completed:"Completed",company_currency_unchangeable:"Company currency cannot be changed"},update_app:{title:"تحديث النظام",description:"يمكنك تحديث النظام بسهولة عن طريق البحث عن تحديث جديد بالنقر فوق الزر أدناه",check_update:"تحقق من التحديثات",avail_update:"تحديث جديد متوفر",next_version:"النسخة الجديدة",requirements:"المتطلبات",update:"حدث الآن",update_progress:"قيد التحديث...",progress_text:"سوف يستغرق التحديث بضع دقائق. يرجى عدم تحديث الشاشة أو إغلاق النافذة قبل انتهاء التحديث",update_success:"تم تحديث النظام! يرجى الانتظار حتى يتم إعادة تحميل نافذة المتصفح تلقائيًا.",latest_message:"لا يوجد تحديثات متوفرة! لديك حالياً أحدث نسخة.",current_version:"النسخة الحالية",download_zip_file:"تنزيل ملف ZIP",unzipping_package:"حزمة فك الضغط",copying_files:"نسخ الملفات",deleting_files:"حذف الملفات الغير مستخدمة",running_migrations:"إدارة عمليات الترحيل",finishing_update:"تحديث التشطيب",update_failed:"فشل التحديث",update_failed_text:"آسف! فشل التحديث الخاص بك في: {step} خطوة",update_warning:"All of the application files and default template files will be overwritten when you update the application using this utility. Please take a backup of your templates & database before updating."},backup:{title:"النسخ الاحتياطي | النسخ الاحتياطية",description:"النسخة الاحتياطية هي ملف مضغوط يحتوي على جميع الملفات في الدلائل التي تحددها مع تفريغ قاعدة البيانات الخاصة بك",new_backup:"إضافة نسخة احتياطية جديدة",create_backup:"انشئ نسخة احتياطية",select_backup_type:"حدد نوع النسخ الاحتياطي",backup_confirm_delete:"لن تتمكن من استعادة هذه النسخة الاحتياطية",path:"مسار",new_disk:"قرص جديد",created_at:"أنشئت في",size:"حجم الملف",dropbox:"بصندوق الإسقاط",local:"محلي",healthy:"صحي",amount_of_backups:"كمية النسخ الاحتياطية",newest_backups:"أحدث النسخ الاحتياطية",used_storage:"التخزين المستخدم",select_disk:"حدد القرص",action:"عمل",deleted_message:"تم حذف النسخة الاحتياطية بنجاح",created_message:"تم إنشاء النسخة الاحتياطية بنجاح",invalid_disk_credentials:"بيانات اعتماد غير صالحة للقرص المحدد"},disk:{title:"قرص الملفات | أقراص الملفات",description:"بشكل افتراضي ، ستستخدم InvoiceShelf القرص المحلي لحفظ النسخ الاحتياطية والأفاتار وملفات الصور الأخرى. يمكنك تكوين أكثر من برامج تشغيل قرص مثل DigitalOcean و S3 و Dropbox وفقًا لتفضيلاتك.",created_at:"أنشئت في",dropbox:"بصندوق الإسقاط",name:"اسم",driver:"سائق",disk_type:"نوع",disk_name:"اسم القرص",new_disk:"إضافة قرص جديد",filesystem_driver:"برنامج تشغيل نظام الملفات",local_driver:"سائق محلي",local_root:"الجذر المحلي",public_driver:"سائق عام",public_root:"الجذر العام",public_url:"URL العام",public_visibility:"الرؤية العامة",media_driver:"سائق وسائط",media_root:"جذر الوسائط",aws_driver:"برنامج تشغيل AWS",aws_key:"مفتاح AWS",aws_secret:"AWS Secret",aws_region:"منطقة AWS",aws_bucket:"حاوية AWS",aws_root:"AWS الجذر",do_spaces_type:"هل نوع المساحات",do_spaces_key:"مفتاح Do Spaces",do_spaces_secret:"هل المساحات سرية",do_spaces_region:"هل منطقة المساحات",do_spaces_bucket:"هل دلو المساحات",do_spaces_endpoint:"قم بعمل نقطة نهاية للمسافات",do_spaces_root:"عمل الجذر للمسافات",dropbox_type:"نوع Dropbox",dropbox_token:"رمز Dropbox",dropbox_key:"مفتاح Dropbox",dropbox_secret:"Dropbox Secret",dropbox_app:"تطبيق Dropbox",dropbox_root:"جذر Dropbox",default_driver:"برنامج التشغيل الافتراضي",is_default:"أمر افتراضي",set_default_disk:"تعيين القرص الافتراضي",set_default_disk_confirm:"سيتم تعيين هذا القرص كالافتراضي وسيتم حفظ جميع ملفات PDF الجديدة على هذا القرص",success_set_default_disk:"تم تعيين القرص كالافتراضي بنجاح",save_pdf_to_disk:"حفظ ملفات PDF على القرص",disk_setting_description:"قم بتمكين هذا ، إذا كنت ترغب في حفظ نسخة من كل فاتورة ، تقدير وإيصال دفع PDF على القرص الافتراضي الخاص بك تلقائيًا. سيؤدي تشغيل هذا الخيار إلى تقليل وقت التحميل عند عرض ملفات PDF.",select_disk:"حدد القرص",disk_settings:"إعدادات القرص",confirm_delete:"لن تتأثر الملفات والمجلدات الموجودة في القرص المحدد ولكن سيتم حذف اعدادات القرص الخاص بك من InvoiceShelf",action:"عمل",edit_file_disk:"تعديل قرص الملف",success_create:"تمت إضافة القرص بنجاح",success_update:"تم تحديث القرص بنجاح",error:"فشل إضافة القرص",deleted_message:"تم حذف ملف القرص بنجاح",disk_variables_save_successfully:"تم تكوين القرص بنجاح",disk_variables_save_error:"فشل تكوين القرص.",invalid_disk_credentials:"بيانات اعتماد غير صالحة للقرص المحدد"},taxations:{add_billing_address:"Enter Billing Address",add_shipping_address:"Enter Shipping Address",add_company_address:"Enter Company Address",modal_description:"The information below is required in order to fetch sales tax.",add_address:"Add Address for fetching sales tax.",address_placeholder:"Example: 123, My Street",city_placeholder:"Example: Los Angeles",state_placeholder:"Example: CA",zip_placeholder:"Example: 90024",invalid_address:"Please provide valid address details."}},gW={account_info:"معلومات الحساب",account_info_desc:"سيتم استخدام التفاصيل أدناه لإنشاء حساب المسؤول الرئيسي. كما يمكنك تغيير التفاصيل في أي وقت بعد تسجيل الدخول.",name:"الاسم",email:"البريد الإلكتروني",password:"كلمة المرور",confirm_password:"أعد كتابة كلمة المرور",save_cont:"حفظ واستمرار",company_info:"معلومات الشركة",company_info_desc:"سيتم عرض هذه المعلومات على الفواتير. لاحظ أنه يمكنك تعديل هذا لاحقًا في صفحة الإعدادات.",company_name:"اسم الشركة",company_logo:"شعار الشركة",logo_preview:"استعراض الشعار",preferences:"التفضيلات",preferences_desc:"التفضيلات الافتراضية للنظام",currency_set_alert:"The company's currency cannot be changed later.",country:"الدولة",state:"الولاية/المنطقة",city:"المدينة",address:"العنوان",street:"العنوان 1 | العنوان 2",phone:"الهاتف",zip_code:"الرمز البريدي",go_back:"للخلف",currency:"العملة",language:"اللغة",time_zone:"المنطة الزمنية",fiscal_year:"السنة المالية",date_format:"صيغة التاريخ",from_address:"من العنوان",username:"اسم المستخدم",next:"التالي",continue:"استمرار",skip:"تخطي",database:{database:"عنوان قاعدة البيانات",connection:"اتصال قاعدة البيانات",host:"خادم قاعدة البيانات",port:"منفذ قاعدة البيانات",password:"كلمة مرور قاعدة البيانات",app_url:"عنوان الإنترنت للنظام",app_domain:"رابط التطبيق",username:"اسم المستخدم لقاعدة البيانات",db_name:"سم قاعدة البيانات",db_path:"مسار قاعدة البيانات",desc:"قم بإنشاء قاعدة بيانات على الخادم الخاص بك وتعيين بيانات الاعتماد باستخدام النموذج أدناه."},permissions:{permissions:"الأذونات",permission_confirm_title:"هل أنت متأكد من الاستمرار؟",permission_confirm_desc:"فشل فحص أذونات المجلد",permission_desc:"فيما يلي قائمة أذونات المجلد المطلوبة حتى يعمل التطبيق. في حالة فشل فحص الإذن ، تأكد من تحديث أذونات المجلد."},verify_domain:{title:"التحقق من النطاق",desc:"InvoiceShelf uses Session based authentication which requires domain verification for security purposes. Please enter the domain on which you will be accessing your web application.",app_domain:"نطاق التطبيق",verify_now:"تحقق الآن",success:"تم التحقق من النطاق بنجاح.",failed:"Domain verification failed. Please enter valid domain name.",verify_and_continue:"التحقق والمتابعة"},mail:{host:"خادم البريد",port:"منفذ البريد",driver:"مشغل البريد",secret:"سري",mailgun_secret:"الرمز السري لـ Mailgun",mailgun_domain:"المجال",mailgun_endpoint:"النهاية الطرفية لـ Mailgun",ses_secret:"SES الرمز السري",ses_key:"SES مفتاح",password:"كلمة مرور البريد الالكتروني",username:"اسم المستخدم للبريد الإلكتروني",mail_config:"إعدادات البريد الالكتروني",from_name:"اسم المرسل",from_mail:"عنوان البريد الالكتروني للمرسل",encryption:"صيغة ا لتشفير",mail_config_desc:"أدناه هو نموذج لتكوين برنامج تشغيل البريد الإلكتروني لإرسال رسائل البريد الإلكتروني من التطبيق. يمكنك أيضًا تهيئة موفري الجهات الخارجية مثل Sendgrid و SES إلخ."},req:{system_req:"متطلبات النظام",php_req_version:"Php (النسخة المطلوبة {version} بحد أدنى)",check_req:"فحص متطلبات النظام",system_req_desc:"يحتوي النظام على بعض متطلبات الخادم. تأكد من أن خادمك لديه نسخة php المطلوبة وجميع الامتدادات المذكورة أدناه."},errors:{migrate_failed:"فشل إنشاء الجداول",database_variables_save_error:"غير قادر على الاتصال بقاعدة البيانات باستخدام القيم المقدمة.",mail_variables_save_error:"فشل تكوين البريد الإلكتروني.",connection_failed:"فشل اتصال قاعدة البيانات",database_should_be_empty:"يجب أن تكون قاعدة البيانات فارغة"},success:{mail_variables_save_successfully:"تم تكوين البريد الإلكتروني بنجاح",database_variables_save_successfully:"تم تكوين قاعدة البيانات بنجاح."}},vW={invalid_phone:"رقم الهاتف غير صحيح",invalid_url:"عنوان انترنت غير صحيح (مثال: http://www.invoiceshelf.com)",invalid_domain_url:"عنوان انترنت غير صحيح (مثال: invoiceshelf.com)",required:"حقل مطلوب",email_incorrect:"بريد الكتروني غير صحيح.",email_already_taken:"هذا البريد الالكتروني مستخدم مسبقاً",email_does_not_exist:"لا يوجد كستخدم بهذا البريد الالكتروني",item_unit_already_taken:"وحدة البند قد اتخذت بالفعل",payment_mode_already_taken:"لقد تم بالفعل أخذ طريقة الدفع",send_reset_link:"أرسال رابط استعادة كلمة المرور",not_yet:"ليس بعد؟ أعد الإرسال الآن..",password_min_length:"كلمة المرور يجب أن تتكون من {count} أحرف على الأقل",name_min_length:"الاسم يجب أن يتكون من {count} أحرف على الأقل",prefix_min_length:"Prefix must have at least {count} letters.",enter_valid_tax_rate:"أدخل معدل الضريبة بشكل صحيح",numbers_only:"أرقام فقط.",characters_only:"حروف فقط.",password_incorrect:"يجب أن تكون كلمات المرور متطابقة",password_length:"يجب أن تكون كلمة المرور بطول {count} حرف.",qty_must_greater_than_zero:"الكمية يجب أن تكون أكبر من صفر.",price_greater_than_zero:"السعر يجب أن يكون أكبر من صفر.",payment_greater_than_zero:"الدفعة يجب أن تكون أكبر من صفر.",payment_greater_than_due_amount:"مبلغ الدفعة أكثر من المبلغ المستحق لهذه الفاتورة.",quantity_maxlength:"يجب ألا تزيد الكمية عن 20 رقماً.",price_maxlength:"يجب ألا يزيد السعر عن 20 رقماً.",price_minvalue:"يجب أن يكون السعر أكبر من صفر.",amount_maxlength:"يجب ألا يزيد المبلغ عن 20 رقماً.",amount_minvalue:"يجب أن يكون المبلغ أكبر من صفر.",discount_maxlength:"Discount should not be greater than max discount",description_maxlength:"يجب ألا يزيد الوصف عن 255 حرفاً.",subject_maxlength:"يجب الا يزيد العنوان عن 100 حرف.",message_maxlength:"يجب ألا يزيد حجم النص عن 255 حرف.",maximum_options_error:"الحد الأعلى هو {max} خيارات. قم بإزالة أحد الخيارات لتحديد خيار آخر.",notes_maxlength:"يجب ألا يزيد حجم الملاحظات عن 255 حرفاً.",address_maxlength:"يجب ألا يزيد العنوان عن 255 حرفاً.",ref_number_maxlength:"يجب ألا يزيد الرقم المرجعي عن 255 حرفاً.",prefix_maxlength:"يجب ألا تزيد البادئة عن 5 أحرف.",something_went_wrong:"خطأ غير معروف!",number_length_minvalue:"يجب أن تكون قيمة الرقم أكبر من الصفر",at_least_one_ability:"Please select atleast one Permission.",valid_driver_key:"Please enter a valid {driver} key.",valid_exchange_rate:"Please enter a valid exchange rate.",company_name_not_same:"Company name must match with given name."},yW={starter_plan:"This feature is available on Starter plan and onwards!",invalid_provider_key:"Please Enter Valid Provider API Key.",estimate_number_used:"The estimate number has already been taken.",invoice_number_used:"The invoice number has already been taken.",payment_attached:"This invoice already has a payment attached to it. Make sure to delete the attached payments first in order to go ahead with the removal.",payment_number_used:"The payment number has already been taken.",name_already_taken:"The name has already been taken.",receipt_does_not_exist:"Receipt does not exist.",customer_cannot_be_changed_after_payment_is_added:"Customer cannot be change after payment is added",invalid_credentials:"Invalid Credentials.",not_allowed:"Not Allowed",login_invalid_credentials:"These credentials do not match our records.",enter_valid_cron_format:"Please enter a valid cron format",email_could_not_be_sent:"Email could not be sent to this email address.",invalid_address:"Please enter a valid address.",invalid_key:"Please enter valid key.",invalid_state:"Please enter a valid state.",invalid_city:"Please enter a valid city.",invalid_postal_code:"Please enter a valid zip.",invalid_format:"Please enter valid query string format.",api_error:"Server not responding.",feature_not_enabled:"Feature not enabled.",request_limit_met:"Api request limit exceeded.",address_incomplete:"Incomplete Address"},bW="تقدير",kW="رقم تقدير",wW="تاريخ التقدير",DW="تاريخ انتهاء الصلاحية",xW="الفاتورة",SW="رقم الفاتورة",PW="تاريخ الفاتورة",EW="تاريخ الاستحقاق",zW="ملاحظات",AW="الأصناف",CW="الكمية",TW="السعر",jW="الخصم",NW="المبلغ المطلوب",IW="المجموع الفرعي",FW="الإجمالي",RW="الدفع",OW="ايصال الدفع",MW="تاريخ الدفع",$W="رقم الدفعة",LW="نوع الدفعة",BW="المبلغ المستلم",UW="تقرير المصاريف",VW="مجموع المصاريف",qW="تقرير الارباح و الخسائر",WW="تقرير عملاء المبيعات",HW="تقرير عناصر المبيعات",KW="تقرير ملخص الضرائب",YW="الايرادات",ZW="صافي الأرباح",GW="تقرير المبيعات: حسب العميل",QW="مجموع المبيعات",JW="تقرير المبيعات: حسب البضاعة او الخدمة",XW="تقرير الاداءات",eH="اجمالي الاداءات",tH="أنواع الضرائب",aH="النفقات",nH="مطلوب من,",iH="يشحن إلى,",oH="تم الاستلام من:",sH="Tax",rH={navigation:Jq,general:Xq,dashboard:eW,tax_types:tW,global_search:aW,company_switcher:nW,dateRange:iW,customers:oW,items:sW,estimates:rW,invoices:lW,recurring_invoices:cW,payments:dW,expenses:uW,login:_W,modules:mW,users:pW,reports:fW,settings:hW,wizard:gW,validation:vW,errors:yW,pdf_estimate_label:bW,pdf_estimate_number:kW,pdf_estimate_date:wW,pdf_estimate_expire_date:DW,pdf_invoice_label:xW,pdf_invoice_number:SW,pdf_invoice_date:PW,pdf_invoice_due_date:EW,pdf_notes:zW,pdf_items_label:AW,pdf_quantity_label:CW,pdf_price_label:TW,pdf_discount_label:jW,pdf_amount_label:NW,pdf_subtotal:IW,pdf_total:FW,pdf_payment_label:RW,pdf_payment_receipt_label:OW,pdf_payment_date:MW,pdf_payment_number:$W,pdf_payment_mode:LW,pdf_payment_amount_received_label:BW,pdf_expense_report_label:UW,pdf_total_expenses_label:VW,pdf_profit_loss_label:qW,pdf_sales_customers_label:WW,pdf_sales_items_label:HW,pdf_tax_summery_label:KW,pdf_income_label:YW,pdf_net_profit_label:ZW,pdf_customer_sales_report:GW,pdf_total_sales_label:QW,pdf_item_sales_label:JW,pdf_tax_report_label:XW,pdf_total_tax_label:eH,pdf_tax_types_label:tH,pdf_expenses_label:aH,pdf_bill_to:nH,pdf_ship_to:iH,pdf_received_from:oH,pdf_tax_label:sH},lH={dashboard:"Übersicht",customers:"Kunden",items:"Artikel",invoices:"Rechnungen","recurring-invoices":"Serienrechnungen",expenses:"Ausgaben",estimates:"Angebote",payments:"Zahlungen",reports:"Berichte",settings:"Einstellungen",logout:"Abmelden",users:"Benutzer",modules:"Module"},cH={add_company:"Unternehmen hinzufügen",view_pdf:"PDF anzeigen",copy_pdf_url:"PDF-Link kopieren",download_pdf:"PDF herunterladen",save:"Speichern",create:"Erstellen",cancel:"Abbrechen",update:"Aktualisieren",deselect:"Abwählen",download:"Herunterladen",from_date:"Von Datum",to_date:"bis Datum",from:"Von",to:"An",ok:"Okay",yes:"Ja",no:"Nein",sort_by:"Sortieren nach",ascending:"Aufsteigend",descending:"Absteigend",subject:"Betreff",body:"Inhalt",message:"Nachricht",send:"Absenden",preview:"Vorschau",go_back:"zurück",back_to_login:"Zurück zum Login?",home:"Startseite",filter:"Filter",delete:"Löschen",edit:"Bearbeiten",view:"Anzeigen",add_new_item:"Artikel hinzufügen",clear_all:"Alle entfernen",showing:"Anzeigen",of:"von",actions:"Aktionen",subtotal:"ZWISCHENSUMME",discount:"RABATT",fixed:"Festsatz",percentage:"Prozentsatz",tax:"Steuer",total_amount:"GESAMTSUMME",bill_to:"Rechnungsempfänger",ship_to:"Versand an",due:"Fällig",draft:"Entwurf",sent:"Gesendet",all:"Alle",select_all:"Alle auswählen",select_template:"Vorlage auswählen",choose_file:"Klicken Sie hier, um eine Datei auszuwählen",choose_template:"Wählen Sie eine Vorlage",choose:"Wählen",remove:"Entfernen",select_a_status:"Status wählen",select_a_tax:"Steuersatz wählen",search:"Suchen",are_you_sure:"Sind Sie sicher?",list_is_empty:"Liste ist leer.",no_tax_found:"Kein Steuersatz gefunden!",four_zero_four:"Vier hundert vier",you_got_lost:"Hoppla! Du hast dich verirrt!",go_home:"Geh zurück",test_mail_conf:"E-Mail Konfiguration testen",send_mail_successfully:"E-Mail erfolgreich versendet",setting_updated:"Einstellungen erfolgreich aktualisiert",select_state:"Bundesland wählen",select_country:"Land wählen",select_city:"Stadt wählen",street_1:"Straße und Hausnummer",street_2:"Adresszusatz",action_failed:"Aktion fehlgeschlagen",retry:"Wiederholen",choose_note:"Notiz auswählen",no_note_found:"Keine Notizen gefunden",insert_note:"Notiz einfügen",copied_pdf_url_clipboard:"PDF-URL in Zwischenablage kopiert!",copied_url_clipboard:"URL wurde in die Zwischenablage kopiert!",docs:"Dokumentation",do_you_wish_to_continue:"Möchten Sie fortfahren?",note:"Notiz",pay_invoice:"Rechnung bezahlen",login_successfully:"Erfolgreich angemeldet!",logged_out_successfully:"Erfolgreich abgemeldet",mark_as_default:"Als Standard festlegen"},dH={select_year:"Jahr wählen",cards:{due_amount:"Offene Beträge",customers:"Kunden",invoices:"Rechnungen",estimates:"Angebote",payments:"Zahlungen"},chart_info:{total_sales:"Aufträge gesamt",total_receipts:"Zahlungen gesamt",total_expense:"Ausgaben",net_income:"Einnahmen Netto",year:"Jahr"},monthly_chart:{title:"Umsatz & Ausgaben"},recent_invoices_card:{title:"Fällige Rechnungen",due_on:"Fällig am",customer:"Kunde",amount_due:"Offener Betrag",actions:"Aktionen",view_all:"Alle Anzeigen"},recent_estimate_card:{title:"Aktuelle Angebote",date:"Datum",customer:"Kunde",amount_due:"Betrag",actions:"Aktionen",view_all:"Alle Anzeigen"}},uH={name:"Name",description:"Beschreibung",percent:"Prozent",compound_tax:"zusammengesetzte Steuer"},_H={search:"Suchen...",customers:"Kunden",users:"Benutzer",no_results_found:"Keine Ergebnisse gefunden"},mH={label:"UNTERNEHMEN WECHSELN",no_results_found:"Keine Ergebnisse gefunden",add_new_company:"Neues Unternehmen hinzufügen",new_company:"Neues Unternehmen",created_message:"Unternehmen erfolgreich angelegt"},pH={today:"Heute",this_week:"Diese Woche",this_month:"Dieser Monat",this_quarter:"Dieses Quartal",this_year:"Dieses Jahr",previous_week:"Vorherige Woche",previous_month:"Vorheriger Monat",previous_quarter:"Vorheriges Quartal",previous_year:"Vorheriges Jahr",custom:"Benutzerdefiniert"},fH={title:"Kunden",prefix:"Präfix",add_customer:"Kunde hinzufügen",contacts_list:"Kunden-Liste",name:"Name",mail:"E-Mail| E-Mails",statement:"Stellungnahme",display_name:"Anzeige Name",primary_contact_name:"Ansprechpartner",contact_name:"Kontakt Name",amount_due:"Offener Betrag",email:"E-Mail",address:"Adresse",phone:"Telefon",website:"Webseite",overview:"Übersicht",invoice_prefix:"Rechnungspräfix",estimate_prefix:"Angebotspräfix",payment_prefix:"Zahlungspräfix",enable_portal:"Kunden-Portal aktivieren",country:"Land",state:"Bundesland",city:"Stadt",zip_code:"PLZ",added_on:"Hinzugefügt am",action:"Aktion",password:"Passwort",confirm_password:"Passwort bestätigen",street_number:"Hausnummer",primary_currency:"Primäre Währung",description:"Beschreibung",add_new_customer:"Neuen Kunden hinzufügen",save_customer:"Kunde speichern",update_customer:"Kunden ändern",customer:"Kunde | Kunden",new_customer:"Neuer Kunde",edit_customer:"Kunde bearbeiten",basic_info:"Basisinformation",portal_access:"Portalzugang",portal_access_text:"Darf der Kunde sich im Kundenportal anmelden?",portal_access_url:"Login URL zum Kundenportal",portal_access_url_help:"Bitte kopieren und leiten Sie die oben angegebene URL an Ihren Kunden weiter, um Ihm Zugang zu gewähren.",billing_address:"Rechnungsadresse",shipping_address:"Versand-Adresse",copy_billing_address:"Rechnungsadresse kopieren",no_customers:"Noch keine Kunden!",no_customers_found:"Keine Kunden gefunden!",no_contact:"Kein Kontakt",no_contact_name:"Kein Kontaktname",list_of_customers:"Dieser Bereich zeigt alle Kunden.",primary_display_name:"Primärer Anzeige Name",select_currency:"Währung wählen",select_a_customer:"Wählen Sie einen Kunden",type_or_click:"Eingeben oder anklicken zum auswählen",new_transaction:"Neue Transaktion",no_matching_customers:"Es gibt keine passenden Kunden!",phone_number:"Telefonnummer",create_date:"Erstellungsdatum",confirm_delete:"Sie werden diesen Kunden und alle zugehörigen Rechnungen, Angebote und Zahlungen nicht wiederherstellen können. | Sie werden diese Kunden und alle zugehörigen Rechnungen, Angebote und Zahlungen nicht wiederherstellen können.",created_message:"Benutzer erfolgreich erstellt",updated_message:"Kunde erfolgreich aktualisiert",address_updated_message:"Adressinformationen erfolgreich aktualisiert",deleted_message:"Kunden erfolgreich gelöscht | Kunden erfolgreich gelöscht",edit_currency_not_allowed:"Währung kann nicht geändert werden, wenn Transaktionen erstellt wurden."},hH={title:"Artikel",items_list:"Artikel-Liste",name:"Name",unit:"Einheit",description:"Beschreibung",added_on:"Hinzugefügt am",price:"Preis",date_of_creation:"Erstellt am",not_selected:"Keine ausgewählt",action:"Aktion",add_item:"Artikel hinzufügen",save_item:"Artikel speichern",update_item:"Artikel ändern",item:"Artikel | Artikel",add_new_item:"Neuen Artikel hinzufügen",new_item:"Neuer Artikel",edit_item:"Artikel bearbeiten",no_items:"Keine Artikel vorhanden!",list_of_items:"Dieser Bereich zeigt alle Artikel.",select_a_unit:"Einheit auswählen",taxes:"Steuern",item_attached_message:"Ein Artikel der bereits verwendet wird kann nicht gelöscht werden",confirm_delete:"Sie können diesen Artikel nicht wiederherstellen | Sie können diese Artikel nicht wiederherstellen",created_message:"Artikel erfolgreich erstellt",updated_message:"Artikel erfolgreich aktualisiert",deleted_message:"Artikel erfolgreich gelöscht | Artikel erfolgreich gelöscht"},gH={title:"Angebote",accept_estimate:"Angebot akzeptieren",reject_estimate:"Angebot ablehnen",estimate:"Angebot | Angebote",estimates_list:"Angebotsübersicht",days:"{days} Tage",months:"{months} Monat",years:"{years} Jahre",all:"Alle",paid:"Bezahlt",unpaid:"Unbezahlt",customer:"KUNDE",ref_no:"REF. - NR.",number:"NUMMER",amount_due:"OFFENER BETRAG",partially_paid:"Teilweise bezahlt",total:"Gesamt",discount:"Rabatt",sub_total:"Zwischensumme",estimate_number:"Angebotsnummer",ref_number:"Ref-Nummer",contact:"Kontakt",add_item:"Fügen Sie ein Artikel hinzu",date:"Datum",due_date:"Fälligkeit",expiry_date:"Zahlungsziel",status:"Status",add_tax:"Steuer hinzufügen",amount:"Summe",action:"Aktion",notes:"Notizen",tax:"Steuer",estimate_template:"Vorlage",convert_to_invoice:"Konvertieren in Rechnung",mark_as_sent:"Als gesendet markieren",send_estimate:"Angebot senden",resend_estimate:"Angebot erneut senden",record_payment:"Zahlung erfassen",add_estimate:"Angebote hinzufügen",save_estimate:"Angebot speichern",confirm_conversion:"Dieses Angebot wird verwendet, um eine neue Rechnung zu erstellen.",conversion_message:"Rechnung erfolgreich erstellt",confirm_send_estimate:"Das Angebot wird per E-Mail an den Kunden gesendet",confirm_mark_as_sent:"Dieses Angebot wird als gesendet markiert",confirm_mark_as_accepted:"Dieses Angebot wird als angenommen markiert",confirm_mark_as_rejected:"Dieses Angebot wird als abgelehnt markiert",no_matching_estimates:"Es gibt keine übereinstimmenden Angebote!",mark_as_sent_successfully:"Angebot als gesendet markiert",send_estimate_successfully:"Angebot erfolgreich gesendet",errors:{required:"Feld ist erforderlich"},accepted:"Angenommen",rejected:"Abgelehnt",expired:"Abgelaufen",sent:"Gesendet",draft:"Entwurf",viewed:"Angesehen",declined:"Abgelehnt",new_estimate:"Neues Angebot",add_new_estimate:"Neues Angebot hinzufügen",update_Estimate:"Angebot aktualisieren",edit_estimate:"Angebot ändern",items:"Artikel",Estimate:"Angebot | Angebote",add_new_tax:"neuen Steuersatz hinzufügen",no_estimates:"Keine Angebote vorhanden!",list_of_estimates:"Dieser Bereich zeigt alle Angebote.",mark_as_rejected:"Markiert als abgelehnt",mark_as_accepted:"Markiert als angenommen",marked_as_accepted_message:"Angebot als angenommen markiert",marked_as_rejected_message:"Angebot als abgelehnt markiert",confirm_delete:"Das Angebot kann nicht wiederhergestellt werden | Die Angebote können nicht wiederhergestellt werden",created_message:"Angebot erfolgreich erstellt",updated_message:"Angebot erfolgreich aktualisiert",deleted_message:"Angebot erfolgreich gelöscht | Angebote erfolgreich gelöscht",something_went_wrong:"Da ging etwas schief",item:{title:"Titel des Artikels",description:"Beschreibung",quantity:"Menge",price:"Preis",discount:"Rabatt",total:"Gesamt",total_discount:"Rabatt Gesamt",sub_total:"Zwischensumme",tax:"Steuer",amount:"Summe",select_an_item:"Wählen Sie einen Artikel",type_item_description:"Artikel Beschreibung (optional)"},mark_as_default_estimate_template_description:"Wenn aktiviert, wird die ausgewählte Vorlage automatisch für neue Angebote ausgewählt."},vH={title:"Rechnungen",download:"Herunterladen",pay_invoice:"Rechnung bezahlen",invoices_list:"Liste der Rechnungen",invoice_information:"Rechnungsdaten",days:"{days} Tage",months:"{months} Monat",years:"{years} Jahre",all:"Alle",paid:"Bezahlt",unpaid:"Unbezahlt",viewed:"Gesehen",overdue:"Überfällig",completed:"Abgeschlossen",customer:"KUNDE",paid_status:"ZAHLUNGSSTATUS",ref_no:"REF. - NR.",number:"NUMMER",amount_due:"OFFENER BETRAG",partially_paid:"Teilzahlung",total:"Gesamt",discount:"Rabatt",sub_total:"Zwischensumme",invoice:"Rechnung | Rechnungen",invoice_number:"Rechnungsnummer",ref_number:"Ref-Nummer",contact:"Kontakt",add_item:"Fügen Sie ein Artikel hinzu",date:"Datum",due_date:"Fälligkeit",status:"Status",add_tax:"Steuersatz hinzufügen",amount:"Summe",action:"Aktion",notes:"Notizen",view:"Anzeigen",send_invoice:"Rechnung senden",resend_invoice:"Rechnung erneut senden",invoice_template:"Rechnungsvorlage",conversion_message:"Rechnung erfolgreich kopiert",template:"Vorlage auswählen",mark_as_sent:"Als gesendet markieren",confirm_send_invoice:"Diese Rechnung wird per E-Mail an den Kunden gesendet",invoice_mark_as_sent:"Diese Rechnung wird als gesendet markiert",confirm_mark_as_accepted:"Diese Rechnung wird als akzeptiert markiert",confirm_mark_as_rejected:"Diese Rechnung wird als abgelehnt markiert",confirm_send:"Diese Rechnung wird per E-Mail an den Kunden gesendet",invoice_date:"Rechnungsdatum",record_payment:"Zahlung erfassen",add_new_invoice:"Neue Rechnung hinzufügen",update_expense:"Ausgabe aktualisieren",edit_invoice:"Rechnung bearbeiten",new_invoice:"Neue Rechnung",save_invoice:"Rechnung speichern",update_invoice:"Rechnung ändern",add_new_tax:"Neuen Steuersatz hinzufügen",no_invoices:"Keine Rechnungen vorhanden!",mark_as_rejected:"Als abgelehnt markieren",mark_as_accepted:"Als akzeptiert markieren",list_of_invoices:"Dieser Bereich zeigt alle Rechnungen.",select_invoice:"Wählen Sie eine Rechnung",no_matching_invoices:"Es gibt keine entsprechenden Rechnungen!",mark_as_sent_successfully:"Rechnung gekennzeichnet als erfolgreich gesendet",invoice_sent_successfully:"Rechnung erfolgreich versendet",cloned_successfully:"Rechnung erfolgreich kopiert",clone_invoice:"Rechnung kopieren",confirm_clone:"Diese Rechnung wird kopiert",item:{title:"Titel des Artikels",description:"Beschreibung",quantity:"Menge",price:"Preis",discount:"Rabatt",total:"Gesamt",total_discount:"Rabatt Gesamt",sub_total:"Zwischensumme",tax:"Steuer",amount:"Summe",select_an_item:"Geben Sie oder wählen Sie ein Artikel",type_item_description:"Artikel Beschreibung (optional)"},payment_attached_message:"Einer der ausgewählten Rechnungen ist bereits eine Zahlung zugeordnet. Stellen Sie sicher, dass Sie zuerst die angehängten Zahlungen löschen, um mit dem Entfernen fortzufahren",confirm_delete:"Sie können diese Rechnung nicht wiederherstellen. | Sie können diese Rechnungen nicht wiederherstellen.",created_message:"Rechnung erfolgreich erstellt",updated_message:"Rechnung erfolgreich aktualisiert",deleted_message:"Rechnung erfolgreich gelöscht | Rechnungen erfolgreich gelöscht",marked_as_sent_message:"Rechnung als erfolgreich gesendet markiert",something_went_wrong:"Da ist etwas schief gelaufen",invalid_due_amount_message:"Der Gesamtrechnungsbetrag darf nicht kleiner sein als der für diese Rechnung bezahlte Gesamtbetrag. Bitte aktualisieren Sie die Rechnung oder löschen Sie die zugehörigen Zahlungen um fortzufahren.",mark_as_default_invoice_template_description:"Wenn aktiviert, wird die ausgewählte Vorlage automatisch für neue Rechnungen ausgewählt."},yH={title:"Serienrechnungen",invoices_list:"Liste aller Serienrechnungen",days:"{days} Tage",months:"{months} Monat",years:"{years} Jahr",all:"Alle",paid:"Bezahlt",unpaid:"Unbezahlt",viewed:"Gesehen",overdue:"Überfällig",active:"Aktiv",completed:"Abgeschlossen",customer:"KUNDE",paid_status:"ZAHLUNGSSTATUS",ref_no:"REF. - NR.",number:"NUMMER",amount_due:"OFFENER BETRAG",partially_paid:"Teilweise bezahlt",total:"Gesamt",discount:"Rabatt",sub_total:"Zwischensumme",invoice:"Wiederkehrende Rechnung | Wiederkehrende Rechnungen",invoice_number:"Serienrechnungsnummer",next_invoice_date:"Nächstes Rechnungsdatum",ref_number:"Ref. Nummer",contact:"Kontakt",add_item:"Artikel hinzufügen",date:"Datum",limit_by:"Eingrenzen nach",limit_date:"Datum eingrenzen",limit_count:"Anzahl eingrenzen",count:"Anzahl",status:"Status",select_a_status:"Status auswählen",working:"Verarbeitung läuft",on_hold:"Pausiert",complete:"Abgeschlossen",add_tax:"Steuer hinzufügen",amount:"Summe",action:"Aktion",notes:"Notizen",view:"Anzeigen",basic_info:"Allgemeine Daten",send_invoice:"Serienrechnung senden",auto_send:"Automatisch senden",resend_invoice:"Serienrechnung erneut senden",invoice_template:"Serienrechnungsvorlage",conversion_message:"Serienrechnung erfolgreich kopiert",template:"Vorlage",mark_as_sent:"Als gesendet markieren",confirm_send_invoice:"Diese Serienrechnung wird per E-Mail an den Kunden gesendet",invoice_mark_as_sent:"Diese Serienrechnung wird als gesendet markiert",confirm_send:"Diese Serienrechnung wird per E-Mail an den Kunden gesendet",starts_at:"Anfangsdatum",due_date:"Fälligkeitsdatum der Rechnung",record_payment:"Zahlung aufzeichnen",add_new_invoice:"Neue Serienrechnung hinzufügen",update_expense:"Ausgabe aktualisieren",edit_invoice:"Serienrechnung bearbeiten",new_invoice:"Neue Serienrechnung",send_automatically:"Automatisch senden",send_automatically_desc:"Aktivieren Sie dies, wenn Sie die Rechnung bei der Erstellung automatisch an den Kunden senden möchten.",save_invoice:"Serienrechnung speichern",update_invoice:"Serienrechnung aktualisieren",add_new_tax:"Neuen Steuersatz hinzufügen",no_invoices:"Noch keine Serienrechnungen!",mark_as_rejected:"Als abgelehnt markieren",mark_as_accepted:"Als akzeptiert markieren",list_of_invoices:"Dieser Abschnitt wird die Liste aller Serienrechnungen enthalten.",select_invoice:"Rechnung auswählen",no_matching_invoices:"Es gibt keine passenden Serienrechnungen!",mark_as_sent_successfully:"Serienrechnung als erfolgreich gesendet markiert",invoice_sent_successfully:"Serienrechnung erfolgreich gesendet",cloned_successfully:"Serienrechnung erfolgreich kopiert",clone_invoice:"Serienrechnung kopieren",confirm_clone:"Diese Serienrechnung wird in eine neue Serienrechnung kopiert",add_customer_email:"Bitte fügen Sie eine E-Mail-Adresse für diesen Kunden hinzu, um Rechnungen automatisch zu senden.",item:{title:"Titel des Artikels",description:"Beschreibung",quantity:"Menge",price:"Preis",discount:"Rabatt",total:"Gesamt",total_discount:"Gesamtrabatt",sub_total:"Zwischensumme",tax:"Steuer",amount:"Menge",select_an_item:"Geben Sie den Artikel ein, oder wählen Sie ihn aus",type_item_description:"Artikel-Beschreibung (optional)"},frequency:{title:"Intervall",select_frequency:"Intervall auswählen",minute:"Minute",hour:"Stunde",day_month:"Tag des Monats",month:"Monat",day_week:"Tag der Woche"},confirm_delete:"Sie werden diese Rechnung nicht wiederherstellen können | Sie werden nicht in der Lage sein, diese Rechnungen wiederherzustellen",created_message:"Serienrechnung erfolgreich erstellt",updated_message:"Serienrechnung erfolgreich aktualisiert",deleted_message:"Serienrechnung erfolgreich gelöscht | Serienrechnungen erfolgreich gelöscht",marked_as_sent_message:"Serienrechnung als erfolgreich gesendet markiert",user_email_does_not_exist:"E-Mail des Benutzers existiert nicht",something_went_wrong:"etwas ist schief gelaufen",invalid_due_amount_message:"Der Gesamtbetrag der Serienrechnung darf nicht kleiner als der bezahlte Gesamtbetrag für diese Serienrechnung sein. Bitte aktualisieren Sie die Rechnung oder löschen Sie die zugehörigen Zahlungen, um fortzufahren."},bH={title:"Zahlungen",payments_list:"Liste der Zahlungen",record_payment:"Zahlung eintragen",customer:"Kunde",date:"Datum",amount:"Summe",action:"Aktion",payment_number:"Zahlungsnummer",payment_mode:"Zahlungsart",invoice:"Rechnung",note:"Hinweis",add_payment:"Zahlung hinzufügen",new_payment:"Neue Zahlung",edit_payment:"Zahlung bearbeiten",view_payment:"Zahlung anzeigen",add_new_payment:"Neue Zahlung hinzufügen",send_payment_receipt:"Zahlungsbeleg senden",send_payment:"Senden Sie die Zahlung",save_payment:"Zahlung speichern",update_payment:"Zahlung ändern",payment:"Zahlung | Zahlungen",no_payments:"Keine Zahlungen vorhanden!",not_selected:"Nicht ausgewählt",no_invoice:"Keine Rechnung",no_matching_payments:"Es gibt keine passenden Zahlungen!",list_of_payments:"Dieser Bereich zeigt alle Zahlungen.",select_payment_mode:"Wählen Sie den Zahlungsmodus",confirm_mark_as_sent:"Dieses Angebot wird als gesendet markiert",confirm_send_payment:"Diese Zahlung wird per E-Mail an den Kunden gesendet",send_payment_successfully:"Zahlung erfolgreich gesendet",something_went_wrong:"Da ist etwas schief gelaufen",confirm_delete:"Sie können diese Zahlung nicht wiederherstellen. | Sie können diese Zahlungen nicht wiederherstellen.",created_message:"Zahlung erfolgreich erstellt",updated_message:"Zahlung erfolgreich aktualisiert",deleted_message:"Zahlung erfolgreich gelöscht | Zahlungen erfolgreich gelöscht",invalid_amount_message:"Zahlungsbetrag ist ungültig"},kH={title:"Ausgaben",expenses_list:"Ausgabenübersicht",select_a_customer:"Wählen Sie einen Kunden",expense_title:"Titel",customer:"Kunde",currency:"Währung",contact:"Kontakt",category:"Kategorie",from_date:"Von Datum",to_date:"bis Datum",expense_date:"Datum",description:"Beschreibung",receipt:"Rechnung",amount:"Summe",action:"Aktion",not_selected:"Nicht ausgewählt",note:"Hinweis",category_id:"Kategorie-Id",date:"Ausgabedatum",add_expense:"Ausgabe hinzufügen",add_new_expense:"Neue Ausgabe hinzufügen",save_expense:"Ausgabe speichern",update_expense:"Ausgabe aktualisieren",download_receipt:"Quittung herunterladen",edit_expense:"Ausgabe bearbeiten",new_expense:"Neue Ausgabe",expense:"Ausgabe | Ausgaben",no_expenses:"Noch keine Ausgaben!",list_of_expenses:"Dieser Bereich enthält alle Ausgaben.",confirm_delete:"Sie können diese Ausgabe nicht wiederherstellen. | Sie können diese Ausgaben nicht wiederherstellen.",created_message:"Ausgabe erfolgreich erstellt",updated_message:"Ausgabe erfolgreich aktualisiert",deleted_message:"Ausgabe erfolgreich gelöscht | Ausgaben erfolgreich gelöscht",categories:{categories_list:"Liste der Kategorien",title:"Titel",name:"Name",description:"Beschreibung",amount:"Summe",actions:"Aktionen",add_category:"Kategorie hinzufügen",new_category:"Neue Kategorie",category:"Kategorie | Kategorien",select_a_category:"Wählen Sie eine Kategorie"}},wH={email:"E-Mail",password:"Passwort",forgot_password:"Passwort vergessen?",or_signIn_with:"oder Anmelden mit",login:"Anmelden",register:"Registrieren",reset_password:"Passwort zurücksetzen",password_reset_successfully:"Passwort erfolgreich zurückgesetzt",enter_email:"Geben Sie Ihre E-Mail ein",enter_password:"Geben Sie das Passwort ein",retype_password:"Passwort bestätigen"},DH={buy_now:"Kaufen",install:"Installieren",price:"Preis",download_zip_file:"ZIP Datei herunterladen",unzipping_package:"Entpacke Paket",copying_files:"Kopiere Dateien",deleting_files:"Unbenutzte Dateien werden gelöscht",completing_installation:"Installation wird abgeschlossen",update_failed:"Update fehlgeschlagen",install_success:"Modul erfolgreich installiert!",customer_reviews:"Bewertungen",license:"Lizenz",faq:"FAQ",monthly:"Monatlich",yearly:"Jährlich",updated:"Aktualisiert",version:"Version",disable:"Deaktivieren",module_disabled:"Modul deaktiviert",enable:"Aktivieren",module_enabled:"Modul aktiviert",update_to:"Update auf",module_updated:"Modul erfolgreich aktualisiert!",title:"Module",module:"Modul | Module",api_token:"API Schlüssel",invalid_api_token:"Ungültiger API-Schlüssel.",other_modules:"Weitere Module",view_all:"Alle Anzeigen",no_reviews_found:"Für dieses Modul gibt es noch keine Bewertungen!",module_not_purchased:"Module Not Purchased",module_not_found:"Modul nicht gefunden",version_not_supported:"This module version doesn't support the current version of InvoiceShelf",last_updated:"Zuletzt aktualisiert am",connect_installation:"Installation verbinden",api_token_description:"Melden Sie sich bei {url} an und verbinden Sie diese Installation durch Eingabe des API-Token. Ihre gekauften Module werden hier angezeigt, nachdem die Verbindung hergestellt wurde.",view_module:"Modul anzeigen",update_available:"Aktualisierung verfügbar",purchased:"Gekauft",installed:"Installiert",no_modules_installed:"Noch keine Module installiert!",disable_warning:"Alle Einstellungen für diesen speziellen Wert werden zurückgesetzt.",what_you_get:"Was Sie erhalten"},xH={title:"Benutzer",users_list:"Benutzerliste",name:"Name",description:"Beschreibung",added_on:"Hinzugefügt am",date_of_creation:"Erstellt am",action:"Aktion",add_user:"Benutzer hinzufügen",save_user:"Benutzer speichern",update_user:"Benutzer aktualisieren",user:"Benutzer",add_new_user:"Neuen Benutzer hinzufügen",new_user:"Neuer Benutzer",edit_user:"Benutzer bearbeiten",no_users:"Noch keine Benutzer!",list_of_users:"Dieser Bereich zeigt alle Benutzer.",email:"E-Mail",phone:"Telefon",password:"Passwort",user_attached_message:"Ein Artikel der bereits verwendet wird kann nicht gelöscht werden",confirm_delete:"Sie werden diesen Benutzer nicht wiederherstellen können | Sie werden nicht in der Lage sein, diese Benutzer wiederherzustellen",created_message:"Benutzer erfolgreich erstellt",updated_message:"Benutzer wurde erfolgreich aktualisiert",deleted_message:"Benutzer erfolgreich gelöscht | Benutzer erfolgreich gelöscht",select_company_role:"Wähle Rolle für {company}",companies:"Unternehmen"},SH={title:"Bericht",from_date:"Ab Datum",to_date:"bis Datum",status:"Status",paid:"Bezahlt",unpaid:"Unbezahlt",download_pdf:"PDF herunterladen",view_pdf:"PDF anzeigen",update_report:"Bericht aktualisieren",report:"Bericht | Berichte",profit_loss:{profit_loss:"Gewinn & Verlust",to_date:"bis Datum",from_date:"Ab Datum",date_range:"Datumsbereich auswählen"},sales:{sales:"Umsatz",date_range:"Datumsbereich auswählen",to_date:"bis Datum",from_date:"Ab Datum",report_type:"Berichtstyp"},taxes:{taxes:"Steuern",to_date:"bis Datum",from_date:"Ab Datum",date_range:"Datumsbereich auswählen"},errors:{required:"Feld ist erforderlich"},invoices:{invoice:"Rechnung",invoice_date:"Rechnungsdatum",due_date:"Fälligkeit",amount:"Summe",contact_name:"Ansprechpartner",status:"Status"},estimates:{estimate:"Angebot",estimate_date:"Angebotsdatum",due_date:"Fälligkeit",estimate_number:"Angebotsnummer",ref_number:"Ref-Nummer",amount:"Summe",contact_name:"Ansprechpartner",status:"Status"},expenses:{expenses:"Ausgaben",category:"Kategorie",date:"Datum",amount:"Summe",to_date:"bis Datum",from_date:"Ab Datum",date_range:"Datumsbereich auswählen"}},PH={menu_title:{account_settings:"Konto-Einstellungen",company_information:"Informationen zum Unternehmen",customization:"Personalisierung",preferences:"Einstellungen",notifications:"Benachrichtigungen",tax_types:"Steuersätze",expense_category:"Ausgabenkategorien",update_app:"Applikation aktualisieren",backup:"Sicherung",file_disk:"Dateispeicher",custom_fields:"Benutzerdefinierte Felder",payment_modes:"Zahlungsarten",notes:"Notizen",exchange_rate:"Wechselkurs",address_information:"Adressinformationen"},address_information:{section_description:" Sie können Ihre Adressinformationen über das untenstehende Formular aktualisieren."},title:"Einstellungen",setting:"Einstellung | Einstellungen",general:"Allgemeine",language:"Sprache",primary_currency:"Primäre Währung",timezone:"Zeitzone",date_format:"Datum-Format",currencies:{title:"Währungen",currency:"Währung | Währungen",currencies_list:"Währungen Liste",select_currency:"Währung wählen",name:"Name",code:"Abkürzung",symbol:"Symbol",precision:"Präzision",thousand_separator:"Tausendertrennzeichen",decimal_separator:"Dezimal-Trennzeichen",position:"Position",position_of_symbol:"Position des Währungssymbol",right:"Rechts",left:"Links",action:"Aktion",add_currency:"Währung einfügen"},mail:{host:"E-Mail Mailserver",port:"E-Mail Port",driver:"E-Mail Treiber",secret:"Verschlüsselung",mailgun_secret:"Mailgun Verschlüsselung",mailgun_domain:"Mailgun Adresse",mailgun_endpoint:"Mailgun-Endpunkt",ses_secret:"SES Verschlüsselung",ses_key:"SES-Taste",password:"E-Mail-Kennwort",username:"E-Mail-Benutzername",mail_config:"E-Mail-Konfiguration",from_name:"Von E-Mail-Namen",from_mail:"Von E-Mail-Adresse",encryption:"E-Mail-Verschlüsselung",mail_config_desc:"Unten finden Sie das Formular zum Konfigurieren des E-Mail-Treibers zum Senden von E-Mails über die App. Sie können auch Drittanbieter wie Sendgrid, SES usw. konfigurieren."},pdf:{title:"PDF-Einstellung",footer_text:"Fußzeile Text",pdf_layout:"PDF-Layout"},company_info:{company_info:"Firmeninfo",company_name:"Name des Unternehmens",company_logo:"Firmenlogo",section_description:"Informationen zu Ihrem Unternehmen, die auf Rechnungen, Angeboten und anderen von InvoiceShelf erstellten Dokumenten angezeigt werden.",phone:"Telefon",country:"Land",state:"Bundesland",city:"Stadt",address:"Adresse",zip:"PLZ",save:"Speichern",delete:"Löschen",updated_message:"Unternehmensinformationen wurden erfolgreich aktualisiert",delete_company:"Unternehmen löschen",delete_company_description:"Sobald Sie Ihr Unternehmen löschen, verlieren Sie alle damit verbundenen Daten und Dateien.",are_you_absolutely_sure:"Sind Sie wirklich sicher?",delete_company_modal_desc:"Diese Aktion kann nicht rückgängig gemacht werden. Dies wird {company} und alle damit verbundenen Daten dauerhaft löschen.",delete_company_modal_label:"Bitte geben Sie {company} zur Bestätigung ein"},custom_fields:{title:"Benutzerdefinierte Felder",section_description:"Passen Sie Ihre Rechnungen, Angebote und Zahlungsbelege mit Ihren eigenen Feldern an. Stellen Sie sicher, dass Sie die unten hinzugefügten Felder in den Adressformaten auf der Seite mit den Anpassungseinstellungen verwenden.",add_custom_field:"Benutzerdefiniertes Feld hinzufügen",edit_custom_field:"Benutzerdefiniertes Feld bearbeiten",field_name:"Feldname",label:"Bezeichnung",type:"Art",name:"Name",slug:"Kürzel",required:"Erforderlich",placeholder:"Platzhalter",help_text:"Hilfstext",default_value:"Standardwert",prefix:"Präfix",starting_number:"Startnummer",model:"Modell",help_text_description:"Geben Sie einen Text ein, damit Benutzer den Zweck dieses benutzerdefinierten Felds verstehen.",suffix:"Vorzeichen",yes:"Ja",no:"Nein",order:"Reihenfolge",custom_field_confirm_delete:"Sie können dieses benutzerdefinierte Feld nicht wiederherstellen",already_in_use:"Benutzerdefiniertes Feld wird bereits verwendet",deleted_message:"Benutzerdefiniertes Feld erfolgreich gelöscht",options:"Optionen",add_option:"Optionen hinzufügen",add_another_option:"Fügen Sie eine weitere Option hinzu",sort_in_alphabetical_order:"In alphabetischer Reihenfolge sortieren",add_options_in_bulk:"Fügen Sie Optionen in großen Mengen hinzu",use_predefined_options:"Verwenden Sie vordefinierte Optionen",select_custom_date:"Wählen Sie Benutzerdefiniertes Datum",select_relative_date:"Wählen Sie Relatives Datum",ticked_by_default:"Standardmäßig aktiviert",updated_message:"Benutzerdefiniertes Feld erfolgreich aktualisiert",added_message:"Benutzerdefiniertes Feld erfolgreich hinzugefügt",press_enter_to_add:"Eingabetaste drücken, um neue Option hinzuzufügen",model_in_use:"Das Modell kann für bereits verwendete Felder nicht aktualisiert werden.",type_in_use:"Der Typ von bereits verwendeten Feldern kann nicht aktualisiert werden."},customization:{customization:"Personalisierung",updated_message:"Unternehmensinformationen wurden erfolgreich aktualisiert",save:"Speichern",insert_fields:"Felder einfügen",learn_custom_format:"Erfahren Sie, wie Sie benutzerdefiniertes Format verwenden",add_new_component:"Neue Komponente hinzufügen",component:"Komponente",Parameter:"Parameter",series:"Nummernfolge",series_description:"Um ein statisches Präfix/Postfix wie 'INV' in Ihrem Unternehmen zu setzen. Es unterstützt eine Zeichenlänge von bis zu 4 Zeichen.",series_param_label:"Nummernfolge",delimiter:"Trennzeichen",delimiter_description:"Einzelnes Zeichen für die Verwendung zwischen zwei separaten Komponenten. Standardmäßig ist dies -",delimiter_param_label:"Trennzeichen",date_format:"Datumsformat",date_format_description:"Ein lokales Datums- und Zeitfeld, das einen Format-Parameter akzeptiert. Das Standardformat: 'Y' stellt das aktuelle Jahr dar.",date_format_param_label:"Format",sequence:"Fortlaufende Nummer",sequence_description:"Fortlaufende Nummernabfolge in Ihrem Unternehmen. Sie können die Länge des angegebenen Parameters angeben.",sequence_param_label:"Länge der fortlaufenden Nummer",customer_series:"Kundenspez. Nummernfolge",customer_series_description:"Ein anderes Präfix/Postfix für jeden Kunden festlegen.",customer_sequence:"Fortlaufende Kundennummer",customer_sequence_description:"Fortlaufende Nummernabfolge für jeden ihrer Kunden.",customer_sequence_param_label:"Länge der laufenden Nummer",random_sequence:"Zufällige Zeichenkette",random_sequence_description:"Zufällige alphanumerische Zeichenkette. Sie können die Länge als Parameter angeben.",random_sequence_param_label:"Länge der Zeichenkette",invoices:{title:"Rechnungen",invoice_number_format:"Rechnungsnummernformat",invoice_number_format_description:"Passen Sie an, wie Ihre Rechnungsnummer automatisch generiert wird, wenn Sie eine neue Rechnung erstellen.",preview_invoice_number:"Vorschau Rechnungsnummer",due_date:"Fälligkeitsdatum",due_date_description:"Legen Sie fest, wie das Fälligkeitsdatum automatisch gesetzt wird, wenn Sie eine Rechnung erstellen.",due_date_days:"Rechnung fällig nach Tagen",set_due_date_automatically:"Fälligkeitsdatum automatisch setzen",set_due_date_automatically_description:"Aktivieren Sie dies, wenn Sie das Fälligkeitsdatum automatisch setzen möchten, wenn Sie eine neue Rechnung erstellen.",default_formats:"Standardformate",default_formats_description:"Die unten angegebenen Formate werden verwendet, um die Felder bei der Erstellung einer Rechnung automatisch auszufüllen.",default_invoice_email_body:"Standard Rechnung E-Mail Inhalt",company_address_format:"Firmenadressformat",shipping_address_format:"Versandadressen Format",billing_address_format:"Rechnungsadressen Format",invoice_email_attachment:"Rechnungen als Anhänge verschicken",invoice_email_attachment_setting_description:'Aktivieren Sie dies, wenn Sie Rechnungen als E-Mail-Anhang versenden möchten. Bitte beachten Sie, dass die Schaltfläche "Rechnung anzeigen" in E-Mails dann nicht mehr angezeigt wird.',invoice_settings_updated:"Rechnungseinstellungen erfolgreich aktualisiert",retrospective_edits:"Rückwirkende Änderungen",allow:"Erlauben",disable_on_invoice_partial_paid:"Deaktivieren, nachdem Teilzahlung erfasst wurde",disable_on_invoice_paid:"Deaktivieren, nachdem vollständige Zahlung erfasst wurde",disable_on_invoice_sent:"Deaktivieren, nachdem Rechnung gesendet wurde",retrospective_edits_description:" Basierend auf den Gesetzen Ihres Landes oder Ihrer Präferenz, können Sie Benutzer daran hindern, fertige Rechnungen zu bearbeiten."},estimates:{title:"Angebote",estimate_number_format:"Angebotsnummernformat",estimate_number_format_description:"Passen Sie an, wie Ihre Angebotsnummer automatisch generiert wird, wenn Sie ein neues Angebot erstellen.",preview_estimate_number:"Vorschau Angebotsnummer",expiry_date:"Ablaufdatum",expiry_date_description:"Legen Sie fest, wie das Ablaufdatum automatisch gesetzt wird, wenn Sie ein Angebot erstellen.",expiry_date_days:"Angebot läuft ab nach Tagen",set_expiry_date_automatically:"Ablaufdatum automatisch setzen",set_expiry_date_automatically_description:"Aktivieren Sie dies, wenn Sie das Ablaufdatum automatisch setzen möchten sobald Sie ein neues Angebot erstellen.",default_formats:"Standardformate",default_formats_description:"Die unten angegebenen Formate werden verwendet, um die Felder bei der Erstellung eines Angebots automatisch auszufüllen.",default_estimate_email_body:"Angebot - E-Mail Text",company_address_format:"Firmenadresse Format",shipping_address_format:"Versandadressen Format",billing_address_format:"Rechnungsadressen Format",estimate_email_attachment:"Angebote als Anhänge verschicken",estimate_email_attachment_setting_description:'Aktivieren Sie dies, wenn Sie Angebote als E-Mail-Anhang versenden möchten. Bitte beachten Sie, dass die Schaltfläche "Angebot anzeigen" in E-Mails dann nicht mehr angezeigt wird.',estimate_settings_updated:"Angebotseinstellungen erfolgreich aktualisiert",convert_estimate_options:"Aktion nach Angebotsumwandlung",convert_estimate_description:"Legen Sie fest, was mit dem Angebot geschieht, nachdem es in eine Rechnung umgewandelt wurde.",no_action:"Keine Aktion",delete_estimate:"Angebot löschen",mark_estimate_as_accepted:"Angebot als angenommen markieren"},payments:{title:"Zahlungen",payment_number_format:"Zahlungsnummernformat",payment_number_format_description:"Passen Sie an, wie Ihre Zahlungsnummer automatisch generiert wird, wenn Sie eine neue Zahlung erstellen.",preview_payment_number:"Vorschau Zahlungsnummer",default_formats:"Standardformate",default_formats_description:"Die unten angegebenen Formate werden verwendet, um die Felder bei der Buchung einer Zahlung automatisch auszufüllen.",default_payment_email_body:"Zahlung - E-Mail Text",company_address_format:"Firmenadressformat",from_customer_address_format:"Rechnungsadressen Format",payment_email_attachment:"Zahlungen als Anhänge verschicken",payment_email_attachment_setting_description:'Aktivieren Sie dies, wenn Sie Zahlungen als E-Mail-Anhang versenden möchten. Bitte beachten Sie, dass die Schaltfläche "Zahlung anzeigen" in E-Mails dann nicht mehr angezeigt wird.',payment_settings_updated:"Zahlungseinstellung erfolgreich aktualisiert"},items:{title:"Artikel",units:"Einheiten",add_item_unit:"Artikeleinheit hinzufügen",edit_item_unit:"Elementeinheit bearbeiten",unit_name:"Einheitname",item_unit_added:"Artikeleinheit hinzugefügt",item_unit_updated:"Artikeleinheit aktualisiert",item_unit_confirm_delete:"Du kannst diese Artikeleinheit nicht wiederherstellen",already_in_use:"Diese Artikeleinheit ist bereits in Verwendung",deleted_message:"Artikeleinheit erfolgreich gelöscht"},notes:{title:"Notizen",description:"Sparen Sie Zeit, indem Sie Notizen erstellen und diese auf Ihren Rechnungen, Angeboten und Zahlungen wiederverwenden.",notes:"Hinweise",type:"Art",add_note:"Notiz hinzufügen",add_new_note:"Neue Notiz hinzufügen",name:"Name",edit_note:"Notiz bearbeiten",note_added:"Notiz erfolgreich hinzugefügt",note_updated:"Notiz erfolgreich aktualisiert",note_confirm_delete:"Dieser Hinweis wird unwiderruflich gelöscht",already_in_use:"Hinweis bereits in verwendet",deleted_message:"Notiz erfolgreich gelöscht"}},account_settings:{profile_picture:"Profil Bild",name:"Name",email:"E-Mail",password:"Passwort",confirm_password:"Kennwort Bestätigen",account_settings:"Konto-Einstellungen",save:"Speichern",section_description:"Sie können Ihren Namen, Ihre E-Mail-Adresse und Ihr Passwort mit dem folgenden Formular aktualisieren.",updated_message:"Kontoeinstellungen erfolgreich aktualisiert"},user_profile:{name:"Name",email:"E-Mail",password:"Passwort",confirm_password:"Kennwort bestätigen"},notification:{title:"Benachrichtigung",email:"Benachrichtigungen senden an",description:"Welche E-Mail-Benachrichtigungen möchten Sie erhalten wenn sich etwas ändert?",invoice_viewed:"Rechnung angezeigt",invoice_viewed_desc:"Wenn Ihr Kunde die gesendete Rechnung anzeigt bekommt.",estimate_viewed:"Angebot angesehen",estimate_viewed_desc:"Wenn Ihr Kunde das gesendete Angebot anzeigt bekommt.",save:"Speichern",email_save_message:"Email erfolgreich gespeichert",please_enter_email:"Bitte E-Mail eingeben"},roles:{title:"Rollen",description:"Rollen & Berechtigungen dieses Unternehmens verwalten",save:"Speichern",add_new_role:"Neue Rolle hinzufügen",role_name:"Name der Rolle",added_on:"Hinzugefügt am",add_role:"Rolle hinzufügen",edit_role:"Rolle bearbeiten",name:"Name",permission:"Berechtigung | Berechtigungen",select_all:"Alle auswählen",none:"Keine",confirm_delete:"Sie werden diese Rolle nicht wiederherstellen können",created_message:"Rolle erfolgreich erstellt",updated_message:"Rolle erfolgreich aktualisiert",deleted_message:"Rolle erfolgreich gelöscht",already_in_use:"Rolle wird bereits benutzt"},exchange_rate:{exchange_rate:"Wechselkurs",title:"Wechselkursprobleme korrigieren",description:"Bitte geben Sie den Wechselkurs aller unten genannten Währungen ein, um InvoiceShelf bei der korrekten Berechnung der Beträge in {currency} zu unterstützen.",drivers:"Treiber",new_driver:"Neuen Anbieter hinzufügen",edit_driver:"Anbieter bearbeiten",select_driver:"Treiber auswählen",update:"wähle Wechselkurs ",providers_description:"Konfigurieren Sie hier Ihre Wechselkursanbieter, um automatisch den aktuellen Wechselkurs für Transaktionen abzurufen.",key:"API-Schlüssel",name:"Name",driver:"Treiber",is_default:"STANDARD",currency:"Währungen",exchange_rate_confirm_delete:"Sie werden diesen Treiber nicht wiederherstellen können",created_message:"Artikel erfolgreich erstellt",updated_message:"Anbieter erfolgreich aktualisiert",deleted_message:"Anbieter erfolgreich gelöscht",error:" Aktive Treiber können nicht gelöscht werden",default_currency_error:"Diese Währung wird bereits in einem der aktiven Anbieter verwendet",exchange_help_text:"Wechselkurs eingeben um von {currency} nach {baseCurrency} zu konvertieren",currency_freak:"CurrencyFreaks",currency_layer:"Currency Layer",open_exchange_rate:"Open Exchange Rate",currency_converter:"Währungsumrechner",server:"Server",url:"URL",active:"Aktiv",currency_help_text:"Dieser Anbieter wird nur in oben ausgewählten Währungen verwendet",currency_in_used:"Die folgenden Währungen sind bereits bei einem anderen Anbieter aktiv. Bitte entfernen Sie diese Währungen aus der Auswahl, um diesen Anbieter erneut zu aktivieren."},tax_types:{title:"Steuersätze",add_tax:"Steuersätze hinzufügen",edit_tax:"Steuer bearbeiten",description:"Sie können Steuern nach Belieben hinzufügen oder entfernen. InvoiceShelf unterstützt Steuern auf einzelne Artikel sowie auf die Rechnung.",add_new_tax:"Neuen Steuersatz hinzufügen",tax_settings:"Einstellungen Steuersatz",tax_per_item:"Steuersatz pro Artikel",tax_name:"Name des Steuersatzes",compound_tax:"zusammengesetzte Steuer",percent:"Prozent",action:"Aktion",tax_setting_description:"Aktivieren Sie diese Option, wenn Sie den Steuersatz zu einzelnen Rechnungspositionen hinzufügen möchten. Standardmäßig wird der Steuersatz direkt zur Rechnung hinzugefügt.",created_message:"Steuersatz erfolgreich erstellt",updated_message:"Steuersatz erfolgreich aktualisiert",deleted_message:"Steuersatz erfolgreich gelöscht",confirm_delete:"Sie können diesen Steuersatz nicht wiederherstellen",already_in_use:"Steuersatz wird bereits verwendet"},payment_modes:{title:"Zahlungsarten",description:"Transaktionsmodi für Zahlungen",add_payment_mode:"Zahlungsart hinzufügen",edit_payment_mode:"Zahlungsart bearbeiten",mode_name:"Name",payment_mode_added:"Zahlungsart hinzugefügt",payment_mode_updated:"Zahlungsart aktualisiert",payment_mode_confirm_delete:"Sie werden diese Zahlungsart nicht wiederherstellen können",payments_attached:"This payment method is already attached to payments. Please delete the attached payments to proceed with deletion.",expenses_attached:"This payment method is already attached to expenses. Please delete the attached expenses to proceed with deletion.",deleted_message:"Zahlungsart erfolgreich gelöscht"},expense_category:{title:"Ausgabenkategorien",action:"Aktion",description:"Für das Hinzufügen von Ausgabeneinträgen sind Kategorien erforderlich. Sie können diese Kategorien nach Ihren Wünschen hinzufügen oder entfernen.",add_new_category:"Neue Kategorie hinzufügen",add_category:"Kategorie hinzufügen",edit_category:"Kategorie bearbeiten",category_name:"Kategorie Name",category_description:"Beschreibung",created_message:"Ausgabenkategorie erfolgreich erstellt",deleted_message:"Ausgabenkategorie erfolgreich gelöscht",updated_message:"Ausgabenkategorie erfolgreich aktualisiert",confirm_delete:"Sie können diese Ausgabenkategorie nicht wiederherstellen",already_in_use:"Kategorie wird bereits verwendet"},preferences:{currency:"Währung",default_language:"Standardsprache",time_zone:"Zeitzone",fiscal_year:"Geschäftsjahr",date_format:"Datum-Format",discount_setting:"Einstellung Rabatt",discount_per_item:"Rabatt pro Artikel ",discount_setting_description:"Aktivieren Sie diese Option, wenn Sie einzelnen Rechnungspositionen einen Rabatt hinzufügen möchten. Standardmäßig wird der Rabatt direkt zur Rechnung hinzugefügt.",expire_public_links:"Öffentliche Links automatisch ablaufen lassen",expire_setting_description:"Specify whether you would like to expire all the links sent by application to view invoices, estimates & payments, etc after a specified duration.",save:"Speichern",preference:"Präferenz | Präferenzen",general_settings:"Standardeinstellungen für das System.",updated_message:"Einstellungen erfolgreich aktualisiert",select_language:"Sprache auswählen",select_time_zone:"Zeitzone auswählen",select_date_format:"Wähle das Datumsformat",select_financial_year:"Geschäftsjahr auswählen",recurring_invoice_status:"Status der Serienrechnung",create_status:"Status erstellen",active:"Aktiv",on_hold:"Pausiert",update_status:"Status aktualisieren",completed:"Abgeschlossen",company_currency_unchangeable:"Die Währung des Unternehmens kann nicht geändert werden"},update_app:{title:"Applikation aktualisieren",description:"Sie können InvoiceShelf ganz einfach aktualisieren, indem Sie auf die Schaltfläche unten klicken, um nach einem neuen Update zu suchen.",check_update:"Nach Updates suchen",avail_update:"Neues Update verfügbar",next_version:"Nächste Version",requirements:"Voraussetzungen",update:"Jetzt aktualisieren",update_progress:"Update läuft ...",progress_text:"Es dauert nur ein paar Minuten. Bitte aktualisieren Sie den Bildschirm nicht und schließen Sie das Fenster nicht, bevor das Update abgeschlossen ist.",update_success:"App wurde aktualisiert! Bitte warten Sie, während Ihr Browserfenster automatisch neu geladen wird.",latest_message:"Kein Update verfügbar! Du bist auf der neuesten Version.",current_version:"Aktuelle Version",download_zip_file:"Laden Sie die ZIP-Datei herunter",unzipping_package:"Paket entpacken",copying_files:"Dateien kopieren",deleting_files:"Ungenutzte Dateien löschen",running_migrations:"Ausführen von Migrationen",finishing_update:"Update beenden",update_failed:"Update fehlgeschlagen",update_failed_text:"Es tut uns leid! Ihr Update ist am folgenden Schritt fehlgeschlagen: {step}",update_warning:"Alle Anwendungsdateien und Standardvorlagen werden überschrieben, wenn Sie die Anwendung mit diesem Hilfsprogramm aktualisieren. Bitte machen Sie vor dem Update ein Backup Ihrer Vorlagen & Datenbank."},backup:{title:"Sicherung | Sicherungen",description:"Die Sicherung ist eine ZIP-Datei, die alle Dateien der ausgewählten Pfade und eine Kopie der Datenbank enthält",new_backup:"Neues Backup",create_backup:"Datensicherung erstellen",select_backup_type:"Wählen Sie den Sicherungs-Typ",backup_confirm_delete:"Dieses Backup wird unwiderruflich gelöscht",path:"Pfad",new_disk:"Speicher hinzufügen",created_at:"erstellt am",size:"Größe",dropbox:"Dropbox",local:"Lokal",healthy:"intakt",amount_of_backups:"Menge an Sicherungen",newest_backups:"Neuste Sicherung",used_storage:"Verwendeter Speicher",select_disk:"Speicher auswählen",action:"Aktion",deleted_message:"Sicherung erfolgreich gelöscht",created_message:"Backup erfolgreich erstellt",invalid_disk_credentials:"Ungültige Anmeldeinformationen für ausgewählten Speicher"},disk:{title:"Dateispeicher | Dateispeicher",description:"Standardmäßig verwendet InvoiceShelf Ihre lokale Festplatte zum Speichern von Sicherungen, Avatar und anderen Bilddateien. Sie können mehr als einen Speicherort wie DigitalOcean, S3 und Dropbox nach Ihren Wünschen konfigurieren.",created_at:"erstellt am",dropbox:"Dropbox",name:"Name",driver:"Treiber",disk_type:"Art",disk_name:"Speicher Bezeichnung",new_disk:"Speicher hinzufügen",filesystem_driver:"Dateisystem-Treiber",local_driver:"Lokaler Treiber",local_root:"Lokaler Pfad",public_driver:"Öffentlicher Treiber",public_root:"Öffentlicher Pfad",public_url:"Öffentliche URL",public_visibility:"Öffentliche Sichtbarkeit",media_driver:"Medientreiber",media_root:"Medienpfad",aws_driver:"AWS-Treiber",aws_key:"AWS-Schlüssel",aws_secret:"AWS-Geheimnis",aws_region:"AWS-Region",aws_bucket:"AWS Bucket",aws_root:"AWS-Pfad",do_spaces_type:"Do Spaces-Typ",do_spaces_key:"Do Spaces Key",do_spaces_secret:"Do Spaces Secret",do_spaces_region:"Do Spaced Region",do_spaces_bucket:"Do Spaces Bucket",do_spaces_endpoint:"Do Spaces Endpoint",do_spaces_root:"Do Spaced Root",dropbox_type:"Dropbox Typ",dropbox_token:"Dropbox Token",dropbox_key:"Dropbox Schlüssel",dropbox_secret:"Dropbox Secret",dropbox_app:"Dropbox App",dropbox_root:"Dropbox Root",default_driver:"Standard-Treiber",is_default:"Standard",set_default_disk:"Als Standard festlegen",set_default_disk_confirm:"Dieser Speicherort wird als Standard gesetzt und alle neuen PDFs werden auf diesem gespeichert",success_set_default_disk:"Speicher wurde als Standard festgelegt",save_pdf_to_disk:"PDFs auf Festplatte speichern",disk_setting_description:" Aktivieren Sie dies, um eine Kopie von jeder Rechnung, jedem Angebot & jedem Zahlungsbeleg als PDF automatisch auf ihrem Standard-Speicher abzulegen. Wenn Sie diese Option aktivieren, verringert sich die Ladezeit beim Betrachten der PDFs.",select_disk:"Speicherort auswählen",disk_settings:"Speichermedienkonfiguration",confirm_delete:"Ihre existierenden Dateien und Ordner auf der angegebenen Festplatte werden nicht beeinflusst, aber Dieser Speicherort wird aus InvoiceShelf gelöscht",action:"Aktion",edit_file_disk:"Speicherort editieren",success_create:"Speicher erfolgreich hinzugefügt",success_update:"Speicher erfolgreich bearbeitet",error:"Hinzufügen des Speichers gescheitert",deleted_message:"Speicher erfolgreich gelöscht",disk_variables_save_successfully:"Speicher erfolgreich konfiguriert",disk_variables_save_error:"Konfiguration des Speicher gescheitert",invalid_disk_credentials:"Ungültige Anmeldeinformationen für ausgewählten Speicher"},taxations:{add_billing_address:"Rechnungsadresse eingeben",add_shipping_address:"Lieferadresse eingeben",add_company_address:"Firmenadresse eingeben",modal_description:"Die untenstehenden Informationen sind erforderlich, um die Steuer berücksichtigen zu können.",add_address:"Fügen Sie eine Adresse hinzu, um die Steuer abrufen zu können.",address_placeholder:"Beispiel: 123, meine Straße",city_placeholder:"Beispiel: Los Angeles",state_placeholder:"Beispiel: CA",zip_placeholder:"Beispiel: 90024",invalid_address:"Bitte geben Sie gültige Adressdaten an."}},EH={account_info:"Account-Informationen",account_info_desc:"Die folgenden Details werden zum Erstellen des Hauptadministratorkontos verwendet. Sie können die Details auch jederzeit nach dem Anmelden ändern.",name:"Name",email:"E-Mail",password:"Passwort",confirm_password:"Passwort bestätigen",save_cont:"Speichern und weiter",company_info:"Unternehmensinformationen",company_info_desc:"Diese Informationen werden auf Rechnungen angezeigt. Beachten Sie, dass Sie diese später auf der Einstellungsseite bearbeiten können.",company_name:"Firmenname",company_logo:"Firmenlogo",logo_preview:"Vorschau Logo",preferences:"Einstellungen",preferences_desc:"Standardeinstellungen für das System.",currency_set_alert:"Die Währung des Unternehmens kann später nicht mehr geändert werden.",country:"Land",state:"Bundesland",city:"Stadt",address:"Adresse",street:"Straße1 | Straße2",phone:"Telefon",zip_code:"Postleitzahl",go_back:"Zurück",currency:"Währung",language:"Sprache",time_zone:"Zeitzone",fiscal_year:"Geschäftsjahr",date_format:"Datumsformat",from_address:"Absender",username:"Benutzername",next:"Weiter",continue:"Weiter",skip:"Überspringen",database:{database:"URL der Seite & Datenbank",connection:"Datenbank Verbindung",host:"Datenbank Host",port:"Datenbank Port",password:"Datenbank Passwort",app_url:"App-URL",app_domain:"Domain der App",username:"Datenbank Benutzername",db_name:"Datenbank Name",db_path:"Datenbankpfad",desc:"Erstellen Sie eine Datenbank auf Ihrem Server und legen Sie die Anmeldeinformationen mithilfe des folgenden Formulars fest."},permissions:{permissions:"Berechtigungen",permission_confirm_title:"Sind Sie sicher, dass Sie fortfahren möchten?",permission_confirm_desc:"Prüfung der Berechtigung der Ordner fehlgeschlagen.",permission_desc:"Unten finden Sie eine Liste der Ordnerberechtigungen, die erforderlich sind, damit die App funktioniert. Wenn die Berechtigungsprüfung fehlschlägt, müssen Sie Ihre Ordnerberechtigungen aktualisieren."},verify_domain:{title:"Domain-Verifizierung",desc:"InvoiceShelf verwendet Session-basierte Authentifizierung, die aus Sicherheitsgründen eine Domain-Verifizierung erfordert. Bitte geben Sie die Domain ein, auf der Sie auf Ihre Webanwendung zugreifen werden.",app_domain:"Domain der App",verify_now:"Jetzt verifizieren",success:"Domain erfolgreich verifiziert.",failed:"Domainüberprüfung fehlgeschlagen. Bitte geben Sie einen gültigen Domainnamen ein.",verify_and_continue:"Verifizieren und fortfahren"},mail:{host:"E-Mail-Host",port:"E-Mail-Port",driver:"E-Mail-Treiber",secret:"Verschlüsselung",mailgun_secret:"Mailgun Verschlüsselung",mailgun_domain:"Domain",mailgun_endpoint:"Mailgun-Endpunkt",ses_secret:"SES Verschlüsselung",ses_key:"SES-Taste",password:"E-Mail-Passwort",username:"E-Mail-Benutzername",mail_config:"E-Mail-Konfiguration",from_name:"Von E-Mail-Absendername",from_mail:"Von E-Mail-Absenderadresse",encryption:"E-Mail-Verschlüsselung",mail_config_desc:"Unten finden Sie das Formular zum Konfigurieren des E-Mail-Treibers zum Senden von E-Mails über die App. Sie können auch Drittanbieter wie Sendgrid, SES usw. konfigurieren."},req:{system_req:"System Anforderungen",php_req_version:"Php (version {version} erforderlich)",check_req:"Anforderungen prüfen",system_req_desc:"InvoiceShelf hat einige Serveranforderungen. Stellen Sie sicher, dass Ihr Server die erforderliche PHP-Version und alle unten genannten Erweiterungen hat."},errors:{migrate_failed:"Migration ist Fehlgeschlagen",database_variables_save_error:"Konfiguration kann nicht in EN.env-Datei geschrieben werden. Bitte überprüfen Sie die Dateiberechtigungen.",mail_variables_save_error:"E-Mail-Konfiguration fehlgeschlagen.",connection_failed:"Datenbankverbindung fehlgeschlagen",database_should_be_empty:"Datenbank sollte leer sein"},success:{mail_variables_save_successfully:"E-Mail erfolgreich konfiguriert",database_variables_save_successfully:"Datenbank erfolgreich konfiguriert."}},zH={invalid_phone:"Ungültige Telefonnummer",invalid_url:"Ungültige URL (Bsp.: http://www.invoiceshelf.com)",invalid_domain_url:"Ungültige URL (Bsp.: invoiceshelf.com)",required:"Feld ist erforderlich",email_incorrect:"Ungültige E-Mail.",email_already_taken:"Die E-Mail ist bereits vergeben.",email_does_not_exist:"Benutzer mit der angegebenen E-Mail existiert nicht",item_unit_already_taken:"Die Artikeleinheit wurde bereits vergeben",payment_mode_already_taken:"Der Zahlungsmodus wurde bereits verwendet",send_reset_link:"Link zum Zurücksetzen senden",not_yet:"Noch erhalten? Erneut senden",password_min_length:"Password muß {count} Zeichen enthalten",name_min_length:"Name muss mindestens {count} Zeichen enthalten.",prefix_min_length:"Präfix muss mindestens {count} Buchstaben enthalten.",enter_valid_tax_rate:"Geben Sie einen gültige Steuersatz ein",numbers_only:"Nur Zahlen.",characters_only:"Nur Zeichen.",password_incorrect:"Passwörter müssen identisch sein",password_length:"Passwort muss {count} Zeichen lang sein.",qty_must_greater_than_zero:"Die Menge muss größer als 0 sein.",price_greater_than_zero:"Preis muss größer als 0 sein.",payment_greater_than_zero:"Die Zahlung muss größer als 0 sein.",payment_greater_than_due_amount:"Die eingegebene Zahlung ist mehr als der fällige Betrag dieser Rechnung.",quantity_maxlength:"Die Menge sollte nicht größer als 20 Ziffern sein.",price_maxlength:"Der Preis sollte nicht größer als 20 Ziffern sein.",price_minvalue:"Der Preis sollte größer als 0 sein.",amount_maxlength:"Der Betrag sollte nicht größer als 20 Ziffern sein.",amount_minvalue:"Betrag sollte größer als 0 sein.",discount_maxlength:"Rabatt sollte nicht größer als der maximale Rabatt sein",description_maxlength:"Die Beschreibung sollte nicht länger als 255 Zeichen sein.",subject_maxlength:"Der Betreff sollte nicht länger als 100 Zeichen sein.",message_maxlength:"Die Nachricht sollte nicht länger als 255 Zeichen sein.",maximum_options_error:"Maximal {max} Optionen ausgewählt. Entfernen Sie zuerst eine ausgewählte Option, um eine andere auszuwählen.",notes_maxlength:"Notizen sollten nicht länger als 255 Zeichen sein.",address_maxlength:"Die Adresse sollte nicht länger als 255 Zeichen sein.",ref_number_maxlength:"Ref Number sollte nicht länger als 255 Zeichen sein.",prefix_maxlength:"Das Präfix sollte nicht länger als 5 Zeichen sein.",something_went_wrong:"Da ist etwas schief gelaufen",number_length_minvalue:"Nummernlänge sollte größer als 0 sein",at_least_one_ability:"Bitte wählen Sie mindestens eine Berechtigung aus.",valid_driver_key:"Bitte geben Sie einen gültigen {driver} Schlüssel ein.",valid_exchange_rate:"Bitte geben Sie einen gültigen Wechselkurs ein.",company_name_not_same:"Name des Unternehmens muss mit dem angegebenen Namen übereinstimmen."},AH={starter_plan:"Diese Funktion ist erst ab dem Starterplan verfügbar!",invalid_provider_key:"Bitte geben Sie einen gültigen API-Schlüssel für den Anbieter ein.",estimate_number_used:"Die Angebotsnummer ist bereits vergeben.",invoice_number_used:"Die Rechnungsnummer ist bereits vergeben.",payment_attached:"Dieser Rechnung ist bereits eine Zahlung zugewiesen. Bitte zuerst die zugewiesenen Zahlungen löschen, um mit der Entfernung fortzufahren.",payment_number_used:"Die Zahlungsnummer ist bereits vergeben.",name_already_taken:"Der Name ist bereits vergeben.",receipt_does_not_exist:"Beleg existiert nicht.",customer_cannot_be_changed_after_payment_is_added:"Kunde kann nach dem Hinzufügen der Zahlung nicht geändert werden",invalid_credentials:"Ungültige Anmeldeinformationen.",not_allowed:"Nicht erlaubt",login_invalid_credentials:"Diese Anmeldeinformationen stimmen nicht mit unseren Aufzeichnungen überein.",enter_valid_cron_format:"Bitte geben Sie ein gültiges Cron-Format ein",email_could_not_be_sent:"Die E-Mail konnte nicht an diese Adresse gesendet werden.",invalid_address:"Bitte geben Sie eine gültige Adresse ein.",invalid_key:"Bitte geben Sie einen gültigen Schlüssel ein.",invalid_state:"Bitte geben Sie ein gültiges Bundesland ein.",invalid_city:"Bitte geben Sie eine gültige Stadt an.",invalid_postal_code:"Bitte geben Sie eine gültige PLZ an.",invalid_format:"Bitte geben Sie ein gültiges Abfrageformat ein.",api_error:"Der Server antwortet nicht.",feature_not_enabled:"Funktion nicht aktiviert.",request_limit_met:"Api Anfragelimit überschritten.",address_incomplete:"Unvollständige Adresse"},CH="Angebot",TH="Angebotsnummer",jH="Angebotsdatum",NH="Gültig bis",IH="Rechnung",FH="Rechnungsnummer",RH="Rechnungsdatum",OH="Fälligkeitsdatum",MH="Hinweise",$H="Artikel",LH="Menge",BH="Preis",UH="Rabatt",VH="Summe",qH="Zwischensumme",WH="Gesamt",HH="Zahlung",KH="Zahlungsbeleg",YH="Zahlungsdatum",ZH="Zahlungsnummer",GH="Zahlungsart",QH="Betrag erhalten",JH="Ausgaben Bericht",XH="Gesamtausgaben",eK="Gewinn & Verlust Bericht",tK="Kundenverkaufs Bericht",aK="Artikelverkaufs Bericht",nK="Steuer Bericht",iK="Einkommen",oK="Nettogewinn",sK="Umsatzbericht: Nach Kunde",rK="GESAMTUMSATZ",lK="Umsatzbericht: Nach Artikel",cK="Umsatzsteuer BERICHT",dK="Gesamte Umsatzsteuer",uK="Steuersätze",_K="Ausgaben",mK="Rechnungsanschrift",pK="Lieferanschrift",fK="Erhalten von:",hK="Steuer",gK={navigation:lH,general:cH,dashboard:dH,tax_types:uH,global_search:_H,company_switcher:mH,dateRange:pH,customers:fH,items:hH,estimates:gH,invoices:vH,recurring_invoices:yH,payments:bH,expenses:kH,login:wH,modules:DH,users:xH,reports:SH,settings:PH,wizard:EH,validation:zH,errors:AH,pdf_estimate_label:CH,pdf_estimate_number:TH,pdf_estimate_date:jH,pdf_estimate_expire_date:NH,pdf_invoice_label:IH,pdf_invoice_number:FH,pdf_invoice_date:RH,pdf_invoice_due_date:OH,pdf_notes:MH,pdf_items_label:$H,pdf_quantity_label:LH,pdf_price_label:BH,pdf_discount_label:UH,pdf_amount_label:VH,pdf_subtotal:qH,pdf_total:WH,pdf_payment_label:HH,pdf_payment_receipt_label:KH,pdf_payment_date:YH,pdf_payment_number:ZH,pdf_payment_mode:GH,pdf_payment_amount_received_label:QH,pdf_expense_report_label:JH,pdf_total_expenses_label:XH,pdf_profit_loss_label:eK,pdf_sales_customers_label:tK,pdf_sales_items_label:aK,pdf_tax_summery_label:nK,pdf_income_label:iK,pdf_net_profit_label:oK,pdf_customer_sales_report:sK,pdf_total_sales_label:rK,pdf_item_sales_label:lK,pdf_tax_report_label:cK,pdf_total_tax_label:dK,pdf_tax_types_label:uK,pdf_expenses_label:_K,pdf_bill_to:mK,pdf_ship_to:pK,pdf_received_from:fK,pdf_tax_label:hK},vK={dashboard:"Dashboard",customers:"Customers",items:"Items",invoices:"Invoices","recurring-invoices":"Recurring Invoices",expenses:"Expenses",estimates:"Estimates",payments:"Payments",reports:"Reports",settings:"Settings",logout:"Logout",users:"Users",modules:"Modules"},yK={add_company:"Add Company",view_pdf:"View PDF",copy_pdf_url:"Copy PDF Url",download_pdf:"Download PDF",save:"Save",create:"Create",cancel:"Cancel",update:"Update",deselect:"Deselect",download:"Download",from_date:"From Date",to_date:"To Date",from:"From",to:"To",ok:"Ok",yes:"Yes",no:"No",sort_by:"Sort By",ascending:"Ascending",descending:"Descending",subject:"Subject",body:"Body",message:"Message",send:"Send",preview:"Preview",go_back:"Go Back",back_to_login:"Back to Login?",home:"Home",filter:"Filter",delete:"Delete",edit:"Edit",view:"View",add_new_item:"Add New Item",clear_all:"Clear All",showing:"Showing",of:"of",actions:"Actions",subtotal:"SUBTOTAL",discount:"DISCOUNT",fixed:"Fixed",percentage:"Percentage",tax:"TAX",total_amount:"TOTAL AMOUNT",bill_to:"Bill to",ship_to:"Ship to",due:"Due",draft:"Draft",sent:"Sent",all:"All",select_all:"Select All",select_template:"Select Template",choose_file:"Click here to choose a file",choose_template:"Choose a template",choose:"Choose",remove:"Remove",select_a_status:"Select a status",select_a_tax:"Select a tax",search:"Search",are_you_sure:"Are you sure?",list_is_empty:"List is empty.",no_tax_found:"No tax found!",four_zero_four:"404",you_got_lost:"Whoops! You got Lost!",go_home:"Go Home",test_mail_conf:"Test Mail Configuration",send_mail_successfully:"Mail sent successfully",setting_updated:"Setting updated successfully",select_state:"Select state",select_country:"Select Country",select_city:"Select City",street_1:"Street 1",street_2:"Street 2",action_failed:"Action Failed",retry:"Retry",choose_note:"Choose Note",no_note_found:"No Note Found",insert_note:"Insert Note",copied_pdf_url_clipboard:"Copied PDF url to clipboard!",copied_url_clipboard:"Copied url to clipboard!",docs:"Docs",do_you_wish_to_continue:"Do you wish to continue?",note:"Note",pay_invoice:"Pay Invoice",login_successfully:"Logged in successfully!",logged_out_successfully:"Logged out successfully",mark_as_default:"Mark as default"},bK={select_year:"Select year",cards:{due_amount:"Amount Due",customers:"Customers",invoices:"Invoices",estimates:"Estimates",payments:"Payments"},chart_info:{total_sales:"Sales",total_receipts:"Receipts",total_expense:"Expenses",net_income:"Net Income",year:"Select year"},monthly_chart:{title:"Sales & Expenses"},recent_invoices_card:{title:"Due Invoices",due_on:"Due On",customer:"Customer",amount_due:"Amount Due",actions:"Actions",view_all:"View All"},recent_estimate_card:{title:"Recent Estimates",date:"Date",customer:"Customer",amount_due:"Amount Due",actions:"Actions",view_all:"View All"}},kK={name:"Name",description:"Description",percent:"Percent",compound_tax:"Compound Tax"},wK={search:"Search...",customers:"Customers",users:"Users",no_results_found:"No Results Found"},DK={label:"SWITCH COMPANY",no_results_found:"No Results Found",add_new_company:"Add new company",new_company:"New company",created_message:"Company created successfully"},xK={today:"Today",this_week:"This Week",this_month:"This Month",this_quarter:"This Quarter",this_year:"This Year",previous_week:"Previous Week",previous_month:"Previous Month",previous_quarter:"Previous Quarter",previous_year:"Previous Year",custom:"Custom"},SK={title:"Customers",prefix:"Prefix",add_customer:"Add Customer",contacts_list:"Customer List",name:"Name",mail:"Mail | Mails",statement:"Statement",display_name:"Display Name",primary_contact_name:"Primary Contact Name",contact_name:"Contact Name",amount_due:"Amount Due",email:"Email",address:"Address",phone:"Phone",website:"Website",overview:"Overview",invoice_prefix:"Invoice Prefix",estimate_prefix:"Estimate Prefix",payment_prefix:"Payment Prefix",enable_portal:"Enable Portal",country:"Country",state:"State",city:"City",zip_code:"Zip Code",added_on:"Added On",action:"Action",password:"Password",confirm_password:"Confirm Password",street_number:"Street Number",primary_currency:"Primary Currency",description:"Description",add_new_customer:"Add New Customer",save_customer:"Save Customer",update_customer:"Update Customer",customer:"Customer | Customers",new_customer:"New Customer",edit_customer:"Edit Customer",basic_info:"Basic Info",portal_access:"Portal Access",portal_access_text:"Would you like to allow this customer to login to the Customer Portal?",portal_access_url:"Customer Portal Login URL",portal_access_url_help:"Please copy & forward the above given URL to your customer for providing access.",billing_address:"Billing Address",shipping_address:"Shipping Address",copy_billing_address:"Copy from Billing",no_customers:"No customers yet!",no_customers_found:"No customers found!",no_contact:"No contact",no_contact_name:"No contact name",list_of_customers:"This section will contain the list of customers.",primary_display_name:"Primary Display Name",select_currency:"Select currency",select_a_customer:"Select a customer",type_or_click:"Type or click to select",new_transaction:"New Transaction",no_matching_customers:"There are no matching customers!",phone_number:"Phone Number",create_date:"Create Date",confirm_delete:"You will not be able to recover this customer and all the related Invoices, Estimates and Payments. | You will not be able to recover these customers and all the related Invoices, Estimates and Payments.",created_message:"Customer created successfully",updated_message:"Customer updated successfully",address_updated_message:"Address Information Updated succesfully",deleted_message:"Customer deleted successfully | Customers deleted successfully",edit_currency_not_allowed:"Cannot change currency once transactions created."},PK={title:"Items",items_list:"Items List",name:"Name",unit:"Unit",description:"Description",added_on:"Added On",price:"Price",date_of_creation:"Date Of Creation",not_selected:"No item selected",action:"Action",add_item:"Add Item",save_item:"Save Item",update_item:"Update Item",item:"Item | Items",add_new_item:"Add New Item",new_item:"New Item",edit_item:"Edit Item",no_items:"No items yet!",list_of_items:"This section will contain the list of items.",select_a_unit:"select unit",taxes:"Taxes",item_attached_message:"Cannot delete an item which is already in use",confirm_delete:"You will not be able to recover this Item | You will not be able to recover these Items",created_message:"Item created successfully",updated_message:"Item updated successfully",deleted_message:"Item deleted successfully | Items deleted successfully"},EK={title:"Estimates",accept_estimate:"Accept Estimate",reject_estimate:"Reject Estimate",estimate:"Estimate | Estimates",estimates_list:"Estimates List",days:"{days} Days",months:"{months} Month",years:"{years} Year",all:"All",paid:"Paid",unpaid:"Unpaid",customer:"CUSTOMER",ref_no:"REF NO.",number:"NUMBER",amount_due:"AMOUNT DUE",partially_paid:"Partially Paid",total:"Total",discount:"Discount",sub_total:"Sub Total",estimate_number:"Estimate Number",ref_number:"Ref Number",contact:"Contact",add_item:"Add an Item",date:"Date",due_date:"Due Date",expiry_date:"Expiry Date",status:"Status",add_tax:"Add Tax",amount:"Amount",action:"Action",notes:"Notes",tax:"Tax",estimate_template:"Template",convert_to_invoice:"Convert to Invoice",mark_as_sent:"Mark as Sent",send_estimate:"Send Estimate",resend_estimate:"Resend Estimate",record_payment:"Record Payment",add_estimate:"Add Estimate",save_estimate:"Save Estimate",confirm_conversion:"This estimate will be used to create a new Invoice.",conversion_message:"Invoice created successful",confirm_send_estimate:"This estimate will be sent via email to the customer",confirm_mark_as_sent:"This estimate will be marked as sent",confirm_mark_as_accepted:"This estimate will be marked as Accepted",confirm_mark_as_rejected:"This estimate will be marked as Rejected",no_matching_estimates:"There are no matching estimates!",mark_as_sent_successfully:"Estimate marked as sent successfully",send_estimate_successfully:"Estimate sent successfully",errors:{required:"Field is required"},accepted:"Accepted",rejected:"Rejected",expired:"Expired",sent:"Sent",draft:"Draft",viewed:"Viewed",declined:"Declined",new_estimate:"New Estimate",add_new_estimate:"Add New Estimate",update_Estimate:"Update Estimate",edit_estimate:"Edit Estimate",items:"items",Estimate:"Estimate | Estimates",add_new_tax:"Add New Tax",no_estimates:"No estimates yet!",list_of_estimates:"This section will contain the list of estimates.",mark_as_rejected:"Mark as rejected",mark_as_accepted:"Mark as accepted",marked_as_accepted_message:"Estimate marked as accepted",marked_as_rejected_message:"Estimate marked as rejected",confirm_delete:"You will not be able to recover this Estimate | You will not be able to recover these Estimates",created_message:"Estimate created successfully",updated_message:"Estimate updated successfully",deleted_message:"Estimate deleted successfully | Estimates deleted successfully",something_went_wrong:"something went wrong",item:{title:"Item Title",description:"Description",quantity:"Quantity",price:"Price",discount:"Discount",total:"Total",total_discount:"Total Discount",sub_total:"Sub Total",tax:"Tax",amount:"Amount",select_an_item:"Type or click to select an item",type_item_description:"Type Item Description (optional)"},mark_as_default_estimate_template_description:"If enabled, the selected template will be automatically selected for new estimates."},zK={title:"Invoices",download:"Download",pay_invoice:"Pay Invoice",invoices_list:"Invoices List",invoice_information:"Invoice Information",days:"{days} Days",months:"{months} Month",years:"{years} Year",all:"All",paid:"Paid",unpaid:"Unpaid",viewed:"Viewed",overdue:"Overdue",completed:"Completed",customer:"CUSTOMER",paid_status:"PAID STATUS",ref_no:"REF NO.",number:"NUMBER",amount_due:"AMOUNT DUE",partially_paid:"Partially Paid",total:"Total",discount:"Discount",sub_total:"Sub Total",invoice:"Invoice | Invoices",invoice_number:"Invoice Number",ref_number:"Ref Number",contact:"Contact",add_item:"Add an Item",date:"Date",due_date:"Due Date",status:"Status",add_tax:"Add Tax",amount:"Amount",action:"Action",notes:"Notes",view:"View",send_invoice:"Send Invoice",resend_invoice:"Resend Invoice",invoice_template:"Invoice Template",conversion_message:"Invoice cloned successful",template:"Select Template",mark_as_sent:"Mark as sent",confirm_send_invoice:"This invoice will be sent via email to the customer",invoice_mark_as_sent:"This invoice will be marked as sent",confirm_mark_as_accepted:"This invoice will be marked as Accepted",confirm_mark_as_rejected:"This invoice will be marked as Rejected",confirm_send:"This invoice will be sent via email to the customer",invoice_date:"Invoice Date",record_payment:"Record Payment",add_new_invoice:"Add New Invoice",update_expense:"Update Expense",edit_invoice:"Edit Invoice",new_invoice:"New Invoice",save_invoice:"Save Invoice",update_invoice:"Update Invoice",add_new_tax:"Add New Tax",no_invoices:"No Invoices yet!",mark_as_rejected:"Mark as rejected",mark_as_accepted:"Mark as accepted",list_of_invoices:"This section will contain the list of invoices.",select_invoice:"Select Invoice",no_matching_invoices:"There are no matching invoices!",mark_as_sent_successfully:"Invoice marked as sent successfully",invoice_sent_successfully:"Invoice sent successfully",cloned_successfully:"Invoice cloned successfully",clone_invoice:"Clone Invoice",confirm_clone:"This invoice will be cloned into a new Invoice",item:{title:"Item Title",description:"Description",quantity:"Quantity",price:"Price",discount:"Discount",total:"Total",total_discount:"Total Discount",sub_total:"Sub Total",tax:"Tax",amount:"Amount",select_an_item:"Type or click to select an item",type_item_description:"Type Item Description (optional)"},payment_attached_message:"One of the selected invoices already have a payment attached to it. Make sure to delete the attached payments first in order to go ahead with the removal",confirm_delete:"You will not be able to recover this Invoice | You will not be able to recover these Invoices",created_message:"Invoice created successfully",updated_message:"Invoice updated successfully",deleted_message:"Invoice deleted successfully | Invoices deleted successfully",marked_as_sent_message:"Invoice marked as sent successfully",something_went_wrong:"something went wrong",invalid_due_amount_message:"Total Invoice amount cannot be less than total paid amount for this Invoice. Please update the invoice or delete the associated payments to continue.",mark_as_default_invoice_template_description:"If enabled, the selected template will be automatically selected for new invoices."},AK={title:"Recurring Invoices",invoices_list:"Recurring Invoices List",days:"{days} Days",months:"{months} Month",years:"{years} Year",all:"All",paid:"Paid",unpaid:"Unpaid",viewed:"Viewed",overdue:"Overdue",active:"Active",completed:"Completed",customer:"CUSTOMER",paid_status:"PAID STATUS",ref_no:"REF NO.",number:"NUMBER",amount_due:"AMOUNT DUE",partially_paid:"Partially Paid",total:"Total",discount:"Discount",sub_total:"Sub Total",invoice:"Recurring Invoice | Recurring Invoices",invoice_number:"Recurring Invoice Number",next_invoice_date:"Next Invoice Date",ref_number:"Ref Number",contact:"Contact",add_item:"Add an Item",date:"Date",limit_by:"Limit by",limit_date:"Limit Date",limit_count:"Limit Count",count:"Count",status:"Status",select_a_status:"Select a status",working:"Working",on_hold:"On Hold",complete:"Completed",add_tax:"Add Tax",amount:"Amount",action:"Action",notes:"Notes",view:"View",basic_info:"Basic Info",send_invoice:"Send Recurring Invoice",auto_send:"Auto Send",resend_invoice:"Resend Recurring Invoice",invoice_template:"Recurring Invoice Template",conversion_message:"Recurring Invoice cloned successful",template:"Template",mark_as_sent:"Mark as sent",confirm_send_invoice:"This recurring invoice will be sent via email to the customer",invoice_mark_as_sent:"This recurring invoice will be marked as sent",confirm_send:"This recurring invoice will be sent via email to the customer",starts_at:"Start Date",due_date:"Invoice Due Date",record_payment:"Record Payment",add_new_invoice:"Add New Recurring Invoice",update_expense:"Update Expense",edit_invoice:"Edit Recurring Invoice",new_invoice:"New Recurring Invoice",send_automatically:"Send Automatically",send_automatically_desc:"Enable this, if you would like to send the invoice automatically to the customer when its created.",save_invoice:"Save Recurring Invoice",update_invoice:"Update Recurring Invoice",add_new_tax:"Add New Tax",no_invoices:"No Recurring Invoices yet!",mark_as_rejected:"Mark as rejected",mark_as_accepted:"Mark as accepted",list_of_invoices:"This section will contain the list of recurring invoices.",select_invoice:"Select Invoice",no_matching_invoices:"There are no matching recurring invoices!",mark_as_sent_successfully:"Recurring Invoice marked as sent successfully",invoice_sent_successfully:"Recurring Invoice sent successfully",cloned_successfully:"Recurring Invoice cloned successfully",clone_invoice:"Clone Recurring Invoice",confirm_clone:"This recurring invoice will be cloned into a new Recurring Invoice",add_customer_email:"Please add an email address for this customer to send invoices automatically.",item:{title:"Item Title",description:"Description",quantity:"Quantity",price:"Price",discount:"Discount",total:"Total",total_discount:"Total Discount",sub_total:"Sub Total",tax:"Tax",amount:"Amount",select_an_item:"Type or click to select an item",type_item_description:"Type Item Description (optional)"},frequency:{title:"Frequency",select_frequency:"Select Frequency",minute:"Minute",hour:"Hour",day_month:"Day of month",month:"Month",day_week:"Day of week"},confirm_delete:"You will not be able to recover this Invoice | You will not be able to recover these Invoices",created_message:"Recurring Invoice created successfully",updated_message:"Recurring Invoice updated successfully",deleted_message:"Recurring Invoice deleted successfully | Recurring Invoices deleted successfully",marked_as_sent_message:"Recurring Invoice marked as sent successfully",user_email_does_not_exist:"User email does not exist",something_went_wrong:"something went wrong",invalid_due_amount_message:"Total Recurring Invoice amount cannot be less than total paid amount for this Recurring Invoice. Please update the invoice or delete the associated payments to continue."},CK={title:"Payments",payments_list:"Payments List",record_payment:"Record Payment",customer:"Customer",date:"Date",amount:"Amount",action:"Action",payment_number:"Payment Number",payment_mode:"Payment Mode",invoice:"Invoice",note:"Note",add_payment:"Add Payment",new_payment:"New Payment",edit_payment:"Edit Payment",view_payment:"View Payment",add_new_payment:"Add New Payment",send_payment_receipt:"Send Payment Receipt",send_payment:"Send Payment",save_payment:"Save Payment",update_payment:"Update Payment",payment:"Payment | Payments",no_payments:"No payments yet!",not_selected:"Not selected",no_invoice:"No invoice",no_matching_payments:"There are no matching payments!",list_of_payments:"This section will contain the list of payments.",select_payment_mode:"Select payment mode",confirm_mark_as_sent:"This estimate will be marked as sent",confirm_send_payment:"This payment will be sent via email to the customer",send_payment_successfully:"Payment sent successfully",something_went_wrong:"something went wrong",confirm_delete:"You will not be able to recover this Payment | You will not be able to recover these Payments",created_message:"Payment created successfully",updated_message:"Payment updated successfully",deleted_message:"Payment deleted successfully | Payments deleted successfully",invalid_amount_message:"Payment amount is invalid"},TK={title:"Expenses",expenses_list:"Expenses List",select_a_customer:"Select a customer",expense_title:"Title",customer:"Customer",currency:"Currency",contact:"Contact",category:"Category",from_date:"From Date",to_date:"To Date",expense_date:"Date",description:"Description",receipt:"Receipt",amount:"Amount",action:"Action",not_selected:"Not selected",note:"Note",category_id:"Category Id",date:"Date",add_expense:"Add Expense",add_new_expense:"Add New Expense",save_expense:"Save Expense",update_expense:"Update Expense",download_receipt:"Download Receipt",edit_expense:"Edit Expense",new_expense:"New Expense",expense:"Expense | Expenses",no_expenses:"No expenses yet!",list_of_expenses:"This section will contain the list of expenses.",confirm_delete:"You will not be able to recover this Expense | You will not be able to recover these Expenses",created_message:"Expense created successfully",updated_message:"Expense updated successfully",deleted_message:"Expense deleted successfully | Expenses deleted successfully",categories:{categories_list:"Categories List",title:"Title",name:"Name",description:"Description",amount:"Amount",actions:"Actions",add_category:"Add Category",new_category:"New Category",category:"Category | Categories",select_a_category:"Select a category"}},jK={email:"Email",password:"Password",forgot_password:"Forgot Password?",or_signIn_with:"or Sign in with",login:"Login",register:"Register",reset_password:"Reset Password",password_reset_successfully:"Password Reset Successfully",enter_email:"Enter email",enter_password:"Enter Password",retype_password:"Retype Password"},NK={buy_now:"Buy Now",install:"Install",price:"Price",download_zip_file:"Download ZIP file",unzipping_package:"Unzipping Package",copying_files:"Copying Files",deleting_files:"Deleting Unused files",completing_installation:"Completing Installation",update_failed:"Update Failed",install_success:"Module has been installed successfully!",customer_reviews:"Reviews",license:"License",faq:"FAQ",monthly:"Monthly",yearly:"Yearly",updated:"Updated",version:"Version",disable:"Disable",module_disabled:"Module Disabled",enable:"Enable",module_enabled:"Module Enabled",update_to:"Update To",module_updated:"Module Updated Successfully!",title:"Modules",module:"Module | Modules",api_token:"API token",invalid_api_token:"Invalid API Token.",other_modules:"Other Modules",view_all:"View All",no_reviews_found:"There are no reviews for this module yet!",module_not_purchased:"Module Not Purchased",module_not_found:"Module Not Found",version_not_supported:"This module version doesn't support the current version of InvoiceShelf",last_updated:"Last Updated On",connect_installation:"Connect your installation",api_token_description:"Login to {url} and connect this installation by entering the API Token. Your purchased modules will show up here after the connection is established.",view_module:"View Module",update_available:"Update Available",purchased:"Purchased",installed:"Installed",no_modules_installed:"No Modules Installed Yet!",disable_warning:"All the settings for this particular will be reverted.",what_you_get:"What you get"},IK={title:"Users",users_list:"Users List",name:"Name",description:"Description",added_on:"Added On",date_of_creation:"Date Of Creation",action:"Action",add_user:"Add User",save_user:"Save User",update_user:"Update User",user:"User | Users",add_new_user:"Add New User",new_user:"New User",edit_user:"Edit User",no_users:"No users yet!",list_of_users:"This section will contain the list of users.",email:"Email",phone:"Phone",password:"Password",user_attached_message:"Cannot delete an item which is already in use",confirm_delete:"You will not be able to recover this User | You will not be able to recover these Users",created_message:"User created successfully",updated_message:"User updated successfully",deleted_message:"User deleted successfully | Users deleted successfully",select_company_role:"Select Role for {company}",companies:"Companies"},FK={title:"Report",from_date:"From Date",to_date:"To Date",status:"Status",paid:"Paid",unpaid:"Unpaid",download_pdf:"Download PDF",view_pdf:"View PDF",update_report:"Update Report",report:"Report | Reports",profit_loss:{profit_loss:"Profit & Loss",to_date:"To Date",from_date:"From Date",date_range:"Select Date Range"},sales:{sales:"Sales",date_range:"Select Date Range",to_date:"To Date",from_date:"From Date",report_type:"Report Type"},taxes:{taxes:"Taxes",to_date:"To Date",from_date:"From Date",date_range:"Select Date Range"},errors:{required:"Field is required"},invoices:{invoice:"Invoice",invoice_date:"Invoice Date",due_date:"Due Date",amount:"Amount",contact_name:"Contact Name",status:"Status"},estimates:{estimate:"Estimate",estimate_date:"Estimate Date",due_date:"Due Date",estimate_number:"Estimate Number",ref_number:"Ref Number",amount:"Amount",contact_name:"Contact Name",status:"Status"},expenses:{expenses:"Expenses",category:"Category",date:"Date",amount:"Amount",to_date:"To Date",from_date:"From Date",date_range:"Select Date Range"}},RK={menu_title:{account_settings:"Account Settings",company_information:"Company Information",customization:"Customization",preferences:"Preferences",notifications:"Notifications",tax_types:"Tax Types",expense_category:"Expense Categories",update_app:"Update App",backup:"Backup",file_disk:"File Disk",custom_fields:"Custom Fields",payment_modes:"Payment Modes",notes:"Notes",exchange_rate:"Exchange Rate",address_information:"Address Information"},address_information:{section_description:" You can update Your Address information using form below."},title:"Settings",setting:"Settings | Settings",general:"General",language:"Language",primary_currency:"Primary Currency",timezone:"Time Zone",date_format:"Date Format",currencies:{title:"Currencies",currency:"Currency | Currencies",currencies_list:"Currencies List",select_currency:"Select Currency",name:"Name",code:"Code",symbol:"Symbol",precision:"Precision",thousand_separator:"Thousand Separator",decimal_separator:"Decimal Separator",position:"Position",position_of_symbol:"Position Of Symbol",right:"Right",left:"Left",action:"Action",add_currency:"Add Currency"},mail:{host:"Mail Host",port:"Mail Port",driver:"Mail Driver",secret:"Secret",mailgun_secret:"Mailgun Secret",mailgun_domain:"Domain",mailgun_endpoint:"Mailgun Endpoint",ses_secret:"SES Secret",ses_key:"SES Key",password:"Mail Password",username:"Mail Username",mail_config:"Mail Configuration",from_name:"From Mail Name",from_mail:"From Mail Address",encryption:"Mail Encryption",mail_config_desc:"Below is the form for Configuring Email driver for sending emails from the app. You can also configure third party providers like Sendgrid, SES etc."},pdf:{title:"PDF Setting",footer_text:"Footer Text",pdf_layout:"PDF Layout"},company_info:{company_info:"Company info",company_name:"Company Name",company_logo:"Company Logo",section_description:"Information about your company that will be displayed on invoices, estimates and other documents created by InvoiceShelf.",phone:"Phone",country:"Country",state:"State",city:"City",address:"Address",zip:"Zip",save:"Save",delete:"Delete",updated_message:"Company information updated successfully",delete_company:"Delete Company",delete_company_description:"Once you delete your company, you will lose all the data and files associated with it permanently.",are_you_absolutely_sure:"Are you absolutely sure?",delete_company_modal_desc:"This action cannot be undone. This will permanently delete {company} and all of its associated data.",delete_company_modal_label:"Please type {company} to confirm"},custom_fields:{title:"Custom Fields",section_description:"Customize your Invoices, Estimates & Payment Receipts with your own fields. Make sure to use the below added fields on the address formats on Customization settings page.",add_custom_field:"Add Custom Field",edit_custom_field:"Edit Custom Field",field_name:"Field Name",label:"Label",type:"Type",name:"Name",slug:"Slug",required:"Required",placeholder:"Placeholder",help_text:"Help Text",default_value:"Default Value",prefix:"Prefix",starting_number:"Starting Number",model:"Model",help_text_description:"Enter some text to help users understand the purpose of this custom field.",suffix:"Suffix",yes:"Yes",no:"No",order:"Order",custom_field_confirm_delete:"You will not be able to recover this Custom Field",already_in_use:"Custom Field is already in use",deleted_message:"Custom Field deleted successfully",options:"options",add_option:"Add Options",add_another_option:"Add another option",sort_in_alphabetical_order:"Sort in Alphabetical Order",add_options_in_bulk:"Add options in bulk",use_predefined_options:"Use Predefined Options",select_custom_date:"Select Custom Date",select_relative_date:"Select Relative Date",ticked_by_default:"Ticked by default",updated_message:"Custom Field updated successfully",added_message:"Custom Field added successfully",press_enter_to_add:"Press enter to add new option",model_in_use:"Cannot update model for fields which are already in use.",type_in_use:"Cannot update type for fields which are already in use."},customization:{customization:"customization",updated_message:"Company information updated successfully",save:"Save",insert_fields:"Insert Fields",learn_custom_format:"Learn how to use custom format",add_new_component:"Add New Component",component:"Component",Parameter:"Parameter",series:"Series",series_description:"To set a static prefix/postfix like 'INV' across your company. It supports character length of up to 6 chars.",series_param_label:"Series Value",delimiter:"Delimiter",delimiter_description:"Single character for specifying the boundary between 2 separate components. By default its set to -",delimiter_param_label:"Delimiter Value",date_format:"Date Format",date_format_description:"A local date and time field which accepts a format parameter. The default format: 'Y' renders the current year.",date_format_param_label:"Format",sequence:"Sequence",sequence_description:"Consecutive sequence of numbers across your company. You can specify the length on the given parameter.",sequence_param_label:"Sequence Length",customer_series:"Customer Series",customer_series_description:"To set a different prefix/postfix for each customer.",customer_sequence:"Customer Sequence",customer_sequence_description:"Consecutive sequence of numbers for each of your customer.",customer_sequence_param_label:"Sequence Length",random_sequence:"Random Sequence",random_sequence_description:"Random alphanumeric string. You can specify the length on the given parameter.",random_sequence_param_label:"Sequence Length",invoices:{title:"Invoices",invoice_number_format:"Invoice Number Format",invoice_number_format_description:"Customize how your invoice number gets generated automatically when you create a new invoice.",preview_invoice_number:"Preview Invoice Number",due_date:"Due Date",due_date_description:"Specify how due date is automatically set when you create an invoice.",due_date_days:"Invoice Due after days",set_due_date_automatically:"Set Due Date Automatically",set_due_date_automatically_description:"Enable this if you wish to set due date automatically when you create a new invoice.",default_formats:"Default Formats",default_formats_description:"Below given formats are used to fill up the fields automatically on invoice creation.",default_invoice_email_body:"Default Invoice Email Body",company_address_format:"Company Address Format",shipping_address_format:"Shipping Address Format",billing_address_format:"Billing Address Format",invoice_email_attachment:"Send invoices as attachments",invoice_email_attachment_setting_description:"Enable this if you want to send invoices as email attachment. Please note that 'View Invoice' button in emails will not be displayed anymore when enabled.",invoice_settings_updated:"Invoice Settings updated successfully",retrospective_edits:"Retrospective Edits",allow:"Allow",disable_on_invoice_partial_paid:"Disable after partial payment is recorded",disable_on_invoice_paid:"Disable after full payment is recorded",disable_on_invoice_sent:"Disable after invoice is sent",retrospective_edits_description:" Based on your country's laws or your preference, you can restrict users from editing finalised invoices."},estimates:{title:"Estimates",estimate_number_format:"Estimate Number Format",estimate_number_format_description:"Customize how your estimate number gets generated automatically when you create a new estimate.",preview_estimate_number:"Preview Estimate Number",expiry_date:"Expiry Date",expiry_date_description:"Specify how expiry date is automatically set when you create an estimate.",expiry_date_days:"Estimate Expires after days",set_expiry_date_automatically:"Set Expiry Date Automatically",set_expiry_date_automatically_description:"Enable this if you wish to set expiry date automatically when you create a new estimate.",default_formats:"Default Formats",default_formats_description:"Below given formats are used to fill up the fields automatically on estimate creation.",default_estimate_email_body:"Default Estimate Email Body",company_address_format:"Company Address Format",shipping_address_format:"Shipping Address Format",billing_address_format:"Billing Address Format",estimate_email_attachment:"Send estimates as attachments",estimate_email_attachment_setting_description:"Enable this if you want to send the estimates as an email attachment. Please note that 'View Estimate' button in emails will not be displayed anymore when enabled.",estimate_settings_updated:"Estimate Settings updated successfully",convert_estimate_options:"Estimate Convert Action",convert_estimate_description:"Specify what happens to the estimate after it gets converted to an invoice.",no_action:"No action",delete_estimate:"Delete estimate",mark_estimate_as_accepted:"Mark estimate as accepted"},payments:{title:"Payments",payment_number_format:"Payment Number Format",payment_number_format_description:"Customize how your payment number gets generated automatically when you create a new payment.",preview_payment_number:"Preview Payment Number",default_formats:"Default Formats",default_formats_description:"Below given formats are used to fill up the fields automatically on payment creation.",default_payment_email_body:"Default Payment Email Body",company_address_format:"Company Address Format",from_customer_address_format:"From Customer Address Format",payment_email_attachment:"Send payments as attachments",payment_email_attachment_setting_description:"Enable this if you want to send the payment receipts as an email attachment. Please note that 'View Payment' button in emails will not be displayed anymore when enabled.",payment_settings_updated:"Payment Settings updated successfully"},items:{title:"Items",units:"Units",add_item_unit:"Add Item Unit",edit_item_unit:"Edit Item Unit",unit_name:"Unit Name",item_unit_added:"Item Unit Added",item_unit_updated:"Item Unit Updated",item_unit_confirm_delete:"You will not be able to recover this Item unit",already_in_use:"Item Unit is already in use",deleted_message:"Item Unit deleted successfully"},notes:{title:"Notes",description:"Save time by creating notes and reusing them on your invoices, estimates & payments.",notes:"Notes",type:"Type",add_note:"Add Note",add_new_note:"Add New Note",name:"Name",edit_note:"Edit Note",note_added:"Note added successfully",note_updated:"Note Updated successfully",note_confirm_delete:"You will not be able to recover this Note",already_in_use:"Note is already in use",deleted_message:"Note deleted successfully"}},account_settings:{profile_picture:"Profile Picture",name:"Name",email:"Email",password:"Password",confirm_password:"Confirm Password",account_settings:"Account Settings",save:"Save",section_description:"You can update your name, email & password using the form below.",updated_message:"Account Settings updated successfully"},user_profile:{name:"Name",email:"Email",password:"Password",confirm_password:"Confirm Password"},notification:{title:"Notifications",email:"Send Notifications to",description:"Which email notifications would you like to receive when something changes?",invoice_viewed:"Invoice viewed",invoice_viewed_desc:"When your customer views the invoice sent via invoiceshelf dashboard.",estimate_viewed:"Estimate viewed",estimate_viewed_desc:"When your customer views the estimate sent via invoiceshelf dashboard.",save:"Save",email_save_message:"Email saved successfully",please_enter_email:"Please Enter Email"},roles:{title:"Roles",description:"Manage the roles & permissions of this company",save:"Save",add_new_role:"Add New Role",role_name:"Role Name",added_on:"Added on",add_role:"Add Role",edit_role:"Edit Role",name:"Name",permission:"Permission | Permissions",select_all:"Select All",none:"None",confirm_delete:"You will not be able to recover this Role",created_message:"Role created successfully",updated_message:"Role updated successfully",deleted_message:"Role deleted successfully",already_in_use:"Role is already in use"},exchange_rate:{exchange_rate:"Exchange Rate",title:"Fix Currency Exchange issues",description:"Please enter exchange rate of all the currencies mentioned below to help InvoiceShelf properly calculate the amounts in {currency}.",drivers:"Drivers",new_driver:"Add New Provider",edit_driver:"Edit Provider",select_driver:"Select Driver",update:"select exchange rate ",providers_description:"Configure your exchange rate providers here to automatically fetch the latest exchange rate on transactions.",key:"API Key",name:"Name",driver:"Driver",is_default:"IS DEFAULT",currency:"Currencies",exchange_rate_confirm_delete:"You will not be able to recover this driver",created_message:"Provider Created successfully",updated_message:"Provider Updated Successfully",deleted_message:"Provider Deleted Successfully",error:" You cannot Delete Active Driver",default_currency_error:"This currency is already used in one of the Active Provider",exchange_help_text:"Enter exchange rate to convert from {currency} to {baseCurrency}",currency_freak:"Currency Freak",currency_layer:"Currency Layer",open_exchange_rate:"Open Exchange Rate",currency_converter:"Currency Converter",server:"Server",url:"URL",active:"Active",currency_help_text:"This provider will only be used on above selected currencies",currency_in_used:"The following currencies are already active on another provider. Please remove these currencies from selection to activate this provider again."},tax_types:{title:"Tax Types",add_tax:"Add Tax",edit_tax:"Edit Tax",description:"You can add or Remove Taxes as you please. InvoiceShelf supports Taxes on Individual Items as well as on the invoice.",add_new_tax:"Add New Tax",tax_settings:"Tax Settings",tax_per_item:"Tax Per Item",tax_name:"Tax Name",compound_tax:"Compound Tax",percent:"Percent",action:"Action",tax_setting_description:"Enable this if you want to add taxes to individual invoice items. By default, taxes are added directly to the invoice.",created_message:"Tax type created successfully",updated_message:"Tax type updated successfully",deleted_message:"Tax type deleted successfully",confirm_delete:"You will not be able to recover this Tax Type",already_in_use:"Tax is already in use"},payment_modes:{title:"Payment Modes",description:"Modes of transaction for payments",add_payment_mode:"Add Payment Mode",edit_payment_mode:"Edit Payment Mode",mode_name:"Mode Name",payment_mode_added:"Payment Mode Added",payment_mode_updated:"Payment Mode Updated",payment_mode_confirm_delete:"You will not be able to recover this Payment Mode",payments_attached:"This payment method is already attached to payments. Please delete the attached payments to proceed with deletion.",expenses_attached:"This payment method is already attached to expenses. Please delete the attached expenses to proceed with deletion.",deleted_message:"Payment Mode deleted successfully"},expense_category:{title:"Expense Categories",action:"Action",description:"Categories are required for adding expense entries. You can Add or Remove these categories according to your preference.",add_new_category:"Add New Category",add_category:"Add Category",edit_category:"Edit Category",category_name:"Category Name",category_description:"Description",created_message:"Expense Category created successfully",deleted_message:"Expense category deleted successfully",updated_message:"Expense category updated successfully",confirm_delete:"You will not be able to recover this Expense Category",already_in_use:"Category is already in use"},preferences:{currency:"Currency",default_language:"Default Language",time_zone:"Time Zone",fiscal_year:"Financial Year",date_format:"Date Format",discount_setting:"Discount Setting",discount_per_item:"Discount Per Item ",discount_setting_description:"Enable this if you want to add Discount to individual invoice items. By default, Discount is added directly to the invoice.",expire_public_links:"Automatically Expire Public Links",expire_setting_description:"Specify whether you would like to expire all the links sent by application to view invoices, estimates & payments, etc after a specified duration.",save:"Save",preference:"Preference | Preferences",general_settings:"Default preferences for the system.",updated_message:"Preferences updated successfully",select_language:"Select Language",select_time_zone:"Select Time Zone",select_date_format:"Select Date Format",select_financial_year:"Select Financial Year",recurring_invoice_status:"Recurring Invoice Status",create_status:"Create Status",active:"Active",on_hold:"On Hold",update_status:"Update Status",completed:"Completed",company_currency_unchangeable:"Company currency cannot be changed"},update_app:{title:"Update App",description:"You can easily update InvoiceShelf by checking for a new update by clicking the button below",check_update:"Check for updates",avail_update:"New Update available",next_version:"Next version",requirements:"Requirements",update:"Update Now",update_progress:"Update in progress...",progress_text:"It will just take a few minutes. Please do not refresh the screen or close the window before the update finishes",update_success:"App has been updated! Please wait while your browser window gets reloaded automatically.",latest_message:"No update available! You are on the latest version.",current_version:"Current Version",download_zip_file:"Download ZIP file",unzipping_package:"Unzipping Package",copying_files:"Copying Files",deleting_files:"Deleting Unused files",running_migrations:"Running Migrations",finishing_update:"Finishing Update",update_failed:"Update Failed",update_failed_text:"Sorry! Your update failed on : {step} step",update_warning:"All of the application files and default template files will be overwritten when you update the application using this utility. Please take a backup of your templates & database before updating."},backup:{title:"Backup | Backups",description:"The backup is a zipfile that contains all files in the directories you specify along with a dump of your database",new_backup:"Add New Backup",create_backup:"Create Backup",select_backup_type:"Select Backup Type",backup_confirm_delete:"You will not be able to recover this Backup",path:"path",new_disk:"New Disk",created_at:"created at",size:"size",dropbox:"dropbox",local:"local",healthy:"healthy",amount_of_backups:"amount of backups",newest_backups:"newest backups",used_storage:"used storage",select_disk:"Select Disk",action:"Action",deleted_message:"Backup deleted successfully",created_message:"Backup created successfully",invalid_disk_credentials:"Invalid credential of selected disk"},disk:{title:"File Disk | File Disks",description:"By default, InvoiceShelf will use your local disk for saving backups, avatar and other image files. You can configure more than one disk drivers like DigitalOcean, S3 and Dropbox according to your preference.",created_at:"created at",dropbox:"dropbox",name:"Name",driver:"Driver",disk_type:"Type",disk_name:"Disk Name",new_disk:"Add New Disk",filesystem_driver:"Filesystem Driver",local_driver:"local Driver",local_root:"local Root",public_driver:"Public Driver",public_root:"Public Root",public_url:"Public URL",public_visibility:"Public Visibility",media_driver:"Media Driver",media_root:"Media Root",aws_driver:"AWS Driver",aws_key:"AWS Key",aws_secret:"AWS Secret",aws_region:"AWS Region",aws_bucket:"AWS Bucket",aws_root:"AWS Root",do_spaces_type:"Do Spaces type",do_spaces_key:"Do Spaces key",do_spaces_secret:"Do Spaces Secret",do_spaces_region:"Do Spaces Region",do_spaces_bucket:"Do Spaces Bucket",do_spaces_endpoint:"Do Spaces Endpoint",do_spaces_root:"Do Spaces Root",dropbox_type:"Dropbox Type",dropbox_token:"Dropbox Token",dropbox_key:"Dropbox Key",dropbox_secret:"Dropbox Secret",dropbox_app:"Dropbox App",dropbox_root:"Dropbox Root",default_driver:"Default Driver",is_default:"IS DEFAULT",set_default_disk:"Set Default Disk",set_default_disk_confirm:"This disk will be set as default and all the new PDFs will be saved on this disk",success_set_default_disk:"Disk set as default successfully",save_pdf_to_disk:"Save PDFs to Disk",disk_setting_description:" Enable this, if you wish to save a copy of each Invoice, Estimate & Payment Receipt PDF on your default disk automatically. Turning this option will decrease the load-time when viewing the PDFs.",select_disk:"Select Disk",disk_settings:"Disk Settings",confirm_delete:"Your existing files & folders in the specified disk will not be affected but your disk configuration will be deleted from InvoiceShelf",action:"Action",edit_file_disk:"Edit File Disk",success_create:"Disk added successfully",success_update:"Disk updated successfully",error:"Disk addition failed",deleted_message:"File Disk deleted successfully",disk_variables_save_successfully:"Disk Configured Successfully",disk_variables_save_error:"Disk configuration failed.",invalid_disk_credentials:"Invalid credential of selected disk"},taxations:{add_billing_address:"Enter Billing Address",add_shipping_address:"Enter Shipping Address",add_company_address:"Enter Company Address",modal_description:"The information below is required in order to fetch sales tax.",add_address:"Add Address for fetching sales tax.",address_placeholder:"Example: 123, My Street",city_placeholder:"Example: Los Angeles",state_placeholder:"Example: CA",zip_placeholder:"Example: 90024",invalid_address:"Please provide valid address details."}},OK={account_info:"Account Information",account_info_desc:"Below details will be used to create the main Administrator account. Also you can change the details anytime after logging in.",name:"Name",email:"Email",password:"Password",confirm_password:"Confirm Password",save_cont:"Save & Continue",company_info:"Company Information",company_info_desc:"This information will be displayed on invoices. Note that you can edit this later on settings page.",company_name:"Company Name",company_logo:"Company Logo",logo_preview:"Logo Preview",preferences:"Company Preferences",preferences_desc:"Specify the default preferences for this company.",currency_set_alert:"The company's currency cannot be changed later.",country:"Country",state:"State",city:"City",address:"Address",street:"Street1 | Street2",phone:"Phone",zip_code:"Zip Code",go_back:"Go Back",currency:"Currency",language:"Language",time_zone:"Time Zone",fiscal_year:"Financial Year",date_format:"Date Format",from_address:"From Address",username:"Username",next:"Next",continue:"Continue",skip:"Skip",database:{database:"Site URL & Database",connection:"Database Connection",host:"Database Host",port:"Database Port",password:"Database Password",app_url:"App URL",app_domain:"App Domain",username:"Database Username",db_name:"Database Name",db_path:"Database Path",desc:"Create a database on your server and set the credentials using the form below."},permissions:{permissions:"Permissions",permission_confirm_title:"Are you sure you want to continue?",permission_confirm_desc:"Folder permission check failed",permission_desc:"Below is the list of folder permissions which are required in order for the app to work. If the permission check fails, make sure to update your folder permissions."},verify_domain:{title:"Domain Verification",desc:"InvoiceShelf uses Session based authentication which requires domain verification for security purposes. Please enter the domain on which you will be accessing your web application.",app_domain:"App Domain",verify_now:"Verify Now",success:"Domain Verify Successfully.",failed:"Domain verification failed. Please enter valid domain name.",verify_and_continue:"Verify And Continue"},mail:{host:"Mail Host",port:"Mail Port",driver:"Mail Driver",secret:"Secret",mailgun_secret:"Mailgun Secret",mailgun_domain:"Domain",mailgun_endpoint:"Mailgun Endpoint",ses_secret:"SES Secret",ses_key:"SES Key",password:"Mail Password",username:"Mail Username",mail_config:"Mail Configuration",from_name:"From Mail Name",from_mail:"From Mail Address",encryption:"Mail Encryption",mail_config_desc:"Below is the form for Configuring Email driver for sending emails from the app. You can also configure third party providers like Sendgrid, SES etc."},req:{system_req:"System Requirements",php_req_version:"Php (version {version} required)",check_req:"Check Requirements",system_req_desc:"InvoiceShelf has a few server requirements. Make sure that your server has the required php version and all the extensions mentioned below."},errors:{migrate_failed:"Migrate Failed",database_variables_save_error:"Cannot write configuration to .env file. Please check its file permissions",mail_variables_save_error:"Email configuration failed.",connection_failed:"Database connection failed",database_should_be_empty:"Database should be empty"},success:{mail_variables_save_successfully:"Email configured successfully",database_variables_save_successfully:"Database configured successfully."}},MK={invalid_phone:"Invalid Phone Number",invalid_url:"Invalid url (ex: http://www.invoiceshelf.com)",invalid_domain_url:"Invalid url (ex: invoiceshelf.com)",required:"Field is required",email_incorrect:"Incorrect Email.",email_already_taken:"The email has already been taken.",email_does_not_exist:"User with given email doesn't exist",item_unit_already_taken:"This item unit name has already been taken",payment_mode_already_taken:"This payment mode name has already been taken",send_reset_link:"Send Reset Link",not_yet:"Not yet? Send it again",password_min_length:"Password must contain {count} characters",name_min_length:"Name must have at least {count} letters.",prefix_min_length:"Prefix must have at least {count} letters.",enter_valid_tax_rate:"Enter valid tax rate",numbers_only:"Numbers Only.",characters_only:"Characters Only.",password_incorrect:"Passwords must be identical",password_length:"Password must be {count} character long.",qty_must_greater_than_zero:"Quantity must be greater than zero.",price_greater_than_zero:"Price must be greater than zero.",payment_greater_than_zero:"Payment must be greater than zero.",payment_greater_than_due_amount:"Entered Payment is more than due amount of this invoice.",quantity_maxlength:"Quantity should not be greater than 20 digits.",price_maxlength:"Price should not be greater than 20 digits.",price_minvalue:"Price should be greater than 0.",amount_maxlength:"Amount should not be greater than 20 digits.",amount_minvalue:"Amount should be greater than 0.",discount_maxlength:"Discount should not be greater than max discount",description_maxlength:"Description should not be greater than 255 characters.",subject_maxlength:"Subject should not be greater than 100 characters.",message_maxlength:"Message should not be greater than 255 characters.",maximum_options_error:"Maximum of {max} options selected. First remove a selected option to select another.",notes_maxlength:"Notes should not be greater than 65,000 characters.",address_maxlength:"Address should not be greater than 255 characters.",ref_number_maxlength:"Ref Number should not be greater than 255 characters.",prefix_maxlength:"Prefix should not be greater than 5 characters.",something_went_wrong:"something went wrong",number_length_minvalue:"Number length should be greater than 0",at_least_one_ability:"Please select atleast one Permission.",valid_driver_key:"Please enter a valid {driver} key.",valid_exchange_rate:"Please enter a valid exchange rate.",company_name_not_same:"Company name must match with given name."},$K={starter_plan:"This feature is available on Starter plan and onwards!",invalid_provider_key:"Please Enter Valid Provider API Key.",estimate_number_used:"The estimate number has already been taken.",invoice_number_used:"The invoice number has already been taken.",payment_attached:"This invoice already has a payment attached to it. Make sure to delete the attached payments first in order to go ahead with the removal.",payment_number_used:"The payment number has already been taken.",name_already_taken:"The name has already been taken.",receipt_does_not_exist:"Receipt does not exist.",customer_cannot_be_changed_after_payment_is_added:"Customer cannot be change after payment is added",invalid_credentials:"Invalid Credentials.",not_allowed:"Not Allowed",login_invalid_credentials:"These credentials do not match our records.",enter_valid_cron_format:"Please enter a valid cron format",email_could_not_be_sent:"Email could not be sent to this email address.",invalid_address:"Please enter a valid address.",invalid_key:"Please enter valid key.",invalid_state:"Please enter a valid state.",invalid_city:"Please enter a valid city.",invalid_postal_code:"Please enter a valid zip.",invalid_format:"Please enter valid query string format.",api_error:"Server not responding.",feature_not_enabled:"Feature not enabled.",request_limit_met:"Api request limit exceeded.",address_incomplete:"Incomplete Address"},LK="Estimate",BK="Estimate Number",UK="Estimate Date",VK="Expiry date",qK="Invoice",WK="Invoice Number",HK="Invoice Date",KK="Due date",YK="Notes",ZK="Items",GK="Quantity",QK="Price",JK="Discount",XK="Amount",eY="Subtotal",tY="Total",aY="Payment",nY="PAYMENT RECEIPT",iY="Payment Date",oY="Payment Number",sY="Payment Mode",rY="Amount Received",lY="EXPENSES REPORT",cY="TOTAL EXPENSE",dY="PROFIT & LOSS REPORT",uY="Sales Customer Report",_Y="Sales Item Report",mY="Tax Summary Report",pY="INCOME",fY="NET PROFIT",hY="Sales Report: By Customer",gY="TOTAL SALES",vY="Sales Report: By Item",yY="TAX REPORT",bY="TOTAL TAX",kY="Tax Types",wY="Expenses",DY="Bill to,",xY="Ship to,",SY="Received from:",PY="Tax",EY={navigation:vK,general:yK,dashboard:bK,tax_types:kK,global_search:wK,company_switcher:DK,dateRange:xK,customers:SK,items:PK,estimates:EK,invoices:zK,recurring_invoices:AK,payments:CK,expenses:TK,login:jK,modules:NK,users:IK,reports:FK,settings:RK,wizard:OK,validation:MK,errors:$K,pdf_estimate_label:LK,pdf_estimate_number:BK,pdf_estimate_date:UK,pdf_estimate_expire_date:VK,pdf_invoice_label:qK,pdf_invoice_number:WK,pdf_invoice_date:HK,pdf_invoice_due_date:KK,pdf_notes:YK,pdf_items_label:ZK,pdf_quantity_label:GK,pdf_price_label:QK,pdf_discount_label:JK,pdf_amount_label:XK,pdf_subtotal:eY,pdf_total:tY,pdf_payment_label:aY,pdf_payment_receipt_label:nY,pdf_payment_date:iY,pdf_payment_number:oY,pdf_payment_mode:sY,pdf_payment_amount_received_label:rY,pdf_expense_report_label:lY,pdf_total_expenses_label:cY,pdf_profit_loss_label:dY,pdf_sales_customers_label:uY,pdf_sales_items_label:_Y,pdf_tax_summery_label:mY,pdf_income_label:pY,pdf_net_profit_label:fY,pdf_customer_sales_report:hY,pdf_total_sales_label:gY,pdf_item_sales_label:vY,pdf_tax_report_label:yY,pdf_total_tax_label:bY,pdf_tax_types_label:kY,pdf_expenses_label:wY,pdf_bill_to:DY,pdf_ship_to:xY,pdf_received_from:SY,pdf_tax_label:PY},zY={dashboard:"Pulpit",customers:"Kontrahenci",items:"Pozycje",invoices:"Faktury","recurring-invoices":"Faktury cykliczne",expenses:"Wydatki",estimates:"Oferty",payments:"Płatności",reports:"Raporty",settings:"Ustawienia",logout:"Wyloguj",users:"Użytkownicy",modules:"Moduły"},AY={add_company:"Dodaj firmę",view_pdf:"Podgląd PDF",copy_pdf_url:"Kopiuj adres URL PDF",download_pdf:"Pobierz PDF",save:"Zapisz",create:"Stwórz",cancel:"Anuluj",update:"Zaktualizuj",deselect:"Odznacz",download:"Pobierz",from_date:"Od daty",to_date:"Do daty",from:"Od",to:"Do",ok:"Ok",yes:"Tak",no:"Nie",sort_by:"Sortuj według",ascending:"Rosnąco",descending:"Malejąco",subject:"Temat",body:"Treść",message:"Wiadomość",send:"Wyślij",preview:"Podgląd",go_back:"Wstecz",back_to_login:"Wróć do logowania?",home:"Strona główna",filter:"Filtr",delete:"Usuń",edit:"Edytuj",view:"Widok",add_new_item:"Dodaj nową pozycję",clear_all:"Wyczyść wszystko",showing:"Wyświetlanie",of:"z",actions:"Akcje",subtotal:"SUMA CZĘŚCIOWA",discount:"RABAT",fixed:"Stały",percentage:"Procentowo",tax:"PODATEK",total_amount:"ŁĄCZNA KWOTA",bill_to:"Płatnik",ship_to:"Wyślij do",due:"Należność",draft:"Wersja robocza",sent:"Wysłano",all:"Wszystko",select_all:"Zaznacz wszystkie",select_template:"Wybierz Szablon",choose_file:"Kliknij tutaj, aby wybrać plik",choose_template:"Wybierz szablon",choose:"Wybierz",remove:"Usuń",select_a_status:"Wybierz status",select_a_tax:"Wybierz podatek",search:"Wyszukaj",are_you_sure:"Czy jesteś pewien?",list_is_empty:"Lista jest pusta.",no_tax_found:"Nie znaleziono podatku!",four_zero_four:"404",you_got_lost:"Ups! Zgubiłeś się!",go_home:"Wróć do strony głównej",test_mail_conf:"Test konfiguracji poczty",send_mail_successfully:"Wiadomość wysłana pomyślnie",setting_updated:"Ustawienia zostały zaktualizowane",select_state:"Wybierz województwo",select_country:"Wybierz kraj",select_city:"Wybierz miasto",street_1:"Adres 1",street_2:"Adres 2",action_failed:"Niepowodzenie",retry:"Spróbuj ponownie",choose_note:"Wybierz notatkę",no_note_found:"Nie znaleziono notatki",insert_note:"Wstaw notatkę",copied_pdf_url_clipboard:"Skopiowano adres URL pliku PDF do schowka!",copied_url_clipboard:"Skopiowano adres URL do schowka!",docs:"Dokumentacja",do_you_wish_to_continue:"Czy chcesz kontynuować?",note:"Uwaga",pay_invoice:"Zapłać Fakturę",login_successfully:"Zalogowano pomyślnie!",logged_out_successfully:"Wylogowano pomyślnie",mark_as_default:"Mark as default"},CY={select_year:"Wybierz rok",cards:{due_amount:"Do zapłaty",customers:"Kontrahenci",invoices:"Faktury",estimates:"Oferty",payments:"Płatności"},chart_info:{total_sales:"Sprzedaż",total_receipts:"Przychody",total_expense:"Wydatki",net_income:"Dochód netto",year:"Wybierz rok"},monthly_chart:{title:"Sprzedaż i wydatki"},recent_invoices_card:{title:"Należne faktury",due_on:"Termin płatności",customer:"Kontrahent",amount_due:"Do zapłaty",actions:"Akcje",view_all:"Zobacz wszsytkie"},recent_estimate_card:{title:"Najnowsze oferty",date:"Data",customer:"Klient",amount_due:"Do zapłaty",actions:"Akcje",view_all:"Zobacz wszystkie"}},TY={name:"Nazwa",description:"Opis",percent:"Procent",compound_tax:"Podatek złożony"},jY={search:"Szukaj...",customers:"Klienci",users:"Użytkownicy",no_results_found:"Nie znaleziono wyników"},NY={label:"PRZEŁĄCZ FIRMĘ",no_results_found:"Nie Znaleziono Wyników",add_new_company:"Dodaj nową firmę",new_company:"Nowa firma",created_message:"Firma utworzona pomyślnie"},IY={today:"Dzisiaj",this_week:"Ten tydzień",this_month:"Ten miesiąc",this_quarter:"Ten kwartał",this_year:"Ten rok",previous_week:"Poprzedni Tydzień",previous_month:"Poprzedni miesiąc",previous_quarter:"Poprzedni kwartał",previous_year:"Poprzedni Rok",custom:"Niestandardowy"},FY={title:"Klienci",prefix:"Przedrostek",add_customer:"Dodaj klienta",contacts_list:"Lista klientów",name:"Nazwa",mail:"Poczta | Poczta",statement:"Komunikat",display_name:"Nazwa wyświetlana",primary_contact_name:"Główna osoba kontaktowa",contact_name:"Nazwa kontaktu",amount_due:"Do zapłaty",email:"E-mail",address:"Adres",phone:"Telefon",website:"Strona internetowa",overview:"Przegląd",invoice_prefix:"Przedrostek Faktury",estimate_prefix:"Przedrostek Oferty",payment_prefix:"Przedrostek Płatności",enable_portal:"Włącz portal",country:"Kraj",state:"Województwo",city:"Miasto",zip_code:"Kod pocztowy",added_on:"Dodano dnia",action:"Akcja",password:"Hasło",confirm_password:"Potwierdź Hasło",street_number:"Numer ulicy",primary_currency:"Waluta główna",description:"Opis",add_new_customer:"Dodaj nowego klienta",save_customer:"Zapisz klienta",update_customer:"Aktualizuj klienta",customer:"Klient | Klienci",new_customer:"Nowy klient",edit_customer:"Edytuj klienta",basic_info:"Podstawowe informacje",portal_access:"Panel Klienta",portal_access_text:"Czy chcesz zezwolić temu klientowi na logowanie do Panelu Klienta?",portal_access_url:"Adres URL Panelu Klienta",portal_access_url_help:"Skopiuj i prześlij powyższy adres URL do klienta w celu zapewnienia dostępu.",billing_address:"Adres do faktury",shipping_address:"Adres dostawy",copy_billing_address:"Kopiuj z rachunku",no_customers:"Brak klientów!",no_customers_found:"Nie znaleziono klientów!",no_contact:"Brak kontaktu",no_contact_name:"Brak nazwy kontaktu",list_of_customers:"Ta sekcja będzie zawierać listę klientów.",primary_display_name:"Główna nazwa wyświetlana",select_currency:"Wybierz walutę",select_a_customer:"Wybierz klienta",type_or_click:"Wpisz lub kliknij aby wybrać",new_transaction:"Nowa transakcja",no_matching_customers:"Brak pasujących klientów!",phone_number:"Numer telefonu",create_date:"Data utworzenia",confirm_delete:"Nie będziesz w stanie odzyskać tego klienta i wszystkich powiązanych faktur, ofert i płatności. | Nie będziesz w stanie odzyskać tych klientów i wszystkich powiązanych faktur, ofert i płatności.",created_message:"Klient został utworzony poprawnie",updated_message:"Klient został zaktualizowany poprawnie",address_updated_message:"Pomyślnie zaktualizowano informacje adresowe",deleted_message:"Klient został usunięty pomyślnie | Klienci zostali usunięci pomyślnie",edit_currency_not_allowed:"Nie można zmienić waluty po utworzeniu transakcji."},RY={title:"Pozycje",items_list:"Lista pozycji",name:"Nazwa",unit:"Jednostka",description:"Opis",added_on:"Dodano",price:"Cena",date_of_creation:"Data utworzenia",not_selected:"Nie wybrano elementów",action:"Akcja",add_item:"Dodaj pozycję",save_item:"Zapisz przedmiot",update_item:"Aktualizuj element",item:"Pozycja | Pozycje",add_new_item:"Dodaj nową pozycję",new_item:"Nowy produkt",edit_item:"Edytuj element",no_items:"Brak elementów!",list_of_items:"Ta sekcja będzie zawierać listę pozycji.",select_a_unit:"wybierz jednostkę",taxes:"Podatki",item_attached_message:"Nie można usunąć elementu, który jest już używany",confirm_delete:"Nie będziesz w stanie odzyskać tej pozycji | Nie będziesz w stanie odzyskać tych pozycji",created_message:"Element został pomyślnie zaktualizowany",updated_message:"Element został pomyślnie zaktualizowany",deleted_message:"Pozycja usunięta pomyślnie | Pozycje usunięte pomyślnie"},OY={title:"Oferty",accept_estimate:"Zaakceptuj Ofertę",reject_estimate:"Odrzuć Ofertę",estimate:"Oferta | Oferty",estimates_list:"Lista ofert",days:"{days} Dni",months:"{months} Miesiąc",years:"{years} Rok",all:"Wszystkie",paid:"Zapłacone",unpaid:"Niezapłacone",customer:"KLIENT",ref_no:"NR REF.",number:"NUMER",amount_due:"DO ZAPŁATY",partially_paid:"Częściowo opłacona",total:"Razem",discount:"Rabat",sub_total:"Podsumowanie",estimate_number:"Numer oferty",ref_number:"Numer referencyjny",contact:"Kontakt",add_item:"Dodaj pozycję",date:"Data",due_date:"Data ważności",expiry_date:"Data wygaśnięcia",status:"Status",add_tax:"Dodaj podatek",amount:"Kwota",action:"Akcja",notes:"Notatki",tax:"Podatek",estimate_template:"Szablon",convert_to_invoice:"Konwertuj do faktury",mark_as_sent:"Oznacz jako wysłane",send_estimate:"Wyślij ofertę",resend_estimate:"Wyślij ponownie ofertę",record_payment:"Zarejestruj płatność",add_estimate:"Dodaj ofertę",save_estimate:"Zapisz ofertę",confirm_conversion:"Ta oferta zostanie użyta do utworzenia nowej faktury.",conversion_message:"Faktura została utworzona pomyślnie",confirm_send_estimate:"Ta oferta zostanie wysłana pocztą elektroniczną do kontrahenta",confirm_mark_as_sent:"Ta oferta zostanie oznaczona jako wysłana",confirm_mark_as_accepted:"Ta oferta zostanie oznaczona jako zatwierdzona",confirm_mark_as_rejected:"Ta oferta zostanie oznaczona jako odrzucona",no_matching_estimates:"Brak pasujących ofert!",mark_as_sent_successfully:"Oferta oznaczona jako wysłana pomyślnie",send_estimate_successfully:"Kalkulacja wysłana pomyślnie",errors:{required:"To pole jest wymagane"},accepted:"Zaakceptowano",rejected:"Odrzucono",expired:"Wygasła",sent:"Wysłano",draft:"Wersja robocza",viewed:"Wyświetlona",declined:"Odrzucona",new_estimate:"Nowa oferta",add_new_estimate:"Dodaj nową ofertę",update_Estimate:"Zaktualizuj ofertę",edit_estimate:"Edytuj ofertę",items:"pozycje",Estimate:"Oferta | Oferty",add_new_tax:"Dodaj nowy podatek",no_estimates:"Nie ma jeszcze ofert!",list_of_estimates:"Ta sekcja będzie zawierała listę ofert.",mark_as_rejected:"Oznacz jako odrzuconą",mark_as_accepted:"Oznacz jako zaakceptowaną",marked_as_accepted_message:"Oferty oznaczone jako zaakceptowane",marked_as_rejected_message:"Oferty oznaczone jako odrzucone",confirm_delete:"Nie będziesz w stanie odzyskać tej oferty | Nie będziesz w stanie odzyskać tych ofert",created_message:"Oferta utworzona pomyślnie",updated_message:"Oferta zaktualizowana pomyślnie",deleted_message:"Oferta usunięta pomyślnie | Oferty usunięte pomyślnie",something_went_wrong:"coś poszło nie tak",item:{title:"Tytuł pozycji",description:"Opis",quantity:"Ilość",price:"Cena",discount:"Rabat",total:"Razem",total_discount:"Rabat łącznie",sub_total:"Podsumowanie",tax:"Podatek",amount:"Kwota",select_an_item:"Wpisz lub kliknij aby wybrać element",type_item_description:"Opis pozycji (opcjonalnie)"},mark_as_default_estimate_template_description:"If enabled, the selected template will be automatically selected for new estimates."},MY={title:"Faktury",download:"Pobierz",pay_invoice:"Zapłać Fakturę",invoices_list:"Lista faktur",invoice_information:"Informacje o Fakturze",days:"{days} Dni",months:"{months} Miesiąc",years:"{years} Rok",all:"Wszystko",paid:"Zapłacono",unpaid:"Nie zapłacono",viewed:"Przejrzane",overdue:"Zaległe",completed:"Ukończone",customer:"KLIENT",paid_status:"STATUS PŁATNOŚCI",ref_no:"NR REF.",number:"NUMER",amount_due:"DO ZAPŁATY",partially_paid:"Częściowo opłacona",total:"Razem",discount:"Rabat",sub_total:"Podsumowanie",invoice:"Faktura | Faktury",invoice_number:"Numer faktury",ref_number:"Numer referencyjny",contact:"Kontakt",add_item:"Dodaj pozycję",date:"Data",due_date:"Termin płatności",status:"Status",add_tax:"Dodaj podatek",amount:"Kwota",action:"Akcja",notes:"Notatki",view:"Widok",send_invoice:"Wyślij fakturę",resend_invoice:"Wyślij fakturę ponownie",invoice_template:"Szablon faktury",conversion_message:"Faktura sklonowana pomyślnie",template:"Szablon",mark_as_sent:"Oznacz jako wysłane",confirm_send_invoice:"Ta faktura zostanie wysłana pocztą elektroniczną do kontrahenta",invoice_mark_as_sent:"Ta faktura zostanie oznaczona jako wysłana",confirm_mark_as_accepted:"Ta faktura zostanie oznaczona jako Zaakceptowana",confirm_mark_as_rejected:"Ta faktura zostanie oznaczona jako Odrzucona",confirm_send:"Ta faktura zostanie wysłana pocztą elektroniczną do kontrahenta",invoice_date:"Data faktury",record_payment:"Zarejestruj płatność",add_new_invoice:"Dodaj nową fakturę",update_expense:"Zaktualizuj wydatki",edit_invoice:"Edytuj fakturę",new_invoice:"Nowa faktura",save_invoice:"Zapisz fakturę",update_invoice:"Zaktualizuj fakturę",add_new_tax:"Dodaj nowy podatek",no_invoices:"Brak faktur!",mark_as_rejected:"Oznacz jako odrzuconą",mark_as_accepted:"Oznacz jako zaakceptowaną",list_of_invoices:"Ta sekcja będzie zawierać listę faktur.",select_invoice:"Wybierz fakturę",no_matching_invoices:"Brak pasujących faktur!",mark_as_sent_successfully:"Faktura oznaczona jako wysłana pomyślnie",invoice_sent_successfully:"Faktura wysłana pomyślnie",cloned_successfully:"Faktura sklonowana pomyślnie",clone_invoice:"Sklonuj fakturę",confirm_clone:"Ta faktura zostanie sklonowana do nowej faktury",item:{title:"Tytuł pozycji",description:"Opis",quantity:"Ilość",price:"Cena",discount:"Rabat",total:"Razem",total_discount:"Rabat łącznie",sub_total:"Podsumowanie",tax:"Podatek",amount:"Kwota",select_an_item:"Wpisz lub kliknij aby wybrać element",type_item_description:"Opis pozycji (opcjonalnie)"},payment_attached_message:"Jedna z wybranych faktur ma dołączoną płatność. Upewnij się, że najpierw usuniesz załączone płatności, aby kontynuować usuwanie",confirm_delete:"Nie będziesz w stanie odzyskać tej faktury | Nie będziesz w stanie odzyskać tych faktur",created_message:"Faktura została utworzona pomyślnie",updated_message:"Faktura została pomyślnie zaktualizowana",deleted_message:"Faktura usunięta pomyślnie | Faktury usunięte pomyślnie",marked_as_sent_message:"Faktura oznaczona jako wysłana pomyślnie",something_went_wrong:"coś poszło nie tak",invalid_due_amount_message:"Całkowita kwota faktury nie może być mniejsza niż całkowita kwota zapłacona za tę fakturę. Proszę zaktualizować fakturę lub usunąć powiązane płatności, aby kontynuować.",mark_as_default_invoice_template_description:"If enabled, the selected template will be automatically selected for new invoices."},$Y={title:"Faktury cykliczne",invoices_list:"Lista Faktur Cyklicznych",days:"{days} Dni",months:"{months} Miesięcy",years:"{years} Lat",all:"Wszystkie",paid:"Zapłacone",unpaid:"Niezapłacone",viewed:"Przeglądane",overdue:"Zaległe",active:"Aktywne",completed:"Ukończone",customer:"KLIENT",paid_status:"STATUS PŁATNOŚCI",ref_no:"NR REF.",number:"NUMER",amount_due:"DO ZAPŁATY",partially_paid:"Częściowo Opłacona",total:"Razem",discount:"Rabat",sub_total:"Suma Pośrednia",invoice:"Faktura Cykliczna | Faktury Cykliczne",invoice_number:"Numer Faktury Cyklicznej",next_invoice_date:"Data następnej Faktury",ref_number:"Numer ref.",contact:"Kontakt",add_item:"Dodaj pozycję",date:"Data",limit_by:"Ogranicz przez",limit_date:"Data ostateczna",limit_count:"Limit ilości",count:"Liczba",status:"Status",select_a_status:"Wybierz status",working:"Pracuję",on_hold:"Wstrzymane",complete:"Ukończone",add_tax:"Dodaj podatek",amount:"Kwota",action:"Akcja",notes:"Notatki",view:"Podgląd",basic_info:"Podstawowe informacje",send_invoice:"Wyślij Fakturę Cykliczną",auto_send:"Automatyczna Wysyłka",resend_invoice:"Wyślij ponownie Fakturę Cykliczną",invoice_template:"Szablon Faktury Cyklicznej",conversion_message:"Faktura Cykliczna sklonowana pomyślnie",template:"Szablon",mark_as_sent:"Oznacz jako wysłane",confirm_send_invoice:"Ta faktura cykliczna zostanie wysłana pocztą elektroniczną do klienta",invoice_mark_as_sent:"Ta faktura cykliczna zostanie oznaczona jako wysłana",confirm_send:"Ta faktura cykliczna zostanie wysłana pocztą elektroniczną do klienta",starts_at:"Data wystawienia",due_date:"Termin płatności faktury",record_payment:"Zarejestruj płatność",add_new_invoice:"Dodaj nową fakturę cykliczną",update_expense:"Zaktualizuj wydatek",edit_invoice:"Edytuj fakturę cykliczną",new_invoice:"Nowa Faktura Cykliczna",send_automatically:"Wysyłaj automatycznie",send_automatically_desc:"Włącz to, jeśli chcesz automatycznie wysłać fakturę do klienta po jej utworzeniu.",save_invoice:"Zapisz Fakturę Cykliczną",update_invoice:"Zaktualizuj Fakturę Cykliczną",add_new_tax:"Dodaj Nowy Podatek",no_invoices:"Brak faktur cyklicznych!",mark_as_rejected:"Oznacz jako odrzucona",mark_as_accepted:"Oznacz jako zaakceptowana",list_of_invoices:"Ta sekcja będzie zawierać listę faktur cyklicznych.",select_invoice:"Wybierz fakturę",no_matching_invoices:"Brak pasujących faktur cyklicznych!",mark_as_sent_successfully:"Faktura Cykliczna oznaczona jako wysłana pomyślnie",invoice_sent_successfully:"Faktura Cykliczna wysłana pomyślnie",cloned_successfully:"Faktura Cykliczna sklonowana pomyślnie",clone_invoice:"Klonuj Fakturę Cykliczną",confirm_clone:"Ta faktura cykliczna zostanie sklonowana do nowej faktury cyklicznej",add_customer_email:"Please add an email address for this customer to send invoices automatically.",item:{title:"Tytuł pozycji",description:"Opis",quantity:"Ilość",price:"Cena",discount:"Rabat",total:"Razem",total_discount:"Rabat łącznie",sub_total:"Podsumowanie",tax:"Podatek",amount:"Kwota",select_an_item:"Wpisz lub kliknij aby wybrać element",type_item_description:"Opis pozycji (opcjonalnie)"},frequency:{title:"Częstotliwość",select_frequency:"Wybierz częstotliwość",minute:"Minuta",hour:"Godzina",day_month:"Dzień miesiąca",month:"Miesiąc",day_week:"Dzień tygodnia"},confirm_delete:"Nie będziesz w stanie odzyskać tej faktury | Nie będziesz w stanie odzyskać tych faktur",created_message:"Faktura Cykliczna utworzona pomyślnie",updated_message:"Faktura Cykliczna zaktualizowana pomyślnie",deleted_message:"Faktura Cykliczna usunięta pomyślnie | Faktury Cykliczne usunięte pomyślnie",marked_as_sent_message:"Faktura Cykliczna oznaczona jako wysłana pomyślnie",user_email_does_not_exist:"E-mail użytkownika nie istnieje",something_went_wrong:"coś poszło nie tak",invalid_due_amount_message:"Całkowita kwota faktury cyklicznej nie może być mniejsza niż całkowita kwota zapłacona za tę fakturę cykliczną. Proszę zaktualizować fakturę lub usunąć powiązane płatności, aby kontynuować."},LY={title:"Płatności",payments_list:"Lista płatności",record_payment:"Zarejestruj płatność",customer:"Kontrahent",date:"Data",amount:"Kwota",action:"Akcja",payment_number:"Numer płatności",payment_mode:"Metoda płatności",invoice:"Faktura",note:"Notatka",add_payment:"Dodaj płatność",new_payment:"Nowa płatność",edit_payment:"Edytuj płatność",view_payment:"Wyświetl płatność",add_new_payment:"Dodaj nową płatność",send_payment_receipt:"Wyślij potwierdzenie płatności",send_payment:"Wyślij płatność",save_payment:"Zapisz płatność",update_payment:"Zaktualizuj płatność",payment:"Płatność | Płatności",no_payments:"Nie ma jeszcze płatności!",not_selected:"Nie wybrano",no_invoice:"Brak faktury",no_matching_payments:"Brak pasujących płatności!",list_of_payments:"Ta sekcja będzie zawierać listę płatności.",select_payment_mode:"Wybierz sposób płatności",confirm_mark_as_sent:"Ta oferta zostanie oznaczona jako wysłana",confirm_send_payment:"Ta płatność zostanie wysłana e-mailem do kontrahenta",send_payment_successfully:"Płatność wysłana pomyślnie",something_went_wrong:"coś poszło nie tak",confirm_delete:"Nie będziesz w stanie odzyskać tej płatności | Nie będziesz w stanie odzyskać tych płatności",created_message:"Płatność została pomyślnie utworzona",updated_message:"Płatność została pomyślnie zaktualizowana",deleted_message:"Płatność usunięta pomyślnie | Płatności usunięte pomyślnie",invalid_amount_message:"Kwota płatności jest nieprawidłowa"},BY={title:"Wydatki",expenses_list:"Lista wydatków",select_a_customer:"Wybierz kontrahenta",expense_title:"Tytuł",customer:"Kontrahent",currency:"Waluta",contact:"Kontakt",category:"Kategoria",from_date:"Od daty",to_date:"Do daty",expense_date:"Data",description:"Opis",receipt:"Potwierdzenie",amount:"Kwota",action:"Akcja",not_selected:"Nie wybrano",note:"Notatka",category_id:"Identyfikator kategorii",date:"Data",add_expense:"Dodaj wydatek",add_new_expense:"Dodaj nowy wydatek",save_expense:"Zapisz wydatek",update_expense:"Zaktualizuj wydatek",download_receipt:"Pobierz potwierdzenie wpłaty",edit_expense:"Edytuj wydatek",new_expense:"Nowy wydatek",expense:"Wydatek | Wydatki",no_expenses:"Nie ma jeszcze wydatków!",list_of_expenses:"Ta sekcja będzie zawierała listę wydatków.",confirm_delete:"Nie będziesz w stanie odzyskać tego wydatku | Nie będziesz w stanie odzyskać tych wydatków",created_message:"Wydatek utworzony pomyślnie",updated_message:"Wydatek zaktualizowany pomyślnie",deleted_message:"Wydatek usunięty pomyślnie | Wydatki usunięte pomyślnie",categories:{categories_list:"Lista kategorii",title:"Tytuł",name:"Nazwa",description:"Opis",amount:"Kwota",actions:"Akcje",add_category:"Dodaj kategorię",new_category:"Nowa kategoria",category:"Kategoria | Kategorie",select_a_category:"Wybierz kategorię"}},UY={email:"E-mail",password:"Hasło",forgot_password:"Nie pamiętasz hasła?",or_signIn_with:"lub zaloguj się przez",login:"Logowanie",register:"Rejestracja",reset_password:"Resetuj hasło",password_reset_successfully:"Hasło zostało pomyślnie zresetowane",enter_email:"Wprowadź adres e-mail",enter_password:"Wprowadź hasło",retype_password:"Wprowadź hasło ponownie"},VY={buy_now:"Kup teraz",install:"Instaluj",price:"Cena",download_zip_file:"Pobierz plik ZIP",unzipping_package:"Rozpakowywanie pakietu",copying_files:"Kopiowanie plików",deleting_files:"Usuwanie nieużywanych plików",completing_installation:"Kończenie instalacji",update_failed:"Aktualizacja nie powiodła się",install_success:"Pomyślnie zainstalowano Moduł!",customer_reviews:"Opinie",license:"Licencja",faq:"Najczęściej zadawane pytania (FAQ)",monthly:"Miesięcznie",yearly:"Rocznie",updated:"Zaktualizowano",version:"Wersja",disable:"Wyłacz",module_disabled:"Moduł Wyłączony",enable:"Włącz",module_enabled:"Moduł Włączony",update_to:"Aktualizuj do",module_updated:"Moduł zaktualizowany pomyślnie!",title:"Moduły",module:"Moduł | Moduły",api_token:"Token API",invalid_api_token:"Nieprawidłowy token API.",other_modules:"Pozostałe Moduły",view_all:"Zobacz Wszystkie",no_reviews_found:"Brak opinii dla tego Modułu!",module_not_purchased:"Moduł niezakupiony",module_not_found:"Nie znaleziono modułu",version_not_supported:"Ta wersja modułu nie obsługuje bieżącej wersji Aplikacji",last_updated:"Ostatnio aktualizowany",connect_installation:"Połącz swoją instalację",api_token_description:"Zaloguj się do {url} i podłącz tę instalację wprowadzając token API. Zakupione moduły pojawią się tutaj po nawiązaniu połączenia.",view_module:"Zobacz moduł",update_available:"Aktualizacja Dostępna",purchased:"Zakupiono",installed:"Zainstalowano",no_modules_installed:"Brak zainstalowanych modułów!",disable_warning:"Wszystkie ustawienia dla tego konkretnego zostaną przywrócone.",what_you_get:"Co otrzymasz"},qY={title:"Użytkownicy",users_list:"Lista użytkowników",name:"Nazwa",description:"Opis",added_on:"Dodano dnia",date_of_creation:"Data utworzenia",action:"Akcja",add_user:"Dodaj użytkownika",save_user:"Zapisz użytkownika",update_user:"Zaktualizuj użytkownika",user:"Użytkownik | Użytkownicy",add_new_user:"Dodaj nowego użytkownika",new_user:"Nowy użytkownik",edit_user:"Edytuj użytkownika",no_users:"Brak użytkowników!",list_of_users:"Ta sekcja będzie zawierała listę użytkowników.",email:"Email",phone:"Telefon",password:"Hasło",user_attached_message:"Nie można usunąć elementu, który jest już w użyciu",confirm_delete:"Nie będziesz w stanie odzyskać tego użytkownika | Nie będziesz w stanie odzyskać tych użytkowników",created_message:"Użytkownik został utworzony pomyślnie",updated_message:"Użytkownik został zaktualizowany pomyślnie",deleted_message:"Użytkownik usunięty pomyślnie | Użytkownicy usunięci pomyślnie",select_company_role:"Wybierz Rolę dla {company}",companies:"Firmy"},WY={title:"Raport",from_date:"Od daty",to_date:"Do daty",status:"Status",paid:"Zapłacono",unpaid:"Nie zapłacono",download_pdf:"Pobierz plik PDF",view_pdf:"Podgląd PDF",update_report:"Aktualizuj raport",report:"Raport | Raporty",profit_loss:{profit_loss:"Zyski i straty",to_date:"Do daty",from_date:"Od daty",date_range:"Wybierz zakres dat"},sales:{sales:"Sprzedaż",date_range:"Wybierz zakres dat",to_date:"Do daty",from_date:"Od daty",report_type:"Typ raportu"},taxes:{taxes:"Podatki",to_date:"Do daty",from_date:"Od daty",date_range:"Wybierz zakres dat"},errors:{required:"To pole jest wymagane"},invoices:{invoice:"Faktura",invoice_date:"Data faktury",due_date:"Termin płatności",amount:"Kwota",contact_name:"Nazwa kontaktu",status:"Status"},estimates:{estimate:"Oferta",estimate_date:"Data oferty",due_date:"Data ważności",estimate_number:"Numer oferty",ref_number:"Numer referencyjny",amount:"Kwota",contact_name:"Nazwa kontaktu",status:"Status"},expenses:{expenses:"Wydatki",category:"Kategoria",date:"Data",amount:"Kwota",to_date:"Do daty",from_date:"Od daty",date_range:"Wybierz zakres dat"}},HY={menu_title:{account_settings:"Ustawienia konta",company_information:"Informacje o firmie",customization:"Dostosowywanie",preferences:"Opcje",notifications:"Powiadomienia",tax_types:"Rodzaje podatku",expense_category:"Kategorie wydatku",update_app:"Aktualizuj aplikację",backup:"Kopia zapasowa",file_disk:"Dysk plików",custom_fields:"Pola niestandardowe",payment_modes:"Rodzaje płatności",notes:"Notatki",exchange_rate:"Kurs wymiany",address_information:"Informacje Adresowe"},address_information:{section_description:" Możesz zaktualizować informacje o adresie za pomocą poniższego formularza."},title:"Ustawienia",setting:"Ustawienia | Ustawienia",general:"Ogólne",language:"Język",primary_currency:"Waluta główna",timezone:"Strefa czasowa",date_format:"Format daty",currencies:{title:"Waluty",currency:"Waluta | Waluty",currencies_list:"Lista walut",select_currency:"Wybierz walutę",name:"Nazwa",code:"Kod",symbol:"Symbol",precision:"Dokładność",thousand_separator:"Separator tysięcy",decimal_separator:"Separator dziesiętny",position:"Pozycja",position_of_symbol:"Położenie symbolu",right:"Do prawej",left:"Do lewej",action:"Akcja",add_currency:"Dodaj walutę"},mail:{host:"Adres hosta poczty",port:"Port poczty",driver:"Sterownik poczty",secret:"Tajny klucz",mailgun_secret:"Mailgun Secret",mailgun_domain:"Domena",mailgun_endpoint:"Punkt dostępowy Mailgun",ses_secret:"Tajny klucz SES",ses_key:"Klucz SES",password:"Hasło poczty",username:"Nazwa użytkownika poczty",mail_config:"Konfiguracja poczty",from_name:"Nazwa nadawcy",from_mail:"Adres e-mail nadawcy",encryption:"Szyfrowanie poczty",mail_config_desc:"Poniżej znajduje się formularz konfiguracji sterownika poczty e-mail do wysyłania wiadomości e-mail z aplikacji. Możesz również skonfigurować zewnętrznych dostawców takich jak Sendgrid, SES itp."},pdf:{title:"Ustawienia PDF",footer_text:"Teks stopki",pdf_layout:"Szablon PDF"},company_info:{company_info:"Dane firmy",company_name:"Nazwa firmy",company_logo:"Logo firmy",section_description:"Informacje o Twojej firmie, które będą wyświetlane na fakturach, ofertach i innych dokumentach stworzonych przez InvoiceShelf.",phone:"Telefon",country:"Kraj",state:"Województwo",city:"Miasto",address:"Adres",zip:"Kod pocztowy",save:"Zapisz",delete:"Usuń",updated_message:"Informacje o firmie zostały pomyślnie zaktualizowane",delete_company:"Usuń firmę",delete_company_description:"Po usunięciu firmy stracisz na stałe wszystkie dane i pliki z nią powiązane.",are_you_absolutely_sure:"Czy jesteś absolutnie pewien?",delete_company_modal_desc:"Tej akcji nie można cofnąć. Spowoduje to trwałe usunięcie {company} i wszystkich powiązanych z nią danych.",delete_company_modal_label:"Wpisz {company} aby potwierdzić"},custom_fields:{title:"Pola niestandardowe",section_description:"Dostosuj swoje faktury, oferty i wpływy płatności własnymi polami. Upewnij się, że używasz poniższych pól w formatach adresowych na stronie ustawień dostosowywania.",add_custom_field:"Dodaj pole niestandardowe",edit_custom_field:"Edytuj pole niestandardowe",field_name:"Nazwa pola",label:"Etykieta",type:"Typ",name:"Nazwa",slug:"Przyjazny link",required:"Wymagane",placeholder:"Symbol zastępczy",help_text:"Tekst pomocy",default_value:"Wartość domyślna",prefix:"Prefiks",starting_number:"Numer początkowy",model:"Model",help_text_description:"Wprowadź jakiś tekst, aby pomóc użytkownikom zrozumieć cel tego pola niestandardowego.",suffix:"Sufiks",yes:"Tak",no:"Nie",order:"Zamówienie",custom_field_confirm_delete:"Nie będziesz w stanie odzyskać tego niestandardowego pola",already_in_use:"Pole niestandardowe jest już w użyciu",deleted_message:"Pole niestandardowe zostało usunięte pomyślnie",options:"opcje",add_option:"Dodaj opcje",add_another_option:"Dodaj inną opcję",sort_in_alphabetical_order:"Sortuj według kolejności alfabetycznej",add_options_in_bulk:"Dodaj opcje zbiorcze",use_predefined_options:"Użyj predefiniowanych opcji",select_custom_date:"Wybierz niestandardową datę",select_relative_date:"Wybierz datę względną",ticked_by_default:"Zaznaczone domyślnie",updated_message:"Pole niestandardowe zostało zaktualizowane pomyślnie",added_message:"Pole niestandardowe zostało dodane pomyślnie",press_enter_to_add:"Naciśnij Enter, aby dodać nową opcję",model_in_use:"Nie można zaktualizować modelu dla pól, które są już używane.",type_in_use:"Nie można zaktualizować typu dla pól, które są już używane."},customization:{customization:"dostosowywanie",updated_message:"Informacje o firmie zostały pomyślnie zaktualizowane",save:"Zapisz",insert_fields:"Wstaw pola",learn_custom_format:"Dowiedz się, jak używać niestandardowego formatu",add_new_component:"Dodaj składnik",component:"Składnik",Parameter:"Parametr",series:"Serie",series_description:"Aby ustawić statyczny przedrostek / przyrostek, taki jak 'INV' dla całej firmy. Obsługiwana długość do 6 znaków.",series_param_label:"Wartość serii",delimiter:"Separator",delimiter_description:"Pojedynczy znak do określenia granicy pomiędzy 2 oddzielnymi składnikami. Domyślnie ustawiony na -",delimiter_param_label:"Wartość separatora",date_format:"Format daty",date_format_description:"Pole daty i czasu lokalnego, które akceptuje parametr formatu. Domyślny format: 'Y' renderuje bieżący rok.",date_format_param_label:"Format",sequence:"Sekwencja",sequence_description:"Ciągła sekwencja numerów w firmie. Możesz określić długość podanego parametru.",sequence_param_label:"Długość sekwencji",customer_series:"Seria klientów",customer_series_description:"Aby ustawić inny przedrostek / przyrostek dla każdego klienta.",customer_sequence:"Sekwencja Klienta",customer_sequence_description:"Ciągła sekwencja numerów dla każdego klienta.",customer_sequence_param_label:"Długość sekwencji",random_sequence:"Losowa sekwencja",random_sequence_description:"Losowy ciąg alfanumeryczny. Możesz określić długość podanego parametru.",random_sequence_param_label:"Długość sekwencji",invoices:{title:"Faktury",invoice_number_format:"Format Numer Faktury",invoice_number_format_description:"Dostosuj sposób generowania numeru faktury podczas tworzenia nowej faktury.",preview_invoice_number:"Podgląd Numer faktury",due_date:"Termin płatności",due_date_description:"Określ, w jaki sposób termin płatności jest ustawiany automatycznie podczas tworzenia faktury.",due_date_days:"Faktura do zapłaty po dniach",set_due_date_automatically:"Ustaw termin płatności automatycznie",set_due_date_automatically_description:"Włącz tę opcję, jeśli chcesz ustawić termin płatności automatycznie podczas tworzenia nowej faktury.",default_formats:"Formaty domyślne",default_formats_description:"Poniżej podane formaty są używane do automatycznego wypełniania pól przy tworzeniu faktury.",default_invoice_email_body:"Domyślny nagłówek e-maila faktury",company_address_format:"Format adresu firmy",shipping_address_format:"Format adresu dostawy",billing_address_format:"Format adresu do faktury",invoice_email_attachment:"Wyślij faktury jako załączniki",invoice_email_attachment_setting_description:"Włącz to, jeśli chcesz wysyłać faktury jako załącznik e-mail. Pamiętaj, że przycisk 'Zobacz fakturę' w wiadomościach e-mail nie będzie już wyświetlany, gdy jest włączony.",invoice_settings_updated:"Ustawienia faktury zostały pomyślnie zaktualizowane",retrospective_edits:"Edycje Wsteczne",allow:"Zezwól",disable_on_invoice_partial_paid:"Wyłącz po zarejestrowaniu płatności częściowej",disable_on_invoice_paid:"Wyłącz po zarejestrowaniu całej płatności",disable_on_invoice_sent:"Wyłącz po wysłaniu faktury",retrospective_edits_description:" Na podstawie prawa krajowego lub twoich preferencji, możesz ograniczyć użytkowników do edycji ukończonych faktur."},estimates:{title:"Oferty",estimate_number_format:"Format Numeru Oferty",estimate_number_format_description:"Dostosuj sposób generowania numeru oferty podczas tworzenia nowej oferty.",preview_estimate_number:"Podgląd Numeru Oferty",expiry_date:"Data wygaśnięcia",expiry_date_description:"Określ, w jaki sposób data wygaśnięcia jest ustawiana automatycznie podczas tworzenia oferty.",expiry_date_days:"Oferta wygasa po dniach",set_expiry_date_automatically:"Ustaw automatycznie datę wygaśnięcia",set_expiry_date_automatically_description:"Włącz to, jeśli chcesz ustawić automatycznie datę wygaśnięcia, gdy tworzysz nową ofertę.",default_formats:"Formaty domyślne",default_formats_description:"Poniżej podane formaty są używane do automatycznego wypełniania pól przy tworzeniu oferty.",default_estimate_email_body:"Domyślny nagłówek e-maila oferty",company_address_format:"Format adresu firmy",shipping_address_format:"Format adresu dostawy",billing_address_format:"Format adresu do faktury",estimate_email_attachment:"Wyślij oferty jako załączniki",estimate_email_attachment_setting_description:"Włącz to, jeśli chcesz wysyłać oferty jako załącznik e-mail. Pamiętaj, że przycisk 'Zobacz ofertę' w wiadomościach e-mail nie będzie już wyświetlany, gdy jest włączony.",estimate_settings_updated:"Ustawienia oferty zostały pomyślnie zaktualizowane",convert_estimate_options:"Akcja konwersji Oferty",convert_estimate_description:"Określ co dzieje się z ofertą po przekonwertowaniu jej w fakturę.",no_action:"Brak akcji",delete_estimate:"Usuń ofertę",mark_estimate_as_accepted:"Oznacz jako zaakceptowaną"},payments:{title:"Płatności",payment_number_format:"Format Numeru Płatności",payment_number_format_description:"Dostosuj sposób generowania numeru płatności podczas tworzenia nowej płatności.",preview_payment_number:"Podgląd Numeru Płatności",default_formats:"Formaty domyślne",default_formats_description:"Poniżej podane formaty są używane do automatycznego wypełniania pól przy tworzeniu płatności.",default_payment_email_body:"Domyślny nagłówek e-maila płatności",company_address_format:"Format adresu firmy",from_customer_address_format:"Format adresu nadawcy",payment_email_attachment:"Wyślij płatności jako załączniki",payment_email_attachment_setting_description:"Włącz to, jeśli chcesz wysyłać płatności jako załącznik e-mail. Pamiętaj, że przycisk 'Zobacz płatność' w wiadomościach e-mail nie będzie już wyświetlany, gdy jest włączony.",payment_settings_updated:"Ustawienia płatności zostały pomyślnie zaktualizowane"},items:{title:"Pozycje",units:"Jednostki",add_item_unit:"Dodaj jednostkę",edit_item_unit:"Edytuj jednostkę",unit_name:"Nazwa jednostki",item_unit_added:"Dodano jednostkę",item_unit_updated:"Zaktualizowano jednostkę",item_unit_confirm_delete:"Nie będziesz w stanie odzyskać tej jednostki przedmiotu",already_in_use:"Jednostka pozycji jest już w użyciu",deleted_message:"Jednostka pozycji została usunięta pomyślnie"},notes:{title:"Notatki",description:"Oszczędzaj czas, tworząc notatki i ponownie używając ich na fakturach, ofertach i płatnościach.",notes:"Notatki",type:"Typ",add_note:"Dodaj notatkę",add_new_note:"Dodaj nową notatkę",name:"Nazwa",edit_note:"Edytuj notatkę",note_added:"Notatka została dodana pomyślnie",note_updated:"Notatka zaktualizowana pomyślnie",note_confirm_delete:"Nie będziesz w stanie odzyskać tej notatki",already_in_use:"Notatka jest już w użyciu",deleted_message:"Notatka została usunięta pomyślnie"}},account_settings:{profile_picture:"Zdjęcie profilowe",name:"Nazwa",email:"Email",password:"Hasło",confirm_password:"Potwierdź hasło",account_settings:"Ustawienia konta",save:"Zapisz",section_description:"Możesz zaktualizować swoje imię, e-mail i hasło używając poniższego formularza.",updated_message:"Ustawienia konta zostały pomyślnie zaktualizowane"},user_profile:{name:"Nazwa",email:"Email",password:"Hasło",confirm_password:"Potwierdź hasło"},notification:{title:"Powiadomienie",email:"Wyślij powiadomienie do",description:"Które powiadomienia e-mail chcesz otrzymywać kiedy coś się zmieni?",invoice_viewed:"Faktura wyświetlona",invoice_viewed_desc:"Kiedy klient wyświetli fakturę wysłaną za pośrednictwem kokpitu InvoiceShelfa.",estimate_viewed:"Oferta wyświetlona",estimate_viewed_desc:"Kiedy klient wyświetli ofertę wysłaną za pośrednictwem kokpitu InvoiceShelfa.",save:"Zapisz",email_save_message:"Wiadomość zapisana pomyślnie",please_enter_email:"Proszę wpisać adres e-mail"},roles:{title:"Role",description:"Zarządzaj rolami i uprawnieniami tej firmy",save:"Zapisz",add_new_role:"Dodaj nową Rolę",role_name:"Nazwa Roli",added_on:"Dodano",add_role:"Dodaj Rolę",edit_role:"Edytuj Rolę",name:"Nazwa",permission:"Uprawnienie | Uprawnienia",select_all:"Zaznacz Wszystko",none:"Żadne",confirm_delete:"Nie będziesz w stanie odzyskać tej Roli",created_message:"Rola utworzona pomyślnie",updated_message:"Rola pomyślnie zaktualizowana",deleted_message:"Rola pomyślnie usunięta",already_in_use:"Rola jest już w użyciu"},exchange_rate:{exchange_rate:"Kurs wymiany",title:"Napraw problemy wymiany walut",description:"Wprowadź kurs wymiany wszystkich walut wymienionych poniżej, aby pomóc Aplikacji we właściwym obliczeniu kwot w {currency}.",drivers:"Sterowniki",new_driver:"Dodaj nowego dostawcę",edit_driver:"Edytuj dostawcę",select_driver:"Wybierz sterownik",update:"wybierz kurs wymiany ",providers_description:"Skonfiguruj dostawców kursu wymiany walut, aby automatycznie pobierać najnowszy kurs wymiany walut.",key:"Klucz API",name:"Nazwa",driver:"Sterownik",is_default:"JEST DOMYŚLNY",currency:"Waluty",exchange_rate_confirm_delete:"Nie będziesz w stanie odzyskać tego sterownika",created_message:"Dostawca utworzony pomyślnie",updated_message:"Dostawca zaktualizowany pomyślnie",deleted_message:"Dostawca usunięty pomyślnie",error:" Nie można usunąć aktywnego sterownika",default_currency_error:"Ta waluta jest już używana w jednym z aktywnych dostawców",exchange_help_text:"Wprowadź kurs wymiany walut, aby przeliczyć z {currency} na {baseCurrency}",currency_freak:"Currency Freak",currency_layer:"Currency Layer",open_exchange_rate:"Open Exchange Rate",currency_converter:"Przelicznik walut",server:"Serwer",url:"Adres URL",active:"Aktywny",currency_help_text:"Ten dostawca będzie używany tylko dla wybranych walut",currency_in_used:"Następujące waluty są już aktywne u innego dostawcy. Usuń te waluty z wyboru, aby ponownie aktywować tego dostawcę."},tax_types:{title:"Rodzaje opodatkowania",add_tax:"Dodaj podatek",edit_tax:"Edytuj podatek",description:"Możesz dodawać lub usuwać podatki. InvoiceShelf obsługuje podatki od poszczególnych produktów, jak również na fakturze.",add_new_tax:"Dodaj nowy podatek",tax_settings:"Ustawienia podatku",tax_per_item:"Podatek na produkt",tax_name:"Nazwa podatku",compound_tax:"Podatek złożony",percent:"Procent",action:"Akcja",tax_setting_description:"Włącz to, jeśli chcesz dodać podatki do poszczególnych elementów faktury. Domyślnie podatki są dodawane bezpośrednio do całej faktury.",created_message:"Typ podatku został pomyślnie utworzony",updated_message:"Typ podatku został pomyślnie zaktualizowany",deleted_message:"Typ podatku został pomyślnie usunięty",confirm_delete:"Nie będziesz w stanie odzyskać tego typu podatku",already_in_use:"Ten podatek jest w użyciu"},payment_modes:{title:"Metody Płatności",description:"Sposoby transakcji dla płatności",add_payment_mode:"Dodaj metodę płatności",edit_payment_mode:"Edytuj metodę płatności",mode_name:"Nazwa metody",payment_mode_added:"Dodano metodę płatności",payment_mode_updated:"Zaktualizowano metodę płatności",payment_mode_confirm_delete:"Nie będziesz w stanie odzyskać tej metody płatności",payments_attached:"Ta metoda płatności jest już dołączona do płatności. Proszę usunąć załączone płatności, aby kontynuować usuwanie.",expenses_attached:"Ta metoda płatności jest już dołączona do wydatków. Proszę usunąć załączone wydatki, aby kontynuować usuwanie.",deleted_message:"Metoda płatności została pomyślnie usunięta"},expense_category:{title:"Kategorie wydatków",action:"Akcja",description:"Kategorie są wymagane do dodawania wpisów wydatków. Możesz dodać lub usunąć te kategorie zgodnie ze swoimi preferencjami.",add_new_category:"Dodaj nową kategorię",add_category:"Dodaj kategorię",edit_category:"Edytuj kategorię",category_name:"Nazwa kategorii",category_description:"Opis",created_message:"Kategoria wydatków została utworzona pomyślnie",deleted_message:"Kategoria wydatków została usunięta pomyślnie",updated_message:"Kategoria wydatków zaktualizowana pomyślnie",confirm_delete:"Nie będziesz w stanie odzyskać tej kategorii wydatków",already_in_use:"Kategoria jest już w użyciu"},preferences:{currency:"Waluta",default_language:"Domyślny język",time_zone:"Strefa czasowa",fiscal_year:"Rok finansowy",date_format:"Format daty",discount_setting:"Ustawienia rabatu",discount_per_item:"Rabat na produkt ",discount_setting_description:"Włącz to, jeśli chcesz dodać rabat do poszczególnych elementów faktury. Domyślnie rabat jest dodawany bezpośrednio do całej faktury.",expire_public_links:"Automatycznie wygasaj linki publiczne",expire_setting_description:"Określ czy chcesz wygaszać wszystkie linki wysłane przez aplikację w celu przeglądania faktur, ofert i płatności itp. po określonym czasie.",save:"Zapisz",preference:"Preferencje | Preferencje",general_settings:"Domyślne ustawienia systemu.",updated_message:"Preferencje pomyślnie zaktualizowane",select_language:"Wybierz język",select_time_zone:"Ustaw strefę czasową",select_date_format:"Wybierz format daty",select_financial_year:"Wybierz rok podatkowy",recurring_invoice_status:"Status Faktury Cyklicznej",create_status:"Utwórz status",active:"Aktywne",on_hold:"Wstrzymane",update_status:"Aktualizuj status",completed:"Ukończone",company_currency_unchangeable:"Nie można zmienić waluty firmy"},update_app:{title:"Aktualizuj aplikację",description:"Możesz łatwo zaktualizować InvoiceShelfa poprzez kliknięcie przycisku poniżej",check_update:"Sprawdź czy są dostępne nowe aktualizacje",avail_update:"Dostępna nowa aktualizacja",next_version:"Nowa wersja",requirements:"Wymagania",update:"Aktualizuj teraz",update_progress:"Aktualizacja w toku...",progress_text:"To zajmie tylko kilka minut. Proszę nie odświeżać ekranu ani zamykać okna przed zakończeniem aktualizacji",update_success:"Aplikacja została zaktualizowana! Proszę czekać, aż okno przeglądarki zostanie automatycznie przeładowane.",latest_message:"Brak dostępnych aktualizacji! Posiadasz najnowszą wersję.",current_version:"Aktualna wersja",download_zip_file:"Pobierz plik ZIP",unzipping_package:"Rozpakuj pakiet",copying_files:"Kopiowanie plików",deleting_files:"Usuwanie nieużywanych plików",running_migrations:"Uruchamianie migracji",finishing_update:"Kończenie aktualizacji",update_failed:"Aktualizacja nie powiodła się",update_failed_text:"Przepraszamy! Twoja aktualizacja nie powiodła się w kroku: {step}",update_warning:"Wszystkie pliki aplikacji i domyślne pliki szablonu zostaną nadpisane podczas aktualizacji aplikacji przy użyciu tego narzędzia. Przed aktualizacją wykonaj kopię zapasową szablonów i bazy danych."},backup:{title:"Kopia zapasowa | Kopie zapasowe",description:"Kopia zapasowa jest plikiem zipfile zawierającym wszystkie pliki w katalogach które podasz wraz z zrzutem bazy danych",new_backup:"Dodaj nową kopię zapasową",create_backup:"Utwórz kopię zapasową",select_backup_type:"Wybierz typ kopii zapasowej",backup_confirm_delete:"Nie będziesz w stanie odzyskać tej kopii zapasowej",path:"ścieżka",new_disk:"Nowy dysk",created_at:"utworzono w",size:"rozmiar",dropbox:"dropbox",local:"lokalny",healthy:"zdrowy",amount_of_backups:"liczba kopii zapasowych",newest_backups:"najnowsza kopia zapasowa",used_storage:"zużyta pamięć",select_disk:"Wybierz dysk",action:"Akcja",deleted_message:"Kopia zapasowa usunięta pomyślnie",created_message:"Kopia zapasowa utworzona pomyślnie",invalid_disk_credentials:"Nieprawidłowe dane uwierzytelniające wybranego dysku"},disk:{title:"Dysk plików | Dyski plików",description:"Domyślnie InvoiceShelf użyje twojego lokalnego dysku do zapisywania kopii zapasowych, awatara i innych plików obrazu. Możesz skonfigurować więcej niż jeden serwer dysku, taki jak DigitalOcean, S3 i Dropbox, zgodnie z Twoimi preferencjami.",created_at:"utworzono w",dropbox:"dropbox",name:"Nazwa",driver:"Sterownik",disk_type:"Typ",disk_name:"Nazwa dysku",new_disk:"Dodaj nowy dysk",filesystem_driver:"Sterownik systemu plików",local_driver:"lokalny sterownik",local_root:"główny katalog lokalny",public_driver:"Publiczny sterownik",public_root:"Publiczny główny katalog",public_url:"Publiczny URL",public_visibility:"Widoczność publiczna",media_driver:"Media Driver",media_root:"Media Root",aws_driver:"Sterownik AWS",aws_key:"Klucz AWS",aws_secret:"Tajny klucz AWS",aws_region:"Region AWS",aws_bucket:"Zasobnik AWS",aws_root:"Katalog główny AWS",do_spaces_type:"Typ Do Spaces",do_spaces_key:"Klucz Do Spaces",do_spaces_secret:"Tajny klucz Do Spaces",do_spaces_region:"Region Do Spaces",do_spaces_bucket:"Zasobnik Do Spaces",do_spaces_endpoint:"Punkt dostępowy Do Spaces",do_spaces_root:"Katalog główny Do Spaces",dropbox_type:"Typ Dropbox",dropbox_token:"Token Dropbox",dropbox_key:"Klucz Dropbox",dropbox_secret:"Tajny klucz Dropbox",dropbox_app:"Aplikacja Dropbox",dropbox_root:"Root Dropbox",default_driver:"Domyślny sterownik",is_default:"JEST DOMYŚLNY",set_default_disk:"Ustaw domyślny dysk",set_default_disk_confirm:"Ten dysk zostanie ustawiony jako domyślny, a wszystkie nowe pliki PDF zostaną zapisane na tym dysku",success_set_default_disk:"Dysk został pomyślnie ustawiony jako domyślny",save_pdf_to_disk:"Zapisz pliki PDF na dysku",disk_setting_description:" Włącz tę opcję, jeśli chcesz automatycznie zapisać kopię każdej faktury, oferty i potwierdzenia płatności PDF na swoim domyślnym dysku. Włączenie tej opcji spowoduje skrócenie czasu ładowania podczas przeglądania PDF.",select_disk:"Wybierz dysk",disk_settings:"Ustawienia dysku",confirm_delete:"Twoje istniejące pliki i foldery na określonym dysku nie zostaną zmienione, ale konfiguracja twojego dysku zostanie usunięta z InvoiceShelfa",action:"Akcja",edit_file_disk:"Edytuj dysk plków",success_create:"Dysk dodany pomyślnie",success_update:"Dysk zaktualizowany pomyślnie",error:"Błąd dodawania dysku",deleted_message:"Dysk plików został usunięty pomyślnie",disk_variables_save_successfully:"Dysk skonfigurowany pomyślnie",disk_variables_save_error:"Konfiguracja dysku nieudana.",invalid_disk_credentials:"Nieprawidłowe dane uwierzytelniające wybranego dysku"},taxations:{add_billing_address:"Wprowadź adres do faktury",add_shipping_address:"Wprowadź adres do wysyłki",add_company_address:"Wprowadź adres firmy",modal_description:"Poniższe informacje są wymagane do pobrania podatku od sprzedaży.",add_address:"Dodaj adres do pobierania podatku od sprzedaży.",address_placeholder:"Przykład: 123, Moja ulica",city_placeholder:"Przykład: Los Angeles",state_placeholder:"Przykład: CA",zip_placeholder:"Przykład: 90024",invalid_address:"Podaj poprawne dane adresowe."}},KY={account_info:"Informacje o koncie",account_info_desc:"Poniższe szczegóły zostaną użyte do utworzenia głównego konta administratora. Możesz także zmienić szczegóły w dowolnym momencie po zalogowaniu.",name:"Nazwa",email:"E-mail",password:"Hasło",confirm_password:"Potwierdź hasło",save_cont:"Zapisz i kontynuuj",company_info:"Informacje o firmie",company_info_desc:"Ta informacja będzie wyświetlana na fakturach. Pamiętaj, że możesz to później edytować na stronie ustawień.",company_name:"Nazwa firmy",company_logo:"Logo firmy",logo_preview:"Podgląd loga",preferences:"Preferencje",preferences_desc:"Domyślne preferencje dla systemu.",currency_set_alert:"Nie można później zmienić waluty firmy.",country:"Kraj",state:"Województwo",city:"Miasto",address:"Adres",street:"Ulica1 | Ulica2",phone:"Telefon",zip_code:"Kod pocztowy",go_back:"Wstecz",currency:"Waluta",language:"Język",time_zone:"Strefa czasowa",fiscal_year:"Rok finansowy",date_format:"Format daty",from_address:"Adres nadawcy",username:"Nazwa użytkownika",next:"Następny",continue:"Kontynuuj",skip:"Pomiń",database:{database:"Adres URL witryny i baza danych",connection:"Połączenie z bazą danych",host:"Host bazy danych",port:"Port bazy danych",password:"Hasło bazy danych",app_url:"Adres aplikacji",app_domain:"Domena aplikacji",username:"Nazwa użytkownika bazy danych",db_name:"Nazwa bazy danych",db_path:"Ścieżka do bazy danych",desc:"Utwórz bazę danych na swoim serwerze i ustaw dane logowania za pomocą poniższego formularza."},permissions:{permissions:"Uprawnienia",permission_confirm_title:"Czy na pewno chcesz kontynuować?",permission_confirm_desc:"Sprawdzanie uprawnień do katalogu nie powiodło się",permission_desc:"Poniżej znajduje się lista uprawnień folderów, które są wymagane do działania aplikacji. Jeśli sprawdzenie uprawnień nie powiedzie się, upewnij się, że zaktualizujesz uprawnienia folderu."},verify_domain:{title:"Weryfikacja domeny",desc:"InvoiceShelf używa uwierzytelniania opartego na sesji, które wymaga weryfikacji domeny dla celów bezpieczeństwa. Wprowadź domenę, na której będziesz mieć dostęp do swojej aplikacji internetowej.",app_domain:"Domena aplikacji",verify_now:"Potwierdź teraz",success:"Pomyślnie zweryfikowano domenę.",failed:"Weryfikacja domeny nie powiodła się. Podaj prawidłową nazwę domeny.",verify_and_continue:"Weryfikuj i kontynuuj"},mail:{host:"Adres hosta poczty",port:"Port poczty",driver:"Sposób wysyłania wiadomości e-mail",secret:"Tajny klucz",mailgun_secret:"Mailgun Secret",mailgun_domain:"Domena",mailgun_endpoint:"Punkt dostępowy Mailgun",ses_secret:"Tajny klucz SES",ses_key:"Klucz SES",password:"Hasło poczty",username:"Nazwa użytkownika poczty",mail_config:"Konfiguracja poczty",from_name:"Nazwa nadawcy",from_mail:"Adres e-mail nadawcy",encryption:"Szyfrowanie poczty",mail_config_desc:"Poniżej znajduje się formularz konfiguracji sterownika poczty e-mail do wysyłania wiadomości e-mail z aplikacji. Możesz również skonfigurować zewnętrznych dostawców takich jak Sendgrid, SES itp."},req:{system_req:"Wymagania systemowe",php_req_version:"Minimalna wersja Php (wymagana wersja {version})",check_req:"Sprawdź wymagania",system_req_desc:"InvoiceShelf posiada kilka wymagań serwera. Upewnij się, że Twój serwer ma wymaganą wersję php oraz wszystkie rozszerzenia wymienione poniżej."},errors:{migrate_failed:"Migracja nie powiodła się",database_variables_save_error:"Nie można zapisać konfiguracji do pliku .env. Proszę sprawdzić jego uprawnienia",mail_variables_save_error:"Konfiguracja email nie powiodła się.",connection_failed:"Błąd połączenia z bazą danych",database_should_be_empty:"Baza danych powinna być pusta"},success:{mail_variables_save_successfully:"Email został skonfigurowany pomyślnie",database_variables_save_successfully:"Baza danych została skonfigurowana poprawnie."}},YY={invalid_phone:"Nieprawidłowy numer telefonu",invalid_url:"Nieprawidłowy adres url (np. http://www.invoiceshelf.com)",invalid_domain_url:"Nieprawidłowy adres url (np. invoiceshelf.com)",required:"Pole jest wymagane",email_incorrect:"Niepoprawny email.",email_already_taken:"Ten adres e-mail jest już zajęty.",email_does_not_exist:"Użytkownik z podanym adresem email nie istnieje",item_unit_already_taken:"Ta nazwa jednostki została już zajęta",payment_mode_already_taken:"Ta nazwa trybu płatności została już zajęta",send_reset_link:"Wyślij link do resetowania hasła",not_yet:"Jeszcze nie? Wyślij ponownie",password_min_length:"Hasło musi zawierać co najmniej {count} znaków",name_min_length:"Nazwa użytkownika musi zawierać co najmniej {count} znaków.",prefix_min_length:"Przedrostek musi mieć co najmniej {count} liter.",enter_valid_tax_rate:"Wprowadź poprawną stawkę podatku",numbers_only:"Tylko liczby.",characters_only:"Tylko znaki.",password_incorrect:"Hasła muszą być identyczne",password_length:"Hasło musi zawierać {count} znaków.",qty_must_greater_than_zero:"Ilość musi być większa niż zero.",price_greater_than_zero:"Cena musi być większa niż zero.",payment_greater_than_zero:"Płatność musi być większa niż zero.",payment_greater_than_due_amount:"Wprowadzona płatność to więcej niż należna kwota tej faktury.",quantity_maxlength:"Ilość nie powinna być większa niż 20 cyfr.",price_maxlength:"Cena nie powinna być większa niż 20 cyfr.",price_minvalue:"Cena powinna być większa niż 0.",amount_maxlength:"Kwota nie powinna być większa niż 20 cyfr.",amount_minvalue:"Kwota powinna być większa niż 0.",discount_maxlength:"Rabat nie powinien być większy niż maksymalny rabat",description_maxlength:"Opis nie powinien przekraczać 65 000 znaków.",subject_maxlength:"Temat nie powinien być dłuższy niż 100 znaków.",message_maxlength:"Wiadomość nie powinna być dłuższa niż 255 znaków.",maximum_options_error:"Wybrano maksymalnie {max} opcji. Najpierw usuń wybraną opcję, aby wybrać inną.",notes_maxlength:"Notatki nie powinny być większe niż 65 000 znaków.",address_maxlength:"Adres nie powinien mieć więcej niż 255 znaków.",ref_number_maxlength:"Numer referencyjny nie może być dłuższy niż 255 znaków.",prefix_maxlength:"Prefiks nie powinien być dłuższy niż 5 znaków.",something_went_wrong:"coś poszło nie tak",number_length_minvalue:"Długość numeru powinna być większa niż 0",at_least_one_ability:"Wybierz co najmniej jedno Uprawnienie.",valid_driver_key:"Wprowadź prawidłowy klucz {driver}.",valid_exchange_rate:"Wprowadź prawidłowy kurs wymiany.",company_name_not_same:"Nazwa firmy musi się zgadzać z podaną nazwą."},ZY={starter_plan:"Ta funkcja jest dostępna w abonamencie Starter i wyższych!",invalid_provider_key:"Wprowadź poprawny klucz API dostawcy.",estimate_number_used:"Numer oferty jest już użyty.",invoice_number_used:"Numer faktury jest już użyty.",payment_attached:"Ta faktura ma już dołączoną płatność. Najpierw usuń załączone płatności, aby kontynuować usuwanie.",payment_number_used:"Numer płatności jest już użyty.",name_already_taken:"Nazwa jest już użyta.",receipt_does_not_exist:"Potwierdzenie nie istnieje.",customer_cannot_be_changed_after_payment_is_added:"Klient nie może być zmieniony po dodaniu płatności",invalid_credentials:"Nieprawidłowe dane.",not_allowed:"Niedozwolone",login_invalid_credentials:"Wprowadzone poświadczenia są nieprawidłowe.",enter_valid_cron_format:"Wprowadź prawidłowy format cron",email_could_not_be_sent:"Nie można wysłać wiadomości na ten adres e-mail.",invalid_address:"Wprowadź prawidłowy adres.",invalid_key:"Wprowadź prawidłowy klucz.",invalid_state:"Wprowadź poprawny stan/województwo.",invalid_city:"Wprowadź prawidłową nazwę miasta.",invalid_postal_code:"Wprowadź prawidłowy kod pocztowy.",invalid_format:"Wprowadź prawidłowy format ciągu.",api_error:"Serwer nie odpowiada.",feature_not_enabled:"Funkcja nie jest włączona.",request_limit_met:"Przekroczono limit żądania API.",address_incomplete:"Niekompletny adres"},GY="Oferta",QY="Numer oferty",JY="Data oferty",XY="Termin ważności",eZ="Faktura",tZ="Numer faktury",aZ="Data faktury",nZ="Termin",iZ="Notatki",oZ="Pozycje",sZ="Ilość",rZ="Cena",lZ="Rabat",cZ="Kwota",dZ="Suma częściowa",uZ="Razem",_Z="Płatność",mZ="POTWIERDZENIE PŁATNOŚCI",pZ="Data płatności",fZ="Numer płatności",hZ="Metoda płatności",gZ="Kwota otrzymana",vZ="SPRAWOZDANIE Z WYDATKÓW",yZ="WYDATKI OGÓŁEM",bZ="RAPORT ZYSKÓW I STRAT",kZ="Raport sprzedaży obsługi kontrahenta",wZ="Raport dotyczący przedmiotu sprzedaży",DZ="Raport podsumowania podatku",xZ="PRZYCHÓD",SZ="ZYSK NETTO",PZ="Raport sprzedaży: Według Kontrahenta",EZ="CAŁKOWITA SPRZEDAŻ",zZ="Raport sprzedaży: Według produktu",AZ="RAPORT PODATKOWY",CZ="CAŁKOWITY PODATEK",TZ="Rodzaje podatku",jZ="Wydatki",NZ="Wystawiono dla",IZ="Wysyłka do",FZ="Otrzymane od:",RZ="Podatek",OZ={navigation:zY,general:AY,dashboard:CY,tax_types:TY,global_search:jY,company_switcher:NY,dateRange:IY,customers:FY,items:RY,estimates:OY,invoices:MY,recurring_invoices:$Y,payments:LY,expenses:BY,login:UY,modules:VY,users:qY,reports:WY,settings:HY,wizard:KY,validation:YY,errors:ZY,pdf_estimate_label:GY,pdf_estimate_number:QY,pdf_estimate_date:JY,pdf_estimate_expire_date:XY,pdf_invoice_label:eZ,pdf_invoice_number:tZ,pdf_invoice_date:aZ,pdf_invoice_due_date:nZ,pdf_notes:iZ,pdf_items_label:oZ,pdf_quantity_label:sZ,pdf_price_label:rZ,pdf_discount_label:lZ,pdf_amount_label:cZ,pdf_subtotal:dZ,pdf_total:uZ,pdf_payment_label:_Z,pdf_payment_receipt_label:mZ,pdf_payment_date:pZ,pdf_payment_number:fZ,pdf_payment_mode:hZ,pdf_payment_amount_received_label:gZ,pdf_expense_report_label:vZ,pdf_total_expenses_label:yZ,pdf_profit_loss_label:bZ,pdf_sales_customers_label:kZ,pdf_sales_items_label:wZ,pdf_tax_summery_label:DZ,pdf_income_label:xZ,pdf_net_profit_label:SZ,pdf_customer_sales_report:PZ,pdf_total_sales_label:EZ,pdf_item_sales_label:zZ,pdf_tax_report_label:AZ,pdf_total_tax_label:CZ,pdf_tax_types_label:TZ,pdf_expenses_label:jZ,pdf_bill_to:NZ,pdf_ship_to:IZ,pdf_received_from:FZ,pdf_tax_label:RZ},MZ={dashboard:"Painel",customers:"Clientes",items:"Itens",invoices:"Faturas",expenses:"Despesas",estimates:"Orçamentos",payments:"Pagamentos",reports:"Relatórios",settings:"Configurações",logout:"Encerrar sessão"},$Z={view_pdf:"Ver PDF",download_pdf:"Baixar PDF",save:"Salvar",cancel:"Cancelar",update:"Atualizar",deselect:"Desmarcar",download:"Baixar",from_date:"A partir da Data",to_date:"Até a Data",from:"De",to:"Para",sort_by:"Ordenar por",ascending:"Crescente",descending:"Descendente",subject:"Sujeita",body:"Corpo",message:"Mensagem",go_back:"Voltar",back_to_login:"Voltar ao Login",home:"Home",filter:"Filtrar",delete:"Excluir",edit:"Editar",view:"Ver",add_new_item:"Adicionar novo item",clear_all:"Limpar tudo",showing:"Mostrando",of:"de",actions:"Ações",subtotal:"Total parcial",discount:"Desconto",fixed:"Fixado",percentage:"Porcentagem",tax:"Imposto",total_amount:"Quantidade Total",bill_to:"Cobrar a",ship_to:"Envie a",due:"Vencida",draft:"Rascunho",sent:"Enviado",all:"Todos",select_all:"Selecionar tudo",choose_file:"Escolha um arquivo.",choose_template:"Escolha um modelo",choose:"Escolher",remove:"Excluir",powered_by:"Distribuído por",bytefury:"Bytefury",select_a_status:"Selecione um status",select_a_tax:"Selecione um Imposto",search:"Buscar",are_you_sure:"Tem certeza?",list_is_empty:"Lista está vazia.",no_tax_found:"Imposto não encontrado!",four_zero_four:"404",you_got_lost:"Ops! Se perdeu!",go_home:"Ir para Home",test_mail_conf:"Testar configuração de email",send_mail_successfully:"Correio enviado com sucesso",setting_updated:"Configuração atualizada com sucesso",select_state:"Selecione Estado",select_country:"Selecionar pais",select_city:"Selecionar cidade",street_1:"Rua 1",street_2:"Rua # 2",action_failed:"Ação: Falhou",retry:"Atualização falhou"},LZ={select_year:"Selecione Ano",cards:{due_amount:"Montante devido",customers:"Clientes",invoices:"Faturas",estimates:"Orçamentos"},chart_info:{total_sales:"Vendas",total_receipts:"Receitas",total_expense:"Despesas",net_income:"Resultado líquido",year:"Selecione Ano"},monthly_chart:{title:"Vendas e Despesas"},recent_invoices_card:{title:"Faturas vencidas",due_on:"vencido em",customer:"Cliente",amount_due:"Valor Devido",actions:"Ações",view_all:"Ver todos"},recent_estimate_card:{title:"Orçamentos Recentes",date:"Data",customer:"Cliente",amount_due:"Valor Devido",actions:"Ações",view_all:"Ver todos"}},BZ={name:"Nome",description:"Descrição",percent:"Porcentagem",compound_tax:"Imposto compuesto"},UZ={title:"Clientes",add_customer:"Adicionar cliente",contacts_list:"Lista de clientes",name:"Nome",display_name:"Nome de exibição",primary_contact_name:"Nome do contato principal",contact_name:"Nome de Contato",amount_due:"Valor Devido",email:"Email",address:"Endereço",phone:"Telefone",website:"Site",country:"Pais",state:"Estado",city:"Cidade",zip_code:"Código postal",added_on:"Adicionado",action:"Ação",password:"Senha",street_number:"Número",primary_currency:"Moeda principal",add_new_customer:"Adicionar novo cliente",save_customer:"Salvar cliente",update_customer:"Atualizar cliente",customer:"Cliente | Clientes",new_customer:"Novo cliente",edit_customer:"Editar cliente",basic_info:"Informação basica",billing_address:"Endereço de cobrança",shipping_address:"Endereço de entrega",copy_billing_address:"Cópia de faturamento",no_customers:"Ainda não há clientes!",no_customers_found:"Clientes não encontrados!",no_contact:"No contact",no_contact_name:"No contact name",list_of_customers:"Esta seção conterá a lista de clientes.",primary_display_name:"Nome de exibição principal",select_currency:"Selecione o tipo de moeda",select_a_customer:"Selecione um cliente",type_or_click:"Digite ou clique para selecionar",new_transaction:"Nova transação",no_matching_customers:"Não há clientes correspondentes!",phone_number:"Número de telefone",create_date:"Criar Data",confirm_delete:"Você não poderá recuperar este cliente e todas as faturas, estimativas e pagamentos relacionados. | Você não poderá recuperar esses clientes e todas as faturas, estimativas e pagamentos relacionados.",created_message:"Cliente criado com sucesso",updated_message:"Cliente atualizado com sucesso",deleted_message:"Cliente excluído com sucesso | Clientes excluídos com sucesso"},VZ={title:"Itens",items_list:"Lista de Itens",name:"Nome",unit:"Unidade",description:"Descrição",added_on:"Adicionado",price:"Preço",date_of_creation:"Data de criação",not_selected:"No item selected",action:"Ação",add_item:"Adicionar item",save_item:"Salvar item",update_item:"Atualizar item",item:"Item | Itens",add_new_item:"Adicionar novo item",new_item:"Novo item",edit_item:"Editar item",no_items:"Ainda não existe itens",list_of_items:"Esta seção conterá a lista de itens.",select_a_unit:"Seleciona unidade",taxes:"Impostos",item_attached_message:"Não é possível excluir um item que já está em uso.",confirm_delete:"Você não poderá recuperar este item | Você não poderá recuperar esses itens",created_message:"Item criado com sucesso",updated_message:"Item atualizado com sucesso",deleted_message:"Item excluído com sucesso | Itens Excluídos com sucesso"},qZ={title:"Orçamentos",estimate:"Orçamento | Orçamentos",estimates_list:"Lista de orçamentos",days:"{dias} dias",months:"{meses} Mês",years:"{Anos} Ano",all:"Todos",paid:"Pago",unpaid:"Não pago",customer:"CLIENTE",ref_no:"NÚMERO DE REFERÊNCIA.",number:"NÚMERO",amount_due:"Valor Devido",partially_paid:"Pago parcialmente",total:"Total",discount:"Desconto",sub_total:"Subtotal",estimate_number:"Numero do Orçamento",ref_number:"Referência",contact:"Contato",add_item:"Adicionar Item",date:"Data",due_date:"Data de Vencimento",expiry_date:"Data de expiração",status:"Status",add_tax:"Adicionar Imposto",amount:"Montante",action:"Ação",notes:"Observações",tax:"Imposto",estimate_template:"Modelo de orçamento",convert_to_invoice:"Converter em fatura",mark_as_sent:"Marcar como enviado",send_estimate:"Enviar orçamento",record_payment:"Registro de pago",add_estimate:"Adicionar orçamento",save_estimate:"Salvar Orçamento",confirm_conversion:"Deseja converter este orçamento em uma fatura?",conversion_message:"Converção realizada com sucesso",confirm_send_estimate:"Este orçamento será enviado por email ao cliente",confirm_mark_as_sent:"Este orçamento será marcado como enviado",confirm_mark_as_accepted:"Este orçamento será marcado como Aceito",confirm_mark_as_rejected:"Este orçamento será marcado como Rejeitado",no_matching_estimates:"Não há orçamentos correspondentes!",mark_as_sent_successfully:"Orçamento como marcado como enviado com sucesso",send_estimate_successfully:"Orçamento enviado com sucesso",errors:{required:"Campo obrigatório"},accepted:"Aceito",rejected:"Rejected",sent:"Enviado",draft:"Rascunho",declined:"Rejeitado",new_estimate:"Novo orçamento",add_new_estimate:"Adicionar novo orçamento",update_Estimate:"Atualizar orçamento",edit_estimate:"Editar orçamento",items:"artículos",Estimate:"Orçamento | Orçamentos",add_new_tax:"Adicionar novo imposto",no_estimates:"Ainda não há orcamentos",list_of_estimates:"Esta seção contém a lista de orçamentos.",mark_as_rejected:"Marcar como rejeitado",mark_as_accepted:"Marcar como aceito",marked_as_accepted_message:"Orçamento marcado como aceito",marked_as_rejected_message:"Orçamento marcado como rejeitado",confirm_delete:"Não poderá recuperar este orçamento | Não poderá recuperar estes orçamentos",created_message:"Orçamento criado com sucesso",updated_message:"Orçamento atualizado com sucesso",deleted_message:"Orçamento excluído com sucesso | Orçamentos excluídos com sucesso",something_went_wrong:"Algo deu errado",item:{title:"Titulo do item",description:"Descrição",quantity:"Quantidade",price:"Preço",discount:"Desconto",total:"Total",total_discount:"Desconto total",sub_total:"Subtotal",tax:"Imposto",amount:"Montante",select_an_item:"Escreva ou clique para selecionar um item",type_item_description:"Tipo Item Descrição (opcional)"}},WZ={title:"Faturas",invoices_list:"Lista de faturas",days:"{dias} dias",months:"{meses} Mês",years:"{anos} Ano",all:"Todas",paid:"Paga",unpaid:"Não Paga",viewed:"Viewed",overdue:"Overdue",completed:"Completed",customer:"CLIENTE",paid_status:"STATUS PAGAMENTO",ref_no:"REFERÊNCIA",number:"NÚMERO",amount_due:"VALOR DEVIDO",partially_paid:"Parcialmente pago",total:"Total",discount:"Desconto",sub_total:"Subtotal",invoice:"Fatura | Faturas",invoice_number:"Número da fatura",ref_number:"Referência",contact:"Contato",add_item:"Adicionar um item",date:"Data",due_date:"Data de Vencimento",status:"Status",add_tax:"Adicionar imposto",amount:"Montante",action:"Ação",notes:"Observações",view:"Ver",send_invoice:"Enviar Fatura",invoice_template:"Modelo da Fatura",template:"Modelo",mark_as_sent:"Marcar como enviada",confirm_send_invoice:"Esta fatura será enviada por e-mail ao cliente",invoice_mark_as_sent:"Esta fatura será marcada como enviada",confirm_send:"Esta fatura será enviada por e-mail ao cliente",invoice_date:"Data da Fatura",record_payment:"Gravar Pagamento",add_new_invoice:"Adicionar Nova Fatura",update_expense:"Atualizar Despesa",edit_invoice:"Editar Fatura",new_invoice:"Nova Fatura",save_invoice:"Salvar Fatura",update_invoice:"Atualizar Fatura",add_new_tax:"Adicionar novo Imposto",no_invoices:"Ainda não há faturas!",list_of_invoices:"Esta seção conterá a lista de faturas.",select_invoice:"Selecionar Fatura",no_matching_invoices:"Não há faturas correspondentes!",mark_as_sent_successfully:"Fatura marcada como enviada com sucesso",invoice_sent_successfully:"Fatura enviada com sucesso",cloned_successfully:"Fatura clonada com sucesso",clone_invoice:"Clonar fatura",confirm_clone:"Esta fatura será clonada em uma nova fatura",item:{title:"Titulo do Item",description:"Descrição",quantity:"Quantidade",price:"Preço",discount:"Desconto",total:"Total",total_discount:"Desconto Total",sub_total:"SubTotal",tax:"Imposto",amount:"Montante",select_an_item:"Digite ou clique para selecionar um item",type_item_description:"Tipo Descrição do item (opcional)"},confirm_delete:"Você não poderá recuperar esta fatura | Você não poderá recuperar essas faturas",created_message:"Fatura criada com sucesso",updated_message:"Fatura atualizada com sucesso",deleted_message:"Fatura excluída com sucesso | Faturas excluídas com sucesso",marked_as_sent_message:"Fatura marcada como enviada com sucesso",something_went_wrong:"Algo deu errado",invalid_due_amount_message:"O valor total da fatura não pode ser menor que o valor total pago para esta fatura. Atualize a fatura ou exclua os pagamentos associados para continuar."},HZ={title:"Pagamentos",payments_list:"Lista de Pagamentos",record_payment:"Gravar Pagamento",customer:"Cliente",date:"Data",amount:"Montante",action:"Ação",payment_number:"Número do Pagamento",payment_mode:"Forma de Pagamento",invoice:"Fatura",note:"Observação",add_payment:"Adicionar Pagamento",new_payment:"Novo Pagamento",edit_payment:"Editar Pagamento",view_payment:"Ver Pagamento",add_new_payment:"Adicionar novo Pagamento",send_payment_receipt:"Enviar recibo de pagamento",save_payment:"Salvar Pagamento",send_payment:"Mande o pagamento",update_payment:"Atualizar Pagamento",payment:"Pagamento | Pagamentos",no_payments:"Ainda sem pagamentos!",not_selected:"Not selected",no_invoice:"No invoice",no_matching_payments:"Não há pagamentos correspondentes!",list_of_payments:"Esta seção conterá a lista de pagamentos.",select_payment_mode:"Selecione a forma de pagamento",confirm_delete:"Você não poderá recuperar este Pagamento | Você não poderá recuperar esses Pagamentos",created_message:"Pagamento criado com sucesso",updated_message:"Pagamento atualizado com sucesso",deleted_message:"Pagamento excluído com sucesso | Pagamentos excluídos com sucesso",invalid_amount_message:"O valor do pagamento é inválido"},KZ={title:"Despesas",expenses_list:"Lista de Despesas",expense_title:"Título",contact:"Contato",category:"Categoria",customer:"Cliente",from_date:"A partir da Data",to_date:"Até a Data",expense_date:"Data",description:"Descrição",receipt:"Receita",amount:"Montante",action:"Ação",not_selected:"Not selected",note:"Observação",category_id:"Categoria",date:"Data da Despesa",add_expense:"Adicionar Despesa",add_new_expense:"Adicionar Nova Despesa",save_expense:"Salvar Despesa",update_expense:"Atualizar Despesa",download_receipt:"Baixar Receita",edit_expense:"Editar Despesa",new_expense:"Nova Despesa",expense:"Despesa | Despesas",no_expenses:"Ainda sem Despesas!",list_of_expenses:"Esta seção conterá a lista de despesas.",confirm_delete:"Você não poderá recuperar esta despesa | Você não poderá recuperar essas despesas",created_message:"Despesa criada com sucesso",updated_message:"Despesa atualizada com sucesso",deleted_message:"Despesas excluídas com sucesso | Despesas excluídas com sucesso",categories:{categories_list:"Lista de Categorias",title:"Título",name:"Nome",description:"Descrição",amount:"Montante",actions:"Ações",add_category:"Adicionar Categoria",new_category:"Nova Categoria",category:"Categoria | Categorias",select_a_category:"Selecionar uma Categoria"}},YZ={email:"Email",password:"Senha",forgot_password:"Esqueceu a senha?",or_signIn_with:"ou Entre com",login:"Entrar",register:"Registre-se",reset_password:"Resetar Senha",password_reset_successfully:"Senha redefinida com sucesso",enter_email:"Digite email",enter_password:"Digite a senha",retype_password:"Confirme a Senha"},ZZ={title:"Relatório",from_date:"A partir da Data",to_date:"Até a Data",status:"Status",paid:"Pago",unpaid:"Não Pago",download_pdf:"Baixar PDF",view_pdf:"Ver PDF",update_report:"Atualizar Relatório",report:"Relatório | Relatórios",profit_loss:{profit_loss:"Perda de lucro",to_date:"Até a Data",from_date:"A partir da Data",date_range:"Selecionar período"},sales:{sales:"Vendas",date_range:"Selecionar período",to_date:"Até a Data",from_date:"A partir da Data",report_type:"Tipo de Relatório"},taxes:{taxes:"Impostos",to_date:"Até a Data",from_date:"A partir da Data",date_range:"Selecionar período"},errors:{required:"Campo obrigatório"},invoices:{invoice:"Fatura",invoice_date:"Data da Fatura",due_date:"Data de Vencimento",amount:"Montante",contact_name:"Nome de Contato",status:"Status"},estimates:{estimate:"Orçamento",estimate_date:"Data do Orçamento",due_date:"Data de Vencimento",estimate_number:"Número do Orçamento",ref_number:"Referência",amount:"Montante",contact_name:"Nome de Contato",status:"Status"},expenses:{expenses:"Despesas",category:"Categoria",date:"Data",amount:"Montante",to_date:"Até a Data",from_date:"A partir da Data",date_range:"Selecionar período"}},GZ={menu_title:{account_settings:"Configurações da conta",company_information:"Informações da Empresa",customization:"Personalizar",preferences:"Preferências",notifications:"Notificações",tax_types:"Tipos de Impostos",expense_category:"Categorias de Despesas",update_app:"Atualizar Aplicativo",custom_fields:"Os campos personalizados"},title:"Configurações",setting:"Configuração | Configurações",general:"Geral",language:"Idioma",primary_currency:"Moéda Principal",timezone:"Fuso horário",date_format:"Formato de data",currencies:{title:"Moedas",currency:"Moeda | Moedas",currencies_list:"Moedas",select_currency:"Selecione uma Moeda",name:"Nome",code:"Código",symbol:"Símbolo",precision:"Precisão",thousand_separator:"Separador de Milhar",decimal_separator:"Separador Decimal",position:"Posição",position_of_symbol:"Posição do Símbolo",right:"Direita",left:"Esquerda",action:"Ação",add_currency:"Adicionar Moeda"},mail:{host:"Host de Email",port:"Porta de Email",driver:"Mail Driver",secret:"Segredo",mailgun_secret:"Mailgun Segredo",mailgun_domain:"Domínio",mailgun_endpoint:"Mailgun Endpoint",ses_secret:"SES Segredo",ses_key:"SES Chave",password:"Senha do Email",username:"Nome de Usuário do Email",mail_config:"Configuração de Email",from_name:"Do Nome de Email",from_mail:"Do Endereço de Email",encryption:"Criptografia de Email",mail_config_desc:"Abaixo está o formulário para configurar o driver de email para enviar emails do aplicativo. Você também pode configurar provedores de terceiros como Sendgrid, SES etc."},pdf:{title:"Configurações de PDF",footer_text:"Texto do Rodapé",pdf_layout:"Layout de PDF"},company_info:{company_info:"Informação da Empresa",company_name:"Nome da Empresa",company_logo:"Logotipo da Empresa",section_description:"Informações sobre sua empresa que serão exibidas em Faturas, Orçamentos e outros documentos criados pela InvoiceShelf.",phone:"Telefone",country:"Pais",state:"Estado",city:"Cidade",address:"Endereço",zip:"CEP",save:"Salvar",updated_message:"Informações da Empresa atualizadas com sucesso"},custom_fields:{title:"Os campos personalizados",add_custom_field:"Adicionar campo personalizado",edit_custom_field:"Editar campo personalizado",field_name:"Nome do campo",type:"Tipo",name:"Nome",required:"Requeridas",label:"Rótulo",placeholder:"Placeholder",help_text:"Texto de ajuda",default_value:"Valor padrão",prefix:"Prefixo",starting_number:"Número inicial",model:"Modelo",help_text_description:"Digite algum texto para ajudar os usuários a entender a finalidade desse campo personalizado.",suffix:"Sufixo",yes:"sim",no:"Não",order:"Ordem",custom_field_confirm_delete:"Você não poderá recuperar este campo personalizado",already_in_use:"O campo personalizado já está em uso",deleted_message:"Campo personalizado excluído com sucesso",options:"opções",add_option:"Adicionar opções",add_another_option:"Adicione outra opção",sort_in_alphabetical_order:"Classificar em ordem alfabética",add_options_in_bulk:"Adicionar opções em massa",use_predefined_options:"Use Predefined Options",select_custom_date:"Selecionar data personalizada",select_relative_date:"Selecionar data relativa",ticked_by_default:"Marcado por padrão",updated_message:"Campo personalizado atualizado com sucesso",added_message:"Campo personalizado adicionado com sucesso"},customization:{customization:"Personalizar",save:"Salvar",addresses:{title:"Endereço",section_description:"Você pode definir o endereço de cobrança do cliente e o formato do endereço de entrega do cliente (exibido apenas em PDF).",customer_billing_address:"Endereço de Cobrança do Cliente",customer_shipping_address:"Endereço de Entrega do Cliente",company_address:"Endereço da Empresa",insert_fields:"Inserir Campos",contact:"Contato",address:"Endereço",display_name:"Nome em Exibição",primary_contact_name:"Nome do Contato Principal",email:"Email",website:"Website",name:"Nome",country:"Pais",state:"Estado",city:"Cidade",company_name:"Nome da Empresa",address_street_1:"Endereço Rua 1",address_street_2:"Endereço Rua 2",phone:"Telefone",zip_code:"CEP",address_setting_updated:"Configuração de Endereço Atualizada com Sucesso"},updated_message:"Informações da Empresa atualizadas com sucesso",invoices:{title:"Faturas",notes:"Notas",invoice_prefix:"Fatura Prefixo",invoice_settings:"Configrações da Fatura",autogenerate_invoice_number:"Gerar automaticamente o número da Fatura",autogenerate_invoice_number_desc:"Desative isso, se você não deseja gerar automaticamente números da Fatura sempre que criar uma nova.",enter_invoice_prefix:"Digite o prefixo da Fatura",terms_and_conditions:"Termos e Condições",invoice_settings_updated:"Configuração da Fatura atualizada com sucesso"},estimates:{title:"Orçamentos",estimate_prefix:"Orçamento Prefixo",estimate_settings:"Configurações do Orçamento",autogenerate_estimate_number:"Gerar automaticamente o número do Orçamento",estimate_setting_description:"Desative isso, se você não deseja gerar automaticamente números do Orçamento sempre que criar um novo.",enter_estimate_prefix:"Digite o prefixo do Orçamento",estimate_setting_updated:"Configuração do Orçamento atualizada com sucesso"},payments:{title:"Pagamentos",payment_prefix:"Pagamento Prefixo",payment_settings:"Configurações de Pagamento",autogenerate_payment_number:"Gerar automaticamente número do Pagamento",payment_setting_description:"Desative isso, se você não deseja gerar automaticamente números do Pagamento sempre que criar um novo.",enter_payment_prefix:"Digite o Prefixo do Pagamento",payment_setting_updated:"Configurações de Pagamento atualizada com sucesso",payment_mode:"Modo de pagamento",add_payment_mode:"Adicionar modo de pagamento",edit_payment_mode:"Editar modo de pagamento",mode_name:"Nome do modo",payment_mode_added:"Modo de pagamento adicionado",payment_mode_updated:"Modo de pagamento atualizado",payment_mode_confirm_delete:"Você não poderá recuperar este modo de pagamento",already_in_use:"O modo de pagamento já está em uso",deleted_message:"Modo de pagamento excluído com sucesso"},items:{title:"Itens",units:"unidades",add_item_unit:"Adicionar unidade de item",edit_item_unit:"Editar unidade de item",unit_name:"Nome da unidade",item_unit_added:"Item Unit Added",item_unit_updated:"Item Unit Updated",item_unit_confirm_delete:"Você não poderá recuperar esta unidade de item",already_in_use:"A unidade do item já está em uso",deleted_message:"Unidade de item excluída com sucesso"}},account_settings:{profile_picture:"Foto do Perfil",name:"Nome",email:"Email",password:"Senha",confirm_password:"Confirmar Senha",account_settings:"Configurações da conta",save:"Salvar",section_description:"Você pode atualizar seu nome, email e senha usando o formulário abaixo.",updated_message:"Configurações da conta atualizadas com sucesso"},user_profile:{name:"Nome",email:"Email",password:"Password",confirm_password:"Confirmar Senha"},notification:{title:"Notificação",email:"Enviar Notificações para",description:"Quais notificações por email você gostaria de receber quando algo mudar?",invoice_viewed:"Fatura Visualizada",invoice_viewed_desc:"Quando o seu cliente visualiza uma Fatura enviada pelo painel do InvoiceShelf.",estimate_viewed:"Orçamento Visualizado",estimate_viewed_desc:"Quando o seu cliente visualiza um Orçamento enviada pelo painel do InvoiceShelf.",save:"Salvar",email_save_message:"E-mail salvo com sucesso",please_enter_email:"Por favor digite um E-mail"},tax_types:{title:"Tipos de Impostos",add_tax:"Adicionar Imposto",edit_tax:"Editar imposto",description:"Você pode adicionar ou remover impostos conforme desejar. O InvoiceShelf suporta impostos sobre itens individuais e também na Fatura.",add_new_tax:"Adicionar Novo Imposto",tax_settings:"Configurações de Impostos",tax_per_item:"Imposto por Item",tax_name:"Nome do Imposto",compound_tax:"Imposto Composto",percent:"Porcentagem",action:"Ação",tax_setting_description:"Habilite isso se desejar adicionar Impostos a itens da Fatura Idividualmente. Por padrão, os impostos são adicionados diretamente à Fatura.",created_message:"Tipo de Imposto criado com sucesso",updated_message:"Tipo de Imposto Atualizado com sucesso",deleted_message:"Tipo de Imposto Deletado com sucesso",confirm_delete:"Você não poderá recuperar este tipo de Imposto",already_in_use:"O Imposto já está em uso"},expense_category:{title:"Categoria de Despesa",action:"Ação",description:"As Categorias são necessárias para adicionar entradas de Despesas. Você pode adicionar ou remover essas Categorias de acordo com sua preferência.",add_new_category:"Adicionar Nova Categoria",add_category:"Adicionar categoria",edit_category:"Editar categoria",category_name:"Nome da Categoria",category_description:"Descrição",created_message:"Categoria de Despesa criada com sucesso",deleted_message:"Categoria de Despesa excluída com sucesso",updated_message:"Categoria de Despesa atualizada com sucesso",confirm_delete:"Você não poderá recuperar esta Categoria de Despesa",already_in_use:"A categoria já está em uso"},preferences:{currency:"Moeda",language:"Idioma",time_zone:"Fuso Horário",fiscal_year:"Ano Financeiro",date_format:"Formato da Data",discount_setting:"Configuração de Desconto",discount_per_item:"Desconto por Item ",discount_setting_description:"Habilite isso se desejar adicionar desconto a itens de Fatura individualmente. Por padrão, o desconto é adicionado diretamente à Fatura.",save:"Salvar",preference:"Preferência | Preferências",general_settings:"Preferências padrão para o sistema.",updated_message:"Preferências atualizadas com sucesso",select_language:"Selecione um Idioma",select_time_zone:"Selecione um fuso horário",select_date_formate:"Selecione um formato de data",select_financial_year:"Selecione o ano financeiro"},update_app:{title:"Atualizar Aplicativo",description:"Você pode atualizar facilmente o InvoiceShelf, verifique se hà novas atualizações, clicando no botão abaixo",check_update:"Verifique se há atualizações",avail_update:"Nova atualização disponível",next_version:"Próxima versão",update:"Atualizar agora",update_progress:"Atualização em progresso...",progress_text:"Levará apenas alguns minutos. Não atualize a tela ou feche a janela antes que a atualização seja concluída",update_success:"O aplicativo foi atualizado! Aguarde enquanto a janela do navegador é recarregada automaticamente.",latest_message:"Nenhuma atualização disponível! Você está na versão mais recente.",current_version:"Versão Atual",download_zip_file:"Baixar arquivo ZIP",unzipping_package:"Descompactando o pacote",copying_files:"Copiando arquivos",running_migrations:"Executando migrações",finishing_update:"Atualização de acabamento",update_failed:"Atualização falhou",update_failed_text:"Desculpa! Sua atualização falhou em: {step} step"}},QZ={account_info:"Informação da conta",account_info_desc:"Os detalhes abaixo serão usados para criar a conta principal do administrador. Além disso, você pode alterar os detalhes a qualquer momento após o login.",name:"Nome",email:"Email",password:"Senha",confirm_password:"Confirmar Senha",save_cont:"Salvar e Continuar",company_info:"Informação da Empresa",company_info_desc:"Esta informação será exibida nas Faturas. Observe que você pode editar isso mais tarde na página de configurações.",company_name:"Nome da Empresa",company_logo:"Logotipo da Empresa",logo_preview:"Previsualizar Logotipo",preferences:"Preferências",preferences_desc:"Preferências padrão para o sistema.",country:"Pais",state:"Estado",city:"Cidade",address:"Endereço",street:"Rua 1 | Rua 2",phone:"Telefone",zip_code:"CEP",go_back:"Voltar",currency:"Moeda",language:"Idioma",time_zone:"Fuso Horário",fiscal_year:"Ano Financeiro",date_format:"Formato de Data",from_address:"Do Endereço",username:"Nome de Usuário",next:"Próximo",continue:"Continuar",skip:"Pular",database:{database:"URL do Site e Base de Dados",connection:"Conexão da Base de Dados",host:"Host da Base de Dados",port:"Porta da Base de Dados",password:"Senha da Base de Dados",app_url:"URL do Aplicativo",username:"Usuário da Base de Dados",db_name:"Nome da Base de Dados",desc:"Crie um Banco de Dados no seu servidor e defina as credenciais usando o formulário abaixo."},permissions:{permissions:"Permissões",permission_confirm_title:"Você tem certeza que quer continuar?",permission_confirm_desc:"Falha na verificação de permissão da pasta",permission_desc:"Abaixo está a lista de permissões de pasta que são necessárias para que o aplicativo funcione. Se a verificação da permissão falhar, atualize as permissões da pasta."},mail:{host:"Host do email",port:"Porta do email",driver:"Driver do email",secret:"Segredo",mailgun_secret:"Segredo do Mailgun",mailgun_domain:"Domínio",mailgun_endpoint:"Endpoint do Mailgun",ses_secret:"Segredo do SES",ses_key:"Chave SES",password:"Senha do email",username:"Nome do Usuário do email",mail_config:"Configuração de email",from_name:"Nome do email",from_mail:"Endereço de email",encryption:"Criptografia de email",mail_config_desc:"Abaixo está o formulário para configurar o driver de email que será usado para enviar emails do aplicativo. Você também pode configurar provedores de terceiros como Sendgrid, SES etc."},req:{system_req:"Requisitos de Sistema",php_req_version:"PHP (versão {version} obrigatória)",check_req:"Verificar Requisitos",system_req_desc:"O InvoiceShelf tem alguns requisitos de servidor. Verifique se o seu servidor possui a versão do PHP necessária e todas as extensões mencionadas abaixo."},errors:{migrate_failed:"Falha na migração",database_variables_save_error:"Não é possível gravar a configuração no arquivo .env. Por favor, verifique suas permissões de arquivo",mail_variables_save_error:"A configuração do email falhou.",connection_failed:"Falha na conexão com o banco de dados",database_should_be_empty:"O banco de dados deve estar vazio"},success:{mail_variables_save_successfully:"Email configurado com sucesso",database_variables_save_successfully:"Banco de dados configurado com sucesso."}},JZ={invalid_phone:"Número de telefone inválido",invalid_url:"url inválidas (ex: http://www.invoiceshelf.com)",required:"Campo obrigatório",email_incorrect:"E-mail incorreto",email_already_taken:"O email já foi recebido.",email_does_not_exist:"O usuário com determinado email não existe",send_reset_link:"Enviar link de redefinição",not_yet:"Ainda não? Envie novamente",password_min_length:"A senha deve conter {count} caracteres",name_min_length:"O nome deve ter pelo menos {count} letras.",enter_valid_tax_rate:"Insira uma taxa de imposto válida",numbers_only:"Apenas Números.",characters_only:"Apenas Caracteres.",password_incorrect:"As senhas devem ser idênticas",password_length:"A senha deve ter {count} caracteres.",qty_must_greater_than_zero:"A quantidade deve ser maior que zero.",price_greater_than_zero:"O preço deve ser maior que zero.",payment_greater_than_zero:"O pagamento deve ser maior que zero.",payment_greater_than_due_amount:"O pagamento inserido é mais do que o valor devido desta fatura.",quantity_maxlength:"A quantidade não deve exceder 20 dígitos.",price_maxlength:"O preço não deve ser superior a 20 dígitos.",price_minvalue:"O preço deve ser maior que 0.",amount_maxlength:"Montante não deve ser superior a 20 dígitos.",amount_minvalue:"Montante deve ser maior que zero",description_maxlength:"A descrição não deve ter mais que 255 caracteres.",maximum_options_error:"Máximo de {max} opções selecionadas. Primeiro remova uma opção selecionada para selecionar outra.",notes_maxlength:"As anotações não devem ter mais que 255 caracteres.",address_maxlength:"O endereço não deve ter mais que 255 caracteres.",ref_number_maxlength:"O número de referência não deve ter mais que 255 caracteres.",prefix_maxlength:"O prefixo não deve ter mais que 5 caracteres."},XZ={navigation:MZ,general:$Z,dashboard:LZ,tax_types:BZ,customers:UZ,items:VZ,estimates:qZ,invoices:WZ,payments:HZ,expenses:KZ,login:YZ,reports:ZZ,settings:GZ,wizard:QZ,validation:JZ},eG={dashboard:"Pannello di controllo",customers:"Clienti",items:"Commesse",invoices:"Fatture","recurring-invoices":"Fatture ricorrenti",expenses:"Spese",estimates:"Preventivi",payments:"Pagamenti",reports:"Rapporti",settings:"Configurazione",logout:"Disconnessione",users:"Utenti",modules:"Moduli"},tG={add_company:"Aggiungi azienda",view_pdf:"Vedi PDF",copy_pdf_url:"Copia URL PDF",download_pdf:"Scarica PDF",save:"Salva",create:"Crea",cancel:"Elimina",update:"Aggiorna",deselect:"Deseleziona",download:"Scarica",from_date:"Dalla Data",to_date:"Alla Data",from:"Da",to:"A",ok:"Ok",yes:"Sì",no:"No",sort_by:"Ordina per",ascending:"Crescente",descending:"Decrescente",subject:"Oggetto",body:"Corpo",message:"Messaggio",send:"Invia",preview:"Anteprima",go_back:"Torna indietro",back_to_login:"Torna al Login?",home:"Home",filter:"Filtro",delete:"Elimina",edit:"Modifica",view:"Visualizza",add_new_item:"Aggiungi nuova Commessa",clear_all:"Pulisci tutto",showing:"Visualizzo",of:"di",actions:"Azioni",subtotal:"SUBTOTALE",discount:"SCONTO",fixed:"Fissato",percentage:"Percentuale",tax:"TASSA",total_amount:"AMMONTARE TOTALE",bill_to:"Fattura a",ship_to:"Invia a",due:"Dovuto",draft:"Bozza",sent:"Inviata",all:"Tutte",select_all:"Seleziona tutto",select_template:"Seleziona Template",choose_file:"Clicca per selezionare un file",choose_template:"Scegli un modello",choose:"Scegli",remove:"Rimuovi",select_a_status:"Seleziona uno Stato",select_a_tax:"Seleziona imposta",search:"Cerca",are_you_sure:"Sei sicuro/a?",list_is_empty:"La lista è vuota.",no_tax_found:"Nessuna imposta trovata!",four_zero_four:"404",you_got_lost:"Hoops! Ti sei perso",go_home:"Vai alla Home",test_mail_conf:"Configurazione della mail di test",send_mail_successfully:"Mail inviata con successo",setting_updated:"Configurazioni aggiornate con successo",select_state:"Seleziona lo Stato",select_country:"Seleziona Paese",select_city:"Seleziona Città",street_1:"Indirizzo 1",street_2:"Indirizzo 2",action_failed:"Errore",retry:"Riprova",choose_note:"Scegli Nota",no_note_found:"Nessuna Nota Trovata",insert_note:"Inserisci Nota",copied_pdf_url_clipboard:"Url PDF copiato negli appunti!",copied_url_clipboard:"URL copiato negli appunti!",docs:"Documenti",do_you_wish_to_continue:"Vuoi continuare?",note:"Nota",pay_invoice:"Paga Fattura",login_successfully:"Accesso effettuato con successo!",logged_out_successfully:"Disconnessione riuscita",mark_as_default:"Contrassegna come predefinito"},aG={select_year:"Seleziona anno",cards:{due_amount:"Somma dovuta",customers:"Clienti",invoices:"Fatture",estimates:"Preventivi",payments:"Pagamenti"},chart_info:{total_sales:"Vendite",total_receipts:"Ricevute",total_expense:"Uscite",net_income:"Guadagno netto",year:"Seleziona anno"},monthly_chart:{title:"Entrate & Uscite"},recent_invoices_card:{title:"Fatture insolute",due_on:"Data di scadenza",customer:"Cliente",amount_due:"Ammontare dovuto",actions:"Azioni",view_all:"Vedi tutto"},recent_estimate_card:{title:"Preventivi recenti",date:"Data",customer:"Cliente",amount_due:"Ammontare dovuto",actions:"Azioni",view_all:"Vedi tutto"}},nG={name:"Nome",description:"Descrizione",percent:"Percento",compound_tax:"Imposta composta"},iG={search:"Cerca...",customers:"Clienti",users:"Utenti",no_results_found:"Nessun Risultato Trovato"},oG={label:"CAMBIA AZIENDA",no_results_found:"Nessun Risultato Trovato",add_new_company:"Aggiungi una nuova azienda",new_company:"Nuova Azienda",created_message:"Azienda creata con successo"},sG={today:"Oggi",this_week:"Questa Settimana",this_month:"Questo mese",this_quarter:"Questo Trimestre",this_year:"Anno corrente",previous_week:"Settimana precedente",previous_month:"Mese precedente",previous_quarter:"Trimestre Precedente",previous_year:"Anno Precedente",custom:"Personalizzato"},rG={title:"Clienti",prefix:"Prefisso",add_customer:"Aggiungi cliente",contacts_list:"Lista clienti",name:"Nome",mail:"Mail | Mails",statement:"Dichiarazione",display_name:"Nome Visibile",primary_contact_name:"Riferimento",contact_name:"Nome Contatto",amount_due:"Ammontare dovuto",email:"Email",address:"Indirizzo",phone:"Telefono",website:"Sito web",overview:"Panoramica",invoice_prefix:"Prefisso Fattura",estimate_prefix:"Prefisso Preventivi",payment_prefix:"Prefisso Pagamento",enable_portal:"Abilita Portale",country:"Paese",state:"Provincia",city:"Città",zip_code:"Codice Postale",added_on:"Aggiunto il",action:"Azione",password:"Password",confirm_password:"Conferma Password",street_number:"Numero Civico",primary_currency:"Valùta Principale",description:"Descrizione",add_new_customer:"Aggiungi nuovo Cliente",save_customer:"Salva Cliente",update_customer:"Aggiorna Cliente",customer:"Cliente | Clienti",new_customer:"Nuovo cliente",edit_customer:"Modifica Cliente",basic_info:"Informazioni",portal_access:"Accesso al Portale",portal_access_text:"Vuoi consentire a questo cliente di accedere al Portale Clienti?",portal_access_url:"URL Login Portale Cliente",portal_access_url_help:"Copia e inoltra l'URL sopra indicato al tuo cliente per fornire l'accesso.",billing_address:"Indirizzo di Fatturazione",shipping_address:"Indirizzo di Spedizione",copy_billing_address:"Copia da Fatturazione",no_customers:"Ancora nessun Cliente!",no_customers_found:"Nessun cliente trovato!",no_contact:"Nessun contatto",no_contact_name:"Nessun nome del contatto",list_of_customers:"Qui ci sarà la lista dei tuoi clienti",primary_display_name:"Mostra il Nome Principale",select_currency:"Selezione Valùta",select_a_customer:"Seleziona Cliente",type_or_click:"Scrivi o clicca per selezionare",new_transaction:"Nuova transazione",no_matching_customers:"Non ci sono clienti corrispondenti!",phone_number:"Numero di telefono",create_date:"Crea data",confirm_delete:"Non sarai in grado di recuperare questo cliente e tutte le relative fatture, stime e pagamenti. | Non sarai in grado di recuperare questi clienti e tutte le relative fatture, stime e pagamenti.",created_message:"Cliente creato con successo",updated_message:"Cliente aggiornato con successo",address_updated_message:"Indirizzo aggiornato con successo",deleted_message:"Cliente cancellato con successo | Clienti cancellati con successo",edit_currency_not_allowed:"Impossibile cambiare valuta, dopo aver creato transazioni."},lG={title:"Commesse",items_list:"Lista Commesse",name:"Nome",unit:"Unità/Tipo",description:"Descrizione",added_on:"Aggiunto il",price:"Prezzo",date_of_creation:"Data di creazione",not_selected:"Nessun elemento selezionato",action:"Azione",add_item:"Aggiungi Commessa",save_item:"Salva",update_item:"Aggiorna",item:"Commessa | Commesse",add_new_item:"Aggiungi nuova Commessa",new_item:"Nuova Commessa",edit_item:"Modifica Commessa",no_items:"Ancora nessuna commessa!",list_of_items:"Qui ci sarà la lista delle commesse.",select_a_unit:"Seleziona",taxes:"Imposte",item_attached_message:"Non puoi eliminare una Commessa che è già attiva",confirm_delete:"Non potrai ripristinare la Commessa | Non potrai ripristinare le Commesse",created_message:"Commessa creata con successo",updated_message:"Commessa aggiornata con successo",deleted_message:"Commessa eliminata con successo | Commesse eliminate con successo"},cG={title:"Preventivi",accept_estimate:"Accetta Preventivo",reject_estimate:"Rifiuta Preventivo",estimate:"Preventivo | Preventivi",estimates_list:"Lista Preventivi",days:"{days} Giorni",months:"{months} Mese",years:"{years} Anno",all:"Tutti",paid:"Pagato",unpaid:"Non pagato",customer:"CLIENTE",ref_no:"RIF N.",number:"NUMERO",amount_due:"AMMONTARE DOVUTO",partially_paid:"Pagamento Parziale",total:"Totale",discount:"Sconto",sub_total:"Sub Totale",estimate_number:"Preventivo Numero",ref_number:"Numero di Rif.",contact:"Contatto",add_item:"Aggiungi un item",date:"Data",due_date:"Data di pagamento",expiry_date:"Data di scadenza",status:"Stato",add_tax:"Aggiungi Imposta",amount:"Ammontare",action:"Azione",notes:"Note",tax:"Imposta",estimate_template:"Modello",convert_to_invoice:"Converti in Fattura",mark_as_sent:"Segna come Inviata",send_estimate:"Invia preventivo",resend_estimate:"Reinvia Preventivo",record_payment:"Registra Pagamento",add_estimate:"Aggiungi Preventivo",save_estimate:"Salva Preventivo",confirm_conversion:"Questo preventivo verrà usato per generare una nuova fattura.",conversion_message:"Fattura creata",confirm_send_estimate:"Questo preventivo verrà inviato al cliente via mail",confirm_mark_as_sent:"Questo preventivo verrà contrassegnato come inviato",confirm_mark_as_accepted:"Questo preventivo verrà contrassegnato come Accettato",confirm_mark_as_rejected:"Questo preventivo verrà contrassegnato come Rifiutato",no_matching_estimates:"Nessun preventivo trovato!",mark_as_sent_successfully:"Preventivo contrassegnato come inviato con successo",send_estimate_successfully:"Preventivo inviato con successo",errors:{required:"Campo obbligatorio"},accepted:"Accettato",rejected:"Rifiutato",expired:"Scaduto",sent:"Inviato",draft:"Bozza",viewed:"Visualizzato",declined:"Rifiutato",new_estimate:"Nuovo Preventivo",add_new_estimate:"Crea Nuovo Preventivo",update_Estimate:"Aggiorna preventivo",edit_estimate:"Modifica Preventivo",items:"Commesse",Estimate:"Preventivo | Preventivi",add_new_tax:"Aggiungi una nuova tassa/imposta",no_estimates:"Ancora nessun preventivo!",list_of_estimates:"Questa sezione conterrà la lista dei preventivi.",mark_as_rejected:"Segna come Rifiutato",mark_as_accepted:"Segna come Accettato",marked_as_accepted_message:"Preventivo contrassegnato come accettato",marked_as_rejected_message:"Preventivo contrassegnato come rifiutato",confirm_delete:"Non potrai più recuperare questo preventivo | Non potrai più recuperare questi preventivi",created_message:"Preventivo creato con successo",updated_message:"Preventivo modificato con successo",deleted_message:"Preventivo eliminato con successo | Preventivi eliminati con successo",something_went_wrong:"Si è verificato un errore",item:{title:"Titolo Commessa",description:"Descrizione",quantity:"Quantità",price:"Prezzo",discount:"Sconto",total:"Totale",total_discount:"Sconto Totale",sub_total:"Sub Totale",tax:"Tasse",amount:"Ammontare",select_an_item:"Scrivi o clicca per selezionare un item",type_item_description:"Scrivi una Descrizione (opzionale)"},mark_as_default_estimate_template_description:"Se abilitato, il modello selezionato verrà selezionato automaticamente per i nuovi preventivi."},dG={title:"Fatture",download:"Scarica",pay_invoice:"Paga Fattura",invoices_list:"Lista Fatture",invoice_information:"Informazioni Fattura",days:"{days} Giorni",months:"{months} Mese",years:"{years} Anno",all:"Tutti",paid:"Pagato",unpaid:"Insoluta",viewed:"Visualizzato",overdue:"Scaduta",completed:"Completata",customer:"CLIENTE",paid_status:"STATO DI PAGAMENTO",ref_no:"RIF N.",number:"NUMERO",amount_due:"AMMONTARE DOVUTO",partially_paid:"Parzialmente Pagata",total:"Totale",discount:"Sconto",sub_total:"Sub Totale",invoice:"Fattura | Fatture",invoice_number:"Numero Fattura",ref_number:"Rif Numero",contact:"Contatto",add_item:"Aggiungi Commessa/Item",date:"Data",due_date:"Data di pagamento",status:"Stato",add_tax:"Aggiungi Imposta",amount:"Ammontare",action:"Azione",notes:"Note",view:"Vedi",send_invoice:"Invia Fattura",resend_invoice:"Reinvia Fattura",invoice_template:"Modello Fattura",conversion_message:"Fattura duplicata con successo",template:"Modello",mark_as_sent:"Segna come inviata",confirm_send_invoice:"Questa fattura sarà inviata via Mail al Cliente",invoice_mark_as_sent:"Questa fattura sarà contrassegnata come inviata",confirm_mark_as_accepted:"Questa fattura verrà contrassegnata come Accettata",confirm_mark_as_rejected:"Questa fattura sarà contrassegnata come Rifiutata",confirm_send:"Questa fattura sarà inviata via Mail al Cliente",invoice_date:"Data fattura",record_payment:"Registra Pagamento",add_new_invoice:"Aggiungi nuova Fattura",update_expense:"Aggiorna Costo",edit_invoice:"Modifica Fattura",new_invoice:"Nuova Fattura",save_invoice:"Salva fattura",update_invoice:"Aggiorna Fattura",add_new_tax:"Aggiungi tassa/imposta",no_invoices:"Ancora nessuna fattura!",mark_as_rejected:"Segna come rifiutata",mark_as_accepted:"Segna come accettata",list_of_invoices:"Questa sezione conterrà la lista delle Fatture.",select_invoice:"Seleziona Fattura",no_matching_invoices:"Nessuna fattura trovata!",mark_as_sent_successfully:"Fattura contassegnata come inviata con successo",invoice_sent_successfully:"Fattura inviata correttamente",cloned_successfully:"Fattura copiata con successo",clone_invoice:"Clona Fattura",confirm_clone:"Questa fattura verrà clonata in una nuova fattura",item:{title:"Titolo Commessa",description:"Descrizione",quantity:"Quantità",price:"Prezzo",discount:"Sconto",total:"Totale",total_discount:"Sconto Totale",sub_total:"Sub Totale",tax:"Tassa",amount:"Ammontare",select_an_item:"Scrivi o clicca per selezionare un item",type_item_description:"Scrivi una descrizione (opzionale)"},payment_attached_message:"Una delle fatture selezionate ha già associato un pagamento. Assicurati di eliminare il pagamento associato prima di procedere con la rimozione",confirm_delete:"Non potrai recuperare la Fattura cancellata | Non potrai recuperare le Fatture cancellate",created_message:"Fattura creata con successo",updated_message:"Fattura aggiornata con successo",deleted_message:"Fattura cancellata con successo | Fatture cancellate con successo",marked_as_sent_message:"Fattura contrassegnata come inviata con successo",something_went_wrong:"Si è verificato un errore",invalid_due_amount_message:"L'ammontare totale della fattura non può essere inferiore all'ammontare totale pagato per questa fattura. Modifica la fattura o cancella i pagamenti associati per continuare.",mark_as_default_invoice_template_description:"Se abilitata, il modello selezionato verrà selezionato automaticamente per le nuove fatture."},uG={title:"Fatture ricorrenti",invoices_list:"Elenco Fatture ricorrenti",days:"{days} Giorni",months:"{months} Mese",years:"{years} Anno",all:"Tutte",paid:"Pagata",unpaid:"Non Pagata",viewed:"Vista",overdue:"In ritardo",active:"Attiva",completed:"Completata",customer:"CLIENTE",paid_status:"STATO DI PAGAMENTO",ref_no:"Riferimento #",number:"NUMERO",amount_due:"AMMONTARE DOVUTO",partially_paid:"Parzialmente Pagata",total:"Totale",discount:"Sconto",sub_total:"Totale Parziale",invoice:"Fattura Ricorrente | Fatture Ricorrenti",invoice_number:"Numero Della Fattura Ricorrente",next_invoice_date:"Data Prossima Fattura",ref_number:"Numero di Rif.",contact:"Contatto",add_item:"Aggiungi un elemento",date:"Data",limit_by:"Limita per",limit_date:"Data limite",limit_count:"Conteggio Limite",count:"Conteggio",status:"Stato",select_a_status:"Seleziona uno Stato",working:"Elaborando",on_hold:"In sospeso",complete:"Completate",add_tax:"Aggiungi imposta",amount:"Quantità",action:"Azione",notes:"Note",view:"Visualizza",basic_info:"Info Di Base",send_invoice:"Invia Fattura Ricorrente",auto_send:"Invio automatico",resend_invoice:"Reinvia Fattura Ricorrente",invoice_template:"Template Fattura Ricorrente",conversion_message:"Fattura duplicata con successo",template:"Template",mark_as_sent:"Segna come inviata",confirm_send_invoice:"Questa fattura ricorrente verrà inviata via email al cliente",invoice_mark_as_sent:"Questa fattura sarà contrassegnata come inviata",confirm_send:"Questa fattura ricorrente verrà inviata via e-mail al cliente",starts_at:"Data Inzio",due_date:"Data di scadenza fattura",record_payment:"Registra Pagamento",add_new_invoice:"Nuova Fattura ricorrente",update_expense:"Aggiorna Spesa",edit_invoice:"Modifica Fattura Ricorrente",new_invoice:"Nuova Fattura Ricorrente",send_automatically:"Invia automaticamente",send_automatically_desc:"Abilitare questa opzione, se si desidera inviare automaticamente la fattura al cliente quando viene creata.",save_invoice:"Salva Fattura Ricorrente",update_invoice:"Aggiorna Fattura Ricorrente",add_new_tax:"Aggiungi una nuova tassa/imposta",no_invoices:"Ancora nessuna Fattura Ricorrente!",mark_as_rejected:"Segna come rifiutata",mark_as_accepted:"Segna come accettata",list_of_invoices:"Questa sezione conterrà l'elenco delle fatture ricorrenti.",select_invoice:"Seleziona Fattura",no_matching_invoices:"Nessuna fattura trovata!",mark_as_sent_successfully:"Fattura contassegnata come inviata con successo",invoice_sent_successfully:"Fattura inviata con successo",cloned_successfully:"Fattura copiata con successo",clone_invoice:"Duplica Fattura Ricorrente",confirm_clone:"Questa fattura ricorrente verrà clonata in una nuova fattura ricorrente",add_customer_email:"Inserisci una E-Mail per inviare automaticamente fatture al cliente.",item:{title:"Titolo Articolo",description:"Descrizione",quantity:"Quantità",price:"Prezzo",discount:"Sconto",total:"Totale",total_discount:"Sconto Totale",sub_total:"Totale Parziale",tax:"Tassa",amount:"Importo",select_an_item:"Digita o clicca per selezionare un elemento",type_item_description:"Tipo Descrizione Articolo (Opzionale)"},frequency:{title:"Frequenza",select_frequency:"Seleziona Frequenza",minute:"Minuto",hour:"Ora",day_month:"Giorno del mese",month:"Mese",day_week:"Giorno della settimana"},confirm_delete:"Non sarai in grado di recuperare questa fattura | Non sarai in grado di recuperare queste fatture",created_message:"Fattura ricorrente creata con successo",updated_message:"Fattura ricorrente aggiornata correttamente",deleted_message:"Fattura ricorrente eliminata con successo | Fatture ricorrenti eliminate con successo",marked_as_sent_message:"Fattura ricorrente contrassegnata come inviata correttamente",user_email_does_not_exist:"L'e-mail dell'utente non esiste",something_went_wrong:"qualcosa è andato storto",invalid_due_amount_message:"L'importo totale delle fatture ricorrenti non può essere inferiore all'importo totale pagato per questa fattura ricorrente. Si prega di aggiornare la fattura o eliminare i pagamenti associati per continuare."},_G={title:"Pagamenti",payments_list:"Lista Pagamenti",record_payment:"Registra Pagamento",customer:"Cliente",date:"Data",amount:"Ammontare",action:"Azione",payment_number:"Numero di pagamento",payment_mode:"Modalità di Pagamento",invoice:"Fattura",note:"Nota",add_payment:"Aggiungi Pagamento",new_payment:"Nuovo Pagamento",edit_payment:"Modifica Pagamento",view_payment:"Vedi Pagamento",add_new_payment:"Aggiungi nuovo pagamento",send_payment_receipt:"Invia ricevuta di pagamento",send_payment:"Inviare il pagamento",save_payment:"Salva pagamento",update_payment:"Aggiorna pagamento",payment:"Pagamento | Pagamenti",no_payments:"Ancora nessun pagamento!",not_selected:"Non Selezionato",no_invoice:"Nessuna fattura",no_matching_payments:"Non ci sono pagamenti!",list_of_payments:"Questa sezione conterrà la lista dei pagamenti.",select_payment_mode:"Seleziona modalità di pagamento",confirm_mark_as_sent:"Questo preventivo verrà contrassegnato come inviato",confirm_send_payment:"Questo pagamento verrà inviato via email al cliente",send_payment_successfully:"Pagamento inviato con successo",something_went_wrong:"si è verificato un errore",confirm_delete:"Non potrai recuperare questo pagamento | Non potrai recuperare questi pagamenti",created_message:"Pagamento creato con successo",updated_message:"Pagamento aggiornato con successo",deleted_message:"Pagamento cancellato con successo | Pagamenti cancellati con successo",invalid_amount_message:"L'ammontare del pagamento non è valido"},mG={title:"Spese",expenses_list:"Lista Costi",select_a_customer:"Seleziona Cliente",expense_title:"Titolo",customer:"Cliente",currency:"Valuta",contact:"Contatto",category:"Categoria",from_date:"Dalla Data",to_date:"Alla Data",expense_date:"Data",description:"Descrizione",receipt:"Ricevuta",amount:"Ammontare",action:"Azione",not_selected:"Non selezionata",note:"Nota",category_id:"Id categoria",date:"Data Spesa",add_expense:"Aggiungi Spesa",add_new_expense:"Aggiungi nuova Spesa",save_expense:"Salva la Spesa",update_expense:"Aggiorna Spesa",download_receipt:"Scarica la Ricevuta",edit_expense:"Modifica Spesa",new_expense:"Nuova Spesa",expense:"Spesa | Spese",no_expenses:"Ancora nessuna spesa!",list_of_expenses:"Questa sezione conterrà la lista delle Spese.",confirm_delete:"Non potrai recuperare questa spesa | Non potrai recuperare queste spese",created_message:"Spesa creata con successo",updated_message:"Spesa modificata con successo",deleted_message:"Spesa cancellata con successo | Spese cancellate con successo",categories:{categories_list:"Lista categorie",title:"Titolo",name:"Nome",description:"Descrizione",amount:"Ammontare",actions:"Azioni",add_category:"Aggiungi Categoria",new_category:"Nuova Categoria",category:"Categoria | Categorie",select_a_category:"Seleziona Categoria"}},pG={email:"Email",password:"Password",forgot_password:"Password dimenticata?",or_signIn_with:"o fai login con",login:"Accedi",register:"Registrati",reset_password:"Resetta Password",password_reset_successfully:"Password Resettata con successo",enter_email:"Inserisci email",enter_password:"Inserisci Password",retype_password:"Ridigita Password"},fG={buy_now:"Acquista Ora",install:"Installa",price:"Prezzo",download_zip_file:"Scarica il file zip",unzipping_package:"Decompressione del pacchetto in corso",copying_files:"Copia dei file in corso",deleting_files:"Eliminazione dei file inutilizzati",completing_installation:"Finalizzando l'installazione",update_failed:"Aggiornamento non riuscito",install_success:"Modulo installato con successo!",customer_reviews:"Recensioni",license:"Licenza",faq:"FAQ",monthly:"Mensile",yearly:"Annuale",updated:"Aggiornato",version:"Versione",disable:"Disabilita",module_disabled:"Modulo disabilitato",enable:"Attiva",module_enabled:"Modulo attivato",update_to:"Aggiorna a",module_updated:"Modulo aggiornato con successo!",title:"Moduli",module:"Modulo | Moduli",api_token:"Token API",invalid_api_token:"Token API non valido.",other_modules:"Altri Moduli",view_all:"Visualizza tutto",no_reviews_found:"Non ci sono ancora recensioni per questo modulo!",module_not_purchased:"Modulo non acquistato",module_not_found:"Modulo non trovato",version_not_supported:"This module version doesn't support the current version of InvoiceShelf",last_updated:"Ultimo aggiornamento il",connect_installation:"Collega la tua installazione",api_token_description:"Accedi a {url} e collega questa installazione inserendo l'API Token. I moduli acquistati verranno visualizzati qui dopo aver stabilito la connessione.",view_module:"Mostra Modulo",update_available:"Aggiornamento disponibile",purchased:"Acquistato",installed:"Installato",no_modules_installed:"Nessun modulo installato ancora!",disable_warning:"Tutte le impostazioni per questo particolare verranno ripristinate.",what_you_get:"Cosa puoi ottenere"},hG={title:"Utenti",users_list:"Lista Utenti",name:"Nome",description:"Descrizione",added_on:"Aggiunto il",date_of_creation:"Data di creazione",action:"Azione",add_user:"Aggiungi Utente",save_user:"Salva Utente",update_user:"Aggiorna Utente",user:"Utente | Utenti",add_new_user:"Aggiungi Nuovo Utente",new_user:"Nuovo Utente",edit_user:"Modifica Utente",no_users:"Ancora nessun utente!",list_of_users:"Questa sezione conterrà l'elenco degli utenti.",email:"Email",phone:"Telefono",password:"Password",user_attached_message:"Non puoi eliminare una Commessa che è già attiva",confirm_delete:"Non sarai in grado di recuperare questo utente | Non sarai in grado di recuperare questi utenti",created_message:"Utente creato correttamente",updated_message:"Utente aggiornato correttamente",deleted_message:"Utente eliminato con successo | Utenti eliminati con successo",select_company_role:"Seleziona ruolo per {company}",companies:"Aziende"},gG={title:"Segnala",from_date:"Da",to_date:"A",status:"Stato",paid:"Pagato",unpaid:"Non pagato",download_pdf:"Scarica PDF",view_pdf:"Vedi PDF",update_report:"Aggiorna Report",report:"Segnalazione | Segnalazioni",profit_loss:{profit_loss:"Guadagni & Perdite",to_date:"A",from_date:"Da",date_range:"Seleziona intervallo date"},sales:{sales:"Vendite",date_range:"Seleziona intervallo date",to_date:"A",from_date:"Da",report_type:"Tipo di report"},taxes:{taxes:"Tasse",to_date:"Alla data",from_date:"Dalla data",date_range:"Seleziona intervallo date"},errors:{required:"Campo obbligatorio"},invoices:{invoice:"Fattura",invoice_date:"Data fattura",due_date:"Data di pagamento",amount:"Ammontare",contact_name:"Nome contatto",status:"Stato"},estimates:{estimate:"Preventivo",estimate_date:"Data preventivo",due_date:"Data di pagamento",estimate_number:"Numero di preventivo",ref_number:"Numero di Rif.",amount:"Ammontare",contact_name:"Nome contatto",status:"Stato"},expenses:{expenses:"Spese",category:"Categoria",date:"Data",amount:"Ammontare",to_date:"Alla data",from_date:"Dalla data",date_range:"Seleziona intervallo date"}},vG={menu_title:{account_settings:"Impostazioni Account",company_information:"Informazioni Azienda",customization:"Personalizzazione",preferences:"Opzioni",notifications:"Notifiche",tax_types:"Tipi di Imposte",expense_category:"Categorie di spesa",update_app:"Aggiorna App",backup:"Backup",file_disk:"Disco File",custom_fields:"Campi personalizzati",payment_modes:"Modalità di Pagamento",notes:"Note",exchange_rate:"Tasso di cambio",address_information:"Indirizzo"},address_information:{section_description:" Puoi aggiornare le informazioni sul tuo indirizzo utilizzando il modulo sottostante."},title:"Impostazioni",setting:"Opzione | Impostazioni",general:"Generale",language:"Lingua",primary_currency:"Valuta Principale",timezone:"Fuso Orario",date_format:"Formato data",currencies:{title:"Valute",currency:"Valùta | Valute",currencies_list:"Lista valute",select_currency:"Seleziona Valùta",name:"Nome",code:"Codice",symbol:"Simbolo",precision:"Precisione",thousand_separator:"Separatore migliaia",decimal_separator:"Separatore decimali",position:"Posizione",position_of_symbol:"Posizione del Simbolo",right:"Destra",left:"Sinistra",action:"Azione",add_currency:"Aggiungi Valùta"},mail:{host:"Host Mail",port:"Mail - Porta",driver:"Driver Mail",secret:"Segreto",mailgun_secret:"Segreto Mailgun",mailgun_domain:"Dominio",mailgun_endpoint:"Endpoint Mailgun",ses_secret:"Segreto SES",ses_key:"Chiave SES",password:"Password Email",username:"Nome Utente Email",mail_config:"Configurazione Mail",from_name:"Nome Mittente Mail",from_mail:"Indirizzo Mittente Mail",encryption:"Tipo di cifratura Mail",mail_config_desc:"Form per Configurazione Driver Mail per invio mail dall'App. Puoi anche configurare providers di terze parti come Sendgrid, SES, etc.."},pdf:{title:"Configurazione PDF",footer_text:"Testo Footer",pdf_layout:"Layout PDF"},company_info:{company_info:"Info azienda",company_name:"Nome azienda",company_logo:"Logo azienda",section_description:"Informazioni sulla tua azienda che saranno mostrate in fattura, preventivi ed altri documenti creati dell'applicazione.",phone:"Telefono",country:"Paese",state:"Provincia",city:"Città",address:"Indirizzo",zip:"CAP",save:"Salva",delete:"Elimina",updated_message:"Informazioni Azienda aggiornate con successo.",delete_company:"Elimina Azienda",delete_company_description:"Una volta eliminata la tua azienda, perderai tutti i dati e i file associati in modo permanente.",are_you_absolutely_sure:"Sei assolutamente sicuro?",delete_company_modal_desc:"Questa azione non può essere annullata. Questo eliminerà definitivamente {company} e tutti i suoi dati associati.",delete_company_modal_label:"Digita {company} per confermare"},custom_fields:{title:"Campi personalizzati",section_description:"Personalizza le tue fatture, preventivi e ricevute di pagamento con i tuoi campi. Assicurati di utilizzare i campi aggiunti qui sotto nei campi della pagina Personalizzazione delle impostazioni.",add_custom_field:"Aggiungi campo personalizzato",edit_custom_field:"Modifica campo personalizzato",field_name:"Nome campo",label:"Etichetta",type:"genere",name:"Nome",slug:"URL personalizzato",required:"Necessaria",placeholder:"segnaposto",help_text:"Testo guida",default_value:"Valore predefinito",prefix:"Prefisso",starting_number:"Numero iniziale",model:"Modella",help_text_description:"Inserisci del testo per aiutare gli utenti a comprendere lo scopo di questo campo personalizzato.",suffix:"Suffisso",yes:"sì",no:"No",order:"Ordine",custom_field_confirm_delete:"Non sarai in grado di recuperare questo campo personalizzato",already_in_use:"Il campo personalizzato è già in uso",deleted_message:"Campo personalizzato eliminato correttamente",options:"opzioni",add_option:"Aggiungi opzioni",add_another_option:"Aggiungi un'altra opzione",sort_in_alphabetical_order:"Ordina in ordine alfabetico",add_options_in_bulk:"Aggiungi opzioni in blocco",use_predefined_options:"Usa opzioni predefinite",select_custom_date:"Seleziona la data personalizzata",select_relative_date:"Seleziona la data relativa",ticked_by_default:"Contrassegnato per impostazione predefinita",updated_message:"Campo personalizzato aggiornato correttamente",added_message:"Campo personalizzato aggiunto correttamente",press_enter_to_add:"Premi Invio per aggiungere una nuova opzione",model_in_use:"Impossibile aggiornare il modello per i campi già in uso.",type_in_use:"Impossibile aggiornare il tipo per i campi già in uso."},customization:{customization:"personalizzazione",updated_message:"Info azienda aggiornate con successo",save:"Salva",insert_fields:"Inserisci Campi",learn_custom_format:"Impara come utilizzare il formato personalizzato",add_new_component:"Aggiungi un componente",component:"Componente",Parameter:"Parametro",series:"Serie",series_description:"Per impostare un prefisso statico / postfix come 'INV' attraverso la tua azienda. Supporta la lunghezza del personaggio fino a 4 caratteri.",series_param_label:"Valore Serie",delimiter:"Delimitatore",delimiter_description:"Singolo carattere per specificare il confine tra 2 componenti separati. Per impostazione predefinita è impostato a -",delimiter_param_label:"Valore Delimitatore",date_format:"Formato data",date_format_description:"Un campo di data e ora locale che accetta un parametro di formato. Il formato predefinito: 'Y' rende l'anno corrente.",date_format_param_label:"Formato",sequence:"Sequenza",sequence_description:"Sequenza numerica nella tua azienda. Puoi specificare la lunghezza sul parametro specificato.",sequence_param_label:"Lunghezza Sequenza",customer_series:"Serie Cliente",customer_series_description:"Per impostare un prefisso/postfix diverso per ogni cliente.",customer_sequence:"Sequenza Cliente",customer_sequence_description:"Sequenza consecutiva di numeri per ogni vostro cliente.",customer_sequence_param_label:"Lunghezza Sequenza",random_sequence:"Sequenza Casuale",random_sequence_description:"Stringa alfanumerica casuale. Puoi specificare la lunghezza sul parametro dato.",random_sequence_param_label:"Lunghezza Sequenza",invoices:{title:"Fatture",invoice_number_format:"Formato Numero Fattura",invoice_number_format_description:"Personalizza il modo in cui il numero di fattura viene generato automaticamente quando crei una nuova fattura.",preview_invoice_number:"Anteprima Numero Fattura",due_date:"Data di pagamento",due_date_description:"Specificare come la data di scadenza viene impostata automaticamente quando si crea una fattura.",due_date_days:"Scadenza dopo (giorni)",set_due_date_automatically:"Imposta Data Di Scadenza Automaticamente",set_due_date_automatically_description:"Abilita questa opzione se vuoi impostare automaticamente la data di scadenza quando crei una nuova fattura.",default_formats:"Formato predefinito",default_formats_description:"Sotto i formati dati vengono utilizzati per riempire automaticamente i campi alla creazione della fattura.",default_invoice_email_body:"Corpo Email Fattura Predefinito",company_address_format:"Formato Indirizzo Azienda",shipping_address_format:"Formato Indirizzo Di Spedizione",billing_address_format:"Formato Indirizzo Fatturazione",invoice_email_attachment:"Invia fatture come allegati",invoice_email_attachment_setting_description:"Abilita questa opzione se vuoi inviare fatture come allegati email. Si prega di notare che il pulsante 'Visualizza fattura' nelle email non verrà più visualizzato quando ciò viene abilitato.",invoice_settings_updated:"Impostazioni fatture aggiornate con successo",retrospective_edits:"Modifica Retrospettiva",allow:"Permetti",disable_on_invoice_partial_paid:"Disabilita dopo la registrazione del pagamento parziale",disable_on_invoice_paid:"Disabilita dopo la registrazione del pagamento parziale",disable_on_invoice_sent:"Disabilita dopo l'invio della fattura",retrospective_edits_description:" In base alle leggi del tuo paese o alle tue preferenze, puoi limitare gli utenti dalla modifica delle fatture finalizzate."},estimates:{title:"Preventivi",estimate_number_format:"Formato del Numero di Serie",estimate_number_format_description:"Personalizza il modo in cui il numero di fattura viene generato automaticamente quando crei una nuova fattura.",preview_estimate_number:"Anteprima Numero Preventivo",expiry_date:"Data di scadenza",expiry_date_description:"Specificare come la data di scadenza viene impostata automaticamente quando si crea una fattura.",expiry_date_days:"Stima Scade dopo giorni",set_expiry_date_automatically:"Imposta Data Di Scadenza Automaticamente",set_expiry_date_automatically_description:"Abilita questa opzione se vuoi impostare automaticamente la data di scadenza quando crei una nuova fattura.",default_formats:"Formato predefinito",default_formats_description:"Sotto i formati dati vengono utilizzati per riempire automaticamente i campi alla creazione della fattura.",default_estimate_email_body:"Corpo Email Preventivo Predefinito",company_address_format:"Formato Indirizzo Azienda",shipping_address_format:"Formato Indirizzo Spedizione",billing_address_format:"Formato Indirizzo Fatturazione",estimate_email_attachment:"Invia stime come allegati",estimate_email_attachment_setting_description:"Abilita questa opzione se vuoi inviare fatture come allegati email. Si prega di notare che il pulsante 'Visualizza fattura' nelle email non verrà più visualizzato quando ciò viene abilitato.",estimate_settings_updated:"Impostazioni preventivi aggiornate con successo",convert_estimate_options:"Preventivo Converti Azione",convert_estimate_description:"Specificare cosa succede al preventivo dopo che viene convertito in una fattura.",no_action:"Nessuna azione",delete_estimate:"Elimina preventivo",mark_estimate_as_accepted:"Segna preventivo come accettato"},payments:{title:"Pagamenti",payment_number_format:"Formato Numero Pagamento",payment_number_format_description:"Personalizza il modo in cui il numero di fattura viene generato automaticamente quando crei una nuova fattura.",preview_payment_number:"Anteprima Numero Di Pagamento",default_formats:"Formato predefinito",default_formats_description:"Sotto i formati dati vengono utilizzati per riempire automaticamente i campi alla creazione della fattura.",default_payment_email_body:"Corpo Email Pagamento Predefinito",company_address_format:"Formato Indirizzo Azienda",from_customer_address_format:"Dal Formato Indirizzo Cliente",payment_email_attachment:"Invia stime come allegati",payment_email_attachment_setting_description:"Abilita questa opzione se vuoi inviare fatture come allegati email. Si prega di notare che il pulsante 'Visualizza fattura' nelle email non verrà più visualizzato quando ciò viene abilitato.",payment_settings_updated:"Impostazioni di pagamento aggiornate con successo"},items:{title:"Commesse",units:"unità",add_item_unit:"Aggiungi Unità Item",edit_item_unit:"Modifica unità articolo",unit_name:"Nome",item_unit_added:"Unità aggiunta",item_unit_updated:"Unità aggiornata",item_unit_confirm_delete:"Non potrai ripristinare questa unità Item",already_in_use:"Unità Item già in uso",deleted_message:"Unità item eliminata con successo"},notes:{title:"Note",description:"Risparmia tempo creando note e riutilizzandole sulle tue fatture, preventivi e pagamenti.",notes:"Note",type:"genere",add_note:"Aggiungi Nota",add_new_note:"Aggiungi nuova nota",name:"Nome",edit_note:"Modifica nota",note_added:"Nota aggiunta correttamente",note_updated:"Nota aggiornata correttamente",note_confirm_delete:"Non sarà possibile recuperare questa nota",already_in_use:"Nota già in uso",deleted_message:"Nota eliminata con successo"}},account_settings:{profile_picture:"Immagine profilo",name:"Nome",email:"Email",password:"Password",confirm_password:"Conferma Password",account_settings:"Impostazioni Account",save:"Salva",section_description:"Puoi aggiornare nome email e password utilizzando il form qui sotto.",updated_message:"Impostazioni account aggiornate con successo"},user_profile:{name:"Nome",email:"Email",password:"Password",confirm_password:"Conferma Password"},notification:{title:"Notifica",email:"Invia notifiche a",description:"Quali notifiche email vorresti ricevere quando qualcosa cambia?",invoice_viewed:"Fattura visualizzata",invoice_viewed_desc:"Quando il cliente visualizza la fattura inviata via dashboard applicazione.",estimate_viewed:"Preventivo visualizzato",estimate_viewed_desc:"Quando il cliente visualizza il preventivo inviato dall'applicazione.",save:"Salva",email_save_message:"Email salvata con successo",please_enter_email:"Inserisci Email"},roles:{title:"Ruoli",description:"Gestisci i ruoli e i permessi di questa azienda",save:"Salva",add_new_role:"Aggiungi Nuovo Ruolo",role_name:"Nome Ruolo",added_on:"Aggiunto il",add_role:"Aggiungi Ruolo",edit_role:"Modifica Ruolo",name:"Nome",permission:"Permesso | Permessi",select_all:"Seleziona tutto",none:"Nessuno",confirm_delete:"Non sarai in grado di recuperare questo ruolo",created_message:"Utente creato correttamente",updated_message:"Ruolo aggiornato correttamente",deleted_message:"Ruolo eliminato con successo",already_in_use:"Ruolo già in uso"},exchange_rate:{exchange_rate:"Tasso di cambio",title:"Correggi i problemi di cambio valuta",description:"Inserisci il tasso di cambio di tutte le valute menzionate di seguito per aiutare il InvoiceShelfe a calcolare correttamente gli importi in {currency}.",drivers:"Drivers",new_driver:"Aggiungi Nuovo Fornitore",edit_driver:"Modifica Fornitore",select_driver:"Seleziona Driver",update:"seleziona il tasso di cambio ",providers_description:"Configura qui i tuoi fornitori di tassi di cambio per recuperare automaticamente l'ultimo tasso di cambio sulle transazioni.",key:"Chiave API",name:"Nome",driver:"Driver",is_default:"É PREDEFINITO",currency:"Valute",exchange_rate_confirm_delete:"Non sarà possibile recuperare questo driver",created_message:"Fornitore creato con successo",updated_message:"Provider Aggiornato Con Successo",deleted_message:"Provider Eliminato Con Successo",error:" Impossibile Eliminare Il Driver Attivo",default_currency_error:"Questa valuta è già utilizzata in uno dei Provider Attivi",exchange_help_text:"Inserisci il tasso di cambio da {currency} a {baseCurrency}",currency_freak:"Valuta Freak",currency_layer:"Livello Valuta",open_exchange_rate:"Tasso Di Cambio Aperto",currency_converter:"Convertitore Valuta",server:"Server",url:"Indirizzo",active:"Attivo",currency_help_text:"Questo provider sarà utilizzato solo sulle valute sopra selezionate",currency_in_used:"Le seguenti valute sono già attive su un altro provider. Si prega di rimuovere queste valute dalla selezione per attivare nuovamente questo provider."},tax_types:{title:"Tipi di Imposte",add_tax:"Aggiungi Imposta",edit_tax:"Modifica imposta",description:"Puoi aggiongere e rimuovere imposte a piacimento. Vengono supportate Tasse differenti per prodotti/servizi specifici esattamento come per le fatture.",add_new_tax:"Aggiungi nuova imposta",tax_settings:"Impostazioni Imposte",tax_per_item:"Tassa per prodotto/servizio",tax_name:"Nome imposta",compound_tax:"Imposta composta",percent:"Percento",action:"Azione",tax_setting_description:"Abilita se vuoi aggiungere imposte specifiche per prodotti o servizi. Di default le imposte sono aggiunte direttamente alla fattura.",created_message:"Tipo di imposta creato con successo",updated_message:"Tipo di imposta aggiornato con successo",deleted_message:"Tipo di imposta eliminato con successo",confirm_delete:"Non potrai ripristinare questo tipo di imposta",already_in_use:"Imposta già in uso"},payment_modes:{title:"Modalità di pagamento",description:"Modalità di transazione per i pagamenti",add_payment_mode:"Aggiungi modalità di pagamento",edit_payment_mode:"Modifica modalità di pagamento",mode_name:"Nome modalità",payment_mode_added:"Modalità di pagamento aggiunta",payment_mode_updated:"Modalità di pagamento aggiornata",payment_mode_confirm_delete:"Non potrai ripristinare la modalità di pagamento",payments_attached:"Questo metodo di pagamento è già allegato ai pagamenti. Si prega di eliminare i pagamenti allegati per procedere con la cancellazione.",expenses_attached:"Questo metodo di pagamento è già allegato alle spese. Si prega di eliminare le spese allegate per procedere alla cancellazione.",deleted_message:"Modalità di pagamento eliminata con successo"},expense_category:{title:"Categorie di spesa",action:"Azione",description:"Le categorie sono necessarie per aggiungere delle voci di spesa. Puoi aggiungere o eliminare queste categorie in base alle tue preferenze.",add_new_category:"Aggiungi nuova categoria",add_category:"Aggiungi categoria",edit_category:"Modifica categoria",category_name:"Nome Categoria",category_description:"Descrizione",created_message:"Categoria di spesa creata con successo",deleted_message:"Categoria di spesa eliminata con successo",updated_message:"Categoria di spesa aggiornata con successo",confirm_delete:"Non potrai ripristinare questa categoria di spesa",already_in_use:"Categoria già in uso"},preferences:{currency:"Valùta",default_language:"Lingua predefinita",time_zone:"Fuso Orario",fiscal_year:"Anno finanziario",date_format:"Formato Data",discount_setting:"Impostazione Sconto",discount_per_item:"Sconto Per Item ",discount_setting_description:"Abilita se vuoi aggiungere uno sconto ad uno specifica fattura. Di default, lo sconto è aggiunto direttamente in fattura.",expire_public_links:"Scadenza Automatica dei Link Pubblici",expire_setting_description:"Specifica se si vuole far scadere tutti i link inviati dall'applicazione per visualizzare fatture, preventivi e pagamenti, ecc. dopo una durata specificata.",save:"Salva",preference:"Preferenza | Preferenze",general_settings:"Impostazioni di default del sistema.",updated_message:"Preferenze aggiornate con successo",select_language:"seleziona lingua",select_time_zone:"Seleziona Time Zone",select_date_format:"Seleziona Formato Data",select_financial_year:"Seleziona anno finanziario",recurring_invoice_status:"Stato Fattura Ricorrente",create_status:"Crea stato",active:"Attivo",on_hold:"In sospeso",update_status:"Aggiorna stato",completed:"Completato",company_currency_unchangeable:"La valuta dell'azienda non può essere cambiata"},update_app:{title:"Aggiorna App",description:"Puoi facilmente aggiornare l'app. Aggiorna cliccando sul bottone qui sotto",check_update:"Controllo aggiornamenti",avail_update:"Aggiornamento disponibile",next_version:"Versione successiva",requirements:"Requisiti",update:"Aggiorna ora",update_progress:"Aggiornamento in corso...",progress_text:"Sarà necessario qualche minuto. Per favore non aggiornare la pagina e non chiudere la finestra prima che l'aggiornamento sia completato",update_success:"L'App è aggiornata! Attendi che la pagina venga ricaricata automaticamente.",latest_message:"Nessun aggiornamneto disponibile! Sei già alla versione più recente.",current_version:"Versione corrente",download_zip_file:"Scarica il file ZIP",unzipping_package:"Pacchetto di decompressione",copying_files:"Copia dei file",deleting_files:"Eliminazione dei file inutilizzati",running_migrations:"Esecuzione delle migrazioni",finishing_update:"Aggiornamento di finitura",update_failed:"Aggiornamento non riuscito",update_failed_text:"Scusate! L'aggiornamento non è riuscito il: passaggio {step}",update_warning:"Tutti i file dell'applicazione e i file di modello predefiniti verranno sovrascritti quando si aggiorna l'applicazione utilizzando questa utility. Si prega di fare un backup dei modelli e del database prima di aggiornare."},backup:{title:"Backup | Backups",description:"Il backup è un file zip che contiene tutti i file nelle cartelle specificate con un dump del vostro database",new_backup:"Nuovo Backup",create_backup:"Crea Backup",select_backup_type:"Scegli tipo di backup",backup_confirm_delete:"Non sarà possibile recuperare questo backup",path:"percorso",new_disk:"Nuovo Disco",created_at:"creato il",size:"dimensioni",dropbox:"dropbox",local:"locale",healthy:"sano",amount_of_backups:"quantità di backup",newest_backups:"backup più recenti",used_storage:"spazio utilizzato",select_disk:"Seleziona Disco",action:"Azione",deleted_message:"Backup eliminato con successo",created_message:"Backup creato con successo",invalid_disk_credentials:"Credenziali del disco selezionato non valide"},disk:{title:"Disco File | Dischi File",description:"Per impostazione predefinita, InvoiceShelf utilizzerà il disco locale per salvare backup, avatar e altri file di immagine. Puoi configurare più di un driver disco come DigitalOcean, S3 e Dropbox in base alle tue preferenze.",created_at:"creato il",dropbox:"dropbox",name:"Nome",driver:"Driver",disk_type:"genere",disk_name:"Nome Disco",new_disk:"Aggiungi Nuovo Disco",filesystem_driver:"Driver Filesystem",local_driver:"driver locale",local_root:"radice locale",public_driver:"Driver Pubblico",public_root:"Root Pubblica",public_url:"Url Pubblico",public_visibility:"Visibilità Pubblica",media_driver:"Driver Media",media_root:"Media Root",aws_driver:"Driver AWS",aws_key:"Chiave AWS",aws_secret:"Segreto AWS",aws_region:"Regione AWS",aws_bucket:"Bucket AWS",aws_root:"Root AWS",do_spaces_type:"tipo Do Spaces",do_spaces_key:"chiave Do Spaces",do_spaces_secret:"segreto Do Spaces",do_spaces_region:"regione Do Spaces",do_spaces_bucket:"bucket Do Spaces",do_spaces_endpoint:"endpoint Do Spaces",do_spaces_root:"root Do Spaces",dropbox_type:"Tipo Dropbox",dropbox_token:"Token Dropbox",dropbox_key:"Chiave Dropbox",dropbox_secret:"Segreto Dropbox",dropbox_app:"App Dropbox",dropbox_root:"Root Dropbox",default_driver:"Driver Predefinito",is_default:"È DEFAULT",set_default_disk:"Imposta Disco Predefinito",set_default_disk_confirm:"Questo disco sarà impostato come predefinito e tutti i nuovi PDF saranno salvati su questo disco",success_set_default_disk:"Disco impostato come predefinito correttamente",save_pdf_to_disk:"Salva i PDF su disco",disk_setting_description:" Abilita questa opzione, se vuoi salvare automaticamente una copia di ogni PDF Fattura, Preventivo e Ricevuta di Pagamento sul tuo disco predefinito. Attivare questa opzione diminuirà il tempo di caricamento durante la visualizzazione dei PDF.",select_disk:"Seleziona Disco",disk_settings:"Impostazioni Disco",confirm_delete:"I file e le cartelle esistenti nel disco specificato non saranno toccati, ma la configurazione del disco sarà eliminata dal InvoiceShelf",action:"Azione",edit_file_disk:"Modifica Disco File",success_create:"Disco aggiunto correttamente",success_update:"Disco aggiornato correttamente",error:"Aggiunta del disco fallita",deleted_message:"Disco file eliminato con successo",disk_variables_save_successfully:"Disco Configurato Con successo",disk_variables_save_error:"Configurazione disco fallita.",invalid_disk_credentials:"Credenziali del disco selezionato non valide"},taxations:{add_billing_address:"Inserisci l'indirizzo di Fatturazione",add_shipping_address:"Inserisci l'indirizzo di Spedizione",add_company_address:"Inserisci l'indirizzo aziendale",modal_description:"Le informazioni di seguito sono richieste per recuperare l'imposta sulle vendite.",add_address:"Aggiungi indirizzo per recuperare l'imposta sulle vendite.",address_placeholder:"Esempio: Via Garibaldi, 123",city_placeholder:"Esempio: Roma",state_placeholder:"Esempio: RM",zip_placeholder:"Esempio: 00100",invalid_address:"Fornisci un indirizzo valido."}},yG={account_info:"Informazioni Account",account_info_desc:"I dettagli qui sotto verranno usati per creare l'account principale dell'Amministratore. Puoi modificarli in qualsiasi momento dopo esserti loggato come Amministratore.",name:"Nome",email:"Email",password:"Password",confirm_password:"Conferma Password",save_cont:"Salva & Continua",company_info:"Informazioni Azienda",company_info_desc:"Questa informazione verrà mostrata nelle fatture. Puoi modificare queste informazione in un momento successivo dalla pagina delle impostazioni.",company_name:"Nome Azienda",company_logo:"Logo Azienda",logo_preview:"Anteprima Logo",preferences:"Impostazioni",preferences_desc:"Impostazioni di default del sistema.",currency_set_alert:"La valuta dell'azienda non può essere modificata più tardi.",country:"Paese",state:"Provincia",city:"Città",address:"Indirizzo",street:"Indirizzo1 | Indirizzo2",phone:"Telefono",zip_code:"CAP/Zip Code",go_back:"Torna indietro",currency:"Valùta",language:"Lingua",time_zone:"Fuso Orario",fiscal_year:"Anno Finanziario",date_format:"Formato Date",from_address:"Indirizzo - Da",username:"Nome utente",next:"Successivo",continue:"Continua",skip:"Salta",database:{database:"URL del sito & database",connection:"Connessione Database",host:"Host Database",port:"Database - Porta",password:"Password Database",app_url:"URL dell'App",app_domain:"Dominio App",username:"Nome Utente del Database",db_name:"Database Nome",db_path:"Percorso del database",desc:"Crea un database sul tuo server e setta le credenziali usando il form qui sotto."},permissions:{permissions:"Permessi",permission_confirm_title:"Sei sicuro di voler continuare?",permission_confirm_desc:"Controllo sui permessi Cartelle, fallito",permission_desc:"Qui sotto la lista dei permessi richiesti per far funzionare correttamente l'App. Se il controllo dei permessi fallisce, assicurati di aggiornare/modificare i permessi sulle cartelle."},verify_domain:{title:"Verifica Dominio",desc:"InvoiceShelf utilizza l'autenticazione basata su sessione, che richiede la verifica del dominio per scopi di sicurezza. Inserisci il dominio su cui accederai alla tua applicazione web.",app_domain:"Dominio App",verify_now:"Verifica Ora",success:"Dominio Verificato Con Successo.",failed:"Verifica del dominio fallita. Inserisci un nome di dominio valido.",verify_and_continue:"Verifica e continua"},mail:{host:"Host Mail",port:"Mail - Porta",driver:"Driver Mail",secret:"Segreto",mailgun_secret:"Segreto Mailgun",mailgun_domain:"Dominio",mailgun_endpoint:"Endpoint Mailgun",ses_secret:"Segreto SES",ses_key:"Chiave SES",password:"Password Email",username:"Nome Utente Email",mail_config:"Configurazione Mail",from_name:"Nome mittente mail",from_mail:"Indirizzo mittente mail",encryption:"Tipo di cifratura Mail",mail_config_desc:"Form per configurazione del 'driver mail' per inviare emails dall'App. Puoi anche configurare servizi di terze parti come Sendgrid, SES, ecc.."},req:{system_req:"Requisiti di Sistema",php_req_version:"Php (versione {version} richiesta)",check_req:"Controllo Requisiti",system_req_desc:"InvoiceShelf ha alcuni requisiti di sistema. Assicurati che il server ha la versione di php richiesta e tutte le estensioni necessarie."},errors:{migrate_failed:"Migrazione Fallita",database_variables_save_error:"Impossibile scrivere la configurazione nel file .env. Si prega di controllare i permessi dei file",mail_variables_save_error:"Configurazione email fallita.",connection_failed:"Connessione al Database fallita",database_should_be_empty:"Il database dovrebbe essere vuoto"},success:{mail_variables_save_successfully:"Email configurata con successo",database_variables_save_successfully:"Database configurato con successo."}},bG={invalid_phone:"Numero di telefono invalido",invalid_url:"URL non valido (es: http://www.invoiceshelf.com)",invalid_domain_url:"URL non valido (es: invoiceshelf.com)",required:"Campo obbligatorio",email_incorrect:"Email non corretta.",email_already_taken:"Email già in uso.",email_does_not_exist:"L'utente con questa email non esiste",item_unit_already_taken:"Questo nome item è già utilizzato",payment_mode_already_taken:"Questa modalità di pagamento è già stata inserita.",send_reset_link:"Invia Link di Reset",not_yet:"Non ancora? Invia di nuovo",password_min_length:"La password deve contenere {count} caratteri",name_min_length:"Il nome deve avere almeno {count} lettere.",prefix_min_length:"Il prefisso deve contenere almeno {count} lettere.",enter_valid_tax_rate:"Inserisci un tasso di imposta valido",numbers_only:"Solo numeri.",characters_only:"Solo caratteri.",password_incorrect:"La Password deve essere identica",password_length:"La password deve essere lunga {count} caratteri.",qty_must_greater_than_zero:"La quantità deve essere maggiore di zero.",price_greater_than_zero:"Il prezzo deve essere maggiore di zero.",payment_greater_than_zero:"Il pagamento deve essere maggiore di zero.",payment_greater_than_due_amount:"Il pagamento inserito è maggiore di quello indicato in fattura.",quantity_maxlength:"La Quantità non può essere maggiore di 20 cifre.",price_maxlength:"Il prezzo non può contenere più di 20 cifre.",price_minvalue:"Il prezzo deve essere maggiore di 0.",amount_maxlength:"La somma non deve contenere più di 20 cifre.",amount_minvalue:"La somma deve essere maggiore di 0.",discount_maxlength:"Lo sconto non deve essere superiore allo sconto massimo",description_maxlength:"La Descrizione non deve superare i 255 caratteri.",subject_maxlength:"L'Oggetto non deve superare i 100 caratter.",message_maxlength:"Il messaggio non può superare i 255 caratteri.",maximum_options_error:"Massimo di {max} opzioni selezionate. Per selezionare un'altra opzione deseleziona prima una opzione.",notes_maxlength:"Le note non possono superare i 255 caratteri.",address_maxlength:"L'Indirizzo non può eccedere i 255 caratteri.",ref_number_maxlength:"Il Numero di Riferimento non può superare i 255 caratteri.",prefix_maxlength:"Il Prefisso non può superare i 5 caratteri.",something_went_wrong:"Si è verificato un errore",number_length_minvalue:"La lunghezza del numero deve essere maggiore di 0",at_least_one_ability:"Seleziona almeno un permesso.",valid_driver_key:"Inserisci una chiave {driver} valida.",valid_exchange_rate:"Inserisci un tasso di cambio valido.",company_name_not_same:"Il nome dell'azienda deve corrispondere al nome indicato."},kG={starter_plan:"Questa funzione è disponibile dal piano Starter, in poi!",invalid_provider_key:"Inserisci una API Key valida per il Fornitore.",estimate_number_used:"Il numero stimato è già stato preso.",invoice_number_used:"Il numero della fattura è già stato utilizzato.",payment_attached:"Una delle fatture selezionate ha già associato un pagamento. Assicurati di eliminare il pagamento associato prima di procedere con la rimozione.",payment_number_used:"Questa modalità di pagamento è già stata inserita.",name_already_taken:"Questo Nome esiste giá.",receipt_does_not_exist:"La ricevuta non esiste.",customer_cannot_be_changed_after_payment_is_added:"Il cliente non può essere modificato dopo aver aggiunto il pagamento",invalid_credentials:"Credenziali non valide",not_allowed:"Non Consentito",login_invalid_credentials:"Queste credenziali non corrispondono ai nostri record.",enter_valid_cron_format:"Inserisci un formato cron valido",email_could_not_be_sent:"Impossibile inviare l'email a questo indirizzo email.",invalid_address:"Inserisci un indirizzo valido.",invalid_key:"Inserisci una chiave valida.",invalid_state:"Inserisci una provincia valida.",invalid_city:"Inserisci una città valida.",invalid_postal_code:"Inserisci un CAP valido.",invalid_format:"Inserisci un formato di query string valido.",api_error:"Il server non risponde.",feature_not_enabled:"Funzionalità non abilitata.",request_limit_met:"Limite richiesta API superato.",address_incomplete:"Indirizzo incompleto"},wG="Preventivo",DG="Preventivo Numero",xG="Data preventivo",SG="Data di scadenza",PG="Fattura",EG="Numero Fattura",zG="Data fattura",AG="Data di pagamento",CG="Note",TG="Commesse",jG="Quantità",NG="Prezzo",IG="Sconto",FG="Ammontare",RG="Parziale",OG="Totale",MG="Pagamento",$G="RICEVUTA DI PAGAMENTO",LG="Data di pagamento",BG="Numero di pagamento",UG="Modalità di Pagamento",VG="Importo Ricevuto",qG="RELAZIONE SPESE",WG="TOTALE SPESE",HG="RELAZIONE PROFITTO E PERDITE",KG="Report Vendite Clienti",YG="Rapporto vendite",ZG="Rapporto Riepilogo Tasse",GG="REDDITO",QG="PROFITTO NETTO",JG="Relazione Vendite: Per Cliente",XG="TOTALE VENDITE",eQ="Relazione Vendite: Per Articolo",tQ="RELAZIONE FISCALE",aQ="TOTALE IMPOSTA",nQ="Tipi di Imposta",iQ="Uscite",oQ="Fattura a,",sQ="Invia a,",rQ="Ricevuto da:",lQ="Tassa",cQ={navigation:eG,general:tG,dashboard:aG,tax_types:nG,global_search:iG,company_switcher:oG,dateRange:sG,customers:rG,items:lG,estimates:cG,invoices:dG,recurring_invoices:uG,payments:_G,expenses:mG,login:pG,modules:fG,users:hG,reports:gG,settings:vG,wizard:yG,validation:bG,errors:kG,pdf_estimate_label:wG,pdf_estimate_number:DG,pdf_estimate_date:xG,pdf_estimate_expire_date:SG,pdf_invoice_label:PG,pdf_invoice_number:EG,pdf_invoice_date:zG,pdf_invoice_due_date:AG,pdf_notes:CG,pdf_items_label:TG,pdf_quantity_label:jG,pdf_price_label:NG,pdf_discount_label:IG,pdf_amount_label:FG,pdf_subtotal:RG,pdf_total:OG,pdf_payment_label:MG,pdf_payment_receipt_label:$G,pdf_payment_date:LG,pdf_payment_number:BG,pdf_payment_mode:UG,pdf_payment_amount_received_label:VG,pdf_expense_report_label:qG,pdf_total_expenses_label:WG,pdf_profit_loss_label:HG,pdf_sales_customers_label:KG,pdf_sales_items_label:YG,pdf_tax_summery_label:ZG,pdf_income_label:GG,pdf_net_profit_label:QG,pdf_customer_sales_report:JG,pdf_total_sales_label:XG,pdf_item_sales_label:eQ,pdf_tax_report_label:tQ,pdf_total_tax_label:aQ,pdf_tax_types_label:nQ,pdf_expenses_label:iQ,pdf_bill_to:oQ,pdf_ship_to:sQ,pdf_received_from:rQ,pdf_tax_label:lQ},dQ={dashboard:"Komandna tabla",customers:"Klijenti",items:"Stavke",invoices:"Fakture","recurring-invoices":"Recurring Invoices",expenses:"Rashodi",estimates:"Profakture",payments:"Uplate",reports:"Izveštaji",settings:"Podešavanja",logout:"Odjavi se",users:"Korisnici",modules:"Modules"},uQ={add_company:"Dodaj kompaniju",view_pdf:"Pogledaj PDF",copy_pdf_url:"Kopiraj PDF link",download_pdf:"Preuzmi PDF",save:"Sačuvaj",create:"Napravi",cancel:"Otkaži",update:"Ažuriraj",deselect:"Poništi izbor",download:"Preuzmi",from_date:"Od Datuma",to_date:"Do Datuma",from:"Pošiljalac",to:"Primalac",ok:"Ok",yes:"Yes",no:"No",sort_by:"Rasporedi Po",ascending:"Rastuće",descending:"Opadajuće",subject:"Predmet",body:"Telo",message:"Poruka",send:"Pošalji",preview:"Preview",go_back:"Idi nazad",back_to_login:"Nazad na prijavu?",home:"Početna",filter:"Filter",delete:"Obriši",edit:"Izmeni",view:"Pogledaj",add_new_item:"Dodaj novu stavku",clear_all:"Izbriši sve",showing:"Prikazivanje",of:"od",actions:"Akcije",subtotal:"UKUPNO",discount:"POPUST",fixed:"Fiksno",percentage:"Procenat",tax:"POREZ",total_amount:"UKUPAN IZNOS",bill_to:"Račun za",ship_to:"Isporučiti za",due:"Dužan",draft:"U izradi",sent:"Poslato",all:"Sve",select_all:"Izaberi sve",select_template:"Select Template",choose_file:"Klikni ovde da izabereš fajl",choose_template:"Izaberi šablon",choose:"Izaberi",remove:"Ukloni",select_a_status:"Izaberi status",select_a_tax:"Izaberi porez",search:"Pretraga",are_you_sure:"Da li ste sigurni?",list_is_empty:"Lista je prazna.",no_tax_found:"Porez nije pronađen!",four_zero_four:"404",you_got_lost:"Ups! Izgubio si se!",go_home:"Idi na početnu stranicu",test_mail_conf:"Testiraj podešavanje Pošte",send_mail_successfully:"Pošta uspešno poslata",setting_updated:"Podešavanje uspešno ažurirano",select_state:"Odaberi saveznu državu",select_country:"Odaberi državu",select_city:"Odaberi grad",street_1:"Adresa 1",street_2:"Adresa 2",action_failed:"Akcija nije uspela",retry:"Pokušaj ponovo",choose_note:"Odaberi napomenu",no_note_found:"Ne postoje sačuvane napomene",insert_note:"Unesi belešku",copied_pdf_url_clipboard:"Link do PDF fajla kopiran!",copied_url_clipboard:"Copied url to clipboard!",docs:"Docs",do_you_wish_to_continue:"Do you wish to continue?",note:"Note",pay_invoice:"Pay Invoice",login_successfully:"Logged in successfully!",logged_out_successfully:"Logged out successfully",mark_as_default:"Mark as default"},_Q={select_year:"Odaberi godinu",cards:{due_amount:"Dužan iznos",customers:"Klijenti",invoices:"Fakture",estimates:"Profakture",payments:"Payments"},chart_info:{total_sales:"Prodaja",total_receipts:"Računi",total_expense:"Rashodi",net_income:"Prihod NETO",year:"Odaberi godinu"},monthly_chart:{title:"Prodaja & Rashodi"},recent_invoices_card:{title:"Dospele fakture",due_on:"Datum dospevanja",customer:"Klijent",amount_due:"Iznos dospeća",actions:"Akcije",view_all:"Pogledaj sve"},recent_estimate_card:{title:"Nedavne profakture",date:"Datum",customer:"Klijent",amount_due:"Iznos dospeća",actions:"Akcije",view_all:"Pogledaj sve"}},mQ={name:"Naziv",description:"Opis",percent:"Procenat",compound_tax:"Složeni porez"},pQ={search:"Pretraga...",customers:"Klijenti",users:"Korisnici",no_results_found:"Nema rezultata"},fQ={label:"SWITCH COMPANY",no_results_found:"No Results Found",add_new_company:"Add new company",new_company:"New company",created_message:"Company created successfully"},hQ={today:"Today",this_week:"This Week",this_month:"This Month",this_quarter:"This Quarter",this_year:"This Year",previous_week:"Previous Week",previous_month:"Previous Month",previous_quarter:"Previous Quarter",previous_year:"Previous Year",custom:"Custom"},gQ={title:"Klijenti",prefix:"Prefix",add_customer:"Dodaj Klijenta",contacts_list:"Lista klijenata",name:"Naziv",mail:"Mail | Mail-ovi",statement:"Izjava",display_name:"Naziv koji se prikazuje",primary_contact_name:"Primarna kontakt osoba",contact_name:"Naziv kontakt osobe",amount_due:"Iznos dospeća",email:"E-mail",address:"Adresa",phone:"Telefon",website:"Veb stranica",overview:"Pregled",invoice_prefix:"Invoice Prefix",estimate_prefix:"Estimate Prefix",payment_prefix:"Payment Prefix",enable_portal:"Uključi portal",country:"Država",state:"Savezna država",city:"Grad",zip_code:"Poštanski broj",added_on:"Datum dodavanja",action:"Akcija",password:"Šifra",confirm_password:"Confirm Password",street_number:"Broj ulice",primary_currency:"Primarna valuta",description:"Opis",add_new_customer:"Dodaj novog klijenta",save_customer:"Sačuvaj klijenta",update_customer:"Ažuriraj klijenta",customer:"Klijent | Klijenti",new_customer:"Nov klijent",edit_customer:"Izmeni klijenta",basic_info:"Osnovne informacije",portal_access:"Portal Access",portal_access_text:"Would you like to allow this customer to login to the Customer Portal?",portal_access_url:"Customer Portal Login URL",portal_access_url_help:"Please copy & forward the above given URL to your customer for providing access.",billing_address:"Adresa za naplatu",shipping_address:"Adresa za dostavu",copy_billing_address:"Kopiraj iz adrese za naplatu",no_customers:"Još uvek nema klijenata!",no_customers_found:"Klijenti nisu pronađeni!",no_contact:"Nema kontakta",no_contact_name:"Nema naziva kontakta",list_of_customers:"Ova sekcija će da sadrži spisak klijenata.",primary_display_name:"Primarni naziv koji se prikazuje",select_currency:"Odaberi valutu",select_a_customer:"Odaberi klijenta",type_or_click:"Unesi tekst ili klikni da izabereš",new_transaction:"Nova transakcija",no_matching_customers:"Ne postoje klijenti koji odgovaraju pretrazi!",phone_number:"Broj telefona",create_date:"Datum kreiranja",confirm_delete:"Nećeš moći da povratiš ovog klijenta i sve njegove Fakture, Profakture i Uplate. | Nećeš moći da povratiš ove klijente i njihove Fakture, Profakture i Uplate.",created_message:"Klijent uspešno kreiran",updated_message:"Klijent uspešno ažuriran",address_updated_message:"Address Information Updated succesfully",deleted_message:"Klijent uspešno obrisan | Klijenti uspešno obrisani",edit_currency_not_allowed:"Cannot change currency once transactions created."},vQ={title:"Stavke",items_list:"Lista stavki",name:"Naziv",unit:"Jedinica",description:"Opis",added_on:"Datum dodavanja",price:"Cena",date_of_creation:"Datum kreiranja",not_selected:"Nije odabrana niti jedna stavka",action:"Akcije",add_item:"Dodaj Stavku",save_item:"Sačuvaj Stavku",update_item:"Ažuriraj Stavku",item:"Stavka | Stavke",add_new_item:"Dodaj novu stavku",new_item:"Nova stavka",edit_item:"Izmeni stavku",no_items:"Još uvek nema stavki!",list_of_items:"Ova sekcija će da sadrži spisak stavki.",select_a_unit:"odaberi jedinicu",taxes:"Porezi",item_attached_message:"Nije dozvoljeno brisanje stavke koje se koristi",confirm_delete:"Nećeš moći da povratiš ovu Stavku | Nećeš moći da povratiš ove Stavke",created_message:"Stavka uspešno kreirana",updated_message:"Stavka uspešno ažurirana",deleted_message:"Stavka uspešno obrisana | Stavke uspešno obrisane"},yQ={title:"Profakture",accept_estimate:"Accept Estimate",reject_estimate:"Reject Estimate",estimate:"Profaktura | Profakture",estimates_list:"Lista profaktura",days:"{days} Dan",months:"{months} Mesec",years:"{years} Godina",all:"Sve",paid:"Plaćeno",unpaid:"Neplaćeno",customer:"KLIJENT",ref_no:"POZIV NA BROJ",number:"BROJ",amount_due:"IZNOS DOSPEĆA",partially_paid:"Delimično Plaćeno",total:"Ukupno za plaćanje",discount:"Popust",sub_total:"Osnovica za obračun PDV-a",estimate_number:"Broj profakture",ref_number:"Poziv na broj",contact:"Kontakt",add_item:"Dodaj stavku",date:"Datum",due_date:"Datum Dospeća",expiry_date:"Datum Isteka",status:"Status",add_tax:"Dodaj Porez",amount:"Iznos",action:"Akcija",notes:"Napomena",tax:"Porez",estimate_template:"Šablon",convert_to_invoice:"Pretvori u Fakturu",mark_as_sent:"Označi kao Poslato",send_estimate:"Pošalji Profakturu",resend_estimate:"Ponovo pošalji Profakturu",record_payment:"Unesi uplatu",add_estimate:"Dodaj Profakturu",save_estimate:"Sačuvaj Profakturu",confirm_conversion:"Detalji ove Profakture će biti iskorišćeni za pravljenje Fakture.",conversion_message:"Faktura uspešno kreirana",confirm_send_estimate:"Ova Profaktura će biti poslata putem Email-a klijentu",confirm_mark_as_sent:"Ova Profaktura će biti označena kao Poslata",confirm_mark_as_accepted:"Ova Profaktura će biti označena kao Prihvaćena",confirm_mark_as_rejected:"Ova Profaktura će biti označena kao Odbijena",no_matching_estimates:"Ne postoji odgovarajuća profaktura!",mark_as_sent_successfully:"Profaktura uspešno označena kao Poslata",send_estimate_successfully:"Profaktura uspešno poslata",errors:{required:"Polje je obavezno"},accepted:"Prihvaćeno",rejected:"Odbijeno",expired:"Expired",sent:"Poslato",draft:"U izradi",viewed:"Viewed",declined:"Odbijeno",new_estimate:"Nova Profaktura",add_new_estimate:"Dodaj novu Profakturu",update_Estimate:"Ažuriraj Profakturu",edit_estimate:"Izmeni Profakturu",items:"stavke",Estimate:"Profaktura | Profakture",add_new_tax:"Dodaj nov Porez",no_estimates:"Još uvek nema Profaktura!",list_of_estimates:"Ova sekcija će da sadrži spisak Profaktura.",mark_as_rejected:"Označi kao odbijeno",mark_as_accepted:"Označi kao prihvaćeno",marked_as_accepted_message:"Profaktura označena kao prihvaćena",marked_as_rejected_message:"Profaktura označena kao odbijena",confirm_delete:"Nećeš moći da povratiš ovu Profakturu | Nećeš moći da povratiš ove Profakture",created_message:"Profaktura uspešno kreirana",updated_message:"Profaktura uspešno ažurirana",deleted_message:"Profaktura uspešno obrisana | Profakture uspešno obrisane",something_went_wrong:"nešto je krenulo naopako",item:{title:"Naziv stavke",description:"Opis",quantity:"Količina",price:"Cena",discount:"Popust",total:"Ukupno za plaćanje",total_discount:"Ukupan popust",sub_total:"Ukupno",tax:"Porez",amount:"Iznos",select_an_item:"Unesi tekst ili klikni da izabereš",type_item_description:"Unesi opis Stavke (nije obavezno)"},mark_as_default_estimate_template_description:"If enabled, the selected template will be automatically selected for new estimates."},bQ={title:"Fakture",download:"Download",pay_invoice:"Pay Invoice",invoices_list:"List Faktura",invoice_information:"Invoice Information",days:"{days} dan",months:"{months} Mesec",years:"{years} Godina",all:"Sve",paid:"Plaćeno",unpaid:"Neplaćeno",viewed:"Pogledano",overdue:"Nepodmireno",completed:"Završeno",customer:"KLIJENT",paid_status:"STATUS UPLATE",ref_no:"POZIV NA BROJ",number:"BROJ",amount_due:"IZNOS DOSPEĆA",partially_paid:"Delimično plaćeno",total:"Ukupno za plaćanje",discount:"Popust",sub_total:"Osnovica za obračun PDV-a",invoice:"Faktura | Fakture",invoice_number:"Broj Fakture",ref_number:"Poziv na broj",contact:"Kontakt",add_item:"Dodaj Stavku",date:"Datum",due_date:"Datum Dospeća",status:"Status",add_tax:"Dodaj Porez",amount:"Iznos",action:"Akcija",notes:"Napomena",view:"Pogledaj",send_invoice:"Pošalji Fakturu",resend_invoice:"Ponovo pošalji Fakturu",invoice_template:"Šablon Fakture",conversion_message:"Invoice cloned successful",template:"Šablon",mark_as_sent:"Označi kao Poslato",confirm_send_invoice:"Ova Faktura će biti poslata putem Email-a klijentu",invoice_mark_as_sent:"Ova Faktura će biti označena kao poslata",confirm_mark_as_accepted:"This invoice will be marked as Accepted",confirm_mark_as_rejected:"This invoice will be marked as Rejected",confirm_send:"Ova Faktura će biti poslata putem Email-a klijentu",invoice_date:"Datum Fakture",record_payment:"Unesi Uplatu",add_new_invoice:"Dodaj novu Fakturu",update_expense:"Ažuriraj Rashod",edit_invoice:"Izmeni Fakturu",new_invoice:"Nova Faktura",save_invoice:"Sačuvaj Fakturu",update_invoice:"Ažuriraj Fakturu",add_new_tax:"Dodaj nov Porez",no_invoices:"Još uvek nema Faktura!",mark_as_rejected:"Mark as rejected",mark_as_accepted:"Mark as accepted",list_of_invoices:"Ova sekcija će da sadrži spisak Faktura.",select_invoice:"Odaberi Fakturu",no_matching_invoices:"Ne postoje Fakture koje odgovaraju pretrazi!",mark_as_sent_successfully:"Faktura uspešno označena kao Poslata",invoice_sent_successfully:"Invoice sent successfully",cloned_successfully:"Uspešno napravljen duplikat Fakture",clone_invoice:"Napravi duplikat",confirm_clone:"Ova Faktura će biti duplikat nove Fakture",item:{title:"Naziv Stavke",description:"Opis",quantity:"Količina",price:"Cena",discount:"Popust",total:"Ukupno za plaćanje",total_discount:"Ukupan popust",sub_total:"Ukupno",tax:"Porez",amount:"Iznos",select_an_item:"Unesi tekst ili klikni da izabereš",type_item_description:"Unesi opis Stavke (nije obavezno)"},payment_attached_message:"Jedna od odabranih faktura već ima uplatu povezanu sa njom. Obrišite prvo povezane uplate da bi nastavili sa brisanjem",confirm_delete:"Nećeš moći da povratiš ovu Fakturu | Nećeš moći da povratiš ove Fakture",created_message:"Faktura uspešno kreirana",updated_message:"Faktura uspešno ažurirana",deleted_message:"Faktura uspešno obrisana | Fakture uspešno obrisane",marked_as_sent_message:"Faktura označena kao uspešno poslata",something_went_wrong:"nešto je krenulo naopako",invalid_due_amount_message:"Ukupan iznos za plaćanje u fakturi ne može biti manji od iznosa uplate za ovu fakturu. Molim Vas ažurirajte fakturu ili obrišite uplate koje su povezane sa ovom fakturom da bi nastavili.",mark_as_default_invoice_template_description:"If enabled, the selected template will be automatically selected for new invoices."},kQ={title:"Recurring Invoices",invoices_list:"Recurring Invoices List",days:"{days} Days",months:"{months} Month",years:"{years} Year",all:"All",paid:"Paid",unpaid:"Unpaid",viewed:"Viewed",overdue:"Overdue",active:"Active",completed:"Completed",customer:"CUSTOMER",paid_status:"PAID STATUS",ref_no:"REF NO.",number:"NUMBER",amount_due:"AMOUNT DUE",partially_paid:"Partially Paid",total:"Total",discount:"Discount",sub_total:"Sub Total",invoice:"Recurring Invoice | Recurring Invoices",invoice_number:"Recurring Invoice Number",next_invoice_date:"Next Invoice Date",ref_number:"Ref Number",contact:"Contact",add_item:"Add an Item",date:"Date",limit_by:"Limit by",limit_date:"Limit Date",limit_count:"Limit Count",count:"Count",status:"Status",select_a_status:"Select a status",working:"Working",on_hold:"On Hold",complete:"Completed",add_tax:"Add Tax",amount:"Amount",action:"Action",notes:"Notes",view:"View",basic_info:"Basic Info",send_invoice:"Send Recurring Invoice",auto_send:"Auto Send",resend_invoice:"Resend Recurring Invoice",invoice_template:"Recurring Invoice Template",conversion_message:"Recurring Invoice cloned successful",template:"Template",mark_as_sent:"Mark as sent",confirm_send_invoice:"This recurring invoice will be sent via email to the customer",invoice_mark_as_sent:"This recurring invoice will be marked as sent",confirm_send:"This recurring invoice will be sent via email to the customer",starts_at:"Start Date",due_date:"Invoice Due Date",record_payment:"Record Payment",add_new_invoice:"Add New Recurring Invoice",update_expense:"Update Expense",edit_invoice:"Edit Recurring Invoice",new_invoice:"New Recurring Invoice",send_automatically:"Send Automatically",send_automatically_desc:"Enable this, if you would like to send the invoice automatically to the customer when its created.",save_invoice:"Save Recurring Invoice",update_invoice:"Update Recurring Invoice",add_new_tax:"Add New Tax",no_invoices:"No Recurring Invoices yet!",mark_as_rejected:"Mark as rejected",mark_as_accepted:"Mark as accepted",list_of_invoices:"This section will contain the list of recurring invoices.",select_invoice:"Select Invoice",no_matching_invoices:"There are no matching recurring invoices!",mark_as_sent_successfully:"Recurring Invoice marked as sent successfully",invoice_sent_successfully:"Recurring Invoice sent successfully",cloned_successfully:"Recurring Invoice cloned successfully",clone_invoice:"Clone Recurring Invoice",confirm_clone:"This recurring invoice will be cloned into a new Recurring Invoice",add_customer_email:"Please add an email address for this customer to send invoices automatically.",item:{title:"Item Title",description:"Description",quantity:"Quantity",price:"Price",discount:"Discount",total:"Total",total_discount:"Total Discount",sub_total:"Sub Total",tax:"Tax",amount:"Amount",select_an_item:"Type or click to select an item",type_item_description:"Type Item Description (optional)"},frequency:{title:"Frequency",select_frequency:"Select Frequency",minute:"Minute",hour:"Hour",day_month:"Day of month",month:"Month",day_week:"Day of week"},confirm_delete:"You will not be able to recover this Invoice | You will not be able to recover these Invoices",created_message:"Recurring Invoice created successfully",updated_message:"Recurring Invoice updated successfully",deleted_message:"Recurring Invoice deleted successfully | Recurring Invoices deleted successfully",marked_as_sent_message:"Recurring Invoice marked as sent successfully",user_email_does_not_exist:"User email does not exist",something_went_wrong:"something went wrong",invalid_due_amount_message:"Total Recurring Invoice amount cannot be less than total paid amount for this Recurring Invoice. Please update the invoice or delete the associated payments to continue."},wQ={title:"Uplate",payments_list:"Lista uplata",record_payment:"Unesi Uplatu",customer:"Klijent",date:"Datum",amount:"Iznos",action:"Akcija",payment_number:"Broj uplate",payment_mode:"Način plaćanja",invoice:"Faktura",note:"Napomena",add_payment:"Dodaj Uplatu",new_payment:"Nova Uplata",edit_payment:"Izmeni Uplatu",view_payment:"Vidi Uplatu",add_new_payment:"Dodaj Novu Uplatu",send_payment_receipt:"Pošalji potvrdu o uplati",send_payment:"Pošalji Uplatu",save_payment:"Sačuvaj Uplatu",update_payment:"Ažuriraj Uplatu",payment:"Uplata | Uplate",no_payments:"Još uvek nema uplata!",not_selected:"Nema odabranih",no_invoice:"Nema računa",no_matching_payments:"Ne postoje uplate koje odgovaraju pretrazi!",list_of_payments:"Ova sekcija će da sadrži listu uplata.",select_payment_mode:"Odaberi način plaćanja",confirm_mark_as_sent:"Ovo plaćanje će biti označena kao Poslata",confirm_send_payment:"Ovo plaćanje će biti poslato putem Email-a klijentu",send_payment_successfully:"Plaćanje uspešno poslato",something_went_wrong:"nešto je krenulo naopako",confirm_delete:"Nećeš moći da povratiš ovu Uplatu | Nećeš moći da povratiš ove Uplate",created_message:"Uplata uspešno kreirana",updated_message:"Uplata uspešno ažurirana",deleted_message:"Uplata uspešno obrisana | Uplate uspešno obrisane",invalid_amount_message:"Iznos Uplate je pogrešan"},DQ={title:"Rashodi",expenses_list:"Lista Rashoda",select_a_customer:"Odaberi klijenta",expense_title:"Naslov",customer:"Klijent",currency:"Currency",contact:"Kontakt",category:"Kategorija",from_date:"Datum od",to_date:"Datum do",expense_date:"Datum",description:"Opis",receipt:"Račun",amount:"Iznos",action:"Akcija",not_selected:"Nije odabrano",note:"Napomena",category_id:"ID kategorije",date:"Datum",add_expense:"Dodaj Rashod",add_new_expense:"Dodaj Novi Rashod",save_expense:"Sačuvaj Rashod",update_expense:"Ažuriraj Rashod",download_receipt:"Preuzmi Račun",edit_expense:"Izmeni Rashod",new_expense:"Novi Rashod",expense:"Rashod | Rashodi",no_expenses:"Još uvek nema rashoda!",list_of_expenses:"Ova sekcija će da sadrži listu rashoda.",confirm_delete:"Nećeš moći da povratiš ovaj Rashod | Nećeš moći da povratiš ove Rashode",created_message:"Rashod uspešno kreiran",updated_message:"Rashod uspešno ažuriran",deleted_message:"Rashod uspešno obrisan | Rashodi uspešno obrisani",categories:{categories_list:"Lista Kategorija",title:"Naslov",name:"Naziv",description:"Opis",amount:"Iznos",actions:"Akcije",add_category:"Dodaj Kategoriju",new_category:"Nova Kategorija",category:"Kategorija | Kategorije",select_a_category:"Izaberi kategoriju"}},xQ={email:"E-mail",password:"Šifra",forgot_password:"Zaboravili ste šifru?",or_signIn_with:"ili se prijavite sa",login:"Prijava",register:"Registracija",reset_password:"Restujte šifru",password_reset_successfully:"Šifra Uspešno Resetovana",enter_email:"Unesi email",enter_password:"Unesi šifru",retype_password:"Ponovo unesi šifru"},SQ={buy_now:"Buy Now",install:"Install",price:"Price",download_zip_file:"Download ZIP file",unzipping_package:"Unzipping Package",copying_files:"Copying Files",deleting_files:"Deleting Unused files",completing_installation:"Completing Installation",update_failed:"Update Failed",install_success:"Module has been installed successfully!",customer_reviews:"Reviews",license:"License",faq:"FAQ",monthly:"Monthly",yearly:"Yearly",updated:"Updated",version:"Version",disable:"Disable",module_disabled:"Module Disabled",enable:"Enable",module_enabled:"Module Enabled",update_to:"Update To",module_updated:"Module Updated Successfully!",title:"Modules",module:"Module | Modules",api_token:"API token",invalid_api_token:"Invalid API Token.",other_modules:"Other Modules",view_all:"View All",no_reviews_found:"There are no reviews for this module yet!",module_not_purchased:"Module Not Purchased",module_not_found:"Module Not Found",version_not_supported:"This module version doesn't support the current version of InvoiceShelf",last_updated:"Last Updated On",connect_installation:"Connect your installation",api_token_description:"Login to {url} and connect this installation by entering the API Token. Your purchased modules will show up here after the connection is established.",view_module:"View Module",update_available:"Update Available",purchased:"Purchased",installed:"Installed",no_modules_installed:"No Modules Installed Yet!",disable_warning:"All the settings for this particular will be reverted.",what_you_get:"What you get"},PQ={title:"Korisnici",users_list:"Lista korisnika",name:"Ime i prezime",description:"Opis",added_on:"Datum dodavanja",date_of_creation:"Datum kreiranja",action:"Akcija",add_user:"Dodaj Korisnika",save_user:"Sačuvaj Korisnika",update_user:"Ažuriraj Korisnika",user:"Korisnik | Korisnici",add_new_user:"Dodaj novog korisnika",new_user:"Nov Korisnik",edit_user:"Izmeni Korisnika",no_users:"Još uvek nema korisnika!",list_of_users:"Ova sekcija će da sadrži listu korisnika.",email:"E-mail",phone:"Broj telefona",password:"Šifra",user_attached_message:"Ne možete obrisati stavku koja je već u upotrebi",confirm_delete:"Nećeš moći da povratiš ovog Korisnika | Nećeš moći da povratiš ove Korisnike",created_message:"Korisnik uspešno napravljen",updated_message:"Korisnik uspešno ažuriran",deleted_message:"Korisnik uspešno obrisan | Korisnici uspešno obrisani",select_company_role:"Select Role for {company}",companies:"Companies"},EQ={title:"Izveštaj",from_date:"Datum od",to_date:"Datum do",status:"Status",paid:"Plaćeno",unpaid:"Neplaćeno",download_pdf:"Preuzmi PDF",view_pdf:"Pogledaj PDF",update_report:"Ažuriraj Izveštaj",report:"Izveštaj | Izveštaji",profit_loss:{profit_loss:"Prihod & Rashod",to_date:"Datum do",from_date:"Datum od",date_range:"Izaberi opseg datuma"},sales:{sales:"Prodaja",date_range:"Izaberi opseg datuma",to_date:"Datum do",from_date:"Datum od",report_type:"Tip Izveštaja"},taxes:{taxes:"Porezi",to_date:"Datum do",from_date:"Datum od",date_range:"Izaberi opseg datuma"},errors:{required:"Polje je obavezno"},invoices:{invoice:"Faktura",invoice_date:"Datum Fakture",due_date:"Datum Dospeća",amount:"Iznos",contact_name:"Ime Kontakta",status:"Status"},estimates:{estimate:"Profaktura",estimate_date:"Datum Profakture",due_date:"Datum Dospeća",estimate_number:"Broj Profakture",ref_number:"Poziv na broj",amount:"Iznos",contact_name:"Ime Kontakta",status:"Status"},expenses:{expenses:"Rashodi",category:"Kategorija",date:"Datum",amount:"Iznos",to_date:"Datum do",from_date:"Datum od",date_range:"Izaberi opseg datuma"}},zQ={menu_title:{account_settings:"Podešavanje Naloga",company_information:"Podaci o firmi",customization:"Prilagođavanje",preferences:"Preferencija",notifications:"Obaveštenja",tax_types:"Tipovi Poreza",expense_category:"Kategorije Rashoda",update_app:"Ažuriraj Aplikaciju",backup:"Bekap",file_disk:"File Disk",custom_fields:"Prilagođena polja",payment_modes:"Način plaćanja",notes:"Napomene",exchange_rate:"Exchange Rate",address_information:"Address Information"},address_information:{section_description:" You can update Your Address information using form below."},title:"Podešavanja",setting:"Podešavanje | Podešavanja",general:"Opšte",language:"Jezik",primary_currency:"Primarna Valuta",timezone:"Vremenska Zona",date_format:"Format Datuma",currencies:{title:"Valute",currency:"Valuta | Valute",currencies_list:"Lista Valuta",select_currency:"Odaberi Valutu",name:"Naziv",code:"Kod",symbol:"Simbol",precision:"Preciznost",thousand_separator:"Separator za hiljade",decimal_separator:"Separator za decimale",position:"Pozicija",position_of_symbol:"Pozicija simbola",right:"Desno",left:"Levo",action:"Akcija",add_currency:"Dodaj Valutu"},mail:{host:"Mail Host",port:"Mail Port",driver:"Mail drajver",secret:"Šifra",mailgun_secret:"Mailgun Šifra",mailgun_domain:"Domen",mailgun_endpoint:"Mailgun Endpoint",ses_secret:"SES Šifra",ses_key:"SES Ključ",password:"Mail Šifra",username:"Mail Korisničko Ime",mail_config:"Mail Podešavanje",from_name:"Naziv pošiljaoca",from_mail:"E-mail adresa pošiljaoca",encryption:"E-mail enkripcija",mail_config_desc:"Ispod se nalazi forma za podešavanje E-mail drajvera za slanje pošte iz aplikacije. Takođe možete podesiti provajdere treće strane kao Sendgrid, SES itd."},pdf:{title:"PDF Podešavanje",footer_text:"Tekstualno zaglavlje na dnu strane",pdf_layout:"PDF Raspored"},company_info:{company_info:"Podaci o firmi",company_name:"Naziv firme",company_logo:"Logo firme",section_description:"Informacije o Vašoj firmi će biti prikazane na fakturama, profakturama i drugim dokumentima koji se prave u ovoj aplikaciji.",phone:"Telefon",country:"Država",state:"Savezna Država",city:"Grad",address:"Adresa",zip:"Poštanski broj",save:"Sačuvaj",delete:"Delete",updated_message:"Podaci o firmi uspešno sačuvani",delete_company:"Delete Company",delete_company_description:"Once you delete your company, you will lose all the data and files associated with it permanently.",are_you_absolutely_sure:"Are you absolutely sure?",delete_company_modal_desc:"This action cannot be undone. This will permanently delete {company} and all of its associated data.",delete_company_modal_label:"Please type {company} to confirm"},custom_fields:{title:"Prilagođena polja",section_description:"Prilagodite vaše Fakture, Profakture i Uplate (priznanice) sa svojim poljima. Postarajte se da koristite polja navedena ispod na formatu adrese na stranici Podešavanja/Prilagođavanje.",add_custom_field:"Dodaj prilagođeno polje",edit_custom_field:"Izmeni prilagođeno polje",field_name:"Naziv polja",label:"Oznaka",type:"Tip",name:"Naziv",slug:"Slug",required:"Obavezno",placeholder:"Opis polja (Placeholder)",help_text:"Pomoćni tekst",default_value:"Podrazumevana vrednost",prefix:"Prefiks",starting_number:"Početni broj",model:"Model",help_text_description:"Unesite opis koji će pomoći korisnicima da razumeju svrhu ovog prilagođenog polja.",suffix:"Sufiks",yes:"Da",no:"Ne",order:"Redosled",custom_field_confirm_delete:"Nećeš moći da povratiš ovo prilagođeno polje",already_in_use:"Prilagođeno polje je već u upotrebi",deleted_message:"Prilagođeno polje je uspešno obrisano",options:"opcije",add_option:"Dodaj opcije",add_another_option:"Dodaj još jednu opciju",sort_in_alphabetical_order:"Poređaj po Abecedi",add_options_in_bulk:"Grupno dodavanje opcija",use_predefined_options:"Koristi predefinisane opcije",select_custom_date:"Odaberi datum",select_relative_date:"Odaberi relativan datum",ticked_by_default:"Podrazumevano odabrano",updated_message:"Prilagođeno polje uspešno ažurirano",added_message:"Prilagođeno polje uspešno dodato",press_enter_to_add:"Press enter to add new option",model_in_use:"Cannot update model for fields which are already in use.",type_in_use:"Cannot update type for fields which are already in use."},customization:{customization:"prilagođavanje",updated_message:"Podaci o firmi su uspešno ažurirani",save:"Sačuvaj",insert_fields:"Insert Fields",learn_custom_format:"Learn how to use custom format",add_new_component:"Add New Component",component:"Component",Parameter:"Parameter",series:"Series",series_description:"To set a static prefix/postfix like 'INV' across your company. It supports character length of up to 6 chars.",series_param_label:"Series Value",delimiter:"Delimiter",delimiter_description:"Single character for specifying the boundary between 2 separate components. By default its set to -",delimiter_param_label:"Delimiter Value",date_format:"Date Format",date_format_description:"A local date and time field which accepts a format parameter. The default format: 'Y' renders the current year.",date_format_param_label:"Format",sequence:"Sequence",sequence_description:"Consecutive sequence of numbers across your company. You can specify the length on the given parameter.",sequence_param_label:"Sequence Length",customer_series:"Customer Series",customer_series_description:"To set a different prefix/postfix for each customer.",customer_sequence:"Customer Sequence",customer_sequence_description:"Consecutive sequence of numbers for each of your customer.",customer_sequence_param_label:"Sequence Length",random_sequence:"Random Sequence",random_sequence_description:"Random alphanumeric string. You can specify the length on the given parameter.",random_sequence_param_label:"Sequence Length",invoices:{title:"Fakture",invoice_number_format:"Invoice Number Format",invoice_number_format_description:"Customize how your invoice number gets generated automatically when you create a new invoice.",preview_invoice_number:"Preview Invoice Number",due_date:"Due Date",due_date_description:"Specify how due date is automatically set when you create an invoice.",due_date_days:"Invoice Due after days",set_due_date_automatically:"Set Due Date Automatically",set_due_date_automatically_description:"Enable this if you wish to set due date automatically when you create a new invoice.",default_formats:"Default Formats",default_formats_description:"Below given formats are used to fill up the fields automatically on invoice creation.",default_invoice_email_body:"Podrazumevan sadržaj email-a za Fakture",company_address_format:"Format adrese firme",shipping_address_format:"Format adrese za dostavu firme",billing_address_format:"Format adrese za naplatu firme",invoice_email_attachment:"Pošalji račun kao prilog",invoice_email_attachment_setting_description:"Omogućite ovo ako želite da šaljete fakture kao prilog e-pošte. Imajte na umu da dugme 'Prikaži fakturu' u e-porukama više neće biti prikazano kada je omogućeno.",invoice_settings_updated:"Invoice Settings updated successfully",retrospective_edits:"Retrospective Edits",allow:"Allow",disable_on_invoice_partial_paid:"Disable after partial payment is recorded",disable_on_invoice_paid:"Disable after full payment is recorded",disable_on_invoice_sent:"Disable after invoice is sent",retrospective_edits_description:" Based on your country's laws or your preference, you can restrict users from editing finalised invoices."},estimates:{title:"Profakture",estimate_number_format:"Estimate Number Format",estimate_number_format_description:"Customize how your estimate number gets generated automatically when you create a new estimate.",preview_estimate_number:"Preview Estimate Number",expiry_date:"Expiry Date",expiry_date_description:"Specify how expiry date is automatically set when you create an estimate.",expiry_date_days:"Estimate Expires after days",set_expiry_date_automatically:"Set Expiry Date Automatically",set_expiry_date_automatically_description:"Enable this if you wish to set expiry date automatically when you create a new estimate.",default_formats:"Default Formats",default_formats_description:"Below given formats are used to fill up the fields automatically on estimate creation.",default_estimate_email_body:"Podrazumevan sadržaj email-a za Profakture",company_address_format:"Format adrese firme",shipping_address_format:"Format adrese za dostavu firme",billing_address_format:"Format adrese za naplatu firme",estimate_email_attachment:"Pošaljite procjene kao priloge",estimate_email_attachment_setting_description:"Omogućite ovo ako želite da pošaljete procjene kao prilog e-pošte. Imajte na umu da dugme 'Prikaži procjenu' u e-porukama više neće biti prikazano kada je omogućeno.",estimate_settings_updated:"Estimate Settings updated successfully",convert_estimate_options:"Estimate Convert Action",convert_estimate_description:"Specify what happens to the estimate after it gets converted to an invoice.",no_action:"No action",delete_estimate:"Delete estimate",mark_estimate_as_accepted:"Mark estimate as accepted"},payments:{title:"Uplate",payment_number_format:"Payment Number Format",payment_number_format_description:"Customize how your payment number gets generated automatically when you create a new payment.",preview_payment_number:"Preview Payment Number",default_formats:"Default Formats",default_formats_description:"Below given formats are used to fill up the fields automatically on payment creation.",default_payment_email_body:"Podrazumevan sadržaj email-a za potvrdu o plaćanju (račun)",company_address_format:"Format adrese firme",from_customer_address_format:"Format adrese klijenta",payment_email_attachment:"Pošaljite uplate kao priloge",payment_email_attachment_setting_description:"Enable this if you want to send the payment receipts as an email attachment. Please note that 'View Payment' button in emails will not be displayed anymore when enabled.",payment_settings_updated:"Payment Settings updated successfully"},items:{title:"Stavke",units:"Jedinice",add_item_unit:"Dodaj jedinicu stavke",edit_item_unit:"Izmeni jedinicu stavke",unit_name:"Naziv jedinice",item_unit_added:"Jedinica stavke dodata",item_unit_updated:"Jedinica stavke ažurirana",item_unit_confirm_delete:"Nećeš moći da povratiš ovu jedinicu stavke",already_in_use:"Jedinica stavke se već koristi",deleted_message:"Jedinica stavke uspešno obrisana"},notes:{title:"Napomene",description:"Uštedite vreme pravljeći napomene i koristeći ih na fakturama, profakturama i uplatama.",notes:"Napomene",type:"Tip",add_note:"Dodaj Napomenu",add_new_note:"Dodaj novu Napomenu",name:"Naziv",edit_note:"Izmeni Napomenu",note_added:"Napomena uspešno dodata",note_updated:"Napomena uspešno ažurirana",note_confirm_delete:"Nećeš moći da povratiš ovu Napomenu",already_in_use:"Napomena se već koristi",deleted_message:"Napomena uspešno obrisana"}},account_settings:{profile_picture:"Profilna slika",name:"Ime i prezime",email:"Email",password:"Šifra",confirm_password:"Potvrdi šifru",account_settings:"Podešavanje naloga",save:"Sačuvaj",section_description:"Možete ažurirati Vaše ime i prezime, email, šifru koristeći formu ispod.",updated_message:"Podešavanje naloga uspešno ažurirano"},user_profile:{name:"Ime i prezime",email:"Email",password:"Šifra",confirm_password:"Potvrdi šifru"},notification:{title:"Obaveštenje",email:"Šalji obaveštenja na",description:"Koja email obaveštenja bi želeli da dobijate kada se nešto promeni?",invoice_viewed:"Faktura gledana",invoice_viewed_desc:"Kada klijent pogleda fakturu koja je poslata putem ove aplikacije.",estimate_viewed:"Profaktura gledana",estimate_viewed_desc:"Kada klijent pogleda profakturu koja je poslata putem ove aplikacije.",save:"Sačuvaj",email_save_message:"Email uspešno sačuvan",please_enter_email:"Molim Vas unesite E-mail"},roles:{title:"Roles",description:"Manage the roles & permissions of this company",save:"Save",add_new_role:"Add New Role",role_name:"Role Name",added_on:"Added on",add_role:"Add Role",edit_role:"Edit Role",name:"Name",permission:"Permission | Permissions",select_all:"Select All",none:"None",confirm_delete:"You will not be able to recover this Role",created_message:"Role created successfully",updated_message:"Role updated successfully",deleted_message:"Role deleted successfully",already_in_use:"Role is already in use"},exchange_rate:{exchange_rate:"Exchange Rate",title:"Fix Currency Exchange issues",description:"Please enter exchange rate of all the currencies mentioned below to help InvoiceShelf properly calculate the amounts in {currency}.",drivers:"Drivers",new_driver:"Add New Provider",edit_driver:"Edit Provider",select_driver:"Select Driver",update:"select exchange rate ",providers_description:"Configure your exchange rate providers here to automatically fetch the latest exchange rate on transactions.",key:"API Key",name:"Name",driver:"Driver",is_default:"IS DEFAULT",currency:"Currencies",exchange_rate_confirm_delete:"You will not be able to recover this driver",created_message:"Provider Created successfully",updated_message:"Provider Updated Successfully",deleted_message:"Provider Deleted Successfully",error:" You cannot Delete Active Driver",default_currency_error:"This currency is already used in one of the Active Provider",exchange_help_text:"Enter exchange rate to convert from {currency} to {baseCurrency}",currency_freak:"Currency Freak",currency_layer:"Currency Layer",open_exchange_rate:"Open Exchange Rate",currency_converter:"Currency Converter",server:"Server",url:"URL",active:"Active",currency_help_text:"This provider will only be used on above selected currencies",currency_in_used:"The following currencies are already active on another provider. Please remove these currencies from selection to activate this provider again."},tax_types:{title:"Tipovi Poreza",add_tax:"Dodaj Porez",edit_tax:"Izmeni Porez",description:"Možete dodavati ili uklanjati poreze kako želite. Ova aplikacija podržava porez kako na individualnim stavkama tako i na fakturi.",add_new_tax:"Dodaj Nov Porez",tax_settings:"Podešavanje Poreza",tax_per_item:"Porez po Stavki",tax_name:"Naziv Poreza",compound_tax:"Složen Porez",percent:"Procenat",action:"Akcija",tax_setting_description:"Izaberite ovo ako želite da dodajete porez na individualne stavke. Podrazumevano ponašanje je da je porez dodat direktno na fakturu.",created_message:"Tip poreza uspešno kreiran",updated_message:"Tip poreza uspešno ažuriran",deleted_message:"Tip poreza uspešno obrisan",confirm_delete:"Nećete moći da povratite ovaj Tip Poreza",already_in_use:"Porez se već koristi"},payment_modes:{title:"Payment Modes",description:"Modes of transaction for payments",add_payment_mode:"Add Payment Mode",edit_payment_mode:"Edit Payment Mode",mode_name:"Mode Name",payment_mode_added:"Payment Mode Added",payment_mode_updated:"Payment Mode Updated",payment_mode_confirm_delete:"You will not be able to recover this Payment Mode",payments_attached:"This payment method is already attached to payments. Please delete the attached payments to proceed with deletion.",expenses_attached:"This payment method is already attached to expenses. Please delete the attached expenses to proceed with deletion.",deleted_message:"Payment Mode deleted successfully"},expense_category:{title:"Kategorija Rashoda",action:"Akcija",description:"Kategorije su obavezne za dodavanje rashoda. Možeš da dodaš ili obrišeš ove kategorije po svojoj želji.",add_new_category:"Dodaj novu kategoriju",add_category:"Dodaj kategoriju",edit_category:"Izmeni kategoriju",category_name:"Naziv kategorije",category_description:"Opis",created_message:"Kagetorija rashoda je uspešno kreirana",deleted_message:"Kategorija rashoda je uspešno izbrisana",updated_message:"Kategorija rashoda je uspešno ažurirana",confirm_delete:"Nećeš moći da povratiš ovu kategoriju rashoda",already_in_use:"Kategorija se već koristi"},preferences:{currency:"Valuta",default_language:"Jezik",time_zone:"Vremenska Zona",fiscal_year:"Finansijska Godina",date_format:"Format datuma",discount_setting:"Podešavanja za popuste",discount_per_item:"Popust po stavci",discount_setting_description:"Izaberite ovo ako želite da dodajete Popust na individualne stavke. Podrazumevano ponašanje je da je Popust dodat direktno na fakturu.",expire_public_links:"Automatically Expire Public Links",expire_setting_description:"Specify whether you would like to expire all the links sent by application to view invoices, estimates & payments, etc after a specified duration.",save:"Sačuvaj",preference:"Preferencija | Preferencije",general_settings:"Podrazumevane preferencije za sistem",updated_message:"Preferencije su uspešno ažurirane",select_language:"Izaberi Jezik",select_time_zone:"Izaberi Vremensku Zonu",select_date_format:"Izaberi Format Datuma",select_financial_year:"Izaberi Finansijsku Godinu",recurring_invoice_status:"Recurring Invoice Status",create_status:"Create Status",active:"Active",on_hold:"On Hold",update_status:"Update Status",completed:"Completed",company_currency_unchangeable:"Company currency cannot be changed"},update_app:{title:"Ažuriraj aplikaciju",description:"Lako možeš da ažuriraš InvoiceShelf tako što ćeš uraditi proveru novih verzija klikom na polje ispod",check_update:"Proveri ažuriranost",avail_update:"Dostupna je nova verzija",next_version:"Sledeća verzija",requirements:"Zahtevi",update:"Ažuriraj sad",update_progress:"Ažuriranje je u toku...",progress_text:"Trajaće svega par minuta. Nemojte osvežavati ili zatvoriti stranicu dok ažuriranje ne bude gotovo",update_success:"Aplikacija je ažurirana! Molim Vas Sačekajte da se stranica osveži automatski.",latest_message:"Nema nove verzije! Ažurirana poslednja verzija.",current_version:"Trenutna verzija",download_zip_file:"Preuzmi ZIP paket",unzipping_package:"Raspakivanje paketa",copying_files:"Kopiranje datoteka",deleting_files:"Brisanje fajlova koji nisu u upotrebi",running_migrations:"Migracije u toku",finishing_update:"Završavanje ažuriranja",update_failed:"Neuspešno ažuriranje",update_failed_text:"Žao mi je! Tvoje ažuriranje nije uspelo na koraku broj: {step} korak",update_warning:"All of the application files and default template files will be overwritten when you update the application using this utility. Please take a backup of your templates & database before updating."},backup:{title:"Bekap | Bekapi",description:"Bekap je zip arhiva koja sadrži sve fajlove iz foldera koje ste specificirali, takođe sadrži bekap baze.",new_backup:"Dodaj novi Bekap",create_backup:"Napravi Bekap",select_backup_type:"Izaberi tip Bekapa",backup_confirm_delete:"Nećeš moći da povratiš ovaj Bekap",path:"putanja",new_disk:"Novi Disk",created_at:"datum kreiranja",size:"veličina",dropbox:"dropbox",local:"lokalni",healthy:"zdrav",amount_of_backups:"broj bekapa",newest_backups:"najnoviji bekapi",used_storage:"korišćeno skladište",select_disk:"Izaberi Disk",action:"Akcija",deleted_message:"Bekap uspešno obrisan",created_message:"Bekap uspešno napravljen",invalid_disk_credentials:"Pogrešni kredencijali za odabrani disk"},disk:{title:"File Disk | File Disks",description:"Podrazumevano ponašanje je da InvoiceShelf koristi lokalni disk za čuvanje bekapa, avatara i ostalih slika. Možete podesiti više od jednog disk drajvera od provajdera poput DigitalOcean, S3 i Dropbox po vašoj želji.",created_at:"datum kreiranja",dropbox:"dropbox",name:"Naziv",driver:"Drajver",disk_type:"Tip",disk_name:"Naziv Diska",new_disk:"Dodaj novi Disk",filesystem_driver:"Filesystem Driver",local_driver:"lokalni Drajver",local_root:"local Root",public_driver:"Public Driver",public_root:"Public Root",public_url:"Public URL",public_visibility:"Public Visibility",media_driver:"Media Driver",media_root:"Media Root",aws_driver:"AWS Driver",aws_key:"AWS Key",aws_secret:"AWS Secret",aws_region:"AWS Region",aws_bucket:"AWS Bucket",aws_root:"AWS Root",do_spaces_type:"Do Spaces type",do_spaces_key:"Do Spaces key",do_spaces_secret:"Do Spaces Secret",do_spaces_region:"Do Spaces Region",do_spaces_bucket:"Do Spaces Bucket",do_spaces_endpoint:"Do Spaces Endpoint",do_spaces_root:"Do Spaces Root",dropbox_type:"Dropbox Type",dropbox_token:"Dropbox Token",dropbox_key:"Dropbox Key",dropbox_secret:"Dropbox Secret",dropbox_app:"Dropbox App",dropbox_root:"Dropbox Root",default_driver:"Podrazumevani Drajver",is_default:"DA LI JE PODRAZUMEVAN",set_default_disk:"Postavi Podrazumevani Disk",set_default_disk_confirm:"Ovaj disk će biti postavljen kao podrazumevan i svi novi PDF fajlovi će biti sačuvani na ovom disku",success_set_default_disk:"Disk je uspešno postavljen kao podrazumevan",save_pdf_to_disk:"Sačuvaj PDF fajlove na Disk",disk_setting_description:" Uključite ovo ako želite da sačuvate kopiju PDF fajla svake Fakture, Profakture i Uplate na vaš podrazumevani disk automatski. Uključivanjem ove opcije ćete smanjiti vreme učitavanja pri pregledu PDF fajlova.",select_disk:"Izaberi Disk",disk_settings:"Disk Podešavanja",confirm_delete:"Ovo neće uticati na vaše postojeće fajlove i foldere na navedenom disku, ali će se konfiguracija vašeg diska izbrisati iz InvoiceShelfa.",action:"Akcija",edit_file_disk:"Izmeni File Disk",success_create:"Disk uspešno dodat",success_update:"Disk uspešno ažuriran",error:"Dodavanje diska nije uspelo",deleted_message:"File Disk uspešno obrisan",disk_variables_save_successfully:"Disk uspešno podešen",disk_variables_save_error:"Podešavanje diska nije uspelo.",invalid_disk_credentials:"Pogrešan kredencijal za disk koji je naveden"},taxations:{add_billing_address:"Enter Billing Address",add_shipping_address:"Enter Shipping Address",add_company_address:"Enter Company Address",modal_description:"The information below is required in order to fetch sales tax.",add_address:"Add Address for fetching sales tax.",address_placeholder:"Example: 123, My Street",city_placeholder:"Example: Los Angeles",state_placeholder:"Example: CA",zip_placeholder:"Example: 90024",invalid_address:"Please provide valid address details."}},AQ={account_info:"Informacije o nalogu",account_info_desc:"Detalji u nastavku će se koristiti za kreiranje glavnog administratorskog naloga. Moguće ih je izmeniti u bilo kom trenutku nakon prijavljivanja.",name:"Naziv",email:"E-mail",password:"Šifra",confirm_password:"Potvrdi šifru",save_cont:"Sačuvaj & Nastavi",company_info:"Informacije o firmi",company_info_desc:"Ove informacije će biti prikazane na fakturama. Moguće ih je izmeniti kasnije u podešavanjima.",company_name:"Naziv firme",company_logo:"Logo firme",logo_preview:"Pregled logoa",preferences:"Preference",preferences_desc:"Podrazumevane Preference za sistem",currency_set_alert:"The company's currency cannot be changed later.",country:"Država",state:"Savezna Država",city:"Grad",address:"Adresa",street:"Ulica1 | Ulica2",phone:"Telefon",zip_code:"Poštanski broj",go_back:"Vrati se nazad",currency:"Valuta",language:"Jezik",time_zone:"Vremenska zona",fiscal_year:"Finansijska godina",date_format:"Format datuma",from_address:"Adresa pošiljaoca",username:"Korisničko ime",next:"Sledeće",continue:"Nastavi",skip:"Preskoči",database:{database:"URL stranice & baze podataka",connection:"Veza baze podataka",host:"Host baze podataka",port:"Port baze podataka",password:"Šifra baze podataka",app_url:"URL aplikacije",app_domain:"Domen aplikacije",username:"Korisničko ime baze podataka",db_name:"Naziv baze podataka",db_path:"Putanja do baze",desc:"Kreiraj bazu podataka na svom serveru i postavi kredencijale prateći obrazac u nastavku."},permissions:{permissions:"Dozvole",permission_confirm_title:"Da li ste sigurni da želite da nastavite?",permission_confirm_desc:"Provera dozvola za foldere nije uspela",permission_desc:"U nastavku se nalazi lista dozvola za foldere koji su neophodni kako bi alikacija radila. Ukoliko provera dozvola ne uspe, ažuriraj svoju listu dozvola za te foldere."},verify_domain:{title:"Domain Verification",desc:"InvoiceShelf uses Session based authentication which requires domain verification for security purposes. Please enter the domain on which you will be accessing your web application.",app_domain:"App Domain",verify_now:"Verify Now",success:"Domain Verify Successfully.",failed:"Domain verification failed. Please enter valid domain name.",verify_and_continue:"Verify And Continue"},mail:{host:"Mail Host",port:"Mail Port",driver:"Mail drajver",secret:"Šifra",mailgun_secret:"Mailgun Šifra",mailgun_domain:"Domen",mailgun_endpoint:"Mailgun Endpoint",ses_secret:"SES Šifra",ses_key:"SES Ključ",password:"Šifra za e-mail",username:"Koristničko ime za e-mail",mail_config:"E-mail konfigurisanje",from_name:"Naziv pošiljaoca",from_mail:"E-mail adresa pošiljaoca",encryption:"E-mail enkripcija",mail_config_desc:"Ispod se nalazi forma za podešavanje E-mail drajvera za slanje pošte iz aplikacije. Takođe možete podesiti provajdere treće strane kao Sendgrid, SES itd."},req:{system_req:"Sistemski zahtevi",php_req_version:"Zahteva se PHP verzija {version} ",check_req:"Proveri zahteve",system_req_desc:"InvoiceShelf ima nekoliko zahteva za server. Proveri da li tvoj server ima potrebnu verziju PHP-a i sva navedena proširenja navedena u nastavku"},errors:{migrate_failed:"Neuspešno migriranje",database_variables_save_error:"Konfiguraciju nije moguće zapisati u .env datoteku. Proveri dozvole za datoteku",mail_variables_save_error:"E-mail konfigurisanje je neuspešno",connection_failed:"Neuspešna konekcija sa bazom podataka",database_should_be_empty:"Baza podataka treba da bude prazna"},success:{mail_variables_save_successfully:"E-mail je uspešno konfigurisan",database_variables_save_successfully:"Baza podataka je uspešno konfigurisana"}},CQ={invalid_phone:"Pogrešan Broj Telefona",invalid_url:"Nevažeći URL (primer: http://www.invoiceshelf.com)",invalid_domain_url:"Pogrešan URL (primer: invoiceshelf.com)",required:"Obavezno polje",email_incorrect:"Pogrešan E-mail",email_already_taken:"Navedeni E-mail je zauzet",email_does_not_exist:"Korisnik sa navedenom e-mail adresom ne postoji",item_unit_already_taken:"Naziv ove jedinice stavke je zauzet",payment_mode_already_taken:"Naziv ovog načina plaćanja je zauzet",send_reset_link:"Pošalji link za resetovanje",not_yet:"Još uvek ništa? Pošalji ponovo",password_min_length:"Šifra mora imati {count} karaktera",name_min_length:"Naziv mora imati najmanje {count} slova",prefix_min_length:"Prefix must have at least {count} letters.",enter_valid_tax_rate:"Unesite odgovarajuću poresku stopu",numbers_only:"Mogu se unositi samo brojevi",characters_only:"Mogu se unositi samo karakteri",password_incorrect:"Šifra mora biti identična",password_length:"Šifra mora imati {count} karaktera",qty_must_greater_than_zero:"Količina mora biti veća od 0.",price_greater_than_zero:"Cena mora biti veća od 0",payment_greater_than_zero:"Uplata mora biti veća od 0",payment_greater_than_due_amount:"Uneta uplata je veća od dospelog iznosa ove fakture",quantity_maxlength:"Količina ne može imati više od 20 cifara",price_maxlength:"Cena ne može imati više od 20 cifara",price_minvalue:"Cena mora biti veća od 0",amount_maxlength:"Iznos ne može da ima više od 20 cifara",amount_minvalue:"Iznos mora biti veći od 0",discount_maxlength:"Discount should not be greater than max discount",description_maxlength:"Opis ne može da ima više od 65,000 karaktera",subject_maxlength:"Predmet ne može da ima više od 100 karaktera",message_maxlength:"Poruka ne može da ima više od 255 karaktera",maximum_options_error:"Maksimalan broj opcija je izabran. Prvo uklonite izabranu opciju da biste izabrali drugu",notes_maxlength:"Napomena ne može da ima više od 65,000 karaktera",address_maxlength:"Adresa ne može da ima više od 255 karaktera",ref_number_maxlength:"Poziv na broj ne može da ima više od 225 karaktera",prefix_maxlength:"Prefiks ne može da ima više od 5 karaktera",something_went_wrong:"nešto je krenulo naopako",number_length_minvalue:"Number length should be greater than 0",at_least_one_ability:"Please select atleast one Permission.",valid_driver_key:"Please enter a valid {driver} key.",valid_exchange_rate:"Please enter a valid exchange rate.",company_name_not_same:"Company name must match with given name."},TQ={starter_plan:"This feature is available on Starter plan and onwards!",invalid_provider_key:"Please Enter Valid Provider API Key.",estimate_number_used:"The estimate number has already been taken.",invoice_number_used:"The invoice number has already been taken.",payment_attached:"This invoice already has a payment attached to it. Make sure to delete the attached payments first in order to go ahead with the removal.",payment_number_used:"The payment number has already been taken.",name_already_taken:"The name has already been taken.",receipt_does_not_exist:"Receipt does not exist.",customer_cannot_be_changed_after_payment_is_added:"Customer cannot be change after payment is added",invalid_credentials:"Invalid Credentials.",not_allowed:"Not Allowed",login_invalid_credentials:"These credentials do not match our records.",enter_valid_cron_format:"Please enter a valid cron format",email_could_not_be_sent:"Email could not be sent to this email address.",invalid_address:"Please enter a valid address.",invalid_key:"Please enter valid key.",invalid_state:"Please enter a valid state.",invalid_city:"Please enter a valid city.",invalid_postal_code:"Please enter a valid zip.",invalid_format:"Please enter valid query string format.",api_error:"Server not responding.",feature_not_enabled:"Feature not enabled.",request_limit_met:"Api request limit exceeded.",address_incomplete:"Incomplete Address"},jQ="Profaktura",NQ="Broj Profakture",IQ="Datum Profakture",FQ="Datum isteka Profakture",RQ="Faktura",OQ="Broj Fakture",MQ="Datum Fakture",$Q="Datum dospeća Fakture",LQ="Napomena",BQ="Stavke",UQ="Količina",VQ="Cena",qQ="Popust",WQ="Iznos",HQ="Osnovica za obračun PDV-a",KQ="Ukupan iznos",YQ="Payment",ZQ="POTVRDA O UPLATI",GQ="Datum Uplate",QQ="Broj Uplate",JQ="Način Uplate",XQ="Iznos Uplate",eJ="IZVEŠTAJ O RASHODIMA",tJ="RASHODI UKUPNO",aJ="IZVEŠTAJ O PRIHODIMA I RASHODIMA",nJ="Sales Customer Report",iJ="Sales Item Report",oJ="Tax Summary Report",sJ="PRIHOD",rJ="NETO PROFIT",lJ="Izveštaj o Prodaji: Po Klijentu",cJ="PRODAJA UKUPNO",dJ="Izveštaj o Prodaji: Po Stavci",uJ="IZVEŠTAJ O POREZIMA",_J="UKUPNO POREZ",mJ="Tipovi Poreza",pJ="Rashodi",fJ="Račun za,",hJ="Isporučiti za,",gJ="Poslat od strane:",vJ="Tax",yJ={navigation:dQ,general:uQ,dashboard:_Q,tax_types:mQ,global_search:pQ,company_switcher:fQ,dateRange:hQ,customers:gQ,items:vQ,estimates:yQ,invoices:bQ,recurring_invoices:kQ,payments:wQ,expenses:DQ,login:xQ,modules:SQ,users:PQ,reports:EQ,settings:zQ,wizard:AQ,validation:CQ,errors:TQ,pdf_estimate_label:jQ,pdf_estimate_number:NQ,pdf_estimate_date:IQ,pdf_estimate_expire_date:FQ,pdf_invoice_label:RQ,pdf_invoice_number:OQ,pdf_invoice_date:MQ,pdf_invoice_due_date:$Q,pdf_notes:LQ,pdf_items_label:BQ,pdf_quantity_label:UQ,pdf_price_label:VQ,pdf_discount_label:qQ,pdf_amount_label:WQ,pdf_subtotal:HQ,pdf_total:KQ,pdf_payment_label:YQ,pdf_payment_receipt_label:ZQ,pdf_payment_date:GQ,pdf_payment_number:QQ,pdf_payment_mode:JQ,pdf_payment_amount_received_label:XQ,pdf_expense_report_label:eJ,pdf_total_expenses_label:tJ,pdf_profit_loss_label:aJ,pdf_sales_customers_label:nJ,pdf_sales_items_label:iJ,pdf_tax_summery_label:oJ,pdf_income_label:sJ,pdf_net_profit_label:rJ,pdf_customer_sales_report:lJ,pdf_total_sales_label:cJ,pdf_item_sales_label:dJ,pdf_tax_report_label:uJ,pdf_total_tax_label:_J,pdf_tax_types_label:mJ,pdf_expenses_label:pJ,pdf_bill_to:fJ,pdf_ship_to:hJ,pdf_received_from:gJ,pdf_tax_label:vJ},bJ={dashboard:"Overzicht",customers:"Klanten",items:"Artikelen",invoices:"Facturen","recurring-invoices":"Periodieke factuur",expenses:"Uitgaven",estimates:"Offertes",payments:"Betalingen",reports:"Rapporten",settings:"Instellingen",logout:"Uitloggen",users:"Gebruikers",modules:"Modules"},kJ={add_company:"Bedrijf toevoegen",view_pdf:"Bekijk PDF",copy_pdf_url:"Kopieer PDF-URL",download_pdf:"Download PDF",save:"Opslaan",create:"Maak",cancel:"Annuleren",update:"Bijwerken",deselect:"Deselecteren",download:"Download",from_date:"Vanaf datum",to_date:"T/m datum",from:"Vanaf",to:"Naar.",ok:"Oké.",yes:"Ja.",no:"Nee.",sort_by:"Sorteer op",ascending:"Oplopend",descending:"Aflopend",subject:"Onderwerp",body:"Inhoud",message:"Bericht.",send:"Verstuur",preview:"Voorbeeld",go_back:"Ga terug",back_to_login:"Terug naar Inloggen?",home:"Home",filter:"Filter",delete:"Verwijderen",edit:"Bewerken",view:"Bekijken",add_new_item:"Voeg een nieuw item toe",clear_all:"Wis alles",showing:"Weergegeven",of:"van",actions:"Acties",subtotal:"SUBTOTAAL",discount:"KORTING",fixed:"Gemaakt",percentage:"Percentage",tax:"BELASTING",total_amount:"TOTAALBEDRAG",bill_to:"Factuur aan",ship_to:"Verzend naar",due:"Openstaand",draft:"Concept",sent:"Verzonden",all:"Alles",select_all:"Selecteer alles",select_template:"Sjabloon selecteren",choose_file:"Klik hier om een bestand te kiezen",choose_template:"Kies een sjabloon",choose:"Kiezen",remove:"Verwijderen",select_a_status:"Selecteer een status",select_a_tax:"Selecteer een belasting",search:"Zoeken",are_you_sure:"Weet je het zeker?",list_is_empty:"Lijst is leeg.",no_tax_found:"Geen belasting gevonden!",four_zero_four:"404",you_got_lost:"Oeps! Je bent verdwaald!",go_home:"Ga naar home",test_mail_conf:"E-mailconfiguratie testen",send_mail_successfully:"Mail is succesvol verzonden",setting_updated:"Instelling succesvol bijgewerkt",select_state:"Selecteer staat",select_country:"Selecteer land",select_city:"Selecteer stad",street_1:"straat 1",street_2:"Straat # 2",action_failed:"Actie: mislukt",retry:"Retr",choose_note:"Kies notitie",no_note_found:"Geen notitie gevonden",insert_note:"Notitie invoegen",copied_pdf_url_clipboard:"PDF link naar klembord gekopieerd!",copied_url_clipboard:"URL naar klembord gekopieerd!",docs:"Documenten",do_you_wish_to_continue:"Wilt u Doorgaan?",note:"Notitie",pay_invoice:"Betaal factuur",login_successfully:"Succesvol ingelogd!",logged_out_successfully:"Succesvol afgemeld",mark_as_default:"Markeren als standaard"},wJ={select_year:"Selecteer jaar",cards:{due_amount:"Openstaand bedrag",customers:"Klanten",invoices:"Facturen",estimates:"Offertes",payments:"Betalingen"},chart_info:{total_sales:"Verkoop",total_receipts:"Inkomsten",total_expense:"Uitgaven",net_income:"Netto inkomen",year:"Selecteer jaar"},monthly_chart:{title:"Verkoop en kosten"},recent_invoices_card:{title:"Openstaande facturen",due_on:"Openstaand op",customer:"Klant",amount_due:"Openstaand bedrag",actions:"Acties",view_all:"Toon alles"},recent_estimate_card:{title:"Recente offertes",date:"Datum",customer:"Klant",amount_due:"Openstaand bedrag",actions:"Acties",view_all:"Toon alles"}},DJ={name:"Naam",description:"Omschrijving",percent:"Procent",compound_tax:"Verbinding Ta"},xJ={search:"Zoeken...",customers:"Klanten",users:"Gebruikers",no_results_found:"Geen zoekresultaten"},SJ={label:"VERANDER BEDRIJF",no_results_found:"Geen resultaten gevonden",add_new_company:"Nieuw bedrijf toevoegen",new_company:"Nieuw bedrijf",created_message:"Bedrijf met succes aangemaakt"},PJ={today:"Vandaag",this_week:"Deze week",this_month:"Deze maand",this_quarter:"Dit kwartaal",this_year:"Dit jaar",previous_week:"Vorige week",previous_month:"Vorige maand",previous_quarter:"Vorig kwartaal",previous_year:"Vorig jaar",custom:"Aangepast"},EJ={title:"Klanten",prefix:"Voorvoegsel",add_customer:"Klant toevoegen",contacts_list:"Klantenlijst",name:"Naam",mail:"Mail | Mails",statement:"Verklaring",display_name:"Weergavenaam",primary_contact_name:"Naam primaire contactpersoon",contact_name:"Contactnaam",amount_due:"Openstaand bedrag",email:"E-mail",address:"Adres",phone:"Telefoon",website:"Website",overview:"Overzicht",invoice_prefix:"Factuurvoorvoegsel",estimate_prefix:"Schatting voorvoegsel",payment_prefix:"Betalingsvoorvoegsel",enable_portal:"Activeer Portaal",country:"Land",state:"Provincie",city:"Stad",zip_code:"Postcode",added_on:"Toegevoegd",action:"Actie",password:"Wachtwoord",confirm_password:"Bevestig wachtwoord",street_number:"Huisnummer",primary_currency:"Primaire valuta",description:"Omschrijving",add_new_customer:"Nieuwe klant toevoegen",save_customer:"Klant opslaan",update_customer:"Klant bijwerken",customer:"Klant | Klanten",new_customer:"Nieuwe klant",edit_customer:"Klant bewerken",basic_info:"Basis informatie",portal_access:"Portaaltoegang",portal_access_text:"Wilt u deze klant toestaan om in te loggen op het Klantenportaal?",portal_access_url:"Klantenportaal login URL",portal_access_url_help:"Kopieer & stuur de bovenstaande URL door naar uw klant om toegang te geven.",billing_address:"factuur adres",shipping_address:"Verzendingsadres",copy_billing_address:"Kopiëren van facturering",no_customers:"Nog geen klanten!",no_customers_found:"Geen klanten gevonden!",no_contact:"Geen contact",no_contact_name:"Geen contactnaam",list_of_customers:"Hier vind je jouw klanten terug.",primary_display_name:"Primaire weergavenaam",select_currency:"Selecteer valuta",select_a_customer:"Selecteer een klant",type_or_click:"Typ of klik om te selecteren",new_transaction:"Nieuwe transactie",no_matching_customers:"Er zijn geen overeenkomende klanten!",phone_number:"Telefoonnummer",create_date:"Aangemaakt op",confirm_delete:"Deze klant en alle gerelateerde facturen, offertes en betalingen worden permanent verwijderd. | Deze klanten en alle gerelateerde facturen, offertes en betalingen worden permanent verwijderd.",created_message:"Klant succesvol aangemaakt",updated_message:"Klant succesvol geüpdatet",address_updated_message:"Adresinformatie succesvol bijgewerkt",deleted_message:"Klant succesvol verwijderd | Klanten zijn succesvol verwijderd",edit_currency_not_allowed:"Kan valuta niet wijzigen zodra de transacties zijn aangemaakt."},zJ={title:"Artikelen",items_list:"Lijst met items",name:"Naam",unit:"Eenheid",description:"Omschrijving",added_on:"Toegevoegd",price:"Prijs",date_of_creation:"Datum van creatie",not_selected:"Geen item geselecteerd",action:"Actie",add_item:"Voeg item toe",save_item:"Item opslaan",update_item:"Item bijwerken",item:"Artikel | Artikelen",add_new_item:"Voeg een nieuw item toe",new_item:"Nieuw item",edit_item:"Item bewerken",no_items:"Nog geen items!",list_of_items:"Hier vind je jouw artikelen terug.",select_a_unit:"selecteer eenheid",taxes:"Belastingen",item_attached_message:"Kan een item dat al in gebruik is niet verwijderen",confirm_delete:"U kunt dit item | niet herstellen U kunt deze items niet herstellen",created_message:"Item succesvol aangemaakt",updated_message:"Item succesvol bijgewerkt",deleted_message:"Item succesvol verwijderd | Items zijn verwijderd"},AJ={title:"Offertes",accept_estimate:"Offerte accepteren",reject_estimate:"Offerte afwijzen",estimate:"Offerte | Offertes",estimates_list:"Lijst met offertes",days:"{dagen} dagen",months:"{months} Maand",years:"{jaar} jaar",all:"Allemaal",paid:"Betaald",unpaid:"Onbetaald",customer:"Klant",ref_no:"Ref Nr.",number:"Aantal",amount_due:"Bedrag",partially_paid:"Gedeeltelijk betaald",total:"Totaal",discount:"Korting",sub_total:"Subtotaal",estimate_number:"Offerte nummer",ref_number:"Referentie nummer",contact:"Contact",add_item:"Voeg een item toe",date:"Datum",due_date:"Vervaldatum",expiry_date:"Vervaldatum",status:"Status",add_tax:"Belasting toevoegen",amount:"Bedrag",action:"Actie",notes:"Opmerkingen",tax:"Belasting",estimate_template:"Sjabloon",convert_to_invoice:"Converteren naar factuur",mark_as_sent:"Markeren als verzonden",send_estimate:"Verzend offerte",resend_estimate:"Offerte opnieuw verzenden",record_payment:"Betaling registreren",add_estimate:"Offerte toevoegen",save_estimate:"Bewaar offerte",confirm_conversion:"Deze offerte wordt gebruikt om een nieuwe factuur te maken.",conversion_message:"Factuur gemaakt",confirm_send_estimate:"Deze offerte wordt via e-mail naar de klant gestuurd",confirm_mark_as_sent:"Deze offerte wordt gemarkeerd als verzonden",confirm_mark_as_accepted:"Deze offerte wordt gemarkeerd als Geaccepteerd",confirm_mark_as_rejected:"Deze offerte wordt gemarkeerd als Afgewezen",no_matching_estimates:"Er zijn geen overeenkomende offertes!",mark_as_sent_successfully:"Offerte gemarkeerd als succesvol verzonden",send_estimate_successfully:"Offerte succesvol verzonden",errors:{required:"Veld is vereist"},accepted:"Geaccepteerd",rejected:"Afgewezen",expired:"Verlopen",sent:"Verzonden",draft:"Concept",viewed:"Bekeken",declined:"Geweigerd",new_estimate:"Nieuwe offerte",add_new_estimate:"Offerte toevoegen",update_Estimate:"Offerte bijwerken",edit_estimate:"Offerte bewerken",items:"artikelen",Estimate:"Offerte | Offertes",add_new_tax:"Nieuwe belasting toevoegen",no_estimates:"Nog geen offertes!",list_of_estimates:"Hier vind je jouw offertes terug.",mark_as_rejected:"Markeer als afgewezen",mark_as_accepted:"Markeer als geaccepteerd",marked_as_accepted_message:"Offerte gemarkeerd als geaccepteerd",marked_as_rejected_message:"Offerte gemarkeerd als afgewezen",confirm_delete:"U kunt deze offerte | niet herstellen U kunt deze offertes niet herstellen",created_message:"Offerte is gemaakt",updated_message:"Offerte succesvol bijgewerkt",deleted_message:"Offerte succesvol verwijderd | Offertes zijn succesvol verwijderd",something_went_wrong:"Er is iets fout gegaan",item:{title:"Titel van het item",description:"Omschrijving",quantity:"Aantal stuks",price:"Prijs",discount:"Korting",total:"Totaal",total_discount:"Totale korting",sub_total:"Subtotaal",tax:"Belasting",amount:"Bedrag",select_an_item:"Typ of klik om een item te selecteren",type_item_description:"Type Item Beschrijving (optioneel)"},mark_as_default_estimate_template_description:"Indien ingeschakeld, zal het geselecteerde sjabloon automatisch worden gekozen voor nieuwe offertes."},CJ={title:"Facturen",download:"Download",pay_invoice:"Betaal factuur",invoices_list:"Facturenlijst",invoice_information:"Factuurgegevens",days:"{dagen} dagen",months:"{months} Maand",years:"{jaar} jaar",all:"Allemaal",paid:"Betaald",unpaid:"Onbetaald",viewed:"Bekeken",overdue:"Over tijd",completed:"Voltooid",customer:"Klant",paid_status:"Betaling",ref_no:"REF NR.",number:"AANTAL",amount_due:"BEDRAG",partially_paid:"Gedeeltelijk betaald",total:"Totaal",discount:"Korting",sub_total:"Subtotaal",invoice:"Factuur | Facturen",invoice_number:"Factuurnummer",ref_number:"Referentie nummer",contact:"Contact",add_item:"Voeg een item toe",date:"Datum",due_date:"Vervaldatum",status:"Status",add_tax:"Belasting toevoegen",amount:"Bedrag",action:"Actie",notes:"Opmerkingen",view:"Bekijken",send_invoice:"Factuur verzenden",resend_invoice:"Factuur opnieuw verzenden",invoice_template:"Factuursjabloon",conversion_message:"Factuur succesvol gekloond",template:"Sjabloon",mark_as_sent:"Markeer als verzonden",confirm_send_invoice:"Deze factuur wordt via e-mail naar de klant gestuurd",invoice_mark_as_sent:"Deze factuur wordt gemarkeerd als verzonden",confirm_mark_as_accepted:"Deze offerte wordt gemarkeerd als Geaccepteerd",confirm_mark_as_rejected:"Deze factuur wordt gemarkeerd als Afgewezen",confirm_send:"Deze factuur wordt via e-mail naar de klant gestuurd",invoice_date:"Factuur datum",record_payment:"Betaling registreren",add_new_invoice:"Nieuwe factuur toevoegen",update_expense:"Onkosten bijwerken",edit_invoice:"Factuur bewerken",new_invoice:"Nieuwe factuur",save_invoice:"Factuur opslaan",update_invoice:"Factuur bijwerken",add_new_tax:"Nieuwe belasting toevoegen",no_invoices:"Nog geen facturen!",mark_as_rejected:"Markeer als afgewezen",mark_as_accepted:"Markeer als geaccepteerd",list_of_invoices:"Hier vind je jouw facturen terug.",select_invoice:"Selecteer Factuur",no_matching_invoices:"Er zijn geen overeenkomende facturen!",mark_as_sent_successfully:"Factuur gemarkeerd als succesvol verzonden",invoice_sent_successfully:"Factuur succesvol verzonden",cloned_successfully:"Factuur succesvol gekloond",clone_invoice:"Factuur klonen",confirm_clone:"Deze factuur wordt gekloond in een nieuwe factuur",item:{title:"Titel van het item",description:"Omschrijving",quantity:"Aantal stuks",price:"Prijs",discount:"Korting",total:"Totaal",total_discount:"Totale korting",sub_total:"Subtotaal",tax:"Belasting",amount:"Bedrag",select_an_item:"Typ of klik om een item te selecteren",type_item_description:"Type Item Beschrijving (optioneel)"},payment_attached_message:"Aan een van de geselecteerde facturen is al een betaling gekoppeld. Zorg ervoor dat u eerst de bijgevoegde betalingen verwijdert om door te gaan met de verwijdering",confirm_delete:"Deze factuur wordt permanent verwijderd | Deze facturen worden permanent verwijderd",created_message:"Factuur succesvol aangemaakt",updated_message:"Factuur succesvol bijgewerkt",deleted_message:"Factuur succesvol verwijderd | Facturen succesvol verwijderd",marked_as_sent_message:"Factuur gemarkeerd als succesvol verzonden",something_went_wrong:"Er is iets fout gegaan",invalid_due_amount_message:"Het totale factuurbedrag mag niet lager zijn dan het totale betaalde bedrag voor deze factuur. Werk de factuur bij of verwijder de bijbehorende betalingen om door te gaan.",mark_as_default_invoice_template_description:"Indien ingeschakeld, zal het geselecteerde sjabloon automatisch worden gekozen voor nieuwe offertes."},TJ={title:"Periodieke facturen",invoices_list:"Periodieke facturen lijst",days:"{days} dagen",months:"{months} maanden",years:"{years} jaar",all:"Alles",paid:"Betaald",unpaid:"Onbetaald",viewed:"Bekeken",overdue:"Achterstallig",active:"Actief",completed:"Voltooid",customer:"KLANT",paid_status:"BETAALD STATUS",ref_no:"REF NR.",number:"NUMMER",amount_due:"Bedrag",partially_paid:"Gedeeltelijk betaald",total:"Totaal",discount:"Korting",sub_total:"Subtotaal",invoice:"Periodieke factuur / Periodieke facturen",invoice_number:"Periodieke facturen",next_invoice_date:"Volgende factuurdatum",ref_number:"Referentie nummer",contact:"Contact",add_item:"Item toevoegen",date:"Datum",limit_by:"Beperken door",limit_date:"Uiterste datum",limit_count:"Limiet aantal",count:"Aantal",status:"Status",select_a_status:"Selecteer een status",working:"Bezig",on_hold:"Niet actief",complete:"Voltooid",add_tax:"Belasting toevoegen",amount:"Bedrag",action:"Actie",notes:"Opmerkingen",view:"Bekijken",basic_info:"Basis informatie",send_invoice:"Verstuur periodieke factuur",auto_send:"Automatisch verzenden",resend_invoice:"Verstuur periodieke factuur opnieuw",invoice_template:"Periodieke factuur sjabloon",conversion_message:"Periodieke factuur succesvol gekopieerd",template:"Sjabloon",mark_as_sent:"Markeer als verzonden",confirm_send_invoice:"Deze periodieke factuur wordt via e-mail naar de klant gestuurd",invoice_mark_as_sent:"Deze periodieke factuur wordt gemarkeerd als verzonden",confirm_send:"Deze terugkerende factuur wordt via e-mail naar de klant gestuurd",starts_at:"Startdatum",due_date:"Vervaldatum factuur",record_payment:"Betaling registreren",add_new_invoice:"Nieuwe periodieke factuur toevoegen",update_expense:"Onkosten bijwerken",edit_invoice:"Periodieke factuur bewerken",new_invoice:"Nieuwe periodieke factuur toevoegen",send_automatically:"Automatisch verzenden",send_automatically_desc:"Schakel dit in als u de factuur automatisch aan de klant wilt sturen wanneer deze is aangemaakt.",save_invoice:"Bewaar periodieke factuur",update_invoice:"Periodieke factuur bewerken",add_new_tax:"Nieuwe btw toevoegen",no_invoices:"Nog geen periodieke facturen!",mark_as_rejected:"Markeer als afgewezen",mark_as_accepted:"Markeer als geaccepteerd",list_of_invoices:"Hier vind je de periodieke facturen terug.",select_invoice:"Selecteer Factuur",no_matching_invoices:"Er zijn geen overeenkomende periodieke facturen!",mark_as_sent_successfully:"Periodieke factuur gemarkeerd als succesvol verzonden",invoice_sent_successfully:"Periodieke factuur succesvol verzonden",cloned_successfully:"Terugkerende factuur succesvol gekopieerd",clone_invoice:"Kopieer periodieke factuur",confirm_clone:"Deze periodieke factuur wordt gekopieerd naar een nieuwe periodieke factuur",add_customer_email:"Voeg een e-mailadres aan deze klant toe, zodat facturen automatisch verzonden kunnen worden.",item:{title:"Item titel",description:"Beschrijving",quantity:"Aantal",price:"Prijs",discount:"Korting",total:"Totaal",total_discount:"Totale korting",sub_total:"Subtotaal",tax:"Btw",amount:"Bedrag",select_an_item:"Typ of klik om een item te selecteren",type_item_description:"Type item beschrijving (optioneel)"},frequency:{title:"Frequentie",select_frequency:"Frequentie selecteren",minute:"Minuut",hour:"Uur",day_month:"Dag van de maand",month:"Maand",day_week:"Dag van de week"},confirm_delete:"Deze factuur wordt permanent verwijderd | Deze facturen worden permanent verwijderd",created_message:"Terugkerende factuur succesvol gecreëerd",updated_message:"Terugkerende factuur succesvol bijgewerkt",deleted_message:"Periodieke factuur succesvol verwijderd | Periodieke facturen succesvol verwijderd",marked_as_sent_message:"Periodieke factuur gemarkeerd als succesvol verzonden",user_email_does_not_exist:"E-mailadres van gebruiker bestaat niet",something_went_wrong:"er is iets fout gegaan",invalid_due_amount_message:"Het totale factuurbedrag mag niet lager zijn dan het totale betaalde bedrag voor deze factuur. Werk de factuur bij of verwijder de bijbehorende betalingen om door te gaan."},jJ={title:"Betalingen",payments_list:"Betalingslijst",record_payment:"Bestaling registreren",customer:"Klant",date:"Datum",amount:"Bedrag",action:"Actie",payment_number:"Betalingsnummer",payment_mode:"Betaalmethode",invoice:"Factuur",note:"Notitie",add_payment:"Betaling toevoegen",new_payment:"Nieuwe betaling",edit_payment:"Betaling bewerken",view_payment:"Bekijk betaling",add_new_payment:"Nieuwe betaling toevoegen",send_payment_receipt:"Betaalbewijs verzenden",send_payment:"Verstuur betaling",save_payment:"Betaling opslaan",update_payment:"Betaling bijwerken",payment:"Betaling | Betalingen",no_payments:"Nog geen betalingen!",not_selected:"Niet geselecteerd",no_invoice:"Geen factuur",no_matching_payments:"Er zijn geen overeenkomende betalingen!",list_of_payments:"Hier vind je jouw betalingen terug.",select_payment_mode:"Selecteer betalingswijze",confirm_mark_as_sent:"Deze offerte wordt gemarkeerd als verzonden",confirm_send_payment:"Deze betaling wordt via e-mail naar de klant gestuurd",send_payment_successfully:"Betaling succesvol verzonden",something_went_wrong:"Er is iets fout gegaan",confirm_delete:"Deze betaling wordt permanent verwijderd | Deze betalingen worden permanent verwijderd",created_message:"De betaling is succesvol aangemaakt",updated_message:"Betaling succesvol bijgewerkt",deleted_message:"Betaling succesvol verwijderd | Betalingen zijn verwijderd",invalid_amount_message:"Het bedrag van de betaling is ongeldig"},NJ={title:"Uitgaven",expenses_list:"Uitgavenlijst",select_a_customer:"Selecteer een klant",expense_title:"Titel",customer:"Klant",currency:"Valuta",contact:"Contact",category:"Categorie",from_date:"Van datum",to_date:"Tot datum",expense_date:"Datum",description:"Omschrijving",receipt:"Bon",amount:"Bedrag",action:"Actie",not_selected:"Niet geselecteerd",note:"Notitie",category_id:"Categorie ID",date:"Uitgavendatum",add_expense:"Kosten toevoegen",add_new_expense:"Kosten toevoegen",save_expense:"Kosten opslaan",update_expense:"Onkosten bijwerken",download_receipt:"Ontvangstbewijs downloaden",edit_expense:"Uitgaven bewerken",new_expense:"Kosten toevoegen",expense:"Uitgaven | Uitgaven",no_expenses:"Nog geen kosten!",list_of_expenses:"Hier vind je jouw uitgaven terug.",confirm_delete:"Deze uitgave wordt permanent verwijderd | Deze kosten worden permanent verwijderd",created_message:"Kosten succesvol gemaakt",updated_message:"Kosten succesvol bijgewerkt",deleted_message:"Kosten succesvol verwijderd | Uitgaven zijn verwijderd",categories:{categories_list:"Categorieënlijst",title:"Titel",name:"Naam",description:"Omschrijving",amount:"Bedrag",actions:"Acties",add_category:"categorie toevoegen",new_category:"Nieuwe categorie",category:"Categorie | Categorieën",select_a_category:"Selecteer een categorie"}},IJ={email:"E-mail",password:"Wachtwoord",forgot_password:"Wachtwoord vergeten?",or_signIn_with:"of Log in met",login:"Log in",register:"Registreren",reset_password:"Wachtwoord opnieuw instellen",password_reset_successfully:"Wachtwoord opnieuw ingesteld",enter_email:"Voer email in",enter_password:"Voer wachtwoord in",retype_password:"Geef nogmaals het wachtwoord"},FJ={buy_now:"Nu kopen",install:"Installeer",price:"Prijs",download_zip_file:"Download ZIP-bestand",unzipping_package:"Pakket uitpakken",copying_files:"Bestanden kopiëren",deleting_files:"Ongebruikte bestanden verwijderen",completing_installation:"Installatie voltooien",update_failed:"Update mislukt",install_success:"Module is succesvol geïnstalleerd!",customer_reviews:"Beoordelingen",license:"Licentie",faq:"Veelgestelde vragen",monthly:"Maandelijks",yearly:"Jaarlijks",updated:"Bijgewerkt",version:"Versie",disable:"Uitschakelen",module_disabled:"Module uitgeschakeld",enable:"Inschakelen",module_enabled:"Module ingeschakeld",update_to:"Update naar",module_updated:"Module succesvol bijgewerkt!",title:"Modules",module:"Module | Modules",api_token:"API-token",invalid_api_token:"Ongeldig API-token.",other_modules:"Andere modules",view_all:"Toon alles",no_reviews_found:"Er zijn nog geen beoordelingen voor deze module!",module_not_purchased:"Module niet gekocht",module_not_found:"Module niet gevonden",version_not_supported:"This module version doesn't support the current version of InvoiceShelf",last_updated:"Laatst bijgewerkt op",connect_installation:"Verbind uw installatie",api_token_description:"Log in op {url} en verbind deze installatie door het API Token in te voeren. Uw gekochte modules zullen hier verschijnen nadat de verbinding is gemaakt.",view_module:"Bekijk Module",update_available:"Update beschikbaar",purchased:"Gekocht",installed:"Geïnstalleerd",no_modules_installed:"Nog geen modules geïnstalleerd!",disable_warning:"Alle instellingen voor dit specifiek zullen worden teruggedraaid.",what_you_get:"Wat je krijgt"},RJ={title:"Gebruikers",users_list:"Gebruikerslijst",name:"Naam",description:"Omschrijving",added_on:"Toegevoegd",date_of_creation:"Datum van creatie",action:"Actie",add_user:"Gebruiker toevoegen",save_user:"Gebruiker opslaan",update_user:"Gebruiker bijwerken",user:"Gebruiker | Gebruikers",add_new_user:"Nieuwe gebruiker toevoegen",new_user:"Nieuwe gebruiker",edit_user:"Gebruiker bewerken",no_users:"Nog geen gebruikers!",list_of_users:"Deze sectie zal de lijst met gebruikers bevatten.",email:"E-mail",phone:"Telefoon",password:"Wachtwoord",user_attached_message:"Kan een item dat al in gebruik is niet verwijderen",confirm_delete:"Je kunt deze gebruiker later niet herstellen | Je kunt deze gebruikers later niet herstellen",created_message:"Gebruiker succesvol aangemaakt",updated_message:"Gebruiker met succes bijgewerkt",deleted_message:"Gebruiker succesvol verwijderd | Gebruikers succesvol verwijderd",select_company_role:"Selecteer rol voor {company}",companies:"Bedrijven"},OJ={title:"Verslag doen van",from_date:"Van datum",to_date:"Tot datum",status:"Status",paid:"Betaald",unpaid:"Onbetaald",download_pdf:"Download PDF",view_pdf:"Bekijk PDF",update_report:"Rapport bijwerken",report:"Verslag | Rapporten",profit_loss:{profit_loss:"Verlies",to_date:"Tot datum",from_date:"Van datum",date_range:"Selecteer Datumbereik"},sales:{sales:"Verkoop",date_range:"Selecteer datumbereik",to_date:"Tot datum",from_date:"Van datum",report_type:"Rapporttype"},taxes:{taxes:"Belastingen",to_date:"Tot datum",from_date:"Van datum",date_range:"Selecteer Datumbereik"},errors:{required:"Veld is vereist"},invoices:{invoice:"Factuur",invoice_date:"Factuur datum",due_date:"Vervaldatum",amount:"Bedrag",contact_name:"Contactnaam",status:"Status"},estimates:{estimate:"Offerte",estimate_date:"Offerte Datum",due_date:"Vervaldatum",estimate_number:"Offerte nummer",ref_number:"Referentie nummer",amount:"Bedrag",contact_name:"Contactnaam",status:"Status"},expenses:{expenses:"Uitgaven",category:"Categorie",date:"Datum",amount:"Bedrag",to_date:"Tot datum",from_date:"Van datum",date_range:"Selecteer Datumbereik"}},MJ={menu_title:{account_settings:"Account instellingen",company_information:"Bedrijfsinformatie",customization:"Aanpassen",preferences:"Voorkeuren",notifications:"Kennisgevingen",tax_types:"Belastingtypen",expense_category:"Onkostencategorieën",update_app:"App bijwerken",backup:"Back-up",file_disk:"Bestandsopslag",custom_fields:"Aangepaste velden",payment_modes:"Betaalmethodes",notes:"Opmerkingen",exchange_rate:"Wisselkoers",address_information:"Adresgegevens"},address_information:{section_description:" U kunt uw adresgegevens bijwerken via het onderstaande formulier."},title:"Instellingen",setting:"Instellingen | Instellingen",general:"Algemeen",language:"Taal",primary_currency:"Primaire valuta",timezone:"Tijdzone",date_format:"Datumnotatie",currencies:{title:"Valuta's",currency:"Valuta | Valuta's",currencies_list:"Lijst van valuta's",select_currency:"selecteer valuta",name:"Naam",code:"Code",symbol:"Symbool",precision:"Precisie",thousand_separator:"Duizend scheidingsteken",decimal_separator:"Decimaalscheidingsteken",position:"Positie",position_of_symbol:"Positie van symbool",right:"Rechtsaf",left:"Links",action:"Actie",add_currency:"Valuta toevoegen"},mail:{host:"Mail host",port:"E-mail poort",driver:"Mail-stuurprogramma",secret:"Geheim",mailgun_secret:"Mailgun geheim",mailgun_domain:"Domein",mailgun_endpoint:"Mailgun-eindpunt",ses_secret:"SES geheim",ses_key:"SES-sleutel",password:"Mail wachtwoord",username:"Mail gebruikersnaam",mail_config:"E-mailconfiguratie",from_name:"Van Mail Name",from_mail:"Van e-mailadres",encryption:"E-mailversleuteling",mail_config_desc:"Hieronder vindt u het formulier voor het configureren van het e-mailstuurprogramma voor het verzenden van e-mails vanuit de app. U kunt ook externe providers zoals Sendgrid, SES enz. Configureren."},pdf:{title:"PDF-instelling",footer_text:"Voettekst",pdf_layout:"PDF indeling"},company_info:{company_info:"Bedrijfsinfo",company_name:"Bedrijfsnaam",company_logo:"Bedrijfslogo",section_description:"Informatie over uw bedrijf die wordt weergegeven op facturen, offertes en andere documenten die door InvoiceShelf zijn gemaakt.",phone:"Telefoon",country:"Land",state:"Provincie",city:"Stad",address:"Adres",zip:"Postcode",save:"Opslaan",delete:"Verwijderen",updated_message:"Bedrijfsinformatie succesvol bijgewerkt",delete_company:"Bedrijf verwijderen",delete_company_description:"Zodra u uw bedrijf verwijdert, verliest u alle gegevens en bestanden die eraan gekoppeld zijn.",are_you_absolutely_sure:"Weet u het zeker?",delete_company_modal_desc:"Deze actie kan niet ongedaan worden gemaakt. Dit zal {company} en alle bijbehorende gegevens permanent verwijderen.",delete_company_modal_label:"Typ {company} om te bevestigen"},custom_fields:{title:"Aangepaste velden",section_description:"Uw facturen, offertes & betalingsbewijzen aanpassen met uw eigen velden. Gebruik onderstaande velden op het adres format op de Customization instellings pagina.",add_custom_field:"Extra veld toevoegen",edit_custom_field:"Veld wijzigen",field_name:"Veld naam",label:"Label",type:"Type",name:"Naam",slug:"Slug",required:"Verplicht",placeholder:"Tijdelijke plaatshouder",help_text:"Hulp Text",default_value:"Standaard waarde",prefix:"Voorvoegsel",starting_number:"Startnummer",model:"Model",help_text_description:"Voer tekst in om gebruikers te helpen het doel van dit aangepaste veld te begrijpen.",suffix:"Achtervoegsel",yes:"Ja",no:"Nee",order:"Volgorde",custom_field_confirm_delete:"U kunt dit veld niet herstellen",already_in_use:"Aangepast veld is al in gebruik",deleted_message:"Aangepast veld is succesvol verwijderd",options:"opties",add_option:"Optie toevoegen",add_another_option:"Nog een optie toevoegen",sort_in_alphabetical_order:"Sorteer op alfabetische volgorde",add_options_in_bulk:"Voeg opties toe in bulk",use_predefined_options:"Gebruik voorgedefinieerde opties",select_custom_date:"Selecteer een aangepaste datum",select_relative_date:"Selecteer relatieve datum",ticked_by_default:"Standaard aangevinkt",updated_message:"Aangepast veld is succesvol aangepast",added_message:"Aangepast veld is succesvol toegevoegd",press_enter_to_add:"Druk op Enter om een nieuwe optie toe te voegen",model_in_use:"Kan model niet bijwerken voor velden die al in gebruik zijn.",type_in_use:"Kan type niet bijwerken voor velden die al in gebruik zijn."},customization:{customization:"aanpassen",updated_message:"Bedrijfsinformatie succesvol bijgewerkt",save:"Opslaan",insert_fields:"Velden invoegen",learn_custom_format:"Leer hoe je een aangepast formaat kunt gebruiken",add_new_component:"Component toevoegen",component:"Component",Parameter:"Parameter",series:"Reeksen",series_description:"Om een statische voorvoegsel/postfix zoals 'INV' in uw hele bedrijf in te stellen. Het ondersteunt tekenlengte tot 4 tekens.",series_param_label:"Serie Waarde",delimiter:"Scheidingsteken",delimiter_description:"Enkel teken voor het opgeven van de grens tussen 2 verschillende componenten. Standaard is het ingesteld op -",delimiter_param_label:"Scheidingsteken waarde",date_format:"Datumformaat",date_format_description:"Een lokaal datum- en tijdveld dat een formaatparameter accepteert. Het standaardformaat: 'Y' geeft het huidige jaar weer.",date_format_param_label:"Formaat",sequence:"Volgnummer",sequence_description:"Opeenvolgende nummering voor uw bedrijf. U kunt de lengte opgeven op de aangegeven parameter.",sequence_param_label:"Volgnummerlengte",customer_series:"Voorvoegsel",customer_series_description:"Om een andere voor- of achtervoegsel voor elke klant in te stellen.",customer_sequence:"Klantnummer",customer_sequence_description:"Een volgnummer voor elk van uw klanten.",customer_sequence_param_label:"Klantnummerlengte",random_sequence:"Willekeurige reeks",random_sequence_description:"Willekeurige alfanumerieke tekenreeks. U kunt de lengte opgeven op de aangegeven parameters.",random_sequence_param_label:"Volgnummerlengte",invoices:{title:"Facturen",invoice_number_format:"Factuurnummer indeling",invoice_number_format_description:"Wijzig hoe uw factuurnummer automatisch wordt gegenereerd bij het aanmaken van een nieuwe factuur.",preview_invoice_number:"Voorbeeldweergave factuurnummer indeling",due_date:"Vervaldatum",due_date_description:"Geef aan hoe de vervaldatum automatisch wordt ingesteld wanneer u een factuur aanmaakt.",due_date_days:"Factuur verlopen na dagen",set_due_date_automatically:"Vervaldatum automatisch vullen",set_due_date_automatically_description:"Schakel dit in als u automatisch een vervaldatum wilt instellen wanneer u een nieuwe factuur aanmaakt.",default_formats:"Standaard opmaak",default_formats_description:"Onderstaand formaat wordt gebruikt om de velden automatisch in te vullen bij het aanmaken van facturen.",default_invoice_email_body:"Standaard factuur email text",company_address_format:"Bedrijfsadres format",shipping_address_format:"Verzendadres format",billing_address_format:"Factuuradres format",invoice_email_attachment:"Stuur factuur als bijlage",invoice_email_attachment_setting_description:"Schakel dit in als u facturen als e-mailbijlage wilt verzenden. Houd er rekening mee dat de knop 'Factuur bekijken' in e-mails niet meer wordt weergegeven wanneer deze is ingeschakeld.",invoice_settings_updated:"Factuurinstelling succesvol bijgewerkt",retrospective_edits:"Retrospectieve bewerkingen",allow:"Toestaan",disable_on_invoice_partial_paid:"Uitschakelen nadat gedeeltelijke betaling is opgeslagen",disable_on_invoice_paid:"Uitschakelen nadat volledige betaling is opgenomen",disable_on_invoice_sent:"Uitschakelen nadat factuur is verzonden",retrospective_edits_description:" Op basis van de wetten van uw land of uw voorkeur, kunt u gebruikers beperken om afgeronde facturen te bewerken."},estimates:{title:"Offertes",estimate_number_format:"Offerte nummer formaat",estimate_number_format_description:"Aanpassen hoe uw offertes nummer automatisch wordt gegenereerd als u een nieuwe offerte aanmaakt.",preview_estimate_number:"Voorbeeld offertes nummer",expiry_date:"Vervaldatum",expiry_date_description:"Geef aan hoe de vervaldatum automatisch wordt ingesteld wanneer u een offerte aanmaakt.",expiry_date_days:"Offerte vervalt over dagen",set_expiry_date_automatically:"Automatisch vervaldatum instellen",set_expiry_date_automatically_description:"Schakel dit in als u automatisch de vervaldatum wilt instellen wanneer u een nieuwe schatting maakt.",default_formats:"Standaardformaat",default_formats_description:"Onderstaand formaten wordt gebruikt om de velden automatisch in te vullen bij het aanmaken van offerte.",default_estimate_email_body:"Standaard offerte email text",company_address_format:"Bedrijfsadres format",shipping_address_format:"Verzendadres format",billing_address_format:"Factuuradres Format",estimate_email_attachment:"Stuur offerte als bijlage",estimate_email_attachment_setting_description:"Schakel dit in als u de offertes als e-mailbijlage wilt verzenden. Houd er rekening mee dat de knop 'Bekijk offerte' in e-mails niet meer wordt weergegeven wanneer deze is ingeschakeld.",estimate_settings_updated:"Instelling Offerte succesvol bijgewerkt",convert_estimate_options:"Offerte omzetten actie",convert_estimate_description:"Specificeer wat er gebeurt met de offerte nadat deze omgezet is naar een factuur.",no_action:"Geen handeling",delete_estimate:"Schatting verwijderen",mark_estimate_as_accepted:"Markeren offerte als geaccepteerd"},payments:{title:"Betalingen",payment_number_format:"Betalingnummer formaat",payment_number_format_description:"Aanpassen hoe uw offertes nummer automatisch wordt gegenereerd als u een nieuwe offerte aanmaakt.",preview_payment_number:"Bekijk betalingsnummer",default_formats:"Standaard formaten",default_formats_description:"Onderstaande formaten worden gebruikt om de velden automatisch in te vullen bij het maken van betalingen.",default_payment_email_body:"Standaard format betalingsmail",company_address_format:"Bedrijfsadres format",from_customer_address_format:"Van klant adres formaat",payment_email_attachment:"Stuur betaalbewijs als bijlage",payment_email_attachment_setting_description:"Schakel dit in als u de betalingsbewijzen als e-mailbijlage wilt verzenden. Houd er rekening mee dat de knop 'Betaling bekijken' in e-mails niet meer wordt weergegeven wanneer deze is ingeschakeld.",payment_settings_updated:"Betalingsinstelling geüpdatet"},items:{title:"Artikelen",units:"eenheden",add_item_unit:"Itemeenheid toevoegen",edit_item_unit:"Itemeenheid bewerken",unit_name:"Naam eenheid",item_unit_added:"Item Eenheid toegevoegd",item_unit_updated:"Artikeleenheid bijgewerkt",item_unit_confirm_delete:"U kunt dit item niet terughalen",already_in_use:"Item Unit is al in gebruik",deleted_message:"Artikeleenheid succesvol verwijderd"},notes:{title:"Opmerkingen",description:"Bespaar tijd door notities te maken en ze opnieuw te gebruiken op uw facturen, ramingen en betalingen.",notes:"Opmerkingen",type:"Type",add_note:"Notitie toevoegen",add_new_note:"Voeg een nieuwe notitie toe",name:"Naam",edit_note:"Notitie bewerken",note_added:"Notitie toegevoegd",note_updated:"Notitie bijgewerkt",note_confirm_delete:"U kunt deze notitie niet terughalen",already_in_use:"Notitie is reeds in gebruik",deleted_message:"Notitie verwijderd"}},account_settings:{profile_picture:"Profielfoto",name:"Naam",email:"E-mail",password:"Wachtwoord",confirm_password:"bevestig wachtwoord",account_settings:"Account instellingen",save:"Opslaan",section_description:"U kunt uw naam, e-mailadres en wachtwoord bijwerken via onderstaand formulier.",updated_message:"Accountinstellingen succesvol bijgewerkt"},user_profile:{name:"Naam",email:"E-mail",password:"Wachtwoord",confirm_password:"Bevestig wachtwoord"},notification:{title:"Kennisgeving",email:"Stuur meldingen naar",description:"Welke e-mailmeldingen wilt u ontvangen als er iets verandert?",invoice_viewed:"Factuur bekeken",invoice_viewed_desc:"Wanneer uw klant de factuur bekijkt die via het kraterdashboard is verzonden.",estimate_viewed:"Offerte bekeken",estimate_viewed_desc:"Wanneer uw klant de offerte bekijkt die via het kraterdashboard is verzonden.",save:"Opslaan",email_save_message:"E-mail succesvol opgeslagen",please_enter_email:"Voer e-mailadres in"},roles:{title:"Rollen",description:"Beheer de rollen en machtigingen van dit bedrijf",save:"Opslaan",add_new_role:"Nieuwe rol toevoegen",role_name:"Rol naam",added_on:"Toegevoegd op",add_role:"Rol toevoegen",edit_role:"Rol bewerken",name:"Naam",permission:"Machtiging Machtigingen",select_all:"Selecteer alles",none:"Geen",confirm_delete:"Dit rol wordt permanent verwijderd",created_message:"Rol succesvol gemaakt",updated_message:"Rol succesvol bijgewerkt",deleted_message:"Rol succesvol verwijderd",already_in_use:"Rol is reeds in gebruik"},exchange_rate:{exchange_rate:"Wisselkoers",title:"Problemen met wisselkoersen oplossen",description:"Voer de wisselkoers in van alle onderstaande valuta's om InvoiceShelf te helpen de bedragen in {currency} goed te berekenen.",drivers:"Stuurprogramma 's",new_driver:"Voeg nieuwe provider toe",edit_driver:"Provider bewerken",select_driver:"Selecteer stuurprogramma",update:"selecteer wisselkoers ",providers_description:"Configureer hier uw wisselkoersaanbieders om de laatste wisselkoers voor transacties automatisch op te halen.",key:"API sleutel",name:"Naam",driver:"Stuurprogramma",is_default:"IS STANDAARD",currency:"Valuta's",exchange_rate_confirm_delete:"Dit stuurprogramma wordt permanent verwijderd",created_message:"Provider succesvol aangemaakt",updated_message:"Provider succesvol bijgewerkt",deleted_message:"Provider succesvol verwijderd",error:" U kunt de actieve stuurprogramma niet verwijderen",default_currency_error:"Deze valuta wordt al gebruikt in een van de Actieve Provider",exchange_help_text:"Voer de wisselkoers in om te converteren van {currency} naar {baseCurrency}",currency_freak:"Valuta Freak",currency_layer:"Valuta-laag",open_exchange_rate:"Open Exchange Rate",currency_converter:"Valuta omzetter",server:"Server",url:"URL",active:"Actief",currency_help_text:"This provider will only be used on above selected currencies",currency_in_used:"The following currencies are already active on another provider. Please remove these currencies from selection to activate this provider again."},tax_types:{title:"Belastingtypen",add_tax:"Belasting toevoegen",edit_tax:"Belasting bewerken",description:"U kunt naar believen belastingen toevoegen of verwijderen. InvoiceShelf ondersteunt belastingen op individuele items en op de factuur.",add_new_tax:"Nieuwe belasting toevoegen",tax_settings:"Belastinginstellingen",tax_per_item:"Belasting per item",tax_name:"Belastingnaam",compound_tax:"Samengestelde belasting",percent:"Procent",action:"Actie",tax_setting_description:"Schakel dit in als u belastingen wilt toevoegen aan afzonderlijke factuuritems. Standaard worden belastingen rechtstreeks aan de factuur toegevoegd.",created_message:"Belastingtype is gemaakt",updated_message:"Belastingtype succesvol bijgewerkt",deleted_message:"Belastingtype succesvol verwijderd",confirm_delete:"Dit belastingtype wordt permanent verwijderd",already_in_use:"Belasting al in gebruik"},payment_modes:{title:"Betaalmethodes",description:"Modes of transaction for payments",add_payment_mode:"Add Payment Mode",edit_payment_mode:"Edit Payment Mode",mode_name:"Mode Name",payment_mode_added:"Betaalwijze toegevoegd",payment_mode_updated:"Payment Mode Updated",payment_mode_confirm_delete:"You will not be able to recover this Payment Mode",payments_attached:"This payment method is already attached to payments. Please delete the attached payments to proceed with deletion.",expenses_attached:"This payment method is already attached to expenses. Please delete the attached expenses to proceed with deletion.",deleted_message:"Payment Mode deleted successfully"},expense_category:{title:"Onkostencategorieën",action:"Actie",description:"Categorieën zijn vereist voor het toevoegen van onkostenposten. U kunt deze categorieën naar wens toevoegen of verwijderen.",add_new_category:"Voeg een nieuwe categorie toe",add_category:"categorie toevoegen",edit_category:"Categorie bewerken",category_name:"categorie naam",category_description:"Omschrijving",created_message:"Onkostencategorie succesvol aangemaakt",deleted_message:"Uitgavencategorie is verwijderd",updated_message:"Uitgavencategorie is bijgewerkt",confirm_delete:"U kunt deze uitgavencategorie niet herstellen",already_in_use:"Categorie al in gebruik"},preferences:{currency:"Valuta",default_language:"Standaard taal",time_zone:"Tijdzone",fiscal_year:"Financieel jaar",date_format:"Datumnotatie",discount_setting:"Kortingsinstelling",discount_per_item:"Korting per item",discount_setting_description:"Schakel dit in als u korting wilt toevoegen aan afzonderlijke factuuritems. Standaard wordt korting rechtstreeks aan de factuur toegevoegd.",expire_public_links:"Automatically Expire Public Links",expire_setting_description:"Specify whether you would like to expire all the links sent by application to view invoices, estimates & payments, etc after a specified duration.",save:"Opslaan",preference:"Voorkeur | Voorkeuren",general_settings:"Standaardvoorkeuren voor het systeem.",updated_message:"Voorkeuren succesvol bijgewerkt",select_language:"Selecteer taal",select_time_zone:"Selecteer Tijdzone",select_date_format:"Selecteer datum/tijdindeling",select_financial_year:"Selecteer financieel ja",recurring_invoice_status:"Recurring Invoice Status",create_status:"Create Status",active:"Active",on_hold:"In wacht",update_status:"Updatestatus",completed:"Voltooid",company_currency_unchangeable:"Bedrijfsvaluta kan niet worden gewijzigd"},update_app:{title:"App bijwerken",description:"U kunt InvoiceShelf eenvoudig bijwerken door te controleren op een nieuwe update door op de onderstaande knop te klikken",check_update:"Controleer op updates",avail_update:"Nieuwe update beschikbaar",next_version:"Volgende versie",requirements:"Vereisten",update:"Nu updaten",update_progress:"Update wordt uitgevoerd...",progress_text:"Het duurt maar een paar minuten. Vernieuw het scherm niet en sluit het venster niet voordat de update is voltooid",update_success:"App is bijgewerkt! Een ogenblik geduld, uw browservenster wordt automatisch opnieuw geladen.",latest_message:"Geen update beschikbaar! U gebruikt de nieuwste versie.",current_version:"Huidige versie",download_zip_file:"Download ZIP-bestand",unzipping_package:"Pakket uitpakken",copying_files:"Bestanden kopiëren",deleting_files:"Ongebruikte bestanden verwijderen",running_migrations:"Migraties uitvoeren",finishing_update:"Afwerking Update",update_failed:"Update mislukt",update_failed_text:"Sorry! Je update is mislukt op: {step} step ",update_warning:"All of the application files and default template files will be overwritten when you update the application using this utility. Please take a backup of your templates & database before updating."},backup:{title:"Backup | Backups",description:"De back-up is een zipfile met alle bestanden in de mappen die je opgeeft samen met een dump van je database",new_backup:"Nieuwe back-up",create_backup:"Backup maken",select_backup_type:"Backup-type selecteren",backup_confirm_delete:"U kunt deze back-up niet terughalen",path:"pad",new_disk:"Nieuwe schijf",created_at:"aangemaakt op",size:"grootte",dropbox:"dropbox",local:"lokaal",healthy:"gezond",amount_of_backups:"aantal back-ups",newest_backups:"nieuwste back-ups",used_storage:"gebruikte opslag",select_disk:"Selecteer Disk",action:"Actie",deleted_message:"Back-up is succesvol verwijderd",created_message:"Back-up successvol gemaakt",invalid_disk_credentials:"Ongeldige inloggegevens voor geselecteerde schijf"},disk:{title:"Bestandsschijf | Bestandsschijven",description:"Standaard gebruikt InvoiceShelf uw lokale schijf om back-ups, avatars en andere afbeeldingen op te slaan. U kunt indien gewenst meer dan één opslaglocatie configureren zoals DigitalOcean, S3 en Dropbox.",created_at:"aangemaakt op",dropbox:"dropbox",name:"Naam",driver:"Stuurprogramma",disk_type:"Type",disk_name:"Naam van de schijf",new_disk:"Nieuwe schijf toevoegen",filesystem_driver:"Bestandssysteem locatie",local_driver:"lokaal besturingsprogramma",local_root:"locale schijf",public_driver:"Publiek besturingsprogramma",public_root:"Openbare schijf",public_url:"Publieke URL",public_visibility:"Publieke zichtbaarheid",media_driver:"Media stuurprogramma",media_root:"Media schijf",aws_driver:"AWS Stuurprogramma",aws_key:"AWS Sleutel",aws_secret:"AWS-geheim",aws_region:"AWS Regio",aws_bucket:"AWS Bucket",aws_root:"AWS Root",do_spaces_type:"Do Spaces type",do_spaces_key:"Do Spaces Key",do_spaces_secret:"Do Spaces Secret",do_spaces_region:"Do Spaces Regio",do_spaces_bucket:"Do Spaces Bucket",do_spaces_endpoint:"Do Spaces Endpoint",do_spaces_root:"Do Spaces hoofdmap",dropbox_type:"Dropbox Type",dropbox_token:"Dropbox Token",dropbox_key:"Dropbox Sleutel",dropbox_secret:"Dropbox Geheim",dropbox_app:"Dropbox App",dropbox_root:"Dropbox Hoofdmap",default_driver:"Standaard stuurprogramma",is_default:"IS STANDAARD",set_default_disk:"Standaardschijf instellen",set_default_disk_confirm:"Deze schijf zal als standaard worden ingesteld en alle nieuwe PDF's worden opgeslagen op deze schijf",success_set_default_disk:"Standaardschijf ingesteld",save_pdf_to_disk:"PDF's opslaan op schijf",disk_setting_description:" Schakel dit in als je een kopie van elke factuur, raming en betalingsbewijs automatisch op je standaard schijf wilt opslaan. Het inschakelen van deze optie zal de laadtijd verminderen wanneer de PDF's worden bekeken.",select_disk:"Selecteer Schijf",disk_settings:"Schijfinstellingen",confirm_delete:"Uw bestaande bestanden en mappen in de opgegeven schijf worden niet beïnvloed, maar uw schijfconfiguratie wordt uit InvoiceShelf verwijderd",action:"Actie",edit_file_disk:"Bestandsschijf bewerken",success_create:"Schijf toegevoegd",success_update:"Schijf bijgewerkt",error:"Schijf niet toegevoegd",deleted_message:"Bestandsschijf verwijderd",disk_variables_save_successfully:"Schijf geconfigureerd",disk_variables_save_error:"Schijfconfiguratie mislukt.",invalid_disk_credentials:"Ongeldige inloggegevens voor geselecteerde schijf"},taxations:{add_billing_address:"Vul factuuradres in",add_shipping_address:"Vul bezorgadres in",add_company_address:"Vul bedrijfsadres in",modal_description:"De onderstaande informatie is vereist om de verkoopbelasting op te halen.",add_address:"Voeg adres toe voor het ophalen van verkoopbelasting.",address_placeholder:"Voorbeeld: 123, Mijn Straat",city_placeholder:"Voorbeeld: Amsterdam",state_placeholder:"Voorbeeld: Noord-Holland",zip_placeholder:"Voorbeeld: 1234 AB",invalid_address:"Vul een geldig adres in a.u.b."}},$J={account_info:"Account Informatie",account_info_desc:"Onderstaande gegevens worden gebruikt om het hoofdbeheerdersaccount te maken. Ook kunt u de gegevens op elk moment wijzigen na inloggen.",name:"Naam",email:"E-mail",password:"Wachtwoord",confirm_password:"bevestig wachtwoord",save_cont:"Opslaan doorgaan",company_info:"Bedrijfsinformatie",company_info_desc:"Deze informatie wordt weergegeven op facturen. Merk op dat u dit later op de instellingenpagina kunt bewerken.",company_name:"Bedrijfsnaam",company_logo:"Bedrijfslogo",logo_preview:"Logo Voorbeeld",preferences:"Voorkeuren",preferences_desc:"Standaardvoorkeuren voor het systeem.",currency_set_alert:"De valuta van het bedrijf kan later niet worden gewijzigd.",country:"Land",state:"Provincie",city:"Stad",address:"Adres",street:"Straat1 | Straat # 2",phone:"Telefoon",zip_code:"Postcode",go_back:"Ga terug",currency:"Valuta",language:"Taal",time_zone:"Tijdzone",fiscal_year:"Financieel jaar",date_format:"Datumnotatie",from_address:"Van adres",username:"Gebruikersnaam",next:"De volgende",continue:"Doorgaan met",skip:"Overslaan",database:{database:"Site-URL en database",connection:"Database verbinding",host:"Database host",port:"Databasepoort",password:"Database wachtwoord",app_url:"App-URL",app_domain:"App Domein",username:"Database gebruikersnaam",db_name:"Database naam",db_path:"Databankpad",desc:"Maak een database op uw server en stel de referenties in via het onderstaande formulier."},permissions:{permissions:"Rechten",permission_confirm_title:"Weet je zeker dat je door wilt gaan?",permission_confirm_desc:"Controle van maprechten is mislukt",permission_desc:"Hieronder vindt u de lijst met mapmachtigingen die vereist zijn om de app te laten werken. Als de machtigingscontrole mislukt, moet u de mapmachtigingen bijwerken."},verify_domain:{title:"Menselijke Verificatie",desc:"InvoiceShelf maakt gebruik van sessie gebaseerde authenticatie die domeinverificatie vereist voor veiligheidsdoeleinden. Voer het domein in waarop u toegang zult krijgen tot uw webapplicatie.",app_domain:"App Domein",verify_now:"Nu verifiëren",success:"E-mailadres succesvol geverifieerd.",failed:"Domeinverificatie is mislukt. Voer een geldige domeinnaam in.",verify_and_continue:"Verifiëren en doorgaan"},mail:{host:"E-mail server",port:"E-mail Poort",driver:"Mail-stuurprogramma",secret:"Geheim",mailgun_secret:"Mailgun geheim",mailgun_domain:"Domein",mailgun_endpoint:"Mailgun-eindpunt",ses_secret:"SES geheim",ses_key:"SES-sleutel",password:"Mail wachtwoord",username:"Mail gebruikersnaam",mail_config:"E-mailconfiguratie",from_name:"Van Mail Name",from_mail:"Van e-mailadres",encryption:"E-mailversleuteling",mail_config_desc:"Hieronder vindt u het formulier voor het configureren van het e-mailstuurprogramma voor het verzenden van e-mails vanuit de app. U kunt ook externe providers zoals Sendgrid, SES enz. Configureren."},req:{system_req:"systeem vereisten",php_req_version:"PHP (versie {versie} vereist))",check_req:"Controleer vereisten",system_req_desc:"InvoiceShelf heeft een paar serververeisten. Zorg ervoor dat uw server de vereiste php-versie heeft en alle onderstaande extensies."},errors:{migrate_failed:"Migreren mislukt",database_variables_save_error:"Kan configuratie niet schrijven naar .env-bestand. Controleer de bestandsrechten",mail_variables_save_error:"E-mailconfiguratie is mislukt.",connection_failed:"Databaseverbinding mislukt",database_should_be_empty:"Database moet leeg zijn"},success:{mail_variables_save_successfully:"E-mail succesvol geconfigureerd",database_variables_save_successfully:"Database succesvol geconfigureerd."}},LJ={invalid_phone:"Ongeldig Telefoonnummer",invalid_url:"Ongeldige URL (bijvoorbeeld: http://www.invoiceshelf.com))",invalid_domain_url:"Ongeldige URL (bijvoorbeeld: invoiceshelf.com))",required:"Veld is verplicht",email_incorrect:"Incorrecte Email.",email_already_taken:"De email is al in gebruik.",email_does_not_exist:"Gebruiker met opgegeven e-mailadres bestaat niet",item_unit_already_taken:"De naam van dit item is al in gebruik",payment_mode_already_taken:"Deze naam voor de betalingsmodus is al in gebruik",send_reset_link:"Stuur resetlink",not_yet:"Nog niet? Stuur het opnieuw",password_min_length:"Wachtwoord moet {count} tekens bevatten",name_min_length:"Naam moet minimaal {count} letters bevatten.",prefix_min_length:"Voorvoegsel moet minstens {count} letters bevatten.",enter_valid_tax_rate:"Voer een geldig belastingtarief in",numbers_only:"Alleen nummers.",characters_only:"Alleen tekens.",password_incorrect:"Wachtwoorden moeten identiek zijn",password_length:"Wachtwoord moet {count} tekens lang zijn.",qty_must_greater_than_zero:"Hoeveelheid moet groter zijn dan nul.",price_greater_than_zero:"Prijs moet groter zijn dan nul.",payment_greater_than_zero:"De betaling moet hoger zijn dan nul.",payment_greater_than_due_amount:"Ingevoerde betaling is meer dan het openstaande bedrag van deze factuur.",quantity_maxlength:"Het aantal mag niet groter zijn dan 20 cijfers.",price_maxlength:"Prijs mag niet groter zijn dan 20 cijfers.",price_minvalue:"Prijs moet hoger zijn dan 0.",amount_maxlength:"Bedrag mag niet groter zijn dan 20 cijfers.",amount_minvalue:"Bedrag moet groter zijn dan 0.",discount_maxlength:"Korting mag niet meer zijn dan maximale korting",description_maxlength:"De beschrijving mag niet meer dan 255 tekens bevatten.",subject_maxlength:"Het onderwerp mag niet meer dan 100 tekens bevatten.",message_maxlength:"Bericht mag niet groter zijn dan 255 tekens.",maximum_options_error:"Maximaal {max} opties geselecteerd. Verwijder eerst een geselecteerde optie om een andere te selecteren.",notes_maxlength:"Notities mogen niet langer zijn dan 255 tekens.",address_maxlength:"Adres mag niet groter zijn dan 255 tekens.",ref_number_maxlength:"Ref-nummer mag niet groter zijn dan 255 tekens.",prefix_maxlength:"Het voorvoegsel mag niet meer dan 5 tekens bevatten.",something_went_wrong:"Er is iets fout gegaan",number_length_minvalue:"Het getal moet groter zijn dan 0",at_least_one_ability:"Selecteer minstens één machtiging.",valid_driver_key:"Voer een geldige {driver} sleutel in.",valid_exchange_rate:"Voer a.u.b. een geldige wisselkoers in.",company_name_not_same:"Bedrijfsnaam moet overeenkomen met de opgegeven naam."},BJ={starter_plan:"Deze functie is beschikbaar vanaf het Starter abonnement!",invalid_provider_key:"Voer een geldige API-sleutel in.",estimate_number_used:"Dit offertenummer is reeds in gebruik.",invoice_number_used:"Dit factuurnummer is reeds in gebruik.",payment_attached:"Deze factuur heeft al een betaling gekoppeld. Zorg ervoor dat u de bijgevoegde betalingen eerst verwijdert om door te gaan met de verwijdering.",payment_number_used:"Dit factuurnummer is reeds in gebruik.",name_already_taken:"Deze naam is reeds in gebruik.",receipt_does_not_exist:"Kwitantie bestaat niet.",customer_cannot_be_changed_after_payment_is_added:"Klant kan niet worden gewijzigd nadat een betaling is toegevoegd",invalid_credentials:"Inloggegevens ongeldig.",not_allowed:"Niet toegestaan",login_invalid_credentials:"Deze gegevens zijn niet correct.",enter_valid_cron_format:"Voer een geldig cron-formaat in",email_could_not_be_sent:"E-mail kon niet naar dit e-mailadres worden verzonden.",invalid_address:"Vul een geldig adres in.",invalid_key:"Vul een geldige sleutel in.",invalid_state:"Vul een geldige provincie in.",invalid_city:"Vul een geldige woonplaats in.",invalid_postal_code:"Vul een geldige postcode in.",invalid_format:"Vul een geldig query-string-formaat in.",api_error:"Server reageert niet.",feature_not_enabled:"Functie niet ingeschakeld.",request_limit_met:"API-verzoeklimiet overschreden.",address_incomplete:"Onvolledig adres"},UJ="Offerte",VJ="Offerte nummer",qJ="Offerte Datum",WJ="Vervaldatum",HJ="Factuur",KJ="Factuurnummer",YJ="Factuur datum",ZJ="Vervaldatum",GJ="Opmerkingen",QJ="Artikelen",JJ="Aantal stuks",XJ="Prijs",eX="Korting",tX="Bedrag",aX="Subtotaal",nX="Totaal",iX="Betaling",oX="Betalingsafschrift",sX="Betalingsdatum",rX="Betalingsnummer",lX="Betaalmethode",cX="Ontvangen bedrag",dX="UITGAVEN RAPPORT",uX="TOTALE UITGAVEN",_X="WINST & VERLIES RAPPORT",mX="Klant verkoop rapport",pX="Artikel verkooprapport",fX="Belastingoverzicht",hX="INKOMEN",gX="NETTO WINST",vX="Verkooprapport: per klant",yX="TOTALE VERKOPEN",bX="Verkooprapport: Per Item",kX="BELASTINGEN RAPPORT",wX="TOTALE BELASTINGEN",DX="Belastingtypen",xX="Uitgaven",SX="Rekening naar,",PX="Verzend naar,",EX="Ontvangen van:",zX="Btw",AX={navigation:bJ,general:kJ,dashboard:wJ,tax_types:DJ,global_search:xJ,company_switcher:SJ,dateRange:PJ,customers:EJ,items:zJ,estimates:AJ,invoices:CJ,recurring_invoices:TJ,payments:jJ,expenses:NJ,login:IJ,modules:FJ,users:RJ,reports:OJ,settings:MJ,wizard:$J,validation:LJ,errors:BJ,pdf_estimate_label:UJ,pdf_estimate_number:VJ,pdf_estimate_date:qJ,pdf_estimate_expire_date:WJ,pdf_invoice_label:HJ,pdf_invoice_number:KJ,pdf_invoice_date:YJ,pdf_invoice_due_date:ZJ,pdf_notes:GJ,pdf_items_label:QJ,pdf_quantity_label:JJ,pdf_price_label:XJ,pdf_discount_label:eX,pdf_amount_label:tX,pdf_subtotal:aX,pdf_total:nX,pdf_payment_label:iX,pdf_payment_receipt_label:oX,pdf_payment_date:sX,pdf_payment_number:rX,pdf_payment_mode:lX,pdf_payment_amount_received_label:cX,pdf_expense_report_label:dX,pdf_total_expenses_label:uX,pdf_profit_loss_label:_X,pdf_sales_customers_label:mX,pdf_sales_items_label:pX,pdf_tax_summery_label:fX,pdf_income_label:hX,pdf_net_profit_label:gX,pdf_customer_sales_report:vX,pdf_total_sales_label:yX,pdf_item_sales_label:bX,pdf_tax_report_label:kX,pdf_total_tax_label:wX,pdf_tax_types_label:DX,pdf_expenses_label:xX,pdf_bill_to:SX,pdf_ship_to:PX,pdf_received_from:EX,pdf_tax_label:zX},CX={dashboard:"계기반",customers:"고객",items:"아이템",invoices:"송장",expenses:"경비",estimates:"견적",payments:"지불",reports:"보고서",settings:"설정",logout:"로그 아웃",users:"사용자"},TX={add_company:"회사 추가",view_pdf:"PDF보기",copy_pdf_url:"PDF URL 복사",download_pdf:"PDF 다운로드",save:"저장",create:"창조하다",cancel:"취소",update:"최신 정보",deselect:"선택 취소",download:"다운로드",from_date:"시작 날짜",to_date:"현재까지",from:"에서",to:"에",sort_by:"정렬 기준",ascending:"오름차순",descending:"내림차순",subject:"제목",body:"몸",message:"메시지",send:"보내다",go_back:"돌아 가기",back_to_login:"로그인으로 돌아가시겠습니까?",home:"집",filter:"필터",delete:"지우다",edit:"편집하다",view:"전망",add_new_item:"새 항목 추가",clear_all:"모두 지우기",showing:"전시",of:"의",actions:"행위",subtotal:"소계",discount:"할인",fixed:"결정된",percentage:"백분율",tax:"세",total_amount:"총액",bill_to:"청구 대상",ship_to:"배송지",due:"정당한",draft:"초안",sent:"보냄",all:"모두",select_all:"모두 선택",choose_file:"파일을 선택하려면 여기를 클릭하십시오",choose_template:"템플릿 선택",choose:"고르다",remove:"없애다",powered_by:"제공",bytefury:"바이트 퓨리",select_a_status:"상태 선택",select_a_tax:"세금 선택",search:"검색",are_you_sure:"확실합니까?",list_is_empty:"목록이 비어 있습니다.",no_tax_found:"세금이 없습니다!",four_zero_four:"404",you_got_lost:"이런! 당신은 길을 잃었습니다!",go_home:"집에가",test_mail_conf:"메일 구성 테스트",send_mail_successfully:"메일을 성공적으로 보냈습니다.",setting_updated:"설정이 성공적으로 업데이트되었습니다.",select_state:"주 선택",select_country:"국가 선택",select_city:"도시 선택",street_1:"거리 1",street_2:"거리 2",action_failed:"작업 실패",retry:"다시 해 보다",choose_note:"참고 선택",no_note_found:"메모를 찾을 수 없습니다.",insert_note:"메모 삽입",copied_pdf_url_clipboard:"PDF URL을 클립 보드에 복사했습니다!"},jX={select_year:"연도 선택",cards:{due_amount:"지불액",customers:"고객",invoices:"송장",estimates:"견적"},chart_info:{total_sales:"매상",total_receipts:"영수증",total_expense:"경비",net_income:"순이익",year:"연도 선택"},monthly_chart:{title:"매상"},recent_invoices_card:{title:"만기 송장",due_on:"기한",customer:"고객",amount_due:"지불액",actions:"행위",view_all:"모두보기"},recent_estimate_card:{title:"최근 견적",date:"데이트",customer:"고객",amount_due:"지불액",actions:"행위",view_all:"모두보기"}},NX={name:"이름",description:"기술",percent:"퍼센트",compound_tax:"복합 세"},IX={search:"검색...",customers:"고객",users:"사용자",no_results_found:"검색 결과가 없습니다"},FX={title:"고객",add_customer:"고객 추가",contacts_list:"고객 목록",name:"이름",mail:"메일 | 메일",statement:"성명서",display_name:"이름 표시하기",primary_contact_name:"기본 연락처 이름",contact_name:"담당자 이름",amount_due:"지불액",email:"이메일",address:"주소",phone:"전화",website:"웹 사이트",overview:"개요",enable_portal:"포털 활성화",country:"국가",state:"상태",city:"시티",zip_code:"우편 번호",added_on:"추가됨",action:"동작",password:"암호",street_number:"번지",primary_currency:"기본 통화",description:"기술",add_new_customer:"신규 고객 추가",save_customer:"고객 저장",update_customer:"고객 업데이트",customer:"고객 | 고객",new_customer:"신규 고객",edit_customer:"고객 편집",basic_info:"기본 정보",billing_address:"청구 지 주소",shipping_address:"배송 주소",copy_billing_address:"결제에서 복사",no_customers:"아직 고객이 없습니다!",no_customers_found:"고객이 없습니다!",no_contact:"연락처 없음",no_contact_name:"연락처 이름이 없습니다.",list_of_customers:"이 섹션에는 고객 목록이 포함됩니다.",primary_display_name:"기본 표시 이름",select_currency:"통화 선택",select_a_customer:"고객 선택",type_or_click:"입력하거나 클릭하여 선택",new_transaction:"새로운 거래",no_matching_customers:"일치하는 고객이 없습니다!",phone_number:"전화 번호",create_date:"날짜 생성",confirm_delete:"이 고객과 모든 관련 송장, 견적 및 지불을 복구 할 수 없습니다. | 이러한 고객 및 모든 관련 청구서, 견적 및 지불을 복구 할 수 없습니다.",created_message:"고객이 성공적으로 생성되었습니다.",updated_message:"고객이 성공적으로 업데이트했습니다.",deleted_message:"고객이 성공적으로 삭제되었습니다. | 고객이 성공적으로 삭제되었습니다."},RX={title:"아이템",items_list:"품목 목록",name:"이름",unit:"단위",description:"기술",added_on:"추가됨",price:"가격",date_of_creation:"생성 일",not_selected:"선택한 항목이 없습니다.",action:"동작",add_item:"아이템 추가",save_item:"항목 저장",update_item:"항목 업데이트",item:"항목 | 아이템",add_new_item:"새 항목 추가",new_item:"새로운 물품",edit_item:"항목 편집",no_items:"아직 항목이 없습니다!",list_of_items:"이 섹션에는 항목 목록이 포함됩니다.",select_a_unit:"단위 선택",taxes:"구실",item_attached_message:"이미 사용중인 항목은 삭제할 수 없습니다.",confirm_delete:"이 항목을 복구 할 수 없습니다. | 이 항목을 복구 할 수 없습니다.",created_message:"항목이 성공적으로 생성되었습니다.",updated_message:"항목이 성공적으로 업데이트되었습니다.",deleted_message:"항목이 성공적으로 삭제되었습니다. | 항목이 성공적으로 삭제되었습니다."},OX={title:"견적",estimate:"견적 | 견적",estimates_list:"견적 목록",days:"{days} 일",months:"{months} 개월",years:"{years} 년",all:"모두",paid:"유료",unpaid:"미지급",customer:"고객",ref_no:"참조 번호.",number:"번호",amount_due:"지불액",partially_paid:"부분 지불",total:"합계",discount:"할인",sub_total:"소계",estimate_number:"견적 번호",ref_number:"참조 번호",contact:"접촉",add_item:"항목 추가",date:"데이트",due_date:"마감일",expiry_date:"만료일",status:"상태",add_tax:"세금 추가",amount:"양",action:"동작",notes:"노트",tax:"세",estimate_template:"주형",convert_to_invoice:"송장으로 변환",mark_as_sent:"보낸 것으로 표시",send_estimate:"견적 보내기",resend_estimate:"견적 재전송",record_payment:"기록 지불",add_estimate:"견적 추가",save_estimate:"견적 저장",confirm_conversion:"이 견적은 새 인보이스를 만드는 데 사용됩니다.",conversion_message:"인보이스가 성공적으로 생성되었습니다.",confirm_send_estimate:"이 견적은 이메일을 통해 고객에게 전송됩니다.",confirm_mark_as_sent:"이 견적은 전송 된 것으로 표시됩니다.",confirm_mark_as_accepted:"이 견적은 수락 됨으로 표시됩니다.",confirm_mark_as_rejected:"이 견적은 거부 됨으로 표시됩니다.",no_matching_estimates:"일치하는 견적이 없습니다!",mark_as_sent_successfully:"성공적으로 전송 된 것으로 표시된 견적",send_estimate_successfully:"견적이 성공적으로 전송되었습니다.",errors:{required:"필드는 필수입니다"},accepted:"수락 됨",rejected:"거부 됨",sent:"보냄",draft:"초안",declined:"거부 됨",new_estimate:"새로운 견적",add_new_estimate:"새로운 견적 추가",update_Estimate:"견적 업데이트",edit_estimate:"견적 수정",items:"항목",Estimate:"견적 | 견적",add_new_tax:"새 세금 추가",no_estimates:"아직 견적이 없습니다!",list_of_estimates:"이 섹션에는 견적 목록이 포함됩니다.",mark_as_rejected:"거부 됨으로 표시",mark_as_accepted:"수락 됨으로 표시",marked_as_accepted_message:"수락 된 것으로 표시된 견적",marked_as_rejected_message:"거부 된 것으로 표시된 견적",confirm_delete:"이 견적을 복구 할 수 없습니다. | 이 견적을 복구 할 수 없습니다.",created_message:"견적이 성공적으로 생성되었습니다.",updated_message:"견적이 성공적으로 업데이트되었습니다.",deleted_message:"예상치가 성공적으로 삭제되었습니다. | 견적이 성공적으로 삭제되었습니다.",something_went_wrong:"뭔가 잘못 됐어",item:{title:"항목 제목",description:"기술",quantity:"수량",price:"가격",discount:"할인",total:"합계",total_discount:"총 할인",sub_total:"소계",tax:"세",amount:"양",select_an_item:"항목을 입력하거나 클릭하여 선택",type_item_description:"유형 항목 설명 (선택 사항)"}},MX={title:"송장",invoices_list:"송장 목록",days:"{days} 일",months:"{months} 개월",years:"{years} 년",all:"모두",paid:"유료",unpaid:"미지급",viewed:"조회",overdue:"연체",completed:"완료",customer:"고객",paid_status:"지불 상태",ref_no:"참조 번호.",number:"번호",amount_due:"지불액",partially_paid:"부분 지불",total:"합계",discount:"할인",sub_total:"소계",invoice:"송장 | 송장",invoice_number:"송장 번호",ref_number:"참조 번호",contact:"접촉",add_item:"항목 추가",date:"데이트",due_date:"마감일",status:"상태",add_tax:"세금 추가",amount:"양",action:"동작",notes:"노트",view:"전망",send_invoice:"송장을 보내다",resend_invoice:"인보이스 재전송",invoice_template:"송장 템플릿",template:"주형",mark_as_sent:"보낸 것으로 표시",confirm_send_invoice:"이 인보이스는 이메일을 통해 고객에게 발송됩니다.",invoice_mark_as_sent:"이 인보이스는 보낸 것으로 표시됩니다.",confirm_send:"이 인보이스는 이메일을 통해 고객에게 발송됩니다.",invoice_date:"송장 날짜",record_payment:"기록 지불",add_new_invoice:"새 송장 추가",update_expense:"비용 업데이트",edit_invoice:"송장 편집",new_invoice:"새 송장",save_invoice:"송장 저장",update_invoice:"송장 업데이트",add_new_tax:"새 세금 추가",no_invoices:"아직 인보이스가 없습니다!",list_of_invoices:"이 섹션에는 송장 목록이 포함됩니다.",select_invoice:"송장 선택",no_matching_invoices:"일치하는 송장이 없습니다!",mark_as_sent_successfully:"성공적으로 발송 된 것으로 표시된 송장",invoice_sent_successfully:"인보이스가 성공적으로 전송되었습니다.",cloned_successfully:"송장이 성공적으로 복제되었습니다.",clone_invoice:"송장 복제",confirm_clone:"이 송장은 새 송장에 복제됩니다.",item:{title:"항목 제목",description:"기술",quantity:"수량",price:"가격",discount:"할인",total:"합계",total_discount:"총 할인",sub_total:"소계",tax:"세",amount:"양",select_an_item:"항목을 입력하거나 클릭하여 선택",type_item_description:"유형 항목 설명 (선택 사항)"},confirm_delete:"이 인보이스를 복구 할 수 없습니다. | 이러한 인보이스를 복구 할 수 없습니다.",created_message:"송장이 성공적으로 생성되었습니다.",updated_message:"송장이 성공적으로 업데이트되었습니다.",deleted_message:"송장이 성공적으로 삭제되었습니다. | 인보이스가 성공적으로 삭제되었습니다.",marked_as_sent_message:"성공적으로 발송 된 것으로 표시된 송장",something_went_wrong:"뭔가 잘못 됐어",invalid_due_amount_message:"총 송장 금액은이 송장에 대한 총 지불 금액보다 작을 수 없습니다. 계속하려면 인보이스를 업데이트하거나 관련 결제를 삭제하세요."},$X={title:"지불",payments_list:"지불 목록",record_payment:"기록 지불",customer:"고객",date:"데이트",amount:"양",action:"동작",payment_number:"결제 번호",payment_mode:"지불 모드",invoice:"송장",note:"노트",add_payment:"지불 추가",new_payment:"새로운 지불",edit_payment:"결제 수정",view_payment:"결제보기",add_new_payment:"새 지불 추가",send_payment_receipt:"결제 영수증 보내기",send_payment:"지불 보내기",save_payment:"지불 저장",update_payment:"결제 업데이트",payment:"지불 | 지불",no_payments:"아직 결제가 없습니다!",not_selected:"선택되지 않은",no_invoice:"송장 없음",no_matching_payments:"일치하는 지불이 없습니다!",list_of_payments:"이 섹션에는 지불 목록이 포함됩니다.",select_payment_mode:"결제 모드 선택",confirm_mark_as_sent:"이 견적은 전송 된 것으로 표시됩니다.",confirm_send_payment:"이 결제는 이메일을 통해 고객에게 전송됩니다.",send_payment_successfully:"지불이 성공적으로 전송되었습니다.",something_went_wrong:"뭔가 잘못 됐어",confirm_delete:"이 지불금을 복구 할 수 없습니다. | 이 지급금을 복구 할 수 없습니다.",created_message:"결제가 성공적으로 생성되었습니다.",updated_message:"결제가 성공적으로 업데이트되었습니다.",deleted_message:"결제가 성공적으로 삭제되었습니다. | 결제가 성공적으로 삭제되었습니다.",invalid_amount_message:"결제 금액이 잘못되었습니다."},LX={title:"경비",expenses_list:"비용 목록",select_a_customer:"고객 선택",expense_title:"표제",customer:"고객",contact:"접촉",category:"범주",from_date:"시작 날짜",to_date:"현재까지",expense_date:"데이트",description:"기술",receipt:"영수증",amount:"양",action:"동작",not_selected:"선택되지 않은",note:"노트",category_id:"카테고리 ID",date:"데이트",add_expense:"비용 추가",add_new_expense:"신규 비용 추가",save_expense:"비용 절감",update_expense:"비용 업데이트",download_receipt:"영수증 다운로드",edit_expense:"비용 편집",new_expense:"새로운 비용",expense:"비용 | 경비",no_expenses:"아직 비용이 없습니다!",list_of_expenses:"이 섹션에는 비용 목록이 포함됩니다.",confirm_delete:"이 비용을 회수 할 수 없습니다. | 이러한 비용은 회수 할 수 없습니다.",created_message:"비용이 성공적으로 생성되었습니다.",updated_message:"비용이 성공적으로 업데이트되었습니다.",deleted_message:"비용이 성공적으로 삭제되었습니다. | 비용이 성공적으로 삭제되었습니다.",categories:{categories_list:"카테고리 목록",title:"표제",name:"이름",description:"기술",amount:"양",actions:"행위",add_category:"카테고리 추가",new_category:"새 분류",category:"카테고리 | 카테고리",select_a_category:"카테고리 선택"}},BX={email:"이메일",password:"암호",forgot_password:"비밀번호를 잊으 셨나요?",or_signIn_with:"또는 다음으로 로그인",login:"로그인",register:"레지스터",reset_password:"암호를 재설정",password_reset_successfully:"비밀번호 재설정 성공",enter_email:"이메일 입력",enter_password:"암호를 입력",retype_password:"비밀번호 재 입력"},UX={title:"사용자",users_list:"사용자 목록",name:"이름",description:"기술",added_on:"추가됨",date_of_creation:"생성 일",action:"동작",add_user:"사용자 추가",save_user:"사용자 저장",update_user:"사용자 업데이트",user:"사용자 | 사용자",add_new_user:"새 사용자 추가",new_user:"새로운 사용자",edit_user:"사용자 편집",no_users:"아직 사용자가 없습니다!",list_of_users:"이 섹션에는 사용자 목록이 포함됩니다.",email:"이메일",phone:"전화",password:"암호",user_attached_message:"이미 사용중인 항목은 삭제할 수 없습니다.",confirm_delete:"이 사용자를 복구 할 수 없습니다. | 이러한 사용자를 복구 할 수 없습니다.",created_message:"사용자가 성공적으로 생성되었습니다.",updated_message:"사용자가 성공적으로 업데이트되었습니다.",deleted_message:"사용자가 성공적으로 삭제되었습니다. | 사용자가 성공적으로 삭제되었습니다."},VX={title:"보고서",from_date:"시작 날짜",to_date:"현재까지",status:"상태",paid:"유료",unpaid:"미지급",download_pdf:"PDF 다운로드",view_pdf:"PDF보기",update_report:"보고서 업데이트",report:"신고 | 보고서",profit_loss:{profit_loss:"이익",to_date:"현재까지",from_date:"시작 날짜",date_range:"기간 선택"},sales:{sales:"매상",date_range:"기간 선택",to_date:"현재까지",from_date:"시작 날짜",report_type:"보고서 유형"},taxes:{taxes:"구실",to_date:"현재까지",from_date:"시작 날짜",date_range:"기간 선택"},errors:{required:"필드는 필수입니다"},invoices:{invoice:"송장",invoice_date:"송장 날짜",due_date:"마감일",amount:"양",contact_name:"담당자 이름",status:"상태"},estimates:{estimate:"견적",estimate_date:"예상 날짜",due_date:"마감일",estimate_number:"견적 번호",ref_number:"참조 번호",amount:"양",contact_name:"담당자 이름",status:"상태"},expenses:{expenses:"경비",category:"범주",date:"데이트",amount:"양",to_date:"현재까지",from_date:"시작 날짜",date_range:"기간 선택"}},qX={menu_title:{account_settings:"계정 설정",company_information:"회사 정보",customization:"커스터마이징",preferences:"환경 설정",notifications:"알림",tax_types:"세금 유형",expense_category:"비용 범주",update_app:"앱 업데이트",backup:"지원",file_disk:"파일 디스크",custom_fields:"사용자 정의 필드",payment_modes:"지불 모드",notes:"노트"},title:"설정",setting:"설정 | 설정",general:"일반",language:"언어",primary_currency:"기본 통화",timezone:"시간대",date_format:"날짜 형식",currencies:{title:"통화",currency:"통화 | 통화",currencies_list:"통화 목록",select_currency:"통화 선택",name:"이름",code:"암호",symbol:"상징",precision:"정도",thousand_separator:"천 구분자",decimal_separator:"소수점 구분 기호",position:"위치",position_of_symbol:"기호 위치",right:"권리",left:"왼쪽",action:"동작",add_currency:"통화 추가"},mail:{host:"메일 호스트",port:"메일 포트",driver:"메일 드라이버",secret:"비밀",mailgun_secret:"Mailgun 비밀",mailgun_domain:"도메인",mailgun_endpoint:"Mailgun 엔드 포인트",ses_secret:"SES 비밀",ses_key:"SES 키",password:"메일 비밀번호",username:"메일 사용자 이름",mail_config:"메일 구성",from_name:"메일 이름에서",from_mail:"메일 주소에서",encryption:"메일 암호화",mail_config_desc:"다음은 앱에서 이메일을 보내기위한 이메일 드라이버 구성 양식입니다. Sendgrid, SES 등과 같은 타사 공급자를 구성 할 수도 있습니다."},pdf:{title:"PDF 설정",footer_text:"바닥 글 텍스트",pdf_layout:"PDF 레이아웃"},company_info:{company_info:"회사 정보",company_name:"회사 이름",company_logo:"회사 로고",section_description:"InvoiceShelf에서 생성 한 송장, 견적 및 기타 문서에 표시 될 회사에 대한 정보.",phone:"전화",country:"국가",state:"상태",city:"시티",address:"주소",zip:"지퍼",save:"저장",updated_message:"회사 정보가 성공적으로 업데이트되었습니다."},custom_fields:{title:"사용자 정의 필드",section_description:"송장, 견적 사용자 지정",add_custom_field:"사용자 정의 필드 추가",edit_custom_field:"사용자 정의 필드 편집",field_name:"분야 명",label:"상표",type:"유형",name:"이름",required:"필수",placeholder:"자리 표시 자",help_text:"도움말 텍스트",default_value:"기본값",prefix:"접두사",starting_number:"시작 번호",model:"모델",help_text_description:"사용자가이 사용자 정의 필드의 목적을 이해하는 데 도움이되는 텍스트를 입력하십시오.",suffix:"접미사",yes:"예",no:"아니",order:"주문",custom_field_confirm_delete:"이 사용자 정의 필드를 복구 할 수 없습니다.",already_in_use:"맞춤 입력란이 이미 사용 중입니다.",deleted_message:"맞춤 입력란이 성공적으로 삭제되었습니다.",options:"옵션",add_option:"옵션 추가",add_another_option:"다른 옵션 추가",sort_in_alphabetical_order:"알파벳순으로 정렬",add_options_in_bulk:"일괄 옵션 추가",use_predefined_options:"미리 정의 된 옵션 사용",select_custom_date:"맞춤 날짜 선택",select_relative_date:"상대 날짜 선택",ticked_by_default:"기본적으로 선택됨",updated_message:"맞춤 입력란이 성공적으로 업데이트되었습니다.",added_message:"맞춤 입력란이 성공적으로 추가되었습니다."},customization:{customization:"맞춤화",save:"저장",addresses:{title:"구애",section_description:"고객 청구 주소 및 고객 배송 주소 형식을 설정할 수 있습니다 (PDF로만 표시됨).",customer_billing_address:"고객 청구 주소",customer_shipping_address:"고객 배송 주소",company_address:"회사 주소",insert_fields:"필드 삽입",contact:"접촉",address:"주소",display_name:"이름 표시하기",primary_contact_name:"기본 연락처 이름",email:"이메일",website:"웹 사이트",name:"이름",country:"국가",state:"상태",city:"시티",company_name:"회사 이름",address_street_1:"주소 거리 1",address_street_2:"주소 Street 2",phone:"전화",zip_code:"우편 번호",address_setting_updated:"주소 설정이 성공적으로 업데이트되었습니다."},updated_message:"회사 정보가 성공적으로 업데이트되었습니다.",invoices:{title:"송장",notes:"노트",invoice_prefix:"송장 접두사",default_invoice_email_body:"기본 송장 이메일 본문",invoice_settings:"송장 설정",autogenerate_invoice_number:"송장 번호 자동 생성",autogenerate_invoice_number_desc:"새 인보이스를 생성 할 때마다 인보이스 번호를 자동 생성하지 않으려면이 기능을 비활성화하십시오.",invoice_email_attachment:"송장을 첨부 파일로 보내기",invoice_email_attachment_setting_description:"인보이스를 이메일 첨부 파일로 보내려면이 옵션을 활성화하십시오. 이메일의 '인보이스보기'버튼이 활성화되면 더 이상 표시되지 않습니다.",enter_invoice_prefix:"송장 접두사 입력",terms_and_conditions:"이용 약관",company_address_format:"회사 주소 형식",shipping_address_format:"배송 주소 형식",billing_address_format:"청구 지 주소 형식",invoice_settings_updated:"인보이스 설정이 성공적으로 업데이트되었습니다."},estimates:{title:"견적",estimate_prefix:"접두사 추정",default_estimate_email_body:"기본 예상 이메일 본문",estimate_settings:"예상 설정",autogenerate_estimate_number:"견적 번호 자동 생성",estimate_setting_description:"새 견적을 생성 할 때마다 견적 번호를 자동 생성하지 않으려면이 기능을 비활성화하십시오.",estimate_email_attachment:"견적을 첨부 파일로 보내기",estimate_email_attachment_setting_description:"견적을 이메일 첨부 파일로 보내려면이 옵션을 활성화하십시오. 이메일의 '예상보기'버튼이 활성화되면 더 이상 표시되지 않습니다.",enter_estimate_prefix:"견적 접두사 입력",estimate_setting_updated:"예상 설정이 성공적으로 업데이트되었습니다.",company_address_format:"회사 주소 형식",billing_address_format:"청구 지 주소 형식",shipping_address_format:"배송 주소 형식"},payments:{title:"지불",description:"지불을위한 거래 방식",payment_prefix:"지불 접두사",default_payment_email_body:"기본 결제 이메일 본문",payment_settings:"결제 설정",autogenerate_payment_number:"결제 번호 자동 생성",payment_setting_description:"새 결제를 생성 할 때마다 결제 번호를 자동 생성하지 않으려면이 기능을 비활성화하십시오.",payment_email_attachment:"첨부 파일로 지불 보내기",payment_email_attachment_setting_description:"결제 영수증을 이메일 첨부 파일로 보내려면이 옵션을 활성화하십시오. 이메일의 '결제보기'버튼이 활성화되면 더 이상 표시되지 않습니다.",enter_payment_prefix:"지불 접두사 입력",payment_setting_updated:"결제 설정이 성공적으로 업데이트되었습니다.",payment_modes:"지불 모드",add_payment_mode:"결제 모드 추가",edit_payment_mode:"결제 모드 수정",mode_name:"모드 이름",payment_mode_added:"결제 모드 추가",payment_mode_updated:"결제 모드 업데이트",payment_mode_confirm_delete:"이 결제 모드를 복구 할 수 없습니다.",already_in_use:"결제 모드가 이미 사용 중입니다.",deleted_message:"결제 모드가 성공적으로 삭제되었습니다.",company_address_format:"회사 주소 형식",from_customer_address_format:"고객 주소 형식에서"},items:{title:"아이템",units:"단위",add_item_unit:"항목 단위 추가",edit_item_unit:"항목 단위 편집",unit_name:"단위 이름",item_unit_added:"항목 단위 추가됨",item_unit_updated:"항목 단위 업데이트 됨",item_unit_confirm_delete:"이 항목 단위를 복구 할 수 없습니다.",already_in_use:"항목 단위가 이미 사용 중입니다.",deleted_message:"항목 단위가 성공적으로 삭제되었습니다."},notes:{title:"노트",description:"메모를 작성하고 송장, 견적서에 재사용하여 시간 절약",notes:"노트",type:"유형",add_note:"메모를 추가",add_new_note:"새 메모 추가",name:"이름",edit_note:"메모 수정",note_added:"메모가 성공적으로 추가되었습니다.",note_updated:"참고 성공적으로 업데이트되었습니다.",note_confirm_delete:"이 메모를 복구 할 수 없습니다.",already_in_use:"메모가 이미 사용 중입니다.",deleted_message:"메모가 성공적으로 삭제되었습니다."}},account_settings:{profile_picture:"프로필 사진",name:"이름",email:"이메일",password:"암호",confirm_password:"비밀번호 확인",account_settings:"계정 설정",save:"저장",section_description:"이름, 이메일을 업데이트 할 수 있습니다.",updated_message:"계정 설정이 성공적으로 업데이트되었습니다."},user_profile:{name:"이름",email:"이메일",password:"암호",confirm_password:"비밀번호 확인"},notification:{title:"공고",email:"알림 보내기",description:"변경 사항이있을 때 어떤 이메일 알림을 받으시겠습니까?",invoice_viewed:"송장 조회",invoice_viewed_desc:"고객이 분화구 대시 보드를 통해 전송 된 송장을 볼 때.",estimate_viewed:"본 견적",estimate_viewed_desc:"고객이 분화구 대시 보드를 통해 전송 된 견적을 볼 때.",save:"저장",email_save_message:"이메일이 성공적으로 저장되었습니다.",please_enter_email:"이메일을 입력하십시오"},tax_types:{title:"세금 유형",add_tax:"세금 추가",edit_tax:"세금 수정",description:"원하는대로 세금을 추가하거나 제거 할 수 있습니다. InvoiceShelf는 송장뿐만 아니라 개별 품목에 대한 세금을 지원합니다.",add_new_tax:"새 세금 추가",tax_settings:"세금 설정",tax_per_item:"품목 당 세금",tax_name:"세금 이름",compound_tax:"복합 세",percent:"퍼센트",action:"동작",tax_setting_description:"개별 송장 항목에 세금을 추가하려면이 옵션을 활성화하십시오. 기본적으로 세금은 송장에 직접 추가됩니다.",created_message:"세금 유형이 성공적으로 생성되었습니다.",updated_message:"세금 유형이 성공적으로 업데이트되었습니다.",deleted_message:"세금 유형이 성공적으로 삭제되었습니다.",confirm_delete:"이 세금 유형을 복구 할 수 없습니다.",already_in_use:"세금이 이미 사용 중입니다."},expense_category:{title:"비용 범주",action:"동작",description:"비용 항목을 추가하려면 카테고리가 필요합니다. 기본 설정에 따라 이러한 범주를 추가하거나 제거 할 수 있습니다.",add_new_category:"새 카테고리 추가",add_category:"카테고리 추가",edit_category:"카테고리 수정",category_name:"카테고리 이름",category_description:"기술",created_message:"비용 범주가 성공적으로 생성되었습니다.",deleted_message:"비용 범주가 성공적으로 삭제되었습니다.",updated_message:"비용 범주가 성공적으로 업데이트되었습니다.",confirm_delete:"이 비용 범주를 복구 할 수 없습니다.",already_in_use:"카테고리가 이미 사용 중입니다."},preferences:{currency:"통화",default_language:"기본 언어",time_zone:"시간대",fiscal_year:"회계 연도",date_format:"날짜 형식",discount_setting:"할인 설정",discount_per_item:"품목별 할인",discount_setting_description:"개별 송장 항목에 할인을 추가하려면이 옵션을 활성화하십시오. 기본적으로 할인은 송장에 직접 추가됩니다.",save:"저장",preference:"선호도 | 환경 설정",general_settings:"시스템의 기본 기본 설정입니다.",updated_message:"환경 설정이 성공적으로 업데이트되었습니다.",select_language:"언어 선택",select_time_zone:"시간대 선택",select_date_format:"날짜 형식 선택",select_financial_year:"회계 연도 선택"},update_app:{title:"앱 업데이트",description:"아래 버튼을 클릭하여 새로운 업데이트를 확인하여 InvoiceShelf를 쉽게 업데이트 할 수 있습니다.",check_update:"업데이트 확인",avail_update:"새로운 업데이트 사용 가능",next_version:"다음 버전",requirements:"요구 사항",update:"지금 업데이트",update_progress:"업데이트 진행 중 ...",progress_text:"몇 분 정도 걸립니다. 업데이트가 완료되기 전에 화면을 새로 고치거나 창을 닫지 마십시오.",update_success:"앱이 업데이트되었습니다! 브라우저 창이 자동으로 다시로드되는 동안 잠시 기다려주십시오.",latest_message:"사용 가능한 업데이트가 없습니다! 최신 버전을 사용 중입니다.",current_version:"현재 버전",download_zip_file:"ZIP 파일 다운로드",unzipping_package:"패키지 압축 해제",copying_files:"파일 복사",deleting_files:"사용하지 않는 파일 삭제",running_migrations:"마이그레이션 실행",finishing_update:"업데이트 완료",update_failed:"업데이트가 실패",update_failed_text:"죄송합니다! 업데이트 실패 : {step} 단계"},backup:{title:"백업 | 백업",description:"백업은 데이터베이스 덤프와 함께 지정한 디렉토리의 모든 파일을 포함하는 zip 파일입니다.",new_backup:"새 백업 추가",create_backup:"백업 생성",select_backup_type:"백업 유형 선택",backup_confirm_delete:"이 백업을 복구 할 수 없습니다.",path:"통로",new_disk:"새 디스크",created_at:"에 생성",size:"크기",dropbox:"드롭 박스",local:"현지",healthy:"건강한",amount_of_backups:"백업 양",newest_backups:"최신 백업",used_storage:"중고 저장",select_disk:"디스크 선택",action:"동작",deleted_message:"백업이 성공적으로 삭제되었습니다.",created_message:"백업이 성공적으로 생성되었습니다.",invalid_disk_credentials:"선택한 디스크의 잘못된 자격 증명"},disk:{title:"파일 디스크 | 파일 디스크",description:"기본적으로 InvoiceShelf는 백업, 아바타 및 기타 이미지 파일을 저장하기 위해 로컬 디스크를 사용합니다. 선호도에 따라 DigitalOcean, S3 및 Dropbox와 같은 둘 이상의 디스크 드라이버를 구성 할 수 있습니다.",created_at:"에 생성",dropbox:"드롭 박스",name:"이름",driver:"운전사",disk_type:"유형",disk_name:"디스크 이름",new_disk:"새 디스크 추가",filesystem_driver:"파일 시스템 드라이버",local_driver:"로컬 드라이버",local_root:"로컬 루트",public_driver:"공공 운전자",public_root:"공개 루트",public_url:"공개 URL",public_visibility:"공개 가시성",media_driver:"미디어 드라이버",media_root:"미디어 루트",aws_driver:"AWS 드라이버",aws_key:"AWS 키",aws_secret:"AWS 비밀",aws_region:"AWS 리전",aws_bucket:"AWS 버킷",aws_root:"AWS 루트",do_spaces_type:"Do Spaces 유형",do_spaces_key:"Do Spaces 키",do_spaces_secret:"스페이스 시크릿",do_spaces_region:"Do Spaces 영역",do_spaces_bucket:"Do Spaces Bucket",do_spaces_endpoint:"Do Spaces 끝점",do_spaces_root:"공간 루트 수행",dropbox_type:"Dropbox 유형",dropbox_token:"Dropbox 토큰",dropbox_key:"Dropbox 키",dropbox_secret:"Dropbox 비밀",dropbox_app:"Dropbox 앱",dropbox_root:"Dropbox 루트",default_driver:"기본 드라이버",is_default:"기본값입니다.",set_default_disk:"기본 디스크 설정",set_default_disk_confirm:"이 디스크는 기본값으로 설정되며 모든 새 PDF가이 디스크에 저장됩니다.",success_set_default_disk:"디스크가 기본값으로 설정되었습니다.",save_pdf_to_disk:"PDF를 디스크에 저장",disk_setting_description:"각 송장의 사본을 저장하려면 이것을 활성화하십시오.",select_disk:"디스크 선택",disk_settings:"디스크 설정",confirm_delete:"기존 파일",action:"동작",edit_file_disk:"파일 디스크 편집",success_create:"디스크가 성공적으로 추가되었습니다.",success_update:"디스크가 성공적으로 업데이트되었습니다.",error:"디스크 추가 실패",deleted_message:"파일 디스크가 성공적으로 삭제되었습니다.",disk_variables_save_successfully:"디스크가 성공적으로 구성되었습니다.",disk_variables_save_error:"디스크 구성에 실패했습니다.",invalid_disk_credentials:"선택한 디스크의 잘못된 자격 증명"}},WX={account_info:"계정 정보",account_info_desc:"아래 세부 정보는 기본 관리자 계정을 만드는 데 사용됩니다. 또한 로그인 후 언제든지 세부 정보를 변경할 수 있습니다.",name:"이름",email:"이메일",password:"암호",confirm_password:"비밀번호 확인",save_cont:"저장",company_info:"회사 정보",company_info_desc:"이 정보는 송장에 표시됩니다. 나중에 설정 페이지에서 수정할 수 있습니다.",company_name:"회사 이름",company_logo:"회사 로고",logo_preview:"로고 미리보기",preferences:"환경 설정",preferences_desc:"시스템의 기본 기본 설정입니다.",country:"국가",state:"상태",city:"시티",address:"주소",street:"Street1 | Street2",phone:"전화",zip_code:"우편 번호",go_back:"돌아 가기",currency:"통화",language:"언어",time_zone:"시간대",fiscal_year:"회계 연도",date_format:"날짜 형식",from_address:"주소에서",username:"사용자 이름",next:"다음",continue:"계속하다",skip:"건너 뛰기",database:{database:"사이트 URL",connection:"데이터베이스 연결",host:"데이터베이스 호스트",port:"데이터베이스 포트",password:"데이터베이스 비밀번호",app_url:"앱 URL",app_domain:"앱 도메인",username:"데이터베이스 사용자 이름",db_name:"데이터베이스 이름",db_path:"데이터베이스 경로",desc:"서버에 데이터베이스를 만들고 아래 양식을 사용하여 자격 증명을 설정합니다."},permissions:{permissions:"권한",permission_confirm_title:"너 정말 계속하고 싶니?",permission_confirm_desc:"폴더 권한 확인 실패",permission_desc:"다음은 앱이 작동하는 데 필요한 폴더 권한 목록입니다. 권한 확인에 실패하면 폴더 권한을 업데이트하십시오."},mail:{host:"메일 호스트",port:"메일 포트",driver:"메일 드라이버",secret:"비밀",mailgun_secret:"Mailgun 비밀",mailgun_domain:"도메인",mailgun_endpoint:"Mailgun 엔드 포인트",ses_secret:"SES 비밀",ses_key:"SES 키",password:"메일 비밀번호",username:"메일 사용자 이름",mail_config:"메일 구성",from_name:"메일 이름에서",from_mail:"메일 주소에서",encryption:"메일 암호화",mail_config_desc:"다음은 앱에서 이메일을 보내기위한 이메일 드라이버 구성 양식입니다. Sendgrid, SES 등과 같은 타사 공급자를 구성 할 수도 있습니다."},req:{system_req:"시스템 요구 사항",php_req_version:"PHP (버전 {version} 필요)",check_req:"요구 사항 확인",system_req_desc:"크레이터에는 몇 가지 서버 요구 사항이 있습니다. 서버에 필요한 PHP 버전과 아래에 언급 된 모든 확장이 있는지 확인하십시오."},errors:{migrate_failed:"마이그레이션 실패",database_variables_save_error:".env 파일에 구성을 쓸 수 없습니다. 파일 권한을 확인하십시오",mail_variables_save_error:"이메일 구성에 실패했습니다.",connection_failed:"데이터베이스 연결 실패",database_should_be_empty:"데이터베이스는 비어 있어야합니다."},success:{mail_variables_save_successfully:"이메일이 성공적으로 구성되었습니다.",database_variables_save_successfully:"데이터베이스가 성공적으로 구성되었습니다."}},HX={invalid_phone:"유효하지 않은 전화 번호",invalid_url:"잘못된 URL (예 : http://www.invoiceshelf.com)",invalid_domain_url:"잘못된 URL (예 : invoiceshelf.com)",required:"필드는 필수입니다",email_incorrect:"잘못된 이메일.",email_already_taken:"이메일이 이미 사용되었습니다.",email_does_not_exist:"주어진 이메일을 가진 사용자가 존재하지 않습니다",item_unit_already_taken:"이 항목 단위 이름은 이미 사용되었습니다.",payment_mode_already_taken:"이 결제 모드 이름은 이미 사용되었습니다.",send_reset_link:"재설정 링크 보내기",not_yet:"아직? 다시 보내줘",password_min_length:"비밀번호는 {count}자를 포함해야합니다.",name_min_length:"이름은 {count} 자 이상이어야합니다.",enter_valid_tax_rate:"유효한 세율을 입력하세요.",numbers_only:"숫자 만.",characters_only:"문자 만.",password_incorrect:"비밀번호는 동일해야합니다.",password_length:"비밀번호는 {count} 자 여야합니다.",qty_must_greater_than_zero:"수량은 0보다 커야합니다.",price_greater_than_zero:"가격은 0보다 커야합니다.",payment_greater_than_zero:"결제 금액은 0보다 커야합니다.",payment_greater_than_due_amount:"입력 된 결제 금액이이 송장의 만기 금액을 초과합니다.",quantity_maxlength:"수량은 20 자리를 초과 할 수 없습니다.",price_maxlength:"가격은 20 자리를 초과 할 수 없습니다.",price_minvalue:"가격은 0보다 커야합니다.",amount_maxlength:"금액은 20 자리를 초과 할 수 없습니다.",amount_minvalue:"금액은 0보다 커야합니다.",description_maxlength:"설명은 65,000자를 초과 할 수 없습니다.",subject_maxlength:"제목은 100 자 이하 여야합니다.",message_maxlength:"메시지는 255자를 초과 할 수 없습니다.",maximum_options_error:"최대 {max} 개의 옵션이 선택되었습니다. 먼저 선택한 옵션을 제거하여 다른 옵션을 선택하십시오.",notes_maxlength:"메모는 65,000자를 초과 할 수 없습니다.",address_maxlength:"주소는 255자를 초과 할 수 없습니다.",ref_number_maxlength:"참조 번호는 255자를 초과 할 수 없습니다.",prefix_maxlength:"접두사는 5 자 이하 여야합니다.",something_went_wrong:"뭔가 잘못 됐어"},KX="견적",YX="견적 번호",ZX="예상 날짜",GX="만료일",QX="송장",JX="송장 번호",XX="송장 날짜",eee="마감일",tee="노트",aee="아이템",nee="수량",iee="가격",oee="할인",see="양",ree="소계",lee="합계",cee="지불",dee="영수증",uee="결제일",_ee="결제 번호",mee="지불 모드",pee="받은 금액",fee="비용 보고서",hee="총 비용",gee="이익",vee="판매 고객 보고서",yee="판매 품목 보고서",bee="세금 요약 보고서",kee="수입",wee="순이익",Dee="판매 보고서 : 고객 별",xee="총 매출",See="판매 보고서 : 품목별",Pee="세금 보고서",Eee="총 세금",zee="세금 유형",Aee="경비",Cee="청구서,",Tee="배송지,",jee="받은 사람 :",Nee="세",Iee={navigation:CX,general:TX,dashboard:jX,tax_types:NX,global_search:IX,customers:FX,items:RX,estimates:OX,invoices:MX,payments:$X,expenses:LX,login:BX,users:UX,reports:VX,settings:qX,wizard:WX,validation:HX,pdf_estimate_label:KX,pdf_estimate_number:YX,pdf_estimate_date:ZX,pdf_estimate_expire_date:GX,pdf_invoice_label:QX,pdf_invoice_number:JX,pdf_invoice_date:XX,pdf_invoice_due_date:eee,pdf_notes:tee,pdf_items_label:aee,pdf_quantity_label:nee,pdf_price_label:iee,pdf_discount_label:oee,pdf_amount_label:see,pdf_subtotal:ree,pdf_total:lee,pdf_payment_label:cee,pdf_payment_receipt_label:dee,pdf_payment_date:uee,pdf_payment_number:_ee,pdf_payment_mode:mee,pdf_payment_amount_received_label:pee,pdf_expense_report_label:fee,pdf_total_expenses_label:hee,pdf_profit_loss_label:gee,pdf_sales_customers_label:vee,pdf_sales_items_label:yee,pdf_tax_summery_label:bee,pdf_income_label:kee,pdf_net_profit_label:wee,pdf_customer_sales_report:Dee,pdf_total_sales_label:xee,pdf_item_sales_label:See,pdf_tax_report_label:Pee,pdf_total_tax_label:Eee,pdf_tax_types_label:zee,pdf_expenses_label:Aee,pdf_bill_to:Cee,pdf_ship_to:Tee,pdf_received_from:jee,pdf_tax_label:Nee},Fee={dashboard:"Informācijas panelis",customers:"Klienti",items:"Preces",invoices:"Rēķini","recurring-invoices":"Regulārie rēķini",expenses:"Izdevumi",estimates:"Aprēķini",payments:"Maksājumi",reports:"Atskaites",settings:"Iestatījumi",logout:"Iziet",users:"Lietotāji",modules:"Modules"},Ree={add_company:"Pievienot uzņēmumu",view_pdf:"Apskatīt PDF",copy_pdf_url:"Kopēt PDF saiti",download_pdf:"Lejupielādēt PDF",save:"Saglabāt",create:"Izveidot",cancel:"Atcelt",update:"Atjaunināt",deselect:"Atcelt iezīmēšanu",download:"Lejupielādēt",from_date:"Datums no",to_date:"Datums līdz",from:"No",to:"Kam",ok:"Labi",yes:"Jā",no:"Nē",sort_by:"Kārtot pēc",ascending:"Augošā secībā",descending:"Dilstošā secībā",subject:"Temats",body:"Saturs",message:"Ziņojums",send:"Nosūtīt",preview:"Priekšskatītījums",go_back:"Atpakaļ",back_to_login:"Atpakaļ uz autorizāciju?",home:"Sākums",filter:"Filtrēt",delete:"Dzēst",edit:"Labot",view:"Skatīt",add_new_item:"Pievienot jaunu",clear_all:"Notīrīt visu",showing:"Rāda",of:"no",actions:"Darbības",subtotal:"KOPĀ",discount:"ATLAIDE",fixed:"Fiksēts",percentage:"Procenti",tax:"Nodoklis",total_amount:"KOPĀ APMAKSAI",bill_to:"Saņēmējs",ship_to:"Piegādāt uz",due:"Līdz",draft:"Melnraksts",sent:"Nosūtīts",all:"Visi",select_all:"Iezīmēt visu",select_template:"Izvēlēties veidni",choose_file:"Spied šeit, lai izvēlētos failu",choose_template:"Izvēlaties sagatavi",choose:"Izvēlies",remove:"Dzēst",select_a_status:"Izvēlieties statusu",select_a_tax:"Izvēlēties nodokli",search:"Meklēt",are_you_sure:"Vai esat pārliecināts?",list_is_empty:"Saraksts ir tukšs.",no_tax_found:"Nodoklis nav atrasts!",four_zero_four:"404",you_got_lost:"Opā! Esi apmaldījies!",go_home:"Uz Sākumu",test_mail_conf:"Jūsu e-pasta uzstādījumu tests",send_mail_successfully:"Veiksmīgi nosūtīts",setting_updated:"Iestatījumi tika veiksmīgi atjaunināti",select_state:"Izvēlieties reģionu",select_country:"Izvēlēties valsti",select_city:"Izvēlieties pilsētu",street_1:"Adrese 1",street_2:"Adrese 2",action_failed:"Darbība neizdevās",retry:"Atkārtot",choose_note:"Izvēlieties piezīmi",no_note_found:"Piezīmes nav atrastas",insert_note:"Ievietot piezīmi",copied_pdf_url_clipboard:"Saglabāt PDF saiti!",copied_url_clipboard:"Copied url to clipboard!",docs:"Dokumenti",do_you_wish_to_continue:"Vai vēlies turpināt?",note:"Piezīme",pay_invoice:"Pay Invoice",login_successfully:"Logged in successfully!",logged_out_successfully:"Logged out successfully",mark_as_default:"Mark as default"},Oee={select_year:"Izvēlieties gadu",cards:{due_amount:"Apmaksas summa",customers:"Klienti",invoices:"Rēķini",estimates:"Aprēķini",payments:"Payments"},chart_info:{total_sales:"Pārdotais",total_receipts:"Čeki",total_expense:"Izdevumi",net_income:"Peļņa",year:"Izvēlieties gadu"},monthly_chart:{title:"Pārdotais un Izdevumi"},recent_invoices_card:{title:"Pienākošie rēķini",due_on:"Termiņš",customer:"Klients",amount_due:"Apmaksas summa",actions:"Darbības",view_all:"Skatīt visus"},recent_estimate_card:{title:"Nesenie aprēķini",date:"Datums",customer:"Klients",amount_due:"Apmaksas summa",actions:"Darbības",view_all:"Skatīt visus"}},Mee={name:"Nosaukums",description:"Apraksts",percent:"Procenti",compound_tax:"Saliktie nodokļi"},$ee={search:"Meklēt...",customers:"Klienti",users:"Lietotāji",no_results_found:"Nav atbilstošu rezultātu"},Lee={label:"NOMAINĪT UZŅĒMUMU",no_results_found:"Nekas netika atrasts",add_new_company:"Pievienot jaunu uzņēmumu",new_company:"Jauns uzņēmums",created_message:"Uzņēmums veiksmīgi pievienots"},Bee={today:"Šodien",this_week:"Šonedēļ",this_month:"Šomēnes",this_quarter:"Ceturksnī",this_year:"Šogad",previous_week:"Iepriekšējā nedēļa",previous_month:"Iepriekšējā mēnesī",previous_quarter:"Iepriekšējā ceturksnī",previous_year:"Iepriekšējā gadā",custom:"Pielāgots"},Uee={title:"Klienti",prefix:"Prefikss",add_customer:"Pievienot klientu",contacts_list:"Klientu saraksts",name:"Vārds",mail:"Pasts",statement:"Paziņojums",display_name:"Nosaukums",primary_contact_name:"Galvenā kontakta vārds",contact_name:"Kontaktpersonas vārds",amount_due:"Kopā",email:"E-pasts",address:"Adrese",phone:"Telefona numurs",website:"Mājaslapa",overview:"Pārskats",invoice_prefix:"Rēķina prefikss",estimate_prefix:"Aprēķinu prefikss",payment_prefix:"Maksājuma prefikss",enable_portal:"Aktivizēt portālu",country:"Valsts",state:"Reģions",city:"Pilsēta",zip_code:"Pasta indekss",added_on:"Pievienots",action:"Darbība",password:"Parole",confirm_password:"Apstipriniet paroli",street_number:"Adrese",primary_currency:"Primārā valūta",description:"Apraksts",add_new_customer:"Pievienot jaunu klientu",save_customer:"Saglabāt klientu",update_customer:"Atjaunināt klientu",customer:"Klients | Klienti",new_customer:"Jauns klients",edit_customer:"Rediģēt klientu",basic_info:"Pamatinformācija",portal_access:"Portal Access",portal_access_text:"Would you like to allow this customer to login to the Customer Portal?",portal_access_url:"Customer Portal Login URL",portal_access_url_help:"Please copy & forward the above given URL to your customer for providing access.",billing_address:"Juridiskā adrese",shipping_address:"Piegādes adrese",copy_billing_address:"Kopēt no juridiskās adreses",no_customers:"Pagaidām nav klientu!",no_customers_found:"Klienti netika atrasti!",no_contact:"Nav kontaktu",no_contact_name:"Nav kontaktvārda",list_of_customers:"Šajā sadaļā būs klientu saraksts.",primary_display_name:"Klienta nosaukums",select_currency:"Izvēlieties valūtu",select_a_customer:"Izvēlēties klientu",type_or_click:"Rakstīt vai spiest, lai izvēlētos",new_transaction:"Jauns darījums",no_matching_customers:"Netika atrasts neviens klients!",phone_number:"Telefona numurs",create_date:"Izveidošanas datums",confirm_delete:"Jūs nevarēsit atgūt šo klientu un visus saistītos rēķinus, aprēķinus un maksājumus.",created_message:"Klients izveidots veiksmīgi",updated_message:"Klients atjaunināts veiksmīgi",address_updated_message:"Address Information Updated succesfully",deleted_message:"Klients veiksmīgi izdzēsts",edit_currency_not_allowed:"Nevar izmainīt valūtu, ja maksājums ir veikts."},Vee={title:"Preces",items_list:"Preču saraksts",name:"Nosaukums",unit:"Vienība",description:"Apraksts",added_on:"Pievienots",price:"Cena",date_of_creation:"Izveidošanas datums",not_selected:"Nekas netika izvēlēts",action:"Darbība",add_item:"Pievienot",save_item:"Saglabāt",update_item:"Atjaunināt",item:"Prece | Preces",add_new_item:"Pievienot jaunu preci",new_item:"Jauna prece",edit_item:"Rediģēt preci",no_items:"Nav preču!",list_of_items:"Šajā sadaļā būs preču/pakalpojumu saraksts.",select_a_unit:"atlasiet vienību",taxes:"Nodokļi",item_attached_message:"Nevar dzēst preci, kura tiek izmantota",confirm_delete:"Jūs nevarēsiet atgūt šo preci",created_message:"Prece izveidota veiksmīgi",updated_message:"Prece atjaunināta veiksmīgi",deleted_message:"Prece veiksmīgi izdzēsta"},qee={title:"Aprēķini",accept_estimate:"Accept Estimate",reject_estimate:"Reject Estimate",estimate:"Aprēķins | Aprēķini",estimates_list:"Aprēķinu saraksts",days:"{days} Dienas",months:"{months} Mēnesis",years:"{years} Gads",all:"Visi",paid:"Apmaksāts",unpaid:"Neapmaksāts",customer:"KLIENTS",ref_no:"REF NR.",number:"NUMURS",amount_due:"Summa apmaksai",partially_paid:"Daļēji apmaksāts",total:"Kopā",discount:"Atlaide",sub_total:"Starpsumma",estimate_number:"Aprēķina numurs",ref_number:"Ref numurs",contact:"Kontakti",add_item:"Pievienot preci",date:"Datums",due_date:"Apmaksas termiņš",expiry_date:"Termiņa beigu datums",status:"Status",add_tax:"Pievienot nodokli",amount:"Summa",action:"Darbība",notes:"Piezīmes",tax:"Nodoklis",estimate_template:"Sagatave",convert_to_invoice:"Pārveidot par rēķinu",mark_as_sent:"Atzīmēt kā nosūtītu",send_estimate:"Nosūtīt aprēķinu",resend_estimate:"Atkārtoti nosūtīt aprēķinu",record_payment:"Izveidot maksājumu",add_estimate:"Pievienot aprēķinu",save_estimate:"Saglabāt aprēķinu",confirm_conversion:"Šis aprēķins tiks izmantots, lai izveidotu jaunu rēķinu.",conversion_message:"Rēķins izveidots veiksmīgi",confirm_send_estimate:"Šis aprēķins tiks nosūtīts klientam e-pastā",confirm_mark_as_sent:"Aprēķins tiks atzīmēts kā nosūtīts",confirm_mark_as_accepted:"Aprēķins tiks atzīmēts kā apstiprināts",confirm_mark_as_rejected:"Aprēķins tiks atzīmēts kā noraidīts",no_matching_estimates:"Netika atrasts neviens aprēķins!",mark_as_sent_successfully:"Aprēķins atzīmēts kā veiksmīgi nosūtīts",send_estimate_successfully:"Aprēķins veiksmīgi nosūtīts",errors:{required:"Šis lauks ir obligāts"},accepted:"Apstiprināts",rejected:"Noraidīts",expired:"Expired",sent:"Nosūtīts",draft:"Melnraksts",viewed:"Viewed",declined:"Noraidīts",new_estimate:"Jauns aprēķins",add_new_estimate:"Pievienot jaunu aprēķinu",update_Estimate:"Atjaunināt aprēķinu",edit_estimate:"Labot aprēķinu",items:"preces",Estimate:"Aprēķins | Aprēķini",add_new_tax:"Pievienot jaunu nodokli",no_estimates:"Vēl nav aprēķinu!",list_of_estimates:"Šajā sadaļā būs aprēķinu saraksts.",mark_as_rejected:"Atzīmēt kā noraidītu",mark_as_accepted:"Atzīmēt kā apstiprinātu",marked_as_accepted_message:"Aprēķins atzīmēts kā apstiprināts",marked_as_rejected_message:"Aprēķins atzīmēts kā noraidīts",confirm_delete:"Jūs nevarēsiet atgūt šo aprēķinu | Jūs nevarēsiet atgūt šo aprēķinus",created_message:"Aprēķins izveidots veiksmīgi",updated_message:"Aprēķins atjaunināts veiksmīgi",deleted_message:"Aprēķins veiksmīgi izdzēsts | Aprēķini veiksmīgi izdzēsti",something_went_wrong:"kaut kas nogāja greizi",item:{title:"Preces nosaukums",description:"Apraksts",quantity:"Daudzums",price:"Cena",discount:"Atlaide",total:"Kopā",total_discount:"Kopējā atlaide",sub_total:"Starpsumma",tax:"Nodoklis",amount:"Summa",select_an_item:"Rakstīt vai spiest, lai izvēlētos",type_item_description:"Ievadiet preces/pakalpojuma aprakstu (nav obligāti)"},mark_as_default_estimate_template_description:"If enabled, the selected template will be automatically selected for new estimates."},Wee={title:"Rēķini",download:"Download",pay_invoice:"Pay Invoice",invoices_list:"Rēķinu saraksts",invoice_information:"Invoice Information",days:"{days} Dienas",months:"{months} Mēnesis",years:"{years} Gads",all:"Visi",paid:"Apmaksāts",unpaid:"Neapmaksāts",viewed:"Apskatīts",overdue:"Kavēts",completed:"Pabeigts",customer:"KLIENTS",paid_status:"APMAKSAS STATUS",ref_no:"REF NR.",number:"NUMURS",amount_due:"SUMMA APMAKSAI",partially_paid:"Daļēji apmaksāts",total:"Kopā",discount:"Atlaide",sub_total:"Starpsumma",invoice:"Rēķins | Rēķini",invoice_number:"Rēķina numurs",ref_number:"Ref numurs",contact:"Kontakti",add_item:"Pievienot preci",date:"Datums",due_date:"Apmaksas termiņš",status:"Status",add_tax:"Pievienot nodokli",amount:"Summa",action:"Darbība",notes:"Piezīmes",view:"Skatīt",send_invoice:"Nosūtīt rēķinu",resend_invoice:"Nosūtīt rēķinu atkārtoti",invoice_template:"Rēķina sagatave",conversion_message:"Rēķins ir veiksmīgi nokopēts",template:"Sagatave",mark_as_sent:"Atzīmēt kā nosūtītu",confirm_send_invoice:"Šis rēķins tiks nosūtīts klientam e-pastā",invoice_mark_as_sent:"Rēķins tiks atzīmēts kā nosūtīts",confirm_mark_as_accepted:"Rēķins tiks atzīmēts kā apstiprināts",confirm_mark_as_rejected:"Rēķins tiks atzīmēts kā noraidīts",confirm_send:"Šis rēķins tiks nosūtīts klientam e-pastā",invoice_date:"Rēķina datums",record_payment:"Izveidot maksājumu",add_new_invoice:"Jauns rēķins",update_expense:"Atjaunināt izdevumu",edit_invoice:"Rediģēt rēķinu",new_invoice:"Jauns rēķins",save_invoice:"Saglabāt rēķinu",update_invoice:"Atjaunināt rēķinu",add_new_tax:"Pievienot jaunu nodokli",no_invoices:"Vēl nav rēķinu!",mark_as_rejected:"Atzīmēt kā noraidītu",mark_as_accepted:"Atzīmēt kā apstiprinātu",list_of_invoices:"Šajā sadaļā būs rēķinu saraksts.",select_invoice:"Izvēlaties rēķinu",no_matching_invoices:"Netika atrasts neviens rēķins!",mark_as_sent_successfully:"Rēķins atzīmēts kā veiksmīgi nosūtīts",invoice_sent_successfully:"Rēķins ir veiksmīgi nosūtīts",cloned_successfully:"Rēķins ir veiksmīgi nokopēts",clone_invoice:"Kopēt rēķinu",confirm_clone:"Šis rēķins tiks nokopēts kā jauns rēķins",item:{title:"Preces nosaukums",description:"Apraksts",quantity:"Daudzums",price:"Cena",discount:"Atlaide",total:"Kopā",total_discount:"Kopējā atlaide",sub_total:"Starpsumma",tax:"Nodoklis",amount:"Summa",select_an_item:"Rakstīt vai spiest, lai izvēlētos",type_item_description:"Ievadiet preces/pakalpojuma aprakstu (nav obligāti)"},payment_attached_message:"Vienam no atzīmētajiem rēķiniem jau ir pievienots maksājums. Pārliecinieties, ka pievienoti maksājumi ir izdzēsti",confirm_delete:"Jūs nevarēsiet atgūt šo rēķinu | Jūs nevarēsiet atgūt šos rēķinus",created_message:"Rēķins izveidots veiksmīgi",updated_message:"Rēķins ir veiksmīgi atjaunināts",deleted_message:"Rēķins veiksmīgi izdzēsts | Rēķini veiksmīgi izdzēsti",marked_as_sent_message:"Rēķins atzīmēts kā veiksmīgi nosūtīts",something_went_wrong:"kaut kas nogāja greizi",invalid_due_amount_message:"Rēķina kopējā summa nevar būt mazāka par kopējo apmaksāto summu. Lūdzu atjauniniet rēķinu vai dzēsiet piesaistītos maksājumus, lai turpinātu.",mark_as_default_invoice_template_description:"If enabled, the selected template will be automatically selected for new invoices."},Hee={title:"Regulārie rēķini",invoices_list:"Regulāro rēķinu saraksts",days:"{days} Dienas",months:"{months} Month",years:"{years} Year",all:"All",paid:"Paid",unpaid:"Unpaid",viewed:"Viewed",overdue:"Overdue",active:"Active",completed:"Completed",customer:"CUSTOMER",paid_status:"PAID STATUS",ref_no:"REF NO.",number:"NUMBER",amount_due:"AMOUNT DUE",partially_paid:"Partially Paid",total:"Total",discount:"Discount",sub_total:"Sub Total",invoice:"Recurring Invoice | Recurring Invoices",invoice_number:"Recurring Invoice Number",next_invoice_date:"Next Invoice Date",ref_number:"Ref Number",contact:"Contact",add_item:"Add an Item",date:"Date",limit_by:"Limit by",limit_date:"Limit Date",limit_count:"Limit Count",count:"Count",status:"Status",select_a_status:"Select a status",working:"Working",on_hold:"On Hold",complete:"Completed",add_tax:"Add Tax",amount:"Amount",action:"Action",notes:"Notes",view:"View",basic_info:"Basic Info",send_invoice:"Send Recurring Invoice",auto_send:"Auto Send",resend_invoice:"Resend Recurring Invoice",invoice_template:"Recurring Invoice Template",conversion_message:"Recurring Invoice cloned successful",template:"Template",mark_as_sent:"Mark as sent",confirm_send_invoice:"This recurring invoice will be sent via email to the customer",invoice_mark_as_sent:"This recurring invoice will be marked as sent",confirm_send:"This recurring invoice will be sent via email to the customer",starts_at:"Sākuma datums",due_date:"Rēķina apmaksas datumu",record_payment:"Izveidot maksājumu",add_new_invoice:"Pievienot jaunu regulāro rēķinu",update_expense:"Update Expense",edit_invoice:"Edit Recurring Invoice",new_invoice:"New Recurring Invoice",send_automatically:"Send Automatically",send_automatically_desc:"Enable this, if you would like to send the invoice automatically to the customer when its created.",save_invoice:"Save Recurring Invoice",update_invoice:"Update Recurring Invoice",add_new_tax:"Add New Tax",no_invoices:"No Recurring Invoices yet!",mark_as_rejected:"Mark as rejected",mark_as_accepted:"Mark as accepted",list_of_invoices:"This section will contain the list of recurring invoices.",select_invoice:"Select Invoice",no_matching_invoices:"There are no matching recurring invoices!",mark_as_sent_successfully:"Recurring Invoice marked as sent successfully",invoice_sent_successfully:"Recurring Invoice sent successfully",cloned_successfully:"Recurring Invoice cloned successfully",clone_invoice:"Clone Recurring Invoice",confirm_clone:"This recurring invoice will be cloned into a new Recurring Invoice",add_customer_email:"Please add an email address for this customer to send invoices automatically.",item:{title:"Item Title",description:"Description",quantity:"Quantity",price:"Price",discount:"Discount",total:"Total",total_discount:"Total Discount",sub_total:"Sub Total",tax:"Tax",amount:"Amount",select_an_item:"Type or click to select an item",type_item_description:"Type Item Description (optional)"},frequency:{title:"Frequency",select_frequency:"Select Frequency",minute:"Minute",hour:"Hour",day_month:"Day of month",month:"Month",day_week:"Day of week"},confirm_delete:"You will not be able to recover this Invoice | You will not be able to recover these Invoices",created_message:"Recurring Invoice created successfully",updated_message:"Recurring Invoice updated successfully",deleted_message:"Recurring Invoice deleted successfully | Recurring Invoices deleted successfully",marked_as_sent_message:"Recurring Invoice marked as sent successfully",user_email_does_not_exist:"User email does not exist",something_went_wrong:"something went wrong",invalid_due_amount_message:"Total Recurring Invoice amount cannot be less than total paid amount for this Recurring Invoice. Please update the invoice or delete the associated payments to continue."},Kee={title:"Maksājumi",payments_list:"Maksājumu saraksts",record_payment:"Izveidot maksājumu",customer:"Klients",date:"Datums",amount:"Summa",action:"Darbība",payment_number:"Maksājuma numurs",payment_mode:"Apmaksas veids",invoice:"Rēķins",note:"Piezīme",add_payment:"Pievienot maksājumu",new_payment:"Jauns maksājums",edit_payment:"Labot maksājumu",view_payment:"Skatīt maksājumu",add_new_payment:"Pievienot jaunu maksājumu",send_payment_receipt:"Nosūtīt maksājuma izdruku",send_payment:"Nosūtīt maksājumu",save_payment:"Saglabāt maksājumu",update_payment:"Labot maksājumu",payment:"Maksājums | Maksājumi",no_payments:"Nav pievienotu maksājumu!",not_selected:"Not selected",no_invoice:"No invoice",no_matching_payments:"Netika atrasts neviens maksājums!",list_of_payments:"Šajā sadaļā būs maksājumu saraksts.",select_payment_mode:"Izvēlēties maksājuma veidu",confirm_mark_as_sent:"Aprēķins tiks atzīmēts kā nosūtīts",confirm_send_payment:"Šis maksājums tiks nosūtīts klientam e-pastā",send_payment_successfully:"Maksājums veiksmīgi nosūtīts",something_went_wrong:"kaut kas nogāja greizi",confirm_delete:"Jūs nevarēsiet atgūt šo maksājumu | Jūs nevarēsiet atgūt šos maksājumus",created_message:"Maksājums veiksmīgi izveidots",updated_message:"Maksājums veiksmīgi labots",deleted_message:"Maksājums veiksmīgi izdzēsts | Maksājumi veiksmīgi izdzēsti",invalid_amount_message:"Maksājuma summa nav pareiza"},Yee={title:"Izdevumi",expenses_list:"Izdevumu saraksts",select_a_customer:"Izvēlēties klientu",expense_title:"Nosaukums",customer:"Klients",currency:"Currency",contact:"Kontakti",category:"Kategorija",from_date:"Datums no",to_date:"Datums līdz",expense_date:"Datums",description:"Apraksts",receipt:"Čeks",amount:"Summa",action:"Darbība",not_selected:"Not selected",note:"Piezīme",category_id:"Kategorijas Id",date:"Datums",add_expense:"Pievienot izdevumu",add_new_expense:"Pievienot jaunu izdevumu",save_expense:"Saglabāt izdevumu",update_expense:"Atjaunināt izdevumu",download_receipt:"Lejupielādēt čeku",edit_expense:"Labot izdevumu",new_expense:"Jauns izdevums",expense:"Izdevums | Izdevumi",no_expenses:"Vēl nav izdevumu!",list_of_expenses:"Šajā sadaļā būs izdevumu saraksts.",confirm_delete:"Jūs nevarēsiet atgūt šo izdevumu | Jūs nevarēsiet atgūt šos izdevumus",created_message:"Izdevums izveidots veiksmīgi",updated_message:"Izdevums atjaunināts veiksmīgi",deleted_message:"Izdevums veiksmīgi izdzēsts | Izdevumi veiksmīgi izdzēsti",categories:{categories_list:"Kategoriju saraksts",title:"Nosaukums",name:"Vārds",description:"Apraksts",amount:"Summa",actions:"Darbības",add_category:"Pievienot kategoriju",new_category:"Jauna Kategorija",category:"Kategorija | Kategorijas",select_a_category:"Izvēlieties kategoriju"}},Zee={email:"E-pasts",password:"Parole",forgot_password:"Aizmirsi paroli?",or_signIn_with:"vai pierakstīties ar",login:"Ielogoties",register:"Reģistrēties",reset_password:"Atjaunot paroli",password_reset_successfully:"Parole atjaunota veiksmīgi",enter_email:"Ievadiet e-pastu",enter_password:"Ievadiet paroli",retype_password:"Atkārtoti ievadiet paroli"},Gee={buy_now:"Buy Now",install:"Install",price:"Price",download_zip_file:"Download ZIP file",unzipping_package:"Unzipping Package",copying_files:"Copying Files",deleting_files:"Deleting Unused files",completing_installation:"Completing Installation",update_failed:"Update Failed",install_success:"Module has been installed successfully!",customer_reviews:"Reviews",license:"License",faq:"FAQ",monthly:"Monthly",yearly:"Yearly",updated:"Updated",version:"Version",disable:"Disable",module_disabled:"Module Disabled",enable:"Enable",module_enabled:"Module Enabled",update_to:"Update To",module_updated:"Module Updated Successfully!",title:"Modules",module:"Module | Modules",api_token:"API token",invalid_api_token:"Invalid API Token.",other_modules:"Other Modules",view_all:"View All",no_reviews_found:"There are no reviews for this module yet!",module_not_purchased:"Module Not Purchased",module_not_found:"Module Not Found",version_not_supported:"This module version doesn't support the current version of InvoiceShelf",last_updated:"Last Updated On",connect_installation:"Connect your installation",api_token_description:"Login to {url} and connect this installation by entering the API Token. Your purchased modules will show up here after the connection is established.",view_module:"View Module",update_available:"Update Available",purchased:"Purchased",installed:"Installed",no_modules_installed:"No Modules Installed Yet!",disable_warning:"All the settings for this particular will be reverted.",what_you_get:"What you get"},Qee={title:"Lietotāji",users_list:"Lietotāju saraksts",name:"Vārds",description:"Apraksts",added_on:"Pievienots",date_of_creation:"Izveidošanas datums",action:"Darbība",add_user:"Pievienot lietotāju",save_user:"Saglabāt lietotāju",update_user:"Atjaunināt lietotāju",user:"Lietotājs | Lietotāji",add_new_user:"Pievienot jaunu lietotāju",new_user:"Jauns lietotājs",edit_user:"Rediģēt lietotāju",no_users:"Pagaidām nav lietotāju!",list_of_users:"Šajā sadaļā būs lietotāju saraksts.",email:"E-pasts",phone:"Telefona numurs",password:"Parole",user_attached_message:"Nevar dzēst preci, kura tiek izmantota",confirm_delete:"Jūs nevarēsiet atgūt šo lietotāju | Jūs nevarēsiet atgūt šos lietotājus",created_message:"Lietotājs veiksmīgi izveidots",updated_message:"Lietotājs veiksmīgi labots",deleted_message:"Lietotājs veiksmīgi izdzēsts",select_company_role:"Select Role for {company}",companies:"Companies"},Jee={title:"Atskaite",from_date:"Datums no",to_date:"Datums līdz",status:"Status",paid:"Apmaksāts",unpaid:"Neapmaksāts",download_pdf:"Lejupielādēt PDF",view_pdf:"Apskatīt PDF",update_report:"Labot atskaiti",report:"Atskaite | Atskaites",profit_loss:{profit_loss:"Peļņa & Zaudējumi",to_date:"Datums līdz",from_date:"Datums no",date_range:"Izvēlēties datumus"},sales:{sales:"Pārdotais",date_range:"Izvēlēties datumus",to_date:"Datums līdz",from_date:"Datums no",report_type:"Atskaites veids"},taxes:{taxes:"Nodokļi",to_date:"Datums līdz",from_date:"Datums no",date_range:"Izvēlēties datumus"},errors:{required:"Šis lauks ir obligāts"},invoices:{invoice:"Rēķins",invoice_date:"Rēķina datums",due_date:"Apmaksas termiņš",amount:"Summa",contact_name:"Kontaktpersonas vārds",status:"Status"},estimates:{estimate:"Aprēķins",estimate_date:"Aprēķina datums",due_date:"Termiņš",estimate_number:"Aprēķina numurs",ref_number:"Ref numurs",amount:"Summa",contact_name:"Kontaktpersonas vārds",status:"Status"},expenses:{expenses:"Izdevumi",category:"Kategorija",date:"Datums",amount:"Summa",to_date:"Datums līdz",from_date:"Datums no",date_range:"Izvēlēties datumus"}},Xee={menu_title:{account_settings:"Konta iestatījumi",company_information:"Uzņēmuma informācija",customization:"Pielāgošana",preferences:"Iestatījumi",notifications:"Paziņojumi",tax_types:"Nodokļu veidi",expense_category:"Izdevumu kategorijas",update_app:"Atjaunināt App",backup:"Rezerves kopija",file_disk:"Disks",custom_fields:"Pielāgotie lauki",payment_modes:"Apmaksas veidi",notes:"Piezīmes",exchange_rate:"Exchange Rate",address_information:"Address Information"},address_information:{section_description:" You can update Your Address information using form below."},title:"Iestatījumi",setting:"Iestatījumi | Iestatījumi",general:"Vispārīgi",language:"Valoda",primary_currency:"Primārā valūta",timezone:"Laika josla",date_format:"Datuma formāts",currencies:{title:"Valūtas",currency:"Valūta | Valūtas",currencies_list:"Valūtu saraksts",select_currency:"Izvēleties valūtu",name:"Nosaukums",code:"Kods",symbol:"Simbols",precision:"Precizitāte",thousand_separator:"Tūkstošu atdalītājs",decimal_separator:"Decimāldaļu atdalītājs",position:"Pozīcija",position_of_symbol:"Pozīcijas simbols",right:"Pa labi",left:"Pa kreisi",action:"Darbība",add_currency:"Pievienot valūtu"},mail:{host:"E-pasta serveris",port:"E-pasta ports",driver:"E-pasta draiveris",secret:"Secret",mailgun_secret:"Mailgun Secret",mailgun_domain:"Domēns",mailgun_endpoint:"Mailgun Endpoint",ses_secret:"SES Secret",ses_key:"SES Key",password:"E-pasta parole",username:"E-pasta lietotājvārds",mail_config:"E-pasta konfigurācija",from_name:"E-pasts no",from_mail:"E-pasta adrese no kuras sūtīt",encryption:"E-pasta šifrēšana",mail_config_desc:"Zemāk ir e-pasta konfigurēšanas forma. Jūs varat konfigurēt arī trešās puses servisus kā Sendgrid, SES u.c."},pdf:{title:"PDF uzstādījumi",footer_text:"Kājenes teksts",pdf_layout:"PDF izkārtojums"},company_info:{company_info:"Uzņēmuma informācija",company_name:"Uzņēmuma nosaukums",company_logo:"Uzņēmuma logo",section_description:"Informācija par uzņēmumu kura tiks uzrādīta rēķinos, aprēķinos un citos dokumentos kurus veidosiet InvoiceShelf sistēmā.",phone:"Telefona numurs",country:"Valsts",state:"Reģions",city:"Pilsēta",address:"Adrese",zip:"Pasta indekss",save:"Saglabāt",delete:"Delete",updated_message:"Uzņēmuma informācija veiksmīgi saglabāta",delete_company:"Delete Company",delete_company_description:"Once you delete your company, you will lose all the data and files associated with it permanently.",are_you_absolutely_sure:"Are you absolutely sure?",delete_company_modal_desc:"This action cannot be undone. This will permanently delete {company} and all of its associated data.",delete_company_modal_label:"Please type {company} to confirm"},custom_fields:{title:"Pielāgotie lauki",section_description:"Customize your Invoices, Estimates & Payment Receipts with your own fields. Make sure to use the below added fields on the address formats on Customization settings page.",add_custom_field:"Add Custom Field",edit_custom_field:"Edit Custom Field",field_name:"Field Name",label:"Label",type:"Type",name:"Name",slug:"Slug",required:"Required",placeholder:"Placeholder",help_text:"Help Text",default_value:"Noklusējuma vērtība",prefix:"Prefikss",starting_number:"Sākuma numurs",model:"Modelis",help_text_description:"Enter some text to help users understand the purpose of this custom field.",suffix:"Suffix",yes:"Jā",no:"Nē",order:"Order",custom_field_confirm_delete:"You will not be able to recover this Custom Field",already_in_use:"Custom Field is already in use",deleted_message:"Custom Field deleted successfully",options:"options",add_option:"Add Options",add_another_option:"Add another option",sort_in_alphabetical_order:"Sort in Alphabetical Order",add_options_in_bulk:"Add options in bulk",use_predefined_options:"Use Predefined Options",select_custom_date:"Select Custom Date",select_relative_date:"Select Relative Date",ticked_by_default:"Ticked by default",updated_message:"Custom Field updated successfully",added_message:"Custom Field added successfully",press_enter_to_add:"Press enter to add new option",model_in_use:"Cannot update model for fields which are already in use.",type_in_use:"Cannot update type for fields which are already in use."},customization:{customization:"pielāgošana",updated_message:"Uzņēmuma informācija veiksmīgi saglabāta",save:"Saglabāt",insert_fields:"Insert Fields",learn_custom_format:"Learn how to use custom format",add_new_component:"Add New Component",component:"Component",Parameter:"Parameter",series:"Series",series_description:"To set a static prefix/postfix like 'INV' across your company. It supports character length of up to 6 chars.",series_param_label:"Series Value",delimiter:"Delimiter",delimiter_description:"Single character for specifying the boundary between 2 separate components. By default its set to -",delimiter_param_label:"Delimiter Value",date_format:"Date Format",date_format_description:"A local date and time field which accepts a format parameter. The default format: 'Y' renders the current year.",date_format_param_label:"Format",sequence:"Sequence",sequence_description:"Consecutive sequence of numbers across your company. You can specify the length on the given parameter.",sequence_param_label:"Sequence Length",customer_series:"Customer Series",customer_series_description:"To set a different prefix/postfix for each customer.",customer_sequence:"Customer Sequence",customer_sequence_description:"Consecutive sequence of numbers for each of your customer.",customer_sequence_param_label:"Sequence Length",random_sequence:"Random Sequence",random_sequence_description:"Random alphanumeric string. You can specify the length on the given parameter.",random_sequence_param_label:"Sequence Length",invoices:{title:"Rēķini",invoice_number_format:"Invoice Number Format",invoice_number_format_description:"Customize how your invoice number gets generated automatically when you create a new invoice.",preview_invoice_number:"Preview Invoice Number",due_date:"Due Date",due_date_description:"Specify how due date is automatically set when you create an invoice.",due_date_days:"Invoice Due after days",set_due_date_automatically:"Set Due Date Automatically",set_due_date_automatically_description:"Enable this if you wish to set due date automatically when you create a new invoice.",default_formats:"Default Formats",default_formats_description:"Below given formats are used to fill up the fields automatically on invoice creation.",default_invoice_email_body:"Default Invoice Email Body",company_address_format:"Uzņēmuma adreses formāts",shipping_address_format:"Piegādes adreses formāts",billing_address_format:"Maksātāja / Uzņēmuma adreses formāts",invoice_email_attachment:"Send invoices as attachments",invoice_email_attachment_setting_description:"Enable this if you want to send invoices as email attachment. Please note that 'View Invoice' button in emails will not be displayed anymore when enabled.",invoice_settings_updated:"Invoice Settings updated successfully",retrospective_edits:"Retrospective Edits",allow:"Allow",disable_on_invoice_partial_paid:"Disable after partial payment is recorded",disable_on_invoice_paid:"Disable after full payment is recorded",disable_on_invoice_sent:"Disable after invoice is sent",retrospective_edits_description:" Based on your country's laws or your preference, you can restrict users from editing finalised invoices."},estimates:{title:"Aprēķini",estimate_number_format:"Estimate Number Format",estimate_number_format_description:"Customize how your estimate number gets generated automatically when you create a new estimate.",preview_estimate_number:"Preview Estimate Number",expiry_date:"Expiry Date",expiry_date_description:"Specify how expiry date is automatically set when you create an estimate.",expiry_date_days:"Estimate Expires after days",set_expiry_date_automatically:"Set Expiry Date Automatically",set_expiry_date_automatically_description:"Enable this if you wish to set expiry date automatically when you create a new estimate.",default_formats:"Default Formats",default_formats_description:"Below given formats are used to fill up the fields automatically on estimate creation.",default_estimate_email_body:"Noklusējamais Aprēķina e-pasta saturs",company_address_format:"Uzņēmuma adreses formāts",shipping_address_format:"Piegādes adreses formāts",billing_address_format:"Maksātāja / Uzņēmuma adreses formāts",estimate_email_attachment:"Send estimates as attachments",estimate_email_attachment_setting_description:"Enable this if you want to send the estimates as an email attachment. Please note that 'View Estimate' button in emails will not be displayed anymore when enabled.",estimate_settings_updated:"Estimate Settings updated successfully",convert_estimate_options:"Estimate Convert Action",convert_estimate_description:"Specify what happens to the estimate after it gets converted to an invoice.",no_action:"No action",delete_estimate:"Delete estimate",mark_estimate_as_accepted:"Mark estimate as accepted"},payments:{title:"Maksājumi",payment_number_format:"Payment Number Format",payment_number_format_description:"Customize how your payment number gets generated automatically when you create a new payment.",preview_payment_number:"Preview Payment Number",default_formats:"Default Formats",default_formats_description:"Below given formats are used to fill up the fields automatically on payment creation.",default_payment_email_body:"Noklusējamais Maksājuma e-pasta saturs",company_address_format:"Uzņēmuma adreses formāts",from_customer_address_format:"No Klienta adreses formāts",payment_email_attachment:"Send payments as attachments",payment_email_attachment_setting_description:"Enable this if you want to send the payment receipts as an email attachment. Please note that 'View Payment' button in emails will not be displayed anymore when enabled.",payment_settings_updated:"Payment Settings updated successfully"},items:{title:"Preces",units:"Vienības",add_item_unit:"Pievienot Preces vienību",edit_item_unit:"Labot Preces vienību",unit_name:"Vienības nosaukums",item_unit_added:"Preces vienība pievienota",item_unit_updated:"Preces vienība atjaunota",item_unit_confirm_delete:"Jums nebūs iespējas atgūt šo Preces vienību",already_in_use:"Preces vienība jau tiek izmantota",deleted_message:"Preces vienība veiksmīgi izdzēsta"},notes:{title:"Piezīmes",description:"Save time by creating notes and reusing them on your invoices, estimates & payments.",notes:"Notes",type:"Type",add_note:"Add Note",add_new_note:"Add New Note",name:"Name",edit_note:"Edit Note",note_added:"Note added successfully",note_updated:"Note Updated successfully",note_confirm_delete:"You will not be able to recover this Note",already_in_use:"Note is already in use",deleted_message:"Note deleted successfully"}},account_settings:{profile_picture:"Profile Picture",name:"Name",email:"Email",password:"Password",confirm_password:"Confirm Password",account_settings:"Account Settings",save:"Save",section_description:"You can update your name, email & password using the form below.",updated_message:"Account Settings updated successfully"},user_profile:{name:"Name",email:"Email",password:"Password",confirm_password:"Confirm Password"},notification:{title:"Notifications",email:"Send Notifications to",description:"Which email notifications would you like to receive when something changes?",invoice_viewed:"Invoice viewed",invoice_viewed_desc:"When your customer views the invoice sent via invoiceshelf dashboard.",estimate_viewed:"Estimate viewed",estimate_viewed_desc:"When your customer views the estimate sent via invoiceshelf dashboard.",save:"Save",email_save_message:"Email saved successfully",please_enter_email:"Please Enter Email"},roles:{title:"Roles",description:"Manage the roles & permissions of this company",save:"Save",add_new_role:"Add New Role",role_name:"Role Name",added_on:"Added on",add_role:"Add Role",edit_role:"Edit Role",name:"Name",permission:"Permission | Permissions",select_all:"Select All",none:"None",confirm_delete:"You will not be able to recover this Role",created_message:"Role created successfully",updated_message:"Role updated successfully",deleted_message:"Role deleted successfully",already_in_use:"Role is already in use"},exchange_rate:{exchange_rate:"Exchange Rate",title:"Fix Currency Exchange issues",description:"Please enter exchange rate of all the currencies mentioned below to help InvoiceShelf properly calculate the amounts in {currency}.",drivers:"Drivers",new_driver:"Add New Provider",edit_driver:"Edit Provider",select_driver:"Select Driver",update:"select exchange rate ",providers_description:"Configure your exchange rate providers here to automatically fetch the latest exchange rate on transactions.",key:"API Key",name:"Name",driver:"Driver",is_default:"IS DEFAULT",currency:"Currencies",exchange_rate_confirm_delete:"You will not be able to recover this driver",created_message:"Provider Created successfully",updated_message:"Provider Updated Successfully",deleted_message:"Provider Deleted Successfully",error:" You cannot Delete Active Driver",default_currency_error:"This currency is already used in one of the Active Provider",exchange_help_text:"Enter exchange rate to convert from {currency} to {baseCurrency}",currency_freak:"Currency Freak",currency_layer:"Currency Layer",open_exchange_rate:"Open Exchange Rate",currency_converter:"Currency Converter",server:"Server",url:"URL",active:"Active",currency_help_text:"This provider will only be used on above selected currencies",currency_in_used:"The following currencies are already active on another provider. Please remove these currencies from selection to activate this provider again."},tax_types:{title:"Tax Types",add_tax:"Add Tax",edit_tax:"Edit Tax",description:"You can add or Remove Taxes as you please. InvoiceShelf supports Taxes on Individual Items as well as on the invoice.",add_new_tax:"Add New Tax",tax_settings:"Tax Settings",tax_per_item:"Tax Per Item",tax_name:"Tax Name",compound_tax:"Compound Tax",percent:"Percent",action:"Action",tax_setting_description:"Enable this if you want to add taxes to individual invoice items. By default, taxes are added directly to the invoice.",created_message:"Tax type created successfully",updated_message:"Tax type updated successfully",deleted_message:"Tax type deleted successfully",confirm_delete:"Jums nebūs iespējas atgūt šo Nodokļa veidu",already_in_use:"Nodoklis jau tiek izmantots"},payment_modes:{title:"Payment Modes",description:"Modes of transaction for payments",add_payment_mode:"Add Payment Mode",edit_payment_mode:"Edit Payment Mode",mode_name:"Mode Name",payment_mode_added:"Payment Mode Added",payment_mode_updated:"Payment Mode Updated",payment_mode_confirm_delete:"You will not be able to recover this Payment Mode",payments_attached:"This payment method is already attached to payments. Please delete the attached payments to proceed with deletion.",expenses_attached:"This payment method is already attached to expenses. Please delete the attached expenses to proceed with deletion.",deleted_message:"Payment Mode deleted successfully"},expense_category:{title:"Izdevumu kategorijas",action:"Darbība",description:"Kategorijas ir obligātas, lai pievienotu Izdevumus.",add_new_category:"Pievienot jaunu kategoriju",add_category:"Pievienot kategoriju",edit_category:"Rediģēt kategoriju",category_name:"Kategorijas nosaukums",category_description:"Apraksts",created_message:"Izdevumu kategorija izveidota veiksmīgi",deleted_message:"Izdevumu kategorija veiksmīgi izdzēsta",updated_message:"Izdevumu kategorija atjaunināta veiksmīgi",confirm_delete:"Jums nebūs iespējas atgūt šo Izdevumu kategoriju",already_in_use:"Kategorija jau tiek izmantota"},preferences:{currency:"Valūta",default_language:"Noklusējuma valoda",time_zone:"Laika josla",fiscal_year:"Finanšu gads",date_format:"Datuma formāts",discount_setting:"Atlaižu iestatījumi",discount_per_item:"Atlaide par preci/pakalpojumu ",discount_setting_description:"Iespējot šo, lai piešķirtu atlaides individuālām rēķina precēm. Pēc noklusējuma, atlaide tiek piemērota rēķinam.",expire_public_links:"Automatically Expire Public Links",expire_setting_description:"Specify whether you would like to expire all the links sent by application to view invoices, estimates & payments, etc after a specified duration.",save:"Saglabāt",preference:"Iestatījumi | Iestatījumi",general_settings:"Noklusējamie iestatījumi sistēmai.",updated_message:"Iestatījumi atjaunināti veiksmīgi",select_language:"Izvēlieties valodu",select_time_zone:"Izvēlaties laika joslu",select_date_format:"Izvēlaties datuma formātu",select_financial_year:"Izvēlaties finanšu gadu",recurring_invoice_status:"Recurring Invoice Status",create_status:"Create Status",active:"Active",on_hold:"On Hold",update_status:"Update Status",completed:"Completed",company_currency_unchangeable:"Company currency cannot be changed"},update_app:{title:"Atjaunināt App",description:"Jūs varat atjaunināt InvoiceShelf sistēmas versiju pavisam vienkārši - spiežot uz pogas zemāk",check_update:"Meklēt atjauninājumus",avail_update:"Pieejami jauni atjauninājumi",next_version:"Nākamā versija",requirements:"Prasības",update:"Atjaunināt tagad",update_progress:"Notiek atjaunināšana...",progress_text:"Tas prasīs tikai dažas minūtes. Pirms atjaunināšanas beigām, lūdzu, neatsvaidziniet ekrānu un neaizveriet logu",update_success:"Sistēma ir atjaunināta! Lūdzu, uzgaidiet, kamēr pārlūkprogrammas logs tiks automātiski ielādēts.",latest_message:"Atjauninājumi nav pieejami! Jums ir jaunākā versija.",current_version:"Versija",download_zip_file:"Lejupielādēt ZIP failu",unzipping_package:"Atarhivē Zip failu",copying_files:"Notiek failu kopēšana",deleting_files:"Deleting Unused files",running_migrations:"Notiek migrācijas",finishing_update:"Pabeidz atjauninājumu",update_failed:"Atjaunināšana neizdevās",update_failed_text:"Atvainojiet! Jūsu atjauninājuma laikā notika kļūda: {step}. solī",update_warning:"All of the application files and default template files will be overwritten when you update the application using this utility. Please take a backup of your templates & database before updating."},backup:{title:"Backup | Backups",description:"The backup is a zipfile that contains all files in the directories you specify along with a dump of your database",new_backup:"Add New Backup",create_backup:"Create Backup",select_backup_type:"Select Backup Type",backup_confirm_delete:"You will not be able to recover this Backup",path:"path",new_disk:"New Disk",created_at:"created at",size:"size",dropbox:"dropbox",local:"local",healthy:"healthy",amount_of_backups:"amount of backups",newest_backups:"newest backups",used_storage:"used storage",select_disk:"Select Disk",action:"Action",deleted_message:"Backup deleted successfully",created_message:"Backup created successfully",invalid_disk_credentials:"Invalid credential of selected disk"},disk:{title:"File Disk | File Disks",description:"By default, InvoiceShelf will use your local disk for saving backups, avatar and other image files. You can configure more than one disk drivers like DigitalOcean, S3 and Dropbox according to your preference.",created_at:"created at",dropbox:"dropbox",name:"Name",driver:"Driver",disk_type:"Type",disk_name:"Disk Name",new_disk:"Add New Disk",filesystem_driver:"Filesystem Driver",local_driver:"local Driver",local_root:"local Root",public_driver:"Public Driver",public_root:"Public Root",public_url:"Public URL",public_visibility:"Public Visibility",media_driver:"Media Driver",media_root:"Media Root",aws_driver:"AWS Driver",aws_key:"AWS Key",aws_secret:"AWS Secret",aws_region:"AWS Region",aws_bucket:"AWS Bucket",aws_root:"AWS Root",do_spaces_type:"Do Spaces type",do_spaces_key:"Do Spaces key",do_spaces_secret:"Do Spaces Secret",do_spaces_region:"Do Spaces Region",do_spaces_bucket:"Do Spaces Bucket",do_spaces_endpoint:"Do Spaces Endpoint",do_spaces_root:"Do Spaces Root",dropbox_type:"Dropbox Type",dropbox_token:"Dropbox Token",dropbox_key:"Dropbox Key",dropbox_secret:"Dropbox Secret",dropbox_app:"Dropbox App",dropbox_root:"Dropbox Root",default_driver:"Default Driver",is_default:"IR NOKLUSĒJAMS",set_default_disk:"Iestatiet noklusējuma disku",set_default_disk_confirm:"This disk will be set as default and all the new PDFs will be saved on this disk",success_set_default_disk:"Disks ir veiksmīgi iestatīts kā noklusējums",save_pdf_to_disk:"Saglabāt PDF uz diska",disk_setting_description:" Iespējot šo, ja vēlaties lai katru rēķina, aprēķina un maksājuma izdrukas PDF kopiju saglabātu diskā. Šī opcija samazinās ielādēšanas laiku, kad apskatīsiet PDF.",select_disk:"Izvēlieties disku",disk_settings:"Diska uzstādījumi",confirm_delete:"Jūsu esošie faili un mapes norādītajā diskā netiks ietekmēti, bet diska konfigurācija tiks izdzēsta no InvoiceShelf sistēmas",action:"Darbība",edit_file_disk:"Labot failu disku",success_create:"Disks tika pievienots veiksmīgi",success_update:"Disks atjaunināts veiksmīgi",error:"Diska pievienošanas kļūda",deleted_message:"Failu disks veiksmīgi izdzēsts",disk_variables_save_successfully:"Disks konfigurēts veiksmīgi",disk_variables_save_error:"Diska konfigurācija neveiksmīga.",invalid_disk_credentials:"Nepareizi pieejas dati atzīmētajam diskam"},taxations:{add_billing_address:"Enter Billing Address",add_shipping_address:"Enter Shipping Address",add_company_address:"Enter Company Address",modal_description:"The information below is required in order to fetch sales tax.",add_address:"Add Address for fetching sales tax.",address_placeholder:"Example: 123, My Street",city_placeholder:"Example: Los Angeles",state_placeholder:"Example: CA",zip_placeholder:"Example: 90024",invalid_address:"Please provide valid address details."}},ete={account_info:"Konta informācija",account_info_desc:"Zemāk sniegtā informācija tiks izmantota galvenā administratora konta izveidei. Jūs varēsiet mainīt informāciju jebkurā laikā pēc ielogošanās.",name:"Vārds",email:"E-pasts",password:"Parole",confirm_password:"Apstipriniet paroli",save_cont:"Saglabāt un turpināt",company_info:"Uzņēmuma informācija",company_info_desc:"Šī informācija tiks parādīta rēķinos. Ņemiet vērā, ka vēlāk to var rediģēt iestatījumu lapā.",company_name:"Uzņēmuma nosaukums",company_logo:"Uzņēmuma logo",logo_preview:"Logo",preferences:"Iestatījumi",preferences_desc:"Noklusējamie iestatījumi sistēmai.",currency_set_alert:"The company's currency cannot be changed later.",country:"Valsts",state:"Reģions",city:"Pilsēta",address:"Adrese",street:"Adrese1 | Adrese2",phone:"Telefona numurs",zip_code:"Pasta indekss",go_back:"Atpakaļ",currency:"Valūta",language:"Valoda",time_zone:"Time Zone",fiscal_year:"Financial Year",date_format:"Date Format",from_address:"From Address",username:"Username",next:"Next",continue:"Continue",skip:"Skip",database:{database:"Site URL & Database",connection:"Database Connection",host:"Database Host",port:"Database Port",password:"Database Password",app_url:"App URL",app_domain:"App Domain",username:"Database Username",db_name:"Database Name",db_path:"Database Path",desc:"Create a database on your server and set the credentials using the form below."},permissions:{permissions:"Permissions",permission_confirm_title:"Are you sure you want to continue?",permission_confirm_desc:"Folder permission check failed",permission_desc:"Below is the list of folder permissions which are required in order for the app to work. If the permission check fails, make sure to update your folder permissions."},verify_domain:{title:"Domain Verification",desc:"InvoiceShelf uses Session based authentication which requires domain verification for security purposes. Please enter the domain on which you will be accessing your web application.",app_domain:"App Domain",verify_now:"Verify Now",success:"Domain Verify Successfully.",failed:"Domain verification failed. Please enter valid domain name.",verify_and_continue:"Verify And Continue"},mail:{host:"Mail Host",port:"Mail Port",driver:"Mail Driver",secret:"Secret",mailgun_secret:"Mailgun Secret",mailgun_domain:"Domain",mailgun_endpoint:"Mailgun Endpoint",ses_secret:"SES Secret",ses_key:"SES Key",password:"Mail Password",username:"Mail Username",mail_config:"Mail Configuration",from_name:"From Mail Name",from_mail:"From Mail Address",encryption:"Mail Encryption",mail_config_desc:"Below is the form for Configuring Email driver for sending emails from the app. You can also configure third party providers like Sendgrid, SES etc."},req:{system_req:"System Requirements",php_req_version:"Php (version {version} required)",check_req:"Pārbaudīt prasības",system_req_desc:"InvoiceShelf sistēmai ir dažas servera prasības. Pārliecinieties, ka jūsu serverim ir vajadzīgā php versija un visi tālāk minētie paplašinājumi."},errors:{migrate_failed:"Migrācija neizdevās",database_variables_save_error:"Nevarēja konfigurēt .env failu. Lūdzu pārbaudiet faila pieejas",mail_variables_save_error:"E-pasta konfigurācija neveiksmīga.",connection_failed:"Datubāzes savienojums neveiksmīgs",database_should_be_empty:"Datubāzei jābūt tukšai"},success:{mail_variables_save_successfully:"E-pasts konfigurēts veiksmīgi",database_variables_save_successfully:"Database configured successfully."}},tte={invalid_phone:"Invalid Phone Number",invalid_url:"Invalid url (ex: http://www.invoiceshelf.com)",invalid_domain_url:"Invalid url (ex: invoiceshelf.com)",required:"Field is required",email_incorrect:"Incorrect Email.",email_already_taken:"The email has already been taken.",email_does_not_exist:"User with given email doesn't exist",item_unit_already_taken:"This item unit name has already been taken",payment_mode_already_taken:"This payment mode name has already been taken",send_reset_link:"Send Reset Link",not_yet:"Not yet? Send it again",password_min_length:"Password must contain {count} characters",name_min_length:"Name must have at least {count} letters.",prefix_min_length:"Prefix must have at least {count} letters.",enter_valid_tax_rate:"Enter valid tax rate",numbers_only:"Numbers Only.",characters_only:"Characters Only.",password_incorrect:"Passwords must be identical",password_length:"Password must be {count} character long.",qty_must_greater_than_zero:"Quantity must be greater than zero.",price_greater_than_zero:"Price must be greater than zero.",payment_greater_than_zero:"Payment must be greater than zero.",payment_greater_than_due_amount:"Entered Payment is more than due amount of this invoice.",quantity_maxlength:"Quantity should not be greater than 20 digits.",price_maxlength:"Price should not be greater than 20 digits.",price_minvalue:"Price should be greater than 0.",amount_maxlength:"Amount should not be greater than 20 digits.",amount_minvalue:"Amount should be greater than 0.",discount_maxlength:"Discount should not be greater than max discount",description_maxlength:"Description should not be greater than 255 characters.",subject_maxlength:"Subject should not be greater than 100 characters.",message_maxlength:"Message should not be greater than 255 characters.",maximum_options_error:"Maximum of {max} options selected. First remove a selected option to select another.",notes_maxlength:"Notes should not be greater than 255 characters.",address_maxlength:"Address should not be greater than 255 characters.",ref_number_maxlength:"Ref Number should not be greater than 255 characters.",prefix_maxlength:"Prefix should not be greater than 5 characters.",something_went_wrong:"something went wrong",number_length_minvalue:"Number length should be greater than 0",at_least_one_ability:"Please select atleast one Permission.",valid_driver_key:"Please enter a valid {driver} key.",valid_exchange_rate:"Please enter a valid exchange rate.",company_name_not_same:"Company name must match with given name."},ate={starter_plan:"This feature is available on Starter plan and onwards!",invalid_provider_key:"Please Enter Valid Provider API Key.",estimate_number_used:"The estimate number has already been taken.",invoice_number_used:"The invoice number has already been taken.",payment_attached:"This invoice already has a payment attached to it. Make sure to delete the attached payments first in order to go ahead with the removal.",payment_number_used:"The payment number has already been taken.",name_already_taken:"The name has already been taken.",receipt_does_not_exist:"Receipt does not exist.",customer_cannot_be_changed_after_payment_is_added:"Customer cannot be change after payment is added",invalid_credentials:"Invalid Credentials.",not_allowed:"Not Allowed",login_invalid_credentials:"These credentials do not match our records.",enter_valid_cron_format:"Please enter a valid cron format",email_could_not_be_sent:"Email could not be sent to this email address.",invalid_address:"Please enter a valid address.",invalid_key:"Please enter valid key.",invalid_state:"Please enter a valid state.",invalid_city:"Please enter a valid city.",invalid_postal_code:"Please enter a valid zip.",invalid_format:"Please enter valid query string format.",api_error:"Server not responding.",feature_not_enabled:"Feature not enabled.",request_limit_met:"Api request limit exceeded.",address_incomplete:"Incomplete Address"},nte="Aprēķins",ite="Aprēķina numurs",ote="Aprēķina datums",ste="Derīgs līdz",rte="Rēķins",lte="Rēķina numurs",cte="Rēķina datums",dte="Apmaksas termiņš",ute="Notes",_te="Nosaukums",mte="Daudzums",pte="Cena",fte="Atlaide",hte="Summa",gte="Starpsumma",vte="Kopā",yte="Payment",bte="MAKSĀJUMA IZDRUKA",kte="Maksājuma datums",wte="Maksājuma numurs",Dte="Apmaksas veids",xte="Saņemtā summa",Ste="IZDEVUMU ATSKAITE",Pte="KOPĀ IZDEVUMI",Ete="PEĻŅAS & IZDEVUMU ATSKAITE",zte="Sales Customer Report",Ate="Sales Item Report",Cte="Tax Summary Report",Tte="IENĀKUMI",jte="PEĻŅA",Nte="Atskaite par pārdoto: Pēc lietotāja",Ite="KOPĀ PĀRDOTAIS",Fte="Atskaite par pārdoto: Pēc preces/pakalpojuma",Rte="NODOKĻU ATSKAITE",Ote="NODOKĻI KOPĀ",Mte="Nodokļu veidi",$te="Izdevumi",Lte="Saņēmējs,",Bte="Piegādes adrese,",Ute="Saņemts no:",Vte="Tax",qte={navigation:Fee,general:Ree,dashboard:Oee,tax_types:Mee,global_search:$ee,company_switcher:Lee,dateRange:Bee,customers:Uee,items:Vee,estimates:qee,invoices:Wee,recurring_invoices:Hee,payments:Kee,expenses:Yee,login:Zee,modules:Gee,users:Qee,reports:Jee,settings:Xee,wizard:ete,validation:tte,errors:ate,pdf_estimate_label:nte,pdf_estimate_number:ite,pdf_estimate_date:ote,pdf_estimate_expire_date:ste,pdf_invoice_label:rte,pdf_invoice_number:lte,pdf_invoice_date:cte,pdf_invoice_due_date:dte,pdf_notes:ute,pdf_items_label:_te,pdf_quantity_label:mte,pdf_price_label:pte,pdf_discount_label:fte,pdf_amount_label:hte,pdf_subtotal:gte,pdf_total:vte,pdf_payment_label:yte,pdf_payment_receipt_label:bte,pdf_payment_date:kte,pdf_payment_number:wte,pdf_payment_mode:Dte,pdf_payment_amount_received_label:xte,pdf_expense_report_label:Ste,pdf_total_expenses_label:Pte,pdf_profit_loss_label:Ete,pdf_sales_customers_label:zte,pdf_sales_items_label:Ate,pdf_tax_summery_label:Cte,pdf_income_label:Tte,pdf_net_profit_label:jte,pdf_customer_sales_report:Nte,pdf_total_sales_label:Ite,pdf_item_sales_label:Fte,pdf_tax_report_label:Rte,pdf_total_tax_label:Ote,pdf_tax_types_label:Mte,pdf_expenses_label:$te,pdf_bill_to:Lte,pdf_ship_to:Bte,pdf_received_from:Ute,pdf_tax_label:Vte},Wte={dashboard:"Översikt",customers:"Kunder",items:"Artiklar",invoices:"Fakturor","recurring-invoices":"Återkommande fakturor",expenses:"Utgifter",estimates:"Kostnadsförslag",payments:"Betalningar",reports:"Rapporter",settings:"Inställningar",logout:"Logga ut",users:"Användare",modules:"Modules"},Hte={add_company:"Skapa företag",view_pdf:"Visa PDF",copy_pdf_url:"Kopiera adress till PDF",download_pdf:"Ladda ner PDF",save:"Spara",create:"Skapa",cancel:"Avbryt",update:"Uppdatera",deselect:"Avmarkera",download:"Ladda ner",from_date:"Från datum",to_date:"Till datum",from:"Från",to:"Till",ok:"Ok",yes:"Ja",no:"Nej",sort_by:"Sortera på",ascending:"Stigande",descending:"Fallande",subject:"Ämne",body:"Innehåll",message:"Meddelande",send:"Skicka",preview:"Förhandsgranska",go_back:"Tillbaka",back_to_login:"Till inloggningssidan?",home:"Hem",filter:"Filter",delete:"Ta bort",edit:"Editera",view:"Visa",add_new_item:"Skapa artikel",clear_all:"Rensa alla",showing:"Visar",of:"av",actions:"Funktioner",subtotal:"DELSUMMA",discount:"RABATT",fixed:"Fast",percentage:"Procent",tax:"MOMS",total_amount:"TOTALSUMMA",bill_to:"Faktureras till",ship_to:"Levereras till",due:"Förfallen",draft:"Förslag",sent:"Skickat",all:"Alla",select_all:"Välj alla",select_template:"Välj mall",choose_file:"Klicka här för att välja fil",choose_template:"Välj mall",choose:"Välj",remove:"Ta bort",select_a_status:"Välj status",select_a_tax:"Välj moms",search:"Sök",are_you_sure:"Är du säker?",list_is_empty:"Listan är tom.",no_tax_found:"Hittade inte moms!",four_zero_four:"404",you_got_lost:"Hoppsan! Nu är du vilse!",go_home:"Gå hem",test_mail_conf:"Testa epostinställningar",send_mail_successfully:"Lyckades skicka epost",setting_updated:"Inställningar uppdaterades",select_state:"Välj kommun",select_country:"Välj land",select_city:"Välj stad",street_1:"Gatuadress 1",street_2:"Gatuadress 2",action_failed:"Försök misslyckades",retry:"Försök igen",choose_note:"Välj notering",no_note_found:"Inga noteringar hittades",insert_note:"Lägg till notering",copied_pdf_url_clipboard:"Url till PDF kopierades till urklipp!",copied_url_clipboard:"Copied url to clipboard!",docs:"Dokumentation",do_you_wish_to_continue:"Vill du fortsätta?",note:"Notering",pay_invoice:"Pay Invoice",login_successfully:"Logged in successfully!",logged_out_successfully:"Logged out successfully",mark_as_default:"Mark as default"},Kte={select_year:"Välj år",cards:{due_amount:"Förfallet belopp",customers:"Kunder",invoices:"Fakturor",estimates:"Kostnadsförslag",payments:"Payments"},chart_info:{total_sales:"Försäljning",total_receipts:"Kvitton",total_expense:"Utgifter",net_income:"Nettoinkomst",year:"Välj år"},monthly_chart:{title:"Försäljning och utgifter"},recent_invoices_card:{title:"Förfallna fakturor",due_on:"Förfaller den",customer:"Kund",amount_due:"Förfallet belopp",actions:"Handlingar",view_all:"Visa alla"},recent_estimate_card:{title:"Senaste kostnadsförslag",date:"Datum",customer:"Kund",amount_due:"Förfallet belopp",actions:"Handlingar",view_all:"Visa alla"}},Yte={name:"Namn",description:"Beskrivning",percent:"Provent",compound_tax:"Sammansatt moms"},Zte={search:"Sök...",customers:"Kunder",users:"Användare",no_results_found:"Hittade inga resultat"},Gte={label:"Byt företag",no_results_found:"Inga resultat hittades",add_new_company:"Lägg till nytt företag",new_company:"Nytt företag",created_message:"Företaget har skapats"},Qte={today:"Idag",this_week:"Denna vecka",this_month:"Denna månad",this_quarter:"Detta kvartal",this_year:"I år",previous_week:"Föregående vecka",previous_month:"Föregående månad",previous_quarter:"Föregående kvartal",previous_year:"Föregående år",custom:"Anpassad"},Jte={title:"Kunder",prefix:"Prefix",add_customer:"Lägg till kund",contacts_list:"Kundlista",name:"Namn",mail:"Epost | Epost",statement:"Påstående",display_name:"Visningsnamn",primary_contact_name:"Primär kontakts namn",contact_name:"Kontaktnamn",amount_due:"Förfallet belopp",email:"Epost",address:"Adress",phone:"Telefon",website:"Hemsida",overview:"Översikt",invoice_prefix:"Prefix för fakturor",estimate_prefix:"Prefix för kostnadsförslag",payment_prefix:"Prefix för betalningar",enable_portal:"Aktivera portal",country:"Land",state:"Kommun",city:"Stad",zip_code:"Postnummer",added_on:"Tillagd den",action:"Handling",password:"Lösenord",confirm_password:"Bekräfta lösenord",street_number:"Gatnummer",primary_currency:"Huvudvaluta",description:"Beskrivning",add_new_customer:"Lägg till ny kund",save_customer:"Spara kund",update_customer:"Uppdatera kund",customer:"Kund | Kunder",new_customer:"Ny kund",edit_customer:"Ändra kund",basic_info:"Information",portal_access:"Portal Access",portal_access_text:"Would you like to allow this customer to login to the Customer Portal?",portal_access_url:"Customer Portal Login URL",portal_access_url_help:"Please copy & forward the above given URL to your customer for providing access.",billing_address:"Fakturaadress",shipping_address:"Leveransadress",copy_billing_address:"Kopiera från faktura",no_customers:"Inga kunder än!",no_customers_found:"Hittade inga kunder!",no_contact:"Inga kontakter",no_contact_name:"Kontaktnamn",list_of_customers:"Här kommer det finnas en lista med kunder.",primary_display_name:"Visningsnamn",select_currency:"Välj valuta",select_a_customer:"Välj kund",type_or_click:"Skriv eller klicka för att välja",new_transaction:"Ny transaktion",no_matching_customers:"Matchade inte med någon kund!",phone_number:"Telefonnummer",create_date:"Skapandedatum",confirm_delete:"Du kommer inte kunna återställa denna kund eller några relaterade fakturor, kostnadsförslag eller betalningar. | Du kommer inte kunna återställa dessa kunder eller några relaterade fakturor, kostnadsförslag eller betalningar.",created_message:"Kund skapades",updated_message:"Kund uppdaterades",address_updated_message:"Address Information Updated succesfully",deleted_message:"Kund raderades | Kunder raderades",edit_currency_not_allowed:"Kan inte ändra valuta när transaktioner har skapats."},Xte={title:"Artiklar",items_list:"Artikellista",name:"Namn",unit:"Enhet",description:"Beskrivning",added_on:"Tillagd den",price:"Pris",date_of_creation:"Skapandedatum",not_selected:"Inga poster valda",action:"Handling",add_item:"Skapa artikel",save_item:"Spara artikel",update_item:"Uppdatera artiklar",item:"Artikel | Artiklar",add_new_item:"Skapa ny artikel",new_item:"Ny artikel",edit_item:"Ändra artikel",no_items:"Inga artiklar än!",list_of_items:"Här kommer lista över artiklar vara.",select_a_unit:"välj enhet",taxes:"Moms",item_attached_message:"Kan inte radera en artikel som används",confirm_delete:"Du kommer inte kunna återställa denna artikel | Du kommer inte kunna återställa dessa artiklar",created_message:"Artikel skapades",updated_message:"Artikel uppdaterades",deleted_message:"Artikel raderades | Artiklar raderades"},eae={title:"Kostnadsförslag",accept_estimate:"Accept Estimate",reject_estimate:"Reject Estimate",estimate:"Kostnadsförslag | Kostnadsförslag",estimates_list:"Lista med kostnadsförslag",days:"{days} dagar",months:"{months} månader",years:"{years} år",all:"Alla",paid:"Betalda",unpaid:"Obetalda",customer:"KUND",ref_no:"REF NR.",number:"NUMMER",amount_due:"FÖRFALLET BELOPP",partially_paid:"Delbetald",total:"Summa",discount:"Rabatt",sub_total:"Delsumma",estimate_number:"Kostnadsförslagsnummer",ref_number:"Ref Nummer",contact:"Kontakt",add_item:"Lägg till artikel",date:"Datum",due_date:"Förfallodatum",expiry_date:"Utgångsdatum",status:"Status",add_tax:"Lägg till moms",amount:"Belopp",action:"Handling",notes:"Noteringar",tax:"Moms",estimate_template:"Mall",convert_to_invoice:"Konvertera till faktura",mark_as_sent:"Markerade som skickad",send_estimate:"Skicka kostnadsförslag",resend_estimate:"Skicka kostnadsförslag igen",record_payment:"Registrera betalning",add_estimate:"Lägg till kostnadsförslag",save_estimate:"Spara kostnadsförslag",confirm_conversion:"Detta kostnadsförslag används för att skapa ny faktura.",conversion_message:"Faktura skapades",confirm_send_estimate:"Detta kostnadsförslag skickas via epost till kund",confirm_mark_as_sent:"Detta kostnadsförslag markeras som skickat",confirm_mark_as_accepted:"Detta kostnadsförslag markeras som accepterad",confirm_mark_as_rejected:"Detta kostnadsförslag markeras som avvisad",no_matching_estimates:"Inga matchande kostnadsförslag!",mark_as_sent_successfully:"Kostnadsförslag markerat som skickat",send_estimate_successfully:"Kostnadsförslag skickades",errors:{required:"Fältet är tvingande"},accepted:"Accepterad",rejected:"Avvisad",expired:"Expired",sent:"Skickat",draft:"Utkast",viewed:"Viewed",declined:"Avvisad",new_estimate:"Nytt kostnadsförslag",add_new_estimate:"Skapa nytt kostnadsförslag",update_Estimate:"Uppdatera kostnadsförslag",edit_estimate:"Ändra kostnadsförslag",items:"artiklar",Estimate:"Kostnadsförslag | Kostnadsförslag",add_new_tax:"Skapa ny momssats",no_estimates:"Inga kostnadsförslag än!",list_of_estimates:"Här kommer det finnas kostnadsförslag.",mark_as_rejected:"Markera som avvisad",mark_as_accepted:"Markera som godkänd",marked_as_accepted_message:"Kostnadsförslag markerad som godkänd",marked_as_rejected_message:"Kostnadsförslag markerad som avvisad",confirm_delete:"Du kommer inte kunna återställa detta kostnadsförslag | Du kommer inte kunna återställa dessa kostnadsförslag",created_message:"Kostnadsförslag skapades",updated_message:"Kostnadsförslag ändrades",deleted_message:"Kostnadsförslag raderades | Kostnadsförslag raderades",something_went_wrong:"något gick fel",item:{title:"Artikelnamn",description:"Beskrivning",quantity:"Antal",price:"Pris",discount:"Rabatt",total:"Summa",total_discount:"Rabattsumma",sub_total:"Delsumma",tax:"Moms",amount:"Summa",select_an_item:"Skriv eller klicka för att välja artikel",type_item_description:"Skriv in artikelns beskrivning (frivilligt)"},mark_as_default_estimate_template_description:"If enabled, the selected template will be automatically selected for new estimates."},tae={title:"Fakturor",download:"Download",pay_invoice:"Pay Invoice",invoices_list:"Fakturor",invoice_information:"Invoice Information",days:"{days} dagar",months:"{months} månader",years:"{years} år",all:"Alla",paid:"Betalda",unpaid:"Obetalda",viewed:"Visade",overdue:"Förfallna",completed:"Slutförda",customer:"KUNDER",paid_status:"BETALSTATUS",ref_no:"REF NR.",number:"NUMMER",amount_due:"FÖRFALLET BELOPP",partially_paid:"Delbetald",total:"Summa",discount:"Rabatt",sub_total:"Delsumma",invoice:"Faktura | Fakturor",invoice_number:"Fakturanummer",ref_number:"Ref Nummer",contact:"Kontakt",add_item:"Lägg till artikel",date:"Datum",due_date:"Förfallodatum",status:"Status",add_tax:"Lägg till moms",amount:"Summa",action:"Handling",notes:"Noteringar",view:"Visa",send_invoice:"Skicka faktura",resend_invoice:"Skicka faktura igen",invoice_template:"Fakturamall",conversion_message:"Fakturan kopierades",template:"Mall",mark_as_sent:"Markera som skickad",confirm_send_invoice:"Denna faktura skickas via epost till kunden",invoice_mark_as_sent:"Denna faktura markeras som skickad",confirm_mark_as_accepted:"Denna faktura kommer att markeras som Godkänd",confirm_mark_as_rejected:"Denna faktura kommer att markeras som Avvisad",confirm_send:"Denna faktura skickas via epost till kunden",invoice_date:"Fakturadatum",record_payment:"Registrera betalning",add_new_invoice:"Lägg till ny faktura",update_expense:"Ändra utgifter",edit_invoice:"Editera faktura",new_invoice:"Ny faktura",save_invoice:"Spara faktura",update_invoice:"Uppdatera faktura",add_new_tax:"Lägg till ny momssats",no_invoices:"Inga fakturor än!",mark_as_rejected:"Markera som avvisad",mark_as_accepted:"Markera som godkänd",list_of_invoices:"Här kommer det vara en lista med fakturor.",select_invoice:"Välj faktura",no_matching_invoices:"Inga matchande fakturor!",mark_as_sent_successfully:"Fakturans status ändrad till skickad",invoice_sent_successfully:"Fakturan skickades",cloned_successfully:"Fakturan kopierades",clone_invoice:"Kopiera faktura",confirm_clone:"Denna faktura kopieras till en ny faktura",item:{title:"Artikelnamn",description:"Beskvirning",quantity:"Antal",price:"Pris",discount:"Rabatt",total:"Summa",total_discount:"Totalsumma",sub_total:"Delsumma",tax:"Moms",amount:"Summa",select_an_item:"Skriv eller klicka för att välja artikel",type_item_description:"Artikeltypsbeskrivning (frivillig)"},payment_attached_message:"En av dom valda fakturorna har redan en betalning kopplad till sig. Du måste radera dom kopplade betalningarna först för att kunna fortsätta raderingen",confirm_delete:"Du kommer inte kunna återställa denna faktura | Du kommer inte kunna återställa dessa fakturor",created_message:"Faktura skapades",updated_message:"Faktura uppdaterades",deleted_message:"Faktura raderades | fakturor raderades",marked_as_sent_message:"Faktura markerad som skickad",something_went_wrong:"något blev fel",invalid_due_amount_message:"Totalsumman för fakturan kan inte vara lägra än den betalda summan. Vänligen uppdatera fakturan eller radera dom kopplade betalningarna.",mark_as_default_invoice_template_description:"If enabled, the selected template will be automatically selected for new invoices."},aae={title:"Återkommande fakturor",invoices_list:"Återkommande fakturor",days:"{days} Dagar",months:"{months} Månader",years:"{years} År",all:"Alla",paid:"Betalda",unpaid:"Obetalda",viewed:"Visade",overdue:"Försenade",active:"Aktiva",completed:"Slutförda",customer:"KUND",paid_status:"BETALSTATUS",ref_no:"REF NR.",number:"NUMMER",amount_due:"FÖRFALLET BELOPP",partially_paid:"Delbetald",total:"Summa",discount:"Rabatt",sub_total:"Delsumma",invoice:"Recurring Invoice | Recurring Invoices",invoice_number:"Recurring Invoice Number",next_invoice_date:"Next Invoice Date",ref_number:"Ref Number",contact:"Contact",add_item:"Add an Item",date:"Date",limit_by:"Limit by",limit_date:"Limit Date",limit_count:"Limit Count",count:"Count",status:"Status",select_a_status:"Select a status",working:"Working",on_hold:"On Hold",complete:"Completed",add_tax:"Add Tax",amount:"Amount",action:"Action",notes:"Notes",view:"View",basic_info:"Basic Info",send_invoice:"Send Recurring Invoice",auto_send:"Auto Send",resend_invoice:"Resend Recurring Invoice",invoice_template:"Recurring Invoice Template",conversion_message:"Recurring Invoice cloned successful",template:"Template",mark_as_sent:"Mark as sent",confirm_send_invoice:"This recurring invoice will be sent via email to the customer",invoice_mark_as_sent:"This recurring invoice will be marked as sent",confirm_send:"This recurring invoice will be sent via email to the customer",starts_at:"Start Date",due_date:"Invoice Due Date",record_payment:"Record Payment",add_new_invoice:"Add New Recurring Invoice",update_expense:"Update Expense",edit_invoice:"Edit Recurring Invoice",new_invoice:"New Recurring Invoice",send_automatically:"Send Automatically",send_automatically_desc:"Enable this, if you would like to send the invoice automatically to the customer when its created.",save_invoice:"Save Recurring Invoice",update_invoice:"Update Recurring Invoice",add_new_tax:"Add New Tax",no_invoices:"No Recurring Invoices yet!",mark_as_rejected:"Mark as rejected",mark_as_accepted:"Mark as accepted",list_of_invoices:"This section will contain the list of recurring invoices.",select_invoice:"Select Invoice",no_matching_invoices:"There are no matching recurring invoices!",mark_as_sent_successfully:"Recurring Invoice marked as sent successfully",invoice_sent_successfully:"Recurring Invoice sent successfully",cloned_successfully:"Recurring Invoice cloned successfully",clone_invoice:"Clone Recurring Invoice",confirm_clone:"This recurring invoice will be cloned into a new Recurring Invoice",add_customer_email:"Please add an email address for this customer to send invoices automatically.",item:{title:"Item Title",description:"Description",quantity:"Quantity",price:"Price",discount:"Discount",total:"Total",total_discount:"Total Discount",sub_total:"Sub Total",tax:"Tax",amount:"Amount",select_an_item:"Type or click to select an item",type_item_description:"Type Item Description (optional)"},frequency:{title:"Frequency",select_frequency:"Select Frequency",minute:"Minute",hour:"Hour",day_month:"Day of month",month:"Month",day_week:"Day of week"},confirm_delete:"You will not be able to recover this Invoice | You will not be able to recover these Invoices",created_message:"Recurring Invoice created successfully",updated_message:"Recurring Invoice updated successfully",deleted_message:"Recurring Invoice deleted successfully | Recurring Invoices deleted successfully",marked_as_sent_message:"Recurring Invoice marked as sent successfully",user_email_does_not_exist:"User email does not exist",something_went_wrong:"something went wrong",invalid_due_amount_message:"Total Recurring Invoice amount cannot be less than total paid amount for this Recurring Invoice. Please update the invoice or delete the associated payments to continue."},nae={title:"Betalningar",payments_list:"Lista med betalningar",record_payment:"Registrera betalning",customer:"Kund",date:"Datum",amount:"Summa",action:"Handling",payment_number:"Betalningsnummer",payment_mode:"Betalningssätt",invoice:"Faktura",note:"Notering",add_payment:"Skapa betalning",new_payment:"Ny betalning",edit_payment:"Ändra betalning",view_payment:"Visa betalning",add_new_payment:"Skapa ny betalning",send_payment_receipt:"Skicka kvitto på betalning",send_payment:"Skicka betalning",save_payment:"Spara betalning",update_payment:"Uppdatera betalning",payment:"Betalning | Betalningar",no_payments:"Inga betalningar än!",not_selected:"Ej markerad",no_invoice:"Ingen faktura",no_matching_payments:"Inga matchande betalningar!",list_of_payments:"Här kommer listan med betalningar finnas.",select_payment_mode:"Välj betalningssätt",confirm_mark_as_sent:"Detta kostnadsförslag markeras som skickat",confirm_send_payment:"Denna betalning skickas till kunden via epost",send_payment_successfully:"Betalningen skickades",something_went_wrong:"något gick fel",confirm_delete:"Du kommer inte kunna återställa denna betalning | Du kommer inte kunna återställa dessa betalningar",created_message:"Betalning skapades",updated_message:"Betalning uppdaterades",deleted_message:"Betalning raderades | Betalningar raderades",invalid_amount_message:"Betalsumman är ogiltig"},iae={title:"Utgifter",expenses_list:"Lista med utgifter",select_a_customer:"Välj en kund",expense_title:"Titel",customer:"Kund",currency:"Currency",contact:"Kontakt",category:"Kategori",from_date:"Från datum",to_date:"Till datum",expense_date:"Datum",description:"Beskrivning",receipt:"Kvitto",amount:"Summa",action:"Handling",not_selected:"Ej markerad",note:"Notering",category_id:"Kategorins ID",date:"Datum",add_expense:"Lägg till utgift",add_new_expense:"Lägg till ny utgift",save_expense:"Spara utgift",update_expense:"Uppdatera utgift",download_receipt:"Ladda ner kvitto",edit_expense:"Ändra utgift",new_expense:"Ny utgift",expense:"Utgift | Utgifter",no_expenses:"Inga utgifter än!",list_of_expenses:"Här kommer utgifterna finnas.",confirm_delete:"Du kommer inte kunna återställa denna utgift | Du kommer inte kunna återställa dessa utgifter",created_message:"Utgift skapades",updated_message:"Utgift ändrades",deleted_message:"Utgift raderades | utgifterna raderades",categories:{categories_list:"Kategorier",title:"Titel",name:"Namn",description:"Beskrivning",amount:"Summa",actions:"Handlingar",add_category:"Lägg till kategori",new_category:"Ny kategori",category:"Kategori | Kategorier",select_a_category:"Välj en kategori"}},oae={email:"Epost",password:"Lösenord",forgot_password:"Glömt lösenord?",or_signIn_with:"eller logga in med",login:"Logga in",register:"Registrera",reset_password:"Återställ lösenord",password_reset_successfully:"Lösenord återställt",enter_email:"Skriv in epost",enter_password:"Skriv in lösenord",retype_password:"Skriv lösenordet igen"},sae={buy_now:"Buy Now",install:"Install",price:"Price",download_zip_file:"Download ZIP file",unzipping_package:"Unzipping Package",copying_files:"Copying Files",deleting_files:"Deleting Unused files",completing_installation:"Completing Installation",update_failed:"Update Failed",install_success:"Module has been installed successfully!",customer_reviews:"Reviews",license:"License",faq:"FAQ",monthly:"Monthly",yearly:"Yearly",updated:"Updated",version:"Version",disable:"Disable",module_disabled:"Module Disabled",enable:"Enable",module_enabled:"Module Enabled",update_to:"Update To",module_updated:"Module Updated Successfully!",title:"Modules",module:"Module | Modules",api_token:"API token",invalid_api_token:"Invalid API Token.",other_modules:"Other Modules",view_all:"View All",no_reviews_found:"There are no reviews for this module yet!",module_not_purchased:"Module Not Purchased",module_not_found:"Module Not Found",version_not_supported:"This module version doesn't support the current version of InvoiceShelf",last_updated:"Last Updated On",connect_installation:"Connect your installation",api_token_description:"Login to {url} and connect this installation by entering the API Token. Your purchased modules will show up here after the connection is established.",view_module:"View Module",update_available:"Update Available",purchased:"Purchased",installed:"Installed",no_modules_installed:"No Modules Installed Yet!",disable_warning:"All the settings for this particular will be reverted.",what_you_get:"What you get"},rae={title:"Användare",users_list:"Användare",name:"Namn",description:"Beskrivning",added_on:"Tillagd den",date_of_creation:"Datum skapad",action:"Handling",add_user:"Lägg till användare",save_user:"Spara användare",update_user:"Uppdatera användare",user:"Användare | Användare",add_new_user:"Lägg till ny användare",new_user:"Ny användare",edit_user:"Ändra användare",no_users:"Inga användare än!",list_of_users:"Här kommer man se alla användare.",email:"Epost",phone:"Telefon",password:"Lösenord",user_attached_message:"Kan inte ta bort ett objeckt som används",confirm_delete:"Du kommer inte kunna återställa denna användare | Du kommer inte kunna återställa dessa användare",created_message:"Användare skapades",updated_message:"Användare uppdaterades",deleted_message:"Användaren raderades | Användarna raderades",select_company_role:"Select Role for {company}",companies:"Companies"},lae={title:"Rapport",from_date:"Från datum",to_date:"Till datum",status:"Status",paid:"Betald",unpaid:"Obetald",download_pdf:"Ladda ner PDF",view_pdf:"Visa PDF",update_report:"Uppdatera rapport",report:"Rapport | Rapporter",profit_loss:{profit_loss:"Inkomst och utgifter",to_date:"Till datum",from_date:"Från datum",date_range:"Välj datumintervall"},sales:{sales:"Försäljningar",date_range:"Välj datumintervall",to_date:"Till datum",from_date:"Från datum",report_type:"Rapporttyp"},taxes:{taxes:"Momssatser",to_date:"Till datum",from_date:"Från datum",date_range:"Välj datumintervall"},errors:{required:"Fältet är tvingande"},invoices:{invoice:"Faktura",invoice_date:"Fakturadatum",due_date:"Förfallodatum",amount:"Summa",contact_name:"Kontaktnamn",status:"Status"},estimates:{estimate:"Kostnadsförslag",estimate_date:"Kostnadsförslagsdatum",due_date:"Förfallodatum",estimate_number:"Kostnadsförslagsnummer",ref_number:"Ref Nummer",amount:"Summa",contact_name:"Kontaktnamn",status:"Status"},expenses:{expenses:"Utgifter",category:"Kategori",date:"Datum",amount:"Summa",to_date:"Till datum",from_date:"Från datum",date_range:"Välj datumintervall"}},cae={menu_title:{account_settings:"Kontoinställningar",company_information:"Företagsinformation",customization:"Anpassning",preferences:"Inställningar",notifications:"Notifieringar",tax_types:"Momssatser",expense_category:"Utgiftskategorier",update_app:"Uppdatera appen",backup:"Backup",file_disk:"File Disk",custom_fields:"Anpassade fält",payment_modes:"Betalmetoder",notes:"Noteringar",exchange_rate:"Exchange Rate",address_information:"Address Information"},address_information:{section_description:" You can update Your Address information using form below."},title:"Inställningar",setting:"Inställningar | Inställningar",general:"Allmän",language:"Språk",primary_currency:"Primär valuta",timezone:"Tidszon",date_format:"Datumformat",currencies:{title:"Valutor",currency:"Valuta | Valutor",currencies_list:"Lista med valutor",select_currency:"Välj valuta",name:"Namn",code:"Kod",symbol:"Symbol",precision:"Precision",thousand_separator:"Tusenavgränsare",decimal_separator:"Decimalavgränsare",position:"Position",position_of_symbol:"Symbolens position",right:"Höger",left:"Vänster",action:"Handling",add_currency:"Lägg till valuta"},mail:{host:"Värdadress",port:"Port",driver:"Typ",secret:"Hemlighet",mailgun_secret:"Mailgun Secret",mailgun_domain:"Domän",mailgun_endpoint:"Mailgun Endpoint",ses_secret:"SES Secret",ses_key:"SES Key",password:"Lösenord",username:"Användarnamn",mail_config:"Epostinställningar",from_name:"Från namn",from_mail:"Från adress",encryption:"Kryptering",mail_config_desc:"Nedan formulär används för att konfigurera vilket sätt som ska användar för att skicka epost. Du kan också använda tredjepartsleverantör som Sendgrid, SES o.s.v."},pdf:{title:"PDF-inställningar",footer_text:"Sidfotstext",pdf_layout:"PDF-layout"},company_info:{company_info:"Företagsinfo",company_name:"Företagsnamn",company_logo:"Företagslogga",section_description:"Information om ditt företags som kommer visas på fakturor, kostnadsförslag och andra dokument skapade av InvoiceShelf.",phone:"Telefon",country:"Land",state:"Kommun",city:"Stad",address:"Adress",zip:"Postnr",save:"Spara",delete:"Delete",updated_message:"Företagsinformation uppdaterad",delete_company:"Delete Company",delete_company_description:"Once you delete your company, you will lose all the data and files associated with it permanently.",are_you_absolutely_sure:"Are you absolutely sure?",delete_company_modal_desc:"This action cannot be undone. This will permanently delete {company} and all of its associated data.",delete_company_modal_label:"Please type {company} to confirm"},custom_fields:{title:"Anpassade fält",section_description:"Anpassa fakturor, kostnadsförslag och kvitton med dina egna fält. Använd nedanstående fält i adressforamteringen på anpassningarnas inställningssida.",add_custom_field:"Lägg till anpassat fält",edit_custom_field:"Ändra anpassade fält",field_name:"Fältnamn",label:"Etikett",type:"Typ",name:"Namn",slug:"Slug",required:"Tvingad",placeholder:"Placeholder",help_text:"Hjälptext",default_value:"Standardvärde",prefix:"Prefix",starting_number:"Startnummer",model:"Modell",help_text_description:"Skriv in text som hjälper användaren förstå vad det anpassade fältet används för.",suffix:"Suffix",yes:"Ja",no:"Nej",order:"Ordning",custom_field_confirm_delete:"Du kommer inte kunna återställa detta anpassade fält",already_in_use:"Det anpassade fältet används",deleted_message:"Det anpassade fältet raderades",options:"val",add_option:"Lägg till val",add_another_option:"Lägg till ett till val",sort_in_alphabetical_order:"Sortera i alfabetisk ordning",add_options_in_bulk:"Lägg till flera val",use_predefined_options:"Använd förinställda val",select_custom_date:"Välj anpassat datum",select_relative_date:"Välj relativt datum",ticked_by_default:"Ikryssad från start",updated_message:"Anpassat fält uppdaterades",added_message:"Anpassat fält skapat",press_enter_to_add:"Press enter to add new option",model_in_use:"Cannot update model for fields which are already in use.",type_in_use:"Cannot update type for fields which are already in use."},customization:{customization:"Anpassning",updated_message:"Företagsinformation uppdaterades",save:"Spara",insert_fields:"Insert Fields",learn_custom_format:"Learn how to use custom format",add_new_component:"Add New Component",component:"Component",Parameter:"Parameter",series:"Series",series_description:"To set a static prefix/postfix like 'INV' across your company. It supports character length of up to 6 chars.",series_param_label:"Series Value",delimiter:"Delimiter",delimiter_description:"Single character for specifying the boundary between 2 separate components. By default its set to -",delimiter_param_label:"Delimiter Value",date_format:"Date Format",date_format_description:"A local date and time field which accepts a format parameter. The default format: 'Y' renders the current year.",date_format_param_label:"Format",sequence:"Sequence",sequence_description:"Consecutive sequence of numbers across your company. You can specify the length on the given parameter.",sequence_param_label:"Sequence Length",customer_series:"Customer Series",customer_series_description:"To set a different prefix/postfix for each customer.",customer_sequence:"Customer Sequence",customer_sequence_description:"Consecutive sequence of numbers for each of your customer.",customer_sequence_param_label:"Sequence Length",random_sequence:"Random Sequence",random_sequence_description:"Random alphanumeric string. You can specify the length on the given parameter.",random_sequence_param_label:"Sequence Length",invoices:{title:"Fakturor",invoice_number_format:"Invoice Number Format",invoice_number_format_description:"Customize how your invoice number gets generated automatically when you create a new invoice.",preview_invoice_number:"Preview Invoice Number",due_date:"Due Date",due_date_description:"Specify how due date is automatically set when you create an invoice.",due_date_days:"Invoice Due after days",set_due_date_automatically:"Set Due Date Automatically",set_due_date_automatically_description:"Enable this if you wish to set due date automatically when you create a new invoice.",default_formats:"Default Formats",default_formats_description:"Below given formats are used to fill up the fields automatically on invoice creation.",default_invoice_email_body:"Standardtext för faktura",company_address_format:"Formatering av företagsadress",shipping_address_format:"Formatering av leveransadress",billing_address_format:"Formatering av fakturaadress",invoice_email_attachment:"Skicka fakturor som bilagor",invoice_email_attachment_setting_description:'Aktivera detta om du vill skicka fakturor som e-postbilaga. Observera att knappen "Visa faktura" i e-post inte längre kommer att visas när den är aktiverad.',invoice_settings_updated:"Invoice Settings updated successfully",retrospective_edits:"Retrospective Edits",allow:"Allow",disable_on_invoice_partial_paid:"Disable after partial payment is recorded",disable_on_invoice_paid:"Disable after full payment is recorded",disable_on_invoice_sent:"Disable after invoice is sent",retrospective_edits_description:" Based on your country's laws or your preference, you can restrict users from editing finalised invoices."},estimates:{title:"Kostnadsförslag",estimate_number_format:"Estimate Number Format",estimate_number_format_description:"Customize how your estimate number gets generated automatically when you create a new estimate.",preview_estimate_number:"Preview Estimate Number",expiry_date:"Expiry Date",expiry_date_description:"Specify how expiry date is automatically set when you create an estimate.",expiry_date_days:"Estimate Expires after days",set_expiry_date_automatically:"Set Expiry Date Automatically",set_expiry_date_automatically_description:"Enable this if you wish to set expiry date automatically when you create a new estimate.",default_formats:"Default Formats",default_formats_description:"Below given formats are used to fill up the fields automatically on estimate creation.",default_estimate_email_body:"Standardtext för kostnadsförslag",company_address_format:"Formatering av företagsadress",shipping_address_format:"Formatering av leveransadress",billing_address_format:"Formatering av fakturaadress",estimate_email_attachment:"Send estimates as attachments",estimate_email_attachment_setting_description:'Aktivera detta om du vill skicka offerterna som en e-postbilaga. Observera att knappen "Visa offert" i e-post inte längre kommer att visas när den är aktiverad.',estimate_settings_updated:"Estimate Settings updated successfully",convert_estimate_options:"Estimate Convert Action",convert_estimate_description:"Specify what happens to the estimate after it gets converted to an invoice.",no_action:"No action",delete_estimate:"Delete estimate",mark_estimate_as_accepted:"Mark estimate as accepted"},payments:{title:"Betalningar",payment_number_format:"Payment Number Format",payment_number_format_description:"Customize how your payment number gets generated automatically when you create a new payment.",preview_payment_number:"Preview Payment Number",default_formats:"Default Formats",default_formats_description:"Below given formats are used to fill up the fields automatically on payment creation.",default_payment_email_body:"Standardtext för betalningar",company_address_format:"Format för företagsadress",from_customer_address_format:"Format för kundens från-adress",payment_email_attachment:"Skicka betalningar som bilagor",payment_email_attachment_setting_description:'Aktivera detta om du vill skicka betalningskvitton som en e-postbilaga. Observera att knappen "Visa betalning" i e-post inte längre kommer att visas när den är aktiverad.',payment_settings_updated:"Payment Settings updated successfully"},items:{title:"Artiklar",units:"Enheter",add_item_unit:"Lägg till artikelenhet",edit_item_unit:"Editera artikelenhet",unit_name:"Enhets namn",item_unit_added:"Artikelenhet tillagd",item_unit_updated:"Artikelenhet uppdaterad",item_unit_confirm_delete:"Du kommer inte kunna återställa denna artikelenhet",already_in_use:"Artikelenhet används",deleted_message:"Artikelenhet raderades"},notes:{title:"Noteringar",description:"Spara tid genom att skapa noteringar som kan återanvändas på fakturor, betalningsförslag, och betalningar.",notes:"Noteringar",type:"Typ",add_note:"Lägg till notering",add_new_note:"Lägg till ny notering",name:"Namn",edit_note:"Editera notering",note_added:"Notering skapades",note_updated:"Notering uppdaterades",note_confirm_delete:"Du kommer inte kunna återställa denna notering",already_in_use:"Notering används",deleted_message:"Notering raderades"}},account_settings:{profile_picture:"Profilbild",name:"Namn",email:"Epost",password:"Lösenord",confirm_password:"Bekräfta lösenord",account_settings:"Kontoinställningar",save:"Spara",section_description:"Du kan uppdatera namn, epost och lösenord med hjälp av formuläret nedan.",updated_message:"Kontoinställningar uppdaterades"},user_profile:{name:"Namn",email:"Epost",password:"Lösenord",confirm_password:"Bekräfta lösenord"},notification:{title:"Notifieringar",email:"Skicka notifiering till",description:"Vilka notifieringar vill du ha via epost när något ändras?",invoice_viewed:"Faktura kollad",invoice_viewed_desc:"När din kund kollar fakturan via invoiceshelfs översikt.",estimate_viewed:"Betalförslag kollad",estimate_viewed_desc:"När din kund kollar betalförslag via invoiceshelfs översikt.",save:"Spara",email_save_message:"Epost sparades",please_enter_email:"Skriv in epostadress"},roles:{title:"Roles",description:"Manage the roles & permissions of this company",save:"Save",add_new_role:"Add New Role",role_name:"Role Name",added_on:"Added on",add_role:"Add Role",edit_role:"Edit Role",name:"Name",permission:"Permission | Permissions",select_all:"Select All",none:"None",confirm_delete:"You will not be able to recover this Role",created_message:"Role created successfully",updated_message:"Role updated successfully",deleted_message:"Role deleted successfully",already_in_use:"Role is already in use"},exchange_rate:{exchange_rate:"Exchange Rate",title:"Fix Currency Exchange issues",description:"Please enter exchange rate of all the currencies mentioned below to help InvoiceShelf properly calculate the amounts in {currency}.",drivers:"Drivers",new_driver:"Add New Provider",edit_driver:"Edit Provider",select_driver:"Select Driver",update:"select exchange rate ",providers_description:"Configure your exchange rate providers here to automatically fetch the latest exchange rate on transactions.",key:"API Key",name:"Name",driver:"Driver",is_default:"IS DEFAULT",currency:"Currencies",exchange_rate_confirm_delete:"You will not be able to recover this driver",created_message:"Provider Created successfully",updated_message:"Provider Updated Successfully",deleted_message:"Provider Deleted Successfully",error:" You cannot Delete Active Driver",default_currency_error:"This currency is already used in one of the Active Provider",exchange_help_text:"Enter exchange rate to convert from {currency} to {baseCurrency}",currency_freak:"Currency Freak",currency_layer:"Currency Layer",open_exchange_rate:"Open Exchange Rate",currency_converter:"Currency Converter",server:"Server",url:"URL",active:"Active",currency_help_text:"This provider will only be used on above selected currencies",currency_in_used:"The following currencies are already active on another provider. Please remove these currencies from selection to activate this provider again."},tax_types:{title:"Momssatser",add_tax:"Lägg till moms",edit_tax:"Ändra moms",description:"Du kan lägga till och ta bort momssatser som du vill. InvoiceShelf har stöd för moms per artikel men även per faktura.",add_new_tax:"Lägg till ny momssats",tax_settings:"Momssattsinställningar",tax_per_item:"Moms per artikel",tax_name:"Namn",compound_tax:"Sammansatt moms",percent:"Procent",action:"Handling",tax_setting_description:"Aktivera detta om du vill lägga till momssats på individuella fakturaartiklar. Som standard sätts moms direkt på fakturan.",created_message:"Momssats skapades",updated_message:"Momssats uppdaterades",deleted_message:"Momssats raderades",confirm_delete:"Du kommer inte kunna återställa denna Momssats",already_in_use:"Momssats används"},payment_modes:{title:"Payment Modes",description:"Modes of transaction for payments",add_payment_mode:"Add Payment Mode",edit_payment_mode:"Edit Payment Mode",mode_name:"Mode Name",payment_mode_added:"Payment Mode Added",payment_mode_updated:"Payment Mode Updated",payment_mode_confirm_delete:"You will not be able to recover this Payment Mode",payments_attached:"This payment method is already attached to payments. Please delete the attached payments to proceed with deletion.",expenses_attached:"This payment method is already attached to expenses. Please delete the attached expenses to proceed with deletion.",deleted_message:"Payment Mode deleted successfully"},expense_category:{title:"Kategorier för utgifter",action:"Handling",description:"Kategorier krävs för att lägga till utgifter. Du kan lägga till och ta bort dessa kategorier som du vill",add_new_category:"Lägg till ny kategori",add_category:"Lägg till kategori",edit_category:"Ändra kategori",category_name:"Kategorinamn",category_description:"Beskrivning",created_message:"Utgiftskategori skapades",deleted_message:"Utgiftskategori raderades",updated_message:"Utgiftskategori uppdaterades",confirm_delete:"Du kommer inte kunna återställa denna utgiftskategori",already_in_use:"Kategorin används"},preferences:{currency:"Valuta",default_language:"Standardspråk",time_zone:"Tidszon",fiscal_year:"Räkenskapsår",date_format:"Datumformattering",discount_setting:"Rabattinställningar",discount_per_item:"Rabatt per artikel ",discount_setting_description:"Aktivera detta om du vill kunna lägga rabatt på enskilda fakturaartiklar. Rabatt ges som standard på hela fakturan.",expire_public_links:"Automatically Expire Public Links",expire_setting_description:"Specify whether you would like to expire all the links sent by application to view invoices, estimates & payments, etc after a specified duration.",save:"Spara",preference:"Preferens | Preferenser",general_settings:"Standardpreferenser för systemet.",updated_message:"Preferenser uppdaterades",select_language:"Välj språk",select_time_zone:"Välj tidszon",select_date_format:"Välj datumformat",select_financial_year:"Välj räkenskapsår",recurring_invoice_status:"Recurring Invoice Status",create_status:"Create Status",active:"Active",on_hold:"On Hold",update_status:"Update Status",completed:"Completed",company_currency_unchangeable:"Company currency cannot be changed"},update_app:{title:"Uppdatera applikationen",description:"Du kan enkelt uppdatera InvoiceShelf genom att söka efter uppdateringar via knappen nedan",check_update:"Sök efter uppdateringar",avail_update:"Uppdatering är tillgänglig",next_version:"Nästa version",requirements:"Krav",update:"Uppdatera nu",update_progress:"Uppdaterar...",progress_text:"Det kommer bara ta några minuter. Stäng eller uppdatera inte webläsaren förrän uppdateringen är färdig.",update_success:"Applikationen har uppdaterats! Vänta så kommer fönstret laddas om automatiskt..",latest_message:"Ingen uppdatering tillgänglig! Du har den senaste versionen.",current_version:"Nuvarande version",download_zip_file:"Ladda ner ZIP-fil",unzipping_package:"Zippar upp paket",copying_files:"Kopierar filer",deleting_files:"Tar bort oanvända filer",running_migrations:"Kör migreringar",finishing_update:"Avslutar uppdateringen",update_failed:"Uppdatering misslyckades",update_failed_text:"Uppdateringen misslyckades på steg : {step} step",update_warning:"All of the application files and default template files will be overwritten when you update the application using this utility. Please take a backup of your templates & database before updating."},backup:{title:"Säkerhetskopiering | Säkerhetskopieringar",description:"Säkerhetskopian är en zip-fil som innehåller alla filer i katalogerna du väljer samt en kopia av databasen",new_backup:"Skapa ny säkerhetskopia",create_backup:"Skapa säkerhetskopia",select_backup_type:"Välj typ av säkerhetskopia",backup_confirm_delete:"Du kommer inte kunna återställa denna säkerhetskopia",path:"sökväg",new_disk:"Ny disk",created_at:"skapad den",size:"storlek",dropbox:"dropbox",local:"lokal",healthy:"hälsosam",amount_of_backups:"antal säkerhetskopior",newest_backups:"senaste säkerhetskopiorna",used_storage:"använt utrymme",select_disk:"Välj disk",action:"Handling",deleted_message:"Säkerhetskopia raderad",created_message:"Säkerhetskopia skapades",invalid_disk_credentials:"Ogiltiga autentiseringsuppgifter för den valda disken"},disk:{title:"Lagring | Lagringar",description:"InvoiceShelf använder din lokala disk som standard för att spara säkerhetskopior, avatarer och andra bildfiler. Du kan ställa in fler lagringsenheter såsom DigitalOcean, S3 och Dropbox beroende av ditt behov.",created_at:"skapad den",dropbox:"dropbox",name:"Namn",driver:"Plats",disk_type:"Typ",disk_name:"Lagringsenhetsnamn",new_disk:"Lägg till ny lagringsenhet",filesystem_driver:"Enhetsplats",local_driver:"Lokal enhet",local_root:"Sökväg på lokal enhet",public_driver:"Offentlig drivrutin",public_root:"Offentlig rot",public_url:"Offentlig URL",public_visibility:"Offentlig synlighet",media_driver:"Mediaenhet",media_root:"Media Root",aws_driver:"AWS",aws_key:"Nyckel",aws_secret:"Lösenord",aws_region:"Region",aws_bucket:"Bucket",aws_root:"Sökväg",do_spaces_type:"Do Spaces type",do_spaces_key:"Nyckel",do_spaces_secret:"Lösenord",do_spaces_region:"Region",do_spaces_bucket:"Bucket",do_spaces_endpoint:"Endpoint",do_spaces_root:"Sökväg",dropbox_type:"Typ",dropbox_token:"Token",dropbox_key:"Nyckel",dropbox_secret:"Lösenord",dropbox_app:"App",dropbox_root:"Sökväg",default_driver:"Standard",is_default:"Är standard",set_default_disk:"Välj som standard",set_default_disk_confirm:"Denna disk kommer bli standard och alla nya PFDer blir sparade här",success_set_default_disk:"Disk vald som standard",save_pdf_to_disk:"Spara PDFer till disk",disk_setting_description:"Aktivera detta om du vill ha en kopia av varje faktura, kostnadsförslag, och betalningskvitto som PDF på din standard disk automatiskt.Aktiverar du denna funktion så kommer laddtiderna för visning av PDFer minskas.",select_disk:"Välj Disk",disk_settings:"Diskinställningar",confirm_delete:"Dina existerande filer och kataloger på den valda disken kommer inte påverkas men inställningarna för disken raderas från InvoiceShelf",action:"Handling",edit_file_disk:"Ändra disk",success_create:"Disk skapades",success_update:"Disk uppdaterades",error:"Fel vid skapande av disk",deleted_message:"Disk raderades",disk_variables_save_successfully:"Diskinställningar sparades",disk_variables_save_error:"Något gick fel vid sparning av diskinställningar",invalid_disk_credentials:"Felaktiga uppgifter vid val av disk"},taxations:{add_billing_address:"Enter Billing Address",add_shipping_address:"Enter Shipping Address",add_company_address:"Enter Company Address",modal_description:"The information below is required in order to fetch sales tax.",add_address:"Add Address for fetching sales tax.",address_placeholder:"Example: 123, My Street",city_placeholder:"Example: Los Angeles",state_placeholder:"Example: CA",zip_placeholder:"Example: 90024",invalid_address:"Please provide valid address details."}},dae={account_info:"Kontoinformation",account_info_desc:"Nedan detaljer används för att skapa huvudadministratörskonto. Du kan ändra detta i efterhand.",name:"Namn",email:"Epost",password:"Lösenord",confirm_password:"Bekräfta lösenord",save_cont:"Spara och fortsätt",company_info:"Företagsinformation",company_info_desc:"Denna information visas på fakturor. Du kan ändra detta i efterhand på sidan för inställningar.",company_name:"Företagsnamn",company_logo:"Företagslogga",logo_preview:"Förhandsvisning av logga",preferences:"Inställningar",preferences_desc:"Standardinställningar för systemet.",currency_set_alert:"The company's currency cannot be changed later.",country:"Land",state:"Kommun",city:"Stad",address:"Adress",street:"Gatuadress1 | Gatuadress2",phone:"Telefon",zip_code:"Postnr",go_back:"Tillbaka",currency:"Valuta",language:"Språk",time_zone:"Tidszon",fiscal_year:"Räkenskapsår",date_format:"Datumformat",from_address:"Från adress",username:"Användarnamn",next:"Nästa",continue:"Fortsätt",skip:"Hoppa över",database:{database:"Sidans URL & Databas",connection:"Databasanslutning",host:"Värdadress till databasen",port:"Port till databasen",password:"Lösenord till databasen",app_url:"Appens URL",app_domain:"Appens Domän",username:"Användarnamn till databasen",db_name:"Databasens namn",db_path:"Databasens sökväg",desc:"Skapa en database på din server och ställ in autentiseringsuppgifter i formuläret nedan."},permissions:{permissions:"Behörigheter",permission_confirm_title:"Är du säker på att du vill fortsätta?",permission_confirm_desc:"Fel behörigheter vid kontroll på katalogen",permission_desc:"Nedan är en lista på katalogrättigheter som krävs för att denna app ska fungera. Om behörighetskontrollen misslyckas, uppdatera behörigheterna för katalogerna."},verify_domain:{title:"Domain Verification",desc:"InvoiceShelf uses Session based authentication which requires domain verification for security purposes. Please enter the domain on which you will be accessing your web application.",app_domain:"App Domain",verify_now:"Verify Now",success:"Domain Verify Successfully.",failed:"Domain verification failed. Please enter valid domain name.",verify_and_continue:"Verify And Continue"},mail:{host:"Värdadress till epost",port:"Port till epost",driver:"Typ",secret:"Hemlighet",mailgun_secret:"Hemlighet",mailgun_domain:"Domän",mailgun_endpoint:"Endpoint",ses_secret:"Hemlighet",ses_key:"Nyckel",password:"Lösenord",username:"Användarnamn",mail_config:"Epostinställningar",from_name:"Namn som står vid utgående epost",from_mail:"Epostadress som används som returadress vid utgående epost",encryption:"Epostkryptering",mail_config_desc:"Nedan formulär används för att konfigurera vilket sätt som ska användar för att skicka epost. Du kan också använda tredjepartsleverantör som Sendgrid, SES o.s.v."},req:{system_req:"Systemkrav",php_req_version:"Php (version {version} krävs)",check_req:"Kontrollera krav",system_req_desc:"InvoiceShelf har några krav på din server. Kontrollera att din server har den nödvändiga versionen av PHP och alla tillägg som nämns nedan."},errors:{migrate_failed:"Migration misslyckades",database_variables_save_error:"Kan inte skriva till .env-filen. Kontrollera dina behörigheter till filen",mail_variables_save_error:"Epostinställningar misslyckades.",connection_failed:"Databasanslutning misslyckades",database_should_be_empty:"Databasen måste vara tom"},success:{mail_variables_save_successfully:"Epostinställningar sparades.",database_variables_save_successfully:"Databasinställningar sparades."}},uae={invalid_phone:"Felaktigt telefonnummer",invalid_url:"Felaktig url (ex: http://www.invoiceshelf.com)",invalid_domain_url:"Felaktig url (ex: invoiceshelf.com)",required:"Fältet är tvingande",email_incorrect:"Felaktig epostadress.",email_already_taken:"Denna epostadress finns redan.",email_does_not_exist:"Användare med den epostadressen finns inte",item_unit_already_taken:"Detta artikelenhetsnamn finns redan",payment_mode_already_taken:"Betalningsmetodsnamnet finns redan",send_reset_link:"Skicka länk för återställning",not_yet:"Inte än? Skicka igen",password_min_length:"Lösenordet måste innehålla {count} tecken",name_min_length:"Namn måste ha minst {count} bokstäver.",prefix_min_length:"Prefix must have at least {count} letters.",enter_valid_tax_rate:"Skriv in tillåten momssats",numbers_only:"Endast siffror.",characters_only:"Endast bokstäver.",password_incorrect:"Lösenorden måste överensstämma",password_length:"Lösenordet måste vara minst {count} tecken.",qty_must_greater_than_zero:"Antal måste vara större än noll.",price_greater_than_zero:"Pris måste vara större än noll.",payment_greater_than_zero:"Betalningen måste vara större än noll.",payment_greater_than_due_amount:"Inslagen betalning är större än summan på denna faktura.",quantity_maxlength:"Antal kan inte vara större än 20 siffror.",price_maxlength:"Pris kan inte vara större än 20 siffror.",price_minvalue:"Pris måste vara större än 0.",amount_maxlength:"Belopp kan inte vara större än 20 siffror.",amount_minvalue:"Belopp måste vara större än 9.",discount_maxlength:"Discount should not be greater than max discount",description_maxlength:"Beskrivning får inte innehålla fler än 255 tecken.",subject_maxlength:"Ämne får inte innehålla fler än 100 tecken.",message_maxlength:"Meddelande får inte innehålla fler än 255 tecken.",maximum_options_error:"Högst {max} val. Ta bort ett val för att kunna lägga till ett annat.",notes_maxlength:"Noteringar kan inte vara större än 255 tecken.",address_maxlength:"Adress kan inte vara större än 255 tecken.",ref_number_maxlength:"Referensnummer kan inte vara större än 255 tecken.",prefix_maxlength:"Prefix kan inte vara större än 5 tecken.",something_went_wrong:"något blev fel",number_length_minvalue:"Number length should be greater than 0",at_least_one_ability:"Please select atleast one Permission.",valid_driver_key:"Please enter a valid {driver} key.",valid_exchange_rate:"Please enter a valid exchange rate.",company_name_not_same:"Company name must match with given name."},_ae={starter_plan:"This feature is available on Starter plan and onwards!",invalid_provider_key:"Please Enter Valid Provider API Key.",estimate_number_used:"The estimate number has already been taken.",invoice_number_used:"The invoice number has already been taken.",payment_attached:"This invoice already has a payment attached to it. Make sure to delete the attached payments first in order to go ahead with the removal.",payment_number_used:"The payment number has already been taken.",name_already_taken:"The name has already been taken.",receipt_does_not_exist:"Receipt does not exist.",customer_cannot_be_changed_after_payment_is_added:"Customer cannot be change after payment is added",invalid_credentials:"Invalid Credentials.",not_allowed:"Not Allowed",login_invalid_credentials:"These credentials do not match our records.",enter_valid_cron_format:"Please enter a valid cron format",email_could_not_be_sent:"Email could not be sent to this email address.",invalid_address:"Please enter a valid address.",invalid_key:"Please enter valid key.",invalid_state:"Please enter a valid state.",invalid_city:"Please enter a valid city.",invalid_postal_code:"Please enter a valid zip.",invalid_format:"Please enter valid query string format.",api_error:"Server not responding.",feature_not_enabled:"Feature not enabled.",request_limit_met:"Api request limit exceeded.",address_incomplete:"Incomplete Address"},mae="Kostnadsförslag",pae="Kostnadsförslagsnummer",fae="Kostnadsförslagsdatum",hae="Utgångsdatum",gae="Faktura",vae="Fakturanummer",yae="Fakturadatum",bae="Inbetalningsdatum",kae="Noteringar",wae="Artiklar",Dae="Antal",xae="Kostnad",Sae="Rabatt",Pae="Belopp",Eae="Delsumma",zae="Summa",Aae="Payment",Cae="Betalningskvitto",Tae="Betalningsdatum",jae="Betalningsnummer",Nae="Betalningstyp",Iae="Belopp mottaget",Fae="Kostnadsrapport",Rae="Totalkostnad",Oae="Resultat- och förlustrapport",Mae="Sales Customer Report",$ae="Sales Item Report",Lae="Tax Summary Report",Bae="Inkomst",Uae="Nettoförtjänst",Vae="Försäljningsrapport: Per kund",qae="SUMMA FÖRSÄLJNINGAR",Wae="Försäljningsrapport: Per artikel",Hae="Momsrapport",Kae="SUMMA MOMS",Yae="Momssatser",Zae="Utgifter",Gae="Faktureras till,",Qae="Skickas till,",Jae="Från:",Xae="Tax",ene={navigation:Wte,general:Hte,dashboard:Kte,tax_types:Yte,global_search:Zte,company_switcher:Gte,dateRange:Qte,customers:Jte,items:Xte,estimates:eae,invoices:tae,recurring_invoices:aae,payments:nae,expenses:iae,login:oae,modules:sae,users:rae,reports:lae,settings:cae,wizard:dae,validation:uae,errors:_ae,pdf_estimate_label:mae,pdf_estimate_number:pae,pdf_estimate_date:fae,pdf_estimate_expire_date:hae,pdf_invoice_label:gae,pdf_invoice_number:vae,pdf_invoice_date:yae,pdf_invoice_due_date:bae,pdf_notes:kae,pdf_items_label:wae,pdf_quantity_label:Dae,pdf_price_label:xae,pdf_discount_label:Sae,pdf_amount_label:Pae,pdf_subtotal:Eae,pdf_total:zae,pdf_payment_label:Aae,pdf_payment_receipt_label:Cae,pdf_payment_date:Tae,pdf_payment_number:jae,pdf_payment_mode:Nae,pdf_payment_amount_received_label:Iae,pdf_expense_report_label:Fae,pdf_total_expenses_label:Rae,pdf_profit_loss_label:Oae,pdf_sales_customers_label:Mae,pdf_sales_items_label:$ae,pdf_tax_summery_label:Lae,pdf_income_label:Bae,pdf_net_profit_label:Uae,pdf_customer_sales_report:Vae,pdf_total_sales_label:qae,pdf_item_sales_label:Wae,pdf_tax_report_label:Hae,pdf_total_tax_label:Kae,pdf_tax_types_label:Yae,pdf_expenses_label:Zae,pdf_bill_to:Gae,pdf_ship_to:Qae,pdf_received_from:Jae,pdf_tax_label:Xae},tne={dashboard:"Hlavný Panel",customers:"Zákazníci",items:"Položky",invoices:"Faktúry","recurring-invoices":"Recurring Invoices",expenses:"Výdaje",estimates:"Cenové odhady",payments:"Platby",reports:"Reporty",settings:"Nastavenia",logout:"Odhlásiť sa",users:"Uživatelia",modules:"Modules"},ane={add_company:"Pridať firmu",view_pdf:"Zobraziť PDF",copy_pdf_url:"Kopírovať PDF adresu",download_pdf:"Stiahnuť PDF",save:"Uložiť",create:"Vytvoriť",cancel:"Zrušiť",update:"Aktualizovať",deselect:"Zrušiť výber",download:"Stiahnuť",from_date:"Od dátumu",to_date:"Do dátumu",from:"Od",to:"Pre",ok:"Ok",yes:"Yes",no:"No",sort_by:"Zoradiť podľa",ascending:"Vzostupne",descending:"Zostupne",subject:"Predmet",body:"Telo textu",message:"Správa",send:"Odoslať",preview:"Preview",go_back:"Späť",back_to_login:"Späť na prihlásenie?",home:"Domov",filter:"Filtrovať",delete:"Odstrániť",edit:"Upraviť",view:"Zobraziť",add_new_item:"Pridať novú položku",clear_all:"Vyčistiť všetko",showing:"Zobrazuje sa",of:"z",actions:"Akcie",subtotal:"MEDZISÚČET",discount:"ZĽAVA",fixed:"Pevné",percentage:"Percento",tax:"DAŇ",total_amount:"SUMA SPOLU",bill_to:"Fakturačná adresa",ship_to:"Adresa doručenia",due:"Termín",draft:"Koncept",sent:"Odoslané",all:"Všetko",select_all:"Vybrať všetky",select_template:"Select Template",choose_file:"Kliknite sem pre vybratie súboru",choose_template:"Vybrať vzhľad",choose:"Vybrať",remove:"Odstrániť",select_a_status:"Vyberte stav",select_a_tax:"Vyberte daň",search:"Hľadať",are_you_sure:"Ste si istý?",list_is_empty:"Zoznam je prázdny.",no_tax_found:"Žiadna daň nebola nájdená!",four_zero_four:"404",you_got_lost:"Ups! Stratili ste sa!",go_home:"Ísť domov",test_mail_conf:"Otestovať e-mailovú konfiguráciu",send_mail_successfully:"E-Mail odoslaný úspešne",setting_updated:"Nastavenia boli úspešne aktualizované",select_state:"Vyberte štát",select_country:"Vyberte krajinu",select_city:"Vyberte mesto",street_1:"Prvý riadok ulice",street_2:"Druhý riadok ulice",action_failed:"Akcia neúspešná",retry:"Skúsiť znova",choose_note:"Vyberte poznámku",no_note_found:"Neboli nájdené žiadne poznámky",insert_note:"Vlož poznámku",copied_pdf_url_clipboard:"Copied PDF url to clipboard!",copied_url_clipboard:"Copied url to clipboard!",docs:"Docs",do_you_wish_to_continue:"Do you wish to continue?",note:"Note",pay_invoice:"Pay Invoice",login_successfully:"Logged in successfully!",logged_out_successfully:"Logged out successfully",mark_as_default:"Mark as default"},nne={select_year:"Vyberte rok",cards:{due_amount:"Čiastka k zaplateniu",customers:"Zákazníci",invoices:"Faktúry",estimates:"Cenové odhady",payments:"Payments"},chart_info:{total_sales:"Predaje",total_receipts:"Doklady o zaplatení",total_expense:"Výdaje",net_income:"Čistý príjem",year:"Vyberte rok"},monthly_chart:{title:"Predaje a Výdaje"},recent_invoices_card:{title:"Splatné faktúry",due_on:"Termín splatenia",customer:"Zákazník",amount_due:"Čiastka k zaplateniu",actions:"Akcie",view_all:"Zobraziť všetko"},recent_estimate_card:{title:"Nedávne cenové odhady",date:"Dátum",customer:"Zákazník",amount_due:"Cena",actions:"Akcie",view_all:"Zobraziť všetky"}},ine={name:"Meno",description:"Popis",percent:"Percento",compound_tax:"Zložená daň"},one={search:"Hľadať...",customers:"Zákazníci",users:"Uživatelia",no_results_found:"Neboli nájdené žiadne výsledky"},sne={label:"SWITCH COMPANY",no_results_found:"No Results Found",add_new_company:"Add new company",new_company:"New company",created_message:"Company created successfully"},rne={today:"Today",this_week:"This Week",this_month:"This Month",this_quarter:"This Quarter",this_year:"This Year",previous_week:"Previous Week",previous_month:"Previous Month",previous_quarter:"Previous Quarter",previous_year:"Previous Year",custom:"Custom"},lne={title:"Zákazníci",prefix:"Prefix",add_customer:"Pridať Zákazníka",contacts_list:"Zoznam zákazníkov",name:"Meno",mail:"E-mail | E-maily",statement:"Výpis",display_name:"Zobrazované meno",primary_contact_name:"Meno Primárneho Kontaktu",contact_name:"Meno Kontaktu",amount_due:"Čiastka k zaplateniu",email:"E-mail",address:"Adresa",phone:"Telefón",website:"Webové stránky",overview:"Prehľad",invoice_prefix:"Invoice Prefix",estimate_prefix:"Estimate Prefix",payment_prefix:"Payment Prefix",enable_portal:"Aktivovať portál",country:"Krajina",state:"Štát",city:"Mesto",zip_code:"PSČ",added_on:"Pridané Dňa",action:"Akcia",password:"Heslo",confirm_password:"Confirm Password",street_number:"Číslo Ulice",primary_currency:"Hlavná Mena",description:"Popis",add_new_customer:"Pridať Nového Zákazníka",save_customer:"Uložiť Zákazníka",update_customer:"Aktualizovať Zakázníka",customer:"Zákazník | Zákazníci",new_customer:"Nový Zákazník",edit_customer:"Upraviť Zákazníka",basic_info:"Základné Informácie",portal_access:"Portal Access",portal_access_text:"Would you like to allow this customer to login to the Customer Portal?",portal_access_url:"Customer Portal Login URL",portal_access_url_help:"Please copy & forward the above given URL to your customer for providing access.",billing_address:"Fakturačná Adresa",shipping_address:"Doručovacia Adresa",copy_billing_address:"Kopírovať podľa Fakturačnej adresy",no_customers:"Zatiaľ nebol pridaný žiadny zákazník!",no_customers_found:"Nenájdení žiadni zákazníci!",no_contact:"No contact",no_contact_name:"No contact name",list_of_customers:"Táto sekcia bude obsahovať zoznam zákazníkov.",primary_display_name:"Hlavné meno pre zobrazenie",select_currency:"Vyberte menu",select_a_customer:"Vyberte zákazníka",type_or_click:"Začnite písať alebo kliknite pre vybratie",new_transaction:"Nová Transakcia",no_matching_customers:"Nenašli sa žiadny zákazníci spĺňajúce Vaše podmienky!",phone_number:"Telefónne Číslo",create_date:"Dátum Vytvorenia",confirm_delete:"Nebudete môcť obnoviť tohto zákazníka ani žiadne faktúry, cenové odhady alebo platby s ním spojené. | Nebudete môcť obnoviť týchto zákazníkov ani žiadne faktúry, cenové odhady alebo platby s nimi spojené.",created_message:"Zákazník úspešne vytvorený",updated_message:"Zákazník úspešne aktualizovaný",address_updated_message:"Address Information Updated succesfully",deleted_message:"Zákazník úspešne odstránený | Zákazníci úspešne odstránení",edit_currency_not_allowed:"Cannot change currency once transactions created."},cne={title:"Položky",items_list:"Zoznam Položiek",name:"Meno",unit:"Jednotka",description:"Popis",added_on:"Pridané Dňa",price:"Cena",date_of_creation:"Dátum Vytvorenia",not_selected:"No item selected",action:"Akcia",add_item:"Pridať Položku",save_item:"Uložiť Položku",update_item:"Aktualizovať Položku",item:"Položka | Položky",add_new_item:"Pridať Novú Položku",new_item:"Nová položka",edit_item:"Upraviť Položku",no_items:"Zatiaľ žiadné položky!",list_of_items:"Táto sekcia bude obsahovať zoznam zákazníkov.",select_a_unit:"vyberte jednotku",taxes:"Dane",item_attached_message:"Nie je možné vymazať položku, ktorá sa používa",confirm_delete:"Nebudete môcť obnoviť túto Položku | Nebudete môcť obnoviť tieto Položky",created_message:"Položka úspešne vytvorená",updated_message:"Položka úspešne aktualizovaná",deleted_message:"Položka úspešne odstránená | Položky úspešne odstránené"},dne={title:"Cenové odhady",accept_estimate:"Accept Estimate",reject_estimate:"Reject Estimate",estimate:"Cenový odhad | Cenové odhady",estimates_list:"Zoznam Cenových odhadov",days:"{days} Dní",months:"{months} Mesiac",years:"{years} Rok",all:"Všetko",paid:"Zaplatené",unpaid:"Nezaplatené",customer:"ZÁKAZNÍK",ref_no:"REF Č.",number:"ČÍSLO",amount_due:"Dlžná suma",partially_paid:"Čiastočne Zaplatené",total:"Spolu",discount:"Zľava",sub_total:"Medzisúčet",estimate_number:"Číslo Cenového odhadu",ref_number:"Ref. Číslo",contact:"Kontakt",add_item:"Pridať Položku",date:"Dátum",due_date:"Dátum Splatnosti",expiry_date:"Dátum Ukončenia Platnosti",status:"Stav",add_tax:"Pridať Daň",amount:"Suma",action:"Akcia",notes:"Poznámky",tax:"Daň",estimate_template:"Vzhľad",convert_to_invoice:"Konvertovať do Faktúry",mark_as_sent:"Označiť ako odoslané",send_estimate:"Odoslať Cenový odhad",resend_estimate:"Znovu Odoslať Cenový odhad",record_payment:"Zaznamenať Platbu",add_estimate:"Vytvoriť Cenový odhad",save_estimate:"Uložiť Cenový odhad",confirm_conversion:"Tento cenový odhad bude použitý k vytvoreniu novej Faktúry.",conversion_message:"Faktúra úspešne vytvorená",confirm_send_estimate:"Tento Cenový odhad bude odoslaný zákazníkovi prostredníctvom e-mailu",confirm_mark_as_sent:"Tento Cenový odhad bude označený ako odoslaný",confirm_mark_as_accepted:"Tento Cenový odhad bude označený ako Prijatý",confirm_mark_as_rejected:"Tento Cenový odhad bude označený ako Odmietnutý",no_matching_estimates:"Nenašli sa žiadne Cenové odhady spĺňajúce Vaše podmienky!",mark_as_sent_successfully:"Cenový odhad úspešne označený ako odoslaný",send_estimate_successfully:"Cenový odhad úspešne odoslaný",errors:{required:"Pole je povinné"},accepted:"Prijátá",rejected:"Rejected",expired:"Expired",sent:"Odoslaná",draft:"Koncept",viewed:"Viewed",declined:"Zrušený",new_estimate:"Nový Cenový odhad",add_new_estimate:"Pridať nový Cenový odhad",update_Estimate:"Aktualizovať Cenový odhad",edit_estimate:"Upraviť Cenový odhad",items:"položky",Estimate:"Cenový odhad | Cenové odhady",add_new_tax:"Pridať Novú Daň",no_estimates:"Zatiaľ žiadne cenové odhady",list_of_estimates:"Táto sekcia bude obsahovať zoznam cenových odhadov.",mark_as_rejected:"Označiť ako odmietnutú",mark_as_accepted:"Označený ako prijatú",marked_as_accepted_message:"Cenový odhad označený ako schválený",marked_as_rejected_message:"Cenový odhad označený ako odmietnutý",confirm_delete:"Nebude možné obnoviť cenový odhad | Nebude možné obnoviť cenové odhady",created_message:"Cenový odhad úspešné vytvorený",updated_message:"Cenový odhad úspešné aktualizovaný",deleted_message:"Cenový odhad úspešné vymazaný | Cenové odhady úspešné vymazané",something_went_wrong:"Niečo neprebehlo v poriadku, odskúšajte prosím znova.",item:{title:"Názov Položky",description:"Popis",quantity:"Množstvo",price:"Cena",discount:"Zľava",total:"Celkom",total_discount:"Celková zľava",sub_total:"Medzisúčet",tax:"Daň",amount:"Suma",select_an_item:"Začnite písať alebo kliknite pre vybratie položky",type_item_description:"Zadajte Popis Položky (voliteľné)"},mark_as_default_estimate_template_description:"If enabled, the selected template will be automatically selected for new estimates."},une={title:"Faktúry",download:"Download",pay_invoice:"Pay Invoice",invoices_list:"Zoznam Faktúr",invoice_information:"Invoice Information",days:"{days} Ďeň",months:"{months} Mesiac",years:"{years} Rok",all:"Všetko",paid:"Zaplatené",unpaid:"Nezaplatené",viewed:"Viewed",overdue:"Overdue",completed:"Completed",customer:"ZÁKAZNÍK",paid_status:"Stav platby",ref_no:"REF Č.",number:"ČÍSLO",amount_due:"Dlžná suma",partially_paid:"Čiastočne Zaplatené",total:"Spolu",discount:"Zľava",sub_total:"Medzisúčet",invoice:"Faktúra | Faktúry",invoice_number:"Číslo Faktúry",ref_number:"Ref. Číslo",contact:"Kontakt",add_item:"Pridať Položku",date:"Dátum",due_date:"Dátum Splatnosti",status:"Stav",add_tax:"Pridať Daň",amount:"Suma",action:"Akcia",notes:"Poznámky",view:"Zobraziť",send_invoice:"Odoslať Faktúru",resend_invoice:"Odoslať Faktúru Znovu",invoice_template:"Vzhľad faktúry",conversion_message:"Invoice cloned successful",template:"Vzhľad",mark_as_sent:"Označiť ako odoslanú",confirm_send_invoice:"Táto faktúra bude odoslaná zákazníkovi prostredníctvom e-mailu",invoice_mark_as_sent:"Táto faktúra bude označená ako odoslaná",confirm_mark_as_accepted:"This invoice will be marked as Accepted",confirm_mark_as_rejected:"This invoice will be marked as Rejected",confirm_send:"Táto faktúra bude odoslaná zákazníkovi prostredníctvom e-mailu",invoice_date:"Dátum Vystavenia",record_payment:"Zaznamenať Platbu",add_new_invoice:"Nová Faktúra",update_expense:"Update Expense",edit_invoice:"Upraviť Faktúru",new_invoice:"Nová Faktúra",save_invoice:"Uložiť Faktúru",update_invoice:"Upraviť Faktúru",add_new_tax:"Pridať Novú Daň",no_invoices:"Zatiaľ nemáte žiadné faktúry!",mark_as_rejected:"Mark as rejected",mark_as_accepted:"Mark as accepted",list_of_invoices:"Táto sekcia bude obsahovať zoznam faktúr",select_invoice:"Vybrať Faktúru",no_matching_invoices:"Nenašli sa žiadne faktúry!",mark_as_sent_successfully:"Faktúra označená ako úspešne odoslaná",invoice_sent_successfully:"Invoice sent successfully",cloned_successfully:"Faktúra bola úspešne okopírovaná",clone_invoice:"Kopírovať faktúru",confirm_clone:"Faktúra bude okopírovaná do novej",item:{title:"Názov položky",description:"Popis",quantity:"Množstvo",price:"Cena",discount:"Zľava",total:"Celkom",total_discount:"Celková zľava",sub_total:"Medzisúčet",tax:"Daň",amount:"Čiastka",select_an_item:"Napíšte alebo vyberte položku",type_item_description:"Popis položky (voliteľné)"},payment_attached_message:"K jednej z vybraných faktúr už je pripojená platba. Nezabudnite najskôr vymazať priložené platby, aby ste mohli pokračovať v odstránení",confirm_delete:"Túto faktúru nebude možné obnoviť | Tieto faktúry nebude možné obnoviť",created_message:"Faktúra úspešne vytvorená",updated_message:"Faktúra úspešne aktualizovaná",deleted_message:"Faktúra úspešne vymazaná | Faktúry úspešne vymazané",marked_as_sent_message:"Faktúra úspešne označená ako odoslaná",something_went_wrong:"Niečo neprebehlo v poriadku, odskúšajte prosím znova.",invalid_due_amount_message:"Celková suma faktúry nemôže byť nižšia ako celková suma zaplatená za túto faktúru. Ak chcete pokračovať, aktualizujte faktúru alebo odstráňte súvisiace platby.",mark_as_default_invoice_template_description:"If enabled, the selected template will be automatically selected for new invoices."},_ne={title:"Recurring Invoices",invoices_list:"Recurring Invoices List",days:"{days} Days",months:"{months} Month",years:"{years} Year",all:"All",paid:"Paid",unpaid:"Unpaid",viewed:"Viewed",overdue:"Overdue",active:"Active",completed:"Completed",customer:"CUSTOMER",paid_status:"PAID STATUS",ref_no:"REF NO.",number:"NUMBER",amount_due:"AMOUNT DUE",partially_paid:"Partially Paid",total:"Total",discount:"Discount",sub_total:"Sub Total",invoice:"Recurring Invoice | Recurring Invoices",invoice_number:"Recurring Invoice Number",next_invoice_date:"Next Invoice Date",ref_number:"Ref Number",contact:"Contact",add_item:"Add an Item",date:"Date",limit_by:"Limit by",limit_date:"Limit Date",limit_count:"Limit Count",count:"Count",status:"Status",select_a_status:"Select a status",working:"Working",on_hold:"On Hold",complete:"Completed",add_tax:"Add Tax",amount:"Amount",action:"Action",notes:"Notes",view:"View",basic_info:"Basic Info",send_invoice:"Send Recurring Invoice",auto_send:"Auto Send",resend_invoice:"Resend Recurring Invoice",invoice_template:"Recurring Invoice Template",conversion_message:"Recurring Invoice cloned successful",template:"Template",mark_as_sent:"Mark as sent",confirm_send_invoice:"This recurring invoice will be sent via email to the customer",invoice_mark_as_sent:"This recurring invoice will be marked as sent",confirm_send:"This recurring invoice will be sent via email to the customer",starts_at:"Start Date",due_date:"Invoice Due Date",record_payment:"Record Payment",add_new_invoice:"Add New Recurring Invoice",update_expense:"Update Expense",edit_invoice:"Edit Recurring Invoice",new_invoice:"New Recurring Invoice",send_automatically:"Send Automatically",send_automatically_desc:"Enable this, if you would like to send the invoice automatically to the customer when its created.",save_invoice:"Save Recurring Invoice",update_invoice:"Update Recurring Invoice",add_new_tax:"Add New Tax",no_invoices:"No Recurring Invoices yet!",mark_as_rejected:"Mark as rejected",mark_as_accepted:"Mark as accepted",list_of_invoices:"This section will contain the list of recurring invoices.",select_invoice:"Select Invoice",no_matching_invoices:"There are no matching recurring invoices!",mark_as_sent_successfully:"Recurring Invoice marked as sent successfully",invoice_sent_successfully:"Recurring Invoice sent successfully",cloned_successfully:"Recurring Invoice cloned successfully",clone_invoice:"Clone Recurring Invoice",confirm_clone:"This recurring invoice will be cloned into a new Recurring Invoice",add_customer_email:"Please add an email address for this customer to send invoices automatically.",item:{title:"Item Title",description:"Description",quantity:"Quantity",price:"Price",discount:"Discount",total:"Total",total_discount:"Total Discount",sub_total:"Sub Total",tax:"Tax",amount:"Amount",select_an_item:"Type or click to select an item",type_item_description:"Type Item Description (optional)"},frequency:{title:"Frequency",select_frequency:"Select Frequency",minute:"Minute",hour:"Hour",day_month:"Day of month",month:"Month",day_week:"Day of week"},confirm_delete:"You will not be able to recover this Invoice | You will not be able to recover these Invoices",created_message:"Recurring Invoice created successfully",updated_message:"Recurring Invoice updated successfully",deleted_message:"Recurring Invoice deleted successfully | Recurring Invoices deleted successfully",marked_as_sent_message:"Recurring Invoice marked as sent successfully",user_email_does_not_exist:"User email does not exist",something_went_wrong:"something went wrong",invalid_due_amount_message:"Total Recurring Invoice amount cannot be less than total paid amount for this Recurring Invoice. Please update the invoice or delete the associated payments to continue."},mne={title:"Platby",payments_list:"Zoznam Platieb",record_payment:"Zaznamenať Platbu",customer:"Zákazník",date:"Dátum",amount:"Suma",action:"Akcia",payment_number:"Číslo Platby",payment_mode:"Spôsob Platby",invoice:"Faktúra",note:"Poznámka",add_payment:"Pridať Platbu",new_payment:"Nová Platba",edit_payment:"Úpraviť Platbu",view_payment:"Zobraziť Platbu",add_new_payment:"Nová Platba",send_payment_receipt:"Poslať Doklad o Zaplatení",send_payment:"Odoslať Platbu",save_payment:"Uložiť Platbu",update_payment:"Úpraviť Platbu",payment:"Platba | Platby",no_payments:"Zatiaľ nemáte žiadne platby!",not_selected:"Not selected",no_invoice:"No invoice",no_matching_payments:"Nenašli sa žiadne platby spĺňajúce Vaše podmienky!",list_of_payments:"Táto sekcia bude obsahovať zoznam platieb.",select_payment_mode:"Vyberte spôsob platby",confirm_mark_as_sent:"Tento cenový odhad bude označený ako odoslaný",confirm_send_payment:"Tento cenový odhad bude odoslaný zákazníkovi prostredníctvom e-mailu",send_payment_successfully:"Platba úspešne odoslaná",something_went_wrong:"Niečo neprebehlo v poriadku, odskúšajte prosím znova.",confirm_delete:"Nebudete môcť obnoviť túto Platbu | Nebudete môcť obnoviť tieto Platby",created_message:"Platba úspešne vytvorená",updated_message:"Platba úspešne upravena",deleted_message:"Platba úspešne odstránená | Platby úspešne odstránené",invalid_amount_message:"Suma platby nie je správna"},pne={title:"Výdaje",expenses_list:"Zoznam Výdajov",select_a_customer:"Vyberte zákazníka",expense_title:"Nadpis",customer:"Zákazník",currency:"Currency",contact:"Kontakt",category:"Kategória",from_date:"Od dátumu",to_date:"Do dátumu",expense_date:"Dátum",description:"Popis",receipt:"Doklad o zaplatení",amount:"Suma",action:"Akcia",not_selected:"Not selected",note:"Poznámka",category_id:"ID kategórie",date:"Dátum",add_expense:"Pridať Výdaj",add_new_expense:"Pridať Nový Výdaj",save_expense:"Uložiť Výdaj",update_expense:"Aktualizovať Výdaj",download_receipt:"Stiahnuť doklad o zaplatení",edit_expense:"Upraviť Výdaj",new_expense:"Nový Výdaj",expense:"Výdaj | Výdaje",no_expenses:"Zatiaľ nemáte žiadne výdaje!",list_of_expenses:"Táto sekcia bude obsahovať zoznam výdajov.",confirm_delete:"Nebudete môcť obnoviť tento Výdaj | Nebudete môcť obnoviť tieto Výdaje",created_message:"Výdaj úspešne vytvorený",updated_message:"Výdaj úspešne aktualizovaný",deleted_message:"Výdaj úspešne odstránený | Výdaje úspešne odstránené",categories:{categories_list:"Zoznam kategórií",title:"Nadpis",name:"Názov",description:"Popis",amount:"Suma",actions:"Akcie",add_category:"Pridať Kategóriu",new_category:"Nová Kategória",category:"Kategória | Kategórie",select_a_category:"Vyberte kategóriu"}},fne={email:"E-mail",password:"Heslo",forgot_password:"Zabudol som heslo",or_signIn_with:"alebo sa prihlásiť pomocou",login:"Prihlásiť sa",register:"Registrovať sa",reset_password:"Obnoviť heslo",password_reset_successfully:"Heslo Úspešne Obnovené",enter_email:"Zadajte e-mail",enter_password:"Zadajte heslo",retype_password:"Znova zadajte heslo"},hne={buy_now:"Buy Now",install:"Install",price:"Price",download_zip_file:"Download ZIP file",unzipping_package:"Unzipping Package",copying_files:"Copying Files",deleting_files:"Deleting Unused files",completing_installation:"Completing Installation",update_failed:"Update Failed",install_success:"Module has been installed successfully!",customer_reviews:"Reviews",license:"License",faq:"FAQ",monthly:"Monthly",yearly:"Yearly",updated:"Updated",version:"Version",disable:"Disable",module_disabled:"Module Disabled",enable:"Enable",module_enabled:"Module Enabled",update_to:"Update To",module_updated:"Module Updated Successfully!",title:"Modules",module:"Module | Modules",api_token:"API token",invalid_api_token:"Invalid API Token.",other_modules:"Other Modules",view_all:"View All",no_reviews_found:"There are no reviews for this module yet!",module_not_purchased:"Module Not Purchased",module_not_found:"Module Not Found",version_not_supported:"This module version doesn't support the current version of InvoiceShelf",last_updated:"Last Updated On",connect_installation:"Connect your installation",api_token_description:"Login to {url} and connect this installation by entering the API Token. Your purchased modules will show up here after the connection is established.",view_module:"View Module",update_available:"Update Available",purchased:"Purchased",installed:"Installed",no_modules_installed:"No Modules Installed Yet!",disable_warning:"All the settings for this particular will be reverted.",what_you_get:"What you get"},gne={title:"Uživatelia",users_list:"Zoznam Užívateľov",name:"Meno",description:"Popis",added_on:"Pridané Dňa",date_of_creation:"Dátum Vytvorenia",action:"Akcia",add_user:"Pridať používateľa",save_user:"Uložiť používateľa",update_user:"Aktualizovať používateľa",user:"Užívateľ | Užívatelia",add_new_user:"Pridať Nového Užívateľa",new_user:"Nový užívateľ",edit_user:"Upraviť Užívateľa",no_users:"Zatiaľ nebol pridaný žiadny užívateľ!",list_of_users:"Táto sekcia bude obsahovať zoznam užívateľov.",email:"E-mail",phone:"Telefón",password:"Heslo",user_attached_message:"Nie je možné vymazať aktívneho užívateľa",confirm_delete:"Nebude možné obnoviť tohto používateľa | Nebude možné obnoviť týchto používateľov",created_message:"Užívateľ úspešne vytvorený",updated_message:"Užívateľ úspešne aktualizovaná",deleted_message:"Užívateľ úspešne odstránený | Užívatelia úspešne odstránení",select_company_role:"Select Role for {company}",companies:"Companies"},vne={title:"Reporty",from_date:"Od dátumu",to_date:"Do dátumu",status:"Stav",paid:"Zaplatená",unpaid:"Nezaplatená",download_pdf:"Stiahnuť PDF",view_pdf:"Zobraziť PDF",update_report:"Aktualizovať Report",report:"Report | Reporty",profit_loss:{profit_loss:"Ziskt a Straty",to_date:"Do dátumu",from_date:"Od dátumu",date_range:"Vybrať rozsah dátumu"},sales:{sales:"Predaje",date_range:"Vybrať rozsah dátumu",to_date:"Do dátumu",from_date:"Od dátumu",report_type:"Typ Reportu"},taxes:{taxes:"Dane",to_date:"Do dátumu",from_date:"Od dátumu",date_range:"Vybrať Rozsah Dátumu"},errors:{required:"Pole je povinné"},invoices:{invoice:"Faktúra",invoice_date:"Dátum Vystavenia",due_date:"Dátum Splatnosti",amount:"Suma",contact_name:"Kontaktná Osoba",status:"Stav"},estimates:{estimate:"Cenový odhad",estimate_date:"Dátum cenového odhadu",due_date:"Dátum platnosti cenového odhadu",estimate_number:"Číslo cenového odhadu",ref_number:"Ref. Číslo",amount:"Suma",contact_name:"Kontaktná Osoba",status:"Stav"},expenses:{expenses:"Výdaje",category:"Kategória",date:"Dátum",amount:"Suma",to_date:"Do dátumu",from_date:"Od dátumu",date_range:"Vybrať Rozsah Dátumu"}},yne={menu_title:{account_settings:"Nastavenia účtu",company_information:"Informácie o Firme",customization:"Prispôsobenie",preferences:"Preferencie",notifications:"Upozornenia",tax_types:"Typy Daní",expense_category:"Kategórie cenových odhadov",update_app:"Aktualizovať Aplikáciu",backup:"Záloha",file_disk:"Súborový disk",custom_fields:"Vlastné Polia",payment_modes:"Spôsoby Platby",notes:"Poznámky",exchange_rate:"Exchange Rate",address_information:"Address Information"},address_information:{section_description:" You can update Your Address information using form below."},title:"Nastavenia",setting:"Nastavenia | Nastavenia",general:"Všeobecné",language:"Jazyk",primary_currency:"Hlavná Mena",timezone:"Časové Pásmo",date_format:"Formát Dátumu",currencies:{title:"Meny",currency:"Mena | Meny",currencies_list:"Zoznam Mien",select_currency:"Vyberte Menu",name:"Meno",code:"Kód",symbol:"Symbol",precision:"Presnosť",thousand_separator:"Oddelovač Tisíciek",decimal_separator:"Oddelovač Desatinných Miest",position:"Pozícia",position_of_symbol:"Pozícia Symbolu",right:"Vpravo",left:"Vľavo",action:"Akcia",add_currency:"Pridať novú Menu"},mail:{host:"Host E-mailu",port:"Port E-mailu",driver:"Driver E-mailu",secret:"Tajný Kľúč (secret)",mailgun_secret:"Tajný kľúč Mailgun (secret)",mailgun_domain:"Doména",mailgun_endpoint:"Endpoint Mailgun",ses_secret:"SES Tajný Kľúč (secret)",ses_key:"SES kľúč (key)",password:"E-mailové heslo",username:"E-mailové meno (username)",mail_config:"Konfigurácia E-mailov",from_name:"Meno odosielateľa",from_mail:"E-mail odosielateľa",encryption:"E-mailová Enkrypcia",mail_config_desc:"Nižšie nájdete konfiguráciu E-mailu použitého k odosielaniu E-mailov z aplikácie InvoiceShelf. Môžete taktiež nastaviť spojenie so službami tretích strán ako napríklad Sendgrid, SES a pod."},pdf:{title:"Nastavenia PDF",footer_text:"Text v pätičke",pdf_layout:"Rozloženie PDF"},company_info:{company_info:"Informácie o spoločnosti",company_name:"Názov spoločnosti",company_logo:"Logo spoločnosti",section_description:"Informácie o Vašej firme, ktoré budú zobrazené na faktúrach, cenových odhadoch a iných dokumentoch vytvorených vďaka Creater.",phone:"Telefón",country:"Krajina",state:"Štát",city:"Mesto",address:"Adresa",zip:"PSČ",save:"Uložiť",delete:"Delete",updated_message:"Informácie o firme úspešne aktualizované",delete_company:"Delete Company",delete_company_description:"Once you delete your company, you will lose all the data and files associated with it permanently.",are_you_absolutely_sure:"Are you absolutely sure?",delete_company_modal_desc:"This action cannot be undone. This will permanently delete {company} and all of its associated data.",delete_company_modal_label:"Please type {company} to confirm"},custom_fields:{title:"Vlastné Polia",section_description:"Personalizujte si Faktúry, Cenové Odhady a Potvrdenia o platbe pomocou vlastných polí. Uistite sa, že ste nižšie vytvorené polia použili v formáte adresy na stránke nastavení personalizácie.",add_custom_field:"Pridať Vlastné Pole",edit_custom_field:"Upraviť Vlastné Pole",field_name:"Meno Poľa",label:"Značka",type:"Typ",name:"Názov",slug:"Slug",required:"Povinné",placeholder:"Umiestnenie",help_text:"Pomocný Text",default_value:"Predvolená hodnota",prefix:"Predpona",starting_number:"Počiatočné Číslo",model:"Model",help_text_description:"Napíšte popis aby užívatelia lepšie pochopili význam tohto poľa.",suffix:"Prípona",yes:"Áno",no:"Nie",order:"Objednať",custom_field_confirm_delete:"Nebudete môcť obnovit toto vlastné pole",already_in_use:"Toto vlastne pole sa už používa",deleted_message:"Vlastné pole úspešne vymazané",options:"možnosti",add_option:"Pridať Možnosti",add_another_option:"Pridať ďaľšiu možnostť",sort_in_alphabetical_order:"Zoradiť v abecednom poradí",add_options_in_bulk:"Pridať hromadné možnosti",use_predefined_options:"Použiť predvolené možnosti",select_custom_date:"Vybrat vlastný dátum",select_relative_date:"Vybrať Relatívny Dátum",ticked_by_default:"Predvolene označené",updated_message:"Vlastné pole úspešne aktualizované",added_message:"Vlastne pole úspešne pridané",press_enter_to_add:"Press enter to add new option",model_in_use:"Cannot update model for fields which are already in use.",type_in_use:"Cannot update type for fields which are already in use."},customization:{customization:"Prispôsobenie",updated_message:"Informácie o firme úspešne aktualizované",save:"Uložiť",insert_fields:"Insert Fields",learn_custom_format:"Learn how to use custom format",add_new_component:"Add New Component",component:"Component",Parameter:"Parameter",series:"Series",series_description:"To set a static prefix/postfix like 'INV' across your company. It supports character length of up to 6 chars.",series_param_label:"Series Value",delimiter:"Delimiter",delimiter_description:"Single character for specifying the boundary between 2 separate components. By default its set to -",delimiter_param_label:"Delimiter Value",date_format:"Date Format",date_format_description:"A local date and time field which accepts a format parameter. The default format: 'Y' renders the current year.",date_format_param_label:"Format",sequence:"Sequence",sequence_description:"Consecutive sequence of numbers across your company. You can specify the length on the given parameter.",sequence_param_label:"Sequence Length",customer_series:"Customer Series",customer_series_description:"To set a different prefix/postfix for each customer.",customer_sequence:"Customer Sequence",customer_sequence_description:"Consecutive sequence of numbers for each of your customer.",customer_sequence_param_label:"Sequence Length",random_sequence:"Random Sequence",random_sequence_description:"Random alphanumeric string. You can specify the length on the given parameter.",random_sequence_param_label:"Sequence Length",invoices:{title:"Faktúry",invoice_number_format:"Invoice Number Format",invoice_number_format_description:"Customize how your invoice number gets generated automatically when you create a new invoice.",preview_invoice_number:"Preview Invoice Number",due_date:"Due Date",due_date_description:"Specify how due date is automatically set when you create an invoice.",due_date_days:"Invoice Due after days",set_due_date_automatically:"Set Due Date Automatically",set_due_date_automatically_description:"Enable this if you wish to set due date automatically when you create a new invoice.",default_formats:"Default Formats",default_formats_description:"Below given formats are used to fill up the fields automatically on invoice creation.",default_invoice_email_body:"Prednastavené telo e-mailu faktúry",company_address_format:"Formát firemnej adresy",shipping_address_format:"Formát doručovacej adresy",billing_address_format:"Formát fakturačnej adresy",invoice_email_attachment:"Send invoices as attachments",invoice_email_attachment_setting_description:"Enable this if you want to send invoices as email attachment. Please note that 'View Invoice' button in emails will not be displayed anymore when enabled.",invoice_settings_updated:"Invoice Settings updated successfully",retrospective_edits:"Retrospective Edits",allow:"Allow",disable_on_invoice_partial_paid:"Disable after partial payment is recorded",disable_on_invoice_paid:"Disable after full payment is recorded",disable_on_invoice_sent:"Disable after invoice is sent",retrospective_edits_description:" Based on your country's laws or your preference, you can restrict users from editing finalised invoices."},estimates:{title:"Cenový odhad",estimate_number_format:"Estimate Number Format",estimate_number_format_description:"Customize how your estimate number gets generated automatically when you create a new estimate.",preview_estimate_number:"Preview Estimate Number",expiry_date:"Expiry Date",expiry_date_description:"Specify how expiry date is automatically set when you create an estimate.",expiry_date_days:"Estimate Expires after days",set_expiry_date_automatically:"Set Expiry Date Automatically",set_expiry_date_automatically_description:"Enable this if you wish to set expiry date automatically when you create a new estimate.",default_formats:"Default Formats",default_formats_description:"Below given formats are used to fill up the fields automatically on estimate creation.",default_estimate_email_body:"Prednastavené telo e-mailu cenového dohadu",company_address_format:"Formát firemnej adresy",shipping_address_format:"Formát fakturačnej adresy",billing_address_format:"Formát fakturačnej adresy",estimate_email_attachment:"Send estimates as attachments",estimate_email_attachment_setting_description:"Enable this if you want to send the estimates as an email attachment. Please note that 'View Estimate' button in emails will not be displayed anymore when enabled.",estimate_settings_updated:"Estimate Settings updated successfully",convert_estimate_options:"Estimate Convert Action",convert_estimate_description:"Specify what happens to the estimate after it gets converted to an invoice.",no_action:"No action",delete_estimate:"Delete estimate",mark_estimate_as_accepted:"Mark estimate as accepted"},payments:{title:"Platby",payment_number_format:"Payment Number Format",payment_number_format_description:"Customize how your payment number gets generated automatically when you create a new payment.",preview_payment_number:"Preview Payment Number",default_formats:"Default Formats",default_formats_description:"Below given formats are used to fill up the fields automatically on payment creation.",default_payment_email_body:"Prednastavené telo e-mailu platby",company_address_format:"Formát firemnej adresy",from_customer_address_format:"Z formátu adresy zákazníka",payment_email_attachment:"Send payments as attachments",payment_email_attachment_setting_description:"Enable this if you want to send the payment receipts as an email attachment. Please note that 'View Payment' button in emails will not be displayed anymore when enabled.",payment_settings_updated:"Payment Settings updated successfully"},items:{title:"Položky",units:"Jednotky",add_item_unit:"Pridať Jednotku",edit_item_unit:"Upraviť Jednotku",unit_name:"Názov Jednotky",item_unit_added:"Jednotka úspešne pridaná",item_unit_updated:"Jednotka úspešne aktualizovaná",item_unit_confirm_delete:"Nebudete môcť obnoviť túto Jednotku",already_in_use:"Jednotká sa práve používa",deleted_message:"Jednotka úspešne odstránena"},notes:{title:"Poznámky",description:"Ušetrite čas vytváraním poznámok a ich opätovným použitím vo svojich faktúrach, odhadoch a platbách.",notes:"Poznámky",type:"Typ",add_note:"Pridať poznámku",add_new_note:"Pridať Novú Poznámku",name:"Názov",edit_note:"Upraviť poznámku",note_added:"Poznámka úspešne pridaná",note_updated:"Poznámka úspešne aktualizovaná",note_confirm_delete:"Nebudete môcť obnoviť túto Poznámku",already_in_use:"Poznámka sa práve používa",deleted_message:"Poznámka úspešne odstránena"}},account_settings:{profile_picture:"Profilová Fotka",name:"Meno",email:"Email",password:"Heslo",confirm_password:"Potvrdiť heslo",account_settings:"Nastavenie účtu",save:"Uložiť",section_description:"Svoje meno, e-mail a heslo môžete aktualizovať pomocou formulára nižšie.",updated_message:"Nastavenia účtu boli úspešne aktualizované"},user_profile:{name:"Meno",email:"Email",password:"Heslo",confirm_password:"Potvrdiť heslo"},notification:{title:"Upozornenia",email:"Odoslať upozornenie",description:"Ktoré e-mailové upozornenia chcete dostávať keď sa niečo zmení?",invoice_viewed:"Faktúra zobrazená",invoice_viewed_desc:"Keď si váš zákazník prezerá faktúru odoslanú cez Hlavný Panel.",estimate_viewed:"Cenový odhad zobrazený",estimate_viewed_desc:"Keď si váš zákazník prezerá cenový odhad odoslaný cez Hlavný Panel.",save:"Uložiť",email_save_message:"E-mail bol úspešne uložený",please_enter_email:"Zadajte e-mail"},roles:{title:"Roles",description:"Manage the roles & permissions of this company",save:"Save",add_new_role:"Add New Role",role_name:"Role Name",added_on:"Added on",add_role:"Add Role",edit_role:"Edit Role",name:"Name",permission:"Permission | Permissions",select_all:"Select All",none:"None",confirm_delete:"You will not be able to recover this Role",created_message:"Role created successfully",updated_message:"Role updated successfully",deleted_message:"Role deleted successfully",already_in_use:"Role is already in use"},exchange_rate:{exchange_rate:"Exchange Rate",title:"Fix Currency Exchange issues",description:"Please enter exchange rate of all the currencies mentioned below to help InvoiceShelf properly calculate the amounts in {currency}.",drivers:"Drivers",new_driver:"Add New Provider",edit_driver:"Edit Provider",select_driver:"Select Driver",update:"select exchange rate ",providers_description:"Configure your exchange rate providers here to automatically fetch the latest exchange rate on transactions.",key:"API Key",name:"Name",driver:"Driver",is_default:"IS DEFAULT",currency:"Currencies",exchange_rate_confirm_delete:"You will not be able to recover this driver",created_message:"Provider Created successfully",updated_message:"Provider Updated Successfully",deleted_message:"Provider Deleted Successfully",error:" You cannot Delete Active Driver",default_currency_error:"This currency is already used in one of the Active Provider",exchange_help_text:"Enter exchange rate to convert from {currency} to {baseCurrency}",currency_freak:"Currency Freak",currency_layer:"Currency Layer",open_exchange_rate:"Open Exchange Rate",currency_converter:"Currency Converter",server:"Server",url:"URL",active:"Active",currency_help_text:"This provider will only be used on above selected currencies",currency_in_used:"The following currencies are already active on another provider. Please remove these currencies from selection to activate this provider again."},tax_types:{title:"Typ daní",add_tax:"Pridať daň",edit_tax:"Upraviť Daň",description:"Môžete pridať alebo odobrať dane. InvoiceShelf podporuje dane jednotlivých položiek aj na faktúre.",add_new_tax:"Pridať Novú Daň",tax_settings:"Nastavenia daní",tax_per_item:"Daň pre každú Položku zvlášť",tax_name:"Názov Dane",compound_tax:"Zložená daň",percent:"Percento",action:"Akcia",tax_setting_description:"Túto možnosť povoľte, ak chcete pridať dane k jednotlivým položkám faktúr. Štandardne sa dane pripočítavajú priamo k faktúre.",created_message:"Daň úspešne vytvorená",updated_message:"Daň úspešne aktualizovaná",deleted_message:"Daň úspešne odstránená",confirm_delete:"Nebudete môcť obnoviť daň",already_in_use:"Daň už sa už požíva"},payment_modes:{title:"Payment Modes",description:"Modes of transaction for payments",add_payment_mode:"Add Payment Mode",edit_payment_mode:"Edit Payment Mode",mode_name:"Mode Name",payment_mode_added:"Payment Mode Added",payment_mode_updated:"Payment Mode Updated",payment_mode_confirm_delete:"You will not be able to recover this Payment Mode",payments_attached:"This payment method is already attached to payments. Please delete the attached payments to proceed with deletion.",expenses_attached:"This payment method is already attached to expenses. Please delete the attached expenses to proceed with deletion.",deleted_message:"Payment Mode deleted successfully"},expense_category:{title:"Kategórie výdajov",action:"Akcia",description:"Na pridanie položiek výdavkov sú povinné kategórie. Tieto kategórie môžete pridať alebo odstrániť podľa svojich preferencií.",add_new_category:"Pridať Novú Kategóriu",add_category:"Pridať Kategóriu",edit_category:"Upraviť Kategóriu",category_name:"Názov Kategórie",category_description:"Popis",created_message:"Kategória cenového odhadu úspešne vytvorená",deleted_message:"Kategória cenového odhadu úspešne odstránena",updated_message:"Kategória cenového odhadu úspešne aktualizovaná",confirm_delete:"Nebudete môcť obnoviť túto kategóriu cenových odhadov",already_in_use:"Kategória sa už používa"},preferences:{currency:"Mena",default_language:"Predvolený Jazyk",time_zone:"Časové Pásmo",fiscal_year:"Fiškálny Rok",date_format:"Formát Dátumu",discount_setting:"Nastavenia Zľavy",discount_per_item:"Zľava pre každú Položku zvlášť ",discount_setting_description:"Túto možnosť povoľte, ak chcete pridať zľavu k jednotlivým položkám faktúry. Štandardne sa zľava pripočítava priamo k faktúre.",expire_public_links:"Automatically Expire Public Links",expire_setting_description:"Specify whether you would like to expire all the links sent by application to view invoices, estimates & payments, etc after a specified duration.",save:"Uložiť",preference:"Preferencie | Preferencie",general_settings:"Systémovo predvolené preferencie.",updated_message:"Preferencie úspešne aktualizované",select_language:"Vyberte Jazyk",select_time_zone:"Vyberte Časové Pásmo",select_date_format:"Vybrať Formát Dátumu",select_financial_year:"Vyberte Fiškálny Rok",recurring_invoice_status:"Recurring Invoice Status",create_status:"Create Status",active:"Active",on_hold:"On Hold",update_status:"Update Status",completed:"Completed",company_currency_unchangeable:"Company currency cannot be changed"},update_app:{title:"Aktualizovať Aplikáciu",description:"Aplikáciu môžte jednoducho aktualizovať tlačitkom nižšie",check_update:"Skontrolovať Aktualizácie",avail_update:"Nová aktualizácia je k dispozícii",next_version:"Ďalšia Verzia",requirements:"Požiadavky",update:"Aktualizovať",update_progress:"Aktualizácia prebieha...",progress_text:"Bude to trvať len pár minút. Pred dokončením aktualizácie neobnovujte obrazovku ani nezatvárajte okno.",update_success:"App bola aktualizovaná! Počkajte, kým sa okno vášho prehliadača načíta automaticky.",latest_message:"Nie je k dispozícii žiadna aktualizácia! Používate najnovšiu verziu.",current_version:"Aktuálna verzia",download_zip_file:"Stiahnuť ZIP súbor",unzipping_package:"Rozbaliť balík",copying_files:"Kopírovanie súborov",deleting_files:"Deleting Unused files",running_migrations:"Prebieha Migrácia",finishing_update:"Ukončovanie Aktualizácie",update_failed:"Aktualizácia zlyhala!",update_failed_text:"Aktualizácia zlyhala na : {step} kroku",update_warning:"All of the application files and default template files will be overwritten when you update the application using this utility. Please take a backup of your templates & database before updating."},backup:{title:"Záloha | Zálohy",description:"Záloha je vo formáte zip ktorý obsahuje všetky súbory v adresároch vrátane výpisu z databázy.",new_backup:"Vytvoriť zálohu",create_backup:"Vytvoriť zálohu",select_backup_type:"Vybrať typ zálohy",backup_confirm_delete:"Nebude možné obnoviť túto zálohu",path:"cesta",new_disk:"Nový Disk",created_at:"vytvorené",size:"velkost",dropbox:"dropbox",local:"local",healthy:"v poriadku",amount_of_backups:"počet záloh",newest_backups:"najnovšie zálohy",used_storage:"využité miesto na disku",select_disk:"Vybrať disk",action:"Akcia",deleted_message:"Záloha úspešne vymazaná",created_message:"Záloha úspešne vytvorená",invalid_disk_credentials:"Nesprávne prihlasovacie údaje na disk"},disk:{title:"File Disk | File Disks",description:"V predvolenom nastavení použije InvoiceShelf váš lokálny disk na ukladanie záloh, avatarov a iných obrazových súborov. Môžete nakonfigurovať viac ako jeden disku ako napr. DigitalOcean, S3 a Dropbox podľa vašich preferencií.",created_at:"vytvorené",dropbox:"Dropbox",name:"Názov",driver:"Driver",disk_type:"Typ",disk_name:"Názov Disku",new_disk:"Pridať Nový Disk",filesystem_driver:"Driver systémových súborov",local_driver:"lokálny Driver",local_root:"Lokálka Cesta (root)",public_driver:"Verejný Driver",public_root:"Verejná Cesta (root)",public_url:"Verejná URL",public_visibility:"Viditeľné pre Verejnosť",media_driver:"Driver médií",media_root:"Root médií",aws_driver:"AWS Driver",aws_key:"AWS Kľúč (key)",aws_secret:"AWS Tajný Kľúč (secret)",aws_region:"AWS Región",aws_bucket:"AWP Bucket",aws_root:"AWP Cesta (root)",do_spaces_type:"Do Spaces type",do_spaces_key:"Do Spaces key",do_spaces_secret:"Do Spaces Secret",do_spaces_region:"Do Spaces Region",do_spaces_bucket:"Do Spaces Bucket",do_spaces_endpoint:"Do Spaces Endpoint",do_spaces_root:"Do Spaces Root",dropbox_type:"Dropbox Type",dropbox_token:"Dropbox Token",dropbox_key:"Dropbox Key",dropbox_secret:"Dropbox Secret",dropbox_app:"Dropbox App",dropbox_root:"Dropbox Root",default_driver:"Predvolený Driver",is_default:"Je predvolený",set_default_disk:"Nastaviť predvolený disk",set_default_disk_confirm:"This disk will be set as default and all the new PDFs will be saved on this disk",success_set_default_disk:"Disk úspešne nastavený ako predvolený",save_pdf_to_disk:"Ulož PDFs na Disk",disk_setting_description:"Túto možnosť povoľte ak si chcete automaticky uložiť kópiu každého súboru PDF s fakturami, odhadmi a príjmami na predvolený disk. Použitím tejto možnosti skrátite dobu načítania pri prezeraní súborov PDF.",select_disk:"Vybrať Disk",disk_settings:"Nastavenie Disku",confirm_delete:"Vaše existujúce súbory a priečinky na zadanom disku nebudú ovplyvnené ale konfigurácia vášho disku bude odstránená z InvoiceShelfu",action:"Akcia",edit_file_disk:"Upravit Disk",success_create:"Disk úspešne pridaný",success_update:"Disk úspešne aktualizovaný",error:"Pridanie disku zlyhalo",deleted_message:"Disk bol úspešne odstránený",disk_variables_save_successfully:"Disk bol úspešne pridaný",disk_variables_save_error:"Konfigurácia disku zlyhala.",invalid_disk_credentials:"Neplatné prihlasovacie údaje pre Disk"},taxations:{add_billing_address:"Enter Billing Address",add_shipping_address:"Enter Shipping Address",add_company_address:"Enter Company Address",modal_description:"The information below is required in order to fetch sales tax.",add_address:"Add Address for fetching sales tax.",address_placeholder:"Example: 123, My Street",city_placeholder:"Example: Los Angeles",state_placeholder:"Example: CA",zip_placeholder:"Example: 90024",invalid_address:"Please provide valid address details."}},bne={account_info:"Informácie o účte",account_info_desc:"Nižšie uvedené podrobnosti sa použijú na vytvorenie hlavného účtu správcu. Tie môžete kedykoľvek zmeniť po prihlásení.",name:"Meno",email:"Email",password:"Heslo",confirm_password:"Potvrdiť heslo",save_cont:"Uložiť a pokračovať",company_info:"Firemné údaje",company_info_desc:"Tieto informácie sa zobrazia na faktúrach. Neskôr ich však môžete upraviť.",company_name:"Názov firmy",company_logo:"Firemné logo",logo_preview:"Náhľad loga",preferences:"Preferencie",preferences_desc:"Predvolené nastavenie systému.",currency_set_alert:"The company's currency cannot be changed later.",country:"Krajina",state:"Štát",city:"Mesto",address:"Adresa",street:"Ulica1 | Ulica2",phone:"Telefón",zip_code:"PSČ",go_back:"Naspäť",currency:"Mena",language:"Jazyk",time_zone:"Časové pásmo",fiscal_year:"Fiškálny rok",date_format:"Formát dátumu",from_address:"Z adresy",username:"Prihlasovacie meno",next:"Ďaľší",continue:"Pokračovať",skip:"Vynechať",database:{database:"URL Adresa Aplikácie a Databáza",connection:"Pripojenie k databáze",host:"Databáza - Host",port:"Databáza - Port",password:"Heslo do databázy",app_url:"URL Adresa Aplikácie",app_domain:"Doména aplikácie",username:"Prihlasovacie meno do databázy",db_name:"Názov databázy",db_path:"Databázá - cesta (path)",desc:"Vytvorte databázu na svojom serveri a pomocou nasledujúceho formulára nastavte poverenia."},permissions:{permissions:"Oprávnenia",permission_confirm_title:"Ste si istý že chcete pokračovať?",permission_confirm_desc:"Nedostatočné oprávnenia na priečinky inštalácie",permission_desc:"Nižšie je uvedený zoznam povolení priečinkov ktoré sú potrebné na fungovanie aplikácie. Ak kontrola povolení zlyhá nezabudnite aktualizovať povolenia priečinka."},verify_domain:{title:"Domain Verification",desc:"InvoiceShelf uses Session based authentication which requires domain verification for security purposes. Please enter the domain on which you will be accessing your web application.",app_domain:"App Domain",verify_now:"Verify Now",success:"Domain Verify Successfully.",failed:"Domain verification failed. Please enter valid domain name.",verify_and_continue:"Verify And Continue"},mail:{host:"Mail Host",port:"Mail Port",driver:"Mail Driver",secret:"Secret",mailgun_secret:"Mailgun Secret",mailgun_domain:"Domain",mailgun_endpoint:"Mailgun Endpoint",ses_secret:"SES Secret",ses_key:"SES Key",password:"Mail Password",username:"Mail Username",mail_config:"Mail Configuration",from_name:"From Mail Name",from_mail:"From Mail Address",encryption:"Mail Encryption",mail_config_desc:"Nižšie je uvedený formulár na konfiguráciu ovládača e-mailu na odosielanie e-mailov z aplikácie. Môžete tiež nakonfigurovať aj externých poskytovateľov napríklad Sendgrid apod."},req:{system_req:"Systémové požiadavky",php_req_version:"Php (verzia {version} požadovaná)",check_req:"Skontrolujte požiadavky",system_req_desc:"InvoiceShelf má niekoľko požiadaviek na server. Skontrolujte či má váš server požadovanú verziu php a všetky moduly uvedené nižšie."},errors:{migrate_failed:"Migráci zlyhala",database_variables_save_error:"Nie je možné zapísať konfiguráciu do .env file. Skontrolujte oprávnenia",mail_variables_save_error:"Konfigurácia emailu zlyhala.",connection_failed:"Pripojenie k databáze zlyhalo",database_should_be_empty:"Databáza musí byť prázdna"},success:{mail_variables_save_successfully:"Email úspešne nakonfigurovaný",database_variables_save_successfully:"Databáza úspešne nakonfigurovaná."}},kne={invalid_phone:"Zlé telefónné číslo",invalid_url:"Nesprávna URL adresa (ex: http://www.invoiceshelf.com)",invalid_domain_url:"Nesprávna URL (ex: invoiceshelf.com)",required:"Povinné pole",email_incorrect:"Zlý email.",email_already_taken:"Email sa uz používa.",email_does_not_exist:"Používateľ s týmto emailom neexistuje.",item_unit_already_taken:"Názov tejto položky sa už používa",payment_mode_already_taken:"Názov tohto typu platby sa už používa",send_reset_link:"Odoslať resetovací link",not_yet:"Email ešte neprišiel? Znova odoslať",password_min_length:"Heslo musí obsahovať {count} znaky",name_min_length:"Meno musí mať minimálne {count} písmen.",prefix_min_length:"Prefix must have at least {count} letters.",enter_valid_tax_rate:"Zadajte platnú sadzbu dane",numbers_only:"Iba čísla.",characters_only:"Iba znaky.",password_incorrect:"Heslá musia byť rovnaké",password_length:"Heslo musi obsahovať minimálne {count} znakov.",qty_must_greater_than_zero:"Množstvo musí byť viac ako 0.",price_greater_than_zero:"Cena musí byť viac ako 0.",payment_greater_than_zero:"Platba musí byť viac ako 0.",payment_greater_than_due_amount:"Zadaná platba je vyššia ako suma na faktúre.",quantity_maxlength:"Množstvo by nemalo obsahovať ako 20 číslic.",price_maxlength:"Cena by nemala obsahovať viac ako 20 číslic.",price_minvalue:"Suma musi byť vyššia ako 0.",amount_maxlength:"Čiastka by nemala obsahovať viac ako 20 číslic.",amount_minvalue:"Čiastka musí byť vačšia ako 0.",discount_maxlength:"Discount should not be greater than max discount",description_maxlength:"Popis nesmie obsahovať viac ako 255 znaokv.",subject_maxlength:"Predmet nesmie obsahovať viac ako 100 znakov.",message_maxlength:"Správa nesmie obsahovať viac ako 255 znakov.",maximum_options_error:"Maximálny počet z {max} možnosti vybraný. Najprv odstránte aspoň jednu možnost a následne vyberte inú.",notes_maxlength:"Poznámky nesmú obsahovať viac ako 100 znakov.",address_maxlength:"Adresa nesmie obsahovať viac ako 255 znakov",ref_number_maxlength:"Referenčné čislo nesmie obsahovať viac ako 255 znakov",prefix_maxlength:"Predpona nesmie mať viac ako 5 znakov.",something_went_wrong:"Niečo neprebehlo v poriadku, odskúšajte prosím znova.",number_length_minvalue:"Number length should be greater than 0",at_least_one_ability:"Please select atleast one Permission.",valid_driver_key:"Please enter a valid {driver} key.",valid_exchange_rate:"Please enter a valid exchange rate.",company_name_not_same:"Company name must match with given name."},wne={starter_plan:"This feature is available on Starter plan and onwards!",invalid_provider_key:"Please Enter Valid Provider API Key.",estimate_number_used:"The estimate number has already been taken.",invoice_number_used:"The invoice number has already been taken.",payment_attached:"This invoice already has a payment attached to it. Make sure to delete the attached payments first in order to go ahead with the removal.",payment_number_used:"The payment number has already been taken.",name_already_taken:"The name has already been taken.",receipt_does_not_exist:"Receipt does not exist.",customer_cannot_be_changed_after_payment_is_added:"Customer cannot be change after payment is added",invalid_credentials:"Invalid Credentials.",not_allowed:"Not Allowed",login_invalid_credentials:"These credentials do not match our records.",enter_valid_cron_format:"Please enter a valid cron format",email_could_not_be_sent:"Email could not be sent to this email address.",invalid_address:"Please enter a valid address.",invalid_key:"Please enter valid key.",invalid_state:"Please enter a valid state.",invalid_city:"Please enter a valid city.",invalid_postal_code:"Please enter a valid zip.",invalid_format:"Please enter valid query string format.",api_error:"Server not responding.",feature_not_enabled:"Feature not enabled.",request_limit_met:"Api request limit exceeded.",address_incomplete:"Incomplete Address"},Dne="Cenový odhad",xne="Číslo cenového odhadu",Sne="Dátum cenového odhadu",Pne="Platnosť cenového odhadu",Ene="Faktúra",zne="Číslo faktúry",Ane="Dátum vystavenia",Cne="Dátum splatnosti",Tne="Poznámky",jne="Položky",Nne="Počet",Ine="Cena",Fne="Zľava",Rne="Celkom",One="Medzisúčet",Mne="Súčet",$ne="Payment",Lne="Doklad o zaplatení",Bne="Dátum platby",Une="Číslo platby",Vne="Spôsob platby",qne="Prijatá suma",Wne="Report výdajov",Hne="Celkové výdaje",Kne="Zisky a straty",Yne="Sales Customer Report",Zne="Sales Item Report",Gne="Tax Summary Report",Qne="Príjem",Jne="Čistý príjem",Xne="Report predajov: Podľa zákazníkov",eie="Celkové predaje",tie="Report predajov: Podľa položky",aie="Report daní",nie="Celkové dane",iie="Typy daní",oie="Výdaje",sie="Fakturovať,",rie="Doručiť,",lie="Prijaté od:",cie="Tax",die={navigation:tne,general:ane,dashboard:nne,tax_types:ine,global_search:one,company_switcher:sne,dateRange:rne,customers:lne,items:cne,estimates:dne,invoices:une,recurring_invoices:_ne,payments:mne,expenses:pne,login:fne,modules:hne,users:gne,reports:vne,settings:yne,wizard:bne,validation:kne,errors:wne,pdf_estimate_label:Dne,pdf_estimate_number:xne,pdf_estimate_date:Sne,pdf_estimate_expire_date:Pne,pdf_invoice_label:Ene,pdf_invoice_number:zne,pdf_invoice_date:Ane,pdf_invoice_due_date:Cne,pdf_notes:Tne,pdf_items_label:jne,pdf_quantity_label:Nne,pdf_price_label:Ine,pdf_discount_label:Fne,pdf_amount_label:Rne,pdf_subtotal:One,pdf_total:Mne,pdf_payment_label:$ne,pdf_payment_receipt_label:Lne,pdf_payment_date:Bne,pdf_payment_number:Une,pdf_payment_mode:Vne,pdf_payment_amount_received_label:qne,pdf_expense_report_label:Wne,pdf_total_expenses_label:Hne,pdf_profit_loss_label:Kne,pdf_sales_customers_label:Yne,pdf_sales_items_label:Zne,pdf_tax_summery_label:Gne,pdf_income_label:Qne,pdf_net_profit_label:Jne,pdf_customer_sales_report:Xne,pdf_total_sales_label:eie,pdf_item_sales_label:tie,pdf_tax_report_label:aie,pdf_total_tax_label:nie,pdf_tax_types_label:iie,pdf_expenses_label:oie,pdf_bill_to:sie,pdf_ship_to:rie,pdf_received_from:lie,pdf_tax_label:cie},uie={dashboard:"Bảng điều khiển",customers:"Khách hàng",items:"Mặt hàng",invoices:"Hóa đơn","recurring-invoices":"Hóa đơn định kỳ",expenses:"Chi phí",estimates:"Ước tính",payments:"Thanh toán",reports:"Báo cáo",settings:"Cài đặt",logout:"Đăng xuất",users:"Người dùng",modules:"Modules"},_ie={add_company:"Thêm công ty",view_pdf:"Xem PDF",copy_pdf_url:"Sao chép Url PDF",download_pdf:"tải PDF",save:"Tiết kiệm",create:"Tạo nên",cancel:"Huỷ bỏ",update:"Cập nhật",deselect:"Bỏ chọn",download:"Tải xuống",from_date:"Từ ngày",to_date:"Đến nay",from:"Từ",to:"Đến",ok:"OK",yes:"Đúng",no:"Không",sort_by:"Sắp xếp theo",ascending:"Tăng dần",descending:"Giảm dần",subject:"Môn học",body:"Thân hình",message:"Thông điệp",send:"Gửi",preview:"Xem trước",go_back:"Quay lại",back_to_login:"Quay lại đăng nhập?",home:"Trang Chủ",filter:"Bộ lọc",delete:"Xóa bỏ",edit:"Biên tập",view:"Lượt xem",add_new_item:"Thêm mục mới",clear_all:"Làm sạch tất cả",showing:"Hiển thị",of:"của",actions:"Hành động",subtotal:"TIÊU ĐỀ",discount:"GIẢM GIÁ",fixed:"đã sửa",percentage:"Phần trăm",tax:"THUẾ",total_amount:"TỔNG CỘNG",bill_to:"Hoa đơn để",ship_to:"Tàu",due:"Đến hạn",draft:"Bản nháp",sent:"Gởi",all:"Tất cả",select_all:"Chọn tất cả",select_template:"Chọn Template",choose_file:"Bấm vào đây để chọn một tập tin",choose_template:"Chọn một mẫu",choose:"Chọn",remove:"Tẩy",select_a_status:"Chọn một trạng thái",select_a_tax:"Chọn thuế",search:"Tìm kiếm",are_you_sure:"Bạn có chắc không?",list_is_empty:"Danh sách trống.",no_tax_found:"Không tìm thấy thuế!",four_zero_four:"404",you_got_lost:"Rất tiếc! Bạn bị lạc rồi!",go_home:"Về nhà",test_mail_conf:"Kiểm tra cấu hình thư",send_mail_successfully:"Thư đã được gửi thành công",setting_updated:"Đã cập nhật cài đặt thành công",select_state:"Chọn trạng thái",select_country:"Chọn quốc gia",select_city:"Lựa chọn thành phố",street_1:"đường số 1",street_2:"Đường 2",action_failed:"Diễn: Đã thất bại",retry:"Thử lại",choose_note:"Chọn Ghi chú",no_note_found:"Không tìm thấy ghi chú",insert_note:"Chèn ghi chú",copied_pdf_url_clipboard:"Đã sao chép url PDF vào khay nhớ tạm!",copied_url_clipboard:"Copied url to clipboard!",docs:"Tài liệu",do_you_wish_to_continue:"Bạn có muốn tiếp tục không?",note:"Ghi chú",pay_invoice:"Pay Invoice",login_successfully:"Logged in successfully!",logged_out_successfully:"Logged out successfully",mark_as_default:"Đánh dấu mặc định"},mie={select_year:"Chọn năm",cards:{due_amount:"Số tiền đến hạn",customers:"Khách hàng",invoices:"Hóa đơn",estimates:"Ước tính",payments:"Payments"},chart_info:{total_sales:"Bán hàng",total_receipts:"Biên lai",total_expense:"Chi phí",net_income:"Thu nhập ròng",year:"Chọn năm"},monthly_chart:{title:"Bán hàng"},recent_invoices_card:{title:"Hóa đơn đến hạn",due_on:"Đến hạn vào",customer:"khách hàng",amount_due:"Số tiền đến hạn",actions:"Hành động",view_all:"Xem tất cả"},recent_estimate_card:{title:"Các ước tính gần đây",date:"Ngày",customer:"khách hàng",amount_due:"Số tiền đến hạn",actions:"Hành động",view_all:"Xem tất cả"}},pie={name:"Tên",description:"Sự miêu tả",percent:"Phần trăm",compound_tax:"Thuế tổng hợp"},fie={search:"Tìm kiếm...",customers:"Khách hàng",users:"Người dùng",no_results_found:"Không tìm thấy kết quả nào"},hie={label:"Đổi doanh nghiệp",no_results_found:"Không tìm thấy kết quả nào",add_new_company:"Thêm doanh nghiệp",new_company:"Doanh nghiệp mới",created_message:"Khởi tạo doanh nghiệp thành công"},gie={today:"Hôm nay",this_week:"Tuần này",this_month:"Tháng này",this_quarter:"Quý này",this_year:"Năm nay",previous_week:"Tuần trước",previous_month:"Tháng trước",previous_quarter:"Quý trước",previous_year:"Năm trước",custom:"Tuỳ chỉnh"},vie={title:"Khách hàng",prefix:"Tiền tố",add_customer:"Thêm khách hàng",contacts_list:"Danh sách khách hàng",name:"Tên",mail:"Thư tín | Thư",statement:"Tuyên bố",display_name:"Tên hiển thị",primary_contact_name:"Tên liên hệ chính",contact_name:"Tên Liên lạc",amount_due:"Số tiền đến hạn",email:"E-mail",address:"Địa chỉ",phone:"Điện thoại",website:"Trang mạng",overview:"Tổng quat",invoice_prefix:"Tiền tố hóa đơn",estimate_prefix:"Tiền tố ước tính",payment_prefix:"Tiền tố thanh toán",enable_portal:"Bật Cổng thông tin",country:"Quốc gia",state:"Tiểu bang",city:"Tp.",zip_code:"Mã Bưu Chính",added_on:"Đã thêm vào",action:"Hoạt động",password:"Mật khẩu",confirm_password:"Xác nhận mật khẩu",street_number:"Số đường",primary_currency:"Tiền tệ chính",description:"Sự miêu tả",add_new_customer:"Thêm khách hàng mới",save_customer:"Lưu khách hàng",update_customer:"Cập nhật khách hàng",customer:"Khách hàng | Khách hàng",new_customer:"Khách hàng mới",edit_customer:"Chỉnh sửa khách hàng",basic_info:"Thông tin cơ bản",portal_access:"Portal Access",portal_access_text:"Would you like to allow this customer to login to the Customer Portal?",portal_access_url:"Customer Portal Login URL",portal_access_url_help:"Please copy & forward the above given URL to your customer for providing access.",billing_address:"Địa chỉ thanh toán",shipping_address:"Địa chỉ giao hàng",copy_billing_address:"Sao chép từ thanh toán",no_customers:"Chưa có khách hàng!",no_customers_found:"Không tìm thấy khách hàng nào!",no_contact:"Không có liên lạc",no_contact_name:"Không có tên liên hệ",list_of_customers:"Phần này sẽ chứa danh sách các khách hàng.",primary_display_name:"Tên hiển thị chính",select_currency:"Chọn đơn vị tiền tệ",select_a_customer:"Chọn một khách hàng",type_or_click:"Nhập hoặc nhấp để chọn",new_transaction:"Giao dịch mới",no_matching_customers:"Không có khách hàng phù hợp!",phone_number:"Số điện thoại",create_date:"Tạo ngày",confirm_delete:"Bạn sẽ không thể khôi phục khách hàng này và tất cả các Hóa đơn, Ước tính và Thanh toán có liên quan. | Bạn sẽ không thể khôi phục những khách hàng này và tất cả các Hóa đơn, Ước tính và Thanh toán có liên quan.",created_message:"Khách hàng được tạo thành công",updated_message:"Đã cập nhật khách hàng thành công",address_updated_message:"Address Information Updated succesfully",deleted_message:"Đã xóa khách hàng thành công | Đã xóa khách hàng thành công",edit_currency_not_allowed:"Không thể đổi tiền tệ khi bản dịch đã được tạo."},yie={title:"Mặt hàng",items_list:"Danh sách mặt hàng",name:"Tên",unit:"Đơn vị",description:"Sự miêu tả",added_on:"Đã thêm vào",price:"Giá bán",date_of_creation:"Ngày tạo",not_selected:"Không có mục nào được chọn",action:"Hoạt động",add_item:"Thêm mặt hàng",save_item:"Lưu mục",update_item:"Cập nhật mặt hàng",item:"Mặt hàng | Mặt hàng",add_new_item:"Thêm mục mới",new_item:"Vật phẩm mới",edit_item:"Chỉnh sửa mục",no_items:"Chưa có mặt hàng nào!",list_of_items:"Phần này sẽ chứa danh sách các mục.",select_a_unit:"chọn đơn vị",taxes:"Thuế",item_attached_message:"Không thể xóa một mục đã được sử dụng",confirm_delete:"Bạn sẽ không thể khôi phục Vật phẩm này | Bạn sẽ không thể khôi phục các Mục này",created_message:"Mục được tạo thành công",updated_message:"Đã cập nhật mặt hàng thành công",deleted_message:"Đã xóa mục thành công | Các mục đã được xóa thành công"},bie={title:"Ước tính",accept_estimate:"Accept Estimate",reject_estimate:"Reject Estimate",estimate:"Ước tính | Ước tính",estimates_list:"Danh sách ước tính",days:"{days} Ngày",months:"{tháng} tháng",years:"{năm} Năm",all:"Tất cả",paid:"Đã thanh toán",unpaid:"Chưa thanh toán",customer:"KHÁCH HÀNG",ref_no:"REF KHÔNG.",number:"CON SỐ",amount_due:"SỐ TIỀN ĐÚNG",partially_paid:"Thanh toán một phần",total:"Toàn bộ",discount:"Giảm giá",sub_total:"Tổng phụ",estimate_number:"Số ước tính",ref_number:"Số REF",contact:"Tiếp xúc",add_item:"Thêm một mặt hàng",date:"Ngày",due_date:"Ngày đáo hạn",expiry_date:"Ngày hết hạn",status:"Trạng thái",add_tax:"Thêm thuế",amount:"Số tiền",action:"Hoạt động",notes:"Ghi chú",tax:"Thuế",estimate_template:"Bản mẫu",convert_to_invoice:"Chuyển đổi sang hóa đơn",mark_as_sent:"Đánh dấu là Đã gửi",send_estimate:"Gửi ước tính",resend_estimate:"Gửi lại ước tính",record_payment:"Ghi lại Thanh toán",add_estimate:"Thêm ước tính",save_estimate:"Lưu ước tính",confirm_conversion:"Ước tính này sẽ được sử dụng để tạo Hóa đơn mới.",conversion_message:"Hóa đơn được tạo thành công",confirm_send_estimate:"Ước tính này sẽ được gửi qua email cho khách hàng",confirm_mark_as_sent:"Ước tính này sẽ được đánh dấu là đã gửi",confirm_mark_as_accepted:"Ước tính này sẽ được đánh dấu là Đã chấp nhận",confirm_mark_as_rejected:"Ước tính này sẽ được đánh dấu là Bị từ chối",no_matching_estimates:"Không có ước tính phù hợp!",mark_as_sent_successfully:"Ước tính được đánh dấu là đã gửi thành công",send_estimate_successfully:"Ước tính đã được gửi thành công",errors:{required:"Lĩnh vực được yêu cầu"},accepted:"Đã được chấp nhận",rejected:"Từ chối",expired:"Expired",sent:"Gởi",draft:"Bản nháp",viewed:"Viewed",declined:"Suy giảm",new_estimate:"Ước tính mới",add_new_estimate:"Thêm ước tính mới",update_Estimate:"Cập nhật ước tính",edit_estimate:"Chỉnh sửa ước tính",items:"mặt hàng",Estimate:"Ước tính | Ước tính",add_new_tax:"Thêm thuế mới",no_estimates:"Chưa có ước tính nào!",list_of_estimates:"Phần này sẽ chứa danh sách các ước tính.",mark_as_rejected:"Đánh dấu là bị từ chối",mark_as_accepted:"Đánh dấu là đã chấp nhận",marked_as_accepted_message:"Ước tính được đánh dấu là được chấp nhận",marked_as_rejected_message:"Ước tính được đánh dấu là bị từ chối",confirm_delete:"Bạn sẽ không thể khôi phục Ước tính này | Bạn sẽ không thể khôi phục các Ước tính này",created_message:"Ước tính được tạo thành công",updated_message:"Đã cập nhật ước tính thành công",deleted_message:"Đã xóa ước tính thành công | Đã xóa ước tính thành công",something_went_wrong:"có gì đó không ổn",item:{title:"Danh mục",description:"Sự miêu tả",quantity:"Định lượng",price:"Giá bán",discount:"Giảm giá",total:"Toàn bộ",total_discount:"Tổng khấu trừ",sub_total:"Tổng phụ",tax:"Thuế",amount:"Số tiền",select_an_item:"Nhập hoặc nhấp để chọn một mục",type_item_description:"Loại Mục Mô tả (tùy chọn)"},mark_as_default_estimate_template_description:"Nếu bật, mẫu đang chọn sẽ được tự động áp dụng cho ước tính mới."},kie={title:"Hóa đơn",download:"Download",pay_invoice:"Pay Invoice",invoices_list:"Danh sách hóa đơn",invoice_information:"Invoice Information",days:"{days} Ngày",months:"{tháng} tháng",years:"{năm} Năm",all:"Tất cả",paid:"Đã thanh toán",unpaid:"Chưa thanh toán",viewed:"Đã xem",overdue:"Quá hạn",completed:"Đã hoàn thành",customer:"KHÁCH HÀNG",paid_status:"TRẠNG THÁI ĐÃ TRẢ TIỀN",ref_no:"REF KHÔNG.",number:"CON SỐ",amount_due:"SỐ TIỀN ĐÚNG",partially_paid:"Thanh toán một phần",total:"Toàn bộ",discount:"Giảm giá",sub_total:"Tổng phụ",invoice:"Hóa đơn | Hóa đơn",invoice_number:"Số hóa đơn",ref_number:"Số REF",contact:"Tiếp xúc",add_item:"Thêm một mặt hàng",date:"Ngày",due_date:"Ngày đáo hạn",status:"Trạng thái",add_tax:"Thêm thuế",amount:"Số tiền",action:"Hoạt động",notes:"Ghi chú",view:"Lượt xem",send_invoice:"Gửi hóa đơn",resend_invoice:"Gửi lại hóa đơn",invoice_template:"Mẫu hóa đơn",conversion_message:"Hóa đơn được sao chép thành công",template:"Bản mẫu",mark_as_sent:"Đánh dấu là đã gửi",confirm_send_invoice:"Hóa đơn này sẽ được gửi qua email cho khách hàng",invoice_mark_as_sent:"Hóa đơn này sẽ được đánh dấu là đã gửi",confirm_mark_as_accepted:"Hóa đơn này sẽ được đánh dấu là Đã chấp nhận",confirm_mark_as_rejected:"Hóa đơn này sẽ được đánh dấu là Đã từ chối",confirm_send:"Hóa đơn này sẽ được gửi qua email cho khách hàng",invoice_date:"Ngày lập hóa đơn",record_payment:"Ghi lại Thanh toán",add_new_invoice:"Thêm hóa đơn mới",update_expense:"Cập nhật chi phí",edit_invoice:"Chỉnh sửa hóa đơn",new_invoice:"Hóa đơn mới",save_invoice:"Lưu hóa đơn",update_invoice:"Cập nhật hóa đơn",add_new_tax:"Thêm thuế mới",no_invoices:"Chưa có hóa đơn!",mark_as_rejected:"Đánh dấu là bị từ chối",mark_as_accepted:"Đánh dấu là đã chấp nhận",list_of_invoices:"Phần này sẽ chứa danh sách các hóa đơn.",select_invoice:"Chọn hóa đơn",no_matching_invoices:"Không có hóa đơn phù hợp!",mark_as_sent_successfully:"Hóa đơn được đánh dấu là đã gửi thành công",invoice_sent_successfully:"Hóa đơn đã được gửi thành công",cloned_successfully:"Hóa đơn được sao chép thành công",clone_invoice:"Hóa đơn nhân bản",confirm_clone:"Hóa đơn này sẽ được sao chép vào một Hóa đơn mới",item:{title:"Danh mục",description:"Sự miêu tả",quantity:"Định lượng",price:"Giá bán",discount:"Giảm giá",total:"Toàn bộ",total_discount:"Tổng khấu trừ",sub_total:"Tổng phụ",tax:"Thuế",amount:"Số tiền",select_an_item:"Nhập hoặc nhấp để chọn một mục",type_item_description:"Loại Mục Mô tả (tùy chọn)"},payment_attached_message:"Một trong các hóa đơn được chọn đã có một khoản thanh toán được đính kèm. Đảm bảo xóa các khoản thanh toán đính kèm trước để tiếp tục xóa",confirm_delete:"Bạn sẽ không thể khôi phục Hóa đơn này | Bạn sẽ không thể khôi phục các Hóa đơn này",created_message:"Hóa đơn đã được tạo thành công",updated_message:"Đã cập nhật hóa đơn thành công",deleted_message:"Hóa đơn đã được xóa thành công | Hóa đơn đã được xóa thành công",marked_as_sent_message:"Hóa đơn được đánh dấu là đã gửi thành công",something_went_wrong:"có gì đó không ổn",invalid_due_amount_message:"Tổng số tiền trên Hóa đơn không được nhỏ hơn tổng số tiền đã thanh toán cho Hóa đơn này. Vui lòng cập nhật hóa đơn hoặc xóa các khoản thanh toán liên quan để tiếp tục.",mark_as_default_invoice_template_description:"Nếu bật, mẫu đang chọn sẽ được tự động áp dụng cho hóa đơn mới."},wie={title:"Hóa đơn định kỳ",invoices_list:"Hóa đơn định kỳ",days:"{days} Ngày",months:"{months} Tháng",years:"{years} Năm",all:"Tất cả",paid:"Đã thanh toán",unpaid:"Chưa thanh toán",viewed:"Đã xem",overdue:"Quá hạn",active:"Hoạt động",completed:"Hoàn thành",customer:"KHÁCH HÀNG",paid_status:"PAID STATUS",ref_no:"REF NO.",number:"NUMBER",amount_due:"AMOUNT DUE",partially_paid:"Partially Paid",total:"Total",discount:"Discount",sub_total:"Sub Total",invoice:"Recurring Invoice | Recurring Invoices",invoice_number:"Recurring Invoice Number",next_invoice_date:"Next Invoice Date",ref_number:"Ref Number",contact:"Contact",add_item:"Add an Item",date:"Date",limit_by:"Limit by",limit_date:"Limit Date",limit_count:"Limit Count",count:"Count",status:"Status",select_a_status:"Select a status",working:"Working",on_hold:"On Hold",complete:"Completed",add_tax:"Add Tax",amount:"Amount",action:"Action",notes:"Notes",view:"View",basic_info:"Basic Info",send_invoice:"Send Recurring Invoice",auto_send:"Auto Send",resend_invoice:"Resend Recurring Invoice",invoice_template:"Recurring Invoice Template",conversion_message:"Recurring Invoice cloned successful",template:"Template",mark_as_sent:"Mark as sent",confirm_send_invoice:"This recurring invoice will be sent via email to the customer",invoice_mark_as_sent:"This recurring invoice will be marked as sent",confirm_send:"This recurring invoice will be sent via email to the customer",starts_at:"Start Date",due_date:"Invoice Due Date",record_payment:"Record Payment",add_new_invoice:"Add New Recurring Invoice",update_expense:"Update Expense",edit_invoice:"Edit Recurring Invoice",new_invoice:"New Recurring Invoice",send_automatically:"Send Automatically",send_automatically_desc:"Enable this, if you would like to send the invoice automatically to the customer when its created.",save_invoice:"Save Recurring Invoice",update_invoice:"Cập nhật Hóa đơn định kỳ",add_new_tax:"Thêm thuế mới",no_invoices:"Chưa có Hóa đơn định kỳ nào!",mark_as_rejected:"Đánh dấu là bị từ chối",mark_as_accepted:"Đánh dấu là đã chấp nhận",list_of_invoices:"This section will contain the list of recurring invoices.",select_invoice:"Select Invoice",no_matching_invoices:"There are no matching recurring invoices!",mark_as_sent_successfully:"Recurring Invoice marked as sent successfully",invoice_sent_successfully:"Recurring Invoice sent successfully",cloned_successfully:"Recurring Invoice cloned successfully",clone_invoice:"Clone Recurring Invoice",confirm_clone:"This recurring invoice will be cloned into a new Recurring Invoice",add_customer_email:"Thêm một địa chỉ email cho khách hàng này để gửi hóa đơn tự động.",item:{title:"Item Title",description:"Description",quantity:"Quantity",price:"Price",discount:"Discount",total:"Total",total_discount:"Total Discount",sub_total:"Sub Total",tax:"Tax",amount:"Amount",select_an_item:"Type or click to select an item",type_item_description:"Type Item Description (optional)"},frequency:{title:"Frequency",select_frequency:"Select Frequency",minute:"Minute",hour:"Hour",day_month:"Day of month",month:"Month",day_week:"Day of week"},confirm_delete:"You will not be able to recover this Invoice | You will not be able to recover these Invoices",created_message:"Recurring Invoice created successfully",updated_message:"Recurring Invoice updated successfully",deleted_message:"Recurring Invoice deleted successfully | Recurring Invoices deleted successfully",marked_as_sent_message:"Recurring Invoice marked as sent successfully",user_email_does_not_exist:"User email does not exist",something_went_wrong:"something went wrong",invalid_due_amount_message:"Total Recurring Invoice amount cannot be less than total paid amount for this Recurring Invoice. Please update the invoice or delete the associated payments to continue."},Die={title:"Thanh toán",payments_list:"Danh sách thanh toán",record_payment:"Ghi lại Thanh toán",customer:"khách hàng",date:"Ngày",amount:"Số tiền",action:"Hoạt động",payment_number:"Số tiền phải trả",payment_mode:"Phương thức thanh toán",invoice:"Hóa đơn",note:"Ghi chú",add_payment:"Thêm thanh toán",new_payment:"Thanh toán mới",edit_payment:"Chỉnh sửa Thanh toán",view_payment:"Xem thanh toán",add_new_payment:"Thêm thanh toán mới",send_payment_receipt:"Gửi biên lai thanh toán",send_payment:"Gửi hóa đơn",save_payment:"Lưu thanh toán",update_payment:"Cập nhật thanh toán",payment:"Thanh toán | Thanh toán",no_payments:"Chưa có khoản thanh toán nào!",not_selected:"Không được chọn",no_invoice:"Không có hóa đơn",no_matching_payments:"Không có khoản thanh toán nào phù hợp!",list_of_payments:"Phần này sẽ chứa danh sách các khoản thanh toán.",select_payment_mode:"Chọn phương thức thanh toán",confirm_mark_as_sent:"Ước tính này sẽ được đánh dấu là đã gửi",confirm_send_payment:"Khoản thanh toán này sẽ được gửi qua email cho khách hàng",send_payment_successfully:"Thanh toán đã được gửi thành công",something_went_wrong:"có gì đó không ổn",confirm_delete:"Bạn sẽ không thể khôi phục Thanh toán này | Bạn sẽ không thể khôi phục các Khoản thanh toán này",created_message:"Thanh toán được tạo thành công",updated_message:"Đã cập nhật thanh toán thành công",deleted_message:"Đã xóa thanh toán thành công | Thanh toán đã được xóa thành công",invalid_amount_message:"Số tiền thanh toán không hợp lệ"},xie={title:"Chi phí",expenses_list:"Danh sách chi phí",select_a_customer:"Chọn một khách hàng",expense_title:"Tiêu đề",customer:"khách hàng",currency:"Currency",contact:"Tiếp xúc",category:"thể loại",from_date:"Từ ngày",to_date:"Đến nay",expense_date:"Ngày",description:"Sự miêu tả",receipt:"Biên lai",amount:"Số tiền",action:"Hoạt động",not_selected:"Không được chọn",note:"Ghi chú",category_id:"Thể loại ID",date:"Ngày",add_expense:"Thêm chi phí",add_new_expense:"Thêm chi phí mới",save_expense:"Tiết kiệm chi phí",update_expense:"Cập nhật chi phí",download_receipt:"Biên nhận tải xuống",edit_expense:"Chỉnh sửa chi phí",new_expense:"Chi phí mới",expense:"Chi phí | Chi phí",no_expenses:"Chưa có chi phí!",list_of_expenses:"Phần này sẽ chứa danh sách các chi phí.",confirm_delete:"Bạn sẽ không thể thu hồi Khoản chi phí này | Bạn sẽ không thể thu hồi các Khoản chi phí này",created_message:"Đã tạo thành công chi phí",updated_message:"Đã cập nhật chi phí thành công",deleted_message:"Đã xóa thành công chi phí | Đã xóa thành công chi phí",categories:{categories_list:"Danh sách hạng mục",title:"Tiêu đề",name:"Tên",description:"Sự miêu tả",amount:"Số tiền",actions:"Hành động",add_category:"thêm thể loại",new_category:"Danh mục mới",category:"Thể loại | Thể loại",select_a_category:"Chọn một danh mục"}},Sie={email:"E-mail",password:"Mật khẩu",forgot_password:"Quên mật khẩu?",or_signIn_with:"hoặc Đăng nhập bằng",login:"Đăng nhập",register:"Đăng ký",reset_password:"Đặt lại mật khẩu",password_reset_successfully:"Đặt lại mật khẩu thành công",enter_email:"Nhập email",enter_password:"Nhập mật khẩu",retype_password:"Gõ lại mật khẩu"},Pie={buy_now:"Buy Now",install:"Install",price:"Price",download_zip_file:"Download ZIP file",unzipping_package:"Unzipping Package",copying_files:"Copying Files",deleting_files:"Deleting Unused files",completing_installation:"Completing Installation",update_failed:"Update Failed",install_success:"Module has been installed successfully!",customer_reviews:"Reviews",license:"License",faq:"FAQ",monthly:"Monthly",yearly:"Yearly",updated:"Updated",version:"Version",disable:"Disable",module_disabled:"Module Disabled",enable:"Enable",module_enabled:"Module Enabled",update_to:"Update To",module_updated:"Module Updated Successfully!",title:"Modules",module:"Module | Modules",api_token:"API token",invalid_api_token:"Invalid API Token.",other_modules:"Other Modules",view_all:"View All",no_reviews_found:"There are no reviews for this module yet!",module_not_purchased:"Module Not Purchased",module_not_found:"Module Not Found",version_not_supported:"This module version doesn't support the current version of InvoiceShelf",last_updated:"Last Updated On",connect_installation:"Connect your installation",api_token_description:"Login to {url} and connect this installation by entering the API Token. Your purchased modules will show up here after the connection is established.",view_module:"View Module",update_available:"Update Available",purchased:"Purchased",installed:"Installed",no_modules_installed:"No Modules Installed Yet!",disable_warning:"All the settings for this particular will be reverted.",what_you_get:"What you get"},Eie={title:"Người dùng",users_list:"Danh sách người dùng",name:"Tên",description:"Sự miêu tả",added_on:"Đã thêm vào",date_of_creation:"Ngày tạo",action:"Hoạt động",add_user:"Thêm người dùng",save_user:"Lưu người dùng",update_user:"Cập nhật người dùng",user:"Người dùng | Người dùng",add_new_user:"Thêm người dùng mới",new_user:"Người dùng mới",edit_user:"Người dùng biên tập",no_users:"Chưa có người dùng nào!",list_of_users:"Phần này sẽ chứa danh sách người dùng.",email:"E-mail",phone:"Điện thoại",password:"Mật khẩu",user_attached_message:"Không thể xóa một mục đã được sử dụng",confirm_delete:"Bạn sẽ không thể khôi phục Người dùng này | Bạn sẽ không thể khôi phục những Người dùng này",created_message:"Người dùng đã được tạo thành công",updated_message:"Đã cập nhật người dùng thành công",deleted_message:"Đã xóa người dùng thành công | Đã xóa người dùng thành công",select_company_role:"Select Role for {company}",companies:"Companies"},zie={title:"Báo cáo",from_date:"Từ ngày",to_date:"Đến nay",status:"Trạng thái",paid:"Đã thanh toán",unpaid:"Chưa thanh toán",download_pdf:"tải PDF",view_pdf:"Xem PDF",update_report:"Cập nhật báo cáo",report:"Báo cáo | Báo cáo",profit_loss:{profit_loss:"Lợi nhuận",to_date:"Đến nay",from_date:"Từ ngày",date_range:"Chọn phạm vi ngày"},sales:{sales:"Bán hàng",date_range:"Chọn phạm vi ngày",to_date:"Đến nay",from_date:"Từ ngày",report_type:"Loại báo cáo"},taxes:{taxes:"Thuế",to_date:"Đến nay",from_date:"Từ ngày",date_range:"Chọn phạm vi ngày"},errors:{required:"Lĩnh vực được yêu cầu"},invoices:{invoice:"Hóa đơn",invoice_date:"Ngày lập hóa đơn",due_date:"Ngày đáo hạn",amount:"Số tiền",contact_name:"Tên Liên lạc",status:"Trạng thái"},estimates:{estimate:"Ước tính",estimate_date:"Ngày ước tính",due_date:"Ngày đáo hạn",estimate_number:"Số ước tính",ref_number:"Số REF",amount:"Số tiền",contact_name:"Tên Liên lạc",status:"Trạng thái"},expenses:{expenses:"Chi phí",category:"thể loại",date:"Ngày",amount:"Số tiền",to_date:"Đến nay",from_date:"Từ ngày",date_range:"Chọn phạm vi ngày"}},Aie={menu_title:{account_settings:"Cài đặt tài khoản",company_information:"Thông tin công ty",customization:"Tùy biến",preferences:"Sở thích",notifications:"Thông báo",tax_types:"Các loại thuế",expense_category:"Hạng mục Chi phí",update_app:"Cập nhật ứng dụng",backup:"Sao lưu",file_disk:"Đĩa tệp",custom_fields:"Trường tùy chỉnh",payment_modes:"Phương thức thanh toán",notes:"Ghi chú",exchange_rate:"Exchange Rate",address_information:"Address Information"},address_information:{section_description:" You can update Your Address information using form below."},title:"Cài đặt",setting:"Cài đặt | Cài đặt",general:"Chung",language:"Ngôn ngữ",primary_currency:"Tiền tệ chính",timezone:"Múi giờ",date_format:"Định dạng ngày tháng",currencies:{title:"Tiền tệ",currency:"Tiền tệ | Tiền tệ",currencies_list:"Danh sách tiền tệ",select_currency:"Chọn tiền tệ",name:"Tên",code:"Mã",symbol:"Biểu tượng",precision:"Độ chính xác",thousand_separator:"Hàng ngàn máy tách",decimal_separator:"Phân số thập phân",position:"Chức vụ",position_of_symbol:"Vị trí của biểu tượng",right:"Đúng",left:"Trái",action:"Hoạt động",add_currency:"Thêm tiền tệ"},mail:{host:"Máy chủ Thư",port:"Cổng thư",driver:"Trình điều khiển Thư",secret:"Bí mật",mailgun_secret:"Bí mật Mailgun",mailgun_domain:"Miền",mailgun_endpoint:"Điểm cuối của Mailgun",ses_secret:"Bí mật SES",ses_key:"Khóa SES",password:"Mật khẩu thư",username:"Tên người dùng thư",mail_config:"Cấu hình thư",from_name:"Từ tên thư",from_mail:"Từ địa chỉ thư",encryption:"Mã hóa Thư",mail_config_desc:"Dưới đây là biểu mẫu Định cấu hình trình điều khiển Email để gửi email từ ứng dụng. Bạn cũng có thể định cấu hình các nhà cung cấp bên thứ ba như Sendgrid, SES, v.v."},pdf:{title:"Cài đặt PDF",footer_text:"Văn bản chân trang",pdf_layout:"Bố cục PDF"},company_info:{company_info:"Thông tin công ty",company_name:"Tên công ty",company_logo:"Logo công ty",section_description:"Thông tin về công ty của bạn sẽ được hiển thị trên hóa đơn, ước tính và các tài liệu khác do InvoiceShelf tạo.",phone:"Điện thoại",country:"Quốc gia",state:"Tiểu bang",city:"Tp.",address:"Địa chỉ",zip:"Zip",save:"Tiết kiệm",delete:"Delete",updated_message:"Thông tin công ty được cập nhật thành công",delete_company:"Delete Company",delete_company_description:"Once you delete your company, you will lose all the data and files associated with it permanently.",are_you_absolutely_sure:"Are you absolutely sure?",delete_company_modal_desc:"This action cannot be undone. This will permanently delete {company} and all of its associated data.",delete_company_modal_label:"Please type {company} to confirm"},custom_fields:{title:"Trường tùy chỉnh",section_description:"Tùy chỉnh hóa đơn, ước tính của bạn",add_custom_field:"Thêm trường tùy chỉnh",edit_custom_field:"Chỉnh sửa trường tùy chỉnh",field_name:"Tên trường",label:"Nhãn",type:"Kiểu",name:"Tên",slug:"Slug",required:"Cần thiết",placeholder:"Trình giữ chỗ",help_text:"Văn bản trợ giúp",default_value:"Giá trị mặc định",prefix:"Tiếp đầu ngữ",starting_number:"Số bắt đầu",model:"Mô hình",help_text_description:"Nhập một số văn bản để giúp người dùng hiểu mục đích của trường tùy chỉnh này.",suffix:"Hậu tố",yes:"Đúng",no:"Không",order:"Đặt hàng",custom_field_confirm_delete:"Bạn sẽ không thể khôi phục Trường tùy chỉnh này",already_in_use:"Trường tùy chỉnh đã được sử dụng",deleted_message:"Trường Tùy chỉnh đã được xóa thành công",options:"các tùy chọn",add_option:"Thêm tùy chọn",add_another_option:"Thêm một tùy chọn khác",sort_in_alphabetical_order:"Sắp xếp theo thứ tự bảng chữ cái",add_options_in_bulk:"Thêm hàng loạt tùy chọn",use_predefined_options:"Sử dụng các tùy chọn được xác định trước",select_custom_date:"Chọn ngày tùy chỉnh",select_relative_date:"Chọn ngày tương đối",ticked_by_default:"Được đánh dấu theo mặc định",updated_message:"Đã cập nhật trường tùy chỉnh thành công",added_message:"Trường tùy chỉnh đã được thêm thành công",press_enter_to_add:"Press enter to add new option",model_in_use:"Cannot update model for fields which are already in use.",type_in_use:"Cannot update type for fields which are already in use."},customization:{customization:"sự tùy biến",updated_message:"Thông tin công ty được cập nhật thành công",save:"Tiết kiệm",insert_fields:"Insert Fields",learn_custom_format:"Learn how to use custom format",add_new_component:"Add New Component",component:"Component",Parameter:"Parameter",series:"Series",series_description:"To set a static prefix/postfix like 'INV' across your company. It supports character length of up to 6 chars.",series_param_label:"Series Value",delimiter:"Delimiter",delimiter_description:"Single character for specifying the boundary between 2 separate components. By default its set to -",delimiter_param_label:"Delimiter Value",date_format:"Date Format",date_format_description:"A local date and time field which accepts a format parameter. The default format: 'Y' renders the current year.",date_format_param_label:"Format",sequence:"Sequence",sequence_description:"Consecutive sequence of numbers across your company. You can specify the length on the given parameter.",sequence_param_label:"Sequence Length",customer_series:"Customer Series",customer_series_description:"To set a different prefix/postfix for each customer.",customer_sequence:"Customer Sequence",customer_sequence_description:"Consecutive sequence of numbers for each of your customer.",customer_sequence_param_label:"Sequence Length",random_sequence:"Random Sequence",random_sequence_description:"Random alphanumeric string. You can specify the length on the given parameter.",random_sequence_param_label:"Sequence Length",invoices:{title:"Hóa đơn",invoice_number_format:"Invoice Number Format",invoice_number_format_description:"Customize how your invoice number gets generated automatically when you create a new invoice.",preview_invoice_number:"Preview Invoice Number",due_date:"Due Date",due_date_description:"Specify how due date is automatically set when you create an invoice.",due_date_days:"Invoice Due after days",set_due_date_automatically:"Set Due Date Automatically",set_due_date_automatically_description:"Enable this if you wish to set due date automatically when you create a new invoice.",default_formats:"Default Formats",default_formats_description:"Below given formats are used to fill up the fields automatically on invoice creation.",default_invoice_email_body:"Nội dung email hóa đơn mặc định",company_address_format:"Định dạng địa chỉ công ty",shipping_address_format:"Định dạng địa chỉ giao hàng",billing_address_format:"Định dạng địa chỉ thanh toán",invoice_email_attachment:"Gửi hóa đơn dưới dạng tệp đính kèm",invoice_email_attachment_setting_description:"Bật tính năng này nếu bạn muốn gửi hóa đơn dưới dạng tệp đính kèm email. Xin lưu ý rằng nút 'Xem Hóa đơn' trong email sẽ không được hiển thị nữa khi được bật.",invoice_settings_updated:"Invoice Settings updated successfully",retrospective_edits:"Retrospective Edits",allow:"Allow",disable_on_invoice_partial_paid:"Disable after partial payment is recorded",disable_on_invoice_paid:"Disable after full payment is recorded",disable_on_invoice_sent:"Disable after invoice is sent",retrospective_edits_description:" Based on your country's laws or your preference, you can restrict users from editing finalised invoices."},estimates:{title:"Ước tính",estimate_number_format:"Estimate Number Format",estimate_number_format_description:"Customize how your estimate number gets generated automatically when you create a new estimate.",preview_estimate_number:"Preview Estimate Number",expiry_date:"Expiry Date",expiry_date_description:"Specify how expiry date is automatically set when you create an estimate.",expiry_date_days:"Estimate Expires after days",set_expiry_date_automatically:"Set Expiry Date Automatically",set_expiry_date_automatically_description:"Enable this if you wish to set expiry date automatically when you create a new estimate.",default_formats:"Default Formats",default_formats_description:"Below given formats are used to fill up the fields automatically on estimate creation.",default_estimate_email_body:"Nội dung Email Ước tính Mặc định",company_address_format:"Định dạng địa chỉ công ty",shipping_address_format:"Định dạng địa chỉ giao hàng",billing_address_format:"Định dạng địa chỉ thanh toán",estimate_email_attachment:"Gửi ước tính dưới dạng tệp đính kèm",estimate_email_attachment_setting_description:"Bật tính năng này nếu bạn muốn gửi ước tính dưới dạng tệp đính kèm email. Xin lưu ý rằng nút 'Xem Ước tính' trong email sẽ không được hiển thị nữa khi được bật.",estimate_settings_updated:"Estimate Settings updated successfully",convert_estimate_options:"Estimate Convert Action",convert_estimate_description:"Specify what happens to the estimate after it gets converted to an invoice.",no_action:"No action",delete_estimate:"Delete estimate",mark_estimate_as_accepted:"Mark estimate as accepted"},payments:{title:"Thanh toán",payment_number_format:"Payment Number Format",payment_number_format_description:"Customize how your payment number gets generated automatically when you create a new payment.",preview_payment_number:"Preview Payment Number",default_formats:"Default Formats",default_formats_description:"Below given formats are used to fill up the fields automatically on payment creation.",default_payment_email_body:"Nội dung Email Thanh toán Mặc định",company_address_format:"Định dạng địa chỉ công ty",from_customer_address_format:"Từ định dạng địa chỉ khách hàng",payment_email_attachment:"Gửi thanh toán dưới dạng tệp đính kèm",payment_email_attachment_setting_description:"Bật tính năng này nếu bạn muốn gửi biên nhận thanh toán dưới dạng tệp đính kèm email. Xin lưu ý rằng nút 'Xem Thanh toán' trong email sẽ không được hiển thị nữa khi được bật.",payment_settings_updated:"Payment Settings updated successfully"},items:{title:"Mặt hàng",units:"Các đơn vị",add_item_unit:"Thêm đơn vị mặt hàng",edit_item_unit:"Chỉnh sửa đơn vị mặt hàng",unit_name:"Tên bài",item_unit_added:"Đơn vị mặt hàng đã được thêm",item_unit_updated:"Đã cập nhật đơn vị mặt hàng",item_unit_confirm_delete:"Bạn sẽ không thể khôi phục đơn vị Mặt hàng này",already_in_use:"Đơn vị vật phẩm đã được sử dụng",deleted_message:"Đơn vị mặt hàng đã được xóa thành công"},notes:{title:"Ghi chú",description:"Tiết kiệm thời gian bằng cách tạo ghi chú và sử dụng lại chúng trên hóa đơn, ước tính của bạn",notes:"Ghi chú",type:"Kiểu",add_note:"Thêm ghi chú",add_new_note:"Thêm ghi chú mới",name:"Tên",edit_note:"Chỉnh sửa ghi chú",note_added:"Đã thêm ghi chú thành công",note_updated:"Đã cập nhật ghi chú thành công",note_confirm_delete:"Bạn sẽ không thể khôi phục Ghi chú này",already_in_use:"Ghi chú đã được sử dụng",deleted_message:"Đã xóa ghi chú thành công"}},account_settings:{profile_picture:"Ảnh đại diện",name:"Tên",email:"E-mail",password:"Mật khẩu",confirm_password:"Xác nhận mật khẩu",account_settings:"Cài đặt tài khoản",save:"Tiết kiệm",section_description:"Bạn có thể cập nhật tên, email của mình",updated_message:"Đã cập nhật cài đặt tài khoản thành công"},user_profile:{name:"Tên",email:"E-mail",password:"Mật khẩu",confirm_password:"Xác nhận mật khẩu"},notification:{title:"Thông báo",email:"Gửi thông báo tới",description:"Bạn muốn nhận thông báo email nào khi có điều gì đó thay đổi?",invoice_viewed:"Hóa đơn đã xem",invoice_viewed_desc:"Khi khách hàng của bạn xem hóa đơn được gửi qua bảng điều khiển miệng núi lửa.",estimate_viewed:"Ước tính đã xem",estimate_viewed_desc:"Khi khách hàng của bạn xem ước tính được gửi qua bảng điều khiển miệng núi lửa.",save:"Tiết kiệm",email_save_message:"Email đã được lưu thành công",please_enter_email:"Vui lòng nhập Email"},roles:{title:"Roles",description:"Manage the roles & permissions of this company",save:"Save",add_new_role:"Add New Role",role_name:"Role Name",added_on:"Added on",add_role:"Add Role",edit_role:"Edit Role",name:"Name",permission:"Permission | Permissions",select_all:"Select All",none:"None",confirm_delete:"You will not be able to recover this Role",created_message:"Role created successfully",updated_message:"Role updated successfully",deleted_message:"Role deleted successfully",already_in_use:"Role is already in use"},exchange_rate:{exchange_rate:"Exchange Rate",title:"Fix Currency Exchange issues",description:"Please enter exchange rate of all the currencies mentioned below to help InvoiceShelf properly calculate the amounts in {currency}.",drivers:"Drivers",new_driver:"Add New Provider",edit_driver:"Edit Provider",select_driver:"Select Driver",update:"select exchange rate ",providers_description:"Configure your exchange rate providers here to automatically fetch the latest exchange rate on transactions.",key:"API Key",name:"Name",driver:"Driver",is_default:"IS DEFAULT",currency:"Currencies",exchange_rate_confirm_delete:"You will not be able to recover this driver",created_message:"Provider Created successfully",updated_message:"Provider Updated Successfully",deleted_message:"Provider Deleted Successfully",error:" You cannot Delete Active Driver",default_currency_error:"This currency is already used in one of the Active Provider",exchange_help_text:"Enter exchange rate to convert from {currency} to {baseCurrency}",currency_freak:"Currency Freak",currency_layer:"Currency Layer",open_exchange_rate:"Open Exchange Rate",currency_converter:"Currency Converter",server:"Server",url:"URL",active:"Active",currency_help_text:"This provider will only be used on above selected currencies",currency_in_used:"The following currencies are already active on another provider. Please remove these currencies from selection to activate this provider again."},tax_types:{title:"Các loại thuế",add_tax:"Thêm thuế",edit_tax:"Chỉnh sửa thuế",description:"Bạn có thể thêm hoặc bớt thuế tùy ý. InvoiceShelf hỗ trợ Thuế đối với các mặt hàng riêng lẻ cũng như trên hóa đơn.",add_new_tax:"Thêm thuế mới",tax_settings:"Cài đặt thuế",tax_per_item:"Thuế mỗi mặt hàng",tax_name:"Tên thuế",compound_tax:"Thuế tổng hợp",percent:"Phần trăm",action:"Hoạt động",tax_setting_description:"Bật tính năng này nếu bạn muốn thêm thuế vào các mục hóa đơn riêng lẻ. Theo mặc định, thuế được thêm trực tiếp vào hóa đơn.",created_message:"Loại thuế đã được tạo thành công",updated_message:"Đã cập nhật thành công loại thuế",deleted_message:"Đã xóa thành công loại thuế",confirm_delete:"Bạn sẽ không thể khôi phục Loại thuế này",already_in_use:"Thuế đã được sử dụng"},payment_modes:{title:"Payment Modes",description:"Modes of transaction for payments",add_payment_mode:"Add Payment Mode",edit_payment_mode:"Edit Payment Mode",mode_name:"Mode Name",payment_mode_added:"Payment Mode Added",payment_mode_updated:"Payment Mode Updated",payment_mode_confirm_delete:"You will not be able to recover this Payment Mode",payments_attached:"This payment method is already attached to payments. Please delete the attached payments to proceed with deletion.",expenses_attached:"This payment method is already attached to expenses. Please delete the attached expenses to proceed with deletion.",deleted_message:"Payment Mode deleted successfully"},expense_category:{title:"Hạng mục Chi phí",action:"Hoạt động",description:"Các danh mục được yêu cầu để thêm các mục chi phí. Bạn có thể Thêm hoặc Xóa các danh mục này tùy theo sở thích của mình.",add_new_category:"Thêm danh mục mới",add_category:"thêm thể loại",edit_category:"Chỉnh sửa danh mục",category_name:"tên danh mục",category_description:"Sự miêu tả",created_message:"Danh mục Chi phí đã được tạo thành công",deleted_message:"Đã xóa thành công danh mục chi phí",updated_message:"Đã cập nhật danh mục chi phí thành công",confirm_delete:"Bạn sẽ không thể khôi phục Danh mục Chi phí này",already_in_use:"Danh mục đã được sử dụng"},preferences:{currency:"Tiền tệ",default_language:"Ngôn ngữ mặc định",time_zone:"Múi giờ",fiscal_year:"Năm tài chính",date_format:"Định dạng ngày tháng",discount_setting:"Cài đặt chiết khấu",discount_per_item:"Giảm giá cho mỗi mặt hàng",discount_setting_description:"Bật tính năng này nếu bạn muốn thêm Giảm giá vào các mặt hàng hóa đơn riêng lẻ. Theo mặc định, Giảm giá được thêm trực tiếp vào hóa đơn.",expire_public_links:"Automatically Expire Public Links",expire_setting_description:"Specify whether you would like to expire all the links sent by application to view invoices, estimates & payments, etc after a specified duration.",save:"Tiết kiệm",preference:"Sở thích | Sở thích",general_settings:"Tùy chọn mặc định cho hệ thống.",updated_message:"Đã cập nhật thành công các tùy chọn",select_language:"Chọn ngôn ngữ",select_time_zone:"Chọn múi giờ",select_date_format:"Chọn định dạng ngày",select_financial_year:"Chọn năm tài chính",recurring_invoice_status:"Recurring Invoice Status",create_status:"Create Status",active:"Active",on_hold:"On Hold",update_status:"Update Status",completed:"Completed",company_currency_unchangeable:"Company currency cannot be changed"},update_app:{title:"Cập nhật ứng dụng",description:"Bạn có thể dễ dàng cập nhật InvoiceShelf bằng cách kiểm tra bản cập nhật mới bằng cách nhấp vào nút bên dưới",check_update:"Kiểm tra cập nhật",avail_update:"Cập nhật mới có sẵn",next_version:"Phiên bản tiếp theo",requirements:"Yêu cầu",update:"Cập nhật bây giờ",update_progress:"Đang cập nhật ...",progress_text:"Nó sẽ chỉ mất một vài phút. Vui lòng không làm mới màn hình hoặc đóng cửa sổ trước khi cập nhật kết thúc",update_success:"Ứng dụng đã được cập nhật! Vui lòng đợi trong khi cửa sổ trình duyệt của bạn được tải lại tự động.",latest_message:"Không có bản cập nhật nào! Bạn đang sử dụng phiên bản mới nhất.",current_version:"Phiên bản hiện tại",download_zip_file:"Tải xuống tệp ZIP",unzipping_package:"Gói giải nén",copying_files:"Sao chép các tập tin",deleting_files:"Xóa các tệp không sử dụng",running_migrations:"Chạy di cư",finishing_update:"Cập nhật kết thúc",update_failed:"Cập nhật không thành công",update_failed_text:"Lấy làm tiếc! Cập nhật của bạn không thành công vào: bước {step}",update_warning:"All of the application files and default template files will be overwritten when you update the application using this utility. Please take a backup of your templates & database before updating."},backup:{title:"Sao lưu | Sao lưu",description:"Bản sao lưu là một tệp zip chứa tất cả các tệp trong thư mục bạn chỉ định cùng với một kết xuất cơ sở dữ liệu của bạn",new_backup:"Thêm bản sao lưu mới",create_backup:"Tạo bản sao",select_backup_type:"Chọn loại sao lưu",backup_confirm_delete:"Bạn sẽ không thể khôi phục Bản sao lưu này",path:"con đường",new_disk:"Đĩa mới",created_at:"được tạo ra tại",size:"kích thước",dropbox:"dropbox",local:"địa phương",healthy:"khỏe mạnh",amount_of_backups:"lượng sao lưu",newest_backups:"bản sao lưu mới nhất",used_storage:"lưu trữ đã sử dụng",select_disk:"Chọn đĩa",action:"Hoạt động",deleted_message:"Đã xóa bản sao lưu thành công",created_message:"Đã tạo thành công bản sao lưu",invalid_disk_credentials:"Thông tin đăng nhập không hợp lệ của đĩa đã chọn"},disk:{title:"Đĩa tập tin | Đĩa Tệp",description:"Theo mặc định, InvoiceShelf sẽ sử dụng đĩa cục bộ của bạn để lưu các bản sao lưu, ảnh đại diện và các tệp hình ảnh khác. Bạn có thể định cấu hình nhiều hơn một trình điều khiển đĩa như DigitalOcean, S3 và Dropbox theo sở thích của mình.",created_at:"được tạo ra tại",dropbox:"dropbox",name:"Tên",driver:"Người lái xe",disk_type:"Kiểu",disk_name:"Tên đĩa",new_disk:"Thêm đĩa mới",filesystem_driver:"Trình điều khiển hệ thống tập tin",local_driver:"Trình điều khiển địa phương",local_root:"Gốc cục bộ",public_driver:"Tài xế công cộng",public_root:"Gốc công khai",public_url:"URL công khai",public_visibility:"Hiển thị công khai",media_driver:"Trình điều khiển phương tiện",media_root:"Gốc phương tiện",aws_driver:"Trình điều khiển AWS",aws_key:"Khóa AWS",aws_secret:"Bí mật AWS",aws_region:"Khu vực AWS",aws_bucket:"Nhóm AWS",aws_root:"Gốc AWS",do_spaces_type:"Làm kiểu Spaces",do_spaces_key:"Do phím Spaces",do_spaces_secret:"Làm bí mật về không gian",do_spaces_region:"Do Spaces Region",do_spaces_bucket:"Do Spaces Bucket",do_spaces_endpoint:"Do Spaces Endpoint",do_spaces_root:"Do Spaces Root",dropbox_type:"Loại hộp chứa",dropbox_token:"Mã thông báo Dropbox",dropbox_key:"Khóa Dropbox",dropbox_secret:"Bí mật Dropbox",dropbox_app:"Ứng dụng Dropbox",dropbox_root:"Gốc Dropbox",default_driver:"Trình điều khiển mặc định",is_default:"LÀ ĐỊNH NGHĨA",set_default_disk:"Đặt đĩa mặc định",set_default_disk_confirm:"Đĩa này sẽ được đặt làm mặc định và tất cả các tệp PDF mới sẽ được lưu trên đĩa này",success_set_default_disk:"Đĩa được đặt làm mặc định thành công",save_pdf_to_disk:"Lưu PDF vào đĩa",disk_setting_description:"Bật tính năng này, nếu bạn muốn lưu một bản sao của mỗi Hóa đơn, Ước tính",select_disk:"Chọn đĩa",disk_settings:"Cài đặt đĩa",confirm_delete:"Tệp hiện có của bạn",action:"Hoạt động",edit_file_disk:"Chỉnh sửa Đĩa Tệp",success_create:"Đã thêm đĩa thành công",success_update:"Đã cập nhật đĩa thành công",error:"Thêm đĩa không thành công",deleted_message:"Đĩa Tệp đã được xóa thành công",disk_variables_save_successfully:"Đã cấu hình đĩa thành công",disk_variables_save_error:"Cấu hình đĩa không thành công.",invalid_disk_credentials:"Thông tin đăng nhập không hợp lệ của đĩa đã chọn"},taxations:{add_billing_address:"Enter Billing Address",add_shipping_address:"Enter Shipping Address",add_company_address:"Enter Company Address",modal_description:"The information below is required in order to fetch sales tax.",add_address:"Add Address for fetching sales tax.",address_placeholder:"Example: 123, My Street",city_placeholder:"Example: Los Angeles",state_placeholder:"Example: CA",zip_placeholder:"Example: 90024",invalid_address:"Please provide valid address details."}},Cie={account_info:"thông tin tài khoản",account_info_desc:"Thông tin chi tiết dưới đây sẽ được sử dụng để tạo tài khoản Quản trị viên chính. Ngoài ra, bạn có thể thay đổi thông tin chi tiết bất cứ lúc nào sau khi đăng nhập.",name:"Tên",email:"E-mail",password:"Mật khẩu",confirm_password:"Xác nhận mật khẩu",save_cont:"Tiết kiệm",company_info:"Thông tin công ty",company_info_desc:"Thông tin này sẽ được hiển thị trên hóa đơn. Lưu ý rằng bạn có thể chỉnh sửa điều này sau trên trang cài đặt.",company_name:"Tên công ty",company_logo:"Logo công ty",logo_preview:"Xem trước Logo",preferences:"Sở thích",preferences_desc:"Tùy chọn mặc định cho hệ thống.",currency_set_alert:"The company's currency cannot be changed later.",country:"Quốc gia",state:"Tiểu bang",city:"Tp.",address:"Địa chỉ",street:"Phố1 | Street2",phone:"Điện thoại",zip_code:"Mã Bưu Chính",go_back:"Quay lại",currency:"Tiền tệ",language:"Ngôn ngữ",time_zone:"Múi giờ",fiscal_year:"Năm tài chính",date_format:"Định dạng ngày tháng",from_address:"Từ địa chỉ",username:"tên tài khoản",next:"Kế tiếp",continue:"Tiếp tục",skip:"Nhảy",database:{database:"URL trang web",connection:"Kết nối cơ sở dữ liệu",host:"Máy chủ cơ sở dữ liệu",port:"Cổng cơ sở dữ liệu",password:"Mật khẩu cơ sở dữ liệu",app_url:"URL ứng dụng",app_domain:"Miền ứng dụng",username:"Tên người dùng cơ sở dữ liệu",db_name:"Tên cơ sở dữ liệu",db_path:"Đường dẫn cơ sở dữ liệu",desc:"Tạo cơ sở dữ liệu trên máy chủ của bạn và đặt thông tin đăng nhập bằng biểu mẫu bên dưới."},permissions:{permissions:"Quyền",permission_confirm_title:"Bạn có chắc chắn muốn tiếp tục không?",permission_confirm_desc:"Kiểm tra quyền thư mục không thành công",permission_desc:"Dưới đây là danh sách các quyền đối với thư mục được yêu cầu để ứng dụng hoạt động. Nếu kiểm tra quyền không thành công, hãy đảm bảo cập nhật quyền thư mục của bạn."},verify_domain:{title:"Domain Verification",desc:"InvoiceShelf uses Session based authentication which requires domain verification for security purposes. Please enter the domain on which you will be accessing your web application.",app_domain:"App Domain",verify_now:"Verify Now",success:"Domain Verify Successfully.",failed:"Domain verification failed. Please enter valid domain name.",verify_and_continue:"Verify And Continue"},mail:{host:"Máy chủ Thư",port:"Cổng thư",driver:"Trình điều khiển Thư",secret:"Bí mật",mailgun_secret:"Bí mật Mailgun",mailgun_domain:"Miền",mailgun_endpoint:"Điểm cuối của Mailgun",ses_secret:"Bí mật SES",ses_key:"Khóa SES",password:"Mật khẩu thư",username:"Tên người dùng thư",mail_config:"Cấu hình thư",from_name:"Từ tên thư",from_mail:"Từ địa chỉ thư",encryption:"Mã hóa Thư",mail_config_desc:"Dưới đây là biểu mẫu Định cấu hình trình điều khiển Email để gửi email từ ứng dụng. Bạn cũng có thể định cấu hình các nhà cung cấp bên thứ ba như Sendgrid, SES, v.v."},req:{system_req:"yêu cầu hệ thống",php_req_version:"Php (bắt buộc phải có phiên bản {version})",check_req:"Kiểm tra yêu cầu",system_req_desc:"InvoiceShelf có một số yêu cầu máy chủ. Đảm bảo rằng máy chủ của bạn có phiên bản php bắt buộc và tất cả các phần mở rộng được đề cập bên dưới."},errors:{migrate_failed:"Di chuyển không thành công",database_variables_save_error:"Không thể ghi cấu hình vào tệp .env. Vui lòng kiểm tra quyền đối với tệp của nó",mail_variables_save_error:"Cấu hình email không thành công.",connection_failed:"Kết nối cơ sở dữ liệu không thành công",database_should_be_empty:"Cơ sở dữ liệu phải trống"},success:{mail_variables_save_successfully:"Email được định cấu hình thành công",database_variables_save_successfully:"Đã cấu hình thành công cơ sở dữ liệu."}},Tie={invalid_phone:"Số điện thoại không hợp lệ",invalid_url:"Url không hợp lệ (ví dụ: http://www.invoiceshelf.com)",invalid_domain_url:"Url không hợp lệ (ví dụ: invoiceshelf.com)",required:"Lĩnh vực được yêu cầu",email_incorrect:"Email không chính xác.",email_already_taken:"Lá thư đã được lấy đi.",email_does_not_exist:"Người dùng có email đã cho không tồn tại",item_unit_already_taken:"Tên đơn vị mặt hàng này đã được sử dụng",payment_mode_already_taken:"Tên phương thức thanh toán này đã được sử dụng",send_reset_link:"Gửi liên kết đặt lại",not_yet:"Chưa? Gửi lại",password_min_length:"Mật khẩu phải chứa {count} ký tự",name_min_length:"Tên phải có ít nhất {count} chữ cái.",prefix_min_length:"Prefix must have at least {count} letters.",enter_valid_tax_rate:"Nhập thuế suất hợp lệ",numbers_only:"Chỉ số.",characters_only:"Chỉ nhân vật.",password_incorrect:"Mật khẩu phải giống hệt nhau",password_length:"Mật khẩu phải dài {count} ký tự.",qty_must_greater_than_zero:"Số lượng phải lớn hơn không.",price_greater_than_zero:"Giá phải lớn hơn 0.",payment_greater_than_zero:"Khoản thanh toán phải lớn hơn 0.",payment_greater_than_due_amount:"Thanh toán đã nhập nhiều hơn số tiền đến hạn của hóa đơn này.",quantity_maxlength:"Số lượng không được lớn hơn 20 chữ số.",price_maxlength:"Giá không được lớn hơn 20 chữ số.",price_minvalue:"Giá phải lớn hơn 0.",amount_maxlength:"Số tiền không được lớn hơn 20 chữ số.",amount_minvalue:"Số tiền phải lớn hơn 0.",discount_maxlength:"Discount should not be greater than max discount",description_maxlength:"Mô tả không được lớn hơn 65.000 ký tự.",subject_maxlength:"Chủ đề không được lớn hơn 100 ký tự.",message_maxlength:"Tin nhắn không được lớn hơn 255 ký tự.",maximum_options_error:"Đã chọn tối đa {max} tùy chọn. Đầu tiên, hãy xóa một tùy chọn đã chọn để chọn một tùy chọn khác.",notes_maxlength:"Ghi chú không được lớn hơn 65.000 ký tự.",address_maxlength:"Địa chỉ không được lớn hơn 255 ký tự.",ref_number_maxlength:"Số tham chiếu không được lớn hơn 255 ký tự.",prefix_maxlength:"Tiền tố không được lớn hơn 5 ký tự.",something_went_wrong:"có gì đó không ổn",number_length_minvalue:"Number length should be greater than 0",at_least_one_ability:"Please select atleast one Permission.",valid_driver_key:"Please enter a valid {driver} key.",valid_exchange_rate:"Please enter a valid exchange rate.",company_name_not_same:"Company name must match with given name."},jie={starter_plan:"This feature is available on Starter plan and onwards!",invalid_provider_key:"Please Enter Valid Provider API Key.",estimate_number_used:"The estimate number has already been taken.",invoice_number_used:"The invoice number has already been taken.",payment_attached:"This invoice already has a payment attached to it. Make sure to delete the attached payments first in order to go ahead with the removal.",payment_number_used:"The payment number has already been taken.",name_already_taken:"The name has already been taken.",receipt_does_not_exist:"Receipt does not exist.",customer_cannot_be_changed_after_payment_is_added:"Customer cannot be change after payment is added",invalid_credentials:"Invalid Credentials.",not_allowed:"Not Allowed",login_invalid_credentials:"These credentials do not match our records.",enter_valid_cron_format:"Please enter a valid cron format",email_could_not_be_sent:"Email could not be sent to this email address.",invalid_address:"Please enter a valid address.",invalid_key:"Please enter valid key.",invalid_state:"Please enter a valid state.",invalid_city:"Please enter a valid city.",invalid_postal_code:"Please enter a valid zip.",invalid_format:"Please enter valid query string format.",api_error:"Server not responding.",feature_not_enabled:"Feature not enabled.",request_limit_met:"Api request limit exceeded.",address_incomplete:"Incomplete Address"},Nie="Ước tính",Iie="Số ước tính",Fie="Ngày ước tính",Rie="Ngày hết hạn",Oie="Hóa đơn",Mie="Số hóa đơn",$ie="Ngày lập hóa đơn",Lie="Ngày đáo hạn",Bie="Ghi chú",Uie="Mặt hàng",Vie="Định lượng",qie="Giá bán",Wie="Giảm giá",Hie="Số tiền",Kie="Tổng phụ",Yie="Toàn bộ",Zie="Thanh toán",Gie="HÓA ĐƠN THANH TOÁN",Qie="Ngày thanh toán",Jie="Số tiền phải trả",Xie="Phương thức thanh toán",eoe="Số tiền nhận được",toe="BÁO CÁO CHI PHÍ",aoe="TỔNG CHI PHÍ",noe="LỢI NHUẬN",ioe="Báo cáo khách hàng bán hàng",ooe="Báo cáo mặt hàng bán hàng",soe="Báo cáo Tóm tắt Thuế",roe="THU NHẬP = EARNINGS",loe="LỢI NHUẬN RÒNG",coe="Báo cáo bán hàng: Bởi khách hàng",doe="TỔNG DOANH SỐ BÁN HÀNG",uoe="Báo cáo bán hàng: Theo mặt hàng",_oe="BÁO CÁO THUẾ",moe="TỔNG THUẾ",poe="Các loại thuế",foe="Chi phí",hoe="Hoa đơn để,",goe="Tàu,",voe="Nhận được tư:",yoe="Tax",boe={navigation:uie,general:_ie,dashboard:mie,tax_types:pie,global_search:fie,company_switcher:hie,dateRange:gie,customers:vie,items:yie,estimates:bie,invoices:kie,recurring_invoices:wie,payments:Die,expenses:xie,login:Sie,modules:Pie,users:Eie,reports:zie,settings:Aie,wizard:Cie,validation:Tie,errors:jie,pdf_estimate_label:Nie,pdf_estimate_number:Iie,pdf_estimate_date:Fie,pdf_estimate_expire_date:Rie,pdf_invoice_label:Oie,pdf_invoice_number:Mie,pdf_invoice_date:$ie,pdf_invoice_due_date:Lie,pdf_notes:Bie,pdf_items_label:Uie,pdf_quantity_label:Vie,pdf_price_label:qie,pdf_discount_label:Wie,pdf_amount_label:Hie,pdf_subtotal:Kie,pdf_total:Yie,pdf_payment_label:Zie,pdf_payment_receipt_label:Gie,pdf_payment_date:Qie,pdf_payment_number:Jie,pdf_payment_mode:Xie,pdf_payment_amount_received_label:eoe,pdf_expense_report_label:toe,pdf_total_expenses_label:aoe,pdf_profit_loss_label:noe,pdf_sales_customers_label:ioe,pdf_sales_items_label:ooe,pdf_tax_summery_label:soe,pdf_income_label:roe,pdf_net_profit_label:loe,pdf_customer_sales_report:coe,pdf_total_sales_label:doe,pdf_item_sales_label:uoe,pdf_tax_report_label:_oe,pdf_total_tax_label:moe,pdf_tax_types_label:poe,pdf_expenses_label:foe,pdf_bill_to:hoe,pdf_ship_to:goe,pdf_received_from:voe,pdf_tax_label:yoe},koe={dashboard:"Ταμπλό",customers:"Πελάτες",items:"Προϊόντα",invoices:"Τιμολόγια","recurring-invoices":"Επαναλαμβανόμενα τιμολόγια",expenses:"Έξοδα",estimates:"Προσφορές",payments:"Πληρωμές",reports:"Αναφορές",settings:"Ρυθμίσεις",logout:"Αποσύνδεση",users:"Χρήστες",modules:"Πρόσθετα"},woe={add_company:"Προσθήκη Εταιρείας",view_pdf:"Προβολή PDF",copy_pdf_url:"Αντιγραφή συνδέσμου PDF",download_pdf:"Λήψη PDF",save:"Αποθήκευση",create:"Δημιουργία",cancel:"Ακύρωση",update:"Ενημέρωση",deselect:"Αποεπιλογή",download:"Κατεβάστε το",from_date:"Από Ημερομηνία",to_date:"Έως ημερομηνία",from:"Aπό",to:"Προς",ok:"Οκ",yes:"Ναι",no:"Όχι",sort_by:"Ταξινόμηση κατά",ascending:"Αύξουσα",descending:"Φθίνουσα",subject:"Θέμα",body:"Σώμα",message:"Μήνυμα",send:"Αποστολή",preview:"Προεπισκόπηση",go_back:"Επιστροφή",back_to_login:"Πίσω στην σελίδα Σύνδεσης;",home:"Αρχική",filter:"Φίλτρα",delete:"Διαγραφή",edit:"Επεξεργασία",view:"Προβολή",add_new_item:"Προσθήκη Νέου Στοιχείου",clear_all:"Εκκαθάριση όλων",showing:"Εμφανίζονται",of:"του",actions:"Ενέργειες",subtotal:"Μερικό Σύνολο",discount:"ΈΚΠΤΩΣΗ",fixed:"Σταθερό",percentage:"Ποσοστό",tax:"ΦΟΡΟΣ",total_amount:"ΣΥΝΟΛΙΚΟ ΠΟΣΟ",bill_to:"Χρέωση σε",ship_to:"Αποστολή σε",due:"Οφειλόμενο",draft:"Πρόχειρο",sent:"Απεσταλμένα",all:"Όλα",select_all:"Επιλογή Όλων",select_template:"Επιλογή Προτύπου",choose_file:"Κάντε κλικ εδώ για να επιλέξετε αρχείο",choose_template:"Επιλέξτε ένα πρότυπο",choose:"Επιλέξτε",remove:"Κατάργηση",select_a_status:"Επιλέξτε κατάσταση",select_a_tax:"Επιλέξτε φόρο",search:"Αναζήτηση",are_you_sure:"Είστε σίγουρος/η;",list_is_empty:"Η λίστα είναι κενή.",no_tax_found:"Δεν βρέθηκε φόρος!",four_zero_four:"404",you_got_lost:"Ουπς! Έχετε Χαθεί!",go_home:"Μετάβαση στην Αρχική",test_mail_conf:"Δοκιμή Ρύθμισης Αλληλογραφίας",send_mail_successfully:"Το Μήνυμα εστάλη επιτυχώς",setting_updated:"Οι Ρυθμίσεις ενημερώθηκαν επιτυχώς",select_state:"Επιλογή νομού",select_country:"Επιλογή Χώρας",select_city:"Επιλογή Πόλης",street_1:"Οδός 1",street_2:"Οδός 2",action_failed:"Αποτυχία Ενέργειας",retry:"Επανάληψη",choose_note:"Επιλογή Σημείωσης",no_note_found:"Δεν Βρέθηκε Σημείωση",insert_note:"Εισαγωγή Σημείωσης",copied_pdf_url_clipboard:"Αντιγράφηκε το url του PDF στo πρόχειρο!",copied_url_clipboard:"Ο σύνδεσμος αντιγράφηκε στο πρόχειρο!",docs:"Έγγραφα",do_you_wish_to_continue:"Θέλετε να συνεχίσετε;",note:"Σημείωση",pay_invoice:"Πληρωμή τιμολογίου",login_successfully:"Η είσοδος ήταν επιτυχής!",logged_out_successfully:"Η έξοδος ήταν επιτυχής",mark_as_default:"Σημείωση ως προεπιλογή"},Doe={select_year:"Επιλογή έτους",cards:{due_amount:"Οφειλόμενο Ποσό",customers:"Πελάτες",invoices:"Τιμολόγια",estimates:"Προσφορές",payments:"Πληρωμές"},chart_info:{total_sales:"Πωλήσεις",total_receipts:"Αποδείξεις",total_expense:"Έξοδα",net_income:"Καθαρό Εισόδημα",year:"Επιλογή έτους"},monthly_chart:{title:"Πωλήσεις & Έξοδα"},recent_invoices_card:{title:"Ανεξόφλητα Τιμολόγια",due_on:"Εξόφληση Έως",customer:"Πελάτης",amount_due:"Οφειλόμενο ποσό",actions:"Ενέργειες",view_all:"Προβολή Όλων"},recent_estimate_card:{title:"Πρόσφατες προσφορές",date:"Ημερομηνία",customer:"Πελάτης",amount_due:"Οφειλόμενο Ποσό",actions:"Ενέργειες",view_all:"Προβολή Όλων"}},xoe={name:"Όνομα",description:"Περιγραφή",percent:"Ποσοστό",compound_tax:"Σύνθετος Φόρος"},Soe={search:"Αναζήτηση...",customers:"Πελάτες",users:"Χρήστες",no_results_found:"Δεν Βρέθηκαν Αποτελέσματα"},Poe={label:"ΑΛΛΑΓΗ ΕΤΑΙΡΕΙΑΣ",no_results_found:"Δεν Βρέθηκαν Αποτελέσματα",add_new_company:"Προσθήκη νέας εταιρείας",new_company:"Νέα εταιρεία",created_message:"Η εταιρεία δημιουργήθηκε επιτυχώς"},Eoe={today:"Σήμερα",this_week:"Τρέχουσα Εβδομάδα",this_month:"Τρέχων Μήνας",this_quarter:"Τρέχον Τρίμηνο",this_year:"Τρέχον Έτος",previous_week:"Προηγούμενη Εβδομάδα",previous_month:"Προηγούμενος Μήνας",previous_quarter:"Προηγούμενο Τρίμηνο",previous_year:"Προηγούμενο Έτος",custom:"Προσαρμοσμένο"},zoe={title:"Πελάτες",prefix:"Πρόθεμα",add_customer:"Προσθήκη Πελάτη",contacts_list:"Λίστα Πελατών",name:"Όνομα",mail:"Μήνυμα ηλεκτρονικού ταχυδρομείου",statement:"Κατάσταση",display_name:"Εμφανιζόμενο Όνομα",primary_contact_name:"Κύρια επαφή",contact_name:"Όνομα Επαφής",amount_due:"Οφειλόμενο Ποσό",email:"Ηλεκτρονική διεύθυνση",address:"Διεύθυνση",phone:"Τηλέφωνο",website:"Ιστοσελίδα",overview:"Επισκόπηση",invoice_prefix:"Πρόθεμα παραστατικού",estimate_prefix:"Εκτίμηση Προθέματος",payment_prefix:"Πρόθεμα Πληρωμής",enable_portal:"Ενεργοποιήση Πύλης",country:"Χώρα",state:"Νομός",city:"Πόλη",zip_code:"Ταχυδρομικός κώδικας",added_on:"Προστέθηκε Στις",action:"Ενέργεια",password:"Κωδικός",confirm_password:"Επιβεβαίωση Κωδικού",street_number:"Αριθμός οδού",primary_currency:"Κύριο Νόμισμα",description:"Περιγραφή",add_new_customer:"Προσθήκη Νέου Πελάτη",save_customer:"Αποθήκευση πελάτη",update_customer:"Ενημέρωση πελατών",customer:"Πελάτες - Πελάτες",new_customer:"Νέος πελάτης",edit_customer:`Επεξεργασία Πελάτη -`,basic_info:"Βασικές Πληροφορίες",portal_access:"Portal Access",portal_access_text:"Would you like to allow this customer to login to the Customer Portal?",portal_access_url:"Customer Portal Login URL",portal_access_url_help:"Please copy & forward the above given URL to your customer for providing access.",billing_address:"Διεύθυνση Χρέωσης",shipping_address:"Διεύθυνση Αποστολής",copy_billing_address:"Αντιγραφή από τιμολόγηση",no_customers:"Δεν υπάρχουν πελάτες ακόμα!",no_customers_found:"Δεν βρέθηκαν πελάτες",no_contact:"Καμμία επαφή",no_contact_name:"Δεν υπάρχει όνομα επαφής",list_of_customers:"Αυτή η ενότητα θα περιέχει τη λίστα πελατών.",primary_display_name:"Κύριο Εμφανιζόμενο Όνομα",select_currency:"Επιλογή νομίσματος",select_a_customer:"Επιλέξτε έναν πελάτη",type_or_click:"Πληκτρολογήστε ή κάντε κλικ για να επιλέξετε ένα στοιχείο",new_transaction:"Νέα συναλλαγή",no_matching_customers:"Δεν υπάρχουν πελάτες που να ταιριάζουν!",phone_number:"Αριθμός Τηλεφώνου",create_date:"Ημερομηνία Δημιουργίας",confirm_delete:"Δεν θα είστε σε θέση να ανακτήσει αυτόν τον πελάτη και όλα τα σχετικά Τιμολόγια, Εκτιμήσεις και Πληρωμές. √ Δεν θα είστε σε θέση να ανακτήσει αυτούς τους πελάτες και όλα τα σχετικά Τιμολόγια, Εκτιμήσεις και Πληρωμές.",created_message:"Ο πελάτης δημιουργήθηκε με επιτυχία",updated_message:"Ο πελάτης ενημερώθηκε με επιτυχία",address_updated_message:"Address Information Updated succesfully",deleted_message:"Πελάτης διαγράφηκε επιτυχώς | Οι πελάτες διαγράφηκαν με επιτυχία",edit_currency_not_allowed:"Δεν είναι δυνατή η αλλαγή νομίσματος μόλις δημιουργηθούν συναλλαγές."},Aoe={title:"Στοιχεία",items_list:"Λίστα Στοιχείων",name:"Όνομα",unit:"Μονάδα",description:"Περιγραφή",added_on:"Προστέθηκε Στις",price:"Τιμή",date_of_creation:"Ημερομηνία Δημιουργίας",not_selected:"Δεν έχει επιλεχθεί στοιχείο",action:"Ενέργεια",add_item:"Προσθήκη Στοιχείου",save_item:"Αποθήκευση Στοιχείου",update_item:"Ενημέρωση Στοιχείου",item:"Στοιχείο | Στοιχεία",add_new_item:"Προσθήκη Νέου Στοιχείου",new_item:"Νέο Στοιχείο",edit_item:"Επεξεργασία Στοιχείου",no_items:"Δεν υπάρχουν Στοιχεία ακόμα!",list_of_items:"Αυτή η ενότητα θα περιέχει τη λίστα των στοιχείων.",select_a_unit:"επιλέξτε μονάδα",taxes:"Φόροι",item_attached_message:"Δεν είναι δυνατή η διαγραφή ενός στοιχείου που χρησιμοποιείται ήδη",confirm_delete:"Δεν θα είστε σε θέση να ανακτήσει αυτή την εκτίμηση ’, δεν θα είστε σε θέση να ανακτήσει αυτές τις εκτιμήσεις",created_message:"Το αντικείμενο δημιουργήθηκε επιτυχώς",updated_message:"Το αντικείμενο ενημερώθηκε επιτυχώς",deleted_message:"Ο υπολογισμός διαγράφηκε επιτυχώς"},Coe={title:"Προσφορές",accept_estimate:"Accept Estimate",reject_estimate:"Reject Estimate",estimate:"Προσφορά | Προσφορές",estimates_list:"Λίστα προσφορών",days:"{days} Ημέρες",months:"{months} Μήνας",years:"{years} Έτος",all:"Όλα",paid:"Εξοφλημένο",unpaid:"Ανεξόφλητο",customer:"Πελάτης",ref_no:"REF NO.",number:"ΑΡΙΘΜΟΣ",amount_due:"ΠΟΣΟ ΠΡΟΣ ΠΛΗΡΩΜΗ",partially_paid:"Μερικώς Εξοφλημένο",total:"Σύνολο ",discount:"Έκπτωση",sub_total:"Μερικό Σύνολο",estimate_number:"Εκτίμηση Αριθμού",ref_number:"Αριθμός Αναφοράς",contact:"Επικοινωνία",add_item:"Προσθήκη στοιχείου",date:"Ημερομηνία",due_date:"Ημερομηνία λήξης",expiry_date:"Ημερομηνία λήξης",status:"Κατάσταση",add_tax:"Προσθήκη Φόρου",amount:"Ποσό",action:"Ενέργεια",notes:"Σημειώσεις",tax:"Φόρος",estimate_template:"Πρότυπο",convert_to_invoice:"Μετατράπηκε σε Τιμολόγιο",mark_as_sent:"Σήμανση ως απεσταλμένου",send_estimate:"Νέα Εκτίμηση",resend_estimate:"Πρόσφατες προσφορές",record_payment:"Καταγραφή Πληρωμής",add_estimate:"Νέα Εκτίμηση",save_estimate:"Νέα Εκτίμηση",confirm_conversion:"Αυτή η εκτίμηση θα χρησιμοποιηθεί για τη δημιουργία ενός νέου τιμολογίου.",conversion_message:"Το τιμολόγιο κλωνοποιήθηκε επιτυχώς",confirm_send_estimate:"Αυτό το τιμολόγιο θα αποσταλεί μέσω email στον πελάτη",confirm_mark_as_sent:"Η εκτίμηση αυτή θα επισημανθεί ως εστάλη",confirm_mark_as_accepted:"Αυτό το τιμολόγιο θα επισημανθεί ως Απορριπτόμενο",confirm_mark_as_rejected:"Αυτό το τιμολόγιο θα επισημανθεί ως Απορριπτόμενο",no_matching_estimates:"Δεν υπάρχουν αντίστοιχες προσφορές!",mark_as_sent_successfully:"Το τιμολόγιο επισημάνθηκε ως απεσταλμένο επιτυχώς",send_estimate_successfully:"Το τιμολόγιο εστάλη επιτυχώς",errors:{required:"Το πεδίο είναι υποχρεωτικό"},accepted:"Αποδεκτή",rejected:"Απορρίφθηκε",expired:"Expired",sent:"Αποστολή",draft:"Πρόχειρο",viewed:"Viewed",declined:"Απορρίφθηκε",new_estimate:"Νέα Εκτίμηση",add_new_estimate:"Προσθήκη Νέας Εκτίμησης",update_Estimate:"Ενημέρωση εκτίμησης",edit_estimate:"Επεξεργασία Εκτίμησης",items:"στοιχεία",Estimate:"Προσφορά | Προσφορές",add_new_tax:"Προσθήκη Νέου Φόρου",no_estimates:"Δεν υπάρχουν προσφορές ακόμα!",list_of_estimates:"Αυτή η ενότητα θα περιέχει τη λίστα των στοιχείων.",mark_as_rejected:"Σήμανση ως απορρίφθηκε",mark_as_accepted:"Σήμανση ως αποδεκτό",marked_as_accepted_message:"Εκτίμηση που έχει επισημανθεί ως αποδεκτή",marked_as_rejected_message:"Εκτίμηση που σημειώνεται ως απορριφθείσα",confirm_delete:"Δεν θα είστε σε θέση να ανακτήσει αυτή την εκτίμηση ’, δεν θα είστε σε θέση να ανακτήσει αυτές τις εκτιμήσεις",created_message:"Το τιμολόγιο εστάλη επιτυχώς",updated_message:"Το τιμολόγιο εστάλη επιτυχώς",deleted_message:"Ο υπολογισμός διαγράφηκε επιτυχώς",something_went_wrong:"Κάτι πήγε στραβά",item:{title:"Τίτλος Προϊόντος",description:"Περιγραφή",quantity:"Ποσότητα",price:"Τιμή",discount:"Έκπτωση",total:"Σύνολο ",total_discount:"Συνολική Έκπτωση",sub_total:"Μερικό Σύνολο",tax:"Φόρος",amount:"Ποσό",select_an_item:"Πληκτρολογήστε ή κάντε κλικ για να επιλέξετε ένα στοιχείο",type_item_description:"Πληκτρολογήστε Περιγραφή Στοιχείου (προαιρετικό)"},mark_as_default_estimate_template_description:"If enabled, the selected template will be automatically selected for new estimates."},Toe={title:"Τιμολόγια",download:"Download",pay_invoice:"Pay Invoice",invoices_list:"Λίστα Τιμολογίων",invoice_information:"Invoice Information",days:"{days} Ημέρες",months:"{months} Μήνας",years:"{years} Έτος",all:"Όλα",paid:"Εξοφλημένο",unpaid:"Ανεξόφλητο",viewed:"Προβλήθηκαν",overdue:"Εκπρόθεσμα",completed:"Ολοκληρώθηκε",customer:"Πελάτης",paid_status:"ΚΑΤΑΣΤΑΣΗ ΠΛΗΡΩΜΗΣ",ref_no:"REF NO.",number:"ΑΡΙΘΜΟΣ",amount_due:"ΠΟΣΟ ΠΡΟΣ ΠΛΗΡΩΜΗ",partially_paid:"Μερικώς Εξοφλημένο",total:"Σύνολο ",discount:"Έκπτωση",sub_total:"Μερικό Σύνολο",invoice:"Τιμολόγια (Τιμολόγια)",invoice_number:"Αριθμός τιμολογίου",ref_number:"Αριθμός Αναφοράς",contact:"Επικοινωνία",add_item:"Προσθήκη στοιχείου",date:"Ημερομηνία",due_date:"Ημερομηνία λήξης",status:"Κατάσταση",add_tax:"Προσθήκη Φόρου",amount:"Ποσό",action:"Ενέργεια",notes:"Σημειώσεις",view:"Προβολή",send_invoice:"Αποστολή Παραστατικών",resend_invoice:"Αποστολή Παραστατικών",invoice_template:"Πρότυπο Τιμολογίου ",conversion_message:"Το τιμολόγιο κλωνοποιήθηκε επιτυχώς",template:"Επιλογή Προτύπου",mark_as_sent:"Σήμανση ως απεσταλμένου",confirm_send_invoice:"Αυτό το τιμολόγιο θα αποσταλεί μέσω email στον πελάτη",invoice_mark_as_sent:"Αυτό το τιμολόγιο θα επισημανθεί ως απεσταλμένο",confirm_mark_as_accepted:"Αυτό το τιμολόγιο θα επισημανθεί ως Αποδεκτό",confirm_mark_as_rejected:"Αυτό το τιμολόγιο θα επισημανθεί ως Απορριπτόμενο",confirm_send:"Αυτό το τιμολόγιο θα αποσταλεί μέσω email στον πελάτη",invoice_date:"Ημερομηνία Τιμολογίου",record_payment:"Καταγραφή Πληρωμής",add_new_invoice:"Προσθήκη Νέου Τιμολογίου",update_expense:"Ενημέρωση Δαπάνης",edit_invoice:"Επεξεργασία Τιμολογίου",new_invoice:"Νέο Τιμολόγιο",save_invoice:"Αποθήκευση Τιμολογίου",update_invoice:"Ενημέρωση Τιμολογίου",add_new_tax:"Προσθήκη Νέου Φόρου",no_invoices:"Κανένα Τιμολόγιο ακόμα!",mark_as_rejected:"Σήμανση ως απορρίφθηκε",mark_as_accepted:"Σήμανση ως αποδεκτό",list_of_invoices:"Αυτή η ενότητα θα περιέχει τη λίστα τιμολογίων.",select_invoice:"Επιλογή Τιμολογίου",no_matching_invoices:"Δεν υπάρχει κανένα αντίστοιχο τιμολόγιο!",mark_as_sent_successfully:"Το τιμολόγιο επισημάνθηκε ως απεσταλμένο επιτυχώς",invoice_sent_successfully:"Το τιμολόγιο εστάλη επιτυχώς",cloned_successfully:"Το τιμολόγιο κλωνοποιήθηκε επιτυχώς",clone_invoice:"Κλωνοποίηση Τιμολογίου",confirm_clone:"Αυτό το τιμολόγιο θα κλωνοποιηθεί σε ένα νέο Τιμολόγιο",item:{title:"Τίτλος Προϊόντος",description:"Περιγραφή",quantity:"Ποσότητα",price:"Τιμή",discount:"Έκπτωση",total:"Ολικό",total_discount:"Συνολική Έκπτωση",sub_total:"Μερικό Σύνολο",tax:"Φόρος",amount:"Ποσό",select_an_item:"Πληκτρολογήστε ή κάντε κλικ για να επιλέξετε ένα στοιχείο",type_item_description:"Πληκτρολογήστε Περιγραφή Στοιχείου (προαιρετικό)"},payment_attached_message:"Αυτό το τιμολόγιο έχει ήδη μια πληρωμή που επισυνάπτεται σε αυτό. Βεβαιωθείτε ότι έχετε διαγράψει πρώτα τις συνημμένες πληρωμές για να προχωρήσετε με την αφαίρεση",confirm_delete:"Δεν θα είστε σε θέση να ανακτήσει αυτή την εκτίμηση ’, δεν θα είστε σε θέση να ανακτήσει αυτές τις εκτιμήσεις",created_message:"Το τιμολόγιο κλωνοποιήθηκε επιτυχώς",updated_message:"Το τιμολόγιο ενημερώθηκε επιτυχώς",deleted_message:"Ο υπολογισμός διαγράφηκε επιτυχώς",marked_as_sent_message:"Το τιμολόγιο επισημάνθηκε ως απεσταλμένο επιτυχώς",something_went_wrong:"Κάτι πήγε στραβά",invalid_due_amount_message:"Συνολικό επαναλαμβανόμενο ποσό Τιμολογίου δεν μπορεί να είναι μικρότερο από το συνολικό καταβληθέν ποσό για αυτό το επαναλαμβανόμενο τιμολόγιο. Παρακαλούμε ενημερώστε το τιμολόγιο ή διαγράψτε τις σχετικές πληρωμές για να συνεχίσετε.",mark_as_default_invoice_template_description:"If enabled, the selected template will be automatically selected for new invoices."},joe={title:"Επαναλαμβανόμενα τιμολόγια",invoices_list:"Επαναλαμβανόμενα τιμολόγια",days:"{days} Ημέρες",months:"{months} Μήνας",years:"{years} Έτος",all:"Όλα",paid:"Εξοφλημένο",unpaid:"Ανεξόφλητο",viewed:"Προβλήθηκαν",overdue:"Εκπρόθεσμα",active:"Ενεργή",completed:"Ολοκληρώθηκε",customer:"Πελάτης",paid_status:"ΚΑΤΑΣΤΑΣΗ ΠΛΗΡΩΜΗΣ",ref_no:"REF NO.",number:"ΑΡΙΘΜΟΣ",amount_due:"ΠΟΣΟ ΠΡΟΣ ΠΛΗΡΩΜΗ",partially_paid:"Μερικώς Εξοφλημένο",total:"Σύνολο ",discount:"Έκπτωση",sub_total:"Μερικό Σύνολο",invoice:"Επαναλαμβανόμενο Τιμολόγιο | Επαναλαμβανόμενα Τιμολόγια",invoice_number:"Αριθμός επαναλαμβανόμενου τιμολογίου",next_invoice_date:"Επόμενη Ημερομηνία Τιμολογίου",ref_number:"Αριθμός Αναφοράς",contact:"Επικοινωνία",add_item:"Προσθήκη στοιχείου",date:"Ημερομηνία",limit_by:"Περιορισμός Ανά:",limit_date:"Περιορισμός Ημερομηνίας",limit_count:"Όριο Καταμέτρησης",count:"Αρίθμηση",status:"Κατάσταση",select_a_status:"Επιλέξτε κατάσταση",working:"Λειτουργεί",on_hold:"Σε αναμονή",complete:"Ολοκληρώθηκε",add_tax:"Προσθήκη Φόρου",amount:"Ποσό",action:"Ενέργεια",notes:"Σημειώσεις",view:"Προβολή",basic_info:"Βασικές Πληροφορίες",send_invoice:"Δημιουργία Επαναλαμβανόμενου Τιμολογίου",auto_send:"Αυτόματη Αποστολή",resend_invoice:"Δημιουργία Επαναλαμβανόμενου Τιμολογίου",invoice_template:"Αριθμός επαναλαμβανόμενου τιμολογίου",conversion_message:"Επαναλαμβανόμενο τιμολόγιο κλωνοποιήθηκε επιτυχής",template:"Πρότυπο",mark_as_sent:"Σήμανση ως απεσταλμένου",confirm_send_invoice:"Αυτό το τιμολόγιο θα αποσταλεί μέσω email στον πελάτη",invoice_mark_as_sent:"Αυτό το τιμολόγιο θα επισημανθεί ως απεσταλμένο",confirm_send:"Αυτό το τιμολόγιο θα αποσταλεί μέσω email στον πελάτη",starts_at:"Ημερομηνία έναρξης",due_date:"Ημ/νία τιμολόγησης",record_payment:"Καταγραφή Πληρωμής",add_new_invoice:"Δημιουργία Επαναλαμβανόμενου Τιμολογίου",update_expense:"Ενημέρωση Δαπάνης",edit_invoice:"Επαναλαμβανόμενα τιμολόγια",new_invoice:"Επαναλαμβανόμενα τιμολόγια",send_automatically:"Αυτόματη Αποστολή",send_automatically_desc:"Ενεργοποιήστε αυτό, αν θέλετε να στείλετε το τιμολόγιο αυτόματα στον πελάτη όταν δημιουργηθεί.",save_invoice:"Αποθήκευση Επαναλαμβανόμενου Τιμολογίου",update_invoice:"Δημιουργία Επαναλαμβανόμενου Τιμολογίου",add_new_tax:"Προσθήκη Νέου Φόρου",no_invoices:"Επαναλαμβανόμενα τιμολόγια!",mark_as_rejected:"Σήμανση ως απορρίφθηκε",mark_as_accepted:"Σήμανση ως αποδεκτό",list_of_invoices:"Αυτή η ενότητα θα περιέχει τη λίστα τιμολογίων.",select_invoice:"Επιλογή Τιμολογίου",no_matching_invoices:"Δεν υπάρχει κανένα αντίστοιχο τιμολόγιο!",mark_as_sent_successfully:"Το τιμολόγιο επισημάνθηκε ως απεσταλμένο επιτυχώς",invoice_sent_successfully:"Επαναλαμβανόμενο τιμολόγιο κλωνοποιήθηκε επιτυχής",cloned_successfully:"Επαναλαμβανόμενο τιμολόγιο κλωνοποιήθηκε επιτυχής",clone_invoice:"Δημιουργία Επαναλαμβανόμενου Τιμολογίου",confirm_clone:"Αυτό το επαναλαμβανόμενο τιμολόγιο θα κλωνοποιηθεί σε ένα νέο επαναλαμβανόμενο τιμολόγιο",add_customer_email:"Please add an email address for this customer to send invoices automatically.",item:{title:"Τίτλος Προϊόντος",description:"Περιγραφή",quantity:"Ποσότητα",price:"Τιμή",discount:"Έκπτωση",total:"Σύνολο ",total_discount:"Συνολική Έκπτωση",sub_total:"Μερικό Σύνολο",tax:"Φόρος",amount:"Ποσό",select_an_item:"Πληκτρολογήστε ή κάντε κλικ για να επιλέξετε ένα στοιχείο",type_item_description:"Πληκτρολογήστε Περιγραφή Στοιχείου (προαιρετικό)"},frequency:{title:"Συχνότητα",select_frequency:"Επιλογή συχνοτήτων",minute:"Λεπτό",hour:"Ώρα",day_month:"Ημέρα του μήνα",month:"Μήνας",day_week:"Ημέρα της εβδομάδας"},confirm_delete:"Δεν θα είστε σε θέση να ανακτήσει αυτή την εκτίμηση ’, δεν θα είστε σε θέση να ανακτήσει αυτές τις εκτιμήσεις",created_message:"Επαναλαμβανόμενο τιμολόγιο κλωνοποιήθηκε επιτυχής",updated_message:"Επαναλαμβανόμενο τιμολόγιο κλωνοποιήθηκε επιτυχής",deleted_message:"Επαναλαμβανόμενο Τιμολόγιο διαγράφηκε επιτυχώς ‘ Επαναλαμβανόμενα Τιμολόγια διαγράφηκαν με επιτυχία",marked_as_sent_message:"Το τιμολόγιο επισημάνθηκε ως απεσταλμένο επιτυχώς",user_email_does_not_exist:"Αυτό το e-mail δεν υπάρχει",something_went_wrong:"Κάτι πήγε στραβά",invalid_due_amount_message:"Συνολικό επαναλαμβανόμενο ποσό Τιμολογίου δεν μπορεί να είναι μικρότερο από το συνολικό καταβληθέν ποσό για αυτό το επαναλαμβανόμενο τιμολόγιο. Παρακαλούμε ενημερώστε το τιμολόγιο ή διαγράψτε τις σχετικές πληρωμές για να συνεχίσετε."},Noe={title:"Πληρωμές",payments_list:"Λίστα πληρωμών",record_payment:"Καταγραφή Πληρωμής",customer:"Πελάτης",date:"Ημερομηνία",amount:"Ποσό",action:"Ενέργεια",payment_number:"Αριθμός Πληρωμής",payment_mode:"Τρόπος πληρωμής",invoice:"Τιμολόγιο",note:"Σημείωση",add_payment:"Προσθήκη Πληρωμής",new_payment:"Νέα Πληρωμή",edit_payment:"Επεξεργασία Πληρωμής",view_payment:"Προβολή Πληρωμής",add_new_payment:"Προσθήκη Νέας Πληρωμής",send_payment_receipt:"Αποστολή Απόδειξης Πληρωμής",send_payment:"Αποστολή Πληρωμής",save_payment:"Αποθήκευση Πληρωμής",update_payment:"Ενημέρωση Πληρωμής",payment:"Πληρωμές Πληρωμών",no_payments:"Καμία πληρωμή ακόμα!",not_selected:"Δεν έχει επιλεγεί",no_invoice:"Χωρίς τιμολόγιο",no_matching_payments:"Δεν υπάρχουν πληρωμές που να ταιριάζουν!",list_of_payments:"Αυτή η ενότητα θα περιέχει τον κατάλογο πληρωμών.",select_payment_mode:"Επιλέξτε τρόπο πληρωμής",confirm_mark_as_sent:"Η εκτίμηση αυτή θα επισημανθεί ως εστάλη",confirm_send_payment:"Αυτή η πληρωμή θα σταλεί μέσω email στον πελάτη",send_payment_successfully:"Η πληρωμή εστάλη επιτυχώς",something_went_wrong:"Κάτι πήγε στραβά",confirm_delete:"Δεν θα είστε σε θέση να ανακτήσει αυτή την εκτίμηση ’, δεν θα είστε σε θέση να ανακτήσει αυτές τις εκτιμήσεις",created_message:"Η πληρωμή εστάλη επιτυχώς",updated_message:"Η πληρωμή εστάλη επιτυχώς",deleted_message:"Ο υπολογισμός διαγράφηκε επιτυχώς",invalid_amount_message:"Το ποσό δεν είναι έγκυρο"},Ioe={title:"Έξοδα",expenses_list:"Λίστα Εξόδων",select_a_customer:"Επιλέξτε έναν πελάτη",expense_title:"Τίτλος",customer:"Πελάτης",currency:"Νόμισμα",contact:"Επικοινωνία",category:"Κατηγορία",from_date:"Από Ημερομηνία",to_date:"Έως ημερομηνία",expense_date:"Ημερομηνία",description:"Περιγραφή",receipt:"Απόδειξη",amount:"Ποσό",action:"Ενέργεια",not_selected:"Δεν έχει επιλεγεί",note:"Σημείωση",category_id:"ID Κατηγορίας",date:"Ημερομηνία",add_expense:"Προσθήκη δαπάνης",add_new_expense:"Προσθήκη δαπάνης",save_expense:"Ενημέρωση Δαπάνης",update_expense:"Ενημέρωση Δαπάνης",download_receipt:"Λήψη Απόδειξης",edit_expense:"Προσθήκη δαπάνης",new_expense:"Προσθήκη δαπάνης",expense:"Έξοδα - Έξοδα",no_expenses:"Δεν υπάρχουν έξοδα ακόμα!",list_of_expenses:"Αυτή η ενότητα θα περιέχει τη λίστα των στοιχείων.",confirm_delete:"Δεν θα είστε σε θέση να ανακτήσει αυτή την εκτίμηση ’, δεν θα είστε σε θέση να ανακτήσει αυτές τις εκτιμήσεις",created_message:"Το τιμολόγιο εστάλη επιτυχώς",updated_message:"Το τιμολόγιο εστάλη επιτυχώς",deleted_message:"Ο υπολογισμός διαγράφηκε επιτυχώς",categories:{categories_list:"Λίστα Κατηγορίων",title:"Τίτλος",name:"Όνομα",description:"Περιγραφή",amount:"Ποσό",actions:"Ενέργειες",add_category:"Προσθήκη Κατηγορίας",new_category:"Νέα κατηγορία",category:'Κατηγορία "Κατηγορίες',select_a_category:"Επιλέξτε μια κατηγορία"}},Foe={email:"Ηλεκτρονική διεύθυνση",password:"Κωδικός",forgot_password:"Ξεχάσατε τον κωδικό;",or_signIn_with:"or sign in with",login:"Σύνδεση",register:"Εγγραφείτε",reset_password:"Επαναφορά κωδικού πρόσβασης",password_reset_successfully:"Επαναφορά του κωδικού πρόσβασης με επιτυχία",enter_email:"Εισάγετε email",enter_password:"Εισαγωγή κωδικού πρόσβασης",retype_password:"Πληκτρολόγησε και πάλι τον κωδικό"},Roe={buy_now:"Buy Now",install:"Install",price:"Price",download_zip_file:"Download ZIP file",unzipping_package:"Unzipping Package",copying_files:"Copying Files",deleting_files:"Deleting Unused files",completing_installation:"Completing Installation",update_failed:"Update Failed",install_success:"Module has been installed successfully!",customer_reviews:"Reviews",license:"License",faq:"FAQ",monthly:"Monthly",yearly:"Yearly",updated:"Updated",version:"Version",disable:"Disable",module_disabled:"Module Disabled",enable:"Enable",module_enabled:"Module Enabled",update_to:"Update To",module_updated:"Module Updated Successfully!",title:"Πρόσθετα",module:"Module | Modules",api_token:"API token",invalid_api_token:"Invalid API Token.",other_modules:"Other Modules",view_all:"View All",no_reviews_found:"There are no reviews for this module yet!",module_not_purchased:"Module Not Purchased",module_not_found:"Module Not Found",version_not_supported:"This module version doesn't support the current version of InvoiceShelf",last_updated:"Last Updated On",connect_installation:"Σύνδεση της εγκατάστασης σας",api_token_description:"Συνδεθείτε στο {url} και συνδέστε αυτήν την εγκατάσταση εισάγοντας το API Token. Τα πρόσθετα που αγοράσατε θα εμφανιστούν εδώ μετά την ολοκλήρωση της σύνδεσης.",view_module:"Δείτε το πρόσθετο",update_available:"Διαθέσιμη ανανέωση",purchased:"Purchased",installed:"Εγκαταστάθηκε",no_modules_installed:"Δεν υπάρχουν ακόμα εγκατεστημένα πρόσθετα!",disable_warning:"All the settings for this particular will be reverted.",what_you_get:"What you get"},Ooe={title:"Χρήστες",users_list:"Λίστα Χρηστών",name:"Όνομα",description:"Περιγραφή",added_on:"Προστέθηκε Στις",date_of_creation:"Ημερομηνία Δημιουργίας",action:"Ενέργεια",add_user:"Προσθήκη Χρήστη",save_user:"Αποθήκευση Χρήστη",update_user:"Ενημέρωση χρήστη",user:"Χρήστης | Χρήστες",add_new_user:"Προσθήκη νέου Χρήστη",new_user:"Νέος χρήστης",edit_user:"Επεξεργασία Χρήστη",no_users:"Δεν υπάρχουν Στοιχεία ακόμα!",list_of_users:"Αυτή η ενότητα θα περιέχει τη λίστα των στοιχείων.",email:"Ηλεκτρονική διεύθυνση",phone:"Τηλέφωνο",password:"Κωδικός",user_attached_message:"Δεν είναι δυνατή η διαγραφή ενός στοιχείου που χρησιμοποιείται ήδη",confirm_delete:"Δεν θα είστε σε θέση να ανακτήσει αυτή την εκτίμηση ’, δεν θα είστε σε θέση να ανακτήσει αυτές τις εκτιμήσεις",created_message:"Ο χρήστης δημιουργήθηκε με επιτυχία",updated_message:"Ο χρήστης ενημερώθηκε με επιτυχία",deleted_message:"Ο υπολογισμός διαγράφηκε επιτυχώς",select_company_role:"Επιλέξτε ρόλο για {company}",companies:"Εταιρείες"},Moe={title:"Αναφορά",from_date:"Από Ημερομηνία",to_date:"Έως ημερομηνία",status:"Κατάσταση",paid:"Εξοφλημένο",unpaid:"Ανεξόφλητο",download_pdf:"Λήψη PDF",view_pdf:"Προβολή PDF",update_report:"Ενημέρωση Αναφοράς",report:"Αναφορά | Αναφορές",profit_loss:{profit_loss:"Κέρδη & Απώλεια",to_date:"Έως ημερομηνία",from_date:"Από Ημερομηνία",date_range:"Επιλέξτε εύρος ημερομηνίας"},sales:{sales:"Πωλήσεις",date_range:"Επιλέξτε εύρος ημερομηνίας",to_date:"Έως ημερομηνία",from_date:"Από Ημερομηνία",report_type:"Τύπος Αναφοράς"},taxes:{taxes:"Φόροι",to_date:"Έως ημερομηνία",from_date:"Από Ημερομηνία",date_range:"Επιλέξτε εύρος ημερομηνίας"},errors:{required:"Το πεδίο είναι υποχρεωτικό"},invoices:{invoice:"Τιμολόγιο",invoice_date:"Ημερομηνία Τιμολογίου",due_date:"Ημερομηνία λήξης",amount:"Ποσό",contact_name:"Όνομα Επαφής",status:"Κατάσταση"},estimates:{estimate:"Εκτιμώμενο",estimate_date:"Εκτιμώμενη ημ. επισκευής",due_date:"Ημερομηνία λήξης",estimate_number:"Εκτίμηση Αριθμού",ref_number:"Αριθμός Αναφοράς",amount:"Ποσό",contact_name:"Όνομα Επαφής",status:"Κατάσταση"},expenses:{expenses:"Έξοδα",category:"Κατηγορία",date:"Ημερομηνία",amount:"Ποσό",to_date:"Έως ημερομηνία",from_date:"Από Ημερομηνία",date_range:"Επιλέξτε εύρος ημερομηνίας"}},$oe={menu_title:{account_settings:"Ρυθμίσεις Λογαριασμού",company_information:"Πληροφορίες Εταιρίας",customization:"Προσαρμογή",preferences:"Ρυθμίσεις",notifications:"Ειδοποιήσεις",tax_types:"Φορολογική κλάση",expense_category:"Κατηγορίες Εξόδων",update_app:"Ενημέρωση εφαρμογής",backup:"Αντίγραφα ασφαλείας",file_disk:"Δίσκος Αρχείου",custom_fields:"Προσαρμοσμένα πεδία",payment_modes:"Τρόπος πληρωμής",notes:"Σημειώσεις",exchange_rate:"Συναλλαγματική ισοτιμία",address_information:"Address Information"},address_information:{section_description:" You can update Your Address information using form below."},title:"Ρυθμίσεις",setting:"Ρύθμιση Ρυθμίσεων",general:"General",language:"Γλώσσα",primary_currency:"Κύριο Νόμισμα",timezone:"Ζώνη Ώρας",date_format:"Μορφή Ημερομηνίας",currencies:{title:"Συνάλλαγμα",currency:"Νόμισμα",currencies_list:"Λίστα συναλλαγμάτων",select_currency:"Επιλογή νομίσματος",name:"Όνομα",code:"Κώδικας",symbol:"Σύμβολο",precision:"Ακρίβεια",thousand_separator:"Διαχωριστικό χιλιάδων",decimal_separator:"Διαχωριστής δεκαδικών",position:"Θέση",position_of_symbol:"Θέση Συμβόλου",right:"Δεξιά",left:"Αριστερά",action:"Ενέργεια",add_currency:"Προσθέστε νόμισμα"},mail:{host:"Διακομιστής Αλληλογραφίας",port:"Διακομιστής Αλληλογραφίας",driver:"Οδηγός Αλληλογραφίας",secret:"Μυστικό",mailgun_secret:"Μυστικό Mailgun",mailgun_domain:"Τομέας",mailgun_endpoint:"Mailgun Endpoint",ses_secret:"SES Μυστικό",ses_key:"Κλειδί SES",password:"Κωδικός Πρόσβασης Ταχυδρομείου",username:"Όνομα Ταχυδρομείου",mail_config:"Διαμόρφωση Mail",from_name:"Όνομα Αποστολέα",from_mail:"Διεύθυνση Αποστολής",encryption:"Κρυπτογράφηση Email",mail_config_desc:"Παρακάτω είναι η φόρμα για τη ρύθμιση παραμέτρων του προγράμματος οδήγησης ηλεκτρονικού ταχυδρομείου για την αποστολή μηνυμάτων ηλεκτρονικού ταχυδρομείου από την εφαρμογή. Μπορείτε επίσης να ρυθμίσετε τις παραμέτρους τρίτων παρόχων όπως το Sendgrid, το SES κλπ."},pdf:{title:"Ρυθμίσεις PDF",footer_text:"Κείμενο Υποσέλιδου",pdf_layout:"Διάταξη PDF"},company_info:{company_info:"Πληροφορίες Εταιρίας",company_name:"Όνομα Εταιρείας",company_logo:"Λογότυπο Εταιρείας",section_description:"Πληροφορίες σχετικά με την εταιρεία σας που θα εμφανίζονται σε τιμολόγια, εκτιμήσεις και άλλα έγγραφα που δημιουργούνται από την InvoiceShelf.",phone:"Τηλέφωνο",country:"Χώρα",state:"Νομός",city:"Πόλη",address:"Διεύθυνση",zip:"Ταχυδρομικός Κώδικας",save:"Αποθήκευση",delete:"Διαγραφή",updated_message:"Οι πληροφορίες για τον πύργο εμφιάλωσης ενημερώθηκαν επιτυχώς.",delete_company:"Διαγραφή Εταιρείας",delete_company_description:"Μόλις διαγράψετε την εταιρεία σας, θα χάσετε όλα τα δεδομένα και τα αρχεία που σχετίζονται με αυτή μόνιμα.",are_you_absolutely_sure:"Είσαι σίγουρος/η;",delete_company_modal_desc:"Αυτή η ενέργεια δεν μπορεί να αναιρεθεί. Αυτό θα διαγράψει μόνιμα {company} και όλα τα συσχετισμένα δεδομένα.",delete_company_modal_label:"Παρακαλώ πληκτρολογήστε {company} για επιβεβαίωση"},custom_fields:{title:"Προσαρμοσμένα πεδία",section_description:"Προσαρμόστε τα Τιμολόγια σας, Εκτιμήσεις & Αποδείξεις Πληρωμής με τα δικά σας πεδία. Σιγουρευτείτε ότι χρησιμοποιείτε τα παρακάτω πεδία στις μορφές διευθύνσεων στη σελίδα Ρυθμίσεις προσαρμογής.",add_custom_field:"Προσθήκη προσαρμοσμένου πεδίου",edit_custom_field:"Επεξεργασία Προσαρμοσμένου Πεδίου",field_name:"Όνομα πεδίου",label:"Επιγραφή",type:"Type",name:"Όνομα",slug:"Δυνατό χτύπημα",required:"Απαιτείται",placeholder:"Σύμβολο υποκατάστασης",help_text:"Κείμενο βοήθειας",default_value:"Προεπιλεγμένη τιμή",prefix:"Πρόθεμα",starting_number:"Αρχή αρίθμησης από",model:"Μοντέλο",help_text_description:"Εισάγετε κάποιο κείμενο για να βοηθήσετε τους χρήστες να κατανοήσουν τον σκοπό αυτού του προσαρμοσμένου πεδίου.",suffix:"Επίθεμα",yes:"Ναι",no:"Όχι",order:"Σειρά",custom_field_confirm_delete:"Δεν θα μπορείτε να ανακτήσετε αυτό το Προσαρμοσμένο Πεδίο",already_in_use:"Η διεύθυνση email χρησιμοποιείται ήδη",deleted_message:"Επιτυχής διαγραφή προσαρμοσμένου κλειδιού",options:"ρυθμίσεις",add_option:"Προσθήκη επιλογής",add_another_option:"Προσθήκη άλλης επιλογής",sort_in_alphabetical_order:"Ταξινόμηση σε αλφαβητική σειρά",add_options_in_bulk:"Προσθήκη επιλογών μαζικά",use_predefined_options:"Χρήση Προκαθορισμένων Επιλογών",select_custom_date:"Επιλέξτε Προσαρμοσμένη Ημερομηνία",select_relative_date:"Επιλέξτε ημερομηνία επιστροφής",ticked_by_default:"Ενεργοποιημένη από προεπιλογή",updated_message:"Επιτυχής διαγραφή προσαρμοσμένου κλειδιού",added_message:"Επιτυχής διαγραφή προσαρμοσμένου κλειδιού",press_enter_to_add:"Πατήστε enter για να προσθέσετε νέα επιλογή",model_in_use:"Δεν είναι δυνατή η ενημέρωση μοντέλου για πεδία που είναι ήδη σε χρήση.",type_in_use:"Δεν είναι δυνατή η ενημέρωση μοντέλου για πεδία που είναι ήδη σε χρήση."},customization:{customization:"προσαρμογή",updated_message:"Οι πληροφορίες για τον πύργο εμφιάλωσης ενημερώθηκαν επιτυχώς.",save:"Αποθήκευση",insert_fields:"Πεδίο ετικέτας",learn_custom_format:"Μάθετε πώς να χρησιμοποιείτε προσαρμοσμένη μορφή",add_new_component:"Προσθήκη στοιχείου",component:"Συστατικό",Parameter:"Παράμετρος",series:"Σειρά",series_description:"Για να ορίσετε ένα στατικό πρόθεμα/επίθεμα όπως 'INV' σε όλη την εταιρεία σας. Υποστηρίζει μήκος χαρακτήρα έως και 4 χαρακτήρες.",series_param_label:"Όνομα σειράς",delimiter:"Διαχωριστικό",delimiter_description:"Ενιαίος χαρακτήρας για τον καθορισμό του ορίου μεταξύ 2 ξεχωριστών στοιχείων. Από προεπιλογή το σετ του -",delimiter_param_label:"Τιμή Οριοθέτη",date_format:"Μορφή Ημερομηνίας",date_format_description:"Ένα τοπικό πεδίο ημερομηνίας και ώρας που δέχεται μια παράμετρο μορφής. Η προεπιλεγμένη μορφή: 'Y' εμφανίζει το τρέχον έτος.",date_format_param_label:"Μορφή",sequence:"Αλληλουχία",sequence_description:"Συνεχής ακολουθία αριθμών σε όλη την εταιρεία σας. Μπορείτε να καθορίσετε το μήκος του δοσμένου παραμέτρου.",sequence_param_label:"Μήκος Ακολουθίας",customer_series:"Σειρά Πελατών",customer_series_description:"Για να ορίσετε ένα διαφορετικό πρόθεμα/επίθεμα για κάθε πελάτη.",customer_sequence:"Προσαρμόστε την αριθμοδότηση",customer_sequence_description:"Συνεχής ακολουθία αριθμών για κάθε πελάτη σας.",customer_sequence_param_label:"Μήκος Ακολουθίας",random_sequence:"Τυχαία Ακολουθία",random_sequence_description:"Τυχαία αλφαριθμητική συμβολοσειρά. Μπορείτε να καθορίσετε το μήκος του δοσμένου παραμέτρου.",random_sequence_param_label:"Μήκος Ακολουθίας",invoices:{title:"Τιμολόγια",invoice_number_format:"Μορφή Αριθμού Τιμολογίου",invoice_number_format_description:"Προσαρμόστε τον τρόπο με τον οποίο δημιουργείται αυτόματα ο υπολογισμός σας όταν δημιουργείτε μια νέα εκτίμηση.",preview_invoice_number:"Προεπισκόπηση Αριθμού Τιμολογίου",due_date:"Ημερομηνία λήξης",due_date_description:"Καθορίστε πώς ορίζεται αυτόματα η ημερομηνία λήξης όταν δημιουργείτε μια εκτίμηση.",due_date_days:"Τιμολόγια ληξιπρόθεσμα μετά από (ημέρες)",set_due_date_automatically:"Ορισμός Ημερομηνίας Λήξης Αυτόματα",set_due_date_automatically_description:"Ενεργοποιήστε το αν επιθυμείτε να ορίσετε την ημερομηνία λήξης αυτόματα όταν δημιουργείτε μια νέα εκτίμηση.",default_formats:"Προεπιλεγμένες επεκτάσεις",default_formats_description:"Παρακάτω οι παρακάτω μορφές χρησιμοποιούνται για να γεμίσουν αυτόματα τα πεδία στη δημιουργία τιμολογίων.",default_invoice_email_body:"Προκαθορισμένο Σώμα Email Τιμολογίου",company_address_format:"Μορφή Διεύθυνσης Εταιρείας",shipping_address_format:"Μορφή Διεύθυνσης Αποστολής",billing_address_format:"Μορφή Διεύθυνσης Χρέωσης",invoice_email_attachment:"Αποστολή τιμολογίων ως συνημμένων",invoice_email_attachment_setting_description:"Ενεργοποιήστε αυτό αν θέλετε να στείλετε τιμολόγια ως συνημμένο email. Παρακαλώ σημειώστε ότι το κουμπί 'Προβολή Τιμολογίου' στα μηνύματα ηλεκτρονικού ταχυδρομείου δεν θα εμφανίζεται πλέον όταν είναι ενεργοποιημένο.",invoice_settings_updated:"Οι Ρυθμίσεις ενημερώθηκαν επιτυχώς",retrospective_edits:"Αναδρομικές Διεργασίες",allow:"Αποδοχή",disable_on_invoice_partial_paid:"Απενεργοποίηση μετά την εγγραφή μερικής πληρωμής",disable_on_invoice_paid:"Απενεργοποίηση μετά την εγγραφή μερικής πληρωμής",disable_on_invoice_sent:"Απενεργοποίηση μετά την αποστολή τιμολογίου",retrospective_edits_description:" Με βάση τους νόμους της χώρας σας ή τις προτιμήσεις σας, μπορείτε να περιορίσετε τους χρήστες από την επεξεργασία οριστικοποιημένων τιμολογίων."},estimates:{title:"Εκτιμήσεις",estimate_number_format:"Εκτίμηση Μορφής Αριθμού",estimate_number_format_description:"Προσαρμόστε τον τρόπο με τον οποίο δημιουργείται αυτόματα ο υπολογισμός σας όταν δημιουργείτε μια νέα εκτίμηση.",preview_estimate_number:"Εκτίμηση Αριθμού Προεπισκόπησης",expiry_date:"Ημερομηνία λήξης",expiry_date_description:"Καθορίστε πώς ορίζεται αυτόματα η ημερομηνία λήξης όταν δημιουργείτε μια εκτίμηση.",expiry_date_days:"Ο υπολογισμός λήγει μετά από ημέρες",set_expiry_date_automatically:"Ορισμός Ημερομηνίας Λήξης Αυτόματα",set_expiry_date_automatically_description:"Ενεργοποιήστε το αν επιθυμείτε να ορίσετε την ημερομηνία λήξης αυτόματα όταν δημιουργείτε μια νέα εκτίμηση.",default_formats:"Προεπιλεγμένες επεκτάσεις",default_formats_description:"Παρακάτω οι παρακάτω μορφές χρησιμοποιούνται για να γεμίσουν αυτόματα τα πεδία στη δημιουργία τιμολογίων.",default_estimate_email_body:"Προκαθορισμένο Σώμα Email Τιμολογίου",company_address_format:"Μορφή Διεύθυνσης Εταιρείας",shipping_address_format:"Μορφή Διεύθυνσης Αποστολής",billing_address_format:"Μορφή Διεύθυνσης Χρέωσης",estimate_email_attachment:"Αποστολή τιμολογίων ως συνημμένων",estimate_email_attachment_setting_description:"Ενεργοποιήστε αυτό αν θέλετε να στείλετε τιμολόγια ως συνημμένο email. Παρακαλώ σημειώστε ότι το κουμπί 'Προβολή Τιμολογίου' στα μηνύματα ηλεκτρονικού ταχυδρομείου δεν θα εμφανίζεται πλέον όταν είναι ενεργοποιημένο.",estimate_settings_updated:"Οι Ρυθμίσεις ενημερώθηκαν επιτυχώς",convert_estimate_options:"Εκτίμηση Μετατροπής Ενέργειας",convert_estimate_description:"Καθορίστε τι συμβαίνει στην εκτίμηση αφού μετατραπεί σε τιμολόγιο.",no_action:"Καμία ενέργεια",delete_estimate:"Διαγραφή εκτίμησης",mark_estimate_as_accepted:"Σημειώστε την εκτίμηση ως αποδεκτή"},payments:{title:"Πληρωμές",payment_number_format:"Μορφή Αριθμού Πληρωμής",payment_number_format_description:"Προσαρμόστε τον τρόπο με τον οποίο δημιουργείται αυτόματα ο υπολογισμός σας όταν δημιουργείτε μια νέα εκτίμηση.",preview_payment_number:"Προεπισκόπηση Αριθμού Πληρωμής",default_formats:"Προεπιλεγμένες επεκτάσεις",default_formats_description:"Παρακάτω οι παρακάτω μορφές χρησιμοποιούνται για να γεμίσουν αυτόματα τα πεδία στη δημιουργία τιμολογίων.",default_payment_email_body:"Προκαθορισμένο Σώμα Email Τιμολογίου",company_address_format:"Μορφή Διεύθυνσης Εταιρείας",from_customer_address_format:"Από Τη Μορφή Διεύθυνσης Πελάτη",payment_email_attachment:"Αποστολή τιμολογίων ως συνημμένων",payment_email_attachment_setting_description:"Ενεργοποιήστε αυτό αν θέλετε να στείλετε τιμολόγια ως συνημμένο email. Παρακαλώ σημειώστε ότι το κουμπί 'Προβολή Τιμολογίου' στα μηνύματα ηλεκτρονικού ταχυδρομείου δεν θα εμφανίζεται πλέον όταν είναι ενεργοποιημένο.",payment_settings_updated:"Οι Ρυθμίσεις ενημερώθηκαν επιτυχώς"},items:{title:"Προϊόντα",units:"Μονάδες",add_item_unit:"Προσθήκη Μονάδας Αντικειμένου",edit_item_unit:"Προσθήκη Μονάδας Αντικειμένου",unit_name:"Όνομα μονάδας",item_unit_added:"Το Αντικείμενο Δεν Προσθέθηκε",item_unit_updated:"Το Αντικείμενο Δεν Προσθέθηκε",item_unit_confirm_delete:"Δεν θα μπορείτε να ανακτήσετε αυτό το Προσαρμοσμένο Πεδίο",already_in_use:"Η διεύθυνση email χρησιμοποιείται ήδη",deleted_message:"Τα στοιχεία έχουν διαγραφεί με επιτυχία"},notes:{title:"Σημειώσεις",description:"Εξοικονομήστε χρόνο δημιουργώντας σημειώσεις και επαναχρησιμοποίησή τους στα τιμολόγια σας, εκτιμήσεις και πληρωμές.",notes:"Σημειώσεις",type:"Type",add_note:"Προσθήκη σημείωσης",add_new_note:"Προσθήκη Νέας Σημείωσης",name:"Όνομα",edit_note:"Επεξεργασία σημείωσης",note_added:"προστέθηκε με επιτυχία",note_updated:"Ο ρόλος ενημερώθηκε με επιτυχία.",note_confirm_delete:"Δεν θα μπορείτε να ανακτήσετε αυτό το Προσαρμοσμένο Πεδίο",already_in_use:"Το όνομα είναι ήδη σε χρήση",deleted_message:"Ο ρόλος διαγράφηκε με επιτυχία"}},account_settings:{profile_picture:"Εικόνα Προφίλ",name:"Όνομα",email:"Ηλεκτρονική διεύθυνση",password:"Κωδικός",confirm_password:"Επιβεβαίωση Κωδικού",account_settings:"Ρυθμίσεις Λογαριασμού",save:"Αποθήκευση",section_description:"Μπορείτε να ενημερώσετε το όνομά σας, email & κωδικό πρόσβασης χρησιμοποιώντας την παρακάτω φόρμα.",updated_message:"Οι ρυθμίσεις του λογαριασμού ενημερώθηκαν επιτυχώς!"},user_profile:{name:"Όνομα",email:"Ηλεκτρονική διεύθυνση",password:"Κωδικός",confirm_password:"Επιβεβαίωση Κωδικού"},notification:{title:"Ειδοποιήσεις",email:"Αποστολή ειδοποιήσεων",description:"Ποιες ειδοποιήσεις ηλεκτρονικού ταχυδρομείου θα θέλατε να λαμβάνετε όταν κάτι αλλάζει?",invoice_viewed:"Τιμολόγιο προβλήθηκε",invoice_viewed_desc:"Όταν ο πελάτης σας βλέπει το τιμολόγιο που αποστέλλεται μέσω του πίνακα ελέγχου.",estimate_viewed:"Εκτίμηση προβεβλημένων",estimate_viewed_desc:"Όταν ο πελάτης σας βλέπει την εκτίμηση που αποστέλλεται μέσω του πίνακα ελέγχου κρατήσεων.",save:"Αποθήκευση",email_save_message:"Το Μήνυμα εστάλη επιτυχώς",please_enter_email:"Εισαγάγετε e-mail"},roles:{title:"Ρόλοι",description:"Διαχειριστείτε τους ρόλους και τα δικαιώματα αυτής της εταιρείας",save:"Αποθήκευση",add_new_role:"Προσθήκη Νέου Ρόλου",role_name:"Όνομα ρόλου",added_on:"Προστέθηκε στις",add_role:"Προσθήκη ρόλου",edit_role:"Επεξεργασία Ρόλου",name:"Όνομα",permission:"Δικαιώματα Δικαιωμάτων",select_all:"Επιλογή Όλων",none:"Κανείς",confirm_delete:"Δεν θα μπορείτε να ανακτήσετε αυτό το Προσαρμοσμένο Πεδίο",created_message:"Ο χρήστης δημιουργήθηκε με επιτυχία",updated_message:"Ο ρόλος ενημερώθηκε με επιτυχία.",deleted_message:"Ο ρόλος διαγράφηκε με επιτυχία",already_in_use:"Το όνομα είναι ήδη σε χρήση"},exchange_rate:{exchange_rate:"Συναλλαγματική ισοτιμία",title:"Διόρθωση ζητημάτων συναλλάγματος",description:"Παρακαλούμε εισάγετε τη συναλλαγματική ισοτιμία όλων των νομισμάτων που αναφέρονται παρακάτω για να βοηθήσετε τον Κρατήρα να υπολογίσει σωστά τα ποσά σε {currency}.",drivers:"Οδηγοί",new_driver:"Προσθήκη νέας υπηρεσίας παροχής",edit_driver:"Επεξεργασία παρόχου",select_driver:"Επιλέξτε έναν Οδηγό",update:"επιλογή συναλλαγματικής ισοτιμίας ",providers_description:"Ρυθμίστε τους παρόχους συναλλαγματικών ισοτιμιών σας εδώ για να συγκεντρώσετε αυτόματα την τελευταία συναλλαγματική ισοτιμία στις συναλλαγές.",key:"Κλειδί API",name:"Όνομα",driver:"Οδηγός",is_default:"IS ΠΡΟΦΥΛΑΞΗ",currency:"Συνάλλαγμα",exchange_rate_confirm_delete:"Δεν θα μπορείτε να ανακτήσετε αυτό το Προσαρμοσμένο Πεδίο",created_message:"Ο πελάτης δημιουργήθηκε με επιτυχία",updated_message:"Ο πελάτης δημιουργήθηκε με επιτυχία",deleted_message:"Ο πελάτης δημιουργήθηκε με επιτυχία",error:" Δεν μπορείτε να Διαγράψετε το Ενεργό Οδηγό",default_currency_error:"Αυτό το νόμισμα χρησιμοποιείται ήδη σε έναν από τους Active Provider",exchange_help_text:"Εισάγετε συναλλαγματική ισοτιμία για μετατροπή από {currency} σε {baseCurrency}",currency_freak:"Νόμισμα Freak",currency_layer:"Στρώμα Νομίσματος",open_exchange_rate:"Open Exchange Rates",currency_converter:"Μετατροπέας νομίσματος (Automatic Translation)",server:"Σέρβερ",url:"Διεύθυνση URL",active:"Ενεργή",currency_help_text:"Αυτός ο πάροχος θα χρησιμοποιηθεί μόνο πάνω από τα επιλεγμένα νομίσματα",currency_in_used:"Τα ακόλουθα νομίσματα είναι ήδη ενεργά σε άλλο πάροχο. Παρακαλώ αφαιρέστε αυτά τα νομίσματα από την επιλογή για να ενεργοποιήσετε ξανά αυτόν τον πάροχο."},tax_types:{title:"Φορολογική κλάση",add_tax:"Προσθήκη Φόρου",edit_tax:"Επεξεργασία φόρου",description:"Μπορείτε να προσθέσετε ή να αφαιρέσετε φόρους όπως σας παρακαλώ. Κρατήρα υποστηρίζει φόρους επί μεμονωμένων προϊόντων καθώς και στο τιμολόγιο.",add_new_tax:"Προσθήκη Νέου Φόρου",tax_settings:"Φορολογικές ρυθμίσεις",tax_per_item:"Στοιχείο Φόντου Υπομενού",tax_name:"Όνομα Φόρου",compound_tax:"Σύνθετος Φόρος",percent:"Ποσοστό",action:"Ενέργεια",tax_setting_description:"Ενεργοποιήστε το αν θέλετε να προσθέσετε έκπτωση σε μεμονωμένα στοιχεία τιμολογίου. Από προεπιλογή, η έκπτωση προστίθεται απευθείας στο τιμολόγιο.",created_message:"Το τιμολόγιο εστάλη επιτυχώς",updated_message:"Το τιμολόγιο εστάλη επιτυχώς",deleted_message:"Το τιμολόγιο εστάλη επιτυχώς",confirm_delete:"Δεν θα μπορείτε να ανακτήσετε αυτό το Προσαρμοσμένο Πεδίο",already_in_use:"Το όνομα είναι ήδη σε χρήση"},payment_modes:{title:"Τρόπος πληρωμής",description:"Τρόποι συναλλαγής για πληρωμές",add_payment_mode:"Τρόπος πληρωμής",edit_payment_mode:"Τρόπος πληρωμής",mode_name:"Όνομα λειτουργίας",payment_mode_added:"Προστέθηκε Λειτουργία Πληρωμής",payment_mode_updated:"Προστέθηκε Λειτουργία Πληρωμής",payment_mode_confirm_delete:"Δεν θα μπορείτε να ανακτήσετε αυτό το Προσαρμοσμένο Πεδίο",payments_attached:"This payment method is already attached to payments. Please delete the attached payments to proceed with deletion.",expenses_attached:"This payment method is already attached to expenses. Please delete the attached expenses to proceed with deletion.",deleted_message:"Η πληρωμή εστάλη επιτυχώς"},expense_category:{title:"Κατηγορίες Εξόδων",action:"Ενέργεια",description:"Απαιτούνται κατηγορίες για την προσθήκη καταχωρήσεων εξόδων. Μπορείτε να προσθέσετε ή να αφαιρέσετε αυτές τις κατηγορίες σύμφωνα με τις προτιμήσεις σας.",add_new_category:"Προσθήκη Νέας Κατηγορίας",add_category:"Προσθήκη Κατηγορίας",edit_category:"Προσθήκη Κατηγορίας",category_name:"Όνομα Κατηγορίας",category_description:"Περιγραφή",created_message:"Το τιμολόγιο εστάλη επιτυχώς",deleted_message:"Το τιμολόγιο εστάλη επιτυχώς",updated_message:"Το τιμολόγιο εστάλη επιτυχώς",confirm_delete:"Δεν θα μπορείτε να ανακτήσετε αυτό το Προσαρμοσμένο Πεδίο",already_in_use:"Το όνομα είναι ήδη σε χρήση"},preferences:{currency:"Νόμισμα",default_language:"Προεπιλεγμένη γλώσσα",time_zone:"Ζώνη Ώρας",fiscal_year:"Οικονομικό έτος",date_format:"Μορφή Ημερομηνίας",discount_setting:"Ρυθμίσεις Λογαριασμού",discount_per_item:"Έκπτωση Ανά Στοιχείο ",discount_setting_description:"Ενεργοποιήστε το αν θέλετε να προσθέσετε έκπτωση σε μεμονωμένα στοιχεία τιμολογίου. Από προεπιλογή, η έκπτωση προστίθεται απευθείας στο τιμολόγιο.",expire_public_links:"Automatically Expire Public Links",expire_setting_description:"Specify whether you would like to expire all the links sent by application to view invoices, estimates & payments, etc after a specified duration.",save:"Αποθήκευση",preference:"Προτίμηση - Προτιμήσεις",general_settings:"Προεπιλεγμένες προτιμήσεις για το σύστημα.",updated_message:"Η πληρωμή εστάλη επιτυχώς",select_language:"Επιλογή Γλώσσας",select_time_zone:"Επιλέξτε ζώνη ώρας",select_date_format:"Μορφή σύντομης ημερομηνίας",select_financial_year:"Επιλογή Οικονομικού Έτους",recurring_invoice_status:"Επαναλαμβανόμενα τιμολόγια",create_status:"Δημιουργία κατάστασης",active:"Ενεργή",on_hold:"Σε αναμονή",update_status:"Ενημέρωση Κατάστασης",completed:"Ολοκληρώθηκε",company_currency_unchangeable:"Το νόμισμα της εταιρείας δεν μπορεί να αλλάξει"},update_app:{title:"Ενημέρωση εφαρμογής",description:"Μπορείτε εύκολα να ενημερώσετε τον Κρατήρα ελέγχοντας για μια νέα ενημέρωση κάνοντας κλικ στο παρακάτω κουμπί",check_update:"Έλεγχος Ενημερώσεων",avail_update:"Υπάρχει διαθέσιμη νέα ενημέρωση",next_version:"Επόμενη Έκδοση",requirements:"Απαιτήσεις",update:"Ενημέρωση τώρα",update_progress:"Ενημέρωση σε εξέλιξη",progress_text:"Θα χρειαστούν μόνο λίγα λεπτά. Παρακαλώ μην ανανεώσετε την οθόνη ή να κλείσετε το παράθυρο πριν τελειώσει η ενημέρωση.",update_success:"Η εφαρμογή έχει ενημερωθεί! Παρακαλώ περιμένετε όσο το παράθυρο του περιηγητή σας φορτώνεται αυτόματα.",latest_message:"Δεν υπάρχουν προς το παρόν διαθέσιμες ενημερώσεις. Χρησιμοποιείτε την τελευταία έκδοση.",current_version:"Τρέχουσα έκδοση",download_zip_file:"Κατεβάστε σε ZIP",unzipping_package:"Αποσυμπίεση Πακέτου",copying_files:"Αντιγραφή Αρχείων",deleting_files:"Διαγραφή αχρησιμοποίητων αρχείων",running_migrations:"Εκτέλεση Μεταναστών",finishing_update:"Ολοκλήρωση Ενημέρωσης",update_failed:"Αποτυχία ενημέρωσης",update_failed_text:"Συγνώμη! Η ενημέρωσή σας απέτυχε σε: {step} βήμα",update_warning:"Όλα τα αρχεία εφαρμογών και τα προεπιλεγμένα αρχεία προτύπων θα αντικατασταθούν όταν ενημερώνετε την εφαρμογή χρησιμοποιώντας αυτό το βοηθητικό πρόγραμμα. Παρακαλώ πάρτε ένα αντίγραφο ασφαλείας των προτύπων και της βάσης δεδομένων σας πριν από την ενημέρωση."},backup:{title:'Αντίγραφο Ασφαλείας "Αντίγραφα Ασφαλείας',description:"Το αντίγραφο ασφαλείας είναι ένα zipfile που περιέχει όλα τα αρχεία στους καταλόγους που καθορίζετε μαζί με μια χωματερή της βάσης δεδομένων σας",new_backup:"Νέο αντίγραφο ασφαλείας",create_backup:"Δημιουργία αντιγράφου ασφαλείας",select_backup_type:"Επιλογή Τύπου(ων) Αντιγράφου Ασφαλείας",backup_confirm_delete:"Δεν θα μπορείτε να ανακτήσετε αυτό το Προσαρμοσμένο Πεδίο",path:"Path",new_disk:"Νέος Δίσκος",created_at:"Δημιουργήθηκε στις",size:"μέγεθος",dropbox:"Dropbox",local:"Τοπικές ρυθμίσεις",healthy:"υγιές",amount_of_backups:"ποσό αντιγράφων ασφαλείας",newest_backups:"νέα αντίγραφα ασφαλείας",used_storage:"Χώρος αποθήκευσης σε χρήση",select_disk:"Επιλέξτε δίσκο",action:"Ενέργεια",deleted_message:"Η διαγραφή των αντιγράφων ασφαλείας ολοκληρώθηκε επιτυχώς",created_message:"Η δημιουργία αντιγράφου ασφαλείας ολοκληρώθηκε με επιτυχία",invalid_disk_credentials:"Μη έγκυρο διαπιστευτήριο του επιλεγμένου δίσκου"},disk:{title:"Δίσκος Αρχείου.Δίσκοι Αρχείου",description:"Από προεπιλογή, ο Κρατήρας θα χρησιμοποιήσει τον τοπικό σας δίσκο για την αποθήκευση αντιγράφων ασφαλείας, avatar και άλλων αρχείων εικόνας. Μπορείτε να ρυθμίσετε περισσότερους από έναν οδηγούς δίσκων όπως DigitalOcean, S3 και Dropbox σύμφωνα με τις προτιμήσεις σας.",created_at:"Δημιουργήθηκε στις",dropbox:"Dropbox",name:"Όνομα",driver:"Οδηγός",disk_type:"Type",disk_name:"Χρήση δίσκου",new_disk:"Φόρτωση Νέου Δίσκου",filesystem_driver:"Οδηγός Συστήματος Αρχείων",local_driver:"τοπικός οδηγός",local_root:"τοπική ρίζα",public_driver:"Πρόκριση Οδηγού",public_root:"Δημόσια Ρίζα",public_url:"Δημόσια διεύθυνση URL",public_visibility:"Δημόσια Ορατότητα",media_driver:"Οδηγός Αλληλογραφίας",media_root:"Ρίζα Πολυμέσων",aws_driver:"Οδηγός AWS",aws_key:"Κλειδί SES",aws_secret:"SES Μυστικό",aws_region:"Περιοχή AWS",aws_bucket:"SES Μυστικό",aws_root:"Ρίζα AWS",do_spaces_type:"Τύπος κενών",do_spaces_key:"Τύπος κενών",do_spaces_secret:"Μυστικό Όριο Χώρων",do_spaces_region:'Περιοχή "Χώρων"',do_spaces_bucket:"Μυστικό Όριο Χώρων",do_spaces_endpoint:"Εκτέλεση Χώρων Τελικού Σημείου",do_spaces_root:'Περιοχή "Χώρων"',dropbox_type:"Συγχρονισμός Dropbox",dropbox_token:"Συγχρονισμός Dropbox",dropbox_key:"Κλειδί Dropbox",dropbox_secret:"Μυστικό Dropbox",dropbox_app:"Συγχρονισμός Dropbox",dropbox_root:"Ρίζα Dropbox",default_driver:"Προεπιλεγμένος Οδηγός",is_default:"IS ΠΡΟΦΥΛΑΞΗ",set_default_disk:"Ορισμός Προεπιλεγμένου Δίσκου",set_default_disk_confirm:"Αυτός ο δίσκος θα οριστεί ως προεπιλεγμένος και όλα τα νέα αρχεία PDF θα αποθηκευτούν σε αυτόν τον δίσκο",success_set_default_disk:"Ο δίσκος ορίστηκε ως προκαθορισμένος επιτυχώς",save_pdf_to_disk:"Αποθήκευση κλειδιού στο δίσκο",disk_setting_description:" Ενεργοποιήστε αυτό, αν θέλετε να αποθηκεύσετε ένα αντίγραφο του κάθε τιμολογίου, Εκτίμηση & παραλαβή πληρωμής PDF στον προεπιλεγμένο δίσκο σας αυτόματα. Η ενεργοποίηση αυτής της επιλογής θα μειώσει το χρόνο φόρτωσης κατά την προβολή των PDF.",select_disk:"Επιλέξτε δίσκο",disk_settings:"Ρυθμίσεις Δίσκου",confirm_delete:"Τα υπάρχοντα αρχεία και οι φάκελοι σας στον καθορισμένο δίσκο δεν θα επηρεαστούν αλλά η διαμόρφωση του δίσκου σας θα διαγραφεί από τον Κρατήρα",action:"Ενέργεια",edit_file_disk:"Επεξεργασία Δίσκου Αρχείου",success_create:"Η δεξαμενή προστέθηκε επιτυχώς.",success_update:"Η δεξαμενή προστέθηκε επιτυχώς.",error:"Η προσθήκη δίσκου απέτυχε",deleted_message:"Ο δίσκος αρχείου διαγράφηκε επιτυχώς",disk_variables_save_successfully:"Η Ρύθμιση Του Δίσκου Επιτυχής",disk_variables_save_error:"Αποτυχία ρύθμισης του δίσκου.",invalid_disk_credentials:"Μη έγκυρο διαπιστευτήριο του επιλεγμένου δίσκου"},taxations:{add_billing_address:"Enter Billing Address",add_shipping_address:"Enter Shipping Address",add_company_address:"Enter Company Address",modal_description:"The information below is required in order to fetch sales tax.",add_address:"Add Address for fetching sales tax.",address_placeholder:"Example: 123, My Street",city_placeholder:"Example: Los Angeles",state_placeholder:"Example: CA",zip_placeholder:"Example: 90024",invalid_address:"Please provide valid address details."}},Loe={account_info:"Πληροφορίες Λογαριασμού",account_info_desc:"Παρακάτω θα χρησιμοποιηθούν οι λεπτομέρειες για τη δημιουργία του κύριου λογαριασμού διαχειριστή. Επίσης, μπορείτε να αλλάξετε τα στοιχεία ανά πάσα στιγμή μετά τη σύνδεση.",name:"Όνομα",email:"Ηλεκτρονική διεύθυνση",password:"Κωδικός",confirm_password:"Επιβεβαίωση Κωδικού",save_cont:"Αποθήκευση & συνεχεία",company_info:"Πληροφορίες Εταιρίας",company_info_desc:"Αυτές οι πληροφορίες θα εμφανίζονται στα τιμολόγια. Σημειώστε ότι μπορείτε να το επεξεργαστείτε αργότερα στη σελίδα ρυθμίσεων.",company_name:"Όνομα Εταιρείας",company_logo:"Λογότυπο Εταιρείας",logo_preview:"Προεπισκόπηση Λογότυπου",preferences:"Προτιμήσεις Εταιρείας",preferences_desc:"Καθορίστε τις προεπιλεγμένες προτιμήσεις για αυτήν την εταιρεία.",currency_set_alert:"Το νόμισμα της εταιρείας δεν μπορεί να αλλάξει.",country:"Χώρα",state:"Νομός",city:"Πόλη",address:"Διεύθυνση",street:"Οδός 1 - Οδός 2",phone:"Τηλέφωνο",zip_code:"Ταχυδρομικός κώδικας",go_back:"Επιστροφή",currency:"Νόμισμα",language:"Language",time_zone:"Ζώνη Ώρας",fiscal_year:"Οικονομικό έτος",date_format:"Μορφή Ημερομηνίας",from_address:"Διεύθυνση Αποστολής",username:"Όνομα Χρήστη",next:"Επόμενο",continue:"Συνέχεια",skip:"Salta",database:{database:"Url & Βάση Δεδομένων Ιστοτόπου",connection:"Σύνδεση με Βάση Δεδομένων",host:"Διακομιστής Βάσης Δεδομένων",port:"Θύρα Βάσης Δεδομένων",password:"Κωδικός Βάσης Δεδομένων",app_url:"URL Εφαρμογής",app_domain:"Τομέας Εφαρμογής",username:"Όνομα Χρήστη Βάσης Δεδομένων",db_name:"Όνομα βάσης δεδομένων",db_path:"Διαδρομή Βάσης Δεδομένων",desc:"Δημιουργήστε μια βάση δεδομένων στο διακομιστή σας και ορίστε τα διαπιστευτήρια χρησιμοποιώντας την παρακάτω φόρμα."},permissions:{permissions:"Δικαιώματα",permission_confirm_title:"Είστε βέβαιοι ότι θέλετε να συνεχίσετε;",permission_confirm_desc:"Ο έλεγχος δικαιωμάτων φακέλου απέτυχε",permission_desc:"Παρακάτω είναι η λίστα των δικαιωμάτων φακέλων που απαιτούνται για να λειτουργήσει η εφαρμογή. Εάν ο έλεγχος της άδειας αποτύχει, φροντίστε να ενημερώσετε τα δικαιώματα του φακέλου σας."},verify_domain:{title:"Ανθρώπινη Επαλήθευση",desc:"Ο Κρατήρας χρησιμοποιεί έλεγχο ταυτότητας που βασίζεται σε συνεδρία και απαιτεί επαλήθευση τομέα για λόγους ασφαλείας. Παρακαλώ εισάγετε τον τομέα στον οποίο θα έχετε πρόσβαση στην εφαρμογή ιστού σας.",app_domain:"Τομέας Εφαρμογής",verify_now:"Επαληθεύστε Τώρα",success:"Η διεύθυνση του ηλεκτρονικού ταχυδρομείου σας επαληθεύτηκε",failed:"Η επαλήθευση τομέα απέτυχε. Παρακαλώ εισάγετε έγκυρο όνομα τομέα.",verify_and_continue:"Επαλήθευση Και Συνέχεια"},mail:{host:"Διακομιστής Αλληλογραφίας",port:"Διακομιστής Αλληλογραφίας",driver:"Οδηγός Αλληλογραφίας",secret:"Μυστικό",mailgun_secret:"Μυστικό Mailgun",mailgun_domain:"Τομέας",mailgun_endpoint:"Mailgun Endpoint",ses_secret:"SES Μυστικό",ses_key:"Κλειδί SES",password:"Κωδικός Πρόσβασης Ταχυδρομείου",username:"Όνομα Ταχυδρομείου",mail_config:"Διαμόρφωση Mail",from_name:"Όνομα Αποστολέα",from_mail:"Διεύθυνση Αποστολής",encryption:"Κρυπτογράφηση Email",mail_config_desc:"Παρακάτω είναι η φόρμα για τη ρύθμιση παραμέτρων του προγράμματος οδήγησης ηλεκτρονικού ταχυδρομείου για την αποστολή μηνυμάτων ηλεκτρονικού ταχυδρομείου από την εφαρμογή. Μπορείτε επίσης να ρυθμίσετε τις παραμέτρους τρίτων παρόχων όπως το Sendgrid, το SES κλπ."},req:{system_req:"Απαιτήσεις Συστήματος",php_req_version:"PHP (απαιτείται έκδοση {version})",check_req:"Έλεγχος Απαιτήσεων",system_req_desc:"Ο κρατήρας έχει μερικές απαιτήσεις διακομιστή. Βεβαιωθείτε ότι ο διακομιστής σας έχει την απαιτούμενη έκδοση php και όλες τις επεκτάσεις που αναφέρονται παρακάτω."},errors:{migrate_failed:"Αποτυχία Μετεγκατάστασης",database_variables_save_error:"Δεν είναι δυνατή η εγγραφή ρύθμισης παραμέτρων στο αρχείο .env. Παρακαλώ ελέγξτε τα δικαιώματα αρχείου",mail_variables_save_error:"Αποτυχία ρύθμισης του δίσκου.",connection_failed:"Σύνδεση βάσης δεδομένων",database_should_be_empty:"Η βάση δεδομένων πρέπει να είναι κενή"},success:{mail_variables_save_successfully:"Η Ρύθμιση Του Δίσκου Επιτυχής",database_variables_save_successfully:"Η Ρύθμιση Του Δίσκου Επιτυχής."}},Boe={invalid_phone:"Μη έγκυρος αριθμός τηλεφώνου",invalid_url:"Μη έγκυρη διεύθυνση url (π.χ. http://www.invoiceshelf.com)",invalid_domain_url:"Μη έγκυρη διεύθυνση url (π.χ. invoiceshelf.com)",required:"Το πεδίο είναι υποχρεωτικό",email_incorrect:"Λάθος μορφή e-mail;",email_already_taken:"Το όνομα έχει ήδη ληφθεί.",email_does_not_exist:"Το συγκεκριμένο email χρησιμοποιείται ήδη από άλλον χρήστη",item_unit_already_taken:"Αυτό το όνομα χρήστη έχει ήδη ληφθεί.",payment_mode_already_taken:"Αυτό το όνομα χρήστη έχει ήδη ληφθεί.",send_reset_link:"Αποστολή συνδέσμου επαναφοράς",not_yet:"Όχι ακόμα? Στείλε το ξανά",password_min_length:"Ο κωδικός πρόσβασης πρέπει να περιέχει τουλάχιστον 6 χαρακτήρες",name_min_length:"Το όνομα πρέπει να έχει τουλάχιστον {count} γράμματα.",prefix_min_length:"Το όνομα πρέπει να έχει τουλάχιστον {count} γράμματα.",enter_valid_tax_rate:"Εισάγετε έγκυρο φορολογικό συντελεστή",numbers_only:"Αριθμοί Μόνο.",characters_only:"Χαρακτήρες Μόνο.",password_incorrect:"Οι κωδικοί πρόσβασης πρέπει να είναι ίδιοι",password_length:"Ο κωδικός πρόσβασης πρέπει να είναι {count} χαρακτήρας.",qty_must_greater_than_zero:"Η ποσότητα πρέπει να είναι μεγαλύτερη του μηδενός.",price_greater_than_zero:"Η τιμή πρέπει να είναι μεγαλύτερη του μηδενός.",payment_greater_than_zero:"Η πληρωμή πρέπει να είναι μεγαλύτερη του μηδενός.",payment_greater_than_due_amount:"Η πληρωμή που εισήχθη είναι περισσότερο από το οφειλόμενο ποσό αυτού του τιμολογίου.",quantity_maxlength:"Η ποσότητα δεν πρέπει να υπερβαίνει τα 20 ψηφία.",price_maxlength:"Η τιμή δεν πρέπει να είναι μεγαλύτερη από 20 ψηφία.",price_minvalue:"Η τιμή θα πρέπει να είναι μεγαλύτερη από 0.",amount_maxlength:"Το ποσό δεν πρέπει να υπερβαίνει τα 20 ψηφία.",amount_minvalue:"Το ποσό πρέπει να είναι μεγαλύτερο από 0.",discount_maxlength:"Η έκπτωση δεν πρέπει να είναι μεγαλύτερη από τη μέγιστη έκπτωση",description_maxlength:"Η περιγραφή δεν πρέπει να είναι μεγαλύτερη από 255 χαρακτήρες.",subject_maxlength:"Η περιγραφή δεν πρέπει να είναι μεγαλύτερη από 100 χαρακτήρες.",message_maxlength:"Το μήνυμα δεν πρέπει να είναι μεγαλύτερο από 255 χαρακτήρες.",maximum_options_error:"Μέγιστο {max} επιλογές επιλεγμένες. Αφαιρέστε πρώτα μια επιλεγμένη επιλογή για να επιλέξετε μια άλλη.",notes_maxlength:"Η περιγραφή δεν πρέπει να είναι μεγαλύτερη από 65,000 χαρακτήρες.",address_maxlength:"Η διεύθυνση δεν πρέπει να είναι μεγαλύτερη από 255 χαρακτήρες.",ref_number_maxlength:"Η διεύθυνση δεν πρέπει να είναι μεγαλύτερη από 255 χαρακτήρες.",prefix_maxlength:"Η περιγραφή δεν πρέπει να είναι μεγαλύτερη από 5 χαρακτήρες.",something_went_wrong:"Κάτι δεν πήγε καλά",number_length_minvalue:"Το μήκος του αριθμού πρέπει να είναι μεγαλύτερο από 0",at_least_one_ability:"Παρακαλώ επιλέξτε τουλάχιστον ένα δικαίωμα.",valid_driver_key:"Παρακαλώ εισάγετε ένα έγκυρο κλειδί {driver}.",valid_exchange_rate:"Παρακαλώ εισάγετε μια έγκυρη συναλλαγματική ισοτιμία.",company_name_not_same:"Το όνομα της εταιρείας πρέπει να ταιριάζει με το συγκεκριμένο όνομα."},Uoe={starter_plan:"Αυτή η λειτουργία είναι διαθέσιμη στο Starter plan και μετά!",invalid_provider_key:"Εισαγάγετε Έγκυρο Κλειδί Api Πάροχου.",estimate_number_used:"Ο αριθμός της εκτίμησης έχει ήδη ληφθεί.",invoice_number_used:"Ο αριθμός τιμολογίου έχει ήδη ληφθεί.",payment_attached:"Αυτό το τιμολόγιο έχει ήδη μια πληρωμή που επισυνάπτεται σε αυτό. Βεβαιωθείτε ότι έχετε διαγράψει πρώτα τις συνημμένες πληρωμές για να προχωρήσετε με την αφαίρεση.",payment_number_used:"Ο αριθμός πληρωμής έχει ήδη ληφθεί.",name_already_taken:"Το όνομα έχει ήδη ληφθεί.",receipt_does_not_exist:"Δεν υπάρχει απόδειξη.",customer_cannot_be_changed_after_payment_is_added:"Ο πελάτης δεν μπορεί να αλλάξει μετά την πληρωμή προστίθεται",invalid_credentials:"Μη Έγκυρα Πιστοποιητικά.",not_allowed:"Δεν Επιτρέπεται",login_invalid_credentials:"Αυτά τα διαπιστευτήρια δεν ταιριάζουν με τα αρχεία μας.",enter_valid_cron_format:"Παρακαλώ εισάγετε μια έγκυρη μορφή cron",email_could_not_be_sent:"Email could not be sent to this email address.",invalid_address:"Please enter a valid address.",invalid_key:"Please enter valid key.",invalid_state:"Please enter a valid state.",invalid_city:"Please enter a valid city.",invalid_postal_code:"Please enter a valid zip.",invalid_format:"Please enter valid query string format.",api_error:"Server not responding.",feature_not_enabled:"Feature not enabled.",request_limit_met:"Api request limit exceeded.",address_incomplete:"Incomplete Address"},Voe="Εκτίμηση",qoe="Εκτίμηση Αριθμού",Woe="Εκτιμώμενη ημ. επισκευής",Hoe="Ημερομηνία λήξης",Koe="Τιμολόγιο",Yoe="Αριθμός τιμολογίου",Zoe="Ημ/νία Τιμολόγησης",Goe="Echéance",Qoe="Σημειώσεις",Joe="Προϊόντα",Xoe="Ποσότητα",ese="Τιμή",tse="Έκπτωση",ase="Ποσό",nse="Υποσύνολο",ise="Σύνολο ",ose="Πληρωμή",sse="ΠΡΟΣΑΡΜΟΓΗ ΠΛΗΡΩΜΗΣ",rse="Ημ/νία εξόφλησης",lse="Αριθμός Πληρωμής",cse="Τρόπος πληρωμής",dse="Ποσοστό Ληφθέντων",use="ΕΚΘΕΣΗ ΕΞΑΓΩΓΩΝ",_se="ΣΥΝΟΛΟ ΔΑΠΑΝΗΣ",mse="ΕΚΘΕΣΗ ΕΠΑΦΗΣ & LOSS",pse="Αναφορά Πελάτη Πωλήσεων",fse="Αναφορά Πελάτη Πωλήσεων",hse="Αναφορά Περίληψης Φόρου",gse=`ΕΙΣΟΔΗΜΑΤΑ -`,vse="NET PROFIT",yse="Έκθεση Πωλήσεων: Από Τον Πελάτη",bse="ΣΥΝΟΛΟ ΠΩΛΗΣΗΣ",kse="Έκθεση Πωλήσεων: Από Τον Πελάτη",wse="ΦΟΡΟΛΟΓΙΚΗ ΕΚΘΕΣΗ",Dse="ΣΥΝΟΛΟ ΦΟΡΟΥ",xse="Φορολογική κλάση",Sse="Έξοδα",Pse="Χρέωση σε,",Ese="Αποστολή σε,",zse="Λήψη από",Ase="Φόρος",Cse={navigation:koe,general:woe,dashboard:Doe,tax_types:xoe,global_search:Soe,company_switcher:Poe,dateRange:Eoe,customers:zoe,items:Aoe,estimates:Coe,invoices:Toe,recurring_invoices:joe,payments:Noe,expenses:Ioe,login:Foe,modules:Roe,users:Ooe,reports:Moe,settings:$oe,wizard:Loe,validation:Boe,errors:Uoe,pdf_estimate_label:Voe,pdf_estimate_number:qoe,pdf_estimate_date:Woe,pdf_estimate_expire_date:Hoe,pdf_invoice_label:Koe,pdf_invoice_number:Yoe,pdf_invoice_date:Zoe,pdf_invoice_due_date:Goe,pdf_notes:Qoe,pdf_items_label:Joe,pdf_quantity_label:Xoe,pdf_price_label:ese,pdf_discount_label:tse,pdf_amount_label:ase,pdf_subtotal:nse,pdf_total:ise,pdf_payment_label:ose,pdf_payment_receipt_label:sse,pdf_payment_date:rse,pdf_payment_number:lse,pdf_payment_mode:cse,pdf_payment_amount_received_label:dse,pdf_expense_report_label:use,pdf_total_expenses_label:_se,pdf_profit_loss_label:mse,pdf_sales_customers_label:pse,pdf_sales_items_label:fse,pdf_tax_summery_label:hse,pdf_income_label:gse,pdf_net_profit_label:vse,pdf_customer_sales_report:yse,pdf_total_sales_label:bse,pdf_item_sales_label:kse,pdf_tax_report_label:wse,pdf_total_tax_label:Dse,pdf_tax_types_label:xse,pdf_expenses_label:Sse,pdf_bill_to:Pse,pdf_ship_to:Ese,pdf_received_from:zse,pdf_tax_label:Ase},Tse={dashboard:"Upravljačka Ploča",customers:"Klijenti",items:"Stavke",invoices:"Fakture","recurring-invoices":"Recurring Invoices",expenses:"Rashodi",estimates:"Ponude",payments:"Uplate",reports:"Izvještaji",settings:"Postavke",logout:"Odjava",users:"Korisnici",modules:"Modules"},jse={add_company:"Dodaj tvrtku",view_pdf:"Pogledaj PDF",copy_pdf_url:"Kopiraj PDF link",download_pdf:"Preuzmi PDF",save:"Spremi",create:"Kreiraj",cancel:"Otkaži",update:"Ažuriraj",deselect:"Poništi izbor",download:"Preuzmi",from_date:"Od Datuma",to_date:"Do Datuma",from:"Pošiljatelj",to:"Primatelj",ok:"Ok",yes:"Yes",no:"No",sort_by:"Posloži Po",ascending:"Rastuće",descending:"Padajuće",subject:"Predmet",body:"Tijelo",message:"Poruka",send:"Pošalji",preview:"Preview",go_back:"Natrag",back_to_login:"Natrag na prijavu?",home:"Početna",filter:"Filter",delete:"Obriši",edit:"Izmjeni",view:"Pogledaj",add_new_item:"Dodaj novu stavku",clear_all:"Izbriši sve",showing:"Prikazujem",of:"od",actions:"Radnje",subtotal:"UKUPNO",discount:"POPUST",fixed:"Fiksno",percentage:"Postotak",tax:"POREZ",total_amount:"UKUPAN IZNOS",bill_to:"Dokument za",ship_to:"Isporučiti za",due:"Dužan",draft:"U izradi",sent:"Poslano",all:"Sve",select_all:"Izaberi sve",select_template:"Select Template",choose_file:"Klikni ovdje da izabereš fajl",choose_template:"Izaberi predložak",choose:"Izaberi",remove:"Ukloni",select_a_status:"Izaberi status",select_a_tax:"Izaberi porez",search:"Pretraga",are_you_sure:"Jeste li sigurni?",list_is_empty:"Popis je prazna.",no_tax_found:"Porez nije pronađen!",four_zero_four:"404",you_got_lost:"Ups! Izgubio si se!",go_home:"Idi na početnu stranicu",test_mail_conf:"Testiraj postavke Pošte",send_mail_successfully:"Pošta uspješno poslana",setting_updated:"Postavke uspješno ažurirane",select_state:"Odaberi saveznu državu",select_country:"Odaberi državu",select_city:"Odaberi grad",street_1:"Adresa 1",street_2:"Adresa 2",action_failed:"Radnja nije uspjela",retry:"Pokušaj ponovo",choose_note:"Odaberi napomenu",no_note_found:"Ne postoje spremljene napomene",insert_note:"Unesi bilješku",copied_pdf_url_clipboard:"Link do PDF fajla kopiran!",copied_url_clipboard:"Copied url to clipboard!",docs:"Docs",do_you_wish_to_continue:"Do you wish to continue?",note:"Note",pay_invoice:"Pay Invoice",login_successfully:"Logged in successfully!",logged_out_successfully:"Logged out successfully",mark_as_default:"Postavi kao zadano"},Nse={select_year:"Odaberi godinu",cards:{due_amount:"Dužan iznos",customers:"Klijenti",invoices:"Računi",estimates:"Ponude",payments:"Payments"},chart_info:{total_sales:"Prodaja",total_receipts:"Računi",total_expense:"Rashodi",net_income:"Prihod NETO",year:"Odaberi godinu"},monthly_chart:{title:"Prodaja & Rashodi"},recent_invoices_card:{title:"Dospijele fakture",due_on:"Datum dospijeća",customer:"Klijent",amount_due:"Iznos dospijeća",actions:"Akcije",view_all:"Pogledaj sve"},recent_estimate_card:{title:"Nedavne ponude",date:"Datum",customer:"Klijent",amount_due:"Iznos dospijeća",actions:"Akcije",view_all:"Pogledaj sve"}},Ise={name:"Naziv",description:"Opis",percent:"Postotak",compound_tax:"Složeni porez"},Fse={search:"Pretraga...",customers:"Klijenti",users:"Korisnici",no_results_found:"Nema rezultata"},Rse={label:"SWITCH COMPANY",no_results_found:"No Results Found",add_new_company:"Add new company",new_company:"New company",created_message:"Company created successfully"},Ose={today:"Today",this_week:"This Week",this_month:"This Month",this_quarter:"This Quarter",this_year:"This Year",previous_week:"Previous Week",previous_month:"Previous Month",previous_quarter:"Previous Quarter",previous_year:"Previous Year",custom:"Custom"},Mse={title:"Klijenti",prefix:"Prefix",add_customer:"Dodaj Klijenta",contacts_list:"Popis klijenata",name:"Naziv",mail:"Mail | Mail-ovi",statement:"Izjava",display_name:"Naziv koji se prikazuje",primary_contact_name:"Primarna kontakt osoba",contact_name:"Naziv kontakt osobe",amount_due:"Iznos dospijeća",email:"Email",address:"Adresa",phone:"Telefon",website:"Web stranica",overview:"Pregled",invoice_prefix:"Invoice Prefix",estimate_prefix:"Estimate Prefix",payment_prefix:"Payment Prefix",enable_portal:"Uključi portal",country:"Država",state:"Županija",city:"Grad",zip_code:"Poštanski broj",added_on:"Datum dodavanja",action:"Radnja",password:"Lozinka",confirm_password:"Confirm Password",street_number:"Broj ulice",primary_currency:"Primarna valuta",description:"Opis",add_new_customer:"Dodaj Novog Klijenta",save_customer:"Spremi klijenta",update_customer:"Ažuriraj klijenta",customer:"Klijent | Klijenti",new_customer:"Novi klijent",edit_customer:"Izmjeni klijenta",basic_info:"Osnovne informacije",portal_access:"Portal Access",portal_access_text:"Would you like to allow this customer to login to the Customer Portal?",portal_access_url:"Customer Portal Login URL",portal_access_url_help:"Please copy & forward the above given URL to your customer for providing access.",billing_address:"Adresa za naplatu",shipping_address:"Adresa za dostavu",copy_billing_address:"Kopiraj iz adrese za naplatu",no_customers:"Još uvijek nema klijenata!",no_customers_found:"Klijenti nisu pronađeni!",no_contact:"Nema kontakta",no_contact_name:"Nema imena kontakta",list_of_customers:"Sekcija sadrži popis klijenata.",primary_display_name:"Primarni naziv koji se prikazuje",select_currency:"Odaberi valutu",select_a_customer:"Odaberi klijenta",type_or_click:"Unesi tekst ili klikni za odabir",new_transaction:"Nova transakcija",no_matching_customers:"Nije pronađeno!",phone_number:"Broj telefona",create_date:"Datum kreiranja",confirm_delete:"Nećete moći vratiti klijenta, sve njegove Fakture, Ponude i Uplate. | Nećete moći vratiti odabrane klijente, sve njihove Fakture, Ponude i Uplate.",created_message:"Klijent uspješno kreiran",updated_message:"Klijent uspješno ažuriran",address_updated_message:"Address Information Updated succesfully",deleted_message:"Klijent uspješno obrisan | Klijenti uspješno obrisani",edit_currency_not_allowed:"Cannot change currency once transactions created."},$se={title:"Stavke",items_list:"Popis stavki",name:"Naziv",unit:"Jedinica",description:"Opis",added_on:"Datum dodavanja",price:"Cijena",date_of_creation:"Datum kreiranja",not_selected:"Nema odabrane stavke",action:"Radnje",add_item:"Dodaj Stavku",save_item:"Spremi Stavku",update_item:"Ažuriraj Stavku",item:"Stavka | Stavke",add_new_item:"Dodaj novu stavku",new_item:"Nova stavka",edit_item:"Izmjeni stavku",no_items:"Još uvijek nema stavki!",list_of_items:"Ova sekcija sadrži popis stavki.",select_a_unit:"odaberi jedinicu",taxes:"Porezi",item_attached_message:"Nije dozvoljeno brisanje stavke koja se koristi",confirm_delete:"Nećeš moći vratiti ovu Stavku | Nećeš moći vratiti ove Stavke",created_message:"Stavka uspješno kreirana",updated_message:"Stavka uspješno ažurirana",deleted_message:"Stavka uspješno obrisana | Stavke uspješno obrisane"},Lse={title:"Ponude",accept_estimate:"Accept Estimate",reject_estimate:"Reject Estimate",estimate:"Ponuda | Ponude",estimates_list:"Popis ponuda",days:"{days} Dan",months:"{months} Mjesec",years:"{years} Godina",all:"Sve",paid:"Plaćeno",unpaid:"Neplaćeno",customer:"KLIJENT",ref_no:"POZIV NA BROJ",number:"BROJ",amount_due:"IZNOS DOSPIJEĆA",partially_paid:"Djelomično Plaćeno",total:"Ukupno za plaćanje",discount:"Popust",sub_total:"Osnovica za obračun PDV-a",estimate_number:"Broj ponude",ref_number:"Poziv na broj",contact:"Kontakt",add_item:"Dodaj stavku",date:"Datum",due_date:"Datum Dospijeća",expiry_date:"Datum Isteka",status:"Status",add_tax:"Dodaj Porez",amount:"Iznos",action:"Radnja",notes:"Napomena",tax:"Porez",estimate_template:"Predložak",convert_to_invoice:"Pretvori u Fakturu",mark_as_sent:"Označi kao Poslano",send_estimate:"Pošalji Ponudu",resend_estimate:"Ponovo pošalji Ponudu",record_payment:"Unesi uplatu",add_estimate:"Dodaj Ponudu",save_estimate:"Spremi Ponudu",confirm_conversion:"Detalji ove Ponude će biti iskorišteni za pravljenje Fakture.",conversion_message:"Faktura uspješno kreirana",confirm_send_estimate:"Ova Ponuda će biti poslana putem Email-a klijentu",confirm_mark_as_sent:"Ova Ponuda će biti označena kao Poslana",confirm_mark_as_accepted:"Ova Ponuda će biti označena kao Prihvaćena",confirm_mark_as_rejected:"Ova Ponuda će biti označena kao Odbijena",no_matching_estimates:"Ne postoji odgovarajuća ponuda!",mark_as_sent_successfully:"Ponuda uspješno označena kao Poslana",send_estimate_successfully:"Ponuda uspješno poslana",errors:{required:"Obvezno polje!"},accepted:"Prihvaćeno",rejected:"Odbijeno",expired:"Expired",sent:"Poslano",draft:"U izradi",viewed:"Viewed",declined:"Odbijeno",new_estimate:"Nova Ponuda",add_new_estimate:"Dodaj novu Ponudu",update_Estimate:"Ažuriraj Ponudu",edit_estimate:"Izmjeni Ponudu",items:"stavke",Estimate:"Ponuda | Ponude",add_new_tax:"Dodaj novi Porez",no_estimates:"Još uvijek nema Ponuda!",list_of_estimates:"Ova sekcija sadrži popis Ponuda.",mark_as_rejected:"Označi kao odbijeno",mark_as_accepted:"Označi kao prihvaćeno",marked_as_accepted_message:"Ponuda označena kao prihvaćena",marked_as_rejected_message:"Ponuda označena kao odbijena",confirm_delete:"Nećeš moći vratiti ovu Ponudu | Nećeš moći vratiti ove Ponude",created_message:"Ponuda uspješno kreirana",updated_message:"Ponuda uspješno ažurirana",deleted_message:"Ponuda uspješno obrisana | Ponude uspješno obrisane",something_went_wrong:"nešto je krenulo naopako",item:{title:"Naziv stavke",description:"Opis",quantity:"Količina",price:"Cijena",discount:"Popust",total:"Ukupno za plaćanje",total_discount:"Ukupan popust",sub_total:"Ukupno",tax:"Porez",amount:"Iznos",select_an_item:"Unesi tekst ili klikni da izabereš",type_item_description:"Unesi opis Stavke (nije obavezno)"},mark_as_default_estimate_template_description:"Ako je omogućeno, izabrani predložak biti će automatski izabran za nove predračune."},Bse={title:"Fakture",download:"Download",pay_invoice:"Pay Invoice",invoices_list:"Popis Faktura",invoice_information:"Invoice Information",days:"{days} dan",months:"{months} Mjesec",years:"{years} Godina",all:"Sve",paid:"Plaćeno",unpaid:"Neplaćeno",viewed:"Pregledano",overdue:"Zakašnjenje",completed:"Izvršeno",customer:"KLIJENT",paid_status:"STATUS UPLATE",ref_no:"POZIV NA BROJ",number:"BROJ",amount_due:"IZNOS DOSPIJEĆA",partially_paid:"Djelomično plaćeno",total:"Ukupno za plaćanje",discount:"Popust",sub_total:"Osnovica za obračun PDV-a",invoice:"Faktura | Fakture",invoice_number:"Broj Fakture",ref_number:"Poziv na broj",contact:"Kontakt",add_item:"Dodaj Stavku",date:"Datum",due_date:"Datum Dospijeća",status:"Status",add_tax:"Dodaj Porez",amount:"Iznos",action:"Radnja",notes:"Napomena",view:"Pogledaj",send_invoice:"Pošalji Fakturu",resend_invoice:"Ponovo pošalji Fakturu",invoice_template:"Predložak Fakture",conversion_message:"Invoice cloned successful",template:"Predložak",mark_as_sent:"Označi kao Poslano",confirm_send_invoice:"Ova Faktura će biti poslana putem Email-a klijentu",invoice_mark_as_sent:"Ova Faktura će biti označena kao poslana",confirm_mark_as_accepted:"This invoice will be marked as Accepted",confirm_mark_as_rejected:"This invoice will be marked as Rejected",confirm_send:"Ova Faktura će biti poslana putem Email-a klijentu",invoice_date:"Datum Fakture",record_payment:"Unesi Uplatu",add_new_invoice:"Dodaj novu Fakturu",update_expense:"Ažuriraj Rashod",edit_invoice:"Izmjeni Fakturu",new_invoice:"Nova Faktura",save_invoice:"Spremi Fakturu",update_invoice:"Ažuriraj Fakturu",add_new_tax:"Dodaj novi Porez",no_invoices:"Još uvijek nema Faktura!",mark_as_rejected:"Mark as rejected",mark_as_accepted:"Mark as accepted",list_of_invoices:"Ova sekcija sadrži popis Faktura.",select_invoice:"Odaberi Fakturu",no_matching_invoices:"Ne postoje Fakture koje odgovaraju pretrazi!",mark_as_sent_successfully:"Faktura uspješno označena kao Poslana",invoice_sent_successfully:"Faktura uspješno poslana",cloned_successfully:"Uspješno napravljen duplikat Fakture",clone_invoice:"Napravi duplikat",confirm_clone:"Ova Faktura će biti duplikat nove Fakture",item:{title:"Naziv Stavke",description:"Opis",quantity:"Količina",price:"Cijena",discount:"Popust",total:"Ukupno za plaćanje",total_discount:"Ukupan popust",sub_total:"Ukupno",tax:"Porez",amount:"Iznos",select_an_item:"Unesi tekst ili klikni da izabereš",type_item_description:"Unesi opis Stavke (nije obavezno)"},payment_attached_message:"One of the selected invoices already have a payment attached to it. Make sure to delete the attached payments first in order to go ahead with the removal",confirm_delete:"Nećeš moći vratiti ovu Fakturu | Nećeš moći vratiti ove Fakture",created_message:"Faktura uspješno kreirana",updated_message:"Faktura uspješno ažurirana",deleted_message:"Faktura uspješno obrisana | Fakture uspješno obrisane",marked_as_sent_message:"Faktura označena kao uspješno poslana",something_went_wrong:"nešto je krenulo naopako",invalid_due_amount_message:"Ukupan iznos za plaćanje na fakturi ne može biti manji od iznosa uplate za ovu fakturu. Molim Vas ažurirajte fakturu ili obrišite uplate koje su povezane sa ovom fakturom da bi nastavili.",mark_as_default_invoice_template_description:"Ako je omogućeno, izabrani predložak biti će automatski izabran za nove račune."},Use={title:"Recurring Invoices",invoices_list:"Recurring Invoices List",days:"{days} Days",months:"{months} Month",years:"{years} Year",all:"All",paid:"Paid",unpaid:"Unpaid",viewed:"Viewed",overdue:"Overdue",active:"Active",completed:"Completed",customer:"CUSTOMER",paid_status:"PAID STATUS",ref_no:"REF NO.",number:"NUMBER",amount_due:"AMOUNT DUE",partially_paid:"Partially Paid",total:"Total",discount:"Discount",sub_total:"Sub Total",invoice:"Recurring Invoice | Recurring Invoices",invoice_number:"Recurring Invoice Number",next_invoice_date:"Next Invoice Date",ref_number:"Ref Number",contact:"Contact",add_item:"Add an Item",date:"Date",limit_by:"Limit by",limit_date:"Limit Date",limit_count:"Limit Count",count:"Count",status:"Status",select_a_status:"Select a status",working:"Working",on_hold:"On Hold",complete:"Completed",add_tax:"Add Tax",amount:"Amount",action:"Action",notes:"Notes",view:"View",basic_info:"Basic Info",send_invoice:"Send Recurring Invoice",auto_send:"Auto Send",resend_invoice:"Resend Recurring Invoice",invoice_template:"Recurring Invoice Template",conversion_message:"Recurring Invoice cloned successful",template:"Template",mark_as_sent:"Mark as sent",confirm_send_invoice:"This recurring invoice will be sent via email to the customer",invoice_mark_as_sent:"This recurring invoice will be marked as sent",confirm_send:"This recurring invoice will be sent via email to the customer",starts_at:"Start Date",due_date:"Invoice Due Date",record_payment:"Record Payment",add_new_invoice:"Add New Recurring Invoice",update_expense:"Update Expense",edit_invoice:"Edit Recurring Invoice",new_invoice:"New Recurring Invoice",send_automatically:"Send Automatically",send_automatically_desc:"Enable this, if you would like to send the invoice automatically to the customer when its created.",save_invoice:"Save Recurring Invoice",update_invoice:"Update Recurring Invoice",add_new_tax:"Add New Tax",no_invoices:"No Recurring Invoices yet!",mark_as_rejected:"Mark as rejected",mark_as_accepted:"Mark as accepted",list_of_invoices:"This section will contain the list of recurring invoices.",select_invoice:"Select Invoice",no_matching_invoices:"There are no matching recurring invoices!",mark_as_sent_successfully:"Recurring Invoice marked as sent successfully",invoice_sent_successfully:"Recurring Invoice sent successfully",cloned_successfully:"Recurring Invoice cloned successfully",clone_invoice:"Clone Recurring Invoice",confirm_clone:"This recurring invoice will be cloned into a new Recurring Invoice",add_customer_email:"Please add an email address for this customer to send invoices automatically.",item:{title:"Item Title",description:"Description",quantity:"Quantity",price:"Price",discount:"Discount",total:"Total",total_discount:"Total Discount",sub_total:"Sub Total",tax:"Tax",amount:"Amount",select_an_item:"Type or click to select an item",type_item_description:"Type Item Description (optional)"},frequency:{title:"Frequency",select_frequency:"Select Frequency",minute:"Minute",hour:"Hour",day_month:"Day of month",month:"Month",day_week:"Day of week"},confirm_delete:"You will not be able to recover this Invoice | You will not be able to recover these Invoices",created_message:"Recurring Invoice created successfully",updated_message:"Recurring Invoice updated successfully",deleted_message:"Recurring Invoice deleted successfully | Recurring Invoices deleted successfully",marked_as_sent_message:"Recurring Invoice marked as sent successfully",user_email_does_not_exist:"User email does not exist",something_went_wrong:"something went wrong",invalid_due_amount_message:"Total Recurring Invoice amount cannot be less than total paid amount for this Recurring Invoice. Please update the invoice or delete the associated payments to continue."},Vse={title:"Uplate",payments_list:"Popis uplata",record_payment:"Unesi Uplatu",customer:"Klijent",date:"Datum",amount:"Iznos",action:"Radnja",payment_number:"Broj uplate",payment_mode:"Način plaćanja",invoice:"Faktura",note:"Napomena",add_payment:"Dodaj Uplatu",new_payment:"Nova Uplata",edit_payment:"Izmjeni Uplatu",view_payment:"Pogledaj Uplatu",add_new_payment:"Dodaj Novu Uplatu",send_payment_receipt:"Pošalji potvrdu o uplati",send_payment:"Pošalji Uplatu",save_payment:"Spremi Uplatu",update_payment:"Ažuriraj Uplatu",payment:"Uplata | Uplate",no_payments:"Još uvijek nema uplata!",not_selected:"Nije odabrano",no_invoice:"Nema fakture",no_matching_payments:"Ne postoje uplate koje odgovaraju pretrazi!",list_of_payments:"Ova sekcija sadrži popis uplata.",select_payment_mode:"Odaberi način plaćanja",confirm_mark_as_sent:"Ovo plaćanje će biti označeno kao Poslano",confirm_send_payment:"Ovo plaćanje će biti poslano putem Email-a klijentu",send_payment_successfully:"Plaćanje uspješno poslano",something_went_wrong:"nešto je krenulo naopako",confirm_delete:"Nećeš moći vratiti ovu Uplatu | Nećeš moći vratiti ove Uplate",created_message:"Uplata uspješno kreirana",updated_message:"Uplata uspješno ažurirana",deleted_message:"Uplata uspješno obrisana | Uplate uspješno obrisane",invalid_amount_message:"Iznos Uplate je pogrešan"},qse={title:"Rashodi",expenses_list:"Popis Rashoda",select_a_customer:"Odaberi klijenta",expense_title:"Naslov",customer:"Klijent",currency:"Currency",contact:"Kontakt",category:"Kategorija",from_date:"Datum od",to_date:"Datum do",expense_date:"Datum",description:"Opis",receipt:"Račun",amount:"Iznos",action:"Radnja",not_selected:"Nije odabrano",note:"Napomena",category_id:"ID kategorije",date:"Datum",add_expense:"Dodaj Rashod",add_new_expense:"Dodaj Novi Rashod",save_expense:"Spremi Rashod",update_expense:"Ažuriraj Rashod",download_receipt:"Preuzmi Račun",edit_expense:"Izmjeni Rashod",new_expense:"Novi Rashod",expense:"Rashod | Rashodi",no_expenses:"Još uvijek nema rashoda!",list_of_expenses:"Ova sekcija sadrži popis rashoda.",confirm_delete:"Nećeš moći vratiti ovaj Rashod | Nećeš moći vratiti ove Rashode",created_message:"Rashod uspješno kreiran",updated_message:"Rashod uspješno ažuriran",deleted_message:"Rashod uspješno obrisan | Rashodi uspješno obrisani",categories:{categories_list:"Popis Kategorija",title:"Naslov",name:"Naziv",description:"Opis",amount:"Iznos",actions:"Radnje",add_category:"Dodaj Kategoriju",new_category:"Nova Kategorija",category:"Kategorija | Kategorije",select_a_category:"Izaberi kategoriju"}},Wse={email:"Email",password:"Lozinka",forgot_password:"Zaboravili ste lozinku?",or_signIn_with:"ili se prijavite sa",login:"Prijava",register:"Registracija",reset_password:"Resetiraj lozinku",password_reset_successfully:"Lozinka Uspješno Resetiranja",enter_email:"Unesi email",enter_password:"Unesi lozinku",retype_password:"Ponovo unesi lozinku"},Hse={buy_now:"Buy Now",install:"Install",price:"Price",download_zip_file:"Download ZIP file",unzipping_package:"Unzipping Package",copying_files:"Copying Files",deleting_files:"Deleting Unused files",completing_installation:"Completing Installation",update_failed:"Update Failed",install_success:"Module has been installed successfully!",customer_reviews:"Reviews",license:"License",faq:"FAQ",monthly:"Monthly",yearly:"Yearly",updated:"Updated",version:"Version",disable:"Disable",module_disabled:"Module Disabled",enable:"Enable",module_enabled:"Module Enabled",update_to:"Update To",module_updated:"Module Updated Successfully!",title:"Modules",module:"Module | Modules",api_token:"API token",invalid_api_token:"Invalid API Token.",other_modules:"Other Modules",view_all:"View All",no_reviews_found:"There are no reviews for this module yet!",module_not_purchased:"Module Not Purchased",module_not_found:"Module Not Found",version_not_supported:"The minimum required version for this module does not match. Please upgrade your invoiceshelf app to version: {version} to proceed.",last_updated:"Last Updated On",connect_installation:"Connect your installation",api_token_description:"Login to {url} and connect this installation by entering the API Token. Your purchased modules will show up here after the connection is established.",view_module:"View Module",update_available:"Update Available",purchased:"Purchased",installed:"Installed",no_modules_installed:"No Modules Installed Yet!",disable_warning:"All the settings for this particular will be reverted.",what_you_get:"What you get"},Kse={title:"Korisnici",users_list:"Popis korisnika",name:"Ime i prezime",description:"Opis",added_on:"Datum dodavanja",date_of_creation:"Datum kreiranja",action:"Radnja",add_user:"Dodaj Korisnika",save_user:"Spremi Korisnika",update_user:"Ažuriraj Korisnika",user:"Korisnik | Korisnici",add_new_user:"Dodaj novog korisnika",new_user:"Novi Korisnik",edit_user:"Izmjeni Korisnika",no_users:"Još uvijek nema korisnika!",list_of_users:"Ova sekcija sadrži popis korisnika.",email:"Email",phone:"Broj telefona",password:"Lozinka",user_attached_message:"Ne možete obrisati stavku koja je već u upotrebi",confirm_delete:"Nećeš moći vratiti ovog Korisnika | Nećeš moći vratiti ove Korisnike",created_message:"Korisnik uspješno napravljen",updated_message:"Korisnik uspješno ažuriran",deleted_message:"Korisnik uspješno obrisan | Korisnici uspješno obrisani",select_company_role:"Select Role for {company}",companies:"Companies"},Yse={title:"Izvještaj",from_date:"Datum od",to_date:"Datum do",status:"Status",paid:"Plaćeno",unpaid:"Neplaćeno",download_pdf:"Preuzmi PDF",view_pdf:"Pogledaj PDF",update_report:"Ažuriraj Izvještaj",report:"Izvještaj | Izvještaji",profit_loss:{profit_loss:"Prihod & Rashod",to_date:"Datum do",from_date:"Datum od",date_range:"Izaberi raspon datuma"},sales:{sales:"Prodaja",date_range:"Izaberi raspon datuma",to_date:"Datum do",from_date:"Datum od",report_type:"Vrsta Izveštaja"},taxes:{taxes:"Porezi",to_date:"Datum do",from_date:"Datum od",date_range:"Izaberi raspon datuma"},errors:{required:"Polje je obavezno"},invoices:{invoice:"Faktura",invoice_date:"Datum Fakture",due_date:"Datum Dospijeća",amount:"Iznos",contact_name:"Ime Kontakta",status:"Status"},estimates:{estimate:"Ponuda",estimate_date:"Datum Ponude",due_date:"Datum Dospijeća",estimate_number:"Broj Ponude",ref_number:"Poziv na broj",amount:"Iznos",contact_name:"Ime Kontakta",status:"Status"},expenses:{expenses:"Rashodi",category:"Kategorija",date:"Datum",amount:"Iznos",to_date:"Datum do",from_date:"Datum od",date_range:"Izaberi raspon datuma"}},Zse={menu_title:{account_settings:"Postavke Naloga",company_information:"Podaci o firmi",customization:"Prilagođavanje",preferences:"Preference",notifications:"Obavještenja",tax_types:"Vrste Poreza",expense_category:"Kategorije Rashoda",update_app:"Ažuriraj Aplikaciju",backup:"Backup",file_disk:"File Disk",custom_fields:"Prilagođena polja",payment_modes:"Način plaćanja",notes:"Napomene",exchange_rate:"Exchange Rate",address_information:"Address Information"},address_information:{section_description:" You can update Your Address information using form below."},title:"Postavke",setting:"Postavke | Postavke",general:"Opće",language:"Jezik",primary_currency:"Primarna Valuta",timezone:"Vremenska Zona",date_format:"Format Datuma",currencies:{title:"Valute",currency:"Valuta | Valute",currencies_list:"Popis Valuta",select_currency:"Odaberi Valutu",name:"Naziv",code:"Kod",symbol:"Simbol",precision:"Preciznost",thousand_separator:"Separator za tisuće",decimal_separator:"Separator za decimale",position:"Pozicija",position_of_symbol:"Pozicija simbola",right:"Desno",left:"Lijevo",action:"Radnja",add_currency:"Dodaj Valutu"},mail:{host:"Mail Host",port:"Mail Port",driver:"Mail Driver",secret:"Lozinka",mailgun_secret:"Mailgun Lozinka",mailgun_domain:"Domain",mailgun_endpoint:"Mailgun Endpoint",ses_secret:"SES Lozinka",ses_key:"SES Ključ",password:"Mail Lozinka",username:"Mail Korisničko Ime",mail_config:"Mail Postavke",from_name:"Naziv pošiljaoca",from_mail:"E-mail adresa pošiljaoca",encryption:"E-mail enkripcija",mail_config_desc:"Ispod se nalazi forma za podešavanje E-mail drajvera za slanje pošte iz aplikacije. Takođe možete podesiti provajdere treće strane kao Sendgrid, SES itd."},pdf:{title:"PDF Postavke",footer_text:"Tekstualno zaglavlje na dnu strane",pdf_layout:"PDF Raspored"},company_info:{company_info:"Podaci o firmi",company_name:"Naziv firme",company_logo:"Logo firme",section_description:"Informacije o Vašoj firmi će biti prikazane na fakturama, ponudama i drugim dokumentima koji se prave u ovoj aplikaciji.",phone:"Telefon",country:"Država",state:"Županija",city:"Grad",address:"Adresa",zip:"Poštanski broj",save:"Spremi",delete:"Delete",updated_message:"Podaci o firmi uspješno spremljeni",delete_company:"Delete Company",delete_company_description:"Once you delete your company, you will lose all the data and files associated with it permanently.",are_you_absolutely_sure:"Are you absolutely sure?",delete_company_modal_desc:"This action cannot be undone. This will permanently delete {company} and all of its associated data.",delete_company_modal_label:"Please type {company} to confirm"},custom_fields:{title:"Prilagođena polja",section_description:"Prilagodite vaše Fakture, Ponude i Uplate sa svojim poljima. Koristite polja navedena niže na formatu adrese na stranici Postavke/Prilagođavanje.",add_custom_field:"Dodaj prilagođeno polje",edit_custom_field:"Izmjeni prilagođeno polje",field_name:"Naziv polja",label:"Oznaka",type:"Vrsta",name:"Naziv",slug:"Slug",required:"Obavezno",placeholder:"Opis polja (Placeholder)",help_text:"Pomoćni tekst",default_value:"Zadana vrijednost",prefix:"Prefiks",starting_number:"Početni broj",model:"Model",help_text_description:"Unesite opis koji će pomoći korisnicima razumjeti svrhu ovog prilagođenog polja.",suffix:"Sufiks",yes:"Da",no:"Ne",order:"Redosljed",custom_field_confirm_delete:"Nećeš moći vratiti ovo prilagođeno polje",already_in_use:"Prilagođeno polje je već u uporabi",deleted_message:"Prilagođeno polje je uspješno obrisano",options:"opcije",add_option:"Dodaj opcije",add_another_option:"Dodaj još jednu opciju",sort_in_alphabetical_order:"Poredaj po Abecedi",add_options_in_bulk:"Grupno dodavanje opcija",use_predefined_options:"Koristi predefinirane opcije",select_custom_date:"Odaberi datum",select_relative_date:"Odaberi relativan datum",ticked_by_default:"Zadano odabrano",updated_message:"Prilagođeno polje uspješno ažurirano",added_message:"Prilagođeno polje uspješno dodato",press_enter_to_add:"Press enter to add new option",model_in_use:"Cannot update model for fields which are already in use.",type_in_use:"Cannot update type for fields which are already in use."},customization:{customization:"prilagođavanje",updated_message:"Podaci o firmi su uspješno ažurirani",save:"Spremi",insert_fields:"Insert Fields",learn_custom_format:"Learn how to use custom format",add_new_component:"Add New Component",component:"Component",Parameter:"Parameter",series:"Series",series_description:"To set a static prefix/postfix like 'INV' across your company. It supports character length of up to 6 chars.",series_param_label:"Series Value",delimiter:"Delimiter",delimiter_description:"Single character for specifying the boundary between 2 separate components. By default its set to -",delimiter_param_label:"Delimiter Value",date_format:"Date Format",date_format_description:"A local date and time field which accepts a format parameter. The default format: 'Y' renders the current year.",date_format_param_label:"Format",sequence:"Sequence",sequence_description:"Consecutive sequence of numbers across your company. You can specify the length on the given parameter.",sequence_param_label:"Sequence Length",customer_series:"Customer Series",customer_series_description:"To set a different prefix/postfix for each customer.",customer_sequence:"Customer Sequence",customer_sequence_description:"Consecutive sequence of numbers for each of your customer.",customer_sequence_param_label:"Sequence Length",random_sequence:"Random Sequence",random_sequence_description:"Random alphanumeric string. You can specify the length on the given parameter.",random_sequence_param_label:"Sequence Length",invoices:{title:"Fakture",invoice_number_format:"Invoice Number Format",invoice_number_format_description:"Customize how your invoice number gets generated automatically when you create a new invoice.",preview_invoice_number:"Preview Invoice Number",due_date:"Due Date",due_date_description:"Specify how due date is automatically set when you create an invoice.",due_date_days:"Invoice Due after days",set_due_date_automatically:"Set Due Date Automatically",set_due_date_automatically_description:"Enable this if you wish to set due date automatically when you create a new invoice.",default_formats:"Default Formats",default_formats_description:"Below given formats are used to fill up the fields automatically on invoice creation.",default_invoice_email_body:"Zadani sadržaj email-a za Fakture",company_address_format:"Format adrese firme",shipping_address_format:"Format adrese za dostavu firme",billing_address_format:"Format adrese za naplatu firme",invoice_email_attachment:"Send invoices as attachments",invoice_email_attachment_setting_description:"Enable this if you want to send invoices as email attachment. Please note that 'View Invoice' button in emails will not be displayed anymore when enabled.",invoice_settings_updated:"Postavke fakture uspješno spremljene",retrospective_edits:"Retrospective Edits",allow:"Allow",disable_on_invoice_partial_paid:"Disable after partial payment is recorded",disable_on_invoice_paid:"Disable after full payment is recorded",disable_on_invoice_sent:"Disable after invoice is sent",retrospective_edits_description:" Based on your country's laws or your preference, you can restrict users from editing finalised invoices."},estimates:{title:"Ponude",estimate_number_format:"Estimate Number Format",estimate_number_format_description:"Customize how your estimate number gets generated automatically when you create a new estimate.",preview_estimate_number:"Preview Estimate Number",expiry_date:"Expiry Date",expiry_date_description:"Specify how expiry date is automatically set when you create an estimate.",expiry_date_days:"Estimate Expires after days",set_expiry_date_automatically:"Set Expiry Date Automatically",set_expiry_date_automatically_description:"Enable this if you wish to set expiry date automatically when you create a new estimate.",default_formats:"Default Formats",default_formats_description:"Below given formats are used to fill up the fields automatically on estimate creation.",default_estimate_email_body:"Zadani sadržaj email-a za Ponude",company_address_format:"Format adrese firme",shipping_address_format:"Format adrese za dostavu firme",billing_address_format:"Format adrese za naplatu firme",estimate_email_attachment:"Send estimates as attachments",estimate_email_attachment_setting_description:"Enable this if you want to send the estimates as an email attachment. Please note that 'View Estimate' button in emails will not be displayed anymore when enabled.",estimate_settings_updated:"Estimate Settings updated successfully",convert_estimate_options:"Estimate Convert Action",convert_estimate_description:"Specify what happens to the estimate after it gets converted to an invoice.",no_action:"No action",delete_estimate:"Delete estimate",mark_estimate_as_accepted:"Mark estimate as accepted"},payments:{title:"Uplate",payment_number_format:"Payment Number Format",payment_number_format_description:"Customize how your payment number gets generated automatically when you create a new payment.",preview_payment_number:"Preview Payment Number",default_formats:"Default Formats",default_formats_description:"Below given formats are used to fill up the fields automatically on payment creation.",default_payment_email_body:"Zadani sadržaj email-a za potvrdu o plaćanju (račun)",company_address_format:"Format adrese firme",from_customer_address_format:"Format adrese klijenta",payment_email_attachment:"Send payments as attachments",payment_email_attachment_setting_description:"Enable this if you want to send the payment receipts as an email attachment. Please note that 'View Payment' button in emails will not be displayed anymore when enabled.",payment_settings_updated:"Payment Settings updated successfully"},items:{title:"Stavke",units:"Jedinice",add_item_unit:"Dodaj jedinicu stavke",edit_item_unit:"Izmjeni jedinicu stavke",unit_name:"Naziv jedinice",item_unit_added:"Jedinica stavke dodana",item_unit_updated:"Jedinica stavke ažurirana",item_unit_confirm_delete:"Nećeš moći vratiti ovu jedinicu stavke",already_in_use:"Jedinica stavke se već koristi",deleted_message:"Jedinica stavke uspješno obrisana"},notes:{title:"Napomene",description:"Uštedite vrijeme praveći napomene i koristeći ih na fakturama, ponudama i uplatama.",notes:"Napomene",type:"Vrsta",add_note:"Dodaj Napomenu",add_new_note:"Dodaj novu Napomenu",name:"Naziv",edit_note:"Izmjeni Napomenu",note_added:"Napomena uspješno dodana",note_updated:"Napomena uspješno ažurirana",note_confirm_delete:"Nećeš moći vratiti ovu Napomenu",already_in_use:"Napomena se već koristi",deleted_message:"Napomena uspješno obrisana"}},account_settings:{profile_picture:"Profilna slika",name:"Ime i prezime",email:"Email",password:"Lozinka",confirm_password:"Potvrdi lozinku",account_settings:"Postavke računa",save:"Spremi",section_description:"Možete ažurirati Vaše ime i prezime, email i lozinku koristeći formu niže.",updated_message:"Postavke računa uspješno ažurirane"},user_profile:{name:"Ime i prezime",email:"Email",password:"Lozinka",confirm_password:"Potvrdi lozinku"},notification:{title:"Obavijesti",email:"Šalji obavijesti na",description:"Koje email obavijesti želite dobiti kada se nešto promijeni?",invoice_viewed:"Faktura pogledana",invoice_viewed_desc:"Kada klijent pogleda fakturu koja je poslana putem ove aplikacije.",estimate_viewed:"Ponuda gledana",estimate_viewed_desc:"Kada klijent pogleda ponudu koja je poslana putem ove aplikacije.",save:"Spremi",email_save_message:"Email uspješno sačuvan",please_enter_email:"Molim Vas unesite E-mail"},roles:{title:"Roles",description:"Manage the roles & permissions of this company",save:"Save",add_new_role:"Add New Role",role_name:"Role Name",added_on:"Added on",add_role:"Add Role",edit_role:"Edit Role",name:"Name",permission:"Permission | Permissions",select_all:"Select All",none:"None",confirm_delete:"You will not be able to recover this Role",created_message:"Role created successfully",updated_message:"Role updated successfully",deleted_message:"Role deleted successfully",already_in_use:"Role is already in use"},exchange_rate:{exchange_rate:"Exchange Rate",title:"Fix Currency Exchange issues",description:"Please enter exchange rate of all the currencies mentioned below to help InvoiceShelf properly calculate the amounts in {currency}.",drivers:"Drivers",new_driver:"Add New Provider",edit_driver:"Edit Provider",select_driver:"Select Driver",update:"select exchange rate ",providers_description:"Configure your exchange rate providers here to automatically fetch the latest exchange rate on transactions.",key:"API Key",name:"Name",driver:"Driver",is_default:"IS DEFAULT",currency:"Currencies",exchange_rate_confirm_delete:"You will not be able to recover this driver",created_message:"Provider Created successfully",updated_message:"Provider Updated Successfully",deleted_message:"Provider Deleted Successfully",error:" You cannot Delete Active Driver",default_currency_error:"This currency is already used in one of the Active Provider",exchange_help_text:"Enter exchange rate to convert from {currency} to {baseCurrency}",currency_freak:"Currency Freak",currency_layer:"Currency Layer",open_exchange_rate:"Open Exchange Rate",currency_converter:"Currency Converter",server:"Server",url:"URL",active:"Active",currency_help_text:"This provider will only be used on above selected currencies",currency_in_used:"The following currencies are already active on another provider. Please remove these currencies from selection to activate this provider again."},tax_types:{title:"Vrste Poreza",add_tax:"Dodaj Porez",edit_tax:"Izmjeni Porez",description:"Možete dodati ili ukloniti porez. Ova aplikacija podržava porez, kako na individualnim stavkama tako i na fakturi/ponudi.",add_new_tax:"Dodaj Novi Porez",tax_settings:"Postavke Poreza",tax_per_item:"Porez po Stavkama",tax_name:"Naziv Poreza",compound_tax:"Složeni Porez",percent:"Postotak",action:"Radnja",tax_setting_description:"Izaberite ovo ako želite dodati porez na individualne stavke. Zadano ponašanje je da je porez dodan direktno na fakturu.",created_message:"Vrsta poreza uspješno kreirana",updated_message:"Vrsta poreza uspješno ažurirana",deleted_message:"Vrsta poreza uspješno obrisana",confirm_delete:"Nećete moći vratiti Vrstu Poreza",already_in_use:"Porez se već koristi"},payment_modes:{title:"Payment Modes",description:"Modes of transaction for payments",add_payment_mode:"Add Payment Mode",edit_payment_mode:"Edit Payment Mode",mode_name:"Mode Name",payment_mode_added:"Payment Mode Added",payment_mode_updated:"Payment Mode Updated",payment_mode_confirm_delete:"You will not be able to recover this Payment Mode",payments_attached:"This payment method is already attached to payments. Please delete the attached payments to proceed with deletion.",expenses_attached:"This payment method is already attached to expenses. Please delete the attached expenses to proceed with deletion.",deleted_message:"Payment Mode deleted successfully"},expense_category:{title:"Kategorija Rashoda",action:"Radnja",description:"Kategorije su obavezne za dodavanje rashoda. Možeš dodati ili obrisati kategorije.",add_new_category:"Dodaj novu kategoriju",add_category:"Dodaj kategoriju",edit_category:"Izmjeni kategoriju",category_name:"Naziv kategorije",category_description:"Opis",created_message:"Kategorija rashoda je uspješno kreirana",deleted_message:"Kategorija rashoda je uspješno izbrisana",updated_message:"Kategorija rashoda je uspješno ažurirana",confirm_delete:"Nećeš moći vratiti ovu kategoriju rashoda",already_in_use:"Kategorija se već koristi"},preferences:{currency:"Valuta",default_language:"Jezik",time_zone:"Vremenska Zona",fiscal_year:"Financijska Godina",date_format:"Format datuma",discount_setting:"Postavke popusta",discount_per_item:"Popust po stavkama",discount_setting_description:"Izaberite ovo ako želite dodati Popust na individualne stavke. Zadana vrijednost je da je Popust dodan direktno na fakturu.",expire_public_links:"Automatically Expire Public Links",expire_setting_description:"Specify whether you would like to expire all the links sent by application to view invoices, estimates & payments, etc after a specified duration.",save:"Spremi",preference:"Preferencija | Preferencije",general_settings:"Zadane postavke za sistem",updated_message:"Preferencije uspješno ažurirane",select_language:"Izaberi Jezik",select_time_zone:"Izaberi Vremensku Zonu",select_date_format:"Izaberi Format Datuma",select_financial_year:"Izaberi Financijsku Godinu",recurring_invoice_status:"Recurring Invoice Status",create_status:"Create Status",active:"Active",on_hold:"On Hold",update_status:"Update Status",completed:"Completed",company_currency_unchangeable:"Company currency cannot be changed"},update_app:{title:"Ažuriraj aplikaciju",description:"Lako možeš ažurirati InvoiceShelf tako da napraviš provjeru novih verzija klikom na polje ispod",check_update:"Provjeri ažuriranost",avail_update:"Dostupna je nova verzija",next_version:"Sljedeća verzija",requirements:"Zahtjevi",update:"Ažuriraj sada",update_progress:"Ažuriranje je u toku...",progress_text:"Trajanje je svega par minuta. Nemojte osviježavati ili zatvoriti stranicu dok ažuriranje ne bude gotovo",update_success:"Aplikacija je ažurirana! Molim Vas pričekajte da se stranica automatski osvježi.",latest_message:"Nema nove verzije! Ažurirana posljednja verzija.",current_version:"Trenutna verzija",download_zip_file:"Preuzmi ZIP paket",unzipping_package:"Raspakiranje paketa",copying_files:"Kopiranje datoteka",deleting_files:"Brisanje fajlova koji nisu u upotrebi",running_migrations:"Migracije u toku",finishing_update:"Završavanje ažuriranja",update_failed:"Neuspešno ažuriranje",update_failed_text:"Žao mi je! Tvoje ažuriranje nije uspelo na koraku broj: {step} korak",update_warning:"All of the application files and default template files will be overwritten when you update the application using this utility. Please take a backup of your templates & database before updating."},backup:{title:"Sigurnosna kopija | Sigurnosne kopije",description:"Backup je zip arhiv koji sadrži sve fajlove iz foldera koje ste naveli, također sadrži sigurnosnu kopiju baze podataka.",new_backup:"Dodaj novi Backup",create_backup:"Napravi Backup",select_backup_type:"Izaberi tip Backupa",backup_confirm_delete:"Nećeš moći vratiti ovaj Backup",path:"putanja",new_disk:"Novi Disk",created_at:"datum kreiranja",size:"veličina",dropbox:"dropbox",local:"lokalni",healthy:"zdrav",amount_of_backups:"broj backupa",newest_backups:"najnoviji backupi",used_storage:"korišteno skladište",select_disk:"Izaberi Disk",action:"Radnja",deleted_message:"Backup uspješno obrisan",created_message:"Backup uspješno napravljen",invalid_disk_credentials:"Pogrešne akreditacije za odabrani disk"},disk:{title:"File Disk | File Disks",description:"Zadano ponašanje je da InvoiceShelf koristi lokalni disk za čuvanje backupa, avatara i ostalih slika. Možete podesiti više od jednog disk drajvera od provajdera poput DigitalOcean, S3 i Dropbox po vašoj želji.",created_at:"datum kreiranja",dropbox:"dropbox",name:"Naziv",driver:"Drajver",disk_type:"Vrsta",disk_name:"Naziv Diska",new_disk:"Dodaj novi Disk",filesystem_driver:"Filesystem Driver",local_driver:"lokalni Drajver",local_root:"local Root",public_driver:"Public Driver",public_root:"Public Root",public_url:"Public URL",public_visibility:"Public Visibility",media_driver:"Media Driver",media_root:"Media Root",aws_driver:"AWS Driver",aws_key:"AWS Key",aws_secret:"AWS Secret",aws_region:"AWS Region",aws_bucket:"AWS Bucket",aws_root:"AWS Root",do_spaces_type:"Do Spaces type",do_spaces_key:"Do Spaces key",do_spaces_secret:"Do Spaces Secret",do_spaces_region:"Do Spaces Region",do_spaces_bucket:"Do Spaces Bucket",do_spaces_endpoint:"Do Spaces Endpoint",do_spaces_root:"Do Spaces Root",dropbox_type:"Dropbox Type",dropbox_token:"Dropbox Token",dropbox_key:"Dropbox Key",dropbox_secret:"Dropbox Secret",dropbox_app:"Dropbox App",dropbox_root:"Dropbox Root",default_driver:"Zadani Drajver",is_default:"DA LI JE ZADAN",set_default_disk:"Postavi zadani Disk",set_default_disk_confirm:"Ovaj disk će biti postavljen kao zadani i svi novi PDF fajlovi će biti sačuvani na ovom disku",success_set_default_disk:"Disk je uspješno postavljen kao zadani",save_pdf_to_disk:"Spremi PDF fajlove na Disk",disk_setting_description:" Uključite ovo ako želite da spremite kopiju PDF fajla svake Fakture, Ponude i Uplate na vaš zadani disk automatski. Uključivanjem ove opcije smanjujete vrijeme učitavanja pregleda PDF fajlova.",select_disk:"Izaberi Disk",disk_settings:"Disk Postavke",confirm_delete:"Ovo neće utjecati na vaše postojeće fajlove i foldere na navedenom disku, ali će se konfiguracija vašeg diska izbrisati iz InvoiceShelfa.",action:"Radnja",edit_file_disk:"Izmjeni File Disk",success_create:"Disk uspješno dodan",success_update:"Disk uspješno ažuriran",error:"Dodavanje diska nije uspelo",deleted_message:"File Disk uspješno obrisan",disk_variables_save_successfully:"Disk uspješno podešen",disk_variables_save_error:"Postavljanje diska nije uspjelo.",invalid_disk_credentials:"Pogrešne akreditacije za navedeni disk"},taxations:{add_billing_address:"Enter Billing Address",add_shipping_address:"Enter Shipping Address",add_company_address:"Enter Company Address",modal_description:"The information below is required in order to fetch sales tax.",add_address:"Add Address for fetching sales tax.",address_placeholder:"Example: 123, My Street",city_placeholder:"Example: Los Angeles",state_placeholder:"Example: CA",zip_placeholder:"Example: 90024",invalid_address:"Please provide valid address details."}},Gse={account_info:"Informacije o računu",account_info_desc:"Detalji u nastavku koriste se za kreiranje glavnog administratorskog računa. Moguće ih je izmjeniti u bilo kada nakon prijavljivanja.",name:"Naziv",email:"E-mail",password:"Lozinka",confirm_password:"Potvrdi lozinku",save_cont:"Spremi & Nastavi",company_info:"Informacije o firmi",company_info_desc:"Ove informacije će biti prikazane na fakturama. Moguće ih je izmjeniti kasnije u postavkama.",company_name:"Naziv firme",company_logo:"Logo firme",logo_preview:"Pregled logotipa",preferences:"Preference",preferences_desc:"Zadane Preference za sistem",currency_set_alert:"The company's currency cannot be changed later.",country:"Država",state:"Županija",city:"Grad",address:"Adresa",street:"Ulica1 | Ulica2",phone:"Telefon",zip_code:"Poštanski broj",go_back:"Vrati se nazad",currency:"Valuta",language:"Jezik",time_zone:"Vremenska zona",fiscal_year:"Financijska godina",date_format:"Format datuma",from_address:"Adresa pošiljaoca",username:"Korisničko ime",next:"Sljedeće",continue:"Nastavi",skip:"Preskoči",database:{database:"URL stranice & baze podataka",connection:"Veza baze podataka",host:"Host baze podataka",port:"Port baze podataka",password:"Lozinka baze podataka",app_url:"URL aplikacije",app_domain:"Domen aplikacije",username:"Korisničko ime baze podataka",db_name:"Naziv baze podataka",db_path:"Putanja do baze",desc:"Kreiraj bazu podataka na svom serveru i postavi akreditacije prateći obrazac u nastavku."},permissions:{permissions:"Dozvole",permission_confirm_title:"Da li ste sigurni da želite nastaviti?",permission_confirm_desc:"Provjera dozvola za foldere nije uspjela",permission_desc:"U nastavku se nalazi popis dozvola za foldere koji su nužni kako bi alikacija radila. Ukoliko provjera dozvola ne uspije, ažuriraj svoj popis dozvola za te foldere."},verify_domain:{title:"Domain Verification",desc:"InvoiceShelf uses Session based authentication which requires domain verification for security purposes. Please enter the domain on which you will be accessing your web application.",app_domain:"App Domain",verify_now:"Verify Now",success:"Domain Verify Successfully.",failed:"Domain verification failed. Please enter valid domain name.",verify_and_continue:"Verify And Continue"},mail:{host:"Mail Host",port:"Mail Port",driver:"Mail drajver",secret:"Lozinka",mailgun_secret:"Mailgun Lozinka",mailgun_domain:"Domen",mailgun_endpoint:"Mailgun Endpoint",ses_secret:"SES Lozinka",ses_key:"SES Ključ",password:"Lozinka za e-mail",username:"Koristničko ime za e-mail",mail_config:"E-mail konfiguracija",from_name:"Naziv pošiljatelja",from_mail:"E-mail adresa pošiljatelja",encryption:"E-mail enkripcija",mail_config_desc:"Ispod se nalazi forma za postavljanje E-mail drajvera za slanje pošte iz aplikacije. Također možete podesiti provajdere treće strane kao Sendgrid, SES itd."},req:{system_req:"Sistemski zahtjevi",php_req_version:"Zahtjeva PHP verziju {version} ",check_req:"Provjeri zahtjeve",system_req_desc:"InvoiceShelf ima nekoliko zahtjeva za server. Provjeri da li tvoj server ima potrebnu verziju PHP-a i sva navedena proširenja navedena u nastavku"},errors:{migrate_failed:"Neuspješno migriranje",database_variables_save_error:"Konfiguraciju nije moguće zapisati u .env datoteku. Provjeri dozvole za datoteku",mail_variables_save_error:"E-mail konfiguracija neuspješna",connection_failed:"Neuspješno povezivanje s bazom podataka",database_should_be_empty:"Baza podataka treba biti prazna"},success:{mail_variables_save_successfully:"E-mail je uspješno konfiguriran",database_variables_save_successfully:"Baza podataka je uspješno konfigurirana"}},Qse={invalid_phone:"Pogrešan Broj Telefona",invalid_url:"Nevažeći URL (primer: http://www.invoiceshelf.com)",invalid_domain_url:"Pogrešan URL (primjer: invoiceshelf.com)",required:"Obavezno polje",email_incorrect:"Pogrešan E-mail",email_already_taken:"Navedeni E-mail je zauzet",email_does_not_exist:"Korisnik sa navedenom e-mail adresom ne postoji",item_unit_already_taken:"Naziv ove jedinice stavke je zauzet",payment_mode_already_taken:"Naziv ovog načina plaćanja je zauzet",send_reset_link:"Pošalji link za reset",not_yet:"Još uvijek ništa? Pošalji ponovno",password_min_length:"Lozinka mora imati {count} znakova",name_min_length:"Naziv mora imati najmanje {count} slova",prefix_min_length:"Prefix must have at least {count} letters.",enter_valid_tax_rate:"Unesite odgovarajuću poreznu stopu",numbers_only:"Mogu se unositi samo brojevi",characters_only:"Mogu se unositi samo znakovi",password_incorrect:"Lozinka mora biti identična",password_length:"Lozinka mora imati {count} znakova",qty_must_greater_than_zero:"Količina mora biti veća od 0.",price_greater_than_zero:"Cijena mora biti veća od 0",payment_greater_than_zero:"Uplata mora biti veća od 0",payment_greater_than_due_amount:"Unesena uplata je veća od dospijeća iznosa ove fakture",quantity_maxlength:"Količina ne može imati više od 20 znakova",price_maxlength:"Cijena ne može imati više od 20 znakova",price_minvalue:"Cijena mora biti veća od 0",amount_maxlength:"Iznos ne može da ima više od 20 znakova",amount_minvalue:"Iznos mora biti veći od 0",discount_maxlength:"Discount should not be greater than max discount",description_maxlength:"Opis ne može imati više od 65,000 znakova",subject_maxlength:"Predmet ne može imati više od 100 znakova",message_maxlength:"Poruka ne može imati više od 255 znakova",maximum_options_error:"Maksimalan broj opcija je izabran. Prvo uklonite izabranu opciju da bi izabrali drugu",notes_maxlength:"Napomena ne može imati više od 65,000 znakova",address_maxlength:"Adresa ne može imati više od 255 znakova",ref_number_maxlength:"Poziv na broj ne može imati više od 225 znakova",prefix_maxlength:"Prefiks ne može imati više od 5 znakova",something_went_wrong:"nešto je krenulo naopako",number_length_minvalue:"Number length should be greater than 0",at_least_one_ability:"Please select atleast one Permission.",valid_driver_key:"Please enter a valid {driver} key.",valid_exchange_rate:"Please enter a valid exchange rate.",company_name_not_same:"Company name must match with given name."},Jse={starter_plan:"This feature is available on Starter plan and onwards!",invalid_provider_key:"Please Enter Valid Provider API Key.",estimate_number_used:"The estimate number has already been taken.",invoice_number_used:"The invoice number has already been taken.",payment_attached:"This invoice already has a payment attached to it. Make sure to delete the attached payments first in order to go ahead with the removal.",payment_number_used:"The payment number has already been taken.",name_already_taken:"The name has already been taken.",receipt_does_not_exist:"Receipt does not exist.",customer_cannot_be_changed_after_payment_is_added:"Customer cannot be change after payment is added",invalid_credentials:"Invalid Credentials.",not_allowed:"Not Allowed",login_invalid_credentials:"These credentials do not match our records.",enter_valid_cron_format:"Please enter a valid cron format",email_could_not_be_sent:"Email could not be sent to this email address.",invalid_address:"Please enter a valid address.",invalid_key:"Please enter valid key.",invalid_state:"Please enter a valid state.",invalid_city:"Please enter a valid city.",invalid_postal_code:"Please enter a valid zip.",invalid_format:"Please enter valid query string format.",api_error:"Server not responding.",feature_not_enabled:"Feature not enabled.",request_limit_met:"Api request limit exceeded.",address_incomplete:"Incomplete Address"},Xse="Ponuda",ere="Broj Ponude",tre="Datum Ponude",are="Datum isteka Ponude",nre="Faktura",ire="Broj Fakture",ore="Datum Fakture",sre="Datum dospijeća Fakture",rre="Napomena",lre="Stavke",cre="Količina",dre="Cijena",ure="Popust",_re="Iznos",mre="Osnovica za obračun PDV-a",pre="Ukupan iznos",fre="Plaćanje",hre="POTVRDA O UPLATI",gre="Datum Uplate",vre="Broj Uplate",yre="Način Plaćanja",bre="Iznos Uplate",kre="IZVJEŠTAJ O RASHODIMA",wre="RASHODI UKUPNO",Dre="IZVEJŠTAJ O PRIHODIMA I RASHODIMA",xre="Izvještaj Prodaje po Strankama",Sre="Izvještaj Prodaje po Stavkama",Pre="Izvještaj Poreza",Ere="PRIHOD",zre="NETO PROFIT",Are="Izvještaj o Prodaji: Po Klijentu",Cre="PRODAJA UKUPNO",Tre="Izvještaj o Prodaji: Po Stavci",jre="IZVEŠTAJ O POREZIMA",Nre="UKUPNO POREZ",Ire="Vrsta Poreza",Fre="Rashodi",Rre="Račun za,",Ore="Isporučiti za,",Mre="Poslat od strane:",$re="Porez",Lre={navigation:Tse,general:jse,dashboard:Nse,tax_types:Ise,global_search:Fse,company_switcher:Rse,dateRange:Ose,customers:Mse,items:$se,estimates:Lse,invoices:Bse,recurring_invoices:Use,payments:Vse,expenses:qse,login:Wse,modules:Hse,users:Kse,reports:Yse,settings:Zse,wizard:Gse,validation:Qse,errors:Jse,pdf_estimate_label:Xse,pdf_estimate_number:ere,pdf_estimate_date:tre,pdf_estimate_expire_date:are,pdf_invoice_label:nre,pdf_invoice_number:ire,pdf_invoice_date:ore,pdf_invoice_due_date:sre,pdf_notes:rre,pdf_items_label:lre,pdf_quantity_label:cre,pdf_price_label:dre,pdf_discount_label:ure,pdf_amount_label:_re,pdf_subtotal:mre,pdf_total:pre,pdf_payment_label:fre,pdf_payment_receipt_label:hre,pdf_payment_date:gre,pdf_payment_number:vre,pdf_payment_mode:yre,pdf_payment_amount_received_label:bre,pdf_expense_report_label:kre,pdf_total_expenses_label:wre,pdf_profit_loss_label:Dre,pdf_sales_customers_label:xre,pdf_sales_items_label:Sre,pdf_tax_summery_label:Pre,pdf_income_label:Ere,pdf_net_profit_label:zre,pdf_customer_sales_report:Are,pdf_total_sales_label:Cre,pdf_item_sales_label:Tre,pdf_tax_report_label:jre,pdf_total_tax_label:Nre,pdf_tax_types_label:Ire,pdf_expenses_label:Fre,pdf_bill_to:Rre,pdf_ship_to:Ore,pdf_received_from:Mre,pdf_tax_label:$re},Bre={dashboard:"แดชบอร์ด",customers:"ลูกค้า",items:"บริการ",invoices:"ใบวางบิล","recurring-invoices":"ใบวางบิลประจำ",expenses:"ค่าใช้จ่าย",estimates:"ใบเสนอราคา",payments:"การชำระเงิน",reports:"รายงาน",settings:"การตั้งค่า",logout:"ออกจากระบบ",users:"ผู้ใช้งาน",modules:"โมดูล"},Ure={add_company:"เพิ่มบริษัท",view_pdf:"ดูไฟล์ PDF",copy_pdf_url:"คัดลอก URL PDF",download_pdf:"ดาวน์โหลดไฟล์ PDF",save:"บันทึก",create:"สร้าง",cancel:"ยกเลิก",update:"อัพเดต",deselect:"ยกเลิกการเลือก",download:"ดาวน์โหลด",from_date:"จากวันที่",to_date:"ถึงวันที่",from:"จาก",to:"ถึง",ok:"ตกลง",yes:"ใช่",no:"ไม่",sort_by:"เรียงตาม",ascending:"จากน้อยไปมาก",descending:"จากมากไปน้อย",subject:"เรื่อง",body:"บอดี้",message:"ข้อความ",send:"ส่ง",preview:"ดูตัวอย่าง",go_back:"กลับไป",back_to_login:"กลับไปที่ล็อกอิน?",home:"หน้าหลัก",filter:"กรอง",delete:"ลบ",edit:"แก้ไข",view:"ดู",add_new_item:"เพิ่มรายการใหม่",clear_all:"ล้างทั้งหมด",showing:"การแสดง",of:"ของ",actions:"จัดการ",subtotal:"รวมเงิน",discount:"ส่วนลด",fixed:"คงที่",percentage:"เปอร์เซ็นต์",tax:"ภาษี",total_amount:"จำนวนเงินทั้งหมด",bill_to:"ที่อยู่เรียกเก็บเงิน",ship_to:"ที่อยู่สำหรับจัดส่ง",due:"ครบกำหนด",draft:"แบบร่าง",sent:"ส่งแล้ว",all:"ทั้งหมด",select_all:"เลือกทั้งหมด",select_template:"เลือกเทมเพลต",choose_file:"คลิกที่นี่เพื่อเลือกไฟล์",choose_template:"เลือกแม่แบบ",choose:"เลือก",remove:"ลบออก",select_a_status:"เลือกสถานะ",select_a_tax:"เลือกภาษี",search:"ค้นหา",are_you_sure:"คุณแน่ใจนะ",list_is_empty:"รายการว่างเปล่า",no_tax_found:"ไม่พบภาษี!",four_zero_four:"404",you_got_lost:"วู้๊ปส์!คุณหลงทาง!",go_home:"กลับบ้าน",test_mail_conf:"ทดสอบการตั้งค่าคอนฟิกจดหมาย",send_mail_successfully:"จดหมายที่ส่งเรียบร้อยแล้ว",setting_updated:"การตั้งค่าที่อัปเดตเรียบร้อยแล้ว",select_state:"เลือกสถานะ",select_country:"เลือกประเทศ",select_city:"เลือกจังหวัด",street_1:"ที่อยู่บรรทัด 1",street_2:"ที่อยู่บรรทัด 2",action_failed:"การดำเนินการล้มเหลว",retry:"ลองใหม่",choose_note:"เลือกหมายเหตุ",no_note_found:"ไม่พบหมายเหตุ",insert_note:"แทรกหมายเหตุ",copied_pdf_url_clipboard:"คัดลอกไฟล์ PDF URL ไปยังคลิปบอร์ด!",copied_url_clipboard:"คัดลอกURL ไปยังคลิปบอร์ด!",docs:"เอกสาร",do_you_wish_to_continue:"คุณต้องการที่จะดำเนินการต่อ?",note:"หมายเหตุ",pay_invoice:"ชำระใบวางบิล",login_successfully:"เข้าสู่ระบบเรียบร้อยแล้ว!",logged_out_successfully:"ออกจากระบบเรียบร้อยแล้ว"},Vre={select_year:"เลือกปี",cards:{due_amount:"จำนวนเงินค้างชำระ",customers:"ลูกค้า",invoices:"ใบวางบิล",estimates:"ใบเสนอราคา",payments:"การชำระเงิน"},chart_info:{total_sales:"การขาย",total_receipts:"ใบเสร็จรับเงิน",total_expense:"ค่าใช้จ่าย",net_income:"รายได้สุทธิ",year:"เลือกปี"},monthly_chart:{title:"การขายและค่าใช้จ่าย"},recent_invoices_card:{title:"ใบวางบิลครบกำหนด",due_on:"ครบกำหนดเปิด",customer:"ลูกค้า",amount_due:"จำนวนเงินค้างชำระ",actions:"จัดการ",view_all:"ดูทั้งหมด"},recent_estimate_card:{title:"ใบเสนอราคาล่าสุด",date:"วันที่",customer:"ลูกค้า",amount_due:"จำนวนเงินค้างชำระ",actions:"จัดการ",view_all:"ดูทั้งหมด"}},qre={name:"ชื่อ",description:"คำอธิบาย",percent:"เปอร์เซ็นต์",compound_tax:"ภาษีมูลค่าเพิ่ม"},Wre={search:"ค้นหา...",customers:"ลูกค้า",users:"ผู้ใช้งาน",no_results_found:"ไม่พบผลลัพธ์"},Hre={label:"บริษัทสลับ",no_results_found:"ไม่พบผลลัพธ์",add_new_company:"เพิ่มบริษัทใหม่",new_company:"บริษัทใหม่",created_message:"บริษัทสร้างสำเร็จ"},Kre={today:"วันนี้",this_week:"สัปดาห์นี้",this_month:"เดือนนี้",this_quarter:"ไตรมาสนี้",this_year:"ปีนี้",previous_week:"สัปดาห์ก่อนหน้า",previous_month:"เดือนก่อนหน้า",previous_quarter:"ไตรมาสก่อนหน้า",previous_year:"ปีที่แล้ว",custom:"กำหนดเอง"},Yre={title:"ลูกค้า",prefix:"Prefix",add_customer:"เพิ่มลูกค้า",contacts_list:"รายชื่อลูกค้า",name:"ชื่อ",mail:"จดหมาย | อีเมล",statement:"คำแถลง",display_name:"ชื่อที่แสดง",primary_contact_name:"ชื่อผู้ติดต่อหลัก",contact_name:"ชื่อผู้ติดต่อ",amount_due:"จำนวนเงินค้างชำระ",email:"อีเมล์",address:"ที่อยู่",phone:"โทรศัพท์",website:"เว็บไซต์",overview:"ภาพรวม",invoice_prefix:"Prefix ใบวางบิล",estimate_prefix:"Prefix ใบเสนอราคา",payment_prefix:"Prefix การชำระเงิน",enable_portal:"เปิดใช้พอร์ทัล",country:"ประเทศ",state:"เขต/อำเภอ",city:"จังหวัด",zip_code:"รหัสไปรษณีย์",added_on:"วันที่สร้าง",action:"จัดการ",password:"รหัสผ่าน",confirm_password:"ยืนยันรหัสผ่าน",street_number:"หมายเลขถนน",primary_currency:"สกุลเงินหลัก",description:"คำอธิบาย",add_new_customer:"เพิ่มลูกค้าใหม่",save_customer:"บันทึก",update_customer:"อัปเดต",customer:"ลูกค้า | ลูกค้า",new_customer:"ลูกค้าใหม่",edit_customer:"แก้ไขลูกค้า",basic_info:"ข้อมูลพื้นฐาน",portal_access:"การเข้าถึงพอร์ทัล",portal_access_text:"คุณต้องการอนุญาตให้ลูกค้ารายนี้เข้าสู่ระบบพอร์ทัลลูกค้าหรือไม่?",portal_access_url:"URL เข้าสู่ระบบพอร์ทัลลูกค้า",portal_access_url_help:"กรุณาคัดลอก และส่งต่อ URL ที่ระบุข้างต้นให้กับลูกค้าของคุณเพื่อให้การเข้าถึง",billing_address:"ที่อยู่เรียกเก็บเงิน",shipping_address:"ที่อยู่สำหรับจัดส่ง",copy_billing_address:"คัดลอกจากที่อยู่เรียกเก็บเงิน",no_customers:"ยังไม่มีลูกค้า!",no_customers_found:"ไม่พบลูกค้า!",no_contact:"ไม่มีผู้ติดต่อ",no_contact_name:"ไม่มีชื่อผู้ติดต่อ",list_of_customers:"ส่วนนี้จะประกอบด้วยรายชื่อลูกค้า",primary_display_name:"ชื่อที่แสดงหลัก",select_currency:"เลือกสกุลเงิน",select_a_customer:"เลือกลูกค้า",type_or_click:"พิมพ์หรือคลิกเพื่อเลือก",new_transaction:"ธุรกรรมใหม่",no_matching_customers:"ไม่มีลูกค้าที่ตรงกัน!",phone_number:"หมายเลขโทรศัพท์",create_date:"สร้างวันที่",confirm_delete:"คุณจะไม่สามารถกู้คืนลูกค้ารายนี้และใบวางบิลใบเสนอราคาและการชำระเงินที่เกี่ยวข้องทั้งหมด | คุณจะไม่สามารถกู้คืนลูกค้าเหล่านี้และใบวางบิลใบเสนอราคาและการชำระเงินที่เกี่ยวข้องทั้งหมด",created_message:"ลูกค้าสร้างเสร็จเรียบร้อยแล้ว",updated_message:"ลูกค้าได้รับการอัพเดตเรียบร้อยแล้ว",address_updated_message:"ข้อมูลที่อยู่ได้รับการอัปเดตเรียบร้อยแล้ว",deleted_message:"ลบลูกค้าเรียบร้อยแล้ว | ลบลูกค้าเรียบร้อยแล้ว",edit_currency_not_allowed:"ไม่สามารถเปลี่ยนสกุลเงินเมื่อสร้างธุรกรรมแล้ว"},Zre={title:"บริการ",items_list:"รายการบริการ",name:"ชื่อ",unit:"หน่วย",description:"คำอธิบาย",added_on:"วันที่สร้าง",price:"ราคา",date_of_creation:"วันที่สร้าง",not_selected:"ยังไม่มีบริการที่เลือก",action:"จัดการ",add_item:"เพิ่มบริการ",save_item:"บันทึก",update_item:"อัปเดต",item:"บริการ | บริการ",add_new_item:"เพิ่มบริการใหม่",new_item:"บริการใหม่",edit_item:"แก้ไขบริการ",no_items:"ยังไม่มีสินค้า!",list_of_items:"ส่วนนี้จะประกอบด้วยรายการของบริการ",select_a_unit:"เลือกหน่วย",taxes:"ภาษี",item_attached_message:"ไม่สามารถลบบริการที่ใช้อยู่แล้ว",confirm_delete:"คุณจะไม่สามารถกู้คืนไอเท็มนี้ได้ | คุณจะไม่สามารถกู้คืนไอเท็มเหล่านี้ได้",created_message:"สร้างบริการสำเร็จแล้ว",updated_message:"อัพเดตบริการเรียบร้อยแล้ว",deleted_message:"บริการที่ถูกลบเรียบร้อยแล้ว | บริการที่ถูกลบเรียบร้อยแล้ว"},Gre={title:"ใบเสนอราคา",accept_estimate:"ยอมรับใบเสนอราคา",reject_estimate:"ปฏิเสธใบเสนอราคา",estimate:"ใบเสนอราคา | ใบเสนอราคา",estimates_list:"รายการใบเสนอราคา",days:"{days} วัน",months:"{months} เดือน",years:"{years} ปี",all:"ทั้งหมด",paid:"จ่ายแล้ว",unpaid:"ยังไม่ได้ชำระ",customer:"ลูกค้า",ref_no:"โทษไม่.",number:"เลขที่",amount_due:"จำนวนเงินค้างชำระ",partially_paid:"ชำระเงินบางส่วน",total:"จำนวนเงินสุทธิ",discount:"ส่วนลด",sub_total:"รวมเงิน",estimate_number:"เลขที่ใบเสนอราคา",ref_number:"หมายเลขอ้างอิง",contact:"ติดต่อเรา",add_item:"เพิ่มรายการ",date:"วันที่",due_date:"วันครบกำหนด",expiry_date:"วันหมดอายุ",status:"สถานะ",add_tax:"เพิ่มภาษี",amount:"จำนวนเงิน (บาท)",action:"จัดการ",notes:"หมายเหตุ",tax:"ภาษี",estimate_template:"แม่แบบ",convert_to_invoice:"แปลงเป็นใบวางบิล",mark_as_sent:"ทำเครื่องหมายว่าส่งแล้ว",send_estimate:"ส่งใบเสนอราคา",resend_estimate:"ส่งใบเสนอราคา",record_payment:"บันทึกการชำระเงิน",add_estimate:"เพิ่มค่าใบเสนอราคา",save_estimate:"บันทึกใบเสนอราคา",confirm_conversion:"ใบเสนอราคานี้จะใช้ในการสร้างใบวางบิลใหม่",conversion_message:"ใบวางบิลที่สร้างเสร็จสมบูรณ์",confirm_send_estimate:"ใบเสนอราคานี้จะถูกส่งผ่านทางอีเมลถึงลูกค้า",confirm_mark_as_sent:"ใบเสนอราคานี้จะถูกทำเครื่องหมายว่าส่ง",confirm_mark_as_accepted:"ใบเสนอราคานี้จะถูกทำเครื่องหมายว่าเป็นที่ยอมรับ",confirm_mark_as_rejected:"ใบเสนอราคานี้จะถูกทำเครื่องหมายว่าปฏิเสธ",no_matching_estimates:"ไม่มีใบเสนอราคาที่ตรงกัน!",mark_as_sent_successfully:"ใบเสนอราคาที่ทำเครื่องหมายว่าส่งเรียบร้อยแล้ว",send_estimate_successfully:"ใบเสนอราคาส่งเรียบร้อยแล้ว",errors:{required:"ต้องกรอกข้อมูล"},accepted:"ได้รับการยอมรับ",rejected:"ถูกปฏิเสธ",expired:"หมดอายุ",sent:"ส่งแล้ว",draft:"แบบร่าง",viewed:"ดูแล้ว",declined:"ปฏิเสธ",new_estimate:"ใบเสนอราคาใหม่",add_new_estimate:"เพิ่มใบเสนอราคาใหม่",update_Estimate:"อัพเดตใบเสนอราคา",edit_estimate:"แก้ไขใบเสนอราคา",items:"สิ่งของ",Estimate:"ใบเสนอราคา | ใบเสนอราคา",add_new_tax:"เพิ่มภาษีใหม่",no_estimates:"ยังไม่มีใบเสนอราคา!",list_of_estimates:"ส่วนนี้จะประกอบด้วยรายการใบเสนอราคา",mark_as_rejected:"ทำเครื่องหมายว่าถูกปฏิเสธ",mark_as_accepted:"ทำเครื่องหมายว่าเป็นที่ยอมรับ",marked_as_accepted_message:"ใบเสนอราคาที่ทำเครื่องหมายเป็นที่ยอมรับ",marked_as_rejected_message:"ใบเสนอราคาที่ทำเครื่องหมายว่าถูกปฏิเสธ",confirm_delete:"คุณจะไม่สามารถกู้คืนค่าประมาณนี้ได้ | คุณจะไม่สามารถกู้คืนค่าประมาณเหล่านี้ได้",created_message:"ใบเสนอราคาสร้างเสร็จเรียบร้อยแล้ว",updated_message:"อัพเดตใบเสนอราคาเรียบร้อยแล้ว",deleted_message:"ใบเสนอราคาลบเรียบร้อยแล้ว | ใบเสนอราคาลบเรียบร้อยแล้ว",something_went_wrong:"มีบางอย่างผิดพลาด",item:{title:"ชื่อรายการ",description:"คำอธิบาย",quantity:"จำนวน",price:"ราคา",discount:"ส่วนลด",total:"จำนวนเงินสุทธิ",total_discount:"ส่วนลดทั้งหมด",sub_total:"รวมเงิน",tax:"ภาษี",amount:"จำนวนเงิน (บาท)",select_an_item:"พิมพ์หรือคลิกเพื่อเลือกรายการ",type_item_description:"คำอธิบาย (ไม่จำเป็น)"}},Qre={title:"ใบวางบิล",download:"ดาวน์โหลด",pay_invoice:"ชำระใบวางบิล",invoices_list:"รายการใบวางบิล",invoice_information:"ข้อมูลใบวางบิล",days:"{days} วัน",months:"{months} เดือน",years:"{years} ปี",all:"ทั้งหมด",paid:"จ่ายแล้ว",unpaid:"ยังไม่ได้ชำระ",viewed:"ดูแล้ว",overdue:"ค้างชำระ",completed:"เสร็จสมบูรณ์",customer:"ลูกค้า",paid_status:"สถานะการชำระเงิน",ref_no:"โทษไม่.",number:"เลขที่",amount_due:"จำนวนเงินค้างชำระ",partially_paid:"ชำระเงินบางส่วน",total:"จำนวนเงินสุทธิ",discount:"ส่วนลด",sub_total:"รวมเงิน",invoice:"ใบวางบิล | ใบวางบิล",invoice_number:"เลขที่ใบวางบิล",ref_number:"หมายเลขอ้างอิง",contact:"ติดต่อเรา",add_item:"เพิ่มรายการ",date:"วันที่",due_date:"วันครบกำหนด",status:"สถานะ",add_tax:"เพิ่มภาษี",amount:"จำนวนเงิน (บาท)",action:"จัดการ",notes:"หมายเหตุ",view:"ดู",send_invoice:"ส่งใบวางบิล",resend_invoice:"ส่งใบวางบิลอีกครั้ง",invoice_template:"แม่แบบใบวางบิล",conversion_message:"ใบวางบิลที่โคลนเสร็จสมบูรณ์",template:"เลือกเทมเพลต",mark_as_sent:"ทำเครื่องหมายว่าส่งแล้ว",confirm_send_invoice:"ใบวางบิลนี้จะถูกส่งทางอีเมลถึงลูกค้า",invoice_mark_as_sent:"ใบวางบิลนี้จะถูกทำเครื่องหมายว่าส่ง",confirm_mark_as_accepted:"ใบวางบิลนี้จะถูกทำเครื่องหมายเป็น Accepted",confirm_mark_as_rejected:"ใบวางบิลนี้จะถูกทำเครื่องหมายว่าถูกปฏิเสธ",confirm_send:"ใบวางบิลนี้จะถูกส่งทางอีเมลถึงลูกค้า",invoice_date:"วันที่ใบวางบิล",record_payment:"บันทึกการชำระเงิน",add_new_invoice:"เพิ่มใบวางบิลใหม่",update_expense:"อัพเดตค่าใช้จ่าย",edit_invoice:"แก้ไขใบวางบิล",new_invoice:"ใบวางบิลใหม่",save_invoice:"บันทึกใบวางบิล",update_invoice:"อัพเดตใบวางบิล",add_new_tax:"เพิ่มภาษีใหม่",no_invoices:"ยังไม่มีใบวางบิล",mark_as_rejected:"ทำเครื่องหมายว่าถูกปฏิเสธ",mark_as_accepted:"ทำเครื่องหมายว่าเป็นที่ยอมรับ",list_of_invoices:"ส่วนนี้จะประกอบด้วยรายการของใบวางบิล",select_invoice:"เลือกใบวางบิล",no_matching_invoices:"ไม่มีใบวางบิลที่ตรงกัน!",mark_as_sent_successfully:"ใบวางบิลที่ทำเครื่องหมายว่าส่งเรียบร้อยแล้ว",invoice_sent_successfully:"ใบวางบิลที่ส่งเรียบร้อยแล้ว",cloned_successfully:"ทำสำเนาใบวางบิลเสร็จเรียบร้อยแล้ว",clone_invoice:"ทำสำเนาใบวางบิล",confirm_clone:"ใบวางบิลนี้จะถูกคัดลอกลงในใบวางบิลใหม่",item:{title:"ชื่อรายการ",description:"คำอธิบาย",quantity:"จำนวน",price:"ราคา",discount:"ส่วนลด",total:"จำนวนเงินสุทธิ",total_discount:"ส่วนลดทั้งหมด",sub_total:"รวมเงิน",tax:"ภาษี",amount:"จำนวนเงิน (บาท)",select_an_item:"พิมพ์หรือคลิกเพื่อเลือกรายการ",type_item_description:"คำอธิบาย (ไม่จำเป็น)"},payment_attached_message:"หนึ่งในใบวางบิลที่เลือกมีการชำระเงินที่แนบมากับใบวางบิลแล้วตรวจสอบให้แน่ใจว่าได้ลบการชำระเงินที่แนบมาก่อนเพื่อดำเนินการต่อด้วยการลบ",confirm_delete:"คุณจะไม่สามารถกู้คืนใบวางบิลนี้ได้ | คุณจะไม่สามารถกู้คืนใบวางบิลเหล่านี้ได้",created_message:"สร้างใบวางบิลเรียบร้อยแล้ว",updated_message:"อัพเดตใบวางบิลเรียบร้อยแล้ว",deleted_message:"ลบใบวางบิลเรียบร้อยแล้ว | ลบใบวางบิลเรียบร้อยแล้ว",marked_as_sent_message:"ใบวางบิลที่ทำเครื่องหมายว่าส่งเรียบร้อยแล้ว",something_went_wrong:"มีบางอย่างผิดพลาด",invalid_due_amount_message:"จำนวนใบวางบิลทั้งหมดต้องไม่น้อยกว่าจำนวนเงินที่ชำระทั้งหมดสำหรับใบวางบิลนี้โปรดอัปเดตใบวางบิลหรือลบการชำระเงินที่เกี่ยวข้องเพื่อดำเนินการต่อ"},Jre={title:"ใบวางบิลประจำ",invoices_list:"รายการใบวางบิลประจำ",days:"{days} วัน",months:"{months} เดือน",years:"{years} ปี",all:"ทั้งหมด",paid:"จ่ายแล้ว",unpaid:"ยังไม่ได้ชำระ",viewed:"ดูแล้ว",overdue:"ค้างชำระ",active:"แอคทีฟ",completed:"เสร็จสมบูรณ์",customer:"ลูกค้า",paid_status:"สถานะการชำระเงิน",ref_no:"โทษไม่.",number:"เลขที่",amount_due:"จำนวนเงินค้างชำระ",partially_paid:"ชำระเงินบางส่วน",total:"จำนวนเงินสุทธิ",discount:"ส่วนลด",sub_total:"รวมเงิน",invoice:"ใบวางบิลประจำ | ใบวางบิลประจำ",invoice_number:"เลขที่ใบวางบิลประจำ",next_invoice_date:"วันที่ใบวางบิลถัดไป",ref_number:"หมายเลขอ้างอิง",contact:"ติดต่อเรา",add_item:"เพิ่มรายการ",date:"วันที่",limit_by:"กำหนดรอบบิลโดย",limit_date:"วันที่สิ้นสุด",limit_count:"จำกัดจำนวน",count:"จำนวนครั้ง",status:"สถานะ",select_a_status:"เลือกสถานะ",working:"การทำงาน",on_hold:"พักไว้",complete:"เสร็จสมบูรณ์",add_tax:"เพิ่มภาษี",amount:"จำนวนเงิน (บาท)",action:"จัดการ",notes:"หมายเหตุ",view:"ดู",basic_info:"ข้อมูลพื้นฐาน",send_invoice:"ส่งใบวางบิลประจำ",auto_send:"ส่งอัตโนมัติ",resend_invoice:"ส่งใบวางบิลประจำอีกครั้ง",invoice_template:"แม่แบบใบวางบิลประจำ",conversion_message:"ทำสำเนาใบวางบิลประจำเสร็จเรียบร้อย",template:"แม่แบบ",mark_as_sent:"ทำเครื่องหมายว่าส่งแล้ว",confirm_send_invoice:"ใบวางบิลประจำนี้จะถูกส่งทางอีเมลถึงลูกค้า",invoice_mark_as_sent:"ใบวางบิลประจำนี้จะถูกทำเครื่องหมายเป็นส่งแล้ว",confirm_send:"ใบวางบิลประจำนี้จะถูกส่งทางอีเมลถึงลูกค้า",starts_at:"วันที่เริ่มต้น",due_date:"วันที่ครบกำหนดใบวางบิล",record_payment:"บันทึกการชำระเงิน",add_new_invoice:"เพิ่มใบวางบิลประจำใหม่",update_expense:"อัพเดตค่าใช้จ่าย",edit_invoice:"แก้ไขใบวางบิลประจำ",new_invoice:"ใบวางบิลประจำใหม่",send_automatically:"ส่งอัตโนมัติ",send_automatically_desc:"เปิดใช้งานนี้, หากคุณต้องการส่งใบวางบิลโดยอัตโนมัติให้กับลูกค้าเมื่อสร้างขึ้น.",save_invoice:"บันทึกใบวางบิลประจำ",update_invoice:"อัพเดตใบวางบิลประจำ",add_new_tax:"เพิ่มภาษีใหม่",no_invoices:"ยังไม่มีใบวางบิลประจำ!",mark_as_rejected:"ทำเครื่องหมายว่าถูกปฏิเสธ",mark_as_accepted:"ทำเครื่องหมายว่าเป็นที่ยอมรับ",list_of_invoices:"ส่วนนี้จะประกอบด้วยรายการของใบวางบิลประจำ",select_invoice:"เลือกใบวางบิล",no_matching_invoices:"ไม่มีใบวางบิลประจำที่ตรงกัน!",mark_as_sent_successfully:"ใบวางบิลประจำทำเครื่องหมายว่าส่งเรียบร้อยแล้ว",invoice_sent_successfully:"ใบวางบิลประจำส่งเรียบร้อยแล้ว",cloned_successfully:"ทำสำเนาใบวางบิลประจำเสร็จเรียบร้อยแล้ว",clone_invoice:"ทำสำเนาใบวางบิลประจำ",confirm_clone:"ใบวางบิลประจำนี้จะถูกคัดลอกลงในใบวางบิลประจำใหม่",item:{title:"ชื่อรายการ",description:"คำอธิบาย",quantity:"จำนวน",price:"ราคา",discount:"ส่วนลด",total:"จำนวนเงินสุทธิ",total_discount:"ส่วนลดทั้งหมด",sub_total:"รวมเงิน",tax:"ภาษี",amount:"จำนวนเงิน (บาท)",select_an_item:"พิมพ์หรือคลิกเพื่อเลือกรายการ",type_item_description:"คำอธิบาย (ไม่จำเป็น)"},frequency:{title:"ระยะเวลา",select_frequency:"กำหนดระยะเวลารอบบิล",minute:"นาที",hour:"ชั่วโมง",day_month:"วันของเดือน",month:"เดือน",day_week:"วันในสัปดาห์"},confirm_delete:"คุณจะไม่สามารถกู้คืนใบวางบิลนี้ได้ | คุณจะไม่สามารถกู้คืนใบวางบิลเหล่านี้ได้",created_message:"สร้างใบวางบิลประจำเรียบร้อยแล้ว",updated_message:"อัพเดตใบวางบิลประจำเรียบร้อยแล้ว",deleted_message:"ลบใบวางบิลประจำเรียบร้อยแล้ว | ลบใบวางบิลประจำเรียบร้อยแล้ว",marked_as_sent_message:"ใบวางบิลประจำทำเครื่องหมายว่าส่งเรียบร้อยแล้ว",user_email_does_not_exist:"ไม่มีอีเมลของผู้ใช้",something_went_wrong:"มีบางอย่างผิดพลาด",invalid_due_amount_message:"จำนวนใบวางบิลประจำทั้งหมดต้องไม่น้อยกว่าจำนวนเงินที่จ่ายทั้งหมดสำหรับใบวางบิลประจำนี้โปรดอัปเดตใบวางบิลหรือลบการชำระเงินที่เกี่ยวข้องเพื่อดำเนินการต่อ"},Xre={title:"การชำระเงิน",payments_list:"รายการชำระเงิน",record_payment:"บันทึกการชำระเงิน",customer:"ลูกค้า",date:"วันที่",amount:"จำนวนเงิน (บาท)",action:"จัดการ",payment_number:"เลขที่การชำระเงิน",payment_mode:"วิธีการชำระเงิน",invoice:"ใบวางบิล",note:"หมายเหตุ",add_payment:"เพิ่มการชำระเงิน",new_payment:"การชำระเงินใหม่",edit_payment:"แก้ไขการชำระเงิน",view_payment:"ดูการชำระเงิน",add_new_payment:"เพิ่มการชำระเงินใหม่",send_payment_receipt:"ส่งใบเสร็จรับเงิน",send_payment:"ส่งการชำระเงิน",save_payment:"บันทึกการชำระเงิน",update_payment:"อัปเดตการชำระเงิน",payment:"การชำระเงิน | การชำระเงิน",no_payments:"ยังไม่มีการชำระเงิน!",not_selected:"ไม่ได้เลือก",no_invoice:"ไม่มีใบวางบิล",no_matching_payments:"ไม่มีการชำระเงินที่ตรงกัน!",list_of_payments:"ส่วนนี้จะประกอบด้วยรายการของการชำระเงิน.",select_payment_mode:"เลือกวิธีการชำระเงิน",confirm_mark_as_sent:"ใบเสนอราคานี้จะถูกทำเครื่องหมายว่าส่ง",confirm_send_payment:"การชำระเงินนี้จะถูกส่งทางอีเมลถึงลูกค้า",send_payment_successfully:"การชำระเงินส่งเรียบร้อยแล้ว",something_went_wrong:"มีบางอย่างผิดพลาด",confirm_delete:"คุณจะไม่สามารถกู้คืนการชำระเงินนี้ได้ | คุณจะไม่สามารถกู้คืนการชำระเงินเหล่านี้ได้",created_message:"สร้างการชำระเงินเรียบร้อยแล้ว",updated_message:"อัพเดตการชำระเงินเรียบร้อยแล้ว",deleted_message:"การชำระเงินถูกลบเรียบร้อยแล้ว | การชำระเงินถูกลบเรียบร้อยแล้ว",invalid_amount_message:"จำนวนเงินที่ชำระไม่ถูกต้อง"},ele={title:"ค่าใช้จ่าย",expenses_list:"รายการค่าใช้จ่าย",select_a_customer:"เลือกลูกค้า",expense_title:"ชื่อเรื่อง",customer:"ลูกค้า",currency:"สกุลเงิน",contact:"ติดต่อเรา",category:"ประเภท",from_date:"จากวันที่",to_date:"ถึงวันที่",expense_date:"วันที่",description:"คำอธิบาย",receipt:"ใบเสร็จ",amount:"จำนวนเงิน (บาท)",action:"จัดการ",not_selected:"ไม่ได้เลือก",note:"หมายเหตุ",category_id:"รหัสหมวดหมู่",date:"วันที่",add_expense:"เพิ่มค่าใช้จ่าย",add_new_expense:"เพิ่มค่าใช้จ่ายใหม่",save_expense:"ประหยัดค่าใช้จ่าย",update_expense:"อัพเดตค่าใช้จ่าย",download_receipt:"ดาวน์โหลดใบเสร็จรับเงิน",edit_expense:"แก้ไขค่าใช้จ่าย",new_expense:"ค่าใช้จ่ายใหม่",expense:"ค่าใช้จ่าย | ค่าใช้จ่าย",no_expenses:"ยังไม่มีค่าใช้จ่าย!",list_of_expenses:"ส่วนนี้จะประกอบด้วยรายการค่าใช้จ่าย",confirm_delete:"คุณจะไม่สามารถกู้คืนค่าใช้จ่ายนี้ได้ | คุณจะไม่สามารถกู้คืนค่าใช้จ่ายเหล่านี้ได้",created_message:"ค่าใช้จ่ายที่สร้างเสร็จเรียบร้อยแล้ว",updated_message:"อัพเดตค่าใช้จ่ายเรียบร้อยแล้ว",deleted_message:"ลบค่าใช้จ่ายเรียบร้อยแล้ว | ลบค่าใช้จ่ายเรียบร้อยแล้ว",categories:{categories_list:"รายการหมวดหมู่",title:"ชื่อเรื่อง",name:"ชื่อ",description:"คำอธิบาย",amount:"จำนวนเงิน (บาท)",actions:"จัดการ",add_category:"เพิ่มหมวดหมู่",new_category:"หมวดหมู่ใหม่",category:"หมวดหมู่ | หมวดหมู่",select_a_category:"เลือกประเภท"}},tle={email:"อีเมล์",password:"รหัสผ่าน",forgot_password:"ลืมรหัสผ่าน",or_signIn_with:"หรือลงชื่อเข้าใช้ด้วย",login:"ล็อกอิน",register:"สมัครสมาชิก",reset_password:"รีเซ็ตรหัสผ่าน",password_reset_successfully:"รีเซ็ตรหัสผ่านเรียบร้อยแล้ว",enter_email:"ใส่อีเมล",enter_password:"ป้อนรหัสผ่าน",retype_password:"พิมพ์รหัสผ่านใหม่"},ale={buy_now:"ซื้อเดี๋ยวนี้",install:"ติดตั้ง",price:"ราคา",download_zip_file:"ดาวน์โหลดไฟล์ ZIP",unzipping_package:"แตกไฟล์แพ็คเกจ",copying_files:"การคัดลอกแฟ้ม",deleting_files:"การลบแฟ้มที่ไม่ได้ใช้",completing_installation:"การติดตั้งเสร็จสมบูรณ์",update_failed:"การอัพเดทล้มเหลว",install_success:"โมดูลได้รับการติดตั้งเรียบร้อยแล้ว!",customer_reviews:"รีวิว",license:"ใบอนุญาต",faq:"คำถามที่พบบ่อย",monthly:"รายเดือน",yearly:"รายปี",updated:"อัพเดตแล้ว",version:"เวอร์ชั่น",disable:"ปิดการใช้งาน",module_disabled:"โมดูลถูกปิดใช้งาน",enable:"เปิดใช้งาน",module_enabled:"โมดูลที่เปิดใช้งานแล้ว",update_to:"อัปเดตเป็น",module_updated:"อัพเดตโมดูลเรียบร้อยแล้ว!",title:"โมดูล",module:"โมดูล | โมดูล",api_token:"โทเค็น API",invalid_api_token:"โทเค็น API ไม่ถูกต้อง",other_modules:"โมดูลอื่น ๆ",view_all:"ดูทั้งหมด",no_reviews_found:"ยังไม่มีรีวิวสำหรับโมดุลนี้!",module_not_purchased:"ไม่ได้ซื้อโมดูล",module_not_found:"ไม่พบโมดูล",version_not_supported:"รุ่นขั้นต่ำที่จำเป็นสำหรับโมดูลนี้ไม่ตรงกันโปรดอัปเกรดแอพของคุณเป็นเวอร์ชั่น: {version} เพื่อดำเนินการต่อ",last_updated:"อัปเดตล่าสุดเมื่อ",connect_installation:"เชื่อมต่อการติดตั้งของคุณ",api_token_description:"ล็อกอินเข้าสู่ {url} และเชื่อมต่อการติดตั้งนี้โดยป้อน API Tokenโมดุลที่คุณซื้อจะแสดงขึ้นที่นี่หลังจากที่การเชื่อมต่อได้รับการจัดตั้งขึ้น",view_module:"ดูโมดูล",update_available:"อัปเดตพร้อมใช้งาน",purchased:"ซื้อแล้ว",installed:"ติดตั้งแล้ว",no_modules_installed:"ยังไม่มีการติดตั้งโมดูล!",disable_warning:"การตั้งค่าทั้งหมดสำหรับเรื่องนี้จะถูกย้อนกลับ",what_you_get:"สิ่งที่คุณได้รับ"},nle={title:"ผู้ใช้งาน",users_list:"รายชื่อผู้ใช้",name:"ชื่อ",description:"คำอธิบาย",added_on:"วันที่สร้าง",date_of_creation:"วันที่สร้าง",action:"จัดการ",add_user:"เพิ่มผู้ใช้",save_user:"บันทึกผู้ใช้",update_user:"อัพเดตผู้ใช้",user:"ผู้ใช้ | ผู้ใช้",add_new_user:"เพิ่มผู้ใช้ใหม่",new_user:"ผู้ใช้ใหม่",edit_user:"แก้ไขผู้ใช้",no_users:"ยังไม่มีผู้ใช้!",list_of_users:"ส่วนนี้จะประกอบด้วยรายชื่อของผู้ใช้",email:"อีเมล์",phone:"โทรศัพท์",password:"รหัสผ่าน",user_attached_message:"ไม่สามารถลบรายการที่ใช้อยู่แล้ว",confirm_delete:"คุณจะไม่สามารถกู้คืนผู้ใช้นี้ได้ | คุณจะไม่สามารถกู้คืนผู้ใช้เหล่านี้ได้",created_message:"ผู้ใช้สร้างเสร็จเรียบร้อยแล้ว",updated_message:"อัพเดตผู้ใช้เรียบร้อยแล้ว",deleted_message:"ผู้ใช้ลบเรียบร้อยแล้ว | ผู้ใช้ลบเรียบร้อยแล้ว",select_company_role:"เลือกบทบาทสำหรับ {company}",companies:"บริษัท"},ile={title:"รายงาน",from_date:"จากวันที่",to_date:"ถึงวันที่",status:"สถานะ",paid:"จ่ายแล้ว",unpaid:"ยังไม่ได้ชำระ",download_pdf:"ดาวน์โหลดไฟล์ PDF",view_pdf:"ดูไฟล์ PDF",update_report:"รายงานการอัพเดต",report:"รายงาน | รายงาน",profit_loss:{profit_loss:"กำไรขาดทุน",to_date:"ถึงวันที่",from_date:"จากวันที่",date_range:"เลือกช่วงวันที่"},sales:{sales:"การขาย",date_range:"เลือกช่วงวันที่",to_date:"ถึงวันที่",from_date:"จากวันที่",report_type:"ประเภทรายงาน"},taxes:{taxes:"ภาษี",to_date:"ถึงวันที่",from_date:"จากวันที่",date_range:"เลือกช่วงวันที่"},errors:{required:"ต้องกรอกข้อมูล"},invoices:{invoice:"ใบวางบิล",invoice_date:"วันที่ใบวางบิล",due_date:"วันครบกำหนด",amount:"จำนวนเงิน (บาท)",contact_name:"ชื่อผู้ติดต่อ",status:"สถานะ"},estimates:{estimate:"ใบเสนอราคา",estimate_date:"วันที่ใบเสนอราคา",due_date:"วันครบกำหนด",estimate_number:"เลขที่ใบเสนอราคา",ref_number:"หมายเลขอ้างอิง",amount:"จำนวนเงิน (บาท)",contact_name:"ชื่อผู้ติดต่อ",status:"สถานะ"},expenses:{expenses:"ค่าใช้จ่าย",category:"ประเภท",date:"วันที่",amount:"จำนวนเงิน (บาท)",to_date:"ถึงวันที่",from_date:"จากวันที่",date_range:"เลือกช่วงวันที่"}},ole={menu_title:{account_settings:"การตั้งค่าบัญชี",company_information:"ข้อมูลบริษัท",customization:"การปรับแต่ง",preferences:"การกำหนดค่า",notifications:"การแจ้งเตือน",tax_types:"ประเภทภาษี",expense_category:"ประเภทค่าใช้จ่าย",update_app:"อัพเดทแอพ",backup:"การสำรองข้อมูล",file_disk:"ดิสก์แฟ้ม",custom_fields:"เขตข้อมูลที่กำหนดเอง",payment_modes:"วิธีการชำระเงิน",notes:"หมายเหตุ",exchange_rate:"อัตราแลกเปลี่ยน",address_information:"ข้อมูลที่อยู่"},address_information:{section_description:" คุณสามารถอัปเดตข้อมูลที่อยู่ของคุณโดยใช้แบบฟอร์มด้านล่าง"},title:"การตั้งค่า",setting:"การตั้งค่า | การตั้งค่า",general:"ทั่วไป",language:"ภาษา",primary_currency:"สกุลเงินหลัก",timezone:"เขตเวลา",date_format:"รูปแบบวันที่",currencies:{title:"สกุลเงิน",currency:"สกุลเงิน | สกุลเงิน",currencies_list:"รายการสกุลเงิน",select_currency:"เลือกสกุลเงิน",name:"ชื่อ",code:"รหัส",symbol:"สัญลักษณ์",precision:"ความแม่นยำ",thousand_separator:"พันคั่น",decimal_separator:"ตัวคั่นทศนิยม",position:"ตำแหน่ง",position_of_symbol:"ตำแหน่งสัญลักษณ์",right:"ขวา",left:"ซ้าย",action:"จัดการ",add_currency:"เพิ่มสกุลเงิน"},mail:{host:"โฮสต์จดหมาย",port:"พอร์ตเมล",driver:"โปรแกรมควบคุมจดหมาย",secret:"ความลับ",mailgun_secret:"ความลับปืนพกปืน",mailgun_domain:"โดเมน",mailgun_endpoint:"ปลายทาง Mailgun",ses_secret:"SES ซีเคร็ต",ses_key:"SES คีย์",password:"รหัสผ่านจดหมาย",username:"ชื่อผู้ใช้จดหมาย",mail_config:"การกำหนดค่าจดหมาย",from_name:"จากชื่อจดหมาย",from_mail:"จากที่อยู่อีเมล",encryption:"การเข้ารหัสจดหมาย",mail_config_desc:"ด้านล่างเป็นรูปแบบสำหรับการกำหนดค่าไดรเวอร์อีเมลสำหรับการส่งอีเมลจาก appนอกจากนี้คุณยังสามารถกำหนดค่าผู้ให้บริการของบุคคลที่สามเช่น Sendgrid, SES ฯลฯ"},pdf:{title:"การตั้งค่า PDF",footer_text:"ข้อความท้ายกระดาษ",pdf_layout:"รูปแบบไฟล์ PDF"},company_info:{company_info:"ข้อมูลบริษัท",company_name:"ชื่อบริษัท",company_logo:"โลโก้บริษัท",section_description:"ข้อมูลเกี่ยวกับ บริษัท ของคุณที่จะแสดงในใบวางบิล, ใบเสนอราคาและเอกสารอื่น ๆ",phone:"โทรศัพท์",country:"ประเทศ",state:"เขต/อำเภอ",city:"จังหวัด",address:"ที่อยู่",zip:"รหัสไปรษณีย์",save:"บันทึก",delete:"ลบ",updated_message:"ข้อมูลบริษัทได้รับการอัพเดตเรียบร้อยแล้ว",delete_company:"ลบบริษัท",delete_company_description:"เมื่อคุณลบ บริษัท ของคุณคุณจะสูญเสียข้อมูลและไฟล์ทั้งหมดที่เชื่อมโยงกับมันอย่างถาวร",are_you_absolutely_sure:"คุณแน่ใจจริงๆ?",delete_company_modal_desc:"การกระทำนี้ไม่สามารถยกเลิกได้การดำเนินการนี้จะลบ {company} และข้อมูลที่เกี่ยวข้องทั้งหมดอย่างถาวร",delete_company_modal_label:"กรุณาพิมพ์ {company} เพื่อยืนยัน"},custom_fields:{title:"เขตข้อมูลที่กำหนดเอง",section_description:"ปรับแต่งใบวางบิล ใบเสนอราคา และใบเสร็จรับเงิน ด้วยช่องของคุณเองตรวจสอบให้แน่ใจว่าได้ใช้ฟิลด์ที่เพิ่มด้านล่างในรูปแบบที่อยู่บนหน้าการตั้งค่าที่กำหนดเอง",add_custom_field:"เพิ่มฟิลด์ที่กำหนดเอง",edit_custom_field:"แก้ไขฟิลด์ที่กำหนดเอง",field_name:"ชื่อเขตข้อมูล",label:"ฉลาก",type:"ประเภท",name:"ชื่อ",slug:"บุ้ง",required:"จำเป็นต้องใช้",placeholder:"ตัวยึด",help_text:"ข้อความช่วยเหลือ",default_value:"ค่าดีฟอลต์",prefix:"Prefix",starting_number:"หมายเลขเริ่มต้น",model:"แบบจำลอง",help_text_description:"ป้อนข้อความบางส่วนเพื่อช่วยให้ผู้ใช้เข้าใจวัตถุประสงค์ของฟิลด์ที่กำหนดเองนี้",suffix:"คำต่อท้าย",yes:"ใช่",no:"ไม่",order:"การสั่งซื้อ",custom_field_confirm_delete:"คุณจะไม่สามารถกู้คืนฟิลด์ที่กำหนดเองนี้ได้",already_in_use:"ฟิลด์ที่กำหนดเองที่มีอยู่แล้วในการใช้งาน",deleted_message:"ลบฟิลด์ที่กำหนดเองเรียบร้อยแล้ว",options:"ตัวเลือก",add_option:"เพิ่มตัวเลือก",add_another_option:"เพิ่มตัวเลือกอื่น",sort_in_alphabetical_order:"เรียงลำดับตามตัวอักษร",add_options_in_bulk:"เพิ่มตัวเลือกเป็นกลุ่ม",use_predefined_options:"ใช้ตัวเลือกที่กำหนดไว้ล่วงหน้า",select_custom_date:"เลือกวันที่กำหนดเอง",select_relative_date:"เลือกวันที่สัมพัทธ์",ticked_by_default:"เลือกตามค่าเริ่มต้น",updated_message:"อัพเดตฟิลด์ที่กำหนดเองเรียบร้อยแล้ว",added_message:"ฟิลด์ที่กำหนดเองเพิ่มเรียบร้อยแล้ว",press_enter_to_add:"กด Enter เพื่อเพิ่มตัวเลือกใหม่",model_in_use:"ไม่สามารถอัพเดตรูปแบบสำหรับเขตข้อมูลที่มีอยู่แล้วในการใช้งาน",type_in_use:"ไม่สามารถอัพเดตชนิดสำหรับเขตข้อมูลที่มีอยู่แล้วในการใช้งาน"},customization:{customization:"การปรับแต่ง",updated_message:"อัพเดตข้อมูลบริษัทเรียบร้อยแล้ว",save:"บันทึก",insert_fields:"แทรกข้อมูล",learn_custom_format:"เรียนรู้วิธีใช้รูปแบบที่กำหนดเอง",add_new_component:"เพิ่มคอมโพเนนต์ใหม่",component:"ส่วนประกอบ",Parameter:"พารามิเตอร์",series:"Prefix",series_description:"การตั้งค่า Prefix แบบคงที่/Postfix เช่น 'INV' ทั่ว บริษัท ของคุณมันสนับสนุนความยาวตัวอักษรได้ถึง 6 ตัวอักษร",series_param_label:"Prefix",delimiter:"ตัวคั่น",delimiter_description:"ตัวอักษรตัวเดียวสำหรับการระบุเขตแดนระหว่าง 2 องค์ประกอบที่แยกต่างหากโดยค่าเริ่มต้นตั้งค่าเป็น -",delimiter_param_label:"ตัวคั่น",date_format:"รูปแบบวันที่",date_format_description:"วันที่และเวลาท้องถิ่นฟิลด์ซึ่งยอมรับพารามิเตอร์รูปแบบรูปแบบเริ่มต้น: 'Y' วาทกรรมในปีปัจจุบัน",date_format_param_label:"รูปแบบ",sequence:"ลำดับ",sequence_description:"ลำดับต่อเนื่องของเลขที่ทั่วทั้งบริษัทของคุณคุณสามารถระบุความยาวในพารามิเตอร์ที่กำหนด",sequence_param_label:"ความยาว",customer_series:"ซีรีย์ลูกค้า",customer_series_description:"ในการตั้งค่า Prefix /postfix ที่แตกต่างกันสำหรับลูกค้าแต่ละราย",customer_sequence:"ลำดับลูกค้า",customer_sequence_description:"ลำดับต่อเนื่องของเลขที่สำหรับแต่ละลูกค้าของคุณ",customer_sequence_param_label:"ความยาวลำดับ",random_sequence:"ลำดับสุ่ม",random_sequence_description:"สตริงตัวอักษรและเลขที่แบบสุ่มคุณสามารถระบุความยาวในพารามิเตอร์ที่กำหนด",random_sequence_param_label:"ความยาวลำดับ",invoices:{title:"ใบวางบิล",invoice_number_format:"รูปแบบเลขที่ใบวางบิล",invoice_number_format_description:"กำหนดวิธีสร้างเลขที่ใบวางบิลของคุณโดยอัตโนมัติเมื่อคุณสร้างใบวางบิลใหม่",preview_invoice_number:"ตัวอย่างเลขที่ใบวางบิล",due_date:"วันครบกำหนด",due_date_description:"ระบุวิธีการตั้งค่าวันที่ครบกำหนดโดยอัตโนมัติเมื่อคุณสร้างใบวางบิล",due_date_days:"ใบวางบิลครบกำหนดหลังจากวัน",set_due_date_automatically:"ตั้งค่าวันครบกำหนดโดยอัตโนมัติ",set_due_date_automatically_description:"เปิดใช้งานตัวเลือกนี้ หากคุณต้องการตั้งค่าวันครบกำหนดโดยอัตโนมัติเมื่อคุณสร้างใบวางบิลใหม่",default_formats:"รูปแบบเริ่มต้น",default_formats_description:"รูปแบบด้านล่างที่กำหนดจะใช้ในการกรอกข้อมูลฟิลด์โดยอัตโนมัติในการสร้างใบวางบิล",default_invoice_email_body:"เนื้อความอีเมลใบวางบิลเริ่มต้น",company_address_format:"รูปแบบที่อยู่บริษัท",shipping_address_format:"รูปแบบที่อยู่สำหรับการจัดส่ง",billing_address_format:"รูปแบบที่อยู่สำหรับการเรียกเก็บเงิน",invoice_email_attachment:"ส่งใบวางบิลเป็นสิ่งที่แนบมา",invoice_email_attachment_setting_description:"เปิดใช้งานตัวเลือกนี้หากคุณต้องการส่งใบวางบิลเป็นสิ่งที่แนบมากับอีเมลโปรดทราบว่าปุ่ม 'ดูใบวางบิล' ในอีเมลจะไม่แสดงอีกต่อไปเมื่อเปิดใช้งาน",invoice_settings_updated:"อัพเดตการตั้งค่าใบวางบิลเรียบร้อยแล้ว",retrospective_edits:"การแก้ไขย้อนหลัง",allow:"อนุญาต",disable_on_invoice_partial_paid:"ปิดการใช้งานหลังจากบันทึกการชำระเงินบางส่วน",disable_on_invoice_paid:"ปิดการใช้งานหลังจากบันทึกการชำระเงินเต็มจำนวน",disable_on_invoice_sent:"ปิดการใช้งานหลังจากส่งใบวางบิล",retrospective_edits_description:" ขึ้นอยู่กับกฎหมายของประเทศของคุณหรือความต้องการของคุณ คุณสามารถจำกัดผู้ใช้จากการแก้ไขใบวางบิลฉบับสุดท้ายได้"},estimates:{title:"ใบเสนอราคา",estimate_number_format:"รูปแบบเลขที่โดยประมาณ",estimate_number_format_description:"กำหนดวิธีการสร้างหมายเลขประมาณของคุณโดยอัตโนมัติเมื่อคุณสร้างค่าประมาณใหม่",preview_estimate_number:"ตัวอย่างเลขที่ใบเสนอราคา",expiry_date:"วันหมดอายุ",expiry_date_description:"ระบุวิธีการตั้งค่าวันหมดอายุโดยอัตโนมัติเมื่อคุณสร้างการใบเสนอราคา",expiry_date_days:"ใบเสนอราคาหมดอายุหลังจากวัน",set_expiry_date_automatically:"ตั้งวันหมดอายุโดยอัตโนมัติ",set_expiry_date_automatically_description:"เปิดใช้งานตัวเลือกนี้ หากคุณต้องการตั้งค่าวันหมดอายุโดยอัตโนมัติเมื่อคุณสร้างค่าประมาณใหม่",default_formats:"รูปแบบเริ่มต้น",default_formats_description:"รูปแบบด้านล่างที่กำหนดจะใช้ในการกรอกเขตข้อมูลโดยอัตโนมัติในการสร้างใบเสนอราคา",default_estimate_email_body:"ประมาณค่าเริ่มต้น ร่างกายอีเมล",company_address_format:"รูปแบบที่อยู่บริษัท",shipping_address_format:"รูปแบบที่อยู่สำหรับการจัดส่ง",billing_address_format:"รูปแบบที่อยู่สำหรับการเรียกเก็บเงิน",estimate_email_attachment:"ส่งใบเสนอราคาเป็นสิ่งที่แนบมา",estimate_email_attachment_setting_description:"เปิดใช้งานตัวเลือกนี้หากคุณต้องการส่งค่าประมาณเป็นสิ่งที่แนบมากับอีเมลโปรดทราบว่าปุ่ม 'ดูการประเมิน' ในอีเมลจะไม่แสดงอีกต่อไปเมื่อเปิดใช้งาน",estimate_settings_updated:"อัพเดตการตั้งค่าใบเสนอราคาเรียบร้อยแล้ว",convert_estimate_options:"ใบเสนอราคาแปลงการกระทำ",convert_estimate_description:"ระบุสิ่งที่เกิดขึ้นกับการใบเสนอราคาหลังจากที่ได้รับการแปลงเป็นใบวางบิล",no_action:"ไม่มีการกระทำ",delete_estimate:"ลบค่าใบเสนอราคา",mark_estimate_as_accepted:"ทำเครื่องหมายใบเสนอราคาเป็นที่ยอมรับ"},payments:{title:"การชำระเงิน",payment_number_format:"รูปแบบเลขที่การชำระเงิน",payment_number_format_description:"กำหนดวิธีสร้างเลขที่การชำระเงินของคุณโดยอัตโนมัติเมื่อคุณสร้างการชำระเงินใหม่",preview_payment_number:"ดูตัวอย่างเลขที่การชำระเงิน",default_formats:"รูปแบบเริ่มต้น",default_formats_description:"รูปแบบด้านล่างที่กำหนดจะใช้ในการกรอกข้อมูลฟิลด์โดยอัตโนมัติในการสร้างการชำระเงิน",default_payment_email_body:"เนื้อความอีเมล์การชำระเงินเริ่มต้น",company_address_format:"รูปแบบที่อยู่บริษัท",from_customer_address_format:"จากรูปแบบที่อยู่ของลูกค้า",payment_email_attachment:"ส่งการชำระเงินเป็นไฟล์แนบ",payment_email_attachment_setting_description:"เปิดใช้งานตัวเลือกนี้ หากคุณต้องการส่งใบเสร็จการชำระเงินเป็นสิ่งที่แนบมากับอีเมลโปรดทราบว่าปุ่ม 'ดูการชำระเงิน' ในอีเมลจะไม่แสดงอีกต่อไปเมื่อเปิดใช้งาน",payment_settings_updated:"อัพเดตการตั้งค่าการชำระเงินเรียบร้อยแล้ว"},items:{title:"รายการ",units:"ยูนิต",add_item_unit:"เพิ่มหน่วยใหม่",edit_item_unit:"แก้ไขหน่วยรายการ",unit_name:"ชื่อหน่วย",item_unit_added:"หน่วยรายการที่เพิ่มเข้ามา",item_unit_updated:"อัพเดตหน่วยรายการ",item_unit_confirm_delete:"คุณจะไม่สามารถกู้คืนยูนิตไอเท็มนี้ได้",already_in_use:"หน่วยรายการที่มีอยู่แล้วในการใช้งาน",deleted_message:"หน่วยรายการถูกลบเรียบร้อยแล้ว"},notes:{title:"หมายเหตุ",description:"ประหยัดเวลาด้วยการสร้างหมายเหตุและนำกลับมาใช้ใหม่ในใบวางบิล ใบเสนอราคาและการชำระเงิน",notes:"หมายเหตุ",type:"ประเภท",add_note:"เพิ่มโน้ต",add_new_note:"เพิ่มหมายเหตุใหม่",name:"ชื่อ",edit_note:"แก้ไขโน้ต",note_added:"หมายเหตุเพิ่มเสร็จเรียบร้อยแล้ว",note_updated:"หมายเหตุ:อัพเดตเสร็จเรียบร้อยแล้ว",note_confirm_delete:"คุณจะไม่สามารถกู้คืนหมายเหตุนี้ได้",already_in_use:"หมายเหตุมีอยู่แล้วในการใช้งาน",deleted_message:"หมายเหตุถูกลบเรียบร้อยแล้ว"}},account_settings:{profile_picture:"รูปโปรไฟล์",name:"ชื่อ",email:"อีเมล์",password:"รหัสผ่าน",confirm_password:"ยืนยันรหัสผ่าน",account_settings:"การตั้งค่าบัญชี",save:"บันทึก",section_description:"คุณสามารถอัปเดตชื่อ อีเมล และรหัสผ่านของคุณโดยใช้แบบฟอร์มด้านล่าง",updated_message:"อัพเดตการตั้งค่าบัญชีเรียบร้อยแล้ว"},user_profile:{name:"ชื่อ",email:"อีเมล์",password:"รหัสผ่าน",confirm_password:"ยืนยันรหัสผ่าน"},notification:{title:"การแจ้งเตือน",email:"ส่งการแจ้งเตือนไปยัง",description:"คุณต้องการรับการแจ้งเตือนทางอีเมลใดบ้างเมื่อมีบางอย่างเปลี่ยนแปลง",invoice_viewed:"ดูใบวางบิล",invoice_viewed_desc:"เมื่อลูกค้าของคุณดูใบวางบิลที่ส่งผ่านแดชบอร์ด",estimate_viewed:"ใบเสนอราคาดู",estimate_viewed_desc:"เมื่อลูกค้าของคุณดูใบเสนอราคาที่ส่งผ่านแดชบอร์ด",save:"บันทึก",email_save_message:"อีเมลที่บันทึกเรียบร้อยแล้ว",please_enter_email:"กรุณากรอกอีเมล์"},roles:{title:"บทบาท",description:"จัดการบทบาทและสิทธิ์ของ บริษัท นี้",save:"บันทึก",add_new_role:"เพิ่มบทบาทใหม่",role_name:"ชื่อบทบาท",added_on:"เพิ่มใน",add_role:"เพิ่มบทบาท",edit_role:"แก้ไขบทบาท",name:"ชื่อ",permission:"การอนุญาต | การอนุญาต",select_all:"เลือกทั้งหมด",none:"ไม่มี",confirm_delete:"คุณจะไม่สามารถกู้คืนบทบาทนี้ได้",created_message:"บทบาทที่สร้างเสร็จเรียบร้อยแล้ว",updated_message:"อัพเดตบทบาทเรียบร้อยแล้ว",deleted_message:"ลบบทบาท สำเร็จ",already_in_use:"บทบาทที่มีอยู่แล้วในการใช้งาน"},exchange_rate:{exchange_rate:"อัตราแลกเปลี่ยน",title:"แก้ไขปัญหาการแลกเปลี่ยนเงินตรา",description:"กรุณากรอกอัตราแลกเปลี่ยนของสกุลเงินทั้งหมดที่กล่าวถึงด้านล่างเพื่อช่วยให้ระบบคำนวณจำนวนเงินใน {currency}",drivers:"ไดร์เวอร์",new_driver:"เพิ่มผู้ให้บริการใหม่",edit_driver:"แก้ไขผู้ให้บริการ",select_driver:"เลือกไดร์เวอร์",update:"เลือกอัตราแลกเปลี่ยน ",providers_description:"กำหนดค่าผู้ให้บริการอัตราแลกเปลี่ยนของคุณที่นี่เพื่อดึงข้อมูลอัตราแลกเปลี่ยนล่าสุดในการทำธุรกรรมโดยอัตโนมัติ",key:"คีย์ API",name:"ชื่อ",driver:"คนขับรถ",is_default:"เป็นค่าเริ่มต้น",currency:"สกุลเงิน",exchange_rate_confirm_delete:"คุณจะไม่สามารถกู้คืนไดรเวอร์นี้ได้",created_message:"ผู้ให้บริการสร้างเสร็จเรียบร้อยแล้ว",updated_message:"ผู้ให้บริการอัปเดตเรียบร้อยแล้ว",deleted_message:"ผู้ให้บริการถูกลบเรียบร้อยแล้ว",error:" คุณไม่สามารถลบโปรแกรมควบคุมที่ใช้งานอยู่",default_currency_error:"สกุลเงินนี้มีใช้อยู่แล้วในหนึ่งในผู้ให้บริการที่ใช้งานอยู่",exchange_help_text:"ป้อนอัตราแลกเปลี่ยนเพื่อแปลงจาก {currency} เป็น {baseCurrency}",currency_freak:"สกุลเงินประหลาด",currency_layer:"เลเยอร์เงินตรา",open_exchange_rate:"เปิดอัตราแลกเปลี่ยน",currency_converter:"แปลงสกุลเงิน",server:"เซิร์ฟเวอร์",url:"URL",active:"แอคทีฟ",currency_help_text:"ผู้ให้บริการรายนี้จะใช้กับสกุลเงินที่เลือกไว้ข้างต้นเท่านั้น",currency_in_used:"สกุลเงินต่อไปนี้มีการใช้งานอยู่แล้วในผู้ให้บริการรายอื่นโปรดลบสกุลเงินเหล่านี้ออกจากการเลือกเพื่อเปิดใช้งานผู้ให้บริการนี้อีกครั้ง"},tax_types:{title:"ประเภทภาษี",add_tax:"เพิ่มภาษี",edit_tax:"แก้ไขภาษี",description:"คุณสามารถเพิ่มหรือลบภาษีได้ตามที่คุณต้องการ ระบบสนับสนุนภาษีในแต่ละรายการเช่นเดียวกับในใบวางบิล",add_new_tax:"เพิ่มภาษีใหม่",tax_settings:"การตั้งค่าภาษี",tax_per_item:"ภาษีต่อรายการ",tax_name:"ชื่อภาษี",compound_tax:"ภาษีมูลค่าเพิ่ม",percent:"เปอร์เซ็นต์",action:"จัดการ",tax_setting_description:"เปิดใช้งานนี้ถ้าคุณต้องการเพิ่มภาษีให้กับรายการใบวางบิลแต่ละรายการโดยค่าเริ่มต้นภาษีจะถูกเพิ่มลงในใบวางบิลโดยตรง",created_message:"สร้างประเภทภาษีเรียบร้อยแล้ว",updated_message:"อัพเดตประเภทภาษีเรียบร้อยแล้ว",deleted_message:"ประเภทภาษีที่ถูกลบเรียบร้อยแล้ว",confirm_delete:"คุณจะไม่สามารถกู้คืนภาษีประเภทนี้ได้",already_in_use:"ภาษีมีอยู่แล้วในการใช้งาน"},payment_modes:{title:"วิธีการชำระเงิน",description:"รูปแบบการทำธุรกรรมสำหรับการชำระเงิน",add_payment_mode:"เพิ่มวิธีการชำระเงิน",edit_payment_mode:"แก้ไขวิธีการชำระเงิน",mode_name:"ชื่อโหมด",payment_mode_added:"เพิ่มวิธีการชำระเงิน",payment_mode_updated:"อัปเดตวิธีการชำระเงิน",payment_mode_confirm_delete:"คุณจะไม่สามารถกู้คืนวิธีการชำระเงินนี้ได้",payments_attached:"วิธีการชำระเงินนี้ได้แนบกับการชำระเงินแล้วกรุณาลบการชำระเงินที่แนบมาเพื่อดำเนินการลบ",expenses_attached:"วิธีการชำระเงินนี้แนบมากับค่าใช้จ่ายแล้วกรุณาลบค่าใช้จ่ายที่แนบมาเพื่อดำเนินการลบ",deleted_message:"ลบวิธีการชำระเงินเรียบร้อยแล้ว"},expense_category:{title:"ประเภทค่าใช้จ่าย",action:"จัดการ",description:"หมวดหมู่ที่จำเป็นสำหรับการเพิ่มรายการค่าใช้จ่ายคุณสามารถเพิ่มหรือลบหมวดหมู่เหล่านี้ได้ตามความชอบของคุณ",add_new_category:"เพิ่มหมวดหมู่ใหม่",add_category:"เพิ่มหมวดหมู่",edit_category:"แก้ไขหมวดหมู่",category_name:"ชื่อหมวดหมู่",category_description:"คำอธิบาย",created_message:"สร้างหมวดหมู่ค่าใช้จ่ายเรียบร้อยแล้ว",deleted_message:"หมวดหมู่ค่าใช้จ่ายที่ถูกลบเรียบร้อยแล้ว",updated_message:"อัพเดตหมวดหมู่ค่าใช้จ่ายเรียบร้อยแล้ว",confirm_delete:"คุณจะไม่สามารถกู้คืนหมวดหมู่ค่าใช้จ่ายนี้ได้",already_in_use:"หมวดหมู่ที่มีอยู่แล้วในการใช้งาน"},preferences:{currency:"สกุลเงิน",default_language:"ภาษาเริ่มต้น",time_zone:"เขตเวลา",fiscal_year:"ปีงบการเงิน",date_format:"รูปแบบวันที่",discount_setting:"การตั้งค่าส่วนลด",discount_per_item:"ส่วนลดต่อรายการ ",discount_setting_description:"เปิดใช้งานตัวเลือกนี้หากคุณต้องการเพิ่มส่วนลดให้กับรายการใบวางบิลแต่ละรายการโดยค่าเริ่มต้นส่วนลดจะถูกเพิ่มโดยตรงไปยังใบวางบิล",expire_public_links:"ลิงก์สาธารณะหมดอายุโดยอัตโนมัติ",expire_setting_description:"ระบุว่าคุณต้องการให้ลิงก์ทั้งหมดที่ส่งมาออกจากแอปพลิเคชันนี้หมดอายุอัตโนมัติ เพื่อให้สามารถดูใบแจ้งหนี้ การประมาณการ & การชำระเงิน ฯลฯ หลังจากระยะเวลาที่กำหนด",save:"บันทึก",preference:"การตั้งค่า | การตั้งค่า",general_settings:"การตั้งค่าเริ่มต้นสำหรับระบบ",updated_message:"อัพเดตการปรับแต่งเรียบร้อยแล้ว",select_language:"เลือกภาษา",select_time_zone:"เลือกโซนเวลา",select_date_format:"เลือกรูปแบบวันที่",select_financial_year:"เลือกปีการเงิน",recurring_invoice_status:"สถานะใบวางบิลประจำ",create_status:"สร้างสถานะ",active:"แอคทีฟ",on_hold:"พักไว้",update_status:"สถานะการอัพเดต",completed:"เสร็จสมบูรณ์",company_currency_unchangeable:"สกุลเงินของบริษัทไม่สามารถเปลี่ยนแปลงได้"},update_app:{title:"อัพเดทแอพ",description:"คุณสามารถอัปเดตระบบได้ง่ายๆ โดยการตรวจหาการอัปเดตใหม่โดยคลิกที่ปุ่มด้านล่าง",check_update:"ตรวจหาการอัพเดต",avail_update:"อัปเดตใหม่พร้อมใช้งาน",next_version:"รุ่นถัดไป",requirements:"ข้อกำหนด",update:"อัปเดตเดี๋ยวนี้",update_progress:"กำลังอัพเดตอยู่...",progress_text:"มันจะใช้เวลาไม่กี่นาทีกรุณาอย่ารีเฟรชหน้าจอหรือปิดหน้าต่างก่อนที่การอัพเดตจะเสร็จสิ้น",update_success:"App ได้รับการอัพเดต!โปรดรอสักครู่ในขณะที่หน้าต่างเบราว์เซอร์ของคุณได้รับการโหลดใหม่โดยอัตโนมัติ",latest_message:"ไม่มีการอัพเดต!คุณอยู่ในรุ่นล่าสุด.",current_version:"เวอร์ชันปัจจุบัน",download_zip_file:"ดาวน์โหลดไฟล์ ZIP",unzipping_package:"แตกไฟล์แพ็คเกจ",copying_files:"การคัดลอกแฟ้ม",deleting_files:"การลบแฟ้มที่ไม่ได้ใช้",running_migrations:"กำลังทำงานโยกย้าย",finishing_update:"การอัพเดตเสร็จแล้ว",update_failed:"การอัพเดทล้มเหลว",update_failed_text:"โทษที!การอัปเดตของคุณล้มเหลวใน: ขั้นตอน {step}",update_warning:"ไฟล์แอปพลิเคชันและไฟล์แม่แบบเริ่มต้นทั้งหมดจะถูกเขียนทับเมื่อคุณอัปเดตแอปพลิเคชันโดยใช้ยูทิลิตีนี้โปรดใช้การสำรองข้อมูลของแม่แบบและฐานข้อมูลของคุณก่อนที่จะอัพเดต"},backup:{title:"การสำรองข้อมูล | ข้อมูลสำรอง",description:"การสำรองข้อมูลเป็น zipfile ที่มีไฟล์ทั้งหมดในไดเรกทอรีที่คุณระบุพร้อมกับการถ่ายโอนข้อมูลของฐานข้อมูลของคุณ",new_backup:"เพิ่มข้อมูลสำรองใหม่",create_backup:"สร้างข้อมูลสำรอง",select_backup_type:"เลือกประเภทการสำรองข้อมูล",backup_confirm_delete:"คุณจะไม่สามารถกู้คืนข้อมูลสำรองนี้ได้",path:"เส้นทาง",new_disk:"ดิสก์ใหม่",created_at:"สร้างที่",size:"ขนาด",dropbox:"ดรอบ็อกซ์",local:"ท้องถิ่น",healthy:"แข็งแรง",amount_of_backups:"จำนวนการสำรองข้อมูล",newest_backups:"การสำรองข้อมูลใหม่ล่าสุด",used_storage:"ที่เก็บข้อมูลที่ใช้แล้ว",select_disk:"เลือกดิสก์",action:"จัดการ",deleted_message:"การสำรองข้อมูลถูกลบเรียบร้อยแล้ว",created_message:"สร้างการสำรองข้อมูลเรียบร้อยแล้ว",invalid_disk_credentials:"ข้อมูลประจำตัวของดิสก์ที่เลือกไม่ถูกต้อง"},disk:{title:"ดิสก์แฟ้ม | ไฟล์ดิสก์",description:"โดยค่าเริ่มต้น InvoiceShelf จะใช้ดิสก์ภายในเครื่องของคุณสำหรับการบันทึกข้อมูลสำรอง, avatar และไฟล์ภาพอื่น ๆคุณสามารถกำหนดค่าไดร์เวอร์ดิสก์ได้มากกว่าหนึ่งรายการ เช่น DigitalOcean, S3 และ Dropbox ตามความต้องการของคุณ",created_at:"สร้างที่",dropbox:"ดรอบ็อกซ์",name:"ชื่อ",driver:"คนขับรถ",disk_type:"ประเภท",disk_name:"ชื่อดิสก์",new_disk:"เพิ่มดิสก์ใหม่",filesystem_driver:"โปรแกรมควบคุมระบบแฟ้ม",local_driver:"คนขับรถท้องถิ่น",local_root:"รากท้องถิ่น",public_driver:"คนขับรถสาธารณะ",public_root:"รากสาธารณะ",public_url:"URL สาธารณะ",public_visibility:"ทัศนวิสัยของสาธารณชน",media_driver:"โปรแกรมควบคุมสื่อ",media_root:"รากสื่อ",aws_driver:"ไดรเวอร์ AWS",aws_key:"คีย์ AWS",aws_secret:"AWS ซีเคร็ต",aws_region:"ภูมิภาค AWS",aws_bucket:"AWS บัคเก็ต",aws_root:"รากของ AWS",do_spaces_type:"ประเภท Do Space",do_spaces_key:"ปุ่มเว้นวรรค",do_spaces_secret:"ทำช่องว่างลับ",do_spaces_region:"ทำพื้นที่ภูมิภาค",do_spaces_bucket:"ทำถังเว้นวรรค",do_spaces_endpoint:"ทำช่องว่างปลายทาง",do_spaces_root:"รูทช่องว่าง",dropbox_type:"ประเภทของ Dropbox",dropbox_token:"โทเค็น Dropbox",dropbox_key:"ปุ่ม Dropbox",dropbox_secret:"Dropbox Secret",dropbox_app:"แอป Dropbox",dropbox_root:"รูทของ Dropbox",default_driver:"โปรแกรมควบคุมเริ่มต้น",is_default:"เป็นค่าเริ่มต้น",set_default_disk:"ตั้งค่าดิสก์เริ่มต้น",set_default_disk_confirm:"ดิสก์นี้จะถูกตั้งค่าเป็นค่าเริ่มต้นและไฟล์ PDF ใหม่ทั้งหมดจะถูกบันทึกไว้ในดิสก์นี้",success_set_default_disk:"ตั้งค่าดิสก์เป็นค่าเริ่มต้นเรียบร้อยแล้ว",save_pdf_to_disk:"บันทึกไฟล์ PDF ลงในดิสก์",disk_setting_description:" เปิดใช้งานนี้, หากคุณต้องการบันทึกสำเนาของแต่ละใบวางบิล, ใบเสนอราคาและการชำระเงินใบเสร็จรับเงิน PDF บนดิสก์เริ่มต้นของคุณโดยอัตโนมัติ.การเปิดใช้ตัวเลือกนี้จะลดเวลาในการโหลดเมื่อดูไฟล์ PDF",select_disk:"เลือกดิสก์",disk_settings:"การตั้งค่าดิสก์",confirm_delete:"ไฟล์และโฟลเดอร์ที่มีอยู่ในดิสก์ที่ระบุจะไม่ได้รับผลกระทบ แต่การกำหนดค่าดิสก์ของคุณจะถูกลบออกจาก InvoiceShelf",action:"จัดการ",edit_file_disk:"แก้ไขดิสก์แฟ้ม",success_create:"ดิสก์ที่เพิ่มเรียบร้อยแล้ว",success_update:"อัพเดตดิสก์เรียบร้อยแล้ว",error:"การเพิ่มดิสก์ล้มเหลว",deleted_message:"ดิสก์แฟ้มถูกลบเรียบร้อยแล้ว",disk_variables_save_successfully:"ดิสก์กำหนดค่าเรียบร้อยแล้ว",disk_variables_save_error:"การกำหนดค่าดิสก์ล้มเหลว",invalid_disk_credentials:"ข้อมูลประจำตัวของดิสก์ที่เลือกไม่ถูกต้อง"},taxations:{add_billing_address:"ป้อนที่อยู่สำหรับเรียกเก็บเงิน",add_shipping_address:"ป้อนที่อยู่จัดส่ง",add_company_address:"ใส่ที่อยู่บริษัท",modal_description:"ข้อมูลด้านล่างเป็นสิ่งจำเป็นเพื่อที่จะดึงข้อมูลภาษีการขาย",add_address:"เพิ่มที่อยู่สำหรับการเรียกภาษีการขาย",address_placeholder:"ตัวอย่าง: 123 ถนนของฉัน",city_placeholder:"ตัวอย่าง: ลอสแอนเจลิส",state_placeholder:"ตัวอย่าง: CA",zip_placeholder:"ตัวอย่าง: 90024",invalid_address:"โปรดระบุรายละเอียดที่อยู่ที่ถูกต้อง"}},sle={account_info:"ข้อมูลบัญชี",account_info_desc:"รายละเอียดด้านล่างจะถูกใช้ในการสร้างบัญชีผู้ดูแลระบบหลักนอกจากนี้คุณสามารถเปลี่ยนรายละเอียดได้ตลอดเวลาหลังจากเข้าสู่ระบบ",name:"ชื่อ",email:"อีเมล์",password:"รหัสผ่าน",confirm_password:"ยืนยันรหัสผ่าน",save_cont:"บันทึกและดำเนินการต่อ",company_info:"ข้อมูลบริษัท",company_info_desc:"ข้อมูลนี้จะถูกแสดงในใบวางบิลโปรดทราบว่าคุณสามารถแก้ไขได้ในภายหลังในหน้าการตั้งค่า",company_name:"ชื่อบริษัท",company_logo:"โลโก้บริษัท",logo_preview:"แสดงตัวอย่างโลโก้",preferences:"การกำหนดลักษณะบริษัท",preferences_desc:"ระบุการตั้งค่าเริ่มต้นสำหรับ บริษัท นี้",currency_set_alert:"สกุลเงินของบริษัทไม่สามารถเปลี่ยนแปลงได้ในภายหลัง",country:"ประเทศ",state:"เขต/อำเภอ",city:"จังหวัด",address:"ที่อยู่",street:"ที่อยู่บรรทัด 1 | ที่อยู่บรรทัด 2",phone:"โทรศัพท์",zip_code:"รหัสไปรษณีย์",go_back:"กลับไป",currency:"สกุลเงิน",language:"ภาษา",time_zone:"เขตเวลา",fiscal_year:"ปีงบการเงิน",date_format:"รูปแบบวันที่",from_address:"จากที่อยู่",username:"ชื่อผู้ใช้",next:"ถัดไป",continue:"ดำเนินการต่อ",skip:"ข้าม",database:{database:"URL ของไซต์และฐานข้อมูล",connection:"การเชื่อมต่อฐานข้อมูล",host:"โฮสต์ฐานข้อมูล",port:"พอร์ตฐานข้อมูล",password:"รหัสผ่านฐานข้อมูล",app_url:"URL ของแอป",app_domain:"โดเมนของแอป",username:"ชื่อผู้ใช้ฐานข้อมูล",db_name:"ชื่อฐานข้อมูล",db_path:"เส้นทางฐานข้อมูล",desc:"สร้างฐานข้อมูลบนเซิร์ฟเวอร์ของคุณและตั้งค่าข้อมูลประจำตัวโดยใช้แบบฟอร์มด้านล่าง"},permissions:{permissions:"การอนุญาต",permission_confirm_title:"คุณแน่ใจเหรอว่าอยากจะทำต่อ",permission_confirm_desc:"การตรวจสอบสิทธิ์ของโฟลเดอร์ล้มเหลว",permission_desc:"ด้านล่างนี้คือรายการสิทธิ์ของโฟลเดอร์ที่จำเป็นเพื่อให้แอปทำงานได้หากการตรวจสอบสิทธิ์ล้มเหลว โปรดตรวจสอบให้แน่ใจว่าคุณได้ทำการอัพเดตสิทธิ์การเข้าถึงของโฟลเดอร์เรียบร้อยแล้ว"},verify_domain:{title:"การยืนยันโดเมน",desc:"ระบบใช้การรับรองความถูกต้องตามเซสชันซึ่งต้องมีการตรวจสอบโดเมนเพื่อวัตถุประสงค์ด้านความปลอดภัยโปรดป้อนโดเมนที่คุณจะเข้าถึงเว็บแอปพลิเคชันของคุณ",app_domain:"โดเมนของแอป",verify_now:"ตรวจสอบเดี๋ยวนี้",success:"ตรวจสอบโดเมนเรียบร้อยแล้ว",failed:"การตรวจสอบโดเมนล้มเหลวโปรดป้อนชื่อโดเมนที่ถูกต้อง",verify_and_continue:"ยืนยันและดำเนินการต่อ"},mail:{host:"โฮสต์จดหมาย",port:"พอร์ตเมล",driver:"โปรแกรมควบคุมจดหมาย",secret:"ความลับ",mailgun_secret:"ความลับปืนพกปืน",mailgun_domain:"โดเมน",mailgun_endpoint:"ปลายทาง Mailgun",ses_secret:"SES ซีเคร็ต",ses_key:"SES คีย์",password:"รหัสผ่านจดหมาย",username:"ชื่อผู้ใช้จดหมาย",mail_config:"การกำหนดค่าจดหมาย",from_name:"จากชื่อจดหมาย",from_mail:"จากที่อยู่อีเมล",encryption:"การเข้ารหัสจดหมาย",mail_config_desc:"ด้านล่างเป็นรูปแบบสำหรับการกำหนดค่าไดรเวอร์อีเมลสำหรับการส่งอีเมลจาก appนอกจากนี้คุณยังสามารถกำหนดค่าผู้ให้บริการของบุคคลที่สามเช่น Sendgrid, SES ฯลฯ"},req:{system_req:"ความต้องการของระบบ",php_req_version:"PHP (เวอร์ชัน {version} จำเป็นต้องใช้)",check_req:"ตรวจสอบความต้องการ",system_req_desc:"ระบบมีความต้องการเซิร์ฟเวอร์ไม่กี่ตรวจสอบให้แน่ใจว่าเซิร์ฟเวอร์ของคุณมีเวอร์ชัน PHP ที่จำเป็นและส่วนขยายทั้งหมดที่กล่าวถึงด้านล่าง"},errors:{migrate_failed:"การโยกย้ายล้มเหลว",database_variables_save_error:"ไม่สามารถเขียนการกำหนดค่าไปยังแฟ้ม.envกรุณาตรวจสอบสิทธิ์ของไฟล์",mail_variables_save_error:"การกำหนดค่าอีเมลล้มเหลว",connection_failed:"การเชื่อมต่อฐานข้อมูลล้มเหลว",database_should_be_empty:"ฐานข้อมูลควรจะว่างเปล่า"},success:{mail_variables_save_successfully:"การกำหนดค่าอีเมลเรียบร้อยแล้ว",database_variables_save_successfully:"ฐานข้อมูลการกำหนดค่าเรียบร้อยแล้ว"}},rle={invalid_phone:"หมายเลขโทรศัพท์ไม่ถูกต้อง",invalid_url:"URL ไม่ถูกต้อง (เช่น http://www.invoiceshelf.com)",invalid_domain_url:"URL ไม่ถูกต้อง (เช่น: invoiceshelf.com)",required:"ต้องกรอกข้อมูล",email_incorrect:"อีเมลไม่ถูกต้อง",email_already_taken:"อีเมลถูกถ่ายไปแล้ว",email_does_not_exist:"ผู้ใช้ที่มีอีเมลที่ระบุไม่มีอยู่",item_unit_already_taken:"ชื่อหน่วยรายการนี้ได้รับการถ่ายแล้ว",payment_mode_already_taken:"ชื่อวิธีการชำระเงินนี้ได้รับการดำเนินการแล้ว",send_reset_link:"ส่งลิงก์รีเซ็ต",not_yet:"ยังงั้นเหรอส่งอีกครั้ง",password_min_length:"รหัสผ่านต้องประกอบด้วยอักขระ {count}",name_min_length:"ชื่อต้องมีตัวอักษรอย่างน้อย {count}",prefix_min_length:"Prefix ต้องมีตัวอักษรอย่างน้อย {count}",enter_valid_tax_rate:"ป้อนอัตราภาษีที่ถูกต้อง",numbers_only:"เลขที่เท่านั้น",characters_only:"อักขระเท่านั้น",password_incorrect:"รหัสผ่านต้องเหมือนกัน",password_length:"รหัสผ่านต้องมีความยาว {count} อักขระ",qty_must_greater_than_zero:"ปริมาณต้องมากกว่าศูนย์",price_greater_than_zero:"ราคาต้องมากกว่าศูนย์",payment_greater_than_zero:"การชำระเงินต้องมากกว่าศูนย์",payment_greater_than_due_amount:"การชำระเงินที่ป้อนเป็นมากกว่าจำนวนเงินค้างชำระของใบวางบิลนี้",quantity_maxlength:"จำนวนไม่ควรเกิน 20 หลัก",price_maxlength:"ราคาไม่ควรเกิน 20 หลัก",price_minvalue:"ราคาควรมากกว่า 0",amount_maxlength:"จำนวนเงินที่ไม่ควรมากกว่า 20 หลัก",amount_minvalue:"จำนวนเงินที่ควรจะมากกว่า 0",discount_maxlength:"ส่วนลดไม่ควรเกินส่วนลดสูงสุด",description_maxlength:"คำอธิบายไม่ควรเกิน 255 ตัวอักษร",subject_maxlength:"เรื่องไม่ควรเกิน 100 ตัวอักษร",message_maxlength:"ข้อความไม่ควรเกิน 255 ตัวอักษร",maximum_options_error:"เลือกตัวเลือก {max} ได้สูงสุดขั้นแรกให้ลบตัวเลือกที่เลือกเพื่อเลือกตัวเลือกอื่น",notes_maxlength:"หมายเหตุไม่ควรเกิน 65,000 ตัวอักษร",address_maxlength:"ที่อยู่ไม่ควรเกิน 255 ตัวอักษร",ref_number_maxlength:"หมายเลขอ้างอิง ไม่ควรเกิน 255 ตัวอักษร",prefix_maxlength:"Prefix ไม่ควรเกิน 5 ตัวอักษร",something_went_wrong:"มีบางอย่างผิดพลาด",number_length_minvalue:"ความยาวจำนวนควรมากกว่า 0",at_least_one_ability:"โปรดเลือกอย่างน้อยหนึ่งสิทธิ์",valid_driver_key:"โปรดป้อนคีย์ {driver} ที่ถูกต้อง",valid_exchange_rate:"กรุณากรอกอัตราแลกเปลี่ยนที่ถูกต้อง",company_name_not_same:"ชื่อ บริษัท ต้องตรงกับชื่อที่กำหนด"},lle={starter_plan:"คุณสมบัตินี้สามารถใช้ได้ในแผน Starter และเป็นต้นไป!",invalid_provider_key:"โปรดป้อนคีย์ API ของผู้ให้บริการที่ถูกต้อง",estimate_number_used:"เลขที่ใบเสนอราคาได้ถูกใช้ไปแล้ว",invoice_number_used:"เลขที่ใบวางบิลได้ถูกนำไปใช้แล้ว",payment_attached:"ใบวางบิลนี้มีการชำระเงินที่แนบมากับใบวางบิลแล้วตรวจสอบให้แน่ใจว่าได้ลบการชำระเงินที่แนบมาก่อนเพื่อที่จะดำเนินการลบต่อไป",payment_number_used:"เลขที่การชำระเงินได้รับการดำเนินการแล้ว",name_already_taken:"ชื่อได้ถูกนำไปแล้ว",receipt_does_not_exist:"ไม่มีใบเสร็จรับเงิน",customer_cannot_be_changed_after_payment_is_added:"ลูกค้าไม่สามารถเปลี่ยนแปลงได้หลังจากเพิ่มการชำระเงินแล้ว",invalid_credentials:"ข้อมูลประจำตัวไม่ถูกต้อง",not_allowed:"ไม่อนุญาต",login_invalid_credentials:"ข้อมูลประจำตัวเหล่านี้ไม่ตรงกับบันทึกของเรา",enter_valid_cron_format:"โปรดป้อนรูปแบบ cron ที่ถูกต้อง",email_could_not_be_sent:"ไม่สามารถส่งอีเมลไปยังที่อยู่อีเมลนี้ได้",invalid_address:"โปรดป้อนที่อยู่ที่ถูกต้อง",invalid_key:"โปรดป้อนรหัสที่ถูกต้อง",invalid_state:"โปรดป้อนสถานะที่ถูกต้อง",invalid_city:"โปรดป้อนจังหวัดที่ถูกต้อง",invalid_postal_code:"กรุณาป้อนรหัสไปรษณีย์ที่ถูกต้อง.",invalid_format:"โปรดป้อนรูปแบบสตริงแบบสอบถามที่ถูกต้อง",api_error:"เซิร์ฟเวอร์ไม่ตอบสนอง",feature_not_enabled:"ไม่ได้เปิดใช้งานฟีเจอร์",request_limit_met:"เกินขีด จำกัด การร้องขอ API",address_incomplete:"ที่อยู่ไม่สมบูรณ์"},cle="ใบเสนอราคา",dle="เลขที่",ule="วันที่",_le="วันหมดอายุ",mle="ใบวางบิล",ple="เลขที่ใบวางบิล",fle="วันที่ใบวางบิล",hle="วันครบกำหนด",gle="หมายเหตุ",vle="บริการ",yle="หน่วย",ble="ราคาต่อหน่วย",kle="ส่วนลด",wle="จำนวนเงิน (บาท)",Dle="ยอดรวม",xle="จำนวนเงินทั้งสิ้น",Sle="การชำระเงิน",Ple="ใบเสร็จรับเงิน",Ele="วันที่ชำระเงิน",zle="เลขที่การชำระเงิน",Ale="วิธีการชำระเงิน",Cle="จำนวนเงินที่ได้รับ",Tle="รายงานค่าใช้จ่าย",jle="ค่าใช้จ่ายทั้งหมด",Nle="รายงานผลกำไรขาดทุน",Ile="รายงานลูกค้าฝ่ายขาย",Fle="รายงานรายการขาย",Rle="รายงานสรุปภาษี",Ole="เงินได้",Mle="กำไรสุทธิ",$le="รายงานการขาย: โดยลูกค้า",Lle="ยอดขายรวม",Ble="รายงานการขาย: ตามรายการ",Ule="รายงานภาษี",Vle="ภาษีทั้งหมด",qle="ประเภทภาษี",Wle="ค่าใช้จ่าย",Hle="ที่อยู่เรียกเก็บเงิน,",Kle="ที่อยู่สำหรับจัดส่ง,",Yle="ได้รับจาก:",Zle="ภาษี",Gle="ผู้เสนอราคา",Qle="ลูกค้า",Jle="ที่อยู่",Xle={navigation:Bre,general:Ure,dashboard:Vre,tax_types:qre,global_search:Wre,company_switcher:Hre,dateRange:Kre,customers:Yre,items:Zre,estimates:Gre,invoices:Qre,recurring_invoices:Jre,payments:Xre,expenses:ele,login:tle,modules:ale,users:nle,reports:ile,settings:ole,wizard:sle,validation:rle,errors:lle,pdf_estimate_label:cle,pdf_estimate_number:dle,pdf_estimate_date:ule,pdf_estimate_expire_date:_le,pdf_invoice_label:mle,pdf_invoice_number:ple,pdf_invoice_date:fle,pdf_invoice_due_date:hle,pdf_notes:gle,pdf_items_label:vle,pdf_quantity_label:yle,pdf_price_label:ble,pdf_discount_label:kle,pdf_amount_label:wle,pdf_subtotal:Dle,pdf_total:xle,pdf_payment_label:Sle,pdf_payment_receipt_label:Ple,pdf_payment_date:Ele,pdf_payment_number:zle,pdf_payment_mode:Ale,pdf_payment_amount_received_label:Cle,pdf_expense_report_label:Tle,pdf_total_expenses_label:jle,pdf_profit_loss_label:Nle,pdf_sales_customers_label:Ile,pdf_sales_items_label:Fle,pdf_tax_summery_label:Rle,pdf_income_label:Ole,pdf_net_profit_label:Mle,pdf_customer_sales_report:$le,pdf_total_sales_label:Lle,pdf_item_sales_label:Ble,pdf_tax_report_label:Ule,pdf_total_tax_label:Vle,pdf_tax_types_label:qle,pdf_expenses_label:Wle,pdf_bill_to:Hle,pdf_ship_to:Kle,pdf_received_from:Yle,pdf_tax_label:Zle,pdf_company_name:Gle,pdf_customer:Qle,pdf_address:Jle},ece={cs:kV,en:T7,fr:B9,es:Qq,ar:rH,de:gK,ja:EY,pt_BR:XZ,it:cQ,sr:yJ,nl:AX,ko:Iee,lv:qte,sv:ene,sk:die,vi:boe,pl:OZ,el:Cse,hr:Lre,th:Xle},tce={__name:"BaseBadge",props:{bgColor:{type:String,default:null},color:{type:String,default:null}},setup(e){return(t,a)=>($(),te("span",{class:"px-2 py-1 text-sm font-normal text-center text-green-800 uppercase bg-success",style:oo({backgroundColor:e.bgColor,color:e.color})},[it(t.$slots,"default")],4))}},ace=Object.freeze(Object.defineProperty({__proto__:null,default:tce},Symbol.toStringTag,{value:"Module"})),nce={name:"BaseBreadcrumb"},ice={class:"flex flex-wrap py-4 text-gray-900 rounded list-reset"};function oce(e,t,a,n,i,o){return $(),te("nav",null,[X("ol",ice,[it(e.$slots,"default")])])}const sce=Sn(nce,[["render",oce]]),rce=Object.freeze(Object.defineProperty({__proto__:null,default:sce},Symbol.toStringTag,{value:"Module"})),lce={class:"pr-2 text-sm"},cce={key:0,class:"px-1"},dce={__name:"BaseBreadcrumbItem",props:{title:{type:String,default:String},to:{type:String,default:"#"},active:{type:Boolean,default:!1,required:!1}},setup(e){return(t,a)=>{const n=Be("router-link");return $(),te("li",lce,[G(n,{class:"m-0 mr-2 text-sm font-medium leading-5 text-gray-900 outline-none focus:ring-2 focus:ring-offset-2 focus:ring-primary-400",to:e.to},{default:_e(()=>[$t(je(e.title),1)]),_:1},8,["to"]),e.active?Re("",!0):($(),te("span",cce,"/"))])}}},uce=Object.freeze(Object.defineProperty({__proto__:null,default:dce},Symbol.toStringTag,{value:"Module"})),_ce={},mce={class:"animate-spin",xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24"},pce=X("circle",{class:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor","stroke-width":"4"},null,-1),fce=X("path",{class:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"},null,-1),hce=[pce,fce];function gce(e,t){return $(),te("svg",mce,hce)}const vce=Sn(_ce,[["render",gce]]),yce={__name:"BaseButton",props:{contentLoading:{type:Boolean,default:!1},defaultClass:{type:String,default:"inline-flex whitespace-nowrap items-center border font-medium focus:outline-none focus:ring-2 focus:ring-offset-2"},tag:{type:String,default:"button"},disabled:{type:Boolean,default:!1},rounded:{type:Boolean,default:!1},loading:{type:Boolean,default:!1},size:{type:String,default:"md",validator:function(e){return["xs","sm","md","lg","xl"].indexOf(e)!==-1}},variant:{type:String,default:"primary",validator:function(e){return["primary","secondary","primary-outline","white","danger","gray"].indexOf(e)!==-1}}},setup(e){const t=e,a=B(()=>({"px-2.5 py-1.5 text-xs leading-4 rounded":t.size==="xs","px-3 py-2 text-sm leading-4 rounded-md":t.size=="sm","px-4 py-2 text-sm leading-5 rounded-md":t.size==="md","px-4 py-2 text-base leading-6 rounded-md":t.size==="lg","px-6 py-3 text-base leading-6 rounded-md":t.size==="xl"})),n=B(()=>{switch(t.size){case"xs":return"32";case"sm":return"38";case"md":return"42";case"lg":return"42";case"xl":return"46";default:return""}}),i=B(()=>({"border-transparent shadow-sm text-white bg-primary-600 hover:bg-primary-700 focus:ring-primary-500":t.variant==="primary","border-transparent text-primary-700 bg-primary-100 hover:bg-primary-200 focus:ring-primary-500":t.variant==="secondary","border-transparent border-solid border-primary-500 font-normal transition ease-in-out duration-150 text-primary-500 hover:bg-primary-200 shadow-inner focus:ring-primary-500":t.variant=="primary-outline","border-gray-200 text-gray-700 bg-white hover:bg-gray-50 focus:ring-primary-500 focus:ring-offset-0":t.variant=="white","border-transparent shadow-sm text-white bg-red-600 hover:bg-red-700 focus:ring-red-500":t.variant==="danger","border-transparent bg-gray-200 border hover:bg-opacity-60 focus:ring-gray-500 focus:ring-offset-0":t.variant==="gray"})),o=B(()=>t.rounded?"!rounded-full":""),s=B(()=>({"-ml-0.5 mr-2 h-4 w-4":t.size=="sm","-ml-1 mr-2 h-5 w-5":t.size==="md","-ml-1 mr-3 h-5 w-5":t.size==="lg"||t.size==="xl"})),l=B(()=>({"text-white":t.variant==="primary","text-primary-700":t.variant==="secondary","text-gray-700":t.variant==="white","text-gray-400":t.variant==="gray"})),d=B(()=>({"ml-2 -mr-0.5 h-4 w-4":t.size=="sm","ml-2 -mr-1 h-5 w-5":t.size==="md","ml-3 -mr-1 h-5 w-5":t.size==="lg"||t.size==="xl"}));return(u,_)=>{const f=Be("BaseContentPlaceholdersBox"),p=Be("BaseContentPlaceholders"),h=Be("BaseCustomTag");return e.contentLoading?($(),Xe(p,{key:0,class:"disabled cursor-normal pointer-events-none"},{default:_e(()=>[G(f,{rounded:!0,style:oo([{width:"96px"},`height: ${n.value}px;`])},null,8,["style"])]),_:1})):($(),Xe(h,{key:1,tag:e.tag,disabled:e.disabled,class:Le([e.defaultClass,a.value,i.value,o.value])},{default:_e(()=>[e.loading?($(),Xe(vce,{key:0,class:Le([s.value,l.value])},null,8,["class"])):it(u.$slots,"left",{key:1,class:Le(s.value)}),it(u.$slots,"default"),it(u.$slots,"right",{class:Le([d.value,l.value])})]),_:3},8,["tag","disabled","class"]))}}},bce=Object.freeze(Object.defineProperty({__proto__:null,default:yce},Symbol.toStringTag,{value:"Module"})),kce={class:"bg-white rounded-lg shadow"},wce={key:0,class:"px-5 py-4 text-black border-b border-gray-100 border-solid"},Dce={key:1,class:"px-5 py-4 border-t border-gray-100 border-solid sm:px-6"},xce={__name:"BaseCard",props:{containerClass:{type:String,default:"px-4 py-5 sm:px-8 sm:py-8"}},setup(e){const t=Ys(),a=B(()=>!!t.header),n=B(()=>!!t.footer);return(i,o)=>($(),te("div",kce,[a.value?($(),te("div",wce,[it(i.$slots,"header")])):Re("",!0),X("div",{class:Le(e.containerClass)},[it(i.$slots,"default")],2),n.value?($(),te("div",Dce,[it(i.$slots,"footer")])):Re("",!0)]))}},Sce=Object.freeze(Object.defineProperty({__proto__:null,default:xce},Symbol.toStringTag,{value:"Module"})),Pce={class:"relative flex items-start"},Ece={class:"flex items-center h-5"},zce=["id","disabled"],Ace={class:"ml-3 text-sm"},Cce=["for"],Tce={key:1,class:"text-gray-500"},jce={__name:"BaseCheckbox",props:{label:{type:String,default:""},description:{type:String,default:""},modelValue:{type:[Boolean,Array],default:!1},id:{type:[Number,String],default:()=>`check_${Math.random().toString(36).substr(2,9)}`},disabled:{type:Boolean,default:!1},checkboxClass:{type:String,default:"w-4 h-4 border-gray-300 rounded cursor-pointer"},setInitialValue:{type:Boolean,default:!1}},emits:["update:modelValue","change"],setup(e,{emit:t}){const a=e,n=t;a.setInitialValue&&n("update:modelValue",a.modelValue);const i=B({get:()=>a.modelValue,set:s=>{n("update:modelValue",s),n("change",s)}}),o=B(()=>a.disabled?"text-gray-300 cursor-not-allowed":"text-primary-600 focus:ring-primary-500");return(s,l)=>($(),te("div",Pce,[X("div",Ece,[Ir(X("input",xn({id:e.id,"onUpdate:modelValue":l[0]||(l[0]=d=>i.value=d)},s.$attrs,{disabled:e.disabled,type:"checkbox",class:[e.checkboxClass,o.value]}),null,16,zce),[[Mm,i.value]])]),X("div",Ace,[e.label?($(),te("label",{key:0,for:e.id,class:Le(`font-medium ${e.disabled?"text-gray-400 cursor-not-allowed":"text-gray-600"} cursor-pointer `)},je(e.label),11,Cce)):Re("",!0),e.description?($(),te("p",Tce,je(e.description),1)):Re("",!0)])]))}},Nce=Object.freeze(Object.defineProperty({__proto__:null,default:jce},Symbol.toStringTag,{value:"Module"})),Ice={__name:"BaseContentPlaceholders",props:{rounded:{type:Boolean,default:!1},centered:{type:Boolean,default:!1},animated:{type:Boolean,default:!0}},setup(e){const t=e,a=B(()=>({"base-content-placeholders":!0,"base-content-placeholders-is-rounded":t.rounded,"base-content-placeholders-is-centered":t.centered,"base-content-placeholders-is-animated":t.animated}));return(n,i)=>($(),te("div",{class:Le(a.value)},[it(n.$slots,"default")],2))}},Fce=Object.freeze(Object.defineProperty({__proto__:null,default:Ice},Symbol.toStringTag,{value:"Module"})),Rce={__name:"BaseContentPlaceholdersBox",props:{circle:{type:Boolean,default:!1},rounded:{type:Boolean,default:!1}},setup(e){const t=e,a=B(()=>({"base-content-circle":t.circle,"base-content-placeholders-is-rounded":t.rounded}));return(n,i)=>($(),te("div",{class:Le(["base-content-placeholders-box",a.value])},null,2))}},Oce=Object.freeze(Object.defineProperty({__proto__:null,default:Rce},Symbol.toStringTag,{value:"Module"})),Mce={class:"base-content-placeholders-heading"},$ce={key:0,class:"base-content-placeholders-heading__box"},Lce=X("div",{class:"base-content-placeholders-heading__content"},[X("div",{class:"base-content-placeholders-heading__title",style:{background:"#eee"}}),X("div",{class:"base-content-placeholders-heading__subtitle"})],-1),Bce={__name:"BaseContentPlaceholdersHeading",props:{box:{type:Boolean,default:!1},rounded:{type:Boolean,default:!1}},setup(e){return(t,a)=>($(),te("div",Mce,[e.box?($(),te("div",$ce)):Re("",!0),Lce]))}},Uce=Object.freeze(Object.defineProperty({__proto__:null,default:Bce},Symbol.toStringTag,{value:"Module"})),Vce={class:"base-content-placeholders-text"},qce={__name:"BaseContentPlaceholdersText",props:{lines:{type:Number,default:4},rounded:{type:Boolean,default:!1}},setup(e){const t=e,a=B(()=>({"base-content-placeholders-is-rounded":t.rounded}));return(n,i)=>($(),te("div",Vce,[($(!0),te(yt,null,Un(e.lines,o=>($(),te("div",{key:o,class:Le([a.value,"w-full h-full base-content-placeholders-text__line"])},null,2))),128))]))}},Wce=Object.freeze(Object.defineProperty({__proto__:null,default:qce},Symbol.toStringTag,{value:"Module"})),hx={id:null,label:null,type:null,name:null,default_answer:null,is_required:!1,placeholder:null,model_type:null,order:1,options:[]},Hce=e=>Qr.createI18n({locale:"en",fallbackLocale:"en",messages:e}),{global:Wi}=Hce,Lg={isImageFile(e){return["image/gif","image/jpeg","image/png"].includes(e)},addClass(e,t){e.classList?e.classList.add(t):e.className+=" "+t},hasClass(e,t){return e.classList?e.classList.contains(t):new RegExp("(^| )"+t+"( |$)","gi").test(e.className)},formatMoney(e,t=0){t||(t={precision:2,thousand_separator:",",decimal_separator:".",symbol:"$"}),e=e/100;let{precision:a,decimal_separator:n,thousand_separator:i,symbol:o,swap_currency_symbol:s}=t;try{a=Math.abs(a),a=isNaN(a)?2:a;const l=e<0?"-":"";let d=parseInt(e=Math.abs(Number(e)||0).toFixed(a)).toString(),u=d.length>3?d.length%3:0,_=`${o}`,f=u?d.substr(0,u)+i:"",p=d.substr(u).replace(/(\d{3})(?=\d)/g,"$1"+i),h=a?n+Math.abs(e-d).toFixed(a).slice(2):"",g=l+f+p+h;return s?g+" "+_:_+" "+g}catch(l){console.error(l)}},mergeSettings(e,t){Object.keys(t).forEach(function(a){a in e&&(e[a]=t[a])})},checkValidUrl(e){return e.includes("http://localhost")||e.includes("http://127.0.0.1")||e.includes("https://localhost")||e.includes("https://127.0.0.1")?!0:!!new RegExp("^(https?:\\/\\/)?((([a-z\\d]([a-z\\d-]*[a-z\\d])*)\\.)+[a-z]{2,}|((\\d{1,3}\\.){3}\\d{1,3}))(\\:\\d+)?(\\/[-a-z\\d%_.~+]*)*(\\?[;&a-z\\d%_.~+=-]*)?(\\#[-a-z\\d_]*)?$","i").test(e)},checkValidDomainUrl(e){return e.includes("localhost")||e.includes("127.0.0.1")?!0:!!new RegExp("^(https?:\\/\\/)?((([a-z\\d]([a-z\\d-]*[a-z\\d])*)\\.)+[a-z]{2,}|((\\d{1,3}\\.){3}\\d{1,3}))(\\:\\d+)?(\\/[-a-z\\d%_.~+]*)*(\\?[;&a-z\\d%_.~+=-]*)?(\\#[-a-z\\d_]*)?$","i").test(e)},fallbackCopyTextToClipboard(e){var t=document.createElement("textarea");t.value=e,t.style.top="0",t.style.left="0",t.style.position="fixed",document.body.appendChild(t),t.focus(),t.select();try{var a=document.execCommand("copy"),n=a?"successful":"unsuccessful";console.log("Fallback: Copying text command was "+n)}catch(i){console.error("Fallback: Oops, unable to copy",i)}document.body.removeChild(t)},copyTextToClipboard(e){if(!navigator.clipboard){this.fallbackCopyTextToClipboard(e);return}navigator.clipboard.writeText(e).then(function(){return!0},function(t){return!1})},arrayDifference(e,t){return e==null?void 0:e.filter(a=>(t==null?void 0:t.indexOf(a))<0)},getBadgeStatusColor(e){switch(e){case"DRAFT":return{bgColor:"#F8EDCB",color:"#744210"};case"PAID":return{bgColor:"#D5EED0",color:"#276749"};case"UNPAID":return{bgColor:"#F8EDC",color:"#744210"};case"SENT":return{bgColor:"rgba(246, 208, 154, 0.4)",color:"#975a16"};case"REJECTED":return{bgColor:"#E1E0EA",color:"#1A1841"};case"ACCEPTED":return{bgColor:"#D5EED0",color:"#276749"};case"VIEWED":return{bgColor:"#C9E3EC",color:"#2c5282"};case"EXPIRED":return{bgColor:"#FED7D7",color:"#c53030"};case"PARTIALLY PAID":return{bgColor:"#C9E3EC",color:"#2c5282"};case"COMPLETED":return{bgColor:"#D5EED0",color:"#276749"};case"DUE":return{bgColor:"#F8EDCB",color:"#744210"};case"YES":return{bgColor:"#D5EED0",color:"#276749"};case"NO":return{bgColor:"#FED7D7",color:"#c53030"}}},getStatusTranslation(e){switch(e){case"DRAFT":return Wi.t("general.draft");case"PAID":return Wi.t("invoices.paid");case"UNPAID":return Wi.t("invoices.unpaid");case"SENT":return Wi.t("general.sent");case"REJECTED":return Wi.t("estimates.rejected");case"ACCEPTED":return Wi.t("estimates.accepted");case"VIEWED":return Wi.t("invoices.viewed");case"EXPIRED":return Wi.t("estimates.expired");case"PARTIALLY PAID":return Wi.t("estimates.partially_paid");case"COMPLETED":return Wi.t("invoices.completed");case"DUE":return Wi.t("general.due");default:return e}},toFormData(e){const t=new FormData;return Object.keys(e).forEach(a=>{yE.isArray(e[a])?t.append(a,JSON.stringify(e[a])):(e[a]===null&&(e[a]=""),t.append(a,e[a]))}),t}};var Kce=Object.create,Gm=Object.defineProperty,Yce=Object.getOwnPropertyDescriptor,Zce=Object.getOwnPropertyNames,Gce=Object.getPrototypeOf,Qce=Object.prototype.hasOwnProperty,Jce=(e,t)=>()=>(e&&(t=e(e=0)),t),Qm=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),Jm=(e,t)=>{for(var a in t)Gm(e,a,{get:t[a],enumerable:!0})},fz=(e,t,a,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of Zce(t))!Qce.call(e,i)&&i!==a&&Gm(e,i,{get:()=>t[i],enumerable:!(n=Yce(t,i))||n.enumerable});return e},Vd=(e,t,a)=>(a=e!=null?Kce(Gce(e)):{},fz(t||!e||!e.__esModule?Gm(a,"default",{value:e,enumerable:!0}):a,e)),Xce=e=>fz(Gm({},"__esModule",{value:!0}),e),ede=(e,t,a)=>{if(!t.has(e))throw TypeError("Cannot "+a)},gx=(e,t,a)=>{if(t.has(e))throw TypeError("Cannot add the same private member more than once");t instanceof WeakSet?t.add(e):t.set(e,a)},Bc=(e,t,a)=>(ede(e,t,"access private method"),a),tde=Qm(e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.default=t;function t(){}t.prototype={diff:function(i,o){var s=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},l=s.callback;typeof s=="function"&&(l=s,s={}),this.options=s;var d=this;function u(P){return l?(setTimeout(function(){l(void 0,P)},0),!0):P}i=this.castInput(i),o=this.castInput(o),i=this.removeEmpty(this.tokenize(i)),o=this.removeEmpty(this.tokenize(o));var _=o.length,f=i.length,p=1,h=_+f;s.maxEditLength&&(h=Math.min(h,s.maxEditLength));var g=[{newPos:-1,components:[]}],y=this.extractCommon(g[0],o,i,0);if(g[0].newPos+1>=_&&y+1>=f)return u([{value:this.join(o),count:o.length}]);function k(){for(var P=-1*p;P<=p;P+=2){var w=void 0,x=g[P-1],E=g[P+1],C=(E?E.newPos:0)-P;x&&(g[P-1]=void 0);var j=x&&x.newPos+1<_,A=E&&0<=C&&C=_&&C+1>=f)return u(a(d,w.components,o,i,d.useLongestToken));g[P]=w}p++}if(l)(function P(){setTimeout(function(){if(p>h)return l();k()||P()},0)})();else for(;p<=h;){var b=k();if(b)return b}},pushComponent:function(i,o,s){var l=i[i.length-1];l&&l.added===o&&l.removed===s?i[i.length-1]={count:l.count+1,added:o,removed:s}:i.push({count:1,added:o,removed:s})},extractCommon:function(i,o,s,l){for(var d=o.length,u=s.length,_=i.newPos,f=_-l,p=0;_+1b.length?w:b}),h.value=i.join(y)}else h.value=i.join(s.slice(f,f+h.count));f+=h.count,h.added||(p+=h.count)}}var k=o[_-1];return _>1&&typeof k.value=="string"&&(k.added||k.removed)&&i.equals("",k.value)&&(o[_-2].value+=k.value,o.pop()),o}function n(i){return{newPos:i.newPos,components:i.components.slice(0)}}}),ade=Qm(e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.diffArrays=i,e.arrayDiff=void 0;var t=a(tde());function a(o){return o&&o.__esModule?o:{default:o}}var n=new t.default;e.arrayDiff=n,n.tokenize=function(o){return o.slice()},n.join=n.removeEmpty=function(o){return o};function i(o,s,l){return n.diff(o,s,l)}}),Xm=Qm((e,t)=>{var a=new Proxy(String,{get:()=>a});t.exports=a}),hz={};Jm(hz,{default:()=>vz,shouldHighlight:()=>gz});var gz,vz,nde=Jce(()=>{gz=()=>!1,vz=String}),ide=Qm(e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.codeFrameColumns=f,e.default=p;var t=(nde(),Xce(hz)),a=i(Xm(),!0);function n(h){if(typeof WeakMap!="function")return null;var g=new WeakMap,y=new WeakMap;return(n=function(k){return k?y:g})(h)}function i(h,g){if(!g&&h&&h.__esModule)return h;if(h===null||typeof h!="object"&&typeof h!="function")return{default:h};var y=n(g);if(y&&y.has(h))return y.get(h);var k={__proto__:null},b=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var P in h)if(P!=="default"&&Object.prototype.hasOwnProperty.call(h,P)){var w=b?Object.getOwnPropertyDescriptor(h,P):null;w&&(w.get||w.set)?Object.defineProperty(k,P,w):k[P]=h[P]}return k.default=h,y&&y.set(h,k),k}var o;function s(h){return h?(o!=null||(o=new a.default.constructor({enabled:!0,level:1})),o):a.default}var l=!1;function d(h){return{gutter:h.grey,marker:h.red.bold,message:h.red.bold}}var u=/\r\n|[\n\r\u2028\u2029]/;function _(h,g,y){let k=Object.assign({column:0,line:-1},h.start),b=Object.assign({},k,h.end),{linesAbove:P=2,linesBelow:w=3}=y||{},x=k.line,E=k.column,C=b.line,j=b.column,A=Math.max(x-(P+1),0),U=Math.min(g.length,C+w);x===-1&&(A=0),C===-1&&(U=g.length);let V=C-x,ee={};if(V)for(let J=0;J<=V;J++){let ie=J+x;if(!E)ee[ie]=!0;else if(J===0){let Te=g[ie-1].length;ee[ie]=[E,Te-E+1]}else if(J===V)ee[ie]=[0,j];else{let Te=g[ie-J].length;ee[ie]=[0,Te]}}else E===j?E?ee[x]=[E,0]:ee[x]=!0:ee[x]=[E,j-E];return{start:A,end:U,markerLines:ee}}function f(h,g,y={}){let k=(y.highlightCode||y.forceColor)&&(0,t.shouldHighlight)(y),b=s(y.forceColor),P=d(b),w=(ee,J)=>k?ee(J):J,x=h.split(u),{start:E,end:C,markerLines:j}=_(g,x,y),A=g.start&&typeof g.start.column=="number",U=String(C).length,V=(k?(0,t.default)(h,y):h).split(u,C).slice(E,C).map((ee,J)=>{let ie=E+1+J,Te=` ${` ${ie}`.slice(-U)} |`,ze=j[ie],ce=!j[ie+1];if(ze){let Ae="";if(Array.isArray(ze)){let Pe=ee.slice(0,Math.max(ze[0]-1,0)).replace(/[^\t]/g," "),He=ze[1]||1;Ae=[` - `,w(P.gutter,Te.replace(/\d/g," "))," ",Pe,w(P.marker,"^").repeat(He)].join(""),ce&&y.message&&(Ae+=" "+w(P.message,y.message))}return[w(P.marker,">"),w(P.gutter,Te),ee.length>0?` ${ee}`:"",Ae].join("")}else return` ${w(P.gutter,Te)}${ee.length>0?` ${ee}`:""}`}).join(` -`);return y.message&&!A&&(V=`${" ".repeat(U+1)}${y.message} -${V}`),k?b.reset(V):V}function p(h,g,y,k={}){if(!l){l=!0;let b="Passing lineNumber and colNumber is deprecated to @babel/code-frame. Please use `codeFrameColumns`.";{let P=new Error(b);P.name="DeprecationWarning",console.warn(new Error(b))}}return y=Math.max(y,0),f(h,{start:{column:y,line:g}},k)}}),ode={};Jm(ode,{__debug:()=>ame,check:()=>eme,doc:()=>aA,format:()=>oA,formatWithCursor:()=>iA,getSupportInfo:()=>tme,util:()=>nA,version:()=>C_e});var sde=(e,t,a,n)=>{if(!(e&&t==null))return t.replaceAll?t.replaceAll(a,n):a.global?t.replace(a,n):t.split(a).join(n)},ep=sde,rde=Vd(ade(),1);function lde(e){let t=e.indexOf("\r");return t>=0?e.charAt(t+1)===` + */var Q=iL,ct=I7,xt=N7;const iP="9.9.0",oP=ct.CoreWarnCodes.__EXTEND_POINT__,xr=Q.incrementer(oP),Aa={FALLBACK_TO_ROOT:oP,NOT_SUPPORTED_PRESERVE:xr(),NOT_SUPPORTED_FORMATTER:xr(),NOT_SUPPORTED_PRESERVE_DIRECTIVE:xr(),NOT_SUPPORTED_GET_CHOICE_INDEX:xr(),COMPONENT_NAME_LEGACY_COMPATIBLE:xr(),NOT_FOUND_PARENT_SCOPE:xr(),IGNORE_OBJ_FLATTEN:xr(),NOTICE_DROP_ALLOW_COMPOSITION:xr()},F7={[Aa.FALLBACK_TO_ROOT]:"Fall back to {type} '{key}' with root locale.",[Aa.NOT_SUPPORTED_PRESERVE]:"Not supported 'preserve'.",[Aa.NOT_SUPPORTED_FORMATTER]:"Not supported 'formatter'.",[Aa.NOT_SUPPORTED_PRESERVE_DIRECTIVE]:"Not supported 'preserveDirectiveContent'.",[Aa.NOT_SUPPORTED_GET_CHOICE_INDEX]:"Not supported 'getChoiceIndex'.",[Aa.COMPONENT_NAME_LEGACY_COMPATIBLE]:"Component name legacy compatible: '{name}' -> 'i18n'",[Aa.NOT_FOUND_PARENT_SCOPE]:"Not found parent scope. use the global scope.",[Aa.IGNORE_OBJ_FLATTEN]:"Ignore object flatten: '{key}' key has an string value",[Aa.NOTICE_DROP_ALLOW_COMPOSITION]:"'allowComposition' option will be dropped in the next major version. For more information, please see 👉 https://tinyurl.com/2p97mcze"};function ii(e,...t){return Q.format(F7[e],...t)}const rP=ct.CoreErrorCodes.__EXTEND_POINT__,Cn=Q.incrementer(rP),Ot={UNEXPECTED_RETURN_TYPE:rP,INVALID_ARGUMENT:Cn(),MUST_BE_CALL_SETUP_TOP:Cn(),NOT_INSTALLED:Cn(),NOT_AVAILABLE_IN_LEGACY_MODE:Cn(),REQUIRED_VALUE:Cn(),INVALID_VALUE:Cn(),CANNOT_SETUP_VUE_DEVTOOLS_PLUGIN:Cn(),NOT_INSTALLED_WITH_PROVIDE:Cn(),UNEXPECTED_ERROR:Cn(),NOT_COMPATIBLE_LEGACY_VUE_I18N:Cn(),BRIDGE_SUPPORT_VUE_2_ONLY:Cn(),MUST_DEFINE_I18N_OPTION_IN_ALLOW_COMPOSITION:Cn(),NOT_AVAILABLE_COMPOSITION_IN_LEGACY:Cn(),__EXTEND_POINT__:Cn()};function Ha(e,...t){return ct.createCompileError(e,null,{messages:M7,args:t})}const M7={[Ot.UNEXPECTED_RETURN_TYPE]:"Unexpected return type in composer",[Ot.INVALID_ARGUMENT]:"Invalid argument",[Ot.MUST_BE_CALL_SETUP_TOP]:"Must be called at the top of a `setup` function",[Ot.NOT_INSTALLED]:"Need to install with `app.use` function",[Ot.UNEXPECTED_ERROR]:"Unexpected error",[Ot.NOT_AVAILABLE_IN_LEGACY_MODE]:"Not available in legacy mode",[Ot.REQUIRED_VALUE]:"Required in value: {0}",[Ot.INVALID_VALUE]:"Invalid value",[Ot.CANNOT_SETUP_VUE_DEVTOOLS_PLUGIN]:"Cannot setup vue-devtools plugin",[Ot.NOT_INSTALLED_WITH_PROVIDE]:"Need to install with `provide` function",[Ot.NOT_COMPATIBLE_LEGACY_VUE_I18N]:"Not compatible legacy VueI18n.",[Ot.BRIDGE_SUPPORT_VUE_2_ONLY]:"vue-i18n-bridge support Vue 2.x only",[Ot.MUST_DEFINE_I18N_OPTION_IN_ALLOW_COMPOSITION]:"Must define ‘i18n’ option or custom block in Composition API with using local scope in Legacy API mode",[Ot.NOT_AVAILABLE_COMPOSITION_IN_LEGACY]:"Not available Compostion API in Legacy API mode. Please make sure that the legacy API mode is working properly"},Tg=Q.makeSymbol("__translateVNode"),Ig=Q.makeSymbol("__datetimeParts"),Ng=Q.makeSymbol("__numberParts"),Fg=Q.makeSymbol("__enableEmitter"),Mg=Q.makeSymbol("__disableEmitter"),sP=Q.makeSymbol("__setPluralRules");Q.makeSymbol("__intlifyMeta");const lP=Q.makeSymbol("__injectWithOption"),Rg=Q.makeSymbol("__dispose"),R7="__VUE_I18N_BRIDGE__";function wd(e){if(!Q.isObject(e))return e;for(const t in e)if(Q.hasOwn(e,t))if(!t.includes("."))Q.isObject(e[t])&&wd(e[t]);else{const a=t.split("."),n=a.length-1;let i=e,o=!1;for(let r=0;r{if("locale"in l&&"resource"in l){const{locale:d,resource:u}=l;d?(r[d]=r[d]||{},Q.deepCopy(u,r[d])):Q.deepCopy(u,r)}else Q.isString(l)&&Q.deepCopy(JSON.parse(l),r)}),i==null&&o)for(const l in r)Q.hasOwn(r,l)&&wd(r[l]);return r}function cP(e){return e.type}function dP(e,t,a){let n=Q.isObject(t.messages)?t.messages:{};"__i18nGlobal"in a&&(n=Km(e.locale.value,{messages:n,__i18n:a.__i18nGlobal}));const i=Object.keys(n);i.length&&i.forEach(o=>{e.mergeLocaleMessage(o,n[o])});{if(Q.isObject(t.datetimeFormats)){const o=Object.keys(t.datetimeFormats);o.length&&o.forEach(r=>{e.mergeDateTimeFormat(r,t.datetimeFormats[r])})}if(Q.isObject(t.numberFormats)){const o=Object.keys(t.numberFormats);o.length&&o.forEach(r=>{e.mergeNumberFormat(r,t.numberFormats[r])})}}}function s2(e){return xt.createVNode(xt.Text,null,e,0)}const l2="__INTLIFY_META__",c2=()=>[],O7=()=>!1;let d2=0;function u2(e){return(t,a,n,i)=>e(a,n,xt.getCurrentInstance()||void 0,i)}const $7=()=>{const e=xt.getCurrentInstance();let t=null;return e&&(t=cP(e)[l2])?{[l2]:t}:null};function Py(e={},t){const{__root:a,__injectWithOption:n}=e,i=a===void 0,o=e.flatJson,r=Q.inBrowser?xt.ref:xt.shallowRef;let l=Q.isBoolean(e.inheritLocale)?e.inheritLocale:!0;const d=r(a&&l?a.locale.value:Q.isString(e.locale)?e.locale:ct.DEFAULT_LOCALE),u=r(a&&l?a.fallbackLocale.value:Q.isString(e.fallbackLocale)||Q.isArray(e.fallbackLocale)||Q.isPlainObject(e.fallbackLocale)||e.fallbackLocale===!1?e.fallbackLocale:d.value),_=r(Km(d.value,e)),f=r(Q.isPlainObject(e.datetimeFormats)?e.datetimeFormats:{[d.value]:{}}),p=r(Q.isPlainObject(e.numberFormats)?e.numberFormats:{[d.value]:{}});let h=a?a.missingWarn:Q.isBoolean(e.missingWarn)||Q.isRegExp(e.missingWarn)?e.missingWarn:!0,g=a?a.fallbackWarn:Q.isBoolean(e.fallbackWarn)||Q.isRegExp(e.fallbackWarn)?e.fallbackWarn:!0,y=a?a.fallbackRoot:Q.isBoolean(e.fallbackRoot)?e.fallbackRoot:!0,k=!!e.fallbackFormat,b=Q.isFunction(e.missing)?e.missing:null,z=Q.isFunction(e.missing)?u2(e.missing):null,w=Q.isFunction(e.postTranslation)?e.postTranslation:null,D=a?a.warnHtmlMessage:Q.isBoolean(e.warnHtmlMessage)?e.warnHtmlMessage:!0,E=!!e.escapeParameter;const T=a?a.modifiers:Q.isPlainObject(e.modifiers)?e.modifiers:{};let N=e.pluralRules||a&&a.pluralRules,j;j=(()=>{i&&ct.setFallbackContext(null);const J={version:iP,locale:d.value,fallbackLocale:u.value,messages:_.value,modifiers:T,pluralRules:N,missing:z===null?void 0:z,missingWarn:h,fallbackWarn:g,fallbackFormat:k,unresolving:!0,postTranslation:w===null?void 0:w,warnHtmlMessage:D,escapeParameter:E,messageResolver:e.messageResolver,messageCompiler:e.messageCompiler,__meta:{framework:"vue"}};J.datetimeFormats=f.value,J.numberFormats=p.value,J.__datetimeFormatters=Q.isPlainObject(j)?j.__datetimeFormatters:void 0,J.__numberFormatters=Q.isPlainObject(j)?j.__numberFormatters:void 0,J.__v_emitter=Q.isPlainObject(j)?j.__v_emitter:void 0;const ie=ct.createCoreContext(J);return i&&ct.setFallbackContext(ie),ie})(),ct.updateFallbackLocale(j,d.value,u.value);function H(){return[d.value,u.value,_.value,f.value,p.value]}const te=xt.computed({get:()=>d.value,set:J=>{d.value=J,j.locale=d.value}}),X=xt.computed({get:()=>u.value,set:J=>{u.value=J,j.fallbackLocale=u.value,ct.updateFallbackLocale(j,d.value,J)}}),oe=xt.computed(()=>_.value),Te=xt.computed(()=>f.value),Ae=xt.computed(()=>p.value);function de(){return Q.isFunction(w)?w:null}function Ce(J){w=J,j.postTranslation=J}function Pe(){return b}function Ke(J){J!==null&&(z=u2(J)),b=J,j.missing=z}function re(J,ie){return J!=="translate"||!ie.resolvedMessage}const Qe=(J,ie,$e,nt,Wt,Pa)=>{H();let Ma;try{ct.setAdditionalMeta($7()),i||(j.fallbackContext=a?ct.getFallbackContext():void 0),Ma=J(j)}finally{ct.setAdditionalMeta(null),i||(j.fallbackContext=void 0)}if($e!=="translate exists"&&Q.isNumber(Ma)&&Ma===ct.NOT_REOSLVED||$e==="translate exists"&&!Ma){const[nn,qn]=ie();if(a&&Q.isString(nn)&&re($e,qn)){y&&(ct.isTranslateFallbackWarn(g,nn)||ct.isTranslateMissingWarn(h,nn))&&Q.warn(ii(Aa.FALLBACK_TO_ROOT,{key:nn,type:$e}));{const{__v_emitter:Ut}=j;Ut&&y&&Ut.emit("fallback",{type:$e,key:nn,to:"global",groupId:`${$e}:${nn}`})}}return a&&y?nt(a):Wt(nn)}else{if(Pa(Ma))return Ma;throw Ha(Ot.UNEXPECTED_RETURN_TYPE)}};function at(...J){return Qe(ie=>Reflect.apply(ct.translate,null,[ie,...J]),()=>ct.parseTranslateArgs(...J),"translate",ie=>Reflect.apply(ie.t,ie,[...J]),ie=>ie,ie=>Q.isString(ie))}function la(...J){const[ie,$e,nt]=J;if(nt&&!Q.isObject(nt))throw Ha(Ot.INVALID_ARGUMENT);return at(ie,$e,Q.assign({resolvedMessage:!0},nt||{}))}function Bt(...J){return Qe(ie=>Reflect.apply(ct.datetime,null,[ie,...J]),()=>ct.parseDateTimeArgs(...J),"datetime format",ie=>Reflect.apply(ie.d,ie,[...J]),()=>ct.MISSING_RESOLVE_VALUE,ie=>Q.isString(ie))}function Ht(...J){return Qe(ie=>Reflect.apply(ct.number,null,[ie,...J]),()=>ct.parseNumberArgs(...J),"number format",ie=>Reflect.apply(ie.n,ie,[...J]),()=>ct.MISSING_RESOLVE_VALUE,ie=>Q.isString(ie))}function Tt(J){return J.map(ie=>Q.isString(ie)||Q.isNumber(ie)||Q.isBoolean(ie)?s2(String(ie)):ie)}const xe={normalize:Tt,interpolate:J=>J,type:"vnode"};function De(...J){return Qe(ie=>{let $e;const nt=ie;try{nt.processor=xe,$e=Reflect.apply(ct.translate,null,[nt,...J])}finally{nt.processor=null}return $e},()=>ct.parseTranslateArgs(...J),"translate",ie=>ie[Tg](...J),ie=>[s2(ie)],ie=>Q.isArray(ie))}function Oe(...J){return Qe(ie=>Reflect.apply(ct.number,null,[ie,...J]),()=>ct.parseNumberArgs(...J),"number format",ie=>ie[Ng](...J),c2,ie=>Q.isString(ie)||Q.isArray(ie))}function rt(...J){return Qe(ie=>Reflect.apply(ct.datetime,null,[ie,...J]),()=>ct.parseDateTimeArgs(...J),"datetime format",ie=>ie[Ig](...J),c2,ie=>Q.isString(ie)||Q.isArray(ie))}function vt(J){N=J,j.pluralRules=N}function S(J,ie){return Qe(()=>{if(!J)return!1;const $e=Q.isString(ie)?ie:d.value,nt=W($e),Wt=j.messageResolver(nt,J);return ct.isMessageAST(Wt)||ct.isMessageFunction(Wt)||Q.isString(Wt)},()=>[J],"translate exists",$e=>Reflect.apply($e.te,$e,[J,ie]),O7,$e=>Q.isBoolean($e))}function x(J){let ie=null;const $e=ct.fallbackWithLocaleChain(j,u.value,d.value);for(let nt=0;nt<$e.length;nt++){const Wt=_.value[$e[nt]]||{},Pa=j.messageResolver(Wt,J);if(Pa!=null){ie=Pa;break}}return ie}function O(J){const ie=x(J);return ie??(a?a.tm(J)||{}:{})}function W(J){return _.value[J]||{}}function Y(J,ie){if(o){const $e={[J]:ie};for(const nt in $e)Q.hasOwn($e,nt)&&wd($e[nt]);ie=$e[J]}_.value[J]=ie,j.messages=_.value}function _e(J,ie){_.value[J]=_.value[J]||{};const $e={[J]:ie};for(const nt in $e)Q.hasOwn($e,nt)&&wd($e[nt]);ie=$e[J],Q.deepCopy(ie,_.value[J]),j.messages=_.value}function Se(J){return f.value[J]||{}}function ge(J,ie){f.value[J]=ie,j.datetimeFormats=f.value,ct.clearDateTimeFormat(j,J,ie)}function we(J,ie){f.value[J]=Q.assign(f.value[J]||{},ie),j.datetimeFormats=f.value,ct.clearDateTimeFormat(j,J,ie)}function ve(J){return p.value[J]||{}}function Ne(J,ie){p.value[J]=ie,j.numberFormats=p.value,ct.clearNumberFormat(j,J,ie)}function Ge(J,ie){p.value[J]=Q.assign(p.value[J]||{},ie),j.numberFormats=p.value,ct.clearNumberFormat(j,J,ie)}d2++,a&&Q.inBrowser&&(xt.watch(a.locale,J=>{l&&(d.value=J,j.locale=J,ct.updateFallbackLocale(j,d.value,u.value))}),xt.watch(a.fallbackLocale,J=>{l&&(u.value=J,j.fallbackLocale=J,ct.updateFallbackLocale(j,d.value,u.value))}));const Ee={id:d2,locale:te,fallbackLocale:X,get inheritLocale(){return l},set inheritLocale(J){l=J,J&&a&&(d.value=a.locale.value,u.value=a.fallbackLocale.value,ct.updateFallbackLocale(j,d.value,u.value))},get availableLocales(){return Object.keys(_.value).sort()},messages:oe,get modifiers(){return T},get pluralRules(){return N||{}},get isGlobal(){return i},get missingWarn(){return h},set missingWarn(J){h=J,j.missingWarn=h},get fallbackWarn(){return g},set fallbackWarn(J){g=J,j.fallbackWarn=g},get fallbackRoot(){return y},set fallbackRoot(J){y=J},get fallbackFormat(){return k},set fallbackFormat(J){k=J,j.fallbackFormat=k},get warnHtmlMessage(){return D},set warnHtmlMessage(J){D=J,j.warnHtmlMessage=J},get escapeParameter(){return E},set escapeParameter(J){E=J,j.escapeParameter=J},t:at,getLocaleMessage:W,setLocaleMessage:Y,mergeLocaleMessage:_e,getPostTranslationHandler:de,setPostTranslationHandler:Ce,getMissingHandler:Pe,setMissingHandler:Ke,[sP]:vt};return Ee.datetimeFormats=Te,Ee.numberFormats=Ae,Ee.rt=la,Ee.te=S,Ee.tm=O,Ee.d=Bt,Ee.n=Ht,Ee.getDateTimeFormat=Se,Ee.setDateTimeFormat=ge,Ee.mergeDateTimeFormat=we,Ee.getNumberFormat=ve,Ee.setNumberFormat=Ne,Ee.mergeNumberFormat=Ge,Ee[lP]=n,Ee[Tg]=De,Ee[Ig]=rt,Ee[Ng]=Oe,Ee[Fg]=J=>{j.__v_emitter=J},Ee[Mg]=()=>{j.__v_emitter=void 0},Ee}function L7(e){const t=Q.isString(e.locale)?e.locale:ct.DEFAULT_LOCALE,a=Q.isString(e.fallbackLocale)||Q.isArray(e.fallbackLocale)||Q.isPlainObject(e.fallbackLocale)||e.fallbackLocale===!1?e.fallbackLocale:t,n=Q.isFunction(e.missing)?e.missing:void 0,i=Q.isBoolean(e.silentTranslationWarn)||Q.isRegExp(e.silentTranslationWarn)?!e.silentTranslationWarn:!0,o=Q.isBoolean(e.silentFallbackWarn)||Q.isRegExp(e.silentFallbackWarn)?!e.silentFallbackWarn:!0,r=Q.isBoolean(e.fallbackRoot)?e.fallbackRoot:!0,l=!!e.formatFallbackMessages,d=Q.isPlainObject(e.modifiers)?e.modifiers:{},u=e.pluralizationRules,_=Q.isFunction(e.postTranslation)?e.postTranslation:void 0,f=Q.isString(e.warnHtmlInMessage)?e.warnHtmlInMessage!=="off":!0,p=!!e.escapeParameterHtml,h=Q.isBoolean(e.sync)?e.sync:!0;e.formatter&&Q.warn(ii(Aa.NOT_SUPPORTED_FORMATTER)),e.preserveDirectiveContent&&Q.warn(ii(Aa.NOT_SUPPORTED_PRESERVE_DIRECTIVE));let g=e.messages;if(Q.isPlainObject(e.sharedMessages)){const E=e.sharedMessages;g=Object.keys(E).reduce((N,j)=>{const q=N[j]||(N[j]={});return Q.assign(q,E[j]),N},g||{})}const{__i18n:y,__root:k,__injectWithOption:b}=e,z=e.datetimeFormats,w=e.numberFormats,D=e.flatJson;return{locale:t,fallbackLocale:a,messages:g,flatJson:D,datetimeFormats:z,numberFormats:w,missing:n,missingWarn:i,fallbackWarn:o,fallbackRoot:r,fallbackFormat:l,modifiers:d,pluralRules:u,postTranslation:_,warnHtmlMessage:f,escapeParameter:p,messageResolver:e.messageResolver,inheritLocale:h,__i18n:y,__root:k,__injectWithOption:b}}function Og(e={},t){{const a=Py(L7(e)),{__extender:n}=e,i={id:a.id,get locale(){return a.locale.value},set locale(o){a.locale.value=o},get fallbackLocale(){return a.fallbackLocale.value},set fallbackLocale(o){a.fallbackLocale.value=o},get messages(){return a.messages.value},get datetimeFormats(){return a.datetimeFormats.value},get numberFormats(){return a.numberFormats.value},get availableLocales(){return a.availableLocales},get formatter(){return Q.warn(ii(Aa.NOT_SUPPORTED_FORMATTER)),{interpolate(){return[]}}},set formatter(o){Q.warn(ii(Aa.NOT_SUPPORTED_FORMATTER))},get missing(){return a.getMissingHandler()},set missing(o){a.setMissingHandler(o)},get silentTranslationWarn(){return Q.isBoolean(a.missingWarn)?!a.missingWarn:a.missingWarn},set silentTranslationWarn(o){a.missingWarn=Q.isBoolean(o)?!o:o},get silentFallbackWarn(){return Q.isBoolean(a.fallbackWarn)?!a.fallbackWarn:a.fallbackWarn},set silentFallbackWarn(o){a.fallbackWarn=Q.isBoolean(o)?!o:o},get modifiers(){return a.modifiers},get formatFallbackMessages(){return a.fallbackFormat},set formatFallbackMessages(o){a.fallbackFormat=o},get postTranslation(){return a.getPostTranslationHandler()},set postTranslation(o){a.setPostTranslationHandler(o)},get sync(){return a.inheritLocale},set sync(o){a.inheritLocale=o},get warnHtmlInMessage(){return a.warnHtmlMessage?"warn":"off"},set warnHtmlInMessage(o){a.warnHtmlMessage=o!=="off"},get escapeParameterHtml(){return a.escapeParameter},set escapeParameterHtml(o){a.escapeParameter=o},get preserveDirectiveContent(){return Q.warn(ii(Aa.NOT_SUPPORTED_PRESERVE_DIRECTIVE)),!0},set preserveDirectiveContent(o){Q.warn(ii(Aa.NOT_SUPPORTED_PRESERVE_DIRECTIVE))},get pluralizationRules(){return a.pluralRules||{}},__composer:a,t(...o){const[r,l,d]=o,u={};let _=null,f=null;if(!Q.isString(r))throw Ha(Ot.INVALID_ARGUMENT);const p=r;return Q.isString(l)?u.locale=l:Q.isArray(l)?_=l:Q.isPlainObject(l)&&(f=l),Q.isArray(d)?_=d:Q.isPlainObject(d)&&(f=d),Reflect.apply(a.t,a,[p,_||f||{},u])},rt(...o){return Reflect.apply(a.rt,a,[...o])},tc(...o){const[r,l,d]=o,u={plural:1};let _=null,f=null;if(!Q.isString(r))throw Ha(Ot.INVALID_ARGUMENT);const p=r;return Q.isString(l)?u.locale=l:Q.isNumber(l)?u.plural=l:Q.isArray(l)?_=l:Q.isPlainObject(l)&&(f=l),Q.isString(d)?u.locale=d:Q.isArray(d)?_=d:Q.isPlainObject(d)&&(f=d),Reflect.apply(a.t,a,[p,_||f||{},u])},te(o,r){return a.te(o,r)},tm(o){return a.tm(o)},getLocaleMessage(o){return a.getLocaleMessage(o)},setLocaleMessage(o,r){a.setLocaleMessage(o,r)},mergeLocaleMessage(o,r){a.mergeLocaleMessage(o,r)},d(...o){return Reflect.apply(a.d,a,[...o])},getDateTimeFormat(o){return a.getDateTimeFormat(o)},setDateTimeFormat(o,r){a.setDateTimeFormat(o,r)},mergeDateTimeFormat(o,r){a.mergeDateTimeFormat(o,r)},n(...o){return Reflect.apply(a.n,a,[...o])},getNumberFormat(o){return a.getNumberFormat(o)},setNumberFormat(o,r){a.setNumberFormat(o,r)},mergeNumberFormat(o,r){a.mergeNumberFormat(o,r)},getChoiceIndex(o,r){return Q.warn(ii(Aa.NOT_SUPPORTED_GET_CHOICE_INDEX)),-1}};return i.__extender=n,i.__enableEmitter=o=>{const r=a;r[Fg]&&r[Fg](o)},i.__disableEmitter=()=>{const o=a;o[Mg]&&o[Mg]()},i}}const Ey={tag:{type:[String,Object]},locale:{type:String},scope:{type:String,validator:e=>e==="parent"||e==="global",default:"parent"},i18n:{type:Object}};function B7({slots:e},t){return t.length===1&&t[0]==="default"?(e.default?e.default():[]).reduce((n,i)=>[...n,...i.type===xt.Fragment?i.children:[i]],[]):t.reduce((a,n)=>{const i=e[n];return i&&(a[n]=i()),a},{})}function uP(e){return xt.Fragment}const U7=xt.defineComponent({name:"i18n-t",props:Q.assign({keypath:{type:String,required:!0},plural:{type:[Number,String],validator:e=>Q.isNumber(e)||!isNaN(e)}},Ey),setup(e,t){const{slots:a,attrs:n}=t,i=e.i18n||Ym({useScope:e.scope,__useComponent:!0});return()=>{const o=Object.keys(a).filter(f=>f!=="_"),r={};e.locale&&(r.locale=e.locale),e.plural!==void 0&&(r.plural=Q.isString(e.plural)?+e.plural:e.plural);const l=B7(t,o),d=i[Tg](e.keypath,l,r),u=Q.assign({},n),_=Q.isString(e.tag)||Q.isObject(e.tag)?e.tag:uP();return xt.h(_,u,d)}}}),od=U7,V7=od;function q7(e){return Q.isArray(e)&&!Q.isString(e[0])}function _P(e,t,a,n){const{slots:i,attrs:o}=t;return()=>{const r={part:!0};let l={};e.locale&&(r.locale=e.locale),Q.isString(e.format)?r.key=e.format:Q.isObject(e.format)&&(Q.isString(e.format.key)&&(r.key=e.format.key),l=Object.keys(e.format).reduce((p,h)=>a.includes(h)?Q.assign({},p,{[h]:e.format[h]}):p,{}));const d=n(e.value,r,l);let u=[r.key];Q.isArray(d)?u=d.map((p,h)=>{const g=i[p.type],y=g?g({[p.type]:p.value,index:h,parts:d}):[p.value];return q7(y)&&(y[0].key=`${p.type}-${h}`),y}):Q.isString(d)&&(u=[d]);const _=Q.assign({},o),f=Q.isString(e.tag)||Q.isObject(e.tag)?e.tag:uP();return xt.h(f,_,u)}}const H7=xt.defineComponent({name:"i18n-n",props:Q.assign({value:{type:Number,required:!0},format:{type:[String,Object]}},Ey),setup(e,t){const a=e.i18n||Ym({useScope:"parent",__useComponent:!0});return _P(e,t,ct.NUMBER_FORMAT_OPTIONS_KEYS,(...n)=>a[Ng](...n))}}),tm=H7,W7=tm,K7=xt.defineComponent({name:"i18n-d",props:Q.assign({value:{type:[Number,Date],required:!0},format:{type:[String,Object]}},Ey),setup(e,t){const a=e.i18n||Ym({useScope:"parent",__useComponent:!0});return _P(e,t,ct.DATETIME_FORMAT_OPTIONS_KEYS,(...n)=>a[Ig](...n))}}),am=K7,Y7=am;function Z7(e,t){const a=e;if(e.mode==="composition")return a.__getInstance(t)||e.global;{const n=a.__getInstance(t);return n!=null?n.__composer:e.global.__composer}}function mP(e){const t=r=>{const{instance:l,modifiers:d,value:u}=r;if(!l||!l.$)throw Ha(Ot.UNEXPECTED_ERROR);const _=Z7(e,l.$);d.preserve&&Q.warn(ii(Aa.NOT_SUPPORTED_PRESERVE));const f=_2(u);return[Reflect.apply(_.t,_,[...m2(f)]),_]};return{created:(r,l)=>{const[d,u]=t(l);Q.inBrowser&&e.global===u&&(r.__i18nWatcher=xt.watch(u.locale,()=>{l.instance&&l.instance.$forceUpdate()})),r.__composer=u,r.textContent=d},unmounted:r=>{Q.inBrowser&&r.__i18nWatcher&&(r.__i18nWatcher(),r.__i18nWatcher=void 0,delete r.__i18nWatcher),r.__composer&&(r.__composer=void 0,delete r.__composer)},beforeUpdate:(r,{value:l})=>{if(r.__composer){const d=r.__composer,u=_2(l);r.textContent=Reflect.apply(d.t,d,[...m2(u)])}},getSSRProps:r=>{const[l]=t(r);return{textContent:l}}}}function _2(e){if(Q.isString(e))return{path:e};if(Q.isPlainObject(e)){if(!("path"in e))throw Ha(Ot.REQUIRED_VALUE,"path");return e}else throw Ha(Ot.INVALID_VALUE)}function m2(e){const{path:t,locale:a,args:n,choice:i,plural:o}=e,r={},l=n||{};return Q.isString(a)&&(r.locale=a),Q.isNumber(i)&&(r.plural=i),Q.isNumber(o)&&(r.plural=o),[t,l,r]}function G7(e,t,...a){const n=Q.isPlainObject(a[0])?a[0]:{},i=!!n.useI18nComponentName,o=Q.isBoolean(n.globalInstall)?n.globalInstall:!0;o&&i&&Q.warn(ii(Aa.COMPONENT_NAME_LEGACY_COMPATIBLE,{name:od.name})),o&&([i?"i18n":od.name,"I18nT"].forEach(r=>e.component(r,od)),[tm.name,"I18nN"].forEach(r=>e.component(r,tm)),[am.name,"I18nD"].forEach(r=>e.component(r,am))),e.directive("t",mP(t))}function Q7(e,t,a){return{beforeCreate(){const n=xt.getCurrentInstance();if(!n)throw Ha(Ot.UNEXPECTED_ERROR);const i=this.$options;if(i.i18n){const o=i.i18n;if(i.__i18n&&(o.__i18n=i.__i18n),o.__root=t,this===this.$root)this.$i18n=p2(e,o);else{o.__injectWithOption=!0,o.__extender=a.__vueI18nExtend,this.$i18n=Og(o);const r=this.$i18n;r.__extender&&(r.__disposer=r.__extender(this.$i18n))}}else if(i.__i18n)if(this===this.$root)this.$i18n=p2(e,i);else{this.$i18n=Og({__i18n:i.__i18n,__injectWithOption:!0,__extender:a.__vueI18nExtend,__root:t});const o=this.$i18n;o.__extender&&(o.__disposer=o.__extender(this.$i18n))}else this.$i18n=e;i.__i18nGlobal&&dP(t,i,i),this.$t=(...o)=>this.$i18n.t(...o),this.$rt=(...o)=>this.$i18n.rt(...o),this.$tc=(...o)=>this.$i18n.tc(...o),this.$te=(o,r)=>this.$i18n.te(o,r),this.$d=(...o)=>this.$i18n.d(...o),this.$n=(...o)=>this.$i18n.n(...o),this.$tm=o=>this.$i18n.tm(o),a.__setInstance(n,this.$i18n)},mounted(){},unmounted(){const n=xt.getCurrentInstance();if(!n)throw Ha(Ot.UNEXPECTED_ERROR);const i=this.$i18n;delete this.$t,delete this.$rt,delete this.$tc,delete this.$te,delete this.$d,delete this.$n,delete this.$tm,i.__disposer&&(i.__disposer(),delete i.__disposer,delete i.__extender),a.__deleteInstance(n),delete this.$i18n}}}function p2(e,t){e.locale=t.locale||e.locale,e.fallbackLocale=t.fallbackLocale||e.fallbackLocale,e.missing=t.missing||e.missing,e.silentTranslationWarn=t.silentTranslationWarn||e.silentFallbackWarn,e.silentFallbackWarn=t.silentFallbackWarn||e.silentFallbackWarn,e.formatFallbackMessages=t.formatFallbackMessages||e.formatFallbackMessages,e.postTranslation=t.postTranslation||e.postTranslation,e.warnHtmlInMessage=t.warnHtmlInMessage||e.warnHtmlInMessage,e.escapeParameterHtml=t.escapeParameterHtml||e.escapeParameterHtml,e.sync=t.sync||e.sync,e.__composer[sP](t.pluralizationRules||e.pluralizationRules);const a=Km(e.locale,{messages:t.messages,__i18n:t.__i18n});return Object.keys(a).forEach(n=>e.mergeLocaleMessage(n,a[n])),t.datetimeFormats&&Object.keys(t.datetimeFormats).forEach(n=>e.mergeDateTimeFormat(n,t.datetimeFormats[n])),t.numberFormats&&Object.keys(t.numberFormats).forEach(n=>e.mergeNumberFormat(n,t.numberFormats[n])),e}const pP=Q.makeSymbol("global-vue-i18n");function J7(e={},t){const a=Q.isBoolean(e.legacy)?e.legacy:!0,n=Q.isBoolean(e.globalInjection)?e.globalInjection:!0,i=a?!!e.allowComposition:!0,o=new Map,[r,l]=e9(e,a),d=Q.makeSymbol("vue-i18n");a&&i&&Q.warn(ii(Aa.NOTICE_DROP_ALLOW_COMPOSITION));function u(p){return o.get(p)||null}function _(p,h){o.set(p,h)}function f(p){o.delete(p)}{const p={get mode(){return a?"legacy":"composition"},get allowComposition(){return i},async install(h,...g){if(h.__VUE_I18N_SYMBOL__=d,h.provide(h.__VUE_I18N_SYMBOL__,p),Q.isPlainObject(g[0])){const b=g[0];p.__composerExtend=b.__composerExtend,p.__vueI18nExtend=b.__vueI18nExtend}let y=null;!a&&n&&(y=c9(h,p.global)),G7(h,p,...g),a&&h.mixin(Q7(l,l.__composer,p));const k=h.unmount;h.unmount=()=>{y&&y(),p.dispose(),k()}},get global(){return l},dispose(){r.stop()},__instances:o,__getInstance:u,__setInstance:_,__deleteInstance:f};return p}}function Ym(e={}){const t=xt.getCurrentInstance();if(t==null)throw Ha(Ot.MUST_BE_CALL_SETUP_TOP);if(!t.isCE&&t.appContext.app!=null&&!t.appContext.app.__VUE_I18N_SYMBOL__)throw Ha(Ot.NOT_INSTALLED);const a=t9(t),n=n9(a),i=cP(t),o=a9(e,i);if(a.mode==="legacy"&&!e.__useComponent){if(!a.allowComposition)throw Ha(Ot.NOT_AVAILABLE_IN_LEGACY_MODE);return s9(t,o,n,e)}if(o==="global")return dP(n,e,i),n;if(o==="parent"){let d=i9(a,t,e.__useComponent);return d==null&&(Q.warn(ii(Aa.NOT_FOUND_PARENT_SCOPE)),d=n),d}const r=a;let l=r.__getInstance(t);if(l==null){const d=Q.assign({},e);"__i18n"in i&&(d.__i18n=i.__i18n),n&&(d.__root=n),l=Py(d),r.__composerExtend&&(l[Rg]=r.__composerExtend(l)),r9(r,t,l),r.__setInstance(t,l)}return l}const X7=e=>{if(!(R7 in e))throw Ha(Ot.NOT_COMPATIBLE_LEGACY_VUE_I18N);return e};function e9(e,t,a){const n=xt.effectScope();{const i=t?n.run(()=>Og(e)):n.run(()=>Py(e));if(i==null)throw Ha(Ot.UNEXPECTED_ERROR);return[n,i]}}function t9(e){{const t=xt.inject(e.isCE?pP:e.appContext.app.__VUE_I18N_SYMBOL__);if(!t)throw Ha(e.isCE?Ot.NOT_INSTALLED_WITH_PROVIDE:Ot.UNEXPECTED_ERROR);return t}}function a9(e,t){return Q.isEmptyObject(e)?"__i18n"in t?"local":"global":e.useScope?e.useScope:"local"}function n9(e){return e.mode==="composition"?e.global:e.global.__composer}function i9(e,t,a=!1){let n=null;const i=t.root;let o=o9(t,a);for(;o!=null;){const r=e;if(e.mode==="composition")n=r.__getInstance(o);else{const l=r.__getInstance(o);l!=null&&(n=l.__composer,a&&n&&!n[lP]&&(n=null))}if(n!=null||i===o)break;o=o.parent}return n}function o9(e,t=!1){return e==null?null:t&&e.vnode.ctx||e.parent}function r9(e,t,a){xt.onMounted(()=>{},t),xt.onUnmounted(()=>{const n=a;e.__deleteInstance(t);const i=n[Rg];i&&(i(),delete n[Rg])},t)}function s9(e,t,a,n={}){const i=t==="local",o=xt.shallowRef(null);if(i&&e.proxy&&!(e.proxy.$options.i18n||e.proxy.$options.__i18n))throw Ha(Ot.MUST_DEFINE_I18N_OPTION_IN_ALLOW_COMPOSITION);const r=Q.isBoolean(n.inheritLocale)?n.inheritLocale:!Q.isString(n.locale),l=xt.ref(!i||r?a.locale.value:Q.isString(n.locale)?n.locale:ct.DEFAULT_LOCALE),d=xt.ref(!i||r?a.fallbackLocale.value:Q.isString(n.fallbackLocale)||Q.isArray(n.fallbackLocale)||Q.isPlainObject(n.fallbackLocale)||n.fallbackLocale===!1?n.fallbackLocale:l.value),u=xt.ref(Km(l.value,n)),_=xt.ref(Q.isPlainObject(n.datetimeFormats)?n.datetimeFormats:{[l.value]:{}}),f=xt.ref(Q.isPlainObject(n.numberFormats)?n.numberFormats:{[l.value]:{}}),p=i?a.missingWarn:Q.isBoolean(n.missingWarn)||Q.isRegExp(n.missingWarn)?n.missingWarn:!0,h=i?a.fallbackWarn:Q.isBoolean(n.fallbackWarn)||Q.isRegExp(n.fallbackWarn)?n.fallbackWarn:!0,g=i?a.fallbackRoot:Q.isBoolean(n.fallbackRoot)?n.fallbackRoot:!0,y=!!n.fallbackFormat,k=Q.isFunction(n.missing)?n.missing:null,b=Q.isFunction(n.postTranslation)?n.postTranslation:null,z=i?a.warnHtmlMessage:Q.isBoolean(n.warnHtmlMessage)?n.warnHtmlMessage:!0,w=!!n.escapeParameter,D=i?a.modifiers:Q.isPlainObject(n.modifiers)?n.modifiers:{},E=n.pluralRules||i&&a.pluralRules;function T(){return[l.value,d.value,u.value,_.value,f.value]}const N=xt.computed({get:()=>o.value?o.value.locale.value:l.value,set:x=>{o.value&&(o.value.locale.value=x),l.value=x}}),j=xt.computed({get:()=>o.value?o.value.fallbackLocale.value:d.value,set:x=>{o.value&&(o.value.fallbackLocale.value=x),d.value=x}}),q=xt.computed(()=>o.value?o.value.messages.value:u.value),H=xt.computed(()=>_.value),te=xt.computed(()=>f.value);function X(){return o.value?o.value.getPostTranslationHandler():b}function oe(x){o.value&&o.value.setPostTranslationHandler(x)}function Te(){return o.value?o.value.getMissingHandler():k}function Ae(x){o.value&&o.value.setMissingHandler(x)}function de(x){return T(),x()}function Ce(...x){return o.value?de(()=>Reflect.apply(o.value.t,null,[...x])):de(()=>"")}function Pe(...x){return o.value?Reflect.apply(o.value.rt,null,[...x]):""}function Ke(...x){return o.value?de(()=>Reflect.apply(o.value.d,null,[...x])):de(()=>"")}function re(...x){return o.value?de(()=>Reflect.apply(o.value.n,null,[...x])):de(()=>"")}function Qe(x){return o.value?o.value.tm(x):{}}function at(x,O){return o.value?o.value.te(x,O):!1}function la(x){return o.value?o.value.getLocaleMessage(x):{}}function Bt(x,O){o.value&&(o.value.setLocaleMessage(x,O),u.value[x]=O)}function Ht(x,O){o.value&&o.value.mergeLocaleMessage(x,O)}function Tt(x){return o.value?o.value.getDateTimeFormat(x):{}}function ce(x,O){o.value&&(o.value.setDateTimeFormat(x,O),_.value[x]=O)}function xe(x,O){o.value&&o.value.mergeDateTimeFormat(x,O)}function De(x){return o.value?o.value.getNumberFormat(x):{}}function Oe(x,O){o.value&&(o.value.setNumberFormat(x,O),f.value[x]=O)}function rt(x,O){o.value&&o.value.mergeNumberFormat(x,O)}const vt={get id(){return o.value?o.value.id:-1},locale:N,fallbackLocale:j,messages:q,datetimeFormats:H,numberFormats:te,get inheritLocale(){return o.value?o.value.inheritLocale:r},set inheritLocale(x){o.value&&(o.value.inheritLocale=x)},get availableLocales(){return o.value?o.value.availableLocales:Object.keys(u.value)},get modifiers(){return o.value?o.value.modifiers:D},get pluralRules(){return o.value?o.value.pluralRules:E},get isGlobal(){return o.value?o.value.isGlobal:!1},get missingWarn(){return o.value?o.value.missingWarn:p},set missingWarn(x){o.value&&(o.value.missingWarn=x)},get fallbackWarn(){return o.value?o.value.fallbackWarn:h},set fallbackWarn(x){o.value&&(o.value.missingWarn=x)},get fallbackRoot(){return o.value?o.value.fallbackRoot:g},set fallbackRoot(x){o.value&&(o.value.fallbackRoot=x)},get fallbackFormat(){return o.value?o.value.fallbackFormat:y},set fallbackFormat(x){o.value&&(o.value.fallbackFormat=x)},get warnHtmlMessage(){return o.value?o.value.warnHtmlMessage:z},set warnHtmlMessage(x){o.value&&(o.value.warnHtmlMessage=x)},get escapeParameter(){return o.value?o.value.escapeParameter:w},set escapeParameter(x){o.value&&(o.value.escapeParameter=x)},t:Ce,getPostTranslationHandler:X,setPostTranslationHandler:oe,getMissingHandler:Te,setMissingHandler:Ae,rt:Pe,d:Ke,n:re,tm:Qe,te:at,getLocaleMessage:la,setLocaleMessage:Bt,mergeLocaleMessage:Ht,getDateTimeFormat:Tt,setDateTimeFormat:ce,mergeDateTimeFormat:xe,getNumberFormat:De,setNumberFormat:Oe,mergeNumberFormat:rt};function S(x){x.locale.value=l.value,x.fallbackLocale.value=d.value,Object.keys(u.value).forEach(O=>{x.mergeLocaleMessage(O,u.value[O])}),Object.keys(_.value).forEach(O=>{x.mergeDateTimeFormat(O,_.value[O])}),Object.keys(f.value).forEach(O=>{x.mergeNumberFormat(O,f.value[O])}),x.escapeParameter=w,x.fallbackFormat=y,x.fallbackRoot=g,x.fallbackWarn=h,x.missingWarn=p,x.warnHtmlMessage=z}return xt.onBeforeMount(()=>{if(e.proxy==null||e.proxy.$i18n==null)throw Ha(Ot.NOT_AVAILABLE_COMPOSITION_IN_LEGACY);const x=o.value=e.proxy.$i18n.__composer;t==="global"?(l.value=x.locale.value,d.value=x.fallbackLocale.value,u.value=x.messages.value,_.value=x.datetimeFormats.value,f.value=x.numberFormats.value):i&&S(x)}),vt}const l9=["locale","fallbackLocale","availableLocales"],f2=["t","rt","d","n","tm","te"];function c9(e,t){const a=Object.create(null);return l9.forEach(i=>{const o=Object.getOwnPropertyDescriptor(t,i);if(!o)throw Ha(Ot.UNEXPECTED_ERROR);const r=xt.isRef(o.value)?{get(){return o.value.value},set(l){o.value.value=l}}:{get(){return o.get&&o.get()}};Object.defineProperty(a,i,r)}),e.config.globalProperties.$i18n=a,f2.forEach(i=>{const o=Object.getOwnPropertyDescriptor(t,i);if(!o||!o.value)throw Ha(Ot.UNEXPECTED_ERROR);Object.defineProperty(e.config.globalProperties,`$${i}`,o)}),()=>{delete e.config.globalProperties.$i18n,f2.forEach(i=>{delete e.config.globalProperties[`$${i}`]})}}ct.registerMessageCompiler(ct.compile);ct.registerMessageResolver(ct.resolveValue);ct.registerLocaleFallbacker(ct.fallbackWithLocaleChain);{const e=Q.getGlobalThis();e.__INTLIFY__=!0,ct.setDevToolsHook(e.__INTLIFY_DEVTOOLS_GLOBAL_HOOK__)}_i.DatetimeFormat=am;_i.I18nD=Y7;_i.I18nInjectionKey=pP;_i.I18nN=W7;_i.I18nT=V7;_i.NumberFormat=tm;_i.Translation=od;_i.VERSION=iP;_i.castToVueI18n=X7;_i.createI18n=J7;_i.useI18n=Ym;_i.vTDirective=mP;var Qs=_i;const d9={dashboard:"Nástěnka",customers:"Zákazníci",items:"Položky",invoices:"Faktury","recurring-invoices":"Opakující se faktury",expenses:"Výdaje",estimates:"Nabídky",payments:"Platby",reports:"Hlášení",settings:"Nastavení",logout:"Odhlásit se",users:"Uživatelé",modules:"Moduly"},u9={add_company:"Přidat firmu",view_pdf:"Zobrazit PDF",copy_pdf_url:"Kopírovat adresu PDF",download_pdf:"Stáhnout PDF",save:"Uložit",create:"Vytvořit",cancel:"Zrušit",update:"Aktualizovat",deselect:"Odznačit",download:"Stáhnout",from_date:"Od data",to_date:"Do data",from:"Od",to:"Do",ok:"OK",yes:"Ano",no:"Ne",sort_by:"Seřadit podle",ascending:"Vzestupně",descending:"Sestupně",subject:"Předmět",body:"Tělo",message:"Zpráva",send:"Odeslat",preview:"Náhled",go_back:"Vrátit se",back_to_login:"Zpět na přihlášení?",home:"Domů",filter:"Filtr",delete:"Smazat",edit:"Upravit",view:"Zobrazit",add_new_item:"Přidat novou položku",clear_all:"Vymazat vše",showing:"Zobrazuji",of:"z",actions:"Akce",subtotal:"MEZISOUČET",discount:"SLEVA",fixed:"Fixní",percentage:"Procentuálně",tax:"DANĚ",total_amount:"CELKOVÉ MNOŽSTVÍ",bill_to:"Příjemce faktury",ship_to:"Doručovací adresa",due:"Datum platnosti",draft:"Koncept",sent:"Odesláno",all:"Vše",select_all:"Vybrat vše",select_template:"Vybrat šablonu",choose_file:"Klikněte zde pro výběr souboru",choose_template:"Zvolit šablonu",choose:"Vybrat",remove:"Odebrat",select_a_status:"Vybrat stav",select_a_tax:"Vybrat daň",search:"Hledat",are_you_sure:"Opravdu?",list_is_empty:"Seznam je prázdný.",no_tax_found:"Žádná daň nebyla nalezena!",four_zero_four:"404",you_got_lost:"Jejda! Ztratili jste se!",go_home:"Návrat domů",test_mail_conf:"Otestovat konfiguraci mailů",send_mail_successfully:"Mail byl úspěšně odeslán",setting_updated:"Nastavení úspěšně aktualizováno",select_state:"Zvolte stát",select_country:"Zvolte zemi",select_city:"Zvolte město",street_1:"Ulice 1",street_2:"Ulice 2",action_failed:"Akce se nezdařila",retry:"Zkusit znovu",choose_note:"Zvolit poznámku",no_note_found:"Nebyly nalezeny žádné poznámky",insert_note:"Vložit poznámku",copied_pdf_url_clipboard:"Adresa PDF zkopírována do schránky!",copied_url_clipboard:"Zkopírováno do schránky!",docs:"Dokumentace",do_you_wish_to_continue:"Přejete si pokračovat?",note:"Poznámka",pay_invoice:"Zaplatit fakturu",login_successfully:"Přihlášení proběhlo úspěšně!",logged_out_successfully:"Odhlášení proběhlo úspěšně",mark_as_default:"Označit jako výchozí"},_9={select_year:"Vybrat rok",cards:{due_amount:"Částka k zaplacení",customers:"Zákazníci",invoices:"Faktury",estimates:"Nabídky",payments:"Platby"},chart_info:{total_sales:"Slevy",total_receipts:"Doklady",total_expense:"Výdaje",net_income:"Čistý příjem",year:"Vybrat rok"},monthly_chart:{title:"Prodeje a výdaje"},recent_invoices_card:{title:"Splatné faktury",due_on:"Splatnost",customer:"Zákazník",amount_due:"Splatná částka",actions:"Akce",view_all:"Zobrazit vše"},recent_estimate_card:{title:"Nedávné nabídky",date:"Datum",customer:"Zákazník",amount_due:"Částka k zaplacení",actions:"Akce",view_all:"Zobrazit vše"}},m9={name:"Jméno",description:"Popis",percent:"Procento",compound_tax:"Kombinovaná daň"},p9={search:"Hledat...",customers:"Zákazníci",users:"Uživatelé",no_results_found:"Nebyly nalezeny žádné výsledky"},f9={label:"Přepnout firmy",no_results_found:"Nebyly nalezeny žádné výsledky",add_new_company:"Přidat firmu",new_company:"Nová firma",created_message:"Firma úspěšně vytvořena"},h9={today:"Dnes",this_week:"Tento týden",this_month:"Tento měsíc",this_quarter:"Toto čtvrtletí",this_year:"Tento rok",previous_week:"Předchozí týden",previous_month:"Předchozí měsíc",previous_quarter:"Předchozí čtvrtletí",previous_year:"Předchozí rok",custom:"Vlastní"},g9={title:"Zákazníci",prefix:"Prefix",add_customer:"Přidat zákazníka",contacts_list:"Seznam zákazníků",name:"Jméno",mail:"E-mail | E-maily",statement:"Výpis",display_name:"Zobrazené jméno",primary_contact_name:"Jméno primárního kontaktu",contact_name:"Jméno kontaktu",amount_due:"Částka k zaplacení",email:"Email",address:"Adresa",phone:"Telefon",website:"Webová stránka",overview:"Přehled",invoice_prefix:"Prefix pro faktury",estimate_prefix:"Prefix pro nabídky",payment_prefix:"Prefix pro platby",enable_portal:"Povolit portál",country:"Země",state:"Stát",city:"Město",zip_code:"PSČ",added_on:"Přidáno dne",action:"Akce",password:"Heslo",confirm_password:"Potvrdit heslo",street_number:"Číslo ulice",primary_currency:"Primární měna",description:"Popis",add_new_customer:"Přidat nového zákazníka",save_customer:"Uložit zákazníka",update_customer:"Aktualizovat zákazníka",customer:"Zákazník | Zákazníci",new_customer:"Nový zákazník",edit_customer:"Upravit zákazníka",basic_info:"Základní informace",portal_access:"Přístup do portálu",portal_access_text:"Chcete povolit tomuto zákazníkovi možnost přihlásit se na zákaznický portál?",portal_access_url:"URL pro přihlášení do zákaznického portálu",portal_access_url_help:"Zkopírujte a pošlete výše uvedenou adresu URL vašemu zákazníkovi pro poskytnutí přístupu.",billing_address:"Fakturační adresa",shipping_address:"Doručovací adresa",copy_billing_address:"Zkopírovat z fakturace",no_customers:"Dosud žádní zákazníci!",no_customers_found:"Nebyli nalezeni žádní zákazníci!",no_contact:"Žádný kontakt",no_contact_name:"Bez jména kontaktu",list_of_customers:"Tato sekce bude obsahovat seznam zákazníků.",primary_display_name:"Primární zobrazované jméno",select_currency:"Vybrat měnu",select_a_customer:"Vybrat zákazníka",type_or_click:"Zadejte nebo klikněte pro výběr",new_transaction:"Nová transakce",no_matching_customers:"Neexistují žádní odpovídající zákazníci!",phone_number:"Telefonní číslo",create_date:"Datum vytvoření",confirm_delete:"Nebudete moci obnovit tohoto zákazníka a všechny jeho faktury, odhady a platby. | Nebudete moci obnovit tyto zákazníky a všechny jejich faktury, odhady a platby.",created_message:"Zákazník úspěšně vytvořen",updated_message:"Zákazník úspěšně upraven",address_updated_message:"Adresa úspěšně aktualizována",deleted_message:"Zákazník úspěšně smazán | Zákazníci úspěšně smazáni",edit_currency_not_allowed:"Po vytvoření transakce nelze změnit měnu."},v9={title:"Položky",items_list:"Seznam položek",name:"Název",unit:"Jednotka",description:"Popis",added_on:"Přidáno",price:"Cena",date_of_creation:"Datum vytvoření",not_selected:"Není vybrána žádná položka",action:"Akce",add_item:"Přidat položku",save_item:"Uložit položku",update_item:"Aktualizovat položku",item:"Položka | Položky",add_new_item:"Přidat novou položku",new_item:"Nová položka",edit_item:"Upravit položku",no_items:"Zatím žádné položky!",list_of_items:"Tato sekce bude obsahovat seznam položek.",select_a_unit:"vyberte jednotku",taxes:"Daně",item_attached_message:"Nelze odstranit položku, která se již používá",confirm_delete:"Nebudete moci obnovit tuto položku | Nebudete moci obnovit tyto položky",created_message:"Položka byla úspěšně vytvořena",updated_message:"Položka úspěšně upravena",deleted_message:"Položka byla úspěšně odstraněna | Položky byly úspěšně odstraněny"},y9={title:"Nabídky",accept_estimate:"Přijmout nabídku",reject_estimate:"Odmítnout nabídku",estimate:"Nabídka | Nabídky",estimates_list:"Seznam nabídek",days:"{days} dní",months:"{months} měsíc",years:"{years} rok",all:"Vše",paid:"Zaplacené",unpaid:"Neplacené",customer:"ZÁKAZNÍK",ref_no:"REFERENČNÍ ČÍSLO",number:"ČÍSLO",amount_due:"ČÁSTKA K ZAPLACENÍ",partially_paid:"Částečně zaplaceno",total:"Celkem",discount:"Sleva",sub_total:"Mezisoučet",estimate_number:"Číslo nabídky",ref_number:"Referenční číslo",contact:"Kontakt",add_item:"Přidat položku",date:"Datum",due_date:"Datum splatnosti",expiry_date:"Datum expirace",status:"Stav",add_tax:"Přidat daň",amount:"Částka",action:"Akce",notes:"Poznámky",tax:"Daň",estimate_template:"Šablona",convert_to_invoice:"Převést na fakturu",mark_as_sent:"Označit jako odeslané",send_estimate:"Odeslat nabídku",resend_estimate:"Znovu odeslat nabídku",record_payment:"Zaznamenat platbu",add_estimate:"Přidat nabídku",save_estimate:"Uložit nabídku",confirm_conversion:"Tento odhad bude použit k vytvoření nové faktury.",conversion_message:"Faktura byla úspěšně vytvořena",confirm_send_estimate:"Tento odhad bude zaslán e-mailem zákazníkovi",confirm_mark_as_sent:"Tento odhad bude označen jako odeslaný",confirm_mark_as_accepted:"Tento odhad bude označen jako Přijatý",confirm_mark_as_rejected:"Tento odhad bude označen jako Odmítnutý",no_matching_estimates:"Neexistují žádné odpovídající odhady!",mark_as_sent_successfully:"Odhad byl označen jako úspěšně odeslán",send_estimate_successfully:"Odhad byl úspěšně odeslán",errors:{required:"Pole je povinné"},accepted:"Přijato",rejected:"Odmítnuto",expired:"Vypršela platnost",sent:"Odesláno",draft:"Koncept",viewed:"Zobrazené",declined:"Odmítnuto",new_estimate:"Nový odhad",add_new_estimate:"Přidat nový odhad",update_Estimate:"Aktualizovat odhad",edit_estimate:"Upravit odhad",items:"položky",Estimate:"Odhad | Odhady",add_new_tax:"Přidat novou daň",no_estimates:"Zatím žádné odhady!",list_of_estimates:"Tato sekce bude obsahovat seznam odhadů.",mark_as_rejected:"Označit jako odmítnuté",mark_as_accepted:"Označit jako přijaté",marked_as_accepted_message:"Odhad označen jako přijatý",marked_as_rejected_message:"Odhad označen jako odmítnutý",confirm_delete:"Nebudete moci obnovit tento odhad | Nebudete moci obnovit tyto odhady",created_message:"Odhad úspěšně vytvořen",updated_message:"Odhad úspěšně upraven",deleted_message:"Odhad úspěšně odstraněn | Odhady úspěšně odstraněny",something_went_wrong:"něco se nezdařilo",item:{title:"Název položky",description:"Popis",quantity:"Množství",price:"Cena",discount:"Sleva",total:"Celkem",total_discount:"Celková sleva",sub_total:"Mezisoučet",tax:"Daň",amount:"Množství",select_an_item:"Pište nebo klikněte pro výběr položky",type_item_description:"Zadejte popis položky (volitelné)"},mark_as_default_estimate_template_description:"Je-li povoleno, bude vybraná šablona automaticky vybrána pro nové nabídky."},b9={title:"Faktury",download:"Stáhnout",pay_invoice:"Zaplatit fakturu",invoices_list:"Seznam faktur",invoice_information:"Informace o faktuře",days:"{days} dní",months:"{months} měsíc",years:"{years} rok",all:"Vše",paid:"Zaplacené",unpaid:"Neplacené",viewed:"Zobrazené",overdue:"Po splatnosti",completed:"Dokončené",customer:"ZÁKAZNÍK",paid_status:"STAV PLATBY",ref_no:"REFERENČNÍ ČÍSLO",number:"ČÍSLO",amount_due:"ČÁSTKA K ZAPLACENÍ",partially_paid:"Částečně zaplaceno",total:"Celkem",discount:"Sleva",sub_total:"Mezisoučet",invoice:"Faktura | Faktury",invoice_number:"Číslo faktury",ref_number:"Referenční číslo",contact:"Kontakt",add_item:"Přidat položku",date:"Datum",due_date:"Datum splatnosti",status:"Stav",add_tax:"Přidat daň",amount:"Částka",action:"Akce",notes:"Poznámky",view:"Zobrazit",send_invoice:"Odeslat fakturu",resend_invoice:"Znovu odeslat fakturu",invoice_template:"Šablona faktury",conversion_message:"Faktura byla úspěšně naklonována",template:"Vybrat šablonu",mark_as_sent:"Označit jako odeslané",confirm_send_invoice:"Tato faktura bude zaslána e-mailem zákazníkovi",invoice_mark_as_sent:"Tato faktura bude označena jako odeslaná",confirm_mark_as_accepted:"Tato faktura bude označena jako přijatá",confirm_mark_as_rejected:"Tato faktura bude označena jako odmítnutá",confirm_send:"Tato faktura bude zaslána e-mailem zákazníkovi",invoice_date:"Datum fakturace",record_payment:"Zaznamenat platbu",add_new_invoice:"Přidat novou fakturu",update_expense:"Aktualizovat výdaj",edit_invoice:"Upravit fakturu",new_invoice:"Nová faktura",save_invoice:"Uložit fakturu",update_invoice:"Upravit fakturu",add_new_tax:"Přidat novou daň",no_invoices:"Zatím žádné faktury!",mark_as_rejected:"Označit jako odmítnuté",mark_as_accepted:"Označit jako přijaté",list_of_invoices:"Tato sekce bude obsahovat seznam faktur.",select_invoice:"Vybrat fakturu",no_matching_invoices:"Neexistují žádné odpovídající faktury!",mark_as_sent_successfully:"Faktura označena jako úspěšně odeslaná",invoice_sent_successfully:"Faktura byla úspěšně odeslána",cloned_successfully:"Faktura úspěšně naklonována",clone_invoice:"Naklonovat fakturu",confirm_clone:"Tato faktura bude naklonována do nové faktury",item:{title:"Název položky",description:"Popis",quantity:"Množství",price:"Cena",discount:"Sleva",total:"Celkem",total_discount:"Celková sleva",sub_total:"Mezisoučet",tax:"Daň",amount:"Množství",select_an_item:"Pište nebo klikněte pro výběr položky",type_item_description:"Zadejte popis položky (volitelné)"},payment_attached_message:"Na jedné z vybraných faktur je již přiložena platba. Nezapomeňte nejprve odstranit připojené platby, abyste mohli pokračovat s odstraněním",confirm_delete:"Nebudete moci obnovit tuto fakturu | Nebudete moci obnovit tyto faktury",created_message:"Faktura byla úspěšně vytvořena",updated_message:"Faktura byla úspěšně upravena",deleted_message:"Faktura byla úspěšně odstraněna | Faktury byly úspěšně odstraněny",marked_as_sent_message:"Faktura označena jako úspěšně odeslaná",something_went_wrong:"něco se nezdařilo",invalid_due_amount_message:"Celková částka faktury nemůže být nižší než celková částka zaplacená za tuto fakturu. Chcete-li pokračovat, upravte fakturu nebo smažte související platby.",mark_as_default_invoice_template_description:"Je-li povoleno, bude vybraná šablona automaticky vybrána pro nové faktury."},k9={title:"Opakující se faktury",invoices_list:"Seznam opakujících se faktur",days:"{days} dní",months:"{months} měsíc",years:"{years} rok",all:"Všechny",paid:"Zaplacené",unpaid:"Neplacené",viewed:"Zobrazené",overdue:"Po splatnosti",active:"Aktivní",completed:"Dokončené",customer:"ZÁKAZNÍK",paid_status:"STAV PLATBY",ref_no:"REFERENČNÍ ČÍSLO",number:"ČÍSLO",amount_due:"ČÁSTKA K ZAPLACENÍ",partially_paid:"Částečně zaplaceno",total:"Celkem",discount:"Sleva",sub_total:"Mezisoučet",invoice:"Opakující se faktura | Opakující se faktury",invoice_number:"Číslo opakující se faktury",next_invoice_date:"Datum další fakturace",ref_number:"Referenční číslo",contact:"Kontakt",add_item:"Přidat položku",date:"Datum",limit_by:"Omezit podle",limit_date:"Omezit datum",limit_count:"Omezit počet",count:"Počet",status:"Stav",select_a_status:"Vyberte stav",working:"Pracuje",on_hold:"Čekající",complete:"Dokončeno",add_tax:"Přidat daň",amount:"Množství",action:"Akce",notes:"Poznámky",view:"Zobrazit",basic_info:"Základní informace",send_invoice:"Odeslat opakující se fakturu",auto_send:"Automaticky odeslat",resend_invoice:"Znovu odeslat opakující se fakturu",invoice_template:"Šablona opakující se faktury",conversion_message:"Opakující se faktura byla úspěšně naklonována",template:"Šablona",mark_as_sent:"Označit jako odeslané",confirm_send_invoice:"Tato opakující se faktura bude odeslána e-mailem zákazníkovi",invoice_mark_as_sent:"Tato opakující se faktura bude označena jako odeslaná",confirm_send:"Tato opakující se faktura bude odeslána e-mailem zákazníkovi",starts_at:"Počáteční datum",due_date:"Splatnost faktury",record_payment:"Zaznamenat platbu",add_new_invoice:"Přidat novou opakující se fakturu",update_expense:"Aktualizovat výdaje",edit_invoice:"Upravit opakující se fakturu",new_invoice:"Přidat novou opakující se fakturu",send_automatically:"Odeslat automaticky",send_automatically_desc:"Povolte, pokud chcete automaticky odeslat fakturu zákazníkovi po jejím vytvoření.",save_invoice:"Uložit opakující se fakturu",update_invoice:"Upravit opakující se fakturu",add_new_tax:"Přidat novou daň",no_invoices:"Zatím žádné opakující se faktury!",mark_as_rejected:"Označit jako odmítnuté",mark_as_accepted:"Označit jako přijaté",list_of_invoices:"Tato sekce bude obsahovat seznam opakujících se faktur.",select_invoice:"Vybrat fakturu",no_matching_invoices:"Neexistují žádné odpovídající opakující se faktury!",mark_as_sent_successfully:"Opakující se faktura označena jako úspěšně odeslaná",invoice_sent_successfully:"Opakující se faktura byla úspěšně odeslána",cloned_successfully:"Opakující se faktura úspěšně naklonována",clone_invoice:"Naklonovat opakující se fakturu",confirm_clone:"Tato opakující se faktura bude naklonována do nové opakující se faktury",add_customer_email:"Pro automatické odesílání faktur prosím přidejte e-mailovou adresu tohoto zákazníka.",item:{title:"Název položky",description:"Popis",quantity:"Množství",price:"Cena",discount:"Sleva",total:"Celkem",total_discount:"Celková sleva",sub_total:"Mezisoučet",tax:"Daň",amount:"Množství",select_an_item:"Pište nebo klikněte pro výběr položky",type_item_description:"Zadejte popis položky (volitelné)"},frequency:{title:"Četnost",select_frequency:"Vybrat četnost",minute:"Minuta",hour:"Hodina",day_month:"Den v měsíci",month:"Měsíc",day_week:"Den v týdnu"},confirm_delete:"Nebudete moci obnovit tuto fakturu | Nebudete moci obnovit tyto faktury",created_message:"Opakující se faktura byla úspěšně vytvořena",updated_message:"Opakující se faktura úspěšně upravena",deleted_message:"Opakující se faktura úspěšně smazána | Opakující se faktury úspěšně odstraněny",marked_as_sent_message:"Opakující se faktura označena jako úspěšně odeslána",user_email_does_not_exist:"E-mail uživatele neexistuje",something_went_wrong:"něco se nezdařilo",invalid_due_amount_message:"Celková částka opakované faktury nemůže být nižší než celková částka zaplacená za tuto opakující se fakturu. Pro pokračování aktualizujte fakturu nebo odstraňte související platby."},w9={title:"Platby",payments_list:"Seznam plateb",record_payment:"Zaznamenat platbu",customer:"Zákazník",date:"Datum",amount:"Množství",action:"Akce",payment_number:"Číslo platby",payment_mode:"Platební metoda",invoice:"Faktura",note:"Poznámka",add_payment:"Přidat platbu",new_payment:"Nová platba",edit_payment:"Upravit platbu",view_payment:"Zobrazit platbu",add_new_payment:"Přidat novou platbu",send_payment_receipt:"Odeslat potvrzení o platbě",send_payment:"Odeslat platbu",save_payment:"Uložit platbu",update_payment:"Upravit platbu",payment:"Platba | Platby",no_payments:"Zatím žádné platby!",not_selected:"Nevybráno",no_invoice:"Žádná faktura",no_matching_payments:"Neexistují žádné odpovídající platby!",list_of_payments:"Tato sekce bude obsahovat seznam plateb.",select_payment_mode:"Vyberte platební metodu",confirm_mark_as_sent:"Tento odhad bude označen jako odeslaný",confirm_send_payment:"Tato platba bude odeslána e-mailem zákazníkovi",send_payment_successfully:"Platba byla úspěšně odeslána",something_went_wrong:"něco se nezdařilo",confirm_delete:"Tuto platbu nebudete moci obnovit | Tyto platby nebudete moci obnovit",created_message:"Platba úspěšně vytvořena",updated_message:"Platba úspěšně upravena",deleted_message:"Platba úspěšně odstraněna | Platby úspěšně odstraněny",invalid_amount_message:"Částka platby je neplatná"},x9={title:"Výdaje",expenses_list:"Seznam výdajů",select_a_customer:"Vyberte zákazníka",expense_title:"Nadpis",customer:"Zákazník",currency:"Měna",contact:"Kontakt",category:"Kategorie",from_date:"Od data",to_date:"Do data",expense_date:"Datum",description:"Popis",receipt:"Doklad",amount:"Částka",action:"Akce",not_selected:"Nevybráno",note:"Poznámka",category_id:"ID kategorie",date:"Datum",add_expense:"Přidat výdaj",add_new_expense:"Přidat nový výdaj",save_expense:"Uložit výdaj",update_expense:"Upravit výdaj",download_receipt:"Stáhnout doklad",edit_expense:"Upravit výdaj",new_expense:"Nový výdaj",expense:"Výdaj | Výdaje",no_expenses:"Zatím žádné výdaje!",list_of_expenses:"Tato sekce bude obsahovat seznam výdajů.",confirm_delete:"Nebudete moci obnovit tento výdaj | Nebudete moci obnovit tyto výdaje",created_message:"Výdaj úspěšně vytvořen",updated_message:"Výdaj úspěšně aktualizován",deleted_message:"Výdaj byl úspěšně odstraněn | Výdaje byly úspěšně odstraněny",categories:{categories_list:"Seznam kategorií",title:"Nadpis",name:"Název",description:"Popis",amount:"Množství",actions:"Akce",add_category:"Přidat kategorii",new_category:"Nová kategorie",category:"Kategorie | Kategorie",select_a_category:"Vyberte kategorii"}},D9={email:"E-mail",password:"Heslo",forgot_password:"Zapomněli jste heslo?",or_signIn_with:"nebo se přihlašte pomocí",login:"Přihlášení",register:"Registrace",reset_password:"Obnovit heslo",password_reset_successfully:"Obnovení hesla proběhlo úspěšně",enter_email:"Zadejte e-mail",enter_password:"Zadejte heslo",retype_password:"Zadejte heslo znovu"},S9={buy_now:"Koupit",install:"Instalovat",price:"Cena",download_zip_file:"Stáhnout soubor ZIP",unzipping_package:"Rozbalování balíku",copying_files:"Kopírování souborů",deleting_files:"Odstraňování nepoužitých souborů",completing_installation:"Dokončování instalace",update_failed:"Aktualizace se nezdařila",install_success:"Modul byl úspěšně nainstalován!",customer_reviews:"Recenze",license:"Licence",faq:"Často kladené dotazy (FAQ)",monthly:"Měsíčně",yearly:"Ročně",updated:"Aktualizováno",version:"Verze",disable:"Zakázat",module_disabled:"Modul zakázán",enable:"Povolit",module_enabled:"Modul povolen",update_to:"Aktualizovat na",module_updated:"Modul byl úspěšně aktualizován!",title:"Moduly",module:"Modul | Moduly",api_token:"API token",invalid_api_token:"Neplatný API token.",other_modules:"Další moduly",view_all:"Zobrazit vše",no_reviews_found:"Pro tento modul zatím neexistují žádné recenze!",module_not_purchased:"Modul není zakoupený",module_not_found:"Modul nebyl nalezen",version_not_supported:"This module version doesn't support the current version of InvoiceShelf",last_updated:"Naposledy aktualizováno",connect_installation:"Připojte vaši instalaci",api_token_description:"Přihlaste se k {url} a připojte tuto instalaci zadáním API tokenu. Vaše zakoupené moduly se zde zobrazí po navázání připojení.",view_module:"Zobrazit modul",update_available:"Je k dispozici aktualizace",purchased:"Zakoupeno",installed:"Nainstalováno",no_modules_installed:"Nejsou nainstalovány žádné moduly!",disable_warning:"Všechna nastavení pro tuto konkrétní položku budou vrácena zpět.",what_you_get:"Co získáte"},z9={title:"Uživatelé",users_list:"Seznam uživatelů",name:"Jméno",description:"Popis",added_on:"Přidáno dne",date_of_creation:"Datum vytvoření",action:"Akce",add_user:"Přidat uživatele",save_user:"Uložit uživatele",update_user:"Upravit uživatele",user:"Uživatel | Uživatelé",add_new_user:"Přidat nového uživatele",new_user:"Nový uživatel",edit_user:"Upravit uživatele",no_users:"Zatím žádní uživatelé!",list_of_users:"Tato sekce bude obsahovat seznam uživatelů.",email:"E-mail",phone:"Telefon",password:"Heslo",user_attached_message:"Nelze odstranit položku, která se již používá",confirm_delete:"Nebudete moci obnovit tohoto uživatele | Nebudete schopni obnovit tyto uživatele",created_message:"Uživatel byl úspěšně vytvořen",updated_message:"Uživatel byl úspěšně upraven",deleted_message:"Uživatel byl úspěšně odstraněn | Uživatelé byli úspěšně odstraněni",select_company_role:"Vyberte roli pro {company}",companies:"Společnosti"},P9={title:"Hlášení",from_date:"Datum od",to_date:"Do data",status:"Stav",paid:"Zaplaceno",unpaid:"Nezaplaceno",download_pdf:"Stáhnout PDF",view_pdf:"Zobrazit PDF",update_report:"Upravit hlášení",report:"Hlášení | Hlášení",profit_loss:{profit_loss:"Zisk a ztráta",to_date:"Do data",from_date:"Od data",date_range:"Vybrat časový rozsah"},sales:{sales:"Prodeje",date_range:"Vybrat časový rozsah",to_date:"Do data",from_date:"Od data",report_type:"Typ hlášení"},taxes:{taxes:"Daně",to_date:"Do data",from_date:"Od data",date_range:"Vybrat časový rozsah"},errors:{required:"Pole je povinné"},invoices:{invoice:"Faktura",invoice_date:"Datum fakturace",due_date:"Datum splatnosti",amount:"Množství",contact_name:"Jméno kontaktu",status:"Stav"},estimates:{estimate:"Odhad",estimate_date:"Datum odhadu",due_date:"Datum splatnosti",estimate_number:"Číslo odhadu",ref_number:"Referenční číslo",amount:"Množství",contact_name:"Jméno kontaktu",status:"Stav"},expenses:{expenses:"Výdaje",category:"Kategorie",date:"Datum",amount:"Množství",to_date:"Do data",from_date:"Od data",date_range:"Vyberte rozsah data"}},E9={menu_title:{account_settings:"Nastavení účtu",company_information:"Informace o společnosti",customization:"Přizpůsobení",preferences:"Preference",notifications:"Oznámení",tax_types:"Typy daní",expense_category:"Kategorie výdajů",update_app:"Aktualizace aplikace",backup:"Zálohování",file_disk:"Souborový disk",custom_fields:"Vlastní pole",payment_modes:"Způsoby plateb",notes:"Poznámky",exchange_rate:"Směnný kurz",address_information:"Adresa"},address_information:{section_description:" Adresu můžete aktualizovat pomocí formuláře níže."},title:"Nastavení",setting:"Nastavení | Nastavení",general:"Obecné",language:"Jazyk",primary_currency:"Primární měna",timezone:"Časová zóna",date_format:"Formát data",currencies:{title:"Měny",currency:"Měna | Měny",currencies_list:"Seznam měn",select_currency:"Vyberte měnu",name:"Název",code:"Kód",symbol:"Symbol",precision:"Přesnost",thousand_separator:"Oddělovač tisíců",decimal_separator:"Oddělovač desetinných míst",position:"Umístění",position_of_symbol:"Umístění symbolu",right:"Vpravo",left:"Vlevo",action:"Akce",add_currency:"Přidat měnu"},mail:{host:"Hostitel e-mailu",port:"Port e-mailu",driver:"Ovladač e-mailů",secret:"Tajný klíč",mailgun_secret:"Mailgun Secret",mailgun_domain:"Doména",mailgun_endpoint:"Mailgun Endpoint",ses_secret:"SES Secret",ses_key:"SES Key",password:"E-mailové heslo",username:"Uživatelské jméno pro e-mail",mail_config:"Konfigurace e-mailu",from_name:"Jméno odesílatele",from_mail:"Z e-mailové adresy",encryption:"Šifrování e-mailu",mail_config_desc:"Níže je uveden formulář pro konfiguraci e-mailového ovladače pro odesílání e-mailů z aplikace. Můžete také nakonfigurovat poskytovatele třetích stran, jako je Sendgrid, SES atd."},pdf:{title:"Nastavení PDF",footer_text:"Text zápatí",pdf_layout:"Rozvržení PDF"},company_info:{company_info:"Údaje o společnosti",company_name:"Název společnosti",company_logo:"Logo společnosti",section_description:"Informace o vaší společnosti, která bude zobrazena na fakturách, odhadech a dalších dokladech vytvořených v InvoiceShelfu.",phone:"Telefon",country:"Země",state:"Stát",city:"Město",address:"Adresa",zip:"PSČ",save:"Uložit",delete:"Smazat",updated_message:"Informace o společnosti byly úspěšně aktualizovány",delete_company:"Odstranit společnost",delete_company_description:"Jakmile svou společnost odstraníte, trvale přijdete o všechna data a soubory s ní spojené.",are_you_absolutely_sure:"Jste si opravdu jisti?",delete_company_modal_desc:"Tuto akci nelze vrátit zpět. Tato akce trvale odstraní {company} a všechna související data.",delete_company_modal_label:"Zadejte prosím {company} pro potvrzení"},custom_fields:{title:"Vlastní pole",section_description:"Přizpůsobte si své faktury, odhady a potvrzení o platbě podle vlastních polí. Ujistěte se, že používáte níže přidaná pole ve formátu adresy na stránce pro přizpůsobení.",add_custom_field:"Přidat vlastní pole",edit_custom_field:"Upravit vlastní pole",field_name:"Název pole",label:"Popis",type:"Typ",name:"Jméno",slug:"Pahýl",required:"Povinné",placeholder:"Zástupný text",help_text:"Text nápovědy",default_value:"Výchozí hodnota",prefix:"Prefix",starting_number:"Počáteční číslo",model:"Model",help_text_description:"Zadejte nějaký text, který pomůže uživatelům pochopit účel tohoto vlastního pole.",suffix:"Sufix",yes:"Ano",no:"Ne",order:"Pořadí",custom_field_confirm_delete:"Nebudete moci obnovit toto vlastní pole",already_in_use:"Vlastní pole je již používáno",deleted_message:"Vlastní pole bylo úspěšně odstraněno",options:"možnosti",add_option:"Přidat možnosti",add_another_option:"Přidat další možnost",sort_in_alphabetical_order:"Řadit v abecedním pořadí",add_options_in_bulk:"Přidat možnosti hromadně",use_predefined_options:"Použít předdefinované možnosti",select_custom_date:"Vyberte vlastní datum",select_relative_date:"Vyberte relativní datum",ticked_by_default:"Ve výchozím nastavení zaškrtnuto",updated_message:"Vlastní pole bylo úspěšně upraveno",added_message:"Vlastní pole bylo úspěšně přidáno",press_enter_to_add:"Stiskněte Enter pro přidání nové možnosti",model_in_use:"Nelze aktualizovat model pro pole, která jsou již používána.",type_in_use:"Nelze aktualizovat typ pro pole, která jsou již používána."},customization:{customization:"přizpůsobení",updated_message:"Informace o společnosti byly úspěšně aktualizovány",save:"Uložit",insert_fields:"Vložit pole",learn_custom_format:"Zjistěte, jak používat vlastní formát",add_new_component:"Přidat novou komponentu",component:"Komponenty",Parameter:"Parametr",series:"Řada",series_description:"Pro nastavení statického prefixu/postfixu jako 'INV' napříč vaší společností. Podporuje délku až 4 znaky.",series_param_label:"Hodnota řady",delimiter:"Oddělovač",delimiter_description:"Jeden znak pro určení hranice mezi 2 samostatnými komponentami. Ve výchozím nastavení je nastaveno na -",delimiter_param_label:"Hodnota oddělovače",date_format:"Formát data",date_format_description:"Pole pro formát místní data a času. Výchozí formát: 'Y' vykresluje aktuální rok.",date_format_param_label:"Formát",sequence:"Sekvence",sequence_description:"Po sobě jdoucí posloupnost čísel ve vaší společnosti. Můžete určit délku daného parametru.",sequence_param_label:"Délka sekvence",customer_series:"Řada zákazníků",customer_series_description:"Možnost nastavit jiný prefix/postfix pro každého zákazníka.",customer_sequence:"Sekvence zákazníků",customer_sequence_description:"Po sobě jdoucí posloupnost čísel pro každého zákazníka.",customer_sequence_param_label:"Délka sekvence",random_sequence:"Náhodná sekvence",random_sequence_description:"Náhodný alfanumerický řetězec. Můžete určit délku daného parametru.",random_sequence_param_label:"Délka sekvence",invoices:{title:"Faktury",invoice_number_format:"Formát čísla faktury",invoice_number_format_description:"Přizpůsobte si, jak bude vaše číslo faktury automaticky generováno při vytváření nové faktury.",preview_invoice_number:"Náhled čísla faktury",due_date:"Datum splatnosti",due_date_description:"Určete, jak se automaticky nastavuje datum splatnosti vytváření faktury.",due_date_days:"Splatnost faktury po dnech",set_due_date_automatically:"Automaticky nastavit datum splatnosti",set_due_date_automatically_description:"Povolte, pokud chcete nastavit datum splatnosti automaticky při vytvoření nové faktury.",default_formats:"Výchozí formáty",default_formats_description:"Níže uvedené formáty se používají k automatickému vyplnění polí při vytváření faktury.",default_invoice_email_body:"Výchozí text e-mailu pro faktury",company_address_format:"Formát adresy společnosti",shipping_address_format:"Formát doručovací adresy",billing_address_format:"Formát fakturační adresy",invoice_email_attachment:"Odesílat faktury jako přílohy",invoice_email_attachment_setting_description:"Povolte, pokud chcete odesílat faktury jako přílohy e-mailu. Vezměte prosím na vědomí, že tlačítko 'Zobrazit fakturu' v e-mailech se již nezobrazí, pokud je povoleno.",invoice_settings_updated:"Nastavení faktur bylo úspěšně upraveno",retrospective_edits:"Zpětné úpravy",allow:"Povolit",disable_on_invoice_partial_paid:"Zakázat po zaznamenání částečné platby",disable_on_invoice_paid:"Vypnout po zaplacení plné platby",disable_on_invoice_sent:"Vypnout po odeslání faktury",retrospective_edits_description:" Na základě zákonů vaší země nebo vašich preferencí můžete uživatelům bránit v úpravě dokončených faktur."},estimates:{title:"Odhady",estimate_number_format:"Formát čísla odhadu",estimate_number_format_description:"Přizpůsobte si, jak bude vaše číslo odhadu automaticky generováno, při vytváření nového odhadu.",preview_estimate_number:"Náhled čísla odhadu",expiry_date:"Datum expirace",expiry_date_description:"Určete, jak se automaticky nastavuje datum expirace při vytváření odhadu.",expiry_date_days:"Platnost odhadu vyprší za dny",set_expiry_date_automatically:"Automaticky nastavit datum expirace",set_expiry_date_automatically_description:"Povolte, pokud chcete nastavit datum expirace automaticky při vytvoření nového odhadu.",default_formats:"Výchozí formáty",default_formats_description:"Níže uvedené formáty se používají k automatickému vyplnění polí při vytváření odhadu.",default_estimate_email_body:"Výchozí text e-mailu pro odhady",company_address_format:"Formát adresy společnosti",shipping_address_format:"Formát doručovací adresy",billing_address_format:"Formát fakturační adresy",estimate_email_attachment:"Odeslat odhady jako přílohy",estimate_email_attachment_setting_description:"Povolte, pokud chcete odesílat odhady jako přílohy e-mailu. Vezměte prosím na vědomí, že tlačítko 'Zobrazit odhad' v e-mailech se již nezobrazí, pokud je povoleno.",estimate_settings_updated:"Nastavení odhadů úspěšně upraveno",convert_estimate_options:"Akce konverze odhadu",convert_estimate_description:"Určete, co se stane s odhadem poté, co se převede na fakturu.",no_action:"Žádná akce",delete_estimate:"Odstranit odhad",mark_estimate_as_accepted:"Označit odhad za přijatý"},payments:{title:"Platby",payment_number_format:"Formát čísel plateb",payment_number_format_description:"Přizpůsobte si, jak se bude číslo platby automaticky generovat, když vytvoříte novou platbu.",preview_payment_number:"Náhled čísla platby",default_formats:"Výchozí formáty",default_formats_description:"Níže uvedené formáty se používají k automatickému vyplnění polí při vytváření plateb.",default_payment_email_body:"Výchozí text e-mailu platby",company_address_format:"Formát adresy společnosti",from_customer_address_format:"Z formátu adresy zákazníka",payment_email_attachment:"Odesílat platby jako přílohy",payment_email_attachment_setting_description:"Povolte, pokud chcete odeslat potvrzení o platbě jako přílohu e-mailu. Vezměte prosím na vědomí, že tlačítko 'Zobrazit platbu' v e-mailech se již nebude zobrazovat, pokud je povoleno.",payment_settings_updated:"Nastavení plateb bylo úspěšně upraveno"},items:{title:"Položky",units:"Jednotky",add_item_unit:"Přidat jednotku položky",edit_item_unit:"Upravit jednotku položky",unit_name:"Název jednotky",item_unit_added:"Jednotka položky přidána",item_unit_updated:"Jednotka položky upravena",item_unit_confirm_delete:"Nebudete moci obnovit tuto jednotku položky",already_in_use:"Jednotka položky se již používá",deleted_message:"Jednotka položky byla úspěšně odstraněna"},notes:{title:"Poznámky",description:"Ušetřete čas vytvořením poznámek a jejich opětovným použitím na fakturách, odhadech a platbách.",notes:"Poznámky",type:"Typ",add_note:"Přidat poznámku",add_new_note:"Přidat novou poznámku",name:"Jméno",edit_note:"Upravit poznámku",note_added:"Poznámka úspěšně přidána",note_updated:"Poznámka úspěšně upravena",note_confirm_delete:"Nebudete moci obnovit tuto poznámku",already_in_use:"Poznámka je již používána",deleted_message:"Poznámka byla úspěšně smazána"}},account_settings:{profile_picture:"Profilový obrázek",name:"Jméno",email:"E-mail",password:"Heslo",confirm_password:"Potvrdit heslo",account_settings:"Nastavení účtu",save:"Uložit",section_description:"Své jméno, e-mail a heslo můžete aktualizovat pomocí formuláře níže.",updated_message:"Nastavení účtu bylo úspěšně aktualizováno"},user_profile:{name:"Jméno",email:"E-mail",password:"Heslo",confirm_password:"Potvrzení hesla"},notification:{title:"Oznámení",email:"Posílat oznámení na",description:"Která e-mailová oznámení chcete dostávat, když se něco změní?",invoice_viewed:"Faktura zobrazena",invoice_viewed_desc:"Když si váš zákazník zobrazí fakturu odeslánou přes hlavní panel InvoiceShelfu.",estimate_viewed:"Odhad zobrazen",estimate_viewed_desc:"Když si váš zákazník zobrazí odhad odeslaný přes hlavní panel InvoiceShelfu.",save:"Uložit",email_save_message:"E-mail úspěšně uložen",please_enter_email:"Prosím, zadejte e-mail"},roles:{title:"Role",description:"Správa rolí a oprávnění této společnosti",save:"Uložit",add_new_role:"Přidat novou roli",role_name:"Název role",added_on:"Přidáno dne",add_role:"Přidat roli",edit_role:"Upravit roli",name:"Název",permission:"Oprávnění | Oprávnění",select_all:"Vybrat vše",none:"Žádné",confirm_delete:"Nebudete moci obnovit tuto roli",created_message:"Role byla úspěšně vytvořena",updated_message:"Role úspěšně změněna",deleted_message:"Role úspěšně odstraněna",already_in_use:"Role je již používána"},exchange_rate:{exchange_rate:"Směnný kurz",title:"Opravit problémy se směnným kurzem",description:"Zadejte prosím směnný kurz všech níže uvedených měn, abyste pomohli InvoiceShelfu správně vypočítat částky v {currency}.",drivers:"Ovladače",new_driver:"Přidat nového poskytovatele",edit_driver:"Upravit poskytovatele",select_driver:"Vybrat ovladač",update:"vybrat směnný kurz ",providers_description:"Nakonfigurujte zde poskytovatele směnných kurzů, aby automaticky načítali nejnovější směnný kurz u transakcí.",key:"API klíč",name:"Název",driver:"Ovladač",is_default:"JE VÝCHOZÍ",currency:"Měny",exchange_rate_confirm_delete:"Nebudete moci obnovit tento ovladač",created_message:"Poskytovatel úspěšně vytvořen",updated_message:"Poskytovatel úspěšně upraven",deleted_message:"Poskytovatel úspěšně odstraněn",error:" Aktivní ovladač nelze odstranit",default_currency_error:"Tato měna je již používána v jednom z aktivních poskytovatelů",exchange_help_text:"Zadejte směnný kurz pro převod z {currency} do {baseCurrency}",currency_freak:"Currency Freak",currency_layer:"Currency Layer",open_exchange_rate:"Otevřít směnný kurz",currency_converter:"Převodník měn",server:"Server",url:"URL",active:"Aktivní",currency_help_text:"Tento poskytovatel bude použit pouze na výše vybraných měnách",currency_in_used:"Následující měny jsou již aktivní u jiného poskytovatele. Odstraňte tyto měny z výběru a znovu aktivujte tohoto poskytovatele."},tax_types:{title:"Typy daní",add_tax:"Přidat daň",edit_tax:"Upravit daň",description:"Můžete přidat nebo odebrat daně, jak chcete. InvoiceShelf podporuje daně z jednotlivých položek i z celé faktury.",add_new_tax:"Přidat novou daň",tax_settings:"Nastavení daně",tax_per_item:"Daň za položku",tax_name:"Název daně",compound_tax:"Složená daň",percent:"Procento",action:"Akce",tax_setting_description:"Povolte, pokud chcete přidat daně k jednotlivým položkám faktury. Ve výchozím nastavení jsou daně přidány přímo na fakturu.",created_message:"Typ daně úspěšně vytvořen",updated_message:"Typ daně úspěšně upraven",deleted_message:"Typ daně úspěšně odstraněn",confirm_delete:"Tento typ daně nebudete moci obnovit",already_in_use:"Daň se již používá"},payment_modes:{title:"Platební metody",description:"Platební metody transakcí pro platby",add_payment_mode:"Přidat platební metodu",edit_payment_mode:"Upravit platební metodu",mode_name:"Název metody",payment_mode_added:"Platební metoda přidána",payment_mode_updated:"Platební metoda upravena",payment_mode_confirm_delete:"Nebudete moci obnovit tuto platební metodu",payments_attached:"Tento způsob platby je již připojen k platbám. Chcete-li pokračovat v odstranění, odstraňte připojené platby.",expenses_attached:"Tento způsob platby je již připojen k výdajům. Chcete-li pokračovat v odstranění, odstraňte připojené výdaje.",deleted_message:"Platební metoda byla úspěšně odstraněna"},expense_category:{title:"Kategorie výdajů",action:"Akce",description:"Kategorie jsou vyžadovány pro přidání výdajových položek. Můžete přidat nebo odebrat tyto kategorie podle vašich preferencí.",add_new_category:"Přidat novou kategorii",add_category:"Přidat kategorii",edit_category:"Upravit Kategorii",category_name:"Název kategorie",category_description:"Popis",created_message:"Kategorie výdajů úspěšně vytvořena",deleted_message:"Kategorie výdajů úspěšně odstraněna",updated_message:"Kategorie výdajů úspěšně upravena",confirm_delete:"Nebudete moci obnovit tuto kategorii výdajů",already_in_use:"Kategorie se již používá"},preferences:{currency:"Měna",default_language:"Výchozí jazyk",time_zone:"Časové pásmo",fiscal_year:"Fiskální rok",date_format:"Formát data",discount_setting:"Nastavení slev",discount_per_item:"Sleva za položku ",discount_setting_description:"Povolte tuto možnost, pokud chcete přidat slevu do jednotlivých položek faktury. Ve výchozím nastavení je sleva přidána přímo na fakturu.",expire_public_links:"Automaticky zrušit platnost veřejných odkazů",expire_setting_description:"Určete, zda chcete zrušit všechny odkazy odeslané aplikací k zobrazení faktur, odhadů, plateb atd. po stanovené době trvání.",save:"Uložit",preference:"Předvolba | Předvolby",general_settings:"Výchozí předvolby systému.",updated_message:"Předvolby úspěšně upraveny",select_language:"Vyberte jazyk",select_time_zone:"Vyberte časové pásmo",select_date_format:"Vyberte formát data",select_financial_year:"Vyberte fiskální rok",recurring_invoice_status:"Stav opakující se faktury",create_status:"Vytvořit stav",active:"Aktivní",on_hold:"Čekající",update_status:"Upravit stav",completed:"Dokončeno",company_currency_unchangeable:"Měnu společnosti nelze měnit"},update_app:{title:"Aktualizace aplikace",description:"Kliknutím na tlačítko níže můžete jednoduše aktualizovat InvoiceShelf",check_update:"Zkontrolovat aktualizace",avail_update:"K dispozici je nová aktualizace",next_version:"Další verze",requirements:"Požadavky",update:"Aktualizovat teď",update_progress:"Probíhá aktualizace...",progress_text:"Bude to trvat jen několik minut. Neobnovujte obrazovku ani nezavírejte okno před dokončením aktualizace",update_success:"Aplikace byla aktualizována! Počkejte prosím, než se okno prohlížeče automaticky znovu načte.",latest_message:"Žádná aktualizace není k dispozici! Jste na nejnovější verzi.",current_version:"Aktuální verze",download_zip_file:"Stáhnout soubor ZIP",unzipping_package:"Rozbalování balíku",copying_files:"Kopírování souborů",deleting_files:"Odstraňování nepoužitých souborů",running_migrations:"Spouštění migrací",finishing_update:"Dokončování aktualizace",update_failed:"Aktualizace se nezdařila",update_failed_text:"Omlouváme se! Aktualizace se nezdařila v {step}. kroku",update_warning:"Všechny soubory aplikace a výchozí soubory šablon budou přepsány při aktualizaci aplikace pomocí tohoto nástroje. Před aktualizací si prosím zálohujte šablony a databázi."},backup:{title:"Záloha | Zálohy",description:"Záloha je soubor ZIP, který obsahuje všechny soubory ve složkách, které zadáte spolu s kopií vaší databáze",new_backup:"Přidat novou zálohu",create_backup:"Vytvořit zálohu",select_backup_type:"Vyberte typ zálohy",backup_confirm_delete:"Tuto zálohu nebudete moci obnovit",path:"cesta",new_disk:"Nový disk",created_at:"vytvořeno v",size:"velikost",dropbox:"dropbox",local:"místní",healthy:"zdravý",amount_of_backups:"počet záloh",newest_backups:"nejnovější zálohy",used_storage:"využité úložiště",select_disk:"Vyberte disk",action:"Akce",deleted_message:"Záloha úspěšně odstraněna",created_message:"Záloha byla úspěšně vytvořena",invalid_disk_credentials:"Nesprávné přihlašovací údaje pro vybraný disk"},disk:{title:"Souborový disk | Souborové disky",description:"Ve výchozím nastavení bude InvoiceShelf používat váš lokální disk pro ukládání záloh, avataru a dalších obrázků. Podle vašich preferencí můžete nakonfigurovat více než jeden ovladač disku, jako je DigitalOcean, S3 nebo Dropbox.",created_at:"vytvořeno v",dropbox:"dropbox",name:"Název",driver:"Ovladač",disk_type:"Typ",disk_name:"Název disku",new_disk:"Přidat nový disk",filesystem_driver:"Ovladač souborového systému",local_driver:"místní ovladač",local_root:"místní kořenový adresář",public_driver:"Veřejný ovladač",public_root:"Veřejný kořenový adresář",public_url:"Veřejná adresa URL",public_visibility:"Veřejná viditelnost",media_driver:"Ovladač médií",media_root:"Kořenový adresář medií",aws_driver:"AWS ovladač",aws_key:"AWS Key",aws_secret:"AWS Secret",aws_region:"AWS Region",aws_bucket:"AWS Bucket",aws_root:"AWS Root",do_spaces_type:"Do Spaces type",do_spaces_key:"Do Spaces key",do_spaces_secret:"Do Spaces Secret",do_spaces_region:"Do Spaces Region",do_spaces_bucket:"Do Spaces Bucket",do_spaces_endpoint:"Do Spaces Endpoint",do_spaces_root:"Do Spaces Root",dropbox_type:"Dropbox Type",dropbox_token:"Dropbox Token",dropbox_key:"Dropbox Key",dropbox_secret:"Dropbox Secret",dropbox_app:"Dropbox App",dropbox_root:"Dropbox Root",default_driver:"Výchozí ovladač",is_default:"JE VÝCHOZÍ",set_default_disk:"Nastavit výchozí disk",set_default_disk_confirm:"Tento disk bude nastaven jako výchozí a všechny nové PDF budou uloženy na tomto disku",success_set_default_disk:"Disk úspěšně nastaven jako výchozí",save_pdf_to_disk:"Ukládat PDF na disk",disk_setting_description:" Povolte, pokud chcete automaticky uložit kopii PDF každé faktury, odhadu a potvrzení o platbě. Zapnutí této možnosti sníží dobu načítání při prohlížení PDF.",select_disk:"Vyberte disk",disk_settings:"Nastavení disku",confirm_delete:"Vaše existující soubory a složky na určeném disku nebudou ovlivněny, ale konfigurace disku bude odstraněna z InvoiceShelfu",action:"Akce",edit_file_disk:"Upravit souborový disk",success_create:"Disk byl úspěšně přidán",success_update:"Disk úspěšně upraven",error:"Přidání disku se nezdařilo",deleted_message:"Souborový disk úspěšně smazán",disk_variables_save_successfully:"Disk úspěšně nakonfigurován",disk_variables_save_error:"Konfigurace disku selhala.",invalid_disk_credentials:"Nesprávné přihlašovací údaje pro vybraný disk"},taxations:{add_billing_address:"Zadejte fakturační adresu",add_shipping_address:"Zadejte doručovací adresu",add_company_address:"Zadejte adresu firmy",modal_description:"Níže uvedené informace jsou vyžadovány pro načtení daně z prodeje.",add_address:"Přidat adresu pro načtení daně z prodeje.",address_placeholder:"Například: Moje Ulice 123",city_placeholder:"Například: Praha",state_placeholder:"Například: CZ",zip_placeholder:"Například: 90024",invalid_address:"Zadejte prosím platnou adresu."}},A9={account_info:"Informace o účtu",account_info_desc:"Níže uvedené údaje budou použity k vytvoření hlavního účtu správce. Také můžete změnit podrobnosti kdykoliv po přihlášení.",name:"Jméno",email:"E-mail",password:"Heslo",confirm_password:"Potvrdit heslo",save_cont:"Uložit a pokračovat",company_info:"Informace o společnosti",company_info_desc:"Tyto informace budou zobrazeny na fakturách. Později je můžete upravit na stránce s nastavením.",company_name:"Název společnosti",company_logo:"Logo společnosti",logo_preview:"Náhled loga",preferences:"Předvolby společnosti",preferences_desc:"Zadejte výchozí předvolby pro tuto společnost.",currency_set_alert:"Měnu společnosti nelze později změnit.",country:"Země",state:"Stát",city:"Město",address:"Adresa",street:"Ulice1 | Ulice2",phone:"Telefon",zip_code:"PSČ",go_back:"Jít zpět",currency:"Měna",language:"Jazyk",time_zone:"Časové pásmo",fiscal_year:"Fiskální rok",date_format:"Formát data",from_address:"Z adresy",username:"Uživatelské jméno",next:"Další",continue:"Pokračovat",skip:"Přeskočit",database:{database:"URL webu a databáze",connection:"Připojení k databázi",host:"Host databáze",port:"Port databáze",password:"Heslo do databáze",app_url:"URL aplikace",app_domain:"Doména aplikace",username:"Uživatelské jméno k databázi",db_name:"Název databáze",db_path:"Cesta k databázi",desc:"Vytvořte databázi na svém serveru a nastavte přihlašovací údaje pomocí níže uvedeného formuláře."},permissions:{permissions:"Oprávnění",permission_confirm_title:"Opravdu chcete pokračovat?",permission_confirm_desc:"Kontrola oprávnění složky selhala",permission_desc:"Níže je seznam oprávnění složek, která jsou vyžadována, aby aplikace pracovala. Pokud kontrola oprávnění selže, aktualizujte oprávnění daných složek."},verify_domain:{title:"Ověření domény",desc:"InvoiceShelf používá ověření na základě relace, které vyžaduje ověření domény pro účely zabezpečení. Zadejte prosím doménu, na které budete přistupovat ke své webové aplikaci.",app_domain:"Doména aplikace",verify_now:"Ověřit teď",success:"Ověření domény bylo úspěšné.",failed:"Ověření domény se nezdařilo. Zadejte prosím platný název domény.",verify_and_continue:"Ověřit a pokračovat"},mail:{host:"Hostitel e-mailu",port:"Port e-mailu",driver:"Ovladač e-mailů",secret:"Secret",mailgun_secret:"Mailgun Secret",mailgun_domain:"Doména",mailgun_endpoint:"Mailgun Endpoint",ses_secret:"SES Secret",ses_key:"SES Key",password:"E-mailové heslo",username:"Uživatelské jméno e-mailu",mail_config:"Konfigurace e-mailu",from_name:"Jméno odesílatele",from_mail:"Z e-mailové adresy",encryption:"Šifrování e-mailu",mail_config_desc:"Níže je uveden formulář pro konfiguraci e-mailového ovladače pro odesílání e-mailů z aplikace. Můžete také nakonfigurovat poskytovatele třetích stran, jako je Sendgrid, SES atd."},req:{system_req:"Systémové požadavky",php_req_version:"Php (požadovaná verze {version})",check_req:"Zkontrolujte požadavky",system_req_desc:"InvoiceShelf má několik požadavků na server. Ujistěte se, že váš server má požadovanou php verzi a všechna níže uvedená rozšíření."},errors:{migrate_failed:"Migrace se nezdařila",database_variables_save_error:"Nelze zapsat konfiguraci do souboru .env. Zkontrolujte prosím jeho oprávnění",mail_variables_save_error:"Nastavení e-mailu se nezdařilo.",connection_failed:"Spojení s databází se nezdařilo",database_should_be_empty:"Databáze by měla být prázdná"},success:{mail_variables_save_successfully:"E-mail byl úspěšně nastaven",database_variables_save_successfully:"Databáze byla úspěšně nastavena."}},C9={invalid_phone:"Neplatné telefonní číslo",invalid_url:"Neplatná URL (např. http://www.invoiceshelf.com)",invalid_domain_url:"Neplatná URL (např. invoiceshelf.com)",required:"Pole je povinné",email_incorrect:"Nesprávný e-mail.",email_already_taken:"Tento e-mail již byl použit.",email_does_not_exist:"Uživatel s daným e-mailem neexistuje",item_unit_already_taken:"Tento název jednotky je již obsazen",payment_mode_already_taken:"Tento název platební metody již byl použit",send_reset_link:"Zaslat odkaz na obnovení hesla",not_yet:"Ještě ne? Poslat znovu",password_min_length:"Heslo musí obsahovat {count} znaků",name_min_length:"Jméno musí mít alespoň {count} písmen.",prefix_min_length:"Prefix musí mít alespoň {count} písmen.",enter_valid_tax_rate:"Zadejte platnou daňovou sazbu",numbers_only:"Pouze čísla.",characters_only:"Pouze písmena.",password_incorrect:"Hesla musí být stejná",password_length:"Heslo musí být dlouhé {count} znaků.",qty_must_greater_than_zero:"Množství musí být větší než nula.",price_greater_than_zero:"Cena musí být vyšší než nula.",payment_greater_than_zero:"Platba musí být vyšší než nula.",payment_greater_than_due_amount:"Zadaná platba je vyšší než splatná částka této faktury.",quantity_maxlength:"Množství by nemělo být delší než 20 číslic.",price_maxlength:"Cena by neměla být delší než 20 číslic.",price_minvalue:"Cena by měla být větší než 0.",amount_maxlength:"Množství by nemělo být delší než 20 číslic.",amount_minvalue:"Množství by mělo být větší než 0.",discount_maxlength:"Sleva by neměla být vyšší než maximální sleva",description_maxlength:"Popis by neměl být delší než 255 znaků.",subject_maxlength:"Předmět by neměl být delší než 100 znaků.",message_maxlength:"Zpráva by neměla být delší než 255 znaků.",maximum_options_error:"Vybráno maximum z {max} možností. Nejprve odeberte vybranou možnost pro další výběr.",notes_maxlength:"Poznámky by neměly být delší než 65 000 znaků.",address_maxlength:"Adresa by neměla být delší než 255 znaků.",ref_number_maxlength:"Referenční číslo by nemělo být delší než 255 znaků.",prefix_maxlength:"Prefix by neměl být delší než 5 znaků.",something_went_wrong:"něco se nezdařilo",number_length_minvalue:"Délka čísla by měla být větší než 0",at_least_one_ability:"Vyberte prosím alespoň jedno oprávnění.",valid_driver_key:"Zadejte prosím platný {driver} klíč.",valid_exchange_rate:"Zadejte prosím platný směnný kurz.",company_name_not_same:"Název společnosti se musí shodovat se zadaným názvem."},j9={starter_plan:"Tato funkce je k dispozici na Starter Plánu a dále!",invalid_provider_key:"Zadejte prosím platný API klíč poskytovatele.",estimate_number_used:"Číslo odhadu již bylo použito.",invoice_number_used:"Číslo faktury již bylo použito.",payment_attached:"Na této faktuře je již přiložena platba. Abyste mohli pokračovat v odstranění, odstraňtě nejdříve přiložené platby.",payment_number_used:"Číslo platby již bylo použito.",name_already_taken:"Název již byl použit.",receipt_does_not_exist:"Doklad neexistuje.",customer_cannot_be_changed_after_payment_is_added:"Zákazníka nelze měnit po přidání platby",invalid_credentials:"Neplatné přihlašovací údaje.",not_allowed:"Není povoleno",login_invalid_credentials:"Tyto údaje neodpovídají našim záznamům.",enter_valid_cron_format:"Zadejte platný formát cronu",email_could_not_be_sent:"E-mail nemohl být odeslán na tuto e-mailovou adresu.",invalid_address:"Zadejte prosím platnou adresu.",invalid_key:"Zadejte prosím platný klíč.",invalid_state:"Zadejte prosím platný název státu.",invalid_city:"Zadejte prosím platný název města.",invalid_postal_code:"Zadejte prosím platné PSČ.",invalid_format:"Zadejte prosím data v platném formátu.",api_error:"Server neodpovídá.",feature_not_enabled:"Funkce není zapnuta.",request_limit_met:"Limit požadavků API překročen.",address_incomplete:"Neúplná adresa"},T9="Odhad",I9="Číslo odhadu",N9="Datum odhadu",F9="Doba platnosti",M9="Faktura",R9="Číslo faktury",O9="Datum fakturace",$9="Datum splatnosti",L9="Poznámky",B9="Položky",U9="Množství",V9="Cena",q9="Sleva",H9="Množství",W9="Mezisoučet",K9="Celkem",Y9="Platba",Z9="DOKLAD O PLATBĚ",G9="Datum platby",Q9="Číslo platby",J9="Platební metoda",X9="Obdržená částka",eB="HLÁŠENÍ VÝDAJŮ",tB="VÝDAJE CELKEM",aB="HLÁŠENÍ ZISKU A ZTRÁT",nB="Hlášení o zákaznících prodeje",iB="Hlášení o položkách prodeje",oB="Hlášení o daních",rB="PŘÍJEM",sB="ČISTÝ ZISK",lB="Hlášení o prodeji: Podle zákazníka",cB="PRODEJE CELKEM",dB="Hlášení o prodeji: Podle položky",uB="DAŇOVÉ HLÁŠENÍ",_B="DANĚ CELKEM",mB="Typy daní",pB="Výdaje",fB="Odběratel",hB="Příjemce",gB="Přijato od:",vB="Daň",yB={navigation:d9,general:u9,dashboard:_9,tax_types:m9,global_search:p9,company_switcher:f9,dateRange:h9,customers:g9,items:v9,estimates:y9,invoices:b9,recurring_invoices:k9,payments:w9,expenses:x9,login:D9,modules:S9,users:z9,reports:P9,settings:E9,wizard:A9,validation:C9,errors:j9,pdf_estimate_label:T9,pdf_estimate_number:I9,pdf_estimate_date:N9,pdf_estimate_expire_date:F9,pdf_invoice_label:M9,pdf_invoice_number:R9,pdf_invoice_date:O9,pdf_invoice_due_date:$9,pdf_notes:L9,pdf_items_label:B9,pdf_quantity_label:U9,pdf_price_label:V9,pdf_discount_label:q9,pdf_amount_label:H9,pdf_subtotal:W9,pdf_total:K9,pdf_payment_label:Y9,pdf_payment_receipt_label:Z9,pdf_payment_date:G9,pdf_payment_number:Q9,pdf_payment_mode:J9,pdf_payment_amount_received_label:X9,pdf_expense_report_label:eB,pdf_total_expenses_label:tB,pdf_profit_loss_label:aB,pdf_sales_customers_label:nB,pdf_sales_items_label:iB,pdf_tax_summery_label:oB,pdf_income_label:rB,pdf_net_profit_label:sB,pdf_customer_sales_report:lB,pdf_total_sales_label:cB,pdf_item_sales_label:dB,pdf_tax_report_label:uB,pdf_total_tax_label:_B,pdf_tax_types_label:mB,pdf_expenses_label:pB,pdf_bill_to:fB,pdf_ship_to:hB,pdf_received_from:gB,pdf_tax_label:vB},bB={dashboard:"Dashboard",customers:"Customers",items:"Items",invoices:"Invoices","recurring-invoices":"Recurring Invoices",expenses:"Expenses",estimates:"Estimates",payments:"Payments",reports:"Reports",settings:"Settings",logout:"Logout",users:"Users",modules:"Modules"},kB={add_company:"Add Company",view_pdf:"View PDF",copy_pdf_url:"Copy PDF Url",download_pdf:"Download PDF",save:"Save",create:"Create",cancel:"Cancel",update:"Update",deselect:"Deselect",download:"Download",from_date:"From Date",to_date:"To Date",from:"From",to:"To",ok:"Ok",yes:"Yes",no:"No",sort_by:"Sort By",ascending:"Ascending",descending:"Descending",subject:"Subject",body:"Body",message:"Message",send:"Send",preview:"Preview",go_back:"Go Back",back_to_login:"Back to Login?",home:"Home",filter:"Filter",delete:"Delete",edit:"Edit",view:"View",add_new_item:"Add New Item",clear_all:"Clear All",showing:"Showing",of:"of",actions:"Actions",subtotal:"SUBTOTAL",discount:"DISCOUNT",fixed:"Fixed",percentage:"Percentage",tax:"TAX",total_amount:"TOTAL AMOUNT",bill_to:"Bill to",ship_to:"Ship to",due:"Due",draft:"Draft",sent:"Sent",all:"All",select_all:"Select All",select_template:"Select Template",choose_file:"Click here to choose a file",choose_template:"Choose a template",choose:"Choose",remove:"Remove",select_a_status:"Select a status",select_a_tax:"Select a tax",search:"Search",are_you_sure:"Are you sure?",list_is_empty:"List is empty.",no_tax_found:"No tax found!",four_zero_four:"404",you_got_lost:"Whoops! You got Lost!",go_home:"Go Home",test_mail_conf:"Test Mail Configuration",send_mail_successfully:"Mail sent successfully",setting_updated:"Setting updated successfully",select_state:"Select state",select_country:"Select Country",select_city:"Select City",street_1:"Street 1",street_2:"Street 2",action_failed:"Action Failed",retry:"Retry",choose_note:"Choose Note",no_note_found:"No Note Found",insert_note:"Insert Note",copied_pdf_url_clipboard:"Copied PDF url to clipboard!",copied_url_clipboard:"Copied url to clipboard!",docs:"Docs",do_you_wish_to_continue:"Do you wish to continue?",note:"Note",pay_invoice:"Pay Invoice",login_successfully:"Logged in successfully!",logged_out_successfully:"Logged out successfully",mark_as_default:"Mark as default"},wB={select_year:"Select year",cards:{due_amount:"Amount Due",customers:"Customers",invoices:"Invoices",estimates:"Estimates",payments:"Payments"},chart_info:{total_sales:"Sales",total_receipts:"Receipts",total_expense:"Expenses",net_income:"Net Income",year:"Select year"},monthly_chart:{title:"Sales & Expenses"},recent_invoices_card:{title:"Due Invoices",due_on:"Due On",customer:"Customer",amount_due:"Amount Due",actions:"Actions",view_all:"View All"},recent_estimate_card:{title:"Recent Estimates",date:"Date",customer:"Customer",amount_due:"Amount Due",actions:"Actions",view_all:"View All"}},xB={name:"Name",description:"Description",percent:"Percent",compound_tax:"Compound Tax"},DB={search:"Search...",customers:"Customers",users:"Users",no_results_found:"No Results Found"},SB={label:"SWITCH COMPANY",no_results_found:"No Results Found",add_new_company:"Add new company",new_company:"New company",created_message:"Company created successfully"},zB={today:"Today",this_week:"This Week",this_month:"This Month",this_quarter:"This Quarter",this_year:"This Year",previous_week:"Previous Week",previous_month:"Previous Month",previous_quarter:"Previous Quarter",previous_year:"Previous Year",custom:"Custom"},PB={title:"Customers",prefix:"Prefix",add_customer:"Add Customer",contacts_list:"Customer List",name:"Name",mail:"Mail | Mails",statement:"Statement",display_name:"Display Name",primary_contact_name:"Primary Contact Name",contact_name:"Contact Name",amount_due:"Amount Due",email:"Email",address:"Address",phone:"Phone",website:"Website",overview:"Overview",invoice_prefix:"Invoice Prefix",estimate_prefix:"Estimate Prefix",payment_prefix:"Payment Prefix",enable_portal:"Enable Portal",country:"Country",state:"State",city:"City",zip_code:"Zip Code",added_on:"Added On",action:"Action",password:"Password",confirm_password:"Confirm Password",street_number:"Street Number",primary_currency:"Primary Currency",description:"Description",add_new_customer:"Add New Customer",save_customer:"Save Customer",update_customer:"Update Customer",customer:"Customer | Customers",new_customer:"New Customer",edit_customer:"Edit Customer",basic_info:"Basic Info",portal_access:"Portal Access",portal_access_text:"Would you like to allow this customer to login to the Customer Portal?",portal_access_url:"Customer Portal Login URL",portal_access_url_help:"Please copy & forward the above given URL to your customer for providing access.",billing_address:"Billing Address",shipping_address:"Shipping Address",copy_billing_address:"Copy from Billing",no_customers:"No customers yet!",no_customers_found:"No customers found!",no_contact:"No contact",no_contact_name:"No contact name",list_of_customers:"This section will contain the list of customers.",primary_display_name:"Primary Display Name",select_currency:"Select currency",select_a_customer:"Select a customer",type_or_click:"Type or click to select",new_transaction:"New Transaction",no_matching_customers:"There are no matching customers!",phone_number:"Phone Number",create_date:"Create Date",confirm_delete:"You will not be able to recover this customer and all the related Invoices, Estimates and Payments. | You will not be able to recover these customers and all the related Invoices, Estimates and Payments.",created_message:"Customer created successfully",updated_message:"Customer updated successfully",address_updated_message:"Address Information Updated succesfully",deleted_message:"Customer deleted successfully | Customers deleted successfully",edit_currency_not_allowed:"Cannot change currency once transactions created."},EB={title:"Items",items_list:"Items List",name:"Name",unit:"Unit",description:"Description",added_on:"Added On",price:"Price",date_of_creation:"Date Of Creation",not_selected:"No item selected",action:"Action",add_item:"Add Item",save_item:"Save Item",update_item:"Update Item",item:"Item | Items",add_new_item:"Add New Item",new_item:"New Item",edit_item:"Edit Item",no_items:"No items yet!",list_of_items:"This section will contain the list of items.",select_a_unit:"select unit",taxes:"Taxes",item_attached_message:"Cannot delete an item which is already in use",confirm_delete:"You will not be able to recover this Item | You will not be able to recover these Items",created_message:"Item created successfully",updated_message:"Item updated successfully",deleted_message:"Item deleted successfully | Items deleted successfully"},AB={title:"Estimates",accept_estimate:"Accept Estimate",reject_estimate:"Reject Estimate",estimate:"Estimate | Estimates",estimates_list:"Estimates List",days:"{days} Days",months:"{months} Month",years:"{years} Year",all:"All",paid:"Paid",unpaid:"Unpaid",customer:"CUSTOMER",ref_no:"REF NO.",number:"NUMBER",amount_due:"AMOUNT DUE",partially_paid:"Partially Paid",total:"Total",discount:"Discount",sub_total:"Sub Total",estimate_number:"Estimate Number",ref_number:"Ref Number",contact:"Contact",add_item:"Add an Item",date:"Date",due_date:"Due Date",expiry_date:"Expiry Date",status:"Status",add_tax:"Add Tax",amount:"Amount",action:"Action",notes:"Notes",tax:"Tax",estimate_template:"Template",convert_to_invoice:"Convert to Invoice",mark_as_sent:"Mark as Sent",send_estimate:"Send Estimate",resend_estimate:"Resend Estimate",record_payment:"Record Payment",add_estimate:"Add Estimate",save_estimate:"Save Estimate",confirm_conversion:"This estimate will be used to create a new Invoice.",conversion_message:"Invoice created successful",confirm_send_estimate:"This estimate will be sent via email to the customer",confirm_mark_as_sent:"This estimate will be marked as sent",confirm_mark_as_accepted:"This estimate will be marked as Accepted",confirm_mark_as_rejected:"This estimate will be marked as Rejected",no_matching_estimates:"There are no matching estimates!",mark_as_sent_successfully:"Estimate marked as sent successfully",send_estimate_successfully:"Estimate sent successfully",errors:{required:"Field is required"},accepted:"Accepted",rejected:"Rejected",expired:"Expired",sent:"Sent",draft:"Draft",viewed:"Viewed",declined:"Declined",new_estimate:"New Estimate",add_new_estimate:"Add New Estimate",update_Estimate:"Update Estimate",edit_estimate:"Edit Estimate",items:"items",Estimate:"Estimate | Estimates",add_new_tax:"Add New Tax",no_estimates:"No estimates yet!",list_of_estimates:"This section will contain the list of estimates.",mark_as_rejected:"Mark as rejected",mark_as_accepted:"Mark as accepted",marked_as_accepted_message:"Estimate marked as accepted",marked_as_rejected_message:"Estimate marked as rejected",confirm_delete:"You will not be able to recover this Estimate | You will not be able to recover these Estimates",created_message:"Estimate created successfully",updated_message:"Estimate updated successfully",deleted_message:"Estimate deleted successfully | Estimates deleted successfully",something_went_wrong:"something went wrong",item:{title:"Item Title",description:"Description",quantity:"Quantity",price:"Price",discount:"Discount",total:"Total",total_discount:"Total Discount",sub_total:"Sub Total",tax:"Tax",amount:"Amount",select_an_item:"Type or click to select an item",type_item_description:"Type Item Description (optional)"},mark_as_default_estimate_template_description:"If enabled, the selected template will be automatically selected for new estimates."},CB={title:"Invoices",download:"Download",pay_invoice:"Pay Invoice",invoices_list:"Invoices List",invoice_information:"Invoice Information",days:"{days} Days",months:"{months} Month",years:"{years} Year",all:"All",paid:"Paid",unpaid:"Unpaid",viewed:"Viewed",overdue:"Overdue",completed:"Completed",customer:"CUSTOMER",paid_status:"PAID STATUS",ref_no:"REF NO.",number:"NUMBER",amount_due:"AMOUNT DUE",partially_paid:"Partially Paid",total:"Total",discount:"Discount",sub_total:"Sub Total",invoice:"Invoice | Invoices",invoice_number:"Invoice Number",ref_number:"Ref Number",contact:"Contact",add_item:"Add an Item",date:"Date",due_date:"Due Date",status:"Status",add_tax:"Add Tax",amount:"Amount",action:"Action",notes:"Notes",view:"View",send_invoice:"Send Invoice",resend_invoice:"Resend Invoice",invoice_template:"Invoice Template",conversion_message:"Invoice cloned successful",template:"Select Template",mark_as_sent:"Mark as sent",confirm_send_invoice:"This invoice will be sent via email to the customer",invoice_mark_as_sent:"This invoice will be marked as sent",confirm_mark_as_accepted:"This invoice will be marked as Accepted",confirm_mark_as_rejected:"This invoice will be marked as Rejected",confirm_send:"This invoice will be sent via email to the customer",invoice_date:"Invoice Date",record_payment:"Record Payment",add_new_invoice:"Add New Invoice",update_expense:"Update Expense",edit_invoice:"Edit Invoice",new_invoice:"New Invoice",save_invoice:"Save Invoice",update_invoice:"Update Invoice",add_new_tax:"Add New Tax",no_invoices:"No Invoices yet!",mark_as_rejected:"Mark as rejected",mark_as_accepted:"Mark as accepted",list_of_invoices:"This section will contain the list of invoices.",select_invoice:"Select Invoice",no_matching_invoices:"There are no matching invoices!",mark_as_sent_successfully:"Invoice marked as sent successfully",invoice_sent_successfully:"Invoice sent successfully",cloned_successfully:"Invoice cloned successfully",clone_invoice:"Clone Invoice",confirm_clone:"This invoice will be cloned into a new Invoice",item:{title:"Item Title",description:"Description",quantity:"Quantity",price:"Price",discount:"Discount",total:"Total",total_discount:"Total Discount",sub_total:"Sub Total",tax:"Tax",amount:"Amount",select_an_item:"Type or click to select an item",type_item_description:"Type Item Description (optional)"},payment_attached_message:"One of the selected invoices already have a payment attached to it. Make sure to delete the attached payments first in order to go ahead with the removal",confirm_delete:"You will not be able to recover this Invoice | You will not be able to recover these Invoices",created_message:"Invoice created successfully",updated_message:"Invoice updated successfully",deleted_message:"Invoice deleted successfully | Invoices deleted successfully",marked_as_sent_message:"Invoice marked as sent successfully",something_went_wrong:"something went wrong",invalid_due_amount_message:"Total Invoice amount cannot be less than total paid amount for this Invoice. Please update the invoice or delete the associated payments to continue.",mark_as_default_invoice_template_description:"If enabled, the selected template will be automatically selected for new invoices."},jB={title:"Recurring Invoices",invoices_list:"Recurring Invoices List",days:"{days} Days",months:"{months} Month",years:"{years} Year",all:"All",paid:"Paid",unpaid:"Unpaid",viewed:"Viewed",overdue:"Overdue",active:"Active",completed:"Completed",customer:"CUSTOMER",paid_status:"PAID STATUS",ref_no:"REF NO.",number:"NUMBER",amount_due:"AMOUNT DUE",partially_paid:"Partially Paid",total:"Total",discount:"Discount",sub_total:"Sub Total",invoice:"Recurring Invoice | Recurring Invoices",invoice_number:"Recurring Invoice Number",next_invoice_date:"Next Invoice Date",ref_number:"Ref Number",contact:"Contact",add_item:"Add an Item",date:"Date",limit_by:"Limit by",limit_date:"Limit Date",limit_count:"Limit Count",count:"Count",status:"Status",select_a_status:"Select a status",working:"Working",on_hold:"On Hold",complete:"Completed",add_tax:"Add Tax",amount:"Amount",action:"Action",notes:"Notes",view:"View",basic_info:"Basic Info",send_invoice:"Send Recurring Invoice",auto_send:"Auto Send",resend_invoice:"Resend Recurring Invoice",invoice_template:"Recurring Invoice Template",conversion_message:"Recurring Invoice cloned successful",template:"Template",mark_as_sent:"Mark as sent",confirm_send_invoice:"This recurring invoice will be sent via email to the customer",invoice_mark_as_sent:"This recurring invoice will be marked as sent",confirm_send:"This recurring invoice will be sent via email to the customer",starts_at:"Start Date",due_date:"Invoice Due Date",record_payment:"Record Payment",add_new_invoice:"Add New Recurring Invoice",update_expense:"Update Expense",edit_invoice:"Edit Recurring Invoice",new_invoice:"New Recurring Invoice",send_automatically:"Send Automatically",send_automatically_desc:"Enable this, if you would like to send the invoice automatically to the customer when its created.",save_invoice:"Save Recurring Invoice",update_invoice:"Update Recurring Invoice",add_new_tax:"Add New Tax",no_invoices:"No Recurring Invoices yet!",mark_as_rejected:"Mark as rejected",mark_as_accepted:"Mark as accepted",list_of_invoices:"This section will contain the list of recurring invoices.",select_invoice:"Select Invoice",no_matching_invoices:"There are no matching recurring invoices!",mark_as_sent_successfully:"Recurring Invoice marked as sent successfully",invoice_sent_successfully:"Recurring Invoice sent successfully",cloned_successfully:"Recurring Invoice cloned successfully",clone_invoice:"Clone Recurring Invoice",confirm_clone:"This recurring invoice will be cloned into a new Recurring Invoice",add_customer_email:"Please add an email address for this customer to send invoices automatically.",item:{title:"Item Title",description:"Description",quantity:"Quantity",price:"Price",discount:"Discount",total:"Total",total_discount:"Total Discount",sub_total:"Sub Total",tax:"Tax",amount:"Amount",select_an_item:"Type or click to select an item",type_item_description:"Type Item Description (optional)"},frequency:{title:"Frequency",select_frequency:"Select Frequency",minute:"Minute",hour:"Hour",day_month:"Day of month",month:"Month",day_week:"Day of week"},confirm_delete:"You will not be able to recover this Invoice | You will not be able to recover these Invoices",created_message:"Recurring Invoice created successfully",updated_message:"Recurring Invoice updated successfully",deleted_message:"Recurring Invoice deleted successfully | Recurring Invoices deleted successfully",marked_as_sent_message:"Recurring Invoice marked as sent successfully",user_email_does_not_exist:"User email does not exist",something_went_wrong:"something went wrong",invalid_due_amount_message:"Total Recurring Invoice amount cannot be less than total paid amount for this Recurring Invoice. Please update the invoice or delete the associated payments to continue."},TB={title:"Payments",payments_list:"Payments List",record_payment:"Record Payment",customer:"Customer",date:"Date",amount:"Amount",action:"Action",payment_number:"Payment Number",payment_mode:"Payment Mode",invoice:"Invoice",note:"Note",add_payment:"Add Payment",new_payment:"New Payment",edit_payment:"Edit Payment",view_payment:"View Payment",add_new_payment:"Add New Payment",send_payment_receipt:"Send Payment Receipt",send_payment:"Send Payment",save_payment:"Save Payment",update_payment:"Update Payment",payment:"Payment | Payments",no_payments:"No payments yet!",not_selected:"Not selected",no_invoice:"No invoice",no_matching_payments:"There are no matching payments!",list_of_payments:"This section will contain the list of payments.",select_payment_mode:"Select payment mode",confirm_mark_as_sent:"This estimate will be marked as sent",confirm_send_payment:"This payment will be sent via email to the customer",send_payment_successfully:"Payment sent successfully",something_went_wrong:"something went wrong",confirm_delete:"You will not be able to recover this Payment | You will not be able to recover these Payments",created_message:"Payment created successfully",updated_message:"Payment updated successfully",deleted_message:"Payment deleted successfully | Payments deleted successfully",invalid_amount_message:"Payment amount is invalid"},IB={title:"Expenses",expenses_list:"Expenses List",select_a_customer:"Select a customer",expense_title:"Title",customer:"Customer",currency:"Currency",contact:"Contact",category:"Category",from_date:"From Date",to_date:"To Date",expense_date:"Date",description:"Description",receipt:"Receipt",amount:"Amount",action:"Action",not_selected:"Not selected",note:"Note",category_id:"Category Id",date:"Date",add_expense:"Add Expense",add_new_expense:"Add New Expense",save_expense:"Save Expense",update_expense:"Update Expense",download_receipt:"Download Receipt",edit_expense:"Edit Expense",new_expense:"New Expense",expense:"Expense | Expenses",no_expenses:"No expenses yet!",list_of_expenses:"This section will contain the list of expenses.",confirm_delete:"You will not be able to recover this Expense | You will not be able to recover these Expenses",created_message:"Expense created successfully",updated_message:"Expense updated successfully",deleted_message:"Expense deleted successfully | Expenses deleted successfully",categories:{categories_list:"Categories List",title:"Title",name:"Name",description:"Description",amount:"Amount",actions:"Actions",add_category:"Add Category",new_category:"New Category",category:"Category | Categories",select_a_category:"Select a category"}},NB={email:"Email",password:"Password",forgot_password:"Forgot Password?",or_signIn_with:"or Sign in with",login:"Login",register:"Register",reset_password:"Reset Password",password_reset_successfully:"Password Reset Successfully",enter_email:"Enter email",enter_password:"Enter Password",retype_password:"Retype Password"},FB={buy_now:"Buy Now",install:"Install",price:"Price",download_zip_file:"Download ZIP file",unzipping_package:"Unzipping Package",copying_files:"Copying Files",deleting_files:"Deleting Unused files",completing_installation:"Completing Installation",update_failed:"Update Failed",install_success:"Module has been installed successfully!",customer_reviews:"Reviews",license:"License",faq:"FAQ",monthly:"Monthly",yearly:"Yearly",updated:"Updated",version:"Version",disable:"Disable",module_disabled:"Module Disabled",enable:"Enable",module_enabled:"Module Enabled",update_to:"Update To",module_updated:"Module Updated Successfully!",title:"Modules",module:"Module | Modules",api_token:"API token",invalid_api_token:"Invalid API Token.",other_modules:"Other Modules",view_all:"View All",no_reviews_found:"There are no reviews for this module yet!",module_not_purchased:"Module Not Purchased",module_not_found:"Module Not Found",version_not_supported:"The minimum required version for this module does not match. Please upgrade your invoiceshelf app to version: {version} to proceed.",last_updated:"Last Updated On",connect_installation:"Connect your installation",api_token_description:"Login to {url} and connect this installation by entering the API Token. Your purchased modules will show up here after the connection is established.",view_module:"View Module",update_available:"Update Available",purchased:"Purchased",installed:"Installed",no_modules_installed:"No Modules Installed Yet!",disable_warning:"All the settings for this particular will be reverted.",what_you_get:"What you get"},MB={title:"Users",users_list:"Users List",name:"Name",description:"Description",added_on:"Added On",date_of_creation:"Date Of Creation",action:"Action",add_user:"Add User",save_user:"Save User",update_user:"Update User",user:"User | Users",add_new_user:"Add New User",new_user:"New User",edit_user:"Edit User",no_users:"No users yet!",list_of_users:"This section will contain the list of users.",email:"Email",phone:"Phone",password:"Password",user_attached_message:"Cannot delete an item which is already in use",confirm_delete:"You will not be able to recover this User | You will not be able to recover these Users",created_message:"User created successfully",updated_message:"User updated successfully",deleted_message:"User deleted successfully | Users deleted successfully",select_company_role:"Select Role for {company}",companies:"Companies"},RB={title:"Report",from_date:"From Date",to_date:"To Date",status:"Status",paid:"Paid",unpaid:"Unpaid",download_pdf:"Download PDF",view_pdf:"View PDF",update_report:"Update Report",report:"Report | Reports",profit_loss:{profit_loss:"Profit & Loss",to_date:"To Date",from_date:"From Date",date_range:"Select Date Range"},sales:{sales:"Sales",date_range:"Select Date Range",to_date:"To Date",from_date:"From Date",report_type:"Report Type"},taxes:{taxes:"Taxes",to_date:"To Date",from_date:"From Date",date_range:"Select Date Range"},errors:{required:"Field is required"},invoices:{invoice:"Invoice",invoice_date:"Invoice Date",due_date:"Due Date",amount:"Amount",contact_name:"Contact Name",status:"Status"},estimates:{estimate:"Estimate",estimate_date:"Estimate Date",due_date:"Due Date",estimate_number:"Estimate Number",ref_number:"Ref Number",amount:"Amount",contact_name:"Contact Name",status:"Status"},expenses:{expenses:"Expenses",category:"Category",date:"Date",amount:"Amount",to_date:"To Date",from_date:"From Date",date_range:"Select Date Range"}},OB={menu_title:{account_settings:"Account Settings",company_information:"Company Information",customization:"Customization",preferences:"Preferences",notifications:"Notifications",tax_types:"Tax Types",expense_category:"Expense Categories",update_app:"Update App",backup:"Backup",file_disk:"File Disk",custom_fields:"Custom Fields",payment_modes:"Payment Modes",notes:"Notes",exchange_rate:"Exchange Rate",address_information:"Address Information"},address_information:{section_description:" You can update Your Address information using form below."},title:"Settings",setting:"Settings | Settings",general:"General",language:"Language",primary_currency:"Primary Currency",timezone:"Time Zone",date_format:"Date Format",currencies:{title:"Currencies",currency:"Currency | Currencies",currencies_list:"Currencies List",select_currency:"Select Currency",name:"Name",code:"Code",symbol:"Symbol",precision:"Precision",thousand_separator:"Thousand Separator",decimal_separator:"Decimal Separator",position:"Position",position_of_symbol:"Position Of Symbol",right:"Right",left:"Left",action:"Action",add_currency:"Add Currency"},mail:{host:"Mail Host",port:"Mail Port",driver:"Mail Driver",secret:"Secret",mailgun_secret:"Mailgun Secret",mailgun_domain:"Domain",mailgun_endpoint:"Mailgun Endpoint",ses_secret:"SES Secret",ses_key:"SES Key",password:"Mail Password",username:"Mail Username",mail_config:"Mail Configuration",from_name:"From Mail Name",from_mail:"From Mail Address",encryption:"Mail Encryption",mail_config_desc:"Below is the form for Configuring Email driver for sending emails from the app. You can also configure third party providers like Sendgrid, SES etc."},pdf:{title:"PDF Setting",footer_text:"Footer Text",pdf_layout:"PDF Layout"},company_info:{company_info:"Company info",company_name:"Company Name",company_logo:"Company Logo",section_description:"Information about your company that will be displayed on invoices, estimates and other documents created by InvoiceShelf.",phone:"Phone",country:"Country",state:"State",city:"City",address:"Address",zip:"Zip",save:"Save",delete:"Delete",updated_message:"Company information updated successfully",delete_company:"Delete Company",delete_company_description:"Once you delete your company, you will lose all the data and files associated with it permanently.",are_you_absolutely_sure:"Are you absolutely sure?",delete_company_modal_desc:"This action cannot be undone. This will permanently delete {company} and all of its associated data.",delete_company_modal_label:"Please type {company} to confirm"},custom_fields:{title:"Custom Fields",section_description:"Customize your Invoices, Estimates & Payment Receipts with your own fields. Make sure to use the below added fields on the address formats on Customization settings page.",add_custom_field:"Add Custom Field",edit_custom_field:"Edit Custom Field",field_name:"Field Name",label:"Label",type:"Type",name:"Name",slug:"Slug",required:"Required",placeholder:"Placeholder",help_text:"Help Text",default_value:"Default Value",prefix:"Prefix",starting_number:"Starting Number",model:"Model",help_text_description:"Enter some text to help users understand the purpose of this custom field.",suffix:"Suffix",yes:"Yes",no:"No",order:"Order",custom_field_confirm_delete:"You will not be able to recover this Custom Field",already_in_use:"Custom Field is already in use",deleted_message:"Custom Field deleted successfully",options:"options",add_option:"Add Options",add_another_option:"Add another option",sort_in_alphabetical_order:"Sort in Alphabetical Order",add_options_in_bulk:"Add options in bulk",use_predefined_options:"Use Predefined Options",select_custom_date:"Select Custom Date",select_relative_date:"Select Relative Date",ticked_by_default:"Ticked by default",updated_message:"Custom Field updated successfully",added_message:"Custom Field added successfully",press_enter_to_add:"Press enter to add new option",model_in_use:"Cannot update model for fields which are already in use.",type_in_use:"Cannot update type for fields which are already in use."},customization:{customization:"customization",updated_message:"Company information updated successfully",save:"Save",insert_fields:"Insert Fields",learn_custom_format:"Learn how to use custom format",add_new_component:"Add New Component",component:"Component",Parameter:"Parameter",series:"Series",series_description:"To set a static prefix/postfix like 'INV' across your company. It supports character length of up to 6 chars.",series_param_label:"Series Value",delimiter:"Delimiter",delimiter_description:"Single character for specifying the boundary between 2 separate components. By default its set to -",delimiter_param_label:"Delimiter Value",date_format:"Date Format",date_format_description:"A local date and time field which accepts a format parameter. The default format: 'Y' renders the current year.",date_format_param_label:"Format",sequence:"Sequence",sequence_description:"Consecutive sequence of numbers across your company. You can specify the length on the given parameter.",sequence_param_label:"Sequence Length",customer_series:"Customer Series",customer_series_description:"To set a different prefix/postfix for each customer.",customer_sequence:"Customer Sequence",customer_sequence_description:"Consecutive sequence of numbers for each of your customer.",customer_sequence_param_label:"Sequence Length",random_sequence:"Random Sequence",random_sequence_description:"Random alphanumeric string. You can specify the length on the given parameter.",random_sequence_param_label:"Sequence Length",invoices:{title:"Invoices",invoice_number_format:"Invoice Number Format",invoice_number_format_description:"Customize how your invoice number gets generated automatically when you create a new invoice.",preview_invoice_number:"Preview Invoice Number",due_date:"Due Date",due_date_description:"Specify how due date is automatically set when you create an invoice.",due_date_days:"Invoice Due after days",set_due_date_automatically:"Set Due Date Automatically",set_due_date_automatically_description:"Enable this if you wish to set due date automatically when you create a new invoice.",default_formats:"Default Formats",default_formats_description:"Below given formats are used to fill up the fields automatically on invoice creation.",default_invoice_email_body:"Default Invoice Email Body",company_address_format:"Company Address Format",shipping_address_format:"Shipping Address Format",billing_address_format:"Billing Address Format",invoice_email_attachment:"Send invoices as attachments",invoice_email_attachment_setting_description:"Enable this if you want to send invoices as email attachment. Please note that 'View Invoice' button in emails will not be displayed anymore when enabled.",invoice_settings_updated:"Invoice Settings updated successfully",retrospective_edits:"Retrospective Edits",allow:"Allow",disable_on_invoice_partial_paid:"Disable after partial payment is recorded",disable_on_invoice_paid:"Disable after full payment is recorded",disable_on_invoice_sent:"Disable after invoice is sent",retrospective_edits_description:" Based on your country's laws or your preference, you can restrict users from editing finalised invoices."},estimates:{title:"Estimates",estimate_number_format:"Estimate Number Format",estimate_number_format_description:"Customize how your estimate number gets generated automatically when you create a new estimate.",preview_estimate_number:"Preview Estimate Number",expiry_date:"Expiry Date",expiry_date_description:"Specify how expiry date is automatically set when you create an estimate.",expiry_date_days:"Estimate Expires after days",set_expiry_date_automatically:"Set Expiry Date Automatically",set_expiry_date_automatically_description:"Enable this if you wish to set expiry date automatically when you create a new estimate.",default_formats:"Default Formats",default_formats_description:"Below given formats are used to fill up the fields automatically on estimate creation.",default_estimate_email_body:"Default Estimate Email Body",company_address_format:"Company Address Format",shipping_address_format:"Shipping Address Format",billing_address_format:"Billing Address Format",estimate_email_attachment:"Send estimates as attachments",estimate_email_attachment_setting_description:"Enable this if you want to send the estimates as an email attachment. Please note that 'View Estimate' button in emails will not be displayed anymore when enabled.",estimate_settings_updated:"Estimate Settings updated successfully",convert_estimate_options:"Estimate Convert Action",convert_estimate_description:"Specify what happens to the estimate after it gets converted to an invoice.",no_action:"No action",delete_estimate:"Delete estimate",mark_estimate_as_accepted:"Mark estimate as accepted"},payments:{title:"Payments",payment_number_format:"Payment Number Format",payment_number_format_description:"Customize how your payment number gets generated automatically when you create a new payment.",preview_payment_number:"Preview Payment Number",default_formats:"Default Formats",default_formats_description:"Below given formats are used to fill up the fields automatically on payment creation.",default_payment_email_body:"Default Payment Email Body",company_address_format:"Company Address Format",from_customer_address_format:"From Customer Address Format",payment_email_attachment:"Send payments as attachments",payment_email_attachment_setting_description:"Enable this if you want to send the payment receipts as an email attachment. Please note that 'View Payment' button in emails will not be displayed anymore when enabled.",payment_settings_updated:"Payment Settings updated successfully"},items:{title:"Items",units:"Units",add_item_unit:"Add Item Unit",edit_item_unit:"Edit Item Unit",unit_name:"Unit Name",item_unit_added:"Item Unit Added",item_unit_updated:"Item Unit Updated",item_unit_confirm_delete:"You will not be able to recover this Item unit",already_in_use:"Item Unit is already in use",deleted_message:"Item Unit deleted successfully"},notes:{title:"Notes",description:"Save time by creating notes and reusing them on your invoices, estimates & payments.",notes:"Notes",type:"Type",add_note:"Add Note",add_new_note:"Add New Note",name:"Name",edit_note:"Edit Note",note_added:"Note added successfully",note_updated:"Note Updated successfully",note_confirm_delete:"You will not be able to recover this Note",already_in_use:"Note is already in use",deleted_message:"Note deleted successfully"}},account_settings:{profile_picture:"Profile Picture",name:"Name",email:"Email",password:"Password",confirm_password:"Confirm Password",account_settings:"Account Settings",save:"Save",section_description:"You can update your name, email & password using the form below.",updated_message:"Account Settings updated successfully"},user_profile:{name:"Name",email:"Email",password:"Password",confirm_password:"Confirm Password"},notification:{title:"Notifications",email:"Send Notifications to",description:"Which email notifications would you like to receive when something changes?",invoice_viewed:"Invoice viewed",invoice_viewed_desc:"When your customer views the invoice sent via invoiceshelf dashboard.",estimate_viewed:"Estimate viewed",estimate_viewed_desc:"When your customer views the estimate sent via invoiceshelf dashboard.",save:"Save",email_save_message:"Email saved successfully",please_enter_email:"Please Enter Email"},roles:{title:"Roles",description:"Manage the roles & permissions of this company",save:"Save",add_new_role:"Add New Role",role_name:"Role Name",added_on:"Added on",add_role:"Add Role",edit_role:"Edit Role",name:"Name",permission:"Permission | Permissions",select_all:"Select All",none:"None",confirm_delete:"You will not be able to recover this Role",created_message:"Role created successfully",updated_message:"Role updated successfully",deleted_message:"Role deleted successfully",already_in_use:"Role is already in use"},exchange_rate:{exchange_rate:"Exchange Rate",title:"Fix Currency Exchange issues",description:"Please enter exchange rate of all the currencies mentioned below to help InvoiceShelf properly calculate the amounts in {currency}.",drivers:"Drivers",new_driver:"Add New Provider",edit_driver:"Edit Provider",select_driver:"Select Driver",update:"select exchange rate ",providers_description:"Configure your exchange rate providers here to automatically fetch the latest exchange rate on transactions.",key:"API Key",name:"Name",driver:"Driver",is_default:"IS DEFAULT",currency:"Currencies",exchange_rate_confirm_delete:"You will not be able to recover this driver",created_message:"Provider Created successfully",updated_message:"Provider Updated Successfully",deleted_message:"Provider Deleted Successfully",error:" You cannot Delete Active Driver",default_currency_error:"This currency is already used in one of the Active Provider",exchange_help_text:"Enter exchange rate to convert from {currency} to {baseCurrency}",currency_freak:"Currency Freak",currency_layer:"Currency Layer",open_exchange_rate:"Open Exchange Rate",currency_converter:"Currency Converter",server:"Server",url:"URL",active:"Active",currency_help_text:"This provider will only be used on above selected currencies",currency_in_used:"The following currencies are already active on another provider. Please remove these currencies from selection to activate this provider again."},tax_types:{title:"Tax Types",add_tax:"Add Tax",edit_tax:"Edit Tax",description:"You can add or Remove Taxes as you please. InvoiceShelf supports Taxes on Individual Items as well as on the invoice.",add_new_tax:"Add New Tax",tax_settings:"Tax Settings",tax_per_item:"Tax Per Item",tax_name:"Tax Name",compound_tax:"Compound Tax",percent:"Percent",action:"Action",tax_setting_description:"Enable this if you want to add taxes to individual invoice items. By default, taxes are added directly to the invoice.",created_message:"Tax type created successfully",updated_message:"Tax type updated successfully",deleted_message:"Tax type deleted successfully",confirm_delete:"You will not be able to recover this Tax Type",already_in_use:"Tax is already in use"},payment_modes:{title:"Payment Modes",description:"Modes of transaction for payments",add_payment_mode:"Add Payment Mode",edit_payment_mode:"Edit Payment Mode",mode_name:"Mode Name",payment_mode_added:"Payment Mode Added",payment_mode_updated:"Payment Mode Updated",payment_mode_confirm_delete:"You will not be able to recover this Payment Mode",payments_attached:"This payment method is already attached to payments. Please delete the attached payments to proceed with deletion.",expenses_attached:"This payment method is already attached to expenses. Please delete the attached expenses to proceed with deletion.",deleted_message:"Payment Mode deleted successfully"},expense_category:{title:"Expense Categories",action:"Action",description:"Categories are required for adding expense entries. You can Add or Remove these categories according to your preference.",add_new_category:"Add New Category",add_category:"Add Category",edit_category:"Edit Category",category_name:"Category Name",category_description:"Description",created_message:"Expense Category created successfully",deleted_message:"Expense category deleted successfully",updated_message:"Expense category updated successfully",confirm_delete:"You will not be able to recover this Expense Category",already_in_use:"Category is already in use"},preferences:{currency:"Currency",default_language:"Default Language",time_zone:"Time Zone",fiscal_year:"Financial Year",date_format:"Date Format",discount_setting:"Discount Setting",discount_per_item:"Discount Per Item ",discount_setting_description:"Enable this if you want to add Discount to individual invoice items. By default, Discount is added directly to the invoice.",expire_public_links:"Automatically Expire Public Links",expire_setting_description:"Specify whether you would like to expire all the links sent by application to view invoices, estimates & payments, etc after a specified duration.",save:"Save",preference:"Preference | Preferences",general_settings:"Default preferences for the system.",updated_message:"Preferences updated successfully",select_language:"Select Language",select_time_zone:"Select Time Zone",select_date_format:"Select Date Format",select_financial_year:"Select Financial Year",recurring_invoice_status:"Recurring Invoice Status",create_status:"Create Status",active:"Active",on_hold:"On Hold",update_status:"Update Status",completed:"Completed",company_currency_unchangeable:"Company currency cannot be changed"},update_app:{title:"Update App",description:"You can easily update InvoiceShelf by checking for a new update by clicking the button below",check_update:"Check for updates",avail_update:"New Update available",next_version:"Next version",requirements:"Requirements",update:"Update Now",update_progress:"Update in progress...",progress_text:"It will just take a few minutes. Please do not refresh the screen or close the window before the update finishes",update_success:"App has been updated! Please wait while your browser window gets reloaded automatically.",latest_message:"No update available! You are on the latest version.",current_version:"Current Version",download_zip_file:"Download ZIP file",unzipping_package:"Unzipping Package",copying_files:"Copying Files",deleting_files:"Deleting Unused files",running_migrations:"Running Migrations",finishing_update:"Finishing Update",update_failed:"Update Failed",update_failed_text:"Sorry! Your update failed on : {step} step",update_warning:"All of the application files and default template files will be overwritten when you update the application using this utility. Please take a backup of your templates & database before updating."},backup:{title:"Backup | Backups",description:"The backup is a zipfile that contains all files in the directories you specify along with a dump of your database",new_backup:"Add New Backup",create_backup:"Create Backup",select_backup_type:"Select Backup Type",backup_confirm_delete:"You will not be able to recover this Backup",path:"path",new_disk:"New Disk",created_at:"created at",size:"size",dropbox:"dropbox",local:"local",healthy:"healthy",amount_of_backups:"amount of backups",newest_backups:"newest backups",used_storage:"used storage",select_disk:"Select Disk",action:"Action",deleted_message:"Backup deleted successfully",created_message:"Backup created successfully",invalid_disk_credentials:"Invalid credential of selected disk"},disk:{title:"File Disk | File Disks",description:"By default, InvoiceShelf will use your local disk for saving backups, avatar and other image files. You can configure more than one disk drivers like DigitalOcean, S3 and Dropbox according to your preference.",created_at:"created at",dropbox:"dropbox",name:"Name",driver:"Driver",disk_type:"Type",disk_name:"Disk Name",new_disk:"Add New Disk",filesystem_driver:"Filesystem Driver",local_driver:"local Driver",local_root:"local Root",public_driver:"Public Driver",public_root:"Public Root",public_url:"Public URL",public_visibility:"Public Visibility",media_driver:"Media Driver",media_root:"Media Root",aws_driver:"AWS Driver",aws_key:"AWS Key",aws_secret:"AWS Secret",aws_region:"AWS Region",aws_bucket:"AWS Bucket",aws_root:"AWS Root",do_spaces_type:"Do Spaces type",do_spaces_key:"Do Spaces key",do_spaces_secret:"Do Spaces Secret",do_spaces_region:"Do Spaces Region",do_spaces_bucket:"Do Spaces Bucket",do_spaces_endpoint:"Do Spaces Endpoint",do_spaces_root:"Do Spaces Root",dropbox_type:"Dropbox Type",dropbox_token:"Dropbox Token",dropbox_key:"Dropbox Key",dropbox_secret:"Dropbox Secret",dropbox_app:"Dropbox App",dropbox_root:"Dropbox Root",default_driver:"Default Driver",is_default:"IS DEFAULT",set_default_disk:"Set Default Disk",set_default_disk_confirm:"This disk will be set as default and all the new PDFs will be saved on this disk",success_set_default_disk:"Disk set as default successfully",save_pdf_to_disk:"Save PDFs to Disk",disk_setting_description:" Enable this, if you wish to save a copy of each Invoice, Estimate & Payment Receipt PDF on your default disk automatically. Turning this option will decrease the load-time when viewing the PDFs.",select_disk:"Select Disk",disk_settings:"Disk Settings",confirm_delete:"Your existing files & folders in the specified disk will not be affected but your disk configuration will be deleted from InvoiceShelf",action:"Action",edit_file_disk:"Edit File Disk",success_create:"Disk added successfully",success_update:"Disk updated successfully",error:"Disk addition failed",deleted_message:"File Disk deleted successfully",disk_variables_save_successfully:"Disk Configured Successfully",disk_variables_save_error:"Disk configuration failed.",invalid_disk_credentials:"Invalid credential of selected disk"},taxations:{add_billing_address:"Enter Billing Address",add_shipping_address:"Enter Shipping Address",add_company_address:"Enter Company Address",modal_description:"The information below is required in order to fetch sales tax.",add_address:"Add Address for fetching sales tax.",address_placeholder:"Example: 123, My Street",city_placeholder:"Example: Los Angeles",state_placeholder:"Example: CA",zip_placeholder:"Example: 90024",invalid_address:"Please provide valid address details."}},$B={account_info:"Account Information",account_info_desc:"Below details will be used to create the main Administrator account. Also you can change the details anytime after logging in.",name:"Name",email:"Email",password:"Password",confirm_password:"Confirm Password",save_cont:"Save & Continue",company_info:"Company Information",company_info_desc:"This information will be displayed on invoices. Note that you can edit this later on settings page.",company_name:"Company Name",company_logo:"Company Logo",logo_preview:"Logo Preview",preferences:"Company Preferences",preferences_desc:"Specify the default preferences for this company.",currency_set_alert:"The company's currency cannot be changed later.",country:"Country",state:"State",city:"City",address:"Address",street:"Street1 | Street2",phone:"Phone",zip_code:"Zip Code",go_back:"Go Back",currency:"Currency",language:"Language",time_zone:"Time Zone",fiscal_year:"Financial Year",date_format:"Date Format",from_address:"From Address",username:"Username",next:"Next",continue:"Continue",skip:"Skip",database:{database:"Site URL & Database",connection:"Database Connection",host:"Database Host",port:"Database Port",password:"Database Password",app_url:"App URL",app_domain:"App Domain",username:"Database Username",db_name:"Database Name",db_path:"Database Path",desc:"Create a database on your server and set the credentials using the form below."},permissions:{permissions:"Permissions",permission_confirm_title:"Are you sure you want to continue?",permission_confirm_desc:"Folder permission check failed",permission_desc:"Below is the list of folder permissions which are required in order for the app to work. If the permission check fails, make sure to update your folder permissions."},verify_domain:{title:"Domain Verification",desc:"InvoiceShelf uses Session based authentication which requires domain verification for security purposes. Please enter the domain on which you will be accessing your web application.",app_domain:"App Domain",verify_now:"Verify Now",success:"Domain Verify Successfully.",failed:"Domain verification failed. Please enter valid domain name.",verify_and_continue:"Verify And Continue"},mail:{host:"Mail Host",port:"Mail Port",driver:"Mail Driver",secret:"Secret",mailgun_secret:"Mailgun Secret",mailgun_domain:"Domain",mailgun_endpoint:"Mailgun Endpoint",ses_secret:"SES Secret",ses_key:"SES Key",password:"Mail Password",username:"Mail Username",mail_config:"Mail Configuration",from_name:"From Mail Name",from_mail:"From Mail Address",encryption:"Mail Encryption",mail_config_desc:"Below is the form for Configuring Email driver for sending emails from the app. You can also configure third party providers like Sendgrid, SES etc."},req:{system_req:"System Requirements",php_req_version:"Php (version {version} required)",check_req:"Check Requirements",system_req_desc:"InvoiceShelf has a few server requirements. Make sure that your server has the required php version and all the extensions mentioned below."},errors:{migrate_failed:"Migrate Failed",database_variables_save_error:"Cannot write configuration to .env file. Please check its file permissions",mail_variables_save_error:"Email configuration failed.",connection_failed:"Database connection failed",database_should_be_empty:"Database should be empty"},success:{mail_variables_save_successfully:"Email configured successfully",database_variables_save_successfully:"Database configured successfully."}},LB={invalid_phone:"Invalid Phone Number",invalid_url:"Invalid url (ex: http://www.invoiceshelf.com)",invalid_domain_url:"Invalid url (ex: invoiceshelf.com)",required:"Field is required",email_incorrect:"Incorrect Email.",email_already_taken:"The email has already been taken.",email_does_not_exist:"User with given email doesn't exist",item_unit_already_taken:"This item unit name has already been taken",payment_mode_already_taken:"This payment mode name has already been taken",send_reset_link:"Send Reset Link",not_yet:"Not yet? Send it again",password_min_length:"Password must contain {count} characters",name_min_length:"Name must have at least {count} letters.",prefix_min_length:"Prefix must have at least {count} letters.",enter_valid_tax_rate:"Enter valid tax rate",numbers_only:"Numbers Only.",characters_only:"Characters Only.",password_incorrect:"Passwords must be identical",password_length:"Password must be {count} character long.",qty_must_greater_than_zero:"Quantity must be greater than zero.",price_greater_than_zero:"Price must be greater than zero.",payment_greater_than_zero:"Payment must be greater than zero.",payment_greater_than_due_amount:"Entered Payment is more than due amount of this invoice.",quantity_maxlength:"Quantity should not be greater than 20 digits.",price_maxlength:"Price should not be greater than 20 digits.",price_minvalue:"Price should be greater than 0.",amount_maxlength:"Amount should not be greater than 20 digits.",amount_minvalue:"Amount should be greater than 0.",discount_maxlength:"Discount should not be greater than max discount",description_maxlength:"Description should not be greater than 255 characters.",subject_maxlength:"Subject should not be greater than 100 characters.",message_maxlength:"Message should not be greater than 255 characters.",maximum_options_error:"Maximum of {max} options selected. First remove a selected option to select another.",notes_maxlength:"Notes should not be greater than 65,000 characters.",address_maxlength:"Address should not be greater than 255 characters.",ref_number_maxlength:"Ref Number should not be greater than 255 characters.",prefix_maxlength:"Prefix should not be greater than 5 characters.",something_went_wrong:"something went wrong",number_length_minvalue:"Number length should be greater than 0",at_least_one_ability:"Please select atleast one Permission.",valid_driver_key:"Please enter a valid {driver} key.",valid_exchange_rate:"Please enter a valid exchange rate.",company_name_not_same:"Company name must match with given name."},BB={starter_plan:"This feature is available on Starter plan and onwards!",invalid_provider_key:"Please Enter Valid Provider API Key.",estimate_number_used:"The estimate number has already been taken.",invoice_number_used:"The invoice number has already been taken.",payment_attached:"This invoice already has a payment attached to it. Make sure to delete the attached payments first in order to go ahead with the removal.",payment_number_used:"The payment number has already been taken.",name_already_taken:"The name has already been taken.",receipt_does_not_exist:"Receipt does not exist.",customer_cannot_be_changed_after_payment_is_added:"Customer cannot be change after payment is added",invalid_credentials:"Invalid Credentials.",not_allowed:"Not Allowed",login_invalid_credentials:"These credentials do not match our records.",enter_valid_cron_format:"Please enter a valid cron format",email_could_not_be_sent:"Email could not be sent to this email address.",invalid_address:"Please enter a valid address.",invalid_key:"Please enter valid key.",invalid_state:"Please enter a valid state.",invalid_city:"Please enter a valid city.",invalid_postal_code:"Please enter a valid zip.",invalid_format:"Please enter valid query string format.",api_error:"Server not responding.",feature_not_enabled:"Feature not enabled.",request_limit_met:"Api request limit exceeded.",address_incomplete:"Incomplete Address"},UB="Estimate",VB="Estimate Number",qB="Estimate Date",HB="Expiry Date",WB="Invoice",KB="Invoice Number",YB="Invoice Date",ZB="Due date",GB="Notes",QB="Items",JB="Quantity",XB="Price",eU="Discount",tU="Amount",aU="Subtotal",nU="Total",iU="Payment",oU="PAYMENT RECEIPT",rU="Payment Date",sU="Payment Number",lU="Payment Mode",cU="Amount Received",dU="EXPENSES REPORT",uU="TOTAL EXPENSE",_U="PROFIT & LOSS REPORT",mU="Sales Customer Report",pU="Sales Item Report",fU="Tax Summary Report",hU="INCOME",gU="NET PROFIT",vU="Sales Report: By Customer",yU="TOTAL SALES",bU="Sales Report: By Item",kU="TAX REPORT",wU="TOTAL TAX",xU="Tax Types",DU="Expenses",SU="Bill to,",zU="Ship to,",PU="Received from:",EU="Tax",AU={navigation:bB,general:kB,dashboard:wB,tax_types:xB,global_search:DB,company_switcher:SB,dateRange:zB,customers:PB,items:EB,estimates:AB,invoices:CB,recurring_invoices:jB,payments:TB,expenses:IB,login:NB,modules:FB,users:MB,reports:RB,settings:OB,wizard:$B,validation:LB,errors:BB,pdf_estimate_label:UB,pdf_estimate_number:VB,pdf_estimate_date:qB,pdf_estimate_expire_date:HB,pdf_invoice_label:WB,pdf_invoice_number:KB,pdf_invoice_date:YB,pdf_invoice_due_date:ZB,pdf_notes:GB,pdf_items_label:QB,pdf_quantity_label:JB,pdf_price_label:XB,pdf_discount_label:eU,pdf_amount_label:tU,pdf_subtotal:aU,pdf_total:nU,pdf_payment_label:iU,pdf_payment_receipt_label:oU,pdf_payment_date:rU,pdf_payment_number:sU,pdf_payment_mode:lU,pdf_payment_amount_received_label:cU,pdf_expense_report_label:dU,pdf_total_expenses_label:uU,pdf_profit_loss_label:_U,pdf_sales_customers_label:mU,pdf_sales_items_label:pU,pdf_tax_summery_label:fU,pdf_income_label:hU,pdf_net_profit_label:gU,pdf_customer_sales_report:vU,pdf_total_sales_label:yU,pdf_item_sales_label:bU,pdf_tax_report_label:kU,pdf_total_tax_label:wU,pdf_tax_types_label:xU,pdf_expenses_label:DU,pdf_bill_to:SU,pdf_ship_to:zU,pdf_received_from:PU,pdf_tax_label:EU},CU={dashboard:"Tableau de bord",customers:"Clients",items:"Articles",invoices:"Factures","recurring-invoices":"Factures récurrentes",expenses:"Dépenses",estimates:"Devis",payments:"Paiements",reports:"Rapports",settings:"Paramètres",logout:"Déconnexion",users:"Utilisateurs",modules:"Modules"},jU={add_company:"Ajouter une entreprise",view_pdf:"Afficher le PDF",copy_pdf_url:"Copier l'URL du PDF",download_pdf:"Télécharger le PDF",save:"Enregistrer",create:"Créer",cancel:"Annuler",update:"Mettre à jour",deselect:"Enlever",download:"Télécharger",from_date:"Du",to_date:"Au",from:"Du",to:"Au",ok:"Ok",yes:"Oui",no:"Non",sort_by:"Trier par",ascending:"Ascendant",descending:"Descendant",subject:"Objet",body:"Message",message:"Message",send:"Envoyer",preview:"Aperçu",go_back:"Retourner",back_to_login:"Revenir à la page de connexion ?",home:"Tableau de bord",filter:"Filtrer",delete:"Supprimer",edit:"Modifier",view:"Afficher",add_new_item:"Ajouter une ligne",clear_all:"Tout supprimer",showing:"Affichage ",of:"sur",actions:"Actions",subtotal:"SOUS-TOTAL",discount:"REMISE",fixed:"Fixe",percentage:"Pourcentage",tax:"TAXE",total_amount:"TOTAL ",bill_to:"Facturer à",ship_to:"Expédier à",due:"En cours",draft:"Brouillon",sent:"Envoyée",all:"Tout",select_all:"Tout sélectionner",select_template:"Modèle",choose_file:"Cliquez ici pour choisir un fichier",choose_template:"Choisissez un modèle",choose:"Choisir",remove:"Supprimer",select_a_status:"Sélectionnez un statut",select_a_tax:"Sélectionnez une taxe",search:"Rechercher",are_you_sure:"Êtes-vous sûr ?",list_is_empty:"La liste est vide.",no_tax_found:"Aucune taxe trouvée !",four_zero_four:"404",you_got_lost:"Oups! Vous vous êtes perdus!",go_home:"Retour au tableau de bord",test_mail_conf:"Envoyer un email de test",send_mail_successfully:"Email envoyé",setting_updated:"Paramètres mis à jour",select_state:"Sélectionnez l'état",select_country:"Choisissez le pays",select_city:"Sélectionnez une ville",street_1:"Rue, voie, boite postale",street_2:"Bâtiment, étage, lieu-dit, complément,...",action_failed:"Action : échoué",retry:"Réessayez",choose_note:"Choisissez une note de bas de page",no_note_found:"Aucune note de bas de page trouvée",insert_note:"Insérer une note",copied_pdf_url_clipboard:"L'adresse du PDF a été copiée.",copied_url_clipboard:"URL copiée vers le presse-papier!",docs:"Documents",do_you_wish_to_continue:"Voulez-vous continuer ?",note:"Note de bas de page",pay_invoice:"Payer facture",login_successfully:"Identifié avec succès!",logged_out_successfully:"Déconnecté avec succès",mark_as_default:"Marquer par défaut"},TU={select_year:"Sélectionnez l'année",cards:{due_amount:"Encours clients",customers:"Clients",invoices:"Factures",estimates:"Devis",payments:"Paiements"},chart_info:{total_sales:"Ventes",total_receipts:"Recettes",total_expense:"Dépenses",net_income:"Résultat",year:"Sélectionnez l'année"},monthly_chart:{title:"Recettes et dépenses"},recent_invoices_card:{title:"Factures en cours",due_on:"Échéance",customer:"Client",amount_due:"Montant",actions:"Actions",view_all:"Tout afficher"},recent_estimate_card:{title:"Devis récents",date:"Expiration",customer:"Client",amount_due:"Montant",actions:"Actions",view_all:"Tout afficher"}},IU={name:"Nom",description:"Description",percent:"Pourcentage",compound_tax:"Taxe composée"},NU={search:"Rechercher",customers:"Clients",users:"Utilisateurs",no_results_found:"Aucun résultat"},FU={label:"CHANGER DE SOCIÉTÉ",no_results_found:"Aucun résultat",add_new_company:"Ajouter une société",new_company:"Nouvelle société",created_message:"Société créée"},MU={today:"Aujourd'hui",this_week:"Cette semaine",this_month:"Ce mois",this_quarter:"Ce trimestre",this_year:"Cette année",previous_week:"Semaine précédente",previous_month:"Mois précédent",previous_quarter:"Trimestre précédent",previous_year:"Année précédente",custom:"Personnalisée"},RU={title:"Clients",prefix:"Code client",add_customer:"Ajouter un client",contacts_list:"Liste de clients",name:"Nom",mail:"Email | Emails",statement:"Déclaration",display_name:"Nom",primary_contact_name:"Contact principal",contact_name:"Contact",amount_due:"Montant dû",email:"Email",address:"Adresse",phone:"Téléphone",website:"Site Internet",overview:"Aperçu",invoice_prefix:"Préfixe de facture",estimate_prefix:"Préfixe des devis",payment_prefix:"Préfixe de paiement",enable_portal:"Activer le portail",country:"Pays",state:"État",city:"Ville",zip_code:"Code postal",added_on:"Ajouté le",action:"Action",password:"Mot de passe",confirm_password:"Confirmez le mot de passe",street_number:"Numéro de rue",primary_currency:"Devise principale",description:"Description",add_new_customer:"Ajouter un client",save_customer:"Enregistrer",update_customer:"Enregistrer",customer:"Client | Clients",new_customer:"Nouveau client",edit_customer:"Modifier le client",basic_info:"Informations de base",portal_access:"Accès Portail",portal_access_text:"Souhaitez vous autoriser ce client à se connecter au Portail Client ?",portal_access_url:"URL de connexion Portail Client",portal_access_url_help:"Veuillez copiez et envoyez le lien ci-dessus au client pour lui fournir l'accès au portail.",billing_address:"Adresse de facturation",shipping_address:"Adresse de livraison",copy_billing_address:"Copier depuis l'adresse de facturation",no_customers:"Vous n’avez pas encore de clients !",no_customers_found:"Aucun client",no_contact:"-",no_contact_name:"-",list_of_customers:"Ajoutez des clients et retrouvez-les ici.",primary_display_name:"Nom d'affichage principal",select_currency:"Sélectionnez la devise",select_a_customer:"Sélectionnez un client",type_or_click:"Sélectionnez un article",new_transaction:"Ajouter une opération",no_matching_customers:"Il n'y a aucun client correspondant !",phone_number:"Numéro de téléphone",create_date:"Date de création",confirm_delete:"Vous ne pourrez pas récupérer ce client et les devis, factures et paiements associés. | Vous ne serez pas en mesure de récupérer ces clients et les devis, factures et paiements associés.",created_message:"Client créé",updated_message:"Client mis à jour",address_updated_message:"Adresse mise à jour avec succès",deleted_message:"Client supprimé | Clients supprimés",edit_currency_not_allowed:"Impossible de changer de devise une fois les transactions créées."},OU={title:"Articles",items_list:"Liste d'articles",name:"Nom",unit:"Unité",description:"Description",added_on:"Ajouté le",price:"Prix",date_of_creation:"Date de création",not_selected:"Aucun article sélectionné",action:"Action",add_item:"Nouvel article",save_item:"Enregistrer",update_item:"Enregistrer",item:"Article | Articles",add_new_item:"Ajouter un article",new_item:"Nouvel article",edit_item:"Modifier cet article",no_items:"Aucun article",list_of_items:"Ajoutez des articles et retrouvez-les ici",select_a_unit:"Sélectionnez l'unité",taxes:"Taxes",item_attached_message:"Impossible de supprimer un article déjà utilisé",confirm_delete:"Vous ne pourrez pas récupérer cet article | Vous ne pourrez pas récupérer ces objets",created_message:"Article créé",updated_message:"Article mis à jour",deleted_message:"Article supprimé avec succès | Articles supprimés avec succès"},$U={title:"Devis",accept_estimate:"Accepter devis",reject_estimate:"Rejeter devis",estimate:"Devis | Devis",estimates_list:"Liste des devis",days:"{days} jours",months:"{months} mois",years:"{years} Année",all:"Tous",paid:"Payé",unpaid:"Non payé",customer:"Client",ref_no:"Réf.",number:"N°",amount_due:"MONTANT",partially_paid:"Partiellement payé",total:"Total",discount:"Remise",sub_total:"Sous-total",estimate_number:"N°",ref_number:"Référence",contact:"Contact",add_item:"Ajouter un article",date:"Date",due_date:"Date d'échéance",expiry_date:"Date d'expiration",status:"Statut",add_tax:"Ajouter une taxe",amount:"Montant",action:"Action",notes:"Notes de bas de page",tax:"Taxe",estimate_template:"Modèle de devis",convert_to_invoice:"Convertir en facture",mark_as_sent:"Marquer comme envoyé",send_estimate:"Envoyer par email",resend_estimate:"Renvoyer le devis",record_payment:"Enregistrer un paiement",add_estimate:"Nouveau devis",save_estimate:"Enregistrer",confirm_conversion:"Ce devis sera utilisé pour créer une nouvelle facture.",conversion_message:"Conversion réussie",confirm_send_estimate:"Ce devis sera envoyée par email au client",confirm_mark_as_sent:"Ce devis sera marqué comme envoyé",confirm_mark_as_accepted:"Ce devis sera marqué comme accepté",confirm_mark_as_rejected:"Ce devis sera marqué comme rejeté",no_matching_estimates:"Aucune estimation correspondante !",mark_as_sent_successfully:"Devis marqué comme envoyé",send_estimate_successfully:"Devis envoyé",errors:{required:"Champ requis"},accepted:"Accepté",rejected:"Refusé",expired:"Expiré",sent:"Envoyé",draft:"Brouillon",viewed:"Consultée",declined:"Refusé",new_estimate:"Nouveau devis",add_new_estimate:"Nouveau devis",update_Estimate:"Enregistrer",edit_estimate:"Modifier ce devis",items:"articles",Estimate:"Devis | Devis",add_new_tax:"Ajouter une taxe",no_estimates:"Aucun devis",list_of_estimates:"Ajoutez des clients et retrouvez-les ici",mark_as_rejected:"Marquer comme rejeté",mark_as_accepted:"Marquer comme accepté",marked_as_accepted_message:"Devis marqué comme accepté",marked_as_rejected_message:"Devis marqué comme rejeté",confirm_delete:"Vous ne pourrez pas récupérer ce devis | Vous ne pourrez pas récupérer ces devis",created_message:"Devis créé",updated_message:"Devis mise à jour",deleted_message:"Devis supprimé | Devis supprimés",something_went_wrong:"quelque chose a mal tourné",item:{title:"Titre de l'article",description:"Description",quantity:"Quantité",price:"Prix",discount:"Remise",total:"Total",total_discount:"Remise totale",sub_total:"Sous-total",tax:"Taxe",amount:"Montant",select_an_item:"Sélectionnez un article",type_item_description:"Taper la description de l'article (facultatif)"},mark_as_default_estimate_template_description:"If enabled, the selected template will be automatically selected for new estimates."},LU={title:"Factures",download:"Télécharger",pay_invoice:"Payer facture",invoices_list:"Liste des factures",invoice_information:"Informations sur la facture",days:"{days} jours",months:"{months} mois",years:"{years} années",all:"Toutes",paid:"Payée",unpaid:"Non payée",viewed:"Consultée",overdue:"En retard",completed:"Payée",customer:"CLIENT",paid_status:"État du paiement",ref_no:"Réf.",number:"N°",amount_due:"MONTANT",partially_paid:"Partiellement payée",total:"Total",discount:"Remise",sub_total:"Sous-total",invoice:"Facture | Factures",invoice_number:"N°",ref_number:"Référence",contact:"Contact",add_item:"Nouvel article",date:"Date",due_date:"Date d'échéance",status:"Statut",add_tax:"Ajouter une taxe",amount:"Montant",action:"Action",notes:"Notes de bas de page",view:"Afficher",send_invoice:"Envoyer par email",resend_invoice:"Renvoyer la facture",invoice_template:"Modèle de facture",conversion_message:"Facture clonée",template:"Modèle",mark_as_sent:"Marquer comme envoyée",confirm_send_invoice:"Cette facture sera envoyée par email au client",invoice_mark_as_sent:"Cette facture sera marquée comme envoyé",confirm_mark_as_accepted:"Cette facture sera marquée comme acceptée",confirm_mark_as_rejected:"Cette facture sera marquée comme rejetée",confirm_send:"Cette facture sera envoyée par email au client",invoice_date:"Date",record_payment:"Enregistrer un paiement",add_new_invoice:"Nouvelle facture",update_expense:"Enregistrer la dépense",edit_invoice:"Modifier cette facture",new_invoice:"Nouvelle facture",save_invoice:"Enregistrer",update_invoice:"Enregistrer",add_new_tax:"Ajouter une taxe",no_invoices:"Aucune facture",mark_as_rejected:"Marquer comme rejetée",mark_as_accepted:"Marquer comme acceptée",list_of_invoices:"Ajoutez des factures et retrouvez-les ici",select_invoice:"Sélectionnez facture",no_matching_invoices:"Aucune facture correspondante !",mark_as_sent_successfully:"Facture marquée comme envoyée",invoice_sent_successfully:"Facture envoyée",cloned_successfully:"Facture clonée",clone_invoice:"Dupliquer",confirm_clone:"Cette facture sera dupliquée dans une nouvelle facture",item:{title:"Titre de l'article",description:"Description",quantity:"Quantité",price:"Prix",discount:"Remise",total:"Total",total_discount:"Remise totale",sub_total:"Sous-total",tax:"Taxe",amount:"Montant",select_an_item:"Sélectionnez un article",type_item_description:"Saisissez une description (facultatif)"},payment_attached_message:"Un paiement est lié à l'une des factures sélectionnées. Veuillez d'abord les supprimer, puis réessayez",confirm_delete:"Vous ne pourrez pas récupérer cette facture | Vous ne pourrez pas récupérer ces factures",created_message:"Facture créée",updated_message:"Facture mise à jour",deleted_message:"La facture a été supprimée | Les factures ont été supprimées",marked_as_sent_message:"Facture supprimée | Factures supprimées",something_went_wrong:"quelque chose a mal tourné",invalid_due_amount_message:"Le paiement entré est supérieur au montant total dû pour cette facture. Veuillez vérifier et réessayer.",mark_as_default_invoice_template_description:"If enabled, the selected template will be automatically selected for new invoices."},BU={title:"Factures récurrentes",invoices_list:"Liste des factures récurrentes",days:"{days} jours",months:"{months} mois",years:"{years} ans",all:"Toutes",paid:"Payée",unpaid:"Non payée",viewed:"Consultée",overdue:"En retard",active:"Active",completed:"Payée",customer:"CLIENT",paid_status:"ÉTAT DU PAIEMENT",ref_no:"N° de REF.",number:"N°",amount_due:"MONTANT DÛ",partially_paid:"Partiellement payée",total:"Total",discount:"Remise",sub_total:"Sous-total",invoice:"Facture récurrente | Factures récurrentes",invoice_number:"N°",next_invoice_date:"Prochaine date de facturation",ref_number:"N° de référence",contact:"Contact",add_item:"Ajouter un article",date:"Date",limit_by:"Limiter par",limit_date:"Date limite",limit_count:"Nombre limite",count:"Nombre",status:"Statut",select_a_status:"Sélectionnez un statut",working:"Active",on_hold:"Suspendue",complete:"Payée",add_tax:"Ajouter une taxe",amount:"Montant",action:"Action",notes:"Notes de bas de page",view:"Afficher",basic_info:"Informations générales",send_invoice:"Envoyer la facture récurrente",auto_send:"Envoi automatique",resend_invoice:"Renvoyer la facture récurrente",invoice_template:"Modèle de facture récurrente",conversion_message:"Facture récurrente clonée",template:"Modèle",mark_as_sent:"Marquer comme envoyée",confirm_send_invoice:"Cette facture récurrente sera envoyée par email au client",invoice_mark_as_sent:"Cette facture récurrente sera marquée comme envoyée",confirm_send:"Cette facture récurrente sera envoyée par email au client",starts_at:"Date de début",due_date:"Date d'échéance",record_payment:"Enregister un paiement",add_new_invoice:"Nouvelle facture récurrente",update_expense:"Mettre à jour les dépenses",edit_invoice:"Modifier cette facture récurrente",new_invoice:"Nouvelle facture récurrente",send_automatically:"Envoyer automatiquement",send_automatically_desc:"Activez ceci si vous souhaitez envoyer la facture automatiquement au client lorsque celle-ci est créée.",save_invoice:"Enregistrer",update_invoice:"Modifier la facture récurrente",add_new_tax:"Ajouter une taxe",no_invoices:"Aucune facture récurrente pour le moment !",mark_as_rejected:"Marquer comme rejetée",mark_as_accepted:"Marquer comme accepté",list_of_invoices:"Ajoutez des factures récurrentes et retrouvez-les ici",select_invoice:"Sélectionnez la facture",no_matching_invoices:"Aucune facture récurrente correspondante",mark_as_sent_successfully:"Facture récurrente marquée comme envoyée",invoice_sent_successfully:"Facture récurrente envoyée",cloned_successfully:"Facture récurrente clonée",clone_invoice:"Dupliquer",confirm_clone:"Cette facture récurrente sera clonée dans une nouvelle facture récurrente",add_customer_email:"Please add an email address for this customer to send invoices automatically.",item:{title:"Nom",description:"Description",quantity:"Quantité",price:"Prix",discount:"Remise",total:"Total",total_discount:"Remise totale",sub_total:"Sous-total",tax:"Taxe",amount:"Montant",select_an_item:"Tapez ou cliquez pour sélectionner un article",type_item_description:"Description de l'article (facultatif)"},frequency:{title:"Fréquence",select_frequency:"Sélectionner la fréquence",minute:"Minute",hour:"Heure",day_month:"Jour du mois",month:"Mois",day_week:"Jour de la semaine"},confirm_delete:"Vous ne pourrez pas récupérer cette facture | Vous ne pourrez pas récupérer ces factures",created_message:"Facture récurrente créée",updated_message:"Facture récurrente mise à jour",deleted_message:"Facture récurrente supprimée",marked_as_sent_message:"Facture récurrente envoyée",user_email_does_not_exist:"L'email de l'utilisateur n'existe pas",something_went_wrong:"une erreur s’est produite",invalid_due_amount_message:"Le montant total de la facture récurrente ne peut pas être inférieur au montant total payé pour cette facture récurrente. Veuillez mettre à jour la facture ou supprimer les paiements associés pour continuer."},UU={title:"Paiements",payments_list:"Liste de paiements",record_payment:"Enregistrer un paiement",customer:"Client",date:"Date",amount:"Montant",action:"Action",payment_number:"N°",payment_mode:"Mode de paiement",invoice:"Facture",note:"Description",add_payment:"Nouveau paiement",new_payment:"Nouveau paiement",edit_payment:"Modifier ce paiement",view_payment:"Afficher le paiement",add_new_payment:"Nouveau paiement",send_payment_receipt:"Envoyer le reçu",send_payment:"Envoyer par email",save_payment:"Enregistrer",update_payment:"Enregistrer",payment:"Paiement | Paiements",no_payments:"Aucun paiement",not_selected:"-",no_invoice:"Aucune facture",no_matching_payments:"Il n'y a aucun paiement correspondant !",list_of_payments:"Ajoutez des paiements et retrouvez-les ici",select_payment_mode:"Sélectionnez le mode de paiement",confirm_mark_as_sent:"Ce devis sera marqué comme envoyé",confirm_send_payment:"Ce paiement sera envoyé par email au client",send_payment_successfully:"Paiement envoyé",something_went_wrong:"quelque chose a mal tourné",confirm_delete:"Vous ne pourrez pas récupérer ce paiement | Vous ne pourrez pas récupérer ces paiements",created_message:"Paiement créé",updated_message:"Paiement mis à jour",deleted_message:"Paiement supprimé | Paiements supprimés",invalid_amount_message:"Le montant du paiement est invalide"},VU={title:"Dépenses",expenses_list:"Liste des dépenses",select_a_customer:"Sélectionnez un client",expense_title:"Titre",customer:"Client",currency:"Devise",contact:"Contact",category:"Catégorie",from_date:"Du",to_date:"Au",expense_date:"Date",description:"Description",receipt:"Reçu",amount:"Montant",action:"Action",not_selected:"-",note:"Description",category_id:"Identifiant de catégorie",date:"Date",add_expense:"Nouvelle dépense",add_new_expense:"Nouvelle dépense",save_expense:"Enregistrer",update_expense:"Enregistrer",download_receipt:"Télécharger le reçu",edit_expense:"Modifier cette dépense",new_expense:"Nouvelle dépense",expense:"Dépense | Dépenses",no_expenses:"Aucune dépense",list_of_expenses:"Ajoutez des dépenses et retrouvez-les ici",confirm_delete:"Vous ne pourrez pas récupérer cette dépense | Vous ne pourrez pas récupérer ces dépenses",created_message:"Dépense créée",updated_message:"Dépense mise à jour",deleted_message:"Dépense supprimée | Dépenses supprimées",categories:{categories_list:"Liste des catégories",title:"Titre",name:"Nom",description:"Description",amount:"Montant",actions:"Actions",add_category:"Nouvelle catégorie",new_category:"Nouvelle catégorie",category:"Catégorie | Catégories",select_a_category:"Choisissez une catégorie"}},qU={email:"Email",password:"Mot de passe",forgot_password:"Mot de passe oublié ?",or_signIn_with:"ou connectez-vous avec",login:"Se connecter",register:"S'inscrire",reset_password:"Réinitialiser le mot de passe",password_reset_successfully:"Réinitialisation du mot de passe réussie",enter_email:"Entrez votre email",enter_password:"Entrer le mot de passe",retype_password:"Retaper le mot de passe"},HU={buy_now:"Acheter maintenant",install:"Installer",price:"Prix",download_zip_file:"Télécharger le fichier ZIP",unzipping_package:"Décompresser le fichier",copying_files:"Copie de fichiers en cours",deleting_files:"Supprimer les fichiers inutilisés",completing_installation:"Terminer l'installation",update_failed:"Échec de la mise à jour",install_success:"Votre module a été correctement installé !",customer_reviews:"Évaluations",license:"License",faq:"FAQ",monthly:"Mensuel",yearly:"Annuel",updated:"Mis à jour",version:"Version",disable:"Désactiver",module_disabled:"Module désactivé",enable:"Activer",module_enabled:"Module activé",update_to:"Mise à jour vers",module_updated:"Le module a bien été mis à jour !",title:"Modules",module:"Module | Modules",api_token:"Jeton API",invalid_api_token:"Jeton API invalide.",other_modules:"Autres modules",view_all:"Tout afficher",no_reviews_found:"Il n'y a pas encore d'avis pour ce module !",module_not_purchased:"Module non acheté",module_not_found:"Module non trouvé",version_not_supported:"This module version doesn't support the current version of InvoiceShelf",last_updated:"Mis à jour le",connect_installation:"Connectez votre installation",api_token_description:"Rendez-vous à {url} et connectez votre application en entrant le jeton d'API. Vos modules achetés apparaîtront ici une fois la connexion établie.",view_module:"Afficher le module",update_available:"Mise à jour disponible",purchased:"Acheté",installed:"Installé",no_modules_installed:"Aucun module installé !",disable_warning:"Tous les paramètres de ce module seront réinitialisés.",what_you_get:"Ce que vous obtenez"},WU={title:"Utilisateurs",users_list:"Liste des utilisateurs",name:"Nom",description:"Description",added_on:"Ajouté le",date_of_creation:"Date de création",action:"Action",add_user:"Nouvel utilisateur",save_user:"Enregistrer l'utilisateur",update_user:"Enregistrer",user:"Utilisateur | Utilisateurs",add_new_user:"Nouvel utilisateur",new_user:"Nouvel utilisateur",edit_user:"Modifier cet utilisateur",no_users:"Aucun utilisateur",list_of_users:"Ajoutez des utilisateurs et retrouvez-les ici",email:"Email",phone:"Téléphone",password:"Mot de passe",user_attached_message:"Impossible de supprimer un élément déjà utilisé",confirm_delete:"Vous ne pourrez pas récupérer cet utilisateur | Vous ne pourrez pas récupérer ces utilisateurs",created_message:"Utilisateur créé",updated_message:"Utilisateur mis à jour",deleted_message:"Utilisateur supprimé | Utilisateurs supprimés",select_company_role:"Sélectionner un rôle pour {company}",companies:"Sociétés"},KU={title:"Rapport",from_date:"Du",to_date:"Au",status:"Statut",paid:"Payé",unpaid:"Non payé",download_pdf:"Télécharger le PDF",view_pdf:"Afficher le PDF",update_report:"Actualiser",report:"Rapport | Rapports",profit_loss:{profit_loss:"Balance",to_date:"Au",from_date:"Du",date_range:"Période"},sales:{sales:"Ventes",date_range:"Période",to_date:"Au",from_date:"Du",report_type:"Trier"},taxes:{taxes:"Taxes",to_date:"Au",from_date:"Du",date_range:"Période"},errors:{required:"Champ requis"},invoices:{invoice:"Facture",invoice_date:"Date",due_date:"Date déchéance",amount:"Montant ",contact_name:"Contact",status:"Statut"},estimates:{estimate:"Devis",estimate_date:"Date",due_date:"Date d'échéance",estimate_number:"N°",ref_number:"Référence",amount:"Montant",contact_name:"Contact",status:"Statut"},expenses:{expenses:"Dépenses",category:"Nom",date:"Date",amount:"Montant",to_date:"Au",from_date:"Du",date_range:"Période"}},YU={menu_title:{account_settings:"Profil",company_information:"Coordonnées de la société",customization:"Personnalisation",preferences:"Préférences",notifications:"Notifications",tax_types:"Taxes",expense_category:"Catégories de dépense",update_app:"Mise à jour",backup:"Sauvegarde",file_disk:"Stockage",custom_fields:"Champs personnalisés",payment_modes:"Modes de paiement",notes:"Notes de bas de page",exchange_rate:"Taux de change",address_information:"Information d'adresse"},address_information:{section_description:" Vous pouvez mettre à jour vos informations d'adresse via le formulaire ci dessous."},title:"Paramètres",setting:"Paramètres | Paramètres",general:"Paramètres généraux",language:"Langue",primary_currency:"Devise principale",timezone:"Fuseau horaire",date_format:"Format de date",currencies:{title:"Devises",currency:"Devise | Devises",currencies_list:"Liste des devises",select_currency:"Sélectionnez la devise",name:"Nom",code:"Code ",symbol:"Symbole",precision:"Précision",thousand_separator:"Séparateur de milliers",decimal_separator:"Séparateur décimal",position:"Position",position_of_symbol:"Position du symbole",right:"Droite",left:"Gauche",action:"Action",add_currency:"Ajouter une devise"},mail:{host:"Adresse du serveur",port:"Port",driver:"Fournisseur",secret:"Secret",mailgun_secret:"Secret Mailgun",mailgun_domain:"Domaine",mailgun_endpoint:"Mailgun Endpoint",ses_secret:"SES Secret",ses_key:"SES Key",password:"Mot de passe",username:"Nom d'utilisateur",mail_config:"Envoi d'emails",from_name:"Nom de l'expéditeur",from_mail:"Email de l'expéditeur",encryption:"Chiffrement",mail_config_desc:"Saisissez ici les paramètres d'envoi de votre boîte email, afin que l'application puisse envoyer des messages. Vous pouvez également utiliser un service tiers, comme Sendgrid par exemple."},pdf:{title:"Paramètre PDF",footer_text:"Pied de page",pdf_layout:"Mise en page PDF"},company_info:{company_info:"Coordonnées de la société",company_name:"Nom",company_logo:"Logo",section_description:"Saisissez ici les coordonnées de votre entreprise qui s'afficheront sur tous vos documents.",phone:"Téléphone",country:"Pays",state:"État",city:"Ville",address:"Adresse",zip:"Code postal",save:"Enregistrer",delete:"Supprimer",updated_message:"Informations sur la société mises à jour",delete_company:"Supprimer la société",delete_company_description:"Une fois votre société supprimée, vous perdrez définitivement toutes les données et fichiers qui lui sont associés.",are_you_absolutely_sure:"En êtes vous vraiment sûr?",delete_company_modal_desc:"Cette action ne peut pas être annulée. Cela supprimera définitivement {company} et toutes les données associées.",delete_company_modal_label:"Veuillez saisir {company} pour confirmer"},custom_fields:{title:"Champs personnalisés",section_description:"Personnalisez vos factures, devis et reçus de paiement avec vos propres champs. Vous pouvez les utiliser dans les formats d'adresse ou dans les notes de bas de page.",add_custom_field:"Ajouter un champ personnalisé",edit_custom_field:"Modifier ce champ personnalisé",field_name:"Nom du champs",label:"Étiquette",type:"Type ",name:"Nom",slug:"Jeton",required:"Obligatoire",placeholder:"Indication",help_text:"Texte d'aide",default_value:"Valeur par défaut",prefix:"Préfixe",starting_number:"Numéro de départ",model:"Appliquer à",help_text_description:"Saisissez du texte pour aider les utilisateurs à comprendre l'objectif de ce champ personnalisé.",suffix:"Suffixe",yes:"Oui",no:"Non",order:"Ordre",custom_field_confirm_delete:"Vous ne pourrez pas récupérer ce champ personnalisé",already_in_use:"Le champ personnalisé est déjà utilisé",deleted_message:"Champ personnalisé supprimé",options:"les options",add_option:"Ajouter des options",add_another_option:"Ajouter une autre option",sort_in_alphabetical_order:"Trier par ordre alphabétique",add_options_in_bulk:"Ajouter des options en masse",use_predefined_options:"Utiliser des options prédéfinies",select_custom_date:"Sélectionnez une date personnalisée",select_relative_date:"Sélectionnez la date relative",ticked_by_default:"Coché par défaut",updated_message:"Champ personnalisé mis à jour",added_message:"Champ personnalisé ajouté",press_enter_to_add:"Appuyez sur Entrée pour ajouter une nouvelle option",model_in_use:"Impossible de mettre à jour le modèle pour les champs qui sont déjà utilisés.",type_in_use:"Impossible de mettre à jour le type des champs déjà utilisés."},customization:{customization:"Personnalisation",updated_message:"Informations la société mises à jour",save:"Enregistrer",insert_fields:"Insérer des champs",learn_custom_format:"Apprenez à utiliser le format personnalisé",add_new_component:"Ajouter un composant",component:"Composant",Parameter:"Paramètre",series:"Texte",series_description:"Un texte statique qui peut faire jusqu'à quatre caractères.",series_param_label:"Texte",delimiter:"Séparateur",delimiter_description:"Un caractère servant à séparer deux composants. Par exemple, un trait d'union",delimiter_param_label:"Caractère",date_format:"Date",date_format_description:`Une date qui peut formatée. Par exemple, "Y" affichera l'année en cours.`,date_format_param_label:"Format",sequence:"Suite",sequence_description:"Génère un numéro de facture unique. Vous pouvez indiquer le nombre de chiffres à utiliser.",sequence_param_label:"Longueur",customer_series:"Code client",customer_series_description:"Un code unique à chaque client, qui peut être indiqué dans les paramètres du client.",customer_sequence:"Numéro client",customer_sequence_description:"Un numéro de client unique.",customer_sequence_param_label:"Longueur",random_sequence:"Suite aléatoire",random_sequence_description:`Suite alphanumérique aléatoire. +Vous pouvez spécifier le nombre de caractère.`,random_sequence_param_label:"Longueur",invoices:{title:"Factures",invoice_number_format:"Format de numéro",invoice_number_format_description:"Personnalisez la structure de vos numéros de facture.",preview_invoice_number:"Aperçu",due_date:"Date d'échéance",due_date_description:"Indiquez si la date d'échéance doit être automatiquement définie lorsque vous créez une facture.",due_date_days:"Nombre de jours avant l'échéance de la facture",set_due_date_automatically:"Remplir automatiquement la date d'échéance",set_due_date_automatically_description:"Activez cette option si vous souhaitez définir automatiquement la date d'échéance lors de la création d'une facture.",default_formats:"Modèles",default_formats_description:"Modifiez ci-dessous les formats d'adresse ou l'email utilisé lors de la création d'une facture.",default_invoice_email_body:"Modèle d'email",company_address_format:"Adresse de la société",shipping_address_format:"Adresse d'expédition",billing_address_format:"Adresse de facturation",invoice_email_attachment:"Envoyer les factures en pièces jointes",invoice_email_attachment_setting_description:`Activez cette option si vous souhaitez envoyer les factures en pièces jointes. Le bouton "Afficher la facture" n'apparaîtra plus dans l'email.`,invoice_settings_updated:"Paramètres de facturation mis à jour",retrospective_edits:"Édition à postériori",allow:"Autoriser",disable_on_invoice_partial_paid:"Désactiver après l'enregistrement d'un paiement partiel",disable_on_invoice_paid:"Désactiver après l'enregistrement du paiement intégral",disable_on_invoice_sent:"Désactiver après l'envoi de la facture",retrospective_edits_description:"Vous pouvez empêcher la modification de factures lorsque un paiement est effectué, pour être en conformité avec la loi de certains pays."},estimates:{title:"Devis",estimate_number_format:"Format de numéro",estimate_number_format_description:"Personnalisez la structure de vos numéros de devis.",preview_estimate_number:"Aperçu",expiry_date:"Date d'expiration",expiry_date_description:"Indiquez si la date d'échéance doit être automatiquement définie lorsque vous créez un devis.",expiry_date_days:"Le devis expire après les jours",set_expiry_date_automatically:"Définir automatiquement la date d'expiration",set_expiry_date_automatically_description:"Activez cette option si vous souhaitez définir automatiquement la date d'échéance lors de la création d'un devis.",default_formats:"Formats par défaut",default_formats_description:"Modifiez ci-dessous les formats d'adresse ou l'email utilisé lors de la création d'un devis.",default_estimate_email_body:"Modèle d'email",company_address_format:"Adresse de la société",shipping_address_format:"Adresse d'expédition",billing_address_format:"Adresse de facturation",estimate_email_attachment:"Envoyer les devis en pièces jointes",estimate_email_attachment_setting_description:`Activez cette option si vous souhaitez envoyer les devis en pièces jointes. Le bouton "Afficher le devis" n'apparaîtra plus dans l'email.`,estimate_settings_updated:"Paramètres de devis mis à jour",convert_estimate_options:"Conversion du devis",convert_estimate_description:"Indiquez quoi faire du devis après sa conversion en facture.",no_action:"Ne rien faire",delete_estimate:"Supprimer le devis",mark_estimate_as_accepted:"Marquer le devis comme accepté"},payments:{title:"Paiements",payment_number_format:"Format de numéro",payment_number_format_description:"Personnalisez la structure de vos numéros de reçu de paiement.",preview_payment_number:"Aperçu",default_formats:"Formats par défaut",default_formats_description:"Modifiez ci-dessous les formats d'adresse ou l'email utilisé lors de la création d'un reçu de paiement.",default_payment_email_body:"Modèle d'email",company_address_format:"Adresse de la société",from_customer_address_format:"Adresse de facturation",payment_email_attachment:"Envoyer les reçus de paiement en pièces jointes",payment_email_attachment_setting_description:`Activez cette option si vous souhaitez envoyer les devis en pièces jointes. Le bouton "Afficher le reçu de paiement" n'apparaîtra plus dans l'email.`,payment_settings_updated:"Paramètres mis à jour"},items:{title:"Articles",units:"Unités",add_item_unit:"Ajouter une unité",edit_item_unit:"Modifier cette unité",unit_name:"Nom",item_unit_added:"Unité ajoutée",item_unit_updated:"Unité mis à jour",item_unit_confirm_delete:"Êtes-vous sur de supprimer cette unité ?",already_in_use:"Cette unité existe déjà",deleted_message:"Unité supprimée"},notes:{title:"Notes de bas de page",description:"Créez des notes de bas de page réutilisable sur vos factures, devis et paiements.",notes:"Note de bas de page",type:"Type ",add_note:"Nouvelle note de bas de page",add_new_note:"Ajouter une note de bas de page",name:"Nom",edit_note:"Modifier cette note de bas de page",note_added:"Note de bas de page ajoutée",note_updated:"Note de bas de page mise à jour",note_confirm_delete:"Vous ne pourrez pas récupérer cette note de bas de page",already_in_use:"La note de bas de page est déjà utilisée",deleted_message:"Note de bas de page supprimée"}},account_settings:{profile_picture:"Image de profil",name:"Nom",email:"Email",password:"Mot de passe",confirm_password:"Confirmez le mot de passe",account_settings:"Profil",save:"Enregistrer",section_description:"Mettez à jour ici vos paramètres de compte, tels que votre nom, votre email ou votre mot de passe.",updated_message:"Profil mis à jour"},user_profile:{name:"Nom",email:"Email",password:"Mot de passe",confirm_password:"Confirmez le mot de passe"},notification:{title:"Notifications",email:"Envoyer des notifications à",description:"Définissez ici les notifications que vous souhaitez recevoir par email.",invoice_viewed:"Facture consultée",invoice_viewed_desc:"Lorsque le client visualise la facture envoyée via le tableau de bord de Neptune.",estimate_viewed:"Devis consulté",estimate_viewed_desc:"Lorsque le client visualise le devis envoyé via le tableau de bord de Neptune.",save:"Enregistrer",email_save_message:"Email enregistré",please_enter_email:"Veuillez entrer un email"},roles:{title:"Rôles",description:"Gérer les rôles & autorisations de cette société",save:"Enregistrer",add_new_role:"Ajouter un rôle",role_name:"Nom",added_on:"Ajouté le",add_role:"Ajouter un rôle",edit_role:"Modifier ce rôle",name:"Nom",permission:"Autorisation | Autorisations",select_all:"Tout sélectionner",none:"Aucun",confirm_delete:"Vous ne pourrez pas récupérer ce rôle",created_message:"Rôle créé",updated_message:"Rôle mis à jour",deleted_message:"Rôle supprimé",already_in_use:"Le rôle est déjà utilisé"},exchange_rate:{exchange_rate:"Taux de change",title:"Résoudre les problèmes de taux de change",description:"Veuillez entrez le taux de change pour toutes les devises mentionnées ci-dessous pour calculer les totaux en {currency}.",drivers:"Fournisseurs",new_driver:"Ajouter un fournisseur",edit_driver:"Modifier ce fournisseur",select_driver:"Sélectionner un fournisseur",update:"sélectionner le taux de change ",providers_description:"Configurez vos fournisseurs de taux de change ici pour récupérer automatiquement le dernier taux de change sur les transactions.",key:"Clé d'API",name:"Nom",driver:"Fournisseur",is_default:"PAR DÉFAUT",currency:"Devises",exchange_rate_confirm_delete:"Vous ne pourrez pas récupérer ce fournisseur",created_message:"Fournisseur créé",updated_message:"Fournisseur mis à jour",deleted_message:"Fournisseur supprimé",error:"Vous ne pouvez pas supprimer le fournisseur actif",default_currency_error:"Cette devise est déjà affectée à un fournisseur",exchange_help_text:"Veuillez entrer le taux de change pour convertir {currency} en {baseCurrency}",currency_freak:"Currency Freak",currency_layer:"Currency Layer",open_exchange_rate:"Open Exchange Rate",currency_converter:"Currency Converter",server:"Serveur",url:"URL",active:"Actif",currency_help_text:"Ce fournisseur ne sera utilisé que pour les devises sélectionnées ci-dessus",currency_in_used:"Les devises suivantes sont déjà affectées à un autre fournisseur. Veuillez désélectionner ces devises pour réactiver ce fournisseur."},tax_types:{title:"Taxes",add_tax:"Ajouter une taxe",edit_tax:"Modifier cette taxe",description:"Ajoutez ou supprimez ici des taxes, et choisissez si elles s'appliquent individuellement aux articles ou au montant total.",add_new_tax:"Nouvelle taxe",tax_settings:"Paramètres de taxe",tax_per_item:"Taxe par article",tax_name:"Nom",compound_tax:"Taxe empilée",percent:"Pourcentage",action:"action",tax_setting_description:"Activez cette option si vous souhaitez ajouter des taxes à des postes de facture individuels. Par défaut, les taxes sont ajoutées directement à la facture.",created_message:"Taxe créée",updated_message:"Taxe mise à jour",deleted_message:"Taxe supprimée",confirm_delete:"Vous ne pourrez pas récupérer ce type de taxe",already_in_use:"La taxe est déjà utilisée"},payment_modes:{title:"Moyens de paiement",description:"Indiquez les différents moyen de paiement que vous utilisez",add_payment_mode:"Ajouter un mode de paiement",edit_payment_mode:"Modifier le mode de paiement",mode_name:"Nom",payment_mode_added:"Mode de paiement ajouté",payment_mode_updated:"Mode de paiement mis à jour",payment_mode_confirm_delete:"Vous ne pourrez pas récupérer ce mode de paiement",payments_attached:"This payment method is already attached to payments. Please delete the attached payments to proceed with deletion.",expenses_attached:"This payment method is already attached to expenses. Please delete the attached expenses to proceed with deletion.",deleted_message:"Mode de paiement supprimé"},expense_category:{title:"Catégories de dépense",action:"action",description:"Ajoutez ou supprimez ici des catégories de dépense.",add_new_category:"Ajouter une catégorie",add_category:"Nouvelle catégorie",edit_category:"Modifier cette catégorie",category_name:"Nom",category_description:"Description",created_message:"Catégorie de dépenses créée",deleted_message:"Catégorie de dépenses supprimée",updated_message:"Catégorie de dépenses mise à jour",confirm_delete:"Vous ne pourrez pas récupérer cette catégorie de dépenses",already_in_use:"La catégorie est déjà utilisée"},preferences:{currency:"Devise",default_language:"Langue par défaut",time_zone:"Fuseau horaire",fiscal_year:"Exercice fiscal",date_format:"Format de date",discount_setting:"Réglage de remise",discount_per_item:"Remise par article",discount_setting_description:"Activez cette option si vous souhaitez détailler les remises par article. Par défaut, les remises sont ajoutées au sous-total.",expire_public_links:"Expiration automatique des liens publics",expire_setting_description:"Spécifiez si vous souhaitez faire expirer tous les liens publiques envoyés par l'application pour consulter les factures, devis, paiements,... après une durée spécifique.",save:"Enregistrer",preference:"Préférence | Préférences",general_settings:"Modifiez ici les paramètres globaux de InvoiceShelf.",updated_message:"Préférences mises à jour",select_language:"Choisir la langue",select_time_zone:"Sélectionnez le fuseau horaire",select_date_format:"Sélectionnez le format de date",select_financial_year:"Exercice fiscal",recurring_invoice_status:"Statut de la facture récurrente",create_status:"Créer un statut",active:"Actif",on_hold:"En attente",update_status:"Mettre à jour le statut",completed:"Terminé",company_currency_unchangeable:"La devise de la société ne peut pas être modifiée"},update_app:{title:"Mise à jour",description:"Mettez simplement InvoiceShelf à jour en cliquant sur le bouton ci-dessous.",check_update:"Rechercher des mises à jour",avail_update:"Nouvelle mise à jour disponible",next_version:"Version suivante",requirements:"Spécifications requises",update:"Mettre à jour maintenant",update_progress:"Mise à jour en cours...",progress_text:"Cela ne prendra que quelques minutes. Veuillez ne pas actualiser ou fermer la fenêtre avant la fin de la mise à jour",update_success:"L'application a été mise à jour. Veuillez patienter pendant le rechargement de la fenêtre de votre navigateur.",latest_message:"Bravo, vous êtes à jour.",current_version:"Version actuelle",download_zip_file:"Télécharger le fichier ZIP",unzipping_package:"Dézipper le package",copying_files:"Copie de fichiers en cours",deleting_files:"Supprimer les fichiers inutilisés",running_migrations:"Migrations en cours",finishing_update:"Finalisation de la mise à jour",update_failed:"Échec de la mise à jour",update_failed_text:"Désolé ! Votre mise à jour a échoué à: {step} étape",update_warning:"Cet utilitaire va écraser tous les fichiers et templates de l'application. Veuillez faire une sauvegarde de vos templates et de la base de donnée avant de faire la mise à jour."},backup:{title:"Sauvegarde | Sauvegardes",description:"Gérez ici vos sauvegardes. InvoiceShelf créée un fichiez ZIP contenant vos fichiers et un export de la base de données.",new_backup:"Faire une sauvegarde",create_backup:"Créer une sauvegarde",select_backup_type:"Type de sauvegarde",backup_confirm_delete:"Vous ne pourrez pas récupérer cette sauvegarde",path:"chemin",new_disk:"Nouveau stockage",created_at:"créé à",size:"taille",dropbox:"dropbox",local:"local",healthy:"en bonne santé",amount_of_backups:"nombre de sauvegardes",newest_backups:"dernières sauvegardes",used_storage:"Stockage utilisé",select_disk:"Emplacement",action:"Action",deleted_message:"Sauvegarde supprimée",created_message:"Sauvegarde créée",invalid_disk_credentials:"Informations d'identification invalides de l'espace de stockage"},disk:{title:"Stockage | Stockages",description:"InvoiceShelf utilise par défaut votre disque local pour stocker les sauvegardes, les avatar et d'autres fichiers image. Vous pouvez configurer d'autres comptes de stockage, comme DigitalOcean, S3 et Dropbox.",created_at:"créé à",dropbox:"dropbox",name:"Nom",driver:"Compte de stockage",disk_type:"Type ",disk_name:"Nom",new_disk:"Ajouter un espace de stockage",filesystem_driver:"Fournisseur",local_driver:"stockage local",local_root:"répertoire local",public_driver:"Stockage public",public_root:"Répertoire public",public_url:"URL publique",public_visibility:"Visibilité publique",media_driver:"Stockage multimédia",media_root:"Répertoire média",aws_driver:"AWS",aws_key:"AWS Key",aws_secret:"AWS Secret",aws_region:"Région AWS",aws_bucket:"Bucket",aws_root:"Répertoire",do_spaces_type:"Type",do_spaces_key:"Key",do_spaces_secret:"Secret",do_spaces_region:"Région",do_spaces_bucket:"Bucket",do_spaces_endpoint:"Endpoint",do_spaces_root:"Répertoire",dropbox_type:"Type",dropbox_token:"Token",dropbox_key:"Key",dropbox_secret:"Secret",dropbox_app:"Application",dropbox_root:"Répertoire",default_driver:"Fournisseur par défaut",is_default:"Par défaut",set_default_disk:"Définir l'espace par défaut",set_default_disk_confirm:"Cet espace sera utilisé par défaut pour l'enregistrement des PDF",success_set_default_disk:"Stockage par défaut mis à jour",save_pdf_to_disk:"Enregistrer les PDF sur le disque",disk_setting_description:"Activez cette option si vous souhaitez enregistrer automatiquement une copie de chaque facture, devis et reçu de paiement PDF sur votre disque par défaut. L'activation de cette option réduira le temps de chargement lors de l'affichage des PDF.",select_disk:"Emplacement",disk_settings:"Paramètres de stockage",confirm_delete:"Vos fichiers et dossiers existants sur le disque spécifié ne seront pas affectés, mais la configuration de votre disque sera supprimée de InvoiceShelf",action:"Action",edit_file_disk:"Modifier cet espace de stockage",success_create:"Stockage ajouté",success_update:"Stockage mis à jour",error:"L'ajout de disque a échoué",deleted_message:"Stockage supprimé",disk_variables_save_successfully:"Stockage configuré",disk_variables_save_error:"La configuration du stockage a échoué.",invalid_disk_credentials:"Informations d'identification non valides du stockage sélectionné"},taxations:{add_billing_address:"Entrez l'adresse de facturation",add_shipping_address:"Entrez l'adresse de livraison",add_company_address:"Entrez l'adresse de la société",modal_description:"Les informations ci-dessous sont requises afin de récupérer les taxes de vente.",add_address:"Ajoutez une adresse pour récupérer les taxes de vente.",address_placeholder:"Exemple: 123, My Street",city_placeholder:"Exemple: Los Angeles",state_placeholder:"Exemple: CA",zip_placeholder:"Exemple: 90024",invalid_address:"Veuillez fournir une adresse valide."}},ZU={account_info:"Information du compte",account_info_desc:"Les détails ci-dessous seront utilisés pour créer le compte administrateur principal. Aussi, vous pouvez modifier les détails à tout moment après la connexion.",name:"Nom",email:"Email",password:"Mot de passe",confirm_password:"Confirmez le mot de passe",save_cont:"Enregistrer et poursuivre",company_info:"Coordonnées de la société",company_info_desc:"Ces informations seront affichées sur les factures. Notez que vous pouvez éditer ceci plus tard sur la page des paramètres.",company_name:"Nom",company_logo:"Logo",logo_preview:"Aperçu",preferences:"Préférences",preferences_desc:"Préférences par défaut du système.",currency_set_alert:"La devise ne pourra pas être changé.",country:"Pays",state:"État",city:"Ville",address:"Adresse",street:"Rue 1 | Rue 2",phone:"Téléphone",zip_code:"Code postal",go_back:"Revenir",currency:"Devise",language:"Langue",time_zone:"Fuseau horaire",fiscal_year:"Exercice fiscal",date_format:"Format de date",from_address:"De l'adresse",username:"Nom d'utilisateur",next:"Suivant",continue:"Poursuivre",skip:"Ignorer",database:{database:"URL du site et base de données",connection:"Connexion à la base de données",host:"Serveur de la base de données",port:"Port de la base de données",password:"Mot de passe de la base de données",app_url:"Application URL",app_domain:"Nom de domaine",username:"Nom d'utilisateur de la base de données",db_name:"Nom de la base de données",db_path:"Emplacement de la base de données",desc:"Créez une base de données sur votre serveur et définissez les informations d'identification à l'aide du formulaire ci-dessous."},permissions:{permissions:"Permissions",permission_confirm_title:"Êtes-vous certain de vouloir continuer ?",permission_confirm_desc:"La vérification des permissions du dossier a échoué",permission_desc:"Vous trouverez ci-dessous la liste des permissions de dossier requises pour le fonctionnement de l'application. Si la vérification des permissions échoue, veillez mettre à jour vos permissions de dossier."},verify_domain:{title:"Vérification du domaine",desc:"InvoiceShelf utilise l'authentification basée sur la session qui nécessite une vérification du domaine pour des raisons de sécurité. Veuillez saisir le domaine sur lequel vous allez accéder à votre application web.",app_domain:"Domaine de l'application",verify_now:"Vérifier maintenant",success:"Vérification du domaine réussie.",failed:"La vérification du domaine a échoué. Veuillez entrer un nom de domaine valide.",verify_and_continue:"Vérifier et continuer"},mail:{host:"Serveur email",port:"Port",driver:"Fournisseur d'email",secret:"Secret",mailgun_secret:"Secret",mailgun_domain:"Nom de domaine",mailgun_endpoint:"Endpoint",ses_secret:"Secret",ses_key:"Key",password:"Mot de passe",username:"Nom d'utilisateur",mail_config:"Envoi d'emails",from_name:"Nom de messagerie",from_mail:"Email de l'expéditeur",encryption:"Chiffrement des emails",mail_config_desc:"Les détails ci-dessous seront utilisés pour mettre à jour le fournisseur de messagerie. Vous pourrez modifier ceux-ci à tout moment après la connexion."},req:{system_req:"Configuration requise",php_req_version:"Php (version {version} nécessaire)",check_req:"Vérifier les prérequis",system_req_desc:"InvoiceShelf a quelques prérequis. Assurez-vous que votre serveur dispose de la version Php requise et de toutes les extensions mentionnées ci-dessous."},errors:{migrate_failed:"Échec de la migration",database_variables_save_error:"Impossible de créer le fichier de configuration. Veuillez vérifier les permissions du répertoire",mail_variables_save_error:"La configuration du courrier électronique a échoué.",connection_failed:"La connexion à la base de données a échoué",database_should_be_empty:"La base de données devrait être vide"},success:{mail_variables_save_successfully:"Email configuré",database_variables_save_successfully:"Base de données configurée."}},GU={invalid_phone:"Numéro de téléphone invalide",invalid_url:"URL invalide (ex: http://www.invoiceshelf.com)",invalid_domain_url:"URL invalide (ex: invoiceshelf.com)",required:"Champ requis",email_incorrect:"Adresse Email incorrecte.",email_already_taken:"Un compte est déjà associé à cette adresse email.",email_does_not_exist:"Cet utilisateur n'existe pas",item_unit_already_taken:"Cette unité est déjà été utilisée",payment_mode_already_taken:"Ce moyen de paiement est déjà utilisé",send_reset_link:"Envoyer le lien de réinitialisation",not_yet:"Pas encore reçu ? Réessayer",password_min_length:"Le mot de passe doit contenir au moins {count} caractères",name_min_length:"Le nom doit comporter au moins {count} lettres.",prefix_min_length:"Le préfixe doit faire au moins {count} lettres.",enter_valid_tax_rate:"Entrez un taux de taxe valide",numbers_only:"Chiffres uniquement.",characters_only:"Caractères seulement.",password_incorrect:"Les mots de passe doivent être identiques",password_length:"Le mot de passe doit comporter au moins {count} caractères.",qty_must_greater_than_zero:"La quantité doit être supérieure à zéro.",price_greater_than_zero:"Le prix doit être supérieur à zéro.",payment_greater_than_zero:"Le paiement doit être supérieur à zéro.",payment_greater_than_due_amount:"Le paiement saisi est plus élevé que le montant dû de cette facture.",quantity_maxlength:"La quantité ne doit pas dépasser 20 chiffres.",price_maxlength:"Le prix ne doit pas dépasser 20 chiffres.",price_minvalue:"Le prix doit être supérieur à 0.",amount_maxlength:"Le montant ne doit pas dépasser 20 chiffres.",amount_minvalue:"Le montant doit être supérieur à 0.",discount_maxlength:"La remise ne doit pas être supérieure à la remise maximale",description_maxlength:"La description ne doit pas dépasser 255 caractères.",subject_maxlength:"L'objet ne doit pas dépasser 100 caractères.",message_maxlength:"Le message ne doit pas dépasser 255 caractères.",maximum_options_error:"Maximum de {max} options sélectionnées. Commencez par supprimer une option sélectionnée pour en sélectionner une autre.",notes_maxlength:"Les notes de bas de page ne doivent pas dépasser 255 caractères.",address_maxlength:"L'adresse ne doit pas dépasser 255 caractères.",ref_number_maxlength:"Le numéro de référence ne doit pas dépasser 255 caractères.",prefix_maxlength:"Le préfixe ne doit pas dépasser 5 caractères.",something_went_wrong:"quelque chose a mal tourné",number_length_minvalue:"Ce nombre doit être supérieur à 0",at_least_one_ability:"Veuillez sélectionner au moins une autorisation.",valid_driver_key:"Veuillez saisir une clé {driver} valide.",valid_exchange_rate:"Veuillez saisir un taux de change valide.",company_name_not_same:"Le nom de la société doit correspondre au nom fourni."},QU={starter_plan:"Cette fonctionnalité est disponible à partir du plan Starter.",invalid_provider_key:"Veuillez entrer une clé d'API valide du fournisseur.",estimate_number_used:"Ce numéro de devis est déjà utilisé.",invoice_number_used:"Ce numéro de facture est déjà utilisé.",payment_attached:"Cette facture est liée à un reçu de paiement. Veuillez d'abord le supprimer avant de poursuivre.",payment_number_used:"Ce numéro de paiement est déjà utilisé.",name_already_taken:"Ce nom est déjà pris.",receipt_does_not_exist:"Le reçu n'existe pas.",customer_cannot_be_changed_after_payment_is_added:"Le client ne peut pas être modifié après l'ajout du paiement",invalid_credentials:"Identifiants invalides.",not_allowed:"Non autorisé",login_invalid_credentials:"Ces identifiants ne correspondent pas à nos enregistrements.",enter_valid_cron_format:"Veuillez entrer une tâche Cron valide",email_could_not_be_sent:"L'Email n'a pas pu être envoyé vers cette adresse email.",invalid_address:"Veuillez spécifier une adresse valide.",invalid_key:"Veuillez spécifier une clé valide.",invalid_state:"Veuillez spécifier un état valide.",invalid_city:"Veuillez spécifier une ville valide.",invalid_postal_code:"Veuillez spécifier un code postal valide.",invalid_format:"Veuillez spécifier un format de requête valide.",api_error:"Le serveur ne répond plus.",feature_not_enabled:"Fonctionnalité inactive.",request_limit_met:"Limite de requêtes API dépassée.",address_incomplete:"Adresse incomplète"},JU="Devis",XU="N°",eV="Date",tV="Date d'expiration",aV="Facture",nV="Numéro",iV="Date",oV="Date d’échéance",rV="Notes de bas de page",sV="Articles",lV="Quantité",cV="Prix",dV="Remise",uV="Montant",_V="Sous-total",mV="Total TTC",pV="Paiement",fV="Reçu de paiement",hV="Date de paiement",gV="Numéro",vV="Moyen de paiement",yV="Montant reçu",bV="RAPPORT DE DÉPENSES",kV="TOTAL DES DÉPENSES",wV="RECETTES ET DÉPENSES",xV="Rapport de vente client",DV="Rapport de vente par articles",SV="Rapport de résumé fiscal",zV="REVENU",PV="RÉSULTAT",EV="Rapport de ventes : par client",AV="TOTAL DES VENTES",CV="Rapport des ventes : par article",jV="TAXES",TV="TOTAL",IV="Taxe",NV="Dépenses",FV="Facturer à",MV="Expédier à",RV="Reçu de :",OV="Taxe",$V={navigation:CU,general:jU,dashboard:TU,tax_types:IU,global_search:NU,company_switcher:FU,dateRange:MU,customers:RU,items:OU,estimates:$U,invoices:LU,recurring_invoices:BU,payments:UU,expenses:VU,login:qU,modules:HU,users:WU,reports:KU,settings:YU,wizard:ZU,validation:GU,errors:QU,pdf_estimate_label:JU,pdf_estimate_number:XU,pdf_estimate_date:eV,pdf_estimate_expire_date:tV,pdf_invoice_label:aV,pdf_invoice_number:nV,pdf_invoice_date:iV,pdf_invoice_due_date:oV,pdf_notes:rV,pdf_items_label:sV,pdf_quantity_label:lV,pdf_price_label:cV,pdf_discount_label:dV,pdf_amount_label:uV,pdf_subtotal:_V,pdf_total:mV,pdf_payment_label:pV,pdf_payment_receipt_label:fV,pdf_payment_date:hV,pdf_payment_number:gV,pdf_payment_mode:vV,pdf_payment_amount_received_label:yV,pdf_expense_report_label:bV,pdf_total_expenses_label:kV,pdf_profit_loss_label:wV,pdf_sales_customers_label:xV,pdf_sales_items_label:DV,pdf_tax_summery_label:SV,pdf_income_label:zV,pdf_net_profit_label:PV,pdf_customer_sales_report:EV,pdf_total_sales_label:AV,pdf_item_sales_label:CV,pdf_tax_report_label:jV,pdf_total_tax_label:TV,pdf_tax_types_label:IV,pdf_expenses_label:NV,pdf_bill_to:FV,pdf_ship_to:MV,pdf_received_from:RV,pdf_tax_label:OV},LV={dashboard:"Tablero",customers:"Clientes",items:"Artículos",invoices:"Facturas","recurring-invoices":"Facturas recurrentes",expenses:"Gastos",estimates:"Presupuestos",payments:"Pagos",reports:"Informes",settings:"Ajustes",logout:"Cerrar sesión",users:"Usuarios",modules:"Módulos"},BV={add_company:"Añadir empresa",view_pdf:"Ver PDF",copy_pdf_url:"Copiar dirección URL del archivo PDF",download_pdf:"Descargar PDF",save:"Guardar",create:"Crear",cancel:"Cancelar",update:"Actualizar",deselect:"Deseleccionar",download:"Descargar",from_date:"Desde la fecha",to_date:"Hasta la fecha",from:"De",to:"A",ok:"De acuerdo",yes:"Sí",no:"No",sort_by:"Ordenar por",ascending:"Ascendente",descending:"Descendente",subject:"Asunto",body:"Cuerpo",message:"Mensaje",send:"Enviar",preview:"Previsualizar",go_back:"Volver",back_to_login:"¿Volver al inicio de sesión?",home:"Inicio",filter:"Filtrar",delete:"Eliminar",edit:"Editar",view:"Ver",add_new_item:"Agregar ítem nuevo",clear_all:"Limpiar todo",showing:"Mostrar",of:"de",actions:"Acciones",subtotal:"SUBTOTAL",discount:"DESCUENTO",fixed:"Fijo",percentage:"Porcentaje",tax:"IMPUESTO",total_amount:"VALOR TOTAL",bill_to:"Cobrar a",ship_to:"Enviar a",due:"Debido",draft:"Borrador",sent:"Enviado",all:"Todas",select_all:"Seleccionar todo",select_template:"Seleccionar plantilla",choose_file:"Haga clic aquí para elegir un archivo",choose_template:"Elige una plantilla",choose:"Escoger",remove:"Eliminar",select_a_status:"Selecciona un estado",select_a_tax:"Selecciona un impuesto",search:"Buscar",are_you_sure:"¿Estás seguro?",list_is_empty:"La lista esta vacía.",no_tax_found:"¡No se encontraron impuestos!",four_zero_four:"404",you_got_lost:"Whoops! ¡Te perdiste!",go_home:"Volver al Inicio",test_mail_conf:"Probar configuración de correo",send_mail_successfully:"El correo enviado con éxito",setting_updated:"Configuración actualizada con éxito",select_state:"Seleccionar estado",select_country:"Seleccionar país",select_city:"Seleccionar ciudad",street_1:"Calle 1",street_2:"Calle 2",action_failed:"Accion Fallida",retry:"Procesar de nuevo",choose_note:"Elegir nota",no_note_found:"No se encontró ninguna nota",insert_note:"Insertar una nota",copied_pdf_url_clipboard:"Copiar Url al portapapeles",copied_url_clipboard:"¡URL copiada al portapapeles!",docs:"Documentación",do_you_wish_to_continue:"¿Deseas continuar?",note:"Nota",pay_invoice:"Pagar factura",login_successfully:"Logeado Satisfactoriamente!",logged_out_successfully:"Logeado Satisfactoriamente",mark_as_default:"Marcar como predeterminado"},UV={select_year:"Seleccionar año",cards:{due_amount:"Importe pendiente",customers:"Clientes",invoices:"Facturas",estimates:"Presupuestos",payments:"Ver Medios de Pago"},chart_info:{total_sales:"Ventas",total_receipts:"Ingresos",total_expense:"Gastos",net_income:"Ingresos netos",year:"Seleccione año"},monthly_chart:{title:"Gastos de venta"},recent_invoices_card:{title:"Facturas adeudadas",due_on:"Debido a",customer:"Cliente",amount_due:"Importe pendiente",actions:"Acciones",view_all:"Ver todo"},recent_estimate_card:{title:"Presupuestos recientes",date:"Fecha",customer:"Cliente",amount_due:"Importe pendiente",actions:"Acciones",view_all:"Ver todo"}},VV={name:"Nombre",description:"Descripción",percent:"Por ciento",compound_tax:"Impuesto compuesto"},qV={search:"Buscar...",customers:"Clientes",users:"Usuarios",no_results_found:"No se encontraron resultados"},HV={label:"CAMBIAR EMPRESA",no_results_found:"No se encontraron resultados",add_new_company:"Añadir nueva empresa",new_company:"Nueva empresa",created_message:"Empresa creada satisfactoriamente"},WV={today:"Hoy",this_week:"Esta semana",this_month:"Este mes",this_quarter:"Este trimestre",this_year:"Año actual",previous_week:"Semana pasada",previous_month:"Mes pasado",previous_quarter:"Trimestre pasado",previous_year:"Año pasado",custom:"Personalizado"},KV={title:"Clientes",prefix:"Prefijo",add_customer:"Agregar cliente",contacts_list:"Lista de clientes",name:"Nombre",mail:"Correo | Correos",statement:"Declaración",display_name:"Nombre para mostrar",primary_contact_name:"Nombre de contacto primario",contact_name:"Nombre de contacto",amount_due:"Importe pendiente",email:"Correo electrónico",address:"Dirección",phone:"Teléfono",website:"Sitio web",overview:"Descripción general",invoice_prefix:"Prefijo de la factura",estimate_prefix:"Prefijo de los presupuestos",payment_prefix:"Prefijo de pago",enable_portal:"Habilitar Portal",country:"País",state:"Estado",city:"Ciudad",zip_code:"Código postal",added_on:"Añadido el",action:"Acción",password:"Contraseña",confirm_password:"Confirmar contraseña",street_number:"Número de calle",primary_currency:"Moneda primaria",description:"Descripción",add_new_customer:"Agregar nuevo cliente",save_customer:"Guardar cliente",update_customer:"Actualizar cliente",customer:"Cliente | Clientes",new_customer:"Nuevo cliente",edit_customer:"Editar cliente",basic_info:"Información básica",portal_access:"Acceso al portal",portal_access_text:"¿Le gustaría permitir que este cliente inicie sesión en el Portal del Cliente?",portal_access_url:"Portal URL del cliente",portal_access_url_help:"Por favor, copie y reenvíe la URL anterior a su cliente para proporcionar acceso.",billing_address:"Dirección de Facturación",shipping_address:"Dirección de Envío",copy_billing_address:"Copia de facturación",no_customers:"¡Aún no hay clientes!",no_customers_found:"¡No se encontraron clientes!",no_contact:"No hay contactos",no_contact_name:"No hay nombres de contactos",list_of_customers:"Esta sección contendrá la lista de clientes.",primary_display_name:"Nombre de visualización principal",select_currency:"Seleccione el tipo de moneda",select_a_customer:"Selecciona un cliente",type_or_click:"Escriba o haga clic para seleccionar",new_transaction:"Nueva transacción",no_matching_customers:"¡No hay clientes coincidentes!",phone_number:"Número de teléfono",create_date:"Fecha de Creación",confirm_delete:"No podrá recuperar este cliente y todas las facturas, estimaciones y pagos relacionados. | No podrá recuperar estos clientes y todas las facturas, estimaciones y pagos relacionados.",created_message:"Cliente creado con éxito",updated_message:"Cliente actualizado con éxito",address_updated_message:"Información del domicilio actualizado correctamente",deleted_message:"Cliente eliminado correctamente | Clientes eliminados exitosamente",edit_currency_not_allowed:"No se puede cambiar la divisa una vez creadas las transacciones."},YV={title:"Artículos",items_list:"Lista de artículos",name:"Nombre",unit:"Unidad",description:"Descripción",added_on:"Añadido",price:"Precio",date_of_creation:"Fecha de creación",not_selected:"Ningún elemento seleccionado",action:"Acción",add_item:"Añadir artículo",save_item:"Guardar artículo",update_item:"Actualizar elemento",item:"Artículo | Artículos",add_new_item:"Agregar ítem nuevo",new_item:"Nuevo artículo",edit_item:"Editar elemento",no_items:"¡Aún no hay artículos!",list_of_items:"Esta sección contendrá la lista de artículos.",select_a_unit:"seleccionar unidad",taxes:"Impuestos",item_attached_message:"No se puede eliminar un elemento que ya está en uso.",confirm_delete:"No podrá recuperar este artículo | No podrás recuperar estos elementos",created_message:"Artículo creado con éxito",updated_message:"Artículo actualizado con éxito",deleted_message:"Elemento eliminado con éxito | Elementos eliminados correctamente"},ZV={title:"Presupuestos",accept_estimate:"Aceptar cotización",reject_estimate:"Rechazar cotización",estimate:"Presupuesto | Presupuestos",estimates_list:"Lista de presupuestos",days:"{días} Días",months:"{meses} Mes",years:"{años} Año",all:"Todas",paid:"Pagada",unpaid:"No pagado",customer:"CLIENTE",ref_no:"NÚMERO DE REFERENCIA.",number:"NÚMERO",amount_due:"IMPORTE PENDIENTE",partially_paid:"Parcialmente pagado",total:"Total",discount:"Descuento",sub_total:"Subtotal",estimate_number:"Número de Presupuesto",ref_number:"Número de referencia",contact:"Contacto",add_item:"Agregar un artículo",date:"Fecha",due_date:"Fecha de vencimiento",expiry_date:"Fecha de caducidad",status:"Estado",add_tax:"Agregar impuesto",amount:"Cantidad",action:"Acción",notes:"Notas",tax:"Impuesto",estimate_template:"Plantilla de presupuesto",convert_to_invoice:"Convertir a factura",mark_as_sent:"Marcar como enviado",send_estimate:"Enviar presupuesto",resend_estimate:"Reenviar estimado",record_payment:"Registro de pago",add_estimate:"Agregar presupuesto",save_estimate:"Guardar presupuesto",confirm_conversion:"¿Quiere convertir este presupuesto en una factura?",conversion_message:"Conversión exitosa",confirm_send_estimate:"Este presupuesto se enviará por correo electrónico al cliente",confirm_mark_as_sent:"Este presupuesto se marcará como enviado",confirm_mark_as_accepted:"Este presupuesto se marcará como Aceptado",confirm_mark_as_rejected:"Este presupuesto se marcará como Rechazado",no_matching_estimates:"¡No hay presupuestos coincidentes!",mark_as_sent_successfully:"Presupuesto marcado como enviado correctamente",send_estimate_successfully:"Presupuesto enviado con éxito",errors:{required:"Se requiere campo"},accepted:"Aceptado",rejected:"Rechazado",expired:"Caducado",sent:"Enviado",draft:"Borrador",viewed:"Visto",declined:"Rechazado",new_estimate:"Nuevo presupuesto",add_new_estimate:"Añadir nuevo presupuesto",update_Estimate:"Actualizar presupuesto",edit_estimate:"Editar presupuesto",items:"artículos",Estimate:"Presupuestos | Presupuestos",add_new_tax:"Agregar nuevo impuesto",no_estimates:"¡Aún no hay presupuestos!",list_of_estimates:"Esta sección contendrá la lista de presupuestos.",mark_as_rejected:"Marcar como rechazado",mark_as_accepted:"Marcar como aceptado",marked_as_accepted_message:"Presupuesto marcado como aceptado",marked_as_rejected_message:"Presupuesto marcado como rechazado",confirm_delete:"No podrá recuperar este presupuesto | No podrá recuperar estos presupuestos",created_message:"Presupuesto creada con éxito",updated_message:"Presupuesto actualizada con éxito",deleted_message:"Presupuesto eliminada con éxito | Presupuestos eliminadas exitosamente",something_went_wrong:"Algo fue mal",item:{title:"Título del artículo",description:"Descripción",quantity:"Cantidad",price:"Precio",discount:"Descuento",total:"Total",total_discount:"Descuento total",sub_total:"Subtotal",tax:"Impuesto",amount:"Cantidad",select_an_item:"Escriba o haga clic para seleccionar un elemento",type_item_description:"Descripción del tipo de elemento(opcional)"},mark_as_default_estimate_template_description:"Si se activa, esta plantilla se selccionará automáticamente para nuevos presupuestos. "},GV={title:"Facturas",download:"Descargar",pay_invoice:"Pagar factura",invoices_list:"Lista de facturas",invoice_information:"Información de la factura",days:"{días} Días",months:"{meses} Mes",years:"{años} Año",all:"Todas",paid:"Pagada",unpaid:"No pagado",viewed:"Visto",overdue:"Vencido",completed:"Completado",customer:"CLIENTE",paid_status:"ESTADO PAGADO",ref_no:"NÚMERO DE REFERENCIA.",number:"NÚMERO",amount_due:"IMPORTE PENDIENTE",partially_paid:"Parcialmente pagado",total:"Total",discount:"Descuento",sub_total:"Subtotal",invoice:"Factura | Facturas",invoice_number:"Numero de factura",ref_number:"Número de referencia",contact:"Contacto",add_item:"Agregar un artículo",date:"Fecha",due_date:"Fecha de vencimiento",status:"Estado",add_tax:"Agregar impuesto",amount:"Cantidad",action:"Acción",notes:"Notas",view:"Ver",send_invoice:"Enviar la factura",resend_invoice:"Reenviar factura",invoice_template:"Plantilla de factura",conversion_message:"Factura clonada correctamente",template:"Modelo",mark_as_sent:"Marcar como enviada",confirm_send_invoice:"Esta factura será enviada por email al cliente",invoice_mark_as_sent:"Esta factura se marcará como enviada",confirm_mark_as_accepted:"Esta factura se marcará como aceptada",confirm_mark_as_rejected:"Esta factura se marcará como rechazada",confirm_send:"Estas facturas se enviarán por correo electrónico al cliente.",invoice_date:"Fecha de la factura",record_payment:"Registro de pago",add_new_invoice:"Añadir nueva factura",update_expense:"Actualizar gasto",edit_invoice:"Editar factura",new_invoice:"Nueva factura",save_invoice:"Guardar factura",update_invoice:"Actualizar factura",add_new_tax:"Agregar nuevo impuesto",no_invoices:"¡Aún no hay facturas!",mark_as_rejected:"Marcar como rechazado",mark_as_accepted:"Marcar como aceptado",list_of_invoices:"Esta sección contendrá la lista de facturas.",select_invoice:"Seleccionar factura",no_matching_invoices:"¡No hay facturas coincidentes con la selección!",mark_as_sent_successfully:"Factura marcada como enviada con éxito",invoice_sent_successfully:"Factura enviada satisfactoriamente",cloned_successfully:"Factura clonada correctamente",clone_invoice:"Clonar factura",confirm_clone:"Esta factura se clonará en una nueva factura.",item:{title:"Título del artículo",description:"Descripción",quantity:"Cantidad",price:"Precio",discount:"Descuento",total:"Total",total_discount:"Descuento total",sub_total:"Subtotal",tax:"Impuesto",amount:"Cantidad",select_an_item:"Escriba o haga clic para seleccionar un elemento",type_item_description:"Descripción del tipo de elemento (opcional)"},payment_attached_message:"Una de las facturas seleccionadas ya tiene un pago adjunto. Asegúrese de eliminar primero los pagos adjuntos para continuar con la eliminación",confirm_delete:"No podrá recuperar esta factura | No podrá recuperar estas facturas",created_message:"Factura creada exitosamente",updated_message:"Factura actualizada exitosamente",deleted_message:"Factura eliminada con éxito | Facturas borradas exitosamente",marked_as_sent_message:"Factura marcada como enviada con éxito",something_went_wrong:"Algo fue mal",invalid_due_amount_message:"El pago introducido es mayor que el importe total pendiente de esta factura. Por favor, verificalo y vuelve a intentarlo.",mark_as_default_invoice_template_description:"Si se activa, esta plantilla se seleccionará automáticamente para nuevas facturas. "},QV={title:"Facturas recurrentes",invoices_list:"Lista de facturas recurrentes",days:"{days} Días",months:"{months} Mes/es",years:"{years} Año/s",all:"Todas",paid:"Pagada",unpaid:"No pagada",viewed:"Vista",overdue:"Vencido",active:"Activo",completed:"Completado",customer:"CLIENTE",paid_status:"ESTADO DE PAGO",ref_no:"NÚM. DE REFERENCIA.",number:"NÚMERO",amount_due:"IMPORTE PENDIENTE",partially_paid:"Parcialmente pagada",total:"Total",discount:"Descuento",sub_total:"Subtotal",invoice:"Factura recurrente | Facturas recurrentes",invoice_number:"Número de factura recurrente",next_invoice_date:"Fecha de la próxima factura",ref_number:"Número de referencia",contact:"Contacto",add_item:"Añadir un elemento",date:"Fecha",limit_by:"Limitar por",limit_date:"Fecha límite",limit_count:"Número de Límites",count:"Recuento",status:"Estado",select_a_status:"Selecciona un estado",working:"Trabajando",on_hold:"En espera",complete:"Completado",add_tax:"Agregar impuesto",amount:"Cantidad",action:"Acción",notes:"Notas",view:"Ver",basic_info:"Información básica",send_invoice:"Enviar factura recurrente",auto_send:"Autoenviar",resend_invoice:"Reenviar factura recurrente",invoice_template:"Plantilla de la factura recurrente",conversion_message:"Factura recurrente clonada con éxito",template:"Plantilla",mark_as_sent:"Marcar como enviada",confirm_send_invoice:"Esta factura recurrente se enviará por correo electrónico al cliente",invoice_mark_as_sent:"Esta factura recurrente se marcará como enviada",confirm_send:"Esta factura recurrente se enviará por correo electrónico al cliente",starts_at:"Fecha de inicio",due_date:"Fecha límite de la factura",record_payment:"Registrar pago",add_new_invoice:"Añadir nueva factura recurrente",update_expense:"Actualizar gasto",edit_invoice:"Editar factura recurrente",new_invoice:"Nueva factura recurrente",send_automatically:"Enviar automáticamente",send_automatically_desc:"Habilite esto, si desea enviar la factura automáticamente al cliente cuando se haya creado.",save_invoice:"Guardar factura recurrente",update_invoice:"Actualizar factura recurrente",add_new_tax:"Agregar nuevo impuesto",no_invoices:"¡Aún no hay facturas recurrentes!",mark_as_rejected:"Marcar como rechazado",mark_as_accepted:"Marcar como aceptado",list_of_invoices:"Esta sección contiene la lista de facturas recurrentes.",select_invoice:"Seleccionar factura",no_matching_invoices:"¡No hay facturas recurrentes que coincidan!",mark_as_sent_successfully:"Factura recurrente marcada como enviada correctamente",invoice_sent_successfully:"Factura recurrente enviada correctamente",cloned_successfully:"Factura recurrente clonada con éxito",clone_invoice:"Clonar factura recurrente",confirm_clone:"Esta factura recurrente será clonada en una nueva factura recurrente",add_customer_email:"Por favor, agregue una dirección de correo electrónico para que este cliente envíe las facturas automáticamente.",item:{title:"Título del artículo",description:"Descripción",quantity:"Cantidad",price:"Precio",discount:"Descuento",total:"Total",total_discount:"Descuento total",sub_total:"Subtotal",tax:"Impuesto",amount:"Cantidad",select_an_item:"Escribe o haz clic para seleccionar un elemento",type_item_description:"Descripción del tipo de elemento(opcional)"},frequency:{title:"Frecuencia",select_frequency:"Seleccionar frecuencia",minute:"Minuto",hour:"Hora",day_month:"Día del mes",month:"Mes",day_week:"Día de la semana"},confirm_delete:"No podrá recuperar esta factura | No podrás recuperar estas facturas",created_message:"Factura recurrente creada con éxito",updated_message:"Factura recurrente actualizada correctamente",deleted_message:"Factura recurrente eliminada correctamente | Facturas recurrentes eliminadas correctamente",marked_as_sent_message:"Factura recurrente marcada como enviada con éxito",user_email_does_not_exist:"El email del usuario no existe",something_went_wrong:"algo ha ido mal",invalid_due_amount_message:"La cantidad total de la factura recurrente no puede ser menor a la cantidad total pagada. Por favor, actualiza la factura o elimina los pagos asociados para continuar."},JV={title:"Pagos",payments_list:"Lista de pagos",record_payment:"Registro de pago",customer:"Cliente",date:"Fecha",amount:"Cantidad",action:"Acción",payment_number:"Numero de pago",payment_mode:"Modo de pago",invoice:"Factura",note:"Nota",add_payment:"Agregar pago",new_payment:"Nuevo pago",edit_payment:"Editar pago",view_payment:"Ver pago",add_new_payment:"Agregar nuevo pago",send_payment_receipt:"Enviar recibo de pago",send_payment:"Enviar pago",save_payment:"Guardar pago",update_payment:"Actualizar pago",payment:"Pago | Pagos",no_payments:"¡Aún no hay pagos!",not_selected:"No seleccionado",no_invoice:"Sin facturas",no_matching_payments:"¡No hay pagos equivalentes!",list_of_payments:"Esta sección contendrá la lista de pagos.",select_payment_mode:"Seleccionar modo de pago",confirm_mark_as_sent:"Este presupuesto se marcará como enviado",confirm_send_payment:"Este pago se enviará por correo electrónico al cliente",send_payment_successfully:"Pago enviado correctamente",something_went_wrong:"Algo fue mal",confirm_delete:"No podrá recuperar este pago | No podrá recuperar estos pagos",created_message:"Pago creado con éxito",updated_message:"Pago actualizado con éxito",deleted_message:"Pago eliminado con éxito | Pagos eliminados exitosamente",invalid_amount_message:"El importe del pago no es válido."},XV={title:"Gastos",expenses_list:"Lista de gastos",select_a_customer:"Selecciona un cliente",expense_title:"Título",customer:"Cliente",currency:"Divisa",contact:"Contacto",category:"Categoría",from_date:"Desde la fecha",to_date:"Hasta la fecha",expense_date:"Fecha",description:"Descripción",receipt:"Recibo",amount:"Cantidad",action:"Acción",not_selected:"Sin seleccionar",note:"Nota",category_id:"Categoria ID",date:"Fecha de gastos",add_expense:"Añadir gastos",add_new_expense:"Añadir nuevo gasto",save_expense:"Guardar gasto",update_expense:"Actualizar gasto",download_receipt:"Descargar recibo",edit_expense:"Editar gasto",new_expense:"Nuevo gasto",expense:"Gastos | Gastos",no_expenses:"¡No hay gastos todavía!",list_of_expenses:"Esta sección contendrá la lista de gastos.",confirm_delete:"No podrá recuperar este gasto | No podrá recuperar estos gastos",created_message:"Gastos creados exitosamente",updated_message:"Gastos actualizados con éxito",deleted_message:"Gastos eliminados con éxito | Gastos eliminados exitosamente",categories:{categories_list:"Lista de categorías",title:"Título",name:"Nombre",description:"Descripción",amount:"Cantidad",actions:"Comportamiento",add_category:"añadir categoría",new_category:"Nueva categoría",category:"Categoría | Categorias",select_a_category:"Seleccione una categoría"}},eq={email:"Correo electrónico",password:"Contraseña",forgot_password:"¿Olvidaste tu contraseña?",or_signIn_with:"o Inicia sesión con",login:"Iniciar sesión",register:"Registro",reset_password:"Restablecer la contraseña",password_reset_successfully:"Contraseña reestablecida con éxito",enter_email:"Escriba el correo electrónico",enter_password:"Escriba la contraseña",retype_password:"Reescriba la contraseña"},tq={buy_now:"Comprar ahora",install:"Instalar",price:"Precio",download_zip_file:"Descargar archivo ZIP",unzipping_package:"Descomprimir paquete",copying_files:"Copiando archivos",deleting_files:"Eliminando archivos no usados",completing_installation:"Completando la instalación",update_failed:"Falló la actualización",install_success:"¡El módulo se ha instalado correctamente!",customer_reviews:"Reseñas",license:"Licencia",faq:"Preguntas Frecuentes (FAQ)",monthly:"Mensual",yearly:"Anual",updated:"Actualizado",version:"Versión",disable:"Deshabilitar",module_disabled:"Módulo desactivado",enable:"Habilitar",module_enabled:"Módulo habilitado",update_to:"Actualizar a",module_updated:"¡Módulo actualizado correctamente!",title:"Módulos",module:"Módulo | Módulos",api_token:"API token",invalid_api_token:"API Token inválido.",other_modules:"Otros módulos",view_all:"Ver todo",no_reviews_found:"¡Este módulo aún no tiene reseñas!",module_not_purchased:"Módulo no comprado",module_not_found:"Módulo no encontrado",version_not_supported:"This module version doesn't support the current version of InvoiceShelf",last_updated:"Actualizado",connect_installation:"Conecte su instalación",api_token_description:"Inicie sesión en {url} y conecte esta instalación introduciendo el token de API. Los módulos comprados aparecerán aquí después de establecer la conexión.",view_module:"Ver módulo",update_available:"Actualización disponible",purchased:"Comprado",installed:"Instalado",no_modules_installed:"¡No hay módulos instalados todavía!",disable_warning:"Se revertirán todos los ajustes para este particular.",what_you_get:"Beneficios que obtiene"},aq={title:"Usuarios",users_list:"Lista de usuarios",name:"Nombre",description:"Descripción",added_on:"Añadido",date_of_creation:"Fecha de creación",action:"Acción",add_user:"Agregar usuario",save_user:"Guardar usuario",update_user:"Actualizar usuario",user:"Usuario | Usuarios",add_new_user:"Agregar Nuevo Usuario",new_user:"Nuevo usuario",edit_user:"Editar usuario",no_users:"¡Aún no hay usuarios!",list_of_users:"Esta sección contendrá la lista de usuarios.",email:"Correo",phone:"Teléfono",password:"Contraseña",user_attached_message:"No se puede eliminar un elemento que ya está en uso.",confirm_delete:"No podrá recuperar este Usuario | No podrá recuperar estos Usuarios",created_message:"Usuario creado satisfactoriamente",updated_message:"Usuario actualizado satisfactoriamente",deleted_message:"Usuario eliminado exitosamente | Usuario eliminado correctamente",select_company_role:"Seleccionar rol para {company}",companies:"Empresas"},nq={title:"Informe",from_date:"A partir de la fecha",to_date:"Hasta la fecha",status:"Estado",paid:"Pagada",unpaid:"No pagado",download_pdf:"Descargar PDF",view_pdf:"Ver PDF",update_report:"Informe de actualización",report:"Informe | Informes",profit_loss:{profit_loss:"Pérdida de beneficios",to_date:"Hasta la fecha",from_date:"A partir de la fecha",date_range:"Seleccionar rango de fechas"},sales:{sales:"Ventas",date_range:"Seleccionar rango de fechas",to_date:"Hasta la fecha",from_date:"A partir de la fecha",report_type:"Tipo de informe"},taxes:{taxes:"Impuestos",to_date:"Hasta la fecha",from_date:"A partir de la fecha",date_range:"Seleccionar rango de fechas"},errors:{required:"Se requiere campo"},invoices:{invoice:"Factura",invoice_date:"Fecha de la factura",due_date:"Fecha de vencimiento",amount:"Cantidad",contact_name:"Nombre de contacto",status:"Estado"},estimates:{estimate:"Presupuestar",estimate_date:"Fecha presupuesto",due_date:"Fecha de vencimiento",estimate_number:"Número de Presupuesto",ref_number:"Número de referencia",amount:"Cantidad",contact_name:"Nombre de contacto",status:"Estado"},expenses:{expenses:"Gastos",category:"Categoría",date:"Fecha",amount:"Cantidad",to_date:"Hasta la fecha",from_date:"A partir de la fecha",date_range:"Seleccionar rango de fechas"}},iq={menu_title:{account_settings:"Configuraciones de la cuenta",company_information:"Información de la empresa",customization:"Personalización",preferences:"Preferencias",notifications:"Notificaciones",tax_types:"Tipos de impuestos",expense_category:"Categorías de gastos",update_app:"Actualizar aplicación",backup:"Copias de seguridad",file_disk:"Disco de archivo",custom_fields:"Campos Personalizados",payment_modes:"Formas de pago",notes:"Notas",exchange_rate:"Tasa de cambio",address_information:"Información de dirección"},address_information:{section_description:"Puede actualizar la información de su dirección utilizando el siguiente formulario."},title:"Configuraciones",setting:"Configuraciones | Configuraciones",general:"General",language:"Idioma",primary_currency:"Moneda primaria",timezone:"Zona horaria",date_format:"Formato de fecha",currencies:{title:"Monedas",currency:"Moneda | Monedas",currencies_list:"Lista de monedas",select_currency:"Seleccione el tipo de moneda",name:"Nombre",code:"Código",symbol:"Símbolo",precision:"Precisión",thousand_separator:"Separador de miles",decimal_separator:"Separador decimal",position:"Posición",position_of_symbol:"Posición del símbolo",right:"Derecho",left:"Izquierda",action:"Acción",add_currency:"Agregar moneda"},mail:{host:"Host de correo",port:"Puerto de correo",driver:"Conductor de correo",secret:"Secreto",mailgun_secret:"Mailgun Secreto",mailgun_domain:"Domino",mailgun_endpoint:"Mailgun endpoint",ses_secret:"Secreto SES",ses_key:"Clave SES",password:"Contraseña de correo",username:"Nombre de usuario de correo",mail_config:"Configuración de correo",from_name:"Del nombre del correo",from_mail:"Desde la dirección de correo",encryption:"Cifrado de correo",mail_config_desc:"Los detalles a continuación se utilizarán para actualizar el entorno de correo. También puede cambiar los detalles en cualquier momento después de iniciar sesión."},pdf:{title:"Configuración de PDF",footer_text:"Texto de pie de página",pdf_layout:"Diseño PDF"},company_info:{company_info:"Información de la compañía",company_name:"Nombre de Empresa",company_logo:"Logo de la compañía",section_description:"Información sobre su empresa que se mostrará en las facturas, presupuestos y otros documentos creados por InvoiceShelf.",phone:"Teléfono",country:"País",state:"Estado",city:"Ciudad",address:"Dirección",zip:"Código Postal",save:"Guardar",delete:"Eliminar",updated_message:"Información de la empresa actualizada con éxito",delete_company:"Eliminar empresa",delete_company_description:"Una vez que elimines tu empresa, perderás todos los datos y archivos asociados a ella permanentemente.",are_you_absolutely_sure:"¿Estás realmente seguro?",delete_company_modal_desc:"Est acción no se puede deshacer. Se eliminará de manera permanente {company} y todos sus datos asociados.",delete_company_modal_label:"Por favor escribe {company} para confirmar"},custom_fields:{title:"Campos Personalizados",section_description:"Personalice sus facturas, estimaciones y recibos de pago en sus propios campos. Asegúrese de usar los siguientes campos añadidos en los formatos de dirección de la página de configuración de personalización.",add_custom_field:"Agregar campo personalizado",edit_custom_field:"Editar campo personalizado",field_name:"Nombre del campo",label:"Etiqueta",type:"Tipo",name:"Nombre",slug:"Slug",required:"Necesaria",placeholder:"Marcador de posición",help_text:"texto de ayuda",default_value:"Valor por defecto",prefix:"Prefijo",starting_number:"Número inicial",model:"Modelo",help_text_description:"Ingrese un texto para ayudar a los usuarios a comprender el propósito de este campo personalizado.",suffix:"Sufijo",yes:"si",no:"No",order:"Orden",custom_field_confirm_delete:"No podrá recuperar este campo personalizado",already_in_use:"El campo personalizado ya está en uso",deleted_message:"Campo personalizado eliminado correctamente",options:"opciones",add_option:"Agregar opciones",add_another_option:"Agregar otra opción",sort_in_alphabetical_order:"Ordenar en orden alfabético",add_options_in_bulk:"Agregar opciones a granel",use_predefined_options:"Usar opciones predefinidas",select_custom_date:"Seleccionar fecha personalizada",select_relative_date:"Seleccionar fecha relativa",ticked_by_default:"Marcada por defecto",updated_message:"Campo personalizado actualizado correctamente",added_message:"Campo personalizado agregado correctamente",press_enter_to_add:"Presiona Enter para añadir una nueva opción",model_in_use:"No se puede actualizar el modelo para los campos que ya están en uso.",type_in_use:"No se puede actualizar el tipo de los campos que ya están en uso."},customization:{customization:"Personalización",updated_message:"Información de la empresa actualizada con éxito",save:"Guardar",insert_fields:"Insertar campos",learn_custom_format:"Aprende a utilizar el formato personalizado",add_new_component:"Añadir nuevo componente",component:"Componente",Parameter:"Parámetro",series:"Series",series_description:"Para establecer un prefijo/sufijo fijo como por ejemplo 'INV' para las facturas de tu empresa. El número máximo de caracteres permitidos es 4.",series_param_label:"Valor de series",delimiter:"Delimitador",delimiter_description:"Carácter único para especificar el límite entre 2 componentes separados. Por defecto está configurado en -",delimiter_param_label:"Valor delimitador",date_format:"Formato de fecha",date_format_description:"Un campo de fecha y hora local que acepta un parámetro de formato. El formato predeterminado: 'Y' representa el año actual.",date_format_param_label:"Formato",sequence:"Secuencia",sequence_description:"Secuencia consecutiva de números en su empresa. Puede especificar la longitud en el parámetro dado.",sequence_param_label:"Longitud de la secuencia",customer_series:"Series de clientes",customer_series_description:"Establecer un prefijo/postfijo diferente para cada cliente.",customer_sequence:"Secuencia de cliente",customer_sequence_description:"Secuencia consecutiva de números para cada uno de sus clientes.",customer_sequence_param_label:"Longitud de la secuencia",random_sequence:"Secuencia aleatoria",random_sequence_description:"Cadena alfanumérica aleatoria. Puedes especificar la longitud en el parámetro dado.",random_sequence_param_label:"Longitud de la secuencia",invoices:{title:"Facturas",invoice_number_format:"Formato de número de factura",invoice_number_format_description:"Personalice cómo se genera automáticamente su número de factura cuando crea una nueva factura.",preview_invoice_number:"Previsualizar número de factura",due_date:"Fecha de vencimiento",due_date_description:"Especifique cómo se establece automáticamente la fecha de vencimiento cuando crea una factura.",due_date_days:"Factura vence después de días",set_due_date_automatically:"Establecer fecha de vencimiento automáticamente",set_due_date_automatically_description:"Habilite esto si desea establecer la fecha de vencimiento automáticamente cuando crea una nueva factura.",default_formats:"Formatos por defecto",default_formats_description:"Los formatos dados a continuación se utilizan para completar los campos automáticamente en la creación de la factura.",default_invoice_email_body:"Cuerpo predeterminado del correo electrónico de la factura",company_address_format:"Formato de dirección de la empresa",shipping_address_format:"Formato de la dirección de envío",billing_address_format:"Formato de dirección de facturación",invoice_email_attachment:"Enviar cotización como adjunto",invoice_email_attachment_setting_description:"Activa esto si quieres enviar facturas como archivo adjunto de correo electrónico. Tenga en cuenta que el botón 'Ver factura' en los correos electrónicos ya no se mostrará cuando esté habilitado.",invoice_settings_updated:"La configuración de facturas se ha actualizado correctamente",retrospective_edits:"Ediciones retrospectivas",allow:"Permitir",disable_on_invoice_partial_paid:"Desactivar después de que se registre un pago parcial",disable_on_invoice_paid:"Desactivar después de que se registre el pago completo",disable_on_invoice_sent:"Desactivar después de enviar la factura",retrospective_edits_description:" Según las leyes de su país o sus preferencias, puede restringir que los usuarios editen las facturas finalizadas."},estimates:{title:"Estimaciones",estimate_number_format:"Formato de número de estimación",estimate_number_format_description:"Personalice cómo se genera automáticamente su número de presupuesto cuando crea un nuevo presupuesto.",preview_estimate_number:"Vista previa del número de presupuesto",expiry_date:"Fecha de vencimiento",expiry_date_description:"Especifique cómo se establece automáticamente la fecha de caducidad cuando crea un presupuesto.",expiry_date_days:"Estimación Caduca después de días",set_expiry_date_automatically:"Establecer fecha de expiración automáticamente",set_expiry_date_automatically_description:"Habilite esto si desea establecer la fecha de vencimiento automáticamente cuando crea un nuevo presupuesto.",default_formats:"Formatos por defecto",default_formats_description:"Los formatos dados a continuación se utilizan para completar los campos automáticamente en la creación del presupuesto.",default_estimate_email_body:"Cuerpo predeterminado estimado del correo electrónico",company_address_format:"Formato de dirección de la empresa",shipping_address_format:"Formato de dirección de envío",billing_address_format:"Formato de la dirección de facturación",estimate_email_attachment:"Enviar cotización como adjunto",estimate_email_attachment_setting_description:"Activa esto si quieres enviar facturas como archivo adjunto de correo electrónico. Tenga en cuenta que el botón 'Ver factura' en los correos electrónicos ya no se mostrará cuando esté habilitado.",estimate_settings_updated:"Ajustes de presupuesto actualizados con éxito",convert_estimate_options:"Acción de conversión de presupuesto",convert_estimate_description:"Especifique lo que sucede con el presupuesto una vez que se convierte en una factura.",no_action:"No hacer nada",delete_estimate:"Eliminar presupuesto",mark_estimate_as_accepted:"Marcar presupuesto como aceptado"},payments:{title:"Pagos",payment_number_format:"Formato del número de pago",payment_number_format_description:"Personalice cómo se genera automáticamente su número de pago cuando crea un nuevo pago.",preview_payment_number:"Previsualizar número de pago",default_formats:"Formatos predeterminados",default_formats_description:"Los formatos dados a continuación se utilizan para completar los campos automáticamente en la creación del pago.",default_payment_email_body:"Cuerpo predeterminado del correo electrónico del pago",company_address_format:"Formato de dirección de la empresa",from_customer_address_format:"Desde el formato de dirección del cliente",payment_email_attachment:"Enviar pagos como adjunto",payment_email_attachment_setting_description:"Activa esto si quieres enviar los pagos como archivo adjunto de correo electrónico. Tenga en cuenta que el botón 'Ver pago' en los correos electrónicos ya no se mostrará cuando esté habilitado.",payment_settings_updated:"Los métodos de pago se han actualizado correctamente"},items:{title:"Artículos",units:"unidades",add_item_unit:"Agregar unidad de artículo",edit_item_unit:"Editar unidad de artículo",unit_name:"Nombre de la unidad",item_unit_added:"Unidad de artículo agregada",item_unit_updated:"Unidad de artículo actualizada",item_unit_confirm_delete:"No podrás recuperar esta unidad de artículo",already_in_use:"Unidad de artículo ya está en uso",deleted_message:"Unidad de elemento eliminada correctamente"},notes:{title:"Notas",description:"Ahorre tiempo creando notas y reutilizándolas en sus facturas, cálculos y pagos.",notes:"Notas",type:"Tipo",add_note:"Agregar nota",add_new_note:"Agregar nueva nota",name:"Nombre",edit_note:"Editar nota",note_added:"Nota agregada correctamente",note_updated:"Nota actualizada correctamente",note_confirm_delete:"No podrá recuperar esta nota",already_in_use:"Nota ya está en uso",deleted_message:"Nota eliminada correctamente"}},account_settings:{profile_picture:"Foto de perfil",name:"Nombre",email:"Correo electrónico",password:"Contraseña",confirm_password:"Confirmar contraseña",account_settings:"Configuraciones de la cuenta",save:"Guardar",section_description:"Puede actualizar su nombre, correo electrónico y contraseña utilizando el siguiente formulario.",updated_message:"Configuración de la cuenta actualizada correctamente"},user_profile:{name:"Nombre",email:"Correo electrónico",password:"Contraseña",confirm_password:"Confirmar contraseña"},notification:{title:"Notificación",email:"Enviar notificaciones a",description:"¿Qué notificaciones por correo electrónico le gustaría recibir cuando algo cambia?",invoice_viewed:"Factura vista",invoice_viewed_desc:"Cuando su cliente vio la factura enviada a través del panel de control de InvoiceShelf.",estimate_viewed:"Presupuesto visto",estimate_viewed_desc:"Cuando su cliente vio el presupuesto enviado a través del panel de control de InvoiceShelf.",save:"Guardar",email_save_message:"Correo electrónico guardado con éxito",please_enter_email:"Por favor, introduzca su correo electrónico"},roles:{title:"Roles",description:"Configura los roles y permisos de esta empresa",save:"Guardar",add_new_role:"Añadir nuevo rol",role_name:"Nombre del rol",added_on:"Añadido el",add_role:"Añadir rol",edit_role:"Editar rol",name:"Nombre",permission:"Permiso | Permisos",select_all:"Seleccionar todo",none:"Ninguno",confirm_delete:"No podrá recuperar este Rol",created_message:"Rol creado correctamente",updated_message:"Rol actualizado correctamente",deleted_message:"Rol eliminado correctamente",already_in_use:"El rol ya está en uso"},exchange_rate:{exchange_rate:"Tasa de cambio",title:"Solucionar problemas de cambio de moneda",description:"Por favor, selecciona un tipo de cambio para todas las monedas mencionadas a continuación para ayudar a InvoiceShelf a calcular correctamente las cantidades en {currency}.",drivers:"Controladores",new_driver:"Añadir nuevo proveedor",edit_driver:"Editar proveedor",select_driver:"Seleccione un controlador",update:"selecciona un tipo de cambio ",providers_description:"Configure sus proveedores de tipos de cambio aquí para obtener automáticamente el tipo de cambio más reciente en las transacciones.",key:"Clave API",name:"Nombre",driver:"Controlador",is_default:"Usar por defecto",currency:"Divisas",exchange_rate_confirm_delete:"No podrá recuperar este controlador",created_message:"Proveedor creado correctamente",updated_message:"Proveedor actualizado correctamente",deleted_message:"Proveedor eliminado correctamente",error:" No puede eliminar el controlador activo",default_currency_error:"Esta moneda ya se usa en uno de los proveedores activos",exchange_help_text:"Ingrese el tipo de cambio para convertir de {currency} a {baseCurrency}",currency_freak:"Moneda",currency_layer:"Capa de moneda",open_exchange_rate:"Tasa de cambio",currency_converter:"Conversor de moneda",server:"Servidor",url:"URL",active:"Activo",currency_help_text:"Este proveedor solo se utilizará en las monedas seleccionadas anteriormente",currency_in_used:"Las siguientes monedas ya están activas en otro proveedor. Elimine estas monedas de la selección para volver a activar este proveedor."},tax_types:{title:"Tipos de impuestos",add_tax:"Agregar impuesto",edit_tax:"Editar impuesto",description:"Puede agregar o eliminar impuestos a su gusto. InvoiceShelf admite impuestos sobre artículos individuales, así como sobre la factura.",add_new_tax:"Agregar nuevo impuesto",tax_settings:"Configuraciones de impuestos",tax_per_item:"Impuesto por artículo",tax_name:"Nombre del impuesto",compound_tax:"Impuesto compuesto",percent:"Porcentaje",action:"Acción",tax_setting_description:"Habilítelo si desea agregar impuestos a artículos de factura de forma individual. Por defecto, los impuestos se agregan directamente a la factura.",created_message:"Tipo de impuesto creado con éxito",updated_message:"Tipo de impuesto actualizado correctamente",deleted_message:"Tipo de impuesto eliminado correctamente",confirm_delete:"No podrá recuperar este tipo de impuesto",already_in_use:"El impuesto ya está en uso."},payment_modes:{title:"Formas de pago",description:"Modos de transacción para pagos",add_payment_mode:"Agregar modo de pago",edit_payment_mode:"Editar modo de pago",mode_name:"Nombre del modo",payment_mode_added:"Forma de pago añadida",payment_mode_updated:"Forma de pago actualizada",payment_mode_confirm_delete:"No podrás recuperar este Modo de Pago",payments_attached:"Esta forma de pago ya está vinculada a los pagos. Por favor, elimine los pagos adjuntos para proceder con la eliminación.",expenses_attached:"Esta forma de pago ya está adjunta a los gastos. Por favor, elimine los gastos adjuntos para proceder con la eliminación.",deleted_message:"Método de pago eliminado correctamente"},expense_category:{title:"Categorías de gastos",action:"Acción",description:"Se requieren categorías para agregar entradas de gastos. Puede Agregar o Eliminar estas categorías según su preferencia.",add_new_category:"Añadir nueva categoria",add_category:"Añadir categoría",edit_category:"Editar categoria",category_name:"nombre de la categoría",category_description:"Descripción",created_message:"Categoría de gastos creada con éxito",deleted_message:"Categoría de gastos eliminada correctamente",updated_message:"Categoría de gastos actualizada con éxito",confirm_delete:"No podrá recuperar esta categoría de gastos",already_in_use:"La categoría ya está en uso."},preferences:{currency:"Moneda",default_language:"Idioma predeterminado",time_zone:"Zona horaria",fiscal_year:"Año financiero",date_format:"Formato de fecha",discount_setting:"Ajuste de descuento",discount_per_item:"Descuento por artículo",discount_setting_description:"Habilítelo si desea agregar Descuento a artículos de factura individuales. Por defecto, los descuentos se agregan directamente a la factura.",expire_public_links:"Expirar automáticamente enlaces públicos",expire_setting_description:"Especifique si desea expirar todos los enlaces enviados por la aplicación para ver facturas, estimaciones y pagos, etc. después de una duración especificada.",save:"Guardar",preference:"Preferencia | Preferencias",general_settings:"Preferencias predeterminadas para el sistema.",updated_message:"Preferencias actualizadas exitosamente",select_language:"seleccione el idioma",select_time_zone:"selecciona la zona horaria",select_date_format:"Seleccionar formato de fecha",select_financial_year:"seleccione año financiero",recurring_invoice_status:"Estado de la factura recurrente",create_status:"Crear estado",active:"Activo",on_hold:"En espera",update_status:"Actualizar estado",completed:"Completado",company_currency_unchangeable:"No se puede cambiar la divisa de la empresa"},update_app:{title:"Actualizar aplicación",description:"Puedes actualizar InvoiceShelf fácilmente comprobando si existe una nueva actualización haciendo clic en el botón de abajo",check_update:"Buscar actualizaciones",avail_update:"Nueva actualización disponible",next_version:"Próxima versión",requirements:"Requisitos",update:"Actualizar",update_progress:"Actualización en progreso...",progress_text:"Solo tomará unos minutos. No actualice la pantalla ni cierre la ventana antes de que finalice la actualización.",update_success:"¡La aplicación ha sido actualizada! Espere mientras la ventana de su navegador se vuelve a cargar automáticamente.",latest_message:"¡Actualización no disponible! Estás en la última versión.",current_version:"Versión actual",download_zip_file:"Descargar archivo ZIP",unzipping_package:"Descomprimir paquete",copying_files:"Copiando documentos",deleting_files:"Eliminando archivos no usados",running_migrations:"Ejecutar migraciones",finishing_update:"Actualización final",update_failed:"Actualización fallida",update_failed_text:"¡Lo siento! Su actualización falló el: {step} paso",update_warning:"Todos los archivos y temas predeterminados se sobreescribirán cuando actualice la aplicación a través de esta utilidad. Por favor, cree una copia de seguridad de sus temas y base de datos antes de actualizar."},backup:{title:"Copia de seguridad | Copias de seguridad",description:"La copia de seguridad es un archivo comprimido zip que contiene todos los archivos en los directorios que especifiques junto con tu base de datos",new_backup:"Agregar nueva copia de seguridad",create_backup:"Crear copia de seguridad",select_backup_type:"Seleccione Tipo de Copia de Seguridad",backup_confirm_delete:"No podrá recuperar esta copia de seguridad",path:"ruta",new_disk:"Nuevo Disco",created_at:"creado el",size:"tamaño",dropbox:"dropbox",local:"local",healthy:"saludable",amount_of_backups:"cantidad de copias de seguridad",newest_backups:"copias de seguridad más recientes",used_storage:"almacenamiento utilizado",select_disk:"Seleccionar Disco",action:"Acción",deleted_message:"Copia de seguridad eliminada exitosamente",created_message:"Copia de seguridad creada satisfactoriamente",invalid_disk_credentials:"Credencial no válida del disco seleccionado"},disk:{title:"Disco de archivos | Discos de archivos",description:"Por defecto, InvoiceShelf utilizará su disco local para guardar copias de seguridad, avatar y otros archivos de imagen. Puede configurar varios controladores de disco como DigitalOcean, S3 y Dropbox según sus preferencias.",created_at:"creado el",dropbox:"dropbox",name:"Nombre",driver:"Controlador",disk_type:"Tipo",disk_name:"Nombre del disco",new_disk:"Agregar nuevo disco",filesystem_driver:"Controlador del sistema de archivos",local_driver:"controlador local",local_root:"raíz local",public_driver:"Controlador público",public_root:"Raíz pública",public_url:"URL pública",public_visibility:"Visibilidad pública",media_driver:"Controlador multimedia",media_root:"Raíz multimedia",aws_driver:"Controlador AWS",aws_key:"Clave AWS",aws_secret:"Secreto AWS",aws_region:"Región de AWS",aws_bucket:"Cubo AWS",aws_root:"Raíz AWS",do_spaces_type:"Hacer Espacios tipo",do_spaces_key:"Disponer espacios",do_spaces_secret:"Disponer espacios secretos",do_spaces_region:"Disponer región de espacios",do_spaces_bucket:"Disponer espacios",do_spaces_endpoint:"Disponer espacios extremos",do_spaces_root:"Disponer espacios en la raíz",dropbox_type:"Tipo de Dropbox",dropbox_token:"Token de DropBox",dropbox_key:"Clave Dropbox",dropbox_secret:"Dropbox Secret",dropbox_app:"Aplicación Dropbox",dropbox_root:"Raíz Dropbox",default_driver:"Controlador por defecto",is_default:"Usar por defecto",set_default_disk:"Establecer disco predeterminado",set_default_disk_confirm:"Este disco se establecerá por defecto y todos los nuevos PDFs se guardarán en este disco",success_set_default_disk:"Disco establecido correctamente como predeterminado",save_pdf_to_disk:"Guardar PDFs a disco",disk_setting_description:" Habilite esto, si desea guardar automáticamente una copia en formato pdf de cada factura, cálculo y recibo de pago en su disco predeterminado. Al activar esta opción, se reducirá el tiempo de carga al visualizar los archivos PDFs.",select_disk:"Seleccionar Disco",disk_settings:"Configuración del disco",confirm_delete:"Los archivos y carpetas existentes en el disco especificado no se verán afectados, pero su configuración de disco será eliminada de InvoiceShelf",action:"Acción",edit_file_disk:"Editar disco de ficheros",success_create:"Disco añadido satisfactoriamente",success_update:"Disco actualizado satisfactoriamente",error:"Error al añadir disco",deleted_message:"Disco de archivo borrado correctamente",disk_variables_save_successfully:"Disco configurado correctamente",disk_variables_save_error:"La configuración del disco ha fallado.",invalid_disk_credentials:"Credencial no válida del disco seleccionado"},taxations:{add_billing_address:"Introduzca su dirección de facturación",add_shipping_address:"Introduzca la dirección de envío",add_company_address:"Introduzca la dirección de la empresa",modal_description:"La siguiente información es requerida para obtener el impuesto de venta.",add_address:"Añadir dirección para obtener impuestos de venta.",address_placeholder:"Ejemplo: 123, Mi Calle",city_placeholder:"Ejemplo: Los Angeles",state_placeholder:"Ejemplo: CA",zip_placeholder:"Ejemplo: 90024",invalid_address:"Proporciona una dirección válida."}},oq={account_info:"Información de la cuenta",account_info_desc:"Los detalles a continuación se utilizarán para crear la cuenta principal de administrador. También puede cambiar los detalles en cualquier momento después de iniciar sesión.",name:"Nombre",email:"Correo",password:"Contraseña",confirm_password:"Confirmar contraseña",save_cont:"Guardar y continuar",company_info:"Información de la empresa",company_info_desc:"Esta información se mostrará en las facturas. Tenga en cuenta que puede editar esto más adelante en la página de configuración.",company_name:"nombre de empresa",company_logo:"Logo de la compañía",logo_preview:"Vista previa del logotipo",preferences:"Preferencias",preferences_desc:"Preferencias predeterminadas para el sistema.",currency_set_alert:"La moneda de la empresa no se puede cambiar más tarde.",country:"País",state:"Estado",city:"Ciudad",address:"Dirección",street:"Calle1 | Calle2",phone:"Teléfono",zip_code:"Código postal",go_back:"Regresa",currency:"Moneda",language:"Idioma",time_zone:"Zona horaria",fiscal_year:"Año financiero",date_format:"Formato de fecha",from_address:"Desde la Dirección",username:"Nombre de usuario",next:"Siguiente",continue:"Continuar",skip:"Saltar",database:{database:"URL del sitio y base de datose",connection:"Conexión de base de datos",host:"Host de la base de datos",port:"Puerto de la base de datos",password:"Contraseña de la base de datos",app_url:"URL de la aplicación",app_domain:"Dominio",username:"Nombre de usuario de la base de datos",db_name:"Nombre de la base de datos",db_path:"Ruta de la base de datos",desc:"Cree una base de datos en su servidor y establezca las credenciales utilizando el siguiente formulario."},permissions:{permissions:"Permisos",permission_confirm_title:"¿Estás seguro de que quieres continuar?",permission_confirm_desc:"Error de verificación de permisos de carpeta",permission_desc:"A continuación se muestra la lista de permisos de carpeta necesarios para que la aplicación funcione. Si la verificación de permisos falla, asegúrese de actualizar los permisos de su carpeta."},verify_domain:{title:"Verificación de dominio",desc:"InvoiceShelf utiliza la autenticación basada en Sesión que requiere verificación de dominio por motivos de seguridad. Por favor, introduzca el dominio en el que accederá a su aplicación web.",app_domain:"Dominio de aplicación",verify_now:"Verificar ahora",success:"Dominio verificado correctamente.",failed:"La verificación del dominio falló. Ingrese un nombre de dominio válido.",verify_and_continue:"Verificar y continuar"},mail:{host:"Host de correo",port:"Puerto de correo",driver:"Conductor de correo",secret:"Secreto",mailgun_secret:"Mailgun Secreto",mailgun_domain:"Dominio",mailgun_endpoint:"Mailgun endpoint",ses_secret:"Secreto SES",ses_key:"Clave SES",password:"Contraseña de correo",username:"Nombre de usuario de correo",mail_config:"Configuración de correo",from_name:"Del nombre del correo",from_mail:"Desde la dirección de correo",encryption:"Cifrado de correo",mail_config_desc:"Los detalles a continuación se utilizarán para actualizar el entorno de correo. También puede cambiar los detalles en cualquier momento después de iniciar sesión."},req:{system_req:"Requisitos del sistema",php_req_version:"Php (versión {version} necesario)",check_req:"Consultar requisitos",system_req_desc:"InvoiceShelf tiene algunos requisitos de servidor. Asegúrese de que su servidor tenga la versión de php requerida y todas las extensiones mencionadas a continuación."},errors:{migrate_failed:"La migración falló",database_variables_save_error:"No se puede conectar a la base de datos con los valores proporcionados.",mail_variables_save_error:"La configuración del correo electrónico ha fallado.",connection_failed:"Conexión de base de datos fallida",database_should_be_empty:"La base de datos debe estar vacía"},success:{mail_variables_save_successfully:"Correo electrónico configurado correctamente",database_variables_save_successfully:"Base de datos configurada con éxito."}},rq={invalid_phone:"Numero de telefono invalido",invalid_url:"URL no válida (por ejemplo, http://www.invoiceshelf.com)",invalid_domain_url:"URL no válida (por ejemplo, invoiceshelf.com)",required:"Se requiere campo",email_incorrect:"Email incorrecto.",email_already_taken:"Este email ya está en uso",email_does_not_exist:"El usuario con el correo electrónico dado no existe",item_unit_already_taken:"El nombre de la unidad ya está en uso",payment_mode_already_taken:"El modo de pago ya ha sido tomado",send_reset_link:"Enviar enlace de restablecimiento",not_yet:"¿Aún no? Envíalo de nuevo",password_min_length:"La contraseña debe contener {count} caracteres",name_min_length:"El nombre debe tener al menos {count} letras.",prefix_min_length:"El prefijo debe tener al menos {count} letras.",enter_valid_tax_rate:"Ingrese una tasa impositiva válida",numbers_only:"Solo números.",characters_only:"Solo caracteres.",password_incorrect:"Las contraseñas deben ser idénticas",password_length:"La contraseña debe tener 5 caracteres de longitud.",qty_must_greater_than_zero:"La cantidad debe ser mayor que cero.",price_greater_than_zero:"El precio debe ser mayor que cero.",payment_greater_than_zero:"El pago debe ser mayor que cero.",payment_greater_than_due_amount:"El pago introducido es mayor que el importe pendiente de esta factura.",quantity_maxlength:"La cantidad no debe ser mayor de 20 dígitos.",price_maxlength:"El precio no debe ser mayor de 20 dígitos.",price_minvalue:"El precio debe ser mayor que 0 dígitos",amount_maxlength:"La cantidad no debe ser mayor de 20 dígitos.",amount_minvalue:"La cantidad debe ser mayor que 0 dígitos",discount_maxlength:"El descuento no debe ser mayor que el descuento máximo",description_maxlength:"La descripción no debe tener más de 255 caracteres.",subject_maxlength:"El asunto no debe tener más de 100 caracteres.",message_maxlength:"El mensaje no debe tener más de 255 caracteres.",maximum_options_error:"Máximo de {max} opciones seleccionadas. Primero elimine una opción seleccionada para seleccionar otra.",notes_maxlength:"Las notas no deben tener más de 255 caracteres.",address_maxlength:"La dirección no debe tener más de 255 caracteres.",ref_number_maxlength:"El número de referencia no debe tener más de 255 caracteres.",prefix_maxlength:"El prefijo no debe tener más de 5 caracteres.",something_went_wrong:"Algo fue mal",number_length_minvalue:"La cantidad debe ser mayor que 0",at_least_one_ability:"Por favor, selecciona al menos un permiso.",valid_driver_key:"Por favor, introduza una clave {driver} válida.",valid_exchange_rate:"Por favor, introduce una tasa de cambio válida.",company_name_not_same:"El nombre de la empresa debe coincidir con el nombre indicado."},sq={starter_plan:"¡Esta función está disponible en el plan Starter y en adelante!",invalid_provider_key:"Por favor, introduzca un proveedor de claves API válido.",estimate_number_used:"El número de estimación ya se ha tomado.",invoice_number_used:"El número de factura ya está en uso.",payment_attached:"Esta factura ya tiene un pago adjunto. Asegúrese de eliminar primero los pagos adjuntos para continuar con la eliminación.",payment_number_used:"El número de pago ya está en uso.",name_already_taken:"El nombre ya está en uso.",receipt_does_not_exist:"No existe el recibo.",customer_cannot_be_changed_after_payment_is_added:"El cliente no puede ser modificado después de agregar el pago",invalid_credentials:"Credenciales inválidas.",not_allowed:"No permitido",login_invalid_credentials:"Estas credenciales no coinciden con nuestros registros.",enter_valid_cron_format:"Por favor, introduzca un formato cron válido",email_could_not_be_sent:"No se pudo enviar el correo a esta dirección de correo electrónico.",invalid_address:"Por favor, introduzca una dirección válida.",invalid_key:"Por favor, introduzca una clave válida.",invalid_state:"Por favor, introduzca un estado válido.",invalid_city:"Por favor, introduzca una ciudad válida.",invalid_postal_code:"Por favor, introduzca un código postal válido.",invalid_format:"Por favor, introduzca un formato de consulta válido.",api_error:"El servidor no responde.",feature_not_enabled:"Característica no habilitada.",request_limit_met:"Ha alcanzado el límite de solicitudes.",address_incomplete:"Dirección incompleta"},lq="Presupuestar",cq="Número de Presupuesto",dq="Fecha presupuesto",uq="Fecha de caducidad",_q="Factura",mq="Numero de factura",pq="Fecha de la factura",fq="Fecha final",hq="Notas",gq="Artículos",vq="Cantidad",yq="Precio",bq="Descuento",kq="Cantidad",wq="Subtotal",xq="Total",Dq="Pagos",Sq="RECIBO DE PAGO",zq="Fecha de pago",Pq="Numero de pago",Eq="Modo de pago",Aq="Importe recibido",Cq="INFORME DE GASTOS",jq="GASTO TOTAL",Tq="INFORME PERDIDAS & GANANCIAS",Iq="Informe de ventas por cliente",Nq="Informe de ventas por ítem",Fq="Informe de ventas impuestos",Mq="INGRESO",Rq="GANANCIA NETA",Oq="Informe de ventas: Por cliente",$q="VENTAS TOTALES",Lq="Informe de ventas: por artículo",Bq="INFORME DE IMPUESTOS",Uq="TOTAL IMPUESTOS",Vq="Tipos de impuestos",qq="Gastos",Hq="Cobrar a,",Wq="Enviar a,",Kq="Recibido desde:",Yq="Impuesto",Zq={navigation:LV,general:BV,dashboard:UV,tax_types:VV,global_search:qV,company_switcher:HV,dateRange:WV,customers:KV,items:YV,estimates:ZV,invoices:GV,recurring_invoices:QV,payments:JV,expenses:XV,login:eq,modules:tq,users:aq,reports:nq,settings:iq,wizard:oq,validation:rq,errors:sq,pdf_estimate_label:lq,pdf_estimate_number:cq,pdf_estimate_date:dq,pdf_estimate_expire_date:uq,pdf_invoice_label:_q,pdf_invoice_number:mq,pdf_invoice_date:pq,pdf_invoice_due_date:fq,pdf_notes:hq,pdf_items_label:gq,pdf_quantity_label:vq,pdf_price_label:yq,pdf_discount_label:bq,pdf_amount_label:kq,pdf_subtotal:wq,pdf_total:xq,pdf_payment_label:Dq,pdf_payment_receipt_label:Sq,pdf_payment_date:zq,pdf_payment_number:Pq,pdf_payment_mode:Eq,pdf_payment_amount_received_label:Aq,pdf_expense_report_label:Cq,pdf_total_expenses_label:jq,pdf_profit_loss_label:Tq,pdf_sales_customers_label:Iq,pdf_sales_items_label:Nq,pdf_tax_summery_label:Fq,pdf_income_label:Mq,pdf_net_profit_label:Rq,pdf_customer_sales_report:Oq,pdf_total_sales_label:$q,pdf_item_sales_label:Lq,pdf_tax_report_label:Bq,pdf_total_tax_label:Uq,pdf_tax_types_label:Vq,pdf_expenses_label:qq,pdf_bill_to:Hq,pdf_ship_to:Wq,pdf_received_from:Kq,pdf_tax_label:Yq},Gq={dashboard:"لوحة التحكم",customers:"العملاء",items:"بضائع/خدمات",invoices:"الفواتير","recurring-invoices":"Recurring Invoices",expenses:"النفقات",estimates:"التقديرات",payments:"الدفوعات",reports:"التقارير",settings:"الإعدادات",logout:"تسجيل الخروج",users:"المستخدمون",modules:"Modules"},Qq={add_company:"أضف شركة",view_pdf:"عرض PDF",copy_pdf_url:"نسخ رابط PDF",download_pdf:"تنزيل PDF",save:"حفظ",create:"إنشاء",cancel:"تراجع",update:"تحديث",deselect:"إلغاء الإختيار",download:"تحميل",from_date:"من تاريخ",to_date:"إلى تاريخ",from:"من",to:"إلى",ok:"Ok",yes:"Yes",no:"No",sort_by:"ترتيب حسب",ascending:"تصاعدي",descending:"تنازلي",subject:"موضوع",body:"الجسم",message:"رسالة",send:"إرسال",preview:"Preview",go_back:"إلى الخلف",back_to_login:"العودة إلى تسجيل الدخول؟",home:"الرئيسية",filter:"تصفية",delete:"حذف",edit:"تعديل",view:"عرض",add_new_item:"إضافة صنف جديد",clear_all:"مسح الكل",showing:"عرض",of:"من",actions:"العمليات",subtotal:"المجموع الفرعي",discount:"خصم",fixed:"ثابت",percentage:"نسبة",tax:"اداء",total_amount:"المبلغ الإجمالي",bill_to:"الفاتورة لـ",ship_to:"يشحن إلى",due:"المتبقي",draft:"مسودة",sent:"ارسلت",all:"الكل",select_all:"تحديد الكل",select_template:"Select Template",choose_file:"اضغط هنا لاختيار ملف",choose_template:"اختيار القالب",choose:"اختر",remove:"حذف",select_a_status:"اختر الحالة",select_a_tax:"اختر الاداء",search:"بحث",are_you_sure:"هل أنت متأكد؟",list_is_empty:"القائمة فارغة.",no_tax_found:"لا يوجد ضريبة!",four_zero_four:"404",you_got_lost:"عفواً! يبدو أنك قد تهت!",go_home:"الذهاب الى الصفحة الرئيسية",test_mail_conf:"اختبار اعدادات البريد",send_mail_successfully:"تم إرسال البريد بنجاح",setting_updated:"تم تحديث الإعدادات بنجاح",select_state:"اختر الولاية/المنطقة",select_country:"اختر الدولة",select_city:"اختر المدينة",street_1:"عنوان الشارع 1",street_2:"الشارع 2",action_failed:"فشلت العملية",retry:"أعد المحاولة",choose_note:"اختر ملاحظة",no_note_found:"لم يتم العثور على الملاحظة",insert_note:"أدخل ملاحظة",copied_pdf_url_clipboard:"تم نسخ رابط PDF إلى الحافظة!",copied_url_clipboard:"Copied url to clipboard!",docs:"Docs",do_you_wish_to_continue:"Do you wish to continue?",note:"Note",pay_invoice:"Pay Invoice",login_successfully:"Logged in successfully!",logged_out_successfully:"Logged out successfully",mark_as_default:"Mark as default"},Jq={select_year:"اختر السنة",cards:{due_amount:"المبلغ المطلوب",customers:"العملاء",invoices:"الفواتير",estimates:"التقديرات",payments:"Payments"},chart_info:{total_sales:"المبيعات",total_receipts:"إجمالي الدخل",total_expense:"النفقات",net_income:"صافي الدخل",year:"اختر السنة"},monthly_chart:{title:"المبيعات والنفقات"},recent_invoices_card:{title:"فواتير مستحقة",due_on:"مستحقة في",customer:"العميل",amount_due:"المبلغ المطلوب",actions:"العمليات",view_all:"عرض الكل"},recent_estimate_card:{title:"أحدث التقديرات",date:"التاريخ",customer:"العميل",amount_due:"المبلغ المطلوب",actions:"العمليات",view_all:"عرض الكل"}},Xq={name:"الاسم",description:"الوصف",percent:"نسبه مئويه",compound_tax:"الضريبة المركبة"},eH={search:"بحث...",customers:"العملاء",users:"المستخدمون",no_results_found:"لم يتم العثور على نتائج"},tH={label:"SWITCH COMPANY",no_results_found:"No Results Found",add_new_company:"Add new company",new_company:"New company",created_message:"Company created successfully"},aH={today:"Today",this_week:"This Week",this_month:"This Month",this_quarter:"This Quarter",this_year:"This Year",previous_week:"Previous Week",previous_month:"Previous Month",previous_quarter:"Previous Quarter",previous_year:"Previous Year",custom:"Custom"},nH={title:"العملاء",prefix:"Prefix",add_customer:"إضافة عميل",contacts_list:"قائمة العملاء",name:"الاسم",mail:"البريد",statement:"البيان",display_name:"اسم العرض",primary_contact_name:"اسم التواصل الرئيسي",contact_name:"اسم تواصل آخر",amount_due:"المبلغ المطلوب",email:"البريد الإلكتروني",address:"العنوان",phone:"الهاتف",website:"موقع الإنترنت",overview:"استعراض",invoice_prefix:"Invoice Prefix",estimate_prefix:"Estimate Prefix",payment_prefix:"Payment Prefix",enable_portal:"تفعيل البوابة",country:"الدولة",state:"الولاية/المنطقة",city:"المدينة",zip_code:"الرمز البريدي",added_on:"أضيف في",action:"إجراء",password:"كلمة المرور",confirm_password:"Confirm Password",street_number:"رقم الشارع",primary_currency:"العملة الرئيسية",description:"الوصف",add_new_customer:"إضافة عميل جديد",save_customer:"حفظ العميل",update_customer:"تحديث بيانات العميل",customer:"عميل | عملاء",new_customer:"عميل جديد",edit_customer:"تعديل عميل",basic_info:"معلوات أساسية",portal_access:"Portal Access",portal_access_text:"Would you like to allow this customer to login to the Customer Portal?",portal_access_url:"Customer Portal Login URL",portal_access_url_help:"Please copy & forward the above given URL to your customer for providing access.",billing_address:"عنوان الفوترة",shipping_address:"عنوان الشحن",copy_billing_address:"نسخ من عنوان الفوترة",no_customers:"لا يوجد عملاء حتى الآن!",no_customers_found:"لم يتم الحصول على عملاء!",no_contact:"ليست هناك جهات اتصال",no_contact_name:"اسم جهة الاتصال غير موجود",list_of_customers:"سوف يحتوي هذا القسم على قائمة العملاء.",primary_display_name:"اسم العرض الرئيسي",select_currency:"اختر العملة",select_a_customer:"اختر العميل",type_or_click:"اكتب أو اضغط للاختيار",new_transaction:"معاملة جديدة",no_matching_customers:"لا يوجد عملاء مطابقين!",phone_number:"رقم الهاتف",create_date:"تاريخ الإنشاء",confirm_delete:"لن تتمكن من استرداد هذا العميل وجميع الفواتير والتقديرات والمدفوعات ذات الصلة. | لن تتمكن من استرداد هؤلاء العملاء وجميع الفواتير والتقديرات والمدفوعات ذات الصلة.",created_message:"تم إنشاء العملاء بنجاح",updated_message:"تم تحديث العملاء بنجاح",address_updated_message:"Address Information Updated succesfully",deleted_message:"تم حذف العملاء بنجاح | تم حذف العميل بنجاح",edit_currency_not_allowed:"Cannot change currency once transactions created."},iH={title:"الأصناف",items_list:"قائمة الأصناف",name:"الاسم",unit:"الوحدة",description:"الوصف",added_on:"أضيف في",price:"السعر",date_of_creation:"تاريخ الإنشاء",not_selected:"لم يتم إختيار أي عنصر",action:"إجراء",add_item:"إضافة صنف",save_item:"حفظ الصنف",update_item:"تحديث الصنف",item:"صنف | أصناف",add_new_item:"إضافة صنف جديد",new_item:"جديد صنف",edit_item:"تحديث صنف",no_items:"لا يوجد أصناف حتى الآن!",list_of_items:"هذا القسم سوف يحتوي على قائمة الأصناف.",select_a_unit:"اختر الوحدة",taxes:"الضرائب",item_attached_message:"لا يمكن حذف الصنف قيد الاستخدام",confirm_delete:"لن تتمكن من استرجاع هذا الصنف | لن تتمكن من استرجاع هذه الأصناف",created_message:"تم إنشاء الصنف بنجاح",updated_message:"تم تحديث الصنف بنجاح",deleted_message:"تم حذف الصنف بنجاح | تم حذف الأصناف بنجاح"},oH={title:"التقديرات",accept_estimate:"Accept Estimate",reject_estimate:"Reject Estimate",estimate:"تقدير | تقديرات",estimates_list:"قائمة التقديرات",days:"{days} أيام",months:"{months} أشهر",years:"{years} سنوات",all:"الكل",paid:"مدفوع",unpaid:"غير مدفوع",customer:"العميل",ref_no:"رقم المرجع.",number:"الرقم",amount_due:"المبلغ المطلوب",partially_paid:"مدفوع جزئيا",total:"الإجمالي",discount:"الخصم",sub_total:"حاصل الجمع",estimate_number:"رقم تقدير",ref_number:"رقم المرجع",contact:"تواصل",add_item:"إضافة صنف",date:"تاريخ",due_date:"تاريخ الاستحقاق",expiry_date:"تاريخ الصلاحية",status:"الحالة",add_tax:"إضافة ضرية",amount:"المبلغ المطلوب",action:"إجراء",notes:"ملاحظات",tax:"ضريبة",estimate_template:"قالب",convert_to_invoice:"تحويل إلى فاتورة",mark_as_sent:"تحديد كمرسل",send_estimate:"إرسال التقدير",resend_estimate:"إعادة إرسال التقدير",record_payment:"تسجيل مدفوات",add_estimate:"إضافة تقدير",save_estimate:"حفظ التقدير",confirm_conversion:"هل تريد تحويل هذا التقدير إلى فاتورة؟",conversion_message:"تم إنشاء الفاتورة بنجاح",confirm_send_estimate:"سيتم إرسال هذا التقدير بالبريد الإلكتروني إلى العميل",confirm_mark_as_sent:"سيتم التحديد كمرسل على هذا التقدير",confirm_mark_as_accepted:"سيتم التحديد كمقبول على هذا التقدير",confirm_mark_as_rejected:"سيتم التحديد كمرفوض على هذا التقدير",no_matching_estimates:"لا يوجد تقديرات مطابقة!",mark_as_sent_successfully:"تم التحديد كمرسل بنجاح",send_estimate_successfully:"تم إرسال التقدير بنجاح",errors:{required:"حقل مطلوب"},accepted:"مقبول",rejected:"مرفوض",expired:"Expired",sent:"مرسل",draft:"مسودة",viewed:"Viewed",declined:"مرفوض",new_estimate:"تقدير جديد",add_new_estimate:"إضافة تقدير جديد",update_Estimate:"تحديث تقدير",edit_estimate:"تعديل التقدير",items:"الأصناف",Estimate:"تقدير | تقديرات",add_new_tax:"إضافة ضريبة جديدة",no_estimates:"لا يوجد تقديرات حالياً!",list_of_estimates:"هذا القسم سوف يحتوي على التقديرات.",mark_as_rejected:"تحديد كمرفوض",mark_as_accepted:"تحديد كمقروء",marked_as_accepted_message:"تحديد التقدير كمقبول",marked_as_rejected_message:"تحديد التقدير كمرفوض",confirm_delete:"لن تستطيع استرجاع هذا التقدير | لن تستطيع إستعادة هذه التقديرات",created_message:"تم إنشاء التقدير بنجاح",updated_message:"تم تحديث التقدير بنجاح",deleted_message:"تم حذف التقدير بنجاح | تم حذف التقديرات بنجاح",something_went_wrong:"خطأ غير معروف!",item:{title:"اسم الصنف",description:"الوصف",quantity:"الكمية",price:"السعر",discount:"الخصم",total:"الإجمالي",total_discount:"مجموع الخصم",sub_total:"حاصل الجمع",tax:"الضرية",amount:"المبلغ المطلوب",select_an_item:"اكتب أو اختر الصنف",type_item_description:"اكتب وصف الصنف (اختياري)"},mark_as_default_estimate_template_description:"If enabled, the selected template will be automatically selected for new estimates."},rH={title:"الفواتير",download:"Download",pay_invoice:"Pay Invoice",invoices_list:"قائمة الفواتير",invoice_information:"Invoice Information",days:"{days} أيام",months:"{months} أشهر",years:"{years} سنوات",all:"الكل",paid:"مدفوع",unpaid:"غير مدفوع",viewed:"شوهد",overdue:"متأخر",completed:"اكتمل",customer:"العميل",paid_status:"حالة الدفع",ref_no:"رقم المرجع.",number:"الرقم",amount_due:"المبلغ المطلوب",partially_paid:"مدفوع جزئياً",total:"الإجمالي",discount:"الخصم",sub_total:"حاصل الجمع",invoice:"فاتورة | فواتير",invoice_number:"رقم الفاتورة",ref_number:"رقم المرجع",contact:"تواصل",add_item:"إضافة صنف",date:"التاريخ",due_date:"تاريخ الاستحقاق",status:"الحالة",add_tax:"إضافة ضريبة",amount:"المبلغ المطلوب",action:"إجراء",notes:"ملاحظات",view:"عرض",send_invoice:"إرسال الفاتورة",resend_invoice:"إعادة إرسال الفاتورة",invoice_template:"قالب الفاتورة",conversion_message:"Invoice cloned successful",template:"قالب",mark_as_sent:"تحديد كمرسل",confirm_send_invoice:"سيتم إرسال هذه الفاتورة بالبريد الألكتروني إلى العميل",invoice_mark_as_sent:"سيتم تحديد هذه الفاتورة كمرسلة",confirm_mark_as_accepted:"This invoice will be marked as Accepted",confirm_mark_as_rejected:"This invoice will be marked as Rejected",confirm_send:"سيتم إرسال هذه الفاتورة بالبريد الألكتروني إلى العميل",invoice_date:"تاريخ الفاتورة",record_payment:"تسجيل مدفوعات",add_new_invoice:"إضافة فاتورة جديدة",update_expense:"تحديث المصروفات",edit_invoice:"تعديل الفاتورة",new_invoice:"فاتورة جديدة",save_invoice:"حفظ الفاتورة",update_invoice:"تحديث الفاتورة",add_new_tax:"إضافة ضريبة جديدة",no_invoices:"لا يوجد فواتير حتى الآن!",mark_as_rejected:"Mark as rejected",mark_as_accepted:"Mark as accepted",list_of_invoices:"قائمة الفواتير .",select_invoice:"اختر الفاتورة",no_matching_invoices:"لا يوجد فواتير مطابقة!",mark_as_sent_successfully:"تم تحديد الفاتورة كمرسلة بنجاح",invoice_sent_successfully:"Invoice sent successfully",cloned_successfully:"تم استنساخ الفاتورة بنجاح",clone_invoice:"استنساخ الفاتورة",confirm_clone:"سيتم استنساخ هذه الفاتورة في فاتورة جديدة",item:{title:"اسم الصنف",description:"الوصف",quantity:"الكمية",price:"السعر",discount:"الخصم",total:"الإجمالي",total_discount:"إجمالي الخصم",sub_total:"حاصل الجمع",tax:"الضريبة",amount:"المبلغ المطلوب",select_an_item:"اكتب أو انقر لاختيار صنف",type_item_description:"وصف الصنف (اختياري)"},payment_attached_message:"هناك مدفوعات مرتبطة بالفعل بإحدى الفواتير المحددة. تأكد من حذف المدفوعات المرتبطة أولاً قبل حذف الفاتورة.",confirm_delete:"لن تتمكن من استرجاع الفاتورة بعد هذه الإجراء | لن تتمكن من استرجاع الفواتير بعد هذا الإجراء",created_message:"تم إنشاء الفاتورة بنجاح",updated_message:"تم تحديث الفاتورة بنجاح",deleted_message:"تم حذف الفاتورة بنجاح | تم حذف الفواتير بنجاح",marked_as_sent_message:"تم إرسال الفاتورة بنجاح",something_went_wrong:"خطأ غير معروف!",invalid_due_amount_message:"المبلغ النهائي للفاتورة لا يمكن أن يكون أقل من المبلغ المطلوب لها. رجاءاً حدث الفاتورة أو قم بحذف المدفوعات المرتبطة بها للاستمرار.",mark_as_default_invoice_template_description:"If enabled, the selected template will be automatically selected for new invoices."},sH={title:"Recurring Invoices",invoices_list:"Recurring Invoices List",days:"{days} Days",months:"{months} Month",years:"{years} Year",all:"All",paid:"Paid",unpaid:"Unpaid",viewed:"Viewed",overdue:"Overdue",active:"Active",completed:"Completed",customer:"CUSTOMER",paid_status:"PAID STATUS",ref_no:"REF NO.",number:"NUMBER",amount_due:"AMOUNT DUE",partially_paid:"Partially Paid",total:"Total",discount:"Discount",sub_total:"Sub Total",invoice:"Recurring Invoice | Recurring Invoices",invoice_number:"Recurring Invoice Number",next_invoice_date:"Next Invoice Date",ref_number:"Ref Number",contact:"Contact",add_item:"Add an Item",date:"Date",limit_by:"Limit by",limit_date:"Limit Date",limit_count:"Limit Count",count:"Count",status:"Status",select_a_status:"Select a status",working:"Working",on_hold:"On Hold",complete:"Completed",add_tax:"Add Tax",amount:"Amount",action:"Action",notes:"Notes",view:"View",basic_info:"Basic Info",send_invoice:"Send Recurring Invoice",auto_send:"Auto Send",resend_invoice:"Resend Recurring Invoice",invoice_template:"Recurring Invoice Template",conversion_message:"Recurring Invoice cloned successful",template:"Template",mark_as_sent:"Mark as sent",confirm_send_invoice:"This recurring invoice will be sent via email to the customer",invoice_mark_as_sent:"This recurring invoice will be marked as sent",confirm_send:"This recurring invoice will be sent via email to the customer",starts_at:"Start Date",due_date:"Invoice Due Date",record_payment:"Record Payment",add_new_invoice:"Add New Recurring Invoice",update_expense:"Update Expense",edit_invoice:"Edit Recurring Invoice",new_invoice:"New Recurring Invoice",send_automatically:"Send Automatically",send_automatically_desc:"Enable this, if you would like to send the invoice automatically to the customer when its created.",save_invoice:"Save Recurring Invoice",update_invoice:"Update Recurring Invoice",add_new_tax:"Add New Tax",no_invoices:"No Recurring Invoices yet!",mark_as_rejected:"Mark as rejected",mark_as_accepted:"Mark as accepted",list_of_invoices:"This section will contain the list of recurring invoices.",select_invoice:"Select Invoice",no_matching_invoices:"There are no matching recurring invoices!",mark_as_sent_successfully:"Recurring Invoice marked as sent successfully",invoice_sent_successfully:"Recurring Invoice sent successfully",cloned_successfully:"Recurring Invoice cloned successfully",clone_invoice:"Clone Recurring Invoice",confirm_clone:"This recurring invoice will be cloned into a new Recurring Invoice",add_customer_email:"Please add an email address for this customer to send invoices automatically.",item:{title:"Item Title",description:"Description",quantity:"Quantity",price:"Price",discount:"Discount",total:"Total",total_discount:"Total Discount",sub_total:"Sub Total",tax:"Tax",amount:"Amount",select_an_item:"Type or click to select an item",type_item_description:"Type Item Description (optional)"},frequency:{title:"Frequency",select_frequency:"Select Frequency",minute:"Minute",hour:"Hour",day_month:"Day of month",month:"Month",day_week:"Day of week"},confirm_delete:"You will not be able to recover this Invoice | You will not be able to recover these Invoices",created_message:"Recurring Invoice created successfully",updated_message:"Recurring Invoice updated successfully",deleted_message:"Recurring Invoice deleted successfully | Recurring Invoices deleted successfully",marked_as_sent_message:"Recurring Invoice marked as sent successfully",user_email_does_not_exist:"User email does not exist",something_went_wrong:"something went wrong",invalid_due_amount_message:"Total Recurring Invoice amount cannot be less than total paid amount for this Recurring Invoice. Please update the invoice or delete the associated payments to continue."},lH={title:"المدفوعات",payments_list:"قائمة المدفوعات",record_payment:"تسجيل دفعة",customer:"العميل",date:"التاريخ",amount:"المبلغ المطلوب",action:"إجراء",payment_number:"رقم الدفعة",payment_mode:"نوع الدفعة",invoice:"الفاتورة",note:"ملاحظة",add_payment:"إضافة دفعة",new_payment:"دفعة جديدة",edit_payment:"تعديل الدفعة",view_payment:"عرض الدفعة",add_new_payment:"إضافة دفعة جديدة",send_payment_receipt:"إرسال إيصال الدفع",send_payment:"إرسال الدفعة",save_payment:"حفظ الدفعة",update_payment:"تحديث الدفعة",payment:"دفعة | مدفوعات",no_payments:"لا يوجد مدفوعات حتى الآن!",not_selected:"لم يتم تحديد",no_invoice:"لا توجد فاتورة",no_matching_payments:"لا توجد مدفوعات مطابقة!",list_of_payments:"سوف تحتوي هذه القائمة على مدفوعات الفواتير.",select_payment_mode:"اختر طريقة الدفع",confirm_mark_as_sent:"سيتم التحديد كمرسل على هذا التقدير",confirm_send_payment:"سيتم إرسال هذه الدفعة عبر البريد الإلكتروني إلى العميل",send_payment_successfully:"تم إرسال الدفعة بنجاح",something_went_wrong:"خطأ غير معروف!",confirm_delete:"لن تكون قادر على استرجاع هذه الدفعة | لن تكون قادراً على استرجاع هذه المدفوعات",created_message:"تم إنشاء الدفعة بنجاح",updated_message:"تم تحديث الدفعة بنجاح",deleted_message:"تم حذف الدفعة بنجاح | تم حذف المدفوعات بنجاح",invalid_amount_message:"قيمة الدفعة غير صحيحة!"},cH={title:"النفقات",expenses_list:"قائمة النفقات",select_a_customer:"حدد عميلاً",expense_title:"العنوان",customer:"العميل",currency:"Currency",contact:"تواصل",category:"الفئة",from_date:"من تاريخ",to_date:"حتى تاريخ",expense_date:"التاريخ",description:"الوصف",receipt:"سند القبض",amount:"المبلغ المطلوب",action:"إجراء",not_selected:"لم يتم تحديد",note:"ملاحظة",category_id:"رمز الفئة",date:"تاريخ النفقات",add_expense:"أضف نفقات",add_new_expense:"أضف نفقات جديدة",save_expense:"حفظ النفقات",update_expense:"تحديث النفقات",download_receipt:"تنزيل السند",edit_expense:"تعديل النفقات",new_expense:"نفقات جديدة",expense:"إنفاق | نفقات",no_expenses:"لا يوجد نفقات حتى الآن!",list_of_expenses:"هذه القائمة ستحتوي النفقات الخاصة بك",confirm_delete:"لن تتمكن من استرجاع هذا الإنفاق | لن تتمكن من استرجاع هذه النفقات",created_message:"تم إنشاء النفقات بنجاح",updated_message:"تم تحديث النفقات بنجاح",deleted_message:"تم حذف النفقات بنجاح",categories:{categories_list:"قائمة الفئات",title:"العنوان",name:"الاسم",description:"الوصف",amount:"المبلغ المطلوب",actions:"العمليات",add_category:"إضافة فئمة",new_category:"فئة جديدة",category:"فئة | فئات",select_a_category:"اختر الفئة"}},dH={email:"البريد الإلكتروني",password:"كلمة المرور",forgot_password:"نسيت كلمة المرور؟",or_signIn_with:"أو سجل الدخول بواسطة",login:"دخول",register:"تسجيل",reset_password:"إعادة تعيين كلمة المرور",password_reset_successfully:"تم إعادة تعيين كلمة المرور بنجاح",enter_email:"أدخل البريد الالكتروني",enter_password:"أكتب كلمة المرور",retype_password:"أعد كتابة كلمة المرور"},uH={buy_now:"Buy Now",install:"Install",price:"Price",download_zip_file:"Download ZIP file",unzipping_package:"Unzipping Package",copying_files:"Copying Files",deleting_files:"Deleting Unused files",completing_installation:"Completing Installation",update_failed:"Update Failed",install_success:"Module has been installed successfully!",customer_reviews:"Reviews",license:"License",faq:"FAQ",monthly:"Monthly",yearly:"Yearly",updated:"Updated",version:"Version",disable:"Disable",module_disabled:"Module Disabled",enable:"Enable",module_enabled:"Module Enabled",update_to:"Update To",module_updated:"Module Updated Successfully!",title:"Modules",module:"Module | Modules",api_token:"API token",invalid_api_token:"Invalid API Token.",other_modules:"Other Modules",view_all:"View All",no_reviews_found:"There are no reviews for this module yet!",module_not_purchased:"Module Not Purchased",module_not_found:"Module Not Found",version_not_supported:"This module version doesn't support the current version of InvoiceShelf",last_updated:"Last Updated On",connect_installation:"Connect your installation",api_token_description:"Login to {url} and connect this installation by entering the API Token. Your purchased modules will show up here after the connection is established.",view_module:"View Module",update_available:"Update Available",purchased:"Purchased",installed:"Installed",no_modules_installed:"No Modules Installed Yet!",disable_warning:"All the settings for this particular will be reverted.",what_you_get:"What you get"},_H={title:"المستخدمون",users_list:"قائمة المستخدمين",name:"اسم",description:"وصف",added_on:"وأضاف في",date_of_creation:"تاريخ الخلق",action:"عمل",add_user:"إضافة مستخدم",save_user:"حفظ المستخدم",update_user:"تحديث المستخدم",user:"تحديث المستخدم",add_new_user:"إضافة مستخدم جديد",new_user:"مستخدم جديد",edit_user:"تحرير العضو",no_users:"لا مستخدمين حتى الآن!",list_of_users:"سيحتوي هذا القسم على قائمة المستخدمين.",email:"البريد الإلكتروني",phone:"هاتف",password:"كلمه السر",user_attached_message:"لا يمكن حذف عنصر قيد الاستخدام بالفعل",confirm_delete:"لن تتمكن من استرداد هذا العنصر | لن تتمكن من استرداد هؤلاء المستخدمين",created_message:"تم إنشاء المستخدم بنجاح",updated_message:"تم تحديث المستخدم بنجاح",deleted_message:"تم حذف المستخدم بنجاح | تم حذف المستخدم بنجاح",select_company_role:"Select Role for {company}",companies:"Companies"},mH={title:"تقرير",from_date:"من تاريخ",to_date:"حتى تاريخ",status:"الحالة",paid:"مدفوع",unpaid:"غير مدفوع",download_pdf:"تنزيل PDF",view_pdf:"عرض PDF",update_report:"تحديث التقرير",report:"تقرير | تقارير",profit_loss:{profit_loss:"الخسائر والأرباح",to_date:"حتى تاريخ",from_date:"من تاريخ",date_range:"اختر مدى التاريخ"},sales:{sales:"المبيعات",date_range:"اختر مدى التاريخ",to_date:"حتى تاريخ",from_date:"من تاريخ",report_type:"نوع التقرير"},taxes:{taxes:"الضرائب",to_date:"حتى تاريخ",from_date:"من تاريخ",date_range:"اختر مدى التاريخ"},errors:{required:"حقل مطلوب"},invoices:{invoice:"الفاتورة",invoice_date:"تاريخ الفاتورة",due_date:"تاريخ الاستحقاق",amount:"المبلغ المطلوب",contact_name:"اسم التواصل",status:"الحالة"},estimates:{estimate:"تقدير",estimate_date:"تاريخ التقدير",due_date:"مستحق بتاريخ",estimate_number:"رقم مستحق",ref_number:"رقم المرجع",amount:"المبلغ المطلوب",contact_name:"اسم التواصل",status:"الحالة"},expenses:{expenses:"النفقات",category:"الفئة",date:"التاريخ",amount:"المبلغ المطلوب",to_date:"حتى تاريخ",from_date:"من تاريخ",date_range:"اختر مدى التاريخ"}},pH={menu_title:{account_settings:"إعدادات الحساب",company_information:"معلومات المنشأة",customization:"تخصيص",preferences:"تفضيلات",notifications:"تنبيهات",tax_types:"نوع الضريبة",expense_category:"فئات النفقات",update_app:"تحديث النظام",backup:"دعم",file_disk:"قرص الملف",custom_fields:"الحقول المخصصة",payment_modes:"طرق الدفع",notes:"ملاحظات",exchange_rate:"Exchange Rate",address_information:"Address Information"},address_information:{section_description:" You can update Your Address information using form below."},title:"إعدادات",setting:"إعدادات | إعدادات",general:"عام",language:"اللغة",primary_currency:"العملة الرئيسية",timezone:"المنطقة الزمنية",date_format:"صيغة التاريخ",currencies:{title:"العملات",currency:"العملة | العملات",currencies_list:"قائمة العملات",select_currency:"اختر العملة",name:"الاسم",code:"المرجع",symbol:"الرمز",precision:"الدقة",thousand_separator:"فاصل الآلاف",decimal_separator:"الفاصلة العشرية",position:"الموقع",position_of_symbol:"موقع رمز العملة",right:"يمين",left:"يسار",action:"إجراء",add_currency:"أضف عملة"},mail:{host:"خادم البريد",port:"منفذ البريد",driver:"مشغل البريد",secret:"سري",mailgun_secret:"الرمز السري لـ Mailgun",mailgun_domain:"المجال",mailgun_endpoint:"النهاية الطرفية لـ Mailgun",ses_secret:"SES الرمز السري",ses_key:"SES مفتاح",password:"كلمة مرور البريد الالكتروني",username:"اسم المستخدم للبريد الإلكتروني",mail_config:"إعدادات البريد الالكتروني",from_name:"اسم المرسل",from_mail:"عنوان البريد الالكتروني للمرسل",encryption:"صيغة ا لتشفير",mail_config_desc:"أدناه هو نموذج لتكوين برنامج تشغيل البريد الإلكتروني لإرسال رسائل البريد الإلكتروني من التطبيق. يمكنك أيضًا تهيئة موفري الجهات الخارجية مثل Sendgrid و SES إلخ."},pdf:{title:"PDF إعدادات",footer_text:"نص التذييل",pdf_layout:"اتجاه صفحة PDF"},company_info:{company_info:"معلومات الشركة",company_name:"اسم الشركة",company_logo:"شعار الشركة",section_description:"معلومات عن شركتك سيتم عرضها على الفواتير والتقديرات والمستندات الأخرى.",phone:"الهاتف",country:"الدولة",state:"الولاية/المنطقة",city:"المدينة",address:"العنوان",zip:"الرمز البريدي",save:"حفظ",delete:"Delete",updated_message:"تم تحديث معلومات الشركة بنجاح",delete_company:"Delete Company",delete_company_description:"Once you delete your company, you will lose all the data and files associated with it permanently.",are_you_absolutely_sure:"Are you absolutely sure?",delete_company_modal_desc:"This action cannot be undone. This will permanently delete {company} and all of its associated data.",delete_company_modal_label:"Please type {company} to confirm"},custom_fields:{title:"الحقول المخصصة",section_description:"قم بتخصيص فواتيرك وتقديراتك وإيصالات الدفع باستخدام الحقول الخاصة بك. تأكد من استخدام الحقول المضافة أدناه في تنسيقات العناوين في صفحة إعدادات التخصيص.",add_custom_field:"إضافة حقل مخصص",edit_custom_field:"تحرير الحقل المخصص",field_name:"اسم الحقل",label:"ضع الكلمة المناسبة",type:"نوع",name:"اسم",slug:"Slug",required:"مطلوب",placeholder:"عنصر نائب",help_text:"نص المساعدة",default_value:"القيمة الافتراضية",prefix:"اختصار",starting_number:"رقم البداية",model:"نموذج",help_text_description:"أدخل بعض النص لمساعدة المستخدمين على فهم الغرض من هذا الحقل المخصص.",suffix:"لاحقة",yes:"نعم",no:"لا",order:"طلب",custom_field_confirm_delete:"لن تتمكن من استعادة هذا الحقل المخصص",already_in_use:"الحقل المخصص قيد الاستخدام بالفعل",deleted_message:"تم حذف الحقل المخصص بنجاح",options:"خيارات",add_option:"أضف خيارات",add_another_option:"أضف خيارًا آخر",sort_in_alphabetical_order:"فرز حسب الترتيب الأبجدي",add_options_in_bulk:"أضف الخيارات بشكل مجمّع",use_predefined_options:"استخدم الخيارات المحددة مسبقًا",select_custom_date:"حدد التاريخ المخصص",select_relative_date:"حدد التاريخ النسبي",ticked_by_default:"يتم تحديده بشكل افتراضي",updated_message:"تم تحديث الحقل المخصص بنجاح",added_message:"تمت إضافة الحقل المخصص بنجاح",press_enter_to_add:"Press enter to add new option",model_in_use:"Cannot update model for fields which are already in use.",type_in_use:"Cannot update type for fields which are already in use."},customization:{customization:"التخصيص",updated_message:"تم تحديث معلومات الشركة بنجاح",save:"حفظ",insert_fields:"Insert Fields",learn_custom_format:"Learn how to use custom format",add_new_component:"Add New Component",component:"Component",Parameter:"Parameter",series:"Series",series_description:"To set a static prefix/postfix like 'INV' across your company. It supports character length of up to 6 chars.",series_param_label:"Series Value",delimiter:"Delimiter",delimiter_description:"Single character for specifying the boundary between 2 separate components. By default its set to -",delimiter_param_label:"Delimiter Value",date_format:"Date Format",date_format_description:"A local date and time field which accepts a format parameter. The default format: 'Y' renders the current year.",date_format_param_label:"Format",sequence:"Sequence",sequence_description:"Consecutive sequence of numbers across your company. You can specify the length on the given parameter.",sequence_param_label:"Sequence Length",customer_series:"Customer Series",customer_series_description:"To set a different prefix/postfix for each customer.",customer_sequence:"Customer Sequence",customer_sequence_description:"Consecutive sequence of numbers for each of your customer.",customer_sequence_param_label:"Sequence Length",random_sequence:"Random Sequence",random_sequence_description:"Random alphanumeric string. You can specify the length on the given parameter.",random_sequence_param_label:"Sequence Length",invoices:{title:"الفواتير",invoice_number_format:"Invoice Number Format",invoice_number_format_description:"Customize how your invoice number gets generated automatically when you create a new invoice.",preview_invoice_number:"Preview Invoice Number",due_date:"Due Date",due_date_description:"Specify how due date is automatically set when you create an invoice.",due_date_days:"Invoice Due after days",set_due_date_automatically:"Set Due Date Automatically",set_due_date_automatically_description:"Enable this if you wish to set due date automatically when you create a new invoice.",default_formats:"Default Formats",default_formats_description:"Below given formats are used to fill up the fields automatically on invoice creation.",default_invoice_email_body:"نص الفاتورة الافتراضي للبريد الإلكتروني",company_address_format:"تنسيق عنوان الشركة",shipping_address_format:"تنسيق عنوان الشحن",billing_address_format:"تنسيق عنوان الفواتير",invoice_email_attachment:"إرسال الفواتير كمرفقات",invoice_email_attachment_setting_description:'تفعيل هذا إذا كنت ترغب في إرسال الفواتير كمرفق بريد إلكتروني. يرجى ملاحظة أن زر "عرض الفواتير" في رسائل البريد الإلكتروني لن يتم عرضه بعد الآن عند التفعيل.',invoice_settings_updated:"Invoice Settings updated successfully",retrospective_edits:"Retrospective Edits",allow:"Allow",disable_on_invoice_partial_paid:"Disable after partial payment is recorded",disable_on_invoice_paid:"Disable after full payment is recorded",disable_on_invoice_sent:"Disable after invoice is sent",retrospective_edits_description:" Based on your country's laws or your preference, you can restrict users from editing finalised invoices."},estimates:{title:"التقديرات",estimate_number_format:"Estimate Number Format",estimate_number_format_description:"Customize how your estimate number gets generated automatically when you create a new estimate.",preview_estimate_number:"Preview Estimate Number",expiry_date:"Expiry Date",expiry_date_description:"Specify how expiry date is automatically set when you create an estimate.",expiry_date_days:"Estimate Expires after days",set_expiry_date_automatically:"Set Expiry Date Automatically",set_expiry_date_automatically_description:"Enable this if you wish to set expiry date automatically when you create a new estimate.",default_formats:"Default Formats",default_formats_description:"Below given formats are used to fill up the fields automatically on estimate creation.",default_estimate_email_body:"تقدير نص البريد الإلكتروني الافتراضي",company_address_format:"تنسيق عنوان الشركة",shipping_address_format:"تنسيق عنوان الشحن",billing_address_format:"تنسيق عنوان الفواتير",estimate_email_attachment:"إرسال التقديرات كمرفقات",estimate_email_attachment_setting_description:'تفعيل هذا إذا كنت ترغب في إرسال الفواتير كمرفق بريد إلكتروني. يرجى ملاحظة أن زر "عرض التقديرات" في رسائل البريد الإلكتروني لن يتم عرضه بعد الآن عند التفعيل.',estimate_settings_updated:"Estimate Settings updated successfully",convert_estimate_options:"Estimate Convert Action",convert_estimate_description:"Specify what happens to the estimate after it gets converted to an invoice.",no_action:"No action",delete_estimate:"Delete estimate",mark_estimate_as_accepted:"Mark estimate as accepted"},payments:{title:"المدفوعات",payment_number_format:"Payment Number Format",payment_number_format_description:"Customize how your payment number gets generated automatically when you create a new payment.",preview_payment_number:"Preview Payment Number",default_formats:"Default Formats",default_formats_description:"Below given formats are used to fill up the fields automatically on payment creation.",default_payment_email_body:"نص البريد الإلكتروني للدفع الافتراضي",company_address_format:"تنسيق عنوان الشركة",from_customer_address_format:"من تنسيق عنوان العميل",payment_email_attachment:"إرسال المدفوعات كمرفقات",payment_email_attachment_setting_description:'تفعيل هذا إذا كنت ترغب في إرسال الفواتير كمرفق بريد إلكتروني. يرجى ملاحظة أن زر "عرض المدفوعات" في رسائل البريد الإلكتروني لن يتم عرضه بعد الآن عند التفعيل.',payment_settings_updated:"Payment Settings updated successfully"},items:{title:"العناصر",units:"الوحدات",add_item_unit:"إضافة وحدة عنصر",edit_item_unit:"تحرير وحدة العناصر",unit_name:"إسم الوحدة",item_unit_added:"تمت إضافة وحدة العنصر",item_unit_updated:"تم تحديث وحدة العنصر",item_unit_confirm_delete:"لن تتمكن من استرداد وحدة العنصر هذه",already_in_use:"وحدة العنصر قيد الاستخدام بالفعل",deleted_message:"تم حذف وحدة العنصر بنجاح"},notes:{title:"ملاحظات",description:"توفير الوقت عن طريق إنشاء الملاحظات وإعادة استخدامها على الفواتير والتقديرات والمدفوعات.",notes:"ملاحظات",type:"نوع",add_note:"اضف ملاحظة",add_new_note:"أضف ملاحظة جديدة",name:"اسم",edit_note:"تحرير مذكرة",note_added:"تمت إضافة الملاحظة",note_updated:"تم تحديث الملاحظة",note_confirm_delete:"لن تتمكن من استعادة هذه الملاحظة",already_in_use:"الملاحظة قيد الاستخدام بالفعل",deleted_message:"تم حذف الملاحظة بنجاح"}},account_settings:{profile_picture:"صورة الملف الشخصي",name:"الاسم",email:"البريد الإلكتروني",password:"كلمة المرور",confirm_password:"أعد كتابة كلمة المرور",account_settings:"إعدادات الجساب",save:"حفظ",section_description:"يمكنك تحديث اسمك والبريد الإلكتروني وكلمة المرور باستخدام النموذج أدناه.",updated_message:"تم تحديث إعدادات الحساب بنجاح"},user_profile:{name:"الاسم",email:"البريد الإلكتروني",password:"كلمة المرور",confirm_password:"أعد كتابة كلمة المرور"},notification:{title:"الإشعارات",email:"إرسال الإشعارات إلى",description:"ما هي إشعارات البريد الإلكتروني التي ترغب في تلقيها عندما يتغير شيء ما؟",invoice_viewed:"تم عرض الفاتورة",invoice_viewed_desc:"عندما يستعرض عميلك الفاتورة المرسلة عبر الشاشة الرئيسية.",estimate_viewed:"تم عرض التقدير",estimate_viewed_desc:"عندما يستعرض عميلك التقدير المرسلة عبر الشاشة الرئيسية.",save:"حفظ",email_save_message:"تم حفظ البريد الإلكتروني بنجاح",please_enter_email:"فضلاً أدخل البريد الإلكتروني"},roles:{title:"Roles",description:"Manage the roles & permissions of this company",save:"Save",add_new_role:"Add New Role",role_name:"Role Name",added_on:"Added on",add_role:"Add Role",edit_role:"Edit Role",name:"Name",permission:"Permission | Permissions",select_all:"Select All",none:"None",confirm_delete:"You will not be able to recover this Role",created_message:"Role created successfully",updated_message:"Role updated successfully",deleted_message:"Role deleted successfully",already_in_use:"Role is already in use"},exchange_rate:{exchange_rate:"Exchange Rate",title:"Fix Currency Exchange issues",description:"Please enter exchange rate of all the currencies mentioned below to help InvoiceShelf properly calculate the amounts in {currency}.",drivers:"Drivers",new_driver:"Add New Provider",edit_driver:"Edit Provider",select_driver:"Select Driver",update:"select exchange rate ",providers_description:"Configure your exchange rate providers here to automatically fetch the latest exchange rate on transactions.",key:"API Key",name:"Name",driver:"Driver",is_default:"IS DEFAULT",currency:"Currencies",exchange_rate_confirm_delete:"You will not be able to recover this driver",created_message:"Provider Created successfully",updated_message:"Provider Updated Successfully",deleted_message:"Provider Deleted Successfully",error:" You cannot Delete Active Driver",default_currency_error:"This currency is already used in one of the Active Provider",exchange_help_text:"Enter exchange rate to convert from {currency} to {baseCurrency}",currency_freak:"Currency Freak",currency_layer:"Currency Layer",open_exchange_rate:"Open Exchange Rate",currency_converter:"Currency Converter",server:"Server",url:"URL",active:"Active",currency_help_text:"This provider will only be used on above selected currencies",currency_in_used:"The following currencies are already active on another provider. Please remove these currencies from selection to activate this provider again."},tax_types:{title:"أنواع الضرائب",add_tax:"أضف ضريبة",edit_tax:"تحرير الضريبة",description:"يمكنك إضافة أو إزالة الضرائب كما يحلو لك. النظام يدعم الضرائب على العناصر الفردية وكذلك على الفاتورة.",add_new_tax:"إضافة ضريبة جديدة",tax_settings:"إعدادات الضريبة",tax_per_item:"ضريبة على الصنف",tax_name:"اسم الضريبة",compound_tax:"ضريبة مجمعة",percent:"نسبة مؤوية",action:"إجراء",tax_setting_description:"قم بتمكين هذا إذا كنت تريد إضافة ضرائب لعناصر الفاتورة الفردية. بشكل افتراضي ، تضاف الضرائب مباشرة إلى الفاتورة.",created_message:"تم إنشاء نوع الضريبة بنجاح",updated_message:"تم تحديث نوع الضريبة بنجاح",deleted_message:"تم حذف نوع الضريبة بنجاح",confirm_delete:"لن تتمكن من استرجاع نوع الضرية هذا",already_in_use:"ضريبة قيد الاستخدام"},payment_modes:{title:"Payment Modes",description:"Modes of transaction for payments",add_payment_mode:"Add Payment Mode",edit_payment_mode:"Edit Payment Mode",mode_name:"Mode Name",payment_mode_added:"Payment Mode Added",payment_mode_updated:"Payment Mode Updated",payment_mode_confirm_delete:"You will not be able to recover this Payment Mode",payments_attached:"This payment method is already attached to payments. Please delete the attached payments to proceed with deletion.",expenses_attached:"This payment method is already attached to expenses. Please delete the attached expenses to proceed with deletion.",deleted_message:"Payment Mode deleted successfully"},expense_category:{title:"فئات النفقات",action:"إجراء",description:"الفئات مطلوبة لإضافة إدخالات النفقات. يمكنك إضافة أو إزالة هذه الفئات وفقًا لتفضيلاتك.",add_new_category:"إضافة فئة جديدة",add_category:"إضافة فئة",edit_category:"تحرير الفئة",category_name:"اسم الفئة",category_description:"الوصف",created_message:"تم إنشاء نوع النفقات بنجاح",deleted_message:"تم حذف نوع النفقات بنجاح",updated_message:"تم تحديث نوع النفقات بنجاح",confirm_delete:"لن تتمكن من استرجاع نوع النفقات هذا",already_in_use:"نوع قيد الاستخدام"},preferences:{currency:"العملة",default_language:"اللغة الافتراضية",time_zone:"المنطة الزمنية",fiscal_year:"السنة المالية",date_format:"صيغة التاريخ",discount_setting:"إعدادات الخصم",discount_per_item:"خصم على الصنف ",discount_setting_description:"قم بتمكين هذا إذا كنت تريد إضافة خصم إلى عناصر الفاتورة الفردية. بشكل افتراضي ، يتم إضافة الخصم مباشرة إلى الفاتورة.",expire_public_links:"Automatically Expire Public Links",expire_setting_description:"Specify whether you would like to expire all the links sent by application to view invoices, estimates & payments, etc after a specified duration.",save:"حفظ",preference:"تفضيل | تفضيلات",general_settings:"التفضيلات الافتراضية للنظام.",updated_message:"تم تحديث التفضيلات بنجاح",select_language:"اختر اللغة",select_time_zone:"اختر المنطة الزمنية",select_date_format:"اختر صيغة التاريخ",select_financial_year:"اختر السنة المالية",recurring_invoice_status:"Recurring Invoice Status",create_status:"Create Status",active:"Active",on_hold:"On Hold",update_status:"Update Status",completed:"Completed",company_currency_unchangeable:"Company currency cannot be changed"},update_app:{title:"تحديث النظام",description:"يمكنك تحديث النظام بسهولة عن طريق البحث عن تحديث جديد بالنقر فوق الزر أدناه",check_update:"تحقق من التحديثات",avail_update:"تحديث جديد متوفر",next_version:"النسخة الجديدة",requirements:"المتطلبات",update:"حدث الآن",update_progress:"قيد التحديث...",progress_text:"سوف يستغرق التحديث بضع دقائق. يرجى عدم تحديث الشاشة أو إغلاق النافذة قبل انتهاء التحديث",update_success:"تم تحديث النظام! يرجى الانتظار حتى يتم إعادة تحميل نافذة المتصفح تلقائيًا.",latest_message:"لا يوجد تحديثات متوفرة! لديك حالياً أحدث نسخة.",current_version:"النسخة الحالية",download_zip_file:"تنزيل ملف ZIP",unzipping_package:"حزمة فك الضغط",copying_files:"نسخ الملفات",deleting_files:"حذف الملفات الغير مستخدمة",running_migrations:"إدارة عمليات الترحيل",finishing_update:"تحديث التشطيب",update_failed:"فشل التحديث",update_failed_text:"آسف! فشل التحديث الخاص بك في: {step} خطوة",update_warning:"All of the application files and default template files will be overwritten when you update the application using this utility. Please take a backup of your templates & database before updating."},backup:{title:"النسخ الاحتياطي | النسخ الاحتياطية",description:"النسخة الاحتياطية هي ملف مضغوط يحتوي على جميع الملفات في الدلائل التي تحددها مع تفريغ قاعدة البيانات الخاصة بك",new_backup:"إضافة نسخة احتياطية جديدة",create_backup:"انشئ نسخة احتياطية",select_backup_type:"حدد نوع النسخ الاحتياطي",backup_confirm_delete:"لن تتمكن من استعادة هذه النسخة الاحتياطية",path:"مسار",new_disk:"قرص جديد",created_at:"أنشئت في",size:"حجم الملف",dropbox:"بصندوق الإسقاط",local:"محلي",healthy:"صحي",amount_of_backups:"كمية النسخ الاحتياطية",newest_backups:"أحدث النسخ الاحتياطية",used_storage:"التخزين المستخدم",select_disk:"حدد القرص",action:"عمل",deleted_message:"تم حذف النسخة الاحتياطية بنجاح",created_message:"تم إنشاء النسخة الاحتياطية بنجاح",invalid_disk_credentials:"بيانات اعتماد غير صالحة للقرص المحدد"},disk:{title:"قرص الملفات | أقراص الملفات",description:"بشكل افتراضي ، ستستخدم InvoiceShelf القرص المحلي لحفظ النسخ الاحتياطية والأفاتار وملفات الصور الأخرى. يمكنك تكوين أكثر من برامج تشغيل قرص مثل DigitalOcean و S3 و Dropbox وفقًا لتفضيلاتك.",created_at:"أنشئت في",dropbox:"بصندوق الإسقاط",name:"اسم",driver:"سائق",disk_type:"نوع",disk_name:"اسم القرص",new_disk:"إضافة قرص جديد",filesystem_driver:"برنامج تشغيل نظام الملفات",local_driver:"سائق محلي",local_root:"الجذر المحلي",public_driver:"سائق عام",public_root:"الجذر العام",public_url:"URL العام",public_visibility:"الرؤية العامة",media_driver:"سائق وسائط",media_root:"جذر الوسائط",aws_driver:"برنامج تشغيل AWS",aws_key:"مفتاح AWS",aws_secret:"AWS Secret",aws_region:"منطقة AWS",aws_bucket:"حاوية AWS",aws_root:"AWS الجذر",do_spaces_type:"هل نوع المساحات",do_spaces_key:"مفتاح Do Spaces",do_spaces_secret:"هل المساحات سرية",do_spaces_region:"هل منطقة المساحات",do_spaces_bucket:"هل دلو المساحات",do_spaces_endpoint:"قم بعمل نقطة نهاية للمسافات",do_spaces_root:"عمل الجذر للمسافات",dropbox_type:"نوع Dropbox",dropbox_token:"رمز Dropbox",dropbox_key:"مفتاح Dropbox",dropbox_secret:"Dropbox Secret",dropbox_app:"تطبيق Dropbox",dropbox_root:"جذر Dropbox",default_driver:"برنامج التشغيل الافتراضي",is_default:"أمر افتراضي",set_default_disk:"تعيين القرص الافتراضي",set_default_disk_confirm:"سيتم تعيين هذا القرص كالافتراضي وسيتم حفظ جميع ملفات PDF الجديدة على هذا القرص",success_set_default_disk:"تم تعيين القرص كالافتراضي بنجاح",save_pdf_to_disk:"حفظ ملفات PDF على القرص",disk_setting_description:"قم بتمكين هذا ، إذا كنت ترغب في حفظ نسخة من كل فاتورة ، تقدير وإيصال دفع PDF على القرص الافتراضي الخاص بك تلقائيًا. سيؤدي تشغيل هذا الخيار إلى تقليل وقت التحميل عند عرض ملفات PDF.",select_disk:"حدد القرص",disk_settings:"إعدادات القرص",confirm_delete:"لن تتأثر الملفات والمجلدات الموجودة في القرص المحدد ولكن سيتم حذف اعدادات القرص الخاص بك من InvoiceShelf",action:"عمل",edit_file_disk:"تعديل قرص الملف",success_create:"تمت إضافة القرص بنجاح",success_update:"تم تحديث القرص بنجاح",error:"فشل إضافة القرص",deleted_message:"تم حذف ملف القرص بنجاح",disk_variables_save_successfully:"تم تكوين القرص بنجاح",disk_variables_save_error:"فشل تكوين القرص.",invalid_disk_credentials:"بيانات اعتماد غير صالحة للقرص المحدد"},taxations:{add_billing_address:"Enter Billing Address",add_shipping_address:"Enter Shipping Address",add_company_address:"Enter Company Address",modal_description:"The information below is required in order to fetch sales tax.",add_address:"Add Address for fetching sales tax.",address_placeholder:"Example: 123, My Street",city_placeholder:"Example: Los Angeles",state_placeholder:"Example: CA",zip_placeholder:"Example: 90024",invalid_address:"Please provide valid address details."}},fH={account_info:"معلومات الحساب",account_info_desc:"سيتم استخدام التفاصيل أدناه لإنشاء حساب المسؤول الرئيسي. كما يمكنك تغيير التفاصيل في أي وقت بعد تسجيل الدخول.",name:"الاسم",email:"البريد الإلكتروني",password:"كلمة المرور",confirm_password:"أعد كتابة كلمة المرور",save_cont:"حفظ واستمرار",company_info:"معلومات الشركة",company_info_desc:"سيتم عرض هذه المعلومات على الفواتير. لاحظ أنه يمكنك تعديل هذا لاحقًا في صفحة الإعدادات.",company_name:"اسم الشركة",company_logo:"شعار الشركة",logo_preview:"استعراض الشعار",preferences:"التفضيلات",preferences_desc:"التفضيلات الافتراضية للنظام",currency_set_alert:"The company's currency cannot be changed later.",country:"الدولة",state:"الولاية/المنطقة",city:"المدينة",address:"العنوان",street:"العنوان 1 | العنوان 2",phone:"الهاتف",zip_code:"الرمز البريدي",go_back:"للخلف",currency:"العملة",language:"اللغة",time_zone:"المنطة الزمنية",fiscal_year:"السنة المالية",date_format:"صيغة التاريخ",from_address:"من العنوان",username:"اسم المستخدم",next:"التالي",continue:"استمرار",skip:"تخطي",database:{database:"عنوان قاعدة البيانات",connection:"اتصال قاعدة البيانات",host:"خادم قاعدة البيانات",port:"منفذ قاعدة البيانات",password:"كلمة مرور قاعدة البيانات",app_url:"عنوان الإنترنت للنظام",app_domain:"رابط التطبيق",username:"اسم المستخدم لقاعدة البيانات",db_name:"سم قاعدة البيانات",db_path:"مسار قاعدة البيانات",desc:"قم بإنشاء قاعدة بيانات على الخادم الخاص بك وتعيين بيانات الاعتماد باستخدام النموذج أدناه."},permissions:{permissions:"الأذونات",permission_confirm_title:"هل أنت متأكد من الاستمرار؟",permission_confirm_desc:"فشل فحص أذونات المجلد",permission_desc:"فيما يلي قائمة أذونات المجلد المطلوبة حتى يعمل التطبيق. في حالة فشل فحص الإذن ، تأكد من تحديث أذونات المجلد."},verify_domain:{title:"التحقق من النطاق",desc:"InvoiceShelf uses Session based authentication which requires domain verification for security purposes. Please enter the domain on which you will be accessing your web application.",app_domain:"نطاق التطبيق",verify_now:"تحقق الآن",success:"تم التحقق من النطاق بنجاح.",failed:"Domain verification failed. Please enter valid domain name.",verify_and_continue:"التحقق والمتابعة"},mail:{host:"خادم البريد",port:"منفذ البريد",driver:"مشغل البريد",secret:"سري",mailgun_secret:"الرمز السري لـ Mailgun",mailgun_domain:"المجال",mailgun_endpoint:"النهاية الطرفية لـ Mailgun",ses_secret:"SES الرمز السري",ses_key:"SES مفتاح",password:"كلمة مرور البريد الالكتروني",username:"اسم المستخدم للبريد الإلكتروني",mail_config:"إعدادات البريد الالكتروني",from_name:"اسم المرسل",from_mail:"عنوان البريد الالكتروني للمرسل",encryption:"صيغة ا لتشفير",mail_config_desc:"أدناه هو نموذج لتكوين برنامج تشغيل البريد الإلكتروني لإرسال رسائل البريد الإلكتروني من التطبيق. يمكنك أيضًا تهيئة موفري الجهات الخارجية مثل Sendgrid و SES إلخ."},req:{system_req:"متطلبات النظام",php_req_version:"Php (النسخة المطلوبة {version} بحد أدنى)",check_req:"فحص متطلبات النظام",system_req_desc:"يحتوي النظام على بعض متطلبات الخادم. تأكد من أن خادمك لديه نسخة php المطلوبة وجميع الامتدادات المذكورة أدناه."},errors:{migrate_failed:"فشل إنشاء الجداول",database_variables_save_error:"غير قادر على الاتصال بقاعدة البيانات باستخدام القيم المقدمة.",mail_variables_save_error:"فشل تكوين البريد الإلكتروني.",connection_failed:"فشل اتصال قاعدة البيانات",database_should_be_empty:"يجب أن تكون قاعدة البيانات فارغة"},success:{mail_variables_save_successfully:"تم تكوين البريد الإلكتروني بنجاح",database_variables_save_successfully:"تم تكوين قاعدة البيانات بنجاح."}},hH={invalid_phone:"رقم الهاتف غير صحيح",invalid_url:"عنوان انترنت غير صحيح (مثال: http://www.invoiceshelf.com)",invalid_domain_url:"عنوان انترنت غير صحيح (مثال: invoiceshelf.com)",required:"حقل مطلوب",email_incorrect:"بريد الكتروني غير صحيح.",email_already_taken:"هذا البريد الالكتروني مستخدم مسبقاً",email_does_not_exist:"لا يوجد كستخدم بهذا البريد الالكتروني",item_unit_already_taken:"وحدة البند قد اتخذت بالفعل",payment_mode_already_taken:"لقد تم بالفعل أخذ طريقة الدفع",send_reset_link:"أرسال رابط استعادة كلمة المرور",not_yet:"ليس بعد؟ أعد الإرسال الآن..",password_min_length:"كلمة المرور يجب أن تتكون من {count} أحرف على الأقل",name_min_length:"الاسم يجب أن يتكون من {count} أحرف على الأقل",prefix_min_length:"Prefix must have at least {count} letters.",enter_valid_tax_rate:"أدخل معدل الضريبة بشكل صحيح",numbers_only:"أرقام فقط.",characters_only:"حروف فقط.",password_incorrect:"يجب أن تكون كلمات المرور متطابقة",password_length:"يجب أن تكون كلمة المرور بطول {count} حرف.",qty_must_greater_than_zero:"الكمية يجب أن تكون أكبر من صفر.",price_greater_than_zero:"السعر يجب أن يكون أكبر من صفر.",payment_greater_than_zero:"الدفعة يجب أن تكون أكبر من صفر.",payment_greater_than_due_amount:"مبلغ الدفعة أكثر من المبلغ المستحق لهذه الفاتورة.",quantity_maxlength:"يجب ألا تزيد الكمية عن 20 رقماً.",price_maxlength:"يجب ألا يزيد السعر عن 20 رقماً.",price_minvalue:"يجب أن يكون السعر أكبر من صفر.",amount_maxlength:"يجب ألا يزيد المبلغ عن 20 رقماً.",amount_minvalue:"يجب أن يكون المبلغ أكبر من صفر.",discount_maxlength:"Discount should not be greater than max discount",description_maxlength:"يجب ألا يزيد الوصف عن 255 حرفاً.",subject_maxlength:"يجب الا يزيد العنوان عن 100 حرف.",message_maxlength:"يجب ألا يزيد حجم النص عن 255 حرف.",maximum_options_error:"الحد الأعلى هو {max} خيارات. قم بإزالة أحد الخيارات لتحديد خيار آخر.",notes_maxlength:"يجب ألا يزيد حجم الملاحظات عن 255 حرفاً.",address_maxlength:"يجب ألا يزيد العنوان عن 255 حرفاً.",ref_number_maxlength:"يجب ألا يزيد الرقم المرجعي عن 255 حرفاً.",prefix_maxlength:"يجب ألا تزيد البادئة عن 5 أحرف.",something_went_wrong:"خطأ غير معروف!",number_length_minvalue:"يجب أن تكون قيمة الرقم أكبر من الصفر",at_least_one_ability:"Please select atleast one Permission.",valid_driver_key:"Please enter a valid {driver} key.",valid_exchange_rate:"Please enter a valid exchange rate.",company_name_not_same:"Company name must match with given name."},gH={starter_plan:"This feature is available on Starter plan and onwards!",invalid_provider_key:"Please Enter Valid Provider API Key.",estimate_number_used:"The estimate number has already been taken.",invoice_number_used:"The invoice number has already been taken.",payment_attached:"This invoice already has a payment attached to it. Make sure to delete the attached payments first in order to go ahead with the removal.",payment_number_used:"The payment number has already been taken.",name_already_taken:"The name has already been taken.",receipt_does_not_exist:"Receipt does not exist.",customer_cannot_be_changed_after_payment_is_added:"Customer cannot be change after payment is added",invalid_credentials:"Invalid Credentials.",not_allowed:"Not Allowed",login_invalid_credentials:"These credentials do not match our records.",enter_valid_cron_format:"Please enter a valid cron format",email_could_not_be_sent:"Email could not be sent to this email address.",invalid_address:"Please enter a valid address.",invalid_key:"Please enter valid key.",invalid_state:"Please enter a valid state.",invalid_city:"Please enter a valid city.",invalid_postal_code:"Please enter a valid zip.",invalid_format:"Please enter valid query string format.",api_error:"Server not responding.",feature_not_enabled:"Feature not enabled.",request_limit_met:"Api request limit exceeded.",address_incomplete:"Incomplete Address"},vH="تقدير",yH="رقم تقدير",bH="تاريخ التقدير",kH="تاريخ انتهاء الصلاحية",wH="الفاتورة",xH="رقم الفاتورة",DH="تاريخ الفاتورة",SH="تاريخ الاستحقاق",zH="ملاحظات",PH="الأصناف",EH="الكمية",AH="السعر",CH="الخصم",jH="المبلغ المطلوب",TH="المجموع الفرعي",IH="الإجمالي",NH="الدفع",FH="ايصال الدفع",MH="تاريخ الدفع",RH="رقم الدفعة",OH="نوع الدفعة",$H="المبلغ المستلم",LH="تقرير المصاريف",BH="مجموع المصاريف",UH="تقرير الارباح و الخسائر",VH="تقرير عملاء المبيعات",qH="تقرير عناصر المبيعات",HH="تقرير ملخص الضرائب",WH="الايرادات",KH="صافي الأرباح",YH="تقرير المبيعات: حسب العميل",ZH="مجموع المبيعات",GH="تقرير المبيعات: حسب البضاعة او الخدمة",QH="تقرير الاداءات",JH="اجمالي الاداءات",XH="أنواع الضرائب",eW="النفقات",tW="مطلوب من,",aW="يشحن إلى,",nW="تم الاستلام من:",iW="Tax",oW={navigation:Gq,general:Qq,dashboard:Jq,tax_types:Xq,global_search:eH,company_switcher:tH,dateRange:aH,customers:nH,items:iH,estimates:oH,invoices:rH,recurring_invoices:sH,payments:lH,expenses:cH,login:dH,modules:uH,users:_H,reports:mH,settings:pH,wizard:fH,validation:hH,errors:gH,pdf_estimate_label:vH,pdf_estimate_number:yH,pdf_estimate_date:bH,pdf_estimate_expire_date:kH,pdf_invoice_label:wH,pdf_invoice_number:xH,pdf_invoice_date:DH,pdf_invoice_due_date:SH,pdf_notes:zH,pdf_items_label:PH,pdf_quantity_label:EH,pdf_price_label:AH,pdf_discount_label:CH,pdf_amount_label:jH,pdf_subtotal:TH,pdf_total:IH,pdf_payment_label:NH,pdf_payment_receipt_label:FH,pdf_payment_date:MH,pdf_payment_number:RH,pdf_payment_mode:OH,pdf_payment_amount_received_label:$H,pdf_expense_report_label:LH,pdf_total_expenses_label:BH,pdf_profit_loss_label:UH,pdf_sales_customers_label:VH,pdf_sales_items_label:qH,pdf_tax_summery_label:HH,pdf_income_label:WH,pdf_net_profit_label:KH,pdf_customer_sales_report:YH,pdf_total_sales_label:ZH,pdf_item_sales_label:GH,pdf_tax_report_label:QH,pdf_total_tax_label:JH,pdf_tax_types_label:XH,pdf_expenses_label:eW,pdf_bill_to:tW,pdf_ship_to:aW,pdf_received_from:nW,pdf_tax_label:iW},rW={dashboard:"Übersicht",customers:"Kunden",items:"Artikel",invoices:"Rechnungen","recurring-invoices":"Serienrechnungen",expenses:"Ausgaben",estimates:"Angebote",payments:"Zahlungen",reports:"Berichte",settings:"Einstellungen",logout:"Abmelden",users:"Benutzer",modules:"Module"},sW={add_company:"Unternehmen hinzufügen",view_pdf:"PDF anzeigen",copy_pdf_url:"PDF-Link kopieren",download_pdf:"PDF herunterladen",save:"Speichern",create:"Erstellen",cancel:"Abbrechen",update:"Aktualisieren",deselect:"Abwählen",download:"Herunterladen",from_date:"Von Datum",to_date:"bis Datum",from:"Von",to:"An",ok:"Okay",yes:"Ja",no:"Nein",sort_by:"Sortieren nach",ascending:"Aufsteigend",descending:"Absteigend",subject:"Betreff",body:"Inhalt",message:"Nachricht",send:"Absenden",preview:"Vorschau",go_back:"zurück",back_to_login:"Zurück zum Login?",home:"Startseite",filter:"Filter",delete:"Löschen",edit:"Bearbeiten",view:"Anzeigen",add_new_item:"Artikel hinzufügen",clear_all:"Alle entfernen",showing:"Anzeigen",of:"von",actions:"Aktionen",subtotal:"ZWISCHENSUMME",discount:"RABATT",fixed:"Festsatz",percentage:"Prozentsatz",tax:"Steuer",total_amount:"GESAMTSUMME",bill_to:"Rechnungsempfänger",ship_to:"Versand an",due:"Fällig",draft:"Entwurf",sent:"Gesendet",all:"Alle",select_all:"Alle auswählen",select_template:"Vorlage auswählen",choose_file:"Klicken Sie hier, um eine Datei auszuwählen",choose_template:"Wählen Sie eine Vorlage",choose:"Wählen",remove:"Entfernen",select_a_status:"Status wählen",select_a_tax:"Steuersatz wählen",search:"Suchen",are_you_sure:"Sind Sie sicher?",list_is_empty:"Liste ist leer.",no_tax_found:"Kein Steuersatz gefunden!",four_zero_four:"Vier hundert vier",you_got_lost:"Hoppla! Du hast dich verirrt!",go_home:"Geh zurück",test_mail_conf:"E-Mail Konfiguration testen",send_mail_successfully:"E-Mail erfolgreich versendet",setting_updated:"Einstellungen erfolgreich aktualisiert",select_state:"Bundesland wählen",select_country:"Land wählen",select_city:"Stadt wählen",street_1:"Straße und Hausnummer",street_2:"Adresszusatz",action_failed:"Aktion fehlgeschlagen",retry:"Wiederholen",choose_note:"Notiz auswählen",no_note_found:"Keine Notizen gefunden",insert_note:"Notiz einfügen",copied_pdf_url_clipboard:"PDF-URL in Zwischenablage kopiert!",copied_url_clipboard:"URL wurde in die Zwischenablage kopiert!",docs:"Dokumentation",do_you_wish_to_continue:"Möchten Sie fortfahren?",note:"Notiz",pay_invoice:"Rechnung bezahlen",login_successfully:"Erfolgreich angemeldet!",logged_out_successfully:"Erfolgreich abgemeldet",mark_as_default:"Als Standard festlegen"},lW={select_year:"Jahr wählen",cards:{due_amount:"Offene Beträge",customers:"Kunden",invoices:"Rechnungen",estimates:"Angebote",payments:"Zahlungen"},chart_info:{total_sales:"Aufträge gesamt",total_receipts:"Zahlungen gesamt",total_expense:"Ausgaben",net_income:"Einnahmen Netto",year:"Jahr"},monthly_chart:{title:"Umsatz & Ausgaben"},recent_invoices_card:{title:"Fällige Rechnungen",due_on:"Fällig am",customer:"Kunde",amount_due:"Offener Betrag",actions:"Aktionen",view_all:"Alle Anzeigen"},recent_estimate_card:{title:"Aktuelle Angebote",date:"Datum",customer:"Kunde",amount_due:"Betrag",actions:"Aktionen",view_all:"Alle Anzeigen"}},cW={name:"Name",description:"Beschreibung",percent:"Prozent",compound_tax:"zusammengesetzte Steuer"},dW={search:"Suchen...",customers:"Kunden",users:"Benutzer",no_results_found:"Keine Ergebnisse gefunden"},uW={label:"UNTERNEHMEN WECHSELN",no_results_found:"Keine Ergebnisse gefunden",add_new_company:"Neues Unternehmen hinzufügen",new_company:"Neues Unternehmen",created_message:"Unternehmen erfolgreich angelegt"},_W={today:"Heute",this_week:"Diese Woche",this_month:"Dieser Monat",this_quarter:"Dieses Quartal",this_year:"Dieses Jahr",previous_week:"Vorherige Woche",previous_month:"Vorheriger Monat",previous_quarter:"Vorheriges Quartal",previous_year:"Vorheriges Jahr",custom:"Benutzerdefiniert"},mW={title:"Kunden",prefix:"Präfix",add_customer:"Kunde hinzufügen",contacts_list:"Kunden-Liste",name:"Name",mail:"E-Mail| E-Mails",statement:"Stellungnahme",display_name:"Anzeige Name",primary_contact_name:"Ansprechpartner",contact_name:"Kontakt Name",amount_due:"Offener Betrag",email:"E-Mail",address:"Adresse",phone:"Telefon",website:"Webseite",overview:"Übersicht",invoice_prefix:"Rechnungspräfix",estimate_prefix:"Angebotspräfix",payment_prefix:"Zahlungspräfix",enable_portal:"Kunden-Portal aktivieren",country:"Land",state:"Bundesland",city:"Stadt",zip_code:"PLZ",added_on:"Hinzugefügt am",action:"Aktion",password:"Passwort",confirm_password:"Passwort bestätigen",street_number:"Hausnummer",primary_currency:"Primäre Währung",description:"Beschreibung",add_new_customer:"Neuen Kunden hinzufügen",save_customer:"Kunde speichern",update_customer:"Kunden ändern",customer:"Kunde | Kunden",new_customer:"Neuer Kunde",edit_customer:"Kunde bearbeiten",basic_info:"Basisinformation",portal_access:"Portalzugang",portal_access_text:"Darf der Kunde sich im Kundenportal anmelden?",portal_access_url:"Login URL zum Kundenportal",portal_access_url_help:"Bitte kopieren und leiten Sie die oben angegebene URL an Ihren Kunden weiter, um Ihm Zugang zu gewähren.",billing_address:"Rechnungsadresse",shipping_address:"Versand-Adresse",copy_billing_address:"Rechnungsadresse kopieren",no_customers:"Noch keine Kunden!",no_customers_found:"Keine Kunden gefunden!",no_contact:"Kein Kontakt",no_contact_name:"Kein Kontaktname",list_of_customers:"Dieser Bereich zeigt alle Kunden.",primary_display_name:"Primärer Anzeige Name",select_currency:"Währung wählen",select_a_customer:"Wählen Sie einen Kunden",type_or_click:"Eingeben oder anklicken zum auswählen",new_transaction:"Neue Transaktion",no_matching_customers:"Es gibt keine passenden Kunden!",phone_number:"Telefonnummer",create_date:"Erstellungsdatum",confirm_delete:"Sie werden diesen Kunden und alle zugehörigen Rechnungen, Angebote und Zahlungen nicht wiederherstellen können. | Sie werden diese Kunden und alle zugehörigen Rechnungen, Angebote und Zahlungen nicht wiederherstellen können.",created_message:"Benutzer erfolgreich erstellt",updated_message:"Kunde erfolgreich aktualisiert",address_updated_message:"Adressinformationen erfolgreich aktualisiert",deleted_message:"Kunden erfolgreich gelöscht | Kunden erfolgreich gelöscht",edit_currency_not_allowed:"Währung kann nicht geändert werden, wenn Transaktionen erstellt wurden."},pW={title:"Artikel",items_list:"Artikel-Liste",name:"Name",unit:"Einheit",description:"Beschreibung",added_on:"Hinzugefügt am",price:"Preis",date_of_creation:"Erstellt am",not_selected:"Keine ausgewählt",action:"Aktion",add_item:"Artikel hinzufügen",save_item:"Artikel speichern",update_item:"Artikel ändern",item:"Artikel | Artikel",add_new_item:"Neuen Artikel hinzufügen",new_item:"Neuer Artikel",edit_item:"Artikel bearbeiten",no_items:"Keine Artikel vorhanden!",list_of_items:"Dieser Bereich zeigt alle Artikel.",select_a_unit:"Einheit auswählen",taxes:"Steuern",item_attached_message:"Ein Artikel der bereits verwendet wird kann nicht gelöscht werden",confirm_delete:"Sie können diesen Artikel nicht wiederherstellen | Sie können diese Artikel nicht wiederherstellen",created_message:"Artikel erfolgreich erstellt",updated_message:"Artikel erfolgreich aktualisiert",deleted_message:"Artikel erfolgreich gelöscht | Artikel erfolgreich gelöscht"},fW={title:"Angebote",accept_estimate:"Angebot akzeptieren",reject_estimate:"Angebot ablehnen",estimate:"Angebot | Angebote",estimates_list:"Angebotsübersicht",days:"{days} Tage",months:"{months} Monat",years:"{years} Jahre",all:"Alle",paid:"Bezahlt",unpaid:"Unbezahlt",customer:"KUNDE",ref_no:"REF. - NR.",number:"NUMMER",amount_due:"OFFENER BETRAG",partially_paid:"Teilweise bezahlt",total:"Gesamt",discount:"Rabatt",sub_total:"Zwischensumme",estimate_number:"Angebotsnummer",ref_number:"Ref-Nummer",contact:"Kontakt",add_item:"Fügen Sie ein Artikel hinzu",date:"Datum",due_date:"Fälligkeit",expiry_date:"Zahlungsziel",status:"Status",add_tax:"Steuer hinzufügen",amount:"Summe",action:"Aktion",notes:"Notizen",tax:"Steuer",estimate_template:"Vorlage",convert_to_invoice:"Konvertieren in Rechnung",mark_as_sent:"Als gesendet markieren",send_estimate:"Angebot senden",resend_estimate:"Angebot erneut senden",record_payment:"Zahlung erfassen",add_estimate:"Angebote hinzufügen",save_estimate:"Angebot speichern",confirm_conversion:"Dieses Angebot wird verwendet, um eine neue Rechnung zu erstellen.",conversion_message:"Rechnung erfolgreich erstellt",confirm_send_estimate:"Das Angebot wird per E-Mail an den Kunden gesendet",confirm_mark_as_sent:"Dieses Angebot wird als gesendet markiert",confirm_mark_as_accepted:"Dieses Angebot wird als angenommen markiert",confirm_mark_as_rejected:"Dieses Angebot wird als abgelehnt markiert",no_matching_estimates:"Es gibt keine übereinstimmenden Angebote!",mark_as_sent_successfully:"Angebot als gesendet markiert",send_estimate_successfully:"Angebot erfolgreich gesendet",errors:{required:"Feld ist erforderlich"},accepted:"Angenommen",rejected:"Abgelehnt",expired:"Abgelaufen",sent:"Gesendet",draft:"Entwurf",viewed:"Angesehen",declined:"Abgelehnt",new_estimate:"Neues Angebot",add_new_estimate:"Neues Angebot hinzufügen",update_Estimate:"Angebot aktualisieren",edit_estimate:"Angebot ändern",items:"Artikel",Estimate:"Angebot | Angebote",add_new_tax:"neuen Steuersatz hinzufügen",no_estimates:"Keine Angebote vorhanden!",list_of_estimates:"Dieser Bereich zeigt alle Angebote.",mark_as_rejected:"Markiert als abgelehnt",mark_as_accepted:"Markiert als angenommen",marked_as_accepted_message:"Angebot als angenommen markiert",marked_as_rejected_message:"Angebot als abgelehnt markiert",confirm_delete:"Das Angebot kann nicht wiederhergestellt werden | Die Angebote können nicht wiederhergestellt werden",created_message:"Angebot erfolgreich erstellt",updated_message:"Angebot erfolgreich aktualisiert",deleted_message:"Angebot erfolgreich gelöscht | Angebote erfolgreich gelöscht",something_went_wrong:"Da ging etwas schief",item:{title:"Titel des Artikels",description:"Beschreibung",quantity:"Menge",price:"Preis",discount:"Rabatt",total:"Gesamt",total_discount:"Rabatt Gesamt",sub_total:"Zwischensumme",tax:"Steuer",amount:"Summe",select_an_item:"Wählen Sie einen Artikel",type_item_description:"Artikel Beschreibung (optional)"},mark_as_default_estimate_template_description:"Wenn aktiviert, wird die ausgewählte Vorlage automatisch für neue Angebote ausgewählt."},hW={title:"Rechnungen",download:"Herunterladen",pay_invoice:"Rechnung bezahlen",invoices_list:"Liste der Rechnungen",invoice_information:"Rechnungsdaten",days:"{days} Tage",months:"{months} Monat",years:"{years} Jahre",all:"Alle",paid:"Bezahlt",unpaid:"Unbezahlt",viewed:"Gesehen",overdue:"Überfällig",completed:"Abgeschlossen",customer:"KUNDE",paid_status:"ZAHLUNGSSTATUS",ref_no:"REF. - NR.",number:"NUMMER",amount_due:"OFFENER BETRAG",partially_paid:"Teilzahlung",total:"Gesamt",discount:"Rabatt",sub_total:"Zwischensumme",invoice:"Rechnung | Rechnungen",invoice_number:"Rechnungsnummer",ref_number:"Ref-Nummer",contact:"Kontakt",add_item:"Fügen Sie ein Artikel hinzu",date:"Datum",due_date:"Fälligkeit",status:"Status",add_tax:"Steuersatz hinzufügen",amount:"Summe",action:"Aktion",notes:"Notizen",view:"Anzeigen",send_invoice:"Rechnung senden",resend_invoice:"Rechnung erneut senden",invoice_template:"Rechnungsvorlage",conversion_message:"Rechnung erfolgreich kopiert",template:"Vorlage auswählen",mark_as_sent:"Als gesendet markieren",confirm_send_invoice:"Diese Rechnung wird per E-Mail an den Kunden gesendet",invoice_mark_as_sent:"Diese Rechnung wird als gesendet markiert",confirm_mark_as_accepted:"Diese Rechnung wird als akzeptiert markiert",confirm_mark_as_rejected:"Diese Rechnung wird als abgelehnt markiert",confirm_send:"Diese Rechnung wird per E-Mail an den Kunden gesendet",invoice_date:"Rechnungsdatum",record_payment:"Zahlung erfassen",add_new_invoice:"Neue Rechnung hinzufügen",update_expense:"Ausgabe aktualisieren",edit_invoice:"Rechnung bearbeiten",new_invoice:"Neue Rechnung",save_invoice:"Rechnung speichern",update_invoice:"Rechnung ändern",add_new_tax:"Neuen Steuersatz hinzufügen",no_invoices:"Keine Rechnungen vorhanden!",mark_as_rejected:"Als abgelehnt markieren",mark_as_accepted:"Als akzeptiert markieren",list_of_invoices:"Dieser Bereich zeigt alle Rechnungen.",select_invoice:"Wählen Sie eine Rechnung",no_matching_invoices:"Es gibt keine entsprechenden Rechnungen!",mark_as_sent_successfully:"Rechnung gekennzeichnet als erfolgreich gesendet",invoice_sent_successfully:"Rechnung erfolgreich versendet",cloned_successfully:"Rechnung erfolgreich kopiert",clone_invoice:"Rechnung kopieren",confirm_clone:"Diese Rechnung wird kopiert",item:{title:"Titel des Artikels",description:"Beschreibung",quantity:"Menge",price:"Preis",discount:"Rabatt",total:"Gesamt",total_discount:"Rabatt Gesamt",sub_total:"Zwischensumme",tax:"Steuer",amount:"Summe",select_an_item:"Geben Sie oder wählen Sie ein Artikel",type_item_description:"Artikel Beschreibung (optional)"},payment_attached_message:"Einer der ausgewählten Rechnungen ist bereits eine Zahlung zugeordnet. Stellen Sie sicher, dass Sie zuerst die angehängten Zahlungen löschen, um mit dem Entfernen fortzufahren",confirm_delete:"Sie können diese Rechnung nicht wiederherstellen. | Sie können diese Rechnungen nicht wiederherstellen.",created_message:"Rechnung erfolgreich erstellt",updated_message:"Rechnung erfolgreich aktualisiert",deleted_message:"Rechnung erfolgreich gelöscht | Rechnungen erfolgreich gelöscht",marked_as_sent_message:"Rechnung als erfolgreich gesendet markiert",something_went_wrong:"Da ist etwas schief gelaufen",invalid_due_amount_message:"Der Gesamtrechnungsbetrag darf nicht kleiner sein als der für diese Rechnung bezahlte Gesamtbetrag. Bitte aktualisieren Sie die Rechnung oder löschen Sie die zugehörigen Zahlungen um fortzufahren.",mark_as_default_invoice_template_description:"Wenn aktiviert, wird die ausgewählte Vorlage automatisch für neue Rechnungen ausgewählt."},gW={title:"Serienrechnungen",invoices_list:"Liste aller Serienrechnungen",days:"{days} Tage",months:"{months} Monat",years:"{years} Jahr",all:"Alle",paid:"Bezahlt",unpaid:"Unbezahlt",viewed:"Gesehen",overdue:"Überfällig",active:"Aktiv",completed:"Abgeschlossen",customer:"KUNDE",paid_status:"ZAHLUNGSSTATUS",ref_no:"REF. - NR.",number:"NUMMER",amount_due:"OFFENER BETRAG",partially_paid:"Teilweise bezahlt",total:"Gesamt",discount:"Rabatt",sub_total:"Zwischensumme",invoice:"Wiederkehrende Rechnung | Wiederkehrende Rechnungen",invoice_number:"Serienrechnungsnummer",next_invoice_date:"Nächstes Rechnungsdatum",ref_number:"Ref. Nummer",contact:"Kontakt",add_item:"Artikel hinzufügen",date:"Datum",limit_by:"Eingrenzen nach",limit_date:"Datum eingrenzen",limit_count:"Anzahl eingrenzen",count:"Anzahl",status:"Status",select_a_status:"Status auswählen",working:"Verarbeitung läuft",on_hold:"Pausiert",complete:"Abgeschlossen",add_tax:"Steuer hinzufügen",amount:"Summe",action:"Aktion",notes:"Notizen",view:"Anzeigen",basic_info:"Allgemeine Daten",send_invoice:"Serienrechnung senden",auto_send:"Automatisch senden",resend_invoice:"Serienrechnung erneut senden",invoice_template:"Serienrechnungsvorlage",conversion_message:"Serienrechnung erfolgreich kopiert",template:"Vorlage",mark_as_sent:"Als gesendet markieren",confirm_send_invoice:"Diese Serienrechnung wird per E-Mail an den Kunden gesendet",invoice_mark_as_sent:"Diese Serienrechnung wird als gesendet markiert",confirm_send:"Diese Serienrechnung wird per E-Mail an den Kunden gesendet",starts_at:"Anfangsdatum",due_date:"Fälligkeitsdatum der Rechnung",record_payment:"Zahlung aufzeichnen",add_new_invoice:"Neue Serienrechnung hinzufügen",update_expense:"Ausgabe aktualisieren",edit_invoice:"Serienrechnung bearbeiten",new_invoice:"Neue Serienrechnung",send_automatically:"Automatisch senden",send_automatically_desc:"Aktivieren Sie dies, wenn Sie die Rechnung bei der Erstellung automatisch an den Kunden senden möchten.",save_invoice:"Serienrechnung speichern",update_invoice:"Serienrechnung aktualisieren",add_new_tax:"Neuen Steuersatz hinzufügen",no_invoices:"Noch keine Serienrechnungen!",mark_as_rejected:"Als abgelehnt markieren",mark_as_accepted:"Als akzeptiert markieren",list_of_invoices:"Dieser Abschnitt wird die Liste aller Serienrechnungen enthalten.",select_invoice:"Rechnung auswählen",no_matching_invoices:"Es gibt keine passenden Serienrechnungen!",mark_as_sent_successfully:"Serienrechnung als erfolgreich gesendet markiert",invoice_sent_successfully:"Serienrechnung erfolgreich gesendet",cloned_successfully:"Serienrechnung erfolgreich kopiert",clone_invoice:"Serienrechnung kopieren",confirm_clone:"Diese Serienrechnung wird in eine neue Serienrechnung kopiert",add_customer_email:"Bitte fügen Sie eine E-Mail-Adresse für diesen Kunden hinzu, um Rechnungen automatisch zu senden.",item:{title:"Titel des Artikels",description:"Beschreibung",quantity:"Menge",price:"Preis",discount:"Rabatt",total:"Gesamt",total_discount:"Gesamtrabatt",sub_total:"Zwischensumme",tax:"Steuer",amount:"Menge",select_an_item:"Geben Sie den Artikel ein, oder wählen Sie ihn aus",type_item_description:"Artikel-Beschreibung (optional)"},frequency:{title:"Intervall",select_frequency:"Intervall auswählen",minute:"Minute",hour:"Stunde",day_month:"Tag des Monats",month:"Monat",day_week:"Tag der Woche"},confirm_delete:"Sie werden diese Rechnung nicht wiederherstellen können | Sie werden nicht in der Lage sein, diese Rechnungen wiederherzustellen",created_message:"Serienrechnung erfolgreich erstellt",updated_message:"Serienrechnung erfolgreich aktualisiert",deleted_message:"Serienrechnung erfolgreich gelöscht | Serienrechnungen erfolgreich gelöscht",marked_as_sent_message:"Serienrechnung als erfolgreich gesendet markiert",user_email_does_not_exist:"E-Mail des Benutzers existiert nicht",something_went_wrong:"etwas ist schief gelaufen",invalid_due_amount_message:"Der Gesamtbetrag der Serienrechnung darf nicht kleiner als der bezahlte Gesamtbetrag für diese Serienrechnung sein. Bitte aktualisieren Sie die Rechnung oder löschen Sie die zugehörigen Zahlungen, um fortzufahren."},vW={title:"Zahlungen",payments_list:"Liste der Zahlungen",record_payment:"Zahlung eintragen",customer:"Kunde",date:"Datum",amount:"Summe",action:"Aktion",payment_number:"Zahlungsnummer",payment_mode:"Zahlungsart",invoice:"Rechnung",note:"Hinweis",add_payment:"Zahlung hinzufügen",new_payment:"Neue Zahlung",edit_payment:"Zahlung bearbeiten",view_payment:"Zahlung anzeigen",add_new_payment:"Neue Zahlung hinzufügen",send_payment_receipt:"Zahlungsbeleg senden",send_payment:"Senden Sie die Zahlung",save_payment:"Zahlung speichern",update_payment:"Zahlung ändern",payment:"Zahlung | Zahlungen",no_payments:"Keine Zahlungen vorhanden!",not_selected:"Nicht ausgewählt",no_invoice:"Keine Rechnung",no_matching_payments:"Es gibt keine passenden Zahlungen!",list_of_payments:"Dieser Bereich zeigt alle Zahlungen.",select_payment_mode:"Wählen Sie den Zahlungsmodus",confirm_mark_as_sent:"Dieses Angebot wird als gesendet markiert",confirm_send_payment:"Diese Zahlung wird per E-Mail an den Kunden gesendet",send_payment_successfully:"Zahlung erfolgreich gesendet",something_went_wrong:"Da ist etwas schief gelaufen",confirm_delete:"Sie können diese Zahlung nicht wiederherstellen. | Sie können diese Zahlungen nicht wiederherstellen.",created_message:"Zahlung erfolgreich erstellt",updated_message:"Zahlung erfolgreich aktualisiert",deleted_message:"Zahlung erfolgreich gelöscht | Zahlungen erfolgreich gelöscht",invalid_amount_message:"Zahlungsbetrag ist ungültig"},yW={title:"Ausgaben",expenses_list:"Ausgabenübersicht",select_a_customer:"Wählen Sie einen Kunden",expense_title:"Titel",customer:"Kunde",currency:"Währung",contact:"Kontakt",category:"Kategorie",from_date:"Von Datum",to_date:"bis Datum",expense_date:"Datum",description:"Beschreibung",receipt:"Rechnung",amount:"Summe",action:"Aktion",not_selected:"Nicht ausgewählt",note:"Hinweis",category_id:"Kategorie-Id",date:"Ausgabedatum",add_expense:"Ausgabe hinzufügen",add_new_expense:"Neue Ausgabe hinzufügen",save_expense:"Ausgabe speichern",update_expense:"Ausgabe aktualisieren",download_receipt:"Quittung herunterladen",edit_expense:"Ausgabe bearbeiten",new_expense:"Neue Ausgabe",expense:"Ausgabe | Ausgaben",no_expenses:"Noch keine Ausgaben!",list_of_expenses:"Dieser Bereich enthält alle Ausgaben.",confirm_delete:"Sie können diese Ausgabe nicht wiederherstellen. | Sie können diese Ausgaben nicht wiederherstellen.",created_message:"Ausgabe erfolgreich erstellt",updated_message:"Ausgabe erfolgreich aktualisiert",deleted_message:"Ausgabe erfolgreich gelöscht | Ausgaben erfolgreich gelöscht",categories:{categories_list:"Liste der Kategorien",title:"Titel",name:"Name",description:"Beschreibung",amount:"Summe",actions:"Aktionen",add_category:"Kategorie hinzufügen",new_category:"Neue Kategorie",category:"Kategorie | Kategorien",select_a_category:"Wählen Sie eine Kategorie"}},bW={email:"E-Mail",password:"Passwort",forgot_password:"Passwort vergessen?",or_signIn_with:"oder Anmelden mit",login:"Anmelden",register:"Registrieren",reset_password:"Passwort zurücksetzen",password_reset_successfully:"Passwort erfolgreich zurückgesetzt",enter_email:"Geben Sie Ihre E-Mail ein",enter_password:"Geben Sie das Passwort ein",retype_password:"Passwort bestätigen"},kW={buy_now:"Kaufen",install:"Installieren",price:"Preis",download_zip_file:"ZIP Datei herunterladen",unzipping_package:"Entpacke Paket",copying_files:"Kopiere Dateien",deleting_files:"Unbenutzte Dateien werden gelöscht",completing_installation:"Installation wird abgeschlossen",update_failed:"Update fehlgeschlagen",install_success:"Modul erfolgreich installiert!",customer_reviews:"Bewertungen",license:"Lizenz",faq:"FAQ",monthly:"Monatlich",yearly:"Jährlich",updated:"Aktualisiert",version:"Version",disable:"Deaktivieren",module_disabled:"Modul deaktiviert",enable:"Aktivieren",module_enabled:"Modul aktiviert",update_to:"Update auf",module_updated:"Modul erfolgreich aktualisiert!",title:"Module",module:"Modul | Module",api_token:"API Schlüssel",invalid_api_token:"Ungültiger API-Schlüssel.",other_modules:"Weitere Module",view_all:"Alle Anzeigen",no_reviews_found:"Für dieses Modul gibt es noch keine Bewertungen!",module_not_purchased:"Module Not Purchased",module_not_found:"Modul nicht gefunden",version_not_supported:"This module version doesn't support the current version of InvoiceShelf",last_updated:"Zuletzt aktualisiert am",connect_installation:"Installation verbinden",api_token_description:"Melden Sie sich bei {url} an und verbinden Sie diese Installation durch Eingabe des API-Token. Ihre gekauften Module werden hier angezeigt, nachdem die Verbindung hergestellt wurde.",view_module:"Modul anzeigen",update_available:"Aktualisierung verfügbar",purchased:"Gekauft",installed:"Installiert",no_modules_installed:"Noch keine Module installiert!",disable_warning:"Alle Einstellungen für diesen speziellen Wert werden zurückgesetzt.",what_you_get:"Was Sie erhalten"},wW={title:"Benutzer",users_list:"Benutzerliste",name:"Name",description:"Beschreibung",added_on:"Hinzugefügt am",date_of_creation:"Erstellt am",action:"Aktion",add_user:"Benutzer hinzufügen",save_user:"Benutzer speichern",update_user:"Benutzer aktualisieren",user:"Benutzer",add_new_user:"Neuen Benutzer hinzufügen",new_user:"Neuer Benutzer",edit_user:"Benutzer bearbeiten",no_users:"Noch keine Benutzer!",list_of_users:"Dieser Bereich zeigt alle Benutzer.",email:"E-Mail",phone:"Telefon",password:"Passwort",user_attached_message:"Ein Artikel der bereits verwendet wird kann nicht gelöscht werden",confirm_delete:"Sie werden diesen Benutzer nicht wiederherstellen können | Sie werden nicht in der Lage sein, diese Benutzer wiederherzustellen",created_message:"Benutzer erfolgreich erstellt",updated_message:"Benutzer wurde erfolgreich aktualisiert",deleted_message:"Benutzer erfolgreich gelöscht | Benutzer erfolgreich gelöscht",select_company_role:"Wähle Rolle für {company}",companies:"Unternehmen"},xW={title:"Bericht",from_date:"Ab Datum",to_date:"bis Datum",status:"Status",paid:"Bezahlt",unpaid:"Unbezahlt",download_pdf:"PDF herunterladen",view_pdf:"PDF anzeigen",update_report:"Bericht aktualisieren",report:"Bericht | Berichte",profit_loss:{profit_loss:"Gewinn & Verlust",to_date:"bis Datum",from_date:"Ab Datum",date_range:"Datumsbereich auswählen"},sales:{sales:"Umsatz",date_range:"Datumsbereich auswählen",to_date:"bis Datum",from_date:"Ab Datum",report_type:"Berichtstyp"},taxes:{taxes:"Steuern",to_date:"bis Datum",from_date:"Ab Datum",date_range:"Datumsbereich auswählen"},errors:{required:"Feld ist erforderlich"},invoices:{invoice:"Rechnung",invoice_date:"Rechnungsdatum",due_date:"Fälligkeit",amount:"Summe",contact_name:"Ansprechpartner",status:"Status"},estimates:{estimate:"Angebot",estimate_date:"Angebotsdatum",due_date:"Fälligkeit",estimate_number:"Angebotsnummer",ref_number:"Ref-Nummer",amount:"Summe",contact_name:"Ansprechpartner",status:"Status"},expenses:{expenses:"Ausgaben",category:"Kategorie",date:"Datum",amount:"Summe",to_date:"bis Datum",from_date:"Ab Datum",date_range:"Datumsbereich auswählen"}},DW={menu_title:{account_settings:"Konto-Einstellungen",company_information:"Informationen zum Unternehmen",customization:"Personalisierung",preferences:"Einstellungen",notifications:"Benachrichtigungen",tax_types:"Steuersätze",expense_category:"Ausgabenkategorien",update_app:"Applikation aktualisieren",backup:"Sicherung",file_disk:"Dateispeicher",custom_fields:"Benutzerdefinierte Felder",payment_modes:"Zahlungsarten",notes:"Notizen",exchange_rate:"Wechselkurs",address_information:"Adressinformationen"},address_information:{section_description:" Sie können Ihre Adressinformationen über das untenstehende Formular aktualisieren."},title:"Einstellungen",setting:"Einstellung | Einstellungen",general:"Allgemeine",language:"Sprache",primary_currency:"Primäre Währung",timezone:"Zeitzone",date_format:"Datum-Format",currencies:{title:"Währungen",currency:"Währung | Währungen",currencies_list:"Währungen Liste",select_currency:"Währung wählen",name:"Name",code:"Abkürzung",symbol:"Symbol",precision:"Präzision",thousand_separator:"Tausendertrennzeichen",decimal_separator:"Dezimal-Trennzeichen",position:"Position",position_of_symbol:"Position des Währungssymbol",right:"Rechts",left:"Links",action:"Aktion",add_currency:"Währung einfügen"},mail:{host:"E-Mail Mailserver",port:"E-Mail Port",driver:"E-Mail Treiber",secret:"Verschlüsselung",mailgun_secret:"Mailgun Verschlüsselung",mailgun_domain:"Mailgun Adresse",mailgun_endpoint:"Mailgun-Endpunkt",ses_secret:"SES Verschlüsselung",ses_key:"SES-Taste",password:"E-Mail-Kennwort",username:"E-Mail-Benutzername",mail_config:"E-Mail-Konfiguration",from_name:"Von E-Mail-Namen",from_mail:"Von E-Mail-Adresse",encryption:"E-Mail-Verschlüsselung",mail_config_desc:"Unten finden Sie das Formular zum Konfigurieren des E-Mail-Treibers zum Senden von E-Mails über die App. Sie können auch Drittanbieter wie Sendgrid, SES usw. konfigurieren."},pdf:{title:"PDF-Einstellung",footer_text:"Fußzeile Text",pdf_layout:"PDF-Layout"},company_info:{company_info:"Firmeninfo",company_name:"Name des Unternehmens",company_logo:"Firmenlogo",section_description:"Informationen zu Ihrem Unternehmen, die auf Rechnungen, Angeboten und anderen von InvoiceShelf erstellten Dokumenten angezeigt werden.",phone:"Telefon",country:"Land",state:"Bundesland",city:"Stadt",address:"Adresse",zip:"PLZ",save:"Speichern",delete:"Löschen",updated_message:"Unternehmensinformationen wurden erfolgreich aktualisiert",delete_company:"Unternehmen löschen",delete_company_description:"Sobald Sie Ihr Unternehmen löschen, verlieren Sie alle damit verbundenen Daten und Dateien.",are_you_absolutely_sure:"Sind Sie wirklich sicher?",delete_company_modal_desc:"Diese Aktion kann nicht rückgängig gemacht werden. Dies wird {company} und alle damit verbundenen Daten dauerhaft löschen.",delete_company_modal_label:"Bitte geben Sie {company} zur Bestätigung ein"},custom_fields:{title:"Benutzerdefinierte Felder",section_description:"Passen Sie Ihre Rechnungen, Angebote und Zahlungsbelege mit Ihren eigenen Feldern an. Stellen Sie sicher, dass Sie die unten hinzugefügten Felder in den Adressformaten auf der Seite mit den Anpassungseinstellungen verwenden.",add_custom_field:"Benutzerdefiniertes Feld hinzufügen",edit_custom_field:"Benutzerdefiniertes Feld bearbeiten",field_name:"Feldname",label:"Bezeichnung",type:"Art",name:"Name",slug:"Kürzel",required:"Erforderlich",placeholder:"Platzhalter",help_text:"Hilfstext",default_value:"Standardwert",prefix:"Präfix",starting_number:"Startnummer",model:"Modell",help_text_description:"Geben Sie einen Text ein, damit Benutzer den Zweck dieses benutzerdefinierten Felds verstehen.",suffix:"Vorzeichen",yes:"Ja",no:"Nein",order:"Reihenfolge",custom_field_confirm_delete:"Sie können dieses benutzerdefinierte Feld nicht wiederherstellen",already_in_use:"Benutzerdefiniertes Feld wird bereits verwendet",deleted_message:"Benutzerdefiniertes Feld erfolgreich gelöscht",options:"Optionen",add_option:"Optionen hinzufügen",add_another_option:"Fügen Sie eine weitere Option hinzu",sort_in_alphabetical_order:"In alphabetischer Reihenfolge sortieren",add_options_in_bulk:"Fügen Sie Optionen in großen Mengen hinzu",use_predefined_options:"Verwenden Sie vordefinierte Optionen",select_custom_date:"Wählen Sie Benutzerdefiniertes Datum",select_relative_date:"Wählen Sie Relatives Datum",ticked_by_default:"Standardmäßig aktiviert",updated_message:"Benutzerdefiniertes Feld erfolgreich aktualisiert",added_message:"Benutzerdefiniertes Feld erfolgreich hinzugefügt",press_enter_to_add:"Eingabetaste drücken, um neue Option hinzuzufügen",model_in_use:"Das Modell kann für bereits verwendete Felder nicht aktualisiert werden.",type_in_use:"Der Typ von bereits verwendeten Feldern kann nicht aktualisiert werden."},customization:{customization:"Personalisierung",updated_message:"Unternehmensinformationen wurden erfolgreich aktualisiert",save:"Speichern",insert_fields:"Felder einfügen",learn_custom_format:"Erfahren Sie, wie Sie benutzerdefiniertes Format verwenden",add_new_component:"Neue Komponente hinzufügen",component:"Komponente",Parameter:"Parameter",series:"Nummernfolge",series_description:"Um ein statisches Präfix/Postfix wie 'INV' in Ihrem Unternehmen zu setzen. Es unterstützt eine Zeichenlänge von bis zu 4 Zeichen.",series_param_label:"Nummernfolge",delimiter:"Trennzeichen",delimiter_description:"Einzelnes Zeichen für die Verwendung zwischen zwei separaten Komponenten. Standardmäßig ist dies -",delimiter_param_label:"Trennzeichen",date_format:"Datumsformat",date_format_description:"Ein lokales Datums- und Zeitfeld, das einen Format-Parameter akzeptiert. Das Standardformat: 'Y' stellt das aktuelle Jahr dar.",date_format_param_label:"Format",sequence:"Fortlaufende Nummer",sequence_description:"Fortlaufende Nummernabfolge in Ihrem Unternehmen. Sie können die Länge des angegebenen Parameters angeben.",sequence_param_label:"Länge der fortlaufenden Nummer",customer_series:"Kundenspez. Nummernfolge",customer_series_description:"Ein anderes Präfix/Postfix für jeden Kunden festlegen.",customer_sequence:"Fortlaufende Kundennummer",customer_sequence_description:"Fortlaufende Nummernabfolge für jeden ihrer Kunden.",customer_sequence_param_label:"Länge der laufenden Nummer",random_sequence:"Zufällige Zeichenkette",random_sequence_description:"Zufällige alphanumerische Zeichenkette. Sie können die Länge als Parameter angeben.",random_sequence_param_label:"Länge der Zeichenkette",invoices:{title:"Rechnungen",invoice_number_format:"Rechnungsnummernformat",invoice_number_format_description:"Passen Sie an, wie Ihre Rechnungsnummer automatisch generiert wird, wenn Sie eine neue Rechnung erstellen.",preview_invoice_number:"Vorschau Rechnungsnummer",due_date:"Fälligkeitsdatum",due_date_description:"Legen Sie fest, wie das Fälligkeitsdatum automatisch gesetzt wird, wenn Sie eine Rechnung erstellen.",due_date_days:"Rechnung fällig nach Tagen",set_due_date_automatically:"Fälligkeitsdatum automatisch setzen",set_due_date_automatically_description:"Aktivieren Sie dies, wenn Sie das Fälligkeitsdatum automatisch setzen möchten, wenn Sie eine neue Rechnung erstellen.",default_formats:"Standardformate",default_formats_description:"Die unten angegebenen Formate werden verwendet, um die Felder bei der Erstellung einer Rechnung automatisch auszufüllen.",default_invoice_email_body:"Standard Rechnung E-Mail Inhalt",company_address_format:"Firmenadressformat",shipping_address_format:"Versandadressen Format",billing_address_format:"Rechnungsadressen Format",invoice_email_attachment:"Rechnungen als Anhänge verschicken",invoice_email_attachment_setting_description:'Aktivieren Sie dies, wenn Sie Rechnungen als E-Mail-Anhang versenden möchten. Bitte beachten Sie, dass die Schaltfläche "Rechnung anzeigen" in E-Mails dann nicht mehr angezeigt wird.',invoice_settings_updated:"Rechnungseinstellungen erfolgreich aktualisiert",retrospective_edits:"Rückwirkende Änderungen",allow:"Erlauben",disable_on_invoice_partial_paid:"Deaktivieren, nachdem Teilzahlung erfasst wurde",disable_on_invoice_paid:"Deaktivieren, nachdem vollständige Zahlung erfasst wurde",disable_on_invoice_sent:"Deaktivieren, nachdem Rechnung gesendet wurde",retrospective_edits_description:" Basierend auf den Gesetzen Ihres Landes oder Ihrer Präferenz, können Sie Benutzer daran hindern, fertige Rechnungen zu bearbeiten."},estimates:{title:"Angebote",estimate_number_format:"Angebotsnummernformat",estimate_number_format_description:"Passen Sie an, wie Ihre Angebotsnummer automatisch generiert wird, wenn Sie ein neues Angebot erstellen.",preview_estimate_number:"Vorschau Angebotsnummer",expiry_date:"Ablaufdatum",expiry_date_description:"Legen Sie fest, wie das Ablaufdatum automatisch gesetzt wird, wenn Sie ein Angebot erstellen.",expiry_date_days:"Angebot läuft ab nach Tagen",set_expiry_date_automatically:"Ablaufdatum automatisch setzen",set_expiry_date_automatically_description:"Aktivieren Sie dies, wenn Sie das Ablaufdatum automatisch setzen möchten sobald Sie ein neues Angebot erstellen.",default_formats:"Standardformate",default_formats_description:"Die unten angegebenen Formate werden verwendet, um die Felder bei der Erstellung eines Angebots automatisch auszufüllen.",default_estimate_email_body:"Angebot - E-Mail Text",company_address_format:"Firmenadresse Format",shipping_address_format:"Versandadressen Format",billing_address_format:"Rechnungsadressen Format",estimate_email_attachment:"Angebote als Anhänge verschicken",estimate_email_attachment_setting_description:'Aktivieren Sie dies, wenn Sie Angebote als E-Mail-Anhang versenden möchten. Bitte beachten Sie, dass die Schaltfläche "Angebot anzeigen" in E-Mails dann nicht mehr angezeigt wird.',estimate_settings_updated:"Angebotseinstellungen erfolgreich aktualisiert",convert_estimate_options:"Aktion nach Angebotsumwandlung",convert_estimate_description:"Legen Sie fest, was mit dem Angebot geschieht, nachdem es in eine Rechnung umgewandelt wurde.",no_action:"Keine Aktion",delete_estimate:"Angebot löschen",mark_estimate_as_accepted:"Angebot als angenommen markieren"},payments:{title:"Zahlungen",payment_number_format:"Zahlungsnummernformat",payment_number_format_description:"Passen Sie an, wie Ihre Zahlungsnummer automatisch generiert wird, wenn Sie eine neue Zahlung erstellen.",preview_payment_number:"Vorschau Zahlungsnummer",default_formats:"Standardformate",default_formats_description:"Die unten angegebenen Formate werden verwendet, um die Felder bei der Buchung einer Zahlung automatisch auszufüllen.",default_payment_email_body:"Zahlung - E-Mail Text",company_address_format:"Firmenadressformat",from_customer_address_format:"Rechnungsadressen Format",payment_email_attachment:"Zahlungen als Anhänge verschicken",payment_email_attachment_setting_description:'Aktivieren Sie dies, wenn Sie Zahlungen als E-Mail-Anhang versenden möchten. Bitte beachten Sie, dass die Schaltfläche "Zahlung anzeigen" in E-Mails dann nicht mehr angezeigt wird.',payment_settings_updated:"Zahlungseinstellung erfolgreich aktualisiert"},items:{title:"Artikel",units:"Einheiten",add_item_unit:"Artikeleinheit hinzufügen",edit_item_unit:"Elementeinheit bearbeiten",unit_name:"Einheitname",item_unit_added:"Artikeleinheit hinzugefügt",item_unit_updated:"Artikeleinheit aktualisiert",item_unit_confirm_delete:"Du kannst diese Artikeleinheit nicht wiederherstellen",already_in_use:"Diese Artikeleinheit ist bereits in Verwendung",deleted_message:"Artikeleinheit erfolgreich gelöscht"},notes:{title:"Notizen",description:"Sparen Sie Zeit, indem Sie Notizen erstellen und diese auf Ihren Rechnungen, Angeboten und Zahlungen wiederverwenden.",notes:"Hinweise",type:"Art",add_note:"Notiz hinzufügen",add_new_note:"Neue Notiz hinzufügen",name:"Name",edit_note:"Notiz bearbeiten",note_added:"Notiz erfolgreich hinzugefügt",note_updated:"Notiz erfolgreich aktualisiert",note_confirm_delete:"Dieser Hinweis wird unwiderruflich gelöscht",already_in_use:"Hinweis bereits in verwendet",deleted_message:"Notiz erfolgreich gelöscht"}},account_settings:{profile_picture:"Profil Bild",name:"Name",email:"E-Mail",password:"Passwort",confirm_password:"Kennwort Bestätigen",account_settings:"Konto-Einstellungen",save:"Speichern",section_description:"Sie können Ihren Namen, Ihre E-Mail-Adresse und Ihr Passwort mit dem folgenden Formular aktualisieren.",updated_message:"Kontoeinstellungen erfolgreich aktualisiert"},user_profile:{name:"Name",email:"E-Mail",password:"Passwort",confirm_password:"Kennwort bestätigen"},notification:{title:"Benachrichtigung",email:"Benachrichtigungen senden an",description:"Welche E-Mail-Benachrichtigungen möchten Sie erhalten wenn sich etwas ändert?",invoice_viewed:"Rechnung angezeigt",invoice_viewed_desc:"Wenn Ihr Kunde die gesendete Rechnung anzeigt bekommt.",estimate_viewed:"Angebot angesehen",estimate_viewed_desc:"Wenn Ihr Kunde das gesendete Angebot anzeigt bekommt.",save:"Speichern",email_save_message:"Email erfolgreich gespeichert",please_enter_email:"Bitte E-Mail eingeben"},roles:{title:"Rollen",description:"Rollen & Berechtigungen dieses Unternehmens verwalten",save:"Speichern",add_new_role:"Neue Rolle hinzufügen",role_name:"Name der Rolle",added_on:"Hinzugefügt am",add_role:"Rolle hinzufügen",edit_role:"Rolle bearbeiten",name:"Name",permission:"Berechtigung | Berechtigungen",select_all:"Alle auswählen",none:"Keine",confirm_delete:"Sie werden diese Rolle nicht wiederherstellen können",created_message:"Rolle erfolgreich erstellt",updated_message:"Rolle erfolgreich aktualisiert",deleted_message:"Rolle erfolgreich gelöscht",already_in_use:"Rolle wird bereits benutzt"},exchange_rate:{exchange_rate:"Wechselkurs",title:"Wechselkursprobleme korrigieren",description:"Bitte geben Sie den Wechselkurs aller unten genannten Währungen ein, um InvoiceShelf bei der korrekten Berechnung der Beträge in {currency} zu unterstützen.",drivers:"Treiber",new_driver:"Neuen Anbieter hinzufügen",edit_driver:"Anbieter bearbeiten",select_driver:"Treiber auswählen",update:"wähle Wechselkurs ",providers_description:"Konfigurieren Sie hier Ihre Wechselkursanbieter, um automatisch den aktuellen Wechselkurs für Transaktionen abzurufen.",key:"API-Schlüssel",name:"Name",driver:"Treiber",is_default:"STANDARD",currency:"Währungen",exchange_rate_confirm_delete:"Sie werden diesen Treiber nicht wiederherstellen können",created_message:"Artikel erfolgreich erstellt",updated_message:"Anbieter erfolgreich aktualisiert",deleted_message:"Anbieter erfolgreich gelöscht",error:" Aktive Treiber können nicht gelöscht werden",default_currency_error:"Diese Währung wird bereits in einem der aktiven Anbieter verwendet",exchange_help_text:"Wechselkurs eingeben um von {currency} nach {baseCurrency} zu konvertieren",currency_freak:"CurrencyFreaks",currency_layer:"Currency Layer",open_exchange_rate:"Open Exchange Rate",currency_converter:"Währungsumrechner",server:"Server",url:"URL",active:"Aktiv",currency_help_text:"Dieser Anbieter wird nur in oben ausgewählten Währungen verwendet",currency_in_used:"Die folgenden Währungen sind bereits bei einem anderen Anbieter aktiv. Bitte entfernen Sie diese Währungen aus der Auswahl, um diesen Anbieter erneut zu aktivieren."},tax_types:{title:"Steuersätze",add_tax:"Steuersätze hinzufügen",edit_tax:"Steuer bearbeiten",description:"Sie können Steuern nach Belieben hinzufügen oder entfernen. InvoiceShelf unterstützt Steuern auf einzelne Artikel sowie auf die Rechnung.",add_new_tax:"Neuen Steuersatz hinzufügen",tax_settings:"Einstellungen Steuersatz",tax_per_item:"Steuersatz pro Artikel",tax_name:"Name des Steuersatzes",compound_tax:"zusammengesetzte Steuer",percent:"Prozent",action:"Aktion",tax_setting_description:"Aktivieren Sie diese Option, wenn Sie den Steuersatz zu einzelnen Rechnungspositionen hinzufügen möchten. Standardmäßig wird der Steuersatz direkt zur Rechnung hinzugefügt.",created_message:"Steuersatz erfolgreich erstellt",updated_message:"Steuersatz erfolgreich aktualisiert",deleted_message:"Steuersatz erfolgreich gelöscht",confirm_delete:"Sie können diesen Steuersatz nicht wiederherstellen",already_in_use:"Steuersatz wird bereits verwendet"},payment_modes:{title:"Zahlungsarten",description:"Transaktionsmodi für Zahlungen",add_payment_mode:"Zahlungsart hinzufügen",edit_payment_mode:"Zahlungsart bearbeiten",mode_name:"Name",payment_mode_added:"Zahlungsart hinzugefügt",payment_mode_updated:"Zahlungsart aktualisiert",payment_mode_confirm_delete:"Sie werden diese Zahlungsart nicht wiederherstellen können",payments_attached:"This payment method is already attached to payments. Please delete the attached payments to proceed with deletion.",expenses_attached:"This payment method is already attached to expenses. Please delete the attached expenses to proceed with deletion.",deleted_message:"Zahlungsart erfolgreich gelöscht"},expense_category:{title:"Ausgabenkategorien",action:"Aktion",description:"Für das Hinzufügen von Ausgabeneinträgen sind Kategorien erforderlich. Sie können diese Kategorien nach Ihren Wünschen hinzufügen oder entfernen.",add_new_category:"Neue Kategorie hinzufügen",add_category:"Kategorie hinzufügen",edit_category:"Kategorie bearbeiten",category_name:"Kategorie Name",category_description:"Beschreibung",created_message:"Ausgabenkategorie erfolgreich erstellt",deleted_message:"Ausgabenkategorie erfolgreich gelöscht",updated_message:"Ausgabenkategorie erfolgreich aktualisiert",confirm_delete:"Sie können diese Ausgabenkategorie nicht wiederherstellen",already_in_use:"Kategorie wird bereits verwendet"},preferences:{currency:"Währung",default_language:"Standardsprache",time_zone:"Zeitzone",fiscal_year:"Geschäftsjahr",date_format:"Datum-Format",discount_setting:"Einstellung Rabatt",discount_per_item:"Rabatt pro Artikel ",discount_setting_description:"Aktivieren Sie diese Option, wenn Sie einzelnen Rechnungspositionen einen Rabatt hinzufügen möchten. Standardmäßig wird der Rabatt direkt zur Rechnung hinzugefügt.",expire_public_links:"Öffentliche Links automatisch ablaufen lassen",expire_setting_description:"Specify whether you would like to expire all the links sent by application to view invoices, estimates & payments, etc after a specified duration.",save:"Speichern",preference:"Präferenz | Präferenzen",general_settings:"Standardeinstellungen für das System.",updated_message:"Einstellungen erfolgreich aktualisiert",select_language:"Sprache auswählen",select_time_zone:"Zeitzone auswählen",select_date_format:"Wähle das Datumsformat",select_financial_year:"Geschäftsjahr auswählen",recurring_invoice_status:"Status der Serienrechnung",create_status:"Status erstellen",active:"Aktiv",on_hold:"Pausiert",update_status:"Status aktualisieren",completed:"Abgeschlossen",company_currency_unchangeable:"Die Währung des Unternehmens kann nicht geändert werden"},update_app:{title:"Applikation aktualisieren",description:"Sie können InvoiceShelf ganz einfach aktualisieren, indem Sie auf die Schaltfläche unten klicken, um nach einem neuen Update zu suchen.",check_update:"Nach Updates suchen",avail_update:"Neues Update verfügbar",next_version:"Nächste Version",requirements:"Voraussetzungen",update:"Jetzt aktualisieren",update_progress:"Update läuft ...",progress_text:"Es dauert nur ein paar Minuten. Bitte aktualisieren Sie den Bildschirm nicht und schließen Sie das Fenster nicht, bevor das Update abgeschlossen ist.",update_success:"App wurde aktualisiert! Bitte warten Sie, während Ihr Browserfenster automatisch neu geladen wird.",latest_message:"Kein Update verfügbar! Du bist auf der neuesten Version.",current_version:"Aktuelle Version",download_zip_file:"Laden Sie die ZIP-Datei herunter",unzipping_package:"Paket entpacken",copying_files:"Dateien kopieren",deleting_files:"Ungenutzte Dateien löschen",running_migrations:"Ausführen von Migrationen",finishing_update:"Update beenden",update_failed:"Update fehlgeschlagen",update_failed_text:"Es tut uns leid! Ihr Update ist am folgenden Schritt fehlgeschlagen: {step}",update_warning:"Alle Anwendungsdateien und Standardvorlagen werden überschrieben, wenn Sie die Anwendung mit diesem Hilfsprogramm aktualisieren. Bitte machen Sie vor dem Update ein Backup Ihrer Vorlagen & Datenbank."},backup:{title:"Sicherung | Sicherungen",description:"Die Sicherung ist eine ZIP-Datei, die alle Dateien der ausgewählten Pfade und eine Kopie der Datenbank enthält",new_backup:"Neues Backup",create_backup:"Datensicherung erstellen",select_backup_type:"Wählen Sie den Sicherungs-Typ",backup_confirm_delete:"Dieses Backup wird unwiderruflich gelöscht",path:"Pfad",new_disk:"Speicher hinzufügen",created_at:"erstellt am",size:"Größe",dropbox:"Dropbox",local:"Lokal",healthy:"intakt",amount_of_backups:"Menge an Sicherungen",newest_backups:"Neuste Sicherung",used_storage:"Verwendeter Speicher",select_disk:"Speicher auswählen",action:"Aktion",deleted_message:"Sicherung erfolgreich gelöscht",created_message:"Backup erfolgreich erstellt",invalid_disk_credentials:"Ungültige Anmeldeinformationen für ausgewählten Speicher"},disk:{title:"Dateispeicher | Dateispeicher",description:"Standardmäßig verwendet InvoiceShelf Ihre lokale Festplatte zum Speichern von Sicherungen, Avatar und anderen Bilddateien. Sie können mehr als einen Speicherort wie DigitalOcean, S3 und Dropbox nach Ihren Wünschen konfigurieren.",created_at:"erstellt am",dropbox:"Dropbox",name:"Name",driver:"Treiber",disk_type:"Art",disk_name:"Speicher Bezeichnung",new_disk:"Speicher hinzufügen",filesystem_driver:"Dateisystem-Treiber",local_driver:"Lokaler Treiber",local_root:"Lokaler Pfad",public_driver:"Öffentlicher Treiber",public_root:"Öffentlicher Pfad",public_url:"Öffentliche URL",public_visibility:"Öffentliche Sichtbarkeit",media_driver:"Medientreiber",media_root:"Medienpfad",aws_driver:"AWS-Treiber",aws_key:"AWS-Schlüssel",aws_secret:"AWS-Geheimnis",aws_region:"AWS-Region",aws_bucket:"AWS Bucket",aws_root:"AWS-Pfad",do_spaces_type:"Do Spaces-Typ",do_spaces_key:"Do Spaces Key",do_spaces_secret:"Do Spaces Secret",do_spaces_region:"Do Spaced Region",do_spaces_bucket:"Do Spaces Bucket",do_spaces_endpoint:"Do Spaces Endpoint",do_spaces_root:"Do Spaced Root",dropbox_type:"Dropbox Typ",dropbox_token:"Dropbox Token",dropbox_key:"Dropbox Schlüssel",dropbox_secret:"Dropbox Secret",dropbox_app:"Dropbox App",dropbox_root:"Dropbox Root",default_driver:"Standard-Treiber",is_default:"Standard",set_default_disk:"Als Standard festlegen",set_default_disk_confirm:"Dieser Speicherort wird als Standard gesetzt und alle neuen PDFs werden auf diesem gespeichert",success_set_default_disk:"Speicher wurde als Standard festgelegt",save_pdf_to_disk:"PDFs auf Festplatte speichern",disk_setting_description:" Aktivieren Sie dies, um eine Kopie von jeder Rechnung, jedem Angebot & jedem Zahlungsbeleg als PDF automatisch auf ihrem Standard-Speicher abzulegen. Wenn Sie diese Option aktivieren, verringert sich die Ladezeit beim Betrachten der PDFs.",select_disk:"Speicherort auswählen",disk_settings:"Speichermedienkonfiguration",confirm_delete:"Ihre existierenden Dateien und Ordner auf der angegebenen Festplatte werden nicht beeinflusst, aber Dieser Speicherort wird aus InvoiceShelf gelöscht",action:"Aktion",edit_file_disk:"Speicherort editieren",success_create:"Speicher erfolgreich hinzugefügt",success_update:"Speicher erfolgreich bearbeitet",error:"Hinzufügen des Speichers gescheitert",deleted_message:"Speicher erfolgreich gelöscht",disk_variables_save_successfully:"Speicher erfolgreich konfiguriert",disk_variables_save_error:"Konfiguration des Speicher gescheitert",invalid_disk_credentials:"Ungültige Anmeldeinformationen für ausgewählten Speicher"},taxations:{add_billing_address:"Rechnungsadresse eingeben",add_shipping_address:"Lieferadresse eingeben",add_company_address:"Firmenadresse eingeben",modal_description:"Die untenstehenden Informationen sind erforderlich, um die Steuer berücksichtigen zu können.",add_address:"Fügen Sie eine Adresse hinzu, um die Steuer abrufen zu können.",address_placeholder:"Beispiel: 123, meine Straße",city_placeholder:"Beispiel: Los Angeles",state_placeholder:"Beispiel: CA",zip_placeholder:"Beispiel: 90024",invalid_address:"Bitte geben Sie gültige Adressdaten an."}},SW={account_info:"Account-Informationen",account_info_desc:"Die folgenden Details werden zum Erstellen des Hauptadministratorkontos verwendet. Sie können die Details auch jederzeit nach dem Anmelden ändern.",name:"Name",email:"E-Mail",password:"Passwort",confirm_password:"Passwort bestätigen",save_cont:"Speichern und weiter",company_info:"Unternehmensinformationen",company_info_desc:"Diese Informationen werden auf Rechnungen angezeigt. Beachten Sie, dass Sie diese später auf der Einstellungsseite bearbeiten können.",company_name:"Firmenname",company_logo:"Firmenlogo",logo_preview:"Vorschau Logo",preferences:"Einstellungen",preferences_desc:"Standardeinstellungen für das System.",currency_set_alert:"Die Währung des Unternehmens kann später nicht mehr geändert werden.",country:"Land",state:"Bundesland",city:"Stadt",address:"Adresse",street:"Straße1 | Straße2",phone:"Telefon",zip_code:"Postleitzahl",go_back:"Zurück",currency:"Währung",language:"Sprache",time_zone:"Zeitzone",fiscal_year:"Geschäftsjahr",date_format:"Datumsformat",from_address:"Absender",username:"Benutzername",next:"Weiter",continue:"Weiter",skip:"Überspringen",database:{database:"URL der Seite & Datenbank",connection:"Datenbank Verbindung",host:"Datenbank Host",port:"Datenbank Port",password:"Datenbank Passwort",app_url:"App-URL",app_domain:"Domain der App",username:"Datenbank Benutzername",db_name:"Datenbank Name",db_path:"Datenbankpfad",desc:"Erstellen Sie eine Datenbank auf Ihrem Server und legen Sie die Anmeldeinformationen mithilfe des folgenden Formulars fest."},permissions:{permissions:"Berechtigungen",permission_confirm_title:"Sind Sie sicher, dass Sie fortfahren möchten?",permission_confirm_desc:"Prüfung der Berechtigung der Ordner fehlgeschlagen.",permission_desc:"Unten finden Sie eine Liste der Ordnerberechtigungen, die erforderlich sind, damit die App funktioniert. Wenn die Berechtigungsprüfung fehlschlägt, müssen Sie Ihre Ordnerberechtigungen aktualisieren."},verify_domain:{title:"Domain-Verifizierung",desc:"InvoiceShelf verwendet Session-basierte Authentifizierung, die aus Sicherheitsgründen eine Domain-Verifizierung erfordert. Bitte geben Sie die Domain ein, auf der Sie auf Ihre Webanwendung zugreifen werden.",app_domain:"Domain der App",verify_now:"Jetzt verifizieren",success:"Domain erfolgreich verifiziert.",failed:"Domainüberprüfung fehlgeschlagen. Bitte geben Sie einen gültigen Domainnamen ein.",verify_and_continue:"Verifizieren und fortfahren"},mail:{host:"E-Mail-Host",port:"E-Mail-Port",driver:"E-Mail-Treiber",secret:"Verschlüsselung",mailgun_secret:"Mailgun Verschlüsselung",mailgun_domain:"Domain",mailgun_endpoint:"Mailgun-Endpunkt",ses_secret:"SES Verschlüsselung",ses_key:"SES-Taste",password:"E-Mail-Passwort",username:"E-Mail-Benutzername",mail_config:"E-Mail-Konfiguration",from_name:"Von E-Mail-Absendername",from_mail:"Von E-Mail-Absenderadresse",encryption:"E-Mail-Verschlüsselung",mail_config_desc:"Unten finden Sie das Formular zum Konfigurieren des E-Mail-Treibers zum Senden von E-Mails über die App. Sie können auch Drittanbieter wie Sendgrid, SES usw. konfigurieren."},req:{system_req:"System Anforderungen",php_req_version:"Php (version {version} erforderlich)",check_req:"Anforderungen prüfen",system_req_desc:"InvoiceShelf hat einige Serveranforderungen. Stellen Sie sicher, dass Ihr Server die erforderliche PHP-Version und alle unten genannten Erweiterungen hat."},errors:{migrate_failed:"Migration ist Fehlgeschlagen",database_variables_save_error:"Konfiguration kann nicht in EN.env-Datei geschrieben werden. Bitte überprüfen Sie die Dateiberechtigungen.",mail_variables_save_error:"E-Mail-Konfiguration fehlgeschlagen.",connection_failed:"Datenbankverbindung fehlgeschlagen",database_should_be_empty:"Datenbank sollte leer sein"},success:{mail_variables_save_successfully:"E-Mail erfolgreich konfiguriert",database_variables_save_successfully:"Datenbank erfolgreich konfiguriert."}},zW={invalid_phone:"Ungültige Telefonnummer",invalid_url:"Ungültige URL (Bsp.: http://www.invoiceshelf.com)",invalid_domain_url:"Ungültige URL (Bsp.: invoiceshelf.com)",required:"Feld ist erforderlich",email_incorrect:"Ungültige E-Mail.",email_already_taken:"Die E-Mail ist bereits vergeben.",email_does_not_exist:"Benutzer mit der angegebenen E-Mail existiert nicht",item_unit_already_taken:"Die Artikeleinheit wurde bereits vergeben",payment_mode_already_taken:"Der Zahlungsmodus wurde bereits verwendet",send_reset_link:"Link zum Zurücksetzen senden",not_yet:"Noch erhalten? Erneut senden",password_min_length:"Password muß {count} Zeichen enthalten",name_min_length:"Name muss mindestens {count} Zeichen enthalten.",prefix_min_length:"Präfix muss mindestens {count} Buchstaben enthalten.",enter_valid_tax_rate:"Geben Sie einen gültige Steuersatz ein",numbers_only:"Nur Zahlen.",characters_only:"Nur Zeichen.",password_incorrect:"Passwörter müssen identisch sein",password_length:"Passwort muss {count} Zeichen lang sein.",qty_must_greater_than_zero:"Die Menge muss größer als 0 sein.",price_greater_than_zero:"Preis muss größer als 0 sein.",payment_greater_than_zero:"Die Zahlung muss größer als 0 sein.",payment_greater_than_due_amount:"Die eingegebene Zahlung ist mehr als der fällige Betrag dieser Rechnung.",quantity_maxlength:"Die Menge sollte nicht größer als 20 Ziffern sein.",price_maxlength:"Der Preis sollte nicht größer als 20 Ziffern sein.",price_minvalue:"Der Preis sollte größer als 0 sein.",amount_maxlength:"Der Betrag sollte nicht größer als 20 Ziffern sein.",amount_minvalue:"Betrag sollte größer als 0 sein.",discount_maxlength:"Rabatt sollte nicht größer als der maximale Rabatt sein",description_maxlength:"Die Beschreibung sollte nicht länger als 255 Zeichen sein.",subject_maxlength:"Der Betreff sollte nicht länger als 100 Zeichen sein.",message_maxlength:"Die Nachricht sollte nicht länger als 255 Zeichen sein.",maximum_options_error:"Maximal {max} Optionen ausgewählt. Entfernen Sie zuerst eine ausgewählte Option, um eine andere auszuwählen.",notes_maxlength:"Notizen sollten nicht länger als 255 Zeichen sein.",address_maxlength:"Die Adresse sollte nicht länger als 255 Zeichen sein.",ref_number_maxlength:"Ref Number sollte nicht länger als 255 Zeichen sein.",prefix_maxlength:"Das Präfix sollte nicht länger als 5 Zeichen sein.",something_went_wrong:"Da ist etwas schief gelaufen",number_length_minvalue:"Nummernlänge sollte größer als 0 sein",at_least_one_ability:"Bitte wählen Sie mindestens eine Berechtigung aus.",valid_driver_key:"Bitte geben Sie einen gültigen {driver} Schlüssel ein.",valid_exchange_rate:"Bitte geben Sie einen gültigen Wechselkurs ein.",company_name_not_same:"Name des Unternehmens muss mit dem angegebenen Namen übereinstimmen."},PW={starter_plan:"Diese Funktion ist erst ab dem Starterplan verfügbar!",invalid_provider_key:"Bitte geben Sie einen gültigen API-Schlüssel für den Anbieter ein.",estimate_number_used:"Die Angebotsnummer ist bereits vergeben.",invoice_number_used:"Die Rechnungsnummer ist bereits vergeben.",payment_attached:"Dieser Rechnung ist bereits eine Zahlung zugewiesen. Bitte zuerst die zugewiesenen Zahlungen löschen, um mit der Entfernung fortzufahren.",payment_number_used:"Die Zahlungsnummer ist bereits vergeben.",name_already_taken:"Der Name ist bereits vergeben.",receipt_does_not_exist:"Beleg existiert nicht.",customer_cannot_be_changed_after_payment_is_added:"Kunde kann nach dem Hinzufügen der Zahlung nicht geändert werden",invalid_credentials:"Ungültige Anmeldeinformationen.",not_allowed:"Nicht erlaubt",login_invalid_credentials:"Diese Anmeldeinformationen stimmen nicht mit unseren Aufzeichnungen überein.",enter_valid_cron_format:"Bitte geben Sie ein gültiges Cron-Format ein",email_could_not_be_sent:"Die E-Mail konnte nicht an diese Adresse gesendet werden.",invalid_address:"Bitte geben Sie eine gültige Adresse ein.",invalid_key:"Bitte geben Sie einen gültigen Schlüssel ein.",invalid_state:"Bitte geben Sie ein gültiges Bundesland ein.",invalid_city:"Bitte geben Sie eine gültige Stadt an.",invalid_postal_code:"Bitte geben Sie eine gültige PLZ an.",invalid_format:"Bitte geben Sie ein gültiges Abfrageformat ein.",api_error:"Der Server antwortet nicht.",feature_not_enabled:"Funktion nicht aktiviert.",request_limit_met:"Api Anfragelimit überschritten.",address_incomplete:"Unvollständige Adresse"},EW="Angebot",AW="Angebotsnummer",CW="Angebotsdatum",jW="Gültig bis",TW="Rechnung",IW="Rechnungsnummer",NW="Rechnungsdatum",FW="Fälligkeitsdatum",MW="Hinweise",RW="Artikel",OW="Menge",$W="Preis",LW="Rabatt",BW="Summe",UW="Zwischensumme",VW="Gesamt",qW="Zahlung",HW="Zahlungsbeleg",WW="Zahlungsdatum",KW="Zahlungsnummer",YW="Zahlungsart",ZW="Betrag erhalten",GW="Ausgaben Bericht",QW="Gesamtausgaben",JW="Gewinn & Verlust Bericht",XW="Kundenverkaufs Bericht",eK="Artikelverkaufs Bericht",tK="Steuer Bericht",aK="Einkommen",nK="Nettogewinn",iK="Umsatzbericht: Nach Kunde",oK="GESAMTUMSATZ",rK="Umsatzbericht: Nach Artikel",sK="Umsatzsteuer BERICHT",lK="Gesamte Umsatzsteuer",cK="Steuersätze",dK="Ausgaben",uK="Rechnungsanschrift",_K="Lieferanschrift",mK="Erhalten von:",pK="Steuer",fK={navigation:rW,general:sW,dashboard:lW,tax_types:cW,global_search:dW,company_switcher:uW,dateRange:_W,customers:mW,items:pW,estimates:fW,invoices:hW,recurring_invoices:gW,payments:vW,expenses:yW,login:bW,modules:kW,users:wW,reports:xW,settings:DW,wizard:SW,validation:zW,errors:PW,pdf_estimate_label:EW,pdf_estimate_number:AW,pdf_estimate_date:CW,pdf_estimate_expire_date:jW,pdf_invoice_label:TW,pdf_invoice_number:IW,pdf_invoice_date:NW,pdf_invoice_due_date:FW,pdf_notes:MW,pdf_items_label:RW,pdf_quantity_label:OW,pdf_price_label:$W,pdf_discount_label:LW,pdf_amount_label:BW,pdf_subtotal:UW,pdf_total:VW,pdf_payment_label:qW,pdf_payment_receipt_label:HW,pdf_payment_date:WW,pdf_payment_number:KW,pdf_payment_mode:YW,pdf_payment_amount_received_label:ZW,pdf_expense_report_label:GW,pdf_total_expenses_label:QW,pdf_profit_loss_label:JW,pdf_sales_customers_label:XW,pdf_sales_items_label:eK,pdf_tax_summery_label:tK,pdf_income_label:aK,pdf_net_profit_label:nK,pdf_customer_sales_report:iK,pdf_total_sales_label:oK,pdf_item_sales_label:rK,pdf_tax_report_label:sK,pdf_total_tax_label:lK,pdf_tax_types_label:cK,pdf_expenses_label:dK,pdf_bill_to:uK,pdf_ship_to:_K,pdf_received_from:mK,pdf_tax_label:pK},hK={dashboard:"Dashboard",customers:"Customers",items:"Items",invoices:"Invoices","recurring-invoices":"Recurring Invoices",expenses:"Expenses",estimates:"Estimates",payments:"Payments",reports:"Reports",settings:"Settings",logout:"Logout",users:"Users",modules:"Modules"},gK={add_company:"Add Company",view_pdf:"View PDF",copy_pdf_url:"Copy PDF Url",download_pdf:"Download PDF",save:"Save",create:"Create",cancel:"Cancel",update:"Update",deselect:"Deselect",download:"Download",from_date:"From Date",to_date:"To Date",from:"From",to:"To",ok:"Ok",yes:"Yes",no:"No",sort_by:"Sort By",ascending:"Ascending",descending:"Descending",subject:"Subject",body:"Body",message:"Message",send:"Send",preview:"Preview",go_back:"Go Back",back_to_login:"Back to Login?",home:"Home",filter:"Filter",delete:"Delete",edit:"Edit",view:"View",add_new_item:"Add New Item",clear_all:"Clear All",showing:"Showing",of:"of",actions:"Actions",subtotal:"SUBTOTAL",discount:"DISCOUNT",fixed:"Fixed",percentage:"Percentage",tax:"TAX",total_amount:"TOTAL AMOUNT",bill_to:"Bill to",ship_to:"Ship to",due:"Due",draft:"Draft",sent:"Sent",all:"All",select_all:"Select All",select_template:"Select Template",choose_file:"Click here to choose a file",choose_template:"Choose a template",choose:"Choose",remove:"Remove",select_a_status:"Select a status",select_a_tax:"Select a tax",search:"Search",are_you_sure:"Are you sure?",list_is_empty:"List is empty.",no_tax_found:"No tax found!",four_zero_four:"404",you_got_lost:"Whoops! You got Lost!",go_home:"Go Home",test_mail_conf:"Test Mail Configuration",send_mail_successfully:"Mail sent successfully",setting_updated:"Setting updated successfully",select_state:"Select state",select_country:"Select Country",select_city:"Select City",street_1:"Street 1",street_2:"Street 2",action_failed:"Action Failed",retry:"Retry",choose_note:"Choose Note",no_note_found:"No Note Found",insert_note:"Insert Note",copied_pdf_url_clipboard:"Copied PDF url to clipboard!",copied_url_clipboard:"Copied url to clipboard!",docs:"Docs",do_you_wish_to_continue:"Do you wish to continue?",note:"Note",pay_invoice:"Pay Invoice",login_successfully:"Logged in successfully!",logged_out_successfully:"Logged out successfully",mark_as_default:"Mark as default"},vK={select_year:"Select year",cards:{due_amount:"Amount Due",customers:"Customers",invoices:"Invoices",estimates:"Estimates",payments:"Payments"},chart_info:{total_sales:"Sales",total_receipts:"Receipts",total_expense:"Expenses",net_income:"Net Income",year:"Select year"},monthly_chart:{title:"Sales & Expenses"},recent_invoices_card:{title:"Due Invoices",due_on:"Due On",customer:"Customer",amount_due:"Amount Due",actions:"Actions",view_all:"View All"},recent_estimate_card:{title:"Recent Estimates",date:"Date",customer:"Customer",amount_due:"Amount Due",actions:"Actions",view_all:"View All"}},yK={name:"Name",description:"Description",percent:"Percent",compound_tax:"Compound Tax"},bK={search:"Search...",customers:"Customers",users:"Users",no_results_found:"No Results Found"},kK={label:"SWITCH COMPANY",no_results_found:"No Results Found",add_new_company:"Add new company",new_company:"New company",created_message:"Company created successfully"},wK={today:"Today",this_week:"This Week",this_month:"This Month",this_quarter:"This Quarter",this_year:"This Year",previous_week:"Previous Week",previous_month:"Previous Month",previous_quarter:"Previous Quarter",previous_year:"Previous Year",custom:"Custom"},xK={title:"Customers",prefix:"Prefix",add_customer:"Add Customer",contacts_list:"Customer List",name:"Name",mail:"Mail | Mails",statement:"Statement",display_name:"Display Name",primary_contact_name:"Primary Contact Name",contact_name:"Contact Name",amount_due:"Amount Due",email:"Email",address:"Address",phone:"Phone",website:"Website",overview:"Overview",invoice_prefix:"Invoice Prefix",estimate_prefix:"Estimate Prefix",payment_prefix:"Payment Prefix",enable_portal:"Enable Portal",country:"Country",state:"State",city:"City",zip_code:"Zip Code",added_on:"Added On",action:"Action",password:"Password",confirm_password:"Confirm Password",street_number:"Street Number",primary_currency:"Primary Currency",description:"Description",add_new_customer:"Add New Customer",save_customer:"Save Customer",update_customer:"Update Customer",customer:"Customer | Customers",new_customer:"New Customer",edit_customer:"Edit Customer",basic_info:"Basic Info",portal_access:"Portal Access",portal_access_text:"Would you like to allow this customer to login to the Customer Portal?",portal_access_url:"Customer Portal Login URL",portal_access_url_help:"Please copy & forward the above given URL to your customer for providing access.",billing_address:"Billing Address",shipping_address:"Shipping Address",copy_billing_address:"Copy from Billing",no_customers:"No customers yet!",no_customers_found:"No customers found!",no_contact:"No contact",no_contact_name:"No contact name",list_of_customers:"This section will contain the list of customers.",primary_display_name:"Primary Display Name",select_currency:"Select currency",select_a_customer:"Select a customer",type_or_click:"Type or click to select",new_transaction:"New Transaction",no_matching_customers:"There are no matching customers!",phone_number:"Phone Number",create_date:"Create Date",confirm_delete:"You will not be able to recover this customer and all the related Invoices, Estimates and Payments. | You will not be able to recover these customers and all the related Invoices, Estimates and Payments.",created_message:"Customer created successfully",updated_message:"Customer updated successfully",address_updated_message:"Address Information Updated succesfully",deleted_message:"Customer deleted successfully | Customers deleted successfully",edit_currency_not_allowed:"Cannot change currency once transactions created."},DK={title:"Items",items_list:"Items List",name:"Name",unit:"Unit",description:"Description",added_on:"Added On",price:"Price",date_of_creation:"Date Of Creation",not_selected:"No item selected",action:"Action",add_item:"Add Item",save_item:"Save Item",update_item:"Update Item",item:"Item | Items",add_new_item:"Add New Item",new_item:"New Item",edit_item:"Edit Item",no_items:"No items yet!",list_of_items:"This section will contain the list of items.",select_a_unit:"select unit",taxes:"Taxes",item_attached_message:"Cannot delete an item which is already in use",confirm_delete:"You will not be able to recover this Item | You will not be able to recover these Items",created_message:"Item created successfully",updated_message:"Item updated successfully",deleted_message:"Item deleted successfully | Items deleted successfully"},SK={title:"Estimates",accept_estimate:"Accept Estimate",reject_estimate:"Reject Estimate",estimate:"Estimate | Estimates",estimates_list:"Estimates List",days:"{days} Days",months:"{months} Month",years:"{years} Year",all:"All",paid:"Paid",unpaid:"Unpaid",customer:"CUSTOMER",ref_no:"REF NO.",number:"NUMBER",amount_due:"AMOUNT DUE",partially_paid:"Partially Paid",total:"Total",discount:"Discount",sub_total:"Sub Total",estimate_number:"Estimate Number",ref_number:"Ref Number",contact:"Contact",add_item:"Add an Item",date:"Date",due_date:"Due Date",expiry_date:"Expiry Date",status:"Status",add_tax:"Add Tax",amount:"Amount",action:"Action",notes:"Notes",tax:"Tax",estimate_template:"Template",convert_to_invoice:"Convert to Invoice",mark_as_sent:"Mark as Sent",send_estimate:"Send Estimate",resend_estimate:"Resend Estimate",record_payment:"Record Payment",add_estimate:"Add Estimate",save_estimate:"Save Estimate",confirm_conversion:"This estimate will be used to create a new Invoice.",conversion_message:"Invoice created successful",confirm_send_estimate:"This estimate will be sent via email to the customer",confirm_mark_as_sent:"This estimate will be marked as sent",confirm_mark_as_accepted:"This estimate will be marked as Accepted",confirm_mark_as_rejected:"This estimate will be marked as Rejected",no_matching_estimates:"There are no matching estimates!",mark_as_sent_successfully:"Estimate marked as sent successfully",send_estimate_successfully:"Estimate sent successfully",errors:{required:"Field is required"},accepted:"Accepted",rejected:"Rejected",expired:"Expired",sent:"Sent",draft:"Draft",viewed:"Viewed",declined:"Declined",new_estimate:"New Estimate",add_new_estimate:"Add New Estimate",update_Estimate:"Update Estimate",edit_estimate:"Edit Estimate",items:"items",Estimate:"Estimate | Estimates",add_new_tax:"Add New Tax",no_estimates:"No estimates yet!",list_of_estimates:"This section will contain the list of estimates.",mark_as_rejected:"Mark as rejected",mark_as_accepted:"Mark as accepted",marked_as_accepted_message:"Estimate marked as accepted",marked_as_rejected_message:"Estimate marked as rejected",confirm_delete:"You will not be able to recover this Estimate | You will not be able to recover these Estimates",created_message:"Estimate created successfully",updated_message:"Estimate updated successfully",deleted_message:"Estimate deleted successfully | Estimates deleted successfully",something_went_wrong:"something went wrong",item:{title:"Item Title",description:"Description",quantity:"Quantity",price:"Price",discount:"Discount",total:"Total",total_discount:"Total Discount",sub_total:"Sub Total",tax:"Tax",amount:"Amount",select_an_item:"Type or click to select an item",type_item_description:"Type Item Description (optional)"},mark_as_default_estimate_template_description:"If enabled, the selected template will be automatically selected for new estimates."},zK={title:"Invoices",download:"Download",pay_invoice:"Pay Invoice",invoices_list:"Invoices List",invoice_information:"Invoice Information",days:"{days} Days",months:"{months} Month",years:"{years} Year",all:"All",paid:"Paid",unpaid:"Unpaid",viewed:"Viewed",overdue:"Overdue",completed:"Completed",customer:"CUSTOMER",paid_status:"PAID STATUS",ref_no:"REF NO.",number:"NUMBER",amount_due:"AMOUNT DUE",partially_paid:"Partially Paid",total:"Total",discount:"Discount",sub_total:"Sub Total",invoice:"Invoice | Invoices",invoice_number:"Invoice Number",ref_number:"Ref Number",contact:"Contact",add_item:"Add an Item",date:"Date",due_date:"Due Date",status:"Status",add_tax:"Add Tax",amount:"Amount",action:"Action",notes:"Notes",view:"View",send_invoice:"Send Invoice",resend_invoice:"Resend Invoice",invoice_template:"Invoice Template",conversion_message:"Invoice cloned successful",template:"Select Template",mark_as_sent:"Mark as sent",confirm_send_invoice:"This invoice will be sent via email to the customer",invoice_mark_as_sent:"This invoice will be marked as sent",confirm_mark_as_accepted:"This invoice will be marked as Accepted",confirm_mark_as_rejected:"This invoice will be marked as Rejected",confirm_send:"This invoice will be sent via email to the customer",invoice_date:"Invoice Date",record_payment:"Record Payment",add_new_invoice:"Add New Invoice",update_expense:"Update Expense",edit_invoice:"Edit Invoice",new_invoice:"New Invoice",save_invoice:"Save Invoice",update_invoice:"Update Invoice",add_new_tax:"Add New Tax",no_invoices:"No Invoices yet!",mark_as_rejected:"Mark as rejected",mark_as_accepted:"Mark as accepted",list_of_invoices:"This section will contain the list of invoices.",select_invoice:"Select Invoice",no_matching_invoices:"There are no matching invoices!",mark_as_sent_successfully:"Invoice marked as sent successfully",invoice_sent_successfully:"Invoice sent successfully",cloned_successfully:"Invoice cloned successfully",clone_invoice:"Clone Invoice",confirm_clone:"This invoice will be cloned into a new Invoice",item:{title:"Item Title",description:"Description",quantity:"Quantity",price:"Price",discount:"Discount",total:"Total",total_discount:"Total Discount",sub_total:"Sub Total",tax:"Tax",amount:"Amount",select_an_item:"Type or click to select an item",type_item_description:"Type Item Description (optional)"},payment_attached_message:"One of the selected invoices already have a payment attached to it. Make sure to delete the attached payments first in order to go ahead with the removal",confirm_delete:"You will not be able to recover this Invoice | You will not be able to recover these Invoices",created_message:"Invoice created successfully",updated_message:"Invoice updated successfully",deleted_message:"Invoice deleted successfully | Invoices deleted successfully",marked_as_sent_message:"Invoice marked as sent successfully",something_went_wrong:"something went wrong",invalid_due_amount_message:"Total Invoice amount cannot be less than total paid amount for this Invoice. Please update the invoice or delete the associated payments to continue.",mark_as_default_invoice_template_description:"If enabled, the selected template will be automatically selected for new invoices."},PK={title:"Recurring Invoices",invoices_list:"Recurring Invoices List",days:"{days} Days",months:"{months} Month",years:"{years} Year",all:"All",paid:"Paid",unpaid:"Unpaid",viewed:"Viewed",overdue:"Overdue",active:"Active",completed:"Completed",customer:"CUSTOMER",paid_status:"PAID STATUS",ref_no:"REF NO.",number:"NUMBER",amount_due:"AMOUNT DUE",partially_paid:"Partially Paid",total:"Total",discount:"Discount",sub_total:"Sub Total",invoice:"Recurring Invoice | Recurring Invoices",invoice_number:"Recurring Invoice Number",next_invoice_date:"Next Invoice Date",ref_number:"Ref Number",contact:"Contact",add_item:"Add an Item",date:"Date",limit_by:"Limit by",limit_date:"Limit Date",limit_count:"Limit Count",count:"Count",status:"Status",select_a_status:"Select a status",working:"Working",on_hold:"On Hold",complete:"Completed",add_tax:"Add Tax",amount:"Amount",action:"Action",notes:"Notes",view:"View",basic_info:"Basic Info",send_invoice:"Send Recurring Invoice",auto_send:"Auto Send",resend_invoice:"Resend Recurring Invoice",invoice_template:"Recurring Invoice Template",conversion_message:"Recurring Invoice cloned successful",template:"Template",mark_as_sent:"Mark as sent",confirm_send_invoice:"This recurring invoice will be sent via email to the customer",invoice_mark_as_sent:"This recurring invoice will be marked as sent",confirm_send:"This recurring invoice will be sent via email to the customer",starts_at:"Start Date",due_date:"Invoice Due Date",record_payment:"Record Payment",add_new_invoice:"Add New Recurring Invoice",update_expense:"Update Expense",edit_invoice:"Edit Recurring Invoice",new_invoice:"New Recurring Invoice",send_automatically:"Send Automatically",send_automatically_desc:"Enable this, if you would like to send the invoice automatically to the customer when its created.",save_invoice:"Save Recurring Invoice",update_invoice:"Update Recurring Invoice",add_new_tax:"Add New Tax",no_invoices:"No Recurring Invoices yet!",mark_as_rejected:"Mark as rejected",mark_as_accepted:"Mark as accepted",list_of_invoices:"This section will contain the list of recurring invoices.",select_invoice:"Select Invoice",no_matching_invoices:"There are no matching recurring invoices!",mark_as_sent_successfully:"Recurring Invoice marked as sent successfully",invoice_sent_successfully:"Recurring Invoice sent successfully",cloned_successfully:"Recurring Invoice cloned successfully",clone_invoice:"Clone Recurring Invoice",confirm_clone:"This recurring invoice will be cloned into a new Recurring Invoice",add_customer_email:"Please add an email address for this customer to send invoices automatically.",item:{title:"Item Title",description:"Description",quantity:"Quantity",price:"Price",discount:"Discount",total:"Total",total_discount:"Total Discount",sub_total:"Sub Total",tax:"Tax",amount:"Amount",select_an_item:"Type or click to select an item",type_item_description:"Type Item Description (optional)"},frequency:{title:"Frequency",select_frequency:"Select Frequency",minute:"Minute",hour:"Hour",day_month:"Day of month",month:"Month",day_week:"Day of week"},confirm_delete:"You will not be able to recover this Invoice | You will not be able to recover these Invoices",created_message:"Recurring Invoice created successfully",updated_message:"Recurring Invoice updated successfully",deleted_message:"Recurring Invoice deleted successfully | Recurring Invoices deleted successfully",marked_as_sent_message:"Recurring Invoice marked as sent successfully",user_email_does_not_exist:"User email does not exist",something_went_wrong:"something went wrong",invalid_due_amount_message:"Total Recurring Invoice amount cannot be less than total paid amount for this Recurring Invoice. Please update the invoice or delete the associated payments to continue."},EK={title:"Payments",payments_list:"Payments List",record_payment:"Record Payment",customer:"Customer",date:"Date",amount:"Amount",action:"Action",payment_number:"Payment Number",payment_mode:"Payment Mode",invoice:"Invoice",note:"Note",add_payment:"Add Payment",new_payment:"New Payment",edit_payment:"Edit Payment",view_payment:"View Payment",add_new_payment:"Add New Payment",send_payment_receipt:"Send Payment Receipt",send_payment:"Send Payment",save_payment:"Save Payment",update_payment:"Update Payment",payment:"Payment | Payments",no_payments:"No payments yet!",not_selected:"Not selected",no_invoice:"No invoice",no_matching_payments:"There are no matching payments!",list_of_payments:"This section will contain the list of payments.",select_payment_mode:"Select payment mode",confirm_mark_as_sent:"This estimate will be marked as sent",confirm_send_payment:"This payment will be sent via email to the customer",send_payment_successfully:"Payment sent successfully",something_went_wrong:"something went wrong",confirm_delete:"You will not be able to recover this Payment | You will not be able to recover these Payments",created_message:"Payment created successfully",updated_message:"Payment updated successfully",deleted_message:"Payment deleted successfully | Payments deleted successfully",invalid_amount_message:"Payment amount is invalid"},AK={title:"Expenses",expenses_list:"Expenses List",select_a_customer:"Select a customer",expense_title:"Title",customer:"Customer",currency:"Currency",contact:"Contact",category:"Category",from_date:"From Date",to_date:"To Date",expense_date:"Date",description:"Description",receipt:"Receipt",amount:"Amount",action:"Action",not_selected:"Not selected",note:"Note",category_id:"Category Id",date:"Date",add_expense:"Add Expense",add_new_expense:"Add New Expense",save_expense:"Save Expense",update_expense:"Update Expense",download_receipt:"Download Receipt",edit_expense:"Edit Expense",new_expense:"New Expense",expense:"Expense | Expenses",no_expenses:"No expenses yet!",list_of_expenses:"This section will contain the list of expenses.",confirm_delete:"You will not be able to recover this Expense | You will not be able to recover these Expenses",created_message:"Expense created successfully",updated_message:"Expense updated successfully",deleted_message:"Expense deleted successfully | Expenses deleted successfully",categories:{categories_list:"Categories List",title:"Title",name:"Name",description:"Description",amount:"Amount",actions:"Actions",add_category:"Add Category",new_category:"New Category",category:"Category | Categories",select_a_category:"Select a category"}},CK={email:"Email",password:"Password",forgot_password:"Forgot Password?",or_signIn_with:"or Sign in with",login:"Login",register:"Register",reset_password:"Reset Password",password_reset_successfully:"Password Reset Successfully",enter_email:"Enter email",enter_password:"Enter Password",retype_password:"Retype Password"},jK={buy_now:"Buy Now",install:"Install",price:"Price",download_zip_file:"Download ZIP file",unzipping_package:"Unzipping Package",copying_files:"Copying Files",deleting_files:"Deleting Unused files",completing_installation:"Completing Installation",update_failed:"Update Failed",install_success:"Module has been installed successfully!",customer_reviews:"Reviews",license:"License",faq:"FAQ",monthly:"Monthly",yearly:"Yearly",updated:"Updated",version:"Version",disable:"Disable",module_disabled:"Module Disabled",enable:"Enable",module_enabled:"Module Enabled",update_to:"Update To",module_updated:"Module Updated Successfully!",title:"Modules",module:"Module | Modules",api_token:"API token",invalid_api_token:"Invalid API Token.",other_modules:"Other Modules",view_all:"View All",no_reviews_found:"There are no reviews for this module yet!",module_not_purchased:"Module Not Purchased",module_not_found:"Module Not Found",version_not_supported:"This module version doesn't support the current version of InvoiceShelf",last_updated:"Last Updated On",connect_installation:"Connect your installation",api_token_description:"Login to {url} and connect this installation by entering the API Token. Your purchased modules will show up here after the connection is established.",view_module:"View Module",update_available:"Update Available",purchased:"Purchased",installed:"Installed",no_modules_installed:"No Modules Installed Yet!",disable_warning:"All the settings for this particular will be reverted.",what_you_get:"What you get"},TK={title:"Users",users_list:"Users List",name:"Name",description:"Description",added_on:"Added On",date_of_creation:"Date Of Creation",action:"Action",add_user:"Add User",save_user:"Save User",update_user:"Update User",user:"User | Users",add_new_user:"Add New User",new_user:"New User",edit_user:"Edit User",no_users:"No users yet!",list_of_users:"This section will contain the list of users.",email:"Email",phone:"Phone",password:"Password",user_attached_message:"Cannot delete an item which is already in use",confirm_delete:"You will not be able to recover this User | You will not be able to recover these Users",created_message:"User created successfully",updated_message:"User updated successfully",deleted_message:"User deleted successfully | Users deleted successfully",select_company_role:"Select Role for {company}",companies:"Companies"},IK={title:"Report",from_date:"From Date",to_date:"To Date",status:"Status",paid:"Paid",unpaid:"Unpaid",download_pdf:"Download PDF",view_pdf:"View PDF",update_report:"Update Report",report:"Report | Reports",profit_loss:{profit_loss:"Profit & Loss",to_date:"To Date",from_date:"From Date",date_range:"Select Date Range"},sales:{sales:"Sales",date_range:"Select Date Range",to_date:"To Date",from_date:"From Date",report_type:"Report Type"},taxes:{taxes:"Taxes",to_date:"To Date",from_date:"From Date",date_range:"Select Date Range"},errors:{required:"Field is required"},invoices:{invoice:"Invoice",invoice_date:"Invoice Date",due_date:"Due Date",amount:"Amount",contact_name:"Contact Name",status:"Status"},estimates:{estimate:"Estimate",estimate_date:"Estimate Date",due_date:"Due Date",estimate_number:"Estimate Number",ref_number:"Ref Number",amount:"Amount",contact_name:"Contact Name",status:"Status"},expenses:{expenses:"Expenses",category:"Category",date:"Date",amount:"Amount",to_date:"To Date",from_date:"From Date",date_range:"Select Date Range"}},NK={menu_title:{account_settings:"Account Settings",company_information:"Company Information",customization:"Customization",preferences:"Preferences",notifications:"Notifications",tax_types:"Tax Types",expense_category:"Expense Categories",update_app:"Update App",backup:"Backup",file_disk:"File Disk",custom_fields:"Custom Fields",payment_modes:"Payment Modes",notes:"Notes",exchange_rate:"Exchange Rate",address_information:"Address Information"},address_information:{section_description:" You can update Your Address information using form below."},title:"Settings",setting:"Settings | Settings",general:"General",language:"Language",primary_currency:"Primary Currency",timezone:"Time Zone",date_format:"Date Format",currencies:{title:"Currencies",currency:"Currency | Currencies",currencies_list:"Currencies List",select_currency:"Select Currency",name:"Name",code:"Code",symbol:"Symbol",precision:"Precision",thousand_separator:"Thousand Separator",decimal_separator:"Decimal Separator",position:"Position",position_of_symbol:"Position Of Symbol",right:"Right",left:"Left",action:"Action",add_currency:"Add Currency"},mail:{host:"Mail Host",port:"Mail Port",driver:"Mail Driver",secret:"Secret",mailgun_secret:"Mailgun Secret",mailgun_domain:"Domain",mailgun_endpoint:"Mailgun Endpoint",ses_secret:"SES Secret",ses_key:"SES Key",password:"Mail Password",username:"Mail Username",mail_config:"Mail Configuration",from_name:"From Mail Name",from_mail:"From Mail Address",encryption:"Mail Encryption",mail_config_desc:"Below is the form for Configuring Email driver for sending emails from the app. You can also configure third party providers like Sendgrid, SES etc."},pdf:{title:"PDF Setting",footer_text:"Footer Text",pdf_layout:"PDF Layout"},company_info:{company_info:"Company info",company_name:"Company Name",company_logo:"Company Logo",section_description:"Information about your company that will be displayed on invoices, estimates and other documents created by InvoiceShelf.",phone:"Phone",country:"Country",state:"State",city:"City",address:"Address",zip:"Zip",save:"Save",delete:"Delete",updated_message:"Company information updated successfully",delete_company:"Delete Company",delete_company_description:"Once you delete your company, you will lose all the data and files associated with it permanently.",are_you_absolutely_sure:"Are you absolutely sure?",delete_company_modal_desc:"This action cannot be undone. This will permanently delete {company} and all of its associated data.",delete_company_modal_label:"Please type {company} to confirm"},custom_fields:{title:"Custom Fields",section_description:"Customize your Invoices, Estimates & Payment Receipts with your own fields. Make sure to use the below added fields on the address formats on Customization settings page.",add_custom_field:"Add Custom Field",edit_custom_field:"Edit Custom Field",field_name:"Field Name",label:"Label",type:"Type",name:"Name",slug:"Slug",required:"Required",placeholder:"Placeholder",help_text:"Help Text",default_value:"Default Value",prefix:"Prefix",starting_number:"Starting Number",model:"Model",help_text_description:"Enter some text to help users understand the purpose of this custom field.",suffix:"Suffix",yes:"Yes",no:"No",order:"Order",custom_field_confirm_delete:"You will not be able to recover this Custom Field",already_in_use:"Custom Field is already in use",deleted_message:"Custom Field deleted successfully",options:"options",add_option:"Add Options",add_another_option:"Add another option",sort_in_alphabetical_order:"Sort in Alphabetical Order",add_options_in_bulk:"Add options in bulk",use_predefined_options:"Use Predefined Options",select_custom_date:"Select Custom Date",select_relative_date:"Select Relative Date",ticked_by_default:"Ticked by default",updated_message:"Custom Field updated successfully",added_message:"Custom Field added successfully",press_enter_to_add:"Press enter to add new option",model_in_use:"Cannot update model for fields which are already in use.",type_in_use:"Cannot update type for fields which are already in use."},customization:{customization:"customization",updated_message:"Company information updated successfully",save:"Save",insert_fields:"Insert Fields",learn_custom_format:"Learn how to use custom format",add_new_component:"Add New Component",component:"Component",Parameter:"Parameter",series:"Series",series_description:"To set a static prefix/postfix like 'INV' across your company. It supports character length of up to 6 chars.",series_param_label:"Series Value",delimiter:"Delimiter",delimiter_description:"Single character for specifying the boundary between 2 separate components. By default its set to -",delimiter_param_label:"Delimiter Value",date_format:"Date Format",date_format_description:"A local date and time field which accepts a format parameter. The default format: 'Y' renders the current year.",date_format_param_label:"Format",sequence:"Sequence",sequence_description:"Consecutive sequence of numbers across your company. You can specify the length on the given parameter.",sequence_param_label:"Sequence Length",customer_series:"Customer Series",customer_series_description:"To set a different prefix/postfix for each customer.",customer_sequence:"Customer Sequence",customer_sequence_description:"Consecutive sequence of numbers for each of your customer.",customer_sequence_param_label:"Sequence Length",random_sequence:"Random Sequence",random_sequence_description:"Random alphanumeric string. You can specify the length on the given parameter.",random_sequence_param_label:"Sequence Length",invoices:{title:"Invoices",invoice_number_format:"Invoice Number Format",invoice_number_format_description:"Customize how your invoice number gets generated automatically when you create a new invoice.",preview_invoice_number:"Preview Invoice Number",due_date:"Due Date",due_date_description:"Specify how due date is automatically set when you create an invoice.",due_date_days:"Invoice Due after days",set_due_date_automatically:"Set Due Date Automatically",set_due_date_automatically_description:"Enable this if you wish to set due date automatically when you create a new invoice.",default_formats:"Default Formats",default_formats_description:"Below given formats are used to fill up the fields automatically on invoice creation.",default_invoice_email_body:"Default Invoice Email Body",company_address_format:"Company Address Format",shipping_address_format:"Shipping Address Format",billing_address_format:"Billing Address Format",invoice_email_attachment:"Send invoices as attachments",invoice_email_attachment_setting_description:"Enable this if you want to send invoices as email attachment. Please note that 'View Invoice' button in emails will not be displayed anymore when enabled.",invoice_settings_updated:"Invoice Settings updated successfully",retrospective_edits:"Retrospective Edits",allow:"Allow",disable_on_invoice_partial_paid:"Disable after partial payment is recorded",disable_on_invoice_paid:"Disable after full payment is recorded",disable_on_invoice_sent:"Disable after invoice is sent",retrospective_edits_description:" Based on your country's laws or your preference, you can restrict users from editing finalised invoices."},estimates:{title:"Estimates",estimate_number_format:"Estimate Number Format",estimate_number_format_description:"Customize how your estimate number gets generated automatically when you create a new estimate.",preview_estimate_number:"Preview Estimate Number",expiry_date:"Expiry Date",expiry_date_description:"Specify how expiry date is automatically set when you create an estimate.",expiry_date_days:"Estimate Expires after days",set_expiry_date_automatically:"Set Expiry Date Automatically",set_expiry_date_automatically_description:"Enable this if you wish to set expiry date automatically when you create a new estimate.",default_formats:"Default Formats",default_formats_description:"Below given formats are used to fill up the fields automatically on estimate creation.",default_estimate_email_body:"Default Estimate Email Body",company_address_format:"Company Address Format",shipping_address_format:"Shipping Address Format",billing_address_format:"Billing Address Format",estimate_email_attachment:"Send estimates as attachments",estimate_email_attachment_setting_description:"Enable this if you want to send the estimates as an email attachment. Please note that 'View Estimate' button in emails will not be displayed anymore when enabled.",estimate_settings_updated:"Estimate Settings updated successfully",convert_estimate_options:"Estimate Convert Action",convert_estimate_description:"Specify what happens to the estimate after it gets converted to an invoice.",no_action:"No action",delete_estimate:"Delete estimate",mark_estimate_as_accepted:"Mark estimate as accepted"},payments:{title:"Payments",payment_number_format:"Payment Number Format",payment_number_format_description:"Customize how your payment number gets generated automatically when you create a new payment.",preview_payment_number:"Preview Payment Number",default_formats:"Default Formats",default_formats_description:"Below given formats are used to fill up the fields automatically on payment creation.",default_payment_email_body:"Default Payment Email Body",company_address_format:"Company Address Format",from_customer_address_format:"From Customer Address Format",payment_email_attachment:"Send payments as attachments",payment_email_attachment_setting_description:"Enable this if you want to send the payment receipts as an email attachment. Please note that 'View Payment' button in emails will not be displayed anymore when enabled.",payment_settings_updated:"Payment Settings updated successfully"},items:{title:"Items",units:"Units",add_item_unit:"Add Item Unit",edit_item_unit:"Edit Item Unit",unit_name:"Unit Name",item_unit_added:"Item Unit Added",item_unit_updated:"Item Unit Updated",item_unit_confirm_delete:"You will not be able to recover this Item unit",already_in_use:"Item Unit is already in use",deleted_message:"Item Unit deleted successfully"},notes:{title:"Notes",description:"Save time by creating notes and reusing them on your invoices, estimates & payments.",notes:"Notes",type:"Type",add_note:"Add Note",add_new_note:"Add New Note",name:"Name",edit_note:"Edit Note",note_added:"Note added successfully",note_updated:"Note Updated successfully",note_confirm_delete:"You will not be able to recover this Note",already_in_use:"Note is already in use",deleted_message:"Note deleted successfully"}},account_settings:{profile_picture:"Profile Picture",name:"Name",email:"Email",password:"Password",confirm_password:"Confirm Password",account_settings:"Account Settings",save:"Save",section_description:"You can update your name, email & password using the form below.",updated_message:"Account Settings updated successfully"},user_profile:{name:"Name",email:"Email",password:"Password",confirm_password:"Confirm Password"},notification:{title:"Notifications",email:"Send Notifications to",description:"Which email notifications would you like to receive when something changes?",invoice_viewed:"Invoice viewed",invoice_viewed_desc:"When your customer views the invoice sent via invoiceshelf dashboard.",estimate_viewed:"Estimate viewed",estimate_viewed_desc:"When your customer views the estimate sent via invoiceshelf dashboard.",save:"Save",email_save_message:"Email saved successfully",please_enter_email:"Please Enter Email"},roles:{title:"Roles",description:"Manage the roles & permissions of this company",save:"Save",add_new_role:"Add New Role",role_name:"Role Name",added_on:"Added on",add_role:"Add Role",edit_role:"Edit Role",name:"Name",permission:"Permission | Permissions",select_all:"Select All",none:"None",confirm_delete:"You will not be able to recover this Role",created_message:"Role created successfully",updated_message:"Role updated successfully",deleted_message:"Role deleted successfully",already_in_use:"Role is already in use"},exchange_rate:{exchange_rate:"Exchange Rate",title:"Fix Currency Exchange issues",description:"Please enter exchange rate of all the currencies mentioned below to help InvoiceShelf properly calculate the amounts in {currency}.",drivers:"Drivers",new_driver:"Add New Provider",edit_driver:"Edit Provider",select_driver:"Select Driver",update:"select exchange rate ",providers_description:"Configure your exchange rate providers here to automatically fetch the latest exchange rate on transactions.",key:"API Key",name:"Name",driver:"Driver",is_default:"IS DEFAULT",currency:"Currencies",exchange_rate_confirm_delete:"You will not be able to recover this driver",created_message:"Provider Created successfully",updated_message:"Provider Updated Successfully",deleted_message:"Provider Deleted Successfully",error:" You cannot Delete Active Driver",default_currency_error:"This currency is already used in one of the Active Provider",exchange_help_text:"Enter exchange rate to convert from {currency} to {baseCurrency}",currency_freak:"Currency Freak",currency_layer:"Currency Layer",open_exchange_rate:"Open Exchange Rate",currency_converter:"Currency Converter",server:"Server",url:"URL",active:"Active",currency_help_text:"This provider will only be used on above selected currencies",currency_in_used:"The following currencies are already active on another provider. Please remove these currencies from selection to activate this provider again."},tax_types:{title:"Tax Types",add_tax:"Add Tax",edit_tax:"Edit Tax",description:"You can add or Remove Taxes as you please. InvoiceShelf supports Taxes on Individual Items as well as on the invoice.",add_new_tax:"Add New Tax",tax_settings:"Tax Settings",tax_per_item:"Tax Per Item",tax_name:"Tax Name",compound_tax:"Compound Tax",percent:"Percent",action:"Action",tax_setting_description:"Enable this if you want to add taxes to individual invoice items. By default, taxes are added directly to the invoice.",created_message:"Tax type created successfully",updated_message:"Tax type updated successfully",deleted_message:"Tax type deleted successfully",confirm_delete:"You will not be able to recover this Tax Type",already_in_use:"Tax is already in use"},payment_modes:{title:"Payment Modes",description:"Modes of transaction for payments",add_payment_mode:"Add Payment Mode",edit_payment_mode:"Edit Payment Mode",mode_name:"Mode Name",payment_mode_added:"Payment Mode Added",payment_mode_updated:"Payment Mode Updated",payment_mode_confirm_delete:"You will not be able to recover this Payment Mode",payments_attached:"This payment method is already attached to payments. Please delete the attached payments to proceed with deletion.",expenses_attached:"This payment method is already attached to expenses. Please delete the attached expenses to proceed with deletion.",deleted_message:"Payment Mode deleted successfully"},expense_category:{title:"Expense Categories",action:"Action",description:"Categories are required for adding expense entries. You can Add or Remove these categories according to your preference.",add_new_category:"Add New Category",add_category:"Add Category",edit_category:"Edit Category",category_name:"Category Name",category_description:"Description",created_message:"Expense Category created successfully",deleted_message:"Expense category deleted successfully",updated_message:"Expense category updated successfully",confirm_delete:"You will not be able to recover this Expense Category",already_in_use:"Category is already in use"},preferences:{currency:"Currency",default_language:"Default Language",time_zone:"Time Zone",fiscal_year:"Financial Year",date_format:"Date Format",discount_setting:"Discount Setting",discount_per_item:"Discount Per Item ",discount_setting_description:"Enable this if you want to add Discount to individual invoice items. By default, Discount is added directly to the invoice.",expire_public_links:"Automatically Expire Public Links",expire_setting_description:"Specify whether you would like to expire all the links sent by application to view invoices, estimates & payments, etc after a specified duration.",save:"Save",preference:"Preference | Preferences",general_settings:"Default preferences for the system.",updated_message:"Preferences updated successfully",select_language:"Select Language",select_time_zone:"Select Time Zone",select_date_format:"Select Date Format",select_financial_year:"Select Financial Year",recurring_invoice_status:"Recurring Invoice Status",create_status:"Create Status",active:"Active",on_hold:"On Hold",update_status:"Update Status",completed:"Completed",company_currency_unchangeable:"Company currency cannot be changed"},update_app:{title:"Update App",description:"You can easily update InvoiceShelf by checking for a new update by clicking the button below",check_update:"Check for updates",avail_update:"New Update available",next_version:"Next version",requirements:"Requirements",update:"Update Now",update_progress:"Update in progress...",progress_text:"It will just take a few minutes. Please do not refresh the screen or close the window before the update finishes",update_success:"App has been updated! Please wait while your browser window gets reloaded automatically.",latest_message:"No update available! You are on the latest version.",current_version:"Current Version",download_zip_file:"Download ZIP file",unzipping_package:"Unzipping Package",copying_files:"Copying Files",deleting_files:"Deleting Unused files",running_migrations:"Running Migrations",finishing_update:"Finishing Update",update_failed:"Update Failed",update_failed_text:"Sorry! Your update failed on : {step} step",update_warning:"All of the application files and default template files will be overwritten when you update the application using this utility. Please take a backup of your templates & database before updating."},backup:{title:"Backup | Backups",description:"The backup is a zipfile that contains all files in the directories you specify along with a dump of your database",new_backup:"Add New Backup",create_backup:"Create Backup",select_backup_type:"Select Backup Type",backup_confirm_delete:"You will not be able to recover this Backup",path:"path",new_disk:"New Disk",created_at:"created at",size:"size",dropbox:"dropbox",local:"local",healthy:"healthy",amount_of_backups:"amount of backups",newest_backups:"newest backups",used_storage:"used storage",select_disk:"Select Disk",action:"Action",deleted_message:"Backup deleted successfully",created_message:"Backup created successfully",invalid_disk_credentials:"Invalid credential of selected disk"},disk:{title:"File Disk | File Disks",description:"By default, InvoiceShelf will use your local disk for saving backups, avatar and other image files. You can configure more than one disk drivers like DigitalOcean, S3 and Dropbox according to your preference.",created_at:"created at",dropbox:"dropbox",name:"Name",driver:"Driver",disk_type:"Type",disk_name:"Disk Name",new_disk:"Add New Disk",filesystem_driver:"Filesystem Driver",local_driver:"local Driver",local_root:"local Root",public_driver:"Public Driver",public_root:"Public Root",public_url:"Public URL",public_visibility:"Public Visibility",media_driver:"Media Driver",media_root:"Media Root",aws_driver:"AWS Driver",aws_key:"AWS Key",aws_secret:"AWS Secret",aws_region:"AWS Region",aws_bucket:"AWS Bucket",aws_root:"AWS Root",do_spaces_type:"Do Spaces type",do_spaces_key:"Do Spaces key",do_spaces_secret:"Do Spaces Secret",do_spaces_region:"Do Spaces Region",do_spaces_bucket:"Do Spaces Bucket",do_spaces_endpoint:"Do Spaces Endpoint",do_spaces_root:"Do Spaces Root",dropbox_type:"Dropbox Type",dropbox_token:"Dropbox Token",dropbox_key:"Dropbox Key",dropbox_secret:"Dropbox Secret",dropbox_app:"Dropbox App",dropbox_root:"Dropbox Root",default_driver:"Default Driver",is_default:"IS DEFAULT",set_default_disk:"Set Default Disk",set_default_disk_confirm:"This disk will be set as default and all the new PDFs will be saved on this disk",success_set_default_disk:"Disk set as default successfully",save_pdf_to_disk:"Save PDFs to Disk",disk_setting_description:" Enable this, if you wish to save a copy of each Invoice, Estimate & Payment Receipt PDF on your default disk automatically. Turning this option will decrease the load-time when viewing the PDFs.",select_disk:"Select Disk",disk_settings:"Disk Settings",confirm_delete:"Your existing files & folders in the specified disk will not be affected but your disk configuration will be deleted from InvoiceShelf",action:"Action",edit_file_disk:"Edit File Disk",success_create:"Disk added successfully",success_update:"Disk updated successfully",error:"Disk addition failed",deleted_message:"File Disk deleted successfully",disk_variables_save_successfully:"Disk Configured Successfully",disk_variables_save_error:"Disk configuration failed.",invalid_disk_credentials:"Invalid credential of selected disk"},taxations:{add_billing_address:"Enter Billing Address",add_shipping_address:"Enter Shipping Address",add_company_address:"Enter Company Address",modal_description:"The information below is required in order to fetch sales tax.",add_address:"Add Address for fetching sales tax.",address_placeholder:"Example: 123, My Street",city_placeholder:"Example: Los Angeles",state_placeholder:"Example: CA",zip_placeholder:"Example: 90024",invalid_address:"Please provide valid address details."}},FK={account_info:"Account Information",account_info_desc:"Below details will be used to create the main Administrator account. Also you can change the details anytime after logging in.",name:"Name",email:"Email",password:"Password",confirm_password:"Confirm Password",save_cont:"Save & Continue",company_info:"Company Information",company_info_desc:"This information will be displayed on invoices. Note that you can edit this later on settings page.",company_name:"Company Name",company_logo:"Company Logo",logo_preview:"Logo Preview",preferences:"Company Preferences",preferences_desc:"Specify the default preferences for this company.",currency_set_alert:"The company's currency cannot be changed later.",country:"Country",state:"State",city:"City",address:"Address",street:"Street1 | Street2",phone:"Phone",zip_code:"Zip Code",go_back:"Go Back",currency:"Currency",language:"Language",time_zone:"Time Zone",fiscal_year:"Financial Year",date_format:"Date Format",from_address:"From Address",username:"Username",next:"Next",continue:"Continue",skip:"Skip",database:{database:"Site URL & Database",connection:"Database Connection",host:"Database Host",port:"Database Port",password:"Database Password",app_url:"App URL",app_domain:"App Domain",username:"Database Username",db_name:"Database Name",db_path:"Database Path",desc:"Create a database on your server and set the credentials using the form below."},permissions:{permissions:"Permissions",permission_confirm_title:"Are you sure you want to continue?",permission_confirm_desc:"Folder permission check failed",permission_desc:"Below is the list of folder permissions which are required in order for the app to work. If the permission check fails, make sure to update your folder permissions."},verify_domain:{title:"Domain Verification",desc:"InvoiceShelf uses Session based authentication which requires domain verification for security purposes. Please enter the domain on which you will be accessing your web application.",app_domain:"App Domain",verify_now:"Verify Now",success:"Domain Verify Successfully.",failed:"Domain verification failed. Please enter valid domain name.",verify_and_continue:"Verify And Continue"},mail:{host:"Mail Host",port:"Mail Port",driver:"Mail Driver",secret:"Secret",mailgun_secret:"Mailgun Secret",mailgun_domain:"Domain",mailgun_endpoint:"Mailgun Endpoint",ses_secret:"SES Secret",ses_key:"SES Key",password:"Mail Password",username:"Mail Username",mail_config:"Mail Configuration",from_name:"From Mail Name",from_mail:"From Mail Address",encryption:"Mail Encryption",mail_config_desc:"Below is the form for Configuring Email driver for sending emails from the app. You can also configure third party providers like Sendgrid, SES etc."},req:{system_req:"System Requirements",php_req_version:"Php (version {version} required)",check_req:"Check Requirements",system_req_desc:"InvoiceShelf has a few server requirements. Make sure that your server has the required php version and all the extensions mentioned below."},errors:{migrate_failed:"Migrate Failed",database_variables_save_error:"Cannot write configuration to .env file. Please check its file permissions",mail_variables_save_error:"Email configuration failed.",connection_failed:"Database connection failed",database_should_be_empty:"Database should be empty"},success:{mail_variables_save_successfully:"Email configured successfully",database_variables_save_successfully:"Database configured successfully."}},MK={invalid_phone:"Invalid Phone Number",invalid_url:"Invalid url (ex: http://www.invoiceshelf.com)",invalid_domain_url:"Invalid url (ex: invoiceshelf.com)",required:"Field is required",email_incorrect:"Incorrect Email.",email_already_taken:"The email has already been taken.",email_does_not_exist:"User with given email doesn't exist",item_unit_already_taken:"This item unit name has already been taken",payment_mode_already_taken:"This payment mode name has already been taken",send_reset_link:"Send Reset Link",not_yet:"Not yet? Send it again",password_min_length:"Password must contain {count} characters",name_min_length:"Name must have at least {count} letters.",prefix_min_length:"Prefix must have at least {count} letters.",enter_valid_tax_rate:"Enter valid tax rate",numbers_only:"Numbers Only.",characters_only:"Characters Only.",password_incorrect:"Passwords must be identical",password_length:"Password must be {count} character long.",qty_must_greater_than_zero:"Quantity must be greater than zero.",price_greater_than_zero:"Price must be greater than zero.",payment_greater_than_zero:"Payment must be greater than zero.",payment_greater_than_due_amount:"Entered Payment is more than due amount of this invoice.",quantity_maxlength:"Quantity should not be greater than 20 digits.",price_maxlength:"Price should not be greater than 20 digits.",price_minvalue:"Price should be greater than 0.",amount_maxlength:"Amount should not be greater than 20 digits.",amount_minvalue:"Amount should be greater than 0.",discount_maxlength:"Discount should not be greater than max discount",description_maxlength:"Description should not be greater than 255 characters.",subject_maxlength:"Subject should not be greater than 100 characters.",message_maxlength:"Message should not be greater than 255 characters.",maximum_options_error:"Maximum of {max} options selected. First remove a selected option to select another.",notes_maxlength:"Notes should not be greater than 65,000 characters.",address_maxlength:"Address should not be greater than 255 characters.",ref_number_maxlength:"Ref Number should not be greater than 255 characters.",prefix_maxlength:"Prefix should not be greater than 5 characters.",something_went_wrong:"something went wrong",number_length_minvalue:"Number length should be greater than 0",at_least_one_ability:"Please select atleast one Permission.",valid_driver_key:"Please enter a valid {driver} key.",valid_exchange_rate:"Please enter a valid exchange rate.",company_name_not_same:"Company name must match with given name."},RK={starter_plan:"This feature is available on Starter plan and onwards!",invalid_provider_key:"Please Enter Valid Provider API Key.",estimate_number_used:"The estimate number has already been taken.",invoice_number_used:"The invoice number has already been taken.",payment_attached:"This invoice already has a payment attached to it. Make sure to delete the attached payments first in order to go ahead with the removal.",payment_number_used:"The payment number has already been taken.",name_already_taken:"The name has already been taken.",receipt_does_not_exist:"Receipt does not exist.",customer_cannot_be_changed_after_payment_is_added:"Customer cannot be change after payment is added",invalid_credentials:"Invalid Credentials.",not_allowed:"Not Allowed",login_invalid_credentials:"These credentials do not match our records.",enter_valid_cron_format:"Please enter a valid cron format",email_could_not_be_sent:"Email could not be sent to this email address.",invalid_address:"Please enter a valid address.",invalid_key:"Please enter valid key.",invalid_state:"Please enter a valid state.",invalid_city:"Please enter a valid city.",invalid_postal_code:"Please enter a valid zip.",invalid_format:"Please enter valid query string format.",api_error:"Server not responding.",feature_not_enabled:"Feature not enabled.",request_limit_met:"Api request limit exceeded.",address_incomplete:"Incomplete Address"},OK="Estimate",$K="Estimate Number",LK="Estimate Date",BK="Expiry date",UK="Invoice",VK="Invoice Number",qK="Invoice Date",HK="Due date",WK="Notes",KK="Items",YK="Quantity",ZK="Price",GK="Discount",QK="Amount",JK="Subtotal",XK="Total",eY="Payment",tY="PAYMENT RECEIPT",aY="Payment Date",nY="Payment Number",iY="Payment Mode",oY="Amount Received",rY="EXPENSES REPORT",sY="TOTAL EXPENSE",lY="PROFIT & LOSS REPORT",cY="Sales Customer Report",dY="Sales Item Report",uY="Tax Summary Report",_Y="INCOME",mY="NET PROFIT",pY="Sales Report: By Customer",fY="TOTAL SALES",hY="Sales Report: By Item",gY="TAX REPORT",vY="TOTAL TAX",yY="Tax Types",bY="Expenses",kY="Bill to,",wY="Ship to,",xY="Received from:",DY="Tax",SY={navigation:hK,general:gK,dashboard:vK,tax_types:yK,global_search:bK,company_switcher:kK,dateRange:wK,customers:xK,items:DK,estimates:SK,invoices:zK,recurring_invoices:PK,payments:EK,expenses:AK,login:CK,modules:jK,users:TK,reports:IK,settings:NK,wizard:FK,validation:MK,errors:RK,pdf_estimate_label:OK,pdf_estimate_number:$K,pdf_estimate_date:LK,pdf_estimate_expire_date:BK,pdf_invoice_label:UK,pdf_invoice_number:VK,pdf_invoice_date:qK,pdf_invoice_due_date:HK,pdf_notes:WK,pdf_items_label:KK,pdf_quantity_label:YK,pdf_price_label:ZK,pdf_discount_label:GK,pdf_amount_label:QK,pdf_subtotal:JK,pdf_total:XK,pdf_payment_label:eY,pdf_payment_receipt_label:tY,pdf_payment_date:aY,pdf_payment_number:nY,pdf_payment_mode:iY,pdf_payment_amount_received_label:oY,pdf_expense_report_label:rY,pdf_total_expenses_label:sY,pdf_profit_loss_label:lY,pdf_sales_customers_label:cY,pdf_sales_items_label:dY,pdf_tax_summery_label:uY,pdf_income_label:_Y,pdf_net_profit_label:mY,pdf_customer_sales_report:pY,pdf_total_sales_label:fY,pdf_item_sales_label:hY,pdf_tax_report_label:gY,pdf_total_tax_label:vY,pdf_tax_types_label:yY,pdf_expenses_label:bY,pdf_bill_to:kY,pdf_ship_to:wY,pdf_received_from:xY,pdf_tax_label:DY},zY={dashboard:"Pulpit",customers:"Kontrahenci",items:"Pozycje",invoices:"Faktury","recurring-invoices":"Faktury cykliczne",expenses:"Wydatki",estimates:"Oferty",payments:"Płatności",reports:"Raporty",settings:"Ustawienia",logout:"Wyloguj",users:"Użytkownicy",modules:"Moduły"},PY={add_company:"Dodaj firmę",view_pdf:"Podgląd PDF",copy_pdf_url:"Kopiuj adres URL PDF",download_pdf:"Pobierz PDF",save:"Zapisz",create:"Stwórz",cancel:"Anuluj",update:"Zaktualizuj",deselect:"Odznacz",download:"Pobierz",from_date:"Od daty",to_date:"Do daty",from:"Od",to:"Do",ok:"Ok",yes:"Tak",no:"Nie",sort_by:"Sortuj według",ascending:"Rosnąco",descending:"Malejąco",subject:"Temat",body:"Treść",message:"Wiadomość",send:"Wyślij",preview:"Podgląd",go_back:"Wstecz",back_to_login:"Wróć do logowania?",home:"Strona główna",filter:"Filtr",delete:"Usuń",edit:"Edytuj",view:"Widok",add_new_item:"Dodaj nową pozycję",clear_all:"Wyczyść wszystko",showing:"Wyświetlanie",of:"z",actions:"Akcje",subtotal:"SUMA CZĘŚCIOWA",discount:"RABAT",fixed:"Stały",percentage:"Procentowo",tax:"PODATEK",total_amount:"ŁĄCZNA KWOTA",bill_to:"Płatnik",ship_to:"Wyślij do",due:"Należność",draft:"Wersja robocza",sent:"Wysłano",all:"Wszystko",select_all:"Zaznacz wszystkie",select_template:"Wybierz Szablon",choose_file:"Kliknij tutaj, aby wybrać plik",choose_template:"Wybierz szablon",choose:"Wybierz",remove:"Usuń",select_a_status:"Wybierz status",select_a_tax:"Wybierz podatek",search:"Wyszukaj",are_you_sure:"Czy jesteś pewien?",list_is_empty:"Lista jest pusta.",no_tax_found:"Nie znaleziono podatku!",four_zero_four:"404",you_got_lost:"Ups! Zgubiłeś się!",go_home:"Wróć do strony głównej",test_mail_conf:"Test konfiguracji poczty",send_mail_successfully:"Wiadomość wysłana pomyślnie",setting_updated:"Ustawienia zostały zaktualizowane",select_state:"Wybierz województwo",select_country:"Wybierz kraj",select_city:"Wybierz miasto",street_1:"Adres 1",street_2:"Adres 2",action_failed:"Niepowodzenie",retry:"Spróbuj ponownie",choose_note:"Wybierz notatkę",no_note_found:"Nie znaleziono notatki",insert_note:"Wstaw notatkę",copied_pdf_url_clipboard:"Skopiowano adres URL pliku PDF do schowka!",copied_url_clipboard:"Skopiowano adres URL do schowka!",docs:"Dokumentacja",do_you_wish_to_continue:"Czy chcesz kontynuować?",note:"Uwaga",pay_invoice:"Zapłać Fakturę",login_successfully:"Zalogowano pomyślnie!",logged_out_successfully:"Wylogowano pomyślnie",mark_as_default:"Mark as default"},EY={select_year:"Wybierz rok",cards:{due_amount:"Do zapłaty",customers:"Kontrahenci",invoices:"Faktury",estimates:"Oferty",payments:"Płatności"},chart_info:{total_sales:"Sprzedaż",total_receipts:"Przychody",total_expense:"Wydatki",net_income:"Dochód netto",year:"Wybierz rok"},monthly_chart:{title:"Sprzedaż i wydatki"},recent_invoices_card:{title:"Należne faktury",due_on:"Termin płatności",customer:"Kontrahent",amount_due:"Do zapłaty",actions:"Akcje",view_all:"Zobacz wszsytkie"},recent_estimate_card:{title:"Najnowsze oferty",date:"Data",customer:"Klient",amount_due:"Do zapłaty",actions:"Akcje",view_all:"Zobacz wszystkie"}},AY={name:"Nazwa",description:"Opis",percent:"Procent",compound_tax:"Podatek złożony"},CY={search:"Szukaj...",customers:"Klienci",users:"Użytkownicy",no_results_found:"Nie znaleziono wyników"},jY={label:"PRZEŁĄCZ FIRMĘ",no_results_found:"Nie Znaleziono Wyników",add_new_company:"Dodaj nową firmę",new_company:"Nowa firma",created_message:"Firma utworzona pomyślnie"},TY={today:"Dzisiaj",this_week:"Ten tydzień",this_month:"Ten miesiąc",this_quarter:"Ten kwartał",this_year:"Ten rok",previous_week:"Poprzedni Tydzień",previous_month:"Poprzedni miesiąc",previous_quarter:"Poprzedni kwartał",previous_year:"Poprzedni Rok",custom:"Niestandardowy"},IY={title:"Klienci",prefix:"Przedrostek",add_customer:"Dodaj klienta",contacts_list:"Lista klientów",name:"Nazwa",mail:"Poczta | Poczta",statement:"Komunikat",display_name:"Nazwa wyświetlana",primary_contact_name:"Główna osoba kontaktowa",contact_name:"Nazwa kontaktu",amount_due:"Do zapłaty",email:"E-mail",address:"Adres",phone:"Telefon",website:"Strona internetowa",overview:"Przegląd",invoice_prefix:"Przedrostek Faktury",estimate_prefix:"Przedrostek Oferty",payment_prefix:"Przedrostek Płatności",enable_portal:"Włącz portal",country:"Kraj",state:"Województwo",city:"Miasto",zip_code:"Kod pocztowy",added_on:"Dodano dnia",action:"Akcja",password:"Hasło",confirm_password:"Potwierdź Hasło",street_number:"Numer ulicy",primary_currency:"Waluta główna",description:"Opis",add_new_customer:"Dodaj nowego klienta",save_customer:"Zapisz klienta",update_customer:"Aktualizuj klienta",customer:"Klient | Klienci",new_customer:"Nowy klient",edit_customer:"Edytuj klienta",basic_info:"Podstawowe informacje",portal_access:"Panel Klienta",portal_access_text:"Czy chcesz zezwolić temu klientowi na logowanie do Panelu Klienta?",portal_access_url:"Adres URL Panelu Klienta",portal_access_url_help:"Skopiuj i prześlij powyższy adres URL do klienta w celu zapewnienia dostępu.",billing_address:"Adres do faktury",shipping_address:"Adres dostawy",copy_billing_address:"Kopiuj z rachunku",no_customers:"Brak klientów!",no_customers_found:"Nie znaleziono klientów!",no_contact:"Brak kontaktu",no_contact_name:"Brak nazwy kontaktu",list_of_customers:"Ta sekcja będzie zawierać listę klientów.",primary_display_name:"Główna nazwa wyświetlana",select_currency:"Wybierz walutę",select_a_customer:"Wybierz klienta",type_or_click:"Wpisz lub kliknij aby wybrać",new_transaction:"Nowa transakcja",no_matching_customers:"Brak pasujących klientów!",phone_number:"Numer telefonu",create_date:"Data utworzenia",confirm_delete:"Nie będziesz w stanie odzyskać tego klienta i wszystkich powiązanych faktur, ofert i płatności. | Nie będziesz w stanie odzyskać tych klientów i wszystkich powiązanych faktur, ofert i płatności.",created_message:"Klient został utworzony poprawnie",updated_message:"Klient został zaktualizowany poprawnie",address_updated_message:"Pomyślnie zaktualizowano informacje adresowe",deleted_message:"Klient został usunięty pomyślnie | Klienci zostali usunięci pomyślnie",edit_currency_not_allowed:"Nie można zmienić waluty po utworzeniu transakcji."},NY={title:"Pozycje",items_list:"Lista pozycji",name:"Nazwa",unit:"Jednostka",description:"Opis",added_on:"Dodano",price:"Cena",date_of_creation:"Data utworzenia",not_selected:"Nie wybrano elementów",action:"Akcja",add_item:"Dodaj pozycję",save_item:"Zapisz przedmiot",update_item:"Aktualizuj element",item:"Pozycja | Pozycje",add_new_item:"Dodaj nową pozycję",new_item:"Nowy produkt",edit_item:"Edytuj element",no_items:"Brak elementów!",list_of_items:"Ta sekcja będzie zawierać listę pozycji.",select_a_unit:"wybierz jednostkę",taxes:"Podatki",item_attached_message:"Nie można usunąć elementu, który jest już używany",confirm_delete:"Nie będziesz w stanie odzyskać tej pozycji | Nie będziesz w stanie odzyskać tych pozycji",created_message:"Element został pomyślnie zaktualizowany",updated_message:"Element został pomyślnie zaktualizowany",deleted_message:"Pozycja usunięta pomyślnie | Pozycje usunięte pomyślnie"},FY={title:"Oferty",accept_estimate:"Zaakceptuj Ofertę",reject_estimate:"Odrzuć Ofertę",estimate:"Oferta | Oferty",estimates_list:"Lista ofert",days:"{days} Dni",months:"{months} Miesiąc",years:"{years} Rok",all:"Wszystkie",paid:"Zapłacone",unpaid:"Niezapłacone",customer:"KLIENT",ref_no:"NR REF.",number:"NUMER",amount_due:"DO ZAPŁATY",partially_paid:"Częściowo opłacona",total:"Razem",discount:"Rabat",sub_total:"Podsumowanie",estimate_number:"Numer oferty",ref_number:"Numer referencyjny",contact:"Kontakt",add_item:"Dodaj pozycję",date:"Data",due_date:"Data ważności",expiry_date:"Data wygaśnięcia",status:"Status",add_tax:"Dodaj podatek",amount:"Kwota",action:"Akcja",notes:"Notatki",tax:"Podatek",estimate_template:"Szablon",convert_to_invoice:"Konwertuj do faktury",mark_as_sent:"Oznacz jako wysłane",send_estimate:"Wyślij ofertę",resend_estimate:"Wyślij ponownie ofertę",record_payment:"Zarejestruj płatność",add_estimate:"Dodaj ofertę",save_estimate:"Zapisz ofertę",confirm_conversion:"Ta oferta zostanie użyta do utworzenia nowej faktury.",conversion_message:"Faktura została utworzona pomyślnie",confirm_send_estimate:"Ta oferta zostanie wysłana pocztą elektroniczną do kontrahenta",confirm_mark_as_sent:"Ta oferta zostanie oznaczona jako wysłana",confirm_mark_as_accepted:"Ta oferta zostanie oznaczona jako zatwierdzona",confirm_mark_as_rejected:"Ta oferta zostanie oznaczona jako odrzucona",no_matching_estimates:"Brak pasujących ofert!",mark_as_sent_successfully:"Oferta oznaczona jako wysłana pomyślnie",send_estimate_successfully:"Kalkulacja wysłana pomyślnie",errors:{required:"To pole jest wymagane"},accepted:"Zaakceptowano",rejected:"Odrzucono",expired:"Wygasła",sent:"Wysłano",draft:"Wersja robocza",viewed:"Wyświetlona",declined:"Odrzucona",new_estimate:"Nowa oferta",add_new_estimate:"Dodaj nową ofertę",update_Estimate:"Zaktualizuj ofertę",edit_estimate:"Edytuj ofertę",items:"pozycje",Estimate:"Oferta | Oferty",add_new_tax:"Dodaj nowy podatek",no_estimates:"Nie ma jeszcze ofert!",list_of_estimates:"Ta sekcja będzie zawierała listę ofert.",mark_as_rejected:"Oznacz jako odrzuconą",mark_as_accepted:"Oznacz jako zaakceptowaną",marked_as_accepted_message:"Oferty oznaczone jako zaakceptowane",marked_as_rejected_message:"Oferty oznaczone jako odrzucone",confirm_delete:"Nie będziesz w stanie odzyskać tej oferty | Nie będziesz w stanie odzyskać tych ofert",created_message:"Oferta utworzona pomyślnie",updated_message:"Oferta zaktualizowana pomyślnie",deleted_message:"Oferta usunięta pomyślnie | Oferty usunięte pomyślnie",something_went_wrong:"coś poszło nie tak",item:{title:"Tytuł pozycji",description:"Opis",quantity:"Ilość",price:"Cena",discount:"Rabat",total:"Razem",total_discount:"Rabat łącznie",sub_total:"Podsumowanie",tax:"Podatek",amount:"Kwota",select_an_item:"Wpisz lub kliknij aby wybrać element",type_item_description:"Opis pozycji (opcjonalnie)"},mark_as_default_estimate_template_description:"If enabled, the selected template will be automatically selected for new estimates."},MY={title:"Faktury",download:"Pobierz",pay_invoice:"Zapłać Fakturę",invoices_list:"Lista faktur",invoice_information:"Informacje o Fakturze",days:"{days} Dni",months:"{months} Miesiąc",years:"{years} Rok",all:"Wszystko",paid:"Zapłacono",unpaid:"Nie zapłacono",viewed:"Przejrzane",overdue:"Zaległe",completed:"Ukończone",customer:"KLIENT",paid_status:"STATUS PŁATNOŚCI",ref_no:"NR REF.",number:"NUMER",amount_due:"DO ZAPŁATY",partially_paid:"Częściowo opłacona",total:"Razem",discount:"Rabat",sub_total:"Podsumowanie",invoice:"Faktura | Faktury",invoice_number:"Numer faktury",ref_number:"Numer referencyjny",contact:"Kontakt",add_item:"Dodaj pozycję",date:"Data",due_date:"Termin płatności",status:"Status",add_tax:"Dodaj podatek",amount:"Kwota",action:"Akcja",notes:"Notatki",view:"Widok",send_invoice:"Wyślij fakturę",resend_invoice:"Wyślij fakturę ponownie",invoice_template:"Szablon faktury",conversion_message:"Faktura sklonowana pomyślnie",template:"Szablon",mark_as_sent:"Oznacz jako wysłane",confirm_send_invoice:"Ta faktura zostanie wysłana pocztą elektroniczną do kontrahenta",invoice_mark_as_sent:"Ta faktura zostanie oznaczona jako wysłana",confirm_mark_as_accepted:"Ta faktura zostanie oznaczona jako Zaakceptowana",confirm_mark_as_rejected:"Ta faktura zostanie oznaczona jako Odrzucona",confirm_send:"Ta faktura zostanie wysłana pocztą elektroniczną do kontrahenta",invoice_date:"Data faktury",record_payment:"Zarejestruj płatność",add_new_invoice:"Dodaj nową fakturę",update_expense:"Zaktualizuj wydatki",edit_invoice:"Edytuj fakturę",new_invoice:"Nowa faktura",save_invoice:"Zapisz fakturę",update_invoice:"Zaktualizuj fakturę",add_new_tax:"Dodaj nowy podatek",no_invoices:"Brak faktur!",mark_as_rejected:"Oznacz jako odrzuconą",mark_as_accepted:"Oznacz jako zaakceptowaną",list_of_invoices:"Ta sekcja będzie zawierać listę faktur.",select_invoice:"Wybierz fakturę",no_matching_invoices:"Brak pasujących faktur!",mark_as_sent_successfully:"Faktura oznaczona jako wysłana pomyślnie",invoice_sent_successfully:"Faktura wysłana pomyślnie",cloned_successfully:"Faktura sklonowana pomyślnie",clone_invoice:"Sklonuj fakturę",confirm_clone:"Ta faktura zostanie sklonowana do nowej faktury",item:{title:"Tytuł pozycji",description:"Opis",quantity:"Ilość",price:"Cena",discount:"Rabat",total:"Razem",total_discount:"Rabat łącznie",sub_total:"Podsumowanie",tax:"Podatek",amount:"Kwota",select_an_item:"Wpisz lub kliknij aby wybrać element",type_item_description:"Opis pozycji (opcjonalnie)"},payment_attached_message:"Jedna z wybranych faktur ma dołączoną płatność. Upewnij się, że najpierw usuniesz załączone płatności, aby kontynuować usuwanie",confirm_delete:"Nie będziesz w stanie odzyskać tej faktury | Nie będziesz w stanie odzyskać tych faktur",created_message:"Faktura została utworzona pomyślnie",updated_message:"Faktura została pomyślnie zaktualizowana",deleted_message:"Faktura usunięta pomyślnie | Faktury usunięte pomyślnie",marked_as_sent_message:"Faktura oznaczona jako wysłana pomyślnie",something_went_wrong:"coś poszło nie tak",invalid_due_amount_message:"Całkowita kwota faktury nie może być mniejsza niż całkowita kwota zapłacona za tę fakturę. Proszę zaktualizować fakturę lub usunąć powiązane płatności, aby kontynuować.",mark_as_default_invoice_template_description:"If enabled, the selected template will be automatically selected for new invoices."},RY={title:"Faktury cykliczne",invoices_list:"Lista Faktur Cyklicznych",days:"{days} Dni",months:"{months} Miesięcy",years:"{years} Lat",all:"Wszystkie",paid:"Zapłacone",unpaid:"Niezapłacone",viewed:"Przeglądane",overdue:"Zaległe",active:"Aktywne",completed:"Ukończone",customer:"KLIENT",paid_status:"STATUS PŁATNOŚCI",ref_no:"NR REF.",number:"NUMER",amount_due:"DO ZAPŁATY",partially_paid:"Częściowo Opłacona",total:"Razem",discount:"Rabat",sub_total:"Suma Pośrednia",invoice:"Faktura Cykliczna | Faktury Cykliczne",invoice_number:"Numer Faktury Cyklicznej",next_invoice_date:"Data następnej Faktury",ref_number:"Numer ref.",contact:"Kontakt",add_item:"Dodaj pozycję",date:"Data",limit_by:"Ogranicz przez",limit_date:"Data ostateczna",limit_count:"Limit ilości",count:"Liczba",status:"Status",select_a_status:"Wybierz status",working:"Pracuję",on_hold:"Wstrzymane",complete:"Ukończone",add_tax:"Dodaj podatek",amount:"Kwota",action:"Akcja",notes:"Notatki",view:"Podgląd",basic_info:"Podstawowe informacje",send_invoice:"Wyślij Fakturę Cykliczną",auto_send:"Automatyczna Wysyłka",resend_invoice:"Wyślij ponownie Fakturę Cykliczną",invoice_template:"Szablon Faktury Cyklicznej",conversion_message:"Faktura Cykliczna sklonowana pomyślnie",template:"Szablon",mark_as_sent:"Oznacz jako wysłane",confirm_send_invoice:"Ta faktura cykliczna zostanie wysłana pocztą elektroniczną do klienta",invoice_mark_as_sent:"Ta faktura cykliczna zostanie oznaczona jako wysłana",confirm_send:"Ta faktura cykliczna zostanie wysłana pocztą elektroniczną do klienta",starts_at:"Data wystawienia",due_date:"Termin płatności faktury",record_payment:"Zarejestruj płatność",add_new_invoice:"Dodaj nową fakturę cykliczną",update_expense:"Zaktualizuj wydatek",edit_invoice:"Edytuj fakturę cykliczną",new_invoice:"Nowa Faktura Cykliczna",send_automatically:"Wysyłaj automatycznie",send_automatically_desc:"Włącz to, jeśli chcesz automatycznie wysłać fakturę do klienta po jej utworzeniu.",save_invoice:"Zapisz Fakturę Cykliczną",update_invoice:"Zaktualizuj Fakturę Cykliczną",add_new_tax:"Dodaj Nowy Podatek",no_invoices:"Brak faktur cyklicznych!",mark_as_rejected:"Oznacz jako odrzucona",mark_as_accepted:"Oznacz jako zaakceptowana",list_of_invoices:"Ta sekcja będzie zawierać listę faktur cyklicznych.",select_invoice:"Wybierz fakturę",no_matching_invoices:"Brak pasujących faktur cyklicznych!",mark_as_sent_successfully:"Faktura Cykliczna oznaczona jako wysłana pomyślnie",invoice_sent_successfully:"Faktura Cykliczna wysłana pomyślnie",cloned_successfully:"Faktura Cykliczna sklonowana pomyślnie",clone_invoice:"Klonuj Fakturę Cykliczną",confirm_clone:"Ta faktura cykliczna zostanie sklonowana do nowej faktury cyklicznej",add_customer_email:"Please add an email address for this customer to send invoices automatically.",item:{title:"Tytuł pozycji",description:"Opis",quantity:"Ilość",price:"Cena",discount:"Rabat",total:"Razem",total_discount:"Rabat łącznie",sub_total:"Podsumowanie",tax:"Podatek",amount:"Kwota",select_an_item:"Wpisz lub kliknij aby wybrać element",type_item_description:"Opis pozycji (opcjonalnie)"},frequency:{title:"Częstotliwość",select_frequency:"Wybierz częstotliwość",minute:"Minuta",hour:"Godzina",day_month:"Dzień miesiąca",month:"Miesiąc",day_week:"Dzień tygodnia"},confirm_delete:"Nie będziesz w stanie odzyskać tej faktury | Nie będziesz w stanie odzyskać tych faktur",created_message:"Faktura Cykliczna utworzona pomyślnie",updated_message:"Faktura Cykliczna zaktualizowana pomyślnie",deleted_message:"Faktura Cykliczna usunięta pomyślnie | Faktury Cykliczne usunięte pomyślnie",marked_as_sent_message:"Faktura Cykliczna oznaczona jako wysłana pomyślnie",user_email_does_not_exist:"E-mail użytkownika nie istnieje",something_went_wrong:"coś poszło nie tak",invalid_due_amount_message:"Całkowita kwota faktury cyklicznej nie może być mniejsza niż całkowita kwota zapłacona za tę fakturę cykliczną. Proszę zaktualizować fakturę lub usunąć powiązane płatności, aby kontynuować."},OY={title:"Płatności",payments_list:"Lista płatności",record_payment:"Zarejestruj płatność",customer:"Kontrahent",date:"Data",amount:"Kwota",action:"Akcja",payment_number:"Numer płatności",payment_mode:"Metoda płatności",invoice:"Faktura",note:"Notatka",add_payment:"Dodaj płatność",new_payment:"Nowa płatność",edit_payment:"Edytuj płatność",view_payment:"Wyświetl płatność",add_new_payment:"Dodaj nową płatność",send_payment_receipt:"Wyślij potwierdzenie płatności",send_payment:"Wyślij płatność",save_payment:"Zapisz płatność",update_payment:"Zaktualizuj płatność",payment:"Płatność | Płatności",no_payments:"Nie ma jeszcze płatności!",not_selected:"Nie wybrano",no_invoice:"Brak faktury",no_matching_payments:"Brak pasujących płatności!",list_of_payments:"Ta sekcja będzie zawierać listę płatności.",select_payment_mode:"Wybierz sposób płatności",confirm_mark_as_sent:"Ta oferta zostanie oznaczona jako wysłana",confirm_send_payment:"Ta płatność zostanie wysłana e-mailem do kontrahenta",send_payment_successfully:"Płatność wysłana pomyślnie",something_went_wrong:"coś poszło nie tak",confirm_delete:"Nie będziesz w stanie odzyskać tej płatności | Nie będziesz w stanie odzyskać tych płatności",created_message:"Płatność została pomyślnie utworzona",updated_message:"Płatność została pomyślnie zaktualizowana",deleted_message:"Płatność usunięta pomyślnie | Płatności usunięte pomyślnie",invalid_amount_message:"Kwota płatności jest nieprawidłowa"},$Y={title:"Wydatki",expenses_list:"Lista wydatków",select_a_customer:"Wybierz kontrahenta",expense_title:"Tytuł",customer:"Kontrahent",currency:"Waluta",contact:"Kontakt",category:"Kategoria",from_date:"Od daty",to_date:"Do daty",expense_date:"Data",description:"Opis",receipt:"Potwierdzenie",amount:"Kwota",action:"Akcja",not_selected:"Nie wybrano",note:"Notatka",category_id:"Identyfikator kategorii",date:"Data",add_expense:"Dodaj wydatek",add_new_expense:"Dodaj nowy wydatek",save_expense:"Zapisz wydatek",update_expense:"Zaktualizuj wydatek",download_receipt:"Pobierz potwierdzenie wpłaty",edit_expense:"Edytuj wydatek",new_expense:"Nowy wydatek",expense:"Wydatek | Wydatki",no_expenses:"Nie ma jeszcze wydatków!",list_of_expenses:"Ta sekcja będzie zawierała listę wydatków.",confirm_delete:"Nie będziesz w stanie odzyskać tego wydatku | Nie będziesz w stanie odzyskać tych wydatków",created_message:"Wydatek utworzony pomyślnie",updated_message:"Wydatek zaktualizowany pomyślnie",deleted_message:"Wydatek usunięty pomyślnie | Wydatki usunięte pomyślnie",categories:{categories_list:"Lista kategorii",title:"Tytuł",name:"Nazwa",description:"Opis",amount:"Kwota",actions:"Akcje",add_category:"Dodaj kategorię",new_category:"Nowa kategoria",category:"Kategoria | Kategorie",select_a_category:"Wybierz kategorię"}},LY={email:"E-mail",password:"Hasło",forgot_password:"Nie pamiętasz hasła?",or_signIn_with:"lub zaloguj się przez",login:"Logowanie",register:"Rejestracja",reset_password:"Resetuj hasło",password_reset_successfully:"Hasło zostało pomyślnie zresetowane",enter_email:"Wprowadź adres e-mail",enter_password:"Wprowadź hasło",retype_password:"Wprowadź hasło ponownie"},BY={buy_now:"Kup teraz",install:"Instaluj",price:"Cena",download_zip_file:"Pobierz plik ZIP",unzipping_package:"Rozpakowywanie pakietu",copying_files:"Kopiowanie plików",deleting_files:"Usuwanie nieużywanych plików",completing_installation:"Kończenie instalacji",update_failed:"Aktualizacja nie powiodła się",install_success:"Pomyślnie zainstalowano Moduł!",customer_reviews:"Opinie",license:"Licencja",faq:"Najczęściej zadawane pytania (FAQ)",monthly:"Miesięcznie",yearly:"Rocznie",updated:"Zaktualizowano",version:"Wersja",disable:"Wyłacz",module_disabled:"Moduł Wyłączony",enable:"Włącz",module_enabled:"Moduł Włączony",update_to:"Aktualizuj do",module_updated:"Moduł zaktualizowany pomyślnie!",title:"Moduły",module:"Moduł | Moduły",api_token:"Token API",invalid_api_token:"Nieprawidłowy token API.",other_modules:"Pozostałe Moduły",view_all:"Zobacz Wszystkie",no_reviews_found:"Brak opinii dla tego Modułu!",module_not_purchased:"Moduł niezakupiony",module_not_found:"Nie znaleziono modułu",version_not_supported:"Ta wersja modułu nie obsługuje bieżącej wersji Aplikacji",last_updated:"Ostatnio aktualizowany",connect_installation:"Połącz swoją instalację",api_token_description:"Zaloguj się do {url} i podłącz tę instalację wprowadzając token API. Zakupione moduły pojawią się tutaj po nawiązaniu połączenia.",view_module:"Zobacz moduł",update_available:"Aktualizacja Dostępna",purchased:"Zakupiono",installed:"Zainstalowano",no_modules_installed:"Brak zainstalowanych modułów!",disable_warning:"Wszystkie ustawienia dla tego konkretnego zostaną przywrócone.",what_you_get:"Co otrzymasz"},UY={title:"Użytkownicy",users_list:"Lista użytkowników",name:"Nazwa",description:"Opis",added_on:"Dodano dnia",date_of_creation:"Data utworzenia",action:"Akcja",add_user:"Dodaj użytkownika",save_user:"Zapisz użytkownika",update_user:"Zaktualizuj użytkownika",user:"Użytkownik | Użytkownicy",add_new_user:"Dodaj nowego użytkownika",new_user:"Nowy użytkownik",edit_user:"Edytuj użytkownika",no_users:"Brak użytkowników!",list_of_users:"Ta sekcja będzie zawierała listę użytkowników.",email:"Email",phone:"Telefon",password:"Hasło",user_attached_message:"Nie można usunąć elementu, który jest już w użyciu",confirm_delete:"Nie będziesz w stanie odzyskać tego użytkownika | Nie będziesz w stanie odzyskać tych użytkowników",created_message:"Użytkownik został utworzony pomyślnie",updated_message:"Użytkownik został zaktualizowany pomyślnie",deleted_message:"Użytkownik usunięty pomyślnie | Użytkownicy usunięci pomyślnie",select_company_role:"Wybierz Rolę dla {company}",companies:"Firmy"},VY={title:"Raport",from_date:"Od daty",to_date:"Do daty",status:"Status",paid:"Zapłacono",unpaid:"Nie zapłacono",download_pdf:"Pobierz plik PDF",view_pdf:"Podgląd PDF",update_report:"Aktualizuj raport",report:"Raport | Raporty",profit_loss:{profit_loss:"Zyski i straty",to_date:"Do daty",from_date:"Od daty",date_range:"Wybierz zakres dat"},sales:{sales:"Sprzedaż",date_range:"Wybierz zakres dat",to_date:"Do daty",from_date:"Od daty",report_type:"Typ raportu"},taxes:{taxes:"Podatki",to_date:"Do daty",from_date:"Od daty",date_range:"Wybierz zakres dat"},errors:{required:"To pole jest wymagane"},invoices:{invoice:"Faktura",invoice_date:"Data faktury",due_date:"Termin płatności",amount:"Kwota",contact_name:"Nazwa kontaktu",status:"Status"},estimates:{estimate:"Oferta",estimate_date:"Data oferty",due_date:"Data ważności",estimate_number:"Numer oferty",ref_number:"Numer referencyjny",amount:"Kwota",contact_name:"Nazwa kontaktu",status:"Status"},expenses:{expenses:"Wydatki",category:"Kategoria",date:"Data",amount:"Kwota",to_date:"Do daty",from_date:"Od daty",date_range:"Wybierz zakres dat"}},qY={menu_title:{account_settings:"Ustawienia konta",company_information:"Informacje o firmie",customization:"Dostosowywanie",preferences:"Opcje",notifications:"Powiadomienia",tax_types:"Rodzaje podatku",expense_category:"Kategorie wydatku",update_app:"Aktualizuj aplikację",backup:"Kopia zapasowa",file_disk:"Dysk plików",custom_fields:"Pola niestandardowe",payment_modes:"Rodzaje płatności",notes:"Notatki",exchange_rate:"Kurs wymiany",address_information:"Informacje Adresowe"},address_information:{section_description:" Możesz zaktualizować informacje o adresie za pomocą poniższego formularza."},title:"Ustawienia",setting:"Ustawienia | Ustawienia",general:"Ogólne",language:"Język",primary_currency:"Waluta główna",timezone:"Strefa czasowa",date_format:"Format daty",currencies:{title:"Waluty",currency:"Waluta | Waluty",currencies_list:"Lista walut",select_currency:"Wybierz walutę",name:"Nazwa",code:"Kod",symbol:"Symbol",precision:"Dokładność",thousand_separator:"Separator tysięcy",decimal_separator:"Separator dziesiętny",position:"Pozycja",position_of_symbol:"Położenie symbolu",right:"Do prawej",left:"Do lewej",action:"Akcja",add_currency:"Dodaj walutę"},mail:{host:"Adres hosta poczty",port:"Port poczty",driver:"Sterownik poczty",secret:"Tajny klucz",mailgun_secret:"Mailgun Secret",mailgun_domain:"Domena",mailgun_endpoint:"Punkt dostępowy Mailgun",ses_secret:"Tajny klucz SES",ses_key:"Klucz SES",password:"Hasło poczty",username:"Nazwa użytkownika poczty",mail_config:"Konfiguracja poczty",from_name:"Nazwa nadawcy",from_mail:"Adres e-mail nadawcy",encryption:"Szyfrowanie poczty",mail_config_desc:"Poniżej znajduje się formularz konfiguracji sterownika poczty e-mail do wysyłania wiadomości e-mail z aplikacji. Możesz również skonfigurować zewnętrznych dostawców takich jak Sendgrid, SES itp."},pdf:{title:"Ustawienia PDF",footer_text:"Teks stopki",pdf_layout:"Szablon PDF"},company_info:{company_info:"Dane firmy",company_name:"Nazwa firmy",company_logo:"Logo firmy",section_description:"Informacje o Twojej firmie, które będą wyświetlane na fakturach, ofertach i innych dokumentach stworzonych przez InvoiceShelf.",phone:"Telefon",country:"Kraj",state:"Województwo",city:"Miasto",address:"Adres",zip:"Kod pocztowy",save:"Zapisz",delete:"Usuń",updated_message:"Informacje o firmie zostały pomyślnie zaktualizowane",delete_company:"Usuń firmę",delete_company_description:"Po usunięciu firmy stracisz na stałe wszystkie dane i pliki z nią powiązane.",are_you_absolutely_sure:"Czy jesteś absolutnie pewien?",delete_company_modal_desc:"Tej akcji nie można cofnąć. Spowoduje to trwałe usunięcie {company} i wszystkich powiązanych z nią danych.",delete_company_modal_label:"Wpisz {company} aby potwierdzić"},custom_fields:{title:"Pola niestandardowe",section_description:"Dostosuj swoje faktury, oferty i wpływy płatności własnymi polami. Upewnij się, że używasz poniższych pól w formatach adresowych na stronie ustawień dostosowywania.",add_custom_field:"Dodaj pole niestandardowe",edit_custom_field:"Edytuj pole niestandardowe",field_name:"Nazwa pola",label:"Etykieta",type:"Typ",name:"Nazwa",slug:"Przyjazny link",required:"Wymagane",placeholder:"Symbol zastępczy",help_text:"Tekst pomocy",default_value:"Wartość domyślna",prefix:"Prefiks",starting_number:"Numer początkowy",model:"Model",help_text_description:"Wprowadź jakiś tekst, aby pomóc użytkownikom zrozumieć cel tego pola niestandardowego.",suffix:"Sufiks",yes:"Tak",no:"Nie",order:"Zamówienie",custom_field_confirm_delete:"Nie będziesz w stanie odzyskać tego niestandardowego pola",already_in_use:"Pole niestandardowe jest już w użyciu",deleted_message:"Pole niestandardowe zostało usunięte pomyślnie",options:"opcje",add_option:"Dodaj opcje",add_another_option:"Dodaj inną opcję",sort_in_alphabetical_order:"Sortuj według kolejności alfabetycznej",add_options_in_bulk:"Dodaj opcje zbiorcze",use_predefined_options:"Użyj predefiniowanych opcji",select_custom_date:"Wybierz niestandardową datę",select_relative_date:"Wybierz datę względną",ticked_by_default:"Zaznaczone domyślnie",updated_message:"Pole niestandardowe zostało zaktualizowane pomyślnie",added_message:"Pole niestandardowe zostało dodane pomyślnie",press_enter_to_add:"Naciśnij Enter, aby dodać nową opcję",model_in_use:"Nie można zaktualizować modelu dla pól, które są już używane.",type_in_use:"Nie można zaktualizować typu dla pól, które są już używane."},customization:{customization:"dostosowywanie",updated_message:"Informacje o firmie zostały pomyślnie zaktualizowane",save:"Zapisz",insert_fields:"Wstaw pola",learn_custom_format:"Dowiedz się, jak używać niestandardowego formatu",add_new_component:"Dodaj składnik",component:"Składnik",Parameter:"Parametr",series:"Serie",series_description:"Aby ustawić statyczny przedrostek / przyrostek, taki jak 'INV' dla całej firmy. Obsługiwana długość do 6 znaków.",series_param_label:"Wartość serii",delimiter:"Separator",delimiter_description:"Pojedynczy znak do określenia granicy pomiędzy 2 oddzielnymi składnikami. Domyślnie ustawiony na -",delimiter_param_label:"Wartość separatora",date_format:"Format daty",date_format_description:"Pole daty i czasu lokalnego, które akceptuje parametr formatu. Domyślny format: 'Y' renderuje bieżący rok.",date_format_param_label:"Format",sequence:"Sekwencja",sequence_description:"Ciągła sekwencja numerów w firmie. Możesz określić długość podanego parametru.",sequence_param_label:"Długość sekwencji",customer_series:"Seria klientów",customer_series_description:"Aby ustawić inny przedrostek / przyrostek dla każdego klienta.",customer_sequence:"Sekwencja Klienta",customer_sequence_description:"Ciągła sekwencja numerów dla każdego klienta.",customer_sequence_param_label:"Długość sekwencji",random_sequence:"Losowa sekwencja",random_sequence_description:"Losowy ciąg alfanumeryczny. Możesz określić długość podanego parametru.",random_sequence_param_label:"Długość sekwencji",invoices:{title:"Faktury",invoice_number_format:"Format Numer Faktury",invoice_number_format_description:"Dostosuj sposób generowania numeru faktury podczas tworzenia nowej faktury.",preview_invoice_number:"Podgląd Numer faktury",due_date:"Termin płatności",due_date_description:"Określ, w jaki sposób termin płatności jest ustawiany automatycznie podczas tworzenia faktury.",due_date_days:"Faktura do zapłaty po dniach",set_due_date_automatically:"Ustaw termin płatności automatycznie",set_due_date_automatically_description:"Włącz tę opcję, jeśli chcesz ustawić termin płatności automatycznie podczas tworzenia nowej faktury.",default_formats:"Formaty domyślne",default_formats_description:"Poniżej podane formaty są używane do automatycznego wypełniania pól przy tworzeniu faktury.",default_invoice_email_body:"Domyślny nagłówek e-maila faktury",company_address_format:"Format adresu firmy",shipping_address_format:"Format adresu dostawy",billing_address_format:"Format adresu do faktury",invoice_email_attachment:"Wyślij faktury jako załączniki",invoice_email_attachment_setting_description:"Włącz to, jeśli chcesz wysyłać faktury jako załącznik e-mail. Pamiętaj, że przycisk 'Zobacz fakturę' w wiadomościach e-mail nie będzie już wyświetlany, gdy jest włączony.",invoice_settings_updated:"Ustawienia faktury zostały pomyślnie zaktualizowane",retrospective_edits:"Edycje Wsteczne",allow:"Zezwól",disable_on_invoice_partial_paid:"Wyłącz po zarejestrowaniu płatności częściowej",disable_on_invoice_paid:"Wyłącz po zarejestrowaniu całej płatności",disable_on_invoice_sent:"Wyłącz po wysłaniu faktury",retrospective_edits_description:" Na podstawie prawa krajowego lub twoich preferencji, możesz ograniczyć użytkowników do edycji ukończonych faktur."},estimates:{title:"Oferty",estimate_number_format:"Format Numeru Oferty",estimate_number_format_description:"Dostosuj sposób generowania numeru oferty podczas tworzenia nowej oferty.",preview_estimate_number:"Podgląd Numeru Oferty",expiry_date:"Data wygaśnięcia",expiry_date_description:"Określ, w jaki sposób data wygaśnięcia jest ustawiana automatycznie podczas tworzenia oferty.",expiry_date_days:"Oferta wygasa po dniach",set_expiry_date_automatically:"Ustaw automatycznie datę wygaśnięcia",set_expiry_date_automatically_description:"Włącz to, jeśli chcesz ustawić automatycznie datę wygaśnięcia, gdy tworzysz nową ofertę.",default_formats:"Formaty domyślne",default_formats_description:"Poniżej podane formaty są używane do automatycznego wypełniania pól przy tworzeniu oferty.",default_estimate_email_body:"Domyślny nagłówek e-maila oferty",company_address_format:"Format adresu firmy",shipping_address_format:"Format adresu dostawy",billing_address_format:"Format adresu do faktury",estimate_email_attachment:"Wyślij oferty jako załączniki",estimate_email_attachment_setting_description:"Włącz to, jeśli chcesz wysyłać oferty jako załącznik e-mail. Pamiętaj, że przycisk 'Zobacz ofertę' w wiadomościach e-mail nie będzie już wyświetlany, gdy jest włączony.",estimate_settings_updated:"Ustawienia oferty zostały pomyślnie zaktualizowane",convert_estimate_options:"Akcja konwersji Oferty",convert_estimate_description:"Określ co dzieje się z ofertą po przekonwertowaniu jej w fakturę.",no_action:"Brak akcji",delete_estimate:"Usuń ofertę",mark_estimate_as_accepted:"Oznacz jako zaakceptowaną"},payments:{title:"Płatności",payment_number_format:"Format Numeru Płatności",payment_number_format_description:"Dostosuj sposób generowania numeru płatności podczas tworzenia nowej płatności.",preview_payment_number:"Podgląd Numeru Płatności",default_formats:"Formaty domyślne",default_formats_description:"Poniżej podane formaty są używane do automatycznego wypełniania pól przy tworzeniu płatności.",default_payment_email_body:"Domyślny nagłówek e-maila płatności",company_address_format:"Format adresu firmy",from_customer_address_format:"Format adresu nadawcy",payment_email_attachment:"Wyślij płatności jako załączniki",payment_email_attachment_setting_description:"Włącz to, jeśli chcesz wysyłać płatności jako załącznik e-mail. Pamiętaj, że przycisk 'Zobacz płatność' w wiadomościach e-mail nie będzie już wyświetlany, gdy jest włączony.",payment_settings_updated:"Ustawienia płatności zostały pomyślnie zaktualizowane"},items:{title:"Pozycje",units:"Jednostki",add_item_unit:"Dodaj jednostkę",edit_item_unit:"Edytuj jednostkę",unit_name:"Nazwa jednostki",item_unit_added:"Dodano jednostkę",item_unit_updated:"Zaktualizowano jednostkę",item_unit_confirm_delete:"Nie będziesz w stanie odzyskać tej jednostki przedmiotu",already_in_use:"Jednostka pozycji jest już w użyciu",deleted_message:"Jednostka pozycji została usunięta pomyślnie"},notes:{title:"Notatki",description:"Oszczędzaj czas, tworząc notatki i ponownie używając ich na fakturach, ofertach i płatnościach.",notes:"Notatki",type:"Typ",add_note:"Dodaj notatkę",add_new_note:"Dodaj nową notatkę",name:"Nazwa",edit_note:"Edytuj notatkę",note_added:"Notatka została dodana pomyślnie",note_updated:"Notatka zaktualizowana pomyślnie",note_confirm_delete:"Nie będziesz w stanie odzyskać tej notatki",already_in_use:"Notatka jest już w użyciu",deleted_message:"Notatka została usunięta pomyślnie"}},account_settings:{profile_picture:"Zdjęcie profilowe",name:"Nazwa",email:"Email",password:"Hasło",confirm_password:"Potwierdź hasło",account_settings:"Ustawienia konta",save:"Zapisz",section_description:"Możesz zaktualizować swoje imię, e-mail i hasło używając poniższego formularza.",updated_message:"Ustawienia konta zostały pomyślnie zaktualizowane"},user_profile:{name:"Nazwa",email:"Email",password:"Hasło",confirm_password:"Potwierdź hasło"},notification:{title:"Powiadomienie",email:"Wyślij powiadomienie do",description:"Które powiadomienia e-mail chcesz otrzymywać kiedy coś się zmieni?",invoice_viewed:"Faktura wyświetlona",invoice_viewed_desc:"Kiedy klient wyświetli fakturę wysłaną za pośrednictwem kokpitu InvoiceShelfa.",estimate_viewed:"Oferta wyświetlona",estimate_viewed_desc:"Kiedy klient wyświetli ofertę wysłaną za pośrednictwem kokpitu InvoiceShelfa.",save:"Zapisz",email_save_message:"Wiadomość zapisana pomyślnie",please_enter_email:"Proszę wpisać adres e-mail"},roles:{title:"Role",description:"Zarządzaj rolami i uprawnieniami tej firmy",save:"Zapisz",add_new_role:"Dodaj nową Rolę",role_name:"Nazwa Roli",added_on:"Dodano",add_role:"Dodaj Rolę",edit_role:"Edytuj Rolę",name:"Nazwa",permission:"Uprawnienie | Uprawnienia",select_all:"Zaznacz Wszystko",none:"Żadne",confirm_delete:"Nie będziesz w stanie odzyskać tej Roli",created_message:"Rola utworzona pomyślnie",updated_message:"Rola pomyślnie zaktualizowana",deleted_message:"Rola pomyślnie usunięta",already_in_use:"Rola jest już w użyciu"},exchange_rate:{exchange_rate:"Kurs wymiany",title:"Napraw problemy wymiany walut",description:"Wprowadź kurs wymiany wszystkich walut wymienionych poniżej, aby pomóc Aplikacji we właściwym obliczeniu kwot w {currency}.",drivers:"Sterowniki",new_driver:"Dodaj nowego dostawcę",edit_driver:"Edytuj dostawcę",select_driver:"Wybierz sterownik",update:"wybierz kurs wymiany ",providers_description:"Skonfiguruj dostawców kursu wymiany walut, aby automatycznie pobierać najnowszy kurs wymiany walut.",key:"Klucz API",name:"Nazwa",driver:"Sterownik",is_default:"JEST DOMYŚLNY",currency:"Waluty",exchange_rate_confirm_delete:"Nie będziesz w stanie odzyskać tego sterownika",created_message:"Dostawca utworzony pomyślnie",updated_message:"Dostawca zaktualizowany pomyślnie",deleted_message:"Dostawca usunięty pomyślnie",error:" Nie można usunąć aktywnego sterownika",default_currency_error:"Ta waluta jest już używana w jednym z aktywnych dostawców",exchange_help_text:"Wprowadź kurs wymiany walut, aby przeliczyć z {currency} na {baseCurrency}",currency_freak:"Currency Freak",currency_layer:"Currency Layer",open_exchange_rate:"Open Exchange Rate",currency_converter:"Przelicznik walut",server:"Serwer",url:"Adres URL",active:"Aktywny",currency_help_text:"Ten dostawca będzie używany tylko dla wybranych walut",currency_in_used:"Następujące waluty są już aktywne u innego dostawcy. Usuń te waluty z wyboru, aby ponownie aktywować tego dostawcę."},tax_types:{title:"Rodzaje opodatkowania",add_tax:"Dodaj podatek",edit_tax:"Edytuj podatek",description:"Możesz dodawać lub usuwać podatki. InvoiceShelf obsługuje podatki od poszczególnych produktów, jak również na fakturze.",add_new_tax:"Dodaj nowy podatek",tax_settings:"Ustawienia podatku",tax_per_item:"Podatek na produkt",tax_name:"Nazwa podatku",compound_tax:"Podatek złożony",percent:"Procent",action:"Akcja",tax_setting_description:"Włącz to, jeśli chcesz dodać podatki do poszczególnych elementów faktury. Domyślnie podatki są dodawane bezpośrednio do całej faktury.",created_message:"Typ podatku został pomyślnie utworzony",updated_message:"Typ podatku został pomyślnie zaktualizowany",deleted_message:"Typ podatku został pomyślnie usunięty",confirm_delete:"Nie będziesz w stanie odzyskać tego typu podatku",already_in_use:"Ten podatek jest w użyciu"},payment_modes:{title:"Metody Płatności",description:"Sposoby transakcji dla płatności",add_payment_mode:"Dodaj metodę płatności",edit_payment_mode:"Edytuj metodę płatności",mode_name:"Nazwa metody",payment_mode_added:"Dodano metodę płatności",payment_mode_updated:"Zaktualizowano metodę płatności",payment_mode_confirm_delete:"Nie będziesz w stanie odzyskać tej metody płatności",payments_attached:"Ta metoda płatności jest już dołączona do płatności. Proszę usunąć załączone płatności, aby kontynuować usuwanie.",expenses_attached:"Ta metoda płatności jest już dołączona do wydatków. Proszę usunąć załączone wydatki, aby kontynuować usuwanie.",deleted_message:"Metoda płatności została pomyślnie usunięta"},expense_category:{title:"Kategorie wydatków",action:"Akcja",description:"Kategorie są wymagane do dodawania wpisów wydatków. Możesz dodać lub usunąć te kategorie zgodnie ze swoimi preferencjami.",add_new_category:"Dodaj nową kategorię",add_category:"Dodaj kategorię",edit_category:"Edytuj kategorię",category_name:"Nazwa kategorii",category_description:"Opis",created_message:"Kategoria wydatków została utworzona pomyślnie",deleted_message:"Kategoria wydatków została usunięta pomyślnie",updated_message:"Kategoria wydatków zaktualizowana pomyślnie",confirm_delete:"Nie będziesz w stanie odzyskać tej kategorii wydatków",already_in_use:"Kategoria jest już w użyciu"},preferences:{currency:"Waluta",default_language:"Domyślny język",time_zone:"Strefa czasowa",fiscal_year:"Rok finansowy",date_format:"Format daty",discount_setting:"Ustawienia rabatu",discount_per_item:"Rabat na produkt ",discount_setting_description:"Włącz to, jeśli chcesz dodać rabat do poszczególnych elementów faktury. Domyślnie rabat jest dodawany bezpośrednio do całej faktury.",expire_public_links:"Automatycznie wygasaj linki publiczne",expire_setting_description:"Określ czy chcesz wygaszać wszystkie linki wysłane przez aplikację w celu przeglądania faktur, ofert i płatności itp. po określonym czasie.",save:"Zapisz",preference:"Preferencje | Preferencje",general_settings:"Domyślne ustawienia systemu.",updated_message:"Preferencje pomyślnie zaktualizowane",select_language:"Wybierz język",select_time_zone:"Ustaw strefę czasową",select_date_format:"Wybierz format daty",select_financial_year:"Wybierz rok podatkowy",recurring_invoice_status:"Status Faktury Cyklicznej",create_status:"Utwórz status",active:"Aktywne",on_hold:"Wstrzymane",update_status:"Aktualizuj status",completed:"Ukończone",company_currency_unchangeable:"Nie można zmienić waluty firmy"},update_app:{title:"Aktualizuj aplikację",description:"Możesz łatwo zaktualizować InvoiceShelfa poprzez kliknięcie przycisku poniżej",check_update:"Sprawdź czy są dostępne nowe aktualizacje",avail_update:"Dostępna nowa aktualizacja",next_version:"Nowa wersja",requirements:"Wymagania",update:"Aktualizuj teraz",update_progress:"Aktualizacja w toku...",progress_text:"To zajmie tylko kilka minut. Proszę nie odświeżać ekranu ani zamykać okna przed zakończeniem aktualizacji",update_success:"Aplikacja została zaktualizowana! Proszę czekać, aż okno przeglądarki zostanie automatycznie przeładowane.",latest_message:"Brak dostępnych aktualizacji! Posiadasz najnowszą wersję.",current_version:"Aktualna wersja",download_zip_file:"Pobierz plik ZIP",unzipping_package:"Rozpakuj pakiet",copying_files:"Kopiowanie plików",deleting_files:"Usuwanie nieużywanych plików",running_migrations:"Uruchamianie migracji",finishing_update:"Kończenie aktualizacji",update_failed:"Aktualizacja nie powiodła się",update_failed_text:"Przepraszamy! Twoja aktualizacja nie powiodła się w kroku: {step}",update_warning:"Wszystkie pliki aplikacji i domyślne pliki szablonu zostaną nadpisane podczas aktualizacji aplikacji przy użyciu tego narzędzia. Przed aktualizacją wykonaj kopię zapasową szablonów i bazy danych."},backup:{title:"Kopia zapasowa | Kopie zapasowe",description:"Kopia zapasowa jest plikiem zipfile zawierającym wszystkie pliki w katalogach które podasz wraz z zrzutem bazy danych",new_backup:"Dodaj nową kopię zapasową",create_backup:"Utwórz kopię zapasową",select_backup_type:"Wybierz typ kopii zapasowej",backup_confirm_delete:"Nie będziesz w stanie odzyskać tej kopii zapasowej",path:"ścieżka",new_disk:"Nowy dysk",created_at:"utworzono w",size:"rozmiar",dropbox:"dropbox",local:"lokalny",healthy:"zdrowy",amount_of_backups:"liczba kopii zapasowych",newest_backups:"najnowsza kopia zapasowa",used_storage:"zużyta pamięć",select_disk:"Wybierz dysk",action:"Akcja",deleted_message:"Kopia zapasowa usunięta pomyślnie",created_message:"Kopia zapasowa utworzona pomyślnie",invalid_disk_credentials:"Nieprawidłowe dane uwierzytelniające wybranego dysku"},disk:{title:"Dysk plików | Dyski plików",description:"Domyślnie InvoiceShelf użyje twojego lokalnego dysku do zapisywania kopii zapasowych, awatara i innych plików obrazu. Możesz skonfigurować więcej niż jeden serwer dysku, taki jak DigitalOcean, S3 i Dropbox, zgodnie z Twoimi preferencjami.",created_at:"utworzono w",dropbox:"dropbox",name:"Nazwa",driver:"Sterownik",disk_type:"Typ",disk_name:"Nazwa dysku",new_disk:"Dodaj nowy dysk",filesystem_driver:"Sterownik systemu plików",local_driver:"lokalny sterownik",local_root:"główny katalog lokalny",public_driver:"Publiczny sterownik",public_root:"Publiczny główny katalog",public_url:"Publiczny URL",public_visibility:"Widoczność publiczna",media_driver:"Media Driver",media_root:"Media Root",aws_driver:"Sterownik AWS",aws_key:"Klucz AWS",aws_secret:"Tajny klucz AWS",aws_region:"Region AWS",aws_bucket:"Zasobnik AWS",aws_root:"Katalog główny AWS",do_spaces_type:"Typ Do Spaces",do_spaces_key:"Klucz Do Spaces",do_spaces_secret:"Tajny klucz Do Spaces",do_spaces_region:"Region Do Spaces",do_spaces_bucket:"Zasobnik Do Spaces",do_spaces_endpoint:"Punkt dostępowy Do Spaces",do_spaces_root:"Katalog główny Do Spaces",dropbox_type:"Typ Dropbox",dropbox_token:"Token Dropbox",dropbox_key:"Klucz Dropbox",dropbox_secret:"Tajny klucz Dropbox",dropbox_app:"Aplikacja Dropbox",dropbox_root:"Root Dropbox",default_driver:"Domyślny sterownik",is_default:"JEST DOMYŚLNY",set_default_disk:"Ustaw domyślny dysk",set_default_disk_confirm:"Ten dysk zostanie ustawiony jako domyślny, a wszystkie nowe pliki PDF zostaną zapisane na tym dysku",success_set_default_disk:"Dysk został pomyślnie ustawiony jako domyślny",save_pdf_to_disk:"Zapisz pliki PDF na dysku",disk_setting_description:" Włącz tę opcję, jeśli chcesz automatycznie zapisać kopię każdej faktury, oferty i potwierdzenia płatności PDF na swoim domyślnym dysku. Włączenie tej opcji spowoduje skrócenie czasu ładowania podczas przeglądania PDF.",select_disk:"Wybierz dysk",disk_settings:"Ustawienia dysku",confirm_delete:"Twoje istniejące pliki i foldery na określonym dysku nie zostaną zmienione, ale konfiguracja twojego dysku zostanie usunięta z InvoiceShelfa",action:"Akcja",edit_file_disk:"Edytuj dysk plków",success_create:"Dysk dodany pomyślnie",success_update:"Dysk zaktualizowany pomyślnie",error:"Błąd dodawania dysku",deleted_message:"Dysk plików został usunięty pomyślnie",disk_variables_save_successfully:"Dysk skonfigurowany pomyślnie",disk_variables_save_error:"Konfiguracja dysku nieudana.",invalid_disk_credentials:"Nieprawidłowe dane uwierzytelniające wybranego dysku"},taxations:{add_billing_address:"Wprowadź adres do faktury",add_shipping_address:"Wprowadź adres do wysyłki",add_company_address:"Wprowadź adres firmy",modal_description:"Poniższe informacje są wymagane do pobrania podatku od sprzedaży.",add_address:"Dodaj adres do pobierania podatku od sprzedaży.",address_placeholder:"Przykład: 123, Moja ulica",city_placeholder:"Przykład: Los Angeles",state_placeholder:"Przykład: CA",zip_placeholder:"Przykład: 90024",invalid_address:"Podaj poprawne dane adresowe."}},HY={account_info:"Informacje o koncie",account_info_desc:"Poniższe szczegóły zostaną użyte do utworzenia głównego konta administratora. Możesz także zmienić szczegóły w dowolnym momencie po zalogowaniu.",name:"Nazwa",email:"E-mail",password:"Hasło",confirm_password:"Potwierdź hasło",save_cont:"Zapisz i kontynuuj",company_info:"Informacje o firmie",company_info_desc:"Ta informacja będzie wyświetlana na fakturach. Pamiętaj, że możesz to później edytować na stronie ustawień.",company_name:"Nazwa firmy",company_logo:"Logo firmy",logo_preview:"Podgląd loga",preferences:"Preferencje",preferences_desc:"Domyślne preferencje dla systemu.",currency_set_alert:"Nie można później zmienić waluty firmy.",country:"Kraj",state:"Województwo",city:"Miasto",address:"Adres",street:"Ulica1 | Ulica2",phone:"Telefon",zip_code:"Kod pocztowy",go_back:"Wstecz",currency:"Waluta",language:"Język",time_zone:"Strefa czasowa",fiscal_year:"Rok finansowy",date_format:"Format daty",from_address:"Adres nadawcy",username:"Nazwa użytkownika",next:"Następny",continue:"Kontynuuj",skip:"Pomiń",database:{database:"Adres URL witryny i baza danych",connection:"Połączenie z bazą danych",host:"Host bazy danych",port:"Port bazy danych",password:"Hasło bazy danych",app_url:"Adres aplikacji",app_domain:"Domena aplikacji",username:"Nazwa użytkownika bazy danych",db_name:"Nazwa bazy danych",db_path:"Ścieżka do bazy danych",desc:"Utwórz bazę danych na swoim serwerze i ustaw dane logowania za pomocą poniższego formularza."},permissions:{permissions:"Uprawnienia",permission_confirm_title:"Czy na pewno chcesz kontynuować?",permission_confirm_desc:"Sprawdzanie uprawnień do katalogu nie powiodło się",permission_desc:"Poniżej znajduje się lista uprawnień folderów, które są wymagane do działania aplikacji. Jeśli sprawdzenie uprawnień nie powiedzie się, upewnij się, że zaktualizujesz uprawnienia folderu."},verify_domain:{title:"Weryfikacja domeny",desc:"InvoiceShelf używa uwierzytelniania opartego na sesji, które wymaga weryfikacji domeny dla celów bezpieczeństwa. Wprowadź domenę, na której będziesz mieć dostęp do swojej aplikacji internetowej.",app_domain:"Domena aplikacji",verify_now:"Potwierdź teraz",success:"Pomyślnie zweryfikowano domenę.",failed:"Weryfikacja domeny nie powiodła się. Podaj prawidłową nazwę domeny.",verify_and_continue:"Weryfikuj i kontynuuj"},mail:{host:"Adres hosta poczty",port:"Port poczty",driver:"Sposób wysyłania wiadomości e-mail",secret:"Tajny klucz",mailgun_secret:"Mailgun Secret",mailgun_domain:"Domena",mailgun_endpoint:"Punkt dostępowy Mailgun",ses_secret:"Tajny klucz SES",ses_key:"Klucz SES",password:"Hasło poczty",username:"Nazwa użytkownika poczty",mail_config:"Konfiguracja poczty",from_name:"Nazwa nadawcy",from_mail:"Adres e-mail nadawcy",encryption:"Szyfrowanie poczty",mail_config_desc:"Poniżej znajduje się formularz konfiguracji sterownika poczty e-mail do wysyłania wiadomości e-mail z aplikacji. Możesz również skonfigurować zewnętrznych dostawców takich jak Sendgrid, SES itp."},req:{system_req:"Wymagania systemowe",php_req_version:"Minimalna wersja Php (wymagana wersja {version})",check_req:"Sprawdź wymagania",system_req_desc:"InvoiceShelf posiada kilka wymagań serwera. Upewnij się, że Twój serwer ma wymaganą wersję php oraz wszystkie rozszerzenia wymienione poniżej."},errors:{migrate_failed:"Migracja nie powiodła się",database_variables_save_error:"Nie można zapisać konfiguracji do pliku .env. Proszę sprawdzić jego uprawnienia",mail_variables_save_error:"Konfiguracja email nie powiodła się.",connection_failed:"Błąd połączenia z bazą danych",database_should_be_empty:"Baza danych powinna być pusta"},success:{mail_variables_save_successfully:"Email został skonfigurowany pomyślnie",database_variables_save_successfully:"Baza danych została skonfigurowana poprawnie."}},WY={invalid_phone:"Nieprawidłowy numer telefonu",invalid_url:"Nieprawidłowy adres url (np. http://www.invoiceshelf.com)",invalid_domain_url:"Nieprawidłowy adres url (np. invoiceshelf.com)",required:"Pole jest wymagane",email_incorrect:"Niepoprawny email.",email_already_taken:"Ten adres e-mail jest już zajęty.",email_does_not_exist:"Użytkownik z podanym adresem email nie istnieje",item_unit_already_taken:"Ta nazwa jednostki została już zajęta",payment_mode_already_taken:"Ta nazwa trybu płatności została już zajęta",send_reset_link:"Wyślij link do resetowania hasła",not_yet:"Jeszcze nie? Wyślij ponownie",password_min_length:"Hasło musi zawierać co najmniej {count} znaków",name_min_length:"Nazwa użytkownika musi zawierać co najmniej {count} znaków.",prefix_min_length:"Przedrostek musi mieć co najmniej {count} liter.",enter_valid_tax_rate:"Wprowadź poprawną stawkę podatku",numbers_only:"Tylko liczby.",characters_only:"Tylko znaki.",password_incorrect:"Hasła muszą być identyczne",password_length:"Hasło musi zawierać {count} znaków.",qty_must_greater_than_zero:"Ilość musi być większa niż zero.",price_greater_than_zero:"Cena musi być większa niż zero.",payment_greater_than_zero:"Płatność musi być większa niż zero.",payment_greater_than_due_amount:"Wprowadzona płatność to więcej niż należna kwota tej faktury.",quantity_maxlength:"Ilość nie powinna być większa niż 20 cyfr.",price_maxlength:"Cena nie powinna być większa niż 20 cyfr.",price_minvalue:"Cena powinna być większa niż 0.",amount_maxlength:"Kwota nie powinna być większa niż 20 cyfr.",amount_minvalue:"Kwota powinna być większa niż 0.",discount_maxlength:"Rabat nie powinien być większy niż maksymalny rabat",description_maxlength:"Opis nie powinien przekraczać 65 000 znaków.",subject_maxlength:"Temat nie powinien być dłuższy niż 100 znaków.",message_maxlength:"Wiadomość nie powinna być dłuższa niż 255 znaków.",maximum_options_error:"Wybrano maksymalnie {max} opcji. Najpierw usuń wybraną opcję, aby wybrać inną.",notes_maxlength:"Notatki nie powinny być większe niż 65 000 znaków.",address_maxlength:"Adres nie powinien mieć więcej niż 255 znaków.",ref_number_maxlength:"Numer referencyjny nie może być dłuższy niż 255 znaków.",prefix_maxlength:"Prefiks nie powinien być dłuższy niż 5 znaków.",something_went_wrong:"coś poszło nie tak",number_length_minvalue:"Długość numeru powinna być większa niż 0",at_least_one_ability:"Wybierz co najmniej jedno Uprawnienie.",valid_driver_key:"Wprowadź prawidłowy klucz {driver}.",valid_exchange_rate:"Wprowadź prawidłowy kurs wymiany.",company_name_not_same:"Nazwa firmy musi się zgadzać z podaną nazwą."},KY={starter_plan:"Ta funkcja jest dostępna w abonamencie Starter i wyższych!",invalid_provider_key:"Wprowadź poprawny klucz API dostawcy.",estimate_number_used:"Numer oferty jest już użyty.",invoice_number_used:"Numer faktury jest już użyty.",payment_attached:"Ta faktura ma już dołączoną płatność. Najpierw usuń załączone płatności, aby kontynuować usuwanie.",payment_number_used:"Numer płatności jest już użyty.",name_already_taken:"Nazwa jest już użyta.",receipt_does_not_exist:"Potwierdzenie nie istnieje.",customer_cannot_be_changed_after_payment_is_added:"Klient nie może być zmieniony po dodaniu płatności",invalid_credentials:"Nieprawidłowe dane.",not_allowed:"Niedozwolone",login_invalid_credentials:"Wprowadzone poświadczenia są nieprawidłowe.",enter_valid_cron_format:"Wprowadź prawidłowy format cron",email_could_not_be_sent:"Nie można wysłać wiadomości na ten adres e-mail.",invalid_address:"Wprowadź prawidłowy adres.",invalid_key:"Wprowadź prawidłowy klucz.",invalid_state:"Wprowadź poprawny stan/województwo.",invalid_city:"Wprowadź prawidłową nazwę miasta.",invalid_postal_code:"Wprowadź prawidłowy kod pocztowy.",invalid_format:"Wprowadź prawidłowy format ciągu.",api_error:"Serwer nie odpowiada.",feature_not_enabled:"Funkcja nie jest włączona.",request_limit_met:"Przekroczono limit żądania API.",address_incomplete:"Niekompletny adres"},YY="Oferta",ZY="Numer oferty",GY="Data oferty",QY="Termin ważności",JY="Faktura",XY="Numer faktury",eZ="Data faktury",tZ="Termin",aZ="Notatki",nZ="Pozycje",iZ="Ilość",oZ="Cena",rZ="Rabat",sZ="Kwota",lZ="Suma częściowa",cZ="Razem",dZ="Płatność",uZ="POTWIERDZENIE PŁATNOŚCI",_Z="Data płatności",mZ="Numer płatności",pZ="Metoda płatności",fZ="Kwota otrzymana",hZ="SPRAWOZDANIE Z WYDATKÓW",gZ="WYDATKI OGÓŁEM",vZ="RAPORT ZYSKÓW I STRAT",yZ="Raport sprzedaży obsługi kontrahenta",bZ="Raport dotyczący przedmiotu sprzedaży",kZ="Raport podsumowania podatku",wZ="PRZYCHÓD",xZ="ZYSK NETTO",DZ="Raport sprzedaży: Według Kontrahenta",SZ="CAŁKOWITA SPRZEDAŻ",zZ="Raport sprzedaży: Według produktu",PZ="RAPORT PODATKOWY",EZ="CAŁKOWITY PODATEK",AZ="Rodzaje podatku",CZ="Wydatki",jZ="Wystawiono dla",TZ="Wysyłka do",IZ="Otrzymane od:",NZ="Podatek",FZ={navigation:zY,general:PY,dashboard:EY,tax_types:AY,global_search:CY,company_switcher:jY,dateRange:TY,customers:IY,items:NY,estimates:FY,invoices:MY,recurring_invoices:RY,payments:OY,expenses:$Y,login:LY,modules:BY,users:UY,reports:VY,settings:qY,wizard:HY,validation:WY,errors:KY,pdf_estimate_label:YY,pdf_estimate_number:ZY,pdf_estimate_date:GY,pdf_estimate_expire_date:QY,pdf_invoice_label:JY,pdf_invoice_number:XY,pdf_invoice_date:eZ,pdf_invoice_due_date:tZ,pdf_notes:aZ,pdf_items_label:nZ,pdf_quantity_label:iZ,pdf_price_label:oZ,pdf_discount_label:rZ,pdf_amount_label:sZ,pdf_subtotal:lZ,pdf_total:cZ,pdf_payment_label:dZ,pdf_payment_receipt_label:uZ,pdf_payment_date:_Z,pdf_payment_number:mZ,pdf_payment_mode:pZ,pdf_payment_amount_received_label:fZ,pdf_expense_report_label:hZ,pdf_total_expenses_label:gZ,pdf_profit_loss_label:vZ,pdf_sales_customers_label:yZ,pdf_sales_items_label:bZ,pdf_tax_summery_label:kZ,pdf_income_label:wZ,pdf_net_profit_label:xZ,pdf_customer_sales_report:DZ,pdf_total_sales_label:SZ,pdf_item_sales_label:zZ,pdf_tax_report_label:PZ,pdf_total_tax_label:EZ,pdf_tax_types_label:AZ,pdf_expenses_label:CZ,pdf_bill_to:jZ,pdf_ship_to:TZ,pdf_received_from:IZ,pdf_tax_label:NZ},MZ={dashboard:"Painel",customers:"Clientes",items:"Itens",invoices:"Faturas",expenses:"Despesas",estimates:"Orçamentos",payments:"Pagamentos",reports:"Relatórios",settings:"Configurações",logout:"Encerrar sessão"},RZ={view_pdf:"Ver PDF",download_pdf:"Baixar PDF",save:"Salvar",cancel:"Cancelar",update:"Atualizar",deselect:"Desmarcar",download:"Baixar",from_date:"A partir da Data",to_date:"Até a Data",from:"De",to:"Para",sort_by:"Ordenar por",ascending:"Crescente",descending:"Descendente",subject:"Sujeita",body:"Corpo",message:"Mensagem",go_back:"Voltar",back_to_login:"Voltar ao Login",home:"Home",filter:"Filtrar",delete:"Excluir",edit:"Editar",view:"Ver",add_new_item:"Adicionar novo item",clear_all:"Limpar tudo",showing:"Mostrando",of:"de",actions:"Ações",subtotal:"Total parcial",discount:"Desconto",fixed:"Fixado",percentage:"Porcentagem",tax:"Imposto",total_amount:"Quantidade Total",bill_to:"Cobrar a",ship_to:"Envie a",due:"Vencida",draft:"Rascunho",sent:"Enviado",all:"Todos",select_all:"Selecionar tudo",choose_file:"Escolha um arquivo.",choose_template:"Escolha um modelo",choose:"Escolher",remove:"Excluir",powered_by:"Distribuído por",bytefury:"Bytefury",select_a_status:"Selecione um status",select_a_tax:"Selecione um Imposto",search:"Buscar",are_you_sure:"Tem certeza?",list_is_empty:"Lista está vazia.",no_tax_found:"Imposto não encontrado!",four_zero_four:"404",you_got_lost:"Ops! Se perdeu!",go_home:"Ir para Home",test_mail_conf:"Testar configuração de email",send_mail_successfully:"Correio enviado com sucesso",setting_updated:"Configuração atualizada com sucesso",select_state:"Selecione Estado",select_country:"Selecionar pais",select_city:"Selecionar cidade",street_1:"Rua 1",street_2:"Rua # 2",action_failed:"Ação: Falhou",retry:"Atualização falhou"},OZ={select_year:"Selecione Ano",cards:{due_amount:"Montante devido",customers:"Clientes",invoices:"Faturas",estimates:"Orçamentos"},chart_info:{total_sales:"Vendas",total_receipts:"Receitas",total_expense:"Despesas",net_income:"Resultado líquido",year:"Selecione Ano"},monthly_chart:{title:"Vendas e Despesas"},recent_invoices_card:{title:"Faturas vencidas",due_on:"vencido em",customer:"Cliente",amount_due:"Valor Devido",actions:"Ações",view_all:"Ver todos"},recent_estimate_card:{title:"Orçamentos Recentes",date:"Data",customer:"Cliente",amount_due:"Valor Devido",actions:"Ações",view_all:"Ver todos"}},$Z={name:"Nome",description:"Descrição",percent:"Porcentagem",compound_tax:"Imposto compuesto"},LZ={title:"Clientes",add_customer:"Adicionar cliente",contacts_list:"Lista de clientes",name:"Nome",display_name:"Nome de exibição",primary_contact_name:"Nome do contato principal",contact_name:"Nome de Contato",amount_due:"Valor Devido",email:"Email",address:"Endereço",phone:"Telefone",website:"Site",country:"Pais",state:"Estado",city:"Cidade",zip_code:"Código postal",added_on:"Adicionado",action:"Ação",password:"Senha",street_number:"Número",primary_currency:"Moeda principal",add_new_customer:"Adicionar novo cliente",save_customer:"Salvar cliente",update_customer:"Atualizar cliente",customer:"Cliente | Clientes",new_customer:"Novo cliente",edit_customer:"Editar cliente",basic_info:"Informação basica",billing_address:"Endereço de cobrança",shipping_address:"Endereço de entrega",copy_billing_address:"Cópia de faturamento",no_customers:"Ainda não há clientes!",no_customers_found:"Clientes não encontrados!",no_contact:"No contact",no_contact_name:"No contact name",list_of_customers:"Esta seção conterá a lista de clientes.",primary_display_name:"Nome de exibição principal",select_currency:"Selecione o tipo de moeda",select_a_customer:"Selecione um cliente",type_or_click:"Digite ou clique para selecionar",new_transaction:"Nova transação",no_matching_customers:"Não há clientes correspondentes!",phone_number:"Número de telefone",create_date:"Criar Data",confirm_delete:"Você não poderá recuperar este cliente e todas as faturas, estimativas e pagamentos relacionados. | Você não poderá recuperar esses clientes e todas as faturas, estimativas e pagamentos relacionados.",created_message:"Cliente criado com sucesso",updated_message:"Cliente atualizado com sucesso",deleted_message:"Cliente excluído com sucesso | Clientes excluídos com sucesso"},BZ={title:"Itens",items_list:"Lista de Itens",name:"Nome",unit:"Unidade",description:"Descrição",added_on:"Adicionado",price:"Preço",date_of_creation:"Data de criação",not_selected:"No item selected",action:"Ação",add_item:"Adicionar item",save_item:"Salvar item",update_item:"Atualizar item",item:"Item | Itens",add_new_item:"Adicionar novo item",new_item:"Novo item",edit_item:"Editar item",no_items:"Ainda não existe itens",list_of_items:"Esta seção conterá a lista de itens.",select_a_unit:"Seleciona unidade",taxes:"Impostos",item_attached_message:"Não é possível excluir um item que já está em uso.",confirm_delete:"Você não poderá recuperar este item | Você não poderá recuperar esses itens",created_message:"Item criado com sucesso",updated_message:"Item atualizado com sucesso",deleted_message:"Item excluído com sucesso | Itens Excluídos com sucesso"},UZ={title:"Orçamentos",estimate:"Orçamento | Orçamentos",estimates_list:"Lista de orçamentos",days:"{dias} dias",months:"{meses} Mês",years:"{Anos} Ano",all:"Todos",paid:"Pago",unpaid:"Não pago",customer:"CLIENTE",ref_no:"NÚMERO DE REFERÊNCIA.",number:"NÚMERO",amount_due:"Valor Devido",partially_paid:"Pago parcialmente",total:"Total",discount:"Desconto",sub_total:"Subtotal",estimate_number:"Numero do Orçamento",ref_number:"Referência",contact:"Contato",add_item:"Adicionar Item",date:"Data",due_date:"Data de Vencimento",expiry_date:"Data de expiração",status:"Status",add_tax:"Adicionar Imposto",amount:"Montante",action:"Ação",notes:"Observações",tax:"Imposto",estimate_template:"Modelo de orçamento",convert_to_invoice:"Converter em fatura",mark_as_sent:"Marcar como enviado",send_estimate:"Enviar orçamento",record_payment:"Registro de pago",add_estimate:"Adicionar orçamento",save_estimate:"Salvar Orçamento",confirm_conversion:"Deseja converter este orçamento em uma fatura?",conversion_message:"Converção realizada com sucesso",confirm_send_estimate:"Este orçamento será enviado por email ao cliente",confirm_mark_as_sent:"Este orçamento será marcado como enviado",confirm_mark_as_accepted:"Este orçamento será marcado como Aceito",confirm_mark_as_rejected:"Este orçamento será marcado como Rejeitado",no_matching_estimates:"Não há orçamentos correspondentes!",mark_as_sent_successfully:"Orçamento como marcado como enviado com sucesso",send_estimate_successfully:"Orçamento enviado com sucesso",errors:{required:"Campo obrigatório"},accepted:"Aceito",rejected:"Rejected",sent:"Enviado",draft:"Rascunho",declined:"Rejeitado",new_estimate:"Novo orçamento",add_new_estimate:"Adicionar novo orçamento",update_Estimate:"Atualizar orçamento",edit_estimate:"Editar orçamento",items:"artículos",Estimate:"Orçamento | Orçamentos",add_new_tax:"Adicionar novo imposto",no_estimates:"Ainda não há orcamentos",list_of_estimates:"Esta seção contém a lista de orçamentos.",mark_as_rejected:"Marcar como rejeitado",mark_as_accepted:"Marcar como aceito",marked_as_accepted_message:"Orçamento marcado como aceito",marked_as_rejected_message:"Orçamento marcado como rejeitado",confirm_delete:"Não poderá recuperar este orçamento | Não poderá recuperar estes orçamentos",created_message:"Orçamento criado com sucesso",updated_message:"Orçamento atualizado com sucesso",deleted_message:"Orçamento excluído com sucesso | Orçamentos excluídos com sucesso",something_went_wrong:"Algo deu errado",item:{title:"Titulo do item",description:"Descrição",quantity:"Quantidade",price:"Preço",discount:"Desconto",total:"Total",total_discount:"Desconto total",sub_total:"Subtotal",tax:"Imposto",amount:"Montante",select_an_item:"Escreva ou clique para selecionar um item",type_item_description:"Tipo Item Descrição (opcional)"}},VZ={title:"Faturas",invoices_list:"Lista de faturas",days:"{dias} dias",months:"{meses} Mês",years:"{anos} Ano",all:"Todas",paid:"Paga",unpaid:"Não Paga",viewed:"Viewed",overdue:"Overdue",completed:"Completed",customer:"CLIENTE",paid_status:"STATUS PAGAMENTO",ref_no:"REFERÊNCIA",number:"NÚMERO",amount_due:"VALOR DEVIDO",partially_paid:"Parcialmente pago",total:"Total",discount:"Desconto",sub_total:"Subtotal",invoice:"Fatura | Faturas",invoice_number:"Número da fatura",ref_number:"Referência",contact:"Contato",add_item:"Adicionar um item",date:"Data",due_date:"Data de Vencimento",status:"Status",add_tax:"Adicionar imposto",amount:"Montante",action:"Ação",notes:"Observações",view:"Ver",send_invoice:"Enviar Fatura",invoice_template:"Modelo da Fatura",template:"Modelo",mark_as_sent:"Marcar como enviada",confirm_send_invoice:"Esta fatura será enviada por e-mail ao cliente",invoice_mark_as_sent:"Esta fatura será marcada como enviada",confirm_send:"Esta fatura será enviada por e-mail ao cliente",invoice_date:"Data da Fatura",record_payment:"Gravar Pagamento",add_new_invoice:"Adicionar Nova Fatura",update_expense:"Atualizar Despesa",edit_invoice:"Editar Fatura",new_invoice:"Nova Fatura",save_invoice:"Salvar Fatura",update_invoice:"Atualizar Fatura",add_new_tax:"Adicionar novo Imposto",no_invoices:"Ainda não há faturas!",list_of_invoices:"Esta seção conterá a lista de faturas.",select_invoice:"Selecionar Fatura",no_matching_invoices:"Não há faturas correspondentes!",mark_as_sent_successfully:"Fatura marcada como enviada com sucesso",invoice_sent_successfully:"Fatura enviada com sucesso",cloned_successfully:"Fatura clonada com sucesso",clone_invoice:"Clonar fatura",confirm_clone:"Esta fatura será clonada em uma nova fatura",item:{title:"Titulo do Item",description:"Descrição",quantity:"Quantidade",price:"Preço",discount:"Desconto",total:"Total",total_discount:"Desconto Total",sub_total:"SubTotal",tax:"Imposto",amount:"Montante",select_an_item:"Digite ou clique para selecionar um item",type_item_description:"Tipo Descrição do item (opcional)"},confirm_delete:"Você não poderá recuperar esta fatura | Você não poderá recuperar essas faturas",created_message:"Fatura criada com sucesso",updated_message:"Fatura atualizada com sucesso",deleted_message:"Fatura excluída com sucesso | Faturas excluídas com sucesso",marked_as_sent_message:"Fatura marcada como enviada com sucesso",something_went_wrong:"Algo deu errado",invalid_due_amount_message:"O valor total da fatura não pode ser menor que o valor total pago para esta fatura. Atualize a fatura ou exclua os pagamentos associados para continuar."},qZ={title:"Pagamentos",payments_list:"Lista de Pagamentos",record_payment:"Gravar Pagamento",customer:"Cliente",date:"Data",amount:"Montante",action:"Ação",payment_number:"Número do Pagamento",payment_mode:"Forma de Pagamento",invoice:"Fatura",note:"Observação",add_payment:"Adicionar Pagamento",new_payment:"Novo Pagamento",edit_payment:"Editar Pagamento",view_payment:"Ver Pagamento",add_new_payment:"Adicionar novo Pagamento",send_payment_receipt:"Enviar recibo de pagamento",save_payment:"Salvar Pagamento",send_payment:"Mande o pagamento",update_payment:"Atualizar Pagamento",payment:"Pagamento | Pagamentos",no_payments:"Ainda sem pagamentos!",not_selected:"Not selected",no_invoice:"No invoice",no_matching_payments:"Não há pagamentos correspondentes!",list_of_payments:"Esta seção conterá a lista de pagamentos.",select_payment_mode:"Selecione a forma de pagamento",confirm_delete:"Você não poderá recuperar este Pagamento | Você não poderá recuperar esses Pagamentos",created_message:"Pagamento criado com sucesso",updated_message:"Pagamento atualizado com sucesso",deleted_message:"Pagamento excluído com sucesso | Pagamentos excluídos com sucesso",invalid_amount_message:"O valor do pagamento é inválido"},HZ={title:"Despesas",expenses_list:"Lista de Despesas",expense_title:"Título",contact:"Contato",category:"Categoria",customer:"Cliente",from_date:"A partir da Data",to_date:"Até a Data",expense_date:"Data",description:"Descrição",receipt:"Receita",amount:"Montante",action:"Ação",not_selected:"Not selected",note:"Observação",category_id:"Categoria",date:"Data da Despesa",add_expense:"Adicionar Despesa",add_new_expense:"Adicionar Nova Despesa",save_expense:"Salvar Despesa",update_expense:"Atualizar Despesa",download_receipt:"Baixar Receita",edit_expense:"Editar Despesa",new_expense:"Nova Despesa",expense:"Despesa | Despesas",no_expenses:"Ainda sem Despesas!",list_of_expenses:"Esta seção conterá a lista de despesas.",confirm_delete:"Você não poderá recuperar esta despesa | Você não poderá recuperar essas despesas",created_message:"Despesa criada com sucesso",updated_message:"Despesa atualizada com sucesso",deleted_message:"Despesas excluídas com sucesso | Despesas excluídas com sucesso",categories:{categories_list:"Lista de Categorias",title:"Título",name:"Nome",description:"Descrição",amount:"Montante",actions:"Ações",add_category:"Adicionar Categoria",new_category:"Nova Categoria",category:"Categoria | Categorias",select_a_category:"Selecionar uma Categoria"}},WZ={email:"Email",password:"Senha",forgot_password:"Esqueceu a senha?",or_signIn_with:"ou Entre com",login:"Entrar",register:"Registre-se",reset_password:"Resetar Senha",password_reset_successfully:"Senha redefinida com sucesso",enter_email:"Digite email",enter_password:"Digite a senha",retype_password:"Confirme a Senha"},KZ={title:"Relatório",from_date:"A partir da Data",to_date:"Até a Data",status:"Status",paid:"Pago",unpaid:"Não Pago",download_pdf:"Baixar PDF",view_pdf:"Ver PDF",update_report:"Atualizar Relatório",report:"Relatório | Relatórios",profit_loss:{profit_loss:"Perda de lucro",to_date:"Até a Data",from_date:"A partir da Data",date_range:"Selecionar período"},sales:{sales:"Vendas",date_range:"Selecionar período",to_date:"Até a Data",from_date:"A partir da Data",report_type:"Tipo de Relatório"},taxes:{taxes:"Impostos",to_date:"Até a Data",from_date:"A partir da Data",date_range:"Selecionar período"},errors:{required:"Campo obrigatório"},invoices:{invoice:"Fatura",invoice_date:"Data da Fatura",due_date:"Data de Vencimento",amount:"Montante",contact_name:"Nome de Contato",status:"Status"},estimates:{estimate:"Orçamento",estimate_date:"Data do Orçamento",due_date:"Data de Vencimento",estimate_number:"Número do Orçamento",ref_number:"Referência",amount:"Montante",contact_name:"Nome de Contato",status:"Status"},expenses:{expenses:"Despesas",category:"Categoria",date:"Data",amount:"Montante",to_date:"Até a Data",from_date:"A partir da Data",date_range:"Selecionar período"}},YZ={menu_title:{account_settings:"Configurações da conta",company_information:"Informações da Empresa",customization:"Personalizar",preferences:"Preferências",notifications:"Notificações",tax_types:"Tipos de Impostos",expense_category:"Categorias de Despesas",update_app:"Atualizar Aplicativo",custom_fields:"Os campos personalizados"},title:"Configurações",setting:"Configuração | Configurações",general:"Geral",language:"Idioma",primary_currency:"Moéda Principal",timezone:"Fuso horário",date_format:"Formato de data",currencies:{title:"Moedas",currency:"Moeda | Moedas",currencies_list:"Moedas",select_currency:"Selecione uma Moeda",name:"Nome",code:"Código",symbol:"Símbolo",precision:"Precisão",thousand_separator:"Separador de Milhar",decimal_separator:"Separador Decimal",position:"Posição",position_of_symbol:"Posição do Símbolo",right:"Direita",left:"Esquerda",action:"Ação",add_currency:"Adicionar Moeda"},mail:{host:"Host de Email",port:"Porta de Email",driver:"Mail Driver",secret:"Segredo",mailgun_secret:"Mailgun Segredo",mailgun_domain:"Domínio",mailgun_endpoint:"Mailgun Endpoint",ses_secret:"SES Segredo",ses_key:"SES Chave",password:"Senha do Email",username:"Nome de Usuário do Email",mail_config:"Configuração de Email",from_name:"Do Nome de Email",from_mail:"Do Endereço de Email",encryption:"Criptografia de Email",mail_config_desc:"Abaixo está o formulário para configurar o driver de email para enviar emails do aplicativo. Você também pode configurar provedores de terceiros como Sendgrid, SES etc."},pdf:{title:"Configurações de PDF",footer_text:"Texto do Rodapé",pdf_layout:"Layout de PDF"},company_info:{company_info:"Informação da Empresa",company_name:"Nome da Empresa",company_logo:"Logotipo da Empresa",section_description:"Informações sobre sua empresa que serão exibidas em Faturas, Orçamentos e outros documentos criados pela InvoiceShelf.",phone:"Telefone",country:"Pais",state:"Estado",city:"Cidade",address:"Endereço",zip:"CEP",save:"Salvar",updated_message:"Informações da Empresa atualizadas com sucesso"},custom_fields:{title:"Os campos personalizados",add_custom_field:"Adicionar campo personalizado",edit_custom_field:"Editar campo personalizado",field_name:"Nome do campo",type:"Tipo",name:"Nome",required:"Requeridas",label:"Rótulo",placeholder:"Placeholder",help_text:"Texto de ajuda",default_value:"Valor padrão",prefix:"Prefixo",starting_number:"Número inicial",model:"Modelo",help_text_description:"Digite algum texto para ajudar os usuários a entender a finalidade desse campo personalizado.",suffix:"Sufixo",yes:"sim",no:"Não",order:"Ordem",custom_field_confirm_delete:"Você não poderá recuperar este campo personalizado",already_in_use:"O campo personalizado já está em uso",deleted_message:"Campo personalizado excluído com sucesso",options:"opções",add_option:"Adicionar opções",add_another_option:"Adicione outra opção",sort_in_alphabetical_order:"Classificar em ordem alfabética",add_options_in_bulk:"Adicionar opções em massa",use_predefined_options:"Use Predefined Options",select_custom_date:"Selecionar data personalizada",select_relative_date:"Selecionar data relativa",ticked_by_default:"Marcado por padrão",updated_message:"Campo personalizado atualizado com sucesso",added_message:"Campo personalizado adicionado com sucesso"},customization:{customization:"Personalizar",save:"Salvar",addresses:{title:"Endereço",section_description:"Você pode definir o endereço de cobrança do cliente e o formato do endereço de entrega do cliente (exibido apenas em PDF).",customer_billing_address:"Endereço de Cobrança do Cliente",customer_shipping_address:"Endereço de Entrega do Cliente",company_address:"Endereço da Empresa",insert_fields:"Inserir Campos",contact:"Contato",address:"Endereço",display_name:"Nome em Exibição",primary_contact_name:"Nome do Contato Principal",email:"Email",website:"Website",name:"Nome",country:"Pais",state:"Estado",city:"Cidade",company_name:"Nome da Empresa",address_street_1:"Endereço Rua 1",address_street_2:"Endereço Rua 2",phone:"Telefone",zip_code:"CEP",address_setting_updated:"Configuração de Endereço Atualizada com Sucesso"},updated_message:"Informações da Empresa atualizadas com sucesso",invoices:{title:"Faturas",notes:"Notas",invoice_prefix:"Fatura Prefixo",invoice_settings:"Configrações da Fatura",autogenerate_invoice_number:"Gerar automaticamente o número da Fatura",autogenerate_invoice_number_desc:"Desative isso, se você não deseja gerar automaticamente números da Fatura sempre que criar uma nova.",enter_invoice_prefix:"Digite o prefixo da Fatura",terms_and_conditions:"Termos e Condições",invoice_settings_updated:"Configuração da Fatura atualizada com sucesso"},estimates:{title:"Orçamentos",estimate_prefix:"Orçamento Prefixo",estimate_settings:"Configurações do Orçamento",autogenerate_estimate_number:"Gerar automaticamente o número do Orçamento",estimate_setting_description:"Desative isso, se você não deseja gerar automaticamente números do Orçamento sempre que criar um novo.",enter_estimate_prefix:"Digite o prefixo do Orçamento",estimate_setting_updated:"Configuração do Orçamento atualizada com sucesso"},payments:{title:"Pagamentos",payment_prefix:"Pagamento Prefixo",payment_settings:"Configurações de Pagamento",autogenerate_payment_number:"Gerar automaticamente número do Pagamento",payment_setting_description:"Desative isso, se você não deseja gerar automaticamente números do Pagamento sempre que criar um novo.",enter_payment_prefix:"Digite o Prefixo do Pagamento",payment_setting_updated:"Configurações de Pagamento atualizada com sucesso",payment_mode:"Modo de pagamento",add_payment_mode:"Adicionar modo de pagamento",edit_payment_mode:"Editar modo de pagamento",mode_name:"Nome do modo",payment_mode_added:"Modo de pagamento adicionado",payment_mode_updated:"Modo de pagamento atualizado",payment_mode_confirm_delete:"Você não poderá recuperar este modo de pagamento",already_in_use:"O modo de pagamento já está em uso",deleted_message:"Modo de pagamento excluído com sucesso"},items:{title:"Itens",units:"unidades",add_item_unit:"Adicionar unidade de item",edit_item_unit:"Editar unidade de item",unit_name:"Nome da unidade",item_unit_added:"Item Unit Added",item_unit_updated:"Item Unit Updated",item_unit_confirm_delete:"Você não poderá recuperar esta unidade de item",already_in_use:"A unidade do item já está em uso",deleted_message:"Unidade de item excluída com sucesso"}},account_settings:{profile_picture:"Foto do Perfil",name:"Nome",email:"Email",password:"Senha",confirm_password:"Confirmar Senha",account_settings:"Configurações da conta",save:"Salvar",section_description:"Você pode atualizar seu nome, email e senha usando o formulário abaixo.",updated_message:"Configurações da conta atualizadas com sucesso"},user_profile:{name:"Nome",email:"Email",password:"Password",confirm_password:"Confirmar Senha"},notification:{title:"Notificação",email:"Enviar Notificações para",description:"Quais notificações por email você gostaria de receber quando algo mudar?",invoice_viewed:"Fatura Visualizada",invoice_viewed_desc:"Quando o seu cliente visualiza uma Fatura enviada pelo painel do InvoiceShelf.",estimate_viewed:"Orçamento Visualizado",estimate_viewed_desc:"Quando o seu cliente visualiza um Orçamento enviada pelo painel do InvoiceShelf.",save:"Salvar",email_save_message:"E-mail salvo com sucesso",please_enter_email:"Por favor digite um E-mail"},tax_types:{title:"Tipos de Impostos",add_tax:"Adicionar Imposto",edit_tax:"Editar imposto",description:"Você pode adicionar ou remover impostos conforme desejar. O InvoiceShelf suporta impostos sobre itens individuais e também na Fatura.",add_new_tax:"Adicionar Novo Imposto",tax_settings:"Configurações de Impostos",tax_per_item:"Imposto por Item",tax_name:"Nome do Imposto",compound_tax:"Imposto Composto",percent:"Porcentagem",action:"Ação",tax_setting_description:"Habilite isso se desejar adicionar Impostos a itens da Fatura Idividualmente. Por padrão, os impostos são adicionados diretamente à Fatura.",created_message:"Tipo de Imposto criado com sucesso",updated_message:"Tipo de Imposto Atualizado com sucesso",deleted_message:"Tipo de Imposto Deletado com sucesso",confirm_delete:"Você não poderá recuperar este tipo de Imposto",already_in_use:"O Imposto já está em uso"},expense_category:{title:"Categoria de Despesa",action:"Ação",description:"As Categorias são necessárias para adicionar entradas de Despesas. Você pode adicionar ou remover essas Categorias de acordo com sua preferência.",add_new_category:"Adicionar Nova Categoria",add_category:"Adicionar categoria",edit_category:"Editar categoria",category_name:"Nome da Categoria",category_description:"Descrição",created_message:"Categoria de Despesa criada com sucesso",deleted_message:"Categoria de Despesa excluída com sucesso",updated_message:"Categoria de Despesa atualizada com sucesso",confirm_delete:"Você não poderá recuperar esta Categoria de Despesa",already_in_use:"A categoria já está em uso"},preferences:{currency:"Moeda",language:"Idioma",time_zone:"Fuso Horário",fiscal_year:"Ano Financeiro",date_format:"Formato da Data",discount_setting:"Configuração de Desconto",discount_per_item:"Desconto por Item ",discount_setting_description:"Habilite isso se desejar adicionar desconto a itens de Fatura individualmente. Por padrão, o desconto é adicionado diretamente à Fatura.",save:"Salvar",preference:"Preferência | Preferências",general_settings:"Preferências padrão para o sistema.",updated_message:"Preferências atualizadas com sucesso",select_language:"Selecione um Idioma",select_time_zone:"Selecione um fuso horário",select_date_formate:"Selecione um formato de data",select_financial_year:"Selecione o ano financeiro"},update_app:{title:"Atualizar Aplicativo",description:"Você pode atualizar facilmente o InvoiceShelf, verifique se hà novas atualizações, clicando no botão abaixo",check_update:"Verifique se há atualizações",avail_update:"Nova atualização disponível",next_version:"Próxima versão",update:"Atualizar agora",update_progress:"Atualização em progresso...",progress_text:"Levará apenas alguns minutos. Não atualize a tela ou feche a janela antes que a atualização seja concluída",update_success:"O aplicativo foi atualizado! Aguarde enquanto a janela do navegador é recarregada automaticamente.",latest_message:"Nenhuma atualização disponível! Você está na versão mais recente.",current_version:"Versão Atual",download_zip_file:"Baixar arquivo ZIP",unzipping_package:"Descompactando o pacote",copying_files:"Copiando arquivos",running_migrations:"Executando migrações",finishing_update:"Atualização de acabamento",update_failed:"Atualização falhou",update_failed_text:"Desculpa! Sua atualização falhou em: {step} step"}},ZZ={account_info:"Informação da conta",account_info_desc:"Os detalhes abaixo serão usados para criar a conta principal do administrador. Além disso, você pode alterar os detalhes a qualquer momento após o login.",name:"Nome",email:"Email",password:"Senha",confirm_password:"Confirmar Senha",save_cont:"Salvar e Continuar",company_info:"Informação da Empresa",company_info_desc:"Esta informação será exibida nas Faturas. Observe que você pode editar isso mais tarde na página de configurações.",company_name:"Nome da Empresa",company_logo:"Logotipo da Empresa",logo_preview:"Previsualizar Logotipo",preferences:"Preferências",preferences_desc:"Preferências padrão para o sistema.",country:"Pais",state:"Estado",city:"Cidade",address:"Endereço",street:"Rua 1 | Rua 2",phone:"Telefone",zip_code:"CEP",go_back:"Voltar",currency:"Moeda",language:"Idioma",time_zone:"Fuso Horário",fiscal_year:"Ano Financeiro",date_format:"Formato de Data",from_address:"Do Endereço",username:"Nome de Usuário",next:"Próximo",continue:"Continuar",skip:"Pular",database:{database:"URL do Site e Base de Dados",connection:"Conexão da Base de Dados",host:"Host da Base de Dados",port:"Porta da Base de Dados",password:"Senha da Base de Dados",app_url:"URL do Aplicativo",username:"Usuário da Base de Dados",db_name:"Nome da Base de Dados",desc:"Crie um Banco de Dados no seu servidor e defina as credenciais usando o formulário abaixo."},permissions:{permissions:"Permissões",permission_confirm_title:"Você tem certeza que quer continuar?",permission_confirm_desc:"Falha na verificação de permissão da pasta",permission_desc:"Abaixo está a lista de permissões de pasta que são necessárias para que o aplicativo funcione. Se a verificação da permissão falhar, atualize as permissões da pasta."},mail:{host:"Host do email",port:"Porta do email",driver:"Driver do email",secret:"Segredo",mailgun_secret:"Segredo do Mailgun",mailgun_domain:"Domínio",mailgun_endpoint:"Endpoint do Mailgun",ses_secret:"Segredo do SES",ses_key:"Chave SES",password:"Senha do email",username:"Nome do Usuário do email",mail_config:"Configuração de email",from_name:"Nome do email",from_mail:"Endereço de email",encryption:"Criptografia de email",mail_config_desc:"Abaixo está o formulário para configurar o driver de email que será usado para enviar emails do aplicativo. Você também pode configurar provedores de terceiros como Sendgrid, SES etc."},req:{system_req:"Requisitos de Sistema",php_req_version:"PHP (versão {version} obrigatória)",check_req:"Verificar Requisitos",system_req_desc:"O InvoiceShelf tem alguns requisitos de servidor. Verifique se o seu servidor possui a versão do PHP necessária e todas as extensões mencionadas abaixo."},errors:{migrate_failed:"Falha na migração",database_variables_save_error:"Não é possível gravar a configuração no arquivo .env. Por favor, verifique suas permissões de arquivo",mail_variables_save_error:"A configuração do email falhou.",connection_failed:"Falha na conexão com o banco de dados",database_should_be_empty:"O banco de dados deve estar vazio"},success:{mail_variables_save_successfully:"Email configurado com sucesso",database_variables_save_successfully:"Banco de dados configurado com sucesso."}},GZ={invalid_phone:"Número de telefone inválido",invalid_url:"url inválidas (ex: http://www.invoiceshelf.com)",required:"Campo obrigatório",email_incorrect:"E-mail incorreto",email_already_taken:"O email já foi recebido.",email_does_not_exist:"O usuário com determinado email não existe",send_reset_link:"Enviar link de redefinição",not_yet:"Ainda não? Envie novamente",password_min_length:"A senha deve conter {count} caracteres",name_min_length:"O nome deve ter pelo menos {count} letras.",enter_valid_tax_rate:"Insira uma taxa de imposto válida",numbers_only:"Apenas Números.",characters_only:"Apenas Caracteres.",password_incorrect:"As senhas devem ser idênticas",password_length:"A senha deve ter {count} caracteres.",qty_must_greater_than_zero:"A quantidade deve ser maior que zero.",price_greater_than_zero:"O preço deve ser maior que zero.",payment_greater_than_zero:"O pagamento deve ser maior que zero.",payment_greater_than_due_amount:"O pagamento inserido é mais do que o valor devido desta fatura.",quantity_maxlength:"A quantidade não deve exceder 20 dígitos.",price_maxlength:"O preço não deve ser superior a 20 dígitos.",price_minvalue:"O preço deve ser maior que 0.",amount_maxlength:"Montante não deve ser superior a 20 dígitos.",amount_minvalue:"Montante deve ser maior que zero",description_maxlength:"A descrição não deve ter mais que 255 caracteres.",maximum_options_error:"Máximo de {max} opções selecionadas. Primeiro remova uma opção selecionada para selecionar outra.",notes_maxlength:"As anotações não devem ter mais que 255 caracteres.",address_maxlength:"O endereço não deve ter mais que 255 caracteres.",ref_number_maxlength:"O número de referência não deve ter mais que 255 caracteres.",prefix_maxlength:"O prefixo não deve ter mais que 5 caracteres."},QZ={navigation:MZ,general:RZ,dashboard:OZ,tax_types:$Z,customers:LZ,items:BZ,estimates:UZ,invoices:VZ,payments:qZ,expenses:HZ,login:WZ,reports:KZ,settings:YZ,wizard:ZZ,validation:GZ},JZ={dashboard:"Pannello di controllo",customers:"Clienti",items:"Commesse",invoices:"Fatture","recurring-invoices":"Fatture ricorrenti",expenses:"Spese",estimates:"Preventivi",payments:"Pagamenti",reports:"Rapporti",settings:"Configurazione",logout:"Disconnessione",users:"Utenti",modules:"Moduli"},XZ={add_company:"Aggiungi azienda",view_pdf:"Vedi PDF",copy_pdf_url:"Copia URL PDF",download_pdf:"Scarica PDF",save:"Salva",create:"Crea",cancel:"Elimina",update:"Aggiorna",deselect:"Deseleziona",download:"Scarica",from_date:"Dalla Data",to_date:"Alla Data",from:"Da",to:"A",ok:"Ok",yes:"Sì",no:"No",sort_by:"Ordina per",ascending:"Crescente",descending:"Decrescente",subject:"Oggetto",body:"Corpo",message:"Messaggio",send:"Invia",preview:"Anteprima",go_back:"Torna indietro",back_to_login:"Torna al Login?",home:"Home",filter:"Filtro",delete:"Elimina",edit:"Modifica",view:"Visualizza",add_new_item:"Aggiungi nuova Commessa",clear_all:"Pulisci tutto",showing:"Visualizzo",of:"di",actions:"Azioni",subtotal:"SUBTOTALE",discount:"SCONTO",fixed:"Fissato",percentage:"Percentuale",tax:"TASSA",total_amount:"AMMONTARE TOTALE",bill_to:"Fattura a",ship_to:"Invia a",due:"Dovuto",draft:"Bozza",sent:"Inviata",all:"Tutte",select_all:"Seleziona tutto",select_template:"Seleziona Template",choose_file:"Clicca per selezionare un file",choose_template:"Scegli un modello",choose:"Scegli",remove:"Rimuovi",select_a_status:"Seleziona uno Stato",select_a_tax:"Seleziona imposta",search:"Cerca",are_you_sure:"Sei sicuro/a?",list_is_empty:"La lista è vuota.",no_tax_found:"Nessuna imposta trovata!",four_zero_four:"404",you_got_lost:"Hoops! Ti sei perso",go_home:"Vai alla Home",test_mail_conf:"Configurazione della mail di test",send_mail_successfully:"Mail inviata con successo",setting_updated:"Configurazioni aggiornate con successo",select_state:"Seleziona lo Stato",select_country:"Seleziona Paese",select_city:"Seleziona Città",street_1:"Indirizzo 1",street_2:"Indirizzo 2",action_failed:"Errore",retry:"Riprova",choose_note:"Scegli Nota",no_note_found:"Nessuna Nota Trovata",insert_note:"Inserisci Nota",copied_pdf_url_clipboard:"Url PDF copiato negli appunti!",copied_url_clipboard:"URL copiato negli appunti!",docs:"Documenti",do_you_wish_to_continue:"Vuoi continuare?",note:"Nota",pay_invoice:"Paga Fattura",login_successfully:"Accesso effettuato con successo!",logged_out_successfully:"Disconnessione riuscita",mark_as_default:"Contrassegna come predefinito"},eG={select_year:"Seleziona anno",cards:{due_amount:"Somma dovuta",customers:"Clienti",invoices:"Fatture",estimates:"Preventivi",payments:"Pagamenti"},chart_info:{total_sales:"Vendite",total_receipts:"Ricevute",total_expense:"Uscite",net_income:"Guadagno netto",year:"Seleziona anno"},monthly_chart:{title:"Entrate & Uscite"},recent_invoices_card:{title:"Fatture insolute",due_on:"Data di scadenza",customer:"Cliente",amount_due:"Ammontare dovuto",actions:"Azioni",view_all:"Vedi tutto"},recent_estimate_card:{title:"Preventivi recenti",date:"Data",customer:"Cliente",amount_due:"Ammontare dovuto",actions:"Azioni",view_all:"Vedi tutto"}},tG={name:"Nome",description:"Descrizione",percent:"Percento",compound_tax:"Imposta composta"},aG={search:"Cerca...",customers:"Clienti",users:"Utenti",no_results_found:"Nessun Risultato Trovato"},nG={label:"CAMBIA AZIENDA",no_results_found:"Nessun Risultato Trovato",add_new_company:"Aggiungi una nuova azienda",new_company:"Nuova Azienda",created_message:"Azienda creata con successo"},iG={today:"Oggi",this_week:"Questa Settimana",this_month:"Questo mese",this_quarter:"Questo Trimestre",this_year:"Anno corrente",previous_week:"Settimana precedente",previous_month:"Mese precedente",previous_quarter:"Trimestre Precedente",previous_year:"Anno Precedente",custom:"Personalizzato"},oG={title:"Clienti",prefix:"Prefisso",add_customer:"Aggiungi cliente",contacts_list:"Lista clienti",name:"Nome",mail:"Mail | Mails",statement:"Dichiarazione",display_name:"Nome Visibile",primary_contact_name:"Riferimento",contact_name:"Nome Contatto",amount_due:"Ammontare dovuto",email:"Email",address:"Indirizzo",phone:"Telefono",website:"Sito web",overview:"Panoramica",invoice_prefix:"Prefisso Fattura",estimate_prefix:"Prefisso Preventivi",payment_prefix:"Prefisso Pagamento",enable_portal:"Abilita Portale",country:"Paese",state:"Provincia",city:"Città",zip_code:"Codice Postale",added_on:"Aggiunto il",action:"Azione",password:"Password",confirm_password:"Conferma Password",street_number:"Numero Civico",primary_currency:"Valùta Principale",description:"Descrizione",add_new_customer:"Aggiungi nuovo Cliente",save_customer:"Salva Cliente",update_customer:"Aggiorna Cliente",customer:"Cliente | Clienti",new_customer:"Nuovo cliente",edit_customer:"Modifica Cliente",basic_info:"Informazioni",portal_access:"Accesso al Portale",portal_access_text:"Vuoi consentire a questo cliente di accedere al Portale Clienti?",portal_access_url:"URL Login Portale Cliente",portal_access_url_help:"Copia e inoltra l'URL sopra indicato al tuo cliente per fornire l'accesso.",billing_address:"Indirizzo di Fatturazione",shipping_address:"Indirizzo di Spedizione",copy_billing_address:"Copia da Fatturazione",no_customers:"Ancora nessun Cliente!",no_customers_found:"Nessun cliente trovato!",no_contact:"Nessun contatto",no_contact_name:"Nessun nome del contatto",list_of_customers:"Qui ci sarà la lista dei tuoi clienti",primary_display_name:"Mostra il Nome Principale",select_currency:"Selezione Valùta",select_a_customer:"Seleziona Cliente",type_or_click:"Scrivi o clicca per selezionare",new_transaction:"Nuova transazione",no_matching_customers:"Non ci sono clienti corrispondenti!",phone_number:"Numero di telefono",create_date:"Crea data",confirm_delete:"Non sarai in grado di recuperare questo cliente e tutte le relative fatture, stime e pagamenti. | Non sarai in grado di recuperare questi clienti e tutte le relative fatture, stime e pagamenti.",created_message:"Cliente creato con successo",updated_message:"Cliente aggiornato con successo",address_updated_message:"Indirizzo aggiornato con successo",deleted_message:"Cliente cancellato con successo | Clienti cancellati con successo",edit_currency_not_allowed:"Impossibile cambiare valuta, dopo aver creato transazioni."},rG={title:"Commesse",items_list:"Lista Commesse",name:"Nome",unit:"Unità/Tipo",description:"Descrizione",added_on:"Aggiunto il",price:"Prezzo",date_of_creation:"Data di creazione",not_selected:"Nessun elemento selezionato",action:"Azione",add_item:"Aggiungi Commessa",save_item:"Salva",update_item:"Aggiorna",item:"Commessa | Commesse",add_new_item:"Aggiungi nuova Commessa",new_item:"Nuova Commessa",edit_item:"Modifica Commessa",no_items:"Ancora nessuna commessa!",list_of_items:"Qui ci sarà la lista delle commesse.",select_a_unit:"Seleziona",taxes:"Imposte",item_attached_message:"Non puoi eliminare una Commessa che è già attiva",confirm_delete:"Non potrai ripristinare la Commessa | Non potrai ripristinare le Commesse",created_message:"Commessa creata con successo",updated_message:"Commessa aggiornata con successo",deleted_message:"Commessa eliminata con successo | Commesse eliminate con successo"},sG={title:"Preventivi",accept_estimate:"Accetta Preventivo",reject_estimate:"Rifiuta Preventivo",estimate:"Preventivo | Preventivi",estimates_list:"Lista Preventivi",days:"{days} Giorni",months:"{months} Mese",years:"{years} Anno",all:"Tutti",paid:"Pagato",unpaid:"Non pagato",customer:"CLIENTE",ref_no:"RIF N.",number:"NUMERO",amount_due:"AMMONTARE DOVUTO",partially_paid:"Pagamento Parziale",total:"Totale",discount:"Sconto",sub_total:"Sub Totale",estimate_number:"Preventivo Numero",ref_number:"Numero di Rif.",contact:"Contatto",add_item:"Aggiungi un item",date:"Data",due_date:"Data di pagamento",expiry_date:"Data di scadenza",status:"Stato",add_tax:"Aggiungi Imposta",amount:"Ammontare",action:"Azione",notes:"Note",tax:"Imposta",estimate_template:"Modello",convert_to_invoice:"Converti in Fattura",mark_as_sent:"Segna come Inviata",send_estimate:"Invia preventivo",resend_estimate:"Reinvia Preventivo",record_payment:"Registra Pagamento",add_estimate:"Aggiungi Preventivo",save_estimate:"Salva Preventivo",confirm_conversion:"Questo preventivo verrà usato per generare una nuova fattura.",conversion_message:"Fattura creata",confirm_send_estimate:"Questo preventivo verrà inviato al cliente via mail",confirm_mark_as_sent:"Questo preventivo verrà contrassegnato come inviato",confirm_mark_as_accepted:"Questo preventivo verrà contrassegnato come Accettato",confirm_mark_as_rejected:"Questo preventivo verrà contrassegnato come Rifiutato",no_matching_estimates:"Nessun preventivo trovato!",mark_as_sent_successfully:"Preventivo contrassegnato come inviato con successo",send_estimate_successfully:"Preventivo inviato con successo",errors:{required:"Campo obbligatorio"},accepted:"Accettato",rejected:"Rifiutato",expired:"Scaduto",sent:"Inviato",draft:"Bozza",viewed:"Visualizzato",declined:"Rifiutato",new_estimate:"Nuovo Preventivo",add_new_estimate:"Crea Nuovo Preventivo",update_Estimate:"Aggiorna preventivo",edit_estimate:"Modifica Preventivo",items:"Commesse",Estimate:"Preventivo | Preventivi",add_new_tax:"Aggiungi una nuova tassa/imposta",no_estimates:"Ancora nessun preventivo!",list_of_estimates:"Questa sezione conterrà la lista dei preventivi.",mark_as_rejected:"Segna come Rifiutato",mark_as_accepted:"Segna come Accettato",marked_as_accepted_message:"Preventivo contrassegnato come accettato",marked_as_rejected_message:"Preventivo contrassegnato come rifiutato",confirm_delete:"Non potrai più recuperare questo preventivo | Non potrai più recuperare questi preventivi",created_message:"Preventivo creato con successo",updated_message:"Preventivo modificato con successo",deleted_message:"Preventivo eliminato con successo | Preventivi eliminati con successo",something_went_wrong:"Si è verificato un errore",item:{title:"Titolo Commessa",description:"Descrizione",quantity:"Quantità",price:"Prezzo",discount:"Sconto",total:"Totale",total_discount:"Sconto Totale",sub_total:"Sub Totale",tax:"Tasse",amount:"Ammontare",select_an_item:"Scrivi o clicca per selezionare un item",type_item_description:"Scrivi una Descrizione (opzionale)"},mark_as_default_estimate_template_description:"Se abilitato, il modello selezionato verrà selezionato automaticamente per i nuovi preventivi."},lG={title:"Fatture",download:"Scarica",pay_invoice:"Paga Fattura",invoices_list:"Lista Fatture",invoice_information:"Informazioni Fattura",days:"{days} Giorni",months:"{months} Mese",years:"{years} Anno",all:"Tutti",paid:"Pagato",unpaid:"Insoluta",viewed:"Visualizzato",overdue:"Scaduta",completed:"Completata",customer:"CLIENTE",paid_status:"STATO DI PAGAMENTO",ref_no:"RIF N.",number:"NUMERO",amount_due:"AMMONTARE DOVUTO",partially_paid:"Parzialmente Pagata",total:"Totale",discount:"Sconto",sub_total:"Sub Totale",invoice:"Fattura | Fatture",invoice_number:"Numero Fattura",ref_number:"Rif Numero",contact:"Contatto",add_item:"Aggiungi Commessa/Item",date:"Data",due_date:"Data di pagamento",status:"Stato",add_tax:"Aggiungi Imposta",amount:"Ammontare",action:"Azione",notes:"Note",view:"Vedi",send_invoice:"Invia Fattura",resend_invoice:"Reinvia Fattura",invoice_template:"Modello Fattura",conversion_message:"Fattura duplicata con successo",template:"Modello",mark_as_sent:"Segna come inviata",confirm_send_invoice:"Questa fattura sarà inviata via Mail al Cliente",invoice_mark_as_sent:"Questa fattura sarà contrassegnata come inviata",confirm_mark_as_accepted:"Questa fattura verrà contrassegnata come Accettata",confirm_mark_as_rejected:"Questa fattura sarà contrassegnata come Rifiutata",confirm_send:"Questa fattura sarà inviata via Mail al Cliente",invoice_date:"Data fattura",record_payment:"Registra Pagamento",add_new_invoice:"Aggiungi nuova Fattura",update_expense:"Aggiorna Costo",edit_invoice:"Modifica Fattura",new_invoice:"Nuova Fattura",save_invoice:"Salva fattura",update_invoice:"Aggiorna Fattura",add_new_tax:"Aggiungi tassa/imposta",no_invoices:"Ancora nessuna fattura!",mark_as_rejected:"Segna come rifiutata",mark_as_accepted:"Segna come accettata",list_of_invoices:"Questa sezione conterrà la lista delle Fatture.",select_invoice:"Seleziona Fattura",no_matching_invoices:"Nessuna fattura trovata!",mark_as_sent_successfully:"Fattura contassegnata come inviata con successo",invoice_sent_successfully:"Fattura inviata correttamente",cloned_successfully:"Fattura copiata con successo",clone_invoice:"Clona Fattura",confirm_clone:"Questa fattura verrà clonata in una nuova fattura",item:{title:"Titolo Commessa",description:"Descrizione",quantity:"Quantità",price:"Prezzo",discount:"Sconto",total:"Totale",total_discount:"Sconto Totale",sub_total:"Sub Totale",tax:"Tassa",amount:"Ammontare",select_an_item:"Scrivi o clicca per selezionare un item",type_item_description:"Scrivi una descrizione (opzionale)"},payment_attached_message:"Una delle fatture selezionate ha già associato un pagamento. Assicurati di eliminare il pagamento associato prima di procedere con la rimozione",confirm_delete:"Non potrai recuperare la Fattura cancellata | Non potrai recuperare le Fatture cancellate",created_message:"Fattura creata con successo",updated_message:"Fattura aggiornata con successo",deleted_message:"Fattura cancellata con successo | Fatture cancellate con successo",marked_as_sent_message:"Fattura contrassegnata come inviata con successo",something_went_wrong:"Si è verificato un errore",invalid_due_amount_message:"L'ammontare totale della fattura non può essere inferiore all'ammontare totale pagato per questa fattura. Modifica la fattura o cancella i pagamenti associati per continuare.",mark_as_default_invoice_template_description:"Se abilitata, il modello selezionato verrà selezionato automaticamente per le nuove fatture."},cG={title:"Fatture ricorrenti",invoices_list:"Elenco Fatture ricorrenti",days:"{days} Giorni",months:"{months} Mese",years:"{years} Anno",all:"Tutte",paid:"Pagata",unpaid:"Non Pagata",viewed:"Vista",overdue:"In ritardo",active:"Attiva",completed:"Completata",customer:"CLIENTE",paid_status:"STATO DI PAGAMENTO",ref_no:"Riferimento #",number:"NUMERO",amount_due:"AMMONTARE DOVUTO",partially_paid:"Parzialmente Pagata",total:"Totale",discount:"Sconto",sub_total:"Totale Parziale",invoice:"Fattura Ricorrente | Fatture Ricorrenti",invoice_number:"Numero Della Fattura Ricorrente",next_invoice_date:"Data Prossima Fattura",ref_number:"Numero di Rif.",contact:"Contatto",add_item:"Aggiungi un elemento",date:"Data",limit_by:"Limita per",limit_date:"Data limite",limit_count:"Conteggio Limite",count:"Conteggio",status:"Stato",select_a_status:"Seleziona uno Stato",working:"Elaborando",on_hold:"In sospeso",complete:"Completate",add_tax:"Aggiungi imposta",amount:"Quantità",action:"Azione",notes:"Note",view:"Visualizza",basic_info:"Info Di Base",send_invoice:"Invia Fattura Ricorrente",auto_send:"Invio automatico",resend_invoice:"Reinvia Fattura Ricorrente",invoice_template:"Template Fattura Ricorrente",conversion_message:"Fattura duplicata con successo",template:"Template",mark_as_sent:"Segna come inviata",confirm_send_invoice:"Questa fattura ricorrente verrà inviata via email al cliente",invoice_mark_as_sent:"Questa fattura sarà contrassegnata come inviata",confirm_send:"Questa fattura ricorrente verrà inviata via e-mail al cliente",starts_at:"Data Inzio",due_date:"Data di scadenza fattura",record_payment:"Registra Pagamento",add_new_invoice:"Nuova Fattura ricorrente",update_expense:"Aggiorna Spesa",edit_invoice:"Modifica Fattura Ricorrente",new_invoice:"Nuova Fattura Ricorrente",send_automatically:"Invia automaticamente",send_automatically_desc:"Abilitare questa opzione, se si desidera inviare automaticamente la fattura al cliente quando viene creata.",save_invoice:"Salva Fattura Ricorrente",update_invoice:"Aggiorna Fattura Ricorrente",add_new_tax:"Aggiungi una nuova tassa/imposta",no_invoices:"Ancora nessuna Fattura Ricorrente!",mark_as_rejected:"Segna come rifiutata",mark_as_accepted:"Segna come accettata",list_of_invoices:"Questa sezione conterrà l'elenco delle fatture ricorrenti.",select_invoice:"Seleziona Fattura",no_matching_invoices:"Nessuna fattura trovata!",mark_as_sent_successfully:"Fattura contassegnata come inviata con successo",invoice_sent_successfully:"Fattura inviata con successo",cloned_successfully:"Fattura copiata con successo",clone_invoice:"Duplica Fattura Ricorrente",confirm_clone:"Questa fattura ricorrente verrà clonata in una nuova fattura ricorrente",add_customer_email:"Inserisci una E-Mail per inviare automaticamente fatture al cliente.",item:{title:"Titolo Articolo",description:"Descrizione",quantity:"Quantità",price:"Prezzo",discount:"Sconto",total:"Totale",total_discount:"Sconto Totale",sub_total:"Totale Parziale",tax:"Tassa",amount:"Importo",select_an_item:"Digita o clicca per selezionare un elemento",type_item_description:"Tipo Descrizione Articolo (Opzionale)"},frequency:{title:"Frequenza",select_frequency:"Seleziona Frequenza",minute:"Minuto",hour:"Ora",day_month:"Giorno del mese",month:"Mese",day_week:"Giorno della settimana"},confirm_delete:"Non sarai in grado di recuperare questa fattura | Non sarai in grado di recuperare queste fatture",created_message:"Fattura ricorrente creata con successo",updated_message:"Fattura ricorrente aggiornata correttamente",deleted_message:"Fattura ricorrente eliminata con successo | Fatture ricorrenti eliminate con successo",marked_as_sent_message:"Fattura ricorrente contrassegnata come inviata correttamente",user_email_does_not_exist:"L'e-mail dell'utente non esiste",something_went_wrong:"qualcosa è andato storto",invalid_due_amount_message:"L'importo totale delle fatture ricorrenti non può essere inferiore all'importo totale pagato per questa fattura ricorrente. Si prega di aggiornare la fattura o eliminare i pagamenti associati per continuare."},dG={title:"Pagamenti",payments_list:"Lista Pagamenti",record_payment:"Registra Pagamento",customer:"Cliente",date:"Data",amount:"Ammontare",action:"Azione",payment_number:"Numero di pagamento",payment_mode:"Modalità di Pagamento",invoice:"Fattura",note:"Nota",add_payment:"Aggiungi Pagamento",new_payment:"Nuovo Pagamento",edit_payment:"Modifica Pagamento",view_payment:"Vedi Pagamento",add_new_payment:"Aggiungi nuovo pagamento",send_payment_receipt:"Invia ricevuta di pagamento",send_payment:"Inviare il pagamento",save_payment:"Salva pagamento",update_payment:"Aggiorna pagamento",payment:"Pagamento | Pagamenti",no_payments:"Ancora nessun pagamento!",not_selected:"Non Selezionato",no_invoice:"Nessuna fattura",no_matching_payments:"Non ci sono pagamenti!",list_of_payments:"Questa sezione conterrà la lista dei pagamenti.",select_payment_mode:"Seleziona modalità di pagamento",confirm_mark_as_sent:"Questo preventivo verrà contrassegnato come inviato",confirm_send_payment:"Questo pagamento verrà inviato via email al cliente",send_payment_successfully:"Pagamento inviato con successo",something_went_wrong:"si è verificato un errore",confirm_delete:"Non potrai recuperare questo pagamento | Non potrai recuperare questi pagamenti",created_message:"Pagamento creato con successo",updated_message:"Pagamento aggiornato con successo",deleted_message:"Pagamento cancellato con successo | Pagamenti cancellati con successo",invalid_amount_message:"L'ammontare del pagamento non è valido"},uG={title:"Spese",expenses_list:"Lista Costi",select_a_customer:"Seleziona Cliente",expense_title:"Titolo",customer:"Cliente",currency:"Valuta",contact:"Contatto",category:"Categoria",from_date:"Dalla Data",to_date:"Alla Data",expense_date:"Data",description:"Descrizione",receipt:"Ricevuta",amount:"Ammontare",action:"Azione",not_selected:"Non selezionata",note:"Nota",category_id:"Id categoria",date:"Data Spesa",add_expense:"Aggiungi Spesa",add_new_expense:"Aggiungi nuova Spesa",save_expense:"Salva la Spesa",update_expense:"Aggiorna Spesa",download_receipt:"Scarica la Ricevuta",edit_expense:"Modifica Spesa",new_expense:"Nuova Spesa",expense:"Spesa | Spese",no_expenses:"Ancora nessuna spesa!",list_of_expenses:"Questa sezione conterrà la lista delle Spese.",confirm_delete:"Non potrai recuperare questa spesa | Non potrai recuperare queste spese",created_message:"Spesa creata con successo",updated_message:"Spesa modificata con successo",deleted_message:"Spesa cancellata con successo | Spese cancellate con successo",categories:{categories_list:"Lista categorie",title:"Titolo",name:"Nome",description:"Descrizione",amount:"Ammontare",actions:"Azioni",add_category:"Aggiungi Categoria",new_category:"Nuova Categoria",category:"Categoria | Categorie",select_a_category:"Seleziona Categoria"}},_G={email:"Email",password:"Password",forgot_password:"Password dimenticata?",or_signIn_with:"o fai login con",login:"Accedi",register:"Registrati",reset_password:"Resetta Password",password_reset_successfully:"Password Resettata con successo",enter_email:"Inserisci email",enter_password:"Inserisci Password",retype_password:"Ridigita Password"},mG={buy_now:"Acquista Ora",install:"Installa",price:"Prezzo",download_zip_file:"Scarica il file zip",unzipping_package:"Decompressione del pacchetto in corso",copying_files:"Copia dei file in corso",deleting_files:"Eliminazione dei file inutilizzati",completing_installation:"Finalizzando l'installazione",update_failed:"Aggiornamento non riuscito",install_success:"Modulo installato con successo!",customer_reviews:"Recensioni",license:"Licenza",faq:"FAQ",monthly:"Mensile",yearly:"Annuale",updated:"Aggiornato",version:"Versione",disable:"Disabilita",module_disabled:"Modulo disabilitato",enable:"Attiva",module_enabled:"Modulo attivato",update_to:"Aggiorna a",module_updated:"Modulo aggiornato con successo!",title:"Moduli",module:"Modulo | Moduli",api_token:"Token API",invalid_api_token:"Token API non valido.",other_modules:"Altri Moduli",view_all:"Visualizza tutto",no_reviews_found:"Non ci sono ancora recensioni per questo modulo!",module_not_purchased:"Modulo non acquistato",module_not_found:"Modulo non trovato",version_not_supported:"This module version doesn't support the current version of InvoiceShelf",last_updated:"Ultimo aggiornamento il",connect_installation:"Collega la tua installazione",api_token_description:"Accedi a {url} e collega questa installazione inserendo l'API Token. I moduli acquistati verranno visualizzati qui dopo aver stabilito la connessione.",view_module:"Mostra Modulo",update_available:"Aggiornamento disponibile",purchased:"Acquistato",installed:"Installato",no_modules_installed:"Nessun modulo installato ancora!",disable_warning:"Tutte le impostazioni per questo particolare verranno ripristinate.",what_you_get:"Cosa puoi ottenere"},pG={title:"Utenti",users_list:"Lista Utenti",name:"Nome",description:"Descrizione",added_on:"Aggiunto il",date_of_creation:"Data di creazione",action:"Azione",add_user:"Aggiungi Utente",save_user:"Salva Utente",update_user:"Aggiorna Utente",user:"Utente | Utenti",add_new_user:"Aggiungi Nuovo Utente",new_user:"Nuovo Utente",edit_user:"Modifica Utente",no_users:"Ancora nessun utente!",list_of_users:"Questa sezione conterrà l'elenco degli utenti.",email:"Email",phone:"Telefono",password:"Password",user_attached_message:"Non puoi eliminare una Commessa che è già attiva",confirm_delete:"Non sarai in grado di recuperare questo utente | Non sarai in grado di recuperare questi utenti",created_message:"Utente creato correttamente",updated_message:"Utente aggiornato correttamente",deleted_message:"Utente eliminato con successo | Utenti eliminati con successo",select_company_role:"Seleziona ruolo per {company}",companies:"Aziende"},fG={title:"Segnala",from_date:"Da",to_date:"A",status:"Stato",paid:"Pagato",unpaid:"Non pagato",download_pdf:"Scarica PDF",view_pdf:"Vedi PDF",update_report:"Aggiorna Report",report:"Segnalazione | Segnalazioni",profit_loss:{profit_loss:"Guadagni & Perdite",to_date:"A",from_date:"Da",date_range:"Seleziona intervallo date"},sales:{sales:"Vendite",date_range:"Seleziona intervallo date",to_date:"A",from_date:"Da",report_type:"Tipo di report"},taxes:{taxes:"Tasse",to_date:"Alla data",from_date:"Dalla data",date_range:"Seleziona intervallo date"},errors:{required:"Campo obbligatorio"},invoices:{invoice:"Fattura",invoice_date:"Data fattura",due_date:"Data di pagamento",amount:"Ammontare",contact_name:"Nome contatto",status:"Stato"},estimates:{estimate:"Preventivo",estimate_date:"Data preventivo",due_date:"Data di pagamento",estimate_number:"Numero di preventivo",ref_number:"Numero di Rif.",amount:"Ammontare",contact_name:"Nome contatto",status:"Stato"},expenses:{expenses:"Spese",category:"Categoria",date:"Data",amount:"Ammontare",to_date:"Alla data",from_date:"Dalla data",date_range:"Seleziona intervallo date"}},hG={menu_title:{account_settings:"Impostazioni Account",company_information:"Informazioni Azienda",customization:"Personalizzazione",preferences:"Opzioni",notifications:"Notifiche",tax_types:"Tipi di Imposte",expense_category:"Categorie di spesa",update_app:"Aggiorna App",backup:"Backup",file_disk:"Disco File",custom_fields:"Campi personalizzati",payment_modes:"Modalità di Pagamento",notes:"Note",exchange_rate:"Tasso di cambio",address_information:"Indirizzo"},address_information:{section_description:" Puoi aggiornare le informazioni sul tuo indirizzo utilizzando il modulo sottostante."},title:"Impostazioni",setting:"Opzione | Impostazioni",general:"Generale",language:"Lingua",primary_currency:"Valuta Principale",timezone:"Fuso Orario",date_format:"Formato data",currencies:{title:"Valute",currency:"Valùta | Valute",currencies_list:"Lista valute",select_currency:"Seleziona Valùta",name:"Nome",code:"Codice",symbol:"Simbolo",precision:"Precisione",thousand_separator:"Separatore migliaia",decimal_separator:"Separatore decimali",position:"Posizione",position_of_symbol:"Posizione del Simbolo",right:"Destra",left:"Sinistra",action:"Azione",add_currency:"Aggiungi Valùta"},mail:{host:"Host Mail",port:"Mail - Porta",driver:"Driver Mail",secret:"Segreto",mailgun_secret:"Segreto Mailgun",mailgun_domain:"Dominio",mailgun_endpoint:"Endpoint Mailgun",ses_secret:"Segreto SES",ses_key:"Chiave SES",password:"Password Email",username:"Nome Utente Email",mail_config:"Configurazione Mail",from_name:"Nome Mittente Mail",from_mail:"Indirizzo Mittente Mail",encryption:"Tipo di cifratura Mail",mail_config_desc:"Form per Configurazione Driver Mail per invio mail dall'App. Puoi anche configurare providers di terze parti come Sendgrid, SES, etc.."},pdf:{title:"Configurazione PDF",footer_text:"Testo Footer",pdf_layout:"Layout PDF"},company_info:{company_info:"Info azienda",company_name:"Nome azienda",company_logo:"Logo azienda",section_description:"Informazioni sulla tua azienda che saranno mostrate in fattura, preventivi ed altri documenti creati dell'applicazione.",phone:"Telefono",country:"Paese",state:"Provincia",city:"Città",address:"Indirizzo",zip:"CAP",save:"Salva",delete:"Elimina",updated_message:"Informazioni Azienda aggiornate con successo.",delete_company:"Elimina Azienda",delete_company_description:"Una volta eliminata la tua azienda, perderai tutti i dati e i file associati in modo permanente.",are_you_absolutely_sure:"Sei assolutamente sicuro?",delete_company_modal_desc:"Questa azione non può essere annullata. Questo eliminerà definitivamente {company} e tutti i suoi dati associati.",delete_company_modal_label:"Digita {company} per confermare"},custom_fields:{title:"Campi personalizzati",section_description:"Personalizza le tue fatture, preventivi e ricevute di pagamento con i tuoi campi. Assicurati di utilizzare i campi aggiunti qui sotto nei campi della pagina Personalizzazione delle impostazioni.",add_custom_field:"Aggiungi campo personalizzato",edit_custom_field:"Modifica campo personalizzato",field_name:"Nome campo",label:"Etichetta",type:"genere",name:"Nome",slug:"URL personalizzato",required:"Necessaria",placeholder:"segnaposto",help_text:"Testo guida",default_value:"Valore predefinito",prefix:"Prefisso",starting_number:"Numero iniziale",model:"Modella",help_text_description:"Inserisci del testo per aiutare gli utenti a comprendere lo scopo di questo campo personalizzato.",suffix:"Suffisso",yes:"sì",no:"No",order:"Ordine",custom_field_confirm_delete:"Non sarai in grado di recuperare questo campo personalizzato",already_in_use:"Il campo personalizzato è già in uso",deleted_message:"Campo personalizzato eliminato correttamente",options:"opzioni",add_option:"Aggiungi opzioni",add_another_option:"Aggiungi un'altra opzione",sort_in_alphabetical_order:"Ordina in ordine alfabetico",add_options_in_bulk:"Aggiungi opzioni in blocco",use_predefined_options:"Usa opzioni predefinite",select_custom_date:"Seleziona la data personalizzata",select_relative_date:"Seleziona la data relativa",ticked_by_default:"Contrassegnato per impostazione predefinita",updated_message:"Campo personalizzato aggiornato correttamente",added_message:"Campo personalizzato aggiunto correttamente",press_enter_to_add:"Premi Invio per aggiungere una nuova opzione",model_in_use:"Impossibile aggiornare il modello per i campi già in uso.",type_in_use:"Impossibile aggiornare il tipo per i campi già in uso."},customization:{customization:"personalizzazione",updated_message:"Info azienda aggiornate con successo",save:"Salva",insert_fields:"Inserisci Campi",learn_custom_format:"Impara come utilizzare il formato personalizzato",add_new_component:"Aggiungi un componente",component:"Componente",Parameter:"Parametro",series:"Serie",series_description:"Per impostare un prefisso statico / postfix come 'INV' attraverso la tua azienda. Supporta la lunghezza del personaggio fino a 4 caratteri.",series_param_label:"Valore Serie",delimiter:"Delimitatore",delimiter_description:"Singolo carattere per specificare il confine tra 2 componenti separati. Per impostazione predefinita è impostato a -",delimiter_param_label:"Valore Delimitatore",date_format:"Formato data",date_format_description:"Un campo di data e ora locale che accetta un parametro di formato. Il formato predefinito: 'Y' rende l'anno corrente.",date_format_param_label:"Formato",sequence:"Sequenza",sequence_description:"Sequenza numerica nella tua azienda. Puoi specificare la lunghezza sul parametro specificato.",sequence_param_label:"Lunghezza Sequenza",customer_series:"Serie Cliente",customer_series_description:"Per impostare un prefisso/postfix diverso per ogni cliente.",customer_sequence:"Sequenza Cliente",customer_sequence_description:"Sequenza consecutiva di numeri per ogni vostro cliente.",customer_sequence_param_label:"Lunghezza Sequenza",random_sequence:"Sequenza Casuale",random_sequence_description:"Stringa alfanumerica casuale. Puoi specificare la lunghezza sul parametro dato.",random_sequence_param_label:"Lunghezza Sequenza",invoices:{title:"Fatture",invoice_number_format:"Formato Numero Fattura",invoice_number_format_description:"Personalizza il modo in cui il numero di fattura viene generato automaticamente quando crei una nuova fattura.",preview_invoice_number:"Anteprima Numero Fattura",due_date:"Data di pagamento",due_date_description:"Specificare come la data di scadenza viene impostata automaticamente quando si crea una fattura.",due_date_days:"Scadenza dopo (giorni)",set_due_date_automatically:"Imposta Data Di Scadenza Automaticamente",set_due_date_automatically_description:"Abilita questa opzione se vuoi impostare automaticamente la data di scadenza quando crei una nuova fattura.",default_formats:"Formato predefinito",default_formats_description:"Sotto i formati dati vengono utilizzati per riempire automaticamente i campi alla creazione della fattura.",default_invoice_email_body:"Corpo Email Fattura Predefinito",company_address_format:"Formato Indirizzo Azienda",shipping_address_format:"Formato Indirizzo Di Spedizione",billing_address_format:"Formato Indirizzo Fatturazione",invoice_email_attachment:"Invia fatture come allegati",invoice_email_attachment_setting_description:"Abilita questa opzione se vuoi inviare fatture come allegati email. Si prega di notare che il pulsante 'Visualizza fattura' nelle email non verrà più visualizzato quando ciò viene abilitato.",invoice_settings_updated:"Impostazioni fatture aggiornate con successo",retrospective_edits:"Modifica Retrospettiva",allow:"Permetti",disable_on_invoice_partial_paid:"Disabilita dopo la registrazione del pagamento parziale",disable_on_invoice_paid:"Disabilita dopo la registrazione del pagamento parziale",disable_on_invoice_sent:"Disabilita dopo l'invio della fattura",retrospective_edits_description:" In base alle leggi del tuo paese o alle tue preferenze, puoi limitare gli utenti dalla modifica delle fatture finalizzate."},estimates:{title:"Preventivi",estimate_number_format:"Formato del Numero di Serie",estimate_number_format_description:"Personalizza il modo in cui il numero di fattura viene generato automaticamente quando crei una nuova fattura.",preview_estimate_number:"Anteprima Numero Preventivo",expiry_date:"Data di scadenza",expiry_date_description:"Specificare come la data di scadenza viene impostata automaticamente quando si crea una fattura.",expiry_date_days:"Stima Scade dopo giorni",set_expiry_date_automatically:"Imposta Data Di Scadenza Automaticamente",set_expiry_date_automatically_description:"Abilita questa opzione se vuoi impostare automaticamente la data di scadenza quando crei una nuova fattura.",default_formats:"Formato predefinito",default_formats_description:"Sotto i formati dati vengono utilizzati per riempire automaticamente i campi alla creazione della fattura.",default_estimate_email_body:"Corpo Email Preventivo Predefinito",company_address_format:"Formato Indirizzo Azienda",shipping_address_format:"Formato Indirizzo Spedizione",billing_address_format:"Formato Indirizzo Fatturazione",estimate_email_attachment:"Invia stime come allegati",estimate_email_attachment_setting_description:"Abilita questa opzione se vuoi inviare fatture come allegati email. Si prega di notare che il pulsante 'Visualizza fattura' nelle email non verrà più visualizzato quando ciò viene abilitato.",estimate_settings_updated:"Impostazioni preventivi aggiornate con successo",convert_estimate_options:"Preventivo Converti Azione",convert_estimate_description:"Specificare cosa succede al preventivo dopo che viene convertito in una fattura.",no_action:"Nessuna azione",delete_estimate:"Elimina preventivo",mark_estimate_as_accepted:"Segna preventivo come accettato"},payments:{title:"Pagamenti",payment_number_format:"Formato Numero Pagamento",payment_number_format_description:"Personalizza il modo in cui il numero di fattura viene generato automaticamente quando crei una nuova fattura.",preview_payment_number:"Anteprima Numero Di Pagamento",default_formats:"Formato predefinito",default_formats_description:"Sotto i formati dati vengono utilizzati per riempire automaticamente i campi alla creazione della fattura.",default_payment_email_body:"Corpo Email Pagamento Predefinito",company_address_format:"Formato Indirizzo Azienda",from_customer_address_format:"Dal Formato Indirizzo Cliente",payment_email_attachment:"Invia stime come allegati",payment_email_attachment_setting_description:"Abilita questa opzione se vuoi inviare fatture come allegati email. Si prega di notare che il pulsante 'Visualizza fattura' nelle email non verrà più visualizzato quando ciò viene abilitato.",payment_settings_updated:"Impostazioni di pagamento aggiornate con successo"},items:{title:"Commesse",units:"unità",add_item_unit:"Aggiungi Unità Item",edit_item_unit:"Modifica unità articolo",unit_name:"Nome",item_unit_added:"Unità aggiunta",item_unit_updated:"Unità aggiornata",item_unit_confirm_delete:"Non potrai ripristinare questa unità Item",already_in_use:"Unità Item già in uso",deleted_message:"Unità item eliminata con successo"},notes:{title:"Note",description:"Risparmia tempo creando note e riutilizzandole sulle tue fatture, preventivi e pagamenti.",notes:"Note",type:"genere",add_note:"Aggiungi Nota",add_new_note:"Aggiungi nuova nota",name:"Nome",edit_note:"Modifica nota",note_added:"Nota aggiunta correttamente",note_updated:"Nota aggiornata correttamente",note_confirm_delete:"Non sarà possibile recuperare questa nota",already_in_use:"Nota già in uso",deleted_message:"Nota eliminata con successo"}},account_settings:{profile_picture:"Immagine profilo",name:"Nome",email:"Email",password:"Password",confirm_password:"Conferma Password",account_settings:"Impostazioni Account",save:"Salva",section_description:"Puoi aggiornare nome email e password utilizzando il form qui sotto.",updated_message:"Impostazioni account aggiornate con successo"},user_profile:{name:"Nome",email:"Email",password:"Password",confirm_password:"Conferma Password"},notification:{title:"Notifica",email:"Invia notifiche a",description:"Quali notifiche email vorresti ricevere quando qualcosa cambia?",invoice_viewed:"Fattura visualizzata",invoice_viewed_desc:"Quando il cliente visualizza la fattura inviata via dashboard applicazione.",estimate_viewed:"Preventivo visualizzato",estimate_viewed_desc:"Quando il cliente visualizza il preventivo inviato dall'applicazione.",save:"Salva",email_save_message:"Email salvata con successo",please_enter_email:"Inserisci Email"},roles:{title:"Ruoli",description:"Gestisci i ruoli e i permessi di questa azienda",save:"Salva",add_new_role:"Aggiungi Nuovo Ruolo",role_name:"Nome Ruolo",added_on:"Aggiunto il",add_role:"Aggiungi Ruolo",edit_role:"Modifica Ruolo",name:"Nome",permission:"Permesso | Permessi",select_all:"Seleziona tutto",none:"Nessuno",confirm_delete:"Non sarai in grado di recuperare questo ruolo",created_message:"Utente creato correttamente",updated_message:"Ruolo aggiornato correttamente",deleted_message:"Ruolo eliminato con successo",already_in_use:"Ruolo già in uso"},exchange_rate:{exchange_rate:"Tasso di cambio",title:"Correggi i problemi di cambio valuta",description:"Inserisci il tasso di cambio di tutte le valute menzionate di seguito per aiutare il InvoiceShelfe a calcolare correttamente gli importi in {currency}.",drivers:"Drivers",new_driver:"Aggiungi Nuovo Fornitore",edit_driver:"Modifica Fornitore",select_driver:"Seleziona Driver",update:"seleziona il tasso di cambio ",providers_description:"Configura qui i tuoi fornitori di tassi di cambio per recuperare automaticamente l'ultimo tasso di cambio sulle transazioni.",key:"Chiave API",name:"Nome",driver:"Driver",is_default:"É PREDEFINITO",currency:"Valute",exchange_rate_confirm_delete:"Non sarà possibile recuperare questo driver",created_message:"Fornitore creato con successo",updated_message:"Provider Aggiornato Con Successo",deleted_message:"Provider Eliminato Con Successo",error:" Impossibile Eliminare Il Driver Attivo",default_currency_error:"Questa valuta è già utilizzata in uno dei Provider Attivi",exchange_help_text:"Inserisci il tasso di cambio da {currency} a {baseCurrency}",currency_freak:"Valuta Freak",currency_layer:"Livello Valuta",open_exchange_rate:"Tasso Di Cambio Aperto",currency_converter:"Convertitore Valuta",server:"Server",url:"Indirizzo",active:"Attivo",currency_help_text:"Questo provider sarà utilizzato solo sulle valute sopra selezionate",currency_in_used:"Le seguenti valute sono già attive su un altro provider. Si prega di rimuovere queste valute dalla selezione per attivare nuovamente questo provider."},tax_types:{title:"Tipi di Imposte",add_tax:"Aggiungi Imposta",edit_tax:"Modifica imposta",description:"Puoi aggiongere e rimuovere imposte a piacimento. Vengono supportate Tasse differenti per prodotti/servizi specifici esattamento come per le fatture.",add_new_tax:"Aggiungi nuova imposta",tax_settings:"Impostazioni Imposte",tax_per_item:"Tassa per prodotto/servizio",tax_name:"Nome imposta",compound_tax:"Imposta composta",percent:"Percento",action:"Azione",tax_setting_description:"Abilita se vuoi aggiungere imposte specifiche per prodotti o servizi. Di default le imposte sono aggiunte direttamente alla fattura.",created_message:"Tipo di imposta creato con successo",updated_message:"Tipo di imposta aggiornato con successo",deleted_message:"Tipo di imposta eliminato con successo",confirm_delete:"Non potrai ripristinare questo tipo di imposta",already_in_use:"Imposta già in uso"},payment_modes:{title:"Modalità di pagamento",description:"Modalità di transazione per i pagamenti",add_payment_mode:"Aggiungi modalità di pagamento",edit_payment_mode:"Modifica modalità di pagamento",mode_name:"Nome modalità",payment_mode_added:"Modalità di pagamento aggiunta",payment_mode_updated:"Modalità di pagamento aggiornata",payment_mode_confirm_delete:"Non potrai ripristinare la modalità di pagamento",payments_attached:"Questo metodo di pagamento è già allegato ai pagamenti. Si prega di eliminare i pagamenti allegati per procedere con la cancellazione.",expenses_attached:"Questo metodo di pagamento è già allegato alle spese. Si prega di eliminare le spese allegate per procedere alla cancellazione.",deleted_message:"Modalità di pagamento eliminata con successo"},expense_category:{title:"Categorie di spesa",action:"Azione",description:"Le categorie sono necessarie per aggiungere delle voci di spesa. Puoi aggiungere o eliminare queste categorie in base alle tue preferenze.",add_new_category:"Aggiungi nuova categoria",add_category:"Aggiungi categoria",edit_category:"Modifica categoria",category_name:"Nome Categoria",category_description:"Descrizione",created_message:"Categoria di spesa creata con successo",deleted_message:"Categoria di spesa eliminata con successo",updated_message:"Categoria di spesa aggiornata con successo",confirm_delete:"Non potrai ripristinare questa categoria di spesa",already_in_use:"Categoria già in uso"},preferences:{currency:"Valùta",default_language:"Lingua predefinita",time_zone:"Fuso Orario",fiscal_year:"Anno finanziario",date_format:"Formato Data",discount_setting:"Impostazione Sconto",discount_per_item:"Sconto Per Item ",discount_setting_description:"Abilita se vuoi aggiungere uno sconto ad uno specifica fattura. Di default, lo sconto è aggiunto direttamente in fattura.",expire_public_links:"Scadenza Automatica dei Link Pubblici",expire_setting_description:"Specifica se si vuole far scadere tutti i link inviati dall'applicazione per visualizzare fatture, preventivi e pagamenti, ecc. dopo una durata specificata.",save:"Salva",preference:"Preferenza | Preferenze",general_settings:"Impostazioni di default del sistema.",updated_message:"Preferenze aggiornate con successo",select_language:"seleziona lingua",select_time_zone:"Seleziona Time Zone",select_date_format:"Seleziona Formato Data",select_financial_year:"Seleziona anno finanziario",recurring_invoice_status:"Stato Fattura Ricorrente",create_status:"Crea stato",active:"Attivo",on_hold:"In sospeso",update_status:"Aggiorna stato",completed:"Completato",company_currency_unchangeable:"La valuta dell'azienda non può essere cambiata"},update_app:{title:"Aggiorna App",description:"Puoi facilmente aggiornare l'app. Aggiorna cliccando sul bottone qui sotto",check_update:"Controllo aggiornamenti",avail_update:"Aggiornamento disponibile",next_version:"Versione successiva",requirements:"Requisiti",update:"Aggiorna ora",update_progress:"Aggiornamento in corso...",progress_text:"Sarà necessario qualche minuto. Per favore non aggiornare la pagina e non chiudere la finestra prima che l'aggiornamento sia completato",update_success:"L'App è aggiornata! Attendi che la pagina venga ricaricata automaticamente.",latest_message:"Nessun aggiornamneto disponibile! Sei già alla versione più recente.",current_version:"Versione corrente",download_zip_file:"Scarica il file ZIP",unzipping_package:"Pacchetto di decompressione",copying_files:"Copia dei file",deleting_files:"Eliminazione dei file inutilizzati",running_migrations:"Esecuzione delle migrazioni",finishing_update:"Aggiornamento di finitura",update_failed:"Aggiornamento non riuscito",update_failed_text:"Scusate! L'aggiornamento non è riuscito il: passaggio {step}",update_warning:"Tutti i file dell'applicazione e i file di modello predefiniti verranno sovrascritti quando si aggiorna l'applicazione utilizzando questa utility. Si prega di fare un backup dei modelli e del database prima di aggiornare."},backup:{title:"Backup | Backups",description:"Il backup è un file zip che contiene tutti i file nelle cartelle specificate con un dump del vostro database",new_backup:"Nuovo Backup",create_backup:"Crea Backup",select_backup_type:"Scegli tipo di backup",backup_confirm_delete:"Non sarà possibile recuperare questo backup",path:"percorso",new_disk:"Nuovo Disco",created_at:"creato il",size:"dimensioni",dropbox:"dropbox",local:"locale",healthy:"sano",amount_of_backups:"quantità di backup",newest_backups:"backup più recenti",used_storage:"spazio utilizzato",select_disk:"Seleziona Disco",action:"Azione",deleted_message:"Backup eliminato con successo",created_message:"Backup creato con successo",invalid_disk_credentials:"Credenziali del disco selezionato non valide"},disk:{title:"Disco File | Dischi File",description:"Per impostazione predefinita, InvoiceShelf utilizzerà il disco locale per salvare backup, avatar e altri file di immagine. Puoi configurare più di un driver disco come DigitalOcean, S3 e Dropbox in base alle tue preferenze.",created_at:"creato il",dropbox:"dropbox",name:"Nome",driver:"Driver",disk_type:"genere",disk_name:"Nome Disco",new_disk:"Aggiungi Nuovo Disco",filesystem_driver:"Driver Filesystem",local_driver:"driver locale",local_root:"radice locale",public_driver:"Driver Pubblico",public_root:"Root Pubblica",public_url:"Url Pubblico",public_visibility:"Visibilità Pubblica",media_driver:"Driver Media",media_root:"Media Root",aws_driver:"Driver AWS",aws_key:"Chiave AWS",aws_secret:"Segreto AWS",aws_region:"Regione AWS",aws_bucket:"Bucket AWS",aws_root:"Root AWS",do_spaces_type:"tipo Do Spaces",do_spaces_key:"chiave Do Spaces",do_spaces_secret:"segreto Do Spaces",do_spaces_region:"regione Do Spaces",do_spaces_bucket:"bucket Do Spaces",do_spaces_endpoint:"endpoint Do Spaces",do_spaces_root:"root Do Spaces",dropbox_type:"Tipo Dropbox",dropbox_token:"Token Dropbox",dropbox_key:"Chiave Dropbox",dropbox_secret:"Segreto Dropbox",dropbox_app:"App Dropbox",dropbox_root:"Root Dropbox",default_driver:"Driver Predefinito",is_default:"È DEFAULT",set_default_disk:"Imposta Disco Predefinito",set_default_disk_confirm:"Questo disco sarà impostato come predefinito e tutti i nuovi PDF saranno salvati su questo disco",success_set_default_disk:"Disco impostato come predefinito correttamente",save_pdf_to_disk:"Salva i PDF su disco",disk_setting_description:" Abilita questa opzione, se vuoi salvare automaticamente una copia di ogni PDF Fattura, Preventivo e Ricevuta di Pagamento sul tuo disco predefinito. Attivare questa opzione diminuirà il tempo di caricamento durante la visualizzazione dei PDF.",select_disk:"Seleziona Disco",disk_settings:"Impostazioni Disco",confirm_delete:"I file e le cartelle esistenti nel disco specificato non saranno toccati, ma la configurazione del disco sarà eliminata dal InvoiceShelf",action:"Azione",edit_file_disk:"Modifica Disco File",success_create:"Disco aggiunto correttamente",success_update:"Disco aggiornato correttamente",error:"Aggiunta del disco fallita",deleted_message:"Disco file eliminato con successo",disk_variables_save_successfully:"Disco Configurato Con successo",disk_variables_save_error:"Configurazione disco fallita.",invalid_disk_credentials:"Credenziali del disco selezionato non valide"},taxations:{add_billing_address:"Inserisci l'indirizzo di Fatturazione",add_shipping_address:"Inserisci l'indirizzo di Spedizione",add_company_address:"Inserisci l'indirizzo aziendale",modal_description:"Le informazioni di seguito sono richieste per recuperare l'imposta sulle vendite.",add_address:"Aggiungi indirizzo per recuperare l'imposta sulle vendite.",address_placeholder:"Esempio: Via Garibaldi, 123",city_placeholder:"Esempio: Roma",state_placeholder:"Esempio: RM",zip_placeholder:"Esempio: 00100",invalid_address:"Fornisci un indirizzo valido."}},gG={account_info:"Informazioni Account",account_info_desc:"I dettagli qui sotto verranno usati per creare l'account principale dell'Amministratore. Puoi modificarli in qualsiasi momento dopo esserti loggato come Amministratore.",name:"Nome",email:"Email",password:"Password",confirm_password:"Conferma Password",save_cont:"Salva & Continua",company_info:"Informazioni Azienda",company_info_desc:"Questa informazione verrà mostrata nelle fatture. Puoi modificare queste informazione in un momento successivo dalla pagina delle impostazioni.",company_name:"Nome Azienda",company_logo:"Logo Azienda",logo_preview:"Anteprima Logo",preferences:"Impostazioni",preferences_desc:"Impostazioni di default del sistema.",currency_set_alert:"La valuta dell'azienda non può essere modificata più tardi.",country:"Paese",state:"Provincia",city:"Città",address:"Indirizzo",street:"Indirizzo1 | Indirizzo2",phone:"Telefono",zip_code:"CAP/Zip Code",go_back:"Torna indietro",currency:"Valùta",language:"Lingua",time_zone:"Fuso Orario",fiscal_year:"Anno Finanziario",date_format:"Formato Date",from_address:"Indirizzo - Da",username:"Nome utente",next:"Successivo",continue:"Continua",skip:"Salta",database:{database:"URL del sito & database",connection:"Connessione Database",host:"Host Database",port:"Database - Porta",password:"Password Database",app_url:"URL dell'App",app_domain:"Dominio App",username:"Nome Utente del Database",db_name:"Database Nome",db_path:"Percorso del database",desc:"Crea un database sul tuo server e setta le credenziali usando il form qui sotto."},permissions:{permissions:"Permessi",permission_confirm_title:"Sei sicuro di voler continuare?",permission_confirm_desc:"Controllo sui permessi Cartelle, fallito",permission_desc:"Qui sotto la lista dei permessi richiesti per far funzionare correttamente l'App. Se il controllo dei permessi fallisce, assicurati di aggiornare/modificare i permessi sulle cartelle."},verify_domain:{title:"Verifica Dominio",desc:"InvoiceShelf utilizza l'autenticazione basata su sessione, che richiede la verifica del dominio per scopi di sicurezza. Inserisci il dominio su cui accederai alla tua applicazione web.",app_domain:"Dominio App",verify_now:"Verifica Ora",success:"Dominio Verificato Con Successo.",failed:"Verifica del dominio fallita. Inserisci un nome di dominio valido.",verify_and_continue:"Verifica e continua"},mail:{host:"Host Mail",port:"Mail - Porta",driver:"Driver Mail",secret:"Segreto",mailgun_secret:"Segreto Mailgun",mailgun_domain:"Dominio",mailgun_endpoint:"Endpoint Mailgun",ses_secret:"Segreto SES",ses_key:"Chiave SES",password:"Password Email",username:"Nome Utente Email",mail_config:"Configurazione Mail",from_name:"Nome mittente mail",from_mail:"Indirizzo mittente mail",encryption:"Tipo di cifratura Mail",mail_config_desc:"Form per configurazione del 'driver mail' per inviare emails dall'App. Puoi anche configurare servizi di terze parti come Sendgrid, SES, ecc.."},req:{system_req:"Requisiti di Sistema",php_req_version:"Php (versione {version} richiesta)",check_req:"Controllo Requisiti",system_req_desc:"InvoiceShelf ha alcuni requisiti di sistema. Assicurati che il server ha la versione di php richiesta e tutte le estensioni necessarie."},errors:{migrate_failed:"Migrazione Fallita",database_variables_save_error:"Impossibile scrivere la configurazione nel file .env. Si prega di controllare i permessi dei file",mail_variables_save_error:"Configurazione email fallita.",connection_failed:"Connessione al Database fallita",database_should_be_empty:"Il database dovrebbe essere vuoto"},success:{mail_variables_save_successfully:"Email configurata con successo",database_variables_save_successfully:"Database configurato con successo."}},vG={invalid_phone:"Numero di telefono invalido",invalid_url:"URL non valido (es: http://www.invoiceshelf.com)",invalid_domain_url:"URL non valido (es: invoiceshelf.com)",required:"Campo obbligatorio",email_incorrect:"Email non corretta.",email_already_taken:"Email già in uso.",email_does_not_exist:"L'utente con questa email non esiste",item_unit_already_taken:"Questo nome item è già utilizzato",payment_mode_already_taken:"Questa modalità di pagamento è già stata inserita.",send_reset_link:"Invia Link di Reset",not_yet:"Non ancora? Invia di nuovo",password_min_length:"La password deve contenere {count} caratteri",name_min_length:"Il nome deve avere almeno {count} lettere.",prefix_min_length:"Il prefisso deve contenere almeno {count} lettere.",enter_valid_tax_rate:"Inserisci un tasso di imposta valido",numbers_only:"Solo numeri.",characters_only:"Solo caratteri.",password_incorrect:"La Password deve essere identica",password_length:"La password deve essere lunga {count} caratteri.",qty_must_greater_than_zero:"La quantità deve essere maggiore di zero.",price_greater_than_zero:"Il prezzo deve essere maggiore di zero.",payment_greater_than_zero:"Il pagamento deve essere maggiore di zero.",payment_greater_than_due_amount:"Il pagamento inserito è maggiore di quello indicato in fattura.",quantity_maxlength:"La Quantità non può essere maggiore di 20 cifre.",price_maxlength:"Il prezzo non può contenere più di 20 cifre.",price_minvalue:"Il prezzo deve essere maggiore di 0.",amount_maxlength:"La somma non deve contenere più di 20 cifre.",amount_minvalue:"La somma deve essere maggiore di 0.",discount_maxlength:"Lo sconto non deve essere superiore allo sconto massimo",description_maxlength:"La Descrizione non deve superare i 255 caratteri.",subject_maxlength:"L'Oggetto non deve superare i 100 caratter.",message_maxlength:"Il messaggio non può superare i 255 caratteri.",maximum_options_error:"Massimo di {max} opzioni selezionate. Per selezionare un'altra opzione deseleziona prima una opzione.",notes_maxlength:"Le note non possono superare i 255 caratteri.",address_maxlength:"L'Indirizzo non può eccedere i 255 caratteri.",ref_number_maxlength:"Il Numero di Riferimento non può superare i 255 caratteri.",prefix_maxlength:"Il Prefisso non può superare i 5 caratteri.",something_went_wrong:"Si è verificato un errore",number_length_minvalue:"La lunghezza del numero deve essere maggiore di 0",at_least_one_ability:"Seleziona almeno un permesso.",valid_driver_key:"Inserisci una chiave {driver} valida.",valid_exchange_rate:"Inserisci un tasso di cambio valido.",company_name_not_same:"Il nome dell'azienda deve corrispondere al nome indicato."},yG={starter_plan:"Questa funzione è disponibile dal piano Starter, in poi!",invalid_provider_key:"Inserisci una API Key valida per il Fornitore.",estimate_number_used:"Il numero stimato è già stato preso.",invoice_number_used:"Il numero della fattura è già stato utilizzato.",payment_attached:"Una delle fatture selezionate ha già associato un pagamento. Assicurati di eliminare il pagamento associato prima di procedere con la rimozione.",payment_number_used:"Questa modalità di pagamento è già stata inserita.",name_already_taken:"Questo Nome esiste giá.",receipt_does_not_exist:"La ricevuta non esiste.",customer_cannot_be_changed_after_payment_is_added:"Il cliente non può essere modificato dopo aver aggiunto il pagamento",invalid_credentials:"Credenziali non valide",not_allowed:"Non Consentito",login_invalid_credentials:"Queste credenziali non corrispondono ai nostri record.",enter_valid_cron_format:"Inserisci un formato cron valido",email_could_not_be_sent:"Impossibile inviare l'email a questo indirizzo email.",invalid_address:"Inserisci un indirizzo valido.",invalid_key:"Inserisci una chiave valida.",invalid_state:"Inserisci una provincia valida.",invalid_city:"Inserisci una città valida.",invalid_postal_code:"Inserisci un CAP valido.",invalid_format:"Inserisci un formato di query string valido.",api_error:"Il server non risponde.",feature_not_enabled:"Funzionalità non abilitata.",request_limit_met:"Limite richiesta API superato.",address_incomplete:"Indirizzo incompleto"},bG="Preventivo",kG="Preventivo Numero",wG="Data preventivo",xG="Data di scadenza",DG="Fattura",SG="Numero Fattura",zG="Data fattura",PG="Data di pagamento",EG="Note",AG="Commesse",CG="Quantità",jG="Prezzo",TG="Sconto",IG="Ammontare",NG="Parziale",FG="Totale",MG="Pagamento",RG="RICEVUTA DI PAGAMENTO",OG="Data di pagamento",$G="Numero di pagamento",LG="Modalità di Pagamento",BG="Importo Ricevuto",UG="RELAZIONE SPESE",VG="TOTALE SPESE",qG="RELAZIONE PROFITTO E PERDITE",HG="Report Vendite Clienti",WG="Rapporto vendite",KG="Rapporto Riepilogo Tasse",YG="REDDITO",ZG="PROFITTO NETTO",GG="Relazione Vendite: Per Cliente",QG="TOTALE VENDITE",JG="Relazione Vendite: Per Articolo",XG="RELAZIONE FISCALE",eQ="TOTALE IMPOSTA",tQ="Tipi di Imposta",aQ="Uscite",nQ="Fattura a,",iQ="Invia a,",oQ="Ricevuto da:",rQ="Tassa",sQ={navigation:JZ,general:XZ,dashboard:eG,tax_types:tG,global_search:aG,company_switcher:nG,dateRange:iG,customers:oG,items:rG,estimates:sG,invoices:lG,recurring_invoices:cG,payments:dG,expenses:uG,login:_G,modules:mG,users:pG,reports:fG,settings:hG,wizard:gG,validation:vG,errors:yG,pdf_estimate_label:bG,pdf_estimate_number:kG,pdf_estimate_date:wG,pdf_estimate_expire_date:xG,pdf_invoice_label:DG,pdf_invoice_number:SG,pdf_invoice_date:zG,pdf_invoice_due_date:PG,pdf_notes:EG,pdf_items_label:AG,pdf_quantity_label:CG,pdf_price_label:jG,pdf_discount_label:TG,pdf_amount_label:IG,pdf_subtotal:NG,pdf_total:FG,pdf_payment_label:MG,pdf_payment_receipt_label:RG,pdf_payment_date:OG,pdf_payment_number:$G,pdf_payment_mode:LG,pdf_payment_amount_received_label:BG,pdf_expense_report_label:UG,pdf_total_expenses_label:VG,pdf_profit_loss_label:qG,pdf_sales_customers_label:HG,pdf_sales_items_label:WG,pdf_tax_summery_label:KG,pdf_income_label:YG,pdf_net_profit_label:ZG,pdf_customer_sales_report:GG,pdf_total_sales_label:QG,pdf_item_sales_label:JG,pdf_tax_report_label:XG,pdf_total_tax_label:eQ,pdf_tax_types_label:tQ,pdf_expenses_label:aQ,pdf_bill_to:nQ,pdf_ship_to:iQ,pdf_received_from:oQ,pdf_tax_label:rQ},lQ={dashboard:"Komandna tabla",customers:"Klijenti",items:"Stavke",invoices:"Fakture","recurring-invoices":"Recurring Invoices",expenses:"Rashodi",estimates:"Profakture",payments:"Uplate",reports:"Izveštaji",settings:"Podešavanja",logout:"Odjavi se",users:"Korisnici",modules:"Modules"},cQ={add_company:"Dodaj kompaniju",view_pdf:"Pogledaj PDF",copy_pdf_url:"Kopiraj PDF link",download_pdf:"Preuzmi PDF",save:"Sačuvaj",create:"Napravi",cancel:"Otkaži",update:"Ažuriraj",deselect:"Poništi izbor",download:"Preuzmi",from_date:"Od Datuma",to_date:"Do Datuma",from:"Pošiljalac",to:"Primalac",ok:"Ok",yes:"Yes",no:"No",sort_by:"Rasporedi Po",ascending:"Rastuće",descending:"Opadajuće",subject:"Predmet",body:"Telo",message:"Poruka",send:"Pošalji",preview:"Preview",go_back:"Idi nazad",back_to_login:"Nazad na prijavu?",home:"Početna",filter:"Filter",delete:"Obriši",edit:"Izmeni",view:"Pogledaj",add_new_item:"Dodaj novu stavku",clear_all:"Izbriši sve",showing:"Prikazivanje",of:"od",actions:"Akcije",subtotal:"UKUPNO",discount:"POPUST",fixed:"Fiksno",percentage:"Procenat",tax:"POREZ",total_amount:"UKUPAN IZNOS",bill_to:"Račun za",ship_to:"Isporučiti za",due:"Dužan",draft:"U izradi",sent:"Poslato",all:"Sve",select_all:"Izaberi sve",select_template:"Select Template",choose_file:"Klikni ovde da izabereš fajl",choose_template:"Izaberi šablon",choose:"Izaberi",remove:"Ukloni",select_a_status:"Izaberi status",select_a_tax:"Izaberi porez",search:"Pretraga",are_you_sure:"Da li ste sigurni?",list_is_empty:"Lista je prazna.",no_tax_found:"Porez nije pronađen!",four_zero_four:"404",you_got_lost:"Ups! Izgubio si se!",go_home:"Idi na početnu stranicu",test_mail_conf:"Testiraj podešavanje Pošte",send_mail_successfully:"Pošta uspešno poslata",setting_updated:"Podešavanje uspešno ažurirano",select_state:"Odaberi saveznu državu",select_country:"Odaberi državu",select_city:"Odaberi grad",street_1:"Adresa 1",street_2:"Adresa 2",action_failed:"Akcija nije uspela",retry:"Pokušaj ponovo",choose_note:"Odaberi napomenu",no_note_found:"Ne postoje sačuvane napomene",insert_note:"Unesi belešku",copied_pdf_url_clipboard:"Link do PDF fajla kopiran!",copied_url_clipboard:"Copied url to clipboard!",docs:"Docs",do_you_wish_to_continue:"Do you wish to continue?",note:"Note",pay_invoice:"Pay Invoice",login_successfully:"Logged in successfully!",logged_out_successfully:"Logged out successfully",mark_as_default:"Mark as default"},dQ={select_year:"Odaberi godinu",cards:{due_amount:"Dužan iznos",customers:"Klijenti",invoices:"Fakture",estimates:"Profakture",payments:"Payments"},chart_info:{total_sales:"Prodaja",total_receipts:"Računi",total_expense:"Rashodi",net_income:"Prihod NETO",year:"Odaberi godinu"},monthly_chart:{title:"Prodaja & Rashodi"},recent_invoices_card:{title:"Dospele fakture",due_on:"Datum dospevanja",customer:"Klijent",amount_due:"Iznos dospeća",actions:"Akcije",view_all:"Pogledaj sve"},recent_estimate_card:{title:"Nedavne profakture",date:"Datum",customer:"Klijent",amount_due:"Iznos dospeća",actions:"Akcije",view_all:"Pogledaj sve"}},uQ={name:"Naziv",description:"Opis",percent:"Procenat",compound_tax:"Složeni porez"},_Q={search:"Pretraga...",customers:"Klijenti",users:"Korisnici",no_results_found:"Nema rezultata"},mQ={label:"SWITCH COMPANY",no_results_found:"No Results Found",add_new_company:"Add new company",new_company:"New company",created_message:"Company created successfully"},pQ={today:"Today",this_week:"This Week",this_month:"This Month",this_quarter:"This Quarter",this_year:"This Year",previous_week:"Previous Week",previous_month:"Previous Month",previous_quarter:"Previous Quarter",previous_year:"Previous Year",custom:"Custom"},fQ={title:"Klijenti",prefix:"Prefix",add_customer:"Dodaj Klijenta",contacts_list:"Lista klijenata",name:"Naziv",mail:"Mail | Mail-ovi",statement:"Izjava",display_name:"Naziv koji se prikazuje",primary_contact_name:"Primarna kontakt osoba",contact_name:"Naziv kontakt osobe",amount_due:"Iznos dospeća",email:"E-mail",address:"Adresa",phone:"Telefon",website:"Veb stranica",overview:"Pregled",invoice_prefix:"Invoice Prefix",estimate_prefix:"Estimate Prefix",payment_prefix:"Payment Prefix",enable_portal:"Uključi portal",country:"Država",state:"Savezna država",city:"Grad",zip_code:"Poštanski broj",added_on:"Datum dodavanja",action:"Akcija",password:"Šifra",confirm_password:"Confirm Password",street_number:"Broj ulice",primary_currency:"Primarna valuta",description:"Opis",add_new_customer:"Dodaj novog klijenta",save_customer:"Sačuvaj klijenta",update_customer:"Ažuriraj klijenta",customer:"Klijent | Klijenti",new_customer:"Nov klijent",edit_customer:"Izmeni klijenta",basic_info:"Osnovne informacije",portal_access:"Portal Access",portal_access_text:"Would you like to allow this customer to login to the Customer Portal?",portal_access_url:"Customer Portal Login URL",portal_access_url_help:"Please copy & forward the above given URL to your customer for providing access.",billing_address:"Adresa za naplatu",shipping_address:"Adresa za dostavu",copy_billing_address:"Kopiraj iz adrese za naplatu",no_customers:"Još uvek nema klijenata!",no_customers_found:"Klijenti nisu pronađeni!",no_contact:"Nema kontakta",no_contact_name:"Nema naziva kontakta",list_of_customers:"Ova sekcija će da sadrži spisak klijenata.",primary_display_name:"Primarni naziv koji se prikazuje",select_currency:"Odaberi valutu",select_a_customer:"Odaberi klijenta",type_or_click:"Unesi tekst ili klikni da izabereš",new_transaction:"Nova transakcija",no_matching_customers:"Ne postoje klijenti koji odgovaraju pretrazi!",phone_number:"Broj telefona",create_date:"Datum kreiranja",confirm_delete:"Nećeš moći da povratiš ovog klijenta i sve njegove Fakture, Profakture i Uplate. | Nećeš moći da povratiš ove klijente i njihove Fakture, Profakture i Uplate.",created_message:"Klijent uspešno kreiran",updated_message:"Klijent uspešno ažuriran",address_updated_message:"Address Information Updated succesfully",deleted_message:"Klijent uspešno obrisan | Klijenti uspešno obrisani",edit_currency_not_allowed:"Cannot change currency once transactions created."},hQ={title:"Stavke",items_list:"Lista stavki",name:"Naziv",unit:"Jedinica",description:"Opis",added_on:"Datum dodavanja",price:"Cena",date_of_creation:"Datum kreiranja",not_selected:"Nije odabrana niti jedna stavka",action:"Akcije",add_item:"Dodaj Stavku",save_item:"Sačuvaj Stavku",update_item:"Ažuriraj Stavku",item:"Stavka | Stavke",add_new_item:"Dodaj novu stavku",new_item:"Nova stavka",edit_item:"Izmeni stavku",no_items:"Još uvek nema stavki!",list_of_items:"Ova sekcija će da sadrži spisak stavki.",select_a_unit:"odaberi jedinicu",taxes:"Porezi",item_attached_message:"Nije dozvoljeno brisanje stavke koje se koristi",confirm_delete:"Nećeš moći da povratiš ovu Stavku | Nećeš moći da povratiš ove Stavke",created_message:"Stavka uspešno kreirana",updated_message:"Stavka uspešno ažurirana",deleted_message:"Stavka uspešno obrisana | Stavke uspešno obrisane"},gQ={title:"Profakture",accept_estimate:"Accept Estimate",reject_estimate:"Reject Estimate",estimate:"Profaktura | Profakture",estimates_list:"Lista profaktura",days:"{days} Dan",months:"{months} Mesec",years:"{years} Godina",all:"Sve",paid:"Plaćeno",unpaid:"Neplaćeno",customer:"KLIJENT",ref_no:"POZIV NA BROJ",number:"BROJ",amount_due:"IZNOS DOSPEĆA",partially_paid:"Delimično Plaćeno",total:"Ukupno za plaćanje",discount:"Popust",sub_total:"Osnovica za obračun PDV-a",estimate_number:"Broj profakture",ref_number:"Poziv na broj",contact:"Kontakt",add_item:"Dodaj stavku",date:"Datum",due_date:"Datum Dospeća",expiry_date:"Datum Isteka",status:"Status",add_tax:"Dodaj Porez",amount:"Iznos",action:"Akcija",notes:"Napomena",tax:"Porez",estimate_template:"Šablon",convert_to_invoice:"Pretvori u Fakturu",mark_as_sent:"Označi kao Poslato",send_estimate:"Pošalji Profakturu",resend_estimate:"Ponovo pošalji Profakturu",record_payment:"Unesi uplatu",add_estimate:"Dodaj Profakturu",save_estimate:"Sačuvaj Profakturu",confirm_conversion:"Detalji ove Profakture će biti iskorišćeni za pravljenje Fakture.",conversion_message:"Faktura uspešno kreirana",confirm_send_estimate:"Ova Profaktura će biti poslata putem Email-a klijentu",confirm_mark_as_sent:"Ova Profaktura će biti označena kao Poslata",confirm_mark_as_accepted:"Ova Profaktura će biti označena kao Prihvaćena",confirm_mark_as_rejected:"Ova Profaktura će biti označena kao Odbijena",no_matching_estimates:"Ne postoji odgovarajuća profaktura!",mark_as_sent_successfully:"Profaktura uspešno označena kao Poslata",send_estimate_successfully:"Profaktura uspešno poslata",errors:{required:"Polje je obavezno"},accepted:"Prihvaćeno",rejected:"Odbijeno",expired:"Expired",sent:"Poslato",draft:"U izradi",viewed:"Viewed",declined:"Odbijeno",new_estimate:"Nova Profaktura",add_new_estimate:"Dodaj novu Profakturu",update_Estimate:"Ažuriraj Profakturu",edit_estimate:"Izmeni Profakturu",items:"stavke",Estimate:"Profaktura | Profakture",add_new_tax:"Dodaj nov Porez",no_estimates:"Još uvek nema Profaktura!",list_of_estimates:"Ova sekcija će da sadrži spisak Profaktura.",mark_as_rejected:"Označi kao odbijeno",mark_as_accepted:"Označi kao prihvaćeno",marked_as_accepted_message:"Profaktura označena kao prihvaćena",marked_as_rejected_message:"Profaktura označena kao odbijena",confirm_delete:"Nećeš moći da povratiš ovu Profakturu | Nećeš moći da povratiš ove Profakture",created_message:"Profaktura uspešno kreirana",updated_message:"Profaktura uspešno ažurirana",deleted_message:"Profaktura uspešno obrisana | Profakture uspešno obrisane",something_went_wrong:"nešto je krenulo naopako",item:{title:"Naziv stavke",description:"Opis",quantity:"Količina",price:"Cena",discount:"Popust",total:"Ukupno za plaćanje",total_discount:"Ukupan popust",sub_total:"Ukupno",tax:"Porez",amount:"Iznos",select_an_item:"Unesi tekst ili klikni da izabereš",type_item_description:"Unesi opis Stavke (nije obavezno)"},mark_as_default_estimate_template_description:"If enabled, the selected template will be automatically selected for new estimates."},vQ={title:"Fakture",download:"Download",pay_invoice:"Pay Invoice",invoices_list:"List Faktura",invoice_information:"Invoice Information",days:"{days} dan",months:"{months} Mesec",years:"{years} Godina",all:"Sve",paid:"Plaćeno",unpaid:"Neplaćeno",viewed:"Pogledano",overdue:"Nepodmireno",completed:"Završeno",customer:"KLIJENT",paid_status:"STATUS UPLATE",ref_no:"POZIV NA BROJ",number:"BROJ",amount_due:"IZNOS DOSPEĆA",partially_paid:"Delimično plaćeno",total:"Ukupno za plaćanje",discount:"Popust",sub_total:"Osnovica za obračun PDV-a",invoice:"Faktura | Fakture",invoice_number:"Broj Fakture",ref_number:"Poziv na broj",contact:"Kontakt",add_item:"Dodaj Stavku",date:"Datum",due_date:"Datum Dospeća",status:"Status",add_tax:"Dodaj Porez",amount:"Iznos",action:"Akcija",notes:"Napomena",view:"Pogledaj",send_invoice:"Pošalji Fakturu",resend_invoice:"Ponovo pošalji Fakturu",invoice_template:"Šablon Fakture",conversion_message:"Invoice cloned successful",template:"Šablon",mark_as_sent:"Označi kao Poslato",confirm_send_invoice:"Ova Faktura će biti poslata putem Email-a klijentu",invoice_mark_as_sent:"Ova Faktura će biti označena kao poslata",confirm_mark_as_accepted:"This invoice will be marked as Accepted",confirm_mark_as_rejected:"This invoice will be marked as Rejected",confirm_send:"Ova Faktura će biti poslata putem Email-a klijentu",invoice_date:"Datum Fakture",record_payment:"Unesi Uplatu",add_new_invoice:"Dodaj novu Fakturu",update_expense:"Ažuriraj Rashod",edit_invoice:"Izmeni Fakturu",new_invoice:"Nova Faktura",save_invoice:"Sačuvaj Fakturu",update_invoice:"Ažuriraj Fakturu",add_new_tax:"Dodaj nov Porez",no_invoices:"Još uvek nema Faktura!",mark_as_rejected:"Mark as rejected",mark_as_accepted:"Mark as accepted",list_of_invoices:"Ova sekcija će da sadrži spisak Faktura.",select_invoice:"Odaberi Fakturu",no_matching_invoices:"Ne postoje Fakture koje odgovaraju pretrazi!",mark_as_sent_successfully:"Faktura uspešno označena kao Poslata",invoice_sent_successfully:"Invoice sent successfully",cloned_successfully:"Uspešno napravljen duplikat Fakture",clone_invoice:"Napravi duplikat",confirm_clone:"Ova Faktura će biti duplikat nove Fakture",item:{title:"Naziv Stavke",description:"Opis",quantity:"Količina",price:"Cena",discount:"Popust",total:"Ukupno za plaćanje",total_discount:"Ukupan popust",sub_total:"Ukupno",tax:"Porez",amount:"Iznos",select_an_item:"Unesi tekst ili klikni da izabereš",type_item_description:"Unesi opis Stavke (nije obavezno)"},payment_attached_message:"Jedna od odabranih faktura već ima uplatu povezanu sa njom. Obrišite prvo povezane uplate da bi nastavili sa brisanjem",confirm_delete:"Nećeš moći da povratiš ovu Fakturu | Nećeš moći da povratiš ove Fakture",created_message:"Faktura uspešno kreirana",updated_message:"Faktura uspešno ažurirana",deleted_message:"Faktura uspešno obrisana | Fakture uspešno obrisane",marked_as_sent_message:"Faktura označena kao uspešno poslata",something_went_wrong:"nešto je krenulo naopako",invalid_due_amount_message:"Ukupan iznos za plaćanje u fakturi ne može biti manji od iznosa uplate za ovu fakturu. Molim Vas ažurirajte fakturu ili obrišite uplate koje su povezane sa ovom fakturom da bi nastavili.",mark_as_default_invoice_template_description:"If enabled, the selected template will be automatically selected for new invoices."},yQ={title:"Recurring Invoices",invoices_list:"Recurring Invoices List",days:"{days} Days",months:"{months} Month",years:"{years} Year",all:"All",paid:"Paid",unpaid:"Unpaid",viewed:"Viewed",overdue:"Overdue",active:"Active",completed:"Completed",customer:"CUSTOMER",paid_status:"PAID STATUS",ref_no:"REF NO.",number:"NUMBER",amount_due:"AMOUNT DUE",partially_paid:"Partially Paid",total:"Total",discount:"Discount",sub_total:"Sub Total",invoice:"Recurring Invoice | Recurring Invoices",invoice_number:"Recurring Invoice Number",next_invoice_date:"Next Invoice Date",ref_number:"Ref Number",contact:"Contact",add_item:"Add an Item",date:"Date",limit_by:"Limit by",limit_date:"Limit Date",limit_count:"Limit Count",count:"Count",status:"Status",select_a_status:"Select a status",working:"Working",on_hold:"On Hold",complete:"Completed",add_tax:"Add Tax",amount:"Amount",action:"Action",notes:"Notes",view:"View",basic_info:"Basic Info",send_invoice:"Send Recurring Invoice",auto_send:"Auto Send",resend_invoice:"Resend Recurring Invoice",invoice_template:"Recurring Invoice Template",conversion_message:"Recurring Invoice cloned successful",template:"Template",mark_as_sent:"Mark as sent",confirm_send_invoice:"This recurring invoice will be sent via email to the customer",invoice_mark_as_sent:"This recurring invoice will be marked as sent",confirm_send:"This recurring invoice will be sent via email to the customer",starts_at:"Start Date",due_date:"Invoice Due Date",record_payment:"Record Payment",add_new_invoice:"Add New Recurring Invoice",update_expense:"Update Expense",edit_invoice:"Edit Recurring Invoice",new_invoice:"New Recurring Invoice",send_automatically:"Send Automatically",send_automatically_desc:"Enable this, if you would like to send the invoice automatically to the customer when its created.",save_invoice:"Save Recurring Invoice",update_invoice:"Update Recurring Invoice",add_new_tax:"Add New Tax",no_invoices:"No Recurring Invoices yet!",mark_as_rejected:"Mark as rejected",mark_as_accepted:"Mark as accepted",list_of_invoices:"This section will contain the list of recurring invoices.",select_invoice:"Select Invoice",no_matching_invoices:"There are no matching recurring invoices!",mark_as_sent_successfully:"Recurring Invoice marked as sent successfully",invoice_sent_successfully:"Recurring Invoice sent successfully",cloned_successfully:"Recurring Invoice cloned successfully",clone_invoice:"Clone Recurring Invoice",confirm_clone:"This recurring invoice will be cloned into a new Recurring Invoice",add_customer_email:"Please add an email address for this customer to send invoices automatically.",item:{title:"Item Title",description:"Description",quantity:"Quantity",price:"Price",discount:"Discount",total:"Total",total_discount:"Total Discount",sub_total:"Sub Total",tax:"Tax",amount:"Amount",select_an_item:"Type or click to select an item",type_item_description:"Type Item Description (optional)"},frequency:{title:"Frequency",select_frequency:"Select Frequency",minute:"Minute",hour:"Hour",day_month:"Day of month",month:"Month",day_week:"Day of week"},confirm_delete:"You will not be able to recover this Invoice | You will not be able to recover these Invoices",created_message:"Recurring Invoice created successfully",updated_message:"Recurring Invoice updated successfully",deleted_message:"Recurring Invoice deleted successfully | Recurring Invoices deleted successfully",marked_as_sent_message:"Recurring Invoice marked as sent successfully",user_email_does_not_exist:"User email does not exist",something_went_wrong:"something went wrong",invalid_due_amount_message:"Total Recurring Invoice amount cannot be less than total paid amount for this Recurring Invoice. Please update the invoice or delete the associated payments to continue."},bQ={title:"Uplate",payments_list:"Lista uplata",record_payment:"Unesi Uplatu",customer:"Klijent",date:"Datum",amount:"Iznos",action:"Akcija",payment_number:"Broj uplate",payment_mode:"Način plaćanja",invoice:"Faktura",note:"Napomena",add_payment:"Dodaj Uplatu",new_payment:"Nova Uplata",edit_payment:"Izmeni Uplatu",view_payment:"Vidi Uplatu",add_new_payment:"Dodaj Novu Uplatu",send_payment_receipt:"Pošalji potvrdu o uplati",send_payment:"Pošalji Uplatu",save_payment:"Sačuvaj Uplatu",update_payment:"Ažuriraj Uplatu",payment:"Uplata | Uplate",no_payments:"Još uvek nema uplata!",not_selected:"Nema odabranih",no_invoice:"Nema računa",no_matching_payments:"Ne postoje uplate koje odgovaraju pretrazi!",list_of_payments:"Ova sekcija će da sadrži listu uplata.",select_payment_mode:"Odaberi način plaćanja",confirm_mark_as_sent:"Ovo plaćanje će biti označena kao Poslata",confirm_send_payment:"Ovo plaćanje će biti poslato putem Email-a klijentu",send_payment_successfully:"Plaćanje uspešno poslato",something_went_wrong:"nešto je krenulo naopako",confirm_delete:"Nećeš moći da povratiš ovu Uplatu | Nećeš moći da povratiš ove Uplate",created_message:"Uplata uspešno kreirana",updated_message:"Uplata uspešno ažurirana",deleted_message:"Uplata uspešno obrisana | Uplate uspešno obrisane",invalid_amount_message:"Iznos Uplate je pogrešan"},kQ={title:"Rashodi",expenses_list:"Lista Rashoda",select_a_customer:"Odaberi klijenta",expense_title:"Naslov",customer:"Klijent",currency:"Currency",contact:"Kontakt",category:"Kategorija",from_date:"Datum od",to_date:"Datum do",expense_date:"Datum",description:"Opis",receipt:"Račun",amount:"Iznos",action:"Akcija",not_selected:"Nije odabrano",note:"Napomena",category_id:"ID kategorije",date:"Datum",add_expense:"Dodaj Rashod",add_new_expense:"Dodaj Novi Rashod",save_expense:"Sačuvaj Rashod",update_expense:"Ažuriraj Rashod",download_receipt:"Preuzmi Račun",edit_expense:"Izmeni Rashod",new_expense:"Novi Rashod",expense:"Rashod | Rashodi",no_expenses:"Još uvek nema rashoda!",list_of_expenses:"Ova sekcija će da sadrži listu rashoda.",confirm_delete:"Nećeš moći da povratiš ovaj Rashod | Nećeš moći da povratiš ove Rashode",created_message:"Rashod uspešno kreiran",updated_message:"Rashod uspešno ažuriran",deleted_message:"Rashod uspešno obrisan | Rashodi uspešno obrisani",categories:{categories_list:"Lista Kategorija",title:"Naslov",name:"Naziv",description:"Opis",amount:"Iznos",actions:"Akcije",add_category:"Dodaj Kategoriju",new_category:"Nova Kategorija",category:"Kategorija | Kategorije",select_a_category:"Izaberi kategoriju"}},wQ={email:"E-mail",password:"Šifra",forgot_password:"Zaboravili ste šifru?",or_signIn_with:"ili se prijavite sa",login:"Prijava",register:"Registracija",reset_password:"Restujte šifru",password_reset_successfully:"Šifra Uspešno Resetovana",enter_email:"Unesi email",enter_password:"Unesi šifru",retype_password:"Ponovo unesi šifru"},xQ={buy_now:"Buy Now",install:"Install",price:"Price",download_zip_file:"Download ZIP file",unzipping_package:"Unzipping Package",copying_files:"Copying Files",deleting_files:"Deleting Unused files",completing_installation:"Completing Installation",update_failed:"Update Failed",install_success:"Module has been installed successfully!",customer_reviews:"Reviews",license:"License",faq:"FAQ",monthly:"Monthly",yearly:"Yearly",updated:"Updated",version:"Version",disable:"Disable",module_disabled:"Module Disabled",enable:"Enable",module_enabled:"Module Enabled",update_to:"Update To",module_updated:"Module Updated Successfully!",title:"Modules",module:"Module | Modules",api_token:"API token",invalid_api_token:"Invalid API Token.",other_modules:"Other Modules",view_all:"View All",no_reviews_found:"There are no reviews for this module yet!",module_not_purchased:"Module Not Purchased",module_not_found:"Module Not Found",version_not_supported:"This module version doesn't support the current version of InvoiceShelf",last_updated:"Last Updated On",connect_installation:"Connect your installation",api_token_description:"Login to {url} and connect this installation by entering the API Token. Your purchased modules will show up here after the connection is established.",view_module:"View Module",update_available:"Update Available",purchased:"Purchased",installed:"Installed",no_modules_installed:"No Modules Installed Yet!",disable_warning:"All the settings for this particular will be reverted.",what_you_get:"What you get"},DQ={title:"Korisnici",users_list:"Lista korisnika",name:"Ime i prezime",description:"Opis",added_on:"Datum dodavanja",date_of_creation:"Datum kreiranja",action:"Akcija",add_user:"Dodaj Korisnika",save_user:"Sačuvaj Korisnika",update_user:"Ažuriraj Korisnika",user:"Korisnik | Korisnici",add_new_user:"Dodaj novog korisnika",new_user:"Nov Korisnik",edit_user:"Izmeni Korisnika",no_users:"Još uvek nema korisnika!",list_of_users:"Ova sekcija će da sadrži listu korisnika.",email:"E-mail",phone:"Broj telefona",password:"Šifra",user_attached_message:"Ne možete obrisati stavku koja je već u upotrebi",confirm_delete:"Nećeš moći da povratiš ovog Korisnika | Nećeš moći da povratiš ove Korisnike",created_message:"Korisnik uspešno napravljen",updated_message:"Korisnik uspešno ažuriran",deleted_message:"Korisnik uspešno obrisan | Korisnici uspešno obrisani",select_company_role:"Select Role for {company}",companies:"Companies"},SQ={title:"Izveštaj",from_date:"Datum od",to_date:"Datum do",status:"Status",paid:"Plaćeno",unpaid:"Neplaćeno",download_pdf:"Preuzmi PDF",view_pdf:"Pogledaj PDF",update_report:"Ažuriraj Izveštaj",report:"Izveštaj | Izveštaji",profit_loss:{profit_loss:"Prihod & Rashod",to_date:"Datum do",from_date:"Datum od",date_range:"Izaberi opseg datuma"},sales:{sales:"Prodaja",date_range:"Izaberi opseg datuma",to_date:"Datum do",from_date:"Datum od",report_type:"Tip Izveštaja"},taxes:{taxes:"Porezi",to_date:"Datum do",from_date:"Datum od",date_range:"Izaberi opseg datuma"},errors:{required:"Polje je obavezno"},invoices:{invoice:"Faktura",invoice_date:"Datum Fakture",due_date:"Datum Dospeća",amount:"Iznos",contact_name:"Ime Kontakta",status:"Status"},estimates:{estimate:"Profaktura",estimate_date:"Datum Profakture",due_date:"Datum Dospeća",estimate_number:"Broj Profakture",ref_number:"Poziv na broj",amount:"Iznos",contact_name:"Ime Kontakta",status:"Status"},expenses:{expenses:"Rashodi",category:"Kategorija",date:"Datum",amount:"Iznos",to_date:"Datum do",from_date:"Datum od",date_range:"Izaberi opseg datuma"}},zQ={menu_title:{account_settings:"Podešavanje Naloga",company_information:"Podaci o firmi",customization:"Prilagođavanje",preferences:"Preferencija",notifications:"Obaveštenja",tax_types:"Tipovi Poreza",expense_category:"Kategorije Rashoda",update_app:"Ažuriraj Aplikaciju",backup:"Bekap",file_disk:"File Disk",custom_fields:"Prilagođena polja",payment_modes:"Način plaćanja",notes:"Napomene",exchange_rate:"Exchange Rate",address_information:"Address Information"},address_information:{section_description:" You can update Your Address information using form below."},title:"Podešavanja",setting:"Podešavanje | Podešavanja",general:"Opšte",language:"Jezik",primary_currency:"Primarna Valuta",timezone:"Vremenska Zona",date_format:"Format Datuma",currencies:{title:"Valute",currency:"Valuta | Valute",currencies_list:"Lista Valuta",select_currency:"Odaberi Valutu",name:"Naziv",code:"Kod",symbol:"Simbol",precision:"Preciznost",thousand_separator:"Separator za hiljade",decimal_separator:"Separator za decimale",position:"Pozicija",position_of_symbol:"Pozicija simbola",right:"Desno",left:"Levo",action:"Akcija",add_currency:"Dodaj Valutu"},mail:{host:"Mail Host",port:"Mail Port",driver:"Mail drajver",secret:"Šifra",mailgun_secret:"Mailgun Šifra",mailgun_domain:"Domen",mailgun_endpoint:"Mailgun Endpoint",ses_secret:"SES Šifra",ses_key:"SES Ključ",password:"Mail Šifra",username:"Mail Korisničko Ime",mail_config:"Mail Podešavanje",from_name:"Naziv pošiljaoca",from_mail:"E-mail adresa pošiljaoca",encryption:"E-mail enkripcija",mail_config_desc:"Ispod se nalazi forma za podešavanje E-mail drajvera za slanje pošte iz aplikacije. Takođe možete podesiti provajdere treće strane kao Sendgrid, SES itd."},pdf:{title:"PDF Podešavanje",footer_text:"Tekstualno zaglavlje na dnu strane",pdf_layout:"PDF Raspored"},company_info:{company_info:"Podaci o firmi",company_name:"Naziv firme",company_logo:"Logo firme",section_description:"Informacije o Vašoj firmi će biti prikazane na fakturama, profakturama i drugim dokumentima koji se prave u ovoj aplikaciji.",phone:"Telefon",country:"Država",state:"Savezna Država",city:"Grad",address:"Adresa",zip:"Poštanski broj",save:"Sačuvaj",delete:"Delete",updated_message:"Podaci o firmi uspešno sačuvani",delete_company:"Delete Company",delete_company_description:"Once you delete your company, you will lose all the data and files associated with it permanently.",are_you_absolutely_sure:"Are you absolutely sure?",delete_company_modal_desc:"This action cannot be undone. This will permanently delete {company} and all of its associated data.",delete_company_modal_label:"Please type {company} to confirm"},custom_fields:{title:"Prilagođena polja",section_description:"Prilagodite vaše Fakture, Profakture i Uplate (priznanice) sa svojim poljima. Postarajte se da koristite polja navedena ispod na formatu adrese na stranici Podešavanja/Prilagođavanje.",add_custom_field:"Dodaj prilagođeno polje",edit_custom_field:"Izmeni prilagođeno polje",field_name:"Naziv polja",label:"Oznaka",type:"Tip",name:"Naziv",slug:"Slug",required:"Obavezno",placeholder:"Opis polja (Placeholder)",help_text:"Pomoćni tekst",default_value:"Podrazumevana vrednost",prefix:"Prefiks",starting_number:"Početni broj",model:"Model",help_text_description:"Unesite opis koji će pomoći korisnicima da razumeju svrhu ovog prilagođenog polja.",suffix:"Sufiks",yes:"Da",no:"Ne",order:"Redosled",custom_field_confirm_delete:"Nećeš moći da povratiš ovo prilagođeno polje",already_in_use:"Prilagođeno polje je već u upotrebi",deleted_message:"Prilagođeno polje je uspešno obrisano",options:"opcije",add_option:"Dodaj opcije",add_another_option:"Dodaj još jednu opciju",sort_in_alphabetical_order:"Poređaj po Abecedi",add_options_in_bulk:"Grupno dodavanje opcija",use_predefined_options:"Koristi predefinisane opcije",select_custom_date:"Odaberi datum",select_relative_date:"Odaberi relativan datum",ticked_by_default:"Podrazumevano odabrano",updated_message:"Prilagođeno polje uspešno ažurirano",added_message:"Prilagođeno polje uspešno dodato",press_enter_to_add:"Press enter to add new option",model_in_use:"Cannot update model for fields which are already in use.",type_in_use:"Cannot update type for fields which are already in use."},customization:{customization:"prilagođavanje",updated_message:"Podaci o firmi su uspešno ažurirani",save:"Sačuvaj",insert_fields:"Insert Fields",learn_custom_format:"Learn how to use custom format",add_new_component:"Add New Component",component:"Component",Parameter:"Parameter",series:"Series",series_description:"To set a static prefix/postfix like 'INV' across your company. It supports character length of up to 6 chars.",series_param_label:"Series Value",delimiter:"Delimiter",delimiter_description:"Single character for specifying the boundary between 2 separate components. By default its set to -",delimiter_param_label:"Delimiter Value",date_format:"Date Format",date_format_description:"A local date and time field which accepts a format parameter. The default format: 'Y' renders the current year.",date_format_param_label:"Format",sequence:"Sequence",sequence_description:"Consecutive sequence of numbers across your company. You can specify the length on the given parameter.",sequence_param_label:"Sequence Length",customer_series:"Customer Series",customer_series_description:"To set a different prefix/postfix for each customer.",customer_sequence:"Customer Sequence",customer_sequence_description:"Consecutive sequence of numbers for each of your customer.",customer_sequence_param_label:"Sequence Length",random_sequence:"Random Sequence",random_sequence_description:"Random alphanumeric string. You can specify the length on the given parameter.",random_sequence_param_label:"Sequence Length",invoices:{title:"Fakture",invoice_number_format:"Invoice Number Format",invoice_number_format_description:"Customize how your invoice number gets generated automatically when you create a new invoice.",preview_invoice_number:"Preview Invoice Number",due_date:"Due Date",due_date_description:"Specify how due date is automatically set when you create an invoice.",due_date_days:"Invoice Due after days",set_due_date_automatically:"Set Due Date Automatically",set_due_date_automatically_description:"Enable this if you wish to set due date automatically when you create a new invoice.",default_formats:"Default Formats",default_formats_description:"Below given formats are used to fill up the fields automatically on invoice creation.",default_invoice_email_body:"Podrazumevan sadržaj email-a za Fakture",company_address_format:"Format adrese firme",shipping_address_format:"Format adrese za dostavu firme",billing_address_format:"Format adrese za naplatu firme",invoice_email_attachment:"Pošalji račun kao prilog",invoice_email_attachment_setting_description:"Omogućite ovo ako želite da šaljete fakture kao prilog e-pošte. Imajte na umu da dugme 'Prikaži fakturu' u e-porukama više neće biti prikazano kada je omogućeno.",invoice_settings_updated:"Invoice Settings updated successfully",retrospective_edits:"Retrospective Edits",allow:"Allow",disable_on_invoice_partial_paid:"Disable after partial payment is recorded",disable_on_invoice_paid:"Disable after full payment is recorded",disable_on_invoice_sent:"Disable after invoice is sent",retrospective_edits_description:" Based on your country's laws or your preference, you can restrict users from editing finalised invoices."},estimates:{title:"Profakture",estimate_number_format:"Estimate Number Format",estimate_number_format_description:"Customize how your estimate number gets generated automatically when you create a new estimate.",preview_estimate_number:"Preview Estimate Number",expiry_date:"Expiry Date",expiry_date_description:"Specify how expiry date is automatically set when you create an estimate.",expiry_date_days:"Estimate Expires after days",set_expiry_date_automatically:"Set Expiry Date Automatically",set_expiry_date_automatically_description:"Enable this if you wish to set expiry date automatically when you create a new estimate.",default_formats:"Default Formats",default_formats_description:"Below given formats are used to fill up the fields automatically on estimate creation.",default_estimate_email_body:"Podrazumevan sadržaj email-a za Profakture",company_address_format:"Format adrese firme",shipping_address_format:"Format adrese za dostavu firme",billing_address_format:"Format adrese za naplatu firme",estimate_email_attachment:"Pošaljite procjene kao priloge",estimate_email_attachment_setting_description:"Omogućite ovo ako želite da pošaljete procjene kao prilog e-pošte. Imajte na umu da dugme 'Prikaži procjenu' u e-porukama više neće biti prikazano kada je omogućeno.",estimate_settings_updated:"Estimate Settings updated successfully",convert_estimate_options:"Estimate Convert Action",convert_estimate_description:"Specify what happens to the estimate after it gets converted to an invoice.",no_action:"No action",delete_estimate:"Delete estimate",mark_estimate_as_accepted:"Mark estimate as accepted"},payments:{title:"Uplate",payment_number_format:"Payment Number Format",payment_number_format_description:"Customize how your payment number gets generated automatically when you create a new payment.",preview_payment_number:"Preview Payment Number",default_formats:"Default Formats",default_formats_description:"Below given formats are used to fill up the fields automatically on payment creation.",default_payment_email_body:"Podrazumevan sadržaj email-a za potvrdu o plaćanju (račun)",company_address_format:"Format adrese firme",from_customer_address_format:"Format adrese klijenta",payment_email_attachment:"Pošaljite uplate kao priloge",payment_email_attachment_setting_description:"Enable this if you want to send the payment receipts as an email attachment. Please note that 'View Payment' button in emails will not be displayed anymore when enabled.",payment_settings_updated:"Payment Settings updated successfully"},items:{title:"Stavke",units:"Jedinice",add_item_unit:"Dodaj jedinicu stavke",edit_item_unit:"Izmeni jedinicu stavke",unit_name:"Naziv jedinice",item_unit_added:"Jedinica stavke dodata",item_unit_updated:"Jedinica stavke ažurirana",item_unit_confirm_delete:"Nećeš moći da povratiš ovu jedinicu stavke",already_in_use:"Jedinica stavke se već koristi",deleted_message:"Jedinica stavke uspešno obrisana"},notes:{title:"Napomene",description:"Uštedite vreme pravljeći napomene i koristeći ih na fakturama, profakturama i uplatama.",notes:"Napomene",type:"Tip",add_note:"Dodaj Napomenu",add_new_note:"Dodaj novu Napomenu",name:"Naziv",edit_note:"Izmeni Napomenu",note_added:"Napomena uspešno dodata",note_updated:"Napomena uspešno ažurirana",note_confirm_delete:"Nećeš moći da povratiš ovu Napomenu",already_in_use:"Napomena se već koristi",deleted_message:"Napomena uspešno obrisana"}},account_settings:{profile_picture:"Profilna slika",name:"Ime i prezime",email:"Email",password:"Šifra",confirm_password:"Potvrdi šifru",account_settings:"Podešavanje naloga",save:"Sačuvaj",section_description:"Možete ažurirati Vaše ime i prezime, email, šifru koristeći formu ispod.",updated_message:"Podešavanje naloga uspešno ažurirano"},user_profile:{name:"Ime i prezime",email:"Email",password:"Šifra",confirm_password:"Potvrdi šifru"},notification:{title:"Obaveštenje",email:"Šalji obaveštenja na",description:"Koja email obaveštenja bi želeli da dobijate kada se nešto promeni?",invoice_viewed:"Faktura gledana",invoice_viewed_desc:"Kada klijent pogleda fakturu koja je poslata putem ove aplikacije.",estimate_viewed:"Profaktura gledana",estimate_viewed_desc:"Kada klijent pogleda profakturu koja je poslata putem ove aplikacije.",save:"Sačuvaj",email_save_message:"Email uspešno sačuvan",please_enter_email:"Molim Vas unesite E-mail"},roles:{title:"Roles",description:"Manage the roles & permissions of this company",save:"Save",add_new_role:"Add New Role",role_name:"Role Name",added_on:"Added on",add_role:"Add Role",edit_role:"Edit Role",name:"Name",permission:"Permission | Permissions",select_all:"Select All",none:"None",confirm_delete:"You will not be able to recover this Role",created_message:"Role created successfully",updated_message:"Role updated successfully",deleted_message:"Role deleted successfully",already_in_use:"Role is already in use"},exchange_rate:{exchange_rate:"Exchange Rate",title:"Fix Currency Exchange issues",description:"Please enter exchange rate of all the currencies mentioned below to help InvoiceShelf properly calculate the amounts in {currency}.",drivers:"Drivers",new_driver:"Add New Provider",edit_driver:"Edit Provider",select_driver:"Select Driver",update:"select exchange rate ",providers_description:"Configure your exchange rate providers here to automatically fetch the latest exchange rate on transactions.",key:"API Key",name:"Name",driver:"Driver",is_default:"IS DEFAULT",currency:"Currencies",exchange_rate_confirm_delete:"You will not be able to recover this driver",created_message:"Provider Created successfully",updated_message:"Provider Updated Successfully",deleted_message:"Provider Deleted Successfully",error:" You cannot Delete Active Driver",default_currency_error:"This currency is already used in one of the Active Provider",exchange_help_text:"Enter exchange rate to convert from {currency} to {baseCurrency}",currency_freak:"Currency Freak",currency_layer:"Currency Layer",open_exchange_rate:"Open Exchange Rate",currency_converter:"Currency Converter",server:"Server",url:"URL",active:"Active",currency_help_text:"This provider will only be used on above selected currencies",currency_in_used:"The following currencies are already active on another provider. Please remove these currencies from selection to activate this provider again."},tax_types:{title:"Tipovi Poreza",add_tax:"Dodaj Porez",edit_tax:"Izmeni Porez",description:"Možete dodavati ili uklanjati poreze kako želite. Ova aplikacija podržava porez kako na individualnim stavkama tako i na fakturi.",add_new_tax:"Dodaj Nov Porez",tax_settings:"Podešavanje Poreza",tax_per_item:"Porez po Stavki",tax_name:"Naziv Poreza",compound_tax:"Složen Porez",percent:"Procenat",action:"Akcija",tax_setting_description:"Izaberite ovo ako želite da dodajete porez na individualne stavke. Podrazumevano ponašanje je da je porez dodat direktno na fakturu.",created_message:"Tip poreza uspešno kreiran",updated_message:"Tip poreza uspešno ažuriran",deleted_message:"Tip poreza uspešno obrisan",confirm_delete:"Nećete moći da povratite ovaj Tip Poreza",already_in_use:"Porez se već koristi"},payment_modes:{title:"Payment Modes",description:"Modes of transaction for payments",add_payment_mode:"Add Payment Mode",edit_payment_mode:"Edit Payment Mode",mode_name:"Mode Name",payment_mode_added:"Payment Mode Added",payment_mode_updated:"Payment Mode Updated",payment_mode_confirm_delete:"You will not be able to recover this Payment Mode",payments_attached:"This payment method is already attached to payments. Please delete the attached payments to proceed with deletion.",expenses_attached:"This payment method is already attached to expenses. Please delete the attached expenses to proceed with deletion.",deleted_message:"Payment Mode deleted successfully"},expense_category:{title:"Kategorija Rashoda",action:"Akcija",description:"Kategorije su obavezne za dodavanje rashoda. Možeš da dodaš ili obrišeš ove kategorije po svojoj želji.",add_new_category:"Dodaj novu kategoriju",add_category:"Dodaj kategoriju",edit_category:"Izmeni kategoriju",category_name:"Naziv kategorije",category_description:"Opis",created_message:"Kagetorija rashoda je uspešno kreirana",deleted_message:"Kategorija rashoda je uspešno izbrisana",updated_message:"Kategorija rashoda je uspešno ažurirana",confirm_delete:"Nećeš moći da povratiš ovu kategoriju rashoda",already_in_use:"Kategorija se već koristi"},preferences:{currency:"Valuta",default_language:"Jezik",time_zone:"Vremenska Zona",fiscal_year:"Finansijska Godina",date_format:"Format datuma",discount_setting:"Podešavanja za popuste",discount_per_item:"Popust po stavci",discount_setting_description:"Izaberite ovo ako želite da dodajete Popust na individualne stavke. Podrazumevano ponašanje je da je Popust dodat direktno na fakturu.",expire_public_links:"Automatically Expire Public Links",expire_setting_description:"Specify whether you would like to expire all the links sent by application to view invoices, estimates & payments, etc after a specified duration.",save:"Sačuvaj",preference:"Preferencija | Preferencije",general_settings:"Podrazumevane preferencije za sistem",updated_message:"Preferencije su uspešno ažurirane",select_language:"Izaberi Jezik",select_time_zone:"Izaberi Vremensku Zonu",select_date_format:"Izaberi Format Datuma",select_financial_year:"Izaberi Finansijsku Godinu",recurring_invoice_status:"Recurring Invoice Status",create_status:"Create Status",active:"Active",on_hold:"On Hold",update_status:"Update Status",completed:"Completed",company_currency_unchangeable:"Company currency cannot be changed"},update_app:{title:"Ažuriraj aplikaciju",description:"Lako možeš da ažuriraš InvoiceShelf tako što ćeš uraditi proveru novih verzija klikom na polje ispod",check_update:"Proveri ažuriranost",avail_update:"Dostupna je nova verzija",next_version:"Sledeća verzija",requirements:"Zahtevi",update:"Ažuriraj sad",update_progress:"Ažuriranje je u toku...",progress_text:"Trajaće svega par minuta. Nemojte osvežavati ili zatvoriti stranicu dok ažuriranje ne bude gotovo",update_success:"Aplikacija je ažurirana! Molim Vas Sačekajte da se stranica osveži automatski.",latest_message:"Nema nove verzije! Ažurirana poslednja verzija.",current_version:"Trenutna verzija",download_zip_file:"Preuzmi ZIP paket",unzipping_package:"Raspakivanje paketa",copying_files:"Kopiranje datoteka",deleting_files:"Brisanje fajlova koji nisu u upotrebi",running_migrations:"Migracije u toku",finishing_update:"Završavanje ažuriranja",update_failed:"Neuspešno ažuriranje",update_failed_text:"Žao mi je! Tvoje ažuriranje nije uspelo na koraku broj: {step} korak",update_warning:"All of the application files and default template files will be overwritten when you update the application using this utility. Please take a backup of your templates & database before updating."},backup:{title:"Bekap | Bekapi",description:"Bekap je zip arhiva koja sadrži sve fajlove iz foldera koje ste specificirali, takođe sadrži bekap baze.",new_backup:"Dodaj novi Bekap",create_backup:"Napravi Bekap",select_backup_type:"Izaberi tip Bekapa",backup_confirm_delete:"Nećeš moći da povratiš ovaj Bekap",path:"putanja",new_disk:"Novi Disk",created_at:"datum kreiranja",size:"veličina",dropbox:"dropbox",local:"lokalni",healthy:"zdrav",amount_of_backups:"broj bekapa",newest_backups:"najnoviji bekapi",used_storage:"korišćeno skladište",select_disk:"Izaberi Disk",action:"Akcija",deleted_message:"Bekap uspešno obrisan",created_message:"Bekap uspešno napravljen",invalid_disk_credentials:"Pogrešni kredencijali za odabrani disk"},disk:{title:"File Disk | File Disks",description:"Podrazumevano ponašanje je da InvoiceShelf koristi lokalni disk za čuvanje bekapa, avatara i ostalih slika. Možete podesiti više od jednog disk drajvera od provajdera poput DigitalOcean, S3 i Dropbox po vašoj želji.",created_at:"datum kreiranja",dropbox:"dropbox",name:"Naziv",driver:"Drajver",disk_type:"Tip",disk_name:"Naziv Diska",new_disk:"Dodaj novi Disk",filesystem_driver:"Filesystem Driver",local_driver:"lokalni Drajver",local_root:"local Root",public_driver:"Public Driver",public_root:"Public Root",public_url:"Public URL",public_visibility:"Public Visibility",media_driver:"Media Driver",media_root:"Media Root",aws_driver:"AWS Driver",aws_key:"AWS Key",aws_secret:"AWS Secret",aws_region:"AWS Region",aws_bucket:"AWS Bucket",aws_root:"AWS Root",do_spaces_type:"Do Spaces type",do_spaces_key:"Do Spaces key",do_spaces_secret:"Do Spaces Secret",do_spaces_region:"Do Spaces Region",do_spaces_bucket:"Do Spaces Bucket",do_spaces_endpoint:"Do Spaces Endpoint",do_spaces_root:"Do Spaces Root",dropbox_type:"Dropbox Type",dropbox_token:"Dropbox Token",dropbox_key:"Dropbox Key",dropbox_secret:"Dropbox Secret",dropbox_app:"Dropbox App",dropbox_root:"Dropbox Root",default_driver:"Podrazumevani Drajver",is_default:"DA LI JE PODRAZUMEVAN",set_default_disk:"Postavi Podrazumevani Disk",set_default_disk_confirm:"Ovaj disk će biti postavljen kao podrazumevan i svi novi PDF fajlovi će biti sačuvani na ovom disku",success_set_default_disk:"Disk je uspešno postavljen kao podrazumevan",save_pdf_to_disk:"Sačuvaj PDF fajlove na Disk",disk_setting_description:" Uključite ovo ako želite da sačuvate kopiju PDF fajla svake Fakture, Profakture i Uplate na vaš podrazumevani disk automatski. Uključivanjem ove opcije ćete smanjiti vreme učitavanja pri pregledu PDF fajlova.",select_disk:"Izaberi Disk",disk_settings:"Disk Podešavanja",confirm_delete:"Ovo neće uticati na vaše postojeće fajlove i foldere na navedenom disku, ali će se konfiguracija vašeg diska izbrisati iz InvoiceShelfa.",action:"Akcija",edit_file_disk:"Izmeni File Disk",success_create:"Disk uspešno dodat",success_update:"Disk uspešno ažuriran",error:"Dodavanje diska nije uspelo",deleted_message:"File Disk uspešno obrisan",disk_variables_save_successfully:"Disk uspešno podešen",disk_variables_save_error:"Podešavanje diska nije uspelo.",invalid_disk_credentials:"Pogrešan kredencijal za disk koji je naveden"},taxations:{add_billing_address:"Enter Billing Address",add_shipping_address:"Enter Shipping Address",add_company_address:"Enter Company Address",modal_description:"The information below is required in order to fetch sales tax.",add_address:"Add Address for fetching sales tax.",address_placeholder:"Example: 123, My Street",city_placeholder:"Example: Los Angeles",state_placeholder:"Example: CA",zip_placeholder:"Example: 90024",invalid_address:"Please provide valid address details."}},PQ={account_info:"Informacije o nalogu",account_info_desc:"Detalji u nastavku će se koristiti za kreiranje glavnog administratorskog naloga. Moguće ih je izmeniti u bilo kom trenutku nakon prijavljivanja.",name:"Naziv",email:"E-mail",password:"Šifra",confirm_password:"Potvrdi šifru",save_cont:"Sačuvaj & Nastavi",company_info:"Informacije o firmi",company_info_desc:"Ove informacije će biti prikazane na fakturama. Moguće ih je izmeniti kasnije u podešavanjima.",company_name:"Naziv firme",company_logo:"Logo firme",logo_preview:"Pregled logoa",preferences:"Preference",preferences_desc:"Podrazumevane Preference za sistem",currency_set_alert:"The company's currency cannot be changed later.",country:"Država",state:"Savezna Država",city:"Grad",address:"Adresa",street:"Ulica1 | Ulica2",phone:"Telefon",zip_code:"Poštanski broj",go_back:"Vrati se nazad",currency:"Valuta",language:"Jezik",time_zone:"Vremenska zona",fiscal_year:"Finansijska godina",date_format:"Format datuma",from_address:"Adresa pošiljaoca",username:"Korisničko ime",next:"Sledeće",continue:"Nastavi",skip:"Preskoči",database:{database:"URL stranice & baze podataka",connection:"Veza baze podataka",host:"Host baze podataka",port:"Port baze podataka",password:"Šifra baze podataka",app_url:"URL aplikacije",app_domain:"Domen aplikacije",username:"Korisničko ime baze podataka",db_name:"Naziv baze podataka",db_path:"Putanja do baze",desc:"Kreiraj bazu podataka na svom serveru i postavi kredencijale prateći obrazac u nastavku."},permissions:{permissions:"Dozvole",permission_confirm_title:"Da li ste sigurni da želite da nastavite?",permission_confirm_desc:"Provera dozvola za foldere nije uspela",permission_desc:"U nastavku se nalazi lista dozvola za foldere koji su neophodni kako bi alikacija radila. Ukoliko provera dozvola ne uspe, ažuriraj svoju listu dozvola za te foldere."},verify_domain:{title:"Domain Verification",desc:"InvoiceShelf uses Session based authentication which requires domain verification for security purposes. Please enter the domain on which you will be accessing your web application.",app_domain:"App Domain",verify_now:"Verify Now",success:"Domain Verify Successfully.",failed:"Domain verification failed. Please enter valid domain name.",verify_and_continue:"Verify And Continue"},mail:{host:"Mail Host",port:"Mail Port",driver:"Mail drajver",secret:"Šifra",mailgun_secret:"Mailgun Šifra",mailgun_domain:"Domen",mailgun_endpoint:"Mailgun Endpoint",ses_secret:"SES Šifra",ses_key:"SES Ključ",password:"Šifra za e-mail",username:"Koristničko ime za e-mail",mail_config:"E-mail konfigurisanje",from_name:"Naziv pošiljaoca",from_mail:"E-mail adresa pošiljaoca",encryption:"E-mail enkripcija",mail_config_desc:"Ispod se nalazi forma za podešavanje E-mail drajvera za slanje pošte iz aplikacije. Takođe možete podesiti provajdere treće strane kao Sendgrid, SES itd."},req:{system_req:"Sistemski zahtevi",php_req_version:"Zahteva se PHP verzija {version} ",check_req:"Proveri zahteve",system_req_desc:"InvoiceShelf ima nekoliko zahteva za server. Proveri da li tvoj server ima potrebnu verziju PHP-a i sva navedena proširenja navedena u nastavku"},errors:{migrate_failed:"Neuspešno migriranje",database_variables_save_error:"Konfiguraciju nije moguće zapisati u .env datoteku. Proveri dozvole za datoteku",mail_variables_save_error:"E-mail konfigurisanje je neuspešno",connection_failed:"Neuspešna konekcija sa bazom podataka",database_should_be_empty:"Baza podataka treba da bude prazna"},success:{mail_variables_save_successfully:"E-mail je uspešno konfigurisan",database_variables_save_successfully:"Baza podataka je uspešno konfigurisana"}},EQ={invalid_phone:"Pogrešan Broj Telefona",invalid_url:"Nevažeći URL (primer: http://www.invoiceshelf.com)",invalid_domain_url:"Pogrešan URL (primer: invoiceshelf.com)",required:"Obavezno polje",email_incorrect:"Pogrešan E-mail",email_already_taken:"Navedeni E-mail je zauzet",email_does_not_exist:"Korisnik sa navedenom e-mail adresom ne postoji",item_unit_already_taken:"Naziv ove jedinice stavke je zauzet",payment_mode_already_taken:"Naziv ovog načina plaćanja je zauzet",send_reset_link:"Pošalji link za resetovanje",not_yet:"Još uvek ništa? Pošalji ponovo",password_min_length:"Šifra mora imati {count} karaktera",name_min_length:"Naziv mora imati najmanje {count} slova",prefix_min_length:"Prefix must have at least {count} letters.",enter_valid_tax_rate:"Unesite odgovarajuću poresku stopu",numbers_only:"Mogu se unositi samo brojevi",characters_only:"Mogu se unositi samo karakteri",password_incorrect:"Šifra mora biti identična",password_length:"Šifra mora imati {count} karaktera",qty_must_greater_than_zero:"Količina mora biti veća od 0.",price_greater_than_zero:"Cena mora biti veća od 0",payment_greater_than_zero:"Uplata mora biti veća od 0",payment_greater_than_due_amount:"Uneta uplata je veća od dospelog iznosa ove fakture",quantity_maxlength:"Količina ne može imati više od 20 cifara",price_maxlength:"Cena ne može imati više od 20 cifara",price_minvalue:"Cena mora biti veća od 0",amount_maxlength:"Iznos ne može da ima više od 20 cifara",amount_minvalue:"Iznos mora biti veći od 0",discount_maxlength:"Discount should not be greater than max discount",description_maxlength:"Opis ne može da ima više od 65,000 karaktera",subject_maxlength:"Predmet ne može da ima više od 100 karaktera",message_maxlength:"Poruka ne može da ima više od 255 karaktera",maximum_options_error:"Maksimalan broj opcija je izabran. Prvo uklonite izabranu opciju da biste izabrali drugu",notes_maxlength:"Napomena ne može da ima više od 65,000 karaktera",address_maxlength:"Adresa ne može da ima više od 255 karaktera",ref_number_maxlength:"Poziv na broj ne može da ima više od 225 karaktera",prefix_maxlength:"Prefiks ne može da ima više od 5 karaktera",something_went_wrong:"nešto je krenulo naopako",number_length_minvalue:"Number length should be greater than 0",at_least_one_ability:"Please select atleast one Permission.",valid_driver_key:"Please enter a valid {driver} key.",valid_exchange_rate:"Please enter a valid exchange rate.",company_name_not_same:"Company name must match with given name."},AQ={starter_plan:"This feature is available on Starter plan and onwards!",invalid_provider_key:"Please Enter Valid Provider API Key.",estimate_number_used:"The estimate number has already been taken.",invoice_number_used:"The invoice number has already been taken.",payment_attached:"This invoice already has a payment attached to it. Make sure to delete the attached payments first in order to go ahead with the removal.",payment_number_used:"The payment number has already been taken.",name_already_taken:"The name has already been taken.",receipt_does_not_exist:"Receipt does not exist.",customer_cannot_be_changed_after_payment_is_added:"Customer cannot be change after payment is added",invalid_credentials:"Invalid Credentials.",not_allowed:"Not Allowed",login_invalid_credentials:"These credentials do not match our records.",enter_valid_cron_format:"Please enter a valid cron format",email_could_not_be_sent:"Email could not be sent to this email address.",invalid_address:"Please enter a valid address.",invalid_key:"Please enter valid key.",invalid_state:"Please enter a valid state.",invalid_city:"Please enter a valid city.",invalid_postal_code:"Please enter a valid zip.",invalid_format:"Please enter valid query string format.",api_error:"Server not responding.",feature_not_enabled:"Feature not enabled.",request_limit_met:"Api request limit exceeded.",address_incomplete:"Incomplete Address"},CQ="Profaktura",jQ="Broj Profakture",TQ="Datum Profakture",IQ="Datum isteka Profakture",NQ="Faktura",FQ="Broj Fakture",MQ="Datum Fakture",RQ="Datum dospeća Fakture",OQ="Napomena",$Q="Stavke",LQ="Količina",BQ="Cena",UQ="Popust",VQ="Iznos",qQ="Osnovica za obračun PDV-a",HQ="Ukupan iznos",WQ="Payment",KQ="POTVRDA O UPLATI",YQ="Datum Uplate",ZQ="Broj Uplate",GQ="Način Uplate",QQ="Iznos Uplate",JQ="IZVEŠTAJ O RASHODIMA",XQ="RASHODI UKUPNO",eJ="IZVEŠTAJ O PRIHODIMA I RASHODIMA",tJ="Sales Customer Report",aJ="Sales Item Report",nJ="Tax Summary Report",iJ="PRIHOD",oJ="NETO PROFIT",rJ="Izveštaj o Prodaji: Po Klijentu",sJ="PRODAJA UKUPNO",lJ="Izveštaj o Prodaji: Po Stavci",cJ="IZVEŠTAJ O POREZIMA",dJ="UKUPNO POREZ",uJ="Tipovi Poreza",_J="Rashodi",mJ="Račun za,",pJ="Isporučiti za,",fJ="Poslat od strane:",hJ="Tax",gJ={navigation:lQ,general:cQ,dashboard:dQ,tax_types:uQ,global_search:_Q,company_switcher:mQ,dateRange:pQ,customers:fQ,items:hQ,estimates:gQ,invoices:vQ,recurring_invoices:yQ,payments:bQ,expenses:kQ,login:wQ,modules:xQ,users:DQ,reports:SQ,settings:zQ,wizard:PQ,validation:EQ,errors:AQ,pdf_estimate_label:CQ,pdf_estimate_number:jQ,pdf_estimate_date:TQ,pdf_estimate_expire_date:IQ,pdf_invoice_label:NQ,pdf_invoice_number:FQ,pdf_invoice_date:MQ,pdf_invoice_due_date:RQ,pdf_notes:OQ,pdf_items_label:$Q,pdf_quantity_label:LQ,pdf_price_label:BQ,pdf_discount_label:UQ,pdf_amount_label:VQ,pdf_subtotal:qQ,pdf_total:HQ,pdf_payment_label:WQ,pdf_payment_receipt_label:KQ,pdf_payment_date:YQ,pdf_payment_number:ZQ,pdf_payment_mode:GQ,pdf_payment_amount_received_label:QQ,pdf_expense_report_label:JQ,pdf_total_expenses_label:XQ,pdf_profit_loss_label:eJ,pdf_sales_customers_label:tJ,pdf_sales_items_label:aJ,pdf_tax_summery_label:nJ,pdf_income_label:iJ,pdf_net_profit_label:oJ,pdf_customer_sales_report:rJ,pdf_total_sales_label:sJ,pdf_item_sales_label:lJ,pdf_tax_report_label:cJ,pdf_total_tax_label:dJ,pdf_tax_types_label:uJ,pdf_expenses_label:_J,pdf_bill_to:mJ,pdf_ship_to:pJ,pdf_received_from:fJ,pdf_tax_label:hJ},vJ={dashboard:"Overzicht",customers:"Klanten",items:"Artikelen",invoices:"Facturen","recurring-invoices":"Periodieke factuur",expenses:"Uitgaven",estimates:"Offertes",payments:"Betalingen",reports:"Rapporten",settings:"Instellingen",logout:"Uitloggen",users:"Gebruikers",modules:"Modules"},yJ={add_company:"Bedrijf toevoegen",view_pdf:"Bekijk PDF",copy_pdf_url:"Kopieer PDF-URL",download_pdf:"Download PDF",save:"Opslaan",create:"Maak",cancel:"Annuleren",update:"Bijwerken",deselect:"Deselecteren",download:"Download",from_date:"Vanaf datum",to_date:"T/m datum",from:"Vanaf",to:"Naar.",ok:"Oké.",yes:"Ja.",no:"Nee.",sort_by:"Sorteer op",ascending:"Oplopend",descending:"Aflopend",subject:"Onderwerp",body:"Inhoud",message:"Bericht.",send:"Verstuur",preview:"Voorbeeld",go_back:"Ga terug",back_to_login:"Terug naar Inloggen?",home:"Home",filter:"Filter",delete:"Verwijderen",edit:"Bewerken",view:"Bekijken",add_new_item:"Voeg een nieuw item toe",clear_all:"Wis alles",showing:"Weergegeven",of:"van",actions:"Acties",subtotal:"SUBTOTAAL",discount:"KORTING",fixed:"Gemaakt",percentage:"Percentage",tax:"BELASTING",total_amount:"TOTAALBEDRAG",bill_to:"Factuur aan",ship_to:"Verzend naar",due:"Openstaand",draft:"Concept",sent:"Verzonden",all:"Alles",select_all:"Selecteer alles",select_template:"Sjabloon selecteren",choose_file:"Klik hier om een bestand te kiezen",choose_template:"Kies een sjabloon",choose:"Kiezen",remove:"Verwijderen",select_a_status:"Selecteer een status",select_a_tax:"Selecteer een belasting",search:"Zoeken",are_you_sure:"Weet je het zeker?",list_is_empty:"Lijst is leeg.",no_tax_found:"Geen belasting gevonden!",four_zero_four:"404",you_got_lost:"Oeps! Je bent verdwaald!",go_home:"Ga naar home",test_mail_conf:"E-mailconfiguratie testen",send_mail_successfully:"Mail is succesvol verzonden",setting_updated:"Instelling succesvol bijgewerkt",select_state:"Selecteer staat",select_country:"Selecteer land",select_city:"Selecteer stad",street_1:"straat 1",street_2:"Straat # 2",action_failed:"Actie: mislukt",retry:"Retr",choose_note:"Kies notitie",no_note_found:"Geen notitie gevonden",insert_note:"Notitie invoegen",copied_pdf_url_clipboard:"PDF link naar klembord gekopieerd!",copied_url_clipboard:"URL naar klembord gekopieerd!",docs:"Documenten",do_you_wish_to_continue:"Wilt u Doorgaan?",note:"Notitie",pay_invoice:"Betaal factuur",login_successfully:"Succesvol ingelogd!",logged_out_successfully:"Succesvol afgemeld",mark_as_default:"Markeren als standaard"},bJ={select_year:"Selecteer jaar",cards:{due_amount:"Openstaand bedrag",customers:"Klanten",invoices:"Facturen",estimates:"Offertes",payments:"Betalingen"},chart_info:{total_sales:"Verkoop",total_receipts:"Inkomsten",total_expense:"Uitgaven",net_income:"Netto inkomen",year:"Selecteer jaar"},monthly_chart:{title:"Verkoop en kosten"},recent_invoices_card:{title:"Openstaande facturen",due_on:"Openstaand op",customer:"Klant",amount_due:"Openstaand bedrag",actions:"Acties",view_all:"Toon alles"},recent_estimate_card:{title:"Recente offertes",date:"Datum",customer:"Klant",amount_due:"Openstaand bedrag",actions:"Acties",view_all:"Toon alles"}},kJ={name:"Naam",description:"Omschrijving",percent:"Procent",compound_tax:"Verbinding Ta"},wJ={search:"Zoeken...",customers:"Klanten",users:"Gebruikers",no_results_found:"Geen zoekresultaten"},xJ={label:"VERANDER BEDRIJF",no_results_found:"Geen resultaten gevonden",add_new_company:"Nieuw bedrijf toevoegen",new_company:"Nieuw bedrijf",created_message:"Bedrijf met succes aangemaakt"},DJ={today:"Vandaag",this_week:"Deze week",this_month:"Deze maand",this_quarter:"Dit kwartaal",this_year:"Dit jaar",previous_week:"Vorige week",previous_month:"Vorige maand",previous_quarter:"Vorig kwartaal",previous_year:"Vorig jaar",custom:"Aangepast"},SJ={title:"Klanten",prefix:"Voorvoegsel",add_customer:"Klant toevoegen",contacts_list:"Klantenlijst",name:"Naam",mail:"Mail | Mails",statement:"Verklaring",display_name:"Weergavenaam",primary_contact_name:"Naam primaire contactpersoon",contact_name:"Contactnaam",amount_due:"Openstaand bedrag",email:"E-mail",address:"Adres",phone:"Telefoon",website:"Website",overview:"Overzicht",invoice_prefix:"Factuurvoorvoegsel",estimate_prefix:"Schatting voorvoegsel",payment_prefix:"Betalingsvoorvoegsel",enable_portal:"Activeer Portaal",country:"Land",state:"Provincie",city:"Stad",zip_code:"Postcode",added_on:"Toegevoegd",action:"Actie",password:"Wachtwoord",confirm_password:"Bevestig wachtwoord",street_number:"Huisnummer",primary_currency:"Primaire valuta",description:"Omschrijving",add_new_customer:"Nieuwe klant toevoegen",save_customer:"Klant opslaan",update_customer:"Klant bijwerken",customer:"Klant | Klanten",new_customer:"Nieuwe klant",edit_customer:"Klant bewerken",basic_info:"Basis informatie",portal_access:"Portaaltoegang",portal_access_text:"Wilt u deze klant toestaan om in te loggen op het Klantenportaal?",portal_access_url:"Klantenportaal login URL",portal_access_url_help:"Kopieer & stuur de bovenstaande URL door naar uw klant om toegang te geven.",billing_address:"factuur adres",shipping_address:"Verzendingsadres",copy_billing_address:"Kopiëren van facturering",no_customers:"Nog geen klanten!",no_customers_found:"Geen klanten gevonden!",no_contact:"Geen contact",no_contact_name:"Geen contactnaam",list_of_customers:"Hier vind je jouw klanten terug.",primary_display_name:"Primaire weergavenaam",select_currency:"Selecteer valuta",select_a_customer:"Selecteer een klant",type_or_click:"Typ of klik om te selecteren",new_transaction:"Nieuwe transactie",no_matching_customers:"Er zijn geen overeenkomende klanten!",phone_number:"Telefoonnummer",create_date:"Aangemaakt op",confirm_delete:"Deze klant en alle gerelateerde facturen, offertes en betalingen worden permanent verwijderd. | Deze klanten en alle gerelateerde facturen, offertes en betalingen worden permanent verwijderd.",created_message:"Klant succesvol aangemaakt",updated_message:"Klant succesvol geüpdatet",address_updated_message:"Adresinformatie succesvol bijgewerkt",deleted_message:"Klant succesvol verwijderd | Klanten zijn succesvol verwijderd",edit_currency_not_allowed:"Kan valuta niet wijzigen zodra de transacties zijn aangemaakt."},zJ={title:"Artikelen",items_list:"Lijst met items",name:"Naam",unit:"Eenheid",description:"Omschrijving",added_on:"Toegevoegd",price:"Prijs",date_of_creation:"Datum van creatie",not_selected:"Geen item geselecteerd",action:"Actie",add_item:"Voeg item toe",save_item:"Item opslaan",update_item:"Item bijwerken",item:"Artikel | Artikelen",add_new_item:"Voeg een nieuw item toe",new_item:"Nieuw item",edit_item:"Item bewerken",no_items:"Nog geen items!",list_of_items:"Hier vind je jouw artikelen terug.",select_a_unit:"selecteer eenheid",taxes:"Belastingen",item_attached_message:"Kan een item dat al in gebruik is niet verwijderen",confirm_delete:"U kunt dit item | niet herstellen U kunt deze items niet herstellen",created_message:"Item succesvol aangemaakt",updated_message:"Item succesvol bijgewerkt",deleted_message:"Item succesvol verwijderd | Items zijn verwijderd"},PJ={title:"Offertes",accept_estimate:"Offerte accepteren",reject_estimate:"Offerte afwijzen",estimate:"Offerte | Offertes",estimates_list:"Lijst met offertes",days:"{dagen} dagen",months:"{months} Maand",years:"{jaar} jaar",all:"Allemaal",paid:"Betaald",unpaid:"Onbetaald",customer:"Klant",ref_no:"Ref Nr.",number:"Aantal",amount_due:"Bedrag",partially_paid:"Gedeeltelijk betaald",total:"Totaal",discount:"Korting",sub_total:"Subtotaal",estimate_number:"Offerte nummer",ref_number:"Referentie nummer",contact:"Contact",add_item:"Voeg een item toe",date:"Datum",due_date:"Vervaldatum",expiry_date:"Vervaldatum",status:"Status",add_tax:"Belasting toevoegen",amount:"Bedrag",action:"Actie",notes:"Opmerkingen",tax:"Belasting",estimate_template:"Sjabloon",convert_to_invoice:"Converteren naar factuur",mark_as_sent:"Markeren als verzonden",send_estimate:"Verzend offerte",resend_estimate:"Offerte opnieuw verzenden",record_payment:"Betaling registreren",add_estimate:"Offerte toevoegen",save_estimate:"Bewaar offerte",confirm_conversion:"Deze offerte wordt gebruikt om een nieuwe factuur te maken.",conversion_message:"Factuur gemaakt",confirm_send_estimate:"Deze offerte wordt via e-mail naar de klant gestuurd",confirm_mark_as_sent:"Deze offerte wordt gemarkeerd als verzonden",confirm_mark_as_accepted:"Deze offerte wordt gemarkeerd als Geaccepteerd",confirm_mark_as_rejected:"Deze offerte wordt gemarkeerd als Afgewezen",no_matching_estimates:"Er zijn geen overeenkomende offertes!",mark_as_sent_successfully:"Offerte gemarkeerd als succesvol verzonden",send_estimate_successfully:"Offerte succesvol verzonden",errors:{required:"Veld is vereist"},accepted:"Geaccepteerd",rejected:"Afgewezen",expired:"Verlopen",sent:"Verzonden",draft:"Concept",viewed:"Bekeken",declined:"Geweigerd",new_estimate:"Nieuwe offerte",add_new_estimate:"Offerte toevoegen",update_Estimate:"Offerte bijwerken",edit_estimate:"Offerte bewerken",items:"artikelen",Estimate:"Offerte | Offertes",add_new_tax:"Nieuwe belasting toevoegen",no_estimates:"Nog geen offertes!",list_of_estimates:"Hier vind je jouw offertes terug.",mark_as_rejected:"Markeer als afgewezen",mark_as_accepted:"Markeer als geaccepteerd",marked_as_accepted_message:"Offerte gemarkeerd als geaccepteerd",marked_as_rejected_message:"Offerte gemarkeerd als afgewezen",confirm_delete:"U kunt deze offerte | niet herstellen U kunt deze offertes niet herstellen",created_message:"Offerte is gemaakt",updated_message:"Offerte succesvol bijgewerkt",deleted_message:"Offerte succesvol verwijderd | Offertes zijn succesvol verwijderd",something_went_wrong:"Er is iets fout gegaan",item:{title:"Titel van het item",description:"Omschrijving",quantity:"Aantal stuks",price:"Prijs",discount:"Korting",total:"Totaal",total_discount:"Totale korting",sub_total:"Subtotaal",tax:"Belasting",amount:"Bedrag",select_an_item:"Typ of klik om een item te selecteren",type_item_description:"Type Item Beschrijving (optioneel)"},mark_as_default_estimate_template_description:"Indien ingeschakeld, zal het geselecteerde sjabloon automatisch worden gekozen voor nieuwe offertes."},EJ={title:"Facturen",download:"Download",pay_invoice:"Betaal factuur",invoices_list:"Facturenlijst",invoice_information:"Factuurgegevens",days:"{dagen} dagen",months:"{months} Maand",years:"{jaar} jaar",all:"Allemaal",paid:"Betaald",unpaid:"Onbetaald",viewed:"Bekeken",overdue:"Over tijd",completed:"Voltooid",customer:"Klant",paid_status:"Betaling",ref_no:"REF NR.",number:"AANTAL",amount_due:"BEDRAG",partially_paid:"Gedeeltelijk betaald",total:"Totaal",discount:"Korting",sub_total:"Subtotaal",invoice:"Factuur | Facturen",invoice_number:"Factuurnummer",ref_number:"Referentie nummer",contact:"Contact",add_item:"Voeg een item toe",date:"Datum",due_date:"Vervaldatum",status:"Status",add_tax:"Belasting toevoegen",amount:"Bedrag",action:"Actie",notes:"Opmerkingen",view:"Bekijken",send_invoice:"Factuur verzenden",resend_invoice:"Factuur opnieuw verzenden",invoice_template:"Factuursjabloon",conversion_message:"Factuur succesvol gekloond",template:"Sjabloon",mark_as_sent:"Markeer als verzonden",confirm_send_invoice:"Deze factuur wordt via e-mail naar de klant gestuurd",invoice_mark_as_sent:"Deze factuur wordt gemarkeerd als verzonden",confirm_mark_as_accepted:"Deze offerte wordt gemarkeerd als Geaccepteerd",confirm_mark_as_rejected:"Deze factuur wordt gemarkeerd als Afgewezen",confirm_send:"Deze factuur wordt via e-mail naar de klant gestuurd",invoice_date:"Factuur datum",record_payment:"Betaling registreren",add_new_invoice:"Nieuwe factuur toevoegen",update_expense:"Onkosten bijwerken",edit_invoice:"Factuur bewerken",new_invoice:"Nieuwe factuur",save_invoice:"Factuur opslaan",update_invoice:"Factuur bijwerken",add_new_tax:"Nieuwe belasting toevoegen",no_invoices:"Nog geen facturen!",mark_as_rejected:"Markeer als afgewezen",mark_as_accepted:"Markeer als geaccepteerd",list_of_invoices:"Hier vind je jouw facturen terug.",select_invoice:"Selecteer Factuur",no_matching_invoices:"Er zijn geen overeenkomende facturen!",mark_as_sent_successfully:"Factuur gemarkeerd als succesvol verzonden",invoice_sent_successfully:"Factuur succesvol verzonden",cloned_successfully:"Factuur succesvol gekloond",clone_invoice:"Factuur klonen",confirm_clone:"Deze factuur wordt gekloond in een nieuwe factuur",item:{title:"Titel van het item",description:"Omschrijving",quantity:"Aantal stuks",price:"Prijs",discount:"Korting",total:"Totaal",total_discount:"Totale korting",sub_total:"Subtotaal",tax:"Belasting",amount:"Bedrag",select_an_item:"Typ of klik om een item te selecteren",type_item_description:"Type Item Beschrijving (optioneel)"},payment_attached_message:"Aan een van de geselecteerde facturen is al een betaling gekoppeld. Zorg ervoor dat u eerst de bijgevoegde betalingen verwijdert om door te gaan met de verwijdering",confirm_delete:"Deze factuur wordt permanent verwijderd | Deze facturen worden permanent verwijderd",created_message:"Factuur succesvol aangemaakt",updated_message:"Factuur succesvol bijgewerkt",deleted_message:"Factuur succesvol verwijderd | Facturen succesvol verwijderd",marked_as_sent_message:"Factuur gemarkeerd als succesvol verzonden",something_went_wrong:"Er is iets fout gegaan",invalid_due_amount_message:"Het totale factuurbedrag mag niet lager zijn dan het totale betaalde bedrag voor deze factuur. Werk de factuur bij of verwijder de bijbehorende betalingen om door te gaan.",mark_as_default_invoice_template_description:"Indien ingeschakeld, zal het geselecteerde sjabloon automatisch worden gekozen voor nieuwe offertes."},AJ={title:"Periodieke facturen",invoices_list:"Periodieke facturen lijst",days:"{days} dagen",months:"{months} maanden",years:"{years} jaar",all:"Alles",paid:"Betaald",unpaid:"Onbetaald",viewed:"Bekeken",overdue:"Achterstallig",active:"Actief",completed:"Voltooid",customer:"KLANT",paid_status:"BETAALD STATUS",ref_no:"REF NR.",number:"NUMMER",amount_due:"Bedrag",partially_paid:"Gedeeltelijk betaald",total:"Totaal",discount:"Korting",sub_total:"Subtotaal",invoice:"Periodieke factuur / Periodieke facturen",invoice_number:"Periodieke facturen",next_invoice_date:"Volgende factuurdatum",ref_number:"Referentie nummer",contact:"Contact",add_item:"Item toevoegen",date:"Datum",limit_by:"Beperken door",limit_date:"Uiterste datum",limit_count:"Limiet aantal",count:"Aantal",status:"Status",select_a_status:"Selecteer een status",working:"Bezig",on_hold:"Niet actief",complete:"Voltooid",add_tax:"Belasting toevoegen",amount:"Bedrag",action:"Actie",notes:"Opmerkingen",view:"Bekijken",basic_info:"Basis informatie",send_invoice:"Verstuur periodieke factuur",auto_send:"Automatisch verzenden",resend_invoice:"Verstuur periodieke factuur opnieuw",invoice_template:"Periodieke factuur sjabloon",conversion_message:"Periodieke factuur succesvol gekopieerd",template:"Sjabloon",mark_as_sent:"Markeer als verzonden",confirm_send_invoice:"Deze periodieke factuur wordt via e-mail naar de klant gestuurd",invoice_mark_as_sent:"Deze periodieke factuur wordt gemarkeerd als verzonden",confirm_send:"Deze terugkerende factuur wordt via e-mail naar de klant gestuurd",starts_at:"Startdatum",due_date:"Vervaldatum factuur",record_payment:"Betaling registreren",add_new_invoice:"Nieuwe periodieke factuur toevoegen",update_expense:"Onkosten bijwerken",edit_invoice:"Periodieke factuur bewerken",new_invoice:"Nieuwe periodieke factuur toevoegen",send_automatically:"Automatisch verzenden",send_automatically_desc:"Schakel dit in als u de factuur automatisch aan de klant wilt sturen wanneer deze is aangemaakt.",save_invoice:"Bewaar periodieke factuur",update_invoice:"Periodieke factuur bewerken",add_new_tax:"Nieuwe btw toevoegen",no_invoices:"Nog geen periodieke facturen!",mark_as_rejected:"Markeer als afgewezen",mark_as_accepted:"Markeer als geaccepteerd",list_of_invoices:"Hier vind je de periodieke facturen terug.",select_invoice:"Selecteer Factuur",no_matching_invoices:"Er zijn geen overeenkomende periodieke facturen!",mark_as_sent_successfully:"Periodieke factuur gemarkeerd als succesvol verzonden",invoice_sent_successfully:"Periodieke factuur succesvol verzonden",cloned_successfully:"Terugkerende factuur succesvol gekopieerd",clone_invoice:"Kopieer periodieke factuur",confirm_clone:"Deze periodieke factuur wordt gekopieerd naar een nieuwe periodieke factuur",add_customer_email:"Voeg een e-mailadres aan deze klant toe, zodat facturen automatisch verzonden kunnen worden.",item:{title:"Item titel",description:"Beschrijving",quantity:"Aantal",price:"Prijs",discount:"Korting",total:"Totaal",total_discount:"Totale korting",sub_total:"Subtotaal",tax:"Btw",amount:"Bedrag",select_an_item:"Typ of klik om een item te selecteren",type_item_description:"Type item beschrijving (optioneel)"},frequency:{title:"Frequentie",select_frequency:"Frequentie selecteren",minute:"Minuut",hour:"Uur",day_month:"Dag van de maand",month:"Maand",day_week:"Dag van de week"},confirm_delete:"Deze factuur wordt permanent verwijderd | Deze facturen worden permanent verwijderd",created_message:"Terugkerende factuur succesvol gecreëerd",updated_message:"Terugkerende factuur succesvol bijgewerkt",deleted_message:"Periodieke factuur succesvol verwijderd | Periodieke facturen succesvol verwijderd",marked_as_sent_message:"Periodieke factuur gemarkeerd als succesvol verzonden",user_email_does_not_exist:"E-mailadres van gebruiker bestaat niet",something_went_wrong:"er is iets fout gegaan",invalid_due_amount_message:"Het totale factuurbedrag mag niet lager zijn dan het totale betaalde bedrag voor deze factuur. Werk de factuur bij of verwijder de bijbehorende betalingen om door te gaan."},CJ={title:"Betalingen",payments_list:"Betalingslijst",record_payment:"Bestaling registreren",customer:"Klant",date:"Datum",amount:"Bedrag",action:"Actie",payment_number:"Betalingsnummer",payment_mode:"Betaalmethode",invoice:"Factuur",note:"Notitie",add_payment:"Betaling toevoegen",new_payment:"Nieuwe betaling",edit_payment:"Betaling bewerken",view_payment:"Bekijk betaling",add_new_payment:"Nieuwe betaling toevoegen",send_payment_receipt:"Betaalbewijs verzenden",send_payment:"Verstuur betaling",save_payment:"Betaling opslaan",update_payment:"Betaling bijwerken",payment:"Betaling | Betalingen",no_payments:"Nog geen betalingen!",not_selected:"Niet geselecteerd",no_invoice:"Geen factuur",no_matching_payments:"Er zijn geen overeenkomende betalingen!",list_of_payments:"Hier vind je jouw betalingen terug.",select_payment_mode:"Selecteer betalingswijze",confirm_mark_as_sent:"Deze offerte wordt gemarkeerd als verzonden",confirm_send_payment:"Deze betaling wordt via e-mail naar de klant gestuurd",send_payment_successfully:"Betaling succesvol verzonden",something_went_wrong:"Er is iets fout gegaan",confirm_delete:"Deze betaling wordt permanent verwijderd | Deze betalingen worden permanent verwijderd",created_message:"De betaling is succesvol aangemaakt",updated_message:"Betaling succesvol bijgewerkt",deleted_message:"Betaling succesvol verwijderd | Betalingen zijn verwijderd",invalid_amount_message:"Het bedrag van de betaling is ongeldig"},jJ={title:"Uitgaven",expenses_list:"Uitgavenlijst",select_a_customer:"Selecteer een klant",expense_title:"Titel",customer:"Klant",currency:"Valuta",contact:"Contact",category:"Categorie",from_date:"Van datum",to_date:"Tot datum",expense_date:"Datum",description:"Omschrijving",receipt:"Bon",amount:"Bedrag",action:"Actie",not_selected:"Niet geselecteerd",note:"Notitie",category_id:"Categorie ID",date:"Uitgavendatum",add_expense:"Kosten toevoegen",add_new_expense:"Kosten toevoegen",save_expense:"Kosten opslaan",update_expense:"Onkosten bijwerken",download_receipt:"Ontvangstbewijs downloaden",edit_expense:"Uitgaven bewerken",new_expense:"Kosten toevoegen",expense:"Uitgaven | Uitgaven",no_expenses:"Nog geen kosten!",list_of_expenses:"Hier vind je jouw uitgaven terug.",confirm_delete:"Deze uitgave wordt permanent verwijderd | Deze kosten worden permanent verwijderd",created_message:"Kosten succesvol gemaakt",updated_message:"Kosten succesvol bijgewerkt",deleted_message:"Kosten succesvol verwijderd | Uitgaven zijn verwijderd",categories:{categories_list:"Categorieënlijst",title:"Titel",name:"Naam",description:"Omschrijving",amount:"Bedrag",actions:"Acties",add_category:"categorie toevoegen",new_category:"Nieuwe categorie",category:"Categorie | Categorieën",select_a_category:"Selecteer een categorie"}},TJ={email:"E-mail",password:"Wachtwoord",forgot_password:"Wachtwoord vergeten?",or_signIn_with:"of Log in met",login:"Log in",register:"Registreren",reset_password:"Wachtwoord opnieuw instellen",password_reset_successfully:"Wachtwoord opnieuw ingesteld",enter_email:"Voer email in",enter_password:"Voer wachtwoord in",retype_password:"Geef nogmaals het wachtwoord"},IJ={buy_now:"Nu kopen",install:"Installeer",price:"Prijs",download_zip_file:"Download ZIP-bestand",unzipping_package:"Pakket uitpakken",copying_files:"Bestanden kopiëren",deleting_files:"Ongebruikte bestanden verwijderen",completing_installation:"Installatie voltooien",update_failed:"Update mislukt",install_success:"Module is succesvol geïnstalleerd!",customer_reviews:"Beoordelingen",license:"Licentie",faq:"Veelgestelde vragen",monthly:"Maandelijks",yearly:"Jaarlijks",updated:"Bijgewerkt",version:"Versie",disable:"Uitschakelen",module_disabled:"Module uitgeschakeld",enable:"Inschakelen",module_enabled:"Module ingeschakeld",update_to:"Update naar",module_updated:"Module succesvol bijgewerkt!",title:"Modules",module:"Module | Modules",api_token:"API-token",invalid_api_token:"Ongeldig API-token.",other_modules:"Andere modules",view_all:"Toon alles",no_reviews_found:"Er zijn nog geen beoordelingen voor deze module!",module_not_purchased:"Module niet gekocht",module_not_found:"Module niet gevonden",version_not_supported:"This module version doesn't support the current version of InvoiceShelf",last_updated:"Laatst bijgewerkt op",connect_installation:"Verbind uw installatie",api_token_description:"Log in op {url} en verbind deze installatie door het API Token in te voeren. Uw gekochte modules zullen hier verschijnen nadat de verbinding is gemaakt.",view_module:"Bekijk Module",update_available:"Update beschikbaar",purchased:"Gekocht",installed:"Geïnstalleerd",no_modules_installed:"Nog geen modules geïnstalleerd!",disable_warning:"Alle instellingen voor dit specifiek zullen worden teruggedraaid.",what_you_get:"Wat je krijgt"},NJ={title:"Gebruikers",users_list:"Gebruikerslijst",name:"Naam",description:"Omschrijving",added_on:"Toegevoegd",date_of_creation:"Datum van creatie",action:"Actie",add_user:"Gebruiker toevoegen",save_user:"Gebruiker opslaan",update_user:"Gebruiker bijwerken",user:"Gebruiker | Gebruikers",add_new_user:"Nieuwe gebruiker toevoegen",new_user:"Nieuwe gebruiker",edit_user:"Gebruiker bewerken",no_users:"Nog geen gebruikers!",list_of_users:"Deze sectie zal de lijst met gebruikers bevatten.",email:"E-mail",phone:"Telefoon",password:"Wachtwoord",user_attached_message:"Kan een item dat al in gebruik is niet verwijderen",confirm_delete:"Je kunt deze gebruiker later niet herstellen | Je kunt deze gebruikers later niet herstellen",created_message:"Gebruiker succesvol aangemaakt",updated_message:"Gebruiker met succes bijgewerkt",deleted_message:"Gebruiker succesvol verwijderd | Gebruikers succesvol verwijderd",select_company_role:"Selecteer rol voor {company}",companies:"Bedrijven"},FJ={title:"Verslag doen van",from_date:"Van datum",to_date:"Tot datum",status:"Status",paid:"Betaald",unpaid:"Onbetaald",download_pdf:"Download PDF",view_pdf:"Bekijk PDF",update_report:"Rapport bijwerken",report:"Verslag | Rapporten",profit_loss:{profit_loss:"Verlies",to_date:"Tot datum",from_date:"Van datum",date_range:"Selecteer Datumbereik"},sales:{sales:"Verkoop",date_range:"Selecteer datumbereik",to_date:"Tot datum",from_date:"Van datum",report_type:"Rapporttype"},taxes:{taxes:"Belastingen",to_date:"Tot datum",from_date:"Van datum",date_range:"Selecteer Datumbereik"},errors:{required:"Veld is vereist"},invoices:{invoice:"Factuur",invoice_date:"Factuur datum",due_date:"Vervaldatum",amount:"Bedrag",contact_name:"Contactnaam",status:"Status"},estimates:{estimate:"Offerte",estimate_date:"Offerte Datum",due_date:"Vervaldatum",estimate_number:"Offerte nummer",ref_number:"Referentie nummer",amount:"Bedrag",contact_name:"Contactnaam",status:"Status"},expenses:{expenses:"Uitgaven",category:"Categorie",date:"Datum",amount:"Bedrag",to_date:"Tot datum",from_date:"Van datum",date_range:"Selecteer Datumbereik"}},MJ={menu_title:{account_settings:"Account instellingen",company_information:"Bedrijfsinformatie",customization:"Aanpassen",preferences:"Voorkeuren",notifications:"Kennisgevingen",tax_types:"Belastingtypen",expense_category:"Onkostencategorieën",update_app:"App bijwerken",backup:"Back-up",file_disk:"Bestandsopslag",custom_fields:"Aangepaste velden",payment_modes:"Betaalmethodes",notes:"Opmerkingen",exchange_rate:"Wisselkoers",address_information:"Adresgegevens"},address_information:{section_description:" U kunt uw adresgegevens bijwerken via het onderstaande formulier."},title:"Instellingen",setting:"Instellingen | Instellingen",general:"Algemeen",language:"Taal",primary_currency:"Primaire valuta",timezone:"Tijdzone",date_format:"Datumnotatie",currencies:{title:"Valuta's",currency:"Valuta | Valuta's",currencies_list:"Lijst van valuta's",select_currency:"selecteer valuta",name:"Naam",code:"Code",symbol:"Symbool",precision:"Precisie",thousand_separator:"Duizend scheidingsteken",decimal_separator:"Decimaalscheidingsteken",position:"Positie",position_of_symbol:"Positie van symbool",right:"Rechtsaf",left:"Links",action:"Actie",add_currency:"Valuta toevoegen"},mail:{host:"Mail host",port:"E-mail poort",driver:"Mail-stuurprogramma",secret:"Geheim",mailgun_secret:"Mailgun geheim",mailgun_domain:"Domein",mailgun_endpoint:"Mailgun-eindpunt",ses_secret:"SES geheim",ses_key:"SES-sleutel",password:"Mail wachtwoord",username:"Mail gebruikersnaam",mail_config:"E-mailconfiguratie",from_name:"Van Mail Name",from_mail:"Van e-mailadres",encryption:"E-mailversleuteling",mail_config_desc:"Hieronder vindt u het formulier voor het configureren van het e-mailstuurprogramma voor het verzenden van e-mails vanuit de app. U kunt ook externe providers zoals Sendgrid, SES enz. Configureren."},pdf:{title:"PDF-instelling",footer_text:"Voettekst",pdf_layout:"PDF indeling"},company_info:{company_info:"Bedrijfsinfo",company_name:"Bedrijfsnaam",company_logo:"Bedrijfslogo",section_description:"Informatie over uw bedrijf die wordt weergegeven op facturen, offertes en andere documenten die door InvoiceShelf zijn gemaakt.",phone:"Telefoon",country:"Land",state:"Provincie",city:"Stad",address:"Adres",zip:"Postcode",save:"Opslaan",delete:"Verwijderen",updated_message:"Bedrijfsinformatie succesvol bijgewerkt",delete_company:"Bedrijf verwijderen",delete_company_description:"Zodra u uw bedrijf verwijdert, verliest u alle gegevens en bestanden die eraan gekoppeld zijn.",are_you_absolutely_sure:"Weet u het zeker?",delete_company_modal_desc:"Deze actie kan niet ongedaan worden gemaakt. Dit zal {company} en alle bijbehorende gegevens permanent verwijderen.",delete_company_modal_label:"Typ {company} om te bevestigen"},custom_fields:{title:"Aangepaste velden",section_description:"Uw facturen, offertes & betalingsbewijzen aanpassen met uw eigen velden. Gebruik onderstaande velden op het adres format op de Customization instellings pagina.",add_custom_field:"Extra veld toevoegen",edit_custom_field:"Veld wijzigen",field_name:"Veld naam",label:"Label",type:"Type",name:"Naam",slug:"Slug",required:"Verplicht",placeholder:"Tijdelijke plaatshouder",help_text:"Hulp Text",default_value:"Standaard waarde",prefix:"Voorvoegsel",starting_number:"Startnummer",model:"Model",help_text_description:"Voer tekst in om gebruikers te helpen het doel van dit aangepaste veld te begrijpen.",suffix:"Achtervoegsel",yes:"Ja",no:"Nee",order:"Volgorde",custom_field_confirm_delete:"U kunt dit veld niet herstellen",already_in_use:"Aangepast veld is al in gebruik",deleted_message:"Aangepast veld is succesvol verwijderd",options:"opties",add_option:"Optie toevoegen",add_another_option:"Nog een optie toevoegen",sort_in_alphabetical_order:"Sorteer op alfabetische volgorde",add_options_in_bulk:"Voeg opties toe in bulk",use_predefined_options:"Gebruik voorgedefinieerde opties",select_custom_date:"Selecteer een aangepaste datum",select_relative_date:"Selecteer relatieve datum",ticked_by_default:"Standaard aangevinkt",updated_message:"Aangepast veld is succesvol aangepast",added_message:"Aangepast veld is succesvol toegevoegd",press_enter_to_add:"Druk op Enter om een nieuwe optie toe te voegen",model_in_use:"Kan model niet bijwerken voor velden die al in gebruik zijn.",type_in_use:"Kan type niet bijwerken voor velden die al in gebruik zijn."},customization:{customization:"aanpassen",updated_message:"Bedrijfsinformatie succesvol bijgewerkt",save:"Opslaan",insert_fields:"Velden invoegen",learn_custom_format:"Leer hoe je een aangepast formaat kunt gebruiken",add_new_component:"Component toevoegen",component:"Component",Parameter:"Parameter",series:"Reeksen",series_description:"Om een statische voorvoegsel/postfix zoals 'INV' in uw hele bedrijf in te stellen. Het ondersteunt tekenlengte tot 4 tekens.",series_param_label:"Serie Waarde",delimiter:"Scheidingsteken",delimiter_description:"Enkel teken voor het opgeven van de grens tussen 2 verschillende componenten. Standaard is het ingesteld op -",delimiter_param_label:"Scheidingsteken waarde",date_format:"Datumformaat",date_format_description:"Een lokaal datum- en tijdveld dat een formaatparameter accepteert. Het standaardformaat: 'Y' geeft het huidige jaar weer.",date_format_param_label:"Formaat",sequence:"Volgnummer",sequence_description:"Opeenvolgende nummering voor uw bedrijf. U kunt de lengte opgeven op de aangegeven parameter.",sequence_param_label:"Volgnummerlengte",customer_series:"Voorvoegsel",customer_series_description:"Om een andere voor- of achtervoegsel voor elke klant in te stellen.",customer_sequence:"Klantnummer",customer_sequence_description:"Een volgnummer voor elk van uw klanten.",customer_sequence_param_label:"Klantnummerlengte",random_sequence:"Willekeurige reeks",random_sequence_description:"Willekeurige alfanumerieke tekenreeks. U kunt de lengte opgeven op de aangegeven parameters.",random_sequence_param_label:"Volgnummerlengte",invoices:{title:"Facturen",invoice_number_format:"Factuurnummer indeling",invoice_number_format_description:"Wijzig hoe uw factuurnummer automatisch wordt gegenereerd bij het aanmaken van een nieuwe factuur.",preview_invoice_number:"Voorbeeldweergave factuurnummer indeling",due_date:"Vervaldatum",due_date_description:"Geef aan hoe de vervaldatum automatisch wordt ingesteld wanneer u een factuur aanmaakt.",due_date_days:"Factuur verlopen na dagen",set_due_date_automatically:"Vervaldatum automatisch vullen",set_due_date_automatically_description:"Schakel dit in als u automatisch een vervaldatum wilt instellen wanneer u een nieuwe factuur aanmaakt.",default_formats:"Standaard opmaak",default_formats_description:"Onderstaand formaat wordt gebruikt om de velden automatisch in te vullen bij het aanmaken van facturen.",default_invoice_email_body:"Standaard factuur email text",company_address_format:"Bedrijfsadres format",shipping_address_format:"Verzendadres format",billing_address_format:"Factuuradres format",invoice_email_attachment:"Stuur factuur als bijlage",invoice_email_attachment_setting_description:"Schakel dit in als u facturen als e-mailbijlage wilt verzenden. Houd er rekening mee dat de knop 'Factuur bekijken' in e-mails niet meer wordt weergegeven wanneer deze is ingeschakeld.",invoice_settings_updated:"Factuurinstelling succesvol bijgewerkt",retrospective_edits:"Retrospectieve bewerkingen",allow:"Toestaan",disable_on_invoice_partial_paid:"Uitschakelen nadat gedeeltelijke betaling is opgeslagen",disable_on_invoice_paid:"Uitschakelen nadat volledige betaling is opgenomen",disable_on_invoice_sent:"Uitschakelen nadat factuur is verzonden",retrospective_edits_description:" Op basis van de wetten van uw land of uw voorkeur, kunt u gebruikers beperken om afgeronde facturen te bewerken."},estimates:{title:"Offertes",estimate_number_format:"Offerte nummer formaat",estimate_number_format_description:"Aanpassen hoe uw offertes nummer automatisch wordt gegenereerd als u een nieuwe offerte aanmaakt.",preview_estimate_number:"Voorbeeld offertes nummer",expiry_date:"Vervaldatum",expiry_date_description:"Geef aan hoe de vervaldatum automatisch wordt ingesteld wanneer u een offerte aanmaakt.",expiry_date_days:"Offerte vervalt over dagen",set_expiry_date_automatically:"Automatisch vervaldatum instellen",set_expiry_date_automatically_description:"Schakel dit in als u automatisch de vervaldatum wilt instellen wanneer u een nieuwe schatting maakt.",default_formats:"Standaardformaat",default_formats_description:"Onderstaand formaten wordt gebruikt om de velden automatisch in te vullen bij het aanmaken van offerte.",default_estimate_email_body:"Standaard offerte email text",company_address_format:"Bedrijfsadres format",shipping_address_format:"Verzendadres format",billing_address_format:"Factuuradres Format",estimate_email_attachment:"Stuur offerte als bijlage",estimate_email_attachment_setting_description:"Schakel dit in als u de offertes als e-mailbijlage wilt verzenden. Houd er rekening mee dat de knop 'Bekijk offerte' in e-mails niet meer wordt weergegeven wanneer deze is ingeschakeld.",estimate_settings_updated:"Instelling Offerte succesvol bijgewerkt",convert_estimate_options:"Offerte omzetten actie",convert_estimate_description:"Specificeer wat er gebeurt met de offerte nadat deze omgezet is naar een factuur.",no_action:"Geen handeling",delete_estimate:"Schatting verwijderen",mark_estimate_as_accepted:"Markeren offerte als geaccepteerd"},payments:{title:"Betalingen",payment_number_format:"Betalingnummer formaat",payment_number_format_description:"Aanpassen hoe uw offertes nummer automatisch wordt gegenereerd als u een nieuwe offerte aanmaakt.",preview_payment_number:"Bekijk betalingsnummer",default_formats:"Standaard formaten",default_formats_description:"Onderstaande formaten worden gebruikt om de velden automatisch in te vullen bij het maken van betalingen.",default_payment_email_body:"Standaard format betalingsmail",company_address_format:"Bedrijfsadres format",from_customer_address_format:"Van klant adres formaat",payment_email_attachment:"Stuur betaalbewijs als bijlage",payment_email_attachment_setting_description:"Schakel dit in als u de betalingsbewijzen als e-mailbijlage wilt verzenden. Houd er rekening mee dat de knop 'Betaling bekijken' in e-mails niet meer wordt weergegeven wanneer deze is ingeschakeld.",payment_settings_updated:"Betalingsinstelling geüpdatet"},items:{title:"Artikelen",units:"eenheden",add_item_unit:"Itemeenheid toevoegen",edit_item_unit:"Itemeenheid bewerken",unit_name:"Naam eenheid",item_unit_added:"Item Eenheid toegevoegd",item_unit_updated:"Artikeleenheid bijgewerkt",item_unit_confirm_delete:"U kunt dit item niet terughalen",already_in_use:"Item Unit is al in gebruik",deleted_message:"Artikeleenheid succesvol verwijderd"},notes:{title:"Opmerkingen",description:"Bespaar tijd door notities te maken en ze opnieuw te gebruiken op uw facturen, ramingen en betalingen.",notes:"Opmerkingen",type:"Type",add_note:"Notitie toevoegen",add_new_note:"Voeg een nieuwe notitie toe",name:"Naam",edit_note:"Notitie bewerken",note_added:"Notitie toegevoegd",note_updated:"Notitie bijgewerkt",note_confirm_delete:"U kunt deze notitie niet terughalen",already_in_use:"Notitie is reeds in gebruik",deleted_message:"Notitie verwijderd"}},account_settings:{profile_picture:"Profielfoto",name:"Naam",email:"E-mail",password:"Wachtwoord",confirm_password:"bevestig wachtwoord",account_settings:"Account instellingen",save:"Opslaan",section_description:"U kunt uw naam, e-mailadres en wachtwoord bijwerken via onderstaand formulier.",updated_message:"Accountinstellingen succesvol bijgewerkt"},user_profile:{name:"Naam",email:"E-mail",password:"Wachtwoord",confirm_password:"Bevestig wachtwoord"},notification:{title:"Kennisgeving",email:"Stuur meldingen naar",description:"Welke e-mailmeldingen wilt u ontvangen als er iets verandert?",invoice_viewed:"Factuur bekeken",invoice_viewed_desc:"Wanneer uw klant de factuur bekijkt die via het kraterdashboard is verzonden.",estimate_viewed:"Offerte bekeken",estimate_viewed_desc:"Wanneer uw klant de offerte bekijkt die via het kraterdashboard is verzonden.",save:"Opslaan",email_save_message:"E-mail succesvol opgeslagen",please_enter_email:"Voer e-mailadres in"},roles:{title:"Rollen",description:"Beheer de rollen en machtigingen van dit bedrijf",save:"Opslaan",add_new_role:"Nieuwe rol toevoegen",role_name:"Rol naam",added_on:"Toegevoegd op",add_role:"Rol toevoegen",edit_role:"Rol bewerken",name:"Naam",permission:"Machtiging Machtigingen",select_all:"Selecteer alles",none:"Geen",confirm_delete:"Dit rol wordt permanent verwijderd",created_message:"Rol succesvol gemaakt",updated_message:"Rol succesvol bijgewerkt",deleted_message:"Rol succesvol verwijderd",already_in_use:"Rol is reeds in gebruik"},exchange_rate:{exchange_rate:"Wisselkoers",title:"Problemen met wisselkoersen oplossen",description:"Voer de wisselkoers in van alle onderstaande valuta's om InvoiceShelf te helpen de bedragen in {currency} goed te berekenen.",drivers:"Stuurprogramma 's",new_driver:"Voeg nieuwe provider toe",edit_driver:"Provider bewerken",select_driver:"Selecteer stuurprogramma",update:"selecteer wisselkoers ",providers_description:"Configureer hier uw wisselkoersaanbieders om de laatste wisselkoers voor transacties automatisch op te halen.",key:"API sleutel",name:"Naam",driver:"Stuurprogramma",is_default:"IS STANDAARD",currency:"Valuta's",exchange_rate_confirm_delete:"Dit stuurprogramma wordt permanent verwijderd",created_message:"Provider succesvol aangemaakt",updated_message:"Provider succesvol bijgewerkt",deleted_message:"Provider succesvol verwijderd",error:" U kunt de actieve stuurprogramma niet verwijderen",default_currency_error:"Deze valuta wordt al gebruikt in een van de Actieve Provider",exchange_help_text:"Voer de wisselkoers in om te converteren van {currency} naar {baseCurrency}",currency_freak:"Valuta Freak",currency_layer:"Valuta-laag",open_exchange_rate:"Open Exchange Rate",currency_converter:"Valuta omzetter",server:"Server",url:"URL",active:"Actief",currency_help_text:"This provider will only be used on above selected currencies",currency_in_used:"The following currencies are already active on another provider. Please remove these currencies from selection to activate this provider again."},tax_types:{title:"Belastingtypen",add_tax:"Belasting toevoegen",edit_tax:"Belasting bewerken",description:"U kunt naar believen belastingen toevoegen of verwijderen. InvoiceShelf ondersteunt belastingen op individuele items en op de factuur.",add_new_tax:"Nieuwe belasting toevoegen",tax_settings:"Belastinginstellingen",tax_per_item:"Belasting per item",tax_name:"Belastingnaam",compound_tax:"Samengestelde belasting",percent:"Procent",action:"Actie",tax_setting_description:"Schakel dit in als u belastingen wilt toevoegen aan afzonderlijke factuuritems. Standaard worden belastingen rechtstreeks aan de factuur toegevoegd.",created_message:"Belastingtype is gemaakt",updated_message:"Belastingtype succesvol bijgewerkt",deleted_message:"Belastingtype succesvol verwijderd",confirm_delete:"Dit belastingtype wordt permanent verwijderd",already_in_use:"Belasting al in gebruik"},payment_modes:{title:"Betaalmethodes",description:"Modes of transaction for payments",add_payment_mode:"Add Payment Mode",edit_payment_mode:"Edit Payment Mode",mode_name:"Mode Name",payment_mode_added:"Betaalwijze toegevoegd",payment_mode_updated:"Payment Mode Updated",payment_mode_confirm_delete:"You will not be able to recover this Payment Mode",payments_attached:"This payment method is already attached to payments. Please delete the attached payments to proceed with deletion.",expenses_attached:"This payment method is already attached to expenses. Please delete the attached expenses to proceed with deletion.",deleted_message:"Payment Mode deleted successfully"},expense_category:{title:"Onkostencategorieën",action:"Actie",description:"Categorieën zijn vereist voor het toevoegen van onkostenposten. U kunt deze categorieën naar wens toevoegen of verwijderen.",add_new_category:"Voeg een nieuwe categorie toe",add_category:"categorie toevoegen",edit_category:"Categorie bewerken",category_name:"categorie naam",category_description:"Omschrijving",created_message:"Onkostencategorie succesvol aangemaakt",deleted_message:"Uitgavencategorie is verwijderd",updated_message:"Uitgavencategorie is bijgewerkt",confirm_delete:"U kunt deze uitgavencategorie niet herstellen",already_in_use:"Categorie al in gebruik"},preferences:{currency:"Valuta",default_language:"Standaard taal",time_zone:"Tijdzone",fiscal_year:"Financieel jaar",date_format:"Datumnotatie",discount_setting:"Kortingsinstelling",discount_per_item:"Korting per item",discount_setting_description:"Schakel dit in als u korting wilt toevoegen aan afzonderlijke factuuritems. Standaard wordt korting rechtstreeks aan de factuur toegevoegd.",expire_public_links:"Automatically Expire Public Links",expire_setting_description:"Specify whether you would like to expire all the links sent by application to view invoices, estimates & payments, etc after a specified duration.",save:"Opslaan",preference:"Voorkeur | Voorkeuren",general_settings:"Standaardvoorkeuren voor het systeem.",updated_message:"Voorkeuren succesvol bijgewerkt",select_language:"Selecteer taal",select_time_zone:"Selecteer Tijdzone",select_date_format:"Selecteer datum/tijdindeling",select_financial_year:"Selecteer financieel ja",recurring_invoice_status:"Recurring Invoice Status",create_status:"Create Status",active:"Active",on_hold:"In wacht",update_status:"Updatestatus",completed:"Voltooid",company_currency_unchangeable:"Bedrijfsvaluta kan niet worden gewijzigd"},update_app:{title:"App bijwerken",description:"U kunt InvoiceShelf eenvoudig bijwerken door te controleren op een nieuwe update door op de onderstaande knop te klikken",check_update:"Controleer op updates",avail_update:"Nieuwe update beschikbaar",next_version:"Volgende versie",requirements:"Vereisten",update:"Nu updaten",update_progress:"Update wordt uitgevoerd...",progress_text:"Het duurt maar een paar minuten. Vernieuw het scherm niet en sluit het venster niet voordat de update is voltooid",update_success:"App is bijgewerkt! Een ogenblik geduld, uw browservenster wordt automatisch opnieuw geladen.",latest_message:"Geen update beschikbaar! U gebruikt de nieuwste versie.",current_version:"Huidige versie",download_zip_file:"Download ZIP-bestand",unzipping_package:"Pakket uitpakken",copying_files:"Bestanden kopiëren",deleting_files:"Ongebruikte bestanden verwijderen",running_migrations:"Migraties uitvoeren",finishing_update:"Afwerking Update",update_failed:"Update mislukt",update_failed_text:"Sorry! Je update is mislukt op: {step} step ",update_warning:"All of the application files and default template files will be overwritten when you update the application using this utility. Please take a backup of your templates & database before updating."},backup:{title:"Backup | Backups",description:"De back-up is een zipfile met alle bestanden in de mappen die je opgeeft samen met een dump van je database",new_backup:"Nieuwe back-up",create_backup:"Backup maken",select_backup_type:"Backup-type selecteren",backup_confirm_delete:"U kunt deze back-up niet terughalen",path:"pad",new_disk:"Nieuwe schijf",created_at:"aangemaakt op",size:"grootte",dropbox:"dropbox",local:"lokaal",healthy:"gezond",amount_of_backups:"aantal back-ups",newest_backups:"nieuwste back-ups",used_storage:"gebruikte opslag",select_disk:"Selecteer Disk",action:"Actie",deleted_message:"Back-up is succesvol verwijderd",created_message:"Back-up successvol gemaakt",invalid_disk_credentials:"Ongeldige inloggegevens voor geselecteerde schijf"},disk:{title:"Bestandsschijf | Bestandsschijven",description:"Standaard gebruikt InvoiceShelf uw lokale schijf om back-ups, avatars en andere afbeeldingen op te slaan. U kunt indien gewenst meer dan één opslaglocatie configureren zoals DigitalOcean, S3 en Dropbox.",created_at:"aangemaakt op",dropbox:"dropbox",name:"Naam",driver:"Stuurprogramma",disk_type:"Type",disk_name:"Naam van de schijf",new_disk:"Nieuwe schijf toevoegen",filesystem_driver:"Bestandssysteem locatie",local_driver:"lokaal besturingsprogramma",local_root:"locale schijf",public_driver:"Publiek besturingsprogramma",public_root:"Openbare schijf",public_url:"Publieke URL",public_visibility:"Publieke zichtbaarheid",media_driver:"Media stuurprogramma",media_root:"Media schijf",aws_driver:"AWS Stuurprogramma",aws_key:"AWS Sleutel",aws_secret:"AWS-geheim",aws_region:"AWS Regio",aws_bucket:"AWS Bucket",aws_root:"AWS Root",do_spaces_type:"Do Spaces type",do_spaces_key:"Do Spaces Key",do_spaces_secret:"Do Spaces Secret",do_spaces_region:"Do Spaces Regio",do_spaces_bucket:"Do Spaces Bucket",do_spaces_endpoint:"Do Spaces Endpoint",do_spaces_root:"Do Spaces hoofdmap",dropbox_type:"Dropbox Type",dropbox_token:"Dropbox Token",dropbox_key:"Dropbox Sleutel",dropbox_secret:"Dropbox Geheim",dropbox_app:"Dropbox App",dropbox_root:"Dropbox Hoofdmap",default_driver:"Standaard stuurprogramma",is_default:"IS STANDAARD",set_default_disk:"Standaardschijf instellen",set_default_disk_confirm:"Deze schijf zal als standaard worden ingesteld en alle nieuwe PDF's worden opgeslagen op deze schijf",success_set_default_disk:"Standaardschijf ingesteld",save_pdf_to_disk:"PDF's opslaan op schijf",disk_setting_description:" Schakel dit in als je een kopie van elke factuur, raming en betalingsbewijs automatisch op je standaard schijf wilt opslaan. Het inschakelen van deze optie zal de laadtijd verminderen wanneer de PDF's worden bekeken.",select_disk:"Selecteer Schijf",disk_settings:"Schijfinstellingen",confirm_delete:"Uw bestaande bestanden en mappen in de opgegeven schijf worden niet beïnvloed, maar uw schijfconfiguratie wordt uit InvoiceShelf verwijderd",action:"Actie",edit_file_disk:"Bestandsschijf bewerken",success_create:"Schijf toegevoegd",success_update:"Schijf bijgewerkt",error:"Schijf niet toegevoegd",deleted_message:"Bestandsschijf verwijderd",disk_variables_save_successfully:"Schijf geconfigureerd",disk_variables_save_error:"Schijfconfiguratie mislukt.",invalid_disk_credentials:"Ongeldige inloggegevens voor geselecteerde schijf"},taxations:{add_billing_address:"Vul factuuradres in",add_shipping_address:"Vul bezorgadres in",add_company_address:"Vul bedrijfsadres in",modal_description:"De onderstaande informatie is vereist om de verkoopbelasting op te halen.",add_address:"Voeg adres toe voor het ophalen van verkoopbelasting.",address_placeholder:"Voorbeeld: 123, Mijn Straat",city_placeholder:"Voorbeeld: Amsterdam",state_placeholder:"Voorbeeld: Noord-Holland",zip_placeholder:"Voorbeeld: 1234 AB",invalid_address:"Vul een geldig adres in a.u.b."}},RJ={account_info:"Account Informatie",account_info_desc:"Onderstaande gegevens worden gebruikt om het hoofdbeheerdersaccount te maken. Ook kunt u de gegevens op elk moment wijzigen na inloggen.",name:"Naam",email:"E-mail",password:"Wachtwoord",confirm_password:"bevestig wachtwoord",save_cont:"Opslaan doorgaan",company_info:"Bedrijfsinformatie",company_info_desc:"Deze informatie wordt weergegeven op facturen. Merk op dat u dit later op de instellingenpagina kunt bewerken.",company_name:"Bedrijfsnaam",company_logo:"Bedrijfslogo",logo_preview:"Logo Voorbeeld",preferences:"Voorkeuren",preferences_desc:"Standaardvoorkeuren voor het systeem.",currency_set_alert:"De valuta van het bedrijf kan later niet worden gewijzigd.",country:"Land",state:"Provincie",city:"Stad",address:"Adres",street:"Straat1 | Straat # 2",phone:"Telefoon",zip_code:"Postcode",go_back:"Ga terug",currency:"Valuta",language:"Taal",time_zone:"Tijdzone",fiscal_year:"Financieel jaar",date_format:"Datumnotatie",from_address:"Van adres",username:"Gebruikersnaam",next:"De volgende",continue:"Doorgaan met",skip:"Overslaan",database:{database:"Site-URL en database",connection:"Database verbinding",host:"Database host",port:"Databasepoort",password:"Database wachtwoord",app_url:"App-URL",app_domain:"App Domein",username:"Database gebruikersnaam",db_name:"Database naam",db_path:"Databankpad",desc:"Maak een database op uw server en stel de referenties in via het onderstaande formulier."},permissions:{permissions:"Rechten",permission_confirm_title:"Weet je zeker dat je door wilt gaan?",permission_confirm_desc:"Controle van maprechten is mislukt",permission_desc:"Hieronder vindt u de lijst met mapmachtigingen die vereist zijn om de app te laten werken. Als de machtigingscontrole mislukt, moet u de mapmachtigingen bijwerken."},verify_domain:{title:"Menselijke Verificatie",desc:"InvoiceShelf maakt gebruik van sessie gebaseerde authenticatie die domeinverificatie vereist voor veiligheidsdoeleinden. Voer het domein in waarop u toegang zult krijgen tot uw webapplicatie.",app_domain:"App Domein",verify_now:"Nu verifiëren",success:"E-mailadres succesvol geverifieerd.",failed:"Domeinverificatie is mislukt. Voer een geldige domeinnaam in.",verify_and_continue:"Verifiëren en doorgaan"},mail:{host:"E-mail server",port:"E-mail Poort",driver:"Mail-stuurprogramma",secret:"Geheim",mailgun_secret:"Mailgun geheim",mailgun_domain:"Domein",mailgun_endpoint:"Mailgun-eindpunt",ses_secret:"SES geheim",ses_key:"SES-sleutel",password:"Mail wachtwoord",username:"Mail gebruikersnaam",mail_config:"E-mailconfiguratie",from_name:"Van Mail Name",from_mail:"Van e-mailadres",encryption:"E-mailversleuteling",mail_config_desc:"Hieronder vindt u het formulier voor het configureren van het e-mailstuurprogramma voor het verzenden van e-mails vanuit de app. U kunt ook externe providers zoals Sendgrid, SES enz. Configureren."},req:{system_req:"systeem vereisten",php_req_version:"PHP (versie {versie} vereist))",check_req:"Controleer vereisten",system_req_desc:"InvoiceShelf heeft een paar serververeisten. Zorg ervoor dat uw server de vereiste php-versie heeft en alle onderstaande extensies."},errors:{migrate_failed:"Migreren mislukt",database_variables_save_error:"Kan configuratie niet schrijven naar .env-bestand. Controleer de bestandsrechten",mail_variables_save_error:"E-mailconfiguratie is mislukt.",connection_failed:"Databaseverbinding mislukt",database_should_be_empty:"Database moet leeg zijn"},success:{mail_variables_save_successfully:"E-mail succesvol geconfigureerd",database_variables_save_successfully:"Database succesvol geconfigureerd."}},OJ={invalid_phone:"Ongeldig Telefoonnummer",invalid_url:"Ongeldige URL (bijvoorbeeld: http://www.invoiceshelf.com))",invalid_domain_url:"Ongeldige URL (bijvoorbeeld: invoiceshelf.com))",required:"Veld is verplicht",email_incorrect:"Incorrecte Email.",email_already_taken:"De email is al in gebruik.",email_does_not_exist:"Gebruiker met opgegeven e-mailadres bestaat niet",item_unit_already_taken:"De naam van dit item is al in gebruik",payment_mode_already_taken:"Deze naam voor de betalingsmodus is al in gebruik",send_reset_link:"Stuur resetlink",not_yet:"Nog niet? Stuur het opnieuw",password_min_length:"Wachtwoord moet {count} tekens bevatten",name_min_length:"Naam moet minimaal {count} letters bevatten.",prefix_min_length:"Voorvoegsel moet minstens {count} letters bevatten.",enter_valid_tax_rate:"Voer een geldig belastingtarief in",numbers_only:"Alleen nummers.",characters_only:"Alleen tekens.",password_incorrect:"Wachtwoorden moeten identiek zijn",password_length:"Wachtwoord moet {count} tekens lang zijn.",qty_must_greater_than_zero:"Hoeveelheid moet groter zijn dan nul.",price_greater_than_zero:"Prijs moet groter zijn dan nul.",payment_greater_than_zero:"De betaling moet hoger zijn dan nul.",payment_greater_than_due_amount:"Ingevoerde betaling is meer dan het openstaande bedrag van deze factuur.",quantity_maxlength:"Het aantal mag niet groter zijn dan 20 cijfers.",price_maxlength:"Prijs mag niet groter zijn dan 20 cijfers.",price_minvalue:"Prijs moet hoger zijn dan 0.",amount_maxlength:"Bedrag mag niet groter zijn dan 20 cijfers.",amount_minvalue:"Bedrag moet groter zijn dan 0.",discount_maxlength:"Korting mag niet meer zijn dan maximale korting",description_maxlength:"De beschrijving mag niet meer dan 255 tekens bevatten.",subject_maxlength:"Het onderwerp mag niet meer dan 100 tekens bevatten.",message_maxlength:"Bericht mag niet groter zijn dan 255 tekens.",maximum_options_error:"Maximaal {max} opties geselecteerd. Verwijder eerst een geselecteerde optie om een andere te selecteren.",notes_maxlength:"Notities mogen niet langer zijn dan 255 tekens.",address_maxlength:"Adres mag niet groter zijn dan 255 tekens.",ref_number_maxlength:"Ref-nummer mag niet groter zijn dan 255 tekens.",prefix_maxlength:"Het voorvoegsel mag niet meer dan 5 tekens bevatten.",something_went_wrong:"Er is iets fout gegaan",number_length_minvalue:"Het getal moet groter zijn dan 0",at_least_one_ability:"Selecteer minstens één machtiging.",valid_driver_key:"Voer een geldige {driver} sleutel in.",valid_exchange_rate:"Voer a.u.b. een geldige wisselkoers in.",company_name_not_same:"Bedrijfsnaam moet overeenkomen met de opgegeven naam."},$J={starter_plan:"Deze functie is beschikbaar vanaf het Starter abonnement!",invalid_provider_key:"Voer een geldige API-sleutel in.",estimate_number_used:"Dit offertenummer is reeds in gebruik.",invoice_number_used:"Dit factuurnummer is reeds in gebruik.",payment_attached:"Deze factuur heeft al een betaling gekoppeld. Zorg ervoor dat u de bijgevoegde betalingen eerst verwijdert om door te gaan met de verwijdering.",payment_number_used:"Dit factuurnummer is reeds in gebruik.",name_already_taken:"Deze naam is reeds in gebruik.",receipt_does_not_exist:"Kwitantie bestaat niet.",customer_cannot_be_changed_after_payment_is_added:"Klant kan niet worden gewijzigd nadat een betaling is toegevoegd",invalid_credentials:"Inloggegevens ongeldig.",not_allowed:"Niet toegestaan",login_invalid_credentials:"Deze gegevens zijn niet correct.",enter_valid_cron_format:"Voer een geldig cron-formaat in",email_could_not_be_sent:"E-mail kon niet naar dit e-mailadres worden verzonden.",invalid_address:"Vul een geldig adres in.",invalid_key:"Vul een geldige sleutel in.",invalid_state:"Vul een geldige provincie in.",invalid_city:"Vul een geldige woonplaats in.",invalid_postal_code:"Vul een geldige postcode in.",invalid_format:"Vul een geldig query-string-formaat in.",api_error:"Server reageert niet.",feature_not_enabled:"Functie niet ingeschakeld.",request_limit_met:"API-verzoeklimiet overschreden.",address_incomplete:"Onvolledig adres"},LJ="Offerte",BJ="Offerte nummer",UJ="Offerte Datum",VJ="Vervaldatum",qJ="Factuur",HJ="Factuurnummer",WJ="Factuur datum",KJ="Vervaldatum",YJ="Opmerkingen",ZJ="Artikelen",GJ="Aantal stuks",QJ="Prijs",JJ="Korting",XJ="Bedrag",eX="Subtotaal",tX="Totaal",aX="Betaling",nX="Betalingsafschrift",iX="Betalingsdatum",oX="Betalingsnummer",rX="Betaalmethode",sX="Ontvangen bedrag",lX="UITGAVEN RAPPORT",cX="TOTALE UITGAVEN",dX="WINST & VERLIES RAPPORT",uX="Klant verkoop rapport",_X="Artikel verkooprapport",mX="Belastingoverzicht",pX="INKOMEN",fX="NETTO WINST",hX="Verkooprapport: per klant",gX="TOTALE VERKOPEN",vX="Verkooprapport: Per Item",yX="BELASTINGEN RAPPORT",bX="TOTALE BELASTINGEN",kX="Belastingtypen",wX="Uitgaven",xX="Rekening naar,",DX="Verzend naar,",SX="Ontvangen van:",zX="Btw",PX={navigation:vJ,general:yJ,dashboard:bJ,tax_types:kJ,global_search:wJ,company_switcher:xJ,dateRange:DJ,customers:SJ,items:zJ,estimates:PJ,invoices:EJ,recurring_invoices:AJ,payments:CJ,expenses:jJ,login:TJ,modules:IJ,users:NJ,reports:FJ,settings:MJ,wizard:RJ,validation:OJ,errors:$J,pdf_estimate_label:LJ,pdf_estimate_number:BJ,pdf_estimate_date:UJ,pdf_estimate_expire_date:VJ,pdf_invoice_label:qJ,pdf_invoice_number:HJ,pdf_invoice_date:WJ,pdf_invoice_due_date:KJ,pdf_notes:YJ,pdf_items_label:ZJ,pdf_quantity_label:GJ,pdf_price_label:QJ,pdf_discount_label:JJ,pdf_amount_label:XJ,pdf_subtotal:eX,pdf_total:tX,pdf_payment_label:aX,pdf_payment_receipt_label:nX,pdf_payment_date:iX,pdf_payment_number:oX,pdf_payment_mode:rX,pdf_payment_amount_received_label:sX,pdf_expense_report_label:lX,pdf_total_expenses_label:cX,pdf_profit_loss_label:dX,pdf_sales_customers_label:uX,pdf_sales_items_label:_X,pdf_tax_summery_label:mX,pdf_income_label:pX,pdf_net_profit_label:fX,pdf_customer_sales_report:hX,pdf_total_sales_label:gX,pdf_item_sales_label:vX,pdf_tax_report_label:yX,pdf_total_tax_label:bX,pdf_tax_types_label:kX,pdf_expenses_label:wX,pdf_bill_to:xX,pdf_ship_to:DX,pdf_received_from:SX,pdf_tax_label:zX},EX={dashboard:"계기반",customers:"고객",items:"아이템",invoices:"송장",expenses:"경비",estimates:"견적",payments:"지불",reports:"보고서",settings:"설정",logout:"로그 아웃",users:"사용자"},AX={add_company:"회사 추가",view_pdf:"PDF보기",copy_pdf_url:"PDF URL 복사",download_pdf:"PDF 다운로드",save:"저장",create:"창조하다",cancel:"취소",update:"최신 정보",deselect:"선택 취소",download:"다운로드",from_date:"시작 날짜",to_date:"현재까지",from:"에서",to:"에",sort_by:"정렬 기준",ascending:"오름차순",descending:"내림차순",subject:"제목",body:"몸",message:"메시지",send:"보내다",go_back:"돌아 가기",back_to_login:"로그인으로 돌아가시겠습니까?",home:"집",filter:"필터",delete:"지우다",edit:"편집하다",view:"전망",add_new_item:"새 항목 추가",clear_all:"모두 지우기",showing:"전시",of:"의",actions:"행위",subtotal:"소계",discount:"할인",fixed:"결정된",percentage:"백분율",tax:"세",total_amount:"총액",bill_to:"청구 대상",ship_to:"배송지",due:"정당한",draft:"초안",sent:"보냄",all:"모두",select_all:"모두 선택",choose_file:"파일을 선택하려면 여기를 클릭하십시오",choose_template:"템플릿 선택",choose:"고르다",remove:"없애다",powered_by:"제공",bytefury:"바이트 퓨리",select_a_status:"상태 선택",select_a_tax:"세금 선택",search:"검색",are_you_sure:"확실합니까?",list_is_empty:"목록이 비어 있습니다.",no_tax_found:"세금이 없습니다!",four_zero_four:"404",you_got_lost:"이런! 당신은 길을 잃었습니다!",go_home:"집에가",test_mail_conf:"메일 구성 테스트",send_mail_successfully:"메일을 성공적으로 보냈습니다.",setting_updated:"설정이 성공적으로 업데이트되었습니다.",select_state:"주 선택",select_country:"국가 선택",select_city:"도시 선택",street_1:"거리 1",street_2:"거리 2",action_failed:"작업 실패",retry:"다시 해 보다",choose_note:"참고 선택",no_note_found:"메모를 찾을 수 없습니다.",insert_note:"메모 삽입",copied_pdf_url_clipboard:"PDF URL을 클립 보드에 복사했습니다!"},CX={select_year:"연도 선택",cards:{due_amount:"지불액",customers:"고객",invoices:"송장",estimates:"견적"},chart_info:{total_sales:"매상",total_receipts:"영수증",total_expense:"경비",net_income:"순이익",year:"연도 선택"},monthly_chart:{title:"매상"},recent_invoices_card:{title:"만기 송장",due_on:"기한",customer:"고객",amount_due:"지불액",actions:"행위",view_all:"모두보기"},recent_estimate_card:{title:"최근 견적",date:"데이트",customer:"고객",amount_due:"지불액",actions:"행위",view_all:"모두보기"}},jX={name:"이름",description:"기술",percent:"퍼센트",compound_tax:"복합 세"},TX={search:"검색...",customers:"고객",users:"사용자",no_results_found:"검색 결과가 없습니다"},IX={title:"고객",add_customer:"고객 추가",contacts_list:"고객 목록",name:"이름",mail:"메일 | 메일",statement:"성명서",display_name:"이름 표시하기",primary_contact_name:"기본 연락처 이름",contact_name:"담당자 이름",amount_due:"지불액",email:"이메일",address:"주소",phone:"전화",website:"웹 사이트",overview:"개요",enable_portal:"포털 활성화",country:"국가",state:"상태",city:"시티",zip_code:"우편 번호",added_on:"추가됨",action:"동작",password:"암호",street_number:"번지",primary_currency:"기본 통화",description:"기술",add_new_customer:"신규 고객 추가",save_customer:"고객 저장",update_customer:"고객 업데이트",customer:"고객 | 고객",new_customer:"신규 고객",edit_customer:"고객 편집",basic_info:"기본 정보",billing_address:"청구 지 주소",shipping_address:"배송 주소",copy_billing_address:"결제에서 복사",no_customers:"아직 고객이 없습니다!",no_customers_found:"고객이 없습니다!",no_contact:"연락처 없음",no_contact_name:"연락처 이름이 없습니다.",list_of_customers:"이 섹션에는 고객 목록이 포함됩니다.",primary_display_name:"기본 표시 이름",select_currency:"통화 선택",select_a_customer:"고객 선택",type_or_click:"입력하거나 클릭하여 선택",new_transaction:"새로운 거래",no_matching_customers:"일치하는 고객이 없습니다!",phone_number:"전화 번호",create_date:"날짜 생성",confirm_delete:"이 고객과 모든 관련 송장, 견적 및 지불을 복구 할 수 없습니다. | 이러한 고객 및 모든 관련 청구서, 견적 및 지불을 복구 할 수 없습니다.",created_message:"고객이 성공적으로 생성되었습니다.",updated_message:"고객이 성공적으로 업데이트했습니다.",deleted_message:"고객이 성공적으로 삭제되었습니다. | 고객이 성공적으로 삭제되었습니다."},NX={title:"아이템",items_list:"품목 목록",name:"이름",unit:"단위",description:"기술",added_on:"추가됨",price:"가격",date_of_creation:"생성 일",not_selected:"선택한 항목이 없습니다.",action:"동작",add_item:"아이템 추가",save_item:"항목 저장",update_item:"항목 업데이트",item:"항목 | 아이템",add_new_item:"새 항목 추가",new_item:"새로운 물품",edit_item:"항목 편집",no_items:"아직 항목이 없습니다!",list_of_items:"이 섹션에는 항목 목록이 포함됩니다.",select_a_unit:"단위 선택",taxes:"구실",item_attached_message:"이미 사용중인 항목은 삭제할 수 없습니다.",confirm_delete:"이 항목을 복구 할 수 없습니다. | 이 항목을 복구 할 수 없습니다.",created_message:"항목이 성공적으로 생성되었습니다.",updated_message:"항목이 성공적으로 업데이트되었습니다.",deleted_message:"항목이 성공적으로 삭제되었습니다. | 항목이 성공적으로 삭제되었습니다."},FX={title:"견적",estimate:"견적 | 견적",estimates_list:"견적 목록",days:"{days} 일",months:"{months} 개월",years:"{years} 년",all:"모두",paid:"유료",unpaid:"미지급",customer:"고객",ref_no:"참조 번호.",number:"번호",amount_due:"지불액",partially_paid:"부분 지불",total:"합계",discount:"할인",sub_total:"소계",estimate_number:"견적 번호",ref_number:"참조 번호",contact:"접촉",add_item:"항목 추가",date:"데이트",due_date:"마감일",expiry_date:"만료일",status:"상태",add_tax:"세금 추가",amount:"양",action:"동작",notes:"노트",tax:"세",estimate_template:"주형",convert_to_invoice:"송장으로 변환",mark_as_sent:"보낸 것으로 표시",send_estimate:"견적 보내기",resend_estimate:"견적 재전송",record_payment:"기록 지불",add_estimate:"견적 추가",save_estimate:"견적 저장",confirm_conversion:"이 견적은 새 인보이스를 만드는 데 사용됩니다.",conversion_message:"인보이스가 성공적으로 생성되었습니다.",confirm_send_estimate:"이 견적은 이메일을 통해 고객에게 전송됩니다.",confirm_mark_as_sent:"이 견적은 전송 된 것으로 표시됩니다.",confirm_mark_as_accepted:"이 견적은 수락 됨으로 표시됩니다.",confirm_mark_as_rejected:"이 견적은 거부 됨으로 표시됩니다.",no_matching_estimates:"일치하는 견적이 없습니다!",mark_as_sent_successfully:"성공적으로 전송 된 것으로 표시된 견적",send_estimate_successfully:"견적이 성공적으로 전송되었습니다.",errors:{required:"필드는 필수입니다"},accepted:"수락 됨",rejected:"거부 됨",sent:"보냄",draft:"초안",declined:"거부 됨",new_estimate:"새로운 견적",add_new_estimate:"새로운 견적 추가",update_Estimate:"견적 업데이트",edit_estimate:"견적 수정",items:"항목",Estimate:"견적 | 견적",add_new_tax:"새 세금 추가",no_estimates:"아직 견적이 없습니다!",list_of_estimates:"이 섹션에는 견적 목록이 포함됩니다.",mark_as_rejected:"거부 됨으로 표시",mark_as_accepted:"수락 됨으로 표시",marked_as_accepted_message:"수락 된 것으로 표시된 견적",marked_as_rejected_message:"거부 된 것으로 표시된 견적",confirm_delete:"이 견적을 복구 할 수 없습니다. | 이 견적을 복구 할 수 없습니다.",created_message:"견적이 성공적으로 생성되었습니다.",updated_message:"견적이 성공적으로 업데이트되었습니다.",deleted_message:"예상치가 성공적으로 삭제되었습니다. | 견적이 성공적으로 삭제되었습니다.",something_went_wrong:"뭔가 잘못 됐어",item:{title:"항목 제목",description:"기술",quantity:"수량",price:"가격",discount:"할인",total:"합계",total_discount:"총 할인",sub_total:"소계",tax:"세",amount:"양",select_an_item:"항목을 입력하거나 클릭하여 선택",type_item_description:"유형 항목 설명 (선택 사항)"}},MX={title:"송장",invoices_list:"송장 목록",days:"{days} 일",months:"{months} 개월",years:"{years} 년",all:"모두",paid:"유료",unpaid:"미지급",viewed:"조회",overdue:"연체",completed:"완료",customer:"고객",paid_status:"지불 상태",ref_no:"참조 번호.",number:"번호",amount_due:"지불액",partially_paid:"부분 지불",total:"합계",discount:"할인",sub_total:"소계",invoice:"송장 | 송장",invoice_number:"송장 번호",ref_number:"참조 번호",contact:"접촉",add_item:"항목 추가",date:"데이트",due_date:"마감일",status:"상태",add_tax:"세금 추가",amount:"양",action:"동작",notes:"노트",view:"전망",send_invoice:"송장을 보내다",resend_invoice:"인보이스 재전송",invoice_template:"송장 템플릿",template:"주형",mark_as_sent:"보낸 것으로 표시",confirm_send_invoice:"이 인보이스는 이메일을 통해 고객에게 발송됩니다.",invoice_mark_as_sent:"이 인보이스는 보낸 것으로 표시됩니다.",confirm_send:"이 인보이스는 이메일을 통해 고객에게 발송됩니다.",invoice_date:"송장 날짜",record_payment:"기록 지불",add_new_invoice:"새 송장 추가",update_expense:"비용 업데이트",edit_invoice:"송장 편집",new_invoice:"새 송장",save_invoice:"송장 저장",update_invoice:"송장 업데이트",add_new_tax:"새 세금 추가",no_invoices:"아직 인보이스가 없습니다!",list_of_invoices:"이 섹션에는 송장 목록이 포함됩니다.",select_invoice:"송장 선택",no_matching_invoices:"일치하는 송장이 없습니다!",mark_as_sent_successfully:"성공적으로 발송 된 것으로 표시된 송장",invoice_sent_successfully:"인보이스가 성공적으로 전송되었습니다.",cloned_successfully:"송장이 성공적으로 복제되었습니다.",clone_invoice:"송장 복제",confirm_clone:"이 송장은 새 송장에 복제됩니다.",item:{title:"항목 제목",description:"기술",quantity:"수량",price:"가격",discount:"할인",total:"합계",total_discount:"총 할인",sub_total:"소계",tax:"세",amount:"양",select_an_item:"항목을 입력하거나 클릭하여 선택",type_item_description:"유형 항목 설명 (선택 사항)"},confirm_delete:"이 인보이스를 복구 할 수 없습니다. | 이러한 인보이스를 복구 할 수 없습니다.",created_message:"송장이 성공적으로 생성되었습니다.",updated_message:"송장이 성공적으로 업데이트되었습니다.",deleted_message:"송장이 성공적으로 삭제되었습니다. | 인보이스가 성공적으로 삭제되었습니다.",marked_as_sent_message:"성공적으로 발송 된 것으로 표시된 송장",something_went_wrong:"뭔가 잘못 됐어",invalid_due_amount_message:"총 송장 금액은이 송장에 대한 총 지불 금액보다 작을 수 없습니다. 계속하려면 인보이스를 업데이트하거나 관련 결제를 삭제하세요."},RX={title:"지불",payments_list:"지불 목록",record_payment:"기록 지불",customer:"고객",date:"데이트",amount:"양",action:"동작",payment_number:"결제 번호",payment_mode:"지불 모드",invoice:"송장",note:"노트",add_payment:"지불 추가",new_payment:"새로운 지불",edit_payment:"결제 수정",view_payment:"결제보기",add_new_payment:"새 지불 추가",send_payment_receipt:"결제 영수증 보내기",send_payment:"지불 보내기",save_payment:"지불 저장",update_payment:"결제 업데이트",payment:"지불 | 지불",no_payments:"아직 결제가 없습니다!",not_selected:"선택되지 않은",no_invoice:"송장 없음",no_matching_payments:"일치하는 지불이 없습니다!",list_of_payments:"이 섹션에는 지불 목록이 포함됩니다.",select_payment_mode:"결제 모드 선택",confirm_mark_as_sent:"이 견적은 전송 된 것으로 표시됩니다.",confirm_send_payment:"이 결제는 이메일을 통해 고객에게 전송됩니다.",send_payment_successfully:"지불이 성공적으로 전송되었습니다.",something_went_wrong:"뭔가 잘못 됐어",confirm_delete:"이 지불금을 복구 할 수 없습니다. | 이 지급금을 복구 할 수 없습니다.",created_message:"결제가 성공적으로 생성되었습니다.",updated_message:"결제가 성공적으로 업데이트되었습니다.",deleted_message:"결제가 성공적으로 삭제되었습니다. | 결제가 성공적으로 삭제되었습니다.",invalid_amount_message:"결제 금액이 잘못되었습니다."},OX={title:"경비",expenses_list:"비용 목록",select_a_customer:"고객 선택",expense_title:"표제",customer:"고객",contact:"접촉",category:"범주",from_date:"시작 날짜",to_date:"현재까지",expense_date:"데이트",description:"기술",receipt:"영수증",amount:"양",action:"동작",not_selected:"선택되지 않은",note:"노트",category_id:"카테고리 ID",date:"데이트",add_expense:"비용 추가",add_new_expense:"신규 비용 추가",save_expense:"비용 절감",update_expense:"비용 업데이트",download_receipt:"영수증 다운로드",edit_expense:"비용 편집",new_expense:"새로운 비용",expense:"비용 | 경비",no_expenses:"아직 비용이 없습니다!",list_of_expenses:"이 섹션에는 비용 목록이 포함됩니다.",confirm_delete:"이 비용을 회수 할 수 없습니다. | 이러한 비용은 회수 할 수 없습니다.",created_message:"비용이 성공적으로 생성되었습니다.",updated_message:"비용이 성공적으로 업데이트되었습니다.",deleted_message:"비용이 성공적으로 삭제되었습니다. | 비용이 성공적으로 삭제되었습니다.",categories:{categories_list:"카테고리 목록",title:"표제",name:"이름",description:"기술",amount:"양",actions:"행위",add_category:"카테고리 추가",new_category:"새 분류",category:"카테고리 | 카테고리",select_a_category:"카테고리 선택"}},$X={email:"이메일",password:"암호",forgot_password:"비밀번호를 잊으 셨나요?",or_signIn_with:"또는 다음으로 로그인",login:"로그인",register:"레지스터",reset_password:"암호를 재설정",password_reset_successfully:"비밀번호 재설정 성공",enter_email:"이메일 입력",enter_password:"암호를 입력",retype_password:"비밀번호 재 입력"},LX={title:"사용자",users_list:"사용자 목록",name:"이름",description:"기술",added_on:"추가됨",date_of_creation:"생성 일",action:"동작",add_user:"사용자 추가",save_user:"사용자 저장",update_user:"사용자 업데이트",user:"사용자 | 사용자",add_new_user:"새 사용자 추가",new_user:"새로운 사용자",edit_user:"사용자 편집",no_users:"아직 사용자가 없습니다!",list_of_users:"이 섹션에는 사용자 목록이 포함됩니다.",email:"이메일",phone:"전화",password:"암호",user_attached_message:"이미 사용중인 항목은 삭제할 수 없습니다.",confirm_delete:"이 사용자를 복구 할 수 없습니다. | 이러한 사용자를 복구 할 수 없습니다.",created_message:"사용자가 성공적으로 생성되었습니다.",updated_message:"사용자가 성공적으로 업데이트되었습니다.",deleted_message:"사용자가 성공적으로 삭제되었습니다. | 사용자가 성공적으로 삭제되었습니다."},BX={title:"보고서",from_date:"시작 날짜",to_date:"현재까지",status:"상태",paid:"유료",unpaid:"미지급",download_pdf:"PDF 다운로드",view_pdf:"PDF보기",update_report:"보고서 업데이트",report:"신고 | 보고서",profit_loss:{profit_loss:"이익",to_date:"현재까지",from_date:"시작 날짜",date_range:"기간 선택"},sales:{sales:"매상",date_range:"기간 선택",to_date:"현재까지",from_date:"시작 날짜",report_type:"보고서 유형"},taxes:{taxes:"구실",to_date:"현재까지",from_date:"시작 날짜",date_range:"기간 선택"},errors:{required:"필드는 필수입니다"},invoices:{invoice:"송장",invoice_date:"송장 날짜",due_date:"마감일",amount:"양",contact_name:"담당자 이름",status:"상태"},estimates:{estimate:"견적",estimate_date:"예상 날짜",due_date:"마감일",estimate_number:"견적 번호",ref_number:"참조 번호",amount:"양",contact_name:"담당자 이름",status:"상태"},expenses:{expenses:"경비",category:"범주",date:"데이트",amount:"양",to_date:"현재까지",from_date:"시작 날짜",date_range:"기간 선택"}},UX={menu_title:{account_settings:"계정 설정",company_information:"회사 정보",customization:"커스터마이징",preferences:"환경 설정",notifications:"알림",tax_types:"세금 유형",expense_category:"비용 범주",update_app:"앱 업데이트",backup:"지원",file_disk:"파일 디스크",custom_fields:"사용자 정의 필드",payment_modes:"지불 모드",notes:"노트"},title:"설정",setting:"설정 | 설정",general:"일반",language:"언어",primary_currency:"기본 통화",timezone:"시간대",date_format:"날짜 형식",currencies:{title:"통화",currency:"통화 | 통화",currencies_list:"통화 목록",select_currency:"통화 선택",name:"이름",code:"암호",symbol:"상징",precision:"정도",thousand_separator:"천 구분자",decimal_separator:"소수점 구분 기호",position:"위치",position_of_symbol:"기호 위치",right:"권리",left:"왼쪽",action:"동작",add_currency:"통화 추가"},mail:{host:"메일 호스트",port:"메일 포트",driver:"메일 드라이버",secret:"비밀",mailgun_secret:"Mailgun 비밀",mailgun_domain:"도메인",mailgun_endpoint:"Mailgun 엔드 포인트",ses_secret:"SES 비밀",ses_key:"SES 키",password:"메일 비밀번호",username:"메일 사용자 이름",mail_config:"메일 구성",from_name:"메일 이름에서",from_mail:"메일 주소에서",encryption:"메일 암호화",mail_config_desc:"다음은 앱에서 이메일을 보내기위한 이메일 드라이버 구성 양식입니다. Sendgrid, SES 등과 같은 타사 공급자를 구성 할 수도 있습니다."},pdf:{title:"PDF 설정",footer_text:"바닥 글 텍스트",pdf_layout:"PDF 레이아웃"},company_info:{company_info:"회사 정보",company_name:"회사 이름",company_logo:"회사 로고",section_description:"InvoiceShelf에서 생성 한 송장, 견적 및 기타 문서에 표시 될 회사에 대한 정보.",phone:"전화",country:"국가",state:"상태",city:"시티",address:"주소",zip:"지퍼",save:"저장",updated_message:"회사 정보가 성공적으로 업데이트되었습니다."},custom_fields:{title:"사용자 정의 필드",section_description:"송장, 견적 사용자 지정",add_custom_field:"사용자 정의 필드 추가",edit_custom_field:"사용자 정의 필드 편집",field_name:"분야 명",label:"상표",type:"유형",name:"이름",required:"필수",placeholder:"자리 표시 자",help_text:"도움말 텍스트",default_value:"기본값",prefix:"접두사",starting_number:"시작 번호",model:"모델",help_text_description:"사용자가이 사용자 정의 필드의 목적을 이해하는 데 도움이되는 텍스트를 입력하십시오.",suffix:"접미사",yes:"예",no:"아니",order:"주문",custom_field_confirm_delete:"이 사용자 정의 필드를 복구 할 수 없습니다.",already_in_use:"맞춤 입력란이 이미 사용 중입니다.",deleted_message:"맞춤 입력란이 성공적으로 삭제되었습니다.",options:"옵션",add_option:"옵션 추가",add_another_option:"다른 옵션 추가",sort_in_alphabetical_order:"알파벳순으로 정렬",add_options_in_bulk:"일괄 옵션 추가",use_predefined_options:"미리 정의 된 옵션 사용",select_custom_date:"맞춤 날짜 선택",select_relative_date:"상대 날짜 선택",ticked_by_default:"기본적으로 선택됨",updated_message:"맞춤 입력란이 성공적으로 업데이트되었습니다.",added_message:"맞춤 입력란이 성공적으로 추가되었습니다."},customization:{customization:"맞춤화",save:"저장",addresses:{title:"구애",section_description:"고객 청구 주소 및 고객 배송 주소 형식을 설정할 수 있습니다 (PDF로만 표시됨).",customer_billing_address:"고객 청구 주소",customer_shipping_address:"고객 배송 주소",company_address:"회사 주소",insert_fields:"필드 삽입",contact:"접촉",address:"주소",display_name:"이름 표시하기",primary_contact_name:"기본 연락처 이름",email:"이메일",website:"웹 사이트",name:"이름",country:"국가",state:"상태",city:"시티",company_name:"회사 이름",address_street_1:"주소 거리 1",address_street_2:"주소 Street 2",phone:"전화",zip_code:"우편 번호",address_setting_updated:"주소 설정이 성공적으로 업데이트되었습니다."},updated_message:"회사 정보가 성공적으로 업데이트되었습니다.",invoices:{title:"송장",notes:"노트",invoice_prefix:"송장 접두사",default_invoice_email_body:"기본 송장 이메일 본문",invoice_settings:"송장 설정",autogenerate_invoice_number:"송장 번호 자동 생성",autogenerate_invoice_number_desc:"새 인보이스를 생성 할 때마다 인보이스 번호를 자동 생성하지 않으려면이 기능을 비활성화하십시오.",invoice_email_attachment:"송장을 첨부 파일로 보내기",invoice_email_attachment_setting_description:"인보이스를 이메일 첨부 파일로 보내려면이 옵션을 활성화하십시오. 이메일의 '인보이스보기'버튼이 활성화되면 더 이상 표시되지 않습니다.",enter_invoice_prefix:"송장 접두사 입력",terms_and_conditions:"이용 약관",company_address_format:"회사 주소 형식",shipping_address_format:"배송 주소 형식",billing_address_format:"청구 지 주소 형식",invoice_settings_updated:"인보이스 설정이 성공적으로 업데이트되었습니다."},estimates:{title:"견적",estimate_prefix:"접두사 추정",default_estimate_email_body:"기본 예상 이메일 본문",estimate_settings:"예상 설정",autogenerate_estimate_number:"견적 번호 자동 생성",estimate_setting_description:"새 견적을 생성 할 때마다 견적 번호를 자동 생성하지 않으려면이 기능을 비활성화하십시오.",estimate_email_attachment:"견적을 첨부 파일로 보내기",estimate_email_attachment_setting_description:"견적을 이메일 첨부 파일로 보내려면이 옵션을 활성화하십시오. 이메일의 '예상보기'버튼이 활성화되면 더 이상 표시되지 않습니다.",enter_estimate_prefix:"견적 접두사 입력",estimate_setting_updated:"예상 설정이 성공적으로 업데이트되었습니다.",company_address_format:"회사 주소 형식",billing_address_format:"청구 지 주소 형식",shipping_address_format:"배송 주소 형식"},payments:{title:"지불",description:"지불을위한 거래 방식",payment_prefix:"지불 접두사",default_payment_email_body:"기본 결제 이메일 본문",payment_settings:"결제 설정",autogenerate_payment_number:"결제 번호 자동 생성",payment_setting_description:"새 결제를 생성 할 때마다 결제 번호를 자동 생성하지 않으려면이 기능을 비활성화하십시오.",payment_email_attachment:"첨부 파일로 지불 보내기",payment_email_attachment_setting_description:"결제 영수증을 이메일 첨부 파일로 보내려면이 옵션을 활성화하십시오. 이메일의 '결제보기'버튼이 활성화되면 더 이상 표시되지 않습니다.",enter_payment_prefix:"지불 접두사 입력",payment_setting_updated:"결제 설정이 성공적으로 업데이트되었습니다.",payment_modes:"지불 모드",add_payment_mode:"결제 모드 추가",edit_payment_mode:"결제 모드 수정",mode_name:"모드 이름",payment_mode_added:"결제 모드 추가",payment_mode_updated:"결제 모드 업데이트",payment_mode_confirm_delete:"이 결제 모드를 복구 할 수 없습니다.",already_in_use:"결제 모드가 이미 사용 중입니다.",deleted_message:"결제 모드가 성공적으로 삭제되었습니다.",company_address_format:"회사 주소 형식",from_customer_address_format:"고객 주소 형식에서"},items:{title:"아이템",units:"단위",add_item_unit:"항목 단위 추가",edit_item_unit:"항목 단위 편집",unit_name:"단위 이름",item_unit_added:"항목 단위 추가됨",item_unit_updated:"항목 단위 업데이트 됨",item_unit_confirm_delete:"이 항목 단위를 복구 할 수 없습니다.",already_in_use:"항목 단위가 이미 사용 중입니다.",deleted_message:"항목 단위가 성공적으로 삭제되었습니다."},notes:{title:"노트",description:"메모를 작성하고 송장, 견적서에 재사용하여 시간 절약",notes:"노트",type:"유형",add_note:"메모를 추가",add_new_note:"새 메모 추가",name:"이름",edit_note:"메모 수정",note_added:"메모가 성공적으로 추가되었습니다.",note_updated:"참고 성공적으로 업데이트되었습니다.",note_confirm_delete:"이 메모를 복구 할 수 없습니다.",already_in_use:"메모가 이미 사용 중입니다.",deleted_message:"메모가 성공적으로 삭제되었습니다."}},account_settings:{profile_picture:"프로필 사진",name:"이름",email:"이메일",password:"암호",confirm_password:"비밀번호 확인",account_settings:"계정 설정",save:"저장",section_description:"이름, 이메일을 업데이트 할 수 있습니다.",updated_message:"계정 설정이 성공적으로 업데이트되었습니다."},user_profile:{name:"이름",email:"이메일",password:"암호",confirm_password:"비밀번호 확인"},notification:{title:"공고",email:"알림 보내기",description:"변경 사항이있을 때 어떤 이메일 알림을 받으시겠습니까?",invoice_viewed:"송장 조회",invoice_viewed_desc:"고객이 분화구 대시 보드를 통해 전송 된 송장을 볼 때.",estimate_viewed:"본 견적",estimate_viewed_desc:"고객이 분화구 대시 보드를 통해 전송 된 견적을 볼 때.",save:"저장",email_save_message:"이메일이 성공적으로 저장되었습니다.",please_enter_email:"이메일을 입력하십시오"},tax_types:{title:"세금 유형",add_tax:"세금 추가",edit_tax:"세금 수정",description:"원하는대로 세금을 추가하거나 제거 할 수 있습니다. InvoiceShelf는 송장뿐만 아니라 개별 품목에 대한 세금을 지원합니다.",add_new_tax:"새 세금 추가",tax_settings:"세금 설정",tax_per_item:"품목 당 세금",tax_name:"세금 이름",compound_tax:"복합 세",percent:"퍼센트",action:"동작",tax_setting_description:"개별 송장 항목에 세금을 추가하려면이 옵션을 활성화하십시오. 기본적으로 세금은 송장에 직접 추가됩니다.",created_message:"세금 유형이 성공적으로 생성되었습니다.",updated_message:"세금 유형이 성공적으로 업데이트되었습니다.",deleted_message:"세금 유형이 성공적으로 삭제되었습니다.",confirm_delete:"이 세금 유형을 복구 할 수 없습니다.",already_in_use:"세금이 이미 사용 중입니다."},expense_category:{title:"비용 범주",action:"동작",description:"비용 항목을 추가하려면 카테고리가 필요합니다. 기본 설정에 따라 이러한 범주를 추가하거나 제거 할 수 있습니다.",add_new_category:"새 카테고리 추가",add_category:"카테고리 추가",edit_category:"카테고리 수정",category_name:"카테고리 이름",category_description:"기술",created_message:"비용 범주가 성공적으로 생성되었습니다.",deleted_message:"비용 범주가 성공적으로 삭제되었습니다.",updated_message:"비용 범주가 성공적으로 업데이트되었습니다.",confirm_delete:"이 비용 범주를 복구 할 수 없습니다.",already_in_use:"카테고리가 이미 사용 중입니다."},preferences:{currency:"통화",default_language:"기본 언어",time_zone:"시간대",fiscal_year:"회계 연도",date_format:"날짜 형식",discount_setting:"할인 설정",discount_per_item:"품목별 할인",discount_setting_description:"개별 송장 항목에 할인을 추가하려면이 옵션을 활성화하십시오. 기본적으로 할인은 송장에 직접 추가됩니다.",save:"저장",preference:"선호도 | 환경 설정",general_settings:"시스템의 기본 기본 설정입니다.",updated_message:"환경 설정이 성공적으로 업데이트되었습니다.",select_language:"언어 선택",select_time_zone:"시간대 선택",select_date_format:"날짜 형식 선택",select_financial_year:"회계 연도 선택"},update_app:{title:"앱 업데이트",description:"아래 버튼을 클릭하여 새로운 업데이트를 확인하여 InvoiceShelf를 쉽게 업데이트 할 수 있습니다.",check_update:"업데이트 확인",avail_update:"새로운 업데이트 사용 가능",next_version:"다음 버전",requirements:"요구 사항",update:"지금 업데이트",update_progress:"업데이트 진행 중 ...",progress_text:"몇 분 정도 걸립니다. 업데이트가 완료되기 전에 화면을 새로 고치거나 창을 닫지 마십시오.",update_success:"앱이 업데이트되었습니다! 브라우저 창이 자동으로 다시로드되는 동안 잠시 기다려주십시오.",latest_message:"사용 가능한 업데이트가 없습니다! 최신 버전을 사용 중입니다.",current_version:"현재 버전",download_zip_file:"ZIP 파일 다운로드",unzipping_package:"패키지 압축 해제",copying_files:"파일 복사",deleting_files:"사용하지 않는 파일 삭제",running_migrations:"마이그레이션 실행",finishing_update:"업데이트 완료",update_failed:"업데이트가 실패",update_failed_text:"죄송합니다! 업데이트 실패 : {step} 단계"},backup:{title:"백업 | 백업",description:"백업은 데이터베이스 덤프와 함께 지정한 디렉토리의 모든 파일을 포함하는 zip 파일입니다.",new_backup:"새 백업 추가",create_backup:"백업 생성",select_backup_type:"백업 유형 선택",backup_confirm_delete:"이 백업을 복구 할 수 없습니다.",path:"통로",new_disk:"새 디스크",created_at:"에 생성",size:"크기",dropbox:"드롭 박스",local:"현지",healthy:"건강한",amount_of_backups:"백업 양",newest_backups:"최신 백업",used_storage:"중고 저장",select_disk:"디스크 선택",action:"동작",deleted_message:"백업이 성공적으로 삭제되었습니다.",created_message:"백업이 성공적으로 생성되었습니다.",invalid_disk_credentials:"선택한 디스크의 잘못된 자격 증명"},disk:{title:"파일 디스크 | 파일 디스크",description:"기본적으로 InvoiceShelf는 백업, 아바타 및 기타 이미지 파일을 저장하기 위해 로컬 디스크를 사용합니다. 선호도에 따라 DigitalOcean, S3 및 Dropbox와 같은 둘 이상의 디스크 드라이버를 구성 할 수 있습니다.",created_at:"에 생성",dropbox:"드롭 박스",name:"이름",driver:"운전사",disk_type:"유형",disk_name:"디스크 이름",new_disk:"새 디스크 추가",filesystem_driver:"파일 시스템 드라이버",local_driver:"로컬 드라이버",local_root:"로컬 루트",public_driver:"공공 운전자",public_root:"공개 루트",public_url:"공개 URL",public_visibility:"공개 가시성",media_driver:"미디어 드라이버",media_root:"미디어 루트",aws_driver:"AWS 드라이버",aws_key:"AWS 키",aws_secret:"AWS 비밀",aws_region:"AWS 리전",aws_bucket:"AWS 버킷",aws_root:"AWS 루트",do_spaces_type:"Do Spaces 유형",do_spaces_key:"Do Spaces 키",do_spaces_secret:"스페이스 시크릿",do_spaces_region:"Do Spaces 영역",do_spaces_bucket:"Do Spaces Bucket",do_spaces_endpoint:"Do Spaces 끝점",do_spaces_root:"공간 루트 수행",dropbox_type:"Dropbox 유형",dropbox_token:"Dropbox 토큰",dropbox_key:"Dropbox 키",dropbox_secret:"Dropbox 비밀",dropbox_app:"Dropbox 앱",dropbox_root:"Dropbox 루트",default_driver:"기본 드라이버",is_default:"기본값입니다.",set_default_disk:"기본 디스크 설정",set_default_disk_confirm:"이 디스크는 기본값으로 설정되며 모든 새 PDF가이 디스크에 저장됩니다.",success_set_default_disk:"디스크가 기본값으로 설정되었습니다.",save_pdf_to_disk:"PDF를 디스크에 저장",disk_setting_description:"각 송장의 사본을 저장하려면 이것을 활성화하십시오.",select_disk:"디스크 선택",disk_settings:"디스크 설정",confirm_delete:"기존 파일",action:"동작",edit_file_disk:"파일 디스크 편집",success_create:"디스크가 성공적으로 추가되었습니다.",success_update:"디스크가 성공적으로 업데이트되었습니다.",error:"디스크 추가 실패",deleted_message:"파일 디스크가 성공적으로 삭제되었습니다.",disk_variables_save_successfully:"디스크가 성공적으로 구성되었습니다.",disk_variables_save_error:"디스크 구성에 실패했습니다.",invalid_disk_credentials:"선택한 디스크의 잘못된 자격 증명"}},VX={account_info:"계정 정보",account_info_desc:"아래 세부 정보는 기본 관리자 계정을 만드는 데 사용됩니다. 또한 로그인 후 언제든지 세부 정보를 변경할 수 있습니다.",name:"이름",email:"이메일",password:"암호",confirm_password:"비밀번호 확인",save_cont:"저장",company_info:"회사 정보",company_info_desc:"이 정보는 송장에 표시됩니다. 나중에 설정 페이지에서 수정할 수 있습니다.",company_name:"회사 이름",company_logo:"회사 로고",logo_preview:"로고 미리보기",preferences:"환경 설정",preferences_desc:"시스템의 기본 기본 설정입니다.",country:"국가",state:"상태",city:"시티",address:"주소",street:"Street1 | Street2",phone:"전화",zip_code:"우편 번호",go_back:"돌아 가기",currency:"통화",language:"언어",time_zone:"시간대",fiscal_year:"회계 연도",date_format:"날짜 형식",from_address:"주소에서",username:"사용자 이름",next:"다음",continue:"계속하다",skip:"건너 뛰기",database:{database:"사이트 URL",connection:"데이터베이스 연결",host:"데이터베이스 호스트",port:"데이터베이스 포트",password:"데이터베이스 비밀번호",app_url:"앱 URL",app_domain:"앱 도메인",username:"데이터베이스 사용자 이름",db_name:"데이터베이스 이름",db_path:"데이터베이스 경로",desc:"서버에 데이터베이스를 만들고 아래 양식을 사용하여 자격 증명을 설정합니다."},permissions:{permissions:"권한",permission_confirm_title:"너 정말 계속하고 싶니?",permission_confirm_desc:"폴더 권한 확인 실패",permission_desc:"다음은 앱이 작동하는 데 필요한 폴더 권한 목록입니다. 권한 확인에 실패하면 폴더 권한을 업데이트하십시오."},mail:{host:"메일 호스트",port:"메일 포트",driver:"메일 드라이버",secret:"비밀",mailgun_secret:"Mailgun 비밀",mailgun_domain:"도메인",mailgun_endpoint:"Mailgun 엔드 포인트",ses_secret:"SES 비밀",ses_key:"SES 키",password:"메일 비밀번호",username:"메일 사용자 이름",mail_config:"메일 구성",from_name:"메일 이름에서",from_mail:"메일 주소에서",encryption:"메일 암호화",mail_config_desc:"다음은 앱에서 이메일을 보내기위한 이메일 드라이버 구성 양식입니다. Sendgrid, SES 등과 같은 타사 공급자를 구성 할 수도 있습니다."},req:{system_req:"시스템 요구 사항",php_req_version:"PHP (버전 {version} 필요)",check_req:"요구 사항 확인",system_req_desc:"크레이터에는 몇 가지 서버 요구 사항이 있습니다. 서버에 필요한 PHP 버전과 아래에 언급 된 모든 확장이 있는지 확인하십시오."},errors:{migrate_failed:"마이그레이션 실패",database_variables_save_error:".env 파일에 구성을 쓸 수 없습니다. 파일 권한을 확인하십시오",mail_variables_save_error:"이메일 구성에 실패했습니다.",connection_failed:"데이터베이스 연결 실패",database_should_be_empty:"데이터베이스는 비어 있어야합니다."},success:{mail_variables_save_successfully:"이메일이 성공적으로 구성되었습니다.",database_variables_save_successfully:"데이터베이스가 성공적으로 구성되었습니다."}},qX={invalid_phone:"유효하지 않은 전화 번호",invalid_url:"잘못된 URL (예 : http://www.invoiceshelf.com)",invalid_domain_url:"잘못된 URL (예 : invoiceshelf.com)",required:"필드는 필수입니다",email_incorrect:"잘못된 이메일.",email_already_taken:"이메일이 이미 사용되었습니다.",email_does_not_exist:"주어진 이메일을 가진 사용자가 존재하지 않습니다",item_unit_already_taken:"이 항목 단위 이름은 이미 사용되었습니다.",payment_mode_already_taken:"이 결제 모드 이름은 이미 사용되었습니다.",send_reset_link:"재설정 링크 보내기",not_yet:"아직? 다시 보내줘",password_min_length:"비밀번호는 {count}자를 포함해야합니다.",name_min_length:"이름은 {count} 자 이상이어야합니다.",enter_valid_tax_rate:"유효한 세율을 입력하세요.",numbers_only:"숫자 만.",characters_only:"문자 만.",password_incorrect:"비밀번호는 동일해야합니다.",password_length:"비밀번호는 {count} 자 여야합니다.",qty_must_greater_than_zero:"수량은 0보다 커야합니다.",price_greater_than_zero:"가격은 0보다 커야합니다.",payment_greater_than_zero:"결제 금액은 0보다 커야합니다.",payment_greater_than_due_amount:"입력 된 결제 금액이이 송장의 만기 금액을 초과합니다.",quantity_maxlength:"수량은 20 자리를 초과 할 수 없습니다.",price_maxlength:"가격은 20 자리를 초과 할 수 없습니다.",price_minvalue:"가격은 0보다 커야합니다.",amount_maxlength:"금액은 20 자리를 초과 할 수 없습니다.",amount_minvalue:"금액은 0보다 커야합니다.",description_maxlength:"설명은 65,000자를 초과 할 수 없습니다.",subject_maxlength:"제목은 100 자 이하 여야합니다.",message_maxlength:"메시지는 255자를 초과 할 수 없습니다.",maximum_options_error:"최대 {max} 개의 옵션이 선택되었습니다. 먼저 선택한 옵션을 제거하여 다른 옵션을 선택하십시오.",notes_maxlength:"메모는 65,000자를 초과 할 수 없습니다.",address_maxlength:"주소는 255자를 초과 할 수 없습니다.",ref_number_maxlength:"참조 번호는 255자를 초과 할 수 없습니다.",prefix_maxlength:"접두사는 5 자 이하 여야합니다.",something_went_wrong:"뭔가 잘못 됐어"},HX="견적",WX="견적 번호",KX="예상 날짜",YX="만료일",ZX="송장",GX="송장 번호",QX="송장 날짜",JX="마감일",XX="노트",eee="아이템",tee="수량",aee="가격",nee="할인",iee="양",oee="소계",ree="합계",see="지불",lee="영수증",cee="결제일",dee="결제 번호",uee="지불 모드",_ee="받은 금액",mee="비용 보고서",pee="총 비용",fee="이익",hee="판매 고객 보고서",gee="판매 품목 보고서",vee="세금 요약 보고서",yee="수입",bee="순이익",kee="판매 보고서 : 고객 별",wee="총 매출",xee="판매 보고서 : 품목별",Dee="세금 보고서",See="총 세금",zee="세금 유형",Pee="경비",Eee="청구서,",Aee="배송지,",Cee="받은 사람 :",jee="세",Tee={navigation:EX,general:AX,dashboard:CX,tax_types:jX,global_search:TX,customers:IX,items:NX,estimates:FX,invoices:MX,payments:RX,expenses:OX,login:$X,users:LX,reports:BX,settings:UX,wizard:VX,validation:qX,pdf_estimate_label:HX,pdf_estimate_number:WX,pdf_estimate_date:KX,pdf_estimate_expire_date:YX,pdf_invoice_label:ZX,pdf_invoice_number:GX,pdf_invoice_date:QX,pdf_invoice_due_date:JX,pdf_notes:XX,pdf_items_label:eee,pdf_quantity_label:tee,pdf_price_label:aee,pdf_discount_label:nee,pdf_amount_label:iee,pdf_subtotal:oee,pdf_total:ree,pdf_payment_label:see,pdf_payment_receipt_label:lee,pdf_payment_date:cee,pdf_payment_number:dee,pdf_payment_mode:uee,pdf_payment_amount_received_label:_ee,pdf_expense_report_label:mee,pdf_total_expenses_label:pee,pdf_profit_loss_label:fee,pdf_sales_customers_label:hee,pdf_sales_items_label:gee,pdf_tax_summery_label:vee,pdf_income_label:yee,pdf_net_profit_label:bee,pdf_customer_sales_report:kee,pdf_total_sales_label:wee,pdf_item_sales_label:xee,pdf_tax_report_label:Dee,pdf_total_tax_label:See,pdf_tax_types_label:zee,pdf_expenses_label:Pee,pdf_bill_to:Eee,pdf_ship_to:Aee,pdf_received_from:Cee,pdf_tax_label:jee},Iee={dashboard:"Informācijas panelis",customers:"Klienti",items:"Preces",invoices:"Rēķini","recurring-invoices":"Regulārie rēķini",expenses:"Izdevumi",estimates:"Aprēķini",payments:"Maksājumi",reports:"Atskaites",settings:"Iestatījumi",logout:"Iziet",users:"Lietotāji",modules:"Modules"},Nee={add_company:"Pievienot uzņēmumu",view_pdf:"Apskatīt PDF",copy_pdf_url:"Kopēt PDF saiti",download_pdf:"Lejupielādēt PDF",save:"Saglabāt",create:"Izveidot",cancel:"Atcelt",update:"Atjaunināt",deselect:"Atcelt iezīmēšanu",download:"Lejupielādēt",from_date:"Datums no",to_date:"Datums līdz",from:"No",to:"Kam",ok:"Labi",yes:"Jā",no:"Nē",sort_by:"Kārtot pēc",ascending:"Augošā secībā",descending:"Dilstošā secībā",subject:"Temats",body:"Saturs",message:"Ziņojums",send:"Nosūtīt",preview:"Priekšskatītījums",go_back:"Atpakaļ",back_to_login:"Atpakaļ uz autorizāciju?",home:"Sākums",filter:"Filtrēt",delete:"Dzēst",edit:"Labot",view:"Skatīt",add_new_item:"Pievienot jaunu",clear_all:"Notīrīt visu",showing:"Rāda",of:"no",actions:"Darbības",subtotal:"KOPĀ",discount:"ATLAIDE",fixed:"Fiksēts",percentage:"Procenti",tax:"Nodoklis",total_amount:"KOPĀ APMAKSAI",bill_to:"Saņēmējs",ship_to:"Piegādāt uz",due:"Līdz",draft:"Melnraksts",sent:"Nosūtīts",all:"Visi",select_all:"Iezīmēt visu",select_template:"Izvēlēties veidni",choose_file:"Spied šeit, lai izvēlētos failu",choose_template:"Izvēlaties sagatavi",choose:"Izvēlies",remove:"Dzēst",select_a_status:"Izvēlieties statusu",select_a_tax:"Izvēlēties nodokli",search:"Meklēt",are_you_sure:"Vai esat pārliecināts?",list_is_empty:"Saraksts ir tukšs.",no_tax_found:"Nodoklis nav atrasts!",four_zero_four:"404",you_got_lost:"Opā! Esi apmaldījies!",go_home:"Uz Sākumu",test_mail_conf:"Jūsu e-pasta uzstādījumu tests",send_mail_successfully:"Veiksmīgi nosūtīts",setting_updated:"Iestatījumi tika veiksmīgi atjaunināti",select_state:"Izvēlieties reģionu",select_country:"Izvēlēties valsti",select_city:"Izvēlieties pilsētu",street_1:"Adrese 1",street_2:"Adrese 2",action_failed:"Darbība neizdevās",retry:"Atkārtot",choose_note:"Izvēlieties piezīmi",no_note_found:"Piezīmes nav atrastas",insert_note:"Ievietot piezīmi",copied_pdf_url_clipboard:"Saglabāt PDF saiti!",copied_url_clipboard:"Copied url to clipboard!",docs:"Dokumenti",do_you_wish_to_continue:"Vai vēlies turpināt?",note:"Piezīme",pay_invoice:"Pay Invoice",login_successfully:"Logged in successfully!",logged_out_successfully:"Logged out successfully",mark_as_default:"Mark as default"},Fee={select_year:"Izvēlieties gadu",cards:{due_amount:"Apmaksas summa",customers:"Klienti",invoices:"Rēķini",estimates:"Aprēķini",payments:"Payments"},chart_info:{total_sales:"Pārdotais",total_receipts:"Čeki",total_expense:"Izdevumi",net_income:"Peļņa",year:"Izvēlieties gadu"},monthly_chart:{title:"Pārdotais un Izdevumi"},recent_invoices_card:{title:"Pienākošie rēķini",due_on:"Termiņš",customer:"Klients",amount_due:"Apmaksas summa",actions:"Darbības",view_all:"Skatīt visus"},recent_estimate_card:{title:"Nesenie aprēķini",date:"Datums",customer:"Klients",amount_due:"Apmaksas summa",actions:"Darbības",view_all:"Skatīt visus"}},Mee={name:"Nosaukums",description:"Apraksts",percent:"Procenti",compound_tax:"Saliktie nodokļi"},Ree={search:"Meklēt...",customers:"Klienti",users:"Lietotāji",no_results_found:"Nav atbilstošu rezultātu"},Oee={label:"NOMAINĪT UZŅĒMUMU",no_results_found:"Nekas netika atrasts",add_new_company:"Pievienot jaunu uzņēmumu",new_company:"Jauns uzņēmums",created_message:"Uzņēmums veiksmīgi pievienots"},$ee={today:"Šodien",this_week:"Šonedēļ",this_month:"Šomēnes",this_quarter:"Ceturksnī",this_year:"Šogad",previous_week:"Iepriekšējā nedēļa",previous_month:"Iepriekšējā mēnesī",previous_quarter:"Iepriekšējā ceturksnī",previous_year:"Iepriekšējā gadā",custom:"Pielāgots"},Lee={title:"Klienti",prefix:"Prefikss",add_customer:"Pievienot klientu",contacts_list:"Klientu saraksts",name:"Vārds",mail:"Pasts",statement:"Paziņojums",display_name:"Nosaukums",primary_contact_name:"Galvenā kontakta vārds",contact_name:"Kontaktpersonas vārds",amount_due:"Kopā",email:"E-pasts",address:"Adrese",phone:"Telefona numurs",website:"Mājaslapa",overview:"Pārskats",invoice_prefix:"Rēķina prefikss",estimate_prefix:"Aprēķinu prefikss",payment_prefix:"Maksājuma prefikss",enable_portal:"Aktivizēt portālu",country:"Valsts",state:"Reģions",city:"Pilsēta",zip_code:"Pasta indekss",added_on:"Pievienots",action:"Darbība",password:"Parole",confirm_password:"Apstipriniet paroli",street_number:"Adrese",primary_currency:"Primārā valūta",description:"Apraksts",add_new_customer:"Pievienot jaunu klientu",save_customer:"Saglabāt klientu",update_customer:"Atjaunināt klientu",customer:"Klients | Klienti",new_customer:"Jauns klients",edit_customer:"Rediģēt klientu",basic_info:"Pamatinformācija",portal_access:"Portal Access",portal_access_text:"Would you like to allow this customer to login to the Customer Portal?",portal_access_url:"Customer Portal Login URL",portal_access_url_help:"Please copy & forward the above given URL to your customer for providing access.",billing_address:"Juridiskā adrese",shipping_address:"Piegādes adrese",copy_billing_address:"Kopēt no juridiskās adreses",no_customers:"Pagaidām nav klientu!",no_customers_found:"Klienti netika atrasti!",no_contact:"Nav kontaktu",no_contact_name:"Nav kontaktvārda",list_of_customers:"Šajā sadaļā būs klientu saraksts.",primary_display_name:"Klienta nosaukums",select_currency:"Izvēlieties valūtu",select_a_customer:"Izvēlēties klientu",type_or_click:"Rakstīt vai spiest, lai izvēlētos",new_transaction:"Jauns darījums",no_matching_customers:"Netika atrasts neviens klients!",phone_number:"Telefona numurs",create_date:"Izveidošanas datums",confirm_delete:"Jūs nevarēsit atgūt šo klientu un visus saistītos rēķinus, aprēķinus un maksājumus.",created_message:"Klients izveidots veiksmīgi",updated_message:"Klients atjaunināts veiksmīgi",address_updated_message:"Address Information Updated succesfully",deleted_message:"Klients veiksmīgi izdzēsts",edit_currency_not_allowed:"Nevar izmainīt valūtu, ja maksājums ir veikts."},Bee={title:"Preces",items_list:"Preču saraksts",name:"Nosaukums",unit:"Vienība",description:"Apraksts",added_on:"Pievienots",price:"Cena",date_of_creation:"Izveidošanas datums",not_selected:"Nekas netika izvēlēts",action:"Darbība",add_item:"Pievienot",save_item:"Saglabāt",update_item:"Atjaunināt",item:"Prece | Preces",add_new_item:"Pievienot jaunu preci",new_item:"Jauna prece",edit_item:"Rediģēt preci",no_items:"Nav preču!",list_of_items:"Šajā sadaļā būs preču/pakalpojumu saraksts.",select_a_unit:"atlasiet vienību",taxes:"Nodokļi",item_attached_message:"Nevar dzēst preci, kura tiek izmantota",confirm_delete:"Jūs nevarēsiet atgūt šo preci",created_message:"Prece izveidota veiksmīgi",updated_message:"Prece atjaunināta veiksmīgi",deleted_message:"Prece veiksmīgi izdzēsta"},Uee={title:"Aprēķini",accept_estimate:"Accept Estimate",reject_estimate:"Reject Estimate",estimate:"Aprēķins | Aprēķini",estimates_list:"Aprēķinu saraksts",days:"{days} Dienas",months:"{months} Mēnesis",years:"{years} Gads",all:"Visi",paid:"Apmaksāts",unpaid:"Neapmaksāts",customer:"KLIENTS",ref_no:"REF NR.",number:"NUMURS",amount_due:"Summa apmaksai",partially_paid:"Daļēji apmaksāts",total:"Kopā",discount:"Atlaide",sub_total:"Starpsumma",estimate_number:"Aprēķina numurs",ref_number:"Ref numurs",contact:"Kontakti",add_item:"Pievienot preci",date:"Datums",due_date:"Apmaksas termiņš",expiry_date:"Termiņa beigu datums",status:"Status",add_tax:"Pievienot nodokli",amount:"Summa",action:"Darbība",notes:"Piezīmes",tax:"Nodoklis",estimate_template:"Sagatave",convert_to_invoice:"Pārveidot par rēķinu",mark_as_sent:"Atzīmēt kā nosūtītu",send_estimate:"Nosūtīt aprēķinu",resend_estimate:"Atkārtoti nosūtīt aprēķinu",record_payment:"Izveidot maksājumu",add_estimate:"Pievienot aprēķinu",save_estimate:"Saglabāt aprēķinu",confirm_conversion:"Šis aprēķins tiks izmantots, lai izveidotu jaunu rēķinu.",conversion_message:"Rēķins izveidots veiksmīgi",confirm_send_estimate:"Šis aprēķins tiks nosūtīts klientam e-pastā",confirm_mark_as_sent:"Aprēķins tiks atzīmēts kā nosūtīts",confirm_mark_as_accepted:"Aprēķins tiks atzīmēts kā apstiprināts",confirm_mark_as_rejected:"Aprēķins tiks atzīmēts kā noraidīts",no_matching_estimates:"Netika atrasts neviens aprēķins!",mark_as_sent_successfully:"Aprēķins atzīmēts kā veiksmīgi nosūtīts",send_estimate_successfully:"Aprēķins veiksmīgi nosūtīts",errors:{required:"Šis lauks ir obligāts"},accepted:"Apstiprināts",rejected:"Noraidīts",expired:"Expired",sent:"Nosūtīts",draft:"Melnraksts",viewed:"Viewed",declined:"Noraidīts",new_estimate:"Jauns aprēķins",add_new_estimate:"Pievienot jaunu aprēķinu",update_Estimate:"Atjaunināt aprēķinu",edit_estimate:"Labot aprēķinu",items:"preces",Estimate:"Aprēķins | Aprēķini",add_new_tax:"Pievienot jaunu nodokli",no_estimates:"Vēl nav aprēķinu!",list_of_estimates:"Šajā sadaļā būs aprēķinu saraksts.",mark_as_rejected:"Atzīmēt kā noraidītu",mark_as_accepted:"Atzīmēt kā apstiprinātu",marked_as_accepted_message:"Aprēķins atzīmēts kā apstiprināts",marked_as_rejected_message:"Aprēķins atzīmēts kā noraidīts",confirm_delete:"Jūs nevarēsiet atgūt šo aprēķinu | Jūs nevarēsiet atgūt šo aprēķinus",created_message:"Aprēķins izveidots veiksmīgi",updated_message:"Aprēķins atjaunināts veiksmīgi",deleted_message:"Aprēķins veiksmīgi izdzēsts | Aprēķini veiksmīgi izdzēsti",something_went_wrong:"kaut kas nogāja greizi",item:{title:"Preces nosaukums",description:"Apraksts",quantity:"Daudzums",price:"Cena",discount:"Atlaide",total:"Kopā",total_discount:"Kopējā atlaide",sub_total:"Starpsumma",tax:"Nodoklis",amount:"Summa",select_an_item:"Rakstīt vai spiest, lai izvēlētos",type_item_description:"Ievadiet preces/pakalpojuma aprakstu (nav obligāti)"},mark_as_default_estimate_template_description:"If enabled, the selected template will be automatically selected for new estimates."},Vee={title:"Rēķini",download:"Download",pay_invoice:"Pay Invoice",invoices_list:"Rēķinu saraksts",invoice_information:"Invoice Information",days:"{days} Dienas",months:"{months} Mēnesis",years:"{years} Gads",all:"Visi",paid:"Apmaksāts",unpaid:"Neapmaksāts",viewed:"Apskatīts",overdue:"Kavēts",completed:"Pabeigts",customer:"KLIENTS",paid_status:"APMAKSAS STATUS",ref_no:"REF NR.",number:"NUMURS",amount_due:"SUMMA APMAKSAI",partially_paid:"Daļēji apmaksāts",total:"Kopā",discount:"Atlaide",sub_total:"Starpsumma",invoice:"Rēķins | Rēķini",invoice_number:"Rēķina numurs",ref_number:"Ref numurs",contact:"Kontakti",add_item:"Pievienot preci",date:"Datums",due_date:"Apmaksas termiņš",status:"Status",add_tax:"Pievienot nodokli",amount:"Summa",action:"Darbība",notes:"Piezīmes",view:"Skatīt",send_invoice:"Nosūtīt rēķinu",resend_invoice:"Nosūtīt rēķinu atkārtoti",invoice_template:"Rēķina sagatave",conversion_message:"Rēķins ir veiksmīgi nokopēts",template:"Sagatave",mark_as_sent:"Atzīmēt kā nosūtītu",confirm_send_invoice:"Šis rēķins tiks nosūtīts klientam e-pastā",invoice_mark_as_sent:"Rēķins tiks atzīmēts kā nosūtīts",confirm_mark_as_accepted:"Rēķins tiks atzīmēts kā apstiprināts",confirm_mark_as_rejected:"Rēķins tiks atzīmēts kā noraidīts",confirm_send:"Šis rēķins tiks nosūtīts klientam e-pastā",invoice_date:"Rēķina datums",record_payment:"Izveidot maksājumu",add_new_invoice:"Jauns rēķins",update_expense:"Atjaunināt izdevumu",edit_invoice:"Rediģēt rēķinu",new_invoice:"Jauns rēķins",save_invoice:"Saglabāt rēķinu",update_invoice:"Atjaunināt rēķinu",add_new_tax:"Pievienot jaunu nodokli",no_invoices:"Vēl nav rēķinu!",mark_as_rejected:"Atzīmēt kā noraidītu",mark_as_accepted:"Atzīmēt kā apstiprinātu",list_of_invoices:"Šajā sadaļā būs rēķinu saraksts.",select_invoice:"Izvēlaties rēķinu",no_matching_invoices:"Netika atrasts neviens rēķins!",mark_as_sent_successfully:"Rēķins atzīmēts kā veiksmīgi nosūtīts",invoice_sent_successfully:"Rēķins ir veiksmīgi nosūtīts",cloned_successfully:"Rēķins ir veiksmīgi nokopēts",clone_invoice:"Kopēt rēķinu",confirm_clone:"Šis rēķins tiks nokopēts kā jauns rēķins",item:{title:"Preces nosaukums",description:"Apraksts",quantity:"Daudzums",price:"Cena",discount:"Atlaide",total:"Kopā",total_discount:"Kopējā atlaide",sub_total:"Starpsumma",tax:"Nodoklis",amount:"Summa",select_an_item:"Rakstīt vai spiest, lai izvēlētos",type_item_description:"Ievadiet preces/pakalpojuma aprakstu (nav obligāti)"},payment_attached_message:"Vienam no atzīmētajiem rēķiniem jau ir pievienots maksājums. Pārliecinieties, ka pievienoti maksājumi ir izdzēsti",confirm_delete:"Jūs nevarēsiet atgūt šo rēķinu | Jūs nevarēsiet atgūt šos rēķinus",created_message:"Rēķins izveidots veiksmīgi",updated_message:"Rēķins ir veiksmīgi atjaunināts",deleted_message:"Rēķins veiksmīgi izdzēsts | Rēķini veiksmīgi izdzēsti",marked_as_sent_message:"Rēķins atzīmēts kā veiksmīgi nosūtīts",something_went_wrong:"kaut kas nogāja greizi",invalid_due_amount_message:"Rēķina kopējā summa nevar būt mazāka par kopējo apmaksāto summu. Lūdzu atjauniniet rēķinu vai dzēsiet piesaistītos maksājumus, lai turpinātu.",mark_as_default_invoice_template_description:"If enabled, the selected template will be automatically selected for new invoices."},qee={title:"Regulārie rēķini",invoices_list:"Regulāro rēķinu saraksts",days:"{days} Dienas",months:"{months} Month",years:"{years} Year",all:"All",paid:"Paid",unpaid:"Unpaid",viewed:"Viewed",overdue:"Overdue",active:"Active",completed:"Completed",customer:"CUSTOMER",paid_status:"PAID STATUS",ref_no:"REF NO.",number:"NUMBER",amount_due:"AMOUNT DUE",partially_paid:"Partially Paid",total:"Total",discount:"Discount",sub_total:"Sub Total",invoice:"Recurring Invoice | Recurring Invoices",invoice_number:"Recurring Invoice Number",next_invoice_date:"Next Invoice Date",ref_number:"Ref Number",contact:"Contact",add_item:"Add an Item",date:"Date",limit_by:"Limit by",limit_date:"Limit Date",limit_count:"Limit Count",count:"Count",status:"Status",select_a_status:"Select a status",working:"Working",on_hold:"On Hold",complete:"Completed",add_tax:"Add Tax",amount:"Amount",action:"Action",notes:"Notes",view:"View",basic_info:"Basic Info",send_invoice:"Send Recurring Invoice",auto_send:"Auto Send",resend_invoice:"Resend Recurring Invoice",invoice_template:"Recurring Invoice Template",conversion_message:"Recurring Invoice cloned successful",template:"Template",mark_as_sent:"Mark as sent",confirm_send_invoice:"This recurring invoice will be sent via email to the customer",invoice_mark_as_sent:"This recurring invoice will be marked as sent",confirm_send:"This recurring invoice will be sent via email to the customer",starts_at:"Sākuma datums",due_date:"Rēķina apmaksas datumu",record_payment:"Izveidot maksājumu",add_new_invoice:"Pievienot jaunu regulāro rēķinu",update_expense:"Update Expense",edit_invoice:"Edit Recurring Invoice",new_invoice:"New Recurring Invoice",send_automatically:"Send Automatically",send_automatically_desc:"Enable this, if you would like to send the invoice automatically to the customer when its created.",save_invoice:"Save Recurring Invoice",update_invoice:"Update Recurring Invoice",add_new_tax:"Add New Tax",no_invoices:"No Recurring Invoices yet!",mark_as_rejected:"Mark as rejected",mark_as_accepted:"Mark as accepted",list_of_invoices:"This section will contain the list of recurring invoices.",select_invoice:"Select Invoice",no_matching_invoices:"There are no matching recurring invoices!",mark_as_sent_successfully:"Recurring Invoice marked as sent successfully",invoice_sent_successfully:"Recurring Invoice sent successfully",cloned_successfully:"Recurring Invoice cloned successfully",clone_invoice:"Clone Recurring Invoice",confirm_clone:"This recurring invoice will be cloned into a new Recurring Invoice",add_customer_email:"Please add an email address for this customer to send invoices automatically.",item:{title:"Item Title",description:"Description",quantity:"Quantity",price:"Price",discount:"Discount",total:"Total",total_discount:"Total Discount",sub_total:"Sub Total",tax:"Tax",amount:"Amount",select_an_item:"Type or click to select an item",type_item_description:"Type Item Description (optional)"},frequency:{title:"Frequency",select_frequency:"Select Frequency",minute:"Minute",hour:"Hour",day_month:"Day of month",month:"Month",day_week:"Day of week"},confirm_delete:"You will not be able to recover this Invoice | You will not be able to recover these Invoices",created_message:"Recurring Invoice created successfully",updated_message:"Recurring Invoice updated successfully",deleted_message:"Recurring Invoice deleted successfully | Recurring Invoices deleted successfully",marked_as_sent_message:"Recurring Invoice marked as sent successfully",user_email_does_not_exist:"User email does not exist",something_went_wrong:"something went wrong",invalid_due_amount_message:"Total Recurring Invoice amount cannot be less than total paid amount for this Recurring Invoice. Please update the invoice or delete the associated payments to continue."},Hee={title:"Maksājumi",payments_list:"Maksājumu saraksts",record_payment:"Izveidot maksājumu",customer:"Klients",date:"Datums",amount:"Summa",action:"Darbība",payment_number:"Maksājuma numurs",payment_mode:"Apmaksas veids",invoice:"Rēķins",note:"Piezīme",add_payment:"Pievienot maksājumu",new_payment:"Jauns maksājums",edit_payment:"Labot maksājumu",view_payment:"Skatīt maksājumu",add_new_payment:"Pievienot jaunu maksājumu",send_payment_receipt:"Nosūtīt maksājuma izdruku",send_payment:"Nosūtīt maksājumu",save_payment:"Saglabāt maksājumu",update_payment:"Labot maksājumu",payment:"Maksājums | Maksājumi",no_payments:"Nav pievienotu maksājumu!",not_selected:"Not selected",no_invoice:"No invoice",no_matching_payments:"Netika atrasts neviens maksājums!",list_of_payments:"Šajā sadaļā būs maksājumu saraksts.",select_payment_mode:"Izvēlēties maksājuma veidu",confirm_mark_as_sent:"Aprēķins tiks atzīmēts kā nosūtīts",confirm_send_payment:"Šis maksājums tiks nosūtīts klientam e-pastā",send_payment_successfully:"Maksājums veiksmīgi nosūtīts",something_went_wrong:"kaut kas nogāja greizi",confirm_delete:"Jūs nevarēsiet atgūt šo maksājumu | Jūs nevarēsiet atgūt šos maksājumus",created_message:"Maksājums veiksmīgi izveidots",updated_message:"Maksājums veiksmīgi labots",deleted_message:"Maksājums veiksmīgi izdzēsts | Maksājumi veiksmīgi izdzēsti",invalid_amount_message:"Maksājuma summa nav pareiza"},Wee={title:"Izdevumi",expenses_list:"Izdevumu saraksts",select_a_customer:"Izvēlēties klientu",expense_title:"Nosaukums",customer:"Klients",currency:"Currency",contact:"Kontakti",category:"Kategorija",from_date:"Datums no",to_date:"Datums līdz",expense_date:"Datums",description:"Apraksts",receipt:"Čeks",amount:"Summa",action:"Darbība",not_selected:"Not selected",note:"Piezīme",category_id:"Kategorijas Id",date:"Datums",add_expense:"Pievienot izdevumu",add_new_expense:"Pievienot jaunu izdevumu",save_expense:"Saglabāt izdevumu",update_expense:"Atjaunināt izdevumu",download_receipt:"Lejupielādēt čeku",edit_expense:"Labot izdevumu",new_expense:"Jauns izdevums",expense:"Izdevums | Izdevumi",no_expenses:"Vēl nav izdevumu!",list_of_expenses:"Šajā sadaļā būs izdevumu saraksts.",confirm_delete:"Jūs nevarēsiet atgūt šo izdevumu | Jūs nevarēsiet atgūt šos izdevumus",created_message:"Izdevums izveidots veiksmīgi",updated_message:"Izdevums atjaunināts veiksmīgi",deleted_message:"Izdevums veiksmīgi izdzēsts | Izdevumi veiksmīgi izdzēsti",categories:{categories_list:"Kategoriju saraksts",title:"Nosaukums",name:"Vārds",description:"Apraksts",amount:"Summa",actions:"Darbības",add_category:"Pievienot kategoriju",new_category:"Jauna Kategorija",category:"Kategorija | Kategorijas",select_a_category:"Izvēlieties kategoriju"}},Kee={email:"E-pasts",password:"Parole",forgot_password:"Aizmirsi paroli?",or_signIn_with:"vai pierakstīties ar",login:"Ielogoties",register:"Reģistrēties",reset_password:"Atjaunot paroli",password_reset_successfully:"Parole atjaunota veiksmīgi",enter_email:"Ievadiet e-pastu",enter_password:"Ievadiet paroli",retype_password:"Atkārtoti ievadiet paroli"},Yee={buy_now:"Buy Now",install:"Install",price:"Price",download_zip_file:"Download ZIP file",unzipping_package:"Unzipping Package",copying_files:"Copying Files",deleting_files:"Deleting Unused files",completing_installation:"Completing Installation",update_failed:"Update Failed",install_success:"Module has been installed successfully!",customer_reviews:"Reviews",license:"License",faq:"FAQ",monthly:"Monthly",yearly:"Yearly",updated:"Updated",version:"Version",disable:"Disable",module_disabled:"Module Disabled",enable:"Enable",module_enabled:"Module Enabled",update_to:"Update To",module_updated:"Module Updated Successfully!",title:"Modules",module:"Module | Modules",api_token:"API token",invalid_api_token:"Invalid API Token.",other_modules:"Other Modules",view_all:"View All",no_reviews_found:"There are no reviews for this module yet!",module_not_purchased:"Module Not Purchased",module_not_found:"Module Not Found",version_not_supported:"This module version doesn't support the current version of InvoiceShelf",last_updated:"Last Updated On",connect_installation:"Connect your installation",api_token_description:"Login to {url} and connect this installation by entering the API Token. Your purchased modules will show up here after the connection is established.",view_module:"View Module",update_available:"Update Available",purchased:"Purchased",installed:"Installed",no_modules_installed:"No Modules Installed Yet!",disable_warning:"All the settings for this particular will be reverted.",what_you_get:"What you get"},Zee={title:"Lietotāji",users_list:"Lietotāju saraksts",name:"Vārds",description:"Apraksts",added_on:"Pievienots",date_of_creation:"Izveidošanas datums",action:"Darbība",add_user:"Pievienot lietotāju",save_user:"Saglabāt lietotāju",update_user:"Atjaunināt lietotāju",user:"Lietotājs | Lietotāji",add_new_user:"Pievienot jaunu lietotāju",new_user:"Jauns lietotājs",edit_user:"Rediģēt lietotāju",no_users:"Pagaidām nav lietotāju!",list_of_users:"Šajā sadaļā būs lietotāju saraksts.",email:"E-pasts",phone:"Telefona numurs",password:"Parole",user_attached_message:"Nevar dzēst preci, kura tiek izmantota",confirm_delete:"Jūs nevarēsiet atgūt šo lietotāju | Jūs nevarēsiet atgūt šos lietotājus",created_message:"Lietotājs veiksmīgi izveidots",updated_message:"Lietotājs veiksmīgi labots",deleted_message:"Lietotājs veiksmīgi izdzēsts",select_company_role:"Select Role for {company}",companies:"Companies"},Gee={title:"Atskaite",from_date:"Datums no",to_date:"Datums līdz",status:"Status",paid:"Apmaksāts",unpaid:"Neapmaksāts",download_pdf:"Lejupielādēt PDF",view_pdf:"Apskatīt PDF",update_report:"Labot atskaiti",report:"Atskaite | Atskaites",profit_loss:{profit_loss:"Peļņa & Zaudējumi",to_date:"Datums līdz",from_date:"Datums no",date_range:"Izvēlēties datumus"},sales:{sales:"Pārdotais",date_range:"Izvēlēties datumus",to_date:"Datums līdz",from_date:"Datums no",report_type:"Atskaites veids"},taxes:{taxes:"Nodokļi",to_date:"Datums līdz",from_date:"Datums no",date_range:"Izvēlēties datumus"},errors:{required:"Šis lauks ir obligāts"},invoices:{invoice:"Rēķins",invoice_date:"Rēķina datums",due_date:"Apmaksas termiņš",amount:"Summa",contact_name:"Kontaktpersonas vārds",status:"Status"},estimates:{estimate:"Aprēķins",estimate_date:"Aprēķina datums",due_date:"Termiņš",estimate_number:"Aprēķina numurs",ref_number:"Ref numurs",amount:"Summa",contact_name:"Kontaktpersonas vārds",status:"Status"},expenses:{expenses:"Izdevumi",category:"Kategorija",date:"Datums",amount:"Summa",to_date:"Datums līdz",from_date:"Datums no",date_range:"Izvēlēties datumus"}},Qee={menu_title:{account_settings:"Konta iestatījumi",company_information:"Uzņēmuma informācija",customization:"Pielāgošana",preferences:"Iestatījumi",notifications:"Paziņojumi",tax_types:"Nodokļu veidi",expense_category:"Izdevumu kategorijas",update_app:"Atjaunināt App",backup:"Rezerves kopija",file_disk:"Disks",custom_fields:"Pielāgotie lauki",payment_modes:"Apmaksas veidi",notes:"Piezīmes",exchange_rate:"Exchange Rate",address_information:"Address Information"},address_information:{section_description:" You can update Your Address information using form below."},title:"Iestatījumi",setting:"Iestatījumi | Iestatījumi",general:"Vispārīgi",language:"Valoda",primary_currency:"Primārā valūta",timezone:"Laika josla",date_format:"Datuma formāts",currencies:{title:"Valūtas",currency:"Valūta | Valūtas",currencies_list:"Valūtu saraksts",select_currency:"Izvēleties valūtu",name:"Nosaukums",code:"Kods",symbol:"Simbols",precision:"Precizitāte",thousand_separator:"Tūkstošu atdalītājs",decimal_separator:"Decimāldaļu atdalītājs",position:"Pozīcija",position_of_symbol:"Pozīcijas simbols",right:"Pa labi",left:"Pa kreisi",action:"Darbība",add_currency:"Pievienot valūtu"},mail:{host:"E-pasta serveris",port:"E-pasta ports",driver:"E-pasta draiveris",secret:"Secret",mailgun_secret:"Mailgun Secret",mailgun_domain:"Domēns",mailgun_endpoint:"Mailgun Endpoint",ses_secret:"SES Secret",ses_key:"SES Key",password:"E-pasta parole",username:"E-pasta lietotājvārds",mail_config:"E-pasta konfigurācija",from_name:"E-pasts no",from_mail:"E-pasta adrese no kuras sūtīt",encryption:"E-pasta šifrēšana",mail_config_desc:"Zemāk ir e-pasta konfigurēšanas forma. Jūs varat konfigurēt arī trešās puses servisus kā Sendgrid, SES u.c."},pdf:{title:"PDF uzstādījumi",footer_text:"Kājenes teksts",pdf_layout:"PDF izkārtojums"},company_info:{company_info:"Uzņēmuma informācija",company_name:"Uzņēmuma nosaukums",company_logo:"Uzņēmuma logo",section_description:"Informācija par uzņēmumu kura tiks uzrādīta rēķinos, aprēķinos un citos dokumentos kurus veidosiet InvoiceShelf sistēmā.",phone:"Telefona numurs",country:"Valsts",state:"Reģions",city:"Pilsēta",address:"Adrese",zip:"Pasta indekss",save:"Saglabāt",delete:"Delete",updated_message:"Uzņēmuma informācija veiksmīgi saglabāta",delete_company:"Delete Company",delete_company_description:"Once you delete your company, you will lose all the data and files associated with it permanently.",are_you_absolutely_sure:"Are you absolutely sure?",delete_company_modal_desc:"This action cannot be undone. This will permanently delete {company} and all of its associated data.",delete_company_modal_label:"Please type {company} to confirm"},custom_fields:{title:"Pielāgotie lauki",section_description:"Customize your Invoices, Estimates & Payment Receipts with your own fields. Make sure to use the below added fields on the address formats on Customization settings page.",add_custom_field:"Add Custom Field",edit_custom_field:"Edit Custom Field",field_name:"Field Name",label:"Label",type:"Type",name:"Name",slug:"Slug",required:"Required",placeholder:"Placeholder",help_text:"Help Text",default_value:"Noklusējuma vērtība",prefix:"Prefikss",starting_number:"Sākuma numurs",model:"Modelis",help_text_description:"Enter some text to help users understand the purpose of this custom field.",suffix:"Suffix",yes:"Jā",no:"Nē",order:"Order",custom_field_confirm_delete:"You will not be able to recover this Custom Field",already_in_use:"Custom Field is already in use",deleted_message:"Custom Field deleted successfully",options:"options",add_option:"Add Options",add_another_option:"Add another option",sort_in_alphabetical_order:"Sort in Alphabetical Order",add_options_in_bulk:"Add options in bulk",use_predefined_options:"Use Predefined Options",select_custom_date:"Select Custom Date",select_relative_date:"Select Relative Date",ticked_by_default:"Ticked by default",updated_message:"Custom Field updated successfully",added_message:"Custom Field added successfully",press_enter_to_add:"Press enter to add new option",model_in_use:"Cannot update model for fields which are already in use.",type_in_use:"Cannot update type for fields which are already in use."},customization:{customization:"pielāgošana",updated_message:"Uzņēmuma informācija veiksmīgi saglabāta",save:"Saglabāt",insert_fields:"Insert Fields",learn_custom_format:"Learn how to use custom format",add_new_component:"Add New Component",component:"Component",Parameter:"Parameter",series:"Series",series_description:"To set a static prefix/postfix like 'INV' across your company. It supports character length of up to 6 chars.",series_param_label:"Series Value",delimiter:"Delimiter",delimiter_description:"Single character for specifying the boundary between 2 separate components. By default its set to -",delimiter_param_label:"Delimiter Value",date_format:"Date Format",date_format_description:"A local date and time field which accepts a format parameter. The default format: 'Y' renders the current year.",date_format_param_label:"Format",sequence:"Sequence",sequence_description:"Consecutive sequence of numbers across your company. You can specify the length on the given parameter.",sequence_param_label:"Sequence Length",customer_series:"Customer Series",customer_series_description:"To set a different prefix/postfix for each customer.",customer_sequence:"Customer Sequence",customer_sequence_description:"Consecutive sequence of numbers for each of your customer.",customer_sequence_param_label:"Sequence Length",random_sequence:"Random Sequence",random_sequence_description:"Random alphanumeric string. You can specify the length on the given parameter.",random_sequence_param_label:"Sequence Length",invoices:{title:"Rēķini",invoice_number_format:"Invoice Number Format",invoice_number_format_description:"Customize how your invoice number gets generated automatically when you create a new invoice.",preview_invoice_number:"Preview Invoice Number",due_date:"Due Date",due_date_description:"Specify how due date is automatically set when you create an invoice.",due_date_days:"Invoice Due after days",set_due_date_automatically:"Set Due Date Automatically",set_due_date_automatically_description:"Enable this if you wish to set due date automatically when you create a new invoice.",default_formats:"Default Formats",default_formats_description:"Below given formats are used to fill up the fields automatically on invoice creation.",default_invoice_email_body:"Default Invoice Email Body",company_address_format:"Uzņēmuma adreses formāts",shipping_address_format:"Piegādes adreses formāts",billing_address_format:"Maksātāja / Uzņēmuma adreses formāts",invoice_email_attachment:"Send invoices as attachments",invoice_email_attachment_setting_description:"Enable this if you want to send invoices as email attachment. Please note that 'View Invoice' button in emails will not be displayed anymore when enabled.",invoice_settings_updated:"Invoice Settings updated successfully",retrospective_edits:"Retrospective Edits",allow:"Allow",disable_on_invoice_partial_paid:"Disable after partial payment is recorded",disable_on_invoice_paid:"Disable after full payment is recorded",disable_on_invoice_sent:"Disable after invoice is sent",retrospective_edits_description:" Based on your country's laws or your preference, you can restrict users from editing finalised invoices."},estimates:{title:"Aprēķini",estimate_number_format:"Estimate Number Format",estimate_number_format_description:"Customize how your estimate number gets generated automatically when you create a new estimate.",preview_estimate_number:"Preview Estimate Number",expiry_date:"Expiry Date",expiry_date_description:"Specify how expiry date is automatically set when you create an estimate.",expiry_date_days:"Estimate Expires after days",set_expiry_date_automatically:"Set Expiry Date Automatically",set_expiry_date_automatically_description:"Enable this if you wish to set expiry date automatically when you create a new estimate.",default_formats:"Default Formats",default_formats_description:"Below given formats are used to fill up the fields automatically on estimate creation.",default_estimate_email_body:"Noklusējamais Aprēķina e-pasta saturs",company_address_format:"Uzņēmuma adreses formāts",shipping_address_format:"Piegādes adreses formāts",billing_address_format:"Maksātāja / Uzņēmuma adreses formāts",estimate_email_attachment:"Send estimates as attachments",estimate_email_attachment_setting_description:"Enable this if you want to send the estimates as an email attachment. Please note that 'View Estimate' button in emails will not be displayed anymore when enabled.",estimate_settings_updated:"Estimate Settings updated successfully",convert_estimate_options:"Estimate Convert Action",convert_estimate_description:"Specify what happens to the estimate after it gets converted to an invoice.",no_action:"No action",delete_estimate:"Delete estimate",mark_estimate_as_accepted:"Mark estimate as accepted"},payments:{title:"Maksājumi",payment_number_format:"Payment Number Format",payment_number_format_description:"Customize how your payment number gets generated automatically when you create a new payment.",preview_payment_number:"Preview Payment Number",default_formats:"Default Formats",default_formats_description:"Below given formats are used to fill up the fields automatically on payment creation.",default_payment_email_body:"Noklusējamais Maksājuma e-pasta saturs",company_address_format:"Uzņēmuma adreses formāts",from_customer_address_format:"No Klienta adreses formāts",payment_email_attachment:"Send payments as attachments",payment_email_attachment_setting_description:"Enable this if you want to send the payment receipts as an email attachment. Please note that 'View Payment' button in emails will not be displayed anymore when enabled.",payment_settings_updated:"Payment Settings updated successfully"},items:{title:"Preces",units:"Vienības",add_item_unit:"Pievienot Preces vienību",edit_item_unit:"Labot Preces vienību",unit_name:"Vienības nosaukums",item_unit_added:"Preces vienība pievienota",item_unit_updated:"Preces vienība atjaunota",item_unit_confirm_delete:"Jums nebūs iespējas atgūt šo Preces vienību",already_in_use:"Preces vienība jau tiek izmantota",deleted_message:"Preces vienība veiksmīgi izdzēsta"},notes:{title:"Piezīmes",description:"Save time by creating notes and reusing them on your invoices, estimates & payments.",notes:"Notes",type:"Type",add_note:"Add Note",add_new_note:"Add New Note",name:"Name",edit_note:"Edit Note",note_added:"Note added successfully",note_updated:"Note Updated successfully",note_confirm_delete:"You will not be able to recover this Note",already_in_use:"Note is already in use",deleted_message:"Note deleted successfully"}},account_settings:{profile_picture:"Profile Picture",name:"Name",email:"Email",password:"Password",confirm_password:"Confirm Password",account_settings:"Account Settings",save:"Save",section_description:"You can update your name, email & password using the form below.",updated_message:"Account Settings updated successfully"},user_profile:{name:"Name",email:"Email",password:"Password",confirm_password:"Confirm Password"},notification:{title:"Notifications",email:"Send Notifications to",description:"Which email notifications would you like to receive when something changes?",invoice_viewed:"Invoice viewed",invoice_viewed_desc:"When your customer views the invoice sent via invoiceshelf dashboard.",estimate_viewed:"Estimate viewed",estimate_viewed_desc:"When your customer views the estimate sent via invoiceshelf dashboard.",save:"Save",email_save_message:"Email saved successfully",please_enter_email:"Please Enter Email"},roles:{title:"Roles",description:"Manage the roles & permissions of this company",save:"Save",add_new_role:"Add New Role",role_name:"Role Name",added_on:"Added on",add_role:"Add Role",edit_role:"Edit Role",name:"Name",permission:"Permission | Permissions",select_all:"Select All",none:"None",confirm_delete:"You will not be able to recover this Role",created_message:"Role created successfully",updated_message:"Role updated successfully",deleted_message:"Role deleted successfully",already_in_use:"Role is already in use"},exchange_rate:{exchange_rate:"Exchange Rate",title:"Fix Currency Exchange issues",description:"Please enter exchange rate of all the currencies mentioned below to help InvoiceShelf properly calculate the amounts in {currency}.",drivers:"Drivers",new_driver:"Add New Provider",edit_driver:"Edit Provider",select_driver:"Select Driver",update:"select exchange rate ",providers_description:"Configure your exchange rate providers here to automatically fetch the latest exchange rate on transactions.",key:"API Key",name:"Name",driver:"Driver",is_default:"IS DEFAULT",currency:"Currencies",exchange_rate_confirm_delete:"You will not be able to recover this driver",created_message:"Provider Created successfully",updated_message:"Provider Updated Successfully",deleted_message:"Provider Deleted Successfully",error:" You cannot Delete Active Driver",default_currency_error:"This currency is already used in one of the Active Provider",exchange_help_text:"Enter exchange rate to convert from {currency} to {baseCurrency}",currency_freak:"Currency Freak",currency_layer:"Currency Layer",open_exchange_rate:"Open Exchange Rate",currency_converter:"Currency Converter",server:"Server",url:"URL",active:"Active",currency_help_text:"This provider will only be used on above selected currencies",currency_in_used:"The following currencies are already active on another provider. Please remove these currencies from selection to activate this provider again."},tax_types:{title:"Tax Types",add_tax:"Add Tax",edit_tax:"Edit Tax",description:"You can add or Remove Taxes as you please. InvoiceShelf supports Taxes on Individual Items as well as on the invoice.",add_new_tax:"Add New Tax",tax_settings:"Tax Settings",tax_per_item:"Tax Per Item",tax_name:"Tax Name",compound_tax:"Compound Tax",percent:"Percent",action:"Action",tax_setting_description:"Enable this if you want to add taxes to individual invoice items. By default, taxes are added directly to the invoice.",created_message:"Tax type created successfully",updated_message:"Tax type updated successfully",deleted_message:"Tax type deleted successfully",confirm_delete:"Jums nebūs iespējas atgūt šo Nodokļa veidu",already_in_use:"Nodoklis jau tiek izmantots"},payment_modes:{title:"Payment Modes",description:"Modes of transaction for payments",add_payment_mode:"Add Payment Mode",edit_payment_mode:"Edit Payment Mode",mode_name:"Mode Name",payment_mode_added:"Payment Mode Added",payment_mode_updated:"Payment Mode Updated",payment_mode_confirm_delete:"You will not be able to recover this Payment Mode",payments_attached:"This payment method is already attached to payments. Please delete the attached payments to proceed with deletion.",expenses_attached:"This payment method is already attached to expenses. Please delete the attached expenses to proceed with deletion.",deleted_message:"Payment Mode deleted successfully"},expense_category:{title:"Izdevumu kategorijas",action:"Darbība",description:"Kategorijas ir obligātas, lai pievienotu Izdevumus.",add_new_category:"Pievienot jaunu kategoriju",add_category:"Pievienot kategoriju",edit_category:"Rediģēt kategoriju",category_name:"Kategorijas nosaukums",category_description:"Apraksts",created_message:"Izdevumu kategorija izveidota veiksmīgi",deleted_message:"Izdevumu kategorija veiksmīgi izdzēsta",updated_message:"Izdevumu kategorija atjaunināta veiksmīgi",confirm_delete:"Jums nebūs iespējas atgūt šo Izdevumu kategoriju",already_in_use:"Kategorija jau tiek izmantota"},preferences:{currency:"Valūta",default_language:"Noklusējuma valoda",time_zone:"Laika josla",fiscal_year:"Finanšu gads",date_format:"Datuma formāts",discount_setting:"Atlaižu iestatījumi",discount_per_item:"Atlaide par preci/pakalpojumu ",discount_setting_description:"Iespējot šo, lai piešķirtu atlaides individuālām rēķina precēm. Pēc noklusējuma, atlaide tiek piemērota rēķinam.",expire_public_links:"Automatically Expire Public Links",expire_setting_description:"Specify whether you would like to expire all the links sent by application to view invoices, estimates & payments, etc after a specified duration.",save:"Saglabāt",preference:"Iestatījumi | Iestatījumi",general_settings:"Noklusējamie iestatījumi sistēmai.",updated_message:"Iestatījumi atjaunināti veiksmīgi",select_language:"Izvēlieties valodu",select_time_zone:"Izvēlaties laika joslu",select_date_format:"Izvēlaties datuma formātu",select_financial_year:"Izvēlaties finanšu gadu",recurring_invoice_status:"Recurring Invoice Status",create_status:"Create Status",active:"Active",on_hold:"On Hold",update_status:"Update Status",completed:"Completed",company_currency_unchangeable:"Company currency cannot be changed"},update_app:{title:"Atjaunināt App",description:"Jūs varat atjaunināt InvoiceShelf sistēmas versiju pavisam vienkārši - spiežot uz pogas zemāk",check_update:"Meklēt atjauninājumus",avail_update:"Pieejami jauni atjauninājumi",next_version:"Nākamā versija",requirements:"Prasības",update:"Atjaunināt tagad",update_progress:"Notiek atjaunināšana...",progress_text:"Tas prasīs tikai dažas minūtes. Pirms atjaunināšanas beigām, lūdzu, neatsvaidziniet ekrānu un neaizveriet logu",update_success:"Sistēma ir atjaunināta! Lūdzu, uzgaidiet, kamēr pārlūkprogrammas logs tiks automātiski ielādēts.",latest_message:"Atjauninājumi nav pieejami! Jums ir jaunākā versija.",current_version:"Versija",download_zip_file:"Lejupielādēt ZIP failu",unzipping_package:"Atarhivē Zip failu",copying_files:"Notiek failu kopēšana",deleting_files:"Deleting Unused files",running_migrations:"Notiek migrācijas",finishing_update:"Pabeidz atjauninājumu",update_failed:"Atjaunināšana neizdevās",update_failed_text:"Atvainojiet! Jūsu atjauninājuma laikā notika kļūda: {step}. solī",update_warning:"All of the application files and default template files will be overwritten when you update the application using this utility. Please take a backup of your templates & database before updating."},backup:{title:"Backup | Backups",description:"The backup is a zipfile that contains all files in the directories you specify along with a dump of your database",new_backup:"Add New Backup",create_backup:"Create Backup",select_backup_type:"Select Backup Type",backup_confirm_delete:"You will not be able to recover this Backup",path:"path",new_disk:"New Disk",created_at:"created at",size:"size",dropbox:"dropbox",local:"local",healthy:"healthy",amount_of_backups:"amount of backups",newest_backups:"newest backups",used_storage:"used storage",select_disk:"Select Disk",action:"Action",deleted_message:"Backup deleted successfully",created_message:"Backup created successfully",invalid_disk_credentials:"Invalid credential of selected disk"},disk:{title:"File Disk | File Disks",description:"By default, InvoiceShelf will use your local disk for saving backups, avatar and other image files. You can configure more than one disk drivers like DigitalOcean, S3 and Dropbox according to your preference.",created_at:"created at",dropbox:"dropbox",name:"Name",driver:"Driver",disk_type:"Type",disk_name:"Disk Name",new_disk:"Add New Disk",filesystem_driver:"Filesystem Driver",local_driver:"local Driver",local_root:"local Root",public_driver:"Public Driver",public_root:"Public Root",public_url:"Public URL",public_visibility:"Public Visibility",media_driver:"Media Driver",media_root:"Media Root",aws_driver:"AWS Driver",aws_key:"AWS Key",aws_secret:"AWS Secret",aws_region:"AWS Region",aws_bucket:"AWS Bucket",aws_root:"AWS Root",do_spaces_type:"Do Spaces type",do_spaces_key:"Do Spaces key",do_spaces_secret:"Do Spaces Secret",do_spaces_region:"Do Spaces Region",do_spaces_bucket:"Do Spaces Bucket",do_spaces_endpoint:"Do Spaces Endpoint",do_spaces_root:"Do Spaces Root",dropbox_type:"Dropbox Type",dropbox_token:"Dropbox Token",dropbox_key:"Dropbox Key",dropbox_secret:"Dropbox Secret",dropbox_app:"Dropbox App",dropbox_root:"Dropbox Root",default_driver:"Default Driver",is_default:"IR NOKLUSĒJAMS",set_default_disk:"Iestatiet noklusējuma disku",set_default_disk_confirm:"This disk will be set as default and all the new PDFs will be saved on this disk",success_set_default_disk:"Disks ir veiksmīgi iestatīts kā noklusējums",save_pdf_to_disk:"Saglabāt PDF uz diska",disk_setting_description:" Iespējot šo, ja vēlaties lai katru rēķina, aprēķina un maksājuma izdrukas PDF kopiju saglabātu diskā. Šī opcija samazinās ielādēšanas laiku, kad apskatīsiet PDF.",select_disk:"Izvēlieties disku",disk_settings:"Diska uzstādījumi",confirm_delete:"Jūsu esošie faili un mapes norādītajā diskā netiks ietekmēti, bet diska konfigurācija tiks izdzēsta no InvoiceShelf sistēmas",action:"Darbība",edit_file_disk:"Labot failu disku",success_create:"Disks tika pievienots veiksmīgi",success_update:"Disks atjaunināts veiksmīgi",error:"Diska pievienošanas kļūda",deleted_message:"Failu disks veiksmīgi izdzēsts",disk_variables_save_successfully:"Disks konfigurēts veiksmīgi",disk_variables_save_error:"Diska konfigurācija neveiksmīga.",invalid_disk_credentials:"Nepareizi pieejas dati atzīmētajam diskam"},taxations:{add_billing_address:"Enter Billing Address",add_shipping_address:"Enter Shipping Address",add_company_address:"Enter Company Address",modal_description:"The information below is required in order to fetch sales tax.",add_address:"Add Address for fetching sales tax.",address_placeholder:"Example: 123, My Street",city_placeholder:"Example: Los Angeles",state_placeholder:"Example: CA",zip_placeholder:"Example: 90024",invalid_address:"Please provide valid address details."}},Jee={account_info:"Konta informācija",account_info_desc:"Zemāk sniegtā informācija tiks izmantota galvenā administratora konta izveidei. Jūs varēsiet mainīt informāciju jebkurā laikā pēc ielogošanās.",name:"Vārds",email:"E-pasts",password:"Parole",confirm_password:"Apstipriniet paroli",save_cont:"Saglabāt un turpināt",company_info:"Uzņēmuma informācija",company_info_desc:"Šī informācija tiks parādīta rēķinos. Ņemiet vērā, ka vēlāk to var rediģēt iestatījumu lapā.",company_name:"Uzņēmuma nosaukums",company_logo:"Uzņēmuma logo",logo_preview:"Logo",preferences:"Iestatījumi",preferences_desc:"Noklusējamie iestatījumi sistēmai.",currency_set_alert:"The company's currency cannot be changed later.",country:"Valsts",state:"Reģions",city:"Pilsēta",address:"Adrese",street:"Adrese1 | Adrese2",phone:"Telefona numurs",zip_code:"Pasta indekss",go_back:"Atpakaļ",currency:"Valūta",language:"Valoda",time_zone:"Time Zone",fiscal_year:"Financial Year",date_format:"Date Format",from_address:"From Address",username:"Username",next:"Next",continue:"Continue",skip:"Skip",database:{database:"Site URL & Database",connection:"Database Connection",host:"Database Host",port:"Database Port",password:"Database Password",app_url:"App URL",app_domain:"App Domain",username:"Database Username",db_name:"Database Name",db_path:"Database Path",desc:"Create a database on your server and set the credentials using the form below."},permissions:{permissions:"Permissions",permission_confirm_title:"Are you sure you want to continue?",permission_confirm_desc:"Folder permission check failed",permission_desc:"Below is the list of folder permissions which are required in order for the app to work. If the permission check fails, make sure to update your folder permissions."},verify_domain:{title:"Domain Verification",desc:"InvoiceShelf uses Session based authentication which requires domain verification for security purposes. Please enter the domain on which you will be accessing your web application.",app_domain:"App Domain",verify_now:"Verify Now",success:"Domain Verify Successfully.",failed:"Domain verification failed. Please enter valid domain name.",verify_and_continue:"Verify And Continue"},mail:{host:"Mail Host",port:"Mail Port",driver:"Mail Driver",secret:"Secret",mailgun_secret:"Mailgun Secret",mailgun_domain:"Domain",mailgun_endpoint:"Mailgun Endpoint",ses_secret:"SES Secret",ses_key:"SES Key",password:"Mail Password",username:"Mail Username",mail_config:"Mail Configuration",from_name:"From Mail Name",from_mail:"From Mail Address",encryption:"Mail Encryption",mail_config_desc:"Below is the form for Configuring Email driver for sending emails from the app. You can also configure third party providers like Sendgrid, SES etc."},req:{system_req:"System Requirements",php_req_version:"Php (version {version} required)",check_req:"Pārbaudīt prasības",system_req_desc:"InvoiceShelf sistēmai ir dažas servera prasības. Pārliecinieties, ka jūsu serverim ir vajadzīgā php versija un visi tālāk minētie paplašinājumi."},errors:{migrate_failed:"Migrācija neizdevās",database_variables_save_error:"Nevarēja konfigurēt .env failu. Lūdzu pārbaudiet faila pieejas",mail_variables_save_error:"E-pasta konfigurācija neveiksmīga.",connection_failed:"Datubāzes savienojums neveiksmīgs",database_should_be_empty:"Datubāzei jābūt tukšai"},success:{mail_variables_save_successfully:"E-pasts konfigurēts veiksmīgi",database_variables_save_successfully:"Database configured successfully."}},Xee={invalid_phone:"Invalid Phone Number",invalid_url:"Invalid url (ex: http://www.invoiceshelf.com)",invalid_domain_url:"Invalid url (ex: invoiceshelf.com)",required:"Field is required",email_incorrect:"Incorrect Email.",email_already_taken:"The email has already been taken.",email_does_not_exist:"User with given email doesn't exist",item_unit_already_taken:"This item unit name has already been taken",payment_mode_already_taken:"This payment mode name has already been taken",send_reset_link:"Send Reset Link",not_yet:"Not yet? Send it again",password_min_length:"Password must contain {count} characters",name_min_length:"Name must have at least {count} letters.",prefix_min_length:"Prefix must have at least {count} letters.",enter_valid_tax_rate:"Enter valid tax rate",numbers_only:"Numbers Only.",characters_only:"Characters Only.",password_incorrect:"Passwords must be identical",password_length:"Password must be {count} character long.",qty_must_greater_than_zero:"Quantity must be greater than zero.",price_greater_than_zero:"Price must be greater than zero.",payment_greater_than_zero:"Payment must be greater than zero.",payment_greater_than_due_amount:"Entered Payment is more than due amount of this invoice.",quantity_maxlength:"Quantity should not be greater than 20 digits.",price_maxlength:"Price should not be greater than 20 digits.",price_minvalue:"Price should be greater than 0.",amount_maxlength:"Amount should not be greater than 20 digits.",amount_minvalue:"Amount should be greater than 0.",discount_maxlength:"Discount should not be greater than max discount",description_maxlength:"Description should not be greater than 255 characters.",subject_maxlength:"Subject should not be greater than 100 characters.",message_maxlength:"Message should not be greater than 255 characters.",maximum_options_error:"Maximum of {max} options selected. First remove a selected option to select another.",notes_maxlength:"Notes should not be greater than 255 characters.",address_maxlength:"Address should not be greater than 255 characters.",ref_number_maxlength:"Ref Number should not be greater than 255 characters.",prefix_maxlength:"Prefix should not be greater than 5 characters.",something_went_wrong:"something went wrong",number_length_minvalue:"Number length should be greater than 0",at_least_one_ability:"Please select atleast one Permission.",valid_driver_key:"Please enter a valid {driver} key.",valid_exchange_rate:"Please enter a valid exchange rate.",company_name_not_same:"Company name must match with given name."},ete={starter_plan:"This feature is available on Starter plan and onwards!",invalid_provider_key:"Please Enter Valid Provider API Key.",estimate_number_used:"The estimate number has already been taken.",invoice_number_used:"The invoice number has already been taken.",payment_attached:"This invoice already has a payment attached to it. Make sure to delete the attached payments first in order to go ahead with the removal.",payment_number_used:"The payment number has already been taken.",name_already_taken:"The name has already been taken.",receipt_does_not_exist:"Receipt does not exist.",customer_cannot_be_changed_after_payment_is_added:"Customer cannot be change after payment is added",invalid_credentials:"Invalid Credentials.",not_allowed:"Not Allowed",login_invalid_credentials:"These credentials do not match our records.",enter_valid_cron_format:"Please enter a valid cron format",email_could_not_be_sent:"Email could not be sent to this email address.",invalid_address:"Please enter a valid address.",invalid_key:"Please enter valid key.",invalid_state:"Please enter a valid state.",invalid_city:"Please enter a valid city.",invalid_postal_code:"Please enter a valid zip.",invalid_format:"Please enter valid query string format.",api_error:"Server not responding.",feature_not_enabled:"Feature not enabled.",request_limit_met:"Api request limit exceeded.",address_incomplete:"Incomplete Address"},tte="Aprēķins",ate="Aprēķina numurs",nte="Aprēķina datums",ite="Derīgs līdz",ote="Rēķins",rte="Rēķina numurs",ste="Rēķina datums",lte="Apmaksas termiņš",cte="Notes",dte="Nosaukums",ute="Daudzums",_te="Cena",mte="Atlaide",pte="Summa",fte="Starpsumma",hte="Kopā",gte="Payment",vte="MAKSĀJUMA IZDRUKA",yte="Maksājuma datums",bte="Maksājuma numurs",kte="Apmaksas veids",wte="Saņemtā summa",xte="IZDEVUMU ATSKAITE",Dte="KOPĀ IZDEVUMI",Ste="PEĻŅAS & IZDEVUMU ATSKAITE",zte="Sales Customer Report",Pte="Sales Item Report",Ete="Tax Summary Report",Ate="IENĀKUMI",Cte="PEĻŅA",jte="Atskaite par pārdoto: Pēc lietotāja",Tte="KOPĀ PĀRDOTAIS",Ite="Atskaite par pārdoto: Pēc preces/pakalpojuma",Nte="NODOKĻU ATSKAITE",Fte="NODOKĻI KOPĀ",Mte="Nodokļu veidi",Rte="Izdevumi",Ote="Saņēmējs,",$te="Piegādes adrese,",Lte="Saņemts no:",Bte="Tax",Ute={navigation:Iee,general:Nee,dashboard:Fee,tax_types:Mee,global_search:Ree,company_switcher:Oee,dateRange:$ee,customers:Lee,items:Bee,estimates:Uee,invoices:Vee,recurring_invoices:qee,payments:Hee,expenses:Wee,login:Kee,modules:Yee,users:Zee,reports:Gee,settings:Qee,wizard:Jee,validation:Xee,errors:ete,pdf_estimate_label:tte,pdf_estimate_number:ate,pdf_estimate_date:nte,pdf_estimate_expire_date:ite,pdf_invoice_label:ote,pdf_invoice_number:rte,pdf_invoice_date:ste,pdf_invoice_due_date:lte,pdf_notes:cte,pdf_items_label:dte,pdf_quantity_label:ute,pdf_price_label:_te,pdf_discount_label:mte,pdf_amount_label:pte,pdf_subtotal:fte,pdf_total:hte,pdf_payment_label:gte,pdf_payment_receipt_label:vte,pdf_payment_date:yte,pdf_payment_number:bte,pdf_payment_mode:kte,pdf_payment_amount_received_label:wte,pdf_expense_report_label:xte,pdf_total_expenses_label:Dte,pdf_profit_loss_label:Ste,pdf_sales_customers_label:zte,pdf_sales_items_label:Pte,pdf_tax_summery_label:Ete,pdf_income_label:Ate,pdf_net_profit_label:Cte,pdf_customer_sales_report:jte,pdf_total_sales_label:Tte,pdf_item_sales_label:Ite,pdf_tax_report_label:Nte,pdf_total_tax_label:Fte,pdf_tax_types_label:Mte,pdf_expenses_label:Rte,pdf_bill_to:Ote,pdf_ship_to:$te,pdf_received_from:Lte,pdf_tax_label:Bte},Vte={dashboard:"Översikt",customers:"Kunder",items:"Artiklar",invoices:"Fakturor","recurring-invoices":"Återkommande fakturor",expenses:"Utgifter",estimates:"Kostnadsförslag",payments:"Betalningar",reports:"Rapporter",settings:"Inställningar",logout:"Logga ut",users:"Användare",modules:"Modules"},qte={add_company:"Skapa företag",view_pdf:"Visa PDF",copy_pdf_url:"Kopiera adress till PDF",download_pdf:"Ladda ner PDF",save:"Spara",create:"Skapa",cancel:"Avbryt",update:"Uppdatera",deselect:"Avmarkera",download:"Ladda ner",from_date:"Från datum",to_date:"Till datum",from:"Från",to:"Till",ok:"Ok",yes:"Ja",no:"Nej",sort_by:"Sortera på",ascending:"Stigande",descending:"Fallande",subject:"Ämne",body:"Innehåll",message:"Meddelande",send:"Skicka",preview:"Förhandsgranska",go_back:"Tillbaka",back_to_login:"Till inloggningssidan?",home:"Hem",filter:"Filter",delete:"Ta bort",edit:"Editera",view:"Visa",add_new_item:"Skapa artikel",clear_all:"Rensa alla",showing:"Visar",of:"av",actions:"Funktioner",subtotal:"DELSUMMA",discount:"RABATT",fixed:"Fast",percentage:"Procent",tax:"MOMS",total_amount:"TOTALSUMMA",bill_to:"Faktureras till",ship_to:"Levereras till",due:"Förfallen",draft:"Förslag",sent:"Skickat",all:"Alla",select_all:"Välj alla",select_template:"Välj mall",choose_file:"Klicka här för att välja fil",choose_template:"Välj mall",choose:"Välj",remove:"Ta bort",select_a_status:"Välj status",select_a_tax:"Välj moms",search:"Sök",are_you_sure:"Är du säker?",list_is_empty:"Listan är tom.",no_tax_found:"Hittade inte moms!",four_zero_four:"404",you_got_lost:"Hoppsan! Nu är du vilse!",go_home:"Gå hem",test_mail_conf:"Testa epostinställningar",send_mail_successfully:"Lyckades skicka epost",setting_updated:"Inställningar uppdaterades",select_state:"Välj kommun",select_country:"Välj land",select_city:"Välj stad",street_1:"Gatuadress 1",street_2:"Gatuadress 2",action_failed:"Försök misslyckades",retry:"Försök igen",choose_note:"Välj notering",no_note_found:"Inga noteringar hittades",insert_note:"Lägg till notering",copied_pdf_url_clipboard:"Url till PDF kopierades till urklipp!",copied_url_clipboard:"Copied url to clipboard!",docs:"Dokumentation",do_you_wish_to_continue:"Vill du fortsätta?",note:"Notering",pay_invoice:"Pay Invoice",login_successfully:"Logged in successfully!",logged_out_successfully:"Logged out successfully",mark_as_default:"Mark as default"},Hte={select_year:"Välj år",cards:{due_amount:"Förfallet belopp",customers:"Kunder",invoices:"Fakturor",estimates:"Kostnadsförslag",payments:"Payments"},chart_info:{total_sales:"Försäljning",total_receipts:"Kvitton",total_expense:"Utgifter",net_income:"Nettoinkomst",year:"Välj år"},monthly_chart:{title:"Försäljning och utgifter"},recent_invoices_card:{title:"Förfallna fakturor",due_on:"Förfaller den",customer:"Kund",amount_due:"Förfallet belopp",actions:"Handlingar",view_all:"Visa alla"},recent_estimate_card:{title:"Senaste kostnadsförslag",date:"Datum",customer:"Kund",amount_due:"Förfallet belopp",actions:"Handlingar",view_all:"Visa alla"}},Wte={name:"Namn",description:"Beskrivning",percent:"Provent",compound_tax:"Sammansatt moms"},Kte={search:"Sök...",customers:"Kunder",users:"Användare",no_results_found:"Hittade inga resultat"},Yte={label:"Byt företag",no_results_found:"Inga resultat hittades",add_new_company:"Lägg till nytt företag",new_company:"Nytt företag",created_message:"Företaget har skapats"},Zte={today:"Idag",this_week:"Denna vecka",this_month:"Denna månad",this_quarter:"Detta kvartal",this_year:"I år",previous_week:"Föregående vecka",previous_month:"Föregående månad",previous_quarter:"Föregående kvartal",previous_year:"Föregående år",custom:"Anpassad"},Gte={title:"Kunder",prefix:"Prefix",add_customer:"Lägg till kund",contacts_list:"Kundlista",name:"Namn",mail:"Epost | Epost",statement:"Påstående",display_name:"Visningsnamn",primary_contact_name:"Primär kontakts namn",contact_name:"Kontaktnamn",amount_due:"Förfallet belopp",email:"Epost",address:"Adress",phone:"Telefon",website:"Hemsida",overview:"Översikt",invoice_prefix:"Prefix för fakturor",estimate_prefix:"Prefix för kostnadsförslag",payment_prefix:"Prefix för betalningar",enable_portal:"Aktivera portal",country:"Land",state:"Kommun",city:"Stad",zip_code:"Postnummer",added_on:"Tillagd den",action:"Handling",password:"Lösenord",confirm_password:"Bekräfta lösenord",street_number:"Gatnummer",primary_currency:"Huvudvaluta",description:"Beskrivning",add_new_customer:"Lägg till ny kund",save_customer:"Spara kund",update_customer:"Uppdatera kund",customer:"Kund | Kunder",new_customer:"Ny kund",edit_customer:"Ändra kund",basic_info:"Information",portal_access:"Portal Access",portal_access_text:"Would you like to allow this customer to login to the Customer Portal?",portal_access_url:"Customer Portal Login URL",portal_access_url_help:"Please copy & forward the above given URL to your customer for providing access.",billing_address:"Fakturaadress",shipping_address:"Leveransadress",copy_billing_address:"Kopiera från faktura",no_customers:"Inga kunder än!",no_customers_found:"Hittade inga kunder!",no_contact:"Inga kontakter",no_contact_name:"Kontaktnamn",list_of_customers:"Här kommer det finnas en lista med kunder.",primary_display_name:"Visningsnamn",select_currency:"Välj valuta",select_a_customer:"Välj kund",type_or_click:"Skriv eller klicka för att välja",new_transaction:"Ny transaktion",no_matching_customers:"Matchade inte med någon kund!",phone_number:"Telefonnummer",create_date:"Skapandedatum",confirm_delete:"Du kommer inte kunna återställa denna kund eller några relaterade fakturor, kostnadsförslag eller betalningar. | Du kommer inte kunna återställa dessa kunder eller några relaterade fakturor, kostnadsförslag eller betalningar.",created_message:"Kund skapades",updated_message:"Kund uppdaterades",address_updated_message:"Address Information Updated succesfully",deleted_message:"Kund raderades | Kunder raderades",edit_currency_not_allowed:"Kan inte ändra valuta när transaktioner har skapats."},Qte={title:"Artiklar",items_list:"Artikellista",name:"Namn",unit:"Enhet",description:"Beskrivning",added_on:"Tillagd den",price:"Pris",date_of_creation:"Skapandedatum",not_selected:"Inga poster valda",action:"Handling",add_item:"Skapa artikel",save_item:"Spara artikel",update_item:"Uppdatera artiklar",item:"Artikel | Artiklar",add_new_item:"Skapa ny artikel",new_item:"Ny artikel",edit_item:"Ändra artikel",no_items:"Inga artiklar än!",list_of_items:"Här kommer lista över artiklar vara.",select_a_unit:"välj enhet",taxes:"Moms",item_attached_message:"Kan inte radera en artikel som används",confirm_delete:"Du kommer inte kunna återställa denna artikel | Du kommer inte kunna återställa dessa artiklar",created_message:"Artikel skapades",updated_message:"Artikel uppdaterades",deleted_message:"Artikel raderades | Artiklar raderades"},Jte={title:"Kostnadsförslag",accept_estimate:"Accept Estimate",reject_estimate:"Reject Estimate",estimate:"Kostnadsförslag | Kostnadsförslag",estimates_list:"Lista med kostnadsförslag",days:"{days} dagar",months:"{months} månader",years:"{years} år",all:"Alla",paid:"Betalda",unpaid:"Obetalda",customer:"KUND",ref_no:"REF NR.",number:"NUMMER",amount_due:"FÖRFALLET BELOPP",partially_paid:"Delbetald",total:"Summa",discount:"Rabatt",sub_total:"Delsumma",estimate_number:"Kostnadsförslagsnummer",ref_number:"Ref Nummer",contact:"Kontakt",add_item:"Lägg till artikel",date:"Datum",due_date:"Förfallodatum",expiry_date:"Utgångsdatum",status:"Status",add_tax:"Lägg till moms",amount:"Belopp",action:"Handling",notes:"Noteringar",tax:"Moms",estimate_template:"Mall",convert_to_invoice:"Konvertera till faktura",mark_as_sent:"Markerade som skickad",send_estimate:"Skicka kostnadsförslag",resend_estimate:"Skicka kostnadsförslag igen",record_payment:"Registrera betalning",add_estimate:"Lägg till kostnadsförslag",save_estimate:"Spara kostnadsförslag",confirm_conversion:"Detta kostnadsförslag används för att skapa ny faktura.",conversion_message:"Faktura skapades",confirm_send_estimate:"Detta kostnadsförslag skickas via epost till kund",confirm_mark_as_sent:"Detta kostnadsförslag markeras som skickat",confirm_mark_as_accepted:"Detta kostnadsförslag markeras som accepterad",confirm_mark_as_rejected:"Detta kostnadsförslag markeras som avvisad",no_matching_estimates:"Inga matchande kostnadsförslag!",mark_as_sent_successfully:"Kostnadsförslag markerat som skickat",send_estimate_successfully:"Kostnadsförslag skickades",errors:{required:"Fältet är tvingande"},accepted:"Accepterad",rejected:"Avvisad",expired:"Expired",sent:"Skickat",draft:"Utkast",viewed:"Viewed",declined:"Avvisad",new_estimate:"Nytt kostnadsförslag",add_new_estimate:"Skapa nytt kostnadsförslag",update_Estimate:"Uppdatera kostnadsförslag",edit_estimate:"Ändra kostnadsförslag",items:"artiklar",Estimate:"Kostnadsförslag | Kostnadsförslag",add_new_tax:"Skapa ny momssats",no_estimates:"Inga kostnadsförslag än!",list_of_estimates:"Här kommer det finnas kostnadsförslag.",mark_as_rejected:"Markera som avvisad",mark_as_accepted:"Markera som godkänd",marked_as_accepted_message:"Kostnadsförslag markerad som godkänd",marked_as_rejected_message:"Kostnadsförslag markerad som avvisad",confirm_delete:"Du kommer inte kunna återställa detta kostnadsförslag | Du kommer inte kunna återställa dessa kostnadsförslag",created_message:"Kostnadsförslag skapades",updated_message:"Kostnadsförslag ändrades",deleted_message:"Kostnadsförslag raderades | Kostnadsförslag raderades",something_went_wrong:"något gick fel",item:{title:"Artikelnamn",description:"Beskrivning",quantity:"Antal",price:"Pris",discount:"Rabatt",total:"Summa",total_discount:"Rabattsumma",sub_total:"Delsumma",tax:"Moms",amount:"Summa",select_an_item:"Skriv eller klicka för att välja artikel",type_item_description:"Skriv in artikelns beskrivning (frivilligt)"},mark_as_default_estimate_template_description:"If enabled, the selected template will be automatically selected for new estimates."},Xte={title:"Fakturor",download:"Download",pay_invoice:"Pay Invoice",invoices_list:"Fakturor",invoice_information:"Invoice Information",days:"{days} dagar",months:"{months} månader",years:"{years} år",all:"Alla",paid:"Betalda",unpaid:"Obetalda",viewed:"Visade",overdue:"Förfallna",completed:"Slutförda",customer:"KUNDER",paid_status:"BETALSTATUS",ref_no:"REF NR.",number:"NUMMER",amount_due:"FÖRFALLET BELOPP",partially_paid:"Delbetald",total:"Summa",discount:"Rabatt",sub_total:"Delsumma",invoice:"Faktura | Fakturor",invoice_number:"Fakturanummer",ref_number:"Ref Nummer",contact:"Kontakt",add_item:"Lägg till artikel",date:"Datum",due_date:"Förfallodatum",status:"Status",add_tax:"Lägg till moms",amount:"Summa",action:"Handling",notes:"Noteringar",view:"Visa",send_invoice:"Skicka faktura",resend_invoice:"Skicka faktura igen",invoice_template:"Fakturamall",conversion_message:"Fakturan kopierades",template:"Mall",mark_as_sent:"Markera som skickad",confirm_send_invoice:"Denna faktura skickas via epost till kunden",invoice_mark_as_sent:"Denna faktura markeras som skickad",confirm_mark_as_accepted:"Denna faktura kommer att markeras som Godkänd",confirm_mark_as_rejected:"Denna faktura kommer att markeras som Avvisad",confirm_send:"Denna faktura skickas via epost till kunden",invoice_date:"Fakturadatum",record_payment:"Registrera betalning",add_new_invoice:"Lägg till ny faktura",update_expense:"Ändra utgifter",edit_invoice:"Editera faktura",new_invoice:"Ny faktura",save_invoice:"Spara faktura",update_invoice:"Uppdatera faktura",add_new_tax:"Lägg till ny momssats",no_invoices:"Inga fakturor än!",mark_as_rejected:"Markera som avvisad",mark_as_accepted:"Markera som godkänd",list_of_invoices:"Här kommer det vara en lista med fakturor.",select_invoice:"Välj faktura",no_matching_invoices:"Inga matchande fakturor!",mark_as_sent_successfully:"Fakturans status ändrad till skickad",invoice_sent_successfully:"Fakturan skickades",cloned_successfully:"Fakturan kopierades",clone_invoice:"Kopiera faktura",confirm_clone:"Denna faktura kopieras till en ny faktura",item:{title:"Artikelnamn",description:"Beskvirning",quantity:"Antal",price:"Pris",discount:"Rabatt",total:"Summa",total_discount:"Totalsumma",sub_total:"Delsumma",tax:"Moms",amount:"Summa",select_an_item:"Skriv eller klicka för att välja artikel",type_item_description:"Artikeltypsbeskrivning (frivillig)"},payment_attached_message:"En av dom valda fakturorna har redan en betalning kopplad till sig. Du måste radera dom kopplade betalningarna först för att kunna fortsätta raderingen",confirm_delete:"Du kommer inte kunna återställa denna faktura | Du kommer inte kunna återställa dessa fakturor",created_message:"Faktura skapades",updated_message:"Faktura uppdaterades",deleted_message:"Faktura raderades | fakturor raderades",marked_as_sent_message:"Faktura markerad som skickad",something_went_wrong:"något blev fel",invalid_due_amount_message:"Totalsumman för fakturan kan inte vara lägra än den betalda summan. Vänligen uppdatera fakturan eller radera dom kopplade betalningarna.",mark_as_default_invoice_template_description:"If enabled, the selected template will be automatically selected for new invoices."},eae={title:"Återkommande fakturor",invoices_list:"Återkommande fakturor",days:"{days} Dagar",months:"{months} Månader",years:"{years} År",all:"Alla",paid:"Betalda",unpaid:"Obetalda",viewed:"Visade",overdue:"Försenade",active:"Aktiva",completed:"Slutförda",customer:"KUND",paid_status:"BETALSTATUS",ref_no:"REF NR.",number:"NUMMER",amount_due:"FÖRFALLET BELOPP",partially_paid:"Delbetald",total:"Summa",discount:"Rabatt",sub_total:"Delsumma",invoice:"Recurring Invoice | Recurring Invoices",invoice_number:"Recurring Invoice Number",next_invoice_date:"Next Invoice Date",ref_number:"Ref Number",contact:"Contact",add_item:"Add an Item",date:"Date",limit_by:"Limit by",limit_date:"Limit Date",limit_count:"Limit Count",count:"Count",status:"Status",select_a_status:"Select a status",working:"Working",on_hold:"On Hold",complete:"Completed",add_tax:"Add Tax",amount:"Amount",action:"Action",notes:"Notes",view:"View",basic_info:"Basic Info",send_invoice:"Send Recurring Invoice",auto_send:"Auto Send",resend_invoice:"Resend Recurring Invoice",invoice_template:"Recurring Invoice Template",conversion_message:"Recurring Invoice cloned successful",template:"Template",mark_as_sent:"Mark as sent",confirm_send_invoice:"This recurring invoice will be sent via email to the customer",invoice_mark_as_sent:"This recurring invoice will be marked as sent",confirm_send:"This recurring invoice will be sent via email to the customer",starts_at:"Start Date",due_date:"Invoice Due Date",record_payment:"Record Payment",add_new_invoice:"Add New Recurring Invoice",update_expense:"Update Expense",edit_invoice:"Edit Recurring Invoice",new_invoice:"New Recurring Invoice",send_automatically:"Send Automatically",send_automatically_desc:"Enable this, if you would like to send the invoice automatically to the customer when its created.",save_invoice:"Save Recurring Invoice",update_invoice:"Update Recurring Invoice",add_new_tax:"Add New Tax",no_invoices:"No Recurring Invoices yet!",mark_as_rejected:"Mark as rejected",mark_as_accepted:"Mark as accepted",list_of_invoices:"This section will contain the list of recurring invoices.",select_invoice:"Select Invoice",no_matching_invoices:"There are no matching recurring invoices!",mark_as_sent_successfully:"Recurring Invoice marked as sent successfully",invoice_sent_successfully:"Recurring Invoice sent successfully",cloned_successfully:"Recurring Invoice cloned successfully",clone_invoice:"Clone Recurring Invoice",confirm_clone:"This recurring invoice will be cloned into a new Recurring Invoice",add_customer_email:"Please add an email address for this customer to send invoices automatically.",item:{title:"Item Title",description:"Description",quantity:"Quantity",price:"Price",discount:"Discount",total:"Total",total_discount:"Total Discount",sub_total:"Sub Total",tax:"Tax",amount:"Amount",select_an_item:"Type or click to select an item",type_item_description:"Type Item Description (optional)"},frequency:{title:"Frequency",select_frequency:"Select Frequency",minute:"Minute",hour:"Hour",day_month:"Day of month",month:"Month",day_week:"Day of week"},confirm_delete:"You will not be able to recover this Invoice | You will not be able to recover these Invoices",created_message:"Recurring Invoice created successfully",updated_message:"Recurring Invoice updated successfully",deleted_message:"Recurring Invoice deleted successfully | Recurring Invoices deleted successfully",marked_as_sent_message:"Recurring Invoice marked as sent successfully",user_email_does_not_exist:"User email does not exist",something_went_wrong:"something went wrong",invalid_due_amount_message:"Total Recurring Invoice amount cannot be less than total paid amount for this Recurring Invoice. Please update the invoice or delete the associated payments to continue."},tae={title:"Betalningar",payments_list:"Lista med betalningar",record_payment:"Registrera betalning",customer:"Kund",date:"Datum",amount:"Summa",action:"Handling",payment_number:"Betalningsnummer",payment_mode:"Betalningssätt",invoice:"Faktura",note:"Notering",add_payment:"Skapa betalning",new_payment:"Ny betalning",edit_payment:"Ändra betalning",view_payment:"Visa betalning",add_new_payment:"Skapa ny betalning",send_payment_receipt:"Skicka kvitto på betalning",send_payment:"Skicka betalning",save_payment:"Spara betalning",update_payment:"Uppdatera betalning",payment:"Betalning | Betalningar",no_payments:"Inga betalningar än!",not_selected:"Ej markerad",no_invoice:"Ingen faktura",no_matching_payments:"Inga matchande betalningar!",list_of_payments:"Här kommer listan med betalningar finnas.",select_payment_mode:"Välj betalningssätt",confirm_mark_as_sent:"Detta kostnadsförslag markeras som skickat",confirm_send_payment:"Denna betalning skickas till kunden via epost",send_payment_successfully:"Betalningen skickades",something_went_wrong:"något gick fel",confirm_delete:"Du kommer inte kunna återställa denna betalning | Du kommer inte kunna återställa dessa betalningar",created_message:"Betalning skapades",updated_message:"Betalning uppdaterades",deleted_message:"Betalning raderades | Betalningar raderades",invalid_amount_message:"Betalsumman är ogiltig"},aae={title:"Utgifter",expenses_list:"Lista med utgifter",select_a_customer:"Välj en kund",expense_title:"Titel",customer:"Kund",currency:"Currency",contact:"Kontakt",category:"Kategori",from_date:"Från datum",to_date:"Till datum",expense_date:"Datum",description:"Beskrivning",receipt:"Kvitto",amount:"Summa",action:"Handling",not_selected:"Ej markerad",note:"Notering",category_id:"Kategorins ID",date:"Datum",add_expense:"Lägg till utgift",add_new_expense:"Lägg till ny utgift",save_expense:"Spara utgift",update_expense:"Uppdatera utgift",download_receipt:"Ladda ner kvitto",edit_expense:"Ändra utgift",new_expense:"Ny utgift",expense:"Utgift | Utgifter",no_expenses:"Inga utgifter än!",list_of_expenses:"Här kommer utgifterna finnas.",confirm_delete:"Du kommer inte kunna återställa denna utgift | Du kommer inte kunna återställa dessa utgifter",created_message:"Utgift skapades",updated_message:"Utgift ändrades",deleted_message:"Utgift raderades | utgifterna raderades",categories:{categories_list:"Kategorier",title:"Titel",name:"Namn",description:"Beskrivning",amount:"Summa",actions:"Handlingar",add_category:"Lägg till kategori",new_category:"Ny kategori",category:"Kategori | Kategorier",select_a_category:"Välj en kategori"}},nae={email:"Epost",password:"Lösenord",forgot_password:"Glömt lösenord?",or_signIn_with:"eller logga in med",login:"Logga in",register:"Registrera",reset_password:"Återställ lösenord",password_reset_successfully:"Lösenord återställt",enter_email:"Skriv in epost",enter_password:"Skriv in lösenord",retype_password:"Skriv lösenordet igen"},iae={buy_now:"Buy Now",install:"Install",price:"Price",download_zip_file:"Download ZIP file",unzipping_package:"Unzipping Package",copying_files:"Copying Files",deleting_files:"Deleting Unused files",completing_installation:"Completing Installation",update_failed:"Update Failed",install_success:"Module has been installed successfully!",customer_reviews:"Reviews",license:"License",faq:"FAQ",monthly:"Monthly",yearly:"Yearly",updated:"Updated",version:"Version",disable:"Disable",module_disabled:"Module Disabled",enable:"Enable",module_enabled:"Module Enabled",update_to:"Update To",module_updated:"Module Updated Successfully!",title:"Modules",module:"Module | Modules",api_token:"API token",invalid_api_token:"Invalid API Token.",other_modules:"Other Modules",view_all:"View All",no_reviews_found:"There are no reviews for this module yet!",module_not_purchased:"Module Not Purchased",module_not_found:"Module Not Found",version_not_supported:"This module version doesn't support the current version of InvoiceShelf",last_updated:"Last Updated On",connect_installation:"Connect your installation",api_token_description:"Login to {url} and connect this installation by entering the API Token. Your purchased modules will show up here after the connection is established.",view_module:"View Module",update_available:"Update Available",purchased:"Purchased",installed:"Installed",no_modules_installed:"No Modules Installed Yet!",disable_warning:"All the settings for this particular will be reverted.",what_you_get:"What you get"},oae={title:"Användare",users_list:"Användare",name:"Namn",description:"Beskrivning",added_on:"Tillagd den",date_of_creation:"Datum skapad",action:"Handling",add_user:"Lägg till användare",save_user:"Spara användare",update_user:"Uppdatera användare",user:"Användare | Användare",add_new_user:"Lägg till ny användare",new_user:"Ny användare",edit_user:"Ändra användare",no_users:"Inga användare än!",list_of_users:"Här kommer man se alla användare.",email:"Epost",phone:"Telefon",password:"Lösenord",user_attached_message:"Kan inte ta bort ett objeckt som används",confirm_delete:"Du kommer inte kunna återställa denna användare | Du kommer inte kunna återställa dessa användare",created_message:"Användare skapades",updated_message:"Användare uppdaterades",deleted_message:"Användaren raderades | Användarna raderades",select_company_role:"Select Role for {company}",companies:"Companies"},rae={title:"Rapport",from_date:"Från datum",to_date:"Till datum",status:"Status",paid:"Betald",unpaid:"Obetald",download_pdf:"Ladda ner PDF",view_pdf:"Visa PDF",update_report:"Uppdatera rapport",report:"Rapport | Rapporter",profit_loss:{profit_loss:"Inkomst och utgifter",to_date:"Till datum",from_date:"Från datum",date_range:"Välj datumintervall"},sales:{sales:"Försäljningar",date_range:"Välj datumintervall",to_date:"Till datum",from_date:"Från datum",report_type:"Rapporttyp"},taxes:{taxes:"Momssatser",to_date:"Till datum",from_date:"Från datum",date_range:"Välj datumintervall"},errors:{required:"Fältet är tvingande"},invoices:{invoice:"Faktura",invoice_date:"Fakturadatum",due_date:"Förfallodatum",amount:"Summa",contact_name:"Kontaktnamn",status:"Status"},estimates:{estimate:"Kostnadsförslag",estimate_date:"Kostnadsförslagsdatum",due_date:"Förfallodatum",estimate_number:"Kostnadsförslagsnummer",ref_number:"Ref Nummer",amount:"Summa",contact_name:"Kontaktnamn",status:"Status"},expenses:{expenses:"Utgifter",category:"Kategori",date:"Datum",amount:"Summa",to_date:"Till datum",from_date:"Från datum",date_range:"Välj datumintervall"}},sae={menu_title:{account_settings:"Kontoinställningar",company_information:"Företagsinformation",customization:"Anpassning",preferences:"Inställningar",notifications:"Notifieringar",tax_types:"Momssatser",expense_category:"Utgiftskategorier",update_app:"Uppdatera appen",backup:"Backup",file_disk:"File Disk",custom_fields:"Anpassade fält",payment_modes:"Betalmetoder",notes:"Noteringar",exchange_rate:"Exchange Rate",address_information:"Address Information"},address_information:{section_description:" You can update Your Address information using form below."},title:"Inställningar",setting:"Inställningar | Inställningar",general:"Allmän",language:"Språk",primary_currency:"Primär valuta",timezone:"Tidszon",date_format:"Datumformat",currencies:{title:"Valutor",currency:"Valuta | Valutor",currencies_list:"Lista med valutor",select_currency:"Välj valuta",name:"Namn",code:"Kod",symbol:"Symbol",precision:"Precision",thousand_separator:"Tusenavgränsare",decimal_separator:"Decimalavgränsare",position:"Position",position_of_symbol:"Symbolens position",right:"Höger",left:"Vänster",action:"Handling",add_currency:"Lägg till valuta"},mail:{host:"Värdadress",port:"Port",driver:"Typ",secret:"Hemlighet",mailgun_secret:"Mailgun Secret",mailgun_domain:"Domän",mailgun_endpoint:"Mailgun Endpoint",ses_secret:"SES Secret",ses_key:"SES Key",password:"Lösenord",username:"Användarnamn",mail_config:"Epostinställningar",from_name:"Från namn",from_mail:"Från adress",encryption:"Kryptering",mail_config_desc:"Nedan formulär används för att konfigurera vilket sätt som ska användar för att skicka epost. Du kan också använda tredjepartsleverantör som Sendgrid, SES o.s.v."},pdf:{title:"PDF-inställningar",footer_text:"Sidfotstext",pdf_layout:"PDF-layout"},company_info:{company_info:"Företagsinfo",company_name:"Företagsnamn",company_logo:"Företagslogga",section_description:"Information om ditt företags som kommer visas på fakturor, kostnadsförslag och andra dokument skapade av InvoiceShelf.",phone:"Telefon",country:"Land",state:"Kommun",city:"Stad",address:"Adress",zip:"Postnr",save:"Spara",delete:"Delete",updated_message:"Företagsinformation uppdaterad",delete_company:"Delete Company",delete_company_description:"Once you delete your company, you will lose all the data and files associated with it permanently.",are_you_absolutely_sure:"Are you absolutely sure?",delete_company_modal_desc:"This action cannot be undone. This will permanently delete {company} and all of its associated data.",delete_company_modal_label:"Please type {company} to confirm"},custom_fields:{title:"Anpassade fält",section_description:"Anpassa fakturor, kostnadsförslag och kvitton med dina egna fält. Använd nedanstående fält i adressforamteringen på anpassningarnas inställningssida.",add_custom_field:"Lägg till anpassat fält",edit_custom_field:"Ändra anpassade fält",field_name:"Fältnamn",label:"Etikett",type:"Typ",name:"Namn",slug:"Slug",required:"Tvingad",placeholder:"Placeholder",help_text:"Hjälptext",default_value:"Standardvärde",prefix:"Prefix",starting_number:"Startnummer",model:"Modell",help_text_description:"Skriv in text som hjälper användaren förstå vad det anpassade fältet används för.",suffix:"Suffix",yes:"Ja",no:"Nej",order:"Ordning",custom_field_confirm_delete:"Du kommer inte kunna återställa detta anpassade fält",already_in_use:"Det anpassade fältet används",deleted_message:"Det anpassade fältet raderades",options:"val",add_option:"Lägg till val",add_another_option:"Lägg till ett till val",sort_in_alphabetical_order:"Sortera i alfabetisk ordning",add_options_in_bulk:"Lägg till flera val",use_predefined_options:"Använd förinställda val",select_custom_date:"Välj anpassat datum",select_relative_date:"Välj relativt datum",ticked_by_default:"Ikryssad från start",updated_message:"Anpassat fält uppdaterades",added_message:"Anpassat fält skapat",press_enter_to_add:"Press enter to add new option",model_in_use:"Cannot update model for fields which are already in use.",type_in_use:"Cannot update type for fields which are already in use."},customization:{customization:"Anpassning",updated_message:"Företagsinformation uppdaterades",save:"Spara",insert_fields:"Insert Fields",learn_custom_format:"Learn how to use custom format",add_new_component:"Add New Component",component:"Component",Parameter:"Parameter",series:"Series",series_description:"To set a static prefix/postfix like 'INV' across your company. It supports character length of up to 6 chars.",series_param_label:"Series Value",delimiter:"Delimiter",delimiter_description:"Single character for specifying the boundary between 2 separate components. By default its set to -",delimiter_param_label:"Delimiter Value",date_format:"Date Format",date_format_description:"A local date and time field which accepts a format parameter. The default format: 'Y' renders the current year.",date_format_param_label:"Format",sequence:"Sequence",sequence_description:"Consecutive sequence of numbers across your company. You can specify the length on the given parameter.",sequence_param_label:"Sequence Length",customer_series:"Customer Series",customer_series_description:"To set a different prefix/postfix for each customer.",customer_sequence:"Customer Sequence",customer_sequence_description:"Consecutive sequence of numbers for each of your customer.",customer_sequence_param_label:"Sequence Length",random_sequence:"Random Sequence",random_sequence_description:"Random alphanumeric string. You can specify the length on the given parameter.",random_sequence_param_label:"Sequence Length",invoices:{title:"Fakturor",invoice_number_format:"Invoice Number Format",invoice_number_format_description:"Customize how your invoice number gets generated automatically when you create a new invoice.",preview_invoice_number:"Preview Invoice Number",due_date:"Due Date",due_date_description:"Specify how due date is automatically set when you create an invoice.",due_date_days:"Invoice Due after days",set_due_date_automatically:"Set Due Date Automatically",set_due_date_automatically_description:"Enable this if you wish to set due date automatically when you create a new invoice.",default_formats:"Default Formats",default_formats_description:"Below given formats are used to fill up the fields automatically on invoice creation.",default_invoice_email_body:"Standardtext för faktura",company_address_format:"Formatering av företagsadress",shipping_address_format:"Formatering av leveransadress",billing_address_format:"Formatering av fakturaadress",invoice_email_attachment:"Skicka fakturor som bilagor",invoice_email_attachment_setting_description:'Aktivera detta om du vill skicka fakturor som e-postbilaga. Observera att knappen "Visa faktura" i e-post inte längre kommer att visas när den är aktiverad.',invoice_settings_updated:"Invoice Settings updated successfully",retrospective_edits:"Retrospective Edits",allow:"Allow",disable_on_invoice_partial_paid:"Disable after partial payment is recorded",disable_on_invoice_paid:"Disable after full payment is recorded",disable_on_invoice_sent:"Disable after invoice is sent",retrospective_edits_description:" Based on your country's laws or your preference, you can restrict users from editing finalised invoices."},estimates:{title:"Kostnadsförslag",estimate_number_format:"Estimate Number Format",estimate_number_format_description:"Customize how your estimate number gets generated automatically when you create a new estimate.",preview_estimate_number:"Preview Estimate Number",expiry_date:"Expiry Date",expiry_date_description:"Specify how expiry date is automatically set when you create an estimate.",expiry_date_days:"Estimate Expires after days",set_expiry_date_automatically:"Set Expiry Date Automatically",set_expiry_date_automatically_description:"Enable this if you wish to set expiry date automatically when you create a new estimate.",default_formats:"Default Formats",default_formats_description:"Below given formats are used to fill up the fields automatically on estimate creation.",default_estimate_email_body:"Standardtext för kostnadsförslag",company_address_format:"Formatering av företagsadress",shipping_address_format:"Formatering av leveransadress",billing_address_format:"Formatering av fakturaadress",estimate_email_attachment:"Send estimates as attachments",estimate_email_attachment_setting_description:'Aktivera detta om du vill skicka offerterna som en e-postbilaga. Observera att knappen "Visa offert" i e-post inte längre kommer att visas när den är aktiverad.',estimate_settings_updated:"Estimate Settings updated successfully",convert_estimate_options:"Estimate Convert Action",convert_estimate_description:"Specify what happens to the estimate after it gets converted to an invoice.",no_action:"No action",delete_estimate:"Delete estimate",mark_estimate_as_accepted:"Mark estimate as accepted"},payments:{title:"Betalningar",payment_number_format:"Payment Number Format",payment_number_format_description:"Customize how your payment number gets generated automatically when you create a new payment.",preview_payment_number:"Preview Payment Number",default_formats:"Default Formats",default_formats_description:"Below given formats are used to fill up the fields automatically on payment creation.",default_payment_email_body:"Standardtext för betalningar",company_address_format:"Format för företagsadress",from_customer_address_format:"Format för kundens från-adress",payment_email_attachment:"Skicka betalningar som bilagor",payment_email_attachment_setting_description:'Aktivera detta om du vill skicka betalningskvitton som en e-postbilaga. Observera att knappen "Visa betalning" i e-post inte längre kommer att visas när den är aktiverad.',payment_settings_updated:"Payment Settings updated successfully"},items:{title:"Artiklar",units:"Enheter",add_item_unit:"Lägg till artikelenhet",edit_item_unit:"Editera artikelenhet",unit_name:"Enhets namn",item_unit_added:"Artikelenhet tillagd",item_unit_updated:"Artikelenhet uppdaterad",item_unit_confirm_delete:"Du kommer inte kunna återställa denna artikelenhet",already_in_use:"Artikelenhet används",deleted_message:"Artikelenhet raderades"},notes:{title:"Noteringar",description:"Spara tid genom att skapa noteringar som kan återanvändas på fakturor, betalningsförslag, och betalningar.",notes:"Noteringar",type:"Typ",add_note:"Lägg till notering",add_new_note:"Lägg till ny notering",name:"Namn",edit_note:"Editera notering",note_added:"Notering skapades",note_updated:"Notering uppdaterades",note_confirm_delete:"Du kommer inte kunna återställa denna notering",already_in_use:"Notering används",deleted_message:"Notering raderades"}},account_settings:{profile_picture:"Profilbild",name:"Namn",email:"Epost",password:"Lösenord",confirm_password:"Bekräfta lösenord",account_settings:"Kontoinställningar",save:"Spara",section_description:"Du kan uppdatera namn, epost och lösenord med hjälp av formuläret nedan.",updated_message:"Kontoinställningar uppdaterades"},user_profile:{name:"Namn",email:"Epost",password:"Lösenord",confirm_password:"Bekräfta lösenord"},notification:{title:"Notifieringar",email:"Skicka notifiering till",description:"Vilka notifieringar vill du ha via epost när något ändras?",invoice_viewed:"Faktura kollad",invoice_viewed_desc:"När din kund kollar fakturan via invoiceshelfs översikt.",estimate_viewed:"Betalförslag kollad",estimate_viewed_desc:"När din kund kollar betalförslag via invoiceshelfs översikt.",save:"Spara",email_save_message:"Epost sparades",please_enter_email:"Skriv in epostadress"},roles:{title:"Roles",description:"Manage the roles & permissions of this company",save:"Save",add_new_role:"Add New Role",role_name:"Role Name",added_on:"Added on",add_role:"Add Role",edit_role:"Edit Role",name:"Name",permission:"Permission | Permissions",select_all:"Select All",none:"None",confirm_delete:"You will not be able to recover this Role",created_message:"Role created successfully",updated_message:"Role updated successfully",deleted_message:"Role deleted successfully",already_in_use:"Role is already in use"},exchange_rate:{exchange_rate:"Exchange Rate",title:"Fix Currency Exchange issues",description:"Please enter exchange rate of all the currencies mentioned below to help InvoiceShelf properly calculate the amounts in {currency}.",drivers:"Drivers",new_driver:"Add New Provider",edit_driver:"Edit Provider",select_driver:"Select Driver",update:"select exchange rate ",providers_description:"Configure your exchange rate providers here to automatically fetch the latest exchange rate on transactions.",key:"API Key",name:"Name",driver:"Driver",is_default:"IS DEFAULT",currency:"Currencies",exchange_rate_confirm_delete:"You will not be able to recover this driver",created_message:"Provider Created successfully",updated_message:"Provider Updated Successfully",deleted_message:"Provider Deleted Successfully",error:" You cannot Delete Active Driver",default_currency_error:"This currency is already used in one of the Active Provider",exchange_help_text:"Enter exchange rate to convert from {currency} to {baseCurrency}",currency_freak:"Currency Freak",currency_layer:"Currency Layer",open_exchange_rate:"Open Exchange Rate",currency_converter:"Currency Converter",server:"Server",url:"URL",active:"Active",currency_help_text:"This provider will only be used on above selected currencies",currency_in_used:"The following currencies are already active on another provider. Please remove these currencies from selection to activate this provider again."},tax_types:{title:"Momssatser",add_tax:"Lägg till moms",edit_tax:"Ändra moms",description:"Du kan lägga till och ta bort momssatser som du vill. InvoiceShelf har stöd för moms per artikel men även per faktura.",add_new_tax:"Lägg till ny momssats",tax_settings:"Momssattsinställningar",tax_per_item:"Moms per artikel",tax_name:"Namn",compound_tax:"Sammansatt moms",percent:"Procent",action:"Handling",tax_setting_description:"Aktivera detta om du vill lägga till momssats på individuella fakturaartiklar. Som standard sätts moms direkt på fakturan.",created_message:"Momssats skapades",updated_message:"Momssats uppdaterades",deleted_message:"Momssats raderades",confirm_delete:"Du kommer inte kunna återställa denna Momssats",already_in_use:"Momssats används"},payment_modes:{title:"Payment Modes",description:"Modes of transaction for payments",add_payment_mode:"Add Payment Mode",edit_payment_mode:"Edit Payment Mode",mode_name:"Mode Name",payment_mode_added:"Payment Mode Added",payment_mode_updated:"Payment Mode Updated",payment_mode_confirm_delete:"You will not be able to recover this Payment Mode",payments_attached:"This payment method is already attached to payments. Please delete the attached payments to proceed with deletion.",expenses_attached:"This payment method is already attached to expenses. Please delete the attached expenses to proceed with deletion.",deleted_message:"Payment Mode deleted successfully"},expense_category:{title:"Kategorier för utgifter",action:"Handling",description:"Kategorier krävs för att lägga till utgifter. Du kan lägga till och ta bort dessa kategorier som du vill",add_new_category:"Lägg till ny kategori",add_category:"Lägg till kategori",edit_category:"Ändra kategori",category_name:"Kategorinamn",category_description:"Beskrivning",created_message:"Utgiftskategori skapades",deleted_message:"Utgiftskategori raderades",updated_message:"Utgiftskategori uppdaterades",confirm_delete:"Du kommer inte kunna återställa denna utgiftskategori",already_in_use:"Kategorin används"},preferences:{currency:"Valuta",default_language:"Standardspråk",time_zone:"Tidszon",fiscal_year:"Räkenskapsår",date_format:"Datumformattering",discount_setting:"Rabattinställningar",discount_per_item:"Rabatt per artikel ",discount_setting_description:"Aktivera detta om du vill kunna lägga rabatt på enskilda fakturaartiklar. Rabatt ges som standard på hela fakturan.",expire_public_links:"Automatically Expire Public Links",expire_setting_description:"Specify whether you would like to expire all the links sent by application to view invoices, estimates & payments, etc after a specified duration.",save:"Spara",preference:"Preferens | Preferenser",general_settings:"Standardpreferenser för systemet.",updated_message:"Preferenser uppdaterades",select_language:"Välj språk",select_time_zone:"Välj tidszon",select_date_format:"Välj datumformat",select_financial_year:"Välj räkenskapsår",recurring_invoice_status:"Recurring Invoice Status",create_status:"Create Status",active:"Active",on_hold:"On Hold",update_status:"Update Status",completed:"Completed",company_currency_unchangeable:"Company currency cannot be changed"},update_app:{title:"Uppdatera applikationen",description:"Du kan enkelt uppdatera InvoiceShelf genom att söka efter uppdateringar via knappen nedan",check_update:"Sök efter uppdateringar",avail_update:"Uppdatering är tillgänglig",next_version:"Nästa version",requirements:"Krav",update:"Uppdatera nu",update_progress:"Uppdaterar...",progress_text:"Det kommer bara ta några minuter. Stäng eller uppdatera inte webläsaren förrän uppdateringen är färdig.",update_success:"Applikationen har uppdaterats! Vänta så kommer fönstret laddas om automatiskt..",latest_message:"Ingen uppdatering tillgänglig! Du har den senaste versionen.",current_version:"Nuvarande version",download_zip_file:"Ladda ner ZIP-fil",unzipping_package:"Zippar upp paket",copying_files:"Kopierar filer",deleting_files:"Tar bort oanvända filer",running_migrations:"Kör migreringar",finishing_update:"Avslutar uppdateringen",update_failed:"Uppdatering misslyckades",update_failed_text:"Uppdateringen misslyckades på steg : {step} step",update_warning:"All of the application files and default template files will be overwritten when you update the application using this utility. Please take a backup of your templates & database before updating."},backup:{title:"Säkerhetskopiering | Säkerhetskopieringar",description:"Säkerhetskopian är en zip-fil som innehåller alla filer i katalogerna du väljer samt en kopia av databasen",new_backup:"Skapa ny säkerhetskopia",create_backup:"Skapa säkerhetskopia",select_backup_type:"Välj typ av säkerhetskopia",backup_confirm_delete:"Du kommer inte kunna återställa denna säkerhetskopia",path:"sökväg",new_disk:"Ny disk",created_at:"skapad den",size:"storlek",dropbox:"dropbox",local:"lokal",healthy:"hälsosam",amount_of_backups:"antal säkerhetskopior",newest_backups:"senaste säkerhetskopiorna",used_storage:"använt utrymme",select_disk:"Välj disk",action:"Handling",deleted_message:"Säkerhetskopia raderad",created_message:"Säkerhetskopia skapades",invalid_disk_credentials:"Ogiltiga autentiseringsuppgifter för den valda disken"},disk:{title:"Lagring | Lagringar",description:"InvoiceShelf använder din lokala disk som standard för att spara säkerhetskopior, avatarer och andra bildfiler. Du kan ställa in fler lagringsenheter såsom DigitalOcean, S3 och Dropbox beroende av ditt behov.",created_at:"skapad den",dropbox:"dropbox",name:"Namn",driver:"Plats",disk_type:"Typ",disk_name:"Lagringsenhetsnamn",new_disk:"Lägg till ny lagringsenhet",filesystem_driver:"Enhetsplats",local_driver:"Lokal enhet",local_root:"Sökväg på lokal enhet",public_driver:"Offentlig drivrutin",public_root:"Offentlig rot",public_url:"Offentlig URL",public_visibility:"Offentlig synlighet",media_driver:"Mediaenhet",media_root:"Media Root",aws_driver:"AWS",aws_key:"Nyckel",aws_secret:"Lösenord",aws_region:"Region",aws_bucket:"Bucket",aws_root:"Sökväg",do_spaces_type:"Do Spaces type",do_spaces_key:"Nyckel",do_spaces_secret:"Lösenord",do_spaces_region:"Region",do_spaces_bucket:"Bucket",do_spaces_endpoint:"Endpoint",do_spaces_root:"Sökväg",dropbox_type:"Typ",dropbox_token:"Token",dropbox_key:"Nyckel",dropbox_secret:"Lösenord",dropbox_app:"App",dropbox_root:"Sökväg",default_driver:"Standard",is_default:"Är standard",set_default_disk:"Välj som standard",set_default_disk_confirm:"Denna disk kommer bli standard och alla nya PFDer blir sparade här",success_set_default_disk:"Disk vald som standard",save_pdf_to_disk:"Spara PDFer till disk",disk_setting_description:"Aktivera detta om du vill ha en kopia av varje faktura, kostnadsförslag, och betalningskvitto som PDF på din standard disk automatiskt.Aktiverar du denna funktion så kommer laddtiderna för visning av PDFer minskas.",select_disk:"Välj Disk",disk_settings:"Diskinställningar",confirm_delete:"Dina existerande filer och kataloger på den valda disken kommer inte påverkas men inställningarna för disken raderas från InvoiceShelf",action:"Handling",edit_file_disk:"Ändra disk",success_create:"Disk skapades",success_update:"Disk uppdaterades",error:"Fel vid skapande av disk",deleted_message:"Disk raderades",disk_variables_save_successfully:"Diskinställningar sparades",disk_variables_save_error:"Något gick fel vid sparning av diskinställningar",invalid_disk_credentials:"Felaktiga uppgifter vid val av disk"},taxations:{add_billing_address:"Enter Billing Address",add_shipping_address:"Enter Shipping Address",add_company_address:"Enter Company Address",modal_description:"The information below is required in order to fetch sales tax.",add_address:"Add Address for fetching sales tax.",address_placeholder:"Example: 123, My Street",city_placeholder:"Example: Los Angeles",state_placeholder:"Example: CA",zip_placeholder:"Example: 90024",invalid_address:"Please provide valid address details."}},lae={account_info:"Kontoinformation",account_info_desc:"Nedan detaljer används för att skapa huvudadministratörskonto. Du kan ändra detta i efterhand.",name:"Namn",email:"Epost",password:"Lösenord",confirm_password:"Bekräfta lösenord",save_cont:"Spara och fortsätt",company_info:"Företagsinformation",company_info_desc:"Denna information visas på fakturor. Du kan ändra detta i efterhand på sidan för inställningar.",company_name:"Företagsnamn",company_logo:"Företagslogga",logo_preview:"Förhandsvisning av logga",preferences:"Inställningar",preferences_desc:"Standardinställningar för systemet.",currency_set_alert:"The company's currency cannot be changed later.",country:"Land",state:"Kommun",city:"Stad",address:"Adress",street:"Gatuadress1 | Gatuadress2",phone:"Telefon",zip_code:"Postnr",go_back:"Tillbaka",currency:"Valuta",language:"Språk",time_zone:"Tidszon",fiscal_year:"Räkenskapsår",date_format:"Datumformat",from_address:"Från adress",username:"Användarnamn",next:"Nästa",continue:"Fortsätt",skip:"Hoppa över",database:{database:"Sidans URL & Databas",connection:"Databasanslutning",host:"Värdadress till databasen",port:"Port till databasen",password:"Lösenord till databasen",app_url:"Appens URL",app_domain:"Appens Domän",username:"Användarnamn till databasen",db_name:"Databasens namn",db_path:"Databasens sökväg",desc:"Skapa en database på din server och ställ in autentiseringsuppgifter i formuläret nedan."},permissions:{permissions:"Behörigheter",permission_confirm_title:"Är du säker på att du vill fortsätta?",permission_confirm_desc:"Fel behörigheter vid kontroll på katalogen",permission_desc:"Nedan är en lista på katalogrättigheter som krävs för att denna app ska fungera. Om behörighetskontrollen misslyckas, uppdatera behörigheterna för katalogerna."},verify_domain:{title:"Domain Verification",desc:"InvoiceShelf uses Session based authentication which requires domain verification for security purposes. Please enter the domain on which you will be accessing your web application.",app_domain:"App Domain",verify_now:"Verify Now",success:"Domain Verify Successfully.",failed:"Domain verification failed. Please enter valid domain name.",verify_and_continue:"Verify And Continue"},mail:{host:"Värdadress till epost",port:"Port till epost",driver:"Typ",secret:"Hemlighet",mailgun_secret:"Hemlighet",mailgun_domain:"Domän",mailgun_endpoint:"Endpoint",ses_secret:"Hemlighet",ses_key:"Nyckel",password:"Lösenord",username:"Användarnamn",mail_config:"Epostinställningar",from_name:"Namn som står vid utgående epost",from_mail:"Epostadress som används som returadress vid utgående epost",encryption:"Epostkryptering",mail_config_desc:"Nedan formulär används för att konfigurera vilket sätt som ska användar för att skicka epost. Du kan också använda tredjepartsleverantör som Sendgrid, SES o.s.v."},req:{system_req:"Systemkrav",php_req_version:"Php (version {version} krävs)",check_req:"Kontrollera krav",system_req_desc:"InvoiceShelf har några krav på din server. Kontrollera att din server har den nödvändiga versionen av PHP och alla tillägg som nämns nedan."},errors:{migrate_failed:"Migration misslyckades",database_variables_save_error:"Kan inte skriva till .env-filen. Kontrollera dina behörigheter till filen",mail_variables_save_error:"Epostinställningar misslyckades.",connection_failed:"Databasanslutning misslyckades",database_should_be_empty:"Databasen måste vara tom"},success:{mail_variables_save_successfully:"Epostinställningar sparades.",database_variables_save_successfully:"Databasinställningar sparades."}},cae={invalid_phone:"Felaktigt telefonnummer",invalid_url:"Felaktig url (ex: http://www.invoiceshelf.com)",invalid_domain_url:"Felaktig url (ex: invoiceshelf.com)",required:"Fältet är tvingande",email_incorrect:"Felaktig epostadress.",email_already_taken:"Denna epostadress finns redan.",email_does_not_exist:"Användare med den epostadressen finns inte",item_unit_already_taken:"Detta artikelenhetsnamn finns redan",payment_mode_already_taken:"Betalningsmetodsnamnet finns redan",send_reset_link:"Skicka länk för återställning",not_yet:"Inte än? Skicka igen",password_min_length:"Lösenordet måste innehålla {count} tecken",name_min_length:"Namn måste ha minst {count} bokstäver.",prefix_min_length:"Prefix must have at least {count} letters.",enter_valid_tax_rate:"Skriv in tillåten momssats",numbers_only:"Endast siffror.",characters_only:"Endast bokstäver.",password_incorrect:"Lösenorden måste överensstämma",password_length:"Lösenordet måste vara minst {count} tecken.",qty_must_greater_than_zero:"Antal måste vara större än noll.",price_greater_than_zero:"Pris måste vara större än noll.",payment_greater_than_zero:"Betalningen måste vara större än noll.",payment_greater_than_due_amount:"Inslagen betalning är större än summan på denna faktura.",quantity_maxlength:"Antal kan inte vara större än 20 siffror.",price_maxlength:"Pris kan inte vara större än 20 siffror.",price_minvalue:"Pris måste vara större än 0.",amount_maxlength:"Belopp kan inte vara större än 20 siffror.",amount_minvalue:"Belopp måste vara större än 9.",discount_maxlength:"Discount should not be greater than max discount",description_maxlength:"Beskrivning får inte innehålla fler än 255 tecken.",subject_maxlength:"Ämne får inte innehålla fler än 100 tecken.",message_maxlength:"Meddelande får inte innehålla fler än 255 tecken.",maximum_options_error:"Högst {max} val. Ta bort ett val för att kunna lägga till ett annat.",notes_maxlength:"Noteringar kan inte vara större än 255 tecken.",address_maxlength:"Adress kan inte vara större än 255 tecken.",ref_number_maxlength:"Referensnummer kan inte vara större än 255 tecken.",prefix_maxlength:"Prefix kan inte vara större än 5 tecken.",something_went_wrong:"något blev fel",number_length_minvalue:"Number length should be greater than 0",at_least_one_ability:"Please select atleast one Permission.",valid_driver_key:"Please enter a valid {driver} key.",valid_exchange_rate:"Please enter a valid exchange rate.",company_name_not_same:"Company name must match with given name."},dae={starter_plan:"This feature is available on Starter plan and onwards!",invalid_provider_key:"Please Enter Valid Provider API Key.",estimate_number_used:"The estimate number has already been taken.",invoice_number_used:"The invoice number has already been taken.",payment_attached:"This invoice already has a payment attached to it. Make sure to delete the attached payments first in order to go ahead with the removal.",payment_number_used:"The payment number has already been taken.",name_already_taken:"The name has already been taken.",receipt_does_not_exist:"Receipt does not exist.",customer_cannot_be_changed_after_payment_is_added:"Customer cannot be change after payment is added",invalid_credentials:"Invalid Credentials.",not_allowed:"Not Allowed",login_invalid_credentials:"These credentials do not match our records.",enter_valid_cron_format:"Please enter a valid cron format",email_could_not_be_sent:"Email could not be sent to this email address.",invalid_address:"Please enter a valid address.",invalid_key:"Please enter valid key.",invalid_state:"Please enter a valid state.",invalid_city:"Please enter a valid city.",invalid_postal_code:"Please enter a valid zip.",invalid_format:"Please enter valid query string format.",api_error:"Server not responding.",feature_not_enabled:"Feature not enabled.",request_limit_met:"Api request limit exceeded.",address_incomplete:"Incomplete Address"},uae="Kostnadsförslag",_ae="Kostnadsförslagsnummer",mae="Kostnadsförslagsdatum",pae="Utgångsdatum",fae="Faktura",hae="Fakturanummer",gae="Fakturadatum",vae="Inbetalningsdatum",yae="Noteringar",bae="Artiklar",kae="Antal",wae="Kostnad",xae="Rabatt",Dae="Belopp",Sae="Delsumma",zae="Summa",Pae="Payment",Eae="Betalningskvitto",Aae="Betalningsdatum",Cae="Betalningsnummer",jae="Betalningstyp",Tae="Belopp mottaget",Iae="Kostnadsrapport",Nae="Totalkostnad",Fae="Resultat- och förlustrapport",Mae="Sales Customer Report",Rae="Sales Item Report",Oae="Tax Summary Report",$ae="Inkomst",Lae="Nettoförtjänst",Bae="Försäljningsrapport: Per kund",Uae="SUMMA FÖRSÄLJNINGAR",Vae="Försäljningsrapport: Per artikel",qae="Momsrapport",Hae="SUMMA MOMS",Wae="Momssatser",Kae="Utgifter",Yae="Faktureras till,",Zae="Skickas till,",Gae="Från:",Qae="Tax",Jae={navigation:Vte,general:qte,dashboard:Hte,tax_types:Wte,global_search:Kte,company_switcher:Yte,dateRange:Zte,customers:Gte,items:Qte,estimates:Jte,invoices:Xte,recurring_invoices:eae,payments:tae,expenses:aae,login:nae,modules:iae,users:oae,reports:rae,settings:sae,wizard:lae,validation:cae,errors:dae,pdf_estimate_label:uae,pdf_estimate_number:_ae,pdf_estimate_date:mae,pdf_estimate_expire_date:pae,pdf_invoice_label:fae,pdf_invoice_number:hae,pdf_invoice_date:gae,pdf_invoice_due_date:vae,pdf_notes:yae,pdf_items_label:bae,pdf_quantity_label:kae,pdf_price_label:wae,pdf_discount_label:xae,pdf_amount_label:Dae,pdf_subtotal:Sae,pdf_total:zae,pdf_payment_label:Pae,pdf_payment_receipt_label:Eae,pdf_payment_date:Aae,pdf_payment_number:Cae,pdf_payment_mode:jae,pdf_payment_amount_received_label:Tae,pdf_expense_report_label:Iae,pdf_total_expenses_label:Nae,pdf_profit_loss_label:Fae,pdf_sales_customers_label:Mae,pdf_sales_items_label:Rae,pdf_tax_summery_label:Oae,pdf_income_label:$ae,pdf_net_profit_label:Lae,pdf_customer_sales_report:Bae,pdf_total_sales_label:Uae,pdf_item_sales_label:Vae,pdf_tax_report_label:qae,pdf_total_tax_label:Hae,pdf_tax_types_label:Wae,pdf_expenses_label:Kae,pdf_bill_to:Yae,pdf_ship_to:Zae,pdf_received_from:Gae,pdf_tax_label:Qae},Xae={dashboard:"Hlavný Panel",customers:"Zákazníci",items:"Položky",invoices:"Faktúry","recurring-invoices":"Recurring Invoices",expenses:"Výdaje",estimates:"Cenové odhady",payments:"Platby",reports:"Reporty",settings:"Nastavenia",logout:"Odhlásiť sa",users:"Uživatelia",modules:"Modules"},ene={add_company:"Pridať firmu",view_pdf:"Zobraziť PDF",copy_pdf_url:"Kopírovať PDF adresu",download_pdf:"Stiahnuť PDF",save:"Uložiť",create:"Vytvoriť",cancel:"Zrušiť",update:"Aktualizovať",deselect:"Zrušiť výber",download:"Stiahnuť",from_date:"Od dátumu",to_date:"Do dátumu",from:"Od",to:"Pre",ok:"Ok",yes:"Yes",no:"No",sort_by:"Zoradiť podľa",ascending:"Vzostupne",descending:"Zostupne",subject:"Predmet",body:"Telo textu",message:"Správa",send:"Odoslať",preview:"Preview",go_back:"Späť",back_to_login:"Späť na prihlásenie?",home:"Domov",filter:"Filtrovať",delete:"Odstrániť",edit:"Upraviť",view:"Zobraziť",add_new_item:"Pridať novú položku",clear_all:"Vyčistiť všetko",showing:"Zobrazuje sa",of:"z",actions:"Akcie",subtotal:"MEDZISÚČET",discount:"ZĽAVA",fixed:"Pevné",percentage:"Percento",tax:"DAŇ",total_amount:"SUMA SPOLU",bill_to:"Fakturačná adresa",ship_to:"Adresa doručenia",due:"Termín",draft:"Koncept",sent:"Odoslané",all:"Všetko",select_all:"Vybrať všetky",select_template:"Select Template",choose_file:"Kliknite sem pre vybratie súboru",choose_template:"Vybrať vzhľad",choose:"Vybrať",remove:"Odstrániť",select_a_status:"Vyberte stav",select_a_tax:"Vyberte daň",search:"Hľadať",are_you_sure:"Ste si istý?",list_is_empty:"Zoznam je prázdny.",no_tax_found:"Žiadna daň nebola nájdená!",four_zero_four:"404",you_got_lost:"Ups! Stratili ste sa!",go_home:"Ísť domov",test_mail_conf:"Otestovať e-mailovú konfiguráciu",send_mail_successfully:"E-Mail odoslaný úspešne",setting_updated:"Nastavenia boli úspešne aktualizované",select_state:"Vyberte štát",select_country:"Vyberte krajinu",select_city:"Vyberte mesto",street_1:"Prvý riadok ulice",street_2:"Druhý riadok ulice",action_failed:"Akcia neúspešná",retry:"Skúsiť znova",choose_note:"Vyberte poznámku",no_note_found:"Neboli nájdené žiadne poznámky",insert_note:"Vlož poznámku",copied_pdf_url_clipboard:"Copied PDF url to clipboard!",copied_url_clipboard:"Copied url to clipboard!",docs:"Docs",do_you_wish_to_continue:"Do you wish to continue?",note:"Note",pay_invoice:"Pay Invoice",login_successfully:"Logged in successfully!",logged_out_successfully:"Logged out successfully",mark_as_default:"Mark as default"},tne={select_year:"Vyberte rok",cards:{due_amount:"Čiastka k zaplateniu",customers:"Zákazníci",invoices:"Faktúry",estimates:"Cenové odhady",payments:"Payments"},chart_info:{total_sales:"Predaje",total_receipts:"Doklady o zaplatení",total_expense:"Výdaje",net_income:"Čistý príjem",year:"Vyberte rok"},monthly_chart:{title:"Predaje a Výdaje"},recent_invoices_card:{title:"Splatné faktúry",due_on:"Termín splatenia",customer:"Zákazník",amount_due:"Čiastka k zaplateniu",actions:"Akcie",view_all:"Zobraziť všetko"},recent_estimate_card:{title:"Nedávne cenové odhady",date:"Dátum",customer:"Zákazník",amount_due:"Cena",actions:"Akcie",view_all:"Zobraziť všetky"}},ane={name:"Meno",description:"Popis",percent:"Percento",compound_tax:"Zložená daň"},nne={search:"Hľadať...",customers:"Zákazníci",users:"Uživatelia",no_results_found:"Neboli nájdené žiadne výsledky"},ine={label:"SWITCH COMPANY",no_results_found:"No Results Found",add_new_company:"Add new company",new_company:"New company",created_message:"Company created successfully"},one={today:"Today",this_week:"This Week",this_month:"This Month",this_quarter:"This Quarter",this_year:"This Year",previous_week:"Previous Week",previous_month:"Previous Month",previous_quarter:"Previous Quarter",previous_year:"Previous Year",custom:"Custom"},rne={title:"Zákazníci",prefix:"Prefix",add_customer:"Pridať Zákazníka",contacts_list:"Zoznam zákazníkov",name:"Meno",mail:"E-mail | E-maily",statement:"Výpis",display_name:"Zobrazované meno",primary_contact_name:"Meno Primárneho Kontaktu",contact_name:"Meno Kontaktu",amount_due:"Čiastka k zaplateniu",email:"E-mail",address:"Adresa",phone:"Telefón",website:"Webové stránky",overview:"Prehľad",invoice_prefix:"Invoice Prefix",estimate_prefix:"Estimate Prefix",payment_prefix:"Payment Prefix",enable_portal:"Aktivovať portál",country:"Krajina",state:"Štát",city:"Mesto",zip_code:"PSČ",added_on:"Pridané Dňa",action:"Akcia",password:"Heslo",confirm_password:"Confirm Password",street_number:"Číslo Ulice",primary_currency:"Hlavná Mena",description:"Popis",add_new_customer:"Pridať Nového Zákazníka",save_customer:"Uložiť Zákazníka",update_customer:"Aktualizovať Zakázníka",customer:"Zákazník | Zákazníci",new_customer:"Nový Zákazník",edit_customer:"Upraviť Zákazníka",basic_info:"Základné Informácie",portal_access:"Portal Access",portal_access_text:"Would you like to allow this customer to login to the Customer Portal?",portal_access_url:"Customer Portal Login URL",portal_access_url_help:"Please copy & forward the above given URL to your customer for providing access.",billing_address:"Fakturačná Adresa",shipping_address:"Doručovacia Adresa",copy_billing_address:"Kopírovať podľa Fakturačnej adresy",no_customers:"Zatiaľ nebol pridaný žiadny zákazník!",no_customers_found:"Nenájdení žiadni zákazníci!",no_contact:"No contact",no_contact_name:"No contact name",list_of_customers:"Táto sekcia bude obsahovať zoznam zákazníkov.",primary_display_name:"Hlavné meno pre zobrazenie",select_currency:"Vyberte menu",select_a_customer:"Vyberte zákazníka",type_or_click:"Začnite písať alebo kliknite pre vybratie",new_transaction:"Nová Transakcia",no_matching_customers:"Nenašli sa žiadny zákazníci spĺňajúce Vaše podmienky!",phone_number:"Telefónne Číslo",create_date:"Dátum Vytvorenia",confirm_delete:"Nebudete môcť obnoviť tohto zákazníka ani žiadne faktúry, cenové odhady alebo platby s ním spojené. | Nebudete môcť obnoviť týchto zákazníkov ani žiadne faktúry, cenové odhady alebo platby s nimi spojené.",created_message:"Zákazník úspešne vytvorený",updated_message:"Zákazník úspešne aktualizovaný",address_updated_message:"Address Information Updated succesfully",deleted_message:"Zákazník úspešne odstránený | Zákazníci úspešne odstránení",edit_currency_not_allowed:"Cannot change currency once transactions created."},sne={title:"Položky",items_list:"Zoznam Položiek",name:"Meno",unit:"Jednotka",description:"Popis",added_on:"Pridané Dňa",price:"Cena",date_of_creation:"Dátum Vytvorenia",not_selected:"No item selected",action:"Akcia",add_item:"Pridať Položku",save_item:"Uložiť Položku",update_item:"Aktualizovať Položku",item:"Položka | Položky",add_new_item:"Pridať Novú Položku",new_item:"Nová položka",edit_item:"Upraviť Položku",no_items:"Zatiaľ žiadné položky!",list_of_items:"Táto sekcia bude obsahovať zoznam zákazníkov.",select_a_unit:"vyberte jednotku",taxes:"Dane",item_attached_message:"Nie je možné vymazať položku, ktorá sa používa",confirm_delete:"Nebudete môcť obnoviť túto Položku | Nebudete môcť obnoviť tieto Položky",created_message:"Položka úspešne vytvorená",updated_message:"Položka úspešne aktualizovaná",deleted_message:"Položka úspešne odstránená | Položky úspešne odstránené"},lne={title:"Cenové odhady",accept_estimate:"Accept Estimate",reject_estimate:"Reject Estimate",estimate:"Cenový odhad | Cenové odhady",estimates_list:"Zoznam Cenových odhadov",days:"{days} Dní",months:"{months} Mesiac",years:"{years} Rok",all:"Všetko",paid:"Zaplatené",unpaid:"Nezaplatené",customer:"ZÁKAZNÍK",ref_no:"REF Č.",number:"ČÍSLO",amount_due:"Dlžná suma",partially_paid:"Čiastočne Zaplatené",total:"Spolu",discount:"Zľava",sub_total:"Medzisúčet",estimate_number:"Číslo Cenového odhadu",ref_number:"Ref. Číslo",contact:"Kontakt",add_item:"Pridať Položku",date:"Dátum",due_date:"Dátum Splatnosti",expiry_date:"Dátum Ukončenia Platnosti",status:"Stav",add_tax:"Pridať Daň",amount:"Suma",action:"Akcia",notes:"Poznámky",tax:"Daň",estimate_template:"Vzhľad",convert_to_invoice:"Konvertovať do Faktúry",mark_as_sent:"Označiť ako odoslané",send_estimate:"Odoslať Cenový odhad",resend_estimate:"Znovu Odoslať Cenový odhad",record_payment:"Zaznamenať Platbu",add_estimate:"Vytvoriť Cenový odhad",save_estimate:"Uložiť Cenový odhad",confirm_conversion:"Tento cenový odhad bude použitý k vytvoreniu novej Faktúry.",conversion_message:"Faktúra úspešne vytvorená",confirm_send_estimate:"Tento Cenový odhad bude odoslaný zákazníkovi prostredníctvom e-mailu",confirm_mark_as_sent:"Tento Cenový odhad bude označený ako odoslaný",confirm_mark_as_accepted:"Tento Cenový odhad bude označený ako Prijatý",confirm_mark_as_rejected:"Tento Cenový odhad bude označený ako Odmietnutý",no_matching_estimates:"Nenašli sa žiadne Cenové odhady spĺňajúce Vaše podmienky!",mark_as_sent_successfully:"Cenový odhad úspešne označený ako odoslaný",send_estimate_successfully:"Cenový odhad úspešne odoslaný",errors:{required:"Pole je povinné"},accepted:"Prijátá",rejected:"Rejected",expired:"Expired",sent:"Odoslaná",draft:"Koncept",viewed:"Viewed",declined:"Zrušený",new_estimate:"Nový Cenový odhad",add_new_estimate:"Pridať nový Cenový odhad",update_Estimate:"Aktualizovať Cenový odhad",edit_estimate:"Upraviť Cenový odhad",items:"položky",Estimate:"Cenový odhad | Cenové odhady",add_new_tax:"Pridať Novú Daň",no_estimates:"Zatiaľ žiadne cenové odhady",list_of_estimates:"Táto sekcia bude obsahovať zoznam cenových odhadov.",mark_as_rejected:"Označiť ako odmietnutú",mark_as_accepted:"Označený ako prijatú",marked_as_accepted_message:"Cenový odhad označený ako schválený",marked_as_rejected_message:"Cenový odhad označený ako odmietnutý",confirm_delete:"Nebude možné obnoviť cenový odhad | Nebude možné obnoviť cenové odhady",created_message:"Cenový odhad úspešné vytvorený",updated_message:"Cenový odhad úspešné aktualizovaný",deleted_message:"Cenový odhad úspešné vymazaný | Cenové odhady úspešné vymazané",something_went_wrong:"Niečo neprebehlo v poriadku, odskúšajte prosím znova.",item:{title:"Názov Položky",description:"Popis",quantity:"Množstvo",price:"Cena",discount:"Zľava",total:"Celkom",total_discount:"Celková zľava",sub_total:"Medzisúčet",tax:"Daň",amount:"Suma",select_an_item:"Začnite písať alebo kliknite pre vybratie položky",type_item_description:"Zadajte Popis Položky (voliteľné)"},mark_as_default_estimate_template_description:"If enabled, the selected template will be automatically selected for new estimates."},cne={title:"Faktúry",download:"Download",pay_invoice:"Pay Invoice",invoices_list:"Zoznam Faktúr",invoice_information:"Invoice Information",days:"{days} Ďeň",months:"{months} Mesiac",years:"{years} Rok",all:"Všetko",paid:"Zaplatené",unpaid:"Nezaplatené",viewed:"Viewed",overdue:"Overdue",completed:"Completed",customer:"ZÁKAZNÍK",paid_status:"Stav platby",ref_no:"REF Č.",number:"ČÍSLO",amount_due:"Dlžná suma",partially_paid:"Čiastočne Zaplatené",total:"Spolu",discount:"Zľava",sub_total:"Medzisúčet",invoice:"Faktúra | Faktúry",invoice_number:"Číslo Faktúry",ref_number:"Ref. Číslo",contact:"Kontakt",add_item:"Pridať Položku",date:"Dátum",due_date:"Dátum Splatnosti",status:"Stav",add_tax:"Pridať Daň",amount:"Suma",action:"Akcia",notes:"Poznámky",view:"Zobraziť",send_invoice:"Odoslať Faktúru",resend_invoice:"Odoslať Faktúru Znovu",invoice_template:"Vzhľad faktúry",conversion_message:"Invoice cloned successful",template:"Vzhľad",mark_as_sent:"Označiť ako odoslanú",confirm_send_invoice:"Táto faktúra bude odoslaná zákazníkovi prostredníctvom e-mailu",invoice_mark_as_sent:"Táto faktúra bude označená ako odoslaná",confirm_mark_as_accepted:"This invoice will be marked as Accepted",confirm_mark_as_rejected:"This invoice will be marked as Rejected",confirm_send:"Táto faktúra bude odoslaná zákazníkovi prostredníctvom e-mailu",invoice_date:"Dátum Vystavenia",record_payment:"Zaznamenať Platbu",add_new_invoice:"Nová Faktúra",update_expense:"Update Expense",edit_invoice:"Upraviť Faktúru",new_invoice:"Nová Faktúra",save_invoice:"Uložiť Faktúru",update_invoice:"Upraviť Faktúru",add_new_tax:"Pridať Novú Daň",no_invoices:"Zatiaľ nemáte žiadné faktúry!",mark_as_rejected:"Mark as rejected",mark_as_accepted:"Mark as accepted",list_of_invoices:"Táto sekcia bude obsahovať zoznam faktúr",select_invoice:"Vybrať Faktúru",no_matching_invoices:"Nenašli sa žiadne faktúry!",mark_as_sent_successfully:"Faktúra označená ako úspešne odoslaná",invoice_sent_successfully:"Invoice sent successfully",cloned_successfully:"Faktúra bola úspešne okopírovaná",clone_invoice:"Kopírovať faktúru",confirm_clone:"Faktúra bude okopírovaná do novej",item:{title:"Názov položky",description:"Popis",quantity:"Množstvo",price:"Cena",discount:"Zľava",total:"Celkom",total_discount:"Celková zľava",sub_total:"Medzisúčet",tax:"Daň",amount:"Čiastka",select_an_item:"Napíšte alebo vyberte položku",type_item_description:"Popis položky (voliteľné)"},payment_attached_message:"K jednej z vybraných faktúr už je pripojená platba. Nezabudnite najskôr vymazať priložené platby, aby ste mohli pokračovať v odstránení",confirm_delete:"Túto faktúru nebude možné obnoviť | Tieto faktúry nebude možné obnoviť",created_message:"Faktúra úspešne vytvorená",updated_message:"Faktúra úspešne aktualizovaná",deleted_message:"Faktúra úspešne vymazaná | Faktúry úspešne vymazané",marked_as_sent_message:"Faktúra úspešne označená ako odoslaná",something_went_wrong:"Niečo neprebehlo v poriadku, odskúšajte prosím znova.",invalid_due_amount_message:"Celková suma faktúry nemôže byť nižšia ako celková suma zaplatená za túto faktúru. Ak chcete pokračovať, aktualizujte faktúru alebo odstráňte súvisiace platby.",mark_as_default_invoice_template_description:"If enabled, the selected template will be automatically selected for new invoices."},dne={title:"Recurring Invoices",invoices_list:"Recurring Invoices List",days:"{days} Days",months:"{months} Month",years:"{years} Year",all:"All",paid:"Paid",unpaid:"Unpaid",viewed:"Viewed",overdue:"Overdue",active:"Active",completed:"Completed",customer:"CUSTOMER",paid_status:"PAID STATUS",ref_no:"REF NO.",number:"NUMBER",amount_due:"AMOUNT DUE",partially_paid:"Partially Paid",total:"Total",discount:"Discount",sub_total:"Sub Total",invoice:"Recurring Invoice | Recurring Invoices",invoice_number:"Recurring Invoice Number",next_invoice_date:"Next Invoice Date",ref_number:"Ref Number",contact:"Contact",add_item:"Add an Item",date:"Date",limit_by:"Limit by",limit_date:"Limit Date",limit_count:"Limit Count",count:"Count",status:"Status",select_a_status:"Select a status",working:"Working",on_hold:"On Hold",complete:"Completed",add_tax:"Add Tax",amount:"Amount",action:"Action",notes:"Notes",view:"View",basic_info:"Basic Info",send_invoice:"Send Recurring Invoice",auto_send:"Auto Send",resend_invoice:"Resend Recurring Invoice",invoice_template:"Recurring Invoice Template",conversion_message:"Recurring Invoice cloned successful",template:"Template",mark_as_sent:"Mark as sent",confirm_send_invoice:"This recurring invoice will be sent via email to the customer",invoice_mark_as_sent:"This recurring invoice will be marked as sent",confirm_send:"This recurring invoice will be sent via email to the customer",starts_at:"Start Date",due_date:"Invoice Due Date",record_payment:"Record Payment",add_new_invoice:"Add New Recurring Invoice",update_expense:"Update Expense",edit_invoice:"Edit Recurring Invoice",new_invoice:"New Recurring Invoice",send_automatically:"Send Automatically",send_automatically_desc:"Enable this, if you would like to send the invoice automatically to the customer when its created.",save_invoice:"Save Recurring Invoice",update_invoice:"Update Recurring Invoice",add_new_tax:"Add New Tax",no_invoices:"No Recurring Invoices yet!",mark_as_rejected:"Mark as rejected",mark_as_accepted:"Mark as accepted",list_of_invoices:"This section will contain the list of recurring invoices.",select_invoice:"Select Invoice",no_matching_invoices:"There are no matching recurring invoices!",mark_as_sent_successfully:"Recurring Invoice marked as sent successfully",invoice_sent_successfully:"Recurring Invoice sent successfully",cloned_successfully:"Recurring Invoice cloned successfully",clone_invoice:"Clone Recurring Invoice",confirm_clone:"This recurring invoice will be cloned into a new Recurring Invoice",add_customer_email:"Please add an email address for this customer to send invoices automatically.",item:{title:"Item Title",description:"Description",quantity:"Quantity",price:"Price",discount:"Discount",total:"Total",total_discount:"Total Discount",sub_total:"Sub Total",tax:"Tax",amount:"Amount",select_an_item:"Type or click to select an item",type_item_description:"Type Item Description (optional)"},frequency:{title:"Frequency",select_frequency:"Select Frequency",minute:"Minute",hour:"Hour",day_month:"Day of month",month:"Month",day_week:"Day of week"},confirm_delete:"You will not be able to recover this Invoice | You will not be able to recover these Invoices",created_message:"Recurring Invoice created successfully",updated_message:"Recurring Invoice updated successfully",deleted_message:"Recurring Invoice deleted successfully | Recurring Invoices deleted successfully",marked_as_sent_message:"Recurring Invoice marked as sent successfully",user_email_does_not_exist:"User email does not exist",something_went_wrong:"something went wrong",invalid_due_amount_message:"Total Recurring Invoice amount cannot be less than total paid amount for this Recurring Invoice. Please update the invoice or delete the associated payments to continue."},une={title:"Platby",payments_list:"Zoznam Platieb",record_payment:"Zaznamenať Platbu",customer:"Zákazník",date:"Dátum",amount:"Suma",action:"Akcia",payment_number:"Číslo Platby",payment_mode:"Spôsob Platby",invoice:"Faktúra",note:"Poznámka",add_payment:"Pridať Platbu",new_payment:"Nová Platba",edit_payment:"Úpraviť Platbu",view_payment:"Zobraziť Platbu",add_new_payment:"Nová Platba",send_payment_receipt:"Poslať Doklad o Zaplatení",send_payment:"Odoslať Platbu",save_payment:"Uložiť Platbu",update_payment:"Úpraviť Platbu",payment:"Platba | Platby",no_payments:"Zatiaľ nemáte žiadne platby!",not_selected:"Not selected",no_invoice:"No invoice",no_matching_payments:"Nenašli sa žiadne platby spĺňajúce Vaše podmienky!",list_of_payments:"Táto sekcia bude obsahovať zoznam platieb.",select_payment_mode:"Vyberte spôsob platby",confirm_mark_as_sent:"Tento cenový odhad bude označený ako odoslaný",confirm_send_payment:"Tento cenový odhad bude odoslaný zákazníkovi prostredníctvom e-mailu",send_payment_successfully:"Platba úspešne odoslaná",something_went_wrong:"Niečo neprebehlo v poriadku, odskúšajte prosím znova.",confirm_delete:"Nebudete môcť obnoviť túto Platbu | Nebudete môcť obnoviť tieto Platby",created_message:"Platba úspešne vytvorená",updated_message:"Platba úspešne upravena",deleted_message:"Platba úspešne odstránená | Platby úspešne odstránené",invalid_amount_message:"Suma platby nie je správna"},_ne={title:"Výdaje",expenses_list:"Zoznam Výdajov",select_a_customer:"Vyberte zákazníka",expense_title:"Nadpis",customer:"Zákazník",currency:"Currency",contact:"Kontakt",category:"Kategória",from_date:"Od dátumu",to_date:"Do dátumu",expense_date:"Dátum",description:"Popis",receipt:"Doklad o zaplatení",amount:"Suma",action:"Akcia",not_selected:"Not selected",note:"Poznámka",category_id:"ID kategórie",date:"Dátum",add_expense:"Pridať Výdaj",add_new_expense:"Pridať Nový Výdaj",save_expense:"Uložiť Výdaj",update_expense:"Aktualizovať Výdaj",download_receipt:"Stiahnuť doklad o zaplatení",edit_expense:"Upraviť Výdaj",new_expense:"Nový Výdaj",expense:"Výdaj | Výdaje",no_expenses:"Zatiaľ nemáte žiadne výdaje!",list_of_expenses:"Táto sekcia bude obsahovať zoznam výdajov.",confirm_delete:"Nebudete môcť obnoviť tento Výdaj | Nebudete môcť obnoviť tieto Výdaje",created_message:"Výdaj úspešne vytvorený",updated_message:"Výdaj úspešne aktualizovaný",deleted_message:"Výdaj úspešne odstránený | Výdaje úspešne odstránené",categories:{categories_list:"Zoznam kategórií",title:"Nadpis",name:"Názov",description:"Popis",amount:"Suma",actions:"Akcie",add_category:"Pridať Kategóriu",new_category:"Nová Kategória",category:"Kategória | Kategórie",select_a_category:"Vyberte kategóriu"}},mne={email:"E-mail",password:"Heslo",forgot_password:"Zabudol som heslo",or_signIn_with:"alebo sa prihlásiť pomocou",login:"Prihlásiť sa",register:"Registrovať sa",reset_password:"Obnoviť heslo",password_reset_successfully:"Heslo Úspešne Obnovené",enter_email:"Zadajte e-mail",enter_password:"Zadajte heslo",retype_password:"Znova zadajte heslo"},pne={buy_now:"Buy Now",install:"Install",price:"Price",download_zip_file:"Download ZIP file",unzipping_package:"Unzipping Package",copying_files:"Copying Files",deleting_files:"Deleting Unused files",completing_installation:"Completing Installation",update_failed:"Update Failed",install_success:"Module has been installed successfully!",customer_reviews:"Reviews",license:"License",faq:"FAQ",monthly:"Monthly",yearly:"Yearly",updated:"Updated",version:"Version",disable:"Disable",module_disabled:"Module Disabled",enable:"Enable",module_enabled:"Module Enabled",update_to:"Update To",module_updated:"Module Updated Successfully!",title:"Modules",module:"Module | Modules",api_token:"API token",invalid_api_token:"Invalid API Token.",other_modules:"Other Modules",view_all:"View All",no_reviews_found:"There are no reviews for this module yet!",module_not_purchased:"Module Not Purchased",module_not_found:"Module Not Found",version_not_supported:"This module version doesn't support the current version of InvoiceShelf",last_updated:"Last Updated On",connect_installation:"Connect your installation",api_token_description:"Login to {url} and connect this installation by entering the API Token. Your purchased modules will show up here after the connection is established.",view_module:"View Module",update_available:"Update Available",purchased:"Purchased",installed:"Installed",no_modules_installed:"No Modules Installed Yet!",disable_warning:"All the settings for this particular will be reverted.",what_you_get:"What you get"},fne={title:"Uživatelia",users_list:"Zoznam Užívateľov",name:"Meno",description:"Popis",added_on:"Pridané Dňa",date_of_creation:"Dátum Vytvorenia",action:"Akcia",add_user:"Pridať používateľa",save_user:"Uložiť používateľa",update_user:"Aktualizovať používateľa",user:"Užívateľ | Užívatelia",add_new_user:"Pridať Nového Užívateľa",new_user:"Nový užívateľ",edit_user:"Upraviť Užívateľa",no_users:"Zatiaľ nebol pridaný žiadny užívateľ!",list_of_users:"Táto sekcia bude obsahovať zoznam užívateľov.",email:"E-mail",phone:"Telefón",password:"Heslo",user_attached_message:"Nie je možné vymazať aktívneho užívateľa",confirm_delete:"Nebude možné obnoviť tohto používateľa | Nebude možné obnoviť týchto používateľov",created_message:"Užívateľ úspešne vytvorený",updated_message:"Užívateľ úspešne aktualizovaná",deleted_message:"Užívateľ úspešne odstránený | Užívatelia úspešne odstránení",select_company_role:"Select Role for {company}",companies:"Companies"},hne={title:"Reporty",from_date:"Od dátumu",to_date:"Do dátumu",status:"Stav",paid:"Zaplatená",unpaid:"Nezaplatená",download_pdf:"Stiahnuť PDF",view_pdf:"Zobraziť PDF",update_report:"Aktualizovať Report",report:"Report | Reporty",profit_loss:{profit_loss:"Ziskt a Straty",to_date:"Do dátumu",from_date:"Od dátumu",date_range:"Vybrať rozsah dátumu"},sales:{sales:"Predaje",date_range:"Vybrať rozsah dátumu",to_date:"Do dátumu",from_date:"Od dátumu",report_type:"Typ Reportu"},taxes:{taxes:"Dane",to_date:"Do dátumu",from_date:"Od dátumu",date_range:"Vybrať Rozsah Dátumu"},errors:{required:"Pole je povinné"},invoices:{invoice:"Faktúra",invoice_date:"Dátum Vystavenia",due_date:"Dátum Splatnosti",amount:"Suma",contact_name:"Kontaktná Osoba",status:"Stav"},estimates:{estimate:"Cenový odhad",estimate_date:"Dátum cenového odhadu",due_date:"Dátum platnosti cenového odhadu",estimate_number:"Číslo cenového odhadu",ref_number:"Ref. Číslo",amount:"Suma",contact_name:"Kontaktná Osoba",status:"Stav"},expenses:{expenses:"Výdaje",category:"Kategória",date:"Dátum",amount:"Suma",to_date:"Do dátumu",from_date:"Od dátumu",date_range:"Vybrať Rozsah Dátumu"}},gne={menu_title:{account_settings:"Nastavenia účtu",company_information:"Informácie o Firme",customization:"Prispôsobenie",preferences:"Preferencie",notifications:"Upozornenia",tax_types:"Typy Daní",expense_category:"Kategórie cenových odhadov",update_app:"Aktualizovať Aplikáciu",backup:"Záloha",file_disk:"Súborový disk",custom_fields:"Vlastné Polia",payment_modes:"Spôsoby Platby",notes:"Poznámky",exchange_rate:"Exchange Rate",address_information:"Address Information"},address_information:{section_description:" You can update Your Address information using form below."},title:"Nastavenia",setting:"Nastavenia | Nastavenia",general:"Všeobecné",language:"Jazyk",primary_currency:"Hlavná Mena",timezone:"Časové Pásmo",date_format:"Formát Dátumu",currencies:{title:"Meny",currency:"Mena | Meny",currencies_list:"Zoznam Mien",select_currency:"Vyberte Menu",name:"Meno",code:"Kód",symbol:"Symbol",precision:"Presnosť",thousand_separator:"Oddelovač Tisíciek",decimal_separator:"Oddelovač Desatinných Miest",position:"Pozícia",position_of_symbol:"Pozícia Symbolu",right:"Vpravo",left:"Vľavo",action:"Akcia",add_currency:"Pridať novú Menu"},mail:{host:"Host E-mailu",port:"Port E-mailu",driver:"Driver E-mailu",secret:"Tajný Kľúč (secret)",mailgun_secret:"Tajný kľúč Mailgun (secret)",mailgun_domain:"Doména",mailgun_endpoint:"Endpoint Mailgun",ses_secret:"SES Tajný Kľúč (secret)",ses_key:"SES kľúč (key)",password:"E-mailové heslo",username:"E-mailové meno (username)",mail_config:"Konfigurácia E-mailov",from_name:"Meno odosielateľa",from_mail:"E-mail odosielateľa",encryption:"E-mailová Enkrypcia",mail_config_desc:"Nižšie nájdete konfiguráciu E-mailu použitého k odosielaniu E-mailov z aplikácie InvoiceShelf. Môžete taktiež nastaviť spojenie so službami tretích strán ako napríklad Sendgrid, SES a pod."},pdf:{title:"Nastavenia PDF",footer_text:"Text v pätičke",pdf_layout:"Rozloženie PDF"},company_info:{company_info:"Informácie o spoločnosti",company_name:"Názov spoločnosti",company_logo:"Logo spoločnosti",section_description:"Informácie o Vašej firme, ktoré budú zobrazené na faktúrach, cenových odhadoch a iných dokumentoch vytvorených vďaka Creater.",phone:"Telefón",country:"Krajina",state:"Štát",city:"Mesto",address:"Adresa",zip:"PSČ",save:"Uložiť",delete:"Delete",updated_message:"Informácie o firme úspešne aktualizované",delete_company:"Delete Company",delete_company_description:"Once you delete your company, you will lose all the data and files associated with it permanently.",are_you_absolutely_sure:"Are you absolutely sure?",delete_company_modal_desc:"This action cannot be undone. This will permanently delete {company} and all of its associated data.",delete_company_modal_label:"Please type {company} to confirm"},custom_fields:{title:"Vlastné Polia",section_description:"Personalizujte si Faktúry, Cenové Odhady a Potvrdenia o platbe pomocou vlastných polí. Uistite sa, že ste nižšie vytvorené polia použili v formáte adresy na stránke nastavení personalizácie.",add_custom_field:"Pridať Vlastné Pole",edit_custom_field:"Upraviť Vlastné Pole",field_name:"Meno Poľa",label:"Značka",type:"Typ",name:"Názov",slug:"Slug",required:"Povinné",placeholder:"Umiestnenie",help_text:"Pomocný Text",default_value:"Predvolená hodnota",prefix:"Predpona",starting_number:"Počiatočné Číslo",model:"Model",help_text_description:"Napíšte popis aby užívatelia lepšie pochopili význam tohto poľa.",suffix:"Prípona",yes:"Áno",no:"Nie",order:"Objednať",custom_field_confirm_delete:"Nebudete môcť obnovit toto vlastné pole",already_in_use:"Toto vlastne pole sa už používa",deleted_message:"Vlastné pole úspešne vymazané",options:"možnosti",add_option:"Pridať Možnosti",add_another_option:"Pridať ďaľšiu možnostť",sort_in_alphabetical_order:"Zoradiť v abecednom poradí",add_options_in_bulk:"Pridať hromadné možnosti",use_predefined_options:"Použiť predvolené možnosti",select_custom_date:"Vybrat vlastný dátum",select_relative_date:"Vybrať Relatívny Dátum",ticked_by_default:"Predvolene označené",updated_message:"Vlastné pole úspešne aktualizované",added_message:"Vlastne pole úspešne pridané",press_enter_to_add:"Press enter to add new option",model_in_use:"Cannot update model for fields which are already in use.",type_in_use:"Cannot update type for fields which are already in use."},customization:{customization:"Prispôsobenie",updated_message:"Informácie o firme úspešne aktualizované",save:"Uložiť",insert_fields:"Insert Fields",learn_custom_format:"Learn how to use custom format",add_new_component:"Add New Component",component:"Component",Parameter:"Parameter",series:"Series",series_description:"To set a static prefix/postfix like 'INV' across your company. It supports character length of up to 6 chars.",series_param_label:"Series Value",delimiter:"Delimiter",delimiter_description:"Single character for specifying the boundary between 2 separate components. By default its set to -",delimiter_param_label:"Delimiter Value",date_format:"Date Format",date_format_description:"A local date and time field which accepts a format parameter. The default format: 'Y' renders the current year.",date_format_param_label:"Format",sequence:"Sequence",sequence_description:"Consecutive sequence of numbers across your company. You can specify the length on the given parameter.",sequence_param_label:"Sequence Length",customer_series:"Customer Series",customer_series_description:"To set a different prefix/postfix for each customer.",customer_sequence:"Customer Sequence",customer_sequence_description:"Consecutive sequence of numbers for each of your customer.",customer_sequence_param_label:"Sequence Length",random_sequence:"Random Sequence",random_sequence_description:"Random alphanumeric string. You can specify the length on the given parameter.",random_sequence_param_label:"Sequence Length",invoices:{title:"Faktúry",invoice_number_format:"Invoice Number Format",invoice_number_format_description:"Customize how your invoice number gets generated automatically when you create a new invoice.",preview_invoice_number:"Preview Invoice Number",due_date:"Due Date",due_date_description:"Specify how due date is automatically set when you create an invoice.",due_date_days:"Invoice Due after days",set_due_date_automatically:"Set Due Date Automatically",set_due_date_automatically_description:"Enable this if you wish to set due date automatically when you create a new invoice.",default_formats:"Default Formats",default_formats_description:"Below given formats are used to fill up the fields automatically on invoice creation.",default_invoice_email_body:"Prednastavené telo e-mailu faktúry",company_address_format:"Formát firemnej adresy",shipping_address_format:"Formát doručovacej adresy",billing_address_format:"Formát fakturačnej adresy",invoice_email_attachment:"Send invoices as attachments",invoice_email_attachment_setting_description:"Enable this if you want to send invoices as email attachment. Please note that 'View Invoice' button in emails will not be displayed anymore when enabled.",invoice_settings_updated:"Invoice Settings updated successfully",retrospective_edits:"Retrospective Edits",allow:"Allow",disable_on_invoice_partial_paid:"Disable after partial payment is recorded",disable_on_invoice_paid:"Disable after full payment is recorded",disable_on_invoice_sent:"Disable after invoice is sent",retrospective_edits_description:" Based on your country's laws or your preference, you can restrict users from editing finalised invoices."},estimates:{title:"Cenový odhad",estimate_number_format:"Estimate Number Format",estimate_number_format_description:"Customize how your estimate number gets generated automatically when you create a new estimate.",preview_estimate_number:"Preview Estimate Number",expiry_date:"Expiry Date",expiry_date_description:"Specify how expiry date is automatically set when you create an estimate.",expiry_date_days:"Estimate Expires after days",set_expiry_date_automatically:"Set Expiry Date Automatically",set_expiry_date_automatically_description:"Enable this if you wish to set expiry date automatically when you create a new estimate.",default_formats:"Default Formats",default_formats_description:"Below given formats are used to fill up the fields automatically on estimate creation.",default_estimate_email_body:"Prednastavené telo e-mailu cenového dohadu",company_address_format:"Formát firemnej adresy",shipping_address_format:"Formát fakturačnej adresy",billing_address_format:"Formát fakturačnej adresy",estimate_email_attachment:"Send estimates as attachments",estimate_email_attachment_setting_description:"Enable this if you want to send the estimates as an email attachment. Please note that 'View Estimate' button in emails will not be displayed anymore when enabled.",estimate_settings_updated:"Estimate Settings updated successfully",convert_estimate_options:"Estimate Convert Action",convert_estimate_description:"Specify what happens to the estimate after it gets converted to an invoice.",no_action:"No action",delete_estimate:"Delete estimate",mark_estimate_as_accepted:"Mark estimate as accepted"},payments:{title:"Platby",payment_number_format:"Payment Number Format",payment_number_format_description:"Customize how your payment number gets generated automatically when you create a new payment.",preview_payment_number:"Preview Payment Number",default_formats:"Default Formats",default_formats_description:"Below given formats are used to fill up the fields automatically on payment creation.",default_payment_email_body:"Prednastavené telo e-mailu platby",company_address_format:"Formát firemnej adresy",from_customer_address_format:"Z formátu adresy zákazníka",payment_email_attachment:"Send payments as attachments",payment_email_attachment_setting_description:"Enable this if you want to send the payment receipts as an email attachment. Please note that 'View Payment' button in emails will not be displayed anymore when enabled.",payment_settings_updated:"Payment Settings updated successfully"},items:{title:"Položky",units:"Jednotky",add_item_unit:"Pridať Jednotku",edit_item_unit:"Upraviť Jednotku",unit_name:"Názov Jednotky",item_unit_added:"Jednotka úspešne pridaná",item_unit_updated:"Jednotka úspešne aktualizovaná",item_unit_confirm_delete:"Nebudete môcť obnoviť túto Jednotku",already_in_use:"Jednotká sa práve používa",deleted_message:"Jednotka úspešne odstránena"},notes:{title:"Poznámky",description:"Ušetrite čas vytváraním poznámok a ich opätovným použitím vo svojich faktúrach, odhadoch a platbách.",notes:"Poznámky",type:"Typ",add_note:"Pridať poznámku",add_new_note:"Pridať Novú Poznámku",name:"Názov",edit_note:"Upraviť poznámku",note_added:"Poznámka úspešne pridaná",note_updated:"Poznámka úspešne aktualizovaná",note_confirm_delete:"Nebudete môcť obnoviť túto Poznámku",already_in_use:"Poznámka sa práve používa",deleted_message:"Poznámka úspešne odstránena"}},account_settings:{profile_picture:"Profilová Fotka",name:"Meno",email:"Email",password:"Heslo",confirm_password:"Potvrdiť heslo",account_settings:"Nastavenie účtu",save:"Uložiť",section_description:"Svoje meno, e-mail a heslo môžete aktualizovať pomocou formulára nižšie.",updated_message:"Nastavenia účtu boli úspešne aktualizované"},user_profile:{name:"Meno",email:"Email",password:"Heslo",confirm_password:"Potvrdiť heslo"},notification:{title:"Upozornenia",email:"Odoslať upozornenie",description:"Ktoré e-mailové upozornenia chcete dostávať keď sa niečo zmení?",invoice_viewed:"Faktúra zobrazená",invoice_viewed_desc:"Keď si váš zákazník prezerá faktúru odoslanú cez Hlavný Panel.",estimate_viewed:"Cenový odhad zobrazený",estimate_viewed_desc:"Keď si váš zákazník prezerá cenový odhad odoslaný cez Hlavný Panel.",save:"Uložiť",email_save_message:"E-mail bol úspešne uložený",please_enter_email:"Zadajte e-mail"},roles:{title:"Roles",description:"Manage the roles & permissions of this company",save:"Save",add_new_role:"Add New Role",role_name:"Role Name",added_on:"Added on",add_role:"Add Role",edit_role:"Edit Role",name:"Name",permission:"Permission | Permissions",select_all:"Select All",none:"None",confirm_delete:"You will not be able to recover this Role",created_message:"Role created successfully",updated_message:"Role updated successfully",deleted_message:"Role deleted successfully",already_in_use:"Role is already in use"},exchange_rate:{exchange_rate:"Exchange Rate",title:"Fix Currency Exchange issues",description:"Please enter exchange rate of all the currencies mentioned below to help InvoiceShelf properly calculate the amounts in {currency}.",drivers:"Drivers",new_driver:"Add New Provider",edit_driver:"Edit Provider",select_driver:"Select Driver",update:"select exchange rate ",providers_description:"Configure your exchange rate providers here to automatically fetch the latest exchange rate on transactions.",key:"API Key",name:"Name",driver:"Driver",is_default:"IS DEFAULT",currency:"Currencies",exchange_rate_confirm_delete:"You will not be able to recover this driver",created_message:"Provider Created successfully",updated_message:"Provider Updated Successfully",deleted_message:"Provider Deleted Successfully",error:" You cannot Delete Active Driver",default_currency_error:"This currency is already used in one of the Active Provider",exchange_help_text:"Enter exchange rate to convert from {currency} to {baseCurrency}",currency_freak:"Currency Freak",currency_layer:"Currency Layer",open_exchange_rate:"Open Exchange Rate",currency_converter:"Currency Converter",server:"Server",url:"URL",active:"Active",currency_help_text:"This provider will only be used on above selected currencies",currency_in_used:"The following currencies are already active on another provider. Please remove these currencies from selection to activate this provider again."},tax_types:{title:"Typ daní",add_tax:"Pridať daň",edit_tax:"Upraviť Daň",description:"Môžete pridať alebo odobrať dane. InvoiceShelf podporuje dane jednotlivých položiek aj na faktúre.",add_new_tax:"Pridať Novú Daň",tax_settings:"Nastavenia daní",tax_per_item:"Daň pre každú Položku zvlášť",tax_name:"Názov Dane",compound_tax:"Zložená daň",percent:"Percento",action:"Akcia",tax_setting_description:"Túto možnosť povoľte, ak chcete pridať dane k jednotlivým položkám faktúr. Štandardne sa dane pripočítavajú priamo k faktúre.",created_message:"Daň úspešne vytvorená",updated_message:"Daň úspešne aktualizovaná",deleted_message:"Daň úspešne odstránená",confirm_delete:"Nebudete môcť obnoviť daň",already_in_use:"Daň už sa už požíva"},payment_modes:{title:"Payment Modes",description:"Modes of transaction for payments",add_payment_mode:"Add Payment Mode",edit_payment_mode:"Edit Payment Mode",mode_name:"Mode Name",payment_mode_added:"Payment Mode Added",payment_mode_updated:"Payment Mode Updated",payment_mode_confirm_delete:"You will not be able to recover this Payment Mode",payments_attached:"This payment method is already attached to payments. Please delete the attached payments to proceed with deletion.",expenses_attached:"This payment method is already attached to expenses. Please delete the attached expenses to proceed with deletion.",deleted_message:"Payment Mode deleted successfully"},expense_category:{title:"Kategórie výdajov",action:"Akcia",description:"Na pridanie položiek výdavkov sú povinné kategórie. Tieto kategórie môžete pridať alebo odstrániť podľa svojich preferencií.",add_new_category:"Pridať Novú Kategóriu",add_category:"Pridať Kategóriu",edit_category:"Upraviť Kategóriu",category_name:"Názov Kategórie",category_description:"Popis",created_message:"Kategória cenového odhadu úspešne vytvorená",deleted_message:"Kategória cenového odhadu úspešne odstránena",updated_message:"Kategória cenového odhadu úspešne aktualizovaná",confirm_delete:"Nebudete môcť obnoviť túto kategóriu cenových odhadov",already_in_use:"Kategória sa už používa"},preferences:{currency:"Mena",default_language:"Predvolený Jazyk",time_zone:"Časové Pásmo",fiscal_year:"Fiškálny Rok",date_format:"Formát Dátumu",discount_setting:"Nastavenia Zľavy",discount_per_item:"Zľava pre každú Položku zvlášť ",discount_setting_description:"Túto možnosť povoľte, ak chcete pridať zľavu k jednotlivým položkám faktúry. Štandardne sa zľava pripočítava priamo k faktúre.",expire_public_links:"Automatically Expire Public Links",expire_setting_description:"Specify whether you would like to expire all the links sent by application to view invoices, estimates & payments, etc after a specified duration.",save:"Uložiť",preference:"Preferencie | Preferencie",general_settings:"Systémovo predvolené preferencie.",updated_message:"Preferencie úspešne aktualizované",select_language:"Vyberte Jazyk",select_time_zone:"Vyberte Časové Pásmo",select_date_format:"Vybrať Formát Dátumu",select_financial_year:"Vyberte Fiškálny Rok",recurring_invoice_status:"Recurring Invoice Status",create_status:"Create Status",active:"Active",on_hold:"On Hold",update_status:"Update Status",completed:"Completed",company_currency_unchangeable:"Company currency cannot be changed"},update_app:{title:"Aktualizovať Aplikáciu",description:"Aplikáciu môžte jednoducho aktualizovať tlačitkom nižšie",check_update:"Skontrolovať Aktualizácie",avail_update:"Nová aktualizácia je k dispozícii",next_version:"Ďalšia Verzia",requirements:"Požiadavky",update:"Aktualizovať",update_progress:"Aktualizácia prebieha...",progress_text:"Bude to trvať len pár minút. Pred dokončením aktualizácie neobnovujte obrazovku ani nezatvárajte okno.",update_success:"App bola aktualizovaná! Počkajte, kým sa okno vášho prehliadača načíta automaticky.",latest_message:"Nie je k dispozícii žiadna aktualizácia! Používate najnovšiu verziu.",current_version:"Aktuálna verzia",download_zip_file:"Stiahnuť ZIP súbor",unzipping_package:"Rozbaliť balík",copying_files:"Kopírovanie súborov",deleting_files:"Deleting Unused files",running_migrations:"Prebieha Migrácia",finishing_update:"Ukončovanie Aktualizácie",update_failed:"Aktualizácia zlyhala!",update_failed_text:"Aktualizácia zlyhala na : {step} kroku",update_warning:"All of the application files and default template files will be overwritten when you update the application using this utility. Please take a backup of your templates & database before updating."},backup:{title:"Záloha | Zálohy",description:"Záloha je vo formáte zip ktorý obsahuje všetky súbory v adresároch vrátane výpisu z databázy.",new_backup:"Vytvoriť zálohu",create_backup:"Vytvoriť zálohu",select_backup_type:"Vybrať typ zálohy",backup_confirm_delete:"Nebude možné obnoviť túto zálohu",path:"cesta",new_disk:"Nový Disk",created_at:"vytvorené",size:"velkost",dropbox:"dropbox",local:"local",healthy:"v poriadku",amount_of_backups:"počet záloh",newest_backups:"najnovšie zálohy",used_storage:"využité miesto na disku",select_disk:"Vybrať disk",action:"Akcia",deleted_message:"Záloha úspešne vymazaná",created_message:"Záloha úspešne vytvorená",invalid_disk_credentials:"Nesprávne prihlasovacie údaje na disk"},disk:{title:"File Disk | File Disks",description:"V predvolenom nastavení použije InvoiceShelf váš lokálny disk na ukladanie záloh, avatarov a iných obrazových súborov. Môžete nakonfigurovať viac ako jeden disku ako napr. DigitalOcean, S3 a Dropbox podľa vašich preferencií.",created_at:"vytvorené",dropbox:"Dropbox",name:"Názov",driver:"Driver",disk_type:"Typ",disk_name:"Názov Disku",new_disk:"Pridať Nový Disk",filesystem_driver:"Driver systémových súborov",local_driver:"lokálny Driver",local_root:"Lokálka Cesta (root)",public_driver:"Verejný Driver",public_root:"Verejná Cesta (root)",public_url:"Verejná URL",public_visibility:"Viditeľné pre Verejnosť",media_driver:"Driver médií",media_root:"Root médií",aws_driver:"AWS Driver",aws_key:"AWS Kľúč (key)",aws_secret:"AWS Tajný Kľúč (secret)",aws_region:"AWS Región",aws_bucket:"AWP Bucket",aws_root:"AWP Cesta (root)",do_spaces_type:"Do Spaces type",do_spaces_key:"Do Spaces key",do_spaces_secret:"Do Spaces Secret",do_spaces_region:"Do Spaces Region",do_spaces_bucket:"Do Spaces Bucket",do_spaces_endpoint:"Do Spaces Endpoint",do_spaces_root:"Do Spaces Root",dropbox_type:"Dropbox Type",dropbox_token:"Dropbox Token",dropbox_key:"Dropbox Key",dropbox_secret:"Dropbox Secret",dropbox_app:"Dropbox App",dropbox_root:"Dropbox Root",default_driver:"Predvolený Driver",is_default:"Je predvolený",set_default_disk:"Nastaviť predvolený disk",set_default_disk_confirm:"This disk will be set as default and all the new PDFs will be saved on this disk",success_set_default_disk:"Disk úspešne nastavený ako predvolený",save_pdf_to_disk:"Ulož PDFs na Disk",disk_setting_description:"Túto možnosť povoľte ak si chcete automaticky uložiť kópiu každého súboru PDF s fakturami, odhadmi a príjmami na predvolený disk. Použitím tejto možnosti skrátite dobu načítania pri prezeraní súborov PDF.",select_disk:"Vybrať Disk",disk_settings:"Nastavenie Disku",confirm_delete:"Vaše existujúce súbory a priečinky na zadanom disku nebudú ovplyvnené ale konfigurácia vášho disku bude odstránená z InvoiceShelfu",action:"Akcia",edit_file_disk:"Upravit Disk",success_create:"Disk úspešne pridaný",success_update:"Disk úspešne aktualizovaný",error:"Pridanie disku zlyhalo",deleted_message:"Disk bol úspešne odstránený",disk_variables_save_successfully:"Disk bol úspešne pridaný",disk_variables_save_error:"Konfigurácia disku zlyhala.",invalid_disk_credentials:"Neplatné prihlasovacie údaje pre Disk"},taxations:{add_billing_address:"Enter Billing Address",add_shipping_address:"Enter Shipping Address",add_company_address:"Enter Company Address",modal_description:"The information below is required in order to fetch sales tax.",add_address:"Add Address for fetching sales tax.",address_placeholder:"Example: 123, My Street",city_placeholder:"Example: Los Angeles",state_placeholder:"Example: CA",zip_placeholder:"Example: 90024",invalid_address:"Please provide valid address details."}},vne={account_info:"Informácie o účte",account_info_desc:"Nižšie uvedené podrobnosti sa použijú na vytvorenie hlavného účtu správcu. Tie môžete kedykoľvek zmeniť po prihlásení.",name:"Meno",email:"Email",password:"Heslo",confirm_password:"Potvrdiť heslo",save_cont:"Uložiť a pokračovať",company_info:"Firemné údaje",company_info_desc:"Tieto informácie sa zobrazia na faktúrach. Neskôr ich však môžete upraviť.",company_name:"Názov firmy",company_logo:"Firemné logo",logo_preview:"Náhľad loga",preferences:"Preferencie",preferences_desc:"Predvolené nastavenie systému.",currency_set_alert:"The company's currency cannot be changed later.",country:"Krajina",state:"Štát",city:"Mesto",address:"Adresa",street:"Ulica1 | Ulica2",phone:"Telefón",zip_code:"PSČ",go_back:"Naspäť",currency:"Mena",language:"Jazyk",time_zone:"Časové pásmo",fiscal_year:"Fiškálny rok",date_format:"Formát dátumu",from_address:"Z adresy",username:"Prihlasovacie meno",next:"Ďaľší",continue:"Pokračovať",skip:"Vynechať",database:{database:"URL Adresa Aplikácie a Databáza",connection:"Pripojenie k databáze",host:"Databáza - Host",port:"Databáza - Port",password:"Heslo do databázy",app_url:"URL Adresa Aplikácie",app_domain:"Doména aplikácie",username:"Prihlasovacie meno do databázy",db_name:"Názov databázy",db_path:"Databázá - cesta (path)",desc:"Vytvorte databázu na svojom serveri a pomocou nasledujúceho formulára nastavte poverenia."},permissions:{permissions:"Oprávnenia",permission_confirm_title:"Ste si istý že chcete pokračovať?",permission_confirm_desc:"Nedostatočné oprávnenia na priečinky inštalácie",permission_desc:"Nižšie je uvedený zoznam povolení priečinkov ktoré sú potrebné na fungovanie aplikácie. Ak kontrola povolení zlyhá nezabudnite aktualizovať povolenia priečinka."},verify_domain:{title:"Domain Verification",desc:"InvoiceShelf uses Session based authentication which requires domain verification for security purposes. Please enter the domain on which you will be accessing your web application.",app_domain:"App Domain",verify_now:"Verify Now",success:"Domain Verify Successfully.",failed:"Domain verification failed. Please enter valid domain name.",verify_and_continue:"Verify And Continue"},mail:{host:"Mail Host",port:"Mail Port",driver:"Mail Driver",secret:"Secret",mailgun_secret:"Mailgun Secret",mailgun_domain:"Domain",mailgun_endpoint:"Mailgun Endpoint",ses_secret:"SES Secret",ses_key:"SES Key",password:"Mail Password",username:"Mail Username",mail_config:"Mail Configuration",from_name:"From Mail Name",from_mail:"From Mail Address",encryption:"Mail Encryption",mail_config_desc:"Nižšie je uvedený formulár na konfiguráciu ovládača e-mailu na odosielanie e-mailov z aplikácie. Môžete tiež nakonfigurovať aj externých poskytovateľov napríklad Sendgrid apod."},req:{system_req:"Systémové požiadavky",php_req_version:"Php (verzia {version} požadovaná)",check_req:"Skontrolujte požiadavky",system_req_desc:"InvoiceShelf má niekoľko požiadaviek na server. Skontrolujte či má váš server požadovanú verziu php a všetky moduly uvedené nižšie."},errors:{migrate_failed:"Migráci zlyhala",database_variables_save_error:"Nie je možné zapísať konfiguráciu do .env file. Skontrolujte oprávnenia",mail_variables_save_error:"Konfigurácia emailu zlyhala.",connection_failed:"Pripojenie k databáze zlyhalo",database_should_be_empty:"Databáza musí byť prázdna"},success:{mail_variables_save_successfully:"Email úspešne nakonfigurovaný",database_variables_save_successfully:"Databáza úspešne nakonfigurovaná."}},yne={invalid_phone:"Zlé telefónné číslo",invalid_url:"Nesprávna URL adresa (ex: http://www.invoiceshelf.com)",invalid_domain_url:"Nesprávna URL (ex: invoiceshelf.com)",required:"Povinné pole",email_incorrect:"Zlý email.",email_already_taken:"Email sa uz používa.",email_does_not_exist:"Používateľ s týmto emailom neexistuje.",item_unit_already_taken:"Názov tejto položky sa už používa",payment_mode_already_taken:"Názov tohto typu platby sa už používa",send_reset_link:"Odoslať resetovací link",not_yet:"Email ešte neprišiel? Znova odoslať",password_min_length:"Heslo musí obsahovať {count} znaky",name_min_length:"Meno musí mať minimálne {count} písmen.",prefix_min_length:"Prefix must have at least {count} letters.",enter_valid_tax_rate:"Zadajte platnú sadzbu dane",numbers_only:"Iba čísla.",characters_only:"Iba znaky.",password_incorrect:"Heslá musia byť rovnaké",password_length:"Heslo musi obsahovať minimálne {count} znakov.",qty_must_greater_than_zero:"Množstvo musí byť viac ako 0.",price_greater_than_zero:"Cena musí byť viac ako 0.",payment_greater_than_zero:"Platba musí byť viac ako 0.",payment_greater_than_due_amount:"Zadaná platba je vyššia ako suma na faktúre.",quantity_maxlength:"Množstvo by nemalo obsahovať ako 20 číslic.",price_maxlength:"Cena by nemala obsahovať viac ako 20 číslic.",price_minvalue:"Suma musi byť vyššia ako 0.",amount_maxlength:"Čiastka by nemala obsahovať viac ako 20 číslic.",amount_minvalue:"Čiastka musí byť vačšia ako 0.",discount_maxlength:"Discount should not be greater than max discount",description_maxlength:"Popis nesmie obsahovať viac ako 255 znaokv.",subject_maxlength:"Predmet nesmie obsahovať viac ako 100 znakov.",message_maxlength:"Správa nesmie obsahovať viac ako 255 znakov.",maximum_options_error:"Maximálny počet z {max} možnosti vybraný. Najprv odstránte aspoň jednu možnost a následne vyberte inú.",notes_maxlength:"Poznámky nesmú obsahovať viac ako 100 znakov.",address_maxlength:"Adresa nesmie obsahovať viac ako 255 znakov",ref_number_maxlength:"Referenčné čislo nesmie obsahovať viac ako 255 znakov",prefix_maxlength:"Predpona nesmie mať viac ako 5 znakov.",something_went_wrong:"Niečo neprebehlo v poriadku, odskúšajte prosím znova.",number_length_minvalue:"Number length should be greater than 0",at_least_one_ability:"Please select atleast one Permission.",valid_driver_key:"Please enter a valid {driver} key.",valid_exchange_rate:"Please enter a valid exchange rate.",company_name_not_same:"Company name must match with given name."},bne={starter_plan:"This feature is available on Starter plan and onwards!",invalid_provider_key:"Please Enter Valid Provider API Key.",estimate_number_used:"The estimate number has already been taken.",invoice_number_used:"The invoice number has already been taken.",payment_attached:"This invoice already has a payment attached to it. Make sure to delete the attached payments first in order to go ahead with the removal.",payment_number_used:"The payment number has already been taken.",name_already_taken:"The name has already been taken.",receipt_does_not_exist:"Receipt does not exist.",customer_cannot_be_changed_after_payment_is_added:"Customer cannot be change after payment is added",invalid_credentials:"Invalid Credentials.",not_allowed:"Not Allowed",login_invalid_credentials:"These credentials do not match our records.",enter_valid_cron_format:"Please enter a valid cron format",email_could_not_be_sent:"Email could not be sent to this email address.",invalid_address:"Please enter a valid address.",invalid_key:"Please enter valid key.",invalid_state:"Please enter a valid state.",invalid_city:"Please enter a valid city.",invalid_postal_code:"Please enter a valid zip.",invalid_format:"Please enter valid query string format.",api_error:"Server not responding.",feature_not_enabled:"Feature not enabled.",request_limit_met:"Api request limit exceeded.",address_incomplete:"Incomplete Address"},kne="Cenový odhad",wne="Číslo cenového odhadu",xne="Dátum cenového odhadu",Dne="Platnosť cenového odhadu",Sne="Faktúra",zne="Číslo faktúry",Pne="Dátum vystavenia",Ene="Dátum splatnosti",Ane="Poznámky",Cne="Položky",jne="Počet",Tne="Cena",Ine="Zľava",Nne="Celkom",Fne="Medzisúčet",Mne="Súčet",Rne="Payment",One="Doklad o zaplatení",$ne="Dátum platby",Lne="Číslo platby",Bne="Spôsob platby",Une="Prijatá suma",Vne="Report výdajov",qne="Celkové výdaje",Hne="Zisky a straty",Wne="Sales Customer Report",Kne="Sales Item Report",Yne="Tax Summary Report",Zne="Príjem",Gne="Čistý príjem",Qne="Report predajov: Podľa zákazníkov",Jne="Celkové predaje",Xne="Report predajov: Podľa položky",eie="Report daní",tie="Celkové dane",aie="Typy daní",nie="Výdaje",iie="Fakturovať,",oie="Doručiť,",rie="Prijaté od:",sie="Tax",lie={navigation:Xae,general:ene,dashboard:tne,tax_types:ane,global_search:nne,company_switcher:ine,dateRange:one,customers:rne,items:sne,estimates:lne,invoices:cne,recurring_invoices:dne,payments:une,expenses:_ne,login:mne,modules:pne,users:fne,reports:hne,settings:gne,wizard:vne,validation:yne,errors:bne,pdf_estimate_label:kne,pdf_estimate_number:wne,pdf_estimate_date:xne,pdf_estimate_expire_date:Dne,pdf_invoice_label:Sne,pdf_invoice_number:zne,pdf_invoice_date:Pne,pdf_invoice_due_date:Ene,pdf_notes:Ane,pdf_items_label:Cne,pdf_quantity_label:jne,pdf_price_label:Tne,pdf_discount_label:Ine,pdf_amount_label:Nne,pdf_subtotal:Fne,pdf_total:Mne,pdf_payment_label:Rne,pdf_payment_receipt_label:One,pdf_payment_date:$ne,pdf_payment_number:Lne,pdf_payment_mode:Bne,pdf_payment_amount_received_label:Une,pdf_expense_report_label:Vne,pdf_total_expenses_label:qne,pdf_profit_loss_label:Hne,pdf_sales_customers_label:Wne,pdf_sales_items_label:Kne,pdf_tax_summery_label:Yne,pdf_income_label:Zne,pdf_net_profit_label:Gne,pdf_customer_sales_report:Qne,pdf_total_sales_label:Jne,pdf_item_sales_label:Xne,pdf_tax_report_label:eie,pdf_total_tax_label:tie,pdf_tax_types_label:aie,pdf_expenses_label:nie,pdf_bill_to:iie,pdf_ship_to:oie,pdf_received_from:rie,pdf_tax_label:sie},cie={dashboard:"Bảng điều khiển",customers:"Khách hàng",items:"Mặt hàng",invoices:"Hóa đơn","recurring-invoices":"Hóa đơn định kỳ",expenses:"Chi phí",estimates:"Ước tính",payments:"Thanh toán",reports:"Báo cáo",settings:"Cài đặt",logout:"Đăng xuất",users:"Người dùng",modules:"Modules"},die={add_company:"Thêm công ty",view_pdf:"Xem PDF",copy_pdf_url:"Sao chép Url PDF",download_pdf:"tải PDF",save:"Tiết kiệm",create:"Tạo nên",cancel:"Huỷ bỏ",update:"Cập nhật",deselect:"Bỏ chọn",download:"Tải xuống",from_date:"Từ ngày",to_date:"Đến nay",from:"Từ",to:"Đến",ok:"OK",yes:"Đúng",no:"Không",sort_by:"Sắp xếp theo",ascending:"Tăng dần",descending:"Giảm dần",subject:"Môn học",body:"Thân hình",message:"Thông điệp",send:"Gửi",preview:"Xem trước",go_back:"Quay lại",back_to_login:"Quay lại đăng nhập?",home:"Trang Chủ",filter:"Bộ lọc",delete:"Xóa bỏ",edit:"Biên tập",view:"Lượt xem",add_new_item:"Thêm mục mới",clear_all:"Làm sạch tất cả",showing:"Hiển thị",of:"của",actions:"Hành động",subtotal:"TIÊU ĐỀ",discount:"GIẢM GIÁ",fixed:"đã sửa",percentage:"Phần trăm",tax:"THUẾ",total_amount:"TỔNG CỘNG",bill_to:"Hoa đơn để",ship_to:"Tàu",due:"Đến hạn",draft:"Bản nháp",sent:"Gởi",all:"Tất cả",select_all:"Chọn tất cả",select_template:"Chọn Template",choose_file:"Bấm vào đây để chọn một tập tin",choose_template:"Chọn một mẫu",choose:"Chọn",remove:"Tẩy",select_a_status:"Chọn một trạng thái",select_a_tax:"Chọn thuế",search:"Tìm kiếm",are_you_sure:"Bạn có chắc không?",list_is_empty:"Danh sách trống.",no_tax_found:"Không tìm thấy thuế!",four_zero_four:"404",you_got_lost:"Rất tiếc! Bạn bị lạc rồi!",go_home:"Về nhà",test_mail_conf:"Kiểm tra cấu hình thư",send_mail_successfully:"Thư đã được gửi thành công",setting_updated:"Đã cập nhật cài đặt thành công",select_state:"Chọn trạng thái",select_country:"Chọn quốc gia",select_city:"Lựa chọn thành phố",street_1:"đường số 1",street_2:"Đường 2",action_failed:"Diễn: Đã thất bại",retry:"Thử lại",choose_note:"Chọn Ghi chú",no_note_found:"Không tìm thấy ghi chú",insert_note:"Chèn ghi chú",copied_pdf_url_clipboard:"Đã sao chép url PDF vào khay nhớ tạm!",copied_url_clipboard:"Copied url to clipboard!",docs:"Tài liệu",do_you_wish_to_continue:"Bạn có muốn tiếp tục không?",note:"Ghi chú",pay_invoice:"Pay Invoice",login_successfully:"Logged in successfully!",logged_out_successfully:"Logged out successfully",mark_as_default:"Đánh dấu mặc định"},uie={select_year:"Chọn năm",cards:{due_amount:"Số tiền đến hạn",customers:"Khách hàng",invoices:"Hóa đơn",estimates:"Ước tính",payments:"Payments"},chart_info:{total_sales:"Bán hàng",total_receipts:"Biên lai",total_expense:"Chi phí",net_income:"Thu nhập ròng",year:"Chọn năm"},monthly_chart:{title:"Bán hàng"},recent_invoices_card:{title:"Hóa đơn đến hạn",due_on:"Đến hạn vào",customer:"khách hàng",amount_due:"Số tiền đến hạn",actions:"Hành động",view_all:"Xem tất cả"},recent_estimate_card:{title:"Các ước tính gần đây",date:"Ngày",customer:"khách hàng",amount_due:"Số tiền đến hạn",actions:"Hành động",view_all:"Xem tất cả"}},_ie={name:"Tên",description:"Sự miêu tả",percent:"Phần trăm",compound_tax:"Thuế tổng hợp"},mie={search:"Tìm kiếm...",customers:"Khách hàng",users:"Người dùng",no_results_found:"Không tìm thấy kết quả nào"},pie={label:"Đổi doanh nghiệp",no_results_found:"Không tìm thấy kết quả nào",add_new_company:"Thêm doanh nghiệp",new_company:"Doanh nghiệp mới",created_message:"Khởi tạo doanh nghiệp thành công"},fie={today:"Hôm nay",this_week:"Tuần này",this_month:"Tháng này",this_quarter:"Quý này",this_year:"Năm nay",previous_week:"Tuần trước",previous_month:"Tháng trước",previous_quarter:"Quý trước",previous_year:"Năm trước",custom:"Tuỳ chỉnh"},hie={title:"Khách hàng",prefix:"Tiền tố",add_customer:"Thêm khách hàng",contacts_list:"Danh sách khách hàng",name:"Tên",mail:"Thư tín | Thư",statement:"Tuyên bố",display_name:"Tên hiển thị",primary_contact_name:"Tên liên hệ chính",contact_name:"Tên Liên lạc",amount_due:"Số tiền đến hạn",email:"E-mail",address:"Địa chỉ",phone:"Điện thoại",website:"Trang mạng",overview:"Tổng quat",invoice_prefix:"Tiền tố hóa đơn",estimate_prefix:"Tiền tố ước tính",payment_prefix:"Tiền tố thanh toán",enable_portal:"Bật Cổng thông tin",country:"Quốc gia",state:"Tiểu bang",city:"Tp.",zip_code:"Mã Bưu Chính",added_on:"Đã thêm vào",action:"Hoạt động",password:"Mật khẩu",confirm_password:"Xác nhận mật khẩu",street_number:"Số đường",primary_currency:"Tiền tệ chính",description:"Sự miêu tả",add_new_customer:"Thêm khách hàng mới",save_customer:"Lưu khách hàng",update_customer:"Cập nhật khách hàng",customer:"Khách hàng | Khách hàng",new_customer:"Khách hàng mới",edit_customer:"Chỉnh sửa khách hàng",basic_info:"Thông tin cơ bản",portal_access:"Portal Access",portal_access_text:"Would you like to allow this customer to login to the Customer Portal?",portal_access_url:"Customer Portal Login URL",portal_access_url_help:"Please copy & forward the above given URL to your customer for providing access.",billing_address:"Địa chỉ thanh toán",shipping_address:"Địa chỉ giao hàng",copy_billing_address:"Sao chép từ thanh toán",no_customers:"Chưa có khách hàng!",no_customers_found:"Không tìm thấy khách hàng nào!",no_contact:"Không có liên lạc",no_contact_name:"Không có tên liên hệ",list_of_customers:"Phần này sẽ chứa danh sách các khách hàng.",primary_display_name:"Tên hiển thị chính",select_currency:"Chọn đơn vị tiền tệ",select_a_customer:"Chọn một khách hàng",type_or_click:"Nhập hoặc nhấp để chọn",new_transaction:"Giao dịch mới",no_matching_customers:"Không có khách hàng phù hợp!",phone_number:"Số điện thoại",create_date:"Tạo ngày",confirm_delete:"Bạn sẽ không thể khôi phục khách hàng này và tất cả các Hóa đơn, Ước tính và Thanh toán có liên quan. | Bạn sẽ không thể khôi phục những khách hàng này và tất cả các Hóa đơn, Ước tính và Thanh toán có liên quan.",created_message:"Khách hàng được tạo thành công",updated_message:"Đã cập nhật khách hàng thành công",address_updated_message:"Address Information Updated succesfully",deleted_message:"Đã xóa khách hàng thành công | Đã xóa khách hàng thành công",edit_currency_not_allowed:"Không thể đổi tiền tệ khi bản dịch đã được tạo."},gie={title:"Mặt hàng",items_list:"Danh sách mặt hàng",name:"Tên",unit:"Đơn vị",description:"Sự miêu tả",added_on:"Đã thêm vào",price:"Giá bán",date_of_creation:"Ngày tạo",not_selected:"Không có mục nào được chọn",action:"Hoạt động",add_item:"Thêm mặt hàng",save_item:"Lưu mục",update_item:"Cập nhật mặt hàng",item:"Mặt hàng | Mặt hàng",add_new_item:"Thêm mục mới",new_item:"Vật phẩm mới",edit_item:"Chỉnh sửa mục",no_items:"Chưa có mặt hàng nào!",list_of_items:"Phần này sẽ chứa danh sách các mục.",select_a_unit:"chọn đơn vị",taxes:"Thuế",item_attached_message:"Không thể xóa một mục đã được sử dụng",confirm_delete:"Bạn sẽ không thể khôi phục Vật phẩm này | Bạn sẽ không thể khôi phục các Mục này",created_message:"Mục được tạo thành công",updated_message:"Đã cập nhật mặt hàng thành công",deleted_message:"Đã xóa mục thành công | Các mục đã được xóa thành công"},vie={title:"Ước tính",accept_estimate:"Accept Estimate",reject_estimate:"Reject Estimate",estimate:"Ước tính | Ước tính",estimates_list:"Danh sách ước tính",days:"{days} Ngày",months:"{tháng} tháng",years:"{năm} Năm",all:"Tất cả",paid:"Đã thanh toán",unpaid:"Chưa thanh toán",customer:"KHÁCH HÀNG",ref_no:"REF KHÔNG.",number:"CON SỐ",amount_due:"SỐ TIỀN ĐÚNG",partially_paid:"Thanh toán một phần",total:"Toàn bộ",discount:"Giảm giá",sub_total:"Tổng phụ",estimate_number:"Số ước tính",ref_number:"Số REF",contact:"Tiếp xúc",add_item:"Thêm một mặt hàng",date:"Ngày",due_date:"Ngày đáo hạn",expiry_date:"Ngày hết hạn",status:"Trạng thái",add_tax:"Thêm thuế",amount:"Số tiền",action:"Hoạt động",notes:"Ghi chú",tax:"Thuế",estimate_template:"Bản mẫu",convert_to_invoice:"Chuyển đổi sang hóa đơn",mark_as_sent:"Đánh dấu là Đã gửi",send_estimate:"Gửi ước tính",resend_estimate:"Gửi lại ước tính",record_payment:"Ghi lại Thanh toán",add_estimate:"Thêm ước tính",save_estimate:"Lưu ước tính",confirm_conversion:"Ước tính này sẽ được sử dụng để tạo Hóa đơn mới.",conversion_message:"Hóa đơn được tạo thành công",confirm_send_estimate:"Ước tính này sẽ được gửi qua email cho khách hàng",confirm_mark_as_sent:"Ước tính này sẽ được đánh dấu là đã gửi",confirm_mark_as_accepted:"Ước tính này sẽ được đánh dấu là Đã chấp nhận",confirm_mark_as_rejected:"Ước tính này sẽ được đánh dấu là Bị từ chối",no_matching_estimates:"Không có ước tính phù hợp!",mark_as_sent_successfully:"Ước tính được đánh dấu là đã gửi thành công",send_estimate_successfully:"Ước tính đã được gửi thành công",errors:{required:"Lĩnh vực được yêu cầu"},accepted:"Đã được chấp nhận",rejected:"Từ chối",expired:"Expired",sent:"Gởi",draft:"Bản nháp",viewed:"Viewed",declined:"Suy giảm",new_estimate:"Ước tính mới",add_new_estimate:"Thêm ước tính mới",update_Estimate:"Cập nhật ước tính",edit_estimate:"Chỉnh sửa ước tính",items:"mặt hàng",Estimate:"Ước tính | Ước tính",add_new_tax:"Thêm thuế mới",no_estimates:"Chưa có ước tính nào!",list_of_estimates:"Phần này sẽ chứa danh sách các ước tính.",mark_as_rejected:"Đánh dấu là bị từ chối",mark_as_accepted:"Đánh dấu là đã chấp nhận",marked_as_accepted_message:"Ước tính được đánh dấu là được chấp nhận",marked_as_rejected_message:"Ước tính được đánh dấu là bị từ chối",confirm_delete:"Bạn sẽ không thể khôi phục Ước tính này | Bạn sẽ không thể khôi phục các Ước tính này",created_message:"Ước tính được tạo thành công",updated_message:"Đã cập nhật ước tính thành công",deleted_message:"Đã xóa ước tính thành công | Đã xóa ước tính thành công",something_went_wrong:"có gì đó không ổn",item:{title:"Danh mục",description:"Sự miêu tả",quantity:"Định lượng",price:"Giá bán",discount:"Giảm giá",total:"Toàn bộ",total_discount:"Tổng khấu trừ",sub_total:"Tổng phụ",tax:"Thuế",amount:"Số tiền",select_an_item:"Nhập hoặc nhấp để chọn một mục",type_item_description:"Loại Mục Mô tả (tùy chọn)"},mark_as_default_estimate_template_description:"Nếu bật, mẫu đang chọn sẽ được tự động áp dụng cho ước tính mới."},yie={title:"Hóa đơn",download:"Download",pay_invoice:"Pay Invoice",invoices_list:"Danh sách hóa đơn",invoice_information:"Invoice Information",days:"{days} Ngày",months:"{tháng} tháng",years:"{năm} Năm",all:"Tất cả",paid:"Đã thanh toán",unpaid:"Chưa thanh toán",viewed:"Đã xem",overdue:"Quá hạn",completed:"Đã hoàn thành",customer:"KHÁCH HÀNG",paid_status:"TRẠNG THÁI ĐÃ TRẢ TIỀN",ref_no:"REF KHÔNG.",number:"CON SỐ",amount_due:"SỐ TIỀN ĐÚNG",partially_paid:"Thanh toán một phần",total:"Toàn bộ",discount:"Giảm giá",sub_total:"Tổng phụ",invoice:"Hóa đơn | Hóa đơn",invoice_number:"Số hóa đơn",ref_number:"Số REF",contact:"Tiếp xúc",add_item:"Thêm một mặt hàng",date:"Ngày",due_date:"Ngày đáo hạn",status:"Trạng thái",add_tax:"Thêm thuế",amount:"Số tiền",action:"Hoạt động",notes:"Ghi chú",view:"Lượt xem",send_invoice:"Gửi hóa đơn",resend_invoice:"Gửi lại hóa đơn",invoice_template:"Mẫu hóa đơn",conversion_message:"Hóa đơn được sao chép thành công",template:"Bản mẫu",mark_as_sent:"Đánh dấu là đã gửi",confirm_send_invoice:"Hóa đơn này sẽ được gửi qua email cho khách hàng",invoice_mark_as_sent:"Hóa đơn này sẽ được đánh dấu là đã gửi",confirm_mark_as_accepted:"Hóa đơn này sẽ được đánh dấu là Đã chấp nhận",confirm_mark_as_rejected:"Hóa đơn này sẽ được đánh dấu là Đã từ chối",confirm_send:"Hóa đơn này sẽ được gửi qua email cho khách hàng",invoice_date:"Ngày lập hóa đơn",record_payment:"Ghi lại Thanh toán",add_new_invoice:"Thêm hóa đơn mới",update_expense:"Cập nhật chi phí",edit_invoice:"Chỉnh sửa hóa đơn",new_invoice:"Hóa đơn mới",save_invoice:"Lưu hóa đơn",update_invoice:"Cập nhật hóa đơn",add_new_tax:"Thêm thuế mới",no_invoices:"Chưa có hóa đơn!",mark_as_rejected:"Đánh dấu là bị từ chối",mark_as_accepted:"Đánh dấu là đã chấp nhận",list_of_invoices:"Phần này sẽ chứa danh sách các hóa đơn.",select_invoice:"Chọn hóa đơn",no_matching_invoices:"Không có hóa đơn phù hợp!",mark_as_sent_successfully:"Hóa đơn được đánh dấu là đã gửi thành công",invoice_sent_successfully:"Hóa đơn đã được gửi thành công",cloned_successfully:"Hóa đơn được sao chép thành công",clone_invoice:"Hóa đơn nhân bản",confirm_clone:"Hóa đơn này sẽ được sao chép vào một Hóa đơn mới",item:{title:"Danh mục",description:"Sự miêu tả",quantity:"Định lượng",price:"Giá bán",discount:"Giảm giá",total:"Toàn bộ",total_discount:"Tổng khấu trừ",sub_total:"Tổng phụ",tax:"Thuế",amount:"Số tiền",select_an_item:"Nhập hoặc nhấp để chọn một mục",type_item_description:"Loại Mục Mô tả (tùy chọn)"},payment_attached_message:"Một trong các hóa đơn được chọn đã có một khoản thanh toán được đính kèm. Đảm bảo xóa các khoản thanh toán đính kèm trước để tiếp tục xóa",confirm_delete:"Bạn sẽ không thể khôi phục Hóa đơn này | Bạn sẽ không thể khôi phục các Hóa đơn này",created_message:"Hóa đơn đã được tạo thành công",updated_message:"Đã cập nhật hóa đơn thành công",deleted_message:"Hóa đơn đã được xóa thành công | Hóa đơn đã được xóa thành công",marked_as_sent_message:"Hóa đơn được đánh dấu là đã gửi thành công",something_went_wrong:"có gì đó không ổn",invalid_due_amount_message:"Tổng số tiền trên Hóa đơn không được nhỏ hơn tổng số tiền đã thanh toán cho Hóa đơn này. Vui lòng cập nhật hóa đơn hoặc xóa các khoản thanh toán liên quan để tiếp tục.",mark_as_default_invoice_template_description:"Nếu bật, mẫu đang chọn sẽ được tự động áp dụng cho hóa đơn mới."},bie={title:"Hóa đơn định kỳ",invoices_list:"Hóa đơn định kỳ",days:"{days} Ngày",months:"{months} Tháng",years:"{years} Năm",all:"Tất cả",paid:"Đã thanh toán",unpaid:"Chưa thanh toán",viewed:"Đã xem",overdue:"Quá hạn",active:"Hoạt động",completed:"Hoàn thành",customer:"KHÁCH HÀNG",paid_status:"PAID STATUS",ref_no:"REF NO.",number:"NUMBER",amount_due:"AMOUNT DUE",partially_paid:"Partially Paid",total:"Total",discount:"Discount",sub_total:"Sub Total",invoice:"Recurring Invoice | Recurring Invoices",invoice_number:"Recurring Invoice Number",next_invoice_date:"Next Invoice Date",ref_number:"Ref Number",contact:"Contact",add_item:"Add an Item",date:"Date",limit_by:"Limit by",limit_date:"Limit Date",limit_count:"Limit Count",count:"Count",status:"Status",select_a_status:"Select a status",working:"Working",on_hold:"On Hold",complete:"Completed",add_tax:"Add Tax",amount:"Amount",action:"Action",notes:"Notes",view:"View",basic_info:"Basic Info",send_invoice:"Send Recurring Invoice",auto_send:"Auto Send",resend_invoice:"Resend Recurring Invoice",invoice_template:"Recurring Invoice Template",conversion_message:"Recurring Invoice cloned successful",template:"Template",mark_as_sent:"Mark as sent",confirm_send_invoice:"This recurring invoice will be sent via email to the customer",invoice_mark_as_sent:"This recurring invoice will be marked as sent",confirm_send:"This recurring invoice will be sent via email to the customer",starts_at:"Start Date",due_date:"Invoice Due Date",record_payment:"Record Payment",add_new_invoice:"Add New Recurring Invoice",update_expense:"Update Expense",edit_invoice:"Edit Recurring Invoice",new_invoice:"New Recurring Invoice",send_automatically:"Send Automatically",send_automatically_desc:"Enable this, if you would like to send the invoice automatically to the customer when its created.",save_invoice:"Save Recurring Invoice",update_invoice:"Cập nhật Hóa đơn định kỳ",add_new_tax:"Thêm thuế mới",no_invoices:"Chưa có Hóa đơn định kỳ nào!",mark_as_rejected:"Đánh dấu là bị từ chối",mark_as_accepted:"Đánh dấu là đã chấp nhận",list_of_invoices:"This section will contain the list of recurring invoices.",select_invoice:"Select Invoice",no_matching_invoices:"There are no matching recurring invoices!",mark_as_sent_successfully:"Recurring Invoice marked as sent successfully",invoice_sent_successfully:"Recurring Invoice sent successfully",cloned_successfully:"Recurring Invoice cloned successfully",clone_invoice:"Clone Recurring Invoice",confirm_clone:"This recurring invoice will be cloned into a new Recurring Invoice",add_customer_email:"Thêm một địa chỉ email cho khách hàng này để gửi hóa đơn tự động.",item:{title:"Item Title",description:"Description",quantity:"Quantity",price:"Price",discount:"Discount",total:"Total",total_discount:"Total Discount",sub_total:"Sub Total",tax:"Tax",amount:"Amount",select_an_item:"Type or click to select an item",type_item_description:"Type Item Description (optional)"},frequency:{title:"Frequency",select_frequency:"Select Frequency",minute:"Minute",hour:"Hour",day_month:"Day of month",month:"Month",day_week:"Day of week"},confirm_delete:"You will not be able to recover this Invoice | You will not be able to recover these Invoices",created_message:"Recurring Invoice created successfully",updated_message:"Recurring Invoice updated successfully",deleted_message:"Recurring Invoice deleted successfully | Recurring Invoices deleted successfully",marked_as_sent_message:"Recurring Invoice marked as sent successfully",user_email_does_not_exist:"User email does not exist",something_went_wrong:"something went wrong",invalid_due_amount_message:"Total Recurring Invoice amount cannot be less than total paid amount for this Recurring Invoice. Please update the invoice or delete the associated payments to continue."},kie={title:"Thanh toán",payments_list:"Danh sách thanh toán",record_payment:"Ghi lại Thanh toán",customer:"khách hàng",date:"Ngày",amount:"Số tiền",action:"Hoạt động",payment_number:"Số tiền phải trả",payment_mode:"Phương thức thanh toán",invoice:"Hóa đơn",note:"Ghi chú",add_payment:"Thêm thanh toán",new_payment:"Thanh toán mới",edit_payment:"Chỉnh sửa Thanh toán",view_payment:"Xem thanh toán",add_new_payment:"Thêm thanh toán mới",send_payment_receipt:"Gửi biên lai thanh toán",send_payment:"Gửi hóa đơn",save_payment:"Lưu thanh toán",update_payment:"Cập nhật thanh toán",payment:"Thanh toán | Thanh toán",no_payments:"Chưa có khoản thanh toán nào!",not_selected:"Không được chọn",no_invoice:"Không có hóa đơn",no_matching_payments:"Không có khoản thanh toán nào phù hợp!",list_of_payments:"Phần này sẽ chứa danh sách các khoản thanh toán.",select_payment_mode:"Chọn phương thức thanh toán",confirm_mark_as_sent:"Ước tính này sẽ được đánh dấu là đã gửi",confirm_send_payment:"Khoản thanh toán này sẽ được gửi qua email cho khách hàng",send_payment_successfully:"Thanh toán đã được gửi thành công",something_went_wrong:"có gì đó không ổn",confirm_delete:"Bạn sẽ không thể khôi phục Thanh toán này | Bạn sẽ không thể khôi phục các Khoản thanh toán này",created_message:"Thanh toán được tạo thành công",updated_message:"Đã cập nhật thanh toán thành công",deleted_message:"Đã xóa thanh toán thành công | Thanh toán đã được xóa thành công",invalid_amount_message:"Số tiền thanh toán không hợp lệ"},wie={title:"Chi phí",expenses_list:"Danh sách chi phí",select_a_customer:"Chọn một khách hàng",expense_title:"Tiêu đề",customer:"khách hàng",currency:"Currency",contact:"Tiếp xúc",category:"thể loại",from_date:"Từ ngày",to_date:"Đến nay",expense_date:"Ngày",description:"Sự miêu tả",receipt:"Biên lai",amount:"Số tiền",action:"Hoạt động",not_selected:"Không được chọn",note:"Ghi chú",category_id:"Thể loại ID",date:"Ngày",add_expense:"Thêm chi phí",add_new_expense:"Thêm chi phí mới",save_expense:"Tiết kiệm chi phí",update_expense:"Cập nhật chi phí",download_receipt:"Biên nhận tải xuống",edit_expense:"Chỉnh sửa chi phí",new_expense:"Chi phí mới",expense:"Chi phí | Chi phí",no_expenses:"Chưa có chi phí!",list_of_expenses:"Phần này sẽ chứa danh sách các chi phí.",confirm_delete:"Bạn sẽ không thể thu hồi Khoản chi phí này | Bạn sẽ không thể thu hồi các Khoản chi phí này",created_message:"Đã tạo thành công chi phí",updated_message:"Đã cập nhật chi phí thành công",deleted_message:"Đã xóa thành công chi phí | Đã xóa thành công chi phí",categories:{categories_list:"Danh sách hạng mục",title:"Tiêu đề",name:"Tên",description:"Sự miêu tả",amount:"Số tiền",actions:"Hành động",add_category:"thêm thể loại",new_category:"Danh mục mới",category:"Thể loại | Thể loại",select_a_category:"Chọn một danh mục"}},xie={email:"E-mail",password:"Mật khẩu",forgot_password:"Quên mật khẩu?",or_signIn_with:"hoặc Đăng nhập bằng",login:"Đăng nhập",register:"Đăng ký",reset_password:"Đặt lại mật khẩu",password_reset_successfully:"Đặt lại mật khẩu thành công",enter_email:"Nhập email",enter_password:"Nhập mật khẩu",retype_password:"Gõ lại mật khẩu"},Die={buy_now:"Buy Now",install:"Install",price:"Price",download_zip_file:"Download ZIP file",unzipping_package:"Unzipping Package",copying_files:"Copying Files",deleting_files:"Deleting Unused files",completing_installation:"Completing Installation",update_failed:"Update Failed",install_success:"Module has been installed successfully!",customer_reviews:"Reviews",license:"License",faq:"FAQ",monthly:"Monthly",yearly:"Yearly",updated:"Updated",version:"Version",disable:"Disable",module_disabled:"Module Disabled",enable:"Enable",module_enabled:"Module Enabled",update_to:"Update To",module_updated:"Module Updated Successfully!",title:"Modules",module:"Module | Modules",api_token:"API token",invalid_api_token:"Invalid API Token.",other_modules:"Other Modules",view_all:"View All",no_reviews_found:"There are no reviews for this module yet!",module_not_purchased:"Module Not Purchased",module_not_found:"Module Not Found",version_not_supported:"This module version doesn't support the current version of InvoiceShelf",last_updated:"Last Updated On",connect_installation:"Connect your installation",api_token_description:"Login to {url} and connect this installation by entering the API Token. Your purchased modules will show up here after the connection is established.",view_module:"View Module",update_available:"Update Available",purchased:"Purchased",installed:"Installed",no_modules_installed:"No Modules Installed Yet!",disable_warning:"All the settings for this particular will be reverted.",what_you_get:"What you get"},Sie={title:"Người dùng",users_list:"Danh sách người dùng",name:"Tên",description:"Sự miêu tả",added_on:"Đã thêm vào",date_of_creation:"Ngày tạo",action:"Hoạt động",add_user:"Thêm người dùng",save_user:"Lưu người dùng",update_user:"Cập nhật người dùng",user:"Người dùng | Người dùng",add_new_user:"Thêm người dùng mới",new_user:"Người dùng mới",edit_user:"Người dùng biên tập",no_users:"Chưa có người dùng nào!",list_of_users:"Phần này sẽ chứa danh sách người dùng.",email:"E-mail",phone:"Điện thoại",password:"Mật khẩu",user_attached_message:"Không thể xóa một mục đã được sử dụng",confirm_delete:"Bạn sẽ không thể khôi phục Người dùng này | Bạn sẽ không thể khôi phục những Người dùng này",created_message:"Người dùng đã được tạo thành công",updated_message:"Đã cập nhật người dùng thành công",deleted_message:"Đã xóa người dùng thành công | Đã xóa người dùng thành công",select_company_role:"Select Role for {company}",companies:"Companies"},zie={title:"Báo cáo",from_date:"Từ ngày",to_date:"Đến nay",status:"Trạng thái",paid:"Đã thanh toán",unpaid:"Chưa thanh toán",download_pdf:"tải PDF",view_pdf:"Xem PDF",update_report:"Cập nhật báo cáo",report:"Báo cáo | Báo cáo",profit_loss:{profit_loss:"Lợi nhuận",to_date:"Đến nay",from_date:"Từ ngày",date_range:"Chọn phạm vi ngày"},sales:{sales:"Bán hàng",date_range:"Chọn phạm vi ngày",to_date:"Đến nay",from_date:"Từ ngày",report_type:"Loại báo cáo"},taxes:{taxes:"Thuế",to_date:"Đến nay",from_date:"Từ ngày",date_range:"Chọn phạm vi ngày"},errors:{required:"Lĩnh vực được yêu cầu"},invoices:{invoice:"Hóa đơn",invoice_date:"Ngày lập hóa đơn",due_date:"Ngày đáo hạn",amount:"Số tiền",contact_name:"Tên Liên lạc",status:"Trạng thái"},estimates:{estimate:"Ước tính",estimate_date:"Ngày ước tính",due_date:"Ngày đáo hạn",estimate_number:"Số ước tính",ref_number:"Số REF",amount:"Số tiền",contact_name:"Tên Liên lạc",status:"Trạng thái"},expenses:{expenses:"Chi phí",category:"thể loại",date:"Ngày",amount:"Số tiền",to_date:"Đến nay",from_date:"Từ ngày",date_range:"Chọn phạm vi ngày"}},Pie={menu_title:{account_settings:"Cài đặt tài khoản",company_information:"Thông tin công ty",customization:"Tùy biến",preferences:"Sở thích",notifications:"Thông báo",tax_types:"Các loại thuế",expense_category:"Hạng mục Chi phí",update_app:"Cập nhật ứng dụng",backup:"Sao lưu",file_disk:"Đĩa tệp",custom_fields:"Trường tùy chỉnh",payment_modes:"Phương thức thanh toán",notes:"Ghi chú",exchange_rate:"Exchange Rate",address_information:"Address Information"},address_information:{section_description:" You can update Your Address information using form below."},title:"Cài đặt",setting:"Cài đặt | Cài đặt",general:"Chung",language:"Ngôn ngữ",primary_currency:"Tiền tệ chính",timezone:"Múi giờ",date_format:"Định dạng ngày tháng",currencies:{title:"Tiền tệ",currency:"Tiền tệ | Tiền tệ",currencies_list:"Danh sách tiền tệ",select_currency:"Chọn tiền tệ",name:"Tên",code:"Mã",symbol:"Biểu tượng",precision:"Độ chính xác",thousand_separator:"Hàng ngàn máy tách",decimal_separator:"Phân số thập phân",position:"Chức vụ",position_of_symbol:"Vị trí của biểu tượng",right:"Đúng",left:"Trái",action:"Hoạt động",add_currency:"Thêm tiền tệ"},mail:{host:"Máy chủ Thư",port:"Cổng thư",driver:"Trình điều khiển Thư",secret:"Bí mật",mailgun_secret:"Bí mật Mailgun",mailgun_domain:"Miền",mailgun_endpoint:"Điểm cuối của Mailgun",ses_secret:"Bí mật SES",ses_key:"Khóa SES",password:"Mật khẩu thư",username:"Tên người dùng thư",mail_config:"Cấu hình thư",from_name:"Từ tên thư",from_mail:"Từ địa chỉ thư",encryption:"Mã hóa Thư",mail_config_desc:"Dưới đây là biểu mẫu Định cấu hình trình điều khiển Email để gửi email từ ứng dụng. Bạn cũng có thể định cấu hình các nhà cung cấp bên thứ ba như Sendgrid, SES, v.v."},pdf:{title:"Cài đặt PDF",footer_text:"Văn bản chân trang",pdf_layout:"Bố cục PDF"},company_info:{company_info:"Thông tin công ty",company_name:"Tên công ty",company_logo:"Logo công ty",section_description:"Thông tin về công ty của bạn sẽ được hiển thị trên hóa đơn, ước tính và các tài liệu khác do InvoiceShelf tạo.",phone:"Điện thoại",country:"Quốc gia",state:"Tiểu bang",city:"Tp.",address:"Địa chỉ",zip:"Zip",save:"Tiết kiệm",delete:"Delete",updated_message:"Thông tin công ty được cập nhật thành công",delete_company:"Delete Company",delete_company_description:"Once you delete your company, you will lose all the data and files associated with it permanently.",are_you_absolutely_sure:"Are you absolutely sure?",delete_company_modal_desc:"This action cannot be undone. This will permanently delete {company} and all of its associated data.",delete_company_modal_label:"Please type {company} to confirm"},custom_fields:{title:"Trường tùy chỉnh",section_description:"Tùy chỉnh hóa đơn, ước tính của bạn",add_custom_field:"Thêm trường tùy chỉnh",edit_custom_field:"Chỉnh sửa trường tùy chỉnh",field_name:"Tên trường",label:"Nhãn",type:"Kiểu",name:"Tên",slug:"Slug",required:"Cần thiết",placeholder:"Trình giữ chỗ",help_text:"Văn bản trợ giúp",default_value:"Giá trị mặc định",prefix:"Tiếp đầu ngữ",starting_number:"Số bắt đầu",model:"Mô hình",help_text_description:"Nhập một số văn bản để giúp người dùng hiểu mục đích của trường tùy chỉnh này.",suffix:"Hậu tố",yes:"Đúng",no:"Không",order:"Đặt hàng",custom_field_confirm_delete:"Bạn sẽ không thể khôi phục Trường tùy chỉnh này",already_in_use:"Trường tùy chỉnh đã được sử dụng",deleted_message:"Trường Tùy chỉnh đã được xóa thành công",options:"các tùy chọn",add_option:"Thêm tùy chọn",add_another_option:"Thêm một tùy chọn khác",sort_in_alphabetical_order:"Sắp xếp theo thứ tự bảng chữ cái",add_options_in_bulk:"Thêm hàng loạt tùy chọn",use_predefined_options:"Sử dụng các tùy chọn được xác định trước",select_custom_date:"Chọn ngày tùy chỉnh",select_relative_date:"Chọn ngày tương đối",ticked_by_default:"Được đánh dấu theo mặc định",updated_message:"Đã cập nhật trường tùy chỉnh thành công",added_message:"Trường tùy chỉnh đã được thêm thành công",press_enter_to_add:"Press enter to add new option",model_in_use:"Cannot update model for fields which are already in use.",type_in_use:"Cannot update type for fields which are already in use."},customization:{customization:"sự tùy biến",updated_message:"Thông tin công ty được cập nhật thành công",save:"Tiết kiệm",insert_fields:"Insert Fields",learn_custom_format:"Learn how to use custom format",add_new_component:"Add New Component",component:"Component",Parameter:"Parameter",series:"Series",series_description:"To set a static prefix/postfix like 'INV' across your company. It supports character length of up to 6 chars.",series_param_label:"Series Value",delimiter:"Delimiter",delimiter_description:"Single character for specifying the boundary between 2 separate components. By default its set to -",delimiter_param_label:"Delimiter Value",date_format:"Date Format",date_format_description:"A local date and time field which accepts a format parameter. The default format: 'Y' renders the current year.",date_format_param_label:"Format",sequence:"Sequence",sequence_description:"Consecutive sequence of numbers across your company. You can specify the length on the given parameter.",sequence_param_label:"Sequence Length",customer_series:"Customer Series",customer_series_description:"To set a different prefix/postfix for each customer.",customer_sequence:"Customer Sequence",customer_sequence_description:"Consecutive sequence of numbers for each of your customer.",customer_sequence_param_label:"Sequence Length",random_sequence:"Random Sequence",random_sequence_description:"Random alphanumeric string. You can specify the length on the given parameter.",random_sequence_param_label:"Sequence Length",invoices:{title:"Hóa đơn",invoice_number_format:"Invoice Number Format",invoice_number_format_description:"Customize how your invoice number gets generated automatically when you create a new invoice.",preview_invoice_number:"Preview Invoice Number",due_date:"Due Date",due_date_description:"Specify how due date is automatically set when you create an invoice.",due_date_days:"Invoice Due after days",set_due_date_automatically:"Set Due Date Automatically",set_due_date_automatically_description:"Enable this if you wish to set due date automatically when you create a new invoice.",default_formats:"Default Formats",default_formats_description:"Below given formats are used to fill up the fields automatically on invoice creation.",default_invoice_email_body:"Nội dung email hóa đơn mặc định",company_address_format:"Định dạng địa chỉ công ty",shipping_address_format:"Định dạng địa chỉ giao hàng",billing_address_format:"Định dạng địa chỉ thanh toán",invoice_email_attachment:"Gửi hóa đơn dưới dạng tệp đính kèm",invoice_email_attachment_setting_description:"Bật tính năng này nếu bạn muốn gửi hóa đơn dưới dạng tệp đính kèm email. Xin lưu ý rằng nút 'Xem Hóa đơn' trong email sẽ không được hiển thị nữa khi được bật.",invoice_settings_updated:"Invoice Settings updated successfully",retrospective_edits:"Retrospective Edits",allow:"Allow",disable_on_invoice_partial_paid:"Disable after partial payment is recorded",disable_on_invoice_paid:"Disable after full payment is recorded",disable_on_invoice_sent:"Disable after invoice is sent",retrospective_edits_description:" Based on your country's laws or your preference, you can restrict users from editing finalised invoices."},estimates:{title:"Ước tính",estimate_number_format:"Estimate Number Format",estimate_number_format_description:"Customize how your estimate number gets generated automatically when you create a new estimate.",preview_estimate_number:"Preview Estimate Number",expiry_date:"Expiry Date",expiry_date_description:"Specify how expiry date is automatically set when you create an estimate.",expiry_date_days:"Estimate Expires after days",set_expiry_date_automatically:"Set Expiry Date Automatically",set_expiry_date_automatically_description:"Enable this if you wish to set expiry date automatically when you create a new estimate.",default_formats:"Default Formats",default_formats_description:"Below given formats are used to fill up the fields automatically on estimate creation.",default_estimate_email_body:"Nội dung Email Ước tính Mặc định",company_address_format:"Định dạng địa chỉ công ty",shipping_address_format:"Định dạng địa chỉ giao hàng",billing_address_format:"Định dạng địa chỉ thanh toán",estimate_email_attachment:"Gửi ước tính dưới dạng tệp đính kèm",estimate_email_attachment_setting_description:"Bật tính năng này nếu bạn muốn gửi ước tính dưới dạng tệp đính kèm email. Xin lưu ý rằng nút 'Xem Ước tính' trong email sẽ không được hiển thị nữa khi được bật.",estimate_settings_updated:"Estimate Settings updated successfully",convert_estimate_options:"Estimate Convert Action",convert_estimate_description:"Specify what happens to the estimate after it gets converted to an invoice.",no_action:"No action",delete_estimate:"Delete estimate",mark_estimate_as_accepted:"Mark estimate as accepted"},payments:{title:"Thanh toán",payment_number_format:"Payment Number Format",payment_number_format_description:"Customize how your payment number gets generated automatically when you create a new payment.",preview_payment_number:"Preview Payment Number",default_formats:"Default Formats",default_formats_description:"Below given formats are used to fill up the fields automatically on payment creation.",default_payment_email_body:"Nội dung Email Thanh toán Mặc định",company_address_format:"Định dạng địa chỉ công ty",from_customer_address_format:"Từ định dạng địa chỉ khách hàng",payment_email_attachment:"Gửi thanh toán dưới dạng tệp đính kèm",payment_email_attachment_setting_description:"Bật tính năng này nếu bạn muốn gửi biên nhận thanh toán dưới dạng tệp đính kèm email. Xin lưu ý rằng nút 'Xem Thanh toán' trong email sẽ không được hiển thị nữa khi được bật.",payment_settings_updated:"Payment Settings updated successfully"},items:{title:"Mặt hàng",units:"Các đơn vị",add_item_unit:"Thêm đơn vị mặt hàng",edit_item_unit:"Chỉnh sửa đơn vị mặt hàng",unit_name:"Tên bài",item_unit_added:"Đơn vị mặt hàng đã được thêm",item_unit_updated:"Đã cập nhật đơn vị mặt hàng",item_unit_confirm_delete:"Bạn sẽ không thể khôi phục đơn vị Mặt hàng này",already_in_use:"Đơn vị vật phẩm đã được sử dụng",deleted_message:"Đơn vị mặt hàng đã được xóa thành công"},notes:{title:"Ghi chú",description:"Tiết kiệm thời gian bằng cách tạo ghi chú và sử dụng lại chúng trên hóa đơn, ước tính của bạn",notes:"Ghi chú",type:"Kiểu",add_note:"Thêm ghi chú",add_new_note:"Thêm ghi chú mới",name:"Tên",edit_note:"Chỉnh sửa ghi chú",note_added:"Đã thêm ghi chú thành công",note_updated:"Đã cập nhật ghi chú thành công",note_confirm_delete:"Bạn sẽ không thể khôi phục Ghi chú này",already_in_use:"Ghi chú đã được sử dụng",deleted_message:"Đã xóa ghi chú thành công"}},account_settings:{profile_picture:"Ảnh đại diện",name:"Tên",email:"E-mail",password:"Mật khẩu",confirm_password:"Xác nhận mật khẩu",account_settings:"Cài đặt tài khoản",save:"Tiết kiệm",section_description:"Bạn có thể cập nhật tên, email của mình",updated_message:"Đã cập nhật cài đặt tài khoản thành công"},user_profile:{name:"Tên",email:"E-mail",password:"Mật khẩu",confirm_password:"Xác nhận mật khẩu"},notification:{title:"Thông báo",email:"Gửi thông báo tới",description:"Bạn muốn nhận thông báo email nào khi có điều gì đó thay đổi?",invoice_viewed:"Hóa đơn đã xem",invoice_viewed_desc:"Khi khách hàng của bạn xem hóa đơn được gửi qua bảng điều khiển miệng núi lửa.",estimate_viewed:"Ước tính đã xem",estimate_viewed_desc:"Khi khách hàng của bạn xem ước tính được gửi qua bảng điều khiển miệng núi lửa.",save:"Tiết kiệm",email_save_message:"Email đã được lưu thành công",please_enter_email:"Vui lòng nhập Email"},roles:{title:"Roles",description:"Manage the roles & permissions of this company",save:"Save",add_new_role:"Add New Role",role_name:"Role Name",added_on:"Added on",add_role:"Add Role",edit_role:"Edit Role",name:"Name",permission:"Permission | Permissions",select_all:"Select All",none:"None",confirm_delete:"You will not be able to recover this Role",created_message:"Role created successfully",updated_message:"Role updated successfully",deleted_message:"Role deleted successfully",already_in_use:"Role is already in use"},exchange_rate:{exchange_rate:"Exchange Rate",title:"Fix Currency Exchange issues",description:"Please enter exchange rate of all the currencies mentioned below to help InvoiceShelf properly calculate the amounts in {currency}.",drivers:"Drivers",new_driver:"Add New Provider",edit_driver:"Edit Provider",select_driver:"Select Driver",update:"select exchange rate ",providers_description:"Configure your exchange rate providers here to automatically fetch the latest exchange rate on transactions.",key:"API Key",name:"Name",driver:"Driver",is_default:"IS DEFAULT",currency:"Currencies",exchange_rate_confirm_delete:"You will not be able to recover this driver",created_message:"Provider Created successfully",updated_message:"Provider Updated Successfully",deleted_message:"Provider Deleted Successfully",error:" You cannot Delete Active Driver",default_currency_error:"This currency is already used in one of the Active Provider",exchange_help_text:"Enter exchange rate to convert from {currency} to {baseCurrency}",currency_freak:"Currency Freak",currency_layer:"Currency Layer",open_exchange_rate:"Open Exchange Rate",currency_converter:"Currency Converter",server:"Server",url:"URL",active:"Active",currency_help_text:"This provider will only be used on above selected currencies",currency_in_used:"The following currencies are already active on another provider. Please remove these currencies from selection to activate this provider again."},tax_types:{title:"Các loại thuế",add_tax:"Thêm thuế",edit_tax:"Chỉnh sửa thuế",description:"Bạn có thể thêm hoặc bớt thuế tùy ý. InvoiceShelf hỗ trợ Thuế đối với các mặt hàng riêng lẻ cũng như trên hóa đơn.",add_new_tax:"Thêm thuế mới",tax_settings:"Cài đặt thuế",tax_per_item:"Thuế mỗi mặt hàng",tax_name:"Tên thuế",compound_tax:"Thuế tổng hợp",percent:"Phần trăm",action:"Hoạt động",tax_setting_description:"Bật tính năng này nếu bạn muốn thêm thuế vào các mục hóa đơn riêng lẻ. Theo mặc định, thuế được thêm trực tiếp vào hóa đơn.",created_message:"Loại thuế đã được tạo thành công",updated_message:"Đã cập nhật thành công loại thuế",deleted_message:"Đã xóa thành công loại thuế",confirm_delete:"Bạn sẽ không thể khôi phục Loại thuế này",already_in_use:"Thuế đã được sử dụng"},payment_modes:{title:"Payment Modes",description:"Modes of transaction for payments",add_payment_mode:"Add Payment Mode",edit_payment_mode:"Edit Payment Mode",mode_name:"Mode Name",payment_mode_added:"Payment Mode Added",payment_mode_updated:"Payment Mode Updated",payment_mode_confirm_delete:"You will not be able to recover this Payment Mode",payments_attached:"This payment method is already attached to payments. Please delete the attached payments to proceed with deletion.",expenses_attached:"This payment method is already attached to expenses. Please delete the attached expenses to proceed with deletion.",deleted_message:"Payment Mode deleted successfully"},expense_category:{title:"Hạng mục Chi phí",action:"Hoạt động",description:"Các danh mục được yêu cầu để thêm các mục chi phí. Bạn có thể Thêm hoặc Xóa các danh mục này tùy theo sở thích của mình.",add_new_category:"Thêm danh mục mới",add_category:"thêm thể loại",edit_category:"Chỉnh sửa danh mục",category_name:"tên danh mục",category_description:"Sự miêu tả",created_message:"Danh mục Chi phí đã được tạo thành công",deleted_message:"Đã xóa thành công danh mục chi phí",updated_message:"Đã cập nhật danh mục chi phí thành công",confirm_delete:"Bạn sẽ không thể khôi phục Danh mục Chi phí này",already_in_use:"Danh mục đã được sử dụng"},preferences:{currency:"Tiền tệ",default_language:"Ngôn ngữ mặc định",time_zone:"Múi giờ",fiscal_year:"Năm tài chính",date_format:"Định dạng ngày tháng",discount_setting:"Cài đặt chiết khấu",discount_per_item:"Giảm giá cho mỗi mặt hàng",discount_setting_description:"Bật tính năng này nếu bạn muốn thêm Giảm giá vào các mặt hàng hóa đơn riêng lẻ. Theo mặc định, Giảm giá được thêm trực tiếp vào hóa đơn.",expire_public_links:"Automatically Expire Public Links",expire_setting_description:"Specify whether you would like to expire all the links sent by application to view invoices, estimates & payments, etc after a specified duration.",save:"Tiết kiệm",preference:"Sở thích | Sở thích",general_settings:"Tùy chọn mặc định cho hệ thống.",updated_message:"Đã cập nhật thành công các tùy chọn",select_language:"Chọn ngôn ngữ",select_time_zone:"Chọn múi giờ",select_date_format:"Chọn định dạng ngày",select_financial_year:"Chọn năm tài chính",recurring_invoice_status:"Recurring Invoice Status",create_status:"Create Status",active:"Active",on_hold:"On Hold",update_status:"Update Status",completed:"Completed",company_currency_unchangeable:"Company currency cannot be changed"},update_app:{title:"Cập nhật ứng dụng",description:"Bạn có thể dễ dàng cập nhật InvoiceShelf bằng cách kiểm tra bản cập nhật mới bằng cách nhấp vào nút bên dưới",check_update:"Kiểm tra cập nhật",avail_update:"Cập nhật mới có sẵn",next_version:"Phiên bản tiếp theo",requirements:"Yêu cầu",update:"Cập nhật bây giờ",update_progress:"Đang cập nhật ...",progress_text:"Nó sẽ chỉ mất một vài phút. Vui lòng không làm mới màn hình hoặc đóng cửa sổ trước khi cập nhật kết thúc",update_success:"Ứng dụng đã được cập nhật! Vui lòng đợi trong khi cửa sổ trình duyệt của bạn được tải lại tự động.",latest_message:"Không có bản cập nhật nào! Bạn đang sử dụng phiên bản mới nhất.",current_version:"Phiên bản hiện tại",download_zip_file:"Tải xuống tệp ZIP",unzipping_package:"Gói giải nén",copying_files:"Sao chép các tập tin",deleting_files:"Xóa các tệp không sử dụng",running_migrations:"Chạy di cư",finishing_update:"Cập nhật kết thúc",update_failed:"Cập nhật không thành công",update_failed_text:"Lấy làm tiếc! Cập nhật của bạn không thành công vào: bước {step}",update_warning:"All of the application files and default template files will be overwritten when you update the application using this utility. Please take a backup of your templates & database before updating."},backup:{title:"Sao lưu | Sao lưu",description:"Bản sao lưu là một tệp zip chứa tất cả các tệp trong thư mục bạn chỉ định cùng với một kết xuất cơ sở dữ liệu của bạn",new_backup:"Thêm bản sao lưu mới",create_backup:"Tạo bản sao",select_backup_type:"Chọn loại sao lưu",backup_confirm_delete:"Bạn sẽ không thể khôi phục Bản sao lưu này",path:"con đường",new_disk:"Đĩa mới",created_at:"được tạo ra tại",size:"kích thước",dropbox:"dropbox",local:"địa phương",healthy:"khỏe mạnh",amount_of_backups:"lượng sao lưu",newest_backups:"bản sao lưu mới nhất",used_storage:"lưu trữ đã sử dụng",select_disk:"Chọn đĩa",action:"Hoạt động",deleted_message:"Đã xóa bản sao lưu thành công",created_message:"Đã tạo thành công bản sao lưu",invalid_disk_credentials:"Thông tin đăng nhập không hợp lệ của đĩa đã chọn"},disk:{title:"Đĩa tập tin | Đĩa Tệp",description:"Theo mặc định, InvoiceShelf sẽ sử dụng đĩa cục bộ của bạn để lưu các bản sao lưu, ảnh đại diện và các tệp hình ảnh khác. Bạn có thể định cấu hình nhiều hơn một trình điều khiển đĩa như DigitalOcean, S3 và Dropbox theo sở thích của mình.",created_at:"được tạo ra tại",dropbox:"dropbox",name:"Tên",driver:"Người lái xe",disk_type:"Kiểu",disk_name:"Tên đĩa",new_disk:"Thêm đĩa mới",filesystem_driver:"Trình điều khiển hệ thống tập tin",local_driver:"Trình điều khiển địa phương",local_root:"Gốc cục bộ",public_driver:"Tài xế công cộng",public_root:"Gốc công khai",public_url:"URL công khai",public_visibility:"Hiển thị công khai",media_driver:"Trình điều khiển phương tiện",media_root:"Gốc phương tiện",aws_driver:"Trình điều khiển AWS",aws_key:"Khóa AWS",aws_secret:"Bí mật AWS",aws_region:"Khu vực AWS",aws_bucket:"Nhóm AWS",aws_root:"Gốc AWS",do_spaces_type:"Làm kiểu Spaces",do_spaces_key:"Do phím Spaces",do_spaces_secret:"Làm bí mật về không gian",do_spaces_region:"Do Spaces Region",do_spaces_bucket:"Do Spaces Bucket",do_spaces_endpoint:"Do Spaces Endpoint",do_spaces_root:"Do Spaces Root",dropbox_type:"Loại hộp chứa",dropbox_token:"Mã thông báo Dropbox",dropbox_key:"Khóa Dropbox",dropbox_secret:"Bí mật Dropbox",dropbox_app:"Ứng dụng Dropbox",dropbox_root:"Gốc Dropbox",default_driver:"Trình điều khiển mặc định",is_default:"LÀ ĐỊNH NGHĨA",set_default_disk:"Đặt đĩa mặc định",set_default_disk_confirm:"Đĩa này sẽ được đặt làm mặc định và tất cả các tệp PDF mới sẽ được lưu trên đĩa này",success_set_default_disk:"Đĩa được đặt làm mặc định thành công",save_pdf_to_disk:"Lưu PDF vào đĩa",disk_setting_description:"Bật tính năng này, nếu bạn muốn lưu một bản sao của mỗi Hóa đơn, Ước tính",select_disk:"Chọn đĩa",disk_settings:"Cài đặt đĩa",confirm_delete:"Tệp hiện có của bạn",action:"Hoạt động",edit_file_disk:"Chỉnh sửa Đĩa Tệp",success_create:"Đã thêm đĩa thành công",success_update:"Đã cập nhật đĩa thành công",error:"Thêm đĩa không thành công",deleted_message:"Đĩa Tệp đã được xóa thành công",disk_variables_save_successfully:"Đã cấu hình đĩa thành công",disk_variables_save_error:"Cấu hình đĩa không thành công.",invalid_disk_credentials:"Thông tin đăng nhập không hợp lệ của đĩa đã chọn"},taxations:{add_billing_address:"Enter Billing Address",add_shipping_address:"Enter Shipping Address",add_company_address:"Enter Company Address",modal_description:"The information below is required in order to fetch sales tax.",add_address:"Add Address for fetching sales tax.",address_placeholder:"Example: 123, My Street",city_placeholder:"Example: Los Angeles",state_placeholder:"Example: CA",zip_placeholder:"Example: 90024",invalid_address:"Please provide valid address details."}},Eie={account_info:"thông tin tài khoản",account_info_desc:"Thông tin chi tiết dưới đây sẽ được sử dụng để tạo tài khoản Quản trị viên chính. Ngoài ra, bạn có thể thay đổi thông tin chi tiết bất cứ lúc nào sau khi đăng nhập.",name:"Tên",email:"E-mail",password:"Mật khẩu",confirm_password:"Xác nhận mật khẩu",save_cont:"Tiết kiệm",company_info:"Thông tin công ty",company_info_desc:"Thông tin này sẽ được hiển thị trên hóa đơn. Lưu ý rằng bạn có thể chỉnh sửa điều này sau trên trang cài đặt.",company_name:"Tên công ty",company_logo:"Logo công ty",logo_preview:"Xem trước Logo",preferences:"Sở thích",preferences_desc:"Tùy chọn mặc định cho hệ thống.",currency_set_alert:"The company's currency cannot be changed later.",country:"Quốc gia",state:"Tiểu bang",city:"Tp.",address:"Địa chỉ",street:"Phố1 | Street2",phone:"Điện thoại",zip_code:"Mã Bưu Chính",go_back:"Quay lại",currency:"Tiền tệ",language:"Ngôn ngữ",time_zone:"Múi giờ",fiscal_year:"Năm tài chính",date_format:"Định dạng ngày tháng",from_address:"Từ địa chỉ",username:"tên tài khoản",next:"Kế tiếp",continue:"Tiếp tục",skip:"Nhảy",database:{database:"URL trang web",connection:"Kết nối cơ sở dữ liệu",host:"Máy chủ cơ sở dữ liệu",port:"Cổng cơ sở dữ liệu",password:"Mật khẩu cơ sở dữ liệu",app_url:"URL ứng dụng",app_domain:"Miền ứng dụng",username:"Tên người dùng cơ sở dữ liệu",db_name:"Tên cơ sở dữ liệu",db_path:"Đường dẫn cơ sở dữ liệu",desc:"Tạo cơ sở dữ liệu trên máy chủ của bạn và đặt thông tin đăng nhập bằng biểu mẫu bên dưới."},permissions:{permissions:"Quyền",permission_confirm_title:"Bạn có chắc chắn muốn tiếp tục không?",permission_confirm_desc:"Kiểm tra quyền thư mục không thành công",permission_desc:"Dưới đây là danh sách các quyền đối với thư mục được yêu cầu để ứng dụng hoạt động. Nếu kiểm tra quyền không thành công, hãy đảm bảo cập nhật quyền thư mục của bạn."},verify_domain:{title:"Domain Verification",desc:"InvoiceShelf uses Session based authentication which requires domain verification for security purposes. Please enter the domain on which you will be accessing your web application.",app_domain:"App Domain",verify_now:"Verify Now",success:"Domain Verify Successfully.",failed:"Domain verification failed. Please enter valid domain name.",verify_and_continue:"Verify And Continue"},mail:{host:"Máy chủ Thư",port:"Cổng thư",driver:"Trình điều khiển Thư",secret:"Bí mật",mailgun_secret:"Bí mật Mailgun",mailgun_domain:"Miền",mailgun_endpoint:"Điểm cuối của Mailgun",ses_secret:"Bí mật SES",ses_key:"Khóa SES",password:"Mật khẩu thư",username:"Tên người dùng thư",mail_config:"Cấu hình thư",from_name:"Từ tên thư",from_mail:"Từ địa chỉ thư",encryption:"Mã hóa Thư",mail_config_desc:"Dưới đây là biểu mẫu Định cấu hình trình điều khiển Email để gửi email từ ứng dụng. Bạn cũng có thể định cấu hình các nhà cung cấp bên thứ ba như Sendgrid, SES, v.v."},req:{system_req:"yêu cầu hệ thống",php_req_version:"Php (bắt buộc phải có phiên bản {version})",check_req:"Kiểm tra yêu cầu",system_req_desc:"InvoiceShelf có một số yêu cầu máy chủ. Đảm bảo rằng máy chủ của bạn có phiên bản php bắt buộc và tất cả các phần mở rộng được đề cập bên dưới."},errors:{migrate_failed:"Di chuyển không thành công",database_variables_save_error:"Không thể ghi cấu hình vào tệp .env. Vui lòng kiểm tra quyền đối với tệp của nó",mail_variables_save_error:"Cấu hình email không thành công.",connection_failed:"Kết nối cơ sở dữ liệu không thành công",database_should_be_empty:"Cơ sở dữ liệu phải trống"},success:{mail_variables_save_successfully:"Email được định cấu hình thành công",database_variables_save_successfully:"Đã cấu hình thành công cơ sở dữ liệu."}},Aie={invalid_phone:"Số điện thoại không hợp lệ",invalid_url:"Url không hợp lệ (ví dụ: http://www.invoiceshelf.com)",invalid_domain_url:"Url không hợp lệ (ví dụ: invoiceshelf.com)",required:"Lĩnh vực được yêu cầu",email_incorrect:"Email không chính xác.",email_already_taken:"Lá thư đã được lấy đi.",email_does_not_exist:"Người dùng có email đã cho không tồn tại",item_unit_already_taken:"Tên đơn vị mặt hàng này đã được sử dụng",payment_mode_already_taken:"Tên phương thức thanh toán này đã được sử dụng",send_reset_link:"Gửi liên kết đặt lại",not_yet:"Chưa? Gửi lại",password_min_length:"Mật khẩu phải chứa {count} ký tự",name_min_length:"Tên phải có ít nhất {count} chữ cái.",prefix_min_length:"Prefix must have at least {count} letters.",enter_valid_tax_rate:"Nhập thuế suất hợp lệ",numbers_only:"Chỉ số.",characters_only:"Chỉ nhân vật.",password_incorrect:"Mật khẩu phải giống hệt nhau",password_length:"Mật khẩu phải dài {count} ký tự.",qty_must_greater_than_zero:"Số lượng phải lớn hơn không.",price_greater_than_zero:"Giá phải lớn hơn 0.",payment_greater_than_zero:"Khoản thanh toán phải lớn hơn 0.",payment_greater_than_due_amount:"Thanh toán đã nhập nhiều hơn số tiền đến hạn của hóa đơn này.",quantity_maxlength:"Số lượng không được lớn hơn 20 chữ số.",price_maxlength:"Giá không được lớn hơn 20 chữ số.",price_minvalue:"Giá phải lớn hơn 0.",amount_maxlength:"Số tiền không được lớn hơn 20 chữ số.",amount_minvalue:"Số tiền phải lớn hơn 0.",discount_maxlength:"Discount should not be greater than max discount",description_maxlength:"Mô tả không được lớn hơn 65.000 ký tự.",subject_maxlength:"Chủ đề không được lớn hơn 100 ký tự.",message_maxlength:"Tin nhắn không được lớn hơn 255 ký tự.",maximum_options_error:"Đã chọn tối đa {max} tùy chọn. Đầu tiên, hãy xóa một tùy chọn đã chọn để chọn một tùy chọn khác.",notes_maxlength:"Ghi chú không được lớn hơn 65.000 ký tự.",address_maxlength:"Địa chỉ không được lớn hơn 255 ký tự.",ref_number_maxlength:"Số tham chiếu không được lớn hơn 255 ký tự.",prefix_maxlength:"Tiền tố không được lớn hơn 5 ký tự.",something_went_wrong:"có gì đó không ổn",number_length_minvalue:"Number length should be greater than 0",at_least_one_ability:"Please select atleast one Permission.",valid_driver_key:"Please enter a valid {driver} key.",valid_exchange_rate:"Please enter a valid exchange rate.",company_name_not_same:"Company name must match with given name."},Cie={starter_plan:"This feature is available on Starter plan and onwards!",invalid_provider_key:"Please Enter Valid Provider API Key.",estimate_number_used:"The estimate number has already been taken.",invoice_number_used:"The invoice number has already been taken.",payment_attached:"This invoice already has a payment attached to it. Make sure to delete the attached payments first in order to go ahead with the removal.",payment_number_used:"The payment number has already been taken.",name_already_taken:"The name has already been taken.",receipt_does_not_exist:"Receipt does not exist.",customer_cannot_be_changed_after_payment_is_added:"Customer cannot be change after payment is added",invalid_credentials:"Invalid Credentials.",not_allowed:"Not Allowed",login_invalid_credentials:"These credentials do not match our records.",enter_valid_cron_format:"Please enter a valid cron format",email_could_not_be_sent:"Email could not be sent to this email address.",invalid_address:"Please enter a valid address.",invalid_key:"Please enter valid key.",invalid_state:"Please enter a valid state.",invalid_city:"Please enter a valid city.",invalid_postal_code:"Please enter a valid zip.",invalid_format:"Please enter valid query string format.",api_error:"Server not responding.",feature_not_enabled:"Feature not enabled.",request_limit_met:"Api request limit exceeded.",address_incomplete:"Incomplete Address"},jie="Ước tính",Tie="Số ước tính",Iie="Ngày ước tính",Nie="Ngày hết hạn",Fie="Hóa đơn",Mie="Số hóa đơn",Rie="Ngày lập hóa đơn",Oie="Ngày đáo hạn",$ie="Ghi chú",Lie="Mặt hàng",Bie="Định lượng",Uie="Giá bán",Vie="Giảm giá",qie="Số tiền",Hie="Tổng phụ",Wie="Toàn bộ",Kie="Thanh toán",Yie="HÓA ĐƠN THANH TOÁN",Zie="Ngày thanh toán",Gie="Số tiền phải trả",Qie="Phương thức thanh toán",Jie="Số tiền nhận được",Xie="BÁO CÁO CHI PHÍ",eoe="TỔNG CHI PHÍ",toe="LỢI NHUẬN",aoe="Báo cáo khách hàng bán hàng",noe="Báo cáo mặt hàng bán hàng",ioe="Báo cáo Tóm tắt Thuế",ooe="THU NHẬP = EARNINGS",roe="LỢI NHUẬN RÒNG",soe="Báo cáo bán hàng: Bởi khách hàng",loe="TỔNG DOANH SỐ BÁN HÀNG",coe="Báo cáo bán hàng: Theo mặt hàng",doe="BÁO CÁO THUẾ",uoe="TỔNG THUẾ",_oe="Các loại thuế",moe="Chi phí",poe="Hoa đơn để,",foe="Tàu,",hoe="Nhận được tư:",goe="Tax",voe={navigation:cie,general:die,dashboard:uie,tax_types:_ie,global_search:mie,company_switcher:pie,dateRange:fie,customers:hie,items:gie,estimates:vie,invoices:yie,recurring_invoices:bie,payments:kie,expenses:wie,login:xie,modules:Die,users:Sie,reports:zie,settings:Pie,wizard:Eie,validation:Aie,errors:Cie,pdf_estimate_label:jie,pdf_estimate_number:Tie,pdf_estimate_date:Iie,pdf_estimate_expire_date:Nie,pdf_invoice_label:Fie,pdf_invoice_number:Mie,pdf_invoice_date:Rie,pdf_invoice_due_date:Oie,pdf_notes:$ie,pdf_items_label:Lie,pdf_quantity_label:Bie,pdf_price_label:Uie,pdf_discount_label:Vie,pdf_amount_label:qie,pdf_subtotal:Hie,pdf_total:Wie,pdf_payment_label:Kie,pdf_payment_receipt_label:Yie,pdf_payment_date:Zie,pdf_payment_number:Gie,pdf_payment_mode:Qie,pdf_payment_amount_received_label:Jie,pdf_expense_report_label:Xie,pdf_total_expenses_label:eoe,pdf_profit_loss_label:toe,pdf_sales_customers_label:aoe,pdf_sales_items_label:noe,pdf_tax_summery_label:ioe,pdf_income_label:ooe,pdf_net_profit_label:roe,pdf_customer_sales_report:soe,pdf_total_sales_label:loe,pdf_item_sales_label:coe,pdf_tax_report_label:doe,pdf_total_tax_label:uoe,pdf_tax_types_label:_oe,pdf_expenses_label:moe,pdf_bill_to:poe,pdf_ship_to:foe,pdf_received_from:hoe,pdf_tax_label:goe},yoe={dashboard:"Ταμπλό",customers:"Πελάτες",items:"Προϊόντα",invoices:"Τιμολόγια","recurring-invoices":"Επαναλαμβανόμενα τιμολόγια",expenses:"Έξοδα",estimates:"Προσφορές",payments:"Πληρωμές",reports:"Αναφορές",settings:"Ρυθμίσεις",logout:"Αποσύνδεση",users:"Χρήστες",modules:"Πρόσθετα"},boe={add_company:"Προσθήκη Εταιρείας",view_pdf:"Προβολή PDF",copy_pdf_url:"Αντιγραφή συνδέσμου PDF",download_pdf:"Λήψη PDF",save:"Αποθήκευση",create:"Δημιουργία",cancel:"Ακύρωση",update:"Ενημέρωση",deselect:"Αποεπιλογή",download:"Κατεβάστε το",from_date:"Από Ημερομηνία",to_date:"Έως ημερομηνία",from:"Aπό",to:"Προς",ok:"Οκ",yes:"Ναι",no:"Όχι",sort_by:"Ταξινόμηση κατά",ascending:"Αύξουσα",descending:"Φθίνουσα",subject:"Θέμα",body:"Σώμα",message:"Μήνυμα",send:"Αποστολή",preview:"Προεπισκόπηση",go_back:"Επιστροφή",back_to_login:"Πίσω στην σελίδα Σύνδεσης;",home:"Αρχική",filter:"Φίλτρα",delete:"Διαγραφή",edit:"Επεξεργασία",view:"Προβολή",add_new_item:"Προσθήκη Νέου Στοιχείου",clear_all:"Εκκαθάριση όλων",showing:"Εμφανίζονται",of:"του",actions:"Ενέργειες",subtotal:"Μερικό Σύνολο",discount:"ΈΚΠΤΩΣΗ",fixed:"Σταθερό",percentage:"Ποσοστό",tax:"ΦΟΡΟΣ",total_amount:"ΣΥΝΟΛΙΚΟ ΠΟΣΟ",bill_to:"Χρέωση σε",ship_to:"Αποστολή σε",due:"Οφειλόμενο",draft:"Πρόχειρο",sent:"Απεσταλμένα",all:"Όλα",select_all:"Επιλογή Όλων",select_template:"Επιλογή Προτύπου",choose_file:"Κάντε κλικ εδώ για να επιλέξετε αρχείο",choose_template:"Επιλέξτε ένα πρότυπο",choose:"Επιλέξτε",remove:"Κατάργηση",select_a_status:"Επιλέξτε κατάσταση",select_a_tax:"Επιλέξτε φόρο",search:"Αναζήτηση",are_you_sure:"Είστε σίγουρος/η;",list_is_empty:"Η λίστα είναι κενή.",no_tax_found:"Δεν βρέθηκε φόρος!",four_zero_four:"404",you_got_lost:"Ουπς! Έχετε Χαθεί!",go_home:"Μετάβαση στην Αρχική",test_mail_conf:"Δοκιμή Ρύθμισης Αλληλογραφίας",send_mail_successfully:"Το Μήνυμα εστάλη επιτυχώς",setting_updated:"Οι Ρυθμίσεις ενημερώθηκαν επιτυχώς",select_state:"Επιλογή νομού",select_country:"Επιλογή Χώρας",select_city:"Επιλογή Πόλης",street_1:"Οδός 1",street_2:"Οδός 2",action_failed:"Αποτυχία Ενέργειας",retry:"Επανάληψη",choose_note:"Επιλογή Σημείωσης",no_note_found:"Δεν Βρέθηκε Σημείωση",insert_note:"Εισαγωγή Σημείωσης",copied_pdf_url_clipboard:"Αντιγράφηκε το url του PDF στo πρόχειρο!",copied_url_clipboard:"Ο σύνδεσμος αντιγράφηκε στο πρόχειρο!",docs:"Έγγραφα",do_you_wish_to_continue:"Θέλετε να συνεχίσετε;",note:"Σημείωση",pay_invoice:"Πληρωμή τιμολογίου",login_successfully:"Η είσοδος ήταν επιτυχής!",logged_out_successfully:"Η έξοδος ήταν επιτυχής",mark_as_default:"Σημείωση ως προεπιλογή"},koe={select_year:"Επιλογή έτους",cards:{due_amount:"Οφειλόμενο Ποσό",customers:"Πελάτες",invoices:"Τιμολόγια",estimates:"Προσφορές",payments:"Πληρωμές"},chart_info:{total_sales:"Πωλήσεις",total_receipts:"Αποδείξεις",total_expense:"Έξοδα",net_income:"Καθαρό Εισόδημα",year:"Επιλογή έτους"},monthly_chart:{title:"Πωλήσεις & Έξοδα"},recent_invoices_card:{title:"Ανεξόφλητα Τιμολόγια",due_on:"Εξόφληση Έως",customer:"Πελάτης",amount_due:"Οφειλόμενο ποσό",actions:"Ενέργειες",view_all:"Προβολή Όλων"},recent_estimate_card:{title:"Πρόσφατες προσφορές",date:"Ημερομηνία",customer:"Πελάτης",amount_due:"Οφειλόμενο Ποσό",actions:"Ενέργειες",view_all:"Προβολή Όλων"}},woe={name:"Όνομα",description:"Περιγραφή",percent:"Ποσοστό",compound_tax:"Σύνθετος Φόρος"},xoe={search:"Αναζήτηση...",customers:"Πελάτες",users:"Χρήστες",no_results_found:"Δεν Βρέθηκαν Αποτελέσματα"},Doe={label:"ΑΛΛΑΓΗ ΕΤΑΙΡΕΙΑΣ",no_results_found:"Δεν Βρέθηκαν Αποτελέσματα",add_new_company:"Προσθήκη νέας εταιρείας",new_company:"Νέα εταιρεία",created_message:"Η εταιρεία δημιουργήθηκε επιτυχώς"},Soe={today:"Σήμερα",this_week:"Τρέχουσα Εβδομάδα",this_month:"Τρέχων Μήνας",this_quarter:"Τρέχον Τρίμηνο",this_year:"Τρέχον Έτος",previous_week:"Προηγούμενη Εβδομάδα",previous_month:"Προηγούμενος Μήνας",previous_quarter:"Προηγούμενο Τρίμηνο",previous_year:"Προηγούμενο Έτος",custom:"Προσαρμοσμένο"},zoe={title:"Πελάτες",prefix:"Πρόθεμα",add_customer:"Προσθήκη Πελάτη",contacts_list:"Λίστα Πελατών",name:"Όνομα",mail:"Μήνυμα ηλεκτρονικού ταχυδρομείου",statement:"Κατάσταση",display_name:"Εμφανιζόμενο Όνομα",primary_contact_name:"Κύρια επαφή",contact_name:"Όνομα Επαφής",amount_due:"Οφειλόμενο Ποσό",email:"Ηλεκτρονική διεύθυνση",address:"Διεύθυνση",phone:"Τηλέφωνο",website:"Ιστοσελίδα",overview:"Επισκόπηση",invoice_prefix:"Πρόθεμα παραστατικού",estimate_prefix:"Εκτίμηση Προθέματος",payment_prefix:"Πρόθεμα Πληρωμής",enable_portal:"Ενεργοποιήση Πύλης",country:"Χώρα",state:"Νομός",city:"Πόλη",zip_code:"Ταχυδρομικός κώδικας",added_on:"Προστέθηκε Στις",action:"Ενέργεια",password:"Κωδικός",confirm_password:"Επιβεβαίωση Κωδικού",street_number:"Αριθμός οδού",primary_currency:"Κύριο Νόμισμα",description:"Περιγραφή",add_new_customer:"Προσθήκη Νέου Πελάτη",save_customer:"Αποθήκευση πελάτη",update_customer:"Ενημέρωση πελατών",customer:"Πελάτες - Πελάτες",new_customer:"Νέος πελάτης",edit_customer:`Επεξεργασία Πελάτη +`,basic_info:"Βασικές Πληροφορίες",portal_access:"Portal Access",portal_access_text:"Would you like to allow this customer to login to the Customer Portal?",portal_access_url:"Customer Portal Login URL",portal_access_url_help:"Please copy & forward the above given URL to your customer for providing access.",billing_address:"Διεύθυνση Χρέωσης",shipping_address:"Διεύθυνση Αποστολής",copy_billing_address:"Αντιγραφή από τιμολόγηση",no_customers:"Δεν υπάρχουν πελάτες ακόμα!",no_customers_found:"Δεν βρέθηκαν πελάτες",no_contact:"Καμμία επαφή",no_contact_name:"Δεν υπάρχει όνομα επαφής",list_of_customers:"Αυτή η ενότητα θα περιέχει τη λίστα πελατών.",primary_display_name:"Κύριο Εμφανιζόμενο Όνομα",select_currency:"Επιλογή νομίσματος",select_a_customer:"Επιλέξτε έναν πελάτη",type_or_click:"Πληκτρολογήστε ή κάντε κλικ για να επιλέξετε ένα στοιχείο",new_transaction:"Νέα συναλλαγή",no_matching_customers:"Δεν υπάρχουν πελάτες που να ταιριάζουν!",phone_number:"Αριθμός Τηλεφώνου",create_date:"Ημερομηνία Δημιουργίας",confirm_delete:"Δεν θα είστε σε θέση να ανακτήσει αυτόν τον πελάτη και όλα τα σχετικά Τιμολόγια, Εκτιμήσεις και Πληρωμές. √ Δεν θα είστε σε θέση να ανακτήσει αυτούς τους πελάτες και όλα τα σχετικά Τιμολόγια, Εκτιμήσεις και Πληρωμές.",created_message:"Ο πελάτης δημιουργήθηκε με επιτυχία",updated_message:"Ο πελάτης ενημερώθηκε με επιτυχία",address_updated_message:"Address Information Updated succesfully",deleted_message:"Πελάτης διαγράφηκε επιτυχώς | Οι πελάτες διαγράφηκαν με επιτυχία",edit_currency_not_allowed:"Δεν είναι δυνατή η αλλαγή νομίσματος μόλις δημιουργηθούν συναλλαγές."},Poe={title:"Στοιχεία",items_list:"Λίστα Στοιχείων",name:"Όνομα",unit:"Μονάδα",description:"Περιγραφή",added_on:"Προστέθηκε Στις",price:"Τιμή",date_of_creation:"Ημερομηνία Δημιουργίας",not_selected:"Δεν έχει επιλεχθεί στοιχείο",action:"Ενέργεια",add_item:"Προσθήκη Στοιχείου",save_item:"Αποθήκευση Στοιχείου",update_item:"Ενημέρωση Στοιχείου",item:"Στοιχείο | Στοιχεία",add_new_item:"Προσθήκη Νέου Στοιχείου",new_item:"Νέο Στοιχείο",edit_item:"Επεξεργασία Στοιχείου",no_items:"Δεν υπάρχουν Στοιχεία ακόμα!",list_of_items:"Αυτή η ενότητα θα περιέχει τη λίστα των στοιχείων.",select_a_unit:"επιλέξτε μονάδα",taxes:"Φόροι",item_attached_message:"Δεν είναι δυνατή η διαγραφή ενός στοιχείου που χρησιμοποιείται ήδη",confirm_delete:"Δεν θα είστε σε θέση να ανακτήσει αυτή την εκτίμηση ’, δεν θα είστε σε θέση να ανακτήσει αυτές τις εκτιμήσεις",created_message:"Το αντικείμενο δημιουργήθηκε επιτυχώς",updated_message:"Το αντικείμενο ενημερώθηκε επιτυχώς",deleted_message:"Ο υπολογισμός διαγράφηκε επιτυχώς"},Eoe={title:"Προσφορές",accept_estimate:"Accept Estimate",reject_estimate:"Reject Estimate",estimate:"Προσφορά | Προσφορές",estimates_list:"Λίστα προσφορών",days:"{days} Ημέρες",months:"{months} Μήνας",years:"{years} Έτος",all:"Όλα",paid:"Εξοφλημένο",unpaid:"Ανεξόφλητο",customer:"Πελάτης",ref_no:"REF NO.",number:"ΑΡΙΘΜΟΣ",amount_due:"ΠΟΣΟ ΠΡΟΣ ΠΛΗΡΩΜΗ",partially_paid:"Μερικώς Εξοφλημένο",total:"Σύνολο ",discount:"Έκπτωση",sub_total:"Μερικό Σύνολο",estimate_number:"Εκτίμηση Αριθμού",ref_number:"Αριθμός Αναφοράς",contact:"Επικοινωνία",add_item:"Προσθήκη στοιχείου",date:"Ημερομηνία",due_date:"Ημερομηνία λήξης",expiry_date:"Ημερομηνία λήξης",status:"Κατάσταση",add_tax:"Προσθήκη Φόρου",amount:"Ποσό",action:"Ενέργεια",notes:"Σημειώσεις",tax:"Φόρος",estimate_template:"Πρότυπο",convert_to_invoice:"Μετατράπηκε σε Τιμολόγιο",mark_as_sent:"Σήμανση ως απεσταλμένου",send_estimate:"Νέα Εκτίμηση",resend_estimate:"Πρόσφατες προσφορές",record_payment:"Καταγραφή Πληρωμής",add_estimate:"Νέα Εκτίμηση",save_estimate:"Νέα Εκτίμηση",confirm_conversion:"Αυτή η εκτίμηση θα χρησιμοποιηθεί για τη δημιουργία ενός νέου τιμολογίου.",conversion_message:"Το τιμολόγιο κλωνοποιήθηκε επιτυχώς",confirm_send_estimate:"Αυτό το τιμολόγιο θα αποσταλεί μέσω email στον πελάτη",confirm_mark_as_sent:"Η εκτίμηση αυτή θα επισημανθεί ως εστάλη",confirm_mark_as_accepted:"Αυτό το τιμολόγιο θα επισημανθεί ως Απορριπτόμενο",confirm_mark_as_rejected:"Αυτό το τιμολόγιο θα επισημανθεί ως Απορριπτόμενο",no_matching_estimates:"Δεν υπάρχουν αντίστοιχες προσφορές!",mark_as_sent_successfully:"Το τιμολόγιο επισημάνθηκε ως απεσταλμένο επιτυχώς",send_estimate_successfully:"Το τιμολόγιο εστάλη επιτυχώς",errors:{required:"Το πεδίο είναι υποχρεωτικό"},accepted:"Αποδεκτή",rejected:"Απορρίφθηκε",expired:"Expired",sent:"Αποστολή",draft:"Πρόχειρο",viewed:"Viewed",declined:"Απορρίφθηκε",new_estimate:"Νέα Εκτίμηση",add_new_estimate:"Προσθήκη Νέας Εκτίμησης",update_Estimate:"Ενημέρωση εκτίμησης",edit_estimate:"Επεξεργασία Εκτίμησης",items:"στοιχεία",Estimate:"Προσφορά | Προσφορές",add_new_tax:"Προσθήκη Νέου Φόρου",no_estimates:"Δεν υπάρχουν προσφορές ακόμα!",list_of_estimates:"Αυτή η ενότητα θα περιέχει τη λίστα των στοιχείων.",mark_as_rejected:"Σήμανση ως απορρίφθηκε",mark_as_accepted:"Σήμανση ως αποδεκτό",marked_as_accepted_message:"Εκτίμηση που έχει επισημανθεί ως αποδεκτή",marked_as_rejected_message:"Εκτίμηση που σημειώνεται ως απορριφθείσα",confirm_delete:"Δεν θα είστε σε θέση να ανακτήσει αυτή την εκτίμηση ’, δεν θα είστε σε θέση να ανακτήσει αυτές τις εκτιμήσεις",created_message:"Το τιμολόγιο εστάλη επιτυχώς",updated_message:"Το τιμολόγιο εστάλη επιτυχώς",deleted_message:"Ο υπολογισμός διαγράφηκε επιτυχώς",something_went_wrong:"Κάτι πήγε στραβά",item:{title:"Τίτλος Προϊόντος",description:"Περιγραφή",quantity:"Ποσότητα",price:"Τιμή",discount:"Έκπτωση",total:"Σύνολο ",total_discount:"Συνολική Έκπτωση",sub_total:"Μερικό Σύνολο",tax:"Φόρος",amount:"Ποσό",select_an_item:"Πληκτρολογήστε ή κάντε κλικ για να επιλέξετε ένα στοιχείο",type_item_description:"Πληκτρολογήστε Περιγραφή Στοιχείου (προαιρετικό)"},mark_as_default_estimate_template_description:"If enabled, the selected template will be automatically selected for new estimates."},Aoe={title:"Τιμολόγια",download:"Download",pay_invoice:"Pay Invoice",invoices_list:"Λίστα Τιμολογίων",invoice_information:"Invoice Information",days:"{days} Ημέρες",months:"{months} Μήνας",years:"{years} Έτος",all:"Όλα",paid:"Εξοφλημένο",unpaid:"Ανεξόφλητο",viewed:"Προβλήθηκαν",overdue:"Εκπρόθεσμα",completed:"Ολοκληρώθηκε",customer:"Πελάτης",paid_status:"ΚΑΤΑΣΤΑΣΗ ΠΛΗΡΩΜΗΣ",ref_no:"REF NO.",number:"ΑΡΙΘΜΟΣ",amount_due:"ΠΟΣΟ ΠΡΟΣ ΠΛΗΡΩΜΗ",partially_paid:"Μερικώς Εξοφλημένο",total:"Σύνολο ",discount:"Έκπτωση",sub_total:"Μερικό Σύνολο",invoice:"Τιμολόγια (Τιμολόγια)",invoice_number:"Αριθμός τιμολογίου",ref_number:"Αριθμός Αναφοράς",contact:"Επικοινωνία",add_item:"Προσθήκη στοιχείου",date:"Ημερομηνία",due_date:"Ημερομηνία λήξης",status:"Κατάσταση",add_tax:"Προσθήκη Φόρου",amount:"Ποσό",action:"Ενέργεια",notes:"Σημειώσεις",view:"Προβολή",send_invoice:"Αποστολή Παραστατικών",resend_invoice:"Αποστολή Παραστατικών",invoice_template:"Πρότυπο Τιμολογίου ",conversion_message:"Το τιμολόγιο κλωνοποιήθηκε επιτυχώς",template:"Επιλογή Προτύπου",mark_as_sent:"Σήμανση ως απεσταλμένου",confirm_send_invoice:"Αυτό το τιμολόγιο θα αποσταλεί μέσω email στον πελάτη",invoice_mark_as_sent:"Αυτό το τιμολόγιο θα επισημανθεί ως απεσταλμένο",confirm_mark_as_accepted:"Αυτό το τιμολόγιο θα επισημανθεί ως Αποδεκτό",confirm_mark_as_rejected:"Αυτό το τιμολόγιο θα επισημανθεί ως Απορριπτόμενο",confirm_send:"Αυτό το τιμολόγιο θα αποσταλεί μέσω email στον πελάτη",invoice_date:"Ημερομηνία Τιμολογίου",record_payment:"Καταγραφή Πληρωμής",add_new_invoice:"Προσθήκη Νέου Τιμολογίου",update_expense:"Ενημέρωση Δαπάνης",edit_invoice:"Επεξεργασία Τιμολογίου",new_invoice:"Νέο Τιμολόγιο",save_invoice:"Αποθήκευση Τιμολογίου",update_invoice:"Ενημέρωση Τιμολογίου",add_new_tax:"Προσθήκη Νέου Φόρου",no_invoices:"Κανένα Τιμολόγιο ακόμα!",mark_as_rejected:"Σήμανση ως απορρίφθηκε",mark_as_accepted:"Σήμανση ως αποδεκτό",list_of_invoices:"Αυτή η ενότητα θα περιέχει τη λίστα τιμολογίων.",select_invoice:"Επιλογή Τιμολογίου",no_matching_invoices:"Δεν υπάρχει κανένα αντίστοιχο τιμολόγιο!",mark_as_sent_successfully:"Το τιμολόγιο επισημάνθηκε ως απεσταλμένο επιτυχώς",invoice_sent_successfully:"Το τιμολόγιο εστάλη επιτυχώς",cloned_successfully:"Το τιμολόγιο κλωνοποιήθηκε επιτυχώς",clone_invoice:"Κλωνοποίηση Τιμολογίου",confirm_clone:"Αυτό το τιμολόγιο θα κλωνοποιηθεί σε ένα νέο Τιμολόγιο",item:{title:"Τίτλος Προϊόντος",description:"Περιγραφή",quantity:"Ποσότητα",price:"Τιμή",discount:"Έκπτωση",total:"Ολικό",total_discount:"Συνολική Έκπτωση",sub_total:"Μερικό Σύνολο",tax:"Φόρος",amount:"Ποσό",select_an_item:"Πληκτρολογήστε ή κάντε κλικ για να επιλέξετε ένα στοιχείο",type_item_description:"Πληκτρολογήστε Περιγραφή Στοιχείου (προαιρετικό)"},payment_attached_message:"Αυτό το τιμολόγιο έχει ήδη μια πληρωμή που επισυνάπτεται σε αυτό. Βεβαιωθείτε ότι έχετε διαγράψει πρώτα τις συνημμένες πληρωμές για να προχωρήσετε με την αφαίρεση",confirm_delete:"Δεν θα είστε σε θέση να ανακτήσει αυτή την εκτίμηση ’, δεν θα είστε σε θέση να ανακτήσει αυτές τις εκτιμήσεις",created_message:"Το τιμολόγιο κλωνοποιήθηκε επιτυχώς",updated_message:"Το τιμολόγιο ενημερώθηκε επιτυχώς",deleted_message:"Ο υπολογισμός διαγράφηκε επιτυχώς",marked_as_sent_message:"Το τιμολόγιο επισημάνθηκε ως απεσταλμένο επιτυχώς",something_went_wrong:"Κάτι πήγε στραβά",invalid_due_amount_message:"Συνολικό επαναλαμβανόμενο ποσό Τιμολογίου δεν μπορεί να είναι μικρότερο από το συνολικό καταβληθέν ποσό για αυτό το επαναλαμβανόμενο τιμολόγιο. Παρακαλούμε ενημερώστε το τιμολόγιο ή διαγράψτε τις σχετικές πληρωμές για να συνεχίσετε.",mark_as_default_invoice_template_description:"If enabled, the selected template will be automatically selected for new invoices."},Coe={title:"Επαναλαμβανόμενα τιμολόγια",invoices_list:"Επαναλαμβανόμενα τιμολόγια",days:"{days} Ημέρες",months:"{months} Μήνας",years:"{years} Έτος",all:"Όλα",paid:"Εξοφλημένο",unpaid:"Ανεξόφλητο",viewed:"Προβλήθηκαν",overdue:"Εκπρόθεσμα",active:"Ενεργή",completed:"Ολοκληρώθηκε",customer:"Πελάτης",paid_status:"ΚΑΤΑΣΤΑΣΗ ΠΛΗΡΩΜΗΣ",ref_no:"REF NO.",number:"ΑΡΙΘΜΟΣ",amount_due:"ΠΟΣΟ ΠΡΟΣ ΠΛΗΡΩΜΗ",partially_paid:"Μερικώς Εξοφλημένο",total:"Σύνολο ",discount:"Έκπτωση",sub_total:"Μερικό Σύνολο",invoice:"Επαναλαμβανόμενο Τιμολόγιο | Επαναλαμβανόμενα Τιμολόγια",invoice_number:"Αριθμός επαναλαμβανόμενου τιμολογίου",next_invoice_date:"Επόμενη Ημερομηνία Τιμολογίου",ref_number:"Αριθμός Αναφοράς",contact:"Επικοινωνία",add_item:"Προσθήκη στοιχείου",date:"Ημερομηνία",limit_by:"Περιορισμός Ανά:",limit_date:"Περιορισμός Ημερομηνίας",limit_count:"Όριο Καταμέτρησης",count:"Αρίθμηση",status:"Κατάσταση",select_a_status:"Επιλέξτε κατάσταση",working:"Λειτουργεί",on_hold:"Σε αναμονή",complete:"Ολοκληρώθηκε",add_tax:"Προσθήκη Φόρου",amount:"Ποσό",action:"Ενέργεια",notes:"Σημειώσεις",view:"Προβολή",basic_info:"Βασικές Πληροφορίες",send_invoice:"Δημιουργία Επαναλαμβανόμενου Τιμολογίου",auto_send:"Αυτόματη Αποστολή",resend_invoice:"Δημιουργία Επαναλαμβανόμενου Τιμολογίου",invoice_template:"Αριθμός επαναλαμβανόμενου τιμολογίου",conversion_message:"Επαναλαμβανόμενο τιμολόγιο κλωνοποιήθηκε επιτυχής",template:"Πρότυπο",mark_as_sent:"Σήμανση ως απεσταλμένου",confirm_send_invoice:"Αυτό το τιμολόγιο θα αποσταλεί μέσω email στον πελάτη",invoice_mark_as_sent:"Αυτό το τιμολόγιο θα επισημανθεί ως απεσταλμένο",confirm_send:"Αυτό το τιμολόγιο θα αποσταλεί μέσω email στον πελάτη",starts_at:"Ημερομηνία έναρξης",due_date:"Ημ/νία τιμολόγησης",record_payment:"Καταγραφή Πληρωμής",add_new_invoice:"Δημιουργία Επαναλαμβανόμενου Τιμολογίου",update_expense:"Ενημέρωση Δαπάνης",edit_invoice:"Επαναλαμβανόμενα τιμολόγια",new_invoice:"Επαναλαμβανόμενα τιμολόγια",send_automatically:"Αυτόματη Αποστολή",send_automatically_desc:"Ενεργοποιήστε αυτό, αν θέλετε να στείλετε το τιμολόγιο αυτόματα στον πελάτη όταν δημιουργηθεί.",save_invoice:"Αποθήκευση Επαναλαμβανόμενου Τιμολογίου",update_invoice:"Δημιουργία Επαναλαμβανόμενου Τιμολογίου",add_new_tax:"Προσθήκη Νέου Φόρου",no_invoices:"Επαναλαμβανόμενα τιμολόγια!",mark_as_rejected:"Σήμανση ως απορρίφθηκε",mark_as_accepted:"Σήμανση ως αποδεκτό",list_of_invoices:"Αυτή η ενότητα θα περιέχει τη λίστα τιμολογίων.",select_invoice:"Επιλογή Τιμολογίου",no_matching_invoices:"Δεν υπάρχει κανένα αντίστοιχο τιμολόγιο!",mark_as_sent_successfully:"Το τιμολόγιο επισημάνθηκε ως απεσταλμένο επιτυχώς",invoice_sent_successfully:"Επαναλαμβανόμενο τιμολόγιο κλωνοποιήθηκε επιτυχής",cloned_successfully:"Επαναλαμβανόμενο τιμολόγιο κλωνοποιήθηκε επιτυχής",clone_invoice:"Δημιουργία Επαναλαμβανόμενου Τιμολογίου",confirm_clone:"Αυτό το επαναλαμβανόμενο τιμολόγιο θα κλωνοποιηθεί σε ένα νέο επαναλαμβανόμενο τιμολόγιο",add_customer_email:"Please add an email address for this customer to send invoices automatically.",item:{title:"Τίτλος Προϊόντος",description:"Περιγραφή",quantity:"Ποσότητα",price:"Τιμή",discount:"Έκπτωση",total:"Σύνολο ",total_discount:"Συνολική Έκπτωση",sub_total:"Μερικό Σύνολο",tax:"Φόρος",amount:"Ποσό",select_an_item:"Πληκτρολογήστε ή κάντε κλικ για να επιλέξετε ένα στοιχείο",type_item_description:"Πληκτρολογήστε Περιγραφή Στοιχείου (προαιρετικό)"},frequency:{title:"Συχνότητα",select_frequency:"Επιλογή συχνοτήτων",minute:"Λεπτό",hour:"Ώρα",day_month:"Ημέρα του μήνα",month:"Μήνας",day_week:"Ημέρα της εβδομάδας"},confirm_delete:"Δεν θα είστε σε θέση να ανακτήσει αυτή την εκτίμηση ’, δεν θα είστε σε θέση να ανακτήσει αυτές τις εκτιμήσεις",created_message:"Επαναλαμβανόμενο τιμολόγιο κλωνοποιήθηκε επιτυχής",updated_message:"Επαναλαμβανόμενο τιμολόγιο κλωνοποιήθηκε επιτυχής",deleted_message:"Επαναλαμβανόμενο Τιμολόγιο διαγράφηκε επιτυχώς ‘ Επαναλαμβανόμενα Τιμολόγια διαγράφηκαν με επιτυχία",marked_as_sent_message:"Το τιμολόγιο επισημάνθηκε ως απεσταλμένο επιτυχώς",user_email_does_not_exist:"Αυτό το e-mail δεν υπάρχει",something_went_wrong:"Κάτι πήγε στραβά",invalid_due_amount_message:"Συνολικό επαναλαμβανόμενο ποσό Τιμολογίου δεν μπορεί να είναι μικρότερο από το συνολικό καταβληθέν ποσό για αυτό το επαναλαμβανόμενο τιμολόγιο. Παρακαλούμε ενημερώστε το τιμολόγιο ή διαγράψτε τις σχετικές πληρωμές για να συνεχίσετε."},joe={title:"Πληρωμές",payments_list:"Λίστα πληρωμών",record_payment:"Καταγραφή Πληρωμής",customer:"Πελάτης",date:"Ημερομηνία",amount:"Ποσό",action:"Ενέργεια",payment_number:"Αριθμός Πληρωμής",payment_mode:"Τρόπος πληρωμής",invoice:"Τιμολόγιο",note:"Σημείωση",add_payment:"Προσθήκη Πληρωμής",new_payment:"Νέα Πληρωμή",edit_payment:"Επεξεργασία Πληρωμής",view_payment:"Προβολή Πληρωμής",add_new_payment:"Προσθήκη Νέας Πληρωμής",send_payment_receipt:"Αποστολή Απόδειξης Πληρωμής",send_payment:"Αποστολή Πληρωμής",save_payment:"Αποθήκευση Πληρωμής",update_payment:"Ενημέρωση Πληρωμής",payment:"Πληρωμές Πληρωμών",no_payments:"Καμία πληρωμή ακόμα!",not_selected:"Δεν έχει επιλεγεί",no_invoice:"Χωρίς τιμολόγιο",no_matching_payments:"Δεν υπάρχουν πληρωμές που να ταιριάζουν!",list_of_payments:"Αυτή η ενότητα θα περιέχει τον κατάλογο πληρωμών.",select_payment_mode:"Επιλέξτε τρόπο πληρωμής",confirm_mark_as_sent:"Η εκτίμηση αυτή θα επισημανθεί ως εστάλη",confirm_send_payment:"Αυτή η πληρωμή θα σταλεί μέσω email στον πελάτη",send_payment_successfully:"Η πληρωμή εστάλη επιτυχώς",something_went_wrong:"Κάτι πήγε στραβά",confirm_delete:"Δεν θα είστε σε θέση να ανακτήσει αυτή την εκτίμηση ’, δεν θα είστε σε θέση να ανακτήσει αυτές τις εκτιμήσεις",created_message:"Η πληρωμή εστάλη επιτυχώς",updated_message:"Η πληρωμή εστάλη επιτυχώς",deleted_message:"Ο υπολογισμός διαγράφηκε επιτυχώς",invalid_amount_message:"Το ποσό δεν είναι έγκυρο"},Toe={title:"Έξοδα",expenses_list:"Λίστα Εξόδων",select_a_customer:"Επιλέξτε έναν πελάτη",expense_title:"Τίτλος",customer:"Πελάτης",currency:"Νόμισμα",contact:"Επικοινωνία",category:"Κατηγορία",from_date:"Από Ημερομηνία",to_date:"Έως ημερομηνία",expense_date:"Ημερομηνία",description:"Περιγραφή",receipt:"Απόδειξη",amount:"Ποσό",action:"Ενέργεια",not_selected:"Δεν έχει επιλεγεί",note:"Σημείωση",category_id:"ID Κατηγορίας",date:"Ημερομηνία",add_expense:"Προσθήκη δαπάνης",add_new_expense:"Προσθήκη δαπάνης",save_expense:"Ενημέρωση Δαπάνης",update_expense:"Ενημέρωση Δαπάνης",download_receipt:"Λήψη Απόδειξης",edit_expense:"Προσθήκη δαπάνης",new_expense:"Προσθήκη δαπάνης",expense:"Έξοδα - Έξοδα",no_expenses:"Δεν υπάρχουν έξοδα ακόμα!",list_of_expenses:"Αυτή η ενότητα θα περιέχει τη λίστα των στοιχείων.",confirm_delete:"Δεν θα είστε σε θέση να ανακτήσει αυτή την εκτίμηση ’, δεν θα είστε σε θέση να ανακτήσει αυτές τις εκτιμήσεις",created_message:"Το τιμολόγιο εστάλη επιτυχώς",updated_message:"Το τιμολόγιο εστάλη επιτυχώς",deleted_message:"Ο υπολογισμός διαγράφηκε επιτυχώς",categories:{categories_list:"Λίστα Κατηγορίων",title:"Τίτλος",name:"Όνομα",description:"Περιγραφή",amount:"Ποσό",actions:"Ενέργειες",add_category:"Προσθήκη Κατηγορίας",new_category:"Νέα κατηγορία",category:'Κατηγορία "Κατηγορίες',select_a_category:"Επιλέξτε μια κατηγορία"}},Ioe={email:"Ηλεκτρονική διεύθυνση",password:"Κωδικός",forgot_password:"Ξεχάσατε τον κωδικό;",or_signIn_with:"or sign in with",login:"Σύνδεση",register:"Εγγραφείτε",reset_password:"Επαναφορά κωδικού πρόσβασης",password_reset_successfully:"Επαναφορά του κωδικού πρόσβασης με επιτυχία",enter_email:"Εισάγετε email",enter_password:"Εισαγωγή κωδικού πρόσβασης",retype_password:"Πληκτρολόγησε και πάλι τον κωδικό"},Noe={buy_now:"Buy Now",install:"Install",price:"Price",download_zip_file:"Download ZIP file",unzipping_package:"Unzipping Package",copying_files:"Copying Files",deleting_files:"Deleting Unused files",completing_installation:"Completing Installation",update_failed:"Update Failed",install_success:"Module has been installed successfully!",customer_reviews:"Reviews",license:"License",faq:"FAQ",monthly:"Monthly",yearly:"Yearly",updated:"Updated",version:"Version",disable:"Disable",module_disabled:"Module Disabled",enable:"Enable",module_enabled:"Module Enabled",update_to:"Update To",module_updated:"Module Updated Successfully!",title:"Πρόσθετα",module:"Module | Modules",api_token:"API token",invalid_api_token:"Invalid API Token.",other_modules:"Other Modules",view_all:"View All",no_reviews_found:"There are no reviews for this module yet!",module_not_purchased:"Module Not Purchased",module_not_found:"Module Not Found",version_not_supported:"This module version doesn't support the current version of InvoiceShelf",last_updated:"Last Updated On",connect_installation:"Σύνδεση της εγκατάστασης σας",api_token_description:"Συνδεθείτε στο {url} και συνδέστε αυτήν την εγκατάσταση εισάγοντας το API Token. Τα πρόσθετα που αγοράσατε θα εμφανιστούν εδώ μετά την ολοκλήρωση της σύνδεσης.",view_module:"Δείτε το πρόσθετο",update_available:"Διαθέσιμη ανανέωση",purchased:"Purchased",installed:"Εγκαταστάθηκε",no_modules_installed:"Δεν υπάρχουν ακόμα εγκατεστημένα πρόσθετα!",disable_warning:"All the settings for this particular will be reverted.",what_you_get:"What you get"},Foe={title:"Χρήστες",users_list:"Λίστα Χρηστών",name:"Όνομα",description:"Περιγραφή",added_on:"Προστέθηκε Στις",date_of_creation:"Ημερομηνία Δημιουργίας",action:"Ενέργεια",add_user:"Προσθήκη Χρήστη",save_user:"Αποθήκευση Χρήστη",update_user:"Ενημέρωση χρήστη",user:"Χρήστης | Χρήστες",add_new_user:"Προσθήκη νέου Χρήστη",new_user:"Νέος χρήστης",edit_user:"Επεξεργασία Χρήστη",no_users:"Δεν υπάρχουν Στοιχεία ακόμα!",list_of_users:"Αυτή η ενότητα θα περιέχει τη λίστα των στοιχείων.",email:"Ηλεκτρονική διεύθυνση",phone:"Τηλέφωνο",password:"Κωδικός",user_attached_message:"Δεν είναι δυνατή η διαγραφή ενός στοιχείου που χρησιμοποιείται ήδη",confirm_delete:"Δεν θα είστε σε θέση να ανακτήσει αυτή την εκτίμηση ’, δεν θα είστε σε θέση να ανακτήσει αυτές τις εκτιμήσεις",created_message:"Ο χρήστης δημιουργήθηκε με επιτυχία",updated_message:"Ο χρήστης ενημερώθηκε με επιτυχία",deleted_message:"Ο υπολογισμός διαγράφηκε επιτυχώς",select_company_role:"Επιλέξτε ρόλο για {company}",companies:"Εταιρείες"},Moe={title:"Αναφορά",from_date:"Από Ημερομηνία",to_date:"Έως ημερομηνία",status:"Κατάσταση",paid:"Εξοφλημένο",unpaid:"Ανεξόφλητο",download_pdf:"Λήψη PDF",view_pdf:"Προβολή PDF",update_report:"Ενημέρωση Αναφοράς",report:"Αναφορά | Αναφορές",profit_loss:{profit_loss:"Κέρδη & Απώλεια",to_date:"Έως ημερομηνία",from_date:"Από Ημερομηνία",date_range:"Επιλέξτε εύρος ημερομηνίας"},sales:{sales:"Πωλήσεις",date_range:"Επιλέξτε εύρος ημερομηνίας",to_date:"Έως ημερομηνία",from_date:"Από Ημερομηνία",report_type:"Τύπος Αναφοράς"},taxes:{taxes:"Φόροι",to_date:"Έως ημερομηνία",from_date:"Από Ημερομηνία",date_range:"Επιλέξτε εύρος ημερομηνίας"},errors:{required:"Το πεδίο είναι υποχρεωτικό"},invoices:{invoice:"Τιμολόγιο",invoice_date:"Ημερομηνία Τιμολογίου",due_date:"Ημερομηνία λήξης",amount:"Ποσό",contact_name:"Όνομα Επαφής",status:"Κατάσταση"},estimates:{estimate:"Εκτιμώμενο",estimate_date:"Εκτιμώμενη ημ. επισκευής",due_date:"Ημερομηνία λήξης",estimate_number:"Εκτίμηση Αριθμού",ref_number:"Αριθμός Αναφοράς",amount:"Ποσό",contact_name:"Όνομα Επαφής",status:"Κατάσταση"},expenses:{expenses:"Έξοδα",category:"Κατηγορία",date:"Ημερομηνία",amount:"Ποσό",to_date:"Έως ημερομηνία",from_date:"Από Ημερομηνία",date_range:"Επιλέξτε εύρος ημερομηνίας"}},Roe={menu_title:{account_settings:"Ρυθμίσεις Λογαριασμού",company_information:"Πληροφορίες Εταιρίας",customization:"Προσαρμογή",preferences:"Ρυθμίσεις",notifications:"Ειδοποιήσεις",tax_types:"Φορολογική κλάση",expense_category:"Κατηγορίες Εξόδων",update_app:"Ενημέρωση εφαρμογής",backup:"Αντίγραφα ασφαλείας",file_disk:"Δίσκος Αρχείου",custom_fields:"Προσαρμοσμένα πεδία",payment_modes:"Τρόπος πληρωμής",notes:"Σημειώσεις",exchange_rate:"Συναλλαγματική ισοτιμία",address_information:"Address Information"},address_information:{section_description:" You can update Your Address information using form below."},title:"Ρυθμίσεις",setting:"Ρύθμιση Ρυθμίσεων",general:"General",language:"Γλώσσα",primary_currency:"Κύριο Νόμισμα",timezone:"Ζώνη Ώρας",date_format:"Μορφή Ημερομηνίας",currencies:{title:"Συνάλλαγμα",currency:"Νόμισμα",currencies_list:"Λίστα συναλλαγμάτων",select_currency:"Επιλογή νομίσματος",name:"Όνομα",code:"Κώδικας",symbol:"Σύμβολο",precision:"Ακρίβεια",thousand_separator:"Διαχωριστικό χιλιάδων",decimal_separator:"Διαχωριστής δεκαδικών",position:"Θέση",position_of_symbol:"Θέση Συμβόλου",right:"Δεξιά",left:"Αριστερά",action:"Ενέργεια",add_currency:"Προσθέστε νόμισμα"},mail:{host:"Διακομιστής Αλληλογραφίας",port:"Διακομιστής Αλληλογραφίας",driver:"Οδηγός Αλληλογραφίας",secret:"Μυστικό",mailgun_secret:"Μυστικό Mailgun",mailgun_domain:"Τομέας",mailgun_endpoint:"Mailgun Endpoint",ses_secret:"SES Μυστικό",ses_key:"Κλειδί SES",password:"Κωδικός Πρόσβασης Ταχυδρομείου",username:"Όνομα Ταχυδρομείου",mail_config:"Διαμόρφωση Mail",from_name:"Όνομα Αποστολέα",from_mail:"Διεύθυνση Αποστολής",encryption:"Κρυπτογράφηση Email",mail_config_desc:"Παρακάτω είναι η φόρμα για τη ρύθμιση παραμέτρων του προγράμματος οδήγησης ηλεκτρονικού ταχυδρομείου για την αποστολή μηνυμάτων ηλεκτρονικού ταχυδρομείου από την εφαρμογή. Μπορείτε επίσης να ρυθμίσετε τις παραμέτρους τρίτων παρόχων όπως το Sendgrid, το SES κλπ."},pdf:{title:"Ρυθμίσεις PDF",footer_text:"Κείμενο Υποσέλιδου",pdf_layout:"Διάταξη PDF"},company_info:{company_info:"Πληροφορίες Εταιρίας",company_name:"Όνομα Εταιρείας",company_logo:"Λογότυπο Εταιρείας",section_description:"Πληροφορίες σχετικά με την εταιρεία σας που θα εμφανίζονται σε τιμολόγια, εκτιμήσεις και άλλα έγγραφα που δημιουργούνται από την InvoiceShelf.",phone:"Τηλέφωνο",country:"Χώρα",state:"Νομός",city:"Πόλη",address:"Διεύθυνση",zip:"Ταχυδρομικός Κώδικας",save:"Αποθήκευση",delete:"Διαγραφή",updated_message:"Οι πληροφορίες για τον πύργο εμφιάλωσης ενημερώθηκαν επιτυχώς.",delete_company:"Διαγραφή Εταιρείας",delete_company_description:"Μόλις διαγράψετε την εταιρεία σας, θα χάσετε όλα τα δεδομένα και τα αρχεία που σχετίζονται με αυτή μόνιμα.",are_you_absolutely_sure:"Είσαι σίγουρος/η;",delete_company_modal_desc:"Αυτή η ενέργεια δεν μπορεί να αναιρεθεί. Αυτό θα διαγράψει μόνιμα {company} και όλα τα συσχετισμένα δεδομένα.",delete_company_modal_label:"Παρακαλώ πληκτρολογήστε {company} για επιβεβαίωση"},custom_fields:{title:"Προσαρμοσμένα πεδία",section_description:"Προσαρμόστε τα Τιμολόγια σας, Εκτιμήσεις & Αποδείξεις Πληρωμής με τα δικά σας πεδία. Σιγουρευτείτε ότι χρησιμοποιείτε τα παρακάτω πεδία στις μορφές διευθύνσεων στη σελίδα Ρυθμίσεις προσαρμογής.",add_custom_field:"Προσθήκη προσαρμοσμένου πεδίου",edit_custom_field:"Επεξεργασία Προσαρμοσμένου Πεδίου",field_name:"Όνομα πεδίου",label:"Επιγραφή",type:"Type",name:"Όνομα",slug:"Δυνατό χτύπημα",required:"Απαιτείται",placeholder:"Σύμβολο υποκατάστασης",help_text:"Κείμενο βοήθειας",default_value:"Προεπιλεγμένη τιμή",prefix:"Πρόθεμα",starting_number:"Αρχή αρίθμησης από",model:"Μοντέλο",help_text_description:"Εισάγετε κάποιο κείμενο για να βοηθήσετε τους χρήστες να κατανοήσουν τον σκοπό αυτού του προσαρμοσμένου πεδίου.",suffix:"Επίθεμα",yes:"Ναι",no:"Όχι",order:"Σειρά",custom_field_confirm_delete:"Δεν θα μπορείτε να ανακτήσετε αυτό το Προσαρμοσμένο Πεδίο",already_in_use:"Η διεύθυνση email χρησιμοποιείται ήδη",deleted_message:"Επιτυχής διαγραφή προσαρμοσμένου κλειδιού",options:"ρυθμίσεις",add_option:"Προσθήκη επιλογής",add_another_option:"Προσθήκη άλλης επιλογής",sort_in_alphabetical_order:"Ταξινόμηση σε αλφαβητική σειρά",add_options_in_bulk:"Προσθήκη επιλογών μαζικά",use_predefined_options:"Χρήση Προκαθορισμένων Επιλογών",select_custom_date:"Επιλέξτε Προσαρμοσμένη Ημερομηνία",select_relative_date:"Επιλέξτε ημερομηνία επιστροφής",ticked_by_default:"Ενεργοποιημένη από προεπιλογή",updated_message:"Επιτυχής διαγραφή προσαρμοσμένου κλειδιού",added_message:"Επιτυχής διαγραφή προσαρμοσμένου κλειδιού",press_enter_to_add:"Πατήστε enter για να προσθέσετε νέα επιλογή",model_in_use:"Δεν είναι δυνατή η ενημέρωση μοντέλου για πεδία που είναι ήδη σε χρήση.",type_in_use:"Δεν είναι δυνατή η ενημέρωση μοντέλου για πεδία που είναι ήδη σε χρήση."},customization:{customization:"προσαρμογή",updated_message:"Οι πληροφορίες για τον πύργο εμφιάλωσης ενημερώθηκαν επιτυχώς.",save:"Αποθήκευση",insert_fields:"Πεδίο ετικέτας",learn_custom_format:"Μάθετε πώς να χρησιμοποιείτε προσαρμοσμένη μορφή",add_new_component:"Προσθήκη στοιχείου",component:"Συστατικό",Parameter:"Παράμετρος",series:"Σειρά",series_description:"Για να ορίσετε ένα στατικό πρόθεμα/επίθεμα όπως 'INV' σε όλη την εταιρεία σας. Υποστηρίζει μήκος χαρακτήρα έως και 4 χαρακτήρες.",series_param_label:"Όνομα σειράς",delimiter:"Διαχωριστικό",delimiter_description:"Ενιαίος χαρακτήρας για τον καθορισμό του ορίου μεταξύ 2 ξεχωριστών στοιχείων. Από προεπιλογή το σετ του -",delimiter_param_label:"Τιμή Οριοθέτη",date_format:"Μορφή Ημερομηνίας",date_format_description:"Ένα τοπικό πεδίο ημερομηνίας και ώρας που δέχεται μια παράμετρο μορφής. Η προεπιλεγμένη μορφή: 'Y' εμφανίζει το τρέχον έτος.",date_format_param_label:"Μορφή",sequence:"Αλληλουχία",sequence_description:"Συνεχής ακολουθία αριθμών σε όλη την εταιρεία σας. Μπορείτε να καθορίσετε το μήκος του δοσμένου παραμέτρου.",sequence_param_label:"Μήκος Ακολουθίας",customer_series:"Σειρά Πελατών",customer_series_description:"Για να ορίσετε ένα διαφορετικό πρόθεμα/επίθεμα για κάθε πελάτη.",customer_sequence:"Προσαρμόστε την αριθμοδότηση",customer_sequence_description:"Συνεχής ακολουθία αριθμών για κάθε πελάτη σας.",customer_sequence_param_label:"Μήκος Ακολουθίας",random_sequence:"Τυχαία Ακολουθία",random_sequence_description:"Τυχαία αλφαριθμητική συμβολοσειρά. Μπορείτε να καθορίσετε το μήκος του δοσμένου παραμέτρου.",random_sequence_param_label:"Μήκος Ακολουθίας",invoices:{title:"Τιμολόγια",invoice_number_format:"Μορφή Αριθμού Τιμολογίου",invoice_number_format_description:"Προσαρμόστε τον τρόπο με τον οποίο δημιουργείται αυτόματα ο υπολογισμός σας όταν δημιουργείτε μια νέα εκτίμηση.",preview_invoice_number:"Προεπισκόπηση Αριθμού Τιμολογίου",due_date:"Ημερομηνία λήξης",due_date_description:"Καθορίστε πώς ορίζεται αυτόματα η ημερομηνία λήξης όταν δημιουργείτε μια εκτίμηση.",due_date_days:"Τιμολόγια ληξιπρόθεσμα μετά από (ημέρες)",set_due_date_automatically:"Ορισμός Ημερομηνίας Λήξης Αυτόματα",set_due_date_automatically_description:"Ενεργοποιήστε το αν επιθυμείτε να ορίσετε την ημερομηνία λήξης αυτόματα όταν δημιουργείτε μια νέα εκτίμηση.",default_formats:"Προεπιλεγμένες επεκτάσεις",default_formats_description:"Παρακάτω οι παρακάτω μορφές χρησιμοποιούνται για να γεμίσουν αυτόματα τα πεδία στη δημιουργία τιμολογίων.",default_invoice_email_body:"Προκαθορισμένο Σώμα Email Τιμολογίου",company_address_format:"Μορφή Διεύθυνσης Εταιρείας",shipping_address_format:"Μορφή Διεύθυνσης Αποστολής",billing_address_format:"Μορφή Διεύθυνσης Χρέωσης",invoice_email_attachment:"Αποστολή τιμολογίων ως συνημμένων",invoice_email_attachment_setting_description:"Ενεργοποιήστε αυτό αν θέλετε να στείλετε τιμολόγια ως συνημμένο email. Παρακαλώ σημειώστε ότι το κουμπί 'Προβολή Τιμολογίου' στα μηνύματα ηλεκτρονικού ταχυδρομείου δεν θα εμφανίζεται πλέον όταν είναι ενεργοποιημένο.",invoice_settings_updated:"Οι Ρυθμίσεις ενημερώθηκαν επιτυχώς",retrospective_edits:"Αναδρομικές Διεργασίες",allow:"Αποδοχή",disable_on_invoice_partial_paid:"Απενεργοποίηση μετά την εγγραφή μερικής πληρωμής",disable_on_invoice_paid:"Απενεργοποίηση μετά την εγγραφή μερικής πληρωμής",disable_on_invoice_sent:"Απενεργοποίηση μετά την αποστολή τιμολογίου",retrospective_edits_description:" Με βάση τους νόμους της χώρας σας ή τις προτιμήσεις σας, μπορείτε να περιορίσετε τους χρήστες από την επεξεργασία οριστικοποιημένων τιμολογίων."},estimates:{title:"Εκτιμήσεις",estimate_number_format:"Εκτίμηση Μορφής Αριθμού",estimate_number_format_description:"Προσαρμόστε τον τρόπο με τον οποίο δημιουργείται αυτόματα ο υπολογισμός σας όταν δημιουργείτε μια νέα εκτίμηση.",preview_estimate_number:"Εκτίμηση Αριθμού Προεπισκόπησης",expiry_date:"Ημερομηνία λήξης",expiry_date_description:"Καθορίστε πώς ορίζεται αυτόματα η ημερομηνία λήξης όταν δημιουργείτε μια εκτίμηση.",expiry_date_days:"Ο υπολογισμός λήγει μετά από ημέρες",set_expiry_date_automatically:"Ορισμός Ημερομηνίας Λήξης Αυτόματα",set_expiry_date_automatically_description:"Ενεργοποιήστε το αν επιθυμείτε να ορίσετε την ημερομηνία λήξης αυτόματα όταν δημιουργείτε μια νέα εκτίμηση.",default_formats:"Προεπιλεγμένες επεκτάσεις",default_formats_description:"Παρακάτω οι παρακάτω μορφές χρησιμοποιούνται για να γεμίσουν αυτόματα τα πεδία στη δημιουργία τιμολογίων.",default_estimate_email_body:"Προκαθορισμένο Σώμα Email Τιμολογίου",company_address_format:"Μορφή Διεύθυνσης Εταιρείας",shipping_address_format:"Μορφή Διεύθυνσης Αποστολής",billing_address_format:"Μορφή Διεύθυνσης Χρέωσης",estimate_email_attachment:"Αποστολή τιμολογίων ως συνημμένων",estimate_email_attachment_setting_description:"Ενεργοποιήστε αυτό αν θέλετε να στείλετε τιμολόγια ως συνημμένο email. Παρακαλώ σημειώστε ότι το κουμπί 'Προβολή Τιμολογίου' στα μηνύματα ηλεκτρονικού ταχυδρομείου δεν θα εμφανίζεται πλέον όταν είναι ενεργοποιημένο.",estimate_settings_updated:"Οι Ρυθμίσεις ενημερώθηκαν επιτυχώς",convert_estimate_options:"Εκτίμηση Μετατροπής Ενέργειας",convert_estimate_description:"Καθορίστε τι συμβαίνει στην εκτίμηση αφού μετατραπεί σε τιμολόγιο.",no_action:"Καμία ενέργεια",delete_estimate:"Διαγραφή εκτίμησης",mark_estimate_as_accepted:"Σημειώστε την εκτίμηση ως αποδεκτή"},payments:{title:"Πληρωμές",payment_number_format:"Μορφή Αριθμού Πληρωμής",payment_number_format_description:"Προσαρμόστε τον τρόπο με τον οποίο δημιουργείται αυτόματα ο υπολογισμός σας όταν δημιουργείτε μια νέα εκτίμηση.",preview_payment_number:"Προεπισκόπηση Αριθμού Πληρωμής",default_formats:"Προεπιλεγμένες επεκτάσεις",default_formats_description:"Παρακάτω οι παρακάτω μορφές χρησιμοποιούνται για να γεμίσουν αυτόματα τα πεδία στη δημιουργία τιμολογίων.",default_payment_email_body:"Προκαθορισμένο Σώμα Email Τιμολογίου",company_address_format:"Μορφή Διεύθυνσης Εταιρείας",from_customer_address_format:"Από Τη Μορφή Διεύθυνσης Πελάτη",payment_email_attachment:"Αποστολή τιμολογίων ως συνημμένων",payment_email_attachment_setting_description:"Ενεργοποιήστε αυτό αν θέλετε να στείλετε τιμολόγια ως συνημμένο email. Παρακαλώ σημειώστε ότι το κουμπί 'Προβολή Τιμολογίου' στα μηνύματα ηλεκτρονικού ταχυδρομείου δεν θα εμφανίζεται πλέον όταν είναι ενεργοποιημένο.",payment_settings_updated:"Οι Ρυθμίσεις ενημερώθηκαν επιτυχώς"},items:{title:"Προϊόντα",units:"Μονάδες",add_item_unit:"Προσθήκη Μονάδας Αντικειμένου",edit_item_unit:"Προσθήκη Μονάδας Αντικειμένου",unit_name:"Όνομα μονάδας",item_unit_added:"Το Αντικείμενο Δεν Προσθέθηκε",item_unit_updated:"Το Αντικείμενο Δεν Προσθέθηκε",item_unit_confirm_delete:"Δεν θα μπορείτε να ανακτήσετε αυτό το Προσαρμοσμένο Πεδίο",already_in_use:"Η διεύθυνση email χρησιμοποιείται ήδη",deleted_message:"Τα στοιχεία έχουν διαγραφεί με επιτυχία"},notes:{title:"Σημειώσεις",description:"Εξοικονομήστε χρόνο δημιουργώντας σημειώσεις και επαναχρησιμοποίησή τους στα τιμολόγια σας, εκτιμήσεις και πληρωμές.",notes:"Σημειώσεις",type:"Type",add_note:"Προσθήκη σημείωσης",add_new_note:"Προσθήκη Νέας Σημείωσης",name:"Όνομα",edit_note:"Επεξεργασία σημείωσης",note_added:"προστέθηκε με επιτυχία",note_updated:"Ο ρόλος ενημερώθηκε με επιτυχία.",note_confirm_delete:"Δεν θα μπορείτε να ανακτήσετε αυτό το Προσαρμοσμένο Πεδίο",already_in_use:"Το όνομα είναι ήδη σε χρήση",deleted_message:"Ο ρόλος διαγράφηκε με επιτυχία"}},account_settings:{profile_picture:"Εικόνα Προφίλ",name:"Όνομα",email:"Ηλεκτρονική διεύθυνση",password:"Κωδικός",confirm_password:"Επιβεβαίωση Κωδικού",account_settings:"Ρυθμίσεις Λογαριασμού",save:"Αποθήκευση",section_description:"Μπορείτε να ενημερώσετε το όνομά σας, email & κωδικό πρόσβασης χρησιμοποιώντας την παρακάτω φόρμα.",updated_message:"Οι ρυθμίσεις του λογαριασμού ενημερώθηκαν επιτυχώς!"},user_profile:{name:"Όνομα",email:"Ηλεκτρονική διεύθυνση",password:"Κωδικός",confirm_password:"Επιβεβαίωση Κωδικού"},notification:{title:"Ειδοποιήσεις",email:"Αποστολή ειδοποιήσεων",description:"Ποιες ειδοποιήσεις ηλεκτρονικού ταχυδρομείου θα θέλατε να λαμβάνετε όταν κάτι αλλάζει?",invoice_viewed:"Τιμολόγιο προβλήθηκε",invoice_viewed_desc:"Όταν ο πελάτης σας βλέπει το τιμολόγιο που αποστέλλεται μέσω του πίνακα ελέγχου.",estimate_viewed:"Εκτίμηση προβεβλημένων",estimate_viewed_desc:"Όταν ο πελάτης σας βλέπει την εκτίμηση που αποστέλλεται μέσω του πίνακα ελέγχου κρατήσεων.",save:"Αποθήκευση",email_save_message:"Το Μήνυμα εστάλη επιτυχώς",please_enter_email:"Εισαγάγετε e-mail"},roles:{title:"Ρόλοι",description:"Διαχειριστείτε τους ρόλους και τα δικαιώματα αυτής της εταιρείας",save:"Αποθήκευση",add_new_role:"Προσθήκη Νέου Ρόλου",role_name:"Όνομα ρόλου",added_on:"Προστέθηκε στις",add_role:"Προσθήκη ρόλου",edit_role:"Επεξεργασία Ρόλου",name:"Όνομα",permission:"Δικαιώματα Δικαιωμάτων",select_all:"Επιλογή Όλων",none:"Κανείς",confirm_delete:"Δεν θα μπορείτε να ανακτήσετε αυτό το Προσαρμοσμένο Πεδίο",created_message:"Ο χρήστης δημιουργήθηκε με επιτυχία",updated_message:"Ο ρόλος ενημερώθηκε με επιτυχία.",deleted_message:"Ο ρόλος διαγράφηκε με επιτυχία",already_in_use:"Το όνομα είναι ήδη σε χρήση"},exchange_rate:{exchange_rate:"Συναλλαγματική ισοτιμία",title:"Διόρθωση ζητημάτων συναλλάγματος",description:"Παρακαλούμε εισάγετε τη συναλλαγματική ισοτιμία όλων των νομισμάτων που αναφέρονται παρακάτω για να βοηθήσετε τον Κρατήρα να υπολογίσει σωστά τα ποσά σε {currency}.",drivers:"Οδηγοί",new_driver:"Προσθήκη νέας υπηρεσίας παροχής",edit_driver:"Επεξεργασία παρόχου",select_driver:"Επιλέξτε έναν Οδηγό",update:"επιλογή συναλλαγματικής ισοτιμίας ",providers_description:"Ρυθμίστε τους παρόχους συναλλαγματικών ισοτιμιών σας εδώ για να συγκεντρώσετε αυτόματα την τελευταία συναλλαγματική ισοτιμία στις συναλλαγές.",key:"Κλειδί API",name:"Όνομα",driver:"Οδηγός",is_default:"IS ΠΡΟΦΥΛΑΞΗ",currency:"Συνάλλαγμα",exchange_rate_confirm_delete:"Δεν θα μπορείτε να ανακτήσετε αυτό το Προσαρμοσμένο Πεδίο",created_message:"Ο πελάτης δημιουργήθηκε με επιτυχία",updated_message:"Ο πελάτης δημιουργήθηκε με επιτυχία",deleted_message:"Ο πελάτης δημιουργήθηκε με επιτυχία",error:" Δεν μπορείτε να Διαγράψετε το Ενεργό Οδηγό",default_currency_error:"Αυτό το νόμισμα χρησιμοποιείται ήδη σε έναν από τους Active Provider",exchange_help_text:"Εισάγετε συναλλαγματική ισοτιμία για μετατροπή από {currency} σε {baseCurrency}",currency_freak:"Νόμισμα Freak",currency_layer:"Στρώμα Νομίσματος",open_exchange_rate:"Open Exchange Rates",currency_converter:"Μετατροπέας νομίσματος (Automatic Translation)",server:"Σέρβερ",url:"Διεύθυνση URL",active:"Ενεργή",currency_help_text:"Αυτός ο πάροχος θα χρησιμοποιηθεί μόνο πάνω από τα επιλεγμένα νομίσματα",currency_in_used:"Τα ακόλουθα νομίσματα είναι ήδη ενεργά σε άλλο πάροχο. Παρακαλώ αφαιρέστε αυτά τα νομίσματα από την επιλογή για να ενεργοποιήσετε ξανά αυτόν τον πάροχο."},tax_types:{title:"Φορολογική κλάση",add_tax:"Προσθήκη Φόρου",edit_tax:"Επεξεργασία φόρου",description:"Μπορείτε να προσθέσετε ή να αφαιρέσετε φόρους όπως σας παρακαλώ. Κρατήρα υποστηρίζει φόρους επί μεμονωμένων προϊόντων καθώς και στο τιμολόγιο.",add_new_tax:"Προσθήκη Νέου Φόρου",tax_settings:"Φορολογικές ρυθμίσεις",tax_per_item:"Στοιχείο Φόντου Υπομενού",tax_name:"Όνομα Φόρου",compound_tax:"Σύνθετος Φόρος",percent:"Ποσοστό",action:"Ενέργεια",tax_setting_description:"Ενεργοποιήστε το αν θέλετε να προσθέσετε έκπτωση σε μεμονωμένα στοιχεία τιμολογίου. Από προεπιλογή, η έκπτωση προστίθεται απευθείας στο τιμολόγιο.",created_message:"Το τιμολόγιο εστάλη επιτυχώς",updated_message:"Το τιμολόγιο εστάλη επιτυχώς",deleted_message:"Το τιμολόγιο εστάλη επιτυχώς",confirm_delete:"Δεν θα μπορείτε να ανακτήσετε αυτό το Προσαρμοσμένο Πεδίο",already_in_use:"Το όνομα είναι ήδη σε χρήση"},payment_modes:{title:"Τρόπος πληρωμής",description:"Τρόποι συναλλαγής για πληρωμές",add_payment_mode:"Τρόπος πληρωμής",edit_payment_mode:"Τρόπος πληρωμής",mode_name:"Όνομα λειτουργίας",payment_mode_added:"Προστέθηκε Λειτουργία Πληρωμής",payment_mode_updated:"Προστέθηκε Λειτουργία Πληρωμής",payment_mode_confirm_delete:"Δεν θα μπορείτε να ανακτήσετε αυτό το Προσαρμοσμένο Πεδίο",payments_attached:"This payment method is already attached to payments. Please delete the attached payments to proceed with deletion.",expenses_attached:"This payment method is already attached to expenses. Please delete the attached expenses to proceed with deletion.",deleted_message:"Η πληρωμή εστάλη επιτυχώς"},expense_category:{title:"Κατηγορίες Εξόδων",action:"Ενέργεια",description:"Απαιτούνται κατηγορίες για την προσθήκη καταχωρήσεων εξόδων. Μπορείτε να προσθέσετε ή να αφαιρέσετε αυτές τις κατηγορίες σύμφωνα με τις προτιμήσεις σας.",add_new_category:"Προσθήκη Νέας Κατηγορίας",add_category:"Προσθήκη Κατηγορίας",edit_category:"Προσθήκη Κατηγορίας",category_name:"Όνομα Κατηγορίας",category_description:"Περιγραφή",created_message:"Το τιμολόγιο εστάλη επιτυχώς",deleted_message:"Το τιμολόγιο εστάλη επιτυχώς",updated_message:"Το τιμολόγιο εστάλη επιτυχώς",confirm_delete:"Δεν θα μπορείτε να ανακτήσετε αυτό το Προσαρμοσμένο Πεδίο",already_in_use:"Το όνομα είναι ήδη σε χρήση"},preferences:{currency:"Νόμισμα",default_language:"Προεπιλεγμένη γλώσσα",time_zone:"Ζώνη Ώρας",fiscal_year:"Οικονομικό έτος",date_format:"Μορφή Ημερομηνίας",discount_setting:"Ρυθμίσεις Λογαριασμού",discount_per_item:"Έκπτωση Ανά Στοιχείο ",discount_setting_description:"Ενεργοποιήστε το αν θέλετε να προσθέσετε έκπτωση σε μεμονωμένα στοιχεία τιμολογίου. Από προεπιλογή, η έκπτωση προστίθεται απευθείας στο τιμολόγιο.",expire_public_links:"Automatically Expire Public Links",expire_setting_description:"Specify whether you would like to expire all the links sent by application to view invoices, estimates & payments, etc after a specified duration.",save:"Αποθήκευση",preference:"Προτίμηση - Προτιμήσεις",general_settings:"Προεπιλεγμένες προτιμήσεις για το σύστημα.",updated_message:"Η πληρωμή εστάλη επιτυχώς",select_language:"Επιλογή Γλώσσας",select_time_zone:"Επιλέξτε ζώνη ώρας",select_date_format:"Μορφή σύντομης ημερομηνίας",select_financial_year:"Επιλογή Οικονομικού Έτους",recurring_invoice_status:"Επαναλαμβανόμενα τιμολόγια",create_status:"Δημιουργία κατάστασης",active:"Ενεργή",on_hold:"Σε αναμονή",update_status:"Ενημέρωση Κατάστασης",completed:"Ολοκληρώθηκε",company_currency_unchangeable:"Το νόμισμα της εταιρείας δεν μπορεί να αλλάξει"},update_app:{title:"Ενημέρωση εφαρμογής",description:"Μπορείτε εύκολα να ενημερώσετε τον Κρατήρα ελέγχοντας για μια νέα ενημέρωση κάνοντας κλικ στο παρακάτω κουμπί",check_update:"Έλεγχος Ενημερώσεων",avail_update:"Υπάρχει διαθέσιμη νέα ενημέρωση",next_version:"Επόμενη Έκδοση",requirements:"Απαιτήσεις",update:"Ενημέρωση τώρα",update_progress:"Ενημέρωση σε εξέλιξη",progress_text:"Θα χρειαστούν μόνο λίγα λεπτά. Παρακαλώ μην ανανεώσετε την οθόνη ή να κλείσετε το παράθυρο πριν τελειώσει η ενημέρωση.",update_success:"Η εφαρμογή έχει ενημερωθεί! Παρακαλώ περιμένετε όσο το παράθυρο του περιηγητή σας φορτώνεται αυτόματα.",latest_message:"Δεν υπάρχουν προς το παρόν διαθέσιμες ενημερώσεις. Χρησιμοποιείτε την τελευταία έκδοση.",current_version:"Τρέχουσα έκδοση",download_zip_file:"Κατεβάστε σε ZIP",unzipping_package:"Αποσυμπίεση Πακέτου",copying_files:"Αντιγραφή Αρχείων",deleting_files:"Διαγραφή αχρησιμοποίητων αρχείων",running_migrations:"Εκτέλεση Μεταναστών",finishing_update:"Ολοκλήρωση Ενημέρωσης",update_failed:"Αποτυχία ενημέρωσης",update_failed_text:"Συγνώμη! Η ενημέρωσή σας απέτυχε σε: {step} βήμα",update_warning:"Όλα τα αρχεία εφαρμογών και τα προεπιλεγμένα αρχεία προτύπων θα αντικατασταθούν όταν ενημερώνετε την εφαρμογή χρησιμοποιώντας αυτό το βοηθητικό πρόγραμμα. Παρακαλώ πάρτε ένα αντίγραφο ασφαλείας των προτύπων και της βάσης δεδομένων σας πριν από την ενημέρωση."},backup:{title:'Αντίγραφο Ασφαλείας "Αντίγραφα Ασφαλείας',description:"Το αντίγραφο ασφαλείας είναι ένα zipfile που περιέχει όλα τα αρχεία στους καταλόγους που καθορίζετε μαζί με μια χωματερή της βάσης δεδομένων σας",new_backup:"Νέο αντίγραφο ασφαλείας",create_backup:"Δημιουργία αντιγράφου ασφαλείας",select_backup_type:"Επιλογή Τύπου(ων) Αντιγράφου Ασφαλείας",backup_confirm_delete:"Δεν θα μπορείτε να ανακτήσετε αυτό το Προσαρμοσμένο Πεδίο",path:"Path",new_disk:"Νέος Δίσκος",created_at:"Δημιουργήθηκε στις",size:"μέγεθος",dropbox:"Dropbox",local:"Τοπικές ρυθμίσεις",healthy:"υγιές",amount_of_backups:"ποσό αντιγράφων ασφαλείας",newest_backups:"νέα αντίγραφα ασφαλείας",used_storage:"Χώρος αποθήκευσης σε χρήση",select_disk:"Επιλέξτε δίσκο",action:"Ενέργεια",deleted_message:"Η διαγραφή των αντιγράφων ασφαλείας ολοκληρώθηκε επιτυχώς",created_message:"Η δημιουργία αντιγράφου ασφαλείας ολοκληρώθηκε με επιτυχία",invalid_disk_credentials:"Μη έγκυρο διαπιστευτήριο του επιλεγμένου δίσκου"},disk:{title:"Δίσκος Αρχείου.Δίσκοι Αρχείου",description:"Από προεπιλογή, ο Κρατήρας θα χρησιμοποιήσει τον τοπικό σας δίσκο για την αποθήκευση αντιγράφων ασφαλείας, avatar και άλλων αρχείων εικόνας. Μπορείτε να ρυθμίσετε περισσότερους από έναν οδηγούς δίσκων όπως DigitalOcean, S3 και Dropbox σύμφωνα με τις προτιμήσεις σας.",created_at:"Δημιουργήθηκε στις",dropbox:"Dropbox",name:"Όνομα",driver:"Οδηγός",disk_type:"Type",disk_name:"Χρήση δίσκου",new_disk:"Φόρτωση Νέου Δίσκου",filesystem_driver:"Οδηγός Συστήματος Αρχείων",local_driver:"τοπικός οδηγός",local_root:"τοπική ρίζα",public_driver:"Πρόκριση Οδηγού",public_root:"Δημόσια Ρίζα",public_url:"Δημόσια διεύθυνση URL",public_visibility:"Δημόσια Ορατότητα",media_driver:"Οδηγός Αλληλογραφίας",media_root:"Ρίζα Πολυμέσων",aws_driver:"Οδηγός AWS",aws_key:"Κλειδί SES",aws_secret:"SES Μυστικό",aws_region:"Περιοχή AWS",aws_bucket:"SES Μυστικό",aws_root:"Ρίζα AWS",do_spaces_type:"Τύπος κενών",do_spaces_key:"Τύπος κενών",do_spaces_secret:"Μυστικό Όριο Χώρων",do_spaces_region:'Περιοχή "Χώρων"',do_spaces_bucket:"Μυστικό Όριο Χώρων",do_spaces_endpoint:"Εκτέλεση Χώρων Τελικού Σημείου",do_spaces_root:'Περιοχή "Χώρων"',dropbox_type:"Συγχρονισμός Dropbox",dropbox_token:"Συγχρονισμός Dropbox",dropbox_key:"Κλειδί Dropbox",dropbox_secret:"Μυστικό Dropbox",dropbox_app:"Συγχρονισμός Dropbox",dropbox_root:"Ρίζα Dropbox",default_driver:"Προεπιλεγμένος Οδηγός",is_default:"IS ΠΡΟΦΥΛΑΞΗ",set_default_disk:"Ορισμός Προεπιλεγμένου Δίσκου",set_default_disk_confirm:"Αυτός ο δίσκος θα οριστεί ως προεπιλεγμένος και όλα τα νέα αρχεία PDF θα αποθηκευτούν σε αυτόν τον δίσκο",success_set_default_disk:"Ο δίσκος ορίστηκε ως προκαθορισμένος επιτυχώς",save_pdf_to_disk:"Αποθήκευση κλειδιού στο δίσκο",disk_setting_description:" Ενεργοποιήστε αυτό, αν θέλετε να αποθηκεύσετε ένα αντίγραφο του κάθε τιμολογίου, Εκτίμηση & παραλαβή πληρωμής PDF στον προεπιλεγμένο δίσκο σας αυτόματα. Η ενεργοποίηση αυτής της επιλογής θα μειώσει το χρόνο φόρτωσης κατά την προβολή των PDF.",select_disk:"Επιλέξτε δίσκο",disk_settings:"Ρυθμίσεις Δίσκου",confirm_delete:"Τα υπάρχοντα αρχεία και οι φάκελοι σας στον καθορισμένο δίσκο δεν θα επηρεαστούν αλλά η διαμόρφωση του δίσκου σας θα διαγραφεί από τον Κρατήρα",action:"Ενέργεια",edit_file_disk:"Επεξεργασία Δίσκου Αρχείου",success_create:"Η δεξαμενή προστέθηκε επιτυχώς.",success_update:"Η δεξαμενή προστέθηκε επιτυχώς.",error:"Η προσθήκη δίσκου απέτυχε",deleted_message:"Ο δίσκος αρχείου διαγράφηκε επιτυχώς",disk_variables_save_successfully:"Η Ρύθμιση Του Δίσκου Επιτυχής",disk_variables_save_error:"Αποτυχία ρύθμισης του δίσκου.",invalid_disk_credentials:"Μη έγκυρο διαπιστευτήριο του επιλεγμένου δίσκου"},taxations:{add_billing_address:"Enter Billing Address",add_shipping_address:"Enter Shipping Address",add_company_address:"Enter Company Address",modal_description:"The information below is required in order to fetch sales tax.",add_address:"Add Address for fetching sales tax.",address_placeholder:"Example: 123, My Street",city_placeholder:"Example: Los Angeles",state_placeholder:"Example: CA",zip_placeholder:"Example: 90024",invalid_address:"Please provide valid address details."}},Ooe={account_info:"Πληροφορίες Λογαριασμού",account_info_desc:"Παρακάτω θα χρησιμοποιηθούν οι λεπτομέρειες για τη δημιουργία του κύριου λογαριασμού διαχειριστή. Επίσης, μπορείτε να αλλάξετε τα στοιχεία ανά πάσα στιγμή μετά τη σύνδεση.",name:"Όνομα",email:"Ηλεκτρονική διεύθυνση",password:"Κωδικός",confirm_password:"Επιβεβαίωση Κωδικού",save_cont:"Αποθήκευση & συνεχεία",company_info:"Πληροφορίες Εταιρίας",company_info_desc:"Αυτές οι πληροφορίες θα εμφανίζονται στα τιμολόγια. Σημειώστε ότι μπορείτε να το επεξεργαστείτε αργότερα στη σελίδα ρυθμίσεων.",company_name:"Όνομα Εταιρείας",company_logo:"Λογότυπο Εταιρείας",logo_preview:"Προεπισκόπηση Λογότυπου",preferences:"Προτιμήσεις Εταιρείας",preferences_desc:"Καθορίστε τις προεπιλεγμένες προτιμήσεις για αυτήν την εταιρεία.",currency_set_alert:"Το νόμισμα της εταιρείας δεν μπορεί να αλλάξει.",country:"Χώρα",state:"Νομός",city:"Πόλη",address:"Διεύθυνση",street:"Οδός 1 - Οδός 2",phone:"Τηλέφωνο",zip_code:"Ταχυδρομικός κώδικας",go_back:"Επιστροφή",currency:"Νόμισμα",language:"Language",time_zone:"Ζώνη Ώρας",fiscal_year:"Οικονομικό έτος",date_format:"Μορφή Ημερομηνίας",from_address:"Διεύθυνση Αποστολής",username:"Όνομα Χρήστη",next:"Επόμενο",continue:"Συνέχεια",skip:"Salta",database:{database:"Url & Βάση Δεδομένων Ιστοτόπου",connection:"Σύνδεση με Βάση Δεδομένων",host:"Διακομιστής Βάσης Δεδομένων",port:"Θύρα Βάσης Δεδομένων",password:"Κωδικός Βάσης Δεδομένων",app_url:"URL Εφαρμογής",app_domain:"Τομέας Εφαρμογής",username:"Όνομα Χρήστη Βάσης Δεδομένων",db_name:"Όνομα βάσης δεδομένων",db_path:"Διαδρομή Βάσης Δεδομένων",desc:"Δημιουργήστε μια βάση δεδομένων στο διακομιστή σας και ορίστε τα διαπιστευτήρια χρησιμοποιώντας την παρακάτω φόρμα."},permissions:{permissions:"Δικαιώματα",permission_confirm_title:"Είστε βέβαιοι ότι θέλετε να συνεχίσετε;",permission_confirm_desc:"Ο έλεγχος δικαιωμάτων φακέλου απέτυχε",permission_desc:"Παρακάτω είναι η λίστα των δικαιωμάτων φακέλων που απαιτούνται για να λειτουργήσει η εφαρμογή. Εάν ο έλεγχος της άδειας αποτύχει, φροντίστε να ενημερώσετε τα δικαιώματα του φακέλου σας."},verify_domain:{title:"Ανθρώπινη Επαλήθευση",desc:"Ο Κρατήρας χρησιμοποιεί έλεγχο ταυτότητας που βασίζεται σε συνεδρία και απαιτεί επαλήθευση τομέα για λόγους ασφαλείας. Παρακαλώ εισάγετε τον τομέα στον οποίο θα έχετε πρόσβαση στην εφαρμογή ιστού σας.",app_domain:"Τομέας Εφαρμογής",verify_now:"Επαληθεύστε Τώρα",success:"Η διεύθυνση του ηλεκτρονικού ταχυδρομείου σας επαληθεύτηκε",failed:"Η επαλήθευση τομέα απέτυχε. Παρακαλώ εισάγετε έγκυρο όνομα τομέα.",verify_and_continue:"Επαλήθευση Και Συνέχεια"},mail:{host:"Διακομιστής Αλληλογραφίας",port:"Διακομιστής Αλληλογραφίας",driver:"Οδηγός Αλληλογραφίας",secret:"Μυστικό",mailgun_secret:"Μυστικό Mailgun",mailgun_domain:"Τομέας",mailgun_endpoint:"Mailgun Endpoint",ses_secret:"SES Μυστικό",ses_key:"Κλειδί SES",password:"Κωδικός Πρόσβασης Ταχυδρομείου",username:"Όνομα Ταχυδρομείου",mail_config:"Διαμόρφωση Mail",from_name:"Όνομα Αποστολέα",from_mail:"Διεύθυνση Αποστολής",encryption:"Κρυπτογράφηση Email",mail_config_desc:"Παρακάτω είναι η φόρμα για τη ρύθμιση παραμέτρων του προγράμματος οδήγησης ηλεκτρονικού ταχυδρομείου για την αποστολή μηνυμάτων ηλεκτρονικού ταχυδρομείου από την εφαρμογή. Μπορείτε επίσης να ρυθμίσετε τις παραμέτρους τρίτων παρόχων όπως το Sendgrid, το SES κλπ."},req:{system_req:"Απαιτήσεις Συστήματος",php_req_version:"PHP (απαιτείται έκδοση {version})",check_req:"Έλεγχος Απαιτήσεων",system_req_desc:"Ο κρατήρας έχει μερικές απαιτήσεις διακομιστή. Βεβαιωθείτε ότι ο διακομιστής σας έχει την απαιτούμενη έκδοση php και όλες τις επεκτάσεις που αναφέρονται παρακάτω."},errors:{migrate_failed:"Αποτυχία Μετεγκατάστασης",database_variables_save_error:"Δεν είναι δυνατή η εγγραφή ρύθμισης παραμέτρων στο αρχείο .env. Παρακαλώ ελέγξτε τα δικαιώματα αρχείου",mail_variables_save_error:"Αποτυχία ρύθμισης του δίσκου.",connection_failed:"Σύνδεση βάσης δεδομένων",database_should_be_empty:"Η βάση δεδομένων πρέπει να είναι κενή"},success:{mail_variables_save_successfully:"Η Ρύθμιση Του Δίσκου Επιτυχής",database_variables_save_successfully:"Η Ρύθμιση Του Δίσκου Επιτυχής."}},$oe={invalid_phone:"Μη έγκυρος αριθμός τηλεφώνου",invalid_url:"Μη έγκυρη διεύθυνση url (π.χ. http://www.invoiceshelf.com)",invalid_domain_url:"Μη έγκυρη διεύθυνση url (π.χ. invoiceshelf.com)",required:"Το πεδίο είναι υποχρεωτικό",email_incorrect:"Λάθος μορφή e-mail;",email_already_taken:"Το όνομα έχει ήδη ληφθεί.",email_does_not_exist:"Το συγκεκριμένο email χρησιμοποιείται ήδη από άλλον χρήστη",item_unit_already_taken:"Αυτό το όνομα χρήστη έχει ήδη ληφθεί.",payment_mode_already_taken:"Αυτό το όνομα χρήστη έχει ήδη ληφθεί.",send_reset_link:"Αποστολή συνδέσμου επαναφοράς",not_yet:"Όχι ακόμα? Στείλε το ξανά",password_min_length:"Ο κωδικός πρόσβασης πρέπει να περιέχει τουλάχιστον 6 χαρακτήρες",name_min_length:"Το όνομα πρέπει να έχει τουλάχιστον {count} γράμματα.",prefix_min_length:"Το όνομα πρέπει να έχει τουλάχιστον {count} γράμματα.",enter_valid_tax_rate:"Εισάγετε έγκυρο φορολογικό συντελεστή",numbers_only:"Αριθμοί Μόνο.",characters_only:"Χαρακτήρες Μόνο.",password_incorrect:"Οι κωδικοί πρόσβασης πρέπει να είναι ίδιοι",password_length:"Ο κωδικός πρόσβασης πρέπει να είναι {count} χαρακτήρας.",qty_must_greater_than_zero:"Η ποσότητα πρέπει να είναι μεγαλύτερη του μηδενός.",price_greater_than_zero:"Η τιμή πρέπει να είναι μεγαλύτερη του μηδενός.",payment_greater_than_zero:"Η πληρωμή πρέπει να είναι μεγαλύτερη του μηδενός.",payment_greater_than_due_amount:"Η πληρωμή που εισήχθη είναι περισσότερο από το οφειλόμενο ποσό αυτού του τιμολογίου.",quantity_maxlength:"Η ποσότητα δεν πρέπει να υπερβαίνει τα 20 ψηφία.",price_maxlength:"Η τιμή δεν πρέπει να είναι μεγαλύτερη από 20 ψηφία.",price_minvalue:"Η τιμή θα πρέπει να είναι μεγαλύτερη από 0.",amount_maxlength:"Το ποσό δεν πρέπει να υπερβαίνει τα 20 ψηφία.",amount_minvalue:"Το ποσό πρέπει να είναι μεγαλύτερο από 0.",discount_maxlength:"Η έκπτωση δεν πρέπει να είναι μεγαλύτερη από τη μέγιστη έκπτωση",description_maxlength:"Η περιγραφή δεν πρέπει να είναι μεγαλύτερη από 255 χαρακτήρες.",subject_maxlength:"Η περιγραφή δεν πρέπει να είναι μεγαλύτερη από 100 χαρακτήρες.",message_maxlength:"Το μήνυμα δεν πρέπει να είναι μεγαλύτερο από 255 χαρακτήρες.",maximum_options_error:"Μέγιστο {max} επιλογές επιλεγμένες. Αφαιρέστε πρώτα μια επιλεγμένη επιλογή για να επιλέξετε μια άλλη.",notes_maxlength:"Η περιγραφή δεν πρέπει να είναι μεγαλύτερη από 65,000 χαρακτήρες.",address_maxlength:"Η διεύθυνση δεν πρέπει να είναι μεγαλύτερη από 255 χαρακτήρες.",ref_number_maxlength:"Η διεύθυνση δεν πρέπει να είναι μεγαλύτερη από 255 χαρακτήρες.",prefix_maxlength:"Η περιγραφή δεν πρέπει να είναι μεγαλύτερη από 5 χαρακτήρες.",something_went_wrong:"Κάτι δεν πήγε καλά",number_length_minvalue:"Το μήκος του αριθμού πρέπει να είναι μεγαλύτερο από 0",at_least_one_ability:"Παρακαλώ επιλέξτε τουλάχιστον ένα δικαίωμα.",valid_driver_key:"Παρακαλώ εισάγετε ένα έγκυρο κλειδί {driver}.",valid_exchange_rate:"Παρακαλώ εισάγετε μια έγκυρη συναλλαγματική ισοτιμία.",company_name_not_same:"Το όνομα της εταιρείας πρέπει να ταιριάζει με το συγκεκριμένο όνομα."},Loe={starter_plan:"Αυτή η λειτουργία είναι διαθέσιμη στο Starter plan και μετά!",invalid_provider_key:"Εισαγάγετε Έγκυρο Κλειδί Api Πάροχου.",estimate_number_used:"Ο αριθμός της εκτίμησης έχει ήδη ληφθεί.",invoice_number_used:"Ο αριθμός τιμολογίου έχει ήδη ληφθεί.",payment_attached:"Αυτό το τιμολόγιο έχει ήδη μια πληρωμή που επισυνάπτεται σε αυτό. Βεβαιωθείτε ότι έχετε διαγράψει πρώτα τις συνημμένες πληρωμές για να προχωρήσετε με την αφαίρεση.",payment_number_used:"Ο αριθμός πληρωμής έχει ήδη ληφθεί.",name_already_taken:"Το όνομα έχει ήδη ληφθεί.",receipt_does_not_exist:"Δεν υπάρχει απόδειξη.",customer_cannot_be_changed_after_payment_is_added:"Ο πελάτης δεν μπορεί να αλλάξει μετά την πληρωμή προστίθεται",invalid_credentials:"Μη Έγκυρα Πιστοποιητικά.",not_allowed:"Δεν Επιτρέπεται",login_invalid_credentials:"Αυτά τα διαπιστευτήρια δεν ταιριάζουν με τα αρχεία μας.",enter_valid_cron_format:"Παρακαλώ εισάγετε μια έγκυρη μορφή cron",email_could_not_be_sent:"Email could not be sent to this email address.",invalid_address:"Please enter a valid address.",invalid_key:"Please enter valid key.",invalid_state:"Please enter a valid state.",invalid_city:"Please enter a valid city.",invalid_postal_code:"Please enter a valid zip.",invalid_format:"Please enter valid query string format.",api_error:"Server not responding.",feature_not_enabled:"Feature not enabled.",request_limit_met:"Api request limit exceeded.",address_incomplete:"Incomplete Address"},Boe="Εκτίμηση",Uoe="Εκτίμηση Αριθμού",Voe="Εκτιμώμενη ημ. επισκευής",qoe="Ημερομηνία λήξης",Hoe="Τιμολόγιο",Woe="Αριθμός τιμολογίου",Koe="Ημ/νία Τιμολόγησης",Yoe="Echéance",Zoe="Σημειώσεις",Goe="Προϊόντα",Qoe="Ποσότητα",Joe="Τιμή",Xoe="Έκπτωση",ere="Ποσό",tre="Υποσύνολο",are="Σύνολο ",nre="Πληρωμή",ire="ΠΡΟΣΑΡΜΟΓΗ ΠΛΗΡΩΜΗΣ",ore="Ημ/νία εξόφλησης",rre="Αριθμός Πληρωμής",sre="Τρόπος πληρωμής",lre="Ποσοστό Ληφθέντων",cre="ΕΚΘΕΣΗ ΕΞΑΓΩΓΩΝ",dre="ΣΥΝΟΛΟ ΔΑΠΑΝΗΣ",ure="ΕΚΘΕΣΗ ΕΠΑΦΗΣ & LOSS",_re="Αναφορά Πελάτη Πωλήσεων",mre="Αναφορά Πελάτη Πωλήσεων",pre="Αναφορά Περίληψης Φόρου",fre=`ΕΙΣΟΔΗΜΑΤΑ +`,hre="NET PROFIT",gre="Έκθεση Πωλήσεων: Από Τον Πελάτη",vre="ΣΥΝΟΛΟ ΠΩΛΗΣΗΣ",yre="Έκθεση Πωλήσεων: Από Τον Πελάτη",bre="ΦΟΡΟΛΟΓΙΚΗ ΕΚΘΕΣΗ",kre="ΣΥΝΟΛΟ ΦΟΡΟΥ",wre="Φορολογική κλάση",xre="Έξοδα",Dre="Χρέωση σε,",Sre="Αποστολή σε,",zre="Λήψη από",Pre="Φόρος",Ere={navigation:yoe,general:boe,dashboard:koe,tax_types:woe,global_search:xoe,company_switcher:Doe,dateRange:Soe,customers:zoe,items:Poe,estimates:Eoe,invoices:Aoe,recurring_invoices:Coe,payments:joe,expenses:Toe,login:Ioe,modules:Noe,users:Foe,reports:Moe,settings:Roe,wizard:Ooe,validation:$oe,errors:Loe,pdf_estimate_label:Boe,pdf_estimate_number:Uoe,pdf_estimate_date:Voe,pdf_estimate_expire_date:qoe,pdf_invoice_label:Hoe,pdf_invoice_number:Woe,pdf_invoice_date:Koe,pdf_invoice_due_date:Yoe,pdf_notes:Zoe,pdf_items_label:Goe,pdf_quantity_label:Qoe,pdf_price_label:Joe,pdf_discount_label:Xoe,pdf_amount_label:ere,pdf_subtotal:tre,pdf_total:are,pdf_payment_label:nre,pdf_payment_receipt_label:ire,pdf_payment_date:ore,pdf_payment_number:rre,pdf_payment_mode:sre,pdf_payment_amount_received_label:lre,pdf_expense_report_label:cre,pdf_total_expenses_label:dre,pdf_profit_loss_label:ure,pdf_sales_customers_label:_re,pdf_sales_items_label:mre,pdf_tax_summery_label:pre,pdf_income_label:fre,pdf_net_profit_label:hre,pdf_customer_sales_report:gre,pdf_total_sales_label:vre,pdf_item_sales_label:yre,pdf_tax_report_label:bre,pdf_total_tax_label:kre,pdf_tax_types_label:wre,pdf_expenses_label:xre,pdf_bill_to:Dre,pdf_ship_to:Sre,pdf_received_from:zre,pdf_tax_label:Pre},Are={dashboard:"Upravljačka Ploča",customers:"Klijenti",items:"Stavke",invoices:"Fakture","recurring-invoices":"Recurring Invoices",expenses:"Rashodi",estimates:"Ponude",payments:"Uplate",reports:"Izvještaji",settings:"Postavke",logout:"Odjava",users:"Korisnici",modules:"Modules"},Cre={add_company:"Dodaj tvrtku",view_pdf:"Pogledaj PDF",copy_pdf_url:"Kopiraj PDF link",download_pdf:"Preuzmi PDF",save:"Spremi",create:"Kreiraj",cancel:"Otkaži",update:"Ažuriraj",deselect:"Poništi izbor",download:"Preuzmi",from_date:"Od Datuma",to_date:"Do Datuma",from:"Pošiljatelj",to:"Primatelj",ok:"Ok",yes:"Yes",no:"No",sort_by:"Posloži Po",ascending:"Rastuće",descending:"Padajuće",subject:"Predmet",body:"Tijelo",message:"Poruka",send:"Pošalji",preview:"Preview",go_back:"Natrag",back_to_login:"Natrag na prijavu?",home:"Početna",filter:"Filter",delete:"Obriši",edit:"Izmjeni",view:"Pogledaj",add_new_item:"Dodaj novu stavku",clear_all:"Izbriši sve",showing:"Prikazujem",of:"od",actions:"Radnje",subtotal:"UKUPNO",discount:"POPUST",fixed:"Fiksno",percentage:"Postotak",tax:"POREZ",total_amount:"UKUPAN IZNOS",bill_to:"Dokument za",ship_to:"Isporučiti za",due:"Dužan",draft:"U izradi",sent:"Poslano",all:"Sve",select_all:"Izaberi sve",select_template:"Select Template",choose_file:"Klikni ovdje da izabereš fajl",choose_template:"Izaberi predložak",choose:"Izaberi",remove:"Ukloni",select_a_status:"Izaberi status",select_a_tax:"Izaberi porez",search:"Pretraga",are_you_sure:"Jeste li sigurni?",list_is_empty:"Popis je prazna.",no_tax_found:"Porez nije pronađen!",four_zero_four:"404",you_got_lost:"Ups! Izgubio si se!",go_home:"Idi na početnu stranicu",test_mail_conf:"Testiraj postavke Pošte",send_mail_successfully:"Pošta uspješno poslana",setting_updated:"Postavke uspješno ažurirane",select_state:"Odaberi saveznu državu",select_country:"Odaberi državu",select_city:"Odaberi grad",street_1:"Adresa 1",street_2:"Adresa 2",action_failed:"Radnja nije uspjela",retry:"Pokušaj ponovo",choose_note:"Odaberi napomenu",no_note_found:"Ne postoje spremljene napomene",insert_note:"Unesi bilješku",copied_pdf_url_clipboard:"Link do PDF fajla kopiran!",copied_url_clipboard:"Copied url to clipboard!",docs:"Docs",do_you_wish_to_continue:"Do you wish to continue?",note:"Note",pay_invoice:"Pay Invoice",login_successfully:"Logged in successfully!",logged_out_successfully:"Logged out successfully",mark_as_default:"Postavi kao zadano"},jre={select_year:"Odaberi godinu",cards:{due_amount:"Dužan iznos",customers:"Klijenti",invoices:"Računi",estimates:"Ponude",payments:"Payments"},chart_info:{total_sales:"Prodaja",total_receipts:"Računi",total_expense:"Rashodi",net_income:"Prihod NETO",year:"Odaberi godinu"},monthly_chart:{title:"Prodaja & Rashodi"},recent_invoices_card:{title:"Dospijele fakture",due_on:"Datum dospijeća",customer:"Klijent",amount_due:"Iznos dospijeća",actions:"Akcije",view_all:"Pogledaj sve"},recent_estimate_card:{title:"Nedavne ponude",date:"Datum",customer:"Klijent",amount_due:"Iznos dospijeća",actions:"Akcije",view_all:"Pogledaj sve"}},Tre={name:"Naziv",description:"Opis",percent:"Postotak",compound_tax:"Složeni porez"},Ire={search:"Pretraga...",customers:"Klijenti",users:"Korisnici",no_results_found:"Nema rezultata"},Nre={label:"SWITCH COMPANY",no_results_found:"No Results Found",add_new_company:"Add new company",new_company:"New company",created_message:"Company created successfully"},Fre={today:"Today",this_week:"This Week",this_month:"This Month",this_quarter:"This Quarter",this_year:"This Year",previous_week:"Previous Week",previous_month:"Previous Month",previous_quarter:"Previous Quarter",previous_year:"Previous Year",custom:"Custom"},Mre={title:"Klijenti",prefix:"Prefix",add_customer:"Dodaj Klijenta",contacts_list:"Popis klijenata",name:"Naziv",mail:"Mail | Mail-ovi",statement:"Izjava",display_name:"Naziv koji se prikazuje",primary_contact_name:"Primarna kontakt osoba",contact_name:"Naziv kontakt osobe",amount_due:"Iznos dospijeća",email:"Email",address:"Adresa",phone:"Telefon",website:"Web stranica",overview:"Pregled",invoice_prefix:"Invoice Prefix",estimate_prefix:"Estimate Prefix",payment_prefix:"Payment Prefix",enable_portal:"Uključi portal",country:"Država",state:"Županija",city:"Grad",zip_code:"Poštanski broj",added_on:"Datum dodavanja",action:"Radnja",password:"Lozinka",confirm_password:"Confirm Password",street_number:"Broj ulice",primary_currency:"Primarna valuta",description:"Opis",add_new_customer:"Dodaj Novog Klijenta",save_customer:"Spremi klijenta",update_customer:"Ažuriraj klijenta",customer:"Klijent | Klijenti",new_customer:"Novi klijent",edit_customer:"Izmjeni klijenta",basic_info:"Osnovne informacije",portal_access:"Portal Access",portal_access_text:"Would you like to allow this customer to login to the Customer Portal?",portal_access_url:"Customer Portal Login URL",portal_access_url_help:"Please copy & forward the above given URL to your customer for providing access.",billing_address:"Adresa za naplatu",shipping_address:"Adresa za dostavu",copy_billing_address:"Kopiraj iz adrese za naplatu",no_customers:"Još uvijek nema klijenata!",no_customers_found:"Klijenti nisu pronađeni!",no_contact:"Nema kontakta",no_contact_name:"Nema imena kontakta",list_of_customers:"Sekcija sadrži popis klijenata.",primary_display_name:"Primarni naziv koji se prikazuje",select_currency:"Odaberi valutu",select_a_customer:"Odaberi klijenta",type_or_click:"Unesi tekst ili klikni za odabir",new_transaction:"Nova transakcija",no_matching_customers:"Nije pronađeno!",phone_number:"Broj telefona",create_date:"Datum kreiranja",confirm_delete:"Nećete moći vratiti klijenta, sve njegove Fakture, Ponude i Uplate. | Nećete moći vratiti odabrane klijente, sve njihove Fakture, Ponude i Uplate.",created_message:"Klijent uspješno kreiran",updated_message:"Klijent uspješno ažuriran",address_updated_message:"Address Information Updated succesfully",deleted_message:"Klijent uspješno obrisan | Klijenti uspješno obrisani",edit_currency_not_allowed:"Cannot change currency once transactions created."},Rre={title:"Stavke",items_list:"Popis stavki",name:"Naziv",unit:"Jedinica",description:"Opis",added_on:"Datum dodavanja",price:"Cijena",date_of_creation:"Datum kreiranja",not_selected:"Nema odabrane stavke",action:"Radnje",add_item:"Dodaj Stavku",save_item:"Spremi Stavku",update_item:"Ažuriraj Stavku",item:"Stavka | Stavke",add_new_item:"Dodaj novu stavku",new_item:"Nova stavka",edit_item:"Izmjeni stavku",no_items:"Još uvijek nema stavki!",list_of_items:"Ova sekcija sadrži popis stavki.",select_a_unit:"odaberi jedinicu",taxes:"Porezi",item_attached_message:"Nije dozvoljeno brisanje stavke koja se koristi",confirm_delete:"Nećeš moći vratiti ovu Stavku | Nećeš moći vratiti ove Stavke",created_message:"Stavka uspješno kreirana",updated_message:"Stavka uspješno ažurirana",deleted_message:"Stavka uspješno obrisana | Stavke uspješno obrisane"},Ore={title:"Ponude",accept_estimate:"Accept Estimate",reject_estimate:"Reject Estimate",estimate:"Ponuda | Ponude",estimates_list:"Popis ponuda",days:"{days} Dan",months:"{months} Mjesec",years:"{years} Godina",all:"Sve",paid:"Plaćeno",unpaid:"Neplaćeno",customer:"KLIJENT",ref_no:"POZIV NA BROJ",number:"BROJ",amount_due:"IZNOS DOSPIJEĆA",partially_paid:"Djelomično Plaćeno",total:"Ukupno za plaćanje",discount:"Popust",sub_total:"Osnovica za obračun PDV-a",estimate_number:"Broj ponude",ref_number:"Poziv na broj",contact:"Kontakt",add_item:"Dodaj stavku",date:"Datum",due_date:"Datum Dospijeća",expiry_date:"Datum Isteka",status:"Status",add_tax:"Dodaj Porez",amount:"Iznos",action:"Radnja",notes:"Napomena",tax:"Porez",estimate_template:"Predložak",convert_to_invoice:"Pretvori u Fakturu",mark_as_sent:"Označi kao Poslano",send_estimate:"Pošalji Ponudu",resend_estimate:"Ponovo pošalji Ponudu",record_payment:"Unesi uplatu",add_estimate:"Dodaj Ponudu",save_estimate:"Spremi Ponudu",confirm_conversion:"Detalji ove Ponude će biti iskorišteni za pravljenje Fakture.",conversion_message:"Faktura uspješno kreirana",confirm_send_estimate:"Ova Ponuda će biti poslana putem Email-a klijentu",confirm_mark_as_sent:"Ova Ponuda će biti označena kao Poslana",confirm_mark_as_accepted:"Ova Ponuda će biti označena kao Prihvaćena",confirm_mark_as_rejected:"Ova Ponuda će biti označena kao Odbijena",no_matching_estimates:"Ne postoji odgovarajuća ponuda!",mark_as_sent_successfully:"Ponuda uspješno označena kao Poslana",send_estimate_successfully:"Ponuda uspješno poslana",errors:{required:"Obvezno polje!"},accepted:"Prihvaćeno",rejected:"Odbijeno",expired:"Expired",sent:"Poslano",draft:"U izradi",viewed:"Viewed",declined:"Odbijeno",new_estimate:"Nova Ponuda",add_new_estimate:"Dodaj novu Ponudu",update_Estimate:"Ažuriraj Ponudu",edit_estimate:"Izmjeni Ponudu",items:"stavke",Estimate:"Ponuda | Ponude",add_new_tax:"Dodaj novi Porez",no_estimates:"Još uvijek nema Ponuda!",list_of_estimates:"Ova sekcija sadrži popis Ponuda.",mark_as_rejected:"Označi kao odbijeno",mark_as_accepted:"Označi kao prihvaćeno",marked_as_accepted_message:"Ponuda označena kao prihvaćena",marked_as_rejected_message:"Ponuda označena kao odbijena",confirm_delete:"Nećeš moći vratiti ovu Ponudu | Nećeš moći vratiti ove Ponude",created_message:"Ponuda uspješno kreirana",updated_message:"Ponuda uspješno ažurirana",deleted_message:"Ponuda uspješno obrisana | Ponude uspješno obrisane",something_went_wrong:"nešto je krenulo naopako",item:{title:"Naziv stavke",description:"Opis",quantity:"Količina",price:"Cijena",discount:"Popust",total:"Ukupno za plaćanje",total_discount:"Ukupan popust",sub_total:"Ukupno",tax:"Porez",amount:"Iznos",select_an_item:"Unesi tekst ili klikni da izabereš",type_item_description:"Unesi opis Stavke (nije obavezno)"},mark_as_default_estimate_template_description:"Ako je omogućeno, izabrani predložak biti će automatski izabran za nove predračune."},$re={title:"Fakture",download:"Download",pay_invoice:"Pay Invoice",invoices_list:"Popis Faktura",invoice_information:"Invoice Information",days:"{days} dan",months:"{months} Mjesec",years:"{years} Godina",all:"Sve",paid:"Plaćeno",unpaid:"Neplaćeno",viewed:"Pregledano",overdue:"Zakašnjenje",completed:"Izvršeno",customer:"KLIJENT",paid_status:"STATUS UPLATE",ref_no:"POZIV NA BROJ",number:"BROJ",amount_due:"IZNOS DOSPIJEĆA",partially_paid:"Djelomično plaćeno",total:"Ukupno za plaćanje",discount:"Popust",sub_total:"Osnovica za obračun PDV-a",invoice:"Faktura | Fakture",invoice_number:"Broj Fakture",ref_number:"Poziv na broj",contact:"Kontakt",add_item:"Dodaj Stavku",date:"Datum",due_date:"Datum Dospijeća",status:"Status",add_tax:"Dodaj Porez",amount:"Iznos",action:"Radnja",notes:"Napomena",view:"Pogledaj",send_invoice:"Pošalji Fakturu",resend_invoice:"Ponovo pošalji Fakturu",invoice_template:"Predložak Fakture",conversion_message:"Invoice cloned successful",template:"Predložak",mark_as_sent:"Označi kao Poslano",confirm_send_invoice:"Ova Faktura će biti poslana putem Email-a klijentu",invoice_mark_as_sent:"Ova Faktura će biti označena kao poslana",confirm_mark_as_accepted:"This invoice will be marked as Accepted",confirm_mark_as_rejected:"This invoice will be marked as Rejected",confirm_send:"Ova Faktura će biti poslana putem Email-a klijentu",invoice_date:"Datum Fakture",record_payment:"Unesi Uplatu",add_new_invoice:"Dodaj novu Fakturu",update_expense:"Ažuriraj Rashod",edit_invoice:"Izmjeni Fakturu",new_invoice:"Nova Faktura",save_invoice:"Spremi Fakturu",update_invoice:"Ažuriraj Fakturu",add_new_tax:"Dodaj novi Porez",no_invoices:"Još uvijek nema Faktura!",mark_as_rejected:"Mark as rejected",mark_as_accepted:"Mark as accepted",list_of_invoices:"Ova sekcija sadrži popis Faktura.",select_invoice:"Odaberi Fakturu",no_matching_invoices:"Ne postoje Fakture koje odgovaraju pretrazi!",mark_as_sent_successfully:"Faktura uspješno označena kao Poslana",invoice_sent_successfully:"Faktura uspješno poslana",cloned_successfully:"Uspješno napravljen duplikat Fakture",clone_invoice:"Napravi duplikat",confirm_clone:"Ova Faktura će biti duplikat nove Fakture",item:{title:"Naziv Stavke",description:"Opis",quantity:"Količina",price:"Cijena",discount:"Popust",total:"Ukupno za plaćanje",total_discount:"Ukupan popust",sub_total:"Ukupno",tax:"Porez",amount:"Iznos",select_an_item:"Unesi tekst ili klikni da izabereš",type_item_description:"Unesi opis Stavke (nije obavezno)"},payment_attached_message:"One of the selected invoices already have a payment attached to it. Make sure to delete the attached payments first in order to go ahead with the removal",confirm_delete:"Nećeš moći vratiti ovu Fakturu | Nećeš moći vratiti ove Fakture",created_message:"Faktura uspješno kreirana",updated_message:"Faktura uspješno ažurirana",deleted_message:"Faktura uspješno obrisana | Fakture uspješno obrisane",marked_as_sent_message:"Faktura označena kao uspješno poslana",something_went_wrong:"nešto je krenulo naopako",invalid_due_amount_message:"Ukupan iznos za plaćanje na fakturi ne može biti manji od iznosa uplate za ovu fakturu. Molim Vas ažurirajte fakturu ili obrišite uplate koje su povezane sa ovom fakturom da bi nastavili.",mark_as_default_invoice_template_description:"Ako je omogućeno, izabrani predložak biti će automatski izabran za nove račune."},Lre={title:"Recurring Invoices",invoices_list:"Recurring Invoices List",days:"{days} Days",months:"{months} Month",years:"{years} Year",all:"All",paid:"Paid",unpaid:"Unpaid",viewed:"Viewed",overdue:"Overdue",active:"Active",completed:"Completed",customer:"CUSTOMER",paid_status:"PAID STATUS",ref_no:"REF NO.",number:"NUMBER",amount_due:"AMOUNT DUE",partially_paid:"Partially Paid",total:"Total",discount:"Discount",sub_total:"Sub Total",invoice:"Recurring Invoice | Recurring Invoices",invoice_number:"Recurring Invoice Number",next_invoice_date:"Next Invoice Date",ref_number:"Ref Number",contact:"Contact",add_item:"Add an Item",date:"Date",limit_by:"Limit by",limit_date:"Limit Date",limit_count:"Limit Count",count:"Count",status:"Status",select_a_status:"Select a status",working:"Working",on_hold:"On Hold",complete:"Completed",add_tax:"Add Tax",amount:"Amount",action:"Action",notes:"Notes",view:"View",basic_info:"Basic Info",send_invoice:"Send Recurring Invoice",auto_send:"Auto Send",resend_invoice:"Resend Recurring Invoice",invoice_template:"Recurring Invoice Template",conversion_message:"Recurring Invoice cloned successful",template:"Template",mark_as_sent:"Mark as sent",confirm_send_invoice:"This recurring invoice will be sent via email to the customer",invoice_mark_as_sent:"This recurring invoice will be marked as sent",confirm_send:"This recurring invoice will be sent via email to the customer",starts_at:"Start Date",due_date:"Invoice Due Date",record_payment:"Record Payment",add_new_invoice:"Add New Recurring Invoice",update_expense:"Update Expense",edit_invoice:"Edit Recurring Invoice",new_invoice:"New Recurring Invoice",send_automatically:"Send Automatically",send_automatically_desc:"Enable this, if you would like to send the invoice automatically to the customer when its created.",save_invoice:"Save Recurring Invoice",update_invoice:"Update Recurring Invoice",add_new_tax:"Add New Tax",no_invoices:"No Recurring Invoices yet!",mark_as_rejected:"Mark as rejected",mark_as_accepted:"Mark as accepted",list_of_invoices:"This section will contain the list of recurring invoices.",select_invoice:"Select Invoice",no_matching_invoices:"There are no matching recurring invoices!",mark_as_sent_successfully:"Recurring Invoice marked as sent successfully",invoice_sent_successfully:"Recurring Invoice sent successfully",cloned_successfully:"Recurring Invoice cloned successfully",clone_invoice:"Clone Recurring Invoice",confirm_clone:"This recurring invoice will be cloned into a new Recurring Invoice",add_customer_email:"Please add an email address for this customer to send invoices automatically.",item:{title:"Item Title",description:"Description",quantity:"Quantity",price:"Price",discount:"Discount",total:"Total",total_discount:"Total Discount",sub_total:"Sub Total",tax:"Tax",amount:"Amount",select_an_item:"Type or click to select an item",type_item_description:"Type Item Description (optional)"},frequency:{title:"Frequency",select_frequency:"Select Frequency",minute:"Minute",hour:"Hour",day_month:"Day of month",month:"Month",day_week:"Day of week"},confirm_delete:"You will not be able to recover this Invoice | You will not be able to recover these Invoices",created_message:"Recurring Invoice created successfully",updated_message:"Recurring Invoice updated successfully",deleted_message:"Recurring Invoice deleted successfully | Recurring Invoices deleted successfully",marked_as_sent_message:"Recurring Invoice marked as sent successfully",user_email_does_not_exist:"User email does not exist",something_went_wrong:"something went wrong",invalid_due_amount_message:"Total Recurring Invoice amount cannot be less than total paid amount for this Recurring Invoice. Please update the invoice or delete the associated payments to continue."},Bre={title:"Uplate",payments_list:"Popis uplata",record_payment:"Unesi Uplatu",customer:"Klijent",date:"Datum",amount:"Iznos",action:"Radnja",payment_number:"Broj uplate",payment_mode:"Način plaćanja",invoice:"Faktura",note:"Napomena",add_payment:"Dodaj Uplatu",new_payment:"Nova Uplata",edit_payment:"Izmjeni Uplatu",view_payment:"Pogledaj Uplatu",add_new_payment:"Dodaj Novu Uplatu",send_payment_receipt:"Pošalji potvrdu o uplati",send_payment:"Pošalji Uplatu",save_payment:"Spremi Uplatu",update_payment:"Ažuriraj Uplatu",payment:"Uplata | Uplate",no_payments:"Još uvijek nema uplata!",not_selected:"Nije odabrano",no_invoice:"Nema fakture",no_matching_payments:"Ne postoje uplate koje odgovaraju pretrazi!",list_of_payments:"Ova sekcija sadrži popis uplata.",select_payment_mode:"Odaberi način plaćanja",confirm_mark_as_sent:"Ovo plaćanje će biti označeno kao Poslano",confirm_send_payment:"Ovo plaćanje će biti poslano putem Email-a klijentu",send_payment_successfully:"Plaćanje uspješno poslano",something_went_wrong:"nešto je krenulo naopako",confirm_delete:"Nećeš moći vratiti ovu Uplatu | Nećeš moći vratiti ove Uplate",created_message:"Uplata uspješno kreirana",updated_message:"Uplata uspješno ažurirana",deleted_message:"Uplata uspješno obrisana | Uplate uspješno obrisane",invalid_amount_message:"Iznos Uplate je pogrešan"},Ure={title:"Rashodi",expenses_list:"Popis Rashoda",select_a_customer:"Odaberi klijenta",expense_title:"Naslov",customer:"Klijent",currency:"Currency",contact:"Kontakt",category:"Kategorija",from_date:"Datum od",to_date:"Datum do",expense_date:"Datum",description:"Opis",receipt:"Račun",amount:"Iznos",action:"Radnja",not_selected:"Nije odabrano",note:"Napomena",category_id:"ID kategorije",date:"Datum",add_expense:"Dodaj Rashod",add_new_expense:"Dodaj Novi Rashod",save_expense:"Spremi Rashod",update_expense:"Ažuriraj Rashod",download_receipt:"Preuzmi Račun",edit_expense:"Izmjeni Rashod",new_expense:"Novi Rashod",expense:"Rashod | Rashodi",no_expenses:"Još uvijek nema rashoda!",list_of_expenses:"Ova sekcija sadrži popis rashoda.",confirm_delete:"Nećeš moći vratiti ovaj Rashod | Nećeš moći vratiti ove Rashode",created_message:"Rashod uspješno kreiran",updated_message:"Rashod uspješno ažuriran",deleted_message:"Rashod uspješno obrisan | Rashodi uspješno obrisani",categories:{categories_list:"Popis Kategorija",title:"Naslov",name:"Naziv",description:"Opis",amount:"Iznos",actions:"Radnje",add_category:"Dodaj Kategoriju",new_category:"Nova Kategorija",category:"Kategorija | Kategorije",select_a_category:"Izaberi kategoriju"}},Vre={email:"Email",password:"Lozinka",forgot_password:"Zaboravili ste lozinku?",or_signIn_with:"ili se prijavite sa",login:"Prijava",register:"Registracija",reset_password:"Resetiraj lozinku",password_reset_successfully:"Lozinka Uspješno Resetiranja",enter_email:"Unesi email",enter_password:"Unesi lozinku",retype_password:"Ponovo unesi lozinku"},qre={buy_now:"Buy Now",install:"Install",price:"Price",download_zip_file:"Download ZIP file",unzipping_package:"Unzipping Package",copying_files:"Copying Files",deleting_files:"Deleting Unused files",completing_installation:"Completing Installation",update_failed:"Update Failed",install_success:"Module has been installed successfully!",customer_reviews:"Reviews",license:"License",faq:"FAQ",monthly:"Monthly",yearly:"Yearly",updated:"Updated",version:"Version",disable:"Disable",module_disabled:"Module Disabled",enable:"Enable",module_enabled:"Module Enabled",update_to:"Update To",module_updated:"Module Updated Successfully!",title:"Modules",module:"Module | Modules",api_token:"API token",invalid_api_token:"Invalid API Token.",other_modules:"Other Modules",view_all:"View All",no_reviews_found:"There are no reviews for this module yet!",module_not_purchased:"Module Not Purchased",module_not_found:"Module Not Found",version_not_supported:"The minimum required version for this module does not match. Please upgrade your invoiceshelf app to version: {version} to proceed.",last_updated:"Last Updated On",connect_installation:"Connect your installation",api_token_description:"Login to {url} and connect this installation by entering the API Token. Your purchased modules will show up here after the connection is established.",view_module:"View Module",update_available:"Update Available",purchased:"Purchased",installed:"Installed",no_modules_installed:"No Modules Installed Yet!",disable_warning:"All the settings for this particular will be reverted.",what_you_get:"What you get"},Hre={title:"Korisnici",users_list:"Popis korisnika",name:"Ime i prezime",description:"Opis",added_on:"Datum dodavanja",date_of_creation:"Datum kreiranja",action:"Radnja",add_user:"Dodaj Korisnika",save_user:"Spremi Korisnika",update_user:"Ažuriraj Korisnika",user:"Korisnik | Korisnici",add_new_user:"Dodaj novog korisnika",new_user:"Novi Korisnik",edit_user:"Izmjeni Korisnika",no_users:"Još uvijek nema korisnika!",list_of_users:"Ova sekcija sadrži popis korisnika.",email:"Email",phone:"Broj telefona",password:"Lozinka",user_attached_message:"Ne možete obrisati stavku koja je već u upotrebi",confirm_delete:"Nećeš moći vratiti ovog Korisnika | Nećeš moći vratiti ove Korisnike",created_message:"Korisnik uspješno napravljen",updated_message:"Korisnik uspješno ažuriran",deleted_message:"Korisnik uspješno obrisan | Korisnici uspješno obrisani",select_company_role:"Select Role for {company}",companies:"Companies"},Wre={title:"Izvještaj",from_date:"Datum od",to_date:"Datum do",status:"Status",paid:"Plaćeno",unpaid:"Neplaćeno",download_pdf:"Preuzmi PDF",view_pdf:"Pogledaj PDF",update_report:"Ažuriraj Izvještaj",report:"Izvještaj | Izvještaji",profit_loss:{profit_loss:"Prihod & Rashod",to_date:"Datum do",from_date:"Datum od",date_range:"Izaberi raspon datuma"},sales:{sales:"Prodaja",date_range:"Izaberi raspon datuma",to_date:"Datum do",from_date:"Datum od",report_type:"Vrsta Izveštaja"},taxes:{taxes:"Porezi",to_date:"Datum do",from_date:"Datum od",date_range:"Izaberi raspon datuma"},errors:{required:"Polje je obavezno"},invoices:{invoice:"Faktura",invoice_date:"Datum Fakture",due_date:"Datum Dospijeća",amount:"Iznos",contact_name:"Ime Kontakta",status:"Status"},estimates:{estimate:"Ponuda",estimate_date:"Datum Ponude",due_date:"Datum Dospijeća",estimate_number:"Broj Ponude",ref_number:"Poziv na broj",amount:"Iznos",contact_name:"Ime Kontakta",status:"Status"},expenses:{expenses:"Rashodi",category:"Kategorija",date:"Datum",amount:"Iznos",to_date:"Datum do",from_date:"Datum od",date_range:"Izaberi raspon datuma"}},Kre={menu_title:{account_settings:"Postavke Naloga",company_information:"Podaci o firmi",customization:"Prilagođavanje",preferences:"Preference",notifications:"Obavještenja",tax_types:"Vrste Poreza",expense_category:"Kategorije Rashoda",update_app:"Ažuriraj Aplikaciju",backup:"Backup",file_disk:"File Disk",custom_fields:"Prilagođena polja",payment_modes:"Način plaćanja",notes:"Napomene",exchange_rate:"Exchange Rate",address_information:"Address Information"},address_information:{section_description:" You can update Your Address information using form below."},title:"Postavke",setting:"Postavke | Postavke",general:"Opće",language:"Jezik",primary_currency:"Primarna Valuta",timezone:"Vremenska Zona",date_format:"Format Datuma",currencies:{title:"Valute",currency:"Valuta | Valute",currencies_list:"Popis Valuta",select_currency:"Odaberi Valutu",name:"Naziv",code:"Kod",symbol:"Simbol",precision:"Preciznost",thousand_separator:"Separator za tisuće",decimal_separator:"Separator za decimale",position:"Pozicija",position_of_symbol:"Pozicija simbola",right:"Desno",left:"Lijevo",action:"Radnja",add_currency:"Dodaj Valutu"},mail:{host:"Mail Host",port:"Mail Port",driver:"Mail Driver",secret:"Lozinka",mailgun_secret:"Mailgun Lozinka",mailgun_domain:"Domain",mailgun_endpoint:"Mailgun Endpoint",ses_secret:"SES Lozinka",ses_key:"SES Ključ",password:"Mail Lozinka",username:"Mail Korisničko Ime",mail_config:"Mail Postavke",from_name:"Naziv pošiljaoca",from_mail:"E-mail adresa pošiljaoca",encryption:"E-mail enkripcija",mail_config_desc:"Ispod se nalazi forma za podešavanje E-mail drajvera za slanje pošte iz aplikacije. Takođe možete podesiti provajdere treće strane kao Sendgrid, SES itd."},pdf:{title:"PDF Postavke",footer_text:"Tekstualno zaglavlje na dnu strane",pdf_layout:"PDF Raspored"},company_info:{company_info:"Podaci o firmi",company_name:"Naziv firme",company_logo:"Logo firme",section_description:"Informacije o Vašoj firmi će biti prikazane na fakturama, ponudama i drugim dokumentima koji se prave u ovoj aplikaciji.",phone:"Telefon",country:"Država",state:"Županija",city:"Grad",address:"Adresa",zip:"Poštanski broj",save:"Spremi",delete:"Delete",updated_message:"Podaci o firmi uspješno spremljeni",delete_company:"Delete Company",delete_company_description:"Once you delete your company, you will lose all the data and files associated with it permanently.",are_you_absolutely_sure:"Are you absolutely sure?",delete_company_modal_desc:"This action cannot be undone. This will permanently delete {company} and all of its associated data.",delete_company_modal_label:"Please type {company} to confirm"},custom_fields:{title:"Prilagođena polja",section_description:"Prilagodite vaše Fakture, Ponude i Uplate sa svojim poljima. Koristite polja navedena niže na formatu adrese na stranici Postavke/Prilagođavanje.",add_custom_field:"Dodaj prilagođeno polje",edit_custom_field:"Izmjeni prilagođeno polje",field_name:"Naziv polja",label:"Oznaka",type:"Vrsta",name:"Naziv",slug:"Slug",required:"Obavezno",placeholder:"Opis polja (Placeholder)",help_text:"Pomoćni tekst",default_value:"Zadana vrijednost",prefix:"Prefiks",starting_number:"Početni broj",model:"Model",help_text_description:"Unesite opis koji će pomoći korisnicima razumjeti svrhu ovog prilagođenog polja.",suffix:"Sufiks",yes:"Da",no:"Ne",order:"Redosljed",custom_field_confirm_delete:"Nećeš moći vratiti ovo prilagođeno polje",already_in_use:"Prilagođeno polje je već u uporabi",deleted_message:"Prilagođeno polje je uspješno obrisano",options:"opcije",add_option:"Dodaj opcije",add_another_option:"Dodaj još jednu opciju",sort_in_alphabetical_order:"Poredaj po Abecedi",add_options_in_bulk:"Grupno dodavanje opcija",use_predefined_options:"Koristi predefinirane opcije",select_custom_date:"Odaberi datum",select_relative_date:"Odaberi relativan datum",ticked_by_default:"Zadano odabrano",updated_message:"Prilagođeno polje uspješno ažurirano",added_message:"Prilagođeno polje uspješno dodato",press_enter_to_add:"Press enter to add new option",model_in_use:"Cannot update model for fields which are already in use.",type_in_use:"Cannot update type for fields which are already in use."},customization:{customization:"prilagođavanje",updated_message:"Podaci o firmi su uspješno ažurirani",save:"Spremi",insert_fields:"Insert Fields",learn_custom_format:"Learn how to use custom format",add_new_component:"Add New Component",component:"Component",Parameter:"Parameter",series:"Series",series_description:"To set a static prefix/postfix like 'INV' across your company. It supports character length of up to 6 chars.",series_param_label:"Series Value",delimiter:"Delimiter",delimiter_description:"Single character for specifying the boundary between 2 separate components. By default its set to -",delimiter_param_label:"Delimiter Value",date_format:"Date Format",date_format_description:"A local date and time field which accepts a format parameter. The default format: 'Y' renders the current year.",date_format_param_label:"Format",sequence:"Sequence",sequence_description:"Consecutive sequence of numbers across your company. You can specify the length on the given parameter.",sequence_param_label:"Sequence Length",customer_series:"Customer Series",customer_series_description:"To set a different prefix/postfix for each customer.",customer_sequence:"Customer Sequence",customer_sequence_description:"Consecutive sequence of numbers for each of your customer.",customer_sequence_param_label:"Sequence Length",random_sequence:"Random Sequence",random_sequence_description:"Random alphanumeric string. You can specify the length on the given parameter.",random_sequence_param_label:"Sequence Length",invoices:{title:"Fakture",invoice_number_format:"Invoice Number Format",invoice_number_format_description:"Customize how your invoice number gets generated automatically when you create a new invoice.",preview_invoice_number:"Preview Invoice Number",due_date:"Due Date",due_date_description:"Specify how due date is automatically set when you create an invoice.",due_date_days:"Invoice Due after days",set_due_date_automatically:"Set Due Date Automatically",set_due_date_automatically_description:"Enable this if you wish to set due date automatically when you create a new invoice.",default_formats:"Default Formats",default_formats_description:"Below given formats are used to fill up the fields automatically on invoice creation.",default_invoice_email_body:"Zadani sadržaj email-a za Fakture",company_address_format:"Format adrese firme",shipping_address_format:"Format adrese za dostavu firme",billing_address_format:"Format adrese za naplatu firme",invoice_email_attachment:"Send invoices as attachments",invoice_email_attachment_setting_description:"Enable this if you want to send invoices as email attachment. Please note that 'View Invoice' button in emails will not be displayed anymore when enabled.",invoice_settings_updated:"Postavke fakture uspješno spremljene",retrospective_edits:"Retrospective Edits",allow:"Allow",disable_on_invoice_partial_paid:"Disable after partial payment is recorded",disable_on_invoice_paid:"Disable after full payment is recorded",disable_on_invoice_sent:"Disable after invoice is sent",retrospective_edits_description:" Based on your country's laws or your preference, you can restrict users from editing finalised invoices."},estimates:{title:"Ponude",estimate_number_format:"Estimate Number Format",estimate_number_format_description:"Customize how your estimate number gets generated automatically when you create a new estimate.",preview_estimate_number:"Preview Estimate Number",expiry_date:"Expiry Date",expiry_date_description:"Specify how expiry date is automatically set when you create an estimate.",expiry_date_days:"Estimate Expires after days",set_expiry_date_automatically:"Set Expiry Date Automatically",set_expiry_date_automatically_description:"Enable this if you wish to set expiry date automatically when you create a new estimate.",default_formats:"Default Formats",default_formats_description:"Below given formats are used to fill up the fields automatically on estimate creation.",default_estimate_email_body:"Zadani sadržaj email-a za Ponude",company_address_format:"Format adrese firme",shipping_address_format:"Format adrese za dostavu firme",billing_address_format:"Format adrese za naplatu firme",estimate_email_attachment:"Send estimates as attachments",estimate_email_attachment_setting_description:"Enable this if you want to send the estimates as an email attachment. Please note that 'View Estimate' button in emails will not be displayed anymore when enabled.",estimate_settings_updated:"Estimate Settings updated successfully",convert_estimate_options:"Estimate Convert Action",convert_estimate_description:"Specify what happens to the estimate after it gets converted to an invoice.",no_action:"No action",delete_estimate:"Delete estimate",mark_estimate_as_accepted:"Mark estimate as accepted"},payments:{title:"Uplate",payment_number_format:"Payment Number Format",payment_number_format_description:"Customize how your payment number gets generated automatically when you create a new payment.",preview_payment_number:"Preview Payment Number",default_formats:"Default Formats",default_formats_description:"Below given formats are used to fill up the fields automatically on payment creation.",default_payment_email_body:"Zadani sadržaj email-a za potvrdu o plaćanju (račun)",company_address_format:"Format adrese firme",from_customer_address_format:"Format adrese klijenta",payment_email_attachment:"Send payments as attachments",payment_email_attachment_setting_description:"Enable this if you want to send the payment receipts as an email attachment. Please note that 'View Payment' button in emails will not be displayed anymore when enabled.",payment_settings_updated:"Payment Settings updated successfully"},items:{title:"Stavke",units:"Jedinice",add_item_unit:"Dodaj jedinicu stavke",edit_item_unit:"Izmjeni jedinicu stavke",unit_name:"Naziv jedinice",item_unit_added:"Jedinica stavke dodana",item_unit_updated:"Jedinica stavke ažurirana",item_unit_confirm_delete:"Nećeš moći vratiti ovu jedinicu stavke",already_in_use:"Jedinica stavke se već koristi",deleted_message:"Jedinica stavke uspješno obrisana"},notes:{title:"Napomene",description:"Uštedite vrijeme praveći napomene i koristeći ih na fakturama, ponudama i uplatama.",notes:"Napomene",type:"Vrsta",add_note:"Dodaj Napomenu",add_new_note:"Dodaj novu Napomenu",name:"Naziv",edit_note:"Izmjeni Napomenu",note_added:"Napomena uspješno dodana",note_updated:"Napomena uspješno ažurirana",note_confirm_delete:"Nećeš moći vratiti ovu Napomenu",already_in_use:"Napomena se već koristi",deleted_message:"Napomena uspješno obrisana"}},account_settings:{profile_picture:"Profilna slika",name:"Ime i prezime",email:"Email",password:"Lozinka",confirm_password:"Potvrdi lozinku",account_settings:"Postavke računa",save:"Spremi",section_description:"Možete ažurirati Vaše ime i prezime, email i lozinku koristeći formu niže.",updated_message:"Postavke računa uspješno ažurirane"},user_profile:{name:"Ime i prezime",email:"Email",password:"Lozinka",confirm_password:"Potvrdi lozinku"},notification:{title:"Obavijesti",email:"Šalji obavijesti na",description:"Koje email obavijesti želite dobiti kada se nešto promijeni?",invoice_viewed:"Faktura pogledana",invoice_viewed_desc:"Kada klijent pogleda fakturu koja je poslana putem ove aplikacije.",estimate_viewed:"Ponuda gledana",estimate_viewed_desc:"Kada klijent pogleda ponudu koja je poslana putem ove aplikacije.",save:"Spremi",email_save_message:"Email uspješno sačuvan",please_enter_email:"Molim Vas unesite E-mail"},roles:{title:"Roles",description:"Manage the roles & permissions of this company",save:"Save",add_new_role:"Add New Role",role_name:"Role Name",added_on:"Added on",add_role:"Add Role",edit_role:"Edit Role",name:"Name",permission:"Permission | Permissions",select_all:"Select All",none:"None",confirm_delete:"You will not be able to recover this Role",created_message:"Role created successfully",updated_message:"Role updated successfully",deleted_message:"Role deleted successfully",already_in_use:"Role is already in use"},exchange_rate:{exchange_rate:"Exchange Rate",title:"Fix Currency Exchange issues",description:"Please enter exchange rate of all the currencies mentioned below to help InvoiceShelf properly calculate the amounts in {currency}.",drivers:"Drivers",new_driver:"Add New Provider",edit_driver:"Edit Provider",select_driver:"Select Driver",update:"select exchange rate ",providers_description:"Configure your exchange rate providers here to automatically fetch the latest exchange rate on transactions.",key:"API Key",name:"Name",driver:"Driver",is_default:"IS DEFAULT",currency:"Currencies",exchange_rate_confirm_delete:"You will not be able to recover this driver",created_message:"Provider Created successfully",updated_message:"Provider Updated Successfully",deleted_message:"Provider Deleted Successfully",error:" You cannot Delete Active Driver",default_currency_error:"This currency is already used in one of the Active Provider",exchange_help_text:"Enter exchange rate to convert from {currency} to {baseCurrency}",currency_freak:"Currency Freak",currency_layer:"Currency Layer",open_exchange_rate:"Open Exchange Rate",currency_converter:"Currency Converter",server:"Server",url:"URL",active:"Active",currency_help_text:"This provider will only be used on above selected currencies",currency_in_used:"The following currencies are already active on another provider. Please remove these currencies from selection to activate this provider again."},tax_types:{title:"Vrste Poreza",add_tax:"Dodaj Porez",edit_tax:"Izmjeni Porez",description:"Možete dodati ili ukloniti porez. Ova aplikacija podržava porez, kako na individualnim stavkama tako i na fakturi/ponudi.",add_new_tax:"Dodaj Novi Porez",tax_settings:"Postavke Poreza",tax_per_item:"Porez po Stavkama",tax_name:"Naziv Poreza",compound_tax:"Složeni Porez",percent:"Postotak",action:"Radnja",tax_setting_description:"Izaberite ovo ako želite dodati porez na individualne stavke. Zadano ponašanje je da je porez dodan direktno na fakturu.",created_message:"Vrsta poreza uspješno kreirana",updated_message:"Vrsta poreza uspješno ažurirana",deleted_message:"Vrsta poreza uspješno obrisana",confirm_delete:"Nećete moći vratiti Vrstu Poreza",already_in_use:"Porez se već koristi"},payment_modes:{title:"Payment Modes",description:"Modes of transaction for payments",add_payment_mode:"Add Payment Mode",edit_payment_mode:"Edit Payment Mode",mode_name:"Mode Name",payment_mode_added:"Payment Mode Added",payment_mode_updated:"Payment Mode Updated",payment_mode_confirm_delete:"You will not be able to recover this Payment Mode",payments_attached:"This payment method is already attached to payments. Please delete the attached payments to proceed with deletion.",expenses_attached:"This payment method is already attached to expenses. Please delete the attached expenses to proceed with deletion.",deleted_message:"Payment Mode deleted successfully"},expense_category:{title:"Kategorija Rashoda",action:"Radnja",description:"Kategorije su obavezne za dodavanje rashoda. Možeš dodati ili obrisati kategorije.",add_new_category:"Dodaj novu kategoriju",add_category:"Dodaj kategoriju",edit_category:"Izmjeni kategoriju",category_name:"Naziv kategorije",category_description:"Opis",created_message:"Kategorija rashoda je uspješno kreirana",deleted_message:"Kategorija rashoda je uspješno izbrisana",updated_message:"Kategorija rashoda je uspješno ažurirana",confirm_delete:"Nećeš moći vratiti ovu kategoriju rashoda",already_in_use:"Kategorija se već koristi"},preferences:{currency:"Valuta",default_language:"Jezik",time_zone:"Vremenska Zona",fiscal_year:"Financijska Godina",date_format:"Format datuma",discount_setting:"Postavke popusta",discount_per_item:"Popust po stavkama",discount_setting_description:"Izaberite ovo ako želite dodati Popust na individualne stavke. Zadana vrijednost je da je Popust dodan direktno na fakturu.",expire_public_links:"Automatically Expire Public Links",expire_setting_description:"Specify whether you would like to expire all the links sent by application to view invoices, estimates & payments, etc after a specified duration.",save:"Spremi",preference:"Preferencija | Preferencije",general_settings:"Zadane postavke za sistem",updated_message:"Preferencije uspješno ažurirane",select_language:"Izaberi Jezik",select_time_zone:"Izaberi Vremensku Zonu",select_date_format:"Izaberi Format Datuma",select_financial_year:"Izaberi Financijsku Godinu",recurring_invoice_status:"Recurring Invoice Status",create_status:"Create Status",active:"Active",on_hold:"On Hold",update_status:"Update Status",completed:"Completed",company_currency_unchangeable:"Company currency cannot be changed"},update_app:{title:"Ažuriraj aplikaciju",description:"Lako možeš ažurirati InvoiceShelf tako da napraviš provjeru novih verzija klikom na polje ispod",check_update:"Provjeri ažuriranost",avail_update:"Dostupna je nova verzija",next_version:"Sljedeća verzija",requirements:"Zahtjevi",update:"Ažuriraj sada",update_progress:"Ažuriranje je u toku...",progress_text:"Trajanje je svega par minuta. Nemojte osviježavati ili zatvoriti stranicu dok ažuriranje ne bude gotovo",update_success:"Aplikacija je ažurirana! Molim Vas pričekajte da se stranica automatski osvježi.",latest_message:"Nema nove verzije! Ažurirana posljednja verzija.",current_version:"Trenutna verzija",download_zip_file:"Preuzmi ZIP paket",unzipping_package:"Raspakiranje paketa",copying_files:"Kopiranje datoteka",deleting_files:"Brisanje fajlova koji nisu u upotrebi",running_migrations:"Migracije u toku",finishing_update:"Završavanje ažuriranja",update_failed:"Neuspešno ažuriranje",update_failed_text:"Žao mi je! Tvoje ažuriranje nije uspelo na koraku broj: {step} korak",update_warning:"All of the application files and default template files will be overwritten when you update the application using this utility. Please take a backup of your templates & database before updating."},backup:{title:"Sigurnosna kopija | Sigurnosne kopije",description:"Backup je zip arhiv koji sadrži sve fajlove iz foldera koje ste naveli, također sadrži sigurnosnu kopiju baze podataka.",new_backup:"Dodaj novi Backup",create_backup:"Napravi Backup",select_backup_type:"Izaberi tip Backupa",backup_confirm_delete:"Nećeš moći vratiti ovaj Backup",path:"putanja",new_disk:"Novi Disk",created_at:"datum kreiranja",size:"veličina",dropbox:"dropbox",local:"lokalni",healthy:"zdrav",amount_of_backups:"broj backupa",newest_backups:"najnoviji backupi",used_storage:"korišteno skladište",select_disk:"Izaberi Disk",action:"Radnja",deleted_message:"Backup uspješno obrisan",created_message:"Backup uspješno napravljen",invalid_disk_credentials:"Pogrešne akreditacije za odabrani disk"},disk:{title:"File Disk | File Disks",description:"Zadano ponašanje je da InvoiceShelf koristi lokalni disk za čuvanje backupa, avatara i ostalih slika. Možete podesiti više od jednog disk drajvera od provajdera poput DigitalOcean, S3 i Dropbox po vašoj želji.",created_at:"datum kreiranja",dropbox:"dropbox",name:"Naziv",driver:"Drajver",disk_type:"Vrsta",disk_name:"Naziv Diska",new_disk:"Dodaj novi Disk",filesystem_driver:"Filesystem Driver",local_driver:"lokalni Drajver",local_root:"local Root",public_driver:"Public Driver",public_root:"Public Root",public_url:"Public URL",public_visibility:"Public Visibility",media_driver:"Media Driver",media_root:"Media Root",aws_driver:"AWS Driver",aws_key:"AWS Key",aws_secret:"AWS Secret",aws_region:"AWS Region",aws_bucket:"AWS Bucket",aws_root:"AWS Root",do_spaces_type:"Do Spaces type",do_spaces_key:"Do Spaces key",do_spaces_secret:"Do Spaces Secret",do_spaces_region:"Do Spaces Region",do_spaces_bucket:"Do Spaces Bucket",do_spaces_endpoint:"Do Spaces Endpoint",do_spaces_root:"Do Spaces Root",dropbox_type:"Dropbox Type",dropbox_token:"Dropbox Token",dropbox_key:"Dropbox Key",dropbox_secret:"Dropbox Secret",dropbox_app:"Dropbox App",dropbox_root:"Dropbox Root",default_driver:"Zadani Drajver",is_default:"DA LI JE ZADAN",set_default_disk:"Postavi zadani Disk",set_default_disk_confirm:"Ovaj disk će biti postavljen kao zadani i svi novi PDF fajlovi će biti sačuvani na ovom disku",success_set_default_disk:"Disk je uspješno postavljen kao zadani",save_pdf_to_disk:"Spremi PDF fajlove na Disk",disk_setting_description:" Uključite ovo ako želite da spremite kopiju PDF fajla svake Fakture, Ponude i Uplate na vaš zadani disk automatski. Uključivanjem ove opcije smanjujete vrijeme učitavanja pregleda PDF fajlova.",select_disk:"Izaberi Disk",disk_settings:"Disk Postavke",confirm_delete:"Ovo neće utjecati na vaše postojeće fajlove i foldere na navedenom disku, ali će se konfiguracija vašeg diska izbrisati iz InvoiceShelfa.",action:"Radnja",edit_file_disk:"Izmjeni File Disk",success_create:"Disk uspješno dodan",success_update:"Disk uspješno ažuriran",error:"Dodavanje diska nije uspelo",deleted_message:"File Disk uspješno obrisan",disk_variables_save_successfully:"Disk uspješno podešen",disk_variables_save_error:"Postavljanje diska nije uspjelo.",invalid_disk_credentials:"Pogrešne akreditacije za navedeni disk"},taxations:{add_billing_address:"Enter Billing Address",add_shipping_address:"Enter Shipping Address",add_company_address:"Enter Company Address",modal_description:"The information below is required in order to fetch sales tax.",add_address:"Add Address for fetching sales tax.",address_placeholder:"Example: 123, My Street",city_placeholder:"Example: Los Angeles",state_placeholder:"Example: CA",zip_placeholder:"Example: 90024",invalid_address:"Please provide valid address details."}},Yre={account_info:"Informacije o računu",account_info_desc:"Detalji u nastavku koriste se za kreiranje glavnog administratorskog računa. Moguće ih je izmjeniti u bilo kada nakon prijavljivanja.",name:"Naziv",email:"E-mail",password:"Lozinka",confirm_password:"Potvrdi lozinku",save_cont:"Spremi & Nastavi",company_info:"Informacije o firmi",company_info_desc:"Ove informacije će biti prikazane na fakturama. Moguće ih je izmjeniti kasnije u postavkama.",company_name:"Naziv firme",company_logo:"Logo firme",logo_preview:"Pregled logotipa",preferences:"Preference",preferences_desc:"Zadane Preference za sistem",currency_set_alert:"The company's currency cannot be changed later.",country:"Država",state:"Županija",city:"Grad",address:"Adresa",street:"Ulica1 | Ulica2",phone:"Telefon",zip_code:"Poštanski broj",go_back:"Vrati se nazad",currency:"Valuta",language:"Jezik",time_zone:"Vremenska zona",fiscal_year:"Financijska godina",date_format:"Format datuma",from_address:"Adresa pošiljaoca",username:"Korisničko ime",next:"Sljedeće",continue:"Nastavi",skip:"Preskoči",database:{database:"URL stranice & baze podataka",connection:"Veza baze podataka",host:"Host baze podataka",port:"Port baze podataka",password:"Lozinka baze podataka",app_url:"URL aplikacije",app_domain:"Domen aplikacije",username:"Korisničko ime baze podataka",db_name:"Naziv baze podataka",db_path:"Putanja do baze",desc:"Kreiraj bazu podataka na svom serveru i postavi akreditacije prateći obrazac u nastavku."},permissions:{permissions:"Dozvole",permission_confirm_title:"Da li ste sigurni da želite nastaviti?",permission_confirm_desc:"Provjera dozvola za foldere nije uspjela",permission_desc:"U nastavku se nalazi popis dozvola za foldere koji su nužni kako bi alikacija radila. Ukoliko provjera dozvola ne uspije, ažuriraj svoj popis dozvola za te foldere."},verify_domain:{title:"Domain Verification",desc:"InvoiceShelf uses Session based authentication which requires domain verification for security purposes. Please enter the domain on which you will be accessing your web application.",app_domain:"App Domain",verify_now:"Verify Now",success:"Domain Verify Successfully.",failed:"Domain verification failed. Please enter valid domain name.",verify_and_continue:"Verify And Continue"},mail:{host:"Mail Host",port:"Mail Port",driver:"Mail drajver",secret:"Lozinka",mailgun_secret:"Mailgun Lozinka",mailgun_domain:"Domen",mailgun_endpoint:"Mailgun Endpoint",ses_secret:"SES Lozinka",ses_key:"SES Ključ",password:"Lozinka za e-mail",username:"Koristničko ime za e-mail",mail_config:"E-mail konfiguracija",from_name:"Naziv pošiljatelja",from_mail:"E-mail adresa pošiljatelja",encryption:"E-mail enkripcija",mail_config_desc:"Ispod se nalazi forma za postavljanje E-mail drajvera za slanje pošte iz aplikacije. Također možete podesiti provajdere treće strane kao Sendgrid, SES itd."},req:{system_req:"Sistemski zahtjevi",php_req_version:"Zahtjeva PHP verziju {version} ",check_req:"Provjeri zahtjeve",system_req_desc:"InvoiceShelf ima nekoliko zahtjeva za server. Provjeri da li tvoj server ima potrebnu verziju PHP-a i sva navedena proširenja navedena u nastavku"},errors:{migrate_failed:"Neuspješno migriranje",database_variables_save_error:"Konfiguraciju nije moguće zapisati u .env datoteku. Provjeri dozvole za datoteku",mail_variables_save_error:"E-mail konfiguracija neuspješna",connection_failed:"Neuspješno povezivanje s bazom podataka",database_should_be_empty:"Baza podataka treba biti prazna"},success:{mail_variables_save_successfully:"E-mail je uspješno konfiguriran",database_variables_save_successfully:"Baza podataka je uspješno konfigurirana"}},Zre={invalid_phone:"Pogrešan Broj Telefona",invalid_url:"Nevažeći URL (primer: http://www.invoiceshelf.com)",invalid_domain_url:"Pogrešan URL (primjer: invoiceshelf.com)",required:"Obavezno polje",email_incorrect:"Pogrešan E-mail",email_already_taken:"Navedeni E-mail je zauzet",email_does_not_exist:"Korisnik sa navedenom e-mail adresom ne postoji",item_unit_already_taken:"Naziv ove jedinice stavke je zauzet",payment_mode_already_taken:"Naziv ovog načina plaćanja je zauzet",send_reset_link:"Pošalji link za reset",not_yet:"Još uvijek ništa? Pošalji ponovno",password_min_length:"Lozinka mora imati {count} znakova",name_min_length:"Naziv mora imati najmanje {count} slova",prefix_min_length:"Prefix must have at least {count} letters.",enter_valid_tax_rate:"Unesite odgovarajuću poreznu stopu",numbers_only:"Mogu se unositi samo brojevi",characters_only:"Mogu se unositi samo znakovi",password_incorrect:"Lozinka mora biti identična",password_length:"Lozinka mora imati {count} znakova",qty_must_greater_than_zero:"Količina mora biti veća od 0.",price_greater_than_zero:"Cijena mora biti veća od 0",payment_greater_than_zero:"Uplata mora biti veća od 0",payment_greater_than_due_amount:"Unesena uplata je veća od dospijeća iznosa ove fakture",quantity_maxlength:"Količina ne može imati više od 20 znakova",price_maxlength:"Cijena ne može imati više od 20 znakova",price_minvalue:"Cijena mora biti veća od 0",amount_maxlength:"Iznos ne može da ima više od 20 znakova",amount_minvalue:"Iznos mora biti veći od 0",discount_maxlength:"Discount should not be greater than max discount",description_maxlength:"Opis ne može imati više od 65,000 znakova",subject_maxlength:"Predmet ne može imati više od 100 znakova",message_maxlength:"Poruka ne može imati više od 255 znakova",maximum_options_error:"Maksimalan broj opcija je izabran. Prvo uklonite izabranu opciju da bi izabrali drugu",notes_maxlength:"Napomena ne može imati više od 65,000 znakova",address_maxlength:"Adresa ne može imati više od 255 znakova",ref_number_maxlength:"Poziv na broj ne može imati više od 225 znakova",prefix_maxlength:"Prefiks ne može imati više od 5 znakova",something_went_wrong:"nešto je krenulo naopako",number_length_minvalue:"Number length should be greater than 0",at_least_one_ability:"Please select atleast one Permission.",valid_driver_key:"Please enter a valid {driver} key.",valid_exchange_rate:"Please enter a valid exchange rate.",company_name_not_same:"Company name must match with given name."},Gre={starter_plan:"This feature is available on Starter plan and onwards!",invalid_provider_key:"Please Enter Valid Provider API Key.",estimate_number_used:"The estimate number has already been taken.",invoice_number_used:"The invoice number has already been taken.",payment_attached:"This invoice already has a payment attached to it. Make sure to delete the attached payments first in order to go ahead with the removal.",payment_number_used:"The payment number has already been taken.",name_already_taken:"The name has already been taken.",receipt_does_not_exist:"Receipt does not exist.",customer_cannot_be_changed_after_payment_is_added:"Customer cannot be change after payment is added",invalid_credentials:"Invalid Credentials.",not_allowed:"Not Allowed",login_invalid_credentials:"These credentials do not match our records.",enter_valid_cron_format:"Please enter a valid cron format",email_could_not_be_sent:"Email could not be sent to this email address.",invalid_address:"Please enter a valid address.",invalid_key:"Please enter valid key.",invalid_state:"Please enter a valid state.",invalid_city:"Please enter a valid city.",invalid_postal_code:"Please enter a valid zip.",invalid_format:"Please enter valid query string format.",api_error:"Server not responding.",feature_not_enabled:"Feature not enabled.",request_limit_met:"Api request limit exceeded.",address_incomplete:"Incomplete Address"},Qre="Ponuda",Jre="Broj Ponude",Xre="Datum Ponude",ese="Datum isteka Ponude",tse="Faktura",ase="Broj Fakture",nse="Datum Fakture",ise="Datum dospijeća Fakture",ose="Napomena",rse="Stavke",sse="Količina",lse="Cijena",cse="Popust",dse="Iznos",use="Osnovica za obračun PDV-a",_se="Ukupan iznos",mse="Plaćanje",pse="POTVRDA O UPLATI",fse="Datum Uplate",hse="Broj Uplate",gse="Način Plaćanja",vse="Iznos Uplate",yse="IZVJEŠTAJ O RASHODIMA",bse="RASHODI UKUPNO",kse="IZVEJŠTAJ O PRIHODIMA I RASHODIMA",wse="Izvještaj Prodaje po Strankama",xse="Izvještaj Prodaje po Stavkama",Dse="Izvještaj Poreza",Sse="PRIHOD",zse="NETO PROFIT",Pse="Izvještaj o Prodaji: Po Klijentu",Ese="PRODAJA UKUPNO",Ase="Izvještaj o Prodaji: Po Stavci",Cse="IZVEŠTAJ O POREZIMA",jse="UKUPNO POREZ",Tse="Vrsta Poreza",Ise="Rashodi",Nse="Račun za,",Fse="Isporučiti za,",Mse="Poslat od strane:",Rse="Porez",Ose={navigation:Are,general:Cre,dashboard:jre,tax_types:Tre,global_search:Ire,company_switcher:Nre,dateRange:Fre,customers:Mre,items:Rre,estimates:Ore,invoices:$re,recurring_invoices:Lre,payments:Bre,expenses:Ure,login:Vre,modules:qre,users:Hre,reports:Wre,settings:Kre,wizard:Yre,validation:Zre,errors:Gre,pdf_estimate_label:Qre,pdf_estimate_number:Jre,pdf_estimate_date:Xre,pdf_estimate_expire_date:ese,pdf_invoice_label:tse,pdf_invoice_number:ase,pdf_invoice_date:nse,pdf_invoice_due_date:ise,pdf_notes:ose,pdf_items_label:rse,pdf_quantity_label:sse,pdf_price_label:lse,pdf_discount_label:cse,pdf_amount_label:dse,pdf_subtotal:use,pdf_total:_se,pdf_payment_label:mse,pdf_payment_receipt_label:pse,pdf_payment_date:fse,pdf_payment_number:hse,pdf_payment_mode:gse,pdf_payment_amount_received_label:vse,pdf_expense_report_label:yse,pdf_total_expenses_label:bse,pdf_profit_loss_label:kse,pdf_sales_customers_label:wse,pdf_sales_items_label:xse,pdf_tax_summery_label:Dse,pdf_income_label:Sse,pdf_net_profit_label:zse,pdf_customer_sales_report:Pse,pdf_total_sales_label:Ese,pdf_item_sales_label:Ase,pdf_tax_report_label:Cse,pdf_total_tax_label:jse,pdf_tax_types_label:Tse,pdf_expenses_label:Ise,pdf_bill_to:Nse,pdf_ship_to:Fse,pdf_received_from:Mse,pdf_tax_label:Rse},$se={dashboard:"แดชบอร์ด",customers:"ลูกค้า",items:"บริการ",invoices:"ใบวางบิล","recurring-invoices":"ใบวางบิลประจำ",expenses:"ค่าใช้จ่าย",estimates:"ใบเสนอราคา",payments:"การชำระเงิน",reports:"รายงาน",settings:"การตั้งค่า",logout:"ออกจากระบบ",users:"ผู้ใช้งาน",modules:"โมดูล"},Lse={add_company:"เพิ่มบริษัท",view_pdf:"ดูไฟล์ PDF",copy_pdf_url:"คัดลอก URL PDF",download_pdf:"ดาวน์โหลดไฟล์ PDF",save:"บันทึก",create:"สร้าง",cancel:"ยกเลิก",update:"อัพเดต",deselect:"ยกเลิกการเลือก",download:"ดาวน์โหลด",from_date:"จากวันที่",to_date:"ถึงวันที่",from:"จาก",to:"ถึง",ok:"ตกลง",yes:"ใช่",no:"ไม่",sort_by:"เรียงตาม",ascending:"จากน้อยไปมาก",descending:"จากมากไปน้อย",subject:"เรื่อง",body:"บอดี้",message:"ข้อความ",send:"ส่ง",preview:"ดูตัวอย่าง",go_back:"กลับไป",back_to_login:"กลับไปที่ล็อกอิน?",home:"หน้าหลัก",filter:"กรอง",delete:"ลบ",edit:"แก้ไข",view:"ดู",add_new_item:"เพิ่มรายการใหม่",clear_all:"ล้างทั้งหมด",showing:"การแสดง",of:"ของ",actions:"จัดการ",subtotal:"รวมเงิน",discount:"ส่วนลด",fixed:"คงที่",percentage:"เปอร์เซ็นต์",tax:"ภาษี",total_amount:"จำนวนเงินทั้งหมด",bill_to:"ที่อยู่เรียกเก็บเงิน",ship_to:"ที่อยู่สำหรับจัดส่ง",due:"ครบกำหนด",draft:"แบบร่าง",sent:"ส่งแล้ว",all:"ทั้งหมด",select_all:"เลือกทั้งหมด",select_template:"เลือกเทมเพลต",choose_file:"คลิกที่นี่เพื่อเลือกไฟล์",choose_template:"เลือกแม่แบบ",choose:"เลือก",remove:"ลบออก",select_a_status:"เลือกสถานะ",select_a_tax:"เลือกภาษี",search:"ค้นหา",are_you_sure:"คุณแน่ใจนะ",list_is_empty:"รายการว่างเปล่า",no_tax_found:"ไม่พบภาษี!",four_zero_four:"404",you_got_lost:"วู้๊ปส์!คุณหลงทาง!",go_home:"กลับบ้าน",test_mail_conf:"ทดสอบการตั้งค่าคอนฟิกจดหมาย",send_mail_successfully:"จดหมายที่ส่งเรียบร้อยแล้ว",setting_updated:"การตั้งค่าที่อัปเดตเรียบร้อยแล้ว",select_state:"เลือกสถานะ",select_country:"เลือกประเทศ",select_city:"เลือกจังหวัด",street_1:"ที่อยู่บรรทัด 1",street_2:"ที่อยู่บรรทัด 2",action_failed:"การดำเนินการล้มเหลว",retry:"ลองใหม่",choose_note:"เลือกหมายเหตุ",no_note_found:"ไม่พบหมายเหตุ",insert_note:"แทรกหมายเหตุ",copied_pdf_url_clipboard:"คัดลอกไฟล์ PDF URL ไปยังคลิปบอร์ด!",copied_url_clipboard:"คัดลอกURL ไปยังคลิปบอร์ด!",docs:"เอกสาร",do_you_wish_to_continue:"คุณต้องการที่จะดำเนินการต่อ?",note:"หมายเหตุ",pay_invoice:"ชำระใบวางบิล",login_successfully:"เข้าสู่ระบบเรียบร้อยแล้ว!",logged_out_successfully:"ออกจากระบบเรียบร้อยแล้ว"},Bse={select_year:"เลือกปี",cards:{due_amount:"จำนวนเงินค้างชำระ",customers:"ลูกค้า",invoices:"ใบวางบิล",estimates:"ใบเสนอราคา",payments:"การชำระเงิน"},chart_info:{total_sales:"การขาย",total_receipts:"ใบเสร็จรับเงิน",total_expense:"ค่าใช้จ่าย",net_income:"รายได้สุทธิ",year:"เลือกปี"},monthly_chart:{title:"การขายและค่าใช้จ่าย"},recent_invoices_card:{title:"ใบวางบิลครบกำหนด",due_on:"ครบกำหนดเปิด",customer:"ลูกค้า",amount_due:"จำนวนเงินค้างชำระ",actions:"จัดการ",view_all:"ดูทั้งหมด"},recent_estimate_card:{title:"ใบเสนอราคาล่าสุด",date:"วันที่",customer:"ลูกค้า",amount_due:"จำนวนเงินค้างชำระ",actions:"จัดการ",view_all:"ดูทั้งหมด"}},Use={name:"ชื่อ",description:"คำอธิบาย",percent:"เปอร์เซ็นต์",compound_tax:"ภาษีมูลค่าเพิ่ม"},Vse={search:"ค้นหา...",customers:"ลูกค้า",users:"ผู้ใช้งาน",no_results_found:"ไม่พบผลลัพธ์"},qse={label:"บริษัทสลับ",no_results_found:"ไม่พบผลลัพธ์",add_new_company:"เพิ่มบริษัทใหม่",new_company:"บริษัทใหม่",created_message:"บริษัทสร้างสำเร็จ"},Hse={today:"วันนี้",this_week:"สัปดาห์นี้",this_month:"เดือนนี้",this_quarter:"ไตรมาสนี้",this_year:"ปีนี้",previous_week:"สัปดาห์ก่อนหน้า",previous_month:"เดือนก่อนหน้า",previous_quarter:"ไตรมาสก่อนหน้า",previous_year:"ปีที่แล้ว",custom:"กำหนดเอง"},Wse={title:"ลูกค้า",prefix:"Prefix",add_customer:"เพิ่มลูกค้า",contacts_list:"รายชื่อลูกค้า",name:"ชื่อ",mail:"จดหมาย | อีเมล",statement:"คำแถลง",display_name:"ชื่อที่แสดง",primary_contact_name:"ชื่อผู้ติดต่อหลัก",contact_name:"ชื่อผู้ติดต่อ",amount_due:"จำนวนเงินค้างชำระ",email:"อีเมล์",address:"ที่อยู่",phone:"โทรศัพท์",website:"เว็บไซต์",overview:"ภาพรวม",invoice_prefix:"Prefix ใบวางบิล",estimate_prefix:"Prefix ใบเสนอราคา",payment_prefix:"Prefix การชำระเงิน",enable_portal:"เปิดใช้พอร์ทัล",country:"ประเทศ",state:"เขต/อำเภอ",city:"จังหวัด",zip_code:"รหัสไปรษณีย์",added_on:"วันที่สร้าง",action:"จัดการ",password:"รหัสผ่าน",confirm_password:"ยืนยันรหัสผ่าน",street_number:"หมายเลขถนน",primary_currency:"สกุลเงินหลัก",description:"คำอธิบาย",add_new_customer:"เพิ่มลูกค้าใหม่",save_customer:"บันทึก",update_customer:"อัปเดต",customer:"ลูกค้า | ลูกค้า",new_customer:"ลูกค้าใหม่",edit_customer:"แก้ไขลูกค้า",basic_info:"ข้อมูลพื้นฐาน",portal_access:"การเข้าถึงพอร์ทัล",portal_access_text:"คุณต้องการอนุญาตให้ลูกค้ารายนี้เข้าสู่ระบบพอร์ทัลลูกค้าหรือไม่?",portal_access_url:"URL เข้าสู่ระบบพอร์ทัลลูกค้า",portal_access_url_help:"กรุณาคัดลอก และส่งต่อ URL ที่ระบุข้างต้นให้กับลูกค้าของคุณเพื่อให้การเข้าถึง",billing_address:"ที่อยู่เรียกเก็บเงิน",shipping_address:"ที่อยู่สำหรับจัดส่ง",copy_billing_address:"คัดลอกจากที่อยู่เรียกเก็บเงิน",no_customers:"ยังไม่มีลูกค้า!",no_customers_found:"ไม่พบลูกค้า!",no_contact:"ไม่มีผู้ติดต่อ",no_contact_name:"ไม่มีชื่อผู้ติดต่อ",list_of_customers:"ส่วนนี้จะประกอบด้วยรายชื่อลูกค้า",primary_display_name:"ชื่อที่แสดงหลัก",select_currency:"เลือกสกุลเงิน",select_a_customer:"เลือกลูกค้า",type_or_click:"พิมพ์หรือคลิกเพื่อเลือก",new_transaction:"ธุรกรรมใหม่",no_matching_customers:"ไม่มีลูกค้าที่ตรงกัน!",phone_number:"หมายเลขโทรศัพท์",create_date:"สร้างวันที่",confirm_delete:"คุณจะไม่สามารถกู้คืนลูกค้ารายนี้และใบวางบิลใบเสนอราคาและการชำระเงินที่เกี่ยวข้องทั้งหมด | คุณจะไม่สามารถกู้คืนลูกค้าเหล่านี้และใบวางบิลใบเสนอราคาและการชำระเงินที่เกี่ยวข้องทั้งหมด",created_message:"ลูกค้าสร้างเสร็จเรียบร้อยแล้ว",updated_message:"ลูกค้าได้รับการอัพเดตเรียบร้อยแล้ว",address_updated_message:"ข้อมูลที่อยู่ได้รับการอัปเดตเรียบร้อยแล้ว",deleted_message:"ลบลูกค้าเรียบร้อยแล้ว | ลบลูกค้าเรียบร้อยแล้ว",edit_currency_not_allowed:"ไม่สามารถเปลี่ยนสกุลเงินเมื่อสร้างธุรกรรมแล้ว"},Kse={title:"บริการ",items_list:"รายการบริการ",name:"ชื่อ",unit:"หน่วย",description:"คำอธิบาย",added_on:"วันที่สร้าง",price:"ราคา",date_of_creation:"วันที่สร้าง",not_selected:"ยังไม่มีบริการที่เลือก",action:"จัดการ",add_item:"เพิ่มบริการ",save_item:"บันทึก",update_item:"อัปเดต",item:"บริการ | บริการ",add_new_item:"เพิ่มบริการใหม่",new_item:"บริการใหม่",edit_item:"แก้ไขบริการ",no_items:"ยังไม่มีสินค้า!",list_of_items:"ส่วนนี้จะประกอบด้วยรายการของบริการ",select_a_unit:"เลือกหน่วย",taxes:"ภาษี",item_attached_message:"ไม่สามารถลบบริการที่ใช้อยู่แล้ว",confirm_delete:"คุณจะไม่สามารถกู้คืนไอเท็มนี้ได้ | คุณจะไม่สามารถกู้คืนไอเท็มเหล่านี้ได้",created_message:"สร้างบริการสำเร็จแล้ว",updated_message:"อัพเดตบริการเรียบร้อยแล้ว",deleted_message:"บริการที่ถูกลบเรียบร้อยแล้ว | บริการที่ถูกลบเรียบร้อยแล้ว"},Yse={title:"ใบเสนอราคา",accept_estimate:"ยอมรับใบเสนอราคา",reject_estimate:"ปฏิเสธใบเสนอราคา",estimate:"ใบเสนอราคา | ใบเสนอราคา",estimates_list:"รายการใบเสนอราคา",days:"{days} วัน",months:"{months} เดือน",years:"{years} ปี",all:"ทั้งหมด",paid:"จ่ายแล้ว",unpaid:"ยังไม่ได้ชำระ",customer:"ลูกค้า",ref_no:"โทษไม่.",number:"เลขที่",amount_due:"จำนวนเงินค้างชำระ",partially_paid:"ชำระเงินบางส่วน",total:"จำนวนเงินสุทธิ",discount:"ส่วนลด",sub_total:"รวมเงิน",estimate_number:"เลขที่ใบเสนอราคา",ref_number:"หมายเลขอ้างอิง",contact:"ติดต่อเรา",add_item:"เพิ่มรายการ",date:"วันที่",due_date:"วันครบกำหนด",expiry_date:"วันหมดอายุ",status:"สถานะ",add_tax:"เพิ่มภาษี",amount:"จำนวนเงิน (บาท)",action:"จัดการ",notes:"หมายเหตุ",tax:"ภาษี",estimate_template:"แม่แบบ",convert_to_invoice:"แปลงเป็นใบวางบิล",mark_as_sent:"ทำเครื่องหมายว่าส่งแล้ว",send_estimate:"ส่งใบเสนอราคา",resend_estimate:"ส่งใบเสนอราคา",record_payment:"บันทึกการชำระเงิน",add_estimate:"เพิ่มค่าใบเสนอราคา",save_estimate:"บันทึกใบเสนอราคา",confirm_conversion:"ใบเสนอราคานี้จะใช้ในการสร้างใบวางบิลใหม่",conversion_message:"ใบวางบิลที่สร้างเสร็จสมบูรณ์",confirm_send_estimate:"ใบเสนอราคานี้จะถูกส่งผ่านทางอีเมลถึงลูกค้า",confirm_mark_as_sent:"ใบเสนอราคานี้จะถูกทำเครื่องหมายว่าส่ง",confirm_mark_as_accepted:"ใบเสนอราคานี้จะถูกทำเครื่องหมายว่าเป็นที่ยอมรับ",confirm_mark_as_rejected:"ใบเสนอราคานี้จะถูกทำเครื่องหมายว่าปฏิเสธ",no_matching_estimates:"ไม่มีใบเสนอราคาที่ตรงกัน!",mark_as_sent_successfully:"ใบเสนอราคาที่ทำเครื่องหมายว่าส่งเรียบร้อยแล้ว",send_estimate_successfully:"ใบเสนอราคาส่งเรียบร้อยแล้ว",errors:{required:"ต้องกรอกข้อมูล"},accepted:"ได้รับการยอมรับ",rejected:"ถูกปฏิเสธ",expired:"หมดอายุ",sent:"ส่งแล้ว",draft:"แบบร่าง",viewed:"ดูแล้ว",declined:"ปฏิเสธ",new_estimate:"ใบเสนอราคาใหม่",add_new_estimate:"เพิ่มใบเสนอราคาใหม่",update_Estimate:"อัพเดตใบเสนอราคา",edit_estimate:"แก้ไขใบเสนอราคา",items:"สิ่งของ",Estimate:"ใบเสนอราคา | ใบเสนอราคา",add_new_tax:"เพิ่มภาษีใหม่",no_estimates:"ยังไม่มีใบเสนอราคา!",list_of_estimates:"ส่วนนี้จะประกอบด้วยรายการใบเสนอราคา",mark_as_rejected:"ทำเครื่องหมายว่าถูกปฏิเสธ",mark_as_accepted:"ทำเครื่องหมายว่าเป็นที่ยอมรับ",marked_as_accepted_message:"ใบเสนอราคาที่ทำเครื่องหมายเป็นที่ยอมรับ",marked_as_rejected_message:"ใบเสนอราคาที่ทำเครื่องหมายว่าถูกปฏิเสธ",confirm_delete:"คุณจะไม่สามารถกู้คืนค่าประมาณนี้ได้ | คุณจะไม่สามารถกู้คืนค่าประมาณเหล่านี้ได้",created_message:"ใบเสนอราคาสร้างเสร็จเรียบร้อยแล้ว",updated_message:"อัพเดตใบเสนอราคาเรียบร้อยแล้ว",deleted_message:"ใบเสนอราคาลบเรียบร้อยแล้ว | ใบเสนอราคาลบเรียบร้อยแล้ว",something_went_wrong:"มีบางอย่างผิดพลาด",item:{title:"ชื่อรายการ",description:"คำอธิบาย",quantity:"จำนวน",price:"ราคา",discount:"ส่วนลด",total:"จำนวนเงินสุทธิ",total_discount:"ส่วนลดทั้งหมด",sub_total:"รวมเงิน",tax:"ภาษี",amount:"จำนวนเงิน (บาท)",select_an_item:"พิมพ์หรือคลิกเพื่อเลือกรายการ",type_item_description:"คำอธิบาย (ไม่จำเป็น)"}},Zse={title:"ใบวางบิล",download:"ดาวน์โหลด",pay_invoice:"ชำระใบวางบิล",invoices_list:"รายการใบวางบิล",invoice_information:"ข้อมูลใบวางบิล",days:"{days} วัน",months:"{months} เดือน",years:"{years} ปี",all:"ทั้งหมด",paid:"จ่ายแล้ว",unpaid:"ยังไม่ได้ชำระ",viewed:"ดูแล้ว",overdue:"ค้างชำระ",completed:"เสร็จสมบูรณ์",customer:"ลูกค้า",paid_status:"สถานะการชำระเงิน",ref_no:"โทษไม่.",number:"เลขที่",amount_due:"จำนวนเงินค้างชำระ",partially_paid:"ชำระเงินบางส่วน",total:"จำนวนเงินสุทธิ",discount:"ส่วนลด",sub_total:"รวมเงิน",invoice:"ใบวางบิล | ใบวางบิล",invoice_number:"เลขที่ใบวางบิล",ref_number:"หมายเลขอ้างอิง",contact:"ติดต่อเรา",add_item:"เพิ่มรายการ",date:"วันที่",due_date:"วันครบกำหนด",status:"สถานะ",add_tax:"เพิ่มภาษี",amount:"จำนวนเงิน (บาท)",action:"จัดการ",notes:"หมายเหตุ",view:"ดู",send_invoice:"ส่งใบวางบิล",resend_invoice:"ส่งใบวางบิลอีกครั้ง",invoice_template:"แม่แบบใบวางบิล",conversion_message:"ใบวางบิลที่โคลนเสร็จสมบูรณ์",template:"เลือกเทมเพลต",mark_as_sent:"ทำเครื่องหมายว่าส่งแล้ว",confirm_send_invoice:"ใบวางบิลนี้จะถูกส่งทางอีเมลถึงลูกค้า",invoice_mark_as_sent:"ใบวางบิลนี้จะถูกทำเครื่องหมายว่าส่ง",confirm_mark_as_accepted:"ใบวางบิลนี้จะถูกทำเครื่องหมายเป็น Accepted",confirm_mark_as_rejected:"ใบวางบิลนี้จะถูกทำเครื่องหมายว่าถูกปฏิเสธ",confirm_send:"ใบวางบิลนี้จะถูกส่งทางอีเมลถึงลูกค้า",invoice_date:"วันที่ใบวางบิล",record_payment:"บันทึกการชำระเงิน",add_new_invoice:"เพิ่มใบวางบิลใหม่",update_expense:"อัพเดตค่าใช้จ่าย",edit_invoice:"แก้ไขใบวางบิล",new_invoice:"ใบวางบิลใหม่",save_invoice:"บันทึกใบวางบิล",update_invoice:"อัพเดตใบวางบิล",add_new_tax:"เพิ่มภาษีใหม่",no_invoices:"ยังไม่มีใบวางบิล",mark_as_rejected:"ทำเครื่องหมายว่าถูกปฏิเสธ",mark_as_accepted:"ทำเครื่องหมายว่าเป็นที่ยอมรับ",list_of_invoices:"ส่วนนี้จะประกอบด้วยรายการของใบวางบิล",select_invoice:"เลือกใบวางบิล",no_matching_invoices:"ไม่มีใบวางบิลที่ตรงกัน!",mark_as_sent_successfully:"ใบวางบิลที่ทำเครื่องหมายว่าส่งเรียบร้อยแล้ว",invoice_sent_successfully:"ใบวางบิลที่ส่งเรียบร้อยแล้ว",cloned_successfully:"ทำสำเนาใบวางบิลเสร็จเรียบร้อยแล้ว",clone_invoice:"ทำสำเนาใบวางบิล",confirm_clone:"ใบวางบิลนี้จะถูกคัดลอกลงในใบวางบิลใหม่",item:{title:"ชื่อรายการ",description:"คำอธิบาย",quantity:"จำนวน",price:"ราคา",discount:"ส่วนลด",total:"จำนวนเงินสุทธิ",total_discount:"ส่วนลดทั้งหมด",sub_total:"รวมเงิน",tax:"ภาษี",amount:"จำนวนเงิน (บาท)",select_an_item:"พิมพ์หรือคลิกเพื่อเลือกรายการ",type_item_description:"คำอธิบาย (ไม่จำเป็น)"},payment_attached_message:"หนึ่งในใบวางบิลที่เลือกมีการชำระเงินที่แนบมากับใบวางบิลแล้วตรวจสอบให้แน่ใจว่าได้ลบการชำระเงินที่แนบมาก่อนเพื่อดำเนินการต่อด้วยการลบ",confirm_delete:"คุณจะไม่สามารถกู้คืนใบวางบิลนี้ได้ | คุณจะไม่สามารถกู้คืนใบวางบิลเหล่านี้ได้",created_message:"สร้างใบวางบิลเรียบร้อยแล้ว",updated_message:"อัพเดตใบวางบิลเรียบร้อยแล้ว",deleted_message:"ลบใบวางบิลเรียบร้อยแล้ว | ลบใบวางบิลเรียบร้อยแล้ว",marked_as_sent_message:"ใบวางบิลที่ทำเครื่องหมายว่าส่งเรียบร้อยแล้ว",something_went_wrong:"มีบางอย่างผิดพลาด",invalid_due_amount_message:"จำนวนใบวางบิลทั้งหมดต้องไม่น้อยกว่าจำนวนเงินที่ชำระทั้งหมดสำหรับใบวางบิลนี้โปรดอัปเดตใบวางบิลหรือลบการชำระเงินที่เกี่ยวข้องเพื่อดำเนินการต่อ"},Gse={title:"ใบวางบิลประจำ",invoices_list:"รายการใบวางบิลประจำ",days:"{days} วัน",months:"{months} เดือน",years:"{years} ปี",all:"ทั้งหมด",paid:"จ่ายแล้ว",unpaid:"ยังไม่ได้ชำระ",viewed:"ดูแล้ว",overdue:"ค้างชำระ",active:"แอคทีฟ",completed:"เสร็จสมบูรณ์",customer:"ลูกค้า",paid_status:"สถานะการชำระเงิน",ref_no:"โทษไม่.",number:"เลขที่",amount_due:"จำนวนเงินค้างชำระ",partially_paid:"ชำระเงินบางส่วน",total:"จำนวนเงินสุทธิ",discount:"ส่วนลด",sub_total:"รวมเงิน",invoice:"ใบวางบิลประจำ | ใบวางบิลประจำ",invoice_number:"เลขที่ใบวางบิลประจำ",next_invoice_date:"วันที่ใบวางบิลถัดไป",ref_number:"หมายเลขอ้างอิง",contact:"ติดต่อเรา",add_item:"เพิ่มรายการ",date:"วันที่",limit_by:"กำหนดรอบบิลโดย",limit_date:"วันที่สิ้นสุด",limit_count:"จำกัดจำนวน",count:"จำนวนครั้ง",status:"สถานะ",select_a_status:"เลือกสถานะ",working:"การทำงาน",on_hold:"พักไว้",complete:"เสร็จสมบูรณ์",add_tax:"เพิ่มภาษี",amount:"จำนวนเงิน (บาท)",action:"จัดการ",notes:"หมายเหตุ",view:"ดู",basic_info:"ข้อมูลพื้นฐาน",send_invoice:"ส่งใบวางบิลประจำ",auto_send:"ส่งอัตโนมัติ",resend_invoice:"ส่งใบวางบิลประจำอีกครั้ง",invoice_template:"แม่แบบใบวางบิลประจำ",conversion_message:"ทำสำเนาใบวางบิลประจำเสร็จเรียบร้อย",template:"แม่แบบ",mark_as_sent:"ทำเครื่องหมายว่าส่งแล้ว",confirm_send_invoice:"ใบวางบิลประจำนี้จะถูกส่งทางอีเมลถึงลูกค้า",invoice_mark_as_sent:"ใบวางบิลประจำนี้จะถูกทำเครื่องหมายเป็นส่งแล้ว",confirm_send:"ใบวางบิลประจำนี้จะถูกส่งทางอีเมลถึงลูกค้า",starts_at:"วันที่เริ่มต้น",due_date:"วันที่ครบกำหนดใบวางบิล",record_payment:"บันทึกการชำระเงิน",add_new_invoice:"เพิ่มใบวางบิลประจำใหม่",update_expense:"อัพเดตค่าใช้จ่าย",edit_invoice:"แก้ไขใบวางบิลประจำ",new_invoice:"ใบวางบิลประจำใหม่",send_automatically:"ส่งอัตโนมัติ",send_automatically_desc:"เปิดใช้งานนี้, หากคุณต้องการส่งใบวางบิลโดยอัตโนมัติให้กับลูกค้าเมื่อสร้างขึ้น.",save_invoice:"บันทึกใบวางบิลประจำ",update_invoice:"อัพเดตใบวางบิลประจำ",add_new_tax:"เพิ่มภาษีใหม่",no_invoices:"ยังไม่มีใบวางบิลประจำ!",mark_as_rejected:"ทำเครื่องหมายว่าถูกปฏิเสธ",mark_as_accepted:"ทำเครื่องหมายว่าเป็นที่ยอมรับ",list_of_invoices:"ส่วนนี้จะประกอบด้วยรายการของใบวางบิลประจำ",select_invoice:"เลือกใบวางบิล",no_matching_invoices:"ไม่มีใบวางบิลประจำที่ตรงกัน!",mark_as_sent_successfully:"ใบวางบิลประจำทำเครื่องหมายว่าส่งเรียบร้อยแล้ว",invoice_sent_successfully:"ใบวางบิลประจำส่งเรียบร้อยแล้ว",cloned_successfully:"ทำสำเนาใบวางบิลประจำเสร็จเรียบร้อยแล้ว",clone_invoice:"ทำสำเนาใบวางบิลประจำ",confirm_clone:"ใบวางบิลประจำนี้จะถูกคัดลอกลงในใบวางบิลประจำใหม่",item:{title:"ชื่อรายการ",description:"คำอธิบาย",quantity:"จำนวน",price:"ราคา",discount:"ส่วนลด",total:"จำนวนเงินสุทธิ",total_discount:"ส่วนลดทั้งหมด",sub_total:"รวมเงิน",tax:"ภาษี",amount:"จำนวนเงิน (บาท)",select_an_item:"พิมพ์หรือคลิกเพื่อเลือกรายการ",type_item_description:"คำอธิบาย (ไม่จำเป็น)"},frequency:{title:"ระยะเวลา",select_frequency:"กำหนดระยะเวลารอบบิล",minute:"นาที",hour:"ชั่วโมง",day_month:"วันของเดือน",month:"เดือน",day_week:"วันในสัปดาห์"},confirm_delete:"คุณจะไม่สามารถกู้คืนใบวางบิลนี้ได้ | คุณจะไม่สามารถกู้คืนใบวางบิลเหล่านี้ได้",created_message:"สร้างใบวางบิลประจำเรียบร้อยแล้ว",updated_message:"อัพเดตใบวางบิลประจำเรียบร้อยแล้ว",deleted_message:"ลบใบวางบิลประจำเรียบร้อยแล้ว | ลบใบวางบิลประจำเรียบร้อยแล้ว",marked_as_sent_message:"ใบวางบิลประจำทำเครื่องหมายว่าส่งเรียบร้อยแล้ว",user_email_does_not_exist:"ไม่มีอีเมลของผู้ใช้",something_went_wrong:"มีบางอย่างผิดพลาด",invalid_due_amount_message:"จำนวนใบวางบิลประจำทั้งหมดต้องไม่น้อยกว่าจำนวนเงินที่จ่ายทั้งหมดสำหรับใบวางบิลประจำนี้โปรดอัปเดตใบวางบิลหรือลบการชำระเงินที่เกี่ยวข้องเพื่อดำเนินการต่อ"},Qse={title:"การชำระเงิน",payments_list:"รายการชำระเงิน",record_payment:"บันทึกการชำระเงิน",customer:"ลูกค้า",date:"วันที่",amount:"จำนวนเงิน (บาท)",action:"จัดการ",payment_number:"เลขที่การชำระเงิน",payment_mode:"วิธีการชำระเงิน",invoice:"ใบวางบิล",note:"หมายเหตุ",add_payment:"เพิ่มการชำระเงิน",new_payment:"การชำระเงินใหม่",edit_payment:"แก้ไขการชำระเงิน",view_payment:"ดูการชำระเงิน",add_new_payment:"เพิ่มการชำระเงินใหม่",send_payment_receipt:"ส่งใบเสร็จรับเงิน",send_payment:"ส่งการชำระเงิน",save_payment:"บันทึกการชำระเงิน",update_payment:"อัปเดตการชำระเงิน",payment:"การชำระเงิน | การชำระเงิน",no_payments:"ยังไม่มีการชำระเงิน!",not_selected:"ไม่ได้เลือก",no_invoice:"ไม่มีใบวางบิล",no_matching_payments:"ไม่มีการชำระเงินที่ตรงกัน!",list_of_payments:"ส่วนนี้จะประกอบด้วยรายการของการชำระเงิน.",select_payment_mode:"เลือกวิธีการชำระเงิน",confirm_mark_as_sent:"ใบเสนอราคานี้จะถูกทำเครื่องหมายว่าส่ง",confirm_send_payment:"การชำระเงินนี้จะถูกส่งทางอีเมลถึงลูกค้า",send_payment_successfully:"การชำระเงินส่งเรียบร้อยแล้ว",something_went_wrong:"มีบางอย่างผิดพลาด",confirm_delete:"คุณจะไม่สามารถกู้คืนการชำระเงินนี้ได้ | คุณจะไม่สามารถกู้คืนการชำระเงินเหล่านี้ได้",created_message:"สร้างการชำระเงินเรียบร้อยแล้ว",updated_message:"อัพเดตการชำระเงินเรียบร้อยแล้ว",deleted_message:"การชำระเงินถูกลบเรียบร้อยแล้ว | การชำระเงินถูกลบเรียบร้อยแล้ว",invalid_amount_message:"จำนวนเงินที่ชำระไม่ถูกต้อง"},Jse={title:"ค่าใช้จ่าย",expenses_list:"รายการค่าใช้จ่าย",select_a_customer:"เลือกลูกค้า",expense_title:"ชื่อเรื่อง",customer:"ลูกค้า",currency:"สกุลเงิน",contact:"ติดต่อเรา",category:"ประเภท",from_date:"จากวันที่",to_date:"ถึงวันที่",expense_date:"วันที่",description:"คำอธิบาย",receipt:"ใบเสร็จ",amount:"จำนวนเงิน (บาท)",action:"จัดการ",not_selected:"ไม่ได้เลือก",note:"หมายเหตุ",category_id:"รหัสหมวดหมู่",date:"วันที่",add_expense:"เพิ่มค่าใช้จ่าย",add_new_expense:"เพิ่มค่าใช้จ่ายใหม่",save_expense:"ประหยัดค่าใช้จ่าย",update_expense:"อัพเดตค่าใช้จ่าย",download_receipt:"ดาวน์โหลดใบเสร็จรับเงิน",edit_expense:"แก้ไขค่าใช้จ่าย",new_expense:"ค่าใช้จ่ายใหม่",expense:"ค่าใช้จ่าย | ค่าใช้จ่าย",no_expenses:"ยังไม่มีค่าใช้จ่าย!",list_of_expenses:"ส่วนนี้จะประกอบด้วยรายการค่าใช้จ่าย",confirm_delete:"คุณจะไม่สามารถกู้คืนค่าใช้จ่ายนี้ได้ | คุณจะไม่สามารถกู้คืนค่าใช้จ่ายเหล่านี้ได้",created_message:"ค่าใช้จ่ายที่สร้างเสร็จเรียบร้อยแล้ว",updated_message:"อัพเดตค่าใช้จ่ายเรียบร้อยแล้ว",deleted_message:"ลบค่าใช้จ่ายเรียบร้อยแล้ว | ลบค่าใช้จ่ายเรียบร้อยแล้ว",categories:{categories_list:"รายการหมวดหมู่",title:"ชื่อเรื่อง",name:"ชื่อ",description:"คำอธิบาย",amount:"จำนวนเงิน (บาท)",actions:"จัดการ",add_category:"เพิ่มหมวดหมู่",new_category:"หมวดหมู่ใหม่",category:"หมวดหมู่ | หมวดหมู่",select_a_category:"เลือกประเภท"}},Xse={email:"อีเมล์",password:"รหัสผ่าน",forgot_password:"ลืมรหัสผ่าน",or_signIn_with:"หรือลงชื่อเข้าใช้ด้วย",login:"ล็อกอิน",register:"สมัครสมาชิก",reset_password:"รีเซ็ตรหัสผ่าน",password_reset_successfully:"รีเซ็ตรหัสผ่านเรียบร้อยแล้ว",enter_email:"ใส่อีเมล",enter_password:"ป้อนรหัสผ่าน",retype_password:"พิมพ์รหัสผ่านใหม่"},ele={buy_now:"ซื้อเดี๋ยวนี้",install:"ติดตั้ง",price:"ราคา",download_zip_file:"ดาวน์โหลดไฟล์ ZIP",unzipping_package:"แตกไฟล์แพ็คเกจ",copying_files:"การคัดลอกแฟ้ม",deleting_files:"การลบแฟ้มที่ไม่ได้ใช้",completing_installation:"การติดตั้งเสร็จสมบูรณ์",update_failed:"การอัพเดทล้มเหลว",install_success:"โมดูลได้รับการติดตั้งเรียบร้อยแล้ว!",customer_reviews:"รีวิว",license:"ใบอนุญาต",faq:"คำถามที่พบบ่อย",monthly:"รายเดือน",yearly:"รายปี",updated:"อัพเดตแล้ว",version:"เวอร์ชั่น",disable:"ปิดการใช้งาน",module_disabled:"โมดูลถูกปิดใช้งาน",enable:"เปิดใช้งาน",module_enabled:"โมดูลที่เปิดใช้งานแล้ว",update_to:"อัปเดตเป็น",module_updated:"อัพเดตโมดูลเรียบร้อยแล้ว!",title:"โมดูล",module:"โมดูล | โมดูล",api_token:"โทเค็น API",invalid_api_token:"โทเค็น API ไม่ถูกต้อง",other_modules:"โมดูลอื่น ๆ",view_all:"ดูทั้งหมด",no_reviews_found:"ยังไม่มีรีวิวสำหรับโมดุลนี้!",module_not_purchased:"ไม่ได้ซื้อโมดูล",module_not_found:"ไม่พบโมดูล",version_not_supported:"รุ่นขั้นต่ำที่จำเป็นสำหรับโมดูลนี้ไม่ตรงกันโปรดอัปเกรดแอพของคุณเป็นเวอร์ชั่น: {version} เพื่อดำเนินการต่อ",last_updated:"อัปเดตล่าสุดเมื่อ",connect_installation:"เชื่อมต่อการติดตั้งของคุณ",api_token_description:"ล็อกอินเข้าสู่ {url} และเชื่อมต่อการติดตั้งนี้โดยป้อน API Tokenโมดุลที่คุณซื้อจะแสดงขึ้นที่นี่หลังจากที่การเชื่อมต่อได้รับการจัดตั้งขึ้น",view_module:"ดูโมดูล",update_available:"อัปเดตพร้อมใช้งาน",purchased:"ซื้อแล้ว",installed:"ติดตั้งแล้ว",no_modules_installed:"ยังไม่มีการติดตั้งโมดูล!",disable_warning:"การตั้งค่าทั้งหมดสำหรับเรื่องนี้จะถูกย้อนกลับ",what_you_get:"สิ่งที่คุณได้รับ"},tle={title:"ผู้ใช้งาน",users_list:"รายชื่อผู้ใช้",name:"ชื่อ",description:"คำอธิบาย",added_on:"วันที่สร้าง",date_of_creation:"วันที่สร้าง",action:"จัดการ",add_user:"เพิ่มผู้ใช้",save_user:"บันทึกผู้ใช้",update_user:"อัพเดตผู้ใช้",user:"ผู้ใช้ | ผู้ใช้",add_new_user:"เพิ่มผู้ใช้ใหม่",new_user:"ผู้ใช้ใหม่",edit_user:"แก้ไขผู้ใช้",no_users:"ยังไม่มีผู้ใช้!",list_of_users:"ส่วนนี้จะประกอบด้วยรายชื่อของผู้ใช้",email:"อีเมล์",phone:"โทรศัพท์",password:"รหัสผ่าน",user_attached_message:"ไม่สามารถลบรายการที่ใช้อยู่แล้ว",confirm_delete:"คุณจะไม่สามารถกู้คืนผู้ใช้นี้ได้ | คุณจะไม่สามารถกู้คืนผู้ใช้เหล่านี้ได้",created_message:"ผู้ใช้สร้างเสร็จเรียบร้อยแล้ว",updated_message:"อัพเดตผู้ใช้เรียบร้อยแล้ว",deleted_message:"ผู้ใช้ลบเรียบร้อยแล้ว | ผู้ใช้ลบเรียบร้อยแล้ว",select_company_role:"เลือกบทบาทสำหรับ {company}",companies:"บริษัท"},ale={title:"รายงาน",from_date:"จากวันที่",to_date:"ถึงวันที่",status:"สถานะ",paid:"จ่ายแล้ว",unpaid:"ยังไม่ได้ชำระ",download_pdf:"ดาวน์โหลดไฟล์ PDF",view_pdf:"ดูไฟล์ PDF",update_report:"รายงานการอัพเดต",report:"รายงาน | รายงาน",profit_loss:{profit_loss:"กำไรขาดทุน",to_date:"ถึงวันที่",from_date:"จากวันที่",date_range:"เลือกช่วงวันที่"},sales:{sales:"การขาย",date_range:"เลือกช่วงวันที่",to_date:"ถึงวันที่",from_date:"จากวันที่",report_type:"ประเภทรายงาน"},taxes:{taxes:"ภาษี",to_date:"ถึงวันที่",from_date:"จากวันที่",date_range:"เลือกช่วงวันที่"},errors:{required:"ต้องกรอกข้อมูล"},invoices:{invoice:"ใบวางบิล",invoice_date:"วันที่ใบวางบิล",due_date:"วันครบกำหนด",amount:"จำนวนเงิน (บาท)",contact_name:"ชื่อผู้ติดต่อ",status:"สถานะ"},estimates:{estimate:"ใบเสนอราคา",estimate_date:"วันที่ใบเสนอราคา",due_date:"วันครบกำหนด",estimate_number:"เลขที่ใบเสนอราคา",ref_number:"หมายเลขอ้างอิง",amount:"จำนวนเงิน (บาท)",contact_name:"ชื่อผู้ติดต่อ",status:"สถานะ"},expenses:{expenses:"ค่าใช้จ่าย",category:"ประเภท",date:"วันที่",amount:"จำนวนเงิน (บาท)",to_date:"ถึงวันที่",from_date:"จากวันที่",date_range:"เลือกช่วงวันที่"}},nle={menu_title:{account_settings:"การตั้งค่าบัญชี",company_information:"ข้อมูลบริษัท",customization:"การปรับแต่ง",preferences:"การกำหนดค่า",notifications:"การแจ้งเตือน",tax_types:"ประเภทภาษี",expense_category:"ประเภทค่าใช้จ่าย",update_app:"อัพเดทแอพ",backup:"การสำรองข้อมูล",file_disk:"ดิสก์แฟ้ม",custom_fields:"เขตข้อมูลที่กำหนดเอง",payment_modes:"วิธีการชำระเงิน",notes:"หมายเหตุ",exchange_rate:"อัตราแลกเปลี่ยน",address_information:"ข้อมูลที่อยู่"},address_information:{section_description:" คุณสามารถอัปเดตข้อมูลที่อยู่ของคุณโดยใช้แบบฟอร์มด้านล่าง"},title:"การตั้งค่า",setting:"การตั้งค่า | การตั้งค่า",general:"ทั่วไป",language:"ภาษา",primary_currency:"สกุลเงินหลัก",timezone:"เขตเวลา",date_format:"รูปแบบวันที่",currencies:{title:"สกุลเงิน",currency:"สกุลเงิน | สกุลเงิน",currencies_list:"รายการสกุลเงิน",select_currency:"เลือกสกุลเงิน",name:"ชื่อ",code:"รหัส",symbol:"สัญลักษณ์",precision:"ความแม่นยำ",thousand_separator:"พันคั่น",decimal_separator:"ตัวคั่นทศนิยม",position:"ตำแหน่ง",position_of_symbol:"ตำแหน่งสัญลักษณ์",right:"ขวา",left:"ซ้าย",action:"จัดการ",add_currency:"เพิ่มสกุลเงิน"},mail:{host:"โฮสต์จดหมาย",port:"พอร์ตเมล",driver:"โปรแกรมควบคุมจดหมาย",secret:"ความลับ",mailgun_secret:"ความลับปืนพกปืน",mailgun_domain:"โดเมน",mailgun_endpoint:"ปลายทาง Mailgun",ses_secret:"SES ซีเคร็ต",ses_key:"SES คีย์",password:"รหัสผ่านจดหมาย",username:"ชื่อผู้ใช้จดหมาย",mail_config:"การกำหนดค่าจดหมาย",from_name:"จากชื่อจดหมาย",from_mail:"จากที่อยู่อีเมล",encryption:"การเข้ารหัสจดหมาย",mail_config_desc:"ด้านล่างเป็นรูปแบบสำหรับการกำหนดค่าไดรเวอร์อีเมลสำหรับการส่งอีเมลจาก appนอกจากนี้คุณยังสามารถกำหนดค่าผู้ให้บริการของบุคคลที่สามเช่น Sendgrid, SES ฯลฯ"},pdf:{title:"การตั้งค่า PDF",footer_text:"ข้อความท้ายกระดาษ",pdf_layout:"รูปแบบไฟล์ PDF"},company_info:{company_info:"ข้อมูลบริษัท",company_name:"ชื่อบริษัท",company_logo:"โลโก้บริษัท",section_description:"ข้อมูลเกี่ยวกับ บริษัท ของคุณที่จะแสดงในใบวางบิล, ใบเสนอราคาและเอกสารอื่น ๆ",phone:"โทรศัพท์",country:"ประเทศ",state:"เขต/อำเภอ",city:"จังหวัด",address:"ที่อยู่",zip:"รหัสไปรษณีย์",save:"บันทึก",delete:"ลบ",updated_message:"ข้อมูลบริษัทได้รับการอัพเดตเรียบร้อยแล้ว",delete_company:"ลบบริษัท",delete_company_description:"เมื่อคุณลบ บริษัท ของคุณคุณจะสูญเสียข้อมูลและไฟล์ทั้งหมดที่เชื่อมโยงกับมันอย่างถาวร",are_you_absolutely_sure:"คุณแน่ใจจริงๆ?",delete_company_modal_desc:"การกระทำนี้ไม่สามารถยกเลิกได้การดำเนินการนี้จะลบ {company} และข้อมูลที่เกี่ยวข้องทั้งหมดอย่างถาวร",delete_company_modal_label:"กรุณาพิมพ์ {company} เพื่อยืนยัน"},custom_fields:{title:"เขตข้อมูลที่กำหนดเอง",section_description:"ปรับแต่งใบวางบิล ใบเสนอราคา และใบเสร็จรับเงิน ด้วยช่องของคุณเองตรวจสอบให้แน่ใจว่าได้ใช้ฟิลด์ที่เพิ่มด้านล่างในรูปแบบที่อยู่บนหน้าการตั้งค่าที่กำหนดเอง",add_custom_field:"เพิ่มฟิลด์ที่กำหนดเอง",edit_custom_field:"แก้ไขฟิลด์ที่กำหนดเอง",field_name:"ชื่อเขตข้อมูล",label:"ฉลาก",type:"ประเภท",name:"ชื่อ",slug:"บุ้ง",required:"จำเป็นต้องใช้",placeholder:"ตัวยึด",help_text:"ข้อความช่วยเหลือ",default_value:"ค่าดีฟอลต์",prefix:"Prefix",starting_number:"หมายเลขเริ่มต้น",model:"แบบจำลอง",help_text_description:"ป้อนข้อความบางส่วนเพื่อช่วยให้ผู้ใช้เข้าใจวัตถุประสงค์ของฟิลด์ที่กำหนดเองนี้",suffix:"คำต่อท้าย",yes:"ใช่",no:"ไม่",order:"การสั่งซื้อ",custom_field_confirm_delete:"คุณจะไม่สามารถกู้คืนฟิลด์ที่กำหนดเองนี้ได้",already_in_use:"ฟิลด์ที่กำหนดเองที่มีอยู่แล้วในการใช้งาน",deleted_message:"ลบฟิลด์ที่กำหนดเองเรียบร้อยแล้ว",options:"ตัวเลือก",add_option:"เพิ่มตัวเลือก",add_another_option:"เพิ่มตัวเลือกอื่น",sort_in_alphabetical_order:"เรียงลำดับตามตัวอักษร",add_options_in_bulk:"เพิ่มตัวเลือกเป็นกลุ่ม",use_predefined_options:"ใช้ตัวเลือกที่กำหนดไว้ล่วงหน้า",select_custom_date:"เลือกวันที่กำหนดเอง",select_relative_date:"เลือกวันที่สัมพัทธ์",ticked_by_default:"เลือกตามค่าเริ่มต้น",updated_message:"อัพเดตฟิลด์ที่กำหนดเองเรียบร้อยแล้ว",added_message:"ฟิลด์ที่กำหนดเองเพิ่มเรียบร้อยแล้ว",press_enter_to_add:"กด Enter เพื่อเพิ่มตัวเลือกใหม่",model_in_use:"ไม่สามารถอัพเดตรูปแบบสำหรับเขตข้อมูลที่มีอยู่แล้วในการใช้งาน",type_in_use:"ไม่สามารถอัพเดตชนิดสำหรับเขตข้อมูลที่มีอยู่แล้วในการใช้งาน"},customization:{customization:"การปรับแต่ง",updated_message:"อัพเดตข้อมูลบริษัทเรียบร้อยแล้ว",save:"บันทึก",insert_fields:"แทรกข้อมูล",learn_custom_format:"เรียนรู้วิธีใช้รูปแบบที่กำหนดเอง",add_new_component:"เพิ่มคอมโพเนนต์ใหม่",component:"ส่วนประกอบ",Parameter:"พารามิเตอร์",series:"Prefix",series_description:"การตั้งค่า Prefix แบบคงที่/Postfix เช่น 'INV' ทั่ว บริษัท ของคุณมันสนับสนุนความยาวตัวอักษรได้ถึง 6 ตัวอักษร",series_param_label:"Prefix",delimiter:"ตัวคั่น",delimiter_description:"ตัวอักษรตัวเดียวสำหรับการระบุเขตแดนระหว่าง 2 องค์ประกอบที่แยกต่างหากโดยค่าเริ่มต้นตั้งค่าเป็น -",delimiter_param_label:"ตัวคั่น",date_format:"รูปแบบวันที่",date_format_description:"วันที่และเวลาท้องถิ่นฟิลด์ซึ่งยอมรับพารามิเตอร์รูปแบบรูปแบบเริ่มต้น: 'Y' วาทกรรมในปีปัจจุบัน",date_format_param_label:"รูปแบบ",sequence:"ลำดับ",sequence_description:"ลำดับต่อเนื่องของเลขที่ทั่วทั้งบริษัทของคุณคุณสามารถระบุความยาวในพารามิเตอร์ที่กำหนด",sequence_param_label:"ความยาว",customer_series:"ซีรีย์ลูกค้า",customer_series_description:"ในการตั้งค่า Prefix /postfix ที่แตกต่างกันสำหรับลูกค้าแต่ละราย",customer_sequence:"ลำดับลูกค้า",customer_sequence_description:"ลำดับต่อเนื่องของเลขที่สำหรับแต่ละลูกค้าของคุณ",customer_sequence_param_label:"ความยาวลำดับ",random_sequence:"ลำดับสุ่ม",random_sequence_description:"สตริงตัวอักษรและเลขที่แบบสุ่มคุณสามารถระบุความยาวในพารามิเตอร์ที่กำหนด",random_sequence_param_label:"ความยาวลำดับ",invoices:{title:"ใบวางบิล",invoice_number_format:"รูปแบบเลขที่ใบวางบิล",invoice_number_format_description:"กำหนดวิธีสร้างเลขที่ใบวางบิลของคุณโดยอัตโนมัติเมื่อคุณสร้างใบวางบิลใหม่",preview_invoice_number:"ตัวอย่างเลขที่ใบวางบิล",due_date:"วันครบกำหนด",due_date_description:"ระบุวิธีการตั้งค่าวันที่ครบกำหนดโดยอัตโนมัติเมื่อคุณสร้างใบวางบิล",due_date_days:"ใบวางบิลครบกำหนดหลังจากวัน",set_due_date_automatically:"ตั้งค่าวันครบกำหนดโดยอัตโนมัติ",set_due_date_automatically_description:"เปิดใช้งานตัวเลือกนี้ หากคุณต้องการตั้งค่าวันครบกำหนดโดยอัตโนมัติเมื่อคุณสร้างใบวางบิลใหม่",default_formats:"รูปแบบเริ่มต้น",default_formats_description:"รูปแบบด้านล่างที่กำหนดจะใช้ในการกรอกข้อมูลฟิลด์โดยอัตโนมัติในการสร้างใบวางบิล",default_invoice_email_body:"เนื้อความอีเมลใบวางบิลเริ่มต้น",company_address_format:"รูปแบบที่อยู่บริษัท",shipping_address_format:"รูปแบบที่อยู่สำหรับการจัดส่ง",billing_address_format:"รูปแบบที่อยู่สำหรับการเรียกเก็บเงิน",invoice_email_attachment:"ส่งใบวางบิลเป็นสิ่งที่แนบมา",invoice_email_attachment_setting_description:"เปิดใช้งานตัวเลือกนี้หากคุณต้องการส่งใบวางบิลเป็นสิ่งที่แนบมากับอีเมลโปรดทราบว่าปุ่ม 'ดูใบวางบิล' ในอีเมลจะไม่แสดงอีกต่อไปเมื่อเปิดใช้งาน",invoice_settings_updated:"อัพเดตการตั้งค่าใบวางบิลเรียบร้อยแล้ว",retrospective_edits:"การแก้ไขย้อนหลัง",allow:"อนุญาต",disable_on_invoice_partial_paid:"ปิดการใช้งานหลังจากบันทึกการชำระเงินบางส่วน",disable_on_invoice_paid:"ปิดการใช้งานหลังจากบันทึกการชำระเงินเต็มจำนวน",disable_on_invoice_sent:"ปิดการใช้งานหลังจากส่งใบวางบิล",retrospective_edits_description:" ขึ้นอยู่กับกฎหมายของประเทศของคุณหรือความต้องการของคุณ คุณสามารถจำกัดผู้ใช้จากการแก้ไขใบวางบิลฉบับสุดท้ายได้"},estimates:{title:"ใบเสนอราคา",estimate_number_format:"รูปแบบเลขที่โดยประมาณ",estimate_number_format_description:"กำหนดวิธีการสร้างหมายเลขประมาณของคุณโดยอัตโนมัติเมื่อคุณสร้างค่าประมาณใหม่",preview_estimate_number:"ตัวอย่างเลขที่ใบเสนอราคา",expiry_date:"วันหมดอายุ",expiry_date_description:"ระบุวิธีการตั้งค่าวันหมดอายุโดยอัตโนมัติเมื่อคุณสร้างการใบเสนอราคา",expiry_date_days:"ใบเสนอราคาหมดอายุหลังจากวัน",set_expiry_date_automatically:"ตั้งวันหมดอายุโดยอัตโนมัติ",set_expiry_date_automatically_description:"เปิดใช้งานตัวเลือกนี้ หากคุณต้องการตั้งค่าวันหมดอายุโดยอัตโนมัติเมื่อคุณสร้างค่าประมาณใหม่",default_formats:"รูปแบบเริ่มต้น",default_formats_description:"รูปแบบด้านล่างที่กำหนดจะใช้ในการกรอกเขตข้อมูลโดยอัตโนมัติในการสร้างใบเสนอราคา",default_estimate_email_body:"ประมาณค่าเริ่มต้น ร่างกายอีเมล",company_address_format:"รูปแบบที่อยู่บริษัท",shipping_address_format:"รูปแบบที่อยู่สำหรับการจัดส่ง",billing_address_format:"รูปแบบที่อยู่สำหรับการเรียกเก็บเงิน",estimate_email_attachment:"ส่งใบเสนอราคาเป็นสิ่งที่แนบมา",estimate_email_attachment_setting_description:"เปิดใช้งานตัวเลือกนี้หากคุณต้องการส่งค่าประมาณเป็นสิ่งที่แนบมากับอีเมลโปรดทราบว่าปุ่ม 'ดูการประเมิน' ในอีเมลจะไม่แสดงอีกต่อไปเมื่อเปิดใช้งาน",estimate_settings_updated:"อัพเดตการตั้งค่าใบเสนอราคาเรียบร้อยแล้ว",convert_estimate_options:"ใบเสนอราคาแปลงการกระทำ",convert_estimate_description:"ระบุสิ่งที่เกิดขึ้นกับการใบเสนอราคาหลังจากที่ได้รับการแปลงเป็นใบวางบิล",no_action:"ไม่มีการกระทำ",delete_estimate:"ลบค่าใบเสนอราคา",mark_estimate_as_accepted:"ทำเครื่องหมายใบเสนอราคาเป็นที่ยอมรับ"},payments:{title:"การชำระเงิน",payment_number_format:"รูปแบบเลขที่การชำระเงิน",payment_number_format_description:"กำหนดวิธีสร้างเลขที่การชำระเงินของคุณโดยอัตโนมัติเมื่อคุณสร้างการชำระเงินใหม่",preview_payment_number:"ดูตัวอย่างเลขที่การชำระเงิน",default_formats:"รูปแบบเริ่มต้น",default_formats_description:"รูปแบบด้านล่างที่กำหนดจะใช้ในการกรอกข้อมูลฟิลด์โดยอัตโนมัติในการสร้างการชำระเงิน",default_payment_email_body:"เนื้อความอีเมล์การชำระเงินเริ่มต้น",company_address_format:"รูปแบบที่อยู่บริษัท",from_customer_address_format:"จากรูปแบบที่อยู่ของลูกค้า",payment_email_attachment:"ส่งการชำระเงินเป็นไฟล์แนบ",payment_email_attachment_setting_description:"เปิดใช้งานตัวเลือกนี้ หากคุณต้องการส่งใบเสร็จการชำระเงินเป็นสิ่งที่แนบมากับอีเมลโปรดทราบว่าปุ่ม 'ดูการชำระเงิน' ในอีเมลจะไม่แสดงอีกต่อไปเมื่อเปิดใช้งาน",payment_settings_updated:"อัพเดตการตั้งค่าการชำระเงินเรียบร้อยแล้ว"},items:{title:"รายการ",units:"ยูนิต",add_item_unit:"เพิ่มหน่วยใหม่",edit_item_unit:"แก้ไขหน่วยรายการ",unit_name:"ชื่อหน่วย",item_unit_added:"หน่วยรายการที่เพิ่มเข้ามา",item_unit_updated:"อัพเดตหน่วยรายการ",item_unit_confirm_delete:"คุณจะไม่สามารถกู้คืนยูนิตไอเท็มนี้ได้",already_in_use:"หน่วยรายการที่มีอยู่แล้วในการใช้งาน",deleted_message:"หน่วยรายการถูกลบเรียบร้อยแล้ว"},notes:{title:"หมายเหตุ",description:"ประหยัดเวลาด้วยการสร้างหมายเหตุและนำกลับมาใช้ใหม่ในใบวางบิล ใบเสนอราคาและการชำระเงิน",notes:"หมายเหตุ",type:"ประเภท",add_note:"เพิ่มโน้ต",add_new_note:"เพิ่มหมายเหตุใหม่",name:"ชื่อ",edit_note:"แก้ไขโน้ต",note_added:"หมายเหตุเพิ่มเสร็จเรียบร้อยแล้ว",note_updated:"หมายเหตุ:อัพเดตเสร็จเรียบร้อยแล้ว",note_confirm_delete:"คุณจะไม่สามารถกู้คืนหมายเหตุนี้ได้",already_in_use:"หมายเหตุมีอยู่แล้วในการใช้งาน",deleted_message:"หมายเหตุถูกลบเรียบร้อยแล้ว"}},account_settings:{profile_picture:"รูปโปรไฟล์",name:"ชื่อ",email:"อีเมล์",password:"รหัสผ่าน",confirm_password:"ยืนยันรหัสผ่าน",account_settings:"การตั้งค่าบัญชี",save:"บันทึก",section_description:"คุณสามารถอัปเดตชื่อ อีเมล และรหัสผ่านของคุณโดยใช้แบบฟอร์มด้านล่าง",updated_message:"อัพเดตการตั้งค่าบัญชีเรียบร้อยแล้ว"},user_profile:{name:"ชื่อ",email:"อีเมล์",password:"รหัสผ่าน",confirm_password:"ยืนยันรหัสผ่าน"},notification:{title:"การแจ้งเตือน",email:"ส่งการแจ้งเตือนไปยัง",description:"คุณต้องการรับการแจ้งเตือนทางอีเมลใดบ้างเมื่อมีบางอย่างเปลี่ยนแปลง",invoice_viewed:"ดูใบวางบิล",invoice_viewed_desc:"เมื่อลูกค้าของคุณดูใบวางบิลที่ส่งผ่านแดชบอร์ด",estimate_viewed:"ใบเสนอราคาดู",estimate_viewed_desc:"เมื่อลูกค้าของคุณดูใบเสนอราคาที่ส่งผ่านแดชบอร์ด",save:"บันทึก",email_save_message:"อีเมลที่บันทึกเรียบร้อยแล้ว",please_enter_email:"กรุณากรอกอีเมล์"},roles:{title:"บทบาท",description:"จัดการบทบาทและสิทธิ์ของ บริษัท นี้",save:"บันทึก",add_new_role:"เพิ่มบทบาทใหม่",role_name:"ชื่อบทบาท",added_on:"เพิ่มใน",add_role:"เพิ่มบทบาท",edit_role:"แก้ไขบทบาท",name:"ชื่อ",permission:"การอนุญาต | การอนุญาต",select_all:"เลือกทั้งหมด",none:"ไม่มี",confirm_delete:"คุณจะไม่สามารถกู้คืนบทบาทนี้ได้",created_message:"บทบาทที่สร้างเสร็จเรียบร้อยแล้ว",updated_message:"อัพเดตบทบาทเรียบร้อยแล้ว",deleted_message:"ลบบทบาท สำเร็จ",already_in_use:"บทบาทที่มีอยู่แล้วในการใช้งาน"},exchange_rate:{exchange_rate:"อัตราแลกเปลี่ยน",title:"แก้ไขปัญหาการแลกเปลี่ยนเงินตรา",description:"กรุณากรอกอัตราแลกเปลี่ยนของสกุลเงินทั้งหมดที่กล่าวถึงด้านล่างเพื่อช่วยให้ระบบคำนวณจำนวนเงินใน {currency}",drivers:"ไดร์เวอร์",new_driver:"เพิ่มผู้ให้บริการใหม่",edit_driver:"แก้ไขผู้ให้บริการ",select_driver:"เลือกไดร์เวอร์",update:"เลือกอัตราแลกเปลี่ยน ",providers_description:"กำหนดค่าผู้ให้บริการอัตราแลกเปลี่ยนของคุณที่นี่เพื่อดึงข้อมูลอัตราแลกเปลี่ยนล่าสุดในการทำธุรกรรมโดยอัตโนมัติ",key:"คีย์ API",name:"ชื่อ",driver:"คนขับรถ",is_default:"เป็นค่าเริ่มต้น",currency:"สกุลเงิน",exchange_rate_confirm_delete:"คุณจะไม่สามารถกู้คืนไดรเวอร์นี้ได้",created_message:"ผู้ให้บริการสร้างเสร็จเรียบร้อยแล้ว",updated_message:"ผู้ให้บริการอัปเดตเรียบร้อยแล้ว",deleted_message:"ผู้ให้บริการถูกลบเรียบร้อยแล้ว",error:" คุณไม่สามารถลบโปรแกรมควบคุมที่ใช้งานอยู่",default_currency_error:"สกุลเงินนี้มีใช้อยู่แล้วในหนึ่งในผู้ให้บริการที่ใช้งานอยู่",exchange_help_text:"ป้อนอัตราแลกเปลี่ยนเพื่อแปลงจาก {currency} เป็น {baseCurrency}",currency_freak:"สกุลเงินประหลาด",currency_layer:"เลเยอร์เงินตรา",open_exchange_rate:"เปิดอัตราแลกเปลี่ยน",currency_converter:"แปลงสกุลเงิน",server:"เซิร์ฟเวอร์",url:"URL",active:"แอคทีฟ",currency_help_text:"ผู้ให้บริการรายนี้จะใช้กับสกุลเงินที่เลือกไว้ข้างต้นเท่านั้น",currency_in_used:"สกุลเงินต่อไปนี้มีการใช้งานอยู่แล้วในผู้ให้บริการรายอื่นโปรดลบสกุลเงินเหล่านี้ออกจากการเลือกเพื่อเปิดใช้งานผู้ให้บริการนี้อีกครั้ง"},tax_types:{title:"ประเภทภาษี",add_tax:"เพิ่มภาษี",edit_tax:"แก้ไขภาษี",description:"คุณสามารถเพิ่มหรือลบภาษีได้ตามที่คุณต้องการ ระบบสนับสนุนภาษีในแต่ละรายการเช่นเดียวกับในใบวางบิล",add_new_tax:"เพิ่มภาษีใหม่",tax_settings:"การตั้งค่าภาษี",tax_per_item:"ภาษีต่อรายการ",tax_name:"ชื่อภาษี",compound_tax:"ภาษีมูลค่าเพิ่ม",percent:"เปอร์เซ็นต์",action:"จัดการ",tax_setting_description:"เปิดใช้งานนี้ถ้าคุณต้องการเพิ่มภาษีให้กับรายการใบวางบิลแต่ละรายการโดยค่าเริ่มต้นภาษีจะถูกเพิ่มลงในใบวางบิลโดยตรง",created_message:"สร้างประเภทภาษีเรียบร้อยแล้ว",updated_message:"อัพเดตประเภทภาษีเรียบร้อยแล้ว",deleted_message:"ประเภทภาษีที่ถูกลบเรียบร้อยแล้ว",confirm_delete:"คุณจะไม่สามารถกู้คืนภาษีประเภทนี้ได้",already_in_use:"ภาษีมีอยู่แล้วในการใช้งาน"},payment_modes:{title:"วิธีการชำระเงิน",description:"รูปแบบการทำธุรกรรมสำหรับการชำระเงิน",add_payment_mode:"เพิ่มวิธีการชำระเงิน",edit_payment_mode:"แก้ไขวิธีการชำระเงิน",mode_name:"ชื่อโหมด",payment_mode_added:"เพิ่มวิธีการชำระเงิน",payment_mode_updated:"อัปเดตวิธีการชำระเงิน",payment_mode_confirm_delete:"คุณจะไม่สามารถกู้คืนวิธีการชำระเงินนี้ได้",payments_attached:"วิธีการชำระเงินนี้ได้แนบกับการชำระเงินแล้วกรุณาลบการชำระเงินที่แนบมาเพื่อดำเนินการลบ",expenses_attached:"วิธีการชำระเงินนี้แนบมากับค่าใช้จ่ายแล้วกรุณาลบค่าใช้จ่ายที่แนบมาเพื่อดำเนินการลบ",deleted_message:"ลบวิธีการชำระเงินเรียบร้อยแล้ว"},expense_category:{title:"ประเภทค่าใช้จ่าย",action:"จัดการ",description:"หมวดหมู่ที่จำเป็นสำหรับการเพิ่มรายการค่าใช้จ่ายคุณสามารถเพิ่มหรือลบหมวดหมู่เหล่านี้ได้ตามความชอบของคุณ",add_new_category:"เพิ่มหมวดหมู่ใหม่",add_category:"เพิ่มหมวดหมู่",edit_category:"แก้ไขหมวดหมู่",category_name:"ชื่อหมวดหมู่",category_description:"คำอธิบาย",created_message:"สร้างหมวดหมู่ค่าใช้จ่ายเรียบร้อยแล้ว",deleted_message:"หมวดหมู่ค่าใช้จ่ายที่ถูกลบเรียบร้อยแล้ว",updated_message:"อัพเดตหมวดหมู่ค่าใช้จ่ายเรียบร้อยแล้ว",confirm_delete:"คุณจะไม่สามารถกู้คืนหมวดหมู่ค่าใช้จ่ายนี้ได้",already_in_use:"หมวดหมู่ที่มีอยู่แล้วในการใช้งาน"},preferences:{currency:"สกุลเงิน",default_language:"ภาษาเริ่มต้น",time_zone:"เขตเวลา",fiscal_year:"ปีงบการเงิน",date_format:"รูปแบบวันที่",discount_setting:"การตั้งค่าส่วนลด",discount_per_item:"ส่วนลดต่อรายการ ",discount_setting_description:"เปิดใช้งานตัวเลือกนี้หากคุณต้องการเพิ่มส่วนลดให้กับรายการใบวางบิลแต่ละรายการโดยค่าเริ่มต้นส่วนลดจะถูกเพิ่มโดยตรงไปยังใบวางบิล",expire_public_links:"ลิงก์สาธารณะหมดอายุโดยอัตโนมัติ",expire_setting_description:"ระบุว่าคุณต้องการให้ลิงก์ทั้งหมดที่ส่งมาออกจากแอปพลิเคชันนี้หมดอายุอัตโนมัติ เพื่อให้สามารถดูใบแจ้งหนี้ การประมาณการ & การชำระเงิน ฯลฯ หลังจากระยะเวลาที่กำหนด",save:"บันทึก",preference:"การตั้งค่า | การตั้งค่า",general_settings:"การตั้งค่าเริ่มต้นสำหรับระบบ",updated_message:"อัพเดตการปรับแต่งเรียบร้อยแล้ว",select_language:"เลือกภาษา",select_time_zone:"เลือกโซนเวลา",select_date_format:"เลือกรูปแบบวันที่",select_financial_year:"เลือกปีการเงิน",recurring_invoice_status:"สถานะใบวางบิลประจำ",create_status:"สร้างสถานะ",active:"แอคทีฟ",on_hold:"พักไว้",update_status:"สถานะการอัพเดต",completed:"เสร็จสมบูรณ์",company_currency_unchangeable:"สกุลเงินของบริษัทไม่สามารถเปลี่ยนแปลงได้"},update_app:{title:"อัพเดทแอพ",description:"คุณสามารถอัปเดตระบบได้ง่ายๆ โดยการตรวจหาการอัปเดตใหม่โดยคลิกที่ปุ่มด้านล่าง",check_update:"ตรวจหาการอัพเดต",avail_update:"อัปเดตใหม่พร้อมใช้งาน",next_version:"รุ่นถัดไป",requirements:"ข้อกำหนด",update:"อัปเดตเดี๋ยวนี้",update_progress:"กำลังอัพเดตอยู่...",progress_text:"มันจะใช้เวลาไม่กี่นาทีกรุณาอย่ารีเฟรชหน้าจอหรือปิดหน้าต่างก่อนที่การอัพเดตจะเสร็จสิ้น",update_success:"App ได้รับการอัพเดต!โปรดรอสักครู่ในขณะที่หน้าต่างเบราว์เซอร์ของคุณได้รับการโหลดใหม่โดยอัตโนมัติ",latest_message:"ไม่มีการอัพเดต!คุณอยู่ในรุ่นล่าสุด.",current_version:"เวอร์ชันปัจจุบัน",download_zip_file:"ดาวน์โหลดไฟล์ ZIP",unzipping_package:"แตกไฟล์แพ็คเกจ",copying_files:"การคัดลอกแฟ้ม",deleting_files:"การลบแฟ้มที่ไม่ได้ใช้",running_migrations:"กำลังทำงานโยกย้าย",finishing_update:"การอัพเดตเสร็จแล้ว",update_failed:"การอัพเดทล้มเหลว",update_failed_text:"โทษที!การอัปเดตของคุณล้มเหลวใน: ขั้นตอน {step}",update_warning:"ไฟล์แอปพลิเคชันและไฟล์แม่แบบเริ่มต้นทั้งหมดจะถูกเขียนทับเมื่อคุณอัปเดตแอปพลิเคชันโดยใช้ยูทิลิตีนี้โปรดใช้การสำรองข้อมูลของแม่แบบและฐานข้อมูลของคุณก่อนที่จะอัพเดต"},backup:{title:"การสำรองข้อมูล | ข้อมูลสำรอง",description:"การสำรองข้อมูลเป็น zipfile ที่มีไฟล์ทั้งหมดในไดเรกทอรีที่คุณระบุพร้อมกับการถ่ายโอนข้อมูลของฐานข้อมูลของคุณ",new_backup:"เพิ่มข้อมูลสำรองใหม่",create_backup:"สร้างข้อมูลสำรอง",select_backup_type:"เลือกประเภทการสำรองข้อมูล",backup_confirm_delete:"คุณจะไม่สามารถกู้คืนข้อมูลสำรองนี้ได้",path:"เส้นทาง",new_disk:"ดิสก์ใหม่",created_at:"สร้างที่",size:"ขนาด",dropbox:"ดรอบ็อกซ์",local:"ท้องถิ่น",healthy:"แข็งแรง",amount_of_backups:"จำนวนการสำรองข้อมูล",newest_backups:"การสำรองข้อมูลใหม่ล่าสุด",used_storage:"ที่เก็บข้อมูลที่ใช้แล้ว",select_disk:"เลือกดิสก์",action:"จัดการ",deleted_message:"การสำรองข้อมูลถูกลบเรียบร้อยแล้ว",created_message:"สร้างการสำรองข้อมูลเรียบร้อยแล้ว",invalid_disk_credentials:"ข้อมูลประจำตัวของดิสก์ที่เลือกไม่ถูกต้อง"},disk:{title:"ดิสก์แฟ้ม | ไฟล์ดิสก์",description:"โดยค่าเริ่มต้น InvoiceShelf จะใช้ดิสก์ภายในเครื่องของคุณสำหรับการบันทึกข้อมูลสำรอง, avatar และไฟล์ภาพอื่น ๆคุณสามารถกำหนดค่าไดร์เวอร์ดิสก์ได้มากกว่าหนึ่งรายการ เช่น DigitalOcean, S3 และ Dropbox ตามความต้องการของคุณ",created_at:"สร้างที่",dropbox:"ดรอบ็อกซ์",name:"ชื่อ",driver:"คนขับรถ",disk_type:"ประเภท",disk_name:"ชื่อดิสก์",new_disk:"เพิ่มดิสก์ใหม่",filesystem_driver:"โปรแกรมควบคุมระบบแฟ้ม",local_driver:"คนขับรถท้องถิ่น",local_root:"รากท้องถิ่น",public_driver:"คนขับรถสาธารณะ",public_root:"รากสาธารณะ",public_url:"URL สาธารณะ",public_visibility:"ทัศนวิสัยของสาธารณชน",media_driver:"โปรแกรมควบคุมสื่อ",media_root:"รากสื่อ",aws_driver:"ไดรเวอร์ AWS",aws_key:"คีย์ AWS",aws_secret:"AWS ซีเคร็ต",aws_region:"ภูมิภาค AWS",aws_bucket:"AWS บัคเก็ต",aws_root:"รากของ AWS",do_spaces_type:"ประเภท Do Space",do_spaces_key:"ปุ่มเว้นวรรค",do_spaces_secret:"ทำช่องว่างลับ",do_spaces_region:"ทำพื้นที่ภูมิภาค",do_spaces_bucket:"ทำถังเว้นวรรค",do_spaces_endpoint:"ทำช่องว่างปลายทาง",do_spaces_root:"รูทช่องว่าง",dropbox_type:"ประเภทของ Dropbox",dropbox_token:"โทเค็น Dropbox",dropbox_key:"ปุ่ม Dropbox",dropbox_secret:"Dropbox Secret",dropbox_app:"แอป Dropbox",dropbox_root:"รูทของ Dropbox",default_driver:"โปรแกรมควบคุมเริ่มต้น",is_default:"เป็นค่าเริ่มต้น",set_default_disk:"ตั้งค่าดิสก์เริ่มต้น",set_default_disk_confirm:"ดิสก์นี้จะถูกตั้งค่าเป็นค่าเริ่มต้นและไฟล์ PDF ใหม่ทั้งหมดจะถูกบันทึกไว้ในดิสก์นี้",success_set_default_disk:"ตั้งค่าดิสก์เป็นค่าเริ่มต้นเรียบร้อยแล้ว",save_pdf_to_disk:"บันทึกไฟล์ PDF ลงในดิสก์",disk_setting_description:" เปิดใช้งานนี้, หากคุณต้องการบันทึกสำเนาของแต่ละใบวางบิล, ใบเสนอราคาและการชำระเงินใบเสร็จรับเงิน PDF บนดิสก์เริ่มต้นของคุณโดยอัตโนมัติ.การเปิดใช้ตัวเลือกนี้จะลดเวลาในการโหลดเมื่อดูไฟล์ PDF",select_disk:"เลือกดิสก์",disk_settings:"การตั้งค่าดิสก์",confirm_delete:"ไฟล์และโฟลเดอร์ที่มีอยู่ในดิสก์ที่ระบุจะไม่ได้รับผลกระทบ แต่การกำหนดค่าดิสก์ของคุณจะถูกลบออกจาก InvoiceShelf",action:"จัดการ",edit_file_disk:"แก้ไขดิสก์แฟ้ม",success_create:"ดิสก์ที่เพิ่มเรียบร้อยแล้ว",success_update:"อัพเดตดิสก์เรียบร้อยแล้ว",error:"การเพิ่มดิสก์ล้มเหลว",deleted_message:"ดิสก์แฟ้มถูกลบเรียบร้อยแล้ว",disk_variables_save_successfully:"ดิสก์กำหนดค่าเรียบร้อยแล้ว",disk_variables_save_error:"การกำหนดค่าดิสก์ล้มเหลว",invalid_disk_credentials:"ข้อมูลประจำตัวของดิสก์ที่เลือกไม่ถูกต้อง"},taxations:{add_billing_address:"ป้อนที่อยู่สำหรับเรียกเก็บเงิน",add_shipping_address:"ป้อนที่อยู่จัดส่ง",add_company_address:"ใส่ที่อยู่บริษัท",modal_description:"ข้อมูลด้านล่างเป็นสิ่งจำเป็นเพื่อที่จะดึงข้อมูลภาษีการขาย",add_address:"เพิ่มที่อยู่สำหรับการเรียกภาษีการขาย",address_placeholder:"ตัวอย่าง: 123 ถนนของฉัน",city_placeholder:"ตัวอย่าง: ลอสแอนเจลิส",state_placeholder:"ตัวอย่าง: CA",zip_placeholder:"ตัวอย่าง: 90024",invalid_address:"โปรดระบุรายละเอียดที่อยู่ที่ถูกต้อง"}},ile={account_info:"ข้อมูลบัญชี",account_info_desc:"รายละเอียดด้านล่างจะถูกใช้ในการสร้างบัญชีผู้ดูแลระบบหลักนอกจากนี้คุณสามารถเปลี่ยนรายละเอียดได้ตลอดเวลาหลังจากเข้าสู่ระบบ",name:"ชื่อ",email:"อีเมล์",password:"รหัสผ่าน",confirm_password:"ยืนยันรหัสผ่าน",save_cont:"บันทึกและดำเนินการต่อ",company_info:"ข้อมูลบริษัท",company_info_desc:"ข้อมูลนี้จะถูกแสดงในใบวางบิลโปรดทราบว่าคุณสามารถแก้ไขได้ในภายหลังในหน้าการตั้งค่า",company_name:"ชื่อบริษัท",company_logo:"โลโก้บริษัท",logo_preview:"แสดงตัวอย่างโลโก้",preferences:"การกำหนดลักษณะบริษัท",preferences_desc:"ระบุการตั้งค่าเริ่มต้นสำหรับ บริษัท นี้",currency_set_alert:"สกุลเงินของบริษัทไม่สามารถเปลี่ยนแปลงได้ในภายหลัง",country:"ประเทศ",state:"เขต/อำเภอ",city:"จังหวัด",address:"ที่อยู่",street:"ที่อยู่บรรทัด 1 | ที่อยู่บรรทัด 2",phone:"โทรศัพท์",zip_code:"รหัสไปรษณีย์",go_back:"กลับไป",currency:"สกุลเงิน",language:"ภาษา",time_zone:"เขตเวลา",fiscal_year:"ปีงบการเงิน",date_format:"รูปแบบวันที่",from_address:"จากที่อยู่",username:"ชื่อผู้ใช้",next:"ถัดไป",continue:"ดำเนินการต่อ",skip:"ข้าม",database:{database:"URL ของไซต์และฐานข้อมูล",connection:"การเชื่อมต่อฐานข้อมูล",host:"โฮสต์ฐานข้อมูล",port:"พอร์ตฐานข้อมูล",password:"รหัสผ่านฐานข้อมูล",app_url:"URL ของแอป",app_domain:"โดเมนของแอป",username:"ชื่อผู้ใช้ฐานข้อมูล",db_name:"ชื่อฐานข้อมูล",db_path:"เส้นทางฐานข้อมูล",desc:"สร้างฐานข้อมูลบนเซิร์ฟเวอร์ของคุณและตั้งค่าข้อมูลประจำตัวโดยใช้แบบฟอร์มด้านล่าง"},permissions:{permissions:"การอนุญาต",permission_confirm_title:"คุณแน่ใจเหรอว่าอยากจะทำต่อ",permission_confirm_desc:"การตรวจสอบสิทธิ์ของโฟลเดอร์ล้มเหลว",permission_desc:"ด้านล่างนี้คือรายการสิทธิ์ของโฟลเดอร์ที่จำเป็นเพื่อให้แอปทำงานได้หากการตรวจสอบสิทธิ์ล้มเหลว โปรดตรวจสอบให้แน่ใจว่าคุณได้ทำการอัพเดตสิทธิ์การเข้าถึงของโฟลเดอร์เรียบร้อยแล้ว"},verify_domain:{title:"การยืนยันโดเมน",desc:"ระบบใช้การรับรองความถูกต้องตามเซสชันซึ่งต้องมีการตรวจสอบโดเมนเพื่อวัตถุประสงค์ด้านความปลอดภัยโปรดป้อนโดเมนที่คุณจะเข้าถึงเว็บแอปพลิเคชันของคุณ",app_domain:"โดเมนของแอป",verify_now:"ตรวจสอบเดี๋ยวนี้",success:"ตรวจสอบโดเมนเรียบร้อยแล้ว",failed:"การตรวจสอบโดเมนล้มเหลวโปรดป้อนชื่อโดเมนที่ถูกต้อง",verify_and_continue:"ยืนยันและดำเนินการต่อ"},mail:{host:"โฮสต์จดหมาย",port:"พอร์ตเมล",driver:"โปรแกรมควบคุมจดหมาย",secret:"ความลับ",mailgun_secret:"ความลับปืนพกปืน",mailgun_domain:"โดเมน",mailgun_endpoint:"ปลายทาง Mailgun",ses_secret:"SES ซีเคร็ต",ses_key:"SES คีย์",password:"รหัสผ่านจดหมาย",username:"ชื่อผู้ใช้จดหมาย",mail_config:"การกำหนดค่าจดหมาย",from_name:"จากชื่อจดหมาย",from_mail:"จากที่อยู่อีเมล",encryption:"การเข้ารหัสจดหมาย",mail_config_desc:"ด้านล่างเป็นรูปแบบสำหรับการกำหนดค่าไดรเวอร์อีเมลสำหรับการส่งอีเมลจาก appนอกจากนี้คุณยังสามารถกำหนดค่าผู้ให้บริการของบุคคลที่สามเช่น Sendgrid, SES ฯลฯ"},req:{system_req:"ความต้องการของระบบ",php_req_version:"PHP (เวอร์ชัน {version} จำเป็นต้องใช้)",check_req:"ตรวจสอบความต้องการ",system_req_desc:"ระบบมีความต้องการเซิร์ฟเวอร์ไม่กี่ตรวจสอบให้แน่ใจว่าเซิร์ฟเวอร์ของคุณมีเวอร์ชัน PHP ที่จำเป็นและส่วนขยายทั้งหมดที่กล่าวถึงด้านล่าง"},errors:{migrate_failed:"การโยกย้ายล้มเหลว",database_variables_save_error:"ไม่สามารถเขียนการกำหนดค่าไปยังแฟ้ม.envกรุณาตรวจสอบสิทธิ์ของไฟล์",mail_variables_save_error:"การกำหนดค่าอีเมลล้มเหลว",connection_failed:"การเชื่อมต่อฐานข้อมูลล้มเหลว",database_should_be_empty:"ฐานข้อมูลควรจะว่างเปล่า"},success:{mail_variables_save_successfully:"การกำหนดค่าอีเมลเรียบร้อยแล้ว",database_variables_save_successfully:"ฐานข้อมูลการกำหนดค่าเรียบร้อยแล้ว"}},ole={invalid_phone:"หมายเลขโทรศัพท์ไม่ถูกต้อง",invalid_url:"URL ไม่ถูกต้อง (เช่น http://www.invoiceshelf.com)",invalid_domain_url:"URL ไม่ถูกต้อง (เช่น: invoiceshelf.com)",required:"ต้องกรอกข้อมูล",email_incorrect:"อีเมลไม่ถูกต้อง",email_already_taken:"อีเมลถูกถ่ายไปแล้ว",email_does_not_exist:"ผู้ใช้ที่มีอีเมลที่ระบุไม่มีอยู่",item_unit_already_taken:"ชื่อหน่วยรายการนี้ได้รับการถ่ายแล้ว",payment_mode_already_taken:"ชื่อวิธีการชำระเงินนี้ได้รับการดำเนินการแล้ว",send_reset_link:"ส่งลิงก์รีเซ็ต",not_yet:"ยังงั้นเหรอส่งอีกครั้ง",password_min_length:"รหัสผ่านต้องประกอบด้วยอักขระ {count}",name_min_length:"ชื่อต้องมีตัวอักษรอย่างน้อย {count}",prefix_min_length:"Prefix ต้องมีตัวอักษรอย่างน้อย {count}",enter_valid_tax_rate:"ป้อนอัตราภาษีที่ถูกต้อง",numbers_only:"เลขที่เท่านั้น",characters_only:"อักขระเท่านั้น",password_incorrect:"รหัสผ่านต้องเหมือนกัน",password_length:"รหัสผ่านต้องมีความยาว {count} อักขระ",qty_must_greater_than_zero:"ปริมาณต้องมากกว่าศูนย์",price_greater_than_zero:"ราคาต้องมากกว่าศูนย์",payment_greater_than_zero:"การชำระเงินต้องมากกว่าศูนย์",payment_greater_than_due_amount:"การชำระเงินที่ป้อนเป็นมากกว่าจำนวนเงินค้างชำระของใบวางบิลนี้",quantity_maxlength:"จำนวนไม่ควรเกิน 20 หลัก",price_maxlength:"ราคาไม่ควรเกิน 20 หลัก",price_minvalue:"ราคาควรมากกว่า 0",amount_maxlength:"จำนวนเงินที่ไม่ควรมากกว่า 20 หลัก",amount_minvalue:"จำนวนเงินที่ควรจะมากกว่า 0",discount_maxlength:"ส่วนลดไม่ควรเกินส่วนลดสูงสุด",description_maxlength:"คำอธิบายไม่ควรเกิน 255 ตัวอักษร",subject_maxlength:"เรื่องไม่ควรเกิน 100 ตัวอักษร",message_maxlength:"ข้อความไม่ควรเกิน 255 ตัวอักษร",maximum_options_error:"เลือกตัวเลือก {max} ได้สูงสุดขั้นแรกให้ลบตัวเลือกที่เลือกเพื่อเลือกตัวเลือกอื่น",notes_maxlength:"หมายเหตุไม่ควรเกิน 65,000 ตัวอักษร",address_maxlength:"ที่อยู่ไม่ควรเกิน 255 ตัวอักษร",ref_number_maxlength:"หมายเลขอ้างอิง ไม่ควรเกิน 255 ตัวอักษร",prefix_maxlength:"Prefix ไม่ควรเกิน 5 ตัวอักษร",something_went_wrong:"มีบางอย่างผิดพลาด",number_length_minvalue:"ความยาวจำนวนควรมากกว่า 0",at_least_one_ability:"โปรดเลือกอย่างน้อยหนึ่งสิทธิ์",valid_driver_key:"โปรดป้อนคีย์ {driver} ที่ถูกต้อง",valid_exchange_rate:"กรุณากรอกอัตราแลกเปลี่ยนที่ถูกต้อง",company_name_not_same:"ชื่อ บริษัท ต้องตรงกับชื่อที่กำหนด"},rle={starter_plan:"คุณสมบัตินี้สามารถใช้ได้ในแผน Starter และเป็นต้นไป!",invalid_provider_key:"โปรดป้อนคีย์ API ของผู้ให้บริการที่ถูกต้อง",estimate_number_used:"เลขที่ใบเสนอราคาได้ถูกใช้ไปแล้ว",invoice_number_used:"เลขที่ใบวางบิลได้ถูกนำไปใช้แล้ว",payment_attached:"ใบวางบิลนี้มีการชำระเงินที่แนบมากับใบวางบิลแล้วตรวจสอบให้แน่ใจว่าได้ลบการชำระเงินที่แนบมาก่อนเพื่อที่จะดำเนินการลบต่อไป",payment_number_used:"เลขที่การชำระเงินได้รับการดำเนินการแล้ว",name_already_taken:"ชื่อได้ถูกนำไปแล้ว",receipt_does_not_exist:"ไม่มีใบเสร็จรับเงิน",customer_cannot_be_changed_after_payment_is_added:"ลูกค้าไม่สามารถเปลี่ยนแปลงได้หลังจากเพิ่มการชำระเงินแล้ว",invalid_credentials:"ข้อมูลประจำตัวไม่ถูกต้อง",not_allowed:"ไม่อนุญาต",login_invalid_credentials:"ข้อมูลประจำตัวเหล่านี้ไม่ตรงกับบันทึกของเรา",enter_valid_cron_format:"โปรดป้อนรูปแบบ cron ที่ถูกต้อง",email_could_not_be_sent:"ไม่สามารถส่งอีเมลไปยังที่อยู่อีเมลนี้ได้",invalid_address:"โปรดป้อนที่อยู่ที่ถูกต้อง",invalid_key:"โปรดป้อนรหัสที่ถูกต้อง",invalid_state:"โปรดป้อนสถานะที่ถูกต้อง",invalid_city:"โปรดป้อนจังหวัดที่ถูกต้อง",invalid_postal_code:"กรุณาป้อนรหัสไปรษณีย์ที่ถูกต้อง.",invalid_format:"โปรดป้อนรูปแบบสตริงแบบสอบถามที่ถูกต้อง",api_error:"เซิร์ฟเวอร์ไม่ตอบสนอง",feature_not_enabled:"ไม่ได้เปิดใช้งานฟีเจอร์",request_limit_met:"เกินขีด จำกัด การร้องขอ API",address_incomplete:"ที่อยู่ไม่สมบูรณ์"},sle="ใบเสนอราคา",lle="เลขที่",cle="วันที่",dle="วันหมดอายุ",ule="ใบวางบิล",_le="เลขที่ใบวางบิล",mle="วันที่ใบวางบิล",ple="วันครบกำหนด",fle="หมายเหตุ",hle="บริการ",gle="หน่วย",vle="ราคาต่อหน่วย",yle="ส่วนลด",ble="จำนวนเงิน (บาท)",kle="ยอดรวม",wle="จำนวนเงินทั้งสิ้น",xle="การชำระเงิน",Dle="ใบเสร็จรับเงิน",Sle="วันที่ชำระเงิน",zle="เลขที่การชำระเงิน",Ple="วิธีการชำระเงิน",Ele="จำนวนเงินที่ได้รับ",Ale="รายงานค่าใช้จ่าย",Cle="ค่าใช้จ่ายทั้งหมด",jle="รายงานผลกำไรขาดทุน",Tle="รายงานลูกค้าฝ่ายขาย",Ile="รายงานรายการขาย",Nle="รายงานสรุปภาษี",Fle="เงินได้",Mle="กำไรสุทธิ",Rle="รายงานการขาย: โดยลูกค้า",Ole="ยอดขายรวม",$le="รายงานการขาย: ตามรายการ",Lle="รายงานภาษี",Ble="ภาษีทั้งหมด",Ule="ประเภทภาษี",Vle="ค่าใช้จ่าย",qle="ที่อยู่เรียกเก็บเงิน,",Hle="ที่อยู่สำหรับจัดส่ง,",Wle="ได้รับจาก:",Kle="ภาษี",Yle="ผู้เสนอราคา",Zle="ลูกค้า",Gle="ที่อยู่",Qle={navigation:$se,general:Lse,dashboard:Bse,tax_types:Use,global_search:Vse,company_switcher:qse,dateRange:Hse,customers:Wse,items:Kse,estimates:Yse,invoices:Zse,recurring_invoices:Gse,payments:Qse,expenses:Jse,login:Xse,modules:ele,users:tle,reports:ale,settings:nle,wizard:ile,validation:ole,errors:rle,pdf_estimate_label:sle,pdf_estimate_number:lle,pdf_estimate_date:cle,pdf_estimate_expire_date:dle,pdf_invoice_label:ule,pdf_invoice_number:_le,pdf_invoice_date:mle,pdf_invoice_due_date:ple,pdf_notes:fle,pdf_items_label:hle,pdf_quantity_label:gle,pdf_price_label:vle,pdf_discount_label:yle,pdf_amount_label:ble,pdf_subtotal:kle,pdf_total:wle,pdf_payment_label:xle,pdf_payment_receipt_label:Dle,pdf_payment_date:Sle,pdf_payment_number:zle,pdf_payment_mode:Ple,pdf_payment_amount_received_label:Ele,pdf_expense_report_label:Ale,pdf_total_expenses_label:Cle,pdf_profit_loss_label:jle,pdf_sales_customers_label:Tle,pdf_sales_items_label:Ile,pdf_tax_summery_label:Nle,pdf_income_label:Fle,pdf_net_profit_label:Mle,pdf_customer_sales_report:Rle,pdf_total_sales_label:Ole,pdf_item_sales_label:$le,pdf_tax_report_label:Lle,pdf_total_tax_label:Ble,pdf_tax_types_label:Ule,pdf_expenses_label:Vle,pdf_bill_to:qle,pdf_ship_to:Hle,pdf_received_from:Wle,pdf_tax_label:Kle,pdf_company_name:Yle,pdf_customer:Zle,pdf_address:Gle},Jle={cs:yB,en:AU,fr:$V,es:Zq,ar:oW,de:fK,ja:SY,pt_BR:QZ,it:sQ,sr:gJ,nl:PX,ko:Tee,lv:Ute,sv:Jae,sk:lie,vi:voe,pl:FZ,el:Ere,hr:Ose,th:Qle},Xle={__name:"BaseBadge",props:{bgColor:{type:String,default:null},color:{type:String,default:null}},setup(e){return(t,a)=>(P(),ae("span",{class:"px-2 py-1 text-sm font-normal text-center text-green-800 uppercase bg-success",style:oo({backgroundColor:e.bgColor,color:e.color})},[it(t.$slots,"default")],4))}},ece=Object.freeze(Object.defineProperty({__proto__:null,default:Xle},Symbol.toStringTag,{value:"Module"})),tce={name:"BaseBreadcrumb"},ace={class:"flex flex-wrap py-4 text-gray-900 rounded list-reset"};function nce(e,t,a,n,i,o){return P(),ae("nav",null,[ee("ol",ace,[it(e.$slots,"default")])])}const ice=Sn(tce,[["render",nce]]),oce=Object.freeze(Object.defineProperty({__proto__:null,default:ice},Symbol.toStringTag,{value:"Module"})),rce={class:"pr-2 text-sm"},sce={key:0,class:"px-1"},lce={__name:"BaseBreadcrumbItem",props:{title:{type:String,default:String},to:{type:String,default:"#"},active:{type:Boolean,default:!1,required:!1}},setup(e){return(t,a)=>{const n=Ue("router-link");return P(),ae("li",rce,[C(n,{class:"m-0 mr-2 text-sm font-medium leading-5 text-gray-900 outline-none focus:ring-2 focus:ring-offset-2 focus:ring-primary-400",to:e.to},{default:me(()=>[$t(Ie(e.title),1)]),_:1},8,["to"]),e.active?Re("",!0):(P(),ae("span",sce,"/"))])}}},cce=Object.freeze(Object.defineProperty({__proto__:null,default:lce},Symbol.toStringTag,{value:"Module"})),dce={},uce={class:"animate-spin",xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24"},_ce=ee("circle",{class:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor","stroke-width":"4"},null,-1),mce=ee("path",{class:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"},null,-1),pce=[_ce,mce];function fce(e,t){return P(),ae("svg",uce,pce)}const hce=Sn(dce,[["render",fce]]),gce={__name:"BaseButton",props:{contentLoading:{type:Boolean,default:!1},defaultClass:{type:String,default:"inline-flex whitespace-nowrap items-center border font-medium focus:outline-none focus:ring-2 focus:ring-offset-2"},tag:{type:String,default:"button"},disabled:{type:Boolean,default:!1},rounded:{type:Boolean,default:!1},loading:{type:Boolean,default:!1},size:{type:String,default:"md",validator:function(e){return["xs","sm","md","lg","xl"].indexOf(e)!==-1}},variant:{type:String,default:"primary",validator:function(e){return["primary","secondary","primary-outline","white","danger","gray"].indexOf(e)!==-1}}},setup(e){const t=e,a=V(()=>({"px-2.5 py-1.5 text-xs leading-4 rounded":t.size==="xs","px-3 py-2 text-sm leading-4 rounded-md":t.size=="sm","px-4 py-2 text-sm leading-5 rounded-md":t.size==="md","px-4 py-2 text-base leading-6 rounded-md":t.size==="lg","px-6 py-3 text-base leading-6 rounded-md":t.size==="xl"})),n=V(()=>{switch(t.size){case"xs":return"32";case"sm":return"38";case"md":return"42";case"lg":return"42";case"xl":return"46";default:return""}}),i=V(()=>({"border-transparent shadow-sm text-white bg-primary-600 hover:bg-primary-700 focus:ring-primary-500":t.variant==="primary","border-transparent text-primary-700 bg-primary-100 hover:bg-primary-200 focus:ring-primary-500":t.variant==="secondary","border-transparent border-solid border-primary-500 font-normal transition ease-in-out duration-150 text-primary-500 hover:bg-primary-200 shadow-inner focus:ring-primary-500":t.variant=="primary-outline","border-gray-200 text-gray-700 bg-white hover:bg-gray-50 focus:ring-primary-500 focus:ring-offset-0":t.variant=="white","border-transparent shadow-sm text-white bg-red-600 hover:bg-red-700 focus:ring-red-500":t.variant==="danger","border-transparent bg-gray-200 border hover:bg-opacity-60 focus:ring-gray-500 focus:ring-offset-0":t.variant==="gray"})),o=V(()=>t.rounded?"!rounded-full":""),r=V(()=>({"-ml-0.5 mr-2 h-4 w-4":t.size=="sm","-ml-1 mr-2 h-5 w-5":t.size==="md","-ml-1 mr-3 h-5 w-5":t.size==="lg"||t.size==="xl"})),l=V(()=>({"text-white":t.variant==="primary","text-primary-700":t.variant==="secondary","text-gray-700":t.variant==="white","text-gray-400":t.variant==="gray"})),d=V(()=>({"ml-2 -mr-0.5 h-4 w-4":t.size=="sm","ml-2 -mr-1 h-5 w-5":t.size==="md","ml-3 -mr-1 h-5 w-5":t.size==="lg"||t.size==="xl"}));return(u,_)=>{const f=Ue("BaseContentPlaceholdersBox"),p=Ue("BaseContentPlaceholders"),h=Ue("BaseCustomTag");return e.contentLoading?(P(),R(p,{key:0,class:"disabled cursor-normal pointer-events-none"},{default:me(()=>[C(f,{rounded:!0,style:oo([{width:"96px"},`height: ${n.value}px;`])},null,8,["style"])]),_:1})):(P(),R(h,{key:1,tag:e.tag,disabled:e.disabled,class:Be([e.defaultClass,a.value,i.value,o.value])},{default:me(()=>[e.loading?(P(),R(hce,{key:0,class:Be([r.value,l.value])},null,8,["class"])):it(u.$slots,"left",{key:1,class:Be(r.value)}),it(u.$slots,"default"),it(u.$slots,"right",{class:Be([d.value,l.value])})]),_:3},8,["tag","disabled","class"]))}}},vce=Object.freeze(Object.defineProperty({__proto__:null,default:gce},Symbol.toStringTag,{value:"Module"})),yce={class:"bg-white rounded-lg shadow"},bce={key:0,class:"px-5 py-4 text-black border-b border-gray-100 border-solid"},kce={key:1,class:"px-5 py-4 border-t border-gray-100 border-solid sm:px-6"},wce={__name:"BaseCard",props:{containerClass:{type:String,default:"px-4 py-5 sm:px-8 sm:py-8"}},setup(e){const t=Yr(),a=V(()=>!!t.header),n=V(()=>!!t.footer);return(i,o)=>(P(),ae("div",yce,[a.value?(P(),ae("div",bce,[it(i.$slots,"header")])):Re("",!0),ee("div",{class:Be(e.containerClass)},[it(i.$slots,"default")],2),n.value?(P(),ae("div",kce,[it(i.$slots,"footer")])):Re("",!0)]))}},xce=Object.freeze(Object.defineProperty({__proto__:null,default:wce},Symbol.toStringTag,{value:"Module"})),Dce={class:"relative flex items-start"},Sce={class:"flex items-center h-5"},zce=["id","disabled"],Pce={class:"ml-3 text-sm"},Ece=["for"],Ace={key:1,class:"text-gray-500"},Cce={__name:"BaseCheckbox",props:{label:{type:String,default:""},description:{type:String,default:""},modelValue:{type:[Boolean,Array],default:!1},id:{type:[Number,String],default:()=>`check_${Math.random().toString(36).substr(2,9)}`},disabled:{type:Boolean,default:!1},checkboxClass:{type:String,default:"w-4 h-4 border-gray-300 rounded cursor-pointer"},setInitialValue:{type:Boolean,default:!1}},emits:["update:modelValue","change"],setup(e,{emit:t}){const a=e,n=t;a.setInitialValue&&n("update:modelValue",a.modelValue);const i=V({get:()=>a.modelValue,set:r=>{n("update:modelValue",r),n("change",r)}}),o=V(()=>a.disabled?"text-gray-300 cursor-not-allowed":"text-primary-600 focus:ring-primary-500");return(r,l)=>(P(),ae("div",Dce,[ee("div",Sce,[Ns(ee("input",Dn({id:e.id,"onUpdate:modelValue":l[0]||(l[0]=d=>i.value=d)},r.$attrs,{disabled:e.disabled,type:"checkbox",class:[e.checkboxClass,o.value]}),null,16,zce),[[Rm,i.value]])]),ee("div",Pce,[e.label?(P(),ae("label",{key:0,for:e.id,class:Be(`font-medium ${e.disabled?"text-gray-400 cursor-not-allowed":"text-gray-600"} cursor-pointer `)},Ie(e.label),11,Ece)):Re("",!0),e.description?(P(),ae("p",Ace,Ie(e.description),1)):Re("",!0)])]))}},jce=Object.freeze(Object.defineProperty({__proto__:null,default:Cce},Symbol.toStringTag,{value:"Module"})),Tce={__name:"BaseContentPlaceholders",props:{rounded:{type:Boolean,default:!1},centered:{type:Boolean,default:!1},animated:{type:Boolean,default:!0}},setup(e){const t=e,a=V(()=>({"base-content-placeholders":!0,"base-content-placeholders-is-rounded":t.rounded,"base-content-placeholders-is-centered":t.centered,"base-content-placeholders-is-animated":t.animated}));return(n,i)=>(P(),ae("div",{class:Be(a.value)},[it(n.$slots,"default")],2))}},Ice=Object.freeze(Object.defineProperty({__proto__:null,default:Tce},Symbol.toStringTag,{value:"Module"})),Nce={__name:"BaseContentPlaceholdersBox",props:{circle:{type:Boolean,default:!1},rounded:{type:Boolean,default:!1}},setup(e){const t=e,a=V(()=>({"base-content-circle":t.circle,"base-content-placeholders-is-rounded":t.rounded}));return(n,i)=>(P(),ae("div",{class:Be(["base-content-placeholders-box",a.value])},null,2))}},Fce=Object.freeze(Object.defineProperty({__proto__:null,default:Nce},Symbol.toStringTag,{value:"Module"})),Mce={class:"base-content-placeholders-heading"},Rce={key:0,class:"base-content-placeholders-heading__box"},Oce=ee("div",{class:"base-content-placeholders-heading__content"},[ee("div",{class:"base-content-placeholders-heading__title",style:{background:"#eee"}}),ee("div",{class:"base-content-placeholders-heading__subtitle"})],-1),$ce={__name:"BaseContentPlaceholdersHeading",props:{box:{type:Boolean,default:!1},rounded:{type:Boolean,default:!1}},setup(e){return(t,a)=>(P(),ae("div",Mce,[e.box?(P(),ae("div",Rce)):Re("",!0),Oce]))}},Lce=Object.freeze(Object.defineProperty({__proto__:null,default:$ce},Symbol.toStringTag,{value:"Module"})),Bce={class:"base-content-placeholders-text"},Uce={__name:"BaseContentPlaceholdersText",props:{lines:{type:Number,default:4},rounded:{type:Boolean,default:!1}},setup(e){const t=e,a=V(()=>({"base-content-placeholders-is-rounded":t.rounded}));return(n,i)=>(P(),ae("div",Bce,[(P(!0),ae(yt,null,Un(e.lines,o=>(P(),ae("div",{key:o,class:Be([a.value,"w-full h-full base-content-placeholders-text__line"])},null,2))),128))]))}},Vce=Object.freeze(Object.defineProperty({__proto__:null,default:Uce},Symbol.toStringTag,{value:"Module"})),h2={id:null,label:null,type:null,name:null,default_answer:null,is_required:!1,placeholder:null,model_type:null,order:1,options:[]},qce=e=>Qs.createI18n({locale:"en",fallbackLocale:"en",messages:e}),{global:Hi}=qce,$g={isImageFile(e){return["image/gif","image/jpeg","image/png"].includes(e)},addClass(e,t){e.classList?e.classList.add(t):e.className+=" "+t},hasClass(e,t){return e.classList?e.classList.contains(t):new RegExp("(^| )"+t+"( |$)","gi").test(e.className)},formatMoney(e,t=0){t||(t={precision:2,thousand_separator:",",decimal_separator:".",symbol:"$"}),e=e/100;let{precision:a,decimal_separator:n,thousand_separator:i,symbol:o,swap_currency_symbol:r}=t;try{a=Math.abs(a),a=isNaN(a)?2:a;const l=e<0?"-":"";let d=parseInt(e=Math.abs(Number(e)||0).toFixed(a)).toString(),u=d.length>3?d.length%3:0,_=`${o}`,f=u?d.substr(0,u)+i:"",p=d.substr(u).replace(/(\d{3})(?=\d)/g,"$1"+i),h=a?n+Math.abs(e-d).toFixed(a).slice(2):"",g=l+f+p+h;return r?g+" "+_:_+" "+g}catch(l){console.error(l)}},mergeSettings(e,t){Object.keys(t).forEach(function(a){a in e&&(e[a]=t[a])})},checkValidUrl(e){return e.includes("http://localhost")||e.includes("http://127.0.0.1")||e.includes("https://localhost")||e.includes("https://127.0.0.1")?!0:!!new RegExp("^(https?:\\/\\/)?((([a-z\\d]([a-z\\d-]*[a-z\\d])*)\\.)+[a-z]{2,}|((\\d{1,3}\\.){3}\\d{1,3}))(\\:\\d+)?(\\/[-a-z\\d%_.~+]*)*(\\?[;&a-z\\d%_.~+=-]*)?(\\#[-a-z\\d_]*)?$","i").test(e)},checkValidDomainUrl(e){return e.includes("localhost")||e.includes("127.0.0.1")?!0:!!new RegExp("^(https?:\\/\\/)?((([a-z\\d]([a-z\\d-]*[a-z\\d])*)\\.)+[a-z]{2,}|((\\d{1,3}\\.){3}\\d{1,3}))(\\:\\d+)?(\\/[-a-z\\d%_.~+]*)*(\\?[;&a-z\\d%_.~+=-]*)?(\\#[-a-z\\d_]*)?$","i").test(e)},fallbackCopyTextToClipboard(e){var t=document.createElement("textarea");t.value=e,t.style.top="0",t.style.left="0",t.style.position="fixed",document.body.appendChild(t),t.focus(),t.select();try{var a=document.execCommand("copy"),n=a?"successful":"unsuccessful";console.log("Fallback: Copying text command was "+n)}catch(i){console.error("Fallback: Oops, unable to copy",i)}document.body.removeChild(t)},copyTextToClipboard(e){if(!navigator.clipboard){this.fallbackCopyTextToClipboard(e);return}navigator.clipboard.writeText(e).then(function(){return!0},function(t){return!1})},arrayDifference(e,t){return e==null?void 0:e.filter(a=>(t==null?void 0:t.indexOf(a))<0)},getBadgeStatusColor(e){switch(e){case"DRAFT":return{bgColor:"#F8EDCB",color:"#744210"};case"PAID":return{bgColor:"#D5EED0",color:"#276749"};case"UNPAID":return{bgColor:"#F8EDC",color:"#744210"};case"SENT":return{bgColor:"rgba(246, 208, 154, 0.4)",color:"#975a16"};case"REJECTED":return{bgColor:"#E1E0EA",color:"#1A1841"};case"ACCEPTED":return{bgColor:"#D5EED0",color:"#276749"};case"VIEWED":return{bgColor:"#C9E3EC",color:"#2c5282"};case"EXPIRED":return{bgColor:"#FED7D7",color:"#c53030"};case"PARTIALLY PAID":return{bgColor:"#C9E3EC",color:"#2c5282"};case"COMPLETED":return{bgColor:"#D5EED0",color:"#276749"};case"DUE":return{bgColor:"#F8EDCB",color:"#744210"};case"YES":return{bgColor:"#D5EED0",color:"#276749"};case"NO":return{bgColor:"#FED7D7",color:"#c53030"}}},getStatusTranslation(e){switch(e){case"DRAFT":return Hi.t("general.draft");case"PAID":return Hi.t("invoices.paid");case"UNPAID":return Hi.t("invoices.unpaid");case"SENT":return Hi.t("general.sent");case"REJECTED":return Hi.t("estimates.rejected");case"ACCEPTED":return Hi.t("estimates.accepted");case"VIEWED":return Hi.t("invoices.viewed");case"EXPIRED":return Hi.t("estimates.expired");case"PARTIALLY PAID":return Hi.t("estimates.partially_paid");case"COMPLETED":return Hi.t("invoices.completed");case"DUE":return Hi.t("general.due");default:return e}},toFormData(e){const t=new FormData;return Object.keys(e).forEach(a=>{yz.isArray(e[a])?t.append(a,JSON.stringify(e[a])):(e[a]===null&&(e[a]=""),t.append(a,e[a]))}),t}};var Hce=Object.create,Zm=Object.defineProperty,Wce=Object.getOwnPropertyDescriptor,Kce=Object.getOwnPropertyNames,Yce=Object.getPrototypeOf,Zce=Object.prototype.hasOwnProperty,Gce=(e,t)=>()=>(e&&(t=e(e=0)),t),Gm=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),Qm=(e,t)=>{for(var a in t)Zm(e,a,{get:t[a],enumerable:!0})},fP=(e,t,a,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of Kce(t))!Zce.call(e,i)&&i!==a&&Zm(e,i,{get:()=>t[i],enumerable:!(n=Wce(t,i))||n.enumerable});return e},Vd=(e,t,a)=>(a=e!=null?Hce(Yce(e)):{},fP(t||!e||!e.__esModule?Zm(a,"default",{value:e,enumerable:!0}):a,e)),Qce=e=>fP(Zm({},"__esModule",{value:!0}),e),Jce=(e,t,a)=>{if(!t.has(e))throw TypeError("Cannot "+a)},g2=(e,t,a)=>{if(t.has(e))throw TypeError("Cannot add the same private member more than once");t instanceof WeakSet?t.add(e):t.set(e,a)},Bc=(e,t,a)=>(Jce(e,t,"access private method"),a),Xce=Gm(e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.default=t;function t(){}t.prototype={diff:function(i,o){var r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},l=r.callback;typeof r=="function"&&(l=r,r={}),this.options=r;var d=this;function u(z){return l?(setTimeout(function(){l(void 0,z)},0),!0):z}i=this.castInput(i),o=this.castInput(o),i=this.removeEmpty(this.tokenize(i)),o=this.removeEmpty(this.tokenize(o));var _=o.length,f=i.length,p=1,h=_+f;r.maxEditLength&&(h=Math.min(h,r.maxEditLength));var g=[{newPos:-1,components:[]}],y=this.extractCommon(g[0],o,i,0);if(g[0].newPos+1>=_&&y+1>=f)return u([{value:this.join(o),count:o.length}]);function k(){for(var z=-1*p;z<=p;z+=2){var w=void 0,D=g[z-1],E=g[z+1],T=(E?E.newPos:0)-z;D&&(g[z-1]=void 0);var N=D&&D.newPos+1<_,j=E&&0<=T&&T=_&&T+1>=f)return u(a(d,w.components,o,i,d.useLongestToken));g[z]=w}p++}if(l)(function z(){setTimeout(function(){if(p>h)return l();k()||z()},0)})();else for(;p<=h;){var b=k();if(b)return b}},pushComponent:function(i,o,r){var l=i[i.length-1];l&&l.added===o&&l.removed===r?i[i.length-1]={count:l.count+1,added:o,removed:r}:i.push({count:1,added:o,removed:r})},extractCommon:function(i,o,r,l){for(var d=o.length,u=r.length,_=i.newPos,f=_-l,p=0;_+1b.length?w:b}),h.value=i.join(y)}else h.value=i.join(r.slice(f,f+h.count));f+=h.count,h.added||(p+=h.count)}}var k=o[_-1];return _>1&&typeof k.value=="string"&&(k.added||k.removed)&&i.equals("",k.value)&&(o[_-2].value+=k.value,o.pop()),o}function n(i){return{newPos:i.newPos,components:i.components.slice(0)}}}),ede=Gm(e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.diffArrays=i,e.arrayDiff=void 0;var t=a(Xce());function a(o){return o&&o.__esModule?o:{default:o}}var n=new t.default;e.arrayDiff=n,n.tokenize=function(o){return o.slice()},n.join=n.removeEmpty=function(o){return o};function i(o,r,l){return n.diff(o,r,l)}}),Jm=Gm((e,t)=>{var a=new Proxy(String,{get:()=>a});t.exports=a}),hP={};Qm(hP,{default:()=>vP,shouldHighlight:()=>gP});var gP,vP,tde=Gce(()=>{gP=()=>!1,vP=String}),ade=Gm(e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.codeFrameColumns=f,e.default=p;var t=(tde(),Qce(hP)),a=i(Jm(),!0);function n(h){if(typeof WeakMap!="function")return null;var g=new WeakMap,y=new WeakMap;return(n=function(k){return k?y:g})(h)}function i(h,g){if(!g&&h&&h.__esModule)return h;if(h===null||typeof h!="object"&&typeof h!="function")return{default:h};var y=n(g);if(y&&y.has(h))return y.get(h);var k={__proto__:null},b=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var z in h)if(z!=="default"&&Object.prototype.hasOwnProperty.call(h,z)){var w=b?Object.getOwnPropertyDescriptor(h,z):null;w&&(w.get||w.set)?Object.defineProperty(k,z,w):k[z]=h[z]}return k.default=h,y&&y.set(h,k),k}var o;function r(h){return h?(o!=null||(o=new a.default.constructor({enabled:!0,level:1})),o):a.default}var l=!1;function d(h){return{gutter:h.grey,marker:h.red.bold,message:h.red.bold}}var u=/\r\n|[\n\r\u2028\u2029]/;function _(h,g,y){let k=Object.assign({column:0,line:-1},h.start),b=Object.assign({},k,h.end),{linesAbove:z=2,linesBelow:w=3}=y||{},D=k.line,E=k.column,T=b.line,N=b.column,j=Math.max(D-(z+1),0),q=Math.min(g.length,T+w);D===-1&&(j=0),T===-1&&(q=g.length);let H=T-D,te={};if(H)for(let X=0;X<=H;X++){let oe=X+D;if(!E)te[oe]=!0;else if(X===0){let Te=g[oe-1].length;te[oe]=[E,Te-E+1]}else if(X===H)te[oe]=[0,N];else{let Te=g[oe-X].length;te[oe]=[0,Te]}}else E===N?E?te[D]=[E,0]:te[D]=!0:te[D]=[E,N-E];return{start:j,end:q,markerLines:te}}function f(h,g,y={}){let k=(y.highlightCode||y.forceColor)&&(0,t.shouldHighlight)(y),b=r(y.forceColor),z=d(b),w=(te,X)=>k?te(X):X,D=h.split(u),{start:E,end:T,markerLines:N}=_(g,D,y),j=g.start&&typeof g.start.column=="number",q=String(T).length,H=(k?(0,t.default)(h,y):h).split(u,T).slice(E,T).map((te,X)=>{let oe=E+1+X,Te=` ${` ${oe}`.slice(-q)} |`,Ae=N[oe],de=!N[oe+1];if(Ae){let Ce="";if(Array.isArray(Ae)){let Pe=te.slice(0,Math.max(Ae[0]-1,0)).replace(/[^\t]/g," "),Ke=Ae[1]||1;Ce=[` + `,w(z.gutter,Te.replace(/\d/g," "))," ",Pe,w(z.marker,"^").repeat(Ke)].join(""),de&&y.message&&(Ce+=" "+w(z.message,y.message))}return[w(z.marker,">"),w(z.gutter,Te),te.length>0?` ${te}`:"",Ce].join("")}else return` ${w(z.gutter,Te)}${te.length>0?` ${te}`:""}`}).join(` +`);return y.message&&!j&&(H=`${" ".repeat(q+1)}${y.message} +${H}`),k?b.reset(H):H}function p(h,g,y,k={}){if(!l){l=!0;let b="Passing lineNumber and colNumber is deprecated to @babel/code-frame. Please use `codeFrameColumns`.";{let z=new Error(b);z.name="DeprecationWarning",console.warn(new Error(b))}}return y=Math.max(y,0),f(h,{start:{column:y,line:g}},k)}}),nde={};Qm(nde,{__debug:()=>eme,check:()=>J_e,doc:()=>aE,format:()=>oE,formatWithCursor:()=>iE,getSupportInfo:()=>X_e,util:()=>nE,version:()=>E_e});var ide=(e,t,a,n)=>{if(!(e&&t==null))return t.replaceAll?t.replaceAll(a,n):a.global?t.replace(a,n):t.split(a).join(n)},Xm=ide,ode=Vd(ede(),1);function rde(e){let t=e.indexOf("\r");return t>=0?e.charAt(t+1)===` `?"crlf":"cr":"lf"}function Ay(e){switch(e){case"cr":return"\r";case"crlf":return`\r `;default:return` -`}}function yz(e,t){let a;switch(t){case` +`}}function yP(e,t){let a;switch(t){case` `:a=/\n/g;break;case"\r":a=/\r/g;break;case`\r -`:a=/\r\n/g;break;default:throw new Error(`Unexpected "eol" ${JSON.stringify(t)}.`)}let n=e.match(a);return n?n.length:0}function cde(e){return ep(!1,e,/\r\n?/g,` -`)}var Jr="string",Hs="array",Xr="cursor",ts="indent",as="align",ns="trim",Vn="group",ji="fill",ci="if-break",is="indent-if-break",os="line-suffix",ss="line-suffix-boundary",tn="line",wo="label",Ni="break-parent",bz=new Set([Xr,ts,as,ns,Vn,ji,ci,is,os,ss,tn,wo,Ni]);function dde(e){if(typeof e=="string")return Jr;if(Array.isArray(e))return Hs;if(!e)return;let{type:t}=e;if(bz.has(t))return t}var el=dde,ude=e=>new Intl.ListFormat("en-US",{type:"disjunction"}).format(e);function _de(e){let t=e===null?"null":typeof e;if(t!=="string"&&t!=="object")return`Unexpected doc '${t}', -Expected it to be 'string' or 'object'.`;if(el(e))throw new Error("doc is valid.");let a=Object.prototype.toString.call(e);if(a!=="[object Object]")return`Unexpected doc '${a}'.`;let n=ude([...bz].map(i=>`'${i}'`));return`Unexpected doc.type '${e.type}'. -Expected it to be ${n}.`}var mde=class extends Error{constructor(t){super(_de(t));Qu(this,"name","InvalidDocError");this.doc=t}},ac=mde,vx={};function pde(e,t,a,n){let i=[e];for(;i.length>0;){let o=i.pop();if(o===vx){a(i.pop());continue}a&&i.push(o,vx);let s=el(o);if(!s)throw new ac(o);if((t==null?void 0:t(o))!==!1)switch(s){case Hs:case ji:{let l=s===Hs?o:o.parts;for(let d=l.length,u=d-1;u>=0;--u)i.push(l[u]);break}case ci:i.push(o.flatContents,o.breakContents);break;case Vn:if(n&&o.expandedStates)for(let l=o.expandedStates.length,d=l-1;d>=0;--d)i.push(o.expandedStates[d]);else i.push(o.contents);break;case as:case ts:case is:case wo:case os:i.push(o.contents);break;case Jr:case Xr:case ns:case ss:case tn:case Ni:break;default:throw new ac(o)}}}var Cy=pde,fde=()=>{},hde=fde;function nm(e){return{type:ts,contents:e}}function nc(e,t){return{type:as,contents:t,n:e}}function kz(e,t={}){return hde(t.expandedStates),{type:Vn,id:t.id,contents:e,break:!!t.shouldBreak,expandedStates:t.expandedStates}}function gde(e){return nc(Number.NEGATIVE_INFINITY,e)}function vde(e){return nc({type:"root"},e)}function yde(e){return nc(-1,e)}function bde(e,t){return kz(e[0],{...t,expandedStates:e})}function wz(e){return{type:ji,parts:e}}function kde(e,t="",a={}){return{type:ci,breakContents:e,flatContents:t,groupId:a.groupId}}function wde(e,t){return{type:is,contents:e,groupId:t.groupId,negate:t.negate}}function Bg(e){return{type:os,contents:e}}var Dde={type:ss},tp={type:Ni},xde={type:ns},Ty={type:tn,hard:!0},Dz={type:tn,hard:!0,literal:!0},xz={type:tn},Sde={type:tn,soft:!0},Tr=[Ty,tp],Sz=[Dz,tp],Ug={type:Xr};function Pz(e,t){let a=[];for(let n=0;n0){for(let i=0;i0?`, { ${_.join(", ")} }`:"";return`indentIfBreak(${n(o.contents)}${f})`}if(o.type===Vn){let _=[];o.break&&o.break!=="propagated"&&_.push("shouldBreak: true"),o.id&&_.push(`id: ${i(o.id)}`);let f=_.length>0?`, { ${_.join(", ")} }`:"";return o.expandedStates?`conditionalGroup([${o.expandedStates.map(p=>n(p)).join(",")}]${f})`:`group(${n(o.contents)}${f})`}if(o.type===ji)return`fill([${o.parts.map(_=>n(_)).join(", ")}])`;if(o.type===os)return"lineSuffix("+n(o.contents)+")";if(o.type===ss)return"lineSuffixBoundary";if(o.type===wo)return`label(${JSON.stringify(o.label)}, ${n(o.contents)})`;throw new Error("Unknown doc type "+o.type)}function i(o){if(typeof o!="symbol")return JSON.stringify(String(o));if(o in t)return t[o];let s=o.description||"symbol";for(let l=0;;l++){let d=s+(l>0?` #${l}`:"");if(!a.has(d))return a.add(d),t[o]=`Symbol.for(${JSON.stringify(d)})`}}}var zde=(e,t,a)=>{if(!(e&&t==null))return Array.isArray(t)||typeof t=="string"?t[a<0?t.length+a:a]:t.at(a)},Za=zde,Ade=()=>/[#*0-9]\uFE0F?\u20E3|[\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23ED-\u23EF\u23F1\u23F2\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB\u25FC\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692\u2694-\u2697\u2699\u269B\u269C\u26A0\u26A7\u26AA\u26B0\u26B1\u26BD\u26BE\u26C4\u26C8\u26CF\u26D1\u26E9\u26F0-\u26F5\u26F7\u26F8\u26FA\u2702\u2708\u2709\u270F\u2712\u2714\u2716\u271D\u2721\u2733\u2734\u2744\u2747\u2757\u2763\u27A1\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B55\u3030\u303D\u3297\u3299]\uFE0F?|[\u261D\u270C\u270D](?:\uFE0F|\uD83C[\uDFFB-\uDFFF])?|[\u270A\u270B](?:\uD83C[\uDFFB-\uDFFF])?|[\u23E9-\u23EC\u23F0\u23F3\u25FD\u2693\u26A1\u26AB\u26C5\u26CE\u26D4\u26EA\u26FD\u2705\u2728\u274C\u274E\u2753-\u2755\u2795-\u2797\u27B0\u27BF\u2B50]|\u26D3\uFE0F?(?:\u200D\uD83D\uDCA5)?|\u26F9(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|\u2764\uFE0F?(?:\u200D(?:\uD83D\uDD25|\uD83E\uDE79))?|\uD83C(?:[\uDC04\uDD70\uDD71\uDD7E\uDD7F\uDE02\uDE37\uDF21\uDF24-\uDF2C\uDF36\uDF7D\uDF96\uDF97\uDF99-\uDF9B\uDF9E\uDF9F\uDFCD\uDFCE\uDFD4-\uDFDF\uDFF5\uDFF7]\uFE0F?|[\uDF85\uDFC2\uDFC7](?:\uD83C[\uDFFB-\uDFFF])?|[\uDFC4\uDFCA](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDFCB\uDFCC](?:\uFE0F|\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDCCF\uDD8E\uDD91-\uDD9A\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF43\uDF45-\uDF4A\uDF4C-\uDF7C\uDF7E-\uDF84\uDF86-\uDF93\uDFA0-\uDFC1\uDFC5\uDFC6\uDFC8\uDFC9\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF8-\uDFFF]|\uDDE6\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF]|\uDDE7\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF]|\uDDE8\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF]|\uDDE9\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF]|\uDDEA\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA]|\uDDEB\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7]|\uDDEC\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE]|\uDDED\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA]|\uDDEE\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9]|\uDDEF\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5]|\uDDF0\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF]|\uDDF1\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE]|\uDDF2\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF]|\uDDF3\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF]|\uDDF4\uD83C\uDDF2|\uDDF5\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE]|\uDDF6\uD83C\uDDE6|\uDDF7\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC]|\uDDF8\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF]|\uDDF9\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF]|\uDDFA\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF]|\uDDFB\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA]|\uDDFC\uD83C[\uDDEB\uDDF8]|\uDDFD\uD83C\uDDF0|\uDDFE\uD83C[\uDDEA\uDDF9]|\uDDFF\uD83C[\uDDE6\uDDF2\uDDFC]|\uDF44(?:\u200D\uD83D\uDFEB)?|\uDF4B(?:\u200D\uD83D\uDFE9)?|\uDFC3(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?|\uDFF3\uFE0F?(?:\u200D(?:\u26A7\uFE0F?|\uD83C\uDF08))?|\uDFF4(?:\u200D\u2620\uFE0F?|\uDB40\uDC67\uDB40\uDC62\uDB40(?:\uDC65\uDB40\uDC6E\uDB40\uDC67|\uDC73\uDB40\uDC63\uDB40\uDC74|\uDC77\uDB40\uDC6C\uDB40\uDC73)\uDB40\uDC7F)?)|\uD83D(?:[\uDC3F\uDCFD\uDD49\uDD4A\uDD6F\uDD70\uDD73\uDD76-\uDD79\uDD87\uDD8A-\uDD8D\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA\uDECB\uDECD-\uDECF\uDEE0-\uDEE5\uDEE9\uDEF0\uDEF3]\uFE0F?|[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC](?:\uD83C[\uDFFB-\uDFFF])?|[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4\uDEB5](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDD74\uDD90](?:\uFE0F|\uD83C[\uDFFB-\uDFFF])?|[\uDC00-\uDC07\uDC09-\uDC14\uDC16-\uDC25\uDC27-\uDC3A\uDC3C-\uDC3E\uDC40\uDC44\uDC45\uDC51-\uDC65\uDC6A\uDC79-\uDC7B\uDC7D-\uDC80\uDC84\uDC88-\uDC8E\uDC90\uDC92-\uDCA9\uDCAB-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDDA4\uDDFB-\uDE2D\uDE2F-\uDE34\uDE37-\uDE41\uDE43\uDE44\uDE48-\uDE4A\uDE80-\uDEA2\uDEA4-\uDEB3\uDEB7-\uDEBF\uDEC1-\uDEC5\uDED0-\uDED2\uDED5-\uDED7\uDEDC-\uDEDF\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB\uDFF0]|\uDC08(?:\u200D\u2B1B)?|\uDC15(?:\u200D\uD83E\uDDBA)?|\uDC26(?:\u200D(?:\u2B1B|\uD83D\uDD25))?|\uDC3B(?:\u200D\u2744\uFE0F?)?|\uDC41\uFE0F?(?:\u200D\uD83D\uDDE8\uFE0F?)?|\uDC68(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDC68\uDC69]\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?)|[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?)|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFC-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFD-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFD\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFE])))?))?|\uDC69(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?[\uDC68\uDC69]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?|\uDC69\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?))|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFC-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB\uDFFD-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB-\uDFFD\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB-\uDFFE])))?))?|\uDC6F(?:\u200D[\u2640\u2642]\uFE0F?)?|\uDD75(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|\uDE2E(?:\u200D\uD83D\uDCA8)?|\uDE35(?:\u200D\uD83D\uDCAB)?|\uDE36(?:\u200D\uD83C\uDF2B\uFE0F?)?|\uDE42(?:\u200D[\u2194\u2195]\uFE0F?)?|\uDEB6(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?)|\uD83E(?:[\uDD0C\uDD0F\uDD18-\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5\uDEC3-\uDEC5\uDEF0\uDEF2-\uDEF8](?:\uD83C[\uDFFB-\uDFFF])?|[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD\uDDCF\uDDD4\uDDD6-\uDDDD](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDDDE\uDDDF](?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDD0D\uDD0E\uDD10-\uDD17\uDD20-\uDD25\uDD27-\uDD2F\uDD3A\uDD3F-\uDD45\uDD47-\uDD76\uDD78-\uDDB4\uDDB7\uDDBA\uDDBC-\uDDCC\uDDD0\uDDE0-\uDDFF\uDE70-\uDE7C\uDE80-\uDE88\uDE90-\uDEBD\uDEBF-\uDEC2\uDECE-\uDEDB\uDEE0-\uDEE8]|\uDD3C(?:\u200D[\u2640\u2642]\uFE0F?|\uD83C[\uDFFB-\uDFFF])?|\uDDCE(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?|\uDDD1(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1|\uDDD1\u200D\uD83E\uDDD2(?:\u200D\uD83E\uDDD2)?|\uDDD2(?:\u200D\uD83E\uDDD2)?))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFC-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB\uDFFD-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB-\uDFFD\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB-\uDFFE]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?))?|\uDEF1(?:\uD83C(?:\uDFFB(?:\u200D\uD83E\uDEF2\uD83C[\uDFFC-\uDFFF])?|\uDFFC(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB\uDFFD-\uDFFF])?|\uDFFD(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])?|\uDFFE(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB-\uDFFD\uDFFF])?|\uDFFF(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB-\uDFFE])?))?)/g;function Cde(e){return e===12288||e>=65281&&e<=65376||e>=65504&&e<=65510}function Tde(e){return e>=4352&&e<=4447||e===8986||e===8987||e===9001||e===9002||e>=9193&&e<=9196||e===9200||e===9203||e===9725||e===9726||e===9748||e===9749||e>=9800&&e<=9811||e===9855||e===9875||e===9889||e===9898||e===9899||e===9917||e===9918||e===9924||e===9925||e===9934||e===9940||e===9962||e===9970||e===9971||e===9973||e===9978||e===9981||e===9989||e===9994||e===9995||e===10024||e===10060||e===10062||e>=10067&&e<=10069||e===10071||e>=10133&&e<=10135||e===10160||e===10175||e===11035||e===11036||e===11088||e===11093||e>=11904&&e<=11929||e>=11931&&e<=12019||e>=12032&&e<=12245||e>=12272&&e<=12287||e>=12289&&e<=12350||e>=12353&&e<=12438||e>=12441&&e<=12543||e>=12549&&e<=12591||e>=12593&&e<=12686||e>=12688&&e<=12771||e>=12783&&e<=12830||e>=12832&&e<=12871||e>=12880&&e<=19903||e>=19968&&e<=42124||e>=42128&&e<=42182||e>=43360&&e<=43388||e>=44032&&e<=55203||e>=63744&&e<=64255||e>=65040&&e<=65049||e>=65072&&e<=65106||e>=65108&&e<=65126||e>=65128&&e<=65131||e>=94176&&e<=94180||e===94192||e===94193||e>=94208&&e<=100343||e>=100352&&e<=101589||e>=101632&&e<=101640||e>=110576&&e<=110579||e>=110581&&e<=110587||e===110589||e===110590||e>=110592&&e<=110882||e===110898||e>=110928&&e<=110930||e===110933||e>=110948&&e<=110951||e>=110960&&e<=111355||e===126980||e===127183||e===127374||e>=127377&&e<=127386||e>=127488&&e<=127490||e>=127504&&e<=127547||e>=127552&&e<=127560||e===127568||e===127569||e>=127584&&e<=127589||e>=127744&&e<=127776||e>=127789&&e<=127797||e>=127799&&e<=127868||e>=127870&&e<=127891||e>=127904&&e<=127946||e>=127951&&e<=127955||e>=127968&&e<=127984||e===127988||e>=127992&&e<=128062||e===128064||e>=128066&&e<=128252||e>=128255&&e<=128317||e>=128331&&e<=128334||e>=128336&&e<=128359||e===128378||e===128405||e===128406||e===128420||e>=128507&&e<=128591||e>=128640&&e<=128709||e===128716||e>=128720&&e<=128722||e>=128725&&e<=128727||e>=128732&&e<=128735||e===128747||e===128748||e>=128756&&e<=128764||e>=128992&&e<=129003||e===129008||e>=129292&&e<=129338||e>=129340&&e<=129349||e>=129351&&e<=129535||e>=129648&&e<=129660||e>=129664&&e<=129672||e>=129680&&e<=129725||e>=129727&&e<=129733||e>=129742&&e<=129755||e>=129760&&e<=129768||e>=129776&&e<=129784||e>=131072&&e<=196605||e>=196608&&e<=262141}var jde=e=>!(Cde(e)||Tde(e)),Nde=/[^\x20-\x7F]/;function Ide(e){if(!e)return 0;if(!Nde.test(e))return e.length;e=e.replace(Ade()," ");let t=0;for(let a of e){let n=a.codePointAt(0);n<=31||n>=127&&n<=159||n>=768&&n<=879||(t+=jde(n)?1:2)}return t}var jy=Ide,Fde=e=>{if(Array.isArray(e))return e;if(e.type!==ji)throw new Error(`Expect doc to be 'array' or '${ji}'.`);return e.parts};function ap(e,t){if(typeof e=="string")return t(e);let a=new Map;return n(e);function n(o){if(a.has(o))return a.get(o);let s=i(o);return a.set(o,s),s}function i(o){switch(el(o)){case Hs:return t(o.map(n));case ji:return t({...o,parts:o.parts.map(n)});case ci:return t({...o,breakContents:n(o.breakContents),flatContents:n(o.flatContents)});case Vn:{let{expandedStates:s,contents:l}=o;return s?(s=s.map(n),l=s[0]):l=n(l),t({...o,contents:l,expandedStates:s})}case as:case ts:case is:case wo:case os:return t({...o,contents:n(o.contents)});case Jr:case Xr:case ns:case ss:case tn:case Ni:return t(o);default:throw new ac(o)}}}function Ny(e,t,a){let n=a,i=!1;function o(s){if(i)return!1;let l=t(s);l!==void 0&&(i=!0,n=l)}return Cy(e,o),n}function Rde(e){if(e.type===Vn&&e.break||e.type===tn&&e.hard||e.type===Ni)return!0}function Ode(e){return Ny(e,Rde,!1)}function yx(e){if(e.length>0){let t=Za(!1,e,-1);!t.expandedStates&&!t.break&&(t.break="propagated")}return null}function Mde(e){let t=new Set,a=[];function n(o){if(o.type===Ni&&yx(a),o.type===Vn){if(a.push(o),t.has(o))return!1;t.add(o)}}function i(o){o.type===Vn&&a.pop().break&&yx(a)}Cy(e,n,i,!0)}function $de(e){return e.type===tn&&!e.hard?e.soft?"":" ":e.type===ci?e.flatContents:e}function Lde(e){return ap(e,$de)}function bx(e){for(e=[...e];e.length>=2&&Za(!1,e,-2).type===tn&&Za(!1,e,-1).type===Ni;)e.length-=2;if(e.length>0){let t=sd(Za(!1,e,-1));e[e.length-1]=t}return e}function sd(e){switch(el(e)){case as:case ts:case is:case Vn:case os:case wo:{let t=sd(e.contents);return{...e,contents:t}}case ci:return{...e,breakContents:sd(e.breakContents),flatContents:sd(e.flatContents)};case ji:return{...e,parts:bx(e.parts)};case Hs:return bx(e);case Jr:return e.replace(/[\n\r]*$/,"");case Xr:case ns:case ss:case tn:case Ni:break;default:throw new ac(e)}return e}function zz(e){return sd(Ude(e))}function Bde(e){switch(el(e)){case ji:if(e.parts.every(t=>t===""))return"";break;case Vn:if(!e.contents&&!e.id&&!e.break&&!e.expandedStates)return"";if(e.contents.type===Vn&&e.contents.id===e.id&&e.contents.break===e.break&&e.contents.expandedStates===e.expandedStates)return e.contents;break;case as:case ts:case is:case os:if(!e.contents)return"";break;case ci:if(!e.flatContents&&!e.breakContents)return"";break;case Hs:{let t=[];for(let a of e){if(!a)continue;let[n,...i]=Array.isArray(a)?a:[a];typeof n=="string"&&typeof Za(!1,t,-1)=="string"?t[t.length-1]+=n:t.push(n),t.push(...i)}return t.length===0?"":t.length===1?t[0]:t}case Jr:case Xr:case ns:case ss:case tn:case wo:case Ni:break;default:throw new ac(e)}return e}function Ude(e){return ap(e,t=>Bde(t))}function Vde(e,t=Sz){return ap(e,a=>typeof a=="string"?Pz(t,a.split(` -`)):a)}function qde(e){if(e.type===tn)return!0}function Wde(e){return Ny(e,qde,!1)}function Az(e,t){return e.type===wo?{...e,contents:t(e.contents)}:t(e)}var In=Symbol("MODE_BREAK"),mo=Symbol("MODE_FLAT"),rd=Symbol("cursor");function Cz(){return{value:"",length:0,queue:[]}}function Hde(e,t){return Vg(e,{type:"indent"},t)}function Kde(e,t,a){return t===Number.NEGATIVE_INFINITY?e.root||Cz():t<0?Vg(e,{type:"dedent"},a):t?t.type==="root"?{...e,root:e}:Vg(e,{type:typeof t=="string"?"stringAlign":"numberAlign",n:t},a):e}function Vg(e,t,a){let n=t.type==="dedent"?e.queue.slice(0,-1):[...e.queue,t],i="",o=0,s=0,l=0;for(let g of n)switch(g.type){case"indent":_(),a.useTabs?d(1):u(a.tabWidth);break;case"stringAlign":_(),i+=g.n,o+=g.n.length;break;case"numberAlign":s+=1,l+=g.n;break;default:throw new Error(`Unexpected type '${g.type}'`)}return p(),{...e,value:i,length:o,queue:n};function d(g){i+=" ".repeat(g),o+=a.tabWidth*g}function u(g){i+=" ".repeat(g),o+=g}function _(){a.useTabs?f():p()}function f(){s>0&&d(s),h()}function p(){l>0&&u(l),h()}function h(){s=0,l=0}}function qg(e){let t=0,a=0,n=e.length;e:for(;n--;){let i=e[n];if(i===rd){a++;continue}for(let o=i.length-1;o>=0;o--){let s=i[o];if(s===" "||s===" ")t++;else{e[n]=i.slice(0,o+1);break e}}}if(t>0||a>0)for(e.length=n+1;a-- >0;)e.push(rd);return t}function __(e,t,a,n,i,o){if(a===Number.POSITIVE_INFINITY)return!0;let s=t.length,l=[e],d=[];for(;a>=0;){if(l.length===0){if(s===0)return!0;l.push(t[--s]);continue}let{mode:u,doc:_}=l.pop();switch(el(_)){case Jr:d.push(_),a-=jy(_);break;case Hs:case ji:{let f=Fde(_);for(let p=f.length-1;p>=0;p--)l.push({mode:u,doc:f[p]});break}case ts:case as:case is:case wo:l.push({mode:u,doc:_.contents});break;case ns:a+=qg(d);break;case Vn:{if(o&&_.break)return!1;let f=_.break?In:u,p=_.expandedStates&&f===In?Za(!1,_.expandedStates,-1):_.contents;l.push({mode:f,doc:p});break}case ci:{let f=(_.groupId?i[_.groupId]||mo:u)===In?_.breakContents:_.flatContents;f&&l.push({mode:u,doc:f});break}case tn:if(u===In||_.hard)return!0;_.soft||(d.push(" "),a--);break;case os:n=!0;break;case ss:if(n)return!1;break}}return!1}function np(e,t){let a={},n=t.printWidth,i=Ay(t.endOfLine),o=0,s=[{ind:Cz(),mode:In,doc:e}],l=[],d=!1,u=[],_=0;for(Mde(e);s.length>0;){let{ind:p,mode:h,doc:g}=s.pop();switch(el(g)){case Jr:{let y=i!==` -`?ep(!1,g,` -`,i):g;l.push(y),s.length>0&&(o+=jy(y));break}case Hs:for(let y=g.length-1;y>=0;y--)s.push({ind:p,mode:h,doc:g[y]});break;case Xr:if(_>=2)throw new Error("There are too many 'cursor' in doc.");l.push(rd),_++;break;case ts:s.push({ind:Hde(p,t),mode:h,doc:g.contents});break;case as:s.push({ind:Kde(p,g.n,t),mode:h,doc:g.contents});break;case ns:o-=qg(l);break;case Vn:switch(h){case mo:if(!d){s.push({ind:p,mode:g.break?In:mo,doc:g.contents});break}case In:{d=!1;let y={ind:p,mode:mo,doc:g.contents},k=n-o,b=u.length>0;if(!g.break&&__(y,s,k,b,a))s.push(y);else if(g.expandedStates){let P=Za(!1,g.expandedStates,-1);if(g.break){s.push({ind:p,mode:In,doc:P});break}else for(let w=1;w=g.expandedStates.length){s.push({ind:p,mode:In,doc:P});break}else{let x=g.expandedStates[w],E={ind:p,mode:mo,doc:x};if(__(E,s,k,b,a)){s.push(E);break}}}else s.push({ind:p,mode:In,doc:g.contents});break}}g.id&&(a[g.id]=Za(!1,s,-1).mode);break;case ji:{let y=n-o,{parts:k}=g;if(k.length===0)break;let[b,P]=k,w={ind:p,mode:mo,doc:b},x={ind:p,mode:In,doc:b},E=__(w,[],y,u.length>0,a,!0);if(k.length===1){E?s.push(w):s.push(x);break}let C={ind:p,mode:mo,doc:P},j={ind:p,mode:In,doc:P};if(k.length===2){E?s.push(C,w):s.push(j,x);break}k.splice(0,2);let A={ind:p,mode:h,doc:wz(k)},U=k[0];__({ind:p,mode:mo,doc:[b,P,U]},[],y,u.length>0,a,!0)?s.push(A,C,w):E?s.push(A,j,w):s.push(A,j,x);break}case ci:case is:{let y=g.groupId?a[g.groupId]:h;if(y===In){let k=g.type===ci?g.breakContents:g.negate?g.contents:nm(g.contents);k&&s.push({ind:p,mode:h,doc:k})}if(y===mo){let k=g.type===ci?g.flatContents:g.negate?nm(g.contents):g.contents;k&&s.push({ind:p,mode:h,doc:k})}break}case os:u.push({ind:p,mode:h,doc:g.contents});break;case ss:u.length>0&&s.push({ind:p,mode:h,doc:Ty});break;case tn:switch(h){case mo:if(g.hard)d=!0;else{g.soft||(l.push(" "),o+=1);break}case In:if(u.length>0){s.push({ind:p,mode:h,doc:g},...u.reverse()),u.length=0;break}g.literal?p.root?(l.push(i,p.root.value),o=p.root.length):(l.push(i),o=0):(o-=qg(l),l.push(i+p.value),o=p.length);break}break;case wo:s.push({ind:p,mode:h,doc:g.contents});break;case Ni:break;default:throw new ac(g)}s.length===0&&u.length>0&&(s.push(...u.reverse()),u.length=0)}let f=l.indexOf(rd);if(f!==-1){let p=l.indexOf(rd,f+1),h=l.slice(0,f).join(""),g=l.slice(f+1,p).join(""),y=l.slice(p+1).join("");return{formatted:h+g+y,cursorNodeStart:h.length,cursorNodeText:g}}return{formatted:l.join("")}}function Yde(e,t,a=0){let n=0;for(let i=a;i1?Za(!1,e,-2):null}getValue(){return Za(!1,this.stack,-1)}getNode(e=0){let t=Bc(this,z_,Wg).call(this,e);return t===-1?null:this.stack[t]}getParentNode(e=0){return this.getNode(e+1)}call(e,...t){let{stack:a}=this,{length:n}=a,i=Za(!1,a,-1);for(let o of t)i=i[o],a.push(o,i);try{return e(this)}finally{a.length=n}}callParent(e,t=0){let a=Bc(this,z_,Wg).call(this,t+1),n=this.stack.splice(a+1);try{return e(this)}finally{this.stack.push(...n)}}each(e,...t){let{stack:a}=this,{length:n}=a,i=Za(!1,a,-1);for(let o of t)i=i[o],a.push(o,i);try{for(let o=0;o{a[i]=e(n,i,o)},...t),a}match(...e){let t=this.stack.length-1,a=null,n=this.stack[t--];for(let i of e){if(n===void 0)return!1;let o=null;if(typeof a=="number"&&(o=a,a=this.stack[t--],n=this.stack[t--]),i&&!i(n,a,o))return!1;a=this.stack[t--],n=this.stack[t--]}return!0}findAncestor(e){for(let t of Bc(this,Zc,A_).call(this))if(e(t))return t}hasAncestor(e){for(let t of Bc(this,Zc,A_).call(this))if(e(t))return!0;return!1}};z_=new WeakSet,Wg=function(e){let{stack:t}=this;for(let a=t.length-1;a>=0;a-=2)if(!Array.isArray(t[a])&&--e<0)return a;return-1},Zc=new WeakSet,A_=function*(){let{stack:e}=this;for(let t=e.length-3;t>=0;t-=2){let a=e[t];Array.isArray(a)||(yield a)}};var Gde=Zde,Tz=new Proxy(()=>{},{get:()=>Tz}),Hg=Tz;function Qde(e){return e!==null&&typeof e=="object"}var Jde=Qde;function*jz(e,t){let{getVisitorKeys:a,filter:n=()=>!0}=t,i=o=>Jde(o)&&n(o);for(let o of a(e)){let s=e[o];if(Array.isArray(s))for(let l of s)i(l)&&(yield l);else i(s)&&(yield s)}}function*Xde(e,t){let a=[e];for(let n=0;n{let i=!!(n!=null&&n.backwards);if(a===!1)return!1;let{length:o}=t,s=a;for(;s>=0&&snew Intl.ListFormat("en-US",{type:"disjunction"}).format(e);function dde(e){let t=e===null?"null":typeof e;if(t!=="string"&&t!=="object")return`Unexpected doc '${t}', +Expected it to be 'string' or 'object'.`;if(el(e))throw new Error("doc is valid.");let a=Object.prototype.toString.call(e);if(a!=="[object Object]")return`Unexpected doc '${a}'.`;let n=cde([...bP].map(i=>`'${i}'`));return`Unexpected doc.type '${e.type}'. +Expected it to be ${n}.`}var ude=class extends Error{constructor(t){super(dde(t));Qu(this,"name","InvalidDocError");this.doc=t}},ac=ude,v2={};function _de(e,t,a,n){let i=[e];for(;i.length>0;){let o=i.pop();if(o===v2){a(i.pop());continue}a&&i.push(o,v2);let r=el(o);if(!r)throw new ac(o);if((t==null?void 0:t(o))!==!1)switch(r){case Wr:case Ti:{let l=r===Wr?o:o.parts;for(let d=l.length,u=d-1;u>=0;--u)i.push(l[u]);break}case ci:i.push(o.flatContents,o.breakContents);break;case Vn:if(n&&o.expandedStates)for(let l=o.expandedStates.length,d=l-1;d>=0;--d)i.push(o.expandedStates[d]);else i.push(o.contents);break;case ar:case tr:case ir:case wo:case or:i.push(o.contents);break;case Js:case Xs:case nr:case rr:case tn:case Ii:break;default:throw new ac(o)}}}var Cy=_de,mde=()=>{},pde=mde;function nm(e){return{type:tr,contents:e}}function nc(e,t){return{type:ar,contents:t,n:e}}function kP(e,t={}){return pde(t.expandedStates),{type:Vn,id:t.id,contents:e,break:!!t.shouldBreak,expandedStates:t.expandedStates}}function fde(e){return nc(Number.NEGATIVE_INFINITY,e)}function hde(e){return nc({type:"root"},e)}function gde(e){return nc(-1,e)}function vde(e,t){return kP(e[0],{...t,expandedStates:e})}function wP(e){return{type:Ti,parts:e}}function yde(e,t="",a={}){return{type:ci,breakContents:e,flatContents:t,groupId:a.groupId}}function bde(e,t){return{type:ir,contents:e,groupId:t.groupId,negate:t.negate}}function Lg(e){return{type:or,contents:e}}var kde={type:rr},ep={type:Ii},wde={type:nr},jy={type:tn,hard:!0},xP={type:tn,hard:!0,literal:!0},DP={type:tn},xde={type:tn,soft:!0},js=[jy,ep],SP=[xP,ep],Bg={type:Xs};function zP(e,t){let a=[];for(let n=0;n0){for(let i=0;i0?`, { ${_.join(", ")} }`:"";return`indentIfBreak(${n(o.contents)}${f})`}if(o.type===Vn){let _=[];o.break&&o.break!=="propagated"&&_.push("shouldBreak: true"),o.id&&_.push(`id: ${i(o.id)}`);let f=_.length>0?`, { ${_.join(", ")} }`:"";return o.expandedStates?`conditionalGroup([${o.expandedStates.map(p=>n(p)).join(",")}]${f})`:`group(${n(o.contents)}${f})`}if(o.type===Ti)return`fill([${o.parts.map(_=>n(_)).join(", ")}])`;if(o.type===or)return"lineSuffix("+n(o.contents)+")";if(o.type===rr)return"lineSuffixBoundary";if(o.type===wo)return`label(${JSON.stringify(o.label)}, ${n(o.contents)})`;throw new Error("Unknown doc type "+o.type)}function i(o){if(typeof o!="symbol")return JSON.stringify(String(o));if(o in t)return t[o];let r=o.description||"symbol";for(let l=0;;l++){let d=r+(l>0?` #${l}`:"");if(!a.has(d))return a.add(d),t[o]=`Symbol.for(${JSON.stringify(d)})`}}}var zde=(e,t,a)=>{if(!(e&&t==null))return Array.isArray(t)||typeof t=="string"?t[a<0?t.length+a:a]:t.at(a)},Za=zde,Pde=()=>/[#*0-9]\uFE0F?\u20E3|[\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23ED-\u23EF\u23F1\u23F2\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB\u25FC\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692\u2694-\u2697\u2699\u269B\u269C\u26A0\u26A7\u26AA\u26B0\u26B1\u26BD\u26BE\u26C4\u26C8\u26CF\u26D1\u26E9\u26F0-\u26F5\u26F7\u26F8\u26FA\u2702\u2708\u2709\u270F\u2712\u2714\u2716\u271D\u2721\u2733\u2734\u2744\u2747\u2757\u2763\u27A1\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B55\u3030\u303D\u3297\u3299]\uFE0F?|[\u261D\u270C\u270D](?:\uFE0F|\uD83C[\uDFFB-\uDFFF])?|[\u270A\u270B](?:\uD83C[\uDFFB-\uDFFF])?|[\u23E9-\u23EC\u23F0\u23F3\u25FD\u2693\u26A1\u26AB\u26C5\u26CE\u26D4\u26EA\u26FD\u2705\u2728\u274C\u274E\u2753-\u2755\u2795-\u2797\u27B0\u27BF\u2B50]|\u26D3\uFE0F?(?:\u200D\uD83D\uDCA5)?|\u26F9(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|\u2764\uFE0F?(?:\u200D(?:\uD83D\uDD25|\uD83E\uDE79))?|\uD83C(?:[\uDC04\uDD70\uDD71\uDD7E\uDD7F\uDE02\uDE37\uDF21\uDF24-\uDF2C\uDF36\uDF7D\uDF96\uDF97\uDF99-\uDF9B\uDF9E\uDF9F\uDFCD\uDFCE\uDFD4-\uDFDF\uDFF5\uDFF7]\uFE0F?|[\uDF85\uDFC2\uDFC7](?:\uD83C[\uDFFB-\uDFFF])?|[\uDFC4\uDFCA](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDFCB\uDFCC](?:\uFE0F|\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDCCF\uDD8E\uDD91-\uDD9A\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF43\uDF45-\uDF4A\uDF4C-\uDF7C\uDF7E-\uDF84\uDF86-\uDF93\uDFA0-\uDFC1\uDFC5\uDFC6\uDFC8\uDFC9\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF8-\uDFFF]|\uDDE6\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF]|\uDDE7\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF]|\uDDE8\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF]|\uDDE9\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF]|\uDDEA\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA]|\uDDEB\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7]|\uDDEC\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE]|\uDDED\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA]|\uDDEE\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9]|\uDDEF\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5]|\uDDF0\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF]|\uDDF1\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE]|\uDDF2\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF]|\uDDF3\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF]|\uDDF4\uD83C\uDDF2|\uDDF5\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE]|\uDDF6\uD83C\uDDE6|\uDDF7\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC]|\uDDF8\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF]|\uDDF9\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF]|\uDDFA\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF]|\uDDFB\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA]|\uDDFC\uD83C[\uDDEB\uDDF8]|\uDDFD\uD83C\uDDF0|\uDDFE\uD83C[\uDDEA\uDDF9]|\uDDFF\uD83C[\uDDE6\uDDF2\uDDFC]|\uDF44(?:\u200D\uD83D\uDFEB)?|\uDF4B(?:\u200D\uD83D\uDFE9)?|\uDFC3(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?|\uDFF3\uFE0F?(?:\u200D(?:\u26A7\uFE0F?|\uD83C\uDF08))?|\uDFF4(?:\u200D\u2620\uFE0F?|\uDB40\uDC67\uDB40\uDC62\uDB40(?:\uDC65\uDB40\uDC6E\uDB40\uDC67|\uDC73\uDB40\uDC63\uDB40\uDC74|\uDC77\uDB40\uDC6C\uDB40\uDC73)\uDB40\uDC7F)?)|\uD83D(?:[\uDC3F\uDCFD\uDD49\uDD4A\uDD6F\uDD70\uDD73\uDD76-\uDD79\uDD87\uDD8A-\uDD8D\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA\uDECB\uDECD-\uDECF\uDEE0-\uDEE5\uDEE9\uDEF0\uDEF3]\uFE0F?|[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC](?:\uD83C[\uDFFB-\uDFFF])?|[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4\uDEB5](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDD74\uDD90](?:\uFE0F|\uD83C[\uDFFB-\uDFFF])?|[\uDC00-\uDC07\uDC09-\uDC14\uDC16-\uDC25\uDC27-\uDC3A\uDC3C-\uDC3E\uDC40\uDC44\uDC45\uDC51-\uDC65\uDC6A\uDC79-\uDC7B\uDC7D-\uDC80\uDC84\uDC88-\uDC8E\uDC90\uDC92-\uDCA9\uDCAB-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDDA4\uDDFB-\uDE2D\uDE2F-\uDE34\uDE37-\uDE41\uDE43\uDE44\uDE48-\uDE4A\uDE80-\uDEA2\uDEA4-\uDEB3\uDEB7-\uDEBF\uDEC1-\uDEC5\uDED0-\uDED2\uDED5-\uDED7\uDEDC-\uDEDF\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB\uDFF0]|\uDC08(?:\u200D\u2B1B)?|\uDC15(?:\u200D\uD83E\uDDBA)?|\uDC26(?:\u200D(?:\u2B1B|\uD83D\uDD25))?|\uDC3B(?:\u200D\u2744\uFE0F?)?|\uDC41\uFE0F?(?:\u200D\uD83D\uDDE8\uFE0F?)?|\uDC68(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDC68\uDC69]\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?)|[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?)|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFC-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFD-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFD\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFE])))?))?|\uDC69(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?[\uDC68\uDC69]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?|\uDC69\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?))|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFC-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB\uDFFD-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB-\uDFFD\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB-\uDFFE])))?))?|\uDC6F(?:\u200D[\u2640\u2642]\uFE0F?)?|\uDD75(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|\uDE2E(?:\u200D\uD83D\uDCA8)?|\uDE35(?:\u200D\uD83D\uDCAB)?|\uDE36(?:\u200D\uD83C\uDF2B\uFE0F?)?|\uDE42(?:\u200D[\u2194\u2195]\uFE0F?)?|\uDEB6(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?)|\uD83E(?:[\uDD0C\uDD0F\uDD18-\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5\uDEC3-\uDEC5\uDEF0\uDEF2-\uDEF8](?:\uD83C[\uDFFB-\uDFFF])?|[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD\uDDCF\uDDD4\uDDD6-\uDDDD](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDDDE\uDDDF](?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDD0D\uDD0E\uDD10-\uDD17\uDD20-\uDD25\uDD27-\uDD2F\uDD3A\uDD3F-\uDD45\uDD47-\uDD76\uDD78-\uDDB4\uDDB7\uDDBA\uDDBC-\uDDCC\uDDD0\uDDE0-\uDDFF\uDE70-\uDE7C\uDE80-\uDE88\uDE90-\uDEBD\uDEBF-\uDEC2\uDECE-\uDEDB\uDEE0-\uDEE8]|\uDD3C(?:\u200D[\u2640\u2642]\uFE0F?|\uD83C[\uDFFB-\uDFFF])?|\uDDCE(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?|\uDDD1(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1|\uDDD1\u200D\uD83E\uDDD2(?:\u200D\uD83E\uDDD2)?|\uDDD2(?:\u200D\uD83E\uDDD2)?))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFC-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB\uDFFD-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB-\uDFFD\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB-\uDFFE]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?))?|\uDEF1(?:\uD83C(?:\uDFFB(?:\u200D\uD83E\uDEF2\uD83C[\uDFFC-\uDFFF])?|\uDFFC(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB\uDFFD-\uDFFF])?|\uDFFD(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])?|\uDFFE(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB-\uDFFD\uDFFF])?|\uDFFF(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB-\uDFFE])?))?)/g;function Ede(e){return e===12288||e>=65281&&e<=65376||e>=65504&&e<=65510}function Ade(e){return e>=4352&&e<=4447||e===8986||e===8987||e===9001||e===9002||e>=9193&&e<=9196||e===9200||e===9203||e===9725||e===9726||e===9748||e===9749||e>=9800&&e<=9811||e===9855||e===9875||e===9889||e===9898||e===9899||e===9917||e===9918||e===9924||e===9925||e===9934||e===9940||e===9962||e===9970||e===9971||e===9973||e===9978||e===9981||e===9989||e===9994||e===9995||e===10024||e===10060||e===10062||e>=10067&&e<=10069||e===10071||e>=10133&&e<=10135||e===10160||e===10175||e===11035||e===11036||e===11088||e===11093||e>=11904&&e<=11929||e>=11931&&e<=12019||e>=12032&&e<=12245||e>=12272&&e<=12287||e>=12289&&e<=12350||e>=12353&&e<=12438||e>=12441&&e<=12543||e>=12549&&e<=12591||e>=12593&&e<=12686||e>=12688&&e<=12771||e>=12783&&e<=12830||e>=12832&&e<=12871||e>=12880&&e<=19903||e>=19968&&e<=42124||e>=42128&&e<=42182||e>=43360&&e<=43388||e>=44032&&e<=55203||e>=63744&&e<=64255||e>=65040&&e<=65049||e>=65072&&e<=65106||e>=65108&&e<=65126||e>=65128&&e<=65131||e>=94176&&e<=94180||e===94192||e===94193||e>=94208&&e<=100343||e>=100352&&e<=101589||e>=101632&&e<=101640||e>=110576&&e<=110579||e>=110581&&e<=110587||e===110589||e===110590||e>=110592&&e<=110882||e===110898||e>=110928&&e<=110930||e===110933||e>=110948&&e<=110951||e>=110960&&e<=111355||e===126980||e===127183||e===127374||e>=127377&&e<=127386||e>=127488&&e<=127490||e>=127504&&e<=127547||e>=127552&&e<=127560||e===127568||e===127569||e>=127584&&e<=127589||e>=127744&&e<=127776||e>=127789&&e<=127797||e>=127799&&e<=127868||e>=127870&&e<=127891||e>=127904&&e<=127946||e>=127951&&e<=127955||e>=127968&&e<=127984||e===127988||e>=127992&&e<=128062||e===128064||e>=128066&&e<=128252||e>=128255&&e<=128317||e>=128331&&e<=128334||e>=128336&&e<=128359||e===128378||e===128405||e===128406||e===128420||e>=128507&&e<=128591||e>=128640&&e<=128709||e===128716||e>=128720&&e<=128722||e>=128725&&e<=128727||e>=128732&&e<=128735||e===128747||e===128748||e>=128756&&e<=128764||e>=128992&&e<=129003||e===129008||e>=129292&&e<=129338||e>=129340&&e<=129349||e>=129351&&e<=129535||e>=129648&&e<=129660||e>=129664&&e<=129672||e>=129680&&e<=129725||e>=129727&&e<=129733||e>=129742&&e<=129755||e>=129760&&e<=129768||e>=129776&&e<=129784||e>=131072&&e<=196605||e>=196608&&e<=262141}var Cde=e=>!(Ede(e)||Ade(e)),jde=/[^\x20-\x7F]/;function Tde(e){if(!e)return 0;if(!jde.test(e))return e.length;e=e.replace(Pde()," ");let t=0;for(let a of e){let n=a.codePointAt(0);n<=31||n>=127&&n<=159||n>=768&&n<=879||(t+=Cde(n)?1:2)}return t}var Ty=Tde,Ide=e=>{if(Array.isArray(e))return e;if(e.type!==Ti)throw new Error(`Expect doc to be 'array' or '${Ti}'.`);return e.parts};function tp(e,t){if(typeof e=="string")return t(e);let a=new Map;return n(e);function n(o){if(a.has(o))return a.get(o);let r=i(o);return a.set(o,r),r}function i(o){switch(el(o)){case Wr:return t(o.map(n));case Ti:return t({...o,parts:o.parts.map(n)});case ci:return t({...o,breakContents:n(o.breakContents),flatContents:n(o.flatContents)});case Vn:{let{expandedStates:r,contents:l}=o;return r?(r=r.map(n),l=r[0]):l=n(l),t({...o,contents:l,expandedStates:r})}case ar:case tr:case ir:case wo:case or:return t({...o,contents:n(o.contents)});case Js:case Xs:case nr:case rr:case tn:case Ii:return t(o);default:throw new ac(o)}}}function Iy(e,t,a){let n=a,i=!1;function o(r){if(i)return!1;let l=t(r);l!==void 0&&(i=!0,n=l)}return Cy(e,o),n}function Nde(e){if(e.type===Vn&&e.break||e.type===tn&&e.hard||e.type===Ii)return!0}function Fde(e){return Iy(e,Nde,!1)}function y2(e){if(e.length>0){let t=Za(!1,e,-1);!t.expandedStates&&!t.break&&(t.break="propagated")}return null}function Mde(e){let t=new Set,a=[];function n(o){if(o.type===Ii&&y2(a),o.type===Vn){if(a.push(o),t.has(o))return!1;t.add(o)}}function i(o){o.type===Vn&&a.pop().break&&y2(a)}Cy(e,n,i,!0)}function Rde(e){return e.type===tn&&!e.hard?e.soft?"":" ":e.type===ci?e.flatContents:e}function Ode(e){return tp(e,Rde)}function b2(e){for(e=[...e];e.length>=2&&Za(!1,e,-2).type===tn&&Za(!1,e,-1).type===Ii;)e.length-=2;if(e.length>0){let t=rd(Za(!1,e,-1));e[e.length-1]=t}return e}function rd(e){switch(el(e)){case ar:case tr:case ir:case Vn:case or:case wo:{let t=rd(e.contents);return{...e,contents:t}}case ci:return{...e,breakContents:rd(e.breakContents),flatContents:rd(e.flatContents)};case Ti:return{...e,parts:b2(e.parts)};case Wr:return b2(e);case Js:return e.replace(/[\n\r]*$/,"");case Xs:case nr:case rr:case tn:case Ii:break;default:throw new ac(e)}return e}function EP(e){return rd(Lde(e))}function $de(e){switch(el(e)){case Ti:if(e.parts.every(t=>t===""))return"";break;case Vn:if(!e.contents&&!e.id&&!e.break&&!e.expandedStates)return"";if(e.contents.type===Vn&&e.contents.id===e.id&&e.contents.break===e.break&&e.contents.expandedStates===e.expandedStates)return e.contents;break;case ar:case tr:case ir:case or:if(!e.contents)return"";break;case ci:if(!e.flatContents&&!e.breakContents)return"";break;case Wr:{let t=[];for(let a of e){if(!a)continue;let[n,...i]=Array.isArray(a)?a:[a];typeof n=="string"&&typeof Za(!1,t,-1)=="string"?t[t.length-1]+=n:t.push(n),t.push(...i)}return t.length===0?"":t.length===1?t[0]:t}case Js:case Xs:case nr:case rr:case tn:case wo:case Ii:break;default:throw new ac(e)}return e}function Lde(e){return tp(e,t=>$de(t))}function Bde(e,t=SP){return tp(e,a=>typeof a=="string"?zP(t,a.split(` +`)):a)}function Ude(e){if(e.type===tn)return!0}function Vde(e){return Iy(e,Ude,!1)}function AP(e,t){return e.type===wo?{...e,contents:t(e.contents)}:t(e)}var Nn=Symbol("MODE_BREAK"),mo=Symbol("MODE_FLAT"),sd=Symbol("cursor");function CP(){return{value:"",length:0,queue:[]}}function qde(e,t){return Ug(e,{type:"indent"},t)}function Hde(e,t,a){return t===Number.NEGATIVE_INFINITY?e.root||CP():t<0?Ug(e,{type:"dedent"},a):t?t.type==="root"?{...e,root:e}:Ug(e,{type:typeof t=="string"?"stringAlign":"numberAlign",n:t},a):e}function Ug(e,t,a){let n=t.type==="dedent"?e.queue.slice(0,-1):[...e.queue,t],i="",o=0,r=0,l=0;for(let g of n)switch(g.type){case"indent":_(),a.useTabs?d(1):u(a.tabWidth);break;case"stringAlign":_(),i+=g.n,o+=g.n.length;break;case"numberAlign":r+=1,l+=g.n;break;default:throw new Error(`Unexpected type '${g.type}'`)}return p(),{...e,value:i,length:o,queue:n};function d(g){i+=" ".repeat(g),o+=a.tabWidth*g}function u(g){i+=" ".repeat(g),o+=g}function _(){a.useTabs?f():p()}function f(){r>0&&d(r),h()}function p(){l>0&&u(l),h()}function h(){r=0,l=0}}function Vg(e){let t=0,a=0,n=e.length;e:for(;n--;){let i=e[n];if(i===sd){a++;continue}for(let o=i.length-1;o>=0;o--){let r=i[o];if(r===" "||r===" ")t++;else{e[n]=i.slice(0,o+1);break e}}}if(t>0||a>0)for(e.length=n+1;a-- >0;)e.push(sd);return t}function __(e,t,a,n,i,o){if(a===Number.POSITIVE_INFINITY)return!0;let r=t.length,l=[e],d=[];for(;a>=0;){if(l.length===0){if(r===0)return!0;l.push(t[--r]);continue}let{mode:u,doc:_}=l.pop();switch(el(_)){case Js:d.push(_),a-=Ty(_);break;case Wr:case Ti:{let f=Ide(_);for(let p=f.length-1;p>=0;p--)l.push({mode:u,doc:f[p]});break}case tr:case ar:case ir:case wo:l.push({mode:u,doc:_.contents});break;case nr:a+=Vg(d);break;case Vn:{if(o&&_.break)return!1;let f=_.break?Nn:u,p=_.expandedStates&&f===Nn?Za(!1,_.expandedStates,-1):_.contents;l.push({mode:f,doc:p});break}case ci:{let f=(_.groupId?i[_.groupId]||mo:u)===Nn?_.breakContents:_.flatContents;f&&l.push({mode:u,doc:f});break}case tn:if(u===Nn||_.hard)return!0;_.soft||(d.push(" "),a--);break;case or:n=!0;break;case rr:if(n)return!1;break}}return!1}function ap(e,t){let a={},n=t.printWidth,i=Ay(t.endOfLine),o=0,r=[{ind:CP(),mode:Nn,doc:e}],l=[],d=!1,u=[],_=0;for(Mde(e);r.length>0;){let{ind:p,mode:h,doc:g}=r.pop();switch(el(g)){case Js:{let y=i!==` +`?Xm(!1,g,` +`,i):g;l.push(y),r.length>0&&(o+=Ty(y));break}case Wr:for(let y=g.length-1;y>=0;y--)r.push({ind:p,mode:h,doc:g[y]});break;case Xs:if(_>=2)throw new Error("There are too many 'cursor' in doc.");l.push(sd),_++;break;case tr:r.push({ind:qde(p,t),mode:h,doc:g.contents});break;case ar:r.push({ind:Hde(p,g.n,t),mode:h,doc:g.contents});break;case nr:o-=Vg(l);break;case Vn:switch(h){case mo:if(!d){r.push({ind:p,mode:g.break?Nn:mo,doc:g.contents});break}case Nn:{d=!1;let y={ind:p,mode:mo,doc:g.contents},k=n-o,b=u.length>0;if(!g.break&&__(y,r,k,b,a))r.push(y);else if(g.expandedStates){let z=Za(!1,g.expandedStates,-1);if(g.break){r.push({ind:p,mode:Nn,doc:z});break}else for(let w=1;w=g.expandedStates.length){r.push({ind:p,mode:Nn,doc:z});break}else{let D=g.expandedStates[w],E={ind:p,mode:mo,doc:D};if(__(E,r,k,b,a)){r.push(E);break}}}else r.push({ind:p,mode:Nn,doc:g.contents});break}}g.id&&(a[g.id]=Za(!1,r,-1).mode);break;case Ti:{let y=n-o,{parts:k}=g;if(k.length===0)break;let[b,z]=k,w={ind:p,mode:mo,doc:b},D={ind:p,mode:Nn,doc:b},E=__(w,[],y,u.length>0,a,!0);if(k.length===1){E?r.push(w):r.push(D);break}let T={ind:p,mode:mo,doc:z},N={ind:p,mode:Nn,doc:z};if(k.length===2){E?r.push(T,w):r.push(N,D);break}k.splice(0,2);let j={ind:p,mode:h,doc:wP(k)},q=k[0];__({ind:p,mode:mo,doc:[b,z,q]},[],y,u.length>0,a,!0)?r.push(j,T,w):E?r.push(j,N,w):r.push(j,N,D);break}case ci:case ir:{let y=g.groupId?a[g.groupId]:h;if(y===Nn){let k=g.type===ci?g.breakContents:g.negate?g.contents:nm(g.contents);k&&r.push({ind:p,mode:h,doc:k})}if(y===mo){let k=g.type===ci?g.flatContents:g.negate?nm(g.contents):g.contents;k&&r.push({ind:p,mode:h,doc:k})}break}case or:u.push({ind:p,mode:h,doc:g.contents});break;case rr:u.length>0&&r.push({ind:p,mode:h,doc:jy});break;case tn:switch(h){case mo:if(g.hard)d=!0;else{g.soft||(l.push(" "),o+=1);break}case Nn:if(u.length>0){r.push({ind:p,mode:h,doc:g},...u.reverse()),u.length=0;break}g.literal?p.root?(l.push(i,p.root.value),o=p.root.length):(l.push(i),o=0):(o-=Vg(l),l.push(i+p.value),o=p.length);break}break;case wo:r.push({ind:p,mode:h,doc:g.contents});break;case Ii:break;default:throw new ac(g)}r.length===0&&u.length>0&&(r.push(...u.reverse()),u.length=0)}let f=l.indexOf(sd);if(f!==-1){let p=l.indexOf(sd,f+1),h=l.slice(0,f).join(""),g=l.slice(f+1,p).join(""),y=l.slice(p+1).join("");return{formatted:h+g+y,cursorNodeStart:h.length,cursorNodeText:g}}return{formatted:l.join("")}}function Wde(e,t,a=0){let n=0;for(let i=a;i1?Za(!1,e,-2):null}getValue(){return Za(!1,this.stack,-1)}getNode(e=0){let t=Bc(this,E_,qg).call(this,e);return t===-1?null:this.stack[t]}getParentNode(e=0){return this.getNode(e+1)}call(e,...t){let{stack:a}=this,{length:n}=a,i=Za(!1,a,-1);for(let o of t)i=i[o],a.push(o,i);try{return e(this)}finally{a.length=n}}callParent(e,t=0){let a=Bc(this,E_,qg).call(this,t+1),n=this.stack.splice(a+1);try{return e(this)}finally{this.stack.push(...n)}}each(e,...t){let{stack:a}=this,{length:n}=a,i=Za(!1,a,-1);for(let o of t)i=i[o],a.push(o,i);try{for(let o=0;o{a[i]=e(n,i,o)},...t),a}match(...e){let t=this.stack.length-1,a=null,n=this.stack[t--];for(let i of e){if(n===void 0)return!1;let o=null;if(typeof a=="number"&&(o=a,a=this.stack[t--],n=this.stack[t--]),i&&!i(n,a,o))return!1;a=this.stack[t--],n=this.stack[t--]}return!0}findAncestor(e){for(let t of Bc(this,Zc,A_).call(this))if(e(t))return t}hasAncestor(e){for(let t of Bc(this,Zc,A_).call(this))if(e(t))return!0;return!1}};E_=new WeakSet,qg=function(e){let{stack:t}=this;for(let a=t.length-1;a>=0;a-=2)if(!Array.isArray(t[a])&&--e<0)return a;return-1},Zc=new WeakSet,A_=function*(){let{stack:e}=this;for(let t=e.length-3;t>=0;t-=2){let a=e[t];Array.isArray(a)||(yield a)}};var Yde=Kde,jP=new Proxy(()=>{},{get:()=>jP}),Hg=jP;function Zde(e){return e!==null&&typeof e=="object"}var Gde=Zde;function*TP(e,t){let{getVisitorKeys:a,filter:n=()=>!0}=t,i=o=>Gde(o)&&n(o);for(let o of a(e)){let r=e[o];if(Array.isArray(r))for(let l of r)i(l)&&(yield l);else i(r)&&(yield r)}}function*Qde(e,t){let a=[e];for(let n=0;n{let i=!!(n!=null&&n.backwards);if(a===!1)return!1;let{length:o}=t,r=a;for(;r>=0&&r0}var iue=nue,Fz=new Set(["tokens","comments","parent","enclosingNode","precedingNode","followingNode"]),oue=e=>Object.keys(e).filter(t=>!Fz.has(t));function sue(e){return e?t=>e(t,Fz):oue}var ip=sue;function rue(e){let t=e.type||e.kind||"(unknown type)",a=String(e.name||e.id&&(typeof e.id=="object"?e.id.name:e.id)||e.key&&(typeof e.key=="object"?e.key.name:e.key)||e.value&&(typeof e.value=="object"?"":String(e.value))||e.operator||"");return a.length>20&&(a=a.slice(0,19)+"…"),t+(a?" "+a:"")}function Fy(e,t){(e.comments??(e.comments=[])).push(t),t.printed=!1,t.nodeDescription=rue(e)}function zl(e,t){t.leading=!0,t.trailing=!1,Fy(e,t)}function gr(e,t,a){t.leading=!1,t.trailing=!1,a&&(t.marker=a),Fy(e,t)}function Al(e,t){t.leading=!1,t.trailing=!0,Fy(e,t)}var Ah=new WeakMap;function Ry(e,t){if(Ah.has(e))return Ah.get(e);let{printer:{getCommentChildNodes:a,canAttachComment:n,getVisitorKeys:i},locStart:o,locEnd:s}=t;if(!n)return[];let l=((a==null?void 0:a(e,t))??[...jz(e,{getVisitorKeys:ip(i)})]).flatMap(d=>n(d)?[d]:Ry(d,t));return l.sort((d,u)=>o(d)-o(u)||s(d)-s(u)),Ah.set(e,l),l}function Rz(e,t,a,n){let{locStart:i,locEnd:o}=a,s=i(t),l=o(t),d=Ry(e,a),u,_,f=0,p=d.length;for(;f>1,g=d[h],y=i(g),k=o(g);if(y<=s&&l<=k)return Rz(g,t,a,g);if(k<=s){u=g,f=h+1;continue}if(l<=y){_=g,p=h;continue}throw new Error("Comment location overlaps with node location")}if((n==null?void 0:n.type)==="TemplateLiteral"){let{quasis:h}=n,g=Th(h,t,a);u&&Th(h,u,a)!==g&&(u=null),_&&Th(h,_,a)!==g&&(_=null)}return{enclosingNode:n,precedingNode:u,followingNode:_}}var Ch=()=>!1;function lue(e,t){let{comments:a}=e;if(delete e.comments,!iue(a)||!t.printer.canAttachComment)return;let n=[],{locStart:i,locEnd:o,printer:{experimentalFeatures:{avoidAstMutation:s=!1}={},handleComments:l={}},originalText:d}=t,{ownLine:u=Ch,endOfLine:_=Ch,remaining:f=Ch}=l,p=a.map((h,g)=>({...Rz(e,h,t),comment:h,text:d,options:t,ast:e,isLastComment:a.length-1===g}));for(let[h,g]of p.entries()){let{comment:y,precedingNode:k,enclosingNode:b,followingNode:P,text:w,options:x,ast:E,isLastComment:C}=g;if(x.parser==="json"||x.parser==="json5"||x.parser==="jsonc"||x.parser==="__js_expression"||x.parser==="__ts_expression"||x.parser==="__vue_expression"||x.parser==="__vue_ts_expression"){if(i(y)-i(E)<=0){zl(E,y);continue}if(o(y)-o(E)>=0){Al(E,y);continue}}let j;if(s?j=[g]:(y.enclosingNode=b,y.precedingNode=k,y.followingNode=P,j=[y,w,x,E,C]),cue(w,x,p,h))y.placement="ownLine",u(...j)||(P?zl(P,y):k?Al(k,y):gr(b||E,y));else if(due(w,x,p,h))y.placement="endOfLine",_(...j)||(k?Al(k,y):P?zl(P,y):gr(b||E,y));else if(y.placement="remaining",!f(...j))if(k&&P){let A=n.length;A>0&&n[A-1].followingNode!==P&&kx(n,x),n.push(g)}else k?Al(k,y):P?zl(P,y):gr(b||E,y)}if(kx(n,t),!s)for(let h of a)delete h.precedingNode,delete h.enclosingNode,delete h.followingNode}var Oz=e=>!/[\S\n\u2028\u2029]/.test(e);function cue(e,t,a,n){let{comment:i,precedingNode:o}=a[n],{locStart:s,locEnd:l}=t,d=s(i);if(o)for(let u=n-1;u>=0;u--){let{comment:_,precedingNode:f}=a[u];if(f!==o||!Oz(e.slice(l(_),d)))break;d=s(_)}return Ms(e,d,{backwards:!0})}function due(e,t,a,n){let{comment:i,followingNode:o}=a[n],{locStart:s,locEnd:l}=t,d=l(i);if(o)for(let u=n+1;u0;--d){let{comment:u,precedingNode:_,followingNode:f}=e[d-1];Hg.strictEqual(_,o),Hg.strictEqual(f,s);let p=t.originalText.slice(t.locEnd(u),l);if(((n=(a=t.printer).isGap)==null?void 0:n.call(a,p,t))??/^[\s(]*$/.test(p))l=t.locStart(u);else break}for(let[u,{comment:_}]of e.entries())u1&&u.comments.sort((_,f)=>t.locStart(_)-t.locStart(f));e.length=0}function Th(e,t,a){let n=a.locStart(t)-1;for(let i=1;i!n.has(l)).length===0)return{leading:"",trailing:""};let i=[],o=[],s;return e.each(()=>{let l=e.node;if(n!=null&&n.has(l))return;let{leading:d,trailing:u}=l;d?i.push(_ue(e,t)):u&&(s=mue(e,t,s),o.push(s.doc))},"comments"),{leading:i,trailing:o}}function fue(e,t,a){let{leading:n,trailing:i}=pue(e,a);return!n&&!i?t:Az(t,o=>[n,o,i])}function hue(e){let{[Symbol.for("comments")]:t,[Symbol.for("printedComments")]:a}=e;for(let n of t){if(!n.printed&&!a.has(n))throw new Error('Comment "'+n.value.trim()+'" was not printed. Please report this error!');delete n.printed}}var $z=class extends Error{constructor(){super(...arguments);Qu(this,"name","ConfigError")}},wx=class extends Error{constructor(){super(...arguments);Qu(this,"name","UndefinedParserError")}},gue={cursorOffset:{category:"Special",type:"int",default:-1,range:{start:-1,end:1/0,step:1},description:"Print (to stderr) where a cursor at the given position would move to after formatting.",cliCategory:"Editor"},endOfLine:{category:"Global",type:"choice",default:"lf",description:"Which end of line characters to apply.",choices:[{value:"lf",description:"Line Feed only (\\n), common on Linux and macOS as well as inside git repos"},{value:"crlf",description:"Carriage Return + Line Feed characters (\\r\\n), common on Windows"},{value:"cr",description:"Carriage Return character only (\\r), used very rarely"},{value:"auto",description:`Maintain existing +`||i==="\r"||i==="\u2028"||i==="\u2029")return t+1}return t}var Us=Xde;function eue(e,t,a={}){let n=Kr(e,a.backwards?t-1:t,a),i=Us(e,n,a);return n!==i}var Or=eue;function tue(e){return Array.isArray(e)&&e.length>0}var aue=tue,FP=new Set(["tokens","comments","parent","enclosingNode","precedingNode","followingNode"]),nue=e=>Object.keys(e).filter(t=>!FP.has(t));function iue(e){return e?t=>e(t,FP):nue}var np=iue;function oue(e){let t=e.type||e.kind||"(unknown type)",a=String(e.name||e.id&&(typeof e.id=="object"?e.id.name:e.id)||e.key&&(typeof e.key=="object"?e.key.name:e.key)||e.value&&(typeof e.value=="object"?"":String(e.value))||e.operator||"");return a.length>20&&(a=a.slice(0,19)+"…"),t+(a?" "+a:"")}function Fy(e,t){(e.comments??(e.comments=[])).push(t),t.printed=!1,t.nodeDescription=oue(e)}function El(e,t){t.leading=!0,t.trailing=!1,Fy(e,t)}function gs(e,t,a){t.leading=!1,t.trailing=!1,a&&(t.marker=a),Fy(e,t)}function Al(e,t){t.leading=!1,t.trailing=!0,Fy(e,t)}var Eh=new WeakMap;function My(e,t){if(Eh.has(e))return Eh.get(e);let{printer:{getCommentChildNodes:a,canAttachComment:n,getVisitorKeys:i},locStart:o,locEnd:r}=t;if(!n)return[];let l=((a==null?void 0:a(e,t))??[...TP(e,{getVisitorKeys:np(i)})]).flatMap(d=>n(d)?[d]:My(d,t));return l.sort((d,u)=>o(d)-o(u)||r(d)-r(u)),Eh.set(e,l),l}function MP(e,t,a,n){let{locStart:i,locEnd:o}=a,r=i(t),l=o(t),d=My(e,a),u,_,f=0,p=d.length;for(;f>1,g=d[h],y=i(g),k=o(g);if(y<=r&&l<=k)return MP(g,t,a,g);if(k<=r){u=g,f=h+1;continue}if(l<=y){_=g,p=h;continue}throw new Error("Comment location overlaps with node location")}if((n==null?void 0:n.type)==="TemplateLiteral"){let{quasis:h}=n,g=Ch(h,t,a);u&&Ch(h,u,a)!==g&&(u=null),_&&Ch(h,_,a)!==g&&(_=null)}return{enclosingNode:n,precedingNode:u,followingNode:_}}var Ah=()=>!1;function rue(e,t){let{comments:a}=e;if(delete e.comments,!aue(a)||!t.printer.canAttachComment)return;let n=[],{locStart:i,locEnd:o,printer:{experimentalFeatures:{avoidAstMutation:r=!1}={},handleComments:l={}},originalText:d}=t,{ownLine:u=Ah,endOfLine:_=Ah,remaining:f=Ah}=l,p=a.map((h,g)=>({...MP(e,h,t),comment:h,text:d,options:t,ast:e,isLastComment:a.length-1===g}));for(let[h,g]of p.entries()){let{comment:y,precedingNode:k,enclosingNode:b,followingNode:z,text:w,options:D,ast:E,isLastComment:T}=g;if(D.parser==="json"||D.parser==="json5"||D.parser==="jsonc"||D.parser==="__js_expression"||D.parser==="__ts_expression"||D.parser==="__vue_expression"||D.parser==="__vue_ts_expression"){if(i(y)-i(E)<=0){El(E,y);continue}if(o(y)-o(E)>=0){Al(E,y);continue}}let N;if(r?N=[g]:(y.enclosingNode=b,y.precedingNode=k,y.followingNode=z,N=[y,w,D,E,T]),sue(w,D,p,h))y.placement="ownLine",u(...N)||(z?El(z,y):k?Al(k,y):gs(b||E,y));else if(lue(w,D,p,h))y.placement="endOfLine",_(...N)||(k?Al(k,y):z?El(z,y):gs(b||E,y));else if(y.placement="remaining",!f(...N))if(k&&z){let j=n.length;j>0&&n[j-1].followingNode!==z&&k2(n,D),n.push(g)}else k?Al(k,y):z?El(z,y):gs(b||E,y)}if(k2(n,t),!r)for(let h of a)delete h.precedingNode,delete h.enclosingNode,delete h.followingNode}var RP=e=>!/[\S\n\u2028\u2029]/.test(e);function sue(e,t,a,n){let{comment:i,precedingNode:o}=a[n],{locStart:r,locEnd:l}=t,d=r(i);if(o)for(let u=n-1;u>=0;u--){let{comment:_,precedingNode:f}=a[u];if(f!==o||!RP(e.slice(l(_),d)))break;d=r(_)}return Or(e,d,{backwards:!0})}function lue(e,t,a,n){let{comment:i,followingNode:o}=a[n],{locStart:r,locEnd:l}=t,d=l(i);if(o)for(let u=n+1;u0;--d){let{comment:u,precedingNode:_,followingNode:f}=e[d-1];Hg.strictEqual(_,o),Hg.strictEqual(f,r);let p=t.originalText.slice(t.locEnd(u),l);if(((n=(a=t.printer).isGap)==null?void 0:n.call(a,p,t))??/^[\s(]*$/.test(p))l=t.locStart(u);else break}for(let[u,{comment:_}]of e.entries())u1&&u.comments.sort((_,f)=>t.locStart(_)-t.locStart(f));e.length=0}function Ch(e,t,a){let n=a.locStart(t)-1;for(let i=1;i!n.has(l)).length===0)return{leading:"",trailing:""};let i=[],o=[],r;return e.each(()=>{let l=e.node;if(n!=null&&n.has(l))return;let{leading:d,trailing:u}=l;d?i.push(due(e,t)):u&&(r=uue(e,t,r),o.push(r.doc))},"comments"),{leading:i,trailing:o}}function mue(e,t,a){let{leading:n,trailing:i}=_ue(e,a);return!n&&!i?t:AP(t,o=>[n,o,i])}function pue(e){let{[Symbol.for("comments")]:t,[Symbol.for("printedComments")]:a}=e;for(let n of t){if(!n.printed&&!a.has(n))throw new Error('Comment "'+n.value.trim()+'" was not printed. Please report this error!');delete n.printed}}var $P=class extends Error{constructor(){super(...arguments);Qu(this,"name","ConfigError")}},w2=class extends Error{constructor(){super(...arguments);Qu(this,"name","UndefinedParserError")}},fue={cursorOffset:{category:"Special",type:"int",default:-1,range:{start:-1,end:1/0,step:1},description:"Print (to stderr) where a cursor at the given position would move to after formatting.",cliCategory:"Editor"},endOfLine:{category:"Global",type:"choice",default:"lf",description:"Which end of line characters to apply.",choices:[{value:"lf",description:"Line Feed only (\\n), common on Linux and macOS as well as inside git repos"},{value:"crlf",description:"Carriage Return + Line Feed characters (\\r\\n), common on Windows"},{value:"cr",description:"Carriage Return character only (\\r), used very rarely"},{value:"auto",description:`Maintain existing (mixed values within one file are normalised by looking at what's used after the first line)`}]},filepath:{category:"Special",type:"path",description:"Specify the input filepath. This will be used to do parser inference.",cliName:"stdin-filepath",cliCategory:"Other",cliDescription:"Path to the file to pretend that stdin comes from."},insertPragma:{category:"Special",type:"boolean",default:!1,description:"Insert @format pragma into file's first docblock comment.",cliCategory:"Other"},parser:{category:"Global",type:"choice",default:void 0,description:"Which parser to use.",exception:e=>typeof e=="string"||typeof e=="function",choices:[{value:"flow",description:"Flow"},{value:"babel",description:"JavaScript"},{value:"babel-flow",description:"Flow"},{value:"babel-ts",description:"TypeScript"},{value:"typescript",description:"TypeScript"},{value:"acorn",description:"JavaScript"},{value:"espree",description:"JavaScript"},{value:"meriyah",description:"JavaScript"},{value:"css",description:"CSS"},{value:"less",description:"Less"},{value:"scss",description:"SCSS"},{value:"json",description:"JSON"},{value:"json5",description:"JSON5"},{value:"jsonc",description:"JSON with Comments"},{value:"json-stringify",description:"JSON.stringify"},{value:"graphql",description:"GraphQL"},{value:"markdown",description:"Markdown"},{value:"mdx",description:"MDX"},{value:"vue",description:"Vue"},{value:"yaml",description:"YAML"},{value:"glimmer",description:"Ember / Handlebars"},{value:"html",description:"HTML"},{value:"angular",description:"Angular"},{value:"lwc",description:"Lightning Web Components"}]},plugins:{type:"path",array:!0,default:[{value:[]}],category:"Global",description:"Add a plugin. Multiple plugins can be passed as separate `--plugin`s.",exception:e=>typeof e=="string"||typeof e=="object",cliName:"plugin",cliCategory:"Config"},printWidth:{category:"Global",type:"int",default:80,description:"The line length where Prettier will try wrap.",range:{start:0,end:1/0,step:1}},rangeEnd:{category:"Special",type:"int",default:1/0,range:{start:0,end:1/0,step:1},description:`Format code ending at a given character offset (exclusive). The range will extend forwards to the end of the selected statement.`,cliCategory:"Editor"},rangeStart:{category:"Special",type:"int",default:0,range:{start:0,end:1/0,step:1},description:`Format code starting at a given character offset. The range will extend backwards to the start of the first line containing the selected statement.`,cliCategory:"Editor"},requirePragma:{category:"Special",type:"boolean",default:!1,description:`Require either '@prettier' or '@format' to be present in the file's first docblock comment -in order for it to be formatted.`,cliCategory:"Other"},tabWidth:{type:"int",category:"Global",default:2,description:"Number of spaces per indentation level.",range:{start:0,end:1/0,step:1}},useTabs:{category:"Global",type:"boolean",default:!1,description:"Indent with tabs instead of spaces."},embeddedLanguageFormatting:{category:"Global",type:"choice",default:"auto",description:"Control how Prettier formats quoted code embedded in the file.",choices:[{value:"auto",description:"Format embedded code if Prettier can automatically identify it."},{value:"off",description:"Never automatically format embedded code."}]}};function Lz({plugins:e=[],showDeprecated:t=!1}={}){let a=e.flatMap(i=>i.languages??[]),n=[];for(let i of yue(Object.assign({},...e.map(({options:o})=>o),gue)))!t&&i.deprecated||(Array.isArray(i.choices)&&(t||(i.choices=i.choices.filter(o=>!o.deprecated)),i.name==="parser"&&(i.choices=[...i.choices,...vue(i.choices,a,e)])),i.pluginDefaults=Object.fromEntries(e.filter(o=>{var s;return((s=o.defaultOptions)==null?void 0:s[i.name])!==void 0}).map(o=>[o.name,o.defaultOptions[i.name]])),n.push(i));return{languages:a,options:n}}function*vue(e,t,a){let n=new Set(e.map(i=>i.value));for(let i of t)if(i.parsers){for(let o of i.parsers)if(!n.has(o)){n.add(o);let s=a.find(d=>d.parsers&&Object.prototype.hasOwnProperty.call(d.parsers,o)),l=i.name;s!=null&&s.name&&(l+=` (plugin: ${s.name})`),yield{value:o,description:l}}}}function yue(e){let t=[];for(let[a,n]of Object.entries(e)){let i={name:a,...n};Array.isArray(i.default)&&(i.default=Za(!1,i.default,-1).value),t.push(i)}return t}var bue=e=>String(e).split(/[/\\]/).pop();function Dx(e,t){if(!t)return;let a=bue(t).toLowerCase();return e.find(({filenames:n})=>n==null?void 0:n.some(i=>i.toLowerCase()===a))??e.find(({extensions:n})=>n==null?void 0:n.some(i=>a.endsWith(i)))}function kue(e,t){if(t)return e.find(({name:a})=>a.toLowerCase()===t)??e.find(({aliases:a})=>a==null?void 0:a.includes(t))??e.find(({extensions:a})=>a==null?void 0:a.includes(`.${t}`))}function wue(e,t){let a=e.plugins.flatMap(i=>i.languages??[]),n=kue(a,t.language)??Dx(a,t.physicalFile)??Dx(a,t.file)??(t.physicalFile,void 0);return n==null?void 0:n.parsers[0]}var Due=wue,Cl={key:e=>/^[$_a-zA-Z][$_a-zA-Z0-9]*$/.test(e)?e:JSON.stringify(e),value(e){if(e===null||typeof e!="object")return JSON.stringify(e);if(Array.isArray(e))return`[${e.map(a=>Cl.value(a)).join(", ")}]`;let t=Object.keys(e);return t.length===0?"{}":`{ ${t.map(a=>`${Cl.key(a)}: ${Cl.value(e[a])}`).join(", ")} }`},pair:({key:e,value:t})=>Cl.value({[e]:t})},xx=Vd(Xm(),1),xue=(e,t,{descriptor:a})=>{let n=[`${xx.default.yellow(typeof e=="string"?a.key(e):a.pair(e))} is deprecated`];return t&&n.push(`we now treat it as ${xx.default.blue(typeof t=="string"?a.key(t):a.pair(t))}`),n.join("; ")+"."},Tl=Vd(Xm(),1),Bz=Symbol.for("vnopts.VALUE_NOT_EXIST"),C_=Symbol.for("vnopts.VALUE_UNCHANGED"),Sx=" ".repeat(2),Sue=(e,t,a)=>{let{text:n,list:i}=a.normalizeExpectedResult(a.schemas[e].expected(a)),o=[];return n&&o.push(Px(e,t,n,a.descriptor)),i&&o.push([Px(e,t,i.title,a.descriptor)].concat(i.values.map(s=>Uz(s,a.loggerPrintWidth))).join(` -`)),Vz(o,a.loggerPrintWidth)};function Px(e,t,a,n){return[`Invalid ${Tl.default.red(n.key(e))} value.`,`Expected ${Tl.default.blue(a)},`,`but received ${t===Bz?Tl.default.gray("nothing"):Tl.default.red(n.value(t))}.`].join(" ")}function Uz({text:e,list:t},a){let n=[];return e&&n.push(`- ${Tl.default.blue(e)}`),t&&n.push([`- ${Tl.default.blue(t.title)}:`].concat(t.values.map(i=>Uz(i,a-Sx.length).replace(/^|\n/g,`$&${Sx}`))).join(` -`)),Vz(n,a)}function Vz(e,t){if(e.length===1)return e[0];let[a,n]=e,[i,o]=e.map(s=>s.split(` -`,1)[0].length);return i>t&&i>o?n:a}var Ex=Vd(Xm(),1),jh=[],zx=[];function Pue(e,t){if(e===t)return 0;let a=e;e.length>t.length&&(e=t,t=a);let n=e.length,i=t.length;for(;n>0&&e.charCodeAt(~-n)===t.charCodeAt(~-i);)n--,i--;let o=0;for(;ol?u>l?l+1:u:u>d?d+1:u;return l}var qz=(e,t,{descriptor:a,logger:n,schemas:i})=>{let o=[`Ignored unknown option ${Ex.default.yellow(a.pair({key:e,value:t}))}.`],s=Object.keys(i).sort().find(l=>Pue(e,l)<3);s&&o.push(`Did you mean ${Ex.default.blue(a.key(s))}?`),n.warn(o.join(" "))},Eue=["default","expected","validate","deprecated","forward","redirect","overlap","preprocess","postprocess"];function zue(e,t){let a=new e(t),n=Object.create(a);for(let i of Eue)i in t&&(n[i]=Aue(t[i],a,Js.prototype[i].length));return n}var Js=class{static create(t){return zue(this,t)}constructor(t){this.name=t.name}default(t){}expected(t){return"nothing"}validate(t,a){return!1}deprecated(t,a){return!1}forward(t,a){}redirect(t,a){}overlap(t,a,n){return t}preprocess(t,a){return t}postprocess(t,a){return C_}};function Aue(e,t,a){return typeof e=="function"?(...n)=>e(...n.slice(0,a-1),t,...n.slice(a-1)):()=>e}var Cue=class extends Js{constructor(e){super(e),this._sourceName=e.sourceName}expected(e){return e.schemas[this._sourceName].expected(e)}validate(e,t){return t.schemas[this._sourceName].validate(e,t)}redirect(e,t){return this._sourceName}},Tue=class extends Js{expected(){return"anything"}validate(){return!0}},jue=class extends Js{constructor({valueSchema:e,name:t=e.name,...a}){super({...a,name:t}),this._valueSchema=e}expected(e){let{text:t,list:a}=e.normalizeExpectedResult(this._valueSchema.expected(e));return{text:t&&`an array of ${t}`,list:a&&{title:"an array of the following values",values:[{list:a}]}}}validate(e,t){if(!Array.isArray(e))return!1;let a=[];for(let n of e){let i=t.normalizeValidateResult(this._valueSchema.validate(n,t),n);i!==!0&&a.push(i.value)}return a.length===0?!0:{value:a}}deprecated(e,t){let a=[];for(let n of e){let i=t.normalizeDeprecatedResult(this._valueSchema.deprecated(n,t),n);i!==!1&&a.push(...i.map(({value:o})=>({value:[o]})))}return a}forward(e,t){let a=[];for(let n of e){let i=t.normalizeForwardResult(this._valueSchema.forward(n,t),n);a.push(...i.map(Ax))}return a}redirect(e,t){let a=[],n=[];for(let i of e){let o=t.normalizeRedirectResult(this._valueSchema.redirect(i,t),i);"remain"in o&&a.push(o.remain),n.push(...o.redirect.map(Ax))}return a.length===0?{redirect:n}:{redirect:n,remain:a}}overlap(e,t){return e.concat(t)}};function Ax({from:e,to:t}){return{from:[e],to:t}}var Nue=class extends Js{expected(){return"true or false"}validate(e){return typeof e=="boolean"}};function Iue(e,t){let a=Object.create(null);for(let n of e){let i=n[t];if(a[i])throw new Error(`Duplicate ${t} ${JSON.stringify(i)}`);a[i]=n}return a}function Fue(e,t){let a=new Map;for(let n of e){let i=n[t];if(a.has(i))throw new Error(`Duplicate ${t} ${JSON.stringify(i)}`);a.set(i,n)}return a}function Rue(){let e=Object.create(null);return t=>{let a=JSON.stringify(t);return e[a]?!0:(e[a]=!0,!1)}}function Oue(e,t){let a=[],n=[];for(let i of e)t(i)?a.push(i):n.push(i);return[a,n]}function Mue(e){return e===Math.floor(e)}function $ue(e,t){if(e===t)return 0;let a=typeof e,n=typeof t,i=["undefined","object","boolean","number","string"];return a!==n?i.indexOf(a)-i.indexOf(n):a!=="string"?Number(e)-Number(t):e.localeCompare(t)}function Lue(e){return(...t)=>{let a=e(...t);return typeof a=="string"?new Error(a):a}}function Cx(e){return e===void 0?{}:e}function Wz(e){if(typeof e=="string")return{text:e};let{text:t,list:a}=e;return Bue((t||a)!==void 0,"Unexpected `expected` result, there should be at least one field."),a?{text:t,list:{title:a.title,values:a.values.map(Wz)}}:{text:t}}function Tx(e,t){return e===!0?!0:e===!1?{value:t}:e}function jx(e,t,a=!1){return e===!1?!1:e===!0?a?!0:[{value:t}]:"value"in e?[e]:e.length===0?!1:e}function Nx(e,t){return typeof e=="string"||"key"in e?{from:t,to:e}:"from"in e?{from:e.from,to:e.to}:{from:t,to:e.to}}function Kg(e,t){return e===void 0?[]:Array.isArray(e)?e.map(a=>Nx(a,t)):[Nx(e,t)]}function Ix(e,t){let a=Kg(typeof e=="object"&&"redirect"in e?e.redirect:e,t);return a.length===0?{remain:t,redirect:a}:typeof e=="object"&&"remain"in e?{remain:e.remain,redirect:a}:{redirect:a}}function Bue(e,t){if(!e)throw new Error(t)}var Uue=class extends Js{constructor(e){super(e),this._choices=Fue(e.choices.map(t=>t&&typeof t=="object"?t:{value:t}),"value")}expected({descriptor:e}){let t=Array.from(this._choices.keys()).map(i=>this._choices.get(i)).filter(({hidden:i})=>!i).map(i=>i.value).sort($ue).map(e.value),a=t.slice(0,-2),n=t.slice(-2);return{text:a.concat(n.join(" or ")).join(", "),list:{title:"one of the following values",values:t}}}validate(e){return this._choices.has(e)}deprecated(e){let t=this._choices.get(e);return t&&t.deprecated?{value:e}:!1}forward(e){let t=this._choices.get(e);return t?t.forward:void 0}redirect(e){let t=this._choices.get(e);return t?t.redirect:void 0}},Vue=class extends Js{expected(){return"a number"}validate(e,t){return typeof e=="number"}},que=class extends Vue{expected(){return"an integer"}validate(e,t){return t.normalizeValidateResult(super.validate(e,t),e)===!0&&Mue(e)}},Fx=class extends Js{expected(){return"a string"}validate(e){return typeof e=="string"}},Wue=Cl,Hue=qz,Kue=Sue,Yue=xue,Zue=class{constructor(e,t){let{logger:a=console,loggerPrintWidth:n=80,descriptor:i=Wue,unknown:o=Hue,invalid:s=Kue,deprecated:l=Yue,missing:d=()=>!1,required:u=()=>!1,preprocess:_=p=>p,postprocess:f=()=>C_}=t||{};this._utils={descriptor:i,logger:a||{warn:()=>{}},loggerPrintWidth:n,schemas:Iue(e,"name"),normalizeDefaultResult:Cx,normalizeExpectedResult:Wz,normalizeDeprecatedResult:jx,normalizeForwardResult:Kg,normalizeRedirectResult:Ix,normalizeValidateResult:Tx},this._unknownHandler=o,this._invalidHandler=Lue(s),this._deprecatedHandler=l,this._identifyMissing=(p,h)=>!(p in h)||d(p,h),this._identifyRequired=u,this._preprocess=_,this._postprocess=f,this.cleanHistory()}cleanHistory(){this._hasDeprecationWarned=Rue()}normalize(e){let t={},a=[this._preprocess(e,this._utils)],n=()=>{for(;a.length!==0;){let i=a.shift(),o=this._applyNormalization(i,t);a.push(...o)}};n();for(let i of Object.keys(this._utils.schemas)){let o=this._utils.schemas[i];if(!(i in t)){let s=Cx(o.default(this._utils));"value"in s&&a.push({[i]:s.value})}}n();for(let i of Object.keys(this._utils.schemas)){if(!(i in t))continue;let o=this._utils.schemas[i],s=t[i],l=o.postprocess(s,this._utils);l!==C_&&(this._applyValidation(l,i,o),t[i]=l)}return this._applyPostprocess(t),this._applyRequiredCheck(t),t}_applyNormalization(e,t){let a=[],{knownKeys:n,unknownKeys:i}=this._partitionOptionKeys(e);for(let o of n){let s=this._utils.schemas[o],l=s.preprocess(e[o],this._utils);this._applyValidation(l,o,s);let d=({from:f,to:p})=>{a.push(typeof p=="string"?{[p]:f}:{[p.key]:p.value})},u=({value:f,redirectTo:p})=>{let h=jx(s.deprecated(f,this._utils),l,!0);if(h!==!1)if(h===!0)this._hasDeprecationWarned(o)||this._utils.logger.warn(this._deprecatedHandler(o,p,this._utils));else for(let{value:g}of h){let y={key:o,value:g};if(!this._hasDeprecationWarned(y)){let k=typeof p=="string"?{key:p,value:g}:p;this._utils.logger.warn(this._deprecatedHandler(y,k,this._utils))}}};Kg(s.forward(l,this._utils),l).forEach(d);let _=Ix(s.redirect(l,this._utils),l);if(_.redirect.forEach(d),"remain"in _){let f=_.remain;t[o]=o in t?s.overlap(t[o],f,this._utils):f,u({value:f})}for(let{from:f,to:p}of _.redirect)u({value:f,redirectTo:p})}for(let o of i){let s=e[o];this._applyUnknownHandler(o,s,t,(l,d)=>{a.push({[l]:d})})}return a}_applyRequiredCheck(e){for(let t of Object.keys(this._utils.schemas))if(this._identifyMissing(t,e)&&this._identifyRequired(t))throw this._invalidHandler(t,Bz,this._utils)}_partitionOptionKeys(e){let[t,a]=Oue(Object.keys(e).filter(n=>!this._identifyMissing(n,e)),n=>n in this._utils.schemas);return{knownKeys:t,unknownKeys:a}}_applyValidation(e,t,a){let n=Tx(a.validate(e,this._utils),e);if(n!==!0)throw this._invalidHandler(t,n.value,this._utils)}_applyUnknownHandler(e,t,a,n){let i=this._unknownHandler(e,t,this._utils);if(i)for(let o of Object.keys(i)){if(this._identifyMissing(o,i))continue;let s=i[o];o in this._utils.schemas?n(o,s):a[o]=s}}_applyPostprocess(e){let t=this._postprocess(e,this._utils);if(t!==C_){if(t.delete)for(let a of t.delete)delete e[a];if(t.override){let{knownKeys:a,unknownKeys:n}=this._partitionOptionKeys(t.override);for(let i of a){let o=t.override[i];this._applyValidation(o,i,this._utils.schemas[i]),e[i]=o}for(let i of n){let o=t.override[i];this._applyUnknownHandler(i,o,e,(s,l)=>{let d=this._utils.schemas[s];this._applyValidation(l,s,d),e[s]=l})}}}}},Nh;function Gue(e,t,{logger:a=!1,isCLI:n=!1,passThrough:i=!1,FlagSchema:o,descriptor:s}={}){if(n){if(!o)throw new Error("'FlagSchema' option is required.");if(!s)throw new Error("'descriptor' option is required.")}else s=Cl;let l=i?Array.isArray(i)?(p,h)=>i.includes(p)?{[p]:h}:void 0:(p,h)=>({[p]:h}):(p,h,g)=>{let{_:y,...k}=g.schemas;return qz(p,h,{...g,schemas:k})},d=Que(t,{isCLI:n,FlagSchema:o}),u=new Zue(d,{logger:a,unknown:l,descriptor:s}),_=a!==!1;_&&Nh&&(u._hasDeprecationWarned=Nh);let f=u.normalize(e);return _&&(Nh=u._hasDeprecationWarned),f}function Que(e,{isCLI:t,FlagSchema:a}){let n=[];t&&n.push(Tue.create({name:"_"}));for(let i of e)n.push(Jue(i,{isCLI:t,optionInfos:e,FlagSchema:a})),i.alias&&t&&n.push(Cue.create({name:i.alias,sourceName:i.name}));return n}function Jue(e,{isCLI:t,optionInfos:a,FlagSchema:n}){let{name:i}=e,o={name:i},s,l={};switch(e.type){case"int":s=que,t&&(o.preprocess=Number);break;case"string":s=Fx;break;case"choice":s=Uue,o.choices=e.choices.map(d=>d!=null&&d.redirect?{...d,redirect:{to:{key:e.name,value:d.redirect}}}:d);break;case"boolean":s=Nue;break;case"flag":s=n,o.flags=a.flatMap(d=>[d.alias,d.description&&d.name,d.oppositeDescription&&`no-${d.name}`].filter(Boolean));break;case"path":s=Fx;break;default:throw new Error(`Unexpected type ${e.type}`)}if(e.exception?o.validate=(d,u,_)=>e.exception(d)||u.validate(d,_):o.validate=(d,u,_)=>d===void 0||u.validate(d,_),e.redirect&&(l.redirect=d=>d?{to:{key:e.redirect.option,value:e.redirect.value}}:void 0),e.deprecated&&(l.deprecated=!0),t&&!e.array){let d=o.preprocess||(u=>u);o.preprocess=(u,_,f)=>_.preprocess(d(Array.isArray(u)?Za(!1,u,-1):u),f)}return e.array?jue.create({...t?{preprocess:d=>Array.isArray(d)?d:[d]}:{},...l,valueSchema:s.create(o)}):s.create({...o,...l})}var Xue=Gue,e_e=(e,t,a)=>{if(!(e&&t==null)){if(t.findLast)return t.findLast(a);for(let n=t.length-1;n>=0;n--){let i=t[n];if(a(i,n,t))return i}}},Hz=e_e;function Kz(e,t){if(!t)throw new Error("parserName is required.");let a=Hz(!1,e,i=>i.parsers&&Object.prototype.hasOwnProperty.call(i.parsers,t));if(a)return a;let n=`Couldn't resolve parser "${t}".`;throw n+=" Plugins must be explicitly added to the standalone bundle.",new $z(n)}function t_e(e,t){if(!t)throw new Error("astFormat is required.");let a=Hz(!1,e,i=>i.printers&&Object.prototype.hasOwnProperty.call(i.printers,t));if(a)return a;let n=`Couldn't find plugin for AST format "${t}".`;throw n+=" Plugins must be explicitly added to the standalone bundle.",new $z(n)}function Yz({plugins:e,parser:t}){let a=Kz(e,t);return Zz(a,t)}function Zz(e,t){let a=e.parsers[t];return typeof a=="function"?a():a}function a_e(e,t){let a=e.printers[t];return typeof a=="function"?a():a}var Rx={astFormat:"estree",printer:{},originalText:void 0,locStart:null,locEnd:null};async function n_e(e,t={}){var a;let n={...e};if(!n.parser)if(n.filepath){if(n.parser=Due(n,{physicalFile:n.filepath}),!n.parser)throw new wx(`No parser could be inferred for file "${n.filepath}".`)}else throw new wx("No parser and no file path given, couldn't infer a parser.");let i=Lz({plugins:e.plugins,showDeprecated:!0}).options,o={...Rx,...Object.fromEntries(i.filter(p=>p.default!==void 0).map(p=>[p.name,p.default]))},s=Kz(n.plugins,n.parser),l=await Zz(s,n.parser);n.astFormat=l.astFormat,n.locEnd=l.locEnd,n.locStart=l.locStart;let d=(a=s.printers)!=null&&a[l.astFormat]?s:t_e(n.plugins,l.astFormat),u=await a_e(d,l.astFormat);n.printer=u;let _=d.defaultOptions?Object.fromEntries(Object.entries(d.defaultOptions).filter(([,p])=>p!==void 0)):{},f={...o,..._};for(let[p,h]of Object.entries(f))(n[p]===null||n[p]===void 0)&&(n[p]=h);return n.parser==="json"&&(n.trailingComma="none"),Xue(n,i,{passThrough:Object.keys(Rx),...t})}var mc=n_e,i_e=Vd(ide(),1);async function o_e(e,t){let a=await Yz(t),n=a.preprocess?a.preprocess(e,t):e;t.originalText=n;let i;try{i=await a.parse(n,t,t)}catch(o){s_e(o,e)}return{text:n,ast:i}}function s_e(e,t){let{loc:a}=e;if(a){let n=(0,i_e.codeFrameColumns)(t,a,{highlightCode:!0});throw e.message+=` -`+n,e.codeFrame=n,e}throw e}var Wd=o_e;async function r_e(e,t,a,n,i){let{embeddedLanguageFormatting:o,printer:{embed:s,hasPrettierIgnore:l=()=>!1,getVisitorKeys:d}}=a;if(!s||o!=="auto")return;if(s.length>2)throw new Error("printer.embed has too many parameters. The API changed in Prettier v3. Please update your plugin. See https://prettier.io/docs/en/plugins.html#optional-embed");let u=ip(s.getVisitorKeys??d),_=[];h();let f=e.stack;for(let{print:g,node:y,pathStack:k}of _)try{e.stack=k;let b=await g(p,t,e,a);b&&i.set(y,b)}catch(b){if(globalThis.PRETTIER_DEBUG)throw b}e.stack=f;function p(g,y){return l_e(g,y,a,n)}function h(){let{node:g}=e;if(g===null||typeof g!="object"||l(e))return;for(let k of u(g))Array.isArray(g[k])?e.each(h,k):e.call(h,k);let y=s(e,a);if(y){if(typeof y=="function"){_.push({print:y,node:g,pathStack:[...e.stack]});return}i.set(g,y)}}}async function l_e(e,t,a,n){let i=await mc({...a,...t,parentParser:a.parser,originalText:e},{passThrough:!0}),{ast:o}=await Wd(e,i),s=await n(o,i);return zz(s)}function c_e(e,t){let{originalText:a,[Symbol.for("comments")]:n,locStart:i,locEnd:o,[Symbol.for("printedComments")]:s}=t,{node:l}=e,d=i(l),u=o(l);for(let _ of n)i(_)>=d&&o(_)<=u&&s.add(_);return a.slice(d,u)}var d_e=c_e;async function op(e,t){({ast:e}=await Gz(e,t));let a=new Map,n=new Gde(e),i=new Map;await r_e(n,s,t,op,i);let o=await Ox(n,t,s,void 0,i);return hue(t),o;function s(d,u){return d===void 0||d===n?l(u):Array.isArray(d)?n.call(()=>l(u),...d):n.call(()=>l(u),d)}function l(d){let u=n.node;if(u==null)return"";let _=u&&typeof u=="object"&&d===void 0;if(_&&a.has(u))return a.get(u);let f=Ox(n,t,s,d,i);return _&&a.set(u,f),f}}function Ox(e,t,a,n,i){var o;let{node:s}=e,{printer:l}=t,d;return(o=l.hasPrettierIgnore)!=null&&o.call(l,e)?d=d_e(e,t):i.has(s)?d=i.get(s):d=l.print(e,t,a,n),s===t.cursorNode&&(d=Az(d,u=>[Ug,u,Ug])),l.printComment&&(!l.willPrintOwnComments||!l.willPrintOwnComments(e,t))&&(d=fue(e,d,t)),d}async function Gz(e,t){let a=e.comments??[];t[Symbol.for("comments")]=a,t[Symbol.for("tokens")]=e.tokens??[],t[Symbol.for("printedComments")]=new Set,lue(e,t);let{printer:{preprocess:n}}=t;return e=n?await n(e,t):e,{ast:e,comments:a}}function u_e(e,t){let{cursorOffset:a,locStart:n,locEnd:i}=t,o=ip(t.printer.getVisitorKeys),s=d=>n(d)<=a&&i(d)>=a,l=e;for(let d of Xde(e,{getVisitorKeys:o,filter:s}))l=d;return l}var __e=u_e;function m_e(e,t){let{printer:{massageAstNode:a,getVisitorKeys:n}}=t;if(!a)return e;let i=ip(n),o=a.ignoredProperties??new Set;return s(e);function s(l,d){if(!(l!==null&&typeof l=="object"))return l;if(Array.isArray(l))return l.map(p=>s(p,d)).filter(Boolean);let u={},_=new Set(i(l));for(let p in l)!Object.prototype.hasOwnProperty.call(l,p)||o.has(p)||(_.has(p)?u[p]=s(l[p],l):u[p]=l[p]);let f=a(l,u,d);if(f!==null)return f??u}}var p_e=m_e,f_e=({parser:e})=>e==="json"||e==="json5"||e==="jsonc"||e==="json-stringify";function h_e(e,t){let a=[e.node,...e.parentNodes],n=new Set([t.node,...t.parentNodes]);return a.find(i=>Qz.has(i.type)&&n.has(i))}function Mx(e){let t=e.length-1;for(;;){let a=e[t];if((a==null?void 0:a.type)==="Program"||(a==null?void 0:a.type)==="File")t--;else break}return e.slice(0,t+1)}function g_e(e,t,{locStart:a,locEnd:n}){let i=e.node,o=t.node;if(i===o)return{startNode:i,endNode:o};let s=a(e.node);for(let d of Mx(t.parentNodes))if(a(d)>=s)o=d;else break;let l=n(t.node);for(let d of Mx(e.parentNodes)){if(n(d)<=l)i=d;else break;if(i===o)break}return{startNode:i,endNode:o}}function Yg(e,t,a,n,i=[],o){let{locStart:s,locEnd:l}=a,d=s(e),u=l(e);if(!(t>u||tn);let l=e.slice(n,i).search(/\S/),d=l===-1;if(!d)for(n+=l;i>n&&!/\S/.test(e[i-1]);--i);let u=Yg(a,n,t,(h,g)=>$x(t,h,g),[],"rangeStart"),_=d?u:Yg(a,i,t,h=>$x(t,h),[],"rangeEnd");if(!u||!_)return{rangeStart:0,rangeEnd:0};let f,p;if(f_e(t)){let h=h_e(u,_);f=h,p=h}else({startNode:f,endNode:p}=g_e(u,_,t));return{rangeStart:Math.min(o(f),o(p)),rangeEnd:Math.max(s(f),s(p))}}var Jz="\uFEFF",Lx=Symbol("cursor");async function Xz(e,t,a=0){if(!e||e.trim().length===0)return{formatted:"",cursorOffset:-1,comments:[]};let{ast:n,text:i}=await Wd(e,t);t.cursorOffset>=0&&(t.cursorNode=__e(n,t));let o=await op(n,t);a>0&&(o=Ez([Tr,o],a,t.tabWidth));let s=np(o,t);if(a>0){let d=s.formatted.trim();s.cursorNodeStart!==void 0&&(s.cursorNodeStart-=s.formatted.indexOf(d)),s.formatted=d+Ay(t.endOfLine)}let l=t[Symbol.for("comments")];if(t.cursorOffset>=0){let d,u,_,f,p;if(t.cursorNode&&s.cursorNodeText?(d=t.locStart(t.cursorNode),u=i.slice(d,t.locEnd(t.cursorNode)),_=t.cursorOffset-d,f=s.cursorNodeStart,p=s.cursorNodeText):(d=0,u=i,_=t.cursorOffset,f=0,p=s.formatted),u===p)return{formatted:s.formatted,cursorOffset:f+_,comments:l};let h=u.split("");h.splice(_,0,Lx);let g=p.split(""),y=(0,rde.diffArrays)(h,g),k=f;for(let b of y)if(b.removed){if(b.value.includes(Lx))break}else k+=b.count;return{formatted:s.formatted,cursorOffset:k,comments:l}}return{formatted:s.formatted,cursorOffset:-1,comments:l}}async function k_e(e,t){let{ast:a,text:n}=await Wd(e,t),{rangeStart:i,rangeEnd:o}=b_e(n,t,a),s=n.slice(i,o),l=Math.min(i,n.lastIndexOf(` -`,i)+1),d=n.slice(l,i).match(/^\s*/)[0],u=Iy(d,t.tabWidth),_=await Xz(s,{...t,rangeStart:0,rangeEnd:Number.POSITIVE_INFINITY,cursorOffset:t.cursorOffset>i&&t.cursorOffset<=o?t.cursorOffset-i:-1,endOfLine:"lf"},u),f=_.formatted.trimEnd(),{cursorOffset:p}=t;p>o?p+=f.length-s.length:_.cursorOffset>=0&&(p=_.cursorOffset+i);let h=n.slice(0,i)+f+n.slice(o);if(t.endOfLine!=="lf"){let g=Ay(t.endOfLine);p>=0&&g===`\r -`&&(p+=yz(h.slice(0,p),` -`)),h=ep(!1,h,` -`,g)}return{formatted:h,cursorOffset:p,comments:_.comments}}function Ih(e,t,a){return typeof t!="number"||Number.isNaN(t)||t<0||t>e.length?a:t}function Bx(e,t){let{cursorOffset:a,rangeStart:n,rangeEnd:i}=t;return a=Ih(e,a,-1),n=Ih(e,n,0),i=Ih(e,i,e.length),{...t,cursorOffset:a,rangeStart:n,rangeEnd:i}}function eA(e,t){let{cursorOffset:a,rangeStart:n,rangeEnd:i,endOfLine:o}=Bx(e,t),s=e.charAt(0)===Jz;if(s&&(e=e.slice(1),a--,n--,i--),o==="auto"&&(o=lde(e)),e.includes("\r")){let l=d=>yz(e.slice(0,Math.max(d,0)),`\r -`);a-=l(a),n-=l(n),i-=l(i),e=cde(e)}return{hasBOM:s,text:e,options:Bx(e,{...t,cursorOffset:a,rangeStart:n,rangeEnd:i,endOfLine:o})}}async function Ux(e,t){let a=await Yz(t);return!a.hasPragma||a.hasPragma(e)}async function tA(e,t){let{hasBOM:a,text:n,options:i}=eA(e,await mc(t));if(i.rangeStart>=i.rangeEnd&&n!==""||i.requirePragma&&!await Ux(n,i))return{formatted:e,cursorOffset:t.cursorOffset,comments:[]};let o;return i.rangeStart>0||i.rangeEnd=0&&o.cursorOffset++),o}async function w_e(e,t,a){let{text:n,options:i}=eA(e,await mc(t)),o=await Wd(n,i);return a&&(a.preprocessForPrint&&(o.ast=await Gz(o.ast,i)),a.massage&&(o.ast=p_e(o.ast,i))),o}async function D_e(e,t){t=await mc(t);let a=await op(e,t);return np(a,t)}async function x_e(e,t){let a=Ede(e),{formatted:n}=await tA(a,{...t,parser:"__js_expression"});return n}async function S_e(e,t){t=await mc(t);let{ast:a}=await Wd(e,t);return op(a,t)}async function P_e(e,t){return np(e,await mc(t))}var aA={};Jm(aA,{builders:()=>E_e,printer:()=>z_e,utils:()=>A_e});var E_e={join:Pz,line:xz,softline:Sde,hardline:Tr,literalline:Sz,group:kz,conditionalGroup:bde,fill:wz,lineSuffix:Bg,lineSuffixBoundary:Dde,cursor:Ug,breakParent:tp,ifBreak:kde,trim:xde,indent:nm,indentIfBreak:wde,align:nc,addAlignmentToDoc:Ez,markAsRoot:vde,dedentToRoot:gde,dedent:yde,hardlineWithoutBreakParent:Ty,literallineWithoutBreakParent:Dz,label:Pde,concat:e=>e},z_e={printDocToString:np},A_e={willBreak:Ode,traverseDoc:Cy,findInDoc:Ny,mapDoc:ap,removeLines:Lde,stripTrailingHardline:zz,replaceEndOfLine:Vde,canBreak:Wde},C_e="3.2.4",nA={};Jm(nA,{addDanglingComment:()=>gr,addLeadingComment:()=>zl,addTrailingComment:()=>Al,getAlignmentSize:()=>Iy,getIndentSize:()=>R_e,getMaxContinuousCount:()=>$_e,getNextNonSpaceNonCommentCharacter:()=>B_e,getNextNonSpaceNonCommentCharacterIndex:()=>Z_e,getStringWidth:()=>jy,hasNewline:()=>Ms,hasNewlineInRange:()=>V_e,hasSpaces:()=>W_e,isNextLineEmpty:()=>X_e,isNextLineEmptyAfterIndex:()=>By,isPreviousLineEmpty:()=>Q_e,makeString:()=>K_e,skip:()=>qd,skipEverythingButNewLine:()=>Iz,skipInlineComment:()=>My,skipNewline:()=>Ur,skipSpaces:()=>Ks,skipToLineEnd:()=>Nz,skipTrailingComment:()=>$y,skipWhitespace:()=>eue});function T_e(e,t){if(t===!1)return!1;if(e.charAt(t)==="/"&&e.charAt(t+1)==="*"){for(let a=t+2;aMath.max(n,i.length/t.length),0)}var $_e=M_e;function L_e(e,t){let a=Ly(e,t);return a===!1?"":e.charAt(a)}var B_e=L_e;function U_e(e,t,a){for(let n=t;ns===n?s:l===t?"\\"+l:l||(a&&/^[^\n\r"'0-7\\bfnrt-vx\u2028\u2029]$/.test(s)?s:"\\"+s));return t+i+t}var K_e=H_e;function Y_e(e,t,a){return Ly(e,a(t))}function Z_e(e,t){return arguments.length===2||typeof t=="number"?Ly(e,t):Y_e(...arguments)}function G_e(e,t,a){return Oy(e,a(t))}function Q_e(e,t){return arguments.length===2||typeof t=="number"?Oy(e,t):G_e(...arguments)}function J_e(e,t,a){return By(e,a(t))}function X_e(e,t){return arguments.length===2||typeof t=="number"?By(e,t):J_e(...arguments)}function yr(e,t=1){return async(...a)=>{let n=a[t]??{},i=n.plugins??[];return a[t]={...n,plugins:Array.isArray(i)?i:Object.values(i)},e(...a)}}var iA=yr(tA);async function oA(e,t){let{formatted:a}=await iA(e,{...t,cursorOffset:-1});return a}async function eme(e,t){return await oA(e,t)===e}var tme=yr(Lz,0),ame={parse:yr(w_e),formatAST:yr(D_e),formatDoc:yr(x_e),printToDoc:yr(S_e),printDocToString:yr(P_e)};const nme=(e=!1)=>{const t=e?window.pinia.defineStore:un,{global:a}=window.i18n;return t({id:"custom-field",state:()=>({customFields:[],isRequestOngoing:!1,currentCustomField:{...hx}}),getters:{isEdit(){return!!this.currentCustomField.id}},actions:{resetCustomFields(){this.customFields=[]},resetCurrentCustomField(){this.currentCustomField={...hx}},fetchCustomFields(n){return new Promise((i,o)=>{ve.get("/api/v1/custom-fields",{params:n}).then(s=>{this.customFields=s.data.data,i(s)}).catch(s=>{be(s),o(s)})})},fetchNoteCustomFields(n){return new Promise((i,o)=>{if(this.isRequestOngoing)return i({requestOnGoing:!0}),!0;this.isRequestOngoing=!0,ve.get("/api/v1/custom-fields",{params:n}).then(s=>{this.customFields=s.data.data,this.isRequestOngoing=!1,i(s)}).catch(s=>{this.isRequestOngoing=!1,be(s),o(s)})})},fetchCustomField(n){return new Promise((i,o)=>{ve.get(`/api/v1/custom-fields/${n}`).then(s=>{this.currentCustomField=s.data.data,this.currentCustomField.options&&this.currentCustomField.options.length&&(this.currentCustomField.options=this.currentCustomField.options.map(l=>l={name:l})),i(s)}).catch(s=>{be(s),o(s)})})},addCustomField(n){const i=gt();return new Promise((o,s)=>{ve.post("/api/v1/custom-fields",n).then(l=>{let d={...l.data.data};d.options&&(d.options=d.options.map(u=>({name:u||""}))),this.customFields.push(d),i.showNotification({type:"success",message:a.t("settings.custom_fields.added_message")}),o(l)}).catch(l=>{be(l),s(l)})})},updateCustomField(n){const i=gt();return new Promise((o,s)=>{ve.put(`/api/v1/custom-fields/${n.id}`,n).then(l=>{let d={...l.data.data};d.options&&(d.options=d.options.map(_=>({name:_||""})));let u=this.customFields.findIndex(_=>_.id===d.id);this.customFields[u]&&(this.customFields[u]=d),i.showNotification({type:"success",message:a.t("settings.custom_fields.updated_message")}),o(l)}).catch(l=>{be(l),s(l)})})},deleteCustomFields(n){const i=gt();return new Promise((o,s)=>{ve.delete(`/api/v1/custom-fields/${n}`).then(l=>{let d=this.customFields.findIndex(u=>u.id===n);this.customFields.splice(d,1),l.data.error?i.showNotification({type:"error",message:a.t("settings.custom_fields.already_in_use")}):i.showNotification({type:"success",message:a.t("settings.custom_fields.deleted_message")}),o(l)}).catch(l=>{be(l),s(l)})})}}})()},ime={key:1,class:"relative"},ome={class:"absolute bottom-0 right-0 z-10"},sme={class:"flex p-2"},rme={class:"mb-1 ml-2 text-xs font-semibold text-gray-500 uppercase"},lme=["onClick"],cme={class:"flex pl-1"},dme={__name:"BaseCustomInput",props:{contentLoading:{type:Boolean,default:!1},modelValue:{type:String,default:""},fields:{type:Array,default:null}},emits:["update:modelValue"],setup(e,{emit:t}){const a=e,n=t,i=nme();let o=re([]),s=re([]),l=re([]),d=re([]),u=re([]);Yt(()=>a.fields,h=>{a.fields&&a.fields.length>0&&p()}),Yt(()=>i.customFields,h=>{s.value=h?h.filter(g=>g.model_type==="Invoice"):[],u.value=h?h.filter(g=>g.model_type==="Customer"):[],d.value=h?h.filter(g=>g.model_type==="Payment"):[],l.value=h.filter(g=>g.model_type==="Estimate"),p()}),Ct(()=>{f()});const _=B({get:()=>a.modelValue,set:h=>{n("update:modelValue",h)}});async function f(){await i.fetchCustomFields()}async function p(){o.value=[],a.fields&&a.fields.length>0&&(a.fields.find(h=>h=="shipping")&&o.value.push({label:"Shipping Address",fields:[{label:"Address name",value:"SHIPPING_ADDRESS_NAME"},{label:"Country",value:"SHIPPING_COUNTRY"},{label:"State",value:"SHIPPING_STATE"},{label:"City",value:"SHIPPING_CITY"},{label:"Address Street 1",value:"SHIPPING_ADDRESS_STREET_1"},{label:"Address Street 2",value:"SHIPPING_ADDRESS_STREET_2"},{label:"Phone",value:"SHIPPING_PHONE"},{label:"Zip Code",value:"SHIPPING_ZIP_CODE"}]}),a.fields.find(h=>h=="billing")&&o.value.push({label:"Billing Address",fields:[{label:"Address name",value:"BILLING_ADDRESS_NAME"},{label:"Country",value:"BILLING_COUNTRY"},{label:"State",value:"BILLING_STATE"},{label:"City",value:"BILLING_CITY"},{label:"Address Street 1",value:"BILLING_ADDRESS_STREET_1"},{label:"Address Street 2",value:"BILLING_ADDRESS_STREET_2"},{label:"Phone",value:"BILLING_PHONE"},{label:"Zip Code",value:"BILLING_ZIP_CODE"}]}),a.fields.find(h=>h=="customer")&&o.value.push({label:"Customer",fields:[{label:"Display Name",value:"CONTACT_DISPLAY_NAME"},{label:"Contact Name",value:"PRIMARY_CONTACT_NAME"},{label:"Email",value:"CONTACT_EMAIL"},{label:"Phone",value:"CONTACT_PHONE"},{label:"Website",value:"CONTACT_WEBSITE"},...u.value.map(h=>({label:h.label,value:h.slug}))]}),a.fields.find(h=>h=="invoice")&&o.value.push({label:"Invoice",fields:[{label:"Date",value:"INVOICE_DATE"},{label:"Due Date",value:"INVOICE_DUE_DATE"},{label:"Number",value:"INVOICE_NUMBER"},{label:"Ref Number",value:"INVOICE_REF_NUMBER"},...s.value.map(h=>({label:h.label,value:h.slug}))]}),a.fields.find(h=>h=="estimate")&&o.value.push({label:"Estimate",fields:[{label:"Date",value:"ESTIMATE_DATE"},{label:"Expiry Date",value:"ESTIMATE_EXPIRY_DATE"},{label:"Number",value:"ESTIMATE_NUMBER"},{label:"Ref Number",value:"ESTIMATE_REF_NUMBER"},...l.value.map(h=>({label:h.label,value:h.slug}))]}),a.fields.find(h=>h=="payment")&&o.value.push({label:"Payment",fields:[{label:"Date",value:"PAYMENT_DATE"},{label:"Number",value:"PAYMENT_NUMBER"},{label:"Mode",value:"PAYMENT_MODE"},{label:"Amount",value:"PAYMENT_AMOUNT"},...d.value.map(h=>({label:h.label,value:h.slug}))]}),a.fields.find(h=>h=="company")&&o.value.push({label:"Company",fields:[{label:"Company Name",value:"COMPANY_NAME"},{label:"Country",value:"COMPANY_COUNTRY"},{label:"State",value:"COMPANY_STATE"},{label:"City",value:"COMPANY_CITY"},{label:"Address Street 1",value:"COMPANY_ADDRESS_STREET_1"},{label:"Address Street 2",value:"COMPANY_ADDRESS_STREET_2"},{label:"Phone",value:"COMPANY_PHONE"},{label:"Zip Code",value:"COMPANY_ZIP_CODE"}]}))}return p(),(h,g)=>{const y=Be("BaseContentPlaceholdersBox"),k=Be("BaseContentPlaceholders"),b=Be("BaseIcon"),P=Be("BaseButton"),w=Be("BaseDropdown"),x=Be("BaseEditor");return e.contentLoading?($(),Xe(k,{key:0},{default:_e(()=>[G(y,{rounded:!0,class:"w-full",style:{height:"200px"}})]),_:1})):($(),te("div",ime,[X("div",ome,[G(w,{"close-on-select":!0,"max-height":"220",position:"top-end","width-class":"w-92",class:"mb-2"},{activator:_e(()=>[G(P,{type:"button",variant:"primary-outline",class:"mr-4"},{left:_e(E=>[G(b,{name:"PlusSmIcon",class:Le(E.class)},null,8,["class"])]),default:_e(()=>[$t(je(h.$t("settings.customization.insert_fields"))+" ",1)]),_:1})]),default:_e(()=>[X("div",sme,[($(!0),te(yt,null,Un(O(o),(E,C)=>($(),te("ul",{key:C,class:"list-none"},[X("li",rme,je(E.label),1),($(!0),te(yt,null,Un(E.fields,(j,A)=>($(),te("li",{key:A,class:"w-48 text-sm font-normal cursor-pointer hover:bg-gray-100 rounded ml-1 py-0.5",onClick:U=>_.value+=`{${j.value}}`},[X("div",cme,[G(b,{name:"ChevronDoubleRightIcon",class:"h-3 mt-1 mr-2 text-gray-400"}),$t(" "+je(j.label),1)])],8,lme))),128))]))),128))])]),_:1})]),G(x,{modelValue:_.value,"onUpdate:modelValue":g[0]||(g[0]=E=>_.value=E)},null,8,["modelValue"])]))}}},ume=Object.freeze(Object.defineProperty({__proto__:null,default:dme},Symbol.toStringTag,{value:"Module"})),_me={props:{tag:{type:String,default:"button"}},setup(e,{slots:t,attrs:a,emit:n}){return()=>Et(`${e.tag}`,a,t)}},mme=Object.freeze(Object.defineProperty({__proto__:null,default:_me},Symbol.toStringTag,{value:"Module"})),pme={key:0,class:"text-sm font-bold leading-5 text-black non-italic space-y-1"},fme={key:0},hme={key:1},gme={key:2},vme={key:3},yme={key:4},bme={key:5},kme={__name:"BaseCustomerAddressDisplay",props:{address:{type:Object,required:!0}},setup(e){return(t,a)=>{var n,i,o,s,l,d,u,_,f,p,h,g,y,k;return e.address?($(),te("div",pme,[(n=e.address)!=null&&n.address_street_1?($(),te("p",fme,je((i=e.address)==null?void 0:i.address_street_1)+",",1)):Re("",!0),(o=e.address)!=null&&o.address_street_2?($(),te("p",hme,je((s=e.address)==null?void 0:s.address_street_2)+",",1)):Re("",!0),(l=e.address)!=null&&l.city?($(),te("p",gme,je((d=e.address)==null?void 0:d.city)+",",1)):Re("",!0),(u=e.address)!=null&&u.state?($(),te("p",vme,je((_=e.address)==null?void 0:_.state)+",",1)):Re("",!0),(p=(f=e.address)==null?void 0:f.country)!=null&&p.name?($(),te("p",yme,je((g=(h=e.address)==null?void 0:h.country)==null?void 0:g.name)+",",1)):Re("",!0),(y=e.address)!=null&&y.zip?($(),te("p",bme,je((k=e.address)==null?void 0:k.zip)+".",1)):Re("",!0)])):Re("",!0)}}},wme=Object.freeze(Object.defineProperty({__proto__:null,default:kme},Symbol.toStringTag,{value:"Module"})),im={name:null,phone:null,address_street_1:null,address_street_2:null,city:null,state:null,country_id:null,zip:null,type:null};function Vx(){return{name:"",contact_name:"",email:"",phone:null,password:"",confirm_password:"",currency_id:null,website:null,billing:{...im},shipping:{...im},customFields:[],fields:[],enable_portal:!1}}const pc=(e=!1)=>{const t=e?window.pinia.defineStore:un,{global:a}=window.i18n;return t({id:"customer",state:()=>({customers:[],totalCustomers:0,selectAllField:!1,selectedCustomers:[],selectedViewCustomer:{},isFetchingInitialSettings:!1,isFetchingViewData:!1,currentCustomer:{...Vx()},editCustomer:null}),getters:{isEdit:n=>!!n.currentCustomer.id},actions:{resetCurrentCustomer(){this.currentCustomer={...Vx()}},copyAddress(){this.currentCustomer.shipping={...this.currentCustomer.billing,type:"shipping"}},fetchCustomerInitialSettings(n){const i=Zs(),o=Vm(),s=es();this.isFetchingInitialSettings=!0;let l=[];n?l=[this.fetchCustomer(i.params.id)]:this.currentCustomer.currency_id=s.selectedCompanyCurrency.id,Promise.all([o.fetchCurrencies(),o.fetchCountries(),...l]).then(async([d,u,_])=>{this.isFetchingInitialSettings=!1}).catch(d=>{be(d)})},fetchCustomers(n){return new Promise((i,o)=>{ve.get("/api/v1/customers",{params:n}).then(s=>{this.customers=s.data.data,this.totalCustomers=s.data.meta.customer_total_count,i(s)}).catch(s=>{be(s),o(s)})})},fetchViewCustomer(n){return new Promise((i,o)=>{this.isFetchingViewData=!0,ve.get(`/api/v1/customers/${n.id}/stats`,{params:n}).then(s=>{this.selectedViewCustomer={},Object.assign(this.selectedViewCustomer,s.data.data),this.setAddressStub(s.data.data),this.isFetchingViewData=!1,i(s)}).catch(s=>{this.isFetchingViewData=!1,be(s),o(s)})})},fetchCustomer(n){return new Promise((i,o)=>{ve.get(`/api/v1/customers/${n}`).then(s=>{Object.assign(this.currentCustomer,s.data.data),this.setAddressStub(s.data.data),i(s)}).catch(s=>{be(s),o(s)})})},addCustomer(n){return new Promise((i,o)=>{ve.post("/api/v1/customers",n).then(s=>{this.customers.push(s.data.data),gt().showNotification({type:"success",message:a.t("customers.created_message")}),i(s)}).catch(s=>{be(s),o(s)})})},updateCustomer(n){return new Promise((i,o)=>{ve.put(`/api/v1/customers/${n.id}`,n).then(s=>{if(s.data){let l=this.customers.findIndex(u=>u.id===s.data.data.id);this.customers[l]=n,gt().showNotification({type:"success",message:a.t("customers.updated_message")})}i(s)}).catch(s=>{be(s),o(s)})})},deleteCustomer(n){const i=gt();return new Promise((o,s)=>{ve.post("/api/v1/customers/delete",n).then(l=>{let d=this.customers.findIndex(u=>u.id===n);this.customers.splice(d,1),i.showNotification({type:"success",message:a.tc("customers.deleted_message",1)}),o(l)}).catch(l=>{be(l),s(l)})})},deleteMultipleCustomers(){const n=gt();return new Promise((i,o)=>{ve.post("/api/v1/customers/delete",{ids:this.selectedCustomers}).then(s=>{this.selectedCustomers.forEach(l=>{let d=this.customers.findIndex(u=>u.id===l.id);this.customers.splice(d,1)}),n.showNotification({type:"success",message:a.tc("customers.deleted_message",2)}),i(s)}).catch(s=>{be(s),o(s)})})},setSelectAllState(n){this.selectAllField=n},selectCustomer(n){this.selectedCustomers=n,this.selectedCustomers.length===this.customers.length?this.selectAllField=!0:this.selectAllField=!1},selectAllCustomers(){if(this.selectedCustomers.length===this.customers.length)this.selectedCustomers=[],this.selectAllField=!1;else{let n=this.customers.map(i=>i.id);this.selectedCustomers=n,this.selectAllField=!0}},setAddressStub(n){n.billing||(this.currentCustomer.billing={...im}),n.shipping||(this.currentCustomer.shipping={...im})}}})()},Hd=(e=!1)=>(e?window.pinia.defineStore:un)({id:"modal",state:()=>({active:!1,content:"",title:"",componentName:"",id:"",size:"md",data:null,refreshData:null,variant:""}),getters:{isEdit(){return!!this.id}},actions:{openModal(a){this.componentName=a.componentName,this.active=!0,a.id&&(this.id=a.id),this.title=a.title,a.content&&(this.content=a.content),a.data&&(this.data=a.data),a.refreshData&&(this.refreshData=a.refreshData),a.variant&&(this.variant=a.variant),a.size&&(this.size=a.size)},resetModalData(){this.content="",this.title="",this.componentName="",this.id="",this.data=null,this.refreshData=null},closeModal(){this.active=!1,setTimeout(()=>{this.resetModalData()},300)}}})();function qx(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),a.push.apply(a,n)}return a}function Dd(e){for(var t=1;t1&&arguments[1]!==void 0?arguments[1]:[];const a=sp(e);return Dd(Dd({},a),{},{$async:!0,$watchTargets:t})}function Eme(e){return{$validator(t){for(var a=arguments.length,n=new Array(a>1?a-1:0),i=1;i{const d=Object.entries(s).reduce((u,_)=>{let[f,p]=_;const h=e[f]||{},g=Object.entries(h).reduce((y,k)=>{let[b,P]=k;const x=rA(P).call(this,p,s,l,...n),E=sA(x);if(y.$data[b]=x,y.$data.$invalid=!E||!!y.$data.$invalid,y.$data.$error=y.$data.$invalid,!E){let C=P.$message||"";const j=P.$params||{};typeof C=="function"&&(C=C({$pending:!1,$invalid:!E,$params:j,$model:p,$response:x})),y.$errors.push({$property:f,$message:C,$params:j,$response:x,$model:p,$pending:!1,$validator:b})}return{$valid:y.$valid&&E,$data:y.$data,$errors:y.$errors}},{$valid:!0,$data:{},$errors:[]});return u.$data[f]=g.$data,u.$errors[f]=g.$errors,{$valid:u.$valid&&g.$valid,$data:u.$data,$errors:u.$errors}},{$valid:!0,$data:{},$errors:{}});return{$valid:o.$valid&&d.$valid,$data:o.$data.concat(d.$data),$errors:o.$errors.concat(d.$errors)}},{$valid:!0,$data:[],$errors:[]})},$message:t=>{let{$response:a}=t;return a?a.$errors.map(n=>Object.values(n).map(i=>i.map(o=>o.$message)).reduce((i,o)=>i.concat(o),[])):[]}}}const Xs=e=>{if(e=O(e),Array.isArray(e))return!!e.length;if(e==null)return!1;if(e===!1)return!0;if(e instanceof Date)return!isNaN(e.getTime());if(typeof e=="object"){for(let t in e)return!0;return!1}return!!String(e).length},Uy=e=>(e=O(e),Array.isArray(e)?e.length:typeof e=="object"?Object.keys(e).length:String(e).length);function er(){for(var e=arguments.length,t=new Array(e),a=0;a(n=O(n),!Xs(n)||t.every(i=>(i.lastIndex=0,i.test(n))))}var Tn=Object.freeze({__proto__:null,forEach:Eme,len:Uy,normalizeValidatorObject:sp,regex:er,req:Xs,unwrap:O,unwrapNormalizedValidator:rA,unwrapValidatorResponse:sA,withAsync:Pme,withMessage:Sme,withParams:xme});er(/^[a-zA-Z]*$/);er(/^[a-zA-Z0-9]*$/);var zme=er(/^\d*(\.\d+)?$/),z1e={$validator:zme,$message:"Value must be numeric",$params:{type:"numeric"}};function Ame(e,t){return a=>!Xs(a)||(!/\s/.test(a)||a instanceof Date)&&+O(e)<=+a&&+O(t)>=+a}function A1e(e,t){return{$validator:Ame(e,t),$message:a=>{let{$params:n}=a;return`The value must be between ${n.min} and ${n.max}`},$params:{min:e,max:t,type:"between"}}}const Cme=/^(?:[A-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[A-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9]{2,}(?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])$/i;var Tme=er(Cme),jme={$validator:Tme,$message:"Value is not a valid email address",$params:{type:"email"}};function Nme(e){return t=>!Xs(t)||Uy(t)<=O(e)}function m_(e){return{$validator:Nme(e),$message:t=>{let{$params:a}=t;return`The maximum length allowed is ${a.max}`},$params:{max:e,type:"maxLength"}}}function Ime(e){return t=>!Xs(t)||Uy(t)>=O(e)}function Fh(e){return{$validator:Ime(e),$message:t=>{let{$params:a}=t;return`This field should be at least ${a.min} characters long`},$params:{min:e,type:"minLength"}}}function Fme(e){return typeof e=="string"&&(e=e.trim()),Xs(e)}var Wx={$validator:Fme,$message:"Value is required",$params:{type:"required"}};const Hx=(e,t)=>e?Xs(typeof t=="string"?t.trim():t):!0;function Rme(e){return function(t,a){if(typeof e!="function")return Hx(O(e),t);const n=e.call(this,t,a);return Hx(n,t)}}function Kx(e){return{$validator:Rme(e),$message:"The value is required",$params:{type:"requiredIf",prop:e}}}function Ome(e){return t=>O(t)===O(e)}function Mme(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"other";return{$validator:Ome(e),$message:a=>`The value must be equal to the ${t} value`,$params:{equalTo:e,otherName:t,type:"sameAs"}}}const $me=/^(?:(?:(?:https?|ftp):)?\/\/)(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z0-9\u00a1-\uffff][a-z0-9\u00a1-\uffff_-]{0,62})?[a-z0-9\u00a1-\uffff]\.)+(?:[a-z\u00a1-\uffff]{2,}\.?))(?::\d{2,5})?(?:[/?#]\S*)?$/i;var Lme=er($me),Bme={$validator:Lme,$message:"The value is not a valid URL address",$params:{type:"url"}};function Ume(e){return t=>!Xs(t)||(!/\s/.test(t)||t instanceof Date)&&+t>=+O(e)}function C1e(e){return{$validator:Ume(e),$message:t=>{let{$params:a}=t;return`The minimum value allowed is ${a.min}`},$params:{min:e,type:"minValue"}}}er(/(^[0-9]*$)|(^-[0-9]+$)/);var Vme=er(/^[-]?\d*(\.\d+)?$/),T1e={$validator:Vme,$message:"Value must be decimal",$params:{type:"decimal"}};//! moment.js +in order for it to be formatted.`,cliCategory:"Other"},tabWidth:{type:"int",category:"Global",default:2,description:"Number of spaces per indentation level.",range:{start:0,end:1/0,step:1}},useTabs:{category:"Global",type:"boolean",default:!1,description:"Indent with tabs instead of spaces."},embeddedLanguageFormatting:{category:"Global",type:"choice",default:"auto",description:"Control how Prettier formats quoted code embedded in the file.",choices:[{value:"auto",description:"Format embedded code if Prettier can automatically identify it."},{value:"off",description:"Never automatically format embedded code."}]}};function LP({plugins:e=[],showDeprecated:t=!1}={}){let a=e.flatMap(i=>i.languages??[]),n=[];for(let i of gue(Object.assign({},...e.map(({options:o})=>o),fue)))!t&&i.deprecated||(Array.isArray(i.choices)&&(t||(i.choices=i.choices.filter(o=>!o.deprecated)),i.name==="parser"&&(i.choices=[...i.choices,...hue(i.choices,a,e)])),i.pluginDefaults=Object.fromEntries(e.filter(o=>{var r;return((r=o.defaultOptions)==null?void 0:r[i.name])!==void 0}).map(o=>[o.name,o.defaultOptions[i.name]])),n.push(i));return{languages:a,options:n}}function*hue(e,t,a){let n=new Set(e.map(i=>i.value));for(let i of t)if(i.parsers){for(let o of i.parsers)if(!n.has(o)){n.add(o);let r=a.find(d=>d.parsers&&Object.prototype.hasOwnProperty.call(d.parsers,o)),l=i.name;r!=null&&r.name&&(l+=` (plugin: ${r.name})`),yield{value:o,description:l}}}}function gue(e){let t=[];for(let[a,n]of Object.entries(e)){let i={name:a,...n};Array.isArray(i.default)&&(i.default=Za(!1,i.default,-1).value),t.push(i)}return t}var vue=e=>String(e).split(/[/\\]/).pop();function x2(e,t){if(!t)return;let a=vue(t).toLowerCase();return e.find(({filenames:n})=>n==null?void 0:n.some(i=>i.toLowerCase()===a))??e.find(({extensions:n})=>n==null?void 0:n.some(i=>a.endsWith(i)))}function yue(e,t){if(t)return e.find(({name:a})=>a.toLowerCase()===t)??e.find(({aliases:a})=>a==null?void 0:a.includes(t))??e.find(({extensions:a})=>a==null?void 0:a.includes(`.${t}`))}function bue(e,t){let a=e.plugins.flatMap(i=>i.languages??[]),n=yue(a,t.language)??x2(a,t.physicalFile)??x2(a,t.file)??(t.physicalFile,void 0);return n==null?void 0:n.parsers[0]}var kue=bue,Cl={key:e=>/^[$_a-zA-Z][$_a-zA-Z0-9]*$/.test(e)?e:JSON.stringify(e),value(e){if(e===null||typeof e!="object")return JSON.stringify(e);if(Array.isArray(e))return`[${e.map(a=>Cl.value(a)).join(", ")}]`;let t=Object.keys(e);return t.length===0?"{}":`{ ${t.map(a=>`${Cl.key(a)}: ${Cl.value(e[a])}`).join(", ")} }`},pair:({key:e,value:t})=>Cl.value({[e]:t})},D2=Vd(Jm(),1),wue=(e,t,{descriptor:a})=>{let n=[`${D2.default.yellow(typeof e=="string"?a.key(e):a.pair(e))} is deprecated`];return t&&n.push(`we now treat it as ${D2.default.blue(typeof t=="string"?a.key(t):a.pair(t))}`),n.join("; ")+"."},jl=Vd(Jm(),1),BP=Symbol.for("vnopts.VALUE_NOT_EXIST"),C_=Symbol.for("vnopts.VALUE_UNCHANGED"),S2=" ".repeat(2),xue=(e,t,a)=>{let{text:n,list:i}=a.normalizeExpectedResult(a.schemas[e].expected(a)),o=[];return n&&o.push(z2(e,t,n,a.descriptor)),i&&o.push([z2(e,t,i.title,a.descriptor)].concat(i.values.map(r=>UP(r,a.loggerPrintWidth))).join(` +`)),VP(o,a.loggerPrintWidth)};function z2(e,t,a,n){return[`Invalid ${jl.default.red(n.key(e))} value.`,`Expected ${jl.default.blue(a)},`,`but received ${t===BP?jl.default.gray("nothing"):jl.default.red(n.value(t))}.`].join(" ")}function UP({text:e,list:t},a){let n=[];return e&&n.push(`- ${jl.default.blue(e)}`),t&&n.push([`- ${jl.default.blue(t.title)}:`].concat(t.values.map(i=>UP(i,a-S2.length).replace(/^|\n/g,`$&${S2}`))).join(` +`)),VP(n,a)}function VP(e,t){if(e.length===1)return e[0];let[a,n]=e,[i,o]=e.map(r=>r.split(` +`,1)[0].length);return i>t&&i>o?n:a}var P2=Vd(Jm(),1),jh=[],E2=[];function Due(e,t){if(e===t)return 0;let a=e;e.length>t.length&&(e=t,t=a);let n=e.length,i=t.length;for(;n>0&&e.charCodeAt(~-n)===t.charCodeAt(~-i);)n--,i--;let o=0;for(;ol?u>l?l+1:u:u>d?d+1:u;return l}var qP=(e,t,{descriptor:a,logger:n,schemas:i})=>{let o=[`Ignored unknown option ${P2.default.yellow(a.pair({key:e,value:t}))}.`],r=Object.keys(i).sort().find(l=>Due(e,l)<3);r&&o.push(`Did you mean ${P2.default.blue(a.key(r))}?`),n.warn(o.join(" "))},Sue=["default","expected","validate","deprecated","forward","redirect","overlap","preprocess","postprocess"];function zue(e,t){let a=new e(t),n=Object.create(a);for(let i of Sue)i in t&&(n[i]=Pue(t[i],a,Jr.prototype[i].length));return n}var Jr=class{static create(t){return zue(this,t)}constructor(t){this.name=t.name}default(t){}expected(t){return"nothing"}validate(t,a){return!1}deprecated(t,a){return!1}forward(t,a){}redirect(t,a){}overlap(t,a,n){return t}preprocess(t,a){return t}postprocess(t,a){return C_}};function Pue(e,t,a){return typeof e=="function"?(...n)=>e(...n.slice(0,a-1),t,...n.slice(a-1)):()=>e}var Eue=class extends Jr{constructor(e){super(e),this._sourceName=e.sourceName}expected(e){return e.schemas[this._sourceName].expected(e)}validate(e,t){return t.schemas[this._sourceName].validate(e,t)}redirect(e,t){return this._sourceName}},Aue=class extends Jr{expected(){return"anything"}validate(){return!0}},Cue=class extends Jr{constructor({valueSchema:e,name:t=e.name,...a}){super({...a,name:t}),this._valueSchema=e}expected(e){let{text:t,list:a}=e.normalizeExpectedResult(this._valueSchema.expected(e));return{text:t&&`an array of ${t}`,list:a&&{title:"an array of the following values",values:[{list:a}]}}}validate(e,t){if(!Array.isArray(e))return!1;let a=[];for(let n of e){let i=t.normalizeValidateResult(this._valueSchema.validate(n,t),n);i!==!0&&a.push(i.value)}return a.length===0?!0:{value:a}}deprecated(e,t){let a=[];for(let n of e){let i=t.normalizeDeprecatedResult(this._valueSchema.deprecated(n,t),n);i!==!1&&a.push(...i.map(({value:o})=>({value:[o]})))}return a}forward(e,t){let a=[];for(let n of e){let i=t.normalizeForwardResult(this._valueSchema.forward(n,t),n);a.push(...i.map(A2))}return a}redirect(e,t){let a=[],n=[];for(let i of e){let o=t.normalizeRedirectResult(this._valueSchema.redirect(i,t),i);"remain"in o&&a.push(o.remain),n.push(...o.redirect.map(A2))}return a.length===0?{redirect:n}:{redirect:n,remain:a}}overlap(e,t){return e.concat(t)}};function A2({from:e,to:t}){return{from:[e],to:t}}var jue=class extends Jr{expected(){return"true or false"}validate(e){return typeof e=="boolean"}};function Tue(e,t){let a=Object.create(null);for(let n of e){let i=n[t];if(a[i])throw new Error(`Duplicate ${t} ${JSON.stringify(i)}`);a[i]=n}return a}function Iue(e,t){let a=new Map;for(let n of e){let i=n[t];if(a.has(i))throw new Error(`Duplicate ${t} ${JSON.stringify(i)}`);a.set(i,n)}return a}function Nue(){let e=Object.create(null);return t=>{let a=JSON.stringify(t);return e[a]?!0:(e[a]=!0,!1)}}function Fue(e,t){let a=[],n=[];for(let i of e)t(i)?a.push(i):n.push(i);return[a,n]}function Mue(e){return e===Math.floor(e)}function Rue(e,t){if(e===t)return 0;let a=typeof e,n=typeof t,i=["undefined","object","boolean","number","string"];return a!==n?i.indexOf(a)-i.indexOf(n):a!=="string"?Number(e)-Number(t):e.localeCompare(t)}function Oue(e){return(...t)=>{let a=e(...t);return typeof a=="string"?new Error(a):a}}function C2(e){return e===void 0?{}:e}function HP(e){if(typeof e=="string")return{text:e};let{text:t,list:a}=e;return $ue((t||a)!==void 0,"Unexpected `expected` result, there should be at least one field."),a?{text:t,list:{title:a.title,values:a.values.map(HP)}}:{text:t}}function j2(e,t){return e===!0?!0:e===!1?{value:t}:e}function T2(e,t,a=!1){return e===!1?!1:e===!0?a?!0:[{value:t}]:"value"in e?[e]:e.length===0?!1:e}function I2(e,t){return typeof e=="string"||"key"in e?{from:t,to:e}:"from"in e?{from:e.from,to:e.to}:{from:t,to:e.to}}function Wg(e,t){return e===void 0?[]:Array.isArray(e)?e.map(a=>I2(a,t)):[I2(e,t)]}function N2(e,t){let a=Wg(typeof e=="object"&&"redirect"in e?e.redirect:e,t);return a.length===0?{remain:t,redirect:a}:typeof e=="object"&&"remain"in e?{remain:e.remain,redirect:a}:{redirect:a}}function $ue(e,t){if(!e)throw new Error(t)}var Lue=class extends Jr{constructor(e){super(e),this._choices=Iue(e.choices.map(t=>t&&typeof t=="object"?t:{value:t}),"value")}expected({descriptor:e}){let t=Array.from(this._choices.keys()).map(i=>this._choices.get(i)).filter(({hidden:i})=>!i).map(i=>i.value).sort(Rue).map(e.value),a=t.slice(0,-2),n=t.slice(-2);return{text:a.concat(n.join(" or ")).join(", "),list:{title:"one of the following values",values:t}}}validate(e){return this._choices.has(e)}deprecated(e){let t=this._choices.get(e);return t&&t.deprecated?{value:e}:!1}forward(e){let t=this._choices.get(e);return t?t.forward:void 0}redirect(e){let t=this._choices.get(e);return t?t.redirect:void 0}},Bue=class extends Jr{expected(){return"a number"}validate(e,t){return typeof e=="number"}},Uue=class extends Bue{expected(){return"an integer"}validate(e,t){return t.normalizeValidateResult(super.validate(e,t),e)===!0&&Mue(e)}},F2=class extends Jr{expected(){return"a string"}validate(e){return typeof e=="string"}},Vue=Cl,que=qP,Hue=xue,Wue=wue,Kue=class{constructor(e,t){let{logger:a=console,loggerPrintWidth:n=80,descriptor:i=Vue,unknown:o=que,invalid:r=Hue,deprecated:l=Wue,missing:d=()=>!1,required:u=()=>!1,preprocess:_=p=>p,postprocess:f=()=>C_}=t||{};this._utils={descriptor:i,logger:a||{warn:()=>{}},loggerPrintWidth:n,schemas:Tue(e,"name"),normalizeDefaultResult:C2,normalizeExpectedResult:HP,normalizeDeprecatedResult:T2,normalizeForwardResult:Wg,normalizeRedirectResult:N2,normalizeValidateResult:j2},this._unknownHandler=o,this._invalidHandler=Oue(r),this._deprecatedHandler=l,this._identifyMissing=(p,h)=>!(p in h)||d(p,h),this._identifyRequired=u,this._preprocess=_,this._postprocess=f,this.cleanHistory()}cleanHistory(){this._hasDeprecationWarned=Nue()}normalize(e){let t={},a=[this._preprocess(e,this._utils)],n=()=>{for(;a.length!==0;){let i=a.shift(),o=this._applyNormalization(i,t);a.push(...o)}};n();for(let i of Object.keys(this._utils.schemas)){let o=this._utils.schemas[i];if(!(i in t)){let r=C2(o.default(this._utils));"value"in r&&a.push({[i]:r.value})}}n();for(let i of Object.keys(this._utils.schemas)){if(!(i in t))continue;let o=this._utils.schemas[i],r=t[i],l=o.postprocess(r,this._utils);l!==C_&&(this._applyValidation(l,i,o),t[i]=l)}return this._applyPostprocess(t),this._applyRequiredCheck(t),t}_applyNormalization(e,t){let a=[],{knownKeys:n,unknownKeys:i}=this._partitionOptionKeys(e);for(let o of n){let r=this._utils.schemas[o],l=r.preprocess(e[o],this._utils);this._applyValidation(l,o,r);let d=({from:f,to:p})=>{a.push(typeof p=="string"?{[p]:f}:{[p.key]:p.value})},u=({value:f,redirectTo:p})=>{let h=T2(r.deprecated(f,this._utils),l,!0);if(h!==!1)if(h===!0)this._hasDeprecationWarned(o)||this._utils.logger.warn(this._deprecatedHandler(o,p,this._utils));else for(let{value:g}of h){let y={key:o,value:g};if(!this._hasDeprecationWarned(y)){let k=typeof p=="string"?{key:p,value:g}:p;this._utils.logger.warn(this._deprecatedHandler(y,k,this._utils))}}};Wg(r.forward(l,this._utils),l).forEach(d);let _=N2(r.redirect(l,this._utils),l);if(_.redirect.forEach(d),"remain"in _){let f=_.remain;t[o]=o in t?r.overlap(t[o],f,this._utils):f,u({value:f})}for(let{from:f,to:p}of _.redirect)u({value:f,redirectTo:p})}for(let o of i){let r=e[o];this._applyUnknownHandler(o,r,t,(l,d)=>{a.push({[l]:d})})}return a}_applyRequiredCheck(e){for(let t of Object.keys(this._utils.schemas))if(this._identifyMissing(t,e)&&this._identifyRequired(t))throw this._invalidHandler(t,BP,this._utils)}_partitionOptionKeys(e){let[t,a]=Fue(Object.keys(e).filter(n=>!this._identifyMissing(n,e)),n=>n in this._utils.schemas);return{knownKeys:t,unknownKeys:a}}_applyValidation(e,t,a){let n=j2(a.validate(e,this._utils),e);if(n!==!0)throw this._invalidHandler(t,n.value,this._utils)}_applyUnknownHandler(e,t,a,n){let i=this._unknownHandler(e,t,this._utils);if(i)for(let o of Object.keys(i)){if(this._identifyMissing(o,i))continue;let r=i[o];o in this._utils.schemas?n(o,r):a[o]=r}}_applyPostprocess(e){let t=this._postprocess(e,this._utils);if(t!==C_){if(t.delete)for(let a of t.delete)delete e[a];if(t.override){let{knownKeys:a,unknownKeys:n}=this._partitionOptionKeys(t.override);for(let i of a){let o=t.override[i];this._applyValidation(o,i,this._utils.schemas[i]),e[i]=o}for(let i of n){let o=t.override[i];this._applyUnknownHandler(i,o,e,(r,l)=>{let d=this._utils.schemas[r];this._applyValidation(l,r,d),e[r]=l})}}}}},Th;function Yue(e,t,{logger:a=!1,isCLI:n=!1,passThrough:i=!1,FlagSchema:o,descriptor:r}={}){if(n){if(!o)throw new Error("'FlagSchema' option is required.");if(!r)throw new Error("'descriptor' option is required.")}else r=Cl;let l=i?Array.isArray(i)?(p,h)=>i.includes(p)?{[p]:h}:void 0:(p,h)=>({[p]:h}):(p,h,g)=>{let{_:y,...k}=g.schemas;return qP(p,h,{...g,schemas:k})},d=Zue(t,{isCLI:n,FlagSchema:o}),u=new Kue(d,{logger:a,unknown:l,descriptor:r}),_=a!==!1;_&&Th&&(u._hasDeprecationWarned=Th);let f=u.normalize(e);return _&&(Th=u._hasDeprecationWarned),f}function Zue(e,{isCLI:t,FlagSchema:a}){let n=[];t&&n.push(Aue.create({name:"_"}));for(let i of e)n.push(Gue(i,{isCLI:t,optionInfos:e,FlagSchema:a})),i.alias&&t&&n.push(Eue.create({name:i.alias,sourceName:i.name}));return n}function Gue(e,{isCLI:t,optionInfos:a,FlagSchema:n}){let{name:i}=e,o={name:i},r,l={};switch(e.type){case"int":r=Uue,t&&(o.preprocess=Number);break;case"string":r=F2;break;case"choice":r=Lue,o.choices=e.choices.map(d=>d!=null&&d.redirect?{...d,redirect:{to:{key:e.name,value:d.redirect}}}:d);break;case"boolean":r=jue;break;case"flag":r=n,o.flags=a.flatMap(d=>[d.alias,d.description&&d.name,d.oppositeDescription&&`no-${d.name}`].filter(Boolean));break;case"path":r=F2;break;default:throw new Error(`Unexpected type ${e.type}`)}if(e.exception?o.validate=(d,u,_)=>e.exception(d)||u.validate(d,_):o.validate=(d,u,_)=>d===void 0||u.validate(d,_),e.redirect&&(l.redirect=d=>d?{to:{key:e.redirect.option,value:e.redirect.value}}:void 0),e.deprecated&&(l.deprecated=!0),t&&!e.array){let d=o.preprocess||(u=>u);o.preprocess=(u,_,f)=>_.preprocess(d(Array.isArray(u)?Za(!1,u,-1):u),f)}return e.array?Cue.create({...t?{preprocess:d=>Array.isArray(d)?d:[d]}:{},...l,valueSchema:r.create(o)}):r.create({...o,...l})}var Que=Yue,Jue=(e,t,a)=>{if(!(e&&t==null)){if(t.findLast)return t.findLast(a);for(let n=t.length-1;n>=0;n--){let i=t[n];if(a(i,n,t))return i}}},WP=Jue;function KP(e,t){if(!t)throw new Error("parserName is required.");let a=WP(!1,e,i=>i.parsers&&Object.prototype.hasOwnProperty.call(i.parsers,t));if(a)return a;let n=`Couldn't resolve parser "${t}".`;throw n+=" Plugins must be explicitly added to the standalone bundle.",new $P(n)}function Xue(e,t){if(!t)throw new Error("astFormat is required.");let a=WP(!1,e,i=>i.printers&&Object.prototype.hasOwnProperty.call(i.printers,t));if(a)return a;let n=`Couldn't find plugin for AST format "${t}".`;throw n+=" Plugins must be explicitly added to the standalone bundle.",new $P(n)}function YP({plugins:e,parser:t}){let a=KP(e,t);return ZP(a,t)}function ZP(e,t){let a=e.parsers[t];return typeof a=="function"?a():a}function e_e(e,t){let a=e.printers[t];return typeof a=="function"?a():a}var M2={astFormat:"estree",printer:{},originalText:void 0,locStart:null,locEnd:null};async function t_e(e,t={}){var a;let n={...e};if(!n.parser)if(n.filepath){if(n.parser=kue(n,{physicalFile:n.filepath}),!n.parser)throw new w2(`No parser could be inferred for file "${n.filepath}".`)}else throw new w2("No parser and no file path given, couldn't infer a parser.");let i=LP({plugins:e.plugins,showDeprecated:!0}).options,o={...M2,...Object.fromEntries(i.filter(p=>p.default!==void 0).map(p=>[p.name,p.default]))},r=KP(n.plugins,n.parser),l=await ZP(r,n.parser);n.astFormat=l.astFormat,n.locEnd=l.locEnd,n.locStart=l.locStart;let d=(a=r.printers)!=null&&a[l.astFormat]?r:Xue(n.plugins,l.astFormat),u=await e_e(d,l.astFormat);n.printer=u;let _=d.defaultOptions?Object.fromEntries(Object.entries(d.defaultOptions).filter(([,p])=>p!==void 0)):{},f={...o,..._};for(let[p,h]of Object.entries(f))(n[p]===null||n[p]===void 0)&&(n[p]=h);return n.parser==="json"&&(n.trailingComma="none"),Que(n,i,{passThrough:Object.keys(M2),...t})}var mc=t_e,a_e=Vd(ade(),1);async function n_e(e,t){let a=await YP(t),n=a.preprocess?a.preprocess(e,t):e;t.originalText=n;let i;try{i=await a.parse(n,t,t)}catch(o){i_e(o,e)}return{text:n,ast:i}}function i_e(e,t){let{loc:a}=e;if(a){let n=(0,a_e.codeFrameColumns)(t,a,{highlightCode:!0});throw e.message+=` +`+n,e.codeFrame=n,e}throw e}var Hd=n_e;async function o_e(e,t,a,n,i){let{embeddedLanguageFormatting:o,printer:{embed:r,hasPrettierIgnore:l=()=>!1,getVisitorKeys:d}}=a;if(!r||o!=="auto")return;if(r.length>2)throw new Error("printer.embed has too many parameters. The API changed in Prettier v3. Please update your plugin. See https://prettier.io/docs/en/plugins.html#optional-embed");let u=np(r.getVisitorKeys??d),_=[];h();let f=e.stack;for(let{print:g,node:y,pathStack:k}of _)try{e.stack=k;let b=await g(p,t,e,a);b&&i.set(y,b)}catch(b){if(globalThis.PRETTIER_DEBUG)throw b}e.stack=f;function p(g,y){return r_e(g,y,a,n)}function h(){let{node:g}=e;if(g===null||typeof g!="object"||l(e))return;for(let k of u(g))Array.isArray(g[k])?e.each(h,k):e.call(h,k);let y=r(e,a);if(y){if(typeof y=="function"){_.push({print:y,node:g,pathStack:[...e.stack]});return}i.set(g,y)}}}async function r_e(e,t,a,n){let i=await mc({...a,...t,parentParser:a.parser,originalText:e},{passThrough:!0}),{ast:o}=await Hd(e,i),r=await n(o,i);return EP(r)}function s_e(e,t){let{originalText:a,[Symbol.for("comments")]:n,locStart:i,locEnd:o,[Symbol.for("printedComments")]:r}=t,{node:l}=e,d=i(l),u=o(l);for(let _ of n)i(_)>=d&&o(_)<=u&&r.add(_);return a.slice(d,u)}var l_e=s_e;async function ip(e,t){({ast:e}=await GP(e,t));let a=new Map,n=new Yde(e),i=new Map;await o_e(n,r,t,ip,i);let o=await R2(n,t,r,void 0,i);return pue(t),o;function r(d,u){return d===void 0||d===n?l(u):Array.isArray(d)?n.call(()=>l(u),...d):n.call(()=>l(u),d)}function l(d){let u=n.node;if(u==null)return"";let _=u&&typeof u=="object"&&d===void 0;if(_&&a.has(u))return a.get(u);let f=R2(n,t,r,d,i);return _&&a.set(u,f),f}}function R2(e,t,a,n,i){var o;let{node:r}=e,{printer:l}=t,d;return(o=l.hasPrettierIgnore)!=null&&o.call(l,e)?d=l_e(e,t):i.has(r)?d=i.get(r):d=l.print(e,t,a,n),r===t.cursorNode&&(d=AP(d,u=>[Bg,u,Bg])),l.printComment&&(!l.willPrintOwnComments||!l.willPrintOwnComments(e,t))&&(d=mue(e,d,t)),d}async function GP(e,t){let a=e.comments??[];t[Symbol.for("comments")]=a,t[Symbol.for("tokens")]=e.tokens??[],t[Symbol.for("printedComments")]=new Set,rue(e,t);let{printer:{preprocess:n}}=t;return e=n?await n(e,t):e,{ast:e,comments:a}}function c_e(e,t){let{cursorOffset:a,locStart:n,locEnd:i}=t,o=np(t.printer.getVisitorKeys),r=d=>n(d)<=a&&i(d)>=a,l=e;for(let d of Qde(e,{getVisitorKeys:o,filter:r}))l=d;return l}var d_e=c_e;function u_e(e,t){let{printer:{massageAstNode:a,getVisitorKeys:n}}=t;if(!a)return e;let i=np(n),o=a.ignoredProperties??new Set;return r(e);function r(l,d){if(!(l!==null&&typeof l=="object"))return l;if(Array.isArray(l))return l.map(p=>r(p,d)).filter(Boolean);let u={},_=new Set(i(l));for(let p in l)!Object.prototype.hasOwnProperty.call(l,p)||o.has(p)||(_.has(p)?u[p]=r(l[p],l):u[p]=l[p]);let f=a(l,u,d);if(f!==null)return f??u}}var __e=u_e,m_e=({parser:e})=>e==="json"||e==="json5"||e==="jsonc"||e==="json-stringify";function p_e(e,t){let a=[e.node,...e.parentNodes],n=new Set([t.node,...t.parentNodes]);return a.find(i=>QP.has(i.type)&&n.has(i))}function O2(e){let t=e.length-1;for(;;){let a=e[t];if((a==null?void 0:a.type)==="Program"||(a==null?void 0:a.type)==="File")t--;else break}return e.slice(0,t+1)}function f_e(e,t,{locStart:a,locEnd:n}){let i=e.node,o=t.node;if(i===o)return{startNode:i,endNode:o};let r=a(e.node);for(let d of O2(t.parentNodes))if(a(d)>=r)o=d;else break;let l=n(t.node);for(let d of O2(e.parentNodes)){if(n(d)<=l)i=d;else break;if(i===o)break}return{startNode:i,endNode:o}}function Kg(e,t,a,n,i=[],o){let{locStart:r,locEnd:l}=a,d=r(e),u=l(e);if(!(t>u||tn);let l=e.slice(n,i).search(/\S/),d=l===-1;if(!d)for(n+=l;i>n&&!/\S/.test(e[i-1]);--i);let u=Kg(a,n,t,(h,g)=>$2(t,h,g),[],"rangeStart"),_=d?u:Kg(a,i,t,h=>$2(t,h),[],"rangeEnd");if(!u||!_)return{rangeStart:0,rangeEnd:0};let f,p;if(m_e(t)){let h=p_e(u,_);f=h,p=h}else({startNode:f,endNode:p}=f_e(u,_,t));return{rangeStart:Math.min(o(f),o(p)),rangeEnd:Math.max(r(f),r(p))}}var JP="\uFEFF",L2=Symbol("cursor");async function XP(e,t,a=0){if(!e||e.trim().length===0)return{formatted:"",cursorOffset:-1,comments:[]};let{ast:n,text:i}=await Hd(e,t);t.cursorOffset>=0&&(t.cursorNode=d_e(n,t));let o=await ip(n,t);a>0&&(o=PP([js,o],a,t.tabWidth));let r=ap(o,t);if(a>0){let d=r.formatted.trim();r.cursorNodeStart!==void 0&&(r.cursorNodeStart-=r.formatted.indexOf(d)),r.formatted=d+Ay(t.endOfLine)}let l=t[Symbol.for("comments")];if(t.cursorOffset>=0){let d,u,_,f,p;if(t.cursorNode&&r.cursorNodeText?(d=t.locStart(t.cursorNode),u=i.slice(d,t.locEnd(t.cursorNode)),_=t.cursorOffset-d,f=r.cursorNodeStart,p=r.cursorNodeText):(d=0,u=i,_=t.cursorOffset,f=0,p=r.formatted),u===p)return{formatted:r.formatted,cursorOffset:f+_,comments:l};let h=u.split("");h.splice(_,0,L2);let g=p.split(""),y=(0,ode.diffArrays)(h,g),k=f;for(let b of y)if(b.removed){if(b.value.includes(L2))break}else k+=b.count;return{formatted:r.formatted,cursorOffset:k,comments:l}}return{formatted:r.formatted,cursorOffset:-1,comments:l}}async function y_e(e,t){let{ast:a,text:n}=await Hd(e,t),{rangeStart:i,rangeEnd:o}=v_e(n,t,a),r=n.slice(i,o),l=Math.min(i,n.lastIndexOf(` +`,i)+1),d=n.slice(l,i).match(/^\s*/)[0],u=Ny(d,t.tabWidth),_=await XP(r,{...t,rangeStart:0,rangeEnd:Number.POSITIVE_INFINITY,cursorOffset:t.cursorOffset>i&&t.cursorOffset<=o?t.cursorOffset-i:-1,endOfLine:"lf"},u),f=_.formatted.trimEnd(),{cursorOffset:p}=t;p>o?p+=f.length-r.length:_.cursorOffset>=0&&(p=_.cursorOffset+i);let h=n.slice(0,i)+f+n.slice(o);if(t.endOfLine!=="lf"){let g=Ay(t.endOfLine);p>=0&&g===`\r +`&&(p+=yP(h.slice(0,p),` +`)),h=Xm(!1,h,` +`,g)}return{formatted:h,cursorOffset:p,comments:_.comments}}function Ih(e,t,a){return typeof t!="number"||Number.isNaN(t)||t<0||t>e.length?a:t}function B2(e,t){let{cursorOffset:a,rangeStart:n,rangeEnd:i}=t;return a=Ih(e,a,-1),n=Ih(e,n,0),i=Ih(e,i,e.length),{...t,cursorOffset:a,rangeStart:n,rangeEnd:i}}function eE(e,t){let{cursorOffset:a,rangeStart:n,rangeEnd:i,endOfLine:o}=B2(e,t),r=e.charAt(0)===JP;if(r&&(e=e.slice(1),a--,n--,i--),o==="auto"&&(o=rde(e)),e.includes("\r")){let l=d=>yP(e.slice(0,Math.max(d,0)),`\r +`);a-=l(a),n-=l(n),i-=l(i),e=sde(e)}return{hasBOM:r,text:e,options:B2(e,{...t,cursorOffset:a,rangeStart:n,rangeEnd:i,endOfLine:o})}}async function U2(e,t){let a=await YP(t);return!a.hasPragma||a.hasPragma(e)}async function tE(e,t){let{hasBOM:a,text:n,options:i}=eE(e,await mc(t));if(i.rangeStart>=i.rangeEnd&&n!==""||i.requirePragma&&!await U2(n,i))return{formatted:e,cursorOffset:t.cursorOffset,comments:[]};let o;return i.rangeStart>0||i.rangeEnd=0&&o.cursorOffset++),o}async function b_e(e,t,a){let{text:n,options:i}=eE(e,await mc(t)),o=await Hd(n,i);return a&&(a.preprocessForPrint&&(o.ast=await GP(o.ast,i)),a.massage&&(o.ast=__e(o.ast,i))),o}async function k_e(e,t){t=await mc(t);let a=await ip(e,t);return ap(a,t)}async function w_e(e,t){let a=Sde(e),{formatted:n}=await tE(a,{...t,parser:"__js_expression"});return n}async function x_e(e,t){t=await mc(t);let{ast:a}=await Hd(e,t);return ip(a,t)}async function D_e(e,t){return ap(e,await mc(t))}var aE={};Qm(aE,{builders:()=>S_e,printer:()=>z_e,utils:()=>P_e});var S_e={join:zP,line:DP,softline:xde,hardline:js,literalline:SP,group:kP,conditionalGroup:vde,fill:wP,lineSuffix:Lg,lineSuffixBoundary:kde,cursor:Bg,breakParent:ep,ifBreak:yde,trim:wde,indent:nm,indentIfBreak:bde,align:nc,addAlignmentToDoc:PP,markAsRoot:hde,dedentToRoot:fde,dedent:gde,hardlineWithoutBreakParent:jy,literallineWithoutBreakParent:xP,label:Dde,concat:e=>e},z_e={printDocToString:ap},P_e={willBreak:Fde,traverseDoc:Cy,findInDoc:Iy,mapDoc:tp,removeLines:Ode,stripTrailingHardline:EP,replaceEndOfLine:Bde,canBreak:Vde},E_e="3.2.4",nE={};Qm(nE,{addDanglingComment:()=>gs,addLeadingComment:()=>El,addTrailingComment:()=>Al,getAlignmentSize:()=>Ny,getIndentSize:()=>N_e,getMaxContinuousCount:()=>R_e,getNextNonSpaceNonCommentCharacter:()=>$_e,getNextNonSpaceNonCommentCharacterIndex:()=>K_e,getStringWidth:()=>Ty,hasNewline:()=>Or,hasNewlineInRange:()=>B_e,hasSpaces:()=>V_e,isNextLineEmpty:()=>Q_e,isNextLineEmptyAfterIndex:()=>By,isPreviousLineEmpty:()=>Z_e,makeString:()=>H_e,skip:()=>qd,skipEverythingButNewLine:()=>NP,skipInlineComment:()=>Oy,skipNewline:()=>Us,skipSpaces:()=>Kr,skipToLineEnd:()=>IP,skipTrailingComment:()=>$y,skipWhitespace:()=>Jde});function A_e(e,t){if(t===!1)return!1;if(e.charAt(t)==="/"&&e.charAt(t+1)==="*"){for(let a=t+2;aMath.max(n,i.length/t.length),0)}var R_e=M_e;function O_e(e,t){let a=Ly(e,t);return a===!1?"":e.charAt(a)}var $_e=O_e;function L_e(e,t,a){for(let n=t;nr===n?r:l===t?"\\"+l:l||(a&&/^[^\n\r"'0-7\\bfnrt-vx\u2028\u2029]$/.test(r)?r:"\\"+r));return t+i+t}var H_e=q_e;function W_e(e,t,a){return Ly(e,a(t))}function K_e(e,t){return arguments.length===2||typeof t=="number"?Ly(e,t):W_e(...arguments)}function Y_e(e,t,a){return Ry(e,a(t))}function Z_e(e,t){return arguments.length===2||typeof t=="number"?Ry(e,t):Y_e(...arguments)}function G_e(e,t,a){return By(e,a(t))}function Q_e(e,t){return arguments.length===2||typeof t=="number"?By(e,t):G_e(...arguments)}function ys(e,t=1){return async(...a)=>{let n=a[t]??{},i=n.plugins??[];return a[t]={...n,plugins:Array.isArray(i)?i:Object.values(i)},e(...a)}}var iE=ys(tE);async function oE(e,t){let{formatted:a}=await iE(e,{...t,cursorOffset:-1});return a}async function J_e(e,t){return await oE(e,t)===e}var X_e=ys(LP,0),eme={parse:ys(b_e),formatAST:ys(k_e),formatDoc:ys(w_e),printToDoc:ys(x_e),printDocToString:ys(D_e)};const tme=(e=!1)=>{const t=e?window.pinia.defineStore:un,{global:a}=window.i18n;return t({id:"custom-field",state:()=>({customFields:[],isRequestOngoing:!1,currentCustomField:{...h2}}),getters:{isEdit(){return!!this.currentCustomField.id}},actions:{resetCustomFields(){this.customFields=[]},resetCurrentCustomField(){this.currentCustomField={...h2}},fetchCustomFields(n){return new Promise((i,o)=>{ye.get("/api/v1/custom-fields",{params:n}).then(r=>{this.customFields=r.data.data,i(r)}).catch(r=>{ke(r),o(r)})})},fetchNoteCustomFields(n){return new Promise((i,o)=>{if(this.isRequestOngoing)return i({requestOnGoing:!0}),!0;this.isRequestOngoing=!0,ye.get("/api/v1/custom-fields",{params:n}).then(r=>{this.customFields=r.data.data,this.isRequestOngoing=!1,i(r)}).catch(r=>{this.isRequestOngoing=!1,ke(r),o(r)})})},fetchCustomField(n){return new Promise((i,o)=>{ye.get(`/api/v1/custom-fields/${n}`).then(r=>{this.currentCustomField=r.data.data,this.currentCustomField.options&&this.currentCustomField.options.length&&(this.currentCustomField.options=this.currentCustomField.options.map(l=>l={name:l})),i(r)}).catch(r=>{ke(r),o(r)})})},addCustomField(n){const i=gt();return new Promise((o,r)=>{ye.post("/api/v1/custom-fields",n).then(l=>{let d={...l.data.data};d.options&&(d.options=d.options.map(u=>({name:u||""}))),this.customFields.push(d),i.showNotification({type:"success",message:a.t("settings.custom_fields.added_message")}),o(l)}).catch(l=>{ke(l),r(l)})})},updateCustomField(n){const i=gt();return new Promise((o,r)=>{ye.put(`/api/v1/custom-fields/${n.id}`,n).then(l=>{let d={...l.data.data};d.options&&(d.options=d.options.map(_=>({name:_||""})));let u=this.customFields.findIndex(_=>_.id===d.id);this.customFields[u]&&(this.customFields[u]=d),i.showNotification({type:"success",message:a.t("settings.custom_fields.updated_message")}),o(l)}).catch(l=>{ke(l),r(l)})})},deleteCustomFields(n){const i=gt();return new Promise((o,r)=>{ye.delete(`/api/v1/custom-fields/${n}`).then(l=>{let d=this.customFields.findIndex(u=>u.id===n);this.customFields.splice(d,1),l.data.error?i.showNotification({type:"error",message:a.t("settings.custom_fields.already_in_use")}):i.showNotification({type:"success",message:a.t("settings.custom_fields.deleted_message")}),o(l)}).catch(l=>{ke(l),r(l)})})}}})()},ame={key:1,class:"relative"},nme={class:"absolute bottom-0 right-0 z-10"},ime={class:"flex p-2"},ome={class:"mb-1 ml-2 text-xs font-semibold text-gray-500 uppercase"},rme=["onClick"],sme={class:"flex pl-1"},lme={__name:"BaseCustomInput",props:{contentLoading:{type:Boolean,default:!1},modelValue:{type:String,default:""},fields:{type:Array,default:null}},emits:["update:modelValue"],setup(e,{emit:t}){const a=e,n=t,i=tme();let o=le([]),r=le([]),l=le([]),d=le([]),u=le([]);Yt(()=>a.fields,h=>{a.fields&&a.fields.length>0&&p()}),Yt(()=>i.customFields,h=>{r.value=h?h.filter(g=>g.model_type==="Invoice"):[],u.value=h?h.filter(g=>g.model_type==="Customer"):[],d.value=h?h.filter(g=>g.model_type==="Payment"):[],l.value=h.filter(g=>g.model_type==="Estimate"),p()}),Ct(()=>{f()});const _=V({get:()=>a.modelValue,set:h=>{n("update:modelValue",h)}});async function f(){await i.fetchCustomFields()}async function p(){o.value=[],a.fields&&a.fields.length>0&&(a.fields.find(h=>h=="shipping")&&o.value.push({label:"Shipping Address",fields:[{label:"Address name",value:"SHIPPING_ADDRESS_NAME"},{label:"Country",value:"SHIPPING_COUNTRY"},{label:"State",value:"SHIPPING_STATE"},{label:"City",value:"SHIPPING_CITY"},{label:"Address Street 1",value:"SHIPPING_ADDRESS_STREET_1"},{label:"Address Street 2",value:"SHIPPING_ADDRESS_STREET_2"},{label:"Phone",value:"SHIPPING_PHONE"},{label:"Zip Code",value:"SHIPPING_ZIP_CODE"}]}),a.fields.find(h=>h=="billing")&&o.value.push({label:"Billing Address",fields:[{label:"Address name",value:"BILLING_ADDRESS_NAME"},{label:"Country",value:"BILLING_COUNTRY"},{label:"State",value:"BILLING_STATE"},{label:"City",value:"BILLING_CITY"},{label:"Address Street 1",value:"BILLING_ADDRESS_STREET_1"},{label:"Address Street 2",value:"BILLING_ADDRESS_STREET_2"},{label:"Phone",value:"BILLING_PHONE"},{label:"Zip Code",value:"BILLING_ZIP_CODE"}]}),a.fields.find(h=>h=="customer")&&o.value.push({label:"Customer",fields:[{label:"Display Name",value:"CONTACT_DISPLAY_NAME"},{label:"Contact Name",value:"PRIMARY_CONTACT_NAME"},{label:"Email",value:"CONTACT_EMAIL"},{label:"Phone",value:"CONTACT_PHONE"},{label:"Website",value:"CONTACT_WEBSITE"},...u.value.map(h=>({label:h.label,value:h.slug}))]}),a.fields.find(h=>h=="invoice")&&o.value.push({label:"Invoice",fields:[{label:"Date",value:"INVOICE_DATE"},{label:"Due Date",value:"INVOICE_DUE_DATE"},{label:"Number",value:"INVOICE_NUMBER"},{label:"Ref Number",value:"INVOICE_REF_NUMBER"},...r.value.map(h=>({label:h.label,value:h.slug}))]}),a.fields.find(h=>h=="estimate")&&o.value.push({label:"Estimate",fields:[{label:"Date",value:"ESTIMATE_DATE"},{label:"Expiry Date",value:"ESTIMATE_EXPIRY_DATE"},{label:"Number",value:"ESTIMATE_NUMBER"},{label:"Ref Number",value:"ESTIMATE_REF_NUMBER"},...l.value.map(h=>({label:h.label,value:h.slug}))]}),a.fields.find(h=>h=="payment")&&o.value.push({label:"Payment",fields:[{label:"Date",value:"PAYMENT_DATE"},{label:"Number",value:"PAYMENT_NUMBER"},{label:"Mode",value:"PAYMENT_MODE"},{label:"Amount",value:"PAYMENT_AMOUNT"},...d.value.map(h=>({label:h.label,value:h.slug}))]}),a.fields.find(h=>h=="company")&&o.value.push({label:"Company",fields:[{label:"Company Name",value:"COMPANY_NAME"},{label:"Country",value:"COMPANY_COUNTRY"},{label:"State",value:"COMPANY_STATE"},{label:"City",value:"COMPANY_CITY"},{label:"Address Street 1",value:"COMPANY_ADDRESS_STREET_1"},{label:"Address Street 2",value:"COMPANY_ADDRESS_STREET_2"},{label:"Phone",value:"COMPANY_PHONE"},{label:"Zip Code",value:"COMPANY_ZIP_CODE"}]}))}return p(),(h,g)=>{const y=Ue("BaseContentPlaceholdersBox"),k=Ue("BaseContentPlaceholders"),b=Ue("BaseIcon"),z=Ue("BaseButton"),w=Ue("BaseDropdown"),D=Ue("BaseEditor");return e.contentLoading?(P(),R(k,{key:0},{default:me(()=>[C(y,{rounded:!0,class:"w-full",style:{height:"200px"}})]),_:1})):(P(),ae("div",ame,[ee("div",nme,[C(w,{"close-on-select":!0,"max-height":"220",position:"top-end","width-class":"w-92",class:"mb-2"},{activator:me(()=>[C(z,{type:"button",variant:"primary-outline",class:"mr-4"},{left:me(E=>[C(b,{name:"PlusSmIcon",class:Be(E.class)},null,8,["class"])]),default:me(()=>[$t(Ie(h.$t("settings.customization.insert_fields"))+" ",1)]),_:1})]),default:me(()=>[ee("div",ime,[(P(!0),ae(yt,null,Un(L(o),(E,T)=>(P(),ae("ul",{key:T,class:"list-none"},[ee("li",ome,Ie(E.label),1),(P(!0),ae(yt,null,Un(E.fields,(N,j)=>(P(),ae("li",{key:j,class:"w-48 text-sm font-normal cursor-pointer hover:bg-gray-100 rounded ml-1 py-0.5",onClick:q=>_.value+=`{${N.value}}`},[ee("div",sme,[C(b,{name:"ChevronDoubleRightIcon",class:"h-3 mt-1 mr-2 text-gray-400"}),$t(" "+Ie(N.label),1)])],8,rme))),128))]))),128))])]),_:1})]),C(D,{modelValue:_.value,"onUpdate:modelValue":g[0]||(g[0]=E=>_.value=E)},null,8,["modelValue"])]))}}},cme=Object.freeze(Object.defineProperty({__proto__:null,default:lme},Symbol.toStringTag,{value:"Module"})),dme={props:{tag:{type:String,default:"button"}},setup(e,{slots:t,attrs:a,emit:n}){return()=>Pt(`${e.tag}`,a,t)}},ume=Object.freeze(Object.defineProperty({__proto__:null,default:dme},Symbol.toStringTag,{value:"Module"})),_me={key:0,class:"text-sm font-bold leading-5 text-black non-italic space-y-1"},mme={key:0},pme={key:1},fme={key:2},hme={key:3},gme={key:4},vme={key:5},yme={__name:"BaseCustomerAddressDisplay",props:{address:{type:Object,required:!0}},setup(e){return(t,a)=>{var n,i,o,r,l,d,u,_,f,p,h,g,y,k;return e.address?(P(),ae("div",_me,[(n=e.address)!=null&&n.address_street_1?(P(),ae("p",mme,Ie((i=e.address)==null?void 0:i.address_street_1)+",",1)):Re("",!0),(o=e.address)!=null&&o.address_street_2?(P(),ae("p",pme,Ie((r=e.address)==null?void 0:r.address_street_2)+",",1)):Re("",!0),(l=e.address)!=null&&l.city?(P(),ae("p",fme,Ie((d=e.address)==null?void 0:d.city)+",",1)):Re("",!0),(u=e.address)!=null&&u.state?(P(),ae("p",hme,Ie((_=e.address)==null?void 0:_.state)+",",1)):Re("",!0),(p=(f=e.address)==null?void 0:f.country)!=null&&p.name?(P(),ae("p",gme,Ie((g=(h=e.address)==null?void 0:h.country)==null?void 0:g.name)+",",1)):Re("",!0),(y=e.address)!=null&&y.zip?(P(),ae("p",vme,Ie((k=e.address)==null?void 0:k.zip)+".",1)):Re("",!0)])):Re("",!0)}}},bme=Object.freeze(Object.defineProperty({__proto__:null,default:yme},Symbol.toStringTag,{value:"Module"})),im={name:null,phone:null,address_street_1:null,address_street_2:null,city:null,state:null,country_id:null,zip:null,type:null};function V2(){return{name:"",contact_name:"",email:"",phone:null,password:"",confirm_password:"",currency_id:null,website:null,billing:{...im},shipping:{...im},customFields:[],fields:[],enable_portal:!1}}const pc=(e=!1)=>{const t=e?window.pinia.defineStore:un,{global:a}=window.i18n;return t({id:"customer",state:()=>({customers:[],totalCustomers:0,selectAllField:!1,selectedCustomers:[],selectedViewCustomer:{},isFetchingInitialSettings:!1,isFetchingViewData:!1,currentCustomer:{...V2()},editCustomer:null}),getters:{isEdit:n=>!!n.currentCustomer.id},actions:{resetCurrentCustomer(){this.currentCustomer={...V2()}},copyAddress(){this.currentCustomer.shipping={...this.currentCustomer.billing,type:"shipping"}},fetchCustomerInitialSettings(n){const i=Zr(),o=Um(),r=er();this.isFetchingInitialSettings=!0;let l=[];n?l=[this.fetchCustomer(i.params.id)]:this.currentCustomer.currency_id=r.selectedCompanyCurrency.id,Promise.all([o.fetchCurrencies(),o.fetchCountries(),...l]).then(async([d,u,_])=>{this.isFetchingInitialSettings=!1}).catch(d=>{ke(d)})},fetchCustomers(n){return new Promise((i,o)=>{ye.get("/api/v1/customers",{params:n}).then(r=>{this.customers=r.data.data,this.totalCustomers=r.data.meta.customer_total_count,i(r)}).catch(r=>{ke(r),o(r)})})},fetchViewCustomer(n){return new Promise((i,o)=>{this.isFetchingViewData=!0,ye.get(`/api/v1/customers/${n.id}/stats`,{params:n}).then(r=>{this.selectedViewCustomer={},Object.assign(this.selectedViewCustomer,r.data.data),this.setAddressStub(r.data.data),this.isFetchingViewData=!1,i(r)}).catch(r=>{this.isFetchingViewData=!1,ke(r),o(r)})})},fetchCustomer(n){return new Promise((i,o)=>{ye.get(`/api/v1/customers/${n}`).then(r=>{Object.assign(this.currentCustomer,r.data.data),this.setAddressStub(r.data.data),i(r)}).catch(r=>{ke(r),o(r)})})},addCustomer(n){return new Promise((i,o)=>{ye.post("/api/v1/customers",n).then(r=>{this.customers.push(r.data.data),gt().showNotification({type:"success",message:a.t("customers.created_message")}),i(r)}).catch(r=>{ke(r),o(r)})})},updateCustomer(n){return new Promise((i,o)=>{ye.put(`/api/v1/customers/${n.id}`,n).then(r=>{if(r.data){let l=this.customers.findIndex(u=>u.id===r.data.data.id);this.customers[l]=n,gt().showNotification({type:"success",message:a.t("customers.updated_message")})}i(r)}).catch(r=>{ke(r),o(r)})})},deleteCustomer(n){const i=gt();return new Promise((o,r)=>{ye.post("/api/v1/customers/delete",n).then(l=>{let d=this.customers.findIndex(u=>u.id===n);this.customers.splice(d,1),i.showNotification({type:"success",message:a.tc("customers.deleted_message",1)}),o(l)}).catch(l=>{ke(l),r(l)})})},deleteMultipleCustomers(){const n=gt();return new Promise((i,o)=>{ye.post("/api/v1/customers/delete",{ids:this.selectedCustomers}).then(r=>{this.selectedCustomers.forEach(l=>{let d=this.customers.findIndex(u=>u.id===l.id);this.customers.splice(d,1)}),n.showNotification({type:"success",message:a.tc("customers.deleted_message",2)}),i(r)}).catch(r=>{ke(r),o(r)})})},setSelectAllState(n){this.selectAllField=n},selectCustomer(n){this.selectedCustomers=n,this.selectedCustomers.length===this.customers.length?this.selectAllField=!0:this.selectAllField=!1},selectAllCustomers(){if(this.selectedCustomers.length===this.customers.length)this.selectedCustomers=[],this.selectAllField=!1;else{let n=this.customers.map(i=>i.id);this.selectedCustomers=n,this.selectAllField=!0}},setAddressStub(n){n.billing||(this.currentCustomer.billing={...im}),n.shipping||(this.currentCustomer.shipping={...im})}}})()},Wd=(e=!1)=>(e?window.pinia.defineStore:un)({id:"modal",state:()=>({active:!1,content:"",title:"",componentName:"",id:"",size:"md",data:null,refreshData:null,variant:""}),getters:{isEdit(){return!!this.id}},actions:{openModal(a){this.componentName=a.componentName,this.active=!0,a.id&&(this.id=a.id),this.title=a.title,a.content&&(this.content=a.content),a.data&&(this.data=a.data),a.refreshData&&(this.refreshData=a.refreshData),a.variant&&(this.variant=a.variant),a.size&&(this.size=a.size)},resetModalData(){this.content="",this.title="",this.componentName="",this.id="",this.data=null,this.refreshData=null},closeModal(){this.active=!1,setTimeout(()=>{this.resetModalData()},300)}}})();function q2(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),a.push.apply(a,n)}return a}function xd(e){for(var t=1;t1&&arguments[1]!==void 0?arguments[1]:[];const a=op(e);return xd(xd({},a),{},{$async:!0,$watchTargets:t})}function Sme(e){return{$validator(t){for(var a=arguments.length,n=new Array(a>1?a-1:0),i=1;i{const d=Object.entries(r).reduce((u,_)=>{let[f,p]=_;const h=e[f]||{},g=Object.entries(h).reduce((y,k)=>{let[b,z]=k;const D=sE(z).call(this,p,r,l,...n),E=rE(D);if(y.$data[b]=D,y.$data.$invalid=!E||!!y.$data.$invalid,y.$data.$error=y.$data.$invalid,!E){let T=z.$message||"";const N=z.$params||{};typeof T=="function"&&(T=T({$pending:!1,$invalid:!E,$params:N,$model:p,$response:D})),y.$errors.push({$property:f,$message:T,$params:N,$response:D,$model:p,$pending:!1,$validator:b})}return{$valid:y.$valid&&E,$data:y.$data,$errors:y.$errors}},{$valid:!0,$data:{},$errors:[]});return u.$data[f]=g.$data,u.$errors[f]=g.$errors,{$valid:u.$valid&&g.$valid,$data:u.$data,$errors:u.$errors}},{$valid:!0,$data:{},$errors:{}});return{$valid:o.$valid&&d.$valid,$data:o.$data.concat(d.$data),$errors:o.$errors.concat(d.$errors)}},{$valid:!0,$data:[],$errors:[]})},$message:t=>{let{$response:a}=t;return a?a.$errors.map(n=>Object.values(n).map(i=>i.map(o=>o.$message)).reduce((i,o)=>i.concat(o),[])):[]}}}const Xr=e=>{if(e=L(e),Array.isArray(e))return!!e.length;if(e==null)return!1;if(e===!1)return!0;if(e instanceof Date)return!isNaN(e.getTime());if(typeof e=="object"){for(let t in e)return!0;return!1}return!!String(e).length},Uy=e=>(e=L(e),Array.isArray(e)?e.length:typeof e=="object"?Object.keys(e).length:String(e).length);function es(){for(var e=arguments.length,t=new Array(e),a=0;a(n=L(n),!Xr(n)||t.every(i=>(i.lastIndex=0,i.test(n))))}var jn=Object.freeze({__proto__:null,forEach:Sme,len:Uy,normalizeValidatorObject:op,regex:es,req:Xr,unwrap:L,unwrapNormalizedValidator:sE,unwrapValidatorResponse:rE,withAsync:Dme,withMessage:xme,withParams:wme});es(/^[a-zA-Z]*$/);es(/^[a-zA-Z0-9]*$/);var zme=es(/^\d*(\.\d+)?$/),REe={$validator:zme,$message:"Value must be numeric",$params:{type:"numeric"}};function Pme(e,t){return a=>!Xr(a)||(!/\s/.test(a)||a instanceof Date)&&+L(e)<=+a&&+L(t)>=+a}function OEe(e,t){return{$validator:Pme(e,t),$message:a=>{let{$params:n}=a;return`The value must be between ${n.min} and ${n.max}`},$params:{min:e,max:t,type:"between"}}}const Eme=/^(?:[A-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[A-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9]{2,}(?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])$/i;var Ame=es(Eme),Cme={$validator:Ame,$message:"Value is not a valid email address",$params:{type:"email"}};function jme(e){return t=>!Xr(t)||Uy(t)<=L(e)}function m_(e){return{$validator:jme(e),$message:t=>{let{$params:a}=t;return`The maximum length allowed is ${a.max}`},$params:{max:e,type:"maxLength"}}}function Tme(e){return t=>!Xr(t)||Uy(t)>=L(e)}function Nh(e){return{$validator:Tme(e),$message:t=>{let{$params:a}=t;return`This field should be at least ${a.min} characters long`},$params:{min:e,type:"minLength"}}}function Ime(e){return typeof e=="string"&&(e=e.trim()),Xr(e)}var H2={$validator:Ime,$message:"Value is required",$params:{type:"required"}};const W2=(e,t)=>e?Xr(typeof t=="string"?t.trim():t):!0;function Nme(e){return function(t,a){if(typeof e!="function")return W2(L(e),t);const n=e.call(this,t,a);return W2(n,t)}}function K2(e){return{$validator:Nme(e),$message:"The value is required",$params:{type:"requiredIf",prop:e}}}function Fme(e){return t=>L(t)===L(e)}function Mme(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"other";return{$validator:Fme(e),$message:a=>`The value must be equal to the ${t} value`,$params:{equalTo:e,otherName:t,type:"sameAs"}}}const Rme=/^(?:(?:(?:https?|ftp):)?\/\/)(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z0-9\u00a1-\uffff][a-z0-9\u00a1-\uffff_-]{0,62})?[a-z0-9\u00a1-\uffff]\.)+(?:[a-z\u00a1-\uffff]{2,}\.?))(?::\d{2,5})?(?:[/?#]\S*)?$/i;var Ome=es(Rme),$me={$validator:Ome,$message:"The value is not a valid URL address",$params:{type:"url"}};function Lme(e){return t=>!Xr(t)||(!/\s/.test(t)||t instanceof Date)&&+t>=+L(e)}function $Ee(e){return{$validator:Lme(e),$message:t=>{let{$params:a}=t;return`The minimum value allowed is ${a.min}`},$params:{min:e,type:"minValue"}}}es(/(^[0-9]*$)|(^-[0-9]+$)/);var Bme=es(/^[-]?\d*(\.\d+)?$/),LEe={$validator:Bme,$message:"Value must be decimal",$params:{type:"decimal"}};//! moment.js //! version : 2.30.1 //! authors : Tim Wood, Iskren Chernev, Moment.js contributors //! license : MIT //! momentjs.com -var lA;function Ie(){return lA.apply(null,arguments)}function qme(e){lA=e}function to(e){return e instanceof Array||Object.prototype.toString.call(e)==="[object Array]"}function jr(e){return e!=null&&Object.prototype.toString.call(e)==="[object Object]"}function Zt(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function Vy(e){if(Object.getOwnPropertyNames)return Object.getOwnPropertyNames(e).length===0;var t;for(t in e)if(Zt(e,t))return!1;return!0}function jn(e){return e===void 0}function Qo(e){return typeof e=="number"||Object.prototype.toString.call(e)==="[object Number]"}function Kd(e){return e instanceof Date||Object.prototype.toString.call(e)==="[object Date]"}function cA(e,t){var a=[],n,i=e.length;for(n=0;n>>0,n;for(n=0;n0)for(a=0;a>>0,n;for(n=0;n0)for(a=0;a=0;return(o?a?"+":"":"-")+Math.pow(10,Math.max(0,i)).toString().substr(1)+n}var Ky=/(\[[^\[]*\])|(\\)?([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,p_=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,Oh={},Ll={};function tt(e,t,a,n){var i=n;typeof n=="string"&&(i=function(){return this[n]()}),e&&(Ll[e]=i),t&&(Ll[t[0]]=function(){return bo(i.apply(this,arguments),t[1],t[2])}),a&&(Ll[a]=function(){return this.localeData().ordinal(i.apply(this,arguments),e)})}function Zme(e){return e.match(/\[[\s\S]/)?e.replace(/^\[|\]$/g,""):e.replace(/\\/g,"")}function Gme(e){var t=e.match(Ky),a,n;for(a=0,n=t.length;a=0&&p_.test(e);)e=e.replace(p_,n),p_.lastIndex=0,a-=1;return e}var Qme={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 Jme(e){var t=this._longDateFormat[e],a=this._longDateFormat[e.toUpperCase()];return t||!a?t:(this._longDateFormat[e]=a.match(Ky).map(function(n){return n==="MMMM"||n==="MM"||n==="DD"||n==="dddd"?n.slice(1):n}).join(""),this._longDateFormat[e])}var Xme="Invalid date";function epe(){return this._invalidDate}var tpe="%d",ape=/\d{1,2}/;function npe(e){return this._ordinal.replace("%d",e)}var ipe={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 ope(e,t,a,n){var i=this._relativeTime[a];return xo(i)?i(e,t,a,n):i.replace(/%d/i,e)}function spe(e,t){var a=this._relativeTime[e>0?"future":"past"];return xo(a)?a(t):a.replace(/%s/i,t)}var Gx={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 $i(e){return typeof e=="string"?Gx[e]||Gx[e.toLowerCase()]:void 0}function Yy(e){var t={},a,n;for(n in e)Zt(e,n)&&(a=$i(n),a&&(t[a]=e[n]));return t}var rpe={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 lpe(e){var t=[],a;for(a in e)Zt(e,a)&&t.push({unit:a,priority:rpe[a]});return t.sort(function(n,i){return n.priority-i.priority}),t}var mA=/\d/,mi=/\d\d/,pA=/\d{3}/,Zy=/\d{4}/,lp=/[+-]?\d{6}/,va=/\d\d?/,fA=/\d\d\d\d?/,hA=/\d\d\d\d\d\d?/,cp=/\d{1,3}/,Gy=/\d{1,4}/,dp=/[+-]?\d{1,6}/,fc=/\d+/,up=/[+-]?\d+/,cpe=/Z|[+-]\d\d:?\d\d/gi,_p=/Z|[+-]\d\d(?::?\d\d)?/gi,dpe=/[+-]?\d+(\.\d{1,3})?/,Zd=/[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,hc=/^[1-9]\d?/,Qy=/^([1-9]\d|\d)/,sm;sm={};function qe(e,t,a){sm[e]=xo(t)?t:function(n,i){return n&&a?a:t}}function upe(e,t){return Zt(sm,e)?sm[e](t._strict,t._locale):new RegExp(_pe(e))}function _pe(e){return Yo(e.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(t,a,n,i,o){return a||n||i||o}))}function Yo(e){return e.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function zi(e){return e<0?Math.ceil(e)||0:Math.floor(e)}function Rt(e){var t=+e,a=0;return t!==0&&isFinite(t)&&(a=zi(t)),a}var Xg={};function ra(e,t){var a,n=t,i;for(typeof e=="string"&&(e=[e]),Qo(t)&&(n=function(o,s){s[t]=Rt(o)}),i=e.length,a=0;a68?1900:2e3)};var gA=gc("FullYear",!0);function hpe(){return mp(this.year())}function gc(e,t){return function(a){return a!=null?(vA(this,e,a),Ie.updateOffset(this,t),this):xd(this,e)}}function xd(e,t){if(!e.isValid())return NaN;var a=e._d,n=e._isUTC;switch(t){case"Milliseconds":return n?a.getUTCMilliseconds():a.getMilliseconds();case"Seconds":return n?a.getUTCSeconds():a.getSeconds();case"Minutes":return n?a.getUTCMinutes():a.getMinutes();case"Hours":return n?a.getUTCHours():a.getHours();case"Date":return n?a.getUTCDate():a.getDate();case"Day":return n?a.getUTCDay():a.getDay();case"Month":return n?a.getUTCMonth():a.getMonth();case"FullYear":return n?a.getUTCFullYear():a.getFullYear();default:return NaN}}function vA(e,t,a){var n,i,o,s,l;if(!(!e.isValid()||isNaN(a))){switch(n=e._d,i=e._isUTC,t){case"Milliseconds":return void(i?n.setUTCMilliseconds(a):n.setMilliseconds(a));case"Seconds":return void(i?n.setUTCSeconds(a):n.setSeconds(a));case"Minutes":return void(i?n.setUTCMinutes(a):n.setMinutes(a));case"Hours":return void(i?n.setUTCHours(a):n.setHours(a));case"Date":return void(i?n.setUTCDate(a):n.setDate(a));case"FullYear":break;default:return}o=a,s=e.month(),l=e.date(),l=l===29&&s===1&&!mp(o)?28:l,i?n.setUTCFullYear(o,s,l):n.setFullYear(o,s,l)}}function gpe(e){return e=$i(e),xo(this[e])?this[e]():this}function vpe(e,t){if(typeof e=="object"){e=Yy(e);var a=lpe(e),n,i=a.length;for(n=0;n=0?(l=new Date(e+400,t,a,n,i,o,s),isFinite(l.getFullYear())&&l.setFullYear(e)):l=new Date(e,t,a,n,i,o,s),l}function Sd(e){var t,a;return e<100&&e>=0?(a=Array.prototype.slice.call(arguments),a[0]=e+400,t=new Date(Date.UTC.apply(null,a)),isFinite(t.getUTCFullYear())&&t.setUTCFullYear(e)):t=new Date(Date.UTC.apply(null,arguments)),t}function rm(e,t,a){var n=7+t-a,i=(7+Sd(e,0,n).getUTCDay()-t)%7;return-i+n-1}function xA(e,t,a,n,i){var o=(7+a-n)%7,s=rm(e,n,i),l=1+7*(t-1)+o+s,d,u;return l<=0?(d=e-1,u=ld(d)+l):l>ld(e)?(d=e+1,u=l-ld(e)):(d=e,u=l),{year:d,dayOfYear:u}}function Pd(e,t,a){var n=rm(e.year(),t,a),i=Math.floor((e.dayOfYear()-n-1)/7)+1,o,s;return i<1?(s=e.year()-1,o=i+Zo(s,t,a)):i>Zo(e.year(),t,a)?(o=i-Zo(e.year(),t,a),s=e.year()+1):(s=e.year(),o=i),{week:o,year:s}}function Zo(e,t,a){var n=rm(e,t,a),i=rm(e+1,t,a);return(ld(e)-n+i)/7}tt("w",["ww",2],"wo","week");tt("W",["WW",2],"Wo","isoWeek");qe("w",va,hc);qe("ww",va,mi);qe("W",va,hc);qe("WW",va,mi);Gd(["w","ww","W","WW"],function(e,t,a,n){t[n.substr(0,1)]=Rt(e)});function Tpe(e){return Pd(e,this._week.dow,this._week.doy).week}var jpe={dow:0,doy:6};function Npe(){return this._week.dow}function Ipe(){return this._week.doy}function Fpe(e){var t=this.localeData().week(this);return e==null?t:this.add((e-t)*7,"d")}function Rpe(e){var t=Pd(this,1,4).week;return e==null?t:this.add((e-t)*7,"d")}tt("d",0,"do","day");tt("dd",0,0,function(e){return this.localeData().weekdaysMin(this,e)});tt("ddd",0,0,function(e){return this.localeData().weekdaysShort(this,e)});tt("dddd",0,0,function(e){return this.localeData().weekdays(this,e)});tt("e",0,0,"weekday");tt("E",0,0,"isoWeekday");qe("d",va);qe("e",va);qe("E",va);qe("dd",function(e,t){return t.weekdaysMinRegex(e)});qe("ddd",function(e,t){return t.weekdaysShortRegex(e)});qe("dddd",function(e,t){return t.weekdaysRegex(e)});Gd(["dd","ddd","dddd"],function(e,t,a,n){var i=a._locale.weekdaysParse(e,n,a._strict);i!=null?t.d=i:xt(a).invalidWeekday=e});Gd(["d","e","E"],function(e,t,a,n){t[n]=Rt(e)});function Ope(e,t){return typeof e!="string"?e:isNaN(e)?(e=t.weekdaysParse(e),typeof e=="number"?e:null):parseInt(e,10)}function Mpe(e,t){return typeof e=="string"?t.weekdaysParse(e)%7||7:isNaN(e)?null:e}function Xy(e,t){return e.slice(t,7).concat(e.slice(0,t))}var $pe="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),SA="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),Lpe="Su_Mo_Tu_We_Th_Fr_Sa".split("_"),Bpe=Zd,Upe=Zd,Vpe=Zd;function qpe(e,t){var a=to(this._weekdays)?this._weekdays:this._weekdays[e&&e!==!0&&this._weekdays.isFormat.test(t)?"format":"standalone"];return e===!0?Xy(a,this._week.dow):e?a[e.day()]:a}function Wpe(e){return e===!0?Xy(this._weekdaysShort,this._week.dow):e?this._weekdaysShort[e.day()]:this._weekdaysShort}function Hpe(e){return e===!0?Xy(this._weekdaysMin,this._week.dow):e?this._weekdaysMin[e.day()]:this._weekdaysMin}function Kpe(e,t,a){var n,i,o,s=e.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],n=0;n<7;++n)o=Do([2e3,1]).day(n),this._minWeekdaysParse[n]=this.weekdaysMin(o,"").toLocaleLowerCase(),this._shortWeekdaysParse[n]=this.weekdaysShort(o,"").toLocaleLowerCase(),this._weekdaysParse[n]=this.weekdays(o,"").toLocaleLowerCase();return a?t==="dddd"?(i=Ia.call(this._weekdaysParse,s),i!==-1?i:null):t==="ddd"?(i=Ia.call(this._shortWeekdaysParse,s),i!==-1?i:null):(i=Ia.call(this._minWeekdaysParse,s),i!==-1?i:null):t==="dddd"?(i=Ia.call(this._weekdaysParse,s),i!==-1||(i=Ia.call(this._shortWeekdaysParse,s),i!==-1)?i:(i=Ia.call(this._minWeekdaysParse,s),i!==-1?i:null)):t==="ddd"?(i=Ia.call(this._shortWeekdaysParse,s),i!==-1||(i=Ia.call(this._weekdaysParse,s),i!==-1)?i:(i=Ia.call(this._minWeekdaysParse,s),i!==-1?i:null)):(i=Ia.call(this._minWeekdaysParse,s),i!==-1||(i=Ia.call(this._weekdaysParse,s),i!==-1)?i:(i=Ia.call(this._shortWeekdaysParse,s),i!==-1?i:null))}function Ype(e,t,a){var n,i,o;if(this._weekdaysParseExact)return Kpe.call(this,e,t,a);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),n=0;n<7;n++){if(i=Do([2e3,1]).day(n),a&&!this._fullWeekdaysParse[n]&&(this._fullWeekdaysParse[n]=new RegExp("^"+this.weekdays(i,"").replace(".","\\.?")+"$","i"),this._shortWeekdaysParse[n]=new RegExp("^"+this.weekdaysShort(i,"").replace(".","\\.?")+"$","i"),this._minWeekdaysParse[n]=new RegExp("^"+this.weekdaysMin(i,"").replace(".","\\.?")+"$","i")),this._weekdaysParse[n]||(o="^"+this.weekdays(i,"")+"|^"+this.weekdaysShort(i,"")+"|^"+this.weekdaysMin(i,""),this._weekdaysParse[n]=new RegExp(o.replace(".",""),"i")),a&&t==="dddd"&&this._fullWeekdaysParse[n].test(e))return n;if(a&&t==="ddd"&&this._shortWeekdaysParse[n].test(e))return n;if(a&&t==="dd"&&this._minWeekdaysParse[n].test(e))return n;if(!a&&this._weekdaysParse[n].test(e))return n}}function Zpe(e){if(!this.isValid())return e!=null?this:NaN;var t=xd(this,"Day");return e!=null?(e=Ope(e,this.localeData()),this.add(e-t,"d")):t}function Gpe(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 Qpe(e){if(!this.isValid())return e!=null?this:NaN;if(e!=null){var t=Mpe(e,this.localeData());return this.day(this.day()%7?t:t-7)}else return this.day()||7}function Jpe(e){return this._weekdaysParseExact?(Zt(this,"_weekdaysRegex")||eb.call(this),e?this._weekdaysStrictRegex:this._weekdaysRegex):(Zt(this,"_weekdaysRegex")||(this._weekdaysRegex=Bpe),this._weekdaysStrictRegex&&e?this._weekdaysStrictRegex:this._weekdaysRegex)}function Xpe(e){return this._weekdaysParseExact?(Zt(this,"_weekdaysRegex")||eb.call(this),e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(Zt(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=Upe),this._weekdaysShortStrictRegex&&e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)}function efe(e){return this._weekdaysParseExact?(Zt(this,"_weekdaysRegex")||eb.call(this),e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(Zt(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=Vpe),this._weekdaysMinStrictRegex&&e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)}function eb(){function e(_,f){return f.length-_.length}var t=[],a=[],n=[],i=[],o,s,l,d,u;for(o=0;o<7;o++)s=Do([2e3,1]).day(o),l=Yo(this.weekdaysMin(s,"")),d=Yo(this.weekdaysShort(s,"")),u=Yo(this.weekdays(s,"")),t.push(l),a.push(d),n.push(u),i.push(l),i.push(d),i.push(u);t.sort(e),a.sort(e),n.sort(e),i.sort(e),this._weekdaysRegex=new RegExp("^("+i.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+n.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+a.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+t.join("|")+")","i")}function tb(){return this.hours()%12||12}function tfe(){return this.hours()||24}tt("H",["HH",2],0,"hour");tt("h",["hh",2],0,tb);tt("k",["kk",2],0,tfe);tt("hmm",0,0,function(){return""+tb.apply(this)+bo(this.minutes(),2)});tt("hmmss",0,0,function(){return""+tb.apply(this)+bo(this.minutes(),2)+bo(this.seconds(),2)});tt("Hmm",0,0,function(){return""+this.hours()+bo(this.minutes(),2)});tt("Hmmss",0,0,function(){return""+this.hours()+bo(this.minutes(),2)+bo(this.seconds(),2)});function PA(e,t){tt(e,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),t)})}PA("a",!0);PA("A",!1);function EA(e,t){return t._meridiemParse}qe("a",EA);qe("A",EA);qe("H",va,Qy);qe("h",va,hc);qe("k",va,hc);qe("HH",va,mi);qe("hh",va,mi);qe("kk",va,mi);qe("hmm",fA);qe("hmmss",hA);qe("Hmm",fA);qe("Hmmss",hA);ra(["H","HH"],qa);ra(["k","kk"],function(e,t,a){var n=Rt(e);t[qa]=n===24?0:n});ra(["a","A"],function(e,t,a){a._isPm=a._locale.isPM(e),a._meridiem=e});ra(["h","hh"],function(e,t,a){t[qa]=Rt(e),xt(a).bigHour=!0});ra("hmm",function(e,t,a){var n=e.length-2;t[qa]=Rt(e.substr(0,n)),t[Yi]=Rt(e.substr(n)),xt(a).bigHour=!0});ra("hmmss",function(e,t,a){var n=e.length-4,i=e.length-2;t[qa]=Rt(e.substr(0,n)),t[Yi]=Rt(e.substr(n,2)),t[Wo]=Rt(e.substr(i)),xt(a).bigHour=!0});ra("Hmm",function(e,t,a){var n=e.length-2;t[qa]=Rt(e.substr(0,n)),t[Yi]=Rt(e.substr(n))});ra("Hmmss",function(e,t,a){var n=e.length-4,i=e.length-2;t[qa]=Rt(e.substr(0,n)),t[Yi]=Rt(e.substr(n,2)),t[Wo]=Rt(e.substr(i))});function afe(e){return(e+"").toLowerCase().charAt(0)==="p"}var nfe=/[ap]\.?m?\.?/i,ife=gc("Hours",!0);function ofe(e,t,a){return e>11?a?"pm":"PM":a?"am":"AM"}var zA={calendar:Kme,longDateFormat:Qme,invalidDate:Xme,ordinal:tpe,dayOfMonthOrdinalParse:ape,relativeTime:ipe,months:bpe,monthsShort:yA,week:jpe,weekdays:$pe,weekdaysMin:Lpe,weekdaysShort:SA,meridiemParse:nfe},ba={},Uc={},Ed;function sfe(e,t){var a,n=Math.min(e.length,t.length);for(a=0;a0;){if(i=pp(o.slice(0,a).join("-")),i)return i;if(n&&n.length>=a&&sfe(o,n)>=a-1)break;a--}t++}return Ed}function lfe(e){return!!(e&&e.match("^[^/\\\\]*$"))}function pp(e){var t=null,a;if(ba[e]===void 0&&typeof module<"u"&&module&&module.exports&&lfe(e))try{t=Ed._abbr,a=require,a("./locale/"+e),$s(t)}catch{ba[e]=null}return ba[e]}function $s(e,t){var a;return e&&(jn(t)?a=rs(e):a=ab(e,t),a?Ed=a:typeof console<"u"&&console.warn&&console.warn("Locale "+e+" not found. Did you forget to load it?")),Ed._abbr}function ab(e,t){if(t!==null){var a,n=zA;if(t.abbr=e,ba[e]!=null)uA("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."),n=ba[e]._config;else if(t.parentLocale!=null)if(ba[t.parentLocale]!=null)n=ba[t.parentLocale]._config;else if(a=pp(t.parentLocale),a!=null)n=a._config;else return Uc[t.parentLocale]||(Uc[t.parentLocale]=[]),Uc[t.parentLocale].push({name:e,config:t}),null;return ba[e]=new Hy(Qg(n,t)),Uc[e]&&Uc[e].forEach(function(i){ab(i.name,i.config)}),$s(e),ba[e]}else return delete ba[e],null}function cfe(e,t){if(t!=null){var a,n,i=zA;ba[e]!=null&&ba[e].parentLocale!=null?ba[e].set(Qg(ba[e]._config,t)):(n=pp(e),n!=null&&(i=n._config),t=Qg(i,t),n==null&&(t.abbr=e),a=new Hy(t),a.parentLocale=ba[e],ba[e]=a),$s(e)}else ba[e]!=null&&(ba[e].parentLocale!=null?(ba[e]=ba[e].parentLocale,e===$s()&&$s(e)):ba[e]!=null&&delete ba[e]);return ba[e]}function rs(e){var t;if(e&&e._locale&&e._locale._abbr&&(e=e._locale._abbr),!e)return Ed;if(!to(e)){if(t=pp(e),t)return t;e=[e]}return rfe(e)}function dfe(){return Jg(ba)}function nb(e){var t,a=e._a;return a&&xt(e).overflow===-2&&(t=a[qo]<0||a[qo]>11?qo:a[ho]<1||a[ho]>Jy(a[dn],a[qo])?ho:a[qa]<0||a[qa]>24||a[qa]===24&&(a[Yi]!==0||a[Wo]!==0||a[xr]!==0)?qa:a[Yi]<0||a[Yi]>59?Yi:a[Wo]<0||a[Wo]>59?Wo:a[xr]<0||a[xr]>999?xr:-1,xt(e)._overflowDayOfYear&&(tho)&&(t=ho),xt(e)._overflowWeeks&&t===-1&&(t=ppe),xt(e)._overflowWeekday&&t===-1&&(t=fpe),xt(e).overflow=t),e}var ufe=/^\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)?)?$/,_fe=/^\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)?)?$/,mfe=/Z|[+-]\d\d(?::?\d\d)?/,f_=[["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]],Mh=[["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/]],pfe=/^\/?Date\((-?\d+)/i,ffe=/^(?:(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}))$/,hfe={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 AA(e){var t,a,n=e._i,i=ufe.exec(n)||_fe.exec(n),o,s,l,d,u=f_.length,_=Mh.length;if(i){for(xt(e).iso=!0,t=0,a=u;tld(s)||e._dayOfYear===0)&&(xt(e)._overflowDayOfYear=!0),a=Sd(s,0,e._dayOfYear),e._a[qo]=a.getUTCMonth(),e._a[ho]=a.getUTCDate()),t=0;t<3&&e._a[t]==null;++t)e._a[t]=n[t]=i[t];for(;t<7;t++)e._a[t]=n[t]=e._a[t]==null?t===2?1:0:e._a[t];e._a[qa]===24&&e._a[Yi]===0&&e._a[Wo]===0&&e._a[xr]===0&&(e._nextDay=!0,e._a[qa]=0),e._d=(e._useUTC?Sd:Cpe).apply(null,n),o=e._useUTC?e._d.getUTCDay():e._d.getDay(),e._tzm!=null&&e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm),e._nextDay&&(e._a[qa]=24),e._w&&typeof e._w.d<"u"&&e._w.d!==o&&(xt(e).weekdayMismatch=!0)}}function xfe(e){var t,a,n,i,o,s,l,d,u;t=e._w,t.GG!=null||t.W!=null||t.E!=null?(o=1,s=4,a=El(t.GG,e._a[dn],Pd(ga(),1,4).year),n=El(t.W,1),i=El(t.E,1),(i<1||i>7)&&(d=!0)):(o=e._locale._week.dow,s=e._locale._week.doy,u=Pd(ga(),o,s),a=El(t.gg,e._a[dn],u.year),n=El(t.w,u.week),t.d!=null?(i=t.d,(i<0||i>6)&&(d=!0)):t.e!=null?(i=t.e+o,(t.e<0||t.e>6)&&(d=!0)):i=o),n<1||n>Zo(a,o,s)?xt(e)._overflowWeeks=!0:d!=null?xt(e)._overflowWeekday=!0:(l=xA(a,n,i,o,s),e._a[dn]=l.year,e._dayOfYear=l.dayOfYear)}Ie.ISO_8601=function(){};Ie.RFC_2822=function(){};function ob(e){if(e._f===Ie.ISO_8601){AA(e);return}if(e._f===Ie.RFC_2822){CA(e);return}e._a=[],xt(e).empty=!0;var t=""+e._i,a,n,i,o,s,l=t.length,d=0,u,_;for(i=_A(e._f,e._locale).match(Ky)||[],_=i.length,a=0;a<_;a++)o=i[a],n=(t.match(upe(o,e))||[])[0],n&&(s=t.substr(0,t.indexOf(n)),s.length>0&&xt(e).unusedInput.push(s),t=t.slice(t.indexOf(n)+n.length),d+=n.length),Ll[o]?(n?xt(e).empty=!1:xt(e).unusedTokens.push(o),mpe(o,n,e)):e._strict&&!n&&xt(e).unusedTokens.push(o);xt(e).charsLeftOver=l-d,t.length>0&&xt(e).unusedInput.push(t),e._a[qa]<=12&&xt(e).bigHour===!0&&e._a[qa]>0&&(xt(e).bigHour=void 0),xt(e).parsedDateParts=e._a.slice(0),xt(e).meridiem=e._meridiem,e._a[qa]=Sfe(e._locale,e._a[qa],e._meridiem),u=xt(e).era,u!==null&&(e._a[dn]=e._locale.erasConvertYear(u,e._a[dn])),ib(e),nb(e)}function Sfe(e,t,a){var n;return a==null?t:e.meridiemHour!=null?e.meridiemHour(t,a):(e.isPM!=null&&(n=e.isPM(a),n&&t<12&&(t+=12),!n&&t===12&&(t=0)),t)}function Pfe(e){var t,a,n,i,o,s,l=!1,d=e._f.length;if(d===0){xt(e).invalidFormat=!0,e._d=new Date(NaN);return}for(i=0;ithis?this:e:rp()});function NA(e,t){var a,n;if(t.length===1&&to(t[0])&&(t=t[0]),!t.length)return ga();for(a=t[0],n=1;nthis.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()}function Kfe(){if(!jn(this._isDSTShifted))return this._isDSTShifted;var e={},t;return Wy(e,this),e=TA(e),e._a?(t=e._isUTC?Do(e._a):ga(e._a),this._isDSTShifted=this.isValid()&&Mfe(e._a,t.toArray())>0):this._isDSTShifted=!1,this._isDSTShifted}function Yfe(){return this.isValid()?!this._isUTC:!1}function Zfe(){return this.isValid()?this._isUTC:!1}function FA(){return this.isValid()?this._isUTC&&this._offset===0:!1}var Gfe=/^(-|\+)?(?:(\d*)[. ])?(\d+):(\d+)(?::(\d+)(\.\d*)?)?$/,Qfe=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;function so(e,t){var a=e,n=null,i,o,s;return j_(e)?a={ms:e._milliseconds,d:e._days,M:e._months}:Qo(e)||!isNaN(+e)?(a={},t?a[t]=+e:a.milliseconds=+e):(n=Gfe.exec(e))?(i=n[1]==="-"?-1:1,a={y:0,d:Rt(n[ho])*i,h:Rt(n[qa])*i,m:Rt(n[Yi])*i,s:Rt(n[Wo])*i,ms:Rt(ev(n[xr]*1e3))*i}):(n=Qfe.exec(e))?(i=n[1]==="-"?-1:1,a={y:fr(n[2],i),M:fr(n[3],i),w:fr(n[4],i),d:fr(n[5],i),h:fr(n[6],i),m:fr(n[7],i),s:fr(n[8],i)}):a==null?a={}:typeof a=="object"&&("from"in a||"to"in a)&&(s=Jfe(ga(a.from),ga(a.to)),a={},a.ms=s.milliseconds,a.M=s.months),o=new fp(a),j_(e)&&Zt(e,"_locale")&&(o._locale=e._locale),j_(e)&&Zt(e,"_isValid")&&(o._isValid=e._isValid),o}so.fn=fp.prototype;so.invalid=Ofe;function fr(e,t){var a=e&&parseFloat(e.replace(",","."));return(isNaN(a)?0:a)*t}function Jx(e,t){var a={};return a.months=t.month()-e.month()+(t.year()-e.year())*12,e.clone().add(a.months,"M").isAfter(t)&&--a.months,a.milliseconds=+t-+e.clone().add(a.months,"M"),a}function Jfe(e,t){var a;return e.isValid()&&t.isValid()?(t=rb(t,e),e.isBefore(t)?a=Jx(e,t):(a=Jx(t,e),a.milliseconds=-a.milliseconds,a.months=-a.months),a):{milliseconds:0,months:0}}function RA(e,t){return function(a,n){var i,o;return n!==null&&!isNaN(+n)&&(uA(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."),o=a,a=n,n=o),i=so(a,n),OA(this,i,e),this}}function OA(e,t,a,n){var i=t._milliseconds,o=ev(t._days),s=ev(t._months);e.isValid()&&(n=n??!0,s&&kA(e,xd(e,"Month")+s*a),o&&vA(e,"Date",xd(e,"Date")+o*a),i&&e._d.setTime(e._d.valueOf()+i*a),n&&Ie.updateOffset(e,o||s))}var Xfe=RA(1,"add"),ehe=RA(-1,"subtract");function MA(e){return typeof e=="string"||e instanceof String}function the(e){return ao(e)||Kd(e)||MA(e)||Qo(e)||nhe(e)||ahe(e)||e===null||e===void 0}function ahe(e){var t=jr(e)&&!Vy(e),a=!1,n=["years","year","y","months","month","M","days","day","d","dates","date","D","hours","hour","h","minutes","minute","m","seconds","second","s","milliseconds","millisecond","ms"],i,o,s=n.length;for(i=0;ia.valueOf():a.valueOf()9999?T_(a,t?"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYYYY-MM-DD[T]HH:mm:ss.SSSZ"):xo(Date.prototype.toISOString)?t?this.toDate().toISOString():new Date(this.valueOf()+this.utcOffset()*60*1e3).toISOString().replace("Z",T_(a,"Z")):T_(a,t?"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYY-MM-DD[T]HH:mm:ss.SSSZ")}function ghe(){if(!this.isValid())return"moment.invalid(/* "+this._i+" */)";var e="moment",t="",a,n,i,o;return this.isLocal()||(e=this.utcOffset()===0?"moment.utc":"moment.parseZone",t="Z"),a="["+e+'("]',n=0<=this.year()&&this.year()<=9999?"YYYY":"YYYYYY",i="-MM-DD[T]HH:mm:ss.SSS",o=t+'[")]',this.format(a+n+i+o)}function vhe(e){e||(e=this.isUtc()?Ie.defaultFormatUtc:Ie.defaultFormat);var t=T_(this,e);return this.localeData().postformat(t)}function yhe(e,t){return this.isValid()&&(ao(e)&&e.isValid()||ga(e).isValid())?so({to:this,from:e}).locale(this.locale()).humanize(!t):this.localeData().invalidDate()}function bhe(e){return this.from(ga(),e)}function khe(e,t){return this.isValid()&&(ao(e)&&e.isValid()||ga(e).isValid())?so({from:this,to:e}).locale(this.locale()).humanize(!t):this.localeData().invalidDate()}function whe(e){return this.to(ga(),e)}function $A(e){var t;return e===void 0?this._locale._abbr:(t=rs(e),t!=null&&(this._locale=t),this)}var LA=Mi("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 BA(){return this._locale}var lm=1e3,Bl=60*lm,cm=60*Bl,UA=(365*400+97)*24*cm;function Ul(e,t){return(e%t+t)%t}function VA(e,t,a){return e<100&&e>=0?new Date(e+400,t,a)-UA:new Date(e,t,a).valueOf()}function qA(e,t,a){return e<100&&e>=0?Date.UTC(e+400,t,a)-UA:Date.UTC(e,t,a)}function Dhe(e){var t,a;if(e=$i(e),e===void 0||e==="millisecond"||!this.isValid())return this;switch(a=this._isUTC?qA:VA,e){case"year":t=a(this.year(),0,1);break;case"quarter":t=a(this.year(),this.month()-this.month()%3,1);break;case"month":t=a(this.year(),this.month(),1);break;case"week":t=a(this.year(),this.month(),this.date()-this.weekday());break;case"isoWeek":t=a(this.year(),this.month(),this.date()-(this.isoWeekday()-1));break;case"day":case"date":t=a(this.year(),this.month(),this.date());break;case"hour":t=this._d.valueOf(),t-=Ul(t+(this._isUTC?0:this.utcOffset()*Bl),cm);break;case"minute":t=this._d.valueOf(),t-=Ul(t,Bl);break;case"second":t=this._d.valueOf(),t-=Ul(t,lm);break}return this._d.setTime(t),Ie.updateOffset(this,!0),this}function xhe(e){var t,a;if(e=$i(e),e===void 0||e==="millisecond"||!this.isValid())return this;switch(a=this._isUTC?qA:VA,e){case"year":t=a(this.year()+1,0,1)-1;break;case"quarter":t=a(this.year(),this.month()-this.month()%3+3,1)-1;break;case"month":t=a(this.year(),this.month()+1,1)-1;break;case"week":t=a(this.year(),this.month(),this.date()-this.weekday()+7)-1;break;case"isoWeek":t=a(this.year(),this.month(),this.date()-(this.isoWeekday()-1)+7)-1;break;case"day":case"date":t=a(this.year(),this.month(),this.date()+1)-1;break;case"hour":t=this._d.valueOf(),t+=cm-Ul(t+(this._isUTC?0:this.utcOffset()*Bl),cm)-1;break;case"minute":t=this._d.valueOf(),t+=Bl-Ul(t,Bl)-1;break;case"second":t=this._d.valueOf(),t+=lm-Ul(t,lm)-1;break}return this._d.setTime(t),Ie.updateOffset(this,!0),this}function She(){return this._d.valueOf()-(this._offset||0)*6e4}function Phe(){return Math.floor(this.valueOf()/1e3)}function Ehe(){return new Date(this.valueOf())}function zhe(){var e=this;return[e.year(),e.month(),e.date(),e.hour(),e.minute(),e.second(),e.millisecond()]}function Ahe(){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 Che(){return this.isValid()?this.toISOString():null}function The(){return qy(this)}function jhe(){return Is({},xt(this))}function Nhe(){return xt(this).overflow}function Ihe(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}}tt("N",0,0,"eraAbbr");tt("NN",0,0,"eraAbbr");tt("NNN",0,0,"eraAbbr");tt("NNNN",0,0,"eraName");tt("NNNNN",0,0,"eraNarrow");tt("y",["y",1],"yo","eraYear");tt("y",["yy",2],0,"eraYear");tt("y",["yyy",3],0,"eraYear");tt("y",["yyyy",4],0,"eraYear");qe("N",lb);qe("NN",lb);qe("NNN",lb);qe("NNNN",Whe);qe("NNNNN",Hhe);ra(["N","NN","NNN","NNNN","NNNNN"],function(e,t,a,n){var i=a._locale.erasParse(e,n,a._strict);i?xt(a).era=i:xt(a).invalidEra=e});qe("y",fc);qe("yy",fc);qe("yyy",fc);qe("yyyy",fc);qe("yo",Khe);ra(["y","yy","yyy","yyyy"],dn);ra(["yo"],function(e,t,a,n){var i;a._locale._eraYearOrdinalRegex&&(i=e.match(a._locale._eraYearOrdinalRegex)),a._locale.eraYearOrdinalParse?t[dn]=a._locale.eraYearOrdinalParse(e,i):t[dn]=parseInt(e,10)});function Fhe(e,t){var a,n,i,o=this._eras||rs("en")._eras;for(a=0,n=o.length;a=0)return o[n]}function Ohe(e,t){var a=e.since<=e.until?1:-1;return t===void 0?Ie(e.since).year():Ie(e.since).year()+(t-e.offset)*a}function Mhe(){var e,t,a,n=this.localeData().eras();for(e=0,t=n.length;eo&&(t=o),ege.call(this,e,t,a,n,i))}function ege(e,t,a,n,i){var o=xA(e,t,a,n,i),s=Sd(o.year,0,o.dayOfYear);return this.year(s.getUTCFullYear()),this.month(s.getUTCMonth()),this.date(s.getUTCDate()),this}tt("Q",0,"Qo","quarter");qe("Q",mA);ra("Q",function(e,t){t[qo]=(Rt(e)-1)*3});function tge(e){return e==null?Math.ceil((this.month()+1)/3):this.month((e-1)*3+this.month()%3)}tt("D",["DD",2],"Do","date");qe("D",va,hc);qe("DD",va,mi);qe("Do",function(e,t){return e?t._dayOfMonthOrdinalParse||t._ordinalParse:t._dayOfMonthOrdinalParseLenient});ra(["D","DD"],ho);ra("Do",function(e,t){t[ho]=Rt(e.match(va)[0])});var HA=gc("Date",!0);tt("DDD",["DDDD",3],"DDDo","dayOfYear");qe("DDD",cp);qe("DDDD",pA);ra(["DDD","DDDD"],function(e,t,a){a._dayOfYear=Rt(e)});function age(e){var t=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return e==null?t:this.add(e-t,"d")}tt("m",["mm",2],0,"minute");qe("m",va,Qy);qe("mm",va,mi);ra(["m","mm"],Yi);var nge=gc("Minutes",!1);tt("s",["ss",2],0,"second");qe("s",va,Qy);qe("ss",va,mi);ra(["s","ss"],Wo);var ige=gc("Seconds",!1);tt("S",0,0,function(){return~~(this.millisecond()/100)});tt(0,["SS",2],0,function(){return~~(this.millisecond()/10)});tt(0,["SSS",3],0,"millisecond");tt(0,["SSSS",4],0,function(){return this.millisecond()*10});tt(0,["SSSSS",5],0,function(){return this.millisecond()*100});tt(0,["SSSSSS",6],0,function(){return this.millisecond()*1e3});tt(0,["SSSSSSS",7],0,function(){return this.millisecond()*1e4});tt(0,["SSSSSSSS",8],0,function(){return this.millisecond()*1e5});tt(0,["SSSSSSSSS",9],0,function(){return this.millisecond()*1e6});qe("S",cp,mA);qe("SS",cp,mi);qe("SSS",cp,pA);var Fs,KA;for(Fs="SSSS";Fs.length<=9;Fs+="S")qe(Fs,fc);function oge(e,t){t[xr]=Rt(("0."+e)*1e3)}for(Fs="S";Fs.length<=9;Fs+="S")ra(Fs,oge);KA=gc("Milliseconds",!1);tt("z",0,0,"zoneAbbr");tt("zz",0,0,"zoneName");function sge(){return this._isUTC?"UTC":""}function rge(){return this._isUTC?"Coordinated Universal Time":""}var Se=Yd.prototype;Se.add=Xfe;Se.calendar=she;Se.clone=rhe;Se.diff=phe;Se.endOf=xhe;Se.format=vhe;Se.from=yhe;Se.fromNow=bhe;Se.to=khe;Se.toNow=whe;Se.get=gpe;Se.invalidAt=Nhe;Se.isAfter=lhe;Se.isBefore=che;Se.isBetween=dhe;Se.isSame=uhe;Se.isSameOrAfter=_he;Se.isSameOrBefore=mhe;Se.isValid=The;Se.lang=LA;Se.locale=$A;Se.localeData=BA;Se.max=Tfe;Se.min=Cfe;Se.parsingFlags=jhe;Se.set=vpe;Se.startOf=Dhe;Se.subtract=ehe;Se.toArray=zhe;Se.toObject=Ahe;Se.toDate=Ehe;Se.toISOString=hhe;Se.inspect=ghe;typeof Symbol<"u"&&Symbol.for!=null&&(Se[Symbol.for("nodejs.util.inspect.custom")]=function(){return"Moment<"+this.format()+">"});Se.toJSON=Che;Se.toString=fhe;Se.unix=Phe;Se.valueOf=She;Se.creationData=Ihe;Se.eraName=Mhe;Se.eraNarrow=$he;Se.eraAbbr=Lhe;Se.eraYear=Bhe;Se.year=gA;Se.isLeapYear=hpe;Se.weekYear=Yhe;Se.isoWeekYear=Zhe;Se.quarter=Se.quarters=tge;Se.month=wA;Se.daysInMonth=Epe;Se.week=Se.weeks=Fpe;Se.isoWeek=Se.isoWeeks=Rpe;Se.weeksInYear=Jhe;Se.weeksInWeekYear=Xhe;Se.isoWeeksInYear=Ghe;Se.isoWeeksInISOWeekYear=Qhe;Se.date=HA;Se.day=Se.days=Zpe;Se.weekday=Gpe;Se.isoWeekday=Qpe;Se.dayOfYear=age;Se.hour=Se.hours=ife;Se.minute=Se.minutes=nge;Se.second=Se.seconds=ige;Se.millisecond=Se.milliseconds=KA;Se.utcOffset=Lfe;Se.utc=Ufe;Se.local=Vfe;Se.parseZone=qfe;Se.hasAlignedHourOffset=Wfe;Se.isDST=Hfe;Se.isLocal=Yfe;Se.isUtcOffset=Zfe;Se.isUtc=FA;Se.isUTC=FA;Se.zoneAbbr=sge;Se.zoneName=rge;Se.dates=Mi("dates accessor is deprecated. Use date instead.",HA);Se.months=Mi("months accessor is deprecated. Use month instead",wA);Se.years=Mi("years accessor is deprecated. Use year instead",gA);Se.zone=Mi("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",Bfe);Se.isDSTShifted=Mi("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",Kfe);function lge(e){return ga(e*1e3)}function cge(){return ga.apply(null,arguments).parseZone()}function YA(e){return e}var Gt=Hy.prototype;Gt.calendar=Yme;Gt.longDateFormat=Jme;Gt.invalidDate=epe;Gt.ordinal=npe;Gt.preparse=YA;Gt.postformat=YA;Gt.relativeTime=ope;Gt.pastFuture=spe;Gt.set=Hme;Gt.eras=Fhe;Gt.erasParse=Rhe;Gt.erasConvertYear=Ohe;Gt.erasAbbrRegex=Vhe;Gt.erasNameRegex=Uhe;Gt.erasNarrowRegex=qhe;Gt.months=Dpe;Gt.monthsShort=xpe;Gt.monthsParse=Ppe;Gt.monthsRegex=Ape;Gt.monthsShortRegex=zpe;Gt.week=Tpe;Gt.firstDayOfYear=Ipe;Gt.firstDayOfWeek=Npe;Gt.weekdays=qpe;Gt.weekdaysMin=Hpe;Gt.weekdaysShort=Wpe;Gt.weekdaysParse=Ype;Gt.weekdaysRegex=Jpe;Gt.weekdaysShortRegex=Xpe;Gt.weekdaysMinRegex=efe;Gt.isPM=afe;Gt.meridiem=ofe;function dm(e,t,a,n){var i=rs(),o=Do().set(n,t);return i[a](o,e)}function ZA(e,t,a){if(Qo(e)&&(t=e,e=void 0),e=e||"",t!=null)return dm(e,t,a,"month");var n,i=[];for(n=0;n<12;n++)i[n]=dm(e,n,a,"month");return i}function db(e,t,a,n){typeof e=="boolean"?(Qo(t)&&(a=t,t=void 0),t=t||""):(t=e,a=t,e=!1,Qo(t)&&(a=t,t=void 0),t=t||"");var i=rs(),o=e?i._week.dow:0,s,l=[];if(a!=null)return dm(t,(a+o)%7,n,"day");for(s=0;s<7;s++)l[s]=dm(t,(s+o)%7,n,"day");return l}function dge(e,t){return ZA(e,t,"months")}function uge(e,t){return ZA(e,t,"monthsShort")}function _ge(e,t,a){return db(e,t,a,"weekdays")}function mge(e,t,a){return db(e,t,a,"weekdaysShort")}function pge(e,t,a){return db(e,t,a,"weekdaysMin")}$s("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,a=Rt(e%100/10)===1?"th":t===1?"st":t===2?"nd":t===3?"rd":"th";return e+a}});Ie.lang=Mi("moment.lang is deprecated. Use moment.locale instead.",$s);Ie.langData=Mi("moment.langData is deprecated. Use moment.localeData instead.",rs);var Fo=Math.abs;function fge(){var e=this._data;return this._milliseconds=Fo(this._milliseconds),this._days=Fo(this._days),this._months=Fo(this._months),e.milliseconds=Fo(e.milliseconds),e.seconds=Fo(e.seconds),e.minutes=Fo(e.minutes),e.hours=Fo(e.hours),e.months=Fo(e.months),e.years=Fo(e.years),this}function GA(e,t,a,n){var i=so(t,a);return e._milliseconds+=n*i._milliseconds,e._days+=n*i._days,e._months+=n*i._months,e._bubble()}function hge(e,t){return GA(this,e,t,1)}function gge(e,t){return GA(this,e,t,-1)}function Xx(e){return e<0?Math.floor(e):Math.ceil(e)}function vge(){var e=this._milliseconds,t=this._days,a=this._months,n=this._data,i,o,s,l,d;return e>=0&&t>=0&&a>=0||e<=0&&t<=0&&a<=0||(e+=Xx(av(a)+t)*864e5,t=0,a=0),n.milliseconds=e%1e3,i=zi(e/1e3),n.seconds=i%60,o=zi(i/60),n.minutes=o%60,s=zi(o/60),n.hours=s%24,t+=zi(s/24),d=zi(QA(t)),a+=d,t-=Xx(av(d)),l=zi(a/12),a%=12,n.days=t,n.months=a,n.years=l,this}function QA(e){return e*4800/146097}function av(e){return e*146097/4800}function yge(e){if(!this.isValid())return NaN;var t,a,n=this._milliseconds;if(e=$i(e),e==="month"||e==="quarter"||e==="year")switch(t=this._days+n/864e5,a=this._months+QA(t),e){case"month":return a;case"quarter":return a/3;case"year":return a/12}else switch(t=this._days+Math.round(av(this._months)),e){case"week":return t/7+n/6048e5;case"day":return t+n/864e5;case"hour":return t*24+n/36e5;case"minute":return t*1440+n/6e4;case"second":return t*86400+n/1e3;case"millisecond":return Math.floor(t*864e5)+n;default:throw new Error("Unknown unit "+e)}}function ls(e){return function(){return this.as(e)}}var JA=ls("ms"),bge=ls("s"),kge=ls("m"),wge=ls("h"),Dge=ls("d"),xge=ls("w"),Sge=ls("M"),Pge=ls("Q"),Ege=ls("y"),zge=JA;function Age(){return so(this)}function Cge(e){return e=$i(e),this.isValid()?this[e+"s"]():NaN}function tl(e){return function(){return this.isValid()?this._data[e]:NaN}}var Tge=tl("milliseconds"),jge=tl("seconds"),Nge=tl("minutes"),Ige=tl("hours"),Fge=tl("days"),Rge=tl("months"),Oge=tl("years");function Mge(){return zi(this.days()/7)}var Lo=Math.round,jl={ss:44,s:45,m:45,h:22,d:26,w:null,M:11};function $ge(e,t,a,n,i){return i.relativeTime(t||1,!!a,e,n)}function Lge(e,t,a,n){var i=so(e).abs(),o=Lo(i.as("s")),s=Lo(i.as("m")),l=Lo(i.as("h")),d=Lo(i.as("d")),u=Lo(i.as("M")),_=Lo(i.as("w")),f=Lo(i.as("y")),p=o<=a.ss&&["s",o]||o0,p[4]=n,$ge.apply(null,p)}function Bge(e){return e===void 0?Lo:typeof e=="function"?(Lo=e,!0):!1}function Uge(e,t){return jl[e]===void 0?!1:t===void 0?jl[e]:(jl[e]=t,e==="s"&&(jl.ss=t-1),!0)}function Vge(e,t){if(!this.isValid())return this.localeData().invalidDate();var a=!1,n=jl,i,o;return typeof e=="object"&&(t=e,e=!1),typeof e=="boolean"&&(a=e),typeof t=="object"&&(n=Object.assign({},jl,t),t.s!=null&&t.ss==null&&(n.ss=t.s-1)),i=this.localeData(),o=Lge(this,!a,n,i),a&&(o=i.pastFuture(+this,o)),i.postformat(o)}var $h=Math.abs;function wl(e){return(e>0)-(e<0)||+e}function gp(){if(!this.isValid())return this.localeData().invalidDate();var e=$h(this._milliseconds)/1e3,t=$h(this._days),a=$h(this._months),n,i,o,s,l=this.asSeconds(),d,u,_,f;return l?(n=zi(e/60),i=zi(n/60),e%=60,n%=60,o=zi(a/12),a%=12,s=e?e.toFixed(3).replace(/\.?0+$/,""):"",d=l<0?"-":"",u=wl(this._months)!==wl(l)?"-":"",_=wl(this._days)!==wl(l)?"-":"",f=wl(this._milliseconds)!==wl(l)?"-":"",d+"P"+(o?u+o+"Y":"")+(a?u+a+"M":"")+(t?_+t+"D":"")+(i||n||e?"T":"")+(i?f+i+"H":"")+(n?f+n+"M":"")+(e?f+s+"S":"")):"P0D"}var Lt=fp.prototype;Lt.isValid=Rfe;Lt.abs=fge;Lt.add=hge;Lt.subtract=gge;Lt.as=yge;Lt.asMilliseconds=JA;Lt.asSeconds=bge;Lt.asMinutes=kge;Lt.asHours=wge;Lt.asDays=Dge;Lt.asWeeks=xge;Lt.asMonths=Sge;Lt.asQuarters=Pge;Lt.asYears=Ege;Lt.valueOf=zge;Lt._bubble=vge;Lt.clone=Age;Lt.get=Cge;Lt.milliseconds=Tge;Lt.seconds=jge;Lt.minutes=Nge;Lt.hours=Ige;Lt.days=Fge;Lt.weeks=Mge;Lt.months=Rge;Lt.years=Oge;Lt.humanize=Vge;Lt.toISOString=gp;Lt.toString=gp;Lt.toJSON=gp;Lt.locale=$A;Lt.localeData=BA;Lt.toIsoString=Mi("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",gp);Lt.lang=LA;tt("X",0,0,"unix");tt("x",0,0,"valueOf");qe("x",up);qe("X",dpe);ra("X",function(e,t,a){a._d=new Date(parseFloat(e)*1e3)});ra("x",function(e,t,a){a._d=new Date(Rt(e))});//! moment.js -Ie.version="2.30.1";qme(ga);Ie.fn=Se;Ie.min=jfe;Ie.max=Nfe;Ie.now=Ife;Ie.utc=Do;Ie.unix=lge;Ie.months=dge;Ie.isDate=Kd;Ie.locale=$s;Ie.invalid=rp;Ie.duration=so;Ie.isMoment=ao;Ie.weekdays=_ge;Ie.parseZone=cge;Ie.localeData=rs;Ie.isDuration=j_;Ie.monthsShort=uge;Ie.weekdaysMin=pge;Ie.defineLocale=ab;Ie.updateLocale=cfe;Ie.locales=dfe;Ie.weekdaysShort=mge;Ie.normalizeUnits=$i;Ie.relativeTimeRounding=Bge;Ie.relativeTimeThreshold=Uge;Ie.calendarFormat=ohe;Ie.prototype=Se;Ie.HTML5_FMT={DATETIME_LOCAL:"YYYY-MM-DDTHH:mm",DATETIME_LOCAL_SECONDS:"YYYY-MM-DDTHH:mm:ss",DATETIME_LOCAL_MS:"YYYY-MM-DDTHH:mm:ss.SSS",DATE:"YYYY-MM-DD",TIME:"HH:mm",TIME_SECONDS:"HH:mm:ss",TIME_MS:"HH:mm:ss.SSS",WEEK:"GGGG-[W]WW",MONTH:"YYYY-MM"};const j1e=Object.freeze(Object.defineProperty({__proto__:null,default:Ie},Symbol.toStringTag,{value:"Module"}));var XA={exports:{}};(function(e){(function(){var t=new RegExp("^[a-z0-9]{8}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{12}$","i");function a(i){for(var o="",s=0;s{const t=e?window.pinia.defineStore:un,{global:a}=window.i18n;return t({id:"item",state:()=>({items:[],totalItems:0,selectAllField:!1,selectedItems:[],itemUnits:[],currentItemUnit:{id:null,name:""},currentItem:{name:"",description:"",price:0,unit_id:"",unit:null,taxes:[],tax_per_item:!1}}),getters:{isItemUnitEdit:n=>!!n.currentItemUnit.id},actions:{resetCurrentItem(){this.currentItem={name:"",description:"",price:0,unit_id:"",unit:null,taxes:[]}},fetchItems(n){return new Promise((i,o)=>{ve.get("/api/v1/items",{params:n}).then(s=>{this.items=s.data.data,this.totalItems=s.data.meta.item_total_count,i(s)}).catch(s=>{be(s),o(s)})})},fetchItem(n){return new Promise((i,o)=>{ve.get(`/api/v1/items/${n}`).then(s=>{s.data&&Object.assign(this.currentItem,s.data.data),i(s)}).catch(s=>{be(s),o(s)})})},addItem(n){return new Promise((i,o)=>{ve.post("/api/v1/items",n).then(s=>{const l=gt();this.items.push(s.data.data),l.showNotification({type:"success",message:a.t("items.created_message")}),i(s)}).catch(s=>{be(s),o(s)})})},updateItem(n){return new Promise((i,o)=>{ve.put(`/api/v1/items/${n.id}`,n).then(s=>{if(s.data){const l=gt();let d=this.items.findIndex(u=>u.id===s.data.data.id);this.items[d]=n.item,l.showNotification({type:"success",message:a.t("items.updated_message")})}i(s)}).catch(s=>{be(s),o(s)})})},deleteItem(n){const i=gt();return new Promise((o,s)=>{ve.post("/api/v1/items/delete",n).then(l=>{let d=this.items.findIndex(u=>u.id===n);this.items.splice(d,1),i.showNotification({type:"success",message:a.tc("items.deleted_message",1)}),o(l)}).catch(l=>{be(l),s(l)})})},deleteMultipleItems(){const n=gt();return new Promise((i,o)=>{ve.post("/api/v1/items/delete",{ids:this.selectedItems}).then(s=>{this.selectedItems.forEach(l=>{let d=this.items.findIndex(u=>u.id===l.id);this.items.splice(d,1)}),n.showNotification({type:"success",message:a.tc("items.deleted_message",2)}),i(s)}).catch(s=>{be(s),o(s)})})},selectItem(n){this.selectedItems=n,this.selectedItems.length===this.items.length?this.selectAllField=!0:this.selectAllField=!1},selectAllItems(n){if(this.selectedItems.length===this.items.length)this.selectedItems=[],this.selectAllField=!1;else{let i=this.items.map(o=>o.id);this.selectedItems=i,this.selectAllField=!0}},addItemUnit(n){const i=gt();return new Promise((o,s)=>{ve.post("/api/v1/units",n).then(l=>{this.itemUnits.push(l.data.data),l.data.data&&i.showNotification({type:"success",message:a.t("settings.customization.items.item_unit_added")}),l.data.errors&&i.showNotification({type:"error",message:err.response.data.errors[0]}),o(l)}).catch(l=>{be(l),s(l)})})},updateItemUnit(n){const i=gt();return new Promise((o,s)=>{ve.put(`/api/v1/units/${n.id}`,n).then(l=>{let d=this.itemUnits.findIndex(u=>u.id===l.data.data.id);this.itemUnits[d]=n,l.data.data&&i.showNotification({type:"success",message:a.t("settings.customization.items.item_unit_updated")}),l.data.errors&&i.showNotification({type:"error",message:err.response.data.errors[0]}),o(l)}).catch(l=>{be(l),s(l)})})},fetchItemUnits(n){return new Promise((i,o)=>{ve.get("/api/v1/units",{params:n}).then(s=>{this.itemUnits=s.data.data,i(s)}).catch(s=>{be(s),o(s)})})},fetchItemUnit(n){return new Promise((i,o)=>{ve.get(`/api/v1/units/${n}`).then(s=>{this.currentItemUnit=s.data.data,i(s)}).catch(s=>{be(s),o(s)})})},deleteItemUnit(n){const i=gt();return new Promise((o,s)=>{ve.delete(`/api/v1/units/${n}`).then(l=>{if(!l.data.error){let d=this.itemUnits.findIndex(u=>u.id===n);this.itemUnits.splice(d,1)}l.data.success&&i.showNotification({type:"success",message:a.t("settings.customization.items.deleted_message")}),o(l)}).catch(l=>{be(l),s(l)})})}}})()},ic=(e=!1)=>{const t=e?window.pinia.defineStore:un,{global:a}=window.i18n;return t({id:"taxType",state:()=>({taxTypes:[],currentTaxType:{id:null,name:"",percent:0,description:"",compound_tax:!1,collective_tax:0}}),getters:{isEdit:n=>!!n.currentTaxType.id},actions:{resetCurrentTaxType(){this.currentTaxType={id:null,name:"",percent:0,description:"",compound_tax:!1,collective_tax:0}},fetchTaxTypes(n){return new Promise((i,o)=>{ve.get("/api/v1/tax-types",{params:n}).then(s=>{this.taxTypes=s.data.data,i(s)}).catch(s=>{be(s),o(s)})})},fetchTaxType(n){return new Promise((i,o)=>{ve.get(`/api/v1/tax-types/${n}`).then(s=>{this.currentTaxType=s.data.data,i(s)}).catch(s=>{be(s),o(s)})})},addTaxType(n){const i=gt();return new Promise((o,s)=>{ve.post("/api/v1/tax-types",n).then(l=>{this.taxTypes.push(l.data.data),i.showNotification({type:"success",message:a.t("settings.tax_types.created_message")}),o(l)}).catch(l=>{be(l),s(l)})})},updateTaxType(n){const i=gt();return new Promise((o,s)=>{ve.put(`/api/v1/tax-types/${n.id}`,n).then(l=>{if(l.data){let d=this.taxTypes.findIndex(u=>u.id===l.data.data.id);this.taxTypes[d]=n.taxTypes,i.showNotification({type:"success",message:a.t("settings.tax_types.updated_message")})}o(l)}).catch(l=>{be(l),s(l)})})},fetchSalesTax(n){return new Promise((i,o)=>{ve.post("/api/m/sales-tax-us/current-tax",n).then(s=>{if(s.data){let l=this.taxTypes.findIndex(d=>d.name==="SalesTaxUs");l>-1&&this.taxTypes.splice(l,1),this.taxTypes.push({...s.data.data,tax_type_id:s.data.data.id})}i(s)}).catch(s=>{be(s),o(s)})})},deleteTaxType(n){return new Promise((i,o)=>{ve.delete(`/api/v1/tax-types/${n}`).then(s=>{if(s.data.success){let l=this.taxTypes.findIndex(u=>u.id===n);this.taxTypes.splice(l,1),gt().showNotification({type:"success",message:a.t("settings.tax_types.deleted_message")})}i(s)}).catch(s=>{be(s),o(s)})})}}})()},nv={estimate_id:null,item_id:null,name:"",title:"",description:null,quantity:1,price:0,discount_type:"fixed",discount_val:0,discount:0,total:0,sub_total:0,totalTax:0,totalSimpleTax:0,totalCompoundTax:0,tax:0,taxes:[]},Ci={name:"",tax_type_id:0,type:"GENERAL",amount:null,percent:null,compound_tax:!1};function eS(){return{id:null,customer:null,template_name:"",tax_per_item:null,sales_tax_type:null,sales_tax_address_type:null,discount_per_item:null,estimate_date:"",expiry_date:"",estimate_number:"",customer_id:null,sub_total:0,total:0,tax:0,notes:"",discount_type:"fixed",discount_val:0,reference_number:null,discount:0,items:[{...nv,id:Qa.raw(),taxes:[{...Ci,id:Qa.raw()}]}],taxes:[],customFields:[],fields:[],selectedNote:null,selectedCurrency:""}}const ub=(e=!1)=>{const t=e?window.pinia.defineStore:un,{global:a}=window.i18n;return t({id:"estimate",state:()=>({templates:[],estimates:[],selectAllField:!1,selectedEstimates:[],totalEstimateCount:0,isFetchingInitialSettings:!1,showExchangeRate:!1,newEstimate:{...eS()}}),getters:{getSubTotal(){return this.newEstimate.items.reduce(function(n,i){return n+i.total},0)},getTotalSimpleTax(){return Qi.sumBy(this.newEstimate.taxes,function(n){return n.compound_tax?0:n.amount})},getTotalCompoundTax(){return Qi.sumBy(this.newEstimate.taxes,function(n){return n.compound_tax?n.amount:0})},getTotalTax(){return this.newEstimate.tax_per_item==="NO"||this.newEstimate.tax_per_item===null?this.getTotalSimpleTax+this.getTotalCompoundTax:Qi.sumBy(this.newEstimate.items,function(n){return n.tax})},getSubtotalWithDiscount(){return this.getSubTotal-this.newEstimate.discount_val},getTotal(){return this.getSubtotalWithDiscount+this.getTotalTax},isEdit:n=>!!n.newEstimate.id},actions:{resetCurrentEstimate(){this.newEstimate={...eS()}},previewEstimate(n){return new Promise((i,o)=>{ve.get(`/api/v1/estimates/${n.id}/send/preview`,{params:n}).then(s=>{i(s)}).catch(s=>{be(s),o(s)})})},fetchEstimates(n){return new Promise((i,o)=>{ve.get("/api/v1/estimates",{params:n}).then(s=>{this.estimates=s.data.data,this.totalEstimateCount=s.data.meta.estimate_total_count,i(s)}).catch(s=>{be(s),o(s)})})},getNextNumber(n,i=!1){return new Promise((o,s)=>{ve.get("/api/v1/next-number?key=estimate",{params:n}).then(l=>{i&&(this.newEstimate.estimate_number=l.data.nextNumber),o(l)}).catch(l=>{be(l),s(l)})})},fetchEstimate(n){return new Promise((i,o)=>{ve.get(`/api/v1/estimates/${n}`).then(s=>{Object.assign(this.newEstimate,s.data.data),i(s)}).catch(s=>{console.log(s),be(s),o(s)})})},addSalesTaxUs(){const n=ic();let i={...Ci},o=this.newEstimate.taxes.find(s=>s.name==="Sales Tax"&&s.type==="MODULE");if(o){for(const s in o)Object.prototype.hasOwnProperty.call(i,s)&&(i[s]=o[s]);i.id=o.tax_type_id,console.log(i,"salesTax"),n.taxTypes.push(i),console.log(n.taxTypes)}},sendEstimate(n){const i=gt();return new Promise((o,s)=>{ve.post(`/api/v1/estimates/${n.id}/send`,n).then(l=>{n.is_preview||i.showNotification({type:"success",message:a.t("estimates.send_estimate_successfully")}),o(l)}).catch(l=>{be(l),s(l)})})},addEstimate(n){return new Promise((i,o)=>{ve.post("/api/v1/estimates",n).then(s=>{this.estimates=[...this.estimates,s.data.estimate],gt().showNotification({type:"success",message:a.t("estimates.created_message")}),i(s)}).catch(s=>{be(s),o(s)})})},deleteEstimate(n){const i=gt();return new Promise((o,s)=>{ve.post("/api/v1/estimates/delete",n).then(l=>{let d=this.estimates.findIndex(u=>u.id===n);this.estimates.splice(d,1),i.showNotification({type:"success",message:a.t("estimates.deleted_message",1)}),o(l)}).catch(l=>{be(l),s(l)})})},deleteMultipleEstimates(n){const i=gt();return new Promise((o,s)=>{ve.post("/api/v1/estimates/delete",{ids:this.selectedEstimates}).then(l=>{this.selectedEstimates.forEach(d=>{let u=this.estimates.findIndex(_=>_.id===d.id);this.estimates.splice(u,1)}),this.selectedEstimates=[],i.showNotification({type:"success",message:a.tc("estimates.deleted_message",2)}),o(l)}).catch(l=>{be(l),s(l)})})},updateEstimate(n){return new Promise((i,o)=>{ve.put(`/api/v1/estimates/${n.id}`,n).then(s=>{let l=this.estimates.findIndex(u=>u.id===s.data.data.id);this.estimates[l]=s.data.data,gt().showNotification({type:"success",message:a.t("estimates.updated_message")}),i(s)}).catch(s=>{be(s),o(s)})})},markAsAccepted(n){return new Promise((i,o)=>{ve.post(`/api/v1/estimates/${n.id}/status`,n).then(s=>{let l=this.estimates.findIndex(d=>d.id===n.id);this.estimates[l]&&(this.estimates[l].status="ACCEPTED",gt().showNotification({type:"success",message:a.t("estimates.marked_as_accepted_message")})),i(s)}).catch(s=>{be(s),o(s)})})},markAsRejected(n){return new Promise((i,o)=>{ve.post(`/api/v1/estimates/${n.id}/status`,n).then(s=>{gt().showNotification({type:"success",message:a.t("estimates.marked_as_rejected_message")}),i(s)}).catch(s=>{be(s),o(s)})})},markAsSent(n){return new Promise((i,o)=>{ve.post(`/api/v1/estimates/${n.id}/status`,n).then(s=>{let l=this.estimates.findIndex(d=>d.id===n.id);this.estimates[l]&&(this.estimates[l].status="SENT",gt().showNotification({type:"success",message:a.t("estimates.mark_as_sent_successfully")})),i(s)}).catch(s=>{be(s),o(s)})})},convertToInvoice(n){const i=gt();return new Promise((o,s)=>{ve.post(`/api/v1/estimates/${n}/convert-to-invoice`).then(l=>{i.showNotification({type:"success",message:a.t("estimates.conversion_message")}),o(l)}).catch(l=>{be(l),s(l)})})},searchEstimate(n){return new Promise((i,o)=>{ve.get(`/api/v1/estimates?${n}`).then(s=>{i(s)}).catch(s=>{be(s),o(s)})})},selectEstimate(n){this.selectedEstimates=n,this.selectedEstimates.length===this.estimates.length?this.selectAllField=!0:this.selectAllField=!1},selectAllEstimates(){if(this.selectedEstimates.length===this.estimates.length)this.selectedEstimates=[],this.selectAllField=!1;else{let n=this.estimates.map(i=>i.id);this.selectedEstimates=n,this.selectAllField=!0}},selectCustomer(n){return new Promise((i,o)=>{ve.get(`/api/v1/customers/${n}`).then(s=>{this.newEstimate.customer=s.data.data,this.newEstimate.customer_id=s.data.data.id,i(s)}).catch(s=>{be(s),o(s)})})},fetchEstimateTemplates(n){return new Promise((i,o)=>{ve.get("/api/v1/estimates/templates",{params:n}).then(s=>{this.templates=s.data.estimateTemplates,i(s)}).catch(s=>{be(s),o(s)})})},setTemplate(n){this.newEstimate.template_name=n},resetSelectedCustomer(){this.newEstimate.customer=null,this.newEstimate.customer_id=""},selectNote(n){this.newEstimate.selectedNote=null,this.newEstimate.selectedNote=n},resetSelectedNote(){this.newEstimate.selectedNote=null},addItem(){this.newEstimate.items.push({...nv,id:Qa.raw(),taxes:[{...Ci,id:Qa.raw()}]})},updateItem(n){Object.assign(this.newEstimate.items[n.index],{...n})},removeItem(n){this.newEstimate.items.splice(n,1)},deselectItem(n){this.newEstimate.items[n]={...nv,id:Qa.raw(),taxes:[{...Ci,id:Qa.raw()}]}},async fetchEstimateInitialSettings(n){const i=es(),o=pc(),s=vp(),l=ic(),d=Zs(),u=Gr();if(this.isFetchingInitialSettings=!0,this.newEstimate.selectedCurrency=i.selectedCompanyCurrency,d.query.customer){let f=await o.fetchCustomer(d.query.customer);this.newEstimate.customer=f.data.data,this.newEstimate.customer_id=f.data.data.id}let _=[];n?_=[this.fetchEstimate(d.params.id)]:(this.newEstimate.tax_per_item=i.selectedCompanySettings.tax_per_item,this.newEstimate.sales_tax_type=i.selectedCompanySettings.sales_tax_type,this.newEstimate.sales_tax_address_type=i.selectedCompanySettings.sales_tax_address_type,this.newEstimate.discount_per_item=i.selectedCompanySettings.discount_per_item,this.newEstimate.estimate_date=Ie().format("YYYY-MM-DD"),i.selectedCompanySettings.estimate_set_expiry_date_automatically==="YES"&&(this.newEstimate.expiry_date=Ie().add(i.selectedCompanySettings.estimate_expiry_date_days,"days").format("YYYY-MM-DD"))),Promise.all([s.fetchItems({filter:{},orderByField:"",orderBy:""}),this.resetSelectedNote(),this.fetchEstimateTemplates(),this.getNextNumber(),l.fetchTaxTypes({limit:"all"}),..._]).then(async([f,p,h,g,y,k,b])=>{n||(g.data&&(this.newEstimate.estimate_number=g.data.nextNumber),this.setTemplate(this.templates[0].name),this.newEstimate.template_name=u.currentUserSettings.default_estimate_template?u.currentUserSettings.default_estimate_template:this.newEstimate.template_name),n&&this.addSalesTaxUs(),this.isFetchingInitialSettings=!1}).catch(f=>{be(f),this.isFetchingInitialSettings=!1})}}})()},iv={invoice_id:null,item_id:null,name:"",title:"",description:null,quantity:1,price:0,discount_type:"fixed",discount_val:0,discount:0,total:0,totalTax:0,totalSimpleTax:0,totalCompoundTax:0,tax:0,taxes:[]};function tS(){return{id:null,invoice_number:"",customer:null,customer_id:null,template_name:null,invoice_date:"",due_date:"",notes:"",discount:0,discount_type:"fixed",discount_val:0,reference_number:null,tax:0,sub_total:0,total:0,tax_per_item:null,sales_tax_type:null,sales_tax_address_type:null,discount_per_item:null,taxes:[],items:[{...iv,id:Qa.raw(),taxes:[{...Ci,id:Qa.raw()}]}],customFields:[],fields:[],selectedNote:null,selectedCurrency:""}}const yp=(e=!1)=>{const t=e?window.pinia.defineStore:un,{global:a}=window.i18n,n=gt();return t({id:"invoice",state:()=>({templates:[],invoices:[],selectedInvoices:[],selectAllField:!1,invoiceTotalCount:0,showExchangeRate:!1,isFetchingInitialSettings:!1,isFetchingInvoice:!1,newInvoice:{...tS()}}),getters:{getInvoice:i=>o=>{let s=parseInt(o);return i.invoices.find(l=>l.id===s)},getSubTotal(){return this.newInvoice.items.reduce(function(i,o){return i+o.total},0)},getTotalSimpleTax(){return Qi.sumBy(this.newInvoice.taxes,function(i){return i.compound_tax?0:i.amount})},getTotalCompoundTax(){return Qi.sumBy(this.newInvoice.taxes,function(i){return i.compound_tax?i.amount:0})},getTotalTax(){return this.newInvoice.tax_per_item==="NO"||this.newInvoice.tax_per_item===null?this.getTotalSimpleTax+this.getTotalCompoundTax:Qi.sumBy(this.newInvoice.items,function(i){return i.tax})},getSubtotalWithDiscount(){return this.getSubTotal-this.newInvoice.discount_val},getTotal(){return this.getSubtotalWithDiscount+this.getTotalTax},isEdit:i=>!!i.newInvoice.id},actions:{resetCurrentInvoice(){this.newInvoice={...tS()}},previewInvoice(i){return new Promise((o,s)=>{ve.get(`/api/v1/invoices/${i.id}/send/preview`,{params:i}).then(l=>{o(l)}).catch(l=>{be(l),s(l)})})},fetchInvoices(i){return new Promise((o,s)=>{ve.get("/api/v1/invoices",{params:i}).then(l=>{this.invoices=l.data.data,this.invoiceTotalCount=l.data.meta.invoice_total_count,o(l)}).catch(l=>{be(l),s(l)})})},fetchInvoice(i){return new Promise((o,s)=>{ve.get(`/api/v1/invoices/${i}`).then(l=>{Object.assign(this.newInvoice,l.data.data),this.newInvoice.customer=l.data.data.customer,o(l)}).catch(l=>{be(l),s(l)})})},addSalesTaxUs(){const i=ic();let o={...Ci},s=this.newInvoice.taxes.find(l=>l.name==="Sales Tax"&&l.type==="MODULE");if(s){for(const l in s)Object.prototype.hasOwnProperty.call(o,l)&&(o[l]=s[l]);o.id=s.tax_type_id,i.taxTypes.push(o)}},sendInvoice(i){return new Promise((o,s)=>{ve.post(`/api/v1/invoices/${i.id}/send`,i).then(l=>{n.showNotification({type:"success",message:a.t("invoices.invoice_sent_successfully")}),o(l)}).catch(l=>{be(l),s(l)})})},addInvoice(i){return new Promise((o,s)=>{ve.post("/api/v1/invoices",i).then(l=>{this.invoices=[...this.invoices,l.data.invoice],n.showNotification({type:"success",message:a.t("invoices.created_message")}),o(l)}).catch(l=>{be(l),s(l)})})},deleteInvoice(i){return new Promise((o,s)=>{ve.post("/api/v1/invoices/delete",i).then(l=>{let d=this.invoices.findIndex(u=>u.id===i);this.invoices.splice(d,1),n.showNotification({type:"success",message:a.t("invoices.deleted_message",1)}),o(l)}).catch(l=>{be(l),s(l)})})},deleteMultipleInvoices(i){return new Promise((o,s)=>{ve.post("/api/v1/invoices/delete",{ids:this.selectedInvoices}).then(l=>{this.selectedInvoices.forEach(d=>{let u=this.invoices.findIndex(_=>_.id===d.id);this.invoices.splice(u,1)}),this.selectedInvoices=[],n.showNotification({type:"success",message:a.tc("invoices.deleted_message",2)}),o(l)}).catch(l=>{be(l),s(l)})})},updateInvoice(i){return new Promise((o,s)=>{ve.put(`/api/v1/invoices/${i.id}`,i).then(l=>{let d=this.invoices.findIndex(u=>u.id===l.data.data.id);this.invoices[d]=l.data.data,n.showNotification({type:"success",message:a.t("invoices.updated_message")}),o(l)}).catch(l=>{be(l),s(l)})})},cloneInvoice(i){return new Promise((o,s)=>{ve.post(`/api/v1/invoices/${i.id}/clone`,i).then(l=>{n.showNotification({type:"success",message:a.t("invoices.cloned_successfully")}),o(l)}).catch(l=>{be(l),s(l)})})},markAsSent(i){return new Promise((o,s)=>{ve.post(`/api/v1/invoices/${i.id}/status`,i).then(l=>{let d=this.invoices.findIndex(u=>u.id===i.id);this.invoices[d]&&(this.invoices[d].status="SENT"),n.showNotification({type:"success",message:a.t("invoices.mark_as_sent_successfully")}),o(l)}).catch(l=>{be(l),s(l)})})},getNextNumber(i,o=!1){return new Promise((s,l)=>{ve.get("/api/v1/next-number?key=invoice",{params:i}).then(d=>{o&&(this.newInvoice.invoice_number=d.data.nextNumber),s(d)}).catch(d=>{be(d),l(d)})})},searchInvoice(i){return new Promise((o,s)=>{ve.get(`/api/v1/invoices?${i}`).then(l=>{o(l)}).catch(l=>{be(l),s(l)})})},selectInvoice(i){this.selectedInvoices=i,this.selectedInvoices.length===this.invoices.length?this.selectAllField=!0:this.selectAllField=!1},selectAllInvoices(){if(this.selectedInvoices.length===this.invoices.length)this.selectedInvoices=[],this.selectAllField=!1;else{let i=this.invoices.map(o=>o.id);this.selectedInvoices=i,this.selectAllField=!0}},selectCustomer(i){return new Promise((o,s)=>{ve.get(`/api/v1/customers/${i}`).then(l=>{this.newInvoice.customer=l.data.data,this.newInvoice.customer_id=l.data.data.id,o(l)}).catch(l=>{be(l),s(l)})})},fetchInvoiceTemplates(i){return new Promise((o,s)=>{ve.get("/api/v1/invoices/templates",{params:i}).then(l=>{this.templates=l.data.invoiceTemplates,o(l)}).catch(l=>{be(l),s(l)})})},selectNote(i){this.newInvoice.selectedNote=null,this.newInvoice.selectedNote=i},setTemplate(i){this.newInvoice.template_name=i},resetSelectedCustomer(){this.newInvoice.customer=null,this.newInvoice.customer_id=null},addItem(){this.newInvoice.items.push({...iv,id:Qa.raw(),taxes:[{...Ci,id:Qa.raw()}]})},updateItem(i){Object.assign(this.newInvoice.items[i.index],{...i})},removeItem(i){this.newInvoice.items.splice(i,1)},deselectItem(i){this.newInvoice.items[i]={...iv,id:Qa.raw(),taxes:[{...Ci,id:Qa.raw()}]}},resetSelectedNote(){this.newInvoice.selectedNote=null},async fetchInvoiceInitialSettings(i){const o=es(),s=pc(),l=vp(),d=ic(),u=Zs(),_=Gr();if(this.isFetchingInitialSettings=!0,this.newInvoice.selectedCurrency=o.selectedCompanyCurrency,u.query.customer){let p=await s.fetchCustomer(u.query.customer);this.newInvoice.customer=p.data.data,this.newInvoice.customer_id=p.data.data.id}let f=[];i?f=[this.fetchInvoice(u.params.id)]:(this.newInvoice.tax_per_item=o.selectedCompanySettings.tax_per_item,this.newInvoice.sales_tax_type=o.selectedCompanySettings.sales_tax_type,this.newInvoice.sales_tax_address_type=o.selectedCompanySettings.sales_tax_address_type,this.newInvoice.discount_per_item=o.selectedCompanySettings.discount_per_item,this.newInvoice.invoice_date=Ie().format("YYYY-MM-DD"),o.selectedCompanySettings.invoice_set_due_date_automatically==="YES"&&(this.newInvoice.due_date=Ie().add(o.selectedCompanySettings.invoice_due_date_days,"days").format("YYYY-MM-DD"))),Promise.all([l.fetchItems({filter:{},orderByField:"",orderBy:""}),this.resetSelectedNote(),this.fetchInvoiceTemplates(),this.getNextNumber(),d.fetchTaxTypes({limit:"all"}),...f]).then(async([p,h,g,y,k,b])=>{i||(y.data&&(this.newInvoice.invoice_number=y.data.nextNumber),g.data&&(this.setTemplate(this.templates[0].name),this.newInvoice.template_name=_.currentUserSettings.default_invoice_template?_.currentUserSettings.default_invoice_template:this.newInvoice.template_name)),i&&this.addSalesTaxUs(),this.isFetchingInitialSettings=!1}).catch(p=>{be(p),reject(p)})}}})()},Wge={class:"relative flex px-4 py-2 rounded-lg bg-opacity-40 bg-gray-300 whitespace-nowrap flex-col mt-1"},Hge=X("rect",{width:"37",height:"37",rx:"10",fill:"currentColor"},null,-1),Kge=X("path",{d:"M16 10C15.7348 10 15.4804 10.1054 15.2929 10.2929C15.1054 10.4804 15 10.7348 15 11C15 11.2652 15.1054 11.5196 15.2929 11.7071C15.4804 11.8946 15.7348 12 16 12H18C18.2652 12 18.5196 11.8946 18.7071 11.7071C18.8946 11.5196 19 11.2652 19 11C19 10.7348 18.8946 10.4804 18.7071 10.2929C18.5196 10.1054 18.2652 10 18 10H16Z",fill:"white"},null,-1),Yge=X("path",{d:"M11 13C11 12.4696 11.2107 11.9609 11.5858 11.5858C11.9609 11.2107 12.4696 11 13 11C13 11.7956 13.3161 12.5587 13.8787 13.1213C14.4413 13.6839 15.2044 14 16 14H18C18.7956 14 19.5587 13.6839 20.1213 13.1213C20.6839 12.5587 21 11.7956 21 11C21.5304 11 22.0391 11.2107 22.4142 11.5858C22.7893 11.9609 23 12.4696 23 13V19H18.414L19.707 17.707C19.8892 17.5184 19.99 17.2658 19.9877 17.0036C19.9854 16.7414 19.8802 16.4906 19.6948 16.3052C19.5094 16.1198 19.2586 16.0146 18.9964 16.0123C18.7342 16.01 18.4816 16.1108 18.293 16.293L15.293 19.293C15.1055 19.4805 15.0002 19.7348 15.0002 20C15.0002 20.2652 15.1055 20.5195 15.293 20.707L18.293 23.707C18.4816 23.8892 18.7342 23.99 18.9964 23.9877C19.2586 23.9854 19.5094 23.8802 19.6948 23.6948C19.8802 23.5094 19.9854 23.2586 19.9877 22.9964C19.99 22.7342 19.8892 22.4816 19.707 22.293L18.414 21H23V24C23 24.5304 22.7893 25.0391 22.4142 25.4142C22.0391 25.7893 21.5304 26 21 26H13C12.4696 26 11.9609 25.7893 11.5858 25.4142C11.2107 25.0391 11 24.5304 11 24V13ZM23 19H25C25.2652 19 25.5196 19.1054 25.7071 19.2929C25.8946 19.4804 26 19.7348 26 20C26 20.2652 25.8946 20.5196 25.7071 20.7071C25.5196 20.8946 25.2652 21 25 21H23V19Z",fill:"white"},null,-1),Zge=[Hge,Kge,Yge],Gge={__name:"CopyInputField",props:{token:{type:String,default:null,required:!0}},setup(e){const t=gt(),a=re(""),{t:n}=Qr.useI18n();function i(s){let l;document.selection?(l=document.body.createTextRange(),l.moveToElementText(s),l.select()):window.getSelection&&(l=document.createRange(),l.selectNode(s),window.getSelection().removeAllRanges(),window.getSelection().addRange(l))}function o(){i(a.value),document.execCommand("copy"),t.showNotification({type:"success",message:n("general.copied_url_clipboard")})}return(s,l)=>{const d=Cm("tooltip");return $(),te("div",Wge,[X("span",{ref_key:"publicUrl",ref:a,class:"pr-10 text-sm font-medium text-black truncate select-all select-color"},je(e.token),513),Ir(($(),te("svg",{class:"absolute right-0 h-full inset-y-0 cursor-pointer focus:outline-none text-primary-500",width:"37",viewBox:"0 0 37 37",fill:"none",xmlns:"http://www.w3.org/2000/svg",onClick:o},Zge)),[[d,{content:"Copy to Clipboard"}]])])}}},ov={recurring_invoice_id:null,item_id:null,name:"",title:"",sales_tax_type:null,sales_tax_address_type:null,description:null,quantity:1,price:0,discount_type:"fixed",discount_val:0,discount:0,total:0,totalTax:0,totalSimpleTax:0,totalCompoundTax:0,tax:0,taxes:[]};function aS(){return{currency:null,customer:null,customer_id:null,invoice_template_id:1,sub_total:0,total:0,tax:0,notes:"",discount_type:"fixed",discount_val:0,discount:0,starts_at:null,send_automatically:!0,status:"ACTIVE",company_id:null,next_invoice_at:null,next_invoice_date:null,frequency:"0 0 * * 0",limit_count:null,limit_by:"NONE",limit_date:null,exchange_rate:null,tax_per_item:null,discount_per_item:null,template_name:null,items:[{...ov,id:Qa.raw(),taxes:[{...Ci,id:Qa.raw()}]}],taxes:[],customFields:[],fields:[],invoices:[],selectedNote:null,selectedFrequency:{label:"Every Week",value:"0 0 * * 0"},selectedInvoice:null}}const eC=(e=!1)=>{const t=e?window.pinia.defineStore:un,{global:a}=window.i18n;return t({id:"recurring-invoice",state:()=>({templates:[],recurringInvoices:[],selectedRecurringInvoices:[],totalRecurringInvoices:0,isFetchingInitialSettings:!1,isFetchingViewData:!1,showExchangeRate:!1,selectAllField:!1,newRecurringInvoice:{...aS()},frequencies:[{label:"Every Minute",value:"* * * * *"},{label:"Every 30 Minute",value:"*/30 * * * *"},{label:"Every Hour",value:"0 * * * *"},{label:"Every 2 Hour",value:"0 */2 * * *"},{label:"Every day at midnight ",value:"0 0 * * *"},{label:"Every Week",value:"0 0 * * 0"},{label:"Every 15 days at midnight",value:"0 5 */15 * *"},{label:"On the first day of every month at 00:00",value:"0 0 1 * *"},{label:"Every 6 Month",value:"0 0 1 */6 *"},{label:"Every year on the first day of january at 00:00",value:"0 0 1 1 *"},{label:"Custom",value:"CUSTOM"}]}),getters:{getSubTotal(){var n;return((n=this.newRecurringInvoice)==null?void 0:n.items.reduce(function(i,o){return i+o.total},0))||0},getTotalSimpleTax(){return Qi.sumBy(this.newRecurringInvoice.taxes,function(n){return n.compound_tax?0:n.amount})},getTotalCompoundTax(){return Qi.sumBy(this.newRecurringInvoice.taxes,function(n){return n.compound_tax?n.amount:0})},getTotalTax(){return this.newRecurringInvoice.tax_per_item==="NO"||this.newRecurringInvoice.tax_per_item===null?this.getTotalSimpleTax+this.getTotalCompoundTax:Qi.sumBy(this.newRecurringInvoice.items,function(n){return n.tax})},getSubtotalWithDiscount(){return this.getSubTotal-this.newRecurringInvoice.discount_val},getTotal(){return this.getSubtotalWithDiscount+this.getTotalTax}},actions:{resetCurrentRecurringInvoice(){this.newRecurringInvoice={...aS()}},deselectItem(n){this.newRecurringInvoice.items[n]={...ov,id:Qa.raw(),taxes:[{...Ci,id:Qa.raw()}]}},addRecurringInvoice(n){return new Promise((i,o)=>{ve.post("/api/v1/recurring-invoices",n).then(s=>{this.recurringInvoices=[...this.recurringInvoices,s.data.recurringInvoice],gt().showNotification({type:"success",message:a.t("recurring_invoices.created_message")}),i(s)}).catch(s=>{be(s),o(s)})})},fetchRecurringInvoice(n){return new Promise((i,o)=>{this.isFetchingViewData=!0,ve.get(`/api/v1/recurring-invoices/${n}`).then(s=>{Object.assign(this.newRecurringInvoice,s.data.data),this.newRecurringInvoice.invoices=s.data.data.invoices||[],this.setSelectedFrequency(),this.isFetchingViewData=!1,i(s)}).catch(s=>{this.isFetchingViewData=!1,be(s),o(s)})})},updateRecurringInvoice(n){return new Promise((i,o)=>{ve.put(`/api/v1/recurring-invoices/${n.id}`,n).then(s=>{i(s),gt().showNotification({type:"success",message:a.t("recurring_invoices.updated_message")});let d=this.recurringInvoices.findIndex(u=>u.id===s.data.data.id);this.recurringInvoices[d]=s.data.data}).catch(s=>{be(s),o(s)})})},selectCustomer(n){return new Promise((i,o)=>{ve.get(`/api/v1/customers/${n}`).then(s=>{this.newRecurringInvoice.customer=s.data.data,this.newRecurringInvoice.customer_id=s.data.data.id,i(s)}).catch(s=>{be(s),o(s)})})},searchRecurringInvoice(n){return new Promise((i,o)=>{ve.get(`/api/v1/recurring-invoices?${n}`).then(s=>{i(s)}).catch(s=>{be(s),o(s)})})},fetchRecurringInvoices(n){return new Promise((i,o)=>{ve.get("/api/v1/recurring-invoices",{params:n}).then(s=>{this.recurringInvoices=s.data.data,this.totalRecurringInvoices=s.data.meta.recurring_invoice_total_count,i(s)}).catch(s=>{be(s),o(s)})})},deleteRecurringInvoice(n){return new Promise((i,o)=>{ve.post("/api/v1/recurring-invoices/delete",n).then(s=>{let l=this.recurringInvoices.findIndex(d=>d.id===n);this.recurringInvoices.splice(l,1),i(s)}).catch(s=>{be(s),o(s)})})},deleteMultipleRecurringInvoices(n){return new Promise((i,o)=>{let s=this.selectedRecurringInvoices;n&&(s=[n]),ve.post("/api/v1/recurring-invoices/delete",{ids:s}).then(l=>{this.selectedRecurringInvoices.forEach(d=>{let u=this.recurringInvoices.findIndex(_=>_.id===d.id);this.recurringInvoices.splice(u,1)}),this.selectedRecurringInvoices=[],i(l)}).catch(l=>{be(l),o(l)})})},resetSelectedCustomer(){this.newRecurringInvoice.customer=null,this.newRecurringInvoice.customer_id=""},selectRecurringInvoice(n){this.selectedRecurringInvoices=n,this.selectedRecurringInvoices.length===this.recurringInvoices.length?this.selectAllField=!0:this.selectAllField=!1},selectAllRecurringInvoices(){if(this.selectedRecurringInvoices.length===this.recurringInvoices.length)this.selectedRecurringInvoices=[],this.selectAllField=!1;else{let n=this.recurringInvoices.map(i=>i.id);this.selectedRecurringInvoices=n,this.selectAllField=!0}},addItem(){this.newRecurringInvoice.items.push({...ov,id:Qa.raw(),taxes:[{...Ci,id:Qa.raw()}]})},removeItem(n){this.newRecurringInvoice.items.splice(n,1)},updateItem(n){Object.assign(this.newRecurringInvoice.items[n.index],{...n})},async fetchRecurringInvoiceInitialSettings(n){const i=es(),o=pc(),s=vp(),l=yp(),d=ic(),u=Zs();if(this.isFetchingInitialSettings=!0,this.newRecurringInvoice.currency=i.selectedCompanyCurrency,u.query.customer){let f=await o.fetchCustomer(u.query.customer);this.newRecurringInvoice.customer=f.data.data,this.selectCustomer(f.data.data.id)}let _=[];n?_=[this.fetchRecurringInvoice(u.params.id)]:(this.newRecurringInvoice.tax_per_item=i.selectedCompanySettings.tax_per_item,this.newRecurringInvoice.discount_per_item=i.selectedCompanySettings.discount_per_item,this.newRecurringInvoice.sales_tax_type=i.selectedCompanySettings.sales_tax_type,this.newRecurringInvoice.sales_tax_address_type=i.selectedCompanySettings.sales_tax_address_type,this.newRecurringInvoice.starts_at=Ie().format("YYYY-MM-DD"),this.newRecurringInvoice.next_invoice_date=Ie().add(7,"days").format("YYYY-MM-DD")),Promise.all([s.fetchItems({filter:{},orderByField:"",orderBy:""}),this.resetSelectedNote(),l.fetchInvoiceTemplates(),d.fetchTaxTypes({limit:"all"}),..._]).then(async([f,p,h,g,y])=>{var k,b;h.data&&(this.templates=l.templates),n||this.setTemplate(this.templates[0].name),n&&(y!=null&&y.data)&&({...y.data.data},this.setTemplate((b=(k=y==null?void 0:y.data)==null?void 0:k.data)==null?void 0:b.template_name)),n&&this.addSalesTaxUs(),this.isFetchingInitialSettings=!1}).catch(f=>{console.log(f),be(f)})},addSalesTaxUs(){const n=ic();let i={...Ci},o=this.newRecurringInvoice.taxes.find(s=>s.name==="Sales Tax"&&s.type==="MODULE");if(o){for(const s in o)Object.prototype.hasOwnProperty.call(i,s)&&(i[s]=o[s]);i.id=o.tax_type_id,n.taxTypes.push(i)}},setTemplate(n){this.newRecurringInvoice.template_name=n},setSelectedFrequency(){let n=this.frequencies.find(i=>i.value===this.newRecurringInvoice.frequency);n?this.newRecurringInvoice.selectedFrequency=n:this.newRecurringInvoice.selectedFrequency={label:"Custom",value:"CUSTOM"}},resetSelectedNote(){this.newRecurringInvoice.selectedNote=null},fetchRecurringInvoiceFrequencyDate(n){return new Promise((i,o)=>{ve.get("/api/v1/recurring-invoice-frequency",{params:n}).then(s=>{this.newRecurringInvoice.next_invoice_at=s.data.next_invoice_at,i(s)}).catch(s=>{gt().showNotification({type:"error",message:a.t("errors.enter_valid_cron_format")}),o(s)})})}}})()},Qge={class:"flex justify-between w-full"},Jge={class:"px-6 pb-3"},Xge={class:"md:col-span-2"},eve={class:"text-sm text-gray-500"},tve={class:"grid md:grid-cols-12"},ave={class:"flex justify-end col-span-12"},nve={class:"z-0 flex justify-end p-4 border-t border-gray-200 border-solid"},tC={__name:"CustomerModal",setup(e){const t=eC(),a=Hd(),n=ub(),i=pc(),o=es(),s=Vm(),l=yp(),d=gt();let u=re(!1);const{t:_}=Qr.useI18n(),f=Zs();re(!1);const p=re(!1);let h=re(!1),g=re(!1);const y=B(()=>a.active&&a.componentName==="CustomerModal"),k=B(()=>({name:{required:Tn.withMessage(_("validation.required"),Wx),minLength:Tn.withMessage(_("validation.name_min_length",{count:3}),Fh(3))},currency_id:{required:Tn.withMessage(_("validation.required"),Wx)},password:{required:Tn.withMessage(_("validation.required"),Kx(i.currentCustomer.enable_portal==!0&&!i.currentCustomer.password_added)),minLength:Tn.withMessage(_("validation.password_min_length",{count:8}),Fh(8))},confirm_password:{sameAsPassword:Tn.withMessage(_("validation.password_incorrect"),Mme(i.currentCustomer.password))},email:{required:Tn.withMessage(_("validation.required"),Kx(i.currentCustomer.enable_portal==!0)),email:Tn.withMessage(_("validation.email_incorrect"),jme)},prefix:{minLength:Tn.withMessage(_("validation.name_min_length",{count:3}),Fh(3))},website:{url:Tn.withMessage(_("validation.invalid_url"),Bme)},billing:{address_street_1:{maxLength:Tn.withMessage(_("validation.address_maxlength",{count:255}),m_(255))},address_street_2:{maxLength:Tn.withMessage(_("validation.address_maxlength",{count:255}),m_(255))}},shipping:{address_street_1:{maxLength:Tn.withMessage(_("validation.address_maxlength",{count:255}),m_(255))},address_street_2:{maxLength:Tn.withMessage(_("validation.address_maxlength",{count:255}),m_(255))}}})),b=zg(k,B(()=>i.currentCustomer)),P=B(()=>`${window.location.origin}/${o.selectedCompany.slug}/customer/login`);function w(){i.copyAddress()}async function x(){i.isEdit||(i.currentCustomer.currency_id=o.selectedCompanyCurrency.id)}async function E(){if(b.value.$touch(),b.value.$invalid&&i.currentCustomer.email===""&&d.showNotification({type:"error",message:_("settings.notification.please_enter_email")}),b.value.$invalid)return!0;p.value=!0;let j={...i.currentCustomer};try{let A=null;i.isEdit?A=await i.updateCustomer(j):A=await i.addCustomer(j),A.data&&(p.value=!1,(f.name==="invoices.create"||f.name==="invoices.edit")&&l.selectCustomer(A.data.data.id),(f.name==="estimates.create"||f.name==="estimates.edit")&&n.selectCustomer(A.data.data.id),(f.name==="recurring-invoices.create"||f.name==="recurring-invoices.edit")&&t.selectCustomer(A.data.data.id),C())}catch(A){console.error(A),p.value=!1}}function C(){a.closeModal(),setTimeout(()=>{i.resetCurrentCustomer(),b.value.$reset()},300)}return(j,A)=>{const U=Be("BaseIcon"),V=Be("BaseInput"),ee=Be("BaseInputGroup"),J=Be("BaseMultiselect"),ie=Be("BaseInputGrid"),Te=Be("BaseTab"),ze=Be("BaseSwitch"),ce=Be("BaseTextarea"),Ae=Be("BaseButton"),Pe=Be("BaseTabGroup"),He=Be("BaseModal");return $(),Xe(He,{show:y.value,onClose:C,onOpen:x},{header:_e(()=>[X("div",Qge,[$t(je(O(a).title)+" ",1),G(U,{name:"XIcon",class:"h-6 w-6 text-gray-500 cursor-pointer",onClick:C})])]),default:_e(()=>[X("form",{action:"",onSubmit:Pi(E,["prevent"])},[X("div",Jge,[G(Pe,null,{default:_e(()=>[G(Te,{title:j.$t("customers.basic_info"),class:"!mt-2"},{default:_e(()=>[G(ie,{layout:"one-column"},{default:_e(()=>[G(ee,{label:j.$t("customers.display_name"),required:"",error:O(b).name.$error&&O(b).name.$errors[0].$message},{default:_e(()=>[G(V,{modelValue:O(i).currentCustomer.name,"onUpdate:modelValue":A[0]||(A[0]=oe=>O(i).currentCustomer.name=oe),modelModifiers:{trim:!0},type:"text",name:"name",class:"mt-1 md:mt-0",invalid:O(b).name.$error,onInput:A[1]||(A[1]=oe=>O(b).name.$touch())},null,8,["modelValue","invalid"])]),_:1},8,["label","error"]),G(ee,{label:j.$t("settings.currencies.currency"),required:"",error:O(b).currency_id.$error&&O(b).currency_id.$errors[0].$message},{default:_e(()=>[G(J,{modelValue:O(i).currentCustomer.currency_id,"onUpdate:modelValue":A[2]||(A[2]=oe=>O(i).currentCustomer.currency_id=oe),options:O(s).currencies,"value-prop":"id",searchable:"",placeholder:j.$t("customers.select_currency"),"max-height":200,class:"mt-1 md:mt-0","track-by":"name",invalid:O(b).currency_id.$error,label:"name"},null,8,["modelValue","options","placeholder","invalid"])]),_:1},8,["label","error"]),G(ee,{label:j.$t("customers.primary_contact_name")},{default:_e(()=>[G(V,{modelValue:O(i).currentCustomer.contact_name,"onUpdate:modelValue":A[3]||(A[3]=oe=>O(i).currentCustomer.contact_name=oe),type:"text",class:"mt-1 md:mt-0"},null,8,["modelValue"])]),_:1},8,["label"]),G(ee,{label:j.$t("login.email"),error:O(b).email.$error&&O(b).email.$errors[0].$message},{default:_e(()=>[G(V,{modelValue:O(i).currentCustomer.email,"onUpdate:modelValue":A[4]||(A[4]=oe=>O(i).currentCustomer.email=oe),modelModifiers:{trim:!0},type:"text",name:"email",class:"mt-1 md:mt-0",invalid:O(b).email.$error,onInput:A[5]||(A[5]=oe=>O(b).email.$touch())},null,8,["modelValue","invalid"])]),_:1},8,["label","error"]),G(ee,{label:j.$t("customers.prefix"),error:O(b).prefix.$error&&O(b).prefix.$errors[0].$message,"content-loading":O(u)},{default:_e(()=>[G(V,{modelValue:O(i).currentCustomer.prefix,"onUpdate:modelValue":A[6]||(A[6]=oe=>O(i).currentCustomer.prefix=oe),"content-loading":O(u),type:"text",name:"name",class:"",invalid:O(b).prefix.$error,onInput:A[7]||(A[7]=oe=>O(b).prefix.$touch())},null,8,["modelValue","content-loading","invalid"])]),_:1},8,["label","error","content-loading"]),G(ie,null,{default:_e(()=>[G(ee,{label:j.$t("customers.phone")},{default:_e(()=>[G(V,{modelValue:O(i).currentCustomer.phone,"onUpdate:modelValue":A[8]||(A[8]=oe=>O(i).currentCustomer.phone=oe),modelModifiers:{trim:!0},type:"text",name:"phone",class:"mt-1 md:mt-0"},null,8,["modelValue"])]),_:1},8,["label"]),G(ee,{label:j.$t("customers.website"),error:O(b).website.$error&&O(b).website.$errors[0].$message},{default:_e(()=>[G(V,{modelValue:O(i).currentCustomer.website,"onUpdate:modelValue":A[9]||(A[9]=oe=>O(i).currentCustomer.website=oe),type:"url",class:"mt-1 md:mt-0",invalid:O(b).website.$error,onInput:A[10]||(A[10]=oe=>O(b).website.$touch())},null,8,["modelValue","invalid"])]),_:1},8,["label","error"])]),_:1})]),_:1})]),_:1},8,["title"]),G(Te,{title:j.$t("customers.portal_access")},{default:_e(()=>[G(ie,{class:"col-span-5 lg:col-span-4"},{default:_e(()=>[X("div",Xge,[X("p",eve,je(j.$t("customers.portal_access_text")),1),G(ze,{modelValue:O(i).currentCustomer.enable_portal,"onUpdate:modelValue":A[11]||(A[11]=oe=>O(i).currentCustomer.enable_portal=oe),class:"mt-1 flex"},null,8,["modelValue"])]),O(i).currentCustomer.enable_portal?($(),Xe(ee,{key:0,"content-loading":O(u),label:j.$t("customers.portal_access_url"),class:"md:col-span-2","help-text":j.$t("customers.portal_access_url_help")},{default:_e(()=>[G(Gge,{token:P.value},null,8,["token"])]),_:1},8,["content-loading","label","help-text"])):Re("",!0),O(i).currentCustomer.enable_portal?($(),Xe(ee,{key:1,"content-loading":O(u),error:O(b).password.$error&&O(b).password.$errors[0].$message,label:j.$t("customers.password")},{default:_e(()=>[G(V,{modelValue:O(i).currentCustomer.password,"onUpdate:modelValue":A[14]||(A[14]=oe=>O(i).currentCustomer.password=oe),modelModifiers:{trim:!0},"content-loading":O(u),type:O(h)?"text":"password",name:"password",invalid:O(b).password.$error,onInput:A[15]||(A[15]=oe=>O(b).password.$touch())},{right:_e(()=>[O(h)?($(),Xe(U,{key:0,name:"EyeOffIcon",class:"w-5 h-5 mr-1 text-gray-500 cursor-pointer",onClick:A[12]||(A[12]=oe=>ea(h)?h.value=!O(h):h=!O(h))})):($(),Xe(U,{key:1,name:"EyeIcon",class:"w-5 h-5 mr-1 text-gray-500 cursor-pointer",onClick:A[13]||(A[13]=oe=>ea(h)?h.value=!O(h):h=!O(h))}))]),_:1},8,["modelValue","content-loading","type","invalid"])]),_:1},8,["content-loading","error","label"])):Re("",!0),O(i).currentCustomer.enable_portal?($(),Xe(ee,{key:2,error:O(b).confirm_password.$error&&O(b).confirm_password.$errors[0].$message,"content-loading":O(u),label:"Confirm Password"},{default:_e(()=>[G(V,{modelValue:O(i).currentCustomer.confirm_password,"onUpdate:modelValue":A[18]||(A[18]=oe=>O(i).currentCustomer.confirm_password=oe),modelModifiers:{trim:!0},"content-loading":O(u),type:O(g)?"text":"password",name:"confirm_password",invalid:O(b).confirm_password.$error,onInput:A[19]||(A[19]=oe=>O(b).confirm_password.$touch())},{right:_e(()=>[O(g)?($(),Xe(U,{key:0,name:"EyeOffIcon",class:"w-5 h-5 mr-1 text-gray-500 cursor-pointer",onClick:A[16]||(A[16]=oe=>ea(g)?g.value=!O(g):g=!O(g))})):($(),Xe(U,{key:1,name:"EyeIcon",class:"w-5 h-5 mr-1 text-gray-500 cursor-pointer",onClick:A[17]||(A[17]=oe=>ea(g)?g.value=!O(g):g=!O(g))}))]),_:1},8,["modelValue","content-loading","type","invalid"])]),_:1},8,["error","content-loading"])):Re("",!0)]),_:1})]),_:1},8,["title"]),G(Te,{title:j.$t("customers.billing_address"),class:"!mt-2"},{default:_e(()=>[G(ie,{layout:"one-column"},{default:_e(()=>[G(ee,{label:j.$t("customers.name")},{default:_e(()=>[G(V,{modelValue:O(i).currentCustomer.billing.name,"onUpdate:modelValue":A[20]||(A[20]=oe=>O(i).currentCustomer.billing.name=oe),type:"text",class:"mt-1 md:mt-0"},null,8,["modelValue"])]),_:1},8,["label"]),G(ee,{label:j.$t("customers.country")},{default:_e(()=>[G(J,{modelValue:O(i).currentCustomer.billing.country_id,"onUpdate:modelValue":A[21]||(A[21]=oe=>O(i).currentCustomer.billing.country_id=oe),options:O(s).countries,searchable:"","show-labels":!1,placeholder:j.$t("general.select_country"),"allow-empty":!1,"track-by":"name",class:"mt-1 md:mt-0",label:"name","value-prop":"id"},null,8,["modelValue","options","placeholder"])]),_:1},8,["label"]),G(ee,{label:j.$t("customers.state")},{default:_e(()=>[G(V,{modelValue:O(i).currentCustomer.billing.state,"onUpdate:modelValue":A[22]||(A[22]=oe=>O(i).currentCustomer.billing.state=oe),type:"text",name:"billingState",class:"mt-1 md:mt-0"},null,8,["modelValue"])]),_:1},8,["label"]),G(ee,{label:j.$t("customers.city")},{default:_e(()=>[G(V,{modelValue:O(i).currentCustomer.billing.city,"onUpdate:modelValue":A[23]||(A[23]=oe=>O(i).currentCustomer.billing.city=oe),type:"text",name:"billingCity",class:"mt-1 md:mt-0"},null,8,["modelValue"])]),_:1},8,["label"]),G(ee,{label:j.$t("customers.address"),error:O(b).billing.address_street_1.$error&&O(b).billing.address_street_1.$errors[0].$message},{default:_e(()=>[G(ce,{modelValue:O(i).currentCustomer.billing.address_street_1,"onUpdate:modelValue":A[24]||(A[24]=oe=>O(i).currentCustomer.billing.address_street_1=oe),placeholder:j.$t("general.street_1"),rows:"2",cols:"50",class:"mt-1 md:mt-0",invalid:O(b).billing.address_street_1.$error,onInput:A[25]||(A[25]=oe=>O(b).billing.address_street_1.$touch())},null,8,["modelValue","placeholder","invalid"])]),_:1},8,["label","error"])]),_:1}),G(ie,{layout:"one-column"},{default:_e(()=>[G(ee,{error:O(b).billing.address_street_2.$error&&O(b).billing.address_street_2.$errors[0].$message},{default:_e(()=>[G(ce,{modelValue:O(i).currentCustomer.billing.address_street_2,"onUpdate:modelValue":A[26]||(A[26]=oe=>O(i).currentCustomer.billing.address_street_2=oe),placeholder:j.$t("general.street_2"),rows:"2",cols:"50",invalid:O(b).billing.address_street_2.$error,onInput:A[27]||(A[27]=oe=>O(b).billing.address_street_2.$touch())},null,8,["modelValue","placeholder","invalid"])]),_:1},8,["error"]),G(ee,{label:j.$t("customers.phone")},{default:_e(()=>[G(V,{modelValue:O(i).currentCustomer.billing.phone,"onUpdate:modelValue":A[28]||(A[28]=oe=>O(i).currentCustomer.billing.phone=oe),modelModifiers:{trim:!0},type:"text",name:"phone",class:"mt-1 md:mt-0"},null,8,["modelValue"])]),_:1},8,["label"]),G(ee,{label:j.$t("customers.zip_code")},{default:_e(()=>[G(V,{modelValue:O(i).currentCustomer.billing.zip,"onUpdate:modelValue":A[29]||(A[29]=oe=>O(i).currentCustomer.billing.zip=oe),type:"text",class:"mt-1 md:mt-0"},null,8,["modelValue"])]),_:1},8,["label"])]),_:1})]),_:1},8,["title"]),G(Te,{title:j.$t("customers.shipping_address"),class:"!mt-2"},{default:_e(()=>[X("div",tve,[X("div",ave,[G(Ae,{variant:"primary",type:"button",size:"xs",onClick:A[30]||(A[30]=oe=>w(!0))},{default:_e(()=>[$t(je(j.$t("customers.copy_billing_address")),1)]),_:1})])]),G(ie,{layout:"one-column"},{default:_e(()=>[G(ee,{label:j.$t("customers.name")},{default:_e(()=>[G(V,{modelValue:O(i).currentCustomer.shipping.name,"onUpdate:modelValue":A[31]||(A[31]=oe=>O(i).currentCustomer.shipping.name=oe),type:"text",class:"mt-1 md:mt-0"},null,8,["modelValue"])]),_:1},8,["label"]),G(ee,{label:j.$t("customers.country")},{default:_e(()=>[G(J,{modelValue:O(i).currentCustomer.shipping.country_id,"onUpdate:modelValue":A[32]||(A[32]=oe=>O(i).currentCustomer.shipping.country_id=oe),options:O(s).countries,searchable:!0,"show-labels":!1,"allow-empty":!1,placeholder:j.$t("general.select_country"),"track-by":"name",class:"mt-1 md:mt-0",label:"name","value-prop":"id"},null,8,["modelValue","options","placeholder"])]),_:1},8,["label"]),G(ee,{label:j.$t("customers.state")},{default:_e(()=>[G(V,{modelValue:O(i).currentCustomer.shipping.state,"onUpdate:modelValue":A[33]||(A[33]=oe=>O(i).currentCustomer.shipping.state=oe),type:"text",name:"shippingState",class:"mt-1 md:mt-0"},null,8,["modelValue"])]),_:1},8,["label"]),G(ee,{label:j.$t("customers.city")},{default:_e(()=>[G(V,{modelValue:O(i).currentCustomer.shipping.city,"onUpdate:modelValue":A[34]||(A[34]=oe=>O(i).currentCustomer.shipping.city=oe),type:"text",name:"shippingCity",class:"mt-1 md:mt-0"},null,8,["modelValue"])]),_:1},8,["label"]),G(ee,{label:j.$t("customers.address"),error:O(b).shipping.address_street_1.$error&&O(b).shipping.address_street_1.$errors[0].$message},{default:_e(()=>[G(ce,{modelValue:O(i).currentCustomer.shipping.address_street_1,"onUpdate:modelValue":A[35]||(A[35]=oe=>O(i).currentCustomer.shipping.address_street_1=oe),placeholder:j.$t("general.street_1"),rows:"2",cols:"50",class:"mt-1 md:mt-0",invalid:O(b).shipping.address_street_1.$error,onInput:A[36]||(A[36]=oe=>O(b).shipping.address_street_1.$touch())},null,8,["modelValue","placeholder","invalid"])]),_:1},8,["label","error"])]),_:1}),G(ie,{layout:"one-column"},{default:_e(()=>[G(ee,{error:O(b).shipping.address_street_2.$error&&O(b).shipping.address_street_2.$errors[0].$message},{default:_e(()=>[G(ce,{modelValue:O(i).currentCustomer.shipping.address_street_2,"onUpdate:modelValue":A[37]||(A[37]=oe=>O(i).currentCustomer.shipping.address_street_2=oe),placeholder:j.$t("general.street_2"),rows:"2",cols:"50",invalid:O(b).shipping.address_street_1.$error,onInput:A[38]||(A[38]=oe=>O(b).shipping.address_street_2.$touch())},null,8,["modelValue","placeholder","invalid"])]),_:1},8,["error"]),G(ee,{label:j.$t("customers.phone")},{default:_e(()=>[G(V,{modelValue:O(i).currentCustomer.shipping.phone,"onUpdate:modelValue":A[39]||(A[39]=oe=>O(i).currentCustomer.shipping.phone=oe),modelModifiers:{trim:!0},type:"text",name:"phone",class:"mt-1 md:mt-0"},null,8,["modelValue"])]),_:1},8,["label"]),G(ee,{label:j.$t("customers.zip_code")},{default:_e(()=>[G(V,{modelValue:O(i).currentCustomer.shipping.zip,"onUpdate:modelValue":A[40]||(A[40]=oe=>O(i).currentCustomer.shipping.zip=oe),type:"text",class:"mt-1 md:mt-0"},null,8,["modelValue"])]),_:1},8,["label"])]),_:1})]),_:1},8,["title"])]),_:1})]),X("div",nve,[G(Ae,{class:"mr-3 text-sm",type:"button",variant:"primary-outline",onClick:C},{default:_e(()=>[$t(je(j.$t("general.cancel")),1)]),_:1}),G(Ae,{loading:p.value,variant:"primary",type:"submit"},{left:_e(oe=>[p.value?Re("",!0):($(),Xe(U,{key:0,name:"SaveIcon",class:Le(oe.class)},null,8,["class"]))]),default:_e(()=>[$t(" "+je(j.$t("general.save")),1)]),_:1},8,["loading"])])],32)]),_:1},8,["show"])}}},ive={__name:"BaseCustomerSelectInput",props:{modelValue:{type:[String,Number,Object],default:""},fetchAll:{type:Boolean,default:!1},showAction:{type:Boolean,default:!1}},emits:["update:modelValue"],setup(e,{emit:t}){const a=e,{t:n}=Qr.useI18n(),i=t,o=Hd(),s=pc(),l=Gr(),d=B({get:()=>a.modelValue,set:f=>{i("update:modelValue",f)}});async function u(f){let p={search:f};a.fetchAll&&(p.limit="all");let h=await s.fetchCustomers(p);if(h.data.data.length>0&&s.editCustomer&&!h.data.data.find(y=>y.id==s.editCustomer.id)){let y=Object.assign({},s.editCustomer);h.data.data.unshift(y)}return h.data.data}async function _(){s.resetCurrentCustomer(),o.openModal({title:n("customers.add_new_customer"),componentName:"CustomerModal"})}return(f,p)=>{const h=Be("BaseIcon"),g=Be("BaseSelectAction"),y=Be("BaseMultiselect");return $(),te(yt,null,[G(y,xn({modelValue:d.value,"onUpdate:modelValue":p[0]||(p[0]=k=>d.value=k)},f.$attrs,{"track-by":"name","value-prop":"id",label:"name","filter-results":!1,"resolve-on-load":"",delay:500,searchable:!0,options:u,"label-value":"name",placeholder:f.$t("customers.type_or_click"),"can-deselect":!1,class:"w-full"}),eP({_:2},[e.showAction?{name:"action",fn:_e(()=>[O(l).hasAbilities(O(It).CREATE_CUSTOMER)?($(),Xe(g,{key:0,onClick:_},{default:_e(()=>[G(h,{name:"UserAddIcon",class:"h-4 mr-2 -ml-2 text-center text-primary-400"}),$t(" "+je(f.$t("customers.add_new_customer")),1)]),_:1})):Re("",!0)]),key:"0"}:void 0]),1040,["modelValue","placeholder"]),G(tC)],64)}}},ove=Object.freeze(Object.defineProperty({__proto__:null,default:ive},Symbol.toStringTag,{value:"Module"}));function _b(e,t,a){let n=re(a==null?void 0:a.value),i=B(()=>e.value!==void 0);return[B(()=>i.value?e.value:n.value),function(o){return i.value||(n.value=o),t==null?void 0:t(o)}]}let sve=0;function rve(){return++sve}function Pa(){return rve()}function pe(e){var t;if(e==null||e.value==null)return null;let a=(t=e.value.$el)!=null?t:e.value;return a instanceof Node?a:null}function oa(e,t,...a){if(e in t){let i=t[e];return typeof i=="function"?i(...a):i}let n=new Error(`Tried to handle "${e}" but there is no handler defined. Only defined handlers are: ${Object.keys(t).map(i=>`"${i}"`).join(", ")}.`);throw Error.captureStackTrace&&Error.captureStackTrace(n,oa),n}var lve=Object.defineProperty,cve=(e,t,a)=>t in e?lve(e,t,{enumerable:!0,configurable:!0,writable:!0,value:a}):e[t]=a,nS=(e,t,a)=>(cve(e,typeof t!="symbol"?t+"":t,a),a);let dve=class{constructor(){nS(this,"current",this.detect()),nS(this,"currentId",0)}set(t){this.current!==t&&(this.currentId=0,this.current=t)}reset(){this.set(this.detect())}nextId(){return++this.currentId}get isServer(){return this.current==="server"}get isClient(){return this.current==="client"}detect(){return typeof window>"u"||typeof document>"u"?"server":"client"}},Qd=new dve;function Dn(e){if(Qd.isServer)return null;if(e instanceof Node)return e.ownerDocument;if(e!=null&&e.hasOwnProperty("value")){let t=pe(e);if(t)return t.ownerDocument}return document}let sv=["[contentEditable=true]","[tabindex]","a[href]","area[href]","button:not([disabled])","iframe","input:not([disabled])","select:not([disabled])","textarea:not([disabled])"].map(e=>`${e}:not([tabindex='-1'])`).join(",");var Kt=(e=>(e[e.First=1]="First",e[e.Previous=2]="Previous",e[e.Next=4]="Next",e[e.Last=8]="Last",e[e.WrapAround=16]="WrapAround",e[e.NoScroll=32]="NoScroll",e))(Kt||{}),Zi=(e=>(e[e.Error=0]="Error",e[e.Overflow=1]="Overflow",e[e.Success=2]="Success",e[e.Underflow=3]="Underflow",e))(Zi||{}),uve=(e=>(e[e.Previous=-1]="Previous",e[e.Next=1]="Next",e))(uve||{});function Jd(e=document.body){return e==null?[]:Array.from(e.querySelectorAll(sv)).sort((t,a)=>Math.sign((t.tabIndex||Number.MAX_SAFE_INTEGER)-(a.tabIndex||Number.MAX_SAFE_INTEGER)))}var Xd=(e=>(e[e.Strict=0]="Strict",e[e.Loose=1]="Loose",e))(Xd||{});function eu(e,t=0){var a;return e===((a=Dn(e))==null?void 0:a.body)?!1:oa(t,{0(){return e.matches(sv)},1(){let n=e;for(;n!==null;){if(n.matches(sv))return!0;n=n.parentElement}return!1}})}function aC(e){let t=Dn(e);ha(()=>{t&&!eu(t.activeElement,0)&&Ls(e)})}var _ve=(e=>(e[e.Keyboard=0]="Keyboard",e[e.Mouse=1]="Mouse",e))(_ve||{});typeof window<"u"&&typeof document<"u"&&(document.addEventListener("keydown",e=>{e.metaKey||e.altKey||e.ctrlKey||(document.documentElement.dataset.headlessuiFocusVisible="")},!0),document.addEventListener("click",e=>{e.detail===1?delete document.documentElement.dataset.headlessuiFocusVisible:e.detail===0&&(document.documentElement.dataset.headlessuiFocusVisible="")},!0));function Ls(e){e==null||e.focus({preventScroll:!0})}let mve=["textarea","input"].join(",");function pve(e){var t,a;return(a=(t=e==null?void 0:e.matches)==null?void 0:t.call(e,mve))!=null?a:!1}function Uo(e,t=a=>a){return e.slice().sort((a,n)=>{let i=t(a),o=t(n);if(i===null||o===null)return 0;let s=i.compareDocumentPosition(o);return s&Node.DOCUMENT_POSITION_FOLLOWING?-1:s&Node.DOCUMENT_POSITION_PRECEDING?1:0})}function fve(e,t){return Oa(Jd(),t,{relativeTo:e})}function Oa(e,t,{sorted:a=!0,relativeTo:n=null,skipElements:i=[]}={}){var o;let s=(o=Array.isArray(e)?e.length>0?e[0].ownerDocument:document:e==null?void 0:e.ownerDocument)!=null?o:document,l=Array.isArray(e)?a?Uo(e):e:Jd(e);i.length>0&&l.length>1&&(l=l.filter(g=>!i.includes(g))),n=n??s.activeElement;let d=(()=>{if(t&5)return 1;if(t&10)return-1;throw new Error("Missing Focus.First, Focus.Previous, Focus.Next or Focus.Last")})(),u=(()=>{if(t&1)return 0;if(t&2)return Math.max(0,l.indexOf(n))-1;if(t&4)return Math.max(0,l.indexOf(n))+1;if(t&8)return l.length-1;throw new Error("Missing Focus.First, Focus.Previous, Focus.Next or Focus.Last")})(),_=t&32?{preventScroll:!0}:{},f=0,p=l.length,h;do{if(f>=p||f+p<=0)return 0;let g=u+f;if(t&16)g=(g+p)%p;else{if(g<0)return 3;if(g>=p)return 1}h=l[g],h==null||h.focus(_),f+=d}while(h!==s.activeElement);return t&6&&pve(h)&&h.select(),2}function nC(){return/iPhone/gi.test(window.navigator.platform)||/Mac/gi.test(window.navigator.platform)&&window.navigator.maxTouchPoints>0}function hve(){return/Android/gi.test(window.navigator.userAgent)}function gve(){return nC()||hve()}function h_(e,t,a){Qd.isServer||Ca(n=>{document.addEventListener(e,t,a),n(()=>document.removeEventListener(e,t,a))})}function iC(e,t,a){Qd.isServer||Ca(n=>{window.addEventListener(e,t,a),n(()=>window.removeEventListener(e,t,a))})}function bp(e,t,a=B(()=>!0)){function n(o,s){if(!a.value||o.defaultPrevented)return;let l=s(o);if(l===null||!l.getRootNode().contains(l))return;let d=function u(_){return typeof _=="function"?u(_()):Array.isArray(_)||_ instanceof Set?_:[_]}(e);for(let u of d){if(u===null)continue;let _=u instanceof HTMLElement?u:pe(u);if(_!=null&&_.contains(l)||o.composed&&o.composedPath().includes(_))return}return!eu(l,Xd.Loose)&&l.tabIndex!==-1&&o.preventDefault(),t(o,l)}let i=re(null);h_("pointerdown",o=>{var s,l;a.value&&(i.value=((l=(s=o.composedPath)==null?void 0:s.call(o))==null?void 0:l[0])||o.target)},!0),h_("mousedown",o=>{var s,l;a.value&&(i.value=((l=(s=o.composedPath)==null?void 0:s.call(o))==null?void 0:l[0])||o.target)},!0),h_("click",o=>{gve()||i.value&&(n(o,()=>i.value),i.value=null)},!0),h_("touchend",o=>n(o,()=>o.target instanceof HTMLElement?o.target:null),!0),iC("blur",o=>n(o,()=>window.document.activeElement instanceof HTMLIFrameElement?window.document.activeElement:null),!0)}function iS(e,t){if(e)return e;let a=t??"button";if(typeof a=="string"&&a.toLowerCase()==="button")return"button"}function tu(e,t){let a=re(iS(e.value.type,e.value.as));return Ct(()=>{a.value=iS(e.value.type,e.value.as)}),Ca(()=>{var n;a.value||pe(t)&&pe(t)instanceof HTMLButtonElement&&!((n=pe(t))!=null&&n.hasAttribute("type"))&&(a.value="button")}),a}function oS(e){return[e.screenX,e.screenY]}function oC(){let e=re([-1,-1]);return{wasMoved(t){let a=oS(t);return e.value[0]===a[0]&&e.value[1]===a[1]?!1:(e.value=a,!0)},update(t){e.value=oS(t)}}}function sC({container:e,accept:t,walk:a,enabled:n}){Ca(()=>{let i=e.value;if(!i||n!==void 0&&!n.value)return;let o=Dn(e);if(!o)return;let s=Object.assign(d=>t(d),{acceptNode:t}),l=o.createTreeWalker(i,NodeFilter.SHOW_ELEMENT,s,!1);for(;l.nextNode();)a(l.currentNode)})}var Ii=(e=>(e[e.None=0]="None",e[e.RenderStrategy=1]="RenderStrategy",e[e.Static=2]="Static",e))(Ii||{}),Rs=(e=>(e[e.Unmount=0]="Unmount",e[e.Hidden=1]="Hidden",e))(Rs||{});function qt({visible:e=!0,features:t=0,ourProps:a,theirProps:n,...i}){var o;let s=lC(n,a),l=Object.assign(i,{props:s});if(e||t&2&&s.static)return Lh(l);if(t&1){let d=(o=s.unmount)==null||o?0:1;return oa(d,{0(){return null},1(){return Lh({...i,props:{...s,hidden:!0,style:{display:"none"}}})}})}return Lh(l)}function Lh({props:e,attrs:t,slots:a,slot:n,name:i}){var o,s;let{as:l,...d}=vc(e,["unmount","static"]),u=(o=a.default)==null?void 0:o.call(a,n),_={};if(n){let f=!1,p=[];for(let[h,g]of Object.entries(n))typeof g=="boolean"&&(f=!0),g===!0&&p.push(h);f&&(_["data-headlessui-state"]=p.join(" "))}if(l==="template"){if(u=rC(u??[]),Object.keys(d).length>0||Object.keys(t).length>0){let[f,...p]=u??[];if(!vve(f)||p.length>0)throw new Error(['Passing props on "template"!',"",`The current component <${i} /> is rendering a "template".`,"However we need to passthrough the following props:",Object.keys(d).concat(Object.keys(t)).map(y=>y.trim()).filter((y,k,b)=>b.indexOf(y)===k).sort((y,k)=>y.localeCompare(k)).map(y=>` - ${y}`).join(` +`+new Error().stack),a=!1}return t.apply(this,arguments)},t)}var Z2={};function uE(e,t){Fe.deprecationHandler!=null&&Fe.deprecationHandler(e,t),Z2[e]||(dE(t),Z2[e]=!0)}Fe.suppressDeprecationWarnings=!1;Fe.deprecationHandler=null;function Do(e){return typeof Function<"u"&&e instanceof Function||Object.prototype.toString.call(e)==="[object Function]"}function qme(e){var t,a;for(a in e)Zt(e,a)&&(t=e[a],Do(t)?this[a]=t:this["_"+a]=t);this._config=e,this._dayOfMonthOrdinalParseLenient=new RegExp((this._dayOfMonthOrdinalParse.source||this._ordinalParse.source)+"|"+/\d{1,2}/.source)}function Gg(e,t){var a=Nr({},e),n;for(n in t)Zt(t,n)&&(Ts(e[n])&&Ts(t[n])?(a[n]={},Nr(a[n],e[n]),Nr(a[n],t[n])):t[n]!=null?a[n]=t[n]:delete a[n]);for(n in e)Zt(e,n)&&!Zt(t,n)&&Ts(e[n])&&(a[n]=Nr({},a[n]));return a}function Wy(e){e!=null&&this.set(e)}var Qg;Object.keys?Qg=Object.keys:Qg=function(e){var t,a=[];for(t in e)Zt(e,t)&&a.push(t);return a};var Hme={sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"};function Wme(e,t,a){var n=this._calendar[e]||this._calendar.sameElse;return Do(n)?n.call(t,a):n}function bo(e,t,a){var n=""+Math.abs(e),i=t-n.length,o=e>=0;return(o?a?"+":"":"-")+Math.pow(10,Math.max(0,i)).toString().substr(1)+n}var Ky=/(\[[^\[]*\])|(\\)?([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,p_=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,Mh={},Ll={};function tt(e,t,a,n){var i=n;typeof n=="string"&&(i=function(){return this[n]()}),e&&(Ll[e]=i),t&&(Ll[t[0]]=function(){return bo(i.apply(this,arguments),t[1],t[2])}),a&&(Ll[a]=function(){return this.localeData().ordinal(i.apply(this,arguments),e)})}function Kme(e){return e.match(/\[[\s\S]/)?e.replace(/^\[|\]$/g,""):e.replace(/\\/g,"")}function Yme(e){var t=e.match(Ky),a,n;for(a=0,n=t.length;a=0&&p_.test(e);)e=e.replace(p_,n),p_.lastIndex=0,a-=1;return e}var Zme={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 Gme(e){var t=this._longDateFormat[e],a=this._longDateFormat[e.toUpperCase()];return t||!a?t:(this._longDateFormat[e]=a.match(Ky).map(function(n){return n==="MMMM"||n==="MM"||n==="DD"||n==="dddd"?n.slice(1):n}).join(""),this._longDateFormat[e])}var Qme="Invalid date";function Jme(){return this._invalidDate}var Xme="%d",epe=/\d{1,2}/;function tpe(e){return this._ordinal.replace("%d",e)}var ape={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 npe(e,t,a,n){var i=this._relativeTime[a];return Do(i)?i(e,t,a,n):i.replace(/%d/i,e)}function ipe(e,t){var a=this._relativeTime[e>0?"future":"past"];return Do(a)?a(t):a.replace(/%s/i,t)}var G2={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 $i(e){return typeof e=="string"?G2[e]||G2[e.toLowerCase()]:void 0}function Yy(e){var t={},a,n;for(n in e)Zt(e,n)&&(a=$i(n),a&&(t[a]=e[n]));return t}var ope={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 rpe(e){var t=[],a;for(a in e)Zt(e,a)&&t.push({unit:a,priority:ope[a]});return t.sort(function(n,i){return n.priority-i.priority}),t}var mE=/\d/,mi=/\d\d/,pE=/\d{3}/,Zy=/\d{4}/,sp=/[+-]?\d{6}/,va=/\d\d?/,fE=/\d\d\d\d?/,hE=/\d\d\d\d\d\d?/,lp=/\d{1,3}/,Gy=/\d{1,4}/,cp=/[+-]?\d{1,6}/,fc=/\d+/,dp=/[+-]?\d+/,spe=/Z|[+-]\d\d:?\d\d/gi,up=/Z|[+-]\d\d(?::?\d\d)?/gi,lpe=/[+-]?\d+(\.\d{1,3})?/,Zd=/[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,hc=/^[1-9]\d?/,Qy=/^([1-9]\d|\d)/,rm;rm={};function He(e,t,a){rm[e]=Do(t)?t:function(n,i){return n&&a?a:t}}function cpe(e,t){return Zt(rm,e)?rm[e](t._strict,t._locale):new RegExp(dpe(e))}function dpe(e){return Yo(e.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(t,a,n,i,o){return a||n||i||o}))}function Yo(e){return e.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function Ei(e){return e<0?Math.ceil(e)||0:Math.floor(e)}function Mt(e){var t=+e,a=0;return t!==0&&isFinite(t)&&(a=Ei(t)),a}var Jg={};function sa(e,t){var a,n=t,i;for(typeof e=="string"&&(e=[e]),Qo(t)&&(n=function(o,r){r[t]=Mt(o)}),i=e.length,a=0;a68?1900:2e3)};var gE=gc("FullYear",!0);function ppe(){return _p(this.year())}function gc(e,t){return function(a){return a!=null?(vE(this,e,a),Fe.updateOffset(this,t),this):Dd(this,e)}}function Dd(e,t){if(!e.isValid())return NaN;var a=e._d,n=e._isUTC;switch(t){case"Milliseconds":return n?a.getUTCMilliseconds():a.getMilliseconds();case"Seconds":return n?a.getUTCSeconds():a.getSeconds();case"Minutes":return n?a.getUTCMinutes():a.getMinutes();case"Hours":return n?a.getUTCHours():a.getHours();case"Date":return n?a.getUTCDate():a.getDate();case"Day":return n?a.getUTCDay():a.getDay();case"Month":return n?a.getUTCMonth():a.getMonth();case"FullYear":return n?a.getUTCFullYear():a.getFullYear();default:return NaN}}function vE(e,t,a){var n,i,o,r,l;if(!(!e.isValid()||isNaN(a))){switch(n=e._d,i=e._isUTC,t){case"Milliseconds":return void(i?n.setUTCMilliseconds(a):n.setMilliseconds(a));case"Seconds":return void(i?n.setUTCSeconds(a):n.setSeconds(a));case"Minutes":return void(i?n.setUTCMinutes(a):n.setMinutes(a));case"Hours":return void(i?n.setUTCHours(a):n.setHours(a));case"Date":return void(i?n.setUTCDate(a):n.setDate(a));case"FullYear":break;default:return}o=a,r=e.month(),l=e.date(),l=l===29&&r===1&&!_p(o)?28:l,i?n.setUTCFullYear(o,r,l):n.setFullYear(o,r,l)}}function fpe(e){return e=$i(e),Do(this[e])?this[e]():this}function hpe(e,t){if(typeof e=="object"){e=Yy(e);var a=rpe(e),n,i=a.length;for(n=0;n=0?(l=new Date(e+400,t,a,n,i,o,r),isFinite(l.getFullYear())&&l.setFullYear(e)):l=new Date(e,t,a,n,i,o,r),l}function Sd(e){var t,a;return e<100&&e>=0?(a=Array.prototype.slice.call(arguments),a[0]=e+400,t=new Date(Date.UTC.apply(null,a)),isFinite(t.getUTCFullYear())&&t.setUTCFullYear(e)):t=new Date(Date.UTC.apply(null,arguments)),t}function sm(e,t,a){var n=7+t-a,i=(7+Sd(e,0,n).getUTCDay()-t)%7;return-i+n-1}function DE(e,t,a,n,i){var o=(7+a-n)%7,r=sm(e,n,i),l=1+7*(t-1)+o+r,d,u;return l<=0?(d=e-1,u=ld(d)+l):l>ld(e)?(d=e+1,u=l-ld(e)):(d=e,u=l),{year:d,dayOfYear:u}}function zd(e,t,a){var n=sm(e.year(),t,a),i=Math.floor((e.dayOfYear()-n-1)/7)+1,o,r;return i<1?(r=e.year()-1,o=i+Zo(r,t,a)):i>Zo(e.year(),t,a)?(o=i-Zo(e.year(),t,a),r=e.year()+1):(r=e.year(),o=i),{week:o,year:r}}function Zo(e,t,a){var n=sm(e,t,a),i=sm(e+1,t,a);return(ld(e)-n+i)/7}tt("w",["ww",2],"wo","week");tt("W",["WW",2],"Wo","isoWeek");He("w",va,hc);He("ww",va,mi);He("W",va,hc);He("WW",va,mi);Gd(["w","ww","W","WW"],function(e,t,a,n){t[n.substr(0,1)]=Mt(e)});function Ape(e){return zd(e,this._week.dow,this._week.doy).week}var Cpe={dow:0,doy:6};function jpe(){return this._week.dow}function Tpe(){return this._week.doy}function Ipe(e){var t=this.localeData().week(this);return e==null?t:this.add((e-t)*7,"d")}function Npe(e){var t=zd(this,1,4).week;return e==null?t:this.add((e-t)*7,"d")}tt("d",0,"do","day");tt("dd",0,0,function(e){return this.localeData().weekdaysMin(this,e)});tt("ddd",0,0,function(e){return this.localeData().weekdaysShort(this,e)});tt("dddd",0,0,function(e){return this.localeData().weekdays(this,e)});tt("e",0,0,"weekday");tt("E",0,0,"isoWeekday");He("d",va);He("e",va);He("E",va);He("dd",function(e,t){return t.weekdaysMinRegex(e)});He("ddd",function(e,t){return t.weekdaysShortRegex(e)});He("dddd",function(e,t){return t.weekdaysRegex(e)});Gd(["dd","ddd","dddd"],function(e,t,a,n){var i=a._locale.weekdaysParse(e,n,a._strict);i!=null?t.d=i:Dt(a).invalidWeekday=e});Gd(["d","e","E"],function(e,t,a,n){t[n]=Mt(e)});function Fpe(e,t){return typeof e!="string"?e:isNaN(e)?(e=t.weekdaysParse(e),typeof e=="number"?e:null):parseInt(e,10)}function Mpe(e,t){return typeof e=="string"?t.weekdaysParse(e)%7||7:isNaN(e)?null:e}function Xy(e,t){return e.slice(t,7).concat(e.slice(0,t))}var Rpe="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),SE="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),Ope="Su_Mo_Tu_We_Th_Fr_Sa".split("_"),$pe=Zd,Lpe=Zd,Bpe=Zd;function Upe(e,t){var a=to(this._weekdays)?this._weekdays:this._weekdays[e&&e!==!0&&this._weekdays.isFormat.test(t)?"format":"standalone"];return e===!0?Xy(a,this._week.dow):e?a[e.day()]:a}function Vpe(e){return e===!0?Xy(this._weekdaysShort,this._week.dow):e?this._weekdaysShort[e.day()]:this._weekdaysShort}function qpe(e){return e===!0?Xy(this._weekdaysMin,this._week.dow):e?this._weekdaysMin[e.day()]:this._weekdaysMin}function Hpe(e,t,a){var n,i,o,r=e.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],n=0;n<7;++n)o=xo([2e3,1]).day(n),this._minWeekdaysParse[n]=this.weekdaysMin(o,"").toLocaleLowerCase(),this._shortWeekdaysParse[n]=this.weekdaysShort(o,"").toLocaleLowerCase(),this._weekdaysParse[n]=this.weekdays(o,"").toLocaleLowerCase();return a?t==="dddd"?(i=Na.call(this._weekdaysParse,r),i!==-1?i:null):t==="ddd"?(i=Na.call(this._shortWeekdaysParse,r),i!==-1?i:null):(i=Na.call(this._minWeekdaysParse,r),i!==-1?i:null):t==="dddd"?(i=Na.call(this._weekdaysParse,r),i!==-1||(i=Na.call(this._shortWeekdaysParse,r),i!==-1)?i:(i=Na.call(this._minWeekdaysParse,r),i!==-1?i:null)):t==="ddd"?(i=Na.call(this._shortWeekdaysParse,r),i!==-1||(i=Na.call(this._weekdaysParse,r),i!==-1)?i:(i=Na.call(this._minWeekdaysParse,r),i!==-1?i:null)):(i=Na.call(this._minWeekdaysParse,r),i!==-1||(i=Na.call(this._weekdaysParse,r),i!==-1)?i:(i=Na.call(this._shortWeekdaysParse,r),i!==-1?i:null))}function Wpe(e,t,a){var n,i,o;if(this._weekdaysParseExact)return Hpe.call(this,e,t,a);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),n=0;n<7;n++){if(i=xo([2e3,1]).day(n),a&&!this._fullWeekdaysParse[n]&&(this._fullWeekdaysParse[n]=new RegExp("^"+this.weekdays(i,"").replace(".","\\.?")+"$","i"),this._shortWeekdaysParse[n]=new RegExp("^"+this.weekdaysShort(i,"").replace(".","\\.?")+"$","i"),this._minWeekdaysParse[n]=new RegExp("^"+this.weekdaysMin(i,"").replace(".","\\.?")+"$","i")),this._weekdaysParse[n]||(o="^"+this.weekdays(i,"")+"|^"+this.weekdaysShort(i,"")+"|^"+this.weekdaysMin(i,""),this._weekdaysParse[n]=new RegExp(o.replace(".",""),"i")),a&&t==="dddd"&&this._fullWeekdaysParse[n].test(e))return n;if(a&&t==="ddd"&&this._shortWeekdaysParse[n].test(e))return n;if(a&&t==="dd"&&this._minWeekdaysParse[n].test(e))return n;if(!a&&this._weekdaysParse[n].test(e))return n}}function Kpe(e){if(!this.isValid())return e!=null?this:NaN;var t=Dd(this,"Day");return e!=null?(e=Fpe(e,this.localeData()),this.add(e-t,"d")):t}function Ype(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 Zpe(e){if(!this.isValid())return e!=null?this:NaN;if(e!=null){var t=Mpe(e,this.localeData());return this.day(this.day()%7?t:t-7)}else return this.day()||7}function Gpe(e){return this._weekdaysParseExact?(Zt(this,"_weekdaysRegex")||eb.call(this),e?this._weekdaysStrictRegex:this._weekdaysRegex):(Zt(this,"_weekdaysRegex")||(this._weekdaysRegex=$pe),this._weekdaysStrictRegex&&e?this._weekdaysStrictRegex:this._weekdaysRegex)}function Qpe(e){return this._weekdaysParseExact?(Zt(this,"_weekdaysRegex")||eb.call(this),e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(Zt(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=Lpe),this._weekdaysShortStrictRegex&&e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)}function Jpe(e){return this._weekdaysParseExact?(Zt(this,"_weekdaysRegex")||eb.call(this),e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(Zt(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=Bpe),this._weekdaysMinStrictRegex&&e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)}function eb(){function e(_,f){return f.length-_.length}var t=[],a=[],n=[],i=[],o,r,l,d,u;for(o=0;o<7;o++)r=xo([2e3,1]).day(o),l=Yo(this.weekdaysMin(r,"")),d=Yo(this.weekdaysShort(r,"")),u=Yo(this.weekdays(r,"")),t.push(l),a.push(d),n.push(u),i.push(l),i.push(d),i.push(u);t.sort(e),a.sort(e),n.sort(e),i.sort(e),this._weekdaysRegex=new RegExp("^("+i.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+n.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+a.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+t.join("|")+")","i")}function tb(){return this.hours()%12||12}function Xpe(){return this.hours()||24}tt("H",["HH",2],0,"hour");tt("h",["hh",2],0,tb);tt("k",["kk",2],0,Xpe);tt("hmm",0,0,function(){return""+tb.apply(this)+bo(this.minutes(),2)});tt("hmmss",0,0,function(){return""+tb.apply(this)+bo(this.minutes(),2)+bo(this.seconds(),2)});tt("Hmm",0,0,function(){return""+this.hours()+bo(this.minutes(),2)});tt("Hmmss",0,0,function(){return""+this.hours()+bo(this.minutes(),2)+bo(this.seconds(),2)});function zE(e,t){tt(e,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),t)})}zE("a",!0);zE("A",!1);function PE(e,t){return t._meridiemParse}He("a",PE);He("A",PE);He("H",va,Qy);He("h",va,hc);He("k",va,hc);He("HH",va,mi);He("hh",va,mi);He("kk",va,mi);He("hmm",fE);He("hmmss",hE);He("Hmm",fE);He("Hmmss",hE);sa(["H","HH"],qa);sa(["k","kk"],function(e,t,a){var n=Mt(e);t[qa]=n===24?0:n});sa(["a","A"],function(e,t,a){a._isPm=a._locale.isPM(e),a._meridiem=e});sa(["h","hh"],function(e,t,a){t[qa]=Mt(e),Dt(a).bigHour=!0});sa("hmm",function(e,t,a){var n=e.length-2;t[qa]=Mt(e.substr(0,n)),t[Yi]=Mt(e.substr(n)),Dt(a).bigHour=!0});sa("hmmss",function(e,t,a){var n=e.length-4,i=e.length-2;t[qa]=Mt(e.substr(0,n)),t[Yi]=Mt(e.substr(n,2)),t[Ho]=Mt(e.substr(i)),Dt(a).bigHour=!0});sa("Hmm",function(e,t,a){var n=e.length-2;t[qa]=Mt(e.substr(0,n)),t[Yi]=Mt(e.substr(n))});sa("Hmmss",function(e,t,a){var n=e.length-4,i=e.length-2;t[qa]=Mt(e.substr(0,n)),t[Yi]=Mt(e.substr(n,2)),t[Ho]=Mt(e.substr(i))});function efe(e){return(e+"").toLowerCase().charAt(0)==="p"}var tfe=/[ap]\.?m?\.?/i,afe=gc("Hours",!0);function nfe(e,t,a){return e>11?a?"pm":"PM":a?"am":"AM"}var EE={calendar:Hme,longDateFormat:Zme,invalidDate:Qme,ordinal:Xme,dayOfMonthOrdinalParse:epe,relativeTime:ape,months:vpe,monthsShort:yE,week:Cpe,weekdays:Rpe,weekdaysMin:Ope,weekdaysShort:SE,meridiemParse:tfe},ba={},Uc={},Pd;function ife(e,t){var a,n=Math.min(e.length,t.length);for(a=0;a0;){if(i=mp(o.slice(0,a).join("-")),i)return i;if(n&&n.length>=a&&ife(o,n)>=a-1)break;a--}t++}return Pd}function rfe(e){return!!(e&&e.match("^[^/\\\\]*$"))}function mp(e){var t=null,a;if(ba[e]===void 0&&typeof module<"u"&&module&&module.exports&&rfe(e))try{t=Pd._abbr,a=require,a("./locale/"+e),$r(t)}catch{ba[e]=null}return ba[e]}function $r(e,t){var a;return e&&(Tn(t)?a=sr(e):a=ab(e,t),a?Pd=a:typeof console<"u"&&console.warn&&console.warn("Locale "+e+" not found. Did you forget to load it?")),Pd._abbr}function ab(e,t){if(t!==null){var a,n=EE;if(t.abbr=e,ba[e]!=null)uE("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."),n=ba[e]._config;else if(t.parentLocale!=null)if(ba[t.parentLocale]!=null)n=ba[t.parentLocale]._config;else if(a=mp(t.parentLocale),a!=null)n=a._config;else return Uc[t.parentLocale]||(Uc[t.parentLocale]=[]),Uc[t.parentLocale].push({name:e,config:t}),null;return ba[e]=new Wy(Gg(n,t)),Uc[e]&&Uc[e].forEach(function(i){ab(i.name,i.config)}),$r(e),ba[e]}else return delete ba[e],null}function sfe(e,t){if(t!=null){var a,n,i=EE;ba[e]!=null&&ba[e].parentLocale!=null?ba[e].set(Gg(ba[e]._config,t)):(n=mp(e),n!=null&&(i=n._config),t=Gg(i,t),n==null&&(t.abbr=e),a=new Wy(t),a.parentLocale=ba[e],ba[e]=a),$r(e)}else ba[e]!=null&&(ba[e].parentLocale!=null?(ba[e]=ba[e].parentLocale,e===$r()&&$r(e)):ba[e]!=null&&delete ba[e]);return ba[e]}function sr(e){var t;if(e&&e._locale&&e._locale._abbr&&(e=e._locale._abbr),!e)return Pd;if(!to(e)){if(t=mp(e),t)return t;e=[e]}return ofe(e)}function lfe(){return Qg(ba)}function nb(e){var t,a=e._a;return a&&Dt(e).overflow===-2&&(t=a[qo]<0||a[qo]>11?qo:a[ho]<1||a[ho]>Jy(a[dn],a[qo])?ho:a[qa]<0||a[qa]>24||a[qa]===24&&(a[Yi]!==0||a[Ho]!==0||a[Ds]!==0)?qa:a[Yi]<0||a[Yi]>59?Yi:a[Ho]<0||a[Ho]>59?Ho:a[Ds]<0||a[Ds]>999?Ds:-1,Dt(e)._overflowDayOfYear&&(tho)&&(t=ho),Dt(e)._overflowWeeks&&t===-1&&(t=_pe),Dt(e)._overflowWeekday&&t===-1&&(t=mpe),Dt(e).overflow=t),e}var cfe=/^\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)?)?$/,dfe=/^\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)?)?$/,ufe=/Z|[+-]\d\d(?::?\d\d)?/,f_=[["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]],Rh=[["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/]],_fe=/^\/?Date\((-?\d+)/i,mfe=/^(?:(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}))$/,pfe={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 AE(e){var t,a,n=e._i,i=cfe.exec(n)||dfe.exec(n),o,r,l,d,u=f_.length,_=Rh.length;if(i){for(Dt(e).iso=!0,t=0,a=u;tld(r)||e._dayOfYear===0)&&(Dt(e)._overflowDayOfYear=!0),a=Sd(r,0,e._dayOfYear),e._a[qo]=a.getUTCMonth(),e._a[ho]=a.getUTCDate()),t=0;t<3&&e._a[t]==null;++t)e._a[t]=n[t]=i[t];for(;t<7;t++)e._a[t]=n[t]=e._a[t]==null?t===2?1:0:e._a[t];e._a[qa]===24&&e._a[Yi]===0&&e._a[Ho]===0&&e._a[Ds]===0&&(e._nextDay=!0,e._a[qa]=0),e._d=(e._useUTC?Sd:Epe).apply(null,n),o=e._useUTC?e._d.getUTCDay():e._d.getDay(),e._tzm!=null&&e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm),e._nextDay&&(e._a[qa]=24),e._w&&typeof e._w.d<"u"&&e._w.d!==o&&(Dt(e).weekdayMismatch=!0)}}function wfe(e){var t,a,n,i,o,r,l,d,u;t=e._w,t.GG!=null||t.W!=null||t.E!=null?(o=1,r=4,a=Pl(t.GG,e._a[dn],zd(ga(),1,4).year),n=Pl(t.W,1),i=Pl(t.E,1),(i<1||i>7)&&(d=!0)):(o=e._locale._week.dow,r=e._locale._week.doy,u=zd(ga(),o,r),a=Pl(t.gg,e._a[dn],u.year),n=Pl(t.w,u.week),t.d!=null?(i=t.d,(i<0||i>6)&&(d=!0)):t.e!=null?(i=t.e+o,(t.e<0||t.e>6)&&(d=!0)):i=o),n<1||n>Zo(a,o,r)?Dt(e)._overflowWeeks=!0:d!=null?Dt(e)._overflowWeekday=!0:(l=DE(a,n,i,o,r),e._a[dn]=l.year,e._dayOfYear=l.dayOfYear)}Fe.ISO_8601=function(){};Fe.RFC_2822=function(){};function ob(e){if(e._f===Fe.ISO_8601){AE(e);return}if(e._f===Fe.RFC_2822){CE(e);return}e._a=[],Dt(e).empty=!0;var t=""+e._i,a,n,i,o,r,l=t.length,d=0,u,_;for(i=_E(e._f,e._locale).match(Ky)||[],_=i.length,a=0;a<_;a++)o=i[a],n=(t.match(cpe(o,e))||[])[0],n&&(r=t.substr(0,t.indexOf(n)),r.length>0&&Dt(e).unusedInput.push(r),t=t.slice(t.indexOf(n)+n.length),d+=n.length),Ll[o]?(n?Dt(e).empty=!1:Dt(e).unusedTokens.push(o),upe(o,n,e)):e._strict&&!n&&Dt(e).unusedTokens.push(o);Dt(e).charsLeftOver=l-d,t.length>0&&Dt(e).unusedInput.push(t),e._a[qa]<=12&&Dt(e).bigHour===!0&&e._a[qa]>0&&(Dt(e).bigHour=void 0),Dt(e).parsedDateParts=e._a.slice(0),Dt(e).meridiem=e._meridiem,e._a[qa]=xfe(e._locale,e._a[qa],e._meridiem),u=Dt(e).era,u!==null&&(e._a[dn]=e._locale.erasConvertYear(u,e._a[dn])),ib(e),nb(e)}function xfe(e,t,a){var n;return a==null?t:e.meridiemHour!=null?e.meridiemHour(t,a):(e.isPM!=null&&(n=e.isPM(a),n&&t<12&&(t+=12),!n&&t===12&&(t=0)),t)}function Dfe(e){var t,a,n,i,o,r,l=!1,d=e._f.length;if(d===0){Dt(e).invalidFormat=!0,e._d=new Date(NaN);return}for(i=0;ithis?this:e:rp()});function IE(e,t){var a,n;if(t.length===1&&to(t[0])&&(t=t[0]),!t.length)return ga();for(a=t[0],n=1;nthis.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()}function Hfe(){if(!Tn(this._isDSTShifted))return this._isDSTShifted;var e={},t;return Hy(e,this),e=jE(e),e._a?(t=e._isUTC?xo(e._a):ga(e._a),this._isDSTShifted=this.isValid()&&Mfe(e._a,t.toArray())>0):this._isDSTShifted=!1,this._isDSTShifted}function Wfe(){return this.isValid()?!this._isUTC:!1}function Kfe(){return this.isValid()?this._isUTC:!1}function FE(){return this.isValid()?this._isUTC&&this._offset===0:!1}var Yfe=/^(-|\+)?(?:(\d*)[. ])?(\d+):(\d+)(?::(\d+)(\.\d*)?)?$/,Zfe=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;function ro(e,t){var a=e,n=null,i,o,r;return T_(e)?a={ms:e._milliseconds,d:e._days,M:e._months}:Qo(e)||!isNaN(+e)?(a={},t?a[t]=+e:a.milliseconds=+e):(n=Yfe.exec(e))?(i=n[1]==="-"?-1:1,a={y:0,d:Mt(n[ho])*i,h:Mt(n[qa])*i,m:Mt(n[Yi])*i,s:Mt(n[Ho])*i,ms:Mt(Xg(n[Ds]*1e3))*i}):(n=Zfe.exec(e))?(i=n[1]==="-"?-1:1,a={y:fs(n[2],i),M:fs(n[3],i),w:fs(n[4],i),d:fs(n[5],i),h:fs(n[6],i),m:fs(n[7],i),s:fs(n[8],i)}):a==null?a={}:typeof a=="object"&&("from"in a||"to"in a)&&(r=Gfe(ga(a.from),ga(a.to)),a={},a.ms=r.milliseconds,a.M=r.months),o=new pp(a),T_(e)&&Zt(e,"_locale")&&(o._locale=e._locale),T_(e)&&Zt(e,"_isValid")&&(o._isValid=e._isValid),o}ro.fn=pp.prototype;ro.invalid=Ffe;function fs(e,t){var a=e&&parseFloat(e.replace(",","."));return(isNaN(a)?0:a)*t}function J2(e,t){var a={};return a.months=t.month()-e.month()+(t.year()-e.year())*12,e.clone().add(a.months,"M").isAfter(t)&&--a.months,a.milliseconds=+t-+e.clone().add(a.months,"M"),a}function Gfe(e,t){var a;return e.isValid()&&t.isValid()?(t=sb(t,e),e.isBefore(t)?a=J2(e,t):(a=J2(t,e),a.milliseconds=-a.milliseconds,a.months=-a.months),a):{milliseconds:0,months:0}}function ME(e,t){return function(a,n){var i,o;return n!==null&&!isNaN(+n)&&(uE(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."),o=a,a=n,n=o),i=ro(a,n),RE(this,i,e),this}}function RE(e,t,a,n){var i=t._milliseconds,o=Xg(t._days),r=Xg(t._months);e.isValid()&&(n=n??!0,r&&kE(e,Dd(e,"Month")+r*a),o&&vE(e,"Date",Dd(e,"Date")+o*a),i&&e._d.setTime(e._d.valueOf()+i*a),n&&Fe.updateOffset(e,o||r))}var Qfe=ME(1,"add"),Jfe=ME(-1,"subtract");function OE(e){return typeof e=="string"||e instanceof String}function Xfe(e){return ao(e)||Kd(e)||OE(e)||Qo(e)||the(e)||ehe(e)||e===null||e===void 0}function ehe(e){var t=Ts(e)&&!Vy(e),a=!1,n=["years","year","y","months","month","M","days","day","d","dates","date","D","hours","hour","h","minutes","minute","m","seconds","second","s","milliseconds","millisecond","ms"],i,o,r=n.length;for(i=0;ia.valueOf():a.valueOf()9999?j_(a,t?"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYYYY-MM-DD[T]HH:mm:ss.SSSZ"):Do(Date.prototype.toISOString)?t?this.toDate().toISOString():new Date(this.valueOf()+this.utcOffset()*60*1e3).toISOString().replace("Z",j_(a,"Z")):j_(a,t?"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYY-MM-DD[T]HH:mm:ss.SSSZ")}function fhe(){if(!this.isValid())return"moment.invalid(/* "+this._i+" */)";var e="moment",t="",a,n,i,o;return this.isLocal()||(e=this.utcOffset()===0?"moment.utc":"moment.parseZone",t="Z"),a="["+e+'("]',n=0<=this.year()&&this.year()<=9999?"YYYY":"YYYYYY",i="-MM-DD[T]HH:mm:ss.SSS",o=t+'[")]',this.format(a+n+i+o)}function hhe(e){e||(e=this.isUtc()?Fe.defaultFormatUtc:Fe.defaultFormat);var t=j_(this,e);return this.localeData().postformat(t)}function ghe(e,t){return this.isValid()&&(ao(e)&&e.isValid()||ga(e).isValid())?ro({to:this,from:e}).locale(this.locale()).humanize(!t):this.localeData().invalidDate()}function vhe(e){return this.from(ga(),e)}function yhe(e,t){return this.isValid()&&(ao(e)&&e.isValid()||ga(e).isValid())?ro({from:this,to:e}).locale(this.locale()).humanize(!t):this.localeData().invalidDate()}function bhe(e){return this.to(ga(),e)}function $E(e){var t;return e===void 0?this._locale._abbr:(t=sr(e),t!=null&&(this._locale=t),this)}var LE=Oi("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 BE(){return this._locale}var lm=1e3,Bl=60*lm,cm=60*Bl,UE=(365*400+97)*24*cm;function Ul(e,t){return(e%t+t)%t}function VE(e,t,a){return e<100&&e>=0?new Date(e+400,t,a)-UE:new Date(e,t,a).valueOf()}function qE(e,t,a){return e<100&&e>=0?Date.UTC(e+400,t,a)-UE:Date.UTC(e,t,a)}function khe(e){var t,a;if(e=$i(e),e===void 0||e==="millisecond"||!this.isValid())return this;switch(a=this._isUTC?qE:VE,e){case"year":t=a(this.year(),0,1);break;case"quarter":t=a(this.year(),this.month()-this.month()%3,1);break;case"month":t=a(this.year(),this.month(),1);break;case"week":t=a(this.year(),this.month(),this.date()-this.weekday());break;case"isoWeek":t=a(this.year(),this.month(),this.date()-(this.isoWeekday()-1));break;case"day":case"date":t=a(this.year(),this.month(),this.date());break;case"hour":t=this._d.valueOf(),t-=Ul(t+(this._isUTC?0:this.utcOffset()*Bl),cm);break;case"minute":t=this._d.valueOf(),t-=Ul(t,Bl);break;case"second":t=this._d.valueOf(),t-=Ul(t,lm);break}return this._d.setTime(t),Fe.updateOffset(this,!0),this}function whe(e){var t,a;if(e=$i(e),e===void 0||e==="millisecond"||!this.isValid())return this;switch(a=this._isUTC?qE:VE,e){case"year":t=a(this.year()+1,0,1)-1;break;case"quarter":t=a(this.year(),this.month()-this.month()%3+3,1)-1;break;case"month":t=a(this.year(),this.month()+1,1)-1;break;case"week":t=a(this.year(),this.month(),this.date()-this.weekday()+7)-1;break;case"isoWeek":t=a(this.year(),this.month(),this.date()-(this.isoWeekday()-1)+7)-1;break;case"day":case"date":t=a(this.year(),this.month(),this.date()+1)-1;break;case"hour":t=this._d.valueOf(),t+=cm-Ul(t+(this._isUTC?0:this.utcOffset()*Bl),cm)-1;break;case"minute":t=this._d.valueOf(),t+=Bl-Ul(t,Bl)-1;break;case"second":t=this._d.valueOf(),t+=lm-Ul(t,lm)-1;break}return this._d.setTime(t),Fe.updateOffset(this,!0),this}function xhe(){return this._d.valueOf()-(this._offset||0)*6e4}function Dhe(){return Math.floor(this.valueOf()/1e3)}function She(){return new Date(this.valueOf())}function zhe(){var e=this;return[e.year(),e.month(),e.date(),e.hour(),e.minute(),e.second(),e.millisecond()]}function Phe(){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 Ehe(){return this.isValid()?this.toISOString():null}function Ahe(){return qy(this)}function Che(){return Nr({},Dt(this))}function jhe(){return Dt(this).overflow}function The(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}}tt("N",0,0,"eraAbbr");tt("NN",0,0,"eraAbbr");tt("NNN",0,0,"eraAbbr");tt("NNNN",0,0,"eraName");tt("NNNNN",0,0,"eraNarrow");tt("y",["y",1],"yo","eraYear");tt("y",["yy",2],0,"eraYear");tt("y",["yyy",3],0,"eraYear");tt("y",["yyyy",4],0,"eraYear");He("N",lb);He("NN",lb);He("NNN",lb);He("NNNN",Vhe);He("NNNNN",qhe);sa(["N","NN","NNN","NNNN","NNNNN"],function(e,t,a,n){var i=a._locale.erasParse(e,n,a._strict);i?Dt(a).era=i:Dt(a).invalidEra=e});He("y",fc);He("yy",fc);He("yyy",fc);He("yyyy",fc);He("yo",Hhe);sa(["y","yy","yyy","yyyy"],dn);sa(["yo"],function(e,t,a,n){var i;a._locale._eraYearOrdinalRegex&&(i=e.match(a._locale._eraYearOrdinalRegex)),a._locale.eraYearOrdinalParse?t[dn]=a._locale.eraYearOrdinalParse(e,i):t[dn]=parseInt(e,10)});function Ihe(e,t){var a,n,i,o=this._eras||sr("en")._eras;for(a=0,n=o.length;a=0)return o[n]}function Fhe(e,t){var a=e.since<=e.until?1:-1;return t===void 0?Fe(e.since).year():Fe(e.since).year()+(t-e.offset)*a}function Mhe(){var e,t,a,n=this.localeData().eras();for(e=0,t=n.length;eo&&(t=o),Jhe.call(this,e,t,a,n,i))}function Jhe(e,t,a,n,i){var o=DE(e,t,a,n,i),r=Sd(o.year,0,o.dayOfYear);return this.year(r.getUTCFullYear()),this.month(r.getUTCMonth()),this.date(r.getUTCDate()),this}tt("Q",0,"Qo","quarter");He("Q",mE);sa("Q",function(e,t){t[qo]=(Mt(e)-1)*3});function Xhe(e){return e==null?Math.ceil((this.month()+1)/3):this.month((e-1)*3+this.month()%3)}tt("D",["DD",2],"Do","date");He("D",va,hc);He("DD",va,mi);He("Do",function(e,t){return e?t._dayOfMonthOrdinalParse||t._ordinalParse:t._dayOfMonthOrdinalParseLenient});sa(["D","DD"],ho);sa("Do",function(e,t){t[ho]=Mt(e.match(va)[0])});var WE=gc("Date",!0);tt("DDD",["DDDD",3],"DDDo","dayOfYear");He("DDD",lp);He("DDDD",pE);sa(["DDD","DDDD"],function(e,t,a){a._dayOfYear=Mt(e)});function ege(e){var t=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return e==null?t:this.add(e-t,"d")}tt("m",["mm",2],0,"minute");He("m",va,Qy);He("mm",va,mi);sa(["m","mm"],Yi);var tge=gc("Minutes",!1);tt("s",["ss",2],0,"second");He("s",va,Qy);He("ss",va,mi);sa(["s","ss"],Ho);var age=gc("Seconds",!1);tt("S",0,0,function(){return~~(this.millisecond()/100)});tt(0,["SS",2],0,function(){return~~(this.millisecond()/10)});tt(0,["SSS",3],0,"millisecond");tt(0,["SSSS",4],0,function(){return this.millisecond()*10});tt(0,["SSSSS",5],0,function(){return this.millisecond()*100});tt(0,["SSSSSS",6],0,function(){return this.millisecond()*1e3});tt(0,["SSSSSSS",7],0,function(){return this.millisecond()*1e4});tt(0,["SSSSSSSS",8],0,function(){return this.millisecond()*1e5});tt(0,["SSSSSSSSS",9],0,function(){return this.millisecond()*1e6});He("S",lp,mE);He("SS",lp,mi);He("SSS",lp,pE);var Fr,KE;for(Fr="SSSS";Fr.length<=9;Fr+="S")He(Fr,fc);function nge(e,t){t[Ds]=Mt(("0."+e)*1e3)}for(Fr="S";Fr.length<=9;Fr+="S")sa(Fr,nge);KE=gc("Milliseconds",!1);tt("z",0,0,"zoneAbbr");tt("zz",0,0,"zoneName");function ige(){return this._isUTC?"UTC":""}function oge(){return this._isUTC?"Coordinated Universal Time":""}var ze=Yd.prototype;ze.add=Qfe;ze.calendar=ihe;ze.clone=ohe;ze.diff=_he;ze.endOf=whe;ze.format=hhe;ze.from=ghe;ze.fromNow=vhe;ze.to=yhe;ze.toNow=bhe;ze.get=fpe;ze.invalidAt=jhe;ze.isAfter=rhe;ze.isBefore=she;ze.isBetween=lhe;ze.isSame=che;ze.isSameOrAfter=dhe;ze.isSameOrBefore=uhe;ze.isValid=Ahe;ze.lang=LE;ze.locale=$E;ze.localeData=BE;ze.max=Afe;ze.min=Efe;ze.parsingFlags=Che;ze.set=hpe;ze.startOf=khe;ze.subtract=Jfe;ze.toArray=zhe;ze.toObject=Phe;ze.toDate=She;ze.toISOString=phe;ze.inspect=fhe;typeof Symbol<"u"&&Symbol.for!=null&&(ze[Symbol.for("nodejs.util.inspect.custom")]=function(){return"Moment<"+this.format()+">"});ze.toJSON=Ehe;ze.toString=mhe;ze.unix=Dhe;ze.valueOf=xhe;ze.creationData=The;ze.eraName=Mhe;ze.eraNarrow=Rhe;ze.eraAbbr=Ohe;ze.eraYear=$he;ze.year=gE;ze.isLeapYear=ppe;ze.weekYear=Whe;ze.isoWeekYear=Khe;ze.quarter=ze.quarters=Xhe;ze.month=wE;ze.daysInMonth=Spe;ze.week=ze.weeks=Ipe;ze.isoWeek=ze.isoWeeks=Npe;ze.weeksInYear=Ghe;ze.weeksInWeekYear=Qhe;ze.isoWeeksInYear=Yhe;ze.isoWeeksInISOWeekYear=Zhe;ze.date=WE;ze.day=ze.days=Kpe;ze.weekday=Ype;ze.isoWeekday=Zpe;ze.dayOfYear=ege;ze.hour=ze.hours=afe;ze.minute=ze.minutes=tge;ze.second=ze.seconds=age;ze.millisecond=ze.milliseconds=KE;ze.utcOffset=Ofe;ze.utc=Lfe;ze.local=Bfe;ze.parseZone=Ufe;ze.hasAlignedHourOffset=Vfe;ze.isDST=qfe;ze.isLocal=Wfe;ze.isUtcOffset=Kfe;ze.isUtc=FE;ze.isUTC=FE;ze.zoneAbbr=ige;ze.zoneName=oge;ze.dates=Oi("dates accessor is deprecated. Use date instead.",WE);ze.months=Oi("months accessor is deprecated. Use month instead",wE);ze.years=Oi("years accessor is deprecated. Use year instead",gE);ze.zone=Oi("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",$fe);ze.isDSTShifted=Oi("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",Hfe);function rge(e){return ga(e*1e3)}function sge(){return ga.apply(null,arguments).parseZone()}function YE(e){return e}var Gt=Wy.prototype;Gt.calendar=Wme;Gt.longDateFormat=Gme;Gt.invalidDate=Jme;Gt.ordinal=tpe;Gt.preparse=YE;Gt.postformat=YE;Gt.relativeTime=npe;Gt.pastFuture=ipe;Gt.set=qme;Gt.eras=Ihe;Gt.erasParse=Nhe;Gt.erasConvertYear=Fhe;Gt.erasAbbrRegex=Bhe;Gt.erasNameRegex=Lhe;Gt.erasNarrowRegex=Uhe;Gt.months=kpe;Gt.monthsShort=wpe;Gt.monthsParse=Dpe;Gt.monthsRegex=Ppe;Gt.monthsShortRegex=zpe;Gt.week=Ape;Gt.firstDayOfYear=Tpe;Gt.firstDayOfWeek=jpe;Gt.weekdays=Upe;Gt.weekdaysMin=qpe;Gt.weekdaysShort=Vpe;Gt.weekdaysParse=Wpe;Gt.weekdaysRegex=Gpe;Gt.weekdaysShortRegex=Qpe;Gt.weekdaysMinRegex=Jpe;Gt.isPM=efe;Gt.meridiem=nfe;function dm(e,t,a,n){var i=sr(),o=xo().set(n,t);return i[a](o,e)}function ZE(e,t,a){if(Qo(e)&&(t=e,e=void 0),e=e||"",t!=null)return dm(e,t,a,"month");var n,i=[];for(n=0;n<12;n++)i[n]=dm(e,n,a,"month");return i}function db(e,t,a,n){typeof e=="boolean"?(Qo(t)&&(a=t,t=void 0),t=t||""):(t=e,a=t,e=!1,Qo(t)&&(a=t,t=void 0),t=t||"");var i=sr(),o=e?i._week.dow:0,r,l=[];if(a!=null)return dm(t,(a+o)%7,n,"day");for(r=0;r<7;r++)l[r]=dm(t,(r+o)%7,n,"day");return l}function lge(e,t){return ZE(e,t,"months")}function cge(e,t){return ZE(e,t,"monthsShort")}function dge(e,t,a){return db(e,t,a,"weekdays")}function uge(e,t,a){return db(e,t,a,"weekdaysShort")}function _ge(e,t,a){return db(e,t,a,"weekdaysMin")}$r("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,a=Mt(e%100/10)===1?"th":t===1?"st":t===2?"nd":t===3?"rd":"th";return e+a}});Fe.lang=Oi("moment.lang is deprecated. Use moment.locale instead.",$r);Fe.langData=Oi("moment.langData is deprecated. Use moment.localeData instead.",sr);var Fo=Math.abs;function mge(){var e=this._data;return this._milliseconds=Fo(this._milliseconds),this._days=Fo(this._days),this._months=Fo(this._months),e.milliseconds=Fo(e.milliseconds),e.seconds=Fo(e.seconds),e.minutes=Fo(e.minutes),e.hours=Fo(e.hours),e.months=Fo(e.months),e.years=Fo(e.years),this}function GE(e,t,a,n){var i=ro(t,a);return e._milliseconds+=n*i._milliseconds,e._days+=n*i._days,e._months+=n*i._months,e._bubble()}function pge(e,t){return GE(this,e,t,1)}function fge(e,t){return GE(this,e,t,-1)}function X2(e){return e<0?Math.floor(e):Math.ceil(e)}function hge(){var e=this._milliseconds,t=this._days,a=this._months,n=this._data,i,o,r,l,d;return e>=0&&t>=0&&a>=0||e<=0&&t<=0&&a<=0||(e+=X2(tv(a)+t)*864e5,t=0,a=0),n.milliseconds=e%1e3,i=Ei(e/1e3),n.seconds=i%60,o=Ei(i/60),n.minutes=o%60,r=Ei(o/60),n.hours=r%24,t+=Ei(r/24),d=Ei(QE(t)),a+=d,t-=X2(tv(d)),l=Ei(a/12),a%=12,n.days=t,n.months=a,n.years=l,this}function QE(e){return e*4800/146097}function tv(e){return e*146097/4800}function gge(e){if(!this.isValid())return NaN;var t,a,n=this._milliseconds;if(e=$i(e),e==="month"||e==="quarter"||e==="year")switch(t=this._days+n/864e5,a=this._months+QE(t),e){case"month":return a;case"quarter":return a/3;case"year":return a/12}else switch(t=this._days+Math.round(tv(this._months)),e){case"week":return t/7+n/6048e5;case"day":return t+n/864e5;case"hour":return t*24+n/36e5;case"minute":return t*1440+n/6e4;case"second":return t*86400+n/1e3;case"millisecond":return Math.floor(t*864e5)+n;default:throw new Error("Unknown unit "+e)}}function lr(e){return function(){return this.as(e)}}var JE=lr("ms"),vge=lr("s"),yge=lr("m"),bge=lr("h"),kge=lr("d"),wge=lr("w"),xge=lr("M"),Dge=lr("Q"),Sge=lr("y"),zge=JE;function Pge(){return ro(this)}function Ege(e){return e=$i(e),this.isValid()?this[e+"s"]():NaN}function tl(e){return function(){return this.isValid()?this._data[e]:NaN}}var Age=tl("milliseconds"),Cge=tl("seconds"),jge=tl("minutes"),Tge=tl("hours"),Ige=tl("days"),Nge=tl("months"),Fge=tl("years");function Mge(){return Ei(this.days()/7)}var Lo=Math.round,Tl={ss:44,s:45,m:45,h:22,d:26,w:null,M:11};function Rge(e,t,a,n,i){return i.relativeTime(t||1,!!a,e,n)}function Oge(e,t,a,n){var i=ro(e).abs(),o=Lo(i.as("s")),r=Lo(i.as("m")),l=Lo(i.as("h")),d=Lo(i.as("d")),u=Lo(i.as("M")),_=Lo(i.as("w")),f=Lo(i.as("y")),p=o<=a.ss&&["s",o]||o0,p[4]=n,Rge.apply(null,p)}function $ge(e){return e===void 0?Lo:typeof e=="function"?(Lo=e,!0):!1}function Lge(e,t){return Tl[e]===void 0?!1:t===void 0?Tl[e]:(Tl[e]=t,e==="s"&&(Tl.ss=t-1),!0)}function Bge(e,t){if(!this.isValid())return this.localeData().invalidDate();var a=!1,n=Tl,i,o;return typeof e=="object"&&(t=e,e=!1),typeof e=="boolean"&&(a=e),typeof t=="object"&&(n=Object.assign({},Tl,t),t.s!=null&&t.ss==null&&(n.ss=t.s-1)),i=this.localeData(),o=Oge(this,!a,n,i),a&&(o=i.pastFuture(+this,o)),i.postformat(o)}var Oh=Math.abs;function wl(e){return(e>0)-(e<0)||+e}function hp(){if(!this.isValid())return this.localeData().invalidDate();var e=Oh(this._milliseconds)/1e3,t=Oh(this._days),a=Oh(this._months),n,i,o,r,l=this.asSeconds(),d,u,_,f;return l?(n=Ei(e/60),i=Ei(n/60),e%=60,n%=60,o=Ei(a/12),a%=12,r=e?e.toFixed(3).replace(/\.?0+$/,""):"",d=l<0?"-":"",u=wl(this._months)!==wl(l)?"-":"",_=wl(this._days)!==wl(l)?"-":"",f=wl(this._milliseconds)!==wl(l)?"-":"",d+"P"+(o?u+o+"Y":"")+(a?u+a+"M":"")+(t?_+t+"D":"")+(i||n||e?"T":"")+(i?f+i+"H":"")+(n?f+n+"M":"")+(e?f+r+"S":"")):"P0D"}var Lt=pp.prototype;Lt.isValid=Nfe;Lt.abs=mge;Lt.add=pge;Lt.subtract=fge;Lt.as=gge;Lt.asMilliseconds=JE;Lt.asSeconds=vge;Lt.asMinutes=yge;Lt.asHours=bge;Lt.asDays=kge;Lt.asWeeks=wge;Lt.asMonths=xge;Lt.asQuarters=Dge;Lt.asYears=Sge;Lt.valueOf=zge;Lt._bubble=hge;Lt.clone=Pge;Lt.get=Ege;Lt.milliseconds=Age;Lt.seconds=Cge;Lt.minutes=jge;Lt.hours=Tge;Lt.days=Ige;Lt.weeks=Mge;Lt.months=Nge;Lt.years=Fge;Lt.humanize=Bge;Lt.toISOString=hp;Lt.toString=hp;Lt.toJSON=hp;Lt.locale=$E;Lt.localeData=BE;Lt.toIsoString=Oi("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",hp);Lt.lang=LE;tt("X",0,0,"unix");tt("x",0,0,"valueOf");He("x",dp);He("X",lpe);sa("X",function(e,t,a){a._d=new Date(parseFloat(e)*1e3)});sa("x",function(e,t,a){a._d=new Date(Mt(e))});//! moment.js +Fe.version="2.30.1";Ume(ga);Fe.fn=ze;Fe.min=Cfe;Fe.max=jfe;Fe.now=Tfe;Fe.utc=xo;Fe.unix=rge;Fe.months=lge;Fe.isDate=Kd;Fe.locale=$r;Fe.invalid=rp;Fe.duration=ro;Fe.isMoment=ao;Fe.weekdays=dge;Fe.parseZone=sge;Fe.localeData=sr;Fe.isDuration=T_;Fe.monthsShort=cge;Fe.weekdaysMin=_ge;Fe.defineLocale=ab;Fe.updateLocale=sfe;Fe.locales=lfe;Fe.weekdaysShort=uge;Fe.normalizeUnits=$i;Fe.relativeTimeRounding=$ge;Fe.relativeTimeThreshold=Lge;Fe.calendarFormat=nhe;Fe.prototype=ze;Fe.HTML5_FMT={DATETIME_LOCAL:"YYYY-MM-DDTHH:mm",DATETIME_LOCAL_SECONDS:"YYYY-MM-DDTHH:mm:ss",DATETIME_LOCAL_MS:"YYYY-MM-DDTHH:mm:ss.SSS",DATE:"YYYY-MM-DD",TIME:"HH:mm",TIME_SECONDS:"HH:mm:ss",TIME_MS:"HH:mm:ss.SSS",WEEK:"GGGG-[W]WW",MONTH:"YYYY-MM"};const BEe=Object.freeze(Object.defineProperty({__proto__:null,default:Fe},Symbol.toStringTag,{value:"Module"}));var XE={exports:{}};(function(e){(function(){var t=new RegExp("^[a-z0-9]{8}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{12}$","i");function a(i){for(var o="",r=0;r{const t=e?window.pinia.defineStore:un,{global:a}=window.i18n;return t({id:"item",state:()=>({items:[],totalItems:0,selectAllField:!1,selectedItems:[],itemUnits:[],currentItemUnit:{id:null,name:""},currentItem:{name:"",description:"",price:0,unit_id:"",unit:null,taxes:[],tax_per_item:!1}}),getters:{isItemUnitEdit:n=>!!n.currentItemUnit.id},actions:{resetCurrentItem(){this.currentItem={name:"",description:"",price:0,unit_id:"",unit:null,taxes:[]}},fetchItems(n){return new Promise((i,o)=>{ye.get("/api/v1/items",{params:n}).then(r=>{this.items=r.data.data,this.totalItems=r.data.meta.item_total_count,i(r)}).catch(r=>{ke(r),o(r)})})},fetchItem(n){return new Promise((i,o)=>{ye.get(`/api/v1/items/${n}`).then(r=>{r.data&&Object.assign(this.currentItem,r.data.data),i(r)}).catch(r=>{ke(r),o(r)})})},addItem(n){return new Promise((i,o)=>{ye.post("/api/v1/items",n).then(r=>{const l=gt();this.items.push(r.data.data),l.showNotification({type:"success",message:a.t("items.created_message")}),i(r)}).catch(r=>{ke(r),o(r)})})},updateItem(n){return new Promise((i,o)=>{ye.put(`/api/v1/items/${n.id}`,n).then(r=>{if(r.data){const l=gt();let d=this.items.findIndex(u=>u.id===r.data.data.id);this.items[d]=n.item,l.showNotification({type:"success",message:a.t("items.updated_message")})}i(r)}).catch(r=>{ke(r),o(r)})})},deleteItem(n){const i=gt();return new Promise((o,r)=>{ye.post("/api/v1/items/delete",n).then(l=>{let d=this.items.findIndex(u=>u.id===n);this.items.splice(d,1),i.showNotification({type:"success",message:a.tc("items.deleted_message",1)}),o(l)}).catch(l=>{ke(l),r(l)})})},deleteMultipleItems(){const n=gt();return new Promise((i,o)=>{ye.post("/api/v1/items/delete",{ids:this.selectedItems}).then(r=>{this.selectedItems.forEach(l=>{let d=this.items.findIndex(u=>u.id===l.id);this.items.splice(d,1)}),n.showNotification({type:"success",message:a.tc("items.deleted_message",2)}),i(r)}).catch(r=>{ke(r),o(r)})})},selectItem(n){this.selectedItems=n,this.selectedItems.length===this.items.length?this.selectAllField=!0:this.selectAllField=!1},selectAllItems(n){if(this.selectedItems.length===this.items.length)this.selectedItems=[],this.selectAllField=!1;else{let i=this.items.map(o=>o.id);this.selectedItems=i,this.selectAllField=!0}},addItemUnit(n){const i=gt();return new Promise((o,r)=>{ye.post("/api/v1/units",n).then(l=>{this.itemUnits.push(l.data.data),l.data.data&&i.showNotification({type:"success",message:a.t("settings.customization.items.item_unit_added")}),l.data.errors&&i.showNotification({type:"error",message:err.response.data.errors[0]}),o(l)}).catch(l=>{ke(l),r(l)})})},updateItemUnit(n){const i=gt();return new Promise((o,r)=>{ye.put(`/api/v1/units/${n.id}`,n).then(l=>{let d=this.itemUnits.findIndex(u=>u.id===l.data.data.id);this.itemUnits[d]=n,l.data.data&&i.showNotification({type:"success",message:a.t("settings.customization.items.item_unit_updated")}),l.data.errors&&i.showNotification({type:"error",message:err.response.data.errors[0]}),o(l)}).catch(l=>{ke(l),r(l)})})},fetchItemUnits(n){return new Promise((i,o)=>{ye.get("/api/v1/units",{params:n}).then(r=>{this.itemUnits=r.data.data,i(r)}).catch(r=>{ke(r),o(r)})})},fetchItemUnit(n){return new Promise((i,o)=>{ye.get(`/api/v1/units/${n}`).then(r=>{this.currentItemUnit=r.data.data,i(r)}).catch(r=>{ke(r),o(r)})})},deleteItemUnit(n){const i=gt();return new Promise((o,r)=>{ye.delete(`/api/v1/units/${n}`).then(l=>{if(!l.data.error){let d=this.itemUnits.findIndex(u=>u.id===n);this.itemUnits.splice(d,1)}l.data.success&&i.showNotification({type:"success",message:a.t("settings.customization.items.deleted_message")}),o(l)}).catch(l=>{ke(l),r(l)})})}}})()},ic=(e=!1)=>{const t=e?window.pinia.defineStore:un,{global:a}=window.i18n;return t({id:"taxType",state:()=>({taxTypes:[],currentTaxType:{id:null,name:"",percent:0,description:"",compound_tax:!1,collective_tax:0}}),getters:{isEdit:n=>!!n.currentTaxType.id},actions:{resetCurrentTaxType(){this.currentTaxType={id:null,name:"",percent:0,description:"",compound_tax:!1,collective_tax:0}},fetchTaxTypes(n){return new Promise((i,o)=>{ye.get("/api/v1/tax-types",{params:n}).then(r=>{this.taxTypes=r.data.data,i(r)}).catch(r=>{ke(r),o(r)})})},fetchTaxType(n){return new Promise((i,o)=>{ye.get(`/api/v1/tax-types/${n}`).then(r=>{this.currentTaxType=r.data.data,i(r)}).catch(r=>{ke(r),o(r)})})},addTaxType(n){const i=gt();return new Promise((o,r)=>{ye.post("/api/v1/tax-types",n).then(l=>{this.taxTypes.push(l.data.data),i.showNotification({type:"success",message:a.t("settings.tax_types.created_message")}),o(l)}).catch(l=>{ke(l),r(l)})})},updateTaxType(n){const i=gt();return new Promise((o,r)=>{ye.put(`/api/v1/tax-types/${n.id}`,n).then(l=>{if(l.data){let d=this.taxTypes.findIndex(u=>u.id===l.data.data.id);this.taxTypes[d]=n.taxTypes,i.showNotification({type:"success",message:a.t("settings.tax_types.updated_message")})}o(l)}).catch(l=>{ke(l),r(l)})})},fetchSalesTax(n){return new Promise((i,o)=>{ye.post("/api/m/sales-tax-us/current-tax",n).then(r=>{if(r.data){let l=this.taxTypes.findIndex(d=>d.name==="SalesTaxUs");l>-1&&this.taxTypes.splice(l,1),this.taxTypes.push({...r.data.data,tax_type_id:r.data.data.id})}i(r)}).catch(r=>{ke(r),o(r)})})},deleteTaxType(n){return new Promise((i,o)=>{ye.delete(`/api/v1/tax-types/${n}`).then(r=>{if(r.data.success){let l=this.taxTypes.findIndex(u=>u.id===n);this.taxTypes.splice(l,1),gt().showNotification({type:"success",message:a.t("settings.tax_types.deleted_message")})}i(r)}).catch(r=>{ke(r),o(r)})})}}})()},av={estimate_id:null,item_id:null,name:"",title:"",description:null,quantity:1,price:0,discount_type:"fixed",discount_val:0,discount:0,total:0,sub_total:0,totalTax:0,totalSimpleTax:0,totalCompoundTax:0,tax:0,taxes:[]},Ci={name:"",tax_type_id:0,type:"GENERAL",amount:null,percent:null,compound_tax:!1};function ex(){return{id:null,customer:null,template_name:"",tax_per_item:null,sales_tax_type:null,sales_tax_address_type:null,discount_per_item:null,estimate_date:"",expiry_date:"",estimate_number:"",customer_id:null,sub_total:0,total:0,tax:0,notes:"",discount_type:"fixed",discount_val:0,reference_number:null,discount:0,items:[{...av,id:Qa.raw(),taxes:[{...Ci,id:Qa.raw()}]}],taxes:[],customFields:[],fields:[],selectedNote:null,selectedCurrency:""}}const ub=(e=!1)=>{const t=e?window.pinia.defineStore:un,{global:a}=window.i18n;return t({id:"estimate",state:()=>({templates:[],estimates:[],selectAllField:!1,selectedEstimates:[],totalEstimateCount:0,isFetchingInitialSettings:!1,showExchangeRate:!1,newEstimate:{...ex()}}),getters:{getSubTotal(){return this.newEstimate.items.reduce(function(n,i){return n+i.total},0)},getTotalSimpleTax(){return Qi.sumBy(this.newEstimate.taxes,function(n){return n.compound_tax?0:n.amount})},getTotalCompoundTax(){return Qi.sumBy(this.newEstimate.taxes,function(n){return n.compound_tax?n.amount:0})},getTotalTax(){return this.newEstimate.tax_per_item==="NO"||this.newEstimate.tax_per_item===null?this.getTotalSimpleTax+this.getTotalCompoundTax:Qi.sumBy(this.newEstimate.items,function(n){return n.tax})},getSubtotalWithDiscount(){return this.getSubTotal-this.newEstimate.discount_val},getTotal(){return this.getSubtotalWithDiscount+this.getTotalTax},isEdit:n=>!!n.newEstimate.id},actions:{resetCurrentEstimate(){this.newEstimate={...ex()}},previewEstimate(n){return new Promise((i,o)=>{ye.get(`/api/v1/estimates/${n.id}/send/preview`,{params:n}).then(r=>{i(r)}).catch(r=>{ke(r),o(r)})})},fetchEstimates(n){return new Promise((i,o)=>{ye.get("/api/v1/estimates",{params:n}).then(r=>{this.estimates=r.data.data,this.totalEstimateCount=r.data.meta.estimate_total_count,i(r)}).catch(r=>{ke(r),o(r)})})},getNextNumber(n,i=!1){return new Promise((o,r)=>{ye.get("/api/v1/next-number?key=estimate",{params:n}).then(l=>{i&&(this.newEstimate.estimate_number=l.data.nextNumber),o(l)}).catch(l=>{ke(l),r(l)})})},fetchEstimate(n){return new Promise((i,o)=>{ye.get(`/api/v1/estimates/${n}`).then(r=>{Object.assign(this.newEstimate,r.data.data),i(r)}).catch(r=>{console.log(r),ke(r),o(r)})})},addSalesTaxUs(){const n=ic();let i={...Ci},o=this.newEstimate.taxes.find(r=>r.name==="Sales Tax"&&r.type==="MODULE");if(o){for(const r in o)Object.prototype.hasOwnProperty.call(i,r)&&(i[r]=o[r]);i.id=o.tax_type_id,console.log(i,"salesTax"),n.taxTypes.push(i),console.log(n.taxTypes)}},sendEstimate(n){const i=gt();return new Promise((o,r)=>{ye.post(`/api/v1/estimates/${n.id}/send`,n).then(l=>{n.is_preview||i.showNotification({type:"success",message:a.t("estimates.send_estimate_successfully")}),o(l)}).catch(l=>{ke(l),r(l)})})},addEstimate(n){return new Promise((i,o)=>{ye.post("/api/v1/estimates",n).then(r=>{this.estimates=[...this.estimates,r.data.estimate],gt().showNotification({type:"success",message:a.t("estimates.created_message")}),i(r)}).catch(r=>{ke(r),o(r)})})},deleteEstimate(n){const i=gt();return new Promise((o,r)=>{ye.post("/api/v1/estimates/delete",n).then(l=>{let d=this.estimates.findIndex(u=>u.id===n);this.estimates.splice(d,1),i.showNotification({type:"success",message:a.t("estimates.deleted_message",1)}),o(l)}).catch(l=>{ke(l),r(l)})})},deleteMultipleEstimates(n){const i=gt();return new Promise((o,r)=>{ye.post("/api/v1/estimates/delete",{ids:this.selectedEstimates}).then(l=>{this.selectedEstimates.forEach(d=>{let u=this.estimates.findIndex(_=>_.id===d.id);this.estimates.splice(u,1)}),this.selectedEstimates=[],i.showNotification({type:"success",message:a.tc("estimates.deleted_message",2)}),o(l)}).catch(l=>{ke(l),r(l)})})},updateEstimate(n){return new Promise((i,o)=>{ye.put(`/api/v1/estimates/${n.id}`,n).then(r=>{let l=this.estimates.findIndex(u=>u.id===r.data.data.id);this.estimates[l]=r.data.data,gt().showNotification({type:"success",message:a.t("estimates.updated_message")}),i(r)}).catch(r=>{ke(r),o(r)})})},markAsAccepted(n){return new Promise((i,o)=>{ye.post(`/api/v1/estimates/${n.id}/status`,n).then(r=>{let l=this.estimates.findIndex(d=>d.id===n.id);this.estimates[l]&&(this.estimates[l].status="ACCEPTED",gt().showNotification({type:"success",message:a.t("estimates.marked_as_accepted_message")})),i(r)}).catch(r=>{ke(r),o(r)})})},markAsRejected(n){return new Promise((i,o)=>{ye.post(`/api/v1/estimates/${n.id}/status`,n).then(r=>{gt().showNotification({type:"success",message:a.t("estimates.marked_as_rejected_message")}),i(r)}).catch(r=>{ke(r),o(r)})})},markAsSent(n){return new Promise((i,o)=>{ye.post(`/api/v1/estimates/${n.id}/status`,n).then(r=>{let l=this.estimates.findIndex(d=>d.id===n.id);this.estimates[l]&&(this.estimates[l].status="SENT",gt().showNotification({type:"success",message:a.t("estimates.mark_as_sent_successfully")})),i(r)}).catch(r=>{ke(r),o(r)})})},convertToInvoice(n){const i=gt();return new Promise((o,r)=>{ye.post(`/api/v1/estimates/${n}/convert-to-invoice`).then(l=>{i.showNotification({type:"success",message:a.t("estimates.conversion_message")}),o(l)}).catch(l=>{ke(l),r(l)})})},searchEstimate(n){return new Promise((i,o)=>{ye.get(`/api/v1/estimates?${n}`).then(r=>{i(r)}).catch(r=>{ke(r),o(r)})})},selectEstimate(n){this.selectedEstimates=n,this.selectedEstimates.length===this.estimates.length?this.selectAllField=!0:this.selectAllField=!1},selectAllEstimates(){if(this.selectedEstimates.length===this.estimates.length)this.selectedEstimates=[],this.selectAllField=!1;else{let n=this.estimates.map(i=>i.id);this.selectedEstimates=n,this.selectAllField=!0}},selectCustomer(n){return new Promise((i,o)=>{ye.get(`/api/v1/customers/${n}`).then(r=>{this.newEstimate.customer=r.data.data,this.newEstimate.customer_id=r.data.data.id,i(r)}).catch(r=>{ke(r),o(r)})})},fetchEstimateTemplates(n){return new Promise((i,o)=>{ye.get("/api/v1/estimates/templates",{params:n}).then(r=>{this.templates=r.data.estimateTemplates,i(r)}).catch(r=>{ke(r),o(r)})})},setTemplate(n){this.newEstimate.template_name=n},resetSelectedCustomer(){this.newEstimate.customer=null,this.newEstimate.customer_id=""},selectNote(n){this.newEstimate.selectedNote=null,this.newEstimate.selectedNote=n},resetSelectedNote(){this.newEstimate.selectedNote=null},addItem(){this.newEstimate.items.push({...av,id:Qa.raw(),taxes:[{...Ci,id:Qa.raw()}]})},updateItem(n){Object.assign(this.newEstimate.items[n.index],{...n})},removeItem(n){this.newEstimate.items.splice(n,1)},deselectItem(n){this.newEstimate.items[n]={...av,id:Qa.raw(),taxes:[{...Ci,id:Qa.raw()}]}},async fetchEstimateInitialSettings(n){const i=er(),o=pc(),r=gp(),l=ic(),d=Zr(),u=Gs();if(this.isFetchingInitialSettings=!0,this.newEstimate.selectedCurrency=i.selectedCompanyCurrency,d.query.customer){let f=await o.fetchCustomer(d.query.customer);this.newEstimate.customer=f.data.data,this.newEstimate.customer_id=f.data.data.id}let _=[];n?_=[this.fetchEstimate(d.params.id)]:(this.newEstimate.tax_per_item=i.selectedCompanySettings.tax_per_item,this.newEstimate.sales_tax_type=i.selectedCompanySettings.sales_tax_type,this.newEstimate.sales_tax_address_type=i.selectedCompanySettings.sales_tax_address_type,this.newEstimate.discount_per_item=i.selectedCompanySettings.discount_per_item,this.newEstimate.estimate_date=Fe().format("YYYY-MM-DD"),i.selectedCompanySettings.estimate_set_expiry_date_automatically==="YES"&&(this.newEstimate.expiry_date=Fe().add(i.selectedCompanySettings.estimate_expiry_date_days,"days").format("YYYY-MM-DD"))),Promise.all([r.fetchItems({filter:{},orderByField:"",orderBy:""}),this.resetSelectedNote(),this.fetchEstimateTemplates(),this.getNextNumber(),l.fetchTaxTypes({limit:"all"}),..._]).then(async([f,p,h,g,y,k,b])=>{n||(g.data&&(this.newEstimate.estimate_number=g.data.nextNumber),this.setTemplate(this.templates[0].name),this.newEstimate.template_name=u.currentUserSettings.default_estimate_template?u.currentUserSettings.default_estimate_template:this.newEstimate.template_name),n&&this.addSalesTaxUs(),this.isFetchingInitialSettings=!1}).catch(f=>{ke(f),this.isFetchingInitialSettings=!1})}}})()},nv={invoice_id:null,item_id:null,name:"",title:"",description:null,quantity:1,price:0,discount_type:"fixed",discount_val:0,discount:0,total:0,totalTax:0,totalSimpleTax:0,totalCompoundTax:0,tax:0,taxes:[]};function tx(){return{id:null,invoice_number:"",customer:null,customer_id:null,template_name:null,invoice_date:"",due_date:"",notes:"",discount:0,discount_type:"fixed",discount_val:0,reference_number:null,tax:0,sub_total:0,total:0,tax_per_item:null,sales_tax_type:null,sales_tax_address_type:null,discount_per_item:null,taxes:[],items:[{...nv,id:Qa.raw(),taxes:[{...Ci,id:Qa.raw()}]}],customFields:[],fields:[],selectedNote:null,selectedCurrency:""}}const vp=(e=!1)=>{const t=e?window.pinia.defineStore:un,{global:a}=window.i18n,n=gt();return t({id:"invoice",state:()=>({templates:[],invoices:[],selectedInvoices:[],selectAllField:!1,invoiceTotalCount:0,showExchangeRate:!1,isFetchingInitialSettings:!1,isFetchingInvoice:!1,newInvoice:{...tx()}}),getters:{getInvoice:i=>o=>{let r=parseInt(o);return i.invoices.find(l=>l.id===r)},getSubTotal(){return this.newInvoice.items.reduce(function(i,o){return i+o.total},0)},getTotalSimpleTax(){return Qi.sumBy(this.newInvoice.taxes,function(i){return i.compound_tax?0:i.amount})},getTotalCompoundTax(){return Qi.sumBy(this.newInvoice.taxes,function(i){return i.compound_tax?i.amount:0})},getTotalTax(){return this.newInvoice.tax_per_item==="NO"||this.newInvoice.tax_per_item===null?this.getTotalSimpleTax+this.getTotalCompoundTax:Qi.sumBy(this.newInvoice.items,function(i){return i.tax})},getSubtotalWithDiscount(){return this.getSubTotal-this.newInvoice.discount_val},getTotal(){return this.getSubtotalWithDiscount+this.getTotalTax},isEdit:i=>!!i.newInvoice.id},actions:{resetCurrentInvoice(){this.newInvoice={...tx()}},previewInvoice(i){return new Promise((o,r)=>{ye.get(`/api/v1/invoices/${i.id}/send/preview`,{params:i}).then(l=>{o(l)}).catch(l=>{ke(l),r(l)})})},fetchInvoices(i){return new Promise((o,r)=>{ye.get("/api/v1/invoices",{params:i}).then(l=>{this.invoices=l.data.data,this.invoiceTotalCount=l.data.meta.invoice_total_count,o(l)}).catch(l=>{ke(l),r(l)})})},fetchInvoice(i){return new Promise((o,r)=>{ye.get(`/api/v1/invoices/${i}`).then(l=>{Object.assign(this.newInvoice,l.data.data),this.newInvoice.customer=l.data.data.customer,o(l)}).catch(l=>{ke(l),r(l)})})},addSalesTaxUs(){const i=ic();let o={...Ci},r=this.newInvoice.taxes.find(l=>l.name==="Sales Tax"&&l.type==="MODULE");if(r){for(const l in r)Object.prototype.hasOwnProperty.call(o,l)&&(o[l]=r[l]);o.id=r.tax_type_id,i.taxTypes.push(o)}},sendInvoice(i){return new Promise((o,r)=>{ye.post(`/api/v1/invoices/${i.id}/send`,i).then(l=>{n.showNotification({type:"success",message:a.t("invoices.invoice_sent_successfully")}),o(l)}).catch(l=>{ke(l),r(l)})})},addInvoice(i){return new Promise((o,r)=>{ye.post("/api/v1/invoices",i).then(l=>{this.invoices=[...this.invoices,l.data.invoice],n.showNotification({type:"success",message:a.t("invoices.created_message")}),o(l)}).catch(l=>{ke(l),r(l)})})},deleteInvoice(i){return new Promise((o,r)=>{ye.post("/api/v1/invoices/delete",i).then(l=>{let d=this.invoices.findIndex(u=>u.id===i);this.invoices.splice(d,1),n.showNotification({type:"success",message:a.t("invoices.deleted_message",1)}),o(l)}).catch(l=>{ke(l),r(l)})})},deleteMultipleInvoices(i){return new Promise((o,r)=>{ye.post("/api/v1/invoices/delete",{ids:this.selectedInvoices}).then(l=>{this.selectedInvoices.forEach(d=>{let u=this.invoices.findIndex(_=>_.id===d.id);this.invoices.splice(u,1)}),this.selectedInvoices=[],n.showNotification({type:"success",message:a.tc("invoices.deleted_message",2)}),o(l)}).catch(l=>{ke(l),r(l)})})},updateInvoice(i){return new Promise((o,r)=>{ye.put(`/api/v1/invoices/${i.id}`,i).then(l=>{let d=this.invoices.findIndex(u=>u.id===l.data.data.id);this.invoices[d]=l.data.data,n.showNotification({type:"success",message:a.t("invoices.updated_message")}),o(l)}).catch(l=>{ke(l),r(l)})})},cloneInvoice(i){return new Promise((o,r)=>{ye.post(`/api/v1/invoices/${i.id}/clone`,i).then(l=>{n.showNotification({type:"success",message:a.t("invoices.cloned_successfully")}),o(l)}).catch(l=>{ke(l),r(l)})})},markAsSent(i){return new Promise((o,r)=>{ye.post(`/api/v1/invoices/${i.id}/status`,i).then(l=>{let d=this.invoices.findIndex(u=>u.id===i.id);this.invoices[d]&&(this.invoices[d].status="SENT"),n.showNotification({type:"success",message:a.t("invoices.mark_as_sent_successfully")}),o(l)}).catch(l=>{ke(l),r(l)})})},getNextNumber(i,o=!1){return new Promise((r,l)=>{ye.get("/api/v1/next-number?key=invoice",{params:i}).then(d=>{o&&(this.newInvoice.invoice_number=d.data.nextNumber),r(d)}).catch(d=>{ke(d),l(d)})})},searchInvoice(i){return new Promise((o,r)=>{ye.get(`/api/v1/invoices?${i}`).then(l=>{o(l)}).catch(l=>{ke(l),r(l)})})},selectInvoice(i){this.selectedInvoices=i,this.selectedInvoices.length===this.invoices.length?this.selectAllField=!0:this.selectAllField=!1},selectAllInvoices(){if(this.selectedInvoices.length===this.invoices.length)this.selectedInvoices=[],this.selectAllField=!1;else{let i=this.invoices.map(o=>o.id);this.selectedInvoices=i,this.selectAllField=!0}},selectCustomer(i){return new Promise((o,r)=>{ye.get(`/api/v1/customers/${i}`).then(l=>{this.newInvoice.customer=l.data.data,this.newInvoice.customer_id=l.data.data.id,o(l)}).catch(l=>{ke(l),r(l)})})},fetchInvoiceTemplates(i){return new Promise((o,r)=>{ye.get("/api/v1/invoices/templates",{params:i}).then(l=>{this.templates=l.data.invoiceTemplates,o(l)}).catch(l=>{ke(l),r(l)})})},selectNote(i){this.newInvoice.selectedNote=null,this.newInvoice.selectedNote=i},setTemplate(i){this.newInvoice.template_name=i},resetSelectedCustomer(){this.newInvoice.customer=null,this.newInvoice.customer_id=null},addItem(){this.newInvoice.items.push({...nv,id:Qa.raw(),taxes:[{...Ci,id:Qa.raw()}]})},updateItem(i){Object.assign(this.newInvoice.items[i.index],{...i})},removeItem(i){this.newInvoice.items.splice(i,1)},deselectItem(i){this.newInvoice.items[i]={...nv,id:Qa.raw(),taxes:[{...Ci,id:Qa.raw()}]}},resetSelectedNote(){this.newInvoice.selectedNote=null},async fetchInvoiceInitialSettings(i){const o=er(),r=pc(),l=gp(),d=ic(),u=Zr(),_=Gs();if(this.isFetchingInitialSettings=!0,this.newInvoice.selectedCurrency=o.selectedCompanyCurrency,u.query.customer){let p=await r.fetchCustomer(u.query.customer);this.newInvoice.customer=p.data.data,this.newInvoice.customer_id=p.data.data.id}let f=[];i?f=[this.fetchInvoice(u.params.id)]:(this.newInvoice.tax_per_item=o.selectedCompanySettings.tax_per_item,this.newInvoice.sales_tax_type=o.selectedCompanySettings.sales_tax_type,this.newInvoice.sales_tax_address_type=o.selectedCompanySettings.sales_tax_address_type,this.newInvoice.discount_per_item=o.selectedCompanySettings.discount_per_item,this.newInvoice.invoice_date=Fe().format("YYYY-MM-DD"),o.selectedCompanySettings.invoice_set_due_date_automatically==="YES"&&(this.newInvoice.due_date=Fe().add(o.selectedCompanySettings.invoice_due_date_days,"days").format("YYYY-MM-DD"))),Promise.all([l.fetchItems({filter:{},orderByField:"",orderBy:""}),this.resetSelectedNote(),this.fetchInvoiceTemplates(),this.getNextNumber(),d.fetchTaxTypes({limit:"all"}),...f]).then(async([p,h,g,y,k,b])=>{i||(y.data&&(this.newInvoice.invoice_number=y.data.nextNumber),g.data&&(this.setTemplate(this.templates[0].name),this.newInvoice.template_name=_.currentUserSettings.default_invoice_template?_.currentUserSettings.default_invoice_template:this.newInvoice.template_name)),i&&this.addSalesTaxUs(),this.isFetchingInitialSettings=!1}).catch(p=>{ke(p),reject(p)})}}})()},Vge={class:"relative flex px-4 py-2 rounded-lg bg-opacity-40 bg-gray-300 whitespace-nowrap flex-col mt-1"},qge=ee("rect",{width:"37",height:"37",rx:"10",fill:"currentColor"},null,-1),Hge=ee("path",{d:"M16 10C15.7348 10 15.4804 10.1054 15.2929 10.2929C15.1054 10.4804 15 10.7348 15 11C15 11.2652 15.1054 11.5196 15.2929 11.7071C15.4804 11.8946 15.7348 12 16 12H18C18.2652 12 18.5196 11.8946 18.7071 11.7071C18.8946 11.5196 19 11.2652 19 11C19 10.7348 18.8946 10.4804 18.7071 10.2929C18.5196 10.1054 18.2652 10 18 10H16Z",fill:"white"},null,-1),Wge=ee("path",{d:"M11 13C11 12.4696 11.2107 11.9609 11.5858 11.5858C11.9609 11.2107 12.4696 11 13 11C13 11.7956 13.3161 12.5587 13.8787 13.1213C14.4413 13.6839 15.2044 14 16 14H18C18.7956 14 19.5587 13.6839 20.1213 13.1213C20.6839 12.5587 21 11.7956 21 11C21.5304 11 22.0391 11.2107 22.4142 11.5858C22.7893 11.9609 23 12.4696 23 13V19H18.414L19.707 17.707C19.8892 17.5184 19.99 17.2658 19.9877 17.0036C19.9854 16.7414 19.8802 16.4906 19.6948 16.3052C19.5094 16.1198 19.2586 16.0146 18.9964 16.0123C18.7342 16.01 18.4816 16.1108 18.293 16.293L15.293 19.293C15.1055 19.4805 15.0002 19.7348 15.0002 20C15.0002 20.2652 15.1055 20.5195 15.293 20.707L18.293 23.707C18.4816 23.8892 18.7342 23.99 18.9964 23.9877C19.2586 23.9854 19.5094 23.8802 19.6948 23.6948C19.8802 23.5094 19.9854 23.2586 19.9877 22.9964C19.99 22.7342 19.8892 22.4816 19.707 22.293L18.414 21H23V24C23 24.5304 22.7893 25.0391 22.4142 25.4142C22.0391 25.7893 21.5304 26 21 26H13C12.4696 26 11.9609 25.7893 11.5858 25.4142C11.2107 25.0391 11 24.5304 11 24V13ZM23 19H25C25.2652 19 25.5196 19.1054 25.7071 19.2929C25.8946 19.4804 26 19.7348 26 20C26 20.2652 25.8946 20.5196 25.7071 20.7071C25.5196 20.8946 25.2652 21 25 21H23V19Z",fill:"white"},null,-1),Kge=[qge,Hge,Wge],Yge={__name:"CopyInputField",props:{token:{type:String,default:null,required:!0}},setup(e){const t=gt(),a=le(""),{t:n}=Qs.useI18n();function i(r){let l;document.selection?(l=document.body.createTextRange(),l.moveToElementText(r),l.select()):window.getSelection&&(l=document.createRange(),l.selectNode(r),window.getSelection().removeAllRanges(),window.getSelection().addRange(l))}function o(){i(a.value),document.execCommand("copy"),t.showNotification({type:"success",message:n("general.copied_url_clipboard")})}return(r,l)=>{const d=Am("tooltip");return P(),ae("div",Vge,[ee("span",{ref_key:"publicUrl",ref:a,class:"pr-10 text-sm font-medium text-black truncate select-all select-color"},Ie(e.token),513),Ns((P(),ae("svg",{class:"absolute right-0 h-full inset-y-0 cursor-pointer focus:outline-none text-primary-500",width:"37",viewBox:"0 0 37 37",fill:"none",xmlns:"http://www.w3.org/2000/svg",onClick:o},Kge)),[[d,{content:"Copy to Clipboard"}]])])}}},iv={recurring_invoice_id:null,item_id:null,name:"",title:"",sales_tax_type:null,sales_tax_address_type:null,description:null,quantity:1,price:0,discount_type:"fixed",discount_val:0,discount:0,total:0,totalTax:0,totalSimpleTax:0,totalCompoundTax:0,tax:0,taxes:[]};function ax(){return{currency:null,customer:null,customer_id:null,invoice_template_id:1,sub_total:0,total:0,tax:0,notes:"",discount_type:"fixed",discount_val:0,discount:0,starts_at:null,send_automatically:!0,status:"ACTIVE",company_id:null,next_invoice_at:null,next_invoice_date:null,frequency:"0 0 * * 0",limit_count:null,limit_by:"NONE",limit_date:null,exchange_rate:null,tax_per_item:null,discount_per_item:null,template_name:null,items:[{...iv,id:Qa.raw(),taxes:[{...Ci,id:Qa.raw()}]}],taxes:[],customFields:[],fields:[],invoices:[],selectedNote:null,selectedFrequency:{label:"Every Week",value:"0 0 * * 0"},selectedInvoice:null}}const eA=(e=!1)=>{const t=e?window.pinia.defineStore:un,{global:a}=window.i18n;return t({id:"recurring-invoice",state:()=>({templates:[],recurringInvoices:[],selectedRecurringInvoices:[],totalRecurringInvoices:0,isFetchingInitialSettings:!1,isFetchingViewData:!1,showExchangeRate:!1,selectAllField:!1,newRecurringInvoice:{...ax()},frequencies:[{label:"Every Minute",value:"* * * * *"},{label:"Every 30 Minute",value:"*/30 * * * *"},{label:"Every Hour",value:"0 * * * *"},{label:"Every 2 Hour",value:"0 */2 * * *"},{label:"Every day at midnight ",value:"0 0 * * *"},{label:"Every Week",value:"0 0 * * 0"},{label:"Every 15 days at midnight",value:"0 5 */15 * *"},{label:"On the first day of every month at 00:00",value:"0 0 1 * *"},{label:"Every 6 Month",value:"0 0 1 */6 *"},{label:"Every year on the first day of january at 00:00",value:"0 0 1 1 *"},{label:"Custom",value:"CUSTOM"}]}),getters:{getSubTotal(){var n;return((n=this.newRecurringInvoice)==null?void 0:n.items.reduce(function(i,o){return i+o.total},0))||0},getTotalSimpleTax(){return Qi.sumBy(this.newRecurringInvoice.taxes,function(n){return n.compound_tax?0:n.amount})},getTotalCompoundTax(){return Qi.sumBy(this.newRecurringInvoice.taxes,function(n){return n.compound_tax?n.amount:0})},getTotalTax(){return this.newRecurringInvoice.tax_per_item==="NO"||this.newRecurringInvoice.tax_per_item===null?this.getTotalSimpleTax+this.getTotalCompoundTax:Qi.sumBy(this.newRecurringInvoice.items,function(n){return n.tax})},getSubtotalWithDiscount(){return this.getSubTotal-this.newRecurringInvoice.discount_val},getTotal(){return this.getSubtotalWithDiscount+this.getTotalTax}},actions:{resetCurrentRecurringInvoice(){this.newRecurringInvoice={...ax()}},deselectItem(n){this.newRecurringInvoice.items[n]={...iv,id:Qa.raw(),taxes:[{...Ci,id:Qa.raw()}]}},addRecurringInvoice(n){return new Promise((i,o)=>{ye.post("/api/v1/recurring-invoices",n).then(r=>{this.recurringInvoices=[...this.recurringInvoices,r.data.recurringInvoice],gt().showNotification({type:"success",message:a.t("recurring_invoices.created_message")}),i(r)}).catch(r=>{ke(r),o(r)})})},fetchRecurringInvoice(n){return new Promise((i,o)=>{this.isFetchingViewData=!0,ye.get(`/api/v1/recurring-invoices/${n}`).then(r=>{Object.assign(this.newRecurringInvoice,r.data.data),this.newRecurringInvoice.invoices=r.data.data.invoices||[],this.setSelectedFrequency(),this.isFetchingViewData=!1,i(r)}).catch(r=>{this.isFetchingViewData=!1,ke(r),o(r)})})},updateRecurringInvoice(n){return new Promise((i,o)=>{ye.put(`/api/v1/recurring-invoices/${n.id}`,n).then(r=>{i(r),gt().showNotification({type:"success",message:a.t("recurring_invoices.updated_message")});let d=this.recurringInvoices.findIndex(u=>u.id===r.data.data.id);this.recurringInvoices[d]=r.data.data}).catch(r=>{ke(r),o(r)})})},selectCustomer(n){return new Promise((i,o)=>{ye.get(`/api/v1/customers/${n}`).then(r=>{this.newRecurringInvoice.customer=r.data.data,this.newRecurringInvoice.customer_id=r.data.data.id,i(r)}).catch(r=>{ke(r),o(r)})})},searchRecurringInvoice(n){return new Promise((i,o)=>{ye.get(`/api/v1/recurring-invoices?${n}`).then(r=>{i(r)}).catch(r=>{ke(r),o(r)})})},fetchRecurringInvoices(n){return new Promise((i,o)=>{ye.get("/api/v1/recurring-invoices",{params:n}).then(r=>{this.recurringInvoices=r.data.data,this.totalRecurringInvoices=r.data.meta.recurring_invoice_total_count,i(r)}).catch(r=>{ke(r),o(r)})})},deleteRecurringInvoice(n){return new Promise((i,o)=>{ye.post("/api/v1/recurring-invoices/delete",n).then(r=>{let l=this.recurringInvoices.findIndex(d=>d.id===n);this.recurringInvoices.splice(l,1),i(r)}).catch(r=>{ke(r),o(r)})})},deleteMultipleRecurringInvoices(n){return new Promise((i,o)=>{let r=this.selectedRecurringInvoices;n&&(r=[n]),ye.post("/api/v1/recurring-invoices/delete",{ids:r}).then(l=>{this.selectedRecurringInvoices.forEach(d=>{let u=this.recurringInvoices.findIndex(_=>_.id===d.id);this.recurringInvoices.splice(u,1)}),this.selectedRecurringInvoices=[],i(l)}).catch(l=>{ke(l),o(l)})})},resetSelectedCustomer(){this.newRecurringInvoice.customer=null,this.newRecurringInvoice.customer_id=""},selectRecurringInvoice(n){this.selectedRecurringInvoices=n,this.selectedRecurringInvoices.length===this.recurringInvoices.length?this.selectAllField=!0:this.selectAllField=!1},selectAllRecurringInvoices(){if(this.selectedRecurringInvoices.length===this.recurringInvoices.length)this.selectedRecurringInvoices=[],this.selectAllField=!1;else{let n=this.recurringInvoices.map(i=>i.id);this.selectedRecurringInvoices=n,this.selectAllField=!0}},addItem(){this.newRecurringInvoice.items.push({...iv,id:Qa.raw(),taxes:[{...Ci,id:Qa.raw()}]})},removeItem(n){this.newRecurringInvoice.items.splice(n,1)},updateItem(n){Object.assign(this.newRecurringInvoice.items[n.index],{...n})},async fetchRecurringInvoiceInitialSettings(n){const i=er(),o=pc(),r=gp(),l=vp(),d=ic(),u=Zr();if(this.isFetchingInitialSettings=!0,this.newRecurringInvoice.currency=i.selectedCompanyCurrency,u.query.customer){let f=await o.fetchCustomer(u.query.customer);this.newRecurringInvoice.customer=f.data.data,this.selectCustomer(f.data.data.id)}let _=[];n?_=[this.fetchRecurringInvoice(u.params.id)]:(this.newRecurringInvoice.tax_per_item=i.selectedCompanySettings.tax_per_item,this.newRecurringInvoice.discount_per_item=i.selectedCompanySettings.discount_per_item,this.newRecurringInvoice.sales_tax_type=i.selectedCompanySettings.sales_tax_type,this.newRecurringInvoice.sales_tax_address_type=i.selectedCompanySettings.sales_tax_address_type,this.newRecurringInvoice.starts_at=Fe().format("YYYY-MM-DD"),this.newRecurringInvoice.next_invoice_date=Fe().add(7,"days").format("YYYY-MM-DD")),Promise.all([r.fetchItems({filter:{},orderByField:"",orderBy:""}),this.resetSelectedNote(),l.fetchInvoiceTemplates(),d.fetchTaxTypes({limit:"all"}),..._]).then(async([f,p,h,g,y])=>{var k,b;h.data&&(this.templates=l.templates),n||this.setTemplate(this.templates[0].name),n&&(y!=null&&y.data)&&({...y.data.data},this.setTemplate((b=(k=y==null?void 0:y.data)==null?void 0:k.data)==null?void 0:b.template_name)),n&&this.addSalesTaxUs(),this.isFetchingInitialSettings=!1}).catch(f=>{console.log(f),ke(f)})},addSalesTaxUs(){const n=ic();let i={...Ci},o=this.newRecurringInvoice.taxes.find(r=>r.name==="Sales Tax"&&r.type==="MODULE");if(o){for(const r in o)Object.prototype.hasOwnProperty.call(i,r)&&(i[r]=o[r]);i.id=o.tax_type_id,n.taxTypes.push(i)}},setTemplate(n){this.newRecurringInvoice.template_name=n},setSelectedFrequency(){let n=this.frequencies.find(i=>i.value===this.newRecurringInvoice.frequency);n?this.newRecurringInvoice.selectedFrequency=n:this.newRecurringInvoice.selectedFrequency={label:"Custom",value:"CUSTOM"}},resetSelectedNote(){this.newRecurringInvoice.selectedNote=null},fetchRecurringInvoiceFrequencyDate(n){return new Promise((i,o)=>{ye.get("/api/v1/recurring-invoice-frequency",{params:n}).then(r=>{this.newRecurringInvoice.next_invoice_at=r.data.next_invoice_at,i(r)}).catch(r=>{gt().showNotification({type:"error",message:a.t("errors.enter_valid_cron_format")}),o(r)})})}}})()},Zge={class:"flex justify-between w-full"},Gge={class:"px-6 pb-3"},Qge={class:"md:col-span-2"},Jge={class:"text-sm text-gray-500"},Xge={class:"grid md:grid-cols-12"},eve={class:"flex justify-end col-span-12"},tve={class:"z-0 flex justify-end p-4 border-t border-gray-200 border-solid"},tA={__name:"CustomerModal",setup(e){const t=eA(),a=Wd(),n=ub(),i=pc(),o=er(),r=Um(),l=vp(),d=gt();let u=le(!1);const{t:_}=Qs.useI18n(),f=Zr();le(!1);const p=le(!1);let h=le(!1),g=le(!1);const y=V(()=>a.active&&a.componentName==="CustomerModal"),k=V(()=>({name:{required:jn.withMessage(_("validation.required"),H2),minLength:jn.withMessage(_("validation.name_min_length",{count:3}),Nh(3))},currency_id:{required:jn.withMessage(_("validation.required"),H2)},password:{required:jn.withMessage(_("validation.required"),K2(i.currentCustomer.enable_portal==!0&&!i.currentCustomer.password_added)),minLength:jn.withMessage(_("validation.password_min_length",{count:8}),Nh(8))},confirm_password:{sameAsPassword:jn.withMessage(_("validation.password_incorrect"),Mme(i.currentCustomer.password))},email:{required:jn.withMessage(_("validation.required"),K2(i.currentCustomer.enable_portal==!0)),email:jn.withMessage(_("validation.email_incorrect"),Cme)},prefix:{minLength:jn.withMessage(_("validation.name_min_length",{count:3}),Nh(3))},website:{url:jn.withMessage(_("validation.invalid_url"),$me)},billing:{address_street_1:{maxLength:jn.withMessage(_("validation.address_maxlength",{count:255}),m_(255))},address_street_2:{maxLength:jn.withMessage(_("validation.address_maxlength",{count:255}),m_(255))}},shipping:{address_street_1:{maxLength:jn.withMessage(_("validation.address_maxlength",{count:255}),m_(255))},address_street_2:{maxLength:jn.withMessage(_("validation.address_maxlength",{count:255}),m_(255))}}})),b=Pg(k,V(()=>i.currentCustomer)),z=V(()=>`${window.location.origin}/${o.selectedCompany.slug}/customer/login`);function w(){i.copyAddress()}async function D(){i.isEdit||(i.currentCustomer.currency_id=o.selectedCompanyCurrency.id)}async function E(){if(b.value.$touch(),b.value.$invalid&&i.currentCustomer.email===""&&d.showNotification({type:"error",message:_("settings.notification.please_enter_email")}),b.value.$invalid)return!0;p.value=!0;let N={...i.currentCustomer};try{let j=null;i.isEdit?j=await i.updateCustomer(N):j=await i.addCustomer(N),j.data&&(p.value=!1,(f.name==="invoices.create"||f.name==="invoices.edit")&&l.selectCustomer(j.data.data.id),(f.name==="estimates.create"||f.name==="estimates.edit")&&n.selectCustomer(j.data.data.id),(f.name==="recurring-invoices.create"||f.name==="recurring-invoices.edit")&&t.selectCustomer(j.data.data.id),T())}catch(j){console.error(j),p.value=!1}}function T(){a.closeModal(),setTimeout(()=>{i.resetCurrentCustomer(),b.value.$reset()},300)}return(N,j)=>{const q=Ue("BaseIcon"),H=Ue("BaseInput"),te=Ue("BaseInputGroup"),X=Ue("BaseMultiselect"),oe=Ue("BaseInputGrid"),Te=Ue("BaseTab"),Ae=Ue("BaseSwitch"),de=Ue("BaseTextarea"),Ce=Ue("BaseButton"),Pe=Ue("BaseTabGroup"),Ke=Ue("BaseModal");return P(),R(Ke,{show:y.value,onClose:T,onOpen:D},{header:me(()=>[ee("div",Zge,[$t(Ie(L(a).title)+" ",1),C(q,{name:"XIcon",class:"h-6 w-6 text-gray-500 cursor-pointer",onClick:T})])]),default:me(()=>[ee("form",{action:"",onSubmit:zi(E,["prevent"])},[ee("div",Gge,[C(Pe,null,{default:me(()=>[C(Te,{title:N.$t("customers.basic_info"),class:"!mt-2"},{default:me(()=>[C(oe,{layout:"one-column"},{default:me(()=>[C(te,{label:N.$t("customers.display_name"),required:"",error:L(b).name.$error&&L(b).name.$errors[0].$message},{default:me(()=>[C(H,{modelValue:L(i).currentCustomer.name,"onUpdate:modelValue":j[0]||(j[0]=re=>L(i).currentCustomer.name=re),modelModifiers:{trim:!0},type:"text",name:"name",class:"mt-1 md:mt-0",invalid:L(b).name.$error,onInput:j[1]||(j[1]=re=>L(b).name.$touch())},null,8,["modelValue","invalid"])]),_:1},8,["label","error"]),C(te,{label:N.$t("settings.currencies.currency"),required:"",error:L(b).currency_id.$error&&L(b).currency_id.$errors[0].$message},{default:me(()=>[C(X,{modelValue:L(i).currentCustomer.currency_id,"onUpdate:modelValue":j[2]||(j[2]=re=>L(i).currentCustomer.currency_id=re),options:L(r).currencies,"value-prop":"id",searchable:"",placeholder:N.$t("customers.select_currency"),"max-height":200,class:"mt-1 md:mt-0","track-by":"name",invalid:L(b).currency_id.$error,label:"name"},null,8,["modelValue","options","placeholder","invalid"])]),_:1},8,["label","error"]),C(te,{label:N.$t("customers.primary_contact_name")},{default:me(()=>[C(H,{modelValue:L(i).currentCustomer.contact_name,"onUpdate:modelValue":j[3]||(j[3]=re=>L(i).currentCustomer.contact_name=re),type:"text",class:"mt-1 md:mt-0"},null,8,["modelValue"])]),_:1},8,["label"]),C(te,{label:N.$t("login.email"),error:L(b).email.$error&&L(b).email.$errors[0].$message},{default:me(()=>[C(H,{modelValue:L(i).currentCustomer.email,"onUpdate:modelValue":j[4]||(j[4]=re=>L(i).currentCustomer.email=re),modelModifiers:{trim:!0},type:"text",name:"email",class:"mt-1 md:mt-0",invalid:L(b).email.$error,onInput:j[5]||(j[5]=re=>L(b).email.$touch())},null,8,["modelValue","invalid"])]),_:1},8,["label","error"]),C(te,{label:N.$t("customers.prefix"),error:L(b).prefix.$error&&L(b).prefix.$errors[0].$message,"content-loading":L(u)},{default:me(()=>[C(H,{modelValue:L(i).currentCustomer.prefix,"onUpdate:modelValue":j[6]||(j[6]=re=>L(i).currentCustomer.prefix=re),"content-loading":L(u),type:"text",name:"name",class:"",invalid:L(b).prefix.$error,onInput:j[7]||(j[7]=re=>L(b).prefix.$touch())},null,8,["modelValue","content-loading","invalid"])]),_:1},8,["label","error","content-loading"]),C(oe,null,{default:me(()=>[C(te,{label:N.$t("customers.phone")},{default:me(()=>[C(H,{modelValue:L(i).currentCustomer.phone,"onUpdate:modelValue":j[8]||(j[8]=re=>L(i).currentCustomer.phone=re),modelModifiers:{trim:!0},type:"text",name:"phone",class:"mt-1 md:mt-0"},null,8,["modelValue"])]),_:1},8,["label"]),C(te,{label:N.$t("customers.website"),error:L(b).website.$error&&L(b).website.$errors[0].$message},{default:me(()=>[C(H,{modelValue:L(i).currentCustomer.website,"onUpdate:modelValue":j[9]||(j[9]=re=>L(i).currentCustomer.website=re),type:"url",class:"mt-1 md:mt-0",invalid:L(b).website.$error,onInput:j[10]||(j[10]=re=>L(b).website.$touch())},null,8,["modelValue","invalid"])]),_:1},8,["label","error"])]),_:1})]),_:1})]),_:1},8,["title"]),C(Te,{title:N.$t("customers.portal_access")},{default:me(()=>[C(oe,{class:"col-span-5 lg:col-span-4"},{default:me(()=>[ee("div",Qge,[ee("p",Jge,Ie(N.$t("customers.portal_access_text")),1),C(Ae,{modelValue:L(i).currentCustomer.enable_portal,"onUpdate:modelValue":j[11]||(j[11]=re=>L(i).currentCustomer.enable_portal=re),class:"mt-1 flex"},null,8,["modelValue"])]),L(i).currentCustomer.enable_portal?(P(),R(te,{key:0,"content-loading":L(u),label:N.$t("customers.portal_access_url"),class:"md:col-span-2","help-text":N.$t("customers.portal_access_url_help")},{default:me(()=>[C(Yge,{token:z.value},null,8,["token"])]),_:1},8,["content-loading","label","help-text"])):Re("",!0),L(i).currentCustomer.enable_portal?(P(),R(te,{key:1,"content-loading":L(u),error:L(b).password.$error&&L(b).password.$errors[0].$message,label:N.$t("customers.password")},{default:me(()=>[C(H,{modelValue:L(i).currentCustomer.password,"onUpdate:modelValue":j[14]||(j[14]=re=>L(i).currentCustomer.password=re),modelModifiers:{trim:!0},"content-loading":L(u),type:L(h)?"text":"password",name:"password",invalid:L(b).password.$error,onInput:j[15]||(j[15]=re=>L(b).password.$touch())},{right:me(()=>[L(h)?(P(),R(q,{key:0,name:"EyeOffIcon",class:"w-5 h-5 mr-1 text-gray-500 cursor-pointer",onClick:j[12]||(j[12]=re=>ea(h)?h.value=!L(h):h=!L(h))})):(P(),R(q,{key:1,name:"EyeIcon",class:"w-5 h-5 mr-1 text-gray-500 cursor-pointer",onClick:j[13]||(j[13]=re=>ea(h)?h.value=!L(h):h=!L(h))}))]),_:1},8,["modelValue","content-loading","type","invalid"])]),_:1},8,["content-loading","error","label"])):Re("",!0),L(i).currentCustomer.enable_portal?(P(),R(te,{key:2,error:L(b).confirm_password.$error&&L(b).confirm_password.$errors[0].$message,"content-loading":L(u),label:"Confirm Password"},{default:me(()=>[C(H,{modelValue:L(i).currentCustomer.confirm_password,"onUpdate:modelValue":j[18]||(j[18]=re=>L(i).currentCustomer.confirm_password=re),modelModifiers:{trim:!0},"content-loading":L(u),type:L(g)?"text":"password",name:"confirm_password",invalid:L(b).confirm_password.$error,onInput:j[19]||(j[19]=re=>L(b).confirm_password.$touch())},{right:me(()=>[L(g)?(P(),R(q,{key:0,name:"EyeOffIcon",class:"w-5 h-5 mr-1 text-gray-500 cursor-pointer",onClick:j[16]||(j[16]=re=>ea(g)?g.value=!L(g):g=!L(g))})):(P(),R(q,{key:1,name:"EyeIcon",class:"w-5 h-5 mr-1 text-gray-500 cursor-pointer",onClick:j[17]||(j[17]=re=>ea(g)?g.value=!L(g):g=!L(g))}))]),_:1},8,["modelValue","content-loading","type","invalid"])]),_:1},8,["error","content-loading"])):Re("",!0)]),_:1})]),_:1},8,["title"]),C(Te,{title:N.$t("customers.billing_address"),class:"!mt-2"},{default:me(()=>[C(oe,{layout:"one-column"},{default:me(()=>[C(te,{label:N.$t("customers.name")},{default:me(()=>[C(H,{modelValue:L(i).currentCustomer.billing.name,"onUpdate:modelValue":j[20]||(j[20]=re=>L(i).currentCustomer.billing.name=re),type:"text",class:"mt-1 md:mt-0"},null,8,["modelValue"])]),_:1},8,["label"]),C(te,{label:N.$t("customers.country")},{default:me(()=>[C(X,{modelValue:L(i).currentCustomer.billing.country_id,"onUpdate:modelValue":j[21]||(j[21]=re=>L(i).currentCustomer.billing.country_id=re),options:L(r).countries,searchable:"","show-labels":!1,placeholder:N.$t("general.select_country"),"allow-empty":!1,"track-by":"name",class:"mt-1 md:mt-0",label:"name","value-prop":"id"},null,8,["modelValue","options","placeholder"])]),_:1},8,["label"]),C(te,{label:N.$t("customers.state")},{default:me(()=>[C(H,{modelValue:L(i).currentCustomer.billing.state,"onUpdate:modelValue":j[22]||(j[22]=re=>L(i).currentCustomer.billing.state=re),type:"text",name:"billingState",class:"mt-1 md:mt-0"},null,8,["modelValue"])]),_:1},8,["label"]),C(te,{label:N.$t("customers.city")},{default:me(()=>[C(H,{modelValue:L(i).currentCustomer.billing.city,"onUpdate:modelValue":j[23]||(j[23]=re=>L(i).currentCustomer.billing.city=re),type:"text",name:"billingCity",class:"mt-1 md:mt-0"},null,8,["modelValue"])]),_:1},8,["label"]),C(te,{label:N.$t("customers.address"),error:L(b).billing.address_street_1.$error&&L(b).billing.address_street_1.$errors[0].$message},{default:me(()=>[C(de,{modelValue:L(i).currentCustomer.billing.address_street_1,"onUpdate:modelValue":j[24]||(j[24]=re=>L(i).currentCustomer.billing.address_street_1=re),placeholder:N.$t("general.street_1"),rows:"2",cols:"50",class:"mt-1 md:mt-0",invalid:L(b).billing.address_street_1.$error,onInput:j[25]||(j[25]=re=>L(b).billing.address_street_1.$touch())},null,8,["modelValue","placeholder","invalid"])]),_:1},8,["label","error"])]),_:1}),C(oe,{layout:"one-column"},{default:me(()=>[C(te,{error:L(b).billing.address_street_2.$error&&L(b).billing.address_street_2.$errors[0].$message},{default:me(()=>[C(de,{modelValue:L(i).currentCustomer.billing.address_street_2,"onUpdate:modelValue":j[26]||(j[26]=re=>L(i).currentCustomer.billing.address_street_2=re),placeholder:N.$t("general.street_2"),rows:"2",cols:"50",invalid:L(b).billing.address_street_2.$error,onInput:j[27]||(j[27]=re=>L(b).billing.address_street_2.$touch())},null,8,["modelValue","placeholder","invalid"])]),_:1},8,["error"]),C(te,{label:N.$t("customers.phone")},{default:me(()=>[C(H,{modelValue:L(i).currentCustomer.billing.phone,"onUpdate:modelValue":j[28]||(j[28]=re=>L(i).currentCustomer.billing.phone=re),modelModifiers:{trim:!0},type:"text",name:"phone",class:"mt-1 md:mt-0"},null,8,["modelValue"])]),_:1},8,["label"]),C(te,{label:N.$t("customers.zip_code")},{default:me(()=>[C(H,{modelValue:L(i).currentCustomer.billing.zip,"onUpdate:modelValue":j[29]||(j[29]=re=>L(i).currentCustomer.billing.zip=re),type:"text",class:"mt-1 md:mt-0"},null,8,["modelValue"])]),_:1},8,["label"])]),_:1})]),_:1},8,["title"]),C(Te,{title:N.$t("customers.shipping_address"),class:"!mt-2"},{default:me(()=>[ee("div",Xge,[ee("div",eve,[C(Ce,{variant:"primary",type:"button",size:"xs",onClick:j[30]||(j[30]=re=>w(!0))},{default:me(()=>[$t(Ie(N.$t("customers.copy_billing_address")),1)]),_:1})])]),C(oe,{layout:"one-column"},{default:me(()=>[C(te,{label:N.$t("customers.name")},{default:me(()=>[C(H,{modelValue:L(i).currentCustomer.shipping.name,"onUpdate:modelValue":j[31]||(j[31]=re=>L(i).currentCustomer.shipping.name=re),type:"text",class:"mt-1 md:mt-0"},null,8,["modelValue"])]),_:1},8,["label"]),C(te,{label:N.$t("customers.country")},{default:me(()=>[C(X,{modelValue:L(i).currentCustomer.shipping.country_id,"onUpdate:modelValue":j[32]||(j[32]=re=>L(i).currentCustomer.shipping.country_id=re),options:L(r).countries,searchable:!0,"show-labels":!1,"allow-empty":!1,placeholder:N.$t("general.select_country"),"track-by":"name",class:"mt-1 md:mt-0",label:"name","value-prop":"id"},null,8,["modelValue","options","placeholder"])]),_:1},8,["label"]),C(te,{label:N.$t("customers.state")},{default:me(()=>[C(H,{modelValue:L(i).currentCustomer.shipping.state,"onUpdate:modelValue":j[33]||(j[33]=re=>L(i).currentCustomer.shipping.state=re),type:"text",name:"shippingState",class:"mt-1 md:mt-0"},null,8,["modelValue"])]),_:1},8,["label"]),C(te,{label:N.$t("customers.city")},{default:me(()=>[C(H,{modelValue:L(i).currentCustomer.shipping.city,"onUpdate:modelValue":j[34]||(j[34]=re=>L(i).currentCustomer.shipping.city=re),type:"text",name:"shippingCity",class:"mt-1 md:mt-0"},null,8,["modelValue"])]),_:1},8,["label"]),C(te,{label:N.$t("customers.address"),error:L(b).shipping.address_street_1.$error&&L(b).shipping.address_street_1.$errors[0].$message},{default:me(()=>[C(de,{modelValue:L(i).currentCustomer.shipping.address_street_1,"onUpdate:modelValue":j[35]||(j[35]=re=>L(i).currentCustomer.shipping.address_street_1=re),placeholder:N.$t("general.street_1"),rows:"2",cols:"50",class:"mt-1 md:mt-0",invalid:L(b).shipping.address_street_1.$error,onInput:j[36]||(j[36]=re=>L(b).shipping.address_street_1.$touch())},null,8,["modelValue","placeholder","invalid"])]),_:1},8,["label","error"])]),_:1}),C(oe,{layout:"one-column"},{default:me(()=>[C(te,{error:L(b).shipping.address_street_2.$error&&L(b).shipping.address_street_2.$errors[0].$message},{default:me(()=>[C(de,{modelValue:L(i).currentCustomer.shipping.address_street_2,"onUpdate:modelValue":j[37]||(j[37]=re=>L(i).currentCustomer.shipping.address_street_2=re),placeholder:N.$t("general.street_2"),rows:"2",cols:"50",invalid:L(b).shipping.address_street_1.$error,onInput:j[38]||(j[38]=re=>L(b).shipping.address_street_2.$touch())},null,8,["modelValue","placeholder","invalid"])]),_:1},8,["error"]),C(te,{label:N.$t("customers.phone")},{default:me(()=>[C(H,{modelValue:L(i).currentCustomer.shipping.phone,"onUpdate:modelValue":j[39]||(j[39]=re=>L(i).currentCustomer.shipping.phone=re),modelModifiers:{trim:!0},type:"text",name:"phone",class:"mt-1 md:mt-0"},null,8,["modelValue"])]),_:1},8,["label"]),C(te,{label:N.$t("customers.zip_code")},{default:me(()=>[C(H,{modelValue:L(i).currentCustomer.shipping.zip,"onUpdate:modelValue":j[40]||(j[40]=re=>L(i).currentCustomer.shipping.zip=re),type:"text",class:"mt-1 md:mt-0"},null,8,["modelValue"])]),_:1},8,["label"])]),_:1})]),_:1},8,["title"])]),_:1})]),ee("div",tve,[C(Ce,{class:"mr-3 text-sm",type:"button",variant:"primary-outline",onClick:T},{default:me(()=>[$t(Ie(N.$t("general.cancel")),1)]),_:1}),C(Ce,{loading:p.value,variant:"primary",type:"submit"},{left:me(re=>[p.value?Re("",!0):(P(),R(q,{key:0,name:"SaveIcon",class:Be(re.class)},null,8,["class"]))]),default:me(()=>[$t(" "+Ie(N.$t("general.save")),1)]),_:1},8,["loading"])])],32)]),_:1},8,["show"])}}},ave={__name:"BaseCustomerSelectInput",props:{modelValue:{type:[String,Number,Object],default:""},fetchAll:{type:Boolean,default:!1},showAction:{type:Boolean,default:!1}},emits:["update:modelValue"],setup(e,{emit:t}){const a=e,{t:n}=Qs.useI18n(),i=t,o=Wd(),r=pc(),l=Gs(),d=V({get:()=>a.modelValue,set:f=>{i("update:modelValue",f)}});async function u(f){let p={search:f};a.fetchAll&&(p.limit="all");let h=await r.fetchCustomers(p);if(h.data.data.length>0&&r.editCustomer&&!h.data.data.find(y=>y.id==r.editCustomer.id)){let y=Object.assign({},r.editCustomer);h.data.data.unshift(y)}return h.data.data}async function _(){r.resetCurrentCustomer(),o.openModal({title:n("customers.add_new_customer"),componentName:"CustomerModal"})}return(f,p)=>{const h=Ue("BaseIcon"),g=Ue("BaseSelectAction"),y=Ue("BaseMultiselect");return P(),ae(yt,null,[C(y,Dn({modelValue:d.value,"onUpdate:modelValue":p[0]||(p[0]=k=>d.value=k)},f.$attrs,{"track-by":"name","value-prop":"id",label:"name","filter-results":!1,"resolve-on-load":"",delay:500,searchable:!0,options:u,"label-value":"name",placeholder:f.$t("customers.type_or_click"),"can-deselect":!1,class:"w-full"}),eS({_:2},[e.showAction?{name:"action",fn:me(()=>[L(l).hasAbilities(L(Nt).CREATE_CUSTOMER)?(P(),R(g,{key:0,onClick:_},{default:me(()=>[C(h,{name:"UserAddIcon",class:"h-4 mr-2 -ml-2 text-center text-primary-400"}),$t(" "+Ie(f.$t("customers.add_new_customer")),1)]),_:1})):Re("",!0)]),key:"0"}:void 0]),1040,["modelValue","placeholder"]),C(tA)],64)}}},nve=Object.freeze(Object.defineProperty({__proto__:null,default:ave},Symbol.toStringTag,{value:"Module"}));function _b(e,t,a){let n=le(a==null?void 0:a.value),i=V(()=>e.value!==void 0);return[V(()=>i.value?e.value:n.value),function(o){return i.value||(n.value=o),t==null?void 0:t(o)}]}let ive=0;function ove(){return++ive}function za(){return ove()}function fe(e){var t;if(e==null||e.value==null)return null;let a=(t=e.value.$el)!=null?t:e.value;return a instanceof Node?a:null}function oa(e,t,...a){if(e in t){let i=t[e];return typeof i=="function"?i(...a):i}let n=new Error(`Tried to handle "${e}" but there is no handler defined. Only defined handlers are: ${Object.keys(t).map(i=>`"${i}"`).join(", ")}.`);throw Error.captureStackTrace&&Error.captureStackTrace(n,oa),n}var rve=Object.defineProperty,sve=(e,t,a)=>t in e?rve(e,t,{enumerable:!0,configurable:!0,writable:!0,value:a}):e[t]=a,nx=(e,t,a)=>(sve(e,typeof t!="symbol"?t+"":t,a),a);let lve=class{constructor(){nx(this,"current",this.detect()),nx(this,"currentId",0)}set(t){this.current!==t&&(this.currentId=0,this.current=t)}reset(){this.set(this.detect())}nextId(){return++this.currentId}get isServer(){return this.current==="server"}get isClient(){return this.current==="client"}detect(){return typeof window>"u"||typeof document>"u"?"server":"client"}},Qd=new lve;function xn(e){if(Qd.isServer)return null;if(e instanceof Node)return e.ownerDocument;if(e!=null&&e.hasOwnProperty("value")){let t=fe(e);if(t)return t.ownerDocument}return document}let ov=["[contentEditable=true]","[tabindex]","a[href]","area[href]","button:not([disabled])","iframe","input:not([disabled])","select:not([disabled])","textarea:not([disabled])"].map(e=>`${e}:not([tabindex='-1'])`).join(",");var Kt=(e=>(e[e.First=1]="First",e[e.Previous=2]="Previous",e[e.Next=4]="Next",e[e.Last=8]="Last",e[e.WrapAround=16]="WrapAround",e[e.NoScroll=32]="NoScroll",e))(Kt||{}),Zi=(e=>(e[e.Error=0]="Error",e[e.Overflow=1]="Overflow",e[e.Success=2]="Success",e[e.Underflow=3]="Underflow",e))(Zi||{}),cve=(e=>(e[e.Previous=-1]="Previous",e[e.Next=1]="Next",e))(cve||{});function Jd(e=document.body){return e==null?[]:Array.from(e.querySelectorAll(ov)).sort((t,a)=>Math.sign((t.tabIndex||Number.MAX_SAFE_INTEGER)-(a.tabIndex||Number.MAX_SAFE_INTEGER)))}var Xd=(e=>(e[e.Strict=0]="Strict",e[e.Loose=1]="Loose",e))(Xd||{});function eu(e,t=0){var a;return e===((a=xn(e))==null?void 0:a.body)?!1:oa(t,{0(){return e.matches(ov)},1(){let n=e;for(;n!==null;){if(n.matches(ov))return!0;n=n.parentElement}return!1}})}function aA(e){let t=xn(e);ha(()=>{t&&!eu(t.activeElement,0)&&Lr(e)})}var dve=(e=>(e[e.Keyboard=0]="Keyboard",e[e.Mouse=1]="Mouse",e))(dve||{});typeof window<"u"&&typeof document<"u"&&(document.addEventListener("keydown",e=>{e.metaKey||e.altKey||e.ctrlKey||(document.documentElement.dataset.headlessuiFocusVisible="")},!0),document.addEventListener("click",e=>{e.detail===1?delete document.documentElement.dataset.headlessuiFocusVisible:e.detail===0&&(document.documentElement.dataset.headlessuiFocusVisible="")},!0));function Lr(e){e==null||e.focus({preventScroll:!0})}let uve=["textarea","input"].join(",");function _ve(e){var t,a;return(a=(t=e==null?void 0:e.matches)==null?void 0:t.call(e,uve))!=null?a:!1}function Uo(e,t=a=>a){return e.slice().sort((a,n)=>{let i=t(a),o=t(n);if(i===null||o===null)return 0;let r=i.compareDocumentPosition(o);return r&Node.DOCUMENT_POSITION_FOLLOWING?-1:r&Node.DOCUMENT_POSITION_PRECEDING?1:0})}function mve(e,t){return Ra(Jd(),t,{relativeTo:e})}function Ra(e,t,{sorted:a=!0,relativeTo:n=null,skipElements:i=[]}={}){var o;let r=(o=Array.isArray(e)?e.length>0?e[0].ownerDocument:document:e==null?void 0:e.ownerDocument)!=null?o:document,l=Array.isArray(e)?a?Uo(e):e:Jd(e);i.length>0&&l.length>1&&(l=l.filter(g=>!i.includes(g))),n=n??r.activeElement;let d=(()=>{if(t&5)return 1;if(t&10)return-1;throw new Error("Missing Focus.First, Focus.Previous, Focus.Next or Focus.Last")})(),u=(()=>{if(t&1)return 0;if(t&2)return Math.max(0,l.indexOf(n))-1;if(t&4)return Math.max(0,l.indexOf(n))+1;if(t&8)return l.length-1;throw new Error("Missing Focus.First, Focus.Previous, Focus.Next or Focus.Last")})(),_=t&32?{preventScroll:!0}:{},f=0,p=l.length,h;do{if(f>=p||f+p<=0)return 0;let g=u+f;if(t&16)g=(g+p)%p;else{if(g<0)return 3;if(g>=p)return 1}h=l[g],h==null||h.focus(_),f+=d}while(h!==r.activeElement);return t&6&&_ve(h)&&h.select(),2}function nA(){return/iPhone/gi.test(window.navigator.platform)||/Mac/gi.test(window.navigator.platform)&&window.navigator.maxTouchPoints>0}function pve(){return/Android/gi.test(window.navigator.userAgent)}function fve(){return nA()||pve()}function h_(e,t,a){Qd.isServer||Ca(n=>{document.addEventListener(e,t,a),n(()=>document.removeEventListener(e,t,a))})}function iA(e,t,a){Qd.isServer||Ca(n=>{window.addEventListener(e,t,a),n(()=>window.removeEventListener(e,t,a))})}function yp(e,t,a=V(()=>!0)){function n(o,r){if(!a.value||o.defaultPrevented)return;let l=r(o);if(l===null||!l.getRootNode().contains(l))return;let d=function u(_){return typeof _=="function"?u(_()):Array.isArray(_)||_ instanceof Set?_:[_]}(e);for(let u of d){if(u===null)continue;let _=u instanceof HTMLElement?u:fe(u);if(_!=null&&_.contains(l)||o.composed&&o.composedPath().includes(_))return}return!eu(l,Xd.Loose)&&l.tabIndex!==-1&&o.preventDefault(),t(o,l)}let i=le(null);h_("pointerdown",o=>{var r,l;a.value&&(i.value=((l=(r=o.composedPath)==null?void 0:r.call(o))==null?void 0:l[0])||o.target)},!0),h_("mousedown",o=>{var r,l;a.value&&(i.value=((l=(r=o.composedPath)==null?void 0:r.call(o))==null?void 0:l[0])||o.target)},!0),h_("click",o=>{fve()||i.value&&(n(o,()=>i.value),i.value=null)},!0),h_("touchend",o=>n(o,()=>o.target instanceof HTMLElement?o.target:null),!0),iA("blur",o=>n(o,()=>window.document.activeElement instanceof HTMLIFrameElement?window.document.activeElement:null),!0)}function ix(e,t){if(e)return e;let a=t??"button";if(typeof a=="string"&&a.toLowerCase()==="button")return"button"}function tu(e,t){let a=le(ix(e.value.type,e.value.as));return Ct(()=>{a.value=ix(e.value.type,e.value.as)}),Ca(()=>{var n;a.value||fe(t)&&fe(t)instanceof HTMLButtonElement&&!((n=fe(t))!=null&&n.hasAttribute("type"))&&(a.value="button")}),a}function ox(e){return[e.screenX,e.screenY]}function oA(){let e=le([-1,-1]);return{wasMoved(t){let a=ox(t);return e.value[0]===a[0]&&e.value[1]===a[1]?!1:(e.value=a,!0)},update(t){e.value=ox(t)}}}function rA({container:e,accept:t,walk:a,enabled:n}){Ca(()=>{let i=e.value;if(!i||n!==void 0&&!n.value)return;let o=xn(e);if(!o)return;let r=Object.assign(d=>t(d),{acceptNode:t}),l=o.createTreeWalker(i,NodeFilter.SHOW_ELEMENT,r,!1);for(;l.nextNode();)a(l.currentNode)})}var Ni=(e=>(e[e.None=0]="None",e[e.RenderStrategy=1]="RenderStrategy",e[e.Static=2]="Static",e))(Ni||{}),Mr=(e=>(e[e.Unmount=0]="Unmount",e[e.Hidden=1]="Hidden",e))(Mr||{});function qt({visible:e=!0,features:t=0,ourProps:a,theirProps:n,...i}){var o;let r=lA(n,a),l=Object.assign(i,{props:r});if(e||t&2&&r.static)return $h(l);if(t&1){let d=(o=r.unmount)==null||o?0:1;return oa(d,{0(){return null},1(){return $h({...i,props:{...r,hidden:!0,style:{display:"none"}}})}})}return $h(l)}function $h({props:e,attrs:t,slots:a,slot:n,name:i}){var o,r;let{as:l,...d}=vc(e,["unmount","static"]),u=(o=a.default)==null?void 0:o.call(a,n),_={};if(n){let f=!1,p=[];for(let[h,g]of Object.entries(n))typeof g=="boolean"&&(f=!0),g===!0&&p.push(h);f&&(_["data-headlessui-state"]=p.join(" "))}if(l==="template"){if(u=sA(u??[]),Object.keys(d).length>0||Object.keys(t).length>0){let[f,...p]=u??[];if(!hve(f)||p.length>0)throw new Error(['Passing props on "template"!',"",`The current component <${i} /> is rendering a "template".`,"However we need to passthrough the following props:",Object.keys(d).concat(Object.keys(t)).map(y=>y.trim()).filter((y,k,b)=>b.indexOf(y)===k).sort((y,k)=>y.localeCompare(k)).map(y=>` - ${y}`).join(` `),"","You can apply a few solutions:",['Add an `as="..."` prop, to ensure that we render an actual element instead of a "template".',"Render a single element as the child so that we can forward the props onto that element."].map(y=>` - ${y}`).join(` `)].join(` -`));let h=lC((s=f.props)!=null?s:{},d,_),g=Xi(f,h,!0);for(let y in h)y.startsWith("on")&&(g.props||(g.props={}),g.props[y]=h[y]);return g}return Array.isArray(u)&&u.length===1?u[0]:u}return Et(l,Object.assign({},d,_),{default:()=>u})}function rC(e){return e.flatMap(t=>t.type===yt?rC(t.children):[t])}function lC(...e){if(e.length===0)return{};if(e.length===1)return e[0];let t={},a={};for(let n of e)for(let i in n)i.startsWith("on")&&typeof n[i]=="function"?(a[i]!=null||(a[i]=[]),a[i].push(n[i])):t[i]=n[i];if(t.disabled||t["aria-disabled"])return Object.assign(t,Object.fromEntries(Object.keys(a).map(n=>[n,void 0])));for(let n in a)Object.assign(t,{[n](i,...o){let s=a[n];for(let l of s){if(i instanceof Event&&i.defaultPrevented)return;l(i,...o)}}});return t}function mb(e){let t=Object.assign({},e);for(let a in t)t[a]===void 0&&delete t[a];return t}function vc(e,t=[]){let a=Object.assign({},e);for(let n of t)n in a&&delete a[n];return a}function vve(e){return e==null?!1:typeof e.type=="string"||typeof e.type=="object"||typeof e.type=="function"}var no=(e=>(e[e.None=1]="None",e[e.Focusable=2]="Focusable",e[e.Hidden=4]="Hidden",e))(no||{});let io=kt({name:"Hidden",props:{as:{type:[Object,String],default:"div"},features:{type:Number,default:1}},setup(e,{slots:t,attrs:a}){return()=>{var n;let{features:i,...o}=e,s={"aria-hidden":(i&2)===2?!0:(n=o["aria-hidden"])!=null?n:void 0,style:{position:"fixed",top:1,left:1,width:1,height:0,padding:0,margin:-1,overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",borderWidth:"0",...(i&4)===4&&(i&2)!==2&&{display:"none"}}};return qt({ourProps:s,theirProps:o,slot:{},attrs:a,slots:t,name:"Hidden"})}}}),cC=Symbol("Context");var fa=(e=>(e[e.Open=1]="Open",e[e.Closed=2]="Closed",e[e.Closing=4]="Closing",e[e.Opening=8]="Opening",e))(fa||{});function yve(){return yc()!==null}function yc(){return bt(cC,null)}function kp(e){ma(cC,e)}var Je=(e=>(e.Space=" ",e.Enter="Enter",e.Escape="Escape",e.Backspace="Backspace",e.Delete="Delete",e.ArrowLeft="ArrowLeft",e.ArrowUp="ArrowUp",e.ArrowRight="ArrowRight",e.ArrowDown="ArrowDown",e.Home="Home",e.End="End",e.PageUp="PageUp",e.PageDown="PageDown",e.Tab="Tab",e))(Je||{});function bve(e){function t(){document.readyState!=="loading"&&(e(),document.removeEventListener("DOMContentLoaded",t))}typeof window<"u"&&typeof document<"u"&&(document.addEventListener("DOMContentLoaded",t),t())}let br=[];bve(()=>{function e(t){t.target instanceof HTMLElement&&t.target!==document.body&&br[0]!==t.target&&(br.unshift(t.target),br=br.filter(a=>a!=null&&a.isConnected),br.splice(10))}window.addEventListener("click",e,{capture:!0}),window.addEventListener("mousedown",e,{capture:!0}),window.addEventListener("focus",e,{capture:!0}),document.body.addEventListener("click",e,{capture:!0}),document.body.addEventListener("mousedown",e,{capture:!0}),document.body.addEventListener("focus",e,{capture:!0})});function kve(e){throw new Error("Unexpected object: "+e)}var ua=(e=>(e[e.First=0]="First",e[e.Previous=1]="Previous",e[e.Next=2]="Next",e[e.Last=3]="Last",e[e.Specific=4]="Specific",e[e.Nothing=5]="Nothing",e))(ua||{});function dC(e,t){let a=t.resolveItems();if(a.length<=0)return null;let n=t.resolveActiveIndex(),i=n??-1;switch(e.focus){case 0:{for(let o=0;o=0;--o)if(!t.resolveDisabled(a[o],o,a))return o;return n}case 2:{for(let o=i+1;o=0;--o)if(!t.resolveDisabled(a[o],o,a))return o;return n}case 4:{for(let o=0;osetTimeout(()=>{throw t}))}function au(){let e=[],t={addEventListener(a,n,i,o){return a.addEventListener(n,i,o),t.add(()=>a.removeEventListener(n,i,o))},requestAnimationFrame(...a){let n=requestAnimationFrame(...a);t.add(()=>cancelAnimationFrame(n))},nextFrame(...a){t.requestAnimationFrame(()=>{t.requestAnimationFrame(...a)})},setTimeout(...a){let n=setTimeout(...a);t.add(()=>clearTimeout(n))},microTask(...a){let n={current:!0};return wp(()=>{n.current&&a[0]()}),t.add(()=>{n.current=!1})},style(a,n,i){let o=a.style.getPropertyValue(n);return Object.assign(a.style,{[n]:i}),this.add(()=>{Object.assign(a.style,{[n]:o})})},group(a){let n=au();return a(n),this.add(()=>n.dispose())},add(a){return e.push(a),()=>{let n=e.indexOf(a);if(n>=0)for(let i of e.splice(n,1))i()}},dispose(){for(let a of e.splice(0))a()}};return t}function pb(e={},t=null,a=[]){for(let[n,i]of Object.entries(e))_C(a,uC(t,n),i);return a}function uC(e,t){return e?e+"["+t+"]":t}function _C(e,t,a){if(Array.isArray(a))for(let[n,i]of a.entries())_C(e,uC(t,n.toString()),i);else a instanceof Date?e.push([t,a.toISOString()]):typeof a=="boolean"?e.push([t,a?"1":"0"]):typeof a=="string"?e.push([t,a]):typeof a=="number"?e.push([t,`${a}`]):a==null?e.push([t,""]):pb(a,t,e)}function mC(e){var t,a;let n=(t=e==null?void 0:e.form)!=null?t:e.closest("form");if(n){for(let i of n.elements)if(i!==e&&(i.tagName==="INPUT"&&i.type==="submit"||i.tagName==="BUTTON"&&i.type==="submit"||i.nodeName==="INPUT"&&i.type==="image")){i.click();return}(a=n.requestSubmit)==null||a.call(n)}}function fb(e,t,a,n){Qd.isServer||Ca(i=>{e=e??window,e.addEventListener(t,a,n),i(()=>e.removeEventListener(t,a,n))})}var si=(e=>(e[e.Forwards=0]="Forwards",e[e.Backwards=1]="Backwards",e))(si||{});function hb(){let e=re(0);return iC("keydown",t=>{t.key==="Tab"&&(e.value=t.shiftKey?1:0)}),e}function pC(e){if(!e)return new Set;if(typeof e=="function")return new Set(e());let t=new Set;for(let a of e.value){let n=pe(a);n instanceof HTMLElement&&t.add(n)}return t}var fC=(e=>(e[e.None=1]="None",e[e.InitialFocus=2]="InitialFocus",e[e.TabLock=4]="TabLock",e[e.FocusLock=8]="FocusLock",e[e.RestoreFocus=16]="RestoreFocus",e[e.All=30]="All",e))(fC||{});let qc=Object.assign(kt({name:"FocusTrap",props:{as:{type:[Object,String],default:"div"},initialFocus:{type:Object,default:null},features:{type:Number,default:30},containers:{type:[Object,Function],default:re(new Set)}},inheritAttrs:!1,setup(e,{attrs:t,slots:a,expose:n}){let i=re(null);n({el:i,$el:i});let o=B(()=>Dn(i)),s=re(!1);Ct(()=>s.value=!0),xa(()=>s.value=!1),Dve({ownerDocument:o},B(()=>s.value&&!!(e.features&16)));let l=xve({ownerDocument:o,container:i,initialFocus:B(()=>e.initialFocus)},B(()=>s.value&&!!(e.features&2)));Sve({ownerDocument:o,container:i,containers:e.containers,previousActiveElement:l},B(()=>s.value&&!!(e.features&8)));let d=hb();function u(h){let g=pe(i);g&&(y=>y())(()=>{oa(d.value,{[si.Forwards]:()=>{Oa(g,Kt.First,{skipElements:[h.relatedTarget]})},[si.Backwards]:()=>{Oa(g,Kt.Last,{skipElements:[h.relatedTarget]})}})})}let _=re(!1);function f(h){h.key==="Tab"&&(_.value=!0,requestAnimationFrame(()=>{_.value=!1}))}function p(h){if(!s.value)return;let g=pC(e.containers);pe(i)instanceof HTMLElement&&g.add(pe(i));let y=h.relatedTarget;y instanceof HTMLElement&&y.dataset.headlessuiFocusGuard!=="true"&&(hC(g,y)||(_.value?Oa(pe(i),oa(d.value,{[si.Forwards]:()=>Kt.Next,[si.Backwards]:()=>Kt.Previous})|Kt.WrapAround,{relativeTo:h.target}):h.target instanceof HTMLElement&&Ls(h.target)))}return()=>{let h={},g={ref:i,onKeydown:f,onFocusout:p},{features:y,initialFocus:k,containers:b,...P}=e;return Et(yt,[!!(y&4)&&Et(io,{as:"button",type:"button","data-headlessui-focus-guard":!0,onFocus:u,features:no.Focusable}),qt({ourProps:g,theirProps:{...t,...P},slot:h,attrs:t,slots:a,name:"FocusTrap"}),!!(y&4)&&Et(io,{as:"button",type:"button","data-headlessui-focus-guard":!0,onFocus:u,features:no.Focusable})])}}}),{features:fC});function wve(e){let t=re(br.slice());return Yt([e],([a],[n])=>{n===!0&&a===!1?wp(()=>{t.value.splice(0)}):n===!1&&a===!0&&(t.value=br.slice())},{flush:"post"}),()=>{var a;return(a=t.value.find(n=>n!=null&&n.isConnected))!=null?a:null}}function Dve({ownerDocument:e},t){let a=wve(t);Ct(()=>{Ca(()=>{var n,i;t.value||((n=e.value)==null?void 0:n.activeElement)===((i=e.value)==null?void 0:i.body)&&Ls(a())},{flush:"post"})}),xa(()=>{t.value&&Ls(a())})}function xve({ownerDocument:e,container:t,initialFocus:a},n){let i=re(null),o=re(!1);return Ct(()=>o.value=!0),xa(()=>o.value=!1),Ct(()=>{Yt([t,a,n],(s,l)=>{if(s.every((u,_)=>(l==null?void 0:l[_])===u)||!n.value)return;let d=pe(t);d&&wp(()=>{var u,_;if(!o.value)return;let f=pe(a),p=(u=e.value)==null?void 0:u.activeElement;if(f){if(f===p){i.value=p;return}}else if(d.contains(p)){i.value=p;return}f?Ls(f):Oa(d,Kt.First|Kt.NoScroll)===Zi.Error&&console.warn("There are no focusable elements inside the "),i.value=(_=e.value)==null?void 0:_.activeElement})},{immediate:!0,flush:"post"})}),i}function Sve({ownerDocument:e,container:t,containers:a,previousActiveElement:n},i){var o;fb((o=e.value)==null?void 0:o.defaultView,"focus",s=>{if(!i.value)return;let l=pC(a);pe(t)instanceof HTMLElement&&l.add(pe(t));let d=n.value;if(!d)return;let u=s.target;u&&u instanceof HTMLElement?hC(l,u)?(n.value=u,Ls(u)):(s.preventDefault(),s.stopPropagation(),Ls(d)):Ls(n.value)},!0)}function hC(e,t){for(let a of e)if(a.contains(t))return!0;return!1}function Pve(e){let t=Hv(e.getSnapshot());return xa(e.subscribe(()=>{t.value=e.getSnapshot()})),t}function Eve(e,t){let a=e(),n=new Set;return{getSnapshot(){return a},subscribe(i){return n.add(i),()=>n.delete(i)},dispatch(i,...o){let s=t[i].call(a,...o);s&&(a=s,n.forEach(l=>l()))}}}function zve(){let e;return{before({doc:t}){var a;let n=t.documentElement;e=((a=t.defaultView)!=null?a:window).innerWidth-n.clientWidth},after({doc:t,d:a}){let n=t.documentElement,i=n.clientWidth-n.offsetWidth,o=e-i;a.style(n,"paddingRight",`${o}px`)}}}function Ave(){return nC()?{before({doc:e,d:t,meta:a}){function n(i){return a.containers.flatMap(o=>o()).some(o=>o.contains(i))}t.microTask(()=>{var i;if(window.getComputedStyle(e.documentElement).scrollBehavior!=="auto"){let l=au();l.style(e.documentElement,"scrollBehavior","auto"),t.add(()=>t.microTask(()=>l.dispose()))}let o=(i=window.scrollY)!=null?i:window.pageYOffset,s=null;t.addEventListener(e,"click",l=>{if(l.target instanceof HTMLElement)try{let d=l.target.closest("a");if(!d)return;let{hash:u}=new URL(d.href),_=e.querySelector(u);_&&!n(_)&&(s=_)}catch{}},!0),t.addEventListener(e,"touchstart",l=>{if(l.target instanceof HTMLElement)if(n(l.target)){let d=l.target;for(;d.parentElement&&n(d.parentElement);)d=d.parentElement;t.style(d,"overscrollBehavior","contain")}else t.style(l.target,"touchAction","none")}),t.addEventListener(e,"touchmove",l=>{if(l.target instanceof HTMLElement)if(n(l.target)){let d=l.target;for(;d.parentElement&&d.dataset.headlessuiPortal!==""&&!(d.scrollHeight>d.clientHeight||d.scrollWidth>d.clientWidth);)d=d.parentElement;d.dataset.headlessuiPortal===""&&l.preventDefault()}else l.preventDefault()},{passive:!1}),t.add(()=>{var l;let d=(l=window.scrollY)!=null?l:window.pageYOffset;o!==d&&window.scrollTo(0,o),s&&s.isConnected&&(s.scrollIntoView({block:"nearest"}),s=null)})})}}:{}}function Cve(){return{before({doc:e,d:t}){t.style(e.documentElement,"overflow","hidden")}}}function Tve(e){let t={};for(let a of e)Object.assign(t,a(t));return t}let Sr=Eve(()=>new Map,{PUSH(e,t){var a;let n=(a=this.get(e))!=null?a:{doc:e,count:0,d:au(),meta:new Set};return n.count++,n.meta.add(t),this.set(e,n),this},POP(e,t){let a=this.get(e);return a&&(a.count--,a.meta.delete(t)),this},SCROLL_PREVENT({doc:e,d:t,meta:a}){let n={doc:e,d:t,meta:Tve(a)},i=[Ave(),zve(),Cve()];i.forEach(({before:o})=>o==null?void 0:o(n)),i.forEach(({after:o})=>o==null?void 0:o(n))},SCROLL_ALLOW({d:e}){e.dispose()},TEARDOWN({doc:e}){this.delete(e)}});Sr.subscribe(()=>{let e=Sr.getSnapshot(),t=new Map;for(let[a]of e)t.set(a,a.documentElement.style.overflow);for(let a of e.values()){let n=t.get(a.doc)==="hidden",i=a.count!==0;(i&&!n||!i&&n)&&Sr.dispatch(a.count>0?"SCROLL_PREVENT":"SCROLL_ALLOW",a),a.count===0&&Sr.dispatch("TEARDOWN",a)}});function jve(e,t,a){let n=Pve(Sr),i=B(()=>{let o=e.value?n.value.get(e.value):void 0;return o?o.count>0:!1});return Yt([e,t],([o,s],[l],d)=>{if(!o||!s)return;Sr.dispatch("PUSH",o,a);let u=!1;d(()=>{u||(Sr.dispatch("POP",l??o,a),u=!0)})},{immediate:!0}),i}let Bh=new Map,Wc=new Map;function sS(e,t=re(!0)){Ca(a=>{var n;if(!t.value)return;let i=pe(e);if(!i)return;a(function(){var s;if(!i)return;let l=(s=Wc.get(i))!=null?s:1;if(l===1?Wc.delete(i):Wc.set(i,l-1),l!==1)return;let d=Bh.get(i);d&&(d["aria-hidden"]===null?i.removeAttribute("aria-hidden"):i.setAttribute("aria-hidden",d["aria-hidden"]),i.inert=d.inert,Bh.delete(i))});let o=(n=Wc.get(i))!=null?n:0;Wc.set(i,o+1),o===0&&(Bh.set(i,{"aria-hidden":i.getAttribute("aria-hidden"),inert:i.inert}),i.setAttribute("aria-hidden","true"),i.inert=!0)})}function gC({defaultContainers:e=[],portals:t,mainTreeNodeRef:a}={}){let n=re(null),i=Dn(n);function o(){var s,l,d;let u=[];for(let _ of e)_!==null&&(_ instanceof HTMLElement?u.push(_):"value"in _&&_.value instanceof HTMLElement&&u.push(_.value));if(t!=null&&t.value)for(let _ of t.value)u.push(_);for(let _ of(s=i==null?void 0:i.querySelectorAll("html > *, body > *"))!=null?s:[])_!==document.body&&_!==document.head&&_ instanceof HTMLElement&&_.id!=="headlessui-portal-root"&&(_.contains(pe(n))||_.contains((d=(l=pe(n))==null?void 0:l.getRootNode())==null?void 0:d.host)||u.some(f=>_.contains(f))||u.push(_));return u}return{resolveContainers:o,contains(s){return o().some(l=>l.contains(s))},mainTreeNodeRef:n,MainTreeNode(){return a!=null?null:Et(io,{features:no.Hidden,ref:n})}}}let vC=Symbol("ForcePortalRootContext");function Nve(){return bt(vC,!1)}let rS=kt({name:"ForcePortalRoot",props:{as:{type:[Object,String],default:"template"},force:{type:Boolean,default:!1}},setup(e,{slots:t,attrs:a}){return ma(vC,e.force),()=>{let{force:n,...i}=e;return qt({theirProps:i,ourProps:{},slot:{},slots:t,attrs:a,name:"ForcePortalRoot"})}}}),yC=Symbol("StackContext");var rv=(e=>(e[e.Add=0]="Add",e[e.Remove=1]="Remove",e))(rv||{});function Ive(){return bt(yC,()=>{})}function Fve({type:e,enabled:t,element:a,onUpdate:n}){let i=Ive();function o(...s){n==null||n(...s),i(...s)}Ct(()=>{Yt(t,(s,l)=>{s?o(0,e,a):l===!0&&o(1,e,a)},{immediate:!0,flush:"sync"})}),xa(()=>{t.value&&o(1,e,a)}),ma(yC,o)}let bC=Symbol("DescriptionContext");function Rve(){let e=bt(bC,null);if(e===null)throw new Error("Missing parent");return e}function Dp({slot:e=re({}),name:t="Description",props:a={}}={}){let n=re([]);function i(o){return n.value.push(o),()=>{let s=n.value.indexOf(o);s!==-1&&n.value.splice(s,1)}}return ma(bC,{register:i,slot:e,name:t,props:a}),B(()=>n.value.length>0?n.value.join(" "):void 0)}let kC=kt({name:"Description",props:{as:{type:[Object,String],default:"p"},id:{type:String,default:()=>`headlessui-description-${Pa()}`}},setup(e,{attrs:t,slots:a}){let n=Rve();return Ct(()=>xa(n.register(e.id))),()=>{let{name:i="Description",slot:o=re({}),props:s={}}=n,{id:l,...d}=e,u={...Object.entries(s).reduce((_,[f,p])=>Object.assign(_,{[f]:O(p)}),{}),id:l};return qt({ourProps:u,theirProps:d,slot:o.value,attrs:t,slots:a,name:i})}}});function Ove(e){let t=Dn(e);if(!t){if(e===null)return null;throw new Error(`[Headless UI]: Cannot find ownerDocument for contextElement: ${e}`)}let a=t.getElementById("headlessui-portal-root");if(a)return a;let n=t.createElement("div");return n.setAttribute("id","headlessui-portal-root"),t.body.appendChild(n)}let Mve=kt({name:"Portal",props:{as:{type:[Object,String],default:"div"}},setup(e,{slots:t,attrs:a}){let n=re(null),i=B(()=>Dn(n)),o=Nve(),s=bt(DC,null),l=re(o===!0||s==null?Ove(n.value):s.resolveTarget()),d=re(!1);Ct(()=>{d.value=!0}),Ca(()=>{o||s!=null&&(l.value=s.resolveTarget())});let u=bt(lv,null),_=!1,f=Oi();return Yt(n,()=>{if(_||!u)return;let p=pe(n);p&&(xa(u.register(p),f),_=!0)}),xa(()=>{var p,h;let g=(p=i.value)==null?void 0:p.getElementById("headlessui-portal-root");g&&l.value===g&&l.value.children.length<=0&&((h=l.value.parentElement)==null||h.removeChild(l.value))}),()=>{if(!d.value||l.value===null)return null;let p={ref:n,"data-headlessui-portal":""};return Et(cy,{to:l.value},qt({ourProps:p,theirProps:e,slot:{},attrs:a,slots:t,name:"Portal"}))}}}),lv=Symbol("PortalParentContext");function wC(){let e=bt(lv,null),t=re([]);function a(o){return t.value.push(o),e&&e.register(o),()=>n(o)}function n(o){let s=t.value.indexOf(o);s!==-1&&t.value.splice(s,1),e&&e.unregister(o)}let i={register:a,unregister:n,portals:t};return[t,kt({name:"PortalWrapper",setup(o,{slots:s}){return ma(lv,i),()=>{var l;return(l=s.default)==null?void 0:l.call(s)}}})]}let DC=Symbol("PortalGroupContext"),$ve=kt({name:"PortalGroup",props:{as:{type:[Object,String],default:"template"},target:{type:Object,default:null}},setup(e,{attrs:t,slots:a}){let n=ui({resolveTarget(){return e.target}});return ma(DC,n),()=>{let{target:i,...o}=e;return qt({theirProps:o,ourProps:{},slot:{},attrs:t,slots:a,name:"PortalGroup"})}}});var Lve=(e=>(e[e.Open=0]="Open",e[e.Closed=1]="Closed",e))(Lve||{});let cv=Symbol("DialogContext");function gb(e){let t=bt(cv,null);if(t===null){let a=new Error(`<${e} /> is missing a parent component.`);throw Error.captureStackTrace&&Error.captureStackTrace(a,gb),a}return t}let g_="DC8F892D-2EBD-447C-A4C8-A03058436FF4",xC=kt({name:"Dialog",inheritAttrs:!1,props:{as:{type:[Object,String],default:"div"},static:{type:Boolean,default:!1},unmount:{type:Boolean,default:!0},open:{type:[Boolean,String],default:g_},initialFocus:{type:Object,default:null},id:{type:String,default:()=>`headlessui-dialog-${Pa()}`},role:{type:String,default:"dialog"}},emits:{close:e=>!0},setup(e,{emit:t,attrs:a,slots:n,expose:i}){var o;let s=re(!1);Ct(()=>{s.value=!0});let l=!1,d=B(()=>e.role==="dialog"||e.role==="alertdialog"?e.role:(l||(l=!0,console.warn(`Invalid role [${d}] passed to . Only \`dialog\` and and \`alertdialog\` are supported. Using \`dialog\` instead.`)),"dialog")),u=re(0),_=yc(),f=B(()=>e.open===g_&&_!==null?(_.value&fa.Open)===fa.Open:e.open),p=re(null),h=B(()=>Dn(p));if(i({el:p,$el:p}),!(e.open!==g_||_!==null))throw new Error("You forgot to provide an `open` prop to the `Dialog`.");if(typeof f.value!="boolean")throw new Error(`You provided an \`open\` prop to the \`Dialog\`, but the value is not a boolean. Received: ${f.value===g_?void 0:e.open}`);let g=B(()=>s.value&&f.value?0:1),y=B(()=>g.value===0),k=B(()=>u.value>1),b=bt(cv,null)!==null,[P,w]=wC(),{resolveContainers:x,mainTreeNodeRef:E,MainTreeNode:C}=gC({portals:P,defaultContainers:[B(()=>{var He;return(He=ze.panelRef.value)!=null?He:p.value})]}),j=B(()=>k.value?"parent":"leaf"),A=B(()=>_!==null?(_.value&fa.Closing)===fa.Closing:!1),U=B(()=>b||A.value?!1:y.value),V=B(()=>{var He,oe,Ge;return(Ge=Array.from((oe=(He=h.value)==null?void 0:He.querySelectorAll("body > *"))!=null?oe:[]).find(at=>at.id==="headlessui-portal-root"?!1:at.contains(pe(E))&&at instanceof HTMLElement))!=null?Ge:null});sS(V,U);let ee=B(()=>k.value?!0:y.value),J=B(()=>{var He,oe,Ge;return(Ge=Array.from((oe=(He=h.value)==null?void 0:He.querySelectorAll("[data-headlessui-portal]"))!=null?oe:[]).find(at=>at.contains(pe(E))&&at instanceof HTMLElement))!=null?Ge:null});sS(J,ee),Fve({type:"Dialog",enabled:B(()=>g.value===0),element:p,onUpdate:(He,oe)=>{if(oe==="Dialog")return oa(He,{[rv.Add]:()=>u.value+=1,[rv.Remove]:()=>u.value-=1})}});let ie=Dp({name:"DialogDescription",slot:B(()=>({open:f.value}))}),Te=re(null),ze={titleId:Te,panelRef:re(null),dialogState:g,setTitleId(He){Te.value!==He&&(Te.value=He)},close(){t("close",!1)}};ma(cv,ze);let ce=B(()=>!(!y.value||k.value));bp(x,(He,oe)=>{ze.close(),ha(()=>oe==null?void 0:oe.focus())},ce);let Ae=B(()=>!(k.value||g.value!==0));fb((o=h.value)==null?void 0:o.defaultView,"keydown",He=>{Ae.value&&(He.defaultPrevented||He.key===Je.Escape&&(He.preventDefault(),He.stopPropagation(),ze.close()))});let Pe=B(()=>!(A.value||g.value!==0||b));return jve(h,Pe,He=>{var oe;return{containers:[...(oe=He.containers)!=null?oe:[],x]}}),Ca(He=>{if(g.value!==0)return;let oe=pe(p);if(!oe)return;let Ge=new ResizeObserver(at=>{for(let la of at){let Bt=la.target.getBoundingClientRect();Bt.x===0&&Bt.y===0&&Bt.width===0&&Bt.height===0&&ze.close()}});Ge.observe(oe),He(()=>Ge.disconnect())}),()=>{let{id:He,open:oe,initialFocus:Ge,...at}=e,la={...a,ref:p,id:He,role:d.value,"aria-modal":g.value===0?!0:void 0,"aria-labelledby":Te.value,"aria-describedby":ie.value},Bt={open:g.value===0};return Et(rS,{force:!0},()=>[Et(Mve,()=>Et($ve,{target:p.value},()=>Et(rS,{force:!1},()=>Et(qc,{initialFocus:Ge,containers:x,features:y.value?oa(j.value,{parent:qc.features.RestoreFocus,leaf:qc.features.All&~qc.features.FocusLock}):qc.features.None},()=>Et(w,{},()=>qt({ourProps:la,theirProps:{...at,...a},slot:Bt,attrs:a,slots:n,visible:g.value===0,features:Ii.RenderStrategy|Ii.Static,name:"Dialog"})))))),Et(C)])}}}),SC=kt({name:"DialogOverlay",props:{as:{type:[Object,String],default:"div"},id:{type:String,default:()=>`headlessui-dialog-overlay-${Pa()}`}},setup(e,{attrs:t,slots:a}){let n=gb("DialogOverlay");function i(o){o.target===o.currentTarget&&(o.preventDefault(),o.stopPropagation(),n.close())}return()=>{let{id:o,...s}=e;return qt({ourProps:{id:o,"aria-hidden":!0,onClick:i},theirProps:s,slot:{open:n.dialogState.value===0},attrs:t,slots:a,name:"DialogOverlay"})}}}),Bve=kt({name:"DialogTitle",props:{as:{type:[Object,String],default:"h2"},id:{type:String,default:()=>`headlessui-dialog-title-${Pa()}`}},setup(e,{attrs:t,slots:a}){let n=gb("DialogTitle");return Ct(()=>{n.setTitleId(e.id),xa(()=>n.setTitleId(null))}),()=>{let{id:i,...o}=e;return qt({ourProps:{id:i},theirProps:o,slot:{open:n.dialogState.value===0},attrs:t,slots:a,name:"DialogTitle"})}}}),lS=/([\u2700-\u27BF]|[\uE000-\uF8FF]|\uD83C[\uDC00-\uDFFF]|\uD83D[\uDC00-\uDFFF]|[\u2011-\u26FF]|\uD83E[\uDD10-\uDDFF])/g;function cS(e){var t,a;let n=(t=e.innerText)!=null?t:"",i=e.cloneNode(!0);if(!(i instanceof HTMLElement))return n;let o=!1;for(let l of i.querySelectorAll('[hidden],[aria-hidden],[role="img"]'))l.remove(),o=!0;let s=o?(a=i.innerText)!=null?a:"":n;return lS.test(s)&&(s=s.replace(lS,"")),s}function Uve(e){let t=e.getAttribute("aria-label");if(typeof t=="string")return t.trim();let a=e.getAttribute("aria-labelledby");if(a){let n=a.split(" ").map(i=>{let o=document.getElementById(i);if(o){let s=o.getAttribute("aria-label");return typeof s=="string"?s.trim():cS(o).trim()}return null}).filter(Boolean);if(n.length>0)return n.join(", ")}return cS(e).trim()}function PC(e){let t=re(""),a=re("");return()=>{let n=pe(e);if(!n)return"";let i=n.innerText;if(t.value===i)return a.value;let o=Uve(n).trim().toLowerCase();return t.value=i,a.value=o,o}}function Vve(e,t){return e===t}var qve=(e=>(e[e.Open=0]="Open",e[e.Closed=1]="Closed",e))(qve||{}),Wve=(e=>(e[e.Single=0]="Single",e[e.Multi=1]="Multi",e))(Wve||{}),Hve=(e=>(e[e.Pointer=0]="Pointer",e[e.Other=1]="Other",e))(Hve||{});function Kve(e){requestAnimationFrame(()=>requestAnimationFrame(e))}let EC=Symbol("ListboxContext");function nu(e){let t=bt(EC,null);if(t===null){let a=new Error(`<${e} /> is missing a parent component.`);throw Error.captureStackTrace&&Error.captureStackTrace(a,nu),a}return t}let Yve=kt({name:"Listbox",emits:{"update:modelValue":e=>!0},props:{as:{type:[Object,String],default:"template"},disabled:{type:[Boolean],default:!1},by:{type:[String,Function],default:()=>Vve},horizontal:{type:[Boolean],default:!1},modelValue:{type:[Object,String,Number,Boolean],default:void 0},defaultValue:{type:[Object,String,Number,Boolean],default:void 0},form:{type:String,optional:!0},name:{type:String,optional:!0},multiple:{type:[Boolean],default:!1}},inheritAttrs:!1,setup(e,{slots:t,attrs:a,emit:n}){let i=re(1),o=re(null),s=re(null),l=re(null),d=re([]),u=re(""),_=re(null),f=re(1);function p(w=x=>x){let x=_.value!==null?d.value[_.value]:null,E=Uo(w(d.value.slice()),j=>pe(j.dataRef.domRef)),C=x?E.indexOf(x):null;return C===-1&&(C=null),{options:E,activeOptionIndex:C}}let h=B(()=>e.multiple?1:0),[g,y]=_b(B(()=>e.modelValue),w=>n("update:modelValue",w),B(()=>e.defaultValue)),k=B(()=>g.value===void 0?oa(h.value,{1:[],0:void 0}):g.value),b={listboxState:i,value:k,mode:h,compare(w,x){if(typeof e.by=="string"){let E=e.by;return(w==null?void 0:w[E])===(x==null?void 0:x[E])}return e.by(w,x)},orientation:B(()=>e.horizontal?"horizontal":"vertical"),labelRef:o,buttonRef:s,optionsRef:l,disabled:B(()=>e.disabled),options:d,searchQuery:u,activeOptionIndex:_,activationTrigger:f,closeListbox(){e.disabled||i.value!==1&&(i.value=1,_.value=null)},openListbox(){e.disabled||i.value!==0&&(i.value=0)},goToOption(w,x,E){if(e.disabled||i.value===1)return;let C=p(),j=dC(w===ua.Specific?{focus:ua.Specific,id:x}:{focus:w},{resolveItems:()=>C.options,resolveActiveIndex:()=>C.activeOptionIndex,resolveId:A=>A.id,resolveDisabled:A=>A.dataRef.disabled});u.value="",_.value=j,f.value=E??1,d.value=C.options},search(w){if(e.disabled||i.value===1)return;let x=u.value!==""?0:1;u.value+=w.toLowerCase();let E=(_.value!==null?d.value.slice(_.value+x).concat(d.value.slice(0,_.value+x)):d.value).find(j=>j.dataRef.textValue.startsWith(u.value)&&!j.dataRef.disabled),C=E?d.value.indexOf(E):-1;C===-1||C===_.value||(_.value=C,f.value=1)},clearSearch(){e.disabled||i.value!==1&&u.value!==""&&(u.value="")},registerOption(w,x){let E=p(C=>[...C,{id:w,dataRef:x}]);d.value=E.options,_.value=E.activeOptionIndex},unregisterOption(w){let x=p(E=>{let C=E.findIndex(j=>j.id===w);return C!==-1&&E.splice(C,1),E});d.value=x.options,_.value=x.activeOptionIndex,f.value=1},theirOnChange(w){e.disabled||y(w)},select(w){e.disabled||y(oa(h.value,{0:()=>w,1:()=>{let x=et(b.value.value).slice(),E=et(w),C=x.findIndex(j=>b.compare(E,et(j)));return C===-1?x.push(E):x.splice(C,1),x}}))}};bp([s,l],(w,x)=>{var E;b.closeListbox(),eu(x,Xd.Loose)||(w.preventDefault(),(E=pe(s))==null||E.focus())},B(()=>i.value===0)),ma(EC,b),kp(B(()=>oa(i.value,{0:fa.Open,1:fa.Closed})));let P=B(()=>{var w;return(w=pe(s))==null?void 0:w.closest("form")});return Ct(()=>{Yt([P],()=>{if(!P.value||e.defaultValue===void 0)return;function w(){b.theirOnChange(e.defaultValue)}return P.value.addEventListener("reset",w),()=>{var x;(x=P.value)==null||x.removeEventListener("reset",w)}},{immediate:!0})}),()=>{let{name:w,modelValue:x,disabled:E,form:C,...j}=e,A={open:i.value===0,disabled:E,value:k.value};return Et(yt,[...w!=null&&k.value!=null?pb({[w]:k.value}).map(([U,V])=>Et(io,mb({features:no.Hidden,key:U,as:"input",type:"hidden",hidden:!0,readOnly:!0,form:C,name:U,value:V}))):[],qt({ourProps:{},theirProps:{...a,...vc(j,["defaultValue","onUpdate:modelValue","horizontal","multiple","by"])},slot:A,slots:t,attrs:a,name:"Listbox"})])}}}),Zve=kt({name:"ListboxLabel",props:{as:{type:[Object,String],default:"label"},id:{type:String,default:()=>`headlessui-listbox-label-${Pa()}`}},setup(e,{attrs:t,slots:a}){let n=nu("ListboxLabel");function i(){var o;(o=pe(n.buttonRef))==null||o.focus({preventScroll:!0})}return()=>{let o={open:n.listboxState.value===0,disabled:n.disabled.value},{id:s,...l}=e,d={id:s,ref:n.labelRef,onClick:i};return qt({ourProps:d,theirProps:l,slot:o,attrs:t,slots:a,name:"ListboxLabel"})}}}),Gve=kt({name:"ListboxButton",props:{as:{type:[Object,String],default:"button"},id:{type:String,default:()=>`headlessui-listbox-button-${Pa()}`}},setup(e,{attrs:t,slots:a,expose:n}){let i=nu("ListboxButton");n({el:i.buttonRef,$el:i.buttonRef});function o(u){switch(u.key){case Je.Space:case Je.Enter:case Je.ArrowDown:u.preventDefault(),i.openListbox(),ha(()=>{var _;(_=pe(i.optionsRef))==null||_.focus({preventScroll:!0}),i.value.value||i.goToOption(ua.First)});break;case Je.ArrowUp:u.preventDefault(),i.openListbox(),ha(()=>{var _;(_=pe(i.optionsRef))==null||_.focus({preventScroll:!0}),i.value.value||i.goToOption(ua.Last)});break}}function s(u){switch(u.key){case Je.Space:u.preventDefault();break}}function l(u){i.disabled.value||(i.listboxState.value===0?(i.closeListbox(),ha(()=>{var _;return(_=pe(i.buttonRef))==null?void 0:_.focus({preventScroll:!0})})):(u.preventDefault(),i.openListbox(),Kve(()=>{var _;return(_=pe(i.optionsRef))==null?void 0:_.focus({preventScroll:!0})})))}let d=tu(B(()=>({as:e.as,type:t.type})),i.buttonRef);return()=>{var u,_;let f={open:i.listboxState.value===0,disabled:i.disabled.value,value:i.value.value},{id:p,...h}=e,g={ref:i.buttonRef,id:p,type:d.value,"aria-haspopup":"listbox","aria-controls":(u=pe(i.optionsRef))==null?void 0:u.id,"aria-expanded":i.listboxState.value===0,"aria-labelledby":i.labelRef.value?[(_=pe(i.labelRef))==null?void 0:_.id,p].join(" "):void 0,disabled:i.disabled.value===!0?!0:void 0,onKeydown:o,onKeyup:s,onClick:l};return qt({ourProps:g,theirProps:h,slot:f,attrs:t,slots:a,name:"ListboxButton"})}}}),Qve=kt({name:"ListboxOptions",props:{as:{type:[Object,String],default:"ul"},static:{type:Boolean,default:!1},unmount:{type:Boolean,default:!0},id:{type:String,default:()=>`headlessui-listbox-options-${Pa()}`}},setup(e,{attrs:t,slots:a,expose:n}){let i=nu("ListboxOptions"),o=re(null);n({el:i.optionsRef,$el:i.optionsRef});function s(u){switch(o.value&&clearTimeout(o.value),u.key){case Je.Space:if(i.searchQuery.value!=="")return u.preventDefault(),u.stopPropagation(),i.search(u.key);case Je.Enter:if(u.preventDefault(),u.stopPropagation(),i.activeOptionIndex.value!==null){let _=i.options.value[i.activeOptionIndex.value];i.select(_.dataRef.value)}i.mode.value===0&&(i.closeListbox(),ha(()=>{var _;return(_=pe(i.buttonRef))==null?void 0:_.focus({preventScroll:!0})}));break;case oa(i.orientation.value,{vertical:Je.ArrowDown,horizontal:Je.ArrowRight}):return u.preventDefault(),u.stopPropagation(),i.goToOption(ua.Next);case oa(i.orientation.value,{vertical:Je.ArrowUp,horizontal:Je.ArrowLeft}):return u.preventDefault(),u.stopPropagation(),i.goToOption(ua.Previous);case Je.Home:case Je.PageUp:return u.preventDefault(),u.stopPropagation(),i.goToOption(ua.First);case Je.End:case Je.PageDown:return u.preventDefault(),u.stopPropagation(),i.goToOption(ua.Last);case Je.Escape:u.preventDefault(),u.stopPropagation(),i.closeListbox(),ha(()=>{var _;return(_=pe(i.buttonRef))==null?void 0:_.focus({preventScroll:!0})});break;case Je.Tab:u.preventDefault(),u.stopPropagation();break;default:u.key.length===1&&(i.search(u.key),o.value=setTimeout(()=>i.clearSearch(),350));break}}let l=yc(),d=B(()=>l!==null?(l.value&fa.Open)===fa.Open:i.listboxState.value===0);return()=>{var u,_;let f={open:i.listboxState.value===0},{id:p,...h}=e,g={"aria-activedescendant":i.activeOptionIndex.value===null||(u=i.options.value[i.activeOptionIndex.value])==null?void 0:u.id,"aria-multiselectable":i.mode.value===1?!0:void 0,"aria-labelledby":(_=pe(i.buttonRef))==null?void 0:_.id,"aria-orientation":i.orientation.value,id:p,onKeydown:s,role:"listbox",tabIndex:0,ref:i.optionsRef};return qt({ourProps:g,theirProps:h,slot:f,attrs:t,slots:a,features:Ii.RenderStrategy|Ii.Static,visible:d.value,name:"ListboxOptions"})}}}),Jve=kt({name:"ListboxOption",props:{as:{type:[Object,String],default:"li"},value:{type:[Object,String,Number,Boolean]},disabled:{type:Boolean,default:!1},id:{type:String,default:()=>`headlessui-listbox.option-${Pa()}`}},setup(e,{slots:t,attrs:a,expose:n}){let i=nu("ListboxOption"),o=re(null);n({el:o,$el:o});let s=B(()=>i.activeOptionIndex.value!==null?i.options.value[i.activeOptionIndex.value].id===e.id:!1),l=B(()=>oa(i.mode.value,{0:()=>i.compare(et(i.value.value),et(e.value)),1:()=>et(i.value.value).some(b=>i.compare(et(b),et(e.value)))})),d=B(()=>oa(i.mode.value,{1:()=>{var b;let P=et(i.value.value);return((b=i.options.value.find(w=>P.some(x=>i.compare(et(x),et(w.dataRef.value)))))==null?void 0:b.id)===e.id},0:()=>l.value})),u=PC(o),_=B(()=>({disabled:e.disabled,value:e.value,get textValue(){return u()},domRef:o}));Ct(()=>i.registerOption(e.id,_)),xa(()=>i.unregisterOption(e.id)),Ct(()=>{Yt([i.listboxState,l],()=>{i.listboxState.value===0&&l.value&&oa(i.mode.value,{1:()=>{d.value&&i.goToOption(ua.Specific,e.id)},0:()=>{i.goToOption(ua.Specific,e.id)}})},{immediate:!0})}),Ca(()=>{i.listboxState.value===0&&s.value&&i.activationTrigger.value!==0&&ha(()=>{var b,P;return(P=(b=pe(o))==null?void 0:b.scrollIntoView)==null?void 0:P.call(b,{block:"nearest"})})});function f(b){if(e.disabled)return b.preventDefault();i.select(e.value),i.mode.value===0&&(i.closeListbox(),ha(()=>{var P;return(P=pe(i.buttonRef))==null?void 0:P.focus({preventScroll:!0})}))}function p(){if(e.disabled)return i.goToOption(ua.Nothing);i.goToOption(ua.Specific,e.id)}let h=oC();function g(b){h.update(b)}function y(b){h.wasMoved(b)&&(e.disabled||s.value||i.goToOption(ua.Specific,e.id,0))}function k(b){h.wasMoved(b)&&(e.disabled||s.value&&i.goToOption(ua.Nothing))}return()=>{let{disabled:b}=e,P={active:s.value,selected:l.value,disabled:b},{id:w,value:x,disabled:E,...C}=e,j={id:w,ref:o,role:"option",tabIndex:b===!0?void 0:-1,"aria-disabled":b===!0?!0:void 0,"aria-selected":l.value,disabled:void 0,onClick:f,onFocus:p,onPointerenter:g,onMouseenter:g,onPointermove:y,onMousemove:y,onPointerleave:k,onMouseleave:k};return qt({ourProps:j,theirProps:C,slot:P,attrs:a,slots:t,name:"ListboxOption"})}}});var Xve=(e=>(e[e.Open=0]="Open",e[e.Closed=1]="Closed",e))(Xve||{}),eye=(e=>(e[e.Pointer=0]="Pointer",e[e.Other=1]="Other",e))(eye||{});function tye(e){requestAnimationFrame(()=>requestAnimationFrame(e))}let zC=Symbol("MenuContext");function xp(e){let t=bt(zC,null);if(t===null){let a=new Error(`<${e} /> is missing a parent component.`);throw Error.captureStackTrace&&Error.captureStackTrace(a,xp),a}return t}let aye=kt({name:"Menu",props:{as:{type:[Object,String],default:"template"}},setup(e,{slots:t,attrs:a}){let n=re(1),i=re(null),o=re(null),s=re([]),l=re(""),d=re(null),u=re(1);function _(p=h=>h){let h=d.value!==null?s.value[d.value]:null,g=Uo(p(s.value.slice()),k=>pe(k.dataRef.domRef)),y=h?g.indexOf(h):null;return y===-1&&(y=null),{items:g,activeItemIndex:y}}let f={menuState:n,buttonRef:i,itemsRef:o,items:s,searchQuery:l,activeItemIndex:d,activationTrigger:u,closeMenu:()=>{n.value=1,d.value=null},openMenu:()=>n.value=0,goToItem(p,h,g){let y=_(),k=dC(p===ua.Specific?{focus:ua.Specific,id:h}:{focus:p},{resolveItems:()=>y.items,resolveActiveIndex:()=>y.activeItemIndex,resolveId:b=>b.id,resolveDisabled:b=>b.dataRef.disabled});l.value="",d.value=k,u.value=g??1,s.value=y.items},search(p){let h=l.value!==""?0:1;l.value+=p.toLowerCase();let g=(d.value!==null?s.value.slice(d.value+h).concat(s.value.slice(0,d.value+h)):s.value).find(k=>k.dataRef.textValue.startsWith(l.value)&&!k.dataRef.disabled),y=g?s.value.indexOf(g):-1;y===-1||y===d.value||(d.value=y,u.value=1)},clearSearch(){l.value=""},registerItem(p,h){let g=_(y=>[...y,{id:p,dataRef:h}]);s.value=g.items,d.value=g.activeItemIndex,u.value=1},unregisterItem(p){let h=_(g=>{let y=g.findIndex(k=>k.id===p);return y!==-1&&g.splice(y,1),g});s.value=h.items,d.value=h.activeItemIndex,u.value=1}};return bp([i,o],(p,h)=>{var g;f.closeMenu(),eu(h,Xd.Loose)||(p.preventDefault(),(g=pe(i))==null||g.focus())},B(()=>n.value===0)),ma(zC,f),kp(B(()=>oa(n.value,{0:fa.Open,1:fa.Closed}))),()=>{let p={open:n.value===0,close:f.closeMenu};return qt({ourProps:{},theirProps:e,slot:p,slots:t,attrs:a,name:"Menu"})}}}),nye=kt({name:"MenuButton",props:{disabled:{type:Boolean,default:!1},as:{type:[Object,String],default:"button"},id:{type:String,default:()=>`headlessui-menu-button-${Pa()}`}},setup(e,{attrs:t,slots:a,expose:n}){let i=xp("MenuButton");n({el:i.buttonRef,$el:i.buttonRef});function o(u){switch(u.key){case Je.Space:case Je.Enter:case Je.ArrowDown:u.preventDefault(),u.stopPropagation(),i.openMenu(),ha(()=>{var _;(_=pe(i.itemsRef))==null||_.focus({preventScroll:!0}),i.goToItem(ua.First)});break;case Je.ArrowUp:u.preventDefault(),u.stopPropagation(),i.openMenu(),ha(()=>{var _;(_=pe(i.itemsRef))==null||_.focus({preventScroll:!0}),i.goToItem(ua.Last)});break}}function s(u){switch(u.key){case Je.Space:u.preventDefault();break}}function l(u){e.disabled||(i.menuState.value===0?(i.closeMenu(),ha(()=>{var _;return(_=pe(i.buttonRef))==null?void 0:_.focus({preventScroll:!0})})):(u.preventDefault(),i.openMenu(),tye(()=>{var _;return(_=pe(i.itemsRef))==null?void 0:_.focus({preventScroll:!0})})))}let d=tu(B(()=>({as:e.as,type:t.type})),i.buttonRef);return()=>{var u;let _={open:i.menuState.value===0},{id:f,...p}=e,h={ref:i.buttonRef,id:f,type:d.value,"aria-haspopup":"menu","aria-controls":(u=pe(i.itemsRef))==null?void 0:u.id,"aria-expanded":i.menuState.value===0,onKeydown:o,onKeyup:s,onClick:l};return qt({ourProps:h,theirProps:p,slot:_,attrs:t,slots:a,name:"MenuButton"})}}}),iye=kt({name:"MenuItems",props:{as:{type:[Object,String],default:"div"},static:{type:Boolean,default:!1},unmount:{type:Boolean,default:!0},id:{type:String,default:()=>`headlessui-menu-items-${Pa()}`}},setup(e,{attrs:t,slots:a,expose:n}){let i=xp("MenuItems"),o=re(null);n({el:i.itemsRef,$el:i.itemsRef}),sC({container:B(()=>pe(i.itemsRef)),enabled:B(()=>i.menuState.value===0),accept(_){return _.getAttribute("role")==="menuitem"?NodeFilter.FILTER_REJECT:_.hasAttribute("role")?NodeFilter.FILTER_SKIP:NodeFilter.FILTER_ACCEPT},walk(_){_.setAttribute("role","none")}});function s(_){var f;switch(o.value&&clearTimeout(o.value),_.key){case Je.Space:if(i.searchQuery.value!=="")return _.preventDefault(),_.stopPropagation(),i.search(_.key);case Je.Enter:if(_.preventDefault(),_.stopPropagation(),i.activeItemIndex.value!==null){let p=i.items.value[i.activeItemIndex.value];(f=pe(p.dataRef.domRef))==null||f.click()}i.closeMenu(),aC(pe(i.buttonRef));break;case Je.ArrowDown:return _.preventDefault(),_.stopPropagation(),i.goToItem(ua.Next);case Je.ArrowUp:return _.preventDefault(),_.stopPropagation(),i.goToItem(ua.Previous);case Je.Home:case Je.PageUp:return _.preventDefault(),_.stopPropagation(),i.goToItem(ua.First);case Je.End:case Je.PageDown:return _.preventDefault(),_.stopPropagation(),i.goToItem(ua.Last);case Je.Escape:_.preventDefault(),_.stopPropagation(),i.closeMenu(),ha(()=>{var p;return(p=pe(i.buttonRef))==null?void 0:p.focus({preventScroll:!0})});break;case Je.Tab:_.preventDefault(),_.stopPropagation(),i.closeMenu(),ha(()=>fve(pe(i.buttonRef),_.shiftKey?Kt.Previous:Kt.Next));break;default:_.key.length===1&&(i.search(_.key),o.value=setTimeout(()=>i.clearSearch(),350));break}}function l(_){switch(_.key){case Je.Space:_.preventDefault();break}}let d=yc(),u=B(()=>d!==null?(d.value&fa.Open)===fa.Open:i.menuState.value===0);return()=>{var _,f;let p={open:i.menuState.value===0},{id:h,...g}=e,y={"aria-activedescendant":i.activeItemIndex.value===null||(_=i.items.value[i.activeItemIndex.value])==null?void 0:_.id,"aria-labelledby":(f=pe(i.buttonRef))==null?void 0:f.id,id:h,onKeydown:s,onKeyup:l,role:"menu",tabIndex:0,ref:i.itemsRef};return qt({ourProps:y,theirProps:g,slot:p,attrs:t,slots:a,features:Ii.RenderStrategy|Ii.Static,visible:u.value,name:"MenuItems"})}}}),oye=kt({name:"MenuItem",inheritAttrs:!1,props:{as:{type:[Object,String],default:"template"},disabled:{type:Boolean,default:!1},id:{type:String,default:()=>`headlessui-menu-item-${Pa()}`}},setup(e,{slots:t,attrs:a,expose:n}){let i=xp("MenuItem"),o=re(null);n({el:o,$el:o});let s=B(()=>i.activeItemIndex.value!==null?i.items.value[i.activeItemIndex.value].id===e.id:!1),l=PC(o),d=B(()=>({disabled:e.disabled,get textValue(){return l()},domRef:o}));Ct(()=>i.registerItem(e.id,d)),xa(()=>i.unregisterItem(e.id)),Ca(()=>{i.menuState.value===0&&s.value&&i.activationTrigger.value!==0&&ha(()=>{var y,k;return(k=(y=pe(o))==null?void 0:y.scrollIntoView)==null?void 0:k.call(y,{block:"nearest"})})});function u(y){if(e.disabled)return y.preventDefault();i.closeMenu(),aC(pe(i.buttonRef))}function _(){if(e.disabled)return i.goToItem(ua.Nothing);i.goToItem(ua.Specific,e.id)}let f=oC();function p(y){f.update(y)}function h(y){f.wasMoved(y)&&(e.disabled||s.value||i.goToItem(ua.Specific,e.id,0))}function g(y){f.wasMoved(y)&&(e.disabled||s.value&&i.goToItem(ua.Nothing))}return()=>{let{disabled:y}=e,k={active:s.value,disabled:y,close:i.closeMenu},{id:b,...P}=e;return qt({ourProps:{id:b,ref:o,role:"menuitem",tabIndex:y===!0?void 0:-1,"aria-disabled":y===!0?!0:void 0,disabled:void 0,onClick:u,onFocus:_,onPointerenter:p,onMouseenter:p,onPointermove:h,onMousemove:h,onPointerleave:g,onMouseleave:g},theirProps:{...a,...P},slot:k,attrs:a,slots:t,name:"MenuItem"})}}});var sye=(e=>(e[e.Open=0]="Open",e[e.Closed=1]="Closed",e))(sye||{});let AC=Symbol("PopoverContext");function vb(e){let t=bt(AC,null);if(t===null){let a=new Error(`<${e} /> is missing a parent <${jC.name} /> component.`);throw Error.captureStackTrace&&Error.captureStackTrace(a,vb),a}return t}let rye=Symbol("PopoverGroupContext");function CC(){return bt(rye,null)}let TC=Symbol("PopoverPanelContext");function lye(){return bt(TC,null)}let jC=kt({name:"Popover",inheritAttrs:!1,props:{as:{type:[Object,String],default:"div"}},setup(e,{slots:t,attrs:a,expose:n}){var i;let o=re(null);n({el:o,$el:o});let s=re(1),l=re(null),d=re(null),u=re(null),_=re(null),f=B(()=>Dn(o)),p=B(()=>{var E,C;if(!pe(l)||!pe(_))return!1;for(let ie of document.querySelectorAll("body > *"))if(Number(ie==null?void 0:ie.contains(pe(l)))^Number(ie==null?void 0:ie.contains(pe(_))))return!0;let j=Jd(),A=j.indexOf(pe(l)),U=(A+j.length-1)%j.length,V=(A+1)%j.length,ee=j[U],J=j[V];return!((E=pe(_))!=null&&E.contains(ee))&&!((C=pe(_))!=null&&C.contains(J))}),h={popoverState:s,buttonId:re(null),panelId:re(null),panel:_,button:l,isPortalled:p,beforePanelSentinel:d,afterPanelSentinel:u,togglePopover(){s.value=oa(s.value,{0:1,1:0})},closePopover(){s.value!==1&&(s.value=1)},close(E){h.closePopover();let C=E?E instanceof HTMLElement?E:E.value instanceof HTMLElement?pe(E):pe(h.button):pe(h.button);C==null||C.focus()}};ma(AC,h),kp(B(()=>oa(s.value,{0:fa.Open,1:fa.Closed})));let g={buttonId:h.buttonId,panelId:h.panelId,close(){h.closePopover()}},y=CC(),k=y==null?void 0:y.registerPopover,[b,P]=wC(),w=gC({mainTreeNodeRef:y==null?void 0:y.mainTreeNodeRef,portals:b,defaultContainers:[l,_]});function x(){var E,C,j,A;return(A=y==null?void 0:y.isFocusWithinPopoverGroup())!=null?A:((E=f.value)==null?void 0:E.activeElement)&&(((C=pe(l))==null?void 0:C.contains(f.value.activeElement))||((j=pe(_))==null?void 0:j.contains(f.value.activeElement)))}return Ca(()=>k==null?void 0:k(g)),fb((i=f.value)==null?void 0:i.defaultView,"focus",E=>{var C,j;E.target!==window&&E.target instanceof HTMLElement&&s.value===0&&(x()||l&&_&&(w.contains(E.target)||(C=pe(h.beforePanelSentinel))!=null&&C.contains(E.target)||(j=pe(h.afterPanelSentinel))!=null&&j.contains(E.target)||h.closePopover()))},!0),bp(w.resolveContainers,(E,C)=>{var j;h.closePopover(),eu(C,Xd.Loose)||(E.preventDefault(),(j=pe(l))==null||j.focus())},B(()=>s.value===0)),()=>{let E={open:s.value===0,close:h.close};return Et(yt,[Et(P,{},()=>qt({theirProps:{...e,...a},ourProps:{ref:o},slot:E,slots:t,attrs:a,name:"Popover"})),Et(w.MainTreeNode)])}}}),cye=kt({name:"PopoverButton",props:{as:{type:[Object,String],default:"button"},disabled:{type:[Boolean],default:!1},id:{type:String,default:()=>`headlessui-popover-button-${Pa()}`}},inheritAttrs:!1,setup(e,{attrs:t,slots:a,expose:n}){let i=vb("PopoverButton"),o=B(()=>Dn(i.button));n({el:i.button,$el:i.button}),Ct(()=>{i.buttonId.value=e.id}),xa(()=>{i.buttonId.value=null});let s=CC(),l=s==null?void 0:s.closeOthers,d=lye(),u=B(()=>d===null?!1:d.value===i.panelId.value),_=re(null),f=`headlessui-focus-sentinel-${Pa()}`;u.value||Ca(()=>{i.button.value=pe(_)});let p=tu(B(()=>({as:e.as,type:t.type})),_);function h(w){var x,E,C,j,A;if(u.value){if(i.popoverState.value===1)return;switch(w.key){case Je.Space:case Je.Enter:w.preventDefault(),(E=(x=w.target).click)==null||E.call(x),i.closePopover(),(C=pe(i.button))==null||C.focus();break}}else switch(w.key){case Je.Space:case Je.Enter:w.preventDefault(),w.stopPropagation(),i.popoverState.value===1&&(l==null||l(i.buttonId.value)),i.togglePopover();break;case Je.Escape:if(i.popoverState.value!==0)return l==null?void 0:l(i.buttonId.value);if(!pe(i.button)||(j=o.value)!=null&&j.activeElement&&!((A=pe(i.button))!=null&&A.contains(o.value.activeElement)))return;w.preventDefault(),w.stopPropagation(),i.closePopover();break}}function g(w){u.value||w.key===Je.Space&&w.preventDefault()}function y(w){var x,E;e.disabled||(u.value?(i.closePopover(),(x=pe(i.button))==null||x.focus()):(w.preventDefault(),w.stopPropagation(),i.popoverState.value===1&&(l==null||l(i.buttonId.value)),i.togglePopover(),(E=pe(i.button))==null||E.focus()))}function k(w){w.preventDefault(),w.stopPropagation()}let b=hb();function P(){let w=pe(i.panel);if(!w)return;function x(){oa(b.value,{[si.Forwards]:()=>Oa(w,Kt.First),[si.Backwards]:()=>Oa(w,Kt.Last)})===Zi.Error&&Oa(Jd().filter(E=>E.dataset.headlessuiFocusGuard!=="true"),oa(b.value,{[si.Forwards]:Kt.Next,[si.Backwards]:Kt.Previous}),{relativeTo:pe(i.button)})}x()}return()=>{let w=i.popoverState.value===0,x={open:w},{id:E,...C}=e,j=u.value?{ref:_,type:p.value,onKeydown:h,onClick:y}:{ref:_,id:E,type:p.value,"aria-expanded":i.popoverState.value===0,"aria-controls":pe(i.panel)?i.panelId.value:void 0,disabled:e.disabled?!0:void 0,onKeydown:h,onKeyup:g,onClick:y,onMousedown:k};return Et(yt,[qt({ourProps:j,theirProps:{...t,...C},slot:x,attrs:t,slots:a,name:"PopoverButton"}),w&&!u.value&&i.isPortalled.value&&Et(io,{id:f,features:no.Focusable,"data-headlessui-focus-guard":!0,as:"button",type:"button",onFocus:P})])}}}),dye=kt({name:"PopoverPanel",props:{as:{type:[Object,String],default:"div"},static:{type:Boolean,default:!1},unmount:{type:Boolean,default:!0},focus:{type:Boolean,default:!1},id:{type:String,default:()=>`headlessui-popover-panel-${Pa()}`}},inheritAttrs:!1,setup(e,{attrs:t,slots:a,expose:n}){let{focus:i}=e,o=vb("PopoverPanel"),s=B(()=>Dn(o.panel)),l=`headlessui-focus-sentinel-before-${Pa()}`,d=`headlessui-focus-sentinel-after-${Pa()}`;n({el:o.panel,$el:o.panel}),Ct(()=>{o.panelId.value=e.id}),xa(()=>{o.panelId.value=null}),ma(TC,o.panelId),Ca(()=>{var k,b;if(!i||o.popoverState.value!==0||!o.panel)return;let P=(k=s.value)==null?void 0:k.activeElement;(b=pe(o.panel))!=null&&b.contains(P)||Oa(pe(o.panel),Kt.First)});let u=yc(),_=B(()=>u!==null?(u.value&fa.Open)===fa.Open:o.popoverState.value===0);function f(k){var b,P;switch(k.key){case Je.Escape:if(o.popoverState.value!==0||!pe(o.panel)||s.value&&!((b=pe(o.panel))!=null&&b.contains(s.value.activeElement)))return;k.preventDefault(),k.stopPropagation(),o.closePopover(),(P=pe(o.button))==null||P.focus();break}}function p(k){var b,P,w,x,E;let C=k.relatedTarget;C&&pe(o.panel)&&((b=pe(o.panel))!=null&&b.contains(C)||(o.closePopover(),((w=(P=pe(o.beforePanelSentinel))==null?void 0:P.contains)!=null&&w.call(P,C)||(E=(x=pe(o.afterPanelSentinel))==null?void 0:x.contains)!=null&&E.call(x,C))&&C.focus({preventScroll:!0})))}let h=hb();function g(){let k=pe(o.panel);if(!k)return;function b(){oa(h.value,{[si.Forwards]:()=>{var P;Oa(k,Kt.First)===Zi.Error&&((P=pe(o.afterPanelSentinel))==null||P.focus())},[si.Backwards]:()=>{var P;(P=pe(o.button))==null||P.focus({preventScroll:!0})}})}b()}function y(){let k=pe(o.panel);if(!k)return;function b(){oa(h.value,{[si.Forwards]:()=>{let P=pe(o.button),w=pe(o.panel);if(!P)return;let x=Jd(),E=x.indexOf(P),C=x.slice(0,E+1),j=[...x.slice(E+1),...C];for(let A of j.slice())if(A.dataset.headlessuiFocusGuard==="true"||w!=null&&w.contains(A)){let U=j.indexOf(A);U!==-1&&j.splice(U,1)}Oa(j,Kt.First,{sorted:!1})},[si.Backwards]:()=>{var P;Oa(k,Kt.Previous)===Zi.Error&&((P=pe(o.button))==null||P.focus())}})}b()}return()=>{let k={open:o.popoverState.value===0,close:o.close},{id:b,focus:P,...w}=e,x={ref:o.panel,id:b,onKeydown:f,onFocusout:i&&o.popoverState.value===0?p:void 0,tabIndex:-1};return qt({ourProps:x,theirProps:{...t,...w},attrs:t,slot:k,slots:{...a,default:(...E)=>{var C;return[Et(yt,[_.value&&o.isPortalled.value&&Et(io,{id:l,ref:o.beforePanelSentinel,features:no.Focusable,"data-headlessui-focus-guard":!0,as:"button",type:"button",onFocus:g}),(C=a.default)==null?void 0:C.call(a,...E),_.value&&o.isPortalled.value&&Et(io,{id:d,ref:o.afterPanelSentinel,features:no.Focusable,"data-headlessui-focus-guard":!0,as:"button",type:"button",onFocus:y})])]}},features:Ii.RenderStrategy|Ii.Static,visible:_.value,name:"PopoverPanel"})}}}),NC=Symbol("LabelContext");function IC(){let e=bt(NC,null);if(e===null){let t=new Error("You used a