Merge branch 'drag-suppress' into 3.2.2
This commit is contained in:
Коммит
d524fe5843
|
@ -357,6 +357,35 @@ d3 = function() {
|
||||||
return value === source ? target : value;
|
return value === source ? target : value;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
function d3_vendorSymbol(object, name) {
|
||||||
|
if (name in object) return name;
|
||||||
|
name = name.charAt(0).toUpperCase() + name.substring(1);
|
||||||
|
for (var i = 0, n = d3_vendorPrefixes.length; i < n; ++i) {
|
||||||
|
var prefixName = d3_vendorPrefixes[i] + name;
|
||||||
|
if (prefixName in object) return prefixName;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
var d3_vendorPrefixes = [ "webkit", "ms", "moz", "Moz", "o", "O" ];
|
||||||
|
var d3_array = d3_arraySlice;
|
||||||
|
function d3_arrayCopy(pseudoarray) {
|
||||||
|
var i = -1, n = pseudoarray.length, array = [];
|
||||||
|
while (++i < n) array.push(pseudoarray[i]);
|
||||||
|
return array;
|
||||||
|
}
|
||||||
|
function d3_arraySlice(pseudoarray) {
|
||||||
|
return Array.prototype.slice.call(pseudoarray);
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
d3_array(d3_documentElement.childNodes)[0].nodeType;
|
||||||
|
} catch (e) {
|
||||||
|
d3_array = d3_arrayCopy;
|
||||||
|
}
|
||||||
|
var d3_arraySubclass = [].__proto__ ? function(array, prototype) {
|
||||||
|
array.__proto__ = prototype;
|
||||||
|
} : function(array, prototype) {
|
||||||
|
for (var property in prototype) array[property] = prototype[property];
|
||||||
|
};
|
||||||
|
function d3_noop() {}
|
||||||
d3.dispatch = function() {
|
d3.dispatch = function() {
|
||||||
var dispatch = new d3_dispatch(), i = -1, n = arguments.length;
|
var dispatch = new d3_dispatch(), i = -1, n = arguments.length;
|
||||||
while (++i < n) dispatch[arguments[i]] = d3_dispatch_event(dispatch);
|
while (++i < n) dispatch[arguments[i]] = d3_dispatch_event(dispatch);
|
||||||
|
@ -400,8 +429,7 @@ d3 = function() {
|
||||||
return event;
|
return event;
|
||||||
}
|
}
|
||||||
d3.event = null;
|
d3.event = null;
|
||||||
function d3_eventCancel() {
|
function d3_eventPreventDefault() {
|
||||||
d3.event.stopPropagation();
|
|
||||||
d3.event.preventDefault();
|
d3.event.preventDefault();
|
||||||
}
|
}
|
||||||
function d3_eventSource() {
|
function d3_eventSource() {
|
||||||
|
@ -409,16 +437,6 @@ d3 = function() {
|
||||||
while (s = e.sourceEvent) e = s;
|
while (s = e.sourceEvent) e = s;
|
||||||
return e;
|
return e;
|
||||||
}
|
}
|
||||||
function d3_eventSuppress(target, type) {
|
|
||||||
function off() {
|
|
||||||
target.on(type, null);
|
|
||||||
}
|
|
||||||
target.on(type, function() {
|
|
||||||
d3_eventCancel();
|
|
||||||
off();
|
|
||||||
}, true);
|
|
||||||
setTimeout(off, 0);
|
|
||||||
}
|
|
||||||
function d3_eventDispatch(target) {
|
function d3_eventDispatch(target) {
|
||||||
var dispatch = new d3_dispatch(), i = 0, n = arguments.length;
|
var dispatch = new d3_dispatch(), i = 0, n = arguments.length;
|
||||||
while (++i < n) dispatch[arguments[i]] = d3_dispatch_event(dispatch);
|
while (++i < n) dispatch[arguments[i]] = d3_dispatch_event(dispatch);
|
||||||
|
@ -436,144 +454,10 @@ d3 = function() {
|
||||||
};
|
};
|
||||||
return dispatch;
|
return dispatch;
|
||||||
}
|
}
|
||||||
d3.mouse = function(container) {
|
d3.requote = function(s) {
|
||||||
return d3_mousePoint(container, d3_eventSource());
|
return s.replace(d3_requote_re, "\\$&");
|
||||||
};
|
|
||||||
var d3_mouse_bug44083 = /WebKit/.test(d3_window.navigator.userAgent) ? -1 : 0;
|
|
||||||
function d3_mousePoint(container, e) {
|
|
||||||
var svg = container.ownerSVGElement || container;
|
|
||||||
if (svg.createSVGPoint) {
|
|
||||||
var point = svg.createSVGPoint();
|
|
||||||
if (d3_mouse_bug44083 < 0 && (d3_window.scrollX || d3_window.scrollY)) {
|
|
||||||
svg = d3.select("body").append("svg").style({
|
|
||||||
position: "absolute",
|
|
||||||
top: 0,
|
|
||||||
left: 0,
|
|
||||||
margin: 0,
|
|
||||||
padding: 0,
|
|
||||||
border: "none"
|
|
||||||
}, "important");
|
|
||||||
var ctm = svg[0][0].getScreenCTM();
|
|
||||||
d3_mouse_bug44083 = !(ctm.f || ctm.e);
|
|
||||||
svg.remove();
|
|
||||||
}
|
|
||||||
if (d3_mouse_bug44083) {
|
|
||||||
point.x = e.pageX;
|
|
||||||
point.y = e.pageY;
|
|
||||||
} else {
|
|
||||||
point.x = e.clientX;
|
|
||||||
point.y = e.clientY;
|
|
||||||
}
|
|
||||||
point = point.matrixTransform(container.getScreenCTM().inverse());
|
|
||||||
return [ point.x, point.y ];
|
|
||||||
}
|
|
||||||
var rect = container.getBoundingClientRect();
|
|
||||||
return [ e.clientX - rect.left - container.clientLeft, e.clientY - rect.top - container.clientTop ];
|
|
||||||
}
|
|
||||||
var d3_array = d3_arraySlice;
|
|
||||||
function d3_arrayCopy(pseudoarray) {
|
|
||||||
var i = -1, n = pseudoarray.length, array = [];
|
|
||||||
while (++i < n) array.push(pseudoarray[i]);
|
|
||||||
return array;
|
|
||||||
}
|
|
||||||
function d3_arraySlice(pseudoarray) {
|
|
||||||
return Array.prototype.slice.call(pseudoarray);
|
|
||||||
}
|
|
||||||
try {
|
|
||||||
d3_array(d3_documentElement.childNodes)[0].nodeType;
|
|
||||||
} catch (e) {
|
|
||||||
d3_array = d3_arrayCopy;
|
|
||||||
}
|
|
||||||
var d3_arraySubclass = [].__proto__ ? function(array, prototype) {
|
|
||||||
array.__proto__ = prototype;
|
|
||||||
} : function(array, prototype) {
|
|
||||||
for (var property in prototype) array[property] = prototype[property];
|
|
||||||
};
|
|
||||||
d3.touches = function(container, touches) {
|
|
||||||
if (arguments.length < 2) touches = d3_eventSource().touches;
|
|
||||||
return touches ? d3_array(touches).map(function(touch) {
|
|
||||||
var point = d3_mousePoint(container, touch);
|
|
||||||
point.identifier = touch.identifier;
|
|
||||||
return point;
|
|
||||||
}) : [];
|
|
||||||
};
|
|
||||||
function d3_vendorSymbol(object, name) {
|
|
||||||
if (name in object) return name;
|
|
||||||
name = name.charAt(0).toUpperCase() + name.substring(1);
|
|
||||||
for (var i = 0, n = d3_vendorPrefixes.length; i < n; ++i) {
|
|
||||||
var prefixName = d3_vendorPrefixes[i] + name;
|
|
||||||
if (prefixName in object) return prefixName;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
var d3_vendorPrefixes = [ "webkit", "ms", "moz", "Moz", "o", "O" ];
|
|
||||||
var d3_event_userSelectProperty = d3_vendorSymbol(d3_documentElement.style, "userSelect"), d3_event_userSelectSuppress = d3_event_userSelectProperty ? function() {
|
|
||||||
var style = d3_documentElement.style, select = style[d3_event_userSelectProperty];
|
|
||||||
style[d3_event_userSelectProperty] = "none";
|
|
||||||
return function() {
|
|
||||||
style[d3_event_userSelectProperty] = select;
|
|
||||||
};
|
|
||||||
} : function(type) {
|
|
||||||
var w = d3.select(d3_window).on("selectstart." + type, d3_eventCancel);
|
|
||||||
return function() {
|
|
||||||
w.on("selectstart." + type, null);
|
|
||||||
};
|
|
||||||
};
|
|
||||||
d3.behavior.drag = function() {
|
|
||||||
var event = d3_eventDispatch(drag, "drag", "dragstart", "dragend"), origin = null;
|
|
||||||
function drag() {
|
|
||||||
this.on("mousedown.drag", mousedown).on("touchstart.drag", mousedown);
|
|
||||||
}
|
|
||||||
function mousedown() {
|
|
||||||
var target = this, event_ = event.of(target, arguments), eventTarget = d3.event.target, touchId = d3.event.touches ? d3.event.changedTouches[0].identifier : null, offset, origin_ = point(), moved = 0, selectEnable = d3_event_userSelectSuppress(touchId != null ? "drag-" + touchId : "drag");
|
|
||||||
var w = d3.select(d3_window).on(touchId != null ? "touchmove.drag-" + touchId : "mousemove.drag", dragmove).on(touchId != null ? "touchend.drag-" + touchId : "mouseup.drag", dragend, true);
|
|
||||||
if (origin) {
|
|
||||||
offset = origin.apply(target, arguments);
|
|
||||||
offset = [ offset.x - origin_[0], offset.y - origin_[1] ];
|
|
||||||
} else {
|
|
||||||
offset = [ 0, 0 ];
|
|
||||||
}
|
|
||||||
event_({
|
|
||||||
type: "dragstart"
|
|
||||||
});
|
|
||||||
function point() {
|
|
||||||
var p = target.parentNode;
|
|
||||||
return touchId != null ? d3.touches(p).filter(function(p) {
|
|
||||||
return p.identifier === touchId;
|
|
||||||
})[0] : d3.mouse(p);
|
|
||||||
}
|
|
||||||
function dragmove() {
|
|
||||||
if (!target.parentNode) return dragend();
|
|
||||||
var p = point(), dx = p[0] - origin_[0], dy = p[1] - origin_[1];
|
|
||||||
moved |= dx | dy;
|
|
||||||
origin_ = p;
|
|
||||||
d3_eventCancel();
|
|
||||||
event_({
|
|
||||||
type: "drag",
|
|
||||||
x: p[0] + offset[0],
|
|
||||||
y: p[1] + offset[1],
|
|
||||||
dx: dx,
|
|
||||||
dy: dy
|
|
||||||
});
|
|
||||||
}
|
|
||||||
function dragend() {
|
|
||||||
event_({
|
|
||||||
type: "dragend"
|
|
||||||
});
|
|
||||||
if (moved) {
|
|
||||||
d3_eventCancel();
|
|
||||||
if (d3.event.target === eventTarget) d3_eventSuppress(w, "click");
|
|
||||||
}
|
|
||||||
w.on(touchId != null ? "touchmove.drag-" + touchId : "mousemove.drag", null).on(touchId != null ? "touchend.drag-" + touchId : "mouseup.drag", null);
|
|
||||||
selectEnable();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
drag.origin = function(x) {
|
|
||||||
if (!arguments.length) return origin;
|
|
||||||
origin = x;
|
|
||||||
return drag;
|
|
||||||
};
|
|
||||||
return d3.rebind(drag, event, "on");
|
|
||||||
};
|
};
|
||||||
|
var d3_requote_re = /[\\\^\$\*\+\?\|\[\]\(\)\.\{\}]/g;
|
||||||
function d3_selection(groups) {
|
function d3_selection(groups) {
|
||||||
d3_arraySubclass(groups, d3_selectionPrototype);
|
d3_arraySubclass(groups, d3_selectionPrototype);
|
||||||
return groups;
|
return groups;
|
||||||
|
@ -698,10 +582,6 @@ d3 = function() {
|
||||||
function d3_collapse(s) {
|
function d3_collapse(s) {
|
||||||
return s.trim().replace(/\s+/g, " ");
|
return s.trim().replace(/\s+/g, " ");
|
||||||
}
|
}
|
||||||
d3.requote = function(s) {
|
|
||||||
return s.replace(d3_requote_re, "\\$&");
|
|
||||||
};
|
|
||||||
var d3_requote_re = /[\\\^\$\*\+\?\|\[\]\(\)\.\{\}]/g;
|
|
||||||
d3_selectionPrototype.classed = function(name, value) {
|
d3_selectionPrototype.classed = function(name, value) {
|
||||||
if (arguments.length < 2) {
|
if (arguments.length < 2) {
|
||||||
if (typeof name === "string") {
|
if (typeof name === "string") {
|
||||||
|
@ -973,78 +853,6 @@ d3 = function() {
|
||||||
return !a - !b || comparator(a.__data__, b.__data__);
|
return !a - !b || comparator(a.__data__, b.__data__);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
function d3_noop() {}
|
|
||||||
d3_selectionPrototype.on = function(type, listener, capture) {
|
|
||||||
var n = arguments.length;
|
|
||||||
if (n < 3) {
|
|
||||||
if (typeof type !== "string") {
|
|
||||||
if (n < 2) listener = false;
|
|
||||||
for (capture in type) this.each(d3_selection_on(capture, type[capture], listener));
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
if (n < 2) return (n = this.node()["__on" + type]) && n._;
|
|
||||||
capture = false;
|
|
||||||
}
|
|
||||||
return this.each(d3_selection_on(type, listener, capture));
|
|
||||||
};
|
|
||||||
function d3_selection_on(type, listener, capture) {
|
|
||||||
var name = "__on" + type, i = type.indexOf("."), wrap = d3_selection_onListener;
|
|
||||||
if (i > 0) type = type.substring(0, i);
|
|
||||||
var filter = d3_selection_onFilters.get(type);
|
|
||||||
if (filter) type = filter, wrap = d3_selection_onFilter;
|
|
||||||
function onRemove() {
|
|
||||||
var l = this[name];
|
|
||||||
if (l) {
|
|
||||||
this.removeEventListener(type, l, l.$);
|
|
||||||
delete this[name];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
function onAdd() {
|
|
||||||
var l = wrap(listener, d3_array(arguments));
|
|
||||||
onRemove.call(this);
|
|
||||||
this.addEventListener(type, this[name] = l, l.$ = capture);
|
|
||||||
l._ = listener;
|
|
||||||
}
|
|
||||||
function removeAll() {
|
|
||||||
var re = new RegExp("^__on([^.]+)" + d3.requote(type) + "$"), match;
|
|
||||||
for (var name in this) {
|
|
||||||
if (match = name.match(re)) {
|
|
||||||
var l = this[name];
|
|
||||||
this.removeEventListener(match[1], l, l.$);
|
|
||||||
delete this[name];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return i ? listener ? onAdd : onRemove : listener ? d3_noop : removeAll;
|
|
||||||
}
|
|
||||||
var d3_selection_onFilters = d3.map({
|
|
||||||
mouseenter: "mouseover",
|
|
||||||
mouseleave: "mouseout"
|
|
||||||
});
|
|
||||||
d3_selection_onFilters.forEach(function(k) {
|
|
||||||
if ("on" + k in d3_document) d3_selection_onFilters.remove(k);
|
|
||||||
});
|
|
||||||
function d3_selection_onListener(listener, argumentz) {
|
|
||||||
return function(e) {
|
|
||||||
var o = d3.event;
|
|
||||||
d3.event = e;
|
|
||||||
argumentz[0] = this.__data__;
|
|
||||||
try {
|
|
||||||
listener.apply(this, argumentz);
|
|
||||||
} finally {
|
|
||||||
d3.event = o;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
function d3_selection_onFilter(listener, argumentz) {
|
|
||||||
var l = d3_selection_onListener(listener, argumentz);
|
|
||||||
return function(e) {
|
|
||||||
var target = this, related = e.relatedTarget;
|
|
||||||
if (!related || related !== target && !(related.compareDocumentPosition(target) & 8)) {
|
|
||||||
l.call(target, e);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
d3_selectionPrototype.each = function(callback) {
|
d3_selectionPrototype.each = function(callback) {
|
||||||
return d3_selection_each(this, function(node, i, j) {
|
return d3_selection_each(this, function(node, i, j) {
|
||||||
callback.call(node, node.__data__, i, j);
|
callback.call(node, node.__data__, i, j);
|
||||||
|
@ -1135,6 +943,189 @@ d3 = function() {
|
||||||
return d3_selection([ group ]);
|
return d3_selection([ group ]);
|
||||||
};
|
};
|
||||||
var d3_selectionRoot = d3.select(d3_documentElement);
|
var d3_selectionRoot = d3.select(d3_documentElement);
|
||||||
|
d3_selectionPrototype.on = function(type, listener, capture) {
|
||||||
|
var n = arguments.length;
|
||||||
|
if (n < 3) {
|
||||||
|
if (typeof type !== "string") {
|
||||||
|
if (n < 2) listener = false;
|
||||||
|
for (capture in type) this.each(d3_selection_on(capture, type[capture], listener));
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
if (n < 2) return (n = this.node()["__on" + type]) && n._;
|
||||||
|
capture = false;
|
||||||
|
}
|
||||||
|
return this.each(d3_selection_on(type, listener, capture));
|
||||||
|
};
|
||||||
|
function d3_selection_on(type, listener, capture) {
|
||||||
|
var name = "__on" + type, i = type.indexOf("."), wrap = d3_selection_onListener;
|
||||||
|
if (i > 0) type = type.substring(0, i);
|
||||||
|
var filter = d3_selection_onFilters.get(type);
|
||||||
|
if (filter) type = filter, wrap = d3_selection_onFilter;
|
||||||
|
function onRemove() {
|
||||||
|
var l = this[name];
|
||||||
|
if (l) {
|
||||||
|
this.removeEventListener(type, l, l.$);
|
||||||
|
delete this[name];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
function onAdd() {
|
||||||
|
var l = wrap(listener, d3_array(arguments));
|
||||||
|
onRemove.call(this);
|
||||||
|
this.addEventListener(type, this[name] = l, l.$ = capture);
|
||||||
|
l._ = listener;
|
||||||
|
}
|
||||||
|
function removeAll() {
|
||||||
|
var re = new RegExp("^__on([^.]+)" + d3.requote(type) + "$"), match;
|
||||||
|
for (var name in this) {
|
||||||
|
if (match = name.match(re)) {
|
||||||
|
var l = this[name];
|
||||||
|
this.removeEventListener(match[1], l, l.$);
|
||||||
|
delete this[name];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return i ? listener ? onAdd : onRemove : listener ? d3_noop : removeAll;
|
||||||
|
}
|
||||||
|
var d3_selection_onFilters = d3.map({
|
||||||
|
mouseenter: "mouseover",
|
||||||
|
mouseleave: "mouseout"
|
||||||
|
});
|
||||||
|
d3_selection_onFilters.forEach(function(k) {
|
||||||
|
if ("on" + k in d3_document) d3_selection_onFilters.remove(k);
|
||||||
|
});
|
||||||
|
function d3_selection_onListener(listener, argumentz) {
|
||||||
|
return function(e) {
|
||||||
|
var o = d3.event;
|
||||||
|
d3.event = e;
|
||||||
|
argumentz[0] = this.__data__;
|
||||||
|
try {
|
||||||
|
listener.apply(this, argumentz);
|
||||||
|
} finally {
|
||||||
|
d3.event = o;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
function d3_selection_onFilter(listener, argumentz) {
|
||||||
|
var l = d3_selection_onListener(listener, argumentz);
|
||||||
|
return function(e) {
|
||||||
|
var target = this, related = e.relatedTarget;
|
||||||
|
if (!related || related !== target && !(related.compareDocumentPosition(target) & 8)) {
|
||||||
|
l.call(target, e);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
var d3_event_dragSelect = d3_vendorSymbol(d3_documentElement.style, "userSelect");
|
||||||
|
function d3_event_dragSuppress(type) {
|
||||||
|
var selectstart = "selectstart." + type, dragstart = "dragstart." + type, click = "click." + type, w = d3.select(d3_window).on(selectstart, d3_eventPreventDefault).on(dragstart, d3_eventPreventDefault), style = d3_documentElement.style, select = style[d3_event_dragSelect];
|
||||||
|
style[d3_event_dragSelect] = "none";
|
||||||
|
return function(suppressClick) {
|
||||||
|
w.on(selectstart, null).on(dragstart, null);
|
||||||
|
style[d3_event_dragSelect] = select;
|
||||||
|
if (suppressClick) {
|
||||||
|
function off() {
|
||||||
|
w.on(click, null);
|
||||||
|
}
|
||||||
|
w.on(click, function() {
|
||||||
|
d3_eventPreventDefault();
|
||||||
|
off();
|
||||||
|
}, true);
|
||||||
|
setTimeout(off, 0);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
d3.mouse = function(container) {
|
||||||
|
return d3_mousePoint(container, d3_eventSource());
|
||||||
|
};
|
||||||
|
var d3_mouse_bug44083 = /WebKit/.test(d3_window.navigator.userAgent) ? -1 : 0;
|
||||||
|
function d3_mousePoint(container, e) {
|
||||||
|
var svg = container.ownerSVGElement || container;
|
||||||
|
if (svg.createSVGPoint) {
|
||||||
|
var point = svg.createSVGPoint();
|
||||||
|
if (d3_mouse_bug44083 < 0 && (d3_window.scrollX || d3_window.scrollY)) {
|
||||||
|
svg = d3.select("body").append("svg").style({
|
||||||
|
position: "absolute",
|
||||||
|
top: 0,
|
||||||
|
left: 0,
|
||||||
|
margin: 0,
|
||||||
|
padding: 0,
|
||||||
|
border: "none"
|
||||||
|
}, "important");
|
||||||
|
var ctm = svg[0][0].getScreenCTM();
|
||||||
|
d3_mouse_bug44083 = !(ctm.f || ctm.e);
|
||||||
|
svg.remove();
|
||||||
|
}
|
||||||
|
if (d3_mouse_bug44083) {
|
||||||
|
point.x = e.pageX;
|
||||||
|
point.y = e.pageY;
|
||||||
|
} else {
|
||||||
|
point.x = e.clientX;
|
||||||
|
point.y = e.clientY;
|
||||||
|
}
|
||||||
|
point = point.matrixTransform(container.getScreenCTM().inverse());
|
||||||
|
return [ point.x, point.y ];
|
||||||
|
}
|
||||||
|
var rect = container.getBoundingClientRect();
|
||||||
|
return [ e.clientX - rect.left - container.clientLeft, e.clientY - rect.top - container.clientTop ];
|
||||||
|
}
|
||||||
|
d3.touches = function(container, touches) {
|
||||||
|
if (arguments.length < 2) touches = d3_eventSource().touches;
|
||||||
|
return touches ? d3_array(touches).map(function(touch) {
|
||||||
|
var point = d3_mousePoint(container, touch);
|
||||||
|
point.identifier = touch.identifier;
|
||||||
|
return point;
|
||||||
|
}) : [];
|
||||||
|
};
|
||||||
|
d3.behavior.drag = function() {
|
||||||
|
var event = d3_eventDispatch(drag, "drag", "dragstart", "dragend"), origin = null;
|
||||||
|
function drag() {
|
||||||
|
this.on("mousedown.drag", mousedown).on("touchstart.drag", mousedown);
|
||||||
|
}
|
||||||
|
function mousedown() {
|
||||||
|
var target = this, event_ = event.of(target, arguments), eventTarget = d3.event.target, touchId = d3.event.touches ? d3.event.changedTouches[0].identifier : null, offset, origin_ = point(), moved = 0, dragRestore = d3_event_dragSuppress(touchId != null ? "drag-" + touchId : "drag");
|
||||||
|
var w = d3.select(d3_window).on(touchId != null ? "touchmove.drag-" + touchId : "mousemove.drag", dragmove).on(touchId != null ? "touchend.drag-" + touchId : "mouseup.drag", dragend, true);
|
||||||
|
if (origin) {
|
||||||
|
offset = origin.apply(target, arguments);
|
||||||
|
offset = [ offset.x - origin_[0], offset.y - origin_[1] ];
|
||||||
|
} else {
|
||||||
|
offset = [ 0, 0 ];
|
||||||
|
}
|
||||||
|
event_({
|
||||||
|
type: "dragstart"
|
||||||
|
});
|
||||||
|
function point() {
|
||||||
|
var p = target.parentNode;
|
||||||
|
return touchId != null ? d3.touches(p).filter(function(p) {
|
||||||
|
return p.identifier === touchId;
|
||||||
|
})[0] : d3.mouse(p);
|
||||||
|
}
|
||||||
|
function dragmove() {
|
||||||
|
if (!target.parentNode) return dragend();
|
||||||
|
var p = point(), dx = p[0] - origin_[0], dy = p[1] - origin_[1];
|
||||||
|
moved |= dx | dy;
|
||||||
|
origin_ = p;
|
||||||
|
event_({
|
||||||
|
type: "drag",
|
||||||
|
x: p[0] + offset[0],
|
||||||
|
y: p[1] + offset[1],
|
||||||
|
dx: dx,
|
||||||
|
dy: dy
|
||||||
|
});
|
||||||
|
}
|
||||||
|
function dragend() {
|
||||||
|
w.on(touchId != null ? "touchmove.drag-" + touchId : "mousemove.drag", null).on(touchId != null ? "touchend.drag-" + touchId : "mouseup.drag", null);
|
||||||
|
dragRestore(moved && d3.event.target === eventTarget);
|
||||||
|
event_({
|
||||||
|
type: "dragend"
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
drag.origin = function(x) {
|
||||||
|
if (!arguments.length) return origin;
|
||||||
|
origin = x;
|
||||||
|
return drag;
|
||||||
|
};
|
||||||
|
return d3.rebind(drag, event, "on");
|
||||||
|
};
|
||||||
d3.behavior.zoom = function() {
|
d3.behavior.zoom = function() {
|
||||||
var translate = [ 0, 0 ], translate0, scale = 1, distance0, scale0, scaleExtent = d3_behavior_zoomInfinity, event = d3_eventDispatch(zoom, "zoom"), x0, x1, y0, y1, touchtime;
|
var translate = [ 0, 0 ], translate0, scale = 1, distance0, scale0, scaleExtent = d3_behavior_zoomInfinity, event = d3_eventDispatch(zoom, "zoom"), x0, x1, y0, y1, touchtime;
|
||||||
function zoom() {
|
function zoom() {
|
||||||
|
@ -1205,17 +1196,15 @@ d3 = function() {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
function mousedown() {
|
function mousedown() {
|
||||||
var target = this, event_ = event.of(target, arguments), eventTarget = d3.event.target, moved = 0, w = d3.select(d3_window).on("mousemove.zoom", mousemove).on("mouseup.zoom", mouseup), l = location(d3.mouse(target)), selectEnable = d3_event_userSelectSuppress("zoom");
|
var target = this, event_ = event.of(target, arguments), eventTarget = d3.event.target, moved = 0, w = d3.select(d3_window).on("mousemove.zoom", mousemove).on("mouseup.zoom", mouseup), l = location(d3.mouse(target)), dragRestore = d3_event_dragSuppress("zoom");
|
||||||
function mousemove() {
|
function mousemove() {
|
||||||
moved = 1;
|
moved = 1;
|
||||||
translateTo(d3.mouse(target), l);
|
translateTo(d3.mouse(target), l);
|
||||||
dispatch(event_);
|
dispatch(event_);
|
||||||
}
|
}
|
||||||
function mouseup() {
|
function mouseup() {
|
||||||
if (moved) d3_eventCancel();
|
|
||||||
w.on("mousemove.zoom", null).on("mouseup.zoom", null);
|
w.on("mousemove.zoom", null).on("mouseup.zoom", null);
|
||||||
selectEnable();
|
dragRestore(moved && d3.event.target === eventTarget);
|
||||||
if (moved && d3.event.target === eventTarget) d3_eventSuppress(w, "click.zoom");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
function mousewheel() {
|
function mousewheel() {
|
||||||
|
@ -7927,7 +7916,7 @@ d3 = function() {
|
||||||
g.selectAll(".extent,.e>rect,.w>rect").attr("height", extent[1][1] - extent[0][1]);
|
g.selectAll(".extent,.e>rect,.w>rect").attr("height", extent[1][1] - extent[0][1]);
|
||||||
}
|
}
|
||||||
function brushstart() {
|
function brushstart() {
|
||||||
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;
|
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"), dragRestore = d3_event_dragSuppress("brush"), center, origin = mouse(), offset;
|
||||||
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);
|
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);
|
||||||
if (dragging) {
|
if (dragging) {
|
||||||
origin[0] = extent[0][0] - origin[0];
|
origin[0] = extent[0][0] - origin[0];
|
||||||
|
@ -7944,7 +7933,6 @@ d3 = function() {
|
||||||
type: "brushstart"
|
type: "brushstart"
|
||||||
});
|
});
|
||||||
brushmove();
|
brushmove();
|
||||||
d3_eventCancel();
|
|
||||||
function mouse() {
|
function mouse() {
|
||||||
var touches = d3.event.changedTouches;
|
var touches = d3.event.changedTouches;
|
||||||
return touches ? d3.touches(target, touches)[0] : d3.mouse(target);
|
return touches ? d3.touches(target, touches)[0] : d3.mouse(target);
|
||||||
|
@ -7957,7 +7945,7 @@ d3 = function() {
|
||||||
origin[1] -= extent[1][1];
|
origin[1] -= extent[1][1];
|
||||||
dragging = 2;
|
dragging = 2;
|
||||||
}
|
}
|
||||||
d3_eventCancel();
|
d3_eventPreventDefault();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
function keyup() {
|
function keyup() {
|
||||||
|
@ -7965,7 +7953,7 @@ d3 = function() {
|
||||||
origin[0] += extent[1][0];
|
origin[0] += extent[1][0];
|
||||||
origin[1] += extent[1][1];
|
origin[1] += extent[1][1];
|
||||||
dragging = 0;
|
dragging = 0;
|
||||||
d3_eventCancel();
|
d3_eventPreventDefault();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
function brushmove() {
|
function brushmove() {
|
||||||
|
@ -8027,10 +8015,10 @@ d3 = function() {
|
||||||
g.style("pointer-events", "all").selectAll(".resize").style("display", brush.empty() ? "none" : null);
|
g.style("pointer-events", "all").selectAll(".resize").style("display", brush.empty() ? "none" : null);
|
||||||
d3.select("body").style("cursor", null);
|
d3.select("body").style("cursor", null);
|
||||||
w.on("mousemove.brush", null).on("mouseup.brush", null).on("touchmove.brush", null).on("touchend.brush", null).on("keydown.brush", null).on("keyup.brush", null);
|
w.on("mousemove.brush", null).on("mouseup.brush", null).on("touchmove.brush", null).on("touchend.brush", null).on("keydown.brush", null).on("keyup.brush", null);
|
||||||
|
dragRestore();
|
||||||
event_({
|
event_({
|
||||||
type: "brushend"
|
type: "brushend"
|
||||||
});
|
});
|
||||||
d3_eventCancel();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
brush.x = function(z) {
|
brush.x = function(z) {
|
||||||
|
|
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
|
@ -1,9 +1,9 @@
|
||||||
import "../core/document";
|
import "../core/document";
|
||||||
import "../core/rebind";
|
import "../core/rebind";
|
||||||
|
import "../event/drag";
|
||||||
import "../event/event";
|
import "../event/event";
|
||||||
import "../event/mouse";
|
import "../event/mouse";
|
||||||
import "../event/touches";
|
import "../event/touches";
|
||||||
import "../event/user-select";
|
|
||||||
import "behavior";
|
import "behavior";
|
||||||
|
|
||||||
d3.behavior.drag = function() {
|
d3.behavior.drag = function() {
|
||||||
|
@ -23,7 +23,7 @@ d3.behavior.drag = function() {
|
||||||
offset,
|
offset,
|
||||||
origin_ = point(),
|
origin_ = point(),
|
||||||
moved = 0,
|
moved = 0,
|
||||||
selectEnable = d3_event_userSelectSuppress(touchId != null ? "drag-" + touchId : "drag");
|
dragRestore = d3_event_dragSuppress(touchId != null ? "drag-" + touchId : "drag");
|
||||||
|
|
||||||
var w = d3.select(d3_window)
|
var w = d3.select(d3_window)
|
||||||
.on(touchId != null ? "touchmove.drag-" + touchId : "mousemove.drag", dragmove)
|
.on(touchId != null ? "touchmove.drag-" + touchId : "mousemove.drag", dragmove)
|
||||||
|
@ -54,23 +54,16 @@ d3.behavior.drag = function() {
|
||||||
|
|
||||||
moved |= dx | dy;
|
moved |= dx | dy;
|
||||||
origin_ = p;
|
origin_ = p;
|
||||||
d3_eventCancel();
|
|
||||||
|
|
||||||
event_({type: "drag", x: p[0] + offset[0], y: p[1] + offset[1], dx: dx, dy: dy});
|
event_({type: "drag", x: p[0] + offset[0], y: p[1] + offset[1], dx: dx, dy: dy});
|
||||||
}
|
}
|
||||||
|
|
||||||
function dragend() {
|
function dragend() {
|
||||||
event_({type: "dragend"});
|
|
||||||
|
|
||||||
// if moved, prevent the mouseup (and possibly click) from propagating
|
|
||||||
if (moved) {
|
|
||||||
d3_eventCancel();
|
|
||||||
if (d3.event.target === eventTarget) d3_eventSuppress(w, "click");
|
|
||||||
}
|
|
||||||
|
|
||||||
w .on(touchId != null ? "touchmove.drag-" + touchId : "mousemove.drag", null)
|
w .on(touchId != null ? "touchmove.drag-" + touchId : "mousemove.drag", null)
|
||||||
.on(touchId != null ? "touchend.drag-" + touchId : "mouseup.drag", null);
|
.on(touchId != null ? "touchend.drag-" + touchId : "mouseup.drag", null);
|
||||||
selectEnable();
|
|
||||||
|
dragRestore(moved && d3.event.target === eventTarget);
|
||||||
|
event_({type: "dragend"});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
import "../core/document";
|
import "../core/document";
|
||||||
import "../core/rebind";
|
import "../core/rebind";
|
||||||
|
import "../event/drag";
|
||||||
import "../event/event";
|
import "../event/event";
|
||||||
import "../event/mouse";
|
import "../event/mouse";
|
||||||
import "../event/touches";
|
import "../event/touches";
|
||||||
import "../event/user-select";
|
|
||||||
import "../selection/selection";
|
import "../selection/selection";
|
||||||
import "behavior";
|
import "behavior";
|
||||||
|
|
||||||
|
@ -105,7 +105,7 @@ d3.behavior.zoom = function() {
|
||||||
moved = 0,
|
moved = 0,
|
||||||
w = d3.select(d3_window).on("mousemove.zoom", mousemove).on("mouseup.zoom", mouseup),
|
w = d3.select(d3_window).on("mousemove.zoom", mousemove).on("mouseup.zoom", mouseup),
|
||||||
l = location(d3.mouse(target)),
|
l = location(d3.mouse(target)),
|
||||||
selectEnable = d3_event_userSelectSuppress("zoom");
|
dragRestore = d3_event_dragSuppress("zoom");
|
||||||
|
|
||||||
function mousemove() {
|
function mousemove() {
|
||||||
moved = 1;
|
moved = 1;
|
||||||
|
@ -114,10 +114,8 @@ d3.behavior.zoom = function() {
|
||||||
}
|
}
|
||||||
|
|
||||||
function mouseup() {
|
function mouseup() {
|
||||||
if (moved) d3_eventCancel();
|
|
||||||
w.on("mousemove.zoom", null).on("mouseup.zoom", null);
|
w.on("mousemove.zoom", null).on("mouseup.zoom", null);
|
||||||
selectEnable();
|
dragRestore(moved && d3.event.target === eventTarget);
|
||||||
if (moved && d3.event.target === eventTarget) d3_eventSuppress(w, "click.zoom");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,24 @@
|
||||||
|
import "../core/document";
|
||||||
|
import "../core/vendor";
|
||||||
|
import "../selection/on";
|
||||||
|
|
||||||
|
var d3_event_dragSelect = d3_vendorSymbol(d3_documentElement.style, "userSelect");
|
||||||
|
|
||||||
|
function d3_event_dragSuppress(type) {
|
||||||
|
var selectstart = "selectstart." + type,
|
||||||
|
dragstart = "dragstart." + type,
|
||||||
|
click = "click." + type,
|
||||||
|
w = d3.select(d3_window).on(selectstart, d3_eventPreventDefault).on(dragstart, d3_eventPreventDefault),
|
||||||
|
style = d3_documentElement.style,
|
||||||
|
select = style[d3_event_dragSelect];
|
||||||
|
style[d3_event_dragSelect] = "none";
|
||||||
|
return function(suppressClick) {
|
||||||
|
w.on(selectstart, null).on(dragstart, null);
|
||||||
|
style[d3_event_dragSelect] = select;
|
||||||
|
if (suppressClick) { // suppress the next click, but only if it’s immediate
|
||||||
|
function off() { w.on(click, null); }
|
||||||
|
w.on(click, function() { d3_eventPreventDefault(); off(); }, true);
|
||||||
|
setTimeout(off, 0);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
|
@ -2,8 +2,7 @@ import "dispatch";
|
||||||
|
|
||||||
d3.event = null;
|
d3.event = null;
|
||||||
|
|
||||||
function d3_eventCancel() {
|
function d3_eventPreventDefault() {
|
||||||
d3.event.stopPropagation();
|
|
||||||
d3.event.preventDefault();
|
d3.event.preventDefault();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -13,15 +12,6 @@ function d3_eventSource() {
|
||||||
return e;
|
return e;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Registers an event listener for the specified target that cancels the next
|
|
||||||
// event for the specified type, but only if it occurs immediately. This is
|
|
||||||
// useful to disambiguate dragging from clicking.
|
|
||||||
function d3_eventSuppress(target, type) {
|
|
||||||
function off() { target.on(type, null); }
|
|
||||||
target.on(type, function() { d3_eventCancel(); off(); }, true);
|
|
||||||
setTimeout(off, 0); // clear the handler if it doesn't fire
|
|
||||||
}
|
|
||||||
|
|
||||||
// Like d3.dispatch, but for custom events abstracting native UI events. These
|
// Like d3.dispatch, but for custom events abstracting native UI events. These
|
||||||
// events have a target component (such as a brush), a target element (such as
|
// events have a target component (such as a brush), a target element (such as
|
||||||
// the svg:g element containing the brush) and the standard arguments `d` (the
|
// the svg:g element containing the brush) and the standard arguments `d` (the
|
||||||
|
|
|
@ -1,16 +0,0 @@
|
||||||
import "../core/document";
|
|
||||||
import "../core/vendor";
|
|
||||||
import "event";
|
|
||||||
|
|
||||||
var d3_event_userSelectProperty = d3_vendorSymbol(d3_documentElement.style, "userSelect"),
|
|
||||||
d3_event_userSelectSuppress = d3_event_userSelectProperty
|
|
||||||
? function() {
|
|
||||||
var style = d3_documentElement.style,
|
|
||||||
select = style[d3_event_userSelectProperty];
|
|
||||||
style[d3_event_userSelectProperty] = "none";
|
|
||||||
return function() { style[d3_event_userSelectProperty] = select; };
|
|
||||||
}
|
|
||||||
: function(type) {
|
|
||||||
var w = d3.select(d3_window).on("selectstart." + type, d3_eventCancel);
|
|
||||||
return function() { w.on("selectstart." + type, null); };
|
|
||||||
};
|
|
|
@ -1,6 +1,7 @@
|
||||||
import "../core/document";
|
import "../core/document";
|
||||||
import "../core/rebind";
|
import "../core/rebind";
|
||||||
import "../event/dispatch";
|
import "../event/dispatch";
|
||||||
|
import "../event/drag";
|
||||||
import "../event/event";
|
import "../event/event";
|
||||||
import "../event/mouse";
|
import "../event/mouse";
|
||||||
import "../event/touches";
|
import "../event/touches";
|
||||||
|
@ -100,6 +101,7 @@ d3.svg.brush = function() {
|
||||||
resizingX = !/^(n|s)$/.test(resizing) && x,
|
resizingX = !/^(n|s)$/.test(resizing) && x,
|
||||||
resizingY = !/^(e|w)$/.test(resizing) && y,
|
resizingY = !/^(e|w)$/.test(resizing) && y,
|
||||||
dragging = eventTarget.classed("extent"),
|
dragging = eventTarget.classed("extent"),
|
||||||
|
dragRestore = d3_event_dragSuppress("brush"),
|
||||||
center,
|
center,
|
||||||
origin = mouse(),
|
origin = mouse(),
|
||||||
offset;
|
offset;
|
||||||
|
@ -139,7 +141,6 @@ d3.svg.brush = function() {
|
||||||
// Notify listeners.
|
// Notify listeners.
|
||||||
event_({type: "brushstart"});
|
event_({type: "brushstart"});
|
||||||
brushmove();
|
brushmove();
|
||||||
d3_eventCancel();
|
|
||||||
|
|
||||||
function mouse() {
|
function mouse() {
|
||||||
var touches = d3.event.changedTouches;
|
var touches = d3.event.changedTouches;
|
||||||
|
@ -154,7 +155,7 @@ d3.svg.brush = function() {
|
||||||
origin[1] -= extent[1][1];
|
origin[1] -= extent[1][1];
|
||||||
dragging = 2;
|
dragging = 2;
|
||||||
}
|
}
|
||||||
d3_eventCancel();
|
d3_eventPreventDefault();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -163,7 +164,7 @@ d3.svg.brush = function() {
|
||||||
origin[0] += extent[1][0];
|
origin[0] += extent[1][0];
|
||||||
origin[1] += extent[1][1];
|
origin[1] += extent[1][1];
|
||||||
dragging = 0;
|
dragging = 0;
|
||||||
d3_eventCancel();
|
d3_eventPreventDefault();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -267,8 +268,8 @@ d3.svg.brush = function() {
|
||||||
.on("keydown.brush", null)
|
.on("keydown.brush", null)
|
||||||
.on("keyup.brush", null);
|
.on("keyup.brush", null);
|
||||||
|
|
||||||
|
dragRestore();
|
||||||
event_({type: "brushend"});
|
event_({type: "brushend"});
|
||||||
d3_eventCancel();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -14,7 +14,11 @@ module.exports = function() {
|
||||||
files.push("src/end");
|
files.push("src/end");
|
||||||
|
|
||||||
function topic() {
|
function topic() {
|
||||||
smash.load(files, expression, sandbox, this.callback);
|
var callback = this.callback;
|
||||||
|
smash.load(files, expression, sandbox, function(error, result) {
|
||||||
|
if (error) console.trace(error.stack);
|
||||||
|
callback(error, result);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
topic.expression = function(_) {
|
topic.expression = function(_) {
|
||||||
|
|
Загрузка…
Ссылка в новой задаче