import “../selection/select”; import “transition”;

d3_transitionPrototype.selectAll = function(selector) {

var id = this.id,
    subgroups = [],
    subgroup,
    subnodes,
    node,
    subnode,
    transition;

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]) {
      transition = node.__transition__[id];
      subnodes = selector.call(node, node.__data__, i, j);
      subgroups.push(subgroup = []);
      for (var k = -1, o = subnodes.length; ++k < o;) {
        if (subnode = subnodes[k]) d3_transitionNode(subnode, k, id, transition);
        subgroup.push(subnode);
      }
    }
  }
}

return d3_transition(subgroups, id);

};