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

d3_transitionPrototype.filter = function(filter) {

var subgroups = [],
    subgroup,
    group,
    node;

if (typeof filter !== "function") filter = d3_selection_filter(filter);

for (var j = 0, m = this.length; j < m; j++) {
  subgroups.push(subgroup = []);
  for (var group = this[j], i = 0, n = group.length; i < n; i++) {
    if ((node = group[i]) && filter.call(node, node.__data__, i)) {
      subgroup.push(node);
    }
  }
}

return d3_transition(subgroups, this.id, this.time).ease(this.ease());

};