@deck.gl/carto 8.8.0-alpha.3 → 8.8.0-alpha.6

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 (97) hide show
  1. package/dist/dist.dev.js +383 -247
  2. package/dist/es5/api/layer-map.js +7 -5
  3. package/dist/es5/api/layer-map.js.map +1 -1
  4. package/dist/es5/layers/carto-layer.js +3 -1
  5. package/dist/es5/layers/carto-layer.js.map +1 -1
  6. package/dist/es5/layers/carto-tile-layer.js +17 -12
  7. package/dist/es5/layers/carto-tile-layer.js.map +1 -1
  8. package/dist/es5/layers/h3-tile-layer.js +34 -13
  9. package/dist/es5/layers/h3-tile-layer.js.map +1 -1
  10. package/dist/es5/layers/h3-tileset-2d.js +21 -11
  11. package/dist/es5/layers/h3-tileset-2d.js.map +1 -1
  12. package/dist/es5/layers/quadkey-tile-layer.js +31 -14
  13. package/dist/es5/layers/quadkey-tile-layer.js.map +1 -1
  14. package/dist/es5/layers/quadkey-tileset-2d.js.map +1 -1
  15. package/dist/es5/layers/schema/carto-tile.js +261 -188
  16. package/dist/es5/layers/schema/carto-tile.js.map +1 -1
  17. package/dist/es5/layers/spatial-index-tile-layer.js +92 -0
  18. package/dist/es5/layers/spatial-index-tile-layer.js.map +1 -0
  19. package/dist/esm/api/layer-map.js +8 -6
  20. package/dist/esm/api/layer-map.js.map +1 -1
  21. package/dist/esm/layers/carto-layer.js +3 -1
  22. package/dist/esm/layers/carto-layer.js.map +1 -1
  23. package/dist/esm/layers/carto-tile-layer.js +20 -16
  24. package/dist/esm/layers/carto-tile-layer.js.map +1 -1
  25. package/dist/esm/layers/h3-tile-layer.js +24 -10
  26. package/dist/esm/layers/h3-tile-layer.js.map +1 -1
  27. package/dist/esm/layers/h3-tileset-2d.js +27 -12
  28. package/dist/esm/layers/h3-tileset-2d.js.map +1 -1
  29. package/dist/esm/layers/quadkey-tile-layer.js +22 -13
  30. package/dist/esm/layers/quadkey-tile-layer.js.map +1 -1
  31. package/dist/esm/layers/quadkey-tileset-2d.js.map +1 -1
  32. package/dist/esm/layers/schema/carto-tile.js +174 -189
  33. package/dist/esm/layers/schema/carto-tile.js.map +1 -1
  34. package/dist/esm/layers/spatial-index-tile-layer.js +57 -0
  35. package/dist/esm/layers/spatial-index-tile-layer.js.map +1 -0
  36. package/dist.min.js +4 -4
  37. package/package.json +7 -4
  38. package/src/api/layer-map.ts +16 -7
  39. package/src/layers/carto-layer.ts +18 -5
  40. package/src/layers/{carto-tile-layer.js → carto-tile-layer.ts} +63 -26
  41. package/src/layers/h3-tile-layer.ts +78 -0
  42. package/src/layers/h3-tileset-2d.ts +118 -0
  43. package/src/layers/quadkey-tile-layer.ts +68 -0
  44. package/src/layers/{quadkey-tileset-2d.js → quadkey-tileset-2d.ts} +10 -5
  45. package/src/layers/schema/carto-tile.ts +221 -0
  46. package/src/layers/spatial-index-tile-layer.ts +49 -0
  47. package/typed/api/index.d.ts +4 -0
  48. package/typed/api/index.d.ts.map +1 -0
  49. package/typed/api/layer-map.d.ts +54 -0
  50. package/typed/api/layer-map.d.ts.map +1 -0
  51. package/typed/api/maps-api-common.d.ts +65 -0
  52. package/typed/api/maps-api-common.d.ts.map +1 -0
  53. package/typed/api/maps-client.d.ts +18 -0
  54. package/typed/api/maps-client.d.ts.map +1 -0
  55. package/typed/api/maps-v3-client.d.ts +45 -0
  56. package/typed/api/maps-v3-client.d.ts.map +1 -0
  57. package/typed/api/parseMap.d.ts +11 -0
  58. package/typed/api/parseMap.d.ts.map +1 -0
  59. package/typed/basemap.d.ts +10 -0
  60. package/typed/basemap.d.ts.map +1 -0
  61. package/typed/config.d.ts +26 -0
  62. package/typed/config.d.ts.map +1 -0
  63. package/typed/index.d.ts +12 -0
  64. package/typed/index.d.ts.map +1 -0
  65. package/typed/layers/carto-layer.d.ts +98 -0
  66. package/typed/layers/carto-layer.d.ts.map +1 -0
  67. package/typed/layers/carto-tile-layer.d.ts +63 -0
  68. package/typed/layers/carto-tile-layer.d.ts.map +1 -0
  69. package/typed/layers/h3-tile-layer.d.ts +23 -0
  70. package/typed/layers/h3-tile-layer.d.ts.map +1 -0
  71. package/typed/layers/h3-tileset-2d.d.ts +18 -0
  72. package/typed/layers/h3-tileset-2d.d.ts.map +1 -0
  73. package/typed/layers/quadkey-tile-layer.d.ts +23 -0
  74. package/typed/layers/quadkey-tile-layer.d.ts.map +1 -0
  75. package/typed/layers/quadkey-tileset-2d.d.ts +15 -0
  76. package/typed/layers/quadkey-tileset-2d.d.ts.map +1 -0
  77. package/typed/layers/schema/carto-tile.d.ts +44 -0
  78. package/typed/layers/schema/carto-tile.d.ts.map +1 -0
  79. package/typed/layers/spatial-index-tile-layer.d.ts +11 -0
  80. package/typed/layers/spatial-index-tile-layer.d.ts.map +1 -0
  81. package/typed/package.json +6 -0
  82. package/typed/style/color-bins-style.d.ts +9 -0
  83. package/typed/style/color-bins-style.d.ts.map +1 -0
  84. package/typed/style/color-categories-style.d.ts +10 -0
  85. package/typed/style/color-categories-style.d.ts.map +1 -0
  86. package/typed/style/color-continuous-style.d.ts +9 -0
  87. package/typed/style/color-continuous-style.d.ts.map +1 -0
  88. package/typed/style/palette.d.ts +7 -0
  89. package/typed/style/palette.d.ts.map +1 -0
  90. package/typed/style/utils.d.ts +8 -0
  91. package/typed/style/utils.d.ts.map +1 -0
  92. package/typed/utils.d.ts +2 -0
  93. package/typed/utils.d.ts.map +1 -0
  94. package/src/layers/h3-tile-layer.js +0 -44
  95. package/src/layers/h3-tileset-2d.js +0 -82
  96. package/src/layers/quadkey-tile-layer.js +0 -42
  97. package/src/layers/schema/carto-tile.js +0 -195
package/dist/dist.dev.js CHANGED
@@ -45583,8 +45583,13 @@ const deck = globalThis.deck || {}; // Check if peer dependencies are included
45583
45583
 
45584
45584
  if (!deck.LineLayer) {
45585
45585
  throw new Error('@deck.gl/layers is not found');
45586
- }
45586
+ } // Export carto layer library for pydeck integration
45587
+ // More info: https://github.com/ajduberstein/pydeck_custom_layer
45588
+
45587
45589
 
