@kepler.gl/utils 3.0.0-alpha.2 → 3.1.0-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +14 -10
- package/dist/aggregate-utils.d.ts +0 -3
- package/dist/aggregate-utils.js +0 -75
- package/dist/arrow-data-container.d.ts +0 -54
- package/dist/arrow-data-container.js +0 -360
- package/dist/color-utils.d.ts +0 -51
- package/dist/color-utils.js +0 -161
- package/dist/data-container-interface.d.ts +0 -133
- package/dist/data-container-interface.js +0 -6
- package/dist/data-container-utils.d.ts +0 -30
- package/dist/data-container-utils.js +0 -88
- package/dist/data-row.d.ts +0 -59
- package/dist/data-row.js +0 -126
- package/dist/data-scale-utils.d.ts +0 -23
- package/dist/data-scale-utils.js +0 -62
- package/dist/data-utils.d.ts +0 -103
- package/dist/data-utils.js +0 -502
- package/dist/dataset-utils.d.ts +0 -116
- package/dist/dataset-utils.js +0 -614
- package/dist/dom-to-image.d.ts +0 -73
- package/dist/dom-to-image.js +0 -489
- package/dist/dom-utils.d.ts +0 -23
- package/dist/dom-utils.js +0 -434
- package/dist/effect-utils.d.ts +0 -23
- package/dist/effect-utils.js +0 -196
- package/dist/export-map-html.d.ts +0 -9
- package/dist/export-map-html.js +0 -28
- package/dist/export-utils.d.ts +0 -53
- package/dist/export-utils.js +0 -262
- package/dist/filter-utils.d.ts +0 -326
- package/dist/filter-utils.js +0 -1333
- package/dist/format.d.ts +0 -1
- package/dist/format.js +0 -17
- package/dist/gl-utils.d.ts +0 -1
- package/dist/gl-utils.js +0 -35
- package/dist/h3-utils.d.ts +0 -21
- package/dist/h3-utils.js +0 -81
- package/dist/index.d.ts +0 -36
- package/dist/index.js +0 -772
- package/dist/indexed-data-container.d.ts +0 -34
- package/dist/indexed-data-container.js +0 -254
- package/dist/locale-utils.d.ts +0 -2
- package/dist/locale-utils.js +0 -54
- package/dist/map-info-utils.d.ts +0 -1
- package/dist/map-info-utils.js +0 -15
- package/dist/map-style-utils/mapbox-gl-style-editor.d.ts +0 -65
- package/dist/map-style-utils/mapbox-gl-style-editor.js +0 -218
- package/dist/map-style-utils/mapbox-utils.d.ts +0 -9
- package/dist/map-style-utils/mapbox-utils.js +0 -48
- package/dist/map-utils.d.ts +0 -9
- package/dist/map-utils.js +0 -65
- package/dist/mapbox-utils.d.ts +0 -7
- package/dist/mapbox-utils.js +0 -22
- package/dist/noop.d.ts +0 -1
- package/dist/noop.js +0 -11
- package/dist/notifications-utils.d.ts +0 -42
- package/dist/notifications-utils.js +0 -85
- package/dist/observe-dimensions.d.ts +0 -15
- package/dist/observe-dimensions.js +0 -151
- package/dist/plot.d.ts +0 -6
- package/dist/plot.js +0 -31
- package/dist/projection-utils.d.ts +0 -21
- package/dist/projection-utils.js +0 -100
- package/dist/row-data-container.d.ts +0 -31
- package/dist/row-data-container.js +0 -252
- package/dist/searcher-utils.d.ts +0 -1
- package/dist/searcher-utils.js +0 -28
- package/dist/split-map-utils.d.ts +0 -32
- package/dist/split-map-utils.js +0 -114
- package/dist/time.d.ts +0 -16
- package/dist/time.js +0 -89
- package/dist/utils.d.ts +0 -116
- package/dist/utils.js +0 -305
package/dist/dom-to-image.d.ts
DELETED
@@ -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;
|
package/dist/dom-to-image.js
DELETED
@@ -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=
|
package/dist/dom-utils.d.ts
DELETED
@@ -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;
|