@kepler.gl/utils 3.1.0-alpha.0 → 3.1.0-alpha.2

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 (81) hide show
  1. package/dist/aggregation.d.ts +13 -0
  2. package/dist/aggregation.js +84 -0
  3. package/dist/application-config.d.ts +25 -0
  4. package/dist/application-config.js +52 -0
  5. package/dist/arrow-data-container.d.ts +62 -0
  6. package/dist/arrow-data-container.js +331 -0
  7. package/dist/color-utils.d.ts +108 -0
  8. package/dist/color-utils.js +443 -0
  9. package/dist/data-container-interface.d.ts +138 -0
  10. package/dist/data-container-interface.js +6 -0
  11. package/dist/data-container-utils.d.ts +30 -0
  12. package/dist/data-container-utils.js +74 -0
  13. package/dist/data-row.d.ts +59 -0
  14. package/dist/data-row.js +110 -0
  15. package/dist/data-scale-utils.d.ts +120 -0
  16. package/dist/data-scale-utils.js +340 -0
  17. package/dist/data-utils.d.ts +98 -0
  18. package/dist/data-utils.js +436 -0
  19. package/dist/dataset-utils.d.ts +45 -0
  20. package/dist/dataset-utils.js +313 -0
  21. package/dist/dom-to-image.d.ts +73 -0
  22. package/dist/dom-to-image.js +421 -0
  23. package/dist/dom-utils.d.ts +23 -0
  24. package/dist/dom-utils.js +349 -0
  25. package/dist/effect-utils.d.ts +24 -0
  26. package/dist/effect-utils.js +166 -0
  27. package/dist/export-map-html.d.ts +9 -0
  28. package/dist/export-map-html.js +25 -0
  29. package/dist/export-utils.d.ts +40 -0
  30. package/dist/export-utils.js +201 -0
  31. package/dist/filter-utils.d.ts +331 -0
  32. package/dist/filter-utils.js +1214 -0
  33. package/dist/format.d.ts +3 -0
  34. package/dist/format.js +38 -0
  35. package/dist/gl-utils.d.ts +1 -0
  36. package/dist/gl-utils.js +27 -0
  37. package/dist/index.d.ts +41 -0
  38. package/dist/index.js +941 -0
  39. package/dist/indexed-data-container.d.ts +34 -0
  40. package/dist/indexed-data-container.js +214 -0
  41. package/dist/locale-utils.d.ts +2 -0
  42. package/dist/locale-utils.js +39 -0
  43. package/dist/map-info-utils.d.ts +1 -0
  44. package/dist/map-info-utils.js +14 -0
  45. package/dist/map-style-utils/mapbox-gl-style-editor.d.ts +57 -0
  46. package/dist/map-style-utils/mapbox-gl-style-editor.js +188 -0
  47. package/dist/map-style-utils/mapbox-utils.d.ts +14 -0
  48. package/dist/map-style-utils/mapbox-utils.js +51 -0
  49. package/dist/map-utils.d.ts +9 -0
  50. package/dist/map-utils.js +48 -0
  51. package/dist/mapbox-utils.d.ts +7 -0
  52. package/dist/mapbox-utils.js +19 -0
  53. package/dist/noop.d.ts +1 -0
  54. package/dist/noop.js +13 -0
  55. package/dist/notifications-utils.d.ts +42 -0
  56. package/dist/notifications-utils.js +69 -0
  57. package/dist/observe-dimensions.d.ts +15 -0
  58. package/dist/observe-dimensions.js +130 -0
  59. package/dist/plot.d.ts +131 -0
  60. package/dist/plot.js +615 -0
  61. package/dist/position-utils.d.ts +6 -0
  62. package/dist/position-utils.js +26 -0
  63. package/dist/projection-utils.d.ts +22 -0
  64. package/dist/projection-utils.js +83 -0
  65. package/dist/quick-insertion-sort.d.ts +12 -0
  66. package/dist/quick-insertion-sort.js +132 -0
  67. package/dist/row-data-container.d.ts +31 -0
  68. package/dist/row-data-container.js +206 -0
  69. package/dist/searcher-utils.d.ts +1 -0
  70. package/dist/searcher-utils.js +25 -0
  71. package/dist/split-map-utils.d.ts +32 -0
  72. package/dist/split-map-utils.js +99 -0
  73. package/dist/strings.d.ts +4 -0
  74. package/dist/strings.js +16 -0
  75. package/dist/time.d.ts +54 -0
  76. package/dist/time.js +325 -0
  77. package/dist/types.d.ts +18 -0
  78. package/dist/types.js +6 -0
  79. package/dist/utils.d.ts +104 -0
  80. package/dist/utils.js +241 -0
  81. package/package.json +6 -5
@@ -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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
@@ -0,0 +1,4 @@
1
+ /**
2
+ * Capitalize first letter of a string
3
+ */
4
+ export declare function capitalizeFirstLetter(str: string): string;
@@ -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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
@@ -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