Get a basic voronoi diagram showing. yay!

This commit is contained in:
Starbeamrainbowlabs 2019-06-10 23:24:28 +01:00
parent 278adb8468
commit 388b269590
Signed by: sbrl
GPG Key ID: 1BE5172E637709C2
6 changed files with 207 additions and 125 deletions

View File

@ -17,24 +17,22 @@ class SvgWriter {
* @param {String} [heightspec="100%"] * @param {String} [heightspec="100%"]
* @param {Retangle} [viewBox=null] * @param {Retangle} [viewBox=null]
*/ */
constructor(widthspec = "100%", heightspec = "100%", viewBox = null) { constructor(widthspec = "100%", heightspec = "100%", viewBox = null, pretty_print = false) {
this.unitSuffix = ""; this.unitSuffix = "";
// ---------------------------------- // ----------------------------------
this.xml = new XMLWriter(); this.xml = new XMLWriter(pretty_print);
this.xml.startDocument(); this.xml.startDocument();
this.xml.writeDocType("svg", "-//W3C//DTD SVG 1.1//EN", "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd", null); this.xml.writeDocType("svg", "-//W3C//DTD SVG 1.1//EN", "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd", null);
this.xml.writeComment("Generated by SVGWriter which was written by Starbeamrainbowlabs"); this.xml.writeComment("Generated by SVGWriter.js, which was written by Starbeamrainbowlabs & ported from SVGWriter.cs");
this.xml.startElement("svg", "http://www.w3.org/2000/svg"); this.xml.startElement("svg", "http://www.w3.org/2000/svg");
this.xml.writeAttribute("version", "1.1"); this.xml.writeAttribute("version", "1.1");
this.xml.writeAttribute("x", "0");
this.xml.writeAttribute("y", "0");
this.xml.writeAttribute("width", widthspec); this.xml.writeAttribute("width", widthspec);
this.xml.writeAttribute("height", heightspec); this.xml.writeAttribute("height", heightspec);
if (rawViewBox != null) { if (viewBox != null) {
this.xml.writeAttribute( this.xml.writeAttribute(
"viewBox", "viewBox",
`${viewBox.x} ${viewBox.y} ${viewBox.width} ${viewBox.height}` `${viewBox.x} ${viewBox.y} ${viewBox.width} ${viewBox.height}`
@ -165,13 +163,12 @@ class SvgWriter {
* @param {Vector2[]} points The co-ordinates that make up the polygon. * @param {Vector2[]} points The co-ordinates that make up the polygon.
* @return {this} * @return {this}
*/ */
addPolygon(fillStyle, points) addPolygon(fillStyle, points) {
{
this.xml.startElement("polygon"); this.xml.startElement("polygon");
this.xml.writeAttribute("fill", fillStyle); this.xml.writeAttribute("fill", fillStyle);
this.xml.writeAttribute( this.xml.writeAttribute(
"points", "points",
points.map((point) => `${point.x}${point.y}`).join(" ") points.map((point) => `${point.x},${point.y}`).join(" ")
); );
this.xml.endElement(); this.xml.endElement();
return this; return this;
@ -199,4 +196,10 @@ class SvgWriter {
} }
} }
SvgWriter.string2element = (svg_string) => {
let temp = document.createElement("div");
temp.innerHTML = svg_string;
return temp.querySelector("svg");
}
export default SvgWriter; export default SvgWriter;

View File

@ -72,12 +72,12 @@ class MapManager {
setup_overlay() { setup_overlay() {
this.overlay = new VoronoiOverlay(); this.overlay = new VoronoiOverlay();
this.overlay.addCells( this.overlay.addCells(
new VoronoiCell(new Vector2(100, 100)), new VoronoiCell(new Vector2(53.739429, -0.445607)),
new VoronoiCell(new Vector2(100, 200)), new VoronoiCell(new Vector2(53.775879, -0.413569)),
new VoronoiCell(new Vector2(75, 100)), new VoronoiCell(new Vector2(53.745144, -0.279373)),
new VoronoiCell(new Vector2(50, 50)) new VoronoiCell(new Vector2(53.738222, -0.335983))
); );
let svg = this.overlay.render(); this.overlay.add_to(this.map);
} }
setup_time_dimension() { setup_time_dimension() {

View File

@ -9,7 +9,7 @@ import Vector2 from '../Helpers/Vector2.mjs';
class VoronoiCell { class VoronoiCell {
constructor(in_point) { constructor(in_point) {
this.point = in_point; this.point = in_point;
this.def = null; this.polygon = null;
} }
} }

View File

@ -1,6 +1,7 @@
"use strict"; "use strict";
import Voronoi from 'voronoi'; import L from 'leaflet';
import { Delaunay } from 'd3-delaunay';
import Vector2 from '../Helpers/Vector2.mjs'; import Vector2 from '../Helpers/Vector2.mjs';
import Rectangle from '../Helpers/Rectangle.mjs'; import Rectangle from '../Helpers/Rectangle.mjs';
@ -28,48 +29,89 @@ class VoronoiOverlay {
* @return {Rectangle} The bounding box of the currently registered points. * @return {Rectangle} The bounding box of the currently registered points.
*/ */
computeBoundingBox() { computeBoundingBox() {
let result = new Rectangle(Infinity, Infinity, -Infinity, -Infinity); let result = {
x_min: Infinity,
for(let cell of this.cells) { x_max: -Infinity,
if(cell.point.x < result.x) result.x = cell.point.x; y_min: Infinity,
if(cell.point.y < result.y) result.y = cell.point.y; y_max: -Infinity
if(cell.point.x > result.Right) result.Right = cell.point.x;
if(cell.point.y > result.Bottom) result.Bottom = cell.point.y;
} }
result.Left -= this.border.x; for(let cell of this.cells) {
result.Right += this.border.x; if(!isNaN(cell.point.x)) {
result.Top -= this.border.y; if(cell.point.x < result.x_min) result.x_min = cell.point.x;
result.Bottom += this.border.y; if(cell.point.x > result.x_max) result.x_max = cell.point.x;
}
if(!isNaN(cell.point.y)) {
if(cell.point.y < result.y_min) result.y_min = cell.point.y;
if(cell.point.y > result.y_max) result.y_max = cell.point.y;
}
}
return result; result.x_min -= this.border.x;
result.y_min -= this.border.y;
result.x_max += this.border.x;
result.y_max += this.border.y;
return new Rectangle(
result.x_min,
result.y_min,
result.x_max - result.x_min,
result.y_max - result.y_min
);
} }
render() { render() {
let bounding_box = this.computeBoundingBox(); let bounding_box = this.computeBoundingBox();
// Recycle the diagram object if possible let voronoi = Delaunay.from(this.cells.map(
if(typeof VoronoiOverlay.diagram !== "undefined") (cell) => [cell.point.x, cell.point.y])
VoronoiOverlay.voronoi.recycle(VoronoiOverlay.diagram); ).voronoi([
bounding_box.x, bounding_box.y,
bounding_box.Right, bounding_box.Bottom
]);
VoronoiOverlay.diagram = VoronoiOverlay.voronoi.compute( console.log(voronoi);
this.cells.map((cell) => cell.point),
bounding_box
);
console.log(VoronoiOverlay.diagram);
// TODO: Map the generated polygons back onto this.cells // TODO: Map the generated polygons back onto this.cells
for(let their_cell of VoronoiOverlay.diagram.cells) { let i = 0;
let our_cell = this.cells.find((el) => el.point.x == their_cell.site.x && el.point.y == their_cell.site.y); for(let polygon of voronoi.cellPolygons()) {
our_cell.def = their_cell; let our_cell = this.cells[i];
our_cell.polygon = polygon.map((point) => new Vector2(...point));
i++;
} }
console.log(this.cells); console.log(this.cells);
this.svg = new SvgWriter(); this.svg = new SvgWriter(
"100%", "100%",
bounding_box,
true
);
// TODO: Render the SVG here // TODO: Render the SVG here
for(let cell of this.cells) {
this.svg.addPolygon(
`hsla(${(Math.random()*360).toFixed(2)}, 50%, 50%, 0.6)`,
cell.polygon
);
this.svg.addCircle(cell.point, 0.005, "red");
}
this.svg.complete();
return this.svg.toString();
}
add_to(map) {
let bounds = this.computeBoundingBox();
this.layer = L.svgOverlay(
SvgWriter.string2element(this.render()),
L.latLngBounds(
L.latLng(bounds.TopLeft.x, bounds.TopLeft.y),
L.latLng(bounds.BottomRight.x, bounds.BottomRight.y)
)
);
this.layer.addTo(map);
} }
generate_overlay() { generate_overlay() {
@ -77,7 +119,5 @@ class VoronoiOverlay {
} }
} }
VoronoiOverlay.voronoi = new Voronoi();
export default VoronoiOverlay; export default VoronoiOverlay;

186
package-lock.json generated
View File

@ -25,9 +25,15 @@
} }
}, },
"@types/chart.js": { "@types/chart.js": {
"version": "2.7.51", "version": "2.7.53",
"resolved": "https://registry.npmjs.org/@types/chart.js/-/chart.js-2.7.51.tgz", "resolved": "https://registry.npmjs.org/@types/chart.js/-/chart.js-2.7.53.tgz",
"integrity": "sha512-bGIgvM8SzTSkKLWa6+uF5hNyH2K9Zdz6F8HUfsdP0j2744vuxXyY+hkHVvPeDuaWocltf4DRwInRN3+bqXW3ow==", "integrity": "sha512-z4j5PWjQff3qGF+5nJIegI5b7drtGA6+XAxoAOINZYkkUuwlmBvjbGtruUAugbaxQkLcCklKZ88dZaPSnFNggg==",
"dev": true
},
"@types/d3-delaunay": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/@types/d3-delaunay/-/d3-delaunay-4.1.0.tgz",
"integrity": "sha512-KWZn+XNDLTtoR3zMpAI2go4PbRcazlOsOmlrmZAwYOgV7lYRx469ii78LLswRDI9J6jJmrlCl6Zo9ccoWFfrIw==",
"dev": true "dev": true
}, },
"@types/estree": { "@types/estree": {
@ -61,9 +67,9 @@
} }
}, },
"@types/node": { "@types/node": {
"version": "11.11.1", "version": "12.0.7",
"resolved": "https://registry.npmjs.org/@types/node/-/node-11.11.1.tgz", "resolved": "https://registry.npmjs.org/@types/node/-/node-12.0.7.tgz",
"integrity": "sha512-2azXFP9n4aA2QNLkKm/F9pzKxgYj1SMawZ5Eh9iC21RH3XNcFsivLVU2NhpMgQm7YobSByvIol4c42ZFusXFHQ==", "integrity": "sha512-1YKeT4JitGgE4SOzyB9eMwO0nGVNkNEsm9qlIt1Lqm/tG2QEiSMTD4kS3aO6L+w5SClLVxALmIBESK6Mk5wX0A==",
"dev": true "dev": true
}, },
"@types/q": { "@types/q": {
@ -486,9 +492,9 @@
} }
}, },
"commander": { "commander": {
"version": "2.19.0", "version": "2.20.0",
"resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.0.tgz",
"integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==", "integrity": "sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==",
"dev": true "dev": true
}, },
"component-emitter": { "component-emitter": {
@ -893,6 +899,14 @@
} }
} }
}, },
"d3-delaunay": {
"version": "4.1.5",
"resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-4.1.5.tgz",
"integrity": "sha512-rBKVohmXT9+BrDicH8umAVUwtkfLIydVlWnpIEDUZ4l2e1vXCaKbypByF8tkN8TUUKnzJY0s8ldQEroeBRMO9Q==",
"requires": {
"delaunator": "^2.0.0"
}
},
"debug": { "debug": {
"version": "2.6.9", "version": "2.6.9",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
@ -970,6 +984,11 @@
} }
} }
}, },
"delaunator": {
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/delaunator/-/delaunator-2.0.5.tgz",
"integrity": "sha512-GSYmkITO56erpQzv5Pw+8Vg769kurM16IVUq/AcMb5ZCJCtV7Z2agx9lJ7EbbLno8L099iH2d+hvAK34ZnsvIQ=="
},
"dom-create-element-query-selector": { "dom-create-element-query-selector": {
"version": "github:hekigan/dom-create-element-query-selector#39afc3fb24cc06d280ef81e167acf3d21513e3a2", "version": "github:hekigan/dom-create-element-query-selector#39afc3fb24cc06d280ef81e167acf3d21513e3a2",
"from": "github:hekigan/dom-create-element-query-selector" "from": "github:hekigan/dom-create-element-query-selector"
@ -1574,6 +1593,15 @@
} }
} }
}, },
"is-reference": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.1.2.tgz",
"integrity": "sha512-Kn5g8c7XHKejFOpTf2QN9YjiHHKl5xRj+2uAZf9iM2//nkBNi/NNeB5JMoun28nEaUVHyPUzqzhfRlfAirEjXg==",
"dev": true,
"requires": {
"@types/estree": "0.0.39"
}
},
"is-regex": { "is-regex": {
"version": "1.0.4", "version": "1.0.4",
"resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz",
@ -1631,12 +1659,11 @@
"dev": true "dev": true
}, },
"jest-worker": { "jest-worker": {
"version": "24.4.0", "version": "24.6.0",
"resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.4.0.tgz", "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.6.0.tgz",
"integrity": "sha512-BH9X/klG9vxwoO99ZBUbZFfV8qO0XNZ5SIiCyYK2zOuJBl6YJVAeNIQjcoOVNu4HGEHeYEKsUWws8kSlSbZ9YQ==", "integrity": "sha512-jDwgW5W9qGNvpI1tNnvajh0a5IE/PuGLFmHk6aR/BZFz8tSgGw17GsDPXAJ6p91IvYDjOw8GpFbvvZGAK+DPQQ==",
"dev": true, "dev": true,
"requires": { "requires": {
"@types/node": "*",
"merge-stream": "^1.0.1", "merge-stream": "^1.0.1",
"supports-color": "^6.1.0" "supports-color": "^6.1.0"
}, },
@ -1696,9 +1723,9 @@
} }
}, },
"leaflet": { "leaflet": {
"version": "1.4.0", "version": "1.5.1",
"resolved": "https://registry.npmjs.org/leaflet/-/leaflet-1.4.0.tgz", "resolved": "https://registry.npmjs.org/leaflet/-/leaflet-1.5.1.tgz",
"integrity": "sha512-x9j9tGY1+PDLN9pcWTx9/y6C5nezoTMB8BLK5jTakx+H7bPlnbCHfi9Hjg+Qt36sgDz/cb9lrSpNQXmk45Tvhw==" "integrity": "sha512-ekM9KAeG99tYisNBg0IzEywAlp0hYI5XRipsqRXyRTeuU8jcuntilpp+eFf5gaE0xubc9RuSNIVtByEKwqFV0w=="
}, },
"leaflet-fullscreen": { "leaflet-fullscreen": {
"version": "1.0.2", "version": "1.0.2",
@ -1912,9 +1939,9 @@
"integrity": "sha1-qiEiUSr49vpr3G8y1nqm3whvfK0=" "integrity": "sha1-qiEiUSr49vpr3G8y1nqm3whvfK0="
}, },
"nightdocs": { "nightdocs": {
"version": "1.0.4", "version": "1.0.5",
"resolved": "https://registry.npmjs.org/nightdocs/-/nightdocs-1.0.4.tgz", "resolved": "https://registry.npmjs.org/nightdocs/-/nightdocs-1.0.5.tgz",
"integrity": "sha512-zlZTyxXJ4MkZgt2Gkc8xeT/9fex5TF+jiScngGTNMNxkwhtL6Yi7CQJyHUHP/H/vdSXqfWEAuVrITYETS2+ChQ==", "integrity": "sha512-z8e1ffeWF67QYu7I6bU5/4WreDFjKJVvfRRVvnoWcyjkWUz4Nn2COVOSWr7ypAdyNbDwMb6Cbf8ZZsTfXX2Tlg==",
"dev": true, "dev": true,
"requires": { "requires": {
"marked": "^0.6.1", "marked": "^0.6.1",
@ -1923,9 +1950,9 @@
} }
}, },
"nightink": { "nightink": {
"version": "0.1.2", "version": "0.1.3",
"resolved": "https://registry.npmjs.org/nightink/-/nightink-0.1.2.tgz", "resolved": "https://registry.npmjs.org/nightink/-/nightink-0.1.3.tgz",
"integrity": "sha512-nAyyf1EvghaFtmwD4ox2rFiY0eWqAsW6rulIPaPC5IMv3YaNKYdQ4F7zUZ6E7eONEVQGtiCGTv6YksY9wHHs1g==", "integrity": "sha512-eGlInN79j0g/QdTf8GFwuUvGbIsgWBfcNop219q9Nbf8WUlplDu7AriHoyKY+B0IeAB9zWg59NlBlJUIqmpEiQ==",
"dev": true, "dev": true,
"requires": { "requires": {
"await-fs": "^1.0.0", "await-fs": "^1.0.0",
@ -3609,77 +3636,93 @@
"dev": true "dev": true
}, },
"rollup": { "rollup": {
"version": "1.10.1", "version": "1.14.6",
"resolved": "https://registry.npmjs.org/rollup/-/rollup-1.10.1.tgz", "resolved": "https://registry.npmjs.org/rollup/-/rollup-1.14.6.tgz",
"integrity": "sha512-pW353tmBE7QP622ITkGxtqF0d5gSRCVPD9xqM+fcPjudeZfoXMFW2sCzsTe2TU/zU1xamIjiS9xuFCPVT9fESw==", "integrity": "sha512-A8f54Fms9PAG2VBLBg/XOBgN6tRQKgroltD86f+gF5+6eRmAAlFBJAFV0K7MHl2aHOCcrATWO1B8SAjVD2Ehsw==",
"dev": true, "dev": true,
"requires": { "requires": {
"@types/estree": "0.0.39", "@types/estree": "0.0.39",
"@types/node": "^11.13.5", "@types/node": "^12.0.7",
"acorn": "^6.1.1" "acorn": "^6.1.1"
},
"dependencies": {
"@types/node": {
"version": "11.13.6",
"resolved": "https://registry.npmjs.org/@types/node/-/node-11.13.6.tgz",
"integrity": "sha512-Xoo/EBzEe8HxTSwaZNLZjaW6M6tA/+GmD3/DZ6uo8qSaolE/9Oarko0oV1fVfrLqOz0tx0nXJB4rdD5c+vixLw==",
"dev": true
}
} }
}, },
"rollup-plugin-commonjs": { "rollup-plugin-commonjs": {
"version": "9.3.4", "version": "10.0.0",
"resolved": "https://registry.npmjs.org/rollup-plugin-commonjs/-/rollup-plugin-commonjs-9.3.4.tgz", "resolved": "https://registry.npmjs.org/rollup-plugin-commonjs/-/rollup-plugin-commonjs-10.0.0.tgz",
"integrity": "sha512-DTZOvRoiVIHHLFBCL4pFxOaJt8pagxsVldEXBOn6wl3/V21wVaj17HFfyzTsQUuou3sZL3lEJZVWKPFblJfI6w==", "integrity": "sha512-B8MoX5GRpj3kW4+YaFO/di2JsZkBxNjVmZ9LWjUoTAjq8N9wc7HObMXPsrvolVV9JXVtYSscflXM14A19dXPNQ==",
"dev": true, "dev": true,
"requires": { "requires": {
"estree-walker": "^0.6.0", "estree-walker": "^0.6.0",
"is-reference": "^1.1.2",
"magic-string": "^0.25.2", "magic-string": "^0.25.2",
"resolve": "^1.10.0", "resolve": "^1.10.1",
"rollup-pluginutils": "^2.6.0" "rollup-pluginutils": "^2.7.0"
}, },
"dependencies": { "dependencies": {
"resolve": { "resolve": {
"version": "1.10.0", "version": "1.11.1",
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.10.0.tgz", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.11.1.tgz",
"integrity": "sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg==", "integrity": "sha512-vIpgF6wfuJOZI7KKKSP+HmiKggadPQAdsp5HiC1mvqnfp0gF1vdwgBWZIdrVft9pgqoMFQN+R7BSWZiBxx+BBw==",
"dev": true, "dev": true,
"requires": { "requires": {
"path-parse": "^1.0.6" "path-parse": "^1.0.6"
} }
}, },
"rollup-pluginutils": { "rollup-pluginutils": {
"version": "2.6.0", "version": "2.8.1",
"resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.6.0.tgz", "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.1.tgz",
"integrity": "sha512-aGQwspEF8oPKvg37u3p7h0cYNwmJR1sCBMZGZ5b9qy8HGtETknqjzcxrDRrcAnJNXN18lBH4Q9vZYth/p4n8jQ==", "integrity": "sha512-J5oAoysWar6GuZo0s+3bZ6sVZAC0pfqKz68De7ZgDi5z63jOVZn1uJL/+z1jeKHNbGII8kAyHF5q8LnxSX5lQg==",
"dev": true, "dev": true,
"requires": { "requires": {
"estree-walker": "^0.6.0", "estree-walker": "^0.6.1"
"micromatch": "^3.1.10" },
"dependencies": {
"estree-walker": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz",
"integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==",
"dev": true
}
} }
} }
} }
}, },
"rollup-plugin-node-resolve": { "rollup-plugin-node-resolve": {
"version": "4.2.3", "version": "5.0.1",
"resolved": "https://registry.npmjs.org/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-4.2.3.tgz", "resolved": "https://registry.npmjs.org/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-5.0.1.tgz",
"integrity": "sha512-r+WaesPzdGEynpLZLALFEDugA4ACa5zn7bc/+LVX4vAXQQ8IgDHv0xfsSvJ8tDXUtprfBtrDtRFg27ifKjcJTg==", "integrity": "sha512-9s3dTu44SKQZM/Pwll42GpqXgT+WdvO0Ga01lF8cwZqJGqRUATtD+GrP3uIzZdpnbPonEJbVasfFt80VGPQqKw==",
"dev": true, "dev": true,
"requires": { "requires": {
"@types/resolve": "0.0.8", "@types/resolve": "0.0.8",
"builtin-modules": "^3.1.0", "builtin-modules": "^3.1.0",
"is-module": "^1.0.0", "is-module": "^1.0.0",
"resolve": "^1.10.0" "resolve": "^1.11.0",
"rollup-pluginutils": "^2.8.0"
}, },
"dependencies": { "dependencies": {
"estree-walker": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz",
"integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==",
"dev": true
},
"resolve": { "resolve": {
"version": "1.10.0", "version": "1.11.1",
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.10.0.tgz", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.11.1.tgz",
"integrity": "sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg==", "integrity": "sha512-vIpgF6wfuJOZI7KKKSP+HmiKggadPQAdsp5HiC1mvqnfp0gF1vdwgBWZIdrVft9pgqoMFQN+R7BSWZiBxx+BBw==",
"dev": true, "dev": true,
"requires": { "requires": {
"path-parse": "^1.0.6" "path-parse": "^1.0.6"
} }
},
"rollup-pluginutils": {
"version": "2.8.1",
"resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.1.tgz",
"integrity": "sha512-J5oAoysWar6GuZo0s+3bZ6sVZAC0pfqKz68De7ZgDi5z63jOVZn1uJL/+z1jeKHNbGII8kAyHF5q8LnxSX5lQg==",
"dev": true,
"requires": {
"estree-walker": "^0.6.1"
}
} }
} }
}, },
@ -3750,15 +3793,15 @@
} }
}, },
"rollup-plugin-terser": { "rollup-plugin-terser": {
"version": "4.0.4", "version": "5.0.0",
"resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-4.0.4.tgz", "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-5.0.0.tgz",
"integrity": "sha512-wPANT5XKVJJ8RDUN0+wIr7UPd0lIXBo4UdJ59VmlPCtlFsE20AM+14pe+tk7YunCsWEiuzkDBY3QIkSCjtrPXg==", "integrity": "sha512-W+jJ4opYnlmNyVW0vtRufs+EGf68BIJ7bnOazgz8mgz8pA9lUyrEifAhPs5y9M16wFeAyBGaRjKip4dnFBtXaw==",
"dev": true, "dev": true,
"requires": { "requires": {
"@babel/code-frame": "^7.0.0", "@babel/code-frame": "^7.0.0",
"jest-worker": "^24.0.0", "jest-worker": "^24.6.0",
"serialize-javascript": "^1.6.1", "serialize-javascript": "^1.7.0",
"terser": "^3.14.1" "terser": "^4.0.0"
} }
}, },
"rollup-pluginutils": { "rollup-pluginutils": {
@ -3807,9 +3850,9 @@
"dev": true "dev": true
}, },
"serialize-javascript": { "serialize-javascript": {
"version": "1.6.1", "version": "1.7.0",
"resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.6.1.tgz", "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.7.0.tgz",
"integrity": "sha512-A5MOagrPFga4YaKQSWHryl7AXvbQkEqpw4NNYMTNYUNV51bA8ABHgYFpqKx+YFFrw59xMV1qGH1R4AgoNIVgCw==", "integrity": "sha512-ke8UG8ulpFOxO8f8gRYabHQe/ZntKlcig2Mp+8+URDP1D8vJZ0KUt7LYo07q25Z/+JVSgpr/cui9PIp5H6/+nA==",
"dev": true "dev": true
}, },
"set-value": { "set-value": {
@ -3991,9 +4034,9 @@
} }
}, },
"source-map-support": { "source-map-support": {
"version": "0.5.11", "version": "0.5.12",
"resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.11.tgz", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.12.tgz",
"integrity": "sha512-//sajEx/fGL3iw6fltKMdPvy8kL3kJ2O3iuYlRoT3k9Kb4BjOoZ+BZzaNHeuaruSt+Kf3Zk9tnfAQg9/AJqUVQ==", "integrity": "sha512-4h2Pbvyy15EE02G+JOZpUCmqWJuqrs+sEkzewTm++BPi7Hvn/HwcqLAcNxYAyI0x13CpPPn+kMjl+hplXMHITQ==",
"dev": true, "dev": true,
"requires": { "requires": {
"buffer-from": "^1.0.0", "buffer-from": "^1.0.0",
@ -4165,9 +4208,9 @@
"integrity": "sha1-Rw9vL6VGYGTrGpUB10wWqIPPv9o=" "integrity": "sha1-Rw9vL6VGYGTrGpUB10wWqIPPv9o="
}, },
"terser": { "terser": {
"version": "3.17.0", "version": "4.0.0",
"resolved": "https://registry.npmjs.org/terser/-/terser-3.17.0.tgz", "resolved": "https://registry.npmjs.org/terser/-/terser-4.0.0.tgz",
"integrity": "sha512-/FQzzPJmCpjAH9Xvk2paiWrFq+5M6aVOf+2KRbwhByISDX/EujxsK+BAvrhb6H+2rtrLCHK9N01wO014vrIwVQ==", "integrity": "sha512-dOapGTU0hETFl1tCo4t56FN+2jffoKyER9qBGoUFyZ6y7WLoKT0bF+lAYi6B6YsILcGF3q1C2FBh8QcKSCgkgA==",
"dev": true, "dev": true,
"requires": { "requires": {
"commander": "^2.19.0", "commander": "^2.19.0",
@ -4362,11 +4405,6 @@
"integrity": "sha512-w/hry/368nO21AN9QljsaIhb9ZiZtZARoVH5f3CsFbawdLdayCgKRPup7CggujvySMxx0I91NOyxdVENohprLQ==", "integrity": "sha512-w/hry/368nO21AN9QljsaIhb9ZiZtZARoVH5f3CsFbawdLdayCgKRPup7CggujvySMxx0I91NOyxdVENohprLQ==",
"dev": true "dev": true
}, },
"voronoi": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/voronoi/-/voronoi-1.0.0.tgz",
"integrity": "sha1-wIPK+pjENZpRgBi/6IYkyyJ6wpE="
},
"xml-writer": { "xml-writer": {
"version": "1.7.0", "version": "1.7.0",
"resolved": "https://registry.npmjs.org/xml-writer/-/xml-writer-1.7.0.tgz", "resolved": "https://registry.npmjs.org/xml-writer/-/xml-writer-1.7.0.tgz",

View File

@ -19,31 +19,32 @@
"homepage": "https://github.com/sbrl/ConnectedHumber-Air-Quality-Interface#readme", "homepage": "https://github.com/sbrl/ConnectedHumber-Air-Quality-Interface#readme",
"dependencies": { "dependencies": {
"chart.js": "^2.8.0", "chart.js": "^2.8.0",
"d3-delaunay": "^4.1.5",
"dom-create-element-query-selector": "github:hekigan/dom-create-element-query-selector", "dom-create-element-query-selector": "github:hekigan/dom-create-element-query-selector",
"iso8601-js-period": "^0.2.1", "iso8601-js-period": "^0.2.1",
"leaflet": "^1.4.0", "leaflet": "^1.5.1",
"leaflet-fullscreen": "^1.0.2", "leaflet-fullscreen": "^1.0.2",
"leaflet.markercluster": "^1.4.1", "leaflet.markercluster": "^1.4.1",
"moment": "^2.24.0", "moment": "^2.24.0",
"nanomodal": "^5.1.1", "nanomodal": "^5.1.1",
"smartsettings": "^1.2.3", "smartsettings": "^1.2.3",
"tabs": "^0.2.0", "tabs": "^0.2.0",
"voronoi": "^1.0.0",
"xml-writer": "^1.7.0" "xml-writer": "^1.7.0"
}, },
"devDependencies": { "devDependencies": {
"@types/chart.js": "^2.7.51", "@types/chart.js": "^2.7.53",
"@types/d3-delaunay": "^4.1.0",
"@types/leaflet": "^1.4.4", "@types/leaflet": "^1.4.4",
"@types/leaflet-fullscreen": "^1.0.4", "@types/leaflet-fullscreen": "^1.0.4",
"nightdocs": "^1.0.4", "nightdocs": "^1.0.5",
"postcss-copy": "^7.1.0", "postcss-copy": "^7.1.0",
"postcss-import": "^12.0.1", "postcss-import": "^12.0.1",
"rollup": "^1.10.1", "rollup": "^1.14.6",
"rollup-plugin-commonjs": "^9.3.4", "rollup-plugin-commonjs": "^10.0.0",
"rollup-plugin-node-resolve": "^4.2.3", "rollup-plugin-node-resolve": "^5.0.1",
"rollup-plugin-postcss": "^2.0.3", "rollup-plugin-postcss": "^2.0.3",
"rollup-plugin-replace": "^2.2.0", "rollup-plugin-replace": "^2.2.0",
"rollup-plugin-terser": "^4.0.4" "rollup-plugin-terser": "^5.0.0"
}, },
"docpress": { "docpress": {
"github": "ConnectedHumber/Air-Quality-Web", "github": "ConnectedHumber/Air-Quality-Web",