ngx-techlify-core 14.6.2 → 14.6.3-alpha-7

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.
@@ -0,0 +1,41 @@
1
+ import { Injectable } from '@angular/core';
2
+ import Pusher from 'pusher-js';
3
+ import { BehaviorSubject } from 'rxjs';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "./credentials.service";
6
+ export class PusherService {
7
+ constructor(credentialService) {
8
+ this.credentialService = credentialService;
9
+ this.pusher = new BehaviorSubject(null);
10
+ this.initPusher();
11
+ }
12
+ initPusher() {
13
+ console.log('Init Pusher');
14
+ if (this.pusher.value) {
15
+ this.pusher.value.disconnect();
16
+ }
17
+ console.log('pusher', this.pusher);
18
+ this.pusher.next(new Pusher('74cae52a04e85d893bc2', {
19
+ cluster: 'us2',
20
+ forceTLS: true,
21
+ authEndpoint: 'http://localhost/emr-api/public/broadcasting/auth',
22
+ auth: {
23
+ headers: {
24
+ Authorization: 'Bearer ' + this.credentialService?.credentials?.token?.access_token
25
+ }
26
+ }
27
+ }));
28
+ }
29
+ getPusher() {
30
+ return this.pusher.asObservable();
31
+ }
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 });
34
+ PusherService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: PusherService, providedIn: 'root' });
35
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: PusherService, decorators: [{
36
+ type: Injectable,
37
+ args: [{
38
+ providedIn: 'root'
39
+ }]
40
+ }], ctorParameters: function () { return [{ type: i1.CredentialsService }]; } });
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVzaGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdGVjaGxpZnktY29yZS9zcmMvbGliL2NvcmUvcHVzaGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLE1BQU0sTUFBTSxXQUFXLENBQUM7QUFDL0IsT0FBTyxFQUFFLGVBQWUsRUFBYyxNQUFNLE1BQU0sQ0FBQzs7O0FBTW5ELE1BQU0sT0FBTyxhQUFhO0lBRXhCLFlBQ1UsaUJBQXFDO1FBQXJDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBb0I7UUFGdkMsV0FBTSxHQUFHLElBQUksZUFBZSxDQUFTLElBQUksQ0FBQyxDQUFDO1FBSWpELElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUNwQixDQUFDO0lBRUQsVUFBVTtRQUNSLE9BQU8sQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUE7UUFDMUIsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRTtZQUNyQixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUUsQ0FBQztTQUNoQztRQUNELE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUNsQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLE1BQU0sQ0FBQyxzQkFBc0IsRUFBRTtZQUNsRCxPQUFPLEVBQUUsS0FBSztZQUNkLFFBQVEsRUFBRSxJQUFJO1lBQ2QsWUFBWSxFQUFFLG1EQUFtRDtZQUNqRSxJQUFJLEVBQUU7Z0JBQ0osT0FBTyxFQUFFO29CQUNQLGFBQWEsRUFBRSxTQUFTLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsWUFBWTtpQkFDcEY7YUFDRjtTQUNGLENBQUMsQ0FBQyxDQUFDO0lBQ04sQ0FBQztJQUVELFNBQVM7UUFDUCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDcEMsQ0FBQzs7MEdBNUJVLGFBQWE7OEdBQWIsYUFBYSxjQUZaLE1BQU07MkZBRVAsYUFBYTtrQkFIekIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgUHVzaGVyIGZyb20gJ3B1c2hlci1qcyc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IENyZWRlbnRpYWxzU2VydmljZSB9IGZyb20gJy4vY3JlZGVudGlhbHMuc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFB1c2hlclNlcnZpY2Uge1xuICBwcml2YXRlIHB1c2hlciA9IG5ldyBCZWhhdmlvclN1YmplY3Q8UHVzaGVyPihudWxsKTtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjcmVkZW50aWFsU2VydmljZTogQ3JlZGVudGlhbHNTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMuaW5pdFB1c2hlcigpO1xuICB9XG5cbiAgaW5pdFB1c2hlcigpIHtcbiAgICBjb25zb2xlLmxvZygnSW5pdCBQdXNoZXInKVxuICAgIGlmICh0aGlzLnB1c2hlci52YWx1ZSkge1xuICAgICAgdGhpcy5wdXNoZXIudmFsdWUuZGlzY29ubmVjdCgpO1xuICAgIH1cbiAgICBjb25zb2xlLmxvZygncHVzaGVyJywgdGhpcy5wdXNoZXIpXG4gICAgdGhpcy5wdXNoZXIubmV4dChuZXcgUHVzaGVyKCc3NGNhZTUyYTA0ZTg1ZDg5M2JjMicsIHtcbiAgICAgIGNsdXN0ZXI6ICd1czInLFxuICAgICAgZm9yY2VUTFM6IHRydWUsXG4gICAgICBhdXRoRW5kcG9pbnQ6ICdodHRwOi8vbG9jYWxob3N0L2Vtci1hcGkvcHVibGljL2Jyb2FkY2FzdGluZy9hdXRoJyxcbiAgICAgIGF1dGg6IHtcbiAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgIEF1dGhvcml6YXRpb246ICdCZWFyZXIgJyArIHRoaXMuY3JlZGVudGlhbFNlcnZpY2U/LmNyZWRlbnRpYWxzPy50b2tlbj8uYWNjZXNzX3Rva2VuXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KSk7XG4gIH1cblxuICBnZXRQdXNoZXIoKTogT2JzZXJ2YWJsZTxQdXNoZXI+IHtcbiAgICByZXR1cm4gdGhpcy5wdXNoZXIuYXNPYnNlcnZhYmxlKCk7XG4gIH1cbn0iXX0=
@@ -1,24 +1,25 @@
1
1
  import { __decorate } from "tslib";
2
2
  import { Component, Inject } from '@angular/core';
