@deck.gl/carto 8.8.10 → 8.8.11

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
@@ -7,7 +7,7 @@
7
7
  exports["deck"] = factory(require("deck"), require("h3"));
8
8
  else
9
9
  root["deck"] = factory(root["deck"], root["h3"]);
10
- })(window, function(__WEBPACK_EXTERNAL_MODULE__deck_gl_extensions__, __WEBPACK_EXTERNAL_MODULE_h3_js__) {
10
+ })(window, function(__WEBPACK_EXTERNAL_MODULE__deck_gl_core__, __WEBPACK_EXTERNAL_MODULE_h3_js__) {
11
11
  return /******/ (function(modules) { // webpackBootstrap
12
12
  /******/ // The module cache
13
13
  /******/ var installedModules = {};
@@ -13033,7 +13033,7 @@ __webpack_require__.r(__webpack_exports__);
13033
13033
 
13034
13034
 
13035
13035
 
13036
- const VERSION = true ? "8.8.10" : undefined;
13036
+ const VERSION = true ? "8.8.11" : undefined;
13037
13037
  const isBrowser = Object(_lib_is_browser__WEBPACK_IMPORTED_MODULE_0__["default"])();
13038
13038
  //# sourceMappingURL=globals.js.map
13039
13039
 
@@ -54157,7 +54157,7 @@ __webpack_require__.r(__webpack_exports__);
54157
54157
 
54158
54158
 
54159
54159
 
54160
- const VERSION = true ? "8.8.10" : undefined;
54160
+ const VERSION = true ? "8.8.11" : undefined;
54161
54161
  const isBrowser = Object(_env_is_browser__WEBPACK_IMPORTED_MODULE_0__["default"])();
54162
54162
  //# sourceMappingURL=globals.js.map
54163
54163
 
@@ -54644,7 +54644,7 @@ __webpack_require__.r(__webpack_exports__);
54644
54644
  /*!******************************!*\
54645
54645
  !*** ./src/api/layer-map.ts ***!
54646
54646
  \******************************/
54647
- /*! exports provided: AGGREGATION, OPACITY_MAP, getLayer, layerFromTileDataset, opacityToAlpha, getColorValueAccessor, getColorAccessor, getSizeAccessor, getTextAccessor, getTextPixelOffsetAccessor, _domainFromValues */
54647
+ /*! exports provided: AGGREGATION, OPACITY_MAP, getLayer, layerFromTileDataset, opacityToAlpha, getColorValueAccessor, getColorAccessor, getIconUrlAccessor, getMaxMarkerSize, negateAccessor, getSizeAccessor, getTextAccessor, getTextPixelOffsetAccessor, _domainFromValues */
54648
54648
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
54649
54649
 
54650
54650
  "use strict";
@@ -54656,6 +54656,9 @@ __webpack_require__.r(__webpack_exports__);
54656
54656
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "opacityToAlpha", function() { return opacityToAlpha; });
54657
54657
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getColorValueAccessor", function() { return getColorValueAccessor; });
54658
54658
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getColorAccessor", function() { return getColorAccessor; });
54659
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getIconUrlAccessor", function() { return getIconUrlAccessor; });
54660
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getMaxMarkerSize", function() { return getMaxMarkerSize; });
54661
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "negateAccessor", function() { return negateAccessor; });
54659
54662
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getSizeAccessor", function() { return getSizeAccessor; });
54660
54663
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getTextAccessor", function() { return getTextAccessor; });
54661
54664
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getTextPixelOffsetAccessor", function() { return getTextPixelOffsetAccessor; });
@@ -54666,7 +54669,7 @@ __webpack_require__.r(__webpack_exports__);
54666
54669
  /* harmony import */ var d3_format__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! d3-format */ "../../node_modules/d3-format/src/index.js");
54667
54670
  /* harmony import */ var moment_timezone__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! moment-timezone */ "../../node_modules/moment-timezone/index.js");
54668
54671
  /* harmony import */ var moment_timezone__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(moment_timezone__WEBPACK_IMPORTED_MODULE_4__);
54669
- /* harmony import */ var _deck_gl_aggregation_layers__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @deck.gl/aggregation-layers */ "@deck.gl/extensions");
54672
+ /* harmony import */ var _deck_gl_aggregation_layers__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @deck.gl/aggregation-layers */ "@deck.gl/core");
54670
54673
  /* harmony import */ var _deck_gl_aggregation_layers__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_deck_gl_aggregation_layers__WEBPACK_IMPORTED_MODULE_5__);
54671
54674
  /* harmony import */ var _layers_carto_tile_layer__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../layers/carto-tile-layer */ "./src/layers/carto-tile-layer.ts");
