@deck.gl/carto 8.8.0-alpha.5 → 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 (84) hide show
  1. package/dist/dist.dev.js +88 -48
  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.map +1 -1
  5. package/dist/es5/layers/carto-tile-layer.js.map +1 -1
  6. package/dist/es5/layers/h3-tile-layer.js +20 -10
  7. package/dist/es5/layers/h3-tile-layer.js.map +1 -1
  8. package/dist/es5/layers/h3-tileset-2d.js +1 -1
  9. package/dist/es5/layers/h3-tileset-2d.js.map +1 -1
  10. package/dist/es5/layers/quadkey-tile-layer.js +23 -12
  11. package/dist/es5/layers/quadkey-tile-layer.js.map +1 -1
  12. package/dist/es5/layers/quadkey-tileset-2d.js.map +1 -1
  13. package/dist/es5/layers/spatial-index-tile-layer.js.map +1 -1
  14. package/dist/esm/api/layer-map.js +8 -6
  15. package/dist/esm/api/layer-map.js.map +1 -1
  16. package/dist/esm/layers/carto-layer.js.map +1 -1
  17. package/dist/esm/layers/carto-tile-layer.js.map +1 -1
  18. package/dist/esm/layers/h3-tile-layer.js +12 -6
  19. package/dist/esm/layers/h3-tile-layer.js.map +1 -1
  20. package/dist/esm/layers/h3-tileset-2d.js +1 -1
  21. package/dist/esm/layers/h3-tileset-2d.js.map +1 -1
  22. package/dist/esm/layers/quadkey-tile-layer.js +15 -8
  23. package/dist/esm/layers/quadkey-tile-layer.js.map +1 -1
  24. package/dist/esm/layers/quadkey-tileset-2d.js.map +1 -1
  25. package/dist/esm/layers/spatial-index-tile-layer.js.map +1 -1
  26. package/dist.min.js +3 -3
  27. package/package.json +4 -3
  28. package/src/api/layer-map.ts +16 -7
  29. package/src/layers/carto-layer.ts +11 -4
  30. package/src/layers/carto-tile-layer.ts +2 -2
  31. package/src/layers/h3-tile-layer.ts +78 -0
  32. package/src/layers/{h3-tileset-2d.js → h3-tileset-2d.ts} +20 -10
  33. package/src/layers/quadkey-tile-layer.ts +68 -0
  34. package/src/layers/{quadkey-tileset-2d.js → quadkey-tileset-2d.ts} +10 -5
  35. package/src/layers/{spatial-index-tile-layer.js → spatial-index-tile-layer.ts} +7 -6
  36. package/typed/api/index.d.ts +4 -0
  37. package/typed/api/index.d.ts.map +1 -0
  38. package/typed/api/layer-map.d.ts +54 -0
  39. package/typed/api/layer-map.d.ts.map +1 -0
  40. package/typed/api/maps-api-common.d.ts +65 -0
  41. package/typed/api/maps-api-common.d.ts.map +1 -0
  42. package/typed/api/maps-client.d.ts +18 -0
  43. package/typed/api/maps-client.d.ts.map +1 -0
  44. package/typed/api/maps-v3-client.d.ts +45 -0
  45. package/typed/api/maps-v3-client.d.ts.map +1 -0
  46. package/typed/api/parseMap.d.ts +11 -0
  47. package/typed/api/parseMap.d.ts.map +1 -0
  48. package/typed/basemap.d.ts +10 -0
  49. package/typed/basemap.d.ts.map +1 -0
  50. package/typed/config.d.ts +26 -0
  51. package/typed/config.d.ts.map +1 -0
  52. package/typed/index.d.ts +12 -0
  53. package/typed/index.d.ts.map +1 -0
  54. package/typed/layers/carto-layer.d.ts +98 -0
  55. package/typed/layers/carto-layer.d.ts.map +1 -0
  56. package/typed/layers/carto-tile-layer.d.ts +63 -0
  57. package/typed/layers/carto-tile-layer.d.ts.map +1 -0
  58. package/typed/layers/h3-tile-layer.d.ts +23 -0
  59. package/typed/layers/h3-tile-layer.d.ts.map +1 -0
  60. package/typed/layers/h3-tileset-2d.d.ts +18 -0
  61. package/typed/layers/h3-tileset-2d.d.ts.map +1 -0
  62. package/typed/layers/quadkey-tile-layer.d.ts +23 -0
  63. package/typed/layers/quadkey-tile-layer.d.ts.map +1 -0
  64. package/typed/layers/quadkey-tileset-2d.d.ts +15 -0
  65. package/typed/layers/quadkey-tileset-2d.d.ts.map +1 -0
  66. package/typed/layers/schema/carto-tile.d.ts +44 -0
  67. package/typed/layers/schema/carto-tile.d.ts.map +1 -0
  68. package/typed/layers/spatial-index-tile-layer.d.ts +11 -0
  69. package/typed/layers/spatial-index-tile-layer.d.ts.map +1 -0
  70. package/typed/package.json +6 -0
  71. package/typed/style/color-bins-style.d.ts +9 -0
  72. package/typed/style/color-bins-style.d.ts.map +1 -0
  73. package/typed/style/color-categories-style.d.ts +10 -0
  74. package/typed/style/color-categories-style.d.ts.map +1 -0
  75. package/typed/style/color-continuous-style.d.ts +9 -0
  76. package/typed/style/color-continuous-style.d.ts.map +1 -0
  77. package/typed/style/palette.d.ts +7 -0
  78. package/typed/style/palette.d.ts.map +1 -0
  79. package/typed/style/utils.d.ts +8 -0
  80. package/typed/style/utils.d.ts.map +1 -0
  81. package/typed/utils.d.ts +2 -0
  82. package/typed/utils.d.ts.map +1 -0
  83. package/src/layers/h3-tile-layer.js +0 -52
  84. package/src/layers/quadkey-tile-layer.js +0 -47
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
  });
@@ -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) {
@@ -47200,10 +47207,10 @@ __webpack_require__.r(__webpack_exports__);
47200
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");
@@ -47263,8 +47270,8 @@ __webpack_require__.r(__webpack_exports__);
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
47272
  /* harmony import */ var _carto_tile_layer__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./carto-tile-layer */ "./src/layers/carto-tile-layer.ts");
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");
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");
@@ -47326,6 +47333,8 @@ const defaultProps = {
47326
47333
  // (Number, optional): aggregration resolution level. Only used for spatial index datasets, defaults to 6 for quadkeys, 4 for h3
47327
47334
  aggregationResLevel: null
47328
47335
  };
47336
+ /** All properties supported by CartoLayer. */
47337
+
47329
47338
  class CartoLayer extends _deck_gl_core__WEBPACK_IMPORTED_MODULE_0__["CompositeLayer"] {
47330
47339
  initializeState() {
47331
47340
  this.state = {
@@ -47463,7 +47472,8 @@ class CartoLayer extends _deck_gl_core__WEBPACK_IMPORTED_MODULE_0__["CompositeLa
47463
47472
  const {
47464
47473
  data: _notUsed,
47465
47474
  ...propsNoData
47466
- } = this.props;
47475
+ } = this.props; // @ts-expect-error 'uniqueIdProperty' is specified more than once, so this usage will be overwritten.
47476
+
47467
47477
  const props = {
47468
47478
  uniqueIdProperty,
47469
47479
  ...propsNoData
@@ -47690,9 +47700,9 @@ _defineProperty(CartoTileLayer, "defaultProps", defaultProps);
47690
47700
 
47691
47701
  /***/ }),
47692
47702
 
47693
- /***/ "./src/layers/h3-tile-layer.js":
47703
+ /***/ "./src/layers/h3-tile-layer.ts":
47694
47704
  /*!*************************************!*\
47695
- !*** ./src/layers/h3-tile-layer.js ***!
47705
+ !*** ./src/layers/h3-tile-layer.ts ***!
47696
47706
  \*************************************/
47697
47707
  /*! exports provided: default */
47698
47708
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
@@ -47702,8 +47712,10 @@ __webpack_require__.r(__webpack_exports__);
47702
47712
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return H3TileLayer; });
47703
47713
  /* harmony import */ var _deck_gl_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @deck.gl/core */ "@deck.gl/core");
47704
47714
  /* harmony import */ var _deck_gl_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_deck_gl_core__WEBPACK_IMPORTED_MODULE_0__);
47705
- /* harmony import */ var _h3_tileset_2d__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./h3-tileset-2d */ "./src/layers/h3-tileset-2d.js");
47706
- /* harmony import */ var _spatial_index_tile_layer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./spatial-index-tile-layer */ "./src/layers/spatial-index-tile-layer.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
+
47707
47719
 
47708
47720
 
47709
47721
 
@@ -47718,6 +47730,7 @@ const renderSubLayers = props => {
47718
47730
  } = props.tile;
47719
47731
  if (!data || !data.length) return null;
47720
47732
  return new _deck_gl_core__WEBPACK_IMPORTED_MODULE_0__["H3HexagonLayer"](props, {
47733
+ getHexagon: d => d.id,
47721
47734
  centerHexagon: index,
47722
47735
  highPrecision: true
47723
47736
  });
@@ -47726,7 +47739,15 @@ const renderSubLayers = props => {
47726
47739
  const defaultProps = {
47727
47740
  aggregationResLevel: 4
47728
47741
  };
47742
+ /** All properties supported by H3TileLayer. */
47743
+
47729
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
+
47730
47751
  initializeState() {
47731
47752
  this.setState({
47732
47753
  data: null,
@@ -47735,9 +47756,6 @@ class H3TileLayer extends _deck_gl_core__WEBPACK_IMPORTED_MODULE_0__["CompositeL
47735
47756
  }
47736
47757
 
47737
47758
  updateState({
47738
- props,
47739
- oldProps,
47740
- context,
47741
47759
  changeFlags
47742
47760
  }) {
47743
47761
  if (changeFlags.dataChanged) {
@@ -47762,7 +47780,7 @@ class H3TileLayer extends _deck_gl_core__WEBPACK_IMPORTED_MODULE_0__["CompositeL
47762
47780
  return [new _spatial_index_tile_layer__WEBPACK_IMPORTED_MODULE_2__["default"](this.props, {
47763
47781
  id: `h3-tile-layer-${this.props.id}`,
47764
47782
  data,
47765
- getHexagon: d => d.id,
47783
+ // @ts-expect-error Tileset2D should be generic over TileIndex
47766
47784
  TilesetClass: _h3_tileset_2d__WEBPACK_IMPORTED_MODULE_1__["default"],
47767
47785
  renderSubLayers,
47768
47786
  maxZoom
@@ -47770,14 +47788,16 @@ class H3TileLayer extends _deck_gl_core__WEBPACK_IMPORTED_MODULE_0__["CompositeL
47770
47788
  }
47771
47789
 
47772
47790
  }
47773
- H3TileLayer.layerName = 'H3TileLayer';
47774
- H3TileLayer.defaultProps = defaultProps;
47791
+
47792
+ _defineProperty(H3TileLayer, "layerName", 'H3TileLayer');
47793
+
47794
+ _defineProperty(H3TileLayer, "defaultProps", defaultProps);
47775
47795
 
47776
47796
  /***/ }),
47777
47797
 
47778
- /***/ "./src/layers/h3-tileset-2d.js":
47798
+ /***/ "./src/layers/h3-tileset-2d.ts":
47779
47799
  /*!*************************************!*\
47780
- !*** ./src/layers/h3-tileset-2d.js ***!
47800
+ !*** ./src/layers/h3-tileset-2d.ts ***!
47781
47801
  \*************************************/
47782
47802
  /*! exports provided: default */
47783
47803
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
@@ -47855,6 +47875,7 @@ function getHexagonResolution(viewport) {
47855
47875
  }
47856
47876
 
47857
47877
  class H3Tileset2D extends _deck_gl_geo_layers__WEBPACK_IMPORTED_MODULE_0__["_Tileset2D"] {
47878
+ // @ts-expect-error Tileset2D should be generic over TileIndex
47858
47879
  getTileIndices({
47859
47880
  viewport,
47860
47881
  minZoom,
@@ -47862,7 +47883,7 @@ class H3Tileset2D extends _deck_gl_geo_layers__WEBPACK_IMPORTED_MODULE_0__["_Til
47862
47883
  }) {
47863
47884
  const [east, south, west, north] = viewport.getBounds();
47864
47885
  let z = getHexagonResolution(viewport);
47865
- let indices = [];
47886
+ let indices;
47866
47887
 
47867
47888
  if (typeof minZoom === 'number' && Number.isFinite(minZoom) && z < minZoom) {
47868
47889
  z = minZoom;
@@ -47886,13 +47907,15 @@ class H3Tileset2D extends _deck_gl_geo_layers__WEBPACK_IMPORTED_MODULE_0__["_Til
47886
47907
  return indices.map(i => ({
47887
47908
  i
47888
47909
  }));
47889
- }
47910
+ } // @ts-expect-error Tileset2D should be generic over TileIndex
47911
+
47890
47912
 
47891
47913
  getTileId({
47892
47914
  i
47893
47915
  }) {
47894
47916
  return i;
47895
- }
47917
+ } // @ts-expect-error Tileset2D should be generic over TileIndex
47918
+
47896
47919
 
47897
47920
  getTileMetadata({
47898
47921
  i
@@ -47900,13 +47923,15 @@ class H3Tileset2D extends _deck_gl_geo_layers__WEBPACK_IMPORTED_MODULE_0__["_Til
47900
47923
  return {
47901
47924
  bbox: tileToBoundingBox(i)
47902
47925
  };
47903
- }
47926
+ } // @ts-expect-error Tileset2D should be generic over TileIndex
47927
+
47904
47928
 
47905
47929
  getTileZoom({
47906
47930
  i
47907
47931
  }) {
47908
47932
  return Object(h3_js__WEBPACK_IMPORTED_MODULE_1__["h3GetResolution"])(i);
47909
- }
47933
+ } // @ts-expect-error Tileset2D should be generic over TileIndex
47934
+
47910
47935
 
47911
47936
  getParentIndex(index) {
47912
47937
  const resolution = Object(h3_js__WEBPACK_IMPORTED_MODULE_1__["h3GetResolution"])(index.i);
@@ -47920,9 +47945,9 @@ class H3Tileset2D extends _deck_gl_geo_layers__WEBPACK_IMPORTED_MODULE_0__["_Til
47920
47945
 
47921
47946
  /***/ }),
47922
47947
 
47923
- /***/ "./src/layers/quadkey-tile-layer.js":
47948
+ /***/ "./src/layers/quadkey-tile-layer.ts":
47924
47949
  /*!******************************************!*\
47925
- !*** ./src/layers/quadkey-tile-layer.js ***!
47950
+ !*** ./src/layers/quadkey-tile-layer.ts ***!
47926
47951
  \******************************************/
47927
47952
  /*! exports provided: default */
47928
47953
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
@@ -47932,8 +47957,10 @@ __webpack_require__.r(__webpack_exports__);
47932
47957
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return QuadkeyTileLayer; });
47933
47958
  /* harmony import */ var _deck_gl_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @deck.gl/core */ "@deck.gl/core");
47934
47959
  /* harmony import */ var _deck_gl_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_deck_gl_core__WEBPACK_IMPORTED_MODULE_0__);
47935
- /* harmony import */ var _quadkey_tileset_2d__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./quadkey-tileset-2d */ "./src/layers/quadkey-tileset-2d.js");
47936
- /* harmony import */ var _spatial_index_tile_layer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./spatial-index-tile-layer */ "./src/layers/spatial-index-tile-layer.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
+
47937
47964
 
47938
47965
 
47939
47966
 
@@ -47944,13 +47971,23 @@ const renderSubLayers = props => {
47944
47971
  data
47945
47972
  } = props;
47946
47973
  if (!data || !data.length) return null;
47947
- 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
+ });
47948
47977
  };
47949
47978
 
47950
47979
  const defaultProps = {
47951
47980
  aggregationResLevel: 6
47952
47981
  };
47982
+ /** All properties supported by QuadkeyTileLayer. */
47983
+
47953
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
+
47954
47991
  initializeState() {
47955
47992
  this.setState({
47956
47993
  data: null,
@@ -47959,9 +47996,6 @@ class QuadkeyTileLayer extends _deck_gl_core__WEBPACK_IMPORTED_MODULE_0__["Compo
47959
47996
  }
47960
47997
 
47961
47998
  updateState({
47962
- props,
47963
- oldProps,
47964
- context,
47965
47999
  changeFlags
47966
48000
  }) {
47967
48001
  if (changeFlags.dataChanged) {
@@ -47982,11 +48016,11 @@ class QuadkeyTileLayer extends _deck_gl_core__WEBPACK_IMPORTED_MODULE_0__["Compo
47982
48016
  data,
47983
48017
  tileJSON
47984
48018
  } = this.state;
47985
- const maxZoom = parseInt(tileJSON.maxresolution);
48019
+ const maxZoom = parseInt(tileJSON?.maxresolution);
47986
48020
  return [new _spatial_index_tile_layer__WEBPACK_IMPORTED_MODULE_2__["default"](this.props, {
47987
48021
  id: `quadkey-tile-layer-${this.props.id}`,
47988
48022
  data,
47989
- getQuadkey: d => d.id,
48023
+ // TODO: Tileset2D should be generic over TileIndex type
47990
48024
  TilesetClass: _quadkey_tileset_2d__WEBPACK_IMPORTED_MODULE_1__["default"],
47991
48025
  renderSubLayers,
47992
48026
  maxZoom
@@ -47994,14 +48028,16 @@ class QuadkeyTileLayer extends _deck_gl_core__WEBPACK_IMPORTED_MODULE_0__["Compo
47994
48028
  }
47995
48029
 
47996
48030
  }
47997
- QuadkeyTileLayer.layerName = 'QuadkeyTileLayer';
47998
- QuadkeyTileLayer.defaultProps = defaultProps;
48031
+
48032
+ _defineProperty(QuadkeyTileLayer, "layerName", 'QuadkeyTileLayer');
48033
+
48034
+ _defineProperty(QuadkeyTileLayer, "defaultProps", defaultProps);
47999
48035
 
48000
48036
  /***/ }),
48001
48037
 
48002
- /***/ "./src/layers/quadkey-tileset-2d.js":
48038
+ /***/ "./src/layers/quadkey-tileset-2d.ts":
48003
48039
  /*!******************************************!*\
48004
- !*** ./src/layers/quadkey-tileset-2d.js ***!
48040
+ !*** ./src/layers/quadkey-tileset-2d.ts ***!
48005
48041
  \******************************************/
48006
48042
  /*! exports provided: default */
48007
48043
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
@@ -48030,9 +48066,11 @@ function tileToQuadkey(tile) {
48030
48066
  }
48031
48067
 
48032
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
48033
48070
  getTileIndices(opts) {
48034
48071
  return super.getTileIndices(opts).map(tileToQuadkey);
48035
- }
48072
+ } // @ts-expect-error TileIndex must be generic
48073
+
48036
48074
 
48037
48075
  getTileId({
48038
48076
  i
@@ -48042,13 +48080,15 @@ class QuadkeyTileset2D extends _deck_gl_geo_layers__WEBPACK_IMPORTED_MODULE_0__[
48042
48080
 
48043
48081
  getTileMetadata() {
48044
48082
  return {};
48045
- }
48083
+ } // @ts-expect-error TileIndex must be generic
48084
+
48046
48085
 
48047
48086
  getTileZoom({
48048
48087
  i
48049
48088
  }) {
48050
48089
  return i.length;
48051
- }
48090
+ } // @ts-expect-error TileIndex must be generic
48091
+
48052
48092
 
48053
48093
  getParentIndex(index) {
48054
48094
  const i = index.i.slice(0, -1);
@@ -48260,9 +48300,9 @@ class TileReader {
48260
48300
 
48261
48301
  /***/ }),
48262
48302
 
48263
- /***/ "./src/layers/spatial-index-tile-layer.js":
48303
+ /***/ "./src/layers/spatial-index-tile-layer.ts":
48264
48304
  /*!************************************************!*\
48265
- !*** ./src/layers/spatial-index-tile-layer.js ***!
48305
+ !*** ./src/layers/spatial-index-tile-layer.ts ***!
48266
48306
  \************************************************/
48267
48307
  /*! exports provided: default */
48268
48308
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
@@ -161,7 +161,7 @@ function getLayer(type, config, dataset) {
161
161
  };
162
162
 
163
163
  var hexagonId = (_config$columns = config.columns) === null || _config$columns === void 0 ? void 0 : _config$columns.hex_id;
164
- var layer = {
164
+ var layerTypeDefs = {
165
165
  point: {
166
166
  Layer: _layers.GeoJsonLayer,
167
167
  propMap: {
@@ -228,11 +228,13 @@ function getLayer(type, config, dataset) {
228
228
  stroked: false
229
229
  }
230
230
  }
231
- }[type];
231
+ };
232
+ var layer = layerTypeDefs[type];
232
233
  (0, _utils.assert)(layer, "Unsupported layer type: ".concat(type));
233
- layer.propMap = mergePropMaps(sharedPropMap, layer.propMap);
234
- layer.defaultProps = _objectSpread(_objectSpread({}, defaultProps), layer.defaultProps);
235
- return layer;
234
+ return _objectSpread(_objectSpread({}, layer), {}, {
235
+ propMap: mergePropMaps(sharedPropMap, layer.propMap),
236
+ defaultProps: _objectSpread(_objectSpread({}, defaultProps), layer.defaultProps)
237
+ });
236
238
  }
237
239
 
238
240
  function getTileLayer(dataset) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/api/layer-map.ts"],"names":["SCALE_FUNCS","linear","scaleLinear","ordinal","scaleOrdinal","log","scaleLog","point","scalePoint","quantile","scaleQuantile","quantize","scaleQuantize","sqrt","scaleSqrt","custom","scaleThreshold","UNKNOWN_COLOR","AGGREGATION","average","maximum","minimum","sum","OPACITY_MAP","getFillColor","getLineColor","getTextColor","AGGREGATION_FUNC","values","accessor","v","length","median","mode","pop","stddev","deviation","variance","hexToRGBA","c","r","g","b","opacity","sharedPropMap","color","isVisible","label","textLabel","alignment","anchor","size","visConfig","enable3d","elevationScale","filled","strokeColor","stroked","thickness","radius","wireframe","aggregationVisConfig","colorAggregation","x","colorRange","colors","map","coverage","elevationPercentile","percentile","defaultProps","lineMiterLimit","lineWidthUnits","pointRadiusUnits","rounded","wrapLongitude","mergePropMaps","a","getLayer","type","config","dataset","getTileLayer","geoColumn","getPosition","d","coordinates","hexagonId","columns","hex_id","layer","Layer","GeoJsonLayer","propMap","outline","geojson","grid","CPUGridLayer","worldUnitSize","cellSize","heatmap","HeatmapLayer","hexagon","HexagonLayer","H3HexagonLayer","getHexagon","data","tiles","tileUrl","formatTiles","URL","searchParams","get","TILE_FORMATS","MVT","MVTLayer","CartoTileLayer","uniqueIdProperty","domainFromAttribute","attribute","scaleType","categories","category","filter","undefined","min","max","domainFromValues","sort","d0","d1","calculateDomain","name","tilestats","attributes","layers","find","features","properties","Array","isArray","normalizeAccessor","opacityToAlpha","Math","round","pow","getColorValueAccessor","aggregator","p","getColorAccessor","colorMap","scale","domain","scaleColor","forEach","value","push","slice","range","unknown","alpha","propertyValue","getSizeAccessor","FORMATS","date","s","moment","utc","format","integer","float","timestamp","default","String","getTextAccessor","getTextPixelOffsetAccessor","padding","signX","signY","sizeOffset","calculateOffset"],"mappings":"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","sourcesContent":["import {deviation, extent, groupSort, median, variance} from 'd3-array';\nimport {rgb} from 'd3-color';\nimport {\n scaleLinear,\n scaleOrdinal,\n scaleLog,\n scalePoint,\n scaleQuantile,\n scaleQuantize,\n scaleSqrt,\n scaleThreshold\n} from 'd3-scale';\nimport {format as d3Format} from 'd3-format';\nimport moment from 'moment-timezone';\n\nimport {CPUGridLayer, HeatmapLayer, HexagonLayer} from '@deck.gl/aggregation-layers';\nimport {GeoJsonLayer} from '@deck.gl/layers';\nimport {H3HexagonLayer, MVTLayer} from '@deck.gl/geo-layers';\n\nimport CartoTileLayer from '../layers/carto-tile-layer';\nimport {TILE_FORMATS} from './maps-api-common';\nimport {assert} from '../utils';\n\nconst SCALE_FUNCS = {\n linear: scaleLinear,\n ordinal: scaleOrdinal,\n log: scaleLog,\n point: scalePoint,\n quantile: scaleQuantile,\n quantize: scaleQuantize,\n sqrt: scaleSqrt,\n custom: scaleThreshold\n};\nexport type SCALE_TYPE = keyof typeof SCALE_FUNCS;\n\nconst UNKNOWN_COLOR = '#868d91';\n\nexport const AGGREGATION = {\n average: 'MEAN',\n maximum: 'MAX',\n minimum: 'MIN',\n sum: 'SUM'\n};\n\nexport const OPACITY_MAP = {\n getFillColor: 'opacity',\n getLineColor: 'strokeOpacity',\n getTextColor: 'opacity'\n};\n\nconst AGGREGATION_FUNC = {\n 'count unique': (values, accessor) => groupSort(values, v => v.length, accessor).length,\n median,\n // Unfortunately mode() is only available in d3-array@3+ which is ESM only\n mode: (values, accessor) => groupSort(values, v => v.length, accessor).pop(),\n stddev: deviation,\n variance\n};\n\nconst hexToRGBA = c => {\n const {r, g, b, opacity} = rgb(c);\n return [r, g, b, 255 * opacity];\n};\n\n// Kepler -> Deck.gl\nconst sharedPropMap = {\n color: 'getFillColor',\n isVisible: 'visible',\n label: 'cartoLabel',\n textLabel: {\n alignment: 'getTextAlignmentBaseline',\n anchor: 'getTextAnchor',\n color: 'getTextColor',\n size: 'getTextSize'\n },\n visConfig: {\n enable3d: 'extruded',\n elevationScale: 'elevationScale',\n filled: 'filled',\n strokeColor: 'getLineColor',\n stroked: 'stroked',\n thickness: 'getLineWidth',\n radius: 'getPointRadius',\n wireframe: 'wireframe'\n }\n};\n\nconst aggregationVisConfig = {\n colorAggregation: x => ({colorAggregation: AGGREGATION[x] || AGGREGATION.sum}),\n colorRange: x => ({colorRange: x.colors.map(hexToRGBA)}),\n coverage: 'coverage',\n elevationPercentile: ['elevationLowerPercentile', 'elevationUpperPercentile'],\n percentile: ['lowerPercentile', 'upperPercentile']\n};\n\nconst defaultProps = {\n lineMiterLimit: 2,\n lineWidthUnits: 'pixels',\n pointRadiusUnits: 'pixels',\n rounded: true,\n wrapLongitude: false\n};\n\nfunction mergePropMaps(a = {}, b = {}) {\n return {...a, ...b, visConfig: {...a.visConfig, ...b.visConfig}};\n}\n\nexport function getLayer(\n type: string,\n config,\n dataset\n): {Layer: any; propMap: any; defaultProps: any} {\n if (type === 'mvt' || type === 'tileset') {\n return getTileLayer(dataset);\n }\n\n const geoColumn = dataset?.geoColumn;\n const getPosition = d => d[geoColumn].coordinates;\n\n const hexagonId = config.columns?.hex_id;\n const layer = {\n point: {\n Layer: GeoJsonLayer,\n propMap: {visConfig: {outline: 'stroked'}}\n },\n geojson: {\n Layer: GeoJsonLayer\n },\n grid: {\n Layer: CPUGridLayer,\n propMap: {visConfig: {...aggregationVisConfig, worldUnitSize: x => ({cellSize: 1000 * x})}},\n defaultProps: {getPosition}\n },\n heatmap: {\n Layer: HeatmapLayer,\n propMap: {visConfig: {...aggregationVisConfig, radius: 'radiusPixels'}},\n defaultProps: {getPosition}\n },\n hexagon: {\n Layer: HexagonLayer,\n propMap: {visConfig: {...aggregationVisConfig, worldUnitSize: x => ({radius: 1000 * x})}},\n defaultProps: {getPosition}\n },\n hexagonId: {\n Layer: H3HexagonLayer,\n propMap: {visConfig: {coverage: 'coverage'}},\n defaultProps: {getHexagon: d => d[hexagonId], stroked: false}\n }\n }[type];\n\n assert(layer, `Unsupported layer type: ${type}`);\n layer.propMap = mergePropMaps(sharedPropMap, layer.propMap);\n layer.defaultProps = {...defaultProps, ...layer.defaultProps};\n return layer;\n}\n\nfunction getTileLayer(dataset) {\n const {\n data: {\n tiles: [tileUrl]\n }\n } = dataset;\n /* global URL */\n const formatTiles = new URL(tileUrl).searchParams.get('formatTiles') || TILE_FORMATS.MVT;\n\n return {\n Layer: formatTiles === TILE_FORMATS.MVT ? MVTLayer : CartoTileLayer,\n propMap: sharedPropMap,\n defaultProps: {\n ...defaultProps,\n uniqueIdProperty: 'geoid',\n formatTiles\n }\n };\n}\n\nfunction domainFromAttribute(attribute, scaleType: SCALE_TYPE) {\n if (scaleType === 'ordinal' || scaleType === 'point') {\n return attribute.categories.map(c => c.category).filter(c => c !== undefined && c !== null);\n }\n\n let {min} = attribute;\n if (scaleType === 'log' && min === 0) {\n min = 1e-5;\n }\n return [min, attribute.max];\n}\n\nfunction domainFromValues(values, scaleType: SCALE_TYPE) {\n if (scaleType === 'ordinal') {\n return groupSort(\n values,\n g => -g.length,\n d => d\n );\n } else if (scaleType === 'quantile') {\n return values.sort((a, b) => a - b);\n } else if (scaleType === 'log') {\n const [d0, d1] = extent(values as number[]);\n return [d0 === 0 ? 1e-5 : d0, d1];\n }\n return extent(values);\n}\n\nfunction calculateDomain(data, name, scaleType) {\n if (data.tilestats) {\n // Tileset data type\n const {attributes} = data.tilestats.layers[0];\n const attribute = attributes.find(a => a.attribute === name);\n return domainFromAttribute(attribute, scaleType);\n } else if (data.features) {\n // GeoJSON data type\n const values = data.features.map(({properties}) => properties[name]);\n return domainFromValues(values, scaleType);\n } else if (Array.isArray(data) && data[0][name] !== undefined) {\n // JSON data type\n const values = data.map(properties => properties[name]);\n return domainFromValues(values, scaleType);\n }\n\n return [0, 1];\n}\n\nfunction normalizeAccessor(accessor, data) {\n if (data.features || data.tilestats) {\n return ({properties}) => {\n return accessor(properties);\n };\n }\n return accessor;\n}\n\nexport function opacityToAlpha(opacity) {\n return opacity !== undefined ? Math.round(255 * Math.pow(opacity, 1 / 2.2)) : 255;\n}\n\nexport function getColorValueAccessor({name}, colorAggregation, data: any) {\n const aggregator = AGGREGATION_FUNC[colorAggregation];\n const accessor = values => aggregator(values, p => p[name]);\n return normalizeAccessor(accessor, data);\n}\n\nexport function getColorAccessor(\n {name},\n scaleType: SCALE_TYPE,\n {colors, colorMap},\n opacity: number | undefined,\n data: any\n) {\n const scale = SCALE_FUNCS[scaleType as any]();\n let domain: (string | number)[] = [];\n let scaleColor: string[] = [];\n\n if (Array.isArray(colorMap)) {\n colorMap.forEach(([value, color]) => {\n domain.push(value);\n scaleColor.push(color);\n });\n } else {\n domain = calculateDomain(data, name, scaleType);\n scaleColor = colors;\n }\n\n if (scaleType === 'ordinal') {\n domain = domain.slice(0, scaleColor.length);\n }\n\n scale.domain(domain);\n scale.range(scaleColor);\n scale.unknown(UNKNOWN_COLOR);\n const alpha = opacityToAlpha(opacity);\n\n const accessor = properties => {\n const propertyValue = properties[name];\n const {r, g, b} = rgb(scale(propertyValue));\n return [r, g, b, propertyValue === null ? 0 : alpha];\n };\n return normalizeAccessor(accessor, data);\n}\n\nexport function getSizeAccessor({name}, scaleType: SCALE_TYPE, range: Iterable<Range>, data: any) {\n const scale = SCALE_FUNCS[scaleType as any]();\n scale.domain(calculateDomain(data, name, scaleType));\n scale.range(range);\n\n const accessor = properties => {\n return scale(properties[name]);\n };\n return normalizeAccessor(accessor, data);\n}\n\nconst FORMATS: Record<string, (value: any) => string> = {\n date: s => moment.utc(s).format('MM/DD/YY HH:mm:ssa'),\n integer: d3Format('i'),\n float: d3Format('.5f'),\n timestamp: s => moment.utc(s).format('X'),\n default: String\n};\n\nexport function getTextAccessor({name, type}, data) {\n const format = FORMATS[type] || FORMATS.default;\n const accessor = properties => {\n return format(properties[name]);\n };\n return normalizeAccessor(accessor, data);\n}\n\nexport function getTextPixelOffsetAccessor({alignment, anchor, size}, radius) {\n const padding = 20;\n const signX = anchor === 'middle' ? 0 : anchor === 'start' ? 1 : -1;\n const signY = alignment === 'center' ? 0 : alignment === 'bottom' ? 1 : -1;\n const sizeOffset = alignment === 'center' ? 0 : size;\n\n const calculateOffset = r => [signX * (r + padding), signY * (r + padding + sizeOffset)];\n\n return typeof radius === 'function'\n ? d => {\n return calculateOffset(radius(d));\n }\n : calculateOffset(radius);\n}\n\nexport {domainFromValues as _domainFromValues};\n"],"file":"layer-map.js"}
1
+ {"version":3,"sources":["../../../src/api/layer-map.ts"],"names":["SCALE_FUNCS","linear","scaleLinear","ordinal","scaleOrdinal","log","scaleLog","point","scalePoint","quantile","scaleQuantile","quantize","scaleQuantize","sqrt","scaleSqrt","custom","scaleThreshold","UNKNOWN_COLOR","AGGREGATION","average","maximum","minimum","sum","OPACITY_MAP","getFillColor","getLineColor","getTextColor","AGGREGATION_FUNC","values","accessor","v","length","median","mode","pop","stddev","deviation","variance","hexToRGBA","c","r","g","b","opacity","sharedPropMap","color","isVisible","label","textLabel","alignment","anchor","size","visConfig","enable3d","elevationScale","filled","strokeColor","stroked","thickness","radius","wireframe","aggregationVisConfig","colorAggregation","x","colorRange","colors","map","coverage","elevationPercentile","percentile","defaultProps","lineMiterLimit","lineWidthUnits","pointRadiusUnits","rounded","wrapLongitude","mergePropMaps","a","getLayer","type","config","dataset","getTileLayer","geoColumn","getPosition","d","coordinates","hexagonId","columns","hex_id","layerTypeDefs","Layer","GeoJsonLayer","propMap","outline","geojson","grid","CPUGridLayer","worldUnitSize","cellSize","heatmap","HeatmapLayer","hexagon","HexagonLayer","H3HexagonLayer","getHexagon","layer","data","tiles","tileUrl","formatTiles","URL","searchParams","get","TILE_FORMATS","MVT","MVTLayer","CartoTileLayer","uniqueIdProperty","domainFromAttribute","attribute","scaleType","categories","category","filter","undefined","min","max","domainFromValues","sort","d0","d1","calculateDomain","name","tilestats","attributes","layers","find","features","properties","Array","isArray","normalizeAccessor","opacityToAlpha","Math","round","pow","getColorValueAccessor","aggregator","p","getColorAccessor","colorMap","scale","domain","scaleColor","forEach","value","push","slice","range","unknown","alpha","propertyValue","getSizeAccessor","FORMATS","date","s","moment","utc","format","integer","float","timestamp","default","String","getTextAccessor","getTextPixelOffsetAccessor","padding","signX","signY","sizeOffset","calculateOffset"],"mappings":"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","sourcesContent":["import {deviation, extent, groupSort, median, variance} from 'd3-array';\nimport {rgb} from 'd3-color';\nimport {\n scaleLinear,\n scaleOrdinal,\n scaleLog,\n scalePoint,\n scaleQuantile,\n scaleQuantize,\n scaleSqrt,\n scaleThreshold\n} from 'd3-scale';\nimport {format as d3Format} from 'd3-format';\nimport moment from 'moment-timezone';\n\nimport {Layer, _ConstructorOf as ConstructorOf} from '@deck.gl/core';\nimport {CPUGridLayer, HeatmapLayer, HexagonLayer} from '@deck.gl/aggregation-layers';\nimport {GeoJsonLayer} from '@deck.gl/layers';\nimport {H3HexagonLayer, MVTLayer} from '@deck.gl/geo-layers';\n\nimport CartoTileLayer from '../layers/carto-tile-layer';\nimport {TILE_FORMATS} from './maps-api-common';\nimport {assert} from '../utils';\n\nconst SCALE_FUNCS = {\n linear: scaleLinear,\n ordinal: scaleOrdinal,\n log: scaleLog,\n point: scalePoint,\n quantile: scaleQuantile,\n quantize: scaleQuantize,\n sqrt: scaleSqrt,\n custom: scaleThreshold\n};\nexport type SCALE_TYPE = keyof typeof SCALE_FUNCS;\n\nconst UNKNOWN_COLOR = '#868d91';\n\nexport const AGGREGATION = {\n average: 'MEAN',\n maximum: 'MAX',\n minimum: 'MIN',\n sum: 'SUM'\n};\n\nexport const OPACITY_MAP = {\n getFillColor: 'opacity',\n getLineColor: 'strokeOpacity',\n getTextColor: 'opacity'\n};\n\nconst AGGREGATION_FUNC = {\n 'count unique': (values, accessor) => groupSort(values, v => v.length, accessor).length,\n median,\n // Unfortunately mode() is only available in d3-array@3+ which is ESM only\n mode: (values, accessor) => groupSort(values, v => v.length, accessor).pop(),\n stddev: deviation,\n variance\n};\n\nconst hexToRGBA = c => {\n const {r, g, b, opacity} = rgb(c);\n return [r, g, b, 255 * opacity];\n};\n\n// Kepler -> Deck.gl\nconst sharedPropMap = {\n color: 'getFillColor',\n isVisible: 'visible',\n label: 'cartoLabel',\n textLabel: {\n alignment: 'getTextAlignmentBaseline',\n anchor: 'getTextAnchor',\n color: 'getTextColor',\n size: 'getTextSize'\n },\n visConfig: {\n enable3d: 'extruded',\n elevationScale: 'elevationScale',\n filled: 'filled',\n strokeColor: 'getLineColor',\n stroked: 'stroked',\n thickness: 'getLineWidth',\n radius: 'getPointRadius',\n wireframe: 'wireframe'\n }\n};\n\nconst aggregationVisConfig = {\n colorAggregation: x => ({colorAggregation: AGGREGATION[x] || AGGREGATION.sum}),\n colorRange: x => ({colorRange: x.colors.map(hexToRGBA)}),\n coverage: 'coverage',\n elevationPercentile: ['elevationLowerPercentile', 'elevationUpperPercentile'],\n percentile: ['lowerPercentile', 'upperPercentile']\n};\n\nconst defaultProps = {\n lineMiterLimit: 2,\n lineWidthUnits: 'pixels',\n pointRadiusUnits: 'pixels',\n rounded: true,\n wrapLongitude: false\n};\n\nfunction mergePropMaps(a: Record<string, any> = {}, b: Record<string, any> = {}) {\n return {...a, ...b, visConfig: {...a.visConfig, ...b.visConfig}};\n}\n\nexport function getLayer(\n type: string,\n config,\n dataset\n): {Layer: ConstructorOf<Layer>; propMap: any; defaultProps: any} {\n if (type === 'mvt' || type === 'tileset') {\n return getTileLayer(dataset);\n }\n\n const geoColumn = dataset?.geoColumn;\n const getPosition = d => d[geoColumn].coordinates;\n\n const hexagonId = config.columns?.hex_id;\n\n const layerTypeDefs: Record<\n string,\n {Layer: ConstructorOf<Layer>; propMap?: any; defaultProps?: any}\n > = {\n point: {\n Layer: GeoJsonLayer,\n propMap: {visConfig: {outline: 'stroked'}}\n },\n geojson: {\n Layer: GeoJsonLayer\n },\n grid: {\n Layer: CPUGridLayer,\n propMap: {visConfig: {...aggregationVisConfig, worldUnitSize: x => ({cellSize: 1000 * x})}},\n defaultProps: {getPosition}\n },\n heatmap: {\n Layer: HeatmapLayer,\n propMap: {visConfig: {...aggregationVisConfig, radius: 'radiusPixels'}},\n defaultProps: {getPosition}\n },\n hexagon: {\n Layer: HexagonLayer,\n propMap: {visConfig: {...aggregationVisConfig, worldUnitSize: x => ({radius: 1000 * x})}},\n defaultProps: {getPosition}\n },\n hexagonId: {\n Layer: H3HexagonLayer,\n propMap: {visConfig: {coverage: 'coverage'}},\n defaultProps: {getHexagon: d => d[hexagonId], stroked: false}\n }\n };\n\n const layer = layerTypeDefs[type];\n\n assert(layer, `Unsupported layer type: ${type}`);\n return {\n ...layer,\n propMap: mergePropMaps(sharedPropMap, layer.propMap),\n defaultProps: {...defaultProps, ...layer.defaultProps}\n };\n}\n\nfunction getTileLayer(dataset) {\n const {\n data: {\n tiles: [tileUrl]\n }\n } = dataset;\n /* global URL */\n const formatTiles = new URL(tileUrl).searchParams.get('formatTiles') || TILE_FORMATS.MVT;\n\n return {\n Layer: formatTiles === TILE_FORMATS.MVT ? MVTLayer : CartoTileLayer,\n propMap: sharedPropMap,\n defaultProps: {\n ...defaultProps,\n uniqueIdProperty: 'geoid',\n formatTiles\n }\n };\n}\n\nfunction domainFromAttribute(attribute, scaleType: SCALE_TYPE) {\n if (scaleType === 'ordinal' || scaleType === 'point') {\n return attribute.categories.map(c => c.category).filter(c => c !== undefined && c !== null);\n }\n\n let {min} = attribute;\n if (scaleType === 'log' && min === 0) {\n min = 1e-5;\n }\n return [min, attribute.max];\n}\n\nfunction domainFromValues(values, scaleType: SCALE_TYPE) {\n if (scaleType === 'ordinal') {\n return groupSort(\n values,\n g => -g.length,\n d => d\n );\n } else if (scaleType === 'quantile') {\n return values.sort((a, b) => a - b);\n } else if (scaleType === 'log') {\n const [d0, d1] = extent(values as number[]);\n return [d0 === 0 ? 1e-5 : d0, d1];\n }\n return extent(values);\n}\n\nfunction calculateDomain(data, name, scaleType) {\n if (data.tilestats) {\n // Tileset data type\n const {attributes} = data.tilestats.layers[0];\n const attribute = attributes.find(a => a.attribute === name);\n return domainFromAttribute(attribute, scaleType);\n } else if (data.features) {\n // GeoJSON data type\n const values = data.features.map(({properties}) => properties[name]);\n return domainFromValues(values, scaleType);\n } else if (Array.isArray(data) && data[0][name] !== undefined) {\n // JSON data type\n const values = data.map(properties => properties[name]);\n return domainFromValues(values, scaleType);\n }\n\n return [0, 1];\n}\n\nfunction normalizeAccessor(accessor, data) {\n if (data.features || data.tilestats) {\n return ({properties}) => {\n return accessor(properties);\n };\n }\n return accessor;\n}\n\nexport function opacityToAlpha(opacity) {\n return opacity !== undefined ? Math.round(255 * Math.pow(opacity, 1 / 2.2)) : 255;\n}\n\nexport function getColorValueAccessor({name}, colorAggregation, data: any) {\n const aggregator = AGGREGATION_FUNC[colorAggregation];\n const accessor = values => aggregator(values, p => p[name]);\n return normalizeAccessor(accessor, data);\n}\n\nexport function getColorAccessor(\n {name},\n scaleType: SCALE_TYPE,\n {colors, colorMap},\n opacity: number | undefined,\n data: any\n) {\n const scale = SCALE_FUNCS[scaleType as any]();\n let domain: (string | number)[] = [];\n let scaleColor: string[] = [];\n\n if (Array.isArray(colorMap)) {\n colorMap.forEach(([value, color]) => {\n domain.push(value);\n scaleColor.push(color);\n });\n } else {\n domain = calculateDomain(data, name, scaleType);\n scaleColor = colors;\n }\n\n if (scaleType === 'ordinal') {\n domain = domain.slice(0, scaleColor.length);\n }\n\n scale.domain(domain);\n scale.range(scaleColor);\n scale.unknown(UNKNOWN_COLOR);\n const alpha = opacityToAlpha(opacity);\n\n const accessor = properties => {\n const propertyValue = properties[name];\n const {r, g, b} = rgb(scale(propertyValue));\n return [r, g, b, propertyValue === null ? 0 : alpha];\n };\n return normalizeAccessor(accessor, data);\n}\n\nexport function getSizeAccessor({name}, scaleType: SCALE_TYPE, range: Iterable<Range>, data: any) {\n const scale = SCALE_FUNCS[scaleType as any]();\n scale.domain(calculateDomain(data, name, scaleType));\n scale.range(range);\n\n const accessor = properties => {\n return scale(properties[name]);\n };\n return normalizeAccessor(accessor, data);\n}\n\nconst FORMATS: Record<string, (value: any) => string> = {\n date: s => moment.utc(s).format('MM/DD/YY HH:mm:ssa'),\n integer: d3Format('i'),\n float: d3Format('.5f'),\n timestamp: s => moment.utc(s).format('X'),\n default: String\n};\n\nexport function getTextAccessor({name, type}, data) {\n const format = FORMATS[type] || FORMATS.default;\n const accessor = properties => {\n return format(properties[name]);\n };\n return normalizeAccessor(accessor, data);\n}\n\nexport function getTextPixelOffsetAccessor({alignment, anchor, size}, radius) {\n const padding = 20;\n const signX = anchor === 'middle' ? 0 : anchor === 'start' ? 1 : -1;\n const signY = alignment === 'center' ? 0 : alignment === 'bottom' ? 1 : -1;\n const sizeOffset = alignment === 'center' ? 0 : size;\n\n const calculateOffset = r => [signX * (r + padding), signY * (r + padding + sizeOffset)];\n\n return typeof radius === 'function'\n ? d => {\n return calculateOffset(radius(d));\n }\n : calculateOffset(radius);\n}\n\nexport {domainFromValues as _domainFromValues};\n"],"file":"layer-map.js"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/layers/carto-layer.ts"],"names":["defaultProps","data","type","onDataLoad","value","compare","onDataError","optional","uniqueIdProperty","credentials","connection","format","formatTiles","clientId","geoColumn","columns","aggregationExp","aggregationResLevel","CartoLayer","state","apiVersion","getSubLayers","length","props","localCreds","log","assert","Object","values","API_VERSIONS","includes","V1","V2","MAP_TYPES","QUERY","TILESET","V3","COLUMNS_SUPPORT","join","GEO_COLUMN_SUPPORT","Array","isArray","oldProps","changeFlags","_checkProps","shouldUpdateData","dataChanged","JSON","stringify","setState","_updateData","source","rest","localConfig","result","propName","layer","_notUsed","propsNoData","MVTLayer","FORMATS","TILEJSON","tileUrl","URL","tiles","searchParams","get","TILE_FORMATS","MVT","scheme","H3TileLayer","QuadkeyTileLayer","CartoTileLayer","GeoJsonLayer","updateTriggers","_getSubLayerAndProps","getSubLayerProps","id","layerName","CompositeLayer"],"mappings":"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","sourcesContent":["import {CompositeLayer, Layer, log} from '@deck.gl/core';\nimport CartoTileLayer from './carto-tile-layer';\nimport H3TileLayer from './h3-tile-layer';\nimport QuadkeyTileLayer from './quadkey-tile-layer';\nimport {MVTLayer} from '@deck.gl/geo-layers';\nimport {GeoJsonLayer} from '@deck.gl/layers';\nimport {fetchLayerData, getDataV2, API_VERSIONS} from '../api';\nimport {\n COLUMNS_SUPPORT,\n Format,\n FORMATS,\n GEO_COLUMN_SUPPORT,\n MapType,\n MAP_TYPES,\n TileFormat,\n TILE_FORMATS\n} from '../api/maps-api-common';\nimport {\n ClassicCredentials,\n CloudNativeCredentials,\n Credentials,\n getDefaultCredentials\n} from '../config';\nimport {CompositeLayerProps, LayerProps} from 'modules/core/src/types/layer-props';\nimport {ChangeFlags} from 'modules/core/src/lib/layer-state';\nimport {FetchLayerDataResult} from '../api/maps-v3-client';\nimport {assert} from '../utils';\n\nconst defaultProps = {\n // (String, required): data resource to load. table name, sql query or tileset name.\n data: null,\n // (Enum (MAP_TYPES), required)\n type: null,\n onDataLoad: {type: 'function', value: data => {}, compare: false},\n onDataError: {type: 'function', value: null, compare: false, optional: true},\n uniqueIdProperty: 'cartodb_id',\n\n // override carto credentials for the layer, set to null to read from default\n credentials: null,\n\n /*********************/\n /* API v3 PARAMETERS */\n /**********************/\n // (String, required): connection name at CARTO platform\n connection: null,\n\n // (String, optional): format of data\n format: null,\n\n // (String, optional): force format of data for tiles\n formatTiles: null,\n\n // (String, optional): clientId identifier used for internal tracing, place here a string to identify the client who is doing the request.\n clientId: null,\n\n // (String, optional): name of the `geo_column` in the CARTO platform. Use this override the default column ('geom'), from which the geometry information should be fetched.\n geoColumn: null,\n\n // (Array<String>, optional): names of columns to fetch. By default, all columns are fetched.\n columns: {type: 'array', value: null},\n\n // (String, optional): aggregration SQL expression. Only used for spatial index datasets\n aggregationExp: null,\n\n // (Number, optional): aggregration resolution level. Only used for spatial index datasets, defaults to 6 for quadkeys, 4 for h3\n aggregationResLevel: null\n};\n\nexport interface CartoLayerProps<DataT = any> extends CompositeLayerProps<DataT> {\n /**\n * Either a SQL query or a name of dataset/tileset.\n */\n data: string;\n\n /**\n * Data type.\n *\n * Possible values are:\n * * `MAP_TYPES.QUERY`, if data is a SQL query.\n * * `MAP_TYPES.TILESET`, if data is a tileset name.\n * * `MAP_TYPES.TABLE`, if data is a dataset name. Only supported with API v3.\n */\n type: MapType;\n\n /**\n * Name of the connection registered in the CARTO workspace.\n *\n * Required when apiVersion is `API_VERSIONS.V3`.\n */\n connection?: string;\n\n /**\n * Use to override the default data format.\n *\n * Only supported when apiVersion is `API_VERSIONS.V3`.\n *\n * Possible values are: `FORMATS.GEOJSON`, `FORMATS.JSON` and `FORMATS.TILEJSON`.\n */\n format?: Format;\n\n /**\n * Use to override the default tile data format.\n *\n * Only supported when apiVersion is `API_VERSIONS.V3` and format is `FORMATS.TILEJSON`.\n *\n * Possible values are: `TILE_FORMATS.BINARY`, `TILE_FORMATS.GEOJSON` and `TILE_FORMATS.MVT`.\n */\n formatTiles?: TileFormat;\n\n /**\n * Name of the geo_column in the CARTO platform.\n *\n * Use this override the default column (`'geom'`), from which the geometry information should be fetched.\n *\n * Only supported when apiVersion is `API_VERSIONS.V3` and type is `MAP_TYPES.TABLE`.\n */\n geoColumn?: string;\n\n /**\n * Names of columns to fetch.\n *\n * By default, all columns are fetched\n *\n * Only supported when apiVersion is `API_VERSIONS.V3` and type is `MAP_TYPES.TABLE`.\n */\n columns?: string[];\n\n /**\n * A string pointing to a unique attribute at the result of the query.\n *\n * A unique attribute is needed for highlighting with vector tiles when a feature is split across two or more tiles.\n */\n uniqueIdProperty?: string;\n\n /**\n * Optional. Overrides the configuration to connect with CARTO.\n *\n * @see Credentials\n */\n credentials?: Credentials;\n\n /**\n * Called when the request to the CARTO Maps API failed.\n *\n * By default the Error is thrown.\n */\n onDataError?: (err: unknown) => void;\n\n clientId?: string;\n}\n\nexport default class CartoLayer<DataT = any> extends CompositeLayer<CartoLayerProps<DataT>> {\n static layerName = 'CartoLayer';\n static defaultProps = defaultProps as any;\n\n initializeState(): void {\n this.state = {\n data: null,\n apiVersion: null\n };\n }\n\n get isLoaded(): boolean {\n return this.getSubLayers().length > 0 && super.isLoaded;\n }\n\n _checkProps(props: CartoLayerProps): void {\n const {type, credentials, connection, geoColumn, columns} = props;\n const localCreds = {...getDefaultCredentials(), ...credentials};\n const {apiVersion} = localCreds;\n\n log.assert(\n Object.values(API_VERSIONS).includes(apiVersion),\n `Invalid apiVersion ${apiVersion}. Use API_VERSIONS enum.`\n );\n\n if (apiVersion === API_VERSIONS.V1 || apiVersion === API_VERSIONS.V2) {\n log.assert(\n type === MAP_TYPES.QUERY || type === MAP_TYPES.TILESET,\n `Invalid type ${type}. Use type MAP_TYPES.QUERY or MAP_TYPES.TILESET for apiVersion ${apiVersion}`\n );\n log.assert(!connection, `Connection prop is not supported for apiVersion ${apiVersion}`);\n log.assert(!geoColumn, `geoColumn prop is not supported for apiVersion ${apiVersion}`);\n log.assert(!columns, `columns prop is not supported for apiVersion ${apiVersion}`);\n } else if (apiVersion === API_VERSIONS.V3) {\n log.assert(connection, 'Missing mandatory connection parameter');\n log.assert(\n Object.values(MAP_TYPES).includes(type),\n `Invalid type ${type}. Use MAP_TYPES enum.`\n );\n if (!COLUMNS_SUPPORT.includes(type)) {\n log.assert(!columns, `columns prop is only supported for types: ${COLUMNS_SUPPORT.join()}`);\n }\n if (!GEO_COLUMN_SUPPORT.includes(type)) {\n log.assert(\n !geoColumn,\n `geoColumn prop is only supported for types: ${GEO_COLUMN_SUPPORT.join()}`\n );\n }\n if (columns) {\n log.assert(Array.isArray(columns), 'columns prop must be an Array');\n }\n }\n }\n\n updateState({\n props,\n oldProps,\n changeFlags\n }: {\n props: CartoLayerProps;\n oldProps: CartoLayerProps;\n context: any;\n changeFlags: ChangeFlags;\n }): void {\n this._checkProps(props);\n const shouldUpdateData =\n changeFlags.dataChanged ||\n props.connection !== oldProps.connection ||\n props.geoColumn !== oldProps.geoColumn ||\n props.format !== oldProps.format ||\n props.formatTiles !== oldProps.formatTiles ||\n props.type !== oldProps.type ||\n JSON.stringify(props.columns) !== JSON.stringify(oldProps.columns) ||\n JSON.stringify(props.credentials) !== JSON.stringify(oldProps.credentials);\n\n if (shouldUpdateData) {\n this.setState({data: null, apiVersion: null});\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this._updateData();\n }\n }\n\n async _updateData(): Promise<void> {\n try {\n const {type, data: source, clientId, credentials, connection, ...rest} = this.props;\n const localConfig = {...getDefaultCredentials(), ...credentials};\n const {apiVersion} = localConfig;\n\n let result: FetchLayerDataResult;\n if (apiVersion === API_VERSIONS.V1 || apiVersion === API_VERSIONS.V2) {\n result = {\n data: await getDataV2({type, source, credentials: credentials as ClassicCredentials})\n };\n } else {\n result = await fetchLayerData({\n type,\n source,\n clientId,\n credentials: credentials as CloudNativeCredentials,\n connection,\n ...rest\n });\n }\n\n this.setState({...result, apiVersion});\n\n this.props.onDataLoad?.(result.data, {\n propName: 'data',\n layer: this\n });\n } catch (err) {\n if (this.props.onDataError) {\n this.props.onDataError(err as Error);\n } else {\n throw err;\n }\n }\n }\n\n _getSubLayerAndProps(): [any, LayerProps] {\n assert(this.state);\n\n const {data, format, apiVersion} = this.state;\n\n const {uniqueIdProperty} = defaultProps;\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const {data: _notUsed, ...propsNoData} = this.props;\n const props = {uniqueIdProperty, ...propsNoData};\n\n if (apiVersion === API_VERSIONS.V1 || apiVersion === API_VERSIONS.V2) {\n return [MVTLayer, props];\n }\n\n if (format === FORMATS.TILEJSON) {\n /* global URL */\n const tileUrl = new URL(data.tiles[0]);\n\n props.formatTiles =\n props.formatTiles ||\n (tileUrl.searchParams.get('formatTiles') as TileFormat) ||\n TILE_FORMATS.MVT;\n\n if (data.scheme === 'h3') {\n return [H3TileLayer, props];\n }\n if (data.scheme === 'quadkey') {\n return [QuadkeyTileLayer, props];\n }\n return props.formatTiles === TILE_FORMATS.MVT ? [MVTLayer, props] : [CartoTileLayer, props];\n }\n\n // It's a geojson layer\n return [GeoJsonLayer, props];\n }\n\n renderLayers(): Layer | null {\n assert(this.state);\n\n const {data} = this.state;\n\n if (!data) return null;\n\n const {updateTriggers} = this.props;\n\n const [layer, props] = this._getSubLayerAndProps();\n\n // eslint-disable-next-line new-cap\n return new layer(\n props,\n this.getSubLayerProps({\n id: `carto-${layer.layerName}`,\n data,\n updateTriggers\n })\n );\n }\n}\n"],"file":"carto-layer.js"}
1
+ {"version":3,"sources":["../../../src/layers/carto-layer.ts"],"names":["defaultProps","data","type","onDataLoad","value","compare","onDataError","optional","uniqueIdProperty","credentials","connection","format","formatTiles","clientId","geoColumn","columns","aggregationExp","aggregationResLevel","CartoLayer","state","apiVersion","getSubLayers","length","props","localCreds","log","assert","Object","values","API_VERSIONS","includes","V1","V2","MAP_TYPES","QUERY","TILESET","V3","COLUMNS_SUPPORT","join","GEO_COLUMN_SUPPORT","Array","isArray","oldProps","changeFlags","_checkProps","shouldUpdateData","dataChanged","JSON","stringify","setState","_updateData","source","rest","localConfig","result","propName","layer","_notUsed","propsNoData","MVTLayer","FORMATS","TILEJSON","tileUrl","URL","tiles","searchParams","get","TILE_FORMATS","MVT","scheme","H3TileLayer","QuadkeyTileLayer","CartoTileLayer","GeoJsonLayer","updateTriggers","_getSubLayerAndProps","getSubLayerProps","id","layerName","CompositeLayer"],"mappings":"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","sourcesContent":["import {CompositeLayer, Layer, log} from '@deck.gl/core';\nimport CartoTileLayer from './carto-tile-layer';\nimport H3TileLayer from './h3-tile-layer';\nimport QuadkeyTileLayer from './quadkey-tile-layer';\nimport {MVTLayer} from '@deck.gl/geo-layers';\nimport {GeoJsonLayer} from '@deck.gl/layers';\nimport {fetchLayerData, getDataV2, API_VERSIONS} from '../api';\nimport {\n COLUMNS_SUPPORT,\n Format,\n FORMATS,\n GEO_COLUMN_SUPPORT,\n MapType,\n MAP_TYPES,\n TileFormat,\n TILE_FORMATS\n} from '../api/maps-api-common';\nimport {\n ClassicCredentials,\n CloudNativeCredentials,\n Credentials,\n getDefaultCredentials\n} from '../config';\nimport {CompositeLayerProps, LayerProps} from 'modules/core/src/types/layer-props';\nimport {ChangeFlags} from 'modules/core/src/lib/layer-state';\nimport {FetchLayerDataResult} from '../api/maps-v3-client';\nimport {assert} from '../utils';\n\nconst defaultProps = {\n // (String, required): data resource to load. table name, sql query or tileset name.\n data: null,\n // (Enum (MAP_TYPES), required)\n type: null,\n onDataLoad: {type: 'function', value: data => {}, compare: false},\n onDataError: {type: 'function', value: null, compare: false, optional: true},\n uniqueIdProperty: 'cartodb_id',\n\n // override carto credentials for the layer, set to null to read from default\n credentials: null,\n\n /*********************/\n /* API v3 PARAMETERS */\n /**********************/\n // (String, required): connection name at CARTO platform\n connection: null,\n\n // (String, optional): format of data\n format: null,\n\n // (String, optional): force format of data for tiles\n formatTiles: null,\n\n // (String, optional): clientId identifier used for internal tracing, place here a string to identify the client who is doing the request.\n clientId: null,\n\n // (String, optional): name of the `geo_column` in the CARTO platform. Use this override the default column ('geom'), from which the geometry information should be fetched.\n geoColumn: null,\n\n // (Array<String>, optional): names of columns to fetch. By default, all columns are fetched.\n columns: {type: 'array', value: null},\n\n // (String, optional): aggregration SQL expression. Only used for spatial index datasets\n aggregationExp: null,\n\n // (Number, optional): aggregration resolution level. Only used for spatial index datasets, defaults to 6 for quadkeys, 4 for h3\n aggregationResLevel: null\n};\n\n/** All properties supported by CartoLayer. */\nexport type CartoLayerProps<DataT = any> = _CartoLayerProps & CompositeLayerProps<DataT>;\n\n/** Properties added by CartoLayer. */\ntype _CartoLayerProps = {\n /**\n * Either a SQL query or a name of dataset/tileset.\n */\n data: string;\n\n /**\n * Data type.\n *\n * Possible values are:\n * * `MAP_TYPES.QUERY`, if data is a SQL query.\n * * `MAP_TYPES.TILESET`, if data is a tileset name.\n * * `MAP_TYPES.TABLE`, if data is a dataset name. Only supported with API v3.\n */\n type: MapType;\n\n /**\n * Name of the connection registered in the CARTO workspace.\n *\n * Required when apiVersion is `API_VERSIONS.V3`.\n */\n connection?: string;\n\n /**\n * Use to override the default data format.\n *\n * Only supported when apiVersion is `API_VERSIONS.V3`.\n *\n * Possible values are: `FORMATS.GEOJSON`, `FORMATS.JSON` and `FORMATS.TILEJSON`.\n */\n format?: Format;\n\n /**\n * Use to override the default tile data format.\n *\n * Only supported when apiVersion is `API_VERSIONS.V3` and format is `FORMATS.TILEJSON`.\n *\n * Possible values are: `TILE_FORMATS.BINARY`, `TILE_FORMATS.GEOJSON` and `TILE_FORMATS.MVT`.\n */\n formatTiles?: TileFormat;\n\n /**\n * Name of the geo_column in the CARTO platform.\n *\n * Use this override the default column (`'geom'`), from which the geometry information should be fetched.\n *\n * Only supported when apiVersion is `API_VERSIONS.V3` and type is `MAP_TYPES.TABLE`.\n */\n geoColumn?: string;\n\n /**\n * Names of columns to fetch.\n *\n * By default, all columns are fetched\n *\n * Only supported when apiVersion is `API_VERSIONS.V3` and type is `MAP_TYPES.TABLE`.\n */\n columns?: string[];\n\n /**\n * A string pointing to a unique attribute at the result of the query.\n *\n * A unique attribute is needed for highlighting with vector tiles when a feature is split across two or more tiles.\n */\n uniqueIdProperty?: string;\n\n /**\n * Optional. Overrides the configuration to connect with CARTO.\n *\n * @see Credentials\n */\n credentials?: Credentials;\n\n /**\n * Called when the request to the CARTO Maps API failed.\n *\n * By default the Error is thrown.\n */\n onDataError?: (err: unknown) => void;\n\n clientId?: string;\n};\n\nexport default class CartoLayer<ExtraProps = {}> extends CompositeLayer<\n Required<_CartoLayerProps> & ExtraProps\n> {\n static layerName = 'CartoLayer';\n static defaultProps = defaultProps as any;\n\n initializeState(): void {\n this.state = {\n data: null,\n apiVersion: null\n };\n }\n\n get isLoaded(): boolean {\n return this.getSubLayers().length > 0 && super.isLoaded;\n }\n\n _checkProps(props: CartoLayerProps): void {\n const {type, credentials, connection, geoColumn, columns} = props;\n const localCreds = {...getDefaultCredentials(), ...credentials};\n const {apiVersion} = localCreds;\n\n log.assert(\n Object.values(API_VERSIONS).includes(apiVersion),\n `Invalid apiVersion ${apiVersion}. Use API_VERSIONS enum.`\n );\n\n if (apiVersion === API_VERSIONS.V1 || apiVersion === API_VERSIONS.V2) {\n log.assert(\n type === MAP_TYPES.QUERY || type === MAP_TYPES.TILESET,\n `Invalid type ${type}. Use type MAP_TYPES.QUERY or MAP_TYPES.TILESET for apiVersion ${apiVersion}`\n );\n log.assert(!connection, `Connection prop is not supported for apiVersion ${apiVersion}`);\n log.assert(!geoColumn, `geoColumn prop is not supported for apiVersion ${apiVersion}`);\n log.assert(!columns, `columns prop is not supported for apiVersion ${apiVersion}`);\n } else if (apiVersion === API_VERSIONS.V3) {\n log.assert(connection, 'Missing mandatory connection parameter');\n log.assert(\n Object.values(MAP_TYPES).includes(type),\n `Invalid type ${type}. Use MAP_TYPES enum.`\n );\n if (!COLUMNS_SUPPORT.includes(type)) {\n log.assert(!columns, `columns prop is only supported for types: ${COLUMNS_SUPPORT.join()}`);\n }\n if (!GEO_COLUMN_SUPPORT.includes(type)) {\n log.assert(\n !geoColumn,\n `geoColumn prop is only supported for types: ${GEO_COLUMN_SUPPORT.join()}`\n );\n }\n if (columns) {\n log.assert(Array.isArray(columns), 'columns prop must be an Array');\n }\n }\n }\n\n updateState({\n props,\n oldProps,\n changeFlags\n }: {\n props: CartoLayerProps;\n oldProps: CartoLayerProps;\n context: any;\n changeFlags: ChangeFlags;\n }): void {\n this._checkProps(props);\n const shouldUpdateData =\n changeFlags.dataChanged ||\n props.connection !== oldProps.connection ||\n props.geoColumn !== oldProps.geoColumn ||\n props.format !== oldProps.format ||\n props.formatTiles !== oldProps.formatTiles ||\n props.type !== oldProps.type ||\n JSON.stringify(props.columns) !== JSON.stringify(oldProps.columns) ||\n JSON.stringify(props.credentials) !== JSON.stringify(oldProps.credentials);\n\n if (shouldUpdateData) {\n this.setState({data: null, apiVersion: null});\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this._updateData();\n }\n }\n\n async _updateData(): Promise<void> {\n try {\n const {type, data: source, clientId, credentials, connection, ...rest} = this.props;\n const localConfig = {...getDefaultCredentials(), ...credentials};\n const {apiVersion} = localConfig;\n\n let result: Partial<FetchLayerDataResult>;\n if (apiVersion === API_VERSIONS.V1 || apiVersion === API_VERSIONS.V2) {\n result = {\n data: await getDataV2({type, source, credentials: credentials as ClassicCredentials})\n };\n } else {\n result = await fetchLayerData({\n type,\n source,\n clientId,\n credentials: credentials as CloudNativeCredentials,\n connection,\n ...rest\n });\n }\n\n this.setState({...result, apiVersion});\n\n this.props.onDataLoad?.(result.data, {\n propName: 'data',\n layer: this\n });\n } catch (err) {\n if (this.props.onDataError) {\n this.props.onDataError(err as Error);\n } else {\n throw err;\n }\n }\n }\n\n _getSubLayerAndProps(): [any, LayerProps] {\n assert(this.state);\n\n const {data, format, apiVersion} = this.state;\n\n const {uniqueIdProperty} = defaultProps;\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const {data: _notUsed, ...propsNoData} = this.props;\n // @ts-expect-error 'uniqueIdProperty' is specified more than once, so this usage will be overwritten.\n const props = {uniqueIdProperty, ...propsNoData};\n\n if (apiVersion === API_VERSIONS.V1 || apiVersion === API_VERSIONS.V2) {\n return [MVTLayer, props];\n }\n\n if (format === FORMATS.TILEJSON) {\n /* global URL */\n const tileUrl = new URL(data.tiles[0]);\n\n props.formatTiles =\n props.formatTiles ||\n (tileUrl.searchParams.get('formatTiles') as TileFormat) ||\n TILE_FORMATS.MVT;\n\n if (data.scheme === 'h3') {\n return [H3TileLayer, props];\n }\n if (data.scheme === 'quadkey') {\n return [QuadkeyTileLayer, props];\n }\n return props.formatTiles === TILE_FORMATS.MVT ? [MVTLayer, props] : [CartoTileLayer, props];\n }\n\n // It's a geojson layer\n return [GeoJsonLayer, props];\n }\n\n renderLayers(): Layer | null {\n assert(this.state);\n\n const {data} = this.state;\n\n if (!data) return null;\n\n const {updateTriggers} = this.props;\n\n const [layer, props] = this._getSubLayerAndProps();\n\n // eslint-disable-next-line new-cap\n return new layer(\n props,\n this.getSubLayerProps({\n id: `carto-${layer.layerName}`,\n data,\n updateTriggers\n })\n );\n }\n}\n"],"file":"carto-layer.js"}