@deck.gl/carto 8.8.9 → 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.
Files changed (96) hide show
  1. package/dist/dist.dev.js +1747 -1555
  2. package/dist/es5/api/layer-map.js +104 -9
  3. package/dist/es5/api/layer-map.js.map +1 -1
  4. package/dist/es5/api/maps-v3-client.js +8 -8
  5. package/dist/es5/api/maps-v3-client.js.map +1 -1
  6. package/dist/es5/api/parseMap.js +38 -4
  7. package/dist/es5/api/parseMap.js.map +1 -1
  8. package/dist/es5/api/types.js +2 -0
  9. package/dist/es5/api/types.js.map +1 -0
  10. package/dist/es5/layers/carto-tile-layer.js +33 -107
  11. package/dist/es5/layers/carto-tile-layer.js.map +1 -1
  12. package/dist/es5/layers/schema/carto-spatial-tile-loader.js +6 -30
  13. package/dist/es5/layers/schema/carto-spatial-tile-loader.js.map +1 -1
  14. package/dist/es5/layers/schema/carto-tile.js +30 -6
  15. package/dist/es5/layers/schema/carto-tile.js.map +1 -1
  16. package/dist/es5/layers/schema/carto-vector-tile-loader.js +81 -0
  17. package/dist/es5/layers/schema/carto-vector-tile-loader.js.map +1 -0
  18. package/dist/es5/layers/schema/tile-loader-utils.js +34 -0
  19. package/dist/es5/layers/schema/tile-loader-utils.js.map +1 -0
  20. package/dist/es5/layers/spatial-index-tile-layer.js +40 -0
  21. package/dist/es5/layers/spatial-index-tile-layer.js.map +1 -1
  22. package/dist/esm/api/layer-map.js +85 -9
  23. package/dist/esm/api/layer-map.js.map +1 -1
  24. package/dist/esm/api/maps-v3-client.js +3 -2
  25. package/dist/esm/api/maps-v3-client.js.map +1 -1
  26. package/dist/esm/api/parseMap.js +41 -5
  27. package/dist/esm/api/parseMap.js.map +1 -1
  28. package/dist/esm/api/types.js +2 -0
  29. package/dist/esm/api/types.js.map +1 -0
  30. package/dist/esm/layers/carto-tile-layer.js +31 -82
  31. package/dist/esm/layers/carto-tile-layer.js.map +1 -1
  32. package/dist/esm/layers/schema/carto-spatial-tile-loader.js +4 -27
  33. package/dist/esm/layers/schema/carto-spatial-tile-loader.js.map +1 -1
  34. package/dist/esm/layers/schema/carto-tile.js +22 -6
  35. package/dist/esm/layers/schema/carto-tile.js.map +1 -1
  36. package/dist/esm/layers/schema/carto-vector-tile-loader.js +40 -0
  37. package/dist/esm/layers/schema/carto-vector-tile-loader.js.map +1 -0
  38. package/dist/esm/layers/schema/tile-loader-utils.js +23 -0
  39. package/dist/esm/layers/schema/tile-loader-utils.js.map +1 -0
  40. package/dist/esm/layers/spatial-index-tile-layer.js +40 -1
  41. package/dist/esm/layers/spatial-index-tile-layer.js.map +1 -1
  42. package/dist.min.js +138 -138
  43. package/package.json +2 -2
  44. package/src/api/layer-map.ts +103 -17
  45. package/src/api/maps-v3-client.ts +3 -3
  46. package/src/api/parseMap.ts +80 -15
  47. package/src/api/types.ts +108 -0
  48. package/src/layers/carto-tile-layer.ts +32 -82
  49. package/src/layers/schema/carto-spatial-tile-loader.ts +4 -27
  50. package/src/layers/schema/carto-tile.ts +31 -6
  51. package/src/layers/schema/carto-vector-tile-loader.ts +39 -0
  52. package/src/layers/schema/tile-loader-utils.ts +22 -0
  53. package/src/layers/spatial-index-tile-layer.ts +37 -1
  54. package/typed/api/layer-map.d.ts +10 -13
  55. package/typed/api/layer-map.d.ts.map +1 -1
  56. package/typed/api/parseMap.d.ts.map +1 -1
  57. package/typed/api/types.d.ts +87 -0
  58. package/typed/api/types.d.ts.map +1 -0
  59. package/typed/layers/carto-tile-layer.d.ts +2 -0
  60. package/typed/layers/carto-tile-layer.d.ts.map +1 -1
  61. package/typed/layers/schema/carto-spatial-tile-loader.d.ts.map +1 -1
  62. package/typed/layers/schema/carto-tile.d.ts +4 -0
  63. package/typed/layers/schema/carto-tile.d.ts.map +1 -1
  64. package/typed/layers/schema/carto-vector-tile-loader.d.ts +4 -0
  65. package/typed/layers/schema/carto-vector-tile-loader.d.ts.map +1 -0
  66. package/typed/layers/schema/tile-loader-utils.d.ts +5 -0
  67. package/typed/layers/schema/tile-loader-utils.d.ts.map +1 -0
  68. package/typed/layers/spatial-index-tile-layer.d.ts +2 -1
  69. package/typed/layers/spatial-index-tile-layer.d.ts.map +1 -1
  70. package/typed/api/index.js +0 -3
  71. package/typed/api/layer-map.js +0 -264
  72. package/typed/api/maps-api-common.js +0 -50
  73. package/typed/api/maps-client.js +0 -125
  74. package/typed/api/maps-v3-client.js +0 -304
  75. package/typed/api/parseMap.js +0 -178
  76. package/typed/basemap.js +0 -9
  77. package/typed/config.js +0 -35
  78. package/typed/index.js +0 -10
  79. package/typed/layers/carto-layer.js +0 -173
  80. package/typed/layers/carto-tile-layer.js +0 -105
  81. package/typed/layers/h3-tile-layer.js +0 -47
  82. package/typed/layers/h3-tileset-2d.js +0 -85
  83. package/typed/layers/quadkey-tile-layer.d.ts +0 -21
  84. package/typed/layers/quadkey-tile-layer.d.ts.map +0 -1
  85. package/typed/layers/quadkey-tile-layer.js +0 -42
  86. package/typed/layers/quadkey-tileset-2d.d.ts +0 -15
  87. package/typed/layers/quadkey-tileset-2d.d.ts.map +0 -1
  88. package/typed/layers/quadkey-tileset-2d.js +0 -36
  89. package/typed/layers/schema/carto-tile.js +0 -161
  90. package/typed/layers/spatial-index-tile-layer.js +0 -40
  91. package/typed/style/color-bins-style.js +0 -12
  92. package/typed/style/color-categories-style.js +0 -16
  93. package/typed/style/color-continuous-style.js +0 -12
  94. package/typed/style/palette.js +0 -62
  95. package/typed/style/utils.js +0 -15
  96. package/typed/utils.js +0 -4