3
3
  import { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';
4
- import { interval } from 'rxjs';
5
- import { switchMap } from 'rxjs/operators';
6
4
  import { TechlifyNotificationUserStatus } from '../techlify-notification-user-status.model';
7
5
  import * as i0 from "@angular/core";
8
6
  import * as i1 from "../../core";
9
7
  import * as i2 from "ngx-toastr";
10
- import * as i3 from "@angular/common";
11
- import * as i4 from "ngx-infinite-scroll";
12
- import * as i5 from "@angular/material/button";
13
- import * as i6 from "@angular/material/icon";
14
- import * as i7 from "@angular/material/menu";
15
- import * as i8 from "@angular/material/badge";
16
- import * as i9 from "@angular/flex-layout/flex";
17
- import * as i10 from "@angular/flex-layout/extended";
8
+ import * as i3 from "../../core/pusher.service";
9
+ import * as i4 from "@angular/common";
10
+ import * as i5 from "ngx-infinite-scroll";
11
+ import * as i6 from "@angular/material/button";
12
+ import * as i7 from "@angular/material/icon";
13
+ import * as i8 from "@angular/material/menu";
14
+ import * as i9 from "@angular/material/badge";
15
+ import * as i10 from "@angular/flex-layout/flex";
16
+ import * as i11 from "@angular/flex-layout/extended";
18
17
  let NgxTechlifyNotifierComponent = class NgxTechlifyNotifierComponent {
19
- constructor(http, toastr, environment) {
18
+ constructor(http, toastr, credentialService, pusherService, environment) {
20
19
  this.http = http;
21
20
  this.toastr = toastr;
21
+ this.credentialService = credentialService;
22
+ this.pusherService = pusherService;
22
23
  this.environment = environment;
23
24
  this.notifications = [];
24
25
  this.pageEvent = { page: 1, perPage: 25, lastPage: 1 };
@@ -27,37 +28,23 @@ let NgxTechlifyNotifierComponent = class NgxTechlifyNotifierComponent {
27
28
  isLoadRelations: true,
28
29
  relations: 'status,notification'
29
30
  };
31
+ this.user = this.credentialService.credentials.user;
30
32
  }
31
33
  ngOnInit() {
34
+ console.log('Init Notifications');
32
35
  this.rootScrollContainer = this.environment?.rootScrollContainer || 'body';
33
- this.pollingInterval = this.environment?.notificationPollingInterval || 5000;
34
- this.loadNotifications(true);
36
+ // this.pollingInterval = this.environment?.notificationPollingInterval || 5000;
37
+ this.pushNotifications();
35
38
  }
36
39
  loadNotifications(initiate = false) {
40
+ console.log('Load Notifications');
37
41
  this.fetchNotifications(this.pageEvent).subscribe((result) => {
38
42
  this.notifications = this.notifications.concat(result.data);
39
43
  this.notifications = [...new Map(this.notifications.map(item => [item['id'], item])).values()];
40
44
  this.pageEvent.page = result.current_page;
41
45
  this.pageEvent.lastPage = result.last_page;
42
- if (initiate) {
43
- this.startNotificationPolling();
44
- }
45
46
  });
46
47
  }
47
- startNotificationPolling() {
48
- this.$notificationLoader =
49
- interval(this.pollingInterval)
50
- .pipe(switchMap((_) => this.fetchNotifications({ page: 1, perPage: 25, lastPage: 1 })), untilDestroyed(this)).subscribe((result) => {
51
- //Look for any new notifications
52
- const newNotifications = result.data.filter((item) => !this.notifications.some((x) => x.id == item.id));
53
- if (newNotifications?.length > 0) {
54
- this.notifications = newNotifications.concat(this.notifications);
55
- newNotifications.forEach((item) => {
56
- this.toastr.success(item?.notification?.body, item?.notification?.title);
57
- });
58
- }
59
- });
60
- }
61
48
  get unreadNotificationsCount() {
62
49
  return this.notifications.filter(x => x.status_id === TechlifyNotificationUserStatus.DELIVERED).length;
63
50
  }
@@ -65,6 +52,24 @@ let NgxTechlifyNotifierComponent = class NgxTechlifyNotifierComponent {
65
52
  return this.http.get(`api/notification-users`, { params: { ...this.filters, ...pageEvent } })
66
53
  .pipe(untilDestroyed(this));
67
54
  }
55
+ pushNotifications() {
56
+ console.log('Push Notifications');
57
+ if (this.user) {
58
+ console.log('Found User');
59
+ // load messages
60
+ this.loadNotifications();
61
+ // get pusher
62
+ this.pusherService.getPusher().subscribe((pusher) => {
63
+ // generate channel name
64
+ let channelName = `notification-channel-32`;
65
+ // subscribe to chat channel
66
+ this.channel = pusher.subscribe(channelName);
67
+ this.channel = this.channel.bind('notification-event', (e) => {
68
+ console.log(e);
69
+ });
70
+ });
71
+ }
72
+ }
68
73
  onScroll() {
69
74
  if (this.pageEvent.lastPage > this.pageEvent.page) {
70
75
  this.pageEvent.page += 1;
@@ -87,17 +92,17 @@ let NgxTechlifyNotifierComponent = class NgxTechlifyNotifierComponent {
87
92
  }
88
93
  }
89
94
  };
90
- NgxTechlifyNotifierComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: NgxTechlifyNotifierComponent, deps: [{ token: i1.HttpService }, { token: i2.ToastrService }, { token: 'environment' }], target: i0.ɵɵFactoryTarget.Component });
91
- 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)}\">{{item?.status?.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: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.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: i5.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: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i7.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i7.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i7.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "directive", type: i8.MatBadge, selector: "[matBadge]", inputs: ["matBadgeDisabled", "matBadgeColor", "matBadgeOverlap", "matBadgePosition", "matBadge", "matBadgeDescription", "matBadgeSize", "matBadgeHidden"] }, { kind: "directive", type: i9.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: i9.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: i9.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: i10.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"] }] });
95
+ 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"] }] });
92
97
  NgxTechlifyNotifierComponent = __decorate([
93
98
  UntilDestroy()
94
99
  ], NgxTechlifyNotifierComponent);
95
100
  export { NgxTechlifyNotifierComponent };
