first commit
This commit is contained in:
50
node_modules/victory-vendor/lib-vendor/d3-voronoi/LICENSE
generated
vendored
Normal file
50
node_modules/victory-vendor/lib-vendor/d3-voronoi/LICENSE
generated
vendored
Normal file
@@ -0,0 +1,50 @@
|
||||
Copyright 2010-2016 Mike Bostock
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without modification,
|
||||
are permitted provided that the following conditions are met:
|
||||
|
||||
* Redistributions of source code must retain the above copyright notice, this
|
||||
list of conditions and the following disclaimer.
|
||||
|
||||
* Redistributions in binary form must reproduce the above copyright notice,
|
||||
this list of conditions and the following disclaimer in the documentation
|
||||
and/or other materials provided with the distribution.
|
||||
|
||||
* Neither the name of the author nor the names of contributors may be used to
|
||||
endorse or promote products derived from this software without specific prior
|
||||
written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
|
||||
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
||||
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
Copyright (C) 2010-2013 Raymond Hill
|
||||
https://github.com/gorhill/Javascript-Voronoi
|
||||
|
||||
Licensed under The MIT License
|
||||
http://en.wikipedia.org/wiki/MIT_License
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||
this software and associated documentation files (the "Software"), to deal in
|
||||
the Software without restriction, including without limitation the rights to
|
||||
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
||||
the Software, and to permit persons to whom the Software is furnished to do so,
|
||||
subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
||||
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
||||
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
||||
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||||
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
197
node_modules/victory-vendor/lib-vendor/d3-voronoi/src/Beach.js
generated
vendored
Normal file
197
node_modules/victory-vendor/lib-vendor/d3-voronoi/src/Beach.js
generated
vendored
Normal file
@@ -0,0 +1,197 @@
|
||||
"use strict";
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.addBeach = addBeach;
|
||||
exports.removeBeach = removeBeach;
|
||||
|
||||
var _RedBlackTree = require("./RedBlackTree");
|
||||
|
||||
var _Cell = require("./Cell");
|
||||
|
||||
var _Circle = require("./Circle");
|
||||
|
||||
var _Edge = require("./Edge");
|
||||
|
||||
var _Diagram = require("./Diagram");
|
||||
|
||||
var beachPool = [];
|
||||
|
||||
function Beach() {
|
||||
(0, _RedBlackTree.RedBlackNode)(this);
|
||||
this.edge = this.site = this.circle = null;
|
||||
}
|
||||
|
||||
function createBeach(site) {
|
||||
var beach = beachPool.pop() || new Beach();
|
||||
beach.site = site;
|
||||
return beach;
|
||||
}
|
||||
|
||||
function detachBeach(beach) {
|
||||
(0, _Circle.detachCircle)(beach);
|
||||
|
||||
_Diagram.beaches.remove(beach);
|
||||
|
||||
beachPool.push(beach);
|
||||
(0, _RedBlackTree.RedBlackNode)(beach);
|
||||
}
|
||||
|
||||
function removeBeach(beach) {
|
||||
var circle = beach.circle,
|
||||
x = circle.x,
|
||||
y = circle.cy,
|
||||
vertex = [x, y],
|
||||
previous = beach.P,
|
||||
next = beach.N,
|
||||
disappearing = [beach];
|
||||
detachBeach(beach);
|
||||
var lArc = previous;
|
||||
|
||||
while (lArc.circle && Math.abs(x - lArc.circle.x) < _Diagram.epsilon && Math.abs(y - lArc.circle.cy) < _Diagram.epsilon) {
|
||||
previous = lArc.P;
|
||||
disappearing.unshift(lArc);
|
||||
detachBeach(lArc);
|
||||
lArc = previous;
|
||||
}
|
||||
|
||||
disappearing.unshift(lArc);
|
||||
(0, _Circle.detachCircle)(lArc);
|
||||
var rArc = next;
|
||||
|
||||
while (rArc.circle && Math.abs(x - rArc.circle.x) < _Diagram.epsilon && Math.abs(y - rArc.circle.cy) < _Diagram.epsilon) {
|
||||
next = rArc.N;
|
||||
disappearing.push(rArc);
|
||||
detachBeach(rArc);
|
||||
rArc = next;
|
||||
}
|
||||
|
||||
disappearing.push(rArc);
|
||||
(0, _Circle.detachCircle)(rArc);
|
||||
var nArcs = disappearing.length,
|
||||
iArc;
|
||||
|
||||
for (iArc = 1; iArc < nArcs; ++iArc) {
|
||||
rArc = disappearing[iArc];
|
||||
lArc = disappearing[iArc - 1];
|
||||
(0, _Edge.setEdgeEnd)(rArc.edge, lArc.site, rArc.site, vertex);
|
||||
}
|
||||
|
||||
lArc = disappearing[0];
|
||||
rArc = disappearing[nArcs - 1];
|
||||
rArc.edge = (0, _Edge.createEdge)(lArc.site, rArc.site, null, vertex);
|
||||
(0, _Circle.attachCircle)(lArc);
|
||||
(0, _Circle.attachCircle)(rArc);
|
||||
}
|
||||
|
||||
function addBeach(site) {
|
||||
var x = site[0],
|
||||
directrix = site[1],
|
||||
lArc,
|
||||
rArc,
|
||||
dxl,
|
||||
dxr,
|
||||
node = _Diagram.beaches._;
|
||||
|
||||
while (node) {
|
||||
dxl = leftBreakPoint(node, directrix) - x;
|
||||
if (dxl > _Diagram.epsilon) node = node.L;else {
|
||||
dxr = x - rightBreakPoint(node, directrix);
|
||||
|
||||
if (dxr > _Diagram.epsilon) {
|
||||
if (!node.R) {
|
||||
lArc = node;
|
||||
break;
|
||||
}
|
||||
|
||||
node = node.R;
|
||||
} else {
|
||||
if (dxl > -_Diagram.epsilon) {
|
||||
lArc = node.P;
|
||||
rArc = node;
|
||||
} else if (dxr > -_Diagram.epsilon) {
|
||||
lArc = node;
|
||||
rArc = node.N;
|
||||
} else {
|
||||
lArc = rArc = node;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
(0, _Cell.createCell)(site);
|
||||
var newArc = createBeach(site);
|
||||
|
||||
_Diagram.beaches.insert(lArc, newArc);
|
||||
|
||||
if (!lArc && !rArc) return;
|
||||
|
||||
if (lArc === rArc) {
|
||||
(0, _Circle.detachCircle)(lArc);
|
||||
rArc = createBeach(lArc.site);
|
||||
|
||||
_Diagram.beaches.insert(newArc, rArc);
|
||||
|
||||
newArc.edge = rArc.edge = (0, _Edge.createEdge)(lArc.site, newArc.site);
|
||||
(0, _Circle.attachCircle)(lArc);
|
||||
(0, _Circle.attachCircle)(rArc);
|
||||
return;
|
||||
}
|
||||
|
||||
if (!rArc) {
|
||||
// && lArc
|
||||
newArc.edge = (0, _Edge.createEdge)(lArc.site, newArc.site);
|
||||
return;
|
||||
} // else lArc !== rArc
|
||||
|
||||
|
||||
(0, _Circle.detachCircle)(lArc);
|
||||
(0, _Circle.detachCircle)(rArc);
|
||||
var lSite = lArc.site,
|
||||
ax = lSite[0],
|
||||
ay = lSite[1],
|
||||
bx = site[0] - ax,
|
||||
by = site[1] - ay,
|
||||
rSite = rArc.site,
|
||||
cx = rSite[0] - ax,
|
||||
cy = rSite[1] - ay,
|
||||
d = 2 * (bx * cy - by * cx),
|
||||
hb = bx * bx + by * by,
|
||||
hc = cx * cx + cy * cy,
|
||||
vertex = [(cy * hb - by * hc) / d + ax, (bx * hc - cx * hb) / d + ay];
|
||||
(0, _Edge.setEdgeEnd)(rArc.edge, lSite, rSite, vertex);
|
||||
newArc.edge = (0, _Edge.createEdge)(lSite, site, null, vertex);
|
||||
rArc.edge = (0, _Edge.createEdge)(site, rSite, null, vertex);
|
||||
(0, _Circle.attachCircle)(lArc);
|
||||
(0, _Circle.attachCircle)(rArc);
|
||||
}
|
||||
|
||||
function leftBreakPoint(arc, directrix) {
|
||||
var site = arc.site,
|
||||
rfocx = site[0],
|
||||
rfocy = site[1],
|
||||
pby2 = rfocy - directrix;
|
||||
if (!pby2) return rfocx;
|
||||
var lArc = arc.P;
|
||||
if (!lArc) return -Infinity;
|
||||
site = lArc.site;
|
||||
var lfocx = site[0],
|
||||
lfocy = site[1],
|
||||
plby2 = lfocy - directrix;
|
||||
if (!plby2) return lfocx;
|
||||
var hl = lfocx - rfocx,
|
||||
aby2 = 1 / pby2 - 1 / plby2,
|
||||
b = hl / plby2;
|
||||
if (aby2) return (-b + Math.sqrt(b * b - 2 * aby2 * (hl * hl / (-2 * plby2) - lfocy + plby2 / 2 + rfocy - pby2 / 2))) / aby2 + rfocx;
|
||||
return (rfocx + lfocx) / 2;
|
||||
}
|
||||
|
||||
function rightBreakPoint(arc, directrix) {
|
||||
var rArc = arc.N;
|
||||
if (rArc) return leftBreakPoint(rArc, directrix);
|
||||
var site = arc.site;
|
||||
return site[1] === directrix ? site[0] : Infinity;
|
||||
}
|
||||
140
node_modules/victory-vendor/lib-vendor/d3-voronoi/src/Cell.js
generated
vendored
Normal file
140
node_modules/victory-vendor/lib-vendor/d3-voronoi/src/Cell.js
generated
vendored
Normal file
@@ -0,0 +1,140 @@
|
||||
"use strict";
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.cellHalfedgeEnd = cellHalfedgeEnd;
|
||||
exports.cellHalfedgeStart = cellHalfedgeStart;
|
||||
exports.clipCells = clipCells;
|
||||
exports.createCell = createCell;
|
||||
exports.sortCellHalfedges = sortCellHalfedges;
|
||||
|
||||
var _Edge = require("./Edge");
|
||||
|
||||
var _Diagram = require("./Diagram");
|
||||
|
||||
function createCell(site) {
|
||||
return _Diagram.cells[site.index] = {
|
||||
site: site,
|
||||
halfedges: []
|
||||
};
|
||||
}
|
||||
|
||||
function cellHalfedgeAngle(cell, edge) {
|
||||
var site = cell.site,
|
||||
va = edge.left,
|
||||
vb = edge.right;
|
||||
if (site === vb) vb = va, va = site;
|
||||
if (vb) return Math.atan2(vb[1] - va[1], vb[0] - va[0]);
|
||||
if (site === va) va = edge[1], vb = edge[0];else va = edge[0], vb = edge[1];
|
||||
return Math.atan2(va[0] - vb[0], vb[1] - va[1]);
|
||||
}
|
||||
|
||||
function cellHalfedgeStart(cell, edge) {
|
||||
return edge[+(edge.left !== cell.site)];
|
||||
}
|
||||
|
||||
function cellHalfedgeEnd(cell, edge) {
|
||||
return edge[+(edge.left === cell.site)];
|
||||
}
|
||||
|
||||
function sortCellHalfedges() {
|
||||
for (var i = 0, n = _Diagram.cells.length, cell, halfedges, j, m; i < n; ++i) {
|
||||
if ((cell = _Diagram.cells[i]) && (m = (halfedges = cell.halfedges).length)) {
|
||||
var index = new Array(m),
|
||||
array = new Array(m);
|
||||
|
||||
for (j = 0; j < m; ++j) index[j] = j, array[j] = cellHalfedgeAngle(cell, _Diagram.edges[halfedges[j]]);
|
||||
|
||||
index.sort(function (i, j) {
|
||||
return array[j] - array[i];
|
||||
});
|
||||
|
||||
for (j = 0; j < m; ++j) array[j] = halfedges[index[j]];
|
||||
|
||||
for (j = 0; j < m; ++j) halfedges[j] = array[j];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function clipCells(x0, y0, x1, y1) {
|
||||
var nCells = _Diagram.cells.length,
|
||||
iCell,
|
||||
cell,
|
||||
site,
|
||||
iHalfedge,
|
||||
halfedges,
|
||||
nHalfedges,
|
||||
start,
|
||||
startX,
|
||||
startY,
|
||||
end,
|
||||
endX,
|
||||
endY,
|
||||
cover = true;
|
||||
|
||||
for (iCell = 0; iCell < nCells; ++iCell) {
|
||||
if (cell = _Diagram.cells[iCell]) {
|
||||
site = cell.site;
|
||||
halfedges = cell.halfedges;
|
||||
iHalfedge = halfedges.length; // Remove any dangling clipped edges.
|
||||
|
||||
while (iHalfedge--) {
|
||||
if (!_Diagram.edges[halfedges[iHalfedge]]) {
|
||||
halfedges.splice(iHalfedge, 1);
|
||||
}
|
||||
} // Insert any border edges as necessary.
|
||||
|
||||
|
||||
iHalfedge = 0, nHalfedges = halfedges.length;
|
||||
|
||||
while (iHalfedge < nHalfedges) {
|
||||
end = cellHalfedgeEnd(cell, _Diagram.edges[halfedges[iHalfedge]]), endX = end[0], endY = end[1];
|
||||
start = cellHalfedgeStart(cell, _Diagram.edges[halfedges[++iHalfedge % nHalfedges]]), startX = start[0], startY = start[1];
|
||||
|
||||
if (Math.abs(endX - startX) > _Diagram.epsilon || Math.abs(endY - startY) > _Diagram.epsilon) {
|
||||
halfedges.splice(iHalfedge, 0, _Diagram.edges.push((0, _Edge.createBorderEdge)(site, end, Math.abs(endX - x0) < _Diagram.epsilon && y1 - endY > _Diagram.epsilon ? [x0, Math.abs(startX - x0) < _Diagram.epsilon ? startY : y1] : Math.abs(endY - y1) < _Diagram.epsilon && x1 - endX > _Diagram.epsilon ? [Math.abs(startY - y1) < _Diagram.epsilon ? startX : x1, y1] : Math.abs(endX - x1) < _Diagram.epsilon && endY - y0 > _Diagram.epsilon ? [x1, Math.abs(startX - x1) < _Diagram.epsilon ? startY : y0] : Math.abs(endY - y0) < _Diagram.epsilon && endX - x0 > _Diagram.epsilon ? [Math.abs(startY - y0) < _Diagram.epsilon ? startX : x0, y0] : null)) - 1);
|
||||
++nHalfedges;
|
||||
}
|
||||
}
|
||||
|
||||
if (nHalfedges) cover = false;
|
||||
}
|
||||
} // If there weren’t any edges, have the closest site cover the extent.
|
||||
// It doesn’t matter which corner of the extent we measure!
|
||||
|
||||
|
||||
if (cover) {
|
||||
var dx,
|
||||
dy,
|
||||
d2,
|
||||
dc = Infinity;
|
||||
|
||||
for (iCell = 0, cover = null; iCell < nCells; ++iCell) {
|
||||
if (cell = _Diagram.cells[iCell]) {
|
||||
site = cell.site;
|
||||
dx = site[0] - x0;
|
||||
dy = site[1] - y0;
|
||||
d2 = dx * dx + dy * dy;
|
||||
if (d2 < dc) dc = d2, cover = cell;
|
||||
}
|
||||
}
|
||||
|
||||
if (cover) {
|
||||
var v00 = [x0, y0],
|
||||
v01 = [x0, y1],
|
||||
v11 = [x1, y1],
|
||||
v10 = [x1, y0];
|
||||
cover.halfedges.push(_Diagram.edges.push((0, _Edge.createBorderEdge)(site = cover.site, v00, v01)) - 1, _Diagram.edges.push((0, _Edge.createBorderEdge)(site, v01, v11)) - 1, _Diagram.edges.push((0, _Edge.createBorderEdge)(site, v11, v10)) - 1, _Diagram.edges.push((0, _Edge.createBorderEdge)(site, v10, v00)) - 1);
|
||||
}
|
||||
} // Lastly delete any cells with no edges; these were entirely clipped.
|
||||
|
||||
|
||||
for (iCell = 0; iCell < nCells; ++iCell) {
|
||||
if (cell = _Diagram.cells[iCell]) {
|
||||
if (!cell.halfedges.length) {
|
||||
delete _Diagram.cells[iCell];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
84
node_modules/victory-vendor/lib-vendor/d3-voronoi/src/Circle.js
generated
vendored
Normal file
84
node_modules/victory-vendor/lib-vendor/d3-voronoi/src/Circle.js
generated
vendored
Normal file
@@ -0,0 +1,84 @@
|
||||
"use strict";
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.attachCircle = attachCircle;
|
||||
exports.detachCircle = detachCircle;
|
||||
exports.firstCircle = void 0;
|
||||
|
||||
var _RedBlackTree = require("./RedBlackTree");
|
||||
|
||||
var _Diagram = require("./Diagram");
|
||||
|
||||
var circlePool = [];
|
||||
var firstCircle;
|
||||
exports.firstCircle = firstCircle;
|
||||
|
||||
function Circle() {
|
||||
(0, _RedBlackTree.RedBlackNode)(this);
|
||||
this.x = this.y = this.arc = this.site = this.cy = null;
|
||||
}
|
||||
|
||||
function attachCircle(arc) {
|
||||
var lArc = arc.P,
|
||||
rArc = arc.N;
|
||||
if (!lArc || !rArc) return;
|
||||
var lSite = lArc.site,
|
||||
cSite = arc.site,
|
||||
rSite = rArc.site;
|
||||
if (lSite === rSite) return;
|
||||
var bx = cSite[0],
|
||||
by = cSite[1],
|
||||
ax = lSite[0] - bx,
|
||||
ay = lSite[1] - by,
|
||||
cx = rSite[0] - bx,
|
||||
cy = rSite[1] - by;
|
||||
var d = 2 * (ax * cy - ay * cx);
|
||||
if (d >= -_Diagram.epsilon2) return;
|
||||
var ha = ax * ax + ay * ay,
|
||||
hc = cx * cx + cy * cy,
|
||||
x = (cy * ha - ay * hc) / d,
|
||||
y = (ax * hc - cx * ha) / d;
|
||||
var circle = circlePool.pop() || new Circle();
|
||||
circle.arc = arc;
|
||||
circle.site = cSite;
|
||||
circle.x = x + bx;
|
||||
circle.y = (circle.cy = y + by) + Math.sqrt(x * x + y * y); // y bottom
|
||||
|
||||
arc.circle = circle;
|
||||
var before = null,
|
||||
node = _Diagram.circles._;
|
||||
|
||||
while (node) {
|
||||
if (circle.y < node.y || circle.y === node.y && circle.x <= node.x) {
|
||||
if (node.L) node = node.L;else {
|
||||
before = node.P;
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
if (node.R) node = node.R;else {
|
||||
before = node;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
_Diagram.circles.insert(before, circle);
|
||||
|
||||
if (!before) exports.firstCircle = firstCircle = circle;
|
||||
}
|
||||
|
||||
function detachCircle(arc) {
|
||||
var circle = arc.circle;
|
||||
|
||||
if (circle) {
|
||||
if (!circle.P) exports.firstCircle = firstCircle = circle.N;
|
||||
|
||||
_Diagram.circles.remove(circle);
|
||||
|
||||
circlePool.push(circle);
|
||||
(0, _RedBlackTree.RedBlackNode)(circle);
|
||||
arc.circle = null;
|
||||
}
|
||||
}
|
||||
162
node_modules/victory-vendor/lib-vendor/d3-voronoi/src/Diagram.js
generated
vendored
Normal file
162
node_modules/victory-vendor/lib-vendor/d3-voronoi/src/Diagram.js
generated
vendored
Normal file
@@ -0,0 +1,162 @@
|
||||
"use strict";
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.circles = exports.cells = exports.beaches = void 0;
|
||||
exports.default = Diagram;
|
||||
exports.epsilon2 = exports.epsilon = exports.edges = void 0;
|
||||
|
||||
var _Beach = require("./Beach");
|
||||
|
||||
var _Cell = require("./Cell");
|
||||
|
||||
var _Circle = require("./Circle");
|
||||
|
||||
var _Edge = require("./Edge");
|
||||
|
||||
var _RedBlackTree = _interopRequireDefault(require("./RedBlackTree"));
|
||||
|
||||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
||||
|
||||
var epsilon = 1e-6;
|
||||
exports.epsilon = epsilon;
|
||||
var epsilon2 = 1e-12;
|
||||
exports.epsilon2 = epsilon2;
|
||||
var beaches;
|
||||
exports.beaches = beaches;
|
||||
var cells;
|
||||
exports.cells = cells;
|
||||
var circles;
|
||||
exports.circles = circles;
|
||||
var edges;
|
||||
exports.edges = edges;
|
||||
|
||||
function triangleArea(a, b, c) {
|
||||
return (a[0] - c[0]) * (b[1] - a[1]) - (a[0] - b[0]) * (c[1] - a[1]);
|
||||
}
|
||||
|
||||
function lexicographic(a, b) {
|
||||
return b[1] - a[1] || b[0] - a[0];
|
||||
}
|
||||
|
||||
function Diagram(sites, extent) {
|
||||
var site = sites.sort(lexicographic).pop(),
|
||||
x,
|
||||
y,
|
||||
circle;
|
||||
exports.edges = edges = [];
|
||||
exports.cells = cells = new Array(sites.length);
|
||||
exports.beaches = beaches = new _RedBlackTree.default();
|
||||
exports.circles = circles = new _RedBlackTree.default();
|
||||
|
||||
while (true) {
|
||||
circle = _Circle.firstCircle;
|
||||
|
||||
if (site && (!circle || site[1] < circle.y || site[1] === circle.y && site[0] < circle.x)) {
|
||||
if (site[0] !== x || site[1] !== y) {
|
||||
(0, _Beach.addBeach)(site);
|
||||
x = site[0], y = site[1];
|
||||
}
|
||||
|
||||
site = sites.pop();
|
||||
} else if (circle) {
|
||||
(0, _Beach.removeBeach)(circle.arc);
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
(0, _Cell.sortCellHalfedges)();
|
||||
|
||||
if (extent) {
|
||||
var x0 = +extent[0][0],
|
||||
y0 = +extent[0][1],
|
||||
x1 = +extent[1][0],
|
||||
y1 = +extent[1][1];
|
||||
(0, _Edge.clipEdges)(x0, y0, x1, y1);
|
||||
(0, _Cell.clipCells)(x0, y0, x1, y1);
|
||||
}
|
||||
|
||||
this.edges = edges;
|
||||
this.cells = cells;
|
||||
exports.beaches = beaches = exports.circles = circles = exports.edges = edges = exports.cells = cells = null;
|
||||
}
|
||||
|
||||
Diagram.prototype = {
|
||||
constructor: Diagram,
|
||||
polygons: function () {
|
||||
var edges = this.edges;
|
||||
return this.cells.map(function (cell) {
|
||||
var polygon = cell.halfedges.map(function (i) {
|
||||
return (0, _Cell.cellHalfedgeStart)(cell, edges[i]);
|
||||
});
|
||||
polygon.data = cell.site.data;
|
||||
return polygon;
|
||||
});
|
||||
},
|
||||
triangles: function () {
|
||||
var triangles = [],
|
||||
edges = this.edges;
|
||||
this.cells.forEach(function (cell, i) {
|
||||
if (!(m = (halfedges = cell.halfedges).length)) return;
|
||||
var site = cell.site,
|
||||
halfedges,
|
||||
j = -1,
|
||||
m,
|
||||
s0,
|
||||
e1 = edges[halfedges[m - 1]],
|
||||
s1 = e1.left === site ? e1.right : e1.left;
|
||||
|
||||
while (++j < m) {
|
||||
s0 = s1;
|
||||
e1 = edges[halfedges[j]];
|
||||
s1 = e1.left === site ? e1.right : e1.left;
|
||||
|
||||
if (s0 && s1 && i < s0.index && i < s1.index && triangleArea(site, s0, s1) < 0) {
|
||||
triangles.push([site.data, s0.data, s1.data]);
|
||||
}
|
||||
}
|
||||
});
|
||||
return triangles;
|
||||
},
|
||||
links: function () {
|
||||
return this.edges.filter(function (edge) {
|
||||
return edge.right;
|
||||
}).map(function (edge) {
|
||||
return {
|
||||
source: edge.left.data,
|
||||
target: edge.right.data
|
||||
};
|
||||
});
|
||||
},
|
||||
find: function (x, y, radius) {
|
||||
var that = this,
|
||||
i0,
|
||||
i1 = that._found || 0,
|
||||
n = that.cells.length,
|
||||
cell; // Use the previously-found cell, or start with an arbitrary one.
|
||||
|
||||
while (!(cell = that.cells[i1])) if (++i1 >= n) return null;
|
||||
|
||||
var dx = x - cell.site[0],
|
||||
dy = y - cell.site[1],
|
||||
d2 = dx * dx + dy * dy; // Traverse the half-edges to find a closer cell, if any.
|
||||
|
||||
do {
|
||||
cell = that.cells[i0 = i1], i1 = null;
|
||||
cell.halfedges.forEach(function (e) {
|
||||
var edge = that.edges[e],
|
||||
v = edge.left;
|
||||
if ((v === cell.site || !v) && !(v = edge.right)) return;
|
||||
var vx = x - v[0],
|
||||
vy = y - v[1],
|
||||
v2 = vx * vx + vy * vy;
|
||||
if (v2 < d2) d2 = v2, i1 = v.index;
|
||||
});
|
||||
} while (i1 !== null);
|
||||
|
||||
that._found = i0;
|
||||
return radius == null || d2 <= radius * radius ? cell.site : null;
|
||||
}
|
||||
};
|
||||
176
node_modules/victory-vendor/lib-vendor/d3-voronoi/src/Edge.js
generated
vendored
Normal file
176
node_modules/victory-vendor/lib-vendor/d3-voronoi/src/Edge.js
generated
vendored
Normal file
@@ -0,0 +1,176 @@
|
||||
"use strict";
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.clipEdges = clipEdges;
|
||||
exports.createBorderEdge = createBorderEdge;
|
||||
exports.createEdge = createEdge;
|
||||
exports.setEdgeEnd = setEdgeEnd;
|
||||
|
||||
var _Diagram = require("./Diagram");
|
||||
|
||||
function createEdge(left, right, v0, v1) {
|
||||
var edge = [null, null],
|
||||
index = _Diagram.edges.push(edge) - 1;
|
||||
edge.left = left;
|
||||
edge.right = right;
|
||||
if (v0) setEdgeEnd(edge, left, right, v0);
|
||||
if (v1) setEdgeEnd(edge, right, left, v1);
|
||||
|
||||
_Diagram.cells[left.index].halfedges.push(index);
|
||||
|
||||
_Diagram.cells[right.index].halfedges.push(index);
|
||||
|
||||
return edge;
|
||||
}
|
||||
|
||||
function createBorderEdge(left, v0, v1) {
|
||||
var edge = [v0, v1];
|
||||
edge.left = left;
|
||||
return edge;
|
||||
}
|
||||
|
||||
function setEdgeEnd(edge, left, right, vertex) {
|
||||
if (!edge[0] && !edge[1]) {
|
||||
edge[0] = vertex;
|
||||
edge.left = left;
|
||||
edge.right = right;
|
||||
} else if (edge.left === right) {
|
||||
edge[1] = vertex;
|
||||
} else {
|
||||
edge[0] = vertex;
|
||||
}
|
||||
} // Liang–Barsky line clipping.
|
||||
|
||||
|
||||
function clipEdge(edge, x0, y0, x1, y1) {
|
||||
var a = edge[0],
|
||||
b = edge[1],
|
||||
ax = a[0],
|
||||
ay = a[1],
|
||||
bx = b[0],
|
||||
by = b[1],
|
||||
t0 = 0,
|
||||
t1 = 1,
|
||||
dx = bx - ax,
|
||||
dy = by - ay,
|
||||
r;
|
||||
r = x0 - ax;
|
||||
if (!dx && r > 0) return;
|
||||
r /= dx;
|
||||
|
||||
if (dx < 0) {
|
||||
if (r < t0) return;
|
||||
if (r < t1) t1 = r;
|
||||
} else if (dx > 0) {
|
||||
if (r > t1) return;
|
||||
if (r > t0) t0 = r;
|
||||
}
|
||||
|
||||
r = x1 - ax;
|
||||
if (!dx && r < 0) return;
|
||||
r /= dx;
|
||||
|
||||
if (dx < 0) {
|
||||
if (r > t1) return;
|
||||
if (r > t0) t0 = r;
|
||||
} else if (dx > 0) {
|
||||
if (r < t0) return;
|
||||
if (r < t1) t1 = r;
|
||||
}
|
||||
|
||||
r = y0 - ay;
|
||||
if (!dy && r > 0) return;
|
||||
r /= dy;
|
||||
|
||||
if (dy < 0) {
|
||||
if (r < t0) return;
|
||||
if (r < t1) t1 = r;
|
||||
} else if (dy > 0) {
|
||||
if (r > t1) return;
|
||||
if (r > t0) t0 = r;
|
||||
}
|
||||
|
||||
r = y1 - ay;
|
||||
if (!dy && r < 0) return;
|
||||
r /= dy;
|
||||
|
||||
if (dy < 0) {
|
||||
if (r > t1) return;
|
||||
if (r > t0) t0 = r;
|
||||
} else if (dy > 0) {
|
||||
if (r < t0) return;
|
||||
if (r < t1) t1 = r;
|
||||
}
|
||||
|
||||
if (!(t0 > 0) && !(t1 < 1)) return true; // TODO Better check?
|
||||
|
||||
if (t0 > 0) edge[0] = [ax + t0 * dx, ay + t0 * dy];
|
||||
if (t1 < 1) edge[1] = [ax + t1 * dx, ay + t1 * dy];
|
||||
return true;
|
||||
}
|
||||
|
||||
function connectEdge(edge, x0, y0, x1, y1) {
|
||||
var v1 = edge[1];
|
||||
if (v1) return true;
|
||||
var v0 = edge[0],
|
||||
left = edge.left,
|
||||
right = edge.right,
|
||||
lx = left[0],
|
||||
ly = left[1],
|
||||
rx = right[0],
|
||||
ry = right[1],
|
||||
fx = (lx + rx) / 2,
|
||||
fy = (ly + ry) / 2,
|
||||
fm,
|
||||
fb;
|
||||
|
||||
if (ry === ly) {
|
||||
if (fx < x0 || fx >= x1) return;
|
||||
|
||||
if (lx > rx) {
|
||||
if (!v0) v0 = [fx, y0];else if (v0[1] >= y1) return;
|
||||
v1 = [fx, y1];
|
||||
} else {
|
||||
if (!v0) v0 = [fx, y1];else if (v0[1] < y0) return;
|
||||
v1 = [fx, y0];
|
||||
}
|
||||
} else {
|
||||
fm = (lx - rx) / (ry - ly);
|
||||
fb = fy - fm * fx;
|
||||
|
||||
if (fm < -1 || fm > 1) {
|
||||
if (lx > rx) {
|
||||
if (!v0) v0 = [(y0 - fb) / fm, y0];else if (v0[1] >= y1) return;
|
||||
v1 = [(y1 - fb) / fm, y1];
|
||||
} else {
|
||||
if (!v0) v0 = [(y1 - fb) / fm, y1];else if (v0[1] < y0) return;
|
||||
v1 = [(y0 - fb) / fm, y0];
|
||||
}
|
||||
} else {
|
||||
if (ly < ry) {
|
||||
if (!v0) v0 = [x0, fm * x0 + fb];else if (v0[0] >= x1) return;
|
||||
v1 = [x1, fm * x1 + fb];
|
||||
} else {
|
||||
if (!v0) v0 = [x1, fm * x1 + fb];else if (v0[0] < x0) return;
|
||||
v1 = [x0, fm * x0 + fb];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
edge[0] = v0;
|
||||
edge[1] = v1;
|
||||
return true;
|
||||
}
|
||||
|
||||
function clipEdges(x0, y0, x1, y1) {
|
||||
var i = _Diagram.edges.length,
|
||||
edge;
|
||||
|
||||
while (i--) {
|
||||
if (!connectEdge(edge = _Diagram.edges[i], x0, y0, x1, y1) || !clipEdge(edge, x0, y0, x1, y1) || !(Math.abs(edge[0][0] - edge[1][0]) > _Diagram.epsilon || Math.abs(edge[0][1] - edge[1][1]) > _Diagram.epsilon)) {
|
||||
delete _Diagram.edges[i];
|
||||
}
|
||||
}
|
||||
}
|
||||
261
node_modules/victory-vendor/lib-vendor/d3-voronoi/src/RedBlackTree.js
generated
vendored
Normal file
261
node_modules/victory-vendor/lib-vendor/d3-voronoi/src/RedBlackTree.js
generated
vendored
Normal file
@@ -0,0 +1,261 @@
|
||||
"use strict";
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.RedBlackNode = RedBlackNode;
|
||||
exports.default = void 0;
|
||||
|
||||
function RedBlackTree() {
|
||||
this._ = null; // root node
|
||||
}
|
||||
|
||||
function RedBlackNode(node) {
|
||||
node.U = // parent node
|
||||
node.C = // color - true for red, false for black
|
||||
node.L = // left node
|
||||
node.R = // right node
|
||||
node.P = // previous node
|
||||
node.N = null; // next node
|
||||
}
|
||||
|
||||
RedBlackTree.prototype = {
|
||||
constructor: RedBlackTree,
|
||||
insert: function (after, node) {
|
||||
var parent, grandpa, uncle;
|
||||
|
||||
if (after) {
|
||||
node.P = after;
|
||||
node.N = after.N;
|
||||
if (after.N) after.N.P = node;
|
||||
after.N = node;
|
||||
|
||||
if (after.R) {
|
||||
after = after.R;
|
||||
|
||||
while (after.L) after = after.L;
|
||||
|
||||
after.L = node;
|
||||
} else {
|
||||
after.R = node;
|
||||
}
|
||||
|
||||
parent = after;
|
||||
} else if (this._) {
|
||||
after = RedBlackFirst(this._);
|
||||
node.P = null;
|
||||
node.N = after;
|
||||
after.P = after.L = node;
|
||||
parent = after;
|
||||
} else {
|
||||
node.P = node.N = null;
|
||||
this._ = node;
|
||||
parent = null;
|
||||
}
|
||||
|
||||
node.L = node.R = null;
|
||||
node.U = parent;
|
||||
node.C = true;
|
||||
after = node;
|
||||
|
||||
while (parent && parent.C) {
|
||||
grandpa = parent.U;
|
||||
|
||||
if (parent === grandpa.L) {
|
||||
uncle = grandpa.R;
|
||||
|
||||
if (uncle && uncle.C) {
|
||||
parent.C = uncle.C = false;
|
||||
grandpa.C = true;
|
||||
after = grandpa;
|
||||
} else {
|
||||
if (after === parent.R) {
|
||||
RedBlackRotateLeft(this, parent);
|
||||
after = parent;
|
||||
parent = after.U;
|
||||
}
|
||||
|
||||
parent.C = false;
|
||||
grandpa.C = true;
|
||||
RedBlackRotateRight(this, grandpa);
|
||||
}
|
||||
} else {
|
||||
uncle = grandpa.L;
|
||||
|
||||
if (uncle && uncle.C) {
|
||||
parent.C = uncle.C = false;
|
||||
grandpa.C = true;
|
||||
after = grandpa;
|
||||
} else {
|
||||
if (after === parent.L) {
|
||||
RedBlackRotateRight(this, parent);
|
||||
after = parent;
|
||||
parent = after.U;
|
||||
}
|
||||
|
||||
parent.C = false;
|
||||
grandpa.C = true;
|
||||
RedBlackRotateLeft(this, grandpa);
|
||||
}
|
||||
}
|
||||
|
||||
parent = after.U;
|
||||
}
|
||||
|
||||
this._.C = false;
|
||||
},
|
||||
remove: function (node) {
|
||||
if (node.N) node.N.P = node.P;
|
||||
if (node.P) node.P.N = node.N;
|
||||
node.N = node.P = null;
|
||||
var parent = node.U,
|
||||
sibling,
|
||||
left = node.L,
|
||||
right = node.R,
|
||||
next,
|
||||
red;
|
||||
if (!left) next = right;else if (!right) next = left;else next = RedBlackFirst(right);
|
||||
|
||||
if (parent) {
|
||||
if (parent.L === node) parent.L = next;else parent.R = next;
|
||||
} else {
|
||||
this._ = next;
|
||||
}
|
||||
|
||||
if (left && right) {
|
||||
red = next.C;
|
||||
next.C = node.C;
|
||||
next.L = left;
|
||||
left.U = next;
|
||||
|
||||
if (next !== right) {
|
||||
parent = next.U;
|
||||
next.U = node.U;
|
||||
node = next.R;
|
||||
parent.L = node;
|
||||
next.R = right;
|
||||
right.U = next;
|
||||
} else {
|
||||
next.U = parent;
|
||||
parent = next;
|
||||
node = next.R;
|
||||
}
|
||||
} else {
|
||||
red = node.C;
|
||||
node = next;
|
||||
}
|
||||
|
||||
if (node) node.U = parent;
|
||||
if (red) return;
|
||||
|
||||
if (node && node.C) {
|
||||
node.C = false;
|
||||
return;
|
||||
}
|
||||
|
||||
do {
|
||||
if (node === this._) break;
|
||||
|
||||
if (node === parent.L) {
|
||||
sibling = parent.R;
|
||||
|
||||
if (sibling.C) {
|
||||
sibling.C = false;
|
||||
parent.C = true;
|
||||
RedBlackRotateLeft(this, parent);
|
||||
sibling = parent.R;
|
||||
}
|
||||
|
||||
if (sibling.L && sibling.L.C || sibling.R && sibling.R.C) {
|
||||
if (!sibling.R || !sibling.R.C) {
|
||||
sibling.L.C = false;
|
||||
sibling.C = true;
|
||||
RedBlackRotateRight(this, sibling);
|
||||
sibling = parent.R;
|
||||
}
|
||||
|
||||
sibling.C = parent.C;
|
||||
parent.C = sibling.R.C = false;
|
||||
RedBlackRotateLeft(this, parent);
|
||||
node = this._;
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
sibling = parent.L;
|
||||
|
||||
if (sibling.C) {
|
||||
sibling.C = false;
|
||||
parent.C = true;
|
||||
RedBlackRotateRight(this, parent);
|
||||
sibling = parent.L;
|
||||
}
|
||||
|
||||
if (sibling.L && sibling.L.C || sibling.R && sibling.R.C) {
|
||||
if (!sibling.L || !sibling.L.C) {
|
||||
sibling.R.C = false;
|
||||
sibling.C = true;
|
||||
RedBlackRotateLeft(this, sibling);
|
||||
sibling = parent.L;
|
||||
}
|
||||
|
||||
sibling.C = parent.C;
|
||||
parent.C = sibling.L.C = false;
|
||||
RedBlackRotateRight(this, parent);
|
||||
node = this._;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
sibling.C = true;
|
||||
node = parent;
|
||||
parent = parent.U;
|
||||
} while (!node.C);
|
||||
|
||||
if (node) node.C = false;
|
||||
}
|
||||
};
|
||||
|
||||
function RedBlackRotateLeft(tree, node) {
|
||||
var p = node,
|
||||
q = node.R,
|
||||
parent = p.U;
|
||||
|
||||
if (parent) {
|
||||
if (parent.L === p) parent.L = q;else parent.R = q;
|
||||
} else {
|
||||
tree._ = q;
|
||||
}
|
||||
|
||||
q.U = parent;
|
||||
p.U = q;
|
||||
p.R = q.L;
|
||||
if (p.R) p.R.U = p;
|
||||
q.L = p;
|
||||
}
|
||||
|
||||
function RedBlackRotateRight(tree, node) {
|
||||
var p = node,
|
||||
q = node.L,
|
||||
parent = p.U;
|
||||
|
||||
if (parent) {
|
||||
if (parent.L === p) parent.L = q;else parent.R = q;
|
||||
} else {
|
||||
tree._ = q;
|
||||
}
|
||||
|
||||
q.U = parent;
|
||||
p.U = q;
|
||||
p.L = q.R;
|
||||
if (p.L) p.L.U = p;
|
||||
q.R = p;
|
||||
}
|
||||
|
||||
function RedBlackFirst(node) {
|
||||
while (node.L) node = node.L;
|
||||
|
||||
return node;
|
||||
}
|
||||
|
||||
var _default = RedBlackTree;
|
||||
exports.default = _default;
|
||||
12
node_modules/victory-vendor/lib-vendor/d3-voronoi/src/constant.js
generated
vendored
Normal file
12
node_modules/victory-vendor/lib-vendor/d3-voronoi/src/constant.js
generated
vendored
Normal file
@@ -0,0 +1,12 @@
|
||||
"use strict";
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = _default;
|
||||
|
||||
function _default(x) {
|
||||
return function () {
|
||||
return x;
|
||||
};
|
||||
}
|
||||
15
node_modules/victory-vendor/lib-vendor/d3-voronoi/src/index.js
generated
vendored
Normal file
15
node_modules/victory-vendor/lib-vendor/d3-voronoi/src/index.js
generated
vendored
Normal file
@@ -0,0 +1,15 @@
|
||||
"use strict";
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
Object.defineProperty(exports, "voronoi", {
|
||||
enumerable: true,
|
||||
get: function () {
|
||||
return _voronoi.default;
|
||||
}
|
||||
});
|
||||
|
||||
var _voronoi = _interopRequireDefault(require("./voronoi"));
|
||||
|
||||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
||||
15
node_modules/victory-vendor/lib-vendor/d3-voronoi/src/point.js
generated
vendored
Normal file
15
node_modules/victory-vendor/lib-vendor/d3-voronoi/src/point.js
generated
vendored
Normal file
@@ -0,0 +1,15 @@
|
||||
"use strict";
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.x = x;
|
||||
exports.y = y;
|
||||
|
||||
function x(d) {
|
||||
return d[0];
|
||||
}
|
||||
|
||||
function y(d) {
|
||||
return d[1];
|
||||
}
|
||||
63
node_modules/victory-vendor/lib-vendor/d3-voronoi/src/voronoi.js
generated
vendored
Normal file
63
node_modules/victory-vendor/lib-vendor/d3-voronoi/src/voronoi.js
generated
vendored
Normal file
@@ -0,0 +1,63 @@
|
||||
"use strict";
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = _default;
|
||||
|
||||
var _constant = _interopRequireDefault(require("./constant"));
|
||||
|
||||
var _point = require("./point");
|
||||
|
||||
var _Diagram = _interopRequireWildcard(require("./Diagram"));
|
||||
|
||||
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
||||
|
||||
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
||||
|
||||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
||||
|
||||
function _default() {
|
||||
var x = _point.x,
|
||||
y = _point.y,
|
||||
extent = null;
|
||||
|
||||
function voronoi(data) {
|
||||
return new _Diagram.default(data.map(function (d, i) {
|
||||
var s = [Math.round(x(d, i, data) / _Diagram.epsilon) * _Diagram.epsilon, Math.round(y(d, i, data) / _Diagram.epsilon) * _Diagram.epsilon];
|
||||
s.index = i;
|
||||
s.data = d;
|
||||
return s;
|
||||
}), extent);
|
||||
}
|
||||
|
||||
voronoi.polygons = function (data) {
|
||||
return voronoi(data).polygons();
|
||||
};
|
||||
|
||||
voronoi.links = function (data) {
|
||||
return voronoi(data).links();
|
||||
};
|
||||
|
||||
voronoi.triangles = function (data) {
|
||||
return voronoi(data).triangles();
|
||||
};
|
||||
|
||||
voronoi.x = function (_) {
|
||||
return arguments.length ? (x = typeof _ === "function" ? _ : (0, _constant.default)(+_), voronoi) : x;
|
||||
};
|
||||
|
||||
voronoi.y = function (_) {
|
||||
return arguments.length ? (y = typeof _ === "function" ? _ : (0, _constant.default)(+_), voronoi) : y;
|
||||
};
|
||||
|
||||
voronoi.extent = function (_) {
|
||||
return arguments.length ? (extent = _ == null ? null : [[+_[0][0], +_[0][1]], [+_[1][0], +_[1][1]]], voronoi) : extent && [[extent[0][0], extent[0][1]], [extent[1][0], extent[1][1]]];
|
||||
};
|
||||
|
||||
voronoi.size = function (_) {
|
||||
return arguments.length ? (extent = _ == null ? null : [[0, 0], [+_[0], +_[1]]], voronoi) : extent && [extent[1][0] - extent[0][0], extent[1][1] - extent[0][1]];
|
||||
};
|
||||
|
||||
return voronoi;
|
||||
}
|
||||
Reference in New Issue
Block a user