@flowmap.gl/data 8.0.0-alpha.1 → 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.
Files changed (97) hide show
  1. package/dist/FlowmapAggregateAccessors.d.ts +16 -0
  2. package/dist/FlowmapAggregateAccessors.d.ts.map +1 -0
  3. package/dist/FlowmapAggregateAccessors.js +46 -0
  4. package/dist/FlowmapSelectors.d.ts +188 -0
  5. package/dist/FlowmapSelectors.d.ts.map +1 -0
  6. package/dist/FlowmapSelectors.js +863 -0
  7. package/dist/FlowmapState.d.ts +27 -0
  8. package/dist/FlowmapState.d.ts.map +1 -0
  9. package/dist/FlowmapState.js +2 -0
  10. package/dist/cluster/cluster.d.ts.map +1 -1
  11. package/dist/cluster/cluster.js +8 -5
  12. package/dist/colors.d.ts +7 -7
  13. package/dist/colors.d.ts.map +1 -1
  14. package/dist/colors.js +55 -20
  15. package/dist/getViewStateForLocations.d.ts +18 -11
  16. package/dist/getViewStateForLocations.d.ts.map +1 -1
  17. package/dist/getViewStateForLocations.js +23 -20
  18. package/dist/index.d.ts +6 -6
  19. package/dist/index.js +6 -6
  20. package/dist/provider/FlowmapDataProvider.d.ts +16 -0
  21. package/dist/provider/FlowmapDataProvider.d.ts.map +1 -0
  22. package/dist/provider/FlowmapDataProvider.js +17 -0
  23. package/dist/provider/LocalFlowmapDataProvider.d.ts +20 -0
  24. package/dist/provider/LocalFlowmapDataProvider.d.ts.map +1 -0
  25. package/dist/provider/LocalFlowmapDataProvider.js +98 -0
  26. package/dist/types.d.ts +6 -4
  27. package/dist/types.d.ts.map +1 -1
  28. package/dist/types.js +1 -1
  29. package/dist/util.d.ts +0 -1
  30. package/dist/util.d.ts.map +1 -1
  31. package/dist/util.js +1 -4
  32. package/dist-es5/FlowmapAggregateAccessors.d.ts +16 -0
  33. package/dist-es5/FlowmapAggregateAccessors.d.ts.map +1 -0
  34. package/dist-es5/FlowmapAggregateAccessors.js +57 -0
  35. package/{dist/FlowMapSelectors.d.ts → dist-es5/FlowmapSelectors.d.ts} +55 -49
  36. package/dist-es5/FlowmapSelectors.d.ts.map +1 -0
  37. package/dist-es5/FlowmapSelectors.js +1507 -0
  38. package/{dist/FlowMapState.d.ts → dist-es5/FlowmapState.d.ts} +6 -3
  39. package/dist-es5/FlowmapState.d.ts.map +1 -0
  40. package/dist-es5/FlowmapState.js +3 -0
  41. package/dist-es5/cluster/ClusterIndex.d.ts +42 -0
  42. package/dist-es5/cluster/ClusterIndex.d.ts.map +1 -0
  43. package/dist-es5/cluster/ClusterIndex.js +297 -0
  44. package/dist-es5/cluster/cluster.d.ts +31 -0
  45. package/dist-es5/cluster/cluster.d.ts.map +1 -0
  46. package/dist-es5/cluster/cluster.js +266 -0
  47. package/dist-es5/colors.d.ts +103 -0
  48. package/dist-es5/colors.d.ts.map +1 -0
  49. package/dist-es5/colors.js +510 -0
  50. package/dist-es5/getViewStateForLocations.d.ts +23 -0
  51. package/dist-es5/getViewStateForLocations.d.ts.map +1 -0
  52. package/dist-es5/getViewStateForLocations.js +64 -0
  53. package/dist-es5/index.d.ts +11 -0
  54. package/dist-es5/index.d.ts.map +1 -0
  55. package/dist-es5/index.js +28 -0
  56. package/dist-es5/provider/FlowmapDataProvider.d.ts +16 -0
  57. package/dist-es5/provider/FlowmapDataProvider.d.ts.map +1 -0
  58. package/dist-es5/provider/FlowmapDataProvider.js +22 -0
  59. package/dist-es5/provider/LocalFlowmapDataProvider.d.ts +20 -0
  60. package/dist-es5/provider/LocalFlowmapDataProvider.d.ts.map +1 -0
  61. package/dist-es5/provider/LocalFlowmapDataProvider.js +154 -0
  62. package/dist-es5/time.d.ts +24 -0
  63. package/dist-es5/time.d.ts.map +1 -0
  64. package/dist-es5/time.js +168 -0
  65. package/dist-es5/types.d.ts +118 -0
  66. package/dist-es5/types.d.ts.map +1 -0
  67. package/dist-es5/types.js +29 -0
  68. package/dist-es5/util.d.ts +5 -0
  69. package/dist-es5/util.d.ts.map +1 -0
  70. package/dist-es5/util.js +14 -0
  71. package/package.json +7 -5
  72. package/src/{FlowMapAggregateAccessors.ts → FlowmapAggregateAccessors.ts} +14 -9
  73. package/src/{FlowMapSelectors.ts → FlowmapSelectors.ts} +213 -178
  74. package/src/{FlowMapState.ts → FlowmapState.ts} +5 -2
  75. package/src/cluster/cluster.ts +7 -4
  76. package/src/colors.ts +65 -21
  77. package/src/getViewStateForLocations.ts +41 -35
  78. package/src/index.ts +6 -6
  79. package/src/provider/{FlowMapDataProvider.ts → FlowmapDataProvider.ts} +14 -12
  80. package/src/provider/LocalFlowmapDataProvider.ts +122 -0
  81. package/src/types.ts +6 -4
  82. package/src/util.ts +0 -4
  83. package/tsconfig.es5.json +11 -0
  84. package/dist/FlowMapAggregateAccessors.d.ts +0 -15
  85. package/dist/FlowMapAggregateAccessors.d.ts.map +0 -1
  86. package/dist/FlowMapAggregateAccessors.js +0 -43
  87. package/dist/FlowMapSelectors.d.ts.map +0 -1
  88. package/dist/FlowMapSelectors.js +0 -834
  89. package/dist/FlowMapState.d.ts.map +0 -1
  90. package/dist/FlowMapState.js +0 -2
  91. package/dist/provider/FlowMapDataProvider.d.ts +0 -16
  92. package/dist/provider/FlowMapDataProvider.d.ts.map +0 -1
  93. package/dist/provider/FlowMapDataProvider.js +0 -17
  94. package/dist/provider/LocalFlowMapDataProvider.d.ts +0 -20
  95. package/dist/provider/LocalFlowMapDataProvider.d.ts.map +0 -1
  96. package/dist/provider/LocalFlowMapDataProvider.js +0 -87
  97. package/src/provider/LocalFlowMapDataProvider.ts +0 -105
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __read = (this && this.__read) || function (o, n) {
14
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
15
+ if (!m) return o;
16
+ var i = m.call(o), r, ar = [], e;
17
+ try {
18
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
19
+ }
20
+ catch (error) { e = { error: error }; }
21
+ finally {
22
+ try {
23
+ if (r && !r.done && (m = i["return"])) m.call(i);
24
+ }
25
+ finally { if (e) throw e.error; }
26
+ }
27
+ return ar;
28
+ };
29
+ Object.defineProperty(exports, "__esModule", { value: true });
30
+ exports.getViewStateForLocations = exports.getViewStateForFeatures = void 0;
31
+ var d3_geo_1 = require("d3-geo");
32
+ var web_mercator_1 = require("@math.gl/web-mercator");
33
+ function getViewStateForFeatures(featureCollection, size, opts) {
34
+ var _a = opts || {}, _b = _a.pad, pad = _b === void 0 ? 0.05 : _b, _c = _a.maxZoom, maxZoom = _c === void 0 ? 100 : _c;
35
+ var bounds = (0, d3_geo_1.geoBounds)(featureCollection);
36
+ var _d = __read(bounds, 2), _e = __read(_d[0], 2), x1 = _e[0], y1 = _e[1], _f = __read(_d[1], 2), x2 = _f[0], y2 = _f[1];
37
+ var paddedBounds = pad
38
+ ? [
39
+ [x1 - pad * (x2 - x1), y1 - pad * (y2 - y1)],
40
+ [x2 + pad * (x2 - x1), y2 + pad * (y2 - y1)],
41
+ ]
42
+ : bounds;
43
+ var _g = __read(size, 2), width = _g[0], height = _g[1];
44
+ return __assign(__assign({}, (0, web_mercator_1.fitBounds)({
45
+ width: width,
46
+ height: height,
47
+ bounds: paddedBounds,
48
+ padding: opts === null || opts === void 0 ? void 0 : opts.padding,
49
+ // minZoom,
50
+ maxZoom: maxZoom,
51
+ })), { width: width, height: height, bearing: 0, pitch: 0 });
52
+ }
53
+ exports.getViewStateForFeatures = getViewStateForFeatures;
54
+ function getViewStateForLocations(locations, getLocationCoords, size, opts) {
55
+ return getViewStateForFeatures({
56
+ type: 'GeometryCollection',
57
+ geometries: locations.map(function (location) { return ({
58
+ type: 'Point',
59
+ coordinates: getLocationCoords(location),
60
+ }); }),
61
+ }, size, opts);
62
+ }
63
+ exports.getViewStateForLocations = getViewStateForLocations;
64
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0Vmlld1N0YXRlRm9yTG9jYXRpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2dldFZpZXdTdGF0ZUZvckxvY2F0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxpQ0FBaUM7QUFDakMsc0RBQWdEO0FBa0JoRCxTQUFnQix1QkFBdUIsQ0FDckMsaUJBRXNCLEVBQ3RCLElBQXNCLEVBQ3RCLElBQTBCO0lBRXBCLElBQUEsS0FBOEIsSUFBSSxJQUFJLEVBQUUsRUFBdkMsV0FBVSxFQUFWLEdBQUcsbUJBQUcsSUFBSSxLQUFBLEVBQUUsZUFBYSxFQUFiLE9BQU8sbUJBQUcsR0FBRyxLQUFjLENBQUM7SUFDL0MsSUFBTSxNQUFNLEdBQUcsSUFBQSxrQkFBUyxFQUFDLGlCQUF3QixDQUFDLENBQUM7SUFDN0MsSUFBQSxLQUFBLE9BQXVCLE1BQU0sSUFBQSxFQUE1QixLQUFBLGdCQUFRLEVBQVAsRUFBRSxRQUFBLEVBQUUsRUFBRSxRQUFBLEVBQUcsS0FBQSxnQkFBUSxFQUFQLEVBQUUsUUFBQSxFQUFFLEVBQUUsUUFBVyxDQUFDO0lBQ3BDLElBQU0sWUFBWSxHQUF5QyxHQUFHO1FBQzVELENBQUMsQ0FBQztZQUNFLENBQUMsRUFBRSxHQUFHLEdBQUcsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLEdBQUcsR0FBRyxHQUFHLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO1lBQzVDLENBQUMsRUFBRSxHQUFHLEdBQUcsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLEdBQUcsR0FBRyxHQUFHLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO1NBQzdDO1FBQ0gsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUNMLElBQUEsS0FBQSxPQUFrQixJQUFJLElBQUEsRUFBckIsS0FBSyxRQUFBLEVBQUUsTUFBTSxRQUFRLENBQUM7SUFDN0IsNkJBQ0ssSUFBQSx3QkFBUyxFQUFDO1FBQ1gsS0FBSyxPQUFBO1FBQ0wsTUFBTSxRQUFBO1FBQ04sTUFBTSxFQUFFLFlBQVk7UUFDcEIsT0FBTyxFQUFFLElBQUksYUFBSixJQUFJLHVCQUFKLElBQUksQ0FBRSxPQUFPO1FBQ3RCLFdBQVc7UUFDWCxPQUFPLFNBQUE7S0FDUixDQUFDLEtBQ0YsS0FBSyxPQUFBLEVBQ0wsTUFBTSxRQUFBLEVBQ04sT0FBTyxFQUFFLENBQUMsRUFDVixLQUFLLEVBQUUsQ0FBQyxJQUNSO0FBQ0osQ0FBQztBQS9CRCwwREErQkM7QUFFRCxTQUFnQix3QkFBd0IsQ0FDdEMsU0FBZ0IsRUFDaEIsaUJBQXNELEVBQ3RELElBQXNCLEVBQ3RCLElBQTBCO0lBRTFCLE9BQU8sdUJBQXVCLENBQzVCO1FBQ0UsSUFBSSxFQUFFLG9CQUFvQjtRQUMxQixVQUFVLEVBQUUsU0FBUyxDQUFDLEdBQUcsQ0FBQyxVQUFDLFFBQVEsSUFBSyxPQUFBLENBQUM7WUFDdkMsSUFBSSxFQUFFLE9BQU87WUFDYixXQUFXLEVBQUUsaUJBQWlCLENBQUMsUUFBUSxDQUFDO1NBQ3pDLENBQUMsRUFIc0MsQ0FHdEMsQ0FBQztLQUNHLEVBQ1IsSUFBSSxFQUNKLElBQUksQ0FDTCxDQUFDO0FBQ0osQ0FBQztBQWpCRCw0REFpQkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2dlb0JvdW5kc30gZnJvbSAnZDMtZ2VvJztcbmltcG9ydCB7Zml0Qm91bmRzfSBmcm9tICdAbWF0aC5nbC93ZWItbWVyY2F0b3InO1xuaW1wb3J0IHR5cGUge1xuICBGZWF0dXJlQ29sbGVjdGlvbixcbiAgR2VvbWV0cnlDb2xsZWN0aW9uLFxuICBHZW9tZXRyeU9iamVjdCxcbn0gZnJvbSAnZ2VvanNvbic7XG5pbXBvcnQgdHlwZSB7Vmlld1N0YXRlfSBmcm9tICcuL3R5cGVzJztcblxuZXhwb3J0IHR5cGUgTG9jYXRpb25Qcm9wZXJ0aWVzID0gYW55O1xuXG5leHBvcnQgdHlwZSBHZXRWaWV3U3RhdGVPcHRpb25zID0ge1xuICBwYWQ/OiBudW1iZXI7IC8vIHNpemUgcmF0aW9cbiAgcGFkZGluZz86IHt0b3A6IG51bWJlcjsgYm90dG9tOiBudW1iZXI7IGxlZnQ6IG51bWJlcjsgcmlnaHQ6IG51bWJlcn07XG4gIHRpbGVTaXplPzogbnVtYmVyO1xuICAvLyBtaW5ab29tPzogbnVtYmVyOyAgLy8gbm90IHN1cHBvcnRlZCBieSBmaXRCb3VuZHNcbiAgbWF4Wm9vbT86IG51bWJlcjtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRWaWV3U3RhdGVGb3JGZWF0dXJlcyhcbiAgZmVhdHVyZUNvbGxlY3Rpb246XG4gICAgfCBGZWF0dXJlQ29sbGVjdGlvbjxHZW9tZXRyeU9iamVjdCwgTG9jYXRpb25Qcm9wZXJ0aWVzPlxuICAgIHwgR2VvbWV0cnlDb2xsZWN0aW9uLFxuICBzaXplOiBbbnVtYmVyLCBudW1iZXJdLFxuICBvcHRzPzogR2V0Vmlld1N0YXRlT3B0aW9ucyxcbik6IFZpZXdTdGF0ZSAmIHt3aWR0aDogbnVtYmVyOyBoZWlnaHQ6IG51bWJlcn0ge1xuICBjb25zdCB7cGFkID0gMC4wNSwgbWF4Wm9vbSA9IDEwMH0gPSBvcHRzIHx8IHt9O1xuICBjb25zdCBib3VuZHMgPSBnZW9Cb3VuZHMoZmVhdHVyZUNvbGxlY3Rpb24gYXMgYW55KTtcbiAgY29uc3QgW1t4MSwgeTFdLCBbeDIsIHkyXV0gPSBib3VuZHM7XG4gIGNvbnN0IHBhZGRlZEJvdW5kczogW1tudW1iZXIsIG51bWJlcl0sIFtudW1iZXIsIG51bWJlcl1dID0gcGFkXG4gICAgPyBbXG4gICAgICAgIFt4MSAtIHBhZCAqICh4MiAtIHgxKSwgeTEgLSBwYWQgKiAoeTIgLSB5MSldLFxuICAgICAgICBbeDIgKyBwYWQgKiAoeDIgLSB4MSksIHkyICsgcGFkICogKHkyIC0geTEpXSxcbiAgICAgIF1cbiAgICA6IGJvdW5kcztcbiAgY29uc3QgW3dpZHRoLCBoZWlnaHRdID0gc2l6ZTtcbiAgcmV0dXJuIHtcbiAgICAuLi5maXRCb3VuZHMoe1xuICAgICAgd2lkdGgsXG4gICAgICBoZWlnaHQsXG4gICAgICBib3VuZHM6IHBhZGRlZEJvdW5kcyxcbiAgICAgIHBhZGRpbmc6IG9wdHM/LnBhZGRpbmcsXG4gICAgICAvLyBtaW5ab29tLFxuICAgICAgbWF4Wm9vbSxcbiAgICB9KSxcbiAgICB3aWR0aCxcbiAgICBoZWlnaHQsXG4gICAgYmVhcmluZzogMCxcbiAgICBwaXRjaDogMCxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFZpZXdTdGF0ZUZvckxvY2F0aW9ucyhcbiAgbG9jYXRpb25zOiBhbnlbXSxcbiAgZ2V0TG9jYXRpb25Db29yZHM6IChsb2NhdGlvbjogYW55KSA9PiBbbnVtYmVyLCBudW1iZXJdLFxuICBzaXplOiBbbnVtYmVyLCBudW1iZXJdLFxuICBvcHRzPzogR2V0Vmlld1N0YXRlT3B0aW9ucyxcbik6IFZpZXdTdGF0ZSAmIHt3aWR0aDogbnVtYmVyOyBoZWlnaHQ6IG51bWJlcn0ge1xuICByZXR1cm4gZ2V0Vmlld1N0YXRlRm9yRmVhdHVyZXMoXG4gICAge1xuICAgICAgdHlwZTogJ0dlb21ldHJ5Q29sbGVjdGlvbicsXG4gICAgICBnZW9tZXRyaWVzOiBsb2NhdGlvbnMubWFwKChsb2NhdGlvbikgPT4gKHtcbiAgICAgICAgdHlwZTogJ1BvaW50JyxcbiAgICAgICAgY29vcmRpbmF0ZXM6IGdldExvY2F0aW9uQ29vcmRzKGxvY2F0aW9uKSxcbiAgICAgIH0pKSxcbiAgICB9IGFzIGFueSxcbiAgICBzaXplLFxuICAgIG9wdHMsXG4gICk7XG59XG4iXX0=
@@ -0,0 +1,11 @@
1
+ export * from './types';
2
+ export * from './colors';
3
+ export * from './FlowmapState';
4
+ export * from './FlowmapSelectors';
5
+ export * from './time';
6
+ export * from './getViewStateForLocations';
7
+ export * from './provider/FlowmapDataProvider';
8
+ export { default as FlowmapAggregateAccessors } from './FlowmapAggregateAccessors';
9
+ export type { default as FlowmapDataProvider } from './provider/FlowmapDataProvider';
10
+ export { default as LocalFlowmapDataProvider } from './provider/LocalFlowmapDataProvider';
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,QAAQ,CAAC;AACvB,cAAc,4BAA4B,CAAC;AAC3C,cAAc,gCAAgC,CAAC;AAC/C,OAAO,EAAC,OAAO,IAAI,yBAAyB,EAAC,MAAM,6BAA6B,CAAC;AACjF,YAAY,EAAC,OAAO,IAAI,mBAAmB,EAAC,MAAM,gCAAgC,CAAC;AACnF,OAAO,EAAC,OAAO,IAAI,wBAAwB,EAAC,MAAM,qCAAqC,CAAC"}
@@ -0,0 +1,28 @@
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.LocalFlowmapDataProvider = exports.FlowmapAggregateAccessors = void 0;
17
+ __exportStar(require("./types"), exports);
18
+ __exportStar(require("./colors"), exports);
19
+ __exportStar(require("./FlowmapState"), exports);
20
+ __exportStar(require("./FlowmapSelectors"), exports);
21
+ __exportStar(require("./time"), exports);
22
+ __exportStar(require("./getViewStateForLocations"), exports);
23
+ __exportStar(require("./provider/FlowmapDataProvider"), exports);
24
+ var FlowmapAggregateAccessors_1 = require("./FlowmapAggregateAccessors");
25
+ Object.defineProperty(exports, "FlowmapAggregateAccessors", { enumerable: true, get: function () { return __importDefault(FlowmapAggregateAccessors_1).default; } });
26
+ var LocalFlowmapDataProvider_1 = require("./provider/LocalFlowmapDataProvider");
27
+ Object.defineProperty(exports, "LocalFlowmapDataProvider", { enumerable: true, get: function () { return __importDefault(LocalFlowmapDataProvider_1).default; } });
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDBDQUF3QjtBQUN4QiwyQ0FBeUI7QUFDekIsaURBQStCO0FBQy9CLHFEQUFtQztBQUNuQyx5Q0FBdUI7QUFDdkIsNkRBQTJDO0FBQzNDLGlFQUErQztBQUMvQyx5RUFBaUY7QUFBekUsdUpBQUEsT0FBTyxPQUE2QjtBQUU1QyxnRkFBd0Y7QUFBaEYscUpBQUEsT0FBTyxPQUE0QiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vdHlwZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb2xvcnMnO1xuZXhwb3J0ICogZnJvbSAnLi9GbG93bWFwU3RhdGUnO1xuZXhwb3J0ICogZnJvbSAnLi9GbG93bWFwU2VsZWN0b3JzJztcbmV4cG9ydCAqIGZyb20gJy4vdGltZSc7XG5leHBvcnQgKiBmcm9tICcuL2dldFZpZXdTdGF0ZUZvckxvY2F0aW9ucyc7XG5leHBvcnQgKiBmcm9tICcuL3Byb3ZpZGVyL0Zsb3dtYXBEYXRhUHJvdmlkZXInO1xuZXhwb3J0IHtkZWZhdWx0IGFzIEZsb3dtYXBBZ2dyZWdhdGVBY2Nlc3NvcnN9IGZyb20gJy4vRmxvd21hcEFnZ3JlZ2F0ZUFjY2Vzc29ycyc7XG5leHBvcnQgdHlwZSB7ZGVmYXVsdCBhcyBGbG93bWFwRGF0YVByb3ZpZGVyfSBmcm9tICcuL3Byb3ZpZGVyL0Zsb3dtYXBEYXRhUHJvdmlkZXInO1xuZXhwb3J0IHtkZWZhdWx0IGFzIExvY2FsRmxvd21hcERhdGFQcm92aWRlcn0gZnJvbSAnLi9wcm92aWRlci9Mb2NhbEZsb3dtYXBEYXRhUHJvdmlkZXInO1xuIl19
@@ -0,0 +1,16 @@
1
+ import { AggregateFlow, Cluster, LocationTotals } from '..';
2
+ import { FlowmapState } from '../FlowmapState';
3
+ import { ClusterNode, FlowmapData, FlowmapDataAccessors, LayersData, ViewportProps } from '../types';
4
+ export default interface FlowmapDataProvider<L, F> {
5
+ setAccessors(accessors: FlowmapDataAccessors<L, F>): void;
6
+ setFlowmapState(flowmapState: FlowmapState): Promise<void>;
7
+ getViewportForLocations(dims: [number, number]): Promise<ViewportProps | undefined>;
8
+ getFlowByIndex(index: number): Promise<F | AggregateFlow | undefined>;
9
+ getLocationById(id: string): Promise<L | Cluster | undefined>;
10
+ getLocationByIndex(idx: number): Promise<L | ClusterNode | undefined>;
11
+ getTotalsForLocation(id: string): Promise<LocationTotals | undefined>;
12
+ getLayersData(): Promise<LayersData | undefined>;
13
+ }
14
+ export declare function isFlowmapData<L, F>(data: Record<string, any>): data is FlowmapData<L, F>;
15
+ export declare function isFlowmapDataProvider<L, F>(dataProvider: Record<string, any>): dataProvider is FlowmapDataProvider<L, F>;
16
+ //# sourceMappingURL=FlowmapDataProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FlowmapDataProvider.d.ts","sourceRoot":"","sources":["../../src/provider/FlowmapDataProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,EAAE,OAAO,EAAqB,cAAc,EAAC,MAAM,IAAI,CAAC;AAC7E,OAAO,EAAC,YAAY,EAAC,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EACL,WAAW,EACX,WAAW,EACX,oBAAoB,EACpB,UAAU,EACV,aAAa,EACd,MAAM,UAAU,CAAC;AAElB,MAAM,CAAC,OAAO,WAAW,mBAAmB,CAAC,CAAC,EAAE,CAAC;IAC/C,YAAY,CAAC,SAAS,EAAE,oBAAoB,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC;IAE1D,eAAe,CAAC,YAAY,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAI3D,uBAAuB,CACrB,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,GACrB,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC,CAAC;IAItC,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,aAAa,GAAG,SAAS,CAAC,CAAC;IAEtE,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,OAAO,GAAG,SAAS,CAAC,CAAC;IAE9D,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,WAAW,GAAG,SAAS,CAAC,CAAC;IAEtE,oBAAoB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC,CAAC;IAQtE,aAAa,IAAI,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,CAAC;CAClD;AAED,wBAAgB,aAAa,CAAC,CAAC,EAAE,CAAC,EAChC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GACxB,IAAI,IAAI,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAQ3B;AAED,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,CAAC,EACxC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAChC,YAAY,IAAI,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC,CAU3C"}
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isFlowmapDataProvider = exports.isFlowmapData = void 0;
4
+ function isFlowmapData(data) {
5
+ return (data &&
6
+ data.locations &&
7
+ data.flows &&
8
+ Array.isArray(data.locations) &&
9
+ Array.isArray(data.flows));
10
+ }
11
+ exports.isFlowmapData = isFlowmapData;
12
+ function isFlowmapDataProvider(dataProvider) {
13
+ return (dataProvider &&
14
+ typeof dataProvider.setFlowmapState === 'function' &&
15
+ typeof dataProvider.getViewportForLocations === 'function' &&
16
+ typeof dataProvider.getFlowByIndex === 'function' &&
17
+ typeof dataProvider.getLocationById === 'function' &&
18
+ typeof dataProvider.getLocationByIndex === 'function' &&
19
+ typeof dataProvider.getLayersData === 'function');
20
+ }
21
+ exports.isFlowmapDataProvider = isFlowmapDataProvider;
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmxvd21hcERhdGFQcm92aWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wcm92aWRlci9GbG93bWFwRGF0YVByb3ZpZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQXdDQSxTQUFnQixhQUFhLENBQzNCLElBQXlCO0lBRXpCLE9BQU8sQ0FDTCxJQUFJO1FBQ0osSUFBSSxDQUFDLFNBQVM7UUFDZCxJQUFJLENBQUMsS0FBSztRQUNWLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQztRQUM3QixLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FDMUIsQ0FBQztBQUNKLENBQUM7QUFWRCxzQ0FVQztBQUVELFNBQWdCLHFCQUFxQixDQUNuQyxZQUFpQztJQUVqQyxPQUFPLENBQ0wsWUFBWTtRQUNaLE9BQU8sWUFBWSxDQUFDLGVBQWUsS0FBSyxVQUFVO1FBQ2xELE9BQU8sWUFBWSxDQUFDLHVCQUF1QixLQUFLLFVBQVU7UUFDMUQsT0FBTyxZQUFZLENBQUMsY0FBYyxLQUFLLFVBQVU7UUFDakQsT0FBTyxZQUFZLENBQUMsZUFBZSxLQUFLLFVBQVU7UUFDbEQsT0FBTyxZQUFZLENBQUMsa0JBQWtCLEtBQUssVUFBVTtRQUNyRCxPQUFPLFlBQVksQ0FBQyxhQUFhLEtBQUssVUFBVSxDQUNqRCxDQUFDO0FBQ0osQ0FBQztBQVpELHNEQVlDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBZ2dyZWdhdGVGbG93LCBDbHVzdGVyLCBMb2NhdGlvbkFjY2Vzc29ycywgTG9jYXRpb25Ub3RhbHN9IGZyb20gJy4uJztcbmltcG9ydCB7Rmxvd21hcFN0YXRlfSBmcm9tICcuLi9GbG93bWFwU3RhdGUnO1xuaW1wb3J0IHtcbiAgQ2x1c3Rlck5vZGUsXG4gIEZsb3dtYXBEYXRhLFxuICBGbG93bWFwRGF0YUFjY2Vzc29ycyxcbiAgTGF5ZXJzRGF0YSxcbiAgVmlld3BvcnRQcm9wcyxcbn0gZnJvbSAnLi4vdHlwZXMnO1xuXG5leHBvcnQgZGVmYXVsdCBpbnRlcmZhY2UgRmxvd21hcERhdGFQcm92aWRlcjxMLCBGPiB7XG4gIHNldEFjY2Vzc29ycyhhY2Nlc3NvcnM6IEZsb3dtYXBEYXRhQWNjZXNzb3JzPEwsIEY+KTogdm9pZDtcblxuICBzZXRGbG93bWFwU3RhdGUoZmxvd21hcFN0YXRlOiBGbG93bWFwU3RhdGUpOiBQcm9taXNlPHZvaWQ+O1xuXG4gIC8vIGNsZWFyRGF0YSgpOiB2b2lkO1xuXG4gIGdldFZpZXdwb3J0Rm9yTG9jYXRpb25zKFxuICAgIGRpbXM6IFtudW1iZXIsIG51bWJlcl0sXG4gICk6IFByb21pc2U8Vmlld3BvcnRQcm9wcyB8IHVuZGVmaW5lZD47XG5cbiAgLy8gZ2V0Rmxvd1RvdGFscygpOiBQcm9taXNlPEZsb3dUb3RhbHM+O1xuXG4gIGdldEZsb3dCeUluZGV4KGluZGV4OiBudW1iZXIpOiBQcm9taXNlPEYgfCBBZ2dyZWdhdGVGbG93IHwgdW5kZWZpbmVkPjtcblxuICBnZXRMb2NhdGlvbkJ5SWQoaWQ6IHN0cmluZyk6IFByb21pc2U8TCB8IENsdXN0ZXIgfCB1bmRlZmluZWQ+O1xuXG4gIGdldExvY2F0aW9uQnlJbmRleChpZHg6IG51bWJlcik6IFByb21pc2U8TCB8IENsdXN0ZXJOb2RlIHwgdW5kZWZpbmVkPjtcblxuICBnZXRUb3RhbHNGb3JMb2NhdGlvbihpZDogc3RyaW5nKTogUHJvbWlzZTxMb2NhdGlvblRvdGFscyB8IHVuZGVmaW5lZD47XG5cbiAgLy8gZ2V0TG9jYXRpb25zSW5CYm94KFxuICAvLyAgIGJib3g6IFtudW1iZXIsIG51bWJlciwgbnVtYmVyLCBudW1iZXJdLFxuICAvLyApOiBQcm9taXNlPEFycmF5PEZsb3dMb2NhdGlvbiB8IENsdXN0ZXJOb2RlPiB8IHVuZGVmaW5lZD47XG5cbiAgLy8gZ2V0TG9jYXRpb25zRm9yU2VhcmNoQm94KCk6IFByb21pc2U8KEZsb3dMb2NhdGlvbiB8IENsdXN0ZXJOb2RlKVtdIHwgdW5kZWZpbmVkPjtcblxuICBnZXRMYXllcnNEYXRhKCk6IFByb21pc2U8TGF5ZXJzRGF0YSB8IHVuZGVmaW5lZD47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0Zsb3dtYXBEYXRhPEwsIEY+KFxuICBkYXRhOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LFxuKTogZGF0YSBpcyBGbG93bWFwRGF0YTxMLCBGPiB7XG4gIHJldHVybiAoXG4gICAgZGF0YSAmJlxuICAgIGRhdGEubG9jYXRpb25zICYmXG4gICAgZGF0YS5mbG93cyAmJlxuICAgIEFycmF5LmlzQXJyYXkoZGF0YS5sb2NhdGlvbnMpICYmXG4gICAgQXJyYXkuaXNBcnJheShkYXRhLmZsb3dzKVxuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNGbG93bWFwRGF0YVByb3ZpZGVyPEwsIEY+KFxuICBkYXRhUHJvdmlkZXI6IFJlY29yZDxzdHJpbmcsIGFueT4sXG4pOiBkYXRhUHJvdmlkZXIgaXMgRmxvd21hcERhdGFQcm92aWRlcjxMLCBGPiB7XG4gIHJldHVybiAoXG4gICAgZGF0YVByb3ZpZGVyICYmXG4gICAgdHlwZW9mIGRhdGFQcm92aWRlci5zZXRGbG93bWFwU3RhdGUgPT09ICdmdW5jdGlvbicgJiZcbiAgICB0eXBlb2YgZGF0YVByb3ZpZGVyLmdldFZpZXdwb3J0Rm9yTG9jYXRpb25zID09PSAnZnVuY3Rpb24nICYmXG4gICAgdHlwZW9mIGRhdGFQcm92aWRlci5nZXRGbG93QnlJbmRleCA9PT0gJ2Z1bmN0aW9uJyAmJlxuICAgIHR5cGVvZiBkYXRhUHJvdmlkZXIuZ2V0TG9jYXRpb25CeUlkID09PSAnZnVuY3Rpb24nICYmXG4gICAgdHlwZW9mIGRhdGFQcm92aWRlci5nZXRMb2NhdGlvbkJ5SW5kZXggPT09ICdmdW5jdGlvbicgJiZcbiAgICB0eXBlb2YgZGF0YVByb3ZpZGVyLmdldExheWVyc0RhdGEgPT09ICdmdW5jdGlvbidcbiAgKTtcbn1cbiJdfQ==
@@ -0,0 +1,20 @@
1
+ import type FlowmapDataProvider from './FlowmapDataProvider';
2
+ import type { Cluster, ClusterNode, FlowmapData, FlowmapDataAccessors, LayersData, LocationTotals, ViewportProps, AggregateFlow } from '../types';
3
+ import { FlowmapState } from '../FlowmapState';
4
+ import { GetViewStateOptions } from '../getViewStateForLocations';
5
+ export default class LocalFlowmapDataProvider<L, F> implements FlowmapDataProvider<L, F> {
6
+ private selectors;
7
+ private flowmapData;
8
+ private flowmapState;
9
+ constructor(accessors: FlowmapDataAccessors<L, F>);
10
+ setAccessors(accessors: FlowmapDataAccessors<L, F>): void;
11
+ setFlowmapData(flowmapData: FlowmapData<L, F>): Promise<void>;
12
+ setFlowmapState(flowmapState: FlowmapState): Promise<void>;
13
+ getFlowByIndex(idx: number): Promise<F | AggregateFlow | undefined>;
14
+ getLocationByIndex(idx: number): Promise<L | ClusterNode | undefined>;
15
+ getLayersData(): Promise<LayersData | undefined>;
16
+ getLocationById(id: string): Promise<L | Cluster | undefined>;
17
+ getTotalsForLocation(id: string): Promise<LocationTotals | undefined>;
18
+ getViewportForLocations(dims: [number, number], opts?: GetViewStateOptions): Promise<ViewportProps | undefined>;
19
+ }
20
+ //# sourceMappingURL=LocalFlowmapDataProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LocalFlowmapDataProvider.d.ts","sourceRoot":"","sources":["../../src/provider/LocalFlowmapDataProvider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,mBAAmB,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,EACV,OAAO,EACP,WAAW,EACX,WAAW,EACX,oBAAoB,EACpB,UAAU,EACV,cAAc,EACd,aAAa,EACb,aAAa,EACd,MAAM,UAAU,CAAC;AAClB,OAAO,EAAC,YAAY,EAAC,MAAM,iBAAiB,CAAC;AAE7C,OAAO,EACL,mBAAmB,EAEpB,MAAM,6BAA6B,CAAC;AAErC,MAAM,CAAC,OAAO,OAAO,wBAAwB,CAAC,CAAC,EAAE,CAAC,CAChD,YAAW,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC;IAEpC,OAAO,CAAC,SAAS,CAAyB;IAC1C,OAAO,CAAC,WAAW,CAAgC;IACnD,OAAO,CAAC,YAAY,CAA2B;gBAEnC,SAAS,EAAE,oBAAoB,CAAC,CAAC,EAAE,CAAC,CAAC;IAOjD,YAAY,CAAC,SAAS,EAAE,oBAAoB,CAAC,CAAC,EAAE,CAAC,CAAC;IAI5C,cAAc,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAI7D,eAAe,CAAC,YAAY,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAI1D,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,aAAa,GAAG,SAAS,CAAC;IAWnE,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,WAAW,GAAG,SAAS,CAAC;IAWrE,aAAa,IAAI,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC;IAOhD,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,OAAO,GAAG,SAAS,CAAC;IAqB7D,oBAAoB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC;IASrE,uBAAuB,CAC3B,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EACtB,IAAI,CAAC,EAAE,mBAAmB,GACzB,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC;CAetC"}
@@ -0,0 +1,154 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __generator = (this && this.__generator) || function (thisArg, body) {
12
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
+ function verb(n) { return function (v) { return step([n, v]); }; }
15
+ function step(op) {
16
+ if (f) throw new TypeError("Generator is already executing.");
17
+ while (_) try {
18
+ 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;
19
+ if (y = 0, t) op = [op[0] & 2, t.value];
20
+ switch (op[0]) {
21
+ case 0: case 1: t = op; break;
22
+ case 4: _.label++; return { value: op[1], done: false };
23
+ case 5: _.label++; y = op[1]; op = [0]; continue;
24
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
+ default:
26
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
+ if (t[2]) _.ops.pop();
31
+ _.trys.pop(); continue;
32
+ }
33
+ op = body.call(thisArg, _);
34
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
+ }
37
+ };
38
+ var __importDefault = (this && this.__importDefault) || function (mod) {
39
+ return (mod && mod.__esModule) ? mod : { "default": mod };
40
+ };
41
+ Object.defineProperty(exports, "__esModule", { value: true });
42
+ var FlowmapSelectors_1 = __importDefault(require("../FlowmapSelectors"));
43
+ var getViewStateForLocations_1 = require("../getViewStateForLocations");
44
+ var LocalFlowmapDataProvider = /** @class */ (function () {
45
+ function LocalFlowmapDataProvider(accessors) {
46
+ // scope selectors to the concrete instance of FlowmapDataProvider
47
+ this.selectors = new FlowmapSelectors_1.default(accessors);
48
+ this.flowmapData = undefined;
49
+ this.flowmapState = undefined;
50
+ }
51
+ LocalFlowmapDataProvider.prototype.setAccessors = function (accessors) {
52
+ this.selectors.setAccessors(accessors);
53
+ };
54
+ LocalFlowmapDataProvider.prototype.setFlowmapData = function (flowmapData) {
55
+ return __awaiter(this, void 0, void 0, function () {
56
+ return __generator(this, function (_a) {
57
+ this.flowmapData = flowmapData;
58
+ return [2 /*return*/];
59
+ });
60
+ });
61
+ };
62
+ LocalFlowmapDataProvider.prototype.setFlowmapState = function (flowmapState) {
63
+ return __awaiter(this, void 0, void 0, function () {
64
+ return __generator(this, function (_a) {
65
+ this.flowmapState = flowmapState;
66
+ return [2 /*return*/];
67
+ });
68
+ });
69
+ };
70
+ LocalFlowmapDataProvider.prototype.getFlowByIndex = function (idx) {
71
+ return __awaiter(this, void 0, void 0, function () {
72
+ var flows;
73
+ return __generator(this, function (_a) {
74
+ if (!this.flowmapState || !this.flowmapData) {
75
+ return [2 /*return*/, undefined];
76
+ }
77
+ flows = this.selectors.getFlowsForFlowmapLayer(this.flowmapState, this.flowmapData);
78
+ return [2 /*return*/, flows === null || flows === void 0 ? void 0 : flows[idx]];
79
+ });
80
+ });
81
+ };
82
+ LocalFlowmapDataProvider.prototype.getLocationByIndex = function (idx) {
83
+ return __awaiter(this, void 0, void 0, function () {
84
+ var locations;
85
+ return __generator(this, function (_a) {
86
+ if (!this.flowmapState || !this.flowmapData) {
87
+ return [2 /*return*/, undefined];
88
+ }
89
+ locations = this.selectors.getLocationsForFlowmapLayer(this.flowmapState, this.flowmapData);
90
+ return [2 /*return*/, locations === null || locations === void 0 ? void 0 : locations[idx]];
91
+ });
92
+ });
93
+ };
94
+ LocalFlowmapDataProvider.prototype.getLayersData = function () {
95
+ return __awaiter(this, void 0, void 0, function () {
96
+ return __generator(this, function (_a) {
97
+ if (!this.flowmapState || !this.flowmapData) {
98
+ return [2 /*return*/, undefined];
99
+ }
100
+ return [2 /*return*/, this.selectors.getLayersData(this.flowmapState, this.flowmapData)];
101
+ });
102
+ });
103
+ };
104
+ LocalFlowmapDataProvider.prototype.getLocationById = function (id) {
105
+ return __awaiter(this, void 0, void 0, function () {
106
+ var clusterIndex, cluster, locationsById;
107
+ return __generator(this, function (_a) {
108
+ if (!this.flowmapState || !this.flowmapData) {
109
+ return [2 /*return*/, undefined];
110
+ }
111
+ clusterIndex = this.selectors.getClusterIndex(this.flowmapState, this.flowmapData);
112
+ if (clusterIndex) {
113
+ cluster = clusterIndex.getClusterById(id);
114
+ if (cluster) {
115
+ return [2 /*return*/, cluster];
116
+ }
117
+ }
118
+ locationsById = this.selectors.getLocationsById(this.flowmapState, this.flowmapData);
119
+ return [2 /*return*/, locationsById === null || locationsById === void 0 ? void 0 : locationsById.get(id)];
120
+ });
121
+ });
122
+ };
123
+ LocalFlowmapDataProvider.prototype.getTotalsForLocation = function (id) {
124
+ var _a;
125
+ return __awaiter(this, void 0, void 0, function () {
126
+ return __generator(this, function (_b) {
127
+ if (!this.flowmapState || !this.flowmapData) {
128
+ return [2 /*return*/, undefined];
129
+ }
130
+ return [2 /*return*/, (_a = this.selectors
131
+ .getLocationTotals(this.flowmapState, this.flowmapData)) === null || _a === void 0 ? void 0 : _a.get(id)];
132
+ });
133
+ });
134
+ };
135
+ LocalFlowmapDataProvider.prototype.getViewportForLocations = function (dims, opts) {
136
+ var _a;
137
+ return __awaiter(this, void 0, void 0, function () {
138
+ var _this = this;
139
+ return __generator(this, function (_b) {
140
+ if (!((_a = this.flowmapData) === null || _a === void 0 ? void 0 : _a.locations)) {
141
+ return [2 /*return*/, undefined];
142
+ }
143
+ // @ts-ignore
144
+ return [2 /*return*/, (0, getViewStateForLocations_1.getViewStateForLocations)(this.flowmapData.locations, function (loc) { return [
145
+ _this.selectors.accessors.getLocationLon(loc),
146
+ _this.selectors.accessors.getLocationLat(loc),
147
+ ]; }, dims, opts)];
148
+ });
149
+ });
150
+ };
151
+ return LocalFlowmapDataProvider;
152
+ }());
153
+ exports.default = LocalFlowmapDataProvider;
154
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTG9jYWxGbG93bWFwRGF0YVByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Byb3ZpZGVyL0xvY2FsRmxvd21hcERhdGFQcm92aWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVlBLHlFQUFtRDtBQUNuRCx3RUFHcUM7QUFFckM7SUFPRSxrQ0FBWSxTQUFxQztRQUMvQyxrRUFBa0U7UUFDbEUsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLDBCQUFnQixDQUFPLFNBQVMsQ0FBQyxDQUFDO1FBQ3ZELElBQUksQ0FBQyxXQUFXLEdBQUcsU0FBUyxDQUFDO1FBQzdCLElBQUksQ0FBQyxZQUFZLEdBQUcsU0FBUyxDQUFDO0lBQ2hDLENBQUM7SUFFRCwrQ0FBWSxHQUFaLFVBQWEsU0FBcUM7UUFDaEQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVLLGlEQUFjLEdBQXBCLFVBQXFCLFdBQThCOzs7Z0JBQ2pELElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDOzs7O0tBQ2hDO0lBRUssa0RBQWUsR0FBckIsVUFBc0IsWUFBMEI7OztnQkFDOUMsSUFBSSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUM7Ozs7S0FDbEM7SUFFSyxpREFBYyxHQUFwQixVQUFxQixHQUFXOzs7O2dCQUM5QixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUU7b0JBQzNDLHNCQUFPLFNBQVMsRUFBQztpQkFDbEI7Z0JBQ0ssS0FBSyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsdUJBQXVCLENBQ2xELElBQUksQ0FBQyxZQUFZLEVBQ2pCLElBQUksQ0FBQyxXQUFXLENBQ2pCLENBQUM7Z0JBQ0Ysc0JBQU8sS0FBSyxhQUFMLEtBQUssdUJBQUwsS0FBSyxDQUFHLEdBQUcsQ0FBQyxFQUFDOzs7S0FDckI7SUFFSyxxREFBa0IsR0FBeEIsVUFBeUIsR0FBVzs7OztnQkFDbEMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFO29CQUMzQyxzQkFBTyxTQUFTLEVBQUM7aUJBQ2xCO2dCQUNLLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLDJCQUEyQixDQUMxRCxJQUFJLENBQUMsWUFBWSxFQUNqQixJQUFJLENBQUMsV0FBVyxDQUNqQixDQUFDO2dCQUNGLHNCQUFPLFNBQVMsYUFBVCxTQUFTLHVCQUFULFNBQVMsQ0FBRyxHQUFHLENBQUMsRUFBQzs7O0tBQ3pCO0lBRUssZ0RBQWEsR0FBbkI7OztnQkFDRSxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUU7b0JBQzNDLHNCQUFPLFNBQVMsRUFBQztpQkFDbEI7Z0JBQ0Qsc0JBQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUM7OztLQUMxRTtJQUVLLGtEQUFlLEdBQXJCLFVBQXNCLEVBQVU7Ozs7Z0JBQzlCLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRTtvQkFDM0Msc0JBQU8sU0FBUyxFQUFDO2lCQUNsQjtnQkFDSyxZQUFZLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQ2pELElBQUksQ0FBQyxZQUFZLEVBQ2pCLElBQUksQ0FBQyxXQUFXLENBQ2pCLENBQUM7Z0JBQ0YsSUFBSSxZQUFZLEVBQUU7b0JBQ1YsT0FBTyxHQUFHLFlBQVksQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDLENBQUM7b0JBQ2hELElBQUksT0FBTyxFQUFFO3dCQUNYLHNCQUFPLE9BQU8sRUFBQztxQkFDaEI7aUJBQ0Y7Z0JBQ0ssYUFBYSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLENBQ25ELElBQUksQ0FBQyxZQUFZLEVBQ2pCLElBQUksQ0FBQyxXQUFXLENBQ2pCLENBQUM7Z0JBQ0Ysc0JBQU8sYUFBYSxhQUFiLGFBQWEsdUJBQWIsYUFBYSxDQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBQzs7O0tBQy9CO0lBRUssdURBQW9CLEdBQTFCLFVBQTJCLEVBQVU7Ozs7Z0JBQ25DLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRTtvQkFDM0Msc0JBQU8sU0FBUyxFQUFDO2lCQUNsQjtnQkFDRCxzQkFBTyxNQUFBLElBQUksQ0FBQyxTQUFTO3lCQUNsQixpQkFBaUIsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsMENBQ3JELEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBQzs7O0tBQ2I7SUFFSywwREFBdUIsR0FBN0IsVUFDRSxJQUFzQixFQUN0QixJQUEwQjs7Ozs7Z0JBRTFCLElBQUksQ0FBQyxDQUFBLE1BQUEsSUFBSSxDQUFDLFdBQVcsMENBQUUsU0FBUyxDQUFBLEVBQUU7b0JBQ2hDLHNCQUFPLFNBQVMsRUFBQztpQkFDbEI7Z0JBQ0QsYUFBYTtnQkFDYixzQkFBTyxJQUFBLG1EQUF3QixFQUM3QixJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFDMUIsVUFBQyxHQUFHLElBQUssT0FBQTt3QkFDUCxLQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDO3dCQUM1QyxLQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDO3FCQUM3QyxFQUhRLENBR1IsRUFDRCxJQUFJLEVBQ0osSUFBSSxDQUNMLEVBQUM7OztLQUNIO0lBQ0gsK0JBQUM7QUFBRCxDQUFDLEFBdkdELElBdUdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgRmxvd21hcERhdGFQcm92aWRlciBmcm9tICcuL0Zsb3dtYXBEYXRhUHJvdmlkZXInO1xuaW1wb3J0IHR5cGUge1xuICBDbHVzdGVyLFxuICBDbHVzdGVyTm9kZSxcbiAgRmxvd21hcERhdGEsXG4gIEZsb3dtYXBEYXRhQWNjZXNzb3JzLFxuICBMYXllcnNEYXRhLFxuICBMb2NhdGlvblRvdGFscyxcbiAgVmlld3BvcnRQcm9wcyxcbiAgQWdncmVnYXRlRmxvdyxcbn0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHtGbG93bWFwU3RhdGV9IGZyb20gJy4uL0Zsb3dtYXBTdGF0ZSc7XG5pbXBvcnQgRmxvd21hcFNlbGVjdG9ycyBmcm9tICcuLi9GbG93bWFwU2VsZWN0b3JzJztcbmltcG9ydCB7XG4gIEdldFZpZXdTdGF0ZU9wdGlvbnMsXG4gIGdldFZpZXdTdGF0ZUZvckxvY2F0aW9ucyxcbn0gZnJvbSAnLi4vZ2V0Vmlld1N0YXRlRm9yTG9jYXRpb25zJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTG9jYWxGbG93bWFwRGF0YVByb3ZpZGVyPEwsIEY+XG4gIGltcGxlbWVudHMgRmxvd21hcERhdGFQcm92aWRlcjxMLCBGPlxue1xuICBwcml2YXRlIHNlbGVjdG9yczogRmxvd21hcFNlbGVjdG9yczxMLCBGPjtcbiAgcHJpdmF0ZSBmbG93bWFwRGF0YTogRmxvd21hcERhdGE8TCwgRj4gfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgZmxvd21hcFN0YXRlOiBGbG93bWFwU3RhdGUgfCB1bmRlZmluZWQ7XG5cbiAgY29uc3RydWN0b3IoYWNjZXNzb3JzOiBGbG93bWFwRGF0YUFjY2Vzc29yczxMLCBGPikge1xuICAgIC8vIHNjb3BlIHNlbGVjdG9ycyB0byB0aGUgY29uY3JldGUgaW5zdGFuY2Ugb2YgRmxvd21hcERhdGFQcm92aWRlclxuICAgIHRoaXMuc2VsZWN0b3JzID0gbmV3IEZsb3dtYXBTZWxlY3RvcnM8TCwgRj4oYWNjZXNzb3JzKTtcbiAgICB0aGlzLmZsb3dtYXBEYXRhID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuZmxvd21hcFN0YXRlID0gdW5kZWZpbmVkO1xuICB9XG5cbiAgc2V0QWNjZXNzb3JzKGFjY2Vzc29yczogRmxvd21hcERhdGFBY2Nlc3NvcnM8TCwgRj4pIHtcbiAgICB0aGlzLnNlbGVjdG9ycy5zZXRBY2Nlc3NvcnMoYWNjZXNzb3JzKTtcbiAgfVxuXG4gIGFzeW5jIHNldEZsb3dtYXBEYXRhKGZsb3dtYXBEYXRhOiBGbG93bWFwRGF0YTxMLCBGPik6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMuZmxvd21hcERhdGEgPSBmbG93bWFwRGF0YTtcbiAgfVxuXG4gIGFzeW5jIHNldEZsb3dtYXBTdGF0ZShmbG93bWFwU3RhdGU6IEZsb3dtYXBTdGF0ZSk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMuZmxvd21hcFN0YXRlID0gZmxvd21hcFN0YXRlO1xuICB9XG5cbiAgYXN5bmMgZ2V0Rmxvd0J5SW5kZXgoaWR4OiBudW1iZXIpOiBQcm9taXNlPEYgfCBBZ2dyZWdhdGVGbG93IHwgdW5kZWZpbmVkPiB7XG4gICAgaWYgKCF0aGlzLmZsb3dtYXBTdGF0ZSB8fCAhdGhpcy5mbG93bWFwRGF0YSkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgY29uc3QgZmxvd3MgPSB0aGlzLnNlbGVjdG9ycy5nZXRGbG93c0ZvckZsb3dtYXBMYXllcihcbiAgICAgIHRoaXMuZmxvd21hcFN0YXRlLFxuICAgICAgdGhpcy5mbG93bWFwRGF0YSxcbiAgICApO1xuICAgIHJldHVybiBmbG93cz8uW2lkeF07XG4gIH1cblxuICBhc3luYyBnZXRMb2NhdGlvbkJ5SW5kZXgoaWR4OiBudW1iZXIpOiBQcm9taXNlPEwgfCBDbHVzdGVyTm9kZSB8IHVuZGVmaW5lZD4ge1xuICAgIGlmICghdGhpcy5mbG93bWFwU3RhdGUgfHwgIXRoaXMuZmxvd21hcERhdGEpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGNvbnN0IGxvY2F0aW9ucyA9IHRoaXMuc2VsZWN0b3JzLmdldExvY2F0aW9uc0ZvckZsb3dtYXBMYXllcihcbiAgICAgIHRoaXMuZmxvd21hcFN0YXRlLFxuICAgICAgdGhpcy5mbG93bWFwRGF0YSxcbiAgICApO1xuICAgIHJldHVybiBsb2NhdGlvbnM/LltpZHhdO1xuICB9XG5cbiAgYXN5bmMgZ2V0TGF5ZXJzRGF0YSgpOiBQcm9taXNlPExheWVyc0RhdGEgfCB1bmRlZmluZWQ+IHtcbiAgICBpZiAoIXRoaXMuZmxvd21hcFN0YXRlIHx8ICF0aGlzLmZsb3dtYXBEYXRhKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5zZWxlY3RvcnMuZ2V0TGF5ZXJzRGF0YSh0aGlzLmZsb3dtYXBTdGF0ZSwgdGhpcy5mbG93bWFwRGF0YSk7XG4gIH1cblxuICBhc3luYyBnZXRMb2NhdGlvbkJ5SWQoaWQ6IHN0cmluZyk6IFByb21pc2U8TCB8IENsdXN0ZXIgfCB1bmRlZmluZWQ+IHtcbiAgICBpZiAoIXRoaXMuZmxvd21hcFN0YXRlIHx8ICF0aGlzLmZsb3dtYXBEYXRhKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBjb25zdCBjbHVzdGVySW5kZXggPSB0aGlzLnNlbGVjdG9ycy5nZXRDbHVzdGVySW5kZXgoXG4gICAgICB0aGlzLmZsb3dtYXBTdGF0ZSxcbiAgICAgIHRoaXMuZmxvd21hcERhdGEsXG4gICAgKTtcbiAgICBpZiAoY2x1c3RlckluZGV4KSB7XG4gICAgICBjb25zdCBjbHVzdGVyID0gY2x1c3RlckluZGV4LmdldENsdXN0ZXJCeUlkKGlkKTtcbiAgICAgIGlmIChjbHVzdGVyKSB7XG4gICAgICAgIHJldHVybiBjbHVzdGVyO1xuICAgICAgfVxuICAgIH1cbiAgICBjb25zdCBsb2NhdGlvbnNCeUlkID0gdGhpcy5zZWxlY3RvcnMuZ2V0TG9jYXRpb25zQnlJZChcbiAgICAgIHRoaXMuZmxvd21hcFN0YXRlLFxuICAgICAgdGhpcy5mbG93bWFwRGF0YSxcbiAgICApO1xuICAgIHJldHVybiBsb2NhdGlvbnNCeUlkPy5nZXQoaWQpO1xuICB9XG5cbiAgYXN5bmMgZ2V0VG90YWxzRm9yTG9jYXRpb24oaWQ6IHN0cmluZyk6IFByb21pc2U8TG9jYXRpb25Ub3RhbHMgfCB1bmRlZmluZWQ+IHtcbiAgICBpZiAoIXRoaXMuZmxvd21hcFN0YXRlIHx8ICF0aGlzLmZsb3dtYXBEYXRhKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5zZWxlY3RvcnNcbiAgICAgIC5nZXRMb2NhdGlvblRvdGFscyh0aGlzLmZsb3dtYXBTdGF0ZSwgdGhpcy5mbG93bWFwRGF0YSlcbiAgICAgID8uZ2V0KGlkKTtcbiAgfVxuXG4gIGFzeW5jIGdldFZpZXdwb3J0Rm9yTG9jYXRpb25zKFxuICAgIGRpbXM6IFtudW1iZXIsIG51bWJlcl0sXG4gICAgb3B0cz86IEdldFZpZXdTdGF0ZU9wdGlvbnMsXG4gICk6IFByb21pc2U8Vmlld3BvcnRQcm9wcyB8IHVuZGVmaW5lZD4ge1xuICAgIGlmICghdGhpcy5mbG93bWFwRGF0YT8ubG9jYXRpb25zKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICAvLyBAdHMtaWdub3JlXG4gICAgcmV0dXJuIGdldFZpZXdTdGF0ZUZvckxvY2F0aW9ucyhcbiAgICAgIHRoaXMuZmxvd21hcERhdGEubG9jYXRpb25zLFxuICAgICAgKGxvYykgPT4gW1xuICAgICAgICB0aGlzLnNlbGVjdG9ycy5hY2Nlc3NvcnMuZ2V0TG9jYXRpb25Mb24obG9jKSxcbiAgICAgICAgdGhpcy5zZWxlY3RvcnMuYWNjZXNzb3JzLmdldExvY2F0aW9uTGF0KGxvYyksXG4gICAgICBdLFxuICAgICAgZGltcyxcbiAgICAgIG9wdHMsXG4gICAgKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,24 @@
1
+ import { TimeInterval } from 'd3-time';
2
+ export declare function parseTime(input: string | Date | undefined): Date | undefined;
3
+ export declare enum TimeGranularityKey {
4
+ SECOND = "SECOND",
5
+ MINUTE = "MINUTE",
6
+ HOUR = "HOUR",
7
+ DAY = "DAY",
8
+ MONTH = "MONTH",
9
+ YEAR = "YEAR"
10
+ }
11
+ export interface TimeGranularity {
12
+ key: TimeGranularityKey;
13
+ order: number;
14
+ interval: TimeInterval;
15
+ format: (date: Date) => string;
16
+ formatFull: (date: Date) => string;
17
+ }
18
+ export declare function tickMultiFormat(date: Date): string;
19
+ export declare const TIME_GRANULARITIES: TimeGranularity[];
20
+ export declare function getTimeGranularityByKey(key: TimeGranularityKey): TimeGranularity | undefined;
21
+ export declare function getTimeGranularityByOrder(order: number): TimeGranularity | undefined;
22
+ export declare function getTimeGranularityForDate(date: Date): TimeGranularity;
23
+ export declare function areRangesEqual(a: [Date, Date] | undefined, b: [Date, Date] | undefined): boolean;
24
+ //# sourceMappingURL=time.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"time.d.ts","sourceRoot":"","sources":["../src/time.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,YAAY,EAMb,MAAM,SAAS,CAAC;AAUjB,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,IAAI,GAAG,SAAS,CAa5E;AAED,oBAAY,kBAAkB;IAC5B,MAAM,WAAW;IACjB,MAAM,WAAW;IACjB,IAAI,SAAS;IACb,GAAG,QAAQ;IACX,KAAK,UAAU;IACf,IAAI,SAAS;CACd;AAED,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,kBAAkB,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,YAAY,CAAC;IACvB,MAAM,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,MAAM,CAAC;IAC/B,UAAU,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,MAAM,CAAC;CACpC;AAcD,wBAAgB,eAAe,CAAC,IAAI,EAAE,IAAI,UAkBzC;AAED,eAAO,MAAM,kBAAkB,EAAE,eAAe,EA4C/C,CAAC;AAEF,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,kBAAkB,+BAE9D;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,MAAM,+BAEtD;AAED,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,IAAI,GAAG,eAAe,CAYrE;AAED,wBAAgB,cAAc,CAC5B,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,SAAS,EAC3B,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,SAAS,GAC1B,OAAO,CAIT"}
@@ -0,0 +1,168 @@
1
+ "use strict";
2
+ var __values = (this && this.__values) || function(o) {
3
+ var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
4
+ if (m) return m.call(o);
5
+ if (o && typeof o.length === "number") return {
6
+ next: function () {
7
+ if (o && i >= o.length) o = void 0;
8
+ return { value: o && o[i++], done: !o };
9
+ }
10
+ };
11
+ throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
12
+ };
13
+ Object.defineProperty(exports, "__esModule", { value: true });
14
+ exports.areRangesEqual = exports.getTimeGranularityForDate = exports.getTimeGranularityByOrder = exports.getTimeGranularityByKey = exports.TIME_GRANULARITIES = exports.tickMultiFormat = exports.TimeGranularityKey = exports.parseTime = void 0;
15
+ var d3_time_format_1 = require("d3-time-format");
16
+ var d3_time_1 = require("d3-time");
17
+ var dateParsers = [
18
+ (0, d3_time_format_1.timeParse)('%Y-%m-%d'),
19
+ (0, d3_time_format_1.timeParse)('%Y-%m-%d %H:%M'),
20
+ (0, d3_time_format_1.timeParse)('%Y-%m-%d %H:%M:%S'),
21
+ (0, d3_time_format_1.timeParse)('%Y'),
22
+ (0, d3_time_format_1.timeParse)('%Y-%m'),
23
+ ];
24
+ function parseTime(input) {
25
+ var e_1, _a;
26
+ if (input != null) {
27
+ if (input instanceof Date) {
28
+ return input;
29
+ }
30
+ try {
31
+ for (var dateParsers_1 = __values(dateParsers), dateParsers_1_1 = dateParsers_1.next(); !dateParsers_1_1.done; dateParsers_1_1 = dateParsers_1.next()) {
32
+ var parse = dateParsers_1_1.value;
33
+ var date = parse(input);
34
+ if (date) {
35
+ return date;
36
+ }
37
+ }
38
+ }
39
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
40
+ finally {
41
+ try {
42
+ if (dateParsers_1_1 && !dateParsers_1_1.done && (_a = dateParsers_1.return)) _a.call(dateParsers_1);
43
+ }
44
+ finally { if (e_1) throw e_1.error; }
45
+ }
46
+ }
47
+ return undefined;
48
+ }
49
+ exports.parseTime = parseTime;
50
+ var TimeGranularityKey;
51
+ (function (TimeGranularityKey) {
52
+ TimeGranularityKey["SECOND"] = "SECOND";
53
+ TimeGranularityKey["MINUTE"] = "MINUTE";
54
+ TimeGranularityKey["HOUR"] = "HOUR";
55
+ TimeGranularityKey["DAY"] = "DAY";
56
+ TimeGranularityKey["MONTH"] = "MONTH";
57
+ TimeGranularityKey["YEAR"] = "YEAR";
58
+ })(TimeGranularityKey = exports.TimeGranularityKey || (exports.TimeGranularityKey = {}));
59
+ // const preferredLocale = navigator.languages ? navigator.languages[0] : 'en';
60
+ var formatMillisecond = (0, d3_time_format_1.timeFormat)('.%L'), formatSecond = (0, d3_time_format_1.timeFormat)(':%S'), formatMinute = (0, d3_time_format_1.timeFormat)('%I:%M'),
61
+ // formatHour = (d: Date) => d.toLocaleString(preferredLocale, { hour: 'numeric' }),
62
+ formatHour = (0, d3_time_format_1.timeFormat)('%I %p'), formatDay = (0, d3_time_format_1.timeFormat)('%a %d'), formatWeek = (0, d3_time_format_1.timeFormat)('%b %d'), formatMonth = (0, d3_time_format_1.timeFormat)('%b'), formatYear = (0, d3_time_format_1.timeFormat)('%Y');
63
+ function tickMultiFormat(date) {
64
+ return ((0, d3_time_1.timeSecond)(date) < date
65
+ ? formatMillisecond
66
+ : (0, d3_time_1.timeMinute)(date) < date
67
+ ? formatSecond
68
+ : (0, d3_time_1.timeHour)(date) < date
69
+ ? formatMinute
70
+ : (0, d3_time_1.timeDay)(date) < date
71
+ ? formatHour
72
+ : (0, d3_time_1.timeMonth)(date) < date
73
+ ? (0, d3_time_1.timeWeek)(date) < date
74
+ ? formatDay
75
+ : formatWeek
76
+ : (0, d3_time_1.timeYear)(date) < date
77
+ ? formatMonth
78
+ : formatYear)(date);
79
+ }
80
+ exports.tickMultiFormat = tickMultiFormat;
81
+ exports.TIME_GRANULARITIES = [
82
+ {
83
+ order: 0,
84
+ key: TimeGranularityKey.SECOND,
85
+ interval: d3_time_1.timeSecond,
86
+ format: formatSecond,
87
+ formatFull: (0, d3_time_format_1.timeFormat)('%Y-%m-%d %H:%M:%S'),
88
+ },
89
+ {
90
+ order: 1,
91
+ key: TimeGranularityKey.MINUTE,
92
+ interval: d3_time_1.timeMinute,
93
+ format: formatMinute,
94
+ formatFull: (0, d3_time_format_1.timeFormat)('%Y-%m-%d %H:%M'),
95
+ },
96
+ {
97
+ order: 2,
98
+ key: TimeGranularityKey.HOUR,
99
+ interval: d3_time_1.timeHour,
100
+ // format: (d: Date) => d.toLocaleString(preferredLocale, { hour: 'numeric', minute: '2-digit' }),
101
+ format: formatHour,
102
+ formatFull: (0, d3_time_format_1.timeFormat)('%a %d %b %Y, %I %p'),
103
+ },
104
+ {
105
+ order: 3,
106
+ key: TimeGranularityKey.DAY,
107
+ interval: d3_time_1.timeDay,
108
+ format: formatDay,
109
+ formatFull: (0, d3_time_format_1.timeFormat)('%a %d %b %Y'),
110
+ },
111
+ {
112
+ order: 4,
113
+ key: TimeGranularityKey.MONTH,
114
+ interval: d3_time_1.timeMonth,
115
+ format: formatMonth,
116
+ formatFull: (0, d3_time_format_1.timeFormat)('%b %Y'),
117
+ },
118
+ {
119
+ order: 5,
120
+ key: TimeGranularityKey.YEAR,
121
+ interval: d3_time_1.timeYear,
122
+ format: formatYear,
123
+ formatFull: (0, d3_time_format_1.timeFormat)('%Y'),
124
+ },
125
+ ];
126
+ function getTimeGranularityByKey(key) {
127
+ return exports.TIME_GRANULARITIES.find(function (s) { return s.key === key; });
128
+ }
129
+ exports.getTimeGranularityByKey = getTimeGranularityByKey;
130
+ function getTimeGranularityByOrder(order) {
131
+ return exports.TIME_GRANULARITIES.find(function (s) { return s.order === order; });
132
+ }
133
+ exports.getTimeGranularityByOrder = getTimeGranularityByOrder;
134
+ function getTimeGranularityForDate(date) {
135
+ var e_2, _a;
136
+ var prev = undefined;
137
+ try {
138
+ for (var TIME_GRANULARITIES_1 = __values(exports.TIME_GRANULARITIES), TIME_GRANULARITIES_1_1 = TIME_GRANULARITIES_1.next(); !TIME_GRANULARITIES_1_1.done; TIME_GRANULARITIES_1_1 = TIME_GRANULARITIES_1.next()) {
139
+ var current = TIME_GRANULARITIES_1_1.value;
140
+ var interval = current.interval;
141
+ var floored = interval(date);
142
+ if (floored < date) {
143
+ if (!prev)
144
+ return current;
145
+ return prev;
146
+ }
147
+ prev = current;
148
+ }
149
+ }
150
+ catch (e_2_1) { e_2 = { error: e_2_1 }; }
151
+ finally {
152
+ try {
153
+ if (TIME_GRANULARITIES_1_1 && !TIME_GRANULARITIES_1_1.done && (_a = TIME_GRANULARITIES_1.return)) _a.call(TIME_GRANULARITIES_1);
154
+ }
155
+ finally { if (e_2) throw e_2.error; }
156
+ }
157
+ return exports.TIME_GRANULARITIES[exports.TIME_GRANULARITIES.length - 1];
158
+ }
159
+ exports.getTimeGranularityForDate = getTimeGranularityForDate;
160
+ function areRangesEqual(a, b) {
161
+ if (!a && !b)
162
+ return true;
163
+ if (!a || !b)
164
+ return false;
165
+ return a[0] === b[0] && a[1] === b[1];
166
+ }
167
+ exports.areRangesEqual = areRangesEqual;
168
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy90aW1lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7O0FBQUEsaURBQXFEO0FBQ3JELG1DQVNpQjtBQUVqQixJQUFNLFdBQVcsR0FBRztJQUNsQixJQUFBLDBCQUFTLEVBQUMsVUFBVSxDQUFDO0lBQ3JCLElBQUEsMEJBQVMsRUFBQyxnQkFBZ0IsQ0FBQztJQUMzQixJQUFBLDBCQUFTLEVBQUMsbUJBQW1CLENBQUM7SUFDOUIsSUFBQSwwQkFBUyxFQUFDLElBQUksQ0FBQztJQUNmLElBQUEsMEJBQVMsRUFBQyxPQUFPLENBQUM7Q0FDbkIsQ0FBQztBQUVGLFNBQWdCLFNBQVMsQ0FBQyxLQUFnQzs7SUFDeEQsSUFBSSxLQUFLLElBQUksSUFBSSxFQUFFO1FBQ2pCLElBQUksS0FBSyxZQUFZLElBQUksRUFBRTtZQUN6QixPQUFPLEtBQUssQ0FBQztTQUNkOztZQUNELEtBQW9CLElBQUEsZ0JBQUEsU0FBQSxXQUFXLENBQUEsd0NBQUEsaUVBQUU7Z0JBQTVCLElBQU0sS0FBSyx3QkFBQTtnQkFDZCxJQUFNLElBQUksR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQzFCLElBQUksSUFBSSxFQUFFO29CQUNSLE9BQU8sSUFBSSxDQUFDO2lCQUNiO2FBQ0Y7Ozs7Ozs7OztLQUNGO0lBQ0QsT0FBTyxTQUFTLENBQUM7QUFDbkIsQ0FBQztBQWJELDhCQWFDO0FBRUQsSUFBWSxrQkFPWDtBQVBELFdBQVksa0JBQWtCO0lBQzVCLHVDQUFpQixDQUFBO0lBQ2pCLHVDQUFpQixDQUFBO0lBQ2pCLG1DQUFhLENBQUE7SUFDYixpQ0FBVyxDQUFBO0lBQ1gscUNBQWUsQ0FBQTtJQUNmLG1DQUFhLENBQUE7QUFDZixDQUFDLEVBUFcsa0JBQWtCLEdBQWxCLDBCQUFrQixLQUFsQiwwQkFBa0IsUUFPN0I7QUFVRCwrRUFBK0U7QUFFL0UsSUFBTSxpQkFBaUIsR0FBRyxJ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QUM7UUFBRSxPQUFPLElBQUksQ0FBQztJQUMxQixJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUFFLE9BQU8sS0FBSyxDQUFDO0lBQzNCLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3hDLENBQUM7QUFQRCx3Q0FPQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7dGltZUZvcm1hdCwgdGltZVBhcnNlfSBmcm9tICdkMy10aW1lLWZvcm1hdCc7XG5pbXBvcnQge1xuICB0aW1lRGF5LFxuICB0aW1lSG91cixcbiAgVGltZUludGVydmFsLFxuICB0aW1lTWludXRlLFxuICB0aW1lTW9udGgsXG4gIHRpbWVTZWNvbmQsXG4gIHRpbWVXZWVrLFxuICB0aW1lWWVhcixcbn0gZnJvbSAnZDMtdGltZSc7XG5cbmNvbnN0IGRhdGVQYXJzZXJzID0gW1xuICB0aW1lUGFyc2UoJyVZLSVtLSVkJyksXG4gIHRpbWVQYXJzZSgnJVktJW0tJWQgJUg6JU0nKSxcbiAgdGltZVBhcnNlKCclWS0lbS0lZCAlSDolTTolUycpLFxuICB0aW1lUGFyc2UoJyVZJyksXG4gIHRpbWVQYXJzZSgnJVktJW0nKSxcbl07XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVRpbWUoaW5wdXQ6IHN0cmluZyB8IERhdGUgfCB1bmRlZmluZWQpOiBEYXRlIHwgdW5kZWZpbmVkIHtcbiAgaWYgKGlucHV0ICE9IG51bGwpIHtcbiAgICBpZiAoaW5wdXQgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgICByZXR1cm4gaW5wdXQ7XG4gICAgfVxuICAgIGZvciAoY29uc3QgcGFyc2Ugb2YgZGF0ZVBhcnNlcnMpIHtcbiAgICAgIGNvbnN0IGRhdGUgPSBwYXJzZShpbnB1dCk7XG4gICAgICBpZiAoZGF0ZSkge1xuICAgICAgICByZXR1cm4gZGF0ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IGVudW0gVGltZUdyYW51bGFyaXR5S2V5IHtcbiAgU0VDT05EID0gJ1NFQ09ORCcsXG4gIE1JTlVURSA9ICdNSU5VVEUnLFxuICBIT1VSID0gJ0hPVVInLFxuICBEQVkgPSAnREFZJyxcbiAgTU9OVEggPSAnTU9OVEgnLFxuICBZRUFSID0gJ1lFQVInLFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRpbWVHcmFudWxhcml0eSB7XG4gIGtleTogVGltZUdyYW51bGFyaXR5S2V5O1xuICBvcmRlcjogbnVtYmVyO1xuICBpbnRlcnZhbDogVGltZUludGVydmFsO1xuICBmb3JtYXQ6IChkYXRlOiBEYXRlKSA9PiBzdHJpbmc7XG4gIGZvcm1hdEZ1bGw6IChkYXRlOiBEYXRlKSA9PiBzdHJpbmc7XG59XG5cbi8vIGNvbnN0IHByZWZlcnJlZExvY2FsZSA9IG5hdmlnYXRvci5sYW5ndWFnZXMgPyBuYXZpZ2F0b3IubGFuZ3VhZ2VzWzBdIDogJ2VuJztcblxuY29uc3QgZm9ybWF0TWlsbGlzZWNvbmQgPSB0aW1lRm9ybWF0KCcuJUwnKSxcbiAgZm9ybWF0U2Vjb25kID0gdGltZUZvcm1hdCgnOiVTJyksXG4gIGZvcm1hdE1pbnV0ZSA9IHRpbWVGb3JtYXQoJyVJOiVNJyksXG4gIC8vIGZvcm1hdEhvdXIgPSAoZDogRGF0ZSkgPT4gZC50b0xvY2FsZVN0cmluZyhwcmVmZXJyZWRMb2NhbGUsIHsgaG91cjogJ251bWVyaWMnIH0pLFxuICBmb3JtYXRIb3VyID0gdGltZUZvcm1hdCgnJUkgJXAnKSxcbiAgZm9ybWF0RGF5ID0gdGltZUZvcm1hdCgnJWEgJWQnKSxcbiAgZm9ybWF0V2VlayA9IHRpbWVGb3JtYXQoJyViICVkJyksXG4gIGZvcm1hdE1vbnRoID0gdGltZUZvcm1hdCgnJWInKSxcbiAgZm9ybWF0WWVhciA9IHRpbWVGb3JtYXQoJyVZJyk7XG5cbmV4cG9ydCBmdW5jdGlvbiB0aWNrTXVsdGlGb3JtYXQoZGF0ZTogRGF0ZSkge1xuICByZXR1cm4gKFxuICAgIHRpbWVTZWNvbmQoZGF0ZSkgPCBkYXRlXG4gICAgICA/IGZvcm1hdE1pbGxpc2Vjb25kXG4gICAgICA6IHRpbWVNaW51dGUoZGF0ZSkgPCBkYXRlXG4gICAgICA/IGZvcm1hdFNlY29uZFxuICAgICAgOiB0aW1lSG91cihkYXRlKSA8IGRhdGVcbiAgICAgID8gZm9ybWF0TWludXRlXG4gICAgICA6IHRpbWVEYXkoZGF0ZSkgPCBkYXRlXG4gICAgICA/IGZvcm1hdEhvdXJcbiAgICAgIDogdGltZU1vbnRoKGRhdGUpIDwgZGF0ZVxuICAgICAgPyB0aW1lV2VlayhkYXRlKSA8IGRhdGVcbiAgICAgICAgPyBmb3JtYXREYXlcbiAgICAgICAgOiBmb3JtYXRXZWVrXG4gICAgICA6IHRpbWVZZWFyKGRhdGUpIDwgZGF0ZVxuICAgICAgPyBmb3JtYXRNb250aFxuICAgICAgOiBmb3JtYXRZZWFyXG4gICkoZGF0ZSk7XG59XG5cbmV4cG9ydCBjb25zdCBUSU1FX0dSQU5VTEFSSVRJRVM6IFRpbWVHcmFudWxhcml0eVtdID0gW1xuICB7XG4gICAgb3JkZXI6IDAsXG4gICAga2V5OiBUaW1lR3JhbnVsYXJpdHlLZXkuU0VDT05ELFxuICAgIGludGVydmFsOiB0aW1lU2Vjb25kLFxuICAgIGZvcm1hdDogZm9ybWF0U2Vjb25kLFxuICAgIGZvcm1hdEZ1bGw6IHRpbWVGb3JtYXQoJyVZLSVtLSVkICVIOiVNOiVTJyksXG4gIH0sXG4gIHtcbiAgICBvcmRlcjogMSxcbiAgICBrZXk6IFRpbWVHcmFudWxhcml0eUtleS5NSU5VVEUsXG4gICAgaW50ZXJ2YWw6IHRpbWVNaW51dGUsXG4gICAgZm9ybWF0OiBmb3JtYXRNaW51dGUsXG4gICAgZm9ybWF0RnVsbDogdGltZUZvcm1hdCgnJVktJW0tJWQgJUg6JU0nKSxcbiAgfSxcbiAge1xuICAgIG9yZGVyOiAyLFxuICAgIGtleTogVGltZUdyYW51bGFyaXR5S2V5LkhPVVIsXG4gICAgaW50ZXJ2YWw6IHRpbWVIb3VyLFxuICAgIC8vIGZvcm1hdDogKGQ6IERhdGUpID0+IGQudG9Mb2NhbGVTdHJpbmcocHJlZmVycmVkTG9jYWxlLCB7IGhvdXI6ICdudW1lcmljJywgbWludXRlOiAnMi1kaWdpdCcgfSksXG4gICAgZm9ybWF0OiBmb3JtYXRIb3VyLFxuICAgIGZvcm1hdEZ1bGw6IHRpbWVGb3JtYXQoJyVhICVkICViICVZLCAlSSAlcCcpLFxuICB9LFxuICB7XG4gICAgb3JkZXI6IDMsXG4gICAga2V5OiBUaW1lR3JhbnVsYXJpdHlLZXkuREFZLFxuICAgIGludGVydmFsOiB0aW1lRGF5LFxuICAgIGZvcm1hdDogZm9ybWF0RGF5LFxuICAgIGZvcm1hdEZ1bGw6IHRpbWVGb3JtYXQoJyVhICVkICViICVZJyksXG4gIH0sXG4gIHtcbiAgICBvcmRlcjogNCxcbiAgICBrZXk6IFRpbWVHcmFudWxhcml0eUtleS5NT05USCxcbiAgICBpbnRlcnZhbDogdGltZU1vbnRoLFxuICAgIGZvcm1hdDogZm9ybWF0TW9udGgsXG4gICAgZm9ybWF0RnVsbDogdGltZUZvcm1hdCgnJWIgJVknKSxcbiAgfSxcbiAge1xuICAgIG9yZGVyOiA1LFxuICAgIGtleTogVGltZUdyYW51bGFyaXR5S2V5LllFQVIsXG4gICAgaW50ZXJ2YWw6IHRpbWVZZWFyLFxuICAgIGZvcm1hdDogZm9ybWF0WWVhcixcbiAgICBmb3JtYXRGdWxsOiB0aW1lRm9ybWF0KCclWScpLFxuICB9LFxuXTtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldFRpbWVHcmFudWxhcml0eUJ5S2V5KGtleTogVGltZUdyYW51bGFyaXR5S2V5KSB7XG4gIHJldHVybiBUSU1FX0dSQU5VTEFSSVRJRVMuZmluZCgocykgPT4gcy5rZXkgPT09IGtleSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRUaW1lR3JhbnVsYXJpdHlCeU9yZGVyKG9yZGVyOiBudW1iZXIpIHtcbiAgcmV0dXJuIFRJTUVfR1JBTlVMQVJJVElFUy5maW5kKChzKSA9PiBzLm9yZGVyID09PSBvcmRlcik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRUaW1lR3JhbnVsYXJpdHlGb3JEYXRlKGRhdGU6IERhdGUpOiBUaW1lR3JhbnVsYXJpdHkge1xuICBsZXQgcHJldiA9IHVuZGVmaW5lZDtcbiAgZm9yIChjb25zdCBjdXJyZW50IG9mIFRJTUVfR1JBTlVMQVJJVElFUykge1xuICAgIGNvbnN0IHtpbnRlcnZhbH0gPSBjdXJyZW50O1xuICAgIGNvbnN0IGZsb29yZWQgPSBpbnRlcnZhbChkYXRlKTtcbiAgICBpZiAoZmxvb3JlZCA8IGRhdGUpIHtcbiAgICAgIGlmICghcHJldikgcmV0dXJuIGN1cnJlbnQ7XG4gICAgICByZXR1cm4gcHJldjtcbiAgICB9XG4gICAgcHJldiA9IGN1cnJlbnQ7XG4gIH1cbiAgcmV0dXJuIFRJTUVfR1JBTlVMQVJJVElFU1tUSU1FX0dSQU5VTEFSSVRJRVMubGVuZ3RoIC0gMV07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhcmVSYW5nZXNFcXVhbChcbiAgYTogW0RhdGUsIERhdGVdIHwgdW5kZWZpbmVkLFxuICBiOiBbRGF0ZSwgRGF0ZV0gfCB1bmRlZmluZWQsXG4pOiBib29sZWFuIHtcbiAgaWYgKCFhICYmICFiKSByZXR1cm4gdHJ1ZTtcbiAgaWYgKCFhIHx8ICFiKSByZXR1cm4gZmFsc2U7XG4gIHJldHVybiBhWzBdID09PSBiWzBdICYmIGFbMV0gPT09IGJbMV07XG59XG4iXX0=