An error occurred while loading the file. Please try again.
resquarify.js 1.00 KiB
import treemapDice from "./dice";
import treemapSlice from "./slice";
import {phi, squarifyRatio} from "./squarify";
export default (function custom(ratio) {
  function resquarify(parent, x0, y0, x1, y1) {
    if ((rows = parent._squarify) && (rows.ratio === ratio)) {
      var rows,
          row,
          nodes,
          j = -1,
          m = rows.length,
          value = parent.value;
      while (++j < m) {
        row = rows[j], nodes = row.children;
        for (i = row.value = 0, n = nodes.length; i < n; ++i) row.value += nodes[i].value;
        if (row.dice) treemapDice(row, x0, y0, x1, y0 += (y1 - y0) * row.value / value);
        else treemapSlice(row, x0, y0, x0 += (x1 - x0) * row.value / value, y1);
        value -= row.value;
    } else {
      parent._squarify = rows = squarifyRatio(ratio, parent, x0, y0, x1, y1);
      rows.ratio = ratio;
  resquarify.ratio = function(x) {
    return custom((x = +x) > 1 ? x : 1);
  return resquarify;
})(phi);