@flowmap.gl/layers 8.0.0-alpha.12 → 8.0.0-alpha.13
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-es5/AnimatedFlowLinesLayer/AnimatedFlowLinesLayer.d.ts +76 -0
- package/dist-es5/AnimatedFlowLinesLayer/AnimatedFlowLinesLayer.d.ts.map +1 -0
- package/dist-es5/AnimatedFlowLinesLayer/AnimatedFlowLinesLayer.js +178 -0
- package/dist-es5/AnimatedFlowLinesLayer/AnimatedFlowLinesLayerFragment.glsl.d.ts +3 -0
- package/dist-es5/AnimatedFlowLinesLayer/AnimatedFlowLinesLayerFragment.glsl.d.ts.map +1 -0
- package/dist-es5/AnimatedFlowLinesLayer/AnimatedFlowLinesLayerFragment.glsl.js +21 -0
- package/dist-es5/AnimatedFlowLinesLayer/AnimatedFlowLinesLayerVertex.glsl.d.ts +3 -0
- package/dist-es5/AnimatedFlowLinesLayer/AnimatedFlowLinesLayerVertex.glsl.d.ts.map +1 -0
- package/dist-es5/AnimatedFlowLinesLayer/AnimatedFlowLinesLayerVertex.glsl.js +21 -0
- package/dist-es5/AnimatedFlowLinesLayer/index.d.ts +3 -0
- package/dist-es5/AnimatedFlowLinesLayer/index.d.ts.map +1 -0
- package/dist-es5/AnimatedFlowLinesLayer/index.js +8 -0
- package/dist-es5/FlowCirclesLayer/FlowCirclesLayer.d.ts +59 -0
- package/dist-es5/FlowCirclesLayer/FlowCirclesLayer.d.ts.map +1 -0
- package/dist-es5/FlowCirclesLayer/FlowCirclesLayer.js +149 -0
- package/dist-es5/FlowCirclesLayer/FlowCirclesLayerFragment.glsl.d.ts +3 -0
- package/dist-es5/FlowCirclesLayer/FlowCirclesLayerFragment.glsl.d.ts.map +1 -0
- package/dist-es5/FlowCirclesLayer/FlowCirclesLayerFragment.glsl.js +21 -0
- package/dist-es5/FlowCirclesLayer/FlowCirclesLayerVertex.glsl.d.ts +3 -0
- package/dist-es5/FlowCirclesLayer/FlowCirclesLayerVertex.glsl.d.ts.map +1 -0
- package/dist-es5/FlowCirclesLayer/FlowCirclesLayerVertex.glsl.js +21 -0
- package/dist-es5/FlowCirclesLayer/index.d.ts +3 -0
- package/dist-es5/FlowCirclesLayer/index.d.ts.map +1 -0
- package/dist-es5/FlowCirclesLayer/index.js +8 -0
- package/dist-es5/FlowLinesLayer/FlowLinesLayer.d.ts +64 -0
- package/dist-es5/FlowLinesLayer/FlowLinesLayer.d.ts.map +1 -0
- package/dist-es5/FlowLinesLayer/FlowLinesLayer.js +217 -0
- package/dist-es5/FlowLinesLayer/FlowLinesLayerFragment.glsl.d.ts +3 -0
- package/dist-es5/FlowLinesLayer/FlowLinesLayerFragment.glsl.d.ts.map +1 -0
- package/dist-es5/FlowLinesLayer/FlowLinesLayerFragment.glsl.js +21 -0
- package/dist-es5/FlowLinesLayer/FlowLinesLayerVertex.glsl.d.ts +3 -0
- package/dist-es5/FlowLinesLayer/FlowLinesLayerVertex.glsl.d.ts.map +1 -0
- package/dist-es5/FlowLinesLayer/FlowLinesLayerVertex.glsl.js +21 -0
- package/dist-es5/FlowLinesLayer/index.d.ts +3 -0
- package/dist-es5/FlowLinesLayer/index.d.ts.map +1 -0
- package/dist-es5/FlowLinesLayer/index.js +8 -0
- package/dist-es5/FlowmapLayer.d.ts +79 -0
- package/dist-es5/FlowmapLayer.d.ts.map +1 -0
- package/dist-es5/FlowmapLayer.js +476 -0
- package/dist-es5/index.d.ts +7 -0
- package/dist-es5/index.d.ts.map +1 -0
- package/dist-es5/index.js +26 -0
- package/dist-es5/types.d.ts +36 -0
- package/dist-es5/types.d.ts.map +1 -0
- package/dist-es5/types.js +23 -0
- package/package.json +6 -4
- package/tsconfig.es5.json +11 -0
|
@@ -0,0 +1,476 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __extends = (this && this.__extends) || (function () {
|
|
3
|
+
var extendStatics = function (d, b) {
|
|
4
|
+
extendStatics = Object.setPrototypeOf ||
|
|
5
|
+
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
|
6
|
+
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
|
|
7
|
+
return extendStatics(d, b);
|
|
8
|
+
};
|
|
9
|
+
return function (d, b) {
|
|
10
|
+
if (typeof b !== "function" && b !== null)
|
|
11
|
+
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
|
|
12
|
+
extendStatics(d, b);
|
|
13
|
+
function __() { this.constructor = d; }
|
|
14
|
+
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
15
|
+
};
|
|
16
|
+
})();
|
|
17
|
+
var __assign = (this && this.__assign) || function () {
|
|
18
|
+
__assign = Object.assign || function(t) {
|
|
19
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
20
|
+
s = arguments[i];
|
|
21
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
22
|
+
t[p] = s[p];
|
|
23
|
+
}
|
|
24
|
+
return t;
|
|
25
|
+
};
|
|
26
|
+
return __assign.apply(this, arguments);
|
|
27
|
+
};
|
|
28
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
29
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
30
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
31
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
32
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
33
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
34
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
35
|
+
});
|
|
36
|
+
};
|
|
37
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
38
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
39
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
40
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
41
|
+
function step(op) {
|
|
42
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
43
|
+
while (_) try {
|
|
44
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
45
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
46
|
+
switch (op[0]) {
|
|
47
|
+
case 0: case 1: t = op; break;
|
|
48
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
49
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
50
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
51
|
+
default:
|
|
52
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
53
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
54
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
55
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
56
|
+
if (t[2]) _.ops.pop();
|
|
57
|
+
_.trys.pop(); continue;
|
|
58
|
+
}
|
|
59
|
+
op = body.call(thisArg, _);
|
|
60
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
61
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
62
|
+
}
|
|
63
|
+
};
|
|
64
|
+
var __read = (this && this.__read) || function (o, n) {
|
|
65
|
+
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
66
|
+
if (!m) return o;
|
|
67
|
+
var i = m.call(o), r, ar = [], e;
|
|
68
|
+
try {
|
|
69
|
+
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
70
|
+
}
|
|
71
|
+
catch (error) { e = { error: error }; }
|
|
72
|
+
finally {
|
|
73
|
+
try {
|
|
74
|
+
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
75
|
+
}
|
|
76
|
+
finally { if (e) throw e.error; }
|
|
77
|
+
}
|
|
78
|
+
return ar;
|
|
79
|
+
};
|
|
80
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
81
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
82
|
+
if (ar || !(i in from)) {
|
|
83
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
84
|
+
ar[i] = from[i];
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
|
88
|
+
};
|
|
89
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
90
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
91
|
+
};
|
|
92
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
93
|
+
/*
|
|
94
|
+
* Copyright 2022 FlowmapBlue
|
|
95
|
+
*
|
|
96
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
97
|
+
* you may not use this file except in compliance with the License.
|
|
98
|
+
* You may obtain a copy of the License at
|
|
99
|
+
*
|
|
100
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
101
|
+
*
|
|
102
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
103
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
104
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
105
|
+
* See the License for the specific language governing permissions and
|
|
106
|
+
* limitations under the License.
|
|
107
|
+
*
|
|
108
|
+
*/
|
|
109
|
+
var core_1 = require("@deck.gl/core");
|
|
110
|
+
var layers_1 = require("@deck.gl/layers");
|
|
111
|
+
var data_1 = require("@flowmap.gl/data");
|
|
112
|
+
var AnimatedFlowLinesLayer_1 = __importDefault(require("./AnimatedFlowLinesLayer"));
|
|
113
|
+
var FlowCirclesLayer_1 = __importDefault(require("./FlowCirclesLayer"));
|
|
114
|
+
var FlowLinesLayer_1 = __importDefault(require("./FlowLinesLayer"));
|
|
115
|
+
var types_1 = require("./types");
|
|
116
|
+
var HighlightType;
|
|
117
|
+
(function (HighlightType) {
|
|
118
|
+
HighlightType["LOCATION"] = "location";
|
|
119
|
+
HighlightType["FLOW"] = "flow";
|
|
120
|
+
})(HighlightType || (HighlightType = {}));
|
|
121
|
+
var FlowmapLayer = /** @class */ (function (_super) {
|
|
122
|
+
__extends(FlowmapLayer, _super);
|
|
123
|
+
function FlowmapLayer(props) {
|
|
124
|
+
var _this = _super.call(this, __assign(__assign({}, props), { dataProvider: {
|
|
125
|
+
// To avoid deck.gl props diffing on comlink worker proxy causing an exception
|
|
126
|
+
dataProvider: props.dataProvider,
|
|
127
|
+
}, onHover: function (info, event) {
|
|
128
|
+
// TODO: if (lastHoverEventStartTimeRef > startTime) {
|
|
129
|
+
// // Skipping, because this is not the latest hover event
|
|
130
|
+
// return;
|
|
131
|
+
// }
|
|
132
|
+
_this.setState({ highlightedObject: _this._getHighlightedObject(info) });
|
|
133
|
+
var onHover = props.onHover;
|
|
134
|
+
if (onHover) {
|
|
135
|
+
_this._getFlowmapLayerPickingInfo(info).then(function (info) {
|
|
136
|
+
_this.setState({ pickingInfo: info });
|
|
137
|
+
onHover(info, event);
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
}, onClick: function (info, event) {
|
|
141
|
+
var onClick = props.onClick;
|
|
142
|
+
if (onClick) {
|
|
143
|
+
_this._getFlowmapLayerPickingInfo(info).then(function (info) {
|
|
144
|
+
_this.setState({ pickingInfo: info });
|
|
145
|
+
if (info) {
|
|
146
|
+
onClick(info, event);
|
|
147
|
+
}
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
} })) || this;
|
|
151
|
+
return _this;
|
|
152
|
+
}
|
|
153
|
+
FlowmapLayer.prototype.initializeState = function () {
|
|
154
|
+
this.state = {
|
|
155
|
+
accessors: new data_1.FlowmapAggregateAccessors(this.props),
|
|
156
|
+
dataProvider: this._getOrMakeDataProvider(),
|
|
157
|
+
layersData: undefined,
|
|
158
|
+
highlightedObject: undefined,
|
|
159
|
+
pickingInfo: undefined,
|
|
160
|
+
};
|
|
161
|
+
};
|
|
162
|
+
FlowmapLayer.prototype.getPickingInfo = function (_a) {
|
|
163
|
+
var _b, _c;
|
|
164
|
+
var info = _a.info;
|
|
165
|
+
// This is for onHover event handlers set on the <DeckGL> component
|
|
166
|
+
if (!info.object) {
|
|
167
|
+
var object = (_c = (_b = this.state) === null || _b === void 0 ? void 0 : _b.pickingInfo) === null || _c === void 0 ? void 0 : _c.object;
|
|
168
|
+
if (object) {
|
|
169
|
+
return __assign(__assign({}, info), { object: object, picked: true });
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
return info;
|
|
173
|
+
};
|
|
174
|
+
FlowmapLayer.prototype._updateAccessors = function () {
|
|
175
|
+
var _a, _b;
|
|
176
|
+
(_b = (_a = this.state) === null || _a === void 0 ? void 0 : _a.dataProvider) === null || _b === void 0 ? void 0 : _b.setAccessors(this.props);
|
|
177
|
+
this.setState({ accessors: new data_1.FlowmapAggregateAccessors(this.props) });
|
|
178
|
+
};
|
|
179
|
+
FlowmapLayer.prototype._getOrMakeDataProvider = function () {
|
|
180
|
+
var _a = this.props, data = _a.data, dataProvider = _a.dataProvider;
|
|
181
|
+
if ((0, data_1.isFlowmapDataProvider)(dataProvider === null || dataProvider === void 0 ? void 0 : dataProvider.dataProvider)) {
|
|
182
|
+
return dataProvider.dataProvider;
|
|
183
|
+
}
|
|
184
|
+
else if ((0, data_1.isFlowmapData)(data)) {
|
|
185
|
+
var dataProvider_1 = new data_1.LocalFlowmapDataProvider(this.props);
|
|
186
|
+
dataProvider_1.setFlowmapData(data);
|
|
187
|
+
return dataProvider_1;
|
|
188
|
+
}
|
|
189
|
+
throw new Error('FlowmapLayer: data must be a FlowmapDataProvider or FlowmapData');
|
|
190
|
+
};
|
|
191
|
+
FlowmapLayer.prototype._updateDataProvider = function () {
|
|
192
|
+
this.setState({ dataProvider: this._getOrMakeDataProvider() });
|
|
193
|
+
};
|
|
194
|
+
FlowmapLayer.prototype.shouldUpdateState = function (params) {
|
|
195
|
+
var changeFlags = params.changeFlags;
|
|
196
|
+
// if (this._viewportChanged()) {
|
|
197
|
+
// return true;
|
|
198
|
+
// }
|
|
199
|
+
if (changeFlags.viewportChanged) {
|
|
200
|
+
return true;
|
|
201
|
+
}
|
|
202
|
+
return _super.prototype.shouldUpdateState.call(this, params);
|
|
203
|
+
// TODO: be smarter on when to update
|
|
204
|
+
// (e.g. ignore viewport changes when adaptiveScalesEnabled and clustering are false)
|
|
205
|
+
};
|
|
206
|
+
FlowmapLayer.prototype.updateState = function (_a) {
|
|
207
|
+
var _this = this;
|
|
208
|
+
var oldProps = _a.oldProps, props = _a.props, changeFlags = _a.changeFlags;
|
|
209
|
+
var _b = this.state || {}, dataProvider = _b.dataProvider, highlightedObject = _b.highlightedObject;
|
|
210
|
+
if (!dataProvider) {
|
|
211
|
+
return;
|
|
212
|
+
}
|
|
213
|
+
if (changeFlags.propsChanged) {
|
|
214
|
+
// this._updateAccessors();
|
|
215
|
+
}
|
|
216
|
+
if (changeFlags.dataChanged) {
|
|
217
|
+
this._updateDataProvider();
|
|
218
|
+
}
|
|
219
|
+
if (changeFlags.viewportChanged || changeFlags.dataChanged) {
|
|
220
|
+
this.setState({
|
|
221
|
+
highlightedObject: undefined,
|
|
222
|
+
});
|
|
223
|
+
}
|
|
224
|
+
if (changeFlags.viewportChanged ||
|
|
225
|
+
changeFlags.propsOrDataChanged // TODO can we ignore accessor props changes?
|
|
226
|
+
) {
|
|
227
|
+
dataProvider.setFlowmapState(this._getFlowmapState());
|
|
228
|
+
(function () { return __awaiter(_this, void 0, void 0, function () {
|
|
229
|
+
var layersData;
|
|
230
|
+
return __generator(this, function (_a) {
|
|
231
|
+
switch (_a.label) {
|
|
232
|
+
case 0: return [4 /*yield*/, dataProvider.getLayersData()];
|
|
233
|
+
case 1:
|
|
234
|
+
layersData = _a.sent();
|
|
235
|
+
this.setState({ layersData: layersData });
|
|
236
|
+
return [2 /*return*/];
|
|
237
|
+
}
|
|
238
|
+
});
|
|
239
|
+
}); })();
|
|
240
|
+
}
|
|
241
|
+
};
|
|
242
|
+
FlowmapLayer.prototype._getSettingsState = function () {
|
|
243
|
+
var _a = this.props, locationTotalsEnabled = _a.locationTotalsEnabled, adaptiveScalesEnabled = _a.adaptiveScalesEnabled, animationEnabled = _a.animationEnabled, clusteringEnabled = _a.clusteringEnabled, clusteringLevel = _a.clusteringLevel, fadeEnabled = _a.fadeEnabled, fadeOpacityEnabled = _a.fadeOpacityEnabled, clusteringAuto = _a.clusteringAuto, darkMode = _a.darkMode, fadeAmount = _a.fadeAmount, colorScheme = _a.colorScheme, highlightColor = _a.highlightColor, maxTopFlowsDisplayNum = _a.maxTopFlowsDisplayNum;
|
|
244
|
+
return {
|
|
245
|
+
locationTotalsEnabled: locationTotalsEnabled,
|
|
246
|
+
adaptiveScalesEnabled: adaptiveScalesEnabled,
|
|
247
|
+
animationEnabled: animationEnabled,
|
|
248
|
+
clusteringEnabled: clusteringEnabled,
|
|
249
|
+
clusteringLevel: clusteringLevel,
|
|
250
|
+
fadeEnabled: fadeEnabled,
|
|
251
|
+
fadeOpacityEnabled: fadeOpacityEnabled,
|
|
252
|
+
clusteringAuto: clusteringAuto,
|
|
253
|
+
darkMode: darkMode,
|
|
254
|
+
fadeAmount: fadeAmount,
|
|
255
|
+
colorScheme: colorScheme,
|
|
256
|
+
highlightColor: highlightColor,
|
|
257
|
+
maxTopFlowsDisplayNum: maxTopFlowsDisplayNum,
|
|
258
|
+
};
|
|
259
|
+
};
|
|
260
|
+
FlowmapLayer.prototype._getFlowmapState = function () {
|
|
261
|
+
return {
|
|
262
|
+
viewport: pickViewportProps(this.context.viewport),
|
|
263
|
+
filterState: {
|
|
264
|
+
selectedLocations: undefined,
|
|
265
|
+
locationFilterMode: data_1.LocationFilterMode.ALL,
|
|
266
|
+
selectedTimeRange: undefined,
|
|
267
|
+
},
|
|
268
|
+
settingsState: this._getSettingsState(),
|
|
269
|
+
};
|
|
270
|
+
};
|
|
271
|
+
FlowmapLayer.prototype._getFlowmapLayerPickingInfo = function (info) {
|
|
272
|
+
var _a;
|
|
273
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
274
|
+
var index, sourceLayer, _b, dataProvider, accessors, commonInfo, flow, _c, origin_1, dest, location_1, _d, id, name_1, totals, circleAttributes, circleRadius;
|
|
275
|
+
return __generator(this, function (_e) {
|
|
276
|
+
switch (_e.label) {
|
|
277
|
+
case 0:
|
|
278
|
+
index = info.index, sourceLayer = info.sourceLayer;
|
|
279
|
+
_b = this.state || {}, dataProvider = _b.dataProvider, accessors = _b.accessors;
|
|
280
|
+
if (!dataProvider || !accessors) {
|
|
281
|
+
return [2 /*return*/, undefined];
|
|
282
|
+
}
|
|
283
|
+
commonInfo = __assign(__assign({}, info), { picked: info.picked, layer: info.layer, index: info.index, x: info.x, y: info.y, coordinate: info.coordinate, event: info.event });
|
|
284
|
+
if (!(sourceLayer instanceof FlowLinesLayer_1.default ||
|
|
285
|
+
sourceLayer instanceof AnimatedFlowLinesLayer_1.default)) return [3 /*break*/, 7];
|
|
286
|
+
if (!(index === -1)) return [3 /*break*/, 1];
|
|
287
|
+
_c = undefined;
|
|
288
|
+
return [3 /*break*/, 3];
|
|
289
|
+
case 1: return [4 /*yield*/, dataProvider.getFlowByIndex(index)];
|
|
290
|
+
case 2:
|
|
291
|
+
_c = _e.sent();
|
|
292
|
+
_e.label = 3;
|
|
293
|
+
case 3:
|
|
294
|
+
flow = _c;
|
|
295
|
+
if (!flow) return [3 /*break*/, 6];
|
|
296
|
+
return [4 /*yield*/, dataProvider.getLocationById(accessors.getFlowOriginId(flow))];
|
|
297
|
+
case 4:
|
|
298
|
+
origin_1 = _e.sent();
|
|
299
|
+
return [4 /*yield*/, dataProvider.getLocationById(accessors.getFlowDestId(flow))];
|
|
300
|
+
case 5:
|
|
301
|
+
dest = _e.sent();
|
|
302
|
+
if (origin_1 && dest) {
|
|
303
|
+
return [2 /*return*/, __assign(__assign({}, commonInfo), { object: {
|
|
304
|
+
type: types_1.PickingType.FLOW,
|
|
305
|
+
flow: flow,
|
|
306
|
+
origin: origin_1,
|
|
307
|
+
dest: dest,
|
|
308
|
+
count: accessors.getFlowMagnitude(flow),
|
|
309
|
+
} })];
|
|
310
|
+
}
|
|
311
|
+
_e.label = 6;
|
|
312
|
+
case 6: return [3 /*break*/, 12];
|
|
313
|
+
case 7:
|
|
314
|
+
if (!(sourceLayer instanceof FlowCirclesLayer_1.default)) return [3 /*break*/, 12];
|
|
315
|
+
if (!(index === -1)) return [3 /*break*/, 8];
|
|
316
|
+
_d = undefined;
|
|
317
|
+
return [3 /*break*/, 10];
|
|
318
|
+
case 8: return [4 /*yield*/, dataProvider.getLocationByIndex(index)];
|
|
319
|
+
case 9:
|
|
320
|
+
_d = _e.sent();
|
|
321
|
+
_e.label = 10;
|
|
322
|
+
case 10:
|
|
323
|
+
location_1 = _d;
|
|
324
|
+
if (!location_1) return [3 /*break*/, 12];
|
|
325
|
+
id = accessors.getLocationId(location_1);
|
|
326
|
+
name_1 = accessors.getLocationName(location_1);
|
|
327
|
+
return [4 /*yield*/, dataProvider.getTotalsForLocation(id)];
|
|
328
|
+
case 11:
|
|
329
|
+
totals = _e.sent();
|
|
330
|
+
circleAttributes = (((_a = this.state) === null || _a === void 0 ? void 0 : _a.layersData) || {}).circleAttributes;
|
|
331
|
+
if (totals && circleAttributes) {
|
|
332
|
+
circleRadius = (0, data_1.getOuterCircleRadiusByIndex)(circleAttributes, info.index);
|
|
333
|
+
return [2 /*return*/, __assign(__assign({}, commonInfo), { object: {
|
|
334
|
+
type: types_1.PickingType.LOCATION,
|
|
335
|
+
location: location_1,
|
|
336
|
+
id: id,
|
|
337
|
+
name: name_1,
|
|
338
|
+
totals: totals,
|
|
339
|
+
circleRadius: circleRadius,
|
|
340
|
+
} })];
|
|
341
|
+
}
|
|
342
|
+
_e.label = 12;
|
|
343
|
+
case 12: return [2 /*return*/, undefined];
|
|
344
|
+
}
|
|
345
|
+
});
|
|
346
|
+
});
|
|
347
|
+
};
|
|
348
|
+
FlowmapLayer.prototype._getHighlightedObject = function (info) {
|
|
349
|
+
var _a, _b;
|
|
350
|
+
var index = info.index, sourceLayer = info.sourceLayer;
|
|
351
|
+
if (index < 0)
|
|
352
|
+
return undefined;
|
|
353
|
+
if (sourceLayer instanceof FlowLinesLayer_1.default ||
|
|
354
|
+
sourceLayer instanceof AnimatedFlowLinesLayer_1.default) {
|
|
355
|
+
var lineAttributes = (((_a = this.state) === null || _a === void 0 ? void 0 : _a.layersData) || {}).lineAttributes;
|
|
356
|
+
if (lineAttributes) {
|
|
357
|
+
var attrs = (0, data_1.getFlowLineAttributesByIndex)(lineAttributes, index);
|
|
358
|
+
if (this.props.fadeOpacityEnabled) {
|
|
359
|
+
attrs = __assign(__assign({}, attrs), { attributes: __assign(__assign({}, attrs.attributes), { getColor: __assign(__assign({}, attrs.attributes.getColor), { value: new Uint8Array(__spreadArray(__spreadArray([], __read(attrs.attributes.getColor.value.slice(0, 3)), false), [
|
|
360
|
+
255, // the highlight color should be always opaque
|
|
361
|
+
], false)) }) }) });
|
|
362
|
+
}
|
|
363
|
+
return {
|
|
364
|
+
type: HighlightType.FLOW,
|
|
365
|
+
lineAttributes: attrs,
|
|
366
|
+
};
|
|
367
|
+
}
|
|
368
|
+
}
|
|
369
|
+
else if (sourceLayer instanceof FlowCirclesLayer_1.default) {
|
|
370
|
+
var circleAttributes = (((_b = this.state) === null || _b === void 0 ? void 0 : _b.layersData) || {}).circleAttributes;
|
|
371
|
+
if (circleAttributes) {
|
|
372
|
+
return {
|
|
373
|
+
type: HighlightType.LOCATION,
|
|
374
|
+
coords: (0, data_1.getLocationCoordsByIndex)(circleAttributes, index),
|
|
375
|
+
radius: (0, data_1.getOuterCircleRadiusByIndex)(circleAttributes, index),
|
|
376
|
+
};
|
|
377
|
+
}
|
|
378
|
+
}
|
|
379
|
+
return undefined;
|
|
380
|
+
};
|
|
381
|
+
FlowmapLayer.prototype.renderLayers = function () {
|
|
382
|
+
var _a;
|
|
383
|
+
var layers = [];
|
|
384
|
+
if ((_a = this.state) === null || _a === void 0 ? void 0 : _a.layersData) {
|
|
385
|
+
var _b = this.state, layersData = _b.layersData, highlightedObject = _b.highlightedObject;
|
|
386
|
+
var _c = layersData || {}, circleAttributes = _c.circleAttributes, lineAttributes = _c.lineAttributes;
|
|
387
|
+
if (circleAttributes && lineAttributes) {
|
|
388
|
+
var flowmapColors = (0, data_1.getFlowmapColors)(this._getSettingsState());
|
|
389
|
+
var outlineColor = (0, data_1.colorAsRgba)(flowmapColors.outlineColor || (this.props.darkMode ? '#000' : '#fff'));
|
|
390
|
+
var commonLineLayerProps = {
|
|
391
|
+
data: lineAttributes,
|
|
392
|
+
parameters: __assign(__assign({}, this.props.parameters), {
|
|
393
|
+
// prevent z-fighting at non-zero bearing/pitch
|
|
394
|
+
depthTest: false }),
|
|
395
|
+
};
|
|
396
|
+
if (this.props.animationEnabled) {
|
|
397
|
+
layers.push(
|
|
398
|
+
// @ts-ignore
|
|
399
|
+
new AnimatedFlowLinesLayer_1.default(__assign({}, this.getSubLayerProps(__assign(__assign({}, commonLineLayerProps), { id: 'animated-flow-lines', drawOutline: false, thicknessUnit: 20 })))));
|
|
400
|
+
}
|
|
401
|
+
else {
|
|
402
|
+
layers.push(new FlowLinesLayer_1.default(__assign({}, this.getSubLayerProps(__assign(__assign({}, commonLineLayerProps), { id: 'flow-lines', drawOutline: true, outlineColor: outlineColor })))));
|
|
403
|
+
}
|
|
404
|
+
layers.push(new FlowCirclesLayer_1.default(this.getSubLayerProps({
|
|
405
|
+
id: 'circles',
|
|
406
|
+
data: circleAttributes,
|
|
407
|
+
emptyColor: this.props.darkMode
|
|
408
|
+
? [0, 0, 0, 255]
|
|
409
|
+
: [255, 255, 255, 255],
|
|
410
|
+
outlineEmptyMix: 0.4,
|
|
411
|
+
})));
|
|
412
|
+
if (highlightedObject) {
|
|
413
|
+
switch (highlightedObject.type) {
|
|
414
|
+
case HighlightType.LOCATION:
|
|
415
|
+
layers.push(new layers_1.ScatterplotLayer(__assign({}, this.getSubLayerProps({
|
|
416
|
+
id: 'location-highlight',
|
|
417
|
+
data: [highlightedObject],
|
|
418
|
+
pickable: false,
|
|
419
|
+
antialiasing: true,
|
|
420
|
+
stroked: true,
|
|
421
|
+
filled: false,
|
|
422
|
+
lineWidthUnits: 'pixels',
|
|
423
|
+
getLineWidth: 2,
|
|
424
|
+
radiusUnits: 'pixels',
|
|
425
|
+
getRadius: function (d) { return d.radius; },
|
|
426
|
+
getLineColor: (0, data_1.colorAsRgba)(this.props.highlightColor),
|
|
427
|
+
getPosition: function (d) { return d.coords; },
|
|
428
|
+
}))));
|
|
429
|
+
break;
|
|
430
|
+
case HighlightType.FLOW:
|
|
431
|
+
layers.push(new FlowLinesLayer_1.default(__assign({}, this.getSubLayerProps({
|
|
432
|
+
id: 'flow-highlight',
|
|
433
|
+
data: highlightedObject.lineAttributes,
|
|
434
|
+
drawOutline: true,
|
|
435
|
+
pickable: false,
|
|
436
|
+
outlineColor: (0, data_1.colorAsRgba)(this.props.highlightColor),
|
|
437
|
+
outlineThickness: 1,
|
|
438
|
+
}))));
|
|
439
|
+
break;
|
|
440
|
+
}
|
|
441
|
+
}
|
|
442
|
+
}
|
|
443
|
+
}
|
|
444
|
+
return layers;
|
|
445
|
+
};
|
|
446
|
+
FlowmapLayer.defaultProps = {
|
|
447
|
+
darkMode: true,
|
|
448
|
+
fadeAmount: 50,
|
|
449
|
+
locationTotalsEnabled: true,
|
|
450
|
+
animationEnabled: false,
|
|
451
|
+
clusteringEnabled: true,
|
|
452
|
+
fadeEnabled: true,
|
|
453
|
+
fadeOpacityEnabled: false,
|
|
454
|
+
clusteringAuto: true,
|
|
455
|
+
clusteringLevel: undefined,
|
|
456
|
+
adaptiveScalesEnabled: true,
|
|
457
|
+
colorScheme: 'Teal',
|
|
458
|
+
highlightColor: 'orange',
|
|
459
|
+
maxTopFlowsDisplayNum: 5000,
|
|
460
|
+
};
|
|
461
|
+
return FlowmapLayer;
|
|
462
|
+
}(core_1.CompositeLayer));
|
|
463
|
+
exports.default = FlowmapLayer;
|
|
464
|
+
function pickViewportProps(viewport) {
|
|
465
|
+
var width = viewport.width, height = viewport.height, longitude = viewport.longitude, latitude = viewport.latitude, zoom = viewport.zoom, pitch = viewport.pitch, bearing = viewport.bearing;
|
|
466
|
+
return {
|
|
467
|
+
width: width,
|
|
468
|
+
height: height,
|
|
469
|
+
longitude: longitude,
|
|
470
|
+
latitude: latitude,
|
|
471
|
+
zoom: zoom,
|
|
472
|
+
pitch: pitch,
|
|
473
|
+
bearing: bearing,
|
|
474
|
+
};
|
|
475
|
+
}
|
|
476
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmxvd21hcExheWVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL0Zsb3dtYXBMYXllci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUNILHNDQUE2QztBQUM3QywwQ0FBaUQ7QUFDakQseUNBaUIwQjtBQUMxQixvRkFBOEQ7QUFDOUQsd0VBQWtEO0FBQ2xELG9FQUE4QztBQUM5QyxpQ0FLaUI7QUEwQmpCLElBQUssYUFHSjtBQUhELFdBQUssYUFBYTtJQUNoQixzQ0FBcUIsQ0FBQTtJQUNyQiw4QkFBYSxDQUFBO0FBQ2YsQ0FBQyxFQUhJLGFBQWEsS0FBYixhQUFhLFFBR2pCO0FBeUJEO0lBQWdELGdDQUFjO0lBa0I1RCxzQkFBbUIsS0FBOEI7UUFBakQsWUFDRSx3Q0FDSyxLQUFLLEtBQ1IsWUFBWSxFQUFFO2dCQUNaLDhFQUE4RTtnQkFDOUUsWUFBWSxFQUFFLEtBQUssQ0FBQyxZQUFZO2FBQ2pDLEVBQ0QsT0FBTyxFQUFFLFVBQUMsSUFBc0IsRUFBRSxLQUFrQjtnQkFDbEQsc0RBQXNEO2dCQUN0RCw0REFBNEQ7Z0JBQzVELFlBQVk7Z0JBQ1osSUFBSTtnQkFDSixLQUFJLENBQUMsUUFBUSxDQUFDLEVBQUMsaUJBQWlCLEVBQUUsS0FBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxFQUFDLENBQUMsQ0FBQztnQkFDOUQsSUFBQSxPQUFPLEdBQUksS0FBSyxRQUFULENBQVU7Z0JBQ3hCLElBQUksT0FBTyxFQUFFO29CQUNYLEtBQUksQ0FBQywyQkFBMkIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBQyxJQUFJO3dCQUMvQyxLQUFJLENBQUMsUUFBUSxDQUFDLEVBQUMsV0FBVyxFQUFFLElBQUksRUFB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MUIscUJBQXFCLEVBQUUsSUFBSTtRQUMzQixXQUFXLEVBQUUsTUFBTTtRQUNuQixjQUFjLEVBQUUsUUFBUTtRQUN4QixxQkFBcUIsRUFBRSxJQUFJO0tBQzVCLENBQUM7SUF3WUosbUJBQUM7Q0FBQSxBQXZaRCxDQUFnRCxxQkFBYyxHQXVaN0Q7a0JBdlpvQixZQUFZO0FBeVpqQyxTQUFTLGlCQUFpQixDQUFDLFFBQTZCO0lBQy9DLElBQUEsS0FBSyxHQUF1RCxRQUFRLE1BQS9ELEVBQUUsTUFBTSxHQUErQyxRQUFRLE9BQXZELEVBQUUsU0FBUyxHQUFvQyxRQUFRLFVBQTVDLEVBQUUsUUFBUSxHQUEwQixRQUFRLFNBQWxDLEVBQUUsSUFBSSxHQUFvQixRQUFRLEtBQTVCLEVBQUUsS0FBSyxHQUFhLFFBQVEsTUFBckIsRUFBRSxPQUFPLEdBQUksUUFBUSxRQUFaLENBQWE7SUFDNUUsT0FBTztRQUNMLEtBQUssT0FBQTtRQUNMLE1BQU0sUUFBQTtRQUNOLFNBQVMsV0FBQTtRQUNULFFBQVEsVUFBQTtRQUNSLElBQUksTUFBQTtRQUNKLEtBQUssT0FBQTtRQUNMLE9BQU8sU0FBQTtLQUNSLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDIyIEZsb3dtYXBCbHVlXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKlxuICovXG5pbXBvcnQge0NvbXBvc2l0ZUxheWVyfSBmcm9tICdAZGVjay5nbC9jb3JlJztcbmltcG9ydCB7U2NhdHRlcnBsb3RMYXllcn0gZnJvbSAnQGRlY2suZ2wvbGF5ZXJzJztcbmltcG9ydCB7XG4gIGNvbG9yQXNSZ2JhLFxuICBGbG93TGluZXNMYXllckF0dHJpYnV0ZXMsXG4gIEZsb3dtYXBEYXRhLFxuICBGbG93bWFwRGF0YUFjY2Vzc29ycyxcbiAgRmxvd21hcERhdGFQcm92aWRlcixcbiAgZ2V0Rmxvd0xpbmVBdHRyaWJ1dGVzQnlJbmRleCxcbiAgZ2V0Rmxvd21hcENvbG9ycyxcbiAgZ2V0T3V0ZXJDaXJjbGVSYWRpdXNCeUluZGV4LFxuICBnZXRMb2NhdGlvbkNvb3Jkc0J5SW5kZXgsXG4gIGlzRmxvd21hcERhdGEsXG4gIGlzRmxvd21hcERhdGFQcm92aWRlcixcbiAgTGF5ZXJzRGF0YSxcbiAgTG9jYWxGbG93bWFwRGF0YVByb3ZpZGVyLFxuICBMb2NhdGlvbkZpbHRlck1vZGUsXG4gIFZpZXdwb3J0UHJvcHMsXG4gIEZsb3dtYXBBZ2dyZWdhdGVBY2Nlc3NvcnMsXG59IGZyb20gJ0BmbG93bWFwLmdsL2RhdGEnO1xuaW1wb3J0IEFuaW1hdGVkRmxvd0xpbmVzTGF5ZXIgZnJvbSAnLi9BbmltYXRlZEZsb3dMaW5lc0xheWVyJztcbmltcG9ydCBGbG93Q2lyY2xlc0xheWVyIGZyb20gJy4vRmxvd0NpcmNsZXNMYXllcic7XG5pbXBvcnQgRmxvd0xpbmVzTGF5ZXIgZnJvbSAnLi9GbG93TGluZXNMYXllcic7XG5pbXBvcnQge1xuICBGbG93bWFwTGF5ZXJQaWNraW5nSW5mbyxcbiAgTGF5ZXJQcm9wcyxcbiAgUGlja2luZ0luZm8sXG4gIFBpY2tpbmdUeXBlLFxufSBmcm9tICcuL3R5cGVzJztcblxuZXhwb3J0IHR5cGUgRmxvd21hcExheWVyUHJvcHM8TCwgRj4gPSB7XG4gIGRhdGE/OiBGbG93bWFwRGF0YTxMLCBGPjtcbiAgZGF0YVByb3ZpZGVyPzogRmxvd21hcERhdGFQcm92aWRlcjxMLCBGPjtcbiAgbG9jYXRpb25Ub3RhbHNFbmFibGVkPzogYm9vbGVhbjtcbiAgYWRhcHRpdmVTY2FsZXNFbmFibGVkPzogYm9vbGVhbjtcbiAgYW5pbWF0aW9uRW5hYmxlZD86IGJvb2xlYW47XG4gIGNsdXN0ZXJpbmdFbmFibGVkPzogYm9vbGVhbjtcbiAgY2x1c3RlcmluZ0xldmVsPzogbnVtYmVyO1xuICBmYWRlRW5hYmxlZD86IGJvb2xlYW47XG4gIGZhZGVPcGFjaXR5RW5hYmxlZD86IGJvb2xlYW47XG4gIGNsdXN0ZXJpbmdBdXRvPzogYm9vbGVhbjtcbiAgZGFya01vZGU/OiBib29sZWFuO1xuICBmYWRlQW1vdW50PzogbnVtYmVyO1xuICBjb2xvclNjaGVtZT86IHN0cmluZyB8IHN0cmluZ1tdO1xuICBoaWdobGlnaHRDb2xvcj86IHN0cmluZyB8IG51bWJlcltdO1xuICBtYXhUb3BGbG93c0Rpc3BsYXlOdW0/OiBudW1iZXI7XG4gIG9uSG92ZXI/OiAoXG4gICAgaW5mbzogRmxvd21hcExheWVyUGlja2luZ0luZm88TCwgRj4gfCB1bmRlZmluZWQsXG4gICAgZXZlbnQ6IFNvdXJjZUV2ZW50LFxuICApID0+IHZvaWQ7XG4gIG9uQ2xpY2s/OiAoaW5mbzogRmxvd21hcExheWVyUGlja2luZ0luZm88TCwgRj4sIGV2ZW50OiBTb3VyY2VFdmVudCkgPT4gdm9pZDtcbn0gJiBQYXJ0aWFsPEZsb3dtYXBEYXRhQWNjZXNzb3JzPEwsIEY+PiAmXG4gIExheWVyUHJvcHM7XG5cbmVudW0gSGlnaGxpZ2h0VHlwZSB7XG4gIExPQ0FUSU9OID0gJ2xvY2F0aW9uJyxcbiAgRkxPVyA9ICdmbG93Jyxcbn1cblxudHlwZSBIaWdobGlnaHRlZExvY2F0aW9uT2JqZWN0ID0ge1xuICB0eXBlOiBIaWdobGlnaHRUeXBlLkxPQ0FUSU9OO1xuICBjb29yZHM6IFtudW1iZXIsIG51bWJlcl07XG4gIHJhZGl1czogbnVtYmVyO1xufTtcblxudHlwZSBIaWdobGlnaHRlZEZsb3dPYmplY3QgPSB7XG4gIHR5cGU6IEhpZ2hsaWdodFR5cGUuRkxPVztcbiAgbGluZUF0dHJpYnV0ZXM6IEZsb3dMaW5lc0xheWVyQXR0cmlidXRlcztcbn07XG5cbnR5cGUgSGlnaGxpZ2h0ZWRPYmplY3QgPSBIaWdobGlnaHRlZExvY2F0aW9uT2JqZWN0IHwgSGlnaGxpZ2h0ZWRGbG93T2JqZWN0O1xuXG50eXBlIFN0YXRlPEwsIEY+ID0ge1xuICBhY2Nlc3NvcnM6IEZsb3dtYXBBZ2dyZWdhdGVBY2Nlc3NvcnM8TCwgRj47XG4gIGRhdGFQcm92aWRlcjogRmxvd21hcERhdGFQcm92aWRlcjxMLCBGPjtcbiAgbGF5ZXJzRGF0YTogTGF5ZXJzRGF0YSB8IHVuZGVmaW5lZDtcbiAgaGlnaGxpZ2h0ZWRPYmplY3Q6IEhpZ2hsaWdodGVkT2JqZWN0IHwgdW5kZWZpbmVkO1xuICBwaWNraW5nSW5mbzogRmxvd21hcExheWVyUGlja2luZ0luZm88TCwgRj4gfCB1bmRlZmluZWQ7XG59O1xuXG5leHBvcnQgdHlwZSBTb3VyY2VFdmVudCA9IHtzcmNFdmVudDogTW91c2VFdmVudH07XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEZsb3dtYXBMYXllcjxMLCBGPiBleHRlbmRzIENvbXBvc2l0ZUxheWVyIHtcbiAgc3RhdGljIGRlZmF1bHRQcm9wcyA9IHtcbiAgICBkYXJrTW9kZTogdHJ1ZSxcbiAgICBmYWRlQW1vdW50OiA1MCxcbiAgICBsb2NhdGlvblRvdGFsc0VuYWJsZWQ6IHRydWUsXG4gICAgYW5pbWF0aW9uRW5hYmxlZDogZmFsc2UsXG4gICAgY2x1c3RlcmluZ0VuYWJsZWQ6IHRydWUsXG4gICAgZmFkZUVuYWJsZWQ6IHRydWUsXG4gICAgZmFkZU9wYWNpdHlFbmFibGVkOiBmYWxzZSxcbiAgICBjbHVzdGVyaW5nQXV0bzogdHJ1ZSxcbiAgICBjbHVzdGVyaW5nTGV2ZWw6IHVuZGVmaW5lZCxcbiAgICBhZGFwdGl2ZVNjYWxlc0VuYWJsZWQ6IHRydWUsXG4gICAgY29sb3JTY2hlbWU6ICdUZWFsJyxcbiAgICBoaWdobGlnaHRDb2xvcjogJ29yYW5nZScsXG4gICAgbWF4VG9wRmxvd3NEaXNwbGF5TnVtOiA1MDAwLFxuICB9O1xuICBzdGF0ZTogU3RhdGU8TCwgRj4gfCB1bmRlZmluZWQ7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKHByb3BzOiBGbG93bWFwTGF5ZXJQcm9wczxMLCBGPikge1xuICAgIHN1cGVyKHtcbiAgICAgIC4uLnByb3BzLFxuICAgICAgZGF0YVByb3ZpZGVyOiB7XG4gICAgICAgIC8vIFRvIGF2b2lkIGRlY2suZ2wgcHJvcHMgZGlmZmluZyBvbiBjb21saW5rIHdvcmtlciBwcm94eSBjYXVzaW5nIGFuIGV4Y2VwdGlvblxuICAgICAgICBkYXRhUHJvdmlkZXI6IHByb3BzLmRhdGFQcm92aWRlcixcbiAgICAgIH0sXG4gICAgICBvbkhvdmVyOiAoaW5mbzogUGlja2luZ0luZm88YW55PiwgZXZlbnQ6IFNvdXJjZUV2ZW50KSA9PiB7XG4gICAgICAgIC8vIFRPRE86IGlmIChsYXN0SG92ZXJFdmVudFN0YXJ0VGltZVJlZiA+IHN0YXJ0VGltZSkge1xuICAgICAgICAvLyAgIC8vIFNraXBwaW5nLCBiZWNhdXNlIHRoaXMgaXMgbm90IHRoZSBsYXRlc3QgaG92ZXIgZXZlbnRcbiAgICAgICAgLy8gICByZXR1cm47XG4gICAgICAgIC8vIH1cbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7aGlnaGxpZ2h0ZWRPYmplY3Q6IHRoaXMuX2dldEhpZ2hsaWdodGVkT2JqZWN0KGluZm8pfSk7XG4gICAgICAgIGNvbnN0IHtvbkhvdmVyfSA9IHByb3BzO1xuICAgICAgICBpZiAob25Ib3Zlcikge1xuICAgICAgICAgIHRoaXMuX2dldEZsb3dtYXBMYXllclBpY2tpbmdJbmZvKGluZm8pLnRoZW4oKGluZm8pID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe3BpY2tpbmdJbmZvOiBpbmZvfSk7XG4gICAgICAgICAgICBvbkhvdmVyKGluZm8sIGV2ZW50KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIG9uQ2xpY2s6IChpbmZvOiBQaWNraW5nSW5mbzxhbnk+LCBldmVudDogU291cmNlRXZlbnQpID0+IHtcbiAgICAgICAgY29uc3Qge29uQ2xpY2t9ID0gcHJvcHM7XG4gICAgICAgIGlmIChvbkNsaWNrKSB7XG4gICAgICAgICAgdGhpcy5fZ2V0Rmxvd21hcExheWVyUGlja2luZ0luZm8oaW5mbykudGhlbigoaW5mbykgPT4ge1xuICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7cGlja2luZ0luZm86IGluZm99KTtcbiAgICAgICAgICAgIGlmIChpbmZvKSB7XG4gICAgICAgICAgICAgIG9uQ2xpY2soaW5mbywgZXZlbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgaW5pdGlhbGl6ZVN0YXRlKCkge1xuICAgIHRoaXMuc3RhdGUgPSB7XG4gICAgICBhY2Nlc3NvcnM6IG5ldyBGbG93bWFwQWdncmVnYXRlQWNjZXNzb3JzPEwsIEY+KHRoaXMucHJvcHMpLFxuICAgICAgZGF0YVByb3ZpZGVyOiB0aGlzLl9nZXRPck1ha2VEYXRhUHJvdmlkZXIoKSxcbiAgICAgIGxheWVyc0RhdGE6IHVuZGVmaW5lZCxcbiAgICAgIGhpZ2hsaWdodGVkT2JqZWN0OiB1bmRlZmluZWQsXG4gICAgICBwaWNraW5nSW5mbzogdW5kZWZpbmVkLFxuICAgIH07XG4gIH1cblxuICBnZXRQaWNraW5nSW5mbyh7aW5mb306IFJlY29yZDxzdHJpbmcsIGFueT4pIHtcbiAgICAvLyBUaGlzIGlzIGZvciBvbkhvdmVyIGV2ZW50IGhhbmRsZXJzIHNldCBvbiB0aGUgPERlY2tHTD4gY29tcG9uZW50XG4gICAgaWYgKCFpbmZvLm9iamVjdCkge1xuICAgICAgY29uc3Qgb2JqZWN0ID0gdGhpcy5zdGF0ZT8ucGlja2luZ0luZm8/Lm9iamVjdDtcbiAgICAgIGlmIChvYmplY3QpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5pbmZvLFxuICAgICAgICAgIG9iamVjdCxcbiAgICAgICAgICBwaWNrZWQ6IHRydWUsXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBpbmZvO1xuICB9XG5cbiAgcHJpdmF0ZSBfdXBkYXRlQWNjZXNzb3JzKCkge1xuICAgIHRoaXMuc3RhdGU/LmRhdGFQcm92aWRlcj8uc2V0QWNjZXNzb3JzKHRoaXMucHJvcHMpO1xuICAgIHRoaXMuc2V0U3RhdGUoe2FjY2Vzc29yczogbmV3IEZsb3dtYXBBZ2dyZWdhdGVBY2Nlc3NvcnModGhpcy5wcm9wcyl9KTtcbiAgfVxuXG4gIHByaXZhdGUgX2dldE9yTWFrZURhdGFQcm92aWRlcigpIHtcbiAgICBjb25zdCB7ZGF0YSwgZGF0YVByb3ZpZGVyfSA9IHRoaXMucHJvcHM7XG4gICAgaWYgKGlzRmxvd21hcERhdGFQcm92aWRlcjxMLCBGPihkYXRhUHJvdmlkZXI/LmRhdGFQcm92aWRlcikpIHtcbiAgICAgIHJldHVybiBkYXRhUHJvdmlkZXIuZGF0YVByb3ZpZGVyO1xuICAgIH0gZWxzZSBpZiAoaXNGbG93bWFwRGF0YTxMLCBGPihkYXRhKSkge1xuICAgICAgY29uc3QgZGF0YVByb3ZpZGVyID0gbmV3IExvY2FsRmxvd21hcERhdGFQcm92aWRlcjxMLCBGPih0aGlzLnByb3BzKTtcbiAgICAgIGRhdGFQcm92aWRlci5zZXRGbG93bWFwRGF0YShkYXRhKTtcbiAgICAgIHJldHVybiBkYXRhUHJvdmlkZXI7XG4gICAgfVxuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICdGbG93bWFwTGF5ZXI6IGRhdGEgbXVzdCBiZSBhIEZsb3dtYXBEYXRhUHJvdmlkZXIgb3IgRmxvd21hcERhdGEnLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIF91cGRhdGVEYXRhUHJvdmlkZXIoKSB7XG4gICAgdGhpcy5zZXRTdGF0ZSh7ZGF0YVByb3ZpZGVyOiB0aGlzLl9nZXRPck1ha2VEYXRhUHJvdmlkZXIoKX0pO1xuICB9XG5cbiAgc2hvdWxkVXBkYXRlU3RhdGUocGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KTogYm9vbGVhbiB7XG4gICAgY29uc3Qge2NoYW5nZUZsYWdzfSA9IHBhcmFtcztcbiAgICAvLyBpZiAodGhpcy5fdmlld3BvcnRDaGFuZ2VkKCkpIHtcbiAgICAvLyAgIHJldHVybiB0cnVlO1xuICAgIC8vIH1cbiAgICBpZiAoY2hhbmdlRmxhZ3Mudmlld3BvcnRDaGFuZ2VkKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIHN1cGVyLnNob3VsZFVwZGF0ZVN0YXRlKHBhcmFtcyk7XG4gICAgLy8gVE9ETzogYmUgc21hcnRlciBvbiB3aGVuIHRvIHVwZGF0ZVxuICAgIC8vIChlLmcuIGlnbm9yZSB2aWV3cG9ydCBjaGFuZ2VzIHdoZW4gYWRhcHRpdmVTY2FsZXNFbmFibGVkIGFuZCBjbHVzdGVyaW5nIGFyZSBmYWxzZSlcbiAgfVxuXG4gIHVwZGF0ZVN0YXRlKHtvbGRQcm9wcywgcHJvcHMsIGNoYW5nZUZsYWdzfTogUmVjb3JkPHN0cmluZywgYW55Pik6IHZvaWQge1xuICAgIGNvbnN0IHtkYXRhUHJvdmlkZXIsIGhpZ2hsaWdodGVkT2JqZWN0fSA9IHRoaXMuc3RhdGUgfHwge307XG4gICAgaWYgKCFkYXRhUHJvdmlkZXIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlRmxhZ3MucHJvcHNDaGFuZ2VkKSB7XG4gICAgICAvLyB0aGlzLl91cGRhdGVBY2Nlc3NvcnMoKTtcbiAgICB9XG4gICAgaWYgKGNoYW5nZUZsYWdzLmRhdGFDaGFuZ2VkKSB7XG4gICAgICB0aGlzLl91cGRhdGVEYXRhUHJvdmlkZXIoKTtcbiAgICB9XG4gICAgaWYgKGNoYW5nZUZsYWdzLnZpZXdwb3J0Q2hhbmdlZCB8fCBjaGFuZ2VGbGFncy5kYXRhQ2hhbmdlZCkge1xuICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgIGhpZ2hsaWdodGVkT2JqZWN0OiB1bmRlZmluZWQsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICBjaGFuZ2VGbGFncy52aWV3cG9ydENoYW5nZWQgfHxcbiAgICAgIGNoYW5nZUZsYWdzLnByb3BzT3JEYXRhQ2hhbmdlZCAvLyBUT0RPIGNhbiB3ZSBpZ25vcmUgYWNjZXNzb3IgcHJvcHMgY2hhbmdlcz9cbiAgICApIHtcbiAgICAgIGRhdGFQcm92aWRlci5zZXRGbG93bWFwU3RhdGUodGhpcy5fZ2V0Rmxvd21hcFN0YXRlKCkpO1xuICAgICAgKGFzeW5jICgpID0+IHtcbiAgICAgICAgY29uc3QgbGF5ZXJzRGF0YSA9IGF3YWl0IGRhdGFQcm92aWRlci5nZXRMYXllcnNEYXRhKCk7XG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe2xheWVyc0RhdGF9KTtcbiAgICAgIH0pKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0U2V0dGluZ3NTdGF0ZSgpIHtcbiAgICBjb25zdCB7XG4gICAgICBsb2NhdGlvblRvdGFsc0VuYWJsZWQsXG4gICAgICBhZGFwdGl2ZVNjYWxlc0VuYWJsZWQsXG4gICAgICBhbmltYXRpb25FbmFibGVkLFxuICAgICAgY2x1c3RlcmluZ0VuYWJsZWQsXG4gICAgICBjbHVzdGVyaW5nTGV2ZWwsXG4gICAgICBmYWRlRW5hYmxlZCxcbiAgICAgIGZhZGVPcGFjaXR5RW5hYmxlZCxcbiAgICAgIGNsdXN0ZXJpbmdBdXRvLFxuICAgICAgZGFya01vZGUsXG4gICAgICBmYWRlQW1vdW50LFxuICAgICAgY29sb3JTY2hlbWUsXG4gICAgICBoaWdobGlnaHRDb2xvcixcbiAgICAgIG1heFRvcEZsb3dzRGlzcGxheU51bSxcbiAgICB9ID0gdGhpcy5wcm9wcztcbiAgICByZXR1cm4ge1xuICAgICAgbG9jYXRpb25Ub3RhbHNFbmFibGVkLFxuICAgICAgYWRhcHRpdmVTY2FsZXNFbmFibGVkLFxuICAgICAgYW5pbWF0aW9uRW5hYmxlZCxcbiAgICAgIGNsdXN0ZXJpbmdFbmFibGVkLFxuICAgICAgY2x1c3RlcmluZ0xldmVsLFxuICAgICAgZmFkZUVuYWJsZWQsXG4gICAgICBmYWRlT3BhY2l0eUVuYWJsZWQsXG4gICAgICBjbHVzdGVyaW5nQXV0byxcbiAgICAgIGRhcmtNb2RlLFxuICAgICAgZmFkZUFtb3VudCxcbiAgICAgIGNvbG9yU2NoZW1lLFxuICAgICAgaGlnaGxpZ2h0Q29sb3IsXG4gICAgICBtYXhUb3BGbG93c0Rpc3BsYXlOdW0sXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgX2dldEZsb3dtYXBTdGF0ZSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdmlld3BvcnQ6IHBpY2tWaWV3cG9ydFByb3BzKHRoaXMuY29udGV4dC52aWV3cG9ydCksXG4gICAgICBmaWx0ZXJTdGF0ZToge1xuICAgICAgICBzZWxlY3RlZExvY2F0aW9uczogdW5kZWZpbmVkLFxuICAgICAgICBsb2NhdGlvbkZpbHRlck1vZGU6IExvY2F0aW9uRmlsdGVyTW9kZS5BTEwsXG4gICAgICAgIHNlbGVjdGVkVGltZVJhbmdlOiB1bmRlZmluZWQsXG4gICAgICB9LFxuICAgICAgc2V0dGluZ3NTdGF0ZTogdGhpcy5fZ2V0U2V0dGluZ3NTdGF0ZSgpLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIF9nZXRGbG93bWFwTGF5ZXJQaWNraW5nSW5mbyhcbiAgICBpbmZvOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LFxuICApOiBQcm9taXNlPEZsb3dtYXBMYXllclBpY2tpbmdJbmZvPEwsIEY+IHwgdW5kZWZpbmVkPiB7XG4gICAgY29uc3Qge2luZGV4LCBzb3VyY2VMYXllcn0gPSBpbmZvO1xuICAgIGNvbnN0IHtkYXRhUHJvdmlkZXIsIGFjY2Vzc29yc30gPSB0aGlzLnN0YXRlIHx8IHt9O1xuICAgIGlmICghZGF0YVByb3ZpZGVyIHx8ICFhY2Nlc3NvcnMpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGNvbnN0IGNvbW1vbkluZm8gPSB7XG4gICAgICAuLi5pbmZvLFxuICAgICAgcGlja2VkOiBpbmZvLnBpY2tlZCxcbiAgICAgIGxheWVyOiBpbmZvLmxheWVyLFxuICAgICAgaW5kZXg6IGluZm8uaW5kZXgsXG4gICAgICB4OiBpbmZvLngsXG4gICAgICB5OiBpbmZvLnksXG4gICAgICBjb29yZGluYXRlOiBpbmZvLmNvb3JkaW5hdGUsXG4gICAgICBldmVudDogaW5mby5ldmVudCxcbiAgICB9O1xuICAgIGlmIChcbiAgICAgIHNvdXJjZUxheWVyIGluc3RhbmNlb2YgRmxvd0xpbmVzTGF5ZXIgfHxcbiAgICAgIHNvdXJjZUxheWVyIGluc3RhbmNlb2YgQW5pbWF0ZWRGbG93TGluZXNMYXllclxuICAgICkge1xuICAgICAgY29uc3QgZmxvdyA9XG4gICAgICAgIGluZGV4ID09PSAtMSA/IHVuZGVmaW5lZCA6IGF3YWl0IGRhdGFQcm92aWRlci5nZXRGbG93QnlJbmRleChpbmRleCk7XG4gICAgICBpZiAoZmxvdykge1xuICAgICAgICBjb25zdCBvcmlnaW4gPSBhd2FpdCBkYXRhUHJvdmlkZXIuZ2V0TG9jYXRpb25CeUlkKFxuICAgICAgICAgIGFjY2Vzc29ycy5nZXRGbG93T3JpZ2luSWQoZmxvdyksXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IGRlc3QgPSBhd2FpdCBkYXRhUHJvdmlkZXIuZ2V0TG9jYXRpb25CeUlkKFxuICAgICAgICAgIGFjY2Vzc29ycy5nZXRGbG93RGVzdElkKGZsb3cpLFxuICAgICAgICApO1xuICAgICAgICBpZiAob3JpZ2luICYmIGRlc3QpIHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4uY29tbW9uSW5mbyxcbiAgICAgICAgICAgIG9iamVjdDoge1xuICAgICAgICAgICAgICB0eXBlOiBQaWNraW5nVHlwZS5GTE9XLFxuICAgICAgICAgICAgICBmbG93LFxuICAgICAgICAgICAgICBvcmlnaW46IG9yaWdpbixcbiAgICAgICAgICAgICAgZGVzdDogZGVzdCxcbiAgICAgICAgICAgICAgY291bnQ6IGFjY2Vzc29ycy5nZXRGbG93TWFnbml0dWRlKGZsb3cpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChzb3VyY2VMYXllciBpbnN0YW5jZW9mIEZsb3dDaXJjbGVzTGF5ZXIpIHtcbiAgICAgIGNvbnN0IGxvY2F0aW9uID1cbiAgICAgICAgaW5kZXggPT09IC0xID8gdW5kZWZpbmVkIDogYXdhaXQgZGF0YVByb3ZpZGVyLmdldExvY2F0aW9uQnlJbmRleChpbmRleCk7XG5cbiAgICAgIGlmIChsb2NhdGlvbikge1xuICAgICAgICBjb25zdCBpZCA9IGFjY2Vzc29ycy5nZXRMb2NhdGlvbklkKGxvY2F0aW9uKTtcbiAgICAgICAgY29uc3QgbmFtZSA9IGFjY2Vzc29ycy5nZXRMb2NhdGlvbk5hbWUobG9jYXRpb24pO1xuICAgICAgICBjb25zdCB0b3RhbHMgPSBhd2FpdCBkYXRhUHJvdmlkZXIuZ2V0VG90YWxzRm9yTG9jYXRpb24oaWQpO1xuICAgICAgICBjb25zdCB7Y2lyY2xlQXR0cmlidXRlc30gPSB0aGlzLnN0YXRlPy5sYXllcnNEYXRhIHx8IHt9O1xuICAgICAgICBpZiAodG90YWxzICYmIGNpcmNsZUF0dHJpYnV0ZXMpIHtcbiAgICAgICAgICBjb25zdCBjaXJjbGVSYWRpdXMgPSBnZXRPdXRlckNpcmNsZVJhZGl1c0J5SW5kZXgoXG4gICAgICAgICAgICBjaXJjbGVBdHRyaWJ1dGVzLFxuICAgICAgICAgICAgaW5mby5pbmRleCxcbiAgICAgICAgICApO1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi5jb21tb25JbmZvLFxuICAgICAgICAgICAgb2JqZWN0OiB7XG4gICAgICAgICAgICAgIHR5cGU6IFBpY2tpbmdUeXBlLkxPQ0FUSU9OLFxuICAgICAgICAgICAgICBsb2NhdGlvbixcbiAgICAgICAgICAgICAgaWQsXG4gICAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICAgIHRvdGFscyxcbiAgICAgICAgICAgICAgY2lyY2xlUmFkaXVzOiBjaXJjbGVSYWRpdXMsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0SGlnaGxpZ2h0ZWRPYmplY3QoXG4gICAgaW5mbzogUmVjb3JkPHN0cmluZywgYW55PixcbiAgKTogSGlnaGxpZ2h0ZWRPYmplY3QgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IHtpbmRleCwgc291cmNlTGF5ZXJ9ID0gaW5mbztcbiAgICBpZiAoaW5kZXggPCAwKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIGlmIChcbiAgICAgIHNvdXJjZUxheWVyIGluc3RhbmNlb2YgRmxvd0xpbmVzTGF5ZXIgfHxcbiAgICAgIHNvdXJjZUxheWVyIGluc3RhbmNlb2YgQW5pbWF0ZWRGbG93TGluZXNMYXllclxuICAgICkge1xuICAgICAgY29uc3Qge2xpbmVBdHRyaWJ1dGVzfSA9IHRoaXMuc3RhdGU/LmxheWVyc0RhdGEgfHwge307XG4gICAgICBpZiAobGluZUF0dHJpYnV0ZXMpIHtcbiAgICAgICAgbGV0IGF0dHJzID0gZ2V0Rmxvd0xpbmVBdHRyaWJ1dGVzQnlJbmRleChsaW5lQXR0cmlidXRlcywgaW5kZXgpO1xuICAgICAgICBpZiAodGhpcy5wcm9wcy5mYWRlT3BhY2l0eUVuYWJsZWQpIHtcbiAgICAgICAgICBhdHRycyA9IHtcbiAgICAgICAgICAgIC4uLmF0dHJzLFxuICAgICAgICAgICAgYXR0cmlidXRlczoge1xuICAgICAgICAgICAgICAuLi5hdHRycy5hdHRyaWJ1dGVzLFxuICAgICAgICAgICAgICBnZXRDb2xvcjoge1xuICAgICAgICAgICAgICAgIC4uLmF0dHJzLmF0dHJpYnV0ZXMuZ2V0Q29sb3IsXG4gICAgICAgICAgICAgICAgdmFsdWU6IG5ldyBVaW50OEFycmF5KFtcbiAgICAgICAgICAgICAgICAgIC4uLmF0dHJzLmF0dHJpYnV0ZXMuZ2V0Q29sb3IudmFsdWUuc2xpY2UoMCwgMyksXG4gICAgICAgICAgICAgICAgICAyNTUsIC8vIHRoZSBoaWdobGlnaHQgY29sb3Igc2hvdWxkIGJlIGFsd2F5cyBvcGFxdWVcbiAgICAgICAgICAgICAgICBdKSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHR5cGU6IEhpZ2hsaWdodFR5cGUuRkxPVyxcbiAgICAgICAgICBsaW5lQXR0cmlidXRlczogYXR0cnMsXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChzb3VyY2VMYXllciBpbnN0YW5jZW9mIEZsb3dDaXJjbGVzTGF5ZXIpIHtcbiAgICAgIGNvbnN0IHtjaXJjbGVBdHRyaWJ1dGVzfSA9IHRoaXMuc3RhdGU/LmxheWVyc0RhdGEgfHwge307XG4gICAgICBpZiAoY2lyY2xlQXR0cmlidXRlcykge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHR5cGU6IEhpZ2hsaWdodFR5cGUuTE9DQVRJT04sXG4gICAgICAgICAgY29vcmRzOiBnZXRMb2NhdGlvbkNvb3Jkc0J5SW5kZXgoY2lyY2xlQXR0cmlidXRlcywgaW5kZXgpLFxuICAgICAgICAgIHJhZGl1czogZ2V0T3V0ZXJDaXJjbGVSYWRpdXNCeUluZGV4KGNpcmNsZUF0dHJpYnV0ZXMsIGluZGV4KSxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIHJlbmRlckxheWVycygpOiBBcnJheTxhbnk+IHtcbiAgICBjb25zdCBsYXllcnMgPSBbXTtcbiAgICBpZiAodGhpcy5zdGF0ZT8ubGF5ZXJzRGF0YSkge1xuICAgICAgY29uc3Qge2xheWVyc0RhdGEsIGhpZ2hsaWdodGVkT2JqZWN0fSA9IHRoaXMuc3RhdGU7XG4gICAgICBjb25zdCB7Y2lyY2xlQXR0cmlidXRlcywgbGluZUF0dHJpYnV0ZXN9ID0gbGF5ZXJzRGF0YSB8fCB7fTtcbiAgICAgIGlmIChjaXJjbGVBdHRyaWJ1dGVzICYmIGxpbmVBdHRyaWJ1dGVzKSB7XG4gICAgICAgIGNvbnN0IGZsb3dtYXBDb2xvcnMgPSBnZXRGbG93bWFwQ29sb3JzKHRoaXMuX2dldFNldHRpbmdzU3RhdGUoKSk7XG4gICAgICAgIGNvbnN0IG91dGxpbmVDb2xvciA9IGNvbG9yQXNSZ2JhKFxuICAgICAgICAgIGZsb3dtYXBDb2xvcnMub3V0bGluZUNvbG9yIHx8ICh0aGlzLnByb3BzLmRhcmtNb2RlID8gJyMwMDAnIDogJyNmZmYnKSxcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgY29tbW9uTGluZUxheWVyUHJvcHMgPSB7XG4gICAgICAgICAgZGF0YTogbGluZUF0dHJpYnV0ZXMsXG4gICAgICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICAgICAgLi4udGhpcy5wcm9wcy5wYXJhbWV0ZXJzLFxuICAgICAgICAgICAgLy8gcHJldmVudCB6LWZpZ2h0aW5nIGF0IG5vbi16ZXJvIGJlYXJpbmcvcGl0Y2hcbiAgICAgICAgICAgIGRlcHRoVGVzdDogZmFsc2UsXG4gICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgICAgICAgaWYgKHRoaXMucHJvcHMuYW5pbWF0aW9uRW5hYmxlZCkge1xuICAgICAgICAgIGxheWVycy5wdXNoKFxuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgbmV3IEFuaW1hdGVkRmxvd0xpbmVzTGF5ZXIoe1xuICAgICAgICAgICAgICAuLi50aGlzLmdldFN1YkxheWVyUHJvcHMoe1xuICAgICAgICAgICAgICAgIC4uLmNvbW1vbkxpbmVMYXllclByb3BzLFxuICAgICAgICAgICAgICAgIGlkOiAnYW5pbWF0ZWQtZmxvdy1saW5lcycsXG4gICAgICAgICAgICAgICAgZHJhd091dGxpbmU6IGZhbHNlLFxuICAgICAgICAgICAgICAgIHRoaWNrbmVzc1VuaXQ6IDIwLFxuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbGF5ZXJzLnB1c2goXG4gICAgICAgICAgICBuZXcgRmxvd0xpbmVzTGF5ZXIoe1xuICAgICAgICAgICAgICAuLi50aGlzLmdldFN1YkxheWVyUHJvcHMoe1xuICAgICAgICAgICAgICAgIC4uLmNvbW1vbkxpbmVMYXllclByb3BzLFxuICAgICAgICAgICAgICAgIGlkOiAnZmxvdy1saW5lcycsXG4gICAgICAgICAgICAgICAgZHJhd091dGxpbmU6IHRydWUsXG4gICAgICAgICAgICAgICAgb3V0bGluZUNvbG9yOiBvdXRsaW5lQ29sb3IsXG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBsYXllcnMucHVzaChcbiAgICAgICAgICBuZXcgRmxvd0NpcmNsZXNMYXllcihcbiAgICAgICAgICAgIHRoaXMuZ2V0U3ViTGF5ZXJQcm9wcyh7XG4gICAgICAgICAgICAgIGlkOiAnY2lyY2xlcycsXG4gICAgICAgICAgICAgIGRhdGE6IGNpcmNsZUF0dHJpYnV0ZXMsXG4gICAgICAgICAgICAgIGVtcHR5Q29sb3I6IHRoaXMucHJvcHMuZGFya01vZGVcbiAgICAgICAgICAgICAgICA/IFswLCAwLCAwLCAyNTVdXG4gICAgICAgICAgICAgICAgOiBbMjU1LCAyNTUsIDI1NSwgMjU1XSxcbiAgICAgICAgICAgICAgb3V0bGluZUVtcHR5TWl4OiAwLjQsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICApLFxuICAgICAgICApO1xuICAgICAgICBpZiAoaGlnaGxpZ2h0ZWRPYmplY3QpIHtcbiAgICAgICAgICBzd2l0Y2ggKGhpZ2hsaWdodGVkT2JqZWN0LnR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgSGlnaGxpZ2h0VHlwZS5MT0NBVElPTjpcbiAgICAgICAgICAgICAgbGF5ZXJzLnB1c2goXG4gICAgICAgICAgICAgICAgbmV3IFNjYXR0ZXJwbG90TGF5ZXIoe1xuICAgICAgICAgICAgICAgICAgLi4udGhpcy5nZXRTdWJMYXllclByb3BzKHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6ICdsb2NhdGlvbi1oaWdobGlnaHQnLFxuICAgICAgICAgICAgICAgICAgICBkYXRhOiBbaGlnaGxpZ2h0ZWRPYmplY3RdLFxuICAgICAgICAgICAgICAgICAgICBwaWNrYWJsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIGFudGlhbGlhc2luZzogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgc3Ryb2tlZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgZmlsbGVkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgbGluZVdpZHRoVW5pdHM6ICdwaXhlbHMnLFxuICAgICAgICAgICAgICAgICAgICBnZXRMaW5lV2lkdGg6IDIsXG4gICAgICAgICAgICAgICAgICAgIHJhZGl1c1VuaXRzOiAncGl4ZWxzJyxcbiAgICAgICAgICAgICAgICAgICAgZ2V0UmFkaXVzOiAoZDogSGlnaGxpZ2h0ZWRMb2NhdGlvbk9iamVjdCkgPT4gZC5yYWRpdXMsXG4gICAgICAgICAgICAgICAgICAgIGdldExpbmVDb2xvcjogY29sb3JBc1JnYmEodGhpcy5wcm9wcy5oaWdobGlnaHRDb2xvciksXG4gICAgICAgICAgICAgICAgICAgIGdldFBvc2l0aW9uOiAoZDogSGlnaGxpZ2h0ZWRMb2NhdGlvbk9iamVjdCkgPT4gZC5jb29yZHMsXG4gICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIEhpZ2hsaWdodFR5cGUuRkxPVzpcbiAgICAgICAgICAgICAgbGF5ZXJzLnB1c2goXG4gICAgICAgICAgICAgICAgbmV3IEZsb3dMaW5lc0xheWVyKHtcbiAgICAgICAgICAgICAgICAgIC4uLnRoaXMuZ2V0U3ViTGF5ZXJQcm9wcyh7XG4gICAgICAgICAgICAgICAgICAgIGlkOiAnZmxvdy1oaWdobGlnaHQnLFxuICAgICAgICAgICAgICAgICAgICBkYXRhOiBoaWdobGlnaHRlZE9iamVjdC5saW5lQXR0cmlidXRlcyxcbiAgICAgICAgICAgICAgICAgICAgZHJhd091dGxpbmU6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIHBpY2thYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgb3V0bGluZUNvbG9yOiBjb2xvckFzUmdiYSh0aGlzLnByb3BzLmhpZ2hsaWdodENvbG9yKSxcbiAgICAgICAgICAgICAgICAgICAgb3V0bGluZVRoaWNrbmVzczogMSxcbiAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbGF5ZXJzO1xuICB9XG59XG5cbmZ1bmN0aW9uIHBpY2tWaWV3cG9ydFByb3BzKHZpZXdwb3J0OiBSZWNvcmQ8c3RyaW5nLCBhbnk+KTogVmlld3BvcnRQcm9wcyB7XG4gIGNvbnN0IHt3aWR0aCwgaGVpZ2h0LCBsb25naXR1ZGUsIGxhdGl0dWRlLCB6b29tLCBwaXRjaCwgYmVhcmluZ30gPSB2aWV3cG9ydDtcbiAgcmV0dXJuIHtcbiAgICB3aWR0aCxcbiAgICBoZWlnaHQsXG4gICAgbG9uZ2l0dWRlLFxuICAgIGxhdGl0dWRlLFxuICAgIHpvb20sXG4gICAgcGl0Y2gsXG4gICAgYmVhcmluZyxcbiAgfTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { default as AnimatedFlowLinesLayer } from './AnimatedFlowLinesLayer';
|
|
2
|
+
export { default as FlowLinesLayer } from './FlowLinesLayer';
|
|
3
|
+
export { default as FlowCirclesLayer } from './FlowCirclesLayer';
|
|
4
|
+
export { default as FlowmapLayer } from './FlowmapLayer';
|
|
5
|
+
export type { FlowmapLayerProps } from './FlowmapLayer';
|
|
6
|
+
export * from './types';
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,IAAI,sBAAsB,EAAC,MAAM,0BAA0B,CAAC;AAC3E,OAAO,EAAC,OAAO,IAAI,cAAc,EAAC,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAC,OAAO,IAAI,gBAAgB,EAAC,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAC,OAAO,IAAI,YAAY,EAAC,MAAM,gBAAgB,CAAC;AACvD,YAAY,EAAC,iBAAiB,EAAC,MAAM,gBAAgB,CAAC;AAEtD,cAAc,SAAS,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
+
}) : (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
o[k2] = m[k];
|
|
8
|
+
}));
|
|
9
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
10
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
11
|
+
};
|
|
12
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
13
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
14
|
+
};
|
|
15
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
|
+
exports.FlowmapLayer = exports.FlowCirclesLayer = exports.FlowLinesLayer = exports.AnimatedFlowLinesLayer = void 0;
|
|
17
|
+
var AnimatedFlowLinesLayer_1 = require("./AnimatedFlowLinesLayer");
|
|
18
|
+
Object.defineProperty(exports, "AnimatedFlowLinesLayer", { enumerable: true, get: function () { return __importDefault(AnimatedFlowLinesLayer_1).default; } });
|
|
19
|
+
var FlowLinesLayer_1 = require("./FlowLinesLayer");
|
|
20
|
+
Object.defineProperty(exports, "FlowLinesLayer", { enumerable: true, get: function () { return __importDefault(FlowLinesLayer_1).default; } });
|
|
21
|
+
var FlowCirclesLayer_1 = require("./FlowCirclesLayer");
|
|
22
|
+
Object.defineProperty(exports, "FlowCirclesLayer", { enumerable: true, get: function () { return __importDefault(FlowCirclesLayer_1).default; } });
|
|
23
|
+
var FlowmapLayer_1 = require("./FlowmapLayer");
|
|
24
|
+
Object.defineProperty(exports, "FlowmapLayer", { enumerable: true, get: function () { return __importDefault(FlowmapLayer_1).default; } });
|
|
25
|
+
__exportStar(require("./types"), exports);
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG1FQUEyRTtBQUFuRSxpSkFBQSxPQUFPLE9BQTBCO0FBQ3pDLG1EQUEyRDtBQUFuRCxpSUFBQSxPQUFPLE9BQWtCO0FBQ2pDLHVEQUErRDtBQUF2RCxxSUFBQSxPQUFPLE9BQW9CO0FBQ25DLCtDQUF1RDtBQUEvQyw2SEFBQSxPQUFPLE9BQWdCO0FBRy9CLDBDQUF3QiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7ZGVmYXVsdCBhcyBBbmltYXRlZEZsb3dMaW5lc0xheWVyfSBmcm9tICcuL0FuaW1hdGVkRmxvd0xpbmVzTGF5ZXInO1xuZXhwb3J0IHtkZWZhdWx0IGFzIEZsb3dMaW5lc0xheWVyfSBmcm9tICcuL0Zsb3dMaW5lc0xheWVyJztcbmV4cG9ydCB7ZGVmYXVsdCBhcyBGbG93Q2lyY2xlc0xheWVyfSBmcm9tICcuL0Zsb3dDaXJjbGVzTGF5ZXInO1xuZXhwb3J0IHtkZWZhdWx0IGFzIEZsb3dtYXBMYXllcn0gZnJvbSAnLi9GbG93bWFwTGF5ZXInO1xuZXhwb3J0IHR5cGUge0Zsb3dtYXBMYXllclByb3BzfSBmcm9tICcuL0Zsb3dtYXBMYXllcic7XG5cbmV4cG9ydCAqIGZyb20gJy4vdHlwZXMnO1xuIl19
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { AggregateFlow, ClusterNode, LocationTotals } from '@flowmap.gl/data';
|
|
2
|
+
export declare type LayerProps = Record<string, unknown>;
|
|
3
|
+
export declare enum PickingType {
|
|
4
|
+
LOCATION = "location",
|
|
5
|
+
FLOW = "flow"
|
|
6
|
+
}
|
|
7
|
+
export declare type DeckGLLayer = Record<string, any>;
|
|
8
|
+
export interface PickingInfo<T> {
|
|
9
|
+
layer: DeckGLLayer;
|
|
10
|
+
index: number;
|
|
11
|
+
picked: boolean;
|
|
12
|
+
object: T | undefined;
|
|
13
|
+
x: number;
|
|
14
|
+
y: number;
|
|
15
|
+
coordinate: [number, number];
|
|
16
|
+
event: MouseEvent | undefined;
|
|
17
|
+
}
|
|
18
|
+
export interface LocationPickingInfoObject<L> {
|
|
19
|
+
id: string;
|
|
20
|
+
type: PickingType.LOCATION;
|
|
21
|
+
location: L | ClusterNode;
|
|
22
|
+
name: string;
|
|
23
|
+
totals: LocationTotals;
|
|
24
|
+
circleRadius: number;
|
|
25
|
+
}
|
|
26
|
+
export declare type LocationPickingInfo<L> = PickingInfo<LocationPickingInfoObject<L>>;
|
|
27
|
+
export interface FlowPickingInfoObject<L, F> {
|
|
28
|
+
type: PickingType.FLOW;
|
|
29
|
+
flow: F | AggregateFlow;
|
|
30
|
+
origin: L | ClusterNode;
|
|
31
|
+
dest: L | ClusterNode;
|
|
32
|
+
count: number;
|
|
33
|
+
}
|
|
34
|
+
export declare type FlowPickingInfo<L, F> = PickingInfo<FlowPickingInfoObject<L, F>>;
|
|
35
|
+
export declare type FlowmapLayerPickingInfo<L, F> = LocationPickingInfo<L> | FlowPickingInfo<L, F>;
|
|
36
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EAEb,WAAW,EACX,cAAc,EACf,MAAM,kBAAkB,CAAC;AAE1B,oBAAY,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEjD,oBAAY,WAAW;IACrB,QAAQ,aAAa;IACrB,IAAI,SAAS;CAEd;AAED,oBAAY,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAE9C,MAAM,WAAW,WAAW,CAAC,CAAC;IAC5B,KAAK,EAAE,WAAW,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,CAAC,GAAG,SAAS,CAAC;IACtB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,KAAK,EAAE,UAAU,GAAG,SAAS,CAAC;CAC/B;AAED,MAAM,WAAW,yBAAyB,CAAC,CAAC;IAC1C,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,WAAW,CAAC,QAAQ,CAAC;IAC3B,QAAQ,EAAE,CAAC,GAAG,WAAW,CAAC;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,cAAc,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,oBAAY,mBAAmB,CAAC,CAAC,IAAI,WAAW,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC,CAAC;AAE/E,MAAM,WAAW,qBAAqB,CAAC,CAAC,EAAE,CAAC;IACzC,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC;IACvB,IAAI,EAAE,CAAC,GAAG,aAAa,CAAC;IACxB,MAAM,EAAE,CAAC,GAAG,WAAW,CAAC;IACxB,IAAI,EAAE,CAAC,GAAG,WAAW,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,oBAAY,eAAe,CAAC,CAAC,EAAE,CAAC,IAAI,WAAW,CAAC,qBAAqB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAO7E,oBAAY,uBAAuB,CAAC,CAAC,EAAE,CAAC,IACpC,mBAAmB,CAAC,CAAC,CAAC,GAEtB,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC"}
|