@deck.gl/geo-layers 8.10.0-alpha.7 → 9.0.0-alpha.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (114) hide show
  1. package/dist/dist.dev.js +2374 -19037
  2. package/dist/es5/geo-cell-layer/GeoCellLayer.js.map +1 -1
  3. package/dist/es5/geohash-layer/geohash-layer.js.map +1 -1
  4. package/dist/es5/great-circle-layer/great-circle-layer.js.map +1 -1
  5. package/dist/es5/h3-layers/h3-cluster-layer.js +10 -1
  6. package/dist/es5/h3-layers/h3-cluster-layer.js.map +1 -1
  7. package/dist/es5/h3-layers/h3-hexagon-layer.js.map +1 -1
  8. package/dist/es5/index.js +0 -8
  9. package/dist/es5/index.js.map +1 -1
  10. package/{src/mesh-layer/mesh-layer.ts → dist/es5/mesh-layer/mesh-layer.ts.disabled} +8 -7
  11. package/dist/es5/mvt-layer/mvt-layer.js +15 -6
  12. package/dist/es5/mvt-layer/mvt-layer.js.map +1 -1
  13. package/dist/es5/quadkey-layer/quadkey-layer.js.map +1 -1
  14. package/dist/es5/s2-layer/s2-layer.js.map +1 -1
  15. package/dist/es5/terrain-layer/terrain-layer.js.map +1 -1
  16. package/{src/tile-3d-layer/tile-3d-layer.ts → dist/es5/tile-3d-layer/tile-3d-layer.ts.disabled} +9 -9
  17. package/dist/es5/tile-layer/tile-layer.js +19 -9
  18. package/dist/es5/tile-layer/tile-layer.js.map +1 -1
  19. package/dist/es5/tileset-2d/tile-2d-traversal.js.map +1 -1
  20. package/dist/es5/tileset-2d/tileset-2d.js +1 -1
  21. package/dist/es5/tileset-2d/tileset-2d.js.map +1 -1
  22. package/dist/es5/tileset-2d/utils.js +2 -3
  23. package/dist/es5/tileset-2d/utils.js.map +1 -1
  24. package/dist/es5/trips-layer/trips-layer.js.map +1 -1
  25. package/dist/es5/wms-layer/wms-layer.js +6 -8
  26. package/dist/es5/wms-layer/wms-layer.js.map +1 -1
  27. package/dist/esm/geo-cell-layer/GeoCellLayer.js.map +1 -1
  28. package/dist/esm/geohash-layer/geohash-layer.js.map +1 -1
  29. package/dist/esm/great-circle-layer/great-circle-layer.js.map +1 -1
  30. package/dist/esm/h3-layers/h3-cluster-layer.js +5 -0
  31. package/dist/esm/h3-layers/h3-cluster-layer.js.map +1 -1
  32. package/dist/esm/h3-layers/h3-hexagon-layer.js.map +1 -1
  33. package/dist/esm/index.js +0 -1
  34. package/dist/esm/index.js.map +1 -1
  35. package/dist/esm/mesh-layer/mesh-layer.ts.disabled +176 -0
  36. package/dist/esm/mvt-layer/mvt-layer.js +6 -1
  37. package/dist/esm/mvt-layer/mvt-layer.js.map +1 -1
  38. package/dist/esm/quadkey-layer/quadkey-layer.js.map +1 -1
  39. package/dist/esm/s2-layer/s2-layer.js.map +1 -1
  40. package/dist/esm/terrain-layer/terrain-layer.js.map +1 -1
  41. package/dist/esm/tile-3d-layer/tile-3d-layer.ts.disabled +436 -0
  42. package/dist/esm/tile-layer/tile-layer.js +10 -6
  43. package/dist/esm/tile-layer/tile-layer.js.map +1 -1
  44. package/dist/esm/tileset-2d/tile-2d-traversal.js.map +1 -1
  45. package/dist/esm/tileset-2d/tileset-2d.js +1 -1
  46. package/dist/esm/tileset-2d/tileset-2d.js.map +1 -1
  47. package/dist/esm/tileset-2d/utils.js +2 -2
  48. package/dist/esm/tileset-2d/utils.js.map +1 -1
  49. package/dist/esm/trips-layer/trips-layer.js.map +1 -1
  50. package/dist/esm/wms-layer/wms-layer.js +5 -5
  51. package/dist/esm/wms-layer/wms-layer.js.map +1 -1
  52. package/dist.min.js +29 -161
  53. package/package.json +14 -14
  54. package/src/geo-cell-layer/GeoCellLayer.ts +1 -1
  55. package/src/geohash-layer/geohash-layer.ts +2 -2
  56. package/src/great-circle-layer/great-circle-layer.ts +1 -1
  57. package/src/h3-layers/h3-cluster-layer.ts +6 -2
  58. package/src/h3-layers/h3-hexagon-layer.ts +2 -2
  59. package/src/index.ts +4 -2
  60. package/src/mesh-layer/mesh-layer.ts.disabled +176 -0
  61. package/src/mvt-layer/mvt-layer.ts +16 -6
  62. package/src/quadkey-layer/quadkey-layer.ts +3 -2
  63. package/src/s2-layer/s2-layer.ts +2 -2
  64. package/src/terrain-layer/terrain-layer.ts +2 -2
  65. package/src/tile-3d-layer/tile-3d-layer.ts.disabled +436 -0
  66. package/src/tile-layer/tile-layer.ts +20 -10
  67. package/src/tileset-2d/tile-2d-traversal.ts +1 -1
  68. package/src/tileset-2d/tileset-2d.ts +6 -7
  69. package/src/tileset-2d/utils.ts +4 -4
  70. package/src/trips-layer/trips-layer.ts +3 -3
  71. package/src/wms-layer/wms-layer.ts +10 -8
  72. package/typed/geo-cell-layer/GeoCellLayer.d.ts +1 -1
  73. package/typed/geo-cell-layer/GeoCellLayer.d.ts.map +1 -1
  74. package/typed/geohash-layer/geohash-layer.d.ts +2 -2
  75. package/typed/geohash-layer/geohash-layer.d.ts.map +1 -1
  76. package/typed/great-circle-layer/great-circle-layer.d.ts +2 -2
  77. package/typed/great-circle-layer/great-circle-layer.d.ts.map +1 -1
  78. package/typed/h3-layers/h3-cluster-layer.d.ts +7 -2
  79. package/typed/h3-layers/h3-cluster-layer.d.ts.map +1 -1
  80. package/typed/h3-layers/h3-hexagon-layer.d.ts +2 -2
  81. package/typed/h3-layers/h3-hexagon-layer.d.ts.map +1 -1
  82. package/typed/index.d.ts +0 -2
  83. package/typed/index.d.ts.map +1 -1
  84. package/typed/mvt-layer/mvt-layer.d.ts +9 -1
  85. package/typed/mvt-layer/mvt-layer.d.ts.map +1 -1
  86. package/typed/quadkey-layer/quadkey-layer.d.ts +2 -2
  87. package/typed/quadkey-layer/quadkey-layer.d.ts.map +1 -1
  88. package/typed/s2-layer/s2-layer.d.ts +2 -2
  89. package/typed/s2-layer/s2-layer.d.ts.map +1 -1
  90. package/typed/terrain-layer/terrain-layer.d.ts +2 -2
  91. package/typed/terrain-layer/terrain-layer.d.ts.map +1 -1
  92. package/typed/tile-layer/tile-layer.d.ts +7 -2
  93. package/typed/tile-layer/tile-layer.d.ts.map +1 -1
  94. package/typed/tileset-2d/tile-2d-traversal.d.ts +1 -1
  95. package/typed/tileset-2d/tile-2d-traversal.d.ts.map +1 -1
  96. package/typed/tileset-2d/tileset-2d.d.ts +4 -4
  97. package/typed/tileset-2d/tileset-2d.d.ts.map +1 -1
  98. package/typed/tileset-2d/utils.d.ts +2 -2
  99. package/typed/tileset-2d/utils.d.ts.map +1 -1
  100. package/typed/trips-layer/trips-layer.d.ts +3 -3
  101. package/typed/trips-layer/trips-layer.d.ts.map +1 -1
  102. package/typed/wms-layer/wms-layer.d.ts.map +1 -1
  103. package/dist/es5/mesh-layer/mesh-layer.js +0 -212
  104. package/dist/es5/mesh-layer/mesh-layer.js.map +0 -1
  105. package/dist/es5/tile-3d-layer/tile-3d-layer.js +0 -512
  106. package/dist/es5/tile-3d-layer/tile-3d-layer.js.map +0 -1
  107. package/dist/esm/mesh-layer/mesh-layer.js +0 -177
  108. package/dist/esm/mesh-layer/mesh-layer.js.map +0 -1
  109. package/dist/esm/tile-3d-layer/tile-3d-layer.js +0 -443
  110. package/dist/esm/tile-3d-layer/tile-3d-layer.js.map +0 -1
  111. package/typed/mesh-layer/mesh-layer.d.ts +0 -38
  112. package/typed/mesh-layer/mesh-layer.d.ts.map +0 -1
  113. package/typed/tile-3d-layer/tile-3d-layer.d.ts +0 -62
  114. package/typed/tile-3d-layer/tile-3d-layer.d.ts.map +0 -1
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@deck.gl/geo-layers",
3
3
  "description": "deck.gl layers supporting geospatial use cases and GIS formats",
