@gx-design-vue/image 0.2.0-beta.3 → 0.2.0-beta.30
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Image.d.ts +83 -105
- package/dist/ImagePreview/Operations.d.ts +76 -0
- package/dist/ImagePreview/hooks/getFixScaleEleTransPosition.d.ts +16 -0
- package/dist/ImagePreview/hooks/useImageTransform.d.ts +35 -0
- package/dist/ImagePreview/hooks/useMouseEvent.d.ts +10 -0
- package/dist/ImagePreview/hooks/useTouchEvent.d.ts +8 -0
- package/dist/ImagePreview/index.d.ts +157 -0
- package/dist/ImagePreview/props.d.ts +85 -0
- package/dist/{components → ImagePreview}/style.d.ts +10 -6
- package/dist/ImagePreview/typings.d.ts +15 -0
- package/dist/ImagePreview/utils/KeyCode.d.ts +436 -0
- package/dist/ImagePreview/utils/addEventListener.d.ts +3 -0
- package/dist/ImagePreview/utils/util.d.ts +4 -0
- package/dist/hooks/raf.d.ts +5 -0
- package/dist/hooks/useFrameSetState.d.ts +3 -0
- package/dist/image.js +1250 -0
- package/dist/image.umd.cjs +12 -0
- package/dist/index.d.ts +7 -3
- package/dist/props.d.ts +36 -83
- package/dist/slots.d.ts +3 -0
- package/dist/style.d.ts +6 -5
- package/dist/typings.d.ts +2 -0
- package/dist/utils/util.d.ts +1 -0
- package/package.json +27 -50
- package/dist/components/ImageViewer.d.ts +0 -193
- package/dist/image.mjs +0 -1495
- package/dist/image.umd.js +0 -2
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Gx Design Pro
|
|
3
|
+
* Version: 0.2.0-beta.29
|
|
4
|
+
* Author: gx12358
|
|
5
|
+
* Copyright (C) 2024 gx12358
|
|
6
|
+
* License: MIT License
|
|
7
|
+
* Description: Gx Design Image
|
|
8
|
+
* Date Created: 2025-08-15
|
|
9
|
+
* Homepage:
|
|
10
|
+
* Contact: gx12358@gmail.com
|
|
11
|
+
*/
|
|
12
|
+
(function(b,t){typeof exports=="object"&&typeof module<"u"?t(exports,require("vue"),require("@ant-design/icons-vue"),require("@gx-design-vue/pro-provider"),require("@gx-design-vue/pro-utils"),require("@vueuse/core"),require("lodash-es"),require("@gx-design-vue/pro-hooks"),require("@ctrl/tinycolor")):typeof define=="function"&&define.amd?define(["exports","vue","@ant-design/icons-vue","@gx-design-vue/pro-provider","@gx-design-vue/pro-utils","@vueuse/core","lodash-es","@gx-design-vue/pro-hooks","@ctrl/tinycolor"],t):(b=typeof globalThis<"u"?globalThis:b||self,t(b.GImage={},b.vue,b.iconsVue,b.proProvider,b.proUtils,b.core,b.lodashEs,b.proHooks,b.tinycolor))})(this,(function(b,t,O,L,f,A,U,P,B){"use strict";const H={infinite:{type:Boolean,default:!0},zIndex:{type:Number,default:2e3},current:{type:Number,default:0},getContainer:{type:String}},le={preview:{type:[Object,Boolean],default:!0},src:{type:String,default:""},alt:{type:String,default:""},loading:{type:String},fit:{type:String,default:"contain"},crossOrigin:{type:String},lazy:Boolean,scrollContainer:{type:[String,Object]},placeholder:{type:[Function,Object,Boolean],default:()=>{}},fallback:{type:[Function,Object],default:()=>{}},onLoad:{type:Function},onError:{type:Function},onClick:{type:Function},imageStyle:{type:Object,default:()=>({})},imageClass:String,size:Number,width:Number,height:Number,zIndex:H.zIndex,getContainer:H.getContainer},_={urls:{type:Array,default:()=>[]},open:{type:Boolean,default:!1},scaleStep:{type:Number,default:.5},minScale:{type:Number,default:.32},maxScale:{type:Number,default:32},movable:{type:Boolean,default:!0},disabled:Boolean,zIndex:H.zIndex,current:H.current,infinite:H.infinite,getContainer:le.getContainer,onHideOnClickModal:{type:Boolean,default:!0},countRender:[Function,Array,Object],icons:{type:Object,default:()=>({})},onTransform:Function,onOpenChange:Function,"onUpdate:open":Function};let ge=e=>setTimeout(e,16),me=e=>clearTimeout(e);typeof window<"u"&&"requestAnimationFrame"in window&&(ge=e=>window.requestAnimationFrame(e),me=e=>window.cancelAnimationFrame(e));let ve=0;const re=new Map;function he(e){re.delete(e)}function we(e,n=1){ve+=1;const i=ve;function a(o){if(o===0)he(i),e();else{const s=ge(()=>{a(o-1)});re.set(i,s)}}return a(n),i}we.cancel=e=>{const n=re.get(e);return he(n),me(n)};const ne={x:0,y:0,rotate:0,scale:1,flipX:!1,flipY:!1};function Me(e,n,i,a){const o=t.ref(null),s=t.ref([]),[u,p]=P.useState(ne),m=h=>{p(ne),U.isEqual(ne,u.value)||a?.({transform:ne,action:h})},d=(h,x)=>{o.value===null&&(s.value=[],o.value=we(()=>{let I=U.cloneDeep(u.value);s.value.forEach(l=>{I={...I,...l}}),o.value=null,a?.({transform:I,action:x}),p(I)})),s.value.push({...u.value,...h})};return{transform:u,resetTransform:m,updateTransform:d,dispatchZoomChange:(h,x,I,l,r)=>{const{width:y,height:w,offsetWidth:S,offsetHeight:C,offsetLeft:M,offsetTop:E}=e.value;let T=h,N=u.value.scale*h;N>i.value?(N=i.value,T=i.value/u.value.scale):N<n.value&&(N=r?N:n.value,T=N/u.value.scale);const k=I??innerWidth/2,Q=l??innerHeight/2,X=T-1,$=X*y*.5,j=X*w*.5,F=X*(k-u.value.x-M),J=X*(Q-u.value.y-E);let W=u.value.x-(F-$),Z=u.value.y-(J-j);if(h<1&&N===1){const R=S*N,g=C*N,{width:Y,height:D}=A.useWindowSize();R<=Y.value&&g<=D.value&&(W=0,Z=0)}d({x:W,y:Z,scale:N},x)}}}function Te(e,n){process.env.NODE_ENV!=="production"&&console!==void 0&&console.error(`Warning: ${n}`)}let pe=!1;try{const e=Object.defineProperty({},"passive",{get(){pe=!0}});window.addEventListener("testPassive",null,e),window.removeEventListener("testPassive",null,e)}catch{}function G(e,n,i,a){if(e&&e.addEventListener){let o=a;o===void 0&&pe&&(n==="touchstart"||n==="touchmove"||n==="wheel")&&(o={passive:!1}),e.addEventListener(n,i,o)}return{remove:()=>{e&&e.removeEventListener&&e.removeEventListener(n,i)}}}const q=1,$e=1;function ye(e,n,i,a){const o=n+i,s=(i-a)/2;if(i>a){if(n>0)return{[e]:s};if(n<0&&o<a)return{[e]:-s}}else if(n<0||o>a)return{[e]:n<0?s:-s};return{}}function Se(e,n,i,a){const{width:o,height:s}=A.useWindowSize();let u=null;return e<=o.value&&n<=s.value?u={x:0,y:0}:(e>o.value||n>s.value)&&(u={...ye("x",i,e,o.value),...ye("y",a,n,s.value)}),u}function ze(e,n,i,a,o,s,u){const[p,m]=P.useState(!1),d=t.ref({diffX:0,diffY:0,transformX:0,transformY:0}),v=l=>{!n||l.button!==0||(l.preventDefault(),l.stopPropagation(),d.value={diffX:l.pageX-o.value.x,diffY:l.pageY-o.value.y,transformX:o.value.x,transformY:o.value.y},m(!0))},h=l=>{i&&p.value&&s({x:l.pageX-d.value.diffX,y:l.pageY-d.value.diffY},"move")},x=()=>{if(i&&p.value){m(!1);const{transformX:l,transformY:r}=d.value;if(!(o.value.x!==l&&o.value.y!==r))return;const w=e.value.offsetWidth*o.value.scale,S=e.value.offsetHeight*o.value.scale,{left:C,top:M}=e.value.getBoundingClientRect(),E=o.value.rotate%180!==0,T=Se(E?S:w,E?w:S,C,M);T&&s({...T},"dragRebound")}},I=l=>{if(!i||l.deltaY===0)return;const r=Math.abs(l.deltaY/100),y=Math.min(r,$e);let w=q+y*a.value;l.deltaY>0&&(w=q/w),u(w,"wheel",l.clientX,l.clientY)};return P.useEffect(()=>{let l,r,y,w;if(n){y=G(window,"mouseup",x,!1),w=G(window,"mousemove",h,!1);try{window.top!==window.self&&(l=G(window.top,"mouseup",x,!1),r=G(window.top,"mousemove",h,!1))}catch(S){Te(!1,`[rc-image] ${S}`)}}return()=>{y?.remove(),w?.remove(),l?.remove(),r?.remove()}},[i,p,()=>o.value.x,()=>o.value.y,()=>o.value.rotate,n]),{isMoving:p,onMouseDown:v,onMouseMove:h,onMouseUp:x,onWheel:I}}function oe(e,n){const i=e.x-n.x,a=e.y-n.y;return Math.hypot(i,a)}function Oe(e,n,i,a){const o=oe(e,i),s=oe(n,a);if(o===0&&s===0)return[e.x,e.y];const u=o/(o+s),p=e.x+u*(n.x-e.x),m=e.y+u*(n.y-e.y);return[p,m]}function Ae(e,n,i,a,o,s,u){const[p,m]=P.useState(!1),d=t.ref({point1:{x:0,y:0},point2:{x:0,y:0},eventType:"none"}),v=l=>{d.value={...d.value,...l}},h=l=>{if(!n.value)return;l.stopPropagation(),m(!0);const{touches:r=[]}=l;r.length>1?v({point1:{x:r[0].clientX,y:r[0].clientY},point2:{x:r[1].clientX,y:r[1].clientY},eventType:"touchZoom"}):v({point1:{x:r[0].clientX-o.value.x,y:r[0].clientY-o.value.y},eventType:"move"})},x=l=>{const{touches:r=[]}=l,{point1:y,point2:w,eventType:S}=d.value;if(r.length>1&&S==="touchZoom"){const C={x:r[0].clientX,y:r[0].clientY},M={x:r[1].clientX,y:r[1].clientY},[E,T]=Oe(y,w,C,M),N=oe(C,M)/oe(y,w);u(N,"touchZoom",E,T,!0),v({point1:C,point2:M,eventType:"touchZoom"})}else S==="move"&&(s({x:r[0].clientX-y.x,y:r[0].clientY-y.y},"move"),v({eventType:"move"}))},I=()=>{if(!i.value)return;if(p&&m(!1),v({eventType:"none"}),a.value>o.value.scale)return s({x:0,y:0,scale:a.value},"touchZoom");const l=e.value.offsetWidth*o.value.scale,r=e.value.offsetHeight*o.value.scale,{left:y,top:w}=e.value.getBoundingClientRect(),S=o.value.rotate%180!==0,C=Se(S?r:l,S?l:r,y,w);C&&s({...C},"dragRebound")};return P.useEffect(()=>{let l;return i.value&&n.value&&(l=G(window,"touchmove",r=>r.preventDefault(),{passive:!1})),()=>{l?.remove()}},[i,n]),{isTouching:p,onTouchStart:h,onTouchMove:x,onTouchEnd:I}}const Ee=t.defineComponent({name:"Operations",inheritAttrs:!1,props:{open:Boolean,count:{type:Number,default:0},current:{type:Number,default:0},showSwitch:Boolean,showProgress:Boolean,prefixCls:String,hashId:String,zIndex:_.zIndex,icons:_.icons,infinite:_.infinite,getContainer:_.getContainer,countRender:_.countRender,tools:Array,onClose:Function,onActive:Function},setup(e){const n=(i,a)=>{i.preventDefault(),i.stopPropagation(),e.onActive?.(a)};return()=>{const{prefixCls:i,hashId:a,tools:o}=e,s=L.getTransitionProps(`${e.prefixCls}-fade`),u=`${i}-operations-operation`,p=`${i}-operations-icon`;return t.createVNode(t.Teleport,{to:e.getContainer||"body"},{default:()=>[t.createVNode(t.Transition,s,{default:()=>[t.withDirectives(t.createVNode("div",{class:f.classNames(`${i}-operations-wrapper`,a),style:{zIndex:e.zIndex}},[e.icons?.close===null?null:t.createVNode("button",{class:`${i}-close ${a}`,onClick:e.onClose},[e.icons?.close||t.createVNode(O.CloseOutlined,null,null)]),e.showSwitch&&t.createVNode(t.Fragment,null,[t.createVNode("div",{class:f.classNames(`${i}-switch-left ${a}`,{[`${i}-switch-left-disabled`]:e.infinite?!1:e.current===0}),onClick:m=>n(m,-1)},[e.icons?.left||t.createVNode(O.LeftOutlined,null,null)]),t.createVNode("div",{class:f.classNames(`${i}-switch-right ${a}`,{[`${i}-switch-right-disabled`]:e.infinite?!1:e.current===e.count-1}),onClick:m=>n(m,1)},[e.icons?.right||t.createVNode(O.RightOutlined,null,null)])]),t.createVNode("div",{class:`${i}-footer ${a}`},[e.showProgress&&t.createVNode("div",{class:`${i}-progress`},[e.countRender?e.countRender(e.current+1,e.count):`${e.current+1} / ${e.count}`]),t.createVNode("div",{class:`${e.prefixCls}-operations`},[o?.map(({icon:m,onClick:d,type:v,disabled:h})=>t.createVNode("div",{class:f.classNames(u,{[`${e.prefixCls}-operations-operation-disabled`]:h&&h?.value}),onClick:d,key:v},[t.cloneVNode(m,{class:p})]))])])]),[[t.vShow,e.open]])]})]})}}}),Re=new L.Keyframe("viewFadeIn",{"0%":{opacity:0},"100%":{opacity:1}}),De=new L.Keyframe("viewFadeOut",{"0%":{opacity:1},"100%":{opacity:0}}),Ve=new L.Keyframe("viewZoomBadgeIn",{"0%":{transform:"scale(0)",opacity:0},"100%":{transform:"scale(1)",opacity:1}}),Pe=new L.Keyframe("viewZoomBadgeOut",{"0%":{transform:"scale(1)"},"100%":{transform:"scale(0)",opacity:0}}),Ce=e=>({position:e||"absolute",inset:0});function se(e){return{position:e,top:0,insetInlineEnd:0,bottom:0,insetInlineStart:0}}const Xe=e=>{const{previewCls:n,modalMaskBg:i,marginXL:a,margin:o,colorTextLightSolid:s,previewOperationColorDisabled:u,previewOperationHoverColor:p,motionDurationSlow:m,iconCls:d}=e,v=new B.TinyColor(i).setAlpha(.1),h=v.clone().setAlpha(.2),x=new B.TinyColor(i).setAlpha(.5),I=new B.TinyColor(i).setAlpha(.03);return{[`${n}-footer`]:{position:"fixed",bottom:a,left:{_skip_check_:!0,value:"50%"},display:"flex",flexDirection:"column",alignItems:"center",color:e.previewOperationColor,transform:"translateX(-50%)"},[`${n}-progress`]:{marginBottom:o},[`${n}-close`]:{position:"fixed",top:a,right:{_skip_check_:!0,value:a},display:"flex",alignItems:"center",justifyContent:"center",color:s,backgroundColor:v.toRgbString(),borderRadius:e.borderRadiusLG,backdropFilter:"saturate(180%) blur(10px)",width:e.sizeXL,height:e.sizeXL,outline:0,border:0,cursor:"pointer",transition:`all ${m}`,"&:hover":{backgroundColor:h.toRgbString()},[`& > ${d}`]:{fontSize:e.previewOperationSize}},[`${n}-operations`]:{display:"flex",alignItems:"center",gap:e.sizeXXS,padding:e.paddingXXS,border:`1px solid ${e.colorBorderSecondary}`,backgroundColor:x.toRgbString(),borderRadius:e.borderRadiusLG,backdropFilter:"saturate(150%) blur(10px)","&-operation":{display:"flex",alignItems:"center",justifyContent:"center",width:e.sizeXL+4,height:e.sizeXL+4,cursor:"pointer",color:s,borderRadius:e.borderRadiusSM,transition:`all ${m}`,userSelect:"none",[`&:not(${n}-operations-operation-disabled):hover > ${d}`]:{color:p},"&:hover":{backgroundColor:I.toRgbString()},"&-disabled":{color:u,cursor:"not-allowed"},"&:first-of-type":{marginInlineStart:0},[`& > ${d}`]:{fontSize:e.previewOperationSize}}}}},je=e=>{const{modalMaskBg:n,iconCls:i,previewOperationColorDisabled:a,previewCls:o,zIndexPopup:s,motionDurationSlow:u,colorTextLightSolid:p}=e,m=new B.TinyColor(n).setAlpha(.1),d=m.clone().setAlpha(.2);return{[`${o}-switch-left, ${o}-switch-right`]:{position:"fixed",insetBlockStart:"50%",zIndex:e.calc(s).add(1).equal(),display:"flex",alignItems:"center",justifyContent:"center",borderRadius:e.borderRadius,backdropFilter:"saturate(180%) blur(10px)",width:e.imagePreviewSwitchSize,height:e.imagePreviewSwitchSize,marginTop:e.calc(e.imagePreviewSwitchSize).mul(-1).div(2).equal(),color:p,background:m.toRgbString(),transform:"translateY(-50%)",cursor:"pointer",transition:`all ${u}`,userSelect:"none","&:hover":{background:d.toRgbString()},"&-disabled":{"&, &:hover":{color:a,background:"transparent",cursor:"not-allowed",[`> ${i}`]:{cursor:"not-allowed"}}},[`> ${i}`]:{fontSize:e.previewOperationSize}},[`${o}-switch-left`]:{insetInlineStart:e.marginSM},[`${o}-switch-right`]:{insetInlineEnd:e.marginSM}}},Ye=e=>{const{motionEaseOut:n,motionDurationSlow:i}=e;return{[e.componentCls]:{height:"100%",textAlign:"center",pointerEvents:"none","&-root":{...se("fixed"),zIndex:e.zIndexPopup,overflow:"auto",outline:0,WebkitOverflowScrolling:"touch"},"&-wrap":{...se("fixed"),zIndex:e.zIndexPopup,overflow:"auto",outline:0,WebkitOverflowScrolling:"touch"},"&-mask":{...se("fixed"),zIndex:e.zIndexPopupBase,height:"100%",backgroundColor:e.colorBgMask,backdropFilter:"blur(8px)"},"&-body":{...Ce(),overflow:"hidden"},"&-img":{maxWidth:"100%",maxHeight:"70%",verticalAlign:"middle",transform:"scale3d(1, 1, 1)",cursor:"grab",transition:`transform ${i} ${n} 0s`,userSelect:"none","&-wrapper":{...Ce(),transition:`transform ${i} ${n} 0s`,display:"flex",justifyContent:"center",alignItems:"center","& > *":{pointerEvents:"auto"},"&::before":{display:"inline-block",width:1,height:"50%",marginInlineEnd:-1,content:'""'}}},"&-moving":{[`${e.componentCls}-view-img`]:{cursor:"grabbing","&-wrapper":{transitionDuration:"0s"}}},"&-mask-zoom-appear, &-mask-zoom-enter":{animationName:Re,animationDuration:e.motionDurationSlow,animationTimingFunction:"linear",userSelect:"none"},"&-mask-zoom-leave":{animationName:De,animationDuration:e.motionDurationSlow,animationTimingFunction:"linear",pointerEvents:"none"},"&-zoom-appear, &-zoom-enter":{animationName:Ve,opacity:0,animationTimingFunction:e.motionEaseOutCirc,animationFillMode:"both",transform:"none",animationDuration:e.motionDurationMid,userSelect:"none"},"&-zoom-enter-active":{animationPlayState:"running"},"&-zoom-leave":{animationName:Pe,animationDuration:e.motionDurationSlow,animationTimingFunction:e.motionEaseInOutCirc,animationFillMode:"both"}},[`${e.componentCls}-root`]:{[`${e.componentCls}-wrapper`]:{zIndex:e.zIndexPopup}},[`${e.componentCls}-operations-wrapper`]:{position:"fixed",insetBlockStart:0,insetInlineEnd:0,zIndex:e.calc(e.zIndexPopup).add(1).equal(),width:"100%"},"&":[Xe(e),je(e)]}};function Be(e){return L.useStyle("ImageViewer",n=>{const i=L.mergeToken(n,{zIndexPopup:n.zIndexPopupBase+80,previewOperationColor:new B.TinyColor(n.colorTextLightSolid).setAlpha(.65).toRgbString(),previewOperationHoverColor:new B.TinyColor(n.colorTextLightSolid).setAlpha(.85).toRgbString(),previewOperationColorDisabled:new B.TinyColor(n.colorTextLightSolid).setAlpha(.25).toRgbString(),imagePreviewSwitchSize:n.sizeXL,modalMaskBg:new B.TinyColor("#000").setAlpha(.45).toRgbString(),previewOperationSize:n.fontSizeIcon*1.5,iconCls:".anticon",previewCls:n.componentCls});return[Ye(i)]},e)}const ce={ESC:27,LEFT:37,RIGHT:39},K={rotateLeft:t.createVNode(O.RotateLeftOutlined,null,null),rotateRight:t.createVNode(O.RotateRightOutlined,null,null),zoomIn:t.createVNode(O.ZoomInOutlined,null,null),zoomOut:t.createVNode(O.ZoomOutOutlined,null,null),flipX:t.createVNode(O.SwapOutlined,null,null),flipY:t.createVNode(O.SwapOutlined,{rotate:90},null)},xe=t.defineComponent({name:"GImagePreview",props:_,inheritAttrs:!1,slots:Object,emits:{close:()=>!0,transform:e=>!0,"update:open":e=>!0},setup:(e,{emit:n,expose:i,slots:a})=>{const o=f.getPrefixCls({suffixCls:"image-view"}),{wrapSSR:s,hashId:u}=Be(o),[p,m,d]=P.useMergedState(e.open,{value:t.toRef(e,"open"),onChange:c=>{e.onOpenChange?.(c),n("update:open",c)}}),[v,h]=P.useState(!1),[x,I]=P.useState(!0),l=t.ref(),{transform:r,resetTransform:y,updateTransform:w,dispatchZoomChange:S}=Me(l,t.toRef(e,"minScale"),t.toRef(e,"maxScale"),e.onTransform),{isMoving:C,onMouseDown:M,onWheel:E}=ze(l,t.toRef(e,"movable"),d,t.toRef(e,"scaleStep"),r,w,S),{isTouching:T,onTouchStart:N,onTouchMove:k,onTouchEnd:Q}=Ae(l,t.toRef(e,"movable"),d,t.toRef(e,"minScale"),r,w,S);P.useEffect(()=>{x.value||I(!0)},[x]);const X=t.ref(null),$=t.ref(e.current),j=t.reactive(new Map),F=t.computed(()=>new Map(Array.from(j).map(([c,{url:z}])=>[c,z]))),J=t.computed(()=>F.value.get($.value)),W=t.computed(()=>F.value.size),Z=t.computed(()=>Array.from(F.value.keys())),R=t.computed(()=>Z.value.indexOf($.value)),g=t.computed(()=>W.value>1),Y=t.computed(()=>W.value>=1);t.watch(d,c=>{c&&(v.value=!0)});const D=c=>{$.value=c};t.watch(()=>e.current,c=>{f.isNumber(c)&&D(c)});function de(c,z){j.set(c,{url:z,loading:!0,canPreview:!1})}const te=()=>{h(!1)},ie=()=>{y("close"),n("close")},_e=c=>{C.value||X.value===c?.target&&te()},Ge=()=>{const c=j.get($.value);c&&(c.loading=!1,c.canPreview=!0)},qe=c=>{const z=j.get($.value);z&&(z.loading=!1,z.canPreview=!1),c.target.alt="加载失败"},be=()=>{if(R.value>0||e.infinite){const c=R.value-1<0?e.urls.length-1:R.value-1;D(Z.value[c]),y("prev")}},Ne=()=>{if(R.value<W.value-1||e.infinite){const c=R.value+1>e.urls.length-1?0:R.value+1;D(Z.value[c]),y("next")}},Ke=()=>{S(q+e.scaleStep,"zoomIn")},Qe=()=>{S(q/(q+e.scaleStep),"zoomOut")},Je=()=>{w({rotate:r.value.rotate+90},"rotateRight")},Ue=()=>{w({rotate:r.value.rotate-90},"rotateLeft")},et=()=>{w({flipX:!r.value.flipX},"flipX")},tt=()=>{w({flipY:!r.value.flipY},"flipY")},Le=[{icon:f.getSlotVNode(a,e.icons,"flipY")||K.flipY,onClick:tt,type:"flipY"},{icon:f.getSlotVNode(a,e.icons,"flipX")||K.flipX,onClick:et,type:"flipX"},{icon:f.getSlotVNode(a,e.icons,"rotateLeft")||K.rotateLeft,onClick:Ue,type:"rotateLeft"},{icon:f.getSlotVNode(a,e.icons,"rotateRight")||K.rotateRight,onClick:Je,type:"rotateRight"},{icon:f.getSlotVNode(a,e.icons,"zoomOut")||K.zoomOut,onClick:()=>Qe(),type:"zoomOut",disabled:t.computed(()=>r.value.scale<=e.minScale)},{icon:f.getSlotVNode(a,e.icons,"zoomIn")||K.zoomIn,onClick:()=>Ke(),type:"zoomIn",disabled:t.computed(()=>r.value.scale===e.maxScale)}],nt=c=>{d.value&&(r.value.scale!==1?w({x:0,y:0,scale:1},"doubleClick"):S(q+e.scaleStep,"doubleClick",c.clientX,c.clientY))},ot=c=>{c.keyCode===ce.ESC&&te(),!(!d.value||!g.value)&&(c.keyCode===ce.LEFT?be():c.keyCode===ce.RIGHT&&Ne())};let fe=()=>{};return t.onMounted(()=>{t.watch(()=>e.urls,c=>{f.isArray(c)&&c.forEach((z,ae)=>{de(ae,z)})},{flush:"post",immediate:!0}),t.watch([()=>d.value,()=>C.value],()=>{fe();const c=G(window,"keydown",ot,!1);fe=()=>{c.remove()}},{flush:"post",immediate:!0})}),t.onUnmounted(()=>{fe()}),i({setOpen:c=>{m(c),$.value=e.current}}),()=>{const c=L.getTransitionProps(`${o}-mask-zoom`),z=L.getTransitionProps(`${o}-zoom`),ae={};for(const V in e.icons)ae[V]=f.getSlotVNode(a,e.icons,V);return s(t.createVNode(t.Fragment,null,[t.createVNode(t.Teleport,{to:e.getContainer||"body"},{default:()=>[d.value&&t.createVNode(t.Fragment,null,[t.createVNode("div",{class:`${o}-root ${u.value}`},[t.createVNode(t.Transition,c,{default:()=>[t.withDirectives(t.createVNode("div",{class:`${o}-mask ${u.value}`},null),[[t.vShow,d.value&&v.value]])]}),t.createVNode("div",{ref:X,tabindex:-1,class:[`${o}-wrap`,`${u.value}`,C.value&&`${o}-moving`],onClick:V=>e.onHideOnClickModal&&_e(V)},[t.createVNode(t.Transition,t.mergeProps(z,{onAfterLeave:()=>ie()}),{default:()=>[t.withDirectives(t.createVNode("div",{role:"dialog",class:`${o} ${u.value}`},[t.createVNode("div",{class:`${o}-content ${u.value}`},[t.createVNode("div",{class:`${o}-body ${u.value}`},[t.createVNode("div",{class:`${o}-img-wrapper ${u.value}`},[t.createVNode("img",{ref:l,class:`${o}-img ${u.value}`,src:J.value,onLoad:()=>Ge(),onError:V=>qe(V),style:{transform:`translate3d(${r.value.x}px, ${r.value.y}px, 0) scale3d(${r.value.flipX?"-":""}${r.value.scale}, ${r.value.flipY?"-":""}${r.value.scale}, 1) rotate(${r.value.rotate}deg)`,transitionDuration:!x.value||T.value?"0s":void 0},onWheel:E,onMousedown:M,onDblclick:nt,onTouchstart:N,onTouchmove:k,onTouchend:Q,onTouchcancel:Q},null)])])])]),[[t.vShow,d.value&&v.value]])]})])])])]}),d.value&&v.value&&t.createVNode(Ee,{open:d.value&&v.value,hashId:u.value,count:e.urls.length,current:$.value,zIndex:e.zIndex+1,getContainer:e.getContainer,prefixCls:o,icons:U.omit(ae,Le.map(({type:V})=>V)),tools:Le,infinite:e.infinite,countRender:f.getSlot(a,e,"countRender"),showSwitch:g.value,showProgress:Y.value,onClose:te,onActive:V=>V>0?Ne():be()},null)]))}}}),ue={width:"100%",height:"100%"},Fe={overflow:"hidden",whiteSpace:"nowrap",textOverflow:"ellipsis"},We=e=>{const{motionDurationSlow:n,paddingXXS:i,marginXXS:a,colorTextLightSolid:o}=e,s=".anticon";return{position:"absolute",inset:0,display:"flex",alignItems:"center",justifyContent:"center",color:o,background:new L.FastColor("#000").setA(.5).toRgbString(),cursor:"pointer",opacity:0,transition:`opacity ${n}`,[`.${e.componentCls}-mask-info`]:{...Fe,padding:`0 ${L.unit(i)}`,[s]:{marginInlineEnd:a,svg:{verticalAlign:"baseline"}}}}},Ze=e=>({position:e||"absolute",inset:0}),ke=e=>({[e.componentCls]:{display:"inline-block",position:"relative",overflow:"hidden",[`${e.componentCls}-img`]:{...ue,verticalAlign:"top",opacity:1,[`&${e.componentCls}-img-preview`]:{userSelect:"none",cursor:"pointer"},"&-placeholder":{...ue,backgroundColor:e.colorBgContainerDisabled,backgroundImage:"url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMTQuNSAyLjVoLTEzQS41LjUgMCAwIDAgMSAzdjEwYS41LjUgMCAwIDAgLjUuNWgxM2EuNS41IDAgMCAwIC41LS41VjNhLjUuNSAwIDAgMC0uNS0uNXpNNS4yODEgNC43NWExIDEgMCAwIDEgMCAyIDEgMSAwIDAgMSAwLTJ6bTguMDMgNi44M2EuMTI3LjEyNyAwIDAgMS0uMDgxLjAzSDIuNzY5YS4xMjUuMTI1IDAgMCAxLS4wOTYtLjIwN2wyLjY2MS0zLjE1NmEuMTI2LjEyNiAwIDAgMSAuMTc3LS4wMTZsLjAxNi4wMTZMNy4wOCAxMC4wOWwyLjQ3LTIuOTNhLjEyNi4xMjYgMCAwIDEgLjE3Ny0uMDE2bC4wMTUuMDE2IDMuNTg4IDQuMjQ0YS4xMjcuMTI3IDAgMCAxLS4wMi4xNzV6IiBmaWxsPSIjOEM4QzhDIiBmaWxsLXJ1bGU9Im5vbnplcm8iLz48L3N2Zz4=')",backgroundRepeat:"no-repeat",backgroundPosition:"center center",backgroundSize:"30%"}},[`${e.componentCls}-error`]:{...ue,display:"flex",alignItems:"center",justifyContent:"center"},[`${e.componentCls}-placeholder`]:{...Ze()},[`${e.componentCls}-mask`]:{...We(e)},[`${e.componentCls}-mask:hover`]:{opacity:1}}}),He=e=>typeof Element>"u"?!1:e instanceof Element;let Ie="";const ee=t.defineComponent({props:le,name:"GImage",inheritAttrs:!1,emits:{click:()=>!0,load:e=>!0,error:e=>!0},slots:Object,setup(e,{slots:n,emit:i,attrs:a}){const o=A.isClient&&"loading"in HTMLImageElement.prototype,s=f.getPrefixCls({suffixCls:"image"}),{wrapSSR:u,hashId:p}=L.useProStyle("Image",[ke],s),m=t.ref(),d=t.ref(),v=t.ref(!1),h=t.ref(!0),x=t.ref(!1),I=t.ref(),l=t.ref();let r,y;const w=t.computed(()=>e.loading==="eager"?!1:!o&&e.loading==="lazy"||e.lazy),S=t.computed(()=>A.isClient&&e.fit?{...e.imageStyle,objectFit:e.fit}:e.imageStyle),C=t.computed(()=>typeof e.preview=="object"?e.preview:{}),M=t.computed(()=>!!e.preview),E=t.computed(()=>{const{urls:g=[],current:Y=0}=C.value;if(f.isNumber(Y))return g.length>=Y?Y:0;const D=g.indexOf(e.src);return D>=0?D:0}),T=t.computed(()=>L.unit(e.width)),N=t.computed(()=>L.unit(e.height)),k=()=>{A.isClient&&(h.value=!0,v.value=!1,d.value=e.src)};function Q(g){v.value||(h.value=!1,v.value=!1,i("load",g))}function X(g){h.value=!1,v.value=!0,i("error",g)}function $(){f.isInContainer(I.value,l.value)&&(k(),J())}const j=A.useThrottleFn($,200,!0);async function F(){if(!A.isClient)return;await t.nextTick();const{scrollContainer:g}=e;He(g)?l.value=g:f.isString(g)&&g!==""?l.value=document.querySelector(g)??void 0:I.value&&(l.value=f.getScrollContainer(I.value)),l.value&&(r=A.useEventListener(l,"scroll",j),setTimeout(()=>$(),100))}function J(){!A.isClient||!l.value||!j||(r?.(),l.value=void 0)}function W(g){if(g.ctrlKey){if(g.deltaY<0)return g.preventDefault(),!1;if(g.deltaY>0)return g.preventDefault(),!1}}const Z=()=>{i("click"),!(h.value||v.value)&&M.value&&(y=A.useEventListener("wheel",W,{passive:!1}),Ie=document.body.style.overflow,document.body.style.overflow="hidden",x.value=!0)},R=()=>{y?.(),document.body.style.overflow=Ie,x.value=!1};return t.watch(()=>e.src,()=>{w.value?(h.value=!0,v.value=!1,J(),F()):k()}),t.watchEffect(()=>{M.value&&x.value?m.value?.setOpen(!0):m.value?.setOpen(!1)}),t.onMounted(()=>{w.value?F():k()}),()=>{const g=U.fromPairs(Object.entries(a).filter(([ie])=>/^(?:data-|on[A-Z])/i.test(ie)||["id","style","class"].includes(ie))),Y=U.omit(a,Object.keys(g)),D=f.getSlot(n,e,"fallback",{render:!0}),de=f.getSlot(n,e,"mask",{render:!0}),te=f.getSlot(n,e,"placeholder",{render:!0});return u(t.createVNode("div",t.mergeProps({class:{[`${p.value}`]:!0,[`${s}`]:!0},ref:I},g,{style:{width:L.unit(e.size)||T.value,height:L.unit(e.size)||N.value,...g.style||{}}}),[v.value?t.createVNode("div",{class:f.classNames(p.value,`${s}-error`)},[D]):t.createVNode(t.Fragment,null,[t.createVNode("img",t.mergeProps(Y,{src:d.value,loading:e.loading,style:S.value,class:f.classNames(p.value,e.imageClass,`${s}-img`,{[`${s}-img-placeholder`]:e.placeholder===!0,[`${s}-img-preview`]:M.value}),crossorigin:e.crossOrigin,width:T.value,height:N.value,onClick:Z,onLoad:Q,onError:X}),null),h.value&&t.createVNode("div",{class:f.classNames(`${s}-placeholder`,p.value)},[te])]),C.value.mask&&M.value&&t.createVNode("div",{class:f.classNames(`${s}-mask`,C.value.maskClass,p.value),style:{display:g.style?.display==="none"?"none":void 0}},[de||t.createVNode("div",{class:f.classNames(`${s}-mask-info`,p.value)},[t.createVNode(O.EyeOutlined,null,null)])]),M.value&&t.createVNode(xe,t.mergeProps({ref:m},C.value,{urls:C.value.urls||[e.src],current:E.value,onClose:()=>R()}),n)]))}}});ee.isGImage=!0,ee.install=e=>(e.component(ee.name,ee),e),b.GImage=ee,b.GImagePreview=xe,b.baseProps=H,b.imageProps=le,Object.defineProperty(b,Symbol.toStringTag,{value:"Module"})}));
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
export
|
|
3
|
-
export
|
|
1
|
+
import type { PreviewPropsIcons } from './ImagePreview/props';
|
|
2
|
+
export * from './props';
|
|
3
|
+
export * from './ImagePreview/props';
|
|
4
4
|
export { default as GImage } from './Image';
|
|
5
|
+
export { default as GImagePreview } from './ImagePreview';
|
|
6
|
+
export type { PreviewPropsIcons };
|
|
7
|
+
export type { GImageProps } from './Image';
|
|
8
|
+
export type { ImagePreviewProps } from './ImagePreview';
|
package/dist/props.d.ts
CHANGED
|
@@ -1,27 +1,27 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import type {
|
|
3
|
-
type
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
zoomIn?: VNode;
|
|
7
|
-
zoomOut?: VNode;
|
|
8
|
-
close?: VNode;
|
|
9
|
-
left?: VNode;
|
|
10
|
-
right?: VNode;
|
|
11
|
-
};
|
|
12
|
-
export declare const gImagePorps: {
|
|
13
|
-
previewTeleported: {
|
|
1
|
+
import type { CustomRender, WithFalse } from '@gx-design-vue/pro-utils';
|
|
2
|
+
import type { CSSProperties, PropType } from 'vue';
|
|
3
|
+
import type { BaseImagePreviewProps } from './ImagePreview/props';
|
|
4
|
+
export declare const baseProps: {
|
|
5
|
+
infinite: {
|
|
14
6
|
type: PropType<boolean>;
|
|
15
7
|
default: boolean;
|
|
16
8
|
};
|
|
17
|
-
|
|
18
|
-
type: PropType<
|
|
19
|
-
default:
|
|
9
|
+
zIndex: {
|
|
10
|
+
type: PropType<number>;
|
|
11
|
+
default: number;
|
|
20
12
|
};
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
13
|
+
current: {
|
|
14
|
+
type: PropType<number>;
|
|
15
|
+
default: number;
|
|
16
|
+
};
|
|
17
|
+
getContainer: {
|
|
18
|
+
type: PropType<string>;
|
|
19
|
+
};
|
|
20
|
+
};
|
|
21
|
+
export declare const imageProps: {
|
|
22
|
+
preview: {
|
|
23
|
+
type: PropType<BaseImagePreviewProps | boolean>;
|
|
24
|
+
default: boolean;
|
|
25
25
|
};
|
|
26
26
|
src: {
|
|
27
27
|
type: PropType<string>;
|
|
@@ -31,22 +31,26 @@ export declare const gImagePorps: {
|
|
|
31
31
|
type: PropType<string>;
|
|
32
32
|
default: string;
|
|
33
33
|
};
|
|
34
|
+
loading: {
|
|
35
|
+
type: PropType<"eager" | "lazy">;
|
|
36
|
+
};
|
|
34
37
|
fit: {
|
|
35
|
-
type: PropType<"
|
|
38
|
+
type: PropType<"fill" | "contain" | "cover" | "none" | "scale-down">;
|
|
36
39
|
default: string;
|
|
37
40
|
};
|
|
38
|
-
|
|
39
|
-
|
|
41
|
+
crossOrigin: {
|
|
42
|
+
type: PropType<"anonymous" | "use-credentials" | "">;
|
|
40
43
|
};
|
|
44
|
+
lazy: PropType<boolean>;
|
|
41
45
|
scrollContainer: {
|
|
42
46
|
type: PropType<string | HTMLElement | undefined>;
|
|
43
47
|
};
|
|
44
48
|
placeholder: {
|
|
45
|
-
type: PropType<WithFalse<
|
|
49
|
+
type: PropType<WithFalse<CustomRender>>;
|
|
46
50
|
default: () => undefined;
|
|
47
51
|
};
|
|
48
52
|
fallback: {
|
|
49
|
-
type: PropType<WithFalse<
|
|
53
|
+
type: PropType<WithFalse<CustomRender>>;
|
|
50
54
|
default: () => undefined;
|
|
51
55
|
};
|
|
52
56
|
onLoad: {
|
|
@@ -58,70 +62,19 @@ export declare const gImagePorps: {
|
|
|
58
62
|
onClick: {
|
|
59
63
|
type: PropType<(info: any) => void>;
|
|
60
64
|
};
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
previewSrcList: {
|
|
65
|
-
type: PropType<string[]>;
|
|
66
|
-
default: () => string[];
|
|
67
|
-
};
|
|
68
|
-
imageClassName: import("vue-types").VueTypeValidableDef<string> & {
|
|
69
|
-
default: string;
|
|
70
|
-
};
|
|
71
|
-
imageStyle: import("vue-types").VueTypeValidableDef<CSSProperties>;
|
|
72
|
-
width: import("vue-types").VueTypeValidableDef<number> & {
|
|
73
|
-
default: number;
|
|
74
|
-
};
|
|
75
|
-
height: import("vue-types").VueTypeValidableDef<number> & {
|
|
76
|
-
default: number;
|
|
77
|
-
};
|
|
78
|
-
zIndex: {
|
|
79
|
-
type: PropType<number>;
|
|
80
|
-
default: number;
|
|
81
|
-
};
|
|
82
|
-
infinite: {
|
|
83
|
-
type: PropType<boolean>;
|
|
84
|
-
default: boolean;
|
|
85
|
-
};
|
|
86
|
-
getContainer: {
|
|
87
|
-
type: PropType<string>;
|
|
88
|
-
};
|
|
89
|
-
initialIndex: {
|
|
90
|
-
type: PropType<number>;
|
|
91
|
-
default: number;
|
|
92
|
-
};
|
|
93
|
-
};
|
|
94
|
-
export declare const gImageViewProps: {
|
|
95
|
-
urlList: {
|
|
96
|
-
type: PropType<string[]>;
|
|
97
|
-
default: () => never[];
|
|
98
|
-
};
|
|
99
|
-
teleported: {
|
|
100
|
-
type: PropType<boolean>;
|
|
101
|
-
default: boolean;
|
|
65
|
+
imageStyle: {
|
|
66
|
+
type: PropType<CSSProperties>;
|
|
67
|
+
default: () => {};
|
|
102
68
|
};
|
|
69
|
+
imageClass: PropType<string>;
|
|
70
|
+
size: PropType<number>;
|
|
71
|
+
width: PropType<number>;
|
|
72
|
+
height: PropType<number>;
|
|
103
73
|
zIndex: {
|
|
104
74
|
type: PropType<number>;
|
|
105
75
|
default: number;
|
|
106
76
|
};
|
|
107
|
-
initialIndex: {
|
|
108
|
-
type: PropType<number>;
|
|
109
|
-
default: number;
|
|
110
|
-
};
|
|
111
|
-
infinite: {
|
|
112
|
-
type: PropType<boolean>;
|
|
113
|
-
default: boolean;
|
|
114
|
-
};
|
|
115
77
|
getContainer: {
|
|
116
78
|
type: PropType<string>;
|
|
117
79
|
};
|
|
118
|
-
onHideOnClickModal: {
|
|
119
|
-
type: PropType<boolean>;
|
|
120
|
-
default: boolean;
|
|
121
|
-
};
|
|
122
|
-
icons: {
|
|
123
|
-
type: PropType<PreviewPropsIons>;
|
|
124
|
-
default: () => PreviewPropsIons;
|
|
125
|
-
};
|
|
126
80
|
};
|
|
127
|
-
export {};
|
package/dist/slots.d.ts
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export type SlotKeys = 'default' | 'mask' | 'close' | 'left' | 'right' | 'flipX' | 'flipY' | 'zoomIn' | 'zoomOut' | 'fallback' | 'placeholder' | 'countRender' | 'rotateLeft' | 'rotateRight';
|
|
2
|
+
export declare const previewSlotKeys: SlotKeys[];
|
|
3
|
+
export declare const imageSlotKeys: SlotKeys[];
|
package/dist/style.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { ProAliasToken } from '@gx-design-vue/pro-provider';
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
declare const
|
|
6
|
-
export
|
|
2
|
+
import type { CSSObject } from 'ant-design-vue';
|
|
3
|
+
import type { GenerateStyle } from 'ant-design-vue/es/theme/internal';
|
|
4
|
+
export type PositionType = 'static' | 'relative' | 'fixed' | 'absolute' | 'sticky' | undefined;
|
|
5
|
+
export declare const genImageMaskStyle: (token: ProAliasToken) => CSSObject;
|
|
6
|
+
export declare const genBoxStyle: (position?: PositionType) => CSSObject;
|
|
7
|
+
export declare const genImageStyle: GenerateStyle<ProAliasToken>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const isElement: (e: unknown) => e is Element;
|
package/package.json
CHANGED
|
@@ -1,6 +1,21 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gx-design-vue/image",
|
|
3
|
-
"
|
|
3
|
+
"type": "module",
|
|
4
|
+
"version": "0.2.0-beta.30",
|
|
5
|
+
"description": "Gx Design Image",
|
|
6
|
+
"exports": {
|
|
7
|
+
".": {
|
|
8
|
+
"types": "./dist/index.d.ts",
|
|
9
|
+
"import": "./dist/image.js",
|
|
10
|
+
"require": "./dist/image.umd.cjs"
|
|
11
|
+
}
|
|
12
|
+
},
|
|
13
|
+
"main": "./dist/image.umd.cjs",
|
|
14
|
+
"module": "./dist/image.js",
|
|
15
|
+
"types": "./dist",
|
|
16
|
+
"files": [
|
|
17
|
+
"dist"
|
|
18
|
+
],
|
|
4
19
|
"scripts": {
|
|
5
20
|
"dev": "vite",
|
|
6
21
|
"build": "vite build",
|
|
@@ -10,59 +25,21 @@
|
|
|
10
25
|
"typecheck": "vue-tsc --noEmit && vue-tsc --noEmit -p tsconfig.vitest.json --composite false",
|
|
11
26
|
"lint": "TIMING=1 eslint . --ext .vue,.js,.jsx,.cjs,.mjs,.ts,.tsx,.cts,.mts --fix --ignore-path .gitignore"
|
|
12
27
|
},
|
|
13
|
-
"
|
|
14
|
-
"
|
|
15
|
-
|
|
16
|
-
"types": "./dist",
|
|
17
|
-
"main": "./dist/image.umd.js",
|
|
18
|
-
"module": "./dist/image.mjs",
|
|
19
|
-
"exports": {
|
|
20
|
-
".": {
|
|
21
|
-
"import": "./dist/image.mjs",
|
|
22
|
-
"require": "./dist/image.umd.js"
|
|
23
|
-
}
|
|
28
|
+
"peerDependencies": {
|
|
29
|
+
"ant-design-vue": "^4.1.2",
|
|
30
|
+
"vue": ">=3.0.0"
|
|
24
31
|
},
|
|
25
32
|
"dependencies": {
|
|
33
|
+
"@gx-design-vue/pro-hooks": "^0.2.0-beta.50",
|
|
34
|
+
"@gx-design-vue/pro-provider": "^0.1.0-beta.115",
|
|
35
|
+
"@gx-design-vue/pro-utils": "^0.2.0-beta.72",
|
|
26
36
|
"@vueuse/core": "^9.10.0",
|
|
27
|
-
"
|
|
28
|
-
"@gx-design-vue/pro-hooks": "^0.2.0-beta.7",
|
|
29
|
-
"@gx-design-vue/pro-provider": "^0.1.0-beta.15",
|
|
30
|
-
"ant-design-vue": "^4.0.0",
|
|
31
|
-
"vue": "^3.2.45",
|
|
32
|
-
"vue-types": "^4.1.1"
|
|
37
|
+
"lodash-es": "^4.17.21"
|
|
33
38
|
},
|
|
34
39
|
"devDependencies": {
|
|
35
|
-
"
|
|
36
|
-
"@rollup/plugin-typescript": "^8.3.0",
|
|
37
|
-
"@rushstack/eslint-patch": "^1.1.0",
|
|
38
|
-
"@types/lodash-es": "^4.17.6",
|
|
39
|
-
"@types/jsdom": "^16.2.14",
|
|
40
|
-
"@types/node": "^16.11.26",
|
|
41
|
-
"@vitejs/plugin-vue": "^4.2.3",
|
|
42
|
-
"@vitejs/plugin-vue-jsx": "^3.0.1",
|
|
43
|
-
"@vue/eslint-config-prettier": "^7.0.0",
|
|
44
|
-
"@vue/eslint-config-typescript": "^10.0.0",
|
|
45
|
-
"@vue/tsconfig": "^0.1.3",
|
|
46
|
-
"eslint": "^8.13.0",
|
|
47
|
-
"eslint-plugin-prettier": "^4.0.0",
|
|
48
|
-
"eslint-plugin-vue": "^8.6.0",
|
|
49
|
-
"jsdom": "^19.0.0",
|
|
50
|
-
"less": "^4.1.2",
|
|
51
|
-
"postcss": "^8.4.12",
|
|
52
|
-
"postcss-html": "^1.4.1",
|
|
53
|
-
"postcss-less": "^6.0.0",
|
|
54
|
-
"prettier": "^2.6.2",
|
|
55
|
-
"rollup": "^2.70.2",
|
|
56
|
-
"stylelint": "^14.7.1",
|
|
57
|
-
"stylelint-config-prettier": "^9.0.3",
|
|
58
|
-
"stylelint-config-recommended": "^7.0.0",
|
|
59
|
-
"stylelint-config-recommended-vue": "^1.4.0",
|
|
60
|
-
"stylelint-config-standard": "^25.0.0",
|
|
61
|
-
"stylelint-order": "^5.0.0",
|
|
62
|
-
"typescript": "^4.6.4",
|
|
63
|
-
"vite": "^4.3.8",
|
|
64
|
-
"vue-eslint-parser": "^9.0.3",
|
|
65
|
-
"vue-tsc": "^1.0.24"
|
|
40
|
+
"typescript": "^5.3.3"
|
|
66
41
|
},
|
|
67
|
-
"
|
|
42
|
+
"authors": [
|
|
43
|
+
"gx12358 <gx12358@gmail.com> (https://github.com/gx12358)"
|
|
44
|
+
]
|
|
68
45
|
}
|
|
@@ -1,193 +0,0 @@
|
|
|
1
|
-
export declare const on: (element: HTMLElement | Document | Window | null, event: string, handler: EventListenerOrEventListenerObject, useCapture?: boolean) => void;
|
|
2
|
-
export declare const off: (element: HTMLElement | Document | Window | null, event: string, handler: EventListenerOrEventListenerObject, useCapture?: boolean) => void;
|
|
3
|
-
export type AnyFunction<T> = (...args: any[]) => T;
|
|
4
|
-
export type ImageViewerAction = 'zoomIn' | 'zoomOut' | 'clocelise' | 'anticlocelise';
|
|
5
|
-
export declare const isFirefox: () => boolean;
|
|
6
|
-
export declare function rafThrottle<T extends AnyFunction<any>>(fn: T): AnyFunction<void>;
|
|
7
|
-
declare const GImageViewer: import("vue").DefineComponent<{
|
|
8
|
-
urlList: {
|
|
9
|
-
type: import("vue").PropType<string[]>;
|
|
10
|
-
default: () => never[];
|
|
11
|
-
};
|
|
12
|
-
teleported: {
|
|
13
|
-
type: import("vue").PropType<boolean>;
|
|
14
|
-
default: boolean;
|
|
15
|
-
};
|
|
16
|
-
zIndex: {
|
|
17
|
-
type: import("vue").PropType<number>;
|
|
18
|
-
default: number;
|
|
19
|
-
};
|
|
20
|
-
initialIndex: {
|
|
21
|
-
type: import("vue").PropType<number>;
|
|
22
|
-
default: number;
|
|
23
|
-
};
|
|
24
|
-
infinite: {
|
|
25
|
-
type: import("vue").PropType<boolean>;
|
|
26
|
-
default: boolean;
|
|
27
|
-
};
|
|
28
|
-
getContainer: {
|
|
29
|
-
type: import("vue").PropType<string>;
|
|
30
|
-
};
|
|
31
|
-
onHideOnClickModal: {
|
|
32
|
-
type: import("vue").PropType<boolean>;
|
|
33
|
-
default: boolean;
|
|
34
|
-
};
|
|
35
|
-
icons: {
|
|
36
|
-
type: import("vue").PropType<{
|
|
37
|
-
rotateLeft?: import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
|
38
|
-
[key: string]: any;
|
|
39
|
-
}> | undefined;
|
|
40
|
-
rotateRight?: import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
|
41
|
-
[key: string]: any;
|
|
42
|
-
}> | undefined;
|
|
43
|
-
zoomIn?: import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
|
44
|
-
[key: string]: any;
|
|
45
|
-
}> | undefined;
|
|
46
|
-
zoomOut?: import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
|
47
|
-
[key: string]: any;
|
|
48
|
-
}> | undefined;
|
|
49
|
-
close?: import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
|
50
|
-
[key: string]: any;
|
|
51
|
-
}> | undefined;
|
|
52
|
-
left?: import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
|
53
|
-
[key: string]: any;
|
|
54
|
-
}> | undefined;
|
|
55
|
-
right?: import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
|
56
|
-
[key: string]: any;
|
|
57
|
-
}> | undefined;
|
|
58
|
-
}>;
|
|
59
|
-
default: () => {
|
|
60
|
-
rotateLeft?: import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
|
61
|
-
[key: string]: any;
|
|
62
|
-
}> | undefined;
|
|
63
|
-
rotateRight?: import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
|
64
|
-
[key: string]: any;
|
|
65
|
-
}> | undefined;
|
|
66
|
-
zoomIn?: import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
|
67
|
-
[key: string]: any;
|
|
68
|
-
}> | undefined;
|
|
69
|
-
zoomOut?: import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
|
70
|
-
[key: string]: any;
|
|
71
|
-
}> | undefined;
|
|
72
|
-
close?: import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
|
73
|
-
[key: string]: any;
|
|
74
|
-
}> | undefined;
|
|
75
|
-
left?: import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
|
76
|
-
[key: string]: any;
|
|
77
|
-
}> | undefined;
|
|
78
|
-
right?: import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
|
79
|
-
[key: string]: any;
|
|
80
|
-
}> | undefined;
|
|
81
|
-
};
|
|
82
|
-
};
|
|
83
|
-
}, () => import("ant-design-vue/es/_util/type").VueNode, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("close" | "switch")[], "close" | "switch", import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
|
|
84
|
-
urlList: {
|
|
85
|
-
type: import("vue").PropType<string[]>;
|
|
86
|
-
default: () => never[];
|
|
87
|
-
};
|
|
88
|
-
teleported: {
|
|
89
|
-
type: import("vue").PropType<boolean>;
|
|
90
|
-
default: boolean;
|
|
91
|
-
};
|
|
92
|
-
zIndex: {
|
|
93
|
-
type: import("vue").PropType<number>;
|
|
94
|
-
default: number;
|
|
95
|
-
};
|
|
96
|
-
initialIndex: {
|
|
97
|
-
type: import("vue").PropType<number>;
|
|
98
|
-
default: number;
|
|
99
|
-
};
|
|
100
|
-
infinite: {
|
|
101
|
-
type: import("vue").PropType<boolean>;
|
|
102
|
-
default: boolean;
|
|
103
|
-
};
|
|
104
|
-
getContainer: {
|
|
105
|
-
type: import("vue").PropType<string>;
|
|
106
|
-
};
|
|
107
|
-
onHideOnClickModal: {
|
|
108
|
-
type: import("vue").PropType<boolean>;
|
|
109
|
-
default: boolean;
|
|
110
|
-
};
|
|
111
|
-
icons: {
|
|
112
|
-
type: import("vue").PropType<{
|
|
113
|
-
rotateLeft?: import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
|
114
|
-
[key: string]: any;
|
|
115
|
-
}> | undefined;
|
|
116
|
-
rotateRight?: import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
|
117
|
-
[key: string]: any;
|
|
118
|
-
}> | undefined;
|
|
119
|
-
zoomIn?: import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
|
120
|
-
[key: string]: any;
|
|
121
|
-
}> | undefined;
|
|
122
|
-
zoomOut?: import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
|
123
|
-
[key: string]: any;
|
|
124
|
-
}> | undefined;
|
|
125
|
-
close?: import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
|
126
|
-
[key: string]: any;
|
|
127
|
-
}> | undefined;
|
|
128
|
-
left?: import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
|
129
|
-
[key: string]: any;
|
|
130
|
-
}> | undefined;
|
|
131
|
-
right?: import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
|
132
|
-
[key: string]: any;
|
|
133
|
-
}> | undefined;
|
|
134
|
-
}>;
|
|
135
|
-
default: () => {
|
|
136
|
-
rotateLeft?: import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
|
137
|
-
[key: string]: any;
|
|
138
|
-
}> | undefined;
|
|
139
|
-
rotateRight?: import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
|
140
|
-
[key: string]: any;
|
|
141
|
-
}> | undefined;
|
|
142
|
-
zoomIn?: import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
|
143
|
-
[key: string]: any;
|
|
144
|
-
}> | undefined;
|
|
145
|
-
zoomOut?: import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
|
146
|
-
[key: string]: any;
|
|
147
|
-
}> | undefined;
|
|
148
|
-
close?: import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
|
149
|
-
[key: string]: any;
|
|
150
|
-
}> | undefined;
|
|
151
|
-
left?: import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
|
152
|
-
[key: string]: any;
|
|
153
|
-
}> | undefined;
|
|
154
|
-
right?: import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
|
155
|
-
[key: string]: any;
|
|
156
|
-
}> | undefined;
|
|
157
|
-
};
|
|
158
|
-
};
|
|
159
|
-
}>> & {
|
|
160
|
-
onSwitch?: ((...args: any[]) => any) | undefined;
|
|
161
|
-
onClose?: ((...args: any[]) => any) | undefined;
|
|
162
|
-
}, {
|
|
163
|
-
zIndex: number;
|
|
164
|
-
infinite: boolean;
|
|
165
|
-
urlList: string[];
|
|
166
|
-
teleported: boolean;
|
|
167
|
-
initialIndex: number;
|
|
168
|
-
onHideOnClickModal: boolean;
|
|
169
|
-
icons: {
|
|
170
|
-
rotateLeft?: import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
|
171
|
-
[key: string]: any;
|
|
172
|
-
}> | undefined;
|
|
173
|
-
rotateRight?: import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
|
174
|
-
[key: string]: any;
|
|
175
|
-
}> | undefined;
|
|
176
|
-
zoomIn?: import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
|
177
|
-
[key: string]: any;
|
|
178
|
-
}> | undefined;
|
|
179
|
-
zoomOut?: import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
|
180
|
-
[key: string]: any;
|
|
181
|
-
}> | undefined;
|
|
182
|
-
close?: import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
|
183
|
-
[key: string]: any;
|
|
184
|
-
}> | undefined;
|
|
185
|
-
left?: import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
|
186
|
-
[key: string]: any;
|
|
187
|
-
}> | undefined;
|
|
188
|
-
right?: import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
|
189
|
-
[key: string]: any;
|
|
190
|
-
}> | undefined;
|
|
191
|
-
};
|
|
192
|
-
}>;
|
|
193
|
-
export default GImageViewer;
|