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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (81) hide show
  1. package/dist/aggregation.d.ts +13 -0
  2. package/dist/aggregation.js +84 -0
  3. package/dist/application-config.d.ts +25 -0
  4. package/dist/application-config.js +52 -0
  5. package/dist/arrow-data-container.d.ts +62 -0
  6. package/dist/arrow-data-container.js +331 -0
  7. package/dist/color-utils.d.ts +108 -0
  8. package/dist/color-utils.js +443 -0
  9. package/dist/data-container-interface.d.ts +138 -0
  10. package/dist/data-container-interface.js +6 -0
  11. package/dist/data-container-utils.d.ts +30 -0
  12. package/dist/data-container-utils.js +74 -0
  13. package/dist/data-row.d.ts +59 -0
  14. package/dist/data-row.js +110 -0
  15. package/dist/data-scale-utils.d.ts +120 -0
  16. package/dist/data-scale-utils.js +340 -0
  17. package/dist/data-utils.d.ts +98 -0
  18. package/dist/data-utils.js +436 -0
  19. package/dist/dataset-utils.d.ts +45 -0
  20. package/dist/dataset-utils.js +313 -0
  21. package/dist/dom-to-image.d.ts +73 -0
  22. package/dist/dom-to-image.js +421 -0
  23. package/dist/dom-utils.d.ts +23 -0
  24. package/dist/dom-utils.js +349 -0
  25. package/dist/effect-utils.d.ts +24 -0
  26. package/dist/effect-utils.js +166 -0
  27. package/dist/export-map-html.d.ts +9 -0
  28. package/dist/export-map-html.js +25 -0
  29. package/dist/export-utils.d.ts +40 -0
  30. package/dist/export-utils.js +201 -0
  31. package/dist/filter-utils.d.ts +331 -0
  32. package/dist/filter-utils.js +1214 -0
  33. package/dist/format.d.ts +3 -0
  34. package/dist/format.js +38 -0
  35. package/dist/gl-utils.d.ts +1 -0
  36. package/dist/gl-utils.js +27 -0
  37. package/dist/index.d.ts +41 -0
  38. package/dist/index.js +941 -0
  39. package/dist/indexed-data-container.d.ts +34 -0
  40. package/dist/indexed-data-container.js +214 -0
  41. package/dist/locale-utils.d.ts +2 -0
  42. package/dist/locale-utils.js +39 -0
  43. package/dist/map-info-utils.d.ts +1 -0
  44. package/dist/map-info-utils.js +14 -0
  45. package/dist/map-style-utils/mapbox-gl-style-editor.d.ts +57 -0
  46. package/dist/map-style-utils/mapbox-gl-style-editor.js +188 -0
  47. package/dist/map-style-utils/mapbox-utils.d.ts +14 -0
  48. package/dist/map-style-utils/mapbox-utils.js +51 -0
  49. package/dist/map-utils.d.ts +9 -0
  50. package/dist/map-utils.js +48 -0
  51. package/dist/mapbox-utils.d.ts +7 -0
  52. package/dist/mapbox-utils.js +19 -0
  53. package/dist/noop.d.ts +1 -0
  54. package/dist/noop.js +13 -0
  55. package/dist/notifications-utils.d.ts +42 -0
  56. package/dist/notifications-utils.js +69 -0
  57. package/dist/observe-dimensions.d.ts +15 -0
  58. package/dist/observe-dimensions.js +130 -0
  59. package/dist/plot.d.ts +131 -0
  60. package/dist/plot.js +615 -0
  61. package/dist/position-utils.d.ts +6 -0
  62. package/dist/position-utils.js +26 -0
  63. package/dist/projection-utils.d.ts +22 -0
  64. package/dist/projection-utils.js +83 -0
  65. package/dist/quick-insertion-sort.d.ts +12 -0
  66. package/dist/quick-insertion-sort.js +132 -0
  67. package/dist/row-data-container.d.ts +31 -0
  68. package/dist/row-data-container.js +206 -0
  69. package/dist/searcher-utils.d.ts +1 -0
  70. package/dist/searcher-utils.js +25 -0
  71. package/dist/split-map-utils.d.ts +32 -0
  72. package/dist/split-map-utils.js +99 -0
  73. package/dist/strings.d.ts +4 -0
  74. package/dist/strings.js +16 -0
  75. package/dist/time.d.ts +54 -0
  76. package/dist/time.js +325 -0
  77. package/dist/types.d.ts +18 -0
  78. package/dist/types.js +6 -0
  79. package/dist/utils.d.ts +104 -0
  80. package/dist/utils.js +241 -0
  81. package/package.json +6 -5