96
101
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: NgxTechlifyNotifierComponent, decorators: [{
97
102
  type: Component,
98
- 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)}\">{{item?.status?.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"] }]
99
- }], ctorParameters: function () { return [{ type: i1.HttpService }, { type: i2.ToastrService }, { type: undefined, decorators: [{
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"] }]
104
+ }], ctorParameters: function () { return [{ type: i1.HttpService }, { type: i2.ToastrService }, { type: i1.CredentialsService }, { type: i3.PusherService }, { type: undefined, decorators: [{
100
105
  type: Inject,
101
106
  args: ['environment']
102
107
  }] }]; } });
103
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXRlY2hsaWZ5LW5vdGlmaWVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC10ZWNobGlmeS1jb3JlL3NyYy9saWIvdGVjaGxpZnktbm90aWZpY2F0aW9ucy9uZ3gtdGVjaGxpZnktbm90aWZpZXIvbmd4LXRlY2hsaWZ5LW5vdGlmaWVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC10ZWNobGlmeS1jb3JlL3NyYy9saWIvdGVjaGxpZnktbm90aWZpY2F0aW9ucy9uZ3gtdGVjaGxpZnktbm90aWZpZXIvbmd4LXRlY2hsaWZ5LW5vdGlmaWVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUMxRCxPQUFPLEVBQUUsWUFBWSxFQUFFLGNBQWMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBR3JFLE9BQU8sRUFBRSxRQUFRLEVBQTRCLE1BQU0sTUFBTSxDQUFDO0FBQzFELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQzs7Ozs7Ozs7Ozs7O0lBUS9FLDRCQUE0QixTQUE1Qiw0QkFBNEI7SUFZdkMsWUFDVSxJQUFpQixFQUNqQixNQUFxQixFQUNFLFdBQWdCO1FBRnZDLFNBQUksR0FBSixJQUFJLENBQWE7UUFDakIsV0FBTSxHQUFOLE1BQU0sQ0FBZTtRQUNFLGdCQUFXLEdBQVgsV0FBVyxDQUFLO1FBZGpELGtCQUFhLEdBQVUsRUFBRSxDQUFDO1FBQzFCLGNBQVMsR0FBYyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsQ0FBQyxFQUFFLENBQUM7UUFDN0QsWUFBTyxHQUFRO1lB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VCx5QkFBeUI7UUFDekIsSUFBSSxJQUFJLENBQUMsbUJBQW1CLEVBQUU7WUFDNUIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQ3hDO0lBQ0gsQ0FBQztDQUVGLENBQUE7eUhBMUZZLDRCQUE0QiwwRUFlN0IsYUFBYTs2R0FmWiw0QkFBNEIsaUVDZHpDLDhqREEyQlc7QURiRSw0QkFBNEI7SUFOeEMsWUFBWSxFQUFFO0dBTUYsNEJBQTRCLENBMEZ4QztTQTFGWSw0QkFBNEI7MkZBQTVCLDRCQUE0QjtrQkFMeEMsU0FBUzsrQkFDRSwyQkFBMkI7OzBCQW1CbEMsTUFBTTsyQkFBQyxhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3QsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVW50aWxEZXN0cm95LCB1bnRpbERlc3Ryb3llZCB9IGZyb20gJ0BuZ25lYXQvdW50aWwtZGVzdHJveSc7XG5pbXBvcnQgeyBIdHRwU2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUnO1xuaW1wb3J0IHsgUGFnZUV2ZW50IH0gZnJvbSAnLi4vLi4vZGF0YS10YWJsZSc7XG5pbXBvcnQgeyBpbnRlcnZhbCwgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBUZWNobGlmeU5vdGlmaWNhdGlvblVzZXJTdGF0dXMgfSBmcm9tICcuLi90ZWNobGlmeS1ub3RpZmljYXRpb24tdXNlci1zdGF0dXMubW9kZWwnO1xuaW1wb3J0IHsgVG9hc3RyU2VydmljZSB9IGZyb20gJ25neC10b2FzdHInO1xuQFVudGlsRGVzdHJveSgpXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtbmd4LXRlY2hsaWZ5LW5vdGlmaWVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL25neC10ZWNobGlmeS1ub3RpZmllci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL25neC10ZWNobGlmeS1ub3RpZmllci5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIE5neFRlY2hsaWZ5Tm90aWZpZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBub3RpZmljYXRpb25zOiBhbnlbXSA9IFtdO1xuICBwYWdlRXZlbnQ6IFBhZ2VFdmVudCA9IHsgcGFnZTogMSwgcGVyUGFnZTogMjUsIGxhc3RQYWdlOiAxIH07XG4gIGZpbHRlcnM6IGFueSA9IHtcbiAgICBzb3J0X2J5OiAnY3JlYXRlZF9hdHxkZXNjJyxcbiAgICBpc0xvYWRSZWxhdGlvbnM6IHRydWUsXG4gICAgcmVsYXRpb25zOiAnc3RhdHVzLG5vdGlmaWNhdGlvbidcbiAgfTtcbiAgcm9vdFNjcm9sbENvbnRhaW5lcjogc3RyaW5nO1xuICBwb2xsaW5nSW50ZXJ2YWw6IG51bWJlcjtcbiAgJG5vdGlmaWNhdGlvbkxvYWRlcjogU3Vic2NyaXB0aW9uO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgaHR0cDogSHR0cFNlcnZpY2UsXG4gICAgcHJpdmF0ZSB0b2FzdHI6IFRvYXN0clNlcnZpY2UsXG4gICAgQEluamVjdCgnZW52aXJvbm1lbnQnKSBwcml2YXRlIGVudmlyb25tZW50OiBhbnksXG4gICkgeyB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5yb290U2Nyb2xsQ29udGFpbmVyID0gdGhpcy5lbnZpcm9ubWVudD8ucm9vdFNjcm9sbENvbnRhaW5lciB8fCAnYm9keSc7XG4gICAgdGhpcy5wb2xsaW5nSW50ZXJ2YWwgPSB0aGlzLmVudmlyb25tZW50Py5ub3RpZmljYXRpb25Qb2xsaW5nSW50ZXJ2YWwgfHwgNTAwMDtcbiAgICB0aGlzLmxvYWROb3RpZmljYXRpb25zKHRydWUpO1xuICB9XG5cbiAgbG9hZE5vdGlmaWNhdGlvbnMoaW5pdGlhdGU6IGJvb2xlYW4gPSBmYWxzZSkge1xuICAgIHRoaXMuZmV0Y2hOb3RpZmljYXRpb25zKHRoaXMucGFnZUV2ZW50KS5zdWJzY3JpYmUoKHJlc3VsdDogYW55KSA9PiB7XG4gICAgICB0aGlzLm5vdGlmaWNhdGlvbnMgPSB0aGlzLm5vdGlmaWNhdGlvbnMuY29uY2F0KHJlc3VsdC5kYXRhKTtcbiAgICAgIHRoaXMubm90aWZpY2F0aW9ucyA9IFsuLi5uZXcgTWFwKHRoaXMubm90aWZpY2F0aW9ucy5tYXAoaXRlbSA9PlxuICAgICAgICBbaXRlbVsnaWQnXSwgaXRlbV0pKS52YWx1ZXMoKV07XG4gICAgICB0aGlzLnBhZ2VFdmVudC5wYWdlID0gcmVzdWx0LmN1cnJlbnRfcGFnZTtcbiAgICAgIHRoaXMucGFnZUV2ZW50Lmxhc3RQYWdlID0gcmVzdWx0Lmxhc3RfcGFnZTtcbiAgICAgIGlmIChpbml0aWF0ZSkge1xuICAgICAgICB0aGlzLnN0YXJ0Tm90aWZpY2F0aW9uUG9sbGluZygpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgc3RhcnROb3RpZmljYXRpb25Qb2xsaW5nKCkge1xuICAgIHRoaXMuJG5vdGlmaWNhdGlvbkxvYWRlciA9XG4gICAgICBpbnRlcnZhbCh0aGlzLnBvbGxpbmdJbnRlcnZhbClcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgc3dpdGNoTWFwKChfKSA9PiB0aGlzLmZldGNoTm90aWZpY2F0aW9ucyh7IHBhZ2U6IDEsIHBlclBhZ2U6IDI1LCBsYXN0UGFnZTogMSB9KSksXG4gICAgICAgICAgdW50aWxEZXN0cm95ZWQodGhpcylcbiAgICAgICAgKS5zdWJzY3JpYmUoKHJlc3VsdDogYW55KSA9PiB7XG4gICAgICAgICAgLy9Mb29rIGZvciBhbnkgbmV3IG5vdGlmaWNhdGlvbnNcbiAgICAgICAgICBjb25zdCBuZXdOb3RpZmljYXRpb25zOiBhbnlbXSA9IChyZXN1bHQuZGF0YSBhcyBhbnlbXSkuZmlsdGVyKChpdGVtOiBhbnkpID0+ICF0aGlzLm5vdGlmaWNhdGlvbnMuc29tZSgoeDogYW55KSA9PiB4LmlkID09IGl0ZW0uaWQpKTtcbiAgICAgICAgICBpZiAobmV3Tm90aWZpY2F0aW9ucz8ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25zID0gbmV3Tm90aWZpY2F0aW9ucy5jb25jYXQodGhpcy5ub3RpZmljYXRpb25zKTtcbiAgICAgICAgICAgIG5ld05vdGlmaWNhdGlvbnMuZm9yRWFjaCgoaXRlbTogYW55KSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMudG9hc3RyLnN1Y2Nlc3MoaXRlbT8ubm90aWZpY2F0aW9uPy5ib2R5LCBpdGVtPy5ub3RpZmljYXRpb24/LnRpdGxlKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gIH1cblxuICBnZXQgdW5yZWFkTm90aWZpY2F0aW9uc0NvdW50KCkge1xuICAgIHJldHVybiB0aGlzLm5vdGlmaWNhdGlvbnMuZmlsdGVyKHggPT4geC5zdGF0dXNfaWQgPT09IFRlY2hsaWZ5Tm90aWZpY2F0aW9uVXNlclN0YXR1cy5ERUxJVkVSRUQpLmxlbmd0aDtcbiAgfVxuXG5cbiAgZmV0Y2hOb3RpZmljYXRpb25zKHBhZ2VFdmVudDogUGFnZUV2ZW50KTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChgYXBpL25vdGlmaWNhdGlvbi11c2Vyc2AsIHsgcGFyYW1zOiB7IC4uLnRoaXMuZmlsdGVycywgLi4ucGFnZUV2ZW50IH0gfSlcbiAgICAgIC5waXBlKHVudGlsRGVzdHJveWVkKHRoaXMpKTtcbiAgfVxuXG4gIG9uU2Nyb2xsKCkge1xuICAgIGlmICh0aGlzLnBhZ2VFdmVudC5sYXN0UGFnZSA+IHRoaXMucGFnZUV2ZW50LnBhZ2UpIHtcbiAgICAgIHRoaXMucGFnZUV2ZW50LnBhZ2UgKz0gMTtcbiAgICAgIHRoaXMubG9hZE5vdGlmaWNhdGlvbnMoKTtcbiAgICB9XG4gIH1cblxuICBub3RpZmljYXRpb25DbGljayhldmVudDogYW55LCBub3RpZmljYXRpb246IGFueSkge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIHRoaXMuaHR0cC5wYXRjaChgYXBpL25vdGlmaWNhdGlvbi11c2VyLXN0YXR1cy8ke25vdGlmaWNhdGlvbi5pZH1gLCB7IHN0YXR1c19pZDogVGVjaGxpZnlOb3RpZmljYXRpb25Vc2VyU3RhdHVzLlJFQUQgfSlcbiAgICAgIC5waXBlKHVudGlsRGVzdHJveWVkKHRoaXMpKVxuICAgICAgLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5ub3RpZmljYXRpb25zW3RoaXMubm90aWZpY2F0aW9ucy5maW5kSW5kZXgoeCA9PiB4LmlkID09IG5vdGlmaWNhdGlvbi5pZCldID0gcmVzLml0ZW07XG4gICAgICAgIHRoaXMubm90aWZpY2F0aW9ucyA9IFsuLi50aGlzLm5vdGlmaWNhdGlvbnNdO1xuICAgICAgfSk7XG4gIH1cblxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIC8vVW50aWwgZGVzdHJveWVkIHVzZXMgaXRcbiAgICBpZiAodGhpcy4kbm90aWZpY2F0aW9uTG9hZGVyKSB7XG4gICAgICB0aGlzLiRub3RpZmljYXRpb25Mb2FkZXIudW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxufVxuIiwiPGJ1dHRvbiBtYXQtYnV0dG9uIFttYXRNZW51VHJpZ2dlckZvcl09XCJub3RpZmljYWl0b25NZW51XCIgdHlwZT1cImJ1dHRvblwiICNtZW51VHJpZ2dlcj1cIm1hdE1lbnVUcmlnZ2VyXCJcbiAgICBbbWF0QmFkZ2VdPVwidW5yZWFkTm90aWZpY2F0aW9uc0NvdW50XCIgbWF0QmFkZ2VQb3NpdGlvbj1cImFmdGVyXCIgbWF0QmFkZ2VDb2xvcj1cIndhcm5cIlxuICAgIFttYXRCYWRnZUhpZGRlbl09XCJ1bnJlYWROb3RpZmljYXRpb25zQ291bnQgPT0gMFwiPlxuICAgIDxtYXQtaWNvbj5ub3RpZmljYXRpb25zX2FjdGl2ZTwvbWF0LWljb24+XG48L2J1dHRvbj5cblxuPG1hdC1tZW51ICNub3RpZmljYWl0b25NZW51PVwibWF0TWVudVwiIGNsYXNzPVwibm90aWZpY2F0aW9uc1wiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJub3RpZmljYXRpb25zLmxlbmd0aCA+IDAgJiYgbWVudVRyaWdnZXIubWVudU9wZW5cIiBpbmZpbml0ZVNjcm9sbCBbaW5maW5pdGVTY3JvbGxEaXN0YW5jZV09XCIyXCJcbiAgICAgICAgW2luZmluaXRlU2Nyb2xsVGhyb3R0bGVdPVwiNTBcIiAoc2Nyb2xsZWQpPVwib25TY3JvbGwoKVwiIGluZmluaXRlU2Nyb2xsQ29udGFpbmVyPVwiLm1hdC1tZW51LXBhbmVsLm5vdGlmaWNhdGlvbnNcIlxuICAgICAgICBbZnJvbVJvb3RdPVwidHJ1ZVwiPlxuICAgICAgICA8ZGl2IG1hdC1tZW51LWl0ZW0gY2xhc3M9XCJtYXQtZWxldmF0aW9uLXoxIHAtMiBtYXQtdHlwb2dyYXBoeVwiIGZ4TGF5b3V0PVwiY29sdW1uXCJcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIG5vdGlmaWNhdGlvbnNcIiAoY2xpY2spPVwibm90aWZpY2F0aW9uQ2xpY2soJGV2ZW50LCBpdGVtKVwiPlxuICAgICAgICAgICAgPGRpdiBmeExheW91dCBmeExheW91dEFsaWduPVwic3RhcnQgY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgPGgzIGNsYXNzPVwibS0wXCI+e3tpdGVtPy5ub3RpZmljYXRpb24/LnRpdGxlfX08L2gzPlxuICAgICAgICAgICAgICAgIDxzcGFuIGZ4RmxleD48L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyd0ZXh0LXN1Y2Nlc3MnOihpdGVtPy5zdGF0dXNfaWQgPT0gMiksJ3RleHQtc2Vjb25kYXJ5JzooaXRlbT8uc3RhdHVzX2lkID09IDEpfVwiPnt7aXRlbT8uc3RhdHVzPy50aXRsZX19PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1zZWNvbmRhcnlcIj5cbiAgICAgICAgICAgICAgICB7e2l0ZW0/Lm5vdGlmaWNhdGlvbj8uYm9keX19XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPGRpdiBtYXQtbWVudS1pdGVtIGNsYXNzPVwibWF0LWVsZXZhdGlvbi16MSBwLTIgbWF0LXR5cG9ncmFwaHlcIiBmeExheW91dD1cImNvbHVtblwiIGZ4TGF5b3V0QWxpZ249XCJzdGFydCBjZW50ZXJcIlxuICAgICAgICAqbmdJZj1cIm5vdGlmaWNhdGlvbnMubGVuZ3RoID09IDBcIj5cbiAgICAgICAgPHNwYW4+IE5vIE5vdGlmaWNhdGlvbnMgdG8gc2hvdzwvc3Bhbj5cbiAgICA8L2Rpdj5cbjwvbWF0LW1lbnU+Il19
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==
@@ -30,7 +30,7 @@ import * as i1$4 from '@angular/forms';
30
30
  import { UntypedFormControl, Validators, ReactiveFormsModule, FormsModule } from '@angular/forms';
31
31
  import * as i1$2 from '@angular/common/http';
32
32
  import { HttpResponse, HttpClient, HttpClientModule } from '@angular/common/http';
33
- import { throwError, Observable, Subject, fromEvent, of, from, interval } from 'rxjs';
33
+ import { throwError, Observable, Subject, fromEvent, of, from, BehaviorSubject } from 'rxjs';
34
34
  import { catchError, debounceTime, takeUntil, tap, distinctUntilChanged, startWith, switchMap, finalize, map, filter } from 'rxjs/operators';
35
35
  import * as i1$1 from '@angular/material/snack-bar';
36
36
  import { MAT_SNACK_BAR_DATA, MatSnackBarModule } from '@angular/material/snack-bar';
@@ -62,13 +62,14 @@ import * as i1$5 from '@angular/router';
62
62
  import { RouteReuseStrategy, RouterModule, NavigationEnd } from '@angular/router';
63
63
  import * as i7$3 from '@angular/material/divider';
64
64
  import { MatDividerModule } from '@angular/material/divider';
65
- import * as i8$4 from '@angular/material/list';
65
+ import * as i8$3 from '@angular/material/list';
66
66
  import { MatListModule } from '@angular/material/list';
67
67
  import * as i5$1 from '@angular/material/button-toggle';
68
68
  import { MatButtonToggleModule } from '@angular/material/button-toggle';
69
69
  import { FlexLayoutModule } from '@angular/flex-layout';
70
70
  import * as i2$1 from 'ngx-toastr';
71
- import * as i8$3 from '@angular/material/badge';
71
+ import Pusher from 'pusher-js';
72
+ import * as i9$3 from '@angular/material/badge';
72
73
  import { MatBadgeModule } from '@angular/material/badge';
73
74
  import * as i10$1 from '@angular/material/slide-toggle';
74
75
  import { MatSlideToggleModule } from '@angular/material/slide-toggle';
@@ -4265,10 +4266,49 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImpor
4265
4266
  }]
