@deck.gl/carto 8.8.10 → 8.8.12
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 +139 -18
- package/dist/es5/api/layer-map.js +104 -9
- package/dist/es5/api/layer-map.js.map +1 -1
- package/dist/es5/api/parseMap.js +38 -4
- package/dist/es5/api/parseMap.js.map +1 -1
- package/dist/es5/api/types.js +2 -0
- package/dist/es5/api/types.js.map +1 -0
- package/dist/esm/api/layer-map.js +85 -9
- package/dist/esm/api/layer-map.js.map +1 -1
- package/dist/esm/api/parseMap.js +41 -5
- package/dist/esm/api/parseMap.js.map +1 -1
- package/dist/esm/api/types.js +2 -0
- package/dist/esm/api/types.js.map +1 -0
- package/dist.min.js +2 -2
- package/package.json +2 -2
- package/src/api/layer-map.ts +103 -17
- package/src/api/parseMap.ts +80 -15
- package/src/api/types.ts +108 -0
- package/typed/api/layer-map.d.ts +10 -13
- package/typed/api/layer-map.d.ts.map +1 -1
- package/typed/api/parseMap.d.ts.map +1 -1
- package/typed/api/types.d.ts +87 -0
- package/typed/api/types.d.ts.map +1 -0
package/dist/dist.dev.js
CHANGED
|
@@ -13033,7 +13033,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
13033
13033
|
|
|
13034
13034
|
|
|
13035
13035
|
|
|
13036
|
-
const VERSION = true ? "8.8.
|
|
13036
|
+
const VERSION = true ? "8.8.12" : 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.
|
|
54160
|
+
const VERSION = true ? "8.8.12" : 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; });
|
|
@@ -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(
|
|
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:
|
|
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
|
-
|
|
55062
|
-
|
|
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 => {
|
|
@@ -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,
|
|
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,
|
|
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,
|
|
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;
|
|
@@ -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(
|
|
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:
|
|
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
|
-
|
|
479
|
-
|
|
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"}
|