@@ -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) {
@@ -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","layerTypeDefs","Layer","GeoJsonLayer","propMap","outline","geojson","grid","CPUGridLayer","worldUnitSize","cellSize","heatmap","HeatmapLayer","hexagon","HexagonLayer","H3HexagonLayer","getHexagon","layer","layerFromTileDataset","formatTiles","TILE_FORMATS","MVT","scheme","H3TileLayer","QuadbinTileLayer","MVTLayer","CartoTileLayer","aggregationExp","aggregationResLevel","data","tiles","tileUrl","URL","searchParams","get","uniqueIdProperty","domainFromAttribute","attribute","scaleType","scaleLength","categories","category","filter","undefined","quantiles","min","max","domainFromValues","sort","d0","d1","calculateDomain","name","tilestats","attributes","layers","find","features","properties","Array","isArray","normalizeAccessor","opacityToAlpha","Math","round","pow","getAccessorKeys","aggregation","keys","concat","toUpperCase","findAccessorKey","key","Error","getColorValueAccessor","aggregator","p","getColorAccessor","range","colorMap","scale","domain","scaleColor","forEach","value","push","slice","unknown","alpha","accessorKeys","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 H3TileLayer from '../layers/h3-tile-layer';\nimport QuadbinTileLayer from '../layers/quadbin-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' || type === 'h3' || type === 'quadbin') {\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\nexport function layerFromTileDataset(\n formatTiles: string | null = TILE_FORMATS.MVT,\n scheme: string\n): typeof CartoTileLayer | typeof H3TileLayer | typeof MVTLayer | typeof QuadbinTileLayer {\n if (scheme === 'h3') {\n return H3TileLayer;\n }\n if (scheme === 'quadbin') {\n return QuadbinTileLayer;\n }\n if (formatTiles === TILE_FORMATS.MVT) {\n return MVTLayer;\n }\n\n // formatTiles === BINARY|JSON|GEOJSON\n return CartoTileLayer;\n}\n\nfunction getTileLayer(dataset) {\n const {\n aggregationExp,\n aggregationResLevel,\n data: {\n scheme,\n tiles: [tileUrl]\n }\n } = dataset;\n /* global URL */\n const formatTiles = new URL(tileUrl).searchParams.get('formatTiles');\n\n return {\n Layer: layerFromTileDataset(formatTiles, scheme),\n propMap: sharedPropMap,\n defaultProps: {\n ...defaultProps,\n ...(aggregationExp && {aggregationExp}),\n ...(aggregationResLevel && {aggregationResLevel}),\n formatTiles,\n uniqueIdProperty: 'geoid'\n }\n };\n}\n\nfunction domainFromAttribute(attribute, scaleType: SCALE_TYPE, scaleLength: number) {\n if (scaleType === 'ordinal' || scaleType === 'point') {\n return attribute.categories.map(c => c.category).filter(c => c !== undefined && c !== null);\n }\n\n if (scaleType === 'quantile' && attribute.quantiles) {\n return attribute.quantiles[scaleLength];\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, scaleLength?) {\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, scaleLength);\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\nfunction getAccessorKeys(name: string, aggregation: string | undefined): string[] {\n let keys = [name];\n if (aggregation) {\n // Snowflake will capitalized the keys, need to check lower and upper case version\n keys = keys.concat([aggregation, aggregation.toUpperCase()].map(a => `${name}_${a}`));\n }\n return keys;\n}\n\nfunction findAccessorKey(keys: string[], properties): string[] {\n for (const key of keys) {\n if (key in properties) {\n return [key];\n }\n }\n\n throw new Error(`Could not find property for any accessor key: ${keys}`);\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 {aggregation, range: {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, colors.length);\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 let accessorKeys = getAccessorKeys(name, aggregation);\n const accessor = properties => {\n if (!(accessorKeys[0] in properties)) {\n accessorKeys = findAccessorKey(accessorKeys, properties);\n }\n const propertyValue = properties[accessorKeys[0]];\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(\n {name},\n scaleType: SCALE_TYPE,\n aggregation,\n range: Iterable<Range>,\n data: any\n) {\n const scale = SCALE_FUNCS[scaleType as any]();\n scale.domain(calculateDomain(data, name, scaleType));\n scale.range(range);\n\n let accessorKeys = getAccessorKeys(name, aggregation);\n const accessor = properties => {\n if (!(accessorKeys[0] in properties)) {\n accessorKeys = findAccessorKey(accessorKeys, properties);\n }\n const propertyValue = properties[accessorKeys[0]];\n return scale(propertyValue);\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","identity","v","UNKNOWN_COLOR","AGGREGATION","average","maximum","minimum","sum","OPACITY_MAP","getFillColor","getLineColor","getTextColor","AGGREGATION_FUNC","values","accessor","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","customMarkersPropsMap","aggregationVisConfig","colorAggregation","x","colorRange","colors","map","coverage","elevationPercentile","percentile","defaultProps","lineMiterLimit","lineWidthUnits","pointRadiusUnits","rounded","wrapLongitude","mergePropMaps","a","getLayer","type","config","dataset","basePropMap","customMarkers","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","layerFromTileDataset","formatTiles","TILE_FORMATS","MVT","scheme","H3TileLayer","QuadbinTileLayer","MVTLayer","CartoTileLayer","aggregationExp","aggregationResLevel","data","tiles","tileUrl","URL","searchParams","get","uniqueIdProperty","domainFromAttribute","attribute","scaleType","scaleLength","categories","category","filter","undefined","quantiles","min","max","domainFromValues","sort","d0","d1","calculateDomain","name","tilestats","attributes","layers","find","features","properties","Array","isArray","normalizeAccessor","opacityToAlpha","Math","round","pow","getAccessorKeys","aggregation","keys","concat","toUpperCase","findAccessorKey","key","Error","getColorValueAccessor","aggregator","p","getColorAccessor","range","colorMap","scale","domain","scaleColor","forEach","value","push","slice","unknown","alpha","accessorKeys","propertyValue","FALLBACK_ICON","getIconUrlAccessor","field","fallbackUrl","maxIconSize","urlToUnpackedIcon","url","id","width","height","mask","unknownValue","othersMarker","unknownIcon","mapping","markerMap","markerUrl","getMaxMarkerSize","visualChannels","radiusRange","radiusField","sizeField","ceil","negateAccessor","i","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 {Accessor, 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 H3TileLayer from '../layers/h3-tile-layer';\nimport QuadbinTileLayer from '../layers/quadbin-tile-layer';\nimport {TILE_FORMATS} from './maps-api-common';\nimport {assert} from '../utils';\nimport {\n CustomMarkersRange,\n MapDataset,\n MapTextSubLayerConfig,\n TextLabel,\n VisConfig,\n VisualChannelField,\n VisualChannels\n} from './types';\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\nfunction identity<T>(v: T): T {\n return v;\n}\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 customMarkersPropsMap = {\n color: 'getIconColor',\n visConfig: {\n radius: 'getIconSize'\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: MapTextSubLayerConfig,\n dataset: MapDataset\n): {Layer: ConstructorOf<Layer>; propMap: any; defaultProps: any} {\n let basePropMap: any = sharedPropMap;\n\n if (config.visConfig?.customMarkers && !config.textLabel) {\n basePropMap = mergePropMaps(sharedPropMap, customMarkersPropsMap);\n }\n if (type === 'mvt' || type === 'tileset' || type === 'h3' || type === 'quadbin') {\n return getTileLayer(dataset, basePropMap);\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(basePropMap, layer.propMap),\n defaultProps: {...defaultProps, ...layer.defaultProps}\n };\n}\n\nexport function layerFromTileDataset(\n formatTiles: string | null = TILE_FORMATS.MVT,\n scheme: string\n): typeof CartoTileLayer | typeof H3TileLayer | typeof MVTLayer | typeof QuadbinTileLayer {\n if (scheme === 'h3') {\n return H3TileLayer;\n }\n if (scheme === 'quadbin') {\n return QuadbinTileLayer;\n }\n if (formatTiles === TILE_FORMATS.MVT) {\n return MVTLayer;\n }\n\n // formatTiles === BINARY|JSON|GEOJSON\n return CartoTileLayer;\n}\n\nfunction getTileLayer(dataset: MapDataset, basePropMap) {\n const {\n aggregationExp,\n aggregationResLevel,\n data: {\n scheme,\n tiles: [tileUrl]\n }\n } = dataset;\n /* global URL */\n const formatTiles = new URL(tileUrl).searchParams.get('formatTiles');\n\n return {\n Layer: layerFromTileDataset(formatTiles, scheme),\n propMap: basePropMap,\n defaultProps: {\n ...defaultProps,\n ...(aggregationExp && {aggregationExp}),\n ...(aggregationResLevel && {aggregationResLevel}),\n formatTiles,\n uniqueIdProperty: 'geoid'\n }\n };\n}\n\nfunction domainFromAttribute(attribute, scaleType: SCALE_TYPE, scaleLength: number) {\n if (scaleType === 'ordinal' || scaleType === 'point') {\n return attribute.categories.map(c => c.category).filter(c => c !== undefined && c !== null);\n }\n\n if (scaleType === 'quantile' && attribute.quantiles) {\n return attribute.quantiles[scaleLength];\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' || scaleType === 'point') {\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, scaleLength?) {\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, scaleLength);\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?: number) {\n return opacity !== undefined ? Math.round(255 * Math.pow(opacity, 1 / 2.2)) : 255;\n}\n\nfunction getAccessorKeys(name: string, aggregation: string | undefined): string[] {\n let keys = [name];\n if (aggregation) {\n // Snowflake will capitalized the keys, need to check lower and upper case version\n keys = keys.concat([aggregation, aggregation.toUpperCase()].map(a => `${name}_${a}`));\n }\n return keys;\n}\n\nfunction findAccessorKey(keys: string[], properties): string[] {\n for (const key of keys) {\n if (key in properties) {\n return [key];\n }\n }\n\n throw new Error(`Could not find property for any accessor key: ${keys}`);\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 {aggregation, range: {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, colors.length);\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 let accessorKeys = getAccessorKeys(name, aggregation);\n const accessor = properties => {\n if (!(accessorKeys[0] in properties)) {\n accessorKeys = findAccessorKey(accessorKeys, properties);\n }\n const propertyValue = properties[accessorKeys[0]];\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\nconst FALLBACK_ICON =\n 'data:image/svg+xml;charset=utf-8;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4NCiAgPGNpcmNsZSBjeD0iNTAiIGN5PSI1MCIgcj0iNTAiLz4NCjwvc3ZnPg==';\n\nexport function getIconUrlAccessor(\n field: VisualChannelField | null | undefined,\n fallbackUrl: string | null | undefined,\n range: CustomMarkersRange | null | undefined,\n maxIconSize: number,\n data: any\n) {\n const urlToUnpackedIcon = (url: string) => ({\n id: `${url}@@${maxIconSize}`,\n url,\n width: maxIconSize,\n height: maxIconSize,\n mask: true\n });\n let unknownValue = fallbackUrl || FALLBACK_ICON;\n\n if (range?.othersMarker) {\n unknownValue = range.othersMarker;\n }\n\n const unknownIcon = urlToUnpackedIcon(unknownValue);\n if (!range || !field) {\n return () => unknownIcon;\n }\n\n const mapping: Record<string, any> = {};\n for (const {value, markerUrl} of range.markerMap) {\n if (markerUrl) {\n mapping[value] = urlToUnpackedIcon(markerUrl);\n }\n }\n\n const accessor = properties => {\n const propertyValue = properties[field.name];\n return mapping[propertyValue] || unknownIcon;\n };\n return normalizeAccessor(accessor, data);\n}\n\nexport function getMaxMarkerSize(visConfig: VisConfig, visualChannels: VisualChannels): number {\n const {radiusRange, radius} = visConfig;\n const {radiusField, sizeField} = visualChannels;\n const field = radiusField || sizeField;\n return Math.ceil(radiusRange && field ? radiusRange[1] : radius);\n}\n\nexport function negateAccessor<T>(accessor: Accessor<T, number>): Accessor<T, number> {\n return typeof accessor === 'function' ? (d, i) => -accessor(d, i) : -accessor;\n}\n\nexport function getSizeAccessor(\n {name},\n scaleType: SCALE_TYPE | undefined,\n aggregation,\n range: Iterable<Range> | undefined,\n data: any\n) {\n const scale = scaleType ? SCALE_FUNCS[scaleType as any]() : identity;\n if (scaleType) {\n scale.domain(calculateDomain(data, name, scaleType));\n scale.range(range);\n }\n\n let accessorKeys = getAccessorKeys(name, aggregation);\n const accessor = properties => {\n if (!(accessorKeys[0] in properties)) {\n accessorKeys = findAccessorKey(accessorKeys, properties);\n }\n const propertyValue = properties[accessorKeys[0]];\n return scale(propertyValue);\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}: VisualChannelField, 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(\n {alignment, anchor, size}: TextLabel,\n radius\n): Accessor<unknown, [number, number]> {\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: number): [number, number] => [\n signX * (r + padding),\n signY * (r + padding + sizeOffset)\n ];\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"}
@@ -530,19 +530,19 @@ function _fetchDataUrl2() {
530
530
  return _fetchDataUrl2.apply(this, arguments);
531
531
  }
532
532
 
533
- function _fetchMapDataset(_x7, _x8, _x9, _x10, _x11, _x12) {
533
+ function _fetchMapDataset(_x7, _x8, _x9, _x10, _x11) {
534
534
  return _fetchMapDataset2.apply(this, arguments);
535
535
  }
536
536
 
537
537
  function _fetchMapDataset2() {
538
- _fetchMapDataset2 = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee7(dataset, accessToken, credentials, clientId, headers, queryParameters) {
539
- var aggregationExp, aggregationResLevel, connection, columns, format, geoColumn, source, type, _yield$_fetchDataUrl2, url, mapFormat, cache;
538
+ _fetchMapDataset2 = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee7(dataset, accessToken, credentials, clientId, headers) {
539
+ var aggregationExp, aggregationResLevel, connection, columns, format, geoColumn, source, type, queryParameters, _yield$_fetchDataUrl2, url, mapFormat, cache;
540
540
 
541
541
  return _regenerator.default.wrap(function _callee7$(_context7) {
542
542
  while (1) {
543
543
  switch (_context7.prev = _context7.next) {
544
544
  case 0:
545
- aggregationExp = dataset.aggregationExp, aggregationResLevel = dataset.aggregationResLevel, connection = dataset.connectionName, columns = dataset.columns, format = dataset.format, geoColumn = dataset.geoColumn, source = dataset.source, type = dataset.type;
545
+ aggregationExp = dataset.aggregationExp, aggregationResLevel = dataset.aggregationResLevel, connection = dataset.connectionName, columns = dataset.columns, format = dataset.format, geoColumn = dataset.geoColumn, source = dataset.source, type = dataset.type, queryParameters = dataset.queryParameters;
546
546
  _context7.next = 3;
547
547
  return _fetchDataUrl({
548
548
  aggregationExp: aggregationExp,
@@ -597,7 +597,7 @@ function _fetchMapDataset2() {
597
597
  return _fetchMapDataset2.apply(this, arguments);
598
598
  }
599
599
 
600
- function _fetchTilestats(_x13, _x14, _x15, _x16) {
600
+ function _fetchTilestats(_x12, _x13, _x14, _x15) {
601
601
  return _fetchTilestats2.apply(this, arguments);
602
602
  }
603
603
 
@@ -644,7 +644,7 @@ function _fetchTilestats2() {
644
644
  return _fetchTilestats2.apply(this, arguments);
645
645
  }
646
646
 
647
- function fillInMapDatasets(_x17, _x18, _x19, _x20) {
647
+ function fillInMapDatasets(_x16, _x17, _x18, _x19) {
648
648
  return _fillInMapDatasets.apply(this, arguments);
649
649
  }
650
650
 
@@ -675,7 +675,7 @@ function _fillInMapDatasets() {
675
675
  return _fillInMapDatasets.apply(this, arguments);
676
676
  }
677
677
 
678
- function fillInTileStats(_x21, _x22) {
678
+ function fillInTileStats(_x20, _x21) {
679
679
  return _fillInTileStats.apply(this, arguments);
680
680
  }
681
681
 
@@ -765,7 +765,7 @@ function _fillInTileStats() {
765
765
  return _fillInTileStats.apply(this, arguments);
766
766
  }
767
767
 
768
- function fetchMap(_x23) {
768
+ function fetchMap(_x22) {
769
769
  return _fetchMap.apply(this, arguments);
770
770
  }
771
771
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/api/maps-v3-client.ts"],"names":["MAX_GET_LENGTH","DEFAULT_CLIENT","request","method","url","customHeaders","headers","accessToken","body","Accept","Authorization","fetch","Error","requestJson","response","json","ok","dealWithError","error","requestData","format","FORMATS","NDJSON","data","rows","status","getParameters","type","source","geoColumn","columns","clientId","aggregationExp","aggregationResLevel","queryParameters","parameters","sourceName","MAP_TYPES","QUERY","push","JSON","stringify","join","isSpatialIndexGeoColumn","spatialIndex","split","mapInstantiation","connection","credentials","baseUrl","mapsUrl","length","q","client","getUrlFromMetadata","metadata","m","checkFetchLayerDataParameters","apiVersion","API_VERSIONS","V3","apiBaseUrl","COLUMNS_SUPPORT","includes","GEO_COLUMN_SUPPORT","fetchLayerData","formatTiles","_fetchDataUrl","mapFormat","result","schema","defaultCredentials","localCreds","prioritizedFormats","GEOJSON","TILEJSON","f","log","assert","Object","values","TILE_FORMATS","_fetchMapDataset","dataset","connectionName","cache","parseInt","URL","searchParams","get","_fetchTilestats","attribute","statsUrl","stats","attributes","tilestats","layers","index","findIndex","d","fillInMapDatasets","datasets","token","promises","map","Promise","all","fillInTileStats","keplerMapConfig","config","visState","layer","keys","visualChannels","channel","name","find","id","dataId","TILESET","filteredAttributes","a","fetchMap","cartoMapId","autoRefresh","onNewData","intervalId","setInterval","changed","some","v","stopAutoRefresh","clearInterval","geojsonLayers","filter","geojsonDatasetIds","forEach"],"mappings":"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","sourcesContent":["/**\n * Maps API Client for Carto 3\n */\nimport {\n getDefaultCredentials,\n buildMapsUrlFromBase,\n buildStatsUrlFromBase,\n CloudNativeCredentials\n} from '../config';\nimport {\n API_VERSIONS,\n COLUMNS_SUPPORT,\n encodeParameter,\n Format,\n FORMATS,\n GEO_COLUMN_SUPPORT,\n MapInstantiation,\n MapType,\n MAP_TYPES,\n QueryParameters,\n SchemaField,\n TileFormat,\n TILE_FORMATS\n} from './maps-api-common';\nimport {parseMap} from './parseMap';\nimport {log} from '@deck.gl/core';\nimport {assert} from '../utils';\n\nconst MAX_GET_LENGTH = 2048;\nconst DEFAULT_CLIENT = 'deck-gl-carto';\n\nexport type Headers = Record<string, string>;\ninterface RequestParams {\n method?: string;\n url: string;\n headers?: Headers;\n accessToken?: string;\n body?: any;\n}\n\n/**\n * Request against Maps API\n */\nasync function request({\n method,\n url,\n headers: customHeaders,\n accessToken,\n body\n}: RequestParams): Promise<Response> {\n const headers: Headers = {\n ...customHeaders,\n Accept: 'application/json'\n };\n\n if (accessToken) {\n headers.Authorization = `Bearer ${accessToken}`;\n }\n\n if (method === 'POST') {\n headers['Content-Type'] = 'application/json';\n }\n\n try {\n /* global fetch */\n return await fetch(url, {\n method,\n headers,\n body\n });\n } catch (error) {\n throw new Error(`Failed to connect to Maps API: ${error}`);\n }\n}\n\nasync function requestJson<T = unknown>({\n method,\n url,\n headers,\n accessToken,\n body\n}: RequestParams): Promise<T> {\n const response = await request({method, url, headers, accessToken, body});\n const json = await response.json();\n\n if (!response.ok) {\n dealWithError({response, error: json.error});\n }\n return json as T;\n}\n\nasync function requestData({\n method,\n url,\n accessToken,\n format,\n body\n}: RequestParams & {\n format: Format;\n}): Promise<Response | unknown> {\n if (format === FORMATS.NDJSON) {\n return request({method, url, accessToken, body});\n }\n\n const data = await requestJson<any>({method, url, accessToken, body});\n return data.rows ? data.rows : data;\n}\n\n/**\n * Display proper message from Maps API error\n */\nfunction dealWithError({response, error}: {response: Response; error?: string}): never {\n switch (response.status) {\n case 400:\n throw new Error(`Bad request. ${error}`);\n case 401:\n case 403:\n throw new Error(`Unauthorized access. ${error}`);\n default:\n throw new Error(error);\n }\n}\n\ntype FetchLayerDataParams = {\n type: MapType;\n source: string;\n connection: string;\n credentials: CloudNativeCredentials;\n geoColumn?: string;\n columns?: string[];\n clientId?: string;\n format?: Format;\n formatTiles?: TileFormat;\n headers?: Headers;\n aggregationExp?: string;\n aggregationResLevel?: number;\n queryParameters?: QueryParameters;\n};\n\n/**\n * Build a URL with all required parameters\n */\nfunction getParameters({\n type,\n source,\n geoColumn,\n columns,\n clientId,\n aggregationExp,\n aggregationResLevel,\n queryParameters\n}: Omit<FetchLayerDataParams, 'connection' | 'credentials'>) {\n const parameters = [encodeParameter('client', clientId || DEFAULT_CLIENT)];\n\n const sourceName = type === MAP_TYPES.QUERY ? 'q' : 'name';\n parameters.push(encodeParameter(sourceName, source));\n\n if (queryParameters) {\n parameters.push(encodeParameter('queryParameters', JSON.stringify(queryParameters)));\n }\n\n if (geoColumn) {\n parameters.push(encodeParameter('geo_column', geoColumn));\n }\n if (columns) {\n parameters.push(encodeParameter('columns', columns.join(',')));\n }\n if (aggregationExp) {\n parameters.push(encodeParameter('aggregationExp', aggregationExp));\n } else if (isSpatialIndexGeoColumn(geoColumn)) {\n // Default aggregationExp required for spatial index layers\n parameters.push(encodeParameter('aggregationExp', '1 AS value'));\n }\n if (aggregationResLevel) {\n parameters.push(encodeParameter('aggregationResLevel', aggregationResLevel));\n }\n\n return parameters.join('&');\n}\n\nfunction isSpatialIndexGeoColumn(geoColumn: string | undefined) {\n const spatialIndex = geoColumn?.split(':')[0];\n return spatialIndex === 'h3' || spatialIndex === 'quadbin';\n}\n\nexport async function mapInstantiation({\n type,\n source,\n connection,\n credentials,\n geoColumn,\n columns,\n clientId,\n headers,\n aggregationExp,\n aggregationResLevel,\n queryParameters\n}: FetchLayerDataParams): Promise<MapInstantiation> {\n const baseUrl = `${credentials.mapsUrl}/${connection}/${type}`;\n const url = `${baseUrl}?${getParameters({\n type,\n source,\n geoColumn,\n columns,\n clientId,\n aggregationResLevel,\n aggregationExp,\n queryParameters\n })}`;\n const {accessToken} = credentials;\n\n if (url.length > MAX_GET_LENGTH && type === MAP_TYPES.QUERY) {\n // need to be a POST request\n const body = JSON.stringify({\n q: source,\n client: clientId || DEFAULT_CLIENT,\n queryParameters\n });\n return await requestJson({method: 'POST', url: baseUrl, headers, accessToken, body});\n }\n\n return await requestJson({url, headers, accessToken});\n}\n\nfunction getUrlFromMetadata(metadata: MapInstantiation, format: Format): string | null {\n const m = metadata[format];\n\n if (m && !m.error && m.url) {\n return m.url[0];\n }\n\n return null;\n}\n\nfunction checkFetchLayerDataParameters({\n type,\n source,\n connection,\n credentials,\n geoColumn,\n columns,\n aggregationExp,\n aggregationResLevel\n}: FetchLayerDataParams) {\n assert(connection, 'Must define connection');\n assert(type, 'Must define a type');\n assert(source, 'Must define a source');\n\n assert(credentials.apiVersion === API_VERSIONS.V3, 'Method only available for v3');\n assert(credentials.apiBaseUrl, 'Must define apiBaseUrl');\n assert(credentials.accessToken, 'Must define an accessToken');\n\n if (columns) {\n assert(\n COLUMNS_SUPPORT.includes(type),\n `The columns parameter is not supported by type ${type}`\n );\n }\n if (geoColumn) {\n assert(\n GEO_COLUMN_SUPPORT.includes(type),\n `The geoColumn parameter is not supported by type ${type}`\n );\n } else {\n assert(!aggregationExp, 'Have aggregationExp, but geoColumn parameter is missing');\n assert(!aggregationResLevel, 'Have aggregationResLevel, but geoColumn parameter is missing');\n }\n\n if (!aggregationExp) {\n assert(\n !aggregationResLevel,\n 'Have aggregationResLevel, but aggregationExp parameter is missing'\n );\n }\n}\n\nexport interface FetchLayerDataResult {\n data: any;\n format?: Format;\n schema: SchemaField[];\n}\nexport async function fetchLayerData({\n type,\n source,\n connection,\n credentials,\n geoColumn,\n columns,\n format,\n formatTiles,\n clientId,\n headers,\n aggregationExp,\n aggregationResLevel,\n queryParameters\n}: FetchLayerDataParams): Promise<FetchLayerDataResult> {\n // Internally we split data fetching into two parts to allow us to\n // conditionally fetch the actual data, depending on the metadata state\n const {url, accessToken, mapFormat, metadata} = await _fetchDataUrl({\n type,\n source,\n connection,\n credentials,\n geoColumn,\n columns,\n format,\n formatTiles,\n clientId,\n headers,\n aggregationExp,\n aggregationResLevel,\n queryParameters\n });\n\n const data = await requestData({url, format: mapFormat, accessToken});\n const result: FetchLayerDataResult = {data, format: mapFormat, schema: metadata.schema};\n return result;\n}\n\nasync function _fetchDataUrl({\n type,\n source,\n connection,\n credentials,\n geoColumn,\n columns,\n format,\n formatTiles,\n clientId,\n headers,\n aggregationExp,\n aggregationResLevel,\n queryParameters\n}: FetchLayerDataParams) {\n const defaultCredentials = getDefaultCredentials();\n // Only pick up default credentials if they have been defined for\n // correct API version\n const localCreds = {\n ...(defaultCredentials.apiVersion === API_VERSIONS.V3 && defaultCredentials),\n ...credentials\n };\n checkFetchLayerDataParameters({\n type,\n source,\n connection,\n credentials: localCreds,\n geoColumn,\n columns,\n aggregationExp,\n aggregationResLevel\n });\n\n if (!localCreds.mapsUrl) {\n localCreds.mapsUrl = buildMapsUrlFromBase(localCreds.apiBaseUrl);\n }\n\n const metadata = await mapInstantiation({\n type,\n source,\n connection,\n credentials: localCreds,\n geoColumn,\n columns,\n clientId,\n headers,\n aggregationExp,\n aggregationResLevel,\n queryParameters\n });\n let url: string | null = null;\n let mapFormat: Format | undefined;\n\n if (format) {\n mapFormat = format;\n url = getUrlFromMetadata(metadata, format);\n assert(url, `Format ${format} not available`);\n } else {\n // guess map format\n const prioritizedFormats = [FORMATS.GEOJSON, FORMATS.JSON, FORMATS.NDJSON, FORMATS.TILEJSON];\n for (const f of prioritizedFormats) {\n url = getUrlFromMetadata(metadata, f);\n if (url) {\n mapFormat = f;\n break;\n }\n }\n assert(url && mapFormat, 'Unsupported data formats received from backend.');\n }\n\n if (format === FORMATS.TILEJSON && formatTiles) {\n log.assert(\n Object.values(TILE_FORMATS).includes(formatTiles),\n `Invalid value for formatTiles: ${formatTiles}. Use value from TILE_FORMATS`\n );\n url += `&${encodeParameter('formatTiles', formatTiles)}`;\n }\n\n const {accessToken} = localCreds;\n return {url, accessToken, mapFormat, metadata};\n}\n\n/* global clearInterval, setInterval, URL */\nasync function _fetchMapDataset(\n dataset,\n accessToken: string,\n credentials: CloudNativeCredentials,\n clientId?: string,\n headers?: Headers,\n queryParameters?: QueryParameters\n) {\n const {\n aggregationExp,\n aggregationResLevel,\n connectionName: connection,\n columns,\n format,\n geoColumn,\n source,\n type\n } = dataset;\n // First fetch metadata\n const {url, mapFormat} = await _fetchDataUrl({\n aggregationExp,\n aggregationResLevel,\n clientId,\n credentials: {...credentials, accessToken},\n connection,\n columns,\n format,\n geoColumn,\n headers,\n source,\n type,\n queryParameters\n });\n\n // Extract the last time the data changed\n const cache = parseInt(new URL(url).searchParams.get('cache') || '', 10);\n if (cache && dataset.cache === cache) {\n return false;\n }\n dataset.cache = cache;\n\n // Only fetch if the data has changed\n dataset.data = await requestData({url, format: mapFormat, accessToken});\n\n return true;\n}\n\nasync function _fetchTilestats(\n attribute,\n dataset,\n accessToken: string,\n credentials: CloudNativeCredentials\n) {\n const {connectionName: connection, source, type} = dataset;\n\n const statsUrl = buildStatsUrlFromBase(credentials.apiBaseUrl);\n let url = `${statsUrl}/${connection}/`;\n if (type === MAP_TYPES.QUERY) {\n url += `${attribute}?q=${source}`;\n } else {\n // MAP_TYPE.TABLE\n url += `${source}/${attribute}`;\n }\n const stats = await requestData({url, format: FORMATS.JSON, accessToken});\n\n // Replace tilestats for attribute with value from API\n const {attributes} = dataset.data.tilestats.layers[0];\n const index = attributes.findIndex(d => d.attribute === attribute);\n attributes[index] = stats;\n return true;\n}\n\nasync function fillInMapDatasets(\n {datasets, token},\n clientId: string,\n credentials: CloudNativeCredentials,\n headers?: Headers\n) {\n const promises = datasets.map(dataset =>\n _fetchMapDataset(dataset, token, credentials, clientId, headers)\n );\n return await Promise.all(promises);\n}\n\nasync function fillInTileStats(\n {datasets, keplerMapConfig, token},\n credentials: CloudNativeCredentials\n) {\n const attributes: {attribute?: string; dataset?: any}[] = [];\n const {layers} = keplerMapConfig.config.visState;\n for (const layer of layers) {\n for (const channel of Object.keys(layer.visualChannels)) {\n const attribute = layer.visualChannels[channel]?.name;\n if (attribute) {\n const dataset = datasets.find(d => d.id === layer.config.dataId);\n if (dataset.data.tilestats && dataset.type !== MAP_TYPES.TILESET) {\n // Only fetch stats for QUERY & TABLE map types\n attributes.push({attribute, dataset});\n }\n }\n }\n }\n // Remove duplicates to avoid repeated requests\n const filteredAttributes: {attribute?: string; dataset?: any}[] = [];\n for (const a of attributes) {\n if (\n !filteredAttributes.find(\n ({attribute, dataset}) => attribute === a.attribute && dataset === a.dataset\n )\n ) {\n filteredAttributes.push(a);\n }\n }\n\n const promises = filteredAttributes.map(({attribute, dataset}) =>\n _fetchTilestats(attribute, dataset, token, credentials)\n );\n return await Promise.all(promises);\n}\n\nexport async function fetchMap({\n cartoMapId,\n clientId,\n credentials,\n headers,\n autoRefresh,\n onNewData\n}: {\n cartoMapId: string;\n clientId: string;\n credentials?: CloudNativeCredentials;\n headers?: Headers;\n autoRefresh?: number;\n onNewData?: (map: any) => void;\n}) {\n const defaultCredentials = getDefaultCredentials();\n const localCreds = {\n ...(defaultCredentials.apiVersion === API_VERSIONS.V3 && defaultCredentials),\n ...credentials\n } as CloudNativeCredentials;\n const {accessToken} = localCreds;\n\n assert(cartoMapId, 'Must define CARTO map id: fetchMap({cartoMapId: \"XXXX-XXXX-XXXX\"})');\n\n assert(localCreds.apiVersion === API_VERSIONS.V3, 'Method only available for v3');\n assert(localCreds.apiBaseUrl, 'Must define apiBaseUrl');\n if (!localCreds.mapsUrl) {\n localCreds.mapsUrl = buildMapsUrlFromBase(localCreds.apiBaseUrl);\n }\n\n if (autoRefresh || onNewData) {\n assert(onNewData, 'Must define `onNewData` when using autoRefresh');\n assert(typeof onNewData === 'function', '`onNewData` must be a function');\n assert(\n typeof autoRefresh === 'number' && autoRefresh > 0,\n '`autoRefresh` must be a positive number'\n );\n }\n\n const url = `${localCreds.mapsUrl}/public/${cartoMapId}`;\n const map = await requestJson<any>({url, headers, accessToken});\n\n // Periodically check if the data has changed. Note that this\n // will not update when a map is published.\n let stopAutoRefresh: (() => void) | undefined;\n if (autoRefresh) {\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n const intervalId = setInterval(async () => {\n const changed = await fillInMapDatasets(map, clientId, localCreds, headers);\n if (onNewData && changed.some(v => v === true)) {\n onNewData(parseMap(map));\n }\n }, autoRefresh * 1000);\n stopAutoRefresh = () => {\n clearInterval(intervalId);\n };\n }\n\n const geojsonLayers = map.keplerMapConfig.config.visState.layers.filter(\n ({type}) => type === 'geojson' || type === 'point'\n );\n const geojsonDatasetIds = geojsonLayers.map(({config}) => config.dataId);\n map.datasets.forEach(dataset => {\n if (geojsonDatasetIds.includes(dataset.id)) {\n dataset.format = 'geojson';\n }\n });\n\n // Mutates map.datasets so that dataset.data contains data\n await fillInMapDatasets(map, clientId, localCreds, headers);\n\n // Mutates attributes in visualChannels to contain tile stats\n await fillInTileStats(map, localCreds);\n return {\n ...parseMap(map),\n ...{stopAutoRefresh}\n };\n}\n"],"file":"maps-v3-client.js"}
1
+ {"version":3,"sources":["../../../src/api/maps-v3-client.ts"],"names":["MAX_GET_LENGTH","DEFAULT_CLIENT","request","method","url","customHeaders","headers","accessToken","body","Accept","Authorization","fetch","Error","requestJson","response","json","ok","dealWithError","error","requestData","format","FORMATS","NDJSON","data","rows","status","getParameters","type","source","geoColumn","columns","clientId","aggregationExp","aggregationResLevel","queryParameters","parameters","sourceName","MAP_TYPES","QUERY","push","JSON","stringify","join","isSpatialIndexGeoColumn","spatialIndex","split","mapInstantiation","connection","credentials","baseUrl","mapsUrl","length","q","client","getUrlFromMetadata","metadata","m","checkFetchLayerDataParameters","apiVersion","API_VERSIONS","V3","apiBaseUrl","COLUMNS_SUPPORT","includes","GEO_COLUMN_SUPPORT","fetchLayerData","formatTiles","_fetchDataUrl","mapFormat","result","schema","defaultCredentials","localCreds","prioritizedFormats","GEOJSON","TILEJSON","f","log","assert","Object","values","TILE_FORMATS","_fetchMapDataset","dataset","connectionName","cache","parseInt","URL","searchParams","get","_fetchTilestats","attribute","statsUrl","stats","attributes","tilestats","layers","index","findIndex","d","fillInMapDatasets","datasets","token","promises","map","Promise","all","fillInTileStats","keplerMapConfig","config","visState","layer","keys","visualChannels","channel","name","find","id","dataId","TILESET","filteredAttributes","a","fetchMap","cartoMapId","autoRefresh","onNewData","intervalId","setInterval","changed","some","v","stopAutoRefresh","clearInterval","geojsonLayers","filter","geojsonDatasetIds","forEach"],"mappings":"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","sourcesContent":["/**\n * Maps API Client for Carto 3\n */\nimport {\n getDefaultCredentials,\n buildMapsUrlFromBase,\n buildStatsUrlFromBase,\n CloudNativeCredentials\n} from '../config';\nimport {\n API_VERSIONS,\n COLUMNS_SUPPORT,\n encodeParameter,\n Format,\n FORMATS,\n GEO_COLUMN_SUPPORT,\n MapInstantiation,\n MapType,\n MAP_TYPES,\n QueryParameters,\n SchemaField,\n TileFormat,\n TILE_FORMATS\n} from './maps-api-common';\nimport {parseMap} from './parseMap';\nimport {log} from '@deck.gl/core';\nimport {assert} from '../utils';\n\nconst MAX_GET_LENGTH = 2048;\nconst DEFAULT_CLIENT = 'deck-gl-carto';\n\nexport type Headers = Record<string, string>;\ninterface RequestParams {\n method?: string;\n url: string;\n headers?: Headers;\n accessToken?: string;\n body?: any;\n}\n\n/**\n * Request against Maps API\n */\nasync function request({\n method,\n url,\n headers: customHeaders,\n accessToken,\n body\n}: RequestParams): Promise<Response> {\n const headers: Headers = {\n ...customHeaders,\n Accept: 'application/json'\n };\n\n if (accessToken) {\n headers.Authorization = `Bearer ${accessToken}`;\n }\n\n if (method === 'POST') {\n headers['Content-Type'] = 'application/json';\n }\n\n try {\n /* global fetch */\n return await fetch(url, {\n method,\n headers,\n body\n });\n } catch (error) {\n throw new Error(`Failed to connect to Maps API: ${error}`);\n }\n}\n\nasync function requestJson<T = unknown>({\n method,\n url,\n headers,\n accessToken,\n body\n}: RequestParams): Promise<T> {\n const response = await request({method, url, headers, accessToken, body});\n const json = await response.json();\n\n if (!response.ok) {\n dealWithError({response, error: json.error});\n }\n return json as T;\n}\n\nasync function requestData({\n method,\n url,\n accessToken,\n format,\n body\n}: RequestParams & {\n format: Format;\n}): Promise<Response | unknown> {\n if (format === FORMATS.NDJSON) {\n return request({method, url, accessToken, body});\n }\n\n const data = await requestJson<any>({method, url, accessToken, body});\n return data.rows ? data.rows : data;\n}\n\n/**\n * Display proper message from Maps API error\n */\nfunction dealWithError({response, error}: {response: Response; error?: string}): never {\n switch (response.status) {\n case 400:\n throw new Error(`Bad request. ${error}`);\n case 401:\n case 403:\n throw new Error(`Unauthorized access. ${error}`);\n default:\n throw new Error(error);\n }\n}\n\ntype FetchLayerDataParams = {\n type: MapType;\n source: string;\n connection: string;\n credentials: CloudNativeCredentials;\n geoColumn?: string;\n columns?: string[];\n clientId?: string;\n format?: Format;\n formatTiles?: TileFormat;\n headers?: Headers;\n aggregationExp?: string;\n aggregationResLevel?: number;\n queryParameters?: QueryParameters;\n};\n\n/**\n * Build a URL with all required parameters\n */\nfunction getParameters({\n type,\n source,\n geoColumn,\n columns,\n clientId,\n aggregationExp,\n aggregationResLevel,\n queryParameters\n}: Omit<FetchLayerDataParams, 'connection' | 'credentials'>) {\n const parameters = [encodeParameter('client', clientId || DEFAULT_CLIENT)];\n\n const sourceName = type === MAP_TYPES.QUERY ? 'q' : 'name';\n parameters.push(encodeParameter(sourceName, source));\n\n if (queryParameters) {\n parameters.push(encodeParameter('queryParameters', JSON.stringify(queryParameters)));\n }\n\n if (geoColumn) {\n parameters.push(encodeParameter('geo_column', geoColumn));\n }\n if (columns) {\n parameters.push(encodeParameter('columns', columns.join(',')));\n }\n if (aggregationExp) {\n parameters.push(encodeParameter('aggregationExp', aggregationExp));\n } else if (isSpatialIndexGeoColumn(geoColumn)) {\n // Default aggregationExp required for spatial index layers\n parameters.push(encodeParameter('aggregationExp', '1 AS value'));\n }\n if (aggregationResLevel) {\n parameters.push(encodeParameter('aggregationResLevel', aggregationResLevel));\n }\n\n return parameters.join('&');\n}\n\nfunction isSpatialIndexGeoColumn(geoColumn: string | undefined) {\n const spatialIndex = geoColumn?.split(':')[0];\n return spatialIndex === 'h3' || spatialIndex === 'quadbin';\n}\n\nexport async function mapInstantiation({\n type,\n source,\n connection,\n credentials,\n geoColumn,\n columns,\n clientId,\n headers,\n aggregationExp,\n aggregationResLevel,\n queryParameters\n}: FetchLayerDataParams): Promise<MapInstantiation> {\n const baseUrl = `${credentials.mapsUrl}/${connection}/${type}`;\n const url = `${baseUrl}?${getParameters({\n type,\n source,\n geoColumn,\n columns,\n clientId,\n aggregationResLevel,\n aggregationExp,\n queryParameters\n })}`;\n const {accessToken} = credentials;\n\n if (url.length > MAX_GET_LENGTH && type === MAP_TYPES.QUERY) {\n // need to be a POST request\n const body = JSON.stringify({\n q: source,\n client: clientId || DEFAULT_CLIENT,\n queryParameters\n });\n return await requestJson({method: 'POST', url: baseUrl, headers, accessToken, body});\n }\n\n return await requestJson({url, headers, accessToken});\n}\n\nfunction getUrlFromMetadata(metadata: MapInstantiation, format: Format): string | null {\n const m = metadata[format];\n\n if (m && !m.error && m.url) {\n return m.url[0];\n }\n\n return null;\n}\n\nfunction checkFetchLayerDataParameters({\n type,\n source,\n connection,\n credentials,\n geoColumn,\n columns,\n aggregationExp,\n aggregationResLevel\n}: FetchLayerDataParams) {\n assert(connection, 'Must define connection');\n assert(type, 'Must define a type');\n assert(source, 'Must define a source');\n\n assert(credentials.apiVersion === API_VERSIONS.V3, 'Method only available for v3');\n assert(credentials.apiBaseUrl, 'Must define apiBaseUrl');\n assert(credentials.accessToken, 'Must define an accessToken');\n\n if (columns) {\n assert(\n COLUMNS_SUPPORT.includes(type),\n `The columns parameter is not supported by type ${type}`\n );\n }\n if (geoColumn) {\n assert(\n GEO_COLUMN_SUPPORT.includes(type),\n `The geoColumn parameter is not supported by type ${type}`\n );\n } else {\n assert(!aggregationExp, 'Have aggregationExp, but geoColumn parameter is missing');\n assert(!aggregationResLevel, 'Have aggregationResLevel, but geoColumn parameter is missing');\n }\n\n if (!aggregationExp) {\n assert(\n !aggregationResLevel,\n 'Have aggregationResLevel, but aggregationExp parameter is missing'\n );\n }\n}\n\nexport interface FetchLayerDataResult {\n data: any;\n format?: Format;\n schema: SchemaField[];\n}\nexport async function fetchLayerData({\n type,\n source,\n connection,\n credentials,\n geoColumn,\n columns,\n format,\n formatTiles,\n clientId,\n headers,\n aggregationExp,\n aggregationResLevel,\n queryParameters\n}: FetchLayerDataParams): Promise<FetchLayerDataResult> {\n // Internally we split data fetching into two parts to allow us to\n // conditionally fetch the actual data, depending on the metadata state\n const {url, accessToken, mapFormat, metadata} = await _fetchDataUrl({\n type,\n source,\n connection,\n credentials,\n geoColumn,\n columns,\n format,\n formatTiles,\n clientId,\n headers,\n aggregationExp,\n aggregationResLevel,\n queryParameters\n });\n\n const data = await requestData({url, format: mapFormat, accessToken});\n const result: FetchLayerDataResult = {data, format: mapFormat, schema: metadata.schema};\n return result;\n}\n\nasync function _fetchDataUrl({\n type,\n source,\n connection,\n credentials,\n geoColumn,\n columns,\n format,\n formatTiles,\n clientId,\n headers,\n aggregationExp,\n aggregationResLevel,\n queryParameters\n}: FetchLayerDataParams) {\n const defaultCredentials = getDefaultCredentials();\n // Only pick up default credentials if they have been defined for\n // correct API version\n const localCreds = {\n ...(defaultCredentials.apiVersion === API_VERSIONS.V3 && defaultCredentials),\n ...credentials\n };\n checkFetchLayerDataParameters({\n type,\n source,\n connection,\n credentials: localCreds,\n geoColumn,\n columns,\n aggregationExp,\n aggregationResLevel\n });\n\n if (!localCreds.mapsUrl) {\n localCreds.mapsUrl = buildMapsUrlFromBase(localCreds.apiBaseUrl);\n }\n\n const metadata = await mapInstantiation({\n type,\n source,\n connection,\n credentials: localCreds,\n geoColumn,\n columns,\n clientId,\n headers,\n aggregationExp,\n aggregationResLevel,\n queryParameters\n });\n let url: string | null = null;\n let mapFormat: Format | undefined;\n\n if (format) {\n mapFormat = format;\n url = getUrlFromMetadata(metadata, format);\n assert(url, `Format ${format} not available`);\n } else {\n // guess map format\n const prioritizedFormats = [FORMATS.GEOJSON, FORMATS.JSON, FORMATS.NDJSON, FORMATS.TILEJSON];\n for (const f of prioritizedFormats) {\n url = getUrlFromMetadata(metadata, f);\n if (url) {\n mapFormat = f;\n break;\n }\n }\n assert(url && mapFormat, 'Unsupported data formats received from backend.');\n }\n\n if (format === FORMATS.TILEJSON && formatTiles) {\n log.assert(\n Object.values(TILE_FORMATS).includes(formatTiles),\n `Invalid value for formatTiles: ${formatTiles}. Use value from TILE_FORMATS`\n );\n url += `&${encodeParameter('formatTiles', formatTiles)}`;\n }\n\n const {accessToken} = localCreds;\n return {url, accessToken, mapFormat, metadata};\n}\n\n/* global clearInterval, setInterval, URL */\nasync function _fetchMapDataset(\n dataset,\n accessToken: string,\n credentials: CloudNativeCredentials,\n clientId?: string,\n headers?: Headers\n) {\n const {\n aggregationExp,\n aggregationResLevel,\n connectionName: connection,\n columns,\n format,\n geoColumn,\n source,\n type,\n queryParameters\n } = dataset;\n // First fetch metadata\n const {url, mapFormat} = await _fetchDataUrl({\n aggregationExp,\n aggregationResLevel,\n clientId,\n credentials: {...credentials, accessToken},\n connection,\n columns,\n format,\n geoColumn,\n headers,\n source,\n type,\n queryParameters\n });\n\n // Extract the last time the data changed\n const cache = parseInt(new URL(url).searchParams.get('cache') || '', 10);\n if (cache && dataset.cache === cache) {\n return false;\n }\n dataset.cache = cache;\n\n // Only fetch if the data has changed\n dataset.data = await requestData({url, format: mapFormat, accessToken});\n\n return true;\n}\n\nasync function _fetchTilestats(\n attribute,\n dataset,\n accessToken: string,\n credentials: CloudNativeCredentials\n) {\n const {connectionName: connection, source, type} = dataset;\n\n const statsUrl = buildStatsUrlFromBase(credentials.apiBaseUrl);\n let url = `${statsUrl}/${connection}/`;\n if (type === MAP_TYPES.QUERY) {\n url += `${attribute}?q=${source}`;\n } else {\n // MAP_TYPE.TABLE\n url += `${source}/${attribute}`;\n }\n const stats = await requestData({url, format: FORMATS.JSON, accessToken});\n\n // Replace tilestats for attribute with value from API\n const {attributes} = dataset.data.tilestats.layers[0];\n const index = attributes.findIndex(d => d.attribute === attribute);\n attributes[index] = stats;\n return true;\n}\n\nasync function fillInMapDatasets(\n {datasets, token},\n clientId: string,\n credentials: CloudNativeCredentials,\n headers?: Headers\n) {\n const promises = datasets.map(dataset =>\n _fetchMapDataset(dataset, token, credentials, clientId, headers)\n );\n return await Promise.all(promises);\n}\n\nasync function fillInTileStats(\n {datasets, keplerMapConfig, token},\n credentials: CloudNativeCredentials\n) {\n const attributes: {attribute?: string; dataset?: any}[] = [];\n const {layers} = keplerMapConfig.config.visState;\n for (const layer of layers) {\n for (const channel of Object.keys(layer.visualChannels)) {\n const attribute = layer.visualChannels[channel]?.name;\n if (attribute) {\n const dataset = datasets.find(d => d.id === layer.config.dataId);\n if (dataset.data.tilestats && dataset.type !== MAP_TYPES.TILESET) {\n // Only fetch stats for QUERY & TABLE map types\n attributes.push({attribute, dataset});\n }\n }\n }\n }\n // Remove duplicates to avoid repeated requests\n const filteredAttributes: {attribute?: string; dataset?: any}[] = [];\n for (const a of attributes) {\n if (\n !filteredAttributes.find(\n ({attribute, dataset}) => attribute === a.attribute && dataset === a.dataset\n )\n ) {\n filteredAttributes.push(a);\n }\n }\n\n const promises = filteredAttributes.map(({attribute, dataset}) =>\n _fetchTilestats(attribute, dataset, token, credentials)\n );\n return await Promise.all(promises);\n}\n\nexport async function fetchMap({\n cartoMapId,\n clientId,\n credentials,\n headers,\n autoRefresh,\n onNewData\n}: {\n cartoMapId: string;\n clientId: string;\n credentials?: CloudNativeCredentials;\n headers?: Headers;\n autoRefresh?: number;\n onNewData?: (map: any) => void;\n}) {\n const defaultCredentials = getDefaultCredentials();\n const localCreds = {\n ...(defaultCredentials.apiVersion === API_VERSIONS.V3 && defaultCredentials),\n ...credentials\n } as CloudNativeCredentials;\n const {accessToken} = localCreds;\n\n assert(cartoMapId, 'Must define CARTO map id: fetchMap({cartoMapId: \"XXXX-XXXX-XXXX\"})');\n\n assert(localCreds.apiVersion === API_VERSIONS.V3, 'Method only available for v3');\n assert(localCreds.apiBaseUrl, 'Must define apiBaseUrl');\n if (!localCreds.mapsUrl) {\n localCreds.mapsUrl = buildMapsUrlFromBase(localCreds.apiBaseUrl);\n }\n\n if (autoRefresh || onNewData) {\n assert(onNewData, 'Must define `onNewData` when using autoRefresh');\n assert(typeof onNewData === 'function', '`onNewData` must be a function');\n assert(\n typeof autoRefresh === 'number' && autoRefresh > 0,\n '`autoRefresh` must be a positive number'\n );\n }\n\n const url = `${localCreds.mapsUrl}/public/${cartoMapId}`;\n const map = await requestJson<any>({url, headers, accessToken});\n\n // Periodically check if the data has changed. Note that this\n // will not update when a map is published.\n let stopAutoRefresh: (() => void) | undefined;\n if (autoRefresh) {\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n const intervalId = setInterval(async () => {\n const changed = await fillInMapDatasets(map, clientId, localCreds, headers);\n if (onNewData && changed.some(v => v === true)) {\n onNewData(parseMap(map));\n }\n }, autoRefresh * 1000);\n stopAutoRefresh = () => {\n clearInterval(intervalId);\n };\n }\n\n const geojsonLayers = map.keplerMapConfig.config.visState.layers.filter(\n ({type}) => type === 'geojson' || type === 'point'\n );\n const geojsonDatasetIds = geojsonLayers.map(({config}) => config.dataId);\n map.datasets.forEach(dataset => {\n if (geojsonDatasetIds.includes(dataset.id)) {\n dataset.format = 'geojson';\n }\n });\n\n // Mutates map.datasets so that dataset.data contains data\n await fillInMapDatasets(map, clientId, localCreds, headers);\n\n // Mutates attributes in visualChannels to contain tile stats\n await fillInTileStats(map, localCreds);\n return {\n ...parseMap(map),\n ...{stopAutoRefresh}\n };\n}\n"],"file":"maps-v3-client.js"}
@@ -186,6 +186,8 @@ function createStyleProps(config, mapping) {
186
186
  function createChannelProps(visualChannels, type, config, data) {
187
187
  var colorField = visualChannels.colorField,
188
188
  colorScale = visualChannels.colorScale,
189
+ radiusField = visualChannels.radiusField,
190
+ radiusScale = visualChannels.radiusScale,
189
191
  sizeField = visualChannels.sizeField,
190
192
  sizeScale = visualChannels.sizeScale,
191
193
  strokeColorField = visualChannels.strokeColorField,
@@ -226,6 +228,10 @@ function createChannelProps(visualChannels, type, config, data) {
226
228
  }, visConfig.opacity, data);
227
229
  }
228
230
 
231
+ if (radiusField || sizeField) {
232
+ result.getPointRadius = (0, _layerMap.getSizeAccessor)(radiusField || sizeField, radiusScale || sizeScale, visConfig.sizeAggregation, visConfig.radiusRange || visConfig.sizeRange, data);
233
+ }
234
+
229
235
  if (strokeColorField) {
230
236
  var fallbackOpacity = type === 'point' ? visConfig.opacity : 1;
231
237
  var opacity = visConfig.strokeOpacity !== undefined ? visConfig.strokeOpacity : fallbackOpacity;
@@ -241,15 +247,43 @@ function createChannelProps(visualChannels, type, config, data) {
241
247
  result.getElevation = (0, _layerMap.getSizeAccessor)(heightField, heightScale, visConfig.heightAggregation, visConfig.heightRange || visConfig.sizeRange, data);
242
248
  }
243
249
 
244
- if (sizeField) {
245
- result.getPointRadius = (0, _layerMap.getSizeAccessor)(sizeField, sizeScale, visConfig.sizeAggregation, visConfig.radiusRange || visConfig.sizeRange, data);
246
- }
247
-
248
250
  if (textLabelField) {
249
251
  result.getText = (0, _layerMap.getTextAccessor)(textLabelField, data);
250
252
  result.pointType = 'text';
251
253
  var radius = result.getPointRadius || visConfig.radius;
252
254
  result.getTextPixelOffset = (0, _layerMap.getTextPixelOffsetAccessor)(textLabel, radius);
255
+ } else if (visConfig.customMarkers) {
256
+ var maxIconSize = (0, _layerMap.getMaxMarkerSize)(visConfig, visualChannels);
257
+ var getPointRadius = result.getPointRadius,
258
+ getFillColor = result.getFillColor;
259
+ result.pointType = 'icon';
260
+ result.getIcon = (0, _layerMap.getIconUrlAccessor)(visualChannels.customMarkersField, visConfig.customMarkersUrl, visConfig.customMarkersRange, maxIconSize, data);
261
+ result._subLayerProps = {
262
+ 'points-icon': {
263
+ loadOptions: {
264
+ image: {
265
+ type: 'imagebitmap'
266
+ },
267
+ imagebitmap: {
268
+ resizeWidth: maxIconSize,
269
+ resizeHeight: maxIconSize,
270
+ resizeQuality: 'high'
271
+ }
272
+ }
273
+ }
274
+ };
275
+
276
+ if (getFillColor) {
277
+ result.getIconColor = getFillColor;
278
+ }
279
+
280
+ if (getPointRadius) {
281
+ result.getIconSize = getPointRadius;
282
+ }
283
+
284
+ if (visualChannels.rotationField) {
285
+ result.getIconAngle = (0, _layerMap.negateAccessor)((0, _layerMap.getSizeAccessor)(visualChannels.rotationField, undefined, null, undefined, data));
286
+ }
253
287
  }
254
288
 
255
289
  return result;