54672
54675
  /* harmony import */ var _layers_h3_tile_layer__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../layers/h3-tile-layer */ "./src/layers/h3-tile-layer.ts");
@@ -54696,6 +54699,11 @@ const SCALE_FUNCS = {
54696
54699
  sqrt: d3_scale__WEBPACK_IMPORTED_MODULE_2__["scaleSqrt"],
54697
54700
  custom: d3_scale__WEBPACK_IMPORTED_MODULE_2__["scaleThreshold"]
54698
54701
  };
54702
+
54703
+ function identity(v) {
54704
+ return v;
54705
+ }
54706
+
54699
54707
  const UNKNOWN_COLOR = '#868d91';
54700
54708
  const AGGREGATION = {
54701
54709
  average: 'MEAN',
@@ -54749,6 +54757,12 @@ const sharedPropMap = {
54749
54757
  wireframe: 'wireframe'
54750
54758
  }
54751
54759
  };
54760
+ const customMarkersPropsMap = {
54761
+ color: 'getIconColor',
54762
+ visConfig: {
54763
+ radius: 'getIconSize'
54764
+ }
54765
+ };
54752
54766
  const aggregationVisConfig = {
54753
54767
  colorAggregation: x => ({
54754
54768
  colorAggregation: AGGREGATION[x] || AGGREGATION.sum
@@ -54778,8 +54792,14 @@ function mergePropMaps(a = {}, b = {}) {
54778
54792
  }
54779
54793
 
54780
54794
  function getLayer(type, config, dataset) {
54795
+ let basePropMap = sharedPropMap;
54796
+
54797
+ if (config.visConfig?.customMarkers && !config.textLabel) {
54798
+ basePropMap = mergePropMaps(sharedPropMap, customMarkersPropsMap);
54799
+ }
54800
+
54781
54801
  if (type === 'mvt' || type === 'tileset' || type === 'h3' || type === 'quadbin') {
54782
- return getTileLayer(dataset);
54802
+ return getTileLayer(dataset, basePropMap);
54783
54803
  }
54784
54804
 
54785
54805
  const geoColumn = dataset?.geoColumn;
@@ -54852,7 +54872,7 @@ function getLayer(type, config, dataset) {
54852
54872
  const layer = layerTypeDefs[type];
54853
54873
  Object(_utils__WEBPACK_IMPORTED_MODULE_10__["assert"])(layer, `Unsupported layer type: ${type}`);
54854
54874
  return { ...layer,
54855
- propMap: mergePropMaps(sharedPropMap, layer.propMap),
54875
+ propMap: mergePropMaps(basePropMap, layer.propMap),
54856
54876
  defaultProps: { ...defaultProps,
54857
54877
  ...layer.defaultProps
54858
54878
  }
@@ -54875,7 +54895,7 @@ function layerFromTileDataset(formatTiles = _maps_api_common__WEBPACK_IMPORTED_M
54875
54895
  return _layers_carto_tile_layer__WEBPACK_IMPORTED_MODULE_6__["default"];
54876
54896
  }
54877
54897
 
54878
- function getTileLayer(dataset) {
54898
+ function getTileLayer(dataset, basePropMap) {
54879
54899
  const {
54880
54900
  aggregationExp,
54881
54901
  aggregationResLevel,
@@ -54889,7 +54909,7 @@ function getTileLayer(dataset) {
54889
54909
  const formatTiles = new URL(tileUrl).searchParams.get('formatTiles');
54890
54910
  return {
54891
54911
  Layer: layerFromTileDataset(formatTiles, scheme),
54892
- propMap: sharedPropMap,
54912
+ propMap: basePropMap,
54893
54913
  defaultProps: { ...defaultProps,
54894
54914
  ...(aggregationExp && {
54895
54915
  aggregationExp
@@ -54924,7 +54944,7 @@ function domainFromAttribute(attribute, scaleType, scaleLength) {
54924
54944
  }
54925
54945
 
54926
54946
  function domainFromValues(values, scaleType) {
54927
- if (scaleType === 'ordinal') {
54947
+ if (scaleType === 'ordinal' || scaleType === 'point') {
54928
54948
  return Object(d3_array__WEBPACK_IMPORTED_MODULE_0__["groupSort"])(values, g => -g.length, d => d);
54929
54949
  } else if (scaleType === 'quantile') {
54930
54950
  return values.sort((a, b) => a - b);
@@ -55054,12 +55074,71 @@ function getColorAccessor({
55054
55074
 
55055
55075
  return normalizeAccessor(accessor, data);
55056
55076
  }
55077
+ const FALLBACK_ICON = 'data:image/svg+xml;charset=utf-8;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4NCiAgPGNpcmNsZSBjeD0iNTAiIGN5PSI1MCIgcj0iNTAiLz4NCjwvc3ZnPg==';
55078
+ function getIconUrlAccessor(field, fallbackUrl, range, maxIconSize, data) {
55079
+ const urlToUnpackedIcon = url => ({
55080
+ id: `${url}@@${maxIconSize}`,
55081
+ url,
55082
+ width: maxIconSize,
55083
+ height: maxIconSize,
55084
+ mask: true
55085
+ });
55086
+
55087
+ let unknownValue = fallbackUrl || FALLBACK_ICON;
55088
+
55089
+ if (range?.othersMarker) {
55090
+ unknownValue = range.othersMarker;
55091
+ }
55092
+
55093
+ const unknownIcon = urlToUnpackedIcon(unknownValue);
55094
+
55095
+ if (!range || !field) {
55096
+ return () => unknownIcon;
55097
+ }
55098
+
55099
+ const mapping = {};
55100
+
55101
+ for (const {
55102
+ value,
55103
+ markerUrl
55104
+ } of range.markerMap) {
55105
+ if (markerUrl) {
55106
+ mapping[value] = urlToUnpackedIcon(markerUrl);
55107
+ }
55108
+ }
55109
+
55110
+ const accessor = properties => {
55111
+ const propertyValue = properties[field.name];
55112
+ return mapping[propertyValue] || unknownIcon;
55113
+ };
55114
+
55115
+ return normalizeAccessor(accessor, data);
55116
+ }
55117
+ function getMaxMarkerSize(visConfig, visualChannels) {
55118
+ const {
55119
+ radiusRange,
55120
+ radius
55121
+ } = visConfig;
55122
+ const {
55123
+ radiusField,
55124
+ sizeField
55125
+ } = visualChannels;
55126
+ const field = radiusField || sizeField;
55127
+ return Math.ceil(radiusRange && field ? radiusRange[1] : radius);
55128
+ }
55129
+ function negateAccessor(accessor) {
55130
+ return typeof accessor === 'function' ? (d, i) => -accessor(d, i) : -accessor;
55131
+ }
55057
55132
  function getSizeAccessor({
55058
55133
  name
55059
55134
  }, scaleType, aggregation, range, data) {
55060
- const scale = SCALE_FUNCS[scaleType]();
55061
- scale.domain(calculateDomain(data, name, scaleType));
55062
- scale.range(range);
55135
+ const scale = scaleType ? SCALE_FUNCS[scaleType]() : identity;
55136
+
55137
+ if (scaleType) {
55138
+ scale.domain(calculateDomain(data, name, scaleType));
55139
+ scale.range(range);
55140
+ }
55141
+
55063
55142
  let accessorKeys = getAccessorKeys(name, aggregation);
55064
55143
 
55065
55144
  const accessor = properties => {
@@ -55394,7 +55473,7 @@ __webpack_require__.r(__webpack_exports__);
55394
55473
  /* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../config */ "./src/config.ts");
55395
55474
  /* harmony import */ var _maps_api_common__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./maps-api-common */ "./src/api/maps-api-common.ts");
55396
55475
  /* harmony import */ var _parseMap__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./parseMap */ "./src/api/parseMap.ts");
55397
- /* harmony import */ var _deck_gl_core__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @deck.gl/core */ "@deck.gl/extensions");
55476
+ /* harmony import */ var _deck_gl_core__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @deck.gl/core */ "@deck.gl/core");
55398
55477
  /* harmony import */ var _deck_gl_core__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_deck_gl_core__WEBPACK_IMPORTED_MODULE_3__);
55399
55478
  /* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utils */ "./src/utils.ts");
55400
55479
  /**
@@ -56020,7 +56099,7 @@ __webpack_require__.r(__webpack_exports__);
56020
56099
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "parseMap", function() { return parseMap; });
56021
56100
  /* harmony import */ var _luma_gl_constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @luma.gl/constants */ "../../node_modules/@luma.gl/constants/dist/esm/index.js");
56022
56101
  /* harmony import */ var _layer_map__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./layer-map */ "./src/api/layer-map.ts");
56023
- /* harmony import */ var _deck_gl_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @deck.gl/core */ "@deck.gl/extensions");
56102
+ /* harmony import */ var _deck_gl_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @deck.gl/core */ "@deck.gl/core");
56024
56103
  /* harmony import */ var _deck_gl_core__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_deck_gl_core__WEBPACK_IMPORTED_MODULE_2__);
56025
56104
  /* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils */ "./src/utils.ts");
56026
56105
 
@@ -56201,6 +56280,8 @@ function createChannelProps(visualChannels, type, config, data) {
56201
56280
  const {
56202
56281
  colorField,
56203
56282
  colorScale,
56283
+ radiusField,
56284
+ radiusScale,
56204
56285
  sizeField,
56205
56286
  sizeScale,
56206
56287
  strokeColorField,
@@ -56242,12 +56323,19 @@ function createChannelProps(visualChannels, type, config, data) {
56242
56323
  colorAggregation: aggregation,
56243
56324
  colorRange: range
56244
56325
  } = visConfig;
56245
- result.getFillColor = Object(_layer_map__WEBPACK_IMPORTED_MODULE_1__["getColorAccessor"])(colorField, colorScale, {
56326
+ result.getFillColor = Object(_layer_map__WEBPACK_IMPORTED_MODULE_1__["getColorAccessor"])(colorField, // @ts-ignore
56327
+ colorScale, {
56246
56328
  aggregation,
56247
56329
  range
56248
56330
  }, visConfig.opacity, data);
56249
56331
  }
56250
56332
 
56333
+ if (radiusField || sizeField) {
56334
+ result.getPointRadius = Object(_layer_map__WEBPACK_IMPORTED_MODULE_1__["getSizeAccessor"])( // @ts-ignore
56335
+ radiusField || sizeField, // @ts-ignore
56336
+ radiusScale || sizeScale, visConfig.sizeAggregation, visConfig.radiusRange || visConfig.sizeRange, data);
56337
+ }
56338
+
56251
56339
  if (strokeColorField) {
56252
56340
  const fallbackOpacity = type === 'point' ? visConfig.opacity : 1;
56253
56341
  const opacity = visConfig.strokeOpacity !== undefined ? visConfig.strokeOpacity : fallbackOpacity;
@@ -56255,18 +56343,17 @@ function createChannelProps(visualChannels, type, config, data) {
56255
56343
  strokeColorAggregation: aggregation,
56256
56344
  strokeColorRange: range
56257
56345
  } = visConfig;
56258
- result.getLineColor = Object(_layer_map__WEBPACK_IMPORTED_MODULE_1__["getColorAccessor"])(strokeColorField, strokeColorScale, {
56346
+ result.getLineColor = Object(_layer_map__WEBPACK_IMPORTED_MODULE_1__["getColorAccessor"])(strokeColorField, // @ts-ignore
56347
+ strokeColorScale, // @ts-ignore
56348
+ {
56259
56349
  aggregation,
56260
56350
  range
56261
56351
  }, opacity, data);
56262
56352
  }
56263
56353
 
56264
56354
  if (heightField) {
56265
- result.getElevation = Object(_layer_map__WEBPACK_IMPORTED_MODULE_1__["getSizeAccessor"])(heightField, heightScale, visConfig.heightAggregation, visConfig.heightRange || visConfig.sizeRange, data);
56266
- }
56267
-
56268
- if (sizeField) {
56269
- result.getPointRadius = Object(_layer_map__WEBPACK_IMPORTED_MODULE_1__["getSizeAccessor"])(sizeField, sizeScale, visConfig.sizeAggregation, visConfig.radiusRange || visConfig.sizeRange, data);
56355
+ result.getElevation = Object(_layer_map__WEBPACK_IMPORTED_MODULE_1__["getSizeAccessor"])(heightField, // @ts-ignore
56356
+ heightScale, visConfig.heightAggregation, visConfig.heightRange || visConfig.sizeRange, data);
56270
56357
  }
56271
56358
 
56272
56359
  if (textLabelField) {
@@ -56274,6 +56361,40 @@ function createChannelProps(visualChannels, type, config, data) {
56274
56361
  result.pointType = 'text';
56275
56362
  const radius = result.getPointRadius || visConfig.radius;
56276
56363
  result.getTextPixelOffset = Object(_layer_map__WEBPACK_IMPORTED_MODULE_1__["getTextPixelOffsetAccessor"])(textLabel, radius);
56364
+ } else if (visConfig.customMarkers) {
56365
+ const maxIconSize = Object(_layer_map__WEBPACK_IMPORTED_MODULE_1__["getMaxMarkerSize"])(visConfig, visualChannels);
56366
+ const {
56367
+ getPointRadius,
56368
+ getFillColor
56369
+ } = result;
56370
+ result.pointType = 'icon';
56371
+ result.getIcon = Object(_layer_map__WEBPACK_IMPORTED_MODULE_1__["getIconUrlAccessor"])(visualChannels.customMarkersField, visConfig.customMarkersUrl, visConfig.customMarkersRange, maxIconSize, data);
56372
+ result._subLayerProps = {
56373
+ 'points-icon': {
56374
+ loadOptions: {
56375
+ image: {
56376
+ type: 'imagebitmap'
56377
+ },
56378
+ imagebitmap: {
56379
+ resizeWidth: maxIconSize,
56380
+ resizeHeight: maxIconSize,
56381
+ resizeQuality: 'high'
56382
+ }
56383
+ }
56384
+ }
56385
+ };
56386
+
56387
+ if (getFillColor) {
56388
+ result.getIconColor = getFillColor;
56389
+ }
56390
+
56391
+ if (getPointRadius) {
56392
+ result.getIconSize = getPointRadius;
56393
+ }
56394
+
56395
+ if (visualChannels.rotationField) {
56396
+ result.getIconAngle = Object(_layer_map__WEBPACK_IMPORTED_MODULE_1__["negateAccessor"])(Object(_layer_map__WEBPACK_IMPORTED_MODULE_1__["getSizeAccessor"])(visualChannels.rotationField, undefined, null, undefined, data));
56397
+ }
56277
56398
  }
56278
56399
 
56279
56400
  return result;
@@ -56466,7 +56587,7 @@ __webpack_require__.r(__webpack_exports__);
56466
56587
  "use strict";
56467
56588
  __webpack_require__.r(__webpack_exports__);
56468
56589
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return CartoLayer; });
56469
- /* harmony import */ var _deck_gl_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @deck.gl/core */ "@deck.gl/extensions");
56590
+ /* harmony import */ var _deck_gl_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @deck.gl/core */ "@deck.gl/core");
56470
56591
  /* harmony import */ var _deck_gl_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_deck_gl_core__WEBPACK_IMPORTED_MODULE_0__);
56471
56592
  /* harmony import */ var _api__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../api */ "./src/api/index.ts");
56472
56593
  /* harmony import */ var _api_layer_map__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../api/layer-map */ "./src/api/layer-map.ts");
@@ -56731,7 +56852,7 @@ __webpack_require__.r(__webpack_exports__);
56731
56852
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return CartoTileLayer; });
56732
56853
  /* harmony import */ var _loaders_gl_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @loaders.gl/core */ "../../node_modules/@loaders.gl/core/dist/esm/index.js");
56733
56854
  /* harmony import */ var _schema_carto_vector_tile_loader__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./schema/carto-vector-tile-loader */ "./src/layers/schema/carto-vector-tile-loader.ts");
56734
- /* harmony import */ var _deck_gl_extensions__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @deck.gl/extensions */ "@deck.gl/extensions");
56855
+ /* harmony import */ var _deck_gl_extensions__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @deck.gl/extensions */ "@deck.gl/core");
56735
56856
  /* harmony import */ var _deck_gl_extensions__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_deck_gl_extensions__WEBPACK_IMPORTED_MODULE_2__);
