@deck.gl/geo-layers 8.8.0-alpha.2 → 8.8.0-alpha.5

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 (54) hide show
  1. package/dist/dist.dev.js +2286 -2542
  2. package/dist/es5/geo-cell-layer/GeoCellLayer.js +3 -3
  3. package/dist/es5/geo-cell-layer/GeoCellLayer.js.map +1 -1
  4. package/dist/es5/index.js +8 -0
  5. package/dist/es5/index.js.map +1 -1
  6. package/dist/es5/mvt-layer/coordinate-transform.js.map +1 -1
  7. package/dist/es5/mvt-layer/find-index-binary.js +7 -5
  8. package/dist/es5/mvt-layer/find-index-binary.js.map +1 -1
  9. package/dist/es5/mvt-layer/mvt-layer.js +45 -32
  10. package/dist/es5/mvt-layer/mvt-layer.js.map +1 -1
  11. package/dist/es5/quadkey-layer/quadkey-layer.js +4 -2
  12. package/dist/es5/quadkey-layer/quadkey-layer.js.map +1 -1
  13. package/dist/es5/quadkey-layer/quadkey-utils.js.map +1 -1
  14. package/dist/es5/tile-layer/tile-2d-header.js.map +1 -1
  15. package/dist/es5/tile-layer/tile-layer.js +21 -25
  16. package/dist/es5/tile-layer/tile-layer.js.map +1 -1
  17. package/dist/es5/tile-layer/tileset-2d.js +1 -6
  18. package/dist/es5/tile-layer/tileset-2d.js.map +1 -1
  19. package/dist/es5/tile-layer/utils.js +5 -0
  20. package/dist/es5/tile-layer/utils.js.map +1 -1
  21. package/dist/esm/geo-cell-layer/GeoCellLayer.js +6 -3
  22. package/dist/esm/geo-cell-layer/GeoCellLayer.js.map +1 -1
  23. package/dist/esm/index.js +1 -0
  24. package/dist/esm/index.js.map +1 -1
  25. package/dist/esm/mvt-layer/coordinate-transform.js.map +1 -1
  26. package/dist/esm/mvt-layer/find-index-binary.js +1 -1
  27. package/dist/esm/mvt-layer/find-index-binary.js.map +1 -1
  28. package/dist/esm/mvt-layer/mvt-layer.js +47 -36
  29. package/dist/esm/mvt-layer/mvt-layer.js.map +1 -1
  30. package/dist/esm/quadkey-layer/quadkey-layer.js +5 -2
  31. package/dist/esm/quadkey-layer/quadkey-layer.js.map +1 -1
  32. package/dist/esm/quadkey-layer/quadkey-utils.js.map +1 -1
  33. package/dist/esm/tile-layer/tile-2d-header.js.map +1 -1
  34. package/dist/esm/tile-layer/tile-layer.js +5 -10
  35. package/dist/esm/tile-layer/tile-layer.js.map +1 -1
  36. package/dist/esm/tile-layer/tileset-2d.js +1 -5
  37. package/dist/esm/tile-layer/tileset-2d.js.map +1 -1
  38. package/dist/esm/tile-layer/utils.js +3 -0
  39. package/dist/esm/tile-layer/utils.js.map +1 -1
  40. package/dist.min.js +2 -2
  41. package/package.json +6 -3
  42. package/src/geo-cell-layer/{GeoCellLayer.js → GeoCellLayer.ts} +14 -10
  43. package/src/index.ts +4 -1
  44. package/src/mvt-layer/{coordinate-transform.js → coordinate-transform.ts} +10 -8
  45. package/src/mvt-layer/{find-index-binary.js → find-index-binary.ts} +41 -10
  46. package/src/mvt-layer/{mvt-layer.js → mvt-layer.ts} +145 -59
  47. package/src/quadkey-layer/quadkey-layer.ts +39 -0
  48. package/src/quadkey-layer/{quadkey-utils.js → quadkey-utils.ts} +2 -2
  49. package/src/tile-layer/tile-2d-header.ts +15 -14
  50. package/src/tile-layer/tile-layer.ts +64 -62
  51. package/src/tile-layer/tileset-2d.ts +13 -13
  52. package/src/tile-layer/types.ts +5 -1
  53. package/src/tile-layer/utils.ts +17 -3
  54. package/src/quadkey-layer/quadkey-layer.js +0 -22
@@ -39,7 +39,7 @@ function findIndexByType(geomData, uniqueIdProperty, featureId, layerName) {
39
39
  return vertexIndex >= 0 ? geomData.globalFeatureIds.value[vertexIndex] : -1;
40
40
  } else if (uniqueIdProperty) {
41
41
  featureIndex = findIndex(geomData.properties, elem => elem[uniqueIdProperty] === featureId, startFeatureIndex, endFeatureIndex);
42
- } else {
42
+ } else if (geomData.fields) {
43
43
  featureIndex = findIndex(geomData.fields, elem => elem.id === featureId, startFeatureIndex, endFeatureIndex);
44
44
  }
