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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (81) hide show
  1. package/dist/aggregation.d.ts +13 -0
  2. package/dist/aggregation.js +84 -0
  3. package/dist/application-config.d.ts +25 -0
  4. package/dist/application-config.js +52 -0
  5. package/dist/arrow-data-container.d.ts +62 -0
  6. package/dist/arrow-data-container.js +331 -0
  7. package/dist/color-utils.d.ts +108 -0
  8. package/dist/color-utils.js +443 -0
  9. package/dist/data-container-interface.d.ts +138 -0
  10. package/dist/data-container-interface.js +6 -0
  11. package/dist/data-container-utils.d.ts +30 -0
  12. package/dist/data-container-utils.js +74 -0
  13. package/dist/data-row.d.ts +59 -0
  14. package/dist/data-row.js +110 -0
  15. package/dist/data-scale-utils.d.ts +120 -0
  16. package/dist/data-scale-utils.js +340 -0
  17. package/dist/data-utils.d.ts +98 -0
  18. package/dist/data-utils.js +436 -0
  19. package/dist/dataset-utils.d.ts +45 -0
  20. package/dist/dataset-utils.js +313 -0
  21. package/dist/dom-to-image.d.ts +73 -0
  22. package/dist/dom-to-image.js +421 -0
  23. package/dist/dom-utils.d.ts +23 -0
  24. package/dist/dom-utils.js +349 -0
  25. package/dist/effect-utils.d.ts +24 -0
  26. package/dist/effect-utils.js +166 -0
  27. package/dist/export-map-html.d.ts +9 -0
  28. package/dist/export-map-html.js +25 -0
  29. package/dist/export-utils.d.ts +40 -0
  30. package/dist/export-utils.js +201 -0
  31. package/dist/filter-utils.d.ts +331 -0
  32. package/dist/filter-utils.js +1214 -0
  33. package/dist/format.d.ts +3 -0
  34. package/dist/format.js +38 -0
  35. package/dist/gl-utils.d.ts +1 -0
  36. package/dist/gl-utils.js +27 -0
  37. package/dist/index.d.ts +41 -0
  38. package/dist/index.js +941 -0
  39. package/dist/indexed-data-container.d.ts +34 -0
  40. package/dist/indexed-data-container.js +214 -0
  41. package/dist/locale-utils.d.ts +2 -0
  42. package/dist/locale-utils.js +39 -0
  43. package/dist/map-info-utils.d.ts +1 -0
  44. package/dist/map-info-utils.js +14 -0
  45. package/dist/map-style-utils/mapbox-gl-style-editor.d.ts +57 -0
  46. package/dist/map-style-utils/mapbox-gl-style-editor.js +188 -0
  47. package/dist/map-style-utils/mapbox-utils.d.ts +14 -0
  48. package/dist/map-style-utils/mapbox-utils.js +51 -0
  49. package/dist/map-utils.d.ts +9 -0
  50. package/dist/map-utils.js +48 -0
  51. package/dist/mapbox-utils.d.ts +7 -0
  52. package/dist/mapbox-utils.js +19 -0
  53. package/dist/noop.d.ts +1 -0
  54. package/dist/noop.js +13 -0
  55. package/dist/notifications-utils.d.ts +42 -0
  56. package/dist/notifications-utils.js +69 -0
  57. package/dist/observe-dimensions.d.ts +15 -0
  58. package/dist/observe-dimensions.js +130 -0
  59. package/dist/plot.d.ts +131 -0
  60. package/dist/plot.js +615 -0
  61. package/dist/position-utils.d.ts +6 -0
  62. package/dist/position-utils.js +26 -0
  63. package/dist/projection-utils.d.ts +22 -0
  64. package/dist/projection-utils.js +83 -0
  65. package/dist/quick-insertion-sort.d.ts +12 -0
  66. package/dist/quick-insertion-sort.js +132 -0
  67. package/dist/row-data-container.d.ts +31 -0
  68. package/dist/row-data-container.js +206 -0
  69. package/dist/searcher-utils.d.ts +1 -0
  70. package/dist/searcher-utils.js +25 -0
  71. package/dist/split-map-utils.d.ts +32 -0
  72. package/dist/split-map-utils.js +99 -0
  73. package/dist/strings.d.ts +4 -0
  74. package/dist/strings.js +16 -0
  75. package/dist/time.d.ts +54 -0
  76. package/dist/time.js +325 -0
  77. package/dist/types.d.ts +18 -0
  78. package/dist/types.js +6 -0
  79. package/dist/utils.d.ts +104 -0
  80. package/dist/utils.js +241 -0
  81. package/package.json +6 -5