56736
56857
  /* harmony import */ var _loaders_gl_gis__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @loaders.gl/gis */ "../../node_modules/@loaders.gl/gis/dist/esm/index.js");
56737
56858
  /* harmony import */ var _api_maps_api_common__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../api/maps-api-common */ "./src/api/maps-api-common.ts");
@@ -56845,7 +56966,7 @@ _defineProperty(CartoTileLayer, "defaultProps", defaultProps);
56845
56966
  "use strict";
56846
56967
  __webpack_require__.r(__webpack_exports__);
56847
56968
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return H3TileLayer; });
56848
- /* harmony import */ var _deck_gl_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @deck.gl/core */ "@deck.gl/extensions");
56969
+ /* harmony import */ var _deck_gl_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @deck.gl/core */ "@deck.gl/core");
56849
56970
  /* harmony import */ var _deck_gl_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_deck_gl_core__WEBPACK_IMPORTED_MODULE_0__);
56850
56971
  /* harmony import */ var _h3_tileset_2d__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./h3-tileset-2d */ "./src/layers/h3-tileset-2d.ts");
56851
56972
  /* harmony import */ var _spatial_index_tile_layer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./spatial-index-tile-layer */ "./src/layers/spatial-index-tile-layer.ts");
@@ -56964,7 +57085,7 @@ _defineProperty(H3TileLayer, "defaultProps", defaultProps);
56964
57085
  __webpack_require__.r(__webpack_exports__);
