@kepler.gl/deckgl-layers 3.0.0-alpha.0
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/3d-building-layer/3d-building-layer.d.ts +11 -0
- package/dist/3d-building-layer/3d-building-layer.js +109 -0
- package/dist/3d-building-layer/3d-building-utils.d.ts +7 -0
- package/dist/3d-building-layer/3d-building-utils.js +212 -0
- package/dist/3d-building-layer/types.d.ts +37 -0
- package/dist/3d-building-layer/types.js +26 -0
- package/dist/cluster-layer/cluster-layer.d.ts +42 -0
- package/dist/cluster-layer/cluster-layer.js +349 -0
- package/dist/column-layer/enhanced-column-layer.d.ts +7 -0
- package/dist/column-layer/enhanced-column-layer.js +98 -0
- package/dist/grid-layer/enhanced-cpu-grid-layer.d.ts +7 -0
- package/dist/grid-layer/enhanced-cpu-grid-layer.js +105 -0
- package/dist/hexagon-layer/enhanced-hexagon-layer.d.ts +7 -0
- package/dist/hexagon-layer/enhanced-hexagon-layer.js +105 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.js +135 -0
- package/dist/layer-utils/cluster-utils.d.ts +22 -0
- package/dist/layer-utils/cluster-utils.js +120 -0
- package/dist/layer-utils/cpu-aggregator.d.ts +93 -0
- package/dist/layer-utils/cpu-aggregator.js +669 -0
- package/dist/layer-utils/shader-utils.d.ts +1 -0
- package/dist/layer-utils/shader-utils.js +48 -0
- package/dist/line-layer/line-layer.d.ts +12 -0
- package/dist/line-layer/line-layer.js +132 -0
- package/dist/svg-icon-layer/scatterplot-icon-layer.d.ts +9 -0
- package/dist/svg-icon-layer/scatterplot-icon-layer.js +99 -0
- package/dist/svg-icon-layer/svg-icon-layer.d.ts +22 -0
- package/dist/svg-icon-layer/svg-icon-layer.js +147 -0
- package/package.json +71 -0
@@ -0,0 +1,349 @@
|
|
1
|
+
// Copyright (c) 2022 Uber Technologies, Inc.
|
2
|
+
//
|
3
|
+
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
4
|
+
// of this software and associated documentation files (the "Software"), to deal
|
5
|
+
// in the Software without restriction, including without limitation the rights
|
6
|
+
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
7
|
+
// copies of the Software, and to permit persons to whom the Software is
|
8
|
+
// furnished to do so, subject to the following conditions:
|
9
|
+
//
|
10
|
+
// The above copyright notice and this permission notice shall be included in
|
11
|
+
// all copies or substantial portions of the Software.
|
12
|
+
//
|
13
|
+
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
14
|
+
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
15
|
+
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
16
|
+
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
17
|
+
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
18
|
+
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
19
|
+
// THE SOFTWARE.
|
20
|
+
|
21
|
+
"use strict";
|
22
|
+
|
23
|
+
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
|
24
|
+
|
25
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
26
|
+
|
27
|
+
Object.defineProperty(exports, "__esModule", {
|
28
|
+
value: true
|
29
|
+
});
|
30
|
+
exports["default"] = exports.clusterAggregation = void 0;
|
31
|
+
|
32
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
33
|
+
|
34
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
35
|
+
|
36
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
37
|
+
|
38
|
+
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
39
|
+
|
40
|
+
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
41
|
+
|
42
|
+
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
43
|
+
|
44
|
+
var _layers = require("@deck.gl/layers");
|
45
|
+
|
46
|
+
var _aggregationLayers = require("@deck.gl/aggregation-layers");
|
47
|
+
|
48
|
+
var _geoViewport = _interopRequireDefault(require("@mapbox/geo-viewport"));
|
49
|
+
|
50
|
+
var _cpuAggregator = _interopRequireWildcard(require("../layer-utils/cpu-aggregator"));
|
51
|
+
|
52
|
+
var _viewportMercatorProject = require("viewport-mercator-project");
|
53
|
+
|
54
|
+
var _d3Array = require("d3-array");
|
55
|
+
|
56
|
+
var _constants = require("@kepler.gl/constants");
|
57
|
+
|
58
|
+
var _clusterUtils = _interopRequireWildcard(require("../layer-utils/cluster-utils"));
|
59
|
+
|
60
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
|
61
|
+
|
62
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
63
|
+
|
64
|
+
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
|
65
|
+
|
66
|
+
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
67
|
+
|
68
|
+
var defaultRadius = _constants.LAYER_VIS_CONFIGS.clusterRadius.defaultValue;
|
69
|
+
var defaultRadiusRange = _constants.LAYER_VIS_CONFIGS.clusterRadiusRange.defaultValue;
|
70
|
+
|
71
|
+
var defaultGetColorValue = function defaultGetColorValue(points) {
|
72
|
+
return points.length;
|
73
|
+
};
|
74
|
+
|
75
|
+
var defaultGetRadiusValue = function defaultGetRadiusValue(cell) {
|
76
|
+
return cell.filteredPoints ? cell.filteredPoints.length : cell.points.length;
|
77
|
+
};
|
78
|
+
|
79
|
+
function processGeoJSON(step, props, aggregation, _ref) {
|
80
|
+
var viewport = _ref.viewport;
|
81
|
+
var data = props.data,
|
82
|
+
getPosition = props.getPosition,
|
83
|
+
filterData = props.filterData;
|
84
|
+
var geoJSON = (0, _clusterUtils.getGeoJSON)(data, getPosition, filterData);
|
85
|
+
var clusterBuilder = new _clusterUtils["default"]();
|
86
|
+
this.setState({
|
87
|
+
geoJSON: geoJSON,
|
88
|
+
clusterBuilder: clusterBuilder
|
89
|
+
});
|
90
|
+
}
|
91
|
+
|
92
|
+
function getClusters(step, props, aggregation, _ref2) {
|
93
|
+
var viewport = _ref2.viewport;
|
94
|
+
var _this$state = this.state,
|
95
|
+
geoJSON = _this$state.geoJSON,
|
96
|
+
clusterBuilder = _this$state.clusterBuilder;
|
97
|
+
var clusterRadius = props.clusterRadius,
|
98
|
+
zoom = props.zoom,
|
99
|
+
width = props.width,
|
100
|
+
height = props.height;
|
101
|
+
var longitude = viewport.longitude,
|
102
|
+
latitude = viewport.latitude; // zoom needs to be an integer for the different map utils. Also helps with cache key.
|
103
|
+
|
104
|
+
var bbox = _geoViewport["default"].bounds([longitude, latitude], zoom, [width, height]);
|
105
|
+
|
106
|
+
var clusters = clusterBuilder.clustersAtZoom({
|
107
|
+
bbox: bbox,
|
108
|
+
clusterRadius: clusterRadius,
|
109
|
+
geoJSON: geoJSON,
|
110
|
+
zoom: zoom
|
111
|
+
});
|
112
|
+
this.setState({
|
113
|
+
layerData: {
|
114
|
+
data: clusters
|
115
|
+
}
|
116
|
+
});
|
117
|
+
}
|
118
|
+
|
119
|
+
function getSubLayerRadius(dimensionState, dimension, layerProps) {
|
120
|
+
return function (cell) {
|
121
|
+
var getRadiusValue = layerProps.getRadiusValue;
|
122
|
+
var scaleFunc = dimensionState.scaleFunc;
|
123
|
+
return scaleFunc(getRadiusValue(cell));
|
124
|
+
};
|
125
|
+
}
|
126
|
+
|
127
|
+
var clusterAggregation = {
|
128
|
+
key: 'position',
|
129
|
+
updateSteps: [{
|
130
|
+
key: 'geojson',
|
131
|
+
triggers: {
|
132
|
+
position: {
|
133
|
+
prop: 'getPosition',
|
134
|
+
updateTrigger: 'getPosition'
|
135
|
+
},
|
136
|
+
filterData: {
|
137
|
+
prop: 'filterData',
|
138
|
+
updateTrigger: 'filterData'
|
139
|
+
}
|
140
|
+
},
|
141
|
+
updater: processGeoJSON
|
142
|
+
}, {
|
143
|
+
key: 'clustering',
|
144
|
+
triggers: {
|
145
|
+
clusterRadius: {
|
146
|
+
prop: 'clusterRadius'
|
147
|
+
},
|
148
|
+
zoom: {
|
149
|
+
prop: 'zoom'
|
150
|
+
},
|
151
|
+
width: {
|
152
|
+
prop: 'width'
|
153
|
+
},
|
154
|
+
height: {
|
155
|
+
prop: 'height'
|
156
|
+
}
|
157
|
+
},
|
158
|
+
updater: getClusters
|
159
|
+
}]
|
160
|
+
};
|
161
|
+
exports.clusterAggregation = clusterAggregation;
|
162
|
+
|
163
|
+
function getRadiusValueDomain(step, props, dimensionUpdater) {
|
164
|
+
var key = dimensionUpdater.key;
|
165
|
+
var getRadiusValue = props.getRadiusValue;
|
166
|
+
var layerData = this.state.layerData;
|
167
|
+
var valueDomain = [0, (0, _d3Array.max)(layerData.data, getRadiusValue)];
|
168
|
+
|
169
|
+
this._setDimensionState(key, {
|
170
|
+
valueDomain: valueDomain
|
171
|
+
});
|
172
|
+
}
|
173
|
+
|
174
|
+
var clusterLayerDimensions = [_cpuAggregator.defaultColorDimension, {
|
175
|
+
key: 'radius',
|
176
|
+
accessor: 'getRadius',
|
177
|
+
nullValue: 0,
|
178
|
+
updateSteps: [{
|
179
|
+
key: 'getDomain',
|
180
|
+
triggers: {
|
181
|
+
value: {
|
182
|
+
prop: 'getRadiusValue',
|
183
|
+
updateTrigger: 'getRadiusValue'
|
184
|
+
}
|
185
|
+
},
|
186
|
+
updater: getRadiusValueDomain
|
187
|
+
}, {
|
188
|
+
key: 'getScaleFunc',
|
189
|
+
triggers: {
|
190
|
+
domain: {
|
191
|
+
prop: 'radiusDomain'
|
192
|
+
},
|
193
|
+
range: {
|
194
|
+
prop: 'radiusRange'
|
195
|
+
},
|
196
|
+
scaleType: {
|
197
|
+
prop: 'radiusScaleType'
|
198
|
+
}
|
199
|
+
},
|
200
|
+
updater: _cpuAggregator.getDimensionScale
|
201
|
+
}],
|
202
|
+
getSubLayerAccessor: getSubLayerRadius,
|
203
|
+
getPickingInfo: function getPickingInfo(dimensionState, cell, layerProps) {
|
204
|
+
var radiusValue = layerProps.getRadiusValue(cell);
|
205
|
+
return {
|
206
|
+
radiusValue: radiusValue
|
207
|
+
};
|
208
|
+
}
|
209
|
+
}];
|
210
|
+
var defaultProps = {
|
211
|
+
clusterRadius: defaultRadius,
|
212
|
+
colorDomain: null,
|
213
|
+
colorRange: _constants.DEFAULT_COLOR_RANGE,
|
214
|
+
colorScaleType: _constants.SCALE_TYPES.quantize,
|
215
|
+
radiusScaleType: _constants.SCALE_TYPES.sqrt,
|
216
|
+
radiusRange: defaultRadiusRange,
|
217
|
+
getPosition: {
|
218
|
+
type: 'accessor',
|
219
|
+
value: function value(x) {
|
220
|
+
return x.position;
|
221
|
+
}
|
222
|
+
},
|
223
|
+
getColorValue: {
|
224
|
+
type: 'accessor',
|
225
|
+
value: defaultGetColorValue
|
226
|
+
},
|
227
|
+
getRadiusValue: {
|
228
|
+
type: 'accessor',
|
229
|
+
value: defaultGetRadiusValue
|
230
|
+
}
|
231
|
+
};
|
232
|
+
|
233
|
+
var ClusterLayer = /*#__PURE__*/function (_AggregationLayer) {
|
234
|
+
(0, _inherits2["default"])(ClusterLayer, _AggregationLayer);
|
235
|
+
|
236
|
+
var _super = _createSuper(ClusterLayer);
|
237
|
+
|
238
|
+
function ClusterLayer() {
|
239
|
+
(0, _classCallCheck2["default"])(this, ClusterLayer);
|
240
|
+
return _super.apply(this, arguments);
|
241
|
+
}
|
242
|
+
|
243
|
+
(0, _createClass2["default"])(ClusterLayer, [{
|
244
|
+
key: "initializeState",
|
245
|
+
value: function initializeState() {
|
246
|
+
var cpuAggregator = new _cpuAggregator["default"]({
|
247
|
+
aggregation: clusterAggregation,
|
248
|
+
dimensions: clusterLayerDimensions
|
249
|
+
});
|
250
|
+
this.state = {
|
251
|
+
cpuAggregator: cpuAggregator,
|
252
|
+
aggregatorState: cpuAggregator.state
|
253
|
+
};
|
254
|
+
var attributeManager = this.getAttributeManager();
|
255
|
+
attributeManager.add({
|
256
|
+
positions: {
|
257
|
+
size: 3,
|
258
|
+
accessor: 'getPosition'
|
259
|
+
}
|
260
|
+
});
|
261
|
+
}
|
262
|
+
}, {
|
263
|
+
key: "updateState",
|
264
|
+
value: function updateState(_ref3) {
|
265
|
+
var oldProps = _ref3.oldProps,
|
266
|
+
props = _ref3.props,
|
267
|
+
changeFlags = _ref3.changeFlags;
|
268
|
+
this.setState({
|
269
|
+
// make a copy of the internal state of cpuAggregator for testing
|
270
|
+
aggregatorState: this.state.cpuAggregator.updateState({
|
271
|
+
oldProps: oldProps,
|
272
|
+
props: props,
|
273
|
+
changeFlags: changeFlags
|
274
|
+
}, {
|
275
|
+
viewport: this.context.viewport,
|
276
|
+
attributes: this.getAttributes(),
|
277
|
+
numInstances: this.getNumInstances(props)
|
278
|
+
})
|
279
|
+
});
|
280
|
+
}
|
281
|
+
}, {
|
282
|
+
key: "getPickingInfo",
|
283
|
+
value: function getPickingInfo(_ref4) {
|
284
|
+
var info = _ref4.info;
|
285
|
+
return this.state.cpuAggregator.getPickingInfo({
|
286
|
+
info: info
|
287
|
+
}, this.props);
|
288
|
+
}
|
289
|
+
}, {
|
290
|
+
key: "_getSublayerUpdateTriggers",
|
291
|
+
value: function _getSublayerUpdateTriggers() {
|
292
|
+
return this.state.cpuAggregator.getUpdateTriggers(this.props);
|
293
|
+
}
|
294
|
+
}, {
|
295
|
+
key: "_getSubLayerAccessors",
|
296
|
+
value: function _getSubLayerAccessors() {
|
297
|
+
return {
|
298
|
+
getRadius: this.state.cpuAggregator.getAccessor('radius', this.props),
|
299
|
+
getFillColor: this.state.cpuAggregator.getAccessor('fillColor', this.props)
|
300
|
+
};
|
301
|
+
}
|
302
|
+
}, {
|
303
|
+
key: "renderLayers",
|
304
|
+
value: function renderLayers() {
|
305
|
+
// for subclassing, override this method to return
|
306
|
+
// customized sub layer props
|
307
|
+
var _this$props = this.props,
|
308
|
+
id = _this$props.id,
|
309
|
+
radiusScale = _this$props.radiusScale;
|
310
|
+
var cpuAggregator = this.state.cpuAggregator; // base layer props
|
311
|
+
|
312
|
+
var _this$props2 = this.props,
|
313
|
+
visible = _this$props2.visible,
|
314
|
+
opacity = _this$props2.opacity,
|
315
|
+
pickable = _this$props2.pickable,
|
316
|
+
autoHighlight = _this$props2.autoHighlight,
|
317
|
+
highlightColor = _this$props2.highlightColor;
|
318
|
+
|
319
|
+
var updateTriggers = this._getSublayerUpdateTriggers();
|
320
|
+
|
321
|
+
var accessors = this._getSubLayerAccessors(); // @ts-expect-error
|
322
|
+
|
323
|
+
|
324
|
+
var distanceScale = (0, _viewportMercatorProject.getDistanceScales)(this.context.viewport);
|
325
|
+
var metersPerPixel = distanceScale.metersPerPixel[0]; // return props to the sublayer constructor
|
326
|
+
|
327
|
+
return new _layers.ScatterplotLayer(_objectSpread({
|
328
|
+
id: "".concat(id, "-cluster"),
|
329
|
+
data: cpuAggregator.state.layerData.data,
|
330
|
+
radiusScale: metersPerPixel * radiusScale,
|
331
|
+
visible: visible,
|
332
|
+
opacity: opacity,
|
333
|
+
pickable: pickable,
|
334
|
+
autoHighlight: autoHighlight,
|
335
|
+
highlightColor: highlightColor,
|
336
|
+
updateTriggers: updateTriggers,
|
337
|
+
parameters: {
|
338
|
+
depthMask: false
|
339
|
+
}
|
340
|
+
}, accessors));
|
341
|
+
}
|
342
|
+
}]);
|
343
|
+
return ClusterLayer;
|
344
|
+
}(_aggregationLayers._AggregationLayer);
|
345
|
+
|
346
|
+
exports["default"] = ClusterLayer;
|
347
|
+
ClusterLayer.layerName = 'ClusterLayer';
|
348
|
+
ClusterLayer.defaultProps = defaultProps;
|
349
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jbHVzdGVyLWxheWVyL2NsdXN0ZXItbGF5ZXIudHMiXSwibmFtZXMiOlsiZGVmYXVsdFJhZGl1cyIsIkxBWUVSX1ZJU19DT05GSUdTIiwiY2x1c3RlclJhZGl1cyIsImRlZmF1bHRWYWx1ZSIsImRlZmF1bHRSYWRpdXNSYW5nZSIsImNsdXN0ZXJSYWRpdXNSYW5nZSIsImRlZmF1bHRHZXRDb2xvclZhbHVlIiwicG9pbnRzIiwibGVuZ3RoIiwiZGVmYXVsdEdldFJhZGl1c1ZhbHVlIiwiY2VsbCIsImZpbHRlcmVkUG9pbnRzIiwicHJvY2Vzc0dlb0pTT04iLCJzdGVwIiwicHJvcHMiLCJhZ2dyZWdhdGlvbiIsInZpZXdwb3J0IiwiZGF0YSIsImdldFBvc2l0aW9uIiwiZmlsdGVyRGF0YSIsImdlb0pTT04iLCJjbHVzdGVyQnVpbGRlciIsIkNsdXN0ZXJCdWlsZGVyIiwic2V0U3RhdGUiLCJnZXRDbHVzdGVycyIsInN0YXRlIiwiem9vbSIsIndpZHRoIiwiaGVpZ2h0IiwibG9uZ2l0dWRlIiwibGF0aXR1ZGUiLCJiYm94IiwiZ2VvVmlld3BvcnQiLCJib3VuZHMiLCJjbHVzdGVycyIsImNsdXN0ZXJzQXRab29tIiwibGF5ZXJEYXRhIiwiZ2V0U3ViTGF5ZXJSYWRpdXMiLCJkaW1lbnNpb25TdGF0ZSIsImRpbWVuc2lvbiIsImxheWVyUHJvcHMiLCJnZXRSYWRpdXNWYWx1ZSIsInNjYWxlRnVuYyIsImNsdXN0ZXJBZ2dyZWdhdGlvbiIsImtleSIsInVwZGF0ZVN0ZXBzIiwidHJpZ2dlcnMiLCJwb3NpdGlvbiIsInByb3AiLCJ1cGRhdGVUcmlnZ2VyIiwidXBkYXRlciIsImdldFJhZGl1c1ZhbHVlRG9tYWluIiwiZGltZW5zaW9uVXBkYXRlciIsInZhbHVlRG9tYWluIiwiX3NldERpbWVuc2lvblN0YXRlIiwiY2x1c3RlckxheWVyRGltZW5zaW9ucyIsImRlZmF1bHRDb2xvckRpbWVuc2lvbiIsImFjY2Vzc29yIiwibnVsbFZhbHVlIiwidmFsdWUiLCJkb21haW4iLCJyYW5nZSIsInNjYWxlVHlwZSIsImdldERpbWVuc2lvblNjYWxlIiwiZ2V0U3ViTGF5ZXJBY2Nlc3NvciIsImdldFBpY2tpbmdJbmZvIiwicmFkaXVzVmFsdWUiLCJkZWZhdWx0UHJvcHMiLCJjb2xvckRvbWFpbiIsImNvbG9yUmFuZ2UiLCJERUZBVUxUX0NPTE9SX1JBTkdFIiwiY29sb3JTY2FsZVR5cGUiLCJTQ0FMRV9UWVBFUyIsInF1YW50aXplIiwicmFkaXVzU2NhbGVUeXBlIiwic3FydCIsInJhZGl1c1JhbmdlIiwidHlwZSIsIngiLCJnZXRDb2xvclZhbHVlIiwiQ2x1c3RlckxheWVyIiwiY3B1QWdncmVnYXRvciIsIkNQVUFnZ3JlZ2F0b3IiLCJkaW1lbnNpb25zIiwiYWdncmVnYXRvclN0YXRlIiwiYXR0cmlidXRlTWFuYWdlciIsImdldEF0dHJpYnV0ZU1hbmFnZXIiLCJhZGQiLCJwb3NpdGlvbnMiLCJzaXplIiwib2xkUHJvcHMiLCJjaGFuZ2VGbGFncyIsInVwZGF0ZVN0YXRlIiwiY29udGV4dCIsImF0dHJpYnV0ZXMiLCJnZXRBdHRyaWJ1dGVzIiwibnVtSW5zdGFuY2VzIiwiZ2V0TnVtSW5zdGFuY2VzIiwiaW5mbyIsImdldFVwZGF0ZVRyaWdnZXJzIiwiZ2V0UmFkaXVzIiwiZ2V0QWNjZXNzb3IiLCJnZXRGaWxsQ29sb3IiLCJpZCIsInJhZGl1c1NjYWxlIiwidmlzaWJsZSIsIm9wYWNpdHkiLCJwaWNrYWJsZSIsImF1dG9IaWdobGlnaHQiLCJoaWdobGlnaHRDb2xvciIsInVwZGF0ZVRyaWdnZXJzIiwiX2dldFN1YmxheWVyVXBkYXRlVHJpZ2dlcnMiLCJhY2Nlc3NvcnMiLCJfZ2V0U3ViTGF5ZXJBY2Nlc3NvcnMiLCJkaXN0YW5jZVNjYWxlIiwibWV0ZXJzUGVyUGl4ZWwiLCJTY2F0dGVycGxvdExheWVyIiwicGFyYW1ldGVycyIsImRlcHRoTWFzayIsIkFnZ3JlZ2F0aW9uTGF5ZXIiLCJsYXllck5hbWUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7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QUYvQjtBQUdMdUYsUUFBQUEsV0FBVyxFQUFFVyxjQUFjLEdBQUdYLFdBSHpCO0FBSUxDLFFBQUFBLE9BQU8sRUFBUEEsT0FKSztBQUtMQyxRQUFBQSxPQUFPLEVBQVBBLE9BTEs7QUFNTEMsUUFBQUEsUUFBUSxFQUFSQSxRQU5LO0FBT0xDLFFBQUFBLGFBQWEsRUFBYkEsYUFQSztBQVFMQyxRQUFBQSxjQUFjLEVBQWRBLGNBUks7QUFTTEMsUUFBQUEsY0FBYyxFQUFkQSxjQVRLO0FBVUxPLFFBQUFBLFVBQVUsRUFBRTtBQUNWQyxVQUFBQSxTQUFTLEVBQUU7QUFERDtBQVZQLFNBYUZOLFNBYkUsRUFBUDtBQWVEOzs7RUFoRnVDTyxvQzs7O0FBbUYxQ3ZDLFlBQVksQ0FBQ3dDLFNBQWIsR0FBeUIsY0FBekI7QUFDQXhDLFlBQVksQ0FBQ2IsWUFBYixHQUE0QkEsWUFBNUIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgKGMpIDIwMjIgVWJlciBUZWNobm9sb2dpZXMsIEluYy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4vLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4vLyBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4vLyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4vLyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbi8vIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbi8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4vLyBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTlxuLy8gVEhFIFNPRlRXQVJFLlxuXG5pbXBvcnQge1NjYXR0ZXJwbG90TGF5ZXJ9IGZyb20gJ0BkZWNrLmdsL2xheWVycyc7XG5pbXBvcnQge19BZ2dyZWdhdGlvbkxheWVyIGFzIEFnZ3JlZ2F0aW9uTGF5ZXJ9IGZyb20gJ0BkZWNrLmdsL2FnZ3JlZ2F0aW9uLWxheWVycyc7XG5cbmltcG9ydCBnZW9WaWV3cG9ydCBmcm9tICdAbWFwYm94L2dlby12aWV3cG9ydCc7XG5pbXBvcnQgQ1BVQWdncmVnYXRvciwge1xuICBBZ2dyZWdhdGlvblR5cGUsXG4gIGRlZmF1bHRDb2xvckRpbWVuc2lvbixcbiAgRGltZW5zaW9uVHlwZSxcbiAgZ2V0RGltZW5zaW9uU2NhbGVcbn0gZnJvbSAnLi4vbGF5ZXItdXRpbHMvY3B1LWFnZ3JlZ2F0b3InO1xuaW1wb3J0IHtnZXREaXN0YW5jZVNjYWxlc30gZnJvbSAndmlld3BvcnQtbWVyY2F0b3ItcHJvamVjdCc7XG5pbXBvcnQge21heH0gZnJvbSAnZDMtYXJyYXknO1xuXG5pbXBvcnQge1NDQUxFX1RZUEVTLCBERUZBVUxUX0NPTE9SX1JBTkdFLCBMQVlFUl9WSVNfQ09ORklHU30gZnJvbSAnQGtlcGxlci5nbC9jb25zdGFudHMnO1xuaW1wb3J0IENsdXN0ZXJCdWlsZGVyLCB7Z2V0R2VvSlNPTn0gZnJvbSAnLi4vbGF5ZXItdXRpbHMvY2x1c3Rlci11dGlscyc7XG5pbXBvcnQge1JHQkFDb2xvcn0gZnJvbSAnQGtlcGxlci5nbC90eXBlcyc7XG5pbXBvcnQge0FnZ3JlZ2F0aW9uTGF5ZXJQcm9wc30gZnJvbSAnQGRlY2suZ2wvYWdncmVnYXRpb24tbGF5ZXJzL2FnZ3JlZ2F0aW9uLWxheWVyJztcblxuY29uc3QgZGVmYXVsdFJhZGl1cyA9IExBWUVSX1ZJU19DT05GSUdTLmNsdXN0ZXJSYWRpdXMuZGVmYXVsdFZhbHVlO1xuY29uc3QgZGVmYXVsdFJhZGl1c1JhbmdlID0gTEFZRVJfVklTX0NPTkZJR1MuY2x1c3RlclJhZGl1c1JhbmdlLmRlZmF1bHRWYWx1ZTtcblxuY29uc3QgZGVmYXVsdEdldENvbG9yVmFsdWUgPSBwb2ludHMgPT4gcG9pbnRzLmxlbmd0aDtcbmNvbnN0IGRlZmF1bHRHZXRSYWRpdXNWYWx1ZSA9IGNlbGwgPT5cbiAgY2VsbC5maWx0ZXJlZFBvaW50cyA/IGNlbGwuZmlsdGVyZWRQb2ludHMubGVuZ3RoIDogY2VsbC5wb2ludHMubGVuZ3RoO1xuXG5mdW5jdGlvbiBwcm9jZXNzR2VvSlNPTih0aGlzOiBDUFVBZ2dyZWdhdG9yLCBzdGVwLCBwcm9wcywgYWdncmVnYXRpb24sIHt2aWV3cG9ydH0pIHtcbiAgY29uc3Qge2RhdGEsIGdldFBvc2l0aW9uLCBmaWx0ZXJEYXRhfSA9IHByb3BzO1xuICBjb25zdCBnZW9KU09OID0gZ2V0R2VvSlNPTihkYXRhLCBnZXRQb3NpdGlvbiwgZmlsdGVyRGF0YSk7XG4gIGNvbnN0IGNsdXN0ZXJCdWlsZGVyID0gbmV3IENsdXN0ZXJCdWlsZGVyKCk7XG5cbiAgdGhpcy5zZXRTdGF0ZSh7Z2VvSlNPTiwgY2x1c3RlckJ1aWxkZXJ9KTtcbn1cblxuZnVuY3Rpb24gZ2V0Q2x1c3RlcnModGhpczogQ1BVQWdncmVnYXRvciwgc3RlcCwgcHJvcHMsIGFnZ3JlZ2F0aW9uLCB7dmlld3BvcnR9KSB7XG4gIGNvbnN0IHtnZW9KU09OLCBjbHVzdGVyQnVpbGRlcn0gPSB0aGlzLnN0YXRlO1xuICBjb25zdCB7Y2x1c3RlclJhZGl1cywgem9vbSwgd2lkdGgsIGhlaWdodH0gPSBwcm9wcztcbiAgY29uc3Qge2xvbmdpdHVkZSwgbGF0aXR1ZGV9ID0gdmlld3BvcnQ7XG5cbiAgLy8gem9vbSBuZWVkcyB0byBiZSBhbiBpbnRlZ2VyIGZvciB0aGUgZGlmZmVyZW50IG1hcCB1dGlscy4gQWxzbyBoZWxwcyB3aXRoIGNhY2hlIGtleS5cbiAgY29uc3QgYmJveCA9IGdlb1ZpZXdwb3J0LmJvdW5kcyhbbG9uZ2l0dWRlLCBsYXRpdHVkZV0sIHpvb20sIFt3aWR0aCwgaGVpZ2h0XSk7XG4gIGNvbnN0IGNsdXN0ZXJzID0gY2x1c3RlckJ1aWxkZXIuY2x1c3RlcnNBdFpvb20oe2Jib3gsIGNsdXN0ZXJSYWRpdXMsIGdlb0pTT04sIHpvb219KTtcblxuICB0aGlzLnNldFN0YXRlKHtcbiAgICBsYXllckRhdGE6IHtkYXRhOiBjbHVzdGVyc31cbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGdldFN1YkxheWVyUmFkaXVzKGRpbWVuc2lvblN0YXRlLCBkaW1lbnNpb24sIGxheWVyUHJvcHMpIHtcbiAgcmV0dXJuIGNlbGwgPT4ge1xuICAgIGNvbnN0IHtnZXRSYWRpdXNWYWx1ZX0gPSBsYXllclByb3BzO1xuICAgIGNvbnN0IHtzY2FsZUZ1bmN9ID0gZGltZW5zaW9uU3RhdGU7XG4gICAgcmV0dXJuIHNjYWxlRnVuYyhnZXRSYWRpdXNWYWx1ZShjZWxsKSk7XG4gIH07XG59XG5cbmV4cG9ydCBjb25zdCBjbHVzdGVyQWdncmVnYXRpb246IEFnZ3JlZ2F0aW9uVHlwZSA9IHtcbiAga2V5OiAncG9zaXRpb24nLFxuICB1cGRhdGVTdGVwczogW1xuICAgIHtcbiAgICAgIGtleTogJ2dlb2pzb24nLFxuICAgICAgdHJpZ2dlcnM6IHtcbiAgICAgICAgcG9zaXRpb246IHtcbiAgICAgICAgICBwcm9wOiAnZ2V0UG9zaXRpb24nLFxuICAgICAgICAgIHVwZGF0ZVRyaWdnZXI6ICdnZXRQb3NpdGlvbidcbiAgICAgICAgfSxcbiAgICAgICAgZmlsdGVyRGF0YToge1xuICAgICAgICAgIHByb3A6ICdmaWx0ZXJEYXRhJyxcbiAgICAgICAgICB1cGRhdGVUcmlnZ2VyOiAnZmlsdGVyRGF0YSdcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHVwZGF0ZXI6IHByb2Nlc3NHZW9KU09OXG4gICAgfSxcbiAgICB7XG4gICAgICBrZXk6ICdjbHVzdGVyaW5nJyxcbiAgICAgIHRyaWdnZXJzOiB7XG4gICAgICAgIGNsdXN0ZXJSYWRpdXM6IHtcbiAgICAgICAgICBwcm9wOiAnY2x1c3RlclJhZGl1cydcbiAgICAgICAgfSxcbiAgICAgICAgem9vbToge1xuICAgICAgICAgIHByb3A6ICd6b29tJ1xuICAgICAgICB9LFxuICAgICAgICB3aWR0aDoge1xuICAgICAgICAgIHByb3A6ICd3aWR0aCdcbiAgICAgICAgfSxcbiAgICAgICAgaGVpZ2h0OiB7XG4gICAgICAgICAgcHJvcDogJ2hlaWdodCdcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHVwZGF0ZXI6IGdldENsdXN0ZXJzXG4gICAgfVxuICBdXG59O1xuXG5mdW5jdGlvbiBnZXRSYWRpdXNWYWx1ZURvbWFpbih0aGlzOiBDUFVBZ2dyZWdhdG9yLCBzdGVwLCBwcm9wcywgZGltZW5zaW9uVXBkYXRlcikge1xuICBjb25zdCB7a2V5fSA9IGRpbWVuc2lvblVwZGF0ZXI7XG4gIGNvbnN0IHtnZXRSYWRpdXNWYWx1ZX0gPSBwcm9wcztcbiAgY29uc3Qge2xheWVyRGF0YX0gPSB0aGlzLnN0YXRlO1xuXG4gIGNvbnN0IHZhbHVlRG9tYWluID0gWzAsIG1heChsYXllckRhdGEuZGF0YSwgZ2V0UmFkaXVzVmFsdWUpXTtcbiAgdGhpcy5fc2V0RGltZW5zaW9uU3RhdGUoa2V5LCB7dmFsdWVEb21haW59KTtcbn1cblxuY29uc3QgY2x1c3RlckxheWVyRGltZW5zaW9uczogW0RpbWVuc2lvblR5cGU8UkdCQUNvbG9yPiwgRGltZW5zaW9uVHlwZTxudW1iZXI+XSA9IFtcbiAgZGVmYXVsdENvbG9yRGltZW5zaW9uLFxuICB7XG4gICAga2V5OiAncmFkaXVzJyxcbiAgICBhY2Nlc3NvcjogJ2dldFJhZGl1cycsXG4gICAgbnVsbFZhbHVlOiAwLFxuICAgIHVwZGF0ZVN0ZXBzOiBbXG4gICAgICB7XG4gICAgICAgIGtleTogJ2dldERvbWFpbicsXG4gICAgICAgIHRyaWdnZXJzOiB7XG4gICAgICAgICAgdmFsdWU6IHtcbiAgICAgICAgICAgIHByb3A6ICdnZXRSYWRpdXNWYWx1ZScsXG4gICAgICAgICAgICB1cGRhdGVUcmlnZ2VyOiAnZ2V0UmFkaXVzVmFsdWUnXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICB1cGRhdGVyOiBnZXRSYWRpdXNWYWx1ZURvbWFpblxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAga2V5OiAnZ2V0U2NhbGVGdW5jJyxcbiAgICAgICAgdHJpZ2dlcnM6IHtcbiAgICAgICAgICBkb21haW46IHtwcm9wOiAncmFkaXVzRG9tYWluJ30sXG4gICAgICAgICAgcmFuZ2U6IHtwcm9wOiAncmFkaXVzUmFuZ2UnfSxcbiAgICAgICAgICBzY2FsZVR5cGU6IHtwcm9wOiAncmFkaXVzU2NhbGVUeXBlJ31cbiAgICAgICAgfSxcbiAgICAgICAgdXBkYXRlcjogZ2V0RGltZW5zaW9uU2NhbGVcbiAgICAgIH1cbiAgICBdLFxuICAgIGdldFN1YkxheWVyQWNjZXNzb3I6IGdldFN1YkxheWVyUmFkaXVzLFxuICAgIGdldFBpY2tpbmdJbmZvOiAoZGltZW5zaW9uU3RhdGUsIGNlbGwsIGxheWVyUHJvcHMpID0+IHtcbiAgICAgIGNvbnN0IHJhZGl1c1ZhbHVlID0gbGF5ZXJQcm9wcy5nZXRSYWRpdXNWYWx1ZShjZWxsKTtcbiAgICAgIHJldHVybiB7cmFkaXVzVmFsdWV9O1xuICAgIH1cbiAgfVxuXTtcblxuY29uc3QgZGVmYXVsdFByb3BzID0ge1xuICBjbHVzdGVyUmFkaXVzOiBkZWZhdWx0UmFkaXVzLFxuICBjb2xvckRvbWFpbjogbnVsbCxcbiAgY29sb3JSYW5nZTogREVGQVVMVF9DT0xPUl9SQU5HRSxcbiAgY29sb3JTY2FsZVR5cGU6IFNDQUxFX1RZUEVTLnF1YW50aXplLFxuICByYWRpdXNTY2FsZVR5cGU6IFNDQUxFX1RZUEVTLnNxcnQsXG4gIHJhZGl1c1JhbmdlOiBkZWZhdWx0UmFkaXVzUmFuZ2UsXG4gIGdldFBvc2l0aW9uOiB7dHlwZTogJ2FjY2Vzc29yJywgdmFsdWU6IHggPT4geC5wb3NpdGlvbn0sXG4gIGdldENvbG9yVmFsdWU6IHt0eXBlOiAnYWNjZXNzb3InLCB2YWx1ZTogZGVmYXVsdEdldENvbG9yVmFsdWV9LFxuICBnZXRSYWRpdXNWYWx1ZToge3R5cGU6ICdhY2Nlc3NvcicsIHZhbHVlOiBkZWZhdWx0R2V0UmFkaXVzVmFsdWV9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDbHVzdGVyTGF5ZXIgZXh0ZW5kcyBBZ2dyZWdhdGlvbkxheWVyPFxuICBhbnksXG4gIEFnZ3JlZ2F0aW9uTGF5ZXJQcm9wczxhbnk+ICYge3JhZGl1c1NjYWxlOiBudW1iZXJ9XG4+IHtcbiAgaW5pdGlhbGl6ZVN0YXRlKCkge1xuICAgIGNvbnN0IGNwdUFnZ3JlZ2F0b3IgPSBuZXcgQ1BVQWdncmVnYXRvcih7XG4gICAgICBhZ2dyZWdhdGlvbjogY2x1c3RlckFnZ3JlZ2F0aW9uLFxuICAgICAgZGltZW5zaW9uczogY2x1c3RlckxheWVyRGltZW5zaW9uc1xuICAgIH0pO1xuXG4gICAgdGhpcy5zdGF0ZSA9IHtcbiAgICAgIGNwdUFnZ3JlZ2F0b3IsXG4gICAgICBhZ2dyZWdhdG9yU3RhdGU6IGNwdUFnZ3JlZ2F0b3Iuc3RhdGVcbiAgICB9O1xuICAgIGNvbnN0IGF0dHJpYnV0ZU1hbmFnZXIgPSB0aGlzLmdldEF0dHJpYnV0ZU1hbmFnZXIoKTtcbiAgICBhdHRyaWJ1dGVNYW5hZ2VyLmFkZCh7XG4gICAgICBwb3NpdGlvbnM6IHtzaXplOiAzLCBhY2Nlc3NvcjogJ2dldFBvc2l0aW9uJ31cbiAgICB9KTtcbiAgfVxuXG4gIHVwZGF0ZVN0YXRlKHtvbGRQcm9wcywgcHJvcHMsIGNoYW5nZUZsYWdzfSkge1xuICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgLy8gbWFrZSBhIGNvcHkgb2YgdGhlIGludGVybmFsIHN0YXRlIG9mIGNwdUFnZ3JlZ2F0b3IgZm9yIHRlc3RpbmdcbiAgICAgIGFnZ3JlZ2F0b3JTdGF0ZTogdGhpcy5zdGF0ZS5jcHVBZ2dyZWdhdG9yLnVwZGF0ZVN0YXRlKFxuICAgICAgICB7b2xkUHJvcHMsIHByb3BzLCBjaGFuZ2VGbGFnc30sXG4gICAgICAgIHtcbiAgICAgICAgICB2aWV3cG9ydDogdGhpcy5jb250ZXh0LnZpZXdwb3J0LFxuICAgICAgICAgIGF0dHJpYnV0ZXM6IHRoaXMuZ2V0QXR0cmlidXRlcygpLFxuICAgICAgICAgIG51bUluc3RhbmNlczogdGhpcy5nZXROdW1JbnN0YW5jZXMocHJvcHMpXG4gICAgICAgIH1cbiAgICAgIClcbiAgICB9KTtcbiAgfVxuXG4gIGdldFBpY2tpbmdJbmZvKHtpbmZvfSkge1xuICAgIHJldHVybiB0aGlzLnN0YXRlLmNwdUFnZ3JlZ2F0b3IuZ2V0UGlja2luZ0luZm8oe2luZm99LCB0aGlzLnByb3BzKTtcbiAgfVxuXG4gIF9nZXRTdWJsYXllclVwZGF0ZVRyaWdnZXJzKCkge1xuICAgIHJldHVybiB0aGlzLnN0YXRlLmNwdUFnZ3JlZ2F0b3IuZ2V0VXBkYXRlVHJpZ2dlcnModGhpcy5wcm9wcyk7XG4gIH1cblxuICBfZ2V0U3ViTGF5ZXJBY2Nlc3NvcnMoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGdldFJhZGl1czogdGhpcy5zdGF0ZS5jcHVBZ2dyZWdhdG9yLmdldEFjY2Vzc29yKCdyYWRpdXMnLCB0aGlzLnByb3BzKSxcbiAgICAgIGdldEZpbGxDb2xvcjogdGhpcy5zdGF0ZS5jcHVBZ2dyZWdhdG9yLmdldEFjY2Vzc29yKCdmaWxsQ29sb3InLCB0aGlzLnByb3BzKVxuICAgIH07XG4gIH1cblxuICByZW5kZXJMYXllcnMoKSB7XG4gICAgLy8gZm9yIHN1YmNsYXNzaW5nLCBvdmVycmlkZSB0aGlzIG1ldGhvZCB0byByZXR1cm5cbiAgICAvLyBjdXN0b21pemVkIHN1YiBsYXllciBwcm9wc1xuICAgIGNvbnN0IHtpZCwgcmFkaXVzU2NhbGV9ID0gdGhpcy5wcm9wcztcbiAgICBjb25zdCB7Y3B1QWdncmVnYXRvcn0gPSB0aGlzLnN0YXRlO1xuXG4gICAgLy8gYmFzZSBsYXllciBwcm9wc1xuICAgIGNvbnN0IHt2aXNpYmxlLCBvcGFjaXR5LCBwaWNrYWJsZSwgYXV0b0hpZ2hsaWdodCwgaGlnaGxpZ2h0Q29sb3J9ID0gdGhpcy5wcm9wcztcbiAgICBjb25zdCB1cGRhdGVUcmlnZ2VycyA9IHRoaXMuX2dldFN1YmxheWVyVXBkYXRlVHJpZ2dlcnMoKTtcbiAgICBjb25zdCBhY2Nlc3NvcnMgPSB0aGlzLl9nZXRTdWJMYXllckFjY2Vzc29ycygpO1xuXG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvclxuICAgIGNvbnN0IGRpc3RhbmNlU2NhbGUgPSBnZXREaXN0YW5jZVNjYWxlcyh0aGlzLmNvbnRleHQudmlld3BvcnQpO1xuICAgIGNvbnN0IG1ldGVyc1BlclBpeGVsID0gZGlzdGFuY2VTY2FsZS5tZXRlcnNQZXJQaXhlbFswXTtcblxuICAgIC8vIHJldHVybiBwcm9wcyB0byB0aGUgc3VibGF5ZXIgY29uc3RydWN0b3JcbiAgICByZXR1cm4gbmV3IFNjYXR0ZXJwbG90TGF5ZXIoe1xuICAgICAgaWQ6IGAke2lkfS1jbHVzdGVyYCxcbiAgICAgIGRhdGE6IGNwdUFnZ3JlZ2F0b3Iuc3RhdGUubGF5ZXJEYXRhLmRhdGEsXG4gICAgICByYWRpdXNTY2FsZTogbWV0ZXJzUGVyUGl4ZWwgKiByYWRpdXNTY2FsZSxcbiAgICAgIHZpc2libGUsXG4gICAgICBvcGFjaXR5LFxuICAgICAgcGlja2FibGUsXG4gICAgICBhdXRvSGlnaGxpZ2h0LFxuICAgICAgaGlnaGxpZ2h0Q29sb3IsXG4gICAgICB1cGRhdGVUcmlnZ2VycyxcbiAgICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgICAgZGVwdGhNYXNrOiBmYWxzZVxuICAgICAgfSxcbiAgICAgIC4uLmFjY2Vzc29yc1xuICAgIH0pO1xuICB9XG59XG5cbkNsdXN0ZXJMYXllci5sYXllck5hbWUgPSAnQ2x1c3RlckxheWVyJztcbkNsdXN0ZXJMYXllci5kZWZhdWx0UHJvcHMgPSBkZWZhdWx0UHJvcHM7XG4iXX0=
|
@@ -0,0 +1,98 @@
|
|
1
|
+
// Copyright (c) 2022 Uber Technologies, Inc.
|
2
|
+
//
|
3
|
+
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
4
|
+
// of this software and associated documentation files (the "Software"), to deal
|
5
|
+
// in the Software without restriction, including without limitation the rights
|
6
|
+
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
7
|
+
// copies of the Software, and to permit persons to whom the Software is
|
8
|
+
// furnished to do so, subject to the following conditions:
|
9
|
+
//
|
10
|
+
// The above copyright notice and this permission notice shall be included in
|
11
|
+
// all copies or substantial portions of the Software.
|
12
|
+
//
|
13
|
+
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
14
|
+
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
15
|
+
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
16
|
+
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
17
|
+
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
18
|
+
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
19
|
+
// THE SOFTWARE.
|
20
|
+
|
21
|
+
"use strict";
|
22
|
+
|
23
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
24
|
+
|
25
|
+
Object.defineProperty(exports, "__esModule", {
|
26
|
+
value: true
|
27
|
+
});
|
28
|
+
exports["default"] = void 0;
|
29
|
+
|
30
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
31
|
+
|
32
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
33
|
+
|
34
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
35
|
+
|
36
|
+
var _get2 = _interopRequireDefault(require("@babel/runtime/helpers/get"));
|
37
|
+
|
38
|
+
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
39
|
+
|
40
|
+
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
41
|
+
|
42
|
+
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
43
|
+
|
44
|
+
var _layers = require("@deck.gl/layers");
|
45
|
+
|
46
|
+
var _ = require("../");
|
47
|
+
|
48
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
|
49
|
+
|
50
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
51
|
+
|
52
|
+
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
|
53
|
+
|
54
|
+
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
55
|
+
|
56
|
+
function addInstanceCoverage(vs) {
|
57
|
+
var addDecl = (0, _.editShader)(vs, 'hexagon cell vs add instance 1', 'in vec3 instancePickingColors;', "in vec3 instancePickingColors;\n in float instanceCoverage;");
|
58
|
+
return (0, _.editShader)(addDecl, 'hexagon cell vs add instance 2', 'float dotRadius = radius * coverage * shouldRender;', 'float dotRadius = radius * coverage * instanceCoverage * shouldRender;');
|
59
|
+
} // TODO: export all deck.gl layers from kepler.gl
|
60
|
+
|
61
|
+
|
62
|
+
var EnhancedColumnLayer = /*#__PURE__*/function (_ColumnLayer) {
|
63
|
+
(0, _inherits2["default"])(EnhancedColumnLayer, _ColumnLayer);
|
64
|
+
|
65
|
+
var _super = _createSuper(EnhancedColumnLayer);
|
66
|
+
|
67
|
+
function EnhancedColumnLayer() {
|
68
|
+
(0, _classCallCheck2["default"])(this, EnhancedColumnLayer);
|
69
|
+
return _super.apply(this, arguments);
|
70
|
+
}
|
71
|
+
|
72
|
+
(0, _createClass2["default"])(EnhancedColumnLayer, [{
|
73
|
+
key: "getShaders",
|
74
|
+
value: function getShaders() {
|
75
|
+
var shaders = (0, _get2["default"])((0, _getPrototypeOf2["default"])(EnhancedColumnLayer.prototype), "getShaders", this).call(this);
|
76
|
+
return _objectSpread(_objectSpread({}, shaders), {}, {
|
77
|
+
vs: addInstanceCoverage(shaders.vs)
|
78
|
+
});
|
79
|
+
}
|
80
|
+
}, {
|
81
|
+
key: "initializeState",
|
82
|
+
value: function initializeState() {
|
83
|
+
(0, _get2["default"])((0, _getPrototypeOf2["default"])(EnhancedColumnLayer.prototype), "initializeState", this).call(this, undefined);
|
84
|
+
this.getAttributeManager().addInstanced({
|
85
|
+
instanceCoverage: {
|
86
|
+
size: 1,
|
87
|
+
accessor: 'getCoverage'
|
88
|
+
}
|
89
|
+
});
|
90
|
+
}
|
91
|
+
}]);
|
92
|
+
return EnhancedColumnLayer;
|
93
|
+
}(_layers.ColumnLayer);
|
94
|
+
|
95
|
+
EnhancedColumnLayer.layerName = 'EnhancedColumnLayer';
|
96
|
+
var _default = EnhancedColumnLayer;
|
97
|
+
exports["default"] = _default;
|
98
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb2x1bW4tbGF5ZXIvZW5oYW5jZWQtY29sdW1uLWxheWVyLnRzIl0sIm5hbWVzIjpbImFkZEluc3RhbmNlQ292ZXJhZ2UiLCJ2cyIsImFkZERlY2wiLCJFbmhhbmNlZENvbHVtbkxheWVyIiwic2hhZGVycyIsInVuZGVmaW5lZCIsImdldEF0dHJpYnV0ZU1hbmFnZXIiLCJhZGRJbnN0YW5jZWQiLCJpbnN0YW5jZUNvdmVyYWdlIiwic2l6ZSIsImFjY2Vzc29yIiwiQ29sdW1uTGF5ZXIiLCJsYXllck5hbWUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBb0JBOztBQUNBOzs7Ozs7Ozs7O0FBRUEsU0FBU0EsbUJBQVQsQ0FBNkJDLEVBQTdCLEVBQWlDO0FBQy9CLE1BQU1DLE9BQU8sR0FBRyxrQkFDZEQsRUFEYyxFQUVkLGdDQUZjLEVBR2QsZ0NBSGMsb0VBQWhCO0FBUUEsU0FBTyxrQkFDTEMsT0FESyxFQUVMLGdDQUZLLEVBR0wscURBSEssRUFJTCx3RUFKSyxDQUFQO0FBTUQsQyxDQUVEOzs7SUFDTUMsbUI7Ozs7Ozs7Ozs7OztXQUNKLHNCQUFhO0FBQ1gsVUFBTUMsT0FBTyx3SEFBYjtBQUVBLDZDQUNLQSxPQURMO0FBRUVILFFBQUFBLEVBQUUsRUFBRUQsbUJBQW1CLENBQUNJLE9BQU8sQ0FBQ0gsRUFBVDtBQUZ6QjtBQUlEOzs7V0FFRCwyQkFBa0I7QUFDaEIsaUlBQXNCSSxTQUF0QjtBQUVBLFdBQUtDLG1CQUFMLEdBQTJCQyxZQUEzQixDQUF3QztBQUN0Q0MsUUFBQUEsZ0JBQWdCLEVBQUU7QUFBQ0MsVUFBQUEsSUFBSSxFQUFFLENBQVA7QUFBVUMsVUFBQUEsUUFBUSxFQUFFO0FBQXBCO0FBRG9CLE9BQXhDO0FBR0Q7OztFQWhCK0JDLG1COztBQW1CbENSLG1CQUFtQixDQUFDUyxTQUFwQixHQUFnQyxxQkFBaEM7ZUFFZVQsbUIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgKGMpIDIwMjIgVWJlciBUZWNobm9sb2dpZXMsIEluYy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4vLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4vLyBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4vLyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4vLyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbi8vIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbi8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4vLyBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTlxuLy8gVEhFIFNPRlRXQVJFLlxuXG5pbXBvcnQge0NvbHVtbkxheWVyfSBmcm9tICdAZGVjay5nbC9sYXllcnMnO1xuaW1wb3J0IHtlZGl0U2hhZGVyfSBmcm9tICcuLi8nO1xuXG5mdW5jdGlvbiBhZGRJbnN0YW5jZUNvdmVyYWdlKHZzKSB7XG4gIGNvbnN0IGFkZERlY2wgPSBlZGl0U2hhZGVyKFxuICAgIHZzLFxuICAgICdoZXhhZ29uIGNlbGwgdnMgYWRkIGluc3RhbmNlIDEnLFxuICAgICdpbiB2ZWMzIGluc3RhbmNlUGlja2luZ0NvbG9yczsnLFxuICAgIGBpbiB2ZWMzIGluc3RhbmNlUGlja2luZ0NvbG9ycztcbiAgICAgaW4gZmxvYXQgaW5zdGFuY2VDb3ZlcmFnZTtgXG4gICk7XG5cbiAgcmV0dXJuIGVkaXRTaGFkZXIoXG4gICAgYWRkRGVjbCxcbiAgICAnaGV4YWdvbiBjZWxsIHZzIGFkZCBpbnN0YW5jZSAyJyxcbiAgICAnZmxvYXQgZG90UmFkaXVzID0gcmFkaXVzICogY292ZXJhZ2UgKiBzaG91bGRSZW5kZXI7JyxcbiAgICAnZmxvYXQgZG90UmFkaXVzID0gcmFkaXVzICogY292ZXJhZ2UgKiBpbnN0YW5jZUNvdmVyYWdlICogc2hvdWxkUmVuZGVyOydcbiAgKTtcbn1cblxuLy8gVE9ETzogZXhwb3J0IGFsbCBkZWNrLmdsIGxheWVycyBmcm9tIGtlcGxlci5nbFxuY2xhc3MgRW5oYW5jZWRDb2x1bW5MYXllciBleHRlbmRzIENvbHVtbkxheWVyPGFueT4ge1xuICBnZXRTaGFkZXJzKCkge1xuICAgIGNvbnN0IHNoYWRlcnMgPSBzdXBlci5nZXRTaGFkZXJzKCk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4uc2hhZGVycyxcbiAgICAgIHZzOiBhZGRJbnN0YW5jZUNvdmVyYWdlKHNoYWRlcnMudnMpXG4gICAgfTtcbiAgfVxuXG4gIGluaXRpYWxpemVTdGF0ZSgpIHtcbiAgICBzdXBlci5pbml0aWFsaXplU3RhdGUodW5kZWZpbmVkKTtcblxuICAgIHRoaXMuZ2V0QXR0cmlidXRlTWFuYWdlcigpLmFkZEluc3RhbmNlZCh7XG4gICAgICBpbnN0YW5jZUNvdmVyYWdlOiB7c2l6ZTogMSwgYWNjZXNzb3I6ICdnZXRDb3ZlcmFnZSd9XG4gICAgfSk7XG4gIH1cbn1cblxuRW5oYW5jZWRDb2x1bW5MYXllci5sYXllck5hbWUgPSAnRW5oYW5jZWRDb2x1bW5MYXllcic7XG5cbmV4cG9ydCBkZWZhdWx0IEVuaGFuY2VkQ29sdW1uTGF5ZXI7XG4iXX0=
|
@@ -0,0 +1,7 @@
|
|
1
|
+
/// <reference types="deck.gl" />
|
2
|
+
import { CPUGridLayer } from '@deck.gl/aggregation-layers';
|
3
|
+
import { AggregationType } from '../layer-utils/cpu-aggregator';
|
4
|
+
export declare const gridAggregation: AggregationType;
|
5
|
+
export default class ScaleEnhancedGridLayer extends CPUGridLayer<any> {
|
6
|
+
initializeState(): void;
|
7
|
+
}
|
@@ -0,0 +1,105 @@
|
|
1
|
+
// Copyright (c) 2022 Uber Technologies, Inc.
|
2
|
+
//
|
3
|
+
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
4
|
+
// of this software and associated documentation files (the "Software"), to deal
|
5
|
+
// in the Software without restriction, including without limitation the rights
|
6
|
+
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
7
|
+
// copies of the Software, and to permit persons to whom the Software is
|
8
|
+
// furnished to do so, subject to the following conditions:
|
9
|
+
//
|
10
|
+
// The above copyright notice and this permission notice shall be included in
|
11
|
+
// all copies or substantial portions of the Software.
|
12
|
+
//
|
13
|
+
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
14
|
+
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
15
|
+
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
16
|
+
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
17
|
+
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
18
|
+
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
19
|
+
// THE SOFTWARE.
|
20
|
+
|
21
|
+
"use strict";
|
22
|
+
|
23
|
+
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
|
24
|
+
|
25
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
26
|
+
|
27
|
+
Object.defineProperty(exports, "__esModule", {
|
28
|
+
value: true
|
29
|
+
});
|
30
|
+
exports["default"] = exports.gridAggregation = void 0;
|
31
|
+
|
32
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
33
|
+
|
34
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
35
|
+
|
36
|
+
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
37
|
+
|
38
|
+
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
39
|
+
|
40
|
+
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
41
|
+
|
42
|
+
var _aggregationLayers = require("@deck.gl/aggregation-layers");
|
43
|
+
|
44
|
+
var _cpuAggregator = _interopRequireWildcard(require("../layer-utils/cpu-aggregator"));
|
45
|
+
|
46
|
+
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
|
47
|
+
|
48
|
+
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
49
|
+
|
50
|
+
var gridAggregation = {
|
51
|
+
key: 'position',
|
52
|
+
updateSteps: [{
|
53
|
+
key: 'aggregate',
|
54
|
+
triggers: {
|
55
|
+
cellSize: {
|
56
|
+
prop: 'cellSize'
|
57
|
+
},
|
58
|
+
position: {
|
59
|
+
prop: 'getPosition',
|
60
|
+
updateTrigger: 'getPosition'
|
61
|
+
},
|
62
|
+
aggregator: {
|
63
|
+
prop: 'gridAggregator'
|
64
|
+
}
|
65
|
+
},
|
66
|
+
updater: _cpuAggregator.getAggregatedData
|
67
|
+
}]
|
68
|
+
};
|
69
|
+
exports.gridAggregation = gridAggregation;
|
70
|
+
|
71
|
+
var ScaleEnhancedGridLayer = /*#__PURE__*/function (_CPUGridLayer) {
|
72
|
+
(0, _inherits2["default"])(ScaleEnhancedGridLayer, _CPUGridLayer);
|
73
|
+
|
74
|
+
var _super = _createSuper(ScaleEnhancedGridLayer);
|
75
|
+
|
76
|
+
function ScaleEnhancedGridLayer() {
|
77
|
+
(0, _classCallCheck2["default"])(this, ScaleEnhancedGridLayer);
|
78
|
+
return _super.apply(this, arguments);
|
79
|
+
}
|
80
|
+
|
81
|
+
(0, _createClass2["default"])(ScaleEnhancedGridLayer, [{
|
82
|
+
key: "initializeState",
|
83
|
+
value: function initializeState() {
|
84
|
+
var cpuAggregator = new _cpuAggregator["default"]({
|
85
|
+
aggregation: gridAggregation
|
86
|
+
});
|
87
|
+
this.state = {
|
88
|
+
cpuAggregator: cpuAggregator,
|
89
|
+
aggregatorState: cpuAggregator.state
|
90
|
+
};
|
91
|
+
var attributeManager = this.getAttributeManager();
|
92
|
+
attributeManager.add({
|
93
|
+
positions: {
|
94
|
+
size: 3,
|
95
|
+
accessor: 'getPosition'
|
96
|
+
}
|
97
|
+
});
|
98
|
+
}
|
99
|
+
}]);
|
100
|
+
return ScaleEnhancedGridLayer;
|
101
|
+
}(_aggregationLayers.CPUGridLayer);
|
102
|
+
|
103
|
+
exports["default"] = ScaleEnhancedGridLayer;
|
104
|
+
ScaleEnhancedGridLayer.layerName = 'ScaleEnhancedGridLayer';
|
105
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ncmlkLWxheWVyL2VuaGFuY2VkLWNwdS1ncmlkLWxheWVyLnRzIl0sIm5hbWVzIjpbImdyaWRBZ2dyZWdhdGlvbiIsImtleSIsInVwZGF0ZVN0ZXBzIiwidHJpZ2dlcnMiLCJjZWxsU2l6ZSIsInByb3AiLCJwb3NpdGlvbiIsInVwZGF0ZVRyaWdnZXIiLCJhZ2dyZWdhdG9yIiwidXBkYXRlciIsImdldEFnZ3JlZ2F0ZWREYXRhIiwiU2NhbGVFbmhhbmNlZEdyaWRMYXllciIsImNwdUFnZ3JlZ2F0b3IiLCJDUFVBZ2dyZWdhdG9yIiwiYWdncmVnYXRpb24iLCJzdGF0ZSIsImFnZ3JlZ2F0b3JTdGF0ZSIsImF0dHJpYnV0ZU1hbmFnZXIiLCJnZXRBdHRyaWJ1dGVNYW5hZ2VyIiwiYWRkIiwicG9zaXRpb25zIiwic2l6ZSIsImFjY2Vzc29yIiwiQ1BVR3JpZExheWVyIiwibGF5ZXJOYW1lIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFvQkE7O0FBQ0E7Ozs7OztBQUVPLElBQU1BLGVBQWdDLEdBQUc7QUFDOUNDLEVBQUFBLEdBQUcsRUFBRSxVQUR5QztBQUU5Q0MsRUFBQUEsV0FBVyxFQUFFLENBQ1g7QUFDRUQsSUFBQUEsR0FBRyxFQUFFLFdBRFA7QUFFRUUsSUFBQUEsUUFBUSxFQUFFO0FBQ1JDLE1BQUFBLFFBQVEsRUFBRTtBQUNSQyxRQUFBQSxJQUFJLEVBQUU7QUFERSxPQURGO0FBSVJDLE1BQUFBLFFBQVEsRUFBRTtBQUNSRCxRQUFBQSxJQUFJLEVBQUUsYUFERTtBQUVSRSxRQUFBQSxhQUFhLEVBQUU7QUFGUCxPQUpGO0FBUVJDLE1BQUFBLFVBQVUsRUFBRTtBQUNWSCxRQUFBQSxJQUFJLEVBQUU7QUFESTtBQVJKLEtBRlo7QUFjRUksSUFBQUEsT0FBTyxFQUFFQztBQWRYLEdBRFc7QUFGaUMsQ0FBekM7OztJQXNCY0Msc0I7Ozs7Ozs7Ozs7OztXQUNuQiwyQkFBa0I7QUFDaEIsVUFBTUMsYUFBYSxHQUFHLElBQUlDLHlCQUFKLENBQWtCO0FBQ3RDQyxRQUFBQSxXQUFXLEVBQUVkO0FBRHlCLE9BQWxCLENBQXRCO0FBSUEsV0FBS2UsS0FBTCxHQUFhO0FBQ1hILFFBQUFBLGFBQWEsRUFBYkEsYUFEVztBQUVYSSxRQUFBQSxlQUFlLEVBQUVKLGFBQWEsQ0FBQ0c7QUFGcEIsT0FBYjtBQUlBLFVBQU1FLGdCQUFnQixHQUFHLEtBQUtDLG1CQUFMLEVBQXpCO0FBQ0FELE1BQUFBLGdCQUFnQixDQUFDRSxHQUFqQixDQUFxQjtBQUNuQkMsUUFBQUEsU0FBUyxFQUFFO0FBQUNDLFVBQUFBLElBQUksRUFBRSxDQUFQO0FBQVVDLFVBQUFBLFFBQVEsRUFBRTtBQUFwQjtBQURRLE9BQXJCO0FBR0Q7OztFQWRpREMsK0I7OztBQWlCcERaLHNCQUFzQixDQUFDYSxTQUF2QixHQUFtQyx3QkFBbkMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgKGMpIDIwMjIgVWJlciBUZWNobm9sb2dpZXMsIEluYy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4vLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4vLyBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4vLyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4vLyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbi8vIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbi8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4vLyBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTlxuLy8gVEhFIFNPRlRXQVJFLlxuXG5pbXBvcnQge0NQVUdyaWRMYXllcn0gZnJvbSAnQGRlY2suZ2wvYWdncmVnYXRpb24tbGF5ZXJzJztcbmltcG9ydCBDUFVBZ2dyZWdhdG9yLCB7QWdncmVnYXRpb25UeXBlLCBnZXRBZ2dyZWdhdGVkRGF0YX0gZnJvbSAnLi4vbGF5ZXItdXRpbHMvY3B1LWFnZ3JlZ2F0b3InO1xuXG5leHBvcnQgY29uc3QgZ3JpZEFnZ3JlZ2F0aW9uOiBBZ2dyZWdhdGlvblR5cGUgPSB7XG4gIGtleTogJ3Bvc2l0aW9uJyxcbiAgdXBkYXRlU3RlcHM6IFtcbiAgICB7XG4gICAgICBrZXk6ICdhZ2dyZWdhdGUnLFxuICAgICAgdHJpZ2dlcnM6IHtcbiAgICAgICAgY2VsbFNpemU6IHtcbiAgICAgICAgICBwcm9wOiAnY2VsbFNpemUnXG4gICAgICAgIH0sXG4gICAgICAgIHBvc2l0aW9uOiB7XG4gICAgICAgICAgcHJvcDogJ2dldFBvc2l0aW9uJyxcbiAgICAgICAgICB1cGRhdGVUcmlnZ2VyOiAnZ2V0UG9zaXRpb24nXG4gICAgICAgIH0sXG4gICAgICAgIGFnZ3JlZ2F0b3I6IHtcbiAgICAgICAgICBwcm9wOiAnZ3JpZEFnZ3JlZ2F0b3InXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB1cGRhdGVyOiBnZXRBZ2dyZWdhdGVkRGF0YVxuICAgIH1cbiAgXVxufTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU2NhbGVFbmhhbmNlZEdyaWRMYXllciBleHRlbmRzIENQVUdyaWRMYXllcjxhbnk+IHtcbiAgaW5pdGlhbGl6ZVN0YXRlKCkge1xuICAgIGNvbnN0IGNwdUFnZ3JlZ2F0b3IgPSBuZXcgQ1BVQWdncmVnYXRvcih7XG4gICAgICBhZ2dyZWdhdGlvbjogZ3JpZEFnZ3JlZ2F0aW9uXG4gICAgfSk7XG5cbiAgICB0aGlzLnN0YXRlID0ge1xuICAgICAgY3B1QWdncmVnYXRvcixcbiAgICAgIGFnZ3JlZ2F0b3JTdGF0ZTogY3B1QWdncmVnYXRvci5zdGF0ZVxuICAgIH07XG4gICAgY29uc3QgYXR0cmlidXRlTWFuYWdlciA9IHRoaXMuZ2V0QXR0cmlidXRlTWFuYWdlcigpO1xuICAgIGF0dHJpYnV0ZU1hbmFnZXIuYWRkKHtcbiAgICAgIHBvc2l0aW9uczoge3NpemU6IDMsIGFjY2Vzc29yOiAnZ2V0UG9zaXRpb24nfVxuICAgIH0pO1xuICB9XG59XG5cblNjYWxlRW5oYW5jZWRHcmlkTGF5ZXIubGF5ZXJOYW1lID0gJ1NjYWxlRW5oYW5jZWRHcmlkTGF5ZXInO1xuIl19
|
@@ -0,0 +1,7 @@
|
|
1
|
+
/// <reference types="deck.gl" />
|
2
|
+
import { HexagonLayer } from '@deck.gl/aggregation-layers';
|
3
|
+
import { AggregationType } from '../layer-utils/cpu-aggregator';
|
4
|
+
export declare const hexagonAggregation: AggregationType;
|
5
|
+
export default class ScaleEnhancedHexagonLayer extends HexagonLayer<any> {
|
6
|
+
initializeState(): void;
|
7
|
+
}
|