4
4
  "license": "MIT",
5
- "version": "8.10.0-alpha.7",
5
+ "version": "9.0.0-alpha.3",
6
6
  "publishConfig": {
7
7
  "access": "public"
8
8
  },
@@ -31,16 +31,15 @@
31
31
  },
32
32
  "dependencies": {
33
33
  "@babel/runtime": "^7.0.0",
34
- "@loaders.gl/3d-tiles": "^4.0.1",
35
- "@loaders.gl/gis": "^4.0.1",
36
- "@loaders.gl/loader-utils": "^4.0.1",
37
- "@loaders.gl/mvt": "^4.0.1",
38
- "@loaders.gl/schema": "^4.0.1",
39
- "@loaders.gl/terrain": "^4.0.1",
40
- "@loaders.gl/tiles": "^4.0.1",
41
- "@loaders.gl/wms": "^4.0.1",
42
- "@luma.gl/constants": "^8.5.20",
43
- "@luma.gl/experimental": "^8.5.20",
34
+ "@loaders.gl/3d-tiles": "4.0.3",
35
+ "@loaders.gl/gis": "4.0.3",
36
+ "@loaders.gl/loader-utils": "4.0.3",
37
+ "@loaders.gl/mvt": "4.0.3",
38
+ "@loaders.gl/schema": "4.0.3",
39
+ "@loaders.gl/terrain": "4.0.3",
40
+ "@loaders.gl/tiles": "4.0.3",
41
+ "@loaders.gl/wms": "4.0.3",
42
+ "@luma.gl/core": "9.0.0-alpha.42",
44
43
  "@math.gl/core": "^4.0.0",
45
44
  "@math.gl/culling": "^4.0.0",
46
45
  "@math.gl/web-mercator": "^4.0.0",
@@ -53,8 +52,9 @@
53
52
  "@deck.gl/extensions": "^8.0.0",
54
53
  "@deck.gl/layers": "^8.0.0",
55
54
  "@deck.gl/mesh-layers": "^8.0.0",
56
- "@loaders.gl/core": "^4.0.1",
57
- "@luma.gl/core": "^8.0.0"
55
+ "@loaders.gl/core": "4.0.3",
56
+ "@luma.gl/core": "9.0.0-alpha.42",
57
+ "@luma.gl/shadertools": "9.0.0-alpha.42"
58
58
  },
