@metadev/lux 0.26.0 → 0.27.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/esm2022/lib/autocomplete/autocomplete.component.mjs +488 -0
- package/esm2022/lib/autocomplete-list/autocomplete-list.component.mjs +259 -0
- package/esm2022/lib/breadcrumb/breadcrumb.component.mjs +78 -0
- package/esm2022/lib/checkbox/checkbox.component.mjs +156 -0
- package/esm2022/lib/datetime/datetime.component.mjs +312 -0
- package/esm2022/lib/filter/filter.component.mjs +158 -0
- package/esm2022/lib/geolocation/geolocation.component.mjs +423 -0
- package/esm2022/lib/geolocation/geolocation.service.mjs +123 -0
- package/{esm2020 → esm2022}/lib/geolocation/openlayer-loader.service.mjs +4 -4
- package/esm2022/lib/helperFns.mjs +118 -0
- package/esm2022/lib/input/input.component.mjs +469 -0
- package/{esm2020 → esm2022}/lib/input/regexp.service.mjs +4 -4
- package/esm2022/lib/lux.module.mjs +119 -0
- package/esm2022/lib/map/map.component.mjs +275 -0
- package/esm2022/lib/modal/modal-backdrop.mjs +25 -0
- package/esm2022/lib/modal/modal-config.mjs +12 -0
- package/esm2022/lib/modal/modal-ref.mjs +101 -0
- package/esm2022/lib/modal/modal-stack.mjs +182 -0
- package/esm2022/lib/modal/modal-window.mjs +125 -0
- package/esm2022/lib/modal/modal.service.mjs +28 -0
- package/esm2022/lib/modal/util.mjs +82 -0
- package/esm2022/lib/pagination/pagination.component.mjs +144 -0
- package/esm2022/lib/radiogroup/radiogroup.component.mjs +129 -0
- package/esm2022/lib/select/select.component.mjs +148 -0
- package/esm2022/lib/tooltip/tooltip.component.mjs +24 -0
- package/esm2022/lib/tooltip/tooltip.directive.mjs +69 -0
- package/esm2022/lib/tooltip/tooltip.service.mjs +137 -0
- package/esm2022/lib/tooltip/tooltop-content.mjs +9 -0
- package/esm2022/lib/voice-recognition/voice-recognition.directive.mjs +79 -0
- package/{fesm2020 → fesm2022}/metadev-lux.mjs +671 -554
- package/fesm2022/metadev-lux.mjs.map +1 -0
- package/lib/autocomplete/autocomplete.component.d.ts +1 -1
- package/lib/autocomplete-list/autocomplete-list.component.d.ts +1 -1
- package/lib/checkbox/checkbox.component.d.ts +1 -1
- package/lib/datetime/datetime.component.d.ts +1 -1
- package/lib/filter/filter.component.d.ts +1 -1
- package/lib/geolocation/geolocation.component.d.ts +1 -1
- package/lib/input/input.component.d.ts +1 -1
- package/lib/map/map.component.d.ts +2 -2
- package/lib/modal/modal-backdrop.d.ts +1 -1
- package/lib/modal/modal-stack.d.ts +1 -1
- package/lib/modal/modal-window.d.ts +1 -1
- package/lib/modal/util.d.ts +1 -1
- package/lib/pagination/pagination.component.d.ts +1 -1
- package/lib/radiogroup/radiogroup.component.d.ts +1 -1
- package/lib/select/select.component.d.ts +1 -1
- package/lib/tooltip/tooltip.component.d.ts +1 -1
- package/lib/tooltip/tooltip.directive.d.ts +1 -1
- package/lib/voice-recognition/voice-recognition.directive.d.ts +1 -1
- package/package.json +7 -13
- package/esm2020/lib/autocomplete/autocomplete.component.mjs +0 -479
- package/esm2020/lib/autocomplete-list/autocomplete-list.component.mjs +0 -254
- package/esm2020/lib/breadcrumb/breadcrumb.component.mjs +0 -75
- package/esm2020/lib/checkbox/checkbox.component.mjs +0 -154
- package/esm2020/lib/datetime/datetime.component.mjs +0 -306
- package/esm2020/lib/filter/filter.component.mjs +0 -152
- package/esm2020/lib/geolocation/geolocation.component.mjs +0 -407
- package/esm2020/lib/geolocation/geolocation.service.mjs +0 -120
- package/esm2020/lib/helperFns.mjs +0 -117
- package/esm2020/lib/input/input.component.mjs +0 -452
- package/esm2020/lib/lux.module.mjs +0 -124
- package/esm2020/lib/map/map.component.mjs +0 -264
- package/esm2020/lib/modal/modal-backdrop.mjs +0 -26
- package/esm2020/lib/modal/modal-config.mjs +0 -14
- package/esm2020/lib/modal/modal-ref.mjs +0 -91
- package/esm2020/lib/modal/modal-stack.mjs +0 -179
- package/esm2020/lib/modal/modal-window.mjs +0 -119
- package/esm2020/lib/modal/modal.service.mjs +0 -26
- package/esm2020/lib/modal/util.mjs +0 -83
- package/esm2020/lib/pagination/pagination.component.mjs +0 -137
- package/esm2020/lib/radiogroup/radiogroup.component.mjs +0 -130
- package/esm2020/lib/select/select.component.mjs +0 -149
- package/esm2020/lib/tooltip/tooltip.component.mjs +0 -23
- package/esm2020/lib/tooltip/tooltip.directive.mjs +0 -60
- package/esm2020/lib/tooltip/tooltip.service.mjs +0 -134
- package/esm2020/lib/tooltip/tooltop-content.mjs +0 -7
- package/esm2020/lib/voice-recognition/voice-recognition.directive.mjs +0 -73
- package/fesm2015/metadev-lux.mjs +0 -4347
- package/fesm2015/metadev-lux.mjs.map +0 -1
- package/fesm2020/metadev-lux.mjs.map +0 -1
- /package/{esm2020 → esm2022}/lib/datasource.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/lang.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/map/geopoint.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modal/modal-dismiss-reasons.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/pagination/pagination.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/tooltip/placement.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/tooltip/tooltip-context.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/window/window.service.mjs +0 -0
- /package/{esm2020 → esm2022}/metadev-lux.mjs +0 -0
- /package/{esm2020 → esm2022}/public-api.mjs +0 -0
|
@@ -1,120 +0,0 @@
|
|
|
1
|
-
import { HttpClient } from '@angular/common/http';
|
|
2
|
-
import { Injectable } from '@angular/core';
|
|
3
|
-
import { of, Subject } from 'rxjs';
|
|
4
|
-
import { debounceTime, distinctUntilChanged, map, switchMap } from 'rxjs/operators';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
import * as i1 from "@angular/common/http";
|
|
7
|
-
export class GeolocationService {
|
|
8
|
-
constructor(http) {
|
|
9
|
-
this.http = http;
|
|
10
|
-
this.debouncePeriodMs = 300; // ms
|
|
11
|
-
this.cacheSize = 20;
|
|
12
|
-
this.lastQueriesWithResults = new Map();
|
|
13
|
-
this.lastQueriesLru = [];
|
|
14
|
-
this.currentSearch$ = new Subject();
|
|
15
|
-
const typed$ = this.currentSearch$
|
|
16
|
-
.asObservable()
|
|
17
|
-
.pipe(distinctUntilChanged());
|
|
18
|
-
this.currentQuery$ = typed$.pipe(debounceTime(this.debouncePeriodMs), switchMap((currentQuery) => {
|
|
19
|
-
const data = this.getFromCache(currentQuery);
|
|
20
|
-
if (data !== undefined) {
|
|
21
|
-
return of(data);
|
|
22
|
-
}
|
|
23
|
-
// Nominatim search documentation:
|
|
24
|
-
// https://nominatim.org/release-docs/develop/api/Search/
|
|
25
|
-
const url = 'https://nominatim.openstreetmap.org/search?format=json&limit=20&q=' +
|
|
26
|
-
encodeURIComponent(currentQuery);
|
|
27
|
-
const headers = {
|
|
28
|
-
'Content-Type': 'application/json'
|
|
29
|
-
};
|
|
30
|
-
this.addToCache(currentQuery, []);
|
|
31
|
-
return this.http.get(url, { headers }).pipe(map((response) => {
|
|
32
|
-
const searchResults = response;
|
|
33
|
-
const uniqueResults = distinct(searchResults);
|
|
34
|
-
return this.addToCache(currentQuery, uniqueResults);
|
|
35
|
-
}));
|
|
36
|
-
}));
|
|
37
|
-
}
|
|
38
|
-
searchGeolocation(query) {
|
|
39
|
-
this.currentSearch$.next(query);
|
|
40
|
-
return this.currentQuery$;
|
|
41
|
-
}
|
|
42
|
-
getLabels(instance, keys) {
|
|
43
|
-
const searchResults = instance.lastQueriesWithResults
|
|
44
|
-
.get(instance.getLatestQuery())
|
|
45
|
-
.filter((searchResult) => samePosition(searchResult, keys));
|
|
46
|
-
return of(searchResults.map((searchResult) => {
|
|
47
|
-
const key = {
|
|
48
|
-
type: 'Point',
|
|
49
|
-
coordinates: [searchResult.lon, searchResult.lat]
|
|
50
|
-
};
|
|
51
|
-
return {
|
|
52
|
-
key,
|
|
53
|
-
label: searchResult.display_name
|
|
54
|
-
};
|
|
55
|
-
}));
|
|
56
|
-
}
|
|
57
|
-
getData(instance, search) {
|
|
58
|
-
return instance.searchGeolocation(search).pipe(map((searchResults) => searchResults.map((searchResult) => {
|
|
59
|
-
const key = {
|
|
60
|
-
type: 'Point',
|
|
61
|
-
coordinates: [searchResult.lon, searchResult.lat]
|
|
62
|
-
};
|
|
63
|
-
const label = searchResult.display_name;
|
|
64
|
-
return { key, label };
|
|
65
|
-
})));
|
|
66
|
-
}
|
|
67
|
-
// Cache implemementation ---
|
|
68
|
-
getFromCache(query) {
|
|
69
|
-
if (this.lastQueriesWithResults.has(query)) {
|
|
70
|
-
return this.lastQueriesWithResults.get(query);
|
|
71
|
-
}
|
|
72
|
-
return undefined;
|
|
73
|
-
}
|
|
74
|
-
addToCache(query, data) {
|
|
75
|
-
if (this.lastQueriesWithResults.keys.length >= this.cacheSize) {
|
|
76
|
-
const deletedQuery = this.lastQueriesLru[0];
|
|
77
|
-
this.revomeFromCache(deletedQuery);
|
|
78
|
-
}
|
|
79
|
-
this.lastQueriesWithResults.set(query, data);
|
|
80
|
-
this.lastQueriesLru.push(query);
|
|
81
|
-
return data;
|
|
82
|
-
}
|
|
83
|
-
revomeFromCache(query) {
|
|
84
|
-
this.lastQueriesWithResults.delete(query);
|
|
85
|
-
const index = this.lastQueriesLru.findIndex((it) => it === query);
|
|
86
|
-
this.lastQueriesLru.splice(index, 1);
|
|
87
|
-
}
|
|
88
|
-
getLatestQuery() {
|
|
89
|
-
return this.lastQueriesLru.length
|
|
90
|
-
? this.lastQueriesLru[this.lastQueriesLru.length - 1]
|
|
91
|
-
: null;
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
GeolocationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: GeolocationService, deps: [{ token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
95
|
-
GeolocationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: GeolocationService, providedIn: 'root' });
|
|
96
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: GeolocationService, decorators: [{
|
|
97
|
-
type: Injectable,
|
|
98
|
-
args: [{ providedIn: 'root' }]
|
|
99
|
-
}], ctorParameters: function () { return [{ type: i1.HttpClient }]; } });
|
|
100
|
-
const samePosition = (searchResult, keys) => {
|
|
101
|
-
let found = false;
|
|
102
|
-
keys.forEach((item) => {
|
|
103
|
-
if (searchResult.lon === item.coordinates[0] &&
|
|
104
|
-
searchResult.lat === item.coordinates[1]) {
|
|
105
|
-
found = true;
|
|
106
|
-
}
|
|
107
|
-
});
|
|
108
|
-
return found;
|
|
109
|
-
};
|
|
110
|
-
const distinct = (data) => {
|
|
111
|
-
const unique = {};
|
|
112
|
-
return data.filter((r) => {
|
|
113
|
-
if (unique[r.display_name]) {
|
|
114
|
-
return false;
|
|
115
|
-
}
|
|
116
|
-
unique[r.display_name] = 1;
|
|
117
|
-
return true;
|
|
118
|
-
});
|
|
119
|
-
};
|
|
120
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VvbG9jYXRpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2x1eC9zcmMvbGliL2dlb2xvY2F0aW9uL2dlb2xvY2F0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFjLEVBQUUsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0MsT0FBTyxFQUNMLFlBQVksRUFDWixvQkFBb0IsRUFDcEIsR0FBRyxFQUNILFNBQVMsRUFDVixNQUFNLGdCQUFnQixDQUFDOzs7QUFZeEIsTUFBTSxPQUFPLGtCQUFrQjtJQVE3QixZQUFvQixJQUFnQjtRQUFoQixTQUFJLEdBQUosSUFBSSxDQUFZO1FBUDVCLHFCQUFnQixHQUFHLEdBQUcsQ0FBQyxDQUFDLEtBQUs7UUFDN0IsY0FBUyxHQUFHLEVBQUUsQ0FBQztRQUNmLDJCQUFzQixHQUFHLElBQUksR0FBRyxFQUEwQixDQUFDO1FBQzNELG1CQUFjLEdBQWEsRUFBRSxDQUFDO1FBS3BDLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxPQUFPLEVBQVUsQ0FBQztRQUU1QyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsY0FBYzthQUMvQixZQUFZLEVBQUU7YUFDZCxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQyxDQUFDO1FBRWhDLElBQUksQ0FBQyxhQUFhLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FDOUIsWUFBWSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxFQUVuQyxTQUFTLENBQUMsQ0FBQyxZQUFZLEVBQUUsRUFBRTtZQUN6QixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQzdDLElBQUksSUFBSSxL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QUMsSUFBSSxFQUFFLEVBQUU7UUFDcEIsSUFDRSxZQUFZLENBQUMsR0FBRyxLQUFLLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO1lBQ3hDLFlBQVksQ0FBQyxHQUFHLEtBQUssSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFDeEM7WUFDQSxLQUFLLEdBQUcsSUFBSSxDQUFDO1NBQ2Q7SUFDSCxDQUFDLENBQUMsQ0FBQztJQUNILE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQyxDQUFDO0FBRUYsTUFBTSxRQUFRLEdBQUcsQ0FBQyxJQUFvQixFQUFrQixFQUFFO0lBQ3hELE1BQU0sTUFBTSxHQUE4QixFQUFFLENBQUM7SUFDN0MsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7UUFDdkIsSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxFQUFFO1lBQzFCLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7UUFDRCxNQUFNLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMzQixPQUFPLElBQUksQ0FBQztJQUNkLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERhdGFTb3VyY2UgfSBmcm9tICcuLi9kYXRhc291cmNlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBkZWJvdW5jZVRpbWUsXG4gIGRpc3RpbmN0VW50aWxDaGFuZ2VkLFxuICBtYXAsXG4gIHN3aXRjaE1hcFxufSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBHZW9Qb2ludCB9IGZyb20gJy4uL21hcC9nZW9wb2ludCc7XG5cbmludGVyZmFjZSBTZWFyY2hSZXN1bHQge1xuICBwbGFjZV9pZDogbnVtYmVyO1xuICBsYXQ6IG51bWJlcjtcbiAgbG9uOiBudW1iZXI7XG4gIGRpc3BsYXlfbmFtZTogc3RyaW5nO1xuICBpY29uOiBzdHJpbmc7XG59XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgR2VvbG9jYXRpb25TZXJ2aWNlIHtcbiAgcHJpdmF0ZSBkZWJvdW5jZVBlcmlvZE1zID0gMzAwOyAvLyBtc1xuICBwcml2YXRlIGNhY2hlU2l6ZSA9IDIwO1xuICBwcml2YXRlIGxhc3RRdWVyaWVzV2l0aFJlc3VsdHMgPSBuZXcgTWFwPHN0cmluZywgU2VhcmNoUmVzdWx0W10+KCk7XG4gIHByaXZhdGUgbGFzdFF1ZXJpZXNMcnU6IHN0cmluZ1tdID0gW107XG4gIHByaXZhdGUgY3VycmVudFNlYXJjaCQ6IFN1YmplY3Q8c3RyaW5nPjtcbiAgcHJpdmF0ZSBjdXJyZW50UXVlcnkkOiBPYnNlcnZhYmxlPFNlYXJjaFJlc3VsdFtdPjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQpIHtcbiAgICB0aGlzLmN1cnJlbnRTZWFyY2gkID0gbmV3IFN1YmplY3Q8c3RyaW5nPigpO1xuXG4gICAgY29uc3QgdHlwZWQkID0gdGhpcy5jdXJyZW50U2VhcmNoJFxuICAgICAgLmFzT2JzZXJ2YWJsZSgpXG4gICAgICAucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKTtcblxuICAgIHRoaXMuY3VycmVudFF1ZXJ5JCA9IHR5cGVkJC5waXBlKFxuICAgICAgZGVib3VuY2VUaW1lKHRoaXMuZGVib3VuY2VQZXJpb2RNcyksXG5cbiAgICAgIHN3aXRjaE1hcCgoY3VycmVudFF1ZXJ5KSA9PiB7XG4gICAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLmdldEZyb21DYWNoZShjdXJyZW50UXVlcnkpO1xuICAgICAgICBpZiAoZGF0YSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgcmV0dXJuIG9mKGRhdGEpO1xuICAgICAgICB9XG4gICAgICAgIC8vIE5vbWluYXRpbSBzZWFyY2ggZG9jdW1lbnRhdGlvbjpcbiAgICAgICAgLy8gaHR0cHM6Ly9ub21pbmF0aW0ub3JnL3JlbGVhc2UtZG9jcy9kZXZlbG9wL2FwaS9TZWFyY2gvXG4gICAgICAgIGNvbnN0IHVybCA9XG4gICAgICAgICAgJ2h0dHBzOi8vbm9taW5hdGltLm9wZW5zdHJlZXRtYXAub3JnL3NlYXJjaD9mb3JtYXQ9anNvbiZsaW1pdD0yMCZxPScgK1xuICAgICAgICAgIGVuY29kZVVSSUNvbXBvbmVudChjdXJyZW50UXVlcnkpO1xuICAgICAgICBjb25zdCBoZWFkZXJzID0ge1xuICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbidcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5hZGRUb0NhY2hlKGN1cnJlbnRRdWVyeSwgW10pO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KHVybCwgeyBoZWFkZXJzIH0pLnBpcGUoXG4gICAgICAgICAgbWFwKChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc2VhcmNoUmVzdWx0cyA9IHJlc3BvbnNlIGFzIHVua25vd24gYXMgU2VhcmNoUmVzdWx0W107XG4gICAgICAgICAgICBjb25zdCB1bmlxdWVSZXN1bHRzID0gZGlzdGluY3Qoc2VhcmNoUmVzdWx0cyk7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5hZGRUb0NhY2hlKGN1cnJlbnRRdWVyeSwgdW5pcXVlUmVzdWx0cyk7XG4gICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHNlYXJjaEdlb2xvY2F0aW9uKHF1ZXJ5OiBzdHJpbmcpOiBPYnNlcnZhYmxlPFNlYXJjaFJlc3VsdFtdPiB7XG4gICAgdGhpcy5jdXJyZW50U2VhcmNoJC5uZXh0KHF1ZXJ5KTtcbiAgICByZXR1cm4gdGhpcy5jdXJyZW50UXVlcnkkO1xuICB9XG5cbiAgZ2V0TGFiZWxzKFxuICAgIGluc3RhbmNlOiBHZW9sb2NhdGlvblNlcnZpY2UsXG4gICAga2V5czogR2VvUG9pbnRbXVxuICApOiBPYnNlcnZhYmxlPERhdGFTb3VyY2U8R2VvUG9pbnQsIHN0cmluZz4+IHtcbiAgICBjb25zdCBzZWFyY2hSZXN1bHRzID0gaW5zdGFuY2UubGFzdFF1ZXJpZXNXaXRoUmVzdWx0c1xuICAgICAgLmdldChpbnN0YW5jZS5nZXRMYXRlc3RRdWVyeSgpKVxuICAgICAgLmZpbHRlcigoc2VhcmNoUmVzdWx0KSA9PiBzYW1lUG9zaXRpb24oc2VhcmNoUmVzdWx0LCBrZXlzKSk7XG4gICAgcmV0dXJuIG9mKFxuICAgICAgc2VhcmNoUmVzdWx0cy5tYXAoKHNlYXJjaFJlc3VsdCkgPT4ge1xuICAgICAgICBjb25zdCBrZXk6IEdlb1BvaW50ID0ge1xuICAgICAgICAgIHR5cGU6ICdQb2ludCcsXG4gICAgICAgICAgY29vcmRpbmF0ZXM6IFtzZWFyY2hSZXN1bHQubG9uLCBzZWFyY2hSZXN1bHQubGF0XVxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGtleSxcbiAgICAgICAgICBsYWJlbDogc2VhcmNoUmVzdWx0LmRpc3BsYXlfbmFtZVxuICAgICAgICB9O1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgZ2V0RGF0YShcbiAgICBpbnN0YW5jZTogR2VvbG9jYXRpb25TZXJ2aWNlLFxuICAgIHNlYXJjaDogc3RyaW5nXG4gICk6IE9ic2VydmFibGU8RGF0YVNvdXJjZTxHZW9Qb2ludCwgc3RyaW5nPj4ge1xuICAgIHJldHVybiBpbnN0YW5jZS5zZWFyY2hHZW9sb2NhdGlvbihzZWFyY2gpLnBpcGUoXG4gICAgICBtYXAoKHNlYXJjaFJlc3VsdHMpID0+XG4gICAgICAgIHNlYXJjaFJlc3VsdHMubWFwKChzZWFyY2hSZXN1bHQpID0+IHtcbiAgICAgICAgICBjb25zdCBrZXk6IEdlb1BvaW50ID0ge1xuICAgICAgICAgICAgdHlwZTogJ1BvaW50JyxcbiAgICAgICAgICAgIGNvb3JkaW5hdGVzOiBbc2VhcmNoUmVzdWx0Lmxvbiwgc2VhcmNoUmVzdWx0LmxhdF1cbiAgICAgICAgICB9O1xuICAgICAgICAgIGNvbnN0IGxhYmVsID0gc2VhcmNoUmVzdWx0LmRpc3BsYXlfbmFtZTtcbiAgICAgICAgICByZXR1cm4geyBrZXksIGxhYmVsIH07XG4gICAgICAgIH0pXG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIC8vIENhY2hlIGltcGxlbWVtZW50YXRpb24gLS0tXG4gIHByaXZhdGUgZ2V0RnJvbUNhY2hlKHF1ZXJ5OiBzdHJpbmcpOiBTZWFyY2hSZXN1bHRbXSB7XG4gICAgaWYgKHRoaXMubGFzdFF1ZXJpZXNXaXRoUmVzdWx0cy5oYXMocXVlcnkpKSB7XG4gICAgICByZXR1cm4gdGhpcy5sYXN0UXVlcmllc1dpdGhSZXN1bHRzLmdldChxdWVyeSk7XG4gICAgfVxuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbiAgcHJpdmF0ZSBhZGRUb0NhY2hlKHF1ZXJ5OiBzdHJpbmcsIGRhdGE6IFNlYXJjaFJlc3VsdFtdKTogU2VhcmNoUmVzdWx0W10ge1xuICAgIGlmICh0aGlzLmxhc3RRdWVyaWVzV2l0aFJlc3VsdHMua2V5cy5sZW5ndGggPj0gdGhpcy5jYWNoZVNpemUpIHtcbiAgICAgIGNvbnN0IGRlbGV0ZWRRdWVyeSA9IHRoaXMubGFzdFF1ZXJpZXNMcnVbMF07XG4gICAgICB0aGlzLnJldm9tZUZyb21DYWNoZShkZWxldGVkUXVlcnkpO1xuICAgIH1cbiAgICB0aGlzLmxhc3RRdWVyaWVzV2l0aFJlc3VsdHMuc2V0KHF1ZXJ5LCBkYXRhKTtcbiAgICB0aGlzLmxhc3RRdWVyaWVzTHJ1LnB1c2gocXVlcnkpO1xuICAgIHJldHVybiBkYXRhO1xuICB9XG4gIHByaXZhdGUgcmV2b21lRnJvbUNhY2hlKHF1ZXJ5OiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmxhc3RRdWVyaWVzV2l0aFJlc3VsdHMuZGVsZXRlKHF1ZXJ5KTtcbiAgICBjb25zdCBpbmRleCA9IHRoaXMubGFzdFF1ZXJpZXNMcnUuZmluZEluZGV4KChpdCkgPT4gaXQgPT09IHF1ZXJ5KTtcbiAgICB0aGlzLmxhc3RRdWVyaWVzTHJ1LnNwbGljZShpbmRleCwgMSk7XG4gIH1cbiAgcHJpdmF0ZSBnZXRMYXRlc3RRdWVyeSgpOiBzdHJpbmcgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5sYXN0UXVlcmllc0xydS5sZW5ndGhcbiAgICAgID8gdGhpcy5sYXN0UXVlcmllc0xydVt0aGlzLmxhc3RRdWVyaWVzTHJ1Lmxlbmd0aCAtIDFdXG4gICAgICA6IG51bGw7XG4gIH1cbiAgLy8gRW5kIGNhY2hlIGltcGxlbWVtZW50YXRpb24gLS0tXG59XG5cbmNvbnN0IHNhbWVQb3NpdGlvbiA9IChcbiAgc2VhcmNoUmVzdWx0OiBTZWFyY2hSZXN1bHQsXG4gIGtleXM6IEdlb1BvaW50W11cbik6IGJvb2xlYW4gPT4ge1xuICBsZXQgZm91bmQgPSBmYWxzZTtcbiAga2V5cy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgaWYgKFxuICAgICAgc2VhcmNoUmVzdWx0LmxvbiA9PT0gaXRlbS5jb29yZGluYXRlc1swXSAmJlxuICAgICAgc2VhcmNoUmVzdWx0LmxhdCA9PT0gaXRlbS5jb29yZGluYXRlc1sxXVxuICAgICkge1xuICAgICAgZm91bmQgPSB0cnVlO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiBmb3VuZDtcbn07XG5cbmNvbnN0IGRpc3RpbmN0ID0gKGRhdGE6IFNlYXJjaFJlc3VsdFtdKTogU2VhcmNoUmVzdWx0W10gPT4ge1xuICBjb25zdCB1bmlxdWU6IHsgW2tleTogc3RyaW5nXTogbnVtYmVyIH0gPSB7fTtcbiAgcmV0dXJuIGRhdGEuZmlsdGVyKChyKSA9PiB7XG4gICAgaWYgKHVuaXF1ZVtyLmRpc3BsYXlfbmFtZV0pIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgdW5pcXVlW3IuZGlzcGxheV9uYW1lXSA9IDE7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0pO1xufTtcbiJdfQ==
|
|
@@ -1,117 +0,0 @@
|
|
|
1
|
-
// undefined and null functions
|
|
2
|
-
export const exists = (value) => value !== null && value !== undefined;
|
|
3
|
-
export const hasValue = (value) => exists(value) && (typeof value === 'string' ? !isEmptyString(value) : true);
|
|
4
|
-
// string functions
|
|
5
|
-
export const isEmptyString = (value) => value.trim() === '';
|
|
6
|
-
export const isValidEmail = (value) => {
|
|
7
|
-
const re = /^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/;
|
|
8
|
-
return re.test(String(value).toLowerCase().trim());
|
|
9
|
-
};
|
|
10
|
-
export const isValidUrl = (value) => {
|
|
11
|
-
const pattern =
|
|
12
|
-
// eslint-disable-next-line max-len
|
|
13
|
-
/^((([a-z]+?:\/\/)?(((([a-z0-9]([a-z0-9-]*[a-z0-9])*)\.)+[a-z]{2,})|((([0-9]{1,3}\.){3}[0-9]{1,3}))|(localhost))(\:[0-9]+)?))?((\/[a-zA-Z0-9\-_+=~.,:;%]+)*\/?)((\?|;)[a-zA-Z0-9\-_+~.,:;%]+=[a-zA-Z0-9\-_+~.,:;%]+(((&|;)[a-zA-Z0-9\-_+~.,:;%]+=[a-zA-Z0-9\-_+~.,:;%]+)*))?(#[a-zA-Z0-9\-_+~.,:;%]+(=[a-zA-Z0-9\*\-_+~.,:;%]+)?)?$/;
|
|
14
|
-
return pattern.test(value);
|
|
15
|
-
};
|
|
16
|
-
export const isValidRelativeUrl = (value) => {
|
|
17
|
-
const pattern =
|
|
18
|
-
// eslint-disable-next-line max-len
|
|
19
|
-
/^((([a-z]+?:\/\/)?(((([a-z0-9]([a-z0-9-]*[a-z0-9])*)\.)+[a-z]{2,})|((([0-9]{1,3}\.){3}[0-9]{1,3}))|(localhost))(\:[0-9]+)?)|([a-zA-Z0-9\-_+=~.,:;%]+))?((\/[a-zA-Z0-9\-_+=~.,:;%]+)*\/?)((\?|;)[a-zA-Z0-9\-_+~.,:;%]+=[a-zA-Z0-9\-_+~.,:;%]+(((&|;)[a-zA-Z0-9\-_+~.,:;%]+=[a-zA-Z0-9\-_+~.,:;%]+)*))?(#[a-zA-Z0-9\-_+~.,:;%]+(=[a-zA-Z0-9\*\-_+~.,:;%]+)?)?$/;
|
|
20
|
-
return pattern.test(value);
|
|
21
|
-
};
|
|
22
|
-
export const isValidColor = (value) => {
|
|
23
|
-
value = String(value).toLowerCase();
|
|
24
|
-
// valid values for CSS color property, yet not valid colors by themselves
|
|
25
|
-
if (value === 'currentcolor' ||
|
|
26
|
-
value === 'inherit' ||
|
|
27
|
-
value === 'initial' ||
|
|
28
|
-
value === 'revert' ||
|
|
29
|
-
value === 'unset') {
|
|
30
|
-
return false;
|
|
31
|
-
}
|
|
32
|
-
return CSS.supports('color', value);
|
|
33
|
-
};
|
|
34
|
-
// date functions
|
|
35
|
-
export const isValidDate = (date) => exists(date) ? !isNaN(date.getTime()) : false;
|
|
36
|
-
export const normalizeDate = (value) => {
|
|
37
|
-
if (typeof value === 'string' && value.length > 10) {
|
|
38
|
-
return value.substr(0, 10);
|
|
39
|
-
}
|
|
40
|
-
return value ? value.toString() : null;
|
|
41
|
-
};
|
|
42
|
-
export const addTimezoneOffset = (date) => {
|
|
43
|
-
if (!isValidDate(date)) {
|
|
44
|
-
return date;
|
|
45
|
-
}
|
|
46
|
-
else {
|
|
47
|
-
return new Date(date.getTime() - date.getTimezoneOffset() * 60000);
|
|
48
|
-
}
|
|
49
|
-
};
|
|
50
|
-
// number functions
|
|
51
|
-
export const isValidNumber = (value) => (hasValue(value) ? !Number.isNaN(Number(value)) : false);
|
|
52
|
-
export const numberOfDecimalDigits = (x) => {
|
|
53
|
-
if (isValidNumber(x)) {
|
|
54
|
-
const xString = String(Number(x));
|
|
55
|
-
if (xString === 'Infinity') {
|
|
56
|
-
return 0;
|
|
57
|
-
}
|
|
58
|
-
const indexOfE = xString.indexOf('e');
|
|
59
|
-
if (indexOfE >= 0) {
|
|
60
|
-
return 0;
|
|
61
|
-
}
|
|
62
|
-
const indexOfDecimalPoint = xString.indexOf('.');
|
|
63
|
-
if (indexOfDecimalPoint < 0) {
|
|
64
|
-
return 0;
|
|
65
|
-
}
|
|
66
|
-
else {
|
|
67
|
-
return xString.length - indexOfDecimalPoint - 1;
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
return undefined;
|
|
71
|
-
};
|
|
72
|
-
export const numberOfWholeDigits = (x) => {
|
|
73
|
-
if (isValidNumber(x)) {
|
|
74
|
-
let xString = String(Number(x));
|
|
75
|
-
if (xString.indexOf('-') === 0) {
|
|
76
|
-
xString = xString.slice(1, xString.length);
|
|
77
|
-
}
|
|
78
|
-
if (xString === 'Infinity') {
|
|
79
|
-
return Infinity;
|
|
80
|
-
}
|
|
81
|
-
if (xString.indexOf('0') === 0) {
|
|
82
|
-
xString = xString.slice(1, xString.length);
|
|
83
|
-
}
|
|
84
|
-
const indexOfE = xString.indexOf('e');
|
|
85
|
-
if (indexOfE >= 0) {
|
|
86
|
-
return Number(xString.slice(indexOfE + 1, xString.length)) + 1;
|
|
87
|
-
}
|
|
88
|
-
const indexOfDecimalPoint = xString.indexOf('.');
|
|
89
|
-
if (indexOfDecimalPoint < 0) {
|
|
90
|
-
return xString.length;
|
|
91
|
-
}
|
|
92
|
-
else {
|
|
93
|
-
return indexOfDecimalPoint;
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
return undefined;
|
|
97
|
-
};
|
|
98
|
-
export const roundToMultipleOf = (x, modulo) => {
|
|
99
|
-
const moduloString = String(modulo);
|
|
100
|
-
// approximates the result
|
|
101
|
-
// prone to inexactitude because of floating point arithmetic
|
|
102
|
-
const approximation = Math.round(x / modulo) * modulo;
|
|
103
|
-
const approximationString = String(approximation);
|
|
104
|
-
// remove useless decimals
|
|
105
|
-
const uselessDecimalsInApproximation = numberOfDecimalDigits(approximationString) -
|
|
106
|
-
numberOfDecimalDigits(moduloString);
|
|
107
|
-
const resultString = approximationString.slice(0, approximationString.length - uselessDecimalsInApproximation);
|
|
108
|
-
return Number(resultString);
|
|
109
|
-
};
|
|
110
|
-
// other functions
|
|
111
|
-
export const isInitialAndEmpty = (previousValue, newValue) => {
|
|
112
|
-
const isPrevArray = Array.isArray(previousValue);
|
|
113
|
-
const isNewArray = Array.isArray(newValue);
|
|
114
|
-
return !((isPrevArray ? previousValue.length !== 0 : Boolean(previousValue)) ||
|
|
115
|
-
(isNewArray ? newValue.length !== 0 : Boolean(newValue)));
|
|
116
|
-
};
|
|
117
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVyRm5zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbHV4L3NyYy9saWIvaGVscGVyRm5zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtCQUErQjtBQUUvQixNQUFNLENBQUMsTUFBTSxNQUFNLEdBQUcsQ0FBQyxLQUFVLEVBQVcsRUFBRSxDQUM1QyxLQUFLLEtBQUssSUFBSSxJQUFJLEtBQUssS0FBSyxTQUFTLENBQUM7QUFFeEMsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFHLENBQUMsS0FBVSxFQUFXLEVBQUUsQ0FDOUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxLQUFLLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7QUFFOUUsbUJBQW1CO0FBRW5CLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxDQUFDLEtBQWEsRUFBVyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQztBQUU3RSxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsQ0FBQyxLQUFhLEVBQVcsRUFBRTtJQUNyRCxNQUFNLEVBQUUsR0FDTix5SUFBeUksQ0FBQztJQUM1SSxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7QUFDckQsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLENBQUMsS0FBYSxFQUFXLEVBQUU7SUFDbkQsTUFBTSxPQUFPO0lBQ1gsbUNBQW1DO0lBQ25DLG9VQUFvVSxDQUFDO0lBQ3ZVLE9BQU8sT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUM3QixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLEtBQWEsRUFBVyxFQUFFO0lBQzNELE1BQU0sT0FBTztJQUNYLG1DQUFtQztJQUNuQyw4VkFBOFYsQ0FBQztJQUNqVyxPQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDN0IsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLENBQUMsS0FBYSxFQUFXLEVBQUU7SUFDckQsS0FBSyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNwQywwRUFBMEU7SUFDMUUsSUFDRSxLQUFLLEtBQUssY0FBYztRQUN4QixLQUFLLEtBQUssU0FBUztRQUNuQixLQUFLLEtBQUssU0FBUztRQUNuQixLQUFLLEtBQUssUUFBUTtRQUNsQixLQUFLLEtBQUssT0FBTyxFQUNqQjtRQUNBLE9BQU8sS0FBSyxDQUFDO0tBQ2Q7SUFDRCxPQUFPLEdBQUcsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ3RDLENBQUMsQ0FBQztBQUVGLGlCQUFpQjtBQUVqQixNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsQ0FBQyxJQUFVLEVBQVcsRUFBRSxDQUNqRCxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7QUFFaEQsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLENBQUMsS0FBVSxFQUFVLEVBQUU7SUFDbEQsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksS0FBSyxDQUFDLE1BQU0sR0FBRyxFQUFFLEVBQUU7UUFDbEQsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztLQUM1QjtJQUNELE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztBQUN6QyxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLElBQVUsRUFBUSxFQUFFO0lBQ3BELElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUU7UUFDdEIsT0FBTyxJQUFJLENBQUM7S0FDYjtTQUFNO1FBQ0wsT0FBTyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixFQUFFLEdBQUcsS0FBSyxDQUFDLENBQUM7S0FDcEU7QUFDSCxDQUFDLENBQUM7QUFFRixtQkFBbUI7QUFFbkIsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLENBQzNCLEtBQXlDLEVBQ2hDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUV2RSxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxDQUNuQyxDQUFrQixFQUNFLEVBQUU7SUFDdEIsSUFBSSxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQUU7UUFDcEIsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2xDLElBQUksT0FBTyxLQUFLLFVBQVUsRUFBRTtZQUMxQixPQUFPLENBQUMsQ0FBQztTQUNWO1FBQ0QsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN0QyxJQUFJLFFBQVEsSUFBSSxDQUFDLEVBQUU7WUFDakIsT0FBTyxDQUFDLENBQUM7U0FDVjtRQUNELE1BQU0sbUJBQW1CLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNqRCxJQUFJLG1CQUFtQixHQUFHLENBQUMsRUFBRTtZQUMzQixPQUFPLENBQUMsQ0FBQztTQUNWO2FBQU07WUFDTCxPQUFPLE9BQU8sQ0FBQyxNQUFNLEdBQUcsbUJBQW1CLEdBQUcsQ0FBQyxDQUFDO1NBQ2pEO0tBQ0Y7SUFDRCxPQUFPLFNBQVMsQ0FBQztBQUNuQixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxDQUFDLENBQWtCLEVBQXNCLEVBQUU7SUFDNUUsSUFBSSxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQUU7UUFDcEIsSUFBSSxPQUFPLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2hDLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDOUIsT0FBTyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUM1QztRQUNELElBQUksT0FBTyxLQUFLLFVBQVUsRUFBRTtZQUMxQixPQUFPLFFBQVEsQ0FBQztTQUNqQjtRQUNELElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDOUIsT0FBTyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUM1QztRQUNELE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDdEMsSUFBSSxRQUFRLElBQUksQ0FBQyxFQUFFO1lBQ2pCLE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsUUFBUSxHQUFHLENBQUMsRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDaEU7UUFDRCxNQUFNLG1CQUFtQixHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDakQsSUFBSSxtQkFBbUIsR0FBRyxDQUFDLEVBQUU7WUFDM0IsT0FBTyxPQUFPLENBQUMsTUFBTSxDQUFDO1NBQ3ZCO2FBQU07WUFDTCxPQUFPLG1CQUFtQixDQUFDO1NBQzVCO0tBQ0Y7SUFDRCxPQUFPLFNBQVMsQ0FBQztBQUNuQixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLENBQVMsRUFBRSxNQUFjLEVBQVUsRUFBRTtJQUNyRSxNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDcEMsMEJBQTBCO0lBQzFCLDZEQUE2RDtJQUM3RCxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUM7SUFDdEQsTUFBTSxtQkFBbUIsR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDbEQsMEJBQTBCO0lBQzFCLE1BQU0sOEJBQThCLEdBQ2xDLHFCQUFxQixDQUFDLG1CQUFtQixDQUFDO1FBQzFDLHFCQUFxQixDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ3RDLE1BQU0sWUFBWSxHQUFHLG1CQUFtQixDQUFDLEtBQUssQ0FDNUMsQ0FBQyxFQUNELG1CQUFtQixDQUFDLE1BQU0sR0FBRyw4QkFBOEIsQ0FDNUQsQ0FBQztJQUNGLE9BQU8sTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO0FBQzlCLENBQUMsQ0FBQztBQUVGLGtCQUFrQjtBQUVsQixNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxDQUMvQixhQUFrQixFQUNsQixRQUFhLEVBQ0osRUFBRTtJQUNYLE1BQU0sV0FBVyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDakQsTUFBTSxVQUFVLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMzQyxPQUFPLENBQUMsQ0FDTixDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNuRSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUN6RCxDQUFDO0FBQ0osQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gdW5kZWZpbmVkIGFuZCBudWxsIGZ1bmN0aW9uc1xyXG5cclxuZXhwb3J0IGNvbnN0IGV4aXN0cyA9ICh2YWx1ZTogYW55KTogYm9vbGVhbiA9PlxyXG4gIHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSB1bmRlZmluZWQ7XHJcblxyXG5leHBvcnQgY29uc3QgaGFzVmFsdWUgPSAodmFsdWU6IGFueSk6IGJvb2xlYW4gPT5cclxuICBleGlzdHModmFsdWUpICYmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnID8gIWlzRW1wdHlTdHJpbmcodmFsdWUpIDogdHJ1ZSk7XHJcblxyXG4vLyBzdHJpbmcgZnVuY3Rpb25zXHJcblxyXG5leHBvcnQgY29uc3QgaXNFbXB0eVN0cmluZyA9ICh2YWx1ZTogc3RyaW5nKTogYm9vbGVhbiA9PiB2YWx1ZS50cmltKCkgPT09ICcnO1xyXG5cclxuZXhwb3J0IGNvbnN0IGlzVmFsaWRFbWFpbCA9ICh2YWx1ZTogc3RyaW5nKTogYm9vbGVhbiA9PiB7XHJcbiAgY29uc3QgcmUgPVxyXG4gICAgL15bYS16MC05ISMkJSYnKisvPT9eX2B7fH1+LV0rKD86XFwuW2EtejAtOSEjJCUmJyorLz0/Xl9ge3x9fi1dKykqQCg/OlthLXowLTldKD86W2EtejAtOS1dKlthLXowLTldKT9cXC4pK1thLXowLTldKD86W2EtejAtOS1dKlthLXowLTldKT8kLztcclxuICByZXR1cm4gcmUudGVzdChTdHJpbmcodmFsdWUpLnRvTG93ZXJDYXNlKCkudHJpbSgpKTtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBpc1ZhbGlkVXJsID0gKHZhbHVlOiBzdHJpbmcpOiBib29sZWFuID0+IHtcclxuICBjb25zdCBwYXR0ZXJuID1cclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBtYXgtbGVuXHJcbiAgICAvXigoKFthLXpdKz86XFwvXFwvKT8oKCgoW2EtejAtOV0oW2EtejAtOS1dKlthLXowLTldKSopXFwuKStbYS16XXsyLH0pfCgoKFswLTldezEsM31cXC4pezN9WzAtOV17MSwzfSkpfChsb2NhbGhvc3QpKShcXDpbMC05XSspPykpPygoXFwvW2EtekEtWjAtOVxcLV8rPX4uLDo7JV0rKSpcXC8/KSgoXFw/fDspW2EtekEtWjAtOVxcLV8rfi4sOjslXSs9W2EtekEtWjAtOVxcLV8rfi4sOjslXSsoKCgmfDspW2EtekEtWjAtOVxcLV8rfi4sOjslXSs9W2EtekEtWjAtOVxcLV8rfi4sOjslXSspKikpPygjW2EtekEtWjAtOVxcLV8rfi4sOjslXSsoPVthLXpBLVowLTlcXCpcXC1fK34uLDo7JV0rKT8pPyQvO1xyXG4gIHJldHVybiBwYXR0ZXJuLnRlc3QodmFsdWUpO1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IGlzVmFsaWRSZWxhdGl2ZVVybCA9ICh2YWx1ZTogc3RyaW5nKTogYm9vbGVhbiA9PiB7XHJcbiAgY29uc3QgcGF0dGVybiA9XHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbWF4LWxlblxyXG4gICAgL14oKChbYS16XSs/OlxcL1xcLyk/KCgoKFthLXowLTldKFthLXowLTktXSpbYS16MC05XSkqKVxcLikrW2Etel17Mix9KXwoKChbMC05XXsxLDN9XFwuKXszfVswLTldezEsM30pKXwobG9jYWxob3N0KSkoXFw6WzAtOV0rKT8pfChbYS16QS1aMC05XFwtXys9fi4sOjslXSspKT8oKFxcL1thLXpBLVowLTlcXC1fKz1+Liw6OyVdKykqXFwvPykoKFxcP3w7KVthLXpBLVowLTlcXC1fK34uLDo7JV0rPVthLXpBLVowLTlcXC1fK34uLDo7JV0rKCgoJnw7KVthLXpBLVowLTlcXC1fK34uLDo7JV0rPVthLXpBLVowLTlcXC1fK34uLDo7JV0rKSopKT8oI1thLXpBLVowLTlcXC1fK34uLDo7JV0rKD1bYS16QS1aMC05XFwqXFwtXyt+Liw6OyVdKyk/KT8kLztcclxuICByZXR1cm4gcGF0dGVybi50ZXN0KHZhbHVlKTtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBpc1ZhbGlkQ29sb3IgPSAodmFsdWU6IHN0cmluZyk6IGJvb2xlYW4gPT4ge1xyXG4gIHZhbHVlID0gU3RyaW5nKHZhbHVlKS50b0xvd2VyQ2FzZSgpO1xyXG4gIC8vIHZhbGlkIHZhbHVlcyBmb3IgQ1NTIGNvbG9yIHByb3BlcnR5LCB5ZXQgbm90IHZhbGlkIGNvbG9ycyBieSB0aGVtc2VsdmVzXHJcbiAgaWYgKFxyXG4gICAgdmFsdWUgPT09ICdjdXJyZW50Y29sb3InIHx8XHJcbiAgICB2YWx1ZSA9PT0gJ2luaGVyaXQnIHx8XHJcbiAgICB2YWx1ZSA9PT0gJ2luaXRpYWwnIHx8XHJcbiAgICB2YWx1ZSA9PT0gJ3JldmVydCcgfHxcclxuICAgIHZhbHVlID09PSAndW5zZXQnXHJcbiAgKSB7XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG4gIHJldHVybiBDU1Muc3VwcG9ydHMoJ2NvbG9yJywgdmFsdWUpO1xyXG59O1xyXG5cclxuLy8gZGF0ZSBmdW5jdGlvbnNcclxuXHJcbmV4cG9ydCBjb25zdCBpc1ZhbGlkRGF0ZSA9IChkYXRlOiBEYXRlKTogYm9vbGVhbiA9PlxyXG4gIGV4aXN0cyhkYXRlKSA/ICFpc05hTihkYXRlLmdldFRpbWUoKSkgOiBmYWxzZTtcclxuXHJcbmV4cG9ydCBjb25zdCBub3JtYWxpemVEYXRlID0gKHZhbHVlOiBhbnkpOiBzdHJpbmcgPT4ge1xyXG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmIHZhbHVlLmxlbmd0aCA+IDEwKSB7XHJcbiAgICByZXR1cm4gdmFsdWUuc3Vic3RyKDAsIDEwKTtcclxuICB9XHJcbiAgcmV0dXJuIHZhbHVlID8gdmFsdWUudG9TdHJpbmcoKSA6IG51bGw7XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgYWRkVGltZXpvbmVPZmZzZXQgPSAoZGF0ZTogRGF0ZSk6IERhdGUgPT4ge1xyXG4gIGlmICghaXNWYWxpZERhdGUoZGF0ZSkpIHtcclxuICAgIHJldHVybiBkYXRlO1xyXG4gIH0gZWxzZSB7XHJcbiAgICByZXR1cm4gbmV3IERhdGUoZGF0ZS5nZXRUaW1lKCkgLSBkYXRlLmdldFRpbWV6b25lT2Zmc2V0KCkgKiA2MDAwMCk7XHJcbiAgfVxyXG59O1xyXG5cclxuLy8gbnVtYmVyIGZ1bmN0aW9uc1xyXG5cclxuZXhwb3J0IGNvbnN0IGlzVmFsaWROdW1iZXIgPSAoXHJcbiAgdmFsdWU6IHN0cmluZyB8IG51bWJlciB8IHVuZGVmaW5lZCB8IG51bGxcclxuKTogYm9vbGVhbiA9PiAoaGFzVmFsdWUodmFsdWUpID8gIU51bWJlci5pc05hTihOdW1iZXIodmFsdWUpKSA6IGZhbHNlKTtcclxuXHJcbmV4cG9ydCBjb25zdCBudW1iZXJPZkRlY2ltYWxEaWdpdHMgPSAoXHJcbiAgeDogbnVtYmVyIHwgc3RyaW5nXHJcbik6IG51bWJlciB8IHVuZGVmaW5lZCA9PiB7XHJcbiAgaWYgKGlzVmFsaWROdW1iZXIoeCkpIHtcclxuICAgIGNvbnN0IHhTdHJpbmcgPSBTdHJpbmcoTnVtYmVyKHgpKTtcclxuICAgIGlmICh4U3RyaW5nID09PSAnSW5maW5pdHknKSB7XHJcbiAgICAgIHJldHVybiAwO1xyXG4gICAgfVxyXG4gICAgY29uc3QgaW5kZXhPZkUgPSB4U3RyaW5nLmluZGV4T2YoJ2UnKTtcclxuICAgIGlmIChpbmRleE9mRSA+PSAwKSB7XHJcbiAgICAgIHJldHVybiAwO1xyXG4gICAgfVxyXG4gICAgY29uc3QgaW5kZXhPZkRlY2ltYWxQb2ludCA9IHhTdHJpbmcuaW5kZXhPZignLicpO1xyXG4gICAgaWYgKGluZGV4T2ZEZWNpbWFsUG9pbnQgPCAwKSB7XHJcbiAgICAgIHJldHVybiAwO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIHhTdHJpbmcubGVuZ3RoIC0gaW5kZXhPZkRlY2ltYWxQb2ludCAtIDE7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHJldHVybiB1bmRlZmluZWQ7XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgbnVtYmVyT2ZXaG9sZURpZ2l0cyA9ICh4OiBudW1iZXIgfCBzdHJpbmcpOiBudW1iZXIgfCB1bmRlZmluZWQgPT4ge1xyXG4gIGlmIChpc1ZhbGlkTnVtYmVyKHgpKSB7XHJcbiAgICBsZXQgeFN0cmluZyA9IFN0cmluZyhOdW1iZXIoeCkpO1xyXG4gICAgaWYgKHhTdHJpbmcuaW5kZXhPZignLScpID09PSAwKSB7XHJcbiAgICAgIHhTdHJpbmcgPSB4U3RyaW5nLnNsaWNlKDEsIHhTdHJpbmcubGVuZ3RoKTtcclxuICAgIH1cclxuICAgIGlmICh4U3RyaW5nID09PSAnSW5maW5pdHknKSB7XHJcbiAgICAgIHJldHVybiBJbmZpbml0eTtcclxuICAgIH1cclxuICAgIGlmICh4U3RyaW5nLmluZGV4T2YoJzAnKSA9PT0gMCkge1xyXG4gICAgICB4U3RyaW5nID0geFN0cmluZy5zbGljZSgxLCB4U3RyaW5nLmxlbmd0aCk7XHJcbiAgICB9XHJcbiAgICBjb25zdCBpbmRleE9mRSA9IHhTdHJpbmcuaW5kZXhPZignZScpO1xyXG4gICAgaWYgKGluZGV4T2ZFID49IDApIHtcclxuICAgICAgcmV0dXJuIE51bWJlcih4U3RyaW5nLnNsaWNlKGluZGV4T2ZFICsgMSwgeFN0cmluZy5sZW5ndGgpKSArIDE7XHJcbiAgICB9XHJcbiAgICBjb25zdCBpbmRleE9mRGVjaW1hbFBvaW50ID0geFN0cmluZy5pbmRleE9mKCcuJyk7XHJcbiAgICBpZiAoaW5kZXhPZkRlY2ltYWxQb2ludCA8IDApIHtcclxuICAgICAgcmV0dXJuIHhTdHJpbmcubGVuZ3RoO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIGluZGV4T2ZEZWNpbWFsUG9pbnQ7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHJldHVybiB1bmRlZmluZWQ7XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3Qgcm91bmRUb011bHRpcGxlT2YgPSAoeDogbnVtYmVyLCBtb2R1bG86IG51bWJlcik6IG51bWJlciA9PiB7XHJcbiAgY29uc3QgbW9kdWxvU3RyaW5nID0gU3RyaW5nKG1vZHVsbyk7XHJcbiAgLy8gYXBwcm94aW1hdGVzIHRoZSByZXN1bHRcclxuICAvLyBwcm9uZSB0byBpbmV4YWN0aXR1ZGUgYmVjYXVzZSBvZiBmbG9hdGluZyBwb2ludCBhcml0aG1ldGljXHJcbiAgY29uc3QgYXBwcm94aW1hdGlvbiA9IE1hdGgucm91bmQoeCAvIG1vZHVsbykgKiBtb2R1bG87XHJcbiAgY29uc3QgYXBwcm94aW1hdGlvblN0cmluZyA9IFN0cmluZyhhcHByb3hpbWF0aW9uKTtcclxuICAvLyByZW1vdmUgdXNlbGVzcyBkZWNpbWFsc1xyXG4gIGNvbnN0IHVzZWxlc3NEZWNpbWFsc0luQXBwcm94aW1hdGlvbiA9XHJcbiAgICBudW1iZXJPZkRlY2ltYWxEaWdpdHMoYXBwcm94aW1hdGlvblN0cmluZykgLVxyXG4gICAgbnVtYmVyT2ZEZWNpbWFsRGlnaXRzKG1vZHVsb1N0cmluZyk7XHJcbiAgY29uc3QgcmVzdWx0U3RyaW5nID0gYXBwcm94aW1hdGlvblN0cmluZy5zbGljZShcclxuICAgIDAsXHJcbiAgICBhcHByb3hpbWF0aW9uU3RyaW5nLmxlbmd0aCAtIHVzZWxlc3NEZWNpbWFsc0luQXBwcm94aW1hdGlvblxyXG4gICk7XHJcbiAgcmV0dXJuIE51bWJlcihyZXN1bHRTdHJpbmcpO1xyXG59O1xyXG5cclxuLy8gb3RoZXIgZnVuY3Rpb25zXHJcblxyXG5leHBvcnQgY29uc3QgaXNJbml0aWFsQW5kRW1wdHkgPSAoXHJcbiAgcHJldmlvdXNWYWx1ZTogYW55LFxyXG4gIG5ld1ZhbHVlOiBhbnlcclxuKTogYm9vbGVhbiA9PiB7XHJcbiAgY29uc3QgaXNQcmV2QXJyYXkgPSBBcnJheS5pc0FycmF5KHByZXZpb3VzVmFsdWUpO1xyXG4gIGNvbnN0IGlzTmV3QXJyYXkgPSBBcnJheS5pc0FycmF5KG5ld1ZhbHVlKTtcclxuICByZXR1cm4gIShcclxuICAgIChpc1ByZXZBcnJheSA/IHByZXZpb3VzVmFsdWUubGVuZ3RoICE9PSAwIDogQm9vbGVhbihwcmV2aW91c1ZhbHVlKSkgfHxcclxuICAgIChpc05ld0FycmF5ID8gbmV3VmFsdWUubGVuZ3RoICE9PSAwIDogQm9vbGVhbihuZXdWYWx1ZSkpXHJcbiAgKTtcclxufTtcclxuIl19
|