@stemy/ngx-utils 13.6.13 → 13.6.15
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/assets/ng.mjs +5 -0
- package/esm2020/ngx-utils/components/dynamic-table/dynamic-table.component.mjs +3 -3
- package/fesm2015/stemy-ngx-utils.mjs +2 -2
- package/fesm2015/stemy-ngx-utils.mjs.map +1 -1
- package/fesm2020/stemy-ngx-utils.mjs +2 -2
- package/fesm2020/stemy-ngx-utils.mjs.map +1 -1
- package/package.json +1 -1
- package/bundles/stemy-ngx-utils.umd.js +0 -6380
- package/bundles/stemy-ngx-utils.umd.js.map +0 -1
- package/esm2015/ngx-utils/common-types.js +0 -121
- package/esm2015/ngx-utils/components/dynamic-table/dynamic-table.component.js +0 -139
- package/esm2015/ngx-utils/components/pagination-menu/pagination-menu.component.js +0 -96
- package/esm2015/ngx-utils/components/unordered-list/unordered-list.component.js +0 -51
- package/esm2015/ngx-utils/directives/async-method.base.js +0 -66
- package/esm2015/ngx-utils/directives/async-method.directive.js +0 -17
- package/esm2015/ngx-utils/directives/background.directive.js +0 -51
- package/esm2015/ngx-utils/directives/dynamic-table-template.directive.js +0 -19
- package/esm2015/ngx-utils/directives/global-template.directive.js +0 -27
- package/esm2015/ngx-utils/directives/icon.directive.js +0 -59
- package/esm2015/ngx-utils/directives/ngx-template-outlet.directive.js +0 -88
- package/esm2015/ngx-utils/directives/pagination-item.directive.js +0 -33
- package/esm2015/ngx-utils/directives/pagination.directive.js +0 -76
- package/esm2015/ngx-utils/directives/resource-if.directive.js +0 -51
- package/esm2015/ngx-utils/directives/sticky-class.directive.js +0 -35
- package/esm2015/ngx-utils/directives/sticky.directive.js +0 -48
- package/esm2015/ngx-utils/directives/unordered-list-item.directive.js +0 -70
- package/esm2015/ngx-utils/directives/unordered-list-template.directive.js +0 -26
- package/esm2015/ngx-utils/ngx-utils.module.js +0 -246
- package/esm2015/ngx-utils/pipes/chunk.pipe.js +0 -21
- package/esm2015/ngx-utils/pipes/entries.pipe.js +0 -24
- package/esm2015/ngx-utils/pipes/extra-item-properties.pipe.js +0 -27
- package/esm2015/ngx-utils/pipes/filter.pipe.js +0 -33
- package/esm2015/ngx-utils/pipes/find.pipe.js +0 -25
- package/esm2015/ngx-utils/pipes/format-number.pipe.js +0 -19
- package/esm2015/ngx-utils/pipes/get-offset.pipe.js +0 -13
- package/esm2015/ngx-utils/pipes/get-type.pipe.js +0 -12
- package/esm2015/ngx-utils/pipes/global-template.pipe.js +0 -37
- package/esm2015/ngx-utils/pipes/group-by.pipe.js +0 -23
- package/esm2015/ngx-utils/pipes/is-type.pipe.js +0 -12
- package/esm2015/ngx-utils/pipes/join.pipe.js +0 -15
- package/esm2015/ngx-utils/pipes/keys.pipe.js +0 -18
- package/esm2015/ngx-utils/pipes/map.pipe.js +0 -25
- package/esm2015/ngx-utils/pipes/max.pipe.js +0 -22
- package/esm2015/ngx-utils/pipes/min.pipe.js +0 -22
- package/esm2015/ngx-utils/pipes/pop.pipe.js +0 -12
- package/esm2015/ngx-utils/pipes/reduce.pipe.js +0 -26
- package/esm2015/ngx-utils/pipes/remap.pipe.js +0 -28
- package/esm2015/ngx-utils/pipes/replace.pipe.js +0 -13
- package/esm2015/ngx-utils/pipes/reverse.pipe.js +0 -20
- package/esm2015/ngx-utils/pipes/round.pipe.js +0 -19
- package/esm2015/ngx-utils/pipes/safe-html.pipe.js +0 -32
- package/esm2015/ngx-utils/pipes/shift.pipe.js +0 -12
- package/esm2015/ngx-utils/pipes/split.pipe.js +0 -12
- package/esm2015/ngx-utils/pipes/translate.pipe.js +0 -81
- package/esm2015/ngx-utils/pipes/values.pipe.js +0 -18
- package/esm2015/ngx-utils/plugins/resize-event.plugin.js +0 -56
- package/esm2015/ngx-utils/plugins/scroll-event.plugin.js +0 -36
- package/esm2015/ngx-utils/services/acl.service.js +0 -81
- package/esm2015/ngx-utils/services/api.service.js +0 -39
- package/esm2015/ngx-utils/services/auth.service.js +0 -14
- package/esm2015/ngx-utils/services/base-http.client.js +0 -46
- package/esm2015/ngx-utils/services/base-http.service.js +0 -284
- package/esm2015/ngx-utils/services/config.service.js +0 -137
- package/esm2015/ngx-utils/services/error-handler.service.js +0 -49
- package/esm2015/ngx-utils/services/events.service.js +0 -24
- package/esm2015/ngx-utils/services/formatter.service.js +0 -46
- package/esm2015/ngx-utils/services/global-template.service.js +0 -35
- package/esm2015/ngx-utils/services/icon.service.js +0 -24
- package/esm2015/ngx-utils/services/language.service.js +0 -129
- package/esm2015/ngx-utils/services/open-api.service.js +0 -41
- package/esm2015/ngx-utils/services/promise.service.js +0 -52
- package/esm2015/ngx-utils/services/state.service.js +0 -181
- package/esm2015/ngx-utils/services/static-language.service.js +0 -152
- package/esm2015/ngx-utils/services/storage.service.js +0 -48
- package/esm2015/ngx-utils/services/toaster.service.js +0 -29
- package/esm2015/ngx-utils/services/translated-url.serializer.js +0 -70
- package/esm2015/ngx-utils/services/universal.service.js +0 -78
- package/esm2015/ngx-utils/utils/ajax-request-handler.js +0 -40
- package/esm2015/ngx-utils/utils/array.utils.js +0 -107
- package/esm2015/ngx-utils/utils/auth.guard.js +0 -156
- package/esm2015/ngx-utils/utils/canvas.utils.js +0 -388
- package/esm2015/ngx-utils/utils/date.utils.js +0 -29
- package/esm2015/ngx-utils/utils/file-system.js +0 -25
- package/esm2015/ngx-utils/utils/file.utils.js +0 -90
- package/esm2015/ngx-utils/utils/generic-value.js +0 -20
- package/esm2015/ngx-utils/utils/geometry.js +0 -132
- package/esm2015/ngx-utils/utils/initializer.js +0 -20
- package/esm2015/ngx-utils/utils/loader.utils.js +0 -55
- package/esm2015/ngx-utils/utils/math.utils.js +0 -45
- package/esm2015/ngx-utils/utils/object.utils.js +0 -320
- package/esm2015/ngx-utils/utils/observable.utils.js +0 -63
- package/esm2015/ngx-utils/utils/reflect.utils.js +0 -33
- package/esm2015/ngx-utils/utils/set.utils.js +0 -20
- package/esm2015/ngx-utils/utils/string.utils.js +0 -28
- package/esm2015/ngx-utils/utils/timer.utils.js +0 -52
- package/esm2015/ngx-utils/utils/unique.utils.js +0 -24
- package/esm2015/ngx-utils/utils/vector.js +0 -77
- package/esm2015/public_api.js +0 -89
- package/esm2015/stemy-ngx-utils.js +0 -7
- package/fesm2015/stemy-ngx-utils.js +0 -5060
- package/fesm2015/stemy-ngx-utils.js.map +0 -1
- package/stemy-ngx-utils.metadata.json +0 -1
- package/tools/circular.js +0 -117
- package/tools/circular.js.map +0 -1
- package/tools/config.js +0 -79
- package/tools/config.js.map +0 -1
- package/tools/icons.js +0 -14
- package/tools/icons.js.map +0 -1
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
import { first } from "rxjs/operators";
|
|
2
|
-
import { ObjectUtils } from "./object.utils";
|
|
3
|
-
export class FileUtils {
|
|
4
|
-
static getExtension(file) {
|
|
5
|
-
return file ? file.name.substr(file.name.lastIndexOf(".")).toLowerCase() : null;
|
|
6
|
-
}
|
|
7
|
-
static getName(file) {
|
|
8
|
-
return file ? file.name.substr(0, file.name.lastIndexOf(".")) : null;
|
|
9
|
-
}
|
|
10
|
-
static toFile(blob, fileName) {
|
|
11
|
-
const data = blob;
|
|
12
|
-
data.lastModifiedDate = new Date();
|
|
13
|
-
data.name = fileName.split(/\\|\//g).pop();
|
|
14
|
-
return data;
|
|
15
|
-
}
|
|
16
|
-
static dataToBlob(data) {
|
|
17
|
-
const parts = data.split(",");
|
|
18
|
-
const byteString = atob(parts[1]);
|
|
19
|
-
const mimeString = parts[0].split(":")[1].split(";")[0];
|
|
20
|
-
const ab = new ArrayBuffer(byteString.length);
|
|
21
|
-
const ia = new Uint8Array(ab);
|
|
22
|
-
for (let i = 0; i < byteString.length; i++) {
|
|
23
|
-
ia[i] = byteString.charCodeAt(i);
|
|
24
|
-
}
|
|
25
|
-
return new Blob([ab], { type: mimeString });
|
|
26
|
-
}
|
|
27
|
-
static saveBlob(blob, fileName) {
|
|
28
|
-
if (typeof saveAs == "undefined") {
|
|
29
|
-
throw Error("FileSaver library is not loaded. Please load it: https://www.npmjs.com/package/file-saver");
|
|
30
|
-
}
|
|
31
|
-
saveAs(blob, fileName);
|
|
32
|
-
}
|
|
33
|
-
static saveJson(json, fileName) {
|
|
34
|
-
if (!ObjectUtils.isObject(json))
|
|
35
|
-
return;
|
|
36
|
-
FileUtils.saveBlob(new Blob([JSON.stringify(json, null, 4)]), fileName);
|
|
37
|
-
}
|
|
38
|
-
static readFileAsText(file) {
|
|
39
|
-
return FileUtils.readFile(
|
|
40
|
-
// @dynamic
|
|
41
|
-
reader => reader.readAsText(file));
|
|
42
|
-
}
|
|
43
|
-
static readFileAsBinaryString(file) {
|
|
44
|
-
return FileUtils.readFile(
|
|
45
|
-
// @dynamic
|
|
46
|
-
reader => reader.readAsBinaryString(file));
|
|
47
|
-
}
|
|
48
|
-
static readFileAsDataURL(file) {
|
|
49
|
-
return FileUtils.readFile(
|
|
50
|
-
// @dynamic
|
|
51
|
-
reader => reader.readAsDataURL(file));
|
|
52
|
-
}
|
|
53
|
-
static readDataFromUrl(http, url) {
|
|
54
|
-
return new Promise(
|
|
55
|
-
// @dynamic
|
|
56
|
-
(resolve, reject) => {
|
|
57
|
-
if (!url) {
|
|
58
|
-
reject({
|
|
59
|
-
message: "The url is not specified"
|
|
60
|
-
});
|
|
61
|
-
return;
|
|
62
|
-
}
|
|
63
|
-
if ((/^([A-Za-z0-9+/]{4})*([A-Za-z0-9+/]{4}|[A-Za-z0-9+/]{3}=|[A-Za-z0-9+/]{2}==)$/g).test(url)) {
|
|
64
|
-
resolve(url);
|
|
65
|
-
return;
|
|
66
|
-
}
|
|
67
|
-
first()(http.get(url, {
|
|
68
|
-
responseType: "blob"
|
|
69
|
-
})).subscribe((blob) => {
|
|
70
|
-
FileUtils.readFileAsDataURL(blob).then(resolve, reject);
|
|
71
|
-
}, reason => {
|
|
72
|
-
if (reason.status > 0)
|
|
73
|
-
reject(reason);
|
|
74
|
-
else
|
|
75
|
-
resolve(url);
|
|
76
|
-
});
|
|
77
|
-
});
|
|
78
|
-
}
|
|
79
|
-
static readFile(callback) {
|
|
80
|
-
return new Promise(
|
|
81
|
-
// @dynamic
|
|
82
|
-
(resolve, reject) => {
|
|
83
|
-
const reader = new FileReader();
|
|
84
|
-
reader.onload = (event) => resolve(event.target.result);
|
|
85
|
-
reader.onerror = reject;
|
|
86
|
-
callback(reader);
|
|
87
|
-
});
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9uZ3gtdXRpbHMvdXRpbHMvZmlsZS51dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUMsS0FBSyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDckMsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBSTNDLE1BQU0sT0FBTyxTQUFTO0lBRWxCLE1BQU0sQ0FBQyxZQUFZLENBQUMsSUFBVTtRQUMxQixPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ3BGLENBQUM7SUFFRCxNQUFNLENBQUMsT0FBTyxDQUFDLElBQVU7UUFDckIsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDekUsQ0FBQztJQUVELE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBVSxFQUFFLFFBQWdCO1FBQ3RDLE1BQU0sSUFBSSxHQUFRLElBQUksQ0FBQztRQUN2QixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUNuQyxJQUFJLENBQUMsSUFBSSxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDM0MsT0FBYSxJQUFJLENBQUM7SUFDdEIsQ0FBQztJQUVELE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBWTtRQUMxQixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzlCLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNsQyxNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUV4RCxNQUFNLEVBQUUsR0FBRyxJQUFJLFdBQVcsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDOUMsTUFBTSxFQUFFLEdBQUcsSUFBSSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDOUIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDeEMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDcEM7UUFFRCxPQUFPLElBQUksSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBQyxJQUFJLEVBQUUsVUFBVSxFQUFDLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRUQsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFVLEVBQUUsUUFBZ0I7UUFDeEMsSUFBSSxPQUFPLE1BQU0sSUFBSSxXQUFXLEVBQUU7WUFDOUIsTUFBTSxLQUFLLENBQUMsMkZBQTJGLENBQUMsQ0FBQztTQUM1RztRQUNELE1BQU0sQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQUVELE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBUyxFQUFFLFFBQWdCO1FBQ3ZDLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztZQUFFLE9BQU87UUFDeEMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDNUUsQ0FBQztJQUVELE1BQU0sQ0FBQyxjQUFjLENBQUMsSUFBVTtRQUM1QixPQUFPLFNBQVMsQ0FBQyxRQUFRO1FBQ3JCLFdBQVc7UUFDWCxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQ3BDLENBQUM7SUFDTixDQUFDO0lBRUQsTUFBTSxDQUFDLHNCQUFzQixDQUFDLElBQVU7UUFDcEMsT0FBTyxTQUFTLENBQUMsUUFBUTtRQUNyQixXQUFXO1FBQ1gsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQzVDLENBQUM7SUFDTixDQUFDO0lBRUQsTUFBTSxDQUFDLGlCQUFpQixDQUFDLElBQVU7UUFDL0IsT0FBTyxTQUFTLENBQUMsUUFBUTtRQUNyQixXQUFXO1FBQ1gsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUN2QyxDQUFDO0lBQ04sQ0FBQztJQUVELE1BQU0sQ0FBQyxlQUFlLENBQUMsSUFBZ0IsRUFBRSxHQUFXO1FBQ2hELE9BQU8sSUFBSSxPQUFPO1FBQ2QsV0FBVztRQUNYLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQ2hCLElBQUksQ0FBQyxHQUFHLEVBQUU7Z0JBQ04sTUFBTSxDQUFDO29CQUNILE9BQU8sRUFBRSwwQkFBMEI7aUJBQ3RDLENBQUMsQ0FBQztnQkFDSCxPQUFPO2FBQ1Y7WUFDRCxJQUFJLENBQUMsK0VBQStFLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUU7Z0JBQzdGLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDYixPQUFPO2FBQ1Y7WUFDRCxLQUFLLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRTtnQkFDbEIsWUFBWSxFQUFFLE1BQU07YUFDdkIsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBVSxFQUFFLEVBQUU7Z0JBQ3pCLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQzVELENBQUMsRUFBRSxNQUFNLENBQUMsRUFBRTtnQkFDUixJQUFJLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQztvQkFDakIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDOztvQkFFZixPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDckIsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDLENBQ0osQ0FBQztJQUNOLENBQUM7SUFFTyxNQUFNLENBQUMsUUFBUSxDQUFDLFFBQXNDO1FBQzFELE9BQU8sSUFBSSxPQUFPO1FBQ2QsV0FBVztRQUNYLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQ2hCLE1BQU0sTUFBTSxHQUFHLElBQUksVUFBVSxFQUFFLENBQUM7WUFDaEMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLEtBQVUsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDN0QsTUFBTSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7WUFDeEIsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3JCLENBQUMsQ0FDSixDQUFDO0lBQ04sQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtIdHRwQ2xpZW50fSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uL2h0dHBcIjtcclxuaW1wb3J0IHtmaXJzdH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XHJcbmltcG9ydCB7T2JqZWN0VXRpbHN9IGZyb20gXCIuL29iamVjdC51dGlsc1wiO1xyXG5cclxuZGVjbGFyZSBjb25zdCBzYXZlQXM6IGFueTtcclxuXHJcbmV4cG9ydCBjbGFzcyBGaWxlVXRpbHMge1xyXG5cclxuICAgIHN0YXRpYyBnZXRFeHRlbnNpb24oZmlsZTogRmlsZSk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIGZpbGUgPyBmaWxlLm5hbWUuc3Vic3RyKGZpbGUubmFtZS5sYXN0SW5kZXhPZihcIi5cIikpLnRvTG93ZXJDYXNlKCkgOiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBnZXROYW1lKGZpbGU6IEZpbGUpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiBmaWxlID8gZmlsZS5uYW1lLnN1YnN0cigwLCBmaWxlLm5hbWUubGFzdEluZGV4T2YoXCIuXCIpKSA6IG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIHRvRmlsZShibG9iOiBCbG9iLCBmaWxlTmFtZTogc3RyaW5nKTogRmlsZSB7XHJcbiAgICAgICAgY29uc3QgZGF0YTogYW55ID0gYmxvYjtcclxuICAgICAgICBkYXRhLmxhc3RNb2RpZmllZERhdGUgPSBuZXcgRGF0ZSgpO1xyXG4gICAgICAgIGRhdGEubmFtZSA9IGZpbGVOYW1lLnNwbGl0KC9cXFxcfFxcLy9nKS5wb3AoKTtcclxuICAgICAgICByZXR1cm4gPEZpbGU+ZGF0YTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgZGF0YVRvQmxvYihkYXRhOiBzdHJpbmcpOiBCbG9iIHtcclxuICAgICAgICBjb25zdCBwYXJ0cyA9IGRhdGEuc3BsaXQoXCIsXCIpO1xyXG4gICAgICAgIGNvbnN0IGJ5dGVTdHJpbmcgPSBhdG9iKHBhcnRzWzFdKTtcclxuICAgICAgICBjb25zdCBtaW1lU3RyaW5nID0gcGFydHNbMF0uc3BsaXQoXCI6XCIpWzFdLnNwbGl0KFwiO1wiKVswXTtcclxuXHJcbiAgICAgICAgY29uc3QgYWIgPSBuZXcgQXJyYXlCdWZmZXIoYnl0ZVN0cmluZy5sZW5ndGgpO1xyXG4gICAgICAgIGNvbnN0IGlhID0gbmV3IFVpbnQ4QXJyYXkoYWIpO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYnl0ZVN0cmluZy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBpYVtpXSA9IGJ5dGVTdHJpbmcuY2hhckNvZGVBdChpKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBuZXcgQmxvYihbYWJdLCB7dHlwZTogbWltZVN0cmluZ30pO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBzYXZlQmxvYihibG9iOiBCbG9iLCBmaWxlTmFtZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHR5cGVvZiBzYXZlQXMgPT0gXCJ1bmRlZmluZWRcIikge1xyXG4gICAgICAgICAgICB0aHJvdyBFcnJvcihcIkZpbGVTYXZlciBsaWJyYXJ5IGlzIG5vdCBsb2FkZWQuIFBsZWFzZSBsb2FkIGl0OiBodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9maWxlLXNhdmVyXCIpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBzYXZlQXMoYmxvYiwgZmlsZU5hbWUpO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBzYXZlSnNvbihqc29uOiBhbnksIGZpbGVOYW1lOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgICAgICBpZiAoIU9iamVjdFV0aWxzLmlzT2JqZWN0KGpzb24pKSByZXR1cm47XHJcbiAgICAgICAgRmlsZVV0aWxzLnNhdmVCbG9iKG5ldyBCbG9iKFtKU09OLnN0cmluZ2lmeShqc29uLCBudWxsLCA0KV0pLCBmaWxlTmFtZSk7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIHJlYWRGaWxlQXNUZXh0KGZpbGU6IEJsb2IpOiBQcm9taXNlPHN0cmluZz4ge1xyXG4gICAgICAgIHJldHVybiBGaWxlVXRpbHMucmVhZEZpbGUoXHJcbiAgICAgICAgICAgIC8vIEBkeW5hbWljXHJcbiAgICAgICAgICAgIHJlYWRlciA9PiByZWFkZXIucmVhZEFzVGV4dChmaWxlKVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIHJlYWRGaWxlQXNCaW5hcnlTdHJpbmcoZmlsZTogQmxvYik6IFByb21pc2U8c3RyaW5nPiB7XHJcbiAgICAgICAgcmV0dXJuIEZpbGVVdGlscy5yZWFkRmlsZShcclxuICAgICAgICAgICAgLy8gQGR5bmFtaWNcclxuICAgICAgICAgICAgcmVhZGVyID0+IHJlYWRlci5yZWFkQXNCaW5hcnlTdHJpbmcoZmlsZSlcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyByZWFkRmlsZUFzRGF0YVVSTChmaWxlOiBCbG9iKTogUHJvbWlzZTxzdHJpbmc+IHtcclxuICAgICAgICByZXR1cm4gRmlsZVV0aWxzLnJlYWRGaWxlKFxyXG4gICAgICAgICAgICAvLyBAZHluYW1pY1xyXG4gICAgICAgICAgICByZWFkZXIgPT4gcmVhZGVyLnJlYWRBc0RhdGFVUkwoZmlsZSlcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyByZWFkRGF0YUZyb21VcmwoaHR0cDogSHR0cENsaWVudCwgdXJsOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xyXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZTxzdHJpbmc+KFxyXG4gICAgICAgICAgICAvLyBAZHluYW1pY1xyXG4gICAgICAgICAgICAocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXVybCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJlamVjdCh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IFwiVGhlIHVybCBpcyBub3Qgc3BlY2lmaWVkXCJcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoKC9eKFtBLVphLXowLTkrL117NH0pKihbQS1aYS16MC05Ky9dezR9fFtBLVphLXowLTkrL117M309fFtBLVphLXowLTkrL117Mn09PSkkL2cpLnRlc3QodXJsKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUodXJsKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBmaXJzdCgpKGh0dHAuZ2V0KHVybCwge1xyXG4gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlVHlwZTogXCJibG9iXCJcclxuICAgICAgICAgICAgICAgIH0pKS5zdWJzY3JpYmUoKGJsb2I6IEJsb2IpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBGaWxlVXRpbHMucmVhZEZpbGVBc0RhdGFVUkwoYmxvYikudGhlbihyZXNvbHZlLCByZWplY3QpO1xyXG4gICAgICAgICAgICAgICAgfSwgcmVhc29uID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAocmVhc29uLnN0YXR1cyA+IDApXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdChyZWFzb24pO1xyXG4gICAgICAgICAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSh1cmwpO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgc3RhdGljIHJlYWRGaWxlKGNhbGxiYWNrOiAocmVhZGVyOiBGaWxlUmVhZGVyKSA9PiB2b2lkKTogUHJvbWlzZTxzdHJpbmc+IHtcclxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2U8c3RyaW5nPihcclxuICAgICAgICAgICAgLy8gQGR5bmFtaWNcclxuICAgICAgICAgICAgKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcclxuICAgICAgICAgICAgICAgIHJlYWRlci5vbmxvYWQgPSAoZXZlbnQ6IGFueSkgPT4gcmVzb2x2ZShldmVudC50YXJnZXQucmVzdWx0KTtcclxuICAgICAgICAgICAgICAgIHJlYWRlci5vbmVycm9yID0gcmVqZWN0O1xyXG4gICAgICAgICAgICAgICAgY2FsbGJhY2socmVhZGVyKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcbn1cclxuIl19
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { Subject } from "rxjs";
|
|
2
|
-
export class GenericValue extends Subject {
|
|
3
|
-
constructor(value = null) {
|
|
4
|
-
super();
|
|
5
|
-
this._value = value;
|
|
6
|
-
}
|
|
7
|
-
get value() {
|
|
8
|
-
return this._value;
|
|
9
|
-
}
|
|
10
|
-
set value(value) {
|
|
11
|
-
if (value == this._value)
|
|
12
|
-
return;
|
|
13
|
-
this._value = value;
|
|
14
|
-
this.next(value);
|
|
15
|
-
}
|
|
16
|
-
setJustValue(value) {
|
|
17
|
-
this._value = value;
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJpYy12YWx1ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9uZ3gtdXRpbHMvdXRpbHMvZ2VuZXJpYy12YWx1ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBRTdCLE1BQU0sT0FBTyxZQUFnQixTQUFRLE9BQVU7SUFjM0MsWUFBWSxRQUFXLElBQUk7UUFDdkIsS0FBSyxFQUFFLENBQUM7UUFDUixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztJQUN4QixDQUFDO0lBZkQsSUFBSSxLQUFLO1FBQ0wsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxJQUFJLEtBQUssQ0FBQyxLQUFRO1FBQ2QsSUFBSSxLQUFLLElBQUksSUFBSSxDQUFDLE1BQU07WUFBRSxPQUFPO1FBQ2pDLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDckIsQ0FBQztJQVNELFlBQVksQ0FBQyxLQUFRO1FBQ2pCLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO0lBQ3hCLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7U3ViamVjdH0gZnJvbSBcInJ4anNcIjtcclxuXHJcbmV4cG9ydCBjbGFzcyBHZW5lcmljVmFsdWU8VD4gZXh0ZW5kcyBTdWJqZWN0PFQ+IHtcclxuXHJcbiAgICBnZXQgdmFsdWUoKTogVCB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3ZhbHVlO1xyXG4gICAgfVxyXG5cclxuICAgIHNldCB2YWx1ZSh2YWx1ZTogVCkge1xyXG4gICAgICAgIGlmICh2YWx1ZSA9PSB0aGlzLl92YWx1ZSkgcmV0dXJuO1xyXG4gICAgICAgIHRoaXMuX3ZhbHVlID0gdmFsdWU7XHJcbiAgICAgICAgdGhpcy5uZXh0KHZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIF92YWx1ZTogVDtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcih2YWx1ZTogVCA9IG51bGwpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIHRoaXMuX3ZhbHVlID0gdmFsdWU7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0SnVzdFZhbHVlKHZhbHVlOiBUKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTtcclxuICAgIH1cclxufVxyXG4iXX0=
|
|
@@ -1,132 +0,0 @@
|
|
|
1
|
-
export class Rect {
|
|
2
|
-
constructor(x, y, width, height, rotation = 0) {
|
|
3
|
-
this.x = x;
|
|
4
|
-
this.y = y;
|
|
5
|
-
this.width = width;
|
|
6
|
-
this.height = height;
|
|
7
|
-
this.rotation = rotation;
|
|
8
|
-
}
|
|
9
|
-
get center() {
|
|
10
|
-
return new Point(this.x, this.y);
|
|
11
|
-
}
|
|
12
|
-
get left() {
|
|
13
|
-
return this.x - this.width * .5;
|
|
14
|
-
}
|
|
15
|
-
get right() {
|
|
16
|
-
return this.x + this.width * .5;
|
|
17
|
-
}
|
|
18
|
-
get bottom() {
|
|
19
|
-
return this.y - this.height * .5;
|
|
20
|
-
}
|
|
21
|
-
get top() {
|
|
22
|
-
return this.y + this.height * .5;
|
|
23
|
-
}
|
|
24
|
-
distance(p) {
|
|
25
|
-
p = p.rotateAround(this.center, -this.rotation);
|
|
26
|
-
const x = Math.max(this.left - p.x, 0, p.x - this.right);
|
|
27
|
-
const y = Math.max(this.bottom - p.y, 0, p.y - this.top);
|
|
28
|
-
return Math.sqrt(x * x + y * y);
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
export class Circle {
|
|
32
|
-
constructor(x, y, radius) {
|
|
33
|
-
this.x = x;
|
|
34
|
-
this.y = y;
|
|
35
|
-
this.radius = radius;
|
|
36
|
-
}
|
|
37
|
-
get center() {
|
|
38
|
-
return new Point(this.x, this.y);
|
|
39
|
-
}
|
|
40
|
-
get left() {
|
|
41
|
-
return new Point(this.x - this.radius, this.y);
|
|
42
|
-
}
|
|
43
|
-
get right() {
|
|
44
|
-
return new Point(this.x + this.radius, this.y);
|
|
45
|
-
}
|
|
46
|
-
get top() {
|
|
47
|
-
return new Point(this.x, this.y + this.radius);
|
|
48
|
-
}
|
|
49
|
-
get bottom() {
|
|
50
|
-
return new Point(this.x, this.y - this.radius);
|
|
51
|
-
}
|
|
52
|
-
get rect() {
|
|
53
|
-
return new Rect(this.x, this.y, this.radius * 2, this.radius * 2);
|
|
54
|
-
}
|
|
55
|
-
distance(p) {
|
|
56
|
-
return this.center.distance(p) - this.radius;
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
export class Point {
|
|
60
|
-
constructor(x, y) {
|
|
61
|
-
this.x = x;
|
|
62
|
-
this.y = y;
|
|
63
|
-
}
|
|
64
|
-
get length() {
|
|
65
|
-
return this.distance(Point.Zero);
|
|
66
|
-
}
|
|
67
|
-
get perpendicular() {
|
|
68
|
-
return new Point(this.y, -this.x);
|
|
69
|
-
}
|
|
70
|
-
add(p) {
|
|
71
|
-
return new Point(this.x + p.x, this.y + p.y);
|
|
72
|
-
}
|
|
73
|
-
subtract(p) {
|
|
74
|
-
return new Point(this.x - p.x, this.y - p.y);
|
|
75
|
-
}
|
|
76
|
-
multiply(p) {
|
|
77
|
-
if (p instanceof Point) {
|
|
78
|
-
return new Point(this.x * p.x, this.y * p.y);
|
|
79
|
-
}
|
|
80
|
-
return new Point(this.x * p, this.y * p);
|
|
81
|
-
}
|
|
82
|
-
distance(b) {
|
|
83
|
-
const x = b.x - this.x;
|
|
84
|
-
const y = b.y - this.y;
|
|
85
|
-
return Math.sqrt(x * x + y * y);
|
|
86
|
-
}
|
|
87
|
-
lerp(p, ratio) {
|
|
88
|
-
const diff = p.subtract(this);
|
|
89
|
-
return this.add(diff.multiply(ratio));
|
|
90
|
-
}
|
|
91
|
-
perpendicularTo(p, length) {
|
|
92
|
-
const diff = p.perpendicular.subtract(this.perpendicular);
|
|
93
|
-
const ratio = length / diff.length;
|
|
94
|
-
const center = this.lerp(p, .5);
|
|
95
|
-
return center.add(diff.multiply(ratio));
|
|
96
|
-
}
|
|
97
|
-
circleWith(a, b) {
|
|
98
|
-
const yDelta_a = b.y - a.y;
|
|
99
|
-
const xDelta_a = b.x - a.x;
|
|
100
|
-
const yDelta_b = this.y - b.y;
|
|
101
|
-
const xDelta_b = this.x - b.x;
|
|
102
|
-
const aSlope = yDelta_a / xDelta_a;
|
|
103
|
-
const bSlope = yDelta_b / xDelta_b;
|
|
104
|
-
const x = (aSlope * bSlope * (a.y - this.y) + bSlope * (a.x + b.x) - aSlope * (b.x + this.x)) / (2 * (bSlope - aSlope));
|
|
105
|
-
const y = -1 * (x - (a.x + b.x) / 2) / aSlope + (a.y + b.y) / 2;
|
|
106
|
-
const center = new Point(x, y);
|
|
107
|
-
return new Circle(center.x, center.y, center.distance(this));
|
|
108
|
-
}
|
|
109
|
-
tangents(c) {
|
|
110
|
-
const pd = c.center.subtract(this);
|
|
111
|
-
const a = Math.asin(c.radius / pd.length);
|
|
112
|
-
const b = Math.atan2(pd.y, pd.x);
|
|
113
|
-
// Tangent points
|
|
114
|
-
let t = b - a;
|
|
115
|
-
const t1 = new Point(c.x + c.radius * Math.sin(t), c.y + c.radius * -Math.cos(t));
|
|
116
|
-
t = b + a;
|
|
117
|
-
const t2 = new Point(c.x + c.radius * -Math.sin(t), c.y + c.radius * Math.cos(t));
|
|
118
|
-
return [t1, t2];
|
|
119
|
-
}
|
|
120
|
-
angle(p) {
|
|
121
|
-
const diff = p.subtract(this);
|
|
122
|
-
return Math.atan2(diff.y, diff.x) * 180 / Math.PI;
|
|
123
|
-
}
|
|
124
|
-
rotateAround(p, angle) {
|
|
125
|
-
const rotation = (p.angle(this) + angle) * Math.PI / 180;
|
|
126
|
-
const distance = p.distance(this);
|
|
127
|
-
const rotated = new Point(Math.cos(rotation) * distance, Math.sin(rotation) * distance);
|
|
128
|
-
return p.add(rotated);
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
Point.Zero = new Point(0, 0);
|
|
132
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VvbWV0cnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbmd4LXV0aWxzL3V0aWxzL2dlb21ldHJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU9BLE1BQU0sT0FBTyxJQUFJO0lBc0JiLFlBQXFCLENBQVMsRUFBVyxDQUFTLEVBQVcsS0FBYSxFQUFXLE1BQWMsRUFBVyxXQUFtQixDQUFDO1FBQTdHLE1BQUMsR0FBRCxDQUFDLENBQVE7UUFBVyxNQUFDLEdBQUQsQ0FBQyxDQUFRO1FBQVcsVUFBSyxHQUFMLEtBQUssQ0FBUTtRQUFXLFdBQU0sR0FBTixNQUFNLENBQVE7UUFBVyxhQUFRLEdBQVIsUUFBUSxDQUFZO0lBRWxJLENBQUM7SUF0QkQsSUFBSSxNQUFNO1FBQ04sT0FBTyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQsSUFBSSxJQUFJO1FBQ0osT0FBTyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO0lBQ3BDLENBQUM7SUFFRCxJQUFJLEtBQUs7UUFDTCxPQUFPLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7SUFDcEMsQ0FBQztJQUVELElBQUksTUFBTTtRQUNOLE9BQU8sSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQztJQUNyQyxDQUFDO0lBRUQsSUFBSSxHQUFHO1FBQ0gsT0FBTyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDO0lBQ3JDLENBQUM7SUFNRCxRQUFRLENBQUMsQ0FBUTtRQUNiLENBQUMsR0FBRyxDQUFDLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFD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QUFHLENBQUMsQ0FBQyxHQUFHLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNoRSxNQUFNLE1BQU0sR0FBRyxJQUFJLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDL0IsT0FBTyxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFFRCxRQUFRLENBQUMsQ0FBUztRQUNkLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ25DLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDMUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNqQyxpQkFBaUI7UUFDakIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNkLE1BQU0sRUFBRSxHQUFHLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNsRixDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNWLE1BQU0sRUFBRSxHQUFHLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNsRixPQUFPLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3BCLENBQUM7SUFFRCxLQUFLLENBQUMsQ0FBUTtRQUNWLE1BQU0sSUFBSSxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDOUIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDO0lBQ3RELENBQUM7SUFFRCxZQUFZLENBQUMsQ0FBUSxFQUFFLEtBQWE7UUFDaEMsTUFBTSxRQUFRLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxFQUFFLEdBQUcsR0FBRyxDQUFDO1FBQ3pELE1BQU0sUUFBUSxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbEMsTUFBTSxPQUFPLEdBQUcsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsR0FBRyxRQUFRLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsR0FBRyxRQUFRLENBQUMsQ0FBQztRQUN4RixPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDMUIsQ0FBQzs7QUFuRk0sVUFBSSxHQUFVLElBQUksS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgSVNoYXBlIHtcclxuICAgIHg6IG51bWJlcjtcclxuICAgIHk6IG51bWJlcjtcclxuXHJcbiAgICBkaXN0YW5jZShzaGFwZTogSVNoYXBlKTogbnVtYmVyO1xyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgUmVjdCBpbXBsZW1lbnRzIElTaGFwZSB7XHJcblxyXG4gICAgZ2V0IGNlbnRlcigpOiBQb2ludCB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBQb2ludCh0aGlzLngsIHRoaXMueSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IGxlZnQoKTogbnVtYmVyIHtcclxuICAgICAgICByZXR1cm4gdGhpcy54IC0gdGhpcy53aWR0aCAqIC41O1xyXG4gICAgfVxyXG5cclxuICAgIGdldCByaWdodCgpOiBudW1iZXIge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnggKyB0aGlzLndpZHRoICogLjU7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IGJvdHRvbSgpOiBudW1iZXIge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnkgLSB0aGlzLmhlaWdodCAqIC41O1xyXG4gICAgfVxyXG5cclxuICAgIGdldCB0b3AoKTogbnVtYmVyIHtcclxuICAgICAgICByZXR1cm4gdGhpcy55ICsgdGhpcy5oZWlnaHQgKiAuNTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdHJ1Y3RvcihyZWFkb25seSB4OiBudW1iZXIsIHJlYWRvbmx5IHk6IG51bWJlciwgcmVhZG9ubHkgd2lkdGg6IG51bWJlciwgcmVhZG9ubHkgaGVpZ2h0OiBudW1iZXIsIHJlYWRvbmx5IHJvdGF0aW9uOiBudW1iZXIgPSAwKSB7XHJcblxyXG4gICAgfVxyXG5cclxuICAgIGRpc3RhbmNlKHA6IFBvaW50KTogbnVtYmVyIHtcclxuICAgICAgICBwID0gcC5yb3RhdGVBcm91bmQodGhpcy5jZW50ZXIsIC10aGlzLnJvdGF0aW9uKTtcclxuICAgICAgICBjb25zdCB4ID0gTWF0aC5tYXgodGhpcy5sZWZ0IC0gcC54LCAwLCBwLnggLSB0aGlzLnJpZ2h0KTtcclxuICAgICAgICBjb25zdCB5ID0gTWF0aC5tYXgodGhpcy5ib3R0b20gLSBwLnksIDAsIHAueSAtIHRoaXMudG9wKTtcclxuICAgICAgICByZXR1cm4gTWF0aC5zcXJ0KHgqeCArIHkqeSk7XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBDaXJjbGUgaW1wbGVtZW50cyBJU2hhcGUge1xyXG5cclxuICAgIGdldCBjZW50ZXIoKTogUG9pbnQge1xyXG4gICAgICAgIHJldHVybiBuZXcgUG9pbnQodGhpcy54LCB0aGlzLnkpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBsZWZ0KCk6IFBvaW50IHtcclxuICAgICAgICByZXR1cm4gbmV3IFBvaW50KHRoaXMueCAtIHRoaXMucmFkaXVzLCB0aGlzLnkpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCByaWdodCgpOiBQb2ludCB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBQb2ludCh0aGlzLnggKyB0aGlzLnJhZGl1cywgdGhpcy55KTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgdG9wKCk6IFBvaW50IHtcclxuICAgICAgICByZXR1cm4gbmV3IFBvaW50KHRoaXMueCwgdGhpcy55ICsgdGhpcy5yYWRpdXMpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBib3R0b20oKTogUG9pbnQge1xyXG4gICAgICAgIHJldHVybiBuZXcgUG9pbnQodGhpcy54LCB0aGlzLnkgLSB0aGlzLnJhZGl1cyk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IHJlY3QoKTogUmVjdCB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBSZWN0KHRoaXMueCwgdGhpcy55LCB0aGlzLnJhZGl1cyAqIDIsIHRoaXMucmFkaXVzICogMik7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3RydWN0b3IocmVhZG9ubHkgeDogbnVtYmVyLCByZWFkb25seSB5OiBudW1iZXIsIHJlYWRvbmx5IHJhZGl1czogbnVtYmVyKSB7XHJcblxyXG4gICAgfVxyXG5cclxuICAgIGRpc3RhbmNlKHA6IFBvaW50KTogbnVtYmVyIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5jZW50ZXIuZGlzdGFuY2UocCkgLSB0aGlzLnJhZGl1cztcclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFBvaW50IGltcGxlbWVudHMgSVNoYXBlIHtcclxuXHJcbiAgICBzdGF0aWMgWmVybzogUG9pbnQgPSBuZXcgUG9pbnQoMCwgMCk7XHJcblxyXG4gICAgZ2V0IGxlbmd0aCgpOiBudW1iZXIge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmRpc3RhbmNlKFBvaW50Llplcm8pO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBwZXJwZW5kaWN1bGFyKCk6IFBvaW50IHtcclxuICAgICAgICByZXR1cm4gbmV3IFBvaW50KHRoaXMueSwgLXRoaXMueCk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3RydWN0b3IocmVhZG9ubHkgeDogbnVtYmVyLCByZWFkb25seSB5OiBudW1iZXIpIHtcclxuICAgIH1cclxuXHJcbiAgICBhZGQocDogUG9pbnQpOiBQb2ludCB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBQb2ludCh0aGlzLnggKyBwLngsIHRoaXMueSArIHAueSk7XHJcbiAgICB9XHJcblxyXG4gICAgc3VidHJhY3QocDogUG9pbnQpOiBQb2ludCB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBQb2ludCh0aGlzLnggLSBwLngsIHRoaXMueSAtIHAueSk7XHJcbiAgICB9XHJcblxyXG4gICAgbXVsdGlwbHkocDogUG9pbnQgfCBudW1iZXIpOiBQb2ludCB7XHJcbiAgICAgICAgaWYgKHAgaW5zdGFuY2VvZiBQb2ludCkge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IFBvaW50KHRoaXMueCAqIHAueCwgdGhpcy55ICogcC55KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG5ldyBQb2ludCh0aGlzLnggKiBwLCB0aGlzLnkgKiBwKTtcclxuICAgIH1cclxuXHJcbiAgICBkaXN0YW5jZShiOiBQb2ludCk6IG51bWJlciB7XHJcbiAgICAgICAgY29uc3QgeCA9IGIueCAtIHRoaXMueDtcclxuICAgICAgICBjb25zdCB5ID0gYi55IC0gdGhpcy55O1xyXG4gICAgICAgIHJldHVybiBNYXRoLnNxcnQoeCAqIHggKyB5ICogeSk7XHJcbiAgICB9XHJcblxyXG4gICAgbGVycChwOiBQb2ludCwgcmF0aW86IG51bWJlcik6IFBvaW50IHtcclxuICAgICAgICBjb25zdCBkaWZmID0gcC5zdWJ0cmFjdCh0aGlzKTtcclxuICAgICAgICByZXR1cm4gdGhpcy5hZGQoZGlmZi5tdWx0aXBseShyYXRpbykpO1xyXG4gICAgfVxyXG5cclxuICAgIHBlcnBlbmRpY3VsYXJUbyhwOiBQb2ludCwgbGVuZ3RoOiBudW1iZXIpOiBQb2ludCB7XHJcbiAgICAgICAgY29uc3QgZGlmZiA9IHAucGVycGVuZGljdWxhci5zdWJ0cmFjdCh0aGlzLnBlcnBlbmRpY3VsYXIpO1xyXG4gICAgICAgIGNvbnN0IHJhdGlvID0gbGVuZ3RoIC8gZGlmZi5sZW5ndGg7XHJcbiAgICAgICAgY29uc3QgY2VudGVyID0gdGhpcy5sZXJwKHAsIC41KTtcclxuICAgICAgICByZXR1cm4gY2VudGVyLmFkZChkaWZmLm11bHRpcGx5KHJhdGlvKSk7XHJcbiAgICB9XHJcblxyXG4gICAgY2lyY2xlV2l0aChhOiBQb2ludCwgYjogUG9pbnQpOiBDaXJjbGUge1xyXG4gICAgICAgIGNvbnN0IHlEZWx0YV9hID0gYi55IC0gYS55O1xyXG4gICAgICAgIGNvbnN0IHhEZWx0YV9hID0gYi54IC0gYS54O1xyXG4gICAgICAgIGNvbnN0IHlEZWx0YV9iID0gdGhpcy55IC0gYi55O1xyXG4gICAgICAgIGNvbnN0IHhEZWx0YV9iID0gdGhpcy54IC0gYi54O1xyXG5cclxuICAgICAgICBjb25zdCBhU2xvcGUgPSB5RGVsdGFfYSAvIHhEZWx0YV9hO1xyXG4gICAgICAgIGNvbnN0IGJTbG9wZSA9IHlEZWx0YV9iIC8geERlbHRhX2I7XHJcblxyXG4gICAgICAgIGNvbnN0IHggPSAoYVNsb3BlICogYlNsb3BlICogKGEueSAtIHRoaXMueSkgKyBiU2xvcGUgKiAoYS54ICsgYi54KSAtIGFTbG9wZSAqIChiLnggKyB0aGlzLngpKSAvICgyICogKGJTbG9wZSAtIGFTbG9wZSkpO1xyXG4gICAgICAgIGNvbnN0IHkgPSAtMSAqICh4IC0gKGEueCArIGIueCkgLyAyKSAvIGFTbG9wZSArIChhLnkgKyBiLnkpIC8gMjtcclxuICAgICAgICBjb25zdCBjZW50ZXIgPSBuZXcgUG9pbnQoeCwgeSk7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBDaXJjbGUoY2VudGVyLngsIGNlbnRlci55LCBjZW50ZXIuZGlzdGFuY2UodGhpcykpO1xyXG4gICAgfVxyXG5cclxuICAgIHRhbmdlbnRzKGM6IENpcmNsZSk6IFBvaW50W10ge1xyXG4gICAgICAgIGNvbnN0IHBkID0gYy5jZW50ZXIuc3VidHJhY3QodGhpcyk7XHJcbiAgICAgICAgY29uc3QgYSA9IE1hdGguYXNpbihjLnJhZGl1cyAvIHBkLmxlbmd0aCk7XHJcbiAgICAgICAgY29uc3QgYiA9IE1hdGguYXRhbjIocGQueSwgcGQueCk7XHJcbiAgICAgICAgLy8gVGFuZ2VudCBwb2ludHNcclxuICAgICAgICBsZXQgdCA9IGIgLSBhO1xyXG4gICAgICAgIGNvbnN0IHQxID0gbmV3IFBvaW50KGMueCArIGMucmFkaXVzICogTWF0aC5zaW4odCksIGMueSArIGMucmFkaXVzICogLU1hdGguY29zKHQpKTtcclxuICAgICAgICB0ID0gYiArIGE7XHJcbiAgICAgICAgY29uc3QgdDIgPSBuZXcgUG9pbnQoYy54ICsgYy5yYWRpdXMgKiAtTWF0aC5zaW4odCksIGMueSArIGMucmFkaXVzICogTWF0aC5jb3ModCkpO1xyXG4gICAgICAgIHJldHVybiBbdDEsIHQyXTtcclxuICAgIH1cclxuXHJcbiAgICBhbmdsZShwOiBQb2ludCk6IG51bWJlciB7XHJcbiAgICAgICAgY29uc3QgZGlmZiA9IHAuc3VidHJhY3QodGhpcyk7XHJcbiAgICAgICAgcmV0dXJuIE1hdGguYXRhbjIoZGlmZi55LCBkaWZmLngpICogMTgwIC8gTWF0aC5QSTtcclxuICAgIH1cclxuXHJcbiAgICByb3RhdGVBcm91bmQocDogUG9pbnQsIGFuZ2xlOiBudW1iZXIpOiBQb2ludCB7XHJcbiAgICAgICAgY29uc3Qgcm90YXRpb24gPSAocC5hbmdsZSh0aGlzKSArIGFuZ2xlKSAqIE1hdGguUEkgLyAxODA7XHJcbiAgICAgICAgY29uc3QgZGlzdGFuY2UgPSBwLmRpc3RhbmNlKHRoaXMpO1xyXG4gICAgICAgIGNvbnN0IHJvdGF0ZWQgPSBuZXcgUG9pbnQoTWF0aC5jb3Mocm90YXRpb24pICogZGlzdGFuY2UsIE1hdGguc2luKHJvdGF0aW9uKSAqIGRpc3RhbmNlKTtcclxuICAgICAgICByZXR1cm4gcC5hZGQocm90YXRlZCk7XHJcbiAgICB9XHJcbn1cclxuIl19
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { Invokable } from "invokable";
|
|
2
|
-
export class Initializer {
|
|
3
|
-
constructor(callback, shouldInit = true) {
|
|
4
|
-
this.callback = callback;
|
|
5
|
-
this.shouldInit = shouldInit;
|
|
6
|
-
this.initialized = !this.shouldInit;
|
|
7
|
-
// @ts-ignore
|
|
8
|
-
return Invokable.create(this);
|
|
9
|
-
}
|
|
10
|
-
get isInitialized() {
|
|
11
|
-
return this.initialized;
|
|
12
|
-
}
|
|
13
|
-
[Invokable.call]() {
|
|
14
|
-
if (this.initialized)
|
|
15
|
-
return null;
|
|
16
|
-
this.initialized = true;
|
|
17
|
-
return this.callback();
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5pdGlhbGl6ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbmd4LXV0aWxzL3V0aWxzL2luaXRpYWxpemVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxXQUFXLENBQUM7QUFFcEMsTUFBTSxPQUFPLFdBQVc7SUFRcEIsWUFBb0IsUUFBaUIsRUFBVSxhQUFzQixJQUFJO1FBQXJELGFBQVEsR0FBUixRQUFRLENBQVM7UUFBVSxlQUFVLEdBQVYsVUFBVSxDQUFnQjtRQUNyRSxJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQztRQUNwQyxhQUFhO1FBQ2IsT0FBTyxTQUFTLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFSRCxJQUFJLGFBQWE7UUFDYixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDNUIsQ0FBQztJQVFELENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQztRQUNaLElBQUksSUFBSSxDQUFDLFdBQVc7WUFBRSxPQUFPLElBQUksQ0FBQztRQUNsQyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztRQUN4QixPQUFPLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUMzQixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0ludm9rYWJsZX0gZnJvbSBcImludm9rYWJsZVwiO1xyXG5cclxuZXhwb3J0IGNsYXNzIEluaXRpYWxpemVyPFQ+IHtcclxuXHJcbiAgICBwcml2YXRlIGluaXRpYWxpemVkOiBib29sZWFuO1xyXG5cclxuICAgIGdldCBpc0luaXRpYWxpemVkKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmluaXRpYWxpemVkO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgY2FsbGJhY2s6ICgpID0+IFQsIHByaXZhdGUgc2hvdWxkSW5pdDogYm9vbGVhbiA9IHRydWUpIHtcclxuICAgICAgICB0aGlzLmluaXRpYWxpemVkID0gIXRoaXMuc2hvdWxkSW5pdDtcclxuICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgICAgcmV0dXJuIEludm9rYWJsZS5jcmVhdGUodGhpcyk7XHJcbiAgICB9XHJcblxyXG4gICAgW0ludm9rYWJsZS5jYWxsXSgpOiBUIHtcclxuICAgICAgICBpZiAodGhpcy5pbml0aWFsaXplZCkgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgdGhpcy5pbml0aWFsaXplZCA9IHRydWU7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY2FsbGJhY2soKTtcclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJbml0aWFsaXplcjxUPiB7XHJcbiAgICAoKTogVDtcclxufVxyXG4iXX0=
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
export class LoaderUtils {
|
|
2
|
-
static loadScript(src, async = false) {
|
|
3
|
-
this.scriptPromises[src] = this.scriptPromises[src] || new Promise((resolve, reject) => {
|
|
4
|
-
// Load script
|
|
5
|
-
const script = document.createElement("script");
|
|
6
|
-
script.type = "text/javascript";
|
|
7
|
-
script.src = src;
|
|
8
|
-
script.async = async;
|
|
9
|
-
if (script.readyState) {
|
|
10
|
-
// Internet explorer
|
|
11
|
-
script.onreadystatechange = () => {
|
|
12
|
-
if (script.readyState === "loaded" || script.readyState === "complete") {
|
|
13
|
-
script.onreadystatechange = null;
|
|
14
|
-
resolve(script);
|
|
15
|
-
}
|
|
16
|
-
};
|
|
17
|
-
}
|
|
18
|
-
else {
|
|
19
|
-
// Other browsers
|
|
20
|
-
script.onload = () => resolve(script);
|
|
21
|
-
}
|
|
22
|
-
script.onerror = (error) => reject(error);
|
|
23
|
-
document.body.appendChild(script);
|
|
24
|
-
});
|
|
25
|
-
return this.scriptPromises[src];
|
|
26
|
-
}
|
|
27
|
-
static loadStyle(src) {
|
|
28
|
-
this.stylePromises[src] = this.stylePromises[src] || new Promise((resolve, reject) => {
|
|
29
|
-
// Load script
|
|
30
|
-
const link = document.createElement("link");
|
|
31
|
-
link.rel = "stylesheet";
|
|
32
|
-
link.type = "text/css";
|
|
33
|
-
link.href = src;
|
|
34
|
-
if (link.readyState) {
|
|
35
|
-
// Internet explorer
|
|
36
|
-
link.onreadystatechange = () => {
|
|
37
|
-
if (link.readyState === "loaded" || link.readyState === "complete") {
|
|
38
|
-
link.onreadystatechange = null;
|
|
39
|
-
resolve(link);
|
|
40
|
-
}
|
|
41
|
-
};
|
|
42
|
-
}
|
|
43
|
-
else {
|
|
44
|
-
// Other browsers
|
|
45
|
-
link.onload = () => resolve(link);
|
|
46
|
-
}
|
|
47
|
-
link.onerror = (error) => reject(error);
|
|
48
|
-
document.body.appendChild(link);
|
|
49
|
-
});
|
|
50
|
-
return this.stylePromises[src];
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
LoaderUtils.scriptPromises = {};
|
|
54
|
-
LoaderUtils.stylePromises = {};
|
|
55
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZGVyLnV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL25neC11dGlscy91dGlscy9sb2FkZXIudXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxPQUFPLFdBQVc7SUFLcEIsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFXLEVBQUUsUUFBaUIsS0FBSztRQUNqRCxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSSxPQUFPLENBQU0sQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7WUFDeEYsY0FBYztZQUNkLE1BQU0sTUFBTSxHQUFRLFFBQVEsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDckQsTUFBTSxDQUFDLElBQUksR0FBRyxpQkFBaUIsQ0FBQztZQUNoQyxNQUFNLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztZQUNqQixNQUFNLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztZQUNyQixJQUFJLE1BQU0sQ0FBQyxVQUFVLEVBQUU7Z0JBQ25CLG9CQUFvQjtnQkFDcEIsTUFBTSxDQUFDLGtCQUFrQixHQUFHLEdBQUcsRUFBRTtvQkFDN0IsSUFBSSxNQUFNLENBQUMsVUFBVSxLQUFLLFFBQVEsSUFBSSxNQUFNLENBQUMsVUFBVSxLQUFLLFVBQVUsRUFBRTt3QkFDcEUsTUFBTSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQzt3QkFDakMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO3FCQUNuQjtnQkFDTCxDQUFDLENBQUM7YUFDTDtpQkFBTTtnQkFDSCxpQkFBaUI7Z0JBQ2pCLE1BQU0sQ0FBQyxNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO2FBQ3pDO1lBQ0QsTUFBTSxDQUFDLE9BQU8sR0FBRyxDQUFDLEtBQVUsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQy9DLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3RDLENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFRCxNQUFNLENBQUMsU0FBUyxDQUFDLEdBQVc7UUFDeEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxJQUFJLElBQUksT0FBTyxDQUFNLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQ3RGLGNBQWM7WUFDZCxNQUFNLElBQUksR0FBUSxRQUFRLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ2pELElBQUksQ0FBQyxHQUFHLEdBQUcsWUFBWSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxJQUFJLEdBQUcsVUFBVSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDO1lBRWhCLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRTtnQkFDakIsb0JBQW9CO2dCQUNwQixJQUFJLENBQUMsa0JBQWtCLEdBQUcsR0FBRyxFQUFFO29CQUMzQixJQUFJLElBQUksQ0FBQyxVQUFVLEtBQUssUUFBUSxJQUFJLElBQUksQ0FBQyxVQUFVLEtBQUssVUFBVSxFQUFFO3dCQUNoRSxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDO3dCQUMvQixPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7cUJBQ2pCO2dCQUNMLENBQUMsQ0FBQzthQUNMO2lCQUFNO2dCQUNILGlCQUFpQjtnQkFDakIsSUFBSSxDQUFDLE1BQU0sR0FBRyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDckM7WUFDRCxJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsS0FBVSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDN0MsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDcEMsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbkMsQ0FBQzs7QUFwRE0sMEJBQWMsR0FBb0IsRUFBRSxDQUFDO0FBQ3JDLHlCQUFhLEdBQW1CLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SVNjcmlwdFByb21pc2VzLCBJU3R5bGVQcm9taXNlc30gZnJvbSBcIi4uL2NvbW1vbi10eXBlc1wiO1xyXG5cclxuZXhwb3J0IGNsYXNzIExvYWRlclV0aWxzIHtcclxuXHJcbiAgICBzdGF0aWMgc2NyaXB0UHJvbWlzZXM6IElTY3JpcHRQcm9taXNlcyA9IHt9O1xyXG4gICAgc3RhdGljIHN0eWxlUHJvbWlzZXM6IElTdHlsZVByb21pc2VzID0ge307XHJcblxyXG4gICAgc3RhdGljIGxvYWRTY3JpcHQoc3JjOiBzdHJpbmcsIGFzeW5jOiBib29sZWFuID0gZmFsc2UpOiBQcm9taXNlPEhUTUxTY3JpcHRFbGVtZW50PiB7XHJcbiAgICAgICAgdGhpcy5zY3JpcHRQcm9taXNlc1tzcmNdID0gdGhpcy5zY3JpcHRQcm9taXNlc1tzcmNdIHx8IG5ldyBQcm9taXNlPGFueT4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICAgICAgICAvLyBMb2FkIHNjcmlwdFxyXG4gICAgICAgICAgICBjb25zdCBzY3JpcHQ6IGFueSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzY3JpcHRcIik7XHJcbiAgICAgICAgICAgIHNjcmlwdC50eXBlID0gXCJ0ZXh0L2phdmFzY3JpcHRcIjtcclxuICAgICAgICAgICAgc2NyaXB0LnNyYyA9IHNyYztcclxuICAgICAgICAgICAgc2NyaXB0LmFzeW5jID0gYXN5bmM7XHJcbiAgICAgICAgICAgIGlmIChzY3JpcHQucmVhZHlTdGF0ZSkge1xyXG4gICAgICAgICAgICAgICAgLy8gSW50ZXJuZXQgZXhwbG9yZXJcclxuICAgICAgICAgICAgICAgIHNjcmlwdC5vbnJlYWR5c3RhdGVjaGFuZ2UgPSAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNjcmlwdC5yZWFkeVN0YXRlID09PSBcImxvYWRlZFwiIHx8IHNjcmlwdC5yZWFkeVN0YXRlID09PSBcImNvbXBsZXRlXCIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2NyaXB0Lm9ucmVhZHlzdGF0ZWNoYW5nZSA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoc2NyaXB0KTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgLy8gT3RoZXIgYnJvd3NlcnNcclxuICAgICAgICAgICAgICAgIHNjcmlwdC5vbmxvYWQgPSAoKSA9PiByZXNvbHZlKHNjcmlwdCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgc2NyaXB0Lm9uZXJyb3IgPSAoZXJyb3I6IGFueSkgPT4gcmVqZWN0KGVycm9yKTtcclxuICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChzY3JpcHQpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNjcmlwdFByb21pc2VzW3NyY107XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIGxvYWRTdHlsZShzcmM6IHN0cmluZyk6IFByb21pc2U8SFRNTExpbmtFbGVtZW50PiB7XHJcbiAgICAgICAgdGhpcy5zdHlsZVByb21pc2VzW3NyY10gPSB0aGlzLnN0eWxlUHJvbWlzZXNbc3JjXSB8fCBuZXcgUHJvbWlzZTxhbnk+KChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgICAgICAgLy8gTG9hZCBzY3JpcHRcclxuICAgICAgICAgICAgY29uc3QgbGluazogYW55ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImxpbmtcIik7XHJcbiAgICAgICAgICAgIGxpbmsucmVsID0gXCJzdHlsZXNoZWV0XCI7XHJcbiAgICAgICAgICAgIGxpbmsudHlwZSA9IFwidGV4dC9jc3NcIjtcclxuICAgICAgICAgICAgbGluay5ocmVmID0gc3JjO1xyXG5cclxuICAgICAgICAgICAgaWYgKGxpbmsucmVhZHlTdGF0ZSkge1xyXG4gICAgICAgICAgICAgICAgLy8gSW50ZXJuZXQgZXhwbG9yZXJcclxuICAgICAgICAgICAgICAgIGxpbmsub25yZWFkeXN0YXRlY2hhbmdlID0gKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChsaW5rLnJlYWR5U3RhdGUgPT09IFwibG9hZGVkXCIgfHwgbGluay5yZWFkeVN0YXRlID09PSBcImNvbXBsZXRlXCIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGluay5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKGxpbmspO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAvLyBPdGhlciBicm93c2Vyc1xyXG4gICAgICAgICAgICAgICAgbGluay5vbmxvYWQgPSAoKSA9PiByZXNvbHZlKGxpbmspO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGxpbmsub25lcnJvciA9IChlcnJvcjogYW55KSA9PiByZWplY3QoZXJyb3IpO1xyXG4gICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGxpbmspO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiB0aGlzLnN0eWxlUHJvbWlzZXNbc3JjXTtcclxuICAgIH1cclxufVxyXG4iXX0=
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
import { ObjectUtils } from "./object.utils";
|
|
2
|
-
export class MathUtils {
|
|
3
|
-
static equal(a, b, epsilon = null) {
|
|
4
|
-
epsilon = ObjectUtils.isNumber(epsilon) ? epsilon : MathUtils.EPSILON;
|
|
5
|
-
return Math.abs(a - b) < epsilon;
|
|
6
|
-
}
|
|
7
|
-
static clamp(value, min, max) {
|
|
8
|
-
return Math.max(Math.min(value, max), min);
|
|
9
|
-
}
|
|
10
|
-
static round(value, precision = 2, divider = 1) {
|
|
11
|
-
precision = Math.pow(10, precision);
|
|
12
|
-
return Math.round(value * precision / divider) / precision;
|
|
13
|
-
}
|
|
14
|
-
static approxIndex(x, values, epsilon = null) {
|
|
15
|
-
if (!Array.isArray(values) || values.length == 0) {
|
|
16
|
-
return -1;
|
|
17
|
-
}
|
|
18
|
-
let s = 0;
|
|
19
|
-
let e = values.length - 1;
|
|
20
|
-
while (s <= e) {
|
|
21
|
-
const i = Math.floor((s + e) / 2);
|
|
22
|
-
const v = values[i];
|
|
23
|
-
if (MathUtils.equal(v, x, epsilon)) {
|
|
24
|
-
return i;
|
|
25
|
-
}
|
|
26
|
-
if (v < x) {
|
|
27
|
-
s = i + 1;
|
|
28
|
-
}
|
|
29
|
-
else {
|
|
30
|
-
e = i - 1;
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
const m = Math.max(e, 0);
|
|
34
|
-
const a = values[s];
|
|
35
|
-
const b = values[m];
|
|
36
|
-
return Math.abs(a - x) < Math.abs(b - x) ? s : m;
|
|
37
|
-
}
|
|
38
|
-
static approximate(x, values, epsilon = null) {
|
|
39
|
-
var _a;
|
|
40
|
-
const index = MathUtils.approxIndex(x, values, epsilon);
|
|
41
|
-
return (_a = values[index]) !== null && _a !== void 0 ? _a : null;
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
MathUtils.EPSILON = 1e-9;
|
|
45
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0aC51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9uZ3gtdXRpbHMvdXRpbHMvbWF0aC51dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0MsTUFBTSxPQUFPLFNBQVM7SUFJbEIsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFTLEVBQUUsQ0FBUyxFQUFFLFVBQWtCLElBQUk7UUFDckQsT0FBTyxHQUFHLFdBQVcsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQztRQUN0RSxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQztJQUNyQyxDQUFDO0lBRUQsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFhLEVBQUUsR0FBVyxFQUFFLEdBQVc7UUFDaEQsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFBO0lBQzlDLENBQUM7SUFFRCxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQWEsRUFBRSxZQUFvQixDQUFDLEVBQUUsVUFBa0IsQ0FBQztRQUNsRSxTQUFTLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDcEMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxTQUFTLEdBQUcsT0FBTyxDQUFDLEdBQUcsU0FBUyxDQUFDO0lBQy9ELENBQUM7SUFFRCxNQUFNLENBQUMsV0FBVyxDQUFDLENBQVMsRUFBRSxNQUFnQixFQUFFLFVBQWtCLElBQUk7UUFDbEUsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksTUFBTSxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUU7WUFDOUMsT0FBTyxDQUFDLENBQUMsQ0FBQztTQUNiO1FBQ0QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ1YsSUFBSSxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFDMUIsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ1gsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUNsQyxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDcEIsSUFBSSxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsT0FBTyxDQUFDLEVBQUU7Z0JBQ2hDLE9BQU8sQ0FBQyxDQUFDO2FBQ1o7WUFDRCxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUU7Z0JBQ1AsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7YUFDYjtpQkFBTTtnQkFDSCxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQzthQUNiO1NBQ0o7UUFDRCxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUN6QixNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDcEIsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFRCxNQUFNLENBQUMsV0FBVyxDQUFDLENBQVMsRUFBRSxNQUFnQixFQUFFLFVBQWtCLElBQUk7O1FBQ2xFLE1BQU0sS0FBSyxHQUFHLFNBQVMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztRQUN4RCxPQUFPLE1BQUEsTUFBTSxDQUFDLEtBQUssQ0FBQyxtQ0FBSSxJQUFJLENBQUM7SUFDakMsQ0FBQzs7QUEzQ2UsaUJBQU8sR0FBVyxJQUFJLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge09iamVjdFV0aWxzfSBmcm9tIFwiLi9vYmplY3QudXRpbHNcIjtcclxuXHJcbmV4cG9ydCBjbGFzcyBNYXRoVXRpbHMge1xyXG5cclxuICAgIHN0YXRpYyByZWFkb25seSBFUFNJTE9OOiBudW1iZXIgPSAxZS05O1xyXG5cclxuICAgIHN0YXRpYyBlcXVhbChhOiBudW1iZXIsIGI6IG51bWJlciwgZXBzaWxvbjogbnVtYmVyID0gbnVsbCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGVwc2lsb24gPSBPYmplY3RVdGlscy5pc051bWJlcihlcHNpbG9uKSA/IGVwc2lsb24gOiBNYXRoVXRpbHMuRVBTSUxPTjtcclxuICAgICAgICByZXR1cm4gTWF0aC5hYnMoYSAtIGIpIDwgZXBzaWxvbjtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgY2xhbXAodmFsdWU6IG51bWJlciwgbWluOiBudW1iZXIsIG1heDogbnVtYmVyKTogbnVtYmVyIHtcclxuICAgICAgICByZXR1cm4gTWF0aC5tYXgoTWF0aC5taW4odmFsdWUsIG1heCksIG1pbilcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgcm91bmQodmFsdWU6IG51bWJlciwgcHJlY2lzaW9uOiBudW1iZXIgPSAyLCBkaXZpZGVyOiBudW1iZXIgPSAxKTogbnVtYmVyIHtcclxuICAgICAgICBwcmVjaXNpb24gPSBNYXRoLnBvdygxMCwgcHJlY2lzaW9uKTtcclxuICAgICAgICByZXR1cm4gTWF0aC5yb3VuZCh2YWx1ZSAqIHByZWNpc2lvbiAvIGRpdmlkZXIpIC8gcHJlY2lzaW9uO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBhcHByb3hJbmRleCh4OiBudW1iZXIsIHZhbHVlczogbnVtYmVyW10sIGVwc2lsb246IG51bWJlciA9IG51bGwpOiBudW1iZXIge1xyXG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheSh2YWx1ZXMpIHx8IHZhbHVlcy5sZW5ndGggPT0gMCkge1xyXG4gICAgICAgICAgICByZXR1cm4gLTE7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBzID0gMDtcclxuICAgICAgICBsZXQgZSA9IHZhbHVlcy5sZW5ndGggLSAxO1xyXG4gICAgICAgIHdoaWxlIChzIDw9IGUpIHtcclxuICAgICAgICAgICAgY29uc3QgaSA9IE1hdGguZmxvb3IoKHMgKyBlKSAvIDIpO1xyXG4gICAgICAgICAgICBjb25zdCB2ID0gdmFsdWVzW2ldO1xyXG4gICAgICAgICAgICBpZiAoTWF0aFV0aWxzLmVxdWFsKHYsIHgsIGVwc2lsb24pKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gaTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAodiA8IHgpIHtcclxuICAgICAgICAgICAgICAgIHMgPSBpICsgMTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGUgPSBpIC0gMTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBtID0gTWF0aC5tYXgoZSwgMCk7XHJcbiAgICAgICAgY29uc3QgYSA9IHZhbHVlc1tzXTtcclxuICAgICAgICBjb25zdCBiID0gdmFsdWVzW21dO1xyXG4gICAgICAgIHJldHVybiBNYXRoLmFicyhhIC0geCkgPCBNYXRoLmFicyhiIC0geCkgPyBzIDogbTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgYXBwcm94aW1hdGUoeDogbnVtYmVyLCB2YWx1ZXM6IG51bWJlcltdLCBlcHNpbG9uOiBudW1iZXIgPSBudWxsKTogbnVtYmVyIHtcclxuICAgICAgICBjb25zdCBpbmRleCA9IE1hdGhVdGlscy5hcHByb3hJbmRleCh4LCB2YWx1ZXMsIGVwc2lsb24pO1xyXG4gICAgICAgIHJldHVybiB2YWx1ZXNbaW5kZXhdID8/IG51bGw7XHJcbiAgICB9XHJcbn1cclxuIl19
|