function Voronoi() {
let x = d => d[0];
let y = d => d[1];
let size = [1, 1];
function voronoi(entries) {
const cloned = JSON.parse(JSON.stringify(entries));
return Array.from(
d3.Delaunay.from(cloned, x, y)
.voronoi([0, 0, ...size])
.cellPolygons(),
(p, i) => Object.assign(p, { data: cloned[i] })
);
}
voronoi.x = function(fn) {
return arguments.length ? ((x = fn), voronoi) : x;
};
voronoi.y = function(fn) {
return arguments.length ? ((y = fn), voronoi) : y;
};
voronoi.size = function(arr) {
return arguments.length ? ((size = arr), voronoi) : size;
};
return voronoi;
}