()
| 7615 | g.selectAll(".extent,.e>rect,.w>rect").attr("height", extent[1][1] - extent[0][1]); |
| 7616 | } |
| 7617 | function brushstart() { |
| 7618 | var target = this, eventTarget = d3.select(d3.event.target), event_ = event.of(target, arguments), g = d3.select(target), resizing = eventTarget.datum(), resizingX = !/^(n|s)$/.test(resizing) && x, resizingY = !/^(e|w)$/.test(resizing) && y, dragging = eventTarget.classed("extent"), center, origin = mouse(), offset; |
| 7619 | var w = d3.select(d3_window).on("mousemove.brush", brushmove).on("mouseup.brush", brushend).on("touchmove.brush", brushmove).on("touchend.brush", brushend).on("keydown.brush", keydown).on("keyup.brush", keyup); |
| 7620 | if (dragging) { |
| 7621 | origin[0] = extent[0][0] - origin[0]; |
| 7622 | origin[1] = extent[0][1] - origin[1]; |
| 7623 | } else if (resizing) { |
| 7624 | var ex = +/w$/.test(resizing), ey = +/^n/.test(resizing); |
| 7625 | offset = [ extent[1 - ex][0] - origin[0], extent[1 - ey][1] - origin[1] ]; |
| 7626 | origin[0] = extent[ex][0]; |
| 7627 | origin[1] = extent[ey][1]; |
| 7628 | } else if (d3.event.altKey) center = origin.slice(); |
| 7629 | g.style("pointer-events", "none").selectAll(".resize").style("display", null); |
| 7630 | d3.select("body").style("cursor", eventTarget.style("cursor")); |
| 7631 | event_({ |
| 7632 | type: "brushstart" |
| 7633 | }); |
| 7634 | brushmove(); |
| 7635 | d3_eventCancel(); |
| 7636 | function mouse() { |
| 7637 | var touches = d3.event.changedTouches; |
| 7638 | return touches ? d3.touches(target, touches)[0] : d3.mouse(target); |
| 7639 | } |
| 7640 | function keydown() { |
| 7641 | if (d3.event.keyCode == 32) { |
| 7642 | if (!dragging) { |
| 7643 | center = null; |
| 7644 | origin[0] -= extent[1][0]; |
| 7645 | origin[1] -= extent[1][1]; |
| 7646 | dragging = 2; |
| 7647 | } |
| 7648 | d3_eventCancel(); |
| 7649 | } |
| 7650 | } |
| 7651 | function keyup() { |
| 7652 | if (d3.event.keyCode == 32 && dragging == 2) { |
| 7653 | origin[0] += extent[1][0]; |
| 7654 | origin[1] += extent[1][1]; |
| 7655 | dragging = 0; |
| 7656 | d3_eventCancel(); |
| 7657 | } |
| 7658 | } |
| 7659 | function brushmove() { |
| 7660 | var point = mouse(), moved = false; |
| 7661 | if (offset) { |
| 7662 | point[0] += offset[0]; |
| 7663 | point[1] += offset[1]; |
| 7664 | } |
| 7665 | if (!dragging) { |
| 7666 | if (d3.event.altKey) { |
| 7667 | if (!center) center = [ (extent[0][0] + extent[1][0]) / 2, (extent[0][1] + extent[1][1]) / 2 ]; |
| 7668 | origin[0] = extent[+(point[0] < center[0])][0]; |
| 7669 | origin[1] = extent[+(point[1] < center[1])][1]; |
| 7670 | } else center = null; |
| 7671 | } |
| 7672 | if (resizingX && move1(point, x, 0)) { |
| 7673 | redrawX(g); |
| 7674 | moved = true; |
nothing calls this directly
no test coverage detected