59
- "gitHead": "1c62a9eec914019afd3969bc0c59f1488e491207"
59
+ "gitHead": "51dfb88f9168ccf478d01b28a2c5ada7bd8281c7"
60
60
  }
@@ -6,7 +6,7 @@ const defaultProps: DefaultProps<GeoCellLayerProps> = {
6
6
  };
7
7
 
8
8
  /** All properties supported by GeoCellLayer. */
9
- export type GeoCellLayerProps<DataT = any> = PolygonLayerProps<DataT>;
9
+ export type GeoCellLayerProps<DataT = unknown> = PolygonLayerProps<DataT>;
10
10
 
11
11
  export default class GeoCellLayer<DataT = any, ExtraProps extends {} = {}> extends CompositeLayer<
12
12
  Required<GeoCellLayerProps<DataT>> & ExtraProps
@@ -3,13 +3,13 @@ import GeoCellLayer from '../geo-cell-layer/GeoCellLayer';
3
3
  import {getGeohashPolygon} from './geohash-utils';
4
4
 
5
5
  const defaultProps: DefaultProps<GeohashLayerProps> = {
6
- getGeohash: {type: 'accessor', value: d => d.geohash}
6
+ getGeohash: {type: 'accessor', value: (d: any) => d.geohash}
7
7
  };
