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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (73) hide show
  1. package/package.json +14 -10
  2. package/dist/aggregate-utils.d.ts +0 -3
  3. package/dist/aggregate-utils.js +0 -75
  4. package/dist/arrow-data-container.d.ts +0 -54
  5. package/dist/arrow-data-container.js +0 -360
  6. package/dist/color-utils.d.ts +0 -51
  7. package/dist/color-utils.js +0 -161
  8. package/dist/data-container-interface.d.ts +0 -133
  9. package/dist/data-container-interface.js +0 -6
  10. package/dist/data-container-utils.d.ts +0 -30
  11. package/dist/data-container-utils.js +0 -88
  12. package/dist/data-row.d.ts +0 -59
  13. package/dist/data-row.js +0 -126
  14. package/dist/data-scale-utils.d.ts +0 -23
  15. package/dist/data-scale-utils.js +0 -62
  16. package/dist/data-utils.d.ts +0 -103
  17. package/dist/data-utils.js +0 -502
  18. package/dist/dataset-utils.d.ts +0 -116
  19. package/dist/dataset-utils.js +0 -614
  20. package/dist/dom-to-image.d.ts +0 -73
  21. package/dist/dom-to-image.js +0 -489
  22. package/dist/dom-utils.d.ts +0 -23
  23. package/dist/dom-utils.js +0 -434
  24. package/dist/effect-utils.d.ts +0 -23
  25. package/dist/effect-utils.js +0 -196
  26. package/dist/export-map-html.d.ts +0 -9
  27. package/dist/export-map-html.js +0 -28
  28. package/dist/export-utils.d.ts +0 -53
  29. package/dist/export-utils.js +0 -262
  30. package/dist/filter-utils.d.ts +0 -326
  31. package/dist/filter-utils.js +0 -1333
  32. package/dist/format.d.ts +0 -1
  33. package/dist/format.js +0 -17
  34. package/dist/gl-utils.d.ts +0 -1
  35. package/dist/gl-utils.js +0 -35
  36. package/dist/h3-utils.d.ts +0 -21
  37. package/dist/h3-utils.js +0 -81
  38. package/dist/index.d.ts +0 -36
  39. package/dist/index.js +0 -772
  40. package/dist/indexed-data-container.d.ts +0 -34
  41. package/dist/indexed-data-container.js +0 -254
  42. package/dist/locale-utils.d.ts +0 -2
  43. package/dist/locale-utils.js +0 -54
  44. package/dist/map-info-utils.d.ts +0 -1
  45. package/dist/map-info-utils.js +0 -15
  46. package/dist/map-style-utils/mapbox-gl-style-editor.d.ts +0 -65
  47. package/dist/map-style-utils/mapbox-gl-style-editor.js +0 -218
  48. package/dist/map-style-utils/mapbox-utils.d.ts +0 -9
  49. package/dist/map-style-utils/mapbox-utils.js +0 -48
  50. package/dist/map-utils.d.ts +0 -9
  51. package/dist/map-utils.js +0 -65
  52. package/dist/mapbox-utils.d.ts +0 -7
  53. package/dist/mapbox-utils.js +0 -22
  54. package/dist/noop.d.ts +0 -1
  55. package/dist/noop.js +0 -11
  56. package/dist/notifications-utils.d.ts +0 -42
  57. package/dist/notifications-utils.js +0 -85
  58. package/dist/observe-dimensions.d.ts +0 -15
  59. package/dist/observe-dimensions.js +0 -151
  60. package/dist/plot.d.ts +0 -6
  61. package/dist/plot.js +0 -31
  62. package/dist/projection-utils.d.ts +0 -21
  63. package/dist/projection-utils.js +0 -100
  64. package/dist/row-data-container.d.ts +0 -31
  65. package/dist/row-data-container.js +0 -252
  66. package/dist/searcher-utils.d.ts +0 -1
  67. package/dist/searcher-utils.js +0 -28
  68. package/dist/split-map-utils.d.ts +0 -32
  69. package/dist/split-map-utils.js +0 -114
  70. package/dist/time.d.ts +0 -16
  71. package/dist/time.js +0 -89
  72. package/dist/utils.d.ts +0 -116
  73. package/dist/utils.js +0 -305
