Mapbox example (#1306)

This commit is contained in:
Tarek Sherif 2019-12-04 13:58:40 -05:00 committed by GitHub
parent ae31af8efe
commit 2f2a17dab4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
16 changed files with 505 additions and 15 deletions

View File

@ -1,9 +1,8 @@
import GL from '@luma.gl/constants';
import {AnimationLoop, Model, CubeGeometry} from '@luma.gl/engine';
import {Texture2D, TextureCube} from '@luma.gl/webgl';
import {Texture2D, TextureCube, loadImage} from '@luma.gl/webgl';
import {setParameters} from '@luma.gl/gltools';
import {Matrix4, radians} from 'math.gl';
import {loadImage} from '@loaders.gl/images';
const INFO_HTML = `
<p>
@ -78,7 +77,7 @@ varying vec3 vNormal;
varying vec2 vUV;
void main(void) {
vec4 color = texture2D(uTexture, vUV);
vec4 color = texture2D(uTexture, vec2(vUV.x, 1.0 - vUV.y));
vec3 reflectedDir = reflect(normalize(vPosition - uEyePosition), vNormal);
vec4 reflectedColor = textureCube(uTextureCube, reflectedDir);

View File

@ -5,7 +5,6 @@
"build": "webpack --env.analyze"
},
"dependencies": {
"@loaders.gl/images": "^1.3.3",
"@luma.gl/constants": "^8.0.0-alpha.9",
"@luma.gl/engine": "^8.0.0-alpha.9",
"@luma.gl/gltools": "^8.0.0-alpha.9",

View File

@ -55,7 +55,7 @@ uniform float alpha;
out vec4 fragColor;
void main(void) {
fragColor.rgb = texture(uTexture, vUV).rgb;
fragColor.rgb = texture(uTexture, vec2(vUV.x, 1.0 - vUV.y)).rgb;
fragColor.a = alpha;
fragColor = dirlight_filterColor(fragColor);
fragColor.rgb *= fragColor.a;

View File

@ -100,7 +100,7 @@ uniform sampler2D uTexture;
out vec4 fragColor;
void main(void) {
float d = clamp(dot(normalize(vNormal), normalize(vec3(1.0, 1.0, 0.2))), 0.0, 1.0);
fragColor.rgb = texture(uTexture, vUV).rgb * (d + 0.1);
fragColor.rgb = texture(uTexture, vec2(vUV.x, 1.0 - vUV.y)).rgb * (d + 0.1);
fragColor.a = 1.0;
}
`;

View File

@ -0,0 +1,162 @@
/* global window */
import mapboxgl from 'mapbox-gl';
import {instrumentGLContext} from '@luma.gl/gltools';
import {Buffer} from '@luma.gl/webgl';
import {Model} from '@luma.gl/engine';
import {MiniAnimationLoop} from '../../utils';
const INFO_HTML = `
A triangle connecting Times Square, Rockafeller Center, and Columbus Circle in Manhattan, NYC on a <a class="external-link" href="https://www.mapbox.com/">Mapbox</a> basemap using the
<a class="external-link" href="https://docs.mapbox.com/mapbox-gl-js/example/custom-style-layer/">Mapbox GL JS custom layer API</a>.
`;
mapboxgl.accessToken = process.env.MapboxAccessToken; // eslint-disable-line
const coordinates = [
[-73.9819, 40.7681], // Columbus Circle
[-73.98513, 40.758896], // Times Square
[-73.9786, 40.7589] // Rockafeller Center
];
// Create a Mapbox custom layer
// https://docs.mapbox.com/mapbox-gl-js/example/custom-style-layer/
class CustomLayer {
constructor() {
this.id = 'lumagl-layer';
this.type = 'custom';
this.renderingMode = '3d';
}
onAdd(m, gl) {
instrumentGLContext(gl);
this.map = m;
const vertexSource = `
attribute vec2 positions;
attribute vec3 colors;
uniform mat4 uPMatrix;
varying vec3 vColor;
void main() {
vColor = colors;
gl_Position = uPMatrix * vec4(positions, 0, 1.0);
}
`;
const fragmentSource = `
varying vec3 vColor;
void main() {
gl_FragColor = vec4(vColor, 0.5);
}
`;
const positions = new Float32Array(6);
coordinates.forEach((point, i) => {
const coords = mapboxgl.MercatorCoordinate.fromLngLat(point);
positions[i * 2] = coords.x;
positions[i * 2 + 1] = coords.y;
});
this.positionBuffer = new Buffer(gl, new Float32Array(positions));
this.colorBuffer = new Buffer(
gl,
new Float32Array([1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0])
);
// Model to draw a triangle on the map
this.model = new Model(gl, {
id: 'my-program',
vs: vertexSource,
fs: fragmentSource,
attributes: {
positions: this.positionBuffer,
colors: this.colorBuffer
},
vertexCount: 3
});
}
render(gl, matrix) {
// Mapbox passes us a projection matrix
this.model
.setUniforms({
uPMatrix: matrix
})
.draw();
}
onRemove() {
// Cleanup
this.positionBuffer.delete();
this.colorBuffer.delete();
this.model.delete();
}
}
//
export default class AppAnimationLoop extends MiniAnimationLoop {
static getInfo() {
return INFO_HTML;
}
start(props) {
let bearing = -10;
let vb = 0.1;
let pitch = 40;
let vp = 0.01;
this.map = new mapboxgl.Map({
container: this._getContainer(props),
style: 'mapbox://styles/mapbox/streets-v9',
center: [-73.98213, 40.762896],
zoom: 14,
pitch,
bearing,
antialias: true
});
this.map.on('load', () => {
this.map.addLayer(new CustomLayer());
});
let loopHandle = null;
const loop = () => {
bearing += vb;
pitch += vp;
if (Math.abs(bearing) > 90) {
vb *= -1;
}
if (pitch > 50 || pitch < 30) {
vp *= -1;
}
this.map.setBearing(bearing);
this.map.setPitch(pitch);
loopHandle = window.requestAnimationFrame(loop);
};
loopHandle = window.requestAnimationFrame(loop);
this.map.on('mousedown', () => {
window.cancelAnimationFrame(loopHandle);
});
}
delete() {
this.map.remove();
this._removeContainer();
}
}
/* global window */
if (typeof window !== 'undefined' && !window.website) {
const animationLoop = new AppAnimationLoop();
animationLoop.start();
}

View File

@ -0,0 +1,18 @@
{
"scripts": {
"start": "webpack-dev-server --progress --hot --open -d",
"start-local": "webpack-dev-server --env.local --progress --hot --open -d",
"build": "webpack --env.local --env.analyze --profile --json > stats.json"
},
"dependencies": {
"@luma.gl/gltools": "^8.0.0-beta.1",
"@luma.gl/engine": "^8.0.0-beta.1",
"@luma.gl/webgl": "^8.0.0-beta.1",
"mapbox-gl": "^1.2.1",
"webpack": "^4.3.0"
},
"devDependencies": {
"html-webpack-plugin": "^3.2.0",
"webpack-dev-server": "^3.1.1"
}
}

View File

@ -0,0 +1,20 @@
const webpack = require('webpack');
const {resolve} = require('path');
// eslint-disable-next-line import/no-extraneous-dependencies
const HtmlWebpackPlugin = require('html-webpack-plugin');
const CONFIG = {
mode: 'development',
entry: {
app: resolve('./app.js')
},
plugins: [
new HtmlWebpackPlugin({title: 'Geospatial'}),
new webpack.EnvironmentPlugin(['MapboxAccessToken'])
]
};
// This line enables bundling against src in this repo rather than installed module
module.exports = env => (env ? require('../../webpack.config.local')(CONFIG)(env) : CONFIG);

View File

@ -31,6 +31,40 @@ export class MiniAnimationLoop {
return canvas;
}
_getContainer(props = {}) {
if (this.container) {
return this.container;
}
let width;
let height;
this.container = document.createElement('div');
if (props.canvas) {
const canvas = document.getElementById(props.canvas);
this.parent = canvas.parentElement;
width = canvas.clientWidth;
height = canvas.clientHeight;
this.container.style.position = 'relative';
this.container.style.top = `-${height}px`;
} else {
this.parent = document.body;
width = 800;
height = 800;
}
this.container.style.width = `${width}px`;
this.container.style.height = `${height}px`;
this.parent.appendChild(this.container);
return this.container;
}
_removeContainer(props = {}) {
this.parent.removeChild(this.container);
}
}
// Create a deterministic pseudorandom number generator

