@jbrowse/plugin-wiggle
Version:
JBrowse 2 wiggle adapters, tracks, etc.
29 lines (28 loc) • 1.16 kB
JavaScript
import treemapDice from "./dice.js";
import treemapSlice from "./slice.js";
import { phi, squarifyRatio } from "./squarify.js";
export default (function custom(ratio) {
function resquarify(parent, x0, y0, x1, y1) {
if ((rows = parent._squarify) && (rows.ratio === ratio)) {
var rows, row, nodes, i, j = -1, n, 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, value ? y0 += (y1 - y0) * row.value / value : y1);
else
treemapSlice(row, x0, y0, value ? x0 += (x1 - x0) * row.value / value : x1, 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);