You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
2 lines
5.4 KiB
2 lines
5.4 KiB
|
4 months ago
|
import{d as te,r as o,y as O,w as pe,G as ve,Q as ce,a as v,f,Y as Q,Z as U,q as c,j as Z,F as T,g as Y,O as h,t as ee,n as de,R as fe,c as he,b as ye,h as H}from"./index-e450010e.js";const k=document.addEventListener?function(e,l,u){e&&l&&u&&e.addEventListener(l,u,!1)}:function(e,l,u){e&&l&&u&&e.attachEvent("on"+l,u)},D=document.removeEventListener?function(e,l,u){e&&l&&e.removeEventListener(l,u,!1)}:function(e,l,u){e&&l&&e.detachEvent("on"+l,u)};var le=te({name:"V3RulerComponent",props:{position:{type:String,default:"relative",validator:e=>["absolute","fixed","relative","static","inherit"].indexOf(e)!==-1},isHotKey:{type:Boolean,default:!0},isScaleRevise:{type:Boolean,default:!1},value:{type:Array,default:()=>[{type:"h",site:50},{type:"v",site:180}]},contentLayout:{type:Object,default:()=>({top:0,left:0})},parent:{type:Boolean,default:!1},visible:{type:Boolean,default:!0},stepLength:{type:Number,default:50,validator:e=>e%10==0}},setup(e,l){let u=18,d=o(0),p=o(0),y=o([{id:0}]),s=o([{id:0}]),i=0,g=0,r=o(!1),x="",w=o(-999),S=o(-999),V=0,X=0,R="";const z=o(null),$=o(null),B=o(null),E=o(null),ae=82;let m=o(!0);const ne=O(()=>({width:d.value+"px",height:p.value+"px",position:e.position})),se=O(()=>({left:e.contentLayout.left+"px",top:e.contentLayout.top+"px",padding:u+"px 0px 0px "+u+"px"})),_=O(()=>{let t=0,a=0;return e.value.map(n=>{const b=n.type==="h";return{id:`${n.type}_${b?t++:a++}`,type:n.type,title:n.site.toFixed(2)+"px",[b?"top":"left"]:n.site/(e.stepLength/50)+17}})});pe(()=>e.visible,t=>{m.value=t},{immediate:!0}),ve(()=>{k(document,"mousemove",P),k(document,"mouseup",W),k(document,"keyup",A),I(),k(window,"resize",j)}),ce(()=>{D(document,"mousemove",P),D(document,"mouseup",W),D(document,"keyup",A),D(window,"resize",j)});const I=()=>{ue(),oe()},j=()=>{y.value=[{id:0}],s.value=[{id:0}],I()},ue=()=>{if(e.isScaleRevise){const t=z.value.offsetLeft,a=z.value.offsetTop;J(y.value,t),J(s.value,a)}if(e.parent){const t=window.getComputedStyle($.value.parentNode,null);d.value=parseInt(t.getPropertyValue("width"),10),p.value=parseInt(t.getPropertyValue("height"),10)}else d.value=document.documentElement.clientWidth-g,p.value=document.documentElement.clientHeight-i;V=B.value.clientWidth,X=E.value.clientHeight,C()},C=()=>{i=E.value.getBoundingClientRect().y,g=B.value.getBoundingClientRect().x},oe=()=>{F(y.value,d.value),F(s.value,p.value)},F=(t,a)=>{for(let n=0;n<a*e.stepLength/50;n+=e.stepLength)n%e.stepLength==0&&t.push({id:n})},J=(t,a)=>{for(let n=0;n<a;n+=1)n%e.stepLength==0&&n+e.stepLength<=a&&t.push({id:n})},K=t=>{r.value=!0,x=t},P=t=>{switch(C(),x){case"x":r.value&&(S.value=t.pageY-i);break;case"y":r.value&&(w.value=t.pageX-g);break;case"h":r.value&&(S.value=t.pageY-i);break;case"v":r.value&&(w.value=t.pageX-g)}},W=t=>{if(C(),r.value){r.value=!1;const a=JSON.parse(JSON.stringify(e.value));switch(x){case"x":a.push({type:"h",site:(t.pageY-i-17)*(e.stepLength/50)}),l.emit("input",a);break;case"y":a.push({type:"v",site:(t.pageX-g-17)*(e.stepLength/50)}),l.emit("input",a);break;case"h":q(a,t.pageY,i,X,"h"),l.emit("input",a);break;case"v":q(a,t.pageX,g,V,"v"),l.emit("input",a)}S.value=w.value=-10}},q=(t,a,n,b,G)=>{if(a-n<b){let L;_.value.forEach((M,N)=>{M.id===R&&(L=N)}),t.splice(L,1,{type:G,site:-600})}else{let L;_.value.forEach((M,N)=>{M.id===R&&(L=N)}),t.splice(L,1,{type:G,site:(a-n-17)*(e.stepLength/50)})}},ie=t=>{r.value=!0,x="h",R=t},re=t=>{r.value=!0,x="v",R=t},A=t=>{if(e.isHotKey)switch(t.keyCode){case ae:m.value=!m.value,l.emit("update:visible",m.value),u=m.value?18:0}};return{wrapperStyle:ne,rulerToggle:m,horizontalDragRuler:()=>{K("x")},xScale:y,verticalDragRuler:()=>{K("y")},yScale:s,verticalDottedTop:S,horizontalDottedLeft:w,lineList:_,getLineStyle:({type:t,top:a,left:n})=>t==="h"?{top:a+"px"}:{left:n+"px"},handleDragLine:({type:t,id:a})=>t==="h"?ie(a):re(a),contentStyle:se,isDrag:r,content:z,el:$,verticalRuler:B,horizontalRuler:E}}});const ge=["title","onMousedown"],me={class:"vue-ruler-content-mask"};le.render=function(e,l,u,d,p,y){return v(),f("div",{style:h(e.wrapperStyle),class:"vue-ruler-wrapper",onselectst
|