@deck.gl/aggregation-layers 8.10.0-alpha.2 → 8.10.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/LICENSE +1 -1
- package/dist/dist.dev.js +58 -709
- package/dist/es5/aggregation-layer.js +120 -134
- package/dist/es5/aggregation-layer.js.map +1 -1
- package/dist/es5/contour-layer/contour-layer.js +225 -234
- package/dist/es5/contour-layer/contour-layer.js.map +1 -1
- package/dist/es5/cpu-grid-layer/cpu-grid-layer.js +90 -100
- package/dist/es5/cpu-grid-layer/cpu-grid-layer.js.map +1 -1
- package/dist/es5/gpu-grid-layer/gpu-grid-cell-layer.js +131 -140
- package/dist/es5/gpu-grid-layer/gpu-grid-cell-layer.js.map +1 -1
- package/dist/es5/gpu-grid-layer/gpu-grid-layer.js +285 -295
- package/dist/es5/gpu-grid-layer/gpu-grid-layer.js.map +1 -1
- package/dist/es5/grid-aggregation-layer.js +194 -209
- package/dist/es5/grid-aggregation-layer.js.map +1 -1
- package/dist/es5/grid-layer/grid-layer.js +59 -66
- package/dist/es5/grid-layer/grid-layer.js.map +1 -1
- package/dist/es5/heatmap-layer/heatmap-layer.js +471 -497
- package/dist/es5/heatmap-layer/heatmap-layer.js.map +1 -1
- package/dist/es5/heatmap-layer/triangle-layer.js +64 -69
- package/dist/es5/heatmap-layer/triangle-layer.js.map +1 -1
- package/dist/es5/hexagon-layer/hexagon-layer.js +129 -140
- package/dist/es5/hexagon-layer/hexagon-layer.js.map +1 -1
- package/dist/es5/screen-grid-layer/screen-grid-cell-layer.js +153 -166
- package/dist/es5/screen-grid-layer/screen-grid-cell-layer.js.map +1 -1
- package/dist/es5/screen-grid-layer/screen-grid-layer.js +207 -220
- package/dist/es5/screen-grid-layer/screen-grid-layer.js.map +1 -1
- package/dist/es5/utils/bin-sorter.js +163 -173
- package/dist/es5/utils/bin-sorter.js.map +1 -1
- package/dist/es5/utils/cpu-aggregator.js +300 -323
- package/dist/es5/utils/cpu-aggregator.js.map +1 -1
- package/dist/es5/utils/gpu-grid-aggregation/gpu-grid-aggregator.js +483 -504
- package/dist/es5/utils/gpu-grid-aggregation/gpu-grid-aggregator.js.map +1 -1
- package/dist/esm/aggregation-layer.js +2 -5
- package/dist/esm/aggregation-layer.js.map +1 -1
- package/dist/esm/contour-layer/contour-layer.js +2 -5
- package/dist/esm/contour-layer/contour-layer.js.map +1 -1
- package/dist/esm/cpu-grid-layer/cpu-grid-layer.js +2 -5
- package/dist/esm/cpu-grid-layer/cpu-grid-layer.js.map +1 -1
- package/dist/esm/cpu-grid-layer/grid-aggregator.js +1 -1
- package/dist/esm/cpu-grid-layer/grid-aggregator.js.map +1 -1
- package/dist/esm/gpu-grid-layer/gpu-grid-cell-layer-fragment.glsl.js +15 -1
- package/dist/esm/gpu-grid-layer/gpu-grid-cell-layer-fragment.glsl.js.map +1 -1
- package/dist/esm/gpu-grid-layer/gpu-grid-cell-layer-vertex.glsl.js +121 -1
- package/dist/esm/gpu-grid-layer/gpu-grid-cell-layer-vertex.glsl.js.map +1 -1
- package/dist/esm/gpu-grid-layer/gpu-grid-cell-layer.js +2 -5
- package/dist/esm/gpu-grid-layer/gpu-grid-cell-layer.js.map +1 -1
- package/dist/esm/gpu-grid-layer/gpu-grid-layer.js +3 -6
- package/dist/esm/gpu-grid-layer/gpu-grid-layer.js.map +1 -1
- package/dist/esm/grid-aggregation-layer.js +3 -6
- package/dist/esm/grid-aggregation-layer.js.map +1 -1
- package/dist/esm/grid-layer/grid-layer.js +3 -7
- package/dist/esm/grid-layer/grid-layer.js.map +1 -1
- package/dist/esm/heatmap-layer/heatmap-layer.js +7 -11
- package/dist/esm/heatmap-layer/heatmap-layer.js.map +1 -1
- package/dist/esm/heatmap-layer/max-fs.glsl.js +7 -1
- package/dist/esm/heatmap-layer/max-fs.glsl.js.map +1 -1
- package/dist/esm/heatmap-layer/max-vs.glsl.js +12 -1
- package/dist/esm/heatmap-layer/max-vs.glsl.js.map +1 -1
- package/dist/esm/heatmap-layer/triangle-layer-fragment.glsl.js +39 -1
- package/dist/esm/heatmap-layer/triangle-layer-fragment.glsl.js.map +1 -1
- package/dist/esm/heatmap-layer/triangle-layer-vertex.glsl.js +31 -1
- package/dist/esm/heatmap-layer/triangle-layer-vertex.glsl.js.map +1 -1
- package/dist/esm/heatmap-layer/triangle-layer.js +1 -3
- package/dist/esm/heatmap-layer/triangle-layer.js.map +1 -1
- package/dist/esm/heatmap-layer/weights-fs.glsl.js +19 -1
- package/dist/esm/heatmap-layer/weights-fs.glsl.js.map +1 -1
- package/dist/esm/heatmap-layer/weights-vs.glsl.js +23 -1
- package/dist/esm/heatmap-layer/weights-vs.glsl.js.map +1 -1
- package/dist/esm/hexagon-layer/hexagon-layer.js +3 -7
- package/dist/esm/hexagon-layer/hexagon-layer.js.map +1 -1
- package/dist/esm/screen-grid-layer/screen-grid-cell-layer.js +3 -7
- package/dist/esm/screen-grid-layer/screen-grid-cell-layer.js.map +1 -1
- package/dist/esm/screen-grid-layer/screen-grid-layer-fragment.glsl.js +17 -1
- package/dist/esm/screen-grid-layer/screen-grid-layer-fragment.glsl.js.map +1 -1
- package/dist/esm/screen-grid-layer/screen-grid-layer-vertex.glsl.js +64 -1
- package/dist/esm/screen-grid-layer/screen-grid-layer-vertex.glsl.js.map +1 -1
- package/dist/esm/screen-grid-layer/screen-grid-layer.js +5 -9
- package/dist/esm/screen-grid-layer/screen-grid-layer.js.map +1 -1
- package/dist/esm/utils/bin-sorter.js +7 -16
- package/dist/esm/utils/bin-sorter.js.map +1 -1
- package/dist/esm/utils/gpu-grid-aggregation/aggregate-all-fs.glsl.js +20 -1
- package/dist/esm/utils/gpu-grid-aggregation/aggregate-all-fs.glsl.js.map +1 -1
- package/dist/esm/utils/gpu-grid-aggregation/aggregate-all-vs.glsl.js +34 -1
- package/dist/esm/utils/gpu-grid-aggregation/aggregate-all-vs.glsl.js.map +1 -1
- package/dist/esm/utils/gpu-grid-aggregation/aggregate-to-grid-fs.glsl.js +12 -1
- package/dist/esm/utils/gpu-grid-aggregation/aggregate-to-grid-fs.glsl.js.map +1 -1
- package/dist/esm/utils/gpu-grid-aggregation/aggregate-to-grid-vs.glsl.js +58 -1
- package/dist/esm/utils/gpu-grid-aggregation/aggregate-to-grid-vs.glsl.js.map +1 -1
- package/dist/esm/utils/gpu-grid-aggregation/gpu-grid-aggregator.js +14 -14
- package/dist/esm/utils/gpu-grid-aggregation/gpu-grid-aggregator.js.map +1 -1
- package/dist/esm/utils/gpu-grid-aggregation/transform-mean-vs.glsl.js +17 -1
- package/dist/esm/utils/gpu-grid-aggregation/transform-mean-vs.glsl.js.map +1 -1
- package/dist/esm/utils/scale-utils.js +2 -2
- package/dist/esm/utils/scale-utils.js.map +1 -1
- package/dist.min.js +30 -27
- package/package.json +2 -2
- package/typed/aggregation-layer.js +0 -151
- package/typed/contour-layer/contour-layer.js +0 -234
- package/typed/contour-layer/contour-utils.js +0 -64
- package/typed/contour-layer/marching-squares-codes.js +0 -337
- package/typed/contour-layer/marching-squares.js +0 -147
- package/typed/cpu-grid-layer/cpu-grid-layer.js +0 -129
- package/typed/cpu-grid-layer/grid-aggregator.js +0 -141
- package/typed/gpu-grid-layer/gpu-grid-cell-layer-fragment.glsl.js +0 -34
- package/typed/gpu-grid-layer/gpu-grid-cell-layer-vertex.glsl.js +0 -141
- package/typed/gpu-grid-layer/gpu-grid-cell-layer.js +0 -143
- package/typed/gpu-grid-layer/gpu-grid-layer.js +0 -289
- package/typed/grid-aggregation-layer.js +0 -172
- package/typed/grid-layer/grid-layer.js +0 -60
- package/typed/heatmap-layer/heatmap-layer-utils.js +0 -78
- package/typed/heatmap-layer/heatmap-layer.js +0 -478
- package/typed/heatmap-layer/max-fs.glsl.js +0 -7
- package/typed/heatmap-layer/max-vs.glsl.js +0 -12
- package/typed/heatmap-layer/triangle-layer-fragment.glsl.js +0 -58
- package/typed/heatmap-layer/triangle-layer-vertex.glsl.js +0 -51
- package/typed/heatmap-layer/triangle-layer.js +0 -67
- package/typed/heatmap-layer/weights-fs.glsl.js +0 -19
- package/typed/heatmap-layer/weights-vs.glsl.js +0 -23
- package/typed/hexagon-layer/hexagon-aggregator.js +0 -112
- package/typed/hexagon-layer/hexagon-layer.js +0 -171
- package/typed/index.js +0 -33
- package/typed/screen-grid-layer/screen-grid-cell-layer.js +0 -159
- package/typed/screen-grid-layer/screen-grid-layer-fragment.glsl.js +0 -37
- package/typed/screen-grid-layer/screen-grid-layer-vertex.glsl.js +0 -83
- package/typed/screen-grid-layer/screen-grid-layer.js +0 -216
- package/typed/types.js +0 -1
- package/typed/utils/aggregation-operation-utils.js +0 -94
- package/typed/utils/bin-sorter.js +0 -167
- package/typed/utils/color-utils.js +0 -53
- package/typed/utils/cpu-aggregator.js +0 -417
- package/typed/utils/gpu-grid-aggregation/aggregate-all-fs.glsl.js +0 -39
- package/typed/utils/gpu-grid-aggregation/aggregate-all-vs.glsl.js +0 -53
- package/typed/utils/gpu-grid-aggregation/aggregate-to-grid-fs.glsl.js +0 -31
- package/typed/utils/gpu-grid-aggregation/aggregate-to-grid-vs.glsl.js +0 -77
- package/typed/utils/gpu-grid-aggregation/gpu-grid-aggregator-constants.js +0 -41
- package/typed/utils/gpu-grid-aggregation/gpu-grid-aggregator-utils.js +0 -1
- package/typed/utils/gpu-grid-aggregation/gpu-grid-aggregator.js +0 -562
- package/typed/utils/gpu-grid-aggregation/transform-mean-vs.glsl.js +0 -36
- package/typed/utils/grid-aggregation-utils.js +0 -114
- package/typed/utils/prop-utils.js +0 -28
- package/typed/utils/resource-utils.js +0 -40
- package/typed/utils/scale-utils.js +0 -184
|
@@ -13,8 +13,6 @@ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/de
|
|
|
13
13
|
|
|
14
14
|
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
15
15
|
|
|
16
|
-
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
17
|
-
|
|
18
16
|
var _binSorter = _interopRequireDefault(require("./bin-sorter"));
|
|
19
17
|
|
|
20
18
|
var _scaleUtils = require("./scale-utils");
|
|
@@ -149,365 +147,344 @@ var CPUAggregator = function () {
|
|
|
149
147
|
this._addDimension(opts.dimensions || _defaultDimensions);
|
|
150
148
|
}
|
|
151
149
|
|
|
152
|
-
(
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
this.setState({
|
|
174
|
-
aggregationDirty: aggregationDirty
|
|
150
|
+
CPUAggregator.defaultDimensions = function defaultDimensions() {
|
|
151
|
+
return _defaultDimensions;
|
|
152
|
+
};
|
|
153
|
+
|
|
154
|
+
var _proto = CPUAggregator.prototype;
|
|
155
|
+
|
|
156
|
+
_proto.updateState = function updateState(opts, aggregationParams) {
|
|
157
|
+
var oldProps = opts.oldProps,
|
|
158
|
+
props = opts.props,
|
|
159
|
+
changeFlags = opts.changeFlags;
|
|
160
|
+
this.updateGetValueFuncs(oldProps, props, changeFlags);
|
|
161
|
+
var reprojectNeeded = this.needsReProjectPoints(oldProps, props, changeFlags);
|
|
162
|
+
var aggregationDirty = false;
|
|
163
|
+
|
|
164
|
+
if (changeFlags.dataChanged || reprojectNeeded) {
|
|
165
|
+
this.getAggregatedData(props, aggregationParams);
|
|
166
|
+
aggregationDirty = true;
|
|
167
|
+
} else {
|
|
168
|
+
var dimensionChanges = this.getDimensionChanges(oldProps, props, changeFlags) || [];
|
|
169
|
+
dimensionChanges.forEach(function (f) {
|
|
170
|
+
return typeof f === 'function' && f();
|
|
175
171
|
});
|
|
176
|
-
|
|
177
|
-
}
|
|
178
|
-
}, {
|
|
179
|
-
key: "setState",
|
|
180
|
-
value: function setState(updateObject) {
|
|
181
|
-
this.state = _objectSpread(_objectSpread({}, this.state), updateObject);
|
|
172
|
+
aggregationDirty = true;
|
|
182
173
|
}
|
|
183
|
-
}, {
|
|
184
|
-
key: "setDimensionState",
|
|
185
|
-
value: function setDimensionState(key, updateObject) {
|
|
186
|
-
this.setState({
|
|
187
|
-
dimensions: _objectSpread(_objectSpread({}, this.state.dimensions), {}, (0, _defineProperty2.default)({}, key, _objectSpread(_objectSpread({}, this.state.dimensions[key]), updateObject)))
|
|
188
|
-
});
|
|
189
|
-
}
|
|
190
|
-
}, {
|
|
191
|
-
key: "normalizeResult",
|
|
192
|
-
value: function normalizeResult() {
|
|
193
|
-
var result = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
194
|
-
|
|
195
|
-
if (result.hexagons) {
|
|
196
|
-
return _objectSpread({
|
|
197
|
-
data: result.hexagons
|
|
198
|
-
}, result);
|
|
199
|
-
} else if (result.layerData) {
|
|
200
|
-
return _objectSpread({
|
|
201
|
-
data: result.layerData
|
|
202
|
-
}, result);
|
|
203
|
-
}
|
|
204
174
|
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
175
|
+
this.setState({
|
|
176
|
+
aggregationDirty: aggregationDirty
|
|
177
|
+
});
|
|
178
|
+
return this.state;
|
|
179
|
+
};
|
|
180
|
+
|
|
181
|
+
_proto.setState = function setState(updateObject) {
|
|
182
|
+
this.state = _objectSpread(_objectSpread({}, this.state), updateObject);
|
|
183
|
+
};
|
|
184
|
+
|
|
185
|
+
_proto.setDimensionState = function setDimensionState(key, updateObject) {
|
|
186
|
+
this.setState({
|
|
187
|
+
dimensions: _objectSpread(_objectSpread({}, this.state.dimensions), {}, (0, _defineProperty2.default)({}, key, _objectSpread(_objectSpread({}, this.state.dimensions[key]), updateObject)))
|
|
188
|
+
});
|
|
189
|
+
};
|
|
190
|
+
|
|
191
|
+
_proto.normalizeResult = function normalizeResult() {
|
|
192
|
+
var result = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
193
|
+
|
|
194
|
+
if (result.hexagons) {
|
|
195
|
+
return _objectSpread({
|
|
196
|
+
data: result.hexagons
|
|
197
|
+
}, result);
|
|
198
|
+
} else if (result.layerData) {
|
|
199
|
+
return _objectSpread({
|
|
200
|
+
data: result.layerData
|
|
201
|
+
}, result);
|
|
220
202
|
}
|
|
221
|
-
}, {
|
|
222
|
-
key: "updateGetValueFuncs",
|
|
223
|
-
value: function updateGetValueFuncs(oldProps, props, changeFlags) {
|
|
224
|
-
for (var key in this.dimensionUpdaters) {
|
|
225
|
-
var _this$dimensionUpdate = this.dimensionUpdaters[key].getBins.triggers,
|
|
226
|
-
value = _this$dimensionUpdate.value,
|
|
227
|
-
weight = _this$dimensionUpdate.weight,
|
|
228
|
-
aggregation = _this$dimensionUpdate.aggregation;
|
|
229
|
-
var getValue = props[value.prop];
|
|
230
|
-
var getValueChanged = this.needUpdateDimensionStep(this.dimensionUpdaters[key].getBins, oldProps, props, changeFlags);
|
|
231
|
-
|
|
232
|
-
if (getValueChanged) {
|
|
233
|
-
if (getValue) {
|
|
234
|
-
getValue = (0, _aggregationOperationUtils.wrapGetValueFunc)(getValue, {
|
|
235
|
-
data: props.data
|
|
236
|
-
});
|
|
237
|
-
} else {
|
|
238
|
-
getValue = (0, _aggregationOperationUtils.getValueFunc)(props[aggregation.prop], props[weight.prop], {
|
|
239
|
-
data: props.data
|
|
240
|
-
});
|
|
241
|
-
}
|
|
242
|
-
}
|
|
243
203
|
|
|
204
|
+
return result;
|
|
205
|
+
};
|
|
206
|
+
|
|
207
|
+
_proto.getAggregatedData = function getAggregatedData(props, aggregationParams) {
|
|
208
|
+
var aggregator = this._getAggregator(props);
|
|
209
|
+
|
|
210
|
+
var result = aggregator(props, aggregationParams);
|
|
211
|
+
this.setState({
|
|
212
|
+
layerData: this.normalizeResult(result)
|
|
213
|
+
});
|
|
214
|
+
this.changeFlags = {
|
|
215
|
+
layerData: true
|
|
216
|
+
};
|
|
217
|
+
this.getSortedBins(props);
|
|
218
|
+
};
|
|
219
|
+
|
|
220
|
+
_proto.updateGetValueFuncs = function updateGetValueFuncs(oldProps, props, changeFlags) {
|
|
221
|
+
for (var key in this.dimensionUpdaters) {
|
|
222
|
+
var _this$dimensionUpdate = this.dimensionUpdaters[key].getBins.triggers,
|
|
223
|
+
value = _this$dimensionUpdate.value,
|
|
224
|
+
weight = _this$dimensionUpdate.weight,
|
|
225
|
+
aggregation = _this$dimensionUpdate.aggregation;
|
|
226
|
+
var getValue = props[value.prop];
|
|
227
|
+
var getValueChanged = this.needUpdateDimensionStep(this.dimensionUpdaters[key].getBins, oldProps, props, changeFlags);
|
|
228
|
+
|
|
229
|
+
if (getValueChanged) {
|
|
244
230
|
if (getValue) {
|
|
245
|
-
|
|
246
|
-
|
|
231
|
+
getValue = (0, _aggregationOperationUtils.wrapGetValueFunc)(getValue, {
|
|
232
|
+
data: props.data
|
|
233
|
+
});
|
|
234
|
+
} else {
|
|
235
|
+
getValue = (0, _aggregationOperationUtils.getValueFunc)(props[aggregation.prop], props[weight.prop], {
|
|
236
|
+
data: props.data
|
|
247
237
|
});
|
|
248
238
|
}
|
|
249
239
|
}
|
|
240
|
+
|
|
241
|
+
if (getValue) {
|
|
242
|
+
this.setDimensionState(key, {
|
|
243
|
+
getValue: getValue
|
|
244
|
+
});
|
|
245
|
+
}
|
|
250
246
|
}
|
|
251
|
-
}
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
var
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
sortedBins: null,
|
|
274
|
-
scaleFunc: nop
|
|
275
|
-
};
|
|
276
|
-
});
|
|
277
|
-
}
|
|
278
|
-
}, {
|
|
279
|
-
key: "getDimensionUpdaters",
|
|
280
|
-
value: function getDimensionUpdaters(_ref) {
|
|
281
|
-
var key = _ref.key,
|
|
282
|
-
accessor = _ref.accessor,
|
|
283
|
-
pickingInfo = _ref.pickingInfo,
|
|
284
|
-
getBins = _ref.getBins,
|
|
285
|
-
getDomain = _ref.getDomain,
|
|
286
|
-
getScaleFunc = _ref.getScaleFunc,
|
|
287
|
-
nullValue = _ref.nullValue;
|
|
288
|
-
return {
|
|
289
|
-
key: key,
|
|
290
|
-
accessor: accessor,
|
|
291
|
-
pickingInfo: pickingInfo,
|
|
292
|
-
getBins: _objectSpread({
|
|
293
|
-
updater: this.getDimensionSortedBins
|
|
294
|
-
}, getBins),
|
|
295
|
-
getDomain: _objectSpread({
|
|
296
|
-
updater: this.getDimensionValueDomain
|
|
297
|
-
}, getDomain),
|
|
298
|
-
getScaleFunc: _objectSpread({
|
|
299
|
-
updater: this.getDimensionScale
|
|
300
|
-
}, getScaleFunc),
|
|
301
|
-
attributeAccessor: this.getSubLayerDimensionAttribute(key, nullValue)
|
|
247
|
+
};
|
|
248
|
+
|
|
249
|
+
_proto.needsReProjectPoints = function needsReProjectPoints(oldProps, props, changeFlags) {
|
|
250
|
+
return this._getCellSize(oldProps) !== this._getCellSize(props) || this._getAggregator(oldProps) !== this._getAggregator(props) || changeFlags.updateTriggersChanged && (changeFlags.updateTriggersChanged.all || changeFlags.updateTriggersChanged.getPosition);
|
|
251
|
+
};
|
|
252
|
+
|
|
253
|
+
_proto.addDimension = function addDimension(dimensions) {
|
|
254
|
+
this._addDimension(dimensions);
|
|
255
|
+
};
|
|
256
|
+
|
|
257
|
+
_proto._addDimension = function _addDimension() {
|
|
258
|
+
var _this = this;
|
|
259
|
+
|
|
260
|
+
var dimensions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
|
|
261
|
+
dimensions.forEach(function (dimension) {
|
|
262
|
+
var key = dimension.key;
|
|
263
|
+
_this.dimensionUpdaters[key] = _this.getDimensionUpdaters(dimension);
|
|
264
|
+
_this.state.dimensions[key] = {
|
|
265
|
+
getValue: null,
|
|
266
|
+
domain: null,
|
|
267
|
+
sortedBins: null,
|
|
268
|
+
scaleFunc: nop
|
|
302
269
|
};
|
|
303
|
-
}
|
|
304
|
-
}
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
270
|
+
});
|
|
271
|
+
};
|
|
272
|
+
|
|
273
|
+
_proto.getDimensionUpdaters = function getDimensionUpdaters(_ref) {
|
|
274
|
+
var key = _ref.key,
|
|
275
|
+
accessor = _ref.accessor,
|
|
276
|
+
pickingInfo = _ref.pickingInfo,
|
|
277
|
+
getBins = _ref.getBins,
|
|
278
|
+
getDomain = _ref.getDomain,
|
|
279
|
+
getScaleFunc = _ref.getScaleFunc,
|
|
280
|
+
nullValue = _ref.nullValue;
|
|
281
|
+
return {
|
|
282
|
+
key: key,
|
|
283
|
+
accessor: accessor,
|
|
284
|
+
pickingInfo: pickingInfo,
|
|
285
|
+
getBins: _objectSpread({
|
|
286
|
+
updater: this.getDimensionSortedBins
|
|
287
|
+
}, getBins),
|
|
288
|
+
getDomain: _objectSpread({
|
|
289
|
+
updater: this.getDimensionValueDomain
|
|
290
|
+
}, getDomain),
|
|
291
|
+
getScaleFunc: _objectSpread({
|
|
292
|
+
updater: this.getDimensionScale
|
|
293
|
+
}, getScaleFunc),
|
|
294
|
+
attributeAccessor: this.getSubLayerDimensionAttribute(key, nullValue)
|
|
295
|
+
};
|
|
296
|
+
};
|
|
311
297
|
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
value: function getDimensionChanges(oldProps, props, changeFlags) {
|
|
318
|
-
var _this2 = this;
|
|
298
|
+
_proto.needUpdateDimensionStep = function needUpdateDimensionStep(dimensionStep, oldProps, props, changeFlags) {
|
|
299
|
+
return Object.values(dimensionStep.triggers).some(function (item) {
|
|
300
|
+
if (item.updateTrigger) {
|
|
301
|
+
return changeFlags.dataChanged || changeFlags.updateTriggersChanged && (changeFlags.updateTriggersChanged.all || changeFlags.updateTriggersChanged[item.updateTrigger]);
|
|
302
|
+
}
|
|
319
303
|
|
|
320
|
-
|
|
304
|
+
return oldProps[item.prop] !== props[item.prop];
|
|
305
|
+
});
|
|
306
|
+
};
|
|
321
307
|
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
return _this2.needUpdateDimensionStep(_this2.dimensionUpdaters[key][step], oldProps, props, changeFlags);
|
|
325
|
-
});
|
|
308
|
+
_proto.getDimensionChanges = function getDimensionChanges(oldProps, props, changeFlags) {
|
|
309
|
+
var _this2 = this;
|
|
326
310
|
|
|
327
|
-
|
|
328
|
-
updaters.push(_this2.dimensionUpdaters[key][needUpdate].updater.bind(_this2, props, _this2.dimensionUpdaters[key]));
|
|
329
|
-
}
|
|
330
|
-
};
|
|
311
|
+
var updaters = [];
|
|
331
312
|
|
|
332
|
-
|
|
333
|
-
|
|
313
|
+
var _loop = function _loop(key) {
|
|
314
|
+
var needUpdate = dimensionSteps.find(function (step) {
|
|
315
|
+
return _this2.needUpdateDimensionStep(_this2.dimensionUpdaters[key][step], oldProps, props, changeFlags);
|
|
316
|
+
});
|
|
317
|
+
|
|
318
|
+
if (needUpdate) {
|
|
319
|
+
updaters.push(_this2.dimensionUpdaters[key][needUpdate].updater.bind(_this2, props, _this2.dimensionUpdaters[key]));
|
|
334
320
|
}
|
|
321
|
+
};
|
|
335
322
|
|
|
336
|
-
|
|
323
|
+
for (var key in this.dimensionUpdaters) {
|
|
324
|
+
_loop(key);
|
|
337
325
|
}
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
updateTriggers[accessor][prop] = props[prop];
|
|
326
|
+
|
|
327
|
+
return updaters.length ? updaters : null;
|
|
328
|
+
};
|
|
329
|
+
|
|
330
|
+
_proto.getUpdateTriggers = function getUpdateTriggers(props) {
|
|
331
|
+
var _this3 = this;
|
|
332
|
+
|
|
333
|
+
var _updateTriggers = props.updateTriggers || {};
|
|
334
|
+
|
|
335
|
+
var updateTriggers = {};
|
|
336
|
+
|
|
337
|
+
var _loop2 = function _loop2(key) {
|
|
338
|
+
var accessor = _this3.dimensionUpdaters[key].accessor;
|
|
339
|
+
updateTriggers[accessor] = {};
|
|
340
|
+
dimensionSteps.forEach(function (step) {
|
|
341
|
+
Object.values(_this3.dimensionUpdaters[key][step].triggers).forEach(function (_ref2) {
|
|
342
|
+
var prop = _ref2.prop,
|
|
343
|
+
updateTrigger = _ref2.updateTrigger;
|
|
344
|
+
|
|
345
|
+
if (updateTrigger) {
|
|
346
|
+
var fromProp = _updateTriggers[updateTrigger];
|
|
347
|
+
|
|
348
|
+
if ((0, _typeof2.default)(fromProp) === 'object' && !Array.isArray(fromProp)) {
|
|
349
|
+
Object.assign(updateTriggers[accessor], fromProp);
|
|
350
|
+
} else if (fromProp !== undefined) {
|
|
351
|
+
updateTriggers[accessor][prop] = fromProp;
|
|
365
352
|
}
|
|
366
|
-
}
|
|
353
|
+
} else {
|
|
354
|
+
updateTriggers[accessor][prop] = props[prop];
|
|
355
|
+
}
|
|
367
356
|
});
|
|
368
|
-
};
|
|
369
|
-
|
|
370
|
-
for (var key in this.dimensionUpdaters) {
|
|
371
|
-
_loop2(key);
|
|
372
|
-
}
|
|
357
|
+
});
|
|
358
|
+
};
|
|
373
359
|
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
}, {
|
|
377
|
-
key: "getSortedBins",
|
|
378
|
-
value: function getSortedBins(props) {
|
|
379
|
-
for (var key in this.dimensionUpdaters) {
|
|
380
|
-
this.getDimensionSortedBins(props, this.dimensionUpdaters[key]);
|
|
381
|
-
}
|
|
360
|
+
for (var key in this.dimensionUpdaters) {
|
|
361
|
+
_loop2(key);
|
|
382
362
|
}
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
filterData: props._filterData
|
|
391
|
-
});
|
|
392
|
-
this.setDimensionState(key, {
|
|
393
|
-
sortedBins: sortedBins
|
|
394
|
-
});
|
|
395
|
-
this.getDimensionValueDomain(props, dimensionUpdater);
|
|
363
|
+
|
|
364
|
+
return updateTriggers;
|
|
365
|
+
};
|
|
366
|
+
|
|
367
|
+
_proto.getSortedBins = function getSortedBins(props) {
|
|
368
|
+
for (var key in this.dimensionUpdaters) {
|
|
369
|
+
this.getDimensionSortedBins(props, this.dimensionUpdaters[key]);
|
|
396
370
|
}
|
|
397
|
-
}
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
371
|
+
};
|
|
372
|
+
|
|
373
|
+
_proto.getDimensionSortedBins = function getDimensionSortedBins(props, dimensionUpdater) {
|
|
374
|
+
var key = dimensionUpdater.key;
|
|
375
|
+
var getValue = this.state.dimensions[key].getValue;
|
|
376
|
+
var sortedBins = new _binSorter.default(this.state.layerData.data || [], {
|
|
377
|
+
getValue: getValue,
|
|
378
|
+
filterData: props._filterData
|
|
379
|
+
});
|
|
380
|
+
this.setDimensionState(key, {
|
|
381
|
+
sortedBins: sortedBins
|
|
382
|
+
});
|
|
383
|
+
this.getDimensionValueDomain(props, dimensionUpdater);
|
|
384
|
+
};
|
|
385
|
+
|
|
386
|
+
_proto.getDimensionValueDomain = function getDimensionValueDomain(props, dimensionUpdater) {
|
|
387
|
+
var getDomain = dimensionUpdater.getDomain,
|
|
388
|
+
key = dimensionUpdater.key;
|
|
389
|
+
var _getDomain$triggers = getDomain.triggers,
|
|
390
|
+
lowerPercentile = _getDomain$triggers.lowerPercentile,
|
|
391
|
+
upperPercentile = _getDomain$triggers.upperPercentile,
|
|
392
|
+
scaleType = _getDomain$triggers.scaleType;
|
|
393
|
+
var valueDomain = this.state.dimensions[key].sortedBins.getValueDomainByScale(props[scaleType.prop], [props[lowerPercentile.prop], props[upperPercentile.prop]]);
|
|
394
|
+
this.setDimensionState(key, {
|
|
395
|
+
valueDomain: valueDomain
|
|
396
|
+
});
|
|
397
|
+
this.getDimensionScale(props, dimensionUpdater);
|
|
398
|
+
};
|
|
399
|
+
|
|
400
|
+
_proto.getDimensionScale = function getDimensionScale(props, dimensionUpdater) {
|
|
401
|
+
var key = dimensionUpdater.key,
|
|
402
|
+
getScaleFunc = dimensionUpdater.getScaleFunc,
|
|
403
|
+
getDomain = dimensionUpdater.getDomain;
|
|
404
|
+
var _getScaleFunc$trigger = getScaleFunc.triggers,
|
|
405
|
+
domain = _getScaleFunc$trigger.domain,
|
|
406
|
+
range = _getScaleFunc$trigger.range;
|
|
407
|
+
var scaleType = getDomain.triggers.scaleType;
|
|
408
|
+
var onSet = getScaleFunc.onSet;
|
|
409
|
+
var dimensionRange = props[range.prop];
|
|
410
|
+
var dimensionDomain = props[domain.prop] || this.state.dimensions[key].valueDomain;
|
|
411
|
+
var getScaleFunction = (0, _scaleUtils.getScaleFunctionByScaleType)(scaleType && props[scaleType.prop]);
|
|
412
|
+
var scaleFunc = getScaleFunction(dimensionDomain, dimensionRange);
|
|
413
|
+
|
|
414
|
+
if ((0, _typeof2.default)(onSet) === 'object' && typeof props[onSet.props] === 'function') {
|
|
415
|
+
props[onSet.props](scaleFunc.domain());
|
|
411
416
|
}
|
|
412
|
-
|
|
413
|
-
key
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
var
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
var
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
props[onSet.props](scaleFunc.domain());
|
|
417
|
+
|
|
418
|
+
this.setDimensionState(key, {
|
|
419
|
+
scaleFunc: scaleFunc
|
|
420
|
+
});
|
|
421
|
+
};
|
|
422
|
+
|
|
423
|
+
_proto.getSubLayerDimensionAttribute = function getSubLayerDimensionAttribute(key, nullValue) {
|
|
424
|
+
var _this4 = this;
|
|
425
|
+
|
|
426
|
+
return function (cell) {
|
|
427
|
+
var _this4$state$dimensio = _this4.state.dimensions[key],
|
|
428
|
+
sortedBins = _this4$state$dimensio.sortedBins,
|
|
429
|
+
scaleFunc = _this4$state$dimensio.scaleFunc;
|
|
430
|
+
var bin = sortedBins.binMap[cell.index];
|
|
431
|
+
|
|
432
|
+
if (bin && bin.counts === 0) {
|
|
433
|
+
return nullValue;
|
|
430
434
|
}
|
|
431
435
|
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
value: function getSubLayerDimensionAttribute(key, nullValue) {
|
|
439
|
-
var _this4 = this;
|
|
440
|
-
|
|
441
|
-
return function (cell) {
|
|
442
|
-
var _this4$state$dimensio = _this4.state.dimensions[key],
|
|
443
|
-
sortedBins = _this4$state$dimensio.sortedBins,
|
|
444
|
-
scaleFunc = _this4$state$dimensio.scaleFunc;
|
|
445
|
-
var bin = sortedBins.binMap[cell.index];
|
|
446
|
-
|
|
447
|
-
if (bin && bin.counts === 0) {
|
|
448
|
-
return nullValue;
|
|
449
|
-
}
|
|
436
|
+
var cv = bin && bin.value;
|
|
437
|
+
var domain = scaleFunc.domain();
|
|
438
|
+
var isValueInDomain = cv >= domain[0] && cv <= domain[domain.length - 1];
|
|
439
|
+
return isValueInDomain ? scaleFunc(cv) : nullValue;
|
|
440
|
+
};
|
|
441
|
+
};
|
|
450
442
|
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
443
|
+
_proto.getSubLayerAccessors = function getSubLayerAccessors(props) {
|
|
444
|
+
var accessors = {};
|
|
445
|
+
|
|
446
|
+
for (var key in this.dimensionUpdaters) {
|
|
447
|
+
var accessor = this.dimensionUpdaters[key].accessor;
|
|
448
|
+
accessors[accessor] = this.getSubLayerDimensionAttribute(props, key);
|
|
456
449
|
}
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
450
|
+
|
|
451
|
+
return accessors;
|
|
452
|
+
};
|
|
453
|
+
|
|
454
|
+
_proto.getPickingInfo = function getPickingInfo(_ref3) {
|
|
455
|
+
var info = _ref3.info;
|
|
456
|
+
var isPicked = info.picked && info.index > -1;
|
|
457
|
+
var object = null;
|
|
458
|
+
|
|
459
|
+
if (isPicked) {
|
|
460
|
+
var cell = this.state.layerData.data[info.index];
|
|
461
|
+
var binInfo = {};
|
|
461
462
|
|
|
462
463
|
for (var key in this.dimensionUpdaters) {
|
|
463
|
-
var
|
|
464
|
-
|
|
464
|
+
var pickingInfo = this.dimensionUpdaters[key].pickingInfo;
|
|
465
|
+
var sortedBins = this.state.dimensions[key].sortedBins;
|
|
466
|
+
var value = sortedBins.binMap[cell.index] && sortedBins.binMap[cell.index].value;
|
|
467
|
+
binInfo[pickingInfo] = value;
|
|
465
468
|
}
|
|
466
469
|
|
|
467
|
-
|
|
470
|
+
object = Object.assign(binInfo, cell, {
|
|
471
|
+
points: cell.filteredPoints || cell.points
|
|
472
|
+
});
|
|
468
473
|
}
|
|
469
|
-
}, {
|
|
470
|
-
key: "getPickingInfo",
|
|
471
|
-
value: function getPickingInfo(_ref3) {
|
|
472
|
-
var info = _ref3.info;
|
|
473
|
-
var isPicked = info.picked && info.index > -1;
|
|
474
|
-
var object = null;
|
|
475
|
-
|
|
476
|
-
if (isPicked) {
|
|
477
|
-
var cell = this.state.layerData.data[info.index];
|
|
478
|
-
var binInfo = {};
|
|
479
|
-
|
|
480
|
-
for (var key in this.dimensionUpdaters) {
|
|
481
|
-
var pickingInfo = this.dimensionUpdaters[key].pickingInfo;
|
|
482
|
-
var sortedBins = this.state.dimensions[key].sortedBins;
|
|
483
|
-
var value = sortedBins.binMap[cell.index] && sortedBins.binMap[cell.index].value;
|
|
484
|
-
binInfo[pickingInfo] = value;
|
|
485
|
-
}
|
|
486
474
|
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
475
|
+
info.picked = Boolean(object);
|
|
476
|
+
info.object = object;
|
|
477
|
+
return info;
|
|
478
|
+
};
|
|
491
479
|
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
return
|
|
480
|
+
_proto.getAccessor = function getAccessor(dimensionKey) {
|
|
481
|
+
if (!this.dimensionUpdaters.hasOwnProperty(dimensionKey)) {
|
|
482
|
+
return nop;
|
|
495
483
|
}
|
|
496
|
-
}, {
|
|
497
|
-
key: "getAccessor",
|
|
498
|
-
value: function getAccessor(dimensionKey) {
|
|
499
|
-
if (!this.dimensionUpdaters.hasOwnProperty(dimensionKey)) {
|
|
500
|
-
return nop;
|
|
501
|
-
}
|
|
502
484
|
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
key: "defaultDimensions",
|
|
507
|
-
value: function defaultDimensions() {
|
|
508
|
-
return _defaultDimensions;
|
|
509
|
-
}
|
|
510
|
-
}]);
|
|
485
|
+
return this.dimensionUpdaters[dimensionKey].attributeAccessor;
|
|
486
|
+
};
|
|
487
|
+
|
|
511
488
|
return CPUAggregator;
|
|
512
489
|
}();
|
|
513
490
|
|