@kepler.gl/utils 3.1.0-alpha.1 → 3.1.0-alpha.3
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/aggregation.d.ts +13 -0
- package/dist/aggregation.js +84 -0
- package/dist/application-config.d.ts +25 -0
- package/dist/application-config.js +52 -0
- package/dist/arrow-data-container.d.ts +62 -0
- package/dist/arrow-data-container.js +331 -0
- package/dist/color-utils.d.ts +108 -0
- package/dist/color-utils.js +443 -0
- package/dist/data-container-interface.d.ts +138 -0
- package/dist/data-container-interface.js +6 -0
- package/dist/data-container-utils.d.ts +30 -0
- package/dist/data-container-utils.js +74 -0
- package/dist/data-row.d.ts +59 -0
- package/dist/data-row.js +110 -0
- package/dist/data-scale-utils.d.ts +119 -0
- package/dist/data-scale-utils.js +340 -0
- package/dist/data-utils.d.ts +98 -0
- package/dist/data-utils.js +436 -0
- package/dist/dataset-utils.d.ts +45 -0
- package/dist/dataset-utils.js +313 -0
- package/dist/dom-to-image.d.ts +73 -0
- package/dist/dom-to-image.js +421 -0
- package/dist/dom-utils.d.ts +23 -0
- package/dist/dom-utils.js +349 -0
- package/dist/effect-utils.d.ts +24 -0
- package/dist/effect-utils.js +166 -0
- package/dist/export-map-html.d.ts +9 -0
- package/dist/export-map-html.js +25 -0
- package/dist/export-utils.d.ts +40 -0
- package/dist/export-utils.js +201 -0
- package/dist/filter-utils.d.ts +331 -0
- package/dist/filter-utils.js +1214 -0
- package/dist/format.d.ts +3 -0
- package/dist/format.js +38 -0
- package/dist/gl-utils.d.ts +1 -0
- package/dist/gl-utils.js +27 -0
- package/dist/index.d.ts +42 -0
- package/dist/index.js +941 -0
- package/dist/indexed-data-container.d.ts +34 -0
- package/dist/indexed-data-container.js +214 -0
- package/dist/locale-utils.d.ts +2 -0
- package/dist/locale-utils.js +39 -0
- package/dist/map-info-utils.d.ts +1 -0
- package/dist/map-info-utils.js +14 -0
- package/dist/map-style-utils/mapbox-gl-style-editor.d.ts +57 -0
- package/dist/map-style-utils/mapbox-gl-style-editor.js +188 -0
- package/dist/map-style-utils/mapbox-utils.d.ts +14 -0
- package/dist/map-style-utils/mapbox-utils.js +51 -0
- package/dist/map-utils.d.ts +9 -0
- package/dist/map-utils.js +48 -0
- package/dist/mapbox-utils.d.ts +7 -0
- package/dist/mapbox-utils.js +19 -0
- package/dist/noop.d.ts +1 -0
- package/dist/noop.js +13 -0
- package/dist/notifications-utils.d.ts +42 -0
- package/dist/notifications-utils.js +69 -0
- package/dist/observe-dimensions.d.ts +15 -0
- package/dist/observe-dimensions.js +130 -0
- package/dist/plot.d.ts +131 -0
- package/dist/plot.js +615 -0
- package/dist/position-utils.d.ts +6 -0
- package/dist/position-utils.js +26 -0
- package/dist/projection-utils.d.ts +22 -0
- package/dist/projection-utils.js +83 -0
- package/dist/quick-insertion-sort.d.ts +12 -0
- package/dist/quick-insertion-sort.js +132 -0
- package/dist/row-data-container.d.ts +31 -0
- package/dist/row-data-container.js +206 -0
- package/dist/searcher-utils.d.ts +1 -0
- package/dist/searcher-utils.js +25 -0
- package/dist/split-map-utils.d.ts +32 -0
- package/dist/split-map-utils.js +99 -0
- package/dist/strings.d.ts +4 -0
- package/dist/strings.js +16 -0
- package/dist/time.d.ts +54 -0
- package/dist/time.js +325 -0
- package/dist/types.d.ts +18 -0
- package/dist/types.js +6 -0
- package/dist/utils.d.ts +104 -0
- package/dist/utils.js +241 -0
- package/package.json +14 -6
@@ -0,0 +1,99 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
4
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
6
|
+
value: true
|
7
|
+
});
|
8
|
+
exports.addNewLayersToSplitMap = addNewLayersToSplitMap;
|
9
|
+
exports.computeSplitMapLayers = computeSplitMapLayers;
|
10
|
+
exports.getInitialMapLayersForSplitMap = getInitialMapLayersForSplitMap;
|
11
|
+
exports.removeLayerFromSplitMaps = removeLayerFromSplitMaps;
|
12
|
+
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
|
13
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
14
|
+
var _lodash = _interopRequireDefault(require("lodash.clonedeep"));
|
15
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
|
16
|
+
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
17
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
18
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } // SPDX-License-Identifier: MIT
|
19
|
+
// Copyright contributors to the kepler.gl project
|
20
|
+
/**
|
21
|
+
* Add new layers to both existing maps
|
22
|
+
* @param {Object} splitMaps
|
23
|
+
* @param {Object|Array<Object>} layers
|
24
|
+
* @returns {Array<Object>} new splitMaps
|
25
|
+
*/
|
26
|
+
function addNewLayersToSplitMap(splitMaps, layers) {
|
27
|
+
var newLayers = Array.isArray(layers) ? layers : [layers];
|
28
|
+
if (!splitMaps.length || !newLayers.length) {
|
29
|
+
return splitMaps;
|
30
|
+
}
|
31
|
+
|
32
|
+
// add new layer to both maps,
|
33
|
+
// don't override, if layer.id is already in splitMaps
|
34
|
+
return splitMaps.map(function (settings) {
|
35
|
+
return _objectSpread(_objectSpread({}, settings), {}, {
|
36
|
+
layers: _objectSpread(_objectSpread({}, settings.layers), newLayers.reduce(function (accu, newLayer) {
|
37
|
+
return (
|
38
|
+
// @ts-ignore
|
39
|
+
newLayer.id in settings.layers || !newLayer.config.isVisible ? accu : _objectSpread(_objectSpread({}, accu), {}, (0, _defineProperty2["default"])({}, newLayer.id, newLayer.config.isVisible))
|
40
|
+
);
|
41
|
+
}, {}))
|
42
|
+
});
|
43
|
+
});
|
44
|
+
}
|
45
|
+
|
46
|
+
/**
|
47
|
+
* Remove an existing layer from split map settings
|
48
|
+
* @param {Object} splitMaps
|
49
|
+
* @param {Object} layer
|
50
|
+
* @returns {Object} Maps of custom layer objects
|
51
|
+
*/
|
52
|
+
function removeLayerFromSplitMaps(splitMaps, layer) {
|
53
|
+
if (!splitMaps.length) {
|
54
|
+
return splitMaps;
|
55
|
+
}
|
56
|
+
return splitMaps.map(function (settings) {
|
57
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
58
|
+
var _settings$layers = settings.layers,
|
59
|
+
_layer$id = layer.id,
|
60
|
+
_ = _settings$layers[_layer$id],
|
61
|
+
newLayers = (0, _objectWithoutProperties2["default"])(_settings$layers, [_layer$id].map(_toPropertyKey));
|
62
|
+
return _objectSpread(_objectSpread({}, settings), {}, {
|
63
|
+
layers: newLayers
|
64
|
+
});
|
65
|
+
});
|
66
|
+
}
|
67
|
+
|
68
|
+
/**
|
69
|
+
* This method will compute the default maps layer settings
|
70
|
+
* based on the current layers visibility
|
71
|
+
* @param {Array<Object>} layers
|
72
|
+
* @returns {Array<Object>} layer visibility for each panel
|
73
|
+
*/
|
74
|
+
function getInitialMapLayersForSplitMap(layers) {
|
75
|
+
return layers.filter(function (layer) {
|
76
|
+
return layer.config.isVisible;
|
77
|
+
}).reduce(function (newLayers, currentLayer) {
|
78
|
+
return _objectSpread(_objectSpread({}, newLayers), {}, (0, _defineProperty2["default"])({}, currentLayer.id, currentLayer.config.isVisible));
|
79
|
+
}, {});
|
80
|
+
}
|
81
|
+
|
82
|
+
/**
|
83
|
+
* This method will get default splitMap settings based on existing layers
|
84
|
+
* @param {Array<Object>} layers
|
85
|
+
* @param {Object} options
|
86
|
+
* @returns {Array<Object>} split map settings
|
87
|
+
*/
|
88
|
+
function computeSplitMapLayers(layers, options) {
|
89
|
+
var mapLayers = getInitialMapLayersForSplitMap(layers);
|
90
|
+
var _ref = options || {},
|
91
|
+
duplicate = _ref.duplicate;
|
92
|
+
// show all visible layers in left map, leave right map empty
|
93
|
+
return [{
|
94
|
+
layers: mapLayers
|
95
|
+
}, {
|
96
|
+
layers: duplicate ? (0, _lodash["default"])(mapLayers) : {}
|
97
|
+
}];
|
98
|
+
}
|
99
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbG9kYXNoIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfdG9Qcm9wZXJ0eUtleSIsInQiLCJpIiwiX3RvUHJpbWl0aXZlIiwiX3R5cGVvZiIsInIiLCJlIiwiU3ltYm9sIiwidG9QcmltaXRpdmUiLCJjYWxsIiwiVHlwZUVycm9yIiwiU3RyaW5nIiwiTnVtYmVyIiwib3duS2V5cyIsIk9iamVjdCIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJvIiwiZmlsdGVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZW51bWVyYWJsZSIsInB1c2giLCJhcHBseSIsIl9vYmplY3RTcHJlYWQiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5MiIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiZGVmaW5lUHJvcGVydHkiLCJhZGROZXdMYXllcnNUb1NwbGl0TWFwIiwic3BsaXRNYXBzIiwibGF5ZXJzIiwibmV3TGF5ZXJzIiwiQXJyYXkiLCJpc0FycmF5IiwibWFwIiwic2V0dGluZ3MiLCJyZWR1Y2UiLCJhY2N1IiwibmV3TGF5ZXIiLCJpZCIsImNvbmZpZyIsImlzVmlzaWJsZSIsInJlbW92ZUxheWVyRnJvbVNwbGl0TWFwcyIsImxheWVyIiwiX3NldHRpbmdzJGxheWVycyIsIl9sYXllciRpZCIsIl8iLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMyIiwiZ2V0SW5pdGlhbE1hcExheWVyc0ZvclNwbGl0TWFwIiwiY3VycmVudExheWVyIiwiY29tcHV0ZVNwbGl0TWFwTGF5ZXJzIiwib3B0aW9ucyIsIm1hcExheWVycyIsIl9yZWYiLCJkdXBsaWNhdGUiLCJjbG9uZURlZXAiXSwic291cmNlcyI6WyIuLi9zcmMvc3BsaXQtbWFwLXV0aWxzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCBjbG9uZURlZXAgZnJvbSAnbG9kYXNoLmNsb25lZGVlcCc7XG5cbi8qKlxuICogQWRkIG5ldyBsYXllcnMgdG8gYm90aCBleGlzdGluZyBtYXBzXG4gKiBAcGFyYW0ge09iamVjdH0gc3BsaXRNYXBzXG4gKiBAcGFyYW0ge09iamVjdHxBcnJheTxPYmplY3Q+fSBsYXllcnNcbiAqIEByZXR1cm5zIHtBcnJheTxPYmplY3Q+fSBuZXcgc3BsaXRNYXBzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhZGROZXdMYXllcnNUb1NwbGl0TWFwKHNwbGl0TWFwcywgbGF5ZXJzKSB7XG4gIGNvbnN0IG5ld0xheWVycyA9IEFycmF5LmlzQXJyYXkobGF5ZXJzKSA/IGxheWVycyA6IFtsYXllcnNdO1xuXG4gIGlmICghc3BsaXRNYXBzLmxlbmd0aCB8fCAhbmV3TGF5ZXJzLmxlbmd0aCkge1xuICAgIHJldHVybiBzcGxpdE1hcHM7XG4gIH1cblxuICAvLyBhZGQgbmV3IGxheWVyIHRvIGJvdGggbWFwcyxcbiAgLy8gZG9uJ3Qgb3ZlcnJpZGUsIGlmIGxheWVyLmlkIGlzIGFscmVhZHkgaW4gc3BsaXRNYXBzXG4gIHJldHVybiBzcGxpdE1hcHMubWFwKHNldHRpbmdzID0+ICh7XG4gICAgLi4uc2V0dGluZ3MsXG4gICAgbGF5ZXJzOiB7XG4gICAgICAuLi5zZXR0aW5ncy5sYXllcnMsXG4gICAgICAuLi5uZXdMYXllcnMucmVkdWNlKFxuICAgICAgICAoYWNjdSwgbmV3TGF5ZXIpID0+XG4gICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgIG5ld0xheWVyLmlkIGluIHNldHRpbmdzLmxheWVycyB8fCAhbmV3TGF5ZXIuY29uZmlnLmlzVmlzaWJsZVxuICAgICAgICAgICAgPyBhY2N1XG4gICAgICAgICAgICA6IHtcbiAgICAgICAgICAgICAgICAuLi5hY2N1LFxuICAgICAgICAgICAgICAgIFtuZXdMYXllci5pZF06IG5ld0xheWVyLmNvbmZpZy5pc1Zpc2libGVcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAge31cbiAgICAgIClcbiAgICB9XG4gIH0pKTtcbn1cblxuLyoqXG4gKiBSZW1vdmUgYW4gZXhpc3RpbmcgbGF5ZXIgZnJvbSBzcGxpdCBtYXAgc2V0dGluZ3NcbiAqIEBwYXJhbSB7T2JqZWN0fSBzcGxpdE1hcHNcbiAqIEBwYXJhbSB7T2JqZWN0fSBsYXllclxuICogQHJldHVybnMge09iamVjdH0gTWFwcyBvZiBjdXN0b20gbGF5ZXIgb2JqZWN0c1xuICovXG5leHBvcnQgZnVuY3Rpb24gcmVtb3ZlTGF5ZXJGcm9tU3BsaXRNYXBzKHNwbGl0TWFwcywgbGF5ZXIpIHtcbiAgaWYgKCFzcGxpdE1hcHMubGVuZ3RoKSB7XG4gICAgcmV0dXJuIHNwbGl0TWFwcztcbiAgfVxuICByZXR1cm4gc3BsaXRNYXBzLm1hcChzZXR0aW5ncyA9PiB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAgIGNvbnN0IHtbbGF5ZXIuaWRdOiBfLCAuLi5uZXdMYXllcnN9ID0gc2V0dGluZ3MubGF5ZXJzO1xuICAgIHJldHVybiB7XG4gICAgICAuLi5zZXR0aW5ncyxcbiAgICAgIGxheWVyczogbmV3TGF5ZXJzXG4gICAgfTtcbiAgfSk7XG59XG5cbi8qKlxuICogVGhpcyBtZXRob2Qgd2lsbCBjb21wdXRlIHRoZSBkZWZhdWx0IG1hcHMgbGF5ZXIgc2V0dGluZ3NcbiAqIGJhc2VkIG9uIHRoZSBjdXJyZW50IGxheWVycyB2aXNpYmlsaXR5XG4gKiBAcGFyYW0ge0FycmF5PE9iamVjdD59IGxheWVyc1xuICogQHJldHVybnMge0FycmF5PE9iamVjdD59IGxheWVyIHZpc2liaWxpdHkgZm9yIGVhY2ggcGFuZWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEluaXRpYWxNYXBMYXllcnNGb3JTcGxpdE1hcChsYXllcnMpIHtcbiAgcmV0dXJuIGxheWVyc1xuICAgIC5maWx0ZXIobGF5ZXIgPT4gbGF5ZXIuY29uZmlnLmlzVmlzaWJsZSlcbiAgICAucmVkdWNlKFxuICAgICAgKG5ld0xheWVycywgY3VycmVudExheWVyKSA9PiAoe1xuICAgICAgICAuLi5uZXdMYXllcnMsXG4gICAgICAgIFtjdXJyZW50TGF5ZXIuaWRdOiBjdXJyZW50TGF5ZXIuY29uZmlnLmlzVmlzaWJsZVxuICAgICAgfSksXG4gICAgICB7fVxuICAgICk7XG59XG5cbi8qKlxuICogVGhpcyBtZXRob2Qgd2lsbCBnZXQgZGVmYXVsdCBzcGxpdE1hcCBzZXR0aW5ncyBiYXNlZCBvbiBleGlzdGluZyBsYXllcnNcbiAqIEBwYXJhbSB7QXJyYXk8T2JqZWN0Pn0gbGF5ZXJzXG4gKiBAcGFyYW0ge09iamVjdH0gb3B0aW9uc1xuICogQHJldHVybnMge0FycmF5PE9iamVjdD59IHNwbGl0IG1hcCBzZXR0aW5nc1xuICovXG5leHBvcnQgZnVuY3Rpb24gY29tcHV0ZVNwbGl0TWFwTGF5ZXJzKGxheWVycywgb3B0aW9ucz86IHtkdXBsaWNhdGU6IGJvb2xlYW59KSB7XG4gIGNvbnN0IG1hcExheWVycyA9IGdldEluaXRpYWxNYXBMYXllcnNGb3JTcGxpdE1hcChsYXllcnMpO1xuICBjb25zdCB7ZHVwbGljYXRlfSA9IG9wdGlvbnMgfHwge307XG4gIC8vIHNob3cgYWxsIHZpc2libGUgbGF5ZXJzIGluIGxlZnQgbWFwLCBsZWF2ZSByaWdodCBtYXAgZW1wdHlcbiAgcmV0dXJuIFt7bGF5ZXJzOiBtYXBMYXllcnN9LCB7bGF5ZXJzOiBkdXBsaWNhdGUgPyBjbG9uZURlZXAobWFwTGF5ZXJzKSA6IHt9fV07XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUFHQSxJQUFBQSxPQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFBeUMsU0FBQUMsZUFBQUMsQ0FBQSxRQUFBQyxDQUFBLEdBQUFDLFlBQUEsQ0FBQUYsQ0FBQSxnQ0FBQUcsT0FBQSxDQUFBRixDQUFBLElBQUFBLENB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
|
package/dist/strings.js
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
4
|
+
value: true
|
5
|
+
});
|
6
|
+
exports.capitalizeFirstLetter = capitalizeFirstLetter;
|
7
|
+
// SPDX-License-Identifier: MIT
|
8
|
+
// Copyright contributors to the kepler.gl project
|
9
|
+
|
10
|
+
/**
|
11
|
+
* Capitalize first letter of a string
|
12
|
+
*/
|
13
|
+
function capitalizeFirstLetter(str) {
|
14
|
+
return typeof str === 'string' ? str.charAt(0).toUpperCase() + str.slice(1) : str;
|
15
|
+
}
|
16
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjYXBpdGFsaXplRmlyc3RMZXR0ZXIiLCJzdHIiLCJjaGFyQXQiLCJ0b1VwcGVyQ2FzZSIsInNsaWNlIl0sInNvdXJjZXMiOlsiLi4vc3JjL3N0cmluZ3MudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuLyoqXG4gKiBDYXBpdGFsaXplIGZpcnN0IGxldHRlciBvZiBhIHN0cmluZ1xuICovXG5leHBvcnQgZnVuY3Rpb24gY2FwaXRhbGl6ZUZpcnN0TGV0dGVyKHN0cjogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHR5cGVvZiBzdHIgPT09ICdzdHJpbmcnID8gc3RyLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgc3RyLnNsaWNlKDEpIDogc3RyO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNPLFNBQVNBLHFCQUFxQkEsQ0FBQ0MsR0FBVyxFQUFVO0VBQ3pELE9BQU8sT0FBT0EsR0FBRyxLQUFLLFFBQVEsR0FBR0EsR0FBRyxDQUFDQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUNDLFdBQVcsQ0FBQyxDQUFDLEdBQUdGLEdBQUcsQ0FBQ0csS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHSCxHQUFHO0FBQ25GIiwiaWdub3JlTGlzdCI6W119
|
package/dist/time.d.ts
ADDED
@@ -0,0 +1,54 @@
|
|
1
|
+
import { AnimationConfig, Timeline, TimeRangeFilter, Filter } from '@kepler.gl/types';
|
2
|
+
import { KeplerTableModel } from './types';
|
3
|
+
export declare const TIMELINE_MODES: {
|
4
|
+
inner: string;
|
5
|
+
outer: string;
|
6
|
+
};
|
7
|
+
export declare const TileTimeInterval: {
|
8
|
+
YEAR: string;
|
9
|
+
MONTH: string;
|
10
|
+
DAY: string;
|
11
|
+
HOUR: string;
|
12
|
+
MINUTE: string;
|
13
|
+
};
|
14
|
+
export declare const TIME_INTERVALS_ORDERED: string[];
|
15
|
+
export declare const LayerToFilterTimeInterval: {
|
16
|
+
[x: string]: string;
|
17
|
+
};
|
18
|
+
export declare const SAMPLE_TIMELINE: {
|
19
|
+
value: number[];
|
20
|
+
domain: number[];
|
21
|
+
speed: number;
|
22
|
+
enableInteraction: boolean;
|
23
|
+
isAnimating: boolean;
|
24
|
+
step: null;
|
25
|
+
mode: string;
|
26
|
+
};
|
27
|
+
export declare const getTimelineFromAnimationConfig: (animationConfig: AnimationConfig) => Timeline;
|
28
|
+
export declare function getIntervalByTicks(ticks: any, start: any, stop: any): string;
|
29
|
+
/**
|
30
|
+
* mappedValue is saved to dataset.fields.filterProps
|
31
|
+
* @param dataset {KeplerTable}
|
32
|
+
* @param filter
|
33
|
+
*/
|
34
|
+
export declare function getFilterMappedValue(dataset: KeplerTableModel<any, any>, filter: Filter): Filter['mappedValue'] | null;
|
35
|
+
export declare function intervalToFunction(id: string): any;
|
36
|
+
/**
|
37
|
+
* Get initial interval from filter and datasets
|
38
|
+
* @param filter
|
39
|
+
* @param datasets
|
40
|
+
* @returns
|
41
|
+
*/
|
42
|
+
export declare function getInitialInterval(filter: Filter, datasets: Record<string, KeplerTableModel<any, any>>): string;
|
43
|
+
/**
|
44
|
+
*
|
45
|
+
* @param options
|
46
|
+
* @param domain
|
47
|
+
*/
|
48
|
+
export declare function filterIntervalOptions(options: any, domain: any): any;
|
49
|
+
/**
|
50
|
+
* Get timeline from filter
|
51
|
+
* @param filter TimeRangeFilter filter
|
52
|
+
* @returns Timeline
|
53
|
+
*/
|
54
|
+
export declare const getTimelineFromFilter: (filter: TimeRangeFilter) => Timeline;
|
package/dist/time.js
ADDED
@@ -0,0 +1,325 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
5
|
+
value: true
|
6
|
+
});
|
7
|
+
exports.TileTimeInterval = exports.TIME_INTERVALS_ORDERED = exports.TIMELINE_MODES = exports.SAMPLE_TIMELINE = exports.LayerToFilterTimeInterval = void 0;
|
8
|
+
exports.filterIntervalOptions = filterIntervalOptions;
|
9
|
+
exports.getFilterMappedValue = getFilterMappedValue;
|
10
|
+
exports.getInitialInterval = getInitialInterval;
|
11
|
+
exports.getIntervalByTicks = getIntervalByTicks;
|
12
|
+
exports.getTimelineFromFilter = exports.getTimelineFromAnimationConfig = void 0;
|
13
|
+
exports.intervalToFunction = intervalToFunction;
|
14
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
15
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
16
|
+
var _d3Array = require("d3-array");
|
17
|
+
var _moment = _interopRequireDefault(require("moment"));
|
18
|
+
var _constants = require("@kepler.gl/constants");
|
19
|
+
var _commonUtils = require("@kepler.gl/common-utils");
|
20
|
+
var _aggregation = require("./aggregation");
|
21
|
+
var _plot = require("./plot");
|
22
|
+
// SPDX-License-Identifier: MIT
|
23
|
+
// Copyright contributors to the kepler.gl project
|
24
|
+
|
25
|
+
var TIMELINE_MODES = exports.TIMELINE_MODES = {
|
26
|
+
inner: 'inner',
|
27
|
+
outer: 'outer'
|
28
|
+
};
|
29
|
+
var TileTimeInterval = exports.TileTimeInterval = {
|
30
|
+
YEAR: 'Y',
|
31
|
+
MONTH: 'M',
|
32
|
+
DAY: 'D',
|
33
|
+
HOUR: 'H',
|
34
|
+
MINUTE: 'T'
|
35
|
+
};
|
36
|
+
var TIME_INTERVALS_ORDERED = exports.TIME_INTERVALS_ORDERED = [TileTimeInterval.MINUTE, TileTimeInterval.HOUR, TileTimeInterval.DAY, TileTimeInterval.MONTH, TileTimeInterval.YEAR];
|
37
|
+
var LayerToFilterTimeInterval = exports.LayerToFilterTimeInterval = (0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])({}, TileTimeInterval.MINUTE, _constants.INTERVAL['1-minute']), TileTimeInterval.HOUR, _constants.INTERVAL['1-hour']), TileTimeInterval.DAY, _constants.INTERVAL['1-day']), TileTimeInterval.MONTH, _constants.INTERVAL['1-month']), TileTimeInterval.YEAR, _constants.INTERVAL['1-year']);
|
38
|
+
var SAMPLE_TIMELINE = exports.SAMPLE_TIMELINE = {
|
39
|
+
// value: [15], // represent 15% of the all width
|
40
|
+
value: [5, 15],
|
41
|
+
// represent start at 5% and ends at 15%
|
42
|
+
domain: [1, 100],
|
43
|
+
// represent the total domain
|
44
|
+
speed: 1,
|
45
|
+
enableInteraction: false,
|
46
|
+
// can use interact with this timeline
|
47
|
+
isAnimating: false,
|
48
|
+
step: null,
|
49
|
+
// @todo: giuseppe coverType: 'inner' | 'outer'
|
50
|
+
mode: TIMELINE_MODES.inner
|
51
|
+
// ....
|
52
|
+
};
|
53
|
+
var getTimelineFromAnimationConfig = exports.getTimelineFromAnimationConfig = function getTimelineFromAnimationConfig(animationConfig) {
|
54
|
+
var currentTime = animationConfig.currentTime,
|
55
|
+
domain = animationConfig.domain,
|
56
|
+
speed = animationConfig.speed,
|
57
|
+
isAnimating = animationConfig.isAnimating,
|
58
|
+
timeSteps = animationConfig.timeSteps,
|
59
|
+
defaultTimeFormat = animationConfig.defaultTimeFormat,
|
60
|
+
timeFormat = animationConfig.timeFormat,
|
61
|
+
timezone = animationConfig.timezone;
|
62
|
+
return {
|
63
|
+
// @ts-expect-error
|
64
|
+
value: (0, _commonUtils.toArray)(currentTime),
|
65
|
+
enableInteraction: true,
|
66
|
+
domain: domain,
|
67
|
+
speed: speed,
|
68
|
+
isAnimating: isAnimating || false,
|
69
|
+
timeSteps: timeSteps,
|
70
|
+
defaultTimeFormat: defaultTimeFormat,
|
71
|
+
timeFormat: timeFormat,
|
72
|
+
timezone: timezone,
|
73
|
+
timeBins: null,
|
74
|
+
marks: null
|
75
|
+
};
|
76
|
+
};
|
77
|
+
|
78
|
+
// check if the data inherent default time interval
|
79
|
+
|
80
|
+
// https://github.com/d3/d3-scale/blob/732ed4b1cd5c643700571d1089c7deb8472242a6/src/time.js#L69
|
81
|
+
// given number of ticks, calculate a reasonable interval
|
82
|
+
function getIntervalByTicks(ticks, start, stop) {
|
83
|
+
if (ticks === null) ticks = 10;
|
84
|
+
var tickIntervals = Object.values(_constants.TICK_INTERVALS);
|
85
|
+
var interval;
|
86
|
+
var step;
|
87
|
+
// If a desired tick count is specified, pick a reasonable tick interval
|
88
|
+
// based on the extent of the domain and a rough estimate of tick size.
|
89
|
+
// Otherwise, assume interval is already a time interval and use it.
|
90
|
+
if (typeof ticks === 'number') {
|
91
|
+
var target = Math.abs(stop - start) / ticks;
|
92
|
+
var i = (0, _d3Array.bisector)(function (d) {
|
93
|
+
return d.duration;
|
94
|
+
}).right(tickIntervals, target);
|
95
|
+
if (i === tickIntervals.length) {
|
96
|
+
step = (0, _d3Array.tickStep)(start / _constants.durationYear, stop / _constants.durationYear, ticks);
|
97
|
+
interval = 'year';
|
98
|
+
} else if (i) {
|
99
|
+
var tickInterval = tickIntervals[target / tickIntervals[i - 1].duration < tickIntervals[i].duration / target ? i - 1 : i];
|
100
|
+
// @ts-ignore TODO/ib
|
101
|
+
step = tickInterval.step;
|
102
|
+
// @ts-ignore TODO/ib
|
103
|
+
interval = tickInterval.interval;
|
104
|
+
} else {
|
105
|
+
step = Math.max((0, _d3Array.tickStep)(start, stop, ticks), 1);
|
106
|
+
interval = 'millisecond';
|
107
|
+
}
|
108
|
+
}
|
109
|
+
return "".concat(step, "-").concat(interval);
|
110
|
+
}
|
111
|
+
|
112
|
+
// get a number of unique samples
|
113
|
+
function getUniqueSamples(values, count) {
|
114
|
+
var i = -1;
|
115
|
+
var samples = [];
|
116
|
+
var sampleMap = {};
|
117
|
+
while (i++ < values.length && samples.length < count) {
|
118
|
+
var v = values[i];
|
119
|
+
if (v !== undefined && v !== null && !sampleMap[v]) {
|
120
|
+
sampleMap[v] = true;
|
121
|
+
samples.push(v);
|
122
|
+
}
|
123
|
+
}
|
124
|
+
return Object.values(samples);
|
125
|
+
}
|
126
|
+
|
127
|
+
/**
|
128
|
+
* Given an array of epoch timestamp. sort it, if number of element
|
129
|
+
* share the same time interval exceed thresholf, and total steps smaller than 100, return it, else return null
|
130
|
+
* @param values
|
131
|
+
*/
|
132
|
+
function detectInterval() {
|
133
|
+
var values = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
|
134
|
+
var domain = arguments.length > 1 ? arguments[1] : undefined;
|
135
|
+
var maxSteps = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 10;
|
136
|
+
var threshold = 0.7;
|
137
|
+
var sorted = values.sort(_d3Array.ascending);
|
138
|
+
|
139
|
+
// get first 100 unique sorted ts
|
140
|
+
var samples = getUniqueSamples(sorted, 100);
|
141
|
+
if (samples.length < 2) {
|
142
|
+
return null;
|
143
|
+
}
|
144
|
+
|
145
|
+
// get all intervals
|
146
|
+
var intervals = samples.reduce(function (accu, d, i) {
|
147
|
+
if (i > 0) {
|
148
|
+
var duration = _moment["default"].duration(_moment["default"].utc(samples[i]).diff(_moment["default"].utc(samples[i - 1])));
|
149
|
+
var _getDurationUnit = getDurationUnit(duration),
|
150
|
+
_getDurationUnit2 = (0, _slicedToArray2["default"])(_getDurationUnit, 2),
|
151
|
+
dur = _getDurationUnit2[0],
|
152
|
+
c = _getDurationUnit2[1];
|
153
|
+
accu.push("".concat(c, "-").concat(dur));
|
154
|
+
}
|
155
|
+
return accu;
|
156
|
+
}, []);
|
157
|
+
|
158
|
+
// find the most occured interval
|
159
|
+
var occur = (0, _aggregation.getFrequency)(intervals);
|
160
|
+
var maxOccr = Object.keys(occur).reduce(function (prev, key) {
|
161
|
+
return occur[prev] >= occur[key] ? prev : key;
|
162
|
+
}, Object.keys(occur)[0]);
|
163
|
+
|
164
|
+
// if occurance passed threshold
|
165
|
+
var mostOccur = occur[maxOccr] / intervals.length;
|
166
|
+
if (mostOccur >= threshold) {
|
167
|
+
var _maxOccr$split = maxOccr.split('-'),
|
168
|
+
_maxOccr$split2 = (0, _slicedToArray2["default"])(_maxOccr$split, 2),
|
169
|
+
step = _maxOccr$split2[0],
|
170
|
+
dur = _maxOccr$split2[1];
|
171
|
+
var durationSecond = _constants.DURATIONS[dur] * parseInt(step); // eslint-disable-line radix
|
172
|
+
var totalSteps = (domain[1] - domain[0]) / durationSecond;
|
173
|
+
if (totalSteps < maxSteps) {
|
174
|
+
// duration function is .days interval is day
|
175
|
+
return maxOccr.substring(0, maxOccr.length - 1);
|
176
|
+
}
|
177
|
+
}
|
178
|
+
return null;
|
179
|
+
}
|
180
|
+
|
181
|
+
/**
|
182
|
+
* mappedValue is saved to dataset.fields.filterProps
|
183
|
+
* @param dataset {KeplerTable}
|
184
|
+
* @param filter
|
185
|
+
*/
|
186
|
+
function getFilterMappedValue(dataset, filter) {
|
187
|
+
var dataId = dataset.id;
|
188
|
+
var fieldName = filter.name[filter.dataId.indexOf(dataId)];
|
189
|
+
var field = dataset.getColumnField(fieldName);
|
190
|
+
if (!field) {
|
191
|
+
// eslint-disable-next-line no-console, no-undef
|
192
|
+
console.warn("field ".concat(fieldName, " does not exist on dataset"));
|
193
|
+
return null;
|
194
|
+
}
|
195
|
+
var mappedValue = (field.filterProps || {}).mappedValue;
|
196
|
+
if (!mappedValue) {
|
197
|
+
// eslint-disable-next-line no-console, no-undef
|
198
|
+
console.warn("mappedValue doesnt exist on filter field ".concat(filter.name));
|
199
|
+
return null;
|
200
|
+
}
|
201
|
+
return mappedValue;
|
202
|
+
}
|
203
|
+
/**
|
204
|
+
* Find the round unit of given durmostOccurtion: x years | months | days
|
205
|
+
* @param duration
|
206
|
+
*/
|
207
|
+
function getDurationUnit(duration) {
|
208
|
+
var durFuncs = Object.keys(_constants.DURATIONS);
|
209
|
+
for (var i = 0; i < durFuncs.length; i++) {
|
210
|
+
var c = duration[durFuncs[i]]();
|
211
|
+
if (c > 0) {
|
212
|
+
return [durFuncs[i], c];
|
213
|
+
}
|
214
|
+
}
|
215
|
+
return ['milliseconds', 1];
|
216
|
+
}
|
217
|
+
function intervalToFunction(id) {
|
218
|
+
var _id$split = id.split('-'),
|
219
|
+
_id$split2 = (0, _slicedToArray2["default"])(_id$split, 2),
|
220
|
+
stepStr = _id$split2[0],
|
221
|
+
interval = _id$split2[1];
|
222
|
+
var step = parseInt(stepStr); // eslint-disable-line radix
|
223
|
+
if (!step) {
|
224
|
+
// eslint-disable-next-line no-console, no-undef
|
225
|
+
console.warn('Step is not an integer');
|
226
|
+
return null;
|
227
|
+
}
|
228
|
+
if (!_constants.TIME_INTERVALS[interval]) {
|
229
|
+
// eslint-disable-next-line no-console, no-undef
|
230
|
+
console.warn("Undefined time interval ".concat(interval));
|
231
|
+
return null;
|
232
|
+
}
|
233
|
+
return _constants.TIME_INTERVALS[interval].every(step);
|
234
|
+
}
|
235
|
+
|
236
|
+
/**
|
237
|
+
* Get initial interval from filter and datasets
|
238
|
+
* @param filter
|
239
|
+
* @param datasets
|
240
|
+
* @returns
|
241
|
+
*/
|
242
|
+
function getInitialInterval(filter, datasets) {
|
243
|
+
var domain = filter.domain;
|
244
|
+
var mergeMappedValue = filter.dataId.reduce(function (accu, dataId) {
|
245
|
+
var mappedValue = getFilterMappedValue(datasets[dataId], filter);
|
246
|
+
if (!mappedValue) {
|
247
|
+
return accu;
|
248
|
+
}
|
249
|
+
for (var i = 0; i < mappedValue.length; i++) {
|
250
|
+
accu.push(mappedValue[i]);
|
251
|
+
}
|
252
|
+
return accu;
|
253
|
+
}, []);
|
254
|
+
|
255
|
+
// check if data has predefined interval
|
256
|
+
var interval = detectInterval(mergeMappedValue, domain);
|
257
|
+
if (!interval) {
|
258
|
+
// @ts-expect-error need better types for domain
|
259
|
+
var _domain = (0, _slicedToArray2["default"])(domain, 2),
|
260
|
+
t0 = _domain[0],
|
261
|
+
t1 = _domain[1];
|
262
|
+
interval = getIntervalByTicks(_constants.BINS_LARGE, t0, t1);
|
263
|
+
}
|
264
|
+
return interval;
|
265
|
+
}
|
266
|
+
|
267
|
+
// Filter interval options by time filter domain
|
268
|
+
// max number of interval is 1000
|
269
|
+
/**
|
270
|
+
*
|
271
|
+
* @param options
|
272
|
+
* @param domain
|
273
|
+
*/
|
274
|
+
function filterIntervalOptions(options, domain) {
|
275
|
+
var maxBins = 1000;
|
276
|
+
var minBins = 2;
|
277
|
+
var timeSpan = domain[1] - domain[0];
|
278
|
+
return options.filter(function (op) {
|
279
|
+
var id = op.id;
|
280
|
+
if (!_constants.TICK_INTERVALS[id]) {
|
281
|
+
return false;
|
282
|
+
}
|
283
|
+
var interval = _constants.TICK_INTERVALS[id];
|
284
|
+
|
285
|
+
// rough count on bins
|
286
|
+
var count = timeSpan / (interval.step * interval.duration);
|
287
|
+
return count >= minBins && count <= maxBins;
|
288
|
+
});
|
289
|
+
}
|
290
|
+
|
291
|
+
/**
|
292
|
+
* Get timeline from filter
|
293
|
+
* @param filter TimeRangeFilter filter
|
294
|
+
* @returns Timeline
|
295
|
+
*/
|
296
|
+
var getTimelineFromFilter = exports.getTimelineFromFilter = function getTimelineFromFilter(filter) {
|
297
|
+
var value = filter.value,
|
298
|
+
domain = filter.domain,
|
299
|
+
speed = filter.speed,
|
300
|
+
isAnimating = filter.isAnimating,
|
301
|
+
step = filter.step,
|
302
|
+
timeSteps = filter.timeSteps,
|
303
|
+
defaultTimeFormat = filter.defaultTimeFormat,
|
304
|
+
timeFormat = filter.timeFormat,
|
305
|
+
timezone = filter.timezone,
|
306
|
+
timeBins = filter.timeBins,
|
307
|
+
animationWindow = filter.animationWindow,
|
308
|
+
plotType = filter.plotType;
|
309
|
+
return {
|
310
|
+
value: value,
|
311
|
+
enableInteraction: true,
|
312
|
+
domain: domain,
|
313
|
+
speed: speed,
|
314
|
+
isAnimating: isAnimating,
|
315
|
+
step: step,
|
316
|
+
timeSteps: timeSteps,
|
317
|
+
defaultTimeFormat: defaultTimeFormat,
|
318
|
+
timeFormat: timeFormat,
|
319
|
+
timezone: timezone,
|
320
|
+
timeBins: timeBins,
|
321
|
+
animationWindow: animationWindow,
|
322
|
+
marks: (0, _plot.getBinThresholds)(plotType === null || plotType === void 0 ? void 0 : plotType.interval, domain)
|
323
|
+
};
|
324
|
+
};
|
325
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZDNBcnJheSIsInJlcXVpcmUiLCJfbW9tZW50IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9jb25zdGFudHMiLCJfY29tbW9uVXRpbHMiLCJfYWdncmVnYXRpb24iLCJfcGxvdCIsIlRJTUVMSU5FX01PREVTIiwiZXhwb3J0cyIsImlubmVyIiwib3V0ZXIiLCJUaWxlVGltZUludGVydmFsIiwiWUVBUiIsIk1PTlRIIiwiREFZIiwiSE9VUiIsIk1JTlVURSIsIlRJTUVfSU5URVJWQUxTX09SREVSRUQiLCJMYXllclRvRmlsdGVyVGltZUludGVydmFsIiwiX2RlZmluZVByb3BlcnR5MiIsIklOVEVSVkFMIiwiU0FNUExFX1RJTUVMSU5FIiwidmFsdWUiLCJkb21haW4iLCJzcGVlZCIsImVuYWJsZUludGVyYWN0aW9uIiwiaXNBbmltYXRpbmciLCJzdGVwIiwibW9kZSIsImdldFRpbWVsaW5lRnJvbUFuaW1hdGlvbkNvbmZpZyIsImFuaW1hdGlvbkNvbmZpZyIsImN1cnJlbnRUaW1lIiwidGltZVN0ZXBzIiwiZGVmYXVsdFRpbWVGb3JtYXQiLCJ0aW1lRm9ybWF0IiwidGltZXpvbmUiLCJ0b0FycmF5IiwidGltZUJpbnMiLCJtYXJrcyIsImdldEludGVydmFsQnlUaWNrcyIsInRpY2tzIiwic3RhcnQiLCJzdG9wIiwidGlja0ludGVydmFscyIsIk9iamVjdCIsInZhbHVlcyIsIlRJQ0tfSU5URVJWQUxTIiwiaW50ZXJ2YWwiLCJ0YXJnZXQiLCJNYXRoIiwiYWJzIiwiaSIsImJpc2VjdG9yIiwiZCIsImR1cmF0aW9uIiwicmlnaHQiLCJsZW5ndGgiLCJ0aWNrU3RlcCIsImR1cmF0aW9uWWVhciIsInRpY2tJbnRlcnZhbCIsIm1heCIsImNvbmNhdCIsImdldFVuaXF1ZVNhbXBsZXMiLCJjb3VudCIsInNhbXBsZXMiLCJzYW1wbGVNYXAiLCJ2IiwidW5kZWZpbmVkIiwicHVzaCIsImRldGVjdEludGVydmFsIiwiYXJndW1lbnRzIiwibWF4U3RlcHMiLCJ0aHJlc2hvbGQiLCJzb3J0ZWQiLCJzb3J0IiwiYXNjZW5kaW5nIiwiaW50ZXJ2YWxzIiwicmVkdWNlIiwiYWNjdSIsIm1vbWVudCIsInV0YyIsImRpZmYiLCJfZ2V0RHVyYXRpb25Vbml0IiwiZ2V0RHVyYXRpb25Vbml0IiwiX2dldER1cmF0aW9uVW5pdDIiLCJfc2xpY2VkVG9BcnJheTIiLCJkdXIiLCJjIiwib2NjdXIiLCJnZXRGcmVxdWVuY3kiLCJtYXhPY2NyIiwia2V5cyIsInByZXYiLCJrZXkiLCJtb3N0T2NjdXIiLCJfbWF4T2NjciRzcGxpdCIsInNwbGl0IiwiX21heE9jY3Ikc3BsaXQyIiwiZHVyYXRpb25TZWNvbmQiLCJEVVJBVElPTlMiLCJwYXJzZUludCIsInRvdGFsU3RlcHMiLCJzdWJzdHJpbmciLCJnZXRGaWx0ZXJNYXBwZWRWYWx1ZSIsImRhdGFzZXQiLCJmaWx0ZXIiLCJkYXRhSWQiLCJpZCIsImZpZWxkTmFtZSIsIm5hbWUiLCJpbmRleE9mIiwiZmllbGQiLCJnZXRDb2x1bW5GaWVsZCIsImNvbnNvbGUiLCJ3YXJuIiwibWFwcGVkVmFsdWUiLCJmaWx0ZXJQcm9wcyIsImR1ckZ1bmNzIiwiaW50ZXJ2YWxUb0Z1bmN0aW9uIiwiX2lkJHNwbGl0IiwiX2lkJHNwbGl0MiIsInN0ZXBTdHIiLCJUSU1FX0lOVEVSVkFMUyIsImV2ZXJ5IiwiZ2V0SW5pdGlhbEludGVydmFsIiwiZGF0YXNldHMiLCJtZXJnZU1hcHBlZFZhbHVlIiwiX2RvbWFpbiIsInQwIiwidDEiLCJCSU5TX0xBUkdFIiwiZmlsdGVySW50ZXJ2YWxPcHRpb25zIiwib3B0aW9ucyIsIm1heEJpbnMiLCJtaW5CaW5zIiwidGltZVNwYW4iLCJvcCIsImdldFRpbWVsaW5lRnJvbUZpbHRlciIsImFuaW1hdGlvbldpbmRvdyIsInBsb3RUeXBlIiwiZ2V0QmluVGhyZXNob2xkcyJdLCJzb3VyY2VzIjpbIi4uL3NyYy90aW1lLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCB7YXNjZW5kaW5nLCBiaXNlY3RvciwgdGlja1N0ZXB9IGZyb20gJ2QzLWFycmF5JztcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50JztcblxuaW1wb3J0IHtcbiAgVElDS19JTlRFUlZBTFMsXG4gIEJJTlNfTEFSR0UsXG4gIERVUkFUSU9OUyxcbiAgVElNRV9JTlRFUlZBTFMsXG4gIGR1cmF0aW9uWWVhcixcbiAgSU5URVJWQUwsXG4gIFRpY2tJbnRlcnZhbFxufSBmcm9tICdAa2VwbGVyLmdsL2NvbnN0YW50cyc7XG5pbXBvcnQge3RvQXJyYXl9IGZyb20gJ0BrZXBsZXIuZ2wvY29tbW9uLXV0aWxzJztcbmltcG9ydCB7QW5pbWF0aW9uQ29uZmlnLCBUaW1lbGluZSwgVGltZVJhbmdlRmlsdGVyLCBGaWx0ZXJ9IGZyb20gJ0BrZXBsZXIuZ2wvdHlwZXMnO1xuXG5pbXBvcnQge2dldEZyZXF1ZW5jeX0gZnJvbSAnLi9hZ2dyZWdhdGlvbic7XG5pbXBvcnQge2dldEJpblRocmVzaG9sZHN9IGZyb20gJy4vcGxvdCc7XG5pbXBvcnQge0tlcGxlclRhYmxlTW9kZWx9IGZyb20gJy4vdHlwZXMnO1xuXG5leHBvcnQgY29uc3QgVElNRUxJTkVfTU9ERVMgPSB7XG4gIGlubmVyOiAnaW5uZXInLFxuICBvdXRlcjogJ291dGVyJ1xufTtcblxuZXhwb3J0IGNvbnN0IFRpbGVUaW1lSW50ZXJ2YWwgPSB7XG4gIFlFQVI6ICdZJyxcbiAgTU9OVEg6ICdNJyxcbiAgREFZOiAnRCcsXG4gIEhPVVI6ICdIJyxcbiAgTUlOVVRFOiAnVCdcbn07XG5cbmV4cG9ydCBjb25zdCBUSU1FX0lOVEVSVkFMU19PUkRFUkVEID0gW1xuICBUaWxlVGltZUludGVydmFsLk1JTlVURSxcbiAgVGlsZVRpbWVJbnRlcnZhbC5IT1VSLFxuICBUaWxlVGltZUludGVydmFsLkRBWSxcbiAgVGlsZVRpbWVJbnRlcnZhbC5NT05USCxcbiAgVGlsZVRpbWVJbnRlcnZhbC5ZRUFSXG5dO1xuXG5leHBvcnQgY29uc3QgTGF5ZXJUb0ZpbHRlclRpbWVJbnRlcnZhbCA9IHtcbiAgW1RpbGVUaW1lSW50ZXJ2YWwuTUlOVVRFXTogSU5URVJWQUxbJzEtbWludXRlJ10sXG4gIFtUaWxlVGltZUludGVydmFsLkhPVVJdOiBJTlRFUlZBTFsnMS1ob3VyJ10sXG4gIFtUaWxlVGltZUludGVydmFsLkRBWV06IElOVEVSVkFMWycxLWRheSddLFxuICBbVGlsZVRpbWVJbnRlcnZhbC5NT05USF06IElOVEVSVkFMWycxLW1vbnRoJ10sXG4gIFtUaWxlVGltZUludGVydmFsLllFQVJdOiBJTlRFUlZBTFsnMS15ZWFyJ11cbn07XG5cbmV4cG9ydCBjb25zdCBTQU1QTEVfVElNRUxJTkUgPSB7XG4gIC8vIHZhbHVlOiBbMTVdLCAvLyByZXByZXNlbnQgMTUlIG9mIHRoZSBhbGwgd2lkdGhcbiAgdmFsdWU6IFs1LCAxNV0sIC8vIHJlcHJlc2VudCBzdGFydCBhdCA1JSBhbmQgZW5kcyBhdCAxNSVcbiAgZG9tYWluOiBbMSwgMTAwXSwgLy8gcmVwcmVzZW50IHRoZSB0b3RhbCBkb21haW5cbiAgc3BlZWQ6IDEsXG4gIGVuYWJsZUludGVyYWN0aW9uOiBmYWxzZSwgLy8gY2FuIHVzZSBpbnRlcmFjdCB3aXRoIHRoaXMgdGltZWxpbmVcbiAgaXNBbmltYXRpbmc6IGZhbHNlLFxuICBzdGVwOiBudWxsLFxuICAvLyBAdG9kbzogZ2l1c2VwcGUgY292ZXJUeXBlOiAnaW5uZXInIHwgJ291dGVyJ1xuICBtb2RlOiBUSU1FTElORV9NT0RFUy5pbm5lclxuICAvLyAgLi4uLlxufTtcblxuZXhwb3J0IGNvbnN0IGdldFRpbWVsaW5lRnJvbUFuaW1hdGlvbkNvbmZpZyA9IChhbmltYXRpb25Db25maWc6IEFuaW1hdGlvbkNvbmZpZyk6IFRpbWVsaW5lID0+IHtcbiAgY29uc3Qge1xuICAgIGN1cnJlbnRUaW1lLFxuICAgIGRvbWFpbixcbiAgICBzcGVlZCxcbiAgICBpc0FuaW1hdGluZyxcbiAgICB0aW1lU3RlcHMsXG4gICAgZGVmYXVsdFRpbWVGb3JtYXQsXG4gICAgdGltZUZvcm1hdCxcbiAgICB0aW1lem9uZVxuICB9ID0gYW5pbWF0aW9uQ29uZmlnO1xuXG4gIHJldHVybiB7XG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvclxuICAgIHZhbHVlOiB0b0FycmF5KGN1cnJlbnRUaW1lKSxcbiAgICBlbmFibGVJbnRlcmFjdGlvbjogdHJ1ZSxcbiAgICBkb21haW4sXG4gICAgc3BlZWQsXG4gICAgaXNBbmltYXRpbmc6IGlzQW5pbWF0aW5nIHx8IGZhbHNlLFxuICAgIHRpbWVTdGVwcyxcbiAgICBkZWZhdWx0VGltZUZvcm1hdCxcbiAgICB0aW1lRm9ybWF0LFxuICAgIHRpbWV6b25lLFxuICAgIHRpbWVCaW5zOiBudWxsLFxuICAgIG1hcmtzOiBudWxsXG4gIH07XG59O1xuXG4vLyBjaGVjayBpZiB0aGUgZGF0YSBpbmhlcmVudCBkZWZhdWx0IHRpbWUgaW50ZXJ2YWxcblxuLy8gaHR0cHM6Ly9naXRodWIuY29tL2QzL2QzLXNjYWxlL2Jsb2IvNzMyZWQ0YjFjZDVjNjQzNzAwNTcxZDEwODljN2RlYjg0NzIyNDJhNi9zcmMvdGltZS5qcyNMNjlcbi8vIGdpdmVuIG51bWJlciBvZiB0aWNrcywgY2FsY3VsYXRlIGEgcmVhc29uYWJsZSBpbnRlcnZhbFxuZXhwb3J0IGZ1bmN0aW9uIGdldEludGVydmFsQnlUaWNrcyh0aWNrcywgc3RhcnQsIHN0b3ApIHtcbiAgaWYgKHRpY2tzID09PSBudWxsKSB0aWNrcyA9IDEwO1xuICBjb25zdCB0aWNrSW50ZXJ2YWxzID0gT2JqZWN0LnZhbHVlcyhUSUNLX0lOVEVSVkFMUyk7XG4gIGxldCBpbnRlcnZhbDtcbiAgbGV0IHN0ZXA7XG4gIC8vIElmIGEgZGVzaXJlZCB0aWNrIGNvdW50IGlzIHNwZWNpZmllZCwgcGljayBhIHJlYXNvbmFibGUgdGljayBpbnRlcnZhbFxuICAvLyBiYXNlZCBvbiB0aGUgZXh0ZW50IG9mIHRoZSBkb21haW4gYW5kIGEgcm91Z2ggZXN0aW1hdGUgb2YgdGljayBzaXplLlxuICAvLyBPdGhlcndpc2UsIGFzc3VtZSBpbnRlcnZhbCBpcyBhbHJlYWR5IGEgdGltZSBpbnRlcnZhbCBhbmQgdXNlIGl0LlxuICBpZiAodHlwZW9mIHRpY2tzID09PSAnbnVtYmVyJykge1xuICAgIGNvbnN0IHRhcmdldCA9IE1hdGguYWJzKHN0b3AgLSBzdGFydCkgLyB0aWNrcztcbiAgICBjb25zdCBpID0gYmlzZWN0b3IoKGQ6IFRpY2tJbnRlcnZhbCkgPT4gZC5kdXJhdGlvbikucmlnaHQodGlja0ludGVydmFscywgdGFyZ2V0KTtcbiAgICBpZiAoaSA9PT0gdGlja0ludGVydmFscy5sZW5ndGgpIHtcbiAgICAgIHN0ZXAgPSB0aWNrU3RlcChzdGFydCAvIGR1cmF0aW9uWWVhciwgc3RvcCAvIGR1cmF0aW9uWWVhciwgdGlja3MpO1xuICAgICAgaW50ZXJ2YWwgPSAneWVhcic7XG4gICAgfSBlbHNlIGlmIChpKSB7XG4gICAgICBjb25zdCB0aWNrSW50ZXJ2YWwgPVxuICAgICAgICB0aWNrSW50ZXJ2YWxzW1xuICAgICAgICAgIHRhcmdldCAvIHRpY2tJbnRlcnZhbHNbaSAtIDFdLmR1cmF0aW9uIDwgdGlja0ludGVydmFsc1tpXS5kdXJhdGlvbiAvIHRhcmdldCA/IGkgLSAxIDogaVxuICAgICAgICBdO1xuICAgICAgLy8gQHRzLWlnbm9yZSBUT0RPL2liXG4gICAgICBzdGVwID0gdGlja0ludGVydmFsLnN0ZXA7XG4gICAgICAvLyBAdHMtaWdub3JlIFRPRE8vaWJcbiAgICAgIGludGVydmFsID0gdGlja0ludGVydmFsLmludGVydmFsO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdGVwID0gTWF0aC5tYXgodGlja1N0ZXAoc3RhcnQsIHN0b3AsIHRpY2tzKSwgMSk7XG4gICAgICBpbnRlcnZhbCA9ICdtaWxsaXNlY29uZCc7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGAke3N0ZXB9LSR7aW50ZXJ2YWx9YDtcbn1cblxuLy8gZ2V0IGEgIG51bWJlciBvZiB1bmlxdWUgc2FtcGxlc1xuZnVuY3Rpb24gZ2V0VW5pcXVlU2FtcGxlcyh2YWx1ZXMsIGNvdW50KSB7XG4gIGxldCBpID0gLTE7XG4gIGNvbnN0IHNhbXBsZXM6IGFueVtdID0gW107XG4gIGNvbnN0IHNhbXBsZU1hcCA9IHt9O1xuICB3aGlsZSAoaSsrIDwgdmFsdWVzLmxlbmd0aCAmJiBzYW1wbGVzLmxlbmd0aCA8IGNvdW50KSB7XG4gICAgY29uc3QgdiA9IHZhbHVlc1tpXTtcbiAgICBpZiAodiAhPT0gdW5kZWZpbmVkICYmIHYgIT09IG51bGwgJiYgIXNhbXBsZU1hcFt2XSkge1xuICAgICAgc2FtcGxlTWFwW3ZdID0gdHJ1ZTtcbiAgICAgIHNhbXBsZXMucHVzaCh2KTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gT2JqZWN0LnZhbHVlcyhzYW1wbGVzKTtcbn1cblxuLyoqXG4gKiBHaXZlbiBhbiBhcnJheSBvZiBlcG9jaCB0aW1lc3RhbXAuIHNvcnQgaXQsIGlmIG51bWJlciBvZiBlbGVtZW50XG4gKiBzaGFyZSB0aGUgc2FtZSB0aW1lIGludGVydmFsIGV4Y2VlZCB0aHJlc2hvbGYsIGFuZCB0b3RhbCBzdGVwcyBzbWFsbGVyIHRoYW4gMTAwLCByZXR1cm4gaXQsIGVsc2UgcmV0dXJuIG51bGxcbiAqIEBwYXJhbSB2YWx1ZXNcbiAqL1xuZnVuY3Rpb24gZGV0ZWN0SW50ZXJ2YWwodmFsdWVzOiBudW1iZXJbXSA9IFtdLCBkb21haW4sIG1heFN0ZXBzID0gMTApIHtcbiAgY29uc3QgdGhyZXNob2xkID0gMC43O1xuXG4gIGNvbnN0IHNvcnRlZCA9IHZhbHVlcy5zb3J0KGFzY2VuZGluZyk7XG5cbiAgLy8gZ2V0IGZpcnN0IDEwMCB1bmlxdWUgc29ydGVkIHRzXG4gIGNvbnN0IHNhbXBsZXMgPSBnZXRVbmlxdWVTYW1wbGVzKHNvcnRlZCwgMTAwKTtcbiAgaWYgKHNhbXBsZXMubGVuZ3RoIDwgMikge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgLy8gZ2V0IGFsbCBpbnRlcnZhbHNcbiAgY29uc3QgaW50ZXJ2YWxzID0gc2FtcGxlcy5yZWR1Y2UoKGFjY3UsIGQsIGkpID0+IHtcbiAgICBpZiAoaSA+IDApIHtcbiAgICAgIGNvbnN0IGR1cmF0aW9uID0gbW9tZW50LmR1cmF0aW9uKG1vbWVudC51dGMoc2FtcGxlc1tpXSkuZGlmZihtb21lbnQudXRjKHNhbXBsZXNbaSAtIDFdKSkpO1xuICAgICAgY29uc3QgW2R1ciwgY10gPSBnZXREdXJhdGlvblVuaXQoZHVyYXRpb24pO1xuICAgICAgYWNjdS5wdXNoKGAke2N9LSR7ZHVyfWApO1xuICAgIH1cbiAgICByZXR1cm4gYWNjdTtcbiAgfSwgW10pO1xuXG4gIC8vIGZpbmQgdGhlIG1vc3Qgb2NjdXJlZCBpbnRlcnZhbFxuICBjb25zdCBvY2N1ciA9IGdldEZyZXF1ZW5jeShpbnRlcnZhbHMpO1xuICBjb25zdCBtYXhPY2NyID0gT2JqZWN0LmtleXMob2NjdXIpLnJlZHVjZShcbiAgICAocHJldiwga2V5KSA9PiAob2NjdXJbcHJldl0gPj0gb2NjdXJba2V5XSA/IHByZXYgOiBrZXkpLFxuICAgIE9iamVjdC5rZXlzKG9jY3VyKVswXVxuICApO1xuXG4gIC8vIGlmIG9jY3VyYW5jZSBwYXNzZWQgdGhyZXNob2xkXG4gIGNvbnN0IG1vc3RPY2N1ciA9IG9jY3VyW21heE9jY3JdIC8gaW50ZXJ2YWxzLmxlbmd0aDtcbiAgaWYgKG1vc3RPY2N1ciA+PSB0aHJlc2hvbGQpIHtcbiAgICBjb25zdCBbc3RlcCwgZHVyXSA9IG1heE9jY3Iuc3BsaXQoJy0nKTtcbiAgICBjb25zdCBkdXJhdGlvblNlY29uZCA9IERVUkFUSU9OU1tkdXJdICogcGFyc2VJbnQoc3RlcCk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgcmFkaXhcbiAgICBjb25zdCB0b3RhbFN0ZXBzID0gKGRvbWFpblsxXSAtIGRvbWFpblswXSkgLyBkdXJhdGlvblNlY29uZDtcblxuICAgIGlmICh0b3RhbFN0ZXBzIDwgbWF4U3RlcHMpIHtcbiAgICAgIC8vIGR1cmF0aW9uIGZ1bmN0aW9uIGlzIC5kYXlzIGludGVydmFsIGlzIGRheVxuICAgICAgcmV0dXJuIG1heE9jY3Iuc3Vic3RyaW5nKDAsIG1heE9jY3IubGVuZ3RoIC0gMSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59XG5cbi8qKlxuICogbWFwcGVkVmFsdWUgaXMgc2F2ZWQgdG8gZGF0YXNldC5maWVsZHMuZmlsdGVyUHJvcHNcbiAqIEBwYXJhbSBkYXRhc2V0IHtLZXBsZXJUYWJsZX1cbiAqIEBwYXJhbSBmaWx0ZXJcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEZpbHRlck1hcHBlZFZhbHVlKFxuICBkYXRhc2V0OiBLZXBsZXJUYWJsZU1vZGVsPGFueSwgYW55PixcbiAgZmlsdGVyOiBGaWx0ZXJcbik6IEZpbHRlclsnbWFwcGVkVmFsdWUnXSB8IG51bGwge1xuICBjb25zdCBkYXRhSWQgPSBkYXRhc2V0LmlkO1xuICBjb25zdCBmaWVsZE5hbWUgPSBmaWx0ZXIubmFtZVtmaWx0ZXIuZGF0YUlkLmluZGV4T2YoZGF0YUlkKV07XG4gIGNvbnN0IGZpZWxkID0gZGF0YXNldC5nZXRDb2x1bW5GaWVsZChmaWVsZE5hbWUpO1xuXG4gIGlmICghZmllbGQpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZSwgbm8tdW5kZWZcbiAgICBjb25zb2xlLndhcm4oYGZpZWxkICR7ZmllbGROYW1lfSBkb2VzIG5vdCBleGlzdCBvbiBkYXRhc2V0YCk7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgY29uc3QgbWFwcGVkVmFsdWUgPSAoZmllbGQuZmlsdGVyUHJvcHMgfHwge30pLm1hcHBlZFZhbHVlO1xuICBpZiAoIW1hcHBlZFZhbHVlKSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGUsIG5vLXVuZGVmXG4gICAgY29uc29sZS53YXJuKGBtYXBwZWRWYWx1ZSBkb2VzbnQgZXhpc3Qgb24gZmlsdGVyIGZpZWxkICR7ZmlsdGVyLm5hbWV9YCk7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgcmV0dXJuIG1hcHBlZFZhbHVlO1xufVxuLyoqXG4gKiBGaW5kIHRoZSByb3VuZCB1bml0IG9mIGdpdmVuIGR1cm1vc3RPY2N1cnRpb246IHggeWVhcnMgfCBtb250aHMgfCBkYXlzXG4gKiBAcGFyYW0gZHVyYXRpb25cbiAqL1xuZnVuY3Rpb24gZ2V0RHVyYXRpb25Vbml0KGR1cmF0aW9uKSB7XG4gIGNvbnN0IGR1ckZ1bmNzID0gT2JqZWN0LmtleXMoRFVSQVRJT05TKTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBkdXJGdW5jcy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IGMgPSBkdXJhdGlvbltkdXJGdW5jc1tpXV0oKTtcbiAgICBpZiAoYyA+IDApIHtcbiAgICAgIHJldHVybiBbZHVyRnVuY3NbaV0sIGNdO1xuICAgIH1cbiAgfVxuICByZXR1cm4gWydtaWxsaXNlY29uZHMnLCAxXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGludGVydmFsVG9GdW5jdGlvbihpZDogc3RyaW5nKSB7XG4gIGNvbnN0IFtzdGVwU3RyLCBpbnRlcnZhbF0gPSBpZC5zcGxpdCgnLScpO1xuICBjb25zdCBzdGVwID0gcGFyc2VJbnQoc3RlcFN0cik7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgcmFkaXhcbiAgaWYgKCFzdGVwKSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGUsIG5vLXVuZGVmXG4gICAgY29uc29sZS53YXJuKCdTdGVwIGlzIG5vdCBhbiBpbnRlZ2VyJyk7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBpZiAoIVRJTUVfSU5URVJWQUxTW2ludGVydmFsXSkge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlLCBuby11bmRlZlxuICAgIGNvbnNvbGUud2FybihgVW5kZWZpbmVkIHRpbWUgaW50ZXJ2YWwgJHtpbnRlcnZhbH1gKTtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHJldHVybiBUSU1FX0lOVEVSVkFMU1tpbnRlcnZhbF0uZXZlcnkoc3RlcCk7XG59XG5cbi8qKlxuICogR2V0IGluaXRpYWwgaW50ZXJ2YWwgZnJvbSBmaWx0ZXIgYW5kIGRhdGFzZXRzXG4gKiBAcGFyYW0gZmlsdGVyXG4gKiBAcGFyYW0gZGF0YXNldHNcbiAqIEByZXR1cm5zXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRJbml0aWFsSW50ZXJ2YWwoXG4gIGZpbHRlcjogRmlsdGVyLFxuICBkYXRhc2V0czogUmVjb3JkPHN0cmluZywgS2VwbGVyVGFibGVNb2RlbDxhbnksIGFueT4+XG4pOiBzdHJpbmcge1xuICBjb25zdCB7ZG9tYWlufSA9IGZpbHRlcjtcbiAgY29uc3QgbWVyZ2VNYXBwZWRWYWx1ZSA9IGZpbHRlci5kYXRhSWQucmVkdWNlKChhY2N1LCBkYXRhSWQpID0+IHtcbiAgICBjb25zdCBtYXBwZWRWYWx1ZSA9IGdldEZpbHRlck1hcHBlZFZhbHVlKGRhdGFzZXRzW2RhdGFJZF0sIGZpbHRlcik7XG4gICAgaWYgKCFtYXBwZWRWYWx1ZSkge1xuICAgICAgcmV0dXJuIGFjY3U7XG4gICAgfVxuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtYXBwZWRWYWx1ZS5sZW5ndGg7IGkrKykge1xuICAgICAgYWNjdS5wdXNoKG1hcHBlZFZhbHVlW2ldKTtcbiAgICB9XG4gICAgcmV0dXJuIGFjY3U7XG4gIH0sIFtdIGFzIGFueVtdKTtcblxuICAvLyBjaGVjayBpZiBkYXRhIGhhcyBwcmVkZWZpbmVkIGludGVydmFsXG4gIGxldCBpbnRlcnZhbCA9IGRldGVjdEludGVydmFsKG1lcmdlTWFwcGVkVmFsdWUsIGRvbWFpbik7XG5cbiAgaWYgKCFpbnRlcnZhbCkge1xuICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgbmVlZCBiZXR0ZXIgdHlwZXMgZm9yIGRvbWFpblxuICAgIGNvbnN0IFt0MCwgdDFdID0gZG9tYWluO1xuICAgIGludGVydmFsID0gZ2V0SW50ZXJ2YWxCeVRpY2tzKEJJTlNfTEFSR0UsIHQwLCB0MSk7XG4gIH1cblxuICByZXR1cm4gaW50ZXJ2YWw7XG59XG5cbi8vIEZpbHRlciBpbnRlcnZhbCBvcHRpb25zIGJ5IHRpbWUgZmlsdGVyIGRvbWFpblxuLy8gbWF4IG51bWJlciBvZiBpbnRlcnZhbCBpcyAxMDAwXG4vKipcbiAqXG4gKiBAcGFyYW0gb3B0aW9uc1xuICogQHBhcmFtIGRvbWFpblxuICovXG5leHBvcnQgZnVuY3Rpb24gZmlsdGVySW50ZXJ2YWxPcHRpb25zKG9wdGlvbnMsIGRvbWFpbikge1xuICBjb25zdCBtYXhCaW5zID0gMTAwMDtcbiAgY29uc3QgbWluQmlucyA9IDI7XG4gIGNvbnN0IHRpbWVTcGFuID0gZG9tYWluWzFdIC0gZG9tYWluWzBdO1xuXG4gIHJldHVybiBvcHRpb25zLmZpbHRlcihvcCA9PiB7XG4gICAgY29uc3Qge2lkfSA9IG9wO1xuICAgIGlmICghVElDS19JTlRFUlZBTFNbaWRdKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgY29uc3QgaW50ZXJ2YWwgPSBUSUNLX0lOVEVSVkFMU1tpZF07XG5cbiAgICAvLyByb3VnaCBjb3VudCBvbiBiaW5zXG4gICAgY29uc3QgY291bnQgPSB0aW1lU3BhbiAvIChpbnRlcnZhbC5zdGVwICogaW50ZXJ2YWwuZHVyYXRpb24pO1xuXG4gICAgcmV0dXJuIGNvdW50ID49IG1pbkJpbnMgJiYgY291bnQgPD0gbWF4QmlucztcbiAgfSk7XG59XG5cbi8qKlxuICogR2V0IHRpbWVsaW5lIGZyb20gZmlsdGVyXG4gKiBAcGFyYW0gZmlsdGVyIFRpbWVSYW5nZUZpbHRlciBmaWx0ZXJcbiAqIEByZXR1cm5zIFRpbWVsaW5lXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRUaW1lbGluZUZyb21GaWx0ZXIgPSAoZmlsdGVyOiBUaW1lUmFuZ2VGaWx0ZXIpOiBUaW1lbGluZSA9PiB7XG4gIGNvbnN0IHtcbiAgICB2YWx1ZSxcbiAgICBkb21haW4sXG4gICAgc3BlZWQsXG4gICAgaXNBbmltYXRpbmcsXG4gICAgc3RlcCxcbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gICAgdGltZVN0ZXBzLFxuICAgIGRlZmF1bHRUaW1lRm9ybWF0LFxuICAgIHRpbWVGb3JtYXQsXG4gICAgdGltZXpvbmUsXG4gICAgdGltZUJpbnMsXG4gICAgYW5pbWF0aW9uV2luZG93LFxuICAgIHBsb3RUeXBlXG4gIH0gPSBmaWx0ZXI7XG5cbiAgcmV0dXJuIHtcbiAgICB2YWx1ZSxcbiAgICBlbmFibGVJbnRlcmFjdGlvbjogdHJ1ZSxcbiAgICBkb21haW4sXG4gICAgc3BlZWQsXG4gICAgaXNBbmltYXRpbmcsXG4gICAgc3RlcCxcbiAgICB0aW1lU3RlcHMsXG4gICAgZGVmYXVsdFRpbWVGb3JtYXQsXG4gICAgdGltZUZvcm1hdCxcbiAgICB0aW1lem9uZSxcbiAgICB0aW1lQmlucyxcbiAgICBhbmltYXRpb25XaW5kb3csXG4gICAgbWFya3M6IGdldEJpblRocmVzaG9sZHMocGxvdFR5cGU/LmludGVydmFsLCBkb21haW4pXG4gIH07XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFHQSxJQUFBQSxRQUFBLEdBQUFDLE9BQUE7QUFDQSxJQUFBQyxPQUFBLEdBQUFDLHNCQUFBLENBQUFGLE9BQUE7QUFFQSxJQUFBRyxVQUFBLEdBQUFILE9BQUE7QUFTQSxJQUFBSSxZQUFBLEdBQUFKLE9BQUE7QUFHQSxJQUFBSyxZQUFBLEdBQUFMLE9BQUE7QUFDQSxJQUFBTSxLQUFBLEdBQUFOLE9BQUE7QUFuQkE7QUFDQTs7QUFxQk8sSUFBTU8sY0FBYyxHQUFBQyxPQUFBLENBQUFELGNBQUEsR0FBRztFQUM1QkUsS0FBSyxFQUFFLE9BQU87RUFDZEMsS0FBSyxFQUFFO0FBQ1QsQ0FBQztBQUVNLElBQU1DLGdCQUFnQixHQUFBSCxPQUFBLENBQUFHLGdCQUFBLEdBQUc7RUFDOUJDLElBQUksRUFBRSxHQUFHO0VBQ1RDLEtBQUssRUFBRSxHQUFHO0VBQ1ZDLEdBQUcsRUFBRSxHQUFHO0VBQ1JDLElBQUksRUFBRSxHQUFHO0VB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
|
package/dist/types.d.ts
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
import { Filter, Field, FilterDatasetOpt } from '@kepler.gl/types';
|
2
|
+
import { DataContainerInterface } from './data-container-interface';
|
3
|
+
export interface KeplerTableModel<K, L, F extends Field = any> {
|
4
|
+
id: string;
|
5
|
+
fields: F[];
|
6
|
+
getColumnFieldIdx(columnName: string): number;
|
7
|
+
filterTable(filters: Filter[], layers: L[], opt?: FilterDatasetOpt): K;
|
8
|
+
getColumnFilterProps(columnName: string): Field['filterProps'] | null | undefined;
|
9
|
+
dataContainer: DataContainerInterface;
|
10
|
+
filterTableCPU(filters: Filter[], layers: L[]): K;
|
11
|
+
getColumnField(fieldName: string): Field | undefined;
|
12
|
+
gpuFilter: {
|
13
|
+
filterRange: number[][];
|
14
|
+
filterValueUpdateTriggers: any;
|
15
|
+
filterValueAccessor: (dc: DataContainerInterface) => (getIndex?: (any: any) => number, getData?: (dc_: DataContainerInterface, d: any, fieldIndex: number) => any) => (d: any) => (number | number[])[];
|
16
|
+
};
|
17
|
+
filteredIndex: number[];
|
18
|
+
}
|
package/dist/types.js
ADDED
@@ -0,0 +1,6 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
4
|
+
value: true
|
5
|
+
});
|
6
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vc3JjL3R5cGVzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCB7RmlsdGVyLCBGaWVsZCwgRmlsdGVyRGF0YXNldE9wdH0gZnJvbSAnQGtlcGxlci5nbC90eXBlcyc7XG5cbmltcG9ydCB7RGF0YUNvbnRhaW5lckludGVyZmFjZX0gZnJvbSAnLi9kYXRhLWNvbnRhaW5lci1pbnRlcmZhY2UnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEtlcGxlclRhYmxlTW9kZWw8SywgTCwgRiBleHRlbmRzIEZpZWxkID0gYW55PiB7XG4gIGlkOiBzdHJpbmc7XG4gIGZpZWxkczogRltdO1xuICBnZXRDb2x1bW5GaWVsZElkeChjb2x1bW5OYW1lOiBzdHJpbmcpOiBudW1iZXI7XG4gIGZpbHRlclRhYmxlKGZpbHRlcnM6IEZpbHRlcltdLCBsYXllcnM6IExbXSwgb3B0PzogRmlsdGVyRGF0YXNldE9wdCk6IEs7XG4gIGdldENvbHVtbkZpbHRlclByb3BzKGNvbHVtbk5hbWU6IHN0cmluZyk6IEZpZWxkWydmaWx0ZXJQcm9wcyddIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgZGF0YUNvbnRhaW5lcjogRGF0YUNvbnRhaW5lckludGVyZmFjZTtcbiAgZmlsdGVyVGFibGVDUFUoZmlsdGVyczogRmlsdGVyW10sIGxheWVyczogTFtdKTogSztcbiAgZ2V0Q29sdW1uRmllbGQoZmllbGROYW1lOiBzdHJpbmcpOiBGaWVsZCB8IHVuZGVmaW5lZDtcbiAgZ3B1RmlsdGVyOiB7XG4gICAgZmlsdGVyUmFuZ2U6IG51bWJlcltdW107XG4gICAgZmlsdGVyVmFsdWVVcGRhdGVUcmlnZ2VyczogYW55O1xuICAgIGZpbHRlclZhbHVlQWNjZXNzb3I6IChcbiAgICAgIGRjOiBEYXRhQ29udGFpbmVySW50ZXJmYWNlXG4gICAgKSA9PiAoXG4gICAgICBnZXRJbmRleD86IChhbnkpID0+IG51bWJlcixcbiAgICAgIGdldERhdGE/OiAoZGNfOiBEYXRhQ29udGFpbmVySW50ZXJmYWNlLCBkOiBhbnksIGZpZWxkSW5kZXg6IG51bWJlcikgPT4gYW55XG4gICAgKSA9PiAoZDogYW55KSA9PiAobnVtYmVyIHwgbnVtYmVyW10pW107XG4gIH07XG4gIGZpbHRlcmVkSW5kZXg6IG51bWJlcltdO1xufVxuIl0sIm1hcHBpbmdzIjoiIiwiaWdub3JlTGlzdCI6W119
|