@deck.gl/carto 8.8.4 → 8.8.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/dist.dev.js CHANGED
@@ -46676,7 +46676,7 @@ __webpack_require__.r(__webpack_exports__);
46676
46676
  /*!******************************!*\
46677
46677
  !*** ./src/api/layer-map.ts ***!
46678
46678
  \******************************/
46679
- /*! exports provided: AGGREGATION, OPACITY_MAP, getLayer, opacityToAlpha, getColorValueAccessor, getColorAccessor, getSizeAccessor, getTextAccessor, getTextPixelOffsetAccessor, _domainFromValues */
46679
+ /*! exports provided: AGGREGATION, OPACITY_MAP, getLayer, layerFromTileDataset, opacityToAlpha, getColorValueAccessor, getColorAccessor, getSizeAccessor, getTextAccessor, getTextPixelOffsetAccessor, _domainFromValues */
46680
46680
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
46681
46681
 
46682
46682
  "use strict";
@@ -46684,6 +46684,7 @@ __webpack_require__.r(__webpack_exports__);
46684
46684
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AGGREGATION", function() { return AGGREGATION; });
46685
46685
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "OPACITY_MAP", function() { return OPACITY_MAP; });
46686
46686
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getLayer", function() { return getLayer; });
46687
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "layerFromTileDataset", function() { return layerFromTileDataset; });
46687
46688
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "opacityToAlpha", function() { return opacityToAlpha; });
46688
46689
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getColorValueAccessor", function() { return getColorValueAccessor; });
46689
46690
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getColorAccessor", function() { return getColorAccessor; });
@@ -46700,8 +46701,12 @@ __webpack_require__.r(__webpack_exports__);
46700
46701
  /* harmony import */ var _deck_gl_aggregation_layers__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @deck.gl/aggregation-layers */ "@deck.gl/core");
46701
46702
  /* harmony import */ var _deck_gl_aggregation_layers__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_deck_gl_aggregation_layers__WEBPACK_IMPORTED_MODULE_5__);
46702
46703
  /* harmony import */ var _layers_carto_tile_layer__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../layers/carto-tile-layer */ "./src/layers/carto-tile-layer.ts");
46703
- /* harmony import */ var _maps_api_common__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./maps-api-common */ "./src/api/maps-api-common.ts");
46704
- /* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../utils */ "./src/utils.ts");
46704
+ /* harmony import */ var _layers_h3_tile_layer__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../layers/h3-tile-layer */ "./src/layers/h3-tile-layer.ts");
46705
+ /* harmony import */ var _layers_quadbin_tile_layer__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../layers/quadbin-tile-layer */ "./src/layers/quadbin-tile-layer.ts");
46706
+ /* harmony import */ var _maps_api_common__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./maps-api-common */ "./src/api/maps-api-common.ts");
46707
+ /* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../utils */ "./src/utils.ts");
46708
+
46709
+
46705
46710
 
46706
46711
 
46707
46712
 
@@ -46805,7 +46810,7 @@ function mergePropMaps(a = {}, b = {}) {
46805
46810
  }
46806
46811
 