@@ -0,0 +1,349 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.asArray = asArray;
8
+ exports.canvasToBlob = canvasToBlob;
9
+ exports.concatAndResolveUrl = concatAndResolveUrl;
10
+ exports.dataAsUrl = dataAsUrl;
11
+ exports.delay = delay;
12
+ exports.escape = escape;
13
+ exports.escapeXhtml = escapeXhtml;
14
+ exports.fourRandomChars = fourRandomChars;
15
+ exports.getAndEncode = getAndEncode;
16
+ exports.getHeight = getHeight;
17
+ exports.getWidth = getWidth;
18
+ exports.isDataUrl = isDataUrl;
19
+ exports.isSrcAsDataUrl = isSrcAsDataUrl;
20
+ exports.makeImage = makeImage;
21
+ exports.mimeType = mimeType;
22
+ exports.processClone = processClone;
23
+ exports.resolveUrl = resolveUrl;
24
+ exports.setStyleSheetBaseHref = setStyleSheetBaseHref;
25
+ exports.toStyleSheet = toStyleSheet;
26
+ exports.uid = uid;
27
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
28
+ var _console = _interopRequireDefault(require("global/console"));
29
+ var _window = _interopRequireDefault(require("global/window"));
30
+ var _document = _interopRequireDefault(require("global/document"));
31
+ var _constants = require("@kepler.gl/constants");
32
+ // SPDX-License-Identifier: MIT
33
+ // Copyright contributors to the kepler.gl project
34
+
35
+ function processClone(original, clone) {
36
+ if (!(clone instanceof _window["default"].Element)) {
37
+ return clone;
38
+ }
39
+ function copyProperties(sourceStyle, targetStyle) {
40
+ var propertyKeys = asArray(sourceStyle);
41
+ propertyKeys.forEach(function (name) {
42
+ targetStyle.setProperty(name, sourceStyle.getPropertyValue(name), sourceStyle.getPropertyPriority(name));
43
+ });
44
+ }
45
+ function copyStyle(source, target) {
46
+ if (source.cssText) {
47
+ target.cssText = source.cssText;
48
+ // add additional copy of composite styles
49
+ if (source.font) {
50
+ target.font = source.font;
51
+ }
52
+ } else {
53
+ copyProperties(source, target);
54
+ }
55
+ }
56
+ function cloneStyle(og, cln) {
57
+ var originalStyle = _window["default"].getComputedStyle(og);
58
+ copyStyle(originalStyle, cln.style);
59
+ }
60
+ function formatPseudoElementStyle(cln, elm, stl) {
61
+ var formatCssText = function formatCssText(stl1) {
62
+ var cnt = stl1.getPropertyValue('content');
63
+ return "".concat(stl.cssText, " content: ").concat(cnt, ";");
64
+ };
65
+ var formatProperty = function formatProperty(name) {
66
+ return "".concat(name, ":").concat(stl.getPropertyValue(name)).concat(stl.getPropertyPriority(name) ? ' !important' : '');
67
+ };
68
+ var formatCssProperties = function formatCssProperties(stl2) {
69
+ return "".concat(asArray(stl2).map(formatProperty).join('; '), ";");
70
+ };
71
+ var selector = ".".concat(cln, ":").concat(elm);
72
+ var cssText = stl.cssText ? formatCssText(stl) : formatCssProperties(stl);
73
+ return _document["default"].createTextNode("".concat(selector, "{").concat(cssText, "}"));
74
+ }
75
+ function clonePseudoElement(org, cln, element) {
76
+ var style = _window["default"].getComputedStyle(org, element);
77
+ var content = style.getPropertyValue('content');
78
+ if (content === '' || content === 'none') {
79
+ return;
80
+ }
81
+ var className = uid();
82
+ cln.className = "".concat(cln.className, " ").concat(className);
83
+ var styleElement = _document["default"].createElement('style');
84
+ styleElement.appendChild(formatPseudoElementStyle(className, element, style));
85
+ cln.appendChild(styleElement);
86
+ }
87
+ function clonePseudoElements(_ref) {
88
+ var _ref2 = (0, _slicedToArray2["default"])(_ref, 2),
89
+ og = _ref2[0],
90
+ cln = _ref2[1];
91
+ [':before', ':after'].forEach(function (element) {
92
+ return clonePseudoElement(og, cln, element);
93
+ });
94
+ }
95
+ function copyUserInput(_ref3) {
96
+ var _ref4 = (0, _slicedToArray2["default"])(_ref3, 2),
97
+ og = _ref4[0],
98
+ cln = _ref4[1];
99
+ if (og instanceof _window["default"].HTMLTextAreaElement) cln.innerHTML = og.value;
100
+ if (og instanceof _window["default"].HTMLInputElement) cln.setAttribute('value', og.value);
101
+ }
102
+ function fixSvg(cln) {
103
+ if (!(cln instanceof _window["default"].SVGElement)) return;
104
+ cln.setAttribute('xmlns', 'http://www.w3.org/2000/svg');
105
+ if (!(cln instanceof _window["default"].SVGRectElement)) return;
106
+ ['width', 'height'].forEach(function (attribute) {
107
+ var value = cln.getAttribute(attribute);
108
+ if (!value) return;
109
+ cln.style.setProperty(attribute, value);
110
+ });
111
+ }
112
+ return Promise.resolve([original, clone]).then(function (_ref5) {
113
+ var _ref6 = (0, _slicedToArray2["default"])(_ref5, 2),
114
+ og = _ref6[0],
115
+ cln = _ref6[1];
116
+ cloneStyle(og, cln);
117
+ return [og, cln];
118
+ }).then(function (_ref7) {
119
+ var _ref8 = (0, _slicedToArray2["default"])(_ref7, 2),
120
+ og = _ref8[0],
121
+ cln = _ref8[1];
122
+ clonePseudoElements([og, cln]);
123
+ return [og, cln];
124
+ }).then(function (_ref9) {
125
+ var _ref10 = (0, _slicedToArray2["default"])(_ref9, 2),
126
+ og = _ref10[0],
127
+ cln = _ref10[1];
128
+ copyUserInput([og, cln]);
129
+ return [og, cln];
130
+ }).then(function (_ref11) {
131
+ var _ref12 = (0, _slicedToArray2["default"])(_ref11, 2),
132
+ og = _ref12[0],
133
+ cln = _ref12[1];
134
+ fixSvg(cln);
135
+ return [og, cln];
136
+ })
137
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
138
+ .then(function (_ref13) {
139
+ var _ref14 = (0, _slicedToArray2["default"])(_ref13, 2),
140
+ og = _ref14[0],
141
+ cln = _ref14[1];
142
+ return cln;
143
+ });
144
+ }
145
+
146
+ /** **
147
+ * UTILS
148
+ ****/
149
+ function asArray(arrayLike) {
150
+ var array = [];
151
+ var length = arrayLike.length;
152
+ for (var i = 0; i < length; i++) array.push(arrayLike[i]);
153
+ return array;
154
+ }
155
+ function fourRandomChars() {
156
+ return "0000".concat((Math.random() * Math.pow(36, 4) << 0).toString(36)).slice(-4);
157
+ }
158
+ function uid() {
159
+ var index = 0;
160
+ return "u".concat(fourRandomChars()).concat(index++);
161
+ }
162
+ function makeImage(uri) {
163
+ return new Promise(function (resolve, reject) {
164
+ var image = new _window["default"].Image();
165
+ image.onload = function () {
166
+ resolve(image);
167
+ };
168
+ image.onerror = function (err) {
169
+ var message = _constants.IMAGE_EXPORT_ERRORS.dataUri;
170
+ _console["default"].log(uri);
171
+ // error is an Event Object
172
+ // https://www.w3schools.com/jsref/obj_event.asp
173
+ reject({
174
+ event: err,
175
+ message: message
176
+ });
177
+ };
178
+ image.src = uri;
179
+ });
180
+ }
181
+ function isDataUrl(url) {
182
+ return url.search(/^(data:)/) !== -1;
183
+ }
184
+ function parseExtension(url) {
185
+ var match = /\.([^./]*?)$/g.exec(url);
186
+ if (match) {
187
+ return match[1];
188
+ }
189
+ return '';
190
+ }
191
+ function mimes() {
192
+ /*
193
+ * Only WOFF and EOT mime types for fonts are 'real'
194
+ * see http://www.iana.org/assignments/media-types/media-types.xhtml
195
+ */
196
+ var WOFF = 'application/font-woff';
197
+ var JPEG = 'image/jpeg';
198
+ return {
199
+ woff: WOFF,
200
+ woff2: WOFF,
201
+ ttf: 'application/font-truetype',
202
+ eot: 'application/vnd.ms-fontobject',
203
+ png: 'image/png',
204
+ jpg: JPEG,
205
+ jpeg: JPEG,
206
+ gif: 'image/gif',
207
+ tiff: 'image/tiff',
208
+ svg: 'image/svg+xml'
209
+ };
210
+ }
211
+ function mimeType(url) {
212
+ var extension = parseExtension(url).toLowerCase();
213
+ return mimes()[extension] || '';
214
+ }
215
+ function dataAsUrl(content, type) {
216
+ return "data:".concat(type, ";base64,").concat(content);
217
+ }
218
+ function escape(string) {
219
+ return string.replace(/([.*+?^${}()|[\]/\\])/g, '\\$1');
220
+ }
221
+ function delay(ms) {
222
+ return function (arg) {
223
+ return new Promise(function (resolve) {
224
+ _window["default"].setTimeout(function () {
225
+ resolve(arg);
226
+ }, ms);
227
+ });
228
+ };
229
+ }
230
+ function isSrcAsDataUrl(text) {
231
+ var DATA_URL_REGEX = /url\(['"]?(data:)([^'"]+?)['"]?\)/;
232
+ return text.search(DATA_URL_REGEX) !== -1;
233
+ }
234
+ function cvToBlob(canvas) {
235
+ return new Promise(function (resolve) {
236
+ var binaryString = _window["default"].atob(canvas.toDataURL().split(',')[1]);
237
+ var length = binaryString.length;
238
+ var binaryArray = new Uint8Array(length);
239
+ for (var i = 0; i < length; i++) binaryArray[i] = binaryString.charCodeAt(i);
240
+ resolve(new _window["default"].Blob([binaryArray], {
241
+ type: 'image/png'
242
+ }));
243
+ });
244
+ }
245
+ function canvasToBlob(canvas) {
246
+ if (canvas.toBlob) return new Promise(function (resolve) {
247
+ canvas.toBlob(resolve);
248
+ });
249
+ return cvToBlob(canvas);
250
+ }
251
+ function escapeXhtml(string) {
252
+ return string.replace(/#/g, '%23').replace(/\n/g, '%0A');
253
+ }
254
+ function getWidth(node) {
255
+ var leftBorder = px(node, 'border-left-width');
256
+ var rightBorder = px(node, 'border-right-width');
257
+ return node.scrollWidth + leftBorder + rightBorder;
258
+ }
259
+ function getHeight(node) {
260
+ var topBorder = px(node, 'border-top-width');
261
+ var bottomBorder = px(node, 'border-bottom-width');
262
+ return node.scrollHeight + topBorder + bottomBorder;
263
+ }
264
+ function px(node, styleProperty) {
265
+ var value = _window["default"].getComputedStyle(node).getPropertyValue(styleProperty);
266
+ return parseFloat(value.replace('px', ''));
267
+ }
268
+ function resolveUrl(url, baseUrl) {
269
+ var doc = _document["default"].implementation.createHTMLDocument();
270
+ var base = doc.createElement('base');
271
+ doc.head.appendChild(base);
272
+ var a = doc.createElement('a');
273
+ doc.body.appendChild(a);
274
+ base.href = baseUrl;
275
+ a.href = url;
276
+ return a.href;
277
+ }
278
+ function getAndEncode(url, options) {
279
+ var TIMEOUT = 30000;
280
+ if (options.cacheBust) {
281
+ // Cache bypass so we dont have CORS issues with cached images
282
+ // Source: https://developer.mozilla.org/en/docs/Web/API/XMLHttpRequest/Using_XMLHttpRequest#Bypassing_the_cache
283
+ url += (/\?/.test(url) ? '&' : '?') + new Date().getTime();
284
+ }
285
+ return new Promise(function (resolve) {
286
+ var request = new _window["default"].XMLHttpRequest();
287
+ request.onreadystatechange = done;
288
+ request.ontimeout = timeout;
289
+ request.responseType = 'blob';
290
+ request.timeout = TIMEOUT;
291
+ request.open('GET', url, true);
292
+ request.send();
293
+ var placeholder;
294
+ if (options.imagePlaceholder) {
295
+ var split = options.imagePlaceholder.split(/,/);
296
+ if (split && split[1]) {
297
+ placeholder = split[1];
298
+ }
299
+ }
300
+ function done() {
301
+ if (request.readyState !== 4) return;
302
+ if (request.status !== 200) {
303
+ if (placeholder) {
304
+ resolve(placeholder);
305
+ } else {
306
+ fail("cannot fetch resource: ".concat(url, ", status: ").concat(request.status));
307
+ }
308
+ return;
309
+ }
310
+ var encoder = new _window["default"].FileReader();
311
+ encoder.onloadend = function () {
312
+ var content = encoder.result.split(/,/)[1];
313
+ resolve(content);
314
+ };
315
+ encoder.readAsDataURL(request.response);
316
+ }
317
+ function timeout() {
318
+ if (placeholder) {
319
+ resolve(placeholder);
320
+ } else {
321
+ fail("timeout of ".concat(TIMEOUT, "ms occurred while fetching resource: ").concat(url));
322
+ }
323
+ }
324
+ function fail(message) {
325
+ _console["default"].error(message);
326
+ resolve('');
327
+ }
328
+ });
329
+ }
330
+ function concatAndResolveUrl(base, url) {
331
+ return new URL(url, base).href;
332
+ }
333
+
334
+ // Set relative URL in stylesheet to absolute url
335
+ function setStyleSheetBaseHref(text, base) {
336
+ function addBaseHrefToUrl(match, p1) {
337
+ var url = /^http/i.test(p1) ? p1 : concatAndResolveUrl(base, p1);
338
+ return "url('".concat(url, "')");
339
+ }
340
+ return isSrcAsDataUrl(text) ? text : text.replace(/url\(['"]?([^'"]+?)['"]?\)/g, addBaseHrefToUrl);
341
+ }
342
+ function toStyleSheet(text) {
343
+ var doc = _document["default"].implementation.createHTMLDocument('');
344
+ var styleElement = _document["default"].createElement('style');
345
+ styleElement.textContent = text;
346
+ doc.body.appendChild(styleElement);
347
+ return styleElement.sheet;
348
+ }
349
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY29uc29sZSIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX3dpbmRvdyIsIl9kb2N1bWVudCIsIl9jb25zdGFudHMiLCJwcm9jZXNzQ2xvbmUiLCJvcmlnaW5hbCIsImNsb25lIiwid2luZG93IiwiRWxlbWVudCIsImNvcHlQcm9wZXJ0aWVzIiwic291cmNlU3R5bGUiLCJ0YXJnZXRTdHlsZSIsInByb3BlcnR5S2V5cyIsImFzQXJyYXkiLCJmb3JFYWNoIiwibmFtZSIsInNldFByb3BlcnR5IiwiZ2V0UHJvcGVydHlWYWx1ZSIsImdldFByb3BlcnR5UHJpb3JpdHkiLCJjb3B5U3R5bGUiLCJzb3VyY2UiLCJ0YXJnZXQiLCJjc3NUZXh0IiwiZm9udCIsImNsb25lU3R5bGUiLCJvZyIsImNsbiIsIm9yaWdpbmFsU3R5bGUiLCJnZXRDb21wdXRlZFN0eWxlIiwic3R5bGUiLCJmb3JtYXRQc2V1ZG9FbGVtZW50U3R5bGUiLCJlbG0iLCJzdGwiLCJmb3JtYXRDc3NUZXh0Iiwic3RsMSIsImNudCIsImNvbmNhdCIsImZvcm1hdFByb3BlcnR5IiwiZm9ybWF0Q3NzUHJvcGVydGllcyIsInN0bDIiLCJtYXAiLCJqb2luIiwic2VsZWN0b3IiLCJkb2N1bWVudCIsImNyZWF0ZVRleHROb2RlIiwiY2xvbmVQc2V1ZG9FbGVtZW50Iiwib3JnIiwiZWxlbWVudCIsImNvbnRlbnQiLCJjbGFzc05hbWUiLCJ1aWQiLCJzdHlsZUVsZW1lbnQiLCJjcmVhdGVFbGVtZW50IiwiYXBwZW5kQ2hpbGQiLCJjbG9uZVBzZXVkb0VsZW1lbnRzIiwiX3JlZiIsIl9yZWYyIiwiX3NsaWNlZFRvQXJyYXkyIiwiY29weVVzZXJJbnB1dCIsIl9yZWYzIiwiX3JlZjQiLCJIVE1MVGV4dEFyZWFFbGVtZW50IiwiaW5uZXJIVE1MIiwidmFsdWUiLCJIVE1MSW5wdXRFbGVtZW50Iiwic2V0QXR0cmlidXRlIiwiZml4U3ZnIiwiU1ZHRWxlbWVudCIsIlNWR1JlY3RFbGVtZW50IiwiYXR0cmlidXRlIiwiZ2V0QXR0cmlidXRlIiwiUHJvbWlzZSIsInJlc29sdmUiLCJ0aGVuIiwiX3JlZjUiLCJfcmVmNiIsIl9yZWY3IiwiX3JlZjgiLCJfcmVmOSIsIl9yZWYxMCIsIl9yZWYxMSIsIl9yZWYxMiIsIl9yZWYxMyIsIl9yZWYxNCIsImFycmF5TGlrZSIsImFycmF5IiwibGVuZ3RoIiwiaSIsInB1c2giLCJmb3VyUmFuZG9tQ2hhcnMiLCJNYXRoIiwicmFuZG9tIiwicG93IiwidG9TdHJpbmciLCJzbGljZSIsImluZGV4IiwibWFrZUltYWdlIiwidXJpIiwicmVqZWN0IiwiaW1hZ2UiLCJJbWFnZSIsIm9ubG9hZCIsIm9uZXJyb3IiLCJlcnIiLCJtZXNzYWdlIiwiSU1BR0VfRVhQT1JUX0VSUk9SUyIsImRhdGFVcmkiLCJDb25zb2xlIiwibG9nIiwiZXZlbnQiLCJzcmMiLCJpc0RhdGFVcmwiLCJ1cmwiLCJzZWFyY2giLCJwYXJzZUV4dGVuc2lvbiIsIm1hdGNoIiwiZXhlYyIsIm1pbWVzIiwiV09GRiIsIkpQRUciLCJ3b2ZmIiwid29mZjIiLCJ0dGYiLCJlb3QiLCJwbmciLCJqcGciLCJqcGVnIiwiZ2lmIiwidGlmZiIsInN2ZyIsIm1pbWVUeXBlIiwiZXh0ZW5zaW9uIiwidG9Mb3dlckNhc2UiLCJkYXRhQXNVcmwiLCJ0eXBlIiwiZXNjYXBlIiwic3RyaW5nIiwicmVwbGFjZSIsImRlbGF5IiwibXMiLCJhcmciLCJzZXRUaW1lb3V0IiwiaXNTcmNBc0RhdGFVcmwiLCJ0ZXh0IiwiREFUQV9VUkxfUkVHRVgiLCJjdlRvQmxvYiIsImNhbnZhcyIsImJpbmFyeVN0cmluZyIsImF0b2IiLCJ0b0RhdGFVUkwiLCJzcGxpdCIsImJpbmFyeUFycmF5IiwiVWludDhBcnJheSIsImNoYXJDb2RlQXQiLCJCbG9iIiwiY2FudmFzVG9CbG9iIiwidG9CbG9iIiwiZXNjYXBlWGh0bWwiLCJnZXRXaWR0aCIsIm5vZGUiLCJsZWZ0Qm9yZGVyIiwicHgiLCJyaWdodEJvcmRlciIsInNjcm9sbFdpZHRoIiwiZ2V0SGVpZ2h0IiwidG9wQm9yZGVyIiwiYm90dG9tQm9yZGVyIiwic2Nyb2xsSGVpZ2h0Iiwic3R5bGVQcm9wZXJ0eSIsInBhcnNlRmxvYXQiLCJyZXNvbHZlVXJsIiwiYmFzZVVybCIsImRvYyIsImltcGxlbWVudGF0aW9uIiwiY3JlYXRlSFRNTERvY3VtZW50IiwiYmFzZSIsImhlYWQiLCJhIiwiYm9keSIsImhyZWYiLCJnZXRBbmRFbmNvZGUiLCJvcHRpb25zIiwiVElNRU9VVCIsImNhY2hlQnVzdCIsInRlc3QiLCJEYXRlIiwiZ2V0VGltZSIsInJlcXVlc3QiLCJYTUxIdHRwUmVxdWVzdCIsIm9ucmVhZHlzdGF0ZWNoYW5nZSIsImRvbmUiLCJvbnRpbWVvdXQiLCJ0aW1lb3V0IiwicmVzcG9uc2VUeXBlIiwib3BlbiIsInNlbmQiLCJwbGFjZWhvbGRlciIsImltYWdlUGxhY2Vob2xkZXIiLCJyZWFkeVN0YXRlIiwic3RhdHVzIiwiZmFpbCIsImVuY29kZXIiLCJGaWxlUmVhZGVyIiwib25sb2FkZW5kIiwicmVzdWx0IiwicmVhZEFzRGF0YVVSTCIsInJlc3BvbnNlIiwiZXJyb3IiLCJjb25jYXRBbmRSZXNvbHZlVXJsIiwiVVJMIiwic2V0U3R5bGVTaGVldEJhc2VIcmVmIiwiYWRkQmFzZUhyZWZUb1VybCIsInAxIiwidG9TdHlsZVNoZWV0IiwidGV4dENvbnRlbnQiLCJzaGVldCJdLCJzb3VyY2VzIjpbIi4uL3NyYy9kb20tdXRpbHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IENvbnNvbGUgZnJvbSAnZ2xvYmFsL2NvbnNvbGUnO1xuaW1wb3J0IHdpbmRvdyBmcm9tICdnbG9iYWwvd2luZG93JztcbmltcG9ydCBkb2N1bWVudCBmcm9tICdnbG9iYWwvZG9jdW1lbnQnO1xuaW1wb3J0IHtJTUFHRV9FWFBPUlRfRVJST1JTfSBmcm9tICdAa2VwbGVyLmdsL2NvbnN0YW50cyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm9jZXNzQ2xvbmUob3JpZ2luYWwsIGNsb25lKSB7XG4gIGlmICghKGNsb25lIGluc3RhbmNlb2Ygd2luZG93LkVsZW1lbnQpKSB7XG4gICAgcmV0dXJuIGNsb25lO1xuICB9XG5cbiAgZnVuY3Rpb24gY29weVByb3BlcnRpZXMoc291cmNlU3R5bGUsIHRhcmdldFN0eWxlKSB7XG4gICAgY29uc3QgcHJvcGVydHlLZXlzID0gYXNBcnJheShzb3VyY2VTdHlsZSk7XG4gICAgcHJvcGVydHlLZXlzLmZvckVhY2gobmFtZSA9PiB7XG4gICAgICB0YXJnZXRTdHlsZS5zZXRQcm9wZXJ0eShcbiAgICAgICAgbmFtZSxcbiAgICAgICAgc291cmNlU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZShuYW1lKSxcbiAgICAgICAgc291cmNlU3R5bGUuZ2V0UHJvcGVydHlQcmlvcml0eShuYW1lKVxuICAgICAgKTtcbiAgICB9KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNvcHlTdHlsZShzb3VyY2UsIHRhcmdldCkge1xuICAgIGlmIChzb3VyY2UuY3NzVGV4dCkge1xuICAgICAgdGFyZ2V0LmNzc1RleHQgPSBzb3VyY2UuY3NzVGV4dDtcbiAgICAgIC8vIGFkZCBhZGRpdGlvbmFsIGNvcHkgb2YgY29tcG9zaXRlIHN0eWxlc1xuICAgICAgaWYgKHNvdXJjZS5mb250KSB7XG4gICAgICAgIHRhcmdldC5mb250ID0gc291cmNlLmZvbnQ7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvcHlQcm9wZXJ0aWVzKHNvdXJjZSwgdGFyZ2V0KTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBjbG9uZVN0eWxlKG9nLCBjbG4pIHtcbiAgICBjb25zdCBvcmlnaW5hbFN0eWxlID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUob2cpO1xuICAgIGNvcHlTdHlsZShvcmlnaW5hbFN0eWxlLCBjbG4uc3R5bGUpO1xuICB9XG5cbiAgZnVuY3Rpb24gZm9ybWF0UHNldWRvRWxlbWVudFN0eWxlKGNsbiwgZWxtLCBzdGwpIHtcbiAgICBjb25zdCBmb3JtYXRDc3NUZXh0ID0gc3RsMSA9PiB7XG4gICAgICBjb25zdCBjbnQgPSBzdGwxLmdldFByb3BlcnR5VmFsdWUoJ2NvbnRlbnQnKTtcbiAgICAgIHJldHVybiBgJHtzdGwuY3NzVGV4dH0gY29udGVudDogJHtjbnR9O2A7XG4gICAgfTtcblxuICAgIGNvbnN0IGZvcm1hdFByb3BlcnR5ID0gbmFtZSA9PiB7XG4gICAgICByZXR1cm4gYCR7bmFtZX06JHtzdGwuZ2V0UHJvcGVydHlWYWx1ZShuYW1lKX0ke1xuICAgICAgICBzdGwuZ2V0UHJvcGVydHlQcmlvcml0eShuYW1lKSA/ICcgIWltcG9ydGFudCcgOiAnJ1xuICAgICAgfWA7XG4gICAgfTtcblxuICAgIGNvbnN0IGZvcm1hdENzc1Byb3BlcnRpZXMgPSBzdGwyID0+IHtcbiAgICAgIHJldHVybiBgJHthc0FycmF5KHN0bDIpLm1hcChmb3JtYXRQcm9wZXJ0eSkuam9pbignOyAnKX07YDtcbiAgICB9O1xuXG4gICAgY29uc3Qgc2VsZWN0b3IgPSBgLiR7Y2xufToke2VsbX1gO1xuICAgIGNvbnN0IGNzc1RleHQgPSBzdGwuY3NzVGV4dCA/IGZvcm1hdENzc1RleHQoc3RsKSA6IGZvcm1hdENzc1Byb3BlcnRpZXMoc3RsKTtcblxuICAgIHJldHVybiBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShgJHtzZWxlY3Rvcn17JHtjc3NUZXh0fX1gKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNsb25lUHNldWRvRWxlbWVudChvcmcsIGNsbiwgZWxlbWVudCkge1xuICAgIGNvbnN0IHN0eWxlID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUob3JnLCBlbGVtZW50KTtcbiAgICBjb25zdCBjb250ZW50ID0gc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnY29udGVudCcpO1xuXG4gICAgaWYgKGNvbnRlbnQgPT09ICcnIHx8IGNvbnRlbnQgPT09ICdub25lJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGNsYXNzTmFtZSA9IHVpZCgpO1xuICAgIGNsbi5jbGFzc05hbWUgPSBgJHtjbG4uY2xhc3NOYW1lfSAke2NsYXNzTmFtZX1gO1xuICAgIGNvbnN0IHN0eWxlRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7XG4gICAgc3R5bGVFbGVtZW50LmFwcGVuZENoaWxkKGZvcm1hdFBzZXVkb0VsZW1lbnRTdHlsZShjbGFzc05hbWUsIGVsZW1lbnQsIHN0eWxlKSk7XG4gICAgY2xuLmFwcGVuZENoaWxkKHN0eWxlRWxlbWVudCk7XG4gIH1cblxuICBmdW5jdGlvbiBjbG9uZVBzZXVkb0VsZW1lbnRzKFtvZywgY2xuXSkge1xuICAgIFsnOmJlZm9yZScsICc6YWZ0ZXInXS5mb3JFYWNoKGVsZW1lbnQgPT4gY2xvbmVQc2V1ZG9FbGVtZW50KG9nLCBjbG4sIGVsZW1lbnQpKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNvcHlVc2VySW5wdXQoW29nLCBjbG5dKSB7XG4gICAgaWYgKG9nIGluc3RhbmNlb2Ygd2luZG93LkhUTUxUZXh0QXJlYUVsZW1lbnQpIGNsbi5pbm5lckhUTUwgPSBvZy52YWx1ZTtcbiAgICBpZiAob2cgaW5zdGFuY2VvZiB3aW5kb3cuSFRNTElucHV0RWxlbWVudCkgY2xuLnNldEF0dHJpYnV0ZSgndmFsdWUnLCBvZy52YWx1ZSk7XG4gIH1cblxuICBmdW5jdGlvbiBmaXhTdmcoY2xuKSB7XG4gICAgaWYgKCEoY2xuIGluc3RhbmNlb2Ygd2luZG93LlNWR0VsZW1lbnQpKSByZXR1cm47XG4gICAgY2xuLnNldEF0dHJpYnV0ZSgneG1sbnMnLCAnaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnKTtcblxuICAgIGlmICghKGNsbiBpbnN0YW5jZW9mIHdpbmRvdy5TVkdSZWN0RWxlbWVudCkpIHJldHVybjtcbiAgICBbJ3dpZHRoJywgJ2hlaWdodCddLmZvckVhY2goYXR0cmlidXRlID0+IHtcbiAgICAgIGNvbnN0IHZhbHVlID0gY2xuLmdldEF0dHJpYnV0ZShhdHRyaWJ1dGUpO1xuICAgICAgaWYgKCF2YWx1ZSkgcmV0dXJuO1xuXG4gICAgICBjbG4uc3R5bGUuc2V0UHJvcGVydHkoYXR0cmlidXRlLCB2YWx1ZSk7XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gKFxuICAgIFByb21pc2UucmVzb2x2ZShbb3JpZ2luYWwsIGNsb25lXSlcbiAgICAgIC50aGVuKChbb2csIGNsbl0pID0+IHtcbiAgICAgICAgY2xvbmVTdHlsZShvZywgY2xuKTtcbiAgICAgICAgcmV0dXJuIFtvZywgY2xuXTtcbiAgICAgIH0pXG4gICAgICAudGhlbigoW29nLCBjbG5dKSA9PiB7XG4gICAgICAgIGNsb25lUHNldWRvRWxlbWVudHMoW29nLCBjbG5dKTtcbiAgICAgICAgcmV0dXJuIFtvZywgY2xuXTtcbiAgICAgIH0pXG4gICAgICAudGhlbigoW29nLCBjbG5dKSA9PiB7XG4gICAgICAgIGNvcHlVc2VySW5wdXQoW29nLCBjbG5dKTtcbiAgICAgICAgcmV0dXJuIFtvZywgY2xuXTtcbiAgICAgIH0pXG4gICAgICAudGhlbigoW29nLCBjbG5dKSA9PiB7XG4gICAgICAgIGZpeFN2ZyhjbG4pO1xuICAgICAgICByZXR1cm4gW29nLCBjbG5dO1xuICAgICAgfSlcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgICAgIC50aGVuKChbb2csIGNsbl0pID0+IGNsbilcbiAgKTtcbn1cblxuLyoqICoqXG4gKiBVVElMU1xuICoqKiovXG5leHBvcnQgZnVuY3Rpb24gYXNBcnJheShhcnJheUxpa2UpIHtcbiAgY29uc3QgYXJyYXk6IGFueVtdID0gW107XG4gIGNvbnN0IGxlbmd0aCA9IGFycmF5TGlrZS5sZW5ndGg7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIGFycmF5LnB1c2goYXJyYXlMaWtlW2ldKTtcbiAgcmV0dXJuIGFycmF5O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZm91clJhbmRvbUNoYXJzKCkge1xuICByZXR1cm4gYDAwMDAkeygoTWF0aC5yYW5kb20oKSAqIE1hdGgucG93KDM2LCA0KSkgPDwgMCkudG9TdHJpbmcoMzYpfWAuc2xpY2UoLTQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdWlkKCkge1xuICBsZXQgaW5kZXggPSAwO1xuXG4gIHJldHVybiBgdSR7Zm91clJhbmRvbUNoYXJzKCl9JHtpbmRleCsrfWA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtYWtlSW1hZ2UodXJpKSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgY29uc3QgaW1hZ2UgPSBuZXcgd2luZG93LkltYWdlKCk7XG4gICAgaW1hZ2Uub25sb2FkID0gKCkgPT4ge1xuICAgICAgcmVzb2x2ZShpbWFnZSk7XG4gICAgfTtcbiAgICBpbWFnZS5vbmVycm9yID0gZXJyID0+IHtcbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSBJTUFHRV9FWFBPUlRfRVJST1JTLmRhdGFVcmk7XG4gICAgICBDb25zb2xlLmxvZyh1cmkpO1xuICAgICAgLy8gZXJyb3IgaXMgYW4gRXZlbnQgT2JqZWN0XG4gICAgICAvLyBodHRwczovL3d3dy53M3NjaG9vbHMuY29tL2pzcmVmL29ial9ldmVudC5hc3BcbiAgICAgIHJlamVjdCh7ZXZlbnQ6IGVyciwgbWVzc2FnZX0pO1xuICAgIH07XG4gICAgaW1hZ2Uuc3JjID0gdXJpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzRGF0YVVybCh1cmwpIHtcbiAgcmV0dXJuIHVybC5zZWFyY2goL14oZGF0YTopLykgIT09IC0xO1xufVxuXG5mdW5jdGlvbiBwYXJzZUV4dGVuc2lvbih1cmwpIHtcbiAgY29uc3QgbWF0Y2ggPSAvXFwuKFteLi9dKj8pJC9nLmV4ZWModXJsKTtcbiAgaWYgKG1hdGNoKSB7XG4gICAgcmV0dXJuIG1hdGNoWzFdO1xuICB9XG4gIHJldHVybiAnJztcbn1cblxuZnVuY3Rpb24gbWltZXMoKSB7XG4gIC8qXG4gICAqIE9ubHkgV09GRiBhbmQgRU9UIG1pbWUgdHlwZXMgZm9yIGZvbnRzIGFyZSAncmVhbCdcbiAgICogc2VlIGh0dHA6Ly93d3cuaWFuYS5vcmcvYXNzaWdubWVudHMvbWVkaWEtdHlwZXMvbWVkaWEtdHlwZXMueGh0bWxcbiAgICovXG4gIGNvbnN0IFdPRkYgPSAnYXBwbGljYXRpb24vZm9udC13b2ZmJztcbiAgY29uc3QgSlBFRyA9ICdpbWFnZS9qcGVnJztcblxuICByZXR1cm4ge1xuICAgIHdvZmY6IFdPRkYsXG4gICAgd29mZjI6IFdPRkYsXG4gICAgdHRmOiAnYXBwbGljYXRpb24vZm9udC10cnVldHlwZScsXG4gICAgZW90OiAnYXBwbGljYXRpb24vdm5kLm1zLWZvbnRvYmplY3QnLFxuICAgIHBuZzogJ2ltYWdlL3BuZycsXG4gICAganBnOiBKUEVHLFxuICAgIGpwZWc6IEpQRUcsXG4gICAgZ2lmOiAnaW1hZ2UvZ2lmJyxcbiAgICB0aWZmOiAnaW1hZ2UvdGlmZicsXG4gICAgc3ZnOiAnaW1hZ2Uvc3ZnK3htbCdcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1pbWVUeXBlKHVybCkge1xuICBjb25zdCBleHRlbnNpb24gPSBwYXJzZUV4dGVuc2lvbih1cmwpLnRvTG93ZXJDYXNlKCk7XG4gIHJldHVybiBtaW1lcygpW2V4dGVuc2lvbl0gfHwgJyc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkYXRhQXNVcmwoY29udGVudCwgdHlwZSkge1xuICByZXR1cm4gYGRhdGE6JHt0eXBlfTtiYXNlNjQsJHtjb250ZW50fWA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlc2NhcGUoc3RyaW5nKSB7XG4gIHJldHVybiBzdHJpbmcucmVwbGFjZSgvKFsuKis/XiR7fSgpfFtcXF0vXFxcXF0pL2csICdcXFxcJDEnKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlbGF5KG1zKSB7XG4gIHJldHVybiBhcmcgPT4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHtcbiAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgcmVzb2x2ZShhcmcpO1xuICAgICAgfSwgbXMpO1xuICAgIH0pO1xuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNTcmNBc0RhdGFVcmwodGV4dCkge1xuICBjb25zdCBEQVRBX1VSTF9SRUdFWCA9IC91cmxcXChbJ1wiXT8oZGF0YTopKFteJ1wiXSs/KVsnXCJdP1xcKS87XG4gIHJldHVybiB0ZXh0LnNlYXJjaChEQVRBX1VSTF9SRUdFWCkgIT09IC0xO1xufVxuXG5mdW5jdGlvbiBjdlRvQmxvYihjYW52YXMpIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xuICAgIGNvbnN0IGJpbmFyeVN0cmluZyA9IHdpbmRvdy5hdG9iKGNhbnZhcy50b0RhdGFVUkwoKS5zcGxpdCgnLCcpWzFdKTtcbiAgICBjb25zdCBsZW5ndGggPSBiaW5hcnlTdHJpbmcubGVuZ3RoO1xuICAgIGNvbnN0IGJpbmFyeUFycmF5ID0gbmV3IFVpbnQ4QXJyYXkobGVuZ3RoKTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIGJpbmFyeUFycmF5W2ldID0gYmluYXJ5U3RyaW5nLmNoYXJDb2RlQXQoaSk7XG5cbiAgICByZXNvbHZlKG5ldyB3aW5kb3cuQmxvYihbYmluYXJ5QXJyYXldLCB7dHlwZTogJ2ltYWdlL3BuZyd9KSk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2FudmFzVG9CbG9iKGNhbnZhcykge1xuICBpZiAoY2FudmFzLnRvQmxvYilcbiAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7XG4gICAgICBjYW52YXMudG9CbG9iKHJlc29sdmUpO1xuICAgIH0pO1xuXG4gIHJldHVybiBjdlRvQmxvYihjYW52YXMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXNjYXBlWGh0bWwoc3RyaW5nKSB7XG4gIHJldHVybiBzdHJpbmcucmVwbGFjZSgvIy9nLCAnJTIzJykucmVwbGFjZSgvXFxuL2csICclMEEnKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFdpZHRoKG5vZGUpIHtcbiAgY29uc3QgbGVmdEJvcmRlciA9IHB4KG5vZGUsICdib3JkZXItbGVmdC13aWR0aCcpO1xuICBjb25zdCByaWdodEJvcmRlciA9IHB4KG5vZGUsICdib3JkZXItcmlnaHQtd2lkdGgnKTtcbiAgcmV0dXJuIG5vZGUuc2Nyb2xsV2lkdGggKyBsZWZ0Qm9yZGVyICsgcmlnaHRCb3JkZXI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRIZWlnaHQobm9kZSkge1xuICBjb25zdCB0b3BCb3JkZXIgPSBweChub2RlLCAnYm9yZGVyLXRvcC13aWR0aCcpO1xuICBjb25zdCBib3R0b21Cb3JkZXIgPSBweChub2RlLCAnYm9yZGVyLWJvdHRvbS13aWR0aCcpO1xuICByZXR1cm4gbm9kZS5zY3JvbGxIZWlnaHQgKyB0b3BCb3JkZXIgKyBib3R0b21Cb3JkZXI7XG59XG5cbmZ1bmN0aW9uIHB4KG5vZGUsIHN0eWxlUHJvcGVydHkpIHtcbiAgY29uc3QgdmFsdWUgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShub2RlKS5nZXRQcm9wZXJ0eVZhbHVlKHN0eWxlUHJvcGVydHkpO1xuICByZXR1cm4gcGFyc2VGbG9hdCh2YWx1ZS5yZXBsYWNlKCdweCcsICcnKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlVXJsKHVybCwgYmFzZVVybCkge1xuICBjb25zdCBkb2MgPSBkb2N1bWVudC5pbXBsZW1lbnRhdGlvbi5jcmVhdGVIVE1MRG9jdW1lbnQoKTtcbiAgY29uc3QgYmFzZSA9IGRvYy5jcmVhdGVFbGVtZW50KCdiYXNlJyk7XG4gIGRvYy5oZWFkLmFwcGVuZENoaWxkKGJhc2UpO1xuICBjb25zdCBhID0gZG9jLmNyZWF0ZUVsZW1lbnQoJ2EnKTtcbiAgZG9jLmJvZHkuYXBwZW5kQ2hpbGQoYSk7XG4gIGJhc2UuaHJlZiA9IGJhc2VVcmw7XG4gIGEuaHJlZiA9IHVybDtcbiAgcmV0dXJuIGEuaHJlZjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEFuZEVuY29kZSh1cmwsIG9wdGlvbnMpIHtcbiAgY29uc3QgVElNRU9VVCA9IDMwMDAwO1xuICBpZiAob3B0aW9ucy5jYWNoZUJ1c3QpIHtcbiAgICAvLyBDYWNoZSBieXBhc3Mgc28gd2UgZG9udCBoYXZlIENPUlMgaXNzdWVzIHdpdGggY2FjaGVkIGltYWdlc1xuICAgIC8vIFNvdXJjZTogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4vZG9jcy9XZWIvQVBJL1hNTEh0dHBSZXF1ZXN0L1VzaW5nX1hNTEh0dHBSZXF1ZXN0I0J5cGFzc2luZ190aGVfY2FjaGVcbiAgICB1cmwgKz0gKC9cXD8vLnRlc3QodXJsKSA/ICcmJyA6ICc/JykgKyBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcbiAgfVxuXG4gIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHtcbiAgICBjb25zdCByZXF1ZXN0ID0gbmV3IHdpbmRvdy5YTUxIdHRwUmVxdWVzdCgpO1xuXG4gICAgcmVxdWVzdC5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBkb25lO1xuICAgIHJlcXVlc3Qub250aW1lb3V0ID0gdGltZW91dDtcbiAgICByZXF1ZXN0LnJlc3BvbnNlVHlwZSA9ICdibG9iJztcbiAgICByZXF1ZXN0LnRpbWVvdXQgPSBUSU1FT1VUO1xuICAgIHJlcXVlc3Qub3BlbignR0VUJywgdXJsLCB0cnVlKTtcbiAgICByZXF1ZXN0LnNlbmQoKTtcblxuICAgIGxldCBwbGFjZWhvbGRlcjtcbiAgICBpZiAob3B0aW9ucy5pbWFnZVBsYWNlaG9sZGVyKSB7XG4gICAgICBjb25zdCBzcGxpdCA9IG9wdGlvbnMuaW1hZ2VQbGFjZWhvbGRlci5zcGxpdCgvLC8pO1xuICAgICAgaWYgKHNwbGl0ICYmIHNwbGl0WzFdKSB7XG4gICAgICAgIHBsYWNlaG9sZGVyID0gc3BsaXRbMV07XG4gICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZG9uZSgpIHtcbiAgICAgIGlmIChyZXF1ZXN0LnJlYWR5U3RhdGUgIT09IDQpIHJldHVybjtcblxuICAgICAgaWYgKHJlcXVlc3Quc3RhdHVzICE9PSAyMDApIHtcbiAgICAgICAgaWYgKHBsYWNlaG9sZGVyKSB7XG4gICAgICAgICAgcmVzb2x2ZShwbGFjZWhvbGRlcik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZmFpbChgY2Fubm90IGZldGNoIHJlc291cmNlOiAke3VybH0sIHN0YXR1czogJHtyZXF1ZXN0LnN0YXR1c31gKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZW5jb2RlciA9IG5ldyB3aW5kb3cuRmlsZVJlYWRlcigpO1xuICAgICAgZW5jb2Rlci5vbmxvYWRlbmQgPSAoKSA9PiB7XG4gICAgICAgIGNvbnN0IGNvbnRlbnQgPSBlbmNvZGVyLnJlc3VsdC5zcGxpdCgvLC8pWzFdO1xuICAgICAgICByZXNvbHZlKGNvbnRlbnQpO1xuICAgICAgfTtcbiAgICAgIGVuY29kZXIucmVhZEFzRGF0YVVSTChyZXF1ZXN0LnJlc3BvbnNlKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB0aW1lb3V0KCkge1xuICAgICAgaWYgKHBsYWNlaG9sZGVyKSB7XG4gICAgICAgIHJlc29sdmUocGxhY2Vob2xkZXIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZmFpbChgdGltZW91dCBvZiAke1RJTUVPVVR9bXMgb2NjdXJyZWQgd2hpbGUgZmV0Y2hpbmcgcmVzb3VyY2U6ICR7dXJsfWApO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGZhaWwobWVzc2FnZSkge1xuICAgICAgQ29uc29sZS5lcnJvcihtZXNzYWdlKTtcbiAgICAgIHJlc29sdmUoJycpO1xuICAgIH1cbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb25jYXRBbmRSZXNvbHZlVXJsKGJhc2UsIHVybCkge1xuICByZXR1cm4gbmV3IFVSTCh1cmwsIGJhc2UpLmhyZWY7XG59XG5cbi8vIFNldCByZWxhdGl2ZSBVUkwgaW4gc3R5bGVzaGVldCB0byBhYnNvbHV0ZSB1cmxcbmV4cG9ydCBmdW5jdGlvbiBzZXRTdHlsZVNoZWV0QmFzZUhyZWYodGV4dCwgYmFzZSkge1xuICBmdW5jdGlvbiBhZGRCYXNlSHJlZlRvVXJsKG1hdGNoLCBwMSkge1xuICAgIGNvbnN0IHVybCA9IC9eaHR0cC9pLnRlc3QocDEpID8gcDEgOiBjb25jYXRBbmRSZXNvbHZlVXJsKGJhc2UsIHAxKTtcbiAgICByZXR1cm4gYHVybCgnJHt1cmx9JylgO1xuICB9XG4gIHJldHVybiBpc1NyY0FzRGF0YVVybCh0ZXh0KVxuICAgID8gdGV4dFxuICAgIDogdGV4dC5yZXBsYWNlKC91cmxcXChbJ1wiXT8oW14nXCJdKz8pWydcIl0/XFwpL2csIGFkZEJhc2VIcmVmVG9VcmwpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdG9TdHlsZVNoZWV0KHRleHQpIHtcbiAgY29uc3QgZG9jID0gZG9jdW1lbnQuaW1wbGVtZW50YXRpb24uY3JlYXRlSFRNTERvY3VtZW50KCcnKTtcbiAgY29uc3Qgc3R5bGVFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTtcblxuICBzdHlsZUVsZW1lbnQudGV4dENvbnRlbnQgPSB0ZXh0O1xuICBkb2MuYm9keS5hcHBlbmRDaGlsZChzdHlsZUVsZW1lbnQpO1xuXG4gIHJldHVybiBzdHlsZUVsZW1lbnQuc2hlZXQ7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUdBLElBQUFBLFFBQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLE9BQUEsR0FBQUYsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFFLFNBQUEsR0FBQUgsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFHLFVBQUEsR0FBQUgsT0FBQTtBQU5BO0FBQ0E7O0FBT08sU0FBU0ksWUFBWUEsQ0FBQ0MsUUFBUSxFQUFFQyxLQUFLLEVBQUU7RUFDNUMsSUFBSSxFQUFFQSxLQUFL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
@@ -0,0 +1,24 @@
1
+ import { PostProcessEffect } from '@deck.gl/core/typed';
2
+ import { MapState, Effect, EffectProps, EffectDescription } from '@kepler.gl/types';
3
+ declare type VisState = any;
4
+ export declare function computeDeckEffects({ visState, mapState }: {
5
+ visState: VisState;
6
+ mapState: MapState;
7
+ }): PostProcessEffect[];
8
+ /**
9
+ * Always keep light & shadow effect at the top
10
+ */
11
+ export declare const fixEffectOrder: (effects: Effect[], effectOrder: string[]) => string[];
12
+ export declare function reorderEffectOrder(effectOrder: string[], originEffectId: string, destinationEffectId: string): string[];
13
+ /**
14
+ * Validates parameters for an effect, clamps numbers to allowed ranges
15
+ * or applies default values in case of wrong non-numeric values.
16
+ * All unknown properties aren't modified.
17
+ * @param parameters Parameters candidate for an effect.
18
+ * @param effectDescription Description of an effect.
19
+ * @returns
20
+ */
21
+ export declare function validateEffectParameters(parameters: {
22
+ [key: string]: any;
23
+ } | undefined, effectDescription: EffectDescription['parameters']): EffectProps['parameters'];
24
+ export {};
@@ -0,0 +1,166 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.computeDeckEffects = computeDeckEffects;
8
+ exports.fixEffectOrder = void 0;
9
+ exports.reorderEffectOrder = reorderEffectOrder;
10
+ exports.validateEffectParameters = validateEffectParameters;
11
+ var _sortable = require("@dnd-kit/sortable");
12
+ var _suncalc = _interopRequireDefault(require("suncalc"));
13
+ var _lodash = _interopRequireDefault(require("lodash.clonedeep"));
14
+ var _constants = require("@kepler.gl/constants");
15
+ var _utils = require("./utils");
16
+ var _dataUtils = require("./data-utils");
17
+ // SPDX-License-Identifier: MIT
18
+ // Copyright contributors to the kepler.gl project
19
+
20
+ // import {VisState} from '@kepler.gl/schemas';
21
+
22
+ // TODO isolate types - depends on @kepler.gl/schemas
23
+
24
+ function computeDeckEffects(_ref) {
25
+ var visState = _ref.visState,
26
+ mapState = _ref.mapState;
27
+ // TODO: 1) deck effects per deck context 2) preserved between draws
28
+ return visState.effectOrder.map(function (effectId) {
29
+ var effect = (0, _utils.findById)(effectId)(visState.effects);
30
+ if (effect !== null && effect !== void 0 && effect.isEnabled && effect.deckEffect) {
31
+ updateEffect({
32
+ visState: visState,
33
+ mapState: mapState,
34
+ effect: effect
35
+ });
36
+ return effect.deckEffect;
37
+ }
38
+ return null;
39
+ }).filter(function (effect) {
40
+ return effect;
41
+ });
42
+ }
43
+
44
+ /**
45
+ * Always keep light & shadow effect at the top
46
+ */
47
+ var fixEffectOrder = exports.fixEffectOrder = function fixEffectOrder(effects, effectOrder) {
48
+ var lightShadowEffect = effects.find(function (effect) {
49
+ return effect.type === _constants.LIGHT_AND_SHADOW_EFFECT.type;
50
+ });
51
+ if (lightShadowEffect) {
52
+ var ind = effectOrder.indexOf(lightShadowEffect.id);
53
+ if (ind > 0) {
54
+ effectOrder.splice(ind, 1);
55
+ effectOrder.unshift(lightShadowEffect.id);
56
+ }
57
+ }
58
+ return effectOrder;
59
+ };
60
+ function reorderEffectOrder(effectOrder, originEffectId, destinationEffectId) {
61
+ var activeIndex = effectOrder.indexOf(originEffectId);
62
+ var overIndex = effectOrder.indexOf(destinationEffectId);
63
+ return (0, _sortable.arrayMove)(effectOrder, activeIndex, overIndex);
64
+ }
65
+
66
+ /**
67
+ * Check if the current time is daytime at the given location
68
+ * @param {number} lat Latitude
69
+ * @param {number} lon Longitude
70
+ * @param {number} timestamp Milliseconds since the Unix Epoch
71
+ * @returns boolean
72
+ */
73
+ function isDaytime(lat, lon, timestamp) {
74
+ var date = new Date(timestamp);
75
+ var _SunCalc$getTimes = _suncalc["default"].getTimes(date, lat, lon),
76
+ sunrise = _SunCalc$getTimes.sunrise,
77
+ sunset = _SunCalc$getTimes.sunset;
78
+ return date >= sunrise && date <= sunset;
79
+ }
80
+
81
+ /**
82
+ * Update effect to match latest vis and map states
83
+ */
84
+ function updateEffect(_ref2) {
85
+ var visState = _ref2.visState,
86
+ mapState = _ref2.mapState,
87
+ effect = _ref2.effect;
88
+ if (effect.type === _constants.LIGHT_AND_SHADOW_EFFECT.type) {
89
+ var timestamp = effect.parameters.timestamp;
90
+ var timeMode = effect.parameters.timeMode;
91
+ var sunLight = effect.deckEffect.directionalLights[0];
92
+
93
+ // set timestamp for shadow
94
+ if (timeMode === _constants.LIGHT_AND_SHADOW_EFFECT_TIME_MODES.current) {
95
+ timestamp = Date.now();
96
+ sunLight.timestamp = timestamp;
97
+ } else if (timeMode === _constants.LIGHT_AND_SHADOW_EFFECT_TIME_MODES.animation) {
98
+ var _visState$animationCo;
99
+ timestamp = (_visState$animationCo = visState.animationConfig.currentTime) !== null && _visState$animationCo !== void 0 ? _visState$animationCo : 0;
100
+ if (!timestamp) {
101
+ var filter = visState.filters.find(function (filter) {
102
+ return filter.type === _constants.FILTER_TYPES.timeRange && (filter.view === _constants.FILTER_VIEW_TYPES.enlarged || filter.syncedWithLayerTimeline);
103
+ });
104
+ if (filter) {
105
+ var _filter$value$, _filter$value;
106
+ timestamp = (_filter$value$ = (_filter$value = filter.value) === null || _filter$value === void 0 ? void 0 : _filter$value[0]) !== null && _filter$value$ !== void 0 ? _filter$value$ : 0;
107
+ }
108
+ }
109
+ sunLight.timestamp = timestamp;
110
+ }
111
+
112
+ // output uniform shadow during nighttime
113
+ if (isDaytime(mapState.latitude, mapState.longitude, timestamp)) {
114
+ effect.deckEffect.outputUniformShadow = false;
115
+ sunLight.intensity = effect.parameters.sunLightIntensity;
116
+ } else {
117
+ effect.deckEffect.outputUniformShadow = true;
118
+ sunLight.intensity = 0;
119
+ }
120
+ }
121
+ }
122
+
123
+ /**
124
+ * Validates parameters for an effect, clamps numbers to allowed ranges
125
+ * or applies default values in case of wrong non-numeric values.
126
+ * All unknown properties aren't modified.
127
+ * @param parameters Parameters candidate for an effect.
128
+ * @param effectDescription Description of an effect.
129
+ * @returns
130
+ */
131
+ function validateEffectParameters() {
132
+ var parameters = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
133
+ var effectDescription = arguments.length > 1 ? arguments[1] : undefined;
134
+ var result = (0, _lodash["default"])(parameters);
135
+ effectDescription.forEach(function (description) {
136
+ var defaultValue = description.defaultValue,
137
+ name = description.name,
138
+ type = description.type,
139
+ min = description.min,
140
+ max = description.max;
141
+ if (!Object.prototype.hasOwnProperty.call(result, name)) return;
142
+ var property = result[name];
143
+ if (type === 'color' || type === 'array') {
144
+ if (!Array.isArray(defaultValue)) return;
145
+ if (property.length !== (defaultValue === null || defaultValue === void 0 ? void 0 : defaultValue.length)) {
146
+ result[name] = defaultValue;
147
+ return;
148
+ }
149
+ defaultValue.forEach(function (v, i) {
150
+ var _defaultValue$i;
151
+ var value = property[i];
152
+ value = Number.isFinite(value) ? (0, _dataUtils.clamp)([min, max], value) : (_defaultValue$i = defaultValue[i]) !== null && _defaultValue$i !== void 0 ? _defaultValue$i : min;
153
+ if (value !== undefined) {
154
+ property[i] = value;
155
+ }
156
+ });
157
+ return;
158
+ }
159
+ var value = Number.isFinite(property) ? (0, _dataUtils.clamp)([min, max], property) : defaultValue !== null && defaultValue !== void 0 ? defaultValue : min;
160
+ if (value !== undefined) {
161
+ result[name] = value;
162
+ }
163
+ });
164
+ return result;
165
+ }
166
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfc29ydGFibGUiLCJyZXF1aXJlIiwiX3N1bmNhbGMiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX2xvZGFzaCIsIl9jb25zdGFudHMiLCJfdXRpbHMiLCJfZGF0YVV0aWxzIiwiY29tcHV0ZURlY2tFZmZlY3RzIiwiX3JlZiIsInZpc1N0YXRlIiwibWFwU3RhdGUiLCJlZmZlY3RPcmRlciIsIm1hcCIsImVmZmVjdElkIiwiZWZmZWN0IiwiZmluZEJ5SWQiLCJlZmZlY3RzIiwiaXNFbmFibGVkIiwiZGVja0VmZmVjdCIsInVwZGF0ZUVmZmVjdCIsImZpbHRlciIsImZpeEVmZmVjdE9yZGVyIiwiZXhwb3J0cyIsImxpZ2h0U2hhZG93RWZmZWN0IiwiZmluZCIsInR5cGUiLCJMSUdIVF9BTkRfU0hBRE9XX0VGRkVDVCIsImluZCIsImluZGV4T2YiLCJpZCIsInNwbGljZSIsInVuc2hpZnQiLCJyZW9yZGVyRWZmZWN0T3JkZXIiLCJvcmlnaW5FZmZlY3RJZCIsImRlc3RpbmF0aW9uRWZmZWN0SWQiLCJhY3RpdmVJbmRleCIsIm92ZXJJbmRleCIsImFycmF5TW92ZSIsImlzRGF5dGltZSIsImxhdCIsImxvbiIsInRpbWVzdGFtcCIsImRhdGUiLCJEYXRlIiwiX1N1bkNhbGMkZ2V0VGltZXMiLCJTdW5DYWxjIiwiZ2V0VGltZXMiLCJzdW5yaXNlIiwic3Vuc2V0IiwiX3JlZjIiLCJwYXJhbWV0ZXJzIiwidGltZU1vZGUiLCJzdW5MaWdodCIsImRpcmVjdGlvbmFsTGlnaHRzIiwiTElHSFRfQU5EX1NIQURPV19FRkZFQ1RfVElNRV9NT0RFUyIsImN1cnJlbnQiLCJub3ciLCJhbmltYXRpb24iLCJfdmlzU3RhdGUkYW5pbWF0aW9uQ28iLCJhbmltYXRpb25Db25maWciLCJjdXJyZW50VGltZSIsImZpbHRlcnMiLCJGSUxURVJfVFlQRVMiLCJ0aW1lUmFuZ2UiLCJ2aWV3IiwiRklMVEVSX1ZJRVdfVFlQRVMiLCJlbmxhcmdlZCIsInN5bmNlZFdpdGhMYXllclRpbWVsaW5lIiwiX2ZpbHRlciR2YWx1ZSQiLCJfZmlsdGVyJHZhbHVlIiwidmFsdWUiLCJsYXRpdHVkZSIsImxvbmdpdHVkZSIsIm91dHB1dFVuaWZvcm1TaGFkb3ciLCJpbnRlbnNpdHkiLCJzdW5MaWdodEludGVuc2l0eSIsInZhbGlkYXRlRWZmZWN0UGFyYW1ldGVycyIsImFyZ3VtZW50cyIsImxlbmd0aCIsInVuZGVmaW5lZCIsImVmZmVjdERlc2NyaXB0aW9uIiwicmVzdWx0IiwiY2xvbmVEZWVwIiwiZm9yRWFjaCIsImRlc2NyaXB0aW9uIiwiZGVmYXVsdFZhbHVlIiwibmFtZSIsIm1pbiIsIm1heCIsIk9iamVjdCIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsInByb3BlcnR5IiwiQXJyYXkiLCJpc0FycmF5IiwidiIsImkiLCJfZGVmYXVsdFZhbHVlJGkiLCJOdW1iZXIiLCJpc0Zpbml0ZSIsImNsYW1wIl0sInNvdXJjZXMiOlsiLi4vc3JjL2VmZmVjdC11dGlscy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQge2FycmF5TW92ZX0gZnJvbSAnQGRuZC1raXQvc29ydGFibGUnO1xuaW1wb3J0IFN1bkNhbGMgZnJvbSAnc3VuY2FsYyc7XG5pbXBvcnQgY2xvbmVEZWVwIGZyb20gJ2xvZGFzaC5jbG9uZWRlZXAnO1xuXG5pbXBvcnQge1Bvc3RQcm9jZXNzRWZmZWN0fSBmcm9tICdAZGVjay5nbC9jb3JlL3R5cGVkJztcblxuaW1wb3J0IHtcbiAgTElHSFRfQU5EX1NIQURPV19FRkZFQ1QsXG4gIExJR0hUX0FORF9TSEFET1dfRUZGRUNUX1RJTUVfTU9ERVMsXG4gIEZJTFRFUl9UWVBFUyxcbiAgRklMVEVSX1ZJRVdfVFlQRVNcbn0gZnJvbSAnQGtlcGxlci5nbC9jb25zdGFudHMnO1xuLy8gaW1wb3J0IHtWaXNTdGF0ZX0gZnJvbSAnQGtlcGxlci5nbC9zY2hlbWFzJztcbmltcG9ydCB7TWFwU3RhdGUsIEVmZmVjdCwgRWZmZWN0UHJvcHMsIEVmZmVjdERlc2NyaXB0aW9ufSBmcm9tICdAa2VwbGVyLmdsL3R5cGVzJztcbmltcG9ydCB7ZmluZEJ5SWR9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHtjbGFtcH0gZnJvbSAnLi9kYXRhLXV0aWxzJztcblxuLy8gVE9ETyBpc29sYXRlIHR5cGVzIC0gZGVwZW5kcyBvbiBAa2VwbGVyLmdsL3NjaGVtYXNcbnR5cGUgVmlzU3RhdGUgPSBhbnk7XG5cbmV4cG9ydCBmdW5jdGlvbiBjb21wdXRlRGVja0VmZmVjdHMoe1xuICB2aXNTdGF0ZSxcbiAgbWFwU3RhdGVcbn06IHtcbiAgdmlzU3RhdGU6IFZpc1N0YXRlO1xuICBtYXBTdGF0ZTogTWFwU3RhdGU7XG59KTogUG9zdFByb2Nlc3NFZmZlY3RbXSB7XG4gIC8vIFRPRE86IDEpIGRlY2sgZWZmZWN0cyBwZXIgZGVjayBjb250ZXh0IDIpIHByZXNlcnZlZCBiZXR3ZWVuIGRyYXdzXG4gIHJldHVybiB2aXNTdGF0ZS5lZmZlY3RPcmRlclxuICAgIC5tYXAoZWZmZWN0SWQgPT4ge1xuICAgICAgY29uc3QgZWZmZWN0ID0gZmluZEJ5SWQoZWZmZWN0SWQpKHZpc1N0YXRlLmVmZmVjdHMpIGFzIEVmZmVjdCB8IHVuZGVmaW5lZDtcbiAgICAgIGlmIChlZmZlY3Q/LmlzRW5hYmxlZCAmJiBlZmZlY3QuZGVja0VmZmVjdCkge1xuICAgICAgICB1cGRhdGVFZmZlY3Qoe3Zpc1N0YXRlLCBtYXBTdGF0ZSwgZWZmZWN0fSk7XG4gICAgICAgIHJldHVybiBlZmZlY3QuZGVja0VmZmVjdDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH0pXG4gICAgLmZpbHRlcihlZmZlY3QgPT4gZWZmZWN0KTtcbn1cblxuLyoqXG4gKiBBbHdheXMga2VlcCBsaWdodCAmIHNoYWRvdyBlZmZlY3QgYXQgdGhlIHRvcFxuICovXG5leHBvcnQgY29uc3QgZml4RWZmZWN0T3JkZXIgPSAoZWZmZWN0czogRWZmZWN0W10sIGVmZmVjdE9yZGVyOiBzdHJpbmdbXSk6IHN0cmluZ1tdID0+IHtcbiAgY29uc3QgbGlnaHRTaGFkb3dFZmZlY3QgPSBlZmZlY3RzLmZpbmQoZWZmZWN0ID0+IGVmZmVjdC50eXBlID09PSBMSUdIVF9BTkRfU0hBRE9XX0VGRkVDVC50eXBlKTtcbiAgaWYgKGxpZ2h0U2hhZG93RWZmZWN0KSB7XG4gICAgY29uc3QgaW5kID0gZWZmZWN0T3JkZXIuaW5kZXhPZihsaWdodFNoYWRvd0VmZmVjdC5pZCk7XG4gICAgaWYgKGluZCA+IDApIHtcbiAgICAgIGVmZmVjdE9yZGVyLnNwbGljZShpbmQsIDEpO1xuICAgICAgZWZmZWN0T3JkZXIudW5zaGlmdChsaWdodFNoYWRvd0VmZmVjdC5pZCk7XG4gICAgfVxuICB9XG4gIHJldHVybiBlZmZlY3RPcmRlcjtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiByZW9yZGVyRWZmZWN0T3JkZXIoXG4gIGVmZmVjdE9yZGVyOiBzdHJpbmdbXSxcbiAgb3JpZ2luRWZmZWN0SWQ6IHN0cmluZyxcbiAgZGVzdGluYXRpb25FZmZlY3RJZDogc3RyaW5nXG4pOiBzdHJpbmdbXSB7XG4gIGNvbnN0IGFjdGl2ZUluZGV4ID0gZWZmZWN0T3JkZXIuaW5kZXhPZihvcmlnaW5FZmZlY3RJZCk7XG4gIGNvbnN0IG92ZXJJbmRleCA9IGVmZmVjdE9yZGVyLmluZGV4T2YoZGVzdGluYXRpb25FZmZlY3RJZCk7XG4gIHJldHVybiBhcnJheU1vdmUoZWZmZWN0T3JkZXIsIGFjdGl2ZUluZGV4LCBvdmVySW5kZXgpO1xufVxuXG4vKipcbiAqIENoZWNrIGlmIHRoZSBjdXJyZW50IHRpbWUgaXMgZGF5dGltZSBhdCB0aGUgZ2l2ZW4gbG9jYXRpb25cbiAqIEBwYXJhbSB7bnVtYmVyfSBsYXQgTGF0aXR1ZGVcbiAqIEBwYXJhbSB7bnVtYmVyfSBsb24gTG9uZ2l0dWRlXG4gKiBAcGFyYW0ge251bWJlcn0gdGltZXN0YW1wIE1pbGxpc2Vjb25kcyBzaW5jZSB0aGUgVW5peCBFcG9jaFxuICogQHJldHVybnMgYm9vbGVhblxuICovXG5mdW5jdGlvbiBpc0RheXRpbWUobGF0LCBsb24sIHRpbWVzdGFtcCkge1xuICBjb25zdCBkYXRlID0gbmV3IERhdGUodGltZXN0YW1wKTtcbiAgY29uc3Qge3N1bnJpc2UsIHN1bnNldH0gPSBTdW5DYWxjLmdldFRpbWVzKGRhdGUsIGxhdCwgbG9uKTtcbiAgcmV0dXJuIGRhdGUgPj0gc3VucmlzZSAmJiBkYXRlIDw9IHN1bnNldDtcbn1cblxuLyoqXG4gKiBVcGRhdGUgZWZmZWN0IHRvIG1hdGNoIGxhdGVzdCB2aXMgYW5kIG1hcCBzdGF0ZXNcbiAqL1xuZnVuY3Rpb24gdXBkYXRlRWZmZWN0KHt2aXNTdGF0ZSwgbWFwU3RhdGUsIGVmZmVjdH0pIHtcbiAgaWYgKGVmZmVjdC50eXBlID09PSBMSUdIVF9BTkRfU0hBRE9XX0VGRkVDVC50eXBlKSB7XG4gICAgbGV0IHt0aW1lc3RhbXB9ID0gZWZmZWN0LnBhcmFtZXRlcnM7XG4gICAgY29uc3Qge3RpbWVNb2RlfSA9IGVmZmVjdC5wYXJhbWV0ZXJzO1xuICAgIGNvbnN0IHN1bkxpZ2h0ID0gZWZmZWN0LmRlY2tFZmZlY3QuZGlyZWN0aW9uYWxMaWdodHNbMF07XG5cbiAgICAvLyBzZXQgdGltZXN0YW1wIGZvciBzaGFkb3dcbiAgICBpZiAodGltZU1vZGUgPT09IExJR0hUX0FORF9TSEFET1dfRUZGRUNUX1RJTUVfTU9ERVMuY3VycmVudCkge1xuICAgICAgdGltZXN0YW1wID0gRGF0ZS5ub3coKTtcbiAgICAgIHN1bkxpZ2h0LnRpbWVzdGFtcCA9IHRpbWVzdGFtcDtcbiAgICB9IGVsc2UgaWYgKHRpbWVNb2RlID09PSBMSUdIVF9BTkRfU0hBRE9XX0VGRkVDVF9USU1FX01PREVTLmFuaW1hdGlvbikge1xuICAgICAgdGltZXN0YW1wID0gdmlzU3RhdGUuYW5pbWF0aW9uQ29uZmlnLmN1cnJlbnRUaW1lID8/IDA7XG4gICAgICBpZiAoIXRpbWVzdGFtcCkge1xuICAgICAgICBjb25zdCBmaWx0ZXIgPSB2aXNTdGF0ZS5maWx0ZXJzLmZpbmQoXG4gICAgICAgICAgZmlsdGVyID0+XG4gICAgICAgICAgICBmaWx0ZXIudHlwZSA9PT0gRklMVEVSX1RZUEVTLnRpbWVSYW5nZSAmJlxuICAgICAgICAgICAgKGZpbHRlci52aWV3ID09PSBGSUxURVJfVklFV19UWVBFUy5lbmxhcmdlZCB8fCBmaWx0ZXIuc3luY2VkV2l0aExheWVyVGltZWxpbmUpXG4gICAgICAgICk7XG4gICAgICAgIGlmIChmaWx0ZXIpIHtcbiAgICAgICAgICB0aW1lc3RhbXAgPSBmaWx0ZXIudmFsdWU/LlswXSA/PyAwO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBzdW5MaWdodC50aW1lc3RhbXAgPSB0aW1lc3RhbXA7XG4gICAgfVxuXG4gICAgLy8gb3V0cHV0IHVuaWZvcm0gc2hhZG93IGR1cmluZyBuaWdodHRpbWVcbiAgICBpZiAoaXNEYXl0aW1lKG1hcFN0YXRlLmxhdGl0dWRlLCBtYXBTdGF0ZS5sb25naXR1ZGUsIHRpbWVzdGFtcCkpIHtcbiAgICAgIGVmZmVjdC5kZWNrRWZmZWN0Lm91dHB1dFVuaWZvcm1TaGFkb3cgPSBmYWxzZTtcbiAgICAgIHN1bkxpZ2h0LmludGVuc2l0eSA9IGVmZmVjdC5wYXJhbWV0ZXJzLnN1bkxpZ2h0SW50ZW5zaXR5O1xuICAgIH0gZWxzZSB7XG4gICAgICBlZmZlY3QuZGVja0VmZmVjdC5vdXRwdXRVbmlmb3JtU2hhZG93ID0gdHJ1ZTtcbiAgICAgIHN1bkxpZ2h0LmludGVuc2l0eSA9IDA7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogVmFsaWRhdGVzIHBhcmFtZXRlcnMgZm9yIGFuIGVmZmVjdCwgY2xhbXBzIG51bWJlcnMgdG8gYWxsb3dlZCByYW5nZXNcbiAqIG9yIGFwcGxpZXMgZGVmYXVsdCB2YWx1ZXMgaW4gY2FzZSBvZiB3cm9uZyBub24tbnVtZXJpYyB2YWx1ZXMuXG4gKiBBbGwgdW5rbm93biBwcm9wZXJ0aWVzIGFyZW4ndCBtb2RpZmllZC5cbiAqIEBwYXJhbSBwYXJhbWV0ZXJzIFBhcmFtZXRlcnMgY2FuZGlkYXRlIGZvciBhbiBlZmZlY3QuXG4gKiBAcGFyYW0gZWZmZWN0RGVzY3JpcHRpb24gRGVzY3JpcHRpb24gb2YgYW4gZWZmZWN0LlxuICogQHJldHVybnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlRWZmZWN0UGFyYW1ldGVycyhcbiAgcGFyYW1ldGVyczogRWZmZWN0UHJvcHNbJ3BhcmFtZXRlcnMnXSA9IHt9LFxuICBlZmZlY3REZXNjcmlwdGlvbjogRWZmZWN0RGVzY3JpcHRpb25bJ3BhcmFtZXRlcnMnXVxuKTogRWZmZWN0UHJvcHNbJ3BhcmFtZXRlcnMnXSB7XG4gIGNvbnN0IHJlc3VsdCA9IGNsb25lRGVlcChwYXJhbWV0ZXJzKTtcbiAgZWZmZWN0RGVzY3JpcHRpb24uZm9yRWFjaChkZXNjcmlwdGlvbiA9PiB7XG4gICAgY29uc3Qge2RlZmF1bHRWYWx1ZSwgbmFtZSwgdHlwZSwgbWluLCBtYXh9ID0gZGVzY3JpcHRpb247XG5cbiAgICBpZiAoIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChyZXN1bHQsIG5hbWUpKSByZXR1cm47XG4gICAgY29uc3QgcHJvcGVydHkgPSByZXN1bHRbbmFtZV07XG5cbiAgICBpZiAodHlwZSA9PT0gJ2NvbG9yJyB8fCB0eXBlID09PSAnYXJyYXknKSB7XG4gICAgICBpZiAoIUFycmF5LmlzQXJyYXkoZGVmYXVsdFZhbHVlKSkgcmV0dXJuO1xuICAgICAgaWYgKHByb3BlcnR5Lmxlbmd0aCAhPT0gZGVmYXVsdFZhbHVlPy5sZW5ndGgpIHtcbiAgICAgICAgcmVzdWx0W25hbWVdID0gZGVmYXVsdFZhbHVlO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBkZWZhdWx0VmFsdWUuZm9yRWFjaCgodiwgaSkgPT4ge1xuICAgICAgICBsZXQgdmFsdWUgPSBwcm9wZXJ0eVtpXTtcbiAgICAgICAgdmFsdWUgPSBOdW1iZXIuaXNGaW5pdGUodmFsdWUpID8gY2xhbXAoW21pbiwgbWF4XSwgdmFsdWUpIDogZGVmYXVsdFZhbHVlW2ldID8/IG1pbjtcbiAgICAgICAgaWYgKHZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBwcm9wZXJ0eVtpXSA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB2YWx1ZSA9IE51bWJlci5pc0Zpbml0ZShwcm9wZXJ0eSkgPyBjbGFtcChbbWluLCBtYXhdLCBwcm9wZXJ0eSkgOiBkZWZhdWx0VmFsdWUgPz8gbWluO1xuXG4gICAgaWYgKHZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJlc3VsdFtuYW1lXSA9IHZhbHVlO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiByZXN1bHQ7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFHQSxJQUFBQSxTQUFBLEdBQUFDLE9BQUE7QUFDQSxJQUFBQyxRQUFBLEdBQUFDLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBRyxPQUFBLEdBQUFELHNCQUFBLENBQUFGLE9BQUE7QUFJQSxJQUFBSSxVQUFBLEdBQUFKLE9BQUE7QUFRQSxJQUFBSyxNQUFBLEdBQUFMLE9BQUE7QUFDQSxJQUFBTSxVQUFBLEdBQUFOLE9BQUE7QUFsQkE7QUFDQTs7QUFjQTs7QUFLQTs7QUFHTyxTQUFTTyxrQkFBa0JBLENBQUFDLElBQUEsRUFNVjtFQUFBLElBTHRCQyxRQUFRLEdBQUFELElBQUEsQ0FBUkMsUUFBUTtJQUNSQyxRQUFRLEdBQUFGLElBQUEsQ0FBUkUsUUFBUTtFQUtSO0VBQ0EsT0FBT0QsUUFBUSxDQUFDRSxXQUFXLENBQ3hCQyxHQUFHLENBQUMsVUFBQUMsUUFBUSxFQUFJO0lBQ2YsSUFBTUMsTUFBTSxHQUFHLElBQUFDLGVBQVEsRUFBQ0YsUUFBUSxDQUFDLENBQUNKLFFBQVEsQ0FBQ08sT0FBTyxDQUF1QjtJQUN6RSxJQUFJRixNQUFNLGFBQU5BLE1BQU0sZUFBTkEsTUFB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
@@ -0,0 +1,9 @@
1
+ /**
2
+ * This method is used to create an html file which will inlcude kepler and map data
3
+ * @param {Object} options Object that collects all necessary data to create the html file
4
+ * @param {string} options.mapboxApiAccessToken Mapbox token used to fetch mapbox tiles
5
+ * @param {Array<Object>} options.datasets Data to include in the map
6
+ * @param {Object} options.config this object will contain the full kepler.gl instance configuration {mapState, mapStyle, visState}
7
+ * @param {string} version which version of Kepler.gl to load.
8
+ */
9
+ export declare const exportMapToHTML: (options: any, version?: string) => string;