Files
iD/js/lib/d3.value.js
John Firebaugh d2e2d4fbed Avoid resetting input values on every change
For some reason this invalidates and repaints the
entire page.
2013-06-19 17:05:03 -07:00

27 lines
812 B
JavaScript

// Like selection.property('value', ...), but avoids no-op value sets,
// which can result in layout/repaint thrashing in some situations.
d3.selection.prototype.value = function(value) {
function d3_selection_value(value) {
function valueNull() {
delete this.value;
}
function valueConstant() {
if (this.value !== value) this.value = value;
}
function valueFunction() {
var x = value.apply(this, arguments);
if (x == null) delete this.value;
else if (this.value !== x) this.value = x;
}
return value == null
? valueNull : (typeof value === "function"
? valueFunction : valueConstant);
}
if (!arguments.length) return this.property('value');
return this.each(d3_selection_value(value));
};