ngx-techlify-core 14.6.3-alpha-7 → 14.6.3-alpha-2
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/esm2020/lib/core/index.mjs +2 -1
- package/esm2020/lib/core/pusher.service.mjs +9 -9
- package/esm2020/lib/core/techlify-config.model.mjs +5 -1
- package/esm2020/lib/techlify-notifications/ngx-techlify-notifier/ngx-techlify-notifier.component.mjs +33 -15
- package/fesm2015/ngx-techlify-core.mjs +73 -52
- package/fesm2015/ngx-techlify-core.mjs.map +1 -1
- package/fesm2020/ngx-techlify-core.mjs +72 -51
- package/fesm2020/ngx-techlify-core.mjs.map +1 -1
- package/lib/core/index.d.ts +1 -0
- package/lib/core/pusher.service.d.ts +3 -1
- package/lib/core/techlify-config.model.d.ts +2 -0
- package/lib/techlify-notifications/ngx-techlify-notifier/ngx-techlify-notifier.component.d.ts +4 -2
- package/package.json +1 -1
|
@@ -18,5 +18,6 @@ export * from './storage.service';
|
|
|
18
18
|
export * from './techlify-config.model';
|
|
19
19
|
export * from './token.interceptor';
|
|
20
20
|
export * from './dataManager.service';
|
|
21
|
+
export * from './pusher.service';
|
|
21
22
|
export * from './filter.service';
|
|
22
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdGVjaGxpZnktY29yZS9zcmMvbGliL2NvcmUvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLHNCQUFzQixDQUFDO0FBRXJDLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxrQkFBa0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vc25hY2svc25hY2suY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vc25hY2svc25hY2subW9kdWxlJztcblxuZXhwb3J0ICogZnJvbSAnLi9hbGVydC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vYXBpLXByZWZpeC5pbnRlcmNlcHRvcic7XG5leHBvcnQgKiBmcm9tICcuL2F1dGhlbnRpY2F0aW9uLmd1YXJkJztcbmV4cG9ydCAqIGZyb20gJy4vYXV0aGVudGljYXRpb24uc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2NhY2hlLmludGVyY2VwdG9yJztcbmV4cG9ydCAqIGZyb20gJy4vY29uZmlnLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9jcmVkZW50aWFscy5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vZXJyb3ItaGFuZGxlci5pbnRlcmNlcHRvcic7XG5leHBvcnQgKiBmcm9tICcuL2Vycm9yLWhhbmRsZXIuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2Zvcm0tdmFsaWRhdG9yLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9odHRwLWNhY2hlLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9odHRwLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9sb2dnZXIuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3JvdXRlLXJldXNhYmxlLXN0cmF0ZWd5JztcbmV4cG9ydCAqIGZyb20gJy4vc3RvcmFnZS5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vdGVjaGxpZnktY29uZmlnLm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vdG9rZW4uaW50ZXJjZXB0b3InO1xuZXhwb3J0ICogZnJvbSAnLi9kYXRhTWFuYWdlci5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vcHVzaGVyLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9maWx0ZXIuc2VydmljZSc7XG4iXX0=
|
|
@@ -3,22 +3,22 @@ import Pusher from 'pusher-js';
|
|
|
3
3
|
import { BehaviorSubject } from 'rxjs';
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
5
5
|
import * as i1 from "./credentials.service";
|
|
6
|
+
import * as i2 from "./config.service";
|
|
6
7
|
export class PusherService {
|
|
7
|
-
constructor(credentialService) {
|
|
8
|
+
constructor(credentialService, configService) {
|
|
8
9
|
this.credentialService = credentialService;
|
|
10
|
+
this.configService = configService;
|
|
9
11
|
this.pusher = new BehaviorSubject(null);
|
|
10
12
|
this.initPusher();
|
|
11
13
|
}
|
|
12
14
|
initPusher() {
|
|
13
|
-
console.log('Init Pusher');
|
|
14
15
|
if (this.pusher.value) {
|
|
15
16
|
this.pusher.value.disconnect();
|
|
16
17
|
}
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
cluster: 'us2',
|
|
18
|
+
this.pusher.next(new Pusher(this.configService.getConfigsRaw().pusherAppKey, {
|
|
19
|
+
cluster: this.configService.getConfigsRaw().pusherAppCluster,
|
|
20
20
|
forceTLS: true,
|
|
21
|
-
authEndpoint: '
|
|
21
|
+
authEndpoint: this.configService.getApiUrl() + 'api/broadcasting/auth',
|
|
22
22
|
auth: {
|
|
23
23
|
headers: {
|
|
24
24
|
Authorization: 'Bearer ' + this.credentialService?.credentials?.token?.access_token
|
|
@@ -30,12 +30,12 @@ export class PusherService {
|
|
|
30
30
|
return this.pusher.asObservable();
|
|
31
31
|
}
|
|
32
32
|
}
|
|
33
|
-
PusherService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: PusherService, deps: [{ token: i1.CredentialsService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
33
|
+
PusherService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: PusherService, deps: [{ token: i1.CredentialsService }, { token: i2.ConfigService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
34
34
|
PusherService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: PusherService, providedIn: 'root' });
|
|
35
35
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: PusherService, decorators: [{
|
|
36
36
|
type: Injectable,
|
|
37
37
|
args: [{
|
|
38
38
|
providedIn: 'root'
|
|
39
39
|
}]
|
|
40
|
-
}], ctorParameters: function () { return [{ type: i1.CredentialsService }]; } });
|
|
41
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
40
|
+
}], ctorParameters: function () { return [{ type: i1.CredentialsService }, { type: i2.ConfigService }]; } });
|
|
41
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVzaGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdGVjaGxpZnktY29yZS9zcmMvbGliL2NvcmUvcHVzaGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLE1BQU0sTUFBTSxXQUFXLENBQUM7QUFDL0IsT0FBTyxFQUFFLGVBQWUsRUFBYyxNQUFNLE1BQU0sQ0FBQzs7OztBQU9uRCxNQUFNLE9BQU8sYUFBYTtJQUV4QixZQUNVLGlCQUFxQyxFQUNyQyxhQUE0QjtRQUQ1QixzQkFBaUIsR0FBakIsaUJBQWlCLENBQW9CO1FBQ3JDLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBSDlCLFdBQU0sR0FBRyxJQUFJLGVBQWUsQ0FBUyxJQUFJLENBQUMsQ0FBQztRQUtqRCxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDcEIsQ0FBQztJQUVELFVBQVU7UUFDUixJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFO1lBQ3JCLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFVBQVUsRUFBRSxDQUFDO1NBQ2hDO1FBQ0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxZQUFZLEVBQUU7WUFDM0UsT0FBTyxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxFQUFFLENBQUMsZ0JBQWdCO1lBQzVELFFBQVEsRUFBRSxJQUFJO1lBQ2QsWUFBWSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxFQUFFLEdBQUcsdUJBQXVCO1lBQ3RFLElBQUksRUFBRTtnQkFDSixPQUFPLEVBQUU7b0JBQ1AsYUFBYSxFQUFFLFNBQVMsR0FBRyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxZQUFZO2lCQUNwRjthQUNGO1NBQ0YsQ0FBQyxDQUFDLENBQUM7SUFDTixDQUFDO0lBRUQsU0FBUztRQUNQLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUNwQyxDQUFDOzswR0EzQlUsYUFBYTs4R0FBYixhQUFhLGNBRlosTUFBTTsyRkFFUCxhQUFhO2tCQUh6QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCBQdXNoZXIgZnJvbSAncHVzaGVyLWpzJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQ3JlZGVudGlhbHNTZXJ2aWNlIH0gZnJvbSAnLi9jcmVkZW50aWFscy5zZXJ2aWNlJztcbmltcG9ydCB7IENvbmZpZ1NlcnZpY2UgfSBmcm9tICcuL2NvbmZpZy5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgUHVzaGVyU2VydmljZSB7XG4gIHByaXZhdGUgcHVzaGVyID0gbmV3IEJlaGF2aW9yU3ViamVjdDxQdXNoZXI+KG51bGwpO1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNyZWRlbnRpYWxTZXJ2aWNlOiBDcmVkZW50aWFsc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb25maWdTZXJ2aWNlOiBDb25maWdTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMuaW5pdFB1c2hlcigpO1xuICB9XG5cbiAgaW5pdFB1c2hlcigpIHtcbiAgICBpZiAodGhpcy5wdXNoZXIudmFsdWUpIHtcbiAgICAgIHRoaXMucHVzaGVyLnZhbHVlLmRpc2Nvbm5lY3QoKTtcbiAgICB9XG4gICAgdGhpcy5wdXNoZXIubmV4dChuZXcgUHVzaGVyKHRoaXMuY29uZmlnU2VydmljZS5nZXRDb25maWdzUmF3KCkucHVzaGVyQXBwS2V5LCB7XG4gICAgICBjbHVzdGVyOiB0aGlzLmNvbmZpZ1NlcnZpY2UuZ2V0Q29uZmlnc1JhdygpLnB1c2hlckFwcENsdXN0ZXIsXG4gICAgICBmb3JjZVRMUzogdHJ1ZSxcbiAgICAgIGF1dGhFbmRwb2ludDogdGhpcy5jb25maWdTZXJ2aWNlLmdldEFwaVVybCgpICsgJ2FwaS9icm9hZGNhc3RpbmcvYXV0aCcsXG4gICAgICBhdXRoOiB7XG4gICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICBBdXRob3JpemF0aW9uOiAnQmVhcmVyICcgKyB0aGlzLmNyZWRlbnRpYWxTZXJ2aWNlPy5jcmVkZW50aWFscz8udG9rZW4/LmFjY2Vzc190b2tlblxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSkpO1xuICB9XG5cbiAgZ2V0UHVzaGVyKCk6IE9ic2VydmFibGU8UHVzaGVyPiB7XG4gICAgcmV0dXJuIHRoaXMucHVzaGVyLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG59Il19
|
|
@@ -12,6 +12,8 @@ export class TechlifyConfig {
|
|
|
12
12
|
this.authGrantType = '';
|
|
13
13
|
this.apiUrl = '';
|
|
14
14
|
this.isLogoutWhileApiGetsFailed = false;
|
|
15
|
+
this.pusherAppKey = '';
|
|
16
|
+
this.pusherAppCluster = '';
|
|
15
17
|
this.loadFromMap(data);
|
|
16
18
|
}
|
|
17
19
|
loadFromMap(data) {
|
|
@@ -23,6 +25,8 @@ export class TechlifyConfig {
|
|
|
23
25
|
this.storage = data?.storage;
|
|
24
26
|
this.rawConfigs = data;
|
|
25
27
|
this.isLogoutWhileApiGetsFailed = data?.isLogoutWhileApiGetsFailed;
|
|
28
|
+
this.pusherAppKey = data?.pusherAppKey;
|
|
29
|
+
this.pusherAppCluster = data?.pusherAppCluster;
|
|
26
30
|
}
|
|
27
31
|
}
|
|
28
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
32
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVjaGxpZnktY29uZmlnLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXRlY2hsaWZ5LWNvcmUvc3JjL2xpYi9jb3JlL3RlY2hsaWZ5LWNvbmZpZy5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7R0FLRztBQUNILE1BQU0sT0FBTyxjQUFjO0lBWXZCLFlBQVksSUFBUztRQVhyQixlQUFVLEdBQVcsRUFBRSxDQUFDO1FBQ3hCLGdCQUFXLEdBQVcsRUFBRSxDQUFDO1FBQ3pCLHFCQUFnQixHQUFXLEVBQUUsQ0FBQztRQUM5QixrQkFBYSxHQUFXLEVBQUUsQ0FBQztRQUMzQixXQUFNLEdBQVcsRUFBRSxDQUFDO1FBR3BCLCtCQUEwQixHQUFZLEtBQUssQ0FBQztRQUM1QyxpQkFBWSxHQUFXLEVBQUUsQ0FBQztRQUMxQixxQkFBZ0IsR0FBVyxFQUFFLENBQUM7UUFHMUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMzQixDQUFDO0lBRUQsV0FBVyxDQUFDLElBQVM7UUFDakIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO1FBQ2xDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztRQUNwQyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDO1FBQzlDLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQztRQUN4QyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDMUIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLEVBQUUsT0FBTyxDQUFDO1FBQzdCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1FBQ3ZCLElBQUksQ0FBQywwQkFBMEIsR0FBRyxJQUFJLEVBQUUsMEJBQTBCLENBQUM7UUFDbkUsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLEVBQUUsWUFBWSxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLEVBQUUsZ0JBQWdCLENBQUM7SUFDbkQsQ0FBQztDQUVKIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDbGFzcyB0aGF0IHN0b3JlcyB0aGUgY29uZmlndXJhdGlvbiBkYXRhXG4gKlxuICogQGF1dGhvciBKb3NodWEgS2lzc29vblxuICogQHNpbmNlIDIwMTgwNzI0XG4gKi9cbmV4cG9ydCBjbGFzcyBUZWNobGlmeUNvbmZpZyB7XG4gICAgcHJvamVjdEtleTogc3RyaW5nID0gJyc7XG4gICAgZW52aXJvbm1lbnQ6IHN0cmluZyA9ICcnO1xuICAgIGF1dGhDbGllbnRTZWNyZXQ6IHN0cmluZyA9ICcnO1xuICAgIGF1dGhHcmFudFR5cGU6IHN0cmluZyA9ICcnO1xuICAgIGFwaVVybDogc3RyaW5nID0gJyc7XG4gICAgcmF3Q29uZmlnczogYW55O1xuICAgIHN0b3JhZ2U6IFN0b3JhZ2U7XG4gICAgaXNMb2dvdXRXaGlsZUFwaUdldHNGYWlsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBwdXNoZXJBcHBLZXk6IHN0cmluZyA9ICcnO1xuICAgIHB1c2hlckFwcENsdXN0ZXI6IHN0cmluZyA9ICcnO1xuXG4gICAgY29uc3RydWN0b3IoZGF0YTogYW55KSB7XG4gICAgICAgIHRoaXMubG9hZEZyb21NYXAoZGF0YSk7XG4gICAgfVxuXG4gICAgbG9hZEZyb21NYXAoZGF0YTogYW55KSB7XG4gICAgICAgIHRoaXMucHJvamVjdEtleSA9IGRhdGEucHJvamVjdEtleTtcbiAgICAgICAgdGhpcy5lbnZpcm9ubWVudCA9IGRhdGEuZW52aXJvbm1lbnQ7XG4gICAgICAgIHRoaXMuYXV0aENsaWVudFNlY3JldCA9IGRhdGEuYXV0aENsaWVudFNlY3JldDtcbiAgICAgICAgdGhpcy5hdXRoR3JhbnRUeXBlID0gZGF0YS5hdXRoR3JhbnRUeXBlO1xuICAgICAgICB0aGlzLmFwaVVybCA9IGRhdGEuYXBpVXJsO1xuICAgICAgICB0aGlzLnN0b3JhZ2UgPSBkYXRhPy5zdG9yYWdlO1xuICAgICAgICB0aGlzLnJhd0NvbmZpZ3MgPSBkYXRhO1xuICAgICAgICB0aGlzLmlzTG9nb3V0V2hpbGVBcGlHZXRzRmFpbGVkID0gZGF0YT8uaXNMb2dvdXRXaGlsZUFwaUdldHNGYWlsZWQ7XG4gICAgICAgIHRoaXMucHVzaGVyQXBwS2V5ID0gZGF0YT8ucHVzaGVyQXBwS2V5O1xuICAgICAgICB0aGlzLnB1c2hlckFwcENsdXN0ZXIgPSBkYXRhPy5wdXNoZXJBcHBDbHVzdGVyO1xuICAgIH1cblxufVxuIl19
|
package/esm2020/lib/techlify-notifications/ngx-techlify-notifier/ngx-techlify-notifier.component.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { __decorate } from "tslib";
|
|
2
|
-
import { Component, Inject } from '@angular/core';
|
|
2
|
+
import { Component, Inject, Input } from '@angular/core';
|
|
3
3
|
import { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';
|
|
4
4
|
import { TechlifyNotificationUserStatus } from '../techlify-notification-user-status.model';
|
|
5
5
|
import * as i0 from "@angular/core";
|
|
@@ -26,46 +26,57 @@ let NgxTechlifyNotifierComponent = class NgxTechlifyNotifierComponent {
|
|
|
26
26
|
this.filters = {
|
|
27
27
|
sort_by: 'created_at|desc',
|
|
28
28
|
isLoadRelations: true,
|
|
29
|
-
relations: 'status,notification'
|
|
29
|
+
relations: 'status,notification',
|
|
30
|
+
status_id: TechlifyNotificationUserStatus.DELIVERED
|
|
30
31
|
};
|
|
32
|
+
this.unreadNotificationsCount = 0;
|
|
33
|
+
this.iconClass = 'text-black';
|
|
31
34
|
this.user = this.credentialService.credentials.user;
|
|
32
35
|
}
|
|
33
36
|
ngOnInit() {
|
|
34
|
-
console.log('Init Notifications');
|
|
35
37
|
this.rootScrollContainer = this.environment?.rootScrollContainer || 'body';
|
|
36
|
-
// this.pollingInterval = this.environment?.notificationPollingInterval || 5000;
|
|
37
38
|
this.pushNotifications();
|
|
38
39
|
}
|
|
39
40
|
loadNotifications(initiate = false) {
|
|
40
|
-
console.log('Load Notifications');
|
|
41
41
|
this.fetchNotifications(this.pageEvent).subscribe((result) => {
|
|
42
42
|
this.notifications = this.notifications.concat(result.data);
|
|
43
43
|
this.notifications = [...new Map(this.notifications.map(item => [item['id'], item])).values()];
|
|
44
44
|
this.pageEvent.page = result.current_page;
|
|
45
45
|
this.pageEvent.lastPage = result.last_page;
|
|
46
|
+
this.getUnreadNotificationsCount();
|
|
46
47
|
});
|
|
47
48
|
}
|
|
48
|
-
|
|
49
|
-
return this.notifications.filter(x => x.status_id === TechlifyNotificationUserStatus.DELIVERED).length;
|
|
49
|
+
getUnreadNotificationsCount() {
|
|
50
|
+
return this.unreadNotificationsCount = this.notifications.filter(x => x.status_id === TechlifyNotificationUserStatus.DELIVERED).length;
|
|
50
51
|
}
|
|
51
52
|
fetchNotifications(pageEvent) {
|
|
52
53
|
return this.http.get(`api/notification-users`, { params: { ...this.filters, ...pageEvent } })
|
|
53
54
|
.pipe(untilDestroyed(this));
|
|
54
55
|
}
|
|
55
56
|
pushNotifications() {
|
|
56
|
-
console.log('Push Notifications');
|
|
57
57
|
if (this.user) {
|
|
58
|
-
console.log('Found User');
|
|
59
58
|
// load messages
|
|
60
59
|
this.loadNotifications();
|
|
61
60
|
// get pusher
|
|
62
61
|
this.pusherService.getPusher().subscribe((pusher) => {
|
|
63
62
|
// generate channel name
|
|
64
|
-
let channelName = `notification-channel
|
|
63
|
+
let channelName = `notification-channel-${this.user.id}`;
|
|
65
64
|
// subscribe to chat channel
|
|
66
65
|
this.channel = pusher.subscribe(channelName);
|
|
67
66
|
this.channel = this.channel.bind('notification-event', (e) => {
|
|
68
|
-
|
|
67
|
+
/**
|
|
68
|
+
* Since we're getting multiple notifications at once, we need to
|
|
69
|
+
* filter the notifications by the user id
|
|
70
|
+
*/
|
|
71
|
+
let notifications = e.notification.filter((x) => x.user_id === this.user.id);
|
|
72
|
+
/**
|
|
73
|
+
* Now let's add the notifications to the top of the list
|
|
74
|
+
*/
|
|
75
|
+
this.notifications = notifications.concat(this.notifications);
|
|
76
|
+
/**
|
|
77
|
+
* Then upldate the notification count by 1
|
|
78
|
+
*/
|
|
79
|
+
this.unreadNotificationsCount += notifications.length;
|
|
69
80
|
});
|
|
70
81
|
});
|
|
71
82
|
}
|
|
@@ -77,12 +88,17 @@ let NgxTechlifyNotifierComponent = class NgxTechlifyNotifierComponent {
|
|
|
77
88
|
}
|
|
78
89
|
}
|
|
79
90
|
notificationClick(event, notification) {
|
|
91
|
+
/** If the status is already read, do nothing */
|
|
92
|
+
if (notification.status_id === TechlifyNotificationUserStatus.READ) {
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
80
95
|
event.stopPropagation();
|
|
81
96
|
this.http.patch(`api/notification-user-status/${notification.id}`, { status_id: TechlifyNotificationUserStatus.READ })
|
|
82
97
|
.pipe(untilDestroyed(this))
|
|
83
98
|
.subscribe((res) => {
|
|
84
99
|
this.notifications[this.notifications.findIndex(x => x.id == notification.id)] = res.item;
|
|
85
100
|
this.notifications = [...this.notifications];
|
|
101
|
+
this.getUnreadNotificationsCount();
|
|
86
102
|
});
|
|
87
103
|
}
|
|
88
104
|
ngOnDestroy() {
|
|
@@ -93,16 +109,18 @@ let NgxTechlifyNotifierComponent = class NgxTechlifyNotifierComponent {
|
|
|
93
109
|
}
|
|
94
110
|
};
|
|
95
111
|
NgxTechlifyNotifierComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: NgxTechlifyNotifierComponent, deps: [{ token: i1.HttpService }, { token: i2.ToastrService }, { token: i1.CredentialsService }, { token: i3.PusherService }, { token: 'environment' }], target: i0.ɵɵFactoryTarget.Component });
|
|
96
|
-
NgxTechlifyNotifierComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: NgxTechlifyNotifierComponent, selector: "app-ngx-techlify-notifier", ngImport: i0, template: "<button mat-button [matMenuTriggerFor]=\"notificaitonMenu\" type=\"button\" #menuTrigger=\"matMenuTrigger\"\n [matBadge]=\"unreadNotificationsCount\" matBadgePosition=\"after\" matBadgeColor=\"warn\"\n [matBadgeHidden]=\"unreadNotificationsCount == 0\">\n <mat-icon>notifications_active</mat-icon>\n</button>\n\n<mat-menu #notificaitonMenu=\"matMenu\" class=\"notifications\">\n <ng-container *ngIf=\"notifications.length > 0 && menuTrigger.menuOpen\" infiniteScroll [infiniteScrollDistance]=\"2\"\n [infiniteScrollThrottle]=\"50\" (scrolled)=\"onScroll()\" infiniteScrollContainer=\".mat-menu-panel.notifications\"\n [fromRoot]=\"true\">\n <div mat-menu-item class=\"mat-elevation-z1 p-
|
|
112
|
+
NgxTechlifyNotifierComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: NgxTechlifyNotifierComponent, selector: "app-ngx-techlify-notifier", inputs: { iconClass: "iconClass" }, ngImport: i0, template: "<button mat-button [matMenuTriggerFor]=\"notificaitonMenu\" type=\"button\" #menuTrigger=\"matMenuTrigger\"\n [matBadge]=\"unreadNotificationsCount\" matBadgePosition=\"after\" matBadgeColor=\"warn\"\n [matBadgeHidden]=\"unreadNotificationsCount == 0\">\n <mat-icon [class]='iconClass'>notifications_active</mat-icon>\n</button>\n\n<mat-menu #notificaitonMenu=\"matMenu\" class=\"notifications\">\n <ng-container *ngIf=\"notifications.length > 0 && menuTrigger.menuOpen\" infiniteScroll [infiniteScrollDistance]=\"2\"\n [infiniteScrollThrottle]=\"50\" (scrolled)=\"onScroll()\" infiniteScrollContainer=\".mat-menu-panel.notifications\"\n [fromRoot]=\"true\" class='p-2'>\n <div mat-menu-item class=\"mat-elevation-z1 p-3 mat-typography\" fxLayout=\"column\"\n *ngFor=\"let item of notifications\" (click)=\"notificationClick($event, item)\">\n <div fxLayout fxLayoutAlign=\"start center\">\n <h3 class=\"m-0\">{{item?.notification?.title}}</h3>\n <span fxFlex></span>\n <span [ngClass]=\"{'text-success':(item?.status_id == 2),'text-secondary':(item?.status_id == 1)}\">\n\n <span *ngIf=\"item?.status_id == 1\">\n <mat-icon>done_all</mat-icon>\n </span>\n\n <span *ngIf=\"item?.status_id == 2\">\n <mat-icon class='text-success'>done_all</mat-icon>\n </span>\n\n </span>\n </div>\n <div class=\"text-secondary\" [innerHTML]=\"item?.notification?.body\"></div>\n <small class='text-secondary'> {{ item?.created_at | date:\"mediumDate\" }} </small>\n </div>\n </ng-container>\n <span *ngIf=\"notifications.length > 0 && menuTrigger.menuOpen\" href='#' class=\"text-secondary text-hover p-4\">\n View All\n </span>\n <div mat-menu-item class=\"mat-elevation-z1 mat-typography\" fxLayout=\"column\" fxLayoutAlign=\"start center\"\n *ngIf=\"notifications.length == 0\">\n <span class='text-hover text-secondary p-4'> No New Notifications! Click to view history</span>\n </div>\n</mat-menu>", styles: [":host{display:flex}::ng-deep .mat-menu-panel.notifications{width:500px!important;max-width:500px!important;min-height:unset!important}::ng-deep .mat-menu-panel.notifications .mat-menu-content{padding:0!important}::ng-deep .mat-menu-panel.notifications .mat-menu-item{height:auto!important;line-height:20px!important}:host ::ng-deep .mat-badge-medium.mat-badge-overlap.mat-badge-after .mat-badge-content{top:-10px;right:5px}.text-hover:hover{text-decoration:underline;cursor:pointer}\n"], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.InfiniteScrollDirective, selector: "[infiniteScroll], [infinite-scroll], [data-infinite-scroll]", inputs: ["infiniteScrollDistance", "infiniteScrollUpDistance", "infiniteScrollThrottle", "infiniteScrollDisabled", "infiniteScrollContainer", "scrollWindow", "immediateCheck", "horizontal", "alwaysCallback", "fromRoot"], outputs: ["scrolled", "scrolledUp"] }, { kind: "component", type: i6.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i8.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i8.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i8.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "directive", type: i9.MatBadge, selector: "[matBadge]", inputs: ["matBadgeDisabled", "matBadgeColor", "matBadgeOverlap", "matBadgePosition", "matBadge", "matBadgeDescription", "matBadgeSize", "matBadgeHidden"] }, { kind: "directive", type: i10.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i10.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i10.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "directive", type: i11.DefaultClassDirective, selector: " [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl], [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl], [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]", inputs: ["ngClass", "ngClass.xs", "ngClass.sm", "ngClass.md", "ngClass.lg", "ngClass.xl", "ngClass.lt-sm", "ngClass.lt-md", "ngClass.lt-lg", "ngClass.lt-xl", "ngClass.gt-xs", "ngClass.gt-sm", "ngClass.gt-md", "ngClass.gt-lg"] }, { kind: "pipe", type: i4.DatePipe, name: "date" }] });
|
|
97
113
|
NgxTechlifyNotifierComponent = __decorate([
|
|
98
114
|
UntilDestroy()
|
|
99
115
|
], NgxTechlifyNotifierComponent);
|
|
100
116
|
export { NgxTechlifyNotifierComponent };
|
|
101
117
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: NgxTechlifyNotifierComponent, decorators: [{
|
|
102
118
|
type: Component,
|
|
103
|
-
args: [{ selector: 'app-ngx-techlify-notifier', template: "<button mat-button [matMenuTriggerFor]=\"notificaitonMenu\" type=\"button\" #menuTrigger=\"matMenuTrigger\"\n [matBadge]=\"unreadNotificationsCount\" matBadgePosition=\"after\" matBadgeColor=\"warn\"\n [matBadgeHidden]=\"unreadNotificationsCount == 0\">\n <mat-icon>notifications_active</mat-icon>\n</button>\n\n<mat-menu #notificaitonMenu=\"matMenu\" class=\"notifications\">\n <ng-container *ngIf=\"notifications.length > 0 && menuTrigger.menuOpen\" infiniteScroll [infiniteScrollDistance]=\"2\"\n [infiniteScrollThrottle]=\"50\" (scrolled)=\"onScroll()\" infiniteScrollContainer=\".mat-menu-panel.notifications\"\n [fromRoot]=\"true\">\n <div mat-menu-item class=\"mat-elevation-z1 p-
|
|
119
|
+
args: [{ selector: 'app-ngx-techlify-notifier', template: "<button mat-button [matMenuTriggerFor]=\"notificaitonMenu\" type=\"button\" #menuTrigger=\"matMenuTrigger\"\n [matBadge]=\"unreadNotificationsCount\" matBadgePosition=\"after\" matBadgeColor=\"warn\"\n [matBadgeHidden]=\"unreadNotificationsCount == 0\">\n <mat-icon [class]='iconClass'>notifications_active</mat-icon>\n</button>\n\n<mat-menu #notificaitonMenu=\"matMenu\" class=\"notifications\">\n <ng-container *ngIf=\"notifications.length > 0 && menuTrigger.menuOpen\" infiniteScroll [infiniteScrollDistance]=\"2\"\n [infiniteScrollThrottle]=\"50\" (scrolled)=\"onScroll()\" infiniteScrollContainer=\".mat-menu-panel.notifications\"\n [fromRoot]=\"true\" class='p-2'>\n <div mat-menu-item class=\"mat-elevation-z1 p-3 mat-typography\" fxLayout=\"column\"\n *ngFor=\"let item of notifications\" (click)=\"notificationClick($event, item)\">\n <div fxLayout fxLayoutAlign=\"start center\">\n <h3 class=\"m-0\">{{item?.notification?.title}}</h3>\n <span fxFlex></span>\n <span [ngClass]=\"{'text-success':(item?.status_id == 2),'text-secondary':(item?.status_id == 1)}\">\n\n <span *ngIf=\"item?.status_id == 1\">\n <mat-icon>done_all</mat-icon>\n </span>\n\n <span *ngIf=\"item?.status_id == 2\">\n <mat-icon class='text-success'>done_all</mat-icon>\n </span>\n\n </span>\n </div>\n <div class=\"text-secondary\" [innerHTML]=\"item?.notification?.body\"></div>\n <small class='text-secondary'> {{ item?.created_at | date:\"mediumDate\" }} </small>\n </div>\n </ng-container>\n <span *ngIf=\"notifications.length > 0 && menuTrigger.menuOpen\" href='#' class=\"text-secondary text-hover p-4\">\n View All\n </span>\n <div mat-menu-item class=\"mat-elevation-z1 mat-typography\" fxLayout=\"column\" fxLayoutAlign=\"start center\"\n *ngIf=\"notifications.length == 0\">\n <span class='text-hover text-secondary p-4'> No New Notifications! Click to view history</span>\n </div>\n</mat-menu>", styles: [":host{display:flex}::ng-deep .mat-menu-panel.notifications{width:500px!important;max-width:500px!important;min-height:unset!important}::ng-deep .mat-menu-panel.notifications .mat-menu-content{padding:0!important}::ng-deep .mat-menu-panel.notifications .mat-menu-item{height:auto!important;line-height:20px!important}:host ::ng-deep .mat-badge-medium.mat-badge-overlap.mat-badge-after .mat-badge-content{top:-10px;right:5px}.text-hover:hover{text-decoration:underline;cursor:pointer}\n"] }]
|
|
104
120
|
}], ctorParameters: function () { return [{ type: i1.HttpService }, { type: i2.ToastrService }, { type: i1.CredentialsService }, { type: i3.PusherService }, { type: undefined, decorators: [{
|
|
105
121
|
type: Inject,
|
|
106
122
|
args: ['environment']
|
|
107
|
-
}] }]; }
|
|
108
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXRlY2hsaWZ5LW5vdGlmaWVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC10ZWNobGlmeS1jb3JlL3NyYy9saWIvdGVjaGxpZnktbm90aWZpY2F0aW9ucy9uZ3gtdGVjaGxpZnktbm90aWZpZXIvbmd4LXRlY2hsaWZ5LW5vdGlmaWVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC10ZWNobGlmeS1jb3JlL3NyYy9saWIvdGVjaGxpZnktbm90aWZpY2F0aW9ucy9uZ3gtdGVjaGxpZnktbm90aWZpZXIvbmd4LXRlY2hsaWZ5LW5vdGlmaWVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUMxRCxPQUFPLEVBQUUsWUFBWSxFQUFFLGNBQWMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBS3JFLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLDRDQUE0QyxDQUFDOzs7Ozs7Ozs7Ozs7O0lBVy9FLDRCQUE0QixTQUE1Qiw0QkFBNEI7SUFldkMsWUFDVSxJQUFpQixFQUNqQixNQUFxQixFQUNyQixpQkFBcUMsRUFDckMsYUFBNEIsRUFDTCxXQUFnQjtRQUp2QyxTQUFJLEdBQUosSUFBSSxDQUFhO1FBQ2pCLFdBQU0sR0FBTixNQUFNLENBQWU7UUFDckIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFvQjtRQUNyQyxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUNMLGdCQUFXLEdBQVgsV0FBVyxDQUFLO1FBbkJqRCxrQkFBYSxHQUFVLEVBQUUsQ0FBQztRQUMxQixjQUFTLEdBQWMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLENBQUMsRUFBRSxDQUFDO1FBQzdELFlBQU8sR0FBUTtZ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QkFBNEI7MkZBQTVCLDRCQUE0QjtrQkFMeEMsU0FBUzsrQkFDRSwyQkFBMkI7OzBCQXdCbEMsTUFBTTsyQkFBQyxhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3QsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVW50aWxEZXN0cm95LCB1bnRpbERlc3Ryb3llZCB9IGZyb20gJ0BuZ25lYXQvdW50aWwtZGVzdHJveSc7XG5pbXBvcnQgeyBDcmVkZW50aWFsc1NlcnZpY2UsIEh0dHBTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZSc7XG5pbXBvcnQgeyBQYWdlRXZlbnQgfSBmcm9tICcuLi8uLi9kYXRhLXRhYmxlJztcbmltcG9ydCB7IGludGVydmFsLCBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFRlY2hsaWZ5Tm90aWZpY2F0aW9uVXNlclN0YXR1cyB9IGZyb20gJy4uL3RlY2hsaWZ5LW5vdGlmaWNhdGlvbi11c2VyLXN0YXR1cy5tb2RlbCc7XG5pbXBvcnQgeyBUb2FzdHJTZXJ2aWNlIH0gZnJvbSAnbmd4LXRvYXN0cic7XG5pbXBvcnQgeyBQdXNoZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS9wdXNoZXIuc2VydmljZSc7XG5pbXBvcnQgUHVzaGVyIGZyb20gJ3B1c2hlci1qcyc7XG5cbkBVbnRpbERlc3Ryb3koKVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLW5neC10ZWNobGlmeS1ub3RpZmllcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9uZ3gtdGVjaGxpZnktbm90aWZpZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9uZ3gtdGVjaGxpZnktbm90aWZpZXIuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBOZ3hUZWNobGlmeU5vdGlmaWVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgbm90aWZpY2F0aW9uczogYW55W10gPSBbXTtcbiAgcGFnZUV2ZW50OiBQYWdlRXZlbnQgPSB7IHBhZ2U6IDEsIHBlclBhZ2U6IDI1LCBsYXN0UGFnZTogMSB9O1xuICBmaWx0ZXJzOiBhbnkgPSB7XG4gICAgc29ydF9ieTogJ2NyZWF0ZWRfYXR8ZGVzYycsXG4gICAgaXNMb2FkUmVsYXRpb25zOiB0cnVlLFxuICAgIHJlbGF0aW9uczogJ3N0YXR1cyxub3RpZmljYXRpb24nXG4gIH07XG4gIHJvb3RTY3JvbGxDb250YWluZXI6IHN0cmluZztcbiAgcG9sbGluZ0ludGVydmFsOiBudW1iZXI7XG4gICRub3RpZmljYXRpb25Mb2FkZXI6IFN1YnNjcmlwdGlvbjtcblxuICB1c2VyOiBhbnk7XG4gIGNoYW5uZWw6IGFueTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGh0dHA6IEh0dHBTZXJ2aWNlLFxuICAgIHByaXZhdGUgdG9hc3RyOiBUb2FzdHJTZXJ2aWNlLFxuICAgIHByaXZhdGUgY3JlZGVudGlhbFNlcnZpY2U6IENyZWRlbnRpYWxzU2VydmljZSxcbiAgICBwcml2YXRlIHB1c2hlclNlcnZpY2U6IFB1c2hlclNlcnZpY2UsXG4gICAgQEluamVjdCgnZW52aXJvbm1lbnQnKSBwcml2YXRlIGVudmlyb25tZW50OiBhbnksXG4gICkge1xuICAgIHRoaXMudXNlciA9IHRoaXMuY3JlZGVudGlhbFNlcnZpY2UuY3JlZGVudGlhbHMudXNlcjtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGNvbnNvbGUubG9nKCdJbml0IE5vdGlmaWNhdGlvbnMnKTtcbiAgICB0aGlzLnJvb3RTY3JvbGxDb250YWluZXIgPSB0aGlzLmVudmlyb25tZW50Py5yb290U2Nyb2xsQ29udGFpbmVyIHx8ICdib2R5JztcbiAgICAvLyB0aGlzLnBvbGxpbmdJbnRlcnZhbCA9IHRoaXMuZW52aXJvbm1lbnQ/Lm5vdGlmaWNhdGlvblBvbGxpbmdJbnRlcnZhbCB8fCA1MDAwO1xuICAgIHRoaXMucHVzaE5vdGlmaWNhdGlvbnMoKTtcbiAgfVxuXG4gIGxvYWROb3RpZmljYXRpb25zKGluaXRpYXRlOiBib29sZWFuID0gZmFsc2UpIHtcbiAgICBjb25zb2xlLmxvZygnTG9hZCBOb3RpZmljYXRpb25zJyk7XG4gICAgdGhpcy5mZXRjaE5vdGlmaWNhdGlvbnModGhpcy5wYWdlRXZlbnQpLnN1YnNjcmliZSgocmVzdWx0OiBhbnkpID0+IHtcbiAgICAgIHRoaXMubm90aWZpY2F0aW9ucyA9IHRoaXMubm90aWZpY2F0aW9ucy5jb25jYXQocmVzdWx0LmRhdGEpO1xuICAgICAgdGhpcy5ub3RpZmljYXRpb25zID0gWy4uLm5ldyBNYXAodGhpcy5ub3RpZmljYXRpb25zLm1hcChpdGVtID0+XG4gICAgICAgIFtpdGVtWydpZCddLCBpdGVtXSkpLnZhbHVlcygpXTtcbiAgICAgIHRoaXMucGFnZUV2ZW50LnBhZ2UgPSByZXN1bHQuY3VycmVudF9wYWdlO1xuICAgICAgdGhpcy5wYWdlRXZlbnQubGFzdFBhZ2UgPSByZXN1bHQubGFzdF9wYWdlO1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0IHVucmVhZE5vdGlmaWNhdGlvbnNDb3VudCgpIHtcbiAgICByZXR1cm4gdGhpcy5ub3RpZmljYXRpb25zLmZpbHRlcih4ID0+IHguc3RhdHVzX2lkID09PSBUZWNobGlmeU5vdGlmaWNhdGlvblVzZXJTdGF0dXMuREVMSVZFUkVEKS5sZW5ndGg7XG4gIH1cblxuXG4gIGZldGNoTm90aWZpY2F0aW9ucyhwYWdlRXZlbnQ6IFBhZ2VFdmVudCk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoYGFwaS9ub3RpZmljYXRpb24tdXNlcnNgLCB7IHBhcmFtczogeyAuLi50aGlzLmZpbHRlcnMsIC4uLnBhZ2VFdmVudCB9IH0pXG4gICAgICAucGlwZSh1bnRpbERlc3Ryb3llZCh0aGlzKSk7XG4gIH1cblxuICBwdXNoTm90aWZpY2F0aW9ucygpIHtcbiAgICBjb25zb2xlLmxvZygnUHVzaCBOb3RpZmljYXRpb25zJylcbiAgICBpZiAodGhpcy51c2VyKSB7XG4gICAgICBjb25zb2xlLmxvZygnRm91bmQgVXNlcicpXG4gICAgICAvLyBsb2FkIG1lc3NhZ2VzXG4gICAgICB0aGlzLmxvYWROb3RpZmljYXRpb25zKCk7XG4gICAgICAvLyBnZXQgcHVzaGVyXG4gICAgICB0aGlzLnB1c2hlclNlcnZpY2UuZ2V0UHVzaGVyKCkuc3Vic2NyaWJlKChwdXNoZXI6IFB1c2hlcikgPT4ge1xuICAgICAgICAvLyBnZW5lcmF0ZSBjaGFubmVsIG5hbWVcbiAgICAgICAgbGV0IGNoYW5uZWxOYW1lOiBzdHJpbmcgPSBgbm90aWZpY2F0aW9uLWNoYW5uZWwtMzJgO1xuICAgICAgICAvLyBzdWJzY3JpYmUgdG8gY2hhdCBjaGFubmVsXG4gICAgICAgIHRoaXMuY2hhbm5lbCA9IHB1c2hlci5zdWJzY3JpYmUoY2hhbm5lbE5hbWUpO1xuICAgICAgICB0aGlzLmNoYW5uZWwgPSB0aGlzLmNoYW5uZWwuYmluZCgnbm90aWZpY2F0aW9uLWV2ZW50JywgKGU6IGFueSkgPT4ge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGUpO1xuICAgICAgICB9KVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgb25TY3JvbGwoKSB7XG4gICAgaWYgKHRoaXMucGFnZUV2ZW50Lmxhc3RQYWdlID4gdGhpcy5wYWdlRXZlbnQucGFnZSkge1xuICAgICAgdGhpcy5wYWdlRXZlbnQucGFnZSArPSAxO1xuICAgICAgdGhpcy5sb2FkTm90aWZpY2F0aW9ucygpO1xuICAgIH1cbiAgfVxuXG4gIG5vdGlmaWNhdGlvbkNsaWNrKGV2ZW50OiBhbnksIG5vdGlmaWNhdGlvbjogYW55KSB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgdGhpcy5odHRwLnBhdGNoKGBhcGkvbm90aWZpY2F0aW9uLXVzZXItc3RhdHVzLyR7bm90aWZpY2F0aW9uLmlkfWAsIHsgc3RhdHVzX2lkOiBUZWNobGlmeU5vdGlmaWNhdGlvblVzZXJTdGF0dXMuUkVBRCB9KVxuICAgICAgLnBpcGUodW50aWxEZXN0cm95ZWQodGhpcykpXG4gICAgICAuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbnNbdGhpcy5ub3RpZmljYXRpb25zLmZpbmRJbmRleCh4ID0+IHguaWQgPT0gbm90aWZpY2F0aW9uLmlkKV0gPSByZXMuaXRlbTtcbiAgICAgICAgdGhpcy5ub3RpZmljYXRpb25zID0gWy4uLnRoaXMubm90aWZpY2F0aW9uc107XG4gICAgICB9KTtcbiAgfVxuXG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgLy9VbnRpbCBkZXN0cm95ZWQgdXNlcyBpdFxuICAgIGlmICh0aGlzLiRub3RpZmljYXRpb25Mb2FkZXIpIHtcbiAgICAgIHRoaXMuJG5vdGlmaWNhdGlvbkxvYWRlci51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxuXG59XG4iLCI8YnV0dG9uIG1hdC1idXR0b24gW21hdE1lbnVUcmlnZ2VyRm9yXT1cIm5vdGlmaWNhaXRvbk1lbnVcIiB0eXBlPVwiYnV0dG9uXCIgI21lbnVUcmlnZ2VyPVwibWF0TWVudVRyaWdnZXJcIlxuICAgIFttYXRCYWRnZV09XCJ1bnJlYWROb3RpZmljYXRpb25zQ291bnRcIiBtYXRCYWRnZVBvc2l0aW9uPVwiYWZ0ZXJcIiBtYXRCYWRnZUNvbG9yPVwid2FyblwiXG4gICAgW21hdEJhZGdlSGlkZGVuXT1cInVucmVhZE5vdGlmaWNhdGlvbnNDb3VudCA9PSAwXCI+XG4gICAgPG1hdC1pY29uPm5vdGlmaWNhdGlvbnNfYWN0aXZlPC9tYXQtaWNvbj5cbjwvYnV0dG9uPlxuXG48bWF0LW1lbnUgI25vdGlmaWNhaXRvbk1lbnU9XCJtYXRNZW51XCIgY2xhc3M9XCJub3RpZmljYXRpb25zXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm5vdGlmaWNhdGlvbnMubGVuZ3RoID4gMCAmJiBtZW51VHJpZ2dlci5tZW51T3BlblwiIGluZmluaXRlU2Nyb2xsIFtpbmZpbml0ZVNjcm9sbERpc3RhbmNlXT1cIjJcIlxuICAgICAgICBbaW5maW5pdGVTY3JvbGxUaHJvdHRsZV09XCI1MFwiIChzY3JvbGxlZCk9XCJvblNjcm9sbCgpXCIgaW5maW5pdGVTY3JvbGxDb250YWluZXI9XCIubWF0LW1lbnUtcGFuZWwubm90aWZpY2F0aW9uc1wiXG4gICAgICAgIFtmcm9tUm9vdF09XCJ0cnVlXCI+XG4gICAgICAgIDxkaXYgbWF0LW1lbnUtaXRlbSBjbGFzcz1cIm1hdC1lbGV2YXRpb24tejEgcC0yIG1hdC10eXBvZ3JhcGh5XCIgZnhMYXlvdXQ9XCJjb2x1bW5cIlxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2Ygbm90aWZpY2F0aW9uc1wiIChjbGljayk9XCJub3RpZmljYXRpb25DbGljaygkZXZlbnQsIGl0ZW0pXCI+XG4gICAgICAgICAgICA8ZGl2IGZ4TGF5b3V0IGZ4TGF5b3V0QWxpZ249XCJzdGFydCBjZW50ZXJcIj5cbiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9XCJtLTBcIj57e2l0ZW0/Lm5vdGlmaWNhdGlvbj8udGl0bGV9fTwvaDM+XG4gICAgICAgICAgICAgICAgPHNwYW4gZnhGbGV4Pjwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J3RleHQtc3VjY2Vzcyc6KGl0ZW0/LnN0YXR1c19pZCA9PSAyKSwndGV4dC1zZWNvbmRhcnknOihpdGVtPy5zdGF0dXNfaWQgPT0gMSl9XCI+VGVzdCBUaXRsZTwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtc2Vjb25kYXJ5XCI+XG4gICAgICAgICAgICAgICAge3tpdGVtPy5ub3RpZmljYXRpb24/LmJvZHl9fVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxkaXYgbWF0LW1lbnUtaXRlbSBjbGFzcz1cIm1hdC1lbGV2YXRpb24tejEgcC0yIG1hdC10eXBvZ3JhcGh5XCIgZnhMYXlvdXQ9XCJjb2x1bW5cIiBmeExheW91dEFsaWduPVwic3RhcnQgY2VudGVyXCJcbiAgICAgICAgKm5nSWY9XCJub3RpZmljYXRpb25zLmxlbmd0aCA9PSAwXCI+XG4gICAgICAgIDxzcGFuPiBObyBOb3RpZmljYXRpb25zIHRvIHNob3c8L3NwYW4+XG4gICAgPC9kaXY+XG48L21hdC1tZW51PiJdfQ==
|
|
123
|
+
}] }]; }, propDecorators: { iconClass: [{
|
|
124
|
+
type: Input
|
|
125
|
+
}] } });
|
|
126
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXRlY2hsaWZ5LW5vdGlmaWVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC10ZWNobGlmeS1jb3JlL3NyYy9saWIvdGVjaGxpZnktbm90aWZpY2F0aW9ucy9uZ3gtdGVjaGxpZnktbm90aWZpZXIvbmd4LXRlY2hsaWZ5LW5vdGlmaWVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC10ZWNobGlmeS1jb3JlL3NyYy9saWIvdGVjaGxpZnktbm90aWZpY2F0aW9ucy9uZ3gtdGVjaGxpZnktbm90aWZpZXIvbmd4LXRlY2hsaWZ5LW5vdGlmaWVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDakUsT0FBTyxFQUFFLFlBQVksRUFBRSxjQUFjLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUtyRSxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQzs7Ozs7Ozs7Ozs7OztJQVcvRSw0QkFBNEIsU0FBNUIsNEJBQTRCO0lBb0J2QyxZQUNVLElBQWlCLEVBQ2pCLE1BQXFCLEVBQ3JCLGlCQUFxQyxFQUNyQyxhQUE0QixFQUNMLFdBQWdCO1FBSnZDLFNBQUksR0FBSixJQUFJLENBQWE7UUFDakIsV0FBTSxHQUFOLE1BQU0sQ0FBZTtRQUNyQixzQkFBaUIsR0FBakIsaUJBQWlCLENBQW9CO1FBQ3JDLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQ0wsZ0JBQVcsR0FBWCxXQUFXLENBQUs7UUF4QmpELGtCQUFhLEdBQVUsRUFBRSxDQUFDO1FBQzFCLGNBQVMsR0FBYyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsQ0FBQyxFQUFFLENBQUM7UUFDN0Qs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WUFDMUYsSUFBSSxDQUFDLGFBQWEsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQzdDLElBQUksQ0FBQywyQkFBMkIsRUFBRSxDQUFDO1FBQ3JDLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELFdBQVc7UUFDVCx5QkFBeUI7UUFDekIsSUFBSSxJQUFJLENBQUMsbUJBQW1CLEVBQUU7WUFDNUIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQ3hDO0lBQ0gsQ0FBQztDQUVGLENBQUE7eUhBdEhZLDRCQUE0Qix5SUF5QjdCLGFBQWE7NkdBekJaLDRCQUE0QixxR0NqQnpDLHdwRUFzQ1c7QURyQkUsNEJBQTRCO0lBTnhDLFlBQVksRUFBRTtHQU1GLDRCQUE0QixDQXNIeEM7U0F0SFksNEJBQTRCOzJGQUE1Qiw0QkFBNEI7a0JBTHhDLFNBQVM7K0JBQ0UsMkJBQTJCOzswQkE2QmxDLE1BQU07MkJBQUMsYUFBYTs0Q0FQZCxTQUFTO3NCQUFqQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3QsIElucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFVudGlsRGVzdHJveSwgdW50aWxEZXN0cm95ZWQgfSBmcm9tICdAbmduZWF0L3VudGlsLWRlc3Ryb3knO1xuaW1wb3J0IHsgQ3JlZGVudGlhbHNTZXJ2aWNlLCBIdHRwU2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUnO1xuaW1wb3J0IHsgUGFnZUV2ZW50IH0gZnJvbSAnLi4vLi4vZGF0YS10YWJsZSc7XG5pbXBvcnQgeyBpbnRlcnZhbCwgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBUZWNobGlmeU5vdGlmaWNhdGlvblVzZXJTdGF0dXMgfSBmcm9tICcuLi90ZWNobGlmeS1ub3RpZmljYXRpb24tdXNlci1zdGF0dXMubW9kZWwnO1xuaW1wb3J0IHsgVG9hc3RyU2VydmljZSB9IGZyb20gJ25neC10b2FzdHInO1xuaW1wb3J0IHsgUHVzaGVyU2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvcHVzaGVyLnNlcnZpY2UnO1xuaW1wb3J0IFB1c2hlciBmcm9tICdwdXNoZXItanMnO1xuXG5AVW50aWxEZXN0cm95KClcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1uZ3gtdGVjaGxpZnktbm90aWZpZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vbmd4LXRlY2hsaWZ5LW5vdGlmaWVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbmd4LXRlY2hsaWZ5LW5vdGlmaWVyLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgTmd4VGVjaGxpZnlOb3RpZmllckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIG5vdGlmaWNhdGlvbnM6IGFueVtdID0gW107XG4gIHBhZ2VFdmVudDogUGFnZUV2ZW50ID0geyBwYWdlOiAxLCBwZXJQYWdlOiAyNSwgbGFzdFBhZ2U6IDEgfTtcbiAgZmlsdGVyczogYW55ID0ge1xuICAgIHNvcnRfYnk6ICdjcmVhdGVkX2F0fGRlc2MnLFxuICAgIGlzTG9hZFJlbGF0aW9uczogdHJ1ZSxcbiAgICByZWxhdGlvbnM6ICdzdGF0dXMsbm90aWZpY2F0aW9uJyxcbiAgICBzdGF0dXNfaWQ6IFRlY2hsaWZ5Tm90aWZpY2F0aW9uVXNlclN0YXR1cy5ERUxJVkVSRURcbiAgfTtcbiAgcm9vdFNjcm9sbENvbnRhaW5lcjogc3RyaW5nO1xuICBwb2xsaW5nSW50ZXJ2YWw6IG51bWJlcjtcbiAgJG5vdGlmaWNhdGlvbkxvYWRlcjogU3Vic2NyaXB0aW9uO1xuXG4gIHVzZXI6IGFueTtcbiAgY2hhbm5lbDogYW55O1xuXG4gIHVucmVhZE5vdGlmaWNhdGlvbnNDb3VudDogbnVtYmVyID0gMDtcblxuICBASW5wdXQoKSBpY29uQ2xhc3M6IHN0cmluZyA9ICd0ZXh0LWJsYWNrJztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGh0dHA6IEh0dHBTZXJ2aWNlLFxuICAgIHByaXZhdGUgdG9hc3RyOiBUb2FzdHJTZXJ2aWNlLFxuICAgIHByaXZhdGUgY3JlZGVudGlhbFNlcnZpY2U6IENyZWRlbnRpYWxzU2VydmljZSxcbiAgICBwcml2YXRlIHB1c2hlclNlcnZpY2U6IFB1c2hlclNlcnZpY2UsXG4gICAgQEluamVjdCgnZW52aXJvbm1lbnQnKSBwcml2YXRlIGVudmlyb25tZW50OiBhbnksXG4gICkge1xuICAgIHRoaXMudXNlciA9IHRoaXMuY3JlZGVudGlhbFNlcnZpY2UuY3JlZGVudGlhbHMudXNlcjtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMucm9vdFNjcm9sbENvbnRhaW5lciA9IHRoaXMuZW52aXJvbm1lbnQ/LnJvb3RTY3JvbGxDb250YWluZXIgfHwgJ2JvZHknO1xuICAgIHRoaXMucHVzaE5vdGlmaWNhdGlvbnMoKTtcbiAgfVxuXG4gIGxvYWROb3RpZmljYXRpb25zKGluaXRpYXRlOiBib29sZWFuID0gZmFsc2UpIHtcbiAgICB0aGlzLmZldGNoTm90aWZpY2F0aW9ucyh0aGlzLnBhZ2VFdmVudCkuc3Vic2NyaWJlKChyZXN1bHQ6IGFueSkgPT4ge1xuICAgICAgdGhpcy5ub3RpZmljYXRpb25zID0gdGhpcy5ub3RpZmljYXRpb25zLmNvbmNhdChyZXN1bHQuZGF0YSk7XG4gICAgICB0aGlzLm5vdGlmaWNhdGlvbnMgPSBbLi4ubmV3IE1hcCh0aGlzLm5vdGlmaWNhdGlvbnMubWFwKGl0ZW0gPT5cbiAgICAgICAgW2l0ZW1bJ2lkJ10sIGl0ZW1dKSkudmFsdWVzKCldO1xuICAgICAgdGhpcy5wYWdlRXZlbnQucGFnZSA9IHJlc3VsdC5jdXJyZW50X3BhZ2U7XG4gICAgICB0aGlzLnBhZ2VFdmVudC5sYXN0UGFnZSA9IHJlc3VsdC5sYXN0X3BhZ2U7XG4gICAgICB0aGlzLmdldFVucmVhZE5vdGlmaWNhdGlvbnNDb3VudCgpO1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0VW5yZWFkTm90aWZpY2F0aW9uc0NvdW50KCkge1xuICAgIHJldHVybiB0aGlzLnVucmVhZE5vdGlmaWNhdGlvbnNDb3VudCA9IHRoaXMubm90aWZpY2F0aW9ucy5maWx0ZXIoeCA9PiB4LnN0YXR1c19pZCA9PT0gVGVjaGxpZnlOb3RpZmljYXRpb25Vc2VyU3RhdHVzLkRFTElWRVJFRCkubGVuZ3RoO1xuICB9XG5cblxuICBmZXRjaE5vdGlmaWNhdGlvbnMocGFnZUV2ZW50OiBQYWdlRXZlbnQpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KGBhcGkvbm90aWZpY2F0aW9uLXVzZXJzYCwgeyBwYXJhbXM6IHsgLi4udGhpcy5maWx0ZXJzLCAuLi5wYWdlRXZlbnQgfSB9KVxuICAgICAgLnBpcGUodW50aWxEZXN0cm95ZWQodGhpcykpO1xuICB9XG5cbiAgcHVzaE5vdGlmaWNhdGlvbnMoKSB7XG4gICAgaWYgKHRoaXMudXNlcikge1xuICAgICAgLy8gbG9hZCBtZXNzYWdlc1xuICAgICAgdGhpcy5sb2FkTm90aWZpY2F0aW9ucygpO1xuICAgICAgLy8gZ2V0IHB1c2hlclxuICAgICAgdGhpcy5wdXNoZXJTZXJ2aWNlLmdldFB1c2hlcigpLnN1YnNjcmliZSgocHVzaGVyOiBQdXNoZXIpID0+IHtcbiAgICAgICAgLy8gZ2VuZXJhdGUgY2hhbm5lbCBuYW1lXG4gICAgICAgIGxldCBjaGFubmVsTmFtZTogc3RyaW5nID0gYG5vdGlmaWNhdGlvbi1jaGFubmVsLSR7dGhpcy51c2VyLmlkfWA7XG4gICAgICAgIC8vIHN1YnNjcmliZSB0byBjaGF0IGNoYW5uZWxcbiAgICAgICAgdGhpcy5jaGFubmVsID0gcHVzaGVyLnN1YnNjcmliZShjaGFubmVsTmFtZSk7XG4gICAgICAgIHRoaXMuY2hhbm5lbCA9IHRoaXMuY2hhbm5lbC5iaW5kKCdub3RpZmljYXRpb24tZXZlbnQnLCAoZTogYW55KSA9PiB7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogU2luY2Ugd2UncmUgZ2V0dGluZyBtdWx0aXBsZSBub3RpZmljYXRpb25zIGF0IG9uY2UsIHdlIG5lZWQgdG9cbiAgICAgICAgICAgKiBmaWx0ZXIgdGhlIG5vdGlmaWNhdGlvbnMgYnkgdGhlIHVzZXIgaWRcbiAgICAgICAgICAgKi9cbiAgICAgICAgICBsZXQgbm90aWZpY2F0aW9ucyA9IGUubm90aWZpY2F0aW9uLmZpbHRlcigoeDogYW55KSA9PiB4LnVzZXJfaWQgPT09IHRoaXMudXNlci5pZCk7XG5cbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBOb3cgbGV0J3MgYWRkIHRoZSBub3RpZmljYXRpb25zIHRvIHRoZSB0b3Agb2YgdGhlIGxpc3RcbiAgICAgICAgICAgKi9cbiAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbnMgPSBub3RpZmljYXRpb25zLmNvbmNhdCh0aGlzLm5vdGlmaWNhdGlvbnMpO1xuXG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogVGhlbiB1cGxkYXRlIHRoZSBub3RpZmljYXRpb24gY291bnQgYnkgMVxuICAgICAgICAgICAqL1xuICAgICAgICAgIHRoaXMudW5yZWFkTm90aWZpY2F0aW9uc0NvdW50ICs9IG5vdGlmaWNhdGlvbnMubGVuZ3RoO1xuXG4gICAgICAgIH0pXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBvblNjcm9sbCgpIHtcbiAgICBpZiAodGhpcy5wYWdlRXZlbnQubGFzdFBhZ2UgPiB0aGlzLnBhZ2VFdmVudC5wYWdlKSB7XG4gICAgICB0aGlzLnBhZ2VFdmVudC5wYWdlICs9IDE7XG4gICAgICB0aGlzLmxvYWROb3RpZmljYXRpb25zKCk7XG4gICAgfVxuICB9XG5cbiAgbm90aWZpY2F0aW9uQ2xpY2soZXZlbnQ6IGFueSwgbm90aWZpY2F0aW9uOiBhbnkpIHtcbiAgICAvKiogSWYgdGhlIHN0YXR1cyBpcyBhbHJlYWR5IHJlYWQsIGRvIG5vdGhpbmcgKi9cbiAgICBpZiAobm90aWZpY2F0aW9uLnN0YXR1c19pZCA9PT0gVGVjaGxpZnlOb3RpZmljYXRpb25Vc2VyU3RhdHVzLlJFQUQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB0aGlzLmh0dHAucGF0Y2goYGFwaS9ub3RpZmljYXRpb24tdXNlci1zdGF0dXMvJHtub3RpZmljYXRpb24uaWR9YCwgeyBzdGF0dXNfaWQ6IFRlY2hsaWZ5Tm90aWZpY2F0aW9uVXNlclN0YXR1cy5SRUFEIH0pXG4gICAgICAucGlwZSh1bnRpbERlc3Ryb3llZCh0aGlzKSlcbiAgICAgIC5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XG4gICAgICAgIHRoaXMubm90aWZpY2F0aW9uc1t0aGlzLm5vdGlmaWNhdGlvbnMuZmluZEluZGV4KHggPT4geC5pZCA9PSBub3RpZmljYXRpb24uaWQpXSA9IHJlcy5pdGVtO1xuICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbnMgPSBbLi4udGhpcy5ub3RpZmljYXRpb25zXTtcbiAgICAgICAgdGhpcy5nZXRVbnJlYWROb3RpZmljYXRpb25zQ291bnQoKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgLy9VbnRpbCBkZXN0cm95ZWQgdXNlcyBpdFxuICAgIGlmICh0aGlzLiRub3RpZmljYXRpb25Mb2FkZXIpIHtcbiAgICAgIHRoaXMuJG5vdGlmaWNhdGlvbkxvYWRlci51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxuXG59XG4iLCI8YnV0dG9uIG1hdC1idXR0b24gW21hdE1lbnVUcmlnZ2VyRm9yXT1cIm5vdGlmaWNhaXRvbk1lbnVcIiB0eXBlPVwiYnV0dG9uXCIgI21lbnVUcmlnZ2VyPVwibWF0TWVudVRyaWdnZXJcIlxuICAgIFttYXRCYWRnZV09XCJ1bnJlYWROb3RpZmljYXRpb25zQ291bnRcIiBtYXRCYWRnZVBvc2l0aW9uPVwiYWZ0ZXJcIiBtYXRCYWRnZUNvbG9yPVwid2FyblwiXG4gICAgW21hdEJhZGdlSGlkZGVuXT1cInVucmVhZE5vdGlmaWNhdGlvbnNDb3VudCA9PSAwXCI+XG4gICAgPG1hdC1pY29uIFtjbGFzc109J2ljb25DbGFzcyc+bm90aWZpY2F0aW9uc19hY3RpdmU8L21hdC1pY29uPlxuPC9idXR0b24+XG5cbjxtYXQtbWVudSAjbm90aWZpY2FpdG9uTWVudT1cIm1hdE1lbnVcIiBjbGFzcz1cIm5vdGlmaWNhdGlvbnNcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibm90aWZpY2F0aW9ucy5sZW5ndGggPiAwICYmIG1lbnVUcmlnZ2VyLm1lbnVPcGVuXCIgaW5maW5pdGVTY3JvbGwgW2luZmluaXRlU2Nyb2xsRGlzdGFuY2VdPVwiMlwiXG4gICAgICAgIFtpbmZpbml0ZVNjcm9sbFRocm90dGxlXT1cIjUwXCIgKHNjcm9sbGVkKT1cIm9uU2Nyb2xsKClcIiBpbmZpbml0ZVNjcm9sbENvbnRhaW5lcj1cIi5tYXQtbWVudS1wYW5lbC5ub3RpZmljYXRpb25zXCJcbiAgICAgICAgW2Zyb21Sb290XT1cInRydWVcIiBjbGFzcz0ncC0yJz5cbiAgICAgICAgPGRpdiBtYXQtbWVudS1pdGVtIGNsYXNzPVwibWF0LWVsZXZhdGlvbi16MSBwLTMgbWF0LXR5cG9ncmFwaHlcIiBmeExheW91dD1cImNvbHVtblwiXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBub3RpZmljYXRpb25zXCIgKGNsaWNrKT1cIm5vdGlmaWNhdGlvbkNsaWNrKCRldmVudCwgaXRlbSlcIj5cbiAgICAgICAgICAgIDxkaXYgZnhMYXlvdXQgZnhMYXlvdXRBbGlnbj1cInN0YXJ0IGNlbnRlclwiPlxuICAgICAgICAgICAgICAgIDxoMyBjbGFzcz1cIm0tMFwiPnt7aXRlbT8ubm90aWZpY2F0aW9uPy50aXRsZX19PC9oMz5cbiAgICAgICAgICAgICAgICA8c3BhbiBmeEZsZXg+PC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuIFtuZ0NsYXNzXT1cInsndGV4dC1zdWNjZXNzJzooaXRlbT8uc3RhdHVzX2lkID09IDIpLCd0ZXh0LXNlY29uZGFyeSc6KGl0ZW0/LnN0YXR1c19pZCA9PSAxKX1cIj5cblxuICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIml0ZW0/LnN0YXR1c19pZCA9PSAxXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+ZG9uZV9hbGw8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJpdGVtPy5zdGF0dXNfaWQgPT0gMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPSd0ZXh0LXN1Y2Nlc3MnPmRvbmVfYWxsPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1zZWNvbmRhcnlcIiBbaW5uZXJIVE1MXT1cIml0ZW0/Lm5vdGlmaWNhdGlvbj8uYm9keVwiPjwvZGl2PlxuICAgICAgICAgICAgPHNtYWxsIGNsYXNzPSd0ZXh0LXNlY29uZGFyeSc+IHt7IGl0ZW0/LmNyZWF0ZWRfYXQgfCBkYXRlOlwibWVkaXVtRGF0ZVwiIH19IDwvc21hbGw+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxzcGFuICpuZ0lmPVwibm90aWZpY2F0aW9ucy5sZW5ndGggPiAwICYmIG1lbnVUcmlnZ2VyLm1lbnVPcGVuXCIgaHJlZj0nIycgY2xhc3M9XCJ0ZXh0LXNlY29uZGFyeSB0ZXh0LWhvdmVyIHAtNFwiPlxuICAgICAgICBWaWV3IEFsbFxuICAgIDwvc3Bhbj5cbiAgICA8ZGl2IG1hdC1tZW51LWl0ZW0gY2xhc3M9XCJtYXQtZWxldmF0aW9uLXoxIG1hdC10eXBvZ3JhcGh5XCIgZnhMYXlvdXQ9XCJjb2x1bW5cIiBmeExheW91dEFsaWduPVwic3RhcnQgY2VudGVyXCJcbiAgICAgICAgKm5nSWY9XCJub3RpZmljYXRpb25zLmxlbmd0aCA9PSAwXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPSd0ZXh0LWhvdmVyIHRleHQtc2Vjb25kYXJ5IHAtNCc+IE5vIE5ldyBOb3RpZmljYXRpb25zISBDbGljayB0byB2aWV3IGhpc3Rvcnk8L3NwYW4+XG4gICAgPC9kaXY+XG48L21hdC1tZW51PiJdfQ==
|