Files
nademitex_admin/dist/assets/AdminImagePicker-DhyB3HhH.js
2026-10-01 20:50:23 +03:30

1 line
3.4 KiB
JavaScript

import{A as e,At as t,Ot as n,c as r,ct as i,d as a,et as o,g as s,jt as c,t as l,u}from"./_plugin-vue_export-helper-vx-p5QAT.js";var d=960,f=.82;function p(e){let t=e.trim();return t?`url("${t.replace(/"/g,`\\"`)}")`:``}async function m(e){if(!e.type.startsWith(`image/`))throw Error(`فقط فایل تصویری مجاز است.`);if(e.size>8388608)throw Error(`حجم تصویر نباید بیشتر از ۸ مگابایت باشد.`);return g(await h(e))}function h(e){return new Promise((t,n)=>{let r=new FileReader;r.onload=()=>t(String(r.result??``)),r.onerror=()=>n(Error(`خواندن تصویر ناموفق بود.`)),r.readAsDataURL(e)})}function g(e){return new Promise((t,n)=>{let r=new Image;r.onload=()=>{let e=Math.min(1,d/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`,f))},r.onerror=()=>n(Error(`تصویر نامعتبر است.`)),r.src=e})}var _={key:0,class:`image-picker__label`},v={class:`image-picker__row`},y=[`disabled`,`aria-label`],b=[`src`],x={key:1,class:`image-picker__preview image-picker__preview--empty`,"aria-hidden":`true`},S={class:`image-picker__actions`},C=[`disabled`],w=[`disabled`],T={key:1,class:`image-picker__error`},E={key:2,class:`image-picker__ok`},D=l(s({__name:`AdminImagePicker`,props:{modelValue:{},label:{},showRemove:{type:Boolean,default:!0},compact:{type:Boolean,default:!1}},emits:[`update:modelValue`],setup(s,{emit:l}){let d=s,f=l,h=o(null),g=o(!1),D=o(``),O=o(!1);function k(){h.value?.click()}async function A(e){let t=e.target,n=t.files?.[0];if(t.value=``,n){g.value=!0,D.value=``,O.value=!1;try{f(`update:modelValue`,await m(n)),O.value=!0}catch(e){D.value=e instanceof Error?e.message:`بارگذاری تصویر ناموفق بود.`}finally{g.value=!1}}}function j(){f(`update:modelValue`,null)}return(o,l)=>(e(),a(`div`,{class:n([`image-picker`,{"image-picker--compact":s.compact}])},[s.label&&!s.compact?(e(),a(`p`,_,c(s.label),1)):u(``,!0),r(`div`,v,[s.compact?(e(),a(`button`,{key:0,type:`button`,class:`image-picker__preview-hit`,disabled:g.value,"aria-label":d.modelValue?`تغییر تصویر`:`افزودن تصویر`,onClick:k},[d.modelValue?(e(),a(`img`,{key:0,src:d.modelValue,alt:``,class:`image-picker__preview image-picker__preview-img`},null,8,b)):(e(),a(`span`,x))],8,y)):(e(),a(`div`,{key:1,class:n([`image-picker__preview`,{"image-picker__preview--empty":!d.modelValue}]),style:t(d.modelValue?{backgroundImage:i(p)(d.modelValue)}:void 0)},null,6)),r(`div`,S,[r(`button`,{type:`button`,class:n(s.compact?`admin-btn admin-btn--ghost admin-btn--sm image-picker__change`:`admin-btn admin-btn--outline admin-btn--sm`),disabled:g.value,onClick:k},c(d.modelValue?`تغییر تصویر`:`افزودن تصویر`),11,C),!s.compact&&d.showRemove&&d.modelValue?(e(),a(`button`,{key:0,type:`button`,class:`admin-btn admin-btn--outline admin-btn--sm`,disabled:g.value,onClick:j},` حذف `,8,w)):u(``,!0),D.value?(e(),a(`p`,T,c(D.value),1)):O.value&&!s.compact?(e(),a(`p`,E,`تصویر انتخاب شد — برای ثبت نهایی «ثبت» را بزنید.`)):u(``,!0)])]),r(`input`,{ref_key:`inputRef`,ref:h,type:`file`,accept:`image/*`,class:`image-picker__file`,onChange:A},null,544)],2))}}),[[`__scopeId`,`data-v-64060a40`]]);export{p as n,D as t};