tu-view-plus
Version:
2 lines (1 loc) • 1.2 kB
JavaScript
;Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const n=require("vue"),u=require("@tu-view-plus/utils"),x=require("../utils/get-fix-translate.js");function E(T){const{wrapperEl:f,imageEl:a,scale:l}=n.toRefs(T),t=n.ref([0,0]),r=n.ref(!1);let c=0,i=0,s=[0,0];const g=()=>{if(!f.value||!a.value)return;const e=f.value.getBoundingClientRect(),v=a.value.getBoundingClientRect(),[o,D]=x.default(e,v,t.value[0],t.value[1],l.value);(o!==t.value[0]||D!==t.value[1])&&(t.value=[o,D])},p=e=>{e.preventDefault&&e.preventDefault();const v=s[0]+(e.pageX-c)/l.value,o=s[1]+(e.pageY-i)/l.value;t.value=[v,o]},d=e=>{e.preventDefault&&e.preventDefault(),r.value=!1,g(),m()},w=e=>{e.target===e.currentTarget&&(e.preventDefault&&e.preventDefault(),r.value=!0,c=e.pageX,i=e.pageY,s=[...t.value],u.on(window,"mousemove",p,!1),u.on(window,"mouseup",d,!1))};function m(){u.off(window,"mousemove",p,!1),u.off(window,"mouseup",d,!1)}return n.watchEffect(e=>{a.value&&u.on(a.value,"mousedown",w),e(()=>{a.value&&u.off(a.value,"mousedown",w),m()})}),n.watch([l],()=>{n.nextTick(()=>g())}),{translate:t,moving:r,resetTranslate(){t.value=[0,0]}}}exports.default=E;