56965
57086
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getHexagonResolution", function() { return getHexagonResolution; });
56966
57087
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return H3Tileset2D; });
56967
- /* harmony import */ var _deck_gl_geo_layers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @deck.gl/geo-layers */ "@deck.gl/extensions");
57088
+ /* harmony import */ var _deck_gl_geo_layers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @deck.gl/geo-layers */ "@deck.gl/core");
56968
57089
  /* harmony import */ var _deck_gl_geo_layers__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_deck_gl_geo_layers__WEBPACK_IMPORTED_MODULE_0__);
56969
57090
  /* harmony import */ var h3_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! h3-js */ "h3-js");
56970
57091
  /* harmony import */ var h3_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(h3_js__WEBPACK_IMPORTED_MODULE_1__);
@@ -57120,7 +57241,7 @@ class H3Tileset2D extends _deck_gl_geo_layers__WEBPACK_IMPORTED_MODULE_0__["_Til
57120
57241
  "use strict";
57121
57242
  __webpack_require__.r(__webpack_exports__);
57122
57243
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return QuadbinLayer; });
57123
- /* harmony import */ var _deck_gl_geo_layers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @deck.gl/geo-layers */ "@deck.gl/extensions");
57244
+ /* harmony import */ var _deck_gl_geo_layers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @deck.gl/geo-layers */ "@deck.gl/core");
57124
57245
  /* harmony import */ var _deck_gl_geo_layers__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_deck_gl_geo_layers__WEBPACK_IMPORTED_MODULE_0__);
