@metadev/lux 0.25.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 +722 -610
- 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/breadcrumb/breadcrumb.component.d.ts +1 -1
- package/lib/checkbox/checkbox.component.d.ts +1 -1
- package/lib/datasource.d.ts +2 -2
- 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/lux.module.d.ts +5 -6
- 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/placement.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 +8 -14
- package/esm2020/lib/autocomplete/autocomplete.component.mjs +0 -480
- 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 -128
- package/esm2020/lib/map/map.component.mjs +0 -265
- 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 -4352
- 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
|
@@ -0,0 +1,123 @@
|
|
|
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
|
+
http;
|
|
9
|
+
debouncePeriodMs = 300; // ms
|
|
10
|
+
cacheSize = 20;
|
|
11
|
+
lastQueriesWithResults = new Map();
|
|
12
|
+
lastQueriesLru = [];
|
|
13
|
+
currentSearch$;
|
|
14
|
+
currentQuery$;
|
|
15
|
+
constructor(http) {
|
|
16
|
+
this.http = http;
|
|
17
|
+
this.currentSearch$ = new Subject();
|
|
18
|
+
const typed$ = this.currentSearch$
|
|
19
|
+
.asObservable()
|
|
20
|
+
.pipe(distinctUntilChanged());
|
|
21
|
+
this.currentQuery$ = typed$.pipe(debounceTime(this.debouncePeriodMs), switchMap((currentQuery) => {
|
|
22
|
+
const data = this.getFromCache(currentQuery);
|
|
23
|
+
if (data !== undefined) {
|
|
24
|
+
return of(data);
|
|
25
|
+
}
|
|
26
|
+
// Nominatim search documentation:
|
|
27
|
+
// https://nominatim.org/release-docs/develop/api/Search/
|
|
28
|
+
const url = 'https://nominatim.openstreetmap.org/search?format=json&limit=20&q=' +
|
|
29
|
+
encodeURIComponent(currentQuery);
|
|
30
|
+
const headers = {
|
|
31
|
+
'Content-Type': 'application/json'
|
|
32
|
+
};
|
|
33
|
+
this.addToCache(currentQuery, []);
|
|
34
|
+
return this.http.get(url, { headers }).pipe(map((response) => {
|
|
35
|
+
const searchResults = response;
|
|
36
|
+
const uniqueResults = distinct(searchResults);
|
|
37
|
+
return this.addToCache(currentQuery, uniqueResults);
|
|
38
|
+
}));
|
|
39
|
+
}));
|
|
40
|
+
}
|
|
41
|
+
searchGeolocation(query) {
|
|
42
|
+
this.currentSearch$.next(query);
|
|
43
|
+
return this.currentQuery$;
|
|
44
|
+
}
|
|
45
|
+
getLabels(instance, keys) {
|
|
46
|
+
const searchResults = instance.lastQueriesWithResults
|
|
47
|
+
.get(instance.getLatestQuery())
|
|
48
|
+
.filter((searchResult) => samePosition(searchResult, keys));
|
|
49
|
+
return of(searchResults.map((searchResult) => {
|
|
50
|
+
const key = {
|
|
51
|
+
type: 'Point',
|
|
52
|
+
coordinates: [searchResult.lon, searchResult.lat]
|
|
53
|
+
};
|
|
54
|
+
return {
|
|
55
|
+
key,
|
|
56
|
+
label: searchResult.display_name
|
|
57
|
+
};
|
|
58
|
+
}));
|
|
59
|
+
}
|
|
60
|
+
getData(instance, search) {
|
|
61
|
+
return instance.searchGeolocation(search).pipe(map((searchResults) => searchResults.map((searchResult) => {
|
|
62
|
+
const key = {
|
|
63
|
+
type: 'Point',
|
|
64
|
+
coordinates: [searchResult.lon, searchResult.lat]
|
|
65
|
+
};
|
|
66
|
+
const label = searchResult.display_name;
|
|
67
|
+
return { key, label };
|
|
68
|
+
})));
|
|
69
|
+
}
|
|
70
|
+
// Cache implemementation ---
|
|
71
|
+
getFromCache(query) {
|
|
72
|
+
if (this.lastQueriesWithResults.has(query)) {
|
|
73
|
+
return this.lastQueriesWithResults.get(query);
|
|
74
|
+
}
|
|
75
|
+
return undefined;
|
|
76
|
+
}
|
|
77
|
+
addToCache(query, data) {
|
|
78
|
+
if (this.lastQueriesWithResults.keys.length >= this.cacheSize) {
|
|
79
|
+
const deletedQuery = this.lastQueriesLru[0];
|
|
80
|
+
this.revomeFromCache(deletedQuery);
|
|
81
|
+
}
|
|
82
|
+
this.lastQueriesWithResults.set(query, data);
|
|
83
|
+
this.lastQueriesLru.push(query);
|
|
84
|
+
return data;
|
|
85
|
+
}
|
|
86
|
+
revomeFromCache(query) {
|
|
87
|
+
this.lastQueriesWithResults.delete(query);
|
|
88
|
+
const index = this.lastQueriesLru.findIndex((it) => it === query);
|
|
89
|
+
this.lastQueriesLru.splice(index, 1);
|
|
90
|
+
}
|
|
91
|
+
getLatestQuery() {
|
|
92
|
+
return this.lastQueriesLru.length
|
|
93
|
+
? this.lastQueriesLru[this.lastQueriesLru.length - 1]
|
|
94
|
+
: null;
|
|
95
|
+
}
|
|
96
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: GeolocationService, deps: [{ token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
97
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: GeolocationService, providedIn: 'root' });
|
|
98
|
+
}
|
|
99
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: GeolocationService, decorators: [{
|
|
100
|
+
type: Injectable,
|
|
101
|
+
args: [{ providedIn: 'root' }]
|
|
102
|
+
}], ctorParameters: function () { return [{ type: i1.HttpClient }]; } });
|
|
103
|
+
const samePosition = (searchResult, keys) => {
|
|
104
|
+
let found = false;
|
|
105
|
+
keys.forEach((item) => {
|
|
106
|
+
if (searchResult.lon === item.coordinates[0] &&
|
|
107
|
+
searchResult.lat === item.coordinates[1]) {
|
|
108
|
+
found = true;
|
|
109
|
+
}
|
|
110
|
+
});
|
|
111
|
+
return found;
|
|
112
|
+
};
|
|
113
|
+
const distinct = (data) => {
|
|
114
|
+
const unique = {};
|
|
115
|
+
return data.filter((r) => {
|
|
116
|
+
if (unique[r.display_name]) {
|
|
117
|
+
return false;
|
|
118
|
+
}
|
|
119
|
+
unique[r.display_name] = 1;
|
|
120
|
+
return true;
|
|
121
|
+
});
|
|
122
|
+
};
|
|
123
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VvbG9jYXRpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2x1eC9zcmMvbGliL2dlb2xvY2F0aW9uL2dlb2xvY2F0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFjLEVBQUUsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0MsT0FBTyxFQUNMLFlBQVksRUFDWixvQkFBb0IsRUFDcEIsR0FBRyxFQUNILFNBQVMsRUFDVixNQUFNLGdCQUFnQixDQUFDOzs7QUFZeEIsTUFBTSxPQUFPLGtCQUFrQjtJQVFUO0lBUFosZ0JBQWdCLEdBQUcsR0FBRyxDQUFDLENBQUMsS0FBSztJQUM3QixTQUFTLEdBQUcsRUFBRSxDQUFDO0lBQ2Ysc0JBQXNCLEdBQUcsSUFBSSxHQUFHLEVBQTBCLENBQUM7SUFDM0QsY0FBYyxHQUFhLEVBQUUsQ0FBQztJQUM5QixjQUFjLENBQWtCO0lBQ2hDLGFBQWEsQ0FBNkI7SUFFbEQsWUFBb0IsSUFBZ0I7UUFBaEIsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUNsQyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksT0FBTyxFQUFVLENBQUM7UUFFNUMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGNBQWM7YUFDL0IsWUFBWSxFQUFFO2FBQ2QsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUMsQ0FBQztRQUVoQyxJQUFJLENBQUMsYUFBYSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQzlCLFlBQVksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsRUFFbkMsU0FBUyxDQUFDLENBQUMsWUFBWSxFQUFFLEVBQUU7WUFDekIsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFlBQVks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QUFLLENBQUM7SUFDbEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1FBQ3BCLElBQ0UsWUFBWSxDQUFDLEdBQUcsS0FBSyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztZQUN4QyxZQUFZLENBQUMsR0FBRyxLQUFLLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQ3hDO1lBQ0EsS0FBSyxHQUFHLElBQUksQ0FBQztTQUNkO0lBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDSCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUMsQ0FBQztBQUVGLE1BQU0sUUFBUSxHQUFHLENBQUMsSUFBb0IsRUFBa0IsRUFBRTtJQUN4RCxNQUFNLE1BQU0sR0FBOEIsRUFBRSxDQUFDO0lBQzdDLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1FBQ3ZCLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsRUFBRTtZQUMxQixPQUFPLEtBQUssQ0FBQztTQUNkO1FBQ0QsTUFBTSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDM0IsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEYXRhU291cmNlIH0gZnJvbSAnLi4vZGF0YXNvdXJjZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgZGVib3VuY2VUaW1lLFxuICBkaXN0aW5jdFVudGlsQ2hhbmdlZCxcbiAgbWFwLFxuICBzd2l0Y2hNYXBcbn0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgR2VvUG9pbnQgfSBmcm9tICcuLi9tYXAvZ2VvcG9pbnQnO1xuXG5pbnRlcmZhY2UgU2VhcmNoUmVzdWx0IHtcbiAgcGxhY2VfaWQ6IG51bWJlcjtcbiAgbGF0OiBudW1iZXI7XG4gIGxvbjogbnVtYmVyO1xuICBkaXNwbGF5X25hbWU6IHN0cmluZztcbiAgaWNvbjogc3RyaW5nO1xufVxuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIEdlb2xvY2F0aW9uU2VydmljZSB7XG4gIHByaXZhdGUgZGVib3VuY2VQZXJpb2RNcyA9IDMwMDsgLy8gbXNcbiAgcHJpdmF0ZSBjYWNoZVNpemUgPSAyMDtcbiAgcHJpdmF0ZSBsYXN0UXVlcmllc1dpdGhSZXN1bHRzID0gbmV3IE1hcDxzdHJpbmcsIFNlYXJjaFJlc3VsdFtdPigpO1xuICBwcml2YXRlIGxhc3RRdWVyaWVzTHJ1OiBzdHJpbmdbXSA9IFtdO1xuICBwcml2YXRlIGN1cnJlbnRTZWFyY2gkOiBTdWJqZWN0PHN0cmluZz47XG4gIHByaXZhdGUgY3VycmVudFF1ZXJ5JDogT2JzZXJ2YWJsZTxTZWFyY2hSZXN1bHRbXT47XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50KSB7XG4gICAgdGhpcy5jdXJyZW50U2VhcmNoJCA9IG5ldyBTdWJqZWN0PHN0cmluZz4oKTtcblxuICAgIGNvbnN0IHR5cGVkJCA9IHRoaXMuY3VycmVudFNlYXJjaCRcbiAgICAgIC5hc09ic2VydmFibGUoKVxuICAgICAgLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoKSk7XG5cbiAgICB0aGlzLmN1cnJlbnRRdWVyeSQgPSB0eXBlZCQucGlwZShcbiAgICAgIGRlYm91bmNlVGltZSh0aGlzLmRlYm91bmNlUGVyaW9kTXMpLFxuXG4gICAgICBzd2l0Y2hNYXAoKGN1cnJlbnRRdWVyeSkgPT4ge1xuICAgICAgICBjb25zdCBkYXRhID0gdGhpcy5nZXRGcm9tQ2FjaGUoY3VycmVudFF1ZXJ5KTtcbiAgICAgICAgaWYgKGRhdGEgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHJldHVybiBvZihkYXRhKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBOb21pbmF0aW0gc2VhcmNoIGRvY3VtZW50YXRpb246XG4gICAgICAgIC8vIGh0dHBzOi8vbm9taW5hdGltLm9yZy9yZWxlYXNlLWRvY3MvZGV2ZWxvcC9hcGkvU2VhcmNoL1xuICAgICAgICBjb25zdCB1cmwgPVxuICAgICAgICAgICdodHRwczovL25vbWluYXRpbS5vcGVuc3RyZWV0bWFwLm9yZy9zZWFyY2g/Zm9ybWF0PWpzb24mbGltaXQ9MjAmcT0nICtcbiAgICAgICAgICBlbmNvZGVVUklDb21wb25lbnQoY3VycmVudFF1ZXJ5KTtcbiAgICAgICAgY29uc3QgaGVhZGVycyA9IHtcbiAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuYWRkVG9DYWNoZShjdXJyZW50UXVlcnksIFtdKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLmdldCh1cmwsIHsgaGVhZGVycyB9KS5waXBlKFxuICAgICAgICAgIG1hcCgocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHNlYXJjaFJlc3VsdHMgPSByZXNwb25zZSBhcyB1bmtub3duIGFzIFNlYXJjaFJlc3VsdFtdO1xuICAgICAgICAgICAgY29uc3QgdW5pcXVlUmVzdWx0cyA9IGRpc3RpbmN0KHNlYXJjaFJlc3VsdHMpO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuYWRkVG9DYWNoZShjdXJyZW50UXVlcnksIHVuaXF1ZVJlc3VsdHMpO1xuICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBzZWFyY2hHZW9sb2NhdGlvbihxdWVyeTogc3RyaW5nKTogT2JzZXJ2YWJsZTxTZWFyY2hSZXN1bHRbXT4ge1xuICAgIHRoaXMuY3VycmVudFNlYXJjaCQubmV4dChxdWVyeSk7XG4gICAgcmV0dXJuIHRoaXMuY3VycmVudFF1ZXJ5JDtcbiAgfVxuXG4gIGdldExhYmVscyhcbiAgICBpbnN0YW5jZTogR2VvbG9jYXRpb25TZXJ2aWNlLFxuICAgIGtleXM6IEdlb1BvaW50W11cbiAgKTogT2JzZXJ2YWJsZTxEYXRhU291cmNlPEdlb1BvaW50LCBzdHJpbmc+PiB7XG4gICAgY29uc3Qgc2VhcmNoUmVzdWx0cyA9IGluc3RhbmNlLmxhc3RRdWVyaWVzV2l0aFJlc3VsdHNcbiAgICAgIC5nZXQoaW5zdGFuY2UuZ2V0TGF0ZXN0UXVlcnkoKSlcbiAgICAgIC5maWx0ZXIoKHNlYXJjaFJlc3VsdCkgPT4gc2FtZVBvc2l0aW9uKHNlYXJjaFJlc3VsdCwga2V5cykpO1xuICAgIHJldHVybiBvZihcbiAgICAgIHNlYXJjaFJlc3VsdHMubWFwKChzZWFyY2hSZXN1bHQpID0+IHtcbiAgICAgICAgY29uc3Qga2V5OiBHZW9Qb2ludCA9IHtcbiAgICAgICAgICB0eXBlOiAnUG9pbnQnLFxuICAgICAgICAgIGNvb3JkaW5hdGVzOiBbc2VhcmNoUmVzdWx0Lmxvbiwgc2VhcmNoUmVzdWx0LmxhdF1cbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBrZXksXG4gICAgICAgICAgbGFiZWw6IHNlYXJjaFJlc3VsdC5kaXNwbGF5X25hbWVcbiAgICAgICAgfTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIGdldERhdGEoXG4gICAgaW5zdGFuY2U6IEdlb2xvY2F0aW9uU2VydmljZSxcbiAgICBzZWFyY2g6IHN0cmluZ1xuICApOiBPYnNlcnZhYmxlPERhdGFTb3VyY2U8R2VvUG9pbnQsIHN0cmluZz4+IHtcbiAgICByZXR1cm4gaW5zdGFuY2Uuc2VhcmNoR2VvbG9jYXRpb24oc2VhcmNoKS5waXBlKFxuICAgICAgbWFwKChzZWFyY2hSZXN1bHRzKSA9PlxuICAgICAgICBzZWFyY2hSZXN1bHRzLm1hcCgoc2VhcmNoUmVzdWx0KSA9PiB7XG4gICAgICAgICAgY29uc3Qga2V5OiBHZW9Qb2ludCA9IHtcbiAgICAgICAgICAgIHR5cGU6ICdQb2ludCcsXG4gICAgICAgICAgICBjb29yZGluYXRlczogW3NlYXJjaFJlc3VsdC5sb24sIHNlYXJjaFJlc3VsdC5sYXRdXG4gICAgICAgICAgfTtcbiAgICAgICAgICBjb25zdCBsYWJlbCA9IHNlYXJjaFJlc3VsdC5kaXNwbGF5X25hbWU7XG4gICAgICAgICAgcmV0dXJuIHsga2V5LCBsYWJlbCB9O1xuICAgICAgICB9KVxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICAvLyBDYWNoZSBpbXBsZW1lbWVudGF0aW9uIC0tLVxuICBwcml2YXRlIGdldEZyb21DYWNoZShxdWVyeTogc3RyaW5nKTogU2VhcmNoUmVzdWx0W10ge1xuICAgIGlmICh0aGlzLmxhc3RRdWVyaWVzV2l0aFJlc3VsdHMuaGFzKHF1ZXJ5KSkge1xuICAgICAgcmV0dXJuIHRoaXMubGFzdFF1ZXJpZXNXaXRoUmVzdWx0cy5nZXQocXVlcnkpO1xuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG4gIHByaXZhdGUgYWRkVG9DYWNoZShxdWVyeTogc3RyaW5nLCBkYXRhOiBTZWFyY2hSZXN1bHRbXSk6IFNlYXJjaFJlc3VsdFtdIHtcbiAgICBpZiAodGhpcy5sYXN0UXVlcmllc1dpdGhSZXN1bHRzLmtleXMubGVuZ3RoID49IHRoaXMuY2FjaGVTaXplKSB7XG4gICAgICBjb25zdCBkZWxldGVkUXVlcnkgPSB0aGlzLmxhc3RRdWVyaWVzTHJ1WzBdO1xuICAgICAgdGhpcy5yZXZvbWVGcm9tQ2FjaGUoZGVsZXRlZFF1ZXJ5KTtcbiAgICB9XG4gICAgdGhpcy5sYXN0UXVlcmllc1dpdGhSZXN1bHRzLnNldChxdWVyeSwgZGF0YSk7XG4gICAgdGhpcy5sYXN0UXVlcmllc0xydS5wdXNoKHF1ZXJ5KTtcbiAgICByZXR1cm4gZGF0YTtcbiAgfVxuICBwcml2YXRlIHJldm9tZUZyb21DYWNoZShxdWVyeTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5sYXN0UXVlcmllc1dpdGhSZXN1bHRzLmRlbGV0ZShxdWVyeSk7XG4gICAgY29uc3QgaW5kZXggPSB0aGlzLmxhc3RRdWVyaWVzTHJ1LmZpbmRJbmRleCgoaXQpID0+IGl0ID09PSBxdWVyeSk7XG4gICAgdGhpcy5sYXN0UXVlcmllc0xydS5zcGxpY2UoaW5kZXgsIDEpO1xuICB9XG4gIHByaXZhdGUgZ2V0TGF0ZXN0UXVlcnkoKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMubGFzdFF1ZXJpZXNMcnUubGVuZ3RoXG4gICAgICA/IHRoaXMubGFzdFF1ZXJpZXNMcnVbdGhpcy5sYXN0UXVlcmllc0xydS5sZW5ndGggLSAxXVxuICAgICAgOiBudWxsO1xuICB9XG4gIC8vIEVuZCBjYWNoZSBpbXBsZW1lbWVudGF0aW9uIC0tLVxufVxuXG5jb25zdCBzYW1lUG9zaXRpb24gPSAoXG4gIHNlYXJjaFJlc3VsdDogU2VhcmNoUmVzdWx0LFxuICBrZXlzOiBHZW9Qb2ludFtdXG4pOiBib29sZWFuID0+IHtcbiAgbGV0IGZvdW5kID0gZmFsc2U7XG4gIGtleXMuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgIGlmIChcbiAgICAgIHNlYXJjaFJlc3VsdC5sb24gPT09IGl0ZW0uY29vcmRpbmF0ZXNbMF0gJiZcbiAgICAgIHNlYXJjaFJlc3VsdC5sYXQgPT09IGl0ZW0uY29vcmRpbmF0ZXNbMV1cbiAgICApIHtcbiAgICAgIGZvdW5kID0gdHJ1ZTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gZm91bmQ7XG59O1xuXG5jb25zdCBkaXN0aW5jdCA9IChkYXRhOiBTZWFyY2hSZXN1bHRbXSk6IFNlYXJjaFJlc3VsdFtdID0+IHtcbiAgY29uc3QgdW5pcXVlOiB7IFtrZXk6IHN0cmluZ106IG51bWJlciB9ID0ge307XG4gIHJldHVybiBkYXRhLmZpbHRlcigocikgPT4ge1xuICAgIGlmICh1bmlxdWVbci5kaXNwbGF5X25hbWVdKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHVuaXF1ZVtyLmRpc3BsYXlfbmFtZV0gPSAxO1xuICAgIHJldHVybiB0cnVlO1xuICB9KTtcbn07XG4iXX0=
|
|
@@ -18,10 +18,10 @@ export class OpenLayerLoaderService {
|
|
|
18
18
|
}
|
|
19
19
|
return of(true);
|
|
20
20
|
}
|
|
21
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: OpenLayerLoaderService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
22
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: OpenLayerLoaderService, providedIn: 'root' });
|
|
21
23
|
}
|
|
22
|
-
|
|
23
|
-
OpenLayerLoaderService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: OpenLayerLoaderService, providedIn: 'root' });
|
|
24
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: OpenLayerLoaderService, decorators: [{
|
|
24
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: OpenLayerLoaderService, decorators: [{
|
|
25
25
|
type: Injectable,
|
|
26
26
|
args: [{ providedIn: 'root' }]
|
|
27
27
|
}] });
|
|
@@ -59,4 +59,4 @@ const loadCss = (url, callback) => {
|
|
|
59
59
|
};
|
|
60
60
|
document.getElementsByTagName('head')[0].appendChild(link);
|
|
61
61
|
};
|
|
62
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
62
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BlbmxheWVyLWxvYWRlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbHV4L3NyYy9saWIvZ2VvbG9jYXRpb24vb3BlbmxheWVyLWxvYWRlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLElBQUksRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBRTVDLElBQUkscUJBQXFCLEdBQUcsS0FBSyxDQUFDO0FBR2xDLE1BQU0sT0FBTyxzQkFBc0I7SUFDakMsSUFBSTtRQUNGLElBQUssTUFBYyxDQUFDLEVBQUUsRUFBRTtZQUN0QixPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNqQjtRQUVELE1BQU0sY0FBYyxHQUFHLDhDQUE4QyxDQUFDO1FBQ3RFLE1BQU0sZUFBZSxHQUFHLDZDQUE2QyxDQUFDO1FBRXRFLElBQUksQ0FBQyxxQkFBcUIsRUFBRTtZQUMxQixxQkFBcUIsR0FBRyxJQUFJLENBQUMsQ0FBQyw4QkFBOEI7WUFDNUQsT0FBTyxDQUFDLGVBQWUsRUFBRSxHQUFHLEVBQUUsR0FBRSxDQUFDLENBQUMsQ0FBQztZQUNuQyxPQUFPLElBQUksQ0FDVCxJQUFJLE9BQU8sQ0FBVSxDQUFDLE9BQU8sRUFBRSxDQUFDLEVBQUUsRUFBRTtnQkFDbEMsVUFBVSxDQUFDLGNBQWMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUNsRCxDQUFDLENBQUMsQ0FDSCxDQUFDO1NBQ0g7UUFDRCxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNsQixDQUFDO3VHQW5CVSxzQkFBc0I7MkdBQXRCLHNCQUFzQixjQURULE1BQU07OzJGQUNuQixzQkFBc0I7a0JBRGxDLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFOztBQXVCbEMsK0RBQStEO0FBQy9ELE1BQU0sVUFBVSxHQUFHLENBQUMsR0FBVyxFQUFFLFFBQW9CLEVBQVEsRUFBRTtJQUM3RCxNQUFNLE1BQU0sR0FBUSxRQUFRLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3JELE1BQU0sQ0FBQyxJQUFJLEdBQUcsaUJBQWlCLENBQUM7SUFFaEMsSUFBSSxNQUFNLENBQUMsVUFBVSxFQUFFO1FBQ3JCLGFBQWE7UUFDYixNQUFNLENBQUMsa0JBQWtCLEdBQUcsR0FBUyxFQUFFO1lBQ3JDLElBQUksTUFBTSxDQUFDLFVBQVUsS0FBSyxRQUFRLElBQUksTUFBTSxDQUFDLFVBQVUsS0FBSyxVQUFVLEVBQUU7Z0JBQ3RFLE1BQU0sQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUM7Z0JBQ2pDLFFBQVEsRUFBRSxDQUFDO2FBQ1o7UUFDSCxDQUFDLENBQUM7S0FDSDtTQUFNO1FBQ0wsa0JBQWtCO1FBQ2xCLE1BQU0sQ0FBQyxNQUFNLEdBQUcsR0FBUyxFQUFFO1lBQ3pCLFFBQVEsRUFBRSxDQUFDO1FBQ2IsQ0FBQyxDQUFDO0tBQ0g7SUFDRCxNQUFNLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztJQUNqQixRQUFRLENBQUMsb0JBQW9CLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQy9ELENBQUMsQ0FBQztBQUVGLDBEQUEwRDtBQUMxRCxNQUFNLE9BQU8sR0FBRyxDQUFDLEdBQVcsRUFBRSxRQUFvQixFQUFRLEVBQUU7SUFDMUQsTUFBTSxJQUFJLEdBQVEsUUFBUSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNqRCxJQUFJLENBQUMsSUFBSSxHQUFHLFVBQVUsQ0FBQztJQUN2QixJQUFJLENBQUMsR0FBRyxHQUFHLFlBQVksQ0FBQztJQUN4QixJQUFJLENBQUMsSUFBSSxHQUFHLGlCQUFpQixDQUFDO0lBQzlCLElBQUksQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDO0lBQ2hCLElBQUksQ0FBQyxNQUFNLEdBQUcsR0FBUyxFQUFFO1FBQ3ZCLFFBQVEsRUFBRSxDQUFDO0lBQ2IsQ0FBQyxDQUFDO0lBQ0YsUUFBUSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUM3RCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBmcm9tLCBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xuXG5sZXQgb3BlbkxheWVyc0lzSW5zdGFsbGVkID0gZmFsc2U7XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgT3BlbkxheWVyTG9hZGVyU2VydmljZSB7XG4gIGxvYWQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgaWYgKCh3aW5kb3cgYXMgYW55KS5vbCkge1xuICAgICAgcmV0dXJuIG9mKHRydWUpO1xuICAgIH1cblxuICAgIGNvbnN0IG9wZW5MYXllckpzVXJsID0gJ2h0dHBzOi8vb3BlbmxheWVycy5vcmcvZW4vdjUuMy4wL2J1aWxkL29sLmpzJztcbiAgICBjb25zdCBvcGVuTGF5ZXJDc3NVcmwgPSAnaHR0cHM6Ly9vcGVubGF5ZXJzLm9yZy9lbi92NS4zLjAvY3NzL29sLmNzcyc7XG5cbiAgICBpZiAoIW9wZW5MYXllcnNJc0luc3RhbGxlZCkge1xuICAgICAgb3BlbkxheWVyc0lzSW5zdGFsbGVkID0gdHJ1ZTsgLy8gb25seSB0cnkgdG8gaW5zdGFsbCBpdCBvbmNlXG4gICAgICBsb2FkQ3NzKG9wZW5MYXllckNzc1VybCwgKCkgPT4ge30pO1xuICAgICAgcmV0dXJuIGZyb20oXG4gICAgICAgIG5ldyBQcm9taXNlPGJvb2xlYW4+KChyZXNvbHZlLCBfKSA9PiB7XG4gICAgICAgICAgbG9hZFNjcmlwdChvcGVuTGF5ZXJKc1VybCwgKCkgPT4gcmVzb2x2ZSh0cnVlKSk7XG4gICAgICAgIH0pXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gb2YodHJ1ZSk7XG4gIH1cbn1cblxuLyoqIER5bmFtaWNhbGx5IGxvYWQgYSBzY3JpcHQgZnJvbSB1cmwgYW5kIHJldHVybiBhIGNhbGxiYWNrICovXG5jb25zdCBsb2FkU2NyaXB0ID0gKHVybDogc3RyaW5nLCBjYWxsYmFjazogKCkgPT4gdm9pZCk6IHZvaWQgPT4ge1xuICBjb25zdCBzY3JpcHQ6IGFueSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpO1xuICBzY3JpcHQudHlwZSA9ICd0ZXh0L2phdmFzY3JpcHQnO1xuXG4gIGlmIChzY3JpcHQucmVhZHlTdGF0ZSkge1xuICAgIC8vIGZvciBvbGQgSUVcbiAgICBzY3JpcHQub25yZWFkeXN0YXRlY2hhbmdlID0gKCk6IHZvaWQgPT4ge1xuICAgICAgaWYgKHNjcmlwdC5yZWFkeVN0YXRlID09PSAnbG9hZGVkJyB8fCBzY3JpcHQucmVhZHlTdGF0ZSA9PT0gJ2NvbXBsZXRlJykge1xuICAgICAgICBzY3JpcHQub25yZWFkeXN0YXRlY2hhbmdlID0gbnVsbDtcbiAgICAgICAgY2FsbGJhY2soKTtcbiAgICAgIH1cbiAgICB9O1xuICB9IGVsc2Uge1xuICAgIC8vIE90aGVycyBicm93c2Vyc1xuICAgIHNjcmlwdC5vbmxvYWQgPSAoKTogdm9pZCA9PiB7XG4gICAgICBjYWxsYmFjaygpO1xuICAgIH07XG4gIH1cbiAgc2NyaXB0LnNyYyA9IHVybDtcbiAgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2hlYWQnKVswXS5hcHBlbmRDaGlsZChzY3JpcHQpO1xufTtcblxuLyoqIER5bmFtaWNhbGx5IGxvYWQgY3NzIGZyb20gdXJsIGFuZCByZXR1cm4gYSBjYWxsYmFjayAqL1xuY29uc3QgbG9hZENzcyA9ICh1cmw6IHN0cmluZywgY2FsbGJhY2s6ICgpID0+IHZvaWQpOiB2b2lkID0+IHtcbiAgY29uc3QgbGluazogYW55ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbGluaycpO1xuICBsaW5rLnR5cGUgPSAndGV4dC9jc3MnO1xuICBsaW5rLnJlbCA9ICdzdHlsZXNoZWV0JztcbiAgbGluay50eXBlID0gJ3RleHQvamF2YXNjcmlwdCc7XG4gIGxpbmsuaHJlZiA9IHVybDtcbiAgbGluay5vbmxvYWQgPSAoKTogdm9pZCA9PiB7XG4gICAgY2FsbGJhY2soKTtcbiAgfTtcbiAgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2hlYWQnKVswXS5hcHBlbmRDaGlsZChsaW5rKTtcbn07XG4iXX0=
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
/* eslint-disable no-useless-escape */
|
|
2
|
+
// undefined and null functions
|
|
3
|
+
export const exists = (value) => value !== null && value !== undefined;
|
|
4
|
+
export const hasValue = (value) => exists(value) && (typeof value === 'string' ? !isEmptyString(value) : true);
|
|
5
|
+
// string functions
|
|
6
|
+
export const isEmptyString = (value) => value.trim() === '';
|
|
7
|
+
export const isValidEmail = (value) => {
|
|
8
|
+
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])?$/;
|
|
9
|
+
return re.test(String(value).toLowerCase().trim());
|
|
10
|
+
};
|
|
11
|
+
export const isValidUrl = (value) => {
|
|
12
|
+
const pattern =
|
|
13
|
+
// eslint-disable-next-line max-len
|
|
14
|
+
/^((([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\*\-_+~.,:;%]+)?)?$/;
|
|
15
|
+
return pattern.test(value);
|
|
16
|
+
};
|
|
17
|
+
export const isValidRelativeUrl = (value) => {
|
|
18
|
+
const pattern =
|
|
19
|
+
// eslint-disable-next-line max-len
|
|
20
|
+
/^((([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\*\-_+~.,:;%]+)?)?$/;
|
|
21
|
+
return pattern.test(value);
|
|
22
|
+
};
|
|
23
|
+
export const isValidColor = (value) => {
|
|
24
|
+
value = String(value).toLowerCase();
|
|
25
|
+
// valid values for CSS color property, yet not valid colors by themselves
|
|
26
|
+
if (value === 'currentcolor' ||
|
|
27
|
+
value === 'inherit' ||
|
|
28
|
+
value === 'initial' ||
|
|
29
|
+
value === 'revert' ||
|
|
30
|
+
value === 'unset') {
|
|
31
|
+
return false;
|
|
32
|
+
}
|
|
33
|
+
return CSS.supports('color', value);
|
|
34
|
+
};
|
|
35
|
+
// date functions
|
|
36
|
+
export const isValidDate = (date) => exists(date) ? !isNaN(date.getTime()) : false;
|
|
37
|
+
export const normalizeDate = (value) => {
|
|
38
|
+
if (typeof value === 'string' && value.length > 10) {
|
|
39
|
+
return value.substr(0, 10);
|
|
40
|
+
}
|
|
41
|
+
return value ? value.toString() : null;
|
|
42
|
+
};
|
|
43
|
+
export const addTimezoneOffset = (date) => {
|
|
44
|
+
if (!isValidDate(date)) {
|
|
45
|
+
return date;
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
return new Date(date.getTime() - date.getTimezoneOffset() * 60000);
|
|
49
|
+
}
|
|
50
|
+
};
|
|
51
|
+
// number functions
|
|
52
|
+
export const isValidNumber = (value) => (hasValue(value) ? !Number.isNaN(Number(value)) : false);
|
|
53
|
+
export const numberOfDecimalDigits = (x) => {
|
|
54
|
+
if (isValidNumber(x)) {
|
|
55
|
+
const xString = String(Number(x));
|
|
56
|
+
if (xString === 'Infinity') {
|
|
57
|
+
return 0;
|
|
58
|
+
}
|
|
59
|
+
const indexOfE = xString.indexOf('e');
|
|
60
|
+
if (indexOfE >= 0) {
|
|
61
|
+
return 0;
|
|
62
|
+
}
|
|
63
|
+
const indexOfDecimalPoint = xString.indexOf('.');
|
|
64
|
+
if (indexOfDecimalPoint < 0) {
|
|
65
|
+
return 0;
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
return xString.length - indexOfDecimalPoint - 1;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
return undefined;
|
|
72
|
+
};
|
|
73
|
+
export const numberOfWholeDigits = (x) => {
|
|
74
|
+
if (isValidNumber(x)) {
|
|
75
|
+
let xString = String(Number(x));
|
|
76
|
+
if (xString.indexOf('-') === 0) {
|
|
77
|
+
xString = xString.slice(1, xString.length);
|
|
78
|
+
}
|
|
79
|
+
if (xString === 'Infinity') {
|
|
80
|
+
return Infinity;
|
|
81
|
+
}
|
|
82
|
+
if (xString.indexOf('0') === 0) {
|
|
83
|
+
xString = xString.slice(1, xString.length);
|
|
84
|
+
}
|
|
85
|
+
const indexOfE = xString.indexOf('e');
|
|
86
|
+
if (indexOfE >= 0) {
|
|
87
|
+
return Number(xString.slice(indexOfE + 1, xString.length)) + 1;
|
|
88
|
+
}
|
|
89
|
+
const indexOfDecimalPoint = xString.indexOf('.');
|
|
90
|
+
if (indexOfDecimalPoint < 0) {
|
|
91
|
+
return xString.length;
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
return indexOfDecimalPoint;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
return undefined;
|
|
98
|
+
};
|
|
99
|
+
export const roundToMultipleOf = (x, modulo) => {
|
|
100
|
+
const moduloString = String(modulo);
|
|
101
|
+
// approximates the result
|
|
102
|
+
// prone to inexactitude because of floating point arithmetic
|
|
103
|
+
const approximation = Math.round(x / modulo) * modulo;
|
|
104
|
+
const approximationString = String(approximation);
|
|
105
|
+
// remove useless decimals
|
|
106
|
+
const uselessDecimalsInApproximation = numberOfDecimalDigits(approximationString) -
|
|
107
|
+
numberOfDecimalDigits(moduloString);
|
|
108
|
+
const resultString = approximationString.slice(0, approximationString.length - uselessDecimalsInApproximation);
|
|
109
|
+
return Number(resultString);
|
|
110
|
+
};
|
|
111
|
+
// other functions
|
|
112
|
+
export const isInitialAndEmpty = (previousValue, newValue) => {
|
|
113
|
+
const isPrevArray = Array.isArray(previousValue);
|
|
114
|
+
const isNewArray = Array.isArray(newValue);
|
|
115
|
+
return !((isPrevArray ? previousValue.length !== 0 : Boolean(previousValue)) ||
|
|
116
|
+
(isNewArray ? newValue.length !== 0 : Boolean(newValue)));
|
|
117
|
+
};
|
|
118
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVyRm5zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbHV4L3NyYy9saWIvaGVscGVyRm5zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHNDQUFzQztBQUN0QywrQkFBK0I7QUFFL0IsTUFBTSxDQUFDLE1BQU0sTUFBTSxHQUFHLENBQUMsS0FBVSxFQUFXLEVBQUUsQ0FDNUMsS0FBSyxLQUFLLElBQUksSUFBSSxLQUFLLEtBQUssU0FBUyxDQUFDO0FBRXhDLE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBRyxDQUFDLEtBQVUsRUFBVyxFQUFFLENBQzlDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sS0FBSyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBRTlFLG1CQUFtQjtBQUVuQixNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsQ0FBQyxLQUFhLEVBQVcsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUM7QUFFN0UsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLENBQUMsS0FBYSxFQUFXLEVBQUU7SUFDckQsTUFBTSxFQUFFLEdBQ04seUlBQXlJLENBQUM7SUFDNUksT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0FBQ3JELENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRyxDQUFDLEtBQWEsRUFBVyxFQUFFO0lBQ25ELE1BQU0sT0FBTztJQUNYLG1DQUFtQztJQUNuQyxvVUFBb1UsQ0FBQztJQUN2VSxPQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDN0IsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFD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Q0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FDekQsQ0FBQztBQUNKLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLXVzZWxlc3MtZXNjYXBlICovXHJcbi8vIHVuZGVmaW5lZCBhbmQgbnVsbCBmdW5jdGlvbnNcclxuXHJcbmV4cG9ydCBjb25zdCBleGlzdHMgPSAodmFsdWU6IGFueSk6IGJvb2xlYW4gPT5cclxuICB2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkO1xyXG5cclxuZXhwb3J0IGNvbnN0IGhhc1ZhbHVlID0gKHZhbHVlOiBhbnkpOiBib29sZWFuID0+XHJcbiAgZXhpc3RzKHZhbHVlKSAmJiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyA/ICFpc0VtcHR5U3RyaW5nKHZhbHVlKSA6IHRydWUpO1xyXG5cclxuLy8gc3RyaW5nIGZ1bmN0aW9uc1xyXG5cclxuZXhwb3J0IGNvbnN0IGlzRW1wdHlTdHJpbmcgPSAodmFsdWU6IHN0cmluZyk6IGJvb2xlYW4gPT4gdmFsdWUudHJpbSgpID09PSAnJztcclxuXHJcbmV4cG9ydCBjb25zdCBpc1ZhbGlkRW1haWwgPSAodmFsdWU6IHN0cmluZyk6IGJvb2xlYW4gPT4ge1xyXG4gIGNvbnN0IHJlID1cclxuICAgIC9eW2EtejAtOSEjJCUmJyorLz0/Xl9ge3x9fi1dKyg/OlxcLlthLXowLTkhIyQlJicqKy89P15fYHt8fX4tXSspKkAoPzpbYS16MC05XSg/OlthLXowLTktXSpbYS16MC05XSk/XFwuKStbYS16MC05XSg/OlthLXowLTktXSpbYS16MC05XSk/JC87XHJcbiAgcmV0dXJuIHJlLnRlc3QoU3RyaW5nKHZhbHVlKS50b0xvd2VyQ2FzZSgpLnRyaW0oKSk7XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgaXNWYWxpZFVybCA9ICh2YWx1ZTogc3RyaW5nKTogYm9vbGVhbiA9PiB7XHJcbiAgY29uc3QgcGF0dGVybiA9XHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbWF4LWxlblxyXG4gICAgL14oKChbYS16XSs/OlxcL1xcLyk/KCgoKFthLXowLTldKFthLXowLTktXSpbYS16MC05XSkqKVxcLikrW2Etel17Mix9KXwoKChbMC05XXsxLDN9XFwuKXszfVswLTldezEsM30pKXwobG9jYWxob3N0KSkoXFw6WzAtOV0rKT8pKT8oKFxcL1thLXpBLVowLTlcXC1fKz1+Liw6OyVdKykqXFwvPykoKFxcP3w7KVthLXpBLVowLTlcXC1fK34uLDo7JV0rPVthLXpBLVowLTlcXC1fK34uLDo7JV0rKCgoJnw7KVthLXpBLVowLTlcXC1fK34uLDo7JV0rPVthLXpBLVowLTlcXC1fK34uLDo7JV0rKSopKT8oI1thLXpBLVowLTlcXC1fK34uLDo7JV0rKD1bYS16QS1aMC05XFwqXFwtXyt+Liw6OyVdKyk/KT8kLztcclxuICByZXR1cm4gcGF0dGVybi50ZXN0KHZhbHVlKTtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBpc1ZhbGlkUmVsYXRpdmVVcmwgPSAodmFsdWU6IHN0cmluZyk6IGJvb2xlYW4gPT4ge1xyXG4gIGNvbnN0IHBhdHRlcm4gPVxyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG1heC1sZW5cclxuICAgIC9eKCgoW2Etel0rPzpcXC9cXC8pPygoKChbYS16MC05XShbYS16MC05LV0qW2EtejAtOV0pKilcXC4pK1thLXpdezIsfSl8KCgoWzAtOV17MSwzfVxcLil7M31bMC05XXsxLDN9KSl8KGxvY2FsaG9zdCkpKFxcOlswLTldKyk/KXwoW2EtekEtWjAtOVxcLV8rPX4uLDo7JV0rKSk/KChcXC9bYS16QS1aMC05XFwtXys9fi4sOjslXSspKlxcLz8pKChcXD98OylbYS16QS1aMC05XFwtXyt+Liw6OyVdKz1bYS16QS1aMC05XFwtXyt+Liw6OyVdKygoKCZ8OylbYS16QS1aMC05XFwtXyt+Liw6OyVdKz1bYS16QS1aMC05XFwtXyt+Liw6OyVdKykqKSk/KCNbYS16QS1aMC05XFwtXyt+Liw6OyVdKyg9W2EtekEtWjAtOVxcKlxcLV8rfi4sOjslXSspPyk/JC87XHJcbiAgcmV0dXJuIHBhdHRlcm4udGVzdCh2YWx1ZSk7XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgaXNWYWxpZENvbG9yID0gKHZhbHVlOiBzdHJpbmcpOiBib29sZWFuID0+IHtcclxuICB2YWx1ZSA9IFN0cmluZyh2YWx1ZSkudG9Mb3dlckNhc2UoKTtcclxuICAvLyB2YWxpZCB2YWx1ZXMgZm9yIENTUyBjb2xvciBwcm9wZXJ0eSwgeWV0IG5vdCB2YWxpZCBjb2xvcnMgYnkgdGhlbXNlbHZlc1xyXG4gIGlmIChcclxuICAgIHZhbHVlID09PSAnY3VycmVudGNvbG9yJyB8fFxyXG4gICAgdmFsdWUgPT09ICdpbmhlcml0JyB8fFxyXG4gICAgdmFsdWUgPT09ICdpbml0aWFsJyB8fFxyXG4gICAgdmFsdWUgPT09ICdyZXZlcnQnIHx8XHJcbiAgICB2YWx1ZSA9PT0gJ3Vuc2V0J1xyXG4gICkge1xyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuICByZXR1cm4gQ1NTLnN1cHBvcnRzKCdjb2xvcicsIHZhbHVlKTtcclxufTtcclxuXHJcbi8vIGRhdGUgZnVuY3Rpb25zXHJcblxyXG5leHBvcnQgY29uc3QgaXNWYWxpZERhdGUgPSAoZGF0ZTogRGF0ZSk6IGJvb2xlYW4gPT5cclxuICBleGlzdHMoZGF0ZSkgPyAhaXNOYU4oZGF0ZS5nZXRUaW1lKCkpIDogZmFsc2U7XHJcblxyXG5leHBvcnQgY29uc3Qgbm9ybWFsaXplRGF0ZSA9ICh2YWx1ZTogYW55KTogc3RyaW5nID0+IHtcclxuICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyAmJiB2YWx1ZS5sZW5ndGggPiAxMCkge1xyXG4gICAgcmV0dXJuIHZhbHVlLnN1YnN0cigwLCAxMCk7XHJcbiAgfVxyXG4gIHJldHVybiB2YWx1ZSA/IHZhbHVlLnRvU3RyaW5nKCkgOiBudWxsO1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IGFkZFRpbWV6b25lT2Zmc2V0ID0gKGRhdGU6IERhdGUpOiBEYXRlID0+IHtcclxuICBpZiAoIWlzVmFsaWREYXRlKGRhdGUpKSB7XHJcbiAgICByZXR1cm4gZGF0ZTtcclxuICB9IGVsc2Uge1xyXG4gICAgcmV0dXJuIG5ldyBEYXRlKGRhdGUuZ2V0VGltZSgpIC0gZGF0ZS5nZXRUaW1lem9uZU9mZnNldCgpICogNjAwMDApO1xyXG4gIH1cclxufTtcclxuXHJcbi8vIG51bWJlciBmdW5jdGlvbnNcclxuXHJcbmV4cG9ydCBjb25zdCBpc1ZhbGlkTnVtYmVyID0gKFxyXG4gIHZhbHVlOiBzdHJpbmcgfCBudW1iZXIgfCB1bmRlZmluZWQgfCBudWxsXHJcbik6IGJvb2xlYW4gPT4gKGhhc1ZhbHVlKHZhbHVlKSA/ICFOdW1iZXIuaXNOYU4oTnVtYmVyKHZhbHVlKSkgOiBmYWxzZSk7XHJcblxyXG5leHBvcnQgY29uc3QgbnVtYmVyT2ZEZWNpbWFsRGlnaXRzID0gKFxyXG4gIHg6IG51bWJlciB8IHN0cmluZ1xyXG4pOiBudW1iZXIgfCB1bmRlZmluZWQgPT4ge1xyXG4gIGlmIChpc1ZhbGlkTnVtYmVyKHgpKSB7XHJcbiAgICBjb25zdCB4U3RyaW5nID0gU3RyaW5nKE51bWJlcih4KSk7XHJcbiAgICBpZiAoeFN0cmluZyA9PT0gJ0luZmluaXR5Jykge1xyXG4gICAgICByZXR1cm4gMDtcclxuICAgIH1cclxuICAgIGNvbnN0IGluZGV4T2ZFID0geFN0cmluZy5pbmRleE9mKCdlJyk7XHJcbiAgICBpZiAoaW5kZXhPZkUgPj0gMCkge1xyXG4gICAgICByZXR1cm4gMDtcclxuICAgIH1cclxuICAgIGNvbnN0IGluZGV4T2ZEZWNpbWFsUG9pbnQgPSB4U3RyaW5nLmluZGV4T2YoJy4nKTtcclxuICAgIGlmIChpbmRleE9mRGVjaW1hbFBvaW50IDwgMCkge1xyXG4gICAgICByZXR1cm4gMDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiB4U3RyaW5nLmxlbmd0aCAtIGluZGV4T2ZEZWNpbWFsUG9pbnQgLSAxO1xyXG4gICAgfVxyXG4gIH1cclxuICByZXR1cm4gdW5kZWZpbmVkO1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IG51bWJlck9mV2hvbGVEaWdpdHMgPSAoeDogbnVtYmVyIHwgc3RyaW5nKTogbnVtYmVyIHwgdW5kZWZpbmVkID0+IHtcclxuICBpZiAoaXNWYWxpZE51bWJlcih4KSkge1xyXG4gICAgbGV0IHhTdHJpbmcgPSBTdHJpbmcoTnVtYmVyKHgpKTtcclxuICAgIGlmICh4U3RyaW5nLmluZGV4T2YoJy0nKSA9PT0gMCkge1xyXG4gICAgICB4U3RyaW5nID0geFN0cmluZy5zbGljZSgxLCB4U3RyaW5nLmxlbmd0aCk7XHJcbiAgICB9XHJcbiAgICBpZiAoeFN0cmluZyA9PT0gJ0luZmluaXR5Jykge1xyXG4gICAgICByZXR1cm4gSW5maW5pdHk7XHJcbiAgICB9XHJcbiAgICBpZiAoeFN0cmluZy5pbmRleE9mKCcwJykgPT09IDApIHtcclxuICAgICAgeFN0cmluZyA9IHhTdHJpbmcuc2xpY2UoMSwgeFN0cmluZy5sZW5ndGgpO1xyXG4gICAgfVxyXG4gICAgY29uc3QgaW5kZXhPZkUgPSB4U3RyaW5nLmluZGV4T2YoJ2UnKTtcclxuICAgIGlmIChpbmRleE9mRSA+PSAwKSB7XHJcbiAgICAgIHJldHVybiBOdW1iZXIoeFN0cmluZy5zbGljZShpbmRleE9mRSArIDEsIHhTdHJpbmcubGVuZ3RoKSkgKyAxO1xyXG4gICAgfVxyXG4gICAgY29uc3QgaW5kZXhPZkRlY2ltYWxQb2ludCA9IHhTdHJpbmcuaW5kZXhPZignLicpO1xyXG4gICAgaWYgKGluZGV4T2ZEZWNpbWFsUG9pbnQgPCAwKSB7XHJcbiAgICAgIHJldHVybiB4U3RyaW5nLmxlbmd0aDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBpbmRleE9mRGVjaW1hbFBvaW50O1xyXG4gICAgfVxyXG4gIH1cclxuICByZXR1cm4gdW5kZWZpbmVkO1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IHJvdW5kVG9NdWx0aXBsZU9mID0gKHg6IG51bWJlciwgbW9kdWxvOiBudW1iZXIpOiBudW1iZXIgPT4ge1xyXG4gIGNvbnN0IG1vZHVsb1N0cmluZyA9IFN0cmluZyhtb2R1bG8pO1xyXG4gIC8vIGFwcHJveGltYXRlcyB0aGUgcmVzdWx0XHJcbiAgLy8gcHJvbmUgdG8gaW5leGFjdGl0dWRlIGJlY2F1c2Ugb2YgZmxvYXRpbmcgcG9pbnQgYXJpdGhtZXRpY1xyXG4gIGNvbnN0IGFwcHJveGltYXRpb24gPSBNYXRoLnJvdW5kKHggLyBtb2R1bG8pICogbW9kdWxvO1xyXG4gIGNvbnN0IGFwcHJveGltYXRpb25TdHJpbmcgPSBTdHJpbmcoYXBwcm94aW1hdGlvbik7XHJcbiAgLy8gcmVtb3ZlIHVzZWxlc3MgZGVjaW1hbHNcclxuICBjb25zdCB1c2VsZXNzRGVjaW1hbHNJbkFwcHJveGltYXRpb24gPVxyXG4gICAgbnVtYmVyT2ZEZWNpbWFsRGlnaXRzKGFwcHJveGltYXRpb25TdHJpbmcpIC1cclxuICAgIG51bWJlck9mRGVjaW1hbERpZ2l0cyhtb2R1bG9TdHJpbmcpO1xyXG4gIGNvbnN0IHJlc3VsdFN0cmluZyA9IGFwcHJveGltYXRpb25TdHJpbmcuc2xpY2UoXHJcbiAgICAwLFxyXG4gICAgYXBwcm94aW1hdGlvblN0cmluZy5sZW5ndGggLSB1c2VsZXNzRGVjaW1hbHNJbkFwcHJveGltYXRpb25cclxuICApO1xyXG4gIHJldHVybiBOdW1iZXIocmVzdWx0U3RyaW5nKTtcclxufTtcclxuXHJcbi8vIG90aGVyIGZ1bmN0aW9uc1xyXG5cclxuZXhwb3J0IGNvbnN0IGlzSW5pdGlhbEFuZEVtcHR5ID0gKFxyXG4gIHByZXZpb3VzVmFsdWU6IGFueSxcclxuICBuZXdWYWx1ZTogYW55XHJcbik6IGJvb2xlYW4gPT4ge1xyXG4gIGNvbnN0IGlzUHJldkFycmF5ID0gQXJyYXkuaXNBcnJheShwcmV2aW91c1ZhbHVlKTtcclxuICBjb25zdCBpc05ld0FycmF5ID0gQXJyYXkuaXNBcnJheShuZXdWYWx1ZSk7XHJcbiAgcmV0dXJuICEoXHJcbiAgICAoaXNQcmV2QXJyYXkgPyBwcmV2aW91c1ZhbHVlLmxlbmd0aCAhPT0gMCA6IEJvb2xlYW4ocHJldmlvdXNWYWx1ZSkpIHx8XHJcbiAgICAoaXNOZXdBcnJheSA/IG5ld1ZhbHVlLmxlbmd0aCAhPT0gMCA6IEJvb2xlYW4obmV3VmFsdWUpKVxyXG4gICk7XHJcbn07XHJcbiJdfQ==
|