(function(b,i){typeof exports=="object"&&typeof module!="undefined"?i(exports,require("vue-demi"),require("vue")):typeof define=="function"&&define.amd?define(["exports","vue-demi","vue"],i):(b=typeof globalThis!="undefined"?globalThis:b||self,i(b.SketchRuler={},b.vueDemi,b.vue))})(this,function(b,i,n){"use strict";/*!vue3-sketch-ruler v1.3.62022年11月Fri Nov 04 2022 18:18:02 GMT+0800 (中国标准时间)制作*/var te=(()=>`.line[data-v-5dea28d6]{pointer-events:auto;position:absolute}.line .action[data-v-5dea28d6]{position:absolute;display:flex;justify-content:center;align-items:center}.line .value[data-v-5dea28d6]{pointer-events:none;transform:scale(.83)}.line .del[data-v-5dea28d6]{padding:3px 5px;cursor:pointer;visibility:hidden}.line:hover .del[data-v-5dea28d6]{visibility:visible} `)(),S=(e,t)=>{const r=e.__vccOpts||e;for(const[c,d]of t)r[c]=d;return r};const U=i.defineComponent({name:"LineRuler",props:{scale:Number,thick:Number,palette:Object,index:Number,start:Number,vertical:Boolean,value:Number,isShowReferLine:Boolean},emits:["onMouseDown","onRelease","onRemove"],setup(e,{emit:t}){const r=i.ref(0),c=i.ref(!0);i.onMounted(()=>{r.value=e.value});const d=o=>{c.value=o>=0},u=i.computed(()=>{const o=(r.value-e.start)*e.scale;d(o);const f=o+"px";return e.vertical?{top:f}:{left:f}}),l=i.computed(()=>{var m;const o=`1px solid ${(m=e.palette)==null?void 0:m.lineColor}`,f=e.vertical?{borderTop:o}:{borderLeft:o};return{cursor:e.isShowReferLine?e.vertical?"ns-resize":"ew-resize":"none",...f}}),h=i.computed(()=>e.vertical?{left:e.thick+"px"}:{top:e.thick+"px"});return{startValue:r,showLine:c,offset:u,borderCursor:l,actionStyle:h,handleDown:o=>{const f=e.vertical?o.clientY:o.clientX,v=r.value;t("onMouseDown");const m=y=>{const g=e.vertical?y.clientY:y.clientX,R=Math.round(v+(g-f)/e.scale);r.value=R},A=()=>{t("onRelease",r.value,e.index),document.removeEventListener("mousemove",m),document.removeEventListener("mouseup",A)};document.addEventListener("mousemove",m),document.addEventListener("mouseup",A)},handleRemove:()=>{t("onRemove",e.index)}}}}),I={class:"value"};function X(e,t,r,c,d,u){return n.withDirectives((n.openBlock(),n.createElementBlock("div",{class:"line",style:n.normalizeStyle([e.offset,e.borderCursor]),onMousedown:t[1]||(t[1]=(...l)=>e.handleDown&&e.handleDown(...l))},[n.createElementVNode("div",{class:"action",style:n.normalizeStyle(e.actionStyle)},[n.createElementVNode("span",{class:"del",onClick:t[0]||(t[0]=(...l)=>e.handleRemove&&e.handleRemove(...l))},"\xD7"),n.createElementVNode("span",I,n.toDisplayString(e.startValue),1)],4)],36)),[[n.vShow,e.showLine]])}var z=S(U,[["render",X],["__scopeId","data-v-5dea28d6"]]);const T=e=>e<=.25?40:e<=.5?20:e<=1?10:e<=2?5:e<=4?2:1,k=.83,$=(e,t,r,c,d,u)=>{const{scale:l,width:h,height:s,ratio:a,palette:o}=d,{bgColor:f,fontColor:v,shadowColor:m,longfgColor:A,shortfgColor:y}=o;if(e.scale(a,a),e.clearRect(0,0,h,s),e.fillStyle=f,e.fillRect(0,0,h,s),c){const w=(r-t)*l,C=c*l;e.fillStyle=m,u?e.fillRect(w,0,C,s*3/8):e.fillRect(0,w,h*3/8,C)}const g=T(l),R=g*l,N=g*10,E=N*l,L=Math.floor(t/g)*g,O=Math.floor(t/N)*N,_=(L-t)/g*R,ee=(O-t)/N*E,V=t+Math.ceil((u?h:s)/l);e.beginPath(),e.fillStyle=v,e.strokeStyle=A;for(let w=O,C=0;w{c=e.ratio||window.devicePixelRatio||1,u(),l(c),h(c)});const u=()=>{r.canvasContext=d.value&&d.value.getContext("2d")},l=a=>{if(d.value){d.value.width=e.width*a,d.value.height=e.height*a;const o=r.canvasContext;o&&(o.font=`${12*a}px -apple-system, "Helvetica Neue", ".SFNSText-Regular", "SF UI Text", Arial, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "WenQuanYi Zen Hei", sans-serif`,o.lineWidth=1,o.textBaseline="middle")}},h=a=>{const o={scale:e.scale,width:e.width,height:e.height,palette:e.palette,ratio:a};r.canvasContext&&$(r.canvasContext,e.start,e.selectStart,e.selectLength,o,!e.vertical)};return i.watch(()=>e.start,()=>h(c)),i.watch([()=>e.width,()=>e.height],()=>{l(c),h(c)}),{handle:(a,o)=>{const f=(A,y,g)=>Math.round(y+A/g),v=e.vertical?a.offsetY:a.offsetX,m=f(v,e.start,e.scale);switch(o){case"click":t("onAddLine",m);break;case"enter":t("update:valueNum",m),t("update:showIndicator",!0);break;default:t("update:valueNum",m);break}},canvas:d}}});function M(e,t,r,c,d,u){return n.openBlock(),n.createElementBlock("canvas",{ref:"canvas",class:"ruler",onClick:t[0]||(t[0]=l=>e.handle(l,"click")),onMouseenter:t[1]||(t[1]=l=>e.handle(l,"enter")),onMousemove:t[2]||(t[2]=l=>e.handle(l,"move")),onMouseleave:t[3]||(t[3]=l=>e.$emit("update:showIndicator",!1))},null,544)}var Q=S(F,[["render",M]]);const K={scale:Number,ratio:Number,thick:Number,palette:Object,vertical:{type:Boolean,default:!0},width:{type:Number,default:200},height:{type:Number,default:200},start:{type:Number,default:0},lines:{type:Array,default:()=>[]},selectStart:{type:Number},selectLength:{type:Number},isShowReferLine:{type:Boolean}};var ne=(()=>`.line[data-v-b6c23352],.h-container[data-v-b6c23352],.v-container[data-v-b6c23352]{position:absolute}.h-container .lines[data-v-b6c23352],.v-container .lines[data-v-b6c23352]{pointer-events:none}.h-container:hover .lines[data-v-b6c23352],.v-container:hover .lines[data-v-b6c23352]{pointer-events:auto}.h-container[data-v-b6c23352]{top:0}.h-container .line[data-v-b6c23352]{top:0;height:100vh;padding-left:5px}.h-container .line .action[data-v-b6c23352]{transform:translate(-24px)}.h-container .line .action .value[data-v-b6c23352]{margin-left:4px}.h-container .indicator[data-v-b6c23352]{top:0;height:100vw}.h-container .indicator .value[data-v-b6c23352]{width:auto;padding:0 2px;margin-top:4px;margin-left:4px}.v-container[data-v-b6c23352]{left:0}.v-container .line[data-v-b6c23352]{left:0;width:100vw;padding-top:5px}.v-container .line .action[data-v-b6c23352]{transform:translateY(-24px);flex-direction:column}.v-container .line .action .value[data-v-b6c23352]{margin-top:4px}.v-container .indicator[data-v-b6c23352]{width:100vw}.v-container .indicator .value[data-v-b6c23352]{left:0;width:auto;padding:0 2px;margin-top:-5px;margin-left:2px;transform:rotate(-90deg);transform-origin:0 0} `)();const Y=i.defineComponent({name:"RulerWrapper",components:{CanvasRuler:Q,RulerLine:z},props:K,setup(e){const t=i.ref(!1),r=i.ref(0),c=i.computed(()=>e.vertical?"v-container":"h-container"),d=i.computed(()=>{const a={width:`calc(100% - ${e.thick}px)`,height:`${e.thick+1}px`,left:`${e.thick}px`},o={width:`${e.thick&&e.thick+1}px`,height:`calc(100% - ${e.thick}px)`,top:`${e.thick}px`};return e.vertical?o:a}),u=i.computed(()=>{var v;const a=(r.value-e.start)*e.scale;let o="top",f="borderLeft";return o=e.vertical?"top":"left",f=e.vertical?"borderBottom":"borderLeft",{[o]:a+"px",[f]:`1px solid ${(v=e.palette)==null?void 0:v.lineColor}`}}),l=a=>{e.lines.push(a)},h=(a,o)=>{const f=a-e.start,v=(e.vertical?e.height:e.width)/e.scale;f<0||f>v?s(o):e.lines[o]=a},s=a=>{e.lines.splice(a,1)};return{showIndicator:t,valueNum:r,rwClassName:c,rwStyle:d,indicatorStyle:u,handleNewLine:l,handleLineRelease:h,handleLineRemove:s}}}),P={class:"lines"},q={class:"value"};function G(e,t,r,c,d,u){const l=n.resolveComponent("CanvasRuler"),h=n.resolveComponent("RulerLine");return n.openBlock(),n.createElementBlock("div",{class:n.normalizeClass(e.rwClassName),style:n.normalizeStyle(e.rwStyle)},[n.createVNode(l,{vertical:e.vertical,scale:e.scale,width:e.width,height:e.height,start:e.start,ratio:e.ratio,"select-start":e.selectStart,"select-length":e.selectLength,palette:e.palette,valueNum:e.valueNum,"onUpdate:valueNum":t[0]||(t[0]=s=>e.valueNum=s),showIndicator:e.showIndicator,"onUpdate:showIndicator":t[1]||(t[1]=s=>e.showIndicator=s),onOnAddLine:e.handleNewLine},null,8,["vertical","scale","width","height","start","ratio","select-start","select-length","palette","valueNum","showIndicator","onOnAddLine"]),n.withDirectives(n.createElementVNode("div",P,[(n.openBlock(!0),n.createElementBlock(n.Fragment,null,n.renderList(e.lines,(s,a)=>(n.openBlock(),n.createBlock(h,{key:s+a,index:a,value:s>>0,scale:e.scale,start:e.start,thick:e.thick,palette:e.palette,vertical:e.vertical,"is-show-refer-line":e.isShowReferLine,onOnRemove:e.handleLineRemove,onOnRelease:e.handleLineRelease},null,8,["index","value","scale","start","thick","palette","vertical","is-show-refer-line","onOnRemove","onOnRelease"]))),128))],512),[[n.vShow,e.isShowReferLine]]),n.withDirectives(n.createElementVNode("div",{class:"indicator",style:n.normalizeStyle(e.indicatorStyle)},[n.createElementVNode("div",q,n.toDisplayString(e.valueNum),1)],4),[[n.vShow,e.showIndicator]])],6)}var H=S(Y,[["render",G],["__scopeId","data-v-b6c23352"]]);const W="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAAVCAYAAACpF6WWAAAAAXNSR0IArs4c6QAAAopJREFUOE/FlE9IVEEcx7+/N9ouds1Mu0QUSFZYdIgoUqQoKPBQHsKozpXE7jbTO/U8xLJvn6usBHWQ6hBFXupSkQeVbh0KJEPp0sH+eLGTsKs77xcj78m0ax0E8cHjzZv5zef3/c33xxA24KENYGJzoEEQbNNaN4Zh2OQ4znwYhr9c1/39vwrXVDo0NNS0tLR0GYB5D64BmAMwzMyvlFKz1es10Hw+f4mZ7wHYBeA9gNdENFepVOaEEM3M3OI4Thczn41gt6WUgQ3+C+r7/h0AWQD3mXnYqPA8L9nQ0HCemduIaFpKOWoAhUJhT6VSuQXgOjP3K6W8GLwKzeVyp4jonR0QBEErM48w8zFLyayUsjX+z+VyHhHdZebTSqkxM78CHRgYOKS1/ghgVErZY214RkQ7ADyRUj72ff8qgCtmXUrZGcf5vv8CwEUhxOF0Ov1pBRpla5dSdseBhUJhpznH6tIsZb1KqacW+BGArUaUXX63UuplHJTNZjuEEONSyhozfd/n6mQ1RkXZL2itz7mu+80EDA4ONi8vL/8AcM2UbikyR2BU9cSmmTU70YqKIAj2hWFo2uenlHK/BRg3Y2aeNO5GyU8S0ZbFxcUuz/NKEXAGQKPjOCcymcyX1dIi8DSAiWQyeaavr68cbSgCuBknYubnQoj+TCYzUywWE6VS6S2ADsdx2gxw1X3L7SNENMbMnwE8qK+vf5NKpRaMaeVyeW8ikfiaSqW+R7BuZr5BRMe11p2u607U9Gk8kc/ntzPzQwCmExYATDLzVBiGE0KIowAOADDf3QA+aK2VDaxRajto3K+rq+tl5nYAzQBamHmeiOYBTGmtR6ph/1Rqg9c73pz7dD1qN0TpHyNQRCUDJXrAAAAAAElFTkSuQmCC",Z="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAAVCAYAAACpF6WWAAAAAXNSR0IArs4c6QAAAjtJREFUOE/NlD9oFEEUxn9v9ghC0hpRUogIAUmniGAT/5Q2FrETPSNRJILg7RwimI0ox85eQFCEBGIUO1PYpFM0jSConQoBEZGgGPsgl+w+2eM2bC57SopAFqYZ3v7m+977ZoQt+GQLmGxPaBiGgYiMWWvXBHZUGoZhH3BERPYC+4F+4Keq/urt7b1RLpf/ZEBVHa9Wq0HWyg3QKIoGVPU8cA7wgK/pUtXPQJ8xZk+pVBpuNBqXUoUiEvi+P56fzTpo6+SbwHNg1lo7WzTITGEKXFlZeeB53tVCpa3CK8AFa+1cBgvD8LKIXAQOJkkyICJDeYVBEJS6u7s/qeoLa+1o+l9TqXNuBLhmjDlbqVQ+5ICjInIfOBPH8W9jzGCR5YmJiRNxHM+papgqzqDvgSlr7VTernPuO3An3c9bBt74vv+yrdaKyLDv+/1Sq9UGPc97nY9EVuycU2AQOA7cAm4Dr4D5TvVxHB9rKo2iaEFVp621Ln96FEUngaOqGmSxabVqsh3a2h+x1h5qQjNrae/yE4+iaCwDJkky73neTuBZe129Xk+H+BS4l7ZqLVIZ2BhzuFKpvMsDVXXWGPMxFdAedOfcKeCRqj7MYrUhpz09PfXl5eXrectFWXXODQHpOq2qd/95o/JXr6ura3J1dXU6SZIfwKKIHAD2tVYMPBGRx77vN10UXtO85fTkmZmZHUtLSzUR2QXsBhaAL6r6DXhbrVYXi1yss59GqOgub/bN3Z7v6X/tb9Zmp/q/kN8s+lJb8oEAAAAASUVORK5CYII=",D={eyeIcon:{type:String},closeEyeIcon:{type:String},scale:{type:Number,default:1},ratio:{type:Number},thick:{type:Number,default:16},palette:Object,startX:{type:Number},startY:{type:Number,default:0},width:{type:Number,default:200},height:{type:Number,default:200},shadow:{type:Object,default:()=>({x:0,y:0,width:0,height:0})},lines:{type:Object,default:()=>({h:[],v:[]})},isShowReferLine:{type:Boolean,default:!0}};var oe=(()=>`@charset "UTF-8";.style-ruler{position:absolute;z-index:3;width:100%;height:100%;overflow:hidden;font-size:12px;pointer-events:none}.style-ruler span{line-height:1}.corner{position:absolute;top:0;left:0;pointer-events:auto;cursor:pointer;box-sizing:content-box;transition:all .2s ease-in-out}.indicator{position:absolute;pointer-events:none}.indicator .value{position:absolute;background:white}.ruler{width:100%;height:100%;pointer-events:auto} `)();const j=i.defineComponent({name:"SketchRule",components:{RulerWrapper:H},props:D,emits:["onCornerClick"],setup(e,{emit:t}){let r=i.ref(!0);r.value=e.isShowReferLine;const c=i.computed(()=>{function l(s,a){return Object.keys(s).forEach(o=>{o&&s.hasOwnProperty(o)&&(typeof a.key=="object"?s[o]=l(s[o],a[o]):a.hasOwnProperty(o)&&(s[o]=a[o]))}),s}return l({bgColor:"rgba(225,225,225, 0)",longfgColor:"#BABBBC",shortfgColor:"#C8CDD0",fontColor:"#7D8694",shadowColor:"#E8E8E8",lineColor:"#EB5648",borderColor:"#DADADC",cornerActiveColor:"rgb(235, 86, 72, 0.6)",menu:{bgColor:"#fff",dividerColor:"#DBDBDB",listItem:{textColor:"#415058",hoverTextColor:"#298DF8",disabledTextColor:"rgba(65, 80, 88, 0.4)",bgColor:"#fff",hoverBgColor:"#F2F2F2"}}},e.palette||{})}),d=i.computed(()=>({backgroundImage:r.value?`url(${e.eyeIcon||W})`:`url(${e.closeEyeIcon||Z})`,width:e.thick+"px",height:e.thick+"px",borderRight:`1px solid ${c.value.borderColor}`,borderBottom:`1px solid ${c.value.borderColor}`})),u=l=>{r.value=!r.value,t("onCornerClick",r.value)};return i.watch([()=>e.isShowReferLine],()=>{r.value=e.isShowReferLine}),{showReferLine:r,paletteCpu:c,cornerStyle:d,onCornerClick:u}}}),J={id:"mb-ruler",class:"style-ruler mb-ruler"};function x(e,t,r,c,d,u){const l=n.resolveComponent("RulerWrapper");return n.openBlock(),n.createElementBlock("div",J,[n.createVNode(l,{vertical:!1,width:e.width,height:e.thick,"is-show-refer-line":e.showReferLine,thick:e.thick,ratio:e.ratio,start:e.startX,lines:e.lines.h,"select-start":e.shadow.x,"select-length":e.shadow.width,scale:e.scale,palette:e.paletteCpu},null,8,["width","height","is-show-refer-line","thick","ratio","start","lines","select-start","select-length","scale","palette"]),n.createVNode(l,{vertical:!0,width:e.thick,height:e.height,"is-show-refer-line":e.showReferLine,thick:e.thick,ratio:e.ratio,start:e.startY,lines:e.lines.v,"select-start":e.shadow.y,"select-length":e.shadow.height,scale:e.scale,palette:e.paletteCpu},null,8,["width","height","is-show-refer-line","thick","ratio","start","lines","select-start","select-length","scale","palette"]),n.createElementVNode("a",{class:"corner",style:n.normalizeStyle(e.cornerStyle),onClick:t[0]||(t[0]=(...h)=>e.onCornerClick&&e.onCornerClick(...h))},null,4)])}var B=S(j,[["render",x]]);b.SketchRule=B,b.default=B,Object.defineProperties(b,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});