57125
57246
  /* harmony import */ var _quadbin_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./quadbin-utils */ "./src/layers/quadbin-utils.ts");
57126
57247
  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; }
@@ -57167,7 +57288,7 @@ _defineProperty(QuadbinLayer, "defaultProps", defaultProps);
57167
57288
  "use strict";
57168
57289
  __webpack_require__.r(__webpack_exports__);
57169
57290
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return QuadbinTileLayer; });
57170
- /* harmony import */ var _deck_gl_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @deck.gl/core */ "@deck.gl/extensions");
57291
+ /* harmony import */ var _deck_gl_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @deck.gl/core */ "@deck.gl/core");
57171
57292
  /* harmony import */ var _deck_gl_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_deck_gl_core__WEBPACK_IMPORTED_MODULE_0__);
57172
57293
  /* harmony import */ var _quadbin_layer__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./quadbin-layer */ "./src/layers/quadbin-layer.ts");
57173
57294
  /* harmony import */ var _quadbin_tileset_2d__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./quadbin-tileset-2d */ "./src/layers/quadbin-tileset-2d.ts");
@@ -57258,7 +57379,7 @@ _defineProperty(QuadbinTileLayer, "defaultProps", defaultProps);
57258
57379
  "use strict";
57259
57380
  __webpack_require__.r(__webpack_exports__);