8
8
 
9
9
  /**
10
10
  * Properties of `GeohashLayer`.
11
11
  */
12
- type GeohashLayerProps<DataT = any> = {
12
+ type GeohashLayerProps<DataT = unknown> = {
13
13
  /**
14
14
  * Called for each data object to retrieve the geohash string identifier.
15
15
  *
@@ -26,7 +26,7 @@ const defaultProps: DefaultProps<ArcLayerProps> = {
26
26
  };
27
27
 
28
28
  /** All properties supported by GreatCircleLayer. */
29
- export type GreatCircleLayerProps<DataT = any> = ArcLayerProps<DataT>;
29
+ export type GreatCircleLayerProps<DataT = unknown> = ArcLayerProps<DataT>;
30
30
 
31
31
  // This layer has been merged into the core ArcLayer
32
32
  // Keeping for backward-compatibility
@@ -6,11 +6,11 @@ import GeoCellLayer, {GeoCellLayerProps} from '../geo-cell-layer/GeoCellLayer';
6
6
  import {normalizeLongitudes} from './h3-utils';
7
7
 
8
8
  const defaultProps: DefaultProps<H3ClusterLayerProps> = {
9
- getHexagons: {type: 'accessor', value: d => d.hexagons}
9
+ getHexagons: {type: 'accessor', value: (d: any) => d.hexagons}
10
10
  };
11
11
 
12
12
  /** All properties supported by H3ClusterLayer. */
13
- export type H3ClusterLayerProps<DataT = any> = _H3ClusterLayerProps<DataT> &
13
+ export type H3ClusterLayerProps<DataT = unknown> = _H3ClusterLayerProps<DataT> &
14
14
  GeoCellLayerProps<DataT>;
15
15
 
16
16
  /** Properties added by H3ClusterLayer. */
@@ -30,6 +30,10 @@ export default class H3ClusterLayer<DataT = any, ExtraProps extends {} = {}> ext
30
30
  static layerName = 'H3ClusterLayer';
31
31
  static defaultProps = defaultProps;
32
32
 
33
+ state!: {
34
+ polygons: {polygon: number[][][]}[];
35
+ };
36
+
33
37
  initializeState(): void {
34
38
  H3HexagonLayer._checkH3Lib();
35
39
  }
@@ -42,12 +42,12 @@ const defaultProps: DefaultProps<H3HexagonLayerProps> = {
42
42
  highPrecision: 'auto',
43
43
  coverage: {type: 'number', min: 0, max: 1, value: 1},
44
44
  centerHexagon: null,
45
- getHexagon: {type: 'accessor', value: x => x.hexagon},
45
+ getHexagon: {type: 'accessor', value: (x: any) => x.hexagon},
46
46
  extruded: true
47
47
  };
48
48
 
49
49
  /** All properties supported by H3HexagonLayer */
50
- export type H3HexagonLayerProps<DataT = any> = _H3HexagonLayerProps<DataT> &
50
+ export type H3HexagonLayerProps<DataT = unknown> = _H3HexagonLayerProps<DataT> &
51
51
  PolygonLayerProps<DataT>;
52
52
 
53
53
  /** Props added by the H3HexagonLayer */
package/src/index.ts CHANGED
@@ -27,7 +27,8 @@ export {default as TileLayer} from './tile-layer/tile-layer';
27
27
  export {default as TripsLayer} from './trips-layer/trips-layer';
28
28
  export {default as H3ClusterLayer} from './h3-layers/h3-cluster-layer';
29
29
  export {default as H3HexagonLayer} from './h3-layers/h3-hexagon-layer';
30
- export {default as Tile3DLayer} from './tile-3d-layer/tile-3d-layer';
30
+ // TODO v9 layers that depend on luma glTF code
31
+ // export {default as Tile3DLayer} from './tile-3d-layer/tile-3d-layer';
31
32
  export {default as TerrainLayer} from './terrain-layer/terrain-layer';
32
33
  export {default as MVTLayer} from './mvt-layer/mvt-layer';
33
34
  export {default as GeohashLayer} from './geohash-layer/geohash-layer';
@@ -43,8 +44,9 @@ export type {S2LayerProps} from './s2-layer/s2-layer';
43
44
  export type {TileLayerProps} from './tile-layer/tile-layer';
44
45
  export type {TripsLayerProps} from './trips-layer/trips-layer';
45
46
  export type {QuadkeyLayerProps} from './quadkey-layer/quadkey-layer';
47
+ // TODO v9 layers that depend on luma glTF code
46
48
  export type {TerrainLayerProps} from './terrain-layer/terrain-layer';
47
- export type {Tile3DLayerProps} from './tile-3d-layer/tile-3d-layer';
49
+ // export type {Tile3DLayerProps} from './tile-3d-layer/tile-3d-layer';
48
50
  export type {MVTLayerProps} from './mvt-layer/mvt-layer';
49
51
  export type {GeoCellLayerProps as _GeoCellLayerProps} from './geo-cell-layer/GeoCellLayer';
50
52
 
@@ -0,0 +1,176 @@
1
+ import type {NumericArray} from '@math.gl/core';
2
+ import {GLTFMaterialParser} from '@luma.gl/experimental';
3
+ import {pbr} from '@luma.gl/shadertools';
4
+ import {Model} from '@luma.gl/engine';
5
+ import {GL} from '@luma.gl/constants';
6
+ import type {MeshAttribute, MeshAttributes} from '@loaders.gl/schema';
7
+ import type {UpdateParameters, DefaultProps, LayerContext} from '@deck.gl/core';
8
+ import {SimpleMeshLayer, SimpleMeshLayerProps} from '@deck.gl/mesh-layers';
9
+
10
+ import vs from './mesh-layer-vertex.glsl';
11
+ import fs from './mesh-layer-fragment.glsl';
12
+
13
+ export type Mesh = {
14
+ attributes: MeshAttributes;
15
+ indices?: MeshAttribute;
16
+ };
17
+
18
+ function validateGeometryAttributes(attributes) {
19
+ const hasColorAttribute = attributes.COLOR_0 || attributes.colors;
20
+ if (!hasColorAttribute) {
21
+ attributes.colors = {constant: true, value: new Float32Array([1, 1, 1])};
22
+ }
23
+ }
24
+
25
+ const defaultProps: DefaultProps<MeshLayerProps> = {
26
+ pbrMaterial: {type: 'object', value: null},
27
+ featureIds: {type: 'array', value: null, optional: true}
28
+ };
29
+
30
+ /** All properties supported by MeshLayer. */
31
+ export type MeshLayerProps<DataT = unknown> = _MeshLayerProps & SimpleMeshLayerProps<DataT>;
32
+
33
+ /** Properties added by MeshLayer. */
34
+ type _MeshLayerProps = {
35
+ /**
36
+ * PBR material object. _lighting must be pbr for this to work
37
+ */
38
+ pbrMaterial?: any; // TODO add type when converting Tile3DLayer
39
+
40
+ /**
41
+ * List of feature ids.
42
+ */
43
+ featureIds?: NumericArray | null;
44
+ };
45
+
46
+ export default class MeshLayer<DataT = any, ExtraProps extends {} = {}> extends SimpleMeshLayer<
47
+ DataT,
48
+ Required<_MeshLayerProps> & ExtraProps
49
+ > {
50
+ static layerName = 'MeshLayer';
51
+ static defaultProps = defaultProps;
52
+
53
+ getShaders() {
54
+ const shaders = super.getShaders();
55
+ const modules = shaders.modules;
56
+ modules.push(pbr);
57
+ return {...shaders, vs, fs};
58
+ }
59
+
60
+ initializeState() {
61
+ const {featureIds} = this.props;
62
+ super.initializeState();
63
+
64
+ const attributeManager = this.getAttributeManager();
65
+ if (featureIds) {
66
+ // attributeManager is always defined in a primitive layer
67
+ attributeManager.add({
68
+ featureIdsPickingColors: {
69
+ type: GL.UNSIGNED_BYTE,
70
+ size: 3,
71
+ noAlloc: true,
72
+ // eslint-disable-next-line @typescript-eslint/unbound-method
73
+ update: this.calculateFeatureIdsPickingColors
74
+ }
75
+ });
76
+ }
77
+ }
78
+
79
+ updateState(params: UpdateParameters<this>) {
80
+ super.updateState(params);
81
+
82
+ const {props, oldProps} = params;
83
+ if (props.pbrMaterial !== oldProps.pbrMaterial) {
84
+ this.updatePbrMaterialUniforms(props.pbrMaterial);
85
+ }
86
+ }
87
+
88
+ draw(opts) {
89
+ const {featureIds} = this.props;
90
+ if (!this.state.model) {
91
+ return;
92
+ }
93
+ this.state.model.setUniforms({
94
+ // Needed for PBR (TODO: find better way to get it)
95
+ // eslint-disable-next-line camelcase
96
+ u_Camera: this.state.model.getUniforms().project_uCameraPosition,
97
+ pickFeatureIds: Boolean(featureIds)
98
+ });
99
+
100
+ super.draw(opts);
101
+ }
102
+
103
+ protected getModel(mesh: Mesh): Model {
104
+ const {id, pbrMaterial} = this.props;
105
+ const materialParser = this.parseMaterial(pbrMaterial, mesh);
106
+ // Keep material parser to explicitly remove textures
107
+ this.setState({materialParser});
108
+ const shaders = this.getShaders();
109
+ validateGeometryAttributes(mesh.attributes);
110
+ const model = new Model(this.context.device, {
111
+ ...this.getShaders(),
112
+ id,
113
+ geometry: mesh,
114
+ defines: {
115
+ ...shaders.defines,
116
+ ...materialParser?.defines,
117
+ HAS_UV_REGIONS: mesh.attributes.uvRegions
118
+ },
119
+ parameters: materialParser?.parameters,
120
+ isInstanced: true
121
+ });
122
+
123
+ return model;
124
+ }
125
+
126
+ updatePbrMaterialUniforms(pbrMaterial) {
127
+ const {model} = this.state;
128
+ if (model) {
129
+ const {mesh} = this.props;
130
+ const materialParser = this.parseMaterial(pbrMaterial, mesh);
131
+ // Keep material parser to explicitly remove textures
132
+ this.setState({materialParser});
133
+ model.setUniforms(materialParser.uniforms);
134
+ }
135
+ }
136
+
137
+ parseMaterial(pbrMaterial, mesh) {
138
+ const unlit = Boolean(
139
+ pbrMaterial.pbrMetallicRoughness && pbrMaterial.pbrMetallicRoughness.baseColorTexture
140
+ );
141
+
142
+ this.state.materialParser?.delete();
143
+
144
+ return new GLTFMaterialParser(this.context.device, {
145
+ attributes: {NORMAL: mesh.attributes.normals, TEXCOORD_0: mesh.attributes.texCoords},
146
+ material: {unlit, ...pbrMaterial},
147
+ pbrDebug: false,
148
+ imageBasedLightingEnvironment: null,
149
+ lights: true,
150
+ useTangents: false
151
+ });
152
+ }
153
+
154
+ calculateFeatureIdsPickingColors(attribute) {
155
+ // This updater is only called if featureIds is not null
156
+ const featureIds = this.props.featureIds;
157
+ const value = new Uint8ClampedArray(featureIds.length * attribute.size);
158
+
159
+ const pickingColor = [];
160
+ for (let index = 0; index < featureIds.length; index++) {
161
+ this.encodePickingColor(featureIds[index], pickingColor);
162
+
163
+ value[index * 3] = pickingColor[0];
164
+ value[index * 3 + 1] = pickingColor[1];
165
+ value[index * 3 + 2] = pickingColor[2];
166
+ }
167
+
168
+ attribute.value = value;
169
+ }
170
+
171
+ finalizeState(context: LayerContext) {
172
+ super.finalizeState(context);
173
+ this.state.materialParser?.delete();
174
+ this.setState({materialParser: null});
175
+ }
176
+ }
@@ -31,6 +31,7 @@ import {
31
31
  Tileset2D,
32
32
  Tile2DHeader,
33
33
  getURLFromTemplate,
34
+ URLTemplate,
34
35
  isGeoBoundingBox,
35
36
  isURLTemplate
36
37
  } from '../tileset-2d';
@@ -102,6 +103,15 @@ export default class MVTLayer<ExtraProps extends {} = {}> extends TileLayer<
102
103
  static layerName = 'MVTLayer';
103
104
  static defaultProps = defaultProps;
104
105
 
106
+ state!: TileLayer<ParsedMvtTile>['state'] & {
107
+ binary: boolean;
108
+ data: URLTemplate;
109
+ tileJSON: any;
110
+ highlightColor: number[];
111
+ hoveredFeatureId: number | string | null;
112
+ hoveredFeatureLayerName: string | null;
113
+ };
114
+
105
115
  initializeState(): void {
106
116
  super.initializeState();
107
117
  // GlobeView doesn't work well with binary data
@@ -114,7 +124,7 @@ export default class MVTLayer<ExtraProps extends {} = {}> extends TileLayer<
114
124
  }
115
125
 
116
126
  get isLoaded(): boolean {
117
- return this.state && this.state.data && this.state.tileset && super.isLoaded;
127
+ return Boolean(this.state && this.state.data && this.state.tileset && super.isLoaded);
118
128
  }
119
129
 
120
130
  updateState({props, oldProps, context, changeFlags}: UpdateParameters<this>) {
@@ -169,14 +179,14 @@ export default class MVTLayer<ExtraProps extends {} = {}> extends TileLayer<
169
179
 
170
180
  if (tileJSON) {
171
181
  if (Number.isFinite(tileJSON.minzoom) && (tileJSON.minzoom as number) > (minZoom as number)) {
172
- opts.minZoom = tileJSON.minzoom as number;
182
+ opts.minZoom = tileJSON.minzoom;
173
183
  }
174
184
 
175
185
  if (
176
186
  Number.isFinite(tileJSON.maxzoom) &&
177
187
  (!Number.isFinite(maxZoom) || (tileJSON.maxzoom as number) < (maxZoom as number))
178
188
  ) {
179
- opts.maxZoom = tileJSON.maxzoom as number;
189
+ opts.maxZoom = tileJSON.maxzoom;
180
190
  }
181
191
  }
182
192
  return opts;
@@ -340,8 +350,8 @@ export default class MVTLayer<ExtraProps extends {} = {}> extends TileLayer<
340
350
  return findIndexBinary(
341
351
  data,
342
352
  uniqueIdProperty,
343
- featureIdToHighlight,
344
- isHighlighted ? '' : hoveredFeatureLayerName
353
+ featureIdToHighlight!,
354
+ isHighlighted ? '' : hoveredFeatureLayerName!
345
355
  );
346
356
  }
347
357
 
@@ -382,7 +392,7 @@ export default class MVTLayer<ExtraProps extends {} = {}> extends TileLayer<
382
392
 
383
393
  private _setWGS84PropertyForTiles(): void {
384
394
  const propName = 'dataInWGS84';
385
- const tileset: Tileset2D = this.state.tileset;
395
+ const tileset: Tileset2D = this.state.tileset!;
386
396
 
387
397
  // @ts-expect-error selectedTiles are always initialized when tile is being processed
388
398
  tileset.selectedTiles.forEach((tile: Tile2DHeader & ContentWGS84Cache) => {
@@ -3,11 +3,12 @@ import GeoCellLayer, {GeoCellLayerProps} from '../geo-cell-layer/GeoCellLayer';
3
3
  import {getQuadkeyPolygon} from './quadkey-utils';
4
4
 
5
5
  const defaultProps: DefaultProps<QuadkeyLayerProps> = {
6
- getQuadkey: {type: 'accessor', value: d => d.quadkey}
6
+ getQuadkey: {type: 'accessor', value: (d: any) => d.quadkey}
7
7
  };
8
8
 
9
9
  /** All properties supported by QuadkeyLayer. */
10
- export type QuadkeyLayerProps<DataT = any> = _QuadkeyLayerProps<DataT> & GeoCellLayerProps<DataT>;
10
+ export type QuadkeyLayerProps<DataT = unknown> = _QuadkeyLayerProps<DataT> &
11
+ GeoCellLayerProps<DataT>;
11
12
 
12
13
  /** Properties added by QuadkeyLayer. */
13
14
  type _QuadkeyLayerProps<DataT> = {
@@ -23,11 +23,11 @@ import GeoCellLayer, {GeoCellLayerProps} from '../geo-cell-layer/GeoCellLayer';
23
23
  import {getS2Polygon} from './s2-utils';
24
24
 
25
25
  const defaultProps: DefaultProps<S2LayerProps> = {
26
- getS2Token: {type: 'accessor', value: d => d.token}
26
+ getS2Token: {type: 'accessor', value: (d: any) => d.token}
27
27
  };
28
28
 
29
29
  /** All properties supported by S2Layer. */
30
- export type S2LayerProps<DataT = any> = _S2LayerProps<DataT> & GeoCellLayerProps<DataT>;
30
+ export type S2LayerProps<DataT = unknown> = _S2LayerProps<DataT> & GeoCellLayerProps<DataT>;
31
31
 
32
32
  /** Properties added by S2Layer. */
33
33
  type _S2LayerProps<DataT> = {
@@ -27,7 +27,7 @@ import {
27
27
  LayersList,
28
28
  log,
29
29
  Material,
30
- Texture,
30
+ TextureSource,
31
31
  UpdateParameters
32
32
  } from '@deck.gl/core';
33
33
  import {SimpleMeshLayer} from '@deck.gl/mesh-layers';
@@ -88,7 +88,7 @@ type TerrainLoadProps = {
88
88
  signal?: AbortSignal;
89
89
  };
90
90
 
91
- type MeshAndTexture = [MeshAttributes | null, Texture | null];
91
+ type MeshAndTexture = [MeshAttributes | null, TextureSource | null];
92
92
 
93
93
  /** All properties supported by TerrainLayer */
94
94
  export type TerrainLayerProps = _TerrainLayerProps &