45590
+ globalThis.CartoLayerLibrary = {
45591
+ CartoLayer: CartoUtils.CartoLayer
45592
+ };
45588
45593
  module.exports = Object.assign(deck, {
45589
45594
  carto: CartoUtils
45590
45595
  });
@@ -45656,7 +45661,7 @@ __webpack_require__.r(__webpack_exports__);
45656
45661
  /* harmony import */ var moment_timezone__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(moment_timezone__WEBPACK_IMPORTED_MODULE_4__);
45657
45662
  /* harmony import */ var _deck_gl_aggregation_layers__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @deck.gl/aggregation-layers */ "@deck.gl/core");
45658
45663
  /* harmony import */ var _deck_gl_aggregation_layers__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_deck_gl_aggregation_layers__WEBPACK_IMPORTED_MODULE_5__);
45659
- /* harmony import */ var _layers_carto_tile_layer__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../layers/carto-tile-layer */ "./src/layers/carto-tile-layer.js");
45664
+ /* harmony import */ var _layers_carto_tile_layer__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../layers/carto-tile-layer */ "./src/layers/carto-tile-layer.ts");
45660
45665
  /* harmony import */ var _maps_api_common__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./maps-api-common */ "./src/api/maps-api-common.ts");
45661
45666
  /* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../utils */ "./src/utils.ts");
45662
45667
 
@@ -45771,7 +45776,7 @@ function getLayer(type, config, dataset) {
45771
45776
  const getPosition = d => d[geoColumn].coordinates;
45772
45777
 
45773
45778
  const hexagonId = config.columns?.hex_id;
45774
- const layer = {
45779
+ const layerTypeDefs = {
45775
45780
  point: {
45776
45781
  Layer: _deck_gl_aggregation_layers__WEBPACK_IMPORTED_MODULE_5__["GeoJsonLayer"],
45777
45782
  propMap: {
@@ -45832,13 +45837,15 @@ function getLayer(type, config, dataset) {
45832
45837
  stroked: false
45833
45838
  }
45834
45839
  }
45835
- }[type];
45840
+ };
45841
+ const layer = layerTypeDefs[type];
45836
45842
  Object(_utils__WEBPACK_IMPORTED_MODULE_8__["assert"])(layer, `Unsupported layer type: ${type}`);
45837
- layer.propMap = mergePropMaps(sharedPropMap, layer.propMap);
45838
- layer.defaultProps = { ...defaultProps,
45839
- ...layer.defaultProps
45843
+ return { ...layer,
45844
+ propMap: mergePropMaps(sharedPropMap, layer.propMap),
45845
+ defaultProps: { ...defaultProps,
45846
+ ...layer.defaultProps
45847
+ }
45840
45848
  };
45841
- return layer;
45842
45849
  }
45843
45850
 
45844
45851
  function getTileLayer(dataset) {
@@ -47197,13 +47204,13 @@ __webpack_require__.r(__webpack_exports__);
47197
47204
  /* harmony import */ var _layers_carto_layer__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./layers/carto-layer */ "./src/layers/carto-layer.ts");
47198
47205
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "CartoLayer", function() { return _layers_carto_layer__WEBPACK_IMPORTED_MODULE_1__["default"]; });
47199
47206
 
47200
- /* harmony import */ var _layers_carto_tile_layer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./layers/carto-tile-layer */ "./src/layers/carto-tile-layer.js");
47207
+ /* harmony import */ var _layers_carto_tile_layer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./layers/carto-tile-layer */ "./src/layers/carto-tile-layer.ts");
47201
47208
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "_CartoTileLayer", function() { return _layers_carto_tile_layer__WEBPACK_IMPORTED_MODULE_2__["default"]; });
47202
47209
 
47203
- /* harmony import */ var _layers_h3_tile_layer__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./layers/h3-tile-layer */ "./src/layers/h3-tile-layer.js");
47210
+ /* harmony import */ var _layers_h3_tile_layer__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./layers/h3-tile-layer */ "./src/layers/h3-tile-layer.ts");
47204
47211
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "_H3TileLayer", function() { return _layers_h3_tile_layer__WEBPACK_IMPORTED_MODULE_3__["default"]; });
47205
47212
 
47206
- /* harmony import */ var _layers_quadkey_tile_layer__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./layers/quadkey-tile-layer */ "./src/layers/quadkey-tile-layer.js");
47213
+ /* harmony import */ var _layers_quadkey_tile_layer__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./layers/quadkey-tile-layer */ "./src/layers/quadkey-tile-layer.ts");
47207
47214
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "_QuadkeyTileLayer", function() { return _layers_quadkey_tile_layer__WEBPACK_IMPORTED_MODULE_4__["default"]; });
47208
47215
 
47209
47216
  /* harmony import */ var _basemap__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./basemap */ "./src/basemap.ts");
@@ -47262,9 +47269,9 @@ __webpack_require__.r(__webpack_exports__);
47262
47269
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return CartoLayer; });
47263
47270
  /* harmony import */ var _deck_gl_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @deck.gl/core */ "@deck.gl/core");
47264
47271
  /* harmony import */ var _deck_gl_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_deck_gl_core__WEBPACK_IMPORTED_MODULE_0__);
47265
- /* harmony import */ var _carto_tile_layer__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./carto-tile-layer */ "./src/layers/carto-tile-layer.js");
47266
- /* harmony import */ var _h3_tile_layer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./h3-tile-layer */ "./src/layers/h3-tile-layer.js");
47267
- /* harmony import */ var _quadkey_tile_layer__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./quadkey-tile-layer */ "./src/layers/quadkey-tile-layer.js");
47272
+ /* harmony import */ var _carto_tile_layer__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./carto-tile-layer */ "./src/layers/carto-tile-layer.ts");
47273
+ /* harmony import */ var _h3_tile_layer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./h3-tile-layer */ "./src/layers/h3-tile-layer.ts");
47274
+ /* harmony import */ var _quadkey_tile_layer__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./quadkey-tile-layer */ "./src/layers/quadkey-tile-layer.ts");
47268
47275
  /* harmony import */ var _api__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../api */ "./src/api/index.ts");
47269
47276
  /* harmony import */ var _api_maps_api_common__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../api/maps-api-common */ "./src/api/maps-api-common.ts");
47270
47277
  /* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../config */ "./src/config.ts");
@@ -47320,8 +47327,14 @@ const defaultProps = {
47320
47327
  columns: {
47321
47328
  type: 'array',
47322
47329
  value: null
47323
- }
47330
+ },
47331
+ // (String, optional): aggregration SQL expression. Only used for spatial index datasets
47332
+ aggregationExp: null,
47333
+ // (Number, optional): aggregration resolution level. Only used for spatial index datasets, defaults to 6 for quadkeys, 4 for h3
47334
+ aggregationResLevel: null
47324
47335
  };