57260
57381
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return QuadbinTileset2D; });
57261
- /* harmony import */ var _deck_gl_geo_layers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @deck.gl/geo-layers */ "@deck.gl/extensions");
57382
+ /* harmony import */ var _deck_gl_geo_layers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @deck.gl/geo-layers */ "@deck.gl/core");
57262
57383
  /* harmony import */ var _deck_gl_geo_layers__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_deck_gl_geo_layers__WEBPACK_IMPORTED_MODULE_0__);
57263
57384
  /* harmony import */ var _quadbin_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./quadbin-utils */ "./src/layers/quadbin-utils.ts");
57264
57385
 
@@ -57906,7 +58027,7 @@ __webpack_require__.r(__webpack_exports__);
57906
58027
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return SpatialIndexTileLayer; });
57907
58028
  /* harmony import */ var _loaders_gl_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @loaders.gl/core */ "../../node_modules/@loaders.gl/core/dist/esm/index.js");
57908
58029
  /* harmony import */ var _schema_carto_spatial_tile_loader__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./schema/carto-spatial-tile-loader */ "./src/layers/schema/carto-spatial-tile-loader.ts");
57909
- /* harmony import */ var _deck_gl_geo_layers__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @deck.gl/geo-layers */ "@deck.gl/extensions");
58030
+ /* harmony import */ var _deck_gl_geo_layers__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @deck.gl/geo-layers */ "@deck.gl/core");
57910
58031
  /* harmony import */ var _deck_gl_geo_layers__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_deck_gl_geo_layers__WEBPACK_IMPORTED_MODULE_2__);
57911
58032
  /* harmony import */ var _api_maps_api_common__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../api/maps-api-common */ "./src/api/maps-api-common.ts");
57912
58033
  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; }
@@ -58260,7 +58381,7 @@ function assert(condition, message = '') {
58260
58381
  "use strict";
58261
58382
  __webpack_require__.r(__webpack_exports__);
58262
58383
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "assert", function() { return assert; });
58263
- /* harmony import */ var _deck_gl_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @deck.gl/core */ "@deck.gl/extensions");
58384
+ /* harmony import */ var _deck_gl_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @deck.gl/core */ "@deck.gl/core");
58264
58385
  /* harmony import */ var _deck_gl_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_deck_gl_core__WEBPACK_IMPORTED_MODULE_0__);
