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
8.3 KiB
2 lines
8.3 KiB
// https://d3js.org/d3-brush/ v1.0.6 Copyright 2018 Mike Bostock |
|
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("d3-selection"),require("d3-dispatch"),require("d3-drag"),require("d3-interpolate"),require("d3-transition")):"function"==typeof define&&define.amd?define(["exports","d3-selection","d3-dispatch","d3-drag","d3-interpolate","d3-transition"],e):e(t.d3=t.d3||{},t.d3,t.d3,t.d3,t.d3,t.d3)}(this,function(t,e,n,r,s,i){"use strict";function a(t){return function(){return t}}function u(t,e,n){this.target=t,this.type=e,this.selection=n}function o(){e.event.stopImmediatePropagation()}function l(){e.event.preventDefault(),e.event.stopImmediatePropagation()}var c={name:"drag"},h={name:"space"},f={name:"handle"},p={name:"center"},d={name:"x",handles:["e","w"].map(_),input:function(t,e){return t&&[[t[0],e[0][1]],[t[1],e[1][1]]]},output:function(t){return t&&[t[0][0],t[1][0]]}},v={name:"y",handles:["n","s"].map(_),input:function(t,e){return t&&[[e[0][0],t[0]],[e[1][0],t[1]]]},output:function(t){return t&&[t[0][1],t[1][1]]}},m={name:"xy",handles:["n","e","s","w","nw","ne","se","sw"].map(_),input:function(t){return t},output:function(t){return t}},y={overlay:"crosshair",selection:"move",n:"ns-resize",e:"ew-resize",s:"ns-resize",w:"ew-resize",nw:"nwse-resize",ne:"nesw-resize",se:"nwse-resize",sw:"nesw-resize"},b={e:"w",w:"e",nw:"ne",ne:"nw",se:"sw",sw:"se"},w={n:"s",s:"n",nw:"sw",ne:"se",se:"ne",sw:"nw"},g={overlay:1,selection:1,n:null,e:1,s:null,w:-1,nw:-1,ne:1,se:1,sw:-1},x={overlay:1,selection:1,n:-1,e:null,s:1,w:null,nw:-1,ne:-1,se:1,sw:1};function _(t){return{type:t}}function M(){return!e.event.button}function k(){var t=this.ownerSVGElement||this;return[[0,0],[t.width.baseVal.value,t.height.baseVal.value]]}function z(t){for(;!t.__brush;)if(!(t=t.parentNode))return;return t.__brush}function A(t){return t[0][0]===t[1][0]||t[0][1]===t[1][1]}function q(t){var m,q=k,E=M,K=n.dispatch(S,"start","brush","end"),P=6;function S(n){var r=n.property("__brush",D).selectAll(".overlay").data([_("overlay")]);r.enter().append("rect").attr("class","overlay").attr("pointer-events","all").attr("cursor",y.overlay).merge(r).each(function(){var t=z(this).extent;e.select(this).attr("x",t[0][0]).attr("y",t[0][1]).attr("width",t[1][0]-t[0][0]).attr("height",t[1][1]-t[0][1])}),n.selectAll(".selection").data([_("selection")]).enter().append("rect").attr("class","selection").attr("cursor",y.selection).attr("fill","#777").attr("fill-opacity",.3).attr("stroke","#fff").attr("shape-rendering","crispEdges");var s=n.selectAll(".handle").data(t.handles,function(t){return t.type});s.exit().remove(),s.enter().append("rect").attr("class",function(t){return"handle handle--"+t.type}).attr("cursor",function(t){return y[t.type]}),n.each(T).attr("fill","none").attr("pointer-events","all").style("-webkit-tap-highlight-color","rgba(0,0,0,0)").on("mousedown.brush touchstart.brush",C)}function T(){var t=e.select(this),n=z(this).selection;n?(t.selectAll(".selection").style("display",null).attr("x",n[0][0]).attr("y",n[0][1]).attr("width",n[1][0]-n[0][0]).attr("height",n[1][1]-n[0][1]),t.selectAll(".handle").style("display",null).attr("x",function(t){return"e"===t.type[t.type.length-1]?n[1][0]-P/2:n[0][0]-P/2}).attr("y",function(t){return"s"===t.type[0]?n[1][1]-P/2:n[0][1]-P/2}).attr("width",function(t){return"n"===t.type||"s"===t.type?n[1][0]-n[0][0]+P:P}).attr("height",function(t){return"e"===t.type||"w"===t.type?n[1][1]-n[0][1]+P:P})):t.selectAll(".selection,.handle").style("display","none").attr("x",null).attr("y",null).attr("width",null).attr("height",null)}function V(t,e){return t.__brush.emitter||new j(t,e)}function j(t,e){this.that=t,this.args=e,this.state=t.__brush,this.active=0}function C(){if(e.event.touches){if(e.event.changedTouches.length<e.event.touches.length)return l()}else if(m)return;if(E.apply(this,arguments)){var n,s,a,u,_,M,k,q,K,P,S,j,C,D=this,I=e.event.target.__data__.type,G="selection"===(e.event.metaKey?I="overlay":I)?c:e.event.altKey?p:f,N=t===v?null:g[I],O=t===d?null:x[I],X=z(D),Y=X.extent,B=X.selection,F=Y[0][0],H=Y[0][1],J=Y[1][0],L=Y[1][1],Q=N&&O&&e.event.shiftKey,R=e.mouse(D),U=R,W=V(D,arguments).beforestart();"overlay"===I?X.selection=B=[[n=t===v?F:R[0],a=t===d?H:R[1]],[_=t===v?J:n,k=t===d?L:a]]:(n=B[0][0],a=B[0][1],_=B[1][0],k=B[1][1]),s=n,u=a,M=_,q=k;var Z=e.select(D).attr("pointer-events","none"),$=Z.selectAll(".overlay").attr("cursor",y[I]);if(e.event.touches)Z.on("touchmove.brush",et,!0).on("touchend.brush touchcancel.brush",rt,!0);else{var tt=e.select(e.event.view).on("keydown.brush",function(){switch(e.event.keyCode){case 16:Q=N&&O;break;case 18:G===f&&(N&&(_=M-K*N,n=s+K*N),O&&(k=q-P*O,a=u+P*O),G=p,nt());break;case 32:G!==f&&G!==p||(N<0?_=M-K:N>0&&(n=s-K),O<0?k=q-P:O>0&&(a=u-P),G=h,$.attr("cursor",y.selection),nt());break;default:return}l()},!0).on("keyup.brush",function(){switch(e.event.keyCode){case 16:Q&&(j=C=Q=!1,nt());break;case 18:G===p&&(N<0?_=M:N>0&&(n=s),O<0?k=q:O>0&&(a=u),G=f,nt());break;case 32:G===h&&(e.event.altKey?(N&&(_=M-K*N,n=s+K*N),O&&(k=q-P*O,a=u+P*O),G=p):(N<0?_=M:N>0&&(n=s),O<0?k=q:O>0&&(a=u),G=f),$.attr("cursor",y[I]),nt());break;default:return}l()},!0).on("mousemove.brush",et,!0).on("mouseup.brush",rt,!0);r.dragDisable(e.event.view)}o(),i.interrupt(D),T.call(D),W.start()}function et(){var t=e.mouse(D);!Q||j||C||(Math.abs(t[0]-U[0])>Math.abs(t[1]-U[1])?C=!0:j=!0),U=t,S=!0,l(),nt()}function nt(){var t;switch(K=U[0]-R[0],P=U[1]-R[1],G){case h:case c:N&&(K=Math.max(F-n,Math.min(J-_,K)),s=n+K,M=_+K),O&&(P=Math.max(H-a,Math.min(L-k,P)),u=a+P,q=k+P);break;case f:N<0?(K=Math.max(F-n,Math.min(J-n,K)),s=n+K,M=_):N>0&&(K=Math.max(F-_,Math.min(J-_,K)),s=n,M=_+K),O<0?(P=Math.max(H-a,Math.min(L-a,P)),u=a+P,q=k):O>0&&(P=Math.max(H-k,Math.min(L-k,P)),u=a,q=k+P);break;case p:N&&(s=Math.max(F,Math.min(J,n-K*N)),M=Math.max(F,Math.min(J,_+K*N))),O&&(u=Math.max(H,Math.min(L,a-P*O)),q=Math.max(H,Math.min(L,k+P*O)))}M<s&&(N*=-1,t=n,n=_,_=t,t=s,s=M,M=t,I in b&&$.attr("cursor",y[I=b[I]])),q<u&&(O*=-1,t=a,a=k,k=t,t=u,u=q,q=t,I in w&&$.attr("cursor",y[I=w[I]])),X.selection&&(B=X.selection),j&&(s=B[0][0],M=B[1][0]),C&&(u=B[0][1],q=B[1][1]),B[0][0]===s&&B[0][1]===u&&B[1][0]===M&&B[1][1]===q||(X.selection=[[s,u],[M,q]],T.call(D),W.brush())}function rt(){if(o(),e.event.touches){if(e.event.touches.length)return;m&&clearTimeout(m),m=setTimeout(function(){m=null},500),Z.on("touchmove.brush touchend.brush touchcancel.brush",null)}else r.dragEnable(e.event.view,S),tt.on("keydown.brush keyup.brush mousemove.brush mouseup.brush",null);Z.attr("pointer-events","all"),$.attr("cursor",y.overlay),X.selection&&(B=X.selection),A(B)&&(X.selection=null,T.call(D)),W.end()}}function D(){var e=this.__brush||{selection:null};return e.extent=q.apply(this,arguments),e.dim=t,e}return S.move=function(e,n){e.selection?e.on("start.brush",function(){V(this,arguments).beforestart().start()}).on("interrupt.brush end.brush",function(){V(this,arguments).end()}).tween("brush",function(){var e=this,r=e.__brush,i=V(e,arguments),a=r.selection,u=t.input("function"==typeof n?n.apply(this,arguments):n,r.extent),o=s.interpolate(a,u);function l(t){r.selection=1===t&&A(u)?null:o(t),T.call(e),i.brush()}return a&&u?l:l(1)}):e.each(function(){var e=arguments,r=this.__brush,s=t.input("function"==typeof n?n.apply(this,e):n,r.extent),a=V(this,e).beforestart();i.interrupt(this),r.selection=null==s||A(s)?null:s,T.call(this),a.start().brush().end()})},j.prototype={beforestart:function(){return 1==++this.active&&(this.state.emitter=this,this.starting=!0),this},start:function(){return this.starting&&(this.starting=!1,this.emit("start")),this},brush:function(){return this.emit("brush"),this},end:function(){return 0==--this.active&&(delete this.state.emitter,this.emit("end")),this},emit:function(n){e.customEvent(new u(S,n,t.output(this.state.selection)),K.apply,K,[n,this.that,this.args])}},S.extent=function(t){return arguments.length?(q="function"==typeof t?t:a([[+t[0][0],+t[0][1]],[+t[1][0],+t[1][1]]]),S):q},S.filter=function(t){return arguments.length?(E="function"==typeof t?t:a(!!t),S):E},S.handleSize=function(t){return arguments.length?(P=+t,S):P},S.on=function(){var t=K.on.apply(K,arguments);return t===K?S:t},S}t.brush=function(){return q(m)},t.brushX=function(){return q(d)},t.brushY=function(){return q(v)},t.brushSelection=function(t){var e=t.__brush;return e?e.dim.output(e.selection):null},Object.defineProperty(t,"__esModule",{value:!0})});
|
|
|