4266
4267
  }] });
4267
4268
 
4269
+ class PusherService {
4270
+ constructor(credentialService) {
4271
+ this.credentialService = credentialService;
4272
+ this.pusher = new BehaviorSubject(null);
4273
+ this.initPusher();
4274
+ }
4275
+ initPusher() {
4276
+ var _a, _b, _c;
4277
+ console.log('Init Pusher');
4278
+ if (this.pusher.value) {
4279
+ this.pusher.value.disconnect();
4280
+ }
4281
+ console.log('pusher', this.pusher);
4282
+ this.pusher.next(new Pusher('74cae52a04e85d893bc2', {
4283
+ cluster: 'us2',
4284
+ forceTLS: true,
4285
+ authEndpoint: 'http://localhost/emr-api/public/broadcasting/auth',
4286
+ auth: {
4287
+ headers: {
4288
+ Authorization: 'Bearer ' + ((_c = (_b = (_a = this.credentialService) === null || _a === void 0 ? void 0 : _a.credentials) === null || _b === void 0 ? void 0 : _b.token) === null || _c === void 0 ? void 0 : _c.access_token)
4289
+ }
4290
+ }
4291
+ }));
4292
+ }
4293
+ getPusher() {
4294
+ return this.pusher.asObservable();
4295
+ }
4296
+ }
4297
+ PusherService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: PusherService, deps: [{ token: CredentialsService }], target: i0.ɵɵFactoryTarget.Injectable });
4298
+ PusherService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: PusherService, providedIn: 'root' });
4299
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: PusherService, decorators: [{
4300
+ type: Injectable,
4301
+ args: [{
4302
+ providedIn: 'root'
4303
+ }]
4304
+ }], ctorParameters: function () { return [{ type: CredentialsService }]; } });
4305
+
4268
4306
  let NgxTechlifyNotifierComponent = class NgxTechlifyNotifierComponent {
4269
- constructor(http, toastr, environment) {
4307
+ constructor(http, toastr, credentialService, pusherService, environment) {
4270
4308
  this.http = http;
4271
4309
  this.toastr = toastr;
4310
+ this.credentialService = credentialService;
4311
+ this.pusherService = pusherService;
4272
4312
  this.environment = environment;
4273
4313
  this.notifications = [];
4274
4314
  this.pageEvent = { page: 1, perPage: 25, lastPage: 1 };
@@ -4277,39 +4317,24 @@ let NgxTechlifyNotifierComponent = class NgxTechlifyNotifierComponent {
4277
4317
  isLoadRelations: true,
4278
4318
  relations: 'status,notification'
4279
4319
  };
4320
+ this.user = this.credentialService.credentials.user;
4280
4321
  }
4281
4322
  ngOnInit() {
4282
- var _a, _b;
4323
+ var _a;
4324
+ console.log('Init Notifications');
4283
4325
  this.rootScrollContainer = ((_a = this.environment) === null || _a === void 0 ? void 0 : _a.rootScrollContainer) || 'body';
4284
- this.pollingInterval = ((_b = this.environment) === null || _b === void 0 ? void 0 : _b.notificationPollingInterval) || 5000;
4285
- this.loadNotifications(true);
4326
+ // this.pollingInterval = this.environment?.notificationPollingInterval || 5000;
4327
+ this.pushNotifications();
4286
4328
  }
4287
4329
  loadNotifications(initiate = false) {
4330
+ console.log('Load Notifications');
4288
4331
  this.fetchNotifications(this.pageEvent).subscribe((result) => {
4289
4332
  this.notifications = this.notifications.concat(result.data);
4290
4333
  this.notifications = [...new Map(this.notifications.map(item => [item['id'], item])).values()];
4291
4334
  this.pageEvent.page = result.current_page;
4292
4335
  this.pageEvent.lastPage = result.last_page;
4293
- if (initiate) {
4294
- this.startNotificationPolling();
4295
- }
4296
4336
  });
4297
4337
  }
4298
- startNotificationPolling() {
4299
- this.$notificationLoader =
4300
- interval(this.pollingInterval)
4301
- .pipe(switchMap((_) => this.fetchNotifications({ page: 1, perPage: 25, lastPage: 1 })), untilDestroyed(this)).subscribe((result) => {
4302
- //Look for any new notifications
4303
- const newNotifications = result.data.filter((item) => !this.notifications.some((x) => x.id == item.id));
4304
- if ((newNotifications === null || newNotifications === void 0 ? void 0 : newNotifications.length) > 0) {
4305
- this.notifications = newNotifications.concat(this.notifications);
4306
- newNotifications.forEach((item) => {
4307
- var _a, _b;
4308
- this.toastr.success((_a = item === null || item === void 0 ? void 0 : item.notification) === null || _a === void 0 ? void 0 : _a.body, (_b = item === null || item === void 0 ? void 0 : item.notification) === null || _b === void 0 ? void 0 : _b.title);
4309
- });
4310
- }
4311
- });
4312
- }
4313
4338
  get unreadNotificationsCount() {
4314
4339
  return this.notifications.filter(x => x.status_id === TechlifyNotificationUserStatus.DELIVERED).length;
4315
4340
  }
@@ -4317,6 +4342,24 @@ let NgxTechlifyNotifierComponent = class NgxTechlifyNotifierComponent {
4317
4342
  return this.http.get(`api/notification-users`, { params: Object.assign(Object.assign({}, this.filters), pageEvent) })
4318
4343
  .pipe(untilDestroyed(this));
4319
4344
  }
4345
+ pushNotifications() {
4346
+ console.log('Push Notifications');
4347
+ if (this.user) {
4348
+ console.log('Found User');
4349
+ // load messages
4350
+ this.loadNotifications();
4351
+ // get pusher
4352
+ this.pusherService.getPusher().subscribe((pusher) => {
4353
+ // generate channel name
4354
+ let channelName = `notification-channel-32`;
4355
+ // subscribe to chat channel
4356
+ this.channel = pusher.subscribe(channelName);
4357
+ this.channel = this.channel.bind('notification-event', (e) => {
4358
+ console.log(e);
4359
+ });
4360
+ });
4361
+ }
4362
+ }
4320
4363
  onScroll() {
4321
4364
  if (this.pageEvent.lastPage > this.pageEvent.page) {
4322
4365
  this.pageEvent.page += 1;
@@ -4339,16 +4382,16 @@ let NgxTechlifyNotifierComponent = class NgxTechlifyNotifierComponent {
4339
4382
  }
4340
4383
  }
4341
4384
  };
4342
- NgxTechlifyNotifierComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: NgxTechlifyNotifierComponent, deps: [{ token: HttpService }, { token: i2$1.ToastrService }, { token: 'environment' }], target: i0.ɵɵFactoryTarget.Component });
4343
- 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)}\">{{item?.status?.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: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.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: i5.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$1.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: i8$3.MatBadge, selector: "[matBadge]", inputs: ["matBadgeDisabled", "matBadgeColor", "matBadgeOverlap", "matBadgePosition", "matBadge", "matBadgeDescription", "matBadgeSize", "matBadgeHidden"] }, { kind: "directive", type: i7.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: i7.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: i7.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: i2.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"] }] });
4385
+ NgxTechlifyNotifierComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: NgxTechlifyNotifierComponent, deps: [{ token: HttpService }, { token: i2$1.ToastrService }, { token: CredentialsService }, { token: PusherService }, { token: 'environment' }], target: i0.ɵɵFactoryTarget.Component });
4386
+ 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: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.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: i5.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$1.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$3.MatBadge, selector: "[matBadge]", inputs: ["matBadgeDisabled", "matBadgeColor", "matBadgeOverlap", "matBadgePosition", "matBadge", "matBadgeDescription", "matBadgeSize", "matBadgeHidden"] }, { kind: "directive", type: i7.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: i7.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: i7.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: i2.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"] }] });
4344
4387
  NgxTechlifyNotifierComponent = __decorate([
4345
4388
  UntilDestroy()
4346
4389
  ], NgxTechlifyNotifierComponent);
4347
4390
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: NgxTechlifyNotifierComponent, decorators: [{
4348
4391
  type: Component,
4349
- 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)}\">{{item?.status?.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"] }]
4392
+ 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"] }]
4350
4393
  }], ctorParameters: function () {
4351
- return [{ type: HttpService }, { type: i2$1.ToastrService }, { type: undefined, decorators: [{
4394
+ return [{ type: HttpService }, { type: i2$1.ToastrService }, { type: CredentialsService }, { type: PusherService }, { type: undefined, decorators: [{
4352
4395
  type: Inject,
4353
4396
  args: ['environment']
4354
4397
  }] }];
@@ -4452,7 +4495,7 @@ let TechlifyNotificationForUserComponent = class TechlifyNotificationForUserComp
4452
4495
  }
4453
4496
  };
4454
4497
  TechlifyNotificationForUserComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: TechlifyNotificationForUserComponent, deps: [{ token: HttpService }, { token: 'environment' }], target: i0.ɵɵFactoryTarget.Component });
4455
- TechlifyNotificationForUserComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: TechlifyNotificationForUserComponent, selector: "app-techlify-notification-for-user", inputs: { blockAdminNotification: "blockAdminNotification" }, ngImport: i0, template: "<div fxLayout=\"column\" class=\"container my-4\">\n\n <div infiniteScroll [infiniteScrollDistance]=\"2\" [infiniteScrollThrottle]=\"50\" (scrolled)=\"onScroll()\"\n [fromRoot]=\"true\" [infiniteScrollContainer]=\"rootScrollContainer\">\n <mat-list>\n <div mat-subheader>Notifications</div>\n <mat-list-item *ngFor=\"let notification of notifications\">\n <mat-icon mat-list-icon>email</mat-icon>\n <div mat-line>{{notification?.title}} </div>\n <div mat-line> {{notification?.description}} </div>\n <div fxLayout fxLayoutAlign=\"end\">\n <button *ngIf=\"notification?.current_user_subscription?.is_subscribed\" type=\"button\"\n mat-stroked-button color=\"primary\" (click)=\"toggleSubscription(notification)\">\n Unsubscribe\n </button>\n <button *ngIf=\"!notification?.current_user_subscription?.is_subscribed\" type=\"button\"\n mat-raised-button color=\"primary\" (click)=\"toggleSubscription(notification)\">\n Subscribe\n </button>\n </div>\n <mat-divider></mat-divider>\n </mat-list-item>\n </mat-list>\n </div>\n\n</div>", styles: [""], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.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: i5.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$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i8$1.MatLine, selector: "[mat-line], [matLine]" }, { kind: "component", type: i7$3.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "component", type: i8$4.MatList, selector: "mat-list, mat-action-list", inputs: ["disableRipple", "disabled"], exportAs: ["matList"] }, { kind: "component", type: i8$4.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["disableRipple", "disabled"], exportAs: ["matListItem"] }, { kind: "directive", type: i8$4.MatListIconCssMatStyler, selector: "[mat-list-icon], [matListIcon]" }, { kind: "directive", type: i8$4.MatListSubheaderCssMatStyler, selector: "[mat-subheader], [matSubheader]" }, { kind: "directive", type: i7.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: i7.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"] }] });
4498
+ TechlifyNotificationForUserComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: TechlifyNotificationForUserComponent, selector: "app-techlify-notification-for-user", inputs: { blockAdminNotification: "blockAdminNotification" }, ngImport: i0, template: "<div fxLayout=\"column\" class=\"container my-4\">\n\n <div infiniteScroll [infiniteScrollDistance]=\"2\" [infiniteScrollThrottle]=\"50\" (scrolled)=\"onScroll()\"\n [fromRoot]=\"true\" [infiniteScrollContainer]=\"rootScrollContainer\">\n <mat-list>\n <div mat-subheader>Notifications</div>\n <mat-list-item *ngFor=\"let notification of notifications\">\n <mat-icon mat-list-icon>email</mat-icon>\n <div mat-line>{{notification?.title}} </div>\n <div mat-line> {{notification?.description}} </div>\n <div fxLayout fxLayoutAlign=\"end\">\n <button *ngIf=\"notification?.current_user_subscription?.is_subscribed\" type=\"button\"\n mat-stroked-button color=\"primary\" (click)=\"toggleSubscription(notification)\">\n Unsubscribe\n </button>\n <button *ngIf=\"!notification?.current_user_subscription?.is_subscribed\" type=\"button\"\n mat-raised-button color=\"primary\" (click)=\"toggleSubscription(notification)\">\n Subscribe\n </button>\n </div>\n <mat-divider></mat-divider>\n </mat-list-item>\n </mat-list>\n </div>\n\n</div>", styles: [""], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.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: i5.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$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i8$1.MatLine, selector: "[mat-line], [matLine]" }, { kind: "component", type: i7$3.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "component", type: i8$3.MatList, selector: "mat-list, mat-action-list", inputs: ["disableRipple", "disabled"], exportAs: ["matList"] }, { kind: "component", type: i8$3.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["disableRipple", "disabled"], exportAs: ["matListItem"] }, { kind: "directive", type: i8$3.MatListIconCssMatStyler, selector: "[mat-list-icon], [matListIcon]" }, { kind: "directive", type: i8$3.MatListSubheaderCssMatStyler, selector: "[mat-subheader], [matSubheader]" }, { kind: "directive", type: i7.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: i7.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"] }] });
4456
4499
  TechlifyNotificationForUserComponent = __decorate([
4457
4500
  UntilDestroy()
4458
4501
  ], TechlifyNotificationForUserComponent);
@@ -6528,7 +6571,7 @@ let EmailSubscriptionForUserComponent = class EmailSubscriptionForUserComponent
6528
6571
  }