58265
58386
 
58266
58387
  function assert(condition, message) {
@@ -58357,14 +58478,14 @@ function assert(condition, message) {
58357
58478
 
58358
58479
  /***/ }),
58359
58480
 
58360
- /***/ "@deck.gl/extensions":
58481
+ /***/ "@deck.gl/core":
58361
58482
  /*!***********************!*\
58362
58483
  !*** external "deck" ***!
58363
58484
  \***********************/
58364
58485
  /*! no static exports found */
58365
58486
  /***/ (function(module, exports) {
58366
58487
 
58367
- module.exports = __WEBPACK_EXTERNAL_MODULE__deck_gl_extensions__;
58488
+ module.exports = __WEBPACK_EXTERNAL_MODULE__deck_gl_core__;
58368
58489
 
58369
58490
  /***/ }),
58370
58491
 
@@ -10,6 +10,9 @@ exports.layerFromTileDataset = layerFromTileDataset;
10
10
  exports.opacityToAlpha = opacityToAlpha;
11
11
  exports.getColorValueAccessor = getColorValueAccessor;
12
12
  exports.getColorAccessor = getColorAccessor;
13
+ exports.getIconUrlAccessor = getIconUrlAccessor;
14
+ exports.getMaxMarkerSize = getMaxMarkerSize;
15
+ exports.negateAccessor = negateAccessor;
13
16
  exports.getSizeAccessor = getSizeAccessor;
14
17
  exports.getTextAccessor = getTextAccessor;
15
18
  exports.getTextPixelOffsetAccessor = getTextPixelOffsetAccessor;
@@ -66,6 +69,11 @@ var SCALE_FUNCS = {
66
69
  sqrt: _d3Scale.scaleSqrt,
67
70
  custom: _d3Scale.scaleThreshold
68
71
  };
72
+
73
+ function identity(v) {
74
+ return v;
75
+ }
76
+
69
77
  var UNKNOWN_COLOR = '#868d91';
70
78
  var AGGREGATION = {
71
79
  average: 'MEAN',
@@ -127,6 +135,12 @@ var sharedPropMap = {
127
135
  wireframe: 'wireframe'
128
136
  }
129
137
  };