47336
+ /** All properties supported by CartoLayer. */
47337
+
47325
47338
  class CartoLayer extends _deck_gl_core__WEBPACK_IMPORTED_MODULE_0__["CompositeLayer"] {
47326
47339
  initializeState() {
47327
47340
  this.state = {
@@ -47459,7 +47472,8 @@ class CartoLayer extends _deck_gl_core__WEBPACK_IMPORTED_MODULE_0__["CompositeLa
47459
47472
  const {
47460
47473
  data: _notUsed,
47461
47474
  ...propsNoData
47462
- } = this.props;
47475
+ } = this.props; // @ts-expect-error 'uniqueIdProperty' is specified more than once, so this usage will be overwritten.
47476
+
47463
47477
  const props = {
47464
47478
  uniqueIdProperty,
47465
47479
  ...propsNoData
@@ -47517,9 +47531,9 @@ _defineProperty(CartoLayer, "defaultProps", defaultProps);
47517
47531
 
47518
47532
  /***/ }),
47519
47533
 
47520
- /***/ "./src/layers/carto-tile-layer.js":
47534
+ /***/ "./src/layers/carto-tile-layer.ts":
47521
47535
  /*!****************************************!*\
47522
- !*** ./src/layers/carto-tile-layer.js ***!
47536
+ !*** ./src/layers/carto-tile-layer.ts ***!
47523
47537
  \****************************************/
47524
47538
  /*! exports provided: default */
47525
47539
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
@@ -47532,8 +47546,10 @@ __webpack_require__.r(__webpack_exports__);
47532
47546
  /* harmony import */ var _deck_gl_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @deck.gl/core */ "@deck.gl/core");
47533
47547
  /* harmony import */ var _deck_gl_core__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_deck_gl_core__WEBPACK_IMPORTED_MODULE_1__);
47534
47548
  /* harmony import */ var _loaders_gl_gis__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @loaders.gl/gis */ "../../node_modules/@loaders.gl/gis/dist/esm/index.js");
47535
- /* harmony import */ var _schema_carto_tile__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./schema/carto-tile */ "./src/layers/schema/carto-tile.js");
47549
+ /* harmony import */ var _schema_carto_tile__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./schema/carto-tile */ "./src/layers/schema/carto-tile.ts");
47536
47550
  /* harmony import */ var _api_maps_api_common__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../api/maps-api-common */ "./src/api/maps-api-common.ts");
47551
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
47552
+
47537
47553
  /* global TextDecoder */
47538
47554
 
47539
47555
 
@@ -47550,7 +47566,7 @@ function parseJSON(arrayBuffer) {
47550
47566
 
47551
47567
  function parsePbf(buffer) {
47552
47568
  const pbf = new pbf__WEBPACK_IMPORTED_MODULE_0___default.a(buffer);
47553
- const tile = _schema_carto_tile__WEBPACK_IMPORTED_MODULE_3__["Tile"].read(pbf);
47569
+ const tile = _schema_carto_tile__WEBPACK_IMPORTED_MODULE_3__["TileReader"].read(pbf);
47554
47570
  return tile;
47555
47571
  }
47556
47572
 
@@ -47591,13 +47607,15 @@ function parseCartoTile(arrayBuffer, options) {
47591
47607
  polygons: { ...polygons,
47592
47608
  properties: unpackProperties(polygons.properties)
47593
47609
  }
47594
- };
47610
+ }; // Note: there is slight, difference in `numericProps` type, however geojson/mvtlayer can cope with this
47611
+
47595
47612
  return data;
47596
47613
  }
47597
47614
 
47598
47615
  const defaultTileFormat = _api_maps_api_common__WEBPACK_IMPORTED_MODULE_4__["TILE_FORMATS"].BINARY;
47599
47616
  const CartoTileLoader = {
47600
47617
  name: 'CARTO Tile',
47618
+ version: '1',
47601
47619
  id: 'cartoTile',
47602
47620
  module: 'carto',
47603
47621
  extensions: ['pbf'],
@@ -47616,6 +47634,8 @@ const defaultProps = { ..._deck_gl_core__WEBPACK_IMPORTED_MODULE_1__["MVTLayer"]
47616
47634
  formatTiles: defaultTileFormat,
47617
47635
  loaders: [CartoTileLoader]
47618
47636
  };
47637
+ /** All properties supported by CartoTileLayer. */
47638
+
47619
47639
  class CartoTileLayer extends _deck_gl_core__WEBPACK_IMPORTED_MODULE_1__["MVTLayer"] {
47620
47640
  getTileData(tile) {
47621
47641
  const url = Object(_deck_gl_core__WEBPACK_IMPORTED_MODULE_1__["_getURLFromTemplate"])(this.state.data, tile);
@@ -47656,31 +47676,33 @@ class CartoTileLayer extends _deck_gl_core__WEBPACK_IMPORTED_MODULE_1__["MVTLaye
47656
47676
  return null;
47657
47677
  }
47658
47678
 
47659
- props.autoHighlight = false;
47679
+ const tileBbox = props.tile.bbox;
47660
47680
  const {
47661
- bbox: {
47662
- west,
47663
- south,
47664
- east,
47665
- north
47666
- }
47667
- } = props.tile;
47668
- props.extensions = [new _deck_gl_core__WEBPACK_IMPORTED_MODULE_1__["ClipExtension"](), ...(props.extensions || [])];
47669
- props.clipBounds = [west, south, east, north];
47670
- const subLayer = new _deck_gl_core__WEBPACK_IMPORTED_MODULE_1__["GeoJsonLayer"]({ ...props
47671
- });
47681
+ west,
47682
+ south,
47683
+ east,
47684
+ north
47685
+ } = tileBbox;
47686
+ const subLayerProps = { ...props,
47687
+ autoHighlight: false,
47688
+ extensions: [new _deck_gl_core__WEBPACK_IMPORTED_MODULE_1__["ClipExtension"](), ...(props.extensions || [])],
47689
+ clipBounds: [west, south, east, north]
47690
+ };
47691
+ const subLayer = new _deck_gl_core__WEBPACK_IMPORTED_MODULE_1__["GeoJsonLayer"](subLayerProps);
47672
47692
  return subLayer;
47673
47693
  }
47674
47694
 
47675
47695
  }
47676
- CartoTileLayer.layerName = 'CartoTileLayer';
47677
- CartoTileLayer.defaultProps = defaultProps;
47696
+
47697
+ _defineProperty(CartoTileLayer, "layerName", 'CartoTileLayer');
47698
+
47699
+ _defineProperty(CartoTileLayer, "defaultProps", defaultProps);
47678
47700
 
47679
47701
  /***/ }),
47680
47702
 
47681
- /***/ "./src/layers/h3-tile-layer.js":
47703
+ /***/ "./src/layers/h3-tile-layer.ts":
47682
47704
  /*!*************************************!*\
47683
- !*** ./src/layers/h3-tile-layer.js ***!
47705
+ !*** ./src/layers/h3-tile-layer.ts ***!
47684
47706
  \*************************************/
47685
47707
  /*! exports provided: default */
47686
47708
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
@@ -47690,7 +47712,11 @@ __webpack_require__.r(__webpack_exports__);
47690
47712
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return H3TileLayer; });
47691
47713
  /* harmony import */ var _deck_gl_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @deck.gl/core */ "@deck.gl/core");
47692
47714
  /* harmony import */ var _deck_gl_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_deck_gl_core__WEBPACK_IMPORTED_MODULE_0__);
47693
- /* harmony import */ var _h3_tileset_2d__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./h3-tileset-2d */ "./src/layers/h3-tileset-2d.js");
47715
+ /* harmony import */ var _h3_tileset_2d__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./h3-tileset-2d */ "./src/layers/h3-tileset-2d.ts");
47716
+ /* harmony import */ var _spatial_index_tile_layer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./spatial-index-tile-layer */ "./src/layers/spatial-index-tile-layer.ts");
47717
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
47718
+
47719
+
47694
47720
 
47695
47721
 
47696
47722
 
@@ -47704,12 +47730,24 @@ const renderSubLayers = props => {
47704
47730
  } = props.tile;
47705
47731
  if (!data || !data.length) return null;
47706
47732
  return new _deck_gl_core__WEBPACK_IMPORTED_MODULE_0__["H3HexagonLayer"](props, {
47733
+ getHexagon: d => d.id,
47707
47734
  centerHexagon: index,
47708
47735
  highPrecision: true
47709
47736
  });