6529
6572
  };
6530
6573
  EmailSubscriptionForUserComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: EmailSubscriptionForUserComponent, deps: [{ token: HttpService }], target: i0.ɵɵFactoryTarget.Component });
6531
- EmailSubscriptionForUserComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: EmailSubscriptionForUserComponent, selector: "app-email-subscription-for-user", ngImport: i0, template: "<div fxLayout=\"column\" class=\"container my-4\">\n\n <div class=\"scroll-container\" infiniteScroll [infiniteScrollDistance]=\"2\" [infiniteScrollThrottle]=\"50\"\n (scrolled)=\"onScroll()\" [scrollWindow]=\"false\">\n <mat-list>\n <div mat-subheader>Available Subscriptions</div>\n <mat-list-item *ngFor=\"let sub of subscriptions\">\n <mat-icon mat-list-icon>email</mat-icon>\n <div mat-line>{{sub?.title}} </div>\n <div mat-line class=\"text-secondary\">{{sub?.frequency?.title}}</div>\n <div mat-line> {{sub?.description}} </div>\n <div fxLayout fxLayoutAlign=\"end\">\n <button type=\"button\" *ngIf=\"!sub?.current_user_subscription\" mat-raised-button color=\"primary\"\n (click)=\"subscribe(sub)\">Subscribe</button>\n <button type=\"button\" *ngIf=\"sub?.current_user_subscription\" mat-stroked-button color=\"primary\"\n (click)=\"unsubscribe(sub)\">Unsubscribe</button>\n </div>\n <mat-divider></mat-divider>\n </mat-list-item>\n </mat-list>\n </div>\n\n</div>", styles: [".scroll-container{max-height:800px;overflow-y:auto}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.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: i5.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$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i8$1.MatLine, selector: "[mat-line], [matLine]" }, { kind: "component", type: i7$3.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "component", type: i8$4.MatList, selector: "mat-list, mat-action-list", inputs: ["disableRipple", "disabled"], exportAs: ["matList"] }, { kind: "component", type: i8$4.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["disableRipple", "disabled"], exportAs: ["matListItem"] }, { kind: "directive", type: i8$4.MatListIconCssMatStyler, selector: "[mat-list-icon], [matListIcon]" }, { kind: "directive", type: i8$4.MatListSubheaderCssMatStyler, selector: "[mat-subheader], [matSubheader]" }, { kind: "directive", type: i7.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: i7.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"] }] });
6574
+ EmailSubscriptionForUserComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: EmailSubscriptionForUserComponent, selector: "app-email-subscription-for-user", ngImport: i0, template: "<div fxLayout=\"column\" class=\"container my-4\">\n\n <div class=\"scroll-container\" infiniteScroll [infiniteScrollDistance]=\"2\" [infiniteScrollThrottle]=\"50\"\n (scrolled)=\"onScroll()\" [scrollWindow]=\"false\">\n <mat-list>\n <div mat-subheader>Available Subscriptions</div>\n <mat-list-item *ngFor=\"let sub of subscriptions\">\n <mat-icon mat-list-icon>email</mat-icon>\n <div mat-line>{{sub?.title}} </div>\n <div mat-line class=\"text-secondary\">{{sub?.frequency?.title}}</div>\n <div mat-line> {{sub?.description}} </div>\n <div fxLayout fxLayoutAlign=\"end\">\n <button type=\"button\" *ngIf=\"!sub?.current_user_subscription\" mat-raised-button color=\"primary\"\n (click)=\"subscribe(sub)\">Subscribe</button>\n <button type=\"button\" *ngIf=\"sub?.current_user_subscription\" mat-stroked-button color=\"primary\"\n (click)=\"unsubscribe(sub)\">Unsubscribe</button>\n </div>\n <mat-divider></mat-divider>\n </mat-list-item>\n </mat-list>\n </div>\n\n</div>", styles: [".scroll-container{max-height:800px;overflow-y:auto}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.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: i5.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$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i8$1.MatLine, selector: "[mat-line], [matLine]" }, { kind: "component", type: i7$3.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "component", type: i8$3.MatList, selector: "mat-list, mat-action-list", inputs: ["disableRipple", "disabled"], exportAs: ["matList"] }, { kind: "component", type: i8$3.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["disableRipple", "disabled"], exportAs: ["matListItem"] }, { kind: "directive", type: i8$3.MatListIconCssMatStyler, selector: "[mat-list-icon], [matListIcon]" }, { kind: "directive", type: i8$3.MatListSubheaderCssMatStyler, selector: "[mat-subheader], [matSubheader]" }, { kind: "directive", type: i7.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: i7.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"] }] });
6532
6575
  EmailSubscriptionForUserComponent = __decorate([
6533
6576
  UntilDestroy()
6534
6577
  ], EmailSubscriptionForUserComponent);