@deck.gl/carto 8.9.0-alpha.3 → 8.9.0-alpha.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/dist.dev.js +104 -69
- package/dist/es5/api/layer-map.js +24 -11
- package/dist/es5/api/layer-map.js.map +1 -1
- package/dist/es5/api/maps-v3-client.js +8 -1
- package/dist/es5/api/maps-v3-client.js.map +1 -1
- package/dist/es5/api/parseMap.js +41 -17
- package/dist/es5/api/parseMap.js.map +1 -1
- package/dist/esm/api/layer-map.js +13 -2
- package/dist/esm/api/layer-map.js.map +1 -1
- package/dist/esm/api/maps-v3-client.js +7 -1
- package/dist/esm/api/maps-v3-client.js.map +1 -1
- package/dist/esm/api/parseMap.js +47 -18
- package/dist/esm/api/parseMap.js.map +1 -1
- package/dist.min.js +1 -1
- package/package.json +7 -7
- package/src/api/layer-map.ts +14 -5
- package/src/api/maps-v3-client.ts +3 -1
- package/src/api/parseMap.ts +29 -20
- package/typed/api/layer-map.d.ts +5 -1
- package/typed/api/layer-map.d.ts.map +1 -1
- package/typed/api/maps-v3-client.d.ts.map +1 -1
- package/typed/api/parseMap.d.ts.map +1 -1
package/dist/dist.dev.js
CHANGED
|
@@ -2611,7 +2611,7 @@ function arrayBufferToBase64(buffer) {
|
|
|
2611
2611
|
__webpack_require__.r(__webpack_exports__);
|
|
2612
2612
|
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "NullWorkerLoader", function() { return NullWorkerLoader; });
|
|
2613
2613
|
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "NullLoader", function() { return NullLoader; });
|
|
2614
|
-
const VERSION = true ? "3.2.
|
|
2614
|
+
const VERSION = true ? "3.2.10" : undefined;
|
|
2615
2615
|
const NullWorkerLoader = {
|
|
2616
2616
|
name: 'Null loader',
|
|
2617
2617
|
id: 'null',
|
|
@@ -3858,7 +3858,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
3858
3858
|
__webpack_require__.r(__webpack_exports__);
|
|
3859
3859
|
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "JSONLoader", function() { return JSONLoader; });
|
|
3860
3860
|
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "_typecheckJSONLoader", function() { return _typecheckJSONLoader; });
|
|
3861
|
-
const VERSION = true ? "3.2.
|
|
3861
|
+
const VERSION = true ? "3.2.10" : undefined;
|
|
3862
3862
|
const JSONLoader = {
|
|
3863
3863
|
name: 'JSON',
|
|
3864
3864
|
id: 'json',
|
|
@@ -4936,7 +4936,7 @@ async function onMessage(parseOnMainThread, job, type, payload) {
|
|
|
4936
4936
|
/*!******************************************************************************************!*\
|
|
4937
4937
|
!*** /Users/alasarr/dev/deck.gl/node_modules/@loaders.gl/worker-utils/dist/esm/index.js ***!
|
|
4938
4938
|
\******************************************************************************************/
|
|
4939
|
-
/*! exports provided: assert, isBrowser, isWorker, WorkerJob, WorkerThread, WorkerFarm, WorkerPool, WorkerBody, processOnWorker, canProcessOnWorker, createWorker, getWorkerURL, validateWorkerVersion, getTransferList, getLibraryUrl, loadLibrary, AsyncQueue, ChildProcessProxy, NullWorker */
|
|
4939
|
+
/*! exports provided: assert, isBrowser, isWorker, WorkerJob, WorkerThread, WorkerFarm, WorkerPool, WorkerBody, processOnWorker, canProcessOnWorker, createWorker, getWorkerURL, validateWorkerVersion, getTransferList, getTransferListForWriter, getLibraryUrl, loadLibrary, AsyncQueue, ChildProcessProxy, NullWorker */
|
|
4940
4940
|
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
4941
4941
|
|
|
4942
4942
|
"use strict";
|
|
@@ -4983,6 +4983,8 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
4983
4983
|
/* harmony import */ var _lib_worker_utils_get_transfer_list__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./lib/worker-utils/get-transfer-list */ "../../node_modules/@loaders.gl/worker-utils/dist/esm/lib/worker-utils/get-transfer-list.js");
|
|
4984
4984
|
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getTransferList", function() { return _lib_worker_utils_get_transfer_list__WEBPACK_IMPORTED_MODULE_12__["getTransferList"]; });
|
|
4985
4985
|
|
|
4986
|
+
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getTransferListForWriter", function() { return _lib_worker_utils_get_transfer_list__WEBPACK_IMPORTED_MODULE_12__["getTransferListForWriter"]; });
|
|
4987
|
+
|
|
4986
4988
|
/* harmony import */ var _lib_library_utils_library_utils__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./lib/library-utils/library-utils */ "../../node_modules/@loaders.gl/worker-utils/dist/esm/lib/library-utils/library-utils.js");
|
|
4987
4989
|
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getLibraryUrl", function() { return _lib_library_utils_library_utils__WEBPACK_IMPORTED_MODULE_13__["getLibraryUrl"]; });
|
|
4988
4990
|
|
|
@@ -5201,7 +5203,7 @@ const nodeVersion = matches && parseFloat(matches[1]) || 0;
|
|
|
5201
5203
|
__webpack_require__.r(__webpack_exports__);
|
|
5202
5204
|
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "VERSION", function() { return VERSION; });
|
|
5203
5205
|
const DEFAULT_VERSION = 'latest';
|
|
5204
|
-
const VERSION = true ? "3.2.
|
|
5206
|
+
const VERSION = true ? "3.2.10" : undefined;
|
|
5205
5207
|
|
|
5206
5208
|
if (false) {}
|
|
5207
5209
|
//# sourceMappingURL=version.js.map
|
|
@@ -5229,7 +5231,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
5229
5231
|
|
|
5230
5232
|
|
|
5231
5233
|
const LATEST = 'latest';
|
|
5232
|
-
const VERSION = true ? "3.2.
|
|
5234
|
+
const VERSION = true ? "3.2.10" : undefined;
|
|
5233
5235
|
const loadLibraryPromises = {};
|
|
5234
5236
|
async function loadLibrary(libraryUrl, moduleName = null, options = {}) {
|
|
5235
5237
|
if (moduleName) {
|
|
@@ -5462,7 +5464,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
5462
5464
|
|
|
5463
5465
|
|
|
5464
5466
|
const NPM_TAG = 'latest';
|
|
5465
|
-
const VERSION = true ? "3.2.
|
|
5467
|
+
const VERSION = true ? "3.2.10" : undefined;
|
|
5466
5468
|
function getWorkerName(worker) {
|
|
5467
5469
|
const warning = worker.version !== VERSION ? " (worker-utils@".concat(VERSION, ")") : '';
|
|
5468
5470
|
return "".concat(worker.name, "@").concat(worker.version).concat(warning);
|
|
@@ -5510,8 +5512,8 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
5510
5512
|
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "canProcessOnWorker", function() { return canProcessOnWorker; });
|
|
5511
5513
|
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "processOnWorker", function() { return processOnWorker; });
|
|
5512
5514
|
/* harmony import */ var _worker_farm_worker_farm__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../worker-farm/worker-farm */ "../../node_modules/@loaders.gl/worker-utils/dist/esm/lib/worker-farm/worker-farm.js");
|
|
5513
|
-
/* harmony import */ var
|
|
5514
|
-
/* harmony import */ var
|
|
5515
|
+
/* harmony import */ var _get_worker_url__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./get-worker-url */ "../../node_modules/@loaders.gl/worker-utils/dist/esm/lib/worker-api/get-worker-url.js");
|
|
5516
|
+
/* harmony import */ var _worker_utils_get_transfer_list__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../worker-utils/get-transfer-list */ "../../node_modules/@loaders.gl/worker-utils/dist/esm/lib/worker-utils/get-transfer-list.js");
|
|
5515
5517
|
|
|
5516
5518
|
|
|
5517
5519
|
|
|
@@ -5523,7 +5525,7 @@ function canProcessOnWorker(worker, options) {
|
|
|
5523
5525
|
return worker.worker && (options === null || options === void 0 ? void 0 : options.worker);
|
|
5524
5526
|
}
|
|
5525
5527
|
async function processOnWorker(worker, data, options = {}, context = {}) {
|
|
5526
|
-
const name = Object(
|
|
5528
|
+
const name = Object(_get_worker_url__WEBPACK_IMPORTED_MODULE_1__["getWorkerName"])(worker);
|
|
5527
5529
|
const workerFarm = _worker_farm_worker_farm__WEBPACK_IMPORTED_MODULE_0__["default"].getWorkerFarm(options);
|
|
5528
5530
|
const {
|
|
5529
5531
|
source
|
|
@@ -5534,13 +5536,13 @@ async function processOnWorker(worker, data, options = {}, context = {}) {
|
|
|
5534
5536
|
};
|
|
5535
5537
|
|
|
5536
5538
|
if (!source) {
|
|
5537
|
-
workerPoolProps.url = Object(
|
|
5539
|
+
workerPoolProps.url = Object(_get_worker_url__WEBPACK_IMPORTED_MODULE_1__["getWorkerURL"])(worker, options);
|
|
5538
5540
|
}
|
|
5539
5541
|
|
|
5540
5542
|
const workerPool = workerFarm.getWorkerPool(workerPoolProps);
|
|
5541
5543
|
const jobName = options.jobName || worker.name;
|
|
5542
5544
|
const job = await workerPool.startJob(jobName, onMessage.bind(null, context));
|
|
5543
|
-
const transferableOptions = Object(
|
|
5545
|
+
const transferableOptions = Object(_worker_utils_get_transfer_list__WEBPACK_IMPORTED_MODULE_2__["getTransferListForWriter"])(options);
|
|
5544
5546
|
job.postMessage('process', {
|
|
5545
5547
|
input: data,
|
|
5546
5548
|
options: transferableOptions
|
|
@@ -6121,7 +6123,7 @@ const NOOP = () => {};
|
|
|
6121
6123
|
|
|
6122
6124
|
class WorkerThread {
|
|
6123
6125
|
static isSupported() {
|
|
6124
|
-
return typeof Worker !== 'undefined' && _env_utils_globals__WEBPACK_IMPORTED_MODULE_2__["isBrowser"] || typeof _node_worker_threads__WEBPACK_IMPORTED_MODULE_1__["Worker"] !== undefined;
|
|
6126
|
+
return typeof Worker !== 'undefined' && _env_utils_globals__WEBPACK_IMPORTED_MODULE_2__["isBrowser"] || typeof _node_worker_threads__WEBPACK_IMPORTED_MODULE_1__["Worker"] !== 'undefined' && !_env_utils_globals__WEBPACK_IMPORTED_MODULE_2__["isBrowser"];
|
|
6125
6127
|
}
|
|
6126
6128
|
|
|
6127
6129
|
constructor(props) {
|
|
@@ -6307,12 +6309,13 @@ function buildScriptSource(workerUrl) {
|
|
|
6307
6309
|
/*!***********************************************************************************************************************!*\
|
|
6308
6310
|
!*** /Users/alasarr/dev/deck.gl/node_modules/@loaders.gl/worker-utils/dist/esm/lib/worker-utils/get-transfer-list.js ***!
|
|
6309
6311
|
\***********************************************************************************************************************/
|
|
6310
|
-
/*! exports provided: getTransferList */
|
|
6312
|
+
/*! exports provided: getTransferList, getTransferListForWriter */
|
|
6311
6313
|
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
6312
6314
|
|
|
6313
6315
|
"use strict";
|
|
6314
6316
|
__webpack_require__.r(__webpack_exports__);
|
|
6315
6317
|
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getTransferList", function() { return getTransferList; });
|
|
6318
|
+
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getTransferListForWriter", function() { return getTransferListForWriter; });
|
|
6316
6319
|
function getTransferList(object, recursive = true, transfers) {
|
|
6317
6320
|
const transfersSet = transfers || new Set();
|
|
6318
6321
|
|
|
@@ -6352,43 +6355,25 @@ function isTransferable(object) {
|
|
|
6352
6355
|
|
|
6353
6356
|
return false;
|
|
6354
6357
|
}
|
|
6355
|
-
//# sourceMappingURL=get-transfer-list.js.map
|
|
6356
|
-
|
|
6357
|
-
/***/ }),
|
|
6358
|
-
|
|
6359
|
-
/***/ "../../node_modules/@loaders.gl/worker-utils/dist/esm/lib/worker-utils/remove-nontransferable-options.js":
|
|
6360
|
-
/*!************************************************************************************************************************************!*\
|
|
6361
|
-
!*** /Users/alasarr/dev/deck.gl/node_modules/@loaders.gl/worker-utils/dist/esm/lib/worker-utils/remove-nontransferable-options.js ***!
|
|
6362
|
-
\************************************************************************************************************************************/
|
|
6363
|
-
/*! exports provided: removeNontransferableOptions */
|
|
6364
|
-
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
6365
6358
|
|
|
6366
|
-
|
|
6367
|
-
|
|
6368
|
-
|
|
6369
|
-
|
|
6370
|
-
return JSON.parse(stringifyJSON(object));
|
|
6371
|
-
}
|
|
6372
|
-
|
|
6373
|
-
function stringifyJSON(v) {
|
|
6374
|
-
const cache = new Set();
|
|
6375
|
-
return JSON.stringify(v, (key, value) => {
|
|
6376
|
-
if (typeof value === 'object' && value !== null) {
|
|
6377
|
-
if (cache.has(value)) {
|
|
6378
|
-
try {
|
|
6379
|
-
return JSON.parse(JSON.stringify(value));
|
|
6380
|
-
} catch (err) {
|
|
6381
|
-
return undefined;
|
|
6382
|
-
}
|
|
6383
|
-
}
|
|
6359
|
+
function getTransferListForWriter(object) {
|
|
6360
|
+
if (object === null) {
|
|
6361
|
+
return {};
|
|
6362
|
+
}
|
|
6384
6363
|
|
|
6385
|
-
|
|
6364
|
+
const clone = Object.assign({}, object);
|
|
6365
|
+
Object.keys(clone).forEach(key => {
|
|
6366
|
+
if (typeof object[key] === 'object' && !ArrayBuffer.isView(object[key])) {
|
|
6367
|
+
clone[key] = getTransferListForWriter(object[key]);
|
|
6368
|
+
} else if (typeof clone[key] === 'function' || clone[key] instanceof RegExp) {
|
|
6369
|
+
clone[key] = {};
|
|
6370
|
+
} else {
|
|
6371
|
+
clone[key] = object[key];
|
|
6386
6372
|
}
|
|
6387
|
-
|
|
6388
|
-
return value;
|
|
6389
6373
|
});
|
|
6374
|
+
return clone;
|
|
6390
6375
|
}
|
|
6391
|
-
//# sourceMappingURL=
|
|
6376
|
+
//# sourceMappingURL=get-transfer-list.js.map
|
|
6392
6377
|
|
|
6393
6378
|
/***/ }),
|
|
6394
6379
|
|
|
@@ -13033,7 +13018,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
13033
13018
|
|
|
13034
13019
|
|
|
13035
13020
|
|
|
13036
|
-
const VERSION = true ? "8.9.0-alpha.
|
|
13021
|
+
const VERSION = true ? "8.9.0-alpha.5" : undefined;
|
|
13037
13022
|
const isBrowser = Object(_lib_is_browser__WEBPACK_IMPORTED_MODULE_0__["default"])();
|
|
13038
13023
|
//# sourceMappingURL=globals.js.map
|
|
13039
13024
|
|
|
@@ -54157,7 +54142,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
54157
54142
|
|
|
54158
54143
|
|
|
54159
54144
|
|
|
54160
|
-
const VERSION = true ? "8.9.0-alpha.
|
|
54145
|
+
const VERSION = true ? "8.9.0-alpha.5" : undefined;
|
|
54161
54146
|
const isBrowser = Object(_env_is_browser__WEBPACK_IMPORTED_MODULE_0__["default"])();
|
|
54162
54147
|
//# sourceMappingURL=globals.js.map
|
|
54163
54148
|
|
|
@@ -54815,16 +54800,21 @@ const hexToRGBA = c => {
|
|
|
54815
54800
|
opacity
|
|
54816
54801
|
} = Object(d3_color__WEBPACK_IMPORTED_MODULE_1__["rgb"])(c);
|
|
54817
54802
|
return [r, g, b, 255 * opacity];
|
|
54818
|
-
}; // Kepler -> Deck.gl
|
|
54803
|
+
}; // Kepler prop value -> Deck.gl prop value
|
|
54804
|
+
// Supports nested definitions, and function transforms:
|
|
54805
|
+
// {keplerProp: 'deckProp'} is equivalent to:
|
|
54806
|
+
// {keplerProp: x => ({deckProp: x})}
|
|
54819
54807
|
|
|
54820
54808
|
|
|
54821
54809
|
const sharedPropMap = {
|
|
54810
|
+
// Apply the value of Kepler `color` prop to the deck `getFillColor` prop
|
|
54822
54811
|
color: 'getFillColor',
|
|
54823
54812
|
isVisible: 'visible',
|
|
54824
54813
|
label: 'cartoLabel',
|
|
54825
54814
|
textLabel: {
|
|
54826
54815
|
alignment: 'getTextAlignmentBaseline',
|
|
54827
54816
|
anchor: 'getTextAnchor',
|
|
54817
|
+
// Apply the value of Kepler `textLabel.color` prop to the deck `getTextColor` prop
|
|
54828
54818
|
color: 'getTextColor',
|
|
54829
54819
|
size: 'getTextSize'
|
|
54830
54820
|
},
|
|
@@ -54893,6 +54883,13 @@ function getLayer(type, config, dataset) {
|
|
|
54893
54883
|
point: {
|
|
54894
54884
|
Layer: _deck_gl_aggregation_layers__WEBPACK_IMPORTED_MODULE_5__["GeoJsonLayer"],
|
|
54895
54885
|
propMap: {
|
|
54886
|
+
columns: {
|
|
54887
|
+
altitude: x => ({
|
|
54888
|
+
parameters: {
|
|
54889
|
+
depthTest: Boolean(x)
|
|
54890
|
+
}
|
|
54891
|
+
})
|
|
54892
|
+
},
|
|
54896
54893
|
visConfig: {
|
|
54897
54894
|
outline: 'stroked'
|
|
54898
54895
|
}
|
|
@@ -55157,13 +55154,17 @@ function getColorAccessor({
|
|
|
55157
55154
|
return normalizeAccessor(accessor, data);
|
|
55158
55155
|
}
|
|
55159
55156
|
const FALLBACK_ICON = 'data:image/svg+xml;charset=utf-8;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4NCiAgPGNpcmNsZSBjeD0iNTAiIGN5PSI1MCIgcj0iNTAiLz4NCjwvc3ZnPg==';
|
|
55160
|
-
function getIconUrlAccessor(field,
|
|
55157
|
+
function getIconUrlAccessor(field, range, {
|
|
55158
|
+
fallbackUrl,
|
|
55159
|
+
maxIconSize,
|
|
55160
|
+
useMaskedIcons
|
|
55161
|
+
}, data) {
|
|
55161
55162
|
const urlToUnpackedIcon = url => ({
|
|
55162
55163
|
id: `${url}@@${maxIconSize}`,
|
|
55163
55164
|
url,
|
|
55164
55165
|
width: maxIconSize,
|
|
55165
55166
|
height: maxIconSize,
|
|
55166
|
-
mask:
|
|
55167
|
+
mask: useMaskedIcons
|
|
55167
55168
|
});
|
|
55168
55169
|
|
|
55169
55170
|
let unknownValue = fallbackUrl || FALLBACK_ICON;
|
|
@@ -56018,7 +56019,7 @@ async function _fetchTilestats(attribute, dataset, accessToken, credentials) {
|
|
|
56018
56019
|
let url = `${statsUrl}/${connection}/`;
|
|
56019
56020
|
|
|
56020
56021
|
if (type === _maps_api_common__WEBPACK_IMPORTED_MODULE_1__["MAP_TYPES"].QUERY) {
|
|
56021
|
-
url += `${attribute}
|
|
56022
|
+
url += `${attribute}?${Object(_maps_api_common__WEBPACK_IMPORTED_MODULE_1__["encodeParameter"])('q', source)}`;
|
|
56022
56023
|
} else {
|
|
56023
56024
|
// MAP_TYPE.TABLE
|
|
56024
56025
|
url += `${source}/${attribute}`;
|
|
@@ -56155,7 +56156,13 @@ async function fetchMap({
|
|
|
56155
56156
|
}) => config.dataId);
|
|
56156
56157
|
map.datasets.forEach(dataset => {
|
|
56157
56158
|
if (geojsonDatasetIds.includes(dataset.id)) {
|
|
56159
|
+
const {
|
|
56160
|
+
config
|
|
56161
|
+
} = geojsonLayers.find(({
|
|
56162
|
+
config
|
|
56163
|
+
}) => config.dataId === dataset.id);
|
|
56158
56164
|
dataset.format = 'geojson';
|
|
56165
|
+
dataset.geoColumn = config.columns.geojson;
|
|
56159
56166
|
}
|
|
56160
56167
|
}); // Mutates map.datasets so that dataset.data contains data
|
|
56161
56168
|
|
|
@@ -56236,15 +56243,17 @@ function parseMap(json) {
|
|
|
56236
56243
|
propMap,
|
|
56237
56244
|
defaultProps
|
|
56238
56245
|
} = Object(_layer_map__WEBPACK_IMPORTED_MODULE_1__["getLayer"])(type, config, dataset);
|
|
56246
|
+
const styleProps = createStyleProps(config, propMap);
|
|
56239
56247
|
return new Layer({
|
|
56240
56248
|
id,
|
|
56241
56249
|
data,
|
|
56242
56250
|
...defaultProps,
|
|
56243
|
-
...createBlendingProps(layerBlending),
|
|
56244
56251
|
...(!config.textLabel && createInteractionProps(interactionConfig)),
|
|
56245
|
-
...
|
|
56252
|
+
...styleProps,
|
|
56246
56253
|
...createChannelProps(visualChannels, type, config, data),
|
|
56247
56254
|
// Must come after style
|
|
56255
|
+
...createParametersProp(layerBlending, styleProps.parameters || {}),
|
|
56256
|
+
// Must come after style
|
|
56248
56257
|
...createLoadOptions(token)
|
|
56249
56258
|
});
|
|
56250
56259
|
} catch (e) {
|
|
@@ -56288,24 +56297,18 @@ function extractTextLayers(layers) {
|
|
|
56288
56297
|
}));
|
|
56289
56298
|
}
|
|
56290
56299
|
|
|
56291
|
-
function
|
|
56300
|
+
function createParametersProp(layerBlending, parameters) {
|
|
56292
56301
|
if (layerBlending === 'additive') {
|
|
56293
|
-
|
|
56294
|
-
|
|
56295
|
-
blendFunc: [_luma_gl_constants__WEBPACK_IMPORTED_MODULE_0__["default"].SRC_ALPHA, _luma_gl_constants__WEBPACK_IMPORTED_MODULE_0__["default"].DST_ALPHA],
|
|
56296
|
-
blendEquation: _luma_gl_constants__WEBPACK_IMPORTED_MODULE_0__["default"].FUNC_ADD
|
|
56297
|
-
}
|
|
56298
|
-
};
|
|
56302
|
+
parameters.blendFunc = [_luma_gl_constants__WEBPACK_IMPORTED_MODULE_0__["default"].SRC_ALPHA, _luma_gl_constants__WEBPACK_IMPORTED_MODULE_0__["default"].DST_ALPHA];
|
|
56303
|
+
parameters.blendEquation = _luma_gl_constants__WEBPACK_IMPORTED_MODULE_0__["default"].FUNC_ADD;
|
|
56299
56304
|
} else if (layerBlending === 'subtractive') {
|
|
56300
|
-
|
|
56301
|
-
|
|
56302
|
-
blendFunc: [_luma_gl_constants__WEBPACK_IMPORTED_MODULE_0__["default"].ONE, _luma_gl_constants__WEBPACK_IMPORTED_MODULE_0__["default"].ONE_MINUS_DST_COLOR, _luma_gl_constants__WEBPACK_IMPORTED_MODULE_0__["default"].SRC_ALPHA, _luma_gl_constants__WEBPACK_IMPORTED_MODULE_0__["default"].DST_ALPHA],
|
|
56303
|
-
blendEquation: [_luma_gl_constants__WEBPACK_IMPORTED_MODULE_0__["default"].FUNC_SUBTRACT, _luma_gl_constants__WEBPACK_IMPORTED_MODULE_0__["default"].FUNC_ADD]
|
|
56304
|
-
}
|
|
56305
|
-
};
|
|
56305
|
+
parameters.blendFunc = [_luma_gl_constants__WEBPACK_IMPORTED_MODULE_0__["default"].ONE, _luma_gl_constants__WEBPACK_IMPORTED_MODULE_0__["default"].ONE_MINUS_DST_COLOR, _luma_gl_constants__WEBPACK_IMPORTED_MODULE_0__["default"].SRC_ALPHA, _luma_gl_constants__WEBPACK_IMPORTED_MODULE_0__["default"].DST_ALPHA];
|
|
56306
|
+
parameters.blendEquation = [_luma_gl_constants__WEBPACK_IMPORTED_MODULE_0__["default"].FUNC_SUBTRACT, _luma_gl_constants__WEBPACK_IMPORTED_MODULE_0__["default"].FUNC_ADD];
|
|
56306
56307
|
}
|
|
56307
56308
|
|
|
56308
|
-
return {
|
|
56309
|
+
return Object.keys(parameters).length ? {
|
|
56310
|
+
parameters
|
|
56311
|
+
} : {};
|
|
56309
56312
|
}
|
|
56310
56313
|
|
|
56311
56314
|
function createInteractionProps(interactionConfig) {
|
|
@@ -56417,6 +56420,29 @@ function createChannelProps(visualChannels, type, config, data) {
|
|
|
56417
56420
|
}, visConfig.opacity, data);
|
|
56418
56421
|
}
|
|
56419
56422
|
|
|
56423
|
+
if (type === 'point') {
|
|
56424
|
+
const altitude = config.columns?.altitude;
|
|
56425
|
+
|
|
56426
|
+
if (altitude) {
|
|
56427
|
+
result.dataTransform = data => {
|
|
56428
|
+
data.features.forEach(({
|
|
56429
|
+
geometry,
|
|
56430
|
+
properties
|
|
56431
|
+
}) => {
|
|
56432
|
+
const {
|
|
56433
|
+
type,
|
|
56434
|
+
coordinates
|
|
56435
|
+
} = geometry;
|
|
56436
|
+
|
|
56437
|
+
if (type === 'Point') {
|
|
56438
|
+
coordinates[2] = properties[altitude];
|
|
56439
|
+
}
|
|
56440
|
+
});
|
|
56441
|
+
return data;
|
|
56442
|
+
};
|
|
56443
|
+
}
|
|
56444
|
+
}
|
|
56445
|
+
|
|
56420
56446
|
if (radiusField || sizeField) {
|
|
56421
56447
|
result.getPointRadius = Object(_layer_map__WEBPACK_IMPORTED_MODULE_1__["getSizeAccessor"])( // @ts-ignore
|
|
56422
56448
|
radiusField || sizeField, // @ts-ignore
|
|
@@ -56454,8 +56480,17 @@ function createChannelProps(visualChannels, type, config, data) {
|
|
|
56454
56480
|
getPointRadius,
|
|
56455
56481
|
getFillColor
|
|
56456
56482
|
} = result;
|
|
56483
|
+
const {
|
|
56484
|
+
customMarkersUrl,
|
|
56485
|
+
customMarkersRange,
|
|
56486
|
+
filled: useMaskedIcons
|
|
56487
|
+
} = visConfig;
|
|
56457
56488
|
result.pointType = 'icon';
|
|
56458
|
-
result.getIcon = Object(_layer_map__WEBPACK_IMPORTED_MODULE_1__["getIconUrlAccessor"])(visualChannels.customMarkersField,
|
|
56489
|
+
result.getIcon = Object(_layer_map__WEBPACK_IMPORTED_MODULE_1__["getIconUrlAccessor"])(visualChannels.customMarkersField, customMarkersRange, {
|
|
56490
|
+
fallbackUrl: customMarkersUrl,
|
|
56491
|
+
maxIconSize,
|
|
56492
|
+
useMaskedIcons
|
|
56493
|
+
}, data);
|
|
56459
56494
|
result._subLayerProps = {
|
|
56460
56495
|
'points-icon': {
|
|
56461
56496
|
loadOptions: {
|
|
@@ -56471,7 +56506,7 @@ function createChannelProps(visualChannels, type, config, data) {
|
|
|
56471
56506
|
}
|
|
56472
56507
|
};
|
|
56473
56508
|
|
|
56474
|
-
if (getFillColor) {
|
|
56509
|
+
if (getFillColor && useMaskedIcons) {
|
|
56475
56510
|
result.getIconColor = getFillColor;
|
|
56476
56511
|
}
|
|
56477
56512
|
|
|
@@ -196,6 +196,15 @@ function getLayer(type, config, dataset) {
|
|
|
196
196
|
point: {
|
|
197
197
|
Layer: _layers.GeoJsonLayer,
|
|
198
198
|
propMap: {
|
|
199
|
+
columns: {
|
|
200
|
+
altitude: function altitude(x) {
|
|
201
|
+
return {
|
|
202
|
+
parameters: {
|
|
203
|
+
depthTest: Boolean(x)
|
|
204
|
+
}
|
|
205
|
+
};
|
|
206
|
+
}
|
|
207
|
+
},
|
|
199
208
|
visConfig: {
|
|
200
209
|
outline: 'stroked'
|
|
201
210
|
}
|
|
@@ -494,14 +503,18 @@ function getColorAccessor(_ref4, scaleType, _ref5, opacity, data) {
|
|
|
494
503
|
|
|
495
504
|
var FALLBACK_ICON = 'data:image/svg+xml;charset=utf-8;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4NCiAgPGNpcmNsZSBjeD0iNTAiIGN5PSI1MCIgcj0iNTAiLz4NCjwvc3ZnPg==';
|
|
496
505
|
|
|
497
|
-
function getIconUrlAccessor(field,
|
|
506
|
+
function getIconUrlAccessor(field, range, _ref8, data) {
|
|
507
|
+
var fallbackUrl = _ref8.fallbackUrl,
|
|
508
|
+
maxIconSize = _ref8.maxIconSize,
|
|
509
|
+
useMaskedIcons = _ref8.useMaskedIcons;
|
|
510
|
+
|
|
498
511
|
var urlToUnpackedIcon = function urlToUnpackedIcon(url) {
|
|
499
512
|
return {
|
|
500
513
|
id: "".concat(url, "@@").concat(maxIconSize),
|
|
501
514
|
url: url,
|
|
502
515
|
width: maxIconSize,
|
|
503
516
|
height: maxIconSize,
|
|
504
|
-
mask:
|
|
517
|
+
mask: useMaskedIcons
|
|
505
518
|
};
|
|
506
519
|
};
|
|
507
520
|
|
|
@@ -563,8 +576,8 @@ function negateAccessor(accessor) {
|
|
|
563
576
|
} : -accessor;
|
|
564
577
|
}
|
|
565
578
|
|
|
566
|
-
function getSizeAccessor(
|
|
567
|
-
var name =
|
|
579
|
+
function getSizeAccessor(_ref9, scaleType, aggregation, range, data) {
|
|
580
|
+
var name = _ref9.name;
|
|
568
581
|
var scale = scaleType ? SCALE_FUNCS[scaleType]() : identity;
|
|
569
582
|
|
|
570
583
|
if (scaleType) {
|
|
@@ -598,9 +611,9 @@ var FORMATS = {
|
|
|
598
611
|
default: String
|
|
599
612
|
};
|
|
600
613
|
|
|
601
|
-
function getTextAccessor(
|
|
602
|
-
var name =
|
|
603
|
-
type =
|
|
614
|
+
function getTextAccessor(_ref10, data) {
|
|
615
|
+
var name = _ref10.name,
|
|
616
|
+
type = _ref10.type;
|
|
604
617
|
var format = FORMATS[type] || FORMATS.default;
|
|
605
618
|
|
|
606
619
|
var accessor = function accessor(properties) {
|
|
@@ -610,10 +623,10 @@ function getTextAccessor(_ref9, data) {
|
|
|
610
623
|
return normalizeAccessor(accessor, data);
|
|
611
624
|
}
|
|
612
625
|
|
|
613
|
-
function getTextPixelOffsetAccessor(
|
|
614
|
-
var alignment =
|
|
615
|
-
anchor =
|
|
616
|
-
size =
|
|
626
|
+
function getTextPixelOffsetAccessor(_ref11, radius) {
|
|
627
|
+
var alignment = _ref11.alignment,
|
|
628
|
+
anchor = _ref11.anchor,
|
|
629
|
+
size = _ref11.size;
|
|
617
630
|
var padding = 20;
|
|
618
631
|
var signX = anchor === 'middle' ? 0 : anchor === 'start' ? 1 : -1;
|
|
619
632
|
var signY = alignment === 'center' ? 0 : alignment === 'bottom' ? 1 : -1;
|
|
@@ -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","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"}
|
|
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","altitude","parameters","depthTest","Boolean","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","useMaskedIcons","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 prop value -> Deck.gl prop value\n// Supports nested definitions, and function transforms:\n// {keplerProp: 'deckProp'} is equivalent to:\n// {keplerProp: x => ({deckProp: x})}\nconst sharedPropMap = {\n // Apply the value of Kepler `color` prop to the deck `getFillColor` prop\n color: 'getFillColor',\n isVisible: 'visible',\n label: 'cartoLabel',\n textLabel: {\n alignment: 'getTextAlignmentBaseline',\n anchor: 'getTextAnchor',\n // Apply the value of Kepler `textLabel.color` prop to the deck `getTextColor` prop\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: {\n columns: {\n altitude: x => ({parameters: {depthTest: Boolean(x)}})\n },\n visConfig: {outline: 'stroked'}\n }\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 range: CustomMarkersRange | null | undefined,\n {fallbackUrl, maxIconSize, useMaskedIcons},\n data: any\n) {\n const urlToUnpackedIcon = (url: string) => ({\n id: `${url}@@${maxIconSize}`,\n url,\n width: maxIconSize,\n height: maxIconSize,\n mask: useMaskedIcons\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"}
|