diff --git a/superset-frontend/temporary_superset_ui/superset-ui-plugins-deckgl/package.json b/superset-frontend/temporary_superset_ui/superset-ui-plugins-deckgl/package.json
index db3ffcb2949c..d86b003fc244 100644
--- a/superset-frontend/temporary_superset_ui/superset-ui-plugins-deckgl/package.json
+++ b/superset-frontend/temporary_superset_ui/superset-ui-plugins-deckgl/package.json
@@ -47,7 +47,7 @@
"@airbnb/config-typescript": "^2.1.2",
"@airbnb/nimbus": "^2.1.3",
"@superset-ui/commit-config": "^0.0.9",
- "@superset-ui/superset-ui": "^0.13.9",
+ "@superset-ui/superset-ui": "^0.14.9",
"@types/enzyme": "^3.10.3",
"@types/jest": "^25.1.1",
"@types/jsdom": "^12.2.4",
@@ -119,7 +119,12 @@
"rules": {
"react/jsx-no-literals": "off",
"prefer-exponentiation-operator": "off",
- "@typescript-eslint/no-explicit-any": ["warn", { "fixToUnknown": false }]
+ "@typescript-eslint/no-explicit-any": [
+ "warn",
+ {
+ "fixToUnknown": false
+ }
+ ]
}
}
]
diff --git a/superset-frontend/temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl/package.json b/superset-frontend/temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl/package.json
index 71becb92b9de..db43bccdea37 100644
--- a/superset-frontend/temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl/package.json
+++ b/superset-frontend/temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl/package.json
@@ -46,14 +46,17 @@
"xss": "^1.0.6"
},
"peerDependencies": {
- "@superset-ui/chart": "^0.12.0 || ^0.13.3",
- "@superset-ui/color": "^0.12.0 || ^0.13.3",
- "@superset-ui/connection": "^0.12.0 || ^0.13.3",
- "@superset-ui/core": "^0.12.0 || ^0.13.3",
- "@superset-ui/dimension": "^0.12.0 || ^0.13.3",
- "@superset-ui/number-format": "^0.12.0 || ^0.13.3",
- "@superset-ui/time-format": "^0.12.0 || ^0.13.3",
- "@superset-ui/translation": "^0.12.0 || ^0.13.3",
+ "@superset-ui/chart": "^0.14.9",
+ "@superset-ui/chart-controls": "^0.14.9",
+ "@superset-ui/color": "^0.14.9",
+ "@superset-ui/connection": "^0.14.9",
+ "@superset-ui/core": "^0.14.9",
+ "@superset-ui/dimension": "^0.14.9",
+ "@superset-ui/number-format": "^0.14.9",
+ "@superset-ui/style": "^0.14.9",
+ "@superset-ui/time-format": "^0.14.9",
+ "@superset-ui/translation": "^0.14.9",
+ "@superset-ui/validator": "^0.14.9",
"react": "^15 || ^16"
}
}
diff --git a/superset-frontend/temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl/src/DeckGLContainer.jsx b/superset-frontend/temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl/src/DeckGLContainer.jsx
index 94ef8cc7c13e..6c974400fa0f 100644
--- a/superset-frontend/temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl/src/DeckGLContainer.jsx
+++ b/superset-frontend/temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl/src/DeckGLContainer.jsx
@@ -24,6 +24,7 @@ import React from 'react';
import PropTypes from 'prop-types';
import { StaticMap } from 'react-map-gl';
import DeckGL from 'deck.gl';
+import styled from '@superset-ui/style';
// eslint-disable-next-line import/extensions
import Tooltip from './components/Tooltip';
import 'mapbox-gl/dist/mapbox-gl.css';
@@ -49,7 +50,7 @@ const defaultProps = {
bottomMargin: 0,
};
-export default class DeckGLContainer extends React.Component {
+class DeckGLContainer extends React.Component {
constructor(props) {
super(props);
this.tick = this.tick.bind(this);
@@ -129,3 +130,10 @@ export default class DeckGLContainer extends React.Component {
DeckGLContainer.propTypes = propTypes;
DeckGLContainer.defaultProps = defaultProps;
+
+export default styled(DeckGLContainer)`
+ .deckgl-tooltip > div {
+ overflow: hidden;
+ text-overflow: ellipsis;
+ }
+`;
diff --git a/superset-frontend/temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl/src/layers/Arc/controlPanel.js b/superset-frontend/temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl/src/layers/Arc/controlPanel.js
new file mode 100644
index 000000000000..93b7a417bf4f
--- /dev/null
+++ b/superset-frontend/temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl/src/layers/Arc/controlPanel.js
@@ -0,0 +1,137 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+import { t } from '@superset-ui/translation';
+import { validateNonEmpty, legacyValidateInteger } from '@superset-ui/validator';
+import timeGrainSqlaAnimationOverrides, {
+ columnChoices,
+ PRIMARY_COLOR,
+} from '../../utilities/controls';
+import { formatSelectOptions } from '../../utilities/utils';
+import {
+ filterNulls,
+ autozoom,
+ dimension,
+ jsColumns,
+ jsDataMutator,
+ jsTooltip,
+ jsOnclickHref,
+ legendFormat,
+ legendPosition,
+ viewport,
+ mapboxStyle,
+} from '../../utilities/Shared_DeckGL';
+
+export default {
+ controlPanelSections: [
+ {
+ label: t('Query'),
+ expanded: true,
+ controlSetRows: [
+ [
+ {
+ name: 'start_spatial',
+ config: {
+ type: 'SpatialControl',
+ label: t('Start Longitude & Latitude'),
+ validators: [validateNonEmpty],
+ description: t('Point to your spatial columns'),
+ mapStateToProps: state => ({
+ choices: columnChoices(state.datasource),
+ }),
+ },
+ },
+ {
+ name: 'end_spatial',
+ config: {
+ type: 'SpatialControl',
+ label: t('End Longitude & Latitude'),
+ validators: [validateNonEmpty],
+ description: t('Point to your spatial columns'),
+ mapStateToProps: state => ({
+ choices: columnChoices(state.datasource),
+ }),
+ },
+ },
+ ],
+ ['row_limit', filterNulls],
+ ['adhoc_filters'],
+ ],
+ },
+ {
+ label: t('Map'),
+ controlSetRows: [
+ [mapboxStyle, viewport],
+ [autozoom, null],
+ ],
+ },
+ {
+ label: t('Arc'),
+ controlSetRows: [
+ [
+ 'color_picker',
+ {
+ name: 'target_color_picker',
+ config: {
+ label: t('Target Color'),
+ description: t('Color of the target location'),
+ type: 'ColorPickerControl',
+ default: PRIMARY_COLOR,
+ renderTrigger: true,
+ },
+ },
+ ],
+ [
+ {
+ ...dimension,
+ label: t('Categorical Color'),
+ description: t('Pick a dimension from which categorical colors are defined'),
+ },
+ 'color_scheme',
+ 'label_colors',
+ ],
+ [
+ {
+ name: 'stroke_width',
+ color: {
+ type: 'SelectControl',
+ freeForm: true,
+ label: t('Stroke Width'),
+ validators: [legacyValidateInteger],
+ default: null,
+ renderTrigger: true,
+ choices: formatSelectOptions([1, 2, 3, 4, 5]),
+ },
+ },
+ legendPosition,
+ ],
+ [legendFormat, null],
+ ],
+ },
+ {
+ label: t('Advanced'),
+ controlSetRows: [[jsColumns], [jsDataMutator], [jsTooltip], [jsOnclickHref]],
+ },
+ ],
+ controlOverrides: {
+ size: {
+ validators: [],
+ },
+ time_grain_sqla: timeGrainSqlaAnimationOverrides,
+ },
+};
diff --git a/superset-frontend/temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl/src/layers/Arc/index.js b/superset-frontend/temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl/src/layers/Arc/index.js
index 5c527227fc3f..d46296d9d11b 100644
--- a/superset-frontend/temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl/src/layers/Arc/index.js
+++ b/superset-frontend/temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl/src/layers/Arc/index.js
@@ -20,6 +20,7 @@ import { t } from '@superset-ui/translation';
import { ChartMetadata, ChartPlugin } from '@superset-ui/chart';
import thumbnail from './images/thumbnail.png';
import transformProps from '../../transformProps';
+import controlPanel from './controlPanel';
const metadata = new ChartMetadata({
credits: ['https://uber.github.io/deck.gl'],
@@ -33,6 +34,7 @@ export default class ArcChartPlugin extends ChartPlugin {
constructor() {
super({
loadChart: () => import('./Arc'),
+ controlPanel,
metadata,
transformProps,
});
diff --git a/superset-frontend/temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl/src/layers/Geojson/controlPanel.js b/superset-frontend/temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl/src/layers/Geojson/controlPanel.js
new file mode 100644
index 000000000000..f31a4431b739
--- /dev/null
+++ b/superset-frontend/temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl/src/layers/Geojson/controlPanel.js
@@ -0,0 +1,97 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+import { t } from '@superset-ui/translation';
+import { validateNonEmpty, legacyValidateInteger } from '@superset-ui/validator';
+import { formatSelectOptions } from '../../utilities/utils';
+import { columnChoices } from '../../utilities/controls';
+import {
+ filterNulls,
+ jsColumns,
+ jsDataMutator,
+ jsTooltip,
+ jsOnclickHref,
+ fillColorPicker,
+ strokeColorPicker,
+ filled,
+ stroked,
+ extruded,
+ viewport,
+ mapboxStyle,
+} from '../../utilities/Shared_DeckGL';
+
+export default {
+ controlPanelSections: [
+ {
+ label: t('Query'),
+ expanded: true,
+ controlSetRows: [
+ [
+ {
+ name: 'geojson',
+ config: {
+ type: 'SelectControl',
+ label: t('GeoJson Column'),
+ validators: [validateNonEmpty],
+ description: t('Select the geojson column'),
+ mapStateToProps: state => ({
+ choices: columnChoices(state.datasource),
+ }),
+ },
+ },
+ null,
+ ],
+ ['row_limit', filterNulls],
+ ['adhoc_filters'],
+ ],
+ },
+ {
+ label: t('Map'),
+ controlSetRows: [
+ [mapboxStyle, viewport],
+ // TODO [autozoom, null], // import { autozoom } from './Shared_DeckGL'
+ ],
+ },
+ {
+ label: t('GeoJson Settings'),
+ controlSetRows: [
+ [fillColorPicker, strokeColorPicker],
+ [filled, stroked],
+ [extruded, null],
+ [
+ {
+ name: 'point_radius_scale',
+ config: {
+ type: 'SelectControl',
+ freeForm: true,
+ label: t('Point Radius Scale'),
+ validators: [legacyValidateInteger],
+ default: null,
+ choices: formatSelectOptions([0, 100, 200, 300, 500]),
+ },
+ },
+ null,
+ ],
+ ],
+ },
+ {
+ label: t('Advanced'),
+ controlSetRows: [[jsColumns], [jsDataMutator], [jsTooltip], [jsOnclickHref]],
+ },
+ ],
+};
diff --git a/superset-frontend/temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl/src/layers/Geojson/index.js b/superset-frontend/temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl/src/layers/Geojson/index.js
index d8dd156e66e1..de1bc44262c6 100644
--- a/superset-frontend/temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl/src/layers/Geojson/index.js
+++ b/superset-frontend/temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl/src/layers/Geojson/index.js
@@ -20,6 +20,7 @@ import { t } from '@superset-ui/translation';
import { ChartMetadata, ChartPlugin } from '@superset-ui/chart';
import thumbnail from './images/thumbnail.png';
import transformProps from '../../transformProps';
+import controlPanel from './controlPanel';
const metadata = new ChartMetadata({
credits: ['https://uber.github.io/deck.gl'],
@@ -33,6 +34,7 @@ export default class GeojsonChartPlugin extends ChartPlugin {
constructor() {
super({
loadChart: () => import('./Geojson'),
+ controlPanel,
metadata,
transformProps,
});
diff --git a/superset-frontend/temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl/src/layers/Grid/controlPanel.js b/superset-frontend/temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl/src/layers/Grid/controlPanel.js
new file mode 100644
index 000000000000..aa0447be75f7
--- /dev/null
+++ b/superset-frontend/temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl/src/layers/Grid/controlPanel.js
@@ -0,0 +1,62 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+import { t } from '@superset-ui/translation';
+import { validateNonEmpty } from '@superset-ui/validator';
+import {
+ filterNulls,
+ autozoom,
+ jsColumns,
+ jsDataMutator,
+ jsTooltip,
+ jsOnclickHref,
+ extruded,
+ gridSize,
+ viewport,
+ spatial,
+ mapboxStyle,
+} from '../../utilities/Shared_DeckGL';
+
+export default {
+ controlPanelSections: [
+ {
+ label: t('Query'),
+ expanded: true,
+ controlSetRows: [[spatial, 'size'], ['row_limit', filterNulls], ['adhoc_filters']],
+ },
+ {
+ label: t('Map'),
+ controlSetRows: [
+ [mapboxStyle, viewport],
+ ['color_picker', autozoom],
+ [gridSize, extruded],
+ ],
+ },
+ {
+ label: t('Advanced'),
+ controlSetRows: [[jsColumns], [jsDataMutator], [jsTooltip], [jsOnclickHref]],
+ },
+ ],
+ controlOverrides: {
+ size: {
+ label: t('Height'),
+ description: t('Metric used to control height'),
+ validators: [validateNonEmpty],
+ },
+ },
+};
diff --git a/superset-frontend/temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl/src/layers/Grid/index.js b/superset-frontend/temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl/src/layers/Grid/index.js
index 631c0d5c779a..3571c05ad88a 100644
--- a/superset-frontend/temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl/src/layers/Grid/index.js
+++ b/superset-frontend/temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl/src/layers/Grid/index.js
@@ -20,6 +20,7 @@ import { t } from '@superset-ui/translation';
import { ChartMetadata, ChartPlugin } from '@superset-ui/chart';
import thumbnail from './images/thumbnail.png';
import transformProps from '../../transformProps';
+import controlPanel from './controlPanel';
const metadata = new ChartMetadata({
credits: ['https://uber.github.io/deck.gl'],
@@ -33,6 +34,7 @@ export default class GridChartPlugin extends ChartPlugin {
constructor() {
super({
loadChart: () => import('./Grid'),
+ controlPanel,
metadata,
transformProps,
});
diff --git a/superset-frontend/temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl/src/layers/Hex/controlPanel.js b/superset-frontend/temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl/src/layers/Hex/controlPanel.js
new file mode 100644
index 000000000000..f31a4431b739
--- /dev/null
+++ b/superset-frontend/temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl/src/layers/Hex/controlPanel.js
@@ -0,0 +1,97 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+import { t } from '@superset-ui/translation';
+import { validateNonEmpty, legacyValidateInteger } from '@superset-ui/validator';
+import { formatSelectOptions } from '../../utilities/utils';
+import { columnChoices } from '../../utilities/controls';
+import {
+ filterNulls,
+ jsColumns,
+ jsDataMutator,
+ jsTooltip,
+ jsOnclickHref,
+ fillColorPicker,
+ strokeColorPicker,
+ filled,
+ stroked,
+ extruded,
+ viewport,
+ mapboxStyle,
+} from '../../utilities/Shared_DeckGL';
+
+export default {
+ controlPanelSections: [
+ {
+ label: t('Query'),
+ expanded: true,
+ controlSetRows: [
+ [
+ {
+ name: 'geojson',
+ config: {
+ type: 'SelectControl',
+ label: t('GeoJson Column'),
+ validators: [validateNonEmpty],
+ description: t('Select the geojson column'),
+ mapStateToProps: state => ({
+ choices: columnChoices(state.datasource),
+ }),
+ },
+ },
+ null,
+ ],
+ ['row_limit', filterNulls],
+ ['adhoc_filters'],
+ ],
+ },
+ {
+ label: t('Map'),
+ controlSetRows: [
+ [mapboxStyle, viewport],
+ // TODO [autozoom, null], // import { autozoom } from './Shared_DeckGL'
+ ],
+ },
+ {
+ label: t('GeoJson Settings'),
+ controlSetRows: [
+ [fillColorPicker, strokeColorPicker],
+ [filled, stroked],
+ [extruded, null],
+ [
+ {
+ name: 'point_radius_scale',
+ config: {
+ type: 'SelectControl',
+ freeForm: true,
+ label: t('Point Radius Scale'),
+ validators: [legacyValidateInteger],
+ default: null,
+ choices: formatSelectOptions([0, 100, 200, 300, 500]),
+ },
+ },
+ null,
+ ],
+ ],
+ },
+ {
+ label: t('Advanced'),
+ controlSetRows: [[jsColumns], [jsDataMutator], [jsTooltip], [jsOnclickHref]],
+ },
+ ],
+};
diff --git a/superset-frontend/temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl/src/layers/Hex/index.js b/superset-frontend/temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl/src/layers/Hex/index.js
index 14ab40375e90..759eb6a813d2 100644
--- a/superset-frontend/temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl/src/layers/Hex/index.js
+++ b/superset-frontend/temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl/src/layers/Hex/index.js
@@ -20,6 +20,7 @@ import { t } from '@superset-ui/translation';
import { ChartMetadata, ChartPlugin } from '@superset-ui/chart';
import thumbnail from './images/thumbnail.png';
import transformProps from '../../transformProps';
+import controlPanel from './controlPanel';
const metadata = new ChartMetadata({
credits: ['https://uber.github.io/deck.gl'],
@@ -33,6 +34,7 @@ export default class HexChartPlugin extends ChartPlugin {
constructor() {
super({
loadChart: () => import('./Hex'),
+ controlPanel,
metadata,
transformProps,
});
diff --git a/superset-frontend/temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl/src/layers/Path/controlPanel.js b/superset-frontend/temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl/src/layers/Path/controlPanel.js
new file mode 100644
index 000000000000..430153718194
--- /dev/null
+++ b/superset-frontend/temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl/src/layers/Path/controlPanel.js
@@ -0,0 +1,69 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+import { t } from '@superset-ui/translation';
+import {
+ filterNulls,
+ autozoom,
+ jsColumns,
+ jsDataMutator,
+ jsTooltip,
+ jsOnclickHref,
+ lineColumn,
+ viewport,
+ lineWidth,
+ lineType,
+ reverseLongLat,
+ mapboxStyle,
+} from '../../utilities/Shared_DeckGL';
+
+export default {
+ controlPanelSections: [
+ {
+ label: t('Query'),
+ expanded: true,
+ controlSetRows: [
+ [
+ lineColumn,
+ {
+ ...lineType,
+ choices: [
+ ['polyline', 'Polyline'],
+ ['json', 'JSON'],
+ ],
+ },
+ ],
+ ['row_limit', filterNulls],
+ ['adhoc_filters'],
+ ],
+ },
+ {
+ label: t('Map'),
+ expanded: true,
+ controlSetRows: [
+ [mapboxStyle, viewport],
+ ['color_picker', lineWidth],
+ [reverseLongLat, autozoom],
+ ],
+ },
+ {
+ label: t('Advanced'),
+ controlSetRows: [[jsColumns], [jsDataMutator], [jsTooltip], [jsOnclickHref]],
+ },
+ ],
+};
diff --git a/superset-frontend/temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl/src/layers/Path/index.js b/superset-frontend/temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl/src/layers/Path/index.js
index 0dce4bebedf6..b2b0a7f802f0 100644
--- a/superset-frontend/temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl/src/layers/Path/index.js
+++ b/superset-frontend/temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl/src/layers/Path/index.js
@@ -20,6 +20,7 @@ import { t } from '@superset-ui/translation';
import { ChartMetadata, ChartPlugin } from '@superset-ui/chart';
import thumbnail from './images/thumbnail.png';
import transformProps from '../../transformProps';
+import controlPanel from './controlPanel';
const metadata = new ChartMetadata({
credits: ['https://uber.github.io/deck.gl'],
@@ -33,6 +34,7 @@ export default class PathChartPlugin extends ChartPlugin {
constructor() {
super({
loadChart: () => import('./Path'),
+ controlPanel,
metadata,
transformProps,
});
diff --git a/superset-frontend/temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl/src/layers/Polygon/controlPanel.js b/superset-frontend/temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl/src/layers/Polygon/controlPanel.js
new file mode 100644
index 000000000000..3aafae56d801
--- /dev/null
+++ b/superset-frontend/temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl/src/layers/Polygon/controlPanel.js
@@ -0,0 +1,157 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+import { t } from '@superset-ui/translation';
+import timeGrainSqlaAnimationOverrides from '../../utilities/controls';
+import { formatSelectOptions } from '../../utilities/utils';
+import {
+ filterNulls,
+ autozoom,
+ jsColumns,
+ jsDataMutator,
+ jsTooltip,
+ jsOnclickHref,
+ legendFormat,
+ legendPosition,
+ lineColumn,
+ fillColorPicker,
+ strokeColorPicker,
+ filled,
+ stroked,
+ extruded,
+ viewport,
+ pointRadiusFixed,
+ multiplier,
+ lineWidth,
+ lineType,
+ reverseLongLat,
+ mapboxStyle,
+} from '../../utilities/Shared_DeckGL';
+
+export default {
+ controlPanelSections: [
+ {
+ label: t('Query'),
+ expanded: true,
+ controlSetRows: [
+ [
+ { ...lineColumn, label: t('Polygon Column') },
+ { ...lineType, label: t('Polygon Encoding') },
+ ],
+ ['adhoc_filters'],
+ ['metric', { ...pointRadiusFixed, label: t('Elevation') }],
+ ['row_limit', null],
+ [reverseLongLat, filterNulls],
+ ],
+ },
+ {
+ label: t('Map'),
+ expanded: true,
+ controlSetRows: [
+ [mapboxStyle, viewport],
+ [autozoom, null],
+ ],
+ },
+ {
+ label: t('Polygon Settings'),
+ expanded: true,
+ controlSetRows: [
+ [fillColorPicker, strokeColorPicker],
+ [filled, stroked],
+ [extruded, multiplier],
+ [lineWidth, null],
+ [
+ 'linear_color_scheme',
+ {
+ name: 'opacity',
+ config: {
+ type: 'SliderControl',
+ label: t('Opacity'),
+ default: 80,
+ step: 1,
+ min: 0,
+ max: 100,
+ renderTrigger: true,
+ description: t('Opacity, expects values between 0 and 100'),
+ },
+ },
+ ],
+ [
+ {
+ name: 'num_buckets',
+ config: {
+ type: 'SelectControl',
+ multi: false,
+ freeForm: true,
+ label: t('Number of buckets to group data'),
+ default: 5,
+ choices: formatSelectOptions([2, 3, 5, 10]),
+ description: t('How many buckets should the data be grouped in.'),
+ renderTrigger: true,
+ },
+ },
+ {
+ name: 'break_points',
+ config: {
+ type: 'SelectControl',
+ multi: true,
+ freeForm: true,
+ label: t('Bucket break points'),
+ choices: formatSelectOptions([]),
+ description: t('List of n+1 values for bucketing metric into n buckets.'),
+ renderTrigger: true,
+ },
+ },
+ ],
+ [
+ {
+ name: 'table_filter',
+ config: {
+ type: 'CheckboxControl',
+ label: t('Emit Filter Events'),
+ renderTrigger: true,
+ default: false,
+ description: t('Whether to apply filter when items are clicked'),
+ },
+ },
+ {
+ name: 'toggle_polygons',
+ config: {
+ type: 'CheckboxControl',
+ label: t('Multiple filtering'),
+ renderTrigger: true,
+ default: true,
+ description: t('Allow sending multiple polygons as a filter event'),
+ },
+ },
+ ],
+ [legendPosition, legendFormat],
+ ],
+ },
+ {
+ label: t('Advanced'),
+ controlSetRows: [[jsColumns], [jsDataMutator], [jsTooltip], [jsOnclickHref]],
+ },
+ ],
+ controlOverrides: {
+ metric: {
+ validators: [],
+ },
+ time_grain_sqla: timeGrainSqlaAnimationOverrides,
+ },
+};
diff --git a/superset-frontend/temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl/src/layers/Polygon/index.js b/superset-frontend/temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl/src/layers/Polygon/index.js
index a99430e69e64..ec0793dbf9cc 100644
--- a/superset-frontend/temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl/src/layers/Polygon/index.js
+++ b/superset-frontend/temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl/src/layers/Polygon/index.js
@@ -20,6 +20,7 @@ import { t } from '@superset-ui/translation';
import { ChartMetadata, ChartPlugin } from '@superset-ui/chart';
import thumbnail from './images/thumbnail.png';
import transformProps from '../../transformProps';
+import controlPanel from './controlPanel';
const metadata = new ChartMetadata({
credits: ['https://uber.github.io/deck.gl'],
@@ -33,6 +34,7 @@ export default class PolygonChartPlugin extends ChartPlugin {
constructor() {
super({
loadChart: () => import('./Polygon'),
+ controlPanel,
metadata,
transformProps,
});
diff --git a/superset-frontend/temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl/src/layers/Scatter/controlPanel.js b/superset-frontend/temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl/src/layers/Scatter/controlPanel.js
new file mode 100644
index 000000000000..8d2bc51303f0
--- /dev/null
+++ b/superset-frontend/temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl/src/layers/Scatter/controlPanel.js
@@ -0,0 +1,151 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+import { t } from '@superset-ui/translation';
+import { validateNonEmpty } from '@superset-ui/validator';
+import timeGrainSqlaAnimationOverrides from '../../utilities/controls';
+import {
+ filterNulls,
+ autozoom,
+ dimension,
+ jsColumns,
+ jsDataMutator,
+ jsTooltip,
+ jsOnclickHref,
+ legendFormat,
+ legendPosition,
+ viewport,
+ spatial,
+ pointRadiusFixed,
+ multiplier,
+ mapboxStyle,
+} from '../../utilities/Shared_DeckGL';
+
+export default {
+ onInit: controlState => ({
+ ...controlState,
+ time_grain_sqla: {
+ ...controlState.time_grain_sqla,
+ value: null,
+ },
+ granularity: {
+ ...controlState.granularity,
+ value: null,
+ },
+ }),
+ controlPanelSections: [
+ {
+ label: t('Query'),
+ expanded: true,
+ controlSetRows: [[spatial, null], ['row_limit', filterNulls], ['adhoc_filters']],
+ },
+ {
+ label: t('Map'),
+ expanded: true,
+ controlSetRows: [
+ [mapboxStyle, viewport],
+ [autozoom, null],
+ ],
+ },
+ {
+ label: t('Point Size'),
+ controlSetRows: [
+ [
+ pointRadiusFixed,
+ {
+ name: 'point_unit',
+ config: {
+ type: 'SelectControl',
+ label: t('Point Unit'),
+ default: 'square_m',
+ clearable: false,
+ choices: [
+ ['square_m', 'Square meters'],
+ ['square_km', 'Square kilometers'],
+ ['square_miles', 'Square miles'],
+ ['radius_m', 'Radius in meters'],
+ ['radius_km', 'Radius in kilometers'],
+ ['radius_miles', 'Radius in miles'],
+ ],
+ description: t('The unit of measure for the specified point radius'),
+ },
+ },
+ ],
+ [
+ {
+ name: 'min_radius',
+ config: {
+ type: 'TextControl',
+ label: t('Minimum Radius'),
+ isFloat: true,
+ validators: [validateNonEmpty],
+ renderTrigger: true,
+ default: 2,
+ description: t(
+ 'Minimum radius size of the circle, in pixels. As the zoom level changes, this ' +
+ 'insures that the circle respects this minimum radius.',
+ ),
+ },
+ },
+ {
+ name: 'max_radius',
+ config: {
+ type: 'TextControl',
+ label: t('Maximum Radius'),
+ isFloat: true,
+ validators: [validateNonEmpty],
+ renderTrigger: true,
+ default: 250,
+ description: t(
+ 'Maxium radius size of the circle, in pixels. As the zoom level changes, this ' +
+ 'insures that the circle respects this maximum radius.',
+ ),
+ },
+ },
+ ],
+ [multiplier, null],
+ ],
+ },
+ {
+ label: t('Point Color'),
+ controlSetRows: [
+ ['color_picker', legendPosition],
+ [null, legendFormat],
+ [
+ {
+ ...dimension,
+ label: t('Categorical Color'),
+ description: t('Pick a dimension from which categorical colors are defined'),
+ },
+ 'color_scheme',
+ 'label_colors',
+ ],
+ ],
+ },
+ {
+ label: t('Advanced'),
+ controlSetRows: [[jsColumns], [jsDataMutator], [jsTooltip], [jsOnclickHref]],
+ },
+ ],
+ controlOverrides: {
+ size: {
+ validators: [],
+ },
+ time_grain_sqla: timeGrainSqlaAnimationOverrides,
+ },
+};
diff --git a/superset-frontend/temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl/src/layers/Scatter/index.js b/superset-frontend/temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl/src/layers/Scatter/index.js
index 6e574d1437c8..f3f7ec30af82 100644
--- a/superset-frontend/temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl/src/layers/Scatter/index.js
+++ b/superset-frontend/temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl/src/layers/Scatter/index.js
@@ -20,6 +20,7 @@ import { t } from '@superset-ui/translation';
import { ChartMetadata, ChartPlugin } from '@superset-ui/chart';
import thumbnail from './images/thumbnail.png';
import transformProps from '../../transformProps';
+import controlPanel from './controlPanel';
const metadata = new ChartMetadata({
credits: ['https://uber.github.io/deck.gl'],
@@ -33,6 +34,7 @@ export default class ScatterChartPlugin extends ChartPlugin {
constructor() {
super({
loadChart: () => import('./Scatter'),
+ controlPanel,
metadata,
transformProps,
});
diff --git a/superset-frontend/temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl/src/layers/Screengrid/controlPanel.js b/superset-frontend/temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl/src/layers/Screengrid/controlPanel.js
new file mode 100644
index 000000000000..2747313a6526
--- /dev/null
+++ b/superset-frontend/temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl/src/layers/Screengrid/controlPanel.js
@@ -0,0 +1,67 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+import { t } from '@superset-ui/translation';
+import { validateNonEmpty } from '@superset-ui/validator';
+import timeGrainSqlaAnimationOverrides from '../../utilities/controls';
+import {
+ filterNulls,
+ autozoom,
+ jsColumns,
+ jsDataMutator,
+ jsTooltip,
+ jsOnclickHref,
+ gridSize,
+ viewport,
+ spatial,
+ mapboxStyle,
+} from '../../utilities/Shared_DeckGL';
+
+export default {
+ controlPanelSections: [
+ {
+ label: t('Query'),
+ expanded: true,
+ controlSetRows: [[spatial, 'size'], ['row_limit', filterNulls], ['adhoc_filters']],
+ },
+ {
+ label: t('Map'),
+ controlSetRows: [
+ [mapboxStyle, viewport],
+ [autozoom, null],
+ ],
+ },
+ {
+ label: t('Grid'),
+ expanded: true,
+ controlSetRows: [[gridSize, 'color_picker']],
+ },
+ {
+ label: t('Advanced'),
+ controlSetRows: [[jsColumns], [jsDataMutator], [jsTooltip], [jsOnclickHref]],
+ },
+ ],
+ controlOverrides: {
+ size: {
+ label: t('Weight'),
+ description: t("Metric used as a weight for the grid's coloring"),
+ validators: [validateNonEmpty],
+ },
+ time_grain_sqla: timeGrainSqlaAnimationOverrides,
+ },
+};
diff --git a/superset-frontend/temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl/src/layers/Screengrid/index.js b/superset-frontend/temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl/src/layers/Screengrid/index.js
index 50e95638d826..5c1848fb091f 100644
--- a/superset-frontend/temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl/src/layers/Screengrid/index.js
+++ b/superset-frontend/temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl/src/layers/Screengrid/index.js
@@ -20,6 +20,7 @@ import { t } from '@superset-ui/translation';
import { ChartMetadata, ChartPlugin } from '@superset-ui/chart';
import thumbnail from './images/thumbnail.png';
import transformProps from '../../transformProps';
+import controlPanel from './controlPanel';
const metadata = new ChartMetadata({
credits: ['https://uber.github.io/deck.gl'],
@@ -33,6 +34,7 @@ export default class ScreengridChartPlugin extends ChartPlugin {
constructor() {
super({
loadChart: () => import('./Screengrid'),
+ controlPanel,
metadata,
transformProps,
});
diff --git a/superset-frontend/temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl/src/utilities/Shared_DeckGL.jsx b/superset-frontend/temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl/src/utilities/Shared_DeckGL.jsx
new file mode 100644
index 000000000000..2ca1714ffe75
--- /dev/null
+++ b/superset-frontend/temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl/src/utilities/Shared_DeckGL.jsx
@@ -0,0 +1,403 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+// These are control configurations that are shared ONLY within the DeckGL viz plugin repo.
+
+import React from 'react';
+import { t } from '@superset-ui/translation';
+import { validateNonEmpty } from '@superset-ui/validator';
+import { ColumnOption } from '@superset-ui/chart-controls';
+import { D3_FORMAT_OPTIONS, columnChoices, PRIMARY_COLOR } from './controls';
+
+const timeColumnOption = {
+ verbose_name: 'Time',
+ column_name: '__timestamp',
+ // eslint-disable-next-line no-useless-concat
+ description: t('A reference to the [Time] configuration, taking granularity into ' + 'account'),
+};
+
+const DEFAULT_VIEWPORT = {
+ longitude: 6.85236157047845,
+ latitude: 31.222656842808707,
+ zoom: 1,
+ bearing: 0,
+ pitch: 0,
+};
+
+const groupByControl = {
+ type: 'SelectControl',
+ multi: true,
+ freeForm: true,
+ label: t('Group by'),
+ default: [],
+ includeTime: false,
+ description: t('One or many controls to group by'),
+ optionRenderer: c => ,
+ valueRenderer: c => ,
+ valueKey: 'column_name',
+ allowAll: true,
+ filterOption: (opt, text) =>
+ (opt.column_name && opt.column_name.toLowerCase().includes(text.toLowerCase())) ||
+ (opt.verbose_name && opt.verbose_name.toLowerCase().includes(text.toLowerCase())),
+ promptTextCreator: label => label,
+ mapStateToProps: (state, control) => {
+ const newState = {};
+ if (state.datasource) {
+ newState.options = state.datasource.columns.filter(c => c.groupby);
+ if (control && control.includeTime) {
+ newState.options.push(timeColumnOption);
+ }
+ }
+ return newState;
+ },
+ commaChoosesOption: false,
+};
+
+const sandboxUrl =
+ 'https://github.com/apache/incubator-superset/' +
+ 'blob/master/superset-frontend/src/modules/sandbox.js';
+const jsFunctionInfo = (
+
+);
+
+function jsFunctionControl(label, description, extraDescr = null, height = 100, defaultText = '') {
+ return {
+ type: 'TextAreaControl',
+ language: 'javascript',
+ label,
+ description,
+ height,
+ default: defaultText,
+ aboveEditorSection: (
+
+
{description}
+
{jsFunctionInfo}
+ {extraDescr}
+
+ ),
+ mapStateToProps: state => ({
+ // eslint-disable-next-line no-negated-condition
+ warning: !state.common.conf.ENABLE_JAVASCRIPT_CONTROLS
+ ? t('This functionality is disabled in your environment for security reasons.')
+ : null,
+ readOnly: !state.common.conf.ENABLE_JAVASCRIPT_CONTROLS,
+ }),
+ };
+}
+
+export const filterNulls = {
+ name: 'filter_nulls',
+ config: {
+ type: 'CheckboxControl',
+ label: t('Ignore null locations'),
+ default: true,
+ description: t('Whether to ignore locations that are null'),
+ },
+};
+
+export const autozoom = {
+ name: 'autozoom',
+ config: {
+ type: 'CheckboxControl',
+ label: t('Auto Zoom'),
+ default: true,
+ renderTrigger: true,
+ description: t('When checked, the map will zoom to your data after each query'),
+ },
+};
+
+export const dimension = {
+ name: 'dimension',
+ config: {
+ ...groupByControl,
+ label: t('Dimension'),
+ description: t('Select a dimension'),
+ multi: false,
+ default: null,
+ },
+};
+
+export const jsColumns = {
+ name: 'js_columns',
+ config: {
+ ...groupByControl,
+ label: t('Extra data for JS'),
+ default: [],
+ description: t('List of extra columns made available in Javascript functions'),
+ },
+};
+
+export const jsDataMutator = {
+ name: 'js_data_mutator',
+ config: jsFunctionControl(
+ t('Javascript data interceptor'),
+ t(
+ 'Define a javascript function that receives the data array used in the visualization ' +
+ 'and is expected to return a modified version of that array. This can be used ' +
+ 'to alter properties of the data, filter, or enrich the array.',
+ ),
+ ),
+};
+
+export const jsTooltip = {
+ name: 'js_tooltip',
+ config: jsFunctionControl(
+ t('Javascript tooltip generator'),
+ t('Define a function that receives the input and outputs the content for a tooltip'),
+ ),
+};
+
+export const jsOnclickHref = {
+ name: 'js_onclick_href',
+ config: jsFunctionControl(
+ t('Javascript onClick href'),
+ t('Define a function that returns a URL to navigate to when user clicks'),
+ ),
+};
+
+export const legendFormat = {
+ name: 'legend_format',
+ config: {
+ label: t('Legend Format'),
+ description: t('Choose the format for legend values'),
+ type: 'SelectControl',
+ clearable: false,
+ default: D3_FORMAT_OPTIONS[0],
+ choices: D3_FORMAT_OPTIONS,
+ renderTrigger: true,
+ },
+};
+
+export const legendPosition = {
+ name: 'legend_position',
+ config: {
+ label: t('Legend Position'),
+ description: t('Choose the position of the legend'),
+ type: 'SelectControl',
+ clearable: false,
+ default: 'tr',
+ choices: [
+ [null, 'None'],
+ ['tl', 'Top left'],
+ ['tr', 'Top right'],
+ ['bl', 'Bottom left'],
+ ['br', 'Bottom right'],
+ ],
+ renderTrigger: true,
+ },
+};
+
+export const lineColumn = {
+ name: 'line_column',
+ config: {
+ type: 'SelectControl',
+ label: t('Lines column'),
+ default: null,
+ description: t('The database columns that contains lines information'),
+ mapStateToProps: state => ({
+ choices: columnChoices(state.datasource),
+ }),
+ validators: [validateNonEmpty],
+ },
+};
+
+export const lineWidth = {
+ name: 'line_width',
+ config: {
+ type: 'TextControl',
+ label: t('Line width'),
+ renderTrigger: true,
+ isInt: true,
+ default: 10,
+ description: t('The width of the lines'),
+ },
+};
+
+export const fillColorPicker = {
+ name: 'fill_color_picker',
+ config: {
+ label: t('Fill Color'),
+ description: t(
+ ' Set the opacity to 0 if you do not want to override the color specified in the GeoJSON',
+ ),
+ type: 'ColorPickerControl',
+ default: PRIMARY_COLOR,
+ renderTrigger: true,
+ },
+};
+
+export const strokeColorPicker = {
+ name: 'stroke_color_picker',
+ config: {
+ label: t('Stroke Color'),
+ description: t(
+ ' Set the opacity to 0 if you do not want to override the color specified in the GeoJSON',
+ ),
+ type: 'ColorPickerControl',
+ default: PRIMARY_COLOR,
+ renderTrigger: true,
+ },
+};
+
+export const filled = {
+ name: 'filled',
+ config: {
+ type: 'CheckboxControl',
+ label: t('Filled'),
+ renderTrigger: true,
+ description: t('Whether to fill the objects'),
+ default: true,
+ },
+};
+
+export const stroked = {
+ name: 'stroked',
+ config: {
+ type: 'CheckboxControl',
+ label: t('Stroked'),
+ renderTrigger: true,
+ description: t('Whether to display the stroke'),
+ default: false,
+ },
+};
+
+export const extruded = {
+ name: 'extruded',
+ config: {
+ type: 'CheckboxControl',
+ label: t('Extruded'),
+ renderTrigger: true,
+ default: true,
+ description: 'Whether to make the grid 3D',
+ },
+};
+
+export const gridSize = {
+ name: 'grid_size',
+ config: {
+ type: 'TextControl',
+ label: t('Grid Size'),
+ renderTrigger: true,
+ default: 20,
+ isInt: true,
+ description: t('Defines the grid size in pixels'),
+ },
+};
+
+export const viewport = {
+ name: 'viewport',
+ config: {
+ type: 'ViewportControl',
+ label: t('Viewport'),
+ renderTrigger: false,
+ description: t('Parameters related to the view and perspective on the map'),
+ // default is whole world mostly centered
+ default: DEFAULT_VIEWPORT,
+ // Viewport changes shouldn't prompt user to re-run query
+ dontRefreshOnChange: true,
+ },
+};
+
+export const spatial = {
+ name: 'spatial',
+ config: {
+ type: 'SpatialControl',
+ label: t('Longitude & Latitude'),
+ validators: [validateNonEmpty],
+ description: t('Point to your spatial columns'),
+ mapStateToProps: state => ({
+ choices: columnChoices(state.datasource),
+ }),
+ },
+};
+
+export const pointRadiusFixed = {
+ name: 'point_radius_fixed',
+ config: {
+ type: 'FixedOrMetricControl',
+ label: t('Point Size'),
+ default: { type: 'fix', value: 1000 },
+ description: t('Fixed point radius'),
+ mapStateToProps: state => ({
+ datasource: state.datasource,
+ }),
+ },
+};
+
+export const multiplier = {
+ name: 'multiplier',
+ config: {
+ type: 'TextControl',
+ label: t('Multiplier'),
+ isFloat: true,
+ renderTrigger: true,
+ default: 1,
+ description: t('Factor to multiply the metric by'),
+ },
+};
+
+export const lineType = {
+ name: 'line_type',
+ config: {
+ type: 'SelectControl',
+ label: t('Lines encoding'),
+ clearable: false,
+ default: 'json',
+ description: t('The encoding format of the lines'),
+ choices: [
+ ['polyline', 'Polyline'],
+ ['json', 'JSON'],
+ ['geohash', 'geohash (square)'],
+ ],
+ },
+};
+
+export const reverseLongLat = {
+ name: 'reverse_long_lat',
+ config: {
+ type: 'CheckboxControl',
+ label: t('Reverse Lat & Long'),
+ default: false,
+ },
+};
+
+export const mapboxStyle = {
+ name: 'mapbox_style',
+ config: {
+ type: 'SelectControl',
+ label: t('Map Style'),
+ clearable: false,
+ renderTrigger: true,
+ choices: [
+ ['mapbox://styles/mapbox/streets-v9', 'Streets'],
+ ['mapbox://styles/mapbox/dark-v9', 'Dark'],
+ ['mapbox://styles/mapbox/light-v9', 'Light'],
+ ['mapbox://styles/mapbox/satellite-streets-v9', 'Satellite Streets'],
+ ['mapbox://styles/mapbox/satellite-v9', 'Satellite'],
+ ['mapbox://styles/mapbox/outdoors-v9', 'Outdoors'],
+ ],
+ default: 'mapbox://styles/mapbox/light-v9',
+ description: t('Base layer map style'),
+ },
+};
diff --git a/superset-frontend/temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl/src/utilities/controls.jsx b/superset-frontend/temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl/src/utilities/controls.jsx
new file mode 100644
index 000000000000..9cab4af54969
--- /dev/null
+++ b/superset-frontend/temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl/src/utilities/controls.jsx
@@ -0,0 +1,52 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+export function columnChoices(datasource) {
+ if (datasource && datasource.columns) {
+ return datasource.columns
+ .map(col => [col.column_name, col.verbose_name || col.column_name])
+ .sort((opt1, opt2) => (opt1[1].toLowerCase() > opt2[1].toLowerCase() ? 1 : -1));
+ }
+ return [];
+}
+
+// input choices & options
+export const D3_FORMAT_OPTIONS = [
+ ['SMART_NUMBER', 'Adaptative formating'],
+ ['~g', 'Original value'],
+ [',d', ',d (12345.432 => 12,345)'],
+ ['.1s', '.1s (12345.432 => 10k)'],
+ ['.3s', '.3s (12345.432 => 12.3k)'],
+ [',.1%', ',.1% (12345.432 => 1,234,543.2%)'],
+ ['.3%', '.3% (12345.432 => 1234543.200%)'],
+ ['.4r', '.4r (12345.432 => 12350)'],
+ [',.3f', ',.3f (12345.432 => 12,345.432)'],
+ ['+,', '+, (12345.432 => +12,345.432)'],
+ ['$,.2f', '$,.2f (12345.432 => $12,345.43)'],
+ ['DURATION', 'Duration in ms (66000 => 1m 6s)'],
+ ['DURATION_SUB', 'Duration in ms (100.40008 => 100ms 400µs 80ns)'],
+];
+
+export const PRIMARY_COLOR = { r: 0, g: 122, b: 135, a: 1 };
+
+export default {
+ default: null,
+ mapStateToProps: state => ({
+ choices: state.datasource ? state.datasource.time_grain_sqla.filter(o => o[0] !== null) : null,
+ }),
+};
diff --git a/superset-frontend/temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl/src/utilities/utils.js b/superset-frontend/temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl/src/utilities/utils.js
new file mode 100644
index 000000000000..1fa8a3288c44
--- /dev/null
+++ b/superset-frontend/temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl/src/utilities/utils.js
@@ -0,0 +1,88 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+/* eslint camelcase: 0 */
+import $ from 'jquery';
+
+/**
+ * Sets the body and title content of a modal, and shows it. Assumes HTML for modal exists and that
+ * it handles closing (i.e., works with bootstrap)
+ *
+ * @param {object} options object of the form
+ * {
+ * title: {string},
+ * body: {string},
+ * modalSelector: {string, default: '.misc-modal' },
+ * titleSelector: {string, default: '.misc-modal .modal-title' },
+ * bodySelector: {string, default: '.misc-modal .modal-body' },
+ * }
+ */
+export function showModal(options) {
+ /* eslint no-param-reassign: 0 */
+ options.modalSelector = options.modalSelector || '.misc-modal';
+ options.titleSelector = options.titleSelector || '.misc-modal .modal-title';
+ options.bodySelector = options.bodySelector || '.misc-modal .modal-body';
+ $(options.titleSelector).html(options.title || '');
+ $(options.bodySelector).html(options.body || '');
+ $(options.modalSelector).modal('show');
+}
+
+export function formatSelectOptionsForRange(start, end) {
+ // outputs array of arrays
+ // formatSelectOptionsForRange(1, 5)
+ // returns [[1,1], [2,2], [3,3], [4,4], [5,5]]
+ const options = [];
+ // eslint-disable-next-line no-plusplus
+ for (let i = start; i <= end; i++) {
+ options.push([i, i.toString()]);
+ }
+ return options;
+}
+
+export function formatSelectOptions(options) {
+ return options.map(opt => [opt, opt.toString()]);
+}
+
+export function getDatasourceParameter(datasourceId, datasourceType) {
+ return `${datasourceId}__${datasourceType}`;
+}
+
+export function getParam(name) {
+ /* eslint no-useless-escape: 0 */
+ const formattedName = name.replace(/\[/, '\\[').replace(/]/, '\\]');
+ const regex = new RegExp(`[\\?&]${formattedName}=([^]*)`);
+ // eslint-disable-next-line no-restricted-globals
+ const results = regex.exec(location.search);
+ return results === null ? '' : decodeURIComponent(results[1].replace(/\+/g, ' '));
+}
+
+export function mainMetric(savedMetrics) {
+ // Using 'count' as default metric if it exists, otherwise using whatever one shows up first
+ let metric;
+ if (savedMetrics && savedMetrics.length > 0) {
+ savedMetrics.forEach(m => {
+ if (m.metric_name === 'count') {
+ metric = 'count';
+ }
+ });
+ if (!metric) {
+ metric = savedMetrics[0].metric_name;
+ }
+ }
+ return metric;
+}
diff --git a/superset-frontend/temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl/yarn.lock b/superset-frontend/temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl/yarn.lock
new file mode 100644
index 000000000000..01b0902ca1f9
--- /dev/null
+++ b/superset-frontend/temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl/yarn.lock
@@ -0,0 +1,819 @@
+# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
+# yarn lockfile v1
+
+
+"@babel/runtime@^7.0.0", "@babel/runtime@^7.3.1":
+ version "7.10.5"
+ resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.10.5.tgz#303d8bd440ecd5a491eae6117fd3367698674c5c"
+ integrity sha512-otddXKhdNn7d0ptoFRHtMLa8LqDxLYwTjB4nYgM1yy5N6gU/MUf8zqyyLltCH3yAVitBzmwK4us+DD0l/MauAg==
+ dependencies:
+ regenerator-runtime "^0.13.4"
+
+"@deck.gl/aggregation-layers@7.1.11":
+ version "7.1.11"
+ resolved "https://registry.yarnpkg.com/@deck.gl/aggregation-layers/-/aggregation-layers-7.1.11.tgz#6b66f81a9ff0b120f5b8997c1eee38bf40e106ba"
+ integrity sha512-CHsr+UJhf06Mqb/q60iP7ftHQv3ftHUhJbVO4550PRo+QMFFhHfhxo53gQDDgrQ3stxpAcLT3lXRSNghMoU34g==
+ dependencies:
+ d3-hexbin "^0.2.1"
+
+"@deck.gl/core@7.1.11":
+ version "7.1.11"
+ resolved "https://registry.yarnpkg.com/@deck.gl/core/-/core-7.1.11.tgz#b5da356053b28767b95d16c29afc1010e21f4e89"
+ integrity sha512-jUi1CcsnF5KPL2sv7Z0H3x+8amee5csqliZXGbXEBYox1l8naC4PhHg5jTgLaB0ZOHfVDsldPwGdPC+Mi4jP/Q==
+ dependencies:
+ "@luma.gl/core" "^7.1.0"
+ gl-matrix "^3.0.0"
+ math.gl "^2.3.0"
+ mjolnir.js "^2.1.2"
+ probe.gl "^3.0.1"
+ seer "^0.2.4"
+ viewport-mercator-project "^6.1.0"
+
+"@deck.gl/geo-layers@7.1.11":
+ version "7.1.11"
+ resolved "https://registry.yarnpkg.com/@deck.gl/geo-layers/-/geo-layers-7.1.11.tgz#d574a607af10d793194f6a9ee3ce440488da422a"
+ integrity sha512-gIJ1K98IFSZ12hB+zHyQC+9pMncb9BKVhJTA7pjUpxwcmEkkroqet9zkYQQMeSInK0a67BR9GXjebb/N0U04qA==
+ dependencies:
+ h3-js "^3.4.3"
+ long "^3.2.0"
+ s2-geometry "^1.2.10"
+
+"@deck.gl/google-maps@7.1.11":
+ version "7.1.11"
+ resolved "https://registry.yarnpkg.com/@deck.gl/google-maps/-/google-maps-7.1.11.tgz#d85cf3a81ee2a5123e46b4c85d0c8ef7034c4476"
+ integrity sha512-gYp3NFIsyT5p65HgKjXFWTDzFf7K8+6ce9d9MIqaNgVWFZdsjUy9JL5TttDMQXshaQ1aZpxtLL6ZO3BiI1w8fw==
+
+"@deck.gl/json@7.1.11":
+ version "7.1.11"
+ resolved "https://registry.yarnpkg.com/@deck.gl/json/-/json-7.1.11.tgz#8342322e3cfca8a0e14a970766a793b4e7cb4e06"
+ integrity sha512-obYAXq5VZ0qCTVS8hopS64aXGicUeBNg0/03AAfo+Q5z62cNqagAktGKVZMUsJ13bV8CPohJ2zRWMXO+mAJtew==
+ dependencies:
+ d3-dsv "^1.0.8"
+
+"@deck.gl/layers@7.1.11":
+ version "7.1.11"
+ resolved "https://registry.yarnpkg.com/@deck.gl/layers/-/layers-7.1.11.tgz#d53175a9adfb03869084acc33145c846458d40c8"
+ integrity sha512-hOylm7Pf3CSvqpDoiCJLnqLAU3PAePISskJ5jjhpXtgHBrm1/Gk4boP4/7t7kFZdbSvVIXin13pPRbT0SWCRPw==
+ dependencies:
+ "@loaders.gl/core" "^1.0.3"
+ "@loaders.gl/images" "^1.0.3"
+ "@mapbox/tiny-sdf" "^1.1.0"
+ earcut "^2.0.6"
+
+"@deck.gl/mapbox@7.1.11":
+ version "7.1.11"
+ resolved "https://registry.yarnpkg.com/@deck.gl/mapbox/-/mapbox-7.1.11.tgz#87d2e9306f0ce7679ddc95b11e33b7c2d1ee9d9d"
+ integrity sha512-V4cc9vwXzAOBtWV8x+WtvPVXElGChogkvQketeR2uhz6wIHuH+3sBBRg/Ma476w/II+DKjeHg2AzAZeX3SK7yQ==
+
+"@deck.gl/mesh-layers@7.1.11":
+ version "7.1.11"
+ resolved "https://registry.yarnpkg.com/@deck.gl/mesh-layers/-/mesh-layers-7.1.11.tgz#f2eef1962e1f868957b88113f6f57dc94636ba64"
+ integrity sha512-rI8ffUNh7ac2GpMcGLEiKyRarOPeLfVRlMRKjl9LXU61Wgx6DaHqsMmeqxzjoXEzgiRlY/XgCjepVg0dY6btlQ==
+ dependencies:
+ "@loaders.gl/core" "^1.0.3"
+ "@loaders.gl/images" "^1.0.3"
+
+"@deck.gl/react@7.1.11":
+ version "7.1.11"
+ resolved "https://registry.yarnpkg.com/@deck.gl/react/-/react-7.1.11.tgz#dbd84a2bec4551841e4592da58a064e0d0d80693"
+ integrity sha512-WUzxhvM3jZIZkBAQgdQR+tFBAVDm5opLCKMWI9YkJUsdJzdv9uwiWCsk3Se1pCTFIa5Asb8U6YAi1CHl+OOFyA==
+ dependencies:
+ prop-types "^15.6.0"
+
+"@loaders.gl/core@^1.0.3":
+ version "1.3.7"
+ resolved "https://registry.yarnpkg.com/@loaders.gl/core/-/core-1.3.7.tgz#86ae42b7f16b67035a7a561affa393c4fd98076a"
+ integrity sha512-dFZkJQc+i2PoqlBMz/aO8Gnn0y6ICafQp8u6cTpCm96h/HHulE8qDBodQlHGHn9EMJDSgVl/zjni+QhqIK31dg==
+ dependencies:
+ "@babel/runtime" "^7.3.1"
+
+"@loaders.gl/images@^1.0.3":
+ version "1.3.7"
+ resolved "https://registry.yarnpkg.com/@loaders.gl/images/-/images-1.3.7.tgz#fa0975e76cba12379c423df50de1940b32f3df00"
+ integrity sha512-TKqW94vjvWc4RIChhr0Yx6HaVTe8K6h6GFeXcahsKeCxq9/k2qpcigRkXfmb6/37dkp2Qy5COHp73ECgN/q+NA==
+
+"@luma.gl/constants@7.3.2":
+ version "7.3.2"
+ resolved "https://registry.yarnpkg.com/@luma.gl/constants/-/constants-7.3.2.tgz#99c5d665f9e6d21192525038e47ec4acfbbbe0a6"
+ integrity sha512-hr6JOOwsGPjjoHnil4sQ6AWsc8P6XXYtRL10TwNYfFTcNxrhSrjQvutYoCzXHH5U0vfHBfPMMUyLASK9FqiHOA==
+
+"@luma.gl/core@^7.1.0":
+ version "7.3.2"
+ resolved "https://registry.yarnpkg.com/@luma.gl/core/-/core-7.3.2.tgz#1d006da99ead3f1a7d6323e5c39e1dd6086f1ecf"
+ integrity sha512-XyQPSUJRkZcc//gVX0AgjLLNTkCOO68NRnm7RkIhikRBEUdovb4IOcpmWMCB1/Gyj4hzg/Z1FOAVT4pG1E+agw==
+ dependencies:
+ "@babel/runtime" "^7.0.0"
+ "@luma.gl/constants" "7.3.2"
+ "@luma.gl/shadertools" "7.3.2"
+ "@luma.gl/webgl" "7.3.2"
+ "@luma.gl/webgl-state-tracker" "7.3.2"
+ "@luma.gl/webgl2-polyfill" "7.3.2"
+ math.gl "^3.0.0"
+ probe.gl "^3.1.1"
+ seer "^0.2.4"
+
+"@luma.gl/shadertools@7.3.2":
+ version "7.3.2"
+ resolved "https://registry.yarnpkg.com/@luma.gl/shadertools/-/shadertools-7.3.2.tgz#f850aed1b3e1dedfb236ce02b0129cccd018f651"
+ integrity sha512-GiOZTvdEr164zYFy1DNRc7mzduSWLNJ34s+YbkJ/0i07E6tK7gHgM29QNCZ/gROvUDDJ5CHxngZqGkb+XquOMQ==
+ dependencies:
+ "@babel/runtime" "^7.0.0"
+ math.gl "^3.0.0"
+
+"@luma.gl/webgl-state-tracker@7.3.2":
+ version "7.3.2"
+ resolved "https://registry.yarnpkg.com/@luma.gl/webgl-state-tracker/-/webgl-state-tracker-7.3.2.tgz#b927e1c7689fbc75432197eaf0468fc8f0e18a76"
+ integrity sha512-0LuK3veReSm2UPOiDwC2CRDeE2xk4irqXdhyFO0WSAU1w+YhzbD1hGbjizGczvgfkbz8dFl9h98LbbH75efcKw==
+ dependencies:
+ "@babel/runtime" "^7.0.0"
+ "@luma.gl/constants" "7.3.2"
+
+"@luma.gl/webgl2-polyfill@7.3.2":
+ version "7.3.2"
+ resolved "https://registry.yarnpkg.com/@luma.gl/webgl2-polyfill/-/webgl2-polyfill-7.3.2.tgz#266a7a2d2c2c338360e8f766984cf559d2230521"
+ integrity sha512-PMt5xqQ+u7tIqfUaL3s4nuWl604WFNcl1F1ohSUFeEzIIuxFiF6gsdEEvC5VqGoMFxI8T4FOTSeHYIr6uP4+4w==
+ dependencies:
+ "@babel/runtime" "^7.0.0"
+ "@luma.gl/constants" "7.3.2"
+
+"@luma.gl/webgl@7.3.2":
+ version "7.3.2"
+ resolved "https://registry.yarnpkg.com/@luma.gl/webgl/-/webgl-7.3.2.tgz#57d6ef58d7180cf429a9f98c8389215665b4c3d7"
+ integrity sha512-eWoPPRJOF5xSpqgggdwspsm8exclwxz20c8vqu8D1b3LJTY7cEpq57CMLvITHcJMMJ834TX/r598efTcF76lpw==
+ dependencies:
+ "@babel/runtime" "^7.0.0"
+ "@luma.gl/constants" "7.3.2"
+ "@luma.gl/webgl-state-tracker" "7.3.2"
+ "@luma.gl/webgl2-polyfill" "7.3.2"
+ probe.gl "^3.1.1"
+
+"@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.1"
+ resolved "https://registry.yarnpkg.com/@mapbox/geojson-rewind/-/geojson-rewind-0.4.1.tgz#357d79300adb7fec7c1f091512988bca6458f068"
+ integrity sha512-mxo2MEr7izA1uOXcDsw99Kgg6xW3P4H2j4n1lmldsgviIelpssvP+jQDivFKOHrOVJDpTTi5oZJvRcHtU9Uufw==
+ dependencies:
+ "@mapbox/geojson-area" "0.2.2"
+ concat-stream "~1.6.0"
+ minimist "^1.2.5"
+ 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.5.0"
+ resolved "https://registry.yarnpkg.com/@mapbox/mapbox-gl-supported/-/mapbox-gl-supported-1.5.0.tgz#f60b6a55a5d8e5ee908347d2ce4250b15103dc8e"
+ integrity sha512-/PT1P6DNf7vjEEiPkVIRJkvibbqWtqnyGaBz3nfRdcxclNSnSdaLU5tfAgcD7I8Yt5i+L19s406YLl1koLnLbg==
+
+"@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==
+
+"@math.gl/core@3.2.2":
+ version "3.2.2"
+ resolved "https://registry.yarnpkg.com/@math.gl/core/-/core-3.2.2.tgz#929eccc724b8fafce92e3762988c2f07859232a9"
+ integrity sha512-R1UQwg699pfReLHy0N+ach2KdGqH4XsniEPKM7H0WbeDhEvuoMRWB9oNtIw9qPQV39lBv3Dzplaw5DPscwgMPQ==
+ dependencies:
+ "@babel/runtime" "^7.0.0"
+ gl-matrix "^3.0.0"
+
+"@math.gl/web-mercator@^3.1.3":
+ version "3.2.2"
+ resolved "https://registry.yarnpkg.com/@math.gl/web-mercator/-/web-mercator-3.2.2.tgz#93e66ded7f3004b92bc931da3e32ef244189679b"
+ integrity sha512-uZbLlST7gbfJV227Ev1oShpYQGon9Nk/i0AoM81mVoEYtd+XxKuoDBYaRIdPNVkkALwF9xFG1lwxHqblrs3v5w==
+ dependencies:
+ "@babel/runtime" "^7.0.0"
+ gl-matrix "^3.0.0"
+
+"@probe.gl/stats@3.3.0":
+ version "3.3.0"
+ resolved "https://registry.yarnpkg.com/@probe.gl/stats/-/stats-3.3.0.tgz#66f684ead7cee1f2aad5ee5e9d297e84e08c5536"
+ integrity sha512-CV4c3EgallqZTO88u34/u9L5asL0nCVP1BEkb4qcXlh8Qz2Vmygbyjz1ViQsct6rSi2lJ52lo6W0PnlpZJJvcA==
+ dependencies:
+ "@babel/runtime" "^7.0.0"
+
+"@types/d3-array@^2.0.0":
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/@types/d3-array/-/d3-array-2.0.0.tgz#a0d63a296a2d8435a9ec59393dcac746c6174a96"
+ integrity sha512-rGqfPVowNDTszSFvwoZIXvrPG7s/qKzm9piCRIH6xwTTRu7pPZ3ootULFnPkTt74B6i5lN0FpLQL24qGOw1uZA==
+
+ansicolors@~0.2.1:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/ansicolors/-/ansicolors-0.2.1.tgz#be089599097b74a5c9c4a84a0cdbcdb62bd87aef"
+ integrity sha1-vgiVmQl7dKXJxKhKDNvNtivYeu8=
+
+bootstrap-slider@9.9.0:
+ version "9.9.0"
+ resolved "https://registry.yarnpkg.com/bootstrap-slider/-/bootstrap-slider-9.9.0.tgz#4e14ecc6401901da1ddf7681aa24e33b00dadce8"
+ integrity sha1-ThTsxkAZAdod33aBqiTjOwDa3Og=
+
+bootstrap-slider@^10.0.0:
+ version "10.6.2"
+ resolved "https://registry.yarnpkg.com/bootstrap-slider/-/bootstrap-slider-10.6.2.tgz#7341f468c012bdaa6a1d8625d989fdeb8ed7dd38"
+ integrity sha512-8JTPZB9QVOdrGzYF3YgC3YW6ssfPeBvBwZnXffiZ7YH/zz1D0EKlZvmQsm/w3N0XjVNYQEoQ0ax+jHrErV4K1Q==
+
+buffer-from@^1.0.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef"
+ integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==
+
+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"
+
+commander@2, commander@^2.20.3:
+ version "2.20.3"
+ resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33"
+ integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==
+
+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==
+ dependencies:
+ buffer-from "^1.0.0"
+ inherits "^2.0.3"
+ readable-stream "^2.2.2"
+ typedarray "^0.0.6"
+
+core-util-is@~1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
+ integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=
+
+csscolorparser@~1.0.2:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/csscolorparser/-/csscolorparser-1.0.3.tgz#b34f391eea4da8f3e98231e2ccd8df9c041f171b"
+ integrity sha1-s085HupNqPPpgjHizNjfnAQfFxs=
+
+cssfilter@0.0.10:
+ version "0.0.10"
+ resolved "https://registry.yarnpkg.com/cssfilter/-/cssfilter-0.0.10.tgz#c6d2672632a2e5c83e013e6864a42ce8defd20ae"
+ integrity sha1-xtJnJjKi5cg+AT5oZKQs6N79IK4=
+
+d3-array@^1.2.0, d3-array@^1.2.4:
+ version "1.2.4"
+ resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-1.2.4.tgz#635ce4d5eea759f6f605863dbcfc30edc737f71f"
+ integrity sha512-KHW6M86R+FUPYGb3R5XiYjXPq7VzwxZ22buHhAEVG5ztoEcZZMLov530mmccaqA1GghZArjQV46fuc8kUqhhHw==
+
+d3-collection@1:
+ version "1.0.7"
+ resolved "https://registry.yarnpkg.com/d3-collection/-/d3-collection-1.0.7.tgz#349bd2aa9977db071091c13144d5e4f16b5b310e"
+ integrity sha512-ii0/r5f4sjKNTfh84Di+DpztYwqKhEyUlKoPrzUFfeSkWxjW49xU2QzO9qrPrNkpdI0XJkfzvmTu8V2Zylln6A==
+
+d3-color@1, d3-color@^1.2.0:
+ version "1.4.1"
+ resolved "https://registry.yarnpkg.com/d3-color/-/d3-color-1.4.1.tgz#c52002bf8846ada4424d55d97982fef26eb3bc8a"
+ integrity sha512-p2sTHSLCJI2QKunbGb7ocOh7DgTAn8IrLx21QRc/BSnodXM4sv6aLQlnfpvehFMLZEfBc6g9pH9SWQccFYfJ9Q==
+
+d3-dsv@^1.0.8:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/d3-dsv/-/d3-dsv-1.2.0.tgz#9d5f75c3a5f8abd611f74d3f5847b0d4338b885c"
+ integrity sha512-9yVlqvZcSOMhCYzniHE7EVUws7Fa1zgw+/EAV2BxJoG3ME19V6BQFBwI855XQDsxyOuG7NibqRMTtiF/Qup46g==
+ dependencies:
+ commander "2"
+ iconv-lite "0.4"
+ rw "1"
+
+d3-format@1:
+ version "1.4.4"
+ resolved "https://registry.yarnpkg.com/d3-format/-/d3-format-1.4.4.tgz#356925f28d0fd7c7983bfad593726fce46844030"
+ integrity sha512-TWks25e7t8/cqctxCmxpUuzZN11QxIA7YrMbram94zMQ0PXjE4LVIMe/f6a4+xxL8HQ3OsAFULOINQi1pE62Aw==
+
+d3-hexbin@^0.2.1:
+ version "0.2.2"
+ resolved "https://registry.yarnpkg.com/d3-hexbin/-/d3-hexbin-0.2.2.tgz#9c5837dacfd471ab05337a9e91ef10bfc4f98831"
+ integrity sha1-nFg32s/UcasFM3qeke8Qv8T5iDE=
+
+d3-interpolate@1:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/d3-interpolate/-/d3-interpolate-1.4.0.tgz#526e79e2d80daa383f9e0c1c1c7dcc0f0583e987"
+ integrity sha512-V9znK0zc3jOPV4VD2zZn0sDhZU3WAE2bmlxdIwwQPPzPjvyLkd8B3JUVdS1IDUFDkWZ72c9qnv1GK2ZagTZ8EA==
+ dependencies:
+ d3-color "1"
+
+d3-scale@^2.1.2:
+ version "2.2.2"
+ resolved "https://registry.yarnpkg.com/d3-scale/-/d3-scale-2.2.2.tgz#4e880e0b2745acaaddd3ede26a9e908a9e17b81f"
+ integrity sha512-LbeEvGgIb8UMcAa0EATLNX0lelKWGYDQiPdHj+gLblGVhGLyNbaCn3EvrJf0A3Y/uOOU5aD6MTh5ZFCdEwGiCw==
+ dependencies:
+ d3-array "^1.2.0"
+ d3-collection "1"
+ d3-format "1"
+ d3-interpolate "1"
+ d3-time "1"
+ d3-time-format "2"
+
+d3-time-format@2:
+ version "2.2.3"
+ resolved "https://registry.yarnpkg.com/d3-time-format/-/d3-time-format-2.2.3.tgz#0c9a12ee28342b2037e5ea1cf0b9eb4dd75f29cb"
+ integrity sha512-RAHNnD8+XvC4Zc4d2A56Uw0yJoM7bsvOlJR33bclxq399Rak/b9bhvu/InjxdWhPtkgU53JJcleJTGkNRnN6IA==
+ dependencies:
+ d3-time "1"
+
+d3-time@1:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/d3-time/-/d3-time-1.1.0.tgz#b1e19d307dae9c900b7e5b25ffc5dcc249a8a0f1"
+ integrity sha512-Xh0isrZ5rPYYdqhAVk8VLnMEidhz5aP7htAADH6MfzgmmicPkTo8LhkLxci61/lCB7n7UmE3bN0leRt+qvkLxA==
+
+deck.gl@7.1.11:
+ version "7.1.11"
+ resolved "https://registry.yarnpkg.com/deck.gl/-/deck.gl-7.1.11.tgz#bed2b80b87670a9efa239ac95a9edb50ac46e9e8"
+ integrity sha512-OUj9JE544N6Y/DCdfdnsbqKn9o72bWgRfsKhyi8aZ8v76hq7XyelmO2GljBmHGYmuMNVLrKcymNMV0m8EEgpZA==
+ dependencies:
+ "@deck.gl/aggregation-layers" "7.1.11"
+ "@deck.gl/core" "7.1.11"
+ "@deck.gl/geo-layers" "7.1.11"
+ "@deck.gl/google-maps" "7.1.11"
+ "@deck.gl/json" "7.1.11"
+ "@deck.gl/layers" "7.1.11"
+ "@deck.gl/mapbox" "7.1.11"
+ "@deck.gl/mesh-layers" "7.1.11"
+ "@deck.gl/react" "7.1.11"
+
+earcut@^2.0.6, earcut@^2.1.5:
+ version "2.2.2"
+ resolved "https://registry.yarnpkg.com/earcut/-/earcut-2.2.2.tgz#41b0bc35f63e0fe80da7cddff28511e7e2e80d11"
+ integrity sha512-eZoZPPJcUHnfRZ0PjLvx2qBordSiO8ofC3vt+qACLM95u+4DovnbYNpQtJh0DNsWj8RnxrQytD4WA8gj5cRIaQ==
+
+es6bindall@^0.0.9:
+ version "0.0.9"
+ resolved "https://registry.yarnpkg.com/es6bindall/-/es6bindall-0.0.9.tgz#71e00afa69f8dd59ac5ac898a0d31c978df817d5"
+ integrity sha1-ceAK+mn43VmsWsiYoNMcl434F9U=
+
+esm@^3.0.84:
+ version "3.2.25"
+ resolved "https://registry.yarnpkg.com/esm/-/esm-3.2.25.tgz#342c18c29d56157688ba5ce31f8431fbb795cc10"
+ integrity sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==
+
+esm@~3.0.84:
+ version "3.0.84"
+ resolved "https://registry.yarnpkg.com/esm/-/esm-3.0.84.tgz#bb108989f4673b32d4f62406869c28eed3815a63"
+ integrity sha512-SzSGoZc17S7P+12R9cg21Bdb7eybX25RnIeRZ80xZs+VZ3kdQKzqTp2k4hZJjR7p9l0186TTXSgrxzlMDBktlw==
+
+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=
+
+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==
+
+gl-matrix@^3.0.0:
+ version "3.3.0"
+ resolved "https://registry.yarnpkg.com/gl-matrix/-/gl-matrix-3.3.0.tgz#232eef60b1c8b30a28cbbe75b2caf6c48fd6358b"
+ integrity sha512-COb7LDz+SXaHtl/h4LeaFcNdJdAQSDeVqjiIihSXNrkWObZLhDI4hIkZC11Aeqp7bcE72clzB0BnDXr2SmslRA==
+
+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==
+
+h3-js@^3.4.3:
+ version "3.6.4"
+ resolved "https://registry.yarnpkg.com/h3-js/-/h3-js-3.6.4.tgz#eb14f63a1fe1efec04194266271ec0af9c021566"
+ integrity sha512-wMu0Y+vdh4xx2WT1jqy4QDBgJupjBfHsGaMtMsFocdZdIsfxLFufzjGcmReOSfKQ+twRO2XjXAmDY9h1nq99EA==
+
+hammerjs@^2.0.8:
+ version "2.0.8"
+ resolved "https://registry.yarnpkg.com/hammerjs/-/hammerjs-2.0.8.tgz#04ef77862cff2bb79d30f7692095930222bf60f1"
+ integrity sha1-BO93hiz/K7edMPdpIJWTAiK/YPE=
+
+iconv-lite@0.4:
+ version "0.4.24"
+ resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b"
+ integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==
+ dependencies:
+ safer-buffer ">= 2.1.2 < 3"
+
+ieee754@^1.1.12:
+ version "1.1.13"
+ resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84"
+ integrity sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==
+
+inherits@^2.0.3, inherits@~2.0.3:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
+ integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
+
+isarray@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
+ integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=
+
+jquery@^3.4.1:
+ version "3.5.1"
+ resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.5.1.tgz#d7b4d08e1bfdb86ad2f1a3d039ea17304717abb5"
+ integrity sha512-XwIBPqcMn57FxfT+Go5pzySnm4KWkT1Tv7gjrpT1srtf8Weynl6R273VJ5GjkRb51IzMp5nbaPjJXMWeju2MKg==
+
+"js-tokens@^3.0.0 || ^4.0.0":
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
+ integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==
+
+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==
+
+lodash@^4.17.15:
+ version "4.17.19"
+ resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.19.tgz#e48ddedbe30b3321783c5b4301fbd353bc1e4a4b"
+ integrity sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==
+
+long@^3.2.0:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/long/-/long-3.2.0.tgz#d821b7138ca1cb581c172990ef14db200b5c474b"
+ integrity sha1-2CG3E4yhy1gcFymQ7xTbIAtcR0s=
+
+loose-envify@^1.4.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf"
+ integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==
+ dependencies:
+ js-tokens "^3.0.0 || ^4.0.0"
+
+mapbox-gl@^0.53.0:
+ version "0.53.1"
+ resolved "https://registry.yarnpkg.com/mapbox-gl/-/mapbox-gl-0.53.1.tgz#08a956d8da54b04bc7f29ab1319bddb9c97ddedf"
+ integrity sha512-dTtW/qlkUowKGlqOhE8fqII2Tj4lcokvlZwUDLnkjy4uQ9zMFnVBULGeSzzTVkj9HtQZ3Zbey10/jmoVPV9t5w==
+ 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.1.5"
+ esm "^3.0.84"
+ 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.0.5"
+ 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"
+
+mapbox-gl@~0.54.0:
+ version "0.54.1"
+ resolved "https://registry.yarnpkg.com/mapbox-gl/-/mapbox-gl-0.54.1.tgz#f666103132df93d4c90d1e96b1c367bad4638db9"
+ integrity sha512-HtY+HobYTHTsFOJ3buTHtNvZv/Tjfp0vararhEWCjI7wQq8XxK16sEpsXucokrAhuu94js4KJylo13bKJx6l0Q==
+ 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.1.5"
+ esm "~3.0.84"
+ 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.0.5"
+ 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@^2.3.0:
+ version "2.3.3"
+ resolved "https://registry.yarnpkg.com/math.gl/-/math.gl-2.3.3.tgz#69d07904507145c639835aefcd0ec5e790cd3046"
+ integrity sha512-wZhx7574KHUpJVMzkaQ559zfn3R8iB0BOilwNrfL/fOLQfPo2TPWsKX96PdfS4svKA2XIGi3yfizrv2Redcv0g==
+ dependencies:
+ "@babel/runtime" "^7.0.0"
+ gl-matrix "^3.0.0"
+
+math.gl@^3.0.0:
+ version "3.2.2"
+ resolved "https://registry.yarnpkg.com/math.gl/-/math.gl-3.2.2.tgz#d19e68b903b43ecbde677f8086a03b91fbab3c33"
+ integrity sha512-lkM9y3DirpOBMpCCrsOMV3AWkxtwql8fvF98EUN0SLOMWAIjnkQBS9NPleN5uvqpnjSVZd3Y3cn+fbIuA4npmQ==
+ dependencies:
+ "@math.gl/core" "3.2.2"
+
+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.2.5:
+ version "1.2.5"
+ resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602"
+ integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==
+
+mjolnir.js@^2.1.2, mjolnir.js@^2.2.0:
+ version "2.4.1"
+ resolved "https://registry.yarnpkg.com/mjolnir.js/-/mjolnir.js-2.4.1.tgz#63cc66b7d1a52490904103cc1becc597be60c6cf"
+ integrity sha512-bpqKc70aNlijeQCapJ8529EmjVj8VSfYdzh1WsbhWp0XEQSm9hAB6X350OyRVDpH5oTdAyX/NeYFqtwyuO4ZKA==
+ dependencies:
+ "@babel/runtime" "^7.0.0"
+ hammerjs "^2.0.8"
+
+moment@^2.20.1:
+ version "2.27.0"
+ resolved "https://registry.yarnpkg.com/moment/-/moment-2.27.0.tgz#8bff4e3e26a236220dfe3e36de756b6ebaa0105d"
+ integrity sha512-al0MUK7cpIcglMv3YF13qSgdAIqxHTO7brRtaz3DlSULbqfazqkc5kEjNrLDOM7fsjshoFIihnU8snrP7zUvhQ==
+
+mousetrap@^1.6.1:
+ version "1.6.5"
+ resolved "https://registry.yarnpkg.com/mousetrap/-/mousetrap-1.6.5.tgz#8a766d8c272b08393d5f56074e0b5ec183485bf9"
+ integrity sha512-QNo4kEepaIBwiT8CDhP98umTetp+JNfQYBWvC1pc6/OAibuXtRcxZ58Qz8skvEHYvURne/7R8T5VoOI7rDsEUA==
+
+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=
+
+object-assign@^4.1.1:
+ version "4.1.1"
+ resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
+ integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=
+
+pbf@^3.0.5:
+ 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"
+
+potpack@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/potpack/-/potpack-1.0.1.tgz#d1b1afd89e4c8f7762865ec30bd112ab767e2ebf"
+ integrity sha512-15vItUAbViaYrmaB/Pbw7z6qX2xENbFSTA7Ii4tgbPtasxm5v6ryKhKtL91tpWovDJzTiZqdwzhcFBCwiMVdVw==
+
+probe.gl@^3.0.1, probe.gl@^3.1.1:
+ version "3.3.0"
+ resolved "https://registry.yarnpkg.com/probe.gl/-/probe.gl-3.3.0.tgz#a64e2f007d36a6262b12f3b1e99ca5dc3762b3c3"
+ integrity sha512-59E6AEw4N8sU4PKfAl7S2UBYJCOa064WpEFcXfeFOB/36FJtplYY+261DqLjLAvOqRRHiKVEQUBo63PQ3jKeWA==
+ dependencies:
+ "@babel/runtime" "^7.0.0"
+ "@probe.gl/stats" "3.3.0"
+
+process-nextick-args@~2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2"
+ integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==
+
+prop-types@^15.6.0, prop-types@^15.7.2:
+ version "15.7.2"
+ resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5"
+ integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==
+ dependencies:
+ loose-envify "^1.4.0"
+ object-assign "^4.1.1"
+ react-is "^16.8.1"
+
+protocol-buffers-schema@^3.3.1:
+ version "3.4.0"
+ resolved "https://registry.yarnpkg.com/protocol-buffers-schema/-/protocol-buffers-schema-3.4.0.tgz#2f0ea31ca96627d680bf2fefae7ebfa2b6453eae"
+ integrity sha512-G/2kcamPF2S49W5yaMGdIpkG6+5wZF0fzBteLKgEHjbNzqjZQ85aAs1iJGto31EJaSTkNvHs5IXuHSaTLWBAiA==
+
+quickselect@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/quickselect/-/quickselect-2.0.0.tgz#f19680a486a5eefb581303e023e98faaf25dd018"
+ integrity sha512-RKJ22hX8mHe3Y6wH/N3wCM6BWtjaxIyyUIkpHOvfFnxdI4yD4tBXEBKSbriGujF6jnSVkJrffuo6vxACiSSxIw==
+
+react-bootstrap-slider@2.1.5:
+ version "2.1.5"
+ resolved "https://registry.yarnpkg.com/react-bootstrap-slider/-/react-bootstrap-slider-2.1.5.tgz#2f79e57b69ddf2b5bd23310bddbd2de0c6bdfef3"
+ integrity sha512-7rO3JlCVIpr+XtwiSfg8r+MPqyl9KdLI61pNuSMBYYQZ42IWBC+kk/UDyYevp76aGAMtd9SCW8erxOvq+VpekQ==
+ dependencies:
+ bootstrap-slider "9.9.0"
+ es6bindall "^0.0.9"
+
+react-is@^16.8.1:
+ version "16.13.1"
+ resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4"
+ integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==
+
+react-map-gl@^4.0.10:
+ version "4.1.16"
+ resolved "https://registry.yarnpkg.com/react-map-gl/-/react-map-gl-4.1.16.tgz#32c383801df9d57d9a369ba5b3d0b4b1e9b57862"
+ integrity sha512-EtiHCeqM69wKR9RDyLvtk6pTPS5+OFeAPIsYw6afnlGTauFAq3iD40SHuAOElgoJmm7J+cjPfHqu7m7tB4/FfA==
+ dependencies:
+ "@babel/runtime" "^7.0.0"
+ mapbox-gl "~0.54.0"
+ mjolnir.js "^2.2.0"
+ prop-types "^15.7.2"
+ react-virtualized-auto-sizer "^1.0.2"
+ viewport-mercator-project "^6.2.1"
+
+react-virtualized-auto-sizer@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/react-virtualized-auto-sizer/-/react-virtualized-auto-sizer-1.0.2.tgz#a61dd4f756458bbf63bd895a92379f9b70f803bd"
+ integrity sha512-MYXhTY1BZpdJFjUovvYHVBmkq79szK/k7V3MO+36gJkWGkrXKtyr4vCPtpphaTLRAdDNoYEYFZWE8LjN+PIHNg==
+
+readable-stream@^2.2.2:
+ version "2.3.7"
+ resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57"
+ integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==
+ dependencies:
+ core-util-is "~1.0.0"
+ inherits "~2.0.3"
+ isarray "~1.0.0"
+ process-nextick-args "~2.0.0"
+ safe-buffer "~5.1.1"
+ string_decoder "~1.1.1"
+ util-deprecate "~1.0.1"
+
+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"
+
+regenerator-runtime@^0.13.4:
+ version "0.13.5"
+ resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz#d878a1d094b4306d10b9096484b33ebd55e26697"
+ integrity sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA==
+
+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"
+
+rw@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=
+
+s2-geometry@^1.2.10:
+ version "1.2.10"
+ resolved "https://registry.yarnpkg.com/s2-geometry/-/s2-geometry-1.2.10.tgz#c6ff22f3eccafd0eea491b60b44c141b9887acab"
+ integrity sha1-xv8i8+zK/Q7qSRtgtEwUG5iHrKs=
+ dependencies:
+ long "^3.2.0"
+
+safe-buffer@~5.1.0, safe-buffer@~5.1.1:
+ version "5.1.2"
+ resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
+ integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==
+
+"safer-buffer@>= 2.1.2 < 3":
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
+ integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
+
+seer@^0.2.4:
+ version "0.2.5"
+ resolved "https://registry.yarnpkg.com/seer/-/seer-0.2.5.tgz#f0975153741f4d1c3916a144eef4738458bcb05a"
+ integrity sha512-//0Zwt0x97KQhIWrp4oq9AVNvGA2ctCx4dmFddpkORjRr6bW+hyC8eOhWBVIhiU3uHv1XLU1dekfFKOi28RGHA==
+
+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"
+
+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"
+
+string_decoder@~1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8"
+ integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==
+ dependencies:
+ safe-buffer "~5.1.0"
+
+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"
+
+through@2:
+ version "2.3.8"
+ resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"
+ integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=
+
+tinyqueue@^2.0.0:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/tinyqueue/-/tinyqueue-2.0.3.tgz#64d8492ebf39e7801d7bd34062e29b45b2035f08"
+ integrity sha512-ppJZNDuKGgxzkHihX8v9v9G5f+18gzaTfrukGrq6ueg0lmH4nqVnA2IPG0AEH3jKEk2GRJCUhDoqpoiw3PHLBA==
+
+typedarray@^0.0.6:
+ version "0.0.6"
+ resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
+ integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=
+
+underscore@^1.8.3:
+ version "1.10.2"
+ resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.10.2.tgz#73d6aa3668f3188e4adb0f1943bd12cfd7efaaaf"
+ integrity sha512-N4P+Q/BuyuEKFJ43B9gYuOj4TQUHXX+j2FqguVOpjkssLUUrnJofCcBccJSCoeturDoZU6GorDTHSvUDlSQbTg==
+
+urijs@^1.18.10:
+ version "1.19.2"
+ resolved "https://registry.yarnpkg.com/urijs/-/urijs-1.19.2.tgz#f9be09f00c4c5134b7cb3cf475c1dd394526265a"
+ integrity sha512-s/UIq9ap4JPZ7H1EB5ULo/aOUbWqfDi7FKzMC2Nz+0Si8GiT1rIEaprt8hy3Vy2Ex2aJPpOQv4P4DuOZ+K1c6w==
+
+util-deprecate@~1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
+ integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=
+
+viewport-mercator-project@^6.1.0, viewport-mercator-project@^6.2.1:
+ version "6.2.3"
+ resolved "https://registry.yarnpkg.com/viewport-mercator-project/-/viewport-mercator-project-6.2.3.tgz#4122040f51ef9553fa41a46bcc6502977b3909c6"
+ integrity sha512-QQb0/qCLlP4DdfbHHSWVYXpghB2wkLIiiZQnoelOB59mXKQSyZVxjreq1S+gaBJFpcGkWEcyVtre0+2y2DTl/Q==
+ dependencies:
+ "@babel/runtime" "^7.0.0"
+ gl-matrix "^3.0.0"
+
+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"
+
+wgs84@0.0.0:
+ version "0.0.0"
+ resolved "https://registry.yarnpkg.com/wgs84/-/wgs84-0.0.0.tgz#34fdc555917b6e57cf2a282ed043710c049cdc76"
+ integrity sha1-NP3FVZF7blfPKigu0ENxDASc3HY=
+
+xss@^1.0.6:
+ version "1.0.7"
+ resolved "https://registry.yarnpkg.com/xss/-/xss-1.0.7.tgz#a554cbd5e909324bd6893fb47fff441ad54e2a95"
+ integrity sha512-A9v7tblGvxu8TWXQC9rlpW96a+LN1lyw6wyhpTmmGW+FwRMactchBR3ROKSi33UPCUcUHSu8s9YP6F+K3Mw//w==
+ dependencies:
+ commander "^2.20.3"
+ cssfilter "0.0.10"