el-image-viewer-498779d9.js 5.6 KB

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