@yuuvis/client-core 0.6.5
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/README.md +111 -0
- package/esm2022/index.mjs +65 -0
- package/esm2022/lib/client-core.module.mjs +117 -0
- package/esm2022/lib/client-core.shared.module.mjs +18 -0
- package/esm2022/lib/common/pipes/filesize.pipe.mjs +37 -0
- package/esm2022/lib/common/pipes/index.mjs +6 -0
- package/esm2022/lib/common/pipes/keys.pipe.mjs +17 -0
- package/esm2022/lib/common/pipes/locale-date.pipe.mjs +45 -0
- package/esm2022/lib/common/pipes/locale-number.pipe.mjs +115 -0
- package/esm2022/lib/common/pipes/safe-html.pipe.mjs +44 -0
- package/esm2022/lib/common/services/native-notifications.interface.mjs +2 -0
- package/esm2022/lib/common/services/native-notifications.mjs +40 -0
- package/esm2022/lib/model/dms-object.interface.mjs +2 -0
- package/esm2022/lib/model/dms-object.model.mjs +79 -0
- package/esm2022/lib/model/object-flavor.interface.mjs +2 -0
- package/esm2022/lib/model/range-value.interface.mjs +2 -0
- package/esm2022/lib/model/yuv-error.model.mjs +37 -0
- package/esm2022/lib/model/yuv-user.model.mjs +38 -0
- package/esm2022/lib/service/audit/audit.interface.mjs +2 -0
- package/esm2022/lib/service/audit/audit.service.mjs +135 -0
- package/esm2022/lib/service/auth/auth.interceptor.mjs +50 -0
- package/esm2022/lib/service/auth/auth.interface.mjs +7 -0
- package/esm2022/lib/service/auth/auth.service.mjs +130 -0
- package/esm2022/lib/service/auth/oidc.service.mjs +81 -0
- package/esm2022/lib/service/backend/api.enum.mjs +11 -0
- package/esm2022/lib/service/backend/backend.interface.mjs +2 -0
- package/esm2022/lib/service/backend/backend.service.mjs +206 -0
- package/esm2022/lib/service/bpm/bpm.interface.mjs +8 -0
- package/esm2022/lib/service/bpm/bpm.service.mjs +51 -0
- package/esm2022/lib/service/cache/app-cache.service.mjs +51 -0
- package/esm2022/lib/service/catalog/catalog.interface.mjs +2 -0
- package/esm2022/lib/service/catalog/catalog.service.mjs +13 -0
- package/esm2022/lib/service/clipboard/clipboard.interface.mjs +2 -0
- package/esm2022/lib/service/clipboard/clipboard.service.mjs +90 -0
- package/esm2022/lib/service/config/config.interface.mjs +6 -0
- package/esm2022/lib/service/config/config.service.mjs +115 -0
- package/esm2022/lib/service/config/core-config.mjs +20 -0
- package/esm2022/lib/service/config/core-config.tokens.mjs +9 -0
- package/esm2022/lib/service/connection/connection.service.mjs +36 -0
- package/esm2022/lib/service/connection/offline.interceptor.mjs +28 -0
- package/esm2022/lib/service/core-init/core-init.service.mjs +29 -0
- package/esm2022/lib/service/core-init/missing-translation-handler.mjs +10 -0
- package/esm2022/lib/service/core-init/translate-json-loader.mjs +117 -0
- package/esm2022/lib/service/device/device.interface.mjs +6 -0
- package/esm2022/lib/service/device/device.service.mjs +144 -0
- package/esm2022/lib/service/dms/dms.service.interface.mjs +2 -0
- package/esm2022/lib/service/dms/dms.service.mjs +440 -0
- package/esm2022/lib/service/event/event.interface.mjs +2 -0
- package/esm2022/lib/service/event/event.service.mjs +38 -0
- package/esm2022/lib/service/event/events.mjs +14 -0
- package/esm2022/lib/service/idm/idm.interface.mjs +2 -0
- package/esm2022/lib/service/idm/idm.service.mjs +34 -0
- package/esm2022/lib/service/logger/logger-console.service.mjs +73 -0
- package/esm2022/lib/service/logger/logger.interface.mjs +2 -0
- package/esm2022/lib/service/logger/logger.mjs +27 -0
- package/esm2022/lib/service/notification/notification.service.mjs +131 -0
- package/esm2022/lib/service/object-config/object-config.interface.mjs +2 -0
- package/esm2022/lib/service/object-config/object-config.service.mjs +229 -0
- package/esm2022/lib/service/pending-changes/pending-changes-component.interface.mjs +5 -0
- package/esm2022/lib/service/pending-changes/pending-changes-guard.service.mjs +25 -0
- package/esm2022/lib/service/pending-changes/pending-changes.service.mjs +123 -0
- package/esm2022/lib/service/prediction/prediction.interface.mjs +2 -0
- package/esm2022/lib/service/prediction/prediction.service.mjs +60 -0
- package/esm2022/lib/service/search/search.service.interface.mjs +39 -0
- package/esm2022/lib/service/search/search.service.mjs +178 -0
- package/esm2022/lib/service/session-storage/session-storage.service.mjs +50 -0
- package/esm2022/lib/service/system/object-form.interface.mjs +2 -0
- package/esm2022/lib/service/system/system.enum.mjs +179 -0
- package/esm2022/lib/service/system/system.interface.mjs +2 -0
- package/esm2022/lib/service/system/system.service.mjs +597 -0
- package/esm2022/lib/service/upload/upload.interface.mjs +2 -0
- package/esm2022/lib/service/upload/upload.service.mjs +228 -0
- package/esm2022/lib/service/user/user.service.mjs +211 -0
- package/esm2022/lib/util/utils.helper.enum.mjs +15 -0
- package/esm2022/lib/util/utils.mjs +373 -0
- package/esm2022/yuuvis-client-core.mjs +5 -0
- package/fesm2022/yuuvis-client-core.mjs +4775 -0
- package/fesm2022/yuuvis-client-core.mjs.map +1 -0
- package/index.d.ts +61 -0
- package/lib/client-core.module.d.ts +20 -0
- package/lib/client-core.shared.module.d.ts +10 -0
- package/lib/common/pipes/filesize.pipe.d.ts +18 -0
- package/lib/common/pipes/index.d.ts +5 -0
- package/lib/common/pipes/keys.pipe.d.ts +10 -0
- package/lib/common/pipes/locale-date.pipe.d.ts +12 -0
- package/lib/common/pipes/locale-number.pipe.d.ts +47 -0
- package/lib/common/pipes/safe-html.pipe.d.ts +28 -0
- package/lib/common/services/native-notifications.d.ts +8 -0
- package/lib/common/services/native-notifications.interface.d.ts +5 -0
- package/lib/model/dms-object.interface.d.ts +16 -0
- package/lib/model/dms-object.model.d.ts +26 -0
- package/lib/model/object-flavor.interface.d.ts +30 -0
- package/lib/model/range-value.interface.d.ts +9 -0
- package/lib/model/yuv-error.model.d.ts +18 -0
- package/lib/model/yuv-user.model.d.ts +44 -0
- package/lib/service/audit/audit.interface.d.ts +47 -0
- package/lib/service/audit/audit.service.d.ts +35 -0
- package/lib/service/auth/auth.interceptor.d.ts +12 -0
- package/lib/service/auth/auth.interface.d.ts +34 -0
- package/lib/service/auth/auth.service.d.ts +50 -0
- package/lib/service/auth/oidc.service.d.ts +16 -0
- package/lib/service/backend/api.enum.d.ts +7 -0
- package/lib/service/backend/backend.interface.d.ts +29 -0
- package/lib/service/backend/backend.service.d.ts +118 -0
- package/lib/service/bpm/bpm.interface.d.ts +86 -0
- package/lib/service/bpm/bpm.service.d.ts +19 -0
- package/lib/service/cache/app-cache.service.d.ts +18 -0
- package/lib/service/catalog/catalog.interface.d.ts +12 -0
- package/lib/service/catalog/catalog.service.d.ts +5 -0
- package/lib/service/clipboard/clipboard.interface.d.ts +11 -0
- package/lib/service/clipboard/clipboard.service.d.ts +23 -0
- package/lib/service/config/config.interface.d.ts +34 -0
- package/lib/service/config/config.service.d.ts +45 -0
- package/lib/service/config/core-config.d.ts +14 -0
- package/lib/service/config/core-config.tokens.d.ts +7 -0
- package/lib/service/connection/connection.service.d.ts +25 -0
- package/lib/service/connection/offline.interceptor.d.ts +15 -0
- package/lib/service/core-init/core-init.service.d.ts +11 -0
- package/lib/service/core-init/missing-translation-handler.d.ts +8 -0
- package/lib/service/core-init/translate-json-loader.d.ts +20 -0
- package/lib/service/device/device.interface.d.ts +15 -0
- package/lib/service/device/device.service.d.ts +54 -0
- package/lib/service/dms/dms.service.d.ts +153 -0
- package/lib/service/dms/dms.service.interface.d.ts +59 -0
- package/lib/service/event/event.interface.d.ts +13 -0
- package/lib/service/event/event.service.d.ts +23 -0
- package/lib/service/event/events.d.ts +12 -0
- package/lib/service/idm/idm.interface.d.ts +5 -0
- package/lib/service/idm/idm.service.d.ts +9 -0
- package/lib/service/logger/logger-console.service.d.ts +20 -0
- package/lib/service/logger/logger.d.ts +17 -0
- package/lib/service/logger/logger.interface.d.ts +10 -0
- package/lib/service/notification/notification.service.d.ts +71 -0
- package/lib/service/object-config/object-config.interface.d.ts +62 -0
- package/lib/service/object-config/object-config.service.d.ts +38 -0
- package/lib/service/pending-changes/pending-changes-component.interface.d.ts +6 -0
- package/lib/service/pending-changes/pending-changes-guard.service.d.ts +14 -0
- package/lib/service/pending-changes/pending-changes.service.d.ts +57 -0
- package/lib/service/prediction/prediction.interface.d.ts +18 -0
- package/lib/service/prediction/prediction.service.d.ts +15 -0
- package/lib/service/search/search.service.d.ts +46 -0
- package/lib/service/search/search.service.interface.d.ts +119 -0
- package/lib/service/session-storage/session-storage.service.d.ts +15 -0
- package/lib/service/system/object-form.interface.d.ts +46 -0
- package/lib/service/system/system.enum.d.ts +141 -0
- package/lib/service/system/system.interface.d.ts +146 -0
- package/lib/service/system/system.service.d.ts +168 -0
- package/lib/service/upload/upload.interface.d.ts +55 -0
- package/lib/service/upload/upload.service.d.ts +34 -0
- package/lib/service/user/user.service.d.ts +69 -0
- package/lib/util/utils.d.ts +118 -0
- package/lib/util/utils.helper.enum.d.ts +13 -0
- package/package.json +33 -0
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
import { inject, Injectable } from '@angular/core';
|
|
2
|
+
import { DeviceDetectorService } from 'ngx-device-detector';
|
|
3
|
+
import { debounceTime, fromEvent, ReplaySubject } from 'rxjs';
|
|
4
|
+
import { DeviceScreenOrientation } from './device.interface';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
/**
|
|
7
|
+
* This service is used to adapt styles and designs of the client to
|
|
8
|
+
* different devices and screen sizes.
|
|
9
|
+
*
|
|
10
|
+
* Using `screenChange$` observable you are able to monitor changes to
|
|
11
|
+
* the screen size and act upon it.
|
|
12
|
+
*
|
|
13
|
+
* This service will also adds attributes to the body tag that reflect the
|
|
14
|
+
* current screen/device state. This way you can apply secific styles in your
|
|
15
|
+
* css files for different screen resolutions and orientations.
|
|
16
|
+
*
|
|
17
|
+
* Attributes applied to the body tag are:
|
|
18
|
+
*
|
|
19
|
+
* - `data-screen` - [s, m, l, xl] - for different screen sizes
|
|
20
|
+
* (s: for mobile phone like screen sizes, m: for tablet like screen
|
|
21
|
+
* sizes, 'l': for desktop like screen sizes, 'xl': for screen sizes exceeding
|
|
22
|
+
* the desktop screen size).
|
|
23
|
+
*
|
|
24
|
+
* - `data-orientation` - [portrait, landscape] - for the current screen orientation
|
|
25
|
+
*
|
|
26
|
+
* - `data-touch-enabled` - [true] - if the device has touch capabilities (won't be added if the device doesn't have touch capabilities)
|
|
27
|
+
*
|
|
28
|
+
* ```html
|
|
29
|
+
* <body data-screen-size="s" data-screen-orientation="portrait" data-touch-enabled="true">
|
|
30
|
+
* ...
|
|
31
|
+
* </body>
|
|
32
|
+
* ```
|
|
33
|
+
*/
|
|
34
|
+
export class DeviceService {
|
|
35
|
+
#deviceDetectorService;
|
|
36
|
+
#upperScreenBoundary;
|
|
37
|
+
#resize$;
|
|
38
|
+
#screen;
|
|
39
|
+
#screenSource;
|
|
40
|
+
constructor() {
|
|
41
|
+
this.#deviceDetectorService = inject(DeviceDetectorService);
|
|
42
|
+
this.#upperScreenBoundary = {
|
|
43
|
+
small: 600,
|
|
44
|
+
mediumPortrait: 900,
|
|
45
|
+
mediumLandscape: 1200,
|
|
46
|
+
large: 1800
|
|
47
|
+
};
|
|
48
|
+
this.#resize$ = fromEvent(window, 'resize').pipe(debounceTime(this.#getDebounceTime()));
|
|
49
|
+
this.#screenSource = new ReplaySubject(1);
|
|
50
|
+
this.screenChange$ = this.#screenSource.asObservable();
|
|
51
|
+
/**
|
|
52
|
+
* if the device is a mobile device (android / iPhone / windows-phone etc)
|
|
53
|
+
*/
|
|
54
|
+
this.isMobile = this.#deviceDetectorService.isMobile();
|
|
55
|
+
/**
|
|
56
|
+
* if the device us a tablet (iPad etc)
|
|
57
|
+
*/
|
|
58
|
+
this.isTablet = this.#deviceDetectorService.isTablet();
|
|
59
|
+
/**
|
|
60
|
+
* if the app is running on a Desktop browser
|
|
61
|
+
*/
|
|
62
|
+
this.isDesktop = this.#deviceDetectorService.isDesktop();
|
|
63
|
+
this.info = this.#deviceDetectorService.getDeviceInfo();
|
|
64
|
+
this.isTouchEnabled = this.#isTouchEnabled();
|
|
65
|
+
this.#resize$.subscribe((e) => {
|
|
66
|
+
this.#setScreen();
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
init() {
|
|
70
|
+
this.#setScreen();
|
|
71
|
+
}
|
|
72
|
+
#isTouchEnabled() {
|
|
73
|
+
return 'ontouchstart' in window || navigator.maxTouchPoints > 0;
|
|
74
|
+
}
|
|
75
|
+
#setScreen() {
|
|
76
|
+
const bounds = {
|
|
77
|
+
width: window.innerWidth,
|
|
78
|
+
height: window.innerHeight
|
|
79
|
+
};
|
|
80
|
+
let orientation = bounds.width >= bounds.height ? DeviceScreenOrientation.LANDSCAPE : DeviceScreenOrientation.PORTRAIT;
|
|
81
|
+
if (this.isMobile && window.screen['orientation']) {
|
|
82
|
+
const screenOrientation = window.screen['orientation'].type;
|
|
83
|
+
if (screenOrientation === 'landscape-primary' || screenOrientation === 'landscape-secondary') {
|
|
84
|
+
orientation = DeviceScreenOrientation.LANDSCAPE;
|
|
85
|
+
}
|
|
86
|
+
else if (screenOrientation === 'portrait-primary' || screenOrientation === 'portrait-secondary') {
|
|
87
|
+
orientation = DeviceScreenOrientation.PORTRAIT;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
this.#screen = {
|
|
91
|
+
size: this.#getScreenSize(bounds, orientation),
|
|
92
|
+
orientation,
|
|
93
|
+
width: bounds.width,
|
|
94
|
+
height: bounds.height
|
|
95
|
+
};
|
|
96
|
+
this.#screenSource.next(this.#screen);
|
|
97
|
+
this.#setupDOM(this.#screen);
|
|
98
|
+
// force change detection because resize will not be recognized by Angular in some cases
|
|
99
|
+
// TODO: check: causes recursive ticks in some cases ...
|
|
100
|
+
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
101
|
+
setTimeout(() => { }, 0);
|
|
102
|
+
}
|
|
103
|
+
#setupDOM(screen) {
|
|
104
|
+
const body = document.querySelector('body');
|
|
105
|
+
body.setAttribute('data-screen-size', screen.size);
|
|
106
|
+
body.setAttribute('data-screen-orientation', screen.orientation);
|
|
107
|
+
if (this.isTouchEnabled)
|
|
108
|
+
body.setAttribute('data-touch-enabled', 'true');
|
|
109
|
+
else
|
|
110
|
+
body.removeAttribute('data-touch-enabled');
|
|
111
|
+
}
|
|
112
|
+
#getScreenSize(bounds, orientation) {
|
|
113
|
+
if (this.#isBelow(this.#upperScreenBoundary.small, bounds)) {
|
|
114
|
+
return 's';
|
|
115
|
+
}
|
|
116
|
+
else if (this.#isBelow(orientation === 'landscape' ? this.#upperScreenBoundary.mediumLandscape : this.#upperScreenBoundary.mediumPortrait, bounds)) {
|
|
117
|
+
return 'm';
|
|
118
|
+
}
|
|
119
|
+
else if (this.#isBelow(this.#upperScreenBoundary.large, bounds)) {
|
|
120
|
+
return 'l';
|
|
121
|
+
}
|
|
122
|
+
else {
|
|
123
|
+
return 'xl';
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
#isBelow(size, bounds) {
|
|
127
|
+
const landscape = bounds.width < this.#upperScreenBoundary.large ? bounds.width >= bounds.height : false;
|
|
128
|
+
return (landscape && bounds.height < size) || (!landscape && bounds.width < size);
|
|
129
|
+
}
|
|
130
|
+
#getDebounceTime() {
|
|
131
|
+
// on mobile devices resize only happens when rotating the device or when
|
|
132
|
+
// keyboard appears, so we dont't need to debounce
|
|
133
|
+
return this.isMobile ? 0 : 500;
|
|
134
|
+
}
|
|
135
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DeviceService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
136
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DeviceService, providedIn: 'root' }); }
|
|
137
|
+
}
|
|
138
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DeviceService, decorators: [{
|
|
139
|
+
type: Injectable,
|
|
140
|
+
args: [{
|
|
141
|
+
providedIn: 'root'
|
|
142
|
+
}]
|
|
143
|
+
}], ctorParameters: () => [] });
|
|
144
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV2aWNlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3l1dXZpcy9jbGllbnQtY29yZS9zcmMvbGliL3NlcnZpY2UvZGV2aWNlL2RldmljZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxxQkFBcUIsRUFBYyxNQUFNLHFCQUFxQixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFjLGFBQWEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxRSxPQUFPLEVBQW9DLHVCQUF1QixFQUFjLE1BQU0sb0JBQW9CLENBQUM7O0FBQzNHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EyQkc7QUFJSCxNQUFNLE9BQU8sYUFBYTtJQUN4QixzQkFBc0IsQ0FBaUM7SUFFdkQsb0JBQW9CLENBS2xCO0lBRUYsUUFBUSxDQUEyRTtJQUNuRixPQUFPLENBQWdCO0lBQ3ZCLGFBQWEsQ0FBc0M7SUFrQm5EO1FBN0JBLDJCQUFzQixHQUFHLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBRXZELHlCQUFvQixHQUFHO1lBQ3JCLEtBQUssRUFBRSxHQUFHO1lBQ1YsY0FBYyxFQUFFLEdBQUc7WUFDbkIsZUFBZSxFQUFFLElBQUk7WUFDckIsS0FBSyxFQUFFLElBQUk7U0FDWixDQUFDO1FBRUYsYUFBUSxHQUFHLFNBQVMsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFFbkYsa0JBQWEsR0FBRyxJQUFJLGFBQWEsQ0FBZSxDQUFDLENBQUMsQ0FBQztRQUNuRCxrQkFBYSxHQUE2QixJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksRUFBRSxDQUFD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LE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7SUFDakMsQ0FBQzsrR0F4R1UsYUFBYTttSEFBYixhQUFhLGNBRlosTUFBTTs7NEZBRVAsYUFBYTtrQkFIekIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERldmljZURldGVjdG9yU2VydmljZSwgRGV2aWNlSW5mbyB9IGZyb20gJ25neC1kZXZpY2UtZGV0ZWN0b3InO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBmcm9tRXZlbnQsIE9ic2VydmFibGUsIFJlcGxheVN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IERldmljZVNjcmVlbiwgRGV2aWNlU2NyZWVuQm91bmRzLCBEZXZpY2VTY3JlZW5PcmllbnRhdGlvbiwgU2NyZWVuU2l6ZSB9IGZyb20gJy4vZGV2aWNlLmludGVyZmFjZSc7XG4vKipcbiAqIFRoaXMgc2VydmljZSBpcyB1c2VkIHRvIGFkYXB0IHN0eWxlcyBhbmQgZGVzaWducyBvZiB0aGUgY2xpZW50IHRvIFxuICogZGlmZmVyZW50IGRldmljZXMgYW5kIHNjcmVlbiBzaXplcy5cbiAqIFxuICogVXNpbmcgYHNjcmVlbkNoYW5nZSRgIG9ic2VydmFibGUgeW91IGFyZSBhYmxlIHRvIG1vbml0b3IgY2hhbmdlcyB0byBcbiAqIHRoZSBzY3JlZW4gc2l6ZSBhbmQgYWN0IHVwb24gaXQuXG4gKlxuICogVGhpcyBzZXJ2aWNlIHdpbGwgYWxzbyBhZGRzIGF0dHJpYnV0ZXMgdG8gdGhlIGJvZHkgdGFnIHRoYXQgcmVmbGVjdCB0aGUgXG4gKiBjdXJyZW50IHNjcmVlbi9kZXZpY2Ugc3RhdGUuIFRoaXMgd2F5IHlvdSBjYW4gYXBwbHkgc2VjaWZpYyBzdHlsZXMgaW4geW91ciBcbiAqIGNzcyBmaWxlcyBmb3IgZGlmZmVyZW50IHNjcmVlbiByZXNvbHV0aW9ucyBhbmQgb3JpZW50YXRpb25zLlxuICpcbiAqIEF0dHJpYnV0ZXMgYXBwbGllZCB0byB0aGUgYm9keSB0YWcgYXJlOlxuICpcbiAqIC0gYGRhdGEtc2NyZWVuYCAtIFtzLCBtLCBsLCB4bF0gLSBmb3IgZGlmZmVyZW50IHNjcmVlbiBzaXplcyBcbiAqIChzOiBmb3IgbW9iaWxlIHBob25lIGxpa2Ugc2NyZWVuIHNpemVzLCBtOiBmb3IgdGFibGV0IGxpa2Ugc2NyZWVuIFxuICogc2l6ZXMsICdsJzogZm9yIGRlc2t0b3AgbGlrZSBzY3JlZW4gc2l6ZXMsICd4bCc6IGZvciBzY3JlZW4gc2l6ZXMgZXhjZWVkaW5nIFxuICogdGhlIGRlc2t0b3Agc2NyZWVuIHNpemUpLiBcbiAqXG4gKiAtIGBkYXRhLW9yaWVudGF0aW9uYCAtIFtwb3J0cmFpdCwgbGFuZHNjYXBlXSAtIGZvciB0aGUgY3VycmVudCBzY3JlZW4gb3JpZW50YXRpb25cbiAqIFxuICogLSBgZGF0YS10b3VjaC1lbmFibGVkYCAtIFt0cnVlXSAtIGlmIHRoZSBkZXZpY2UgaGFzIHRvdWNoIGNhcGFiaWxpdGllcyAod29uJ3QgYmUgYWRkZWQgaWYgdGhlIGRldmljZSBkb2Vzbid0IGhhdmUgdG91Y2ggY2FwYWJpbGl0aWVzKSAgXG4gKiBcbiAqIGBgYGh0bWxcbiAqIDxib2R5IGRhdGEtc2NyZWVuLXNpemU9XCJzXCIgZGF0YS1zY3JlZW4tb3JpZW50YXRpb249XCJwb3J0cmFpdFwiIGRhdGEtdG91Y2gtZW5hYmxlZD1cInRydWVcIj5cbiAqIC4uLlxuICogPC9ib2R5PlxuICogYGBgXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIERldmljZVNlcnZpY2Uge1xuICAjZGV2aWNlRGV0ZWN0b3JTZXJ2aWNlID0gaW5qZWN0KERldmljZURldGVjdG9yU2VydmljZSk7XG5cbiAgI3VwcGVyU2NyZWVuQm91bmRhcnkgPSB7XG4gICAgc21hbGw6IDYwMCxcbiAgICBtZWRpdW1Qb3J0cmFpdDogOTAwLFxuICAgIG1lZGl1bUxhbmRzY2FwZTogMTIwMCxcbiAgICBsYXJnZTogMTgwMFxuICB9O1xuXG4gICNyZXNpemUkID0gZnJvbUV2ZW50KHdpbmRvdywgJ3Jlc2l6ZScpLnBpcGUoZGVib3VuY2VUaW1lKHRoaXMuI2dldERlYm91bmNlVGltZSgpKSk7XG4gICNzY3JlZW4/OiBEZXZpY2VTY3JlZW47XG4gICNzY3JlZW5Tb3VyY2UgPSBuZXcgUmVwbGF5U3ViamVjdDxEZXZpY2VTY3JlZW4+KDEpO1xuICBzY3JlZW5DaGFuZ2UkOiBPYnNlcnZhYmxlPERldmljZVNjcmVlbj4gPSB0aGlzLiNzY3JlZW5Tb3VyY2UuYXNPYnNlcnZhYmxlKCk7XG5cbiAgLyoqXG4gICAqIGlmIHRoZSBkZXZpY2UgaXMgYSBtb2JpbGUgZGV2aWNlIChhbmRyb2lkIC8gaVBob25lIC8gd2luZG93cy1waG9uZSBldGMpXG4gICAqL1xuICBpc01vYmlsZTogYm9vbGVhbiA9IHRoaXMuI2RldmljZURldGVjdG9yU2VydmljZS5pc01vYmlsZSgpO1xuICAvKipcbiAgICogIGlmIHRoZSBkZXZpY2UgdXMgYSB0YWJsZXQgKGlQYWQgZXRjKVxuICAgKi9cbiAgaXNUYWJsZXQ6IGJvb2xlYW4gPSB0aGlzLiNkZXZpY2VEZXRlY3RvclNlcnZpY2UuaXNUYWJsZXQoKTtcbiAgLyoqXG4gICAqIGlmIHRoZSBhcHAgaXMgcnVubmluZyBvbiBhIERlc2t0b3AgYnJvd3NlclxuICAgKi9cbiAgaXNEZXNrdG9wOiBib29sZWFuID0gdGhpcy4jZGV2aWNlRGV0ZWN0b3JTZXJ2aWNlLmlzRGVza3RvcCgpO1xuICBpbmZvPzogRGV2aWNlSW5mbyA9IHRoaXMuI2RldmljZURldGVjdG9yU2VydmljZS5nZXREZXZpY2VJbmZvKCk7XG4gIGlzVG91Y2hFbmFibGVkID0gdGhpcy4jaXNUb3VjaEVuYWJsZWQoKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLiNyZXNpemUkLnN1YnNjcmliZSgoZTogRXZlbnQpID0+IHtcbiAgICAgIHRoaXMuI3NldFNjcmVlbigpO1xuICAgIH0pO1xuICB9XG5cbiAgaW5pdCgpIHtcbiAgICB0aGlzLiNzZXRTY3JlZW4oKTtcbiAgfVxuXG4gICNpc1RvdWNoRW5hYmxlZCgpIHtcbiAgICByZXR1cm4gJ29udG91Y2hzdGFydCcgaW4gd2luZG93IHx8IG5hdmlnYXRvci5tYXhUb3VjaFBvaW50cyA+IDA7XG4gIH1cblxuICAjc2V0U2NyZWVuKCk6IHZvaWQge1xuICAgIGNvbnN0IGJvdW5kczogRGV2aWNlU2NyZWVuQm91bmRzID0ge1xuICAgICAgd2lkdGg6IHdpbmRvdy5pbm5lcldpZHRoLFxuICAgICAgaGVpZ2h0OiB3aW5kb3cuaW5uZXJIZWlnaHRcbiAgICB9O1xuICAgIGxldCBvcmllbnRhdGlvbjogRGV2aWNlU2NyZWVuT3JpZW50YXRpb24gPSBib3VuZHMud2lkdGggPj0gYm91bmRzLmhlaWdodCA/IERldmljZVNjcmVlbk9yaWVudGF0aW9uLkxBTkRTQ0FQRSA6IERldmljZVNjcmVlbk9yaWVudGF0aW9uLlBPUlRSQUlUO1xuXG4gICAgaWYgKHRoaXMuaXNNb2JpbGUgJiYgd2luZG93LnNjcmVlblsnb3JpZW50YXRpb24nXSkge1xuICAgICAgY29uc3Qgc2NyZWVuT3JpZW50YXRpb24gPSB3aW5kb3cuc2NyZWVuWydvcmllbnRhdGlvbiddLnR5cGU7XG4gICAgICBpZiAoc2NyZWVuT3JpZW50YXRpb24gPT09ICdsYW5kc2NhcGUtcHJpbWFyeScgfHwgc2NyZWVuT3JpZW50YXRpb24gPT09ICdsYW5kc2NhcGUtc2Vjb25kYXJ5Jykge1xuICAgICAgICBvcmllbnRhdGlvbiA9IERldmljZVNjcmVlbk9yaWVudGF0aW9uLkxBTkRTQ0FQRTtcbiAgICAgIH0gZWxzZSBpZiAoc2NyZWVuT3JpZW50YXRpb24gPT09ICdwb3J0cmFpdC1wcmltYXJ5JyB8fCBzY3JlZW5PcmllbnRhdGlvbiA9PT0gJ3BvcnRyYWl0LXNlY29uZGFyeScpIHtcbiAgICAgICAgb3JpZW50YXRpb24gPSBEZXZpY2VTY3JlZW5PcmllbnRhdGlvbi5QT1JUUkFJVDtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy4jc2NyZWVuID0ge1xuICAgICAgc2l6ZTogdGhpcy4jZ2V0U2NyZWVuU2l6ZShib3VuZHMsIG9yaWVudGF0aW9uKSxcbiAgICAgIG9yaWVudGF0aW9uLFxuICAgICAgd2lkdGg6IGJvdW5kcy53aWR0aCxcbiAgICAgIGhlaWdodDogYm91bmRzLmhlaWdodFxuICAgIH07XG4gICAgdGhpcy4jc2NyZWVuU291cmNlLm5leHQodGhpcy4jc2NyZWVuKTtcbiAgICB0aGlzLiNzZXR1cERPTSh0aGlzLiNzY3JlZW4pO1xuICAgIC8vIGZvcmNlIGNoYW5nZSBkZXRlY3Rpb24gYmVjYXVzZSByZXNpemUgd2lsbCBub3QgYmUgcmVjb2duaXplZCBieSBBbmd1bGFyIGluIHNvbWUgY2FzZXNcbiAgICAvLyBUT0RPOiBjaGVjazogY2F1c2VzIHJlY3Vyc2l2ZSB0aWNrcyBpbiBzb21lIGNhc2VzIC4uLlxuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge30sIDApO1xuXG4gIH1cblxuICAjc2V0dXBET00oc2NyZWVuOiBEZXZpY2VTY3JlZW4pIHtcbiAgICBjb25zdCBib2R5OiBIVE1MQm9keUVsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdib2R5JykgYXMgSFRNTEJvZHlFbGVtZW50O1xuICAgIGJvZHkuc2V0QXR0cmlidXRlKCdkYXRhLXNjcmVlbi1zaXplJywgc2NyZWVuLnNpemUpO1xuICAgIGJvZHkuc2V0QXR0cmlidXRlKCdkYXRhLXNjcmVlbi1vcmllbnRhdGlvbicsIHNjcmVlbi5vcmllbnRhdGlvbik7XG4gICAgaWYgKHRoaXMuaXNUb3VjaEVuYWJsZWQpIGJvZHkuc2V0QXR0cmlidXRlKCdkYXRhLXRvdWNoLWVuYWJsZWQnLCAndHJ1ZScpO1xuICAgIGVsc2UgYm9keS5yZW1vdmVBdHRyaWJ1dGUoJ2RhdGEtdG91Y2gtZW5hYmxlZCcpO1xuICB9XG5cbiAgI2dldFNjcmVlblNpemUoYm91bmRzOiBEZXZpY2VTY3JlZW5Cb3VuZHMsIG9yaWVudGF0aW9uOiBEZXZpY2VTY3JlZW5PcmllbnRhdGlvbik6IFNjcmVlblNpemUge1xuICAgIGlmICh0aGlzLiNpc0JlbG93KHRoaXMuI3VwcGVyU2NyZWVuQm91bmRhcnkuc21hbGwsIGJvdW5kcykpIHtcbiAgICAgIHJldHVybiAncyc7XG4gICAgfSBlbHNlIGlmICh0aGlzLiNpc0JlbG93KG9yaWVudGF0aW9uID09PSAnbGFuZHNjYXBlJyA/IHRoaXMuI3VwcGVyU2NyZWVuQm91bmRhcnkubWVkaXVtTGFuZHNjYXBlIDogdGhpcy4jdXBwZXJTY3JlZW5Cb3VuZGFyeS5tZWRpdW1Qb3J0cmFpdCwgYm91bmRzKSkge1xuICAgICAgcmV0dXJuICdtJztcbiAgICB9IGVsc2UgaWYgKHRoaXMuI2lzQmVsb3codGhpcy4jdXBwZXJTY3JlZW5Cb3VuZGFyeS5sYXJnZSwgYm91bmRzKSkge1xuICAgICAgcmV0dXJuICdsJztcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuICd4bCc7XG4gICAgfVxuICB9XG5cbiAgI2lzQmVsb3coc2l6ZTogbnVtYmVyLCBib3VuZHM6IERldmljZVNjcmVlbkJvdW5kcyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGxhbmRzY2FwZSA9IGJvdW5kcy53aWR0aCA8IHRoaXMuI3VwcGVyU2NyZWVuQm91bmRhcnkubGFyZ2UgPyBib3VuZHMud2lkdGggPj0gYm91bmRzLmhlaWdodCA6IGZhbHNlO1xuICAgIHJldHVybiAobGFuZHNjYXBlICYmIGJvdW5kcy5oZWlnaHQgPCBzaXplKSB8fCAoIWxhbmRzY2FwZSAmJiBib3VuZHMud2lkdGggPCBzaXplKTtcbiAgfVxuXG4gICNnZXREZWJvdW5jZVRpbWUoKSB7XG4gICAgLy8gb24gbW9iaWxlIGRldmljZXMgcmVzaXplIG9ubHkgaGFwcGVucyB3aGVuIHJvdGF0aW5nIHRoZSBkZXZpY2Ugb3Igd2hlblxuICAgIC8vIGtleWJvYXJkIGFwcGVhcnMsIHNvIHdlIGRvbnQndCBuZWVkIHRvIGRlYm91bmNlXG4gICAgcmV0dXJuIHRoaXMuaXNNb2JpbGUgPyAwIDogNTAwO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG1zLnNlcnZpY2UuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy95dXV2aXMvY2xpZW50LWNvcmUvc3JjL2xpYi9zZXJ2aWNlL2Rtcy9kbXMuc2VydmljZS5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgT2JqZWN0RGVsZXRlT3B0aW9ucyB7XG4gIC8vIHdoZXRoZXIgdG8gZW1pdCB0aGUgcmVzdWx0IG9mIHRoZSBkZWxldGUgb3BlcmF0aW9uIGludG8gdGhlIGFwcC4gSWYgc2V0IHRvIHRydWUsXG4gIC8vIHRoZSByZXN1bHQgd2lsbCBub3QgYmUgZW1pdHRlZCB2aWEgdGhlIGBvYmplY3REZWxldGVkYCBldmVudFxuICBzaWxlbnQ/OiBib29sZWFuO1xuICAvLyB3aGV0ZXIgdG8gd2FpdCBmb3IgdGhlIHNlYXJjaCBpbmRleCB0byBiZSBjb25zaXN0ZW50IGFmdGVyIHRoZSBkZWxldGUgb3BlcmF0aW9uXG4gIHdhaXRGb3JTZWFyY2hDb25zaXN0ZW5jeT86IGJvb2xlYW47XG4gIC8vIHdoZXRoZXIgdGhlIHdob2xlIGRlbGV0ZSBvcGVyYXRpb24gc2hvdWxkIGZhaWwgaWYgb25lIG9mIHRoZSBvYmplY3RzIGNvdWxkIG5vdCBiZSBkZWxldGVkXG4gIGdyZWVkeT86IGJvb2xlYW47XG59XG5leHBvcnQgaW50ZXJmYWNlIE9iamVjdERlbGV0ZVJlc3VsdCB7XG4gIC8vIElEIG9mIHRoZSBvYmplY3Qgc3VwcG9zZWQgdG8gYmUgZGVsZXRlZFxuICBpZDogc3RyaW5nO1xuICAvLyBwcm9wZXJ0aWVzIG9mIHRoZSBvYmplY3Qgc3VwcG9zZWQgdG8gYmUgZGVsZXRlZFxuICBwcm9wZXJ0aWVzPzogeyBba2V5OiBzdHJpbmddOiB7IHZhbHVlOiBhbnkgfSB9O1xuICAvLyBlcnJvciB0aGF0IG9jY3VyZWQgZHVyaW5nIHRoZSBkZWxldGUgb3BlcmF0aW9uXG4gIF9lcnJvcj86IE9iamVjdERlbGV0ZUVycm9yO1xufVxuZXhwb3J0IGludGVyZmFjZSBPYmplY3REZWxldGVFcnJvciB7XG4gIHN0YXR1czogbnVtYmVyO1xuICBtZXNzYWdlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgT2JqZWN0TW92ZU9wdGlvbnMge1xuICAvLyBJZiB0cnVlLCB0aGUgb2JzZXJ2YWJsZSB3aWxsIHJlc29sdmUgYWZ0ZXIgdGhlIHNlYXJjaCBpbmRleCBpcyB1cGRhdGVkIGFzIHdlbGxcbiAgd2FpdEZvclNlYXJjaENvbnNpc3RlbmN5PzogYm9vbGVhbjtcbiAgc2lsZW50PzogYm9vbGVhbjtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgT2JqZWN0Q29weU9wdGlvbnMge1xuICAvLyBJZiB0cnVlLCB0aGUgb2JzZXJ2YWJsZSB3aWxsIHJlc29sdmUgYWZ0ZXIgdGhlIHNlYXJjaCBpbmRleCBpcyB1cGRhdGVkIGFzIHdlbGxcbiAgd2FpdEZvclNlYXJjaENvbnNpc3RlbmN5PzogYm9vbGVhbjtcbn1cblxuLy8gaW50ZXJmYWNlcyBmb3IgaW50ZXJhY3Rpbmcgd2l0aCBDb3JlLUFQSVxuZXhwb3J0IGludGVyZmFjZSBDb3JlQXBpT2JqZWN0IHtcbiAgcHJvcGVydGllczogUmVjb3JkPHN0cmluZywgQ29yZUFwaU9iamVjdFByb3BlcnR5PjtcbiAgY29udGVudFN0cmVhbXM/OiBQYXJ0aWFsPENvbnRlbnRTdHJlYW0+W107XG59XG5leHBvcnQgaW50ZXJmYWNlIENvcmVBcGlPYmplY3RQcm9wZXJ0eSB7XG4gIHZhbHVlOiB1bmtub3duO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbnRlbnRTdHJlYW0ge1xuICBjb250ZW50U3RyZWFtSWQ6IHN0cmluZztcbiAgcmVwb3NpdG9yeUlkOiBzdHJpbmc7XG4gIGRpZ2VzdDogc3RyaW5nO1xuICBmaWxlTmFtZTogc3RyaW5nO1xuICBzaXplOiBudW1iZXI7XG4gIGFyY2hpdmVQYXRoPzogc3RyaW5nO1xuICByYW5nZT86IHN0cmluZztcbiAgbWltZVR5cGU6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb3JlQXBpQmF0Y2hSZXNwb25zZSB7XG4gIGhhc01vcmVJdGVtczogYm9vbGVhbjtcbiAgbnVtSXRlbXM6IG51bWJlcjtcbiAgb2JqZWN0czogQ29yZUFwaVJlc3BvbnNlW107XG4gIHRvdGFsTnVtSXRlbXM6IG51bWJlcjtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgQ29yZUFwaVJlc3BvbnNlIHtcbiAgcHJvcGVydGllczogUmVjb3JkPHN0cmluZywgQ29yZUFwaU9iamVjdFByb3BlcnR5PjtcbiAgY29udGVudFN0cmVhbXM/OiBDb250ZW50U3RyZWFtW107XG4gIG9wdGlvbnM6IHtcbiAgICAnc3lzdGVtOnJlc3BvbnNlJzoge1xuICAgICAgaHR0cFN0YXR1c0NvZGU6IG51bWJlcjtcbiAgICAgIHNlcnZpY2VFcnJvckNvZGU/OiBudW1iZXI7XG4gICAgICBtZXNzYWdlOiBzdHJpbmc7XG4gICAgfTtcbiAgfTtcbn1cbiJdfQ==
|