47710
47737
  };
47711
47738
 
47739
+ const defaultProps = {
47740
+ aggregationResLevel: 4
47741
+ };
47742
+ /** All properties supported by H3TileLayer. */
47743
+
47712
47744
  class H3TileLayer extends _deck_gl_core__WEBPACK_IMPORTED_MODULE_0__["CompositeLayer"] {
47745
+ constructor(...args) {
47746
+ super(...args);
47747
+
47748
+ _defineProperty(this, "state", void 0);
47749
+ }
47750
+
47713
47751
  initializeState() {
47714
47752
  this.setState({
47715
47753
  data: null,
@@ -47718,9 +47756,6 @@ class H3TileLayer extends _deck_gl_core__WEBPACK_IMPORTED_MODULE_0__["CompositeL
47718
47756
  }
47719
47757
 
47720
47758
  updateState({
47721
- props,
47722
- oldProps,
47723
- context,
47724
47759
  changeFlags
47725
47760
  }) {
47726
47761
  if (changeFlags.dataChanged) {
@@ -47738,33 +47773,37 @@ class H3TileLayer extends _deck_gl_core__WEBPACK_IMPORTED_MODULE_0__["CompositeL
47738
47773
 
47739
47774
  renderLayers() {
47740
47775
  const {
47741
- data
47776
+ data,
47777
+ tileJSON
47742
47778
  } = this.state;
47743
- return [new _deck_gl_core__WEBPACK_IMPORTED_MODULE_0__["TileLayer"](this.props, {
47744
- id: 'h3-tile-layer',
47779
+ const maxZoom = parseInt(tileJSON.maxresolution);
47780
+ return [new _spatial_index_tile_layer__WEBPACK_IMPORTED_MODULE_2__["default"](this.props, {
47781
+ id: `h3-tile-layer-${this.props.id}`,
47745
47782
  data,
47746
- getHexagon: d => d.id,
47783
+ // @ts-expect-error Tileset2D should be generic over TileIndex
47747
47784
  TilesetClass: _h3_tileset_2d__WEBPACK_IMPORTED_MODULE_1__["default"],
47748
- renderSubLayers
47785
+ renderSubLayers,
47786
+ maxZoom
47749
47787
  })];
47750
47788
  }
47751
47789
 
47752
47790
  }
47753
- H3TileLayer.layerName = 'H3TileLayer';
47791
+
47792
+ _defineProperty(H3TileLayer, "layerName", 'H3TileLayer');
47793
+
47794
+ _defineProperty(H3TileLayer, "defaultProps", defaultProps);
47754
47795
 
47755
47796
  /***/ }),
47756
47797
 
47757
- /***/ "./src/layers/h3-tileset-2d.js":
47798
+ /***/ "./src/layers/h3-tileset-2d.ts":
47758
47799
  /*!*************************************!*\
47759
- !*** ./src/layers/h3-tileset-2d.js ***!
47800
+ !*** ./src/layers/h3-tileset-2d.ts ***!
47760
47801
  \*************************************/
47761
- /*! exports provided: getHexagonsInBoundingBox, tileToBoundingBox, default */
47802
+ /*! exports provided: default */
47762
47803
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
47763
47804
 
47764
47805
  "use strict";
47765
47806
  __webpack_require__.r(__webpack_exports__);
47766
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getHexagonsInBoundingBox", function() { return getHexagonsInBoundingBox; });
47767
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "tileToBoundingBox", function() { return tileToBoundingBox; });
47768
47807
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return H3Tileset2D; });
47769
47808
  /* harmony import */ var _deck_gl_geo_layers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @deck.gl/geo-layers */ "@deck.gl/core");
47770
47809
  /* harmony import */ var _deck_gl_geo_layers__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_deck_gl_geo_layers__WEBPACK_IMPORTED_MODULE_0__);
@@ -47772,6 +47811,7 @@ __webpack_require__.r(__webpack_exports__);
47772
47811
  /* harmony import */ var h3_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(h3_js__WEBPACK_IMPORTED_MODULE_1__);
47773
47812
 
47774
47813
 
47814
+
47775
47815
  function getHexagonsInBoundingBox({
47776
47816
  west,
47777
47817
  north,
@@ -47800,10 +47840,11 @@ function getHexagonsInBoundingBox({
47800
47840
  // prematurely. Get more accurate coverage by oversampling
47801
47841
 
47802
47842
 
47803
- const oversample = 1;
47843
+ const oversample = 2;
47804
47844
  const h3Indices = Object(h3_js__WEBPACK_IMPORTED_MODULE_1__["polyfill"])([[[west, north], [west, south], [east, south], [east, north], [west, north]]], resolution + oversample, true);
47805
47845
  return oversample ? [...new Set(h3Indices.map(i => Object(h3_js__WEBPACK_IMPORTED_MODULE_1__["h3ToParent"])(i, resolution)))] : h3Indices;
47806
47846
  }
47847
+
47807
47848
  function tileToBoundingBox(index) {
47808
47849
  const coordinates = Object(h3_js__WEBPACK_IMPORTED_MODULE_1__["h3ToGeoBoundary"])(index);
47809
47850
  const latitudes = coordinates.map(c => c[0]);
@@ -47818,42 +47859,63 @@ function tileToBoundingBox(index) {
47818
47859
  east,
47819
47860
  north
47820
47861
  };
47862
+ } // Resolution conversion function. Takes a WebMercatorViewport and returns
47863
+ // a H3 resolution such that the screen space size of the hexagons is
47864
+ // similar
47865
+ // Relative scale factor (0 = no biasing, 2 = a few hexagons cover view)
47866
+
47867
+
47868
+ const BIAS = 2;
47869
+
47870
+ function getHexagonResolution(viewport) {
47871
+ const hexagonScaleFactor = 2 / 3 * viewport.zoom;
47872
+ const latitudeScaleFactor = Math.log(1 / Math.cos(Math.PI * viewport.latitude / 180)); // Clip and bias
47873
+
47874
+ return Math.max(0, Math.floor(hexagonScaleFactor + latitudeScaleFactor - BIAS));
47821
47875
  }
47876
+
47822
47877
  class H3Tileset2D extends _deck_gl_geo_layers__WEBPACK_IMPORTED_MODULE_0__["_Tileset2D"] {
47878
+ // @ts-expect-error Tileset2D should be generic over TileIndex
47823
47879
  getTileIndices({
47824
47880
  viewport,
47825
47881
  minZoom,
47826
47882
  maxZoom
47827
47883
  }) {
47828
- const [east, south, west, north] = viewport.getBounds(); // TODO ignores extent
47829
-
47830
- let z = viewport.zoom;
47884
+ const [east, south, west, north] = viewport.getBounds();
47885
+ let z = getHexagonResolution(viewport);
47886
+ let indices;
47831
47887
 
47832
47888
  if (typeof minZoom === 'number' && Number.isFinite(minZoom) && z < minZoom) {
47833
47889
  z = minZoom;
47834
47890
  }
47835
47891
 
47836
47892
  if (typeof maxZoom === 'number' && Number.isFinite(maxZoom) && z > maxZoom) {
47837
- z = maxZoom;
47838
- } // Heuristic to get h3 resolution
47893
+ z = maxZoom; // Once we are at max zoom, getHexagonsInBoundingBox doesn't work, simply
47894
+ // get a ring centered on the hexagon in the viewport center
47839
47895
 
47896
+ const center = Object(h3_js__WEBPACK_IMPORTED_MODULE_1__["geoToH3"])(viewport.latitude, viewport.longitude, maxZoom);
47897
+ indices = Object(h3_js__WEBPACK_IMPORTED_MODULE_1__["kRing"])(center, 1);
47898
+ } else {
47899
+ indices = getHexagonsInBoundingBox({
47900
+ west,
47901
+ north,
47902
+ east,
47903
+ south
47904
+ }, z);
47905
+ }
47840
47906
 
47841
- const resolution = Math.max(0, Math.floor(2 * z / 3) - 2);
47842
- return getHexagonsInBoundingBox({
47843
- west,
47844
- north,
47845
- east,
47846
- south
47847
- }, resolution).map(i => ({
47907
+ return indices.map(i => ({
47848
47908
  i
47849
47909
  }));
47850
- }
47910
+ } // @ts-expect-error Tileset2D should be generic over TileIndex
47911
+
47851
47912
 
47852
47913
  getTileId({
47853
47914
  i
47854
47915
  }) {
47855
47916
  return i;
47856
- }
47917
+ } // @ts-expect-error Tileset2D should be generic over TileIndex
47918
+
47857
47919
 
47858
47920
  getTileMetadata({
47859
47921
  i
@@ -47861,13 +47923,15 @@ class H3Tileset2D extends _deck_gl_geo_layers__WEBPACK_IMPORTED_MODULE_0__["_Til
47861
47923
  return {
47862
47924
  bbox: tileToBoundingBox(i)
47863
47925
  };
47864
- }
47926
+ } // @ts-expect-error Tileset2D should be generic over TileIndex
47927
+
47865
47928
 
47866
47929
  getTileZoom({
47867
47930
  i
47868
47931
  }) {
47869
47932
  return Object(h3_js__WEBPACK_IMPORTED_MODULE_1__["h3GetResolution"])(i);
47870
- }
47933
+ } // @ts-expect-error Tileset2D should be generic over TileIndex
47934
+
47871
47935
 
47872
47936
  getParentIndex(index) {
47873
47937
  const resolution = Object(h3_js__WEBPACK_IMPORTED_MODULE_1__["h3GetResolution"])(index.i);
@@ -47881,9 +47945,9 @@ class H3Tileset2D extends _deck_gl_geo_layers__WEBPACK_IMPORTED_MODULE_0__["_Til
47881
47945
 
47882
47946
  /***/ }),
47883
47947
 
47884
- /***/ "./src/layers/quadkey-tile-layer.js":
47948
+ /***/ "./src/layers/quadkey-tile-layer.ts":
47885
47949
  /*!******************************************!*\
47886
- !*** ./src/layers/quadkey-tile-layer.js ***!
47950
+ !*** ./src/layers/quadkey-tile-layer.ts ***!
47887
47951
  \******************************************/
47888
47952
  /*! exports provided: default */
47889
47953
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
@@ -47893,7 +47957,11 @@ __webpack_require__.r(__webpack_exports__);
47893
47957
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return QuadkeyTileLayer; });
47894
47958
  /* harmony import */ var _deck_gl_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @deck.gl/core */ "@deck.gl/core");
47895
47959
  /* harmony import */ var _deck_gl_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_deck_gl_core__WEBPACK_IMPORTED_MODULE_0__);
47896
- /* harmony import */ var _quadkey_tileset_2d__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./quadkey-tileset-2d */ "./src/layers/quadkey-tileset-2d.js");
47960
+ /* harmony import */ var _quadkey_tileset_2d__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./quadkey-tileset-2d */ "./src/layers/quadkey-tileset-2d.ts");
47961
+ /* harmony import */ var _spatial_index_tile_layer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./spatial-index-tile-layer */ "./src/layers/spatial-index-tile-layer.ts");
47962
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
47963
+
47964
+
47897
47965
 
