@kepler.gl/deckgl-layers 3.3.0-alpha.5 → 3.3.0-alpha.7
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/cjs/3d-building-layer/3d-building-layer.js +66 -0
- package/dist/cjs/3d-building-layer/3d-building-utils.js +166 -0
- package/dist/cjs/3d-building-layer/types.js +6 -0
- package/dist/cjs/cluster-layer/cluster-layer.js +292 -0
- package/dist/cjs/column-layer/enhanced-column-layer.js +160 -0
- package/dist/{deckgl-extensions → cjs/deckgl-extensions}/filter-arrow-layer.js +1 -1
- package/dist/cjs/deckgl-extensions/filter-shader-module.js +26 -0
- package/dist/cjs/globe/atmosphere-layer.js +341 -0
- package/dist/cjs/globe/enhanced-multi-icon-layer.js +63 -0
- package/dist/cjs/globe/globe-depth-disk-layer.js +145 -0
- package/dist/cjs/globe/globe-layers.js +574 -0
- package/dist/cjs/globe/globe-stars-layer.js +99 -0
- package/dist/cjs/globe/globe-stars-layer.spec.js +42 -0
- package/dist/cjs/globe/globe-view.js +404 -0
- package/dist/{globe → cjs/globe}/index.js +19 -1
- package/dist/cjs/globe/mvt-label-layer.js +190 -0
- package/dist/cjs/grid-layer/enhanced-cpu-grid-layer.js +116 -0
- package/dist/cjs/hexagon-layer/enhanced-hexagon-layer.js +134 -0
- package/dist/{index.js → cjs/index.js} +1 -1
- package/dist/cjs/layer-utils/aggregation-utils.js +181 -0
- package/dist/cjs/layer-utils/cluster-utils.js +93 -0
- package/dist/cjs/layer-utils/cpu-aggregator.js +798 -0
- package/dist/cjs/layer-utils/globe-cell-utils.js +173 -0
- package/dist/cjs/layer-utils/shader-utils.js +38 -0
- package/dist/cjs/line-layer/line-layer.js +95 -0
- package/dist/cjs/raster/images.js +271 -0
- package/dist/cjs/raster/pipeline-validation-patch.js +101 -0
- package/dist/cjs/raster/raster-layer/raster-layer-shaders.js +163 -0
- package/dist/cjs/raster/raster-layer/raster-layer-webgl1.fs.js +10 -0
- package/dist/cjs/raster/raster-layer/raster-layer-webgl1.vs.js +10 -0
- package/dist/cjs/raster/raster-layer/raster-layer-webgl2.fs.js +10 -0
- package/dist/cjs/raster/raster-layer/raster-layer-webgl2.vs.js +10 -0
- package/dist/cjs/raster/raster-layer/raster-layer.js +287 -0
- package/dist/cjs/raster/raster-mesh-layer/raster-mesh-layer-shaders.js +38 -0
- package/dist/cjs/raster/raster-mesh-layer/raster-mesh-layer-webgl1.fs.js +10 -0
- package/dist/cjs/raster/raster-mesh-layer/raster-mesh-layer-webgl1.vs.js +10 -0
- package/dist/cjs/raster/raster-mesh-layer/raster-mesh-layer-webgl2.fs.js +10 -0
- package/dist/cjs/raster/raster-mesh-layer/raster-mesh-layer-webgl2.vs.js +10 -0
- package/dist/cjs/raster/raster-mesh-layer/raster-mesh-layer.js +321 -0
- package/dist/cjs/raster/raster-processing-uniforms.js +124 -0
- package/dist/cjs/raster/types.js +6 -0
- package/dist/cjs/raster/util.js +139 -0
- package/dist/cjs/raster/webgl/color/colormap.js +45 -0
- package/dist/cjs/raster/webgl/color/filter.js +58 -0
- package/dist/cjs/raster/webgl/color/gamma-contrast.js +68 -0
- package/dist/cjs/raster/webgl/color/linear-rescale.js +35 -0
- package/dist/cjs/raster/webgl/color/saturation.js +42 -0
- package/dist/cjs/raster/webgl/color/sigmoidal-contrast.js +68 -0
- package/dist/{raster → cjs/raster}/webgl/index.js +1 -1
- package/dist/cjs/raster/webgl/pansharpen/pansharpen-brovey.js +46 -0
- package/dist/cjs/raster/webgl/spectral-indices/evi.js +26 -0
- package/dist/cjs/raster/webgl/spectral-indices/msavi.js +25 -0
- package/dist/cjs/raster/webgl/spectral-indices/normalized-difference.js +19 -0
- package/dist/cjs/raster/webgl/spectral-indices/savi.js +21 -0
- package/dist/cjs/raster/webgl/texture/combine-bands.js +65 -0
- package/dist/cjs/raster/webgl/texture/mask.js +50 -0
- package/dist/cjs/raster/webgl/texture/reorder-bands.js +72 -0
- package/dist/cjs/raster/webgl/texture/rgba-image.js +34 -0
- package/dist/cjs/raster/webgl/types.js +6 -0
- package/dist/cjs/svg-icon-layer/scatterplot-icon-layer.js +88 -0
- package/dist/cjs/svg-icon-layer/svg-icon-layer.js +104 -0
- package/dist/cjs/wms/wms-layer.js +624 -0
- package/dist/esm/3d-building-layer/3d-building-layer.js +62 -0
- package/dist/esm/3d-building-layer/3d-building-utils.js +157 -0
- package/dist/esm/3d-building-layer/types.js +3 -0
- package/dist/esm/cluster-layer/cluster-layer.js +286 -0
- package/dist/esm/column-layer/enhanced-column-layer.js +156 -0
- package/dist/esm/deckgl-extensions/filter-arrow-layer.js +64 -0
- package/dist/esm/deckgl-extensions/filter-shader-module.js +20 -0
- package/dist/esm/globe/atmosphere-layer.js +335 -0
- package/dist/esm/globe/enhanced-multi-icon-layer.js +60 -0
- package/dist/esm/globe/globe-depth-disk-layer.js +140 -0
- package/dist/esm/globe/globe-layers.js +566 -0
- package/dist/esm/globe/globe-stars-layer.js +92 -0
- package/dist/esm/globe/globe-stars-layer.spec.js +40 -0
- package/dist/esm/globe/globe-view.js +398 -0
- package/dist/esm/globe/index.js +26 -0
- package/dist/esm/globe/mvt-label-layer.js +187 -0
- package/dist/esm/grid-layer/enhanced-cpu-grid-layer.js +112 -0
- package/dist/esm/hexagon-layer/enhanced-hexagon-layer.js +130 -0
- package/dist/esm/index.js +22 -0
- package/dist/esm/layer-utils/aggregation-utils.js +172 -0
- package/dist/esm/layer-utils/cluster-utils.js +86 -0
- package/dist/esm/layer-utils/cpu-aggregator.js +788 -0
- package/dist/esm/layer-utils/globe-cell-utils.js +167 -0
- package/dist/esm/layer-utils/shader-utils.js +32 -0
- package/dist/esm/line-layer/line-layer.js +91 -0
- package/dist/esm/raster/images.js +267 -0
- package/dist/esm/raster/pipeline-validation-patch.js +94 -0
- package/dist/esm/raster/raster-layer/raster-layer-shaders.js +153 -0
- package/dist/esm/raster/raster-layer/raster-layer-webgl1.fs.js +5 -0
- package/dist/esm/raster/raster-layer/raster-layer-webgl1.vs.js +5 -0
- package/dist/esm/raster/raster-layer/raster-layer-webgl2.fs.js +5 -0
- package/dist/esm/raster/raster-layer/raster-layer-webgl2.vs.js +5 -0
- package/dist/esm/raster/raster-layer/raster-layer.js +283 -0
- package/dist/esm/raster/raster-mesh-layer/raster-mesh-layer-shaders.js +30 -0
- package/dist/esm/raster/raster-mesh-layer/raster-mesh-layer-webgl1.fs.js +5 -0
- package/dist/esm/raster/raster-mesh-layer/raster-mesh-layer-webgl1.vs.js +5 -0
- package/dist/esm/raster/raster-mesh-layer/raster-mesh-layer-webgl2.fs.js +5 -0
- package/dist/esm/raster/raster-mesh-layer/raster-mesh-layer-webgl2.vs.js +5 -0
- package/dist/esm/raster/raster-mesh-layer/raster-mesh-layer.js +318 -0
- package/dist/esm/raster/raster-processing-uniforms.js +118 -0
- package/dist/esm/raster/types.js +3 -0
- package/dist/esm/raster/util.js +134 -0
- package/dist/esm/raster/webgl/color/colormap.js +39 -0
- package/dist/esm/raster/webgl/color/filter.js +52 -0
- package/dist/esm/raster/webgl/color/gamma-contrast.js +62 -0
- package/dist/esm/raster/webgl/color/linear-rescale.js +29 -0
- package/dist/esm/raster/webgl/color/saturation.js +36 -0
- package/dist/esm/raster/webgl/color/sigmoidal-contrast.js +62 -0
- package/dist/esm/raster/webgl/index.js +26 -0
- package/dist/esm/raster/webgl/pansharpen/pansharpen-brovey.js +40 -0
- package/dist/esm/raster/webgl/spectral-indices/evi.js +20 -0
- package/dist/esm/raster/webgl/spectral-indices/msavi.js +19 -0
- package/dist/esm/raster/webgl/spectral-indices/normalized-difference.js +13 -0
- package/dist/esm/raster/webgl/spectral-indices/savi.js +15 -0
- package/dist/esm/raster/webgl/texture/combine-bands.js +58 -0
- package/dist/esm/raster/webgl/texture/mask.js +44 -0
- package/dist/esm/raster/webgl/texture/reorder-bands.js +65 -0
- package/dist/esm/raster/webgl/texture/rgba-image.js +28 -0
- package/dist/esm/raster/webgl/types.js +3 -0
- package/dist/esm/svg-icon-layer/scatterplot-icon-layer.js +84 -0
- package/dist/esm/svg-icon-layer/svg-icon-layer.js +101 -0
- package/dist/esm/wms/wms-layer.js +619 -0
- package/dist/globe/atmosphere-layer.d.ts +22 -1
- package/dist/globe/globe-stars-layer.d.ts +5 -0
- package/dist/globe/globe-stars-layer.spec.d.ts +1 -0
- package/dist/globe/index.d.ts +2 -2
- package/dist/wms/wms-layer.d.ts +8 -0
- package/package.json +19 -10
- package/dist/3d-building-layer/3d-building-layer.js +0 -66
- package/dist/3d-building-layer/3d-building-utils.js +0 -166
- package/dist/3d-building-layer/types.js +0 -6
- package/dist/cluster-layer/cluster-layer.js +0 -292
- package/dist/column-layer/enhanced-column-layer.js +0 -160
- package/dist/deckgl-extensions/filter-shader-module.js +0 -26
- package/dist/globe/atmosphere-layer.js +0 -220
- package/dist/globe/enhanced-multi-icon-layer.js +0 -63
- package/dist/globe/globe-depth-disk-layer.js +0 -145
- package/dist/globe/globe-layers.js +0 -569
- package/dist/globe/globe-stars-layer.js +0 -69
- package/dist/globe/globe-view.js +0 -404
- package/dist/globe/mvt-label-layer.js +0 -190
- package/dist/grid-layer/enhanced-cpu-grid-layer.js +0 -116
- package/dist/hexagon-layer/enhanced-hexagon-layer.js +0 -134
- package/dist/layer-utils/aggregation-utils.js +0 -181
- package/dist/layer-utils/cluster-utils.js +0 -93
- package/dist/layer-utils/cpu-aggregator.js +0 -798
- package/dist/layer-utils/globe-cell-utils.js +0 -173
- package/dist/layer-utils/shader-utils.js +0 -38
- package/dist/line-layer/line-layer.js +0 -95
- package/dist/raster/images.js +0 -271
- package/dist/raster/pipeline-validation-patch.js +0 -101
- package/dist/raster/raster-layer/raster-layer-shaders.js +0 -163
- package/dist/raster/raster-layer/raster-layer-webgl1.fs.js +0 -10
- package/dist/raster/raster-layer/raster-layer-webgl1.vs.js +0 -10
- package/dist/raster/raster-layer/raster-layer-webgl2.fs.js +0 -10
- package/dist/raster/raster-layer/raster-layer-webgl2.vs.js +0 -10
- package/dist/raster/raster-layer/raster-layer.js +0 -287
- package/dist/raster/raster-mesh-layer/matrix.d.ts +0 -4
- package/dist/raster/raster-mesh-layer/matrix.js +0 -18
- package/dist/raster/raster-mesh-layer/raster-mesh-layer-shaders.js +0 -38
- package/dist/raster/raster-mesh-layer/raster-mesh-layer-webgl1.fs.js +0 -10
- package/dist/raster/raster-mesh-layer/raster-mesh-layer-webgl1.vs.js +0 -10
- package/dist/raster/raster-mesh-layer/raster-mesh-layer-webgl2.fs.js +0 -10
- package/dist/raster/raster-mesh-layer/raster-mesh-layer-webgl2.vs.js +0 -10
- package/dist/raster/raster-mesh-layer/raster-mesh-layer.js +0 -321
- package/dist/raster/raster-processing-uniforms.js +0 -124
- package/dist/raster/types.js +0 -6
- package/dist/raster/util.js +0 -139
- package/dist/raster/webgl/color/colormap.js +0 -45
- package/dist/raster/webgl/color/filter.js +0 -58
- package/dist/raster/webgl/color/gamma-contrast.js +0 -68
- package/dist/raster/webgl/color/linear-rescale.js +0 -35
- package/dist/raster/webgl/color/saturation.js +0 -42
- package/dist/raster/webgl/color/sigmoidal-contrast.js +0 -68
- package/dist/raster/webgl/pansharpen/pansharpen-brovey.js +0 -46
- package/dist/raster/webgl/spectral-indices/evi.js +0 -26
- package/dist/raster/webgl/spectral-indices/msavi.js +0 -25
- package/dist/raster/webgl/spectral-indices/normalized-difference.js +0 -19
- package/dist/raster/webgl/spectral-indices/savi.js +0 -21
- package/dist/raster/webgl/texture/combine-bands.js +0 -65
- package/dist/raster/webgl/texture/mask.js +0 -50
- package/dist/raster/webgl/texture/reorder-bands.js +0 -72
- package/dist/raster/webgl/texture/rgba-image.js +0 -34
- package/dist/raster/webgl/types.js +0 -6
- package/dist/svg-icon-layer/scatterplot-icon-layer.js +0 -88
- package/dist/svg-icon-layer/svg-icon-layer.js +0 -104
- package/dist/wms/wms-layer.js +0 -594
|
@@ -1,181 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.buildAggregatedBinMap = buildAggregatedBinMap;
|
|
7
|
-
exports.classifyBinsByCustomBreaks = classifyBinsByCustomBreaks;
|
|
8
|
-
exports.enrichedAggregationUpdate = enrichedAggregationUpdate;
|
|
9
|
-
exports.enrichedRenderLayers = enrichedRenderLayers;
|
|
10
|
-
function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
|
|
11
|
-
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
|
|
12
|
-
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
13
|
-
// SPDX-License-Identifier: MIT
|
|
14
|
-
// Copyright contributors to the kepler.gl project
|
|
15
|
-
|
|
16
|
-
/**
|
|
17
|
-
* Build a Record<index, AggregatedBin> from the raw Float32Array of per-bin
|
|
18
|
-
* aggregated values returned by deck.gl 9's CPUAggregator/WebGLAggregator.
|
|
19
|
-
* The resulting map is compatible with the format kepler.gl expects for
|
|
20
|
-
* histogram rendering and color-scale selector.
|
|
21
|
-
*/
|
|
22
|
-
function buildAggregatedBinMap(binValues, binCount, aggregator) {
|
|
23
|
-
var bins = {};
|
|
24
|
-
for (var i = 0; i < binCount; i++) {
|
|
25
|
-
var _aggregator$getBin$co, _aggregator$getBin;
|
|
26
|
-
var val = binValues[i];
|
|
27
|
-
var count = (_aggregator$getBin$co = aggregator === null || aggregator === void 0 || (_aggregator$getBin = aggregator.getBin) === null || _aggregator$getBin === void 0 || (_aggregator$getBin = _aggregator$getBin.call(aggregator, i)) === null || _aggregator$getBin === void 0 ? void 0 : _aggregator$getBin.count) !== null && _aggregator$getBin$co !== void 0 ? _aggregator$getBin$co : 0;
|
|
28
|
-
bins[i] = {
|
|
29
|
-
i: i,
|
|
30
|
-
value: val,
|
|
31
|
-
counts: count
|
|
32
|
-
};
|
|
33
|
-
}
|
|
34
|
-
return bins;
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
/**
|
|
38
|
-
* Classify raw per-bin aggregated values into break indices according to
|
|
39
|
-
* a custom colorMap, and patch the deck.gl internal `state.colors` so the
|
|
40
|
-
* GPU shader renders the correct color for each bin.
|
|
41
|
-
*
|
|
42
|
-
* Custom breaks define thresholds [t0, t1, …, t_{N-2}] for N colors:
|
|
43
|
-
* color 0: value < t0
|
|
44
|
-
* color i: t_{i-1} <= value < t_i
|
|
45
|
-
* color N-1: value >= t_{N-2}
|
|
46
|
-
*
|
|
47
|
-
* We replace the values in `state.colors.attribute` / `state.colors.input`
|
|
48
|
-
* with integer break indices [0 … N-1]. Combined with `colorScaleType: 'quantize'`
|
|
49
|
-
* and `colorDomain: [0, N-1]`, the shader's linear interpolation maps each index
|
|
50
|
-
* to the correct color texture pixel.
|
|
51
|
-
*
|
|
52
|
-
* `rawValues` must be the original aggregated values (not previously classified).
|
|
53
|
-
*/
|
|
54
|
-
function classifyBinsByCustomBreaks(stateColors, binCount, colorMap, rawValues) {
|
|
55
|
-
if (!rawValues || binCount === 0) return;
|
|
56
|
-
var thresholds = [];
|
|
57
|
-
var _iterator = _createForOfIteratorHelper(colorMap),
|
|
58
|
-
_step;
|
|
59
|
-
try {
|
|
60
|
-
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
61
|
-
var entry = _step.value;
|
|
62
|
-
if (typeof entry[0] === 'number' && Number.isFinite(entry[0])) {
|
|
63
|
-
thresholds.push(entry[0]);
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
} catch (err) {
|
|
67
|
-
_iterator.e(err);
|
|
68
|
-
} finally {
|
|
69
|
-
_iterator.f();
|
|
70
|
-
}
|
|
71
|
-
thresholds.sort(function (a, b) {
|
|
72
|
-
return a - b;
|
|
73
|
-
});
|
|
74
|
-
var numColors = colorMap.length;
|
|
75
|
-
var classified = new Float32Array(rawValues.length);
|
|
76
|
-
for (var i = 0; i < binCount; i++) {
|
|
77
|
-
var v = rawValues[i];
|
|
78
|
-
if (!Number.isFinite(v)) {
|
|
79
|
-
classified[i] = NaN;
|
|
80
|
-
continue;
|
|
81
|
-
}
|
|
82
|
-
var idx = numColors - 1;
|
|
83
|
-
for (var t = 0; t < thresholds.length; t++) {
|
|
84
|
-
if (v < thresholds[t]) {
|
|
85
|
-
idx = t;
|
|
86
|
-
break;
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
classified[i] = idx;
|
|
90
|
-
}
|
|
91
|
-
for (var _i = binCount; _i < classified.length; _i++) {
|
|
92
|
-
classified[_i] = NaN;
|
|
93
|
-
}
|
|
94
|
-
var classifiedAttr = {
|
|
95
|
-
value: classified,
|
|
96
|
-
type: 'float32',
|
|
97
|
-
size: 1
|
|
98
|
-
};
|
|
99
|
-
stateColors.input = classifiedAttr;
|
|
100
|
-
stateColors.attribute = classifiedAttr;
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
// ---------------------------------------------------------------------------
|
|
104
|
-
// Shared _onAggregationUpdate / renderLayers logic for ScaleEnhanced* layers
|
|
105
|
-
// ---------------------------------------------------------------------------
|
|
106
|
-
//
|
|
107
|
-
// deck.gl 9's _onAggregationUpdate is private and its onSetColorDomain
|
|
108
|
-
// callback only provides [min, max]. That is sufficient for quantize/linear
|
|
109
|
-
// scales but d3.scaleQuantile needs the *full sorted array* of bin values to
|
|
110
|
-
// compute correct break points — without it the legend labels are wrong
|
|
111
|
-
// (see https://github.com/keplergl/kepler.gl/issues/3381).
|
|
112
|
-
//
|
|
113
|
-
// deck.gl does not expose a public hook for post-aggregation data, and props
|
|
114
|
-
// are Object.freeze()'d so we cannot suppress the parent's callback. Instead
|
|
115
|
-
// we let the parent fire its [min, max] call, then immediately fire a second
|
|
116
|
-
// enriched call with per-bin values (aggregatedBins) and, for quantile scale,
|
|
117
|
-
// the full sorted domain. The second call overwrites the first downstream in
|
|
118
|
-
// _onLayerSetDomain.
|
|
119
|
-
//
|
|
120
|
-
// This can be removed once deck.gl exposes a richer post-aggregation callback
|
|
121
|
-
// or makes _onAggregationUpdate / AttributeWithScale part of the public API.
|
|
122
|
-
|
|
123
|
-
/**
|
|
124
|
-
* Enriched _onAggregationUpdate implementation shared by ScaleEnhancedHexagonLayer
|
|
125
|
-
* and ScaleEnhancedGridLayer.
|
|
126
|
-
*
|
|
127
|
-
* @param layer The enhanced layer instance (`this`)
|
|
128
|
-
* @param ParentClass The deck.gl parent class (HexagonLayer or GridLayer)
|
|
129
|
-
* @param channel The aggregation channel index passed by deck.gl
|
|
130
|
-
*/
|
|
131
|
-
function enrichedAggregationUpdate(layer, ParentClass, channel) {
|
|
132
|
-
var _props$onSetColorDoma;
|
|
133
|
-
ParentClass.prototype._onAggregationUpdate.call(layer, {
|
|
134
|
-
channel: channel
|
|
135
|
-
});
|
|
136
|
-
if (channel !== 0) return;
|
|
137
|
-
var props = layer.getCurrentLayer().props;
|
|
138
|
-
var aggregator = layer.state.aggregator;
|
|
139
|
-
var result = aggregator.getResult(0);
|
|
140
|
-
var binValues = result === null || result === void 0 ? void 0 : result.value;
|
|
141
|
-
if (!binValues || aggregator.binCount <= 0) return;
|
|
142
|
-
layer.setState({
|
|
143
|
-
rawColorBinValues: Float32Array.from(binValues.subarray(0, aggregator.binCount))
|
|
144
|
-
});
|
|
145
|
-
var domain = aggregator.getResultDomain(0);
|
|
146
|
-
var aggregatedBins = buildAggregatedBinMap(binValues, aggregator.binCount, aggregator);
|
|
147
|
-
if (props.colorMap) {
|
|
148
|
-
classifyBinsByCustomBreaks(layer.state.colors, aggregator.binCount, props.colorMap, binValues);
|
|
149
|
-
}
|
|
150
|
-
var enrichedDomain = domain;
|
|
151
|
-
if (props.colorScaleType === 'quantile') {
|
|
152
|
-
enrichedDomain = Array.from(binValues).slice(0, aggregator.binCount).filter(Number.isFinite).sort(function (a, b) {
|
|
153
|
-
return a - b;
|
|
154
|
-
});
|
|
155
|
-
}
|
|
156
|
-
(_props$onSetColorDoma = props.onSetColorDomain) === null || _props$onSetColorDoma === void 0 || _props$onSetColorDoma.call(props, {
|
|
157
|
-
domain: enrichedDomain,
|
|
158
|
-
aggregatedBins: aggregatedBins
|
|
159
|
-
});
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
/**
|
|
163
|
-
* Shared renderLayers() wrapper that re-classifies bins when custom colorMap
|
|
164
|
-
* changes between renders without triggering a full re-aggregation.
|
|
165
|
-
*
|
|
166
|
-
* @param layer The enhanced layer instance (`this`)
|
|
167
|
-
* @param ParentClass The deck.gl parent class (HexagonLayer or GridLayer)
|
|
168
|
-
* @returns The sublayers returned by the parent's renderLayers()
|
|
169
|
-
*/
|
|
170
|
-
function enrichedRenderLayers(layer, ParentClass) {
|
|
171
|
-
var props = layer.getCurrentLayer().props;
|
|
172
|
-
var _layer$state = layer.state,
|
|
173
|
-
colors = _layer$state.colors,
|
|
174
|
-
rawColorBinValues = _layer$state.rawColorBinValues,
|
|
175
|
-
aggregator = _layer$state.aggregator;
|
|
176
|
-
if (props.colorMap && colors && rawColorBinValues && (aggregator === null || aggregator === void 0 ? void 0 : aggregator.binCount) > 0) {
|
|
177
|
-
classifyBinsByCustomBreaks(colors, aggregator.binCount, props.colorMap, rawColorBinValues);
|
|
178
|
-
}
|
|
179
|
-
return ParentClass.prototype.renderLayers.call(layer);
|
|
180
|
-
}
|
|
181
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJidWlsZEFnZ3JlZ2F0ZWRCaW5NYXAiLCJiaW5WYWx1ZXMiLCJiaW5Db3VudCIsImFnZ3JlZ2F0b3IiLCJiaW5zIiwiaSIsIl9hZ2dyZWdhdG9yJGdldEJpbiRjbyIsIl9hZ2dyZWdhdG9yJGdldEJpbiIsInZhbCIsImNvdW50IiwiZ2V0QmluIiwiY2FsbCIsInZhbHVlIiwiY291bnRzIiwiY2xhc3NpZnlCaW5zQnlDdXN0b21CcmVha3MiLCJzdGF0ZUNvbG9ycyIsImNvbG9yTWFwIiwicmF3VmFsdWVzIiwidGhyZXNob2xkcyIsIl9pdGVyYXRvciIsIl9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIiwiX3N0ZXAiLCJzIiwibiIsImRvbmUiLCJlbnRyeSIsIk51bWJlciIsImlzRmluaXRlIiwicHVzaCIsImVyciIsImUiLCJmIiwic29ydCIsImEiLCJiIiwibnVtQ29sb3JzIiwibGVuZ3RoIiwiY2xhc3NpZmllZCIsIkZsb2F0MzJBcnJheSIsInYiLCJOYU4iLCJpZHgiLCJ0IiwiY2xhc3NpZmllZEF0dHIiLCJ0eXBlIiwic2l6ZSIsImlucHV0IiwiYXR0cmlidXRlIiwiZW5yaWNoZWRBZ2dyZWdhdGlvblVwZGF0ZSIsImxheWVyIiwiUGFyZW50Q2xhc3MiLCJjaGFubmVsIiwiX3Byb3BzJG9uU2V0Q29sb3JEb21hIiwicHJvdG90eXBlIiwiX29uQWdncmVnYXRpb25VcGRhdGUiLCJwcm9wcyIsImdldEN1cnJlbnRMYXllciIsInN0YXRlIiwicmVzdWx0IiwiZ2V0UmVzdWx0Iiwic2V0U3RhdGUiLCJyYXdDb2xvckJpblZhbHVlcyIsImZyb20iLCJzdWJhcnJheSIsImRvbWFpbiIsImdldFJlc3VsdERvbWFpbiIsImFnZ3JlZ2F0ZWRCaW5zIiwiY29sb3JzIiwiZW5yaWNoZWREb21haW4iLCJjb2xvclNjYWxlVHlwZSIsIkFycmF5Iiwic2xpY2UiLCJmaWx0ZXIiLCJvblNldENvbG9yRG9tYWluIiwiZW5yaWNoZWRSZW5kZXJMYXllcnMiLCJfbGF5ZXIkc3RhdGUiLCJyZW5kZXJMYXllcnMiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvbGF5ZXItdXRpbHMvYWdncmVnYXRpb24tdXRpbHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IHR5cGUge0FnZ3JlZ2F0ZWRCaW4sIENvbG9yTWFwfSBmcm9tICdAa2VwbGVyLmdsL3R5cGVzJztcblxuLyoqXG4gKiBCdWlsZCBhIFJlY29yZDxpbmRleCwgQWdncmVnYXRlZEJpbj4gZnJvbSB0aGUgcmF3IEZsb2F0MzJBcnJheSBvZiBwZXItYmluXG4gKiBhZ2dyZWdhdGVkIHZhbHVlcyByZXR1cm5lZCBieSBkZWNrLmdsIDkncyBDUFVBZ2dyZWdhdG9yL1dlYkdMQWdncmVnYXRvci5cbiAqIFRoZSByZXN1bHRpbmcgbWFwIGlzIGNvbXBhdGlibGUgd2l0aCB0aGUgZm9ybWF0IGtlcGxlci5nbCBleHBlY3RzIGZvclxuICogaGlzdG9ncmFtIHJlbmRlcmluZyBhbmQgY29sb3Itc2NhbGUgc2VsZWN0b3IuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBidWlsZEFnZ3JlZ2F0ZWRCaW5NYXAoXG4gIGJpblZhbHVlczogQXJyYXlMaWtlPG51bWJlcj4sXG4gIGJpbkNvdW50OiBudW1iZXIsXG4gIGFnZ3JlZ2F0b3I/OiBhbnlcbik6IFJlY29yZDxudW1iZXIsIEFnZ3JlZ2F0ZWRCaW4+IHtcbiAgY29uc3QgYmluczogUmVjb3JkPG51bWJlciwgQWdncmVnYXRlZEJpbj4gPSB7fTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBiaW5Db3VudDsgaSsrKSB7XG4gICAgY29uc3QgdmFsID0gYmluVmFsdWVzW2ldO1xuICAgIGNvbnN0IGNvdW50ID0gYWdncmVnYXRvcj8uZ2V0QmluPy4oaSk/LmNvdW50ID8/IDA7XG4gICAgYmluc1tpXSA9IHtpLCB2YWx1ZTogdmFsLCBjb3VudHM6IGNvdW50fTtcbiAgfVxuICByZXR1cm4gYmlucztcbn1cblxuLyoqXG4gKiBDbGFzc2lmeSByYXcgcGVyLWJpbiBhZ2dyZWdhdGVkIHZhbHVlcyBpbnRvIGJyZWFrIGluZGljZXMgYWNjb3JkaW5nIHRvXG4gKiBhIGN1c3RvbSBjb2xvck1hcCwgYW5kIHBhdGNoIHRoZSBkZWNrLmdsIGludGVybmFsIGBzdGF0ZS5jb2xvcnNgIHNvIHRoZVxuICogR1BVIHNoYWRlciByZW5kZXJzIHRoZSBjb3JyZWN0IGNvbG9yIGZvciBlYWNoIGJpbi5cbiAqXG4gKiBDdXN0b20gYnJlYWtzIGRlZmluZSB0aHJlc2hvbGRzIFt0MCwgdDEsIOKApiwgdF97Ti0yfV0gZm9yIE4gY29sb3JzOlxuICogICBjb2xvciAwOiB2YWx1ZSA8IHQwXG4gKiAgIGNvbG9yIGk6IHRfe2ktMX0gPD0gdmFsdWUgPCB0X2lcbiAqICAgY29sb3IgTi0xOiB2YWx1ZSA+PSB0X3tOLTJ9XG4gKlxuICogV2UgcmVwbGFjZSB0aGUgdmFsdWVzIGluIGBzdGF0ZS5jb2xvcnMuYXR0cmlidXRlYCAvIGBzdGF0ZS5jb2xvcnMuaW5wdXRgXG4gKiB3aXRoIGludGVnZXIgYnJlYWsgaW5kaWNlcyBbMCDigKYgTi0xXS4gIENvbWJpbmVkIHdpdGggYGNvbG9yU2NhbGVUeXBlOiAncXVhbnRpemUnYFxuICogYW5kIGBjb2xvckRvbWFpbjogWzAsIE4tMV1gLCB0aGUgc2hhZGVyJ3MgbGluZWFyIGludGVycG9sYXRpb24gbWFwcyBlYWNoIGluZGV4XG4gKiB0byB0aGUgY29ycmVjdCBjb2xvciB0ZXh0dXJlIHBpeGVsLlxuICpcbiAqIGByYXdWYWx1ZXNgIG11c3QgYmUgdGhlIG9yaWdpbmFsIGFnZ3JlZ2F0ZWQgdmFsdWVzIChub3QgcHJldmlvdXNseSBjbGFzc2lmaWVkKS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNsYXNzaWZ5Qmluc0J5Q3VzdG9tQnJlYWtzKFxuICBzdGF0ZUNvbG9yczogYW55LFxuICBiaW5Db3VudDogbnVtYmVyLFxuICBjb2xvck1hcDogQ29sb3JNYXAsXG4gIHJhd1ZhbHVlczogRmxvYXQzMkFycmF5XG4pOiB2b2lkIHtcbiAgaWYgKCFyYXdWYWx1ZXMgfHwgYmluQ291bnQgPT09IDApIHJldHVybjtcblxuICBjb25zdCB0aHJlc2hvbGRzOiBudW1iZXJbXSA9IFtdO1xuICBmb3IgKGNvbnN0IGVudHJ5IG9mIGNvbG9yTWFwKSB7XG4gICAgaWYgKHR5cGVvZiBlbnRyeVswXSA9PT0gJ251bWJlcicgJiYgTnVtYmVyLmlzRmluaXRlKGVudHJ5WzBdKSkge1xuICAgICAgdGhyZXNob2xkcy5wdXNoKGVudHJ5WzBdKTtcbiAgICB9XG4gIH1cbiAgdGhyZXNob2xkcy5zb3J0KChhLCBiKSA9PiBhIC0gYik7XG5cbiAgY29uc3QgbnVtQ29sb3JzID0gY29sb3JNYXAubGVuZ3RoO1xuICBjb25zdCBjbGFzc2lmaWVkID0gbmV3IEZsb2F0MzJBcnJheShyYXdWYWx1ZXMubGVuZ3RoKTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBiaW5Db3VudDsgaSsrKSB7XG4gICAgY29uc3QgdiA9IHJhd1ZhbHVlc1tpXTtcbiAgICBpZiAoIU51bWJlci5pc0Zpbml0ZSh2KSkge1xuICAgICAgY2xhc3NpZmllZFtpXSA9IE5hTjtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBsZXQgaWR4ID0gbnVtQ29sb3JzIC0gMTtcbiAgICBmb3IgKGxldCB0ID0gMDsgdCA8IHRocmVzaG9sZHMubGVuZ3RoOyB0KyspIHtcbiAgICAgIGlmICh2IDwgdGhyZXNob2xkc1t0XSkge1xuICAgICAgICBpZHggPSB0O1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgY2xhc3NpZmllZFtpXSA9IGlkeDtcbiAgfVxuICBmb3IgKGxldCBpID0gYmluQ291bnQ7IGkgPCBjbGFzc2lmaWVkLmxlbmd0aDsgaSsrKSB7XG4gICAgY2xhc3NpZmllZFtpXSA9IE5hTjtcbiAgfVxuXG4gIGNvbnN0IGNsYXNzaWZpZWRBdHRyID0ge3ZhbHVlOiBjbGFzc2lmaWVkLCB0eXBlOiAnZmxvYXQzMicsIHNpemU6IDF9O1xuICBzdGF0ZUNvbG9ycy5pbnB1dCA9IGNsYXNzaWZpZWRBdHRyO1xuICBzdGF0ZUNvbG9ycy5hdHRyaWJ1dGUgPSBjbGFzc2lmaWVkQXR0cjtcbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBTaGFyZWQgX29uQWdncmVnYXRpb25VcGRhdGUgLyByZW5kZXJMYXllcnMgbG9naWMgZm9yIFNjYWxlRW5oYW5jZWQqIGxheWVyc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vL1xuLy8gZGVjay5nbCA5J3MgX29uQWdncmVnYXRpb25VcGRhdGUgaXMgcHJpdmF0ZSBhbmQgaXRzIG9uU2V0Q29sb3JEb21haW5cbi8vIGNhbGxiYWNrIG9ubHkgcHJvdmlkZXMgW21pbiwgbWF4XS4gIFRoYXQgaXMgc3VmZmljaWVudCBmb3IgcXVhbnRpemUvbGluZWFyXG4vLyBzY2FsZXMgYnV0IGQzLnNjYWxlUXVhbnRpbGUgbmVlZHMgdGhlICpmdWxsIHNvcnRlZCBhcnJheSogb2YgYmluIHZhbHVlcyB0b1xuLy8gY29tcHV0ZSBjb3JyZWN0IGJyZWFrIHBvaW50cyDigJQgd2l0aG91dCBpdCB0aGUgbGVnZW5kIGxhYmVscyBhcmUgd3Jvbmdcbi8vIChzZWUgaHR0cHM6Ly9naXRodWIuY29tL2tlcGxlcmdsL2tlcGxlci5nbC9pc3N1ZXMvMzM4MSkuXG4vL1xuLy8gZGVjay5nbCBkb2VzIG5vdCBleHBvc2UgYSBwdWJsaWMgaG9vayBmb3IgcG9zdC1hZ2dyZWdhdGlvbiBkYXRhLCBhbmQgcHJvcHNcbi8vIGFyZSBPYmplY3QuZnJlZXplKCknZCBzbyB3ZSBjYW5ub3Qgc3VwcHJlc3MgdGhlIHBhcmVudCdzIGNhbGxiYWNrLiAgSW5zdGVhZFxuLy8gd2UgbGV0IHRoZSBwYXJlbnQgZmlyZSBpdHMgW21pbiwgbWF4XSBjYWxsLCB0aGVuIGltbWVkaWF0ZWx5IGZpcmUgYSBzZWNvbmRcbi8vIGVucmljaGVkIGNhbGwgd2l0aCBwZXItYmluIHZhbHVlcyAoYWdncmVnYXRlZEJpbnMpIGFuZCwgZm9yIHF1YW50aWxlIHNjYWxlLFxuLy8gdGhlIGZ1bGwgc29ydGVkIGRvbWFpbi4gIFRoZSBzZWNvbmQgY2FsbCBvdmVyd3JpdGVzIHRoZSBmaXJzdCBkb3duc3RyZWFtIGluXG4vLyBfb25MYXllclNldERvbWFpbi5cbi8vXG4vLyBUaGlzIGNhbiBiZSByZW1vdmVkIG9uY2UgZGVjay5nbCBleHBvc2VzIGEgcmljaGVyIHBvc3QtYWdncmVnYXRpb24gY2FsbGJhY2tcbi8vIG9yIG1ha2VzIF9vbkFnZ3JlZ2F0aW9uVXBkYXRlIC8gQXR0cmlidXRlV2l0aFNjYWxlIHBhcnQgb2YgdGhlIHB1YmxpYyBBUEkuXG5cbi8qKlxuICogRW5yaWNoZWQgX29uQWdncmVnYXRpb25VcGRhdGUgaW1wbGVtZW50YXRpb24gc2hhcmVkIGJ5IFNjYWxlRW5oYW5jZWRIZXhhZ29uTGF5ZXJcbiAqIGFuZCBTY2FsZUVuaGFuY2VkR3JpZExheWVyLlxuICpcbiAqIEBwYXJhbSBsYXllciAgICAgICBUaGUgZW5oYW5jZWQgbGF5ZXIgaW5zdGFuY2UgKGB0aGlzYClcbiAqIEBwYXJhbSBQYXJlbnRDbGFzcyBUaGUgZGVjay5nbCBwYXJlbnQgY2xhc3MgKEhleGFnb25MYXllciBvciBHcmlkTGF5ZXIpXG4gKiBAcGFyYW0gY2hhbm5lbCAgICAgVGhlIGFnZ3JlZ2F0aW9uIGNoYW5uZWwgaW5kZXggcGFzc2VkIGJ5IGRlY2suZ2xcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVucmljaGVkQWdncmVnYXRpb25VcGRhdGUobGF5ZXI6IGFueSwgUGFyZW50Q2xhc3M6IGFueSwgY2hhbm5lbDogbnVtYmVyKTogdm9pZCB7XG4gIChQYXJlbnRDbGFzcy5wcm90b3R5cGUgYXMgYW55KS5fb25BZ2dyZWdhdGlvblVwZGF0ZS5jYWxsKGxheWVyLCB7Y2hhbm5lbH0pO1xuXG4gIGlmIChjaGFubmVsICE9PSAwKSByZXR1cm47XG5cbiAgY29uc3QgcHJvcHMgPSBsYXllci5nZXRDdXJyZW50TGF5ZXIoKS5wcm9wcztcbiAgY29uc3Qge2FnZ3JlZ2F0b3J9ID0gbGF5ZXIuc3RhdGU7XG4gIGNvbnN0IHJlc3VsdCA9IGFnZ3JlZ2F0b3IuZ2V0UmVzdWx0KDApO1xuICBjb25zdCBiaW5WYWx1ZXMgPSByZXN1bHQ/LnZhbHVlIGFzIEZsb2F0MzJBcnJheSB8IHVuZGVmaW5lZDtcbiAgaWYgKCFiaW5WYWx1ZXMgfHwgYWdncmVnYXRvci5iaW5Db3VudCA8PSAwKSByZXR1cm47XG5cbiAgbGF5ZXIuc2V0U3RhdGUoe1xuICAgIHJhd0NvbG9yQmluVmFsdWVzOiBGbG9hdDMyQXJyYXkuZnJvbShiaW5WYWx1ZXMuc3ViYXJyYXkoMCwgYWdncmVnYXRvci5iaW5Db3VudCkpXG4gIH0pO1xuXG4gIGNvbnN0IGRvbWFpbiA9IGFnZ3JlZ2F0b3IuZ2V0UmVzdWx0RG9tYWluKDApO1xuICBjb25zdCBhZ2dyZWdhdGVkQmlucyA9IGJ1aWxkQWdncmVnYXRlZEJpbk1hcChiaW5WYWx1ZXMsIGFnZ3JlZ2F0b3IuYmluQ291bnQsIGFnZ3JlZ2F0b3IpO1xuXG4gIGlmIChwcm9wcy5jb2xvck1hcCkge1xuICAgIGNsYXNzaWZ5Qmluc0J5Q3VzdG9tQnJlYWtzKGxheWVyLnN0YXRlLmNvbG9ycywgYWdncmVnYXRvci5iaW5Db3VudCwgcHJvcHMuY29sb3JNYXAsIGJpblZhbHVlcyk7XG4gIH1cblxuICBsZXQgZW5yaWNoZWREb21haW4gPSBkb21haW47XG4gIGlmIChwcm9wcy5jb2xvclNjYWxlVHlwZSA9PT0gJ3F1YW50aWxlJykge1xuICAgIGVucmljaGVkRG9tYWluID0gQXJyYXkuZnJvbShiaW5WYWx1ZXMpXG4gICAgICAuc2xpY2UoMCwgYWdncmVnYXRvci5iaW5Db3VudClcbiAgICAgIC5maWx0ZXIoTnVtYmVyLmlzRmluaXRlKVxuICAgICAgLnNvcnQoKGE6IG51bWJlciwgYjogbnVtYmVyKSA9PiBhIC0gYik7XG4gIH1cbiAgcHJvcHMub25TZXRDb2xvckRvbWFpbj8uKHtkb21haW46IGVucmljaGVkRG9tYWluLCBhZ2dyZWdhdGVkQmluc30pO1xufVxuXG4vKipcbiAqIFNoYXJlZCByZW5kZXJMYXllcnMoKSB3cmFwcGVyIHRoYXQgcmUtY2xhc3NpZmllcyBiaW5zIHdoZW4gY3VzdG9tIGNvbG9yTWFwXG4gKiBjaGFuZ2VzIGJldHdlZW4gcmVuZGVycyB3aXRob3V0IHRyaWdnZXJpbmcgYSBmdWxsIHJlLWFnZ3JlZ2F0aW9uLlxuICpcbiAqIEBwYXJhbSBsYXllciAgICAgICBUaGUgZW5oYW5jZWQgbGF5ZXIgaW5zdGFuY2UgKGB0aGlzYClcbiAqIEBwYXJhbSBQYXJlbnRDbGFzcyBUaGUgZGVjay5nbCBwYXJlbnQgY2xhc3MgKEhleGFnb25MYXllciBvciBHcmlkTGF5ZXIpXG4gKiBAcmV0dXJucyBUaGUgc3VibGF5ZXJzIHJldHVybmVkIGJ5IHRoZSBwYXJlbnQncyByZW5kZXJMYXllcnMoKVxuICovXG5leHBvcnQgZnVuY3Rpb24gZW5yaWNoZWRSZW5kZXJMYXllcnMobGF5ZXI6IGFueSwgUGFyZW50Q2xhc3M6IGFueSk6IGFueSB7XG4gIGNvbnN0IHByb3BzID0gbGF5ZXIuZ2V0Q3VycmVudExheWVyKCkucHJvcHM7XG4gIGNvbnN0IHtjb2xvcnMsIHJhd0NvbG9yQmluVmFsdWVzLCBhZ2dyZWdhdG9yfSA9IGxheWVyLnN0YXRlO1xuICBpZiAocHJvcHMuY29sb3JNYXAgJiYgY29sb3JzICYmIHJhd0NvbG9yQmluVmFsdWVzICYmIGFnZ3JlZ2F0b3I/LmJpbkNvdW50ID4gMCkge1xuICAgIGNsYXNzaWZ5Qmluc0J5Q3VzdG9tQnJlYWtzKGNvbG9ycywgYWdncmVnYXRvci5iaW5Db3VudCwgcHJvcHMuY29sb3JNYXAsIHJhd0NvbG9yQmluVmFsdWVzKTtcbiAgfVxuICByZXR1cm4gKFBhcmVudENsYXNzLnByb3Rv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
|
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
Object.defineProperty(exports, "__esModule", {
|
|
5
|
-
value: true
|
|
6
|
-
});
|
|
7
|
-
exports["default"] = void 0;
|
|
8
|
-
exports.getGeoJSON = getGeoJSON;
|
|
9
|
-
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
10
|
-
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
11
|
-
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
12
|
-
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
13
|
-
var _supercluster = _interopRequireDefault(require("supercluster"));
|
|
14
|
-
var _memoize = _interopRequireDefault(require("lodash/memoize"));
|
|
15
|
-
// SPDX-License-Identifier: MIT
|
|
16
|
-
// Copyright contributors to the kepler.gl project
|
|
17
|
-
|
|
18
|
-
function getGeoJSON(data, getPosition, filterData) {
|
|
19
|
-
var raw = typeof filterData === 'function' ? data.filter(filterData) : data;
|
|
20
|
-
return raw.map(function (d) {
|
|
21
|
-
return {
|
|
22
|
-
type: 'Point',
|
|
23
|
-
properties: {
|
|
24
|
-
data: d,
|
|
25
|
-
points: [d],
|
|
26
|
-
point_count: 1,
|
|
27
|
-
point_count_abbreviated: '1'
|
|
28
|
-
},
|
|
29
|
-
geometry: {
|
|
30
|
-
coordinates: getPosition(d)
|
|
31
|
-
}
|
|
32
|
-
};
|
|
33
|
-
}).filter(function (d) {
|
|
34
|
-
return d.geometry.coordinates.every(Number.isFinite);
|
|
35
|
-
});
|
|
36
|
-
}
|
|
37
|
-
var clusterResolver = function clusterResolver(_ref) {
|
|
38
|
-
var clusterRadius = _ref.clusterRadius;
|
|
39
|
-
return "".concat(clusterRadius);
|
|
40
|
-
};
|
|
41
|
-
var getClusterer = function getClusterer(_ref2) {
|
|
42
|
-
var clusterRadius = _ref2.clusterRadius,
|
|
43
|
-
geoJSON = _ref2.geoJSON;
|
|
44
|
-
return new _supercluster["default"]({
|
|
45
|
-
maxZoom: 20,
|
|
46
|
-
radius: clusterRadius,
|
|
47
|
-
reduce: function reduce(accumulated, props) {
|
|
48
|
-
accumulated.points = [].concat((0, _toConsumableArray2["default"])(accumulated.points), (0, _toConsumableArray2["default"])(props.points));
|
|
49
|
-
},
|
|
50
|
-
map: function map(props) {
|
|
51
|
-
return {
|
|
52
|
-
points: [props.data]
|
|
53
|
-
};
|
|
54
|
-
}
|
|
55
|
-
}).load(geoJSON);
|
|
56
|
-
};
|
|
57
|
-
var ClusterBuilder = exports["default"] = /*#__PURE__*/function () {
|
|
58
|
-
function ClusterBuilder() {
|
|
59
|
-
(0, _classCallCheck2["default"])(this, ClusterBuilder);
|
|
60
|
-
(0, _defineProperty2["default"])(this, "clusterer", void 0);
|
|
61
|
-
this.clusterer = (0, _memoize["default"])(getClusterer, clusterResolver);
|
|
62
|
-
}
|
|
63
|
-
return (0, _createClass2["default"])(ClusterBuilder, [{
|
|
64
|
-
key: "clustersAtZoom",
|
|
65
|
-
value: function clustersAtZoom(_ref3) {
|
|
66
|
-
var bbox = _ref3.bbox,
|
|
67
|
-
clusterRadius = _ref3.clusterRadius,
|
|
68
|
-
geoJSON = _ref3.geoJSON,
|
|
69
|
-
zoom = _ref3.zoom;
|
|
70
|
-
var clusterer = this.clusterer({
|
|
71
|
-
clusterRadius: clusterRadius,
|
|
72
|
-
geoJSON: geoJSON
|
|
73
|
-
});
|
|
74
|
-
|
|
75
|
-
// map clusters to formatted bins to be passed to deck.gl bin-sorter
|
|
76
|
-
var clusters = clusterer.getClusters(bbox, zoom).map(function (c, i) {
|
|
77
|
-
return {
|
|
78
|
-
points: c.properties.points,
|
|
79
|
-
position: c.geometry.coordinates,
|
|
80
|
-
index: i
|
|
81
|
-
};
|
|
82
|
-
});
|
|
83
|
-
return clusters;
|
|
84
|
-
}
|
|
85
|
-
}, {
|
|
86
|
-
key: "clearClustererCache",
|
|
87
|
-
value: function clearClustererCache() {
|
|
88
|
-
var _this$clusterer$cache, _this$clusterer$cache2;
|
|
89
|
-
(_this$clusterer$cache = (_this$clusterer$cache2 = this.clusterer.cache).clear) === null || _this$clusterer$cache === void 0 || _this$clusterer$cache.call(_this$clusterer$cache2);
|
|
90
|
-
}
|
|
91
|
-
}]);
|
|
92
|
-
}();
|
|
93
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfc3VwZXJjbHVzdGVyIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfbWVtb2l6ZSIsImdldEdlb0pTT04iLCJkYXRhIiwiZ2V0UG9zaXRpb24iLCJmaWx0ZXJEYXRhIiwicmF3IiwiZmlsdGVyIiwibWFwIiwiZCIsInR5cGUiLCJwcm9wZXJ0aWVzIiwicG9pbnRzIiwicG9pbnRfY291bnQiLCJwb2ludF9jb3VudF9hYmJyZXZpYXRlZCIsImdlb21ldHJ5IiwiY29vcmRpbmF0ZXMiLCJldmVyeSIsIk51bWJlciIsImlzRmluaXRlIiwiY2x1c3RlclJlc29sdmVyIiwiX3JlZiIsImNsdXN0ZXJSYWRpdXMiLCJjb25jYXQiLCJnZXRDbHVzdGVyZXIiLCJfcmVmMiIsImdlb0pTT04iLCJTdXBlcmNsdXN0ZXIiLCJtYXhab29tIiwicmFkaXVzIiwicmVkdWNlIiwiYWNjdW11bGF0ZWQiLCJwcm9wcyIsIl90b0NvbnN1bWFibGVBcnJheTIiLCJsb2FkIiwiQ2x1c3RlckJ1aWxkZXIiLCJleHBvcnRzIiwiX2NsYXNzQ2FsbENoZWNrMiIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJjbHVzdGVyZXIiLCJtZW1vaXplIiwiX2NyZWF0ZUNsYXNzMiIsImtleSIsInZhbHVlIiwiY2x1c3RlcnNBdFpvb20iLCJfcmVmMyIsImJib3giLCJ6b29tIiwiY2x1c3RlcnMiLCJnZXRDbHVzdGVycyIsImMiLCJpIiwicG9zaXRpb24iLCJpbmRleCIsImNsZWFyQ2x1c3RlcmVyQ2FjaGUiLCJfdGhpcyRjbHVzdGVyZXIkY2FjaGUiLCJfdGhpcyRjbHVzdGVyZXIkY2FjaGUyIiwiY2FjaGUiLCJjbGVhciIsImNhbGwiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvbGF5ZXItdXRpbHMvY2x1c3Rlci11dGlscy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQgU3VwZXJjbHVzdGVyIGZyb20gJ3N1cGVyY2x1c3Rlcic7XG5pbXBvcnQgbWVtb2l6ZSBmcm9tICdsb2Rhc2gvbWVtb2l6ZSc7XG5pbXBvcnQge01lbW9pemVkRnVuY3Rpb259IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQge0JCb3gsIFBvc2l0aW9ufSBmcm9tICdnZW9qc29uJztcblxuZXhwb3J0IGZ1bmN0aW9uIGdldEdlb0pTT04oZGF0YSwgZ2V0UG9zaXRpb24sIGZpbHRlckRhdGEpIHtcbiAgY29uc3QgcmF3ID0gdHlwZW9mIGZpbHRlckRhdGEgPT09ICdmdW5jdGlvbicgPyBkYXRhLmZpbHRlcihmaWx0ZXJEYXRhKSA6IGRhdGE7XG5cbiAgcmV0dXJuIHJhd1xuICAgIC5tYXAoZCA9PiAoe1xuICAgICAgdHlwZTogJ1BvaW50JyxcbiAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgZGF0YTogZCxcbiAgICAgICAgcG9pbnRzOiBbZF0sXG4gICAgICAgIHBvaW50X2NvdW50OiAxLFxuICAgICAgICBwb2ludF9jb3VudF9hYmJyZXZpYXRlZDogJzEnXG4gICAgICB9LFxuICAgICAgZ2VvbWV0cnk6IHtcbiAgICAgICAgY29vcmRpbmF0ZXM6IGdldFBvc2l0aW9uKGQpXG4gICAgICB9XG4gICAgfSkpXG4gICAgLmZpbHRlcihkID0+IGQuZ2VvbWV0cnkuY29vcmRpbmF0ZXMuZXZlcnkoTnVtYmVyLmlzRmluaXRlKSk7XG59XG5cbmNvbnN0IGNsdXN0ZXJSZXNvbHZlciA9ICh7Y2x1c3RlclJhZGl1c306IHtjbHVzdGVyUmFkaXVzOiBudW1iZXJ9KSA9PiBgJHtjbHVzdGVyUmFkaXVzfWA7XG5cbmNvbnN0IGdldENsdXN0ZXJlciA9ICh7Y2x1c3RlclJhZGl1cywgZ2VvSlNPTn06IHtjbHVzdGVyUmFkaXVzOiBudW1iZXI7IGdlb0pTT059KSA9PlxuICBuZXcgU3VwZXJjbHVzdGVyKHtcbiAgICBtYXhab29tOiAyMCxcbiAgICByYWRpdXM6IGNsdXN0ZXJSYWRpdXMsXG4gICAgcmVkdWNlOiAoYWNjdW11bGF0ZWQsIHByb3BzKSA9PiB7XG4gICAgICBhY2N1bXVsYXRlZC5wb2ludHMgPSBbLi4uYWNjdW11bGF0ZWQucG9pbnRzLCAuLi5wcm9wcy5wb2ludHNdO1xuICAgIH0sXG4gICAgbWFwOiBwcm9wcyA9PiAoe3BvaW50czogW3Byb3BzLmRhdGFdfSlcbiAgfSkubG9hZChnZW9KU09OKTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ2x1c3RlckJ1aWxkZXIge1xuICBjbHVzdGVyZXI6ICgoe2NsdXN0ZXJSYWRpdXMsIGdlb0pTT059OiB7Y2x1c3RlclJhZGl1czogbnVtYmVyOyBnZW9KU09OfSkgPT4gU3VwZXJjbHVzdGVyKSAmXG4gICAgTWVtb2l6ZWRGdW5jdGlvbjtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLmNsdXN0ZXJlciA9IG1lbW9pemUoZ2V0Q2x1c3RlcmVyLCBjbHVzdGVyUmVzb2x2ZXIpO1xuICB9XG5cbiAgY2x1c3RlcnNBdFpvb20oe1xuICAgIGJib3gsXG4gICAgY2x1c3RlclJhZGl1cyxcbiAgICBnZW9KU09OLFxuICAgIHpvb21cbiAgfToge1xuICAgIGJib3g6IEJCb3g7XG4gICAgY2x1c3RlclJhZGl1czogbnVtYmVyO1xuICAgIGdlb0pTT047XG4gICAgem9vbTogbnVtYmVyO1xuICB9KToge1xuICAgIHBvaW50czogYW55O1xuICAgIHBvc2l0aW9uOiBQb3NpdGlvbjtcbiAgICBpbmRleDogbnVtYmVyO1xuICB9W10ge1xuICAgIGNvbnN0IGNsdXN0ZXJlciA9IHRoaXMuY2x1c3RlcmVyKHtjbHVzdGVyUmFkaXVzLCBnZW9KU09OfSk7XG5cbiAgICAvLyBtYXAgY2x1c3RlcnMgdG8gZm9ybWF0dGVkIGJpbnMgdG8gYmUgcGFzc2VkIHRvIGRlY2suZ2wgYmluLXNvcnRlclxuICAgIGNvbnN0IGNsdXN0ZXJzID0gY2x1c3RlcmVyLmdldENsdXN0ZXJzKGJib3gsIHpvb20pLm1hcCgoYywgaSkgPT4gKHtcbiAgICAgIHBvaW50czogYy5wcm9wZXJ0aWVzLnBvaW50cyxcbiAgICAgIHBvc2l0aW9uOiBjLmdlb21ldHJ5LmNvb3JkaW5hdGVzLFxuICAgICAgaW5kZXg6IGlcbiAgICB9KSk7XG5cbiAgICByZXR1cm4gY2x1c3RlcnM7XG4gIH1cblxuICBjbGVhckNsdXN0ZXJlckNhY2hlKCkge1xuICAgIHRoaXMuY2x1c3RlcmVyLmNhY2hlLmNsZWFyPy4oKTtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFHQSxJQUFBQSxhQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxRQUFBLEdBQUFGLHNCQUFBLENBQUFDLE9BQUE7QUFKQTtBQUNBOztBQU9PLFNBQVNFLFVBQVVBLENBQUNDLElBQUksRUFBRUMsV0FBVyxFQUFFQyxVQUFVLEVBQUU7RUFDeEQsSUFBTUMsR0FBRyxHQUFHLE9BQU9ELFVBQVUsS0FBSyxVQUFVLEdBQUdGLElBQUksQ0FBQ0ksTUFBTSxDQUFDRixVQUFVLENBQUMsR0FBR0YsSUFBSTtFQUU3RSxPQUFPRyxHQUFHLENBQ1BFLEdBQUcsQ0FBQyxVQUFBQyxDQUFDO0lBQUEsT0FBSztNQUNUQyxJQUFJLEVBQUUsT0FBTztNQUNiQyxVQUFVLEVBQUU7UUFDVlIsSUFBSSxFQUFFTSxDQUFDO1FBQ1BHLE1BQU0sRUFBRSxDQUFDSCxDQUFDLENBQUM7UUFDWEksV0FBVyxFQUFFLENBQUM7UUFDZEMsdUJBQXVCLEVBQUU7TUFDM0IsQ0FBQztNQUNEQyxRQUFRLEVBQUU7UUFDUkMsV0FBVyxFQUFFWixXQUFXLENBQUNLLENBQUM7TUFDNUI7SUFDRixDQUFDO0VBQUEsQ0FBQyxDQUFDLENBQ0ZGLE1BQU0sQ0FBQyxVQUFBRSxDQUFDO0lBQUEsT0FBSUEsQ0FBQyxDQUFDTSxRQUFRLENBQUNDLFdBQVcsQ0FBQ0MsS0FBSyxDQUFDQyxNQUFNLENBQUNDLFFBQVEsQ0FBQztFQUFBLEVBQUM7QUFDL0Q7QUFFQSxJQUFNQyxlQUFlLEdBQUcsU0FBbEJBLGVBQWVBLENBQUFDLElB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
|