@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.
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 +119 -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 +42 -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 +14 -6
@@ -0,0 +1,6 @@
1
+ import { LayerColumn } from '@kepler.gl/types';
2
+ import { DataContainerInterface } from './data-container-interface';
3
+ export declare function getPositionFromHexValue(token: any): number[] | null;
4
+ export declare function maybeHexToGeo(dc: DataContainerInterface, d: {
5
+ index: number;
6
+ }, lat: LayerColumn, lng: LayerColumn): number[] | null;
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.getPositionFromHexValue = getPositionFromHexValue;
7
+ exports.maybeHexToGeo = maybeHexToGeo;
8
+ var _h3Js = require("h3-js");
9
+ // SPDX-License-Identifier: MIT
10
+ // Copyright contributors to the kepler.gl project
11
+
12
+ function getPositionFromHexValue(token) {
13
+ var pos = (0, _h3Js.h3ToGeo)(token);
14
+ if (Array.isArray(pos) && pos.every(Number.isFinite)) {
15
+ return [pos[1], pos[0]];
16
+ }
17
+ return null;
18
+ }
19
+ function maybeHexToGeo(dc, d, lat, lng) {
20
+ // lat or lng column could be hex column
21
+ // we assume string value is hex and try to convert it to geo lat lng
22
+ var latVal = dc.valueAt(d.index, lat.fieldIdx);
23
+ var lngVal = dc.valueAt(d.index, lng.fieldIdx);
24
+ return typeof latVal === 'string' ? getPositionFromHexValue(latVal) : typeof lngVal === 'string' ? getPositionFromHexValue(lngVal) : null;
25
+ }
26
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfaDNKcyIsInJlcXVpcmUiLCJnZXRQb3NpdGlvbkZyb21IZXhWYWx1ZSIsInRva2VuIiwicG9zIiwiaDNUb0dlbyIsIkFycmF5IiwiaXNBcnJheSIsImV2ZXJ5IiwiTnVtYmVyIiwiaXNGaW5pdGUiLCJtYXliZUhleFRvR2VvIiwiZGMiLCJkIiwibGF0IiwibG5nIiwibGF0VmFsIiwidmFsdWVBdCIsImluZGV4IiwiZmllbGRJZHgiLCJsbmdWYWwiXSwic291cmNlcyI6WyIuLi9zcmMvcG9zaXRpb24tdXRpbHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IHtoM1RvR2VvfSBmcm9tICdoMy1qcyc7XG5cbmltcG9ydCB7TGF5ZXJDb2x1bW59IGZyb20gJ0BrZXBsZXIuZ2wvdHlwZXMnO1xuXG5pbXBvcnQge0RhdGFDb250YWluZXJJbnRlcmZhY2V9IGZyb20gJy4vZGF0YS1jb250YWluZXItaW50ZXJmYWNlJztcblxuZXhwb3J0IGZ1bmN0aW9uIGdldFBvc2l0aW9uRnJvbUhleFZhbHVlKHRva2VuKSB7XG4gIGNvbnN0IHBvcyA9IGgzVG9HZW8odG9rZW4pO1xuXG4gIGlmIChBcnJheS5pc0FycmF5KHBvcykgJiYgcG9zLmV2ZXJ5KE51bWJlci5pc0Zpbml0ZSkpIHtcbiAgICByZXR1cm4gW3Bvc1sxXSwgcG9zWzBdXTtcbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1heWJlSGV4VG9HZW8oXG4gIGRjOiBEYXRhQ29udGFpbmVySW50ZXJmYWNlLFxuICBkOiB7aW5kZXg6IG51bWJlcn0sXG4gIGxhdDogTGF5ZXJDb2x1bW4sXG4gIGxuZzogTGF5ZXJDb2x1bW5cbikge1xuICAvLyBsYXQgb3IgbG5nIGNvbHVtbiBjb3VsZCBiZSBoZXggY29sdW1uXG4gIC8vIHdlIGFzc3VtZSBzdHJpbmcgdmFsdWUgaXMgaGV4IGFuZCB0cnkgdG8gY29udmVydCBpdCB0byBnZW8gbGF0IGxuZ1xuICBjb25zdCBsYXRWYWwgPSBkYy52YWx1ZUF0KGQuaW5kZXgsIGxhdC5maWVsZElkeCk7XG4gIGNvbnN0IGxuZ1ZhbCA9IGRjLnZhbHVlQXQoZC5pbmRleCwgbG5nLmZpZWxkSWR4KTtcblxuICByZXR1cm4gdHlwZW9mIGxhdFZhbCA9PT0gJ3N0cmluZydcbiAgICA/IGdldFBvc2l0aW9uRnJvbUhleFZhbHVlKGxhdFZhbClcbiAgICA6IHR5cGVvZiBsbmdWYWwgPT09ICdzdHJpbmcnXG4gICAgPyBnZXRQb3NpdGlvbkZyb21IZXhWYWx1ZShsbmdWYWwpXG4gICAgOiBudWxsO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBR0EsSUFBQUEsS0FBQSxHQUFBQyxPQUFBO0FBSEE7QUFDQTs7QUFRTyxTQUFTQyx1QkFBdUJBLENBQUNDLEtBQUssRUFBRTtFQUM3QyxJQUFNQyxHQUFHLEdBQUcsSUFBQUMsYUFBTyxFQUFDRixLQUFLLENBQUM7RUFFMUIsSUFBSUcsS0FBSyxDQUFDQyxPQUFPLENBQUNILEdBQUcsQ0FBQyxJQUFJQSxHQUFHLENBQUNJLEtBQUssQ0FBQ0MsTUFBTSxDQUFDQyxRQUFRLENBQUMsRUFBRTtJQUNwRCxPQUFPLENBQUNOLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRUEsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0VBQ3pCO0VBQ0EsT0FBTyxJQUFJO0FBQ2I7QUFFTyxTQUFTTyxhQUFhQSxDQUMzQkMsRUFBMEIsRUFDMUJDLENBQWtCLEVBQ2xCQyxHQUFnQixFQUNoQkMsR0FBZ0IsRUFDaEI7RUFDQTtFQUNBO0VBQ0EsSUFBTUMsTUFBTSxHQUFHSixFQUFFLENBQUNLLE9BQU8sQ0FBQ0osQ0FBQyxDQUFDSyxLQUFLLEVBQUVKLEdBQUcsQ0FBQ0ssUUFBUSxDQUFDO0VBQ2hELElBQU1DLE1BQU0sR0FBR1IsRUFBRSxDQUFDSyxPQUFPLENBQUNKLENBQUMsQ0FBQ0ssS0FBSyxFQUFFSCxHQUFHLENBQUNJLFFBQVEsQ0FBQztFQUVoRCxPQUFPLE9BQU9ILE1BQU0sS0FBSyxRQUFRLEdBQzdCZCx1QkFBdUIsQ0FBQ2MsTUFBTSxDQUFDLEdBQy9CLE9BQU9JLE1BQU0sS0FBSyxRQUFRLEdBQzFCbEIsdUJBQXVCLENBQUNrQixNQUFNLENBQUMsR0FDL0IsSUFBSTtBQUNWIiwiaWdub3JlTGlzdCI6W119
@@ -0,0 +1,22 @@
1
+ import WebMercatorViewport from 'viewport-mercator-project';
2
+ export declare const MAPBOX_TILE_SIZE = 512;
3
+ /**
4
+ * bounds should be [minLng, minLat, maxLng, maxLat]
5
+ * @param {*} bounds
6
+ */
7
+ export declare function validateBounds(bounds: any): any[] | null;
8
+ export declare function getCenterAndZoomFromBounds(bounds: any, { width, height }: {
9
+ width: any;
10
+ height: any;
11
+ }): {
12
+ zoom: number;
13
+ center: number[];
14
+ } | null;
15
+ /**
16
+ * Add extra info about screen space position and world position to the event.
17
+ * @param {*} event Event to normalize.
18
+ * @param {*} viewport Current viewport.
19
+ * @returns Normalized event with extra information compatible with React-map-gl MapLayerMouseEvent
20
+ * https://visgl.github.io/react-map-gl/docs/api-reference/types#maplayermouseevent
21
+ */
22
+ export declare function normalizeEvent(event: any, viewport: WebMercatorViewport): any;
@@ -0,0 +1,83 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.MAPBOX_TILE_SIZE = void 0;
8
+ exports.getCenterAndZoomFromBounds = getCenterAndZoomFromBounds;
9
+ exports.normalizeEvent = normalizeEvent;
10
+ exports.validateBounds = validateBounds;
11
+ var _geoViewport = _interopRequireDefault(require("@mapbox/geo-viewport"));
12
+ var _console = _interopRequireDefault(require("global/console"));
13
+ // SPDX-License-Identifier: MIT
14
+ // Copyright contributors to the kepler.gl project
15
+
16
+ var MAPBOX_TILE_SIZE = exports.MAPBOX_TILE_SIZE = 512;
17
+ function isLat(num) {
18
+ return Number.isFinite(num) && num <= 90 && num >= -90;
19
+ }
20
+ function isLng(num) {
21
+ return Number.isFinite(num) && num <= 180 && num >= -180;
22
+ }
23
+
24
+ /**
25
+ * bounds should be [minLng, minLat, maxLng, maxLat]
26
+ * @param {*} bounds
27
+ */
28
+ function validateBounds(bounds) {
29
+ // array: [ -180, -85.05112877980659, 180, 85.0511287798066 ]
30
+ // validate bounds
31
+ if (Array.isArray(bounds) && bounds.length === 4 && [bounds[0], bounds[2]].every(isLng) && [bounds[1], bounds[3]].every(isLat)) {
32
+ return bounds;
33
+ }
34
+ return null;
35
+ }
36
+ function getCenterAndZoomFromBounds(bounds, _ref) {
37
+ var width = _ref.width,
38
+ height = _ref.height;
39
+ var validBounds = validateBounds(bounds);
40
+ if (!validBounds) {
41
+ _console["default"].warn('invalid map bounds provided');
42
+ return null;
43
+ }
44
+
45
+ // viewport(bounds, dimensions, minzoom, maxzoom, tileSize, allowFloat)
46
+ var _geoViewport$viewport = _geoViewport["default"].viewport(bounds, [width, height], undefined, undefined, MAPBOX_TILE_SIZE),
47
+ zoom = _geoViewport$viewport.zoom;
48
+ // center being calculated by geo-vieweport.viewport has a complex logic that
49
+ // projects and then unprojects the coordinates to determine the center
50
+ // Calculating a simple average instead as that is the expected behavior in most of cases
51
+ var center = [(bounds[0] + bounds[2]) / 2, (bounds[1] + bounds[3]) / 2];
52
+ return {
53
+ zoom: zoom,
54
+ center: center
55
+ };
56
+ }
57
+
58
+ /**
59
+ * Add extra info about screen space position and world position to the event.
60
+ * @param {*} event Event to normalize.
61
+ * @param {*} viewport Current viewport.
62
+ * @returns Normalized event with extra information compatible with React-map-gl MapLayerMouseEvent
63
+ * https://visgl.github.io/react-map-gl/docs/api-reference/types#maplayermouseevent
64
+ */
65
+ function normalizeEvent(event, viewport) {
66
+ var _event$target;
67
+ var bounds = (_event$target = event.target) === null || _event$target === void 0 ? void 0 : _event$target.getBoundingClientRect();
68
+ if (!bounds) {
69
+ return event;
70
+ }
71
+ var x = event.clientX - bounds.left;
72
+ var y = event.clientY - bounds.top;
73
+ if (!Number.isFinite(x) || !Number.isFinite(y)) {
74
+ return event;
75
+ }
76
+ event.point = [x, y];
77
+ var location = viewport.unproject(event.point, {
78
+ targetZ: 0
79
+ });
80
+ event.lngLat = [location[0], location[1]];
81
+ return event;
82
+ }
83
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZ2VvVmlld3BvcnQiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9jb25zb2xlIiwiTUFQQk9YX1RJTEVfU0laRSIsImV4cG9ydHMiLCJpc0xhdCIsIm51bSIsIk51bWJlciIsImlzRmluaXRlIiwiaXNMbmciLCJ2YWxpZGF0ZUJvdW5kcyIsImJvdW5kcyIsIkFycmF5IiwiaXNBcnJheSIsImxlbmd0aCIsImV2ZXJ5IiwiZ2V0Q2VudGVyQW5kWm9vbUZyb21Cb3VuZHMiLCJfcmVmIiwid2lkdGgiLCJoZWlnaHQiLCJ2YWxpZEJvdW5kcyIsIkNvbnNvbGUiLCJ3YXJuIiwiX2dlb1ZpZXdwb3J0JHZpZXdwb3J0IiwiZ2VvVmlld3BvcnQiLCJ2aWV3cG9ydCIsInVuZGVmaW5lZCIsInpvb20iLCJjZW50ZXIiLCJub3JtYWxpemVFdmVudCIsImV2ZW50IiwiX2V2ZW50JHRhcmdldCIsInRhcmdldCIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsIngiLCJjbGllbnRYIiwibGVmdCIsInkiLCJjbGllbnRZIiwidG9wIiwicG9pbnQiLCJsb2NhdGlvbiIsInVucHJvamVjdCIsInRhcmdldFoiLCJsbmdMYXQiXSwic291cmNlcyI6WyIuLi9zcmMvcHJvamVjdGlvbi11dGlscy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQgZ2VvVmlld3BvcnQgZnJvbSAnQG1hcGJveC9nZW8tdmlld3BvcnQnO1xuXG5pbXBvcnQgV2ViTWVyY2F0b3JWaWV3cG9ydCBmcm9tICd2aWV3cG9ydC1tZXJjYXRvci1wcm9qZWN0JztcbmltcG9ydCBDb25zb2xlIGZyb20gJ2dsb2JhbC9jb25zb2xlJztcblxuZXhwb3J0IGNvbnN0IE1BUEJPWF9USUxFX1NJWkUgPSA1MTI7XG5cbmZ1bmN0aW9uIGlzTGF0KG51bSkge1xuICByZXR1cm4gTnVtYmVyLmlzRmluaXRlKG51bSkgJiYgbnVtIDw9IDkwICYmIG51bSA+PSAtOTA7XG59XG5mdW5jdGlvbiBpc0xuZyhudW0pIHtcbiAgcmV0dXJuIE51bWJlci5pc0Zpbml0ZShudW0pICYmIG51bSA8PSAxODAgJiYgbnVtID49IC0xODA7XG59XG5cbi8qKlxuICogYm91bmRzIHNob3VsZCBiZSBbbWluTG5nLCBtaW5MYXQsIG1heExuZywgbWF4TGF0XVxuICogQHBhcmFtIHsqfSBib3VuZHNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlQm91bmRzKGJvdW5kcykge1xuICAvLyBhcnJheTogWyAtMTgwLCAtODUuMDUxMTI4Nzc5ODA2NTksIDE4MCwgODUuMDUxMTI4Nzc5ODA2NiBdXG4gIC8vIHZhbGlkYXRlIGJvdW5kc1xuICBpZiAoXG4gICAgQXJyYXkuaXNBcnJheShib3VuZHMpICYmXG4gICAgYm91bmRzLmxlbmd0aCA9PT0gNCAmJlxuICAgIFtib3VuZHNbMF0sIGJvdW5kc1syXV0uZXZlcnkoaXNMbmcpICYmXG4gICAgW2JvdW5kc1sxXSwgYm91bmRzWzNdXS5ldmVyeShpc0xhdClcbiAgKSB7XG4gICAgcmV0dXJuIGJvdW5kcztcbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldENlbnRlckFuZFpvb21Gcm9tQm91bmRzKGJvdW5kcywge3dpZHRoLCBoZWlnaHR9KSB7XG4gIGNvbnN0IHZhbGlkQm91bmRzID0gdmFsaWRhdGVCb3VuZHMoYm91bmRzKTtcbiAgaWYgKCF2YWxpZEJvdW5kcykge1xuICAgIENvbnNvbGUud2FybignaW52YWxpZCBtYXAgYm91bmRzIHByb3ZpZGVkJyk7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICAvLyB2aWV3cG9ydChib3VuZHMsIGRpbWVuc2lvbnMsIG1pbnpvb20sIG1heHpvb20sIHRpbGVTaXplLCBhbGxvd0Zsb2F0KVxuICBjb25zdCB7em9vbX0gPSBnZW9WaWV3cG9ydC52aWV3cG9ydChcbiAgICBib3VuZHMsXG4gICAgW3dpZHRoLCBoZWlnaHRdLFxuICAgIHVuZGVmaW5lZCxcbiAgICB1bmRlZmluZWQsXG4gICAgTUFQQk9YX1RJTEVfU0laRVxuICApO1xuICAvLyBjZW50ZXIgYmVpbmcgY2FsY3VsYXRlZCBieSBnZW8tdmlld2Vwb3J0LnZpZXdwb3J0IGhhcyBhIGNvbXBsZXggbG9naWMgdGhhdFxuICAvLyBwcm9qZWN0cyBhbmQgdGhlbiB1bnByb2plY3RzIHRoZSBjb29yZGluYXRlcyB0byBkZXRlcm1pbmUgdGhlIGNlbnRlclxuICAvLyBDYWxjdWxhdGluZyBhIHNpbXBsZSBhdmVyYWdlIGluc3RlYWQgYXMgdGhhdCBpcyB0aGUgZXhwZWN0ZWQgYmVoYXZpb3IgaW4gbW9zdCBvZiBjYXNlc1xuICBjb25zdCBjZW50ZXIgPSBbKGJvdW5kc1swXSArIGJvdW5kc1syXSkgLyAyLCAoYm91bmRzWzFdICsgYm91bmRzWzNdKSAvIDJdO1xuXG4gIHJldHVybiB7em9vbSwgY2VudGVyfTtcbn1cblxuLyoqXG4gKiBBZGQgZXh0cmEgaW5mbyBhYm91dCBzY3JlZW4gc3BhY2UgcG9zaXRpb24gYW5kIHdvcmxkIHBvc2l0aW9uIHRvIHRoZSBldmVudC5cbiAqIEBwYXJhbSB7Kn0gZXZlbnQgRXZlbnQgdG8gbm9ybWFsaXplLlxuICogQHBhcmFtIHsqfSB2aWV3cG9ydCBDdXJyZW50IHZpZXdwb3J0LlxuICogQHJldHVybnMgTm9ybWFsaXplZCBldmVudCB3aXRoIGV4dHJhIGluZm9ybWF0aW9uIGNvbXBhdGlibGUgd2l0aCBSZWFjdC1tYXAtZ2wgTWFwTGF5ZXJNb3VzZUV2ZW50XG4gKiBodHRwczovL3Zpc2dsLmdpdGh1Yi5pby9yZWFjdC1tYXAtZ2wvZG9jcy9hcGktcmVmZXJlbmNlL3R5cGVzI21hcGxheWVybW91c2VldmVudFxuICovXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplRXZlbnQoZXZlbnQ6IGFueSwgdmlld3BvcnQ6IFdlYk1lcmNhdG9yVmlld3BvcnQpIHtcbiAgY29uc3QgYm91bmRzID0gZXZlbnQudGFyZ2V0Py5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgaWYgKCFib3VuZHMpIHtcbiAgICByZXR1cm4gZXZlbnQ7XG4gIH1cblxuICBjb25zdCB4ID0gZXZlbnQuY2xpZW50WCAtIGJvdW5kcy5sZWZ0O1xuICBjb25zdCB5ID0gZXZlbnQuY2xpZW50WSAtIGJvdW5kcy50b3A7XG4gIGlmICghTnVtYmVyLmlzRmluaXRlKHgpIHx8ICFOdW1iZXIuaXNGaW5pdGUoeSkpIHtcbiAgICByZXR1cm4gZXZlbnQ7XG4gIH1cblxuICBldmVudC5wb2ludCA9IFt4LCB5XTtcbiAgY29uc3QgbG9jYXRpb24gPSB2aWV3cG9ydC51bnByb2plY3QoZXZlbnQucG9pbnQsIHt0YXJnZXRaOiAwfSk7XG4gIGV2ZW50LmxuZ0xhdCA9IFtsb2NhdGlvblswXSwgbG9jYXRpb25bMV1dO1xuXG4gIHJldHVybiBldmVudDtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUdBLElBQUFBLFlBQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUdBLElBQUFDLFFBQUEsR0FBQUYsc0JBQUEsQ0FBQUMsT0FBQTtBQU5BO0FBQ0E7O0FBT08sSUFBTUUsZ0JBQWdCLEdBQUFDLE9BQUEsQ0FBQUQsZ0JBQUEsR0FBRyxHQUFHO0FBRW5DLFNBQVNFLEtBQUtBLENBQUNDLEdBQUcsRUFBRTtFQUNsQixPQUFPQyxNQUFNLENBQUNDLFFBQVEsQ0FBQ0YsR0FBRyxDQUFDLElBQUlBLEdBQUcsSUFBSSxFQUFFLElBQUlBLEdBQUcsSUFBSSxDQUFDLEVBQUU7QUFDeEQ7QUFDQSxTQUFTRyxLQUFLQSxDQUFDSCxHQUFHLEVBQUU7RUFDbEIsT0FBT0MsTUFBTSxDQUFDQyxRQUFRLENBQUNGLEdBQUcsQ0FBQyxJQUFJQSxHQUFHLElBQUksR0FBRyxJQUFJQSxHQUFHLElBQUksQ0FBQyxHQUFHO0FBQzFEOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sU0FBU0ksY0FBY0EsQ0FBQ0MsTUFBTSxFQUFF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
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Inplace quick insertion sorting algorithm for numeric values
3
+ * 1. using a stack to eliminate recursion
4
+ * 2. sorting inplace to reduce memory usage
5
+ * 3. using insertion sort for small partition sizes
6
+ * The original source code is from:
7
+ * https://www.measurethat.net/Benchmarks/Show/3549/0/javascript-sorting-algorithms
8
+ * https://quick.work/?page=view-blog&id=24
9
+ *
10
+ * @param arr
11
+ */
12
+ export default function quickInsertionSort(arr: number[]): void;
@@ -0,0 +1,132 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports["default"] = quickInsertionSort;
8
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
9
+ // SPDX-License-Identifier: MIT
10
+ // Copyright contributors to the kepler.gl project
11
+
12
+ /**
13
+ * Inplace quick insertion sorting algorithm for numeric values
14
+ * 1. using a stack to eliminate recursion
15
+ * 2. sorting inplace to reduce memory usage
16
+ * 3. using insertion sort for small partition sizes
17
+ * The original source code is from:
18
+ * https://www.measurethat.net/Benchmarks/Show/3549/0/javascript-sorting-algorithms
19
+ * https://quick.work/?page=view-blog&id=24
20
+ *
21
+ * @param arr
22
+ */
23
+ function quickInsertionSort(arr) {
24
+ if (!arr || arr.length < 1) {
25
+ return;
26
+ }
27
+ var stack = [];
28
+ stack.push([0, arr.length, 2 * Math.floor(Math.log(arr.length) / Math.log(2))]);
29
+ while (stack.length > 0) {
30
+ var _stack = (0, _slicedToArray2["default"])(stack[stack.length - 1], 3),
31
+ start = _stack[0],
32
+ end = _stack[1],
33
+ depth = _stack[2];
34
+ stack.pop();
35
+ if (depth === 0) {
36
+ // for worst case of quick sort: too many partitions
37
+ shellSortBound(arr, start, end);
38
+ } else {
39
+ var pivot = Math.round((start + end) / 2);
40
+ var pivotNewIndex = inplaceQuicksortPartition(arr, start, end, pivot);
41
+ // more than 32 elements: faster to be sorted in QuickSort partition
42
+ // less than 32 elements: faster to be sorted in InsertionSort
43
+ if (end - pivotNewIndex > 16) {
44
+ stack.push([pivotNewIndex, end, depth - 1]);
45
+ }
46
+ if (pivotNewIndex - start > 16) {
47
+ stack.push([start, pivotNewIndex, depth - 1]);
48
+ }
49
+ }
50
+ }
51
+ insertionSort(arr);
52
+ }
53
+
54
+ /**
55
+ * shellsort is a generalization of insertion sort
56
+ * shellsort perform best on partially sorted array
57
+ * Don't use shellsort on array (>10k)
58
+ * @param arr
59
+ * @param start
60
+ * @param end
61
+ *
62
+ * Learn more about Shellsort at https://en.wikipedia.org/wiki/Shellsort
63
+ */
64
+ function shellSortBound(arr, start, end) {
65
+ if (arr.length <= 1) return;
66
+ var inc = Math.round((start + end) / 2);
67
+ var i;
68
+ var j;
69
+ var t;
70
+ while (inc > start) {
71
+ for (i = inc; i < end; i++) {
72
+ t = arr[i];
73
+ j = i;
74
+ while (j >= inc && arr[j - inc] > t) {
75
+ arr[j] = arr[j - inc];
76
+ j -= inc;
77
+ }
78
+ arr[j] = t;
79
+ }
80
+ inc = Math.round((inc - start) / 2.2 + start);
81
+ }
82
+ }
83
+
84
+ /**
85
+ * Insertion sort
86
+ * @param arr
87
+ */
88
+ function insertionSort(arr) {
89
+ for (var i = 1, l = arr.length; i < l; i++) {
90
+ var value = arr[i];
91
+ var j = void 0;
92
+ for (j = i - 1; j >= 0; j--) {
93
+ if (arr[j] <= value) break;
94
+ arr[j + 1] = arr[j];
95
+ }
96
+ arr[j + 1] = value;
97
+ }
98
+ }
99
+
100
+ /**
101
+ * In-place quick sort
102
+ * @param arr
103
+ * @param start
104
+ * @param end
105
+ * @param pivotIndex
106
+ * @returns number
107
+ */
108
+ function inplaceQuicksortPartition(arr, start, end, pivotIndex) {
109
+ var i = start;
110
+ var j = end;
111
+ var pivot = arr[pivotIndex];
112
+ var partition = true;
113
+ while (partition) {
114
+ while (arr[i] < pivot) {
115
+ i++;
116
+ }
117
+ j--;
118
+ while (pivot < arr[j]) {
119
+ j--;
120
+ }
121
+ if (!(i < j)) {
122
+ return i;
123
+ }
124
+ // swap(arr, i, j);
125
+ var t = arr[i];
126
+ arr[i] = arr[j];
127
+ arr[j] = t;
128
+ i++;
129
+ }
130
+ return i;
131
+ }
132
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJxdWlja0luc2VydGlvblNvcnQiLCJhcnIiLCJsZW5ndGgiLCJzdGFjayIsInB1c2giLCJNYXRoIiwiZmxvb3IiLCJsb2ciLCJfc3RhY2siLCJfc2xpY2VkVG9BcnJheTIiLCJzdGFydCIsImVuZCIsImRlcHRoIiwicG9wIiwic2hlbGxTb3J0Qm91bmQiLCJwaXZvdCIsInJvdW5kIiwicGl2b3ROZXdJbmRleCIsImlucGxhY2VRdWlja3NvcnRQYXJ0aXRpb24iLCJpbnNlcnRpb25Tb3J0IiwiaW5jIiwiaSIsImoiLCJ0IiwibCIsInZhbHVlIiwicGl2b3RJbmRleCIsInBhcnRpdGlvbiJdLCJzb3VyY2VzIjpbIi4uL3NyYy9xdWljay1pbnNlcnRpb24tc29ydC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG4vKipcbiAqIElucGxhY2UgcXVpY2sgaW5zZXJ0aW9uIHNvcnRpbmcgYWxnb3JpdGhtIGZvciBudW1lcmljIHZhbHVlc1xuICogMS4gdXNpbmcgYSBzdGFjayB0byBlbGltaW5hdGUgcmVjdXJzaW9uXG4gKiAyLiBzb3J0aW5nIGlucGxhY2UgdG8gcmVkdWNlIG1lbW9yeSB1c2FnZVxuICogMy4gdXNpbmcgaW5zZXJ0aW9uIHNvcnQgZm9yIHNtYWxsIHBhcnRpdGlvbiBzaXplc1xuICogVGhlIG9yaWdpbmFsIHNvdXJjZSBjb2RlIGlzIGZyb206XG4gKiBodHRwczovL3d3dy5tZWFzdXJldGhhdC5uZXQvQmVuY2htYXJrcy9TaG93LzM1NDkvMC9qYXZhc2NyaXB0LXNvcnRpbmctYWxnb3JpdGhtc1xuICogaHR0cHM6Ly9xdWljay53b3JrLz9wYWdlPXZpZXctYmxvZyZpZD0yNFxuICpcbiAqIEBwYXJhbSBhcnJcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gcXVpY2tJbnNlcnRpb25Tb3J0KGFycjogbnVtYmVyW10pOiB2b2lkIHtcbiAgaWYgKCFhcnIgfHwgYXJyLmxlbmd0aCA8IDEpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgY29uc3Qgc3RhY2s6IG51bWJlcltdW10gPSBbXTtcbiAgc3RhY2sucHVzaChbMCwgYXJyLmxlbmd0aCwgMiAqIE1hdGguZmxvb3IoTWF0aC5sb2coYXJyLmxlbmd0aCkgLyBNYXRoLmxvZygyKSldKTtcblxuICB3aGlsZSAoc3RhY2subGVuZ3RoID4gMCkge1xuICAgIGNvbnN0IFtzdGFydCwgZW5kLCBkZXB0aF0gPSBzdGFja1tzdGFjay5sZW5ndGggLSAxXTtcbiAgICBzdGFjay5wb3AoKTtcblxuICAgIGlmIChkZXB0aCA9PT0gMCkge1xuICAgICAgLy8gZm9yIHdvcnN0IGNhc2Ugb2YgcXVpY2sgc29ydDogdG9vIG1hbnkgcGFydGl0aW9uc1xuICAgICAgc2hlbGxTb3J0Qm91bmQoYXJyLCBzdGFydCwgZW5kKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgcGl2b3QgPSBNYXRoLnJvdW5kKChzdGFydCArIGVuZCkgLyAyKTtcbiAgICAgIGNvbnN0IHBpdm90TmV3SW5kZXggPSBpbnBsYWNlUXVpY2tzb3J0UGFydGl0aW9uKGFyciwgc3RhcnQsIGVuZCwgcGl2b3QpO1xuICAgICAgLy8gbW9yZSB0aGFuIDMyIGVsZW1lbnRzOiBmYXN0ZXIgdG8gYmUgc29ydGVkIGluIFF1aWNrU29ydCBwYXJ0aXRpb25cbiAgICAgIC8vIGxlc3MgdGhhbiAzMiBlbGVtZW50czogZmFzdGVyIHRvIGJlIHNvcnRlZCBpbiBJbnNlcnRpb25Tb3J0XG4gICAgICBpZiAoZW5kIC0gcGl2b3ROZXdJbmRleCA+IDE2KSB7XG4gICAgICAgIHN0YWNrLnB1c2goW3Bpdm90TmV3SW5kZXgsIGVuZCwgZGVwdGggLSAxXSk7XG4gICAgICB9XG4gICAgICBpZiAocGl2b3ROZXdJbmRleCAtIHN0YXJ0ID4gMTYpIHtcbiAgICAgICAgc3RhY2sucHVzaChbc3RhcnQsIHBpdm90TmV3SW5kZXgsIGRlcHRoIC0gMV0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBpbnNlcnRpb25Tb3J0KGFycik7XG59XG5cbi8qKlxuICogc2hlbGxzb3J0IGlzIGEgZ2VuZXJhbGl6YXRpb24gb2YgaW5zZXJ0aW9uIHNvcnRcbiAqIHNoZWxsc29ydCBwZXJmb3JtIGJlc3Qgb24gcGFydGlhbGx5IHNvcnRlZCBhcnJheVxuICogRG9uJ3QgdXNlIHNoZWxsc29ydCBvbiBhcnJheSAoPjEwaylcbiAqIEBwYXJhbSBhcnJcbiAqIEBwYXJhbSBzdGFydFxuICogQHBhcmFtIGVuZFxuICpcbiAqIExlYXJuIG1vcmUgYWJvdXQgU2hlbGxzb3J0IGF0IGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NoZWxsc29ydFxuICovXG5mdW5jdGlvbiBzaGVsbFNvcnRCb3VuZChhcnI6IG51bWJlcltdLCBzdGFydDogbnVtYmVyLCBlbmQ6IG51bWJlcikge1xuICBpZiAoYXJyLmxlbmd0aCA8PSAxKSByZXR1cm47XG4gIGxldCBpbmMgPSBNYXRoLnJvdW5kKChzdGFydCArIGVuZCkgLyAyKTtcbiAgbGV0IGk7XG4gIGxldCBqO1xuICBsZXQgdDtcblxuICB3aGlsZSAoaW5jID4gc3RhcnQpIHtcbiAgICBmb3IgKGkgPSBpbmM7IGkgPCBlbmQ7IGkrKykge1xuICAgICAgdCA9IGFycltpXTtcbiAgICAgIGogPSBpO1xuICAgICAgd2hpbGUgKGogPj0gaW5jICYmIGFycltqIC0gaW5jXSA+IHQpIHtcbiAgICAgICAgYXJyW2pdID0gYXJyW2ogLSBpbmNdO1xuICAgICAgICBqIC09IGluYztcbiAgICAgIH1cbiAgICAgIGFycltqXSA9IHQ7XG4gICAgfVxuICAgIGluYyA9IE1hdGgucm91bmQoKGluYyAtIHN0YXJ0KSAvIDIuMiArIHN0YXJ0KTtcbiAgfVxufVxuXG4vKipcbiAqIEluc2VydGlvbiBzb3J0XG4gKiBAcGFyYW0gYXJyXG4gKi9cbmZ1bmN0aW9uIGluc2VydGlvblNvcnQoYXJyOiBudW1iZXJbXSkge1xuICBmb3IgKGxldCBpID0gMSwgbCA9IGFyci5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICBjb25zdCB2YWx1ZSA9IGFycltpXTtcbiAgICBsZXQgajtcbiAgICBmb3IgKGogPSBpIC0gMTsgaiA+PSAwOyBqLS0pIHtcbiAgICAgIGlmIChhcnJbal0gPD0gdmFsdWUpIGJyZWFrO1xuICAgICAgYXJyW2ogKyAxXSA9IGFycltqXTtcbiAgICB9XG4gICAgYXJyW2ogKyAxXSA9IHZhbHVlO1xuICB9XG59XG5cbi8qKlxuICogSW4tcGxhY2UgcXVpY2sgc29ydFxuICogQHBhcmFtIGFyclxuICogQHBhcmFtIHN0YXJ0XG4gKiBAcGFyYW0gZW5kXG4gKiBAcGFyYW0gcGl2b3RJbmRleFxuICogQHJldHVybnMgbnVtYmVyXG4gKi9cbmZ1bmN0aW9uIGlucGxhY2VRdWlja3NvcnRQYXJ0aXRpb24oXG4gIGFycjogbnVtYmVyW10sXG4gIHN0YXJ0OiBudW1iZXIsXG4gIGVuZDogbnVtYmVyLFxuICBwaXZvdEluZGV4OiBudW1iZXJcbik6IG51bWJlciB7XG4gIGxldCBpID0gc3RhcnQ7XG4gIGxldCBqID0gZW5kO1xuICBjb25zdCBwaXZvdCA9IGFycltwaXZvdEluZGV4XTtcbiAgY29uc3QgcGFydGl0aW9uID0gdHJ1ZTtcbiAgd2hpbGUgKHBhcnRpdGlvbikge1xuICAgIHdoaWxlIChhcnJbaV0gPCBwaXZvdCkge1xuICAgICAgaSsrO1xuICAgIH1cbiAgICBqLS07XG4gICAgd2hpbGUgKHBpdm90IDwgYXJyW2pdKSB7XG4gICAgICBqLS07XG4gICAgfVxuICAgIGlmICghKGkgPCBqKSkge1xuICAgICAgcmV0dXJuIGk7XG4gICAgfVxuICAgIC8vIHN3YXAoYXJyLCBpLCBqKTtcbiAgICBjb25zdCB0ID0gYXJyW2ldO1xuICAgIGFycltpXSA9IGFycltqXTtcbiAgICBhcnJbal0gPSB0O1xuICAgIGkrKztcbiAgfVxuICByZXR1cm4gaTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTtBQUNBOztBQUVBO0FB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
@@ -0,0 +1,31 @@
1
+ import { DataRow, SharedRowOptions } from './data-row';
2
+ import { ProtoDatasetField } from '@kepler.gl/types';
3
+ import { DataContainerInterface, RangeOptions } from './data-container-interface';
4
+ declare type RowDataContainerInput = {
5
+ rows: any[][];
6
+ fields?: ProtoDatasetField[];
7
+ };
8
+ /**
9
+ * A data container where all data is stored internally as a 2D array.
10
+ */
11
+ export declare class RowDataContainer implements DataContainerInterface {
12
+ _rows: any[][];
13
+ _numColumns: number;
14
+ constructor(data: RowDataContainerInput);
15
+ numRows(): number;
16
+ numColumns(): number;
17
+ valueAt(rowIndex: number, columnIndex: number): any;
18
+ row(rowIndex: number, sharedRow?: SharedRowOptions): DataRow;
19
+ rowAsArray(rowIndex: number): any[];
20
+ rows(sharedRow: SharedRowOptions): any;
21
+ column(columnIndex: number): Generator<any, void, unknown>;
22
+ flattenData(): any[][];
23
+ getPlainIndex(): number[];
24
+ map<T>(func: (row: DataRow, index: number) => T, sharedRow?: SharedRowOptions, options?: RangeOptions): T[];
25
+ mapIndex<T>(func: ({ index: number }: {
26
+ index: any;
27
+ }, dc: DataContainerInterface) => T, options?: RangeOptions): T[];
28
+ find(func: (row: DataRow, index: number) => boolean, sharedRow?: SharedRowOptions): DataRow | undefined;
29
+ reduce<T>(func: (acc: T, row: DataRow, index: number) => T, initialValue: T, sharedRow?: SharedRowOptions): T;
30
+ }
31
+ export {};
@@ -0,0 +1,206 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.RowDataContainer = void 0;
8
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
9
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
10
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
12
+ var _dataRow = require("./data-row");
13
+ var _marked = /*#__PURE__*/_regenerator["default"].mark(rowsIterator),
14
+ _marked2 = /*#__PURE__*/_regenerator["default"].mark(columnIterator); // SPDX-License-Identifier: MIT
15
+ // Copyright contributors to the kepler.gl project
16
+ /**
17
+ * @param dataContainer
18
+ * @param sharedRow
19
+ */
20
+ function rowsIterator(dataContainer, sharedRow) {
21
+ var numRows, rowIndex;
22
+ return _regenerator["default"].wrap(function rowsIterator$(_context) {
23
+ while (1) switch (_context.prev = _context.next) {
24
+ case 0:
25
+ numRows = dataContainer.numRows();
26
+ rowIndex = 0;
27
+ case 2:
28
+ if (!(rowIndex < numRows)) {
29
+ _context.next = 8;
30
+ break;
31
+ }
32
+ _context.next = 5;
33
+ return dataContainer.row(rowIndex, sharedRow);
34
+ case 5:
35
+ ++rowIndex;
36
+ _context.next = 2;
37
+ break;
38
+ case 8:
39
+ case "end":
40
+ return _context.stop();
41
+ }
42
+ }, _marked);
43
+ }
44
+
45
+ /**
46
+ * @param dataContainer
47
+ * @param columnIndex
48
+ */
49
+ function columnIterator(dataContainer, columnIndex) {
50
+ var numRows, rowIndex;
51
+ return _regenerator["default"].wrap(function columnIterator$(_context2) {
52
+ while (1) switch (_context2.prev = _context2.next) {
53
+ case 0:
54
+ numRows = dataContainer.numRows();
55
+ rowIndex = 0;
56
+ case 2:
57
+ if (!(rowIndex < numRows)) {
58
+ _context2.next = 8;
59
+ break;
60
+ }
61
+ _context2.next = 5;
62
+ return dataContainer.valueAt(rowIndex, columnIndex);
63
+ case 5:
64
+ ++rowIndex;
65
+ _context2.next = 2;
66
+ break;
67
+ case 8:
68
+ case "end":
69
+ return _context2.stop();
70
+ }
71
+ }, _marked2);
72
+ }
73
+
74
+ /**
75
+ * A data container where all data is stored internally as a 2D array.
76
+ */
77
+ var RowDataContainer = exports.RowDataContainer = /*#__PURE__*/function () {
78
+ function RowDataContainer(data) {
79
+ var _data$rows$;
80
+ (0, _classCallCheck2["default"])(this, RowDataContainer);
81
+ (0, _defineProperty2["default"])(this, "_rows", void 0);
82
+ (0, _defineProperty2["default"])(this, "_numColumns", void 0);
83
+ if (!data.rows) {
84
+ throw Error('RowDataContainer: no rows provided');
85
+ }
86
+ if (!Array.isArray(data.rows)) {
87
+ throw Error("RowDataContainer: rows object isn't an array");
88
+ }
89
+ this._rows = data.rows;
90
+ this._numColumns = ((_data$rows$ = data.rows[0]) === null || _data$rows$ === void 0 ? void 0 : _data$rows$.length) || 0;
91
+ }
92
+ return (0, _createClass2["default"])(RowDataContainer, [{
93
+ key: "numRows",
94
+ value: function numRows() {
95
+ return this._rows.length;
96
+ }
97
+ }, {
98
+ key: "numColumns",
99
+ value: function numColumns() {
100
+ return this._numColumns;
101
+ }
102
+ }, {
103
+ key: "valueAt",
104
+ value: function valueAt(rowIndex, columnIndex) {
105
+ if (this._rows[rowIndex] === null) {
106
+ return null;
107
+ }
108
+ return this._rows[rowIndex][columnIndex];
109
+ }
110
+ }, {
111
+ key: "row",
112
+ value: function row(rowIndex, sharedRow) {
113
+ var tSharedRow = _dataRow.DataRow.createSharedRow(sharedRow);
114
+ if (tSharedRow) {
115
+ tSharedRow.setSource(this, rowIndex);
116
+ return tSharedRow;
117
+ }
118
+ return new _dataRow.DataRow(this, rowIndex);
119
+ }
120
+ }, {
121
+ key: "rowAsArray",
122
+ value: function rowAsArray(rowIndex) {
123
+ return this._rows[rowIndex];
124
+ }
125
+ }, {
126
+ key: "rows",
127
+ value: function rows(sharedRow) {
128
+ var tSharedRow = _dataRow.DataRow.createSharedRow(sharedRow);
129
+ return rowsIterator(this, tSharedRow);
130
+ }
131
+ }, {
132
+ key: "column",
133
+ value: function column(columnIndex) {
134
+ return columnIterator(this, columnIndex);
135
+ }
136
+ }, {
137
+ key: "flattenData",
138
+ value: function flattenData() {
139
+ return this._rows;
140
+ }
141
+ }, {
142
+ key: "getPlainIndex",
143
+ value: function getPlainIndex() {
144
+ return this._rows.map(function (_, i) {
145
+ return i;
146
+ });
147
+ }
148
+ }, {
149
+ key: "map",
150
+ value: function map(func, sharedRow) {
151
+ var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
152
+ var tSharedRow = _dataRow.DataRow.createSharedRow(sharedRow);
153
+ var _options$start = options.start,
154
+ start = _options$start === void 0 ? 0 : _options$start,
155
+ _options$end = options.end,
156
+ end = _options$end === void 0 ? this.numRows() : _options$end;
157
+ var endRow = Math.min(this.numRows(), end);
158
+ var out = [];
159
+ for (var rowIndex = start; rowIndex < endRow; ++rowIndex) {
160
+ var row = this.row(rowIndex, tSharedRow);
161
+ out.push(func(row, rowIndex));
162
+ }
163
+ return out;
164
+ }
165
+ }, {
166
+ key: "mapIndex",
167
+ value: function mapIndex(func) {
168
+ var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
169
+ var _options$start2 = options.start,
170
+ start = _options$start2 === void 0 ? 0 : _options$start2,
171
+ _options$end2 = options.end,
172
+ end = _options$end2 === void 0 ? this.numRows() : _options$end2;
173
+ var endRow = Math.min(this.numRows(), end);
174
+ var out = [];
175
+ for (var rowIndex = start; rowIndex < endRow; ++rowIndex) {
176
+ out.push(func({
177
+ index: rowIndex
178
+ }, this));
179
+ }
180
+ return out;
181
+ }
182
+ }, {
183
+ key: "find",
184
+ value: function find(func, sharedRow) {
185
+ var tSharedRow = _dataRow.DataRow.createSharedRow(sharedRow);
186
+ for (var rowIndex = 0; rowIndex < this._rows.length; ++rowIndex) {
187
+ var row = this.row(rowIndex, tSharedRow);
188
+ if (func(row, rowIndex)) {
189
+ return row;
190
+ }
191
+ }
192
+ return undefined;
193
+ }
194
+ }, {
195
+ key: "reduce",
196
+ value: function reduce(func, initialValue, sharedRow) {
197
+ var tSharedRow = _dataRow.DataRow.createSharedRow(sharedRow);
198
+ for (var rowIndex = 0; rowIndex < this._rows.length; ++rowIndex) {
199
+ var row = this.row(rowIndex, tSharedRow);
200
+ initialValue = func(initialValue, row, rowIndex);
201
+ }
202
+ return initialValue;
203
+ }
204
+ }]);
205
+ }();
206
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZGF0YVJvdyIsInJlcXVpcmUiLCJfbWFya2VkIiwiX3JlZ2VuZXJhdG9yIiwibWFyayIsInJvd3NJdGVyYXRvciIsIl9tYXJrZWQyIiwiY29sdW1uSXRlcmF0b3IiLCJkYXRhQ29udGFpbmVyIiwic2hhcmVkUm93IiwibnVtUm93cyIsInJvd0luZGV4Iiwid3JhcCIsInJvd3NJdGVyYXRvciQiLCJfY29udGV4dCIsInByZXYiLCJuZXh0Iiwicm93Iiwic3RvcCIsImNvbHVtbkluZGV4IiwiY29sdW1uSXRlcmF0b3IkIiwiX2NvbnRleHQyIiwidmFsdWVBdCIsIlJvd0RhdGFDb250YWluZXIiLCJleHBvcnRzIiwiZGF0YSIsIl9kYXRhJHJvd3MkIiwiX2NsYXNzQ2FsbENoZWNrMiIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJyb3dzIiwiRXJyb3IiLCJBcnJheSIsImlzQXJyYXkiLCJfcm93cyIsIl9udW1Db2x1bW5zIiwibGVuZ3RoIiwiX2NyZWF0ZUNsYXNzMiIsImtleSIsInZhbHVlIiwibnVtQ29sdW1ucyIsInRTaGFyZWRSb3ciLCJEYXRhUm93IiwiY3JlYXRlU2hhcmVkUm93Iiwic2V0U291cmNlIiwicm93QXNBcnJheSIsImNvbHVtbiIsImZsYXR0ZW5EYXRhIiwiZ2V0UGxhaW5JbmRleCIsIm1hcCIsIl8iLCJpIiwiZnVuYyIsIm9wdGlvbnMiLCJhcmd1bWVudHMiLCJ1bmRlZmluZWQiLCJfb3B0aW9ucyRzdGFydCIsInN0YXJ0IiwiX29wdGlvbnMkZW5kIiwiZW5kIiwiZW5kUm93IiwiTWF0aCIsIm1pbiIsIm91dCIsInB1c2giLCJtYXBJbmRleCIsIl9vcHRpb25zJHN0YXJ0MiIsIl9vcHRpb25zJGVuZDIiLCJpbmRleCIsImZpbmQiLCJyZWR1Y2UiLCJpbml0aWFsVmFsdWUiXSwic291cmNlcyI6WyIuLi9zcmMvcm93LWRhdGEtY29udGFpbmVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCB7RGF0YVJvdywgU2hhcmVkUm93T3B0aW9uc30gZnJvbSAnLi9kYXRhLXJvdyc7XG5pbXBvcnQge1Byb3RvRGF0YXNldEZpZWxkfSBmcm9tICdAa2VwbGVyLmdsL3R5cGVzJztcbmltcG9ydCB7RGF0YUNvbnRhaW5lckludGVyZmFjZSwgUmFuZ2VPcHRpb25zfSBmcm9tICcuL2RhdGEtY29udGFpbmVyLWludGVyZmFjZSc7XG5cbnR5cGUgUm93RGF0YUNvbnRhaW5lcklucHV0ID0ge1xuICByb3dzOiBhbnlbXVtdO1xuICBmaWVsZHM/OiBQcm90b0RhdGFzZXRGaWVsZFtdO1xufTtcblxuLyoqXG4gKiBAcGFyYW0gZGF0YUNvbnRhaW5lclxuICogQHBhcmFtIHNoYXJlZFJvd1xuICovXG5mdW5jdGlvbiogcm93c0l0ZXJhdG9yKGRhdGFDb250YWluZXI6IERhdGFDb250YWluZXJJbnRlcmZhY2UsIHNoYXJlZFJvdzogU2hhcmVkUm93T3B0aW9ucykge1xuICBjb25zdCBudW1Sb3dzID0gZGF0YUNvbnRhaW5lci5udW1Sb3dzKCk7XG4gIGZvciAobGV0IHJvd0luZGV4ID0gMDsgcm93SW5kZXggPCBudW1Sb3dzOyArK3Jvd0luZGV4KSB7XG4gICAgeWllbGQgZGF0YUNvbnRhaW5lci5yb3cocm93SW5kZXgsIHNoYXJlZFJvdyk7XG4gIH1cbn1cblxuLyoqXG4gKiBAcGFyYW0gZGF0YUNvbnRhaW5lclxuICogQHBhcmFtIGNvbHVtbkluZGV4XG4gKi9cbmZ1bmN0aW9uKiBjb2x1bW5JdGVyYXRvcihkYXRhQ29udGFpbmVyOiBEYXRhQ29udGFpbmVySW50ZXJmYWNlLCBjb2x1bW5JbmRleDogbnVtYmVyKSB7XG4gIGNvbnN0IG51bVJvd3MgPSBkYXRhQ29udGFpbmVyLm51bVJvd3MoKTtcbiAgZm9yIChsZXQgcm93SW5kZXggPSAwOyByb3dJbmRleCA8IG51bVJvd3M7ICsrcm93SW5kZXgpIHtcbiAgICB5aWVsZCBkYXRhQ29udGFpbmVyLnZhbHVlQXQocm93SW5kZXgsIGNvbHVtbkluZGV4KTtcbiAgfVxufVxuXG4vKipcbiAqIEEgZGF0YSBjb250YWluZXIgd2hlcmUgYWxsIGRhdGEgaXMgc3RvcmVkIGludGVybmFsbHkgYXMgYSAyRCBhcnJheS5cbiAqL1xuZXhwb3J0IGNsYXNzIFJvd0RhdGFDb250YWluZXIgaW1wbGVtZW50cyBEYXRhQ29udGFpbmVySW50ZXJmYWNlIHtcbiAgX3Jvd3M6IGFueVtdW107XG4gIF9udW1Db2x1bW5zOiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3IoZGF0YTogUm93RGF0YUNvbnRhaW5lcklucHV0KSB7XG4gICAgaWYgKCFkYXRhLnJvd3MpIHtcbiAgICAgIHRocm93IEVycm9yKCdSb3dEYXRhQ29udGFpbmVyOiBubyByb3dzIHByb3ZpZGVkJyk7XG4gICAgfVxuXG4gICAgaWYgKCFBcnJheS5pc0FycmF5KGRhdGEucm93cykpIHtcbiAgICAgIHRocm93IEVycm9yKFwiUm93RGF0YUNvbnRhaW5lcjogcm93cyBvYmplY3QgaXNuJ3QgYW4gYXJyYXlcIik7XG4gICAgfVxuXG4gICAgdGhpcy5fcm93cyA9IGRhdGEucm93cztcbiAgICB0aGlzLl9udW1Db2x1bW5zID0gZGF0YS5yb3dzWzBdPy5sZW5ndGggfHwgMDtcbiAgfVxuXG4gIG51bVJvd3MoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fcm93cy5sZW5ndGg7XG4gIH1cblxuICBudW1Db2x1bW5zKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX251bUNvbHVtbnM7XG4gIH1cblxuICB2YWx1ZUF0KHJvd0luZGV4OiBudW1iZXIsIGNvbHVtbkluZGV4OiBudW1iZXIpOiBhbnkge1xuICAgIGlmICh0aGlzLl9yb3dzW3Jvd0luZGV4XSA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9yb3dzW3Jvd0luZGV4XVtjb2x1bW5JbmRleF07XG4gIH1cblxuICByb3cocm93SW5kZXg6IG51bWJlciwgc2hhcmVkUm93PzogU2hhcmVkUm93T3B0aW9ucyk6IERhdGFSb3cge1xuICAgIGNvbnN0IHRTaGFyZWRSb3cgPSBEYXRhUm93LmNyZWF0ZVNoYXJlZFJvdyhzaGFyZWRSb3cpO1xuICAgIGlmICh0U2hhcmVkUm93KSB7XG4gICAgICB0U2hhcmVkUm93LnNldFNvdXJjZSh0aGlzLCByb3dJbmRleCk7XG4gICAgICByZXR1cm4gdFNoYXJlZFJvdztcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IERhdGFSb3codGhpcywgcm93SW5kZXgpO1xuICB9XG5cbiAgcm93QXNBcnJheShyb3dJbmRleDogbnVtYmVyKTogYW55W10ge1xuICAgIHJldHVybiB0aGlzLl9yb3dzW3Jvd0luZGV4XTtcbiAgfVxuXG4gIHJvd3Moc2hhcmVkUm93OiBTaGFyZWRSb3dPcHRpb25zKSB7XG4gICAgY29uc3QgdFNoYXJlZFJvdyA9IERhdGFSb3cuY3JlYXRlU2hhcmVkUm93KHNoYXJlZFJvdyk7XG4gICAgcmV0dXJuIHJvd3NJdGVyYXRvcih0aGlzLCB0U2hhcmVkUm93KTtcbiAgfVxuXG4gIGNvbHVtbihjb2x1bW5JbmRleDogbnVtYmVyKSB7XG4gICAgcmV0dXJuIGNvbHVtbkl0ZXJhdG9yKHRoaXMsIGNvbHVtbkluZGV4KTtcbiAgfVxuXG4gIGZsYXR0ZW5EYXRhKCk6IGFueVtdW10ge1xuICAgIHJldHVybiB0aGlzLl9yb3dzO1xuICB9XG5cbiAgZ2V0UGxhaW5JbmRleCgpOiBudW1iZXJbXSB7XG4gICAgcmV0dXJuIHRoaXMuX3Jvd3MubWFwKChfLCBpKSA9PiBpKTtcbiAgfVxuXG4gIG1hcDxUPihcbiAgICBmdW5jOiAocm93OiBEYXRhUm93LCBpbmRleDogbnVtYmVyKSA9PiBULFxuICAgIHNoYXJlZFJvdz86IFNoYXJlZFJvd09wdGlvbnMsXG4gICAgb3B0aW9uczogUmFuZ2VPcHRpb25zID0ge31cbiAgKTogVFtdIHtcbiAgICBjb25zdCB0U2hhcmVkUm93ID0gRGF0YVJvdy5jcmVhdGVTaGFyZWRSb3coc2hhcmVkUm93KTtcblxuICAgIGNvbnN0IHtzdGFydCA9IDAsIGVuZCA9IHRoaXMubnVtUm93cygpfSA9IG9wdGlvbnM7XG4gICAgY29uc3QgZW5kUm93ID0gTWF0aC5taW4odGhpcy5udW1Sb3dzKCksIGVuZCk7XG5cbiAgICBjb25zdCBvdXQ6IFRbXSA9IFtdO1xuICAgIGZvciAobGV0IHJvd0luZGV4ID0gc3RhcnQ7IHJvd0luZGV4IDwgZW5kUm93OyArK3Jvd0luZGV4KSB7XG4gICAgICBjb25zdCByb3cgPSB0aGlzLnJvdyhyb3dJbmRleCwgdFNoYXJlZFJvdyk7XG4gICAgICBvdXQucHVzaChmdW5jKHJvdywgcm93SW5kZXgpKTtcbiAgICB9XG4gICAgcmV0dXJuIG91dDtcbiAgfVxuXG4gIG1hcEluZGV4PFQ+KFxuICAgIGZ1bmM6ICh7aW5kZXg6IG51bWJlcn0sIGRjOiBEYXRhQ29udGFpbmVySW50ZXJmYWNlKSA9PiBULFxuICAgIG9wdGlvbnM6IFJhbmdlT3B0aW9ucyA9IHt9XG4gICk6IFRbXSB7XG4gICAgY29uc3Qge3N0YXJ0ID0gMCwgZW5kID0gdGhpcy5udW1Sb3dzKCl9ID0gb3B0aW9ucztcbiAgICBjb25zdCBlbmRSb3cgPSBNYXRoLm1pbih0aGlzLm51bVJvd3MoKSwgZW5kKTtcblxuICAgIGNvbnN0IG91dDogVFtdID0gW107XG4gICAgZm9yIChsZXQgcm93SW5kZXggPSBzdGFydDsgcm93SW5kZXggPCBlbmRSb3c7ICsrcm93SW5kZXgpIHtcbiAgICAgIG91dC5wdXNoKGZ1bmMoe2luZGV4OiByb3dJbmRleH0sIHRoaXMpKTtcbiAgICB9XG4gICAgcmV0dXJuIG91dDtcbiAgfVxuXG4gIGZpbmQoXG4gICAgZnVuYzogKHJvdzogRGF0YVJvdywgaW5kZXg6IG51bWJlcikgPT4gYm9vbGVhbixcbiAgICBzaGFyZWRSb3c/OiBTaGFyZWRSb3dPcHRpb25zXG4gICk6IERhdGFSb3cgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IHRTaGFyZWRSb3cgPSBEYXRhUm93LmNyZWF0ZVNoYXJlZFJvdyhzaGFyZWRSb3cpO1xuXG4gICAgZm9yIChsZXQgcm93SW5kZXggPSAwOyByb3dJbmRleCA8IHRoaXMuX3Jvd3MubGVuZ3RoOyArK3Jvd0luZGV4KSB7XG4gICAgICBjb25zdCByb3cgPSB0aGlzLnJvdyhyb3dJbmRleCwgdFNoYXJlZFJvdyk7XG4gICAgICBpZiAoZnVuYyhyb3csIHJvd0luZGV4KSkge1xuICAgICAgICByZXR1cm4gcm93O1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgcmVkdWNlPFQ+KFxuICAgIGZ1bmM6IChhY2M6IFQsIHJvdzogRGF0YVJvdywgaW5kZXg6IG51bWJlcikgPT4gVCxcbiAgICBpbml0aWFsVmFsdWU6IFQsXG4gICAgc2hhcmVkUm93PzogU2hhcmVkUm93T3B0aW9uc1xuICApOiBUIHtcbiAgICBjb25zdCB0U2hhcmVkUm93ID0gRGF0YVJvdy5jcmVhdGVTaGFyZWRSb3coc2hhcmVkUm93KTtcblxuICAgIGZvciAobGV0IHJvd0luZGV4ID0gMDsgcm93SW5kZXggPCB0aGlzLl9yb3dzLmxlbmd0aDsgKytyb3dJbmRleCkge1xuICAgICAgY29uc3Qgcm93ID0gdGhpcy5yb3cocm93SW5kZXgsIHRTaGFyZWRSb3cpO1xuICAgICAgaW5pdGlhbFZhbHVlID0gZnVuYyhpbml0aWFsVmFsdWUsIHJvdywgcm93SW5kZXgpO1xuICAgIH1cbiAgICByZXR1cm4gaW5pdGlhbFZhbHVlO1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBR0EsSUFBQUEsUUFBQSxHQUFBQyxPQUFBO0FBQXFELElBQUFDLE9BQUEsZ0JBQUFDLFlBQUEsWUFBQUMsSUFBQSxDQWEzQ0MsWUFBWTtFQUFBQyxRQUFBLGdCQUFBSCxZQUFBLFlBQUFDLElBQUEsQ0FXWkcsY0FBYyxHQTNCeEI7QUFDQTtBQVdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBVUYsWUFBWUEsQ0FBQ0csYUFBcUMsRUFBRUMsU0FBMkI7RUFBQSxJQUFBQyxPQUFBLEVBQUFDLFFBQUE7RUFBQSxPQUFBUixZQUFBLFlBQUFTLElBQUEsVUFBQUMsY0FBQUMsUUFBQTtJQUFBLGtCQUFBQSxRQUFBLENBQUFDLElBQUEsR0FBQUQsUUFBQSxDQUFBRSxJQUFBO01BQUE7UUFDakZOLE9BQU8sR0FBR0YsYUFBYSxDQUFDRSxPQUFPLENBQUMsQ0FBQztRQUM5QkMsUUFBUSxHQUFHLENBQUM7TUFBQTtRQUFBLE1BQUVBLFFBQVEsR0FBR0QsT0FBTztVQUFBSSxRQUFBLENBQUFFLElBQUE7VUFBQTtRQUFBO1FBQUFGLFFBQUEsQ0FBQUUsSUFBQTtRQUN2QyxPQUFNUixhQUFhLENBQUNTLEdBQUcsQ0FBQ04sUUFBUSxFQUFFRixTQUFTLENBQUM7TUFBQTtRQURILEVBQUVFLFFBQVE7UUFBQUcsUUFBQSxDQUFBRSxJQUFBO1FBQUE7TUFBQTtNQUFBO1FBQUEsT0FBQUYsUUFBQSxDQUFBSSxJQUFBO0lBQUE7RUFBQSxHQUFBaEIsT0FBQTtBQUFBOztBQUt2RDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVVLLGNBQWNBLENBQUNDLGFBQXFDLEVBQUVXLFdBQW1CO0VBQUEsSUFBQVQsT0FBQSxFQUFBQyxRQUFBO0VBQUEsT0FBQVIsWUFBQSxZQUFBUyxJQUFBLFVBQUFRLGdCQUFBQyxTQUFBO0lBQUEsa0JBQUFBLFNBQUEsQ0FBQU4sSUFBQSxHQUFBTSxTQUFBLENBQUFMLElBQUE7TUFBQTtRQUMzRU4sT0FBTyxHQUFHRixhQUFhLENBQUNFLE9BQU8sQ0FBQyxDQUFDO1FBQzlCQyxRQUFRLEdBQUcsQ0FBQztNQUFBO1FBQUEsTUFBRUEsUUFBUSxHQUFHRCxPQUFPO1VBQUFXLFNBQUEsQ0FBQUwsSUFBQTtVQUFBO1FBQUE7UUFBQUssU0FBQSxDQUFBTCxJQUFBO1FBQ3ZDLE9BQU1SLGFBQWEsQ0FBQ2MsT0FBTyxDQUFDWCxRQUFRLEVBQUVRLFdBQVcsQ0FBQztNQUFBO1FBRFQsRUFBRVIsUUFBUTtRQUFBVSxTQUFBLENBQUFMLElBQUE7UUFBQTtNQUFBO01BQUE7UUFBQSxPQUFBSyxTQUFBLENBQUFILElBQUE7SUFBQTtFQUFBLEdBQUFaLFFBQUE7QUFBQTs7QUFLdkQ7QUFDQTtBQUNBO0FBRkEsSUFHYWlCLGdCQUFnQixHQUFBQyxPQUFBLENBQUFELGdCQUFBO0VBSTNCLFNBQUFBLGlCQUFZRSxJQUEyQixFQUFFO0lBQUEsSUFBQUMsV0FBQTtJQUFBLElBQUFDLGdCQUFBLG1CQUFBSixnQkFBQTtJQUFBLElBQUFLLGdCQUFBO0lBQUEsSUFBQUEsZ0JBQUE7SUFDdkMsSUFBSSxDQUFDSCxJQUFJLENBQUNJLElBQUksRUFBRTtNQUNkLE1BQU1DLEtBQUssQ0FBQyxvQ0FBb0MsQ0FBQztJQUNuRDtJQUVBLElBQUksQ0FBQ0MsS0FBSyxDQUFDQyxPQUFPLENBQUNQLElBQUksQ0FBQ0ksSUFBSSxDQUFDLEVBQUU7TUFDN0IsTUFBTUMsS0FBSyxDQUFDLDhDQUE4QyxDQUFDO0lBQzdEO0lBRUEsSUFBSSxDQUFDRyxLQUFLLEdBQUdSLElBQUksQ0FBQ0ksSUFBSTtJQUN0QixJQUFJLENBQUNLLFdBQVcsR0FBRyxFQUFBUixXQUFBLEdBQUFELElBQUksQ0FBQ0ksSUFBSSxDQUFDLENBQUMsQ0FBQyxjQUFBSCxXQUFBLHVCQUFaQSxXQUFBLENBQWNTLE1BQU0sS0FBSSxDQUFDO0VBQzlDO0VBQUMsV0FBQUMsYUFBQSxhQUFBYixnQkFBQTtJQUFBYyxHQUFBO0lBQUFDLEtBQUEsRUFFRCxTQUFBNUIsT0FBT0EsQ0FBQSxFQUFXO01BQ2hCLE9BQU8sSUFBSSxDQUFDdUIsS0FBSyxDQUFDRSxNQUFNO0lBQzFCO0VBQUM7SUFBQUUsR0FBQTtJQUFBQyxLQUFBLEVBRUQsU0FBQUMsVUFBVUEsQ0FBQSxFQUFXO01BQ25CLE9BQU8sSUFBSSxDQUFDTCxXQUFXO0lBQ3pCO0VBQUM7SUFBQUcsR0FBQTtJQUFBQyxLQUFBLEVBRUQsU0FBQWhCLE9BQU9BLENBQUNYLFFBQWdCLEVBQUVRLFdBQW1CLEVBQU87TUFDbEQsSUFBSSxJQUFJLENBQUNjLEtBQUssQ0FBQ3RCLFFBQVEsQ0FBQyxLQUFLLElBQUksRUFBRTtRQUNqQyxPQUFPLElBQUk7TUFDYjtNQUNBLE9BQU8sSUFBSSxDQUFDc0IsS0FBSyxDQUFDdEIsUUFBUSxDQUFDLENBQUNRLFdBQVcsQ0FBQztJQUMxQztFQUFDO0lBQUFrQixHQUFBO0lBQUFDLEtBQUEsRUFFRCxTQUFBckIsR0FBR0EsQ0FBQ04sUUFBZ0IsRUFBRUYsU0FBNEIsRUFBVztNQUMzRCxJQUFNK0IsVUFBVSxHQUFHQyxnQkFBTyxDQUFDQyxlQUFlLENBQUNqQyxTQUFTLENBQUM7TUFDckQsSUFBSStCLFVBQVUsRUFBRTtRQUNkQSxVQUFVLENBQUNHLFNBQVMsQ0FBQyxJQUFJLEVBQUVoQyxRQUFRLENBQUM7UUFDcEMsT0FBTzZCLFVBQVU7TUFDbkI7TUFFQSxPQUFPLElBQUlDLGdCQUFPLENBQUMsSUFBSSxFQUFFOUIsUUFBUSxDQUFDO0lBQ3BDO0VBQUM7SUFBQTBCLEdBQUE7SUFBQUMsS0FBQSxFQUVELFNBQUFNLFVBQVVBLENBQUNqQyxRQUFnQixFQUFTO01BQ2xDLE9BQU8sSUFBSSxDQUFDc0IsS0FBSyxDQUFDdEIsUUFBUSxDQUFDO0lBQzdCO0VBQUM7SUFBQTBCLEdBQUE7SUFBQUMsS0FBQSxFQUVELFNBQUFULElBQUlBLENBQUNwQixTQUEyQixFQUFFO01BQ2hDLElBQU0rQixVQUFVLEdBQUdDLGdCQUFPLENBQUNDLGVBQWUsQ0FBQ2pDLFNBQVMsQ0FBQztNQUNyRCxPQUFPSixZQUFZLENBQUMsSUFBSSxFQUFFbUMsVUFBVSxDQUFDO0lBQ3ZDO0VBQUM7SUFBQUgsR0FBQTtJQUFBQyxLQUFBLEVBRUQsU0FBQU8sTUFBTUEsQ0FBQzFCLFdBQW1CLEVBQUU7TUFDMUIsT0FBT1osY0FBYyxDQUFDLElBQUksRUFBRVksV0FBVyxDQUFDO0lBQzFDO0VBQUM7SUFBQWtCLEdBQUE7SUFBQUMsS0FBQSxFQUVELFNBQUFRLFdBQVdBLENBQUEsRUFBWTtNQUNyQixPQUFPLElBQUksQ0FBQ2IsS0FBSztJQUNuQjtFQUFDO0lBQUFJLEdBQUE7SUFBQUMsS0FBQSxFQUVELFNBQUFTLGFBQWFBLENBQUEsRUFBYTtNQUN4QixPQUFPLElBQUksQ0FBQ2QsS0FBSyxDQUFDZSxHQUFHLENBQUMsVUFBQ0MsQ0FBQyxFQUFFQyxDQUFDO1FBQUEsT0FBS0EsQ0FBQztNQUFBLEVBQUM7SUFDcEM7RUFBQztJQUFBYixHQUFBO0lBQUFDLEtBQUEsRUFFRCxTQUFBVSxHQUFHQSxDQUNERyxJQUF3QyxFQUN4QzFDLFNBQTRCLEVBRXZCO01BQUEsSUFETDJDLE9BQXFCLEdBQUFDLFNBQUEsQ0FBQWxCLE1BQUEsUUFBQWtCLFNBQUEsUUFBQUMsU0FBQSxHQUFBRCxTQUFBLE1BQUcsQ0FBQyxDQUFDO01BRTFCLElBQU1iLFVBQVUsR0FBR0MsZ0JBQU8sQ0FBQ0MsZUFBZSxDQUFDakMsU0FBUyxDQUFDO01BRXJELElBQUE4QyxjQUFBLEdBQTBDSCxPQUFPLENBQTFDSSxLQUFLO1FBQUxBLEtBQUssR0FBQUQsY0FBQSxjQUFHLENBQUMsR0FBQUEsY0FBQTtRQUFBRSxZQUFBLEdBQTBCTCxPQUFPLENBQS9CTSxHQUFHO1FBQUhBLEdBQUcsR0FBQUQsWUFBQSxjQUFHLElBQUksQ0FBQy9DLE9BQU8sQ0FBQyxDQUFDLEdBQUErQyxZQUFBO01BQ3RDLElBQU1FLE1BQU0sR0FBR0MsSUFBSSxDQUFDQyxHQUFHLENBQUMsSUFBSSxDQUFDbkQsT0FBTyxDQUFDLENBQUMsRUFBRWdELEdBQUcsQ0FBQztNQUU1QyxJQUFNSSxHQUFRLEdBQUcsRUFBRTtNQUNuQixLQUFLLElBQUluRCxRQUFRLEdBQUc2QyxLQUFLLEVBQUU3QyxRQUFRLEdBQUdnRCxNQUFNLEVBQUUsRUFBRWhELFFBQVEsRUFBRTtRQUN4RCxJQUFNTSxHQUFHLEdBQUcsSUFBSSxDQUFDQSxHQUFHLENBQUNOLFFBQVEsRUFBRTZCLFVBQVUsQ0FBQztRQUMxQ3NCLEdBQUcsQ0FBQ0MsSUFBSSxDQUFDWixJQUFJLENBQUNsQyxHQUFHLEVBQUVOLFFBQVEsQ0FBQyxDQUFDO01BQy9CO01BQ0EsT0FBT21ELEdBQUc7SUFDWjtFQUFDO0lBQUF6QixHQUFBO0lBQUFDLEtBQUEsRUFFRCxTQUFBMEIsUUFBUUEsQ0FDTmIsSUFBd0QsRUFFbkQ7TUFBQSxJQURMQyxPQUFxQixHQUFBQyxTQUFBLENBQUFsQixNQUFBLFFBQUFrQixTQUFBLFFBQUFDLFNBQUEsR0FBQUQsU0FBQSxNQUFHLENBQUMsQ0FBQztNQUUxQixJQUFBWSxlQUFBLEdBQTBDYixPQUFPLENBQTFDSSxLQUFLO1FBQUxBLEtBQUssR0FBQVMsZUFBQSxjQUFHLENBQUMsR0FBQUEsZUFBQTtRQUFBQyxhQUFBLEdBQTBCZCxPQUFPLENBQS9CTSxHQUFHO1FBQUhBLEdBQUcsR0FBQVEsYUFBQSxjQUFHLElBQUksQ0FBQ3hELE9BQU8sQ0FBQyxDQUFDLEdBQUF3RCxhQUFBO01BQ3RDLElBQU1QLE1BQU0sR0FBR0MsSUFBSSxDQUFDQyxHQUFHLENBQUMsSUFBSSxDQUFDbkQsT0FBTyxDQUFDLENBQUMsRUFBRWdELEdBQUcsQ0FBQztNQUU1QyxJQUFNSSxHQUFRLEdBQUcsRUFBRTtNQUNuQixLQUFLLElBQUluRCxRQUFRLEdBQUc2QyxLQUFLLEVBQUU3QyxRQUFRLEdBQUdnRCxNQUFNLEVBQUUsRUFBRWhELFFBQVEsRUFBRTtRQUN4RG1ELEdBQUcsQ0FBQ0MsSUFBSSxDQUFDWixJQUFJLENBQUM7VUFBQ2dCLEtBQUssRUFBRXhEO1FBQVEsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO01BQ3pDO01BQ0EsT0FBT21ELEdBQUc7SUFDWjtFQUFDO0lBQUF6QixHQUFBO0lBQUFDLEtBQUEsRUFFRCxTQUFBOEIsSUFBSUEsQ0FDRmpCLElBQThDLEVBQzlDMUMsU0FBNEIsRUFDUDtNQUNyQixJQUFNK0IsVUFBVSxHQUFHQyxnQkFBTyxDQUFDQyxlQUFlLENBQUNqQyxTQUFTLENBQUM7TUFFckQsS0FBSyxJQUFJRSxRQUFRLEdBQUcsQ0FBQyxFQUFFQSxRQUFRLEdBQUcsSUFBSSxDQUFDc0IsS0FBSyxDQUFDRSxNQUFNLEVBQUUsRUFBRXhCLFFBQVEsRUFBRTtRQUMvRCxJQUFNTSxHQUFHLEdBQUcsSUFBSSxDQUFDQSxHQUFHLENBQUNOLFFBQVEsRUFBRTZCLFVBQVUsQ0FBQztRQUMxQyxJQUFJVyxJQUFJLENBQUNsQyxHQUFHLEVBQUVOLFFBQVEsQ0FBQyxFQUFFO1VBQ3ZCLE9BQU9NLEdBQUc7UUFDWjtNQUNGO01BQ0EsT0FBT3FDLFNBQVM7SUFDbEI7RUFBQztJQUFBakIsR0FBQTtJQUFBQyxLQUFBLEVBRUQsU0FBQStCLE1BQU1BLENBQ0psQixJQUFnRCxFQUNoRG1CLFlBQWUsRUFDZjdELFNBQTRCLEVBQ3pCO01BQ0gsSUFBTStCLFVBQVUsR0FBR0MsZ0JBQU8sQ0FBQ0MsZUFBZSxDQUFDakMsU0FBUyxDQUFDO01BRXJELEtBQUssSUFBSUUsUUFBUSxHQUFHLENBQUMsRUFBRUEsUUFBUSxHQUFHLElBQUksQ0FBQ3NCLEtBQUssQ0FBQ0UsTUFBTSxFQUFFLEVBQUV4QixRQUFRLEVBQUU7UUFDL0QsSUFBTU0sR0FBRyxHQUFHLElBQUksQ0FBQ0EsR0FBRyxDQUFDTixRQUFRLEVBQUU2QixVQUFVLENBQUM7UUFDMUM4QixZQUFZLEdBQUduQixJQUFJLENBQUNtQixZQUFZLEVBQUVyRCxHQUFHLEVBQUVOLFFBQVEsQ0FBQztNQUNsRDtNQUNBLE9BQU8yRCxZQUFZO0lBQ3JCO0VBQUM7QUFBQSIsImlnbm9yZUxpc3QiOltdfQ==
@@ -0,0 +1 @@
1
+ export declare function simpleSearcher(autofillValues: any, page: any, query: any, cb: any): any;
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.simpleSearcher = simpleSearcher;
7
+ // SPDX-License-Identifier: MIT
8
+ // Copyright contributors to the kepler.gl project
9
+
10
+ /* eslint-disable callback-return */
11
+ function simpleSearcher(autofillValues, page, query, cb) {
12
+ var regex = new RegExp(query, 'i');
13
+ var foundQuery = false;
14
+ var matches = (autofillValues || []).filter(function _filter(item) {
15
+ var tag = item.name;
16
+ foundQuery = foundQuery || tag === query;
17
+ return tag && regex.test(tag);
18
+ });
19
+ if (cb) {
20
+ cb(matches);
21
+ }
22
+ return matches;
23
+ }
24
+ /* eslint-enable callback-return */
25
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJzaW1wbGVTZWFyY2hlciIsImF1dG9maWxsVmFsdWVzIiwicGFnZSIsInF1ZXJ5IiwiY2IiLCJyZWdleCIsIlJlZ0V4cCIsImZvdW5kUXVlcnkiLCJtYXRjaGVzIiwiZmlsdGVyIiwiX2ZpbHRlciIsIml0ZW0iLCJ0YWciLCJuYW1lIiwidGVzdCJdLCJzb3VyY2VzIjpbIi4uL3NyYy9zZWFyY2hlci11dGlscy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG4vKiBlc2xpbnQtZGlzYWJsZSBjYWxsYmFjay1yZXR1cm4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzaW1wbGVTZWFyY2hlcihhdXRvZmlsbFZhbHVlcywgcGFnZSwgcXVlcnksIGNiKSB7XG4gIGNvbnN0IHJlZ2V4ID0gbmV3IFJlZ0V4cChxdWVyeSwgJ2knKTtcbiAgbGV0IGZvdW5kUXVlcnkgPSBmYWxzZTtcbiAgY29uc3QgbWF0Y2hlcyA9IChhdXRvZmlsbFZhbHVlcyB8fCBbXSkuZmlsdGVyKGZ1bmN0aW9uIF9maWx0ZXIoaXRlbSkge1xuICAgIGNvbnN0IHRhZyA9IGl0ZW0ubmFtZTtcbiAgICBmb3VuZFF1ZXJ5ID0gZm91bmRRdWVyeSB8fCB0YWcgPT09IHF1ZXJ5O1xuICAgIHJldHVybiB0YWcgJiYgcmVnZXgudGVzdCh0YWcpO1xuICB9KTtcblxuICBpZiAoY2IpIHtcbiAgICBjYihtYXRjaGVzKTtcbiAgfVxuXG4gIHJldHVybiBtYXRjaGVzO1xufVxuLyogZXNsaW50LWVuYWJsZSBjYWxsYmFjay1yZXR1cm4gKi9cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7QUFDQTs7QUFFQTtBQUNPLFNBQVNBLGNBQWNBLENBQUNDLGNBQWMsRUFBRUMsSUFBSSxFQUFFQyxLQUFLLEVBQUVDLEVBQUUsRUFBRTtFQUM5RCxJQUFNQyxLQUFLLEdBQUcsSUFBSUMsTUFBTSxDQUFDSCxLQUFLLEVBQUUsR0FBRyxDQUFDO0VBQ3BDLElBQUlJLFVBQVUsR0FBRyxLQUFLO0VBQ3RCLElBQU1DLE9BQU8sR0FBRyxDQUFDUCxjQUFjLElBQUksRUFBRSxFQUFFUSxNQUFNLENBQUMsU0FBU0MsT0FBT0EsQ0FBQ0MsSUFBSSxFQUFFO0lBQ25FLElBQU1DLEdBQUcsR0FBR0QsSUFBSSxDQUFDRSxJQUFJO0lBQ3JCTixVQUFVLEdBQUdBLFVBQVUsSUFBSUssR0FBRyxLQUFLVCxLQUFLO0lBQ3hDLE9BQU9TLEdBQUcsSUFBSVAsS0FBSyxDQUFDUyxJQUFJLENBQUNGLEdBQUcsQ0FBQztFQUMvQixDQUFDLENBQUM7RUFFRixJQUFJUixFQUFFLEVBQUU7SUFDTkEsRUFBRSxDQUFDSSxPQUFPLENBQUM7RUFDYjtFQUVBLE9BQU9BLE9BQU87QUFDaEI7QUFDQSIsImlnbm9yZUxpc3QiOltdfQ==
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Add new layers to both existing maps
3
+ * @param {Object} splitMaps
4
+ * @param {Object|Array<Object>} layers
5
+ * @returns {Array<Object>} new splitMaps
6
+ */
7
+ export declare function addNewLayersToSplitMap(splitMaps: any, layers: any): any;
8
+ /**
9
+ * Remove an existing layer from split map settings
10
+ * @param {Object} splitMaps
11
+ * @param {Object} layer
12
+ * @returns {Object} Maps of custom layer objects
13
+ */
14
+ export declare function removeLayerFromSplitMaps(splitMaps: any, layer: any): any;
15
+ /**
16
+ * This method will compute the default maps layer settings
17
+ * based on the current layers visibility
18
+ * @param {Array<Object>} layers
19
+ * @returns {Array<Object>} layer visibility for each panel
20
+ */
21
+ export declare function getInitialMapLayersForSplitMap(layers: any): any;
22
+ /**
23
+ * This method will get default splitMap settings based on existing layers
24
+ * @param {Array<Object>} layers
25
+ * @param {Object} options
26
+ * @returns {Array<Object>} split map settings
27
+ */
28
+ export declare function computeSplitMapLayers(layers: any, options?: {
29
+ duplicate: boolean;
30
+ }): {
31
+ layers: any;
32
+ }[];