import “../core/array”; import “selection”;

d3_selectionPrototype.selectAll = function(selector) {

var subgroups = [],
    subgroup,
    node;

selector = d3_selection_selectorAll(selector);

for (var j = -1, m = this.length; ++j < m;) {
  for (var group = this[j], i = -1, n = group.length; ++i < n;) {
    if (node = group[i]) {
      subgroups.push(subgroup = d3_array(selector.call(node, node.__data__, i, j)));
      subgroup.parentNode = node;
    }
  }
}

return d3_selection(subgroups);

};

function d3_selection_selectorAll(selector) {

return typeof selector === "function" ? selector : function() {
  return d3_selectAll(selector, this);
};

}