UNPKG

basb-cli

Version:
2 lines (1 loc) 9.23 kB
import{_ as n,Z as t,G as r,e,Y as o,bQ as i,bh as a,m as s,a6 as u,cz as h,ak as c,am as f,x as l,R as d,$ as p,c9 as g,c8 as v,d0 as _,b1 as m}from"./index.js";import{t as b,r as y}from"./interactionMutex.js";import{o as C}from"./cursorHelper.js";var w=!0,T=Math.min,O=Math.max,R=Math.pow,E=1e4,k=6,B=6,x="globalPan",z={w:[0,0],e:[0,1],n:[1,0],s:[1,1]},S={w:"ew",e:"ew",n:"ns",s:"ns",ne:"nesw",sw:"nesw",nw:"nwse",se:"nwse"},I={brushStyle:{lineWidth:2,stroke:"rgba(210,219,238,0.3)",fill:"#D2DBEE"},transformable:!0,brushMode:"single",removeOnClick:!1},L=0,M=function(h){function c(n){var i=h.call(this)||this;return i._track=[],i._covers=[],i._handlers={},t(n),i._zr=n,i.group=new r,i._uid="brushController_"+L++,e(un,(function(n,t){this._handlers[t]=o(n,this)}),i),i}return n(c,h),c.prototype.enableBrush=function(n){return t(this._mounted),this._brushType&&this._doDisableBrush(),n.brushType&&this._doEnableBrush(n),this},c.prototype._doEnableBrush=function(n){var t=this._zr;this._enableGlobalPan||b(t,x,this._uid),e(this._handlers,(function(n,r){t.on(r,n)})),this._brushType=n.brushType,this._brushOption=i(a(I),n,!0)},c.prototype._doDisableBrush=function(){var n=this._zr;y(n,x,this._uid),e(this._handlers,(function(t,r){n.off(r,t)})),this._brushType=this._brushOption=null},c.prototype.setPanels=function(n){if(n&&n.length){var t=this._panels={};e(n,(function(n){t[n.panelId]=a(n)}))}else this._panels=null;return this},c.prototype.mount=function(n){n=n||{},this._mounted=!0,this._enableGlobalPan=n.enableGlobalPan;var t=this.group;return this._zr.add(t),t.attr({x:n.x||0,y:n.y||0,rotation:n.rotation||0,scaleX:n.scaleX||1,scaleY:n.scaleY||1}),this._transform=t.getLocalTransform(),this},c.prototype.updateCovers=function(n){t(this._mounted),n=s(n,(function(n){return i(a(I),n,!0)}));var r="\0-brush-index-",e=this._covers,o=this._covers=[],h=this,c=this._creatingCover;return new u(e,n,(function(n,t){return f(n.__brushOption,t)}),f).add(l).update(l).remove((function(n){e[n]!==c&&h.group.remove(e[n])})).execute(),this;function f(n,t){return(null!=n.id?n.id:r+t)+"-"+n.brushType}function l(t,r){var i=n[t];if(null!=r&&e[r]===c)o[t]=e[r];else{var a=o[t]=null!=r?(e[r].__brushOption=i,e[r]):Y(h,P(h,i));D(h,a)}}},c.prototype.unmount=function(){if(this._mounted)return this.enableBrush(!1),A(this),this._zr.remove(this.group),this._mounted=!1,this},c.prototype.dispose=function(){this.unmount(),this.off()},c}(h);function P(n,t){var r=cn[t.brushType].createCover(n,t);return r.__brushOption=t,j(r,t),n.group.add(r),r}function Y(n,t){var r=G(t);return r.endCreating&&(r.endCreating(n,t),j(t,t.__brushOption)),t}function X(n,t){var r=t.__brushOption;G(t).updateCoverShape(n,t,r.range,r)}function j(n,t){var r=t.z;null==r&&(r=E),n.traverse((function(n){n.z=r,n.z2=r}))}function D(n,t){G(t).updateCommon(n,t),X(n,t)}function G(n){return cn[n.__brushOption.brushType]}function N(n,t,r){var o,i=n._panels;if(!i)return w;var a=n._transform;return e(i,(function(n){n.isTargetByCursor(t,r,a)&&(o=n)})),o}function W(n,t){var r=n._panels;if(!r)return w;var e=t.__brushOption.panelId;return null!=e?r[e]:w}function A(n){var t=n._covers,r=t.length;return e(t,(function(t){n.group.remove(t)}),n),t.length=0,!!r}function H(n,t){var r=s(n._covers,(function(n){var t=n.__brushOption,r=a(t.range);return{brushType:t.brushType,panelId:t.panelId,range:r}}));n.trigger("brush",{areas:r,isEnd:!!t.isEnd,removeOnClick:!!t.removeOnClick})}function Q(n){var t=n.length-1;return t<0&&(t=0),[n[0],n[t]]}function U(n,t,o,i){var a=new r;return a.add(new d({name:"main",style:F(o),silent:!0,draggable:!0,cursor:"move",drift:l(V,n,t,a,["n","s","w","e"]),ondragend:l(H,t,{isEnd:!0})})),e(i,(function(r){a.add(new d({name:r.join(""),style:{opacity:0},draggable:!0,silent:!0,invisible:!0,drift:l(V,n,t,a,r),ondragend:l(H,t,{isEnd:!0})}))})),a}function Z(n,t,r,e){var o=e.brushStyle.lineWidth||0,i=O(o,B),a=r[0][0],s=r[1][0],u=a-o/2,h=s-o/2,c=r[0][1],f=r[1][1],l=c-i+o/2,d=f-i+o/2,p=c-a,g=f-s,v=p+o,_=g+o;q(n,t,"main",a,s,p,g),e.transformable&&(q(n,t,"w",u,h,i,_),q(n,t,"e",l,h,i,_),q(n,t,"n",u,h,v,i),q(n,t,"s",u,d,v,i),q(n,t,"nw",u,h,i,i),q(n,t,"ne",l,h,i,i),q(n,t,"sw",u,d,i,i),q(n,t,"se",l,d,i,i))}function $(n,t){var r=t.__brushOption,o=r.transformable,i=t.childAt(0);i.useStyle(F(r)),i.attr({silent:!o,cursor:o?"move":"default"}),e([["w"],["e"],["n"],["s"],["s","e"],["s","w"],["n","e"],["n","w"]],(function(r){var e=t.childOfName(r.join("")),i=1===r.length?K(n,r[0]):function(n,t){var r=[K(n,t[0]),K(n,t[1])];return("e"===r[0]||"w"===r[0])&&r.reverse(),r.join("")}(n,r);e&&e.attr({silent:!o,invisible:!o,cursor:o?S[i]+"-resize":null})}))}function q(n,t,r,e,o,i,a){var s,u,h,c,f,l=t.childOfName(r);l&&l.setShape((s=rn(n,t,[[e,o],[e+i,o+a]]),u=T(s[0][0],s[1][0]),h=T(s[0][1],s[1][1]),c=O(s[0][0],s[1][0]),f=O(s[0][1],s[1][1]),{x:u,y:h,width:c-u,height:f-h}))}function F(n){return p({strokeNoScale:!0},n.brushStyle)}function J(n,t,r,e){var o=[T(n,r),T(t,e)],i=[O(n,r),O(t,e)];return[[o[0],i[0]],[o[1],i[1]]]}function K(n,t){var r=g({w:"left",e:"right",n:"top",s:"bottom"}[t],function(n){return v(n.group)}(n));return{left:"w",right:"e",top:"n",bottom:"s"}[r]}function V(n,t,r,o,i,a){var s=r.__brushOption,u=n.toRectRange(s.range),h=tn(t,i,a);e(o,(function(n){var t=z[n];u[t[0]][t[1]]+=h[t[0]]})),s.range=n.fromRectRange(J(u[0][0],u[1][0],u[0][1],u[1][1])),D(t,r),H(t,{isEnd:!1})}function nn(n,t,r,o){var i=t.__brushOption.range,a=tn(n,r,o);e(i,(function(n){n[0]+=a[0],n[1]+=a[1]})),D(n,t),H(n,{isEnd:!1})}function tn(n,t,r){var e=n.group,o=e.transformCoordToLocal(t,r),i=e.transformCoordToLocal(0,0);return[o[0]-i[0],o[1]-i[1]]}function rn(n,t,r){var e=W(n,t);return e&&e!==w?e.clipPath(r,n._transform):a(r)}function en(n){var t=n.event;t.preventDefault&&t.preventDefault()}function on(n,t,r){return n.childOfName("main").contain(t,r)}function an(n,t,r,e){var o,i=n._creatingCover,s=n._creatingPanel,u=n._brushOption;if(n._track.push(r.slice()),function(n){var t=n._track;if(!t.length)return!1;var r=t[t.length-1],e=t[0],o=r[0]-e[0],i=r[1]-e[1];return R(o*o+i*i,.5)>k}(n)||i){if(s&&!i){"single"===u.brushMode&&A(n);var h=a(u);h.brushType=sn(h.brushType,s),h.panelId=s===w?null:s.panelId,i=n._creatingCover=P(n,h),n._covers.push(i)}if(i){var c=cn[sn(n._brushType,s)];i.__brushOption.range=c.getCreatingRange(rn(n,i,n._track)),e&&(Y(n,i),c.updateCommon(n,i)),X(n,i),o={isEnd:e}}}else e&&"single"===u.brushMode&&u.removeOnClick&&N(n,t,r)&&A(n)&&(o={isEnd:e,removeOnClick:!0});return o}function sn(n,r){return"auto"===n?(t(r&&r.defaultBrushType,'MUST have defaultBrushType when brushType is "atuo"'),r.defaultBrushType):n}var un={mousedown:function(n){if(this._dragging)hn(this,n);else if(!n.target||!n.target.draggable){en(n);var t=this.group.transformCoordToLocal(n.offsetX,n.offsetY);this._creatingCover=null,(this._creatingPanel=N(this,n,t))&&(this._dragging=!0,this._track=[t.slice()])}},mousemove:function(n){var t=n.offsetX,r=n.offsetY,e=this.group.transformCoordToLocal(t,r);if(function(n,t,r){if(n._brushType&&!function(n,t,r){var e=n._zr;return t<0||t>e.getWidth()||r<0||r>e.getHeight()}(n,t.offsetX,t.offsetY)){var e=n._zr,o=n._covers,i=N(n,t,r);if(!n._dragging)for(var a=0;a<o.length;a++){var s=o[a].__brushOption;if(i&&(i===w||s.panelId===i.panelId)&&cn[s.brushType].contain(o[a],r[0],r[1]))return}i&&e.setCursorStyle("crosshair")}}(this,n,e),this._dragging){en(n);var o=an(this,n,e,!1);o&&H(this,o)}},mouseup:function(n){hn(this,n)}};function hn(n,t){if(n._dragging){en(t);var r=t.offsetX,e=t.offsetY,o=n.group.transformCoordToLocal(r,e),i=an(n,t,o,!0);n._dragging=!1,n._track=[],n._creatingCover=null,i&&H(n,i)}}var cn={lineX:fn(0),lineY:fn(1),rect:{createCover:function(n,t){function r(n){return n}return U({toRectRange:r,fromRectRange:r},n,t,[["w"],["e"],["n"],["s"],["s","e"],["s","w"],["n","e"],["n","w"]])},getCreatingRange:function(n){var t=Q(n);return J(t[1][0],t[1][1],t[0][0],t[0][1])},updateCoverShape:function(n,t,r,e){Z(n,t,r,e)},updateCommon:$,contain:on},polygon:{createCover:function(n,t){var e=new r;return e.add(new c({name:"main",style:F(t),silent:!0})),e},getCreatingRange:function(n){return n},endCreating:function(n,t){t.remove(t.childAt(0)),t.add(new f({name:"main",draggable:!0,drift:l(nn,n,t),ondragend:l(H,n,{isEnd:!0})}))},updateCoverShape:function(n,t,r,e){t.childAt(0).setShape({points:rn(n,t,r)})},updateCommon:$,contain:on}};function fn(n){return{createCover:function(t,r){return U({toRectRange:function(t){var r=[t,[0,100]];return n&&r.reverse(),r},fromRectRange:function(t){return t[n]}},t,r,[[["w"],["e"]],[["n"],["s"]]][n])},getCreatingRange:function(t){var r=Q(t);return[T(r[0][n],r[1][n]),O(r[0][n],r[1][n])]},updateCoverShape:function(t,r,e,o){var i,a=W(t,r);if(a!==w&&a.getLinearBrushOtherExtent)i=a.getLinearBrushOtherExtent(n);else{var s=t._zr;i=[0,[s.getWidth(),s.getHeight()][1-n]]}var u=[e,i];n&&u.reverse(),Z(t,r,u,o)},updateCommon:$,contain:on}}var ln=M;function dn(n){return n=vn(n),function(t){return _(t,n)}}function pn(n,t){return n=vn(n),function(r){var e=null!=t?t:r,o=e?n.width:n.height,i=e?n.x:n.y;return[i,i+(o||0)]}}function gn(n,t,r){var e=vn(n);return function(n,o){return e.contain(o[0],o[1])&&!C(n,t,r)}}function vn(n){return m.create(n)}export{ln as B,gn as a,pn as b,dn as m};