47898
47966
 
47899
47967
 
@@ -47903,10 +47971,23 @@ const renderSubLayers = props => {
47903
47971
  data
47904
47972
  } = props;
47905
47973
  if (!data || !data.length) return null;
47906
- return new _deck_gl_core__WEBPACK_IMPORTED_MODULE_0__["QuadkeyLayer"](props);
47974
+ return new _deck_gl_core__WEBPACK_IMPORTED_MODULE_0__["QuadkeyLayer"](props, {
47975
+ getQuadkey: d => d.id
47976
+ });
47907
47977
  };
47908
47978
 
47979
+ const defaultProps = {
47980
+ aggregationResLevel: 6
47981
+ };
47982
+ /** All properties supported by QuadkeyTileLayer. */
47983
+
47909
47984
  class QuadkeyTileLayer extends _deck_gl_core__WEBPACK_IMPORTED_MODULE_0__["CompositeLayer"] {
47985
+ constructor(...args) {
47986
+ super(...args);
47987
+
47988
+ _defineProperty(this, "state", void 0);
47989
+ }
47990
+
47910
47991
  initializeState() {
47911
47992
  this.setState({
47912
47993
  data: null,
@@ -47915,9 +47996,6 @@ class QuadkeyTileLayer extends _deck_gl_core__WEBPACK_IMPORTED_MODULE_0__["Compo
47915
47996
  }
47916
47997
 
47917
47998
  updateState({
47918
- props,
47919
- oldProps,
47920
- context,
47921
47999
  changeFlags
47922
48000
  }) {
47923
48001
  if (changeFlags.dataChanged) {
@@ -47938,14 +48016,11 @@ class QuadkeyTileLayer extends _deck_gl_core__WEBPACK_IMPORTED_MODULE_0__["Compo
47938
48016
  data,
47939
48017
  tileJSON
47940
48018
  } = this.state;
47941
- const {
47942
- maxresolution
47943
- } = tileJSON;
47944
- const maxZoom = maxresolution - this.props.aggregationResLevel;
47945
- return [new _deck_gl_core__WEBPACK_IMPORTED_MODULE_0__["TileLayer"](this.props, {
47946
- id: 'quadkey-tile-layer',
48019
+ const maxZoom = parseInt(tileJSON?.maxresolution);
48020
+ return [new _spatial_index_tile_layer__WEBPACK_IMPORTED_MODULE_2__["default"](this.props, {
48021
+ id: `quadkey-tile-layer-${this.props.id}`,
47947
48022
  data,
47948
- getQuadkey: d => d.id,
48023
+ // TODO: Tileset2D should be generic over TileIndex type
47949
48024
  TilesetClass: _quadkey_tileset_2d__WEBPACK_IMPORTED_MODULE_1__["default"],
47950
48025
  renderSubLayers,
47951
48026
  maxZoom
@@ -47953,13 +48028,16 @@ class QuadkeyTileLayer extends _deck_gl_core__WEBPACK_IMPORTED_MODULE_0__["Compo
47953
48028
  }
47954
48029
 
47955
48030
  }
47956
- QuadkeyTileLayer.layerName = 'QuadkeyTileLayer';
48031
+
48032
+ _defineProperty(QuadkeyTileLayer, "layerName", 'QuadkeyTileLayer');
48033
+
48034
+ _defineProperty(QuadkeyTileLayer, "defaultProps", defaultProps);
47957
48035
 
47958
48036
  /***/ }),
47959
48037
 
47960
- /***/ "./src/layers/quadkey-tileset-2d.js":
48038
+ /***/ "./src/layers/quadkey-tileset-2d.ts":
47961
48039
  /*!******************************************!*\
47962
- !*** ./src/layers/quadkey-tileset-2d.js ***!
48040
+ !*** ./src/layers/quadkey-tileset-2d.ts ***!
47963
48041
  \******************************************/
47964
48042
  /*! exports provided: default */
47965
48043
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
@@ -47988,9 +48066,11 @@ function tileToQuadkey(tile) {
47988
48066
  }
47989
48067
 
47990
48068
  class QuadkeyTileset2D extends _deck_gl_geo_layers__WEBPACK_IMPORTED_MODULE_0__["_Tileset2D"] {
48069
+ // @ts-expect-error for spatial indices, TileSet2d should be parametrized by TileIndexT
47991
48070
  getTileIndices(opts) {
47992
48071
  return super.getTileIndices(opts).map(tileToQuadkey);
47993
- }
48072
+ } // @ts-expect-error TileIndex must be generic
48073
+
47994
48074
 
47995
48075
  getTileId({
47996
48076
  i
@@ -48000,13 +48080,15 @@ class QuadkeyTileset2D extends _deck_gl_geo_layers__WEBPACK_IMPORTED_MODULE_0__[
48000
48080
 
48001
48081
  getTileMetadata() {
48002
48082
  return {};
48003
- }
48083
+ } // @ts-expect-error TileIndex must be generic
48084
+
48004
48085
 
48005
48086
  getTileZoom({
48006
48087
  i
48007
48088
  }) {
48008
48089
  return i.length;
48009
- }
48090
+ } // @ts-expect-error TileIndex must be generic
48091
+
48010
48092
 
48011
48093
  getParentIndex(index) {
48012
48094
  const i = index.i.slice(0, -1);
@@ -48019,219 +48101,273 @@ class QuadkeyTileset2D extends _deck_gl_geo_layers__WEBPACK_IMPORTED_MODULE_0__[
48019
48101
 
48020
48102
  /***/ }),
48021
48103
 
48022
- /***/ "./src/layers/schema/carto-tile.js":
48104
+ /***/ "./src/layers/schema/carto-tile.ts":
48023
48105
  /*!*****************************************!*\
48024
- !*** ./src/layers/schema/carto-tile.js ***!
48106
+ !*** ./src/layers/schema/carto-tile.ts ***!
48025
48107
  \*****************************************/
48026
- /*! exports provided: Tile */
48108
+ /*! exports provided: TileReader */
48027
48109
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
48028
48110
 
48029
48111
  "use strict";
48030
48112
  __webpack_require__.r(__webpack_exports__);
48031
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Tile", function() { return Tile; });
48113
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TileReader", function() { return TileReader; });
48032
48114
  // KeyValueObject ========================================
48033
- const KeyValueObject = {};
48115
+ class KeyValueObjectReader {
48116
+ static read(pbf, end) {
48117
+ return pbf.readFields(KeyValueObjectReader._readField, {
48118
+ key: '',
48119
+ value: ''
48120
+ }, end);
48121
+ }
48034
48122
 
48035
- KeyValueObject.read = function (pbf, end) {
48036
- return pbf.readFields(KeyValueObject._readField, {
48037
- key: '',
48038
- value: ''
48039
- }, end);
48040
- };
48123
+ static _readField(tag, obj, pbf) {
48124
+ if (tag === 1) obj.key = pbf.readString();else if (tag === 2) obj.value = pbf.readString();
48125
+ }
48041
48126
 
48042
- KeyValueObject._readField = function (tag, obj, pbf) {
48043
- if (tag === 1) obj.key = pbf.readString();else if (tag === 2) obj.value = pbf.readString();
48044
- }; // Properties ========================================
48127
+ } // Properties ========================================
48045
48128
 
48046
48129
 
48047
- const Properties = {};
48130
+ class PropertiesReader {
48131
+ static read(pbf, end) {
48132
+ return pbf.readFields(PropertiesReader._readField, {
48133
+ data: []
48134
+ }, end);
48135
+ }
48048
48136
 
48049
- Properties.read = function (pbf, end) {
48050
- return pbf.readFields(Properties._readField, {
48051
- data: []
48052
- }, end);
48053
- };
48137
+ static _readField(tag, obj, pbf) {
48138
+ if (tag === 1) obj.data.push(KeyValueObjectReader.read(pbf, pbf.readVarint() + pbf.pos));
48139
+ }
48054
48140
 
48055
- Properties._readField = function (tag, obj, pbf) {
48056
- if (tag === 1) obj.data.push(KeyValueObject.read(pbf, pbf.readVarint() + pbf.pos));
48057
- }; // Doubles ========================================
48141
+ } // Doubles ========================================
48058
48142
 
48059
48143
 
48060
- const Doubles = {};
48144
+ class DoublesReader {
48145
+ static read(pbf, end) {
48146
+ // TODO perhaps we can do better and directly map from the source
48147
+ // ArrayBuffer using ArrayBuffer.slice()
48148
+ const {
48149
+ value,
48150
+ size
48151
+ } = pbf.readFields(DoublesReader._readField, {
48152
+ value: [],
48153
+ size: 0
48154
+ }, end);
48155
+ return {
48156
+ value: new Float32Array(value),
48157
+ size
48158
+ };
48159
+ }
48061
48160
 
48062
- Doubles.read = function (pbf, end) {
48063
- // TODO perhaps we can do better and directly map from the source
48064
- // ArrayBuffer using ArrayBuffer.slice()
48065
- const {
48066
- value,
48067
- size
48068
- } = pbf.readFields(Doubles._readField, {
48069
- value: [],
48070
- size: 0
48071
- }, end);
48072
- return {
48073
- value: new Float32Array(value),
48074
- size
48075
- };
48076
- };
48161
+ static _readField(tag, obj, pbf) {
48162
+ if (tag === 1) pbf.readPackedDouble(obj.value);else if (tag === 2) obj.size = pbf.readVarint(true);
48163
+ }
48077
48164
 
48078
- Doubles._readField = function (tag, obj, pbf) {
48079
- if (tag === 1) pbf.readPackedDouble(obj.value);else if (tag === 2) obj.size = pbf.readVarint(true);
48080
- }; // Ints ========================================
48165
+ } // Ints ========================================
48081
48166
 
48082
48167
 
48083
- const Ints = {};
48168
+ class IntsReader {
48169
+ static read(pbf, end) {
48170
+ const {
48171
+ value,
48172
+ size
48173
+ } = pbf.readFields(IntsReader._readField, {
48174
+ value: [],
48175
+ size: 0
48176
+ }, end);
48177
+ return {
48178
+ value: new Uint32Array(value),
48179
+ size
48180
+ };
48181
+ }
48084
48182
 
48085
- Ints.read = function (pbf, end) {
48086
- const {
48087
- value,
48088
- size
48089
- } = pbf.readFields(Ints._readField, {
48090
- value: [],
48091
- size: 0
48092
- }, end);
48093
- return {
48094
- value: new Uint32Array(value),
48095
- size
48096
- };
48097
- };
48183
+ static _readField(tag, obj, pbf) {
48184
+ if (tag === 1) pbf.readPackedVarint(obj.value);else if (tag === 2) obj.size = pbf.readVarint(true);
48185
+ }
48098
48186
 
48099
- Ints._readField = function (tag, obj, pbf) {
48100
- if (tag === 1) pbf.readPackedVarint(obj.value);else if (tag === 2) obj.size = pbf.readVarint(true);
48101
- }; // NumericProp ========================================
48187
+ } // NumericProp ========================================
48102
48188
 
48103
48189
 
48104
- const NumericProp = {};
48190
+ class NumericPropReader {
48191
+ static read(pbf, end) {
48192
+ return pbf.readFields(NumericPropReader._readField, {
48193
+ value: []
48194
+ }, end);
48195
+ }
48105
48196
 
48106
- NumericProp.read = function (pbf, end) {
48107
- return pbf.readFields(NumericProp._readField, {
48108
- value: []
48109
- }, end);
48110
- };
48197
+ static _readField(tag, obj, pbf) {
48198
+ if (tag === 1) pbf.readPackedDouble(obj.value);
48199
+ }
48111
48200
 
48112
- NumericProp._readField = function (tag, obj, pbf) {
48113
- if (tag === 1) pbf.readPackedDouble(obj.value);
48114
- }; // NumericPropKeyValue ========================================
48201
+ } // NumericPropKeyValue ========================================
48115
48202
 
48116
48203
 
48117
- const NumericPropKeyValue = {};
48204
+ class NumericPropKeyValueReader {
48205
+ static read(pbf, end) {
48206
+ return pbf.readFields(NumericPropKeyValueReader._readField, {
48207
+ key: '',
48208
+ value: null
48209
+ }, end);
48210
+ }
48118
48211
 
48119
- NumericPropKeyValue.read = function (pbf, end) {
48120
- return pbf.readFields(NumericPropKeyValue._readField, {
48121
- key: '',
48122
- value: null
48123
- }, end);
48124
- };
48212
+ static _readField(tag, obj, pbf) {
48213
+ if (tag === 1) obj.key = pbf.readString();else if (tag === 2) obj.value = NumericPropReader.read(pbf, pbf.readVarint() + pbf.pos);
48214
+ }
48125
48215
 
48126
- NumericPropKeyValue._readField = function (tag, obj, pbf) {
48127
- if (tag === 1) obj.key = pbf.readString();else if (tag === 2) obj.value = NumericProp.read(pbf, pbf.readVarint() + pbf.pos);
48128
- }; // NumericProp._FieldEntry1 ========================================
48216
+ } // Points ========================================
48129
48217
 
48130
48218
 
48131
- NumericProp._FieldEntry1 = {};
48219
+ class PointsReader {
48220
+ static read(pbf, end) {
48221
+ return pbf.readFields(PointsReader._readField, {
48222
+ positions: null,
48223
+ globalFeatureIds: null,
48224
+ featureIds: null,
48225
+ properties: [],
48226
+ numericProps: {}
48227
+ }, end);
48228
+ }
48132
48229
 
48133
- NumericProp._FieldEntry1.read = function (pbf, end) {
48134
- return pbf.readFields(NumericProp._FieldEntry1._readField, {
48135
- key: '',
48136
- value: 0
48137
- }, end);
48138
- };
48230
+ static _readField(tag, obj, pbf) {
48231
+ if (tag === 1) obj.positions = DoublesReader.read(pbf, pbf.readVarint() + pbf.pos);else if (tag === 2) obj.globalFeatureIds = IntsReader.read(pbf, pbf.readVarint() + pbf.pos);else if (tag === 3) obj.featureIds = IntsReader.read(pbf, pbf.readVarint() + pbf.pos);else if (tag === 4) obj.properties.push(PropertiesReader.read(pbf, pbf.readVarint() + pbf.pos));else if (tag === 5) {
48232
+ const entry = NumericPropKeyValueReader.read(pbf, pbf.readVarint() + pbf.pos);
48233
+ obj.numericProps[entry.key] = entry.value;
48234
+ }
48235
+ }
48139
48236
 
48140
- NumericProp._FieldEntry1._readField = function (tag, obj, pbf) {
48141
- if (tag === 1) obj.key = pbf.readString();else if (tag === 2) obj.value = pbf.readDouble();
48142
- }; // StringProp ========================================
48237
+ }
48143
48238
 
48239
+ // Lines ========================================
48240
+ class LinesReader {
48241
+ static read(pbf, end) {
48242
+ return pbf.readFields(LinesReader._readField, {
48243
+ positions: null,
48244
+ pathIndices: null,
48245
+ globalFeatureIds: null,
48246
+ featureIds: null,
48247
+ properties: [],
48248
+ numericProps: {}
48249
+ }, end);
48250
+ }
48144
48251
 
48145
- const StringProp = {};
48252
+ static _readField(tag, obj, pbf) {
48253
+ if (tag === 1) obj.positions = DoublesReader.read(pbf, pbf.readVarint() + pbf.pos);else if (tag === 2) obj.pathIndices = IntsReader.read(pbf, pbf.readVarint() + pbf.pos);else if (tag === 3) obj.globalFeatureIds = IntsReader.read(pbf, pbf.readVarint() + pbf.pos);else if (tag === 4) obj.featureIds = IntsReader.read(pbf, pbf.readVarint() + pbf.pos);else if (tag === 5) obj.properties.push(PropertiesReader.read(pbf, pbf.readVarint() + pbf.pos));else if (tag === 6) {
48254
+ const entry = NumericPropKeyValueReader.read(pbf, pbf.readVarint() + pbf.pos);
48255
+ obj.numericProps[entry.key] = entry.value;
48256
+ }
48257
+ }
48146
48258
 
48147
- StringProp.read = function (pbf, end) {
48148
- return pbf.readFields(StringProp._readField, {
48149
- value: []
48150
- }, end);
48151
- };
48259
+ } // Polygons ========================================
48152
48260
 
48153
- StringProp._readField = function (tag, obj, pbf) {
48154
- if (tag === 1) obj.value.push(pbf.readString());
48155
- }; // Points ========================================
48156
48261
 
48262
+ class PolygonsReader {
48263
+ static read(pbf, end) {
48264
+ return pbf.readFields(PolygonsReader._readField, {
48265
+ positions: null,
48266
+ polygonIndices: null,
48267
+ globalFeatureIds: null,
48268
+ featureIds: null,
48269
+ primitivePolygonIndices: null,
48270
+ triangles: null,
48271
+ properties: [],
48272
+ numericProps: {}
48273
+ }, end);
48274
+ }
48275
+
48276
+ static _readField(tag, obj, pbf) {
48277
+ if (tag === 1) obj.positions = DoublesReader.read(pbf, pbf.readVarint() + pbf.pos);else if (tag === 2) obj.polygonIndices = IntsReader.read(pbf, pbf.readVarint() + pbf.pos);else if (tag === 3) obj.globalFeatureIds = IntsReader.read(pbf, pbf.readVarint() + pbf.pos);else if (tag === 4) obj.featureIds = IntsReader.read(pbf, pbf.readVarint() + pbf.pos);else if (tag === 5) obj.primitivePolygonIndices = IntsReader.read(pbf, pbf.readVarint() + pbf.pos);else if (tag === 6) obj.triangles = IntsReader.read(pbf, pbf.readVarint() + pbf.pos);else if (tag === 7) obj.properties.push(PropertiesReader.read(pbf, pbf.readVarint() + pbf.pos));else if (tag === 8) {
48278
+ const entry = NumericPropKeyValueReader.read(pbf, pbf.readVarint() + pbf.pos);
48279
+ obj.numericProps[entry.key] = entry.value;
48280
+ }
48281
+ }
48157
48282
 
48158
- const Points = {};
48283
+ } // Tile ========================================
48159
48284
 
48160
- Points.read = function (pbf, end) {
48161
- return pbf.readFields(Points._readField, {
48162
- positions: null,
48163
- globalFeatureIds: null,
48164
- featureIds: null,
48165
- properties: [],
48166
- numericProps: {}
48167
- }, end);
48168
- };
48169
48285
 
48170
- Points._readField = function (tag, obj, pbf) {
48171
- if (tag === 1) obj.positions = Doubles.read(pbf, pbf.readVarint() + pbf.pos);else if (tag === 2) obj.globalFeatureIds = Ints.read(pbf, pbf.readVarint() + pbf.pos);else if (tag === 3) obj.featureIds = Ints.read(pbf, pbf.readVarint() + pbf.pos);else if (tag === 4) obj.properties.push(Properties.read(pbf, pbf.readVarint() + pbf.pos));else if (tag === 5) {
48172
- const entry = NumericPropKeyValue.read(pbf, pbf.readVarint() + pbf.pos);
48173
- obj.numericProps[entry.key] = entry.value;
48286
+ class TileReader {
48287
+ static read(pbf, end) {
48288
+ return pbf.readFields(TileReader._readField, {
48289
+ points: null,
48290
+ lines: null,
48291
+ polygons: null
48292
+ }, end);
48174
48293
  }
48175
- }; // Lines ========================================
48176
48294
 
48295
+ static _readField(tag, obj, pbf) {
48296
+ if (tag === 1) obj.points = PointsReader.read(pbf, pbf.readVarint() + pbf.pos);else if (tag === 2) obj.lines = LinesReader.read(pbf, pbf.readVarint() + pbf.pos);else if (tag === 3) obj.polygons = PolygonsReader.read(pbf, pbf.readVarint() + pbf.pos);
48297
+ }
48177
48298
 
48178
- const Lines = {};
48299
+ }
48179
48300
 
48180
- Lines.read = function (pbf, end) {
48181
- return pbf.readFields(Lines._readField, {
48182
- positions: null,
48183
- pathIndices: null,
48184
- globalFeatureIds: null,
48185
- featureIds: null,
48186
- properties: [],
48187
- numericProps: {}
48188
- }, end);
48189
- };
48301
+ /***/ }),
48190
48302
 
48191
- Lines._readField = function (tag, obj, pbf) {
48192
- if (tag === 1) obj.positions = Doubles.read(pbf, pbf.readVarint() + pbf.pos);else if (tag === 2) obj.pathIndices = Ints.read(pbf, pbf.readVarint() + pbf.pos);else if (tag === 3) obj.globalFeatureIds = Ints.read(pbf, pbf.readVarint() + pbf.pos);else if (tag === 4) obj.featureIds = Ints.read(pbf, pbf.readVarint() + pbf.pos);else if (tag === 5) obj.properties.push(Properties.read(pbf, pbf.readVarint() + pbf.pos));else if (tag === 6) {
48193
- const entry = NumericPropKeyValue.read(pbf, pbf.readVarint() + pbf.pos);
48194
- obj.numericProps[entry.key] = entry.value;
48195
- }
48196
- }; // Polygons ========================================
48303
+ /***/ "./src/layers/spatial-index-tile-layer.ts":
48304
+ /*!************************************************!*\
48305
+ !*** ./src/layers/spatial-index-tile-layer.ts ***!
48306
+ \************************************************/
48307
+ /*! exports provided: default */
48308
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
48197
48309
 
48310
+ "use strict";
48311
+ __webpack_require__.r(__webpack_exports__);
48312
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return SpatialIndexTileLayer; });
48313
+ /* harmony import */ var _deck_gl_geo_layers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @deck.gl/geo-layers */ "@deck.gl/core");
48314
+ /* harmony import */ var _deck_gl_geo_layers__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_deck_gl_geo_layers__WEBPACK_IMPORTED_MODULE_0__);
48198
48315
 
48199
- const Polygons = {};
48200
48316
 
48201
- Polygons.read = function (pbf, end) {
48202
- return pbf.readFields(Polygons._readField, {
48203
- positions: null,
48204
- polygonIndices: null,
48205
- globalFeatureIds: null,
48206
- featureIds: null,
48207
- primitivePolygonIndices: null,
48208
- triangles: null,
48209
- properties: [],
48210
- numericProps: {}
48211
- }, end);
48212
- };
48317
+ function isFeatureIdDefined(value) {
48318
+ return value !== undefined && value !== null && value !== '';
48319
+ }
48213
48320
 
48214
- Polygons._readField = function (tag, obj, pbf) {
48215
- if (tag === 1) obj.positions = Doubles.read(pbf, pbf.readVarint() + pbf.pos);else if (tag === 2) obj.polygonIndices = Ints.read(pbf, pbf.readVarint() + pbf.pos);else if (tag === 3) obj.globalFeatureIds = Ints.read(pbf, pbf.readVarint() + pbf.pos);else if (tag === 4) obj.featureIds = Ints.read(pbf, pbf.readVarint() + pbf.pos);else if (tag === 5) obj.primitivePolygonIndices = Ints.read(pbf, pbf.readVarint() + pbf.pos);else if (tag === 6) obj.triangles = Ints.read(pbf, pbf.readVarint() + pbf.pos);else if (tag === 7) obj.properties.push(Properties.read(pbf, pbf.readVarint() + pbf.pos));else if (tag === 8) {
48216
- const entry = NumericPropKeyValue.read(pbf, pbf.readVarint() + pbf.pos);
48217
- obj.numericProps[entry.key] = entry.value;
48321
+ class SpatialIndexTileLayer extends _deck_gl_geo_layers__WEBPACK_IMPORTED_MODULE_0__["TileLayer"] {
48322
+ _updateAutoHighlight(info) {
48323
+ const {
48324
+ hoveredFeatureId
48325
+ } = this.state;
48326
+ const hoveredFeature = info.object;
48327
+ let newHoveredFeatureId;
48328
+
48329
+ if (hoveredFeature) {
48330
+ newHoveredFeatureId = hoveredFeature.id;
48331
+ }
48332
+
48333
+ if (hoveredFeatureId !== newHoveredFeatureId) {
48334
+ let {
48335
+ highlightColor
48336
+ } = this.props;
48337
+
48338
+ if (typeof highlightColor === 'function') {
48339
+ highlightColor = highlightColor(info);
48340
+ }
48341
+
48342
+ this.setState({
48343
+ highlightColor,
48344
+ hoveredFeatureId: newHoveredFeatureId
48345
+ });
48346
+ }
48218
48347
  }
48219
- }; // Tile ========================================
48220
48348
 
48349
+ getSubLayerPropsByTile(tile) {
48350
+ return {
48351
+ highlightedObjectIndex: this.getHighlightedObjectIndex(tile),
48352
+ highlightColor: this.state.highlightColor
48353
+ };
48354
+ }
48221
48355
 
48222
- const Tile = {};
48356
+ getHighlightedObjectIndex(tile) {
48357
+ const {
48358
+ hoveredFeatureId
48359
+ } = this.state;
48360
+ const data = tile.content;
48361
+ const isFeatureIdPresent = isFeatureIdDefined(hoveredFeatureId);
48223
48362
 
48224
- Tile.read = function (pbf, end) {
48225
- return pbf.readFields(Tile._readField, {
48226
- points: null,
48227
- lines: null,
48228
- polygons: null
48229
- }, end);
48230
- };
48363
+ if (!isFeatureIdPresent || !Array.isArray(data)) {
48364
+ return -1;
48365
+ }
48231
48366
 
48232
- Tile._readField = function (tag, obj, pbf) {
48233
- if (tag === 1) obj.points = Points.read(pbf, pbf.readVarint() + pbf.pos);else if (tag === 2) obj.lines = Lines.read(pbf, pbf.readVarint() + pbf.pos);else if (tag === 3) obj.polygons = Polygons.read(pbf, pbf.readVarint() + pbf.pos);
48234
- };
48367
+ return data.findIndex(feature => feature.id === hoveredFeatureId);
48368
+ }
48369
+
48370
+ }
48235
48371
 
48236
48372
  /***/ }),
48237
48373