@@ -0,0 +1,34 @@
1
+ import { DataContainerInterface, RangeOptions } from './data-container-interface';
2
+ import { DataRow, SharedRowOptions } from './data-row';
3
+ /**
4
+ * A data container wrapper around another data container.
5
+ * You have to pass an array of indices to reference rows in the parent data container.
6
+ * For example indices [3, 4, 6, 8] means that IndexedDataContainer is going to have
7
+ * 4 rows and row(2) points to 6th row in the referenced data container.
8
+ */
9
+ export declare class IndexedDataContainer implements DataContainerInterface {
10
+ _parentDataContainer: DataContainerInterface;
11
+ _indices: number[];
12
+ constructor(parentDataContainer: DataContainerInterface, indices: number[]);
13
+ numRows(): number;
14
+ numColumns(): number;
15
+ /**
16
+ * Remaps a local index to an index in the parent dataset
17
+ * @param rowIndex
18
+ * @returns number
19
+ */
20
+ _mappedRowIndex(rowIndex: number): number;
21
+ valueAt(rowIndex: number, columnIndex: number): any;
22
+ row(rowIndex: number, sharedRow?: SharedRowOptions): DataRow;
23
+ rowAsArray(rowIndex: number): any[];
24
+ rows(sharedRow?: SharedRowOptions): Generator<DataRow, any, unknown>;
25
+ column(columnIndex: number): Generator<any, any, unknown>;
26
+ getPlainIndex(): number[];
27
+ flattenData(): any[][];
28
+ map<T>(func: (row: DataRow, index: number) => T, sharedRow?: SharedRowOptions, options?: RangeOptions): T[];
29
+ mapIndex<T>(func: ({ index: number }: {
30
+ index: any;
31
+ }, dc: DataContainerInterface) => T, options?: RangeOptions): T[];
32
+ find(func: (row: DataRow, index: number) => boolean, sharedRow?: SharedRowOptions): DataRow | undefined;
33
+ reduce<T>(func: (acc: T, row: DataRow, index: number) => T, initialValue: T, sharedRow?: SharedRowOptions): T;
34
+ }
@@ -0,0 +1,214 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.IndexedDataContainer = 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 indices
19
+ * @param sharedRow
20
+ * @returns
21
+ */
22
+ function rowsIterator(dataContainer, indices, sharedRow) {
23
+ var numRows, rowIndex, mappedRowIndex;
24
+ return _regenerator["default"].wrap(function rowsIterator$(_context) {
25
+ while (1) switch (_context.prev = _context.next) {
26
+ case 0:
27
+ numRows = indices.length;
28
+ rowIndex = 0;
29
+ case 2:
30
+ if (!(rowIndex < numRows)) {
31
+ _context.next = 9;
32
+ break;
33
+ }
34
+ mappedRowIndex = indices[rowIndex];
35
+ _context.next = 6;
36
+ return dataContainer.row(mappedRowIndex, sharedRow);
37
+ case 6:
38
+ ++rowIndex;
39
+ _context.next = 2;
40
+ break;
41
+ case 9:
42
+ case "end":
43
+ return _context.stop();
44
+ }
45
+ }, _marked);
46
+ }
47
+
48
+ /**
49
+ * @param dataContainer
50
+ * @param indices
51
+ * @param columnIndex
52
+ * @returns
53
+ */
54
+ function columnIterator(dataContainer, indices, columnIndex) {
55
+ var numRows, rowIndex, mappedRowIndex;
56
+ return _regenerator["default"].wrap(function columnIterator$(_context2) {
57
+ while (1) switch (_context2.prev = _context2.next) {
58
+ case 0:
59
+ numRows = indices.length;
60
+ rowIndex = 0;
61
+ case 2:
62
+ if (!(rowIndex < numRows)) {
63
+ _context2.next = 9;
64
+ break;
65
+ }
66
+ mappedRowIndex = indices[rowIndex];
67
+ _context2.next = 6;
68
+ return dataContainer.valueAt(mappedRowIndex, columnIndex);
69
+ case 6:
70
+ ++rowIndex;
71
+ _context2.next = 2;
72
+ break;
73
+ case 9:
74
+ case "end":
75
+ return _context2.stop();
76
+ }
77
+ }, _marked2);
78
+ }
79
+
80
+ /**
81
+ * A data container wrapper around another data container.
82
+ * You have to pass an array of indices to reference rows in the parent data container.
83
+ * For example indices [3, 4, 6, 8] means that IndexedDataContainer is going to have
84
+ * 4 rows and row(2) points to 6th row in the referenced data container.
85
+ */
86
+ var IndexedDataContainer = exports.IndexedDataContainer = /*#__PURE__*/function () {
87
+ function IndexedDataContainer(parentDataContainer, indices) {
88
+ (0, _classCallCheck2["default"])(this, IndexedDataContainer);
89
+ (0, _defineProperty2["default"])(this, "_parentDataContainer", void 0);
90
+ (0, _defineProperty2["default"])(this, "_indices", void 0);
91
+ this._parentDataContainer = parentDataContainer;
92
+ this._indices = indices;
93
+ }
94
+ return (0, _createClass2["default"])(IndexedDataContainer, [{
95
+ key: "numRows",
96
+ value: function numRows() {
97
+ return this._indices.length;
98
+ }
99
+ }, {
100
+ key: "numColumns",
101
+ value: function numColumns() {
102
+ return this._parentDataContainer.numColumns();
103
+ }
104
+
105
+ /**
106
+ * Remaps a local index to an index in the parent dataset
107
+ * @param rowIndex
108
+ * @returns number
109
+ */
110
+ }, {
111
+ key: "_mappedRowIndex",
112
+ value: function _mappedRowIndex(rowIndex) {
113
+ return this._indices[rowIndex];
114
+ }
115
+ }, {
116
+ key: "valueAt",
117
+ value: function valueAt(rowIndex, columnIndex) {
118
+ return this._parentDataContainer.valueAt(this._mappedRowIndex(rowIndex), columnIndex);
119
+ }
120
+ }, {
121
+ key: "row",
122
+ value: function row(rowIndex, sharedRow) {
123
+ return this._parentDataContainer.row(this._mappedRowIndex(rowIndex), sharedRow);
124
+ }
125
+ }, {
126
+ key: "rowAsArray",
127
+ value: function rowAsArray(rowIndex) {
128
+ return this._parentDataContainer.rowAsArray(this._mappedRowIndex(rowIndex));
129
+ }
130
+ }, {
131
+ key: "rows",
132
+ value: function rows(sharedRow) {
133
+ return rowsIterator(this._parentDataContainer, this._indices, sharedRow);
134
+ }
135
+ }, {
136
+ key: "column",
137
+ value: function column(columnIndex) {
138
+ return columnIterator(this._parentDataContainer, this._indices, columnIndex);
139
+ }
140
+ }, {
141
+ key: "getPlainIndex",
142
+ value: function getPlainIndex() {
143
+ return this._indices.map(function (_, i) {
144
+ return i;
145
+ });
146
+ }
147
+ }, {
148
+ key: "flattenData",
149
+ value: function flattenData() {
150
+ var _this = this;
151
+ var tSharedRow = _dataRow.DataRow.createSharedRow(true);
152
+ return this._indices.map(function (_, i) {
153
+ return _this.row(i, tSharedRow).values();
154
+ }, this);
155
+ }
156
+ }, {
157
+ key: "map",
158
+ value: function map(func, sharedRow) {
159
+ var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
160
+ var _options$start = options.start,
161
+ start = _options$start === void 0 ? 0 : _options$start,
162
+ _options$end = options.end,
163
+ end = _options$end === void 0 ? this.numRows() : _options$end;
164
+ var endRow = Math.min(this.numRows(), end);
165
+ var tSharedRow = _dataRow.DataRow.createSharedRow(sharedRow);
166
+ var out = [];
167
+ for (var rowIndex = start; rowIndex < endRow; ++rowIndex) {
168
+ var row = this.row(rowIndex, tSharedRow);
169
+ out.push(func(row, rowIndex));
170
+ }
171
+ return out;
172
+ }
173
+ }, {
174
+ key: "mapIndex",
175
+ value: function mapIndex(func) {
176
+ var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
177
+ var _options$start2 = options.start,
178
+ start = _options$start2 === void 0 ? 0 : _options$start2,
179
+ _options$end2 = options.end,
180
+ end = _options$end2 === void 0 ? this.numRows() : _options$end2;
181
+ var endRow = Math.min(this.numRows(), end);
182
+ var out = [];
183
+ for (var rowIndex = start; rowIndex < endRow; ++rowIndex) {
184
+ out.push(func({
185
+ index: this._mappedRowIndex(rowIndex)
186
+ }, this._parentDataContainer));
187
+ }
188
+ return out;
189
+ }
190
+ }, {
191
+ key: "find",
192
+ value: function find(func, sharedRow) {
193
+ var tSharedRow = _dataRow.DataRow.createSharedRow(sharedRow);
194
+ for (var rowIndex = 0; rowIndex < this.numRows(); ++rowIndex) {
195
+ var row = this.row(rowIndex, tSharedRow);
196
+ if (func(row, rowIndex)) {
197
+ return row;
198
+ }
199
+ }
200
+ return undefined;
201
+ }
202
+ }, {
203
+ key: "reduce",
204
+ value: function reduce(func, initialValue, sharedRow) {
205
+ var tSharedRow = _dataRow.DataRow.createSharedRow(sharedRow);
206
+ for (var rowIndex = 0; rowIndex < this._indices.length; ++rowIndex) {
207
+ var row = this.row(rowIndex, tSharedRow);
208
+ initialValue = func(initialValue, row, rowIndex);
209
+ }
210
+ return initialValue;
211
+ }
212
+ }]);
213
+ }();
214
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZGF0YVJvdyIsInJlcXVpcmUiLCJfbWFya2VkIiwiX3JlZ2VuZXJhdG9yIiwibWFyayIsInJvd3NJdGVyYXRvciIsIl9tYXJrZWQyIiwiY29sdW1uSXRlcmF0b3IiLCJkYXRhQ29udGFpbmVyIiwiaW5kaWNlcyIsInNoYXJlZFJvdyIsIm51bVJvd3MiLCJyb3dJbmRleCIsIm1hcHBlZFJvd0luZGV4Iiwid3JhcCIsInJvd3NJdGVyYXRvciQiLCJfY29udGV4dCIsInByZXYiLCJuZXh0IiwibGVuZ3RoIiwicm93Iiwic3RvcCIsImNvbHVtbkluZGV4IiwiY29sdW1uSXRlcmF0b3IkIiwiX2NvbnRleHQyIiwidmFsdWVBdCIsIkluZGV4ZWREYXRhQ29udGFpbmVyIiwiZXhwb3J0cyIsInBhcmVudERhdGFDb250YWluZXIiLCJfY2xhc3NDYWxsQ2hlY2syIiwiX2RlZmluZVByb3BlcnR5MiIsIl9wYXJlbnREYXRhQ29udGFpbmVyIiwiX2luZGljZXMiLCJfY3JlYXRlQ2xhc3MyIiwia2V5IiwidmFsdWUiLCJudW1Db2x1bW5zIiwiX21hcHBlZFJvd0luZGV4Iiwicm93QXNBcnJheSIsInJvd3MiLCJjb2x1bW4iLCJnZXRQbGFpbkluZGV4IiwibWFwIiwiXyIsImkiLCJmbGF0dGVuRGF0YSIsIl90aGlzIiwidFNoYXJlZFJvdyIsIkRhdGFSb3ciLCJjcmVhdGVTaGFyZWRSb3ciLCJ2YWx1ZXMiLCJmdW5jIiwib3B0aW9ucyIsImFyZ3VtZW50cyIsInVuZGVmaW5lZCIsIl9vcHRpb25zJHN0YXJ0Iiwic3RhcnQiLCJfb3B0aW9ucyRlbmQiLCJlbmQiLCJlbmRSb3ciLCJNYXRoIiwibWluIiwib3V0IiwicHVzaCIsIm1hcEluZGV4IiwiX29wdGlvbnMkc3RhcnQyIiwiX29wdGlvbnMkZW5kMiIsImluZGV4IiwiZmluZCIsInJlZHVjZSIsImluaXRpYWxWYWx1ZSJdLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleGVkLWRhdGEtY29udGFpbmVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCB7RGF0YUNvbnRhaW5lckludGVyZmFjZSwgUmFuZ2VPcHRpb25zfSBmcm9tICcuL2RhdGEtY29udGFpbmVyLWludGVyZmFjZSc7XG5pbXBvcnQge0RhdGFSb3csIFNoYXJlZFJvd09wdGlvbnN9IGZyb20gJy4vZGF0YS1yb3cnO1xuXG4vKipcbiAqIEBwYXJhbSBkYXRhQ29udGFpbmVyXG4gKiBAcGFyYW0gaW5kaWNlc1xuICogQHBhcmFtIHNoYXJlZFJvd1xuICogQHJldHVybnNcbiAqL1xuZnVuY3Rpb24qIHJvd3NJdGVyYXRvcihcbiAgZGF0YUNvbnRhaW5lcjogRGF0YUNvbnRhaW5lckludGVyZmFjZSxcbiAgaW5kaWNlczogbnVtYmVyW10sXG4gIHNoYXJlZFJvdzogU2hhcmVkUm93T3B0aW9uc1xuKTogR2VuZXJhdG9yPERhdGFSb3c+IHtcbiAgY29uc3QgbnVtUm93cyA9IGluZGljZXMubGVuZ3RoO1xuICBmb3IgKGxldCByb3dJbmRleCA9IDA7IHJvd0luZGV4IDwgbnVtUm93czsgKytyb3dJbmRleCkge1xuICAgIGNvbnN0IG1hcHBlZFJvd0luZGV4ID0gaW5kaWNlc1tyb3dJbmRleF07XG4gICAgeWllbGQgZGF0YUNvbnRhaW5lci5yb3cobWFwcGVkUm93SW5kZXgsIHNoYXJlZFJvdyk7XG4gIH1cbn1cblxuLyoqXG4gKiBAcGFyYW0gZGF0YUNvbnRhaW5lclxuICogQHBhcmFtIGluZGljZXNcbiAqIEBwYXJhbSBjb2x1bW5JbmRleFxuICogQHJldHVybnNcbiAqL1xuZnVuY3Rpb24qIGNvbHVtbkl0ZXJhdG9yKFxuICBkYXRhQ29udGFpbmVyOiBEYXRhQ29udGFpbmVySW50ZXJmYWNlLFxuICBpbmRpY2VzOiBudW1iZXJbXSxcbiAgY29sdW1uSW5kZXg6IG51bWJlclxuKTogR2VuZXJhdG9yPGFueT4ge1xuICBjb25zdCBudW1Sb3dzID0gaW5kaWNlcy5sZW5ndGg7XG4gIGZvciAobGV0IHJvd0luZGV4ID0gMDsgcm93SW5kZXggPCBudW1Sb3dzOyArK3Jvd0luZGV4KSB7XG4gICAgY29uc3QgbWFwcGVkUm93SW5kZXggPSBpbmRpY2VzW3Jvd0luZGV4XTtcbiAgICB5aWVsZCBkYXRhQ29udGFpbmVyLnZhbHVlQXQobWFwcGVkUm93SW5kZXgsIGNvbHVtbkluZGV4KTtcbiAgfVxufVxuXG4vKipcbiAqIEEgZGF0YSBjb250YWluZXIgd3JhcHBlciBhcm91bmQgYW5vdGhlciBkYXRhIGNvbnRhaW5lci5cbiAqIFlvdSBoYXZlIHRvIHBhc3MgYW4gYXJyYXkgb2YgaW5kaWNlcyB0byByZWZlcmVuY2Ugcm93cyBpbiB0aGUgcGFyZW50IGRhdGEgY29udGFpbmVyLlxuICogRm9yIGV4YW1wbGUgaW5kaWNlcyBbMywgNCwgNiwgOF0gbWVhbnMgdGhhdCBJbmRleGVkRGF0YUNvbnRhaW5lciBpcyBnb2luZyB0byBoYXZlXG4gKiA0IHJvd3MgYW5kIHJvdygyKSBwb2ludHMgdG8gNnRoIHJvdyBpbiB0aGUgcmVmZXJlbmNlZCBkYXRhIGNvbnRhaW5lci5cbiAqL1xuZXhwb3J0IGNsYXNzIEluZGV4ZWREYXRhQ29udGFpbmVyIGltcGxlbWVudHMgRGF0YUNvbnRhaW5lckludGVyZmFjZSB7XG4gIF9wYXJlbnREYXRhQ29udGFpbmVyOiBEYXRhQ29udGFpbmVySW50ZXJmYWNlO1xuICBfaW5kaWNlczogbnVtYmVyW107XG5cbiAgY29uc3RydWN0b3IocGFyZW50RGF0YUNvbnRhaW5lcjogRGF0YUNvbnRhaW5lckludGVyZmFjZSwgaW5kaWNlczogbnVtYmVyW10pIHtcbiAgICB0aGlzLl9wYXJlbnREYXRhQ29udGFpbmVyID0gcGFyZW50RGF0YUNvbnRhaW5lcjtcbiAgICB0aGlzLl9pbmRpY2VzID0gaW5kaWNlcztcbiAgfVxuXG4gIG51bVJvd3MoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5faW5kaWNlcy5sZW5ndGg7XG4gIH1cblxuICBudW1Db2x1bW5zKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX3BhcmVudERhdGFDb250YWluZXIubnVtQ29sdW1ucygpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbWFwcyBhIGxvY2FsIGluZGV4IHRvIGFuIGluZGV4IGluIHRoZSBwYXJlbnQgZGF0YXNldFxuICAgKiBAcGFyYW0gcm93SW5kZXhcbiAgICogQHJldHVybnMgbnVtYmVyXG4gICAqL1xuICBfbWFwcGVkUm93SW5kZXgocm93SW5kZXg6IG51bWJlcik6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX2luZGljZXNbcm93SW5kZXhdO1xuICB9XG5cbiAgdmFsdWVBdChyb3dJbmRleDogbnVtYmVyLCBjb2x1bW5JbmRleDogbnVtYmVyKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5fcGFyZW50RGF0YUNvbnRhaW5lci52YWx1ZUF0KHRoaXMuX21hcHBlZFJvd0luZGV4KHJvd0luZGV4KSwgY29sdW1uSW5kZXgpO1xuICB9XG5cbiAgcm93KHJvd0luZGV4OiBudW1iZXIsIHNoYXJlZFJvdz86IFNoYXJlZFJvd09wdGlvbnMpOiBEYXRhUm93IHtcbiAgICByZXR1cm4gdGhpcy5fcGFyZW50RGF0YUNvbnRhaW5lci5yb3codGhpcy5fbWFwcGVkUm93SW5kZXgocm93SW5kZXgpLCBzaGFyZWRSb3cpO1xuICB9XG5cbiAgcm93QXNBcnJheShyb3dJbmRleDogbnVtYmVyKTogYW55W10ge1xuICAgIHJldHVybiB0aGlzLl9wYXJlbnREYXRhQ29udGFpbmVyLnJvd0FzQXJyYXkodGhpcy5fbWFwcGVkUm93SW5kZXgocm93SW5kZXgpKTtcbiAgfVxuXG4gIHJvd3Moc2hhcmVkUm93PzogU2hhcmVkUm93T3B0aW9ucykge1xuICAgIHJldHVybiByb3dzSXRlcmF0b3IodGhpcy5fcGFyZW50RGF0YUNvbnRhaW5lciwgdGhpcy5faW5kaWNlcywgc2hhcmVkUm93KTtcbiAgfVxuXG4gIGNvbHVtbihjb2x1bW5JbmRleDogbnVtYmVyKSB7XG4gICAgcmV0dXJuIGNvbHVtbkl0ZXJhdG9yKHRoaXMuX3BhcmVudERhdGFDb250YWluZXIsIHRoaXMuX2luZGljZXMsIGNvbHVtbkluZGV4KTtcbiAgfVxuXG4gIGdldFBsYWluSW5kZXgoKTogbnVtYmVyW10ge1xuICAgIHJldHVybiB0aGlzLl9pbmRpY2VzLm1hcCgoXywgaSkgPT4gaSk7XG4gIH1cblxuICBmbGF0dGVuRGF0YSgpOiBhbnlbXVtdIHtcbiAgICBjb25zdCB0U2hhcmVkUm93ID0gRGF0YVJvdy5jcmVhdGVTaGFyZWRSb3codHJ1ZSk7XG5cbiAgICByZXR1cm4gdGhpcy5faW5kaWNlcy5tYXAoKF8sIGkpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLnJvdyhpLCB0U2hhcmVkUm93KS52YWx1ZXMoKTtcbiAgICB9LCB0aGlzKTtcbiAgfVxuXG4gIG1hcDxUPihcbiAgICBmdW5jOiAocm93OiBEYXRhUm93LCBpbmRleDogbnVtYmVyKSA9PiBULFxuICAgIHNoYXJlZFJvdz86IFNoYXJlZFJvd09wdGlvbnMsXG4gICAgb3B0aW9uczogUmFuZ2VPcHRpb25zID0ge31cbiAgKTogVFtdIHtcbiAgICBjb25zdCB7c3RhcnQgPSAwLCBlbmQgPSB0aGlzLm51bVJvd3MoKX0gPSBvcHRpb25zO1xuICAgIGNvbnN0IGVuZFJvdyA9IE1hdGgubWluKHRoaXMubnVtUm93cygpLCBlbmQpO1xuXG4gICAgY29uc3QgdFNoYXJlZFJvdyA9IERhdGFSb3cuY3JlYXRlU2hhcmVkUm93KHNoYXJlZFJvdyk7XG5cbiAgICBjb25zdCBvdXQ6IFRbXSA9IFtdO1xuICAgIGZvciAobGV0IHJvd0luZGV4ID0gc3RhcnQ7IHJvd0luZGV4IDwgZW5kUm93OyArK3Jvd0luZGV4KSB7XG4gICAgICBjb25zdCByb3cgPSB0aGlzLnJvdyhyb3dJbmRleCwgdFNoYXJlZFJvdyk7XG4gICAgICBvdXQucHVzaChmdW5jKHJvdywgcm93SW5kZXgpKTtcbiAgICB9XG4gICAgcmV0dXJuIG91dDtcbiAgfVxuXG4gIG1hcEluZGV4PFQ+KFxuICAgIGZ1bmM6ICh7aW5kZXg6IG51bWJlcn0sIGRjOiBEYXRhQ29udGFpbmVySW50ZXJmYWNlKSA9PiBULFxuICAgIG9wdGlvbnM6IFJhbmdlT3B0aW9ucyA9IHt9XG4gICk6IFRbXSB7XG4gICAgY29uc3Qge3N0YXJ0ID0gMCwgZW5kID0gdGhpcy5udW1Sb3dzKCl9ID0gb3B0aW9ucztcbiAgICBjb25zdCBlbmRSb3cgPSBNYXRoLm1pbih0aGlzLm51bVJvd3MoKSwgZW5kKTtcblxuICAgIGNvbnN0IG91dDogVFtdID0gW107XG4gICAgZm9yIChsZXQgcm93SW5kZXggPSBzdGFydDsgcm93SW5kZXggPCBlbmRSb3c7ICsrcm93SW5kZXgpIHtcbiAgICAgIG91dC5wdXNoKGZ1bmMoe2luZGV4OiB0aGlzLl9tYXBwZWRSb3dJbmRleChyb3dJbmRleCl9LCB0aGlzLl9wYXJlbnREYXRhQ29udGFpbmVyKSk7XG4gICAgfVxuICAgIHJldHVybiBvdXQ7XG4gIH1cblxuICBmaW5kKFxuICAgIGZ1bmM6IChyb3c6IERhdGFSb3csIGluZGV4OiBudW1iZXIpID0+IGJvb2xlYW4sXG4gICAgc2hhcmVkUm93PzogU2hhcmVkUm93T3B0aW9uc1xuICApOiBEYXRhUm93IHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCB0U2hhcmVkUm93ID0gRGF0YVJvdy5jcmVhdGVTaGFyZWRSb3coc2hhcmVkUm93KTtcblxuICAgIGZvciAobGV0IHJvd0luZGV4ID0gMDsgcm93SW5kZXggPCB0aGlzLm51bVJvd3MoKTsgKytyb3dJbmRleCkge1xuICAgICAgY29uc3Qgcm93ID0gdGhpcy5yb3cocm93SW5kZXgsIHRTaGFyZWRSb3cpO1xuICAgICAgaWYgKGZ1bmMocm93LCByb3dJbmRleCkpIHtcbiAgICAgICAgcmV0dXJuIHJvdztcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIHJlZHVjZTxUPihcbiAgICBmdW5jOiAoYWNjOiBULCByb3c6IERhdGFSb3csIGluZGV4OiBudW1iZXIpID0+IFQsXG4gICAgaW5pdGlhbFZhbHVlOiBULFxuICAgIHNoYXJlZFJvdz86IFNoYXJlZFJvd09wdGlvbnNcbiAgKTogVCB7XG4gICAgY29uc3QgdFNoYXJlZFJvdyA9IERhdGFSb3cuY3JlYXRlU2hhcmVkUm93KHNoYXJlZFJvdyk7XG5cbiAgICBmb3IgKGxldCByb3dJbmRleCA9IDA7IHJvd0luZGV4IDwgdGhpcy5faW5kaWNlcy5sZW5ndGg7ICsrcm93SW5kZXgpIHtcbiAgICAgIGNvbnN0IHJvdyA9IHRoaXMucm93KHJvd0luZGV4LCB0U2hhcmVkUm93KTtcbiAgICAgIGluaXRpYWxWYWx1ZSA9IGZ1bmMoaW5pdGlhbFZhbHVlLCByb3csIHJvd0luZGV4KTtcbiAgICB9XG4gICAgcmV0dXJuIGluaXRpYWxWYWx1ZTtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUlBLElBQUFBLFFBQUEsR0FBQUMsT0FBQTtBQUFxRCxJQUFBQyxPQUFBLGdCQUFBQyxZQUFBLFlBQUFDLElBQUEsQ0FRM0NDLFlBQVk7RUFBQUMsUUFBQSxnQkFBQUgsWUFBQSxZQUFBQyxJQUFBLENBa0JaRyxjQUFjLEdBOUJ4QjtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBVUYsWUFBWUEsQ0FDcEJHLGFBQXFDLEVBQ3JDQyxPQUFpQixFQUNqQkMsU0FBMkI7RUFBQSxJQUFBQyxPQUFBLEVBQUFDLFFBQUEsRUFBQUMsY0FBQTtFQUFBLE9BQUFWLFlBQUEsWUFBQVcsSUFBQSxVQUFBQyxjQUFBQyxRQUFBO0lBQUEsa0JBQUFBLFFBQUEsQ0FBQUMsSUFBQSxHQUFBRCxRQUFBLENBQUFFLElBQUE7TUFBQTtRQUVyQlAsT0FBTyxHQUFHRixPQUFPLENBQUNVLE1BQU07UUFDckJQLFFBQVEsR0FBRyxDQUFDO01BQUE7UUFBQSxNQUFFQSxRQUFRLEdBQUdELE9BQU87VUFBQUssUUFBQSxDQUFBRSxJQUFBO1VBQUE7UUFBQTtRQUNqQ0wsY0FBYyxHQUFH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
@@ -0,0 +1,2 @@
1
+ export declare const flattenMessages: (nestedMessages: any, prefix?: string) => {};
2
+ export declare const mergeMessages: (defaultMessages: any, userMessages: any) => any;
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.mergeMessages = exports.flattenMessages = void 0;
8
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
9
+ var _utils = require("./utils");
10
+ var _console = _interopRequireDefault(require("global/console"));
11
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
12
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } // SPDX-License-Identifier: MIT
13
+ // Copyright contributors to the kepler.gl project
14
+ // Flat messages since react-intl does not seem to support nested structures
15
+ // Adapted from https://medium.com/siren-apparel-press/internationalization-and-localization-of-sirenapparel-eu-sirenapparel-us-and-sirenapparel-asia-ddee266066a2
16
+ var _flattenMessages = exports.flattenMessages = function flattenMessages(nestedMessages) {
17
+ var prefix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
18
+ return Object.keys(nestedMessages).reduce(function (messages, key) {
19
+ var value = nestedMessages[key];
20
+ var prefixedKey = prefix ? "".concat(prefix, ".").concat(key) : key;
21
+ if (typeof value === 'string') {
22
+ messages[prefixedKey] = value;
23
+ } else {
24
+ Object.assign(messages, _flattenMessages(value, prefixedKey));
25
+ }
26
+ return messages;
27
+ }, {});
28
+ };
29
+ var mergeMessages = exports.mergeMessages = function mergeMessages(defaultMessages, userMessages) {
30
+ if (!(0, _utils.isObject)(userMessages) || !(0, _utils.isObject)(userMessages.en)) {
31
+ _console["default"].error('message should be an object and contain at least the `en` translation. Read more at https://docs.kepler.gl/docs/api-reference/localization');
32
+ return defaultMessages;
33
+ }
34
+ var userEnFlat = _flattenMessages(userMessages.en);
35
+ return Object.keys(defaultMessages).reduce(function (acc, key) {
36
+ return _objectSpread(_objectSpread({}, acc), {}, (0, _defineProperty2["default"])({}, key, key === 'en' ? _objectSpread(_objectSpread({}, defaultMessages.en), userEnFlat) : _objectSpread(_objectSpread(_objectSpread({}, defaultMessages[key]), userEnFlat), _flattenMessages(userMessages[key] || {}))));
37
+ }, {});
38
+ };
39
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdXRpbHMiLCJyZXF1aXJlIiwiX2NvbnNvbGUiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0Iiwib3duS2V5cyIsImUiLCJyIiwidCIsIk9iamVjdCIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJvIiwiZmlsdGVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZW51bWVyYWJsZSIsInB1c2giLCJhcHBseSIsIl9vYmplY3RTcHJlYWQiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5MiIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiZGVmaW5lUHJvcGVydHkiLCJmbGF0dGVuTWVzc2FnZXMiLCJleHBvcnRzIiwibmVzdGVkTWVzc2FnZXMiLCJwcmVmaXgiLCJ1bmRlZmluZWQiLCJyZWR1Y2UiLCJtZXNzYWdlcyIsImtleSIsInZhbHVlIiwicHJlZml4ZWRLZXkiLCJjb25jYXQiLCJhc3NpZ24iLCJtZXJnZU1lc3NhZ2VzIiwiZGVmYXVsdE1lc3NhZ2VzIiwidXNlck1lc3NhZ2VzIiwiaXNPYmplY3QiLCJlbiIsIkNvbnNvbGUiLCJlcnJvciIsInVzZXJFbkZsYXQiLCJhY2MiXSwic291cmNlcyI6WyIuLi9zcmMvbG9jYWxlLXV0aWxzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCB7aXNPYmplY3R9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IENvbnNvbGUgZnJvbSAnZ2xvYmFsL2NvbnNvbGUnO1xuXG4vLyBGbGF0IG1lc3NhZ2VzIHNpbmNlIHJlYWN0LWludGwgZG9lcyBub3Qgc2VlbSB0byBzdXBwb3J0IG5lc3RlZCBzdHJ1Y3R1cmVzXG4vLyBBZGFwdGVkIGZyb20gaHR0cHM6Ly9tZWRpdW0uY29tL3NpcmVuLWFwcGFyZWwtcHJlc3MvaW50ZXJuYXRpb25hbGl6YXRpb24tYW5kLWxvY2FsaXphdGlvbi1vZi1zaXJlbmFwcGFyZWwtZXUtc2lyZW5hcHBhcmVsLXVzLWFuZC1zaXJlbmFwcGFyZWwtYXNpYS1kZGVlMjY2MDY2YTJcbmV4cG9ydCBjb25zdCBmbGF0dGVuTWVzc2FnZXMgPSAobmVzdGVkTWVzc2FnZXMsIHByZWZpeCA9ICcnKSA9PiB7XG4gIHJldHVybiBPYmplY3Qua2V5cyhuZXN0ZWRNZXNzYWdlcykucmVkdWNlKChtZXNzYWdlcywga2V5KSA9PiB7XG4gICAgY29uc3QgdmFsdWUgPSBuZXN0ZWRNZXNzYWdlc1trZXldO1xuICAgIGNvbnN0IHByZWZpeGVkS2V5ID0gcHJlZml4ID8gYCR7cHJlZml4fS4ke2tleX1gIDoga2V5O1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICBtZXNzYWdlc1twcmVmaXhlZEtleV0gPSB2YWx1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgT2JqZWN0LmFzc2lnbihtZXNzYWdlcywgZmxhdHRlbk1lc3NhZ2VzKHZhbHVlLCBwcmVmaXhlZEtleSkpO1xuICAgIH1cbiAgICByZXR1cm4gbWVzc2FnZXM7XG4gIH0sIHt9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBtZXJnZU1lc3NhZ2VzID0gKGRlZmF1bHRNZXNzYWdlcywgdXNlck1lc3NhZ2VzKSA9PiB7XG4gIGlmICghaXNPYmplY3QodXNlck1lc3NhZ2VzKSB8fCAhaXNPYmplY3QodXNlck1lc3NhZ2VzLmVuKSkge1xuICAgIENvbnNvbGUuZXJyb3IoXG4gICAgICAnbWVzc2FnZSBzaG91bGQgYmUgYW4gb2JqZWN0IGFuZCBjb250YWluIGF0IGxlYXN0IHRoZSBgZW5gIHRyYW5zbGF0aW9uLiBSZWFkIG1vcmUgYXQgaHR0cHM6Ly9kb2NzLmtlcGxlci5nbC9kb2NzL2FwaS1yZWZlcmVuY2UvbG9jYWxpemF0aW9uJ1xuICAgICk7XG5cbiAgICByZXR1cm4gZGVmYXVsdE1lc3NhZ2VzO1xuICB9XG5cbiAgY29uc3QgdXNlckVuRmxhdCA9IGZsYXR0ZW5NZXNzYWdlcyh1c2VyTWVzc2FnZXMuZW4pO1xuICByZXR1cm4gT2JqZWN0LmtleXMoZGVmYXVsdE1lc3NhZ2VzKS5yZWR1Y2UoXG4gICAgKGFjYywga2V5KSA9PiAoe1xuICAgICAgLi4uYWNjLFxuICAgICAgW2tleV06XG4gICAgICAgIGtleSA9PT0gJ2VuJ1xuICAgICAgICAgID8gey4uLmRlZmF1bHRNZXNzYWdlcy5lbiwgLi4udXNlckVuRmxhdH1cbiAgICAgICAgICA6IHsuLi5kZWZhdWx0TWVzc2FnZXNba2V5XSwgLi4udXNlckVuRmxhdCwgLi4uZmxhdHRlbk1lc3NhZ2VzKHVzZXJNZXNzYWdlc1trZXldIHx8IHt9KX1cbiAgICB9KSxcbiAgICB7fVxuICApO1xufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFHQSxJQUFBQSxNQUFBLEdBQUFDLE9BQUE7QUFDQSxJQUFBQyxRQUFBLEdBQUFDLHNCQUFBLENBQUFGLE9BQUE7QUFBcUMsU0FBQUcsUUFBQUMsQ0FBQSxFQUFBQyxDQUFBLFFBQUFDLENBQUEsR0FBQUMsTUFBQSxDQUFBQyxJQUFBLENBQUFKLENBQUEsT0FBQUcsTUFBQSxDQUFBRSxxQkFBQSxRQUFBQyxDQUFBLEdBQUFILE1BQUEsQ0FBQUUscUJBQUEsQ0FBQUwsQ0FBQSxHQUFBQyxDQUFBLEtBQUFLLENBQUEsR0FBQUEsQ0FBQSxDQUFBQyxNQUFBLFdBQUFOLENBQUEsV0FBQUUsTUFBQSxDQUFBSyx3QkFBQSxDQUFBUixDQUFBLEVBQUFDLENBQUEsRUFBQVEsVUFBQSxPQUFBUCxDQUFBLENBQUFRLElBQUEsQ0FBQUMsS0FBQSxDQUFBVCxDQUFBLEVBQUFJLENBQUEsWUFBQUosQ0FBQTtBQUFBLFNBQUFVLGNBQUFaLENBQUEsYUFBQUMsQ0FBQSxNQUFBQSxDQUFBLEdBQUFZLFNBQUEsQ0FBQUMsTUFBQSxFQUFBYixDQUFBLFVBQUFDLENBQUEsV0FBQVcsU0FBQSxDQUFBWixDQUFBLElBQUFZLFNB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
@@ -0,0 +1 @@
1
+ export declare function isValidMapInfo(mapInfo: any): any;
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.isValidMapInfo = isValidMapInfo;
7
+ var _constants = require("@kepler.gl/constants");
8
+ // SPDX-License-Identifier: MIT
9
+ // Copyright contributors to the kepler.gl project
10
+
11
+ function isValidMapInfo(mapInfo) {
12
+ return mapInfo.title.length && mapInfo.title.length <= _constants.MAP_INFO_CHARACTER.title && (!mapInfo.description.length || mapInfo.description.length <= _constants.MAP_INFO_CHARACTER.description);
13
+ }
14
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY29uc3RhbnRzIiwicmVxdWlyZSIsImlzVmFsaWRNYXBJbmZvIiwibWFwSW5mbyIsInRpdGxlIiwibGVuZ3RoIiwiTUFQX0lORk9fQ0hBUkFDVEVSIiwiZGVzY3JpcHRpb24iXSwic291cmNlcyI6WyIuLi9zcmMvbWFwLWluZm8tdXRpbHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IHtNQVBfSU5GT19DSEFSQUNURVJ9IGZyb20gJ0BrZXBsZXIuZ2wvY29uc3RhbnRzJztcblxuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWRNYXBJbmZvKG1hcEluZm8pIHtcbiAgcmV0dXJuIChcbiAgICBtYXBJbmZvLnRpdGxlLmxlbmd0aCAmJlxuICAgIG1hcEluZm8udGl0bGUubGVuZ3RoIDw9IE1BUF9JTkZPX0NIQVJBQ1RFUi50aXRsZSAmJlxuICAgICghbWFwSW5mby5kZXNjcmlwdGlvbi5sZW5ndGggfHwgbWFwSW5mby5kZXNjcmlwdGlvbi5sZW5ndGggPD0gTUFQX0lORk9fQ0hBUkFDVEVSLmRlc2NyaXB0aW9uKVxuICApO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFHQSxJQUFBQSxVQUFBLEdBQUFDLE9BQUE7QUFIQTtBQUNBOztBQUlPLFNBQVNDLGNBQWNBLENBQUNDLE9BQU8sRUFBRTtFQUN0QyxPQUNFQSxPQUFPLENBQUNDLEtBQUssQ0FBQ0MsTUFBTSxJQUNwQkYsT0FBTyxDQUFDQyxLQUFLLENBQUNDLE1BQU0sSUFBSUMsNkJBQWtCLENBQUNGLEtBQUssS0FDL0MsQ0FBQ0QsT0FBTyxDQUFDSSxXQUFXLENBQUNGLE1BQU0sSUFBSUYsT0FBTyxDQUFDSSxXQUFXLENBQUNGLE1BQU0sSUFBSUMsNkJBQWtCLENBQUNDLFdBQVcsQ0FBQztBQUVqRyIsImlnbm9yZUxpc3QiOltdfQ==
@@ -0,0 +1,57 @@
1
+ /// <reference types="lodash" />
2
+ import { BaseMapStyle, LayerGroup, MapState } from '@kepler.gl/types';
3
+ export declare function getDefaultLayerGroupVisibility({ layerGroups }: {
4
+ layerGroups: LayerGroup[];
5
+ }): {};
6
+ /**
7
+ * Edit preset map style to keep only visible layers
8
+ *
9
+ * @param mapStyle - preset map style
10
+ * @param visibleLayerGroups - visible layers of top map
11
+ * @returns top map style
12
+ */
13
+ export declare const editTopMapStyle: (({ mapStyle, visibleLayerGroups }: {
14
+ id?: string | undefined;
15
+ mapStyle: BaseMapStyle;
16
+ visibleLayerGroups: false | {
17
+ [id: string]: boolean | LayerGroup;
18
+ };
19
+ }) => {
20
+ layers: any;
21
+ }) & import("lodash").MemoizedFunction;
22
+ /**
23
+ * Edit preset map style to filter out invisible layers
24
+ *
25
+ * @param {Object} mapStyle - preset map style
26
+ * @param {Object} visibleLayerGroups - visible layers of bottom map
27
+ * @returns {Object} bottom map style
28
+ */
29
+ export declare const editBottomMapStyle: (({ id, mapStyle, visibleLayerGroups }: any) => any) & import("lodash").MemoizedFunction;
30
+ export declare function getStyleDownloadUrl(styleUrl: any, accessToken: any, mapboxApiUrl: any): any;
31
+ /**
32
+ * Generate static map image from style Url to be used as icon
33
+ * @param param
34
+ * @param param.styleUrl
35
+ * @param param.mapboxApiAccessToken
36
+ * @param param.mapboxApiUrl
37
+ * @param param.mapState
38
+ * @param param.mapW
39
+ * @param param.mapH
40
+ */
41
+ export declare function getStyleImageIcon({ styleUrl, mapboxApiAccessToken, mapboxApiUrl, mapState, mapW, mapH }: {
42
+ styleUrl: string;
43
+ mapboxApiAccessToken: string;
44
+ mapboxApiUrl?: string;
45
+ mapState?: Partial<MapState>;
46
+ mapW?: number;
47
+ mapH?: number;
48
+ }): string;
49
+ export declare function scaleMapStyleByResolution(mapboxStyle: any, scale: any): any;
50
+ /**
51
+ * When switch to a new style, try to keep current layer group visibility
52
+ * by merging default and current
53
+ * @param {Object} defaultLayerGroup
54
+ * @param {Object} currentLayerGroup
55
+ * @return {Object} mergedLayerGroups
56
+ */
57
+ export declare function mergeLayerGroupVisibility(defaultLayerGroup: any, currentLayerGroup: any): any;
@@ -0,0 +1,188 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.editTopMapStyle = exports.editBottomMapStyle = void 0;
8
+ exports.getDefaultLayerGroupVisibility = getDefaultLayerGroupVisibility;
9
+ exports.getStyleDownloadUrl = getStyleDownloadUrl;
10
+ exports.getStyleImageIcon = getStyleImageIcon;
11
+ exports.mergeLayerGroupVisibility = mergeLayerGroupVisibility;
12
+ exports.scaleMapStyleByResolution = scaleMapStyleByResolution;
13
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
14
+ var _lodash = _interopRequireDefault(require("lodash.memoize"));
15
+ var _lodash2 = _interopRequireDefault(require("lodash.clonedeep"));
16
+ var _constants = require("@kepler.gl/constants");
17
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
18
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } // SPDX-License-Identifier: MIT
19
+ // Copyright contributors to the kepler.gl project
20
+ function getDefaultLayerGroupVisibility(_ref) {
21
+ var _ref$layerGroups = _ref.layerGroups,
22
+ layerGroups = _ref$layerGroups === void 0 ? [] : _ref$layerGroups;
23
+ return layerGroups.reduce(function (accu, layer) {
24
+ return _objectSpread(_objectSpread({}, accu), {}, (0, _defineProperty2["default"])({}, layer.slug, layer.defaultVisibility));
25
+ }, {});
26
+ }
27
+ var resolver = function resolver(_ref2) {
28
+ var id = _ref2.id,
29
+ _ref2$visibleLayerGro = _ref2.visibleLayerGroups,
30
+ visibleLayerGroups = _ref2$visibleLayerGro === void 0 ? {} : _ref2$visibleLayerGro;
31
+ return "".concat(id, ":").concat(Object.keys(visibleLayerGroups).filter(function (d) {
32
+ return visibleLayerGroups[d];
33
+ }).sort().join('-'));
34
+ };
35
+
36
+ /**
37
+ * Edit preset map style to keep only visible layers
38
+ *
39
+ * @param mapStyle - preset map style
40
+ * @param visibleLayerGroups - visible layers of top map
41
+ * @returns top map style
42
+ */
43
+ var editTopMapStyle = exports.editTopMapStyle = (0, _lodash["default"])(function (_ref3) {
44
+ var mapStyle = _ref3.mapStyle,
45
+ visibleLayerGroups = _ref3.visibleLayerGroups;
46
+ var visibleFilters = (mapStyle.layerGroups || []).filter(function (lg) {
47
+ return visibleLayerGroups[lg.slug];
48
+ }).map(function (lg) {
49
+ return lg.filter;
50
+ });
51
+
52
+ // if top map
53
+ // keep only visible layers
54
+ // @ts-expect-error
55
+ var filteredLayers = mapStyle.style.layers.filter(function (layer) {
56
+ return visibleFilters.some(function (match) {
57
+ return match(layer);
58
+ });
59
+ });
60
+ return _objectSpread(_objectSpread({}, mapStyle.style), {}, {
61
+ layers: filteredLayers
62
+ });
63
+ }, resolver);
64
+
65
+ /**
66
+ * Edit preset map style to filter out invisible layers
67
+ *
68
+ * @param {Object} mapStyle - preset map style
69
+ * @param {Object} visibleLayerGroups - visible layers of bottom map
70
+ * @returns {Object} bottom map style
71
+ */
72
+ var editBottomMapStyle = exports.editBottomMapStyle = (0, _lodash["default"])(function (_ref4) {
73
+ var id = _ref4.id,
74
+ mapStyle = _ref4.mapStyle,
75
+ visibleLayerGroups = _ref4.visibleLayerGroups;
76
+ if (id === _constants.NO_MAP_ID) {
77
+ return _constants.EMPTY_MAPBOX_STYLE;
78
+ }
79
+ var invisibleFilters = (mapStyle.layerGroups || []).filter(function (lg) {
80
+ return !visibleLayerGroups[lg.slug];
81
+ }).map(function (lg) {
82
+ return lg.filter;
83
+ });
84
+
85
+ // if bottom map
86
+ // filter out invisible layers
87
+ var filteredLayers = mapStyle.style.layers.filter(function (layer) {
88
+ return invisibleFilters.every(function (match) {
89
+ return !match(layer);
90
+ });
91
+ });
92
+ return _objectSpread(_objectSpread({}, mapStyle.style), {}, {
93
+ layers: filteredLayers
94
+ });
95
+ }, resolver);
96
+ function getStyleDownloadUrl(styleUrl, accessToken, mapboxApiUrl) {
97
+ if (styleUrl.startsWith('http')) {
98
+ return styleUrl;
99
+ }
100
+
101
+ // mapbox://styles/jckr/cjhcl0lxv13di2rpfoytdbdyj
102
+ if (styleUrl.startsWith('mapbox://styles')) {
103
+ var styleId = styleUrl.replace('mapbox://styles/', '');
104
+
105
+ // https://api.mapbox.com/styles/v1/heshan0131/cjg1bfumo1cwm2rlrjxkinfgw?pluginName=Keplergl&access_token=<token>
106
+ return "".concat(mapboxApiUrl || _constants.DEFAULT_MAPBOX_API_URL, "/styles/v1/").concat(styleId, "?pluginName=Keplergl&access_token=").concat(accessToken);
107
+ }
108
+
109
+ // style url not recognized
110
+ return null;
111
+ }
112
+
113
+ /**
114
+ * Generate static map image from style Url to be used as icon
115
+ * @param param
116
+ * @param param.styleUrl
117
+ * @param param.mapboxApiAccessToken
118
+ * @param param.mapboxApiUrl
119
+ * @param param.mapState
120
+ * @param param.mapW
121
+ * @param param.mapH
122
+ */
123
+ function getStyleImageIcon(_ref5) {
124
+ var styleUrl = _ref5.styleUrl,
125
+ mapboxApiAccessToken = _ref5.mapboxApiAccessToken,
126
+ _ref5$mapboxApiUrl = _ref5.mapboxApiUrl,
127
+ mapboxApiUrl = _ref5$mapboxApiUrl === void 0 ? _constants.DEFAULT_MAPBOX_API_URL : _ref5$mapboxApiUrl,
128
+ _ref5$mapState = _ref5.mapState,
129
+ mapState = _ref5$mapState === void 0 ? {
130
+ longitude: -122.3391,
131
+ latitude: 37.7922,
132
+ zoom: 9
133
+ } : _ref5$mapState,
134
+ _ref5$mapW = _ref5.mapW,
135
+ mapW = _ref5$mapW === void 0 ? 400 : _ref5$mapW,
136
+ _ref5$mapH = _ref5.mapH,
137
+ mapH = _ref5$mapH === void 0 ? 300 : _ref5$mapH;
138
+ var styleId = styleUrl.replace('mapbox://styles/', '');
139
+ return "".concat(mapboxApiUrl, "/styles/v1/").concat(styleId, "/static/") + "".concat(mapState.longitude, ",").concat(mapState.latitude, ",").concat(mapState.zoom, ",0,0/") + "".concat(mapW, "x").concat(mapH) + "?access_token=".concat(mapboxApiAccessToken, "&logo=false&attribution=false");
140
+ }
141
+ function scaleMapStyleByResolution(mapboxStyle, scale) {
142
+ if (scale !== 1 && mapboxStyle) {
143
+ var labelLayerGroup = _constants.DEFAULT_LAYER_GROUPS.find(function (lg) {
144
+ return lg.slug === 'label';
145
+ });
146
+ // @ts-ignore
147
+ var labelLayerFilter = labelLayerGroup.filter;
148
+ var zoomOffset = Math.log2(scale);
149
+ var copyStyle = (0, _lodash2["default"])(mapboxStyle);
150
+ (copyStyle.layers || []).forEach(function (d) {
151
+ // edit minzoom and maxzoom
152
+ if (d.maxzoom) {
153
+ d.maxzoom = Math.max(d.maxzoom + zoomOffset, 1);
154
+ }
155
+ if (d.minzoom) {
156
+ d.minzoom = Math.max(d.minzoom + zoomOffset, 1);
157
+ }
158
+
159
+ // edit text size
160
+ if (labelLayerFilter(d)) {
161
+ if (d.layout && d.layout['text-size'] && Array.isArray(d.layout['text-size'].stops)) {
162
+ d.layout['text-size'].stops.forEach(function (stop) {
163
+ // zoom
164
+ stop[0] = Math.max(stop[0] + zoomOffset, 1);
165
+ // size
166
+ stop[1] *= scale;
167
+ });
168
+ }
169
+ }
170
+ });
171
+ return copyStyle;
172
+ }
173
+ return mapboxStyle;
174
+ }
175
+
176
+ /**
177
+ * When switch to a new style, try to keep current layer group visibility
178
+ * by merging default and current
179
+ * @param {Object} defaultLayerGroup
180
+ * @param {Object} currentLayerGroup
181
+ * @return {Object} mergedLayerGroups
182
+ */
183
+ function mergeLayerGroupVisibility(defaultLayerGroup, currentLayerGroup) {
184
+ return Object.keys(defaultLayerGroup).reduce(function (accu, key) {
185
+ return _objectSpread(_objectSpread({}, accu), Object.prototype.hasOwnProperty.call(currentLayerGroup, key) ? (0, _defineProperty2["default"])({}, key, currentLayerGroup[key]) : {});
186
+ }, defaultLayerGroup);
187
+ }
188
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbG9kYXNoIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfbG9kYXNoMiIsIl9jb25zdGFudHMiLCJvd25LZXlzIiwiZSIsInIiLCJ0IiwiT2JqZWN0Iiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsIm8iLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJkZWZpbmVQcm9wZXJ0eSIsImdldERlZmF1bHRMYXllckdyb3VwVmlzaWJpbGl0eSIsIl9yZWYiLCJfcmVmJGxheWVyR3JvdXBzIiwibGF5ZXJHcm91cHMiLCJyZWR1Y2UiLCJhY2N1IiwibGF5ZXIiLCJzbHVnIiwiZGVmYXVsdFZpc2liaWxpdHkiLCJyZXNvbHZlciIsIl9yZWYyIiwiaWQiLCJfcmVmMiR2aXNpYmxlTGF5ZXJHcm8iLCJ2aXNpYmxlTGF5ZXJHcm91cHMiLCJjb25jYXQiLCJkIiwic29ydCIsImpvaW4iLCJlZGl0VG9wTWFwU3R5bGUiLCJleHBvcnRzIiwibWVtb2l6ZSIsIl9yZWYzIiwibWFwU3R5bGUiLCJ2aXNpYmxlRmlsdGVycyIsImxnIiwibWFwIiwiZmlsdGVyZWRMYXllcnMiLCJzdHlsZSIsImxheWVycyIsInNvbWUiLCJtYXRjaCIsImVkaXRCb3R0b21NYXBTdHlsZSIsIl9yZWY0IiwiTk9fTUFQX0lEIiwiRU1QVFlfTUFQQk9YX1NUWUxFIiwiaW52aXNpYmxlRmlsdGVycyIsImV2ZXJ5IiwiZ2V0U3R5bGVEb3dubG9hZFVybCIsInN0eWxlVXJsIiwiYWNjZXNzVG9rZW4iLCJtYXBib3hBcGlVcmwiLCJzdGFydHNXaXRoIiwic3R5bGVJZCIsInJlcGxhY2UiLCJERUZBVUxUX01BUEJPWF9BUElfVVJMIiwiZ2V0U3R5bGVJbWFnZUljb24iLCJfcmVmNSIsIm1hcGJveEFwaUFjY2Vzc1Rva2VuIiwiX3JlZjUkbWFwYm94QXBpVXJsIiwiX3JlZjUkbWFwU3RhdGUiLCJtYXBTdGF0ZSIsImxvbmdpdHVkZSIsImxhdGl0dWRlIiwiem9vbSIsIl9yZWY1JG1hcFciLCJtYXBXIiwiX3JlZjUkbWFwSCIsIm1hcEgiLCJzY2FsZU1hcFN0eWxlQnlSZXNvbHV0aW9uIiwibWFwYm94U3R5bGUiLCJzY2FsZSIsImxhYmVsTGF5ZXJHcm91cCIsIkRFRkFVTFRfTEFZRVJfR1JPVVBTIiwiZmluZCIsImxhYmVsTGF5ZXJGaWx0ZXIiLCJ6b29tT2Zmc2V0IiwiTWF0aCIsImxvZzIiLCJjb3B5U3R5bGUiLCJjbG9uZERlZXAiLCJtYXh6b29tIiwibWF4IiwibWluem9vbSIsImxheW91dCIsIkFycmF5IiwiaXNBcnJheSIsInN0b3BzIiwic3RvcCIsIm1lcmdlTGF5ZXJHcm91cFZpc2liaWxpdHkiLCJkZWZhdWx0TGF5ZXJHcm91cCIsImN1cnJlbnRMYXllckdyb3VwIiwia2V5IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL21hcC1zdHlsZS11dGlscy9tYXBib3gtZ2wtc3R5bGUtZWRpdG9yLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCBtZW1vaXplIGZyb20gJ2xvZGFzaC5tZW1vaXplJztcbmltcG9ydCBjbG9uZERlZXAgZnJvbSAnbG9kYXNoLmNsb25lZGVlcCc7XG5pbXBvcnQge1xuICBERUZBVUxUX0xBWUVSX0dST1VQUyxcbiAgREVGQVVMVF9NQVBCT1hfQVBJX1VSTCxcbiAgTk9fTUFQX0lELFxuICBFTVBUWV9NQVBCT1hfU1RZTEVcbn0gZnJvbSAnQGtlcGxlci5nbC9jb25zdGFudHMnO1xuaW1wb3J0IHtCYXNlTWFwU3R5bGUsIExheWVyR3JvdXAsIE1hcFN0YXRlfSBmcm9tICdAa2VwbGVyLmdsL3R5cGVzJztcblxuZXhwb3J0IGZ1bmN0aW9uIGdldERlZmF1bHRMYXllckdyb3VwVmlzaWJpbGl0eSh7bGF5ZXJHcm91cHMgPSBbXX06IHtsYXllckdyb3VwczogTGF5ZXJHcm91cFtdfSkge1xuICByZXR1cm4gbGF5ZXJHcm91cHMucmVkdWNlKFxuICAgIChhY2N1LCBsYXllcikgPT4gKHtcbiAgICAgIC4uLmFjY3UsXG4gICAgICBbbGF5ZXIuc2x1Z106IGxheWVyLmRlZmF1bHRWaXNpYmlsaXR5XG4gICAgfSksXG4gICAge31cbiAgKTtcbn1cblxuY29uc3QgcmVzb2x2ZXIgPSAoe1xuICBpZCxcbiAgdmlzaWJsZUxheWVyR3JvdXBzID0ge31cbn06IHtcbiAgaWQ/OiBzdHJpbmc7XG4gIG1hcFN0eWxlOiBCYXNlTWFwU3R5bGU7XG4gIHZpc2libGVMYXllckdyb3Vwczoge1tpZDogc3RyaW5nXTogTGF5ZXJHcm91cCB8IGJvb2xlYW59IHwgZmFsc2U7XG59KSA9PlxuICBgJHtpZH06JHtPYmplY3Qua2V5cyh2aXNpYmxlTGF5ZXJHcm91cHMpXG4gICAgLmZpbHRlcihkID0+IHZpc2libGVMYXllckdyb3Vwc1tkXSlcbiAgICAuc29ydCgpXG4gICAgLmpvaW4oJy0nKX1gO1xuXG4vKipcbiAqIEVkaXQgcHJlc2V0IG1hcCBzdHlsZSB0byBrZWVwIG9ubHkgdmlzaWJsZSBsYXllcnNcbiAqXG4gKiBAcGFyYW0gbWFwU3R5bGUgLSBwcmVzZXQgbWFwIHN0eWxlXG4gKiBAcGFyYW0gdmlzaWJsZUxheWVyR3JvdXBzIC0gdmlzaWJsZSBsYXllcnMgb2YgdG9wIG1hcFxuICogQHJldHVybnMgdG9wIG1hcCBzdHlsZVxuICovXG5leHBvcnQgY29uc3QgZWRpdFRvcE1hcFN0eWxlID0gbWVtb2l6ZShcbiAgKHtcbiAgICBtYXBTdHlsZSxcbiAgICB2aXNpYmxlTGF5ZXJHcm91cHNcbiAgfToge1xuICAgIGlkPzogc3RyaW5nO1xuICAgIG1hcFN0eWxlOiBCYXNlTWFwU3R5bGU7XG4gICAgdmlzaWJsZUxheWVyR3JvdXBzOiB7W2lkOiBzdHJpbmddOiBMYXllckdyb3VwIHwgYm9vbGVhbn0gfCBmYWxzZTtcbiAgfSkgPT4ge1xuICAgIGNvbnN0IHZpc2libGVGaWx0ZXJzID0gKG1hcFN0eWxlLmxheWVyR3JvdXBzIHx8IFtdKVxuICAgICAgLmZpbHRlcihsZyA9PiB2aXNpYmxlTGF5ZXJHcm91cHNbbGcuc2x1Z10pXG4gICAgICAubWFwKGxnID0+IGxnLmZpbHRlcik7XG5cbiAgICAvLyBpZiB0b3AgbWFwXG4gICAgLy8ga2VlcCBvbmx5IHZpc2libGUgbGF5ZXJzXG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvclxuICAgIGNvbnN0IGZpbHRlcmVkTGF5ZXJzID0gbWFwU3R5bGUuc3R5bGUubGF5ZXJzLmZpbHRlcihsYXllciA9PlxuICAgICAgdmlzaWJsZUZpbHRlcnMuc29tZShtYXRjaCA9PiBtYXRjaChsYXllcikpXG4gICAgKTtcblxuICAgIHJldHVybiB7XG4gICAgICAuLi5tYXBTdHlsZS5zdHlsZSxcbiAgICAgIGxheWVyczogZmlsdGVyZWRMYXllcnNcbiAgICB9O1xuICB9LFxuICByZXNvbHZlclxuKTtcblxuLyoqXG4gKiBFZGl0IHByZXNldCBtYXAgc3R5bGUgdG8gZmlsdGVyIG91dCBpbnZpc2libGUgbGF5ZXJzXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IG1hcFN0eWxlIC0gcHJlc2V0IG1hcCBzdHlsZVxuICogQHBhcmFtIHtPYmplY3R9IHZpc2libGVMYXllckdyb3VwcyAtIHZpc2libGUgbGF5ZXJzIG9mIGJvdHRvbSBtYXBcbiAqIEByZXR1cm5zIHtPYmplY3R9IGJvdHRvbSBtYXAgc3R5bGVcbiAqL1xuZXhwb3J0IGNvbnN0IGVkaXRCb3R0b21NYXBTdHlsZSA9IG1lbW9pemUoKHtpZCwgbWFwU3R5bGUsIHZpc2libGVMYXllckdyb3Vwc30pID0+IHtcbiAgaWYgKGlkID09PSBOT19NQVBfSUQpIHtcbiAgICByZXR1cm4gRU1QVFlfTUFQQk9YX1NUWUxFO1xuICB9XG5cbiAgY29uc3QgaW52aXNpYmxlRmlsdGVycyA9IChtYXBTdHlsZS5sYXllckdyb3VwcyB8fCBbXSlcbiAgICAuZmlsdGVyKGxnID0+ICF2aXNpYmxlTGF5ZXJHcm91cHNbbGcuc2x1Z10pXG4gICAgLm1hcChsZyA9PiBsZy5maWx0ZXIpO1xuXG4gIC8vIGlmIGJvdHRvbSBtYXBcbiAgLy8gZmlsdGVyIG91dCBpbnZpc2libGUgbGF5ZXJzXG4gIGNvbnN0IGZpbHRlcmVkTGF5ZXJzID0gbWFwU3R5bGUuc3R5bGUubGF5ZXJzLmZpbHRlcihsYXllciA9PlxuICAgIGludmlzaWJsZUZpbHRlcnMuZXZlcnkobWF0Y2ggPT4gIW1hdGNoKGxheWVyKSlcbiAgKTtcblxuICByZXR1cm4ge1xuICAgIC4uLm1hcFN0eWxlLnN0eWxlLFxuICAgIGxheWVyczogZmlsdGVyZWRMYXllcnNcbiAgfTtcbn0sIHJlc29sdmVyKTtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldFN0eWxlRG93bmxvYWRVcmwoc3R5bGVVcmwsIGFjY2Vzc1Rva2VuLCBtYXBib3hBcGlVcmwpIHtcbiAgaWYgKHN0eWxlVXJsLnN0YXJ0c1dpdGgoJ2h0dHAnKSkge1xuICAgIHJldHVybiBzdHlsZVVybDtcbiAgfVxuXG4gIC8vIG1hcGJveDovL3N0eWxlcy9qY2tyL2NqaGNsMGx4djEzZGkycnBmb3l0ZGJkeWpcbiAgaWYgKHN0eWxlVXJsLnN0YXJ0c1dpdGgoJ21hcGJveDovL3N0eWxlcycpKSB7XG4gICAgY29uc3Qgc3R5bGVJZCA9IHN0eWxlVXJsLnJlcGxhY2UoJ21hcGJveDovL3N0eWxlcy8nLCAnJyk7XG5cbiAgICAvLyBodHRwczovL2FwaS5tYXBib3guY29tL3N0eWxlcy92MS9oZXNoYW4wMTMxL2NqZzFiZnVtbzFjd20ycmxyanhraW5mZ3c/cGx1Z2luTmFtZT1LZXBsZXJnbCZhY2Nlc3NfdG9rZW49PHRva2VuPlxuICAgIHJldHVybiBgJHtcbiAgICAgIG1hcGJveEFwaVVybCB8fCBERUZBVUxUX01BUEJPWF9BUElfVVJMXG4gICAgfS9zdHlsZXMvdjEvJHtzdHlsZUlkfT9wbHVnaW5OYW1lPUtlcGxlcmdsJmFjY2Vzc190b2tlbj0ke2FjY2Vzc1Rva2VufWA7XG4gIH1cblxuICAvLyBzdHlsZSB1cmwgbm90IHJlY29nbml6ZWRcbiAgcmV0dXJuIG51bGw7XG59XG5cbi8qKlxuICogR2VuZXJhdGUgc3RhdGljIG1hcCBpbWFnZSBmcm9tIHN0eWxlIFVybCB0byBiZSB1c2VkIGFzIGljb25cbiAqIEBwYXJhbSBwYXJhbVxuICogQHBhcmFtIHBhcmFtLnN0eWxlVXJsXG4gKiBAcGFyYW0gcGFyYW0ubWFwYm94QXBpQWNjZXNzVG9rZW5cbiAqIEBwYXJhbSBwYXJhbS5tYXBib3hBcGlVcmxcbiAqIEBwYXJhbSBwYXJhbS5tYXBTdGF0ZVxuICogQHBhcmFtIHBhcmFtLm1hcFdcbiAqIEBwYXJhbSBwYXJhbS5tYXBIXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRTdHlsZUltYWdlSWNvbih7XG4gIHN0eWxlVXJsLFxuICBtYXBib3hBcGlBY2Nlc3NUb2tlbixcbiAgbWFwYm94QXBpVXJsID0gREVGQVVMVF9NQVBCT1hfQVBJX1VSTCxcbiAgbWFwU3RhdGUgPSB7XG4gICAgbG9uZ2l0dWRlOiAtMTIyLjMzOTEsXG4gICAgbGF0aXR1ZGU6IDM3Ljc5MjIsXG4gICAgem9vbTogOVxuICB9LFxuICBtYXBXID0gNDAwLFxuICBtYXBIID0gMzAwXG59OiB7XG4gIHN0eWxlVXJsOiBzdHJpbmc7XG4gIG1hcGJveEFwaUFjY2Vzc1Rva2VuOiBzdHJpbmc7XG4gIG1hcGJveEFwaVVybD86IHN0cmluZztcbiAgbWFwU3RhdGU/OiBQYXJ0aWFsPE1hcFN0YXRlPjtcbiAgbWFwVz86IG51bWJlcjtcbiAgbWFwSD86IG51bWJlcjtcbn0pIHtcbiAgY29uc3Qgc3R5bGVJZCA9IHN0eWxlVXJsLnJlcGxhY2UoJ21hcGJveDovL3N0eWxlcy8nLCAnJyk7XG5cbiAgcmV0dXJuIChcbiAgICBgJHttYXBib3hBcGlVcmx9L3N0eWxlcy92MS8ke3N0eWxlSWR9L3N0YXRpYy9gICtcbiAgICBgJHttYXBTdGF0ZS5sb25naXR1ZGV9LCR7bWFwU3RhdGUubGF0aXR1ZGV9LCR7bWFwU3RhdGUuem9vbX0sMCwwL2AgK1xuICAgIGAke21hcFd9eCR7bWFwSH1gICtcbiAgICBgP2FjY2Vzc190b2tlbj0ke21hcGJveEFwaUFjY2Vzc1Rva2VufSZsb2dvPWZhbHNlJmF0dHJpYnV0aW9uPWZhbHNlYFxuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2NhbGVNYXBTdHlsZUJ5UmVzb2x1dGlvbihtYXBib3hTdHlsZSwgc2NhbGUpIHtcbiAgaWYgKHNjYWxlICE9PSAxICYmIG1hcGJveFN0eWxlKSB7XG4gICAgY29uc3QgbGFiZWxMYXllckdyb3VwID0gREVGQVVMVF9MQVlFUl9HUk9VUFMuZmluZChsZyA9PiBsZy5zbHVnID09PSAnbGFiZWwnKTtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgY29uc3Qge2ZpbHRlcjogbGFiZWxMYXllckZpbHRlcn0gPSBsYWJlbExheWVyR3JvdXA7XG4gICAgY29uc3Qgem9vbU9mZnNldCA9IE1hdGgubG9nMihzY2FsZSk7XG5cbiAgICBjb25zdCBjb3B5U3R5bGUgPSBjbG9uZERlZXAobWFwYm94U3R5bGUpO1xuICAgIChjb3B5U3R5bGUubGF5ZXJzIHx8IFtdKS5mb3JFYWNoKGQgPT4ge1xuICAgICAgLy8gZWRpdCBtaW56b29tIGFuZCBtYXh6b29tXG4gICAgICBpZiAoZC5tYXh6b29tKSB7XG4gICAgICAgIGQubWF4em9vbSA9IE1hdGgubWF4KGQubWF4em9vbSArIHpvb21PZmZzZXQsIDEpO1xuICAgICAgfVxuXG4gICAgICBpZiAoZC5taW56b29tKSB7XG4gICAgICAgIGQubWluem9vbSA9IE1hdGgubWF4KGQubWluem9vbSArIHpvb21PZmZzZXQsIDEpO1xuICAgICAgfVxuXG4gICAgICAvLyBlZGl0IHRleHQgc2l6ZVxuICAgICAgaWYgKGxhYmVsTGF5ZXJGaWx0ZXIoZCkpIHtcbiAgICAgICAgaWYgKGQubGF5b3V0ICYmIGQubGF5b3V0Wyd0ZXh0LXNpemUnXSAmJiBBcnJheS5pc0FycmF5KGQubGF5b3V0Wyd0ZXh0LXNpemUnXS5zdG9wcykpIHtcbiAgICAgICAgICBkLmxheW91dFsndGV4dC1zaXplJ10uc3RvcHMuZm9yRWFjaChzdG9wID0+IHtcbiAgICAgICAgICAgIC8vIHpvb21cbiAgICAgICAgICAgIHN0b3BbMF0gPSBNYXRoLm1heChzdG9wWzBdICsgem9vbU9mZnNldCwgMSk7XG4gICAgICAgICAgICAvLyBzaXplXG4gICAgICAgICAgICBzdG9wWzFdICo9IHNjYWxlO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gY29weVN0eWxlO1xuICB9XG5cbiAgcmV0dXJuIG1hcGJveFN0eWxlO1xufVxuXG4vKipcbiAqIFdoZW4gc3dpdGNoIHRvIGEgbmV3IHN0eWxlLCB0cnkgdG8ga2VlcCBjdXJyZW50IGxheWVyIGdyb3VwIHZpc2liaWxpdHlcbiAqIGJ5IG1lcmdpbmcgZGVmYXVsdCBhbmQgY3VycmVudFxuICogQHBhcmFtIHtPYmplY3R9IGRlZmF1bHRMYXllckdyb3VwXG4gKiBAcGFyYW0ge09iamVjdH0gY3VycmVudExheWVyR3JvdXBcbiAqIEByZXR1cm4ge09iamVjdH0gbWVyZ2VkTGF5ZXJHcm91cHNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1lcmdlTGF5ZXJHcm91cFZpc2liaWxpdHkoZGVmYXVsdExheWVyR3JvdXAsIGN1cnJlbnRMYXllckdyb3VwKSB7XG4gIHJldHVybiBPYmplY3Qua2V5cyhkZWZhdWx0TGF5ZXJHcm91cCkucmVkdWNlKFxuICAgIChhY2N1LCBrZXkpID0+ICh7XG4gICAgICAuLi5hY2N1LFxuICAgICAgLi4uKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChjdXJyZW50TGF5ZXJHcm91cCwga2V5KVxuICAgICAgICA/IHtba2V5XTogY3VycmVudExheWVyR3JvdXBba2V5XX1cbiAgICAgICAgOiB7fSlcbiAgICB9KSxcbiAgICBkZWZhdWx0TGF5ZXJHcm91cFxuICApO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBR0EsSUFBQUEsT0FBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsUUFBQSxHQUFBRixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUUsVUFBQSxHQUFBRixPQUFBO0FBSzhCLFNBQUFHLFFBQUFDLENBQUEsRUFBQUMsQ0FBQSxRQUFBQyxDQUFBLEdBQUFDLE1BQUEsQ0FBQUMsSUFBQSxDQUFBSixDQUFBLE9BQUFHLE1BQUEsQ0FBQUUscUJBQUEsUUFBQUMsQ0FBQSxHQUFBSCxNQUFBLENBQUFFLHFCQUFBLENBQUFMLENBQUEsR0FBQUMsQ0FBQSxLQUFBSyxDQUFBLEdBQUFBLENBQUEsQ0FBQUMsTUFBQSxXQUFBTixDQUFBLFdBQUFFLE1BQUEsQ0FBQUssd0JBQUEsQ0FBQVIsQ0FBQSxFQUFBQyxDQUFBLEVBQUFRLFVBQUEsT0FBQVAsQ0FBQSxDQUFBUSxJQUFBLENBQUFDLEtBQUEsQ0FBQVQsQ0FBQSxFQUFBSSxDQUFBLFlBQUFKLENBQUE7QUFBQSxTQUFBVSxjQUFBWixDQUFBLGFBQUFDLENBQUEsTUFBQUEsQ0FBQSxHQUFBWSxTQUFBLENBQUFDLE1BQUEsRUFBQWIsQ0FBQSxVQUFBQyxDQUFBLFdBQUFXLFNBQUEsQ0FBQVosQ0FBQSxJQUFBWSxTQUFBLENBQUFaLENBQUEsUUFBQUEsQ0FBQSxPQUFBRixPQUFBLENBQUFJLE1BQUEsQ0FBQUQsQ0FBQSxPQUFBYSxPQUFBLFdBQUFkLENBQUEsUUFBQWUsZ0JBQUEsYUFBQWhCLENBQUEsRUFBQUMsQ0FBQSxFQUFBQyxDQUFBLENBQUFELENBQUEsU0FBQUUsTUFBQSxDQUFBYyx5QkFBQSxHQUFBZCxNQUFBLENBQUFlLGdCQUFBLENBQUFsQixDQUFBLEVBQUFHLE1BQUEsQ0FBQWMseUJBQUEsQ0FBQWYsQ0FB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
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Determines whether a Map Style is using Mapbox Tiles
3
+ * @param {any} mapStyle the mapStyle to check
4
+ * @returns true if the style is using Mapbox tiles
5
+ */
6
+ export declare function isStyleUsingMapboxTiles(mapStyle: any): boolean;
7
+ /**
8
+ * Transform mapbox protocol so can be used with maplibre
9
+ * @param mapboxKey mapbox api key
10
+ * @returns transformed url
11
+ */
12
+ export declare const transformRequest: (mapboxKey: string) => (url: string, resourceType: string) => {
13
+ url: string;
14
+ };