Files
nademitex_admin/dist/assets/AdminImagePicker-DzV79efN.js
T

1 line
2.5 KiB
JavaScript

import{$ as e,B as t,Q as n,St as r,X as i,bt as a,ct as o,rt as s,vt as c,xt as l}from"./index-BHqDDh7X.js";var u=960,d=.82;async function f(e){if(!e.type.startsWith(`image/`))throw Error(`فقط فایل تصویری مجاز است.`);if(e.size>8388608)throw Error(`حجم تصویر نباید بیشتر از ۸ مگابایت باشد.`);return m(await p(e))}function p(e){return new Promise((t,n)=>{let r=new FileReader;r.onload=()=>t(String(r.result??``)),r.onerror=()=>n(Error(`خواندن تصویر ناموفق بود.`)),r.readAsDataURL(e)})}function m(e){return new Promise((t,n)=>{let r=new Image;r.onload=()=>{let e=Math.min(1,u/Math.max(r.width,r.height)),i=Math.max(1,Math.round(r.width*e)),a=Math.max(1,Math.round(r.height*e)),o=document.createElement(`canvas`);o.width=i,o.height=a;let s=o.getContext(`2d`);if(!s){n(Error(`پردازش تصویر ناموفق بود.`));return}s.drawImage(r,0,0,i,a),t(o.toDataURL(`image/jpeg`,d))},r.onerror=()=>n(Error(`تصویر نامعتبر است.`)),r.src=e})}var h={class:`image-picker`},g={key:0,class:`image-picker__label`},_={class:`image-picker__row`},v={class:`image-picker__actions`},y=[`disabled`],b=[`disabled`],x={key:1,class:`image-picker__error`},S=t(s({__name:`AdminImagePicker`,props:{modelValue:{},label:{}},emits:[`update:modelValue`],setup(t,{emit:s}){let u=t,d=s,p=c(null),m=c(!1),S=c(``);function C(){p.value?.click()}async function w(e){let t=e.target,n=t.files?.[0];if(t.value=``,n){m.value=!0,S.value=``;try{d(`update:modelValue`,await f(n))}catch(e){S.value=e instanceof Error?e.message:`بارگذاری تصویر ناموفق بود.`}finally{m.value=!1}}}function T(){d(`update:modelValue`,null)}return(s,c)=>(o(),e(`div`,h,[t.label?(o(),e(`p`,g,r(t.label),1)):n(``,!0),i(`div`,_,[i(`div`,{class:a([`image-picker__preview`,{"image-picker__preview--empty":!u.modelValue}]),style:l(u.modelValue?{backgroundImage:`url(${u.modelValue})`}:void 0)},null,6),i(`div`,v,[i(`button`,{type:`button`,class:`admin-btn admin-btn--outline admin-btn--sm`,disabled:m.value,onClick:C},r(u.modelValue?`تغییر تصویر`:`افزودن تصویر`),9,y),u.modelValue?(o(),e(`button`,{key:0,type:`button`,class:`admin-btn admin-btn--outline admin-btn--sm`,disabled:m.value,onClick:T},` حذف `,8,b)):n(``,!0),S.value?(o(),e(`p`,x,r(S.value),1)):n(``,!0)])]),i(`input`,{ref_key:`inputRef`,ref:p,type:`file`,accept:`image/*`,class:`image-picker__file`,onChange:w},null,544)]))}}),[[`__scopeId`,`data-v-55584001`]]);export{f as n,S as t};