el-image-viewer-4a682b8a.js 5.7 KB

1
  1. import{bH as ve,aG as me,aI as be,aJ as pe,aS as ge,bu as E,d as G,bI as q,bJ as ke,bK as _e,b1 as we,aK as xe,bL as Ie,r as N,bM as ye,aV as ze,M as _,N as H,an as Ne,q as he,o as h,x as J,f as i,w as p,g as m,Y as f,a,aC as K,aZ as Ce,a4 as C,a_ as w,b3 as Oe,c as X,F as U,bN as Te,bO as Le,bP as Ae,bQ as Re,P as Se,bR as Ye,bS as Ee,v as Xe,z as Me,a3 as Fe,aL as Pe,Z as $e,bT as Be,aM as Ve,bU as A,bV as z,bW as We,aN as De,__tla as Ge}from"./index-689b1c98.js";let Z,O,qe=Promise.all([(()=>{try{return Ge}catch{}})()]).then(async()=>{O=function(g,T,v){var n=!0,b=!0;if(typeof g!="function")throw new TypeError("Expected a function");return ve(v)&&(n="leading"in v?!!v.leading:n,b="trailing"in v?!!v.trailing:b),me(g,T,{leading:n,maxWait:T,trailing:b})};const j=be({urlList:{type:pe(Array),default:()=>ge([])},zIndex:{type:Number},initialIndex:{type:Number,default:0},infinite:{type:Boolean,default:!0},hideOnClickModal:Boolean,teleported:Boolean,closeOnPressEscape:{type:Boolean,default:!0},zoomRate:{type:Number,default:1.2},minScale:{type:Number,default:.2},maxScale:{type:Number,default:7}}),Q={close:()=>!0,switch:g=>E(g),rotate:g=>E(g)},ee=["src"],ae=G({name:"ElImageViewer"});Z=De(Ve(G({...ae,props:j,emits:Q,setup(g,{expose:T,emit:v}){const n=g,b={CONTAIN:{name:"contain",icon:q(ke)},ORIGINAL:{name:"original",icon:q(_e)}},{t:se}=we(),l=xe("image-viewer"),{nextZIndex:ne}=Ie(),R=N(),M=N([]),F=ye(),I=N(!0),k=N(n.initialIndex),L=ze(b.CONTAIN),t=N({scale:1,deg:0,offsetX:0,offsetY:0,enableTransition:!1}),le=_(()=>{const{urlList:e}=n;return e.length<=1}),P=_(()=>k.value===0),$=_(()=>k.value===n.urlList.length-1),te=_(()=>n.urlList[k.value]),oe=_(()=>[l.e("btn"),l.e("prev"),l.is("disabled",!n.infinite&&P.value)]),ie=_(()=>[l.e("btn"),l.e("next"),l.is("disabled",!n.infinite&&$.value)]),ue=_(()=>{const{scale:e,deg:s,offsetX:o,offsetY:c,enableTransition:u}=t.value;let r=o/e,d=c/e;switch(s%360){case 90:case-270:[r,d]=[d,-r];break;case 180:case-180:[r,d]=[-r,-d];break;case 270:case-90:[r,d]=[-d,r]}const y={transform:`scale(${e}) rotate(${s}deg) translate(${r}px, ${d}px)`,transition:u?"transform .3s":""};return L.value.name===b.CONTAIN.name&&(y.maxWidth=y.maxHeight="100%"),y}),ce=_(()=>E(n.zIndex)?n.zIndex:ne());function S(){F.stop(),v("close")}function re(){I.value=!1}function de(e){I.value=!1,e.target.alt=se("el.image.error")}function fe(e){if(I.value||e.button!==0||!R.value)return;t.value.enableTransition=!1;const{offsetX:s,offsetY:o}=t.value,c=e.pageX,u=e.pageY,r=O(y=>{t.value={...t.value,offsetX:s+y.pageX-c,offsetY:o+y.pageY-u}}),d=A(document,"mousemove",r);A(document,"mouseup",()=>{d()}),e.preventDefault()}function B(){t.value={scale:1,deg:0,offsetX:0,offsetY:0,enableTransition:!1}}function V(){if(I.value)return;const e=We(b),s=Object.values(b),o=L.value.name,c=(s.findIndex(u=>u.name===o)+1)%e.length;L.value=b[e[c]],B()}function Y(e){const s=n.urlList.length;k.value=(e+s)%s}function W(){P.value&&!n.infinite||Y(k.value-1)}function D(){$.value&&!n.infinite||Y(k.value+1)}function x(e,s={}){if(I.value)return;const{minScale:o,maxScale:c}=n,{zoomRate:u,rotateDeg:r,enableTransition:d}={zoomRate:n.zoomRate,rotateDeg:90,enableTransition:!0,...s};switch(e){case"zoomOut":t.value.scale>o&&(t.value.scale=Number.parseFloat((t.value.scale/u).toFixed(3)));break;case"zoomIn":t.value.scale<c&&(t.value.scale=Number.parseFloat((t.value.scale*u).toFixed(3)));break;case"clockwise":t.value.deg+=r,v("rotate",t.value.deg);break;case"anticlockwise":t.value.deg-=r,v("rotate",t.value.deg)}t.value.enableTransition=d}return H(te,()=>{Ne(()=>{const e=M.value[0];e!=null&&e.complete||(I.value=!0)})}),H(k,e=>{B(),v("switch",e)}),he(()=>{var e,s;(function(){const o=O(u=>{switch(u.code){case z.esc:n.closeOnPressEscape&&S();break;case z.space:V();break;case z.left:W();break;case z.up:x("zoomIn");break;case z.right:D();break;case z.down:x("zoomOut")}}),c=O(u=>{x((u.deltaY||u.deltaX)<0?"zoomIn":"zoomOut",{zoomRate:n.zoomRate,enableTransition:!1})});F.run(()=>{A(document,"keydown",o),A(document,"wheel",c)})})(),(s=(e=R.value)==null?void 0:e.focus)==null||s.call(e)}),T({setActiveItem:Y}),(e,s)=>(h(),J(Be,{to:"body",disabled:!e.teleported},[i($e,{name:"viewer-fade",appear:""},{default:p(()=>[m("div",{ref_key:"wrapper",ref:R,tabindex:-1,class:f(a(l).e("wrapper")),style:K({zIndex:a(ce)})},[m("div",{class:f(a(l).e("mask")),onClick:s[0]||(s[0]=Ce(o=>e.hideOnClickModal&&S(),["self"]))},null,2),C(" CLOSE "),m("span",{class:f([a(l).e("btn"),a(l).e("close")]),onClick:S},[i(a(w),null,{default:p(()=>[i(a(Oe))]),_:1})],2),C(" ARROW "),a(le)?C("v-if",!0):(h(),X(U,{key:0},[m("span",{class:f(a(oe)),onClick:W},[i(a(w),null,{default:p(()=>[i(a(Te))]),_:1})],2),m("span",{class:f(a(ie)),onClick:D},[i(a(w),null,{default:p(()=>[i(a(Le))]),_:1})],2)],64)),C(" ACTIONS "),m("div",{class:f([a(l).e("btn"),a(l).e("actions")])},[m("div",{class:f(a(l).e("actions__inner"))},[i(a(w),{onClick:s[1]||(s[1]=o=>x("zoomOut"))},{default:p(()=>[i(a(Ae))]),_:1}),i(a(w),{onClick:s[2]||(s[2]=o=>x("zoomIn"))},{default:p(()=>[i(a(Re))]),_:1}),m("i",{class:f(a(l).e("actions__divider"))},null,2),i(a(w),{onClick:V},{default:p(()=>[(h(),J(Se(a(L).icon)))]),_:1}),m("i",{class:f(a(l).e("actions__divider"))},null,2),i(a(w),{onClick:s[3]||(s[3]=o=>x("anticlockwise"))},{default:p(()=>[i(a(Ye))]),_:1}),i(a(w),{onClick:s[4]||(s[4]=o=>x("clockwise"))},{default:p(()=>[i(a(Ee))]),_:1})],2)],2),C(" CANVAS "),m("div",{class:f(a(l).e("canvas"))},[(h(!0),X(U,null,Xe(e.urlList,(o,c)=>Me((h(),X("img",{ref_for:!0,ref:u=>M.value[c]=u,key:o,src:o,style:K(a(ue)),class:f(a(l).e("img")),onLoad:re,onError:de,onMousedown:fe},null,46,ee)),[[Fe,c===k.value]])),128))],2),Pe(e.$slots,"default")],6)]),_:3})],8,["disabled"]))}}),[["__file","/home/runner/work/element-plus/element-plus/packages/components/image-viewer/src/image-viewer.vue"]]))});export{Z as E,qe as __tla,O as t};