@@ -1,73 +0,0 @@
1
- declare const domtoimage: {
2
- toSvg: typeof toSvg;
3
- toPng: typeof toPng;
4
- toJpeg: typeof toJpeg;
5
- toBlob: typeof toBlob;
6
- toPixelData: typeof toPixelData;
7
- impl: {
8
- fontFaces: {
9
- resolveAll: () => Promise<string>;
10
- impl: {
11
- readAll: () => Promise<any>;
12
- };
13
- };
14
- images: {
15
- inlineAll: (node: any) => any;
16
- impl: {
17
- newImage: (element: any) => {
18
- inline: (get: any) => Promise<unknown>;
19
- };
20
- };
21
- };
22
- inliner: {
23
- inlineAll: (string: any, baseUrl: any, get: any) => Promise<any>;
24
- shouldProcess: (string: any) => boolean;
25
- impl: {
26
- readUrls: (string: any) => string[];
27
- inline: (string: any, url: any, baseUrl: any, get: any) => Promise<any>;
28
- };
29
- };
30
- options: any;
31
- };
32
- };
33
- /**
34
- * @param {Node} node - The DOM Node object to render
35
- * @param {Object} options - Rendering options
36
- * @param {Function} [options.filter] - Should return true if passed node should be included in the output
37
- * (excluding node means excluding it's children as well). Not called on the root node.
38
- * @param {String} [options.bgcolor] - color for the background, any valid CSS color value.
39
- * @param {Number} [options.width] - width to be applied to node before rendering.
40
- * @param {Number} [options.height] - height to be applied to node before rendering.
41
- * @param {Object} [options.style] - an object whose properties to be copied to node's style before rendering.
42
- * @param {Number} [options.quality] - a Number between 0 and 1 indicating image quality (applicable to JPEG only), defaults to 1.0.
43
- * @param {boolean} [options.escapeXhtmlForWebpack] - whether to apply fix for uglify error in dom-to-image (should be true for webpack builds), defaults to true.
44
- * @param {String} [options.imagePlaceholder] - dataURL to use as a placeholder for failed images, default behaviour is to fail fast on images we can't fetch
45
- * @param {Boolean} [options.cacheBust] - set to true to cache bust by appending the time to the request url
46
- * @return {Promise} - A promise that is fulfilled with a SVG image data URL
47
- * */
48
- declare function toSvg(node: any, options: any): Promise<string>;
49
- /**
50
- * @param {Node} node - The DOM Node object to render
51
- * @param {Object} options - Rendering options
52
- * @return {Promise} - A promise that is fulfilled with a Uint8Array containing RGBA pixel data.
53
- * */
54
- declare function toPixelData(node: any, options: any): Promise<any>;
55
- /**
56
- * @param {Node} node - The DOM Node object to render
57
- * @param {Object} options - Rendering options
58
- * @return {Promise} - A promise that is fulfilled with a PNG image data URL
59
- * */
60
- declare function toPng(node: any, options: any): Promise<any>;
61
- /**
62
- * @param {Node} node - The DOM Node object to render
63
- * @param {Object} options - Rendering options
64
- * @return {Promise} - A promise that is fulfilled with a JPEG image data URL
65
- * */
66
- declare function toJpeg(node: any, options: any): Promise<any>;
67
- /**
68
- * @param {Node} node - The DOM Node object to render
69
- * @param {Object} options - Rendering options
70
- * @return {Promise} - A promise that is fulfilled with a PNG image blob
71
- * */
72
- declare function toBlob(node: any, options: any): Promise<unknown>;
73
- export default domtoimage;
@@ -1,489 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports["default"] = void 0;
9
-
10
- var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
11
-
12
- var _window = _interopRequireDefault(require("global/window"));
13
-
14
- var _document = _interopRequireDefault(require("global/document"));
15
-
16
- var _console = _interopRequireDefault(require("global/console"));
17
-
18
- var _miniSvgDataUri = _interopRequireDefault(require("mini-svg-data-uri"));
19
-
20
- var _constants = require("@kepler.gl/constants");
21
-
22
- var _domUtils = require("./dom-utils");
23
-
24
- // SPDX-License-Identifier: MIT
25
- // Copyright contributors to the kepler.gl project
26
-
27
- /**
28
- * This file is copied from https://github.com/tsayen/dom-to-image
29
- * Modified by heshan0131 to allow loading external stylesheets and inline webfonts
30
- */
31
- var inliner = newInliner();
32
- var fontFaces = newFontFaces();
33
- var images = newImages(); // Default impl options
34
-
35
- var defaultOptions = {
36
- // Default is to fail on error, no placeholder
37
- imagePlaceholder: undefined,
38
- // Default cache bust is false, it will use the cache
39
- cacheBust: false
40
- };
41
- var domtoimage = {
42
- toSvg: toSvg,
43
- toPng: toPng,
44
- toJpeg: toJpeg,
45
- toBlob: toBlob,
46
- toPixelData: toPixelData,
47
- impl: {
48
- fontFaces: fontFaces,
49
- images: images,
50
- inliner: inliner,
51
- options: {}
52
- }
53
- };
54
- /**
55
- * @param {Node} node - The DOM Node object to render
56
- * @param {Object} options - Rendering options
57
- * @param {Function} [options.filter] - Should return true if passed node should be included in the output
58
- * (excluding node means excluding it's children as well). Not called on the root node.
59
- * @param {String} [options.bgcolor] - color for the background, any valid CSS color value.
60
- * @param {Number} [options.width] - width to be applied to node before rendering.
61
- * @param {Number} [options.height] - height to be applied to node before rendering.
62
- * @param {Object} [options.style] - an object whose properties to be copied to node's style before rendering.
63
- * @param {Number} [options.quality] - a Number between 0 and 1 indicating image quality (applicable to JPEG only), defaults to 1.0.
64
- * @param {boolean} [options.escapeXhtmlForWebpack] - whether to apply fix for uglify error in dom-to-image (should be true for webpack builds), defaults to true.
65
- * @param {String} [options.imagePlaceholder] - dataURL to use as a placeholder for failed images, default behaviour is to fail fast on images we can't fetch
66
- * @param {Boolean} [options.cacheBust] - set to true to cache bust by appending the time to the request url
67
- * @return {Promise} - A promise that is fulfilled with a SVG image data URL
68
- * */
69
-
70
- function toSvg(node, options) {
71
- options = options || {};
72
- copyOptions(options);
73
- return Promise.resolve(node).then(function (nd) {
74
- return cloneNode(nd, options.filter, true);
75
- }).then(embedFonts).then(inlineImages).then(applyOptions).then(function (clone) {
76
- return makeSvgDataUri(clone, options.width || (0, _domUtils.getWidth)(node), options.height || (0, _domUtils.getHeight)(node), options.escapeXhtmlForWebpack);
77
- });
78
-
79
- function applyOptions(clone) {
80
- if (options.bgcolor) clone.style.backgroundColor = options.bgcolor;
81
- if (options.width) clone.style.width = "".concat(options.width, "px");
82
- if (options.height) clone.style.height = "".concat(options.height, "px");
83
- if (options.style) Object.keys(options.style).forEach(function (property) {
84
- clone.style[property] = options.style[property];
85
- });
86
- return clone;
87
- }
88
- }
89
- /**
90
- * @param {Node} node - The DOM Node object to render
91
- * @param {Object} options - Rendering options
92
- * @return {Promise} - A promise that is fulfilled with a Uint8Array containing RGBA pixel data.
93
- * */
94
-
95
-
96
- function toPixelData(node, options) {
97
- return draw(node, options || {}).then(function (canvas) {
98
- return canvas.getContext('2d').getImageData(0, 0, (0, _domUtils.getWidth)(node), (0, _domUtils.getHeight)(node)).data;
99
- });
100
- }
101
- /**
102
- * @param {Node} node - The DOM Node object to render
103
- * @param {Object} options - Rendering options
104
- * @return {Promise} - A promise that is fulfilled with a PNG image data URL
105
- * */
106
-
107
-
108
- function toPng(node, options) {
109
- return draw(node, options || {}).then(function (canvas) {
110
- return canvas.toDataURL();
111
- });
112
- }
113
- /**
114
- * @param {Node} node - The DOM Node object to render
115
- * @param {Object} options - Rendering options
116
- * @return {Promise} - A promise that is fulfilled with a JPEG image data URL
117
- * */
118
-
119
-
120
- function toJpeg(node, options) {
121
- options = options || {};
122
- return draw(node, options).then(function (canvas) {
123
- return canvas.toDataURL('image/jpeg', options.quality || 1.0);
124
- });
125
- }
126
- /**
127
- * @param {Node} node - The DOM Node object to render
128
- * @param {Object} options - Rendering options
129
- * @return {Promise} - A promise that is fulfilled with a PNG image blob
130
- * */
131
-
132
-
133
- function toBlob(node, options) {
134
- return draw(node, options || {}).then(_domUtils.canvasToBlob);
135
- }
136
-
137
- function copyOptions(options) {
138
- // Copy options to impl options for use in impl
139
- if (typeof options.imagePlaceholder === 'undefined') {
140
- domtoimage.impl.options.imagePlaceholder = defaultOptions.imagePlaceholder;
141
- } else {
142
- domtoimage.impl.options.imagePlaceholder = options.imagePlaceholder;
143
- }
144
-
145
- if (typeof options.cacheBust === 'undefined') {
146
- domtoimage.impl.options.cacheBust = defaultOptions.cacheBust;
147
- } else {
148
- domtoimage.impl.options.cacheBust = options.cacheBust;
149
- }
150
- }
151
-
152
- function draw(domNode, options) {
153
- return toSvg(domNode, options).then(_domUtils.makeImage).then((0, _domUtils.delay)(100)).then(function (image) {
154
- var canvas = newCanvas(domNode);
155
- canvas.getContext('2d').drawImage(image, 0, 0);
156
- return canvas;
157
- });
158
-
159
- function newCanvas(dNode) {
160
- var canvas = _document["default"].createElement('canvas');
161
-
162
- canvas.width = options.width || (0, _domUtils.getWidth)(dNode);
163
- canvas.height = options.height || (0, _domUtils.getHeight)(dNode);
164
-
165
- if (options.bgcolor) {
166
- var ctx = canvas.getContext('2d');
167
- ctx.fillStyle = options.bgcolor;
168
- ctx.fillRect(0, 0, canvas.width, canvas.height);
169
- }
170
-
171
- return canvas;
172
- }
173
- }
174
-
175
- function cloneNode(node, filter, root) {
176
- if (!root && filter && !filter(node)) {
177
- return Promise.resolve();
178
- }
179
-
180
- return Promise.resolve(node).then(makeNodeCopy).then(function (clone) {
181
- return cloneChildren(node, clone, filter);
182
- }).then(function (clone) {
183
- return (0, _domUtils.processClone)(node, clone);
184
- });
185
-
186
- function makeNodeCopy(nd) {
187
- if (nd instanceof _window["default"].HTMLCanvasElement) {
188
- return (0, _domUtils.makeImage)(nd.toDataURL());
189
- }
190
-
191
- return nd.cloneNode(false);
192
- }
193
-
194
- function cloneChildrenInOrder(parent, arrChildren, flt) {
195
- var done = Promise.resolve();
196
- arrChildren.forEach(function (child) {
197
- done = done.then(function () {
198
- return cloneNode(child, flt, null);
199
- }).then(function (childClone) {
200
- if (childClone) {
201
- parent.appendChild(childClone);
202
- }
203
- });
204
- });
205
- return done;
206
- }
207
-
208
- function cloneChildren(original, clone, flt) {
209
- var children = original.childNodes;
210
-
211
- if (children.length === 0) {
212
- return Promise.resolve(clone);
213
- }
214
-
215
- return cloneChildrenInOrder(clone, (0, _domUtils.asArray)(children), flt).then(function () {
216
- return clone;
217
- });
218
- }
219
- }
220
-
221
- function embedFonts(node) {
222
- return fontFaces.resolveAll().then(function (cssText) {
223
- var styleNode = _document["default"].createElement('style');
224
-
225
- node.appendChild(styleNode);
226
- styleNode.appendChild(_document["default"].createTextNode(cssText));
227
- return node;
228
- });
229
- }
230
-
231
- function inlineImages(node) {
232
- return images.inlineAll(node).then(function () {
233
- return node;
234
- });
235
- }
236
-
237
- function makeSvgDataUri(node, width, height) {
238
- var escapeXhtmlForWebpack = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;
239
- return Promise.resolve(node).then(function (nd) {
240
- nd.setAttribute('xmlns', 'http://www.w3.org/1999/xhtml');
241
- var serializedString = new _window["default"].XMLSerializer().serializeToString(nd);
242
- var xhtml = escapeXhtmlForWebpack ? (0, _domUtils.escapeXhtml)(serializedString) : serializedString;
243
- var foreignObject = "<foreignObject x=\"0\" y=\"0\" width=\"100%\" height=\"100%\">".concat(xhtml, "</foreignObject>");
244
- var svgStr = "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"".concat(width, "\" height=\"").concat(height, "\">").concat(foreignObject, "</svg>"); // Optimizing SVGs in data URIs
245
- // see https://codepen.io/tigt/post/optimizing-svgs-in-data-uris
246
- // the best way of encoding SVG in a data: URI is data:image/svg+xml,[actual data].
247
- // We don’t need the ;charset=utf-8 parameter because the given SVG is ASCII.
248
-
249
- return (0, _miniSvgDataUri["default"])(svgStr);
250
- });
251
- }
252
-
253
- function newInliner() {
254
- var URL_REGEX = /url\(['"]?([^'"]+?)['"]?\)/g;
255
- return {
256
- inlineAll: inlineAll,
257
- shouldProcess: shouldProcess,
258
- impl: {
259
- readUrls: readUrls,
260
- inline: inline
261
- }
262
- };
263
-
264
- function shouldProcess(string) {
265
- return string.search(URL_REGEX) !== -1;
266
- }
267
-
268
- function readUrls(string) {
269
- var result = [];
270
- var match;
271
-
272
- while ((match = URL_REGEX.exec(string)) !== null) {
273
- result.push(match[1]);
274
- }
275
-
276
- return result.filter(function (url) {
277
- return !(0, _domUtils.isDataUrl)(url);
278
- });
279
- }
280
-
281
- function urlAsRegex(url0) {
282
- return new RegExp("(url\\(['\"]?)(".concat((0, _domUtils.escape)(url0), ")(['\"]?\\))"), 'g');
283
- }
284
-
285
- function inline(string, url, baseUrl, get) {
286
- return Promise.resolve(url).then(function (ul) {
287
- return baseUrl ? (0, _domUtils.resolveUrl)(ul, baseUrl) : ul;
288
- }).then(function (ul) {
289
- return typeof get === 'function' ? get(ul) : (0, _domUtils.getAndEncode)(ul, domtoimage.impl.options);
290
- }).then(function (data) {
291
- return (0, _domUtils.dataAsUrl)(data, (0, _domUtils.mimeType)(url));
292
- }).then(function (dataUrl) {
293
- return string.replace(urlAsRegex(url), "$1".concat(dataUrl, "$3"));
294
- });
295
- }
296
-
297
- function inlineAll(string, baseUrl, get) {
298
- if (!shouldProcess(string) || (0, _domUtils.isSrcAsDataUrl)(string)) {
299
- return Promise.resolve(string);
300
- }
301
-
302
- return Promise.resolve(string).then(readUrls).then(function (urls) {
303
- var done = Promise.resolve(string);
304
- urls.forEach(function (url) {
305
- done = done.then(function (str) {
306
- return inline(str, url, baseUrl, get);
307
- });
308
- });
309
- return done;
310
- });
311
- }
312
- }
313
-
314
- function newFontFaces() {
315
- return {
316
- resolveAll: resolveAll,
317
- impl: {
318
- readAll: readAll
319
- }
320
- };
321
-
322
- function resolveAll() {
323
- return readAll().then(function (webFonts) {
324
- return Promise.all(webFonts.map(function (webFont) {
325
- return webFont.resolve();
326
- }));
327
- }).then(function (cssStrings) {
328
- return cssStrings.join('\n');
329
- });
330
- }
331
-
332
- function readAll() {
333
- return Promise.resolve((0, _domUtils.asArray)(_document["default"].styleSheets)).then(loadExternalStyleSheets).then(getCssRules).then(selectWebFontRules).then(function (rules) {
334
- return rules.map(newWebFont);
335
- });
336
-
337
- function selectWebFontRules(cssRules) {
338
- return cssRules.filter(function (rule) {
339
- return rule.type === _window["default"].CSSRule.FONT_FACE_RULE;
340
- }).filter(function (rule) {
341
- return inliner.shouldProcess(rule.style.getPropertyValue('src'));
342
- });
343
- }
344
-
345
- function loadExternalStyleSheets(styleSheets) {
346
- return Promise.all(styleSheets.map(function (sheet) {
347
- if (sheet.href) {
348
- // cloudfont doesn't have allow origin header properly set
349
- // error response will remain in cache
350
- var cache = sheet.href.includes('uber-fonts') ? 'no-cache' : 'default';
351
- return _window["default"].fetch(sheet.href, {
352
- credentials: 'omit',
353
- cache: cache
354
- }).then(function (response) {
355
- return response.text();
356
- }).then(function (text) {
357
- var result = (0, _domUtils.setStyleSheetBaseHref)(text, sheet.href);
358
- return (0, _domUtils.toStyleSheet)(result);
359
- })["catch"](function (err) {
360
- // Handle any error that occurred in any of the previous
361
- // promises in the chain. stylesheet failed to load should not stop
362
- // the process, hence result in only a warning, instead of reject
363
- _console["default"].warn(_constants.IMAGE_EXPORT_ERRORS.styleSheet, sheet.href);
364
-
365
- _console["default"].log(err);
366
-
367
- return;
368
- });
369
- }
370
-
371
- return Promise.resolve(sheet);
372
- }));
373
- }
374
-
375
- function getCssRules(styleSheets) {
376
- var cssRules = [];
377
- styleSheets.forEach(function (sheet) {
378
- // try...catch because browser may not able to enumerate rules for cross-domain sheets
379
- if (!sheet) {
380
- return;
381
- }
382
-
383
- var rules;
384
-
385
- try {
386
- rules = sheet.rules || sheet.cssRules;
387
- } catch (e) {
388
- _console["default"].log("'Can't read the css rules of: ".concat(sheet.href), e);
389
-
390
- return;
391
- }
392
-
393
- if (rules && (0, _typeof2["default"])(rules) === 'object') {
394
- try {
395
- (0, _domUtils.asArray)(rules || []).forEach(cssRules.push.bind(cssRules));
396
- } catch (e) {
397
- _console["default"].log("Error while reading CSS rules from ".concat(sheet.href), e);
398
-
399
- return;
400
- }
401
- } else {
402
- _console["default"].log('getCssRules can not find cssRules');
403
-
404
- return;
405
- }
406
- });
407
- return cssRules;
408
- }
409
-
410
- function newWebFont(webFontRule) {
411
- return {
412
- resolve: function resolve() {
413
- var baseUrl = (webFontRule.parentStyleSheet || {}).href;
414
- return inliner.inlineAll(webFontRule.cssText, baseUrl, null);
415
- },
416
- src: function src() {
417
- return webFontRule.style.getPropertyValue('src');
418
- }
419
- };
420
- }
421
- }
422
- }
423
-
424
- function newImages() {
425
- return {
426
- inlineAll: inlineAll,
427
- impl: {
428
- newImage: newImage
429
- }
430
- };
431
-
432
- function newImage(element) {
433
- function inline(get) {
434
- if ((0, _domUtils.isDataUrl)(element.src)) {
435
- return Promise.resolve();
436
- }
437
-
438
- return Promise.resolve(element.src).then(function (ul) {
439
- return typeof get === 'function' ? get(ul) : (0, _domUtils.getAndEncode)(ul, domtoimage.impl.options);
440
- }).then(function (data) {
441
- return (0, _domUtils.dataAsUrl)(data, (0, _domUtils.mimeType)(element.src));
442
- }).then(function (dataUrl) {
443
- return new Promise(function (resolve, reject) {
444
- element.onload = resolve;
445
- element.onerror = reject;
446
- element.src = dataUrl;
447
- });
448
- });
449
- }
450
-
451
- return {
452
- inline: inline
453
- };
454
- }
455
-
456
- function inlineAll(node) {
457
- if (!(node instanceof Element)) {
458
- return Promise.resolve(node);
459
- }
460
-
461
- return inlineBackground(node).then(function () {
462
- if (node instanceof HTMLImageElement) {
463
- return newImage(node).inline(null);
464
- }
465
-
466
- return Promise.all((0, _domUtils.asArray)(node.childNodes).map(function (child) {
467
- return inlineAll(child);
468
- }));
469
- });
470
-
471
- function inlineBackground(nd) {
472
- var background = nd.style.getPropertyValue('background');
473
-
474
- if (!background) {
475
- return Promise.resolve(nd);
476
- }
477
-
478
- return inliner.inlineAll(background, null, null).then(function (inlined) {
479
- nd.style.setProperty('background', inlined, nd.style.getPropertyPriority('background'));
480
- }).then(function () {
481
- return nd;
482
- });
483
- }
484
- }
485
- }
486
-
487
- var _default = domtoimage;
488
- exports["default"] = _default;
489
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9kb20tdG8taW1hZ2UudHMiXSwibmFtZXMiOlsiaW5saW5lciIsIm5ld0lubGluZXIiLCJmb250RmFjZXMiLCJuZXdGb250RmFjZXMiLCJpbWFnZXMiLCJuZXdJbWFnZXMiLCJkZWZhdWx0T3B0aW9ucyIsImltYWdlUGxhY2Vob2xkZXIiLCJ1bmRlZmluZWQiLCJjYWNoZUJ1c3QiLCJkb210b2ltYWdlIiwidG9TdmciLCJ0b1BuZyIsInRvSnBlZyIsInRvQmxvYiIsInRvUGl4ZWxEYXRhIiwiaW1wbCIsIm9wdGlvbnMiLCJub2RlIiwiY29weU9wdGlvbnMiLCJQcm9taXNlIiwicmVzb2x2ZSIsInRoZW4iLCJuZCIsImNsb25lTm9kZSIsImZpbHRlciIsImVtYmVkRm9udHMiLCJpbmxpbmVJbWFnZXMiLCJhcHBseU9wdGlvbnMiLCJjbG9uZSIsIm1ha2VTdmdEYXRhVXJpIiwid2lkdGgiLCJoZWlnaHQiLCJlc2NhcGVYaHRtbEZvcldlYnBhY2siLCJiZ2NvbG9yIiwic3R5bGUiLCJiYWNrZ3JvdW5kQ29sb3IiLCJPYmplY3QiLCJrZXlzIiwiZm9yRWFjaCIsInByb3BlcnR5IiwiZHJhdyIsImNhbnZhcyIsImdldENvbnRleHQiLCJnZXRJbWFnZURhdGEiLCJkYXRhIiwidG9EYXRhVVJMIiwicXVhbGl0eSIsImNhbnZhc1RvQmxvYiIsImRvbU5vZGUiLCJtYWtlSW1hZ2UiLCJpbWFnZSIsIm5ld0NhbnZhcyIsImRyYXdJbWFnZSIsImROb2RlIiwiZG9jdW1lbnQiLCJjcmVhdGVFbGVtZW50IiwiY3R4IiwiZmlsbFN0eWxlIiwiZmlsbFJlY3QiLCJyb290IiwibWFrZU5vZGVDb3B5IiwiY2xvbmVDaGlsZHJlbiIsIndpbmRvdyIsIkhUTUxDYW52YXNFbGVtZW50IiwiY2xvbmVDaGlsZHJlbkluT3JkZXIiLCJwYXJlbnQiLCJhcnJDaGlsZHJlbiIsImZsdCIsImRvbmUiLCJjaGlsZCIsImNoaWxkQ2xvbmUiLCJhcHBlbmRDaGlsZCIsIm9yaWdpbmFsIiwiY2hpbGRyZW4iLCJjaGlsZE5vZGVzIiwibGVuZ3RoIiwicmVzb2x2ZUFsbCIsImNzc1RleHQiLCJzdHlsZU5vZGUiLCJjcmVhdGVUZXh0Tm9kZSIsImlubGluZUFsbCIsInNldEF0dHJpYnV0ZSIsInNlcmlhbGl6ZWRTdHJpbmciLCJYTUxTZXJpYWxpemVyIiwic2VyaWFsaXplVG9TdHJpbmciLCJ4aHRtbCIsImZvcmVpZ25PYmplY3QiLCJzdmdTdHIiLCJVUkxfUkVHRVgiLCJzaG91bGRQcm9jZXNzIiwicmVhZFVybHMiLCJpbmxpbmUiLCJzdHJpbmciLCJzZWFyY2giLCJyZXN1bHQiLCJtYXRjaCIsImV4ZWMiLCJwdXNoIiwidXJsIiwidXJsQXNSZWdleCIsInVybDAiLCJSZWdFeHAiLCJiYXNlVXJsIiwiZ2V0IiwidWwiLCJkYXRhVXJsIiwicmVwbGFjZSIsInVybHMiLCJzdHIiLCJyZWFkQWxsIiwid2ViRm9udHMiLCJhbGwiLCJtYXAiLCJ3ZWJGb250IiwiY3NzU3RyaW5ncyIsImpvaW4iLCJzdHlsZVNoZWV0cyIsImxvYWRFeHRlcm5hbFN0eWxlU2hlZXRzIiwiZ2V0Q3NzUnVsZXMiLCJzZWxlY3RXZWJGb250UnVsZXMiLCJydWxlcyIsIm5ld1dlYkZvbnQiLCJjc3NSdWxlcyIsInJ1bGUiLCJ0eXBlIiwiQ1NTUnVsZSIsIkZPTlRfRkFDRV9SVUxFIiwiZ2V0UHJvcGVydHlWYWx1ZSIsInNoZWV0IiwiaHJlZiIsImNhY2hlIiwiaW5jbHVkZXMiLCJmZXRjaCIsImNyZWRlbnRpYWxzIiwicmVzcG9uc2UiLCJ0ZXh0IiwiZXJyIiwiQ29uc29sZSIsIndhcm4iLCJJTUFHRV9FWFBPUlRfRVJST1JTIiwic3R5bGVTaGVldCIsImxvZyIsImUiLCJiaW5kIiwid2ViRm9udFJ1bGUiLCJwYXJlbnRTdHlsZVNoZWV0Iiwic3JjIiwibmV3SW1hZ2UiLCJlbGVtZW50IiwicmVqZWN0Iiwib25sb2FkIiwib25lcnJvciIsIkVsZW1lbnQiLCJpbmxpbmVCYWNrZ3JvdW5kIiwiSFRNTEltYWdlRWxlbWVudCIsImJhY2tncm91bmQiLCJpbmxpbmVkIiwic2V0UHJvcGVydHkiLCJnZXRQcm9wZXJ0eVByaW9yaXR5Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQVFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUVBOztBQWRBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUE0QkEsSUFBTUEsT0FBTyxHQUFHQyxVQUFVLEVBQTFCO0FBQ0EsSUFBTUMsU0FBUyxHQUFHQyxZQUFZLEVBQTlCO0FBQ0EsSUFBTUMsTUFBTSxHQUFHQyxTQUFTLEVBQXhCLEMsQ0FDQTs7QUFDQSxJQUFNQyxjQUFjLEdBQUc7QUFDckI7QUFDQUMsRUFBQUEsZ0JBQWdCLEVBQUVDLFNBRkc7QUFHckI7QUFDQUMsRUFBQUEsU0FBUyxFQUFFO0FBSlUsQ0FBdkI7QUFPQSxJQUFNQyxVQUFVLEdBQUc7QUFDakJDLEVBQUFBLEtBQUssRUFBTEEsS0FEaUI7QUFFakJDLEVBQUFBLEtBQUssRUFBTEEsS0FGaUI7QUFHakJDLEVBQUFBLE1BQU0sRUFBTkEsTUFIaUI7QUFJakJDLEVBQUFBLE1BQU0sRUFBTkEsTUFKaUI7QUFLakJDLEVBQUFBLFdBQVcsRUFBWEEsV0FMaUI7QUFNakJDLEVBQUFBLElBQUksRUFBRTtBQUNKZCxJQUFBQSxTQUFTLEVBQVRBLFNBREk7QUFFSkUsSUFBQUEsTUFBTSxFQUFOQSxNQUZJO0FBR0pKLElBQUFBLE9BQU8sRUFBUEEsT0FISTtBQUlKaUIsSUFBQUEsT0FBTyxFQUFFO0FBSkw7QUFOVyxDQUFuQjtBQWNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFDQSxTQUFTTixLQUFULENBQWVPLElBQWYsRUFBcUJELE9BQXJCLEVBQThCO0FBQzVCQSxFQUFBQSxPQUFPLEdBQUdBLE9BQU8sSUFBSSxFQUFyQjtBQUNBRSxFQUFBQSxXQUFXLENBQUNGLE9BQUQsQ0FBWDtBQUNBLFNBQU9HLE9BQU8sQ0FBQ0MsT0FBUixDQUFn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Q0QsS0FMTSxDQUFQOztBQU9BLGFBQVNvRixnQkFBVCxDQUEwQm5JLEVBQTFCLEVBQThCO0FBQzVCLFVBQU1xSSxVQUFVLEdBQUdySSxFQUFFLENBQUNZLEtBQUgsQ0FBUzZGLGdCQUFULENBQTBCLFlBQTFCLENBQW5COztBQUVBLFVBQUksQ0FBQzRCLFVBQUwsRUFBaUI7QUFDZixlQUFPeEksT0FBTyxDQUFDQyxPQUFSLENBQWdCRSxFQUFoQixDQUFQO0FBQ0Q7O0FBRUQsYUFBT3ZCLE9BQU8sQ0FDWGlGLFNBREksQ0FDTTJFLFVBRE4sRUFDa0IsSUFEbEIsRUFDd0IsSUFEeEIsRUFFSnRJLElBRkksQ0FFQyxVQUFBdUksT0FBTyxFQUFJO0FBQ2Z0SSxRQUFBQSxFQUFFLENBQUNZLEtBQUgsQ0FBUzJILFdBQVQsQ0FBcUIsWUFBckIsRUFBbUNELE9BQW5DLEVBQTRDdEksRUFBRSxDQUFDWSxLQUFILENBQVM0SCxtQkFBVCxDQUE2QixZQUE3QixDQUE1QztBQUNELE9BSkksRUFLSnpJLElBTEksQ0FLQztBQUFBLGVBQU1DLEVBQU47QUFBQSxPQUxELENBQVA7QUFNRDtBQUNGO0FBQ0Y7O2VBRWNiLFUiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG4vKipcbiAqIFRoaXMgZmlsZSBpcyBjb3BpZWQgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vdHNheWVuL2RvbS10by1pbWFnZVxuICogTW9kaWZpZWQgYnkgaGVzaGFuMDEzMSB0byBhbGxvdyBsb2FkaW5nIGV4dGVybmFsIHN0eWxlc2hlZXRzIGFuZCBpbmxpbmUgd2ViZm9udHNcbiAqL1xuXG5pbXBvcnQgd2luZG93IGZyb20gJ2dsb2JhbC93aW5kb3cnO1xuaW1wb3J0IGRvY3VtZW50IGZyb20gJ2dsb2JhbC9kb2N1bWVudCc7XG5pbXBvcnQgQ29uc29sZSBmcm9tICdnbG9iYWwvY29uc29sZSc7XG5pbXBvcnQgc3ZnVG9NaW5pRGF0YVVSSSBmcm9tICdtaW5pLXN2Zy1kYXRhLXVyaSc7XG5pbXBvcnQge0lNQUdFX0VYUE9SVF9FUlJPUlN9IGZyb20gJ0BrZXBsZXIuZ2wvY29uc3RhbnRzJztcblxuaW1wb3J0IHtcbiAgY2FudmFzVG9CbG9iLFxuICBlc2NhcGUsXG4gIGVzY2FwZVhodG1sLFxuICBkZWxheSxcbiAgcHJvY2Vzc0Nsb25lLFxuICBhc0FycmF5LFxuICBtYWtlSW1hZ2UsXG4gIG1pbWVUeXBlLFxuICBkYXRhQXNVcmwsXG4gIGlzRGF0YVVybCxcbiAgaXNTcmNBc0RhdGFVcmwsXG4gIHJlc29sdmVVcmwsXG4gIGdldFdpZHRoLFxuICBnZXRIZWlnaHQsXG4gIGdldEFuZEVuY29kZSxcbiAgc2V0U3R5bGVTaGVldEJhc2VIcmVmLFxuICB0b1N0eWxlU2hlZXRcbn0gZnJvbSAnLi9kb20tdXRpbHMnO1xuXG5jb25zdCBpbmxpbmVyID0gbmV3SW5saW5lcigpO1xuY29uc3QgZm9udEZhY2VzID0gbmV3Rm9udEZhY2VzKCk7XG5jb25zdCBpbWFnZXMgPSBuZXdJbWFnZXMoKTtcbi8vIERlZmF1bHQgaW1wbCBvcHRpb25zXG5jb25zdCBkZWZhdWx0T3B0aW9ucyA9IHtcbiAgLy8gRGVmYXVsdCBpcyB0byBmYWlsIG9uIGVycm9yLCBubyBwbGFjZWhvbGRlclxuICBpbWFnZVBsYWNlaG9sZGVyOiB1bmRlZmluZWQsXG4gIC8vIERlZmF1bHQgY2FjaGUgYnVzdCBpcyBmYWxzZSwgaXQgd2lsbCB1c2UgdGhlIGNhY2hlXG4gIGNhY2hlQnVzdDogZmFsc2Vcbn07XG5cbmNvbnN0IGRvbXRvaW1hZ2UgPSB7XG4gIHRvU3ZnLFxuICB0b1BuZyxcbiAgdG9KcGVnLFxuICB0b0Jsb2IsXG4gIHRvUGl4ZWxEYXRhLFxuICBpbXBsOiB7XG4gICAgZm9udEZhY2VzLFxuICAgIGltYWdlcyxcbiAgICBpbmxpbmVyLFxuICAgIG9wdGlvbnM6IHt9IGFzIGFueVxuICB9XG59O1xuXG4vKipcbiAqIEBwYXJhbSB7Tm9kZX0gbm9kZSAtIFRoZSBET00gTm9kZSBvYmplY3QgdG8gcmVuZGVyXG4gKiBAcGFyYW0ge09iamVjdH0gb3B0aW9ucyAtIFJlbmRlcmluZyBvcHRpb25zXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbb3B0aW9ucy5maWx0ZXJdIC0gU2hvdWxkIHJldHVybiB0cnVlIGlmIHBhc3NlZCBub2RlIHNob3VsZCBiZSBpbmNsdWRlZCBpbiB0aGUgb3V0cHV0XG4gKiAgICAgICAgICAoZXhjbHVkaW5nIG5vZGUgbWVhbnMgZXhjbHVkaW5nIGl0J3MgY2hpbGRyZW4gYXMgd2VsbCkuIE5vdCBjYWxsZWQgb24gdGhlIHJvb3Qgbm9kZS5cbiAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0aW9ucy5iZ2NvbG9yXSAtIGNvbG9yIGZvciB0aGUgYmFja2dyb3VuZCwgYW55IHZhbGlkIENTUyBjb2xvciB2YWx1ZS5cbiAqIEBwYXJhbSB7TnVtYmVyfSBbb3B0aW9ucy53aWR0aF0gLSB3aWR0aCB0byBiZSBhcHBsaWVkIHRvIG5vZGUgYmVmb3JlIHJlbmRlcmluZy5cbiAqIEBwYXJhbSB7TnVtYmVyfSBbb3B0aW9ucy5oZWlnaHRdIC0gaGVpZ2h0IHRvIGJlIGFwcGxpZWQgdG8gbm9kZSBiZWZvcmUgcmVuZGVyaW5nLlxuICogQHBhcmFtIHtPYmplY3R9IFtvcHRpb25zLnN0eWxlXSAtIGFuIG9iamVjdCB3aG9zZSBwcm9wZXJ0aWVzIHRvIGJlIGNvcGllZCB0byBub2RlJ3Mgc3R5bGUgYmVmb3JlIHJlbmRlcmluZy5cbiAqIEBwYXJhbSB7TnVtYmVyfSBbb3B0aW9ucy5xdWFsaXR5XSAtIGEgTnVtYmVyIGJldHdlZW4gMCBhbmQgMSBpbmRpY2F0aW5nIGltYWdlIHF1YWxpdHkgKGFwcGxpY2FibGUgdG8gSlBFRyBvbmx5KSwgZGVmYXVsdHMgdG8gMS4wLlxuICogQHBhcmFtIHtib29sZWFufSBbb3B0aW9ucy5lc2NhcGVYaHRtbEZvcldlYnBhY2tdIC0gd2hldGhlciB0byBhcHBseSBmaXggZm9yIHVnbGlmeSBlcnJvciBpbiBkb20tdG8taW1hZ2UgKHNob3VsZCBiZSB0cnVlIGZvciB3ZWJwYWNrIGJ1aWxkcyksIGRlZmF1bHRzIHRvIHRydWUuXG4gKiBAcGFyYW0ge1N0cmluZ30gW29wdGlvbnMuaW1hZ2VQbGFjZWhvbGRlcl0gLSBkYXRhVVJMIHRvIHVzZSBhcyBhIHBsYWNlaG9sZGVyIGZvciBmYWlsZWQgaW1hZ2VzLCBkZWZhdWx0IGJlaGF2aW91ciBpcyB0byBmYWlsIGZhc3Qgb24gaW1hZ2VzIHdlIGNhbid0IGZldGNoXG4gKiBAcGFyYW0ge0Jvb2xlYW59IFtvcHRpb25zLmNhY2hlQnVzdF0gLSBzZXQgdG8gdHJ1ZSB0byBjYWNoZSBidXN0IGJ5IGFwcGVuZGluZyB0aGUgdGltZSB0byB0aGUgcmVxdWVzdCB1cmxcbiAqIEByZXR1cm4ge1Byb21pc2V9IC0gQSBwcm9taXNlIHRoYXQgaXMgZnVsZmlsbGVkIHdpdGggYSBTVkcgaW1hZ2UgZGF0YSBVUkxcbiAqICovXG5mdW5jdGlvbiB0b1N2Zyhub2RlLCBvcHRpb25zKSB7XG4gIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuICBjb3B5T3B0aW9ucyhvcHRpb25zKTtcbiAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShub2RlKVxuICAgIC50aGVuKG5kID0+IGNsb25lTm9kZShuZCwgb3B0aW9ucy5maWx0ZXIsIHRydWUpKVxuICAgIC50aGVuKGVtYmVkRm9udHMpXG4gICAgLnRoZW4oaW5saW5lSW1hZ2VzKVxuICAgIC50aGVuKGFwcGx5T3B0aW9ucylcbiAgICAudGhlbihjbG9uZSA9PlxuICAgICAgbWFrZVN2Z0RhdGFVcmkoXG4gICAgICAgIGNsb25lLFxuICAgICAgICBvcHRpb25zLndpZHRoIHx8IGdldFdpZHRoKG5vZGUpLFxuICAgICAgICBvcHRpb25zLmhlaWdodCB8fCBnZXRIZWlnaHQobm9kZSksXG4gICAgICAgIG9wdGlvbnMuZXNjYXBlWGh0bWxGb3JXZWJwYWNrXG4gICAgICApXG4gICAgKTtcblxuICBmdW5jdGlvbiBhcHBseU9wdGlvbnMoY2xvbmUpIHtcbiAgICBpZiAob3B0aW9ucy5iZ2NvbG9yKSBjbG9uZS5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSBvcHRpb25zLmJnY29sb3I7XG5cbiAgICBpZiAob3B0aW9ucy53aWR0aCkgY2xvbmUuc3R5bGUud2lkdGggPSBgJHtvcHRpb25zLndpZHRofXB4YDtcbiAgICBpZiAob3B0aW9ucy5oZWlnaHQpIGNsb25lLnN0eWxlLmhlaWdodCA9IGAke29wdGlvbnMuaGVpZ2h0fXB4YDtcblxuICAgIGlmIChvcHRpb25zLnN0eWxlKVxuICAgICAgT2JqZWN0LmtleXMob3B0aW9ucy5zdHlsZSkuZm9yRWFjaChwcm9wZXJ0eSA9PiB7XG4gICAgICAgIGNsb25lLnN0eWxlW3Byb3BlcnR5XSA9IG9wdGlvbnMuc3R5bGVbcHJvcGVydHldO1xuICAgICAgfSk7XG5cbiAgICByZXR1cm4gY2xvbmU7XG4gIH1cbn1cblxuLyoqXG4gKiBAcGFyYW0ge05vZGV9IG5vZGUgLSBUaGUgRE9NIE5vZGUgb2JqZWN0IHRvIHJlbmRlclxuICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnMgLSBSZW5kZXJpbmcgb3B0aW9uc1xuICogQHJldHVybiB7UHJvbWlzZX0gLSBBIHByb21pc2UgdGhhdCBpcyBmdWxmaWxsZWQgd2l0aCBhIFVpbnQ4QXJyYXkgY29udGFpbmluZyBSR0JBIHBpeGVsIGRhdGEuXG4gKiAqL1xuZnVuY3Rpb24gdG9QaXhlbERhdGEobm9kZSwgb3B0aW9ucykge1xuICByZXR1cm4gZHJhdyhub2RlLCBvcHRpb25zIHx8IHt9KS50aGVuKFxuICAgIGNhbnZhcyA9PiBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKS5nZXRJbWFnZURhdGEoMCwgMCwgZ2V0V2lkdGgobm9kZSksIGdldEhlaWdodChub2RlKSkuZGF0YVxuICApO1xufVxuXG4vKipcbiAqIEBwYXJhbSB7Tm9kZX0gbm9kZSAtIFRoZSBET00gTm9kZSBvYmplY3QgdG8gcmVuZGVyXG4gKiBAcGFyYW0ge09iamVjdH0gb3B0aW9ucyAtIFJlbmRlcmluZyBvcHRpb25zXG4gKiBAcmV0dXJuIHtQcm9taXNlfSAtIEEgcHJvbWlzZSB0aGF0IGlzIGZ1bGZpbGxlZCB3aXRoIGEgUE5HIGltYWdlIGRhdGEgVVJMXG4gKiAqL1xuZnVuY3Rpb24gdG9Qbmcobm9kZSwgb3B0aW9ucykge1xuICByZXR1cm4gZHJhdyhub2RlLCBvcHRpb25zIHx8IHt9KS50aGVuKGNhbnZhcyA9PiBjYW52YXMudG9EYXRhVVJMKCkpO1xufVxuXG4vKipcbiAqIEBwYXJhbSB7Tm9kZX0gbm9kZSAtIFRoZSBET00gTm9kZSBvYmplY3QgdG8gcmVuZGVyXG4gKiBAcGFyYW0ge09iamVjdH0gb3B0aW9ucyAtIFJlbmRlcmluZyBvcHRpb25zXG4gKiBAcmV0dXJuIHtQcm9taXNlfSAtIEEgcHJvbWlzZSB0aGF0IGlzIGZ1bGZpbGxlZCB3aXRoIGEgSlBFRyBpbWFnZSBkYXRhIFVSTFxuICogKi9cbmZ1bmN0aW9uIHRvSnBlZyhub2RlLCBvcHRpb25zKSB7XG4gIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuICByZXR1cm4gZHJhdyhub2RlLCBvcHRpb25zKS50aGVuKGNhbnZhcyA9PiBjYW52YXMudG9EYXRhVVJMKCdpbWFnZS9qcGVnJywgb3B0aW9ucy5xdWFsaXR5IHx8IDEuMCkpO1xufVxuXG4vKipcbiAqIEBwYXJhbSB7Tm9kZX0gbm9kZSAtIFRoZSBET00gTm9kZSBvYmplY3QgdG8gcmVuZGVyXG4gKiBAcGFyYW0ge09iamVjdH0gb3B0aW9ucyAtIFJlbmRlcmluZyBvcHRpb25zXG4gKiBAcmV0dXJuIHtQcm9taXNlfSAtIEEgcHJvbWlzZSB0aGF0IGlzIGZ1bGZpbGxlZCB3aXRoIGEgUE5HIGltYWdlIGJsb2JcbiAqICovXG5mdW5jdGlvbiB0b0Jsb2Iobm9kZSwgb3B0aW9ucykge1xuICByZXR1cm4gZHJhdyhub2RlLCBvcHRpb25zIHx8IHt9KS50aGVuKGNhbnZhc1RvQmxvYik7XG59XG5cbmZ1bmN0aW9uIGNvcHlPcHRpb25zKG9wdGlvbnMpIHtcbiAgLy8gQ29weSBvcHRpb25zIHRvIGltcGwgb3B0aW9ucyBmb3IgdXNlIGluIGltcGxcbiAgaWYgKHR5cGVvZiBvcHRpb25zLmltYWdlUGxhY2Vob2xkZXIgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgZG9tdG9pbWFnZS5pbXBsLm9wdGlvbnMuaW1hZ2VQbGFjZWhvbGRlciA9IGRlZmF1bHRPcHRpb25zLmltYWdlUGxhY2Vob2xkZXI7XG4gIH0gZWxzZSB7XG4gICAgZG9tdG9pbWFnZS5pbXBsLm9wdGlvbnMuaW1hZ2VQbGFjZWhvbGRlciA9IG9wdGlvbnMuaW1hZ2VQbGFjZWhvbGRlcjtcbiAgfVxuXG4gIGlmICh0eXBlb2Ygb3B0aW9ucy5jYWNoZUJ1c3QgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgZG9tdG9pbWFnZS5pbXBsLm9wdGlvbnMuY2FjaGVCdXN0ID0gZGVmYXVsdE9wdGlvbnMuY2FjaGVCdXN0O1xuICB9IGVsc2Uge1xuICAgIGRvbXRvaW1hZ2UuaW1wbC5vcHRpb25zLmNhY2hlQnVzdCA9IG9wdGlvbnMuY2FjaGVCdXN0O1xuICB9XG59XG5cbmZ1bmN0aW9uIGRyYXcoZG9tTm9kZSwgb3B0aW9ucykge1xuICByZXR1cm4gdG9TdmcoZG9tTm9kZSwgb3B0aW9ucylcbiAgICAudGhlbihtYWtlSW1hZ2UpXG4gICAgLnRoZW4oZGVsYXkoMTAwKSlcbiAgICAudGhlbihpbWFnZSA9PiB7XG4gICAgICBjb25zdCBjYW52YXMgPSBuZXdDYW52YXMoZG9tTm9kZSk7XG4gICAgICBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKS5kcmF3SW1hZ2UoaW1hZ2UsIDAsIDApO1xuICAgICAgcmV0dXJuIGNhbnZhcztcbiAgICB9KTtcblxuICBmdW5jdGlvbiBuZXdDYW52YXMoZE5vZGUpIHtcbiAgICBjb25zdCBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTtcbiAgICBjYW52YXMud2lkdGggPSBvcHRpb25zLndpZHRoIHx8IGdldFdpZHRoKGROb2RlKTtcbiAgICBjYW52YXMuaGVpZ2h0ID0gb3B0aW9ucy5oZWlnaHQgfHwgZ2V0SGVpZ2h0KGROb2RlKTtcblxuICAgIGlmIChvcHRpb25zLmJnY29sb3IpIHtcbiAgICAgIGNvbnN0IGN0eCA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpO1xuICAgICAgY3R4LmZpbGxTdHlsZSA9IG9wdGlvbnMuYmdjb2xvcjtcbiAgICAgIGN0eC5maWxsUmVjdCgwLCAwLCBjYW52YXMud2lkdGgsIGNhbnZhcy5oZWlnaHQpO1xuICAgIH1cblxuICAgIHJldHVybiBjYW52YXM7XG4gIH1cbn1cblxuZnVuY3Rpb24gY2xvbmVOb2RlKG5vZGUsIGZpbHRlciwgcm9vdCkge1xuICBpZiAoIXJvb3QgJiYgZmlsdGVyICYmICFmaWx0ZXIobm9kZSkpIHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gIH1cblxuICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKG5vZGUpXG4gICAgLnRoZW4obWFrZU5vZGVDb3B5KVxuICAgIC50aGVuKGNsb25lID0+IGNsb25lQ2hpbGRyZW4obm9kZSwgY2xvbmUsIGZpbHRlcikpXG4gICAgLnRoZW4oY2xvbmUgPT4gcHJvY2Vzc0Nsb25lKG5vZGUsIGNsb25lKSk7XG5cbiAgZnVuY3Rpb24gbWFrZU5vZGVDb3B5KG5kKSB7XG4gICAgaWYgKG5kIGluc3RhbmNlb2Ygd2luZG93LkhUTUxDYW52YXNFbGVtZW50KSB7XG4gICAgICByZXR1cm4gbWFrZUltYWdlKG5kLnRvRGF0YVVSTCgpKTtcbiAgICB9XG4gICAgcmV0dXJuIG5kLmNsb25lTm9kZShmYWxzZSk7XG4gIH1cblxuICBmdW5jdGlvbiBjbG9uZUNoaWxkcmVuSW5PcmRlcihwYXJlbnQsIGFyckNoaWxkcmVuLCBmbHQpIHtcbiAgICBsZXQgZG9uZSA9IFByb21pc2UucmVzb2x2ZSgpO1xuICAgIGFyckNoaWxkcmVuLmZvckVhY2goY2hpbGQgPT4ge1xuICAgICAgZG9uZSA9IGRvbmVcbiAgICAgICAgLnRoZW4oKCkgPT4gY2xvbmVOb2RlKGNoaWxkLCBmbHQsIG51bGwpKVxuICAgICAgICAudGhlbihjaGlsZENsb25lID0+IHtcbiAgICAgICAgICBpZiAoY2hpbGRDbG9uZSkge1xuICAgICAgICAgICAgcGFyZW50LmFwcGVuZENoaWxkKGNoaWxkQ2xvbmUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIGRvbmU7XG4gIH1cblxuICBmdW5jdGlvbiBjbG9uZUNoaWxkcmVuKG9yaWdpbmFsLCBjbG9uZSwgZmx0KSB7XG4gICAgY29uc3QgY2hpbGRyZW4gPSBvcmlnaW5hbC5jaGlsZE5vZGVzO1xuICAgIGlmIChjaGlsZHJlbi5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoY2xvbmUpO1xuICAgIH1cblxuICAgIHJldHVybiBjbG9uZUNoaWxkcmVuSW5PcmRlcihjbG9uZSwgYXNBcnJheShjaGlsZHJlbiksIGZsdCkudGhlbigoKSA9PiBjbG9uZSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZW1iZWRGb250cyhub2RlKSB7XG4gIHJldHVybiBmb250RmFjZXMucmVzb2x2ZUFsbCgpLnRoZW4oY3NzVGV4dCA9PiB7XG4gICAgY29uc3Qgc3R5bGVOb2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTtcbiAgICBub2RlLmFwcGVuZENoaWxkKHN0eWxlTm9kZSk7XG4gICAgc3R5bGVOb2RlLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGNzc1RleHQpKTtcbiAgICByZXR1cm4gbm9kZTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGlubGluZUltYWdlcyhub2RlKSB7XG4gIHJldHVybiBpbWFnZXMuaW5saW5lQWxsKG5vZGUpLnRoZW4oKCkgPT4gbm9kZSk7XG59XG5cbmZ1bmN0aW9uIG1ha2VTdmdEYXRhVXJpKG5vZGUsIHdpZHRoLCBoZWlnaHQsIGVzY2FwZVhodG1sRm9yV2VicGFjayA9IHRydWUpIHtcbiAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShub2RlKS50aGVuKG5kID0+IHtcbiAgICBuZC5zZXRBdHRyaWJ1dGUoJ3htbG5zJywgJ2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwnKTtcbiAgICBjb25zdCBzZXJpYWxpemVkU3RyaW5nID0gbmV3IHdpbmRvdy5YTUxTZXJpYWxpemVyKCkuc2VyaWFsaXplVG9TdHJpbmcobmQpO1xuXG4gICAgY29uc3QgeGh0bWwgPSBlc2NhcGVYaHRtbEZvcldlYnBhY2sgPyBlc2NhcGVYaHRtbChzZXJpYWxpemVkU3RyaW5nKSA6IHNlcmlhbGl6ZWRTdHJpbmc7XG4gICAgY29uc3QgZm9yZWlnbk9iamVjdCA9IGA8Zm9yZWlnbk9iamVjdCB4PVwiMFwiIHk9XCIwXCIgd2lkdGg9XCIxMDAlXCIgaGVpZ2h0PVwiMTAwJVwiPiR7eGh0bWx9PC9mb3JlaWduT2JqZWN0PmA7XG4gICAgY29uc3Qgc3ZnU3RyID0gYDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiJHt3aWR0aH1cIiBoZWlnaHQ9XCIke2hlaWdodH1cIj4ke2ZvcmVpZ25PYmplY3R9PC9zdmc+YDtcblxuICAgIC8vIE9wdGltaXppbmcgU1ZHcyBpbiBkYXRhIFVSSXNcbiAgICAvLyBzZWUgaHR0cHM6Ly9jb2RlcGVuLmlvL3RpZ3QvcG9zdC9vcHRpbWl6aW5nLXN2Z3MtaW4tZGF0YS11cmlzXG4gICAgLy8gdGhlIGJlc3Qgd2F5IG9mIGVuY29kaW5nIFNWRyBpbiBhIGRhdGE6IFVSSSBpcyBkYXRhOmltYWdlL3N2Zyt4bWwsW2FjdHVhbCBkYXRhXS5cbiAgICAvLyBXZSBkb27igJl0IG5lZWQgdGhlIDtjaGFyc2V0PXV0Zi04IHBhcmFtZXRlciBiZWNhdXNlIHRoZSBnaXZlbiBTVkcgaXMgQVNDSUkuXG4gICAgcmV0dXJuIHN2Z1RvTWluaURhdGFVUkkoc3ZnU3RyKTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIG5ld0lubGluZXIoKSB7XG4gIGNvbnN0IFVSTF9SRUdFWCA9IC91cmxcXChbJ1wiXT8oW14nXCJdKz8pWydcIl0/XFwpL2c7XG5cbiAgcmV0dXJuIHtcbiAgICBpbmxpbmVBbGwsXG4gICAgc2hvdWxkUHJvY2VzcyxcbiAgICBpbXBsOiB7XG4gICAgICByZWFkVXJscyxcbiAgICAgIGlubGluZVxuICAgIH1cbiAgfTtcblxuICBmdW5jdGlvbiBzaG91bGRQcm9jZXNzKHN0cmluZykge1xuICAgIHJldHVybiBzdHJpbmcuc2VhcmNoKFVSTF9SRUdFWCkgIT09IC0xO1xuICB9XG5cbiAgZnVuY3Rpb24gcmVhZFVybHMoc3RyaW5nKSB7XG4gICAgY29uc3QgcmVzdWx0OiBzdHJpbmdbXSA9IFtdO1xuICAgIGxldCBtYXRjaDogbnVsbCB8IFJlZ0V4cEV4ZWNBcnJheTtcbiAgICB3aGlsZSAoKG1hdGNoID0gVVJMX1JFR0VYLmV4ZWMoc3RyaW5nKSkgIT09IG51bGwpIHtcbiAgICAgIHJlc3VsdC5wdXNoKG1hdGNoWzFdKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdC5maWx0ZXIodXJsID0+IHtcbiAgICAgIHJldHVybiAhaXNEYXRhVXJsKHVybCk7XG4gICAgfSk7XG4gIH1cblxuICBmdW5jdGlvbiB1cmxBc1JlZ2V4KHVybDApIHtcbiAgICByZXR1cm4gbmV3IFJlZ0V4cChgKHVybFxcXFwoW1xcJ1wiXT8pKCR7ZXNjYXBlKHVybDApfSkoW1xcJ1wiXT9cXFxcKSlgLCAnZycpO1xuICB9XG5cbiAgZnVuY3Rpb24gaW5saW5lKHN0cmluZywgdXJsLCBiYXNlVXJsLCBnZXQpIHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHVybClcbiAgICAgIC50aGVuKHVsID0+IChiYXNlVXJsID8gcmVzb2x2ZVVybCh1bCwgYmFzZVVybCkgOiB1bCkpXG4gICAgICAudGhlbih1bCA9PiAodHlwZW9mIGdldCA9PT0gJ2Z1bmN0aW9uJyA/IGdldCh1bCkgOiBnZXRBbmRFbmNvZGUodWwsIGRvbXRvaW1hZ2UuaW1wbC5vcHRpb25zKSkpXG4gICAgICAudGhlbihkYXRhID0+IGRhdGFBc1VybChkYXRhLCBtaW1lVHlwZSh1cmwpKSlcbiAgICAgIC50aGVuKGRhdGFVcmwgPT4gc3RyaW5nLnJlcGxhY2UodXJsQXNSZWdleCh1cmwpLCBgJDEke2RhdGFVcmx9JDNgKSk7XG4gIH1cblxuICBmdW5jdGlvbiBpbmxpbmVBbGwoc3RyaW5nLCBiYXNlVXJsLCBnZXQpIHtcbiAgICBpZiAoIXNob3VsZFByb2Nlc3Moc3RyaW5nKSB8fCBpc1NyY0FzRGF0YVVybChzdHJpbmcpKSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHN0cmluZyk7XG4gICAgfVxuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoc3RyaW5nKVxuICAgICAgLnRoZW4ocmVhZFVybHMpXG4gICAgICAudGhlbih1cmxzID0+IHtcbiAgICAgICAgbGV0IGRvbmUgPSBQcm9taXNlLnJlc29sdmUoc3RyaW5nKTtcbiAgICAgICAgdXJscy5mb3JFYWNoKHVybCA9PiB7XG4gICAgICAgICAgZG9uZSA9IGRvbmUudGhlbihzdHIgPT4gaW5saW5lKHN0ciwgdXJsLCBiYXNlVXJsLCBnZXQpKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBkb25lO1xuICAgICAgfSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gbmV3Rm9udEZhY2VzKCkge1xuICByZXR1cm4ge1xuICAgIHJlc29sdmVBbGwsXG4gICAgaW1wbDoge3JlYWRBbGx9XG4gIH07XG5cbiAgZnVuY3Rpb24gcmVzb2x2ZUFsbCgpIHtcbiAgICByZXR1cm4gcmVhZEFsbCgpXG4gICAgICAudGhlbih3ZWJGb250cyA9PiB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLmFsbCh3ZWJGb250cy5tYXAod2ViRm9udCA9PiB3ZWJGb250LnJlc29sdmUoKSkpO1xuICAgICAgfSlcbiAgICAgIC50aGVuKGNzc1N0cmluZ3MgPT4gY3NzU3RyaW5ncy5qb2luKCdcXG4nKSk7XG4gIH1cblxuICBmdW5jdGlvbiByZWFkQWxsKCkge1xuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoYXNBcnJheShkb2N1bWVudC5zdHlsZVNoZWV0cykpXG4gICAgICAudGhlbihsb2FkRXh0ZXJuYWxTdHlsZVNoZWV0cylcbiAgICAgIC50aGVuKGdldENzc1J1bGVzKVxuICAgICAgLnRoZW4oc2VsZWN0V2ViRm9udFJ1bGVzKVxuICAgICAgLnRoZW4ocnVsZXMgPT4gcnVsZXMubWFwKG5ld1dlYkZvbnQpKTtcblxuICAgIGZ1bmN0aW9uIHNlbGVjdFdlYkZvbnRSdWxlcyhjc3NSdWxlcykge1xuICAgICAgcmV0dXJuIGNzc1J1bGVzXG4gICAgICAgIC5maWx0ZXIocnVsZSA9PiBydWxlLnR5cGUgPT09IHdpbmRvdy5DU1NSdWxlLkZPTlRfRkFDRV9SVUxFKVxuICAgICAgICAuZmlsdGVyKHJ1bGUgPT4gaW5saW5lci5zaG91bGRQcm9jZXNzKHJ1bGUuc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnc3JjJykpKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBsb2FkRXh0ZXJuYWxTdHlsZVNoZWV0cyhzdHlsZVNoZWV0cykge1xuICAgICAgcmV0dXJuIFByb21pc2UuYWxsKFxuICAgICAgICBzdHlsZVNoZWV0cy5tYXAoc2hlZXQgPT4ge1xuICAgICAgICAgIGlmIChzaGVldC5ocmVmKSB7XG4gICAgICAgICAgICAvLyBjbG91ZGZvbnQgZG9lc24ndCBoYXZlIGFsbG93IG9yaWdpbiBoZWFkZXIgcHJvcGVybHkgc2V0XG4gICAgICAgICAgICAvLyBlcnJvciByZXNwb25zZSB3aWxsIHJlbWFpbiBpbiBjYWNoZVxuICAgICAgICAgICAgY29uc3QgY2FjaGUgPSBzaGVldC5ocmVmLmluY2x1ZGVzKCd1YmVyLWZvbnRzJykgPyAnbm8tY2FjaGUnIDogJ2RlZmF1bHQnO1xuICAgICAgICAgICAgcmV0dXJuIHdpbmRvd1xuICAgICAgICAgICAgICAuZmV0Y2goc2hlZXQuaHJlZiwge2NyZWRlbnRpYWxzOiAnb21pdCcsIGNhY2hlfSlcbiAgICAgICAgICAgICAgLnRoZW4ocmVzcG9uc2UgPT4gcmVzcG9uc2UudGV4dCgpKVxuICAgICAgICAgICAgICAudGhlbih0ZXh0ID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCByZXN1bHQgPSBzZXRTdHlsZVNoZWV0QmFzZUhyZWYodGV4dCwgc2hlZXQuaHJlZik7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRvU3R5bGVTaGVldChyZXN1bHQpO1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAuY2F0Y2goZXJyID0+IHtcbiAgICAgICAgICAgICAgICAvLyBIYW5kbGUgYW55IGVycm9yIHRoYXQgb2NjdXJyZWQgaW4gYW55IG9mIHRoZSBwcmV2aW91c1xuICAgICAgICAgICAgICAgIC8vIHByb21pc2VzIGluIHRoZSBjaGFpbi4gc3R5bGVzaGVldCBmYWlsZWQgdG8gbG9hZCBzaG91bGQgbm90IHN0b3BcbiAgICAgICAgICAgICAgICAvLyB0aGUgcHJvY2VzcywgaGVuY2UgcmVzdWx0IGluIG9ubHkgYSB3YXJuaW5nLCBpbnN0ZWFkIG9mIHJlamVjdFxuICAgICAgICAgICAgICAgIENvbnNvbGUud2FybihJTUFHRV9FWFBPUlRfRVJST1JTLnN0eWxlU2hlZXQsIHNoZWV0LmhyZWYpO1xuICAgICAgICAgICAgICAgIENvbnNvbGUubG9nKGVycik7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShzaGVldCk7XG4gICAgICAgIH0pXG4gICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldENzc1J1bGVzKHN0eWxlU2hlZXRzKSB7XG4gICAgICBjb25zdCBjc3NSdWxlczogYW55W10gPSBbXTtcbiAgICAgIHN0eWxlU2hlZXRzLmZvckVhY2goc2hlZXQgPT4ge1xuICAgICAgICAvLyB0cnkuLi5jYXRjaCBiZWNhdXNlIGJyb3dzZXIgbWF5IG5vdCBhYmxlIHRvIGVudW1lcmF0ZSBydWxlcyBmb3IgY3Jvc3MtZG9tYWluIHNoZWV0c1xuICAgICAgICBpZiAoIXNoZWV0KSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGxldCBydWxlcztcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBydWxlcyA9IHNoZWV0LnJ1bGVzIHx8IHNoZWV0LmNzc1J1bGVzO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgQ29uc29sZS5sb2coYCdDYW4ndCByZWFkIHRoZSBjc3MgcnVsZXMgb2Y6ICR7c2hlZXQuaHJlZn1gLCBlKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocnVsZXMgJiYgdHlwZW9mIHJ1bGVzID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBhc0FycmF5KHJ1bGVzIHx8IFtdKS5mb3JFYWNoKGNzc1J1bGVzLnB1c2guYmluZChjc3NSdWxlcykpO1xuICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIENvbnNvbGUubG9nKGBFcnJvciB3aGlsZSByZWFkaW5nIENTUyBydWxlcyBmcm9tICR7c2hlZXQuaHJlZn1gLCBlKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgQ29uc29sZS5sb2coJ2dldENzc1J1bGVzIGNhbiBub3QgZmluZCBjc3NSdWxlcycpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiBjc3NSdWxlcztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBuZXdXZWJGb250KHdlYkZvbnRSdWxlKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICByZXNvbHZlOiAoKSA9PiB7XG4gICAgICAgICAgY29uc3QgYmFzZVVybCA9ICh3ZWJGb250UnVsZS5wYXJlbnRTdHlsZVNoZWV0IHx8IHt9KS5ocmVmO1xuICAgICAgICAgIHJldHVybiBpbmxpbmVyLmlubGluZUFsbCh3ZWJGb250UnVsZS5jc3NUZXh0LCBiYXNlVXJsLCBudWxsKTtcbiAgICAgICAgfSxcbiAgICAgICAgc3JjOiAoKSA9PiB3ZWJGb250UnVsZS5zdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCdzcmMnKVxuICAgICAgfTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gbmV3SW1hZ2VzKCkge1xuICByZXR1cm4ge1xuICAgIGlubGluZUFsbCxcbiAgICBpbXBsOiB7XG4gICAgICBuZXdJbWFnZVxuICAgIH1cbiAgfTtcblxuICBmdW5jdGlvbiBuZXdJbWFnZShlbGVtZW50KSB7XG4gICAgZnVuY3Rpb24gaW5saW5lKGdldCkge1xuICAgICAgaWYgKGlzRGF0YVVybChlbGVtZW50LnNyYykpIHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShlbGVtZW50LnNyYylcbiAgICAgICAgLnRoZW4odWwgPT5cbiAgICAgICAgICB0eXBlb2YgZ2V0ID09PSAnZnVuY3Rpb24nID8gZ2V0KHVsKSA6IGdldEFuZEVuY29kZSh1bCwgZG9tdG9pbWFnZS5pbXBsLm9wdGlvbnMpXG4gICAgICAgIClcbiAgICAgICAgLnRoZW4oZGF0YSA9PiBkYXRhQXNVcmwoZGF0YSwgbWltZVR5cGUoZWxlbWVudC5zcmMpKSlcbiAgICAgICAgLnRoZW4oXG4gICAgICAgICAgZGF0YVVybCA9PlxuICAgICAgICAgICAgbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgICBlbGVtZW50Lm9ubG9hZCA9IHJlc29sdmU7XG4gICAgICAgICAgICAgIGVsZW1lbnQub25lcnJvciA9IHJlamVjdDtcbiAgICAgICAgICAgICAgZWxlbWVudC5zcmMgPSBkYXRhVXJsO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgaW5saW5lXG4gICAgfTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGlubGluZUFsbChub2RlKSB7XG4gICAgaWYgKCEobm9kZSBpbnN0YW5jZW9mIEVsZW1lbnQpKSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKG5vZGUpO1xuICAgIH1cblxuICAgIHJldHVybiBpbmxpbmVCYWNrZ3JvdW5kKG5vZGUpLnRoZW4oKCkgPT4ge1xuICAgICAgaWYgKG5vZGUgaW5zdGFuY2VvZiBIVE1MSW1hZ2VFbGVtZW50KSB7XG4gICAgICAgIHJldHVybiBuZXdJbWFnZShub2RlKS5pbmxpbmUobnVsbCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gUHJvbWlzZS5hbGwoYXNBcnJheShub2RlLmNoaWxkTm9kZXMpLm1hcChjaGlsZCA9PiBpbmxpbmVBbGwoY2hpbGQpKSk7XG4gICAgfSk7XG5cbiAgICBmdW5jdGlvbiBpbmxpbmVCYWNrZ3JvdW5kKG5kKSB7XG4gICAgICBjb25zdCBiYWNrZ3JvdW5kID0gbmQuc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnYmFja2dyb3VuZCcpO1xuXG4gICAgICBpZiAoIWJhY2tncm91bmQpIHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShuZCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBpbmxpbmVyXG4gICAgICAgIC5pbmxpbmVBbGwoYmFja2dyb3VuZCwgbnVsbCwgbnVsbClcbiAgICAgICAgLnRoZW4oaW5saW5lZCA9PiB7XG4gICAgICAgICAgbmQuc3R5bGUuc2V0UHJvcGVydHkoJ2JhY2tncm91bmQnLCBpbmxpbmVkLCBuZC5zdHlsZS5nZXRQcm9wZXJ0eVByaW9yaXR5KCdiYWNrZ3JvdW5kJykpO1xuICAgICAgICB9KVxuICAgICAgICAudGhlbigoKSA9PiBuZCk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IGRvbXRvaW1hZ2U7XG4iXX0=
@@ -1,23 +0,0 @@
1
- export declare function processClone(original: any, clone: any): any;
2
- /****
3
- * UTILS
4
- ****/
5
- export declare function asArray(arrayLike: any): any[];
6
- export declare function fourRandomChars(): string;
7
- export declare function uid(): string;
8
- export declare function makeImage(uri: any): Promise<unknown>;
9
- export declare function isDataUrl(url: any): boolean;
10
- export declare function mimeType(url: any): any;
11
- export declare function dataAsUrl(content: any, type: any): string;
12
- export declare function escape(string: any): any;
13
- export declare function delay(ms: any): (arg: any) => Promise<unknown>;
14
- export declare function isSrcAsDataUrl(text: any): boolean;
15
- export declare function canvasToBlob(canvas: any): Promise<unknown>;
16
- export declare function escapeXhtml(string: any): any;
17
- export declare function getWidth(node: any): any;
18
- export declare function getHeight(node: any): any;
19
- export declare function resolveUrl(url: any, baseUrl: any): any;
20
- export declare function getAndEncode(url: any, options: any): Promise<unknown>;
21
- export declare function concatAndResolveUrl(base: any, url: any): string;
22
- export declare function setStyleSheetBaseHref(text: any, base: any): any;
23
- export declare function toStyleSheet(text: any): any;