// Copies a variable number of methods from source to target. d3.rebind = function(target, source) {

var i = 1, n = arguments.length, method;
while (++i < n) target[method = arguments[i]] = d3_rebind(target, source, source[method]);
return target;

};

// Method is assumed to be a standard D3 getter-setter: // If passed with no arguments, gets the value. // If passed with arguments, sets the value and returns the target. function d3_rebind(target, source, method) {

return function() {
  var value = method.apply(source, arguments);
  return value === source ? target : value;
};

}