diff --git a/src/plugins/maps_dashboards/common/index.ts b/src/plugins/maps_dashboards/common/index.ts
index 45d2ce9e..fd9e6517 100644
--- a/src/plugins/maps_dashboards/common/index.ts
+++ b/src/plugins/maps_dashboards/common/index.ts
@@ -3,5 +3,20 @@
* SPDX-License-Identifier: Apache-2.0
*/
-export const PLUGIN_ID = 'mapsDashboards';
+export const PLUGIN_ID = 'maps-dashboards';
export const PLUGIN_NAME = 'Maps';
+
+// This style URL is only used for development, will replace with production vector tile service url.
+export const MAP_VECTOR_TILE_URL =
+ 'https://dldbnqfps17cd.cloudfront.net/styles/basic-preview/compressedstyle.json';
+
+// Starting position [lng, lat] and zoom
+export const MAP_INITIAL_STATE = {
+ lng: 0,
+ lat: 0,
+ zoom: 1,
+};
+
+export const APP_PATH = {
+ CREATE_MAP: '/create-map',
+};
diff --git a/src/plugins/maps_dashboards/package-lock.json b/src/plugins/maps_dashboards/package-lock.json
new file mode 100644
index 00000000..f8a43c38
--- /dev/null
+++ b/src/plugins/maps_dashboards/package-lock.json
@@ -0,0 +1,244 @@
+{
+ "name": "mapsDashboards",
+ "version": "3.0.0.0",
+ "lockfileVersion": 1,
+ "requires": true,
+ "dependencies": {
+ "@mapbox/geojson-rewind": {
+ "version": "0.5.2",
+ "resolved": "https://registry.npmjs.org/@mapbox/geojson-rewind/-/geojson-rewind-0.5.2.tgz",
+ "integrity": "sha512-tJaT+RbYGJYStt7wI3cq4Nl4SXxG8W7JDG5DMJu97V25RnbNg3QtQtf+KD+VLjNpWKYsRvXDNmNrBgEETr1ifA==",
+ "requires": {
+ "get-stream": "^6.0.1",
+ "minimist": "^1.2.6"
+ }
+ },
+ "@mapbox/jsonlint-lines-primitives": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/@mapbox/jsonlint-lines-primitives/-/jsonlint-lines-primitives-2.0.2.tgz",
+ "integrity": "sha512-rY0o9A5ECsTQRVhv7tL/OyDpGAoUB4tTvLiW1DSzQGq4bvTPhNw1VpSNjDJc5GFZ2XuyOtSWSVN05qOtcD71qQ=="
+ },
+ "@mapbox/mapbox-gl-supported": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/@mapbox/mapbox-gl-supported/-/mapbox-gl-supported-2.0.1.tgz",
+ "integrity": "sha512-HP6XvfNIzfoMVfyGjBckjiAOQK9WfX0ywdLubuPMPv+Vqf5fj0uCbgBQYpiqcWZT6cbyyRnTSXDheT1ugvF6UQ=="
+ },
+ "@mapbox/point-geometry": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/@mapbox/point-geometry/-/point-geometry-0.1.0.tgz",
+ "integrity": "sha512-6j56HdLTwWGO0fJPlrZtdU/B13q8Uwmo18Ck2GnGgN9PCFyKTZ3UbXeEdRFh18i9XQ92eH2VdtpJHpBD3aripQ=="
+ },
+ "@mapbox/tiny-sdf": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@mapbox/tiny-sdf/-/tiny-sdf-2.0.5.tgz",
+ "integrity": "sha512-OhXt2lS//WpLdkqrzo/KwB7SRD8AiNTFFzuo9n14IBupzIMa67yGItcK7I2W9D8Ghpa4T04Sw9FWsKCJG50Bxw=="
+ },
+ "@mapbox/unitbezier": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/@mapbox/unitbezier/-/unitbezier-0.0.1.tgz",
+ "integrity": "sha512-nMkuDXFv60aBr9soUG5q+GvZYL+2KZHVvsqFCzqnkGEf46U2fvmytHaEVc1/YZbiLn8X+eR3QzX1+dwDO1lxlw=="
+ },
+ "@mapbox/vector-tile": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/@mapbox/vector-tile/-/vector-tile-1.3.1.tgz",
+ "integrity": "sha512-MCEddb8u44/xfQ3oD+Srl/tNcQoqTw3goGk2oLsrFxOTc3dUp+kAnby3PvAeeBYSMSjSPD1nd1AJA6W49WnoUw==",
+ "requires": {
+ "@mapbox/point-geometry": "~0.1.0"
+ }
+ },
+ "@mapbox/whoots-js": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/@mapbox/whoots-js/-/whoots-js-3.1.0.tgz",
+ "integrity": "sha512-Es6WcD0nO5l+2BOQS4uLfNPYQaNDfbot3X1XUoloz+x0mPDS3eeORZJl06HXjwBG1fOGwCRnzK88LMdxKRrd6Q=="
+ },
+ "@types/geojson": {
+ "version": "7946.0.10",
+ "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.10.tgz",
+ "integrity": "sha512-Nmh0K3iWQJzniTuPRcJn5hxXkfB1T1pgB89SBig5PlJQU5yocazeu4jATJlaA0GYFKWMqDdvYemoSnF2pXgLVA=="
+ },
+ "@types/mapbox__point-geometry": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/@types/mapbox__point-geometry/-/mapbox__point-geometry-0.1.2.tgz",
+ "integrity": "sha512-D0lgCq+3VWV85ey1MZVkE8ZveyuvW5VAfuahVTQRpXFQTxw03SuIf1/K4UQ87MMIXVKzpFjXFiFMZzLj2kU+iA=="
+ },
+ "@types/mapbox__vector-tile": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/@types/mapbox__vector-tile/-/mapbox__vector-tile-1.3.0.tgz",
+ "integrity": "sha512-kDwVreQO5V4c8yAxzZVQLE5tyWF+IPToAanloQaSnwfXmIcJ7cyOrv8z4Ft4y7PsLYmhWXmON8MBV8RX0Rgr8g==",
+ "requires": {
+ "@types/geojson": "*",
+ "@types/mapbox__point-geometry": "*",
+ "@types/pbf": "*"
+ }
+ },
+ "@types/pbf": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/@types/pbf/-/pbf-3.0.2.tgz",
+ "integrity": "sha512-EDrLIPaPXOZqDjrkzxxbX7UlJSeQVgah3i0aA4pOSzmK9zq3BIh7/MZIQxED7slJByvKM4Gc6Hypyu2lJzh3SQ=="
+ },
+ "csscolorparser": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/csscolorparser/-/csscolorparser-1.0.3.tgz",
+ "integrity": "sha512-umPSgYwZkdFoUrH5hIq5kf0wPSXiro51nPw0j2K/c83KflkPSTBGMz6NJvMB+07VlL0y7VPo6QJcDjcgKTTm3w=="
+ },
+ "earcut": {
+ "version": "2.2.4",
+ "resolved": "https://registry.npmjs.org/earcut/-/earcut-2.2.4.tgz",
+ "integrity": "sha512-/pjZsA1b4RPHbeWZQn66SWS8nZZWLQQ23oE3Eam7aroEFGEvwKAsJfZ9ytiEMycfzXWpca4FA9QIOehf7PocBQ=="
+ },
+ "geojson-vt": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/geojson-vt/-/geojson-vt-3.2.1.tgz",
+ "integrity": "sha512-EvGQQi/zPrDA6zr6BnJD/YhwAkBP8nnJ9emh3EnHQKVMfg/MRVtPbMYdgVy/IaEmn4UfagD2a6fafPDL5hbtwg=="
+ },
+ "get-stream": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz",
+ "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg=="
+ },
+ "gl-matrix": {
+ "version": "3.4.3",
+ "resolved": "https://registry.npmjs.org/gl-matrix/-/gl-matrix-3.4.3.tgz",
+ "integrity": "sha512-wcCp8vu8FT22BnvKVPjXa/ICBWRq/zjFfdofZy1WSpQZpphblv12/bOQLBC1rMM7SGOFS9ltVmKOHil5+Ml7gA=="
+ },
+ "global-prefix": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz",
+ "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==",
+ "requires": {
+ "ini": "^1.3.5",
+ "kind-of": "^6.0.2",
+ "which": "^1.3.1"
+ }
+ },
+ "ieee754": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
+ "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA=="
+ },
+ "ini": {
+ "version": "1.3.8",
+ "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
+ "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew=="
+ },
+ "isexe": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="
+ },
+ "kdbush": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/kdbush/-/kdbush-3.0.0.tgz",
+ "integrity": "sha512-hRkd6/XW4HTsA9vjVpY9tuXJYLSlelnkTmVFu4M9/7MIYQtFcHpbugAU7UbOfjOiVSVYl2fqgBuJ32JUmRo5Ew=="
+ },
+ "kind-of": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
+ "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw=="
+ },
+ "maplibre-gl": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/maplibre-gl/-/maplibre-gl-2.4.0.tgz",
+ "integrity": "sha512-csNFylzntPmHWidczfgCZpvbTSmhaWvLRj9e1ezUDBEPizGgshgm3ea1T5TCNEEBq0roauu7BPuRZjA3wO4KqA==",
+ "requires": {
+ "@mapbox/geojson-rewind": "^0.5.2",
+ "@mapbox/jsonlint-lines-primitives": "^2.0.2",
+ "@mapbox/mapbox-gl-supported": "^2.0.1",
+ "@mapbox/point-geometry": "^0.1.0",
+ "@mapbox/tiny-sdf": "^2.0.5",
+ "@mapbox/unitbezier": "^0.0.1",
+ "@mapbox/vector-tile": "^1.3.1",
+ "@mapbox/whoots-js": "^3.1.0",
+ "@types/geojson": "^7946.0.10",
+ "@types/mapbox__point-geometry": "^0.1.2",
+ "@types/mapbox__vector-tile": "^1.3.0",
+ "@types/pbf": "^3.0.2",
+ "csscolorparser": "~1.0.3",
+ "earcut": "^2.2.4",
+ "geojson-vt": "^3.2.1",
+ "gl-matrix": "^3.4.3",
+ "global-prefix": "^3.0.0",
+ "murmurhash-js": "^1.0.0",
+ "pbf": "^3.2.1",
+ "potpack": "^1.0.2",
+ "quickselect": "^2.0.0",
+ "supercluster": "^7.1.5",
+ "tinyqueue": "^2.0.3",
+ "vt-pbf": "^3.1.3"
+ }
+ },
+ "minimist": {
+ "version": "1.2.6",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz",
+ "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q=="
+ },
+ "murmurhash-js": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/murmurhash-js/-/murmurhash-js-1.0.0.tgz",
+ "integrity": "sha512-TvmkNhkv8yct0SVBSy+o8wYzXjE4Zz3PCesbfs8HiCXXdcTuocApFv11UWlNFWKYsP2okqrhb7JNlSm9InBhIw=="
+ },
+ "pbf": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/pbf/-/pbf-3.2.1.tgz",
+ "integrity": "sha512-ClrV7pNOn7rtmoQVF4TS1vyU0WhYRnP92fzbfF75jAIwpnzdJXf8iTd4CMEqO4yUenH6NDqLiwjqlh6QgZzgLQ==",
+ "requires": {
+ "ieee754": "^1.1.12",
+ "resolve-protobuf-schema": "^2.1.0"
+ }
+ },
+ "potpack": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/potpack/-/potpack-1.0.2.tgz",
+ "integrity": "sha512-choctRBIV9EMT9WGAZHn3V7t0Z2pMQyl0EZE6pFc/6ml3ssw7Dlf/oAOvFwjm1HVsqfQN8GfeFyJ+d8tRzqueQ=="
+ },
+ "protocol-buffers-schema": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/protocol-buffers-schema/-/protocol-buffers-schema-3.6.0.tgz",
+ "integrity": "sha512-TdDRD+/QNdrCGCE7v8340QyuXd4kIWIgapsE2+n/SaGiSSbomYl4TjHlvIoCWRpE7wFt02EpB35VVA2ImcBVqw=="
+ },
+ "quickselect": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/quickselect/-/quickselect-2.0.0.tgz",
+ "integrity": "sha512-RKJ22hX8mHe3Y6wH/N3wCM6BWtjaxIyyUIkpHOvfFnxdI4yD4tBXEBKSbriGujF6jnSVkJrffuo6vxACiSSxIw=="
+ },
+ "resolve-protobuf-schema": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/resolve-protobuf-schema/-/resolve-protobuf-schema-2.1.0.tgz",
+ "integrity": "sha512-kI5ffTiZWmJaS/huM8wZfEMer1eRd7oJQhDuxeCLe3t7N7mX3z94CN0xPxBQxFYQTSNz9T0i+v6inKqSdK8xrQ==",
+ "requires": {
+ "protocol-buffers-schema": "^3.3.1"
+ }
+ },
+ "supercluster": {
+ "version": "7.1.5",
+ "resolved": "https://registry.npmjs.org/supercluster/-/supercluster-7.1.5.tgz",
+ "integrity": "sha512-EulshI3pGUM66o6ZdH3ReiFcvHpM3vAigyK+vcxdjpJyEbIIrtbmBdY23mGgnI24uXiGFvrGq9Gkum/8U7vJWg==",
+ "requires": {
+ "kdbush": "^3.0.0"
+ }
+ },
+ "tinyqueue": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/tinyqueue/-/tinyqueue-2.0.3.tgz",
+ "integrity": "sha512-ppJZNDuKGgxzkHihX8v9v9G5f+18gzaTfrukGrq6ueg0lmH4nqVnA2IPG0AEH3jKEk2GRJCUhDoqpoiw3PHLBA=="
+ },
+ "vt-pbf": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/vt-pbf/-/vt-pbf-3.1.3.tgz",
+ "integrity": "sha512-2LzDFzt0mZKZ9IpVF2r69G9bXaP2Q2sArJCmcCgvfTdCCZzSyz4aCLoQyUilu37Ll56tCblIZrXFIjNUpGIlmA==",
+ "requires": {
+ "@mapbox/point-geometry": "0.1.0",
+ "@mapbox/vector-tile": "^1.3.1",
+ "pbf": "^3.2.1"
+ }
+ },
+ "which": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
+ "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
+ "requires": {
+ "isexe": "^2.0.0"
+ }
+ }
+ }
+}
diff --git a/src/plugins/maps_dashboards/package.json b/src/plugins/maps_dashboards/package.json
index e7d9a042..44692ffa 100644
--- a/src/plugins/maps_dashboards/package.json
+++ b/src/plugins/maps_dashboards/package.json
@@ -6,5 +6,8 @@
"build": "yarn plugin-helpers build",
"plugin-helpers": "node ../../scripts/plugin_helpers",
"osd": "node ../../scripts/osd"
+ },
+ "dependencies": {
+ "maplibre-gl": "^2.4.0"
}
}
diff --git a/src/plugins/maps_dashboards/public/components/app.tsx b/src/plugins/maps_dashboards/public/components/app.tsx
index dd9eaad6..0b1aa3d9 100644
--- a/src/plugins/maps_dashboards/public/components/app.tsx
+++ b/src/plugins/maps_dashboards/public/components/app.tsx
@@ -3,29 +3,13 @@
* SPDX-License-Identifier: Apache-2.0
*/
-/*
- * This file has temporary code for the landing page.
- * Based on the Maps visualization tab, this file will be
- * changed in the future.
- */
-
-import React, { useCallback } from 'react';
-import { i18n } from '@osd/i18n';
+import React from 'react';
+import { HashRouter as Router, Route, Switch } from 'react-router-dom';
import { I18nProvider } from '@osd/i18n/react';
-import { BrowserRouter as Router } from 'react-router-dom';
-
-import {
- EuiPage,
- EuiPageBody,
- EuiPageContentBody,
-} from '@elastic/eui';
-
-import {
- TableListView,
-} from '../../../../src/plugins/opensearch_dashboards_react/public';
-
+import { MapsList, Map } from '../pages/';
import { CoreStart } from '../../../../src/core/public';
import { NavigationPublicPluginStart } from '../../../../src/plugins/navigation/public';
+import { APP_PATH } from '../../common/index';
interface MapsDashboardsAppDeps {
basename: string;
@@ -34,74 +18,21 @@ interface MapsDashboardsAppDeps {
navigation: NavigationPublicPluginStart;
}
-export const MapsDashboardsApp = ({
- basename,
- notifications,
- http,
- navigation,
-}: MapsDashboardsAppDeps) => {
- const find = async (num: number) => {
- let hits: never[] = [];
- await http.post('/api/maps_dashboards/example').then((res) => {
- hits = res.hits;
- });
- return Promise.resolve({
- total: num,
- hits: hits,
- });
- };
-
- const tableColumns = [
- {
- field: 'title',
- name: i18n.translate('maps.listing.table.titleColumnName', {
- defaultMessage: 'Title',
- }),
- sortable: true,
- },
- {
- field: 'description',
- name: i18n.translate('maps.listing.table.descriptionColumnName', {
- defaultMessage: 'Description',
- }),
- sortable: true,
- },
- ];
-
+export const MapsDashboardsApp = ({ basename, notifications, http }: MapsDashboardsAppDeps) => {
// Render the application DOM.
return (
- <>
-
-
-
- {},[])}
- findItems={find.bind(null, 3)}
- deleteItems={async() => {await Promise.all([])}}
- editItem={useCallback(() => {},[])}
- tableColumns={tableColumns}
- listingLimit={10}
- initialPageSize={10}
- initialFilter={''}
- noItemsFragment={}
- entityName={i18n.translate('maps.listing.table.entityName', {
- defaultMessage: 'map',
- })}
- entityNamePlural={i18n.translate('maps.listing.table.entityNamePlural', {
- defaultMessage: 'maps',
- })}
- tableListTitle={i18n.translate('maps.listing.table.listTitle', {
- defaultMessage: 'Maps',
- })}
- toastNotifications={notifications.toasts}
- />
-
-
-
- >
+
+
+ } />
+ }
+ />
+
+
);
diff --git a/src/plugins/maps_dashboards/public/components/layer_control_panel/MaplibreLayersPanelControl.tsx b/src/plugins/maps_dashboards/public/components/layer_control_panel/MaplibreLayersPanelControl.tsx
new file mode 100644
index 00000000..6e276134
--- /dev/null
+++ b/src/plugins/maps_dashboards/public/components/layer_control_panel/MaplibreLayersPanelControl.tsx
@@ -0,0 +1,27 @@
+/*
+ * Copyright OpenSearch Contributors
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+import React from 'react';
+import ReactDOM from 'react-dom';
+import { LayerControlPanel } from './layer_control_panel';
+
+// Render layer panel on top of Maplibre
+class MaplibreLayersPanelControl {
+ private _container: HTMLElement | undefined;
+
+ onAdd(map: any) {
+ this._container = document.createElement('div');
+ ReactDOM.render(, this._container);
+ return this._container;
+ }
+
+ onRemove() {
+ if (this._container && this._container.parentNode) {
+ this._container.parentNode.removeChild(this._container);
+ }
+ }
+}
+
+export { MaplibreLayersPanelControl };
diff --git a/src/plugins/maps_dashboards/public/components/layer_control_panel/index.ts b/src/plugins/maps_dashboards/public/components/layer_control_panel/index.ts
new file mode 100644
index 00000000..00ed4cfb
--- /dev/null
+++ b/src/plugins/maps_dashboards/public/components/layer_control_panel/index.ts
@@ -0,0 +1,7 @@
+/*
+ * Copyright OpenSearch Contributors
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+export { LayerControlPanel } from './layer_control_panel';
+export { MaplibreLayersPanelControl } from './MaplibreLayersPanelControl';
diff --git a/src/plugins/maps_dashboards/public/components/layer_control_panel/layer_control_panel.scss b/src/plugins/maps_dashboards/public/components/layer_control_panel/layer_control_panel.scss
new file mode 100644
index 00000000..d31ca335
--- /dev/null
+++ b/src/plugins/maps_dashboards/public/components/layer_control_panel/layer_control_panel.scss
@@ -0,0 +1,7 @@
+.maplibre-control-layer {
+ min-width: 15rem;
+
+ .maplibre-control-layer-title {
+ padding-left: 0.5rem;
+ }
+}
diff --git a/src/plugins/maps_dashboards/public/components/layer_control_panel/layer_control_panel.tsx b/src/plugins/maps_dashboards/public/components/layer_control_panel/layer_control_panel.tsx
new file mode 100644
index 00000000..164cb296
--- /dev/null
+++ b/src/plugins/maps_dashboards/public/components/layer_control_panel/layer_control_panel.tsx
@@ -0,0 +1,31 @@
+/*
+ * Copyright OpenSearch Contributors
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+import React from 'react';
+import { EuiPanel, EuiSpacer, EuiTitle } from '@elastic/eui';
+import { FormattedMessage, I18nProvider } from '@osd/i18n/react';
+import './layer_control_panel.scss';
+
+const LayerControlPanel = () => {
+ return (
+
+
+
+
+
+
+
+
+ Roadmap
+
+
+
+ );
+};
+
+export { LayerControlPanel };
diff --git a/src/plugins/maps_dashboards/public/index.scss b/src/plugins/maps_dashboards/public/index.scss
index ff711240..d4c6d87c 100644
--- a/src/plugins/maps_dashboards/public/index.scss
+++ b/src/plugins/maps_dashboards/public/index.scss
@@ -1 +1,21 @@
+/*
+ * Copyright OpenSearch Contributors
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+@import "maplibre-gl/dist/maplibre-gl.css";
+
/* stylelint-disable no-empty-source */
+.map-container {
+ width: 100%;
+ min-height: calc(100vh - 98px);
+}
+
+.mapboxgl-ctrl-top-left, .maplibregl-ctrl-top-left {
+ left: 10px;
+ top: 10px;
+}
+
+.maplibre-control-layer{
+ pointer-events: auto;
+}
diff --git a/src/plugins/maps_dashboards/public/pages/index.tsx b/src/plugins/maps_dashboards/public/pages/index.tsx
new file mode 100644
index 00000000..f989a0c8
--- /dev/null
+++ b/src/plugins/maps_dashboards/public/pages/index.tsx
@@ -0,0 +1,7 @@
+/*
+ * Copyright OpenSearch Contributors
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+export { MapsList } from './list_maps_page/maps_list';
+export { Map } from './map_page/map';
diff --git a/src/plugins/maps_dashboards/public/pages/list_maps_page/maps_list.tsx b/src/plugins/maps_dashboards/public/pages/list_maps_page/maps_list.tsx
new file mode 100644
index 00000000..bbc4d0fd
--- /dev/null
+++ b/src/plugins/maps_dashboards/public/pages/list_maps_page/maps_list.tsx
@@ -0,0 +1,90 @@
+/*
+ * Copyright OpenSearch Contributors
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+import { i18n } from '@osd/i18n';
+import React, { useCallback } from 'react';
+import { I18nProvider } from '@osd/i18n/react';
+import { EuiPage, EuiPageBody, EuiPageContentBody } from '@elastic/eui';
+import { CoreStart } from 'opensearch-dashboards/public';
+import { TableListView } from '../../../../../src/plugins/opensearch_dashboards_react/public';
+
+export const MapsList = (props: {
+ notifications: CoreStart['notifications'];
+ http: CoreStart['http'];
+}) => {
+ const { http } = props;
+ const find = async (num: number) => {
+ const res = await http.post('/api/maps-dashboards/example');
+ return {
+ total: num,
+ hits: res.hits,
+ };
+ };
+
+ const tableColumns = [
+ {
+ field: 'title',
+ name: i18n.translate('maps.listing.table.titleColumnName', {
+ defaultMessage: 'Title',
+ }),
+ sortable: true,
+ },
+ {
+ field: 'description',
+ name: i18n.translate('maps.listing.table.descriptionColumnName', {
+ defaultMessage: 'Description',
+ }),
+ sortable: true,
+ },
+ ];
+
+ const createItem = useCallback(() => {
+ window.location.href = http.basePath.prepend('/app/maps-dashboards/#/create-map');
+ }, [http.basePath]);
+
+ const findItem = find.bind(null, 3);
+
+ const deleteItems = async () => {
+ await Promise.all([]);
+ };
+
+ const editItem = useCallback(() => {}, []);
+
+ // Render the map list DOM.
+ return (
+
+ <>
+
+
+
+ }
+ entityName={i18n.translate('maps.listing.table.entityName', {
+ defaultMessage: 'map',
+ })}
+ entityNamePlural={i18n.translate('maps.listing.table.entityNamePlural', {
+ defaultMessage: 'maps',
+ })}
+ tableListTitle={i18n.translate('maps.listing.table.listTitle', {
+ defaultMessage: 'Maps',
+ })}
+ toastNotifications={props.notifications.toasts}
+ />
+
+
+
+ >
+
+ );
+};
diff --git a/src/plugins/maps_dashboards/public/pages/map_page/map.tsx b/src/plugins/maps_dashboards/public/pages/map_page/map.tsx
new file mode 100644
index 00000000..cf7db0c2
--- /dev/null
+++ b/src/plugins/maps_dashboards/public/pages/map_page/map.tsx
@@ -0,0 +1,33 @@
+/*
+ * Copyright OpenSearch Contributors
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+import React, { useEffect, useRef } from 'react';
+import { Map as Maplibre } from 'maplibre-gl';
+import { MaplibreLayersPanelControl } from '../../components/layer_control_panel';
+import '../../index.scss';
+import { MAP_VECTOR_TILE_URL, MAP_INITIAL_STATE } from '../../../common/index';
+
+export const Map = () => {
+ const mapContainer = useRef(null);
+
+ useEffect(() => {
+ const mapStyle = MAP_VECTOR_TILE_URL;
+
+ const initialState = MAP_INITIAL_STATE;
+
+ const map = new Maplibre({
+ // @ts-ignore
+ container: mapContainer.current,
+ style: `${mapStyle}`,
+ center: [initialState.lng, initialState.lat],
+ zoom: initialState.zoom,
+ });
+
+ map.addControl(new MaplibreLayersPanelControl(), 'top-left');
+ }, []);
+
+ // render the map DOM
+ return
;
+};
diff --git a/src/plugins/maps_dashboards/public/plugin.ts b/src/plugins/maps_dashboards/public/plugin.ts
index bb0ae913..ade9f04b 100644
--- a/src/plugins/maps_dashboards/public/plugin.ts
+++ b/src/plugins/maps_dashboards/public/plugin.ts
@@ -4,26 +4,26 @@
*/
import { i18n } from '@osd/i18n';
-import {
+import {
AppMountParameters,
CoreSetup,
CoreStart,
DEFAULT_APP_CATEGORIES,
- Plugin
+ Plugin,
} from '../../../src/core/public';
import {
MapsDashboardsPluginSetup,
MapsDashboardsPluginStart,
AppPluginStartDependencies,
} from './types';
-import { PLUGIN_NAME } from '../common';
+import { PLUGIN_NAME, PLUGIN_ID } from '../common';
export class MapsDashboardsPlugin
implements Plugin {
public setup(core: CoreSetup): MapsDashboardsPluginSetup {
// Register an application into the side navigation menu
core.application.register({
- id: 'mapsDashboards',
+ id: PLUGIN_ID,
title: PLUGIN_NAME,
category: DEFAULT_APP_CATEGORIES.opensearchDashboards,
async mount(params: AppMountParameters) {
diff --git a/src/plugins/maps_dashboards/server/routes/index.ts b/src/plugins/maps_dashboards/server/routes/index.ts
index c87e4f5f..e94b016a 100644
--- a/src/plugins/maps_dashboards/server/routes/index.ts
+++ b/src/plugins/maps_dashboards/server/routes/index.ts
@@ -5,7 +5,7 @@
/*
* This is temporary API code for plugin to work, will be
- * removed in the future.
+ * removed in the future.
*/
import { IRouter } from '../../../../src/core/server';
@@ -15,8 +15,8 @@ const SAMPLE_NUMBER = 3;
export function defineRoutes(router: IRouter) {
router.post(
{
- path: '/api/maps_dashboards/example',
- validate: false
+ path: '/api/maps-dashboards/example',
+ validate: false,
},
async (context, request, response) => {
const hits = [];
@@ -29,7 +29,7 @@ export function defineRoutes(router: IRouter) {
}
return response.ok({
body: {
- hits: hits,
+ hits,
},
});
}
diff --git a/src/plugins/maps_dashboards/yarn.lock b/src/plugins/maps_dashboards/yarn.lock
new file mode 100644
index 00000000..4f6e9646
--- /dev/null
+++ b/src/plugins/maps_dashboards/yarn.lock
@@ -0,0 +1,229 @@
+# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
+# yarn lockfile v1
+
+
+"@mapbox/geojson-rewind@^0.5.2":
+ version "0.5.2"
+ resolved "https://registry.yarnpkg.com/@mapbox/geojson-rewind/-/geojson-rewind-0.5.2.tgz#591a5d71a9cd1da1a0bf3420b3bea31b0fc7946a"
+ integrity sha512-tJaT+RbYGJYStt7wI3cq4Nl4SXxG8W7JDG5DMJu97V25RnbNg3QtQtf+KD+VLjNpWKYsRvXDNmNrBgEETr1ifA==
+ dependencies:
+ get-stream "^6.0.1"
+ minimist "^1.2.6"
+
+"@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 sha512-rY0o9A5ECsTQRVhv7tL/OyDpGAoUB4tTvLiW1DSzQGq4bvTPhNw1VpSNjDJc5GFZ2XuyOtSWSVN05qOtcD71qQ==
+
+"@mapbox/mapbox-gl-supported@^2.0.1":
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/@mapbox/mapbox-gl-supported/-/mapbox-gl-supported-2.0.1.tgz#c15367178d8bfe4765e6b47b542fe821ce259c7b"
+ integrity sha512-HP6XvfNIzfoMVfyGjBckjiAOQK9WfX0ywdLubuPMPv+Vqf5fj0uCbgBQYpiqcWZT6cbyyRnTSXDheT1ugvF6UQ==
+
+"@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 sha512-6j56HdLTwWGO0fJPlrZtdU/B13q8Uwmo18Ck2GnGgN9PCFyKTZ3UbXeEdRFh18i9XQ92eH2VdtpJHpBD3aripQ==
+
+"@mapbox/tiny-sdf@^2.0.5":
+ version "2.0.5"
+ resolved "https://registry.yarnpkg.com/@mapbox/tiny-sdf/-/tiny-sdf-2.0.5.tgz#cdba698d3d65087643130f9af43a2b622ce0b372"
+ integrity sha512-OhXt2lS//WpLdkqrzo/KwB7SRD8AiNTFFzuo9n14IBupzIMa67yGItcK7I2W9D8Ghpa4T04Sw9FWsKCJG50Bxw==
+
+"@mapbox/unitbezier@^0.0.1":
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/@mapbox/unitbezier/-/unitbezier-0.0.1.tgz#d32deb66c7177e9e9dfc3bbd697083e2e657ff01"
+ integrity sha512-nMkuDXFv60aBr9soUG5q+GvZYL+2KZHVvsqFCzqnkGEf46U2fvmytHaEVc1/YZbiLn8X+eR3QzX1+dwDO1lxlw==
+
+"@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==
+
+"@types/geojson@*", "@types/geojson@^7946.0.10":
+ version "7946.0.10"
+ resolved "https://registry.yarnpkg.com/@types/geojson/-/geojson-7946.0.10.tgz#6dfbf5ea17142f7f9a043809f1cd4c448cb68249"
+ integrity sha512-Nmh0K3iWQJzniTuPRcJn5hxXkfB1T1pgB89SBig5PlJQU5yocazeu4jATJlaA0GYFKWMqDdvYemoSnF2pXgLVA==
+
+"@types/mapbox__point-geometry@*", "@types/mapbox__point-geometry@^0.1.2":
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/@types/mapbox__point-geometry/-/mapbox__point-geometry-0.1.2.tgz#488a9b76e8457d6792ea2504cdd4ecdd9860a27e"
+ integrity sha512-D0lgCq+3VWV85ey1MZVkE8ZveyuvW5VAfuahVTQRpXFQTxw03SuIf1/K4UQ87MMIXVKzpFjXFiFMZzLj2kU+iA==
+
+"@types/mapbox__vector-tile@^1.3.0":
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/@types/mapbox__vector-tile/-/mapbox__vector-tile-1.3.0.tgz#8fa1379dbaead1e1b639b8d96cfd174404c379d6"
+ integrity sha512-kDwVreQO5V4c8yAxzZVQLE5tyWF+IPToAanloQaSnwfXmIcJ7cyOrv8z4Ft4y7PsLYmhWXmON8MBV8RX0Rgr8g==
+ dependencies:
+ "@types/geojson" "*"
+ "@types/mapbox__point-geometry" "*"
+ "@types/pbf" "*"
+
+"@types/pbf@*", "@types/pbf@^3.0.2":
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/@types/pbf/-/pbf-3.0.2.tgz#8d291ad68b4b8c533e96c174a2e3e6399a59ed61"
+ integrity sha512-EDrLIPaPXOZqDjrkzxxbX7UlJSeQVgah3i0aA4pOSzmK9zq3BIh7/MZIQxED7slJByvKM4Gc6Hypyu2lJzh3SQ==
+
+csscolorparser@~1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/csscolorparser/-/csscolorparser-1.0.3.tgz#b34f391eea4da8f3e98231e2ccd8df9c041f171b"
+ integrity sha512-umPSgYwZkdFoUrH5hIq5kf0wPSXiro51nPw0j2K/c83KflkPSTBGMz6NJvMB+07VlL0y7VPo6QJcDjcgKTTm3w==
+
+earcut@^2.2.4:
+ version "2.2.4"
+ resolved "https://registry.yarnpkg.com/earcut/-/earcut-2.2.4.tgz#6d02fd4d68160c114825d06890a92ecaae60343a"
+ integrity sha512-/pjZsA1b4RPHbeWZQn66SWS8nZZWLQQ23oE3Eam7aroEFGEvwKAsJfZ9ytiEMycfzXWpca4FA9QIOehf7PocBQ==
+
+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-stream@^6.0.1:
+ version "6.0.1"
+ resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7"
+ integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==
+
+gl-matrix@^3.4.3:
+ version "3.4.3"
+ resolved "https://registry.yarnpkg.com/gl-matrix/-/gl-matrix-3.4.3.tgz#fc1191e8320009fd4d20e9339595c6041ddc22c9"
+ integrity sha512-wcCp8vu8FT22BnvKVPjXa/ICBWRq/zjFfdofZy1WSpQZpphblv12/bOQLBC1rMM7SGOFS9ltVmKOHil5+Ml7gA==
+
+global-prefix@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-3.0.0.tgz#fc85f73064df69f50421f47f883fe5b913ba9b97"
+ integrity sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==
+ dependencies:
+ ini "^1.3.5"
+ kind-of "^6.0.2"
+ which "^1.3.1"
+
+ieee754@^1.1.12:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352"
+ integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==
+
+ini@^1.3.5:
+ version "1.3.8"
+ resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c"
+ integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==
+
+isexe@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
+ integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==
+
+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==
+
+kind-of@^6.0.2:
+ version "6.0.3"
+ resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd"
+ integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==
+
+maplibre-gl@^2.4.0:
+ version "2.4.0"
+ resolved "https://registry.yarnpkg.com/maplibre-gl/-/maplibre-gl-2.4.0.tgz#2b53dbf526626bf4ee92ad4f33f13ef09e5af182"
+ integrity sha512-csNFylzntPmHWidczfgCZpvbTSmhaWvLRj9e1ezUDBEPizGgshgm3ea1T5TCNEEBq0roauu7BPuRZjA3wO4KqA==
+ dependencies:
+ "@mapbox/geojson-rewind" "^0.5.2"
+ "@mapbox/jsonlint-lines-primitives" "^2.0.2"
+ "@mapbox/mapbox-gl-supported" "^2.0.1"
+ "@mapbox/point-geometry" "^0.1.0"
+ "@mapbox/tiny-sdf" "^2.0.5"
+ "@mapbox/unitbezier" "^0.0.1"
+ "@mapbox/vector-tile" "^1.3.1"
+ "@mapbox/whoots-js" "^3.1.0"
+ "@types/geojson" "^7946.0.10"
+ "@types/mapbox__point-geometry" "^0.1.2"
+ "@types/mapbox__vector-tile" "^1.3.0"
+ "@types/pbf" "^3.0.2"
+ csscolorparser "~1.0.3"
+ earcut "^2.2.4"
+ geojson-vt "^3.2.1"
+ gl-matrix "^3.4.3"
+ global-prefix "^3.0.0"
+ murmurhash-js "^1.0.0"
+ pbf "^3.2.1"
+ potpack "^1.0.2"
+ quickselect "^2.0.0"
+ supercluster "^7.1.5"
+ tinyqueue "^2.0.3"
+ vt-pbf "^3.1.3"
+
+minimist@^1.2.6:
+ version "1.2.6"
+ resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44"
+ integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==
+
+murmurhash-js@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/murmurhash-js/-/murmurhash-js-1.0.0.tgz#b06278e21fc6c37fa5313732b0412bcb6ae15f51"
+ integrity sha512-TvmkNhkv8yct0SVBSy+o8wYzXjE4Zz3PCesbfs8HiCXXdcTuocApFv11UWlNFWKYsP2okqrhb7JNlSm9InBhIw==
+
+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"
+
+potpack@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/potpack/-/potpack-1.0.2.tgz#23b99e64eb74f5741ffe7656b5b5c4ddce8dfc14"
+ integrity sha512-choctRBIV9EMT9WGAZHn3V7t0Z2pMQyl0EZE6pFc/6ml3ssw7Dlf/oAOvFwjm1HVsqfQN8GfeFyJ+d8tRzqueQ==
+
+protocol-buffers-schema@^3.3.1:
+ version "3.6.0"
+ resolved "https://registry.yarnpkg.com/protocol-buffers-schema/-/protocol-buffers-schema-3.6.0.tgz#77bc75a48b2ff142c1ad5b5b90c94cd0fa2efd03"
+ integrity sha512-TdDRD+/QNdrCGCE7v8340QyuXd4kIWIgapsE2+n/SaGiSSbomYl4TjHlvIoCWRpE7wFt02EpB35VVA2ImcBVqw==
+
+quickselect@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/quickselect/-/quickselect-2.0.0.tgz#f19680a486a5eefb581303e023e98faaf25dd018"
+ integrity sha512-RKJ22hX8mHe3Y6wH/N3wCM6BWtjaxIyyUIkpHOvfFnxdI4yD4tBXEBKSbriGujF6jnSVkJrffuo6vxACiSSxIw==
+
+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"
+
+supercluster@^7.1.5:
+ version "7.1.5"
+ resolved "https://registry.yarnpkg.com/supercluster/-/supercluster-7.1.5.tgz#65a6ce4a037a972767740614c19051b64b8be5a3"
+ integrity sha512-EulshI3pGUM66o6ZdH3ReiFcvHpM3vAigyK+vcxdjpJyEbIIrtbmBdY23mGgnI24uXiGFvrGq9Gkum/8U7vJWg==
+ dependencies:
+ kdbush "^3.0.0"
+
+tinyqueue@^2.0.3:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/tinyqueue/-/tinyqueue-2.0.3.tgz#64d8492ebf39e7801d7bd34062e29b45b2035f08"
+ integrity sha512-ppJZNDuKGgxzkHihX8v9v9G5f+18gzaTfrukGrq6ueg0lmH4nqVnA2IPG0AEH3jKEk2GRJCUhDoqpoiw3PHLBA==
+
+vt-pbf@^3.1.3:
+ version "3.1.3"
+ resolved "https://registry.yarnpkg.com/vt-pbf/-/vt-pbf-3.1.3.tgz#68fd150756465e2edae1cc5c048e063916dcfaac"
+ integrity sha512-2LzDFzt0mZKZ9IpVF2r69G9bXaP2Q2sArJCmcCgvfTdCCZzSyz4aCLoQyUilu37Ll56tCblIZrXFIjNUpGIlmA==
+ dependencies:
+ "@mapbox/point-geometry" "0.1.0"
+ "@mapbox/vector-tile" "^1.3.1"
+ pbf "^3.2.1"
+
+which@^1.3.1:
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a"
+ integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==
+ dependencies:
+ isexe "^2.0.0"