138
+ var customMarkersPropsMap = {
139
+ color: 'getIconColor',
140
+ visConfig: {
141
+ radius: 'getIconSize'
142
+ }
143
+ };
130
144
  var aggregationVisConfig = {
131
145
  colorAggregation: function colorAggregation(x) {
132
146
  return {
@@ -159,10 +173,16 @@ function mergePropMaps() {
159
173
  }
160
174
 
161
175
  function getLayer(type, config, dataset) {
162
- var _config$columns;
176
+ var _config$visConfig, _config$columns;
177
+
178
+ var basePropMap = sharedPropMap;
179
+
180
+ if ((_config$visConfig = config.visConfig) !== null && _config$visConfig !== void 0 && _config$visConfig.customMarkers && !config.textLabel) {
181
+ basePropMap = mergePropMaps(sharedPropMap, customMarkersPropsMap);
182
+ }
163
183
 
164
184
  if (type === 'mvt' || type === 'tileset' || type === 'h3' || type === 'quadbin') {
165
- return getTileLayer(dataset);
185
+ return getTileLayer(dataset, basePropMap);
166
186
  }
167
187
 
168
188
  var geoColumn = dataset === null || dataset === void 0 ? void 0 : dataset.geoColumn;
@@ -243,7 +263,7 @@ function getLayer(type, config, dataset) {
243
263
  var layer = layerTypeDefs[type];
244
264
  (0, _utils.assert)(layer, "Unsupported layer type: ".concat(type));
245
265
  return _objectSpread(_objectSpread({}, layer), {}, {
246
- propMap: mergePropMaps(sharedPropMap, layer.propMap),
266
+ propMap: mergePropMaps(basePropMap, layer.propMap),
247
267
  defaultProps: _objectSpread(_objectSpread({}, defaultProps), layer.defaultProps)
248
268
  });
249
269
  }
@@ -267,7 +287,7 @@ function layerFromTileDataset() {
267
287
  return _cartoTileLayer.default;
268
288
  }
269
289
 
270
- function getTileLayer(dataset) {
290
+ function getTileLayer(dataset, basePropMap) {
271
291
  var aggregationExp = dataset.aggregationExp,
272
292
  aggregationResLevel = dataset.aggregationResLevel,
273
293
  _dataset$data = dataset.data,
@@ -278,7 +298,7 @@ function getTileLayer(dataset) {
278
298
  var formatTiles = new URL(tileUrl).searchParams.get('formatTiles');
279
299
  return {
280
300
  Layer: layerFromTileDataset(formatTiles, scheme),
281
- propMap: sharedPropMap,
301
+ propMap: basePropMap,
282
302
  defaultProps: _objectSpread(_objectSpread(_objectSpread(_objectSpread({}, defaultProps), aggregationExp && {
283
303
  aggregationExp: aggregationExp
284
304
  }), aggregationResLevel && {
@@ -313,7 +333,7 @@ function domainFromAttribute(attribute, scaleType, scaleLength) {
313
333
  }
314
334
 
315
335
  function domainFromValues(values, scaleType) {
316
- if (scaleType === 'ordinal') {
336
+ if (scaleType === 'ordinal' || scaleType === 'point') {
317
337
  return (0, _d3Array.groupSort)(values, function (g) {
318
338
  return -g.length;
319
339
  }, function (d) {
@@ -472,11 +492,86 @@ function getColorAccessor(_ref4, scaleType, _ref5, opacity, data) {
472
492
  return normalizeAccessor(accessor, data);
473
493
  }
474
494
 
495
+ var FALLBACK_ICON = 'data:image/svg+xml;charset=utf-8;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4NCiAgPGNpcmNsZSBjeD0iNTAiIGN5PSI1MCIgcj0iNTAiLz4NCjwvc3ZnPg==';
496
+
497
+ function getIconUrlAccessor(field, fallbackUrl, range, maxIconSize, data) {
498
+ var urlToUnpackedIcon = function urlToUnpackedIcon(url) {
499
+ return {
500
+ id: "".concat(url, "@@").concat(maxIconSize),
501
+ url: url,
502
+ width: maxIconSize,
503
+ height: maxIconSize,
504
+ mask: true
505
+ };
506
+ };
507
+
508
+ var unknownValue = fallbackUrl || FALLBACK_ICON;
509
+
510
+ if (range !== null && range !== void 0 && range.othersMarker) {
511
+ unknownValue = range.othersMarker;
512
+ }
513
+
514
+ var unknownIcon = urlToUnpackedIcon(unknownValue);
515
+
516
+ if (!range || !field) {
517
+ return function () {
518
+ return unknownIcon;
519
+ };
520
+ }
521
+
522
+ var mapping = {};
523
+
524
+ var _iterator2 = _createForOfIteratorHelper(range.markerMap),
525
+ _step2;
526
+
527
+ try {
528
+ for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
529
+ var _step2$value = _step2.value,
530
+ _value = _step2$value.value,
531
+ markerUrl = _step2$value.markerUrl;
532
+
533
+ if (markerUrl) {
534
+ mapping[_value] = urlToUnpackedIcon(markerUrl);
535
+ }
536
+ }
537
+ } catch (err) {
538
+ _iterator2.e(err);
539
+ } finally {
540
+ _iterator2.f();
541
+ }
542
+
543
+ var accessor = function accessor(properties) {
544
+ var propertyValue = properties[field.name];
545
+ return mapping[propertyValue] || unknownIcon;
546
+ };
547
+
548
+ return normalizeAccessor(accessor, data);
549
+ }
550
+
551
+ function getMaxMarkerSize(visConfig, visualChannels) {
552
+ var radiusRange = visConfig.radiusRange,
553
+ radius = visConfig.radius;
554
+ var radiusField = visualChannels.radiusField,
555
+ sizeField = visualChannels.sizeField;
556
+ var field = radiusField || sizeField;
557
+ return Math.ceil(radiusRange && field ? radiusRange[1] : radius);
558
+ }
559
+
560
+ function negateAccessor(accessor) {
561
+ return typeof accessor === 'function' ? function (d, i) {
562
+ return -accessor(d, i);
563
+ } : -accessor;
564
+ }
565
+
475
566
  function getSizeAccessor(_ref8, scaleType, aggregation, range, data) {
476
567
  var name = _ref8.name;
477
- var scale = SCALE_FUNCS[scaleType]();
478
- scale.domain(calculateDomain(data, name, scaleType));
479
- scale.range(range);
568
+ var scale = scaleType ? SCALE_FUNCS[scaleType]() : identity;
569
+
570
+ if (scaleType) {
571
+ scale.domain(calculateDomain(data, name, scaleType));
572
+ scale.range(range);
573
+ }
574
+
480
575
  var accessorKeys = getAccessorKeys(name, aggregation);
481
576
 
482
577
  var accessor = function accessor(properties) {