diff --git a/examples/api/cubemap/app.js b/examples/api/cubemap/app.js
index 9a2bf629b..69f0a2f4a 100644
--- a/examples/api/cubemap/app.js
+++ b/examples/api/cubemap/app.js
@@ -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 = `
@@ -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);
diff --git a/examples/api/cubemap/package.json b/examples/api/cubemap/package.json
index 514c933e2..6c3d828e2 100644
--- a/examples/api/cubemap/package.json
+++ b/examples/api/cubemap/package.json
@@ -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",
diff --git a/examples/performance/stress-test/app.js b/examples/performance/stress-test/app.js
index 36d1533a4..7dbd152d9 100644
--- a/examples/performance/stress-test/app.js
+++ b/examples/performance/stress-test/app.js
@@ -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;
diff --git a/examples/showcase/dof/app.js b/examples/showcase/dof/app.js
index 63804ac0b..957986982 100644
--- a/examples/showcase/dof/app.js
+++ b/examples/showcase/dof/app.js
@@ -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;
}
`;
diff --git a/examples/showcase/geospatial/app.js b/examples/showcase/geospatial/app.js
new file mode 100644
index 000000000..b2f100247
--- /dev/null
+++ b/examples/showcase/geospatial/app.js
@@ -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 Mapbox basemap using the
+Mapbox GL JS custom layer API.
+`;
+
+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();
+}
diff --git a/examples/showcase/geospatial/package.json b/examples/showcase/geospatial/package.json
new file mode 100644
index 000000000..84bf782fd
--- /dev/null
+++ b/examples/showcase/geospatial/package.json
@@ -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"
+ }
+}
diff --git a/examples/showcase/geospatial/webpack.config.js b/examples/showcase/geospatial/webpack.config.js
new file mode 100644
index 000000000..aebca4db6
--- /dev/null
+++ b/examples/showcase/geospatial/webpack.config.js
@@ -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);
diff --git a/examples/utils/index.js b/examples/utils/index.js
index 107142b19..d63c0a663 100644
--- a/examples/utils/index.js
+++ b/examples/utils/index.js
@@ -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
diff --git a/package.json b/package.json
index d4a5bfadf..7d7fd156d 100644
--- a/package.json
+++ b/package.json
@@ -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",
diff --git a/website/gatsby-node.js b/website/gatsby-node.js
index 8d1b8bf10..f6adef0e8 100644
--- a/website/gatsby-node.js
+++ b/website/gatsby-node.js
@@ -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'
diff --git a/website/ocular-config.js b/website/ocular-config.js
index 79bb3d58f..968b07e4b 100644
--- a/website/ocular-config.js
+++ b/website/ocular-config.js
@@ -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'),
diff --git a/website/package.json b/website/package.json
index 5940630ff..e364c4803 100644
--- a/website/package.json
+++ b/website/package.json
@@ -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",
diff --git a/website/static/images/example-geospatial.jpg b/website/static/images/example-geospatial.jpg
new file mode 100644
index 000000000..989b14278
Binary files /dev/null and b/website/static/images/example-geospatial.jpg differ
diff --git a/website/templates/showcase/example-geospatial.jsx b/website/templates/showcase/example-geospatial.jsx
new file mode 100644
index 000000000..0d0aaa7e0
--- /dev/null
+++ b/website/templates/showcase/example-geospatial.jsx
@@ -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 (
+
+ );
+ }
+}
diff --git a/website/templates/style.css b/website/templates/style.css
index f60447b68..51b54109f 100644
--- a/website/templates/style.css
+++ b/website/templates/style.css
@@ -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;
diff --git a/yarn.lock b/yarn.lock
index 28d679685..c9a34c4f7 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -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"