View File

@ -60,6 +60,7 @@
"eslint-plugin-luma-gl-custom-rules": "file:./dev-modules/eslint-plugin-luma-gl-custom-rules",
"eslint-plugin-tree-shaking": "^1.7.3",
"gl": "^4.2.2",
"mapbox-gl": "^1.2.1",
"mkdirp": "^0.5.1",
"mjolnir.js": "^2.1.2",
"ocular-dev-tools": "0.0.29",

View File

@ -27,7 +27,7 @@ callbacks.onCreateWebpackConfig = function onCreateWebpackConfigOverride(opts) {
onCreateWebpackConfig(opts);
const {
// stage, // build stage: develop, develop-html, build-javascript, or build-html
stage, // build stage: develop, develop-html, build-javascript, or build-html
// rules, // Object (map): set of preconfigured webpack config rules
// plugins, // Object (map): A set of preconfigured webpack config plugins
// getConfig, // Function that returns the current webpack config
@ -60,12 +60,19 @@ callbacks.onCreateWebpackConfig = function onCreateWebpackConfigOverride(opts) {
!/node_modules\/(ocular|ocular-gatsby|gatsby-plugin-ocular)/.test(modulePath)
});
// Omit the default rule where test === '\.jsx?$'
const rules = [newJSRule];
if (stage === 'build-html') {
rules.push({
test: /mapbox-gl/,
use: loaders.null()
});
}
const newConfig = {
module: {
rules: [
// Omit the default rule where test === '\.jsx?$'
newJSRule
]
rules
},
node: {
fs: 'empty'

View File

@ -135,6 +135,12 @@ module.exports = {
path: 'examples/showcase/instancing/',
image: 'images/example-instancing.jpg'
},
{
title: 'Geospatial',
componentUrl: resolve(__dirname, './templates/showcase/example-geospatial.jsx'),
path: 'examples/showcase/geospatial/',
image: 'images/example-geospatial.jpg'
},
{
title: 'Persistence',
componentUrl: resolve(__dirname, './templates/showcase/example-persistence.jsx'),

View File

@ -22,7 +22,8 @@
"@probe.gl/stats-widget": "^3.1.1",
"react": "^16.6.0",
"react-dom": "^16.6.0",
"ocular-gatsby": "1.0.3"
"ocular-gatsby": "1.0.3",
"mapbox-gl": "^1.2.1"
},
"devDependencies": {
"gatsby": "^2.13.0",

Binary file not shown.

After

Width:  |  Height:  |  Size: 435 KiB

View File

@ -0,0 +1,13 @@
import React from 'react';
import AnimationLoopExamplePage from '../../src/components/animation-loop-example-page';
import AnimationLoop from '../../../examples/showcase/geospatial/app';
export default class Example extends React.Component {
render() {
const { pageContext } = this.props;
const exampleConfig = (pageContext && pageContext.exampleConfig) || {};
return (
<AnimationLoopExamplePage AnimationLoop={AnimationLoop} exampleConfig={exampleConfig} />
);
}
}

View File

@ -13,11 +13,16 @@
margin: 24px;
padding: 12px 24px;
outline: none;
z-index: 99;
}
.options-panel h3 {
margin: 8px 0;
}
a.external-link {
text-decoration: underline;
}
.options-panel .source-link {
text-align: right;
margin-top: 8px;

231
yarn.lock
View File

@ -1363,6 +1363,65 @@
resolved "https://registry.yarnpkg.com/@luma.gl/constants/-/constants-7.1.1.tgz#f966fad9069722974e1b7bcae2fcd7a2444090dc"
integrity sha512-F+lkZzMJNPvGeTCkOezyHafAb48ottMx10PYx3j1rsKFBM2v1LgBHnV1I37xjkrx8PMhdb/2zMg80nRrniudGw==
"@mapbox/geojson-area@0.2.2":
version "0.2.2"
resolved "https://registry.yarnpkg.com/@mapbox/geojson-area/-/geojson-area-0.2.2.tgz#18d7814aa36bf23fbbcc379f8e26a22927debf10"
integrity sha1-GNeBSqNr8j+7zDefjiaiKSfevxA=
dependencies:
wgs84 "0.0.0"
"@mapbox/geojson-rewind@^0.4.0":
version "0.4.0"
resolved "https://registry.yarnpkg.com/@mapbox/geojson-rewind/-/geojson-rewind-0.4.0.tgz#0d3632d4c1b4a928cf10a06ade387e1c8a8c181b"
integrity sha512-b+1uPWBERW4Pet/969BNu61ZPDyH2ilIxBjJDFzxyS9TyszF9UrTQyYIl/G38clux3rtpAGGFSGTCSF/qR6UjA==
dependencies:
"@mapbox/geojson-area" "0.2.2"
concat-stream "~1.6.0"
minimist "1.2.0"
sharkdown "^0.1.0"
"@mapbox/geojson-types@^1.0.2":
version "1.0.2"
resolved "https://registry.yarnpkg.com/@mapbox/geojson-types/-/geojson-types-1.0.2.tgz#9aecf642cb00eab1080a57c4f949a65b4a5846d6"
integrity sha512-e9EBqHHv3EORHrSfbR9DqecPNn+AmuAoQxV6aL8Xu30bJMJR1o8PZLZzpk1Wq7/NfCbuhmakHTPYRhoqLsXRnw==
"@mapbox/jsonlint-lines-primitives@^2.0.2":
version "2.0.2"
resolved "https://registry.yarnpkg.com/@mapbox/jsonlint-lines-primitives/-/jsonlint-lines-primitives-2.0.2.tgz#ce56e539f83552b58d10d672ea4d6fc9adc7b234"
integrity sha1-zlblOfg1UrWNENZy6k1vya3HsjQ=
"@mapbox/mapbox-gl-supported@^1.4.0":
version "1.4.1"
resolved "https://registry.yarnpkg.com/@mapbox/mapbox-gl-supported/-/mapbox-gl-supported-1.4.1.tgz#c0a03cf75f8b0ad7b57849d6c7e91b0aec4b640f"
integrity sha512-yyKza9S6z3ELKuf6w5n6VNUB0Osu6Z93RXPfMHLIlNWohu3KqxewLOq4lMXseYJ92GwkRAxd207Pr/Z98cwmvw==
"@mapbox/point-geometry@0.1.0", "@mapbox/point-geometry@^0.1.0", "@mapbox/point-geometry@~0.1.0":
version "0.1.0"
resolved "https://registry.yarnpkg.com/@mapbox/point-geometry/-/point-geometry-0.1.0.tgz#8a83f9335c7860effa2eeeca254332aa0aeed8f2"
integrity sha1-ioP5M1x4YO/6Lu7KJUMyqgru2PI=
"@mapbox/tiny-sdf@^1.1.0":
version "1.1.1"
resolved "https://registry.yarnpkg.com/@mapbox/tiny-sdf/-/tiny-sdf-1.1.1.tgz#16a20c470741bfe9191deb336f46e194da4a91ff"
integrity sha512-Ihn1nZcGIswJ5XGbgFAvVumOgWpvIjBX9jiRlIl46uQG9vJOF51ViBYHF95rEZupuyQbEmhLaDPLQlU7fUTsBg==
"@mapbox/unitbezier@^0.0.0":
version "0.0.0"
resolved "https://registry.yarnpkg.com/@mapbox/unitbezier/-/unitbezier-0.0.0.tgz#15651bd553a67b8581fb398810c98ad86a34524e"
integrity sha1-FWUb1VOme4WB+zmIEMmK2Go0Uk4=
"@mapbox/vector-tile@^1.3.1":
version "1.3.1"
resolved "https://registry.yarnpkg.com/@mapbox/vector-tile/-/vector-tile-1.3.1.tgz#d3a74c90402d06e89ec66de49ec817ff53409666"
integrity sha512-MCEddb8u44/xfQ3oD+Srl/tNcQoqTw3goGk2oLsrFxOTc3dUp+kAnby3PvAeeBYSMSjSPD1nd1AJA6W49WnoUw==
dependencies:
"@mapbox/point-geometry" "~0.1.0"
"@mapbox/whoots-js@^3.1.0":
version "3.1.0"
resolved "https://registry.yarnpkg.com/@mapbox/whoots-js/-/whoots-js-3.1.0.tgz#497c67a1cef50d1a2459ba60f315e448d2ad87fe"
integrity sha512-Es6WcD0nO5l+2BOQS4uLfNPYQaNDfbot3X1XUoloz+x0mPDS3eeORZJl06HXjwBG1fOGwCRnzK88LMdxKRrd6Q==
"@mrmlnc/readdir-enhanced@^2.2.1":
version "2.2.1"
resolved "https://registry.yarnpkg.com/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz#524af240d1a360527b730475ecfa1344aa540dde"
@ -1788,6 +1847,11 @@ ansi-styles@^3.2.1:
dependencies:
color-convert "^1.9.0"
ansicolors@~0.2.1:
version "0.2.1"
resolved "https://registry.yarnpkg.com/ansicolors/-/ansicolors-0.2.1.tgz#be089599097b74a5c9c4a84a0cdbcdb62bd87aef"
integrity sha1-vgiVmQl7dKXJxKhKDNvNtivYeu8=
anymatch@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb"
@ -2481,6 +2545,14 @@ caniuse-lite@^1.0.30000974:
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000974.tgz#b7afe14ee004e97ce6dc73e3f878290a12928ad8"
integrity sha512-xc3rkNS/Zc3CmpMKuczWEdY2sZgx09BkAxfvkxlAEBTqcMHeL8QnPqhKse+5sRTi3nrw2pJwToD2WvKn1Uhvww==
cardinal@~0.4.2:
version "0.4.4"
resolved "https://registry.yarnpkg.com/cardinal/-/cardinal-0.4.4.tgz#ca5bb68a5b511b90fe93b9acea49bdee5c32bfe2"
integrity sha1-ylu2iltRG5D+k7ms6km97lwyv+I=
dependencies:
ansicolors "~0.2.1"
redeyed "~0.4.0"
caseless@~0.12.0:
version "0.12.0"
resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc"
@ -2724,7 +2796,7 @@ concat-map@0.0.1:
resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=
concat-stream@1.6.2, concat-stream@^1.4.7, concat-stream@^1.5.0, concat-stream@^1.6.0:
concat-stream@1.6.2, concat-stream@^1.4.7, concat-stream@^1.5.0, concat-stream@^1.6.0, concat-stream@~1.6.0:
version "1.6.2"
resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34"
integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==
@ -3047,6 +3119,11 @@ css-what@2.1:
resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.3.tgz#a6d7604573365fe74686c3f311c56513d88285f2"
integrity sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==
csscolorparser@~1.0.2:
version "1.0.3"
resolved "https://registry.yarnpkg.com/csscolorparser/-/csscolorparser-1.0.3.tgz#b34f391eea4da8f3e98231e2ccd8df9c041f171b"
integrity sha1-s085HupNqPPpgjHizNjfnAQfFxs=
currently-unhandled@^0.4.1:
version "0.4.1"
resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea"
@ -3442,6 +3519,11 @@ duplexify@^3.4.2, duplexify@^3.6.0:
readable-stream "^2.0.0"
stream-shift "^1.0.0"
earcut@^2.2.0:
version "2.2.1"
resolved "https://registry.yarnpkg.com/earcut/-/earcut-2.2.1.tgz#3bae0b1b6fec41853b56b126f03a42a34b28f1d5"
integrity sha512-5jIMi2RB3HtGPHcYd9Yyl0cczo84y+48lgKPxMijliNQaKAHEZJbdzLmKmdxG/mCdS/YD9DQ1gihL8mxzR0F9w==
ecc-jsbn@~0.1.1:
version "0.1.2"
resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9"
@ -3734,6 +3816,11 @@ esprima@^4.0.0:
resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71"
integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==
esprima@~1.0.4:
version "1.0.4"
resolved "https://registry.yarnpkg.com/esprima/-/esprima-1.0.4.tgz#9f557e08fc3b4d26ece9dd34f8fbf476b62585ad"
integrity sha1-n1V+CPw7TSbs6d00+Pv0drYlha0=
esquery@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.0.1.tgz#406c51658b1f5991a5f9b62b1dc25b00e3e5c708"
@ -4268,6 +4355,11 @@ genfun@^5.0.0:
resolved "https://registry.yarnpkg.com/genfun/-/genfun-5.0.0.tgz#9dd9710a06900a5c4a5bf57aca5da4e52fe76537"
integrity sha512-KGDOARWVga7+rnB3z9Sd2Letx515owfk0hSxHGuqjANb1M+x2bGZGqHLiozPsYMdM2OubeMni/Hpwmjq6qIUhA==
geojson-vt@^3.2.1:
version "3.2.1"
resolved "https://registry.yarnpkg.com/geojson-vt/-/geojson-vt-3.2.1.tgz#f8adb614d2c1d3f6ee7c4265cad4bbf3ad60c8b7"
integrity sha512-EvGQQi/zPrDA6zr6BnJD/YhwAkBP8nnJ9emh3EnHQKVMfg/MRVtPbMYdgVy/IaEmn4UfagD2a6fafPDL5hbtwg==
get-caller-file@^1.0.1:
version "1.0.3"
resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a"
@ -4535,6 +4627,11 @@ graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.15.tgz#ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00"
integrity sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==
grid-index@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/grid-index/-/grid-index-1.1.0.tgz#97f8221edec1026c8377b86446a7c71e79522ea7"
integrity sha512-HZRwumpOGUrHyxO5bqKZL0B0GlUpwtCAzZ42sgxUPniu33R1LSFH5yrIcBCHjkctCAh3mtWKcKd9J4vDDdeVHA==
"growl@~> 1.10.0":
version "1.10.5"
resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e"
@ -4848,7 +4945,7 @@ iconv-lite@0.4.24, iconv-lite@^0.4.17, iconv-lite@^0.4.24, iconv-lite@^0.4.4, ic
dependencies:
safer-buffer ">= 2.1.2 < 3"
ieee754@^1.1.4:
ieee754@^1.1.12, ieee754@^1.1.4:
version "1.1.13"
resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84"
integrity sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==
@ -5503,6 +5600,11 @@ jsprim@^1.2.2:
json-schema "0.2.3"
verror "1.10.0"
kdbush@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/kdbush/-/kdbush-3.0.0.tgz#f8484794d47004cc2d85ed3a79353dbe0abc2bf0"
integrity sha512-hRkd6/XW4HTsA9vjVpY9tuXJYLSlelnkTmVFu4M9/7MIYQtFcHpbugAU7UbOfjOiVSVYl2fqgBuJ32JUmRo5Ew==
killable@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/killable/-/killable-1.0.1.tgz#4c8ce441187a061c7474fb87ca08e2a638194892"
@ -5860,6 +5962,35 @@ map-visit@^1.0.0:
dependencies:
object-visit "^1.0.0"
mapbox-gl@^1.2.1:
version "1.5.1"
resolved "https://registry.yarnpkg.com/mapbox-gl/-/mapbox-gl-1.5.1.tgz#354560bc550b8bffa7573c2ebd0febfe00f8d334"
integrity sha512-B2LXxHQAOWx/bdHd2lBKhW0zWGYL73bb0CXVFsSblXW3Ta8h5czRW3sHYrXpWCOt+nO/+3XtxTYJ9vyZ2HL2nA==
dependencies:
"@mapbox/geojson-rewind" "^0.4.0"
"@mapbox/geojson-types" "^1.0.2"
"@mapbox/jsonlint-lines-primitives" "^2.0.2"
"@mapbox/mapbox-gl-supported" "^1.4.0"
"@mapbox/point-geometry" "^0.1.0"
"@mapbox/tiny-sdf" "^1.1.0"
"@mapbox/unitbezier" "^0.0.0"
"@mapbox/vector-tile" "^1.3.1"
"@mapbox/whoots-js" "^3.1.0"
csscolorparser "~1.0.2"
earcut "^2.2.0"
geojson-vt "^3.2.1"
gl-matrix "^3.0.0"
grid-index "^1.1.0"
minimist "0.0.8"
murmurhash-js "^1.0.0"
pbf "^3.2.1"
potpack "^1.0.1"
quickselect "^2.0.0"
rw "^1.3.3"
supercluster "^6.0.1"
tinyqueue "^2.0.0"
vt-pbf "^3.1.1"
math.gl@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/math.gl/-/math.gl-3.0.0.tgz#fe7ee98bd9439a29942246b3fe7a36f27fba06b2"
@ -6048,12 +6179,17 @@ minimist-options@^3.0.1:
arrify "^1.0.1"
is-plain-obj "^1.1.0"
minimist@0.0.5:
version "0.0.5"
resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.5.tgz#d7aa327bcecf518f9106ac6b8f003fa3bcea8566"
integrity sha1-16oye87PUY+RBqxrjwA/o7zqhWY=
minimist@0.0.8:
version "0.0.8"
resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d"
integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=
minimist@^1.1.3, minimist@^1.2.0, minimist@~1.2.0:
minimist@1.2.0, minimist@^1.1.3, minimist@^1.2.0, minimist@~1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284"
integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=
@ -6177,6 +6313,11 @@ multimatch@^2.1.0:
arrify "^1.0.0"
minimatch "^3.0.0"
murmurhash-js@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/murmurhash-js/-/murmurhash-js-1.0.0.tgz#b06278e21fc6c37fa5313732b0412bcb6ae15f51"
integrity sha1-sGJ44h/Gw3+lMTcysEEry2rhX1E=
mute-stream@0.0.7:
version "0.0.7"
resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab"
@ -7071,6 +7212,14 @@ path-type@^3.0.0:
dependencies:
pify "^3.0.0"
pbf@^3.0.5, pbf@^3.2.1:
version "3.2.1"
resolved "https://registry.yarnpkg.com/pbf/-/pbf-3.2.1.tgz#b4c1b9e72af966cd82c6531691115cc0409ffe2a"
integrity sha512-ClrV7pNOn7rtmoQVF4TS1vyU0WhYRnP92fzbfF75jAIwpnzdJXf8iTd4CMEqO4yUenH6NDqLiwjqlh6QgZzgLQ==
dependencies:
ieee754 "^1.1.12"
resolve-protobuf-schema "^2.1.0"
pbkdf2@^3.0.3:
version "3.0.17"
resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.17.tgz#976c206530617b14ebb32114239f7b09336e93a6"
@ -7174,6 +7323,11 @@ posix-character-classes@^0.1.0:
resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab"
integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=
potpack@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/potpack/-/potpack-1.0.1.tgz#d1b1afd89e4c8f7762865ec30bd112ab767e2ebf"
integrity sha512-15vItUAbViaYrmaB/Pbw7z6qX2xENbFSTA7Ii4tgbPtasxm5v6ryKhKtL91tpWovDJzTiZqdwzhcFBCwiMVdVw==
pre-commit@^1.2.2:
version "1.2.2"
resolved "https://registry.yarnpkg.com/pre-commit/-/pre-commit-1.2.2.tgz#dbcee0ee9de7235e57f79c56d7ce94641a69eec6"
@ -7311,6 +7465,11 @@ proto-list@~1.2.1:
resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849"
integrity sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk=
protocol-buffers-schema@^3.3.1:
version "3.3.2"
resolved "https://registry.yarnpkg.com/protocol-buffers-schema/-/protocol-buffers-schema-3.3.2.tgz#00434f608b4e8df54c59e070efeefc37fb4bb859"
integrity sha512-Xdayp8sB/mU+sUV4G7ws8xtYMGdQnxbeIfLjyO9TZZRJdztBGhlmbI5x1qcY4TG5hBkIKGnc28i7nXxaugu88w==
protocols@^1.1.0, protocols@^1.4.0:
version "1.4.7"
resolved "https://registry.yarnpkg.com/protocols/-/protocols-1.4.7.tgz#95f788a4f0e979b291ffefcf5636ad113d037d32"
@ -7460,6 +7619,11 @@ quick-lru@^1.0.0:
resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-1.1.0.tgz#4360b17c61136ad38078397ff11416e186dcfbb8"
integrity sha1-Q2CxfGETatOAeDl/8RQW4Ybc+7g=
quickselect@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/quickselect/-/quickselect-2.0.0.tgz#f19680a486a5eefb581303e023e98faaf25dd018"
integrity sha512-RKJ22hX8mHe3Y6wH/N3wCM6BWtjaxIyyUIkpHOvfFnxdI4yD4tBXEBKSbriGujF6jnSVkJrffuo6vxACiSSxIw==
randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5:
version "2.1.0"
resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a"
@ -7678,6 +7842,13 @@ redent@^2.0.0:
indent-string "^3.0.0"
strip-indent "^2.0.0"
redeyed@~0.4.0:
version "0.4.4"
resolved "https://registry.yarnpkg.com/redeyed/-/redeyed-0.4.4.tgz#37e990a6f2b21b2a11c2e6a48fd4135698cba97f"
integrity sha1-N+mQpvKyGyoRwuakj9QTVpjLqX8=
dependencies:
esprima "~1.0.4"
regenerate-unicode-properties@^8.0.2:
version "8.1.0"
resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.1.0.tgz#ef51e0f0ea4ad424b77bf7cb41f3e015c70a3f0e"
@ -7881,6 +8052,13 @@ resolve-from@^4.0.0:
resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6"
integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==
resolve-protobuf-schema@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/resolve-protobuf-schema/-/resolve-protobuf-schema-2.1.0.tgz#9ca9a9e69cf192bbdaf1006ec1973948aa4a3758"
integrity sha512-kI5ffTiZWmJaS/huM8wZfEMer1eRd7oJQhDuxeCLe3t7N7mX3z94CN0xPxBQxFYQTSNz9T0i+v6inKqSdK8xrQ==
dependencies:
protocol-buffers-schema "^3.3.1"
resolve-url@^0.2.1:
version "0.2.1"
resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a"
@ -7959,6 +8137,11 @@ run-queue@^1.0.0, run-queue@^1.0.3:
dependencies:
aproba "^1.1.1"
rw@^1.3.3:
version "1.3.3"
resolved "https://registry.yarnpkg.com/rw/-/rw-1.3.3.tgz#3f862dfa91ab766b14885ef4d01124bfda074fb4"
integrity sha1-P4Yt+pGrdmsUiF700BEkv9oHT7Q=
rx-lite-aggregates@^4.0.8:
version "4.0.8"
resolved "https://registry.yarnpkg.com/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz#753b87a89a11c95467c4ac1626c4efc4e05c67be"
@ -8149,6 +8332,15 @@ sha.js@^2.4.0, sha.js@^2.4.8:
inherits "^2.0.1"
safe-buffer "^5.0.1"
sharkdown@^0.1.0:
version "0.1.1"
resolved "https://registry.yarnpkg.com/sharkdown/-/sharkdown-0.1.1.tgz#64484bd0f08f347f8319e9ff947a670f6b48b1b2"
integrity sha512-exwooSpmo5s45lrexgz6Q0rFQM574wYIX3iDZ7RLLqOb7IAoQZu9nxlZODU972g19sR69OIpKP2cpHTzU+PHIg==
dependencies:
cardinal "~0.4.2"
minimist "0.0.5"
split "~0.2.10"
shebang-command@^1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea"
@ -8429,6 +8621,13 @@ split@^1.0.0:
dependencies:
through "2"
split@~0.2.10:
version "0.2.10"
resolved "https://registry.yarnpkg.com/split/-/split-0.2.10.tgz#67097c601d697ce1368f418f06cd201cf0521a57"
integrity sha1-Zwl8YB1pfOE2j0GPBs0gHPBSGlc=
dependencies:
through "2"
sprintf-js@~1.0.2:
version "1.0.3"
resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
@ -8615,6 +8814,13 @@ strong-log-transformer@^2.0.0:
minimist "^1.2.0"
through "^2.3.4"
supercluster@^6.0.1:
version "6.0.2"
resolved "https://registry.yarnpkg.com/supercluster/-/supercluster-6.0.2.tgz#aa2eaae185ef97872f388c683ec29f6991721ee3"
integrity sha512-aa0v2HURjBTOpbcknilcfxGDuArM8khklKSmZ/T8ZXL0BuRwb5aRw95lz+2bmWpFvCXDX/+FzqHxmg0TIaJErw==
dependencies:
kdbush "^3.0.0"
supports-color@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7"
@ -8827,6 +9033,11 @@ timers-browserify@^2.0.4:
dependencies:
setimmediate "^1.0.4"
tinyqueue@^2.0.0:
version "2.0.3"
resolved "https://registry.yarnpkg.com/tinyqueue/-/tinyqueue-2.0.3.tgz#64d8492ebf39e7801d7bd34062e29b45b2035f08"
integrity sha512-ppJZNDuKGgxzkHihX8v9v9G5f+18gzaTfrukGrq6ueg0lmH4nqVnA2IPG0AEH3jKEk2GRJCUhDoqpoiw3PHLBA==
tmp@^0.0.33:
version "0.0.33"
resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9"
@ -9200,6 +9411,15 @@ vm-browserify@0.0.4:
dependencies:
indexof "0.0.1"
vt-pbf@^3.1.1:
version "3.1.1"
resolved "https://registry.yarnpkg.com/vt-pbf/-/vt-pbf-3.1.1.tgz#b0f627e39a10ce91d943b898ed2363d21899fb82"
integrity sha512-pHjWdrIoxurpmTcbfBWXaPwSmtPAHS105253P1qyEfSTV2HJddqjM+kIHquaT/L6lVJIk9ltTGc0IxR/G47hYA==
dependencies:
"@mapbox/point-geometry" "0.1.0"
"@mapbox/vector-tile" "^1.3.1"
pbf "^3.0.5"
watchpack@^1.5.0:
version "1.6.0"
resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.6.0.tgz#4bc12c2ebe8aa277a71f1d3f14d685c7b446cd00"
@ -9376,6 +9596,11 @@ websocket-extensions@>=0.1.1:
resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.3.tgz#5d2ff22977003ec687a4b87073dfbbac146ccf29"
integrity sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg==
wgs84@0.0.0:
version "0.0.0"
resolved "https://registry.yarnpkg.com/wgs84/-/wgs84-0.0.0.tgz#34fdc555917b6e57cf2a282ed043710c049cdc76"
integrity sha1-NP3FVZF7blfPKigu0ENxDASc3HY=
whatwg-url@^7.0.0:
version "7.0.0"
resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-7.0.0.tgz#fde926fa54a599f3adf82dff25a9f7be02dc6edd"