45
45
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/mvt-layer/find-index-binary.js"],"names":["GEOM_TYPES","findIndexBinary","data","uniqueIdProperty","featureId","layerName","gt","index","findIndexByType","geomData","featureIds","value","length","startFeatureIndex","endFeatureIndex","layerRange","getLayerRange","featureIndex","numericProps","vertexIndex","findIndex","x","i","globalFeatureIds","properties","elem","fields","id","getGlobalFeatureId","__layers","layerNames","key","__ids","result","array","predicate","startIndex","endIndex"],"mappings":"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","sourcesContent":["const GEOM_TYPES = ['points', 'lines', 'polygons'];\n/**\n * Return the index of feature (numericProps or featureIds) for given feature id\n * Example: findIndexBinary(data, 'id', 33) will return the index in the array of numericProps\n * of the feature 33.\n * @param {Object} data - The data in binary format\n * @param {String} uniqueIdProperty - Name of the unique id property\n * @param {Number|String} featureId - feature id to find\n * @param {String} layerName - the layer to search in\n */\nexport default function findIndexBinary(data, uniqueIdProperty, featureId, layerName) {\n for (const gt of GEOM_TYPES) {\n const index = data[gt] && findIndexByType(data[gt], uniqueIdProperty, featureId, layerName);\n if (index >= 0) {\n return index;\n }\n }\n\n return -1;\n}\n\nfunction findIndexByType(geomData, uniqueIdProperty, featureId, layerName) {\n const featureIds = geomData.featureIds.value;\n\n if (!featureIds.length) {\n return -1;\n }\n\n let startFeatureIndex = 0;\n let endFeatureIndex = featureIds[featureIds.length - 1] + 1;\n if (layerName) {\n const layerRange = getLayerRange(geomData, layerName);\n if (layerRange) {\n startFeatureIndex = layerRange[0];\n endFeatureIndex = layerRange[1] + 1;\n } else {\n return -1;\n }\n }\n\n // Look for the uniqueIdProperty\n let featureIndex = -1;\n if (uniqueIdProperty in geomData.numericProps) {\n const vertexIndex = geomData.numericProps[uniqueIdProperty].value.findIndex(\n (x, i) =>\n x === featureId && featureIds[i] >= startFeatureIndex && featureIds[i] < endFeatureIndex\n );\n return vertexIndex >= 0 ? geomData.globalFeatureIds.value[vertexIndex] : -1;\n } else if (uniqueIdProperty) {\n featureIndex = findIndex(\n geomData.properties,\n elem => elem[uniqueIdProperty] === featureId,\n startFeatureIndex,\n endFeatureIndex\n );\n } else {\n featureIndex = findIndex(\n geomData.fields,\n elem => elem.id === featureId,\n startFeatureIndex,\n endFeatureIndex\n );\n }\n return featureIndex >= 0 ? getGlobalFeatureId(geomData, featureIndex) : -1;\n}\n\n// Returns [firstFeatureIndex, lastFeatureIndex]\n// MVTLoader parses tiles layer-by-layer, so each layer is a continuous range\nfunction getLayerRange(geomData, layerName) {\n if (!geomData.__layers) {\n // Cache a map from properties.layerName to index ranges\n const layerNames = {};\n const {properties} = geomData;\n for (let i = 0; i < properties.length; i++) {\n const {layerName: key} = properties[i];\n if (!key) {\n // ignore\n } else if (layerNames[key]) {\n layerNames[key][1] = i;\n } else {\n layerNames[key] = [i, i];\n }\n }\n geomData.__layers = layerNames;\n }\n return geomData.__layers[layerName];\n}\n\n// Returns global feature id\nfunction getGlobalFeatureId(geomData, featureIndex) {\n if (!geomData.__ids) {\n // Cache a map from featureId to globalFeatureId\n const result = [];\n const featureIds = geomData.featureIds.value;\n const globalFeatureIds = geomData.globalFeatureIds.value;\n for (let i = 0; i < featureIds.length; i++) {\n result[featureIds[i]] = globalFeatureIds[i];\n }\n geomData.__ids = result;\n }\n return geomData.__ids[featureIndex];\n}\n\n// Like array.findIndex, but only search within a range\nfunction findIndex(array, predicate, startIndex, endIndex) {\n for (let i = startIndex; i < endIndex; i++) {\n if (predicate(array[i], i)) {\n return i;\n }\n }\n return -1;\n}\n"],"file":"find-index-binary.js"}
1
+ {"version":3,"sources":["../../../src/mvt-layer/find-index-binary.ts"],"names":["GEOM_TYPES","findIndexBinary","data","uniqueIdProperty","featureId","layerName","gt","index","findIndexByType","geomData","featureIds","value","length","startFeatureIndex","endFeatureIndex","layerRange","getLayerRange","featureIndex","numericProps","vertexIndex","findIndex","x","i","globalFeatureIds","properties","elem","fields","id","getGlobalFeatureId","__layers","layerNames","key","__ids","result","array","predicate","startIndex","endIndex"],"mappings":"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","sourcesContent":["import type {\n BinaryFeatures,\n BinaryLineFeatures,\n BinaryPointFeatures,\n BinaryPolygonFeatures\n} from '@loaders.gl/schema';\n\ntype FeatureTypes = BinaryPointFeatures | BinaryLineFeatures | BinaryPolygonFeatures;\n\nconst GEOM_TYPES = ['points', 'lines', 'polygons'];\n/**\n * Return the index of feature (numericProps or featureIds) for given feature id\n * Example: findIndexBinary(data, 'id', 33) will return the index in the array of numericProps\n * of the feature 33.\n * @param {Object} data - The data in binary format\n * @param {String} uniqueIdProperty - Name of the unique id property\n * @param {Number|String} featureId - feature id to find\n * @param {String} layerName - the layer to search in\n */\nexport default function findIndexBinary(\n data: BinaryFeatures,\n uniqueIdProperty: string,\n featureId: string | number,\n layerName: string\n): number {\n for (const gt of GEOM_TYPES) {\n const index = data[gt] && findIndexByType(data[gt], uniqueIdProperty, featureId, layerName);\n if (index >= 0) {\n return index;\n }\n }\n\n return -1;\n}\n\nfunction findIndexByType(\n geomData: FeatureTypes,\n uniqueIdProperty: string,\n featureId: string | number,\n layerName: string\n): number {\n const featureIds = geomData.featureIds.value;\n\n if (!featureIds.length) {\n return -1;\n }\n\n let startFeatureIndex = 0;\n let endFeatureIndex = featureIds[featureIds.length - 1] + 1;\n if (layerName) {\n const layerRange = getLayerRange(geomData, layerName);\n if (layerRange) {\n startFeatureIndex = layerRange[0];\n endFeatureIndex = layerRange[1] + 1;\n } else {\n return -1;\n }\n }\n\n // Look for the uniqueIdProperty\n let featureIndex = -1;\n if (uniqueIdProperty in geomData.numericProps) {\n const vertexIndex = geomData.numericProps[uniqueIdProperty].value.findIndex(\n (x, i) =>\n x === featureId && featureIds[i] >= startFeatureIndex && featureIds[i] < endFeatureIndex\n );\n return vertexIndex >= 0 ? geomData.globalFeatureIds.value[vertexIndex] : -1;\n } else if (uniqueIdProperty) {\n featureIndex = findIndex(\n geomData.properties,\n elem => elem[uniqueIdProperty] === featureId,\n startFeatureIndex,\n endFeatureIndex\n );\n } else if (geomData.fields) {\n featureIndex = findIndex(\n geomData.fields,\n (elem: any) => elem.id === featureId,\n startFeatureIndex,\n endFeatureIndex\n );\n }\n return featureIndex >= 0 ? getGlobalFeatureId(geomData, featureIndex) : -1;\n}\n\ntype LayerRange = [firstFeatureIndex: number, lastFeatureIndex: number];\n\n// Returns [firstFeatureIndex, lastFeatureIndex]\n// MVTLoader parses tiles layer-by-layer, so each layer is a continuous range\nfunction getLayerRange(\n geomData: FeatureTypes & {\n __layers?: Record<string, LayerRange>;\n },\n layerName: string\n): LayerRange | undefined {\n if (!geomData.__layers) {\n // Cache a map from properties.layerName to index ranges\n const layerNames: Record<string, LayerRange> = {};\n const {properties} = geomData;\n for (let i = 0; i < properties.length; i++) {\n const {layerName: key} = properties[i] as Record<string, any>;\n if (!key) {\n // ignore\n } else if (layerNames[key]) {\n layerNames[key][1] = i;\n } else {\n layerNames[key] = [i, i];\n }\n }\n geomData.__layers = layerNames;\n }\n return geomData.__layers[layerName];\n}\n\n// Returns global feature id\nfunction getGlobalFeatureId(geomData, featureIndex: number) {\n if (!geomData.__ids) {\n // Cache a map from featureId to globalFeatureId\n const result: string[] = [];\n const featureIds = geomData.featureIds.value;\n const globalFeatureIds = geomData.globalFeatureIds.value;\n for (let i = 0; i < featureIds.length; i++) {\n result[featureIds[i]] = globalFeatureIds[i];\n }\n geomData.__ids = result;\n }\n return geomData.__ids[featureIndex];\n}\n\n// Like array.findIndex, but only search within a range\nfunction findIndex<T>(\n array: T[],\n predicate: (v: T, index: number) => boolean,\n startIndex: number,\n endIndex: number\n): number {\n for (let i = startIndex; i < endIndex; i++) {\n if (predicate(array[i], i)) {\n return i;\n }\n }\n return -1;\n}\n"],"file":"find-index-binary.js"}
@@ -1,14 +1,14 @@
1
- import { log } from '@deck.gl/core';
1
+ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
+ import { log, COORDINATE_SYSTEM } from '@deck.gl/core';
3
+ import { GeoJsonLayer } from '@deck.gl/layers';
2
4
  import { Matrix4 } from '@math.gl/core';
3
5
  import { MVTWorkerLoader } from '@loaders.gl/mvt';
4
6
  import { binaryToGeojson } from '@loaders.gl/gis';
5
- import { COORDINATE_SYSTEM } from '@deck.gl/core';
6
7
  import { ClipExtension } from '@deck.gl/extensions';
7
8
  import TileLayer from '../tile-layer/tile-layer';
8
- import { getURLFromTemplate, isURLTemplate } from '../tile-layer/utils';
9
+ import { getURLFromTemplate, isGeoBoundingBox, isURLTemplate } from '../tile-layer/utils';
9
10
  import { transform } from './coordinate-transform';
10
11
  import findIndexBinary from './find-index-binary';
11
- import { GeoJsonLayer } from '@deck.gl/layers';
12
12
  const WORLD_SIZE = 512;
13
13
  const defaultProps = { ...GeoJsonLayer.defaultProps,
14
14
  uniqueIdProperty: {
@@ -31,7 +31,7 @@ export default class MVTLayer extends TileLayer {
31
31
  }
32
32
 
33
33
  get isLoaded() {
34
- return this.state.data && this.state.tileset && super.isLoaded;
34
+ return this.state && this.state.data && this.state.tileset && super.isLoaded;
35
35
  }
36
36
 
37
37
  updateState({
@@ -40,11 +40,13 @@ export default class MVTLayer extends TileLayer {
40
40
  context,
41
41
  changeFlags
42
42
  }) {
43
+ var _this$state;
44
+
43
45
  if (changeFlags.dataChanged) {
44
46
  this._updateTileData();
45
47
  }
46
48
 
47
- if (this.state.data) {
49
+ if ((_this$state = this.state) !== null && _this$state !== void 0 && _this$state.data) {
48
50
  super.updateState({
49
51
  props,
50
52
  oldProps,
@@ -67,9 +69,7 @@ export default class MVTLayer extends TileLayer {
67
69
  }
68
70
 
69
71
  async _updateTileData() {
70
- let {
71
- data
72
- } = this.props;
72
+ let data = this.props.data;
73
73
  let tileJSON = null;
74
74
 
75
75
  if (typeof data === 'string' && !isURLTemplate(data)) {
@@ -94,7 +94,10 @@ export default class MVTLayer extends TileLayer {
94
94
  }
95
95
 
96
96
  if (onDataLoad) {
97
- onDataLoad(tileJSON);
97
+ onDataLoad(tileJSON, {
98
+ propName: 'data',
99
+ layer: this
100
+ });
98
101
  }
99
102
  } else if (data.tilejson) {
100
103
  tileJSON = data;
@@ -110,19 +113,21 @@ export default class MVTLayer extends TileLayer {
110
113
  });
111
114
  }
112
115
 
113
- _getTilesetOptions(props) {
114
- const opts = super._getTilesetOptions(props);
116
+ _getTilesetOptions() {
117
+ const opts = super._getTilesetOptions();
115
118
 
119
+ const tileJSON = this.state.tileJSON;
116
120
  const {
117
- tileJSON
118
- } = this.state;
121
+ minZoom,
122
+ maxZoom
123
+ } = this.props;
119
124
 
120
125
  if (tileJSON) {
121
- if (Number.isFinite(tileJSON.minzoom) && tileJSON.minzoom > props.minZoom) {
126
+ if (Number.isFinite(tileJSON.minzoom) && tileJSON.minzoom > minZoom) {
122
127
  opts.minZoom = tileJSON.minzoom;
123
128
  }
124
129
 
125
- if (Number.isFinite(tileJSON.maxzoom) && (!Number.isFinite(props.maxZoom) || tileJSON.maxzoom < props.maxZoom)) {
130
+ if (Number.isFinite(tileJSON.maxzoom) && (!Number.isFinite(maxZoom) || tileJSON.maxzoom < maxZoom)) {
126
131
  opts.maxZoom = tileJSON.maxzoom;
127
132
  }
128
133
  }
@@ -131,30 +136,33 @@ export default class MVTLayer extends TileLayer {
131
136
  }
132
137
 
133
138
  renderLayers() {
134
- if (!this.state.data) return null;
139
+ var _this$state2;
140
+
141
+ if (!((_this$state2 = this.state) !== null && _this$state2 !== void 0 && _this$state2.data)) return null;
135
142
  return super.renderLayers();
136
143
  }
137
144
 
138
- getTileData(tile) {
145
+ getTileData(loadProps) {
139
146
  var _loadOptions;
140
147
 
141
- const url = getURLFromTemplate(this.state.data, tile);
148
+ const {
149
+ data,
150
+ binary
151
+ } = this.state;
152
+ const {
153
+ index,
154
+ signal
155
+ } = loadProps;
156
+ const url = getURLFromTemplate(data, loadProps);
142
157
 
143
158
  if (!url) {
144
159
  return Promise.reject('Invalid URL');
145
160
  }
146
161
 
147
162
  let loadOptions = this.getLoadOptions();
148
- const {
149
- binary
150
- } = this.state;
151
163
  const {
152
164
  fetch
153
165
  } = this.props;
154
- const {
155
- signal,
156
- index
157
- } = tile;
158
166
  loadOptions = { ...loadOptions,
159
167
  mimeType: 'application/x-protobuf',
160
168
  mvt: { ...((_loadOptions = loadOptions) === null || _loadOptions === void 0 ? void 0 : _loadOptions.mvt),
@@ -239,7 +247,7 @@ export default class MVTLayer extends TileLayer {
239
247
 
240
248
  getPickingInfo(params) {
241
249
  const info = super.getPickingInfo(params);
242
- const isWGS84 = this.context.viewport.resolution;
250
+ const isWGS84 = Boolean(this.context.viewport.resolution);
243
251
 
244
252
  if (this.state.binary && info.index !== -1) {
245
253
  const {
@@ -339,9 +347,7 @@ export default class MVTLayer extends TileLayer {
339
347
 
340
348
  _setWGS84PropertyForTiles() {
341
349
  const propName = 'dataInWGS84';
342
- const {
343
- tileset
344
- } = this.state;
350
+ const tileset = this.state.tileset;
345
351
  tileset.selectedTiles.forEach(tile => {
346
352
  if (!tile.hasOwnProperty(propName)) {
347
353
  Object.defineProperty(tile, propName, {
@@ -354,9 +360,13 @@ export default class MVTLayer extends TileLayer {
354
360
  return [];
355
361
  }
356
362
 
357
- if (tile._contentWGS84 === undefined) {
363
+ const {
364
+ bbox
365
+ } = tile;
366
+
367
+ if (tile._contentWGS84 === undefined && isGeoBoundingBox(bbox)) {
358
368
  const content = this.state.binary ? binaryToGeojson(tile.content) : tile.content;
359
- tile._contentWGS84 = content.map(feature => transformTileCoordsToWGS84(feature, tile.bbox, this.context.viewport));
369
+ tile._contentWGS84 = content.map(feature => transformTileCoordsToWGS84(feature, bbox, this.context.viewport));
360
370
  }
361
371
 
362
372
  return tile._contentWGS84;
@@ -368,8 +378,12 @@ export default class MVTLayer extends TileLayer {
368
378
 
369
379
  }
370
380
 
381
+ _defineProperty(MVTLayer, "layerName", 'MVTLayer');
382
+
383
+ _defineProperty(MVTLayer, "defaultProps", defaultProps);
384
+
371
385
  function getFeatureUniqueId(feature, uniqueIdProperty) {
372
- if (uniqueIdProperty) {
386
+ if (feature.properties && uniqueIdProperty) {
373
387
  return feature.properties[uniqueIdProperty];
374
388
  }
375
389
 
@@ -404,7 +418,4 @@ function transformTileCoordsToWGS84(object, bbox, viewport) {
404
418
  });
405
419
  return feature;
406
420
  }
407
-
408
- MVTLayer.layerName = 'MVTLayer';
409
- MVTLayer.defaultProps = defaultProps;
410
421
  //# sourceMappingURL=mvt-layer.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/mvt-layer/mvt-layer.js"],"names":["log","Matrix4","MVTWorkerLoader","binaryToGeojson","COORDINATE_SYSTEM","ClipExtension","TileLayer","getURLFromTemplate","isURLTemplate","transform","findIndexBinary","GeoJsonLayer","WORLD_SIZE","defaultProps","uniqueIdProperty","type","value","highlightedFeatureId","loaders","binary","MVTLayer","initializeState","context","viewport","resolution","undefined","props","setState","data","tileJSON","isLoaded","state","tileset","updateState","oldProps","changeFlags","dataChanged","_updateTileData","_setWGS84PropertyForTiles","highlightColor","Array","isArray","onDataLoad","fetch","propName","layer","error","raiseError","tilejson","tiles","_getTilesetOptions","opts","Number","isFinite","minzoom","minZoom","maxzoom","maxZoom","renderLayers","getTileData","tile","url","Promise","reject","loadOptions","getLoadOptions","signal","index","mimeType","mvt","coordinates","tileIndex","gis","format","renderSubLayers","x","y","z","worldScale","Math","pow","xScale","yScale","xOffset","yOffset","modelMatrix","scale","autoHighlight","coordinateOrigin","coordinateSystem","CARTESIAN","extensions","subLayers","warn","_updateAutoHighlight","info","hoveredFeatureId","hoveredFeatureLayerName","hoveredFeature","object","newHoveredFeatureId","newHoveredFeatureLayerName","getFeatureUniqueId","getFeatureLayerName","getPickingInfo","params","isWGS84","sourceLayer","globalFeatureId","transformTileCoordsToWGS84","bbox","getSubLayerPropsByTile","highlightedObjectIndex","getHighlightedObjectIndex","content","isHighlighted","isFeatureIdDefined","isFeatureIdPresent","featureIdToHighlight","findIndex","feature","isMatchingId","isMatchingLayer","_pickObjects","maxObjects","deck","width","height","layerIds","id","pickObjects","getRenderedFeatures","maxFeatures","features","featureCache","Set","renderedFeatures","f","featureId","push","has","add","selectedTiles","forEach","hasOwnProperty","Object","defineProperty","get","length","_contentWGS84","map","properties","layerName","geometry","wgs84Geom"],"mappings":"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","sourcesContent":["import {log} from '@deck.gl/core';\nimport {Matrix4} from '@math.gl/core';\nimport {MVTWorkerLoader} from '@loaders.gl/mvt';\nimport {binaryToGeojson} from '@loaders.gl/gis';\nimport {COORDINATE_SYSTEM} from '@deck.gl/core';\nimport {ClipExtension} from '@deck.gl/extensions';\n\nimport TileLayer from '../tile-layer/tile-layer';\nimport {getURLFromTemplate, isURLTemplate} from '../tile-layer/utils';\nimport {transform} from './coordinate-transform';\nimport findIndexBinary from './find-index-binary';\n\nimport {GeoJsonLayer} from '@deck.gl/layers';\n\nconst WORLD_SIZE = 512;\n\nconst defaultProps = {\n ...GeoJsonLayer.defaultProps,\n uniqueIdProperty: {type: 'string', value: ''},\n highlightedFeatureId: null,\n loaders: [MVTWorkerLoader],\n binary: true\n};\n\nexport default class MVTLayer extends TileLayer {\n initializeState() {\n super.initializeState();\n // GlobeView doesn't work well with binary data\n const binary = this.context.viewport.resolution !== undefined ? false : this.props.binary;\n this.setState({\n binary,\n data: null,\n tileJSON: null\n });\n }\n\n get isLoaded() {\n return this.state.data && this.state.tileset && super.isLoaded;\n }\n\n updateState({props, oldProps, context, changeFlags}) {\n if (changeFlags.dataChanged) {\n this._updateTileData();\n }\n\n if (this.state.data) {\n super.updateState({props, oldProps, context, changeFlags});\n this._setWGS84PropertyForTiles();\n }\n const {highlightColor} = props;\n if (highlightColor !== oldProps.highlightColor && Array.isArray(highlightColor)) {\n this.setState({highlightColor});\n }\n }\n\n /* eslint-disable complexity */\n async _updateTileData() {\n let {data} = this.props;\n let tileJSON = null;\n\n if (typeof data === 'string' && !isURLTemplate(data)) {\n const {onDataLoad, fetch} = this.props;\n this.setState({data: null, tileJSON: null});\n try {\n tileJSON = await fetch(data, {propName: 'data', layer: this, loaders: []});\n } catch (error) {\n this.raiseError(error, 'loading TileJSON');\n data = null;\n }\n\n if (onDataLoad) {\n onDataLoad(tileJSON);\n }\n } else if (data.tilejson) {\n tileJSON = data;\n }\n\n if (tileJSON) {\n data = tileJSON.tiles;\n }\n\n this.setState({data, tileJSON});\n }\n\n _getTilesetOptions(props) {\n const opts = super._getTilesetOptions(props);\n const {tileJSON} = this.state;\n\n if (tileJSON) {\n if (Number.isFinite(tileJSON.minzoom) && tileJSON.minzoom > props.minZoom) {\n opts.minZoom = tileJSON.minzoom;\n }\n\n if (\n Number.isFinite(tileJSON.maxzoom) &&\n (!Number.isFinite(props.maxZoom) || tileJSON.maxzoom < props.maxZoom)\n ) {\n opts.maxZoom = tileJSON.maxzoom;\n }\n }\n return opts;\n }\n\n /* eslint-disable complexity */\n\n renderLayers() {\n if (!this.state.data) return null;\n return super.renderLayers();\n }\n\n getTileData(tile) {\n const url = getURLFromTemplate(this.state.data, tile);\n if (!url) {\n return Promise.reject('Invalid URL');\n }\n let loadOptions = this.getLoadOptions();\n const {binary} = this.state;\n const {fetch} = this.props;\n const {signal, index} = tile;\n loadOptions = {\n ...loadOptions,\n mimeType: 'application/x-protobuf',\n mvt: {\n ...loadOptions?.mvt,\n coordinates: this.context.viewport.resolution ? 'wgs84' : 'local',\n tileIndex: index\n // Local worker debug\n // workerUrl: `modules/mvt/dist/mvt-loader.worker.js`\n // Set worker to null to skip web workers\n // workerUrl: null\n },\n gis: binary ? {format: 'binary'} : {}\n };\n return fetch(url, {propName: 'data', layer: this, loadOptions, signal});\n }\n\n renderSubLayers(props) {\n const {x, y, z} = props.tile.index;\n const worldScale = Math.pow(2, z);\n\n const xScale = WORLD_SIZE / worldScale;\n const yScale = -xScale;\n\n const xOffset = (WORLD_SIZE * x) / worldScale;\n const yOffset = WORLD_SIZE * (1 - y / worldScale);\n\n const modelMatrix = new Matrix4().scale([xScale, yScale, 1]);\n\n props.autoHighlight = false;\n\n if (!this.context.viewport.resolution) {\n props.modelMatrix = modelMatrix;\n props.coordinateOrigin = [xOffset, yOffset, 0];\n props.coordinateSystem = COORDINATE_SYSTEM.CARTESIAN;\n props.extensions = [...(props.extensions || []), new ClipExtension()];\n }\n\n const subLayers = super.renderSubLayers(props);\n\n if (this.state.binary && !(subLayers instanceof GeoJsonLayer)) {\n log.warn('renderSubLayers() must return GeoJsonLayer when using binary:true')();\n }\n\n return subLayers;\n }\n\n _updateAutoHighlight(info) {\n const {uniqueIdProperty} = this.props;\n\n const {hoveredFeatureId, hoveredFeatureLayerName} = this.state;\n const hoveredFeature = info.object;\n let newHoveredFeatureId;\n let newHoveredFeatureLayerName;\n\n if (hoveredFeature) {\n newHoveredFeatureId = getFeatureUniqueId(hoveredFeature, uniqueIdProperty);\n newHoveredFeatureLayerName = getFeatureLayerName(hoveredFeature);\n }\n let {highlightColor} = this.props;\n if (typeof highlightColor === 'function') {\n highlightColor = highlightColor(info);\n }\n\n if (\n hoveredFeatureId !== newHoveredFeatureId ||\n hoveredFeatureLayerName !== newHoveredFeatureLayerName\n ) {\n this.setState({\n highlightColor,\n hoveredFeatureId: newHoveredFeatureId,\n hoveredFeatureLayerName: newHoveredFeatureLayerName\n });\n }\n }\n\n getPickingInfo(params) {\n const info = super.getPickingInfo(params);\n\n const isWGS84 = this.context.viewport.resolution;\n\n if (this.state.binary && info.index !== -1) {\n const {data} = params.sourceLayer.props;\n info.object = binaryToGeojson(data, {globalFeatureId: info.index});\n }\n if (info.object && !isWGS84) {\n info.object = transformTileCoordsToWGS84(info.object, info.tile.bbox, this.context.viewport);\n }\n\n return info;\n }\n\n getSubLayerPropsByTile(tile) {\n return {\n highlightedObjectIndex: this.getHighlightedObjectIndex(tile),\n highlightColor: this.state.highlightColor\n };\n }\n\n getHighlightedObjectIndex(tile) {\n const {hoveredFeatureId, hoveredFeatureLayerName, binary} = this.state;\n const {uniqueIdProperty, highlightedFeatureId} = this.props;\n const data = tile.content;\n\n const isHighlighted = isFeatureIdDefined(highlightedFeatureId);\n const isFeatureIdPresent = isFeatureIdDefined(hoveredFeatureId) || isHighlighted;\n\n if (!isFeatureIdPresent) {\n return -1;\n }\n\n const featureIdToHighlight = isHighlighted ? highlightedFeatureId : hoveredFeatureId;\n\n // Iterable data\n if (Array.isArray(data)) {\n return data.findIndex(feature => {\n const isMatchingId = getFeatureUniqueId(feature, uniqueIdProperty) === featureIdToHighlight;\n const isMatchingLayer =\n isHighlighted || getFeatureLayerName(feature) === hoveredFeatureLayerName;\n return isMatchingId && isMatchingLayer;\n });\n\n // Non-iterable data\n } else if (data && binary) {\n // Get the feature index of the selected item to highlight\n return findIndexBinary(\n data,\n uniqueIdProperty,\n featureIdToHighlight,\n isHighlighted ? '' : hoveredFeatureLayerName\n );\n }\n\n return -1;\n }\n\n _pickObjects(maxObjects) {\n const {deck, viewport} = this.context;\n const width = viewport.width;\n const height = viewport.height;\n const x = viewport.x;\n const y = viewport.y;\n const layerIds = [this.id];\n return deck.pickObjects({x, y, width, height, layerIds, maxObjects});\n }\n\n getRenderedFeatures(maxFeatures = null) {\n const features = this._pickObjects(maxFeatures);\n const featureCache = new Set();\n const renderedFeatures = [];\n\n for (const f of features) {\n const featureId = getFeatureUniqueId(f.object, this.props.uniqueIdProperty);\n\n if (featureId === undefined) {\n // we have no id for the feature, we just add to the list\n renderedFeatures.push(f.object);\n } else if (!featureCache.has(featureId)) {\n // Add removing duplicates\n featureCache.add(featureId);\n renderedFeatures.push(f.object);\n }\n }\n\n return renderedFeatures;\n }\n\n _setWGS84PropertyForTiles() {\n const propName = 'dataInWGS84';\n const {tileset} = this.state;\n\n tileset.selectedTiles.forEach(tile => {\n if (!tile.hasOwnProperty(propName)) {\n // eslint-disable-next-line accessor-pairs\n Object.defineProperty(tile, propName, {\n get: () => {\n // Still loading or encountered an error\n if (!tile.content) {\n return null;\n }\n\n if (this.state.binary && Array.isArray(tile.content) && !tile.content.length) {\n // TODO: @loaders.gl/mvt returns [] when no content. It should return a valid empty binary.\n // https://github.com/visgl/loaders.gl/pull/1137\n return [];\n }\n\n if (tile._contentWGS84 === undefined) {\n // Create a cache to transform only once\n const content = this.state.binary ? binaryToGeojson(tile.content) : tile.content;\n tile._contentWGS84 = content.map(feature =>\n transformTileCoordsToWGS84(feature, tile.bbox, this.context.viewport)\n );\n }\n return tile._contentWGS84;\n }\n });\n }\n });\n }\n}\n\nfunction getFeatureUniqueId(feature, uniqueIdProperty) {\n if (uniqueIdProperty) {\n return feature.properties[uniqueIdProperty];\n }\n\n if ('id' in feature) {\n return feature.id;\n }\n\n return undefined;\n}\n\nfunction getFeatureLayerName(feature) {\n return feature.properties?.layerName || null;\n}\n\nfunction isFeatureIdDefined(value) {\n return value !== undefined && value !== null && value !== '';\n}\n\nfunction transformTileCoordsToWGS84(object, bbox, viewport) {\n const feature = {\n ...object,\n geometry: {\n type: object.geometry.type\n }\n };\n\n // eslint-disable-next-line accessor-pairs\n Object.defineProperty(feature.geometry, 'coordinates', {\n get: () => {\n const wgs84Geom = transform(object.geometry, bbox, viewport);\n return wgs84Geom.coordinates;\n }\n });\n\n return feature;\n}\n\nMVTLayer.layerName = 'MVTLayer';\nMVTLayer.defaultProps = defaultProps;\n"],"file":"mvt-layer.js"}
1
+ {"version":3,"sources":["../../../src/mvt-layer/mvt-layer.ts"],"names":["log","COORDINATE_SYSTEM","GeoJsonLayer","Matrix4","MVTWorkerLoader","binaryToGeojson","ClipExtension","TileLayer","getURLFromTemplate","isGeoBoundingBox","isURLTemplate","transform","findIndexBinary","WORLD_SIZE","defaultProps","uniqueIdProperty","type","value","highlightedFeatureId","loaders","binary","MVTLayer","initializeState","context","viewport","resolution","undefined","props","setState","data","tileJSON","isLoaded","state","tileset","updateState","oldProps","changeFlags","dataChanged","_updateTileData","_setWGS84PropertyForTiles","highlightColor","Array","isArray","onDataLoad","fetch","propName","layer","error","raiseError","tilejson","tiles","_getTilesetOptions","opts","minZoom","maxZoom","Number","isFinite","minzoom","maxzoom","renderLayers","getTileData","loadProps","index","signal","url","Promise","reject","loadOptions","getLoadOptions","mimeType","mvt","coordinates","tileIndex","gis","format","renderSubLayers","x","y","z","tile","worldScale","Math","pow","xScale","yScale","xOffset","yOffset","modelMatrix","scale","autoHighlight","coordinateOrigin","coordinateSystem","CARTESIAN","extensions","subLayers","warn","_updateAutoHighlight","info","hoveredFeatureId","hoveredFeatureLayerName","hoveredFeature","object","newHoveredFeatureId","newHoveredFeatureLayerName","getFeatureUniqueId","getFeatureLayerName","getPickingInfo","params","isWGS84","Boolean","sourceLayer","globalFeatureId","transformTileCoordsToWGS84","bbox","getSubLayerPropsByTile","highlightedObjectIndex","getHighlightedObjectIndex","content","isHighlighted","isFeatureIdDefined","isFeatureIdPresent","featureIdToHighlight","findIndex","feature","isMatchingId","isMatchingLayer","_pickObjects","maxObjects","deck","width","height","layerIds","id","pickObjects","getRenderedFeatures","maxFeatures","features","featureCache","Set","renderedFeatures","f","featureId","push","has","add","selectedTiles","forEach","hasOwnProperty","Object","defineProperty","get","length","_contentWGS84","map","properties","layerName","geometry","wgs84Geom"],"mappings":"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","sourcesContent":["import {\n Layer,\n LayersList,\n log,\n PickingInfo,\n UpdateParameters,\n GetPickingInfoParams,\n Viewport,\n COORDINATE_SYSTEM\n} from '@deck.gl/core';\nimport {GeoJsonLayer, GeoJsonLayerProps} from '@deck.gl/layers';\nimport {Matrix4} from '@math.gl/core';\nimport {MVTWorkerLoader} from '@loaders.gl/mvt';\nimport {binaryToGeojson} from '@loaders.gl/gis';\nimport {ClipExtension} from '@deck.gl/extensions';\n\nimport type {Loader} from '@loaders.gl/loader-utils';\nimport type {BinaryFeatures} from '@loaders.gl/schema';\nimport type {Feature} from 'geojson';\n\nimport TileLayer, {TiledPickingInfo, TileLayerProps} from '../tile-layer/tile-layer';\nimport Tileset2D, {Tileset2DProps} from '../tile-layer/tileset-2d';\nimport {getURLFromTemplate, isGeoBoundingBox, isURLTemplate} from '../tile-layer/utils';\nimport {GeoBoundingBox, TileLoadProps} from '../tile-layer/types';\nimport Tile2DHeader from '../tile-layer/tile-2d-header';\nimport {transform} from './coordinate-transform';\nimport findIndexBinary from './find-index-binary';\n\nconst WORLD_SIZE = 512;\n\nconst defaultProps = {\n ...GeoJsonLayer.defaultProps,\n uniqueIdProperty: {type: 'string', value: ''},\n highlightedFeatureId: null,\n loaders: [MVTWorkerLoader],\n binary: true\n};\n\nexport type TileJson = {\n tilejson: string;\n tiles: string[];\n // eslint-disable-next-line camelcase\n vector_layers: any[];\n attribution?: string;\n scheme?: string;\n maxzoom?: number;\n minzoom?: number;\n version?: string;\n};\n\ntype ParsedMvtTile = Feature[] | BinaryFeatures;\n\n/** All props supported by the MVTLayer */\nexport type MVTLayerProps<DataT extends Feature = Feature> = _MVTLayerProps &\n GeoJsonLayerProps<DataT> &\n TileLayerProps<ParsedMvtTile>;\n\n/** Props added by the MVTLayer */\nexport type _MVTLayerProps = {\n /** Called if `data` is a TileJSON URL when it is successfully fetched. */\n onDataLoad?: ((tilejson: TileJson | null) => void) | null;\n\n /** Needed for highlighting a feature split across two or more tiles. */\n uniqueIdProperty?: string;\n\n /** A feature with ID corresponding to the supplied value will be highlighted. */\n highlightedFeatureId?: string | null;\n\n /**\n * Use tile data in binary format.\n *\n * @default true\n */\n binary?: boolean;\n\n /**\n * Loaders used to transform tiles into `data` property passed to `renderSubLayers`.\n *\n * @default [MVTWorkerLoader] from `@loaders.gl/mvt`\n */\n loaders?: Loader[];\n};\n\ntype ContentWGS84Cache = {_contentWGS84?: Feature[]};\n\nexport default class MVTLayer<DataT extends Feature = Feature, ExtraProps = {}> extends TileLayer<\n ParsedMvtTile,\n Required<_MVTLayerProps> & ExtraProps\n> {\n static layerName = 'MVTLayer';\n static defaultProps = defaultProps;\n\n initializeState(): void {\n super.initializeState();\n // GlobeView doesn't work well with binary data\n const binary = this.context.viewport.resolution !== undefined ? false : this.props.binary;\n this.setState({\n binary,\n data: null,\n tileJSON: null\n });\n }\n\n get isLoaded(): boolean {\n return this.state && this.state.data && this.state.tileset && super.isLoaded;\n }\n\n updateState({props, oldProps, context, changeFlags}: UpdateParameters<this>) {\n if (changeFlags.dataChanged) {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this._updateTileData();\n }\n\n if (this.state?.data) {\n super.updateState({props, oldProps, context, changeFlags});\n this._setWGS84PropertyForTiles();\n }\n const {highlightColor} = props;\n if (highlightColor !== oldProps.highlightColor && Array.isArray(highlightColor)) {\n this.setState({highlightColor});\n }\n }\n\n /* eslint-disable complexity */\n private async _updateTileData(): Promise<void> {\n let data: any = this.props.data;\n let tileJSON: any = null;\n\n if (typeof data === 'string' && !isURLTemplate(data)) {\n const {onDataLoad, fetch} = this.props;\n this.setState({data: null, tileJSON: null});\n try {\n tileJSON = await fetch(data, {propName: 'data', layer: this, loaders: []});\n } catch (error: any) {\n this.raiseError(error, 'loading TileJSON');\n data = null;\n }\n\n if (onDataLoad) {\n onDataLoad(tileJSON, {propName: 'data', layer: this});\n }\n } else if (data.tilejson) {\n tileJSON = data;\n }\n\n if (tileJSON) {\n data = tileJSON.tiles;\n }\n\n this.setState({data, tileJSON});\n }\n\n _getTilesetOptions(): Tileset2DProps {\n const opts = super._getTilesetOptions();\n const tileJSON: TileJson | null | undefined = this.state.tileJSON;\n const {minZoom, maxZoom} = this.props;\n\n if (tileJSON) {\n if (Number.isFinite(tileJSON.minzoom) && (tileJSON.minzoom as number) > (minZoom as number)) {\n opts.minZoom = tileJSON.minzoom as number;\n }\n\n if (\n Number.isFinite(tileJSON.maxzoom) &&\n (!Number.isFinite(maxZoom) || (tileJSON.maxzoom as number) < (maxZoom as number))\n ) {\n opts.maxZoom = tileJSON.maxzoom as number;\n }\n }\n return opts;\n }\n\n /* eslint-disable complexity */\n\n renderLayers(): Layer | null | LayersList {\n if (!this.state?.data) return null;\n return super.renderLayers();\n }\n\n getTileData(loadProps: TileLoadProps): Promise<ParsedMvtTile> {\n const {data, binary} = this.state;\n const {index, signal} = loadProps;\n\n const url = getURLFromTemplate(data, loadProps);\n if (!url) {\n return Promise.reject('Invalid URL');\n }\n let loadOptions = this.getLoadOptions();\n const {fetch} = this.props;\n loadOptions = {\n ...loadOptions,\n mimeType: 'application/x-protobuf',\n mvt: {\n ...loadOptions?.mvt,\n coordinates: this.context.viewport.resolution ? 'wgs84' : 'local',\n tileIndex: index\n // Local worker debug\n // workerUrl: `modules/mvt/dist/mvt-loader.worker.js`\n // Set worker to null to skip web workers\n // workerUrl: null\n },\n gis: binary ? {format: 'binary'} : {}\n };\n return fetch(url, {propName: 'data', layer: this, loadOptions, signal});\n }\n\n renderSubLayers(\n props: TileLayer['props'] & {\n id: string;\n data: ParsedMvtTile;\n _offset: number;\n tile: Tile2DHeader<ParsedMvtTile>;\n }\n ): Layer | null | LayersList {\n const {x, y, z} = props.tile.index;\n const worldScale = Math.pow(2, z);\n\n const xScale = WORLD_SIZE / worldScale;\n const yScale = -xScale;\n\n const xOffset = (WORLD_SIZE * x) / worldScale;\n const yOffset = WORLD_SIZE * (1 - y / worldScale);\n\n const modelMatrix = new Matrix4().scale([xScale, yScale, 1]);\n\n props.autoHighlight = false;\n\n if (!this.context.viewport.resolution) {\n props.modelMatrix = modelMatrix;\n props.coordinateOrigin = [xOffset, yOffset, 0];\n props.coordinateSystem = COORDINATE_SYSTEM.CARTESIAN;\n props.extensions = [...(props.extensions || []), new ClipExtension()];\n }\n\n const subLayers = super.renderSubLayers(props);\n\n if (this.state.binary && !(subLayers instanceof GeoJsonLayer)) {\n log.warn('renderSubLayers() must return GeoJsonLayer when using binary:true')();\n }\n\n return subLayers;\n }\n\n protected _updateAutoHighlight(info: PickingInfo): void {\n const {uniqueIdProperty} = this.props;\n\n const {hoveredFeatureId, hoveredFeatureLayerName} = this.state;\n const hoveredFeature = info.object;\n let newHoveredFeatureId;\n let newHoveredFeatureLayerName;\n\n if (hoveredFeature) {\n newHoveredFeatureId = getFeatureUniqueId(hoveredFeature, uniqueIdProperty);\n newHoveredFeatureLayerName = getFeatureLayerName(hoveredFeature);\n }\n let {highlightColor} = this.props;\n if (typeof highlightColor === 'function') {\n highlightColor = highlightColor(info);\n }\n\n if (\n hoveredFeatureId !== newHoveredFeatureId ||\n hoveredFeatureLayerName !== newHoveredFeatureLayerName\n ) {\n this.setState({\n highlightColor,\n hoveredFeatureId: newHoveredFeatureId,\n hoveredFeatureLayerName: newHoveredFeatureLayerName\n });\n }\n }\n\n getPickingInfo(params: GetPickingInfoParams): TiledPickingInfo {\n const info = super.getPickingInfo(params);\n\n const isWGS84 = Boolean(this.context.viewport.resolution);\n\n if (this.state.binary && info.index !== -1) {\n const {data} = params.sourceLayer!.props;\n info.object = binaryToGeojson(data as BinaryFeatures, {globalFeatureId: info.index}) as DataT;\n }\n if (info.object && !isWGS84) {\n info.object = transformTileCoordsToWGS84(\n info.object,\n info.tile!.bbox as GeoBoundingBox,\n this.context.viewport\n );\n }\n\n return info;\n }\n\n getSubLayerPropsByTile(tile: Tile2DHeader<ParsedMvtTile>): Record<string, any> {\n return {\n highlightedObjectIndex: this.getHighlightedObjectIndex(tile),\n highlightColor: this.state.highlightColor\n };\n }\n\n private getHighlightedObjectIndex(tile: Tile2DHeader<ParsedMvtTile>): number {\n const {hoveredFeatureId, hoveredFeatureLayerName, binary} = this.state;\n const {uniqueIdProperty, highlightedFeatureId} = this.props;\n const data = tile.content;\n\n const isHighlighted = isFeatureIdDefined(highlightedFeatureId);\n const isFeatureIdPresent = isFeatureIdDefined(hoveredFeatureId) || isHighlighted;\n\n if (!isFeatureIdPresent) {\n return -1;\n }\n\n const featureIdToHighlight = isHighlighted ? highlightedFeatureId : hoveredFeatureId;\n\n // Iterable data\n if (Array.isArray(data)) {\n return data.findIndex(feature => {\n const isMatchingId = getFeatureUniqueId(feature, uniqueIdProperty) === featureIdToHighlight;\n const isMatchingLayer =\n isHighlighted || getFeatureLayerName(feature) === hoveredFeatureLayerName;\n return isMatchingId && isMatchingLayer;\n });\n\n // Non-iterable data\n } else if (data && binary) {\n // Get the feature index of the selected item to highlight\n return findIndexBinary(\n data,\n uniqueIdProperty,\n featureIdToHighlight,\n isHighlighted ? '' : hoveredFeatureLayerName\n );\n }\n\n return -1;\n }\n\n private _pickObjects(maxObjects: number | null): PickingInfo[] {\n const {deck, viewport} = this.context;\n const width = viewport.width;\n const height = viewport.height;\n const x = viewport.x;\n const y = viewport.y;\n const layerIds = [this.id];\n return deck!.pickObjects({x, y, width, height, layerIds, maxObjects});\n }\n\n /** Get the rendered features in the current viewport. */\n getRenderedFeatures(maxFeatures: number | null = null): DataT[] {\n const features = this._pickObjects(maxFeatures);\n const featureCache = new Set();\n const renderedFeatures: DataT[] = [];\n\n for (const f of features) {\n const featureId = getFeatureUniqueId(f.object, this.props.uniqueIdProperty);\n\n if (featureId === undefined) {\n // we have no id for the feature, we just add to the list\n renderedFeatures.push(f.object as DataT);\n } else if (!featureCache.has(featureId)) {\n // Add removing duplicates\n featureCache.add(featureId);\n renderedFeatures.push(f.object as DataT);\n }\n }\n\n return renderedFeatures;\n }\n\n private _setWGS84PropertyForTiles(): void {\n const propName = 'dataInWGS84';\n const tileset: Tileset2D = this.state.tileset;\n\n // @ts-expect-error selectedTiles are always initialized when tile is being processed\n tileset.selectedTiles.forEach((tile: Tile2DHeader & ContentWGS84Cache) => {\n if (!tile.hasOwnProperty(propName)) {\n // eslint-disable-next-line accessor-pairs\n Object.defineProperty(tile, propName, {\n get: () => {\n // Still loading or encountered an error\n if (!tile.content) {\n return null;\n }\n\n if (this.state.binary && Array.isArray(tile.content) && !tile.content.length) {\n // TODO: @loaders.gl/mvt returns [] when no content. It should return a valid empty binary.\n // https://github.com/visgl/loaders.gl/pull/1137\n return [];\n }\n\n const {bbox} = tile;\n if (tile._contentWGS84 === undefined && isGeoBoundingBox(bbox)) {\n // Create a cache to transform only once\n\n const content = this.state.binary ? binaryToGeojson(tile.content) : tile.content;\n tile._contentWGS84 = content.map(feature =>\n transformTileCoordsToWGS84(feature, bbox, this.context.viewport)\n );\n }\n return tile._contentWGS84;\n }\n });\n }\n });\n }\n}\n\nfunction getFeatureUniqueId(feature: Feature, uniqueIdProperty: string | undefined) {\n if (feature.properties && uniqueIdProperty) {\n return feature.properties[uniqueIdProperty];\n }\n\n if ('id' in feature) {\n return feature.id;\n }\n\n return undefined;\n}\n\nfunction getFeatureLayerName(feature: Feature): string | null {\n return feature.properties?.layerName || null;\n}\n\nfunction isFeatureIdDefined(value: unknown): boolean {\n return value !== undefined && value !== null && value !== '';\n}\n\nfunction transformTileCoordsToWGS84(\n object: Feature,\n bbox: GeoBoundingBox,\n viewport: Viewport\n): Feature {\n const feature = {\n ...object,\n geometry: {\n type: object.geometry.type\n }\n };\n\n // eslint-disable-next-line accessor-pairs\n Object.defineProperty(feature.geometry, 'coordinates', {\n get: () => {\n const wgs84Geom = transform(object.geometry, bbox, viewport);\n return wgs84Geom.coordinates;\n }\n });\n\n return feature as Feature;\n}\n"],"file":"mvt-layer.js"}
@@ -1,3 +1,4 @@
1
+ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
1
2
  import GeoCellLayer from '../geo-cell-layer/GeoCellLayer';
2
3
  import { getQuadkeyPolygon } from './quadkey-utils';
3
4
  const defaultProps = {
@@ -21,6 +22,8 @@ export default class QuadkeyLayer extends GeoCellLayer {
21
22
  }
22
23
 
23
24
  }
24
- QuadkeyLayer.layerName = 'QuadkeyLayer';
25
- QuadkeyLayer.defaultProps = defaultProps;
25
+
26
+ _defineProperty(QuadkeyLayer, "layerName", 'QuadkeyLayer');
27
+
28
+ _defineProperty(QuadkeyLayer, "defaultProps", defaultProps);
26
29
  //# sourceMappingURL=quadkey-layer.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/quadkey-layer/quadkey-layer.js"],"names":["GeoCellLayer","getQuadkeyPolygon","defaultProps","getQuadkey","type","value","d","quadkey","QuadkeyLayer","indexToBounds","data","props","_normalize","positionFormat","getPolygon","x","objectInfo","layerName"],"mappings":"AAAA,OAAOA,YAAP,MAAyB,gCAAzB;AACA,SAAQC,iBAAR,QAAgC,iBAAhC;AAEA,MAAMC,YAAY,GAAG;AACnBC,EAAAA,UAAU,EAAE;AAACC,IAAAA,IAAI,EAAE,UAAP;AAAmBC,IAAAA,KAAK,EAAEC,CAAC,IAAIA,CAAC,CAACC;AAAjC;AADO,CAArB;AAIA,eAAe,MAAMC,YAAN,SAA2BR,YAA3B,CAAwC;AACrDS,EAAAA,aAAa,GAAG;AACd,UAAM;AAACC,MAAAA,IAAD;AAAOP,MAAAA;AAAP,QAAqB,KAAKQ,KAAhC;AAEA,WAAO;AACLD,MAAAA,IADK;AAELE,MAAAA,UAAU,EAAE,KAFP;AAGLC,MAAAA,cAAc,EAAE,IAHX;AAILC,MAAAA,UAAU,EAAE,CAACC,CAAD,EAAIC,UAAJ,KAAmBf,iBAAiB,CAACE,UAAU,CAACY,CAAD,EAAIC,UAAJ,CAAX;AAJ3C,KAAP;AAMD;;AAVoD;AAavDR,YAAY,CAACS,SAAb,GAAyB,cAAzB;AACAT,YAAY,CAACN,YAAb,GAA4BA,YAA5B","sourcesContent":["import GeoCellLayer from '../geo-cell-layer/GeoCellLayer';\nimport {getQuadkeyPolygon} from './quadkey-utils';\n\nconst defaultProps = {\n getQuadkey: {type: 'accessor', value: d => d.quadkey}\n};\n\nexport default class QuadkeyLayer extends GeoCellLayer {\n indexToBounds() {\n const {data, getQuadkey} = this.props;\n\n return {\n data,\n _normalize: false,\n positionFormat: 'XY',\n getPolygon: (x, objectInfo) => getQuadkeyPolygon(getQuadkey(x, objectInfo))\n };\n }\n}\n\nQuadkeyLayer.layerName = 'QuadkeyLayer';\nQuadkeyLayer.defaultProps = defaultProps;\n"],"file":"quadkey-layer.js"}
1
+ {"version":3,"sources":["../../../src/quadkey-layer/quadkey-layer.ts"],"names":["GeoCellLayer","getQuadkeyPolygon","defaultProps","getQuadkey","type","value","d","quadkey","QuadkeyLayer","indexToBounds","data","props","_normalize","positionFormat","getPolygon","x","objectInfo"],"mappings":";AACA,OAAOA,YAAP,MAAyB,gCAAzB;AACA,SAAQC,iBAAR,QAAgC,iBAAhC;AAEA,MAAMC,YAAY,GAAG;AACnBC,EAAAA,UAAU,EAAE;AAACC,IAAAA,IAAI,EAAE,UAAP;AAAmBC,IAAAA,KAAK,EAAEC,CAAC,IAAIA,CAAC,CAACC;AAAjC;AADO,CAArB;AAgBA,eAAe,MAAMC,YAAN,SAAyDR,YAAzD,CAGb;AAIAS,EAAAA,aAAa,GAA0C;AACrD,UAAM;AAACC,MAAAA,IAAD;AAAOP,MAAAA;AAAP,QAAqB,KAAKQ,KAAhC;AAEA,WAAO;AACLD,MAAAA,IADK;AAELE,MAAAA,UAAU,EAAE,KAFP;AAGLC,MAAAA,cAAc,EAAE,IAHX;AAKLC,MAAAA,UAAU,EAAE,CAACC,CAAD,EAAWC,UAAX,KAA0Bf,iBAAiB,CAACE,UAAU,CAACY,CAAD,EAAIC,UAAJ,CAAX;AALlD,KAAP;AAOD;;AAdD;;gBAHmBR,Y,eAIA,c;;gBAJAA,Y,kBAKQN,Y","sourcesContent":["import {AccessorFunction} from '@deck.gl/core';\nimport GeoCellLayer from '../geo-cell-layer/GeoCellLayer';\nimport {getQuadkeyPolygon} from './quadkey-utils';\n\nconst defaultProps = {\n getQuadkey: {type: 'accessor', value: d => d.quadkey}\n};\n\n/**\n * Properties of `QuadkeyLayer`.\n */\ntype QuadkeyLayerProps<DataT = any> = {\n /**\n * Called for each data object to retrieve the quadkey string identifier.\n *\n * By default, it reads `quadkey` property of data object.\n */\n getQuadkey?: AccessorFunction<DataT, string>;\n};\n\nexport default class QuadkeyLayer<DataT = any, ExtraProps = {}> extends GeoCellLayer<\n DataT,\n Required<QuadkeyLayerProps> & ExtraProps\n> {\n static layerName = 'QuadkeyLayer';\n static defaultProps: any = defaultProps;\n\n indexToBounds(): Partial<GeoCellLayer['props']> | null {\n const {data, getQuadkey} = this.props;\n\n return {\n data,\n _normalize: false,\n positionFormat: 'XY',\n\n getPolygon: (x: DataT, objectInfo) => getQuadkeyPolygon(getQuadkey(x, objectInfo))\n };\n }\n}\n"],"file":"quadkey-layer.js"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/quadkey-layer/quadkey-utils.js"],"names":["worldToLngLat","TILE_SIZE","quadkeyToWorldBounds","quadkey","x","y","mask","length","scale","i","q","parseInt","getQuadkeyPolygon","topLeft","bottomRight","w","n","e","s"],"mappings":"AAAA,SAAQA,aAAR,QAA4B,uBAA5B;AAEA,MAAMC,SAAS,GAAG,GAAlB;AAEA,OAAO,SAASC,oBAAT,CAA8BC,OAA9B,EAAuC;AAC5C,MAAIC,CAAC,GAAG,CAAR;AACA,MAAIC,CAAC,GAAG,CAAR;AACA,MAAIC,IAAI,GAAG,KAAKH,OAAO,CAACI,MAAxB;AACA,QAAMC,KAAK,GAAGF,IAAI,GAAGL,SAArB;;AAEA,OAAK,IAAIQ,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGN,OAAO,CAACI,MAA5B,EAAoCE,CAAC,EAArC,EAAyC;AACvCH,IAAAA,IAAI,KAAK,CAAT;AACA,UAAMI,CAAC,GAAGC,QAAQ,CAACR,OAAO,CAACM,CAAD,CAAR,CAAlB;AACA,QAAIC,CAAC,GAAG,CAAR,EAAWN,CAAC,IAAIE,IAAL;AACX,QAAII,CAAC,GAAG,CAAR,EAAWL,CAAC,IAAIC,IAAL;AACZ;;AACD,SAAO,CACL,CAACF,CAAC,GAAGI,KAAL,EAAYP,SAAS,GAAGI,CAAC,GAAGG,KAA5B,CADK,EAEL,CAAC,CAACJ,CAAC,GAAG,IAAL,IAAaI,KAAd,EAAqBP,SAAS,GAAG,CAACI,CAAC,GAAG,IAAL,IAAaG,KAA9C,CAFK,CAAP;AAID;AAED,OAAO,SAASI,iBAAT,CAA2BT,OAA3B,EAAoC;AACzC,QAAM,CAACU,OAAD,EAAUC,WAAV,IAAyBZ,oBAAoB,CAACC,OAAD,CAAnD;AACA,QAAM,CAACY,CAAD,EAAIC,CAAJ,IAAShB,aAAa,CAACa,OAAD,CAA5B;AACA,QAAM,CAACI,CAAD,EAAIC,CAAJ,IAASlB,aAAa,CAACc,WAAD,CAA5B;AACA,SAAO,CAACG,CAAD,EAAID,CAAJ,EAAOC,CAAP,EAAUC,CAAV,EAAaH,CAAb,EAAgBG,CAAhB,EAAmBH,CAAnB,EAAsBC,CAAtB,EAAyBC,CAAzB,EAA4BD,CAA5B,CAAP;AACD","sourcesContent":["import {worldToLngLat} from '@math.gl/web-mercator';\n\nconst TILE_SIZE = 512;\n\nexport function quadkeyToWorldBounds(quadkey) {\n let x = 0;\n let y = 0;\n let mask = 1 << quadkey.length;\n const scale = mask / TILE_SIZE;\n\n for (let i = 0; i < quadkey.length; i++) {\n mask >>= 1;\n const q = parseInt(quadkey[i]);\n if (q % 2) x |= mask;\n if (q > 1) y |= mask;\n }\n return [\n [x / scale, TILE_SIZE - y / scale],\n [(x + 0.99) / scale, TILE_SIZE - (y + 0.99) / scale]\n ];\n}\n\nexport function getQuadkeyPolygon(quadkey) {\n const [topLeft, bottomRight] = quadkeyToWorldBounds(quadkey);\n const [w, n] = worldToLngLat(topLeft);\n const [e, s] = worldToLngLat(bottomRight);\n return [e, n, e, s, w, s, w, n, e, n];\n}\n"],"file":"quadkey-utils.js"}
1
+ {"version":3,"sources":["../../../src/quadkey-layer/quadkey-utils.ts"],"names":["worldToLngLat","TILE_SIZE","quadkeyToWorldBounds","quadkey","x","y","mask","length","scale","i","q","parseInt","getQuadkeyPolygon","topLeft","bottomRight","w","n","e","s"],"mappings":"AAAA,SAAQA,aAAR,QAA4B,uBAA5B;AAEA,MAAMC,SAAS,GAAG,GAAlB;AAEA,OAAO,SAASC,oBAAT,CAA8BC,OAA9B,EAAqE;AAC1E,MAAIC,CAAC,GAAG,CAAR;AACA,MAAIC,CAAC,GAAG,CAAR;AACA,MAAIC,IAAI,GAAG,KAAKH,OAAO,CAACI,MAAxB;AACA,QAAMC,KAAK,GAAGF,IAAI,GAAGL,SAArB;;AAEA,OAAK,IAAIQ,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGN,OAAO,CAACI,MAA5B,EAAoCE,CAAC,EAArC,EAAyC;AACvCH,IAAAA,IAAI,KAAK,CAAT;AACA,UAAMI,CAAC,GAAGC,QAAQ,CAACR,OAAO,CAACM,CAAD,CAAR,CAAlB;AACA,QAAIC,CAAC,GAAG,CAAR,EAAWN,CAAC,IAAIE,IAAL;AACX,QAAII,CAAC,GAAG,CAAR,EAAWL,CAAC,IAAIC,IAAL;AACZ;;AACD,SAAO,CACL,CAACF,CAAC,GAAGI,KAAL,EAAYP,SAAS,GAAGI,CAAC,GAAGG,KAA5B,CADK,EAEL,CAAC,CAACJ,CAAC,GAAG,IAAL,IAAaI,KAAd,EAAqBP,SAAS,GAAG,CAACI,CAAC,GAAG,IAAL,IAAaG,KAA9C,CAFK,CAAP;AAID;AAED,OAAO,SAASI,iBAAT,CAA2BT,OAA3B,EAAsD;AAC3D,QAAM,CAACU,OAAD,EAAUC,WAAV,IAAyBZ,oBAAoB,CAACC,OAAD,CAAnD;AACA,QAAM,CAACY,CAAD,EAAIC,CAAJ,IAAShB,aAAa,CAACa,OAAD,CAA5B;AACA,QAAM,CAACI,CAAD,EAAIC,CAAJ,IAASlB,aAAa,CAACc,WAAD,CAA5B;AACA,SAAO,CAACG,CAAD,EAAID,CAAJ,EAAOC,CAAP,EAAUC,CAAV,EAAaH,CAAb,EAAgBG,CAAhB,EAAmBH,CAAnB,EAAsBC,CAAtB,EAAyBC,CAAzB,EAA4BD,CAA5B,CAAP;AACD","sourcesContent":["import {worldToLngLat} from '@math.gl/web-mercator';\n\nconst TILE_SIZE = 512;\n\nexport function quadkeyToWorldBounds(quadkey: string): [number[], number[]] {\n let x = 0;\n let y = 0;\n let mask = 1 << quadkey.length;\n const scale = mask / TILE_SIZE;\n\n for (let i = 0; i < quadkey.length; i++) {\n mask >>= 1;\n const q = parseInt(quadkey[i]);\n if (q % 2) x |= mask;\n if (q > 1) y |= mask;\n }\n return [\n [x / scale, TILE_SIZE - y / scale],\n [(x + 0.99) / scale, TILE_SIZE - (y + 0.99) / scale]\n ];\n}\n\nexport function getQuadkeyPolygon(quadkey: string): number[] {\n const [topLeft, bottomRight] = quadkeyToWorldBounds(quadkey);\n const [w, n] = worldToLngLat(topLeft);\n const [e, s] = worldToLngLat(bottomRight);\n return [e, n, e, s, w, s, w, n, e, n];\n}\n"],"file":"quadkey-utils.js"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/tile-layer/tile-2d-header.ts"],"names":["log","Tile2DHeader","constructor","index","isVisible","isSelected","parent","children","content","_loader","undefined","_abortController","_loaderId","_isLoaded","_isCancelled","_needsReload","data","isLoading","then","isLoaded","Boolean","needsReload","byteLength","result","Number","isFinite","error","_loadData","getData","requestScheduler","onLoad","onError","id","bbox","userData","zoom","loaderId","AbortController","signal","requestToken","scheduleRequest","tile","done","tileData","err","loadData","opts","setNeedsReload","abort"],"mappings":"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","sourcesContent":["/* eslint-env browser */\nimport {Layer, log} from '@deck.gl/core';\nimport {RequestScheduler} from '@loaders.gl/loader-utils';\nimport {TileBoundingBox, TileIndex, TileLoadProps} from './types';\n\nexport type TileLoadDataProps = {\n requestScheduler: RequestScheduler;\n getData: (props: TileLoadProps) => Promise<any>;\n onLoad: (tile: Tile2DHeader) => void;\n onError: (error: any, tile: Tile2DHeader) => void;\n};\nexport default class Tile2DHeader {\n index: TileIndex;\n isVisible: boolean;\n isSelected: boolean;\n parent: Tile2DHeader | null;\n children: Tile2DHeader[] | null;\n content: any;\n state?: number;\n layers?: Layer[] | null;\n\n id!: string; // assigned _always_ with result of `getTileId`\n bbox!: TileBoundingBox; // assigned _always_ with result of `getTileMetadata`\n zoom!: number; // assigned _always_ with result of `getTileZoom`\n userData?: Record<string, any>; // _may be_ assigned with result of `getTileMetadata`\n\n private _abortController: AbortController | null;\n private _loader: Promise<void> | undefined;\n private _loaderId: number;\n private _isLoaded: boolean;\n private _isCancelled: boolean;\n private _needsReload: boolean;\n\n constructor(index: TileIndex) {\n this.index = index;\n this.isVisible = false;\n this.isSelected = false;\n this.parent = null;\n this.children = [];\n\n this.content = null;\n\n this._loader = undefined;\n this._abortController = null;\n this._loaderId = 0;\n this._isLoaded = false;\n this._isCancelled = false;\n this._needsReload = false;\n }\n\n get data() {\n return this.isLoading && this._loader ? this._loader.then(() => this.data) : this.content;\n }\n\n get isLoaded() {\n return this._isLoaded && !this._needsReload;\n }\n\n get isLoading() {\n return Boolean(this._loader) && !this._isCancelled;\n }\n\n get needsReload() {\n return this._needsReload || this._isCancelled;\n }\n\n get byteLength() {\n const result = this.content ? this.content.byteLength : 0;\n if (!Number.isFinite(result)) {\n log.error('byteLength not defined in tile data')();\n }\n return result;\n }\n\n /* eslint-disable max-statements */\n private async _loadData({\n getData,\n requestScheduler,\n onLoad,\n onError\n }: TileLoadDataProps): Promise<void> {\n const {index, id, bbox, userData, zoom} = this;\n const loaderId = this._loaderId;\n\n this._abortController = new AbortController();\n const {signal} = this._abortController;\n\n // @ts-expect-error (2345) Argument of type '(tile: any) => 1 | -1' is not assignable ...\n const requestToken = await requestScheduler.scheduleRequest(this, tile => {\n return tile.isSelected ? 1 : -1;\n });\n\n if (!requestToken) {\n this._isCancelled = true;\n return;\n }\n // A tile can be cancelled while being scheduled\n if (this._isCancelled) {\n requestToken.done();\n return;\n }\n\n let tileData = null;\n let error;\n try {\n tileData = await getData({index, id, bbox, userData, zoom, signal});\n } catch (err) {\n error = err || true;\n } finally {\n requestToken.done();\n }\n\n // If loadData has been called with a newer version, discard the result from this operation\n if (loaderId !== this._loaderId) {\n return;\n }\n // Clear the `isLoading` flag\n this._loader = undefined;\n // Rewrite tile content with the result of getTileData if successful, or `null` in case of\n // error or cancellation\n this.content = tileData;\n // If cancelled, do not invoke the callbacks\n // Consider it loaded if we tried to cancel but `getTileData` still returned data\n if (this._isCancelled && !tileData) {\n this._isLoaded = false;\n return;\n }\n this._isLoaded = true;\n this._isCancelled = false;\n\n if (error) {\n onError(error, this);\n } else {\n onLoad(this);\n }\n }\n\n loadData(opts: TileLoadDataProps): Promise<void> {\n this._isLoaded = false;\n this._isCancelled = false;\n this._needsReload = false;\n this._loaderId++;\n this._loader = this._loadData(opts);\n return this._loader;\n }\n\n setNeedsReload(): void {\n if (this.isLoading) {\n this.abort();\n this._loader = undefined;\n }\n this._needsReload = true;\n }\n\n abort(): void {\n if (this.isLoaded) {\n return;\n }\n\n this._isCancelled = true;\n this._abortController?.abort();\n }\n}\n"],"file":"tile-2d-header.js"}
1
+ {"version":3,"sources":["../../../src/tile-layer/tile-2d-header.ts"],"names":["log","Tile2DHeader","constructor","index","isVisible","isSelected","parent","children","content","_loader","undefined","_abortController","_loaderId","_isLoaded","_isCancelled","_needsReload","data","isLoading","then","isLoaded","Boolean","needsReload","byteLength","result","Number","isFinite","error","_loadData","getData","requestScheduler","onLoad","onError","id","bbox","userData","zoom","loaderId","AbortController","signal","requestToken","scheduleRequest","tile","done","tileData","err","loadData","opts","setNeedsReload","abort"],"mappings":"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","sourcesContent":["/* eslint-env browser */\nimport {Layer, log} from '@deck.gl/core';\nimport {RequestScheduler} from '@loaders.gl/loader-utils';\nimport {TileBoundingBox, TileIndex, TileLoadProps} from './types';\n\nexport type TileLoadDataProps<DataT = any> = {\n requestScheduler: RequestScheduler;\n getData: (props: TileLoadProps) => Promise<DataT>;\n onLoad: (tile: Tile2DHeader<DataT>) => void;\n onError: (error: any, tile: Tile2DHeader<DataT>) => void;\n};\n\nexport default class Tile2DHeader<DataT = any> {\n index: TileIndex;\n isVisible: boolean;\n isSelected: boolean;\n parent: Tile2DHeader | null;\n children: Tile2DHeader[] | null;\n content: DataT | null;\n state?: number;\n layers?: Layer[] | null;\n\n id!: string; // assigned _always_ with result of `getTileId`\n bbox!: TileBoundingBox; // assigned _always_ with result of `getTileMetadata`\n zoom!: number; // assigned _always_ with result of `getTileZoom`\n userData?: Record<string, any>; // _may be_ assigned with result of `getTileMetadata`\n\n private _abortController: AbortController | null;\n private _loader: Promise<void> | undefined;\n private _loaderId: number;\n private _isLoaded: boolean;\n private _isCancelled: boolean;\n private _needsReload: boolean;\n\n constructor(index: TileIndex) {\n this.index = index;\n this.isVisible = false;\n this.isSelected = false;\n this.parent = null;\n this.children = [];\n\n this.content = null;\n\n this._loader = undefined;\n this._abortController = null;\n this._loaderId = 0;\n this._isLoaded = false;\n this._isCancelled = false;\n this._needsReload = false;\n }\n\n get data(): Promise<DataT | null> | DataT | null {\n return this.isLoading && this._loader ? this._loader.then(() => this.data) : this.content;\n }\n\n get isLoaded(): boolean {\n return this._isLoaded && !this._needsReload;\n }\n\n get isLoading(): boolean {\n return Boolean(this._loader) && !this._isCancelled;\n }\n\n get needsReload(): boolean {\n return this._needsReload || this._isCancelled;\n }\n\n get byteLength(): number {\n const result = this.content ? (this.content as any).byteLength : 0;\n if (!Number.isFinite(result)) {\n log.error('byteLength not defined in tile data')();\n }\n return result;\n }\n\n /* eslint-disable max-statements */\n private async _loadData({\n getData,\n requestScheduler,\n onLoad,\n onError\n }: TileLoadDataProps<DataT>): Promise<void> {\n const {index, id, bbox, userData, zoom} = this;\n const loaderId = this._loaderId;\n\n this._abortController = new AbortController();\n const {signal} = this._abortController;\n\n // @ts-expect-error (2345) Argument of type '(tile: any) => 1 | -1' is not assignable ...\n const requestToken = await requestScheduler.scheduleRequest(this, tile => {\n return tile.isSelected ? 1 : -1;\n });\n\n if (!requestToken) {\n this._isCancelled = true;\n return;\n }\n // A tile can be cancelled while being scheduled\n if (this._isCancelled) {\n requestToken.done();\n return;\n }\n\n let tileData: DataT | null = null;\n let error;\n try {\n tileData = await getData({index, id, bbox, userData, zoom, signal});\n } catch (err) {\n error = err || true;\n } finally {\n requestToken.done();\n }\n\n // If loadData has been called with a newer version, discard the result from this operation\n if (loaderId !== this._loaderId) {\n return;\n }\n // Clear the `isLoading` flag\n this._loader = undefined;\n // Rewrite tile content with the result of getTileData if successful, or `null` in case of\n // error or cancellation\n this.content = tileData;\n // If cancelled, do not invoke the callbacks\n // Consider it loaded if we tried to cancel but `getTileData` still returned data\n if (this._isCancelled && !tileData) {\n this._isLoaded = false;\n return;\n }\n this._isLoaded = true;\n this._isCancelled = false;\n\n if (error) {\n onError(error, this);\n } else {\n onLoad(this);\n }\n }\n\n loadData(opts: TileLoadDataProps): Promise<void> {\n this._isLoaded = false;\n this._isCancelled = false;\n this._needsReload = false;\n this._loaderId++;\n this._loader = this._loadData(opts);\n return this._loader;\n }\n\n setNeedsReload(): void {\n if (this.isLoading) {\n this.abort();\n this._loader = undefined;\n }\n this._needsReload = true;\n }\n\n abort(): void {\n if (this.isLoaded) {\n return;\n }\n\n this._isCancelled = true;\n this._abortController?.abort();\n }\n}\n"],"file":"tile-2d-header.js"}
@@ -1,5 +1,5 @@
1
1
  import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
- import { assert, CompositeLayer, _flatten as flatten } from '@deck.gl/core';
2
+ import { CompositeLayer, _flatten as flatten } from '@deck.gl/core';
3
3
  import { GeoJsonLayer } from '@deck.gl/layers';
4
4
  import Tileset2D, { STRATEGY_DEFAULT } from './tileset-2d';
5
5
  import { urlType, getURLFromTemplate } from './utils';
@@ -82,10 +82,8 @@ export default class TileLayer extends CompositeLayer {
82
82
  }
83
83
 
84
84
  updateState({
85
- props,
86
85
  changeFlags
87
86
  }) {
88
- assert(this.state);
89
87
  let {
90
88
  tileset
91
89
  } = this.state;
@@ -93,12 +91,12 @@ export default class TileLayer extends CompositeLayer {
93
91
  const dataChanged = changeFlags.dataChanged || changeFlags.updateTriggersChanged && (changeFlags.updateTriggersChanged.all || changeFlags.updateTriggersChanged.getTileData);
94
92
 
95
93
  if (!tileset) {
96
- tileset = new this.props.TilesetClass(this._getTilesetOptions(props));
94
+ tileset = new this.props.TilesetClass(this._getTilesetOptions());
97
95
  this.setState({
98
96
  tileset
99
97
  });
100
98
  } else if (propsChanged) {
101
- tileset.setOptions(this._getTilesetOptions(props));
99
+ tileset.setOptions(this._getTilesetOptions());
102
100
 
103
101
  if (dataChanged) {
104
102
  tileset.reloadAll();
@@ -112,7 +110,7 @@ export default class TileLayer extends CompositeLayer {
112
110
  this._updateTileset();
113
111
  }
114
112
 
115
- _getTilesetOptions(props) {
113
+ _getTilesetOptions() {
116
114
  const {
117
115
  tileSize,
118
116
  maxCacheSize,
@@ -123,7 +121,7 @@ export default class TileLayer extends CompositeLayer {
123
121
  minZoom,
124
122
  maxRequests,
125
123
  zoomOffset
126
- } = props;
124
+ } = this.props;
127
125
  return {
128
126
  maxCacheSize,
129
127
  maxCacheByteSize,
@@ -142,7 +140,6 @@ export default class TileLayer extends CompositeLayer {
142
140
  }
143
141
 
144
142
  _updateTileset() {
145
- assert(this.state && this.context);
146
143
  const {
147
144
  tileset
148
145
  } = this.state;
@@ -174,7 +171,6 @@ export default class TileLayer extends CompositeLayer {
174
171
  }
175
172
 
176
173
  _onViewportLoad() {
177
- assert(this.state);
178
174
  const {
179
175
  tileset
180
176
  } = this.state;
@@ -252,7 +248,6 @@ export default class TileLayer extends CompositeLayer {
252
248
  }
253
249
 
254
250
  renderLayers() {
255
- assert(this.state);
256
251
  return this.state.tileset.tiles.map(tile => {
257
252
  const subLayerProps = this.getSubLayerPropsByTile(tile);
258
253