46807
46812
  function getLayer(type, config, dataset) {
46808
- if (type === 'mvt' || type === 'tileset') {
46813
+ if (type === 'mvt' || type === 'tileset' || type === 'h3' || type === 'quadbin') {
46809
46814
  return getTileLayer(dataset);
46810
46815
  }
46811
46816
 
@@ -46877,7 +46882,7 @@ function getLayer(type, config, dataset) {
46877
46882
  }
46878
46883
  };
46879
46884
  const layer = layerTypeDefs[type];
46880
- Object(_utils__WEBPACK_IMPORTED_MODULE_8__["assert"])(layer, `Unsupported layer type: ${type}`);
46885
+ Object(_utils__WEBPACK_IMPORTED_MODULE_10__["assert"])(layer, `Unsupported layer type: ${type}`);
46881
46886
  return { ...layer,
46882
46887
  propMap: mergePropMaps(sharedPropMap, layer.propMap),
46883
46888
  defaultProps: { ...defaultProps,
@@ -46885,31 +46890,60 @@ function getLayer(type, config, dataset) {
46885
46890
  }
46886
46891
  };
46887
46892
  }
46893
+ function layerFromTileDataset(formatTiles = _maps_api_common__WEBPACK_IMPORTED_MODULE_9__["TILE_FORMATS"].MVT, scheme) {
46894
+ if (scheme === 'h3') {
46895
+ return _layers_h3_tile_layer__WEBPACK_IMPORTED_MODULE_7__["default"];
46896
+ }
46897
+
46898
+ if (scheme === 'quadbin') {
46899
+ return _layers_quadbin_tile_layer__WEBPACK_IMPORTED_MODULE_8__["default"];
46900
+ }
46901
+
46902
+ if (formatTiles === _maps_api_common__WEBPACK_IMPORTED_MODULE_9__["TILE_FORMATS"].MVT) {
46903
+ return _deck_gl_aggregation_layers__WEBPACK_IMPORTED_MODULE_5__["MVTLayer"];
46904
+ } // formatTiles === BINARY|JSON|GEOJSON
46905
+
46906
+
46907
+ return _layers_carto_tile_layer__WEBPACK_IMPORTED_MODULE_6__["default"];
46908
+ }
46888
46909
 
46889
46910
  function getTileLayer(dataset) {
46890
46911
  const {
46912
+ aggregationExp,
46913
+ aggregationResLevel,
46891
46914
  data: {
46915
+ scheme,
46892
46916
  tiles: [tileUrl]
46893
46917
  }
46894
46918
  } = dataset;
46895
46919
  /* global URL */
46896
46920
 
46897
- const formatTiles = new URL(tileUrl).searchParams.get('formatTiles') || _maps_api_common__WEBPACK_IMPORTED_MODULE_7__["TILE_FORMATS"].MVT;
46921
+ const formatTiles = new URL(tileUrl).searchParams.get('formatTiles');
46898
46922
  return {
46899
- Layer: formatTiles === _maps_api_common__WEBPACK_IMPORTED_MODULE_7__["TILE_FORMATS"].MVT ? _deck_gl_aggregation_layers__WEBPACK_IMPORTED_MODULE_5__["MVTLayer"] : _layers_carto_tile_layer__WEBPACK_IMPORTED_MODULE_6__["default"],
46923
+ Layer: layerFromTileDataset(formatTiles, scheme),
46900
46924
  propMap: sharedPropMap,
46901
46925
  defaultProps: { ...defaultProps,
46902
- uniqueIdProperty: 'geoid',
46903
- formatTiles
46926
+ ...(aggregationExp && {
46927
+ aggregationExp
46928
+ }),
46929
+ ...(aggregationResLevel && {
46930
+ aggregationResLevel
46931
+ }),
46932
+ formatTiles,
46933
+ uniqueIdProperty: 'geoid'
46904
46934
  }
46905
46935
  };
46906
46936
  }
46907
46937
 
46908
- function domainFromAttribute(attribute, scaleType) {
46938
+ function domainFromAttribute(attribute, scaleType, scaleLength) {
46909
46939
  if (scaleType === 'ordinal' || scaleType === 'point') {
46910
46940
  return attribute.categories.map(c => c.category).filter(c => c !== undefined && c !== null);
46911
46941
  }
46912
46942
 
46943
+ if (scaleType === 'quantile' && attribute.quantiles) {
46944
+ return attribute.quantiles[scaleLength];
46945
+ }
46946
+
46913
46947
  let {
46914
46948
  min
46915
46949
  } = attribute;
@@ -46934,14 +46968,14 @@ function domainFromValues(values, scaleType) {
46934
46968
  return Object(d3_array__WEBPACK_IMPORTED_MODULE_0__["extent"])(values);
46935
46969
  }
46936
46970
 
46937
- function calculateDomain(data, name, scaleType) {
46971
+ function calculateDomain(data, name, scaleType, scaleLength) {
46938
46972
  if (data.tilestats) {
46939
46973
  // Tileset data type
46940
46974
  const {
46941
46975
  attributes
46942
46976
  } = data.tilestats.layers[0];
46943
46977
  const attribute = attributes.find(a => a.attribute === name);
46944
- return domainFromAttribute(attribute, scaleType);
46978
+ return domainFromAttribute(attribute, scaleType, scaleLength);
46945
46979
  } else if (data.features) {
46946
46980
  // GeoJSON data type
46947
46981
  const values = data.features.map(({
@@ -46972,6 +47006,28 @@ function normalizeAccessor(accessor, data) {
46972
47006
  function opacityToAlpha(opacity) {
46973
47007
  return opacity !== undefined ? Math.round(255 * Math.pow(opacity, 1 / 2.2)) : 255;
46974
47008
  }
47009
+
47010
+ function getAccessorKeys(name, aggregation) {
47011
+ let keys = [name];
47012
+
47013
+ if (aggregation) {
47014
+ // Snowflake will capitalized the keys, need to check lower and upper case version
47015
+ keys = keys.concat([aggregation, aggregation.toUpperCase()].map(a => `${name}_${a}`));
47016
+ }
47017
+
47018
+ return keys;
47019
+ }
47020
+
47021
+ function findAccessorKey(keys, properties) {
47022
+ for (const key of keys) {
47023
+ if (key in properties) {
47024
+ return [key];
47025
+ }
47026
+ }
47027
+
47028
+ throw new Error(`Could not find property for any accessor key: ${keys}`);
47029
+ }
47030
+
46975
47031
  function getColorValueAccessor({
46976
47032
  name
46977
47033
  }, colorAggregation, data) {
@@ -46984,8 +47040,11 @@ function getColorValueAccessor({
46984
47040
  function getColorAccessor({
46985
47041
  name
46986
47042
  }, scaleType, {
46987
- colors,
46988
- colorMap
47043
+ aggregation,
47044
+ range: {
47045
+ colors,
47046
+ colorMap
47047
+ }
46989
47048
  }, opacity, data) {
46990
47049
  const scale = SCALE_FUNCS[scaleType]();
46991
47050
  let domain = [];
@@ -46997,7 +47056,7 @@ function getColorAccessor({
46997
47056
  scaleColor.push(color);
46998
47057
  });
46999
47058
  } else {
47000
- domain = calculateDomain(data, name, scaleType);
47059
+ domain = calculateDomain(data, name, scaleType, colors.length);
47001
47060
  scaleColor = colors;
47002
47061
  }
47003
47062
 
@@ -47009,9 +47068,14 @@ function getColorAccessor({
47009
47068
  scale.range(scaleColor);
47010
47069
  scale.unknown(UNKNOWN_COLOR);
47011
47070
  const alpha = opacityToAlpha(opacity);
47071
+ let accessorKeys = getAccessorKeys(name, aggregation);
47012
47072
 
47013
47073
  const accessor = properties => {
47014
- const propertyValue = properties[name];
47074
+ if (!(accessorKeys[0] in properties)) {
47075
+ accessorKeys = findAccessorKey(accessorKeys, properties);
47076
+ }
47077
+
47078
+ const propertyValue = properties[accessorKeys[0]];
47015
47079
  const {
47016
47080
  r,
47017
47081
  g,
@@ -47024,13 +47088,19 @@ function getColorAccessor({
47024
47088
  }
47025
47089
  function getSizeAccessor({
47026
47090
  name
47027
- }, scaleType, range, data) {
47091
+ }, scaleType, aggregation, range, data) {
47028
47092
  const scale = SCALE_FUNCS[scaleType]();
47029
47093
  scale.domain(calculateDomain(data, name, scaleType));
47030
47094
  scale.range(range);
47095
+ let accessorKeys = getAccessorKeys(name, aggregation);
47031
47096
 
47032
47097
  const accessor = properties => {
47033
- return scale(properties[name]);
47098
+ if (!(accessorKeys[0] in properties)) {
47099
+ accessorKeys = findAccessorKey(accessorKeys, properties);
47100
+ }
47101
+
47102
+ const propertyValue = properties[accessorKeys[0]];
47103
+ return scale(propertyValue);
47034
47104
  };
47035
47105
 
47036
47106
  return normalizeAccessor(accessor, data);
@@ -47499,6 +47569,9 @@ function getParameters({
47499
47569
 
47500
47570
  if (aggregationExp) {
47501
47571
  parameters.push(Object(_maps_api_common__WEBPACK_IMPORTED_MODULE_1__["encodeParameter"])('aggregationExp', aggregationExp));
47572
+ } else if (isSpatialIndexGeoColumn(geoColumn)) {
47573
+ // Default aggregationExp required for spatial index layers
47574
+ parameters.push(Object(_maps_api_common__WEBPACK_IMPORTED_MODULE_1__["encodeParameter"])('aggregationExp', '1 AS value'));
47502
47575
  }
47503
47576
 
47504
47577
  if (aggregationResLevel) {
@@ -47508,6 +47581,11 @@ function getParameters({
47508
47581
  return parameters.join('&');
47509
47582
  }
47510
47583
 
47584
+ function isSpatialIndexGeoColumn(geoColumn) {
47585
+ const spatialIndex = geoColumn?.split(':')[0];
47586
+ return spatialIndex === 'h3' || spatialIndex === 'quadbin';
47587
+ }
47588
+
47511
47589
  async function mapInstantiation({
47512
47590
  type,
47513
47591
  source,
@@ -47526,8 +47604,8 @@ async function mapInstantiation({
47526
47604
  geoColumn,
47527
47605
  columns,
47528
47606
  clientId,
47529
- aggregationExp,
47530
- aggregationResLevel
47607
+ aggregationResLevel,
47608
+ aggregationExp
47531
47609
  })}`;
47532
47610
  const {
47533
47611
  accessToken
@@ -47730,6 +47808,8 @@ async function _fetchDataUrl({
47730
47808
 
47731
47809
  async function _fetchMapDataset(dataset, accessToken, credentials, clientId) {
47732
47810
  const {
47811
+ aggregationExp,
47812
+ aggregationResLevel,
47733
47813
  connectionName: connection,
47734
47814
  columns,
47735
47815
  format,
@@ -47742,6 +47822,8 @@ async function _fetchMapDataset(dataset, accessToken, credentials, clientId) {
47742
47822
  url,
47743
47823
  mapFormat
47744
47824
  } = await _fetchDataUrl({
47825
+ aggregationExp,
47826
+ aggregationResLevel,
47745
47827
  clientId,
47746
47828
  credentials: { ...credentials,
47747
47829
  accessToken
@@ -47770,6 +47852,36 @@ async function _fetchMapDataset(dataset, accessToken, credentials, clientId) {
47770
47852
  return true;
47771
47853
  }
47772
47854
 
47855
+ async function _fetchTilestats(attribute, dataset, accessToken, credentials) {
47856
+ const {
47857
+ connectionName: connection,
47858
+ source,
47859
+ type
47860
+ } = dataset;
47861
+ const statsUrl = Object(_config__WEBPACK_IMPORTED_MODULE_0__["buildStatsUrlFromBase"])(credentials.apiBaseUrl);
47862
+ let url = `${statsUrl}/${connection}/`;
47863
+
47864
+ if (type === _maps_api_common__WEBPACK_IMPORTED_MODULE_1__["MAP_TYPES"].QUERY) {
47865
+ url += `${attribute}?q=${source}`;
47866
+ } else {
47867
+ // MAP_TYPE.TABLE
47868
+ url += `${source}/${attribute}`;
47869
+ }
47870
+
47871
+ const stats = await requestData({
47872
+ url,
47873
+ format: _maps_api_common__WEBPACK_IMPORTED_MODULE_1__["FORMATS"].JSON,
47874
+ accessToken
47875
+ }); // Replace tilestats for attribute with value from API
47876
+
47877
+ const {
47878
+ attributes
47879
+ } = dataset.data.tilestats.layers[0];
47880
+ const index = attributes.findIndex(d => d.attribute === attribute);
47881
+ attributes[index] = stats;
47882
+ return true;
47883
+ }
47884
+
47773
47885
  async function fillInMapDatasets({
47774
47886
  datasets,
47775
47887
  token
@@ -47778,6 +47890,53 @@ async function fillInMapDatasets({
47778
47890
  return await Promise.all(promises);
47779
47891
  }
47780
47892
 
47893
+ async function fillInTileStats({
47894
+ datasets,
47895
+ keplerMapConfig,
47896
+ token
47897
+ }, credentials) {
47898
+ const attributes = [];
47899
+ const {
47900
+ layers
47901
+ } = keplerMapConfig.config.visState;
47902
+
47903
+ for (const layer of layers) {
47904
+ for (const channel of Object.keys(layer.visualChannels)) {
47905
+ const attribute = layer.visualChannels[channel]?.name;
47906
+
47907
+ if (attribute) {
47908
+ const dataset = datasets.find(d => d.id === layer.config.dataId);
47909
+
47910
+ if (dataset.data.tilestats && dataset.type !== _maps_api_common__WEBPACK_IMPORTED_MODULE_1__["MAP_TYPES"].TILESET) {
47911
+ // Only fetch stats for QUERY & TABLE map types
47912
+ attributes.push({
47913
+ attribute,
47914
+ dataset
47915
+ });
47916
+ }
47917
+ }
47918
+ }
47919
+ } // Remove duplicates to avoid repeated requests
47920
+
47921
+
47922
+ const filteredAttributes = [];
47923
+
47924
+ for (const a of attributes) {
47925
+ if (!filteredAttributes.find(({
47926
+ attribute,
47927
+ dataset
47928
+ }) => attribute === a.attribute && dataset === a.dataset)) {
47929
+ filteredAttributes.push(a);
47930
+ }
47931
+ }
47932
+
47933
+ const promises = filteredAttributes.map(({
47934
+ attribute,
47935
+ dataset
47936
+ }) => _fetchTilestats(attribute, dataset, token, credentials));
47937
+ return await Promise.all(promises);
47938
+ }
47939
+
47781
47940
  async function fetchMap({
47782
47941
  cartoMapId,
47783
47942
  clientId,
@@ -47842,7 +48001,9 @@ async function fetchMap({
47842
48001
  }
47843
48002
  }); // Mutates map.datasets so that dataset.data contains data
47844
48003
 
47845
- await fillInMapDatasets(map, clientId, localCreds);
48004
+ await fillInMapDatasets(map, clientId, localCreds); // Mutates attributes in visualChannels to contain tile stats
48005
+
48006
+ await fillInTileStats(map, localCreds);
47846
48007
  return { ...Object(_parseMap__WEBPACK_IMPORTED_MODULE_2__["parseMap"])(map),
47847
48008
  ...{
47848
48009
  stopAutoRefresh
@@ -48082,21 +48243,35 @@ function createChannelProps(visualChannels, type, config, data) {
48082
48243
  }
48083
48244
  }
48084
48245
  } else if (colorField) {
48085
- result.getFillColor = Object(_layer_map__WEBPACK_IMPORTED_MODULE_1__["getColorAccessor"])(colorField, colorScale, visConfig.colorRange, visConfig.opacity, data);
48246
+ const {
48247
+ colorAggregation: aggregation,
48248
+ colorRange: range
48249
+ } = visConfig;
48250
+ result.getFillColor = Object(_layer_map__WEBPACK_IMPORTED_MODULE_1__["getColorAccessor"])(colorField, colorScale, {
48251
+ aggregation,
48252
+ range
48253
+ }, visConfig.opacity, data);
48086
48254
  }
48087
48255
 
48088
48256
  if (strokeColorField) {
48089
48257
  const fallbackOpacity = type === 'point' ? visConfig.opacity : 1;
48090
48258
  const opacity = visConfig.strokeOpacity !== undefined ? visConfig.strokeOpacity : fallbackOpacity;
48091
- result.getLineColor = Object(_layer_map__WEBPACK_IMPORTED_MODULE_1__["getColorAccessor"])(strokeColorField, strokeColorScale, visConfig.strokeColorRange, opacity, data);
48259
+ const {
48260
+ strokeColorAggregation: aggregation,
48261
+ strokeColorRange: range
48262
+ } = visConfig;
48263
+ result.getLineColor = Object(_layer_map__WEBPACK_IMPORTED_MODULE_1__["getColorAccessor"])(strokeColorField, strokeColorScale, {
48264
+ aggregation,
48265
+ range
48266
+ }, opacity, data);
48092
48267
  }
48093
48268
 
48094
48269
  if (heightField) {
48095
- result.getElevation = Object(_layer_map__WEBPACK_IMPORTED_MODULE_1__["getSizeAccessor"])(heightField, heightScale, visConfig.heightRange || visConfig.sizeRange, data);
48270
+ result.getElevation = Object(_layer_map__WEBPACK_IMPORTED_MODULE_1__["getSizeAccessor"])(heightField, heightScale, visConfig.heightAggregation, visConfig.heightRange || visConfig.sizeRange, data);
48096
48271
  }
48097
48272
 
48098
48273
  if (sizeField) {
48099
- result.getPointRadius = Object(_layer_map__WEBPACK_IMPORTED_MODULE_1__["getSizeAccessor"])(sizeField, sizeScale, visConfig.radiusRange || visConfig.sizeRange, data);
48274
+ result.getPointRadius = Object(_layer_map__WEBPACK_IMPORTED_MODULE_1__["getSizeAccessor"])(sizeField, sizeScale, visConfig.sizeAggregation, visConfig.radiusRange || visConfig.sizeRange, data);
48100
48275
  }
48101
48276
 
48102
48277
  if (textLabelField) {
@@ -48136,7 +48311,7 @@ const baseUrl = 'https://basemaps.cartocdn.com/gl/{basemap}-gl-style/style.json'
48136
48311
  /*!***********************!*\
48137
48312
  !*** ./src/config.ts ***!
48138
48313
  \***********************/
48139
- /*! exports provided: defaultClassicCredentials, defaultCloudNativeCredentials, setDefaultCredentials, getDefaultCredentials, buildMapsUrlFromBase */
48314
+ /*! exports provided: defaultClassicCredentials, defaultCloudNativeCredentials, setDefaultCredentials, getDefaultCredentials, buildMapsUrlFromBase, buildStatsUrlFromBase */
48140
48315
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
48141
48316
 
48142
48317
  "use strict";
@@ -48146,6 +48321,7 @@ __webpack_require__.r(__webpack_exports__);
48146
48321
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setDefaultCredentials", function() { return setDefaultCredentials; });
48147
48322
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getDefaultCredentials", function() { return getDefaultCredentials; });
48148
48323
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "buildMapsUrlFromBase", function() { return buildMapsUrlFromBase; });
48324
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "buildStatsUrlFromBase", function() { return buildStatsUrlFromBase; });
48149
48325
  /* harmony import */ var _api_maps_api_common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./api/maps-api-common */ "./src/api/maps-api-common.ts");
48150
48326
 
48151
48327
  const defaultClassicCredentials = {
@@ -48189,8 +48365,9 @@ function setDefaultCredentials({
48189
48365
  function getDefaultCredentials() {
48190
48366
  return credentials;
48191
48367
  }
48192
- function buildMapsUrlFromBase(apiBaseUrl) {
48193
- let suffix = '/v3/maps';
48368
+
48369
+ function buildUrlFromBase(apiBaseUrl, endpoint) {
48370
+ let suffix = `/v3/${endpoint}`;
48194
48371
 
48195
48372
  if (apiBaseUrl.endsWith('/')) {
48196
48373
  suffix = suffix.substring(1);
@@ -48199,6 +48376,13 @@ function buildMapsUrlFromBase(apiBaseUrl) {
48199
48376
  return `${apiBaseUrl}${suffix}`;
48200
48377
  }
48201
48378
 
48379
+ function buildMapsUrlFromBase(apiBaseUrl) {
48380
+ return buildUrlFromBase(apiBaseUrl, 'maps');
48381
+ }
48382
+ function buildStatsUrlFromBase(apiBaseUrl) {
48383
+ return buildUrlFromBase(apiBaseUrl, 'stats');
48384
+ }
48385
+
48202
48386
  /***/ }),
48203
48387
 
48204
48388
  /***/ "./src/index.ts":
@@ -48289,13 +48473,11 @@ __webpack_require__.r(__webpack_exports__);
48289
48473
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return CartoLayer; });
48290
48474
  /* harmony import */ var _deck_gl_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @deck.gl/core */ "@deck.gl/core");
48291
48475
  /* harmony import */ var _deck_gl_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_deck_gl_core__WEBPACK_IMPORTED_MODULE_0__);
48292
- /* harmony import */ var _carto_tile_layer__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./carto-tile-layer */ "./src/layers/carto-tile-layer.ts");
48293
- /* harmony import */ var _h3_tile_layer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./h3-tile-layer */ "./src/layers/h3-tile-layer.ts");
48294
- /* harmony import */ var _quadbin_tile_layer__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./quadbin-tile-layer */ "./src/layers/quadbin-tile-layer.ts");
48295
- /* harmony import */ var _api__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../api */ "./src/api/index.ts");
48296
- /* harmony import */ var _api_maps_api_common__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../api/maps-api-common */ "./src/api/maps-api-common.ts");
48297
- /* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../config */ "./src/config.ts");
48298
- /* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../utils */ "./src/utils.ts");
48476
+ /* harmony import */ var _api__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../api */ "./src/api/index.ts");
48477
+ /* harmony import */ var _api_layer_map__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../api/layer-map */ "./src/api/layer-map.ts");
48478
+ /* harmony import */ var _api_maps_api_common__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../api/maps-api-common */ "./src/api/maps-api-common.ts");
48479
+ /* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../config */ "./src/config.ts");
48480
+ /* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../utils */ "./src/utils.ts");
48299
48481
  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; }
48300
48482
 
48301
48483
 
@@ -48305,8 +48487,6 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope
48305
48487
 
48306
48488
 
48307
48489
 
48308
-
48309
-
48310
48490
  const defaultProps = {
48311
48491
  // (String, required): data resource to load. table name, sql query or tileset name.
48312
48492
  data: null,
@@ -48374,29 +48554,29 @@ class CartoLayer extends _deck_gl_core__WEBPACK_IMPORTED_MODULE_0__["CompositeLa
48374
48554
  geoColumn,
48375
48555
  columns
48376
48556
  } = props;
48377
- const localCreds = { ...Object(_config__WEBPACK_IMPORTED_MODULE_6__["getDefaultCredentials"])(),
48557
+ const localCreds = { ...Object(_config__WEBPACK_IMPORTED_MODULE_4__["getDefaultCredentials"])(),
48378
48558
  ...credentials
48379
48559
  };
48380
48560
  const {
48381
48561
  apiVersion
48382
48562
  } = localCreds;
48383
- _deck_gl_core__WEBPACK_IMPORTED_MODULE_0__["log"].assert(Object.values(_api__WEBPACK_IMPORTED_MODULE_4__["API_VERSIONS"]).includes(apiVersion), `Invalid apiVersion ${apiVersion}. Use API_VERSIONS enum.`);
48563
+ _deck_gl_core__WEBPACK_IMPORTED_MODULE_0__["log"].assert(Object.values(_api__WEBPACK_IMPORTED_MODULE_1__["API_VERSIONS"]).includes(apiVersion), `Invalid apiVersion ${apiVersion}. Use API_VERSIONS enum.`);
48384
48564
 
48385
- if (apiVersion === _api__WEBPACK_IMPORTED_MODULE_4__["API_VERSIONS"].V1 || apiVersion === _api__WEBPACK_IMPORTED_MODULE_4__["API_VERSIONS"].V2) {
48386
- _deck_gl_core__WEBPACK_IMPORTED_MODULE_0__["log"].assert(type === _api_maps_api_common__WEBPACK_IMPORTED_MODULE_5__["MAP_TYPES"].QUERY || type === _api_maps_api_common__WEBPACK_IMPORTED_MODULE_5__["MAP_TYPES"].TILESET, `Invalid type ${type}. Use type MAP_TYPES.QUERY or MAP_TYPES.TILESET for apiVersion ${apiVersion}`);
48565
+ if (apiVersion === _api__WEBPACK_IMPORTED_MODULE_1__["API_VERSIONS"].V1 || apiVersion === _api__WEBPACK_IMPORTED_MODULE_1__["API_VERSIONS"].V2) {
48566
+ _deck_gl_core__WEBPACK_IMPORTED_MODULE_0__["log"].assert(type === _api_maps_api_common__WEBPACK_IMPORTED_MODULE_3__["MAP_TYPES"].QUERY || type === _api_maps_api_common__WEBPACK_IMPORTED_MODULE_3__["MAP_TYPES"].TILESET, `Invalid type ${type}. Use type MAP_TYPES.QUERY or MAP_TYPES.TILESET for apiVersion ${apiVersion}`);
48387
48567
  _deck_gl_core__WEBPACK_IMPORTED_MODULE_0__["log"].assert(!connection, `Connection prop is not supported for apiVersion ${apiVersion}`);
48388
48568
  _deck_gl_core__WEBPACK_IMPORTED_MODULE_0__["log"].assert(!geoColumn, `geoColumn prop is not supported for apiVersion ${apiVersion}`);
48389
48569
  _deck_gl_core__WEBPACK_IMPORTED_MODULE_0__["log"].assert(!columns, `columns prop is not supported for apiVersion ${apiVersion}`);
48390
- } else if (apiVersion === _api__WEBPACK_IMPORTED_MODULE_4__["API_VERSIONS"].V3) {
48570
+ } else if (apiVersion === _api__WEBPACK_IMPORTED_MODULE_1__["API_VERSIONS"].V3) {
48391
48571
  _deck_gl_core__WEBPACK_IMPORTED_MODULE_0__["log"].assert(connection, 'Missing mandatory connection parameter');
48392
- _deck_gl_core__WEBPACK_IMPORTED_MODULE_0__["log"].assert(Object.values(_api_maps_api_common__WEBPACK_IMPORTED_MODULE_5__["MAP_TYPES"]).includes(type), `Invalid type ${type}. Use MAP_TYPES enum.`);
48572
+ _deck_gl_core__WEBPACK_IMPORTED_MODULE_0__["log"].assert(Object.values(_api_maps_api_common__WEBPACK_IMPORTED_MODULE_3__["MAP_TYPES"]).includes(type), `Invalid type ${type}. Use MAP_TYPES enum.`);
48393
48573
 
48394
- if (!_api_maps_api_common__WEBPACK_IMPORTED_MODULE_5__["COLUMNS_SUPPORT"].includes(type)) {
48395
- _deck_gl_core__WEBPACK_IMPORTED_MODULE_0__["log"].assert(!columns, `columns prop is only supported for types: ${_api_maps_api_common__WEBPACK_IMPORTED_MODULE_5__["COLUMNS_SUPPORT"].join()}`);
48574
+ if (!_api_maps_api_common__WEBPACK_IMPORTED_MODULE_3__["COLUMNS_SUPPORT"].includes(type)) {
48575
+ _deck_gl_core__WEBPACK_IMPORTED_MODULE_0__["log"].assert(!columns, `columns prop is only supported for types: ${_api_maps_api_common__WEBPACK_IMPORTED_MODULE_3__["COLUMNS_SUPPORT"].join()}`);
48396
48576
  }
48397
48577
 
48398
- if (!_api_maps_api_common__WEBPACK_IMPORTED_MODULE_5__["GEO_COLUMN_SUPPORT"].includes(type)) {
48399
- _deck_gl_core__WEBPACK_IMPORTED_MODULE_0__["log"].assert(!geoColumn, `geoColumn prop is only supported for types: ${_api_maps_api_common__WEBPACK_IMPORTED_MODULE_5__["GEO_COLUMN_SUPPORT"].join()}`);
48578
+ if (!_api_maps_api_common__WEBPACK_IMPORTED_MODULE_3__["GEO_COLUMN_SUPPORT"].includes(type)) {
48579
+ _deck_gl_core__WEBPACK_IMPORTED_MODULE_0__["log"].assert(!geoColumn, `geoColumn prop is only supported for types: ${_api_maps_api_common__WEBPACK_IMPORTED_MODULE_3__["GEO_COLUMN_SUPPORT"].join()}`);
48400
48580
  }
48401
48581
 
48402
48582
  if (columns) {
@@ -48434,7 +48614,7 @@ class CartoLayer extends _deck_gl_core__WEBPACK_IMPORTED_MODULE_0__["CompositeLa
48434
48614
  connection,
48435
48615
  ...rest
48436
48616
  } = this.props;
48437
- const localConfig = { ...Object(_config__WEBPACK_IMPORTED_MODULE_6__["getDefaultCredentials"])(),
48617
+ const localConfig = { ...Object(_config__WEBPACK_IMPORTED_MODULE_4__["getDefaultCredentials"])(),
48438
48618
  ...credentials
48439
48619
  };
48440
48620
  const {
@@ -48442,16 +48622,16 @@ class CartoLayer extends _deck_gl_core__WEBPACK_IMPORTED_MODULE_0__["CompositeLa
48442
48622
  } = localConfig;
48443
48623
  let result;
48444
48624
 
48445
- if (apiVersion === _api__WEBPACK_IMPORTED_MODULE_4__["API_VERSIONS"].V1 || apiVersion === _api__WEBPACK_IMPORTED_MODULE_4__["API_VERSIONS"].V2) {
48625
+ if (apiVersion === _api__WEBPACK_IMPORTED_MODULE_1__["API_VERSIONS"].V1 || apiVersion === _api__WEBPACK_IMPORTED_MODULE_1__["API_VERSIONS"].V2) {
48446
48626
  result = {
48447
- data: await Object(_api__WEBPACK_IMPORTED_MODULE_4__["getDataV2"])({
48627
+ data: await Object(_api__WEBPACK_IMPORTED_MODULE_1__["getDataV2"])({
48448
48628
  type,
48449
48629
  source,
48450
48630
  credentials: credentials
48451
48631
  })
48452
48632
  };
48453
48633
  } else {
48454
- result = await Object(_api__WEBPACK_IMPORTED_MODULE_4__["fetchLayerData"])({
48634
+ result = await Object(_api__WEBPACK_IMPORTED_MODULE_1__["fetchLayerData"])({
48455
48635
  type,
48456
48636
  source,
48457
48637
  clientId,
@@ -48459,7 +48639,7 @@ class CartoLayer extends _deck_gl_core__WEBPACK_IMPORTED_MODULE_0__["CompositeLa
48459
48639
  connection,
48460
48640
  ...rest,
48461
48641
  // CartoLayer only supports tiled output from v8.8, force data format
48462
- format: _api_maps_api_common__WEBPACK_IMPORTED_MODULE_5__["FORMATS"].TILEJSON
48642
+ format: _api_maps_api_common__WEBPACK_IMPORTED_MODULE_3__["FORMATS"].TILEJSON
48463
48643
  });
48464
48644
  }
48465
48645
 
@@ -48480,7 +48660,7 @@ class CartoLayer extends _deck_gl_core__WEBPACK_IMPORTED_MODULE_0__["CompositeLa
48480
48660
  }
48481
48661
 
48482
48662
  _getSubLayerAndProps() {
48483
- Object(_utils__WEBPACK_IMPORTED_MODULE_7__["assert"])(this.state);
48663
+ Object(_utils__WEBPACK_IMPORTED_MODULE_5__["assert"])(this.state);
48484
48664
  const {
48485
48665
  data,
48486
48666
  apiVersion
@@ -48499,28 +48679,19 @@ class CartoLayer extends _deck_gl_core__WEBPACK_IMPORTED_MODULE_0__["CompositeLa
48499
48679
  ...propsNoData
48500
48680
  };
48501
48681
 
48502
- if (apiVersion === _api__WEBPACK_IMPORTED_MODULE_4__["API_VERSIONS"].V1 || apiVersion === _api__WEBPACK_IMPORTED_MODULE_4__["API_VERSIONS"].V2) {
48682
+ if (apiVersion === _api__WEBPACK_IMPORTED_MODULE_1__["API_VERSIONS"].V1 || apiVersion === _api__WEBPACK_IMPORTED_MODULE_1__["API_VERSIONS"].V2) {
48503
48683
  return [_deck_gl_core__WEBPACK_IMPORTED_MODULE_0__["MVTLayer"], props];
48504
48684
  }
48505
48685
  /* global URL */
48506
48686
 
48507
48687
 
48508
48688
  const tileUrl = new URL(data.tiles[0]);
48509
- props.formatTiles = props.formatTiles || tileUrl.searchParams.get('formatTiles') || _api_maps_api_common__WEBPACK_IMPORTED_MODULE_5__["TILE_FORMATS"].MVT;
48510
-
48511
- if (data.scheme === 'h3') {
48512
- return [_h3_tile_layer__WEBPACK_IMPORTED_MODULE_2__["default"], props];
48513
- }
48514
-
48515
- if (data.scheme === 'quadbin') {
48516
- return [_quadbin_tile_layer__WEBPACK_IMPORTED_MODULE_3__["default"], props];
48517
- }
48518
-
48519
- return props.formatTiles === _api_maps_api_common__WEBPACK_IMPORTED_MODULE_5__["TILE_FORMATS"].MVT ? [_deck_gl_core__WEBPACK_IMPORTED_MODULE_0__["MVTLayer"], props] : [_carto_tile_layer__WEBPACK_IMPORTED_MODULE_1__["default"], props];
48689
+ props.formatTiles = props.formatTiles || tileUrl.searchParams.get('formatTiles');
48690
+ return [Object(_api_layer_map__WEBPACK_IMPORTED_MODULE_2__["layerFromTileDataset"])(props.formatTiles, data.scheme), props];
48520
48691
  }
48521
48692
 
48522
48693
  renderLayers() {
48523
- Object(_utils__WEBPACK_IMPORTED_MODULE_7__["assert"])(this.state);
48694
+ Object(_utils__WEBPACK_IMPORTED_MODULE_5__["assert"])(this.state);
48524
48695
  const {
48525
48696
  data
48526
48697
  } = this.state;