lib/data/d3.js
function squarify(node) {
    var children = node.children;
    if (children && children.length) {
      var rect = pad(node),
          row = [],
          remaining = children.slice(), // copy-on-write
          child,
          best = Infinity, // the best row score so far
          score, // the current row score
          u = Math.min(rect.dx, rect.dy), // initial orientation
          n;
      scale(remaining, rect.dx * rect.dy / node.value);
      row.area = 0;
      while ((n = remaining.length) > 0) {
        row.push(child = remaining[n - 1]);
        row.area += child.area;
        if ((score = worst(row, u)) <= best) { // continue with this orientation
          remaining.pop();
          best = score;
        } else { // abort, and try a different orientation
          row.area -= row.pop().area;
          position(row, u, rect, false);
          u = Math.min(rect.dx, rect.dy);
          row.length = row.area = 0;
          best = Infinity;
        }
      }
      if (row.length) {
        position(row, u, rect, true);
        row.length = row.area = 0;
      }
      children.forEach(squarify);
    }
  }
function squarify(node) {
    var children = node.children;
    if (children && children.length) {
      var rect = pad(node),
          row = [],
          remaining = children.slice(), // copy-on-write
          child,
          best = Infinity, // the best row score so far
          score, // the current row score
          u = Math.min(rect.dx, rect.dy), // initial orientation
          n;
      scale(remaining, rect.dx * rect.dy / node.value);
      row.area = 0;
      while ((n = remaining.length) > 0) {
        row.push(child = remaining[n - 1]);
        row.area += child.area;
        if ((score = worst(row, u)) <= best) { // continue with this orientation
          remaining.pop();
          best = score;
        } else { // abort, and try a different orientation
          row.area -= row.pop().area;
          position(row, u, rect, false);
          u = Math.min(rect.dx, rect.dy);
          row.length = row.area = 0;
          best = Infinity;
        }
      }
      if (row.length) {
        position(row, u, rect, true);
        row.length = row.area = 0;
      }
      children.forEach(squarify);
    }
  }
function squarify ( node ) { var children = node . children ; if ( children && children . length ) { var rect = pad ( node ) , row = [ ] , remaining = children . slice ( ) , // copy-on-write child , best = Infinity , // the best row score so far score , // the current row score u = Math . min ( rect . dx , rect . dy ) , // initial orientation n ; scale ( remaining , rect . dx * rect . dy / node . value ) ; row . area = 0 ; while ( ( n = remaining . length ) > 0 ) { row . push ( child = remaining [ n - 1 ] ) ; row . area += child . area ; if ( ( score = worst ( row , u ) ) <= best ) { // continue with this orientation remaining . pop ( ) ; best = score ; } else { // abort, and try a different orientation row . area -= row . pop ( ) . area ; position ( row , u , rect , false ) ; u = Math . min ( rect . dx , rect . dy ) ; row . length = row . area = 0 ; best = Infinity ; } } if ( row . length ) { position ( row , u , rect , true ) ; row . length = row . area = 0 ; } children . forEach ( squarify ) ; } }
Recursively arranges the specified node's children into squarified rows.
Recursively arranges the specified node s children into squarified rows .