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.
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdGVjaGxpZnktY29yZS9zcmMvbGliL2NvcmUvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLHNCQUFzQixDQUFDO0FBRXJDLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsa0JBQWtCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3NuYWNrL3NuYWNrLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL3NuYWNrL3NuYWNrLm1vZHVsZSc7XG5cbmV4cG9ydCAqIGZyb20gJy4vYWxlcnQuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2FwaS1wcmVmaXguaW50ZXJjZXB0b3InO1xuZXhwb3J0ICogZnJvbSAnLi9hdXRoZW50aWNhdGlvbi5ndWFyZCc7XG5leHBvcnQgKiBmcm9tICcuL2F1dGhlbnRpY2F0aW9uLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9jYWNoZS5pbnRlcmNlcHRvcic7XG5leHBvcnQgKiBmcm9tICcuL2NvbmZpZy5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vY3JlZGVudGlhbHMuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2Vycm9yLWhhbmRsZXIuaW50ZXJjZXB0b3InO1xuZXhwb3J0ICogZnJvbSAnLi9lcnJvci1oYW5kbGVyLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9mb3JtLXZhbGlkYXRvci5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vaHR0cC1jYWNoZS5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vaHR0cC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbG9nZ2VyLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9yb3V0ZS1yZXVzYWJsZS1zdHJhdGVneSc7XG5leHBvcnQgKiBmcm9tICcuL3N0b3JhZ2Uuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3RlY2hsaWZ5LWNvbmZpZy5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL3Rva2VuLmludGVyY2VwdG9yJztcbmV4cG9ydCAqIGZyb20gJy4vZGF0YU1hbmFnZXIuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2ZpbHRlci5zZXJ2aWNlJztcbiJdfQ==
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
- console.log('pusher', this.pusher);
18
- this.pusher.next(new Pusher('74cae52a04e85d893bc2', {
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: 'http://localhost/emr-api/public/broadcasting/auth',
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVzaGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdGVjaGxpZnktY29yZS9zcmMvbGliL2NvcmUvcHVzaGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLE1BQU0sTUFBTSxXQUFXLENBQUM7QUFDL0IsT0FBTyxFQUFFLGVBQWUsRUFBYyxNQUFNLE1BQU0sQ0FBQzs7O0FBTW5ELE1BQU0sT0FBTyxhQUFhO0lBRXhCLFlBQ1UsaUJBQXFDO1FBQXJDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBb0I7UUFGdkMsV0FBTSxHQUFHLElBQUksZUFBZSxDQUFTLElBQUksQ0FBQyxDQUFDO1FBSWpELElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUNwQixDQUFDO0lBRUQsVUFBVTtRQUNSLE9BQU8sQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUE7UUFDMUIsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRTtZQUNyQixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUUsQ0FBQztTQUNoQztRQUNELE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUNsQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLE1BQU0sQ0FBQyxzQkFBc0IsRUFBRTtZQUNsRCxPQUFPLEVBQUUsS0FBSztZQUNkLFFBQVEsRUFBRSxJQUFJO1lBQ2QsWUFBWSxFQUFFLG1EQUFtRDtZQUNqRSxJQUFJLEVBQUU7Z0JBQ0osT0FBTyxFQUFFO29CQUNQLGFBQWEsRUFBRSxTQUFTLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsWUFBWTtpQkFDcEY7YUFDRjtTQUNGLENBQUMsQ0FBQyxDQUFDO0lBQ04sQ0FBQztJQUVELFNBQVM7UUFDUCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDcEMsQ0FBQzs7MEdBNUJVLGFBQWE7OEdBQWIsYUFBYSxjQUZaLE1BQU07MkZBRVAsYUFBYTtrQkFIekIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgUHVzaGVyIGZyb20gJ3B1c2hlci1qcyc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IENyZWRlbnRpYWxzU2VydmljZSB9IGZyb20gJy4vY3JlZGVudGlhbHMuc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFB1c2hlclNlcnZpY2Uge1xuICBwcml2YXRlIHB1c2hlciA9IG5ldyBCZWhhdmlvclN1YmplY3Q8UHVzaGVyPihudWxsKTtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjcmVkZW50aWFsU2VydmljZTogQ3JlZGVudGlhbHNTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMuaW5pdFB1c2hlcigpO1xuICB9XG5cbiAgaW5pdFB1c2hlcigpIHtcbiAgICBjb25zb2xlLmxvZygnSW5pdCBQdXNoZXInKVxuICAgIGlmICh0aGlzLnB1c2hlci52YWx1ZSkge1xuICAgICAgdGhpcy5wdXNoZXIudmFsdWUuZGlzY29ubmVjdCgpO1xuICAgIH1cbiAgICBjb25zb2xlLmxvZygncHVzaGVyJywgdGhpcy5wdXNoZXIpXG4gICAgdGhpcy5wdXNoZXIubmV4dChuZXcgUHVzaGVyKCc3NGNhZTUyYTA0ZTg1ZDg5M2JjMicsIHtcbiAgICAgIGNsdXN0ZXI6ICd1czInLFxuICAgICAgZm9yY2VUTFM6IHRydWUsXG4gICAgICBhdXRoRW5kcG9pbnQ6ICdodHRwOi8vbG9jYWxob3N0L2Vtci1hcGkvcHVibGljL2Jyb2FkY2FzdGluZy9hdXRoJyxcbiAgICAgIGF1dGg6IHtcbiAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgIEF1dGhvcml6YXRpb246ICdCZWFyZXIgJyArIHRoaXMuY3JlZGVudGlhbFNlcnZpY2U/LmNyZWRlbnRpYWxzPy50b2tlbj8uYWNjZXNzX3Rva2VuXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KSk7XG4gIH1cblxuICBnZXRQdXNoZXIoKTogT2JzZXJ2YWJsZTxQdXNoZXI+IHtcbiAgICByZXR1cm4gdGhpcy5wdXNoZXIuYXNPYnNlcnZhYmxlKCk7XG4gIH1cbn0iXX0=
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVjaGxpZnktY29uZmlnLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXRlY2hsaWZ5LWNvcmUvc3JjL2xpYi9jb3JlL3RlY2hsaWZ5LWNvbmZpZy5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7R0FLRztBQUNILE1BQU0sT0FBTyxjQUFjO0lBVXZCLFlBQVksSUFBUztRQVRyQixlQUFVLEdBQVcsRUFBRSxDQUFDO1FBQ3hCLGdCQUFXLEdBQVcsRUFBRSxDQUFDO1FBQ3pCLHFCQUFnQixHQUFXLEVBQUUsQ0FBQztRQUM5QixrQkFBYSxHQUFXLEVBQUUsQ0FBQztRQUMzQixXQUFNLEdBQVcsRUFBRSxDQUFDO1FBR3BCLCtCQUEwQixHQUFZLEtBQUssQ0FBQztRQUd4QyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFFRCxXQUFXLENBQUMsSUFBUztRQUNqQixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUM7UUFDbEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO1FBQ3BDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7UUFDOUMsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDO1FBQ3hDLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUMxQixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksRUFBRSxPQUFPLENBQUM7UUFDN0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7UUFDdkIsSUFBSSxDQUFDLDBCQUEwQixHQUFHLElBQUksRUFBRSwwQkFBMEIsQ0FBQztJQUN2RSxDQUFDO0NBRUoiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENsYXNzIHRoYXQgc3RvcmVzIHRoZSBjb25maWd1cmF0aW9uIGRhdGFcbiAqXG4gKiBAYXV0aG9yIEpvc2h1YSBLaXNzb29uXG4gKiBAc2luY2UgMjAxODA3MjRcbiAqL1xuZXhwb3J0IGNsYXNzIFRlY2hsaWZ5Q29uZmlnIHtcbiAgICBwcm9qZWN0S2V5OiBzdHJpbmcgPSAnJztcbiAgICBlbnZpcm9ubWVudDogc3RyaW5nID0gJyc7XG4gICAgYXV0aENsaWVudFNlY3JldDogc3RyaW5nID0gJyc7XG4gICAgYXV0aEdyYW50VHlwZTogc3RyaW5nID0gJyc7XG4gICAgYXBpVXJsOiBzdHJpbmcgPSAnJztcbiAgICByYXdDb25maWdzOiBhbnk7XG4gICAgc3RvcmFnZTogU3RvcmFnZTtcbiAgICBpc0xvZ291dFdoaWxlQXBpR2V0c0ZhaWxlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgY29uc3RydWN0b3IoZGF0YTogYW55KSB7XG4gICAgICAgIHRoaXMubG9hZEZyb21NYXAoZGF0YSk7XG4gICAgfVxuXG4gICAgbG9hZEZyb21NYXAoZGF0YTogYW55KSB7XG4gICAgICAgIHRoaXMucHJvamVjdEtleSA9IGRhdGEucHJvamVjdEtleTtcbiAgICAgICAgdGhpcy5lbnZpcm9ubWVudCA9IGRhdGEuZW52aXJvbm1lbnQ7XG4gICAgICAgIHRoaXMuYXV0aENsaWVudFNlY3JldCA9IGRhdGEuYXV0aENsaWVudFNlY3JldDtcbiAgICAgICAgdGhpcy5hdXRoR3JhbnRUeXBlID0gZGF0YS5hdXRoR3JhbnRUeXBlO1xuICAgICAgICB0aGlzLmFwaVVybCA9IGRhdGEuYXBpVXJsO1xuICAgICAgICB0aGlzLnN0b3JhZ2UgPSBkYXRhPy5zdG9yYWdlO1xuICAgICAgICB0aGlzLnJhd0NvbmZpZ3MgPSBkYXRhO1xuICAgICAgICB0aGlzLmlzTG9nb3V0V2hpbGVBcGlHZXRzRmFpbGVkID0gZGF0YT8uaXNMb2dvdXRXaGlsZUFwaUdldHNGYWlsZWQ7XG4gICAgfVxuXG59XG4iXX0=
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVjaGxpZnktY29uZmlnLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXRlY2hsaWZ5LWNvcmUvc3JjL2xpYi9jb3JlL3RlY2hsaWZ5LWNvbmZpZy5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7R0FLRztBQUNILE1BQU0sT0FBTyxjQUFjO0lBWXZCLFlBQVksSUFBUztRQVhyQixlQUFVLEdBQVcsRUFBRSxDQUFDO1FBQ3hCLGdCQUFXLEdBQVcsRUFBRSxDQUFDO1FBQ3pCLHFCQUFnQixHQUFXLEVBQUUsQ0FBQztRQUM5QixrQkFBYSxHQUFXLEVBQUUsQ0FBQztRQUMzQixXQUFNLEdBQVcsRUFBRSxDQUFDO1FBR3BCLCtCQUEwQixHQUFZLEtBQUssQ0FBQztRQUM1QyxpQkFBWSxHQUFXLEVBQUUsQ0FBQztRQUMxQixxQkFBZ0IsR0FBVyxFQUFFLENBQUM7UUFHMUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMzQixDQUFDO0lBRUQsV0FBVyxDQUFDLElBQVM7UUFDakIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO1FBQ2xDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztRQUNwQyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDO1FBQzlDLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQztRQUN4QyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDMUIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLEVBQUUsT0FBTyxDQUFDO1FBQzdCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1FBQ3ZCLElBQUksQ0FBQywwQkFBMEIsR0FBRyxJQUFJLEVBQUUsMEJBQTBCLENBQUM7UUFDbkUsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLEVBQUUsWUFBWSxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLEVBQUUsZ0JBQWdCLENBQUM7SUFDbkQsQ0FBQztDQUVKIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDbGFzcyB0aGF0IHN0b3JlcyB0aGUgY29uZmlndXJhdGlvbiBkYXRhXG4gKlxuICogQGF1dGhvciBKb3NodWEgS2lzc29vblxuICogQHNpbmNlIDIwMTgwNzI0XG4gKi9cbmV4cG9ydCBjbGFzcyBUZWNobGlmeUNvbmZpZyB7XG4gICAgcHJvamVjdEtleTogc3RyaW5nID0gJyc7XG4gICAgZW52aXJvbm1lbnQ6IHN0cmluZyA9ICcnO1xuICAgIGF1dGhDbGllbnRTZWNyZXQ6IHN0cmluZyA9ICcnO1xuICAgIGF1dGhHcmFudFR5cGU6IHN0cmluZyA9ICcnO1xuICAgIGFwaVVybDogc3RyaW5nID0gJyc7XG4gICAgcmF3Q29uZmlnczogYW55O1xuICAgIHN0b3JhZ2U6IFN0b3JhZ2U7XG4gICAgaXNMb2dvdXRXaGlsZUFwaUdldHNGYWlsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBwdXNoZXJBcHBLZXk6IHN0cmluZyA9ICcnO1xuICAgIHB1c2hlckFwcENsdXN0ZXI6IHN0cmluZyA9ICcnO1xuXG4gICAgY29uc3RydWN0b3IoZGF0YTogYW55KSB7XG4gICAgICAgIHRoaXMubG9hZEZyb21NYXAoZGF0YSk7XG4gICAgfVxuXG4gICAgbG9hZEZyb21NYXAoZGF0YTogYW55KSB7XG4gICAgICAgIHRoaXMucHJvamVjdEtleSA9IGRhdGEucHJvamVjdEtleTtcbiAgICAgICAgdGhpcy5lbnZpcm9ubWVudCA9IGRhdGEuZW52aXJvbm1lbnQ7XG4gICAgICAgIHRoaXMuYXV0aENsaWVudFNlY3JldCA9IGRhdGEuYXV0aENsaWVudFNlY3JldDtcbiAgICAgICAgdGhpcy5hdXRoR3JhbnRUeXBlID0gZGF0YS5hdXRoR3JhbnRUeXBlO1xuICAgICAgICB0aGlzLmFwaVVybCA9IGRhdGEuYXBpVXJsO1xuICAgICAgICB0aGlzLnN0b3JhZ2UgPSBkYXRhPy5zdG9yYWdlO1xuICAgICAgICB0aGlzLnJhd0NvbmZpZ3MgPSBkYXRhO1xuICAgICAgICB0aGlzLmlzTG9nb3V0V2hpbGVBcGlHZXRzRmFpbGVkID0gZGF0YT8uaXNMb2dvdXRXaGlsZUFwaUdldHNGYWlsZWQ7XG4gICAgICAgIHRoaXMucHVzaGVyQXBwS2V5ID0gZGF0YT8ucHVzaGVyQXBwS2V5O1xuICAgICAgICB0aGlzLnB1c2hlckFwcENsdXN0ZXIgPSBkYXRhPy5wdXNoZXJBcHBDbHVzdGVyO1xuICAgIH1cblxufVxuIl19
@@ -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
- get unreadNotificationsCount() {
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-32`;
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
- console.log(e);
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-2 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\n [ngClass]=\"{'text-success':(item?.status_id == 2),'text-secondary':(item?.status_id == 1)}\">Test Title</span>\n </div>\n <div class=\"text-secondary\">\n {{item?.notification?.body}}\n </div>\n </div>\n </ng-container>\n <div mat-menu-item class=\"mat-elevation-z1 p-2 mat-typography\" fxLayout=\"column\" fxLayoutAlign=\"start center\"\n *ngIf=\"notifications.length == 0\">\n <span> No Notifications to show</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}\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"] }] });
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-2 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\n [ngClass]=\"{'text-success':(item?.status_id == 2),'text-secondary':(item?.status_id == 1)}\">Test Title</span>\n </div>\n <div class=\"text-secondary\">\n {{item?.notification?.body}}\n </div>\n </div>\n </ng-container>\n <div mat-menu-item class=\"mat-elevation-z1 p-2 mat-typography\" fxLayout=\"column\" fxLayoutAlign=\"start center\"\n *ngIf=\"notifications.length == 0\">\n <span> No Notifications to show</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}\n"] }]
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==