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

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 (73) hide show
  1. package/package.json +14 -10
  2. package/dist/aggregate-utils.d.ts +0 -3
  3. package/dist/aggregate-utils.js +0 -75
  4. package/dist/arrow-data-container.d.ts +0 -54
  5. package/dist/arrow-data-container.js +0 -360
  6. package/dist/color-utils.d.ts +0 -51
  7. package/dist/color-utils.js +0 -161
  8. package/dist/data-container-interface.d.ts +0 -133
  9. package/dist/data-container-interface.js +0 -6
  10. package/dist/data-container-utils.d.ts +0 -30
  11. package/dist/data-container-utils.js +0 -88
  12. package/dist/data-row.d.ts +0 -59
  13. package/dist/data-row.js +0 -126
  14. package/dist/data-scale-utils.d.ts +0 -23
  15. package/dist/data-scale-utils.js +0 -62
  16. package/dist/data-utils.d.ts +0 -103
  17. package/dist/data-utils.js +0 -502
  18. package/dist/dataset-utils.d.ts +0 -116
  19. package/dist/dataset-utils.js +0 -614
  20. package/dist/dom-to-image.d.ts +0 -73
  21. package/dist/dom-to-image.js +0 -489
  22. package/dist/dom-utils.d.ts +0 -23
  23. package/dist/dom-utils.js +0 -434
  24. package/dist/effect-utils.d.ts +0 -23
  25. package/dist/effect-utils.js +0 -196
  26. package/dist/export-map-html.d.ts +0 -9
  27. package/dist/export-map-html.js +0 -28
  28. package/dist/export-utils.d.ts +0 -53
  29. package/dist/export-utils.js +0 -262
  30. package/dist/filter-utils.d.ts +0 -326
  31. package/dist/filter-utils.js +0 -1333
  32. package/dist/format.d.ts +0 -1
  33. package/dist/format.js +0 -17
  34. package/dist/gl-utils.d.ts +0 -1
  35. package/dist/gl-utils.js +0 -35
  36. package/dist/h3-utils.d.ts +0 -21
  37. package/dist/h3-utils.js +0 -81
  38. package/dist/index.d.ts +0 -36
  39. package/dist/index.js +0 -772
  40. package/dist/indexed-data-container.d.ts +0 -34
  41. package/dist/indexed-data-container.js +0 -254
  42. package/dist/locale-utils.d.ts +0 -2
  43. package/dist/locale-utils.js +0 -54
  44. package/dist/map-info-utils.d.ts +0 -1
  45. package/dist/map-info-utils.js +0 -15
  46. package/dist/map-style-utils/mapbox-gl-style-editor.d.ts +0 -65
  47. package/dist/map-style-utils/mapbox-gl-style-editor.js +0 -218
  48. package/dist/map-style-utils/mapbox-utils.d.ts +0 -9
  49. package/dist/map-style-utils/mapbox-utils.js +0 -48
  50. package/dist/map-utils.d.ts +0 -9
  51. package/dist/map-utils.js +0 -65
  52. package/dist/mapbox-utils.d.ts +0 -7
  53. package/dist/mapbox-utils.js +0 -22
  54. package/dist/noop.d.ts +0 -1
  55. package/dist/noop.js +0 -11
  56. package/dist/notifications-utils.d.ts +0 -42
  57. package/dist/notifications-utils.js +0 -85
  58. package/dist/observe-dimensions.d.ts +0 -15
  59. package/dist/observe-dimensions.js +0 -151
  60. package/dist/plot.d.ts +0 -6
  61. package/dist/plot.js +0 -31
  62. package/dist/projection-utils.d.ts +0 -21
  63. package/dist/projection-utils.js +0 -100
  64. package/dist/row-data-container.d.ts +0 -31
  65. package/dist/row-data-container.js +0 -252
  66. package/dist/searcher-utils.d.ts +0 -1
  67. package/dist/searcher-utils.js +0 -28
  68. package/dist/split-map-utils.d.ts +0 -32
  69. package/dist/split-map-utils.js +0 -114
  70. package/dist/time.d.ts +0 -16
  71. package/dist/time.js +0 -89
  72. package/dist/utils.d.ts +0 -116
  73. package/dist/utils.js +0 -305
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@kepler.gl/utils",
3
3
  "author": "Shan He <shan@uber.com>",
4
- "version": "3.0.0-alpha.2",
4
+ "version": "3.1.0-alpha.0",
5
5
  "description": "kepler.gl constants used by kepler.gl components, actions and reducers",
6
6
  "license": "MIT",
7
7
  "main": "dist/index.js",
@@ -30,23 +30,25 @@
30
30
  "umd"
31
31
  ],
32
32
  "dependencies": {
33
- "apache-arrow": "^13.0.0",
34
- "@kepler.gl/constants": "3.0.0-alpha.2",
35
- "@kepler.gl/types": "3.0.0-alpha.2",
33
+ "@kepler.gl/common-utils": "3.1.0-alpha.0",
34
+ "@kepler.gl/constants": "3.1.0-alpha.0",
35
+ "@kepler.gl/types": "3.1.0-alpha.0",
36
36
  "@luma.gl/constants": "^8.5.20",
37
37
  "@luma.gl/core": "^8.5.20",
38
38
  "@mapbox/geo-viewport": "^0.4.1",
39
39
  "@turf/boolean-within": "^6.0.1",
40
40
  "@turf/helpers": "^6.1.4",
41
- "@types/d3-array": "^2.0.0",
41
+ "@types/d3-array": "^2.8.0",
42
42
  "@types/keymirror": "^0.1.1",
43
43
  "@types/lodash.clonedeep": "^4.5.7",
44
44
  "@types/lodash.get": "^4.4.6",
45
45
  "@types/lodash.isequal": "^4.5.5",
46
46
  "@types/lodash.memoize": "^4.1.7",
47
47
  "@types/lodash.throttle": "^4.1.7",
48
+ "apache-arrow": ">=15.0.0",
48
49
  "d3-array": "^2.8.0",
49
50
  "d3-format": "^2.0.0",
51
+ "d3-interpolate": "^2.0.1",
50
52
  "decimal.js": "^10.2.0",
51
53
  "global": "^4.3.0",
52
54
  "h3-js": "^3.1.0",
@@ -59,6 +61,7 @@
59
61
  "mini-svg-data-uri": "^1.0.3",
60
62
  "moment-timezone": "^0.5.35",
61
63
  "react": "^18.2.0",
64
+ "react-map-gl": "^7.1.6",
62
65
  "resize-observer-polyfill": "^1.5.1",
63
66
  "type-analyzer": "0.4.0"
64
67
  },
@@ -66,15 +69,16 @@
66
69
  "sourceMap": false,
67
70
  "instrument": false
68
71
  },
69
- "engines": {
70
- "node": ">=18.18.2"
71
- },
72
72
  "maintainers": [
73
73
  "Shan He <heshan0131@gmail.com>",
74
74
  "Giuseppe Macri <gmacri@uber.com>"
75
75
  ],
76
+ "engines": {
77
+ "node": ">=18"
78
+ },
76
79
  "volta": {
77
80
  "node": "18.18.2",
78
- "yarn": "1.22.17"
79
- }
81
+ "yarn": "4.4.0"
82
+ },
83
+ "packageManager": "yarn@4.4.0"
80
84
  }
@@ -1,3 +0,0 @@
1
- export declare const getFrequency: (data: any) => any;
2
- export declare const getMode: (data: any) => string;
3
- export declare function aggregate(data: any, technique: any): any;
@@ -1,75 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports.aggregate = aggregate;
9
- exports.getMode = exports.getFrequency = void 0;
10
-
11
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
12
-
13
- var _d3Array = require("d3-array");
14
-
15
- var _constants = require("@kepler.gl/constants");
16
-
17
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
18
-
19
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
20
-
21
- var getFrequency = function getFrequency(data) {
22
- return data.reduce(function (uniques, val) {
23
- return _objectSpread(_objectSpread({}, uniques), {}, (0, _defineProperty2["default"])({}, val, (uniques[val] || 0) + 1));
24
- }, {});
25
- };
26
-
27
- exports.getFrequency = getFrequency;
28
-
29
- var getMode = function getMode(data) {
30
- var occur = getFrequency(data);
31
- return Object.keys(occur).reduce(function (prev, key) {
32
- return occur[prev] >= occur[key] ? prev : key;
33
- }, Object.keys(occur)[0]);
34
- };
35
-
36
- exports.getMode = getMode;
37
-
38
- function aggregate(data, technique) {
39
- switch (technique) {
40
- case _constants.AGGREGATION_TYPES.average:
41
- return (0, _d3Array.mean)(data);
42
-
43
- case _constants.AGGREGATION_TYPES.countUnique:
44
- return Object.keys(data.reduce(function (uniques, val) {
45
- uniques[val] = uniques[val] || 0;
46
- uniques[val] += 1;
47
- return uniques;
48
- }, {})).length;
49
-
50
- case _constants.AGGREGATION_TYPES.mode:
51
- return getMode(data);
52
-
53
- case _constants.AGGREGATION_TYPES.maximum:
54
- return (0, _d3Array.max)(data);
55
-
56
- case _constants.AGGREGATION_TYPES.minimum:
57
- return (0, _d3Array.min)(data);
58
-
59
- case _constants.AGGREGATION_TYPES.median:
60
- return (0, _d3Array.median)(data);
61
-
62
- case _constants.AGGREGATION_TYPES.stdev:
63
- return (0, _d3Array.deviation)(data);
64
-
65
- case _constants.AGGREGATION_TYPES.sum:
66
- return (0, _d3Array.sum)(data);
67
-
68
- case _constants.AGGREGATION_TYPES.variance:
69
- return (0, _d3Array.variance)(data);
70
-
71
- default:
72
- return data.length;
73
- }
74
- }
75
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9hZ2dyZWdhdGUtdXRpbHMudHMiXSwibmFtZXMiOlsiZ2V0RnJlcXVlbmN5IiwiZGF0YSIsInJlZHVjZSIsInVuaXF1ZXMiLCJ2YWwiLCJnZXRNb2RlIiwib2NjdXIiLCJPYmplY3QiLCJrZXlzIiwicHJldiIsImtleSIsImFnZ3JlZ2F0ZSIsInRlY2huaXF1ZSIsIkFHR1JFR0FUSU9OX1RZUEVTIiwiYXZlcmFnZSIsImNvdW50VW5pcXVlIiwibGVuZ3RoIiwibW9kZSIsIm1heGltdW0iLCJtaW5pbXVtIiwibWVkaWFuIiwic3RkZXYiLCJzdW0iLCJ2YXJpYW5jZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBR0E7O0FBQ0E7Ozs7OztBQUVPLElBQU1BLFlBQVksR0FBRyxTQUFmQSxZQUFlLENBQUFDLElBQUk7QUFBQSxTQUM5QkEsSUFBSSxDQUFDQyxNQUFMLENBQ0UsVUFBQ0MsT0FBRCxFQUFVQyxHQUFWO0FBQUEsMkNBQ0tELE9BREwsNENBRUdDLEdBRkgsRUFFUyxDQUFDRCxPQUFPLENBQUNDLEdBQUQsQ0FBUCxJQUFnQixDQUFqQixJQUFzQixDQUYvQjtBQUFBLEdBREYsRUFLRSxFQUxGLENBRDhCO0FBQUEsQ0FBekI7Ozs7QUFTQSxJQUFNQyxPQUFPLEdBQUcsU0FBVkEsT0FBVSxDQUFBSixJQUFJLEVBQUk7QUFDN0IsTUFBTUssS0FBSyxHQUFHTixZQUFZLENBQUNDLElBQUQsQ0FBMUI7QUFDQSxTQUFPTSxNQUFNLENBQUNDLElBQVAsQ0FBWUYsS0FBWixFQUFtQkosTUFBbkIsQ0FDTCxVQUFDTyxJQUFELEVBQU9DLEdBQVA7QUFBQSxXQUFnQkosS0FBSyxDQUFDRyxJQUFELENBQUwsSUFBZUgsS0FBSyxDQUFDSSxHQUFELENBQXBCLEdBQTRCRCxJQUE1QixHQUFtQ0MsR0FBbkQ7QUFBQSxHQURLLEVBRUxILE1BQU0sQ0FBQ0MsSUFBUCxDQUFZRixLQUFaLEVBQW1CLENBQW5CLENBRkssQ0FBUDtBQUlELENBTk07Ozs7QUFRQSxTQUFTSyxTQUFULENBQW1CVixJQUFuQixFQUF5QlcsU0FBekIsRUFBb0M7QUFDekMsVUFBUUEsU0FBUjtBQUNFLFNBQUtDLDZCQUFrQkMsT0FBdkI7QUFDRSxhQUFPLG1CQUFLYixJQUFMLENBQVA7O0FBQ0YsU0FBS1ksNkJBQWtCRSxXQUF2QjtBQUNFLGFBQU9SLE1BQU0sQ0FBQ0MsSUFBUCxDQUNMUCxJQUFJLENBQUNDLE1BQUwsQ0FBWSxVQUFDQyxPQUFELEVBQVVDLEdBQVYsRUFBa0I7QUFDNUJELFFBQUFBLE9BQU8sQ0FBQ0MsR0FBRCxDQUFQLEdBQWVELE9BQU8sQ0FBQ0MsR0FBRCxDQUFQLElBQWdCLENBQS9CO0FBQ0FELFFBQUFBLE9BQU8sQ0FBQ0MsR0FBRCxDQUFQLElBQWdCLENBQWhCO0FBQ0EsZUFBT0QsT0FBUDtBQUNELE9BSkQsRUFJRyxFQUpILENBREssRUFNTGEsTUFORjs7QUFPRixTQUFLSCw2QkFBa0JJLElBQXZCO0FBQ0UsYUFBT1osT0FBTyxDQUFDSixJQUFELENBQWQ7O0FBRUYsU0FBS1ksNkJBQWtCSyxPQUF2QjtBQUNFLGFBQU8sa0JBQUlqQixJQUFKLENBQVA7O0FBQ0YsU0FBS1ksNkJBQWtCTSxPQUF2QjtBQUNFLGFBQU8sa0JBQUlsQixJQUFKLENBQVA7O0FBQ0YsU0FBS1ksNkJBQWtCTyxNQUF2QjtBQUNFLGFBQU8scUJBQU9uQixJQUFQLENBQVA7O0FBQ0YsU0FBS1ksNkJBQWtCUSxLQUF2QjtBQUNFLGFBQU8sd0JBQVVwQixJQUFWLENBQVA7O0FBQ0YsU0FBS1ksNkJBQWtCUyxHQUF2QjtBQUNFLGFBQU8sa0JBQUlyQixJQUFKLENBQVA7O0FBQ0YsU0FBS1ksNkJBQWtCVSxRQUF2QjtBQUNFLGFBQU8sdUJBQVN0QixJQUFULENBQVA7O0FBQ0Y7QUFDRSxhQUFPQSxJQUFJLENBQUNlLE1BQVo7QUEzQko7QUE2QkQiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQge2RldmlhdGlvbiwgbWluLCBtYXgsIG1lYW4sIG1lZGlhbiwgc3VtLCB2YXJpYW5jZX0gZnJvbSAnZDMtYXJyYXknO1xuaW1wb3J0IHtBR0dSRUdBVElPTl9UWVBFU30gZnJvbSAnQGtlcGxlci5nbC9jb25zdGFudHMnO1xuXG5leHBvcnQgY29uc3QgZ2V0RnJlcXVlbmN5ID0gZGF0YSA9PlxuICBkYXRhLnJlZHVjZShcbiAgICAodW5pcXVlcywgdmFsKSA9PiAoe1xuICAgICAgLi4udW5pcXVlcyxcbiAgICAgIFt2YWxdOiAodW5pcXVlc1t2YWxdIHx8IDApICsgMVxuICAgIH0pLFxuICAgIHt9XG4gICk7XG5cbmV4cG9ydCBjb25zdCBnZXRNb2RlID0gZGF0YSA9PiB7XG4gIGNvbnN0IG9jY3VyID0gZ2V0RnJlcXVlbmN5KGRhdGEpO1xuICByZXR1cm4gT2JqZWN0LmtleXMob2NjdXIpLnJlZHVjZShcbiAgICAocHJldiwga2V5KSA9PiAob2NjdXJbcHJldl0gPj0gb2NjdXJba2V5XSA/IHByZXYgOiBrZXkpLFxuICAgIE9iamVjdC5rZXlzKG9jY3VyKVswXVxuICApO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGFnZ3JlZ2F0ZShkYXRhLCB0ZWNobmlxdWUpIHtcbiAgc3dpdGNoICh0ZWNobmlxdWUpIHtcbiAgICBjYXNlIEFHR1JFR0FUSU9OX1RZUEVTLmF2ZXJhZ2U6XG4gICAgICByZXR1cm4gbWVhbihkYXRhKTtcbiAgICBjYXNlIEFHR1JFR0FUSU9OX1RZUEVTLmNvdW50VW5pcXVlOlxuICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKFxuICAgICAgICBkYXRhLnJlZHVjZSgodW5pcXVlcywgdmFsKSA9PiB7XG4gICAgICAgICAgdW5pcXVlc1t2YWxdID0gdW5pcXVlc1t2YWxdIHx8IDA7XG4gICAgICAgICAgdW5pcXVlc1t2YWxdICs9IDE7XG4gICAgICAgICAgcmV0dXJuIHVuaXF1ZXM7XG4gICAgICAgIH0sIHt9KVxuICAgICAgKS5sZW5ndGg7XG4gICAgY2FzZSBBR0dSRUdBVElPTl9UWVBFUy5tb2RlOlxuICAgICAgcmV0dXJuIGdldE1vZGUoZGF0YSk7XG5cbiAgICBjYXNlIEFHR1JFR0FUSU9OX1RZUEVTLm1heGltdW06XG4gICAgICByZXR1cm4gbWF4KGRhdGEpO1xuICAgIGNhc2UgQUdHUkVHQVRJT05fVFlQRVMubWluaW11bTpcbiAgICAgIHJldHVybiBtaW4oZGF0YSk7XG4gICAgY2FzZSBBR0dSRUdBVElPTl9UWVBFUy5tZWRpYW46XG4gICAgICByZXR1cm4gbWVkaWFuKGRhdGEpO1xuICAgIGNhc2UgQUdHUkVHQVRJT05fVFlQRVMuc3RkZXY6XG4gICAgICByZXR1cm4gZGV2aWF0aW9uKGRhdGEpO1xuICAgIGNhc2UgQUdHUkVHQVRJT05fVFlQRVMuc3VtOlxuICAgICAgcmV0dXJuIHN1bShkYXRhKTtcbiAgICBjYXNlIEFHR1JFR0FUSU9OX1RZUEVTLnZhcmlhbmNlOlxuICAgICAgcmV0dXJuIHZhcmlhbmNlKGRhdGEpO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gZGF0YS5sZW5ndGg7XG4gIH1cbn1cbiJdfQ==
@@ -1,54 +0,0 @@
1
- import * as arrow from 'apache-arrow';
2
- import { DATA_TYPES as AnalyzerDATA_TYPES } from 'type-analyzer';
3
- import { Field } from '@kepler.gl/types';
4
- import { DataRow, SharedRowOptions } from './data-row';
5
- import { DataContainerInterface, RangeOptions } from './data-container-interface';
6
- declare type ArrowDataContainerInput = {
7
- cols: arrow.Vector[];
8
- fields?: Field[];
9
- };
10
- /**
11
- * A data container where all data is stored in raw Arrow table
12
- */
13
- export declare class ArrowDataContainer implements DataContainerInterface {
14
- _cols: arrow.Vector[];
15
- _numColumns: number;
16
- _numRows: number;
17
- _fields: Field[];
18
- _numChunks: number;
19
- constructor(data: ArrowDataContainerInput);
20
- update(updateData: arrow.Vector<any>[]): void;
21
- numChunks(): number;
22
- numRows(): number;
23
- numColumns(): number;
24
- valueAt(rowIndex: number, columnIndex: number): any;
25
- row(rowIndex: number, sharedRow?: SharedRowOptions): DataRow;
26
- rowAsArray(rowIndex: number): any[];
27
- rows(sharedRow: SharedRowOptions): any;
28
- column(columnIndex: number): Generator<any, void, unknown>;
29
- getColumn(columnIndex: number): arrow.Vector;
30
- getField(columnIndex: number): Field;
31
- flattenData(): any[][];
32
- getPlainIndex(): number[];
33
- map<T>(func: (row: DataRow, index: number) => T, sharedRow?: SharedRowOptions, options?: RangeOptions): T[];
34
- mapIndex<T>(func: ({ index }: {
35
- index: any;
36
- }, dc: DataContainerInterface) => T, options?: RangeOptions): T[];
37
- find(func: (row: DataRow, index: number) => boolean, sharedRow?: SharedRowOptions): DataRow | undefined;
38
- reduce<T>(func: (acc: T, row: DataRow, index: number) => T, initialValue: T, sharedRow?: SharedRowOptions): T;
39
- }
40
- /**
41
- * Convert arrow data type to kepler.gl field types
42
- *
43
- * @param arrowType the arrow data type
44
- * @returns corresponding type in `ALL_FIELD_TYPES`
45
- */
46
- export declare function arrowDataTypeToFieldType(arrowType: arrow.DataType): string;
47
- /**
48
- * Convert arrow data type to analyzer type
49
- *
50
- * @param arrowType the arrow data type
51
- * @returns corresponding type in `AnalyzerDATA_TYPES`
52
- */
53
- export declare function arrowDataTypeToAnalyzerDataType(arrowType: arrow.DataType): typeof AnalyzerDATA_TYPES;
54
- export {};
@@ -1,360 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
4
-
5
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
6
-
7
- Object.defineProperty(exports, "__esModule", {
8
- value: true
9
- });
10
- exports.arrowDataTypeToFieldType = arrowDataTypeToFieldType;
11
- exports.arrowDataTypeToAnalyzerDataType = arrowDataTypeToAnalyzerDataType;
12
- exports.ArrowDataContainer = void 0;
13
-
14
- var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
15
-
16
- var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
17
-
18
- var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
19
-
20
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
21
-
22
- var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
23
-
24
- var arrow = _interopRequireWildcard(require("apache-arrow"));
25
-
26
- var _window = require("global/window");
27
-
28
- var _typeAnalyzer = require("type-analyzer");
29
-
30
- var _constants = require("@kepler.gl/constants");
31
-
32
- var _dataRow = require("./data-row");
33
-
34
- var _marked = /*#__PURE__*/_regenerator["default"].mark(rowsIterator),
35
- _marked2 = /*#__PURE__*/_regenerator["default"].mark(columnIterator);
36
-
37
- /**
38
- * @param dataContainer
39
- * @param sharedRow
40
- */
41
- function rowsIterator(dataContainer, sharedRow) {
42
- var numRows, rowIndex;
43
- return _regenerator["default"].wrap(function rowsIterator$(_context) {
44
- while (1) {
45
- switch (_context.prev = _context.next) {
46
- case 0:
47
- numRows = dataContainer.numRows();
48
- rowIndex = 0;
49
-
50
- case 2:
51
- if (!(rowIndex < numRows)) {
52
- _context.next = 8;
53
- break;
54
- }
55
-
56
- _context.next = 5;
57
- return dataContainer.row(rowIndex, sharedRow);
58
-
59
- case 5:
60
- ++rowIndex;
61
- _context.next = 2;
62
- break;
63
-
64
- case 8:
65
- case "end":
66
- return _context.stop();
67
- }
68
- }
69
- }, _marked);
70
- }
71
- /**
72
- * @param dataContainer
73
- * @param columnIndex
74
- */
75
-
76
-
77
- function columnIterator(dataContainer, columnIndex) {
78
- var numRows, rowIndex;
79
- return _regenerator["default"].wrap(function columnIterator$(_context2) {
80
- while (1) {
81
- switch (_context2.prev = _context2.next) {
82
- case 0:
83
- numRows = dataContainer.numRows();
84
- rowIndex = 0;
85
-
86
- case 2:
87
- if (!(rowIndex < numRows)) {
88
- _context2.next = 8;
89
- break;
90
- }
91
-
92
- _context2.next = 5;
93
- return dataContainer.valueAt(rowIndex, columnIndex);
94
-
95
- case 5:
96
- ++rowIndex;
97
- _context2.next = 2;
98
- break;
99
-
100
- case 8:
101
- case "end":
102
- return _context2.stop();
103
- }
104
- }
105
- }, _marked2);
106
- }
107
- /**
108
- * A data container where all data is stored in raw Arrow table
109
- */
110
-
111
-
112
- var ArrowDataContainer = /*#__PURE__*/function () {
113
- // cache column data to make valueAt() faster
114
- // _colData: any[][];
115
- function ArrowDataContainer(data) {
116
- (0, _classCallCheck2["default"])(this, ArrowDataContainer);
117
- (0, _defineProperty2["default"])(this, "_cols", void 0);
118
- (0, _defineProperty2["default"])(this, "_numColumns", void 0);
119
- (0, _defineProperty2["default"])(this, "_numRows", void 0);
120
- (0, _defineProperty2["default"])(this, "_fields", void 0);
121
- (0, _defineProperty2["default"])(this, "_numChunks", void 0);
122
-
123
- if (!data.cols) {
124
- throw Error('ArrowDataContainer: no columns provided');
125
- }
126
-
127
- if (!Array.isArray(data.cols)) {
128
- throw Error("ArrowDataContainer: columns object isn't an array");
129
- }
130
-
131
- this._cols = data.cols;
132
- this._numColumns = data.cols.length;
133
- this._numRows = data.cols[0].length;
134
- this._fields = data.fields || [];
135
- this._numChunks = data.cols[0].data.length; // this._colData = data.cols.map(c => c.toArray());
136
- }
137
-
138
- (0, _createClass2["default"])(ArrowDataContainer, [{
139
- key: "update",
140
- value: function update(updateData) {
141
- this._cols = updateData;
142
- this._numColumns = this._cols.length;
143
- this._numRows = this._cols[0].length;
144
- this._numChunks = this._cols[0].data.length; // cache column data to make valueAt() faster
145
- // this._colData = this._cols.map(c => c.toArray());
146
- }
147
- }, {
148
- key: "numChunks",
149
- value: function numChunks() {
150
- return this._numChunks;
151
- }
152
- }, {
153
- key: "numRows",
154
- value: function numRows() {
155
- return this._numRows;
156
- }
157
- }, {
158
- key: "numColumns",
159
- value: function numColumns() {
160
- return this._numColumns;
161
- }
162
- }, {
163
- key: "valueAt",
164
- value: function valueAt(rowIndex, columnIndex) {
165
- // return this._colData[columnIndex][rowIndex];
166
- return this._cols[columnIndex].get(rowIndex);
167
- }
168
- }, {
169
- key: "row",
170
- value: function row(rowIndex, sharedRow) {
171
- var tSharedRow = _dataRow.DataRow.createSharedRow(sharedRow);
172
-
173
- if (tSharedRow) {
174
- tSharedRow.setSource(this, rowIndex);
175
- return tSharedRow;
176
- }
177
-
178
- return new _dataRow.DataRow(this, rowIndex);
179
- }
180
- }, {
181
- key: "rowAsArray",
182
- value: function rowAsArray(rowIndex) {
183
- // return this._colData.map(col => col[rowIndex]);
184
- return this._cols.map(function (col) {
185
- return col.get(rowIndex);
186
- });
187
- }
188
- }, {
189
- key: "rows",
190
- value: function rows(sharedRow) {
191
- var tSharedRow = _dataRow.DataRow.createSharedRow(sharedRow);
192
-
193
- return rowsIterator(this, tSharedRow);
194
- }
195
- }, {
196
- key: "column",
197
- value: function column(columnIndex) {
198
- return columnIterator(this, columnIndex);
199
- }
200
- }, {
201
- key: "getColumn",
202
- value: function getColumn(columnIndex) {
203
- return this._cols[columnIndex];
204
- }
205
- }, {
206
- key: "getField",
207
- value: function getField(columnIndex) {
208
- return this._fields[columnIndex];
209
- }
210
- }, {
211
- key: "flattenData",
212
- value: function flattenData() {
213
- var data = [];
214
-
215
- for (var i = 0; i < this._numRows; ++i) {
216
- data.push(this.rowAsArray(i));
217
- }
218
-
219
- return data;
220
- }
221
- }, {
222
- key: "getPlainIndex",
223
- value: function getPlainIndex() {
224
- return (0, _toConsumableArray2["default"])(Array(this._numRows).keys());
225
- }
226
- }, {
227
- key: "map",
228
- value: function map(func, sharedRow) {
229
- var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
230
-
231
- var tSharedRow = _dataRow.DataRow.createSharedRow(sharedRow);
232
-
233
- var _options$start = options.start,
234
- start = _options$start === void 0 ? 0 : _options$start,
235
- _options$end = options.end,
236
- end = _options$end === void 0 ? this.numRows() : _options$end;
237
- var endRow = Math.min(this.numRows(), end);
238
- var out = [];
239
-
240
- for (var rowIndex = start; rowIndex < endRow; ++rowIndex) {
241
- var _row = this.row(rowIndex, tSharedRow);
242
-
243
- out.push(func(_row, rowIndex));
244
- }
245
-
246
- return out;
247
- }
248
- }, {
249
- key: "mapIndex",
250
- value: function mapIndex(func) {
251
- var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
252
- var _options$start2 = options.start,
253
- start = _options$start2 === void 0 ? 0 : _options$start2,
254
- _options$end2 = options.end,
255
- end = _options$end2 === void 0 ? this.numRows() : _options$end2;
256
- var endRow = Math.min(this.numRows(), end);
257
- var out = [];
258
-
259
- for (var rowIndex = start; rowIndex < endRow; ++rowIndex) {
260
- out.push(func({
261
- index: rowIndex
262
- }, this));
263
- }
264
-
265
- return out;
266
- }
267
- }, {
268
- key: "find",
269
- value: function find(func, sharedRow) {
270
- var tSharedRow = _dataRow.DataRow.createSharedRow(sharedRow);
271
-
272
- for (var rowIndex = 0; rowIndex < this._numRows; ++rowIndex) {
273
- var _row2 = this.row(rowIndex, tSharedRow);
274
-
275
- if (func(_row2, rowIndex)) {
276
- return _row2;
277
- }
278
- }
279
-
280
- return undefined;
281
- }
282
- }, {
283
- key: "reduce",
284
- value: function reduce(func, initialValue, sharedRow) {
285
- var tSharedRow = _dataRow.DataRow.createSharedRow(sharedRow);
286
-
287
- for (var rowIndex = 0; rowIndex < this._numRows; ++rowIndex) {
288
- var _row3 = this.row(rowIndex, tSharedRow);
289
-
290
- initialValue = func(initialValue, _row3, rowIndex);
291
- }
292
-
293
- return initialValue;
294
- }
295
- }]);
296
- return ArrowDataContainer;
297
- }();
298
- /**
299
- * Convert arrow data type to kepler.gl field types
300
- *
301
- * @param arrowType the arrow data type
302
- * @returns corresponding type in `ALL_FIELD_TYPES`
303
- */
304
-
305
-
306
- exports.ArrowDataContainer = ArrowDataContainer;
307
-
308
- function arrowDataTypeToFieldType(arrowType) {
309
- // Note: this function doesn't return ALL_FIELD_TYPES.geojson or ALL_FIELD_TYPES.array, which
310
- // should be further detected by caller
311
- if (arrow.DataType.isDate(arrowType)) {
312
- return _constants.ALL_FIELD_TYPES.date;
313
- } else if (arrow.DataType.isTimestamp(arrowType) || arrow.DataType.isTime(arrowType)) {
314
- return _constants.ALL_FIELD_TYPES.timestamp;
315
- } else if (arrow.DataType.isFloat(arrowType)) {
316
- return _constants.ALL_FIELD_TYPES.real;
317
- } else if (arrow.DataType.isInt(arrowType)) {
318
- return _constants.ALL_FIELD_TYPES.integer;
319
- } else if (arrow.DataType.isBool(arrowType)) {
320
- return _constants.ALL_FIELD_TYPES["boolean"];
321
- } else if (arrow.DataType.isUtf8(arrowType) || arrow.DataType.isNull(arrowType)) {
322
- return _constants.ALL_FIELD_TYPES.string;
323
- } else if (arrow.DataType.isBinary(arrowType) || arrow.DataType.isDictionary(arrowType) || arrow.DataType.isFixedSizeBinary(arrowType) || arrow.DataType.isFixedSizeList(arrowType) || arrow.DataType.isList(arrowType) || arrow.DataType.isMap(arrowType) || arrow.DataType.isStruct(arrowType)) {
324
- return _constants.ALL_FIELD_TYPES.object;
325
- } else {
326
- _window.console.warn("Unsupported arrow type: ".concat(arrowType));
327
-
328
- return _constants.ALL_FIELD_TYPES.string;
329
- }
330
- }
331
- /**
332
- * Convert arrow data type to analyzer type
333
- *
334
- * @param arrowType the arrow data type
335
- * @returns corresponding type in `AnalyzerDATA_TYPES`
336
- */
337
-
338
-
339
- function arrowDataTypeToAnalyzerDataType(arrowType) {
340
- if (arrow.DataType.isDate(arrowType)) {
341
- return _typeAnalyzer.DATA_TYPES.DATE;
342
- } else if (arrow.DataType.isTimestamp(arrowType) || arrow.DataType.isTime(arrowType)) {
343
- return _typeAnalyzer.DATA_TYPES.DATETIME;
344
- } else if (arrow.DataType.isFloat(arrowType)) {
345
- return _typeAnalyzer.DATA_TYPES.FLOAT;
346
- } else if (arrow.DataType.isInt(arrowType)) {
347
- return _typeAnalyzer.DATA_TYPES.INT;
348
- } else if (arrow.DataType.isBool(arrowType)) {
349
- return _typeAnalyzer.DATA_TYPES.BOOLEAN;
350
- } else if (arrow.DataType.isUtf8(arrowType) || arrow.DataType.isNull(arrowType)) {
351
- return _typeAnalyzer.DATA_TYPES.STRING;
352
- } else if (arrow.DataType.isBinary(arrowType) || arrow.DataType.isDictionary(arrowType) || arrow.DataType.isFixedSizeBinary(arrowType) || arrow.DataType.isFixedSizeList(arrowType) || arrow.DataType.isList(arrowType) || arrow.DataType.isMap(arrowType) || arrow.DataType.isStruct(arrowType)) {
353
- return _typeAnalyzer.DATA_TYPES.OBJECT;
354
- } else {
355
- _window.console.warn("Unsupported arrow type: ".concat(arrowType));
356
-
357
- return _typeAnalyzer.DATA_TYPES.STRING;
358
- }
359
- }
360
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9hcnJvdy1kYXRhLWNvbnRhaW5lci50cyJdLCJuYW1lcyI6WyJyb3dzSXRlcmF0b3IiLCJjb2x1bW5JdGVyYXRvciIsImRhdGFDb250YWluZXIiLCJzaGFyZWRSb3ciLCJudW1Sb3dzIiwicm93SW5kZXgiLCJyb3ciLCJjb2x1bW5JbmRleCIsInZhbHVlQXQiLCJBcnJvd0RhdGFDb250YWluZXIiLCJkYXRhIiwiY29scyIsIkVycm9yIiwiQXJyYXkiLCJpc0FycmF5IiwiX2NvbHMiLCJfbnVtQ29sdW1ucyIsImxlbmd0aCIsIl9udW1Sb3dzIiwiX2ZpZWxkcyIsImZpZWxkcyIsIl9udW1DaHVua3MiLCJ1cGRhdGVEYXRhIiwiZ2V0IiwidFNoYXJlZFJvdyIsIkRhdGFSb3ciLCJjcmVhdGVTaGFyZWRSb3ciLCJzZXRTb3VyY2UiLCJtYXAiLCJjb2wiLCJpIiwicHVzaCIsInJvd0FzQXJyYXkiLCJrZXlzIiwiZnVuYyIsIm9wdGlvbnMiLCJzdGFydCIsImVuZCIsImVuZFJvdyIsIk1hdGgiLCJtaW4iLCJvdXQiLCJpbmRleCIsInVuZGVmaW5lZCIsImluaXRpYWxWYWx1ZSIsImFycm93RGF0YVR5cGVUb0ZpZWxkVHlwZSIsImFycm93VHlwZSIsImFycm93IiwiRGF0YVR5cGUiLCJpc0RhdGUiLCJBTExfRklFTERfVFlQRVMiLCJkYXRlIiwiaXNUaW1lc3RhbXAiLCJpc1RpbWUiLCJ0aW1lc3RhbXAiLCJpc0Zsb2F0IiwicmVhbCIsImlzSW50IiwiaW50ZWdlciIsImlzQm9vbCIsImlzVXRmOCIsImlzTnVsbCIsInN0cmluZyIsImlzQmluYXJ5IiwiaXNEaWN0aW9uYXJ5IiwiaXNGaXhlZFNpemVCaW5hcnkiLCJpc0ZpeGVkU2l6ZUxpc3QiLCJpc0xpc3QiLCJpc01hcCIsImlzU3RydWN0Iiwib2JqZWN0IiwiZ2xvYmFsQ29uc29sZSIsIndhcm4iLCJhcnJvd0RhdGFUeXBlVG9BbmFseXplckRhdGFUeXBlIiwiQW5hbHl6ZXJEQVRBX1RZUEVTIiwi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QkFBbUJNLE1BQTFCO0FBQ0Q7QUFDRiIsInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCAqIGFzIGFycm93IGZyb20gJ2FwYWNoZS1hcnJvdyc7XG5pbXBvcnQge2NvbnNvbGUgYXMgZ2xvYmFsQ29uc29sZX0gZnJvbSAnZ2xvYmFsL3dpbmRvdyc7XG5pbXBvcnQge0RBVEFfVFlQRVMgYXMgQW5hbHl6ZXJEQVRBX1RZUEVTfSBmcm9tICd0eXBlLWFuYWx5emVyJztcbmltcG9ydCB7RmllbGR9IGZyb20gJ0BrZXBsZXIuZ2wvdHlwZXMnO1xuaW1wb3J0IHtBTExfRklFTERfVFlQRVN9IGZyb20gJ0BrZXBsZXIuZ2wvY29uc3RhbnRzJztcblxuaW1wb3J0IHtEYXRhUm93LCBTaGFyZWRSb3dPcHRpb25zfSBmcm9tICcuL2RhdGEtcm93JztcbmltcG9ydCB7RGF0YUNvbnRhaW5lckludGVyZmFjZSwgUmFuZ2VPcHRpb25zfSBmcm9tICcuL2RhdGEtY29udGFpbmVyLWludGVyZmFjZSc7XG5cbnR5cGUgQXJyb3dEYXRhQ29udGFpbmVySW5wdXQgPSB7XG4gIGNvbHM6IGFycm93LlZlY3RvcltdO1xuICBmaWVsZHM/OiBGaWVsZFtdO1xufTtcblxuLyoqXG4gKiBAcGFyYW0gZGF0YUNvbnRhaW5lclxuICogQHBhcmFtIHNoYXJlZFJvd1xuICovXG5mdW5jdGlvbiogcm93c0l0ZXJhdG9yKGRhdGFDb250YWluZXI6IERhdGFDb250YWluZXJJbnRlcmZhY2UsIHNoYXJlZFJvdzogU2hhcmVkUm93T3B0aW9ucykge1xuICBjb25zdCBudW1Sb3dzID0gZGF0YUNvbnRhaW5lci5udW1Sb3dzKCk7XG4gIGZvciAobGV0IHJvd0luZGV4ID0gMDsgcm93SW5kZXggPCBudW1Sb3dzOyArK3Jvd0luZGV4KSB7XG4gICAgeWllbGQgZGF0YUNvbnRhaW5lci5yb3cocm93SW5kZXgsIHNoYXJlZFJvdyk7XG4gIH1cbn1cblxuLyoqXG4gKiBAcGFyYW0gZGF0YUNvbnRhaW5lclxuICogQHBhcmFtIGNvbHVtbkluZGV4XG4gKi9cbmZ1bmN0aW9uKiBjb2x1bW5JdGVyYXRvcihkYXRhQ29udGFpbmVyOiBEYXRhQ29udGFpbmVySW50ZXJmYWNlLCBjb2x1bW5JbmRleDogbnVtYmVyKSB7XG4gIGNvbnN0IG51bVJvd3MgPSBkYXRhQ29udGFpbmVyLm51bVJvd3MoKTtcbiAgZm9yIChsZXQgcm93SW5kZXggPSAwOyByb3dJbmRleCA8IG51bVJvd3M7ICsrcm93SW5kZXgpIHtcbiAgICB5aWVsZCBkYXRhQ29udGFpbmVyLnZhbHVlQXQocm93SW5kZXgsIGNvbHVtbkluZGV4KTtcbiAgfVxufVxuXG4vKipcbiAqIEEgZGF0YSBjb250YWluZXIgd2hlcmUgYWxsIGRhdGEgaXMgc3RvcmVkIGluIHJhdyBBcnJvdyB0YWJsZVxuICovXG5leHBvcnQgY2xhc3MgQXJyb3dEYXRhQ29udGFpbmVyIGltcGxlbWVudHMgRGF0YUNvbnRhaW5lckludGVyZmFjZSB7XG4gIF9jb2xzOiBhcnJvdy5WZWN0b3JbXTtcbiAgX251bUNvbHVtbnM6IG51bWJlcjtcbiAgX251bVJvd3M6IG51bWJlcjtcbiAgX2ZpZWxkczogRmllbGRbXTtcbiAgX251bUNodW5rczogbnVtYmVyO1xuICAvLyBjYWNoZSBjb2x1bW4gZGF0YSB0byBtYWtlIHZhbHVlQXQoKSBmYXN0ZXJcbiAgLy8gX2NvbERhdGE6IGFueVtdW107XG5cbiAgY29uc3RydWN0b3IoZGF0YTogQXJyb3dEYXRhQ29udGFpbmVySW5wdXQpIHtcbiAgICBpZiAoIWRhdGEuY29scykge1xuICAgICAgdGhyb3cgRXJyb3IoJ0Fycm93RGF0YUNvbnRhaW5lcjogbm8gY29sdW1ucyBwcm92aWRlZCcpO1xuICAgIH1cblxuICAgIGlmICghQXJyYXkuaXNBcnJheShkYXRhLmNvbHMpKSB7XG4gICAgICB0aHJvdyBFcnJvcihcIkFycm93RGF0YUNvbnRhaW5lcjogY29sdW1ucyBvYmplY3QgaXNuJ3QgYW4gYXJyYXlcIik7XG4gICAgfVxuXG4gICAgdGhpcy5fY29scyA9IGRhdGEuY29scztcbiAgICB0aGlzLl9udW1Db2x1bW5zID0gZGF0YS5jb2xzLmxlbmd0aDtcbiAgICB0aGlzLl9udW1Sb3dzID0gZGF0YS5jb2xzWzBdLmxlbmd0aDtcbiAgICB0aGlzLl9maWVsZHMgPSBkYXRhLmZpZWxkcyB8fCBbXTtcbiAgICB0aGlzLl9udW1DaHVua3MgPSBkYXRhLmNvbHNbMF0uZGF0YS5sZW5ndGg7XG4gICAgLy8gdGhpcy5fY29sRGF0YSA9IGRhdGEuY29scy5tYXAoYyA9PiBjLnRvQXJyYXkoKSk7XG4gIH1cblxuICB1cGRhdGUodXBkYXRlRGF0YTogYXJyb3cuVmVjdG9yPGFueT5bXSkge1xuICAgIHRoaXMuX2NvbHMgPSB1cGRhdGVEYXRhO1xuICAgIHRoaXMuX251bUNvbHVtbnMgPSB0aGlzLl9jb2xzLmxlbmd0aDtcbiAgICB0aGlzLl9udW1Sb3dzID0gdGhpcy5fY29sc1swXS5sZW5ndGg7XG4gICAgdGhpcy5fbnVtQ2h1bmtzID0gdGhpcy5fY29sc1swXS5kYXRhLmxlbmd0aDtcbiAgICAvLyBjYWNoZSBjb2x1bW4gZGF0YSB0byBtYWtlIHZhbHVlQXQoKSBmYXN0ZXJcbiAgICAvLyB0aGlzLl9jb2xEYXRhID0gdGhpcy5fY29scy5tYXAoYyA9PiBjLnRvQXJyYXkoKSk7XG4gIH1cblxuICBudW1DaHVua3MoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fbnVtQ2h1bmtzO1xuICB9XG5cbiAgbnVtUm93cygpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9udW1Sb3dzO1xuICB9XG5cbiAgbnVtQ29sdW1ucygpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9udW1Db2x1bW5zO1xuICB9XG5cbiAgdmFsdWVBdChyb3dJbmRleDogbnVtYmVyLCBjb2x1bW5JbmRleDogbnVtYmVyKTogYW55IHtcbiAgICAvLyByZXR1cm4gdGhpcy5fY29sRGF0YVtjb2x1bW5JbmRleF1bcm93SW5kZXhdO1xuICAgIHJldHVybiB0aGlzLl9jb2xzW2NvbHVtbkluZGV4XS5nZXQocm93SW5kZXgpO1xuICB9XG5cbiAgcm93KHJvd0luZGV4OiBudW1iZXIsIHNoYXJlZFJvdz86IFNoYXJlZFJvd09wdGlvbnMpOiBEYXRhUm93IHtcbiAgICBjb25zdCB0U2hhcmVkUm93ID0gRGF0YVJvdy5jcmVhdGVTaGFyZWRSb3coc2hhcmVkUm93KTtcbiAgICBpZiAodFNoYXJlZFJvdykge1xuICAgICAgdFNoYXJlZFJvdy5zZXRTb3VyY2UodGhpcywgcm93SW5kZXgpO1xuICAgICAgcmV0dXJuIHRTaGFyZWRSb3c7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBEYXRhUm93KHRoaXMsIHJvd0luZGV4KTtcbiAgfVxuXG4gIHJvd0FzQXJyYXkocm93SW5kZXg6IG51bWJlcik6IGFueVtdIHtcbiAgICAvLyByZXR1cm4gdGhpcy5fY29sRGF0YS5tYXAoY29sID0+IGNvbFtyb3dJbmRleF0pO1xuICAgIHJldHVybiB0aGlzLl9jb2xzLm1hcChjb2wgPT4gY29sLmdldChyb3dJbmRleCkpO1xuICB9XG5cbiAgcm93cyhzaGFyZWRSb3c6IFNoYXJlZFJvd09wdGlvbnMpIHtcbiAgICBjb25zdCB0U2hhcmVkUm93ID0gRGF0YVJvdy5jcmVhdGVTaGFyZWRSb3coc2hhcmVkUm93KTtcbiAgICByZXR1cm4gcm93c0l0ZXJhdG9yKHRoaXMsIHRTaGFyZWRSb3cpO1xuICB9XG5cbiAgY29sdW1uKGNvbHVtbkluZGV4OiBudW1iZXIpIHtcbiAgICByZXR1cm4gY29sdW1uSXRlcmF0b3IodGhpcywgY29sdW1uSW5kZXgpO1xuICB9XG5cbiAgZ2V0Q29sdW1uKGNvbHVtbkluZGV4OiBudW1iZXIpOiBhcnJvdy5WZWN0b3Ige1xuICAgIHJldHVybiB0aGlzLl9jb2xzW2NvbHVtbkluZGV4XTtcbiAgfVxuXG4gIGdldEZpZWxkKGNvbHVtbkluZGV4OiBudW1iZXIpOiBGaWVsZCB7XG4gICAgcmV0dXJuIHRoaXMuX2ZpZWxkc1tjb2x1bW5JbmRleF07XG4gIH1cblxuICBmbGF0dGVuRGF0YSgpOiBhbnlbXVtdIHtcbiAgICBjb25zdCBkYXRhOiBhbnlbXVtdID0gW107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLl9udW1Sb3dzOyArK2kpIHtcbiAgICAgIGRhdGEucHVzaCh0aGlzLnJvd0FzQXJyYXkoaSkpO1xuICAgIH1cbiAgICByZXR1cm4gZGF0YTtcbiAgfVxuXG4gIGdldFBsYWluSW5kZXgoKTogbnVtYmVyW10ge1xuICAgIHJldHVybiBbLi4uQXJyYXkodGhpcy5fbnVtUm93cykua2V5cygpXTtcbiAgfVxuXG4gIG1hcDxUPihcbiAgICBmdW5jOiAocm93OiBEYXRhUm93LCBpbmRleDogbnVtYmVyKSA9PiBULFxuICAgIHNoYXJlZFJvdz86IFNoYXJlZFJvd09wdGlvbnMsXG4gICAgb3B0aW9uczogUmFuZ2VPcHRpb25zID0ge31cbiAgKTogVFtdIHtcbiAgICBjb25zdCB0U2hhcmVkUm93ID0gRGF0YVJvdy5jcmVhdGVTaGFyZWRSb3coc2hhcmVkUm93KTtcblxuICAgIGNvbnN0IHtzdGFydCA9IDAsIGVuZCA9IHRoaXMubnVtUm93cygpfSA9IG9wdGlvbnM7XG4gICAgY29uc3QgZW5kUm93ID0gTWF0aC5taW4odGhpcy5udW1Sb3dzKCksIGVuZCk7XG5cbiAgICBjb25zdCBvdXQ6IFRbXSA9IFtdO1xuICAgIGZvciAobGV0IHJvd0luZGV4ID0gc3RhcnQ7IHJvd0luZGV4IDwgZW5kUm93OyArK3Jvd0luZGV4KSB7XG4gICAgICBjb25zdCByb3cgPSB0aGlzLnJvdyhyb3dJbmRleCwgdFNoYXJlZFJvdyk7XG4gICAgICBvdXQucHVzaChmdW5jKHJvdywgcm93SW5kZXgpKTtcbiAgICB9XG4gICAgcmV0dXJuIG91dDtcbiAgfVxuXG4gIG1hcEluZGV4PFQ+KGZ1bmM6ICh7aW5kZXh9LCBkYzogRGF0YUNvbnRhaW5lckludGVyZmFjZSkgPT4gVCwgb3B0aW9uczogUmFuZ2VPcHRpb25zID0ge30pOiBUW10ge1xuICAgIGNvbnN0IHtzdGFydCA9IDAsIGVuZCA9IHRoaXMubnVtUm93cygpfSA9IG9wdGlvbnM7XG4gICAgY29uc3QgZW5kUm93ID0gTWF0aC5taW4odGhpcy5udW1Sb3dzKCksIGVuZCk7XG5cbiAgICBjb25zdCBvdXQ6IFRbXSA9IFtdO1xuICAgIGZvciAobGV0IHJvd0luZGV4ID0gc3RhcnQ7IHJvd0luZGV4IDwgZW5kUm93OyArK3Jvd0luZGV4KSB7XG4gICAgICBvdXQucHVzaChmdW5jKHtpbmRleDogcm93SW5kZXh9LCB0aGlzKSk7XG4gICAgfVxuICAgIHJldHVybiBvdXQ7XG4gIH1cblxuICBmaW5kKFxuICAgIGZ1bmM6IChyb3c6IERhdGFSb3csIGluZGV4OiBudW1iZXIpID0+IGJvb2xlYW4sXG4gICAgc2hhcmVkUm93PzogU2hhcmVkUm93T3B0aW9uc1xuICApOiBEYXRhUm93IHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCB0U2hhcmVkUm93ID0gRGF0YVJvdy5jcmVhdGVTaGFyZWRSb3coc2hhcmVkUm93KTtcblxuICAgIGZvciAobGV0IHJvd0luZGV4ID0gMDsgcm93SW5kZXggPCB0aGlzLl9udW1Sb3dzOyArK3Jvd0luZGV4KSB7XG4gICAgICBjb25zdCByb3cgPSB0aGlzLnJvdyhyb3dJbmRleCwgdFNoYXJlZFJvdyk7XG4gICAgICBpZiAoZnVuYyhyb3csIHJvd0luZGV4KSkge1xuICAgICAgICByZXR1cm4gcm93O1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgcmVkdWNlPFQ+KFxuICAgIGZ1bmM6IChhY2M6IFQsIHJvdzogRGF0YVJvdywgaW5kZXg6IG51bWJlcikgPT4gVCxcbiAgICBpbml0aWFsVmFsdWU6IFQsXG4gICAgc2hhcmVkUm93PzogU2hhcmVkUm93T3B0aW9uc1xuICApOiBUIHtcbiAgICBjb25zdCB0U2hhcmVkUm93ID0gRGF0YVJvdy5jcmVhdGVTaGFyZWRSb3coc2hhcmVkUm93KTtcblxuICAgIGZvciAobGV0IHJvd0luZGV4ID0gMDsgcm93SW5kZXggPCB0aGlzLl9udW1Sb3dzOyArK3Jvd0luZGV4KSB7XG4gICAgICBjb25zdCByb3cgPSB0aGlzLnJvdyhyb3dJbmRleCwgdFNoYXJlZFJvdyk7XG4gICAgICBpbml0aWFsVmFsdWUgPSBmdW5jKGluaXRpYWxWYWx1ZSwgcm93LCByb3dJbmRleCk7XG4gICAgfVxuICAgIHJldHVybiBpbml0aWFsVmFsdWU7XG4gIH1cbn1cblxuLyoqXG4gKiBDb252ZXJ0IGFycm93IGRhdGEgdHlwZSB0byBrZXBsZXIuZ2wgZmllbGQgdHlwZXNcbiAqXG4gKiBAcGFyYW0gYXJyb3dUeXBlIHRoZSBhcnJvdyBkYXRhIHR5cGVcbiAqIEByZXR1cm5zIGNvcnJlc3BvbmRpbmcgdHlwZSBpbiBgQUxMX0ZJRUxEX1RZUEVTYFxuICovXG5leHBvcnQgZnVuY3Rpb24gYXJyb3dEYXRhVHlwZVRvRmllbGRUeXBlKGFycm93VHlwZTogYXJyb3cuRGF0YVR5cGUpOiBzdHJpbmcge1xuICAvLyBOb3RlOiB0aGlzIGZ1bmN0aW9uIGRvZXNuJ3QgcmV0dXJuIEFMTF9GSUVMRF9UWVBFUy5nZW9qc29uIG9yIEFMTF9GSUVMRF9UWVBFUy5hcnJheSwgd2hpY2hcbiAgLy8gc2hvdWxkIGJlIGZ1cnRoZXIgZGV0ZWN0ZWQgYnkgY2FsbGVyXG4gIGlmIChhcnJvdy5EYXRhVHlwZS5pc0RhdGUoYXJyb3dUeXBlKSkge1xuICAgIHJldHVybiBBTExfRklFTERfVFlQRVMuZGF0ZTtcbiAgfSBlbHNlIGlmIChhcnJvdy5EYXRhVHlwZS5pc1RpbWVzdGFtcChhcnJvd1R5cGUpIHx8IGFycm93LkRhdGFUeXBlLmlzVGltZShhcnJvd1R5cGUpKSB7XG4gICAgcmV0dXJuIEFMTF9GSUVMRF9UWVBFUy50aW1lc3RhbXA7XG4gIH0gZWxzZSBpZiAoYXJyb3cuRGF0YVR5cGUuaXNGbG9hdChhcnJvd1R5cGUpKSB7XG4gICAgcmV0dXJuIEFMTF9GSUVMRF9UWVBFUy5yZWFsO1xuICB9IGVsc2UgaWYgKGFycm93LkRhdGFUeXBlLmlzSW50KGFycm93VHlwZSkpIHtcbiAgICByZXR1cm4gQUxMX0ZJRUxEX1RZUEVTLmludGVnZXI7XG4gIH0gZWxzZSBpZiAoYXJyb3cuRGF0YVR5cGUuaXNCb29sKGFycm93VHlwZSkpIHtcbiAgICByZXR1cm4gQUxMX0ZJRUxEX1RZUEVTLmJvb2xlYW47XG4gIH0gZWxzZSBpZiAoYXJyb3cuRGF0YVR5cGUuaXNVdGY4KGFycm93VHlwZSkgfHwgYXJyb3cuRGF0YVR5cGUuaXNOdWxsKGFycm93VHlwZSkpIHtcbiAgICByZXR1cm4gQUxMX0ZJRUxEX1RZUEVTLnN0cmluZztcbiAgfSBlbHNlIGlmIChcbiAgICBhcnJvdy5EYXRhVHlwZS5pc0JpbmFyeShhcnJvd1R5cGUpIHx8XG4gICAgYXJyb3cuRGF0YVR5cGUuaXNEaWN0aW9uYXJ5KGFycm93VHlwZSkgfHxcbiAgICBhcnJvdy5EYXRhVHlwZS5pc0ZpeGVkU2l6ZUJpbmFyeShhcnJvd1R5cGUpIHx8XG4gICAgYXJyb3cuRGF0YVR5cGUuaXNGaXhlZFNpemVMaXN0KGFycm93VHlwZSkgfHxcbiAgICBhcnJvdy5EYXRhVHlwZS5pc0xpc3QoYXJyb3dUeXBlKSB8fFxuICAgIGFycm93LkRhdGFUeXBlLmlzTWFwKGFycm93VHlwZSkgfHxcbiAgICBhcnJvdy5EYXRhVHlwZS5pc1N0cnVjdChhcnJvd1R5cGUpXG4gICkge1xuICAgIHJldHVybiBBTExfRklFTERfVFlQRVMub2JqZWN0O1xuICB9IGVsc2Uge1xuICAgIGdsb2JhbENvbnNvbGUud2FybihgVW5zdXBwb3J0ZWQgYXJyb3cgdHlwZTogJHthcnJvd1R5cGV9YCk7XG4gICAgcmV0dXJuIEFMTF9GSUVMRF9UWVBFUy5zdHJpbmc7XG4gIH1cbn1cblxuLyoqXG4gKiBDb252ZXJ0IGFycm93IGRhdGEgdHlwZSB0byBhbmFseXplciB0eXBlXG4gKlxuICogQHBhcmFtIGFycm93VHlwZSB0aGUgYXJyb3cgZGF0YSB0eXBlXG4gKiBAcmV0dXJucyBjb3JyZXNwb25kaW5nIHR5cGUgaW4gYEFuYWx5emVyREFUQV9UWVBFU2BcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFycm93RGF0YVR5cGVUb0FuYWx5emVyRGF0YVR5cGUoXG4gIGFycm93VHlwZTogYXJyb3cuRGF0YVR5cGVcbik6IHR5cGVvZiBBbmFseXplckRBVEFfVFlQRVMge1xuICBpZiAoYXJyb3cuRGF0YVR5cGUuaXNEYXRlKGFycm93VHlwZSkpIHtcbiAgICByZXR1cm4gQW5hbHl6ZXJEQVRBX1RZUEVTLkRBVEU7XG4gIH0gZWxzZSBpZiAoYXJyb3cuRGF0YVR5cGUuaXNUaW1lc3RhbXAoYXJyb3dUeXBlKSB8fCBhcnJvdy5EYXRhVHlwZS5pc1RpbWUoYXJyb3dUeXBlKSkge1xuICAgIHJldHVybiBBbmFseXplckRBVEFfVFlQRVMuREFURVRJTUU7XG4gIH0gZWxzZSBpZiAoYXJyb3cuRGF0YVR5cGUuaXNGbG9hdChhcnJvd1R5cGUpKSB7XG4gICAgcmV0dXJuIEFuYWx5emVyREFUQV9UWVBFUy5GTE9BVDtcbiAgfSBlbHNlIGlmIChhcnJvdy5EYXRhVHlwZS5pc0ludChhcnJvd1R5cGUpKSB7XG4gICAgcmV0dXJuIEFuYWx5emVyREFUQV9UWVBFUy5JTlQ7XG4gIH0gZWxzZSBpZiAoYXJyb3cuRGF0YVR5cGUuaXNCb29sKGFycm93VHlwZSkpIHtcbiAgICByZXR1cm4gQW5hbHl6ZXJEQVRBX1RZUEVTLkJPT0xFQU47XG4gIH0gZWxzZSBpZiAoYXJyb3cuRGF0YVR5cGUuaXNVdGY4KGFycm93VHlwZSkgfHwgYXJyb3cuRGF0YVR5cGUuaXNOdWxsKGFycm93VHlwZSkpIHtcbiAgICByZXR1cm4gQW5hbHl6ZXJEQVRBX1RZUEVTLlNUUklORztcbiAgfSBlbHNlIGlmIChcbiAgICBhcnJvdy5EYXRhVHlwZS5pc0JpbmFyeShhcnJvd1R5cGUpIHx8XG4gICAgYXJyb3cuRGF0YVR5cGUuaXNEaWN0aW9uYXJ5KGFycm93VHlwZSkgfHxcbiAgICBhcnJvdy5EYXRhVHlwZS5pc0ZpeGVkU2l6ZUJpbmFyeShhcnJvd1R5cGUpIHx8XG4gICAgYXJyb3cuRGF0YVR5cGUuaXNGaXhlZFNpemVMaXN0KGFycm93VHlwZSkgfHxcbiAgICBhcnJvdy5EYXRhVHlwZS5pc0xpc3QoYXJyb3dUeXBlKSB8fFxuICAgIGFycm93LkRhdGFUeXBlLmlzTWFwKGFycm93VHlwZSkgfHxcbiAgICBhcnJvdy5EYXRhVHlwZS5pc1N0cnVjdChhcnJvd1R5cGUpXG4gICkge1xuICAgIHJldHVybiBBbmFseXplckRBVEFfVFlQRVMuT0JKRUNUO1xuICB9IGVsc2Uge1xuICAgIGdsb2JhbENvbnNvbGUud2FybihgVW5zdXBwb3J0ZWQgYXJyb3cgdHlwZTogJHthcnJvd1R5cGV9YCk7XG4gICAgcmV0dXJuIEFuYWx5emVyREFUQV9UWVBFUy5TVFJJTkc7XG4gIH1cbn1cbiJdfQ==
@@ -1,51 +0,0 @@
1
- import { ColorRange } from '@kepler.gl/constants';
2
- import { HexColor, RGBColor } from '@kepler.gl/types';
3
- /**
4
- * get r g b from hex code
5
- *
6
- * @param hex
7
- * @returns array of r g bs
8
- */
9
- export declare function hexToRgb(hex: string): RGBColor;
10
- export declare function isHexColor(hex: string): RegExpExecArray | null;
11
- /**
12
- * get hex from r g b
13
- *
14
- * @param rgb
15
- * @returns hex string
16
- */
17
- export declare function rgbToHex([r, g, b]: RGBColor): HexColor;
18
- /**
19
- * Get color group name by parsing name, discard step in the name
20
- * e.g. Global Warming 6 -> Global Warming
21
- *
22
- * @param {Object} colorRange
23
- * @return {string | null}
24
- */
25
- export declare function getColorGroupByName(colorRange: ColorRange): string | null;
26
- /**
27
- * Get a reversed colorRange
28
- * @param reversed
29
- * @param colorRange
30
- */
31
- export declare function reverseColorRange(reversed: boolean, colorRange: ColorRange): ColorRange | null;
32
- /**
33
- * given a list of rgb arrays it will generate a linear gradient css rule
34
- * @param direction
35
- * @param colors
36
- * @return
37
- */
38
- export declare function createLinearGradient(direction: string, colors: RGBColor[]): string;
39
- /**
40
- * Convert color to RGB
41
- */
42
- export declare function colorMaybeToRGB(color: unknown): RGBColor | null;
43
- /**
44
- * Whether color is rgb
45
- * @returns
46
- */
47
- export declare function isRgbColor(color: unknown): boolean;
48
- /**
49
- * Take color values in 0-255 range and map to [0, 1]
50
- */
51
- export declare function normalizeColor(color: number[]): number[];