* [Maps] labels for polygons and lines * remove x-pack yarn.lock * add labels to choropleth map wizard * clean up comment * add mvt tile support * only add centroids if there may be lines or polygons * tslint * tslint * do not add centroid to too many features polygon * update get_tile expect statements * move turf dependencies from devDependencies to dependencies * update jest snapshot and functional test expects * fix functional test expect * another functional test expect update * functional test updates * expect * pew pew source expect updates * update joins expect * update mapbox style expects * update join visibility expects for geocentroids * update join visibility expects for geocentroids * another functional test expect update * review feedback * update yarn.lock * tslint Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com>
This commit is contained in:
parent
ffbd1890dd
commit
5d7510b05c
14
package.json
14
package.json
|
@ -137,7 +137,16 @@
|
||||||
"@loaders.gl/json": "^2.3.1",
|
"@loaders.gl/json": "^2.3.1",
|
||||||
"@slack/webhook": "^5.0.0",
|
"@slack/webhook": "^5.0.0",
|
||||||
"@storybook/addons": "^6.0.16",
|
"@storybook/addons": "^6.0.16",
|
||||||
|
"@turf/along": "6.0.1",
|
||||||
|
"@turf/area": "6.0.1",
|
||||||
|
"@turf/bbox": "6.0.1",
|
||||||
|
"@turf/bbox-polygon": "6.0.1",
|
||||||
|
"@turf/boolean-contains": "6.0.1",
|
||||||
|
"@turf/center-of-mass": "6.0.1",
|
||||||
"@turf/circle": "6.0.1",
|
"@turf/circle": "6.0.1",
|
||||||
|
"@turf/distance": "6.0.1",
|
||||||
|
"@turf/helpers": "6.0.1",
|
||||||
|
"@turf/length": "^6.0.2",
|
||||||
"JSONStream": "1.3.5",
|
"JSONStream": "1.3.5",
|
||||||
"abort-controller": "^3.0.0",
|
"abort-controller": "^3.0.0",
|
||||||
"abortcontroller-polyfill": "^1.4.0",
|
"abortcontroller-polyfill": "^1.4.0",
|
||||||
|
@ -396,11 +405,6 @@
|
||||||
"@testing-library/react": "^11.0.4",
|
"@testing-library/react": "^11.0.4",
|
||||||
"@testing-library/react-hooks": "^3.4.1",
|
"@testing-library/react-hooks": "^3.4.1",
|
||||||
"@testing-library/user-event": "^12.1.6",
|
"@testing-library/user-event": "^12.1.6",
|
||||||
"@turf/bbox": "6.0.1",
|
|
||||||
"@turf/bbox-polygon": "6.0.1",
|
|
||||||
"@turf/boolean-contains": "6.0.1",
|
|
||||||
"@turf/distance": "6.0.1",
|
|
||||||
"@turf/helpers": "6.0.1",
|
|
||||||
"@types/accept": "3.1.1",
|
"@types/accept": "3.1.1",
|
||||||
"@types/angular": "^1.6.56",
|
"@types/angular": "^1.6.56",
|
||||||
"@types/angular-mocks": "^1.7.0",
|
"@types/angular-mocks": "^1.7.0",
|
||||||
|
|
|
@ -43,8 +43,13 @@ export const API_ROOT_PATH = `/${GIS_API_PATH}`;
|
||||||
export const MVT_GETTILE_API_PATH = 'mvt/getTile';
|
export const MVT_GETTILE_API_PATH = 'mvt/getTile';
|
||||||
export const MVT_GETGRIDTILE_API_PATH = 'mvt/getGridTile';
|
export const MVT_GETGRIDTILE_API_PATH = 'mvt/getGridTile';
|
||||||
export const MVT_SOURCE_LAYER_NAME = 'source_layer';
|
export const MVT_SOURCE_LAYER_NAME = 'source_layer';
|
||||||
|
// Identifies vector tile "too many features" feature.
|
||||||
|
// "too many features" feature is a box showing area that contains too many features for single ES search response
|
||||||
export const KBN_TOO_MANY_FEATURES_PROPERTY = '__kbn_too_many_features__';
|
export const KBN_TOO_MANY_FEATURES_PROPERTY = '__kbn_too_many_features__';
|
||||||
export const KBN_TOO_MANY_FEATURES_IMAGE_ID = '__kbn_too_many_features_image_id__';
|
export const KBN_TOO_MANY_FEATURES_IMAGE_ID = '__kbn_too_many_features_image_id__';
|
||||||
|
// Identifies centroid feature.
|
||||||
|
// Centroids are a single point for representing lines, multiLines, polygons, and multiPolygons
|
||||||
|
export const KBN_IS_CENTROID_FEATURE = '__kbn_is_centroid_feature__';
|
||||||
|
|
||||||
const MAP_BASE_URL = `/${MAPS_APP_PATH}/${MAP_PATH}`;
|
const MAP_BASE_URL = `/${MAPS_APP_PATH}/${MAP_PATH}`;
|
||||||
export function getNewMapPath() {
|
export function getNewMapPath() {
|
||||||
|
|
282
x-pack/plugins/maps/common/get_centroid_features.test.ts
Normal file
282
x-pack/plugins/maps/common/get_centroid_features.test.ts
Normal file
|
@ -0,0 +1,282 @@
|
||||||
|
/*
|
||||||
|
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
||||||
|
* or more contributor license agreements. Licensed under the Elastic License;
|
||||||
|
* you may not use this file except in compliance with the Elastic License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
import { Feature, FeatureCollection } from 'geojson';
|
||||||
|
import { getCentroidFeatures } from './get_centroid_features';
|
||||||
|
|
||||||
|
test('should not create centroid feature for point and multipoint', () => {
|
||||||
|
const pointFeature: Feature = {
|
||||||
|
type: 'Feature',
|
||||||
|
geometry: {
|
||||||
|
type: 'Point',
|
||||||
|
coordinates: [30, 10],
|
||||||
|
},
|
||||||
|
properties: {
|
||||||
|
prop0: 'value0',
|
||||||
|
prop1: 0.0,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
const multiPointFeature: Feature = {
|
||||||
|
type: 'Feature',
|
||||||
|
geometry: {
|
||||||
|
type: 'MultiPoint',
|
||||||
|
coordinates: [
|
||||||
|
[10, 40],
|
||||||
|
[40, 30],
|
||||||
|
[20, 20],
|
||||||
|
[30, 10],
|
||||||
|
],
|
||||||
|
},
|
||||||
|
properties: {
|
||||||
|
prop0: 'value0',
|
||||||
|
prop1: 0.0,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
const featureCollection: FeatureCollection = {
|
||||||
|
type: 'FeatureCollection',
|
||||||
|
features: [pointFeature, multiPointFeature],
|
||||||
|
};
|
||||||
|
const centroidFeatures = getCentroidFeatures(featureCollection);
|
||||||
|
expect(centroidFeatures.length).toBe(0);
|
||||||
|
});
|
||||||
|
|
||||||
|
test('should not create centroid for too many features polygon', () => {
|
||||||
|
const polygonFeature: Feature = {
|
||||||
|
type: 'Feature',
|
||||||
|
geometry: {
|
||||||
|
type: 'Polygon',
|
||||||
|
coordinates: [
|
||||||
|
[
|
||||||
|
[35, 10],
|
||||||
|
[45, 45],
|
||||||
|
[15, 40],
|
||||||
|
[10, 20],
|
||||||
|
[35, 10],
|
||||||
|
],
|
||||||
|
],
|
||||||
|
},
|
||||||
|
properties: {
|
||||||
|
__kbn_too_many_features__: true,
|
||||||
|
prop0: 'value0',
|
||||||
|
prop1: 0.0,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
const featureCollection: FeatureCollection = {
|
||||||
|
type: 'FeatureCollection',
|
||||||
|
features: [polygonFeature],
|
||||||
|
};
|
||||||
|
const centroidFeatures = getCentroidFeatures(featureCollection);
|
||||||
|
expect(centroidFeatures.length).toBe(0);
|
||||||
|
});
|
||||||
|
|
||||||
|
test('should create centroid feature for line (even number of points)', () => {
|
||||||
|
const lineFeature: Feature = {
|
||||||
|
type: 'Feature',
|
||||||
|
id: 'myfeature',
|
||||||
|
geometry: {
|
||||||
|
type: 'LineString',
|
||||||
|
coordinates: [
|
||||||
|
[102.0, 0.0],
|
||||||
|
[103.0, 1.0],
|
||||||
|
[104.0, 0.0],
|
||||||
|
[105.0, 1.0],
|
||||||
|
],
|
||||||
|
},
|
||||||
|
properties: {
|
||||||
|
prop0: 'value0',
|
||||||
|
prop1: 0.0,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
const featureCollection: FeatureCollection = {
|
||||||
|
type: 'FeatureCollection',
|
||||||
|
features: [lineFeature],
|
||||||
|
};
|
||||||
|
const centroidFeatures = getCentroidFeatures(featureCollection);
|
||||||
|
expect(centroidFeatures.length).toBe(1);
|
||||||
|
expect(centroidFeatures[0]).toEqual({
|
||||||
|
type: 'Feature',
|
||||||
|
id: 'myfeature',
|
||||||
|
geometry: {
|
||||||
|
type: 'Point',
|
||||||
|
coordinates: [103.50003808007737, 0.5000190382261022],
|
||||||
|
},
|
||||||
|
properties: {
|
||||||
|
__kbn_is_centroid_feature__: true,
|
||||||
|
prop0: 'value0',
|
||||||
|
prop1: 0.0,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
test('should create centroid feature for line (odd number of points)', () => {
|
||||||
|
const lineFeature: Feature = {
|
||||||
|
type: 'Feature',
|
||||||
|
geometry: {
|
||||||
|
type: 'LineString',
|
||||||
|
coordinates: [
|
||||||
|
[102.0, 0.0],
|
||||||
|
[103.0, 1.0],
|
||||||
|
[104.0, 0.0],
|
||||||
|
],
|
||||||
|
},
|
||||||
|
properties: {
|
||||||
|
prop0: 'value0',
|
||||||
|
prop1: 0.0,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
const featureCollection: FeatureCollection = {
|
||||||
|
type: 'FeatureCollection',
|
||||||
|
features: [lineFeature],
|
||||||
|
};
|
||||||
|
const centroidFeatures = getCentroidFeatures(featureCollection);
|
||||||
|
expect(centroidFeatures.length).toBe(1);
|
||||||
|
expect(centroidFeatures[0]).toEqual({
|
||||||
|
type: 'Feature',
|
||||||
|
geometry: {
|
||||||
|
type: 'Point',
|
||||||
|
coordinates: [103.0, 1.0],
|
||||||
|
},
|
||||||
|
properties: {
|
||||||
|
__kbn_is_centroid_feature__: true,
|
||||||
|
prop0: 'value0',
|
||||||
|
prop1: 0.0,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
test('should create centroid feature for multi line', () => {
|
||||||
|
const multiLineFeature: Feature = {
|
||||||
|
type: 'Feature',
|
||||||
|
geometry: {
|
||||||
|
type: 'MultiLineString',
|
||||||
|
coordinates: [
|
||||||
|
[
|
||||||
|
[10, 10],
|
||||||
|
[20, 20],
|
||||||
|
[10, 40],
|
||||||
|
],
|
||||||
|
[
|
||||||
|
[40, 40],
|
||||||
|
[30, 30],
|
||||||
|
[40, 20],
|
||||||
|
[30, 10],
|
||||||
|
],
|
||||||
|
],
|
||||||
|
},
|
||||||
|
properties: {
|
||||||
|
prop0: 'value0',
|
||||||
|
prop1: 0.0,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
const featureCollection: FeatureCollection = {
|
||||||
|
type: 'FeatureCollection',
|
||||||
|
features: [multiLineFeature],
|
||||||
|
};
|
||||||
|
const centroidFeatures = getCentroidFeatures(featureCollection);
|
||||||
|
expect(centroidFeatures.length).toBe(1);
|
||||||
|
expect(centroidFeatures[0]).toEqual({
|
||||||
|
type: 'Feature',
|
||||||
|
geometry: {
|
||||||
|
type: 'Point',
|
||||||
|
coordinates: [35.56701982106548, 24.717594944805672],
|
||||||
|
},
|
||||||
|
properties: {
|
||||||
|
__kbn_is_centroid_feature__: true,
|
||||||
|
prop0: 'value0',
|
||||||
|
prop1: 0.0,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
test('should create centroid feature for polygon', () => {
|
||||||
|
const polygonFeature: Feature = {
|
||||||
|
type: 'Feature',
|
||||||
|
geometry: {
|
||||||
|
type: 'Polygon',
|
||||||
|
coordinates: [
|
||||||
|
[
|
||||||
|
[35, 10],
|
||||||
|
[45, 45],
|
||||||
|
[15, 40],
|
||||||
|
[10, 20],
|
||||||
|
[35, 10],
|
||||||
|
],
|
||||||
|
],
|
||||||
|
},
|
||||||
|
properties: {
|
||||||
|
prop0: 'value0',
|
||||||
|
prop1: 0.0,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
const featureCollection: FeatureCollection = {
|
||||||
|
type: 'FeatureCollection',
|
||||||
|
features: [polygonFeature],
|
||||||
|
};
|
||||||
|
const centroidFeatures = getCentroidFeatures(featureCollection);
|
||||||
|
expect(centroidFeatures.length).toBe(1);
|
||||||
|
expect(centroidFeatures[0]).toEqual({
|
||||||
|
type: 'Feature',
|
||||||
|
geometry: {
|
||||||
|
type: 'Point',
|
||||||
|
coordinates: [27.526881720430108, 28.70967741935484],
|
||||||
|
},
|
||||||
|
properties: {
|
||||||
|
__kbn_is_centroid_feature__: true,
|
||||||
|
prop0: 'value0',
|
||||||
|
prop1: 0.0,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
test('should create centroid feature for multi polygon', () => {
|
||||||
|
const multiPolygonFeature: Feature = {
|
||||||
|
type: 'Feature',
|
||||||
|
geometry: {
|
||||||
|
type: 'MultiPolygon',
|
||||||
|
coordinates: [
|
||||||
|
[
|
||||||
|
[
|
||||||
|
[30, 20],
|
||||||
|
[45, 40],
|
||||||
|
[10, 40],
|
||||||
|
[30, 20],
|
||||||
|
],
|
||||||
|
],
|
||||||
|
[
|
||||||
|
[
|
||||||
|
[15, 5],
|
||||||
|
[40, 10],
|
||||||
|
[10, 20],
|
||||||
|
[5, 10],
|
||||||
|
[15, 5],
|
||||||
|
],
|
||||||
|
],
|
||||||
|
],
|
||||||
|
},
|
||||||
|
properties: {
|
||||||
|
prop0: 'value0',
|
||||||
|
prop1: 0.0,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
const featureCollection: FeatureCollection = {
|
||||||
|
type: 'FeatureCollection',
|
||||||
|
features: [multiPolygonFeature],
|
||||||
|
};
|
||||||
|
const centroidFeatures = getCentroidFeatures(featureCollection);
|
||||||
|
expect(centroidFeatures.length).toBe(1);
|
||||||
|
expect(centroidFeatures[0]).toEqual({
|
||||||
|
type: 'Feature',
|
||||||
|
geometry: {
|
||||||
|
type: 'Point',
|
||||||
|
coordinates: [28.333333333333332, 33.333333333333336],
|
||||||
|
},
|
||||||
|
properties: {
|
||||||
|
__kbn_is_centroid_feature__: true,
|
||||||
|
prop0: 'value0',
|
||||||
|
prop1: 0.0,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
});
|
88
x-pack/plugins/maps/common/get_centroid_features.ts
Normal file
88
x-pack/plugins/maps/common/get_centroid_features.ts
Normal file
|
@ -0,0 +1,88 @@
|
||||||
|
/*
|
||||||
|
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
||||||
|
* or more contributor license agreements. Licensed under the Elastic License;
|
||||||
|
* you may not use this file except in compliance with the Elastic License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
import {
|
||||||
|
Feature,
|
||||||
|
FeatureCollection,
|
||||||
|
Geometry,
|
||||||
|
LineString,
|
||||||
|
MultiLineString,
|
||||||
|
MultiPolygon,
|
||||||
|
} from 'geojson';
|
||||||
|
import turfAlong from '@turf/along';
|
||||||
|
import turfArea from '@turf/area';
|
||||||
|
// @ts-expect-error
|
||||||
|
import turfCenterOfMass from '@turf/center-of-mass';
|
||||||
|
import turfLength from '@turf/length';
|
||||||
|
import { lineString, polygon } from '@turf/helpers';
|
||||||
|
import {
|
||||||
|
GEO_JSON_TYPE,
|
||||||
|
KBN_IS_CENTROID_FEATURE,
|
||||||
|
KBN_TOO_MANY_FEATURES_PROPERTY,
|
||||||
|
} from './constants';
|
||||||
|
|
||||||
|
export function getCentroidFeatures(featureCollection: FeatureCollection): Feature[] {
|
||||||
|
const centroidFeatures = [];
|
||||||
|
for (let i = 0; i < featureCollection.features.length; i++) {
|
||||||
|
const feature = featureCollection.features[i];
|
||||||
|
|
||||||
|
// do not add centroid for kibana added features
|
||||||
|
if (feature.properties?.[KBN_TOO_MANY_FEATURES_PROPERTY]) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
let centroidGeometry: Geometry | null = null;
|
||||||
|
if (feature.geometry.type === GEO_JSON_TYPE.LINE_STRING) {
|
||||||
|
centroidGeometry = getLineCentroid(feature);
|
||||||
|
} else if (feature.geometry.type === GEO_JSON_TYPE.MULTI_LINE_STRING) {
|
||||||
|
const coordinates = (feature.geometry as MultiLineString).coordinates;
|
||||||
|
let longestLine = coordinates[0];
|
||||||
|
let longestLength = turfLength(lineString(longestLine));
|
||||||
|
for (let j = 1; j < coordinates.length; j++) {
|
||||||
|
const nextLine = coordinates[j];
|
||||||
|
const nextLength = turfLength(lineString(nextLine));
|
||||||
|
if (nextLength > longestLength) {
|
||||||
|
longestLine = nextLine;
|
||||||
|
longestLength = nextLength;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
centroidGeometry = getLineCentroid(lineString(longestLine) as Feature);
|
||||||
|
} else if (feature.geometry.type === GEO_JSON_TYPE.POLYGON) {
|
||||||
|
centroidGeometry = turfCenterOfMass(feature).geometry;
|
||||||
|
} else if (feature.geometry.type === GEO_JSON_TYPE.MULTI_POLYGON) {
|
||||||
|
const coordinates = (feature.geometry as MultiPolygon).coordinates;
|
||||||
|
let largestPolygon = coordinates[0];
|
||||||
|
let largestArea = turfArea(polygon(largestPolygon));
|
||||||
|
for (let j = 1; j < coordinates.length; j++) {
|
||||||
|
const nextPolygon = coordinates[j];
|
||||||
|
const nextArea = turfArea(polygon(nextPolygon));
|
||||||
|
if (nextArea > largestArea) {
|
||||||
|
largestPolygon = nextPolygon;
|
||||||
|
largestArea = nextArea;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
centroidGeometry = turfCenterOfMass(polygon(largestPolygon)).geometry;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (centroidGeometry) {
|
||||||
|
centroidFeatures.push({
|
||||||
|
type: 'Feature',
|
||||||
|
id: feature.id,
|
||||||
|
properties: {
|
||||||
|
...feature.properties,
|
||||||
|
[KBN_IS_CENTROID_FEATURE]: true,
|
||||||
|
},
|
||||||
|
geometry: centroidGeometry,
|
||||||
|
} as Feature);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return centroidFeatures;
|
||||||
|
}
|
||||||
|
|
||||||
|
function getLineCentroid(feature: Feature): Geometry {
|
||||||
|
const length = turfLength(feature);
|
||||||
|
return turfAlong((feature as unknown) as LineString, length / 2).geometry!;
|
||||||
|
}
|
|
@ -86,6 +86,16 @@ function createChoroplethLayerDescriptor({
|
||||||
color: '#3d3d3d',
|
color: '#3d3d3d',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
[VECTOR_STYLES.LABEL_TEXT]: {
|
||||||
|
type: STYLE_TYPE.DYNAMIC,
|
||||||
|
options: {
|
||||||
|
...defaultDynamicProperties[VECTOR_STYLES.LABEL_TEXT].options,
|
||||||
|
field: {
|
||||||
|
name: joinKey,
|
||||||
|
origin: FIELD_ORIGIN.JOIN,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
}),
|
}),
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -147,6 +147,7 @@ export class TiledVectorLayer extends VectorLayer {
|
||||||
|
|
||||||
this._setMbPointsProperties(mbMap, sourceMeta.layerName);
|
this._setMbPointsProperties(mbMap, sourceMeta.layerName);
|
||||||
this._setMbLinePolygonProperties(mbMap, sourceMeta.layerName);
|
this._setMbLinePolygonProperties(mbMap, sourceMeta.layerName);
|
||||||
|
this._setMbCentroidProperties(mbMap, sourceMeta.layerName);
|
||||||
}
|
}
|
||||||
|
|
||||||
_requiresPrevSourceCleanup(mbMap: MbMap): boolean {
|
_requiresPrevSourceCleanup(mbMap: MbMap): boolean {
|
||||||
|
|
|
@ -12,6 +12,7 @@ import { EuiIcon } from '@elastic/eui';
|
||||||
import { i18n } from '@kbn/i18n';
|
import { i18n } from '@kbn/i18n';
|
||||||
import { AbstractLayer } from '../layer';
|
import { AbstractLayer } from '../layer';
|
||||||
import { IVectorStyle, VectorStyle } from '../../styles/vector/vector_style';
|
import { IVectorStyle, VectorStyle } from '../../styles/vector/vector_style';
|
||||||
|
import { getCentroidFeatures } from '../../../../common/get_centroid_features';
|
||||||
import {
|
import {
|
||||||
FEATURE_ID_PROPERTY_NAME,
|
FEATURE_ID_PROPERTY_NAME,
|
||||||
SOURCE_DATA_REQUEST_ID,
|
SOURCE_DATA_REQUEST_ID,
|
||||||
|
@ -26,6 +27,7 @@ import {
|
||||||
LAYER_STYLE_TYPE,
|
LAYER_STYLE_TYPE,
|
||||||
KBN_TOO_MANY_FEATURES_IMAGE_ID,
|
KBN_TOO_MANY_FEATURES_IMAGE_ID,
|
||||||
FieldFormatter,
|
FieldFormatter,
|
||||||
|
VECTOR_SHAPE_TYPE,
|
||||||
} from '../../../../common/constants';
|
} from '../../../../common/constants';
|
||||||
import { JoinTooltipProperty } from '../../tooltips/join_tooltip_property';
|
import { JoinTooltipProperty } from '../../tooltips/join_tooltip_property';
|
||||||
import { DataRequestAbortError } from '../../util/data_request';
|
import { DataRequestAbortError } from '../../util/data_request';
|
||||||
|
@ -37,6 +39,7 @@ import {
|
||||||
import { assignFeatureIds } from '../../util/assign_feature_ids';
|
import { assignFeatureIds } from '../../util/assign_feature_ids';
|
||||||
import { getFeatureCollectionBounds } from '../../util/get_feature_collection_bounds';
|
import { getFeatureCollectionBounds } from '../../util/get_feature_collection_bounds';
|
||||||
import {
|
import {
|
||||||
|
getCentroidFilterExpression,
|
||||||
getFillFilterExpression,
|
getFillFilterExpression,
|
||||||
getLineFilterExpression,
|
getLineFilterExpression,
|
||||||
getPointFilterExpression,
|
getPointFilterExpression,
|
||||||
|
@ -519,6 +522,13 @@ export class VectorLayer extends AbstractLayer {
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
const layerFeatureCollection = assignFeatureIds(sourceFeatureCollection);
|
const layerFeatureCollection = assignFeatureIds(sourceFeatureCollection);
|
||||||
|
const supportedShapes = await source.getSupportedShapeTypes();
|
||||||
|
if (
|
||||||
|
supportedShapes.includes(VECTOR_SHAPE_TYPE.LINE) ||
|
||||||
|
supportedShapes.includes(VECTOR_SHAPE_TYPE.POLYGON)
|
||||||
|
) {
|
||||||
|
layerFeatureCollection.features.push(...getCentroidFeatures(layerFeatureCollection));
|
||||||
|
}
|
||||||
stopLoading(dataRequestId, requestToken, layerFeatureCollection, meta);
|
stopLoading(dataRequestId, requestToken, layerFeatureCollection, meta);
|
||||||
return {
|
return {
|
||||||
refreshed: true,
|
refreshed: true,
|
||||||
|
@ -995,9 +1005,41 @@ export class VectorLayer extends AbstractLayer {
|
||||||
mbMap.setLayerZoomRange(tooManyFeaturesLayerId, this.getMinZoom(), this.getMaxZoom());
|
mbMap.setLayerZoomRange(tooManyFeaturesLayerId, this.getMinZoom(), this.getMaxZoom());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_setMbCentroidProperties(mbMap: MbMap, mvtSourceLayer?: string) {
|
||||||
|
const centroidLayerId = this._getMbCentroidLayerId();
|
||||||
|
const centroidLayer = mbMap.getLayer(centroidLayerId);
|
||||||
|
if (!centroidLayer) {
|
||||||
|
const mbLayer: MbLayer = {
|
||||||
|
id: centroidLayerId,
|
||||||
|
type: 'symbol',
|
||||||
|
source: this.getId(),
|
||||||
|
};
|
||||||
|
if (mvtSourceLayer) {
|
||||||
|
mbLayer['source-layer'] = mvtSourceLayer;
|
||||||
|
}
|
||||||
|
mbMap.addLayer(mbLayer);
|
||||||
|
}
|
||||||
|
|
||||||
|
const filterExpr = getCentroidFilterExpression(this.hasJoins());
|
||||||
|
if (filterExpr !== mbMap.getFilter(centroidLayerId)) {
|
||||||
|
mbMap.setFilter(centroidLayerId, filterExpr);
|
||||||
|
}
|
||||||
|
|
||||||
|
this.getCurrentStyle().setMBPropertiesForLabelText({
|
||||||
|
alpha: this.getAlpha(),
|
||||||
|
mbMap,
|
||||||
|
textLayerId: centroidLayerId,
|
||||||
|
});
|
||||||
|
|
||||||
|
this.syncVisibilityWithMb(mbMap, centroidLayerId);
|
||||||
|
mbMap.setLayerZoomRange(centroidLayerId, this.getMinZoom(), this.getMaxZoom());
|
||||||
|
}
|
||||||
|
|
||||||
_syncStylePropertiesWithMb(mbMap: MbMap) {
|
_syncStylePropertiesWithMb(mbMap: MbMap) {
|
||||||
this._setMbPointsProperties(mbMap);
|
this._setMbPointsProperties(mbMap);
|
||||||
this._setMbLinePolygonProperties(mbMap);
|
this._setMbLinePolygonProperties(mbMap);
|
||||||
|
// centroid layers added after polygon layers to ensure they are on top of polygon layers
|
||||||
|
this._setMbCentroidProperties(mbMap);
|
||||||
}
|
}
|
||||||
|
|
||||||
_syncSourceBindingWithMb(mbMap: MbMap) {
|
_syncSourceBindingWithMb(mbMap: MbMap) {
|
||||||
|
@ -1037,6 +1079,10 @@ export class VectorLayer extends AbstractLayer {
|
||||||
return this.makeMbLayerId('text');
|
return this.makeMbLayerId('text');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_getMbCentroidLayerId() {
|
||||||
|
return this.makeMbLayerId('centroid');
|
||||||
|
}
|
||||||
|
|
||||||
_getMbSymbolLayerId() {
|
_getMbSymbolLayerId() {
|
||||||
return this.makeMbLayerId('symbol');
|
return this.makeMbLayerId('symbol');
|
||||||
}
|
}
|
||||||
|
@ -1057,6 +1103,7 @@ export class VectorLayer extends AbstractLayer {
|
||||||
return [
|
return [
|
||||||
this._getMbPointLayerId(),
|
this._getMbPointLayerId(),
|
||||||
this._getMbTextLayerId(),
|
this._getMbTextLayerId(),
|
||||||
|
this._getMbCentroidLayerId(),
|
||||||
this._getMbSymbolLayerId(),
|
this._getMbSymbolLayerId(),
|
||||||
this._getMbLineLayerId(),
|
this._getMbLineLayerId(),
|
||||||
this._getMbPolygonLayerId(),
|
this._getMbPolygonLayerId(),
|
||||||
|
|
|
@ -151,6 +151,221 @@ exports[`should render 1`] = `
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/>
|
/>
|
||||||
|
<EuiSpacer
|
||||||
|
size="m"
|
||||||
|
/>
|
||||||
|
<VectorStyleLabelEditor
|
||||||
|
defaultDynamicStyleOptions={
|
||||||
|
Object {
|
||||||
|
"field": undefined,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
defaultStaticStyleOptions={
|
||||||
|
Object {
|
||||||
|
"value": "",
|
||||||
|
}
|
||||||
|
}
|
||||||
|
fields={
|
||||||
|
Array [
|
||||||
|
Object {
|
||||||
|
"label": "field0",
|
||||||
|
"name": "field0",
|
||||||
|
"origin": "source",
|
||||||
|
"supportsAutoDomain": true,
|
||||||
|
"type": "string",
|
||||||
|
},
|
||||||
|
]
|
||||||
|
}
|
||||||
|
onDynamicStyleChange={[Function]}
|
||||||
|
onStaticStyleChange={[Function]}
|
||||||
|
styleProperty={
|
||||||
|
StaticTextProperty {
|
||||||
|
"_options": Object {
|
||||||
|
"value": "",
|
||||||
|
},
|
||||||
|
"_styleName": "labelText",
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/>
|
||||||
|
<EuiSpacer
|
||||||
|
size="m"
|
||||||
|
/>
|
||||||
|
<VectorStyleColorEditor
|
||||||
|
defaultDynamicStyleOptions={
|
||||||
|
Object {
|
||||||
|
"color": "Blues",
|
||||||
|
"colorCategory": "palette_0",
|
||||||
|
"field": undefined,
|
||||||
|
"fieldMetaOptions": Object {
|
||||||
|
"isEnabled": true,
|
||||||
|
"sigma": 3,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
defaultStaticStyleOptions={
|
||||||
|
Object {
|
||||||
|
"color": "#000000",
|
||||||
|
}
|
||||||
|
}
|
||||||
|
disabled={true}
|
||||||
|
disabledBy="labelText"
|
||||||
|
fields={
|
||||||
|
Array [
|
||||||
|
Object {
|
||||||
|
"label": "field0",
|
||||||
|
"name": "field0",
|
||||||
|
"origin": "source",
|
||||||
|
"supportsAutoDomain": true,
|
||||||
|
"type": "string",
|
||||||
|
},
|
||||||
|
]
|
||||||
|
}
|
||||||
|
onDynamicStyleChange={[Function]}
|
||||||
|
onStaticStyleChange={[Function]}
|
||||||
|
styleProperty={
|
||||||
|
StaticColorProperty {
|
||||||
|
"_options": Object {
|
||||||
|
"color": "#000000",
|
||||||
|
},
|
||||||
|
"_styleName": "labelColor",
|
||||||
|
}
|
||||||
|
}
|
||||||
|
swatches={
|
||||||
|
Array [
|
||||||
|
"#41937c",
|
||||||
|
"#4379aa",
|
||||||
|
"#c83868",
|
||||||
|
"#7751a4",
|
||||||
|
"#ba6b95",
|
||||||
|
"#c9ad31",
|
||||||
|
"#a69168",
|
||||||
|
"#c57127",
|
||||||
|
"#885145",
|
||||||
|
"#e1401f",
|
||||||
|
"#000",
|
||||||
|
"#FFF",
|
||||||
|
]
|
||||||
|
}
|
||||||
|
/>
|
||||||
|
<EuiSpacer
|
||||||
|
size="m"
|
||||||
|
/>
|
||||||
|
<VectorStyleSizeEditor
|
||||||
|
defaultDynamicStyleOptions={
|
||||||
|
Object {
|
||||||
|
"field": undefined,
|
||||||
|
"fieldMetaOptions": Object {
|
||||||
|
"isEnabled": true,
|
||||||
|
"sigma": 3,
|
||||||
|
},
|
||||||
|
"maxSize": 32,
|
||||||
|
"minSize": 7,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
defaultStaticStyleOptions={
|
||||||
|
Object {
|
||||||
|
"size": 14,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
disabled={true}
|
||||||
|
disabledBy="labelText"
|
||||||
|
fields={Array []}
|
||||||
|
onDynamicStyleChange={[Function]}
|
||||||
|
onStaticStyleChange={[Function]}
|
||||||
|
styleProperty={
|
||||||
|
StaticSizeProperty {
|
||||||
|
"_options": Object {
|
||||||
|
"size": 14,
|
||||||
|
},
|
||||||
|
"_styleName": "labelSize",
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/>
|
||||||
|
<EuiSpacer
|
||||||
|
size="m"
|
||||||
|
/>
|
||||||
|
<VectorStyleColorEditor
|
||||||
|
defaultDynamicStyleOptions={
|
||||||
|
Object {
|
||||||
|
"color": "Blues",
|
||||||
|
"colorCategory": "palette_0",
|
||||||
|
"field": undefined,
|
||||||
|
"fieldMetaOptions": Object {
|
||||||
|
"isEnabled": true,
|
||||||
|
"sigma": 3,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
defaultStaticStyleOptions={
|
||||||
|
Object {
|
||||||
|
"color": "#FFFFFF",
|
||||||
|
}
|
||||||
|
}
|
||||||
|
disabled={true}
|
||||||
|
disabledBy="labelText"
|
||||||
|
fields={
|
||||||
|
Array [
|
||||||
|
Object {
|
||||||
|
"label": "field0",
|
||||||
|
"name": "field0",
|
||||||
|
"origin": "source",
|
||||||
|
"supportsAutoDomain": true,
|
||||||
|
"type": "string",
|
||||||
|
},
|
||||||
|
]
|
||||||
|
}
|
||||||
|
onDynamicStyleChange={[Function]}
|
||||||
|
onStaticStyleChange={[Function]}
|
||||||
|
styleProperty={
|
||||||
|
StaticColorProperty {
|
||||||
|
"_options": Object {
|
||||||
|
"color": "#FFFFFF",
|
||||||
|
},
|
||||||
|
"_styleName": "labelBorderColor",
|
||||||
|
}
|
||||||
|
}
|
||||||
|
swatches={
|
||||||
|
Array [
|
||||||
|
"#41937c",
|
||||||
|
"#4379aa",
|
||||||
|
"#c83868",
|
||||||
|
"#7751a4",
|
||||||
|
"#ba6b95",
|
||||||
|
"#c9ad31",
|
||||||
|
"#a69168",
|
||||||
|
"#c57127",
|
||||||
|
"#885145",
|
||||||
|
"#e1401f",
|
||||||
|
"#000",
|
||||||
|
"#FFF",
|
||||||
|
]
|
||||||
|
}
|
||||||
|
/>
|
||||||
|
<EuiSpacer
|
||||||
|
size="m"
|
||||||
|
/>
|
||||||
|
<VectorStyleLabelBorderSizeEditor
|
||||||
|
disabled={true}
|
||||||
|
disabledBy="labelText"
|
||||||
|
handlePropertyChange={[Function]}
|
||||||
|
styleProperty={
|
||||||
|
LabelBorderSizeProperty {
|
||||||
|
"_labelSizeProperty": StaticSizeProperty {
|
||||||
|
"_options": Object {
|
||||||
|
"size": 14,
|
||||||
|
},
|
||||||
|
"_styleName": "labelSize",
|
||||||
|
},
|
||||||
|
"_options": Object {
|
||||||
|
"size": "SMALL",
|
||||||
|
},
|
||||||
|
"_styleName": "labelBorderSize",
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/>
|
||||||
|
<EuiSpacer
|
||||||
|
size="m"
|
||||||
|
/>
|
||||||
<EuiFormRow
|
<EuiFormRow
|
||||||
describedByIds={Array []}
|
describedByIds={Array []}
|
||||||
display="columnCompressedSwitch"
|
display="columnCompressedSwitch"
|
||||||
|
@ -300,6 +515,191 @@ exports[`should render with no style fields 1`] = `
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/>
|
/>
|
||||||
|
<EuiSpacer
|
||||||
|
size="m"
|
||||||
|
/>
|
||||||
|
<VectorStyleLabelEditor
|
||||||
|
defaultDynamicStyleOptions={
|
||||||
|
Object {
|
||||||
|
"field": undefined,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
defaultStaticStyleOptions={
|
||||||
|
Object {
|
||||||
|
"value": "",
|
||||||
|
}
|
||||||
|
}
|
||||||
|
fields={Array []}
|
||||||
|
onDynamicStyleChange={[Function]}
|
||||||
|
onStaticStyleChange={[Function]}
|
||||||
|
styleProperty={
|
||||||
|
StaticTextProperty {
|
||||||
|
"_options": Object {
|
||||||
|
"value": "",
|
||||||
|
},
|
||||||
|
"_styleName": "labelText",
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/>
|
||||||
|
<EuiSpacer
|
||||||
|
size="m"
|
||||||
|
/>
|
||||||
|
<VectorStyleColorEditor
|
||||||
|
defaultDynamicStyleOptions={
|
||||||
|
Object {
|
||||||
|
"color": "Blues",
|
||||||
|
"colorCategory": "palette_0",
|
||||||
|
"field": undefined,
|
||||||
|
"fieldMetaOptions": Object {
|
||||||
|
"isEnabled": true,
|
||||||
|
"sigma": 3,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
defaultStaticStyleOptions={
|
||||||
|
Object {
|
||||||
|
"color": "#000000",
|
||||||
|
}
|
||||||
|
}
|
||||||
|
disabled={true}
|
||||||
|
disabledBy="labelText"
|
||||||
|
fields={Array []}
|
||||||
|
onDynamicStyleChange={[Function]}
|
||||||
|
onStaticStyleChange={[Function]}
|
||||||
|
styleProperty={
|
||||||
|
StaticColorProperty {
|
||||||
|
"_options": Object {
|
||||||
|
"color": "#000000",
|
||||||
|
},
|
||||||
|
"_styleName": "labelColor",
|
||||||
|
}
|
||||||
|
}
|
||||||
|
swatches={
|
||||||
|
Array [
|
||||||
|
"#41937c",
|
||||||
|
"#4379aa",
|
||||||
|
"#c83868",
|
||||||
|
"#7751a4",
|
||||||
|
"#ba6b95",
|
||||||
|
"#c9ad31",
|
||||||
|
"#a69168",
|
||||||
|
"#c57127",
|
||||||
|
"#885145",
|
||||||
|
"#e1401f",
|
||||||
|
"#000",
|
||||||
|
"#FFF",
|
||||||
|
]
|
||||||
|
}
|
||||||
|
/>
|
||||||
|
<EuiSpacer
|
||||||
|
size="m"
|
||||||
|
/>
|
||||||
|
<VectorStyleSizeEditor
|
||||||
|
defaultDynamicStyleOptions={
|
||||||
|
Object {
|
||||||
|
"field": undefined,
|
||||||
|
"fieldMetaOptions": Object {
|
||||||
|
"isEnabled": true,
|
||||||
|
"sigma": 3,
|
||||||
|
},
|
||||||
|
"maxSize": 32,
|
||||||
|
"minSize": 7,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
defaultStaticStyleOptions={
|
||||||
|
Object {
|
||||||
|
"size": 14,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
disabled={true}
|
||||||
|
disabledBy="labelText"
|
||||||
|
fields={Array []}
|
||||||
|
onDynamicStyleChange={[Function]}
|
||||||
|
onStaticStyleChange={[Function]}
|
||||||
|
styleProperty={
|
||||||
|
StaticSizeProperty {
|
||||||
|
"_options": Object {
|
||||||
|
"size": 14,
|
||||||
|
},
|
||||||
|
"_styleName": "labelSize",
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/>
|
||||||
|
<EuiSpacer
|
||||||
|
size="m"
|
||||||
|
/>
|
||||||
|
<VectorStyleColorEditor
|
||||||
|
defaultDynamicStyleOptions={
|
||||||
|
Object {
|
||||||
|
"color": "Blues",
|
||||||
|
"colorCategory": "palette_0",
|
||||||
|
"field": undefined,
|
||||||
|
"fieldMetaOptions": Object {
|
||||||
|
"isEnabled": true,
|
||||||
|
"sigma": 3,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
defaultStaticStyleOptions={
|
||||||
|
Object {
|
||||||
|
"color": "#FFFFFF",
|
||||||
|
}
|
||||||
|
}
|
||||||
|
disabled={true}
|
||||||
|
disabledBy="labelText"
|
||||||
|
fields={Array []}
|
||||||
|
onDynamicStyleChange={[Function]}
|
||||||
|
onStaticStyleChange={[Function]}
|
||||||
|
styleProperty={
|
||||||
|
StaticColorProperty {
|
||||||
|
"_options": Object {
|
||||||
|
"color": "#FFFFFF",
|
||||||
|
},
|
||||||
|
"_styleName": "labelBorderColor",
|
||||||
|
}
|
||||||
|
}
|
||||||
|
swatches={
|
||||||
|
Array [
|
||||||
|
"#41937c",
|
||||||
|
"#4379aa",
|
||||||
|
"#c83868",
|
||||||
|
"#7751a4",
|
||||||
|
"#ba6b95",
|
||||||
|
"#c9ad31",
|
||||||
|
"#a69168",
|
||||||
|
"#c57127",
|
||||||
|
"#885145",
|
||||||
|
"#e1401f",
|
||||||
|
"#000",
|
||||||
|
"#FFF",
|
||||||
|
]
|
||||||
|
}
|
||||||
|
/>
|
||||||
|
<EuiSpacer
|
||||||
|
size="m"
|
||||||
|
/>
|
||||||
|
<VectorStyleLabelBorderSizeEditor
|
||||||
|
disabled={true}
|
||||||
|
disabledBy="labelText"
|
||||||
|
handlePropertyChange={[Function]}
|
||||||
|
styleProperty={
|
||||||
|
LabelBorderSizeProperty {
|
||||||
|
"_labelSizeProperty": StaticSizeProperty {
|
||||||
|
"_options": Object {
|
||||||
|
"size": 14,
|
||||||
|
},
|
||||||
|
"_styleName": "labelSize",
|
||||||
|
},
|
||||||
|
"_options": Object {
|
||||||
|
"size": "SMALL",
|
||||||
|
},
|
||||||
|
"_styleName": "labelBorderSize",
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/>
|
||||||
|
<EuiSpacer
|
||||||
|
size="m"
|
||||||
|
/>
|
||||||
<EuiFormRow
|
<EuiFormRow
|
||||||
describedByIds={Array []}
|
describedByIds={Array []}
|
||||||
display="columnCompressedSwitch"
|
display="columnCompressedSwitch"
|
||||||
|
|
|
@ -467,6 +467,9 @@ export class VectorStyleEditor extends Component<Props, State> {
|
||||||
<EuiSpacer size="m" />
|
<EuiSpacer size="m" />
|
||||||
|
|
||||||
{this._renderLineWidth()}
|
{this._renderLineWidth()}
|
||||||
|
<EuiSpacer size="m" />
|
||||||
|
|
||||||
|
{this._renderLabelProperties()}
|
||||||
</Fragment>
|
</Fragment>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -481,6 +484,9 @@ export class VectorStyleEditor extends Component<Props, State> {
|
||||||
<EuiSpacer size="m" />
|
<EuiSpacer size="m" />
|
||||||
|
|
||||||
{this._renderLineWidth()}
|
{this._renderLineWidth()}
|
||||||
|
<EuiSpacer size="m" />
|
||||||
|
|
||||||
|
{this._renderLabelProperties()}
|
||||||
</Fragment>
|
</Fragment>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
@ -221,6 +221,14 @@ describe('pluckStyleMetaFromSourceDataRequest', () => {
|
||||||
},
|
},
|
||||||
properties: {},
|
properties: {},
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
geometry: {
|
||||||
|
type: 'Point',
|
||||||
|
},
|
||||||
|
properties: {
|
||||||
|
__kbn_is_centroid_feature__: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
|
@ -14,6 +14,7 @@ import {
|
||||||
DEFAULT_ICON,
|
DEFAULT_ICON,
|
||||||
FIELD_ORIGIN,
|
FIELD_ORIGIN,
|
||||||
GEO_JSON_TYPE,
|
GEO_JSON_TYPE,
|
||||||
|
KBN_IS_CENTROID_FEATURE,
|
||||||
LAYER_STYLE_TYPE,
|
LAYER_STYLE_TYPE,
|
||||||
SOURCE_FORMATTERS_DATA_REQUEST_ID,
|
SOURCE_FORMATTERS_DATA_REQUEST_ID,
|
||||||
STYLE_TYPE,
|
STYLE_TYPE,
|
||||||
|
@ -493,6 +494,12 @@ export class VectorStyle implements IVectorStyle {
|
||||||
if (supportedFeatures.length > 1) {
|
if (supportedFeatures.length > 1) {
|
||||||
for (let i = 0; i < features.length; i++) {
|
for (let i = 0; i < features.length; i++) {
|
||||||
const feature = features[i];
|
const feature = features[i];
|
||||||
|
|
||||||
|
// ignore centroid features as they are added for styling and not part of the real data set
|
||||||
|
if (feature.properties[KBN_IS_CENTROID_FEATURE]) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
if (!hasFeatureType[VECTOR_SHAPE_TYPE.POINT] && POINTS.includes(feature.geometry.type)) {
|
if (!hasFeatureType[VECTOR_SHAPE_TYPE.POINT] && POINTS.includes(feature.geometry.type)) {
|
||||||
hasFeatureType[VECTOR_SHAPE_TYPE.POINT] = true;
|
hasFeatureType[VECTOR_SHAPE_TYPE.POINT] = true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,16 +7,19 @@
|
||||||
import {
|
import {
|
||||||
GEO_JSON_TYPE,
|
GEO_JSON_TYPE,
|
||||||
FEATURE_VISIBLE_PROPERTY_NAME,
|
FEATURE_VISIBLE_PROPERTY_NAME,
|
||||||
|
KBN_IS_CENTROID_FEATURE,
|
||||||
KBN_TOO_MANY_FEATURES_PROPERTY,
|
KBN_TOO_MANY_FEATURES_PROPERTY,
|
||||||
} from '../../../common/constants';
|
} from '../../../common/constants';
|
||||||
|
|
||||||
export const EXCLUDE_TOO_MANY_FEATURES_BOX = ['!=', ['get', KBN_TOO_MANY_FEATURES_PROPERTY], true];
|
export const EXCLUDE_TOO_MANY_FEATURES_BOX = ['!=', ['get', KBN_TOO_MANY_FEATURES_PROPERTY], true];
|
||||||
|
const EXCLUDE_CENTROID_FEATURES = ['!=', ['get', KBN_IS_CENTROID_FEATURE], true];
|
||||||
|
|
||||||
const VISIBILITY_FILTER_CLAUSE = ['all', ['==', ['get', FEATURE_VISIBLE_PROPERTY_NAME], true]];
|
const VISIBILITY_FILTER_CLAUSE = ['all', ['==', ['get', FEATURE_VISIBLE_PROPERTY_NAME], true]];
|
||||||
const TOO_MANY_FEATURES_FILTER = ['all', EXCLUDE_TOO_MANY_FEATURES_BOX];
|
// Kibana features are features added by kibana that do not exist in real data
|
||||||
|
const EXCLUDE_KBN_FEATURES = ['all', EXCLUDE_TOO_MANY_FEATURES_BOX, EXCLUDE_CENTROID_FEATURES];
|
||||||
|
|
||||||
const CLOSED_SHAPE_MB_FILTER = [
|
const CLOSED_SHAPE_MB_FILTER = [
|
||||||
...TOO_MANY_FEATURES_FILTER,
|
...EXCLUDE_KBN_FEATURES,
|
||||||
[
|
[
|
||||||
'any',
|
'any',
|
||||||
['==', ['geometry-type'], GEO_JSON_TYPE.POLYGON],
|
['==', ['geometry-type'], GEO_JSON_TYPE.POLYGON],
|
||||||
|
@ -27,7 +30,7 @@ const CLOSED_SHAPE_MB_FILTER = [
|
||||||
const VISIBLE_CLOSED_SHAPE_MB_FILTER = [...VISIBILITY_FILTER_CLAUSE, CLOSED_SHAPE_MB_FILTER];
|
const VISIBLE_CLOSED_SHAPE_MB_FILTER = [...VISIBILITY_FILTER_CLAUSE, CLOSED_SHAPE_MB_FILTER];
|
||||||
|
|
||||||
const ALL_SHAPE_MB_FILTER = [
|
const ALL_SHAPE_MB_FILTER = [
|
||||||
...TOO_MANY_FEATURES_FILTER,
|
...EXCLUDE_KBN_FEATURES,
|
||||||
[
|
[
|
||||||
'any',
|
'any',
|
||||||
['==', ['geometry-type'], GEO_JSON_TYPE.POLYGON],
|
['==', ['geometry-type'], GEO_JSON_TYPE.POLYGON],
|
||||||
|
@ -40,7 +43,7 @@ const ALL_SHAPE_MB_FILTER = [
|
||||||
const VISIBLE_ALL_SHAPE_MB_FILTER = [...VISIBILITY_FILTER_CLAUSE, ALL_SHAPE_MB_FILTER];
|
const VISIBLE_ALL_SHAPE_MB_FILTER = [...VISIBILITY_FILTER_CLAUSE, ALL_SHAPE_MB_FILTER];
|
||||||
|
|
||||||
const POINT_MB_FILTER = [
|
const POINT_MB_FILTER = [
|
||||||
...TOO_MANY_FEATURES_FILTER,
|
...EXCLUDE_KBN_FEATURES,
|
||||||
[
|
[
|
||||||
'any',
|
'any',
|
||||||
['==', ['geometry-type'], GEO_JSON_TYPE.POINT],
|
['==', ['geometry-type'], GEO_JSON_TYPE.POINT],
|
||||||
|
@ -50,6 +53,10 @@ const POINT_MB_FILTER = [
|
||||||
|
|
||||||
const VISIBLE_POINT_MB_FILTER = [...VISIBILITY_FILTER_CLAUSE, POINT_MB_FILTER];
|
const VISIBLE_POINT_MB_FILTER = [...VISIBILITY_FILTER_CLAUSE, POINT_MB_FILTER];
|
||||||
|
|
||||||
|
const CENTROID_MB_FILTER = ['all', ['==', ['get', KBN_IS_CENTROID_FEATURE], true]];
|
||||||
|
|
||||||
|
const VISIBLE_CENTROID_MB_FILTER = [...VISIBILITY_FILTER_CLAUSE, CENTROID_MB_FILTER];
|
||||||
|
|
||||||
export function getFillFilterExpression(hasJoins: boolean): unknown[] {
|
export function getFillFilterExpression(hasJoins: boolean): unknown[] {
|
||||||
return hasJoins ? VISIBLE_CLOSED_SHAPE_MB_FILTER : CLOSED_SHAPE_MB_FILTER;
|
return hasJoins ? VISIBLE_CLOSED_SHAPE_MB_FILTER : CLOSED_SHAPE_MB_FILTER;
|
||||||
}
|
}
|
||||||
|
@ -61,3 +68,7 @@ export function getLineFilterExpression(hasJoins: boolean): unknown[] {
|
||||||
export function getPointFilterExpression(hasJoins: boolean): unknown[] {
|
export function getPointFilterExpression(hasJoins: boolean): unknown[] {
|
||||||
return hasJoins ? VISIBLE_POINT_MB_FILTER : POINT_MB_FILTER;
|
return hasJoins ? VISIBLE_POINT_MB_FILTER : POINT_MB_FILTER;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function getCentroidFilterExpression(hasJoins: boolean): unknown[] {
|
||||||
|
return hasJoins ? VISIBLE_CENTROID_MB_FILTER : CENTROID_MB_FILTER;
|
||||||
|
}
|
||||||
|
|
|
@ -7,7 +7,12 @@
|
||||||
import { getGridTile, getTile } from './get_tile';
|
import { getGridTile, getTile } from './get_tile';
|
||||||
import { TILE_GRIDAGGS, TILE_SEARCHES } from './__tests__/tile_es_responses';
|
import { TILE_GRIDAGGS, TILE_SEARCHES } from './__tests__/tile_es_responses';
|
||||||
import { Logger } from 'src/core/server';
|
import { Logger } from 'src/core/server';
|
||||||
import { ES_GEO_FIELD_TYPE, MVT_SOURCE_LAYER_NAME, RENDER_AS } from '../../common/constants';
|
import {
|
||||||
|
ES_GEO_FIELD_TYPE,
|
||||||
|
KBN_IS_CENTROID_FEATURE,
|
||||||
|
MVT_SOURCE_LAYER_NAME,
|
||||||
|
RENDER_AS,
|
||||||
|
} from '../../common/constants';
|
||||||
|
|
||||||
// @ts-expect-error
|
// @ts-expect-error
|
||||||
import { VectorTile, VectorTileLayer } from '@mapbox/vector-tile';
|
import { VectorTile, VectorTileLayer } from '@mapbox/vector-tile';
|
||||||
|
@ -18,7 +23,6 @@ interface ITileLayerJsonExpectation {
|
||||||
version: number;
|
version: number;
|
||||||
name: string;
|
name: string;
|
||||||
extent: number;
|
extent: number;
|
||||||
length: number;
|
|
||||||
features: Array<{
|
features: Array<{
|
||||||
id: string | number | undefined;
|
id: string | number | undefined;
|
||||||
type: number;
|
type: number;
|
||||||
|
@ -75,7 +79,6 @@ describe('getTile', () => {
|
||||||
version: 2,
|
version: 2,
|
||||||
name: 'source_layer',
|
name: 'source_layer',
|
||||||
extent: 4096,
|
extent: 4096,
|
||||||
length: 1,
|
|
||||||
features: [
|
features: [
|
||||||
{
|
{
|
||||||
id: undefined,
|
id: undefined,
|
||||||
|
@ -97,6 +100,18 @@ describe('getTile', () => {
|
||||||
],
|
],
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
id: undefined,
|
||||||
|
type: 1,
|
||||||
|
properties: {
|
||||||
|
__kbn__feature_id__: 'poly:G7PRMXQBgyyZ-h5iYibj:0',
|
||||||
|
_id: 'G7PRMXQBgyyZ-h5iYibj',
|
||||||
|
_index: 'poly',
|
||||||
|
[KBN_IS_CENTROID_FEATURE]: true,
|
||||||
|
},
|
||||||
|
extent: 4096,
|
||||||
|
pointArrays: [[{ x: 1470, y: 1702 }]],
|
||||||
|
},
|
||||||
],
|
],
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
@ -166,7 +181,6 @@ describe('getGridTile', () => {
|
||||||
version: 2,
|
version: 2,
|
||||||
name: 'source_layer',
|
name: 'source_layer',
|
||||||
extent: 4096,
|
extent: 4096,
|
||||||
length: 1,
|
|
||||||
features: [
|
features: [
|
||||||
{
|
{
|
||||||
id: undefined,
|
id: undefined,
|
||||||
|
@ -189,7 +203,6 @@ describe('getGridTile', () => {
|
||||||
version: 2,
|
version: 2,
|
||||||
name: 'source_layer',
|
name: 'source_layer',
|
||||||
extent: 4096,
|
extent: 4096,
|
||||||
length: 1,
|
|
||||||
features: [
|
features: [
|
||||||
{
|
{
|
||||||
id: undefined,
|
id: undefined,
|
||||||
|
@ -209,6 +222,17 @@ describe('getGridTile', () => {
|
||||||
],
|
],
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
id: undefined,
|
||||||
|
type: 1,
|
||||||
|
properties: {
|
||||||
|
['avg_of_TOTAL_AV']: 5398920.390458991,
|
||||||
|
doc_count: 42637,
|
||||||
|
[KBN_IS_CENTROID_FEATURE]: true,
|
||||||
|
},
|
||||||
|
extent: 4096,
|
||||||
|
pointArrays: [[{ x: 1200, y: 1552 }]],
|
||||||
|
},
|
||||||
],
|
],
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
|
@ -24,6 +24,7 @@ import {
|
||||||
import { convertRegularRespToGeoJson, hitsToGeoJson } from '../../common/elasticsearch_util';
|
import { convertRegularRespToGeoJson, hitsToGeoJson } from '../../common/elasticsearch_util';
|
||||||
import { flattenHit } from './util';
|
import { flattenHit } from './util';
|
||||||
import { ESBounds, tile2lat, tile2long, tileToESBbox } from '../../common/geo_tile_utils';
|
import { ESBounds, tile2lat, tile2long, tileToESBbox } from '../../common/geo_tile_utils';
|
||||||
|
import { getCentroidFeatures } from '../../common/get_centroid_features';
|
||||||
|
|
||||||
export async function getGridTile({
|
export async function getGridTile({
|
||||||
logger,
|
logger,
|
||||||
|
@ -270,6 +271,7 @@ function createMvtTile(
|
||||||
x: number,
|
x: number,
|
||||||
y: number
|
y: number
|
||||||
): Buffer | null {
|
): Buffer | null {
|
||||||
|
featureCollection.features.push(...getCentroidFeatures(featureCollection));
|
||||||
const tileIndex = geojsonvt(featureCollection, {
|
const tileIndex = geojsonvt(featureCollection, {
|
||||||
maxZoom: 24, // max zoom to preserve detail on; can't be higher than 24
|
maxZoom: 24, // max zoom to preserve detail on; can't be higher than 24
|
||||||
tolerance: 3, // simplification tolerance (higher means simpler)
|
tolerance: 3, // simplification tolerance (higher means simpler)
|
||||||
|
|
|
@ -13,8 +13,6 @@ export default function ({ getPageObjects, getService }) {
|
||||||
const security = getService('security');
|
const security = getService('security');
|
||||||
|
|
||||||
describe('layer geo grid aggregation source', () => {
|
describe('layer geo grid aggregation source', () => {
|
||||||
const EXPECTED_NUMBER_FEATURES_ZOOMED_OUT = 4;
|
|
||||||
const EXPECTED_NUMBER_FEATURES_ZOOMED_IN = 6;
|
|
||||||
const DATA_CENTER_LON = -98;
|
const DATA_CENTER_LON = -98;
|
||||||
const DATA_CENTER_LAT = 38;
|
const DATA_CENTER_LAT = 38;
|
||||||
|
|
||||||
|
@ -41,7 +39,11 @@ export default function ({ getPageObjects, getService }) {
|
||||||
return requestTimestamp;
|
return requestTimestamp;
|
||||||
}
|
}
|
||||||
|
|
||||||
function makeRequestTestsForGeoPrecision(LAYER_ID) {
|
function makeRequestTestsForGeoPrecision(
|
||||||
|
LAYER_ID,
|
||||||
|
expectedNumFeaturesZoomedOut,
|
||||||
|
expectedNumPartialFeatures
|
||||||
|
) {
|
||||||
describe('geoprecision - requests', () => {
|
describe('geoprecision - requests', () => {
|
||||||
let beforeTimestamp;
|
let beforeTimestamp;
|
||||||
beforeEach(async () => {
|
beforeEach(async () => {
|
||||||
|
@ -84,7 +86,7 @@ export default function ({ getPageObjects, getService }) {
|
||||||
it('should request the data when the map covers the databounds', async () => {
|
it('should request the data when the map covers the databounds', async () => {
|
||||||
const mapboxStyle = await PageObjects.maps.getMapboxStyle();
|
const mapboxStyle = await PageObjects.maps.getMapboxStyle();
|
||||||
expect(mapboxStyle.sources[LAYER_ID].data.features.length).to.equal(
|
expect(mapboxStyle.sources[LAYER_ID].data.features.length).to.equal(
|
||||||
EXPECTED_NUMBER_FEATURES_ZOOMED_OUT
|
expectedNumFeaturesZoomedOut
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -92,7 +94,9 @@ export default function ({ getPageObjects, getService }) {
|
||||||
//todo this verifies the extent-filtering behavior (not really the correct application of geotile_grid-precision), and should ideally be moved to its own section
|
//todo this verifies the extent-filtering behavior (not really the correct application of geotile_grid-precision), and should ideally be moved to its own section
|
||||||
await PageObjects.maps.setView(DATA_CENTER_LAT, DATA_CENTER_LON, 6);
|
await PageObjects.maps.setView(DATA_CENTER_LAT, DATA_CENTER_LON, 6);
|
||||||
const mapboxStyle = await PageObjects.maps.getMapboxStyle();
|
const mapboxStyle = await PageObjects.maps.getMapboxStyle();
|
||||||
expect(mapboxStyle.sources[LAYER_ID].data.features.length).to.equal(2);
|
expect(mapboxStyle.sources[LAYER_ID].data.features.length).to.equal(
|
||||||
|
expectedNumPartialFeatures
|
||||||
|
);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -115,9 +119,7 @@ export default function ({ getPageObjects, getService }) {
|
||||||
|
|
||||||
it('should decorate feature properties with scaled doc_count property', async () => {
|
it('should decorate feature properties with scaled doc_count property', async () => {
|
||||||
const mapboxStyle = await PageObjects.maps.getMapboxStyle();
|
const mapboxStyle = await PageObjects.maps.getMapboxStyle();
|
||||||
expect(mapboxStyle.sources[LAYER_ID].data.features.length).to.equal(
|
expect(mapboxStyle.sources[LAYER_ID].data.features.length).to.equal(6);
|
||||||
EXPECTED_NUMBER_FEATURES_ZOOMED_IN
|
|
||||||
);
|
|
||||||
|
|
||||||
mapboxStyle.sources[LAYER_ID].data.features.forEach(({ properties }) => {
|
mapboxStyle.sources[LAYER_ID].data.features.forEach(({ properties }) => {
|
||||||
expect(properties.hasOwnProperty(HEATMAP_PROP_NAME)).to.be(true);
|
expect(properties.hasOwnProperty(HEATMAP_PROP_NAME)).to.be(true);
|
||||||
|
@ -125,7 +127,7 @@ export default function ({ getPageObjects, getService }) {
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
makeRequestTestsForGeoPrecision(LAYER_ID);
|
makeRequestTestsForGeoPrecision(LAYER_ID, 4, 2);
|
||||||
|
|
||||||
describe('query bar', () => {
|
describe('query bar', () => {
|
||||||
before(async () => {
|
before(async () => {
|
||||||
|
@ -194,9 +196,7 @@ export default function ({ getPageObjects, getService }) {
|
||||||
|
|
||||||
it('should decorate feature properties with metrics properterties', async () => {
|
it('should decorate feature properties with metrics properterties', async () => {
|
||||||
const mapboxStyle = await PageObjects.maps.getMapboxStyle();
|
const mapboxStyle = await PageObjects.maps.getMapboxStyle();
|
||||||
expect(mapboxStyle.sources[LAYER_ID].data.features.length).to.equal(
|
expect(mapboxStyle.sources[LAYER_ID].data.features.length).to.equal(12);
|
||||||
EXPECTED_NUMBER_FEATURES_ZOOMED_IN
|
|
||||||
);
|
|
||||||
|
|
||||||
mapboxStyle.sources[LAYER_ID].data.features.forEach(({ properties }) => {
|
mapboxStyle.sources[LAYER_ID].data.features.forEach(({ properties }) => {
|
||||||
expect(properties.hasOwnProperty(MAX_OF_BYTES_PROP_NAME)).to.be(true);
|
expect(properties.hasOwnProperty(MAX_OF_BYTES_PROP_NAME)).to.be(true);
|
||||||
|
@ -204,7 +204,7 @@ export default function ({ getPageObjects, getService }) {
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
makeRequestTestsForGeoPrecision(LAYER_ID);
|
makeRequestTestsForGeoPrecision(LAYER_ID, 8, 4);
|
||||||
|
|
||||||
describe('query bar', () => {
|
describe('query bar', () => {
|
||||||
before(async () => {
|
before(async () => {
|
||||||
|
@ -262,7 +262,7 @@ export default function ({ getPageObjects, getService }) {
|
||||||
const LAYER_ID = 'g1xkv';
|
const LAYER_ID = 'g1xkv';
|
||||||
it('should get expected number of grid cells', async () => {
|
it('should get expected number of grid cells', async () => {
|
||||||
const mapboxStyle = await PageObjects.maps.getMapboxStyle();
|
const mapboxStyle = await PageObjects.maps.getMapboxStyle();
|
||||||
expect(mapboxStyle.sources[LAYER_ID].data.features.length).to.equal(13);
|
expect(mapboxStyle.sources[LAYER_ID].data.features.length).to.equal(26);
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('inspector', () => {
|
describe('inspector', () => {
|
||||||
|
|
|
@ -38,7 +38,7 @@ export default function ({ getPageObjects, getService }) {
|
||||||
it('should render lines', async () => {
|
it('should render lines', async () => {
|
||||||
const mapboxStyle = await PageObjects.maps.getMapboxStyle();
|
const mapboxStyle = await PageObjects.maps.getMapboxStyle();
|
||||||
const features = mapboxStyle.sources[VECTOR_SOURCE_ID].data.features;
|
const features = mapboxStyle.sources[VECTOR_SOURCE_ID].data.features;
|
||||||
expect(features.length).to.equal(2);
|
expect(features.length).to.equal(4);
|
||||||
expect(features[0].geometry.type).to.equal('LineString');
|
expect(features[0].geometry.type).to.equal('LineString');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -81,7 +81,7 @@ export default function ({ getPageObjects, getService }) {
|
||||||
|
|
||||||
it('should decorate feature properties with join property', async () => {
|
it('should decorate feature properties with join property', async () => {
|
||||||
const mapboxStyle = await PageObjects.maps.getMapboxStyle();
|
const mapboxStyle = await PageObjects.maps.getMapboxStyle();
|
||||||
expect(mapboxStyle.sources[VECTOR_SOURCE_ID].data.features.length).to.equal(4);
|
expect(mapboxStyle.sources[VECTOR_SOURCE_ID].data.features.length).to.equal(8);
|
||||||
|
|
||||||
mapboxStyle.sources.n1t6f.data.features.forEach(({ properties }) => {
|
mapboxStyle.sources.n1t6f.data.features.forEach(({ properties }) => {
|
||||||
if (properties.name === 'tango') {
|
if (properties.name === 'tango') {
|
||||||
|
@ -130,7 +130,17 @@ export default function ({ getPageObjects, getService }) {
|
||||||
return feature.properties.__kbn_isvisibleduetojoin__;
|
return feature.properties.__kbn_isvisibleduetojoin__;
|
||||||
});
|
});
|
||||||
|
|
||||||
expect(visibilitiesOfFeatures).to.eql([false, true, true, true]);
|
expect(visibilitiesOfFeatures).to.eql([
|
||||||
|
false,
|
||||||
|
true,
|
||||||
|
true,
|
||||||
|
true,
|
||||||
|
// geo centroids for above features
|
||||||
|
false,
|
||||||
|
true,
|
||||||
|
true,
|
||||||
|
true,
|
||||||
|
]);
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('query bar', () => {
|
describe('query bar', () => {
|
||||||
|
@ -196,7 +206,17 @@ export default function ({ getPageObjects, getService }) {
|
||||||
return feature.properties.__kbn_isvisibleduetojoin__;
|
return feature.properties.__kbn_isvisibleduetojoin__;
|
||||||
});
|
});
|
||||||
|
|
||||||
expect(visibilitiesOfFeatures).to.eql([false, true, false, false]);
|
expect(visibilitiesOfFeatures).to.eql([
|
||||||
|
false,
|
||||||
|
true,
|
||||||
|
false,
|
||||||
|
false,
|
||||||
|
// geo centroids for above features
|
||||||
|
false,
|
||||||
|
true,
|
||||||
|
false,
|
||||||
|
false,
|
||||||
|
]);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -17,6 +17,7 @@ export const MAPBOX_STYLES = {
|
||||||
[
|
[
|
||||||
'all',
|
'all',
|
||||||
['!=', ['get', '__kbn_too_many_features__'], true],
|
['!=', ['get', '__kbn_too_many_features__'], true],
|
||||||
|
['!=', ['get', '__kbn_is_centroid_feature__'], true],
|
||||||
['any', ['==', ['geometry-type'], 'Point'], ['==', ['geometry-type'], 'MultiPoint']],
|
['any', ['==', ['geometry-type'], 'Point'], ['==', ['geometry-type'], 'MultiPoint']],
|
||||||
],
|
],
|
||||||
],
|
],
|
||||||
|
@ -91,6 +92,7 @@ export const MAPBOX_STYLES = {
|
||||||
[
|
[
|
||||||
'all',
|
'all',
|
||||||
['!=', ['get', '__kbn_too_many_features__'], true],
|
['!=', ['get', '__kbn_too_many_features__'], true],
|
||||||
|
['!=', ['get', '__kbn_is_centroid_feature__'], true],
|
||||||
['any', ['==', ['geometry-type'], 'Polygon'], ['==', ['geometry-type'], 'MultiPolygon']],
|
['any', ['==', ['geometry-type'], 'Polygon'], ['==', ['geometry-type'], 'MultiPolygon']],
|
||||||
],
|
],
|
||||||
],
|
],
|
||||||
|
@ -161,6 +163,7 @@ export const MAPBOX_STYLES = {
|
||||||
[
|
[
|
||||||
'all',
|
'all',
|
||||||
['!=', ['get', '__kbn_too_many_features__'], true],
|
['!=', ['get', '__kbn_too_many_features__'], true],
|
||||||
|
['!=', ['get', '__kbn_is_centroid_feature__'], true],
|
||||||
[
|
[
|
||||||
'any',
|
'any',
|
||||||
['==', ['geometry-type'], 'Polygon'],
|
['==', ['geometry-type'], 'Polygon'],
|
||||||
|
|
154
yarn.lock
154
yarn.lock
|
@ -4381,6 +4381,25 @@
|
||||||
dependencies:
|
dependencies:
|
||||||
"@babel/runtime" "^7.10.2"
|
"@babel/runtime" "^7.10.2"
|
||||||
|
|
||||||
|
"@turf/along@6.0.1":
|
||||||
|
version "6.0.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/@turf/along/-/along-6.0.1.tgz#595cecdc48fc7fcfa83c940a8e3eb24d4c2e04d4"
|
||||||
|
integrity sha512-6PptAcrsFR3o0Flpktk8Vo68W2txEVTh14zjoTVu+H5docd2+pv5/upA77bg3YFBoJgAxmUFt1leDdjReJ44BQ==
|
||||||
|
dependencies:
|
||||||
|
"@turf/bearing" "6.x"
|
||||||
|
"@turf/destination" "6.x"
|
||||||
|
"@turf/distance" "6.x"
|
||||||
|
"@turf/helpers" "6.x"
|
||||||
|
"@turf/invariant" "6.x"
|
||||||
|
|
||||||
|
"@turf/area@6.0.1":
|
||||||
|
version "6.0.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/@turf/area/-/area-6.0.1.tgz#50ed63c70ef2bdb72952384f1594319d94f3b051"
|
||||||
|
integrity sha512-Zv+3N1ep9P5JvR0YOYagLANyapGWQBh8atdeR3bKpWcigVXFsEKNUw03U/5xnh+cKzm7yozHD6MFJkqQv55y0g==
|
||||||
|
dependencies:
|
||||||
|
"@turf/helpers" "6.x"
|
||||||
|
"@turf/meta" "6.x"
|
||||||
|
|
||||||
"@turf/bbox-polygon@6.0.1":
|
"@turf/bbox-polygon@6.0.1":
|
||||||
version "6.0.1"
|
version "6.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/@turf/bbox-polygon/-/bbox-polygon-6.0.1.tgz#ae0fbb14558831fb34538aae089a23d3336c6379"
|
resolved "https://registry.yarnpkg.com/@turf/bbox-polygon/-/bbox-polygon-6.0.1.tgz#ae0fbb14558831fb34538aae089a23d3336c6379"
|
||||||
|
@ -4396,6 +4415,14 @@
|
||||||
"@turf/helpers" "6.x"
|
"@turf/helpers" "6.x"
|
||||||
"@turf/meta" "6.x"
|
"@turf/meta" "6.x"
|
||||||
|
|
||||||
|
"@turf/bearing@6.x":
|
||||||
|
version "6.0.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/@turf/bearing/-/bearing-6.0.1.tgz#8da5d17092e571f170cde7bfb2e5b0d74923c92d"
|
||||||
|
integrity sha512-mXY1NozqV9EFfBTbUItujwfqfQF0G/Xe2fzvnZle90ekPEUfhi4Dgf5JswJTd96J9LiT8kcd6Jonp5khnx0wIg==
|
||||||
|
dependencies:
|
||||||
|
"@turf/helpers" "6.x"
|
||||||
|
"@turf/invariant" "6.x"
|
||||||
|
|
||||||
"@turf/boolean-contains@6.0.1":
|
"@turf/boolean-contains@6.0.1":
|
||||||
version "6.0.1"
|
version "6.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/@turf/boolean-contains/-/boolean-contains-6.0.1.tgz#c3c583215fc5bda47ede51cf52d735ffdc1006a5"
|
resolved "https://registry.yarnpkg.com/@turf/boolean-contains/-/boolean-contains-6.0.1.tgz#c3c583215fc5bda47ede51cf52d735ffdc1006a5"
|
||||||
|
@ -4423,6 +4450,25 @@
|
||||||
"@turf/helpers" "6.x"
|
"@turf/helpers" "6.x"
|
||||||
"@turf/invariant" "6.x"
|
"@turf/invariant" "6.x"
|
||||||
|
|
||||||
|
"@turf/center-of-mass@6.0.1":
|
||||||
|
version "6.0.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/@turf/center-of-mass/-/center-of-mass-6.0.1.tgz#be8904edfd6523683706429ea2f4adf5badd5b26"
|
||||||
|
integrity sha512-cY+RndzVzDBMlEShRmvLko0CSG1+iC+WdeMAtauCGL61e23LTYHxFSjVOOo4gF+aKqKia1veZPol8ENJoOU4ow==
|
||||||
|
dependencies:
|
||||||
|
"@turf/centroid" "6.x"
|
||||||
|
"@turf/convex" "6.x"
|
||||||
|
"@turf/helpers" "6.x"
|
||||||
|
"@turf/invariant" "6.x"
|
||||||
|
"@turf/meta" "6.x"
|
||||||
|
|
||||||
|
"@turf/centroid@6.x":
|
||||||
|
version "6.0.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/@turf/centroid/-/centroid-6.0.2.tgz#c4eb16b4bc60b692f74e1809cf9a7c4a4f5ba1cc"
|
||||||
|
integrity sha512-auyDauOtC4eddH7GC3CHFTDu2PKhpSeKCRhwhHhXtJqn2dWCJQNIoCeJRmfXRIbzCWhWvgvQafvvhq8HNvmvWw==
|
||||||
|
dependencies:
|
||||||
|
"@turf/helpers" "6.x"
|
||||||
|
"@turf/meta" "6.x"
|
||||||
|
|
||||||
"@turf/circle@6.0.1":
|
"@turf/circle@6.0.1":
|
||||||
version "6.0.1"
|
version "6.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/@turf/circle/-/circle-6.0.1.tgz#0ab72083373ae3c76b700c17a504ab1b5c0910b9"
|
resolved "https://registry.yarnpkg.com/@turf/circle/-/circle-6.0.1.tgz#0ab72083373ae3c76b700c17a504ab1b5c0910b9"
|
||||||
|
@ -4431,6 +4477,15 @@
|
||||||
"@turf/destination" "6.x"
|
"@turf/destination" "6.x"
|
||||||
"@turf/helpers" "6.x"
|
"@turf/helpers" "6.x"
|
||||||
|
|
||||||
|
"@turf/convex@6.x":
|
||||||
|
version "6.0.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/@turf/convex/-/convex-6.0.3.tgz#d7e9912b96483f1504cdd2f60b4b1bbdbf77416c"
|
||||||
|
integrity sha512-S9zvcKiqkIiQ/fhnEP5ftDrsVY3Sh0XeLDVZY761nlvuvzLVzz26Gq7H3NMsCJlmIcQS9jPARFBVpRZi6eTV8Q==
|
||||||
|
dependencies:
|
||||||
|
"@turf/helpers" "6.x"
|
||||||
|
"@turf/meta" "6.x"
|
||||||
|
concaveman "*"
|
||||||
|
|
||||||
"@turf/destination@6.x":
|
"@turf/destination@6.x":
|
||||||
version "6.0.1"
|
version "6.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/@turf/destination/-/destination-6.0.1.tgz#5275887fa96ec463f44864a2c17f0b712361794a"
|
resolved "https://registry.yarnpkg.com/@turf/destination/-/destination-6.0.1.tgz#5275887fa96ec463f44864a2c17f0b712361794a"
|
||||||
|
@ -4439,7 +4494,7 @@
|
||||||
"@turf/helpers" "6.x"
|
"@turf/helpers" "6.x"
|
||||||
"@turf/invariant" "6.x"
|
"@turf/invariant" "6.x"
|
||||||
|
|
||||||
"@turf/distance@6.0.1":
|
"@turf/distance@6.0.1", "@turf/distance@6.x":
|
||||||
version "6.0.1"
|
version "6.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/@turf/distance/-/distance-6.0.1.tgz#0761f28784286e7865a427c4e7e3593569c2dea8"
|
resolved "https://registry.yarnpkg.com/@turf/distance/-/distance-6.0.1.tgz#0761f28784286e7865a427c4e7e3593569c2dea8"
|
||||||
integrity sha512-q7t7rWIWfkg7MP1Vt4uLjSEhe5rPfCO2JjpKmk7JC+QZKEQkuvHEqy3ejW1iC7Kw5ZcZNR3qdMGGz+6HnVwqvg==
|
integrity sha512-q7t7rWIWfkg7MP1Vt4uLjSEhe5rPfCO2JjpKmk7JC+QZKEQkuvHEqy3ejW1iC7Kw5ZcZNR3qdMGGz+6HnVwqvg==
|
||||||
|
@ -4459,6 +4514,15 @@
|
||||||
dependencies:
|
dependencies:
|
||||||
"@turf/helpers" "6.x"
|
"@turf/helpers" "6.x"
|
||||||
|
|
||||||
|
"@turf/length@^6.0.2":
|
||||||
|
version "6.0.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/@turf/length/-/length-6.0.2.tgz#22d91a6d0174e862a3614865613f1aceb1162dac"
|
||||||
|
integrity sha512-nyfXMowVtX2dICEG7u7EGC2SMaauVUWIMc9eWQrEauNA/9aw+7wbiuip4GPBoyeXEUUekF0EOjJn5aB9Zc8CzA==
|
||||||
|
dependencies:
|
||||||
|
"@turf/distance" "6.x"
|
||||||
|
"@turf/helpers" "6.x"
|
||||||
|
"@turf/meta" "6.x"
|
||||||
|
|
||||||
"@turf/meta@6.x":
|
"@turf/meta@6.x":
|
||||||
version "6.0.2"
|
version "6.0.2"
|
||||||
resolved "https://registry.yarnpkg.com/@turf/meta/-/meta-6.0.2.tgz#eb92951126d24a613ac1b7b99d733fcc20fd30cf"
|
resolved "https://registry.yarnpkg.com/@turf/meta/-/meta-6.0.2.tgz#eb92951126d24a613ac1b7b99d733fcc20fd30cf"
|
||||||
|
@ -10056,6 +10120,17 @@ concat-stream@~2.0.0:
|
||||||
readable-stream "^3.0.2"
|
readable-stream "^3.0.2"
|
||||||
typedarray "^0.0.6"
|
typedarray "^0.0.6"
|
||||||
|
|
||||||
|
concaveman@*:
|
||||||
|
version "1.1.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/concaveman/-/concaveman-1.1.1.tgz#6c2482580b2523cef82fc2bec00a0415e6e68162"
|
||||||
|
integrity sha1-bCSCWAslI874L8K+wAoEFebmgWI=
|
||||||
|
dependencies:
|
||||||
|
monotone-convex-hull-2d "^1.0.1"
|
||||||
|
point-in-polygon "^1.0.1"
|
||||||
|
rbush "^2.0.1"
|
||||||
|
robust-orientation "^1.1.3"
|
||||||
|
tinyqueue "^1.1.0"
|
||||||
|
|
||||||
config-chain@^1.1.12, config-chain@~1.1.8:
|
config-chain@^1.1.12, config-chain@~1.1.8:
|
||||||
version "1.1.12"
|
version "1.1.12"
|
||||||
resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.12.tgz#0fde8d091200eb5e808caf25fe618c02f48e4efa"
|
resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.12.tgz#0fde8d091200eb5e808caf25fe618c02f48e4efa"
|
||||||
|
@ -11680,10 +11755,10 @@ detective@^5.0.2, detective@^5.2.0:
|
||||||
defined "^1.0.0"
|
defined "^1.0.0"
|
||||||
minimist "^1.1.1"
|
minimist "^1.1.1"
|
||||||
|
|
||||||
devtools-protocol@0.0.818844:
|
devtools-protocol@0.0.809251:
|
||||||
version "0.0.818844"
|
version "0.0.809251"
|
||||||
resolved "https://registry.yarnpkg.com/devtools-protocol/-/devtools-protocol-0.0.818844.tgz#d1947278ec85b53e4c8ca598f607a28fa785ba9e"
|
resolved "https://registry.yarnpkg.com/devtools-protocol/-/devtools-protocol-0.0.809251.tgz#300b3366be107d5c46114ecb85274173e3999518"
|
||||||
integrity sha512-AD1hi7iVJ8OD0aMLQU5VK0XH9LDlA1+BcPIgrAxPfaibx2DbWucuyOhc4oyQCbnvDDO68nN6/LcKfqTP343Jjg==
|
integrity sha512-pf+2OY6ghMDPjKkzSWxHMq+McD+9Ojmq5XVRYpv/kPd9sTMQxzEt21592a31API8qRjro0iYYOc3ag46qF/1FA==
|
||||||
|
|
||||||
dezalgo@^1.0.0:
|
dezalgo@^1.0.0:
|
||||||
version "1.0.3"
|
version "1.0.3"
|
||||||
|
@ -20245,6 +20320,13 @@ monocle-ts@^1.0.0:
|
||||||
resolved "https://registry.yarnpkg.com/monocle-ts/-/monocle-ts-1.7.1.tgz#03a615938aa90983a4fa29749969d30f72d80ba1"
|
resolved "https://registry.yarnpkg.com/monocle-ts/-/monocle-ts-1.7.1.tgz#03a615938aa90983a4fa29749969d30f72d80ba1"
|
||||||
integrity sha512-X9OzpOyd/R83sYex8NYpJjUzi/MLQMvGNVfxDYiIvs+QMXMEUDwR61MQoARFN10Cqz5h/mbFSPnIQNUIGhYd2Q==
|
integrity sha512-X9OzpOyd/R83sYex8NYpJjUzi/MLQMvGNVfxDYiIvs+QMXMEUDwR61MQoARFN10Cqz5h/mbFSPnIQNUIGhYd2Q==
|
||||||
|
|
||||||
|
monotone-convex-hull-2d@^1.0.1:
|
||||||
|
version "1.0.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/monotone-convex-hull-2d/-/monotone-convex-hull-2d-1.0.1.tgz#47f5daeadf3c4afd37764baa1aa8787a40eee08c"
|
||||||
|
integrity sha1-R/Xa6t88Sv03dkuqGqh4ekDu4Iw=
|
||||||
|
dependencies:
|
||||||
|
robust-orientation "^1.1.3"
|
||||||
|
|
||||||
moo@^0.4.3:
|
moo@^0.4.3:
|
||||||
version "0.4.3"
|
version "0.4.3"
|
||||||
resolved "https://registry.yarnpkg.com/moo/-/moo-0.4.3.tgz#3f847a26f31cf625a956a87f2b10fbc013bfd10e"
|
resolved "https://registry.yarnpkg.com/moo/-/moo-0.4.3.tgz#3f847a26f31cf625a956a87f2b10fbc013bfd10e"
|
||||||
|
@ -22215,6 +22297,11 @@ pnp-webpack-plugin@1.6.4:
|
||||||
dependencies:
|
dependencies:
|
||||||
ts-pnp "^1.1.6"
|
ts-pnp "^1.1.6"
|
||||||
|
|
||||||
|
point-in-polygon@^1.0.1:
|
||||||
|
version "1.0.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/point-in-polygon/-/point-in-polygon-1.0.1.tgz#d59b64e8fee41c49458aac82b56718c5957b2af7"
|
||||||
|
integrity sha1-1Ztk6P7kHElFiqyCtWcYxZV7Kvc=
|
||||||
|
|
||||||
polished@^1.9.2:
|
polished@^1.9.2:
|
||||||
version "1.9.2"
|
version "1.9.2"
|
||||||
resolved "https://registry.yarnpkg.com/polished/-/polished-1.9.2.tgz#d705cac66f3a3ed1bd38aad863e2c1e269baf6b6"
|
resolved "https://registry.yarnpkg.com/polished/-/polished-1.9.2.tgz#d705cac66f3a3ed1bd38aad863e2c1e269baf6b6"
|
||||||
|
@ -22720,7 +22807,7 @@ puppeteer@^2.0.0:
|
||||||
integrity sha512-I4JbNmQHZkE72TPNdipND8GnsEBnqzuksxPSAT25qvudShuuzdY9TwNBQ65IJwPD/pjlpx7fUIUmFyvTHwlxhQ==
|
integrity sha512-I4JbNmQHZkE72TPNdipND8GnsEBnqzuksxPSAT25qvudShuuzdY9TwNBQ65IJwPD/pjlpx7fUIUmFyvTHwlxhQ==
|
||||||
dependencies:
|
dependencies:
|
||||||
debug "^4.1.0"
|
debug "^4.1.0"
|
||||||
devtools-protocol "0.0.818844"
|
devtools-protocol "0.0.809251"
|
||||||
extract-zip "^2.0.0"
|
extract-zip "^2.0.0"
|
||||||
https-proxy-agent "^4.0.0"
|
https-proxy-agent "^4.0.0"
|
||||||
node-fetch "^2.6.1"
|
node-fetch "^2.6.1"
|
||||||
|
@ -22796,6 +22883,11 @@ quick-lru@^4.0.1:
|
||||||
resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-4.0.1.tgz#5b8878f113a58217848c6482026c73e1ba57727f"
|
resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-4.0.1.tgz#5b8878f113a58217848c6482026c73e1ba57727f"
|
||||||
integrity sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==
|
integrity sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==
|
||||||
|
|
||||||
|
quickselect@^1.0.1:
|
||||||
|
version "1.1.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/quickselect/-/quickselect-1.1.1.tgz#852e412ce418f237ad5b660d70cffac647ae94c2"
|
||||||
|
integrity sha512-qN0Gqdw4c4KGPsBOQafj6yj/PA6c/L63f6CaZ/DCF/xF4Esu3jVmKLUDYxghFx8Kb/O7y9tI7x2RjTSXwdK1iQ==
|
||||||
|
|
||||||
quickselect@^2.0.0:
|
quickselect@^2.0.0:
|
||||||
version "2.0.0"
|
version "2.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/quickselect/-/quickselect-2.0.0.tgz#f19680a486a5eefb581303e023e98faaf25dd018"
|
resolved "https://registry.yarnpkg.com/quickselect/-/quickselect-2.0.0.tgz#f19680a486a5eefb581303e023e98faaf25dd018"
|
||||||
|
@ -22906,6 +22998,13 @@ raw-loader@^4.0.1:
|
||||||
loader-utils "^2.0.0"
|
loader-utils "^2.0.0"
|
||||||
schema-utils "^2.6.5"
|
schema-utils "^2.6.5"
|
||||||
|
|
||||||
|
rbush@^2.0.1:
|
||||||
|
version "2.0.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/rbush/-/rbush-2.0.2.tgz#bb6005c2731b7ba1d5a9a035772927d16a614605"
|
||||||
|
integrity sha512-XBOuALcTm+O/H8G90b6pzu6nX6v2zCKiFG4BJho8a+bY6AER6t8uQUZdi5bomQc0AprCWhEGa7ncAbbRap0bRA==
|
||||||
|
dependencies:
|
||||||
|
quickselect "^1.0.1"
|
||||||
|
|
||||||
rbush@^3.0.1:
|
rbush@^3.0.1:
|
||||||
version "3.0.1"
|
version "3.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/rbush/-/rbush-3.0.1.tgz#5fafa8a79b3b9afdfe5008403a720cc1de882ecf"
|
resolved "https://registry.yarnpkg.com/rbush/-/rbush-3.0.1.tgz#5fafa8a79b3b9afdfe5008403a720cc1de882ecf"
|
||||||
|
@ -24756,6 +24855,34 @@ rison-node@1.0.2:
|
||||||
resolved "https://registry.yarnpkg.com/rison-node/-/rison-node-1.0.2.tgz#b7b5f37f39f5ae2a51a973a33c9aa17239a33e4b"
|
resolved "https://registry.yarnpkg.com/rison-node/-/rison-node-1.0.2.tgz#b7b5f37f39f5ae2a51a973a33c9aa17239a33e4b"
|
||||||
integrity sha1-t7Xzfzn1ripRqXOjPJqhcjmjPks=
|
integrity sha1-t7Xzfzn1ripRqXOjPJqhcjmjPks=
|
||||||
|
|
||||||
|
robust-orientation@^1.1.3:
|
||||||
|
version "1.1.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/robust-orientation/-/robust-orientation-1.1.3.tgz#daff5b00d3be4e60722f0e9c0156ef967f1c2049"
|
||||||
|
integrity sha1-2v9bANO+TmByLw6cAVbvln8cIEk=
|
||||||
|
dependencies:
|
||||||
|
robust-scale "^1.0.2"
|
||||||
|
robust-subtract "^1.0.0"
|
||||||
|
robust-sum "^1.0.0"
|
||||||
|
two-product "^1.0.2"
|
||||||
|
|
||||||
|
robust-scale@^1.0.2:
|
||||||
|
version "1.0.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/robust-scale/-/robust-scale-1.0.2.tgz#775132ed09542d028e58b2cc79c06290bcf78c32"
|
||||||
|
integrity sha1-d1Ey7QlULQKOWLLMecBikLz3jDI=
|
||||||
|
dependencies:
|
||||||
|
two-product "^1.0.2"
|
||||||
|
two-sum "^1.0.0"
|
||||||
|
|
||||||
|
robust-subtract@^1.0.0:
|
||||||
|
version "1.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/robust-subtract/-/robust-subtract-1.0.0.tgz#e0b164e1ed8ba4e3a5dda45a12038348dbed3e9a"
|
||||||
|
integrity sha1-4LFk4e2LpOOl3aRaEgODSNvtPpo=
|
||||||
|
|
||||||
|
robust-sum@^1.0.0:
|
||||||
|
version "1.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/robust-sum/-/robust-sum-1.0.0.tgz#16646e525292b4d25d82757a286955e0bbfa53d9"
|
||||||
|
integrity sha1-FmRuUlKStNJdgnV6KGlV4Lv6U9k=
|
||||||
|
|
||||||
rollup@^0.25.8:
|
rollup@^0.25.8:
|
||||||
version "0.25.8"
|
version "0.25.8"
|
||||||
resolved "https://registry.yarnpkg.com/rollup/-/rollup-0.25.8.tgz#bf6ce83b87510d163446eeaa577ed6a6fc5835e0"
|
resolved "https://registry.yarnpkg.com/rollup/-/rollup-0.25.8.tgz#bf6ce83b87510d163446eeaa577ed6a6fc5835e0"
|
||||||
|
@ -27084,6 +27211,11 @@ tinymath@1.2.1:
|
||||||
resolved "https://registry.yarnpkg.com/tinymath/-/tinymath-1.2.1.tgz#f97ed66c588cdbf3c19dfba2ae266ee323db7e47"
|
resolved "https://registry.yarnpkg.com/tinymath/-/tinymath-1.2.1.tgz#f97ed66c588cdbf3c19dfba2ae266ee323db7e47"
|
||||||
integrity sha512-8CYutfuHR3ywAJus/3JUhaJogZap1mrUQGzNxdBiQDhP3H0uFdQenvaXvqI8lMehX4RsanRZzxVfjMBREFdQaA==
|
integrity sha512-8CYutfuHR3ywAJus/3JUhaJogZap1mrUQGzNxdBiQDhP3H0uFdQenvaXvqI8lMehX4RsanRZzxVfjMBREFdQaA==
|
||||||
|
|
||||||
|
tinyqueue@^1.1.0:
|
||||||
|
version "1.2.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/tinyqueue/-/tinyqueue-1.2.3.tgz#b6a61de23060584da29f82362e45df1ec7353f3d"
|
||||||
|
integrity sha512-Qz9RgWuO9l8lT+Y9xvbzhPT2efIUIFd69N7eF7tJ9lnQl0iLj1M7peK7IoUGZL9DJHw9XftqLreccfxcQgYLxA==
|
||||||
|
|
||||||
tinyqueue@^2.0.3:
|
tinyqueue@^2.0.3:
|
||||||
version "2.0.3"
|
version "2.0.3"
|
||||||
resolved "https://registry.yarnpkg.com/tinyqueue/-/tinyqueue-2.0.3.tgz#64d8492ebf39e7801d7bd34062e29b45b2035f08"
|
resolved "https://registry.yarnpkg.com/tinyqueue/-/tinyqueue-2.0.3.tgz#64d8492ebf39e7801d7bd34062e29b45b2035f08"
|
||||||
|
@ -27484,6 +27616,16 @@ tweetnacl@^0.14.3, tweetnacl@~0.14.0:
|
||||||
resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64"
|
resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64"
|
||||||
integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=
|
integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=
|
||||||
|
|
||||||
|
two-product@^1.0.2:
|
||||||
|
version "1.0.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/two-product/-/two-product-1.0.2.tgz#67d95d4b257a921e2cb4bd7af9511f9088522eaa"
|
||||||
|
integrity sha1-Z9ldSyV6kh4stL16+VEfkIhSLqo=
|
||||||
|
|
||||||
|
two-sum@^1.0.0:
|
||||||
|
version "1.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/two-sum/-/two-sum-1.0.0.tgz#31d3f32239e4f731eca9df9155e2b297f008ab64"
|
||||||
|
integrity sha1-MdPzIjnk9zHsqd+RVeKyl/AIq2Q=
|
||||||
|
|
||||||
type-check@~0.3.2:
|
type-check@~0.3.2:
|
||||||
version "0.3.2"
|
version "0.3.2"
|
||||||
resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72"
|
resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72"
|
||||||
|
|
Loading…
Reference in a new issue