@rtsee/ngx 0.0.29 → 0.0.31

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.
@@ -1 +1 @@
1
- {"version":3,"file":"rtsee-ngx.umd.js","sources":["../../../projects/ngx/src/lib/ngx.service.ts","../../../projects/ngx/src/lib/components/rtsee/rtsee-controls/rtsee-controls.component.ts","../../../projects/ngx/src/lib/components/rtsee/rtsee-controls/rtsee-controls.component.html","../../../projects/ngx/src/lib/components/rtsee-settings/rtsee-settings.component.ts","../../../projects/ngx/src/lib/components/rtsee-settings/rtsee-settings.component.html","../../../projects/ngx/src/lib/components/rtsee-soundbar/rtsee-soundbar.component.ts","../../../projects/ngx/src/lib/components/rtsee-soundbar/rtsee-soundbar.component.html","../../../projects/ngx/src/lib/components/rtsee-peer/rtsee-peer.component.ts","../../../projects/ngx/src/lib/components/rtsee-peer/rtsee-peer.component.html","../../../projects/ngx/src/lib/components/rtsee/rtsee.component.ts","../../../projects/ngx/src/lib/components/rtsee/rtsee.component.html","../../../projects/ngx/src/lib/services/default-images.service.ts","../../../projects/ngx/src/lib/components/rtsee-messenger/profile/profile.component.ts","../../../projects/ngx/src/lib/components/rtsee-messenger/profile/profile.component.html","../../../projects/ngx/src/lib/components/rtsee-messenger/messenger-header/messenger-header.component.ts","../../../projects/ngx/src/lib/components/rtsee-messenger/messenger-header/messenger-header.component.html","../../../projects/ngx/src/lib/services/time-format-helper.service.ts","../../../projects/ngx/src/lib/common/components/preloader/preloader.component.ts","../../../projects/ngx/src/lib/common/components/preloader/preloader.component.html","../../../projects/ngx/src/lib/components/rtsee-messenger/message/components/message-time-and-status/message-time-and-status.component.ts","../../../projects/ngx/src/lib/components/rtsee-messenger/message/components/message-time-and-status/message-time-and-status.component.html","../../../projects/ngx/src/lib/directives/shave.directive.ts","../../../projects/ngx/src/lib/components/rtsee-messenger/chat-thumbnail/chat-thumbnail.component.ts","../../../projects/ngx/src/lib/components/rtsee-messenger/chat-thumbnail/chat-thumbnail.component.html","../../../projects/ngx/src/lib/components/rtsee-messenger/chats-list/chats-list.component.ts","../../../projects/ngx/src/lib/components/rtsee-messenger/chats-list/chats-list.component.html","../../../projects/ngx/src/lib/directives/widget.directive.ts","../../../projects/ngx/src/lib/components/rtsee-messenger/message-widgets/call-widget/call-widget.component.ts","../../../projects/ngx/src/lib/components/rtsee-messenger/message-widgets/call-widget/call-widget.component.html","../../../projects/ngx/src/lib/services/message-widgets.service.ts","../../../projects/ngx/src/lib/components/rtsee-messenger/message/message.component.ts","../../../projects/ngx/src/lib/components/rtsee-messenger/message/message.component.html","../../../projects/ngx/src/lib/components/rtsee-messenger/messages-list/messages-list.component.ts","../../../projects/ngx/src/lib/components/rtsee-messenger/messages-list/messages-list.component.html","../../../projects/ngx/src/lib/components/rtsee-messenger/chat-input/chat-input.component.ts","../../../projects/ngx/src/lib/components/rtsee-messenger/chat-input/chat-input.component.html","../../../projects/ngx/src/lib/components/rtsee-messenger/chat/chat.component.ts","../../../projects/ngx/src/lib/components/rtsee-messenger/chat/chat.component.html","../../../projects/ngx/src/lib/components/rtsee-messenger/main-menu/components/models/MainMenuState.ts","../../../projects/ngx/src/lib/components/rtsee-messenger/main-menu/components/search/search.component.ts","../../../projects/ngx/src/lib/components/rtsee-messenger/main-menu/components/search/search.component.html","../../../projects/ngx/src/lib/components/rtsee-messenger/main-menu/components/manage-chat/manage-chat.component.ts","../../../projects/ngx/src/lib/components/rtsee-messenger/main-menu/components/manage-chat/manage-chat.component.html","../../../projects/ngx/src/lib/components/rtsee-messenger/main-menu/components/contacts-multiselect/contacts-multiselect.component.ts","../../../projects/ngx/src/lib/components/rtsee-messenger/main-menu/components/contacts-multiselect/contacts-multiselect.component.html","../../../projects/ngx/src/lib/components/rtsee-messenger/main-menu/main-menu.component.ts","../../../projects/ngx/src/lib/components/rtsee-messenger/main-menu/main-menu.component.html","../../../projects/ngx/src/lib/components/rtsee-messenger/messenger/messenger.component.ts","../../../projects/ngx/src/lib/components/rtsee-messenger/messenger/messenger.component.html","../../../projects/ngx/src/lib/services/events-widgets.service.ts","../../../projects/ngx/src/lib/components/rtsee-events-dashboard/components/event-thumbnail/event-thumbnail.component.ts","../../../projects/ngx/src/lib/components/rtsee-events-dashboard/components/event-thumbnail/event-thumbnail.component.html","../../../projects/ngx/src/lib/components/rtsee-events-dashboard/components/rtsee-events-dashboard-session/rtsee-events-dashboard-session.component.ts","../../../projects/ngx/src/lib/components/rtsee-events-dashboard/components/rtsee-events-dashboard-session/rtsee-events-dashboard-session.component.html","../../../projects/ngx/src/lib/components/rtsee-events-dashboard/components/rtsee-events-dashboard-client-thumbnail/rtsee-events-dashboard-client-thumbnail.component.ts","../../../projects/ngx/src/lib/components/rtsee-events-dashboard/components/rtsee-events-dashboard-client-thumbnail/rtsee-events-dashboard-client-thumbnail.component.html","../../../projects/ngx/src/lib/components/rtsee-events-dashboard/rtsee-events-dashboard.component.ts","../../../projects/ngx/src/lib/components/rtsee-events-dashboard/rtsee-events-dashboard.component.html","../../../projects/ngx/src/lib/components/rtsee-peers-list/rtsee-peers-list.component.ts","../../../projects/ngx/src/lib/components/rtsee-peers-list/rtsee-peers-list.component.html","../../../projects/ngx/src/lib/components/rtsee-events-dashboard/components/rtsee-events-dashboard-client/rtsee-events-dashboard-client.component.ts","../../../projects/ngx/src/lib/components/rtsee-events-dashboard/components/rtsee-events-dashboard-client/rtsee-events-dashboard-client.component.html","../../../projects/ngx/src/lib/components/rtsee-container/rtsee-container.component.ts","../../../projects/ngx/src/lib/components/rtsee-container/rtsee-container.component.html","../../../projects/ngx/src/lib/ngx.module.ts","../../../projects/ngx/src/public-api.ts","../../../projects/ngx/src/rtsee-ngx.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class NgxService {\n lol: string;\n constructor() {\n this.lol = 'lol';\n }\n}\n","import { Component, Input } from '@angular/core';\nimport { RTSeeVideoChat } from '@rtsee/core';\n\n@Component({\n selector: 'ngx-rtsee-controls',\n templateUrl: './rtsee-controls.component.html',\n styleUrls: ['./rtsee-controls.component.scss'],\n})\nexport class RTSeeControlsComponent {\n @Input() rtsee!: RTSeeVideoChat;\n @Input() fullScreenMode?: boolean;\n\n onPresentClicked() {\n return this.rtsee.isPresenter\n ? this.rtsee.stopScreenShare()\n : this.rtsee.startScreenShare();\n }\n}\n","<div class=\"rtsee-controls\" [ngClass]=\"{'rtsee-full-screen-controls' : fullScreenMode }\">\n <div class=\"rtsee-bottom-panel\">\n <div class=\"mic rtsee-buttons-container\">\n <button mat-icon-button matSuffix\n class=\"rtsee-ripple-button\"\n *ngIf=\"rtsee.microphone\"\n type=\"button\"\n (click)=\"this.rtsee.disableMicrophone()\"\n >\n <span class=\"material-icons-outlined\">mic_none</span>\n </button>\n <button mat-icon-button matSuffix\n class=\"rtsee-ripple-button\"\n *ngIf=\"!rtsee.microphone\"\n type=\"button\" (click)=\"this.rtsee.enableMicrophone()\"\n >\n <span class=\"material-icons-outlined\">mic_off</span>\n </button>\n </div>\n\n <div class=\"video-camera rtsee-buttons-container\">\n <button mat-icon-button matSuffix\n class=\"rtsee-ripple-button\"\n *ngIf=\"rtsee.camera\"\n type=\"button\"\n (click)=\"rtsee.disableCamera()\"\n >\n <span class=\"material-icons-outlined\">videocam</span>\n </button>\n <button mat-icon-button matSuffix\n class=\"rtsee-ripple-button\"\n *ngIf=\"!rtsee.camera\"\n type=\"button\"\n (click)=\"rtsee.enableCamera()\"\n >\n <span class=\"material-icons-outlined\">videocam_off</span>\n </button>\n </div>\n <div class=\"present rtsee-buttons-container\" [ngClass]=\"{'rtsee-present-button-container': rtsee.isPresenter}\">\n <button mat-icon-button matSuffix\n class=\"rtsee-ripple-button\"\n type=\"button\"\n (click)=\"onPresentClicked()\"\n >\n <span class=\"material-icons-outlined\">present_to_all</span>\n </button>\n </div>\n <div class=\"call-end rtsee-buttons-container\">\n <button mat-icon-button matSuffix\n class=\"rtsee-ripple-button\"\n type=\"button\"\n (click)=\"rtsee.end()\"\n >\n <span class=\"material-icons-outlined\">call_end</span>\n </button>\n </div>\n </div>\n</div>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { RTSeeVideoChat } from '@rtsee/core';\n\n@Component({\n selector: 'ngx-rtsee-settings',\n templateUrl: './rtsee-settings.component.html',\n styleUrls: ['./rtsee-settings.component.scss'],\n})\nexport class RtseeSettingsComponent implements OnInit {\n availableAudioInputDevices: MediaDeviceInfo[];\n availableVideoInputDevices: MediaDeviceInfo[];\n availableAudioOutputDevices: MediaDeviceInfo[];\n\n @Input() rtSee!: RTSeeVideoChat;\n @Input() fullScreenMode!: boolean;\n constructor() {\n this.availableAudioInputDevices = [];\n this.availableVideoInputDevices = [];\n this.availableAudioOutputDevices = [];\n }\n\n ngOnInit(): void {\n this.refreshSelectOptions();\n }\n\n refreshSelectOptions() {\n void this.rtSee.refreshMediaDevicesList();\n }\n\n setAudioInput(deviceId: string) {\n this.rtSee.setAudioInputDevice(deviceId);\n console.log(deviceId);\n }\n\n setAudioOutput(deviceId: string) {\n this.rtSee.setAudioOutputDevice(deviceId);\n }\n\n setVideoInput(deviceId: string) {\n this.rtSee.setVideoInputDevice(deviceId);\n }\n}\n","<div class=\"rtsee-settings\" [ngClass]=\"{'rtsee-full-screen-settings' : fullScreenMode}\">\n <div class=\"rtsee-devices\">\n <div class=\"rtsee-device-select-wrapper\">\n <label class=\"rtsee-select-label\" for=\"audio-input\">Audio Input:</label>\n <select class=\"rtsee-select\" id=\"audio-input\" (click)=\"refreshSelectOptions()\">\n <option *ngFor=\"let device of rtSee.audioInputDevices\" [value]=\"device.deviceId\" (click)=\"setAudioInput(device.deviceId)\">\n {{device.label}}\n </option>\n </select>\n </div>\n <div class=\"rtsee-device-select-wrapper\">\n <label class=\"rtsee-select-label\" for=\"audio-output\">Audio Output:</label>\n <select class=\"rtsee-select\" id=\"audio-output\" (click)=\"refreshSelectOptions()\">\n <option *ngFor=\"let device of rtSee.audioOutputDevices\" [value]=\"device.deviceId\" (click)=\"setAudioOutput(device.deviceId)\">\n {{device.label}}\n </option>\n </select>\n </div>\n <div class=\"rtsee-device-select-wrapper\">\n <label class=\"rtsee-select-label\" for=\"video-input\">Video Input:</label>\n <select class=\"rtsee-select\" id=\"video-input\" (click)=\"refreshSelectOptions()\">\n <option *ngFor=\"let device of rtSee.videoInputDevices\" [value]=\"device.deviceId\" (click)=\"setVideoInput(device.deviceId)\">\n {{device.label}}\n </option>\n </select>\n </div>\n </div>\n</div>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { RTSeePeerConnection } from '@rtsee/core';\nimport { interval } from 'rxjs';\n\n@Component({\n selector: 'ngx-rtsee-soundbar',\n templateUrl: './rtsee-soundbar.component.html',\n styleUrls: ['./rtsee-soundbar.component.scss'],\n})\nexport class RtseeSoundbarComponent implements OnInit {\n intervalLength: number;\n noiceLevel: number;\n scaleOneLevel: number;\n scaleTwoLevel: number;\n scaleThreeLevel: number;\n\n @Input() peer!: RTSeePeerConnection;\n constructor() {\n this.intervalLength = 1000;\n this.noiceLevel = 0;\n this.scaleOneLevel = 0;\n this.scaleTwoLevel = 0;\n this.scaleThreeLevel = 0;\n }\n\n ngOnInit(): void {\n this.startSoundMeterListening();\n }\n\n startSoundMeterListening() {\n const step = interval(1000 / 10);\n step.subscribe(() => {\n if (!this.peer.soundMeter || !this.peer.soundMeter.level) {\n this.noiceLevel = 0;\n } else {\n this.noiceLevel = this.peer.soundMeter?.level * 100 || 0;\n }\n\n this.setSoundMeterHeights();\n });\n }\n\n setSoundMeterHeights() {\n const ZERO_LEVEL = 25;\n const SCALE_STEP = 25;\n const SCALE_ONE_TOP = ZERO_LEVEL + SCALE_STEP;\n const SCALE_TWO_TOP = SCALE_ONE_TOP + SCALE_STEP;\n\n if (!this.peer || !this.peer.soundMeter || this.noiceLevel < ZERO_LEVEL) {\n this.scaleOneLevel = 0;\n this.scaleTwoLevel = 0;\n this.scaleThreeLevel = 0;\n }\n\n const scaleOneValue = ((this.noiceLevel - ZERO_LEVEL) / SCALE_STEP) * 100;\n const scaleTwoValue =\n ((this.noiceLevel - SCALE_ONE_TOP) / SCALE_STEP) * 100;\n const scaleThreeValue =\n ((this.noiceLevel - SCALE_TWO_TOP) / SCALE_STEP) * 100;\n\n this.scaleOneLevel = scaleOneValue > 0 ? scaleOneValue : 0;\n this.scaleTwoLevel = scaleTwoValue > 0 ? scaleTwoValue : 0;\n this.scaleThreeLevel = scaleThreeValue > 0 ? scaleTwoValue : 0;\n }\n}\n","<div class=\"rtsee-soundbar\">\n <div class=\"rtsee-soundbar-scale\">\n <div class=\"rtsee-soundbar-scale-item\">\n <div class=\"rtsee-soundbar-scale-item-level rtsee-soundbar-scale-item-level-one\"\n [style.height.%]=\"scaleOneLevel\"\n ></div>\n </div>\n <div class=\"rtsee-soundbar-scale-item\">\n <div class=\"rtsee-soundbar-scale-item-level rtsee-soundbar-scale-item-level-two\"\n [style.height.%]=\"scaleTwoLevel\"\n ></div>\n </div>\n <div class=\"rtsee-soundbar-scale-item\">\n <div class=\"rtsee-soundbar-scale-item-level rtsee-soundbar-scale-item-level-three\"\n [style.height.%]=\"scaleThreeLevel\"\n ></div>\n </div>\n </div>\n</div>\n","import {\n AfterViewInit,\n Component,\n ElementRef,\n Input,\n ViewChild,\n} from '@angular/core';\nimport { RTSeePeerConnection } from '@rtsee/core';\n\n@Component({\n selector: 'ngx-rtsee-peer',\n templateUrl: './rtsee-peer.component.html',\n styleUrls: ['./rtsee-peer.component.scss'],\n})\nexport class RtseePeerComponent implements AfterViewInit {\n intervalLength: number;\n noiceLevel: number;\n\n @ViewChild('audioOutput') audioOutput?: ElementRef;\n @ViewChild('videoOutput') videoOutput?: ElementRef;\n @Input() peer!: RTSeePeerConnection;\n\n constructor() {\n this.intervalLength = 1000;\n this.noiceLevel = 0;\n }\n\n ngAfterViewInit(): void {\n if (!this.audioOutput) {\n return;\n }\n this.peer.setAudioOutputElement(\n this.audioOutput.nativeElement as HTMLAudioElement\n );\n }\n}\n","<div class=\"rtsee-peer\" [ngClass]=\"{\n'rtsee-peer-video-disabled': !peer.remoteVideoStream || !peer.camera\n}\">\n <div class=\"rtsee-peer-content\">\n <div class=\"rtsee-peer-photo\" *ngIf=\"!peer.camera\">\n <div class=\"rtsee-peer-photo-wrapper\">\n <div *ngIf=\"peer.imageUrl\"\n [style.background-image]=\"'url(' + peer.imageUrl + ')'\"\n class=\"rtsee-peer-photo-image\"\n ></div>\n <img *ngIf=\"!peer.imageUrl\" [src]=\"\" alt=\"peer_photo\" class=\"rtsee-peer-photo-image\">\n </div>\n <div class=\"rtsee-peer-info\">\n <p class=\"rtsee-peer-name\" *ngIf=\"peer.name\">{{peer.name}}</p>\n </div>\n </div>\n <video #videoOutput\n class=\"rtsee-peer-video\"\n [autoplay]=\"true\"\n [srcObject]=\"peer.remoteVideoStream\"\n playsinline=\"true\"\n >\n </video>\n <div class=\"rtsee-peer-soundbar\">\n <ngx-rtsee-soundbar [peer]=\"peer\"></ngx-rtsee-soundbar>\n </div>\n </div>\n</div>\n","import { Component, Input } from '@angular/core';\nimport { RTSeeVideoChat } from '@rtsee/core';\n\n@Component({\n selector: 'ngx-rtsee',\n templateUrl: './rtsee.component.html',\n styleUrls: ['./rtsee.component.scss'],\n})\nexport class RTSeeComponent {\n settingsViewEnabled: boolean;\n fullScreenModeEnabled: boolean;\n\n @Input() rtSee!: RTSeeVideoChat;\n constructor() {\n this.settingsViewEnabled = false;\n this.fullScreenModeEnabled = false;\n }\n\n toggleSettings() {\n this.settingsViewEnabled = !this.settingsViewEnabled;\n }\n\n toggleFullScreenMode() {\n this.fullScreenModeEnabled = !this.fullScreenModeEnabled;\n }\n}\n","<div class=\"rtsee-shell\" [ngClass]=\"{\n'rtsee-shell-expanded': rtSee.uiControls.isExpanded || fullScreenModeEnabled,\n'rtsee-shell-no-companions': !rtSee.rtcPeerConnections.connections?.length\n}\">\n <div class=\"rtsee-local-peer\" *ngIf=\"rtSee.localStream && rtSee.camera\">\n <video class=\"rtsee-local-video\"\n [autoplay]=\"true\"\n [muted]=\"true\"\n [srcObject]=\"rtSee.localStream\"\n playsinline=\"true\"\n ></video>\n </div>\n <div class=\"rtsee-window-controls\">\n <button mat-icon-button matSuffix\n type=\"button\"\n (click)=\"this.toggleSettings()\"\n class=\"rtsee-window-controls-button rtsee-ripple-button\"\n >\n <span class=\"material-icons-outlined\">settings</span>\n </button>\n <button mat-icon-button matSuffix\n type=\"button\"\n (click)=\"this.toggleFullScreenMode()\"\n class=\"rtsee-window-controls-button rtsee-ripple-button\"\n >\n <span class=\"material-icons-outlined\">open_in_full</span>\n </button>\n </div>\n <div class=\"rtsee-settings-container\" *ngIf=\"settingsViewEnabled\">\n <button mat-icon-button matSuffix\n type=\"button\"\n (click)=\"this.toggleSettings()\"\n class=\"rtsee-close-settings-button\"\n >\n <span class=\"material-icons-outlined\">close</span>\n </button>\n <ngx-rtsee-settings [rtSee]=\"rtSee\" [fullScreenMode]=\"fullScreenModeEnabled\"></ngx-rtsee-settings>\n </div>\n <div class=\"rtsee-screen-share\" *ngIf=\"rtSee.screenSharePeer\" >\n <video [autoplay]=\"true\"\n [muted]=\"true\"\n [srcObject]=\"rtSee.screenSharePeer.remoteVideoStream\"\n playsinline=\"true\"\n class=\"rtsee-screen-share-video\"\n ></video>\n </div>\n <div class=\"rtsee-peers\" [ngClass]=\"{\n 'rtsee-peers-alone': !rtSee.rtcPeerConnections.connections?.length,\n 'rtsee-peers-one': rtSee.rtcPeerConnections.connections?.length === 1,\n 'rtsee-peers-three-grid': rtSee.rtcPeerConnections.connections?.length\n && rtSee.rtcPeerConnections.connections.length > 1\n && rtSee.rtcPeerConnections.connections.length < 4,\n 'rtsee-peers-six-grid': rtSee.rtcPeerConnections.connections?.length\n && rtSee.rtcPeerConnections.connections.length > 3\n && rtSee.rtcPeerConnections.connections.length < 7,\n 'rtsee-peers-nine-grid': rtSee.rtcPeerConnections.connections?.length\n && rtSee.rtcPeerConnections.connections.length >= 7\n }\">\n <div class=\"rtsee-peer-wrapper\"\n *ngFor=\"let peer of rtSee.rtcPeerConnections.connections\"\n >\n <ngx-rtsee-peer [peer]=\"peer\"></ngx-rtsee-peer>\n </div>\n </div>\n <div class=\"rtsee-peers-list\"></div>\n <div class=\"rtsee-controls-wrapper\">\n <ngx-rtsee-controls [rtsee]=\"rtSee\" [fullScreenMode]=\"fullScreenModeEnabled\"></ngx-rtsee-controls>\n </div>\n</div>\n\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class DefaultImagesService {\n PROFILE = 'https://werf-assets.s3.amazonaws.com/default-profile-logo.png';\n}\n","import { Component, Input } from '@angular/core';\nimport { RTSeeMessenger } from '@rtsee/messenger';\n\n@Component({\n selector: 'rtsee-profile',\n templateUrl: './profile.component.html',\n})\nexport class ProfileComponent {\n @Input() messenger!: RTSeeMessenger;\n\n call() {\n if (!this.messenger.openedChat) {\n return;\n }\n void this.messenger.initializeVideoCall(this.messenger.openedChat);\n }\n\n videoCall() {\n if (!this.messenger.openedChat) {\n return;\n }\n void this.messenger.initializeVideoCall(this.messenger.openedChat);\n }\n}\n","<div class=\"rtsee-messenger-profile\">\n <ul class=\"rtsee-messenger-profile-controls\">\n <li class=\"rtsee-messenger-profile-control\">\n <button (click)=\"call()\" class=\"rtsee-messenger-profile-control-button\">\n <span class=\"rtsee-messenger-profile-control-button-icon material-icons-outlined\">call</span>\n <span class=\"rtsee-messenger-profile-control-button-label\">call</span>\n </button>\n </li>\n <li class=\"rtsee-messenger-profile-control\">\n <button (click)=\"videoCall()\" class=\"rtsee-messenger-profile-control-button\">\n <span class=\"rtsee-messenger-profile-control-button-icon material-icons-outlined\">videocam</span>\n <span class=\"rtsee-messenger-profile-control-button-label\">video</span>\n </button>\n </li>\n <li class=\"rtsee-messenger-profile-control\">\n <button (click)=\"videoCall()\" class=\"rtsee-messenger-profile-control-button\">\n <span class=\"rtsee-messenger-profile-control-button-icon material-icons-outlined\">videocam</span>\n <span class=\"rtsee-messenger-profile-control-button-label\">person</span>\n </button>\n </li>\n </ul>\n</div>\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { RTSeeMessenger } from '@rtsee/messenger';\nimport { DefaultImagesService } from '../../../services/default-images.service';\n\n@Component({\n selector: 'rtsee-messenger-header',\n templateUrl: './messenger-header.component.html',\n})\nexport class MessengerHeaderComponent {\n @Output() expandToggled = new EventEmitter();\n @Input() isExpanded?: boolean;\n @Input() messenger!: RTSeeMessenger;\n constructor(public defaultImagesService: DefaultImagesService) {\n this.isExpanded = false;\n this.expandToggled.emit(this.isExpanded);\n }\n\n toggleExpand() {\n this.isExpanded = !this.isExpanded;\n this.expandToggled.emit(this.isExpanded);\n }\n}\n","<div class=\"rtsee-messenger-header\"\n [ngClass]=\"{\n 'rtsee-messenger-header-chat-opened': messenger.openedChat,\n 'rtsee-messenger-header-expanded': isExpanded\n }\"\n>\n <div class=\"rtsee-messenger-profile-image-container \">\n <div *ngIf=\"!messenger.openedChat\"\n [style.background-image]=\"'url(' + messenger.myPeer?.imageUrl || defaultImagesService.PROFILE + ')'\"\n class=\"rtsee-messenger-profile-image\">\n </div>\n </div>\n\n <button class=\"rtsee-messenger-close-chat\"\n *ngIf=\"messenger.openedChat\"\n (click)=\"messenger.closeChat()\"\n >\n <span class=\"material-icons-outlined\">chevron_left</span>\n <span *ngIf=\"messenger.unreadMessagesCount\">{{messenger.unreadMessagesCount}}</span>\n </button>\n\n <button class=\"rtsee-messenger-menu-toggle\"\n *ngIf=\"!messenger.openedChat\"\n (click)=\"messenger.openMainMenu(true)\"\n >\n <span class=\"material-icons-outlined rtsee-messenger-menu-toggle-icon\">chat_bubble</span>\n </button>\n <div *ngIf=\"messenger.openedChat\"\n [ngClass]=\"{'rtsee-messenger-header-opened-chat-info-expanded': isExpanded}\"\n class=\"rtsee-messenger-header-opened-chat-info\">\n <div class=\"rtsee-messenger-profile-header-placeholder\">\n <p *ngIf=\"messenger.openedChat\"\n class=\"rtsee-messenger-header-chat-title\"\n >{{ messenger.openedChat.name }}</p>\n <div class=\"rtsee-messenger-profile-image-container\" (click)=\"toggleExpand()\">\n <div class=\"rtsee-messenger-profile-image\"\n [style.background-image]=\"'url(' + messenger.openedChat.imageUrl || defaultImagesService.PROFILE + ')'\"\n ></div>\n </div>\n </div>\n <div class=\"rtsee-messenger-profile-data-container\">\n <rtsee-profile *ngIf=\"isExpanded\" [messenger]=\"messenger\"></rtsee-profile>\n </div>\n </div>\n\n <p *ngIf=\"!messenger.openedChat\"\n class=\"rtsee-messenger-header-title\"\n >Chats</p>\n</div>\n","import { Injectable } from '@angular/core';\n\nimport * as dayjs from 'dayjs';\nimport * as relativeTime from 'dayjs/plugin/relativeTime';\ndayjs.extend(relativeTime);\n\n@Injectable({\n providedIn: 'root',\n})\nexport class TimeFormatHelperService {\n toAgo(time: Date): string {\n /* eslint-disable */\n return dayjs(time).fromNow() as string;\n /* eslint-enable */\n }\n toDayOfWeek(time: Date): string {\n /* eslint-disable */\n return dayjs(time).format('ddd');\n /* eslint-enable */\n }\n toTime(time: Date): string {\n /* eslint-disable */\n return dayjs(time).format('HH:mm') as string;\n /* eslint-enable */\n }\n toDate(time: Date): string {\n /* eslint-disable */\n return dayjs(time).format('D MMMM') as string;\n /* eslint-enable */\n }\n toDateNumeral(time: Date): string {\n /* eslint-disable */\n return dayjs(time).format('DD.MM');\n /* eslint-enable */\n }\n\n toDateNumeralWithYear(time: Date): string {\n /* eslint-disable */\n return dayjs(time).format('DD.MM.YY');\n /* eslint-enable */\n }\n\n toDateWithYear(time: Date): string {\n /* eslint-disable */\n return dayjs(time).format('MMMM D, YYYY ') as string;\n /* eslint-enable */\n }\n\n formatDate(time: Date) {\n const today = new Date();\n const dayMs = 1000 * 60 * 60 * 24;\n const twoDays = dayMs * 2;\n\n if (!time) {\n return '';\n }\n\n if (\n today.getTime() - time.getTime() < dayMs &&\n today.getDay() === time.getDay()\n ) {\n return 'Today';\n }\n\n if (\n today.getTime() - time.getTime() < twoDays &&\n today.getTime() - time.getTime() > dayMs &&\n today.getDay() !== time.getDay()\n ) {\n return 'Yesterday';\n }\n\n if (today.getFullYear() === time.getFullYear()) {\n return this.toDate(time);\n }\n\n return this.toDateWithYear(time);\n }\n\n formatTimeOrDate(time: Date) {\n if (!time) {\n return '';\n }\n\n const today = new Date();\n const dayMs = 1000 * 60 * 60 * 24;\n\n if (\n today.getTime() - time.getTime() < dayMs &&\n today.getDay() === time.getDay()\n ) {\n return this.toTime(time);\n }\n\n if (\n today.getTime() - time.getTime() > dayMs &&\n today.getTime() - time.getTime() < dayMs * 7\n ) {\n return this.toDayOfWeek(time);\n }\n\n if (\n today.getTime() - time.getTime() > dayMs * 7 &&\n today.getFullYear() === time.getFullYear()\n ) {\n return this.toDateNumeral(time);\n }\n\n return this.toDateNumeralWithYear(time);\n }\n}\n","import { Component, ElementRef, Input, OnInit, ViewChild } from '@angular/core';\n\n@Component({\n selector: 'rtsee-preloader',\n templateUrl: './preloader.component.html',\n})\nexport class PreloaderComponent implements OnInit {\n viewBox = '0 0 100 100';\n d = 'M 50 96 a 46 46 0 0 1 0 -92 46 46 0 0 1 0 92';\n\n @ViewChild('canvas') canvas?: ElementRef<SVGElement>;\n @Input() diameter?: number;\n @Input() color?: string = '#000000';\n constructor() {\n if (this.diameter) {\n this.viewBox = `0 0 ${this.diameter} ${this.diameter}`;\n this.d = `M ${this.diameter / 2} ${this.diameter * 0.96} a ${\n this.diameter * 0.46\n } ${this.diameter * 0.46} 0 0 1 0 -${this.diameter * 0.92} ${\n this.diameter * 0.46\n } ${this.diameter * 0.46} 0 0 1 0 ${this.diameter * 0.92}`;\n }\n }\n\n ngOnInit(): void {\n //viewBox=\"0 0 100 100\"\n //d=\"M 50 96 a 46 46 0 0 1 0 -92 46 46 0 0 1 0 92\"\n }\n}\n","<div class=\"rtsee-preloader\">\n <svg [style.max-width.px]=\"diameter\" #canvas [attr.viewBox]=\"viewBox\">\n <path [attr.d]=\"d\" [attr.stroke]=\"color\"/>\n </svg>\n</div>\n","import { Component, Input } from '@angular/core';\nimport { RTSeeMessage, IMessageThumbnail } from '@rtsee/messenger';\nimport { TimeFormatHelperService } from '../../../../../services/time-format-helper.service';\n@Component({\n selector: 'rtsee-message-time-and-status',\n templateUrl: './message-time-and-status.component.html',\n})\nexport class MessageTimeAndStatusComponent {\n @Input() message!: RTSeeMessage | IMessageThumbnail;\n @Input() hideStatus?: boolean;\n constructor(public timeFormatService: TimeFormatHelperService) {}\n}\n","<div class=\"rtsee-messenger-message-time-and-status\">\n <span class=\"rtsee-messenger-message-time\">{{timeFormatService.formatTimeOrDate(message.createdAt)}}</span>\n <span class=\"rtsee-messenger-message-status\" *ngIf=\"!hideStatus\">\n <span *ngIf=\"message.status === 'pending'\"><rtsee-preloader [diameter]=\"5\"></rtsee-preloader></span>\n <span *ngIf=\"message.status === 'sent'\" class=\"material-icons-outlined rtsee-message-sent-status\">check</span>\n <span *ngIf=\"message.status === 'delivered'\" class=\"material-icons-outlined rtsee-message-delivered-status\">check</span>\n <span *ngIf=\"message.status === 'seen'\" class=\"material-icons-outlined rtsee-message-seen-status\">check</span>\n </span>\n</div>\n","import { AfterViewInit, Directive, ElementRef } from '@angular/core';\nimport shave from 'shave';\n\n@Directive({\n selector: '[rtseeShave]',\n})\nexport class ShaveDirective implements AfterViewInit {\n constructor(private elem: ElementRef<HTMLDivElement>) {}\n\n ngAfterViewInit() {\n const height = this.elem.nativeElement?.offsetHeight;\n shave(this.elem.nativeElement as unknown as NodeList, height);\n }\n}\n","import { Component, Input } from '@angular/core';\nimport {\n RTSeeMessenger,\n IMessageThumbnail,\n RTSeeChatTypes,\n} from '@rtsee/messenger';\nimport { TimeFormatHelperService } from '../../../services/time-format-helper.service';\n\n@Component({\n selector: 'rtsee-chat-thumbnail',\n templateUrl: './chat-thumbnail.component.html',\n})\nexport class ChatThumbnailComponent {\n @Input() chat!: IMessageThumbnail;\n @Input() messenger!: RTSeeMessenger;\n\n readonly RTSeeChatTypes = RTSeeChatTypes;\n\n constructor(public timeFormatService: TimeFormatHelperService) {}\n}\n","<div class=\"rtsee-chat-thumbnail\" (click)=\"messenger.openChatById(chat.chatId)\">\n <div class=\"rtsee-chat-thumbnail-image\">\n <img [src]=\"chat.chatImageUrl\" alt=\"chat-img\">\n </div>\n <div class=\"rtsee-chat-thumbnail-left\">\n <div class=\"rtsee-chat-thumbnail-name\">\n <span>{{ chat.chatName }}</span>\n <div class=\"rtsee-chat-thumbnail-status\">\n <rtsee-message-time-and-status [message]=\"chat\"></rtsee-message-time-and-status>\n </div>\n </div>\n <div class=\"rtsee-chat-thumbnail-last-message\"\n [ngClass]=\"{'rtsee-has-unread': chat.unreadMessagesCount}\"\n rtseeShave>\n <span class=\"rtsee-chat-thumbnail-last-message-sender\"\n *ngIf=\"chat.chatType !== RTSeeChatTypes.INDIVIDUAL && chat.senderName\"\n >{{chat.senderName}}</span>\n <span class=\"rtsee-chat-thumbnail-last-message-text\"\n *ngIf=\"chat.text\"\n >{{chat.text}}</span>\n <div class=\"rtsee-messenger-thumbnail-unread\" *ngIf=\"chat.unreadMessagesCount\">\n <span class=\"rtsee-messenger-thumbnail-unread-count\">{{chat.unreadMessagesCount}}</span>\n </div>\n </div>\n </div>\n</div>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { RTSeeChat, RTSeeMessenger } from '@rtsee/messenger';\n\n@Component({\n selector: 'rtsee-chats-list',\n templateUrl: './chats-list.component.html',\n})\nexport class ChatsListComponent implements OnInit {\n @Input() messenger!: RTSeeMessenger;\n @Input() chats!: RTSeeChat[];\n\n ngOnInit(): void {\n // console.log(this.chats);\n }\n}\n","<div class=\"rtsee-chats-list\">\n <div class=\"rtsee-chat-thumbnail-container\" *ngFor=\"let chat of chats; let last = last;\">\n <rtsee-chat-thumbnail [chat]=\"chat.thumbnail\" [messenger]=\"messenger\"></rtsee-chat-thumbnail>\n <div class=\"rtsee-chat-thumbnail-separator\" *ngIf=\"!last\"></div>\n </div>\n</div>\n","import { Directive, ViewContainerRef } from '@angular/core';\n\n@Directive({\n selector: '[widgetHost]',\n})\nexport class WidgetDirective {\n constructor(public viewContainerRef: ViewContainerRef) {}\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { RTSeeMessage, RTSeeMessenger } from '@rtsee/messenger';\nimport { IRTSeeCall } from '@rtsee/core';\n\n@Component({\n selector: 'ngx-call-widget',\n templateUrl: './call-widget.component.html',\n styleUrls: ['./call-widget.component.css'],\n})\nexport class CallWidgetComponent implements OnInit {\n @Input() message!: RTSeeMessage<IRTSeeCall>;\n @Input() messenger!: RTSeeMessenger;\n callerName?: string;\n\n ngOnInit(): void {\n if (this.messenger.clientId === this.message.data?.callerId) {\n this.callerName = 'You';\n } else {\n this.callerName = this.message.data?.caller?.name;\n }\n }\n\n joinCall() {\n if (!this.messenger || !this.message.data?.roomId) {\n console.log('No Room Id specified or no messenger!');\n return;\n }\n void this.messenger.joinCall(this.message.data.roomId);\n }\n}\n","<div class=\"rtsee-call-widget\">\n <p *ngIf=\"callerName\"> {{ callerName }} has started a call</p>\n <p *ngIf=\"callerName === 'You'\"> You have started a call</p>\n <p *ngIf=\"!callerName\"> The call has started</p>\n <button (click)=\"joinCall()\">Join Call</button>\n</div>\n","import { Injectable } from '@angular/core';\nimport { CallWidgetComponent } from '../components/rtsee-messenger/message-widgets/call-widget/call-widget.component';\n\nexport interface IMessageWidget {\n name: string;\n component: any;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class MessageWidgetsService {\n widgetsMap: IMessageWidget[] = [\n { name: 'rtsee-call', component: CallWidgetComponent },\n ];\n\n getWidgetComponentByName(name: string) {\n /* eslint-disable */\n const mapping = this.widgetsMap.find((e) => e.name === name);\n if (!mapping) {\n return null;\n }\n return mapping.component;\n /* eslint-enable */\n }\n}\n","import {\n AfterViewInit,\n Component,\n ComponentFactoryResolver,\n ComponentRef,\n Input,\n ViewChild,\n} from '@angular/core';\nimport {\n RTSeeChat,\n RTSeeChatMember,\n RTSeeMessage,\n RTSeeMessenger,\n} from '@rtsee/messenger';\nimport { MessageWidgetsService } from '../../../services/message-widgets.service';\nimport { WidgetDirective } from '../../../directives/widget.directive';\nimport { TimeFormatHelperService } from '../../../services/time-format-helper.service';\n\n@Component({\n selector: 'rtsee-message',\n templateUrl: './message.component.html',\n})\nexport class MessageComponent implements AfterViewInit {\n @Input() chat!: RTSeeChat;\n @Input() message!: RTSeeMessage;\n @Input() member!: RTSeeChatMember<any>;\n @Input() messenger!: RTSeeMessenger;\n @ViewChild(WidgetDirective, { static: false }) widgetHost!: WidgetDirective;\n constructor(\n private widgetsService: MessageWidgetsService,\n private componentFactoryResolver: ComponentFactoryResolver,\n public timeFormatService: TimeFormatHelperService\n ) {}\n\n ngAfterViewInit() {\n /* eslint-disable */\n if (this.message.widget) {\n const widget = this.widgetsService.getWidgetComponentByName(\n this.message.widget\n );\n if (!widget) {\n return;\n }\n const viewContainerRef = this.widgetHost.viewContainerRef;\n viewContainerRef.clear();\n const componentToShow =\n this.componentFactoryResolver.resolveComponentFactory(widget);\n const componentRef: ComponentRef<typeof widget> =\n viewContainerRef.createComponent(componentToShow);\n componentRef.instance.message = this.message;\n componentRef.instance.messenger = this.messenger;\n componentRef.changeDetectorRef.detectChanges();\n }\n /* eslint-enable */\n }\n}\n","<div class=\"rtsee-messenger-message-container\" #rtsMessageContainer\n [ngClass]=\"{'rtsee-message-from-me': message.from === messenger.clientId}\"\n>\n <div class=\"rtsee-messenger-message\">\n <ng-template *ngIf=\"message.widget\" widgetHost></ng-template>\n <p *ngIf=\"!message.widget\"\n class=\"rtsee-messenger-message-text\"\n >{{ message.text }}</p>\n <div class=\"rtsee-messenger-message-info\" #rtsMessageInfo>\n <rtsee-message-time-and-status [message]=\"message\"\n [hideStatus]=\"message.from !== messenger.clientId\"\n ></rtsee-message-time-and-status>\n </div>\n </div>\n</div>\n","import {\n AfterViewInit,\n Component,\n ElementRef,\n Input,\n OnDestroy,\n OnInit,\n ViewChild,\n} from '@angular/core';\nimport {\n RTSeeChat,\n RTSeeMessenger,\n RTSeeMessage,\n RTSeeChatEvents,\n} from '@rtsee/messenger';\nimport { TimeFormatHelperService } from '../../../services/time-format-helper.service';\n\n@Component({\n selector: 'rtsee-messages-list',\n templateUrl: './messages-list.component.html',\n})\nexport class MessagesListComponent implements AfterViewInit, OnDestroy, OnInit {\n bindScrollFunction: () => void;\n\n @Input() chat!: RTSeeChat;\n @Input() messenger!: RTSeeMessenger;\n @ViewChild('scrollBlock') scrollContainer!: ElementRef<HTMLDivElement>;\n constructor(private timeFormatService: TimeFormatHelperService) {\n this.bindScrollFunction = this.scrollToBottom.bind(this) as () => void;\n }\n\n ngOnInit() {\n this.chat.on(RTSeeChatEvents.MESSAGE_ADDED, this.bindScrollFunction);\n }\n\n ngAfterViewInit() {\n this.scrollToBottom();\n }\n\n onMessageSent() {\n this.scrollToBottom();\n }\n\n ngOnDestroy() {\n this.chat.off(RTSeeChatEvents.MESSAGE_ADDED, this.bindScrollFunction);\n }\n\n onScrolledToTop() {\n if (this.chat.messagesLoadInProgress) {\n return;\n }\n this.chat.loadRemoteMessages();\n }\n\n onScroll() {\n if (this.scrollContainer.nativeElement.scrollTop < 1) {\n this.scrollContainer.nativeElement.scrollTop = 1;\n }\n }\n\n scrollToBottom() {\n if (!this.scrollContainer?.nativeElement?.scrollHeight) {\n return;\n }\n\n try {\n this.scrollContainer.nativeElement.scrollTop =\n this.scrollContainer.nativeElement.scrollHeight;\n } catch (err) {\n console.log('Failed to Scroll');\n }\n }\n\n formatDate(message: RTSeeMessage) {\n return this.timeFormatService.formatDate(message.createdAt);\n }\n}\n","<div class=\"rtsee-messenger-messages-list\"\n #scrollBlock\n infiniteScroll\n [infiniteScrollUpDistance]=\"2\"\n [infiniteScrollThrottle]=\"50\"\n [scrollWindow]=\"false\"\n (scrolledUp)=\"onScrolledToTop()\"\n (scroll)=\"onScroll()\"\n>\n <div *ngFor=\"let message of chat.messages; let i = index;\"\n [ngClass]=\"{'rtsee-messenger-message-wrapper-consecutive': message.from === chat.messages[i+1]?.from}\"\n class=\"rtsee-messenger-message-wrapper\"\n >\n <div *ngIf=\"message.hasDateChanged\" class=\"rtsee-messenger-message-date\">\n <span>{{formatDate(message)}}</span>\n </div>\n <rtsee-message [message]=\"message\" [messenger]=\"messenger\" [chat]=\"chat\"></rtsee-message>\n </div>\n</div>\n","import { Component, Input } from '@angular/core';\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\nimport { RTSeeChat, RTSeeMessenger } from '@rtsee/messenger';\n\n@Component({\n selector: 'rtsee-chat-input',\n templateUrl: './chat-input.component.html',\n})\nexport class ChatInputComponent {\n sendMessageForm: FormGroup = new FormGroup({\n /* eslint-disable */\n message: new FormControl('', Validators.required),\n /* eslint-enable */\n });\n\n @Input() messenger!: RTSeeMessenger;\n @Input() chat!: RTSeeChat;\n\n sendMessage() {\n const text = this.sendMessageForm.get('message')?.value as string;\n if (!text) {\n return;\n }\n this.chat.sendMessage(text);\n this.sendMessageForm.get('message')?.setValue('');\n }\n}\n","<div class=\"rtsee-chat-input\" xmlns=\"http://www.w3.org/1999/html\">\n <div class=\"rtsee-send-message\">\n <form [formGroup]=\"sendMessageForm\">\n <textarea\n placeholder=\"Type message...\"\n type=\"text\"\n formControlName=\"message\"\n class=\"rtsee-chat-input-field\"\n autosize\n required\n ></textarea>\n </form>\n </div>\n <button (click)=\"sendMessage()\"\n class=\"rtsee-send-message-button\"\n type=\"submit\">\n <span class=\"material-icons-outlined\">send</span>\n </button>\n</div>\n","import { Component, Input } from '@angular/core';\nimport { RTSeeChat, RTSeeMessenger } from '@rtsee/messenger';\n\n@Component({\n selector: 'rtsee-chat',\n templateUrl: './chat.component.html',\n})\nexport class ChatComponent {\n @Input() chat!: RTSeeChat;\n @Input() messenger!: RTSeeMessenger;\n}\n","<div class=\"rtsee-chat\">\n <div class=\"rtsee-chat-body-container\">\n <rtsee-messages-list [messenger]=\"messenger\" [chat]=\"chat\"></rtsee-messages-list>\n </div>\n <div class=\"rtsee-chat-footer-container\">\n <rtsee-chat-input [messenger]=\"messenger\" [chat]=\"chat\"></rtsee-chat-input>\n </div>\n</div>\n","export enum MainMenuPanels {\n HOME = 'home',\n CONTACTS_SELECT = 'contacts-select',\n MANAGE_CHAT = 'manage-chat',\n}\n\nexport interface IMainMenuState {\n activePanel: MainMenuPanels;\n}\n\nexport const DEFAULT_MAIN_MENU_STATE = MainMenuPanels.HOME;\n","import { Component, Input, OnDestroy, OnInit } from '@angular/core';\nimport { debounceTime } from 'rxjs/operators';\nimport { FormControl } from '@angular/forms';\nimport { Subscription } from 'rxjs';\nimport { RTSeeMessengerSearch } from '@rtsee/messenger';\n\n@Component({\n selector: 'rtsee-search',\n templateUrl: './search.component.html',\n})\nexport class SearchComponent implements OnInit, OnDestroy {\n queryControl = new FormControl();\n queryCtrlSub?: Subscription;\n\n @Input() search!: RTSeeMessengerSearch;\n\n ngOnInit(): void {\n this.queryCtrlSub = this.queryControl.valueChanges\n .pipe(debounceTime(200))\n .subscribe((value) => this.search.onQueryChange(value));\n }\n\n ngOnDestroy() {\n if (this.queryCtrlSub) {\n this.queryCtrlSub.unsubscribe();\n }\n }\n}\n","<div class=\"rtsee-messenger-search\">\n <input type=\"text\"\n [formControl]=\"queryControl\"\n class=\"rtsee-messenger-search-input\"\n placeholder=\"Search...\"/>\n</div>\n\n<div class=\"rtsee-messenger-search-results\">\n <rtsee-preloader [diameter]=\"50\" *ngIf=\"search.searchInProgress\"></rtsee-preloader>\n <p>Chats</p>\n <div class=\"rtsee-messenger-search-results-chats\">\n <div *ngFor=\"let chat of search.results.chats\" class=\"rtsee-messenger-search-results-chat-wrapper\">\n <p>{{chat.name}}</p>\n </div>\n </div>\n <p>Messages</p>\n <div class=\"rtsee-messenger-search-results-messages\">\n <div *ngFor=\"let message of search.results.messages\" class=\"rtsee-messenger-search-results-message-wrapper\">\n <p>{{message.chatName || message.senderName }}</p>\n </div>\n </div>\n</div>\n","import { Component, Input } from '@angular/core';\nimport { RTSeeMessenger } from '@rtsee/messenger';\nimport { IMainMenuState, MainMenuPanels } from '../models/MainMenuState';\n\n@Component({\n selector: 'rtsee-manage-chat',\n templateUrl: './manage-chat.component.html',\n styleUrls: ['./manage-chat.component.scss'],\n})\nexport class ManageChatComponent {\n @Input() messenger!: RTSeeMessenger;\n @Input() menuState!: IMainMenuState;\n\n onInviteContactsClicked() {\n this.menuState.activePanel = MainMenuPanels.CONTACTS_SELECT;\n }\n}\n","<div class=\"rtsee-messenger-manage-chat\">\n <p>We are going to manage chat here</p>\n <button (click)=\"onInviteContactsClicked()\">Invite Contacts</button>\n</div>\n","import { Component, Input } from '@angular/core';\nimport { IMainMenuState } from '../models/MainMenuState';\nimport { RTSeeMessengerSearch } from '@rtsee/messenger';\n\n@Component({\n selector: 'rtsee-contacts-multiselect',\n templateUrl: './contacts-multiselect.component.html',\n styleUrls: ['./contacts-multiselect.component.scss'],\n})\nexport class ContactsMultiselectComponent {\n @Input() menuState!: IMainMenuState;\n @Input() search!: RTSeeMessengerSearch;\n}\n","<div class=\"rtsee-messenger-contacts-multiselect\">\n <rtsee-search [search]=\"search\"></rtsee-search>\n</div>\n","import { Component, Input } from '@angular/core';\nimport { RTSeeMessenger, RTSeeMessengerSearch } from '@rtsee/messenger';\nimport {\n DEFAULT_MAIN_MENU_STATE,\n IMainMenuState,\n MainMenuPanels,\n} from './components/models/MainMenuState';\n\n@Component({\n selector: 'rtsee-main-menu',\n templateUrl: './main-menu.component.html',\n})\nexport class MainMenuComponent {\n @Input() search!: RTSeeMessengerSearch;\n @Input() messenger!: RTSeeMessenger;\n\n readonly MainMenuPanels = MainMenuPanels;\n\n state: IMainMenuState = {\n activePanel: DEFAULT_MAIN_MENU_STATE,\n };\n\n onNewGroupClicked() {\n this.state.activePanel = MainMenuPanels.CONTACTS_SELECT;\n }\n\n onNewChannelClicked() {\n this.state.activePanel = MainMenuPanels.MANAGE_CHAT;\n }\n}\n","<div class=\"rtsee-messenger-main-menu\">\n <div class=\"rtsee-messenger-main-menu-home\" *ngIf=\"state.activePanel === MainMenuPanels.HOME\">\n <ul class=\"rtsee-messenger-controls\">\n <li>\n <button (click)=\"onNewGroupClicked()\">\n <span class=\"material-icons-outlined\">people</span>\n <span>New Group</span>\n </button>\n </li>\n <li>\n <button (click)=\"onNewChannelClicked()\">\n <span class=\"material-icons-outlined\">campaign</span>\n <span>New Channel</span>\n </button>\n </li>\n </ul>\n <rtsee-search [search]=\"search\" ></rtsee-search>\n </div>\n\n <rtsee-manage-chat *ngIf=\"state.activePanel === MainMenuPanels.MANAGE_CHAT\"\n [messenger]=\"messenger\"\n [menuState]=\"state\"\n ></rtsee-manage-chat>\n <rtsee-contacts-multiselect [search]=\"search\"\n [menuState]=\"state\"\n *ngIf=\"state.activePanel === MainMenuPanels.CONTACTS_SELECT\"\n ></rtsee-contacts-multiselect>\n</div>\n","import { Component, Input } from '@angular/core';\nimport { RTSeeMessenger } from '@rtsee/messenger';\n\n@Component({\n selector: 'rtsee-messenger',\n templateUrl: './messenger.component.html',\n})\nexport class MessengerComponent {\n isHeaderExpanded: boolean;\n\n @Input() messenger!: RTSeeMessenger;\n constructor() {\n this.isHeaderExpanded = false;\n }\n\n onScroll() {\n this.messenger.loadChats();\n }\n\n onHeaderExpandToggled(value: boolean) {\n this.isHeaderExpanded = value;\n }\n}\n","<div class=\"rtsee-messenger\" [ngClass]=\"{\n 'rtsee-messenger-main-menu-opened': messenger.mainMenuOpened,\n 'rtsee-messenger-header-expanded': isHeaderExpanded\n}\">\n <div class=\"rtsee-messenger-header-container\">\n <rtsee-messenger-header [messenger]=\"messenger\" (expandToggled)=\"onHeaderExpandToggled($event)\"></rtsee-messenger-header>\n </div>\n <div class=\"rtsee-messenger-body-container\"\n infiniteScroll\n [infiniteScrollDistance]=\"2\"\n [infiniteScrollThrottle]=\"50\"\n [scrollWindow]=\"false\"\n (scrolled)=\"onScroll()\"\n >\n <rtsee-chats-list *ngIf=\"!messenger.openedChat\" [chats]=\"messenger.chats\" [messenger]=\"messenger\"></rtsee-chats-list>\n <rtsee-chat *ngIf=\"messenger.openedChat\" [messenger]=\"messenger\" [chat]=\"messenger.openedChat\"></rtsee-chat>\n <rtsee-preloader [diameter]=\"50\" *ngIf=\"messenger.loadingChatsInProgress\" ></rtsee-preloader>\n </div>\n <div class=\"rtsee-messenger-main-menu-container\">\n <rtsee-main-menu\n *ngIf=\"messenger.mainMenuOpened\"\n [search]=\"messenger.search\"\n [messenger]=\"messenger\"></rtsee-main-menu>\n </div>\n <div class=\"rtsee-messenger-overlay\" (click)=\"messenger.openMainMenu(false)\"></div>\n</div>\n\n\n","import { Injectable } from '@angular/core';\nimport { IMessageWidget } from './message-widgets.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class EventsWidgetsService {\n widgetsMap: IMessageWidget[] = [];\n\n getWidgetComponentByName(name: string) {\n /* eslint-disable */\n const mapping = this.widgetsMap.find((e) => e.name === name);\n if (!mapping) {\n return null;\n }\n return mapping.component;\n /* eslint-enable */\n }\n}\n","import {\n AfterViewInit,\n Component,\n ComponentFactoryResolver,\n ComponentRef,\n Input,\n OnInit,\n ViewChild,\n} from '@angular/core';\nimport { RTSeeDashboardEvent } from '@rtsee/events-manager';\nimport { WidgetDirective } from '../../../../directives/widget.directive';\nimport { EventsWidgetsService } from '../../../../services/events-widgets.service';\nimport { TimeFormatHelperService } from '../../../../services/time-format-helper.service';\nimport * as dayjs from 'dayjs';\n\n@Component({\n selector: 'rtsee-event-thumbnail',\n templateUrl: './event-thumbnail.component.html',\n})\nexport class EventThumbnailComponent implements OnInit, AfterViewInit {\n tooltip?: string;\n\n @Input() event!: RTSeeDashboardEvent;\n @ViewChild(WidgetDirective, { static: false }) widgetHost!: WidgetDirective;\n constructor(\n private widgetsService: EventsWidgetsService,\n private componentFactoryResolver: ComponentFactoryResolver,\n public timeFormatService: TimeFormatHelperService\n ) {}\n\n ngOnInit(): void {\n if (this.event.data) {\n this.generateTooltip();\n }\n }\n\n generateTooltip() {\n /* eslint-disable */\n let tooltip = '';\n if (typeof this.event.data !== 'object') {\n return;\n }\n try {\n for (const key in this.event.data) {\n if (this.event.data.hasOwnProperty(key)) {\n if (tooltip) {\n tooltip += '&#013;';\n }\n tooltip += key + ' -> ' + this.event.data[key];\n }\n }\n this.tooltip = tooltip;\n } catch (e) {\n console.log('Failed to generate a tooltip');\n }\n /* eslint-enable */\n }\n\n ngAfterViewInit() {\n /* eslint-disable */\n if (this.event.widget) {\n const widget = this.widgetsService.getWidgetComponentByName(\n this.event.widget\n );\n if (!widget) {\n return;\n }\n const viewContainerRef = this.widgetHost.viewContainerRef;\n viewContainerRef.clear();\n const componentToShow =\n this.componentFactoryResolver.resolveComponentFactory(widget);\n const componentRef: ComponentRef<typeof widget> =\n viewContainerRef.createComponent(componentToShow);\n componentRef.instance.event = this.event;\n componentRef.instance.event = this.event;\n componentRef.changeDetectorRef.detectChanges();\n }\n /* eslint-enable */\n }\n}\n","<div class=\"rtsee-events-dashboard-event-thumbnail\">\n <ng-template *ngIf=\"event.widget\" widgetHost></ng-template>\n <div *ngIf=\"!event.widget\" class=\"rtsee-events-dashboard-default-event-thumbnail\"\n [ngClass]=\"{'rtsee-events-dashboard-default-event-thumbnail-with-data': event.data}\"\n >\n <div class=\"rtsee-events-dashboard-default-event-thumbnail-name\">{{event.name}}</div>\n <div class=\"rtsee-events-dashboard-default-event-thumbnail-info\">\n <div *ngIf=\"event.data\" class=\"rtsee-events-dashboard-default-event-thumbnail-details\"\n [title]=\"tooltip\"\n >\n <span class=\"rtsee-events-dashboard-default-event-thumbnail-details-icon material-icons-outlined\"\n >info</span>\n </div>\n <div class=\"rtsee-events-dashboard-default-event-thumbnail-time\">\n <span>{{ timeFormatService.toAgo(event.createdAt) }}</span>\n </div>\n </div>\n\n </div>\n</div>\n","import { Component, Input } from '@angular/core';\nimport { RTSeeDashboardClientSession } from '@rtsee/events-manager';\nimport { TimeFormatHelperService } from '../../../../services/time-format-helper.service';\n\n@Component({\n selector: 'rtsee-rtsee-events-dashboard-session',\n templateUrl: './rtsee-events-dashboard-session.component.html',\n})\nexport class RtseeEventsDashboardSessionComponent {\n @Input() session!: RTSeeDashboardClientSession;\n constructor(public timeFormatService: TimeFormatHelperService) {}\n}\n","<div class=\"rtsee-events-dashboard-session\">\n <div class=\"rtsee-events-dashboard-session-header\" *ngIf=\"session.info\">\n <p class=\"rtsee-events-dashboard-session-client-info\">{{session.info.clientThumbnail}}</p>\n <p class=\"rtsee-events-dashboard-session-os-info\">{{session.info.osThumbnail}}</p>\n <div class=\"rtsee-events-dashboard-session-device-info\" [title]=\"session.info.deviceThumbnail\">\n <span *ngIf=\"session.info.deviceType === 'smartphone' && !session.info.botName\"\n class=\"material-icons-outlined rtsee-events-dashboard-session-device-info-icon\"\n >phone_iphone</span>\n <span class=\"material-icons-outlined rtsee-events-dashboard-session-device-info-icon\"\n *ngIf=\"session.info.deviceType === 'tablet' && !session.info.botName\"\n >tablet_mac</span>\n <span class=\"material-icons-outlined rtsee-events-dashboard-session-device-info-icon\"\n *ngIf=\"session.info.deviceType === 'desktop' && !session.info.botName\"\n >computer</span>\n <span class=\"material-icons-outlined rtsee-events-dashboard-session-device-info-icon\"\n *ngIf=\"session.info.botName\"\n >smart_toy</span>\n </div>\n </div>\n <ul *ngIf=\"session.events && session.events.length\"\n class=\"rtsee-events-dashboard-session-events-list\"\n >\n <li *ngFor=\"let event of session.events | slice:0:5;\" class=\"rtsee-events-dashboard-session-event\">\n <rtsee-event-thumbnail [event]=\"event\"></rtsee-event-thumbnail>\n </li>\n </ul>\n <div class=\"rtsee-events-dashboard-session-footer\">\n <button *ngIf=\"session.events.length > 5\">{{session.events.length - 5}} more</button>\n </div>\n</div>\n","import { Component, Input, OnInit } from '@angular/core';\nimport {\n RTSeeDashboardClient,\n RTSeeEventsDashboard,\n} from '@rtsee/events-manager';\nimport { TimeFormatHelperService } from '../../../../services/time-format-helper.service';\nimport { DefaultImagesService } from '../../../../services/default-images.service';\n\n@Component({\n selector: 'ngx-rtsee-events-dashboard-client-thumbnail',\n templateUrl: './rtsee-events-dashboard-client-thumbnail.component.html',\n})\nexport class RtseeEventsDashboardClientThumbnailComponent implements OnInit {\n @Input() dashboard!: RTSeeEventsDashboard;\n @Input() client!: RTSeeDashboardClient;\n\n constructor(\n public timeFormatService: TimeFormatHelperService,\n public defaultImagesService: DefaultImagesService\n ) {}\n\n ngOnInit(): void {\n console.log('client id', this.client.id);\n }\n\n openChat() {\n this.dashboard.openChat(this.client);\n }\n}\n","<div class=\"rtsee-dashboard-client-thumbnail\">\n <div class=\"rtsee-dashboard-client-header\">\n <div class=\"rtsee-dashboard-client-header-photo\">\n <div class=\"rtsee-dashboard-client-header-image\"\n [style.background-image]=\"'url(' + client.imageUrl || defaultImagesService.PROFILE + ')'\"\n ></div>\n <div class=\"rtsee-dashboard-client-live-indicator\" *ngIf=\"client.isConnected\"></div>\n </div>\n <p class=\"rtsee-dashboard-client-name\">\n <span class=\"rtsee-dashboard-client-name-text\">{{ client.name || client.id }}</span>\n <button (click)=\"openChat()\" class=\"rtsee-dashboard-client-engage\">\n <span class=\"rtsee-dashboard-client-engage-icon material-icons-outlined\">chat_bubble</span>\n </button>\n </p>\n </div>\n <div class=\"rtsee-dashboard-sessions\">\n <div *ngFor=\"let session of client.sessions\"\n class=\"rtsee-dashboard-sessions-container\">\n <rtsee-rtsee-events-dashboard-session [session]=\"session\"></rtsee-rtsee-events-dashboard-session>\n </div>\n </div>\n</div>\n","import { Component, Input } from '@angular/core';\nimport { RTSeeEventsDashboard } from '@rtsee/events-manager';\n\n@Component({\n selector: 'ngx-rtsee-events-dashboard',\n templateUrl: './rtsee-events-dashboard.component.html',\n})\nexport class RtseeEventsDashboardComponent {\n @Input() eventsDashboard!: RTSeeEventsDashboard;\n}\n","<div class=\"rtsee-events-dashboard\">\n <div class=\"rtsee-events-dashboard-client-thumbnails\">\n <div class=\"rtsee-events-dashboard-client-thumbnail-wrapper\"\n *ngFor=\"let client of eventsDashboard.clients\">\n <ngx-rtsee-events-dashboard-client-thumbnail\n [client]=\"client\"\n [dashboard]=\"eventsDashboard\"\n ></ngx-rtsee-events-dashboard-client-thumbnail>\n </div>\n </div>\n</div>\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'ngx-rtsee-peers-list',\n templateUrl: './rtsee-peers-list.component.html',\n styleUrls: ['./rtsee-peers-list.component.scss'],\n})\nexport class RtseePeersListComponent {}\n","<p>rtsee-peers-list works!</p>\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'ngx-rtsee-events-dashboard-client',\n templateUrl: './rtsee-events-dashboard-client.component.html',\n})\nexport class RtseeEventsDashboardClientComponent {}\n","<p>rtsee-events-dashboard-client works!</p>\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'rtsee-rtsee-container',\n templateUrl: './rtsee-container.component.html',\n})\nexport class RtseeContainerComponent {}\n","<p>rtsee-container works!</p>\n","import { NgModule } from '@angular/core';\nimport { RTSeeComponent } from './components/rtsee/rtsee.component';\nimport { RTSeeControlsComponent } from './components/rtsee/rtsee-controls/rtsee-controls.component';\nimport { CommonModule } from '@angular/common';\nimport { RtseePeerComponent } from './components/rtsee-peer/rtsee-peer.component';\nimport { RtseeSoundbarComponent } from './components/rtsee-soundbar/rtsee-soundbar.component';\nimport { RtseePeersListComponent } from './components/rtsee-peers-list/rtsee-peers-list.component';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { RtseeSettingsComponent } from './components/rtsee-settings/rtsee-settings.component';\nimport { MatSelectModule } from '@angular/material/select';\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MessengerComponent } from './components/rtsee-messenger/messenger/messenger.component';\nimport { ChatComponent } from './components/rtsee-messenger/chat/chat.component';\nimport { MessageComponent } from './components/rtsee-messenger/message/message.component';\nimport { ChatsListComponent } from './components/rtsee-messenger/chats-list/chats-list.component';\nimport { MessagesListComponent } from './components/rtsee-messenger/messages-list/messages-list.component';\nimport { ChatThumbnailComponent } from './components/rtsee-messenger/chat-thumbnail/chat-thumbnail.component';\nimport { ChatInputComponent } from './components/rtsee-messenger/chat-input/chat-input.component';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { MessengerHeaderComponent } from './components/rtsee-messenger/messenger-header/messenger-header.component';\nimport { RtseeEventsDashboardComponent } from './components/rtsee-events-dashboard/rtsee-events-dashboard.component';\nimport { RtseeEventsDashboardClientComponent } from './components/rtsee-events-dashboard/components/rtsee-events-dashboard-client/rtsee-events-dashboard-client.component';\nimport { RtseeEventsDashboardClientThumbnailComponent } from './components/rtsee-events-dashboard/components/rtsee-events-dashboard-client-thumbnail/rtsee-events-dashboard-client-thumbnail.component';\nimport { WidgetDirective } from './directives/widget.directive';\nimport { CallWidgetComponent } from './components/rtsee-messenger/message-widgets/call-widget/call-widget.component';\nimport { AutosizeModule } from 'ngx-autosize';\nimport { InfiniteScrollModule } from 'ngx-infinite-scroll';\nimport { MainMenuComponent } from './components/rtsee-messenger/main-menu/main-menu.component';\nimport { MessageTimeAndStatusComponent } from './components/rtsee-messenger/message/components/message-time-and-status/message-time-and-status.component';\nimport { PreloaderComponent } from './common/components/preloader/preloader.component';\nimport { SearchComponent } from './components/rtsee-messenger/main-menu/components/search/search.component';\nimport { ManageChatComponent } from './components/rtsee-messenger/main-menu/components/manage-chat/manage-chat.component';\nimport { ContactsMultiselectComponent } from './components/rtsee-messenger/main-menu/components/contacts-multiselect/contacts-multiselect.component';\nimport { ShaveDirective } from './directives/shave.directive';\nimport { ProfileComponent } from './components/rtsee-messenger/profile/profile.component';\nimport { EventThumbnailComponent } from './components/rtsee-events-dashboard/components/event-thumbnail/event-thumbnail.component';\nimport { RtseeEventsDashboardSessionComponent } from './components/rtsee-events-dashboard/components/rtsee-events-dashboard-session/rtsee-events-dashboard-session.component';\nimport { RtseeContainerComponent } from './components/rtsee-container/rtsee-container.component';\n\n@NgModule({\n declarations: [\n RTSeeComponent,\n RTSeeControlsComponent,\n RtseePeerComponent,\n RtseeSoundbarComponent,\n RtseePeersListComponent,\n RtseeSettingsComponent,\n MessengerComponent,\n ChatComponent,\n MessageComponent,\n ChatsListComponent,\n MessagesListComponent,\n ChatThumbnailComponent,\n ChatInputComponent,\n MessengerHeaderComponent,\n RtseeEventsDashboardComponent,\n RtseeEventsDashboardClientComponent,\n RtseeEventsDashboardClientThumbnailComponent,\n WidgetDirective,\n CallWidgetComponent,\n MainMenuComponent,\n MessageTimeAndStatusComponent,\n PreloaderComponent,\n SearchComponent,\n ManageChatComponent,\n ContactsMultiselectComponent,\n ShaveDirective,\n ProfileComponent,\n EventThumbnailComponent,\n RtseeEventsDashboardSessionComponent,\n RtseeContainerComponent,\n ],\n imports: [\n CommonModule,\n MatIconModule,\n MatButtonModule,\n MatSelectModule,\n BrowserAnimationsModule,\n MatFormFieldModule,\n ReactiveFormsModule,\n AutosizeModule,\n InfiniteScrollModule,\n ],\n exports: [RTSeeComponent, MessengerComponent, RtseeEventsDashboardComponent],\n})\nexport class RTSeeModule {}\n","/*\n * Public API Surface of ngx\n */\n\nexport * from './lib/ngx.service';\nexport * from './lib/components/rtsee/rtsee-controls/rtsee-controls.component';\nexport * from './lib/components/rtsee/rtsee.component';\nexport * from './lib/components/rtsee-messenger/messenger/messenger.component';\nexport * from './lib/components/rtsee-events-dashboard/rtsee-events-dashboard.component';\nexport * from './lib/ngx.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["Injectable","Component","Input","interval","ViewChild","EventEmitter","Output","dayjs","relativeTime","shave","Directive","RTSeeChatTypes","RTSeeChatEvents","FormGroup","FormControl","Validators","debounceTime","CommonModule","MatIconModule","MatButtonModule","MatSelectModule","BrowserAnimationsModule","MatFormFieldModule","ReactiveFormsModule","AutosizeModule","InfiniteScrollModule","NgModule"],"mappings":"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"}
1
+ {"version":3,"file":"rtsee-ngx.umd.js","sources":["../../../projects/ngx/src/lib/ngx.service.ts","../../../projects/ngx/src/lib/components/rtsee/rtsee-controls/rtsee-controls.component.ts","../../../projects/ngx/src/lib/components/rtsee/rtsee-controls/rtsee-controls.component.html","../../../projects/ngx/src/lib/components/rtsee-settings/rtsee-settings.component.ts","../../../projects/ngx/src/lib/components/rtsee-settings/rtsee-settings.component.html","../../../projects/ngx/src/lib/components/rtsee-soundbar/rtsee-soundbar.component.ts","../../../projects/ngx/src/lib/components/rtsee-soundbar/rtsee-soundbar.component.html","../../../projects/ngx/src/lib/components/rtsee-peer/rtsee-peer.component.ts","../../../projects/ngx/src/lib/components/rtsee-peer/rtsee-peer.component.html","../../../projects/ngx/src/lib/components/rtsee/rtsee.component.ts","../../../projects/ngx/src/lib/components/rtsee/rtsee.component.html","../../../projects/ngx/src/lib/services/default-images.service.ts","../../../projects/ngx/src/lib/components/rtsee-messenger/profile/profile.component.ts","../../../projects/ngx/src/lib/components/rtsee-messenger/profile/profile.component.html","../../../projects/ngx/src/lib/components/rtsee-messenger/messenger-header/messenger-header.component.ts","../../../projects/ngx/src/lib/components/rtsee-messenger/messenger-header/messenger-header.component.html","../../../projects/ngx/src/lib/services/time-format-helper.service.ts","../../../projects/ngx/src/lib/common/components/preloader/preloader.component.ts","../../../projects/ngx/src/lib/common/components/preloader/preloader.component.html","../../../projects/ngx/src/lib/components/rtsee-messenger/message/components/message-time-and-status/message-time-and-status.component.ts","../../../projects/ngx/src/lib/components/rtsee-messenger/message/components/message-time-and-status/message-time-and-status.component.html","../../../projects/ngx/src/lib/directives/shave.directive.ts","../../../projects/ngx/src/lib/components/rtsee-messenger/chat-thumbnail/chat-thumbnail.component.ts","../../../projects/ngx/src/lib/components/rtsee-messenger/chat-thumbnail/chat-thumbnail.component.html","../../../projects/ngx/src/lib/components/rtsee-messenger/chats-list/chats-list.component.ts","../../../projects/ngx/src/lib/components/rtsee-messenger/chats-list/chats-list.component.html","../../../projects/ngx/src/lib/directives/widget.directive.ts","../../../projects/ngx/src/lib/components/rtsee-messenger/message-widgets/call-widget/call-widget.component.ts","../../../projects/ngx/src/lib/components/rtsee-messenger/message-widgets/call-widget/call-widget.component.html","../../../projects/ngx/src/lib/services/message-widgets.service.ts","../../../projects/ngx/src/lib/components/rtsee-messenger/message/message.component.ts","../../../projects/ngx/src/lib/components/rtsee-messenger/message/message.component.html","../../../projects/ngx/src/lib/components/rtsee-messenger/messages-list/messages-list.component.ts","../../../projects/ngx/src/lib/components/rtsee-messenger/messages-list/messages-list.component.html","../../../projects/ngx/src/lib/components/rtsee-messenger/chat-input/chat-input.component.ts","../../../projects/ngx/src/lib/components/rtsee-messenger/chat-input/chat-input.component.html","../../../projects/ngx/src/lib/components/rtsee-messenger/chat/chat.component.ts","../../../projects/ngx/src/lib/components/rtsee-messenger/chat/chat.component.html","../../../projects/ngx/src/lib/components/rtsee-messenger/main-menu/components/models/MainMenuState.ts","../../../projects/ngx/src/lib/components/rtsee-messenger/main-menu/components/search/search.component.ts","../../../projects/ngx/src/lib/components/rtsee-messenger/main-menu/components/search/search.component.html","../../../projects/ngx/src/lib/components/rtsee-messenger/main-menu/components/manage-chat/manage-chat.component.ts","../../../projects/ngx/src/lib/components/rtsee-messenger/main-menu/components/manage-chat/manage-chat.component.html","../../../projects/ngx/src/lib/components/rtsee-messenger/main-menu/components/contacts-multiselect/contacts-multiselect.component.ts","../../../projects/ngx/src/lib/components/rtsee-messenger/main-menu/components/contacts-multiselect/contacts-multiselect.component.html","../../../projects/ngx/src/lib/components/rtsee-messenger/main-menu/main-menu.component.ts","../../../projects/ngx/src/lib/components/rtsee-messenger/main-menu/main-menu.component.html","../../../projects/ngx/src/lib/components/rtsee-messenger/messenger/messenger.component.ts","../../../projects/ngx/src/lib/components/rtsee-messenger/messenger/messenger.component.html","../../../projects/ngx/src/lib/services/events-widgets.service.ts","../../../projects/ngx/src/lib/components/rtsee-events-dashboard/components/event-thumbnail/event-thumbnail.component.ts","../../../projects/ngx/src/lib/components/rtsee-events-dashboard/components/event-thumbnail/event-thumbnail.component.html","../../../projects/ngx/src/lib/components/rtsee-events-dashboard/components/rtsee-events-dashboard-session/rtsee-events-dashboard-session.component.ts","../../../projects/ngx/src/lib/components/rtsee-events-dashboard/components/rtsee-events-dashboard-session/rtsee-events-dashboard-session.component.html","../../../projects/ngx/src/lib/components/rtsee-events-dashboard/components/rtsee-events-dashboard-client-thumbnail/rtsee-events-dashboard-client-thumbnail.component.ts","../../../projects/ngx/src/lib/components/rtsee-events-dashboard/components/rtsee-events-dashboard-client-thumbnail/rtsee-events-dashboard-client-thumbnail.component.html","../../../projects/ngx/src/lib/components/rtsee-events-dashboard/rtsee-events-dashboard.component.ts","../../../projects/ngx/src/lib/components/rtsee-events-dashboard/rtsee-events-dashboard.component.html","../../../projects/ngx/src/lib/components/rtsee-peers-list/rtsee-peers-list.component.ts","../../../projects/ngx/src/lib/components/rtsee-peers-list/rtsee-peers-list.component.html","../../../projects/ngx/src/lib/components/rtsee-events-dashboard/components/rtsee-events-dashboard-client/rtsee-events-dashboard-client.component.ts","../../../projects/ngx/src/lib/components/rtsee-events-dashboard/components/rtsee-events-dashboard-client/rtsee-events-dashboard-client.component.html","../../../projects/ngx/src/lib/components/rtsee-container/rtsee-container.component.ts","../../../projects/ngx/src/lib/components/rtsee-container/rtsee-container.component.html","../../../projects/ngx/src/lib/ngx.module.ts","../../../projects/ngx/src/public-api.ts","../../../projects/ngx/src/rtsee-ngx.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class NgxService {\n lol: string;\n constructor() {\n this.lol = 'lol';\n }\n}\n","import { Component, Input } from '@angular/core';\nimport { RTSeeConference } from '@rtsee/conference';\n\n@Component({\n selector: 'ngx-rtsee-controls',\n templateUrl: './rtsee-controls.component.html',\n styleUrls: ['./rtsee-controls.component.scss'],\n})\nexport class RTSeeControlsComponent {\n @Input() rtsee!: RTSeeConference;\n @Input() fullScreenMode?: boolean;\n\n onPresentClicked() {\n return this.rtsee.isPresenter\n ? this.rtsee.stopScreenShare()\n : this.rtsee.startScreenShare();\n }\n}\n","<div class=\"rtsee-controls\" [ngClass]=\"{'rtsee-full-screen-controls' : fullScreenMode }\">\n <div class=\"rtsee-bottom-panel\">\n <div class=\"mic rtsee-buttons-container\">\n <button mat-icon-button matSuffix\n class=\"rtsee-ripple-button\"\n *ngIf=\"rtsee.microphone\"\n type=\"button\"\n (click)=\"this.rtsee.disableMicrophone()\"\n >\n <span class=\"material-icons-outlined\">mic_none</span>\n </button>\n <button mat-icon-button matSuffix\n class=\"rtsee-ripple-button\"\n *ngIf=\"!rtsee.microphone\"\n type=\"button\" (click)=\"this.rtsee.enableMicrophone()\"\n >\n <span class=\"material-icons-outlined\">mic_off</span>\n </button>\n </div>\n\n <div class=\"video-camera rtsee-buttons-container\">\n <button mat-icon-button matSuffix\n class=\"rtsee-ripple-button\"\n *ngIf=\"rtsee.camera\"\n type=\"button\"\n (click)=\"rtsee.disableCamera()\"\n >\n <span class=\"material-icons-outlined\">videocam</span>\n </button>\n <button mat-icon-button matSuffix\n class=\"rtsee-ripple-button\"\n *ngIf=\"!rtsee.camera\"\n type=\"button\"\n (click)=\"rtsee.enableCamera()\"\n >\n <span class=\"material-icons-outlined\">videocam_off</span>\n </button>\n </div>\n <div class=\"present rtsee-buttons-container\" [ngClass]=\"{'rtsee-present-button-container': rtsee.isPresenter}\">\n <button mat-icon-button matSuffix\n class=\"rtsee-ripple-button\"\n type=\"button\"\n (click)=\"onPresentClicked()\"\n >\n <span class=\"material-icons-outlined\">present_to_all</span>\n </button>\n </div>\n <div class=\"call-end rtsee-buttons-container\">\n <button mat-icon-button matSuffix\n class=\"rtsee-ripple-button\"\n type=\"button\"\n (click)=\"rtsee.end()\"\n >\n <span class=\"material-icons-outlined\">call_end</span>\n </button>\n </div>\n </div>\n</div>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { RTSeeConference } from '@rtsee/conference';\n\n@Component({\n selector: 'ngx-rtsee-settings',\n templateUrl: './rtsee-settings.component.html',\n styleUrls: ['./rtsee-settings.component.scss'],\n})\nexport class RtseeSettingsComponent implements OnInit {\n availableAudioInputDevices: MediaDeviceInfo[];\n availableVideoInputDevices: MediaDeviceInfo[];\n availableAudioOutputDevices: MediaDeviceInfo[];\n\n @Input() rtSee!: RTSeeConference;\n @Input() fullScreenMode!: boolean;\n constructor() {\n this.availableAudioInputDevices = [];\n this.availableVideoInputDevices = [];\n this.availableAudioOutputDevices = [];\n }\n\n ngOnInit(): void {\n this.refreshSelectOptions();\n }\n\n refreshSelectOptions() {\n void this.rtSee.refreshMediaDevicesList();\n }\n\n setAudioInput(deviceId: string) {\n this.rtSee.setAudioInputDevice(deviceId);\n console.log(deviceId);\n }\n\n setAudioOutput(deviceId: string) {\n this.rtSee.setAudioOutputDevice(deviceId);\n }\n\n setVideoInput(deviceId: string) {\n this.rtSee.setVideoInputDevice(deviceId);\n }\n}\n","<div class=\"rtsee-settings\" [ngClass]=\"{'rtsee-full-screen-settings' : fullScreenMode}\">\n <div class=\"rtsee-devices\">\n <div class=\"rtsee-device-select-wrapper\">\n <label class=\"rtsee-select-label\" for=\"audio-input\">Audio Input:</label>\n <select class=\"rtsee-select\" id=\"audio-input\" (click)=\"refreshSelectOptions()\">\n <option *ngFor=\"let device of rtSee.audioInputDevices\" [value]=\"device.deviceId\" (click)=\"setAudioInput(device.deviceId)\">\n {{device.label}}\n </option>\n </select>\n </div>\n <div class=\"rtsee-device-select-wrapper\">\n <label class=\"rtsee-select-label\" for=\"audio-output\">Audio Output:</label>\n <select class=\"rtsee-select\" id=\"audio-output\" (click)=\"refreshSelectOptions()\">\n <option *ngFor=\"let device of rtSee.audioOutputDevices\" [value]=\"device.deviceId\" (click)=\"setAudioOutput(device.deviceId)\">\n {{device.label}}\n </option>\n </select>\n </div>\n <div class=\"rtsee-device-select-wrapper\">\n <label class=\"rtsee-select-label\" for=\"video-input\">Video Input:</label>\n <select class=\"rtsee-select\" id=\"video-input\" (click)=\"refreshSelectOptions()\">\n <option *ngFor=\"let device of rtSee.videoInputDevices\" [value]=\"device.deviceId\" (click)=\"setVideoInput(device.deviceId)\">\n {{device.label}}\n </option>\n </select>\n </div>\n </div>\n</div>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { RTSeePeerConnection } from '@rtsee/conference';\nimport { interval } from 'rxjs';\n\n@Component({\n selector: 'ngx-rtsee-soundbar',\n templateUrl: './rtsee-soundbar.component.html',\n styleUrls: ['./rtsee-soundbar.component.scss'],\n})\nexport class RtseeSoundbarComponent implements OnInit {\n intervalLength: number;\n noiceLevel: number;\n scaleOneLevel: number;\n scaleTwoLevel: number;\n scaleThreeLevel: number;\n\n @Input() peer!: RTSeePeerConnection;\n constructor() {\n this.intervalLength = 1000;\n this.noiceLevel = 0;\n this.scaleOneLevel = 0;\n this.scaleTwoLevel = 0;\n this.scaleThreeLevel = 0;\n }\n\n ngOnInit(): void {\n this.startSoundMeterListening();\n }\n\n startSoundMeterListening() {\n const step = interval(1000 / 10);\n step.subscribe(() => {\n if (!this.peer.soundMeter || !this.peer.soundMeter.level) {\n this.noiceLevel = 0;\n } else {\n this.noiceLevel = this.peer.soundMeter?.level * 100 || 0;\n }\n\n this.setSoundMeterHeights();\n });\n }\n\n setSoundMeterHeights() {\n const ZERO_LEVEL = 25;\n const SCALE_STEP = 25;\n const SCALE_ONE_TOP = ZERO_LEVEL + SCALE_STEP;\n const SCALE_TWO_TOP = SCALE_ONE_TOP + SCALE_STEP;\n\n if (!this.peer || !this.peer.soundMeter || this.noiceLevel < ZERO_LEVEL) {\n this.scaleOneLevel = 0;\n this.scaleTwoLevel = 0;\n this.scaleThreeLevel = 0;\n }\n\n const scaleOneValue = ((this.noiceLevel - ZERO_LEVEL) / SCALE_STEP) * 100;\n const scaleTwoValue =\n ((this.noiceLevel - SCALE_ONE_TOP) / SCALE_STEP) * 100;\n const scaleThreeValue =\n ((this.noiceLevel - SCALE_TWO_TOP) / SCALE_STEP) * 100;\n\n this.scaleOneLevel = scaleOneValue > 0 ? scaleOneValue : 0;\n this.scaleTwoLevel = scaleTwoValue > 0 ? scaleTwoValue : 0;\n this.scaleThreeLevel = scaleThreeValue > 0 ? scaleTwoValue : 0;\n }\n}\n","<div class=\"rtsee-soundbar\">\n <div class=\"rtsee-soundbar-scale\">\n <div class=\"rtsee-soundbar-scale-item\">\n <div class=\"rtsee-soundbar-scale-item-level rtsee-soundbar-scale-item-level-one\"\n [style.height.%]=\"scaleOneLevel\"\n ></div>\n </div>\n <div class=\"rtsee-soundbar-scale-item\">\n <div class=\"rtsee-soundbar-scale-item-level rtsee-soundbar-scale-item-level-two\"\n [style.height.%]=\"scaleTwoLevel\"\n ></div>\n </div>\n <div class=\"rtsee-soundbar-scale-item\">\n <div class=\"rtsee-soundbar-scale-item-level rtsee-soundbar-scale-item-level-three\"\n [style.height.%]=\"scaleThreeLevel\"\n ></div>\n </div>\n </div>\n</div>\n","import {\n AfterViewInit,\n Component,\n ElementRef,\n Input,\n ViewChild,\n} from '@angular/core';\nimport { RTSeePeerConnection } from '@rtsee/conference';\n\n@Component({\n selector: 'ngx-rtsee-peer',\n templateUrl: './rtsee-peer.component.html',\n styleUrls: ['./rtsee-peer.component.scss'],\n})\nexport class RtseePeerComponent implements AfterViewInit {\n intervalLength: number;\n noiceLevel: number;\n\n @ViewChild('audioOutput') audioOutput?: ElementRef;\n @ViewChild('videoOutput') videoOutput?: ElementRef;\n @Input() peer!: RTSeePeerConnection;\n\n constructor() {\n this.intervalLength = 1000;\n this.noiceLevel = 0;\n }\n\n ngAfterViewInit(): void {\n if (!this.audioOutput) {\n return;\n }\n this.peer.setAudioOutputElement(\n this.audioOutput.nativeElement as HTMLAudioElement\n );\n }\n}\n","<div class=\"rtsee-peer\" [ngClass]=\"{\n'rtsee-peer-video-disabled': !peer.remoteVideoStream || !peer.camera\n}\">\n <div class=\"rtsee-peer-content\">\n <div class=\"rtsee-peer-photo\" *ngIf=\"!peer.camera\">\n <div class=\"rtsee-peer-photo-wrapper\">\n <div *ngIf=\"peer.imageUrl\"\n [style.background-image]=\"'url(' + peer.imageUrl + ')'\"\n class=\"rtsee-peer-photo-image\"\n ></div>\n <img *ngIf=\"!peer.imageUrl\" [src]=\"\" alt=\"peer_photo\" class=\"rtsee-peer-photo-image\">\n </div>\n <div class=\"rtsee-peer-info\">\n <p class=\"rtsee-peer-name\" *ngIf=\"peer.name\">{{peer.name}}</p>\n </div>\n </div>\n <video #videoOutput\n class=\"rtsee-peer-video\"\n [autoplay]=\"true\"\n [srcObject]=\"peer.remoteVideoStream\"\n playsinline=\"true\"\n >\n </video>\n <div class=\"rtsee-peer-soundbar\">\n <ngx-rtsee-soundbar [peer]=\"peer\"></ngx-rtsee-soundbar>\n </div>\n </div>\n</div>\n","import { Component, Input } from '@angular/core';\nimport { RTSeeConference } from '@rtsee/conference';\n\n@Component({\n selector: 'ngx-rtsee',\n templateUrl: './rtsee.component.html',\n styleUrls: ['./rtsee.component.scss'],\n})\nexport class RTSeeComponent {\n settingsViewEnabled: boolean;\n fullScreenModeEnabled: boolean;\n\n @Input() rtSee!: RTSeeConference;\n constructor() {\n this.settingsViewEnabled = false;\n this.fullScreenModeEnabled = false;\n }\n\n toggleSettings() {\n this.settingsViewEnabled = !this.settingsViewEnabled;\n }\n\n toggleFullScreenMode() {\n this.fullScreenModeEnabled = !this.fullScreenModeEnabled;\n }\n}\n","<div class=\"rtsee-shell\" [ngClass]=\"{\n'rtsee-shell-expanded': rtSee.uiControls.isExpanded || fullScreenModeEnabled,\n'rtsee-shell-no-companions': !rtSee.rtcPeerConnections.connections?.length\n}\">\n <div class=\"rtsee-local-peer\" *ngIf=\"rtSee.localStream && rtSee.camera\">\n <video class=\"rtsee-local-video\"\n [autoplay]=\"true\"\n [muted]=\"true\"\n [srcObject]=\"rtSee.localStream\"\n playsinline=\"true\"\n ></video>\n </div>\n <div class=\"rtsee-window-controls\">\n <button mat-icon-button matSuffix\n type=\"button\"\n (click)=\"this.toggleSettings()\"\n class=\"rtsee-window-controls-button rtsee-ripple-button\"\n >\n <span class=\"material-icons-outlined\">settings</span>\n </button>\n <button mat-icon-button matSuffix\n type=\"button\"\n (click)=\"this.toggleFullScreenMode()\"\n class=\"rtsee-window-controls-button rtsee-ripple-button\"\n >\n <span class=\"material-icons-outlined\">open_in_full</span>\n </button>\n </div>\n <div class=\"rtsee-settings-container\" *ngIf=\"settingsViewEnabled\">\n <button mat-icon-button matSuffix\n type=\"button\"\n (click)=\"this.toggleSettings()\"\n class=\"rtsee-close-settings-button\"\n >\n <span class=\"material-icons-outlined\">close</span>\n </button>\n <ngx-rtsee-settings [rtSee]=\"rtSee\" [fullScreenMode]=\"fullScreenModeEnabled\"></ngx-rtsee-settings>\n </div>\n <div class=\"rtsee-screen-share\" *ngIf=\"rtSee.screenSharePeer\" >\n <video [autoplay]=\"true\"\n [muted]=\"true\"\n [srcObject]=\"rtSee.screenSharePeer.remoteVideoStream\"\n playsinline=\"true\"\n class=\"rtsee-screen-share-video\"\n ></video>\n </div>\n <div class=\"rtsee-peers\" [ngClass]=\"{\n 'rtsee-peers-alone': !rtSee.rtcPeerConnections.connections?.length,\n 'rtsee-peers-one': rtSee.rtcPeerConnections.connections?.length === 1,\n 'rtsee-peers-three-grid': rtSee.rtcPeerConnections.connections?.length\n && rtSee.rtcPeerConnections.connections.length > 1\n && rtSee.rtcPeerConnections.connections.length < 4,\n 'rtsee-peers-six-grid': rtSee.rtcPeerConnections.connections?.length\n && rtSee.rtcPeerConnections.connections.length > 3\n && rtSee.rtcPeerConnections.connections.length < 7,\n 'rtsee-peers-nine-grid': rtSee.rtcPeerConnections.connections?.length\n && rtSee.rtcPeerConnections.connections.length >= 7\n }\">\n <div class=\"rtsee-peer-wrapper\"\n *ngFor=\"let peer of rtSee.rtcPeerConnections.connections\"\n >\n <ngx-rtsee-peer [peer]=\"peer\"></ngx-rtsee-peer>\n </div>\n </div>\n <div class=\"rtsee-peers-list\"></div>\n <div class=\"rtsee-controls-wrapper\">\n <ngx-rtsee-controls [rtsee]=\"rtSee\" [fullScreenMode]=\"fullScreenModeEnabled\"></ngx-rtsee-controls>\n </div>\n</div>\n\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class DefaultImagesService {\n PROFILE = 'https://werf-assets.s3.amazonaws.com/default-profile-logo.png';\n}\n","import { Component, Input } from '@angular/core';\nimport { RTSeeMessenger } from '@rtsee/messenger';\n\n@Component({\n selector: 'rtsee-profile',\n templateUrl: './profile.component.html',\n})\nexport class ProfileComponent {\n @Input() messenger!: RTSeeMessenger;\n\n call() {\n if (!this.messenger.openedChat) {\n return;\n }\n void this.messenger.initializeVideoCall(this.messenger.openedChat);\n }\n\n videoCall() {\n if (!this.messenger.openedChat) {\n return;\n }\n void this.messenger.initializeVideoCall(this.messenger.openedChat);\n }\n}\n","<div class=\"rtsee-messenger-profile\">\n <ul class=\"rtsee-messenger-profile-controls\">\n <li class=\"rtsee-messenger-profile-control\">\n <button (click)=\"call()\" class=\"rtsee-messenger-profile-control-button\">\n <span class=\"rtsee-messenger-profile-control-button-icon material-icons-outlined\">call</span>\n <span class=\"rtsee-messenger-profile-control-button-label\">call</span>\n </button>\n </li>\n <li class=\"rtsee-messenger-profile-control\">\n <button (click)=\"videoCall()\" class=\"rtsee-messenger-profile-control-button\">\n <span class=\"rtsee-messenger-profile-control-button-icon material-icons-outlined\">videocam</span>\n <span class=\"rtsee-messenger-profile-control-button-label\">video</span>\n </button>\n </li>\n <li class=\"rtsee-messenger-profile-control\">\n <button (click)=\"videoCall()\" class=\"rtsee-messenger-profile-control-button\">\n <span class=\"rtsee-messenger-profile-control-button-icon material-icons-outlined\">videocam</span>\n <span class=\"rtsee-messenger-profile-control-button-label\">person</span>\n </button>\n </li>\n </ul>\n</div>\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { RTSeeMessenger } from '@rtsee/messenger';\nimport { DefaultImagesService } from '../../../services/default-images.service';\n\n@Component({\n selector: 'rtsee-messenger-header',\n templateUrl: './messenger-header.component.html',\n})\nexport class MessengerHeaderComponent {\n @Output() expandToggled = new EventEmitter();\n @Input() isExpanded?: boolean;\n @Input() messenger!: RTSeeMessenger;\n constructor(public defaultImagesService: DefaultImagesService) {\n this.isExpanded = false;\n this.expandToggled.emit(this.isExpanded);\n }\n\n toggleExpand() {\n this.isExpanded = !this.isExpanded;\n this.expandToggled.emit(this.isExpanded);\n }\n}\n","<div class=\"rtsee-messenger-header\"\n [ngClass]=\"{\n 'rtsee-messenger-header-chat-opened': messenger.openedChat,\n 'rtsee-messenger-header-expanded': isExpanded\n }\"\n>\n <div class=\"rtsee-messenger-profile-image-container \">\n <div *ngIf=\"!messenger.openedChat\"\n [style.background-image]=\"'url(' + messenger.myPeer?.imageUrl || defaultImagesService.PROFILE + ')'\"\n class=\"rtsee-messenger-profile-image\">\n </div>\n </div>\n\n <button class=\"rtsee-messenger-close-chat\"\n *ngIf=\"messenger.openedChat\"\n (click)=\"messenger.closeChat()\"\n >\n <span class=\"material-icons-outlined\">chevron_left</span>\n <span *ngIf=\"messenger.unreadMessagesCount\">{{messenger.unreadMessagesCount}}</span>\n </button>\n\n <button class=\"rtsee-messenger-menu-toggle\"\n *ngIf=\"!messenger.openedChat\"\n (click)=\"messenger.openMainMenu(true)\"\n >\n <span class=\"material-icons-outlined rtsee-messenger-menu-toggle-icon\">chat_bubble</span>\n </button>\n <div *ngIf=\"messenger.openedChat\"\n [ngClass]=\"{'rtsee-messenger-header-opened-chat-info-expanded': isExpanded}\"\n class=\"rtsee-messenger-header-opened-chat-info\">\n <div class=\"rtsee-messenger-profile-header-placeholder\">\n <p *ngIf=\"messenger.openedChat\"\n class=\"rtsee-messenger-header-chat-title\"\n >{{ messenger.openedChat.name }}</p>\n <div class=\"rtsee-messenger-profile-image-container\" (click)=\"toggleExpand()\">\n <div class=\"rtsee-messenger-profile-image\"\n [style.background-image]=\"'url(' + messenger.openedChat.imageUrl || defaultImagesService.PROFILE + ')'\"\n ></div>\n </div>\n </div>\n <div class=\"rtsee-messenger-profile-data-container\">\n <rtsee-profile *ngIf=\"isExpanded\" [messenger]=\"messenger\"></rtsee-profile>\n </div>\n </div>\n\n <p *ngIf=\"!messenger.openedChat\"\n class=\"rtsee-messenger-header-title\"\n >Chats</p>\n</div>\n","import { Injectable } from '@angular/core';\n\nimport * as dayjs from 'dayjs';\nimport * as relativeTime from 'dayjs/plugin/relativeTime';\ndayjs.extend(relativeTime);\n\n@Injectable({\n providedIn: 'root',\n})\nexport class TimeFormatHelperService {\n toAgo(time: Date): string {\n /* eslint-disable */\n return dayjs(time).fromNow() as string;\n /* eslint-enable */\n }\n toDayOfWeek(time: Date): string {\n /* eslint-disable */\n return dayjs(time).format('ddd');\n /* eslint-enable */\n }\n toTime(time: Date): string {\n /* eslint-disable */\n return dayjs(time).format('HH:mm') as string;\n /* eslint-enable */\n }\n toDate(time: Date): string {\n /* eslint-disable */\n return dayjs(time).format('D MMMM') as string;\n /* eslint-enable */\n }\n toDateNumeral(time: Date): string {\n /* eslint-disable */\n return dayjs(time).format('DD.MM');\n /* eslint-enable */\n }\n\n toDateNumeralWithYear(time: Date): string {\n /* eslint-disable */\n return dayjs(time).format('DD.MM.YY');\n /* eslint-enable */\n }\n\n toDateWithYear(time: Date): string {\n /* eslint-disable */\n return dayjs(time).format('MMMM D, YYYY ') as string;\n /* eslint-enable */\n }\n\n formatDate(time: Date) {\n const today = new Date();\n const dayMs = 1000 * 60 * 60 * 24;\n const twoDays = dayMs * 2;\n\n if (!time) {\n return '';\n }\n\n if (\n today.getTime() - time.getTime() < dayMs &&\n today.getDay() === time.getDay()\n ) {\n return 'Today';\n }\n\n if (\n today.getTime() - time.getTime() < twoDays &&\n today.getTime() - time.getTime() > dayMs &&\n today.getDay() !== time.getDay()\n ) {\n return 'Yesterday';\n }\n\n if (today.getFullYear() === time.getFullYear()) {\n return this.toDate(time);\n }\n\n return this.toDateWithYear(time);\n }\n\n formatTimeOrDate(time: Date) {\n if (!time) {\n return '';\n }\n\n const today = new Date();\n const dayMs = 1000 * 60 * 60 * 24;\n\n if (\n today.getTime() - time.getTime() < dayMs &&\n today.getDay() === time.getDay()\n ) {\n return this.toTime(time);\n }\n\n if (\n today.getTime() - time.getTime() > dayMs &&\n today.getTime() - time.getTime() < dayMs * 7\n ) {\n return this.toDayOfWeek(time);\n }\n\n if (\n today.getTime() - time.getTime() > dayMs * 7 &&\n today.getFullYear() === time.getFullYear()\n ) {\n return this.toDateNumeral(time);\n }\n\n return this.toDateNumeralWithYear(time);\n }\n}\n","import { Component, ElementRef, Input, OnInit, ViewChild } from '@angular/core';\n\n@Component({\n selector: 'rtsee-preloader',\n templateUrl: './preloader.component.html',\n})\nexport class PreloaderComponent implements OnInit {\n viewBox = '0 0 100 100';\n d = 'M 50 96 a 46 46 0 0 1 0 -92 46 46 0 0 1 0 92';\n\n @ViewChild('canvas') canvas?: ElementRef<SVGElement>;\n @Input() diameter?: number;\n @Input() color?: string = '#000000';\n constructor() {\n if (this.diameter) {\n this.viewBox = `0 0 ${this.diameter} ${this.diameter}`;\n this.d = `M ${this.diameter / 2} ${this.diameter * 0.96} a ${\n this.diameter * 0.46\n } ${this.diameter * 0.46} 0 0 1 0 -${this.diameter * 0.92} ${\n this.diameter * 0.46\n } ${this.diameter * 0.46} 0 0 1 0 ${this.diameter * 0.92}`;\n }\n }\n\n ngOnInit(): void {\n //viewBox=\"0 0 100 100\"\n //d=\"M 50 96 a 46 46 0 0 1 0 -92 46 46 0 0 1 0 92\"\n }\n}\n","<div class=\"rtsee-preloader\">\n <svg [style.max-width.px]=\"diameter\" #canvas [attr.viewBox]=\"viewBox\">\n <path [attr.d]=\"d\" [attr.stroke]=\"color\"/>\n </svg>\n</div>\n","import { Component, Input } from '@angular/core';\nimport { RTSeeMessage, IMessageThumbnail } from '@rtsee/messenger';\nimport { TimeFormatHelperService } from '../../../../../services/time-format-helper.service';\n@Component({\n selector: 'rtsee-message-time-and-status',\n templateUrl: './message-time-and-status.component.html',\n})\nexport class MessageTimeAndStatusComponent {\n @Input() message!: RTSeeMessage | IMessageThumbnail;\n @Input() hideStatus?: boolean;\n constructor(public timeFormatService: TimeFormatHelperService) {}\n}\n","<div class=\"rtsee-messenger-message-time-and-status\">\n <span class=\"rtsee-messenger-message-time\">{{timeFormatService.formatTimeOrDate(message.createdAt)}}</span>\n <span class=\"rtsee-messenger-message-status\" *ngIf=\"!hideStatus\">\n <span *ngIf=\"message.status === 'pending'\"><rtsee-preloader [diameter]=\"5\"></rtsee-preloader></span>\n <span *ngIf=\"message.status === 'sent'\" class=\"material-icons-outlined rtsee-message-sent-status\">check</span>\n <span *ngIf=\"message.status === 'delivered'\" class=\"material-icons-outlined rtsee-message-delivered-status\">check</span>\n <span *ngIf=\"message.status === 'seen'\" class=\"material-icons-outlined rtsee-message-seen-status\">check</span>\n </span>\n</div>\n","import { AfterViewInit, Directive, ElementRef } from '@angular/core';\nimport shave from 'shave';\n\n@Directive({\n selector: '[rtseeShave]',\n})\nexport class ShaveDirective implements AfterViewInit {\n constructor(private elem: ElementRef<HTMLDivElement>) {}\n\n ngAfterViewInit() {\n const height = this.elem.nativeElement?.offsetHeight;\n shave(this.elem.nativeElement as unknown as NodeList, height);\n }\n}\n","import { Component, Input } from '@angular/core';\nimport {\n RTSeeMessenger,\n IMessageThumbnail,\n RTSeeChatTypes,\n} from '@rtsee/messenger';\nimport { TimeFormatHelperService } from '../../../services/time-format-helper.service';\n\n@Component({\n selector: 'rtsee-chat-thumbnail',\n templateUrl: './chat-thumbnail.component.html',\n})\nexport class ChatThumbnailComponent {\n @Input() chat!: IMessageThumbnail;\n @Input() messenger!: RTSeeMessenger;\n\n readonly RTSeeChatTypes = RTSeeChatTypes;\n\n constructor(public timeFormatService: TimeFormatHelperService) {}\n}\n","<div class=\"rtsee-chat-thumbnail\" (click)=\"messenger.openChatById(chat.chatId)\">\n <div class=\"rtsee-chat-thumbnail-image\">\n <img [src]=\"chat.chatImageUrl\" alt=\"chat-img\">\n </div>\n <div class=\"rtsee-chat-thumbnail-left\">\n <div class=\"rtsee-chat-thumbnail-name\">\n <span>{{ chat.chatName }}</span>\n <div class=\"rtsee-chat-thumbnail-status\">\n <rtsee-message-time-and-status [message]=\"chat\"></rtsee-message-time-and-status>\n </div>\n </div>\n <div class=\"rtsee-chat-thumbnail-last-message\"\n [ngClass]=\"{'rtsee-has-unread': chat.unreadMessagesCount}\"\n rtseeShave>\n <span class=\"rtsee-chat-thumbnail-last-message-sender\"\n *ngIf=\"chat.chatType !== RTSeeChatTypes.INDIVIDUAL && chat.senderName\"\n >{{chat.senderName}}</span>\n <span class=\"rtsee-chat-thumbnail-last-message-text\"\n *ngIf=\"chat.text\"\n >{{chat.text}}</span>\n <div class=\"rtsee-messenger-thumbnail-unread\" *ngIf=\"chat.unreadMessagesCount\">\n <span class=\"rtsee-messenger-thumbnail-unread-count\">{{chat.unreadMessagesCount}}</span>\n </div>\n </div>\n </div>\n</div>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { RTSeeChat, RTSeeMessenger } from '@rtsee/messenger';\n\n@Component({\n selector: 'rtsee-chats-list',\n templateUrl: './chats-list.component.html',\n})\nexport class ChatsListComponent implements OnInit {\n @Input() messenger!: RTSeeMessenger;\n @Input() chats!: RTSeeChat[];\n\n ngOnInit(): void {\n // console.log(this.chats);\n }\n}\n","<div class=\"rtsee-chats-list\">\n <div class=\"rtsee-chat-thumbnail-container\" *ngFor=\"let chat of chats; let last = last;\">\n <rtsee-chat-thumbnail [chat]=\"chat.thumbnail\" [messenger]=\"messenger\"></rtsee-chat-thumbnail>\n <div class=\"rtsee-chat-thumbnail-separator\" *ngIf=\"!last\"></div>\n </div>\n</div>\n","import { Directive, ViewContainerRef } from '@angular/core';\n\n@Directive({\n selector: '[widgetHost]',\n})\nexport class WidgetDirective {\n constructor(public viewContainerRef: ViewContainerRef) {}\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { RTSeeMessage, RTSeeMessenger } from '@rtsee/messenger';\nimport { IRTSeeCall } from '@rtsee/core';\n\n@Component({\n selector: 'ngx-call-widget',\n templateUrl: './call-widget.component.html',\n styleUrls: ['./call-widget.component.css'],\n})\nexport class CallWidgetComponent implements OnInit {\n @Input() message!: RTSeeMessage<IRTSeeCall>;\n @Input() messenger!: RTSeeMessenger;\n callerName?: string;\n\n ngOnInit(): void {\n if (this.messenger.clientId === this.message.data?.callerId) {\n this.callerName = 'You';\n } else {\n this.callerName = this.message.data?.caller?.name;\n }\n }\n\n joinCall() {\n if (!this.messenger || !this.message.data?.roomId) {\n console.log('No Room Id specified or no messenger!');\n return;\n }\n void this.messenger.joinCall(this.message.data.roomId);\n }\n}\n","<div class=\"rtsee-call-widget\">\n <p *ngIf=\"callerName\"> {{ callerName }} has started a call</p>\n <p *ngIf=\"callerName === 'You'\"> You have started a call</p>\n <p *ngIf=\"!callerName\"> The call has started</p>\n <button (click)=\"joinCall()\">Join Call</button>\n</div>\n","import { Injectable } from '@angular/core';\nimport { CallWidgetComponent } from '../components/rtsee-messenger/message-widgets/call-widget/call-widget.component';\n\nexport interface IMessageWidget {\n name: string;\n component: any;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class MessageWidgetsService {\n widgetsMap: IMessageWidget[] = [\n { name: 'rtsee-call', component: CallWidgetComponent },\n ];\n\n getWidgetComponentByName(name: string) {\n /* eslint-disable */\n const mapping = this.widgetsMap.find((e) => e.name === name);\n if (!mapping) {\n return null;\n }\n return mapping.component;\n /* eslint-enable */\n }\n}\n","import {\n AfterViewInit,\n Component,\n ComponentFactoryResolver,\n ComponentRef,\n Input,\n ViewChild,\n} from '@angular/core';\nimport {\n RTSeeChat,\n RTSeeChatMember,\n RTSeeMessage,\n RTSeeMessenger,\n} from '@rtsee/messenger';\nimport { MessageWidgetsService } from '../../../services/message-widgets.service';\nimport { WidgetDirective } from '../../../directives/widget.directive';\nimport { TimeFormatHelperService } from '../../../services/time-format-helper.service';\n\n@Component({\n selector: 'rtsee-message',\n templateUrl: './message.component.html',\n})\nexport class MessageComponent implements AfterViewInit {\n @Input() chat!: RTSeeChat;\n @Input() message!: RTSeeMessage;\n @Input() member!: RTSeeChatMember<any>;\n @Input() messenger!: RTSeeMessenger;\n @ViewChild(WidgetDirective, { static: false }) widgetHost!: WidgetDirective;\n constructor(\n private widgetsService: MessageWidgetsService,\n private componentFactoryResolver: ComponentFactoryResolver,\n public timeFormatService: TimeFormatHelperService\n ) {}\n\n ngAfterViewInit() {\n /* eslint-disable */\n if (this.message.widget) {\n const widget = this.widgetsService.getWidgetComponentByName(\n this.message.widget\n );\n if (!widget) {\n return;\n }\n const viewContainerRef = this.widgetHost.viewContainerRef;\n viewContainerRef.clear();\n const componentToShow =\n this.componentFactoryResolver.resolveComponentFactory(widget);\n const componentRef: ComponentRef<typeof widget> =\n viewContainerRef.createComponent(componentToShow);\n componentRef.instance.message = this.message;\n componentRef.instance.messenger = this.messenger;\n componentRef.changeDetectorRef.detectChanges();\n }\n /* eslint-enable */\n }\n}\n","<div class=\"rtsee-messenger-message-container\" #rtsMessageContainer\n [ngClass]=\"{'rtsee-message-from-me': message.from === messenger.clientId}\"\n>\n <div class=\"rtsee-messenger-message\">\n <ng-template *ngIf=\"message.widget\" widgetHost></ng-template>\n <p *ngIf=\"!message.widget\"\n class=\"rtsee-messenger-message-text\"\n >{{ message.text }}</p>\n <div class=\"rtsee-messenger-message-info\" #rtsMessageInfo>\n <rtsee-message-time-and-status [message]=\"message\"\n [hideStatus]=\"message.from !== messenger.clientId\"\n ></rtsee-message-time-and-status>\n </div>\n </div>\n</div>\n","import {\n AfterViewInit,\n Component,\n ElementRef,\n Input,\n OnDestroy,\n OnInit,\n ViewChild,\n} from '@angular/core';\nimport {\n RTSeeChat,\n RTSeeMessenger,\n RTSeeMessage,\n RTSeeChatEvents,\n} from '@rtsee/messenger';\nimport { TimeFormatHelperService } from '../../../services/time-format-helper.service';\n\n@Component({\n selector: 'rtsee-messages-list',\n templateUrl: './messages-list.component.html',\n})\nexport class MessagesListComponent implements AfterViewInit, OnDestroy, OnInit {\n bindScrollFunction: () => void;\n\n @Input() chat!: RTSeeChat;\n @Input() messenger!: RTSeeMessenger;\n @ViewChild('scrollBlock') scrollContainer!: ElementRef<HTMLDivElement>;\n constructor(private timeFormatService: TimeFormatHelperService) {\n this.bindScrollFunction = this.scrollToBottom.bind(this) as () => void;\n }\n\n ngOnInit() {\n this.chat.on(RTSeeChatEvents.MESSAGE_ADDED, this.bindScrollFunction);\n }\n\n ngAfterViewInit() {\n this.scrollToBottom();\n }\n\n onMessageSent() {\n this.scrollToBottom();\n }\n\n ngOnDestroy() {\n this.chat.off(RTSeeChatEvents.MESSAGE_ADDED, this.bindScrollFunction);\n }\n\n onScrolledToTop() {\n if (this.chat.messagesLoadInProgress) {\n return;\n }\n this.chat.loadRemoteMessages();\n }\n\n onScroll() {\n if (this.scrollContainer.nativeElement.scrollTop < 1) {\n this.scrollContainer.nativeElement.scrollTop = 1;\n }\n }\n\n scrollToBottom() {\n if (!this.scrollContainer?.nativeElement?.scrollHeight) {\n return;\n }\n\n try {\n this.scrollContainer.nativeElement.scrollTop =\n this.scrollContainer.nativeElement.scrollHeight;\n } catch (err) {\n console.log('Failed to Scroll');\n }\n }\n\n formatDate(message: RTSeeMessage) {\n return this.timeFormatService.formatDate(message.createdAt);\n }\n}\n","<div class=\"rtsee-messenger-messages-list\"\n #scrollBlock\n infiniteScroll\n [infiniteScrollUpDistance]=\"2\"\n [infiniteScrollThrottle]=\"50\"\n [scrollWindow]=\"false\"\n (scrolledUp)=\"onScrolledToTop()\"\n (scroll)=\"onScroll()\"\n>\n <div *ngFor=\"let message of chat.messages; let i = index;\"\n [ngClass]=\"{'rtsee-messenger-message-wrapper-consecutive': message.from === chat.messages[i+1]?.from}\"\n class=\"rtsee-messenger-message-wrapper\"\n >\n <div *ngIf=\"message.hasDateChanged\" class=\"rtsee-messenger-message-date\">\n <span>{{formatDate(message)}}</span>\n </div>\n <rtsee-message [message]=\"message\" [messenger]=\"messenger\" [chat]=\"chat\"></rtsee-message>\n </div>\n</div>\n","import { Component, Input } from '@angular/core';\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\nimport { RTSeeChat, RTSeeMessenger } from '@rtsee/messenger';\n\n@Component({\n selector: 'rtsee-chat-input',\n templateUrl: './chat-input.component.html',\n})\nexport class ChatInputComponent {\n sendMessageForm: FormGroup = new FormGroup({\n /* eslint-disable */\n message: new FormControl('', Validators.required),\n /* eslint-enable */\n });\n\n @Input() messenger!: RTSeeMessenger;\n @Input() chat!: RTSeeChat;\n\n sendMessage() {\n const text = this.sendMessageForm.get('message')?.value as string;\n if (!text) {\n return;\n }\n this.chat.sendMessage(text);\n this.sendMessageForm.get('message')?.setValue('');\n }\n}\n","<div class=\"rtsee-chat-input\" xmlns=\"http://www.w3.org/1999/html\">\n <div class=\"rtsee-send-message\">\n <form [formGroup]=\"sendMessageForm\">\n <textarea\n placeholder=\"Type message...\"\n type=\"text\"\n formControlName=\"message\"\n class=\"rtsee-chat-input-field\"\n autosize\n required\n ></textarea>\n </form>\n </div>\n <button (click)=\"sendMessage()\"\n class=\"rtsee-send-message-button\"\n type=\"submit\">\n <span class=\"material-icons-outlined\">send</span>\n </button>\n</div>\n","import { Component, Input } from '@angular/core';\nimport { RTSeeChat, RTSeeMessenger } from '@rtsee/messenger';\n\n@Component({\n selector: 'rtsee-chat',\n templateUrl: './chat.component.html',\n})\nexport class ChatComponent {\n @Input() chat!: RTSeeChat;\n @Input() messenger!: RTSeeMessenger;\n}\n","<div class=\"rtsee-chat\">\n <div class=\"rtsee-chat-body-container\">\n <rtsee-messages-list [messenger]=\"messenger\" [chat]=\"chat\"></rtsee-messages-list>\n </div>\n <div class=\"rtsee-chat-footer-container\">\n <rtsee-chat-input [messenger]=\"messenger\" [chat]=\"chat\"></rtsee-chat-input>\n </div>\n</div>\n","export enum MainMenuPanels {\n HOME = 'home',\n CONTACTS_SELECT = 'contacts-select',\n MANAGE_CHAT = 'manage-chat',\n}\n\nexport interface IMainMenuState {\n activePanel: MainMenuPanels;\n}\n\nexport const DEFAULT_MAIN_MENU_STATE = MainMenuPanels.HOME;\n","import { Component, Input, OnDestroy, OnInit } from '@angular/core';\nimport { debounceTime } from 'rxjs/operators';\nimport { FormControl } from '@angular/forms';\nimport { Subscription } from 'rxjs';\nimport { RTSeeMessengerSearch } from '@rtsee/messenger';\n\n@Component({\n selector: 'rtsee-search',\n templateUrl: './search.component.html',\n})\nexport class SearchComponent implements OnInit, OnDestroy {\n queryControl = new FormControl();\n queryCtrlSub?: Subscription;\n\n @Input() search!: RTSeeMessengerSearch;\n\n ngOnInit(): void {\n this.queryCtrlSub = this.queryControl.valueChanges\n .pipe(debounceTime(200))\n .subscribe((value) => this.search.onQueryChange(value));\n }\n\n ngOnDestroy() {\n if (this.queryCtrlSub) {\n this.queryCtrlSub.unsubscribe();\n }\n }\n}\n","<div class=\"rtsee-messenger-search\">\n <input type=\"text\"\n [formControl]=\"queryControl\"\n class=\"rtsee-messenger-search-input\"\n placeholder=\"Search...\"/>\n</div>\n\n<div class=\"rtsee-messenger-search-results\">\n <rtsee-preloader [diameter]=\"50\" *ngIf=\"search.searchInProgress\"></rtsee-preloader>\n <p>Chats</p>\n <div class=\"rtsee-messenger-search-results-chats\">\n <div *ngFor=\"let chat of search.results.chats\" class=\"rtsee-messenger-search-results-chat-wrapper\">\n <p>{{chat.name}}</p>\n </div>\n </div>\n <p>Messages</p>\n <div class=\"rtsee-messenger-search-results-messages\">\n <div *ngFor=\"let message of search.results.messages\" class=\"rtsee-messenger-search-results-message-wrapper\">\n <p>{{message.chatName || message.senderName }}</p>\n </div>\n </div>\n</div>\n","import { Component, Input } from '@angular/core';\nimport { RTSeeMessenger } from '@rtsee/messenger';\nimport { IMainMenuState, MainMenuPanels } from '../models/MainMenuState';\n\n@Component({\n selector: 'rtsee-manage-chat',\n templateUrl: './manage-chat.component.html',\n styleUrls: ['./manage-chat.component.scss'],\n})\nexport class ManageChatComponent {\n @Input() messenger!: RTSeeMessenger;\n @Input() menuState!: IMainMenuState;\n\n onInviteContactsClicked() {\n this.menuState.activePanel = MainMenuPanels.CONTACTS_SELECT;\n }\n}\n","<div class=\"rtsee-messenger-manage-chat\">\n <p>We are going to manage chat here</p>\n <button (click)=\"onInviteContactsClicked()\">Invite Contacts</button>\n</div>\n","import { Component, Input } from '@angular/core';\nimport { IMainMenuState } from '../models/MainMenuState';\nimport { RTSeeMessengerSearch } from '@rtsee/messenger';\n\n@Component({\n selector: 'rtsee-contacts-multiselect',\n templateUrl: './contacts-multiselect.component.html',\n styleUrls: ['./contacts-multiselect.component.scss'],\n})\nexport class ContactsMultiselectComponent {\n @Input() menuState!: IMainMenuState;\n @Input() search!: RTSeeMessengerSearch;\n}\n","<div class=\"rtsee-messenger-contacts-multiselect\">\n <rtsee-search [search]=\"search\"></rtsee-search>\n</div>\n","import { Component, Input } from '@angular/core';\nimport { RTSeeMessenger, RTSeeMessengerSearch } from '@rtsee/messenger';\nimport {\n DEFAULT_MAIN_MENU_STATE,\n IMainMenuState,\n MainMenuPanels,\n} from './components/models/MainMenuState';\n\n@Component({\n selector: 'rtsee-main-menu',\n templateUrl: './main-menu.component.html',\n})\nexport class MainMenuComponent {\n @Input() search!: RTSeeMessengerSearch;\n @Input() messenger!: RTSeeMessenger;\n\n readonly MainMenuPanels = MainMenuPanels;\n\n state: IMainMenuState = {\n activePanel: DEFAULT_MAIN_MENU_STATE,\n };\n\n onNewGroupClicked() {\n this.state.activePanel = MainMenuPanels.CONTACTS_SELECT;\n }\n\n onNewChannelClicked() {\n this.state.activePanel = MainMenuPanels.MANAGE_CHAT;\n }\n}\n","<div class=\"rtsee-messenger-main-menu\">\n <div class=\"rtsee-messenger-main-menu-home\" *ngIf=\"state.activePanel === MainMenuPanels.HOME\">\n <ul class=\"rtsee-messenger-controls\">\n <li>\n <button (click)=\"onNewGroupClicked()\">\n <span class=\"material-icons-outlined\">people</span>\n <span>New Group</span>\n </button>\n </li>\n <li>\n <button (click)=\"onNewChannelClicked()\">\n <span class=\"material-icons-outlined\">campaign</span>\n <span>New Channel</span>\n </button>\n </li>\n </ul>\n <rtsee-search [search]=\"search\" ></rtsee-search>\n </div>\n\n <rtsee-manage-chat *ngIf=\"state.activePanel === MainMenuPanels.MANAGE_CHAT\"\n [messenger]=\"messenger\"\n [menuState]=\"state\"\n ></rtsee-manage-chat>\n <rtsee-contacts-multiselect [search]=\"search\"\n [menuState]=\"state\"\n *ngIf=\"state.activePanel === MainMenuPanels.CONTACTS_SELECT\"\n ></rtsee-contacts-multiselect>\n</div>\n","import { Component, Input } from '@angular/core';\nimport { RTSeeMessenger } from '@rtsee/messenger';\n\n@Component({\n selector: 'rtsee-messenger',\n templateUrl: './messenger.component.html',\n})\nexport class MessengerComponent {\n isHeaderExpanded: boolean;\n\n @Input() messenger!: RTSeeMessenger;\n constructor() {\n this.isHeaderExpanded = false;\n }\n\n onScroll() {\n this.messenger.loadChats();\n }\n\n onHeaderExpandToggled(value: boolean) {\n this.isHeaderExpanded = value;\n }\n}\n","<div class=\"rtsee-messenger\" [ngClass]=\"{\n 'rtsee-messenger-main-menu-opened': messenger.mainMenuOpened,\n 'rtsee-messenger-header-expanded': isHeaderExpanded\n}\">\n <div class=\"rtsee-messenger-header-container\">\n <rtsee-messenger-header [messenger]=\"messenger\" (expandToggled)=\"onHeaderExpandToggled($event)\"></rtsee-messenger-header>\n </div>\n <div class=\"rtsee-messenger-body-container\"\n infiniteScroll\n [infiniteScrollDistance]=\"2\"\n [infiniteScrollThrottle]=\"50\"\n [scrollWindow]=\"false\"\n (scrolled)=\"onScroll()\"\n >\n <rtsee-chats-list *ngIf=\"!messenger.openedChat\" [chats]=\"messenger.chats\" [messenger]=\"messenger\"></rtsee-chats-list>\n <rtsee-chat *ngIf=\"messenger.openedChat\" [messenger]=\"messenger\" [chat]=\"messenger.openedChat\"></rtsee-chat>\n <rtsee-preloader [diameter]=\"50\" *ngIf=\"messenger.loadingChatsInProgress\" ></rtsee-preloader>\n </div>\n <div class=\"rtsee-messenger-main-menu-container\">\n <rtsee-main-menu\n *ngIf=\"messenger.mainMenuOpened\"\n [search]=\"messenger.search\"\n [messenger]=\"messenger\"></rtsee-main-menu>\n </div>\n <div class=\"rtsee-messenger-overlay\" (click)=\"messenger.openMainMenu(false)\"></div>\n</div>\n\n\n","import { Injectable } from '@angular/core';\nimport { IMessageWidget } from './message-widgets.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class EventsWidgetsService {\n widgetsMap: IMessageWidget[] = [];\n\n getWidgetComponentByName(name: string) {\n /* eslint-disable */\n const mapping = this.widgetsMap.find((e) => e.name === name);\n if (!mapping) {\n return null;\n }\n return mapping.component;\n /* eslint-enable */\n }\n}\n","import {\n AfterViewInit,\n Component,\n ComponentFactoryResolver,\n ComponentRef,\n Input,\n OnInit,\n ViewChild,\n} from '@angular/core';\nimport { RTSeeDashboardEvent } from '@rtsee/events-manager';\nimport { WidgetDirective } from '../../../../directives/widget.directive';\nimport { EventsWidgetsService } from '../../../../services/events-widgets.service';\nimport { TimeFormatHelperService } from '../../../../services/time-format-helper.service';\nimport * as dayjs from 'dayjs';\n\n@Component({\n selector: 'rtsee-event-thumbnail',\n templateUrl: './event-thumbnail.component.html',\n})\nexport class EventThumbnailComponent implements OnInit, AfterViewInit {\n tooltip?: string;\n\n @Input() event!: RTSeeDashboardEvent;\n @ViewChild(WidgetDirective, { static: false }) widgetHost!: WidgetDirective;\n constructor(\n private widgetsService: EventsWidgetsService,\n private componentFactoryResolver: ComponentFactoryResolver,\n public timeFormatService: TimeFormatHelperService\n ) {}\n\n ngOnInit(): void {\n if (this.event.data) {\n this.generateTooltip();\n }\n }\n\n generateTooltip() {\n /* eslint-disable */\n let tooltip = '';\n if (typeof this.event.data !== 'object') {\n return;\n }\n try {\n for (const key in this.event.data) {\n if (this.event.data.hasOwnProperty(key)) {\n if (tooltip) {\n tooltip += '&#013;';\n }\n tooltip += key + ' -> ' + this.event.data[key];\n }\n }\n this.tooltip = tooltip;\n } catch (e) {\n console.log('Failed to generate a tooltip');\n }\n /* eslint-enable */\n }\n\n ngAfterViewInit() {\n /* eslint-disable */\n if (this.event.widget) {\n const widget = this.widgetsService.getWidgetComponentByName(\n this.event.widget\n );\n if (!widget) {\n return;\n }\n const viewContainerRef = this.widgetHost.viewContainerRef;\n viewContainerRef.clear();\n const componentToShow =\n this.componentFactoryResolver.resolveComponentFactory(widget);\n const componentRef: ComponentRef<typeof widget> =\n viewContainerRef.createComponent(componentToShow);\n componentRef.instance.event = this.event;\n componentRef.instance.event = this.event;\n componentRef.changeDetectorRef.detectChanges();\n }\n /* eslint-enable */\n }\n}\n","<div class=\"rtsee-events-dashboard-event-thumbnail\">\n <ng-template *ngIf=\"event.widget\" widgetHost></ng-template>\n <div *ngIf=\"!event.widget\" class=\"rtsee-events-dashboard-default-event-thumbnail\"\n [ngClass]=\"{'rtsee-events-dashboard-default-event-thumbnail-with-data': event.data}\"\n >\n <div class=\"rtsee-events-dashboard-default-event-thumbnail-name\">{{event.name}}</div>\n <div class=\"rtsee-events-dashboard-default-event-thumbnail-info\">\n <div *ngIf=\"event.data\" class=\"rtsee-events-dashboard-default-event-thumbnail-details\"\n [title]=\"tooltip\"\n >\n <span class=\"rtsee-events-dashboard-default-event-thumbnail-details-icon material-icons-outlined\"\n >info</span>\n </div>\n <div class=\"rtsee-events-dashboard-default-event-thumbnail-time\">\n <span>{{ timeFormatService.toAgo(event.createdAt) }}</span>\n </div>\n </div>\n\n </div>\n</div>\n","import { Component, Input } from '@angular/core';\nimport { RTSeeDashboardClientSession } from '@rtsee/events-manager';\nimport { TimeFormatHelperService } from '../../../../services/time-format-helper.service';\n\n@Component({\n selector: 'rtsee-rtsee-events-dashboard-session',\n templateUrl: './rtsee-events-dashboard-session.component.html',\n})\nexport class RtseeEventsDashboardSessionComponent {\n @Input() session!: RTSeeDashboardClientSession;\n constructor(public timeFormatService: TimeFormatHelperService) {}\n}\n","<div class=\"rtsee-events-dashboard-session\">\n <div class=\"rtsee-events-dashboard-session-header\" *ngIf=\"session.info\">\n <p class=\"rtsee-events-dashboard-session-client-info\">{{session.info.clientThumbnail}}</p>\n <p class=\"rtsee-events-dashboard-session-os-info\">{{session.info.osThumbnail}}</p>\n <div class=\"rtsee-events-dashboard-session-device-info\" [title]=\"session.info.deviceThumbnail\">\n <span *ngIf=\"session.info.deviceType === 'smartphone' && !session.info.botName\"\n class=\"material-icons-outlined rtsee-events-dashboard-session-device-info-icon\"\n >phone_iphone</span>\n <span class=\"material-icons-outlined rtsee-events-dashboard-session-device-info-icon\"\n *ngIf=\"session.info.deviceType === 'tablet' && !session.info.botName\"\n >tablet_mac</span>\n <span class=\"material-icons-outlined rtsee-events-dashboard-session-device-info-icon\"\n *ngIf=\"session.info.deviceType === 'desktop' && !session.info.botName\"\n >computer</span>\n <span class=\"material-icons-outlined rtsee-events-dashboard-session-device-info-icon\"\n *ngIf=\"session.info.botName\"\n >smart_toy</span>\n </div>\n </div>\n <ul *ngIf=\"session.events && session.events.length\"\n class=\"rtsee-events-dashboard-session-events-list\"\n >\n <li *ngFor=\"let event of session.events | slice:0:5;\" class=\"rtsee-events-dashboard-session-event\">\n <rtsee-event-thumbnail [event]=\"event\"></rtsee-event-thumbnail>\n </li>\n </ul>\n <div class=\"rtsee-events-dashboard-session-footer\">\n <button *ngIf=\"session.events.length > 5\">{{session.events.length - 5}} more</button>\n </div>\n</div>\n","import { Component, Input, OnInit } from '@angular/core';\nimport {\n RTSeeDashboardClient,\n RTSeeEventsDashboard,\n} from '@rtsee/events-manager';\nimport { TimeFormatHelperService } from '../../../../services/time-format-helper.service';\nimport { DefaultImagesService } from '../../../../services/default-images.service';\n\n@Component({\n selector: 'ngx-rtsee-events-dashboard-client-thumbnail',\n templateUrl: './rtsee-events-dashboard-client-thumbnail.component.html',\n})\nexport class RtseeEventsDashboardClientThumbnailComponent implements OnInit {\n @Input() dashboard!: RTSeeEventsDashboard;\n @Input() client!: RTSeeDashboardClient;\n\n constructor(\n public timeFormatService: TimeFormatHelperService,\n public defaultImagesService: DefaultImagesService\n ) {}\n\n ngOnInit(): void {\n console.log('client id', this.client.id);\n }\n\n openChat() {\n this.dashboard.openChat(this.client);\n }\n}\n","<div class=\"rtsee-dashboard-client-thumbnail\">\n <div class=\"rtsee-dashboard-client-header\">\n <div class=\"rtsee-dashboard-client-header-photo\">\n <div class=\"rtsee-dashboard-client-header-image\"\n [style.background-image]=\"'url(' + client.imageUrl || defaultImagesService.PROFILE + ')'\"\n ></div>\n <div class=\"rtsee-dashboard-client-live-indicator\" *ngIf=\"client.isConnected\"></div>\n </div>\n <p class=\"rtsee-dashboard-client-name\">\n <span class=\"rtsee-dashboard-client-name-text\">{{ client.name || client.id }}</span>\n <button (click)=\"openChat()\" class=\"rtsee-dashboard-client-engage\">\n <span class=\"rtsee-dashboard-client-engage-icon material-icons-outlined\">chat_bubble</span>\n </button>\n </p>\n </div>\n <div class=\"rtsee-dashboard-sessions\">\n <div *ngFor=\"let session of client.sessions\"\n class=\"rtsee-dashboard-sessions-container\">\n <rtsee-rtsee-events-dashboard-session [session]=\"session\"></rtsee-rtsee-events-dashboard-session>\n </div>\n </div>\n</div>\n","import { Component, Input } from '@angular/core';\nimport { RTSeeEventsDashboard } from '@rtsee/events-manager';\n\n@Component({\n selector: 'ngx-rtsee-events-dashboard',\n templateUrl: './rtsee-events-dashboard.component.html',\n})\nexport class RtseeEventsDashboardComponent {\n @Input() eventsDashboard!: RTSeeEventsDashboard;\n}\n","<div class=\"rtsee-events-dashboard\">\n <div class=\"rtsee-events-dashboard-client-thumbnails\">\n <div class=\"rtsee-events-dashboard-client-thumbnail-wrapper\"\n *ngFor=\"let client of eventsDashboard.clients\">\n <ngx-rtsee-events-dashboard-client-thumbnail\n [client]=\"client\"\n [dashboard]=\"eventsDashboard\"\n ></ngx-rtsee-events-dashboard-client-thumbnail>\n </div>\n </div>\n</div>\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'ngx-rtsee-peers-list',\n templateUrl: './rtsee-peers-list.component.html',\n styleUrls: ['./rtsee-peers-list.component.scss'],\n})\nexport class RtseePeersListComponent {}\n","<p>rtsee-peers-list works!</p>\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'ngx-rtsee-events-dashboard-client',\n templateUrl: './rtsee-events-dashboard-client.component.html',\n})\nexport class RtseeEventsDashboardClientComponent {}\n","<p>rtsee-events-dashboard-client works!</p>\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'rtsee-rtsee-container',\n templateUrl: './rtsee-container.component.html',\n})\nexport class RtseeContainerComponent {}\n","<p>rtsee-container works!</p>\n","import { NgModule } from '@angular/core';\nimport { RTSeeComponent } from './components/rtsee/rtsee.component';\nimport { RTSeeControlsComponent } from './components/rtsee/rtsee-controls/rtsee-controls.component';\nimport { CommonModule } from '@angular/common';\nimport { RtseePeerComponent } from './components/rtsee-peer/rtsee-peer.component';\nimport { RtseeSoundbarComponent } from './components/rtsee-soundbar/rtsee-soundbar.component';\nimport { RtseePeersListComponent } from './components/rtsee-peers-list/rtsee-peers-list.component';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { RtseeSettingsComponent } from './components/rtsee-settings/rtsee-settings.component';\nimport { MatSelectModule } from '@angular/material/select';\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MessengerComponent } from './components/rtsee-messenger/messenger/messenger.component';\nimport { ChatComponent } from './components/rtsee-messenger/chat/chat.component';\nimport { MessageComponent } from './components/rtsee-messenger/message/message.component';\nimport { ChatsListComponent } from './components/rtsee-messenger/chats-list/chats-list.component';\nimport { MessagesListComponent } from './components/rtsee-messenger/messages-list/messages-list.component';\nimport { ChatThumbnailComponent } from './components/rtsee-messenger/chat-thumbnail/chat-thumbnail.component';\nimport { ChatInputComponent } from './components/rtsee-messenger/chat-input/chat-input.component';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { MessengerHeaderComponent } from './components/rtsee-messenger/messenger-header/messenger-header.component';\nimport { RtseeEventsDashboardComponent } from './components/rtsee-events-dashboard/rtsee-events-dashboard.component';\nimport { RtseeEventsDashboardClientComponent } from './components/rtsee-events-dashboard/components/rtsee-events-dashboard-client/rtsee-events-dashboard-client.component';\nimport { RtseeEventsDashboardClientThumbnailComponent } from './components/rtsee-events-dashboard/components/rtsee-events-dashboard-client-thumbnail/rtsee-events-dashboard-client-thumbnail.component';\nimport { WidgetDirective } from './directives/widget.directive';\nimport { CallWidgetComponent } from './components/rtsee-messenger/message-widgets/call-widget/call-widget.component';\nimport { AutosizeModule } from 'ngx-autosize';\nimport { InfiniteScrollModule } from 'ngx-infinite-scroll';\nimport { MainMenuComponent } from './components/rtsee-messenger/main-menu/main-menu.component';\nimport { MessageTimeAndStatusComponent } from './components/rtsee-messenger/message/components/message-time-and-status/message-time-and-status.component';\nimport { PreloaderComponent } from './common/components/preloader/preloader.component';\nimport { SearchComponent } from './components/rtsee-messenger/main-menu/components/search/search.component';\nimport { ManageChatComponent } from './components/rtsee-messenger/main-menu/components/manage-chat/manage-chat.component';\nimport { ContactsMultiselectComponent } from './components/rtsee-messenger/main-menu/components/contacts-multiselect/contacts-multiselect.component';\nimport { ShaveDirective } from './directives/shave.directive';\nimport { ProfileComponent } from './components/rtsee-messenger/profile/profile.component';\nimport { EventThumbnailComponent } from './components/rtsee-events-dashboard/components/event-thumbnail/event-thumbnail.component';\nimport { RtseeEventsDashboardSessionComponent } from './components/rtsee-events-dashboard/components/rtsee-events-dashboard-session/rtsee-events-dashboard-session.component';\nimport { RtseeContainerComponent } from './components/rtsee-container/rtsee-container.component';\n\n@NgModule({\n declarations: [\n RTSeeComponent,\n RTSeeControlsComponent,\n RtseePeerComponent,\n RtseeSoundbarComponent,\n RtseePeersListComponent,\n RtseeSettingsComponent,\n MessengerComponent,\n ChatComponent,\n MessageComponent,\n ChatsListComponent,\n MessagesListComponent,\n ChatThumbnailComponent,\n ChatInputComponent,\n MessengerHeaderComponent,\n RtseeEventsDashboardComponent,\n RtseeEventsDashboardClientComponent,\n RtseeEventsDashboardClientThumbnailComponent,\n WidgetDirective,\n CallWidgetComponent,\n MainMenuComponent,\n MessageTimeAndStatusComponent,\n PreloaderComponent,\n SearchComponent,\n ManageChatComponent,\n ContactsMultiselectComponent,\n ShaveDirective,\n ProfileComponent,\n EventThumbnailComponent,\n RtseeEventsDashboardSessionComponent,\n RtseeContainerComponent,\n ],\n imports: [\n CommonModule,\n MatIconModule,\n MatButtonModule,\n MatSelectModule,\n BrowserAnimationsModule,\n MatFormFieldModule,\n ReactiveFormsModule,\n AutosizeModule,\n InfiniteScrollModule,\n ],\n exports: [RTSeeComponent, MessengerComponent, RtseeEventsDashboardComponent],\n})\nexport class RTSeeModule {}\n","/*\n * Public API Surface of ngx\n */\n\nexport * from './lib/ngx.service';\nexport * from './lib/components/rtsee/rtsee-controls/rtsee-controls.component';\nexport * from './lib/components/rtsee/rtsee.component';\nexport * from './lib/components/rtsee-messenger/messenger/messenger.component';\nexport * from './lib/components/rtsee-events-dashboard/rtsee-events-dashboard.component';\nexport * from './lib/ngx.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["Injectable","Component","Input","interval","ViewChild","EventEmitter","Output","dayjs","relativeTime","shave","Directive","RTSeeChatTypes","RTSeeChatEvents","FormGroup","FormControl","Validators","debounceTime","CommonModule","MatIconModule","MatButtonModule","MatSelectModule","BrowserAnimationsModule","MatFormFieldModule","ReactiveFormsModule","AutosizeModule","InfiniteScrollModule","NgModule"],"mappings":"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"}
@@ -24,4 +24,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.1.2", ngImpor
24
24
  }], fullScreenMode: [{
25
25
  type: Input
26
26
  }] } });
27
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnRzZWUtY29udHJvbHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4L3NyYy9saWIvY29tcG9uZW50cy9ydHNlZS9ydHNlZS1jb250cm9scy9ydHNlZS1jb250cm9scy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gvc3JjL2xpYi9jb21wb25lbnRzL3J0c2VlL3J0c2VlLWNvbnRyb2xzL3J0c2VlLWNvbnRyb2xzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7OztBQVFqRCxNQUFNLE9BQU8sc0JBQXNCO0lBSWpDLGdCQUFnQjtRQUNkLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXO1lBQzNCLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGVBQWUsRUFBRTtZQUM5QixDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0lBQ3BDLENBQUM7O21IQVJVLHNCQUFzQjt1R0FBdEIsc0JBQXNCLHdIQ1JuQywwb0VBMERBOzJGRGxEYSxzQkFBc0I7a0JBTGxDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLG9CQUFvQjtvQkFDOUIsV0FBVyxFQUFFLGlDQUFpQztvQkFDOUMsU0FBUyxFQUFFLENBQUMsaUNBQWlDLENBQUM7aUJBQy9DOzhCQUVVLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUlRTZWVWaWRlb0NoYXQgfSBmcm9tICdAcnRzZWUvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ25neC1ydHNlZS1jb250cm9scycsXG4gIHRlbXBsYXRlVXJsOiAnLi9ydHNlZS1jb250cm9scy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3J0c2VlLWNvbnRyb2xzLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFJUU2VlQ29udHJvbHNDb21wb25lbnQge1xuICBASW5wdXQoKSBydHNlZSE6IFJUU2VlVmlkZW9DaGF0O1xuICBASW5wdXQoKSBmdWxsU2NyZWVuTW9kZT86IGJvb2xlYW47XG5cbiAgb25QcmVzZW50Q2xpY2tlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5ydHNlZS5pc1ByZXNlbnRlclxuICAgICAgPyB0aGlzLnJ0c2VlLnN0b3BTY3JlZW5TaGFyZSgpXG4gICAgICA6IHRoaXMucnRzZWUuc3RhcnRTY3JlZW5TaGFyZSgpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwicnRzZWUtY29udHJvbHNcIiBbbmdDbGFzc109XCJ7J3J0c2VlLWZ1bGwtc2NyZWVuLWNvbnRyb2xzJyA6IGZ1bGxTY3JlZW5Nb2RlIH1cIj5cbiAgPGRpdiBjbGFzcz1cInJ0c2VlLWJvdHRvbS1wYW5lbFwiPlxuICAgIDxkaXYgY2xhc3M9XCJtaWMgcnRzZWUtYnV0dG9ucy1jb250YWluZXJcIj5cbiAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIG1hdFN1ZmZpeFxuICAgICAgICAgICAgICBjbGFzcz1cInJ0c2VlLXJpcHBsZS1idXR0b25cIlxuICAgICAgICAgICAgICAqbmdJZj1cInJ0c2VlLm1pY3JvcGhvbmVcIlxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInRoaXMucnRzZWUuZGlzYWJsZU1pY3JvcGhvbmUoKVwiXG4gICAgICA+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnMtb3V0bGluZWRcIj5taWNfbm9uZTwvc3Bhbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gbWF0U3VmZml4XG4gICAgICAgICAgICAgIGNsYXNzPVwicnRzZWUtcmlwcGxlLWJ1dHRvblwiXG4gICAgICAgICAgICAgICpuZ0lmPVwiIXJ0c2VlLm1pY3JvcGhvbmVcIlxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInRoaXMucnRzZWUuZW5hYmxlTWljcm9waG9uZSgpXCJcbiAgICAgID5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1pY29ucy1vdXRsaW5lZFwiPm1pY19vZmY8L3NwYW4+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJ2aWRlby1jYW1lcmEgcnRzZWUtYnV0dG9ucy1jb250YWluZXJcIj5cbiAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIG1hdFN1ZmZpeFxuICAgICAgICAgICAgICBjbGFzcz1cInJ0c2VlLXJpcHBsZS1idXR0b25cIlxuICAgICAgICAgICAgICAqbmdJZj1cInJ0c2VlLmNhbWVyYVwiXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAoY2xpY2spPVwicnRzZWUuZGlzYWJsZUNhbWVyYSgpXCJcbiAgICAgID5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1pY29ucy1vdXRsaW5lZFwiPnZpZGVvY2FtPC9zcGFuPlxuICAgICAgPC9idXR0b24+XG4gICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiBtYXRTdWZmaXhcbiAgICAgICAgICAgICAgY2xhc3M9XCJydHNlZS1yaXBwbGUtYnV0dG9uXCJcbiAgICAgICAgICAgICAgKm5nSWY9XCIhcnRzZWUuY2FtZXJhXCJcbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJydHNlZS5lbmFibGVDYW1lcmEoKVwiXG4gICAgICA+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnMtb3V0bGluZWRcIj52aWRlb2NhbV9vZmY8L3NwYW4+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwicHJlc2VudCBydHNlZS1idXR0b25zLWNvbnRhaW5lclwiIFtuZ0NsYXNzXT1cInsncnRzZWUtcHJlc2VudC1idXR0b24tY29udGFpbmVyJzogcnRzZWUuaXNQcmVzZW50ZXJ9XCI+XG4gICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiBtYXRTdWZmaXhcbiAgICAgICAgICAgICAgY2xhc3M9XCJydHNlZS1yaXBwbGUtYnV0dG9uXCJcbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJvblByZXNlbnRDbGlja2VkKClcIlxuICAgICAgPlxuICAgICAgICA8c3BhbiBjbGFzcz1cIm1hdGVyaWFsLWljb25zLW91dGxpbmVkXCI+cHJlc2VudF90b19hbGw8L3NwYW4+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiY2FsbC1lbmQgcnRzZWUtYnV0dG9ucy1jb250YWluZXJcIj5cbiAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIG1hdFN1ZmZpeFxuICAgICAgICAgICAgICBjbGFzcz1cInJ0c2VlLXJpcHBsZS1idXR0b25cIlxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInJ0c2VlLmVuZCgpXCJcbiAgICAgID5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1pY29ucy1vdXRsaW5lZFwiPmNhbGxfZW5kPC9zcGFuPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnRzZWUtY29udHJvbHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4L3NyYy9saWIvY29tcG9uZW50cy9ydHNlZS9ydHNlZS1jb250cm9scy9ydHNlZS1jb250cm9scy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gvc3JjL2xpYi9jb21wb25lbnRzL3J0c2VlL3J0c2VlLWNvbnRyb2xzL3J0c2VlLWNvbnRyb2xzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7OztBQVFqRCxNQUFNLE9BQU8sc0JBQXNCO0lBSWpDLGdCQUFnQjtRQUNkLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXO1lBQzNCLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGVBQWUsRUFBRTtZQUM5QixDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0lBQ3BDLENBQUM7O21IQVJVLHNCQUFzQjt1R0FBdEIsc0JBQXNCLHdIQ1JuQywwb0VBMERBOzJGRGxEYSxzQkFBc0I7a0JBTGxDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLG9CQUFvQjtvQkFDOUIsV0FBVyxFQUFFLGlDQUFpQztvQkFDOUMsU0FBUyxFQUFFLENBQUMsaUNBQWlDLENBQUM7aUJBQy9DOzhCQUVVLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUlRTZWVDb25mZXJlbmNlIH0gZnJvbSAnQHJ0c2VlL2NvbmZlcmVuY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICduZ3gtcnRzZWUtY29udHJvbHMnLFxuICB0ZW1wbGF0ZVVybDogJy4vcnRzZWUtY29udHJvbHMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9ydHNlZS1jb250cm9scy5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBSVFNlZUNvbnRyb2xzQ29tcG9uZW50IHtcbiAgQElucHV0KCkgcnRzZWUhOiBSVFNlZUNvbmZlcmVuY2U7XG4gIEBJbnB1dCgpIGZ1bGxTY3JlZW5Nb2RlPzogYm9vbGVhbjtcblxuICBvblByZXNlbnRDbGlja2VkKCkge1xuICAgIHJldHVybiB0aGlzLnJ0c2VlLmlzUHJlc2VudGVyXG4gICAgICA/IHRoaXMucnRzZWUuc3RvcFNjcmVlblNoYXJlKClcbiAgICAgIDogdGhpcy5ydHNlZS5zdGFydFNjcmVlblNoYXJlKCk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJydHNlZS1jb250cm9sc1wiIFtuZ0NsYXNzXT1cInsncnRzZWUtZnVsbC1zY3JlZW4tY29udHJvbHMnIDogZnVsbFNjcmVlbk1vZGUgfVwiPlxuICA8ZGl2IGNsYXNzPVwicnRzZWUtYm90dG9tLXBhbmVsXCI+XG4gICAgPGRpdiBjbGFzcz1cIm1pYyBydHNlZS1idXR0b25zLWNvbnRhaW5lclwiPlxuICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gbWF0U3VmZml4XG4gICAgICAgICAgICAgIGNsYXNzPVwicnRzZWUtcmlwcGxlLWJ1dHRvblwiXG4gICAgICAgICAgICAgICpuZ0lmPVwicnRzZWUubWljcm9waG9uZVwiXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAoY2xpY2spPVwidGhpcy5ydHNlZS5kaXNhYmxlTWljcm9waG9uZSgpXCJcbiAgICAgID5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1pY29ucy1vdXRsaW5lZFwiPm1pY19ub25lPC9zcGFuPlxuICAgICAgPC9idXR0b24+XG4gICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiBtYXRTdWZmaXhcbiAgICAgICAgICAgICAgY2xhc3M9XCJydHNlZS1yaXBwbGUtYnV0dG9uXCJcbiAgICAgICAgICAgICAgKm5nSWY9XCIhcnRzZWUubWljcm9waG9uZVwiXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwidGhpcy5ydHNlZS5lbmFibGVNaWNyb3Bob25lKClcIlxuICAgICAgPlxuICAgICAgICA8c3BhbiBjbGFzcz1cIm1hdGVyaWFsLWljb25zLW91dGxpbmVkXCI+bWljX29mZjwvc3Bhbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cInZpZGVvLWNhbWVyYSBydHNlZS1idXR0b25zLWNvbnRhaW5lclwiPlxuICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gbWF0U3VmZml4XG4gICAgICAgICAgICAgIGNsYXNzPVwicnRzZWUtcmlwcGxlLWJ1dHRvblwiXG4gICAgICAgICAgICAgICpuZ0lmPVwicnRzZWUuY2FtZXJhXCJcbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJydHNlZS5kaXNhYmxlQ2FtZXJhKClcIlxuICAgICAgPlxuICAgICAgICA8c3BhbiBjbGFzcz1cIm1hdGVyaWFsLWljb25zLW91dGxpbmVkXCI+dmlkZW9jYW08L3NwYW4+XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIG1hdFN1ZmZpeFxuICAgICAgICAgICAgICBjbGFzcz1cInJ0c2VlLXJpcHBsZS1idXR0b25cIlxuICAgICAgICAgICAgICAqbmdJZj1cIiFydHNlZS5jYW1lcmFcIlxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInJ0c2VlLmVuYWJsZUNhbWVyYSgpXCJcbiAgICAgID5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1pY29ucy1vdXRsaW5lZFwiPnZpZGVvY2FtX29mZjwvc3Bhbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJwcmVzZW50IHJ0c2VlLWJ1dHRvbnMtY29udGFpbmVyXCIgW25nQ2xhc3NdPVwieydydHNlZS1wcmVzZW50LWJ1dHRvbi1jb250YWluZXInOiBydHNlZS5pc1ByZXNlbnRlcn1cIj5cbiAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIG1hdFN1ZmZpeFxuICAgICAgICAgICAgICBjbGFzcz1cInJ0c2VlLXJpcHBsZS1idXR0b25cIlxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uUHJlc2VudENsaWNrZWQoKVwiXG4gICAgICA+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnMtb3V0bGluZWRcIj5wcmVzZW50X3RvX2FsbDwvc3Bhbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJjYWxsLWVuZCBydHNlZS1idXR0b25zLWNvbnRhaW5lclwiPlxuICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gbWF0U3VmZml4XG4gICAgICAgICAgICAgIGNsYXNzPVwicnRzZWUtcmlwcGxlLWJ1dHRvblwiXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAoY2xpY2spPVwicnRzZWUuZW5kKClcIlxuICAgICAgPlxuICAgICAgICA8c3BhbiBjbGFzcz1cIm1hdGVyaWFsLWljb25zLW91dGxpbmVkXCI+Y2FsbF9lbmQ8L3NwYW4+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -30,4 +30,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.1.2", ngImpor
30
30
  }], ctorParameters: function () { return []; }, propDecorators: { rtSee: [{
31
31
  type: Input
32
32
  }] } });
33
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnRzZWUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4L3NyYy9saWIvY29tcG9uZW50cy9ydHNlZS9ydHNlZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gvc3JjL2xpYi9jb21wb25lbnRzL3J0c2VlL3J0c2VlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7Ozs7OztBQVFqRCxNQUFNLE9BQU8sY0FBYztJQUt6QjtRQUNFLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxLQUFLLENBQUM7UUFDakMsSUFBSSxDQUFDLHFCQUFxQixHQUFHLEtBQUssQ0FBQztJQUNyQyxDQUFDO0lBRUQsY0FBYztRQUNaLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQztJQUN2RCxDQUFDO0lBRUQsb0JBQW9CO1FBQ2xCLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQztJQUMzRCxDQUFDOzsyR0FoQlUsY0FBYzsrRkFBZCxjQUFjLDZFQ1IzQixzNUZBc0VBOzJGRDlEYSxjQUFjO2tCQUwxQixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxXQUFXO29CQUNyQixXQUFXLEVBQUUsd0JBQXdCO29CQUNyQyxTQUFTLEVBQUUsQ0FBQyx3QkFBd0IsQ0FBQztpQkFDdEM7MEVBS1UsS0FBSztzQkFBYixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUlRTZWVWaWRlb0NoYXQgfSBmcm9tICdAcnRzZWUvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ25neC1ydHNlZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9ydHNlZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3J0c2VlLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFJUU2VlQ29tcG9uZW50IHtcbiAgc2V0dGluZ3NWaWV3RW5hYmxlZDogYm9vbGVhbjtcbiAgZnVsbFNjcmVlbk1vZGVFbmFibGVkOiBib29sZWFuO1xuXG4gIEBJbnB1dCgpIHJ0U2VlITogUlRTZWVWaWRlb0NoYXQ7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuc2V0dGluZ3NWaWV3RW5hYmxlZCA9IGZhbHNlO1xuICAgIHRoaXMuZnVsbFNjcmVlbk1vZGVFbmFibGVkID0gZmFsc2U7XG4gIH1cblxuICB0b2dnbGVTZXR0aW5ncygpIHtcbiAgICB0aGlzLnNldHRpbmdzVmlld0VuYWJsZWQgPSAhdGhpcy5zZXR0aW5nc1ZpZXdFbmFibGVkO1xuICB9XG5cbiAgdG9nZ2xlRnVsbFNjcmVlbk1vZGUoKSB7XG4gICAgdGhpcy5mdWxsU2NyZWVuTW9kZUVuYWJsZWQgPSAhdGhpcy5mdWxsU2NyZWVuTW9kZUVuYWJsZWQ7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJydHNlZS1zaGVsbFwiIFtuZ0NsYXNzXT1cIntcbidydHNlZS1zaGVsbC1leHBhbmRlZCc6IHJ0U2VlLnVpQ29udHJvbHMuaXNFeHBhbmRlZCB8fCBmdWxsU2NyZWVuTW9kZUVuYWJsZWQsXG4ncnRzZWUtc2hlbGwtbm8tY29tcGFuaW9ucyc6ICFydFNlZS5ydGNQZWVyQ29ubmVjdGlvbnMuY29ubmVjdGlvbnM/Lmxlbmd0aFxufVwiPlxuICA8ZGl2IGNsYXNzPVwicnRzZWUtbG9jYWwtcGVlclwiICpuZ0lmPVwicnRTZWUubG9jYWxTdHJlYW0gJiYgcnRTZWUuY2FtZXJhXCI+XG4gICAgPHZpZGVvIGNsYXNzPVwicnRzZWUtbG9jYWwtdmlkZW9cIlxuICAgICAgICAgICBbYXV0b3BsYXldPVwidHJ1ZVwiXG4gICAgICAgICAgIFttdXRlZF09XCJ0cnVlXCJcbiAgICAgICAgICAgW3NyY09iamVjdF09XCJydFNlZS5sb2NhbFN0cmVhbVwiXG4gICAgICAgICAgIHBsYXlzaW5saW5lPVwidHJ1ZVwiXG4gICAgPjwvdmlkZW8+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwicnRzZWUtd2luZG93LWNvbnRyb2xzXCI+XG4gICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gbWF0U3VmZml4XG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIChjbGljayk9XCJ0aGlzLnRvZ2dsZVNldHRpbmdzKClcIlxuICAgICAgICAgICAgY2xhc3M9XCJydHNlZS13aW5kb3ctY29udHJvbHMtYnV0dG9uIHJ0c2VlLXJpcHBsZS1idXR0b25cIlxuICAgID5cbiAgICAgIDxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnMtb3V0bGluZWRcIj5zZXR0aW5nczwvc3Bhbj5cbiAgICA8L2J1dHRvbj5cbiAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiBtYXRTdWZmaXhcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgKGNsaWNrKT1cInRoaXMudG9nZ2xlRnVsbFNjcmVlbk1vZGUoKVwiXG4gICAgICAgICAgICBjbGFzcz1cInJ0c2VlLXdpbmRvdy1jb250cm9scy1idXR0b24gcnRzZWUtcmlwcGxlLWJ1dHRvblwiXG4gICAgPlxuICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1pY29ucy1vdXRsaW5lZFwiPm9wZW5faW5fZnVsbDwvc3Bhbj5cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJydHNlZS1zZXR0aW5ncy1jb250YWluZXJcIiAqbmdJZj1cInNldHRpbmdzVmlld0VuYWJsZWRcIj5cbiAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiBtYXRTdWZmaXhcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgKGNsaWNrKT1cInRoaXMudG9nZ2xlU2V0dGluZ3MoKVwiXG4gICAgICAgICAgICBjbGFzcz1cInJ0c2VlLWNsb3NlLXNldHRpbmdzLWJ1dHRvblwiXG4gICAgPlxuICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1pY29ucy1vdXRsaW5lZFwiPmNsb3NlPC9zcGFuPlxuICAgIDwvYnV0dG9uPlxuICAgIDxuZ3gtcnRzZWUtc2V0dGluZ3MgW3J0U2VlXT1cInJ0U2VlXCIgW2Z1bGxTY3JlZW5Nb2RlXT1cImZ1bGxTY3JlZW5Nb2RlRW5hYmxlZFwiPjwvbmd4LXJ0c2VlLXNldHRpbmdzPlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cInJ0c2VlLXNjcmVlbi1zaGFyZVwiICpuZ0lmPVwicnRTZWUuc2NyZWVuU2hhcmVQZWVyXCIgPlxuICAgIDx2aWRlbyBbYXV0b3BsYXldPVwidHJ1ZVwiXG4gICAgICAgICAgIFttdXRlZF09XCJ0cnVlXCJcbiAgICAgICAgICAgW3NyY09iamVjdF09XCJydFNlZS5zY3JlZW5TaGFyZVBlZXIucmVtb3RlVmlkZW9TdHJlYW1cIlxuICAgICAgICAgICBwbGF5c2lubGluZT1cInRydWVcIlxuICAgICAgICAgICBjbGFzcz1cInJ0c2VlLXNjcmVlbi1zaGFyZS12aWRlb1wiXG4gICAgPjwvdmlkZW8+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwicnRzZWUtcGVlcnNcIiBbbmdDbGFzc109XCJ7XG4gICAgJ3J0c2VlLXBlZXJzLWFsb25lJzogIXJ0U2VlLnJ0Y1BlZXJDb25uZWN0aW9ucy5jb25uZWN0aW9ucz8ubGVuZ3RoLFxuICAgICdydHNlZS1wZWVycy1vbmUnOiBydFNlZS5ydGNQZWVyQ29ubmVjdGlvbnMuY29ubmVjdGlvbnM/Lmxlbmd0aCA9PT0gMSxcbiAgICAncnRzZWUtcGVlcnMtdGhyZWUtZ3JpZCc6IHJ0U2VlLnJ0Y1BlZXJDb25uZWN0aW9ucy5jb25uZWN0aW9ucz8ubGVuZ3RoXG4gICAgICAmJiBydFNlZS5ydGNQZWVyQ29ubmVjdGlvbnMuY29ubmVjdGlvbnMubGVuZ3RoID4gMVxuICAgICAgJiYgcnRTZWUucnRjUGVlckNvbm5lY3Rpb25zLmNvbm5lY3Rpb25zLmxlbmd0aCA8IDQsXG4gICAgJ3J0c2VlLXBlZXJzLXNpeC1ncmlkJzogcnRTZWUucnRjUGVlckNvbm5lY3Rpb25zLmNvbm5lY3Rpb25zPy5sZW5ndGhcbiAgICAgICYmIHJ0U2VlLnJ0Y1BlZXJDb25uZWN0aW9ucy5jb25uZWN0aW9ucy5sZW5ndGggPiAzXG4gICAgICAmJiBydFNlZS5ydGNQZWVyQ29ubmVjdGlvbnMuY29ubmVjdGlvbnMubGVuZ3RoIDwgNyxcbiAgICAncnRzZWUtcGVlcnMtbmluZS1ncmlkJzogcnRTZWUucnRjUGVlckNvbm5lY3Rpb25zLmNvbm5lY3Rpb25zPy5sZW5ndGhcbiAgICAgICYmIHJ0U2VlLnJ0Y1BlZXJDb25uZWN0aW9ucy5jb25uZWN0aW9ucy5sZW5ndGggPj0gN1xuICB9XCI+XG4gICAgPGRpdiBjbGFzcz1cInJ0c2VlLXBlZXItd3JhcHBlclwiXG4gICAgICAgICAqbmdGb3I9XCJsZXQgcGVlciBvZiBydFNlZS5ydGNQZWVyQ29ubmVjdGlvbnMuY29ubmVjdGlvbnNcIlxuICAgID5cbiAgICAgIDxuZ3gtcnRzZWUtcGVlciBbcGVlcl09XCJwZWVyXCI+PC9uZ3gtcnRzZWUtcGVlcj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJydHNlZS1wZWVycy1saXN0XCI+PC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJydHNlZS1jb250cm9scy13cmFwcGVyXCI+XG4gICAgPG5neC1ydHNlZS1jb250cm9scyBbcnRzZWVdPVwicnRTZWVcIiBbZnVsbFNjcmVlbk1vZGVdPVwiZnVsbFNjcmVlbk1vZGVFbmFibGVkXCI+PC9uZ3gtcnRzZWUtY29udHJvbHM+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbiJdfQ==
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnRzZWUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4L3NyYy9saWIvY29tcG9uZW50cy9ydHNlZS9ydHNlZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gvc3JjL2xpYi9jb21wb25lbnRzL3J0c2VlL3J0c2VlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7Ozs7OztBQVFqRCxNQUFNLE9BQU8sY0FBYztJQUt6QjtRQUNFLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxLQUFLLENBQUM7UUFDakMsSUFBSSxDQUFDLHFCQUFxQixHQUFHLEtBQUssQ0FBQztJQUNyQyxDQUFDO0lBRUQsY0FBYztRQUNaLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQztJQUN2RCxDQUFDO0lBRUQsb0JBQW9CO1FBQ2xCLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQztJQUMzRCxDQUFDOzsyR0FoQlUsY0FBYzsrRkFBZCxjQUFjLDZFQ1IzQixzNUZBc0VBOzJGRDlEYSxjQUFjO2tCQUwxQixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxXQUFXO29CQUNyQixXQUFXLEVBQUUsd0JBQXdCO29CQUNyQyxTQUFTLEVBQUUsQ0FBQyx3QkFBd0IsQ0FBQztpQkFDdEM7MEVBS1UsS0FBSztzQkFBYixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUlRTZWVDb25mZXJlbmNlIH0gZnJvbSAnQHJ0c2VlL2NvbmZlcmVuY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICduZ3gtcnRzZWUnLFxuICB0ZW1wbGF0ZVVybDogJy4vcnRzZWUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9ydHNlZS5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBSVFNlZUNvbXBvbmVudCB7XG4gIHNldHRpbmdzVmlld0VuYWJsZWQ6IGJvb2xlYW47XG4gIGZ1bGxTY3JlZW5Nb2RlRW5hYmxlZDogYm9vbGVhbjtcblxuICBASW5wdXQoKSBydFNlZSE6IFJUU2VlQ29uZmVyZW5jZTtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5zZXR0aW5nc1ZpZXdFbmFibGVkID0gZmFsc2U7XG4gICAgdGhpcy5mdWxsU2NyZWVuTW9kZUVuYWJsZWQgPSBmYWxzZTtcbiAgfVxuXG4gIHRvZ2dsZVNldHRpbmdzKCkge1xuICAgIHRoaXMuc2V0dGluZ3NWaWV3RW5hYmxlZCA9ICF0aGlzLnNldHRpbmdzVmlld0VuYWJsZWQ7XG4gIH1cblxuICB0b2dnbGVGdWxsU2NyZWVuTW9kZSgpIHtcbiAgICB0aGlzLmZ1bGxTY3JlZW5Nb2RlRW5hYmxlZCA9ICF0aGlzLmZ1bGxTY3JlZW5Nb2RlRW5hYmxlZDtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInJ0c2VlLXNoZWxsXCIgW25nQ2xhc3NdPVwie1xuJ3J0c2VlLXNoZWxsLWV4cGFuZGVkJzogcnRTZWUudWlDb250cm9scy5pc0V4cGFuZGVkIHx8IGZ1bGxTY3JlZW5Nb2RlRW5hYmxlZCxcbidydHNlZS1zaGVsbC1uby1jb21wYW5pb25zJzogIXJ0U2VlLnJ0Y1BlZXJDb25uZWN0aW9ucy5jb25uZWN0aW9ucz8ubGVuZ3RoXG59XCI+XG4gIDxkaXYgY2xhc3M9XCJydHNlZS1sb2NhbC1wZWVyXCIgKm5nSWY9XCJydFNlZS5sb2NhbFN0cmVhbSAmJiBydFNlZS5jYW1lcmFcIj5cbiAgICA8dmlkZW8gY2xhc3M9XCJydHNlZS1sb2NhbC12aWRlb1wiXG4gICAgICAgICAgIFthdXRvcGxheV09XCJ0cnVlXCJcbiAgICAgICAgICAgW211dGVkXT1cInRydWVcIlxuICAgICAgICAgICBbc3JjT2JqZWN0XT1cInJ0U2VlLmxvY2FsU3RyZWFtXCJcbiAgICAgICAgICAgcGxheXNpbmxpbmU9XCJ0cnVlXCJcbiAgICA+PC92aWRlbz5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJydHNlZS13aW5kb3ctY29udHJvbHNcIj5cbiAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiBtYXRTdWZmaXhcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgKGNsaWNrKT1cInRoaXMudG9nZ2xlU2V0dGluZ3MoKVwiXG4gICAgICAgICAgICBjbGFzcz1cInJ0c2VlLXdpbmRvdy1jb250cm9scy1idXR0b24gcnRzZWUtcmlwcGxlLWJ1dHRvblwiXG4gICAgPlxuICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1pY29ucy1vdXRsaW5lZFwiPnNldHRpbmdzPC9zcGFuPlxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIG1hdFN1ZmZpeFxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAoY2xpY2spPVwidGhpcy50b2dnbGVGdWxsU2NyZWVuTW9kZSgpXCJcbiAgICAgICAgICAgIGNsYXNzPVwicnRzZWUtd2luZG93LWNvbnRyb2xzLWJ1dHRvbiBydHNlZS1yaXBwbGUtYnV0dG9uXCJcbiAgICA+XG4gICAgICA8c3BhbiBjbGFzcz1cIm1hdGVyaWFsLWljb25zLW91dGxpbmVkXCI+b3Blbl9pbl9mdWxsPC9zcGFuPlxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cInJ0c2VlLXNldHRpbmdzLWNvbnRhaW5lclwiICpuZ0lmPVwic2V0dGluZ3NWaWV3RW5hYmxlZFwiPlxuICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIG1hdFN1ZmZpeFxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAoY2xpY2spPVwidGhpcy50b2dnbGVTZXR0aW5ncygpXCJcbiAgICAgICAgICAgIGNsYXNzPVwicnRzZWUtY2xvc2Utc2V0dGluZ3MtYnV0dG9uXCJcbiAgICA+XG4gICAgICA8c3BhbiBjbGFzcz1cIm1hdGVyaWFsLWljb25zLW91dGxpbmVkXCI+Y2xvc2U8L3NwYW4+XG4gICAgPC9idXR0b24+XG4gICAgPG5neC1ydHNlZS1zZXR0aW5ncyBbcnRTZWVdPVwicnRTZWVcIiBbZnVsbFNjcmVlbk1vZGVdPVwiZnVsbFNjcmVlbk1vZGVFbmFibGVkXCI+PC9uZ3gtcnRzZWUtc2V0dGluZ3M+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwicnRzZWUtc2NyZWVuLXNoYXJlXCIgKm5nSWY9XCJydFNlZS5zY3JlZW5TaGFyZVBlZXJcIiA+XG4gICAgPHZpZGVvIFthdXRvcGxheV09XCJ0cnVlXCJcbiAgICAgICAgICAgW211dGVkXT1cInRydWVcIlxuICAgICAgICAgICBbc3JjT2JqZWN0XT1cInJ0U2VlLnNjcmVlblNoYXJlUGVlci5yZW1vdGVWaWRlb1N0cmVhbVwiXG4gICAgICAgICAgIHBsYXlzaW5saW5lPVwidHJ1ZVwiXG4gICAgICAgICAgIGNsYXNzPVwicnRzZWUtc2NyZWVuLXNoYXJlLXZpZGVvXCJcbiAgICA+PC92aWRlbz5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJydHNlZS1wZWVyc1wiIFtuZ0NsYXNzXT1cIntcbiAgICAncnRzZWUtcGVlcnMtYWxvbmUnOiAhcnRTZWUucnRjUGVlckNvbm5lY3Rpb25zLmNvbm5lY3Rpb25zPy5sZW5ndGgsXG4gICAgJ3J0c2VlLXBlZXJzLW9uZSc6IHJ0U2VlLnJ0Y1BlZXJDb25uZWN0aW9ucy5jb25uZWN0aW9ucz8ubGVuZ3RoID09PSAxLFxuICAgICdydHNlZS1wZWVycy10aHJlZS1ncmlkJzogcnRTZWUucnRjUGVlckNvbm5lY3Rpb25zLmNvbm5lY3Rpb25zPy5sZW5ndGhcbiAgICAgICYmIHJ0U2VlLnJ0Y1BlZXJDb25uZWN0aW9ucy5jb25uZWN0aW9ucy5sZW5ndGggPiAxXG4gICAgICAmJiBydFNlZS5ydGNQZWVyQ29ubmVjdGlvbnMuY29ubmVjdGlvbnMubGVuZ3RoIDwgNCxcbiAgICAncnRzZWUtcGVlcnMtc2l4LWdyaWQnOiBydFNlZS5ydGNQZWVyQ29ubmVjdGlvbnMuY29ubmVjdGlvbnM/Lmxlbmd0aFxuICAgICAgJiYgcnRTZWUucnRjUGVlckNvbm5lY3Rpb25zLmNvbm5lY3Rpb25zLmxlbmd0aCA+IDNcbiAgICAgICYmIHJ0U2VlLnJ0Y1BlZXJDb25uZWN0aW9ucy5jb25uZWN0aW9ucy5sZW5ndGggPCA3LFxuICAgICdydHNlZS1wZWVycy1uaW5lLWdyaWQnOiBydFNlZS5ydGNQZWVyQ29ubmVjdGlvbnMuY29ubmVjdGlvbnM/Lmxlbmd0aFxuICAgICAgJiYgcnRTZWUucnRjUGVlckNvbm5lY3Rpb25zLmNvbm5lY3Rpb25zLmxlbmd0aCA+PSA3XG4gIH1cIj5cbiAgICA8ZGl2IGNsYXNzPVwicnRzZWUtcGVlci13cmFwcGVyXCJcbiAgICAgICAgICpuZ0Zvcj1cImxldCBwZWVyIG9mIHJ0U2VlLnJ0Y1BlZXJDb25uZWN0aW9ucy5jb25uZWN0aW9uc1wiXG4gICAgPlxuICAgICAgPG5neC1ydHNlZS1wZWVyIFtwZWVyXT1cInBlZXJcIj48L25neC1ydHNlZS1wZWVyPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cInJ0c2VlLXBlZXJzLWxpc3RcIj48L2Rpdj5cbiAgPGRpdiBjbGFzcz1cInJ0c2VlLWNvbnRyb2xzLXdyYXBwZXJcIj5cbiAgICA8bmd4LXJ0c2VlLWNvbnRyb2xzIFtydHNlZV09XCJydFNlZVwiIFtmdWxsU2NyZWVuTW9kZV09XCJmdWxsU2NyZWVuTW9kZUVuYWJsZWRcIj48L25neC1ydHNlZS1jb250cm9scz5cbiAgPC9kaXY+XG48L2Rpdj5cblxuIl19
@@ -32,4 +32,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.1.2", ngImpor
32
32
  }], peer: [{
33
33
  type: Input
34
34
  }] } });
35
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnRzZWUtcGVlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gvc3JjL2xpYi9jb21wb25lbnRzL3J0c2VlLXBlZXIvcnRzZWUtcGVlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gvc3JjL2xpYi9jb21wb25lbnRzL3J0c2VlLXBlZXIvcnRzZWUtcGVlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUVULEtBQUssRUFDTCxTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7Ozs7QUFRdkIsTUFBTSxPQUFPLGtCQUFrQjtJQVE3QjtRQUNFLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDO1FBQzNCLElBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDO0lBQ3RCLENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDckIsT0FBTztTQUNSO1FBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FDN0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFpQyxDQUNuRCxDQUFDO0lBQ0osQ0FBQzs7K0dBcEJVLGtCQUFrQjttR0FBbEIsa0JBQWtCLHlSQ2QvQiw0aENBNEJBOzJGRGRhLGtCQUFrQjtrQkFMOUIsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsZ0JBQWdCO29CQUMxQixXQUFXLEVBQUUsNkJBQTZCO29CQUMxQyxTQUFTLEVBQUUsQ0FBQyw2QkFBNkIsQ0FBQztpQkFDM0M7MEVBSzJCLFdBQVc7c0JBQXBDLFNBQVM7dUJBQUMsYUFBYTtnQkFDRSxXQUFXO3NCQUFwQyxTQUFTO3VCQUFDLGFBQWE7Z0JBQ2YsSUFBSTtzQkFBWixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBJbnB1dCxcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJUU2VlUGVlckNvbm5lY3Rpb24gfSBmcm9tICdAcnRzZWUvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ25neC1ydHNlZS1wZWVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3J0c2VlLXBlZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9ydHNlZS1wZWVyLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFJ0c2VlUGVlckNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xuICBpbnRlcnZhbExlbmd0aDogbnVtYmVyO1xuICBub2ljZUxldmVsOiBudW1iZXI7XG5cbiAgQFZpZXdDaGlsZCgnYXVkaW9PdXRwdXQnKSBhdWRpb091dHB1dD86IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoJ3ZpZGVvT3V0cHV0JykgdmlkZW9PdXRwdXQ/OiBFbGVtZW50UmVmO1xuICBASW5wdXQoKSBwZWVyITogUlRTZWVQZWVyQ29ubmVjdGlvbjtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLmludGVydmFsTGVuZ3RoID0gMTAwMDtcbiAgICB0aGlzLm5vaWNlTGV2ZWwgPSAwO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5hdWRpb091dHB1dCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnBlZXIuc2V0QXVkaW9PdXRwdXRFbGVtZW50KFxuICAgICAgdGhpcy5hdWRpb091dHB1dC5uYXRpdmVFbGVtZW50IGFzIEhUTUxBdWRpb0VsZW1lbnRcbiAgICApO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwicnRzZWUtcGVlclwiIFtuZ0NsYXNzXT1cIntcbidydHNlZS1wZWVyLXZpZGVvLWRpc2FibGVkJzogIXBlZXIucmVtb3RlVmlkZW9TdHJlYW0gfHwgIXBlZXIuY2FtZXJhXG59XCI+XG4gIDxkaXYgY2xhc3M9XCJydHNlZS1wZWVyLWNvbnRlbnRcIj5cbiAgICA8ZGl2IGNsYXNzPVwicnRzZWUtcGVlci1waG90b1wiICpuZ0lmPVwiIXBlZXIuY2FtZXJhXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwicnRzZWUtcGVlci1waG90by13cmFwcGVyXCI+XG4gICAgICAgIDxkaXYgICpuZ0lmPVwicGVlci5pbWFnZVVybFwiXG4gICAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kLWltYWdlXT1cIid1cmwoJyArIHBlZXIuaW1hZ2VVcmwgKyAnKSdcIlxuICAgICAgICAgICAgICBjbGFzcz1cInJ0c2VlLXBlZXItcGhvdG8taW1hZ2VcIlxuICAgICAgICA+PC9kaXY+XG4gICAgICAgIDxpbWcgKm5nSWY9XCIhcGVlci5pbWFnZVVybFwiIFtzcmNdPVwiXCIgYWx0PVwicGVlcl9waG90b1wiIGNsYXNzPVwicnRzZWUtcGVlci1waG90by1pbWFnZVwiPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwicnRzZWUtcGVlci1pbmZvXCI+XG4gICAgICAgIDxwIGNsYXNzPVwicnRzZWUtcGVlci1uYW1lXCIgKm5nSWY9XCJwZWVyLm5hbWVcIj57e3BlZXIubmFtZX19PC9wPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgICA8dmlkZW8gI3ZpZGVvT3V0cHV0XG4gICAgICAgICAgICAgY2xhc3M9XCJydHNlZS1wZWVyLXZpZGVvXCJcbiAgICAgICAgICAgICBbYXV0b3BsYXldPVwidHJ1ZVwiXG4gICAgICAgICAgICAgW3NyY09iamVjdF09XCJwZWVyLnJlbW90ZVZpZGVvU3RyZWFtXCJcbiAgICAgICAgICAgICBwbGF5c2lubGluZT1cInRydWVcIlxuICAgICAgPlxuICAgICAgPC92aWRlbz5cbiAgICA8ZGl2IGNsYXNzPVwicnRzZWUtcGVlci1zb3VuZGJhclwiPlxuICAgICAgPG5neC1ydHNlZS1zb3VuZGJhciBbcGVlcl09XCJwZWVyXCI+PC9uZ3gtcnRzZWUtc291bmRiYXI+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnRzZWUtcGVlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gvc3JjL2xpYi9jb21wb25lbnRzL3J0c2VlLXBlZXIvcnRzZWUtcGVlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gvc3JjL2xpYi9jb21wb25lbnRzL3J0c2VlLXBlZXIvcnRzZWUtcGVlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUVULEtBQUssRUFDTCxTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7Ozs7QUFRdkIsTUFBTSxPQUFPLGtCQUFrQjtJQVE3QjtRQUNFLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDO1FBQzNCLElBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDO0lBQ3RCLENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDckIsT0FBTztTQUNSO1FBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FDN0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFpQyxDQUNuRCxDQUFDO0lBQ0osQ0FBQzs7K0dBcEJVLGtCQUFrQjttR0FBbEIsa0JBQWtCLHlSQ2QvQiw0aENBNEJBOzJGRGRhLGtCQUFrQjtrQkFMOUIsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsZ0JBQWdCO29CQUMxQixXQUFXLEVBQUUsNkJBQTZCO29CQUMxQyxTQUFTLEVBQUUsQ0FBQyw2QkFBNkIsQ0FBQztpQkFDM0M7MEVBSzJCLFdBQVc7c0JBQXBDLFNBQVM7dUJBQUMsYUFBYTtnQkFDRSxXQUFXO3NCQUFwQyxTQUFTO3VCQUFDLGFBQWE7Z0JBQ2YsSUFBSTtzQkFBWixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBJbnB1dCxcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJUU2VlUGVlckNvbm5lY3Rpb24gfSBmcm9tICdAcnRzZWUvY29uZmVyZW5jZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ25neC1ydHNlZS1wZWVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3J0c2VlLXBlZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9ydHNlZS1wZWVyLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFJ0c2VlUGVlckNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xuICBpbnRlcnZhbExlbmd0aDogbnVtYmVyO1xuICBub2ljZUxldmVsOiBudW1iZXI7XG5cbiAgQFZpZXdDaGlsZCgnYXVkaW9PdXRwdXQnKSBhdWRpb091dHB1dD86IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoJ3ZpZGVvT3V0cHV0JykgdmlkZW9PdXRwdXQ/OiBFbGVtZW50UmVmO1xuICBASW5wdXQoKSBwZWVyITogUlRTZWVQZWVyQ29ubmVjdGlvbjtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLmludGVydmFsTGVuZ3RoID0gMTAwMDtcbiAgICB0aGlzLm5vaWNlTGV2ZWwgPSAwO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5hdWRpb091dHB1dCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnBlZXIuc2V0QXVkaW9PdXRwdXRFbGVtZW50KFxuICAgICAgdGhpcy5hdWRpb091dHB1dC5uYXRpdmVFbGVtZW50IGFzIEhUTUxBdWRpb0VsZW1lbnRcbiAgICApO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwicnRzZWUtcGVlclwiIFtuZ0NsYXNzXT1cIntcbidydHNlZS1wZWVyLXZpZGVvLWRpc2FibGVkJzogIXBlZXIucmVtb3RlVmlkZW9TdHJlYW0gfHwgIXBlZXIuY2FtZXJhXG59XCI+XG4gIDxkaXYgY2xhc3M9XCJydHNlZS1wZWVyLWNvbnRlbnRcIj5cbiAgICA8ZGl2IGNsYXNzPVwicnRzZWUtcGVlci1waG90b1wiICpuZ0lmPVwiIXBlZXIuY2FtZXJhXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwicnRzZWUtcGVlci1waG90by13cmFwcGVyXCI+XG4gICAgICAgIDxkaXYgICpuZ0lmPVwicGVlci5pbWFnZVVybFwiXG4gICAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kLWltYWdlXT1cIid1cmwoJyArIHBlZXIuaW1hZ2VVcmwgKyAnKSdcIlxuICAgICAgICAgICAgICBjbGFzcz1cInJ0c2VlLXBlZXItcGhvdG8taW1hZ2VcIlxuICAgICAgICA+PC9kaXY+XG4gICAgICAgIDxpbWcgKm5nSWY9XCIhcGVlci5pbWFnZVVybFwiIFtzcmNdPVwiXCIgYWx0PVwicGVlcl9waG90b1wiIGNsYXNzPVwicnRzZWUtcGVlci1waG90by1pbWFnZVwiPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwicnRzZWUtcGVlci1pbmZvXCI+XG4gICAgICAgIDxwIGNsYXNzPVwicnRzZWUtcGVlci1uYW1lXCIgKm5nSWY9XCJwZWVyLm5hbWVcIj57e3BlZXIubmFtZX19PC9wPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgICA8dmlkZW8gI3ZpZGVvT3V0cHV0XG4gICAgICAgICAgICAgY2xhc3M9XCJydHNlZS1wZWVyLXZpZGVvXCJcbiAgICAgICAgICAgICBbYXV0b3BsYXldPVwidHJ1ZVwiXG4gICAgICAgICAgICAgW3NyY09iamVjdF09XCJwZWVyLnJlbW90ZVZpZGVvU3RyZWFtXCJcbiAgICAgICAgICAgICBwbGF5c2lubGluZT1cInRydWVcIlxuICAgICAgPlxuICAgICAgPC92aWRlbz5cbiAgICA8ZGl2IGNsYXNzPVwicnRzZWUtcGVlci1zb3VuZGJhclwiPlxuICAgICAgPG5neC1ydHNlZS1zb3VuZGJhciBbcGVlcl09XCJwZWVyXCI+PC9uZ3gtcnRzZWUtc291bmRiYXI+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
@@ -39,4 +39,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.1.2", ngImpor
39
39
  }], fullScreenMode: [{
40
40
  type: Input
41
41
  }] } });
42
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnRzZWUtc2V0dGluZ3MuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4L3NyYy9saWIvY29tcG9uZW50cy9ydHNlZS1zZXR0aW5ncy9ydHNlZS1zZXR0aW5ncy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gvc3JjL2xpYi9jb21wb25lbnRzL3J0c2VlLXNldHRpbmdzL3J0c2VlLXNldHRpbmdzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDOzs7O0FBUXpELE1BQU0sT0FBTyxzQkFBc0I7SUFPakM7UUFDRSxJQUFJLENBQUMsMEJBQTBCLEdBQUcsRUFBRSxDQUFDO1FBQ3JDLElBQUksQ0FBQywwQkFBMEIsR0FBRyxFQUFFLENBQUM7UUFDckMsSUFBSSxDQUFDLDJCQUEyQixHQUFHLEVBQUUsQ0FBQztJQUN4QyxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFFRCxvQkFBb0I7UUFDbEIsS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDLHVCQUF1QixFQUFFLENBQUM7SUFDNUMsQ0FBQztJQUVELGFBQWEsQ0FBQyxRQUFnQjtRQUM1QixJQUFJLENBQUMsS0FBSyxDQUFDLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3pDLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDeEIsQ0FBQztJQUVELGNBQWMsQ0FBQyxRQUFnQjtRQUM3QixJQUFJLENBQUMsS0FBSyxDQUFDLG9CQUFvQixDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFRCxhQUFhLENBQUMsUUFBZ0I7UUFDNUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMzQyxDQUFDOzttSEFoQ1Usc0JBQXNCO3VHQUF0QixzQkFBc0Isd0hDUm5DLGc4Q0E0QkE7MkZEcEJhLHNCQUFzQjtrQkFMbEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsb0JBQW9CO29CQUM5QixXQUFXLEVBQUUsaUNBQWlDO29CQUM5QyxTQUFTLEVBQUUsQ0FBQyxpQ0FBaUMsQ0FBQztpQkFDL0M7MEVBTVUsS0FBSztzQkFBYixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJUU2VlVmlkZW9DaGF0IH0gZnJvbSAnQHJ0c2VlL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICduZ3gtcnRzZWUtc2V0dGluZ3MnLFxuICB0ZW1wbGF0ZVVybDogJy4vcnRzZWUtc2V0dGluZ3MuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9ydHNlZS1zZXR0aW5ncy5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBSdHNlZVNldHRpbmdzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgYXZhaWxhYmxlQXVkaW9JbnB1dERldmljZXM6IE1lZGlhRGV2aWNlSW5mb1tdO1xuICBhdmFpbGFibGVWaWRlb0lucHV0RGV2aWNlczogTWVkaWFEZXZpY2VJbmZvW107XG4gIGF2YWlsYWJsZUF1ZGlvT3V0cHV0RGV2aWNlczogTWVkaWFEZXZpY2VJbmZvW107XG5cbiAgQElucHV0KCkgcnRTZWUhOiBSVFNlZVZpZGVvQ2hhdDtcbiAgQElucHV0KCkgZnVsbFNjcmVlbk1vZGUhOiBib29sZWFuO1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLmF2YWlsYWJsZUF1ZGlvSW5wdXREZXZpY2VzID0gW107XG4gICAgdGhpcy5hdmFpbGFibGVWaWRlb0lucHV0RGV2aWNlcyA9IFtdO1xuICAgIHRoaXMuYXZhaWxhYmxlQXVkaW9PdXRwdXREZXZpY2VzID0gW107XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnJlZnJlc2hTZWxlY3RPcHRpb25zKCk7XG4gIH1cblxuICByZWZyZXNoU2VsZWN0T3B0aW9ucygpIHtcbiAgICB2b2lkIHRoaXMucnRTZWUucmVmcmVzaE1lZGlhRGV2aWNlc0xpc3QoKTtcbiAgfVxuXG4gIHNldEF1ZGlvSW5wdXQoZGV2aWNlSWQ6IHN0cmluZykge1xuICAgIHRoaXMucnRTZWUuc2V0QXVkaW9JbnB1dERldmljZShkZXZpY2VJZCk7XG4gICAgY29uc29sZS5sb2coZGV2aWNlSWQpO1xuICB9XG5cbiAgc2V0QXVkaW9PdXRwdXQoZGV2aWNlSWQ6IHN0cmluZykge1xuICAgIHRoaXMucnRTZWUuc2V0QXVkaW9PdXRwdXREZXZpY2UoZGV2aWNlSWQpO1xuICB9XG5cbiAgc2V0VmlkZW9JbnB1dChkZXZpY2VJZDogc3RyaW5nKSB7XG4gICAgdGhpcy5ydFNlZS5zZXRWaWRlb0lucHV0RGV2aWNlKGRldmljZUlkKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInJ0c2VlLXNldHRpbmdzXCIgW25nQ2xhc3NdPVwieydydHNlZS1mdWxsLXNjcmVlbi1zZXR0aW5ncycgOiBmdWxsU2NyZWVuTW9kZX1cIj5cbiAgPGRpdiBjbGFzcz1cInJ0c2VlLWRldmljZXNcIj5cbiAgICA8ZGl2IGNsYXNzPVwicnRzZWUtZGV2aWNlLXNlbGVjdC13cmFwcGVyXCI+XG4gICAgICA8bGFiZWwgY2xhc3M9XCJydHNlZS1zZWxlY3QtbGFiZWxcIiBmb3I9XCJhdWRpby1pbnB1dFwiPkF1ZGlvIElucHV0OjwvbGFiZWw+XG4gICAgICA8c2VsZWN0IGNsYXNzPVwicnRzZWUtc2VsZWN0XCIgaWQ9XCJhdWRpby1pbnB1dFwiIChjbGljayk9XCJyZWZyZXNoU2VsZWN0T3B0aW9ucygpXCI+XG4gICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IGRldmljZSBvZiBydFNlZS5hdWRpb0lucHV0RGV2aWNlc1wiIFt2YWx1ZV09XCJkZXZpY2UuZGV2aWNlSWRcIiAoY2xpY2spPVwic2V0QXVkaW9JbnB1dChkZXZpY2UuZGV2aWNlSWQpXCI+XG4gICAgICAgICAge3tkZXZpY2UubGFiZWx9fVxuICAgICAgICA8L29wdGlvbj5cbiAgICAgIDwvc2VsZWN0PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJydHNlZS1kZXZpY2Utc2VsZWN0LXdyYXBwZXJcIj5cbiAgICAgIDxsYWJlbCBjbGFzcz1cInJ0c2VlLXNlbGVjdC1sYWJlbFwiIGZvcj1cImF1ZGlvLW91dHB1dFwiPkF1ZGlvIE91dHB1dDo8L2xhYmVsPlxuICAgICAgPHNlbGVjdCBjbGFzcz1cInJ0c2VlLXNlbGVjdFwiIGlkPVwiYXVkaW8tb3V0cHV0XCIgKGNsaWNrKT1cInJlZnJlc2hTZWxlY3RPcHRpb25zKClcIj5cbiAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgZGV2aWNlIG9mIHJ0U2VlLmF1ZGlvT3V0cHV0RGV2aWNlc1wiIFt2YWx1ZV09XCJkZXZpY2UuZGV2aWNlSWRcIiAoY2xpY2spPVwic2V0QXVkaW9PdXRwdXQoZGV2aWNlLmRldmljZUlkKVwiPlxuICAgICAgICAgIHt7ZGV2aWNlLmxhYmVsfX1cbiAgICAgICAgPC9vcHRpb24+XG4gICAgICA8L3NlbGVjdD5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwicnRzZWUtZGV2aWNlLXNlbGVjdC13cmFwcGVyXCI+XG4gICAgICA8bGFiZWwgY2xhc3M9XCJydHNlZS1zZWxlY3QtbGFiZWxcIiBmb3I9XCJ2aWRlby1pbnB1dFwiPlZpZGVvIElucHV0OjwvbGFiZWw+XG4gICAgICA8c2VsZWN0IGNsYXNzPVwicnRzZWUtc2VsZWN0XCIgaWQ9XCJ2aWRlby1pbnB1dFwiIChjbGljayk9XCJyZWZyZXNoU2VsZWN0T3B0aW9ucygpXCI+XG4gICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IGRldmljZSBvZiBydFNlZS52aWRlb0lucHV0RGV2aWNlc1wiIFt2YWx1ZV09XCJkZXZpY2UuZGV2aWNlSWRcIiAoY2xpY2spPVwic2V0VmlkZW9JbnB1dChkZXZpY2UuZGV2aWNlSWQpXCI+XG4gICAgICAgICAge3tkZXZpY2UubGFiZWx9fVxuICAgICAgICA8L29wdGlvbj5cbiAgICAgIDwvc2VsZWN0PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnRzZWUtc2V0dGluZ3MuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4L3NyYy9saWIvY29tcG9uZW50cy9ydHNlZS1zZXR0aW5ncy9ydHNlZS1zZXR0aW5ncy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gvc3JjL2xpYi9jb21wb25lbnRzL3J0c2VlLXNldHRpbmdzL3J0c2VlLXNldHRpbmdzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDOzs7O0FBUXpELE1BQU0sT0FBTyxzQkFBc0I7SUFPakM7UUFDRSxJQUFJLENBQUMsMEJBQTBCLEdBQUcsRUFBRSxDQUFDO1FBQ3JDLElBQUksQ0FBQywwQkFBMEIsR0FBRyxFQUFFLENBQUM7UUFDckMsSUFBSSxDQUFDLDJCQUEyQixHQUFHLEVBQUUsQ0FBQztJQUN4QyxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFFRCxvQkFBb0I7UUFDbEIsS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDLHVCQUF1QixFQUFFLENBQUM7SUFDNUMsQ0FBQztJQUVELGFBQWEsQ0FBQyxRQUFnQjtRQUM1QixJQUFJLENBQUMsS0FBSyxDQUFDLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3pDLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDeEIsQ0FBQztJQUVELGNBQWMsQ0FBQyxRQUFnQjtRQUM3QixJQUFJLENBQUMsS0FBSyxDQUFDLG9CQUFvQixDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFRCxhQUFhLENBQUMsUUFBZ0I7UUFDNUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMzQyxDQUFDOzttSEFoQ1Usc0JBQXNCO3VHQUF0QixzQkFBc0Isd0hDUm5DLGc4Q0E0QkE7MkZEcEJhLHNCQUFzQjtrQkFMbEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsb0JBQW9CO29CQUM5QixXQUFXLEVBQUUsaUNBQWlDO29CQUM5QyxTQUFTLEVBQUUsQ0FBQyxpQ0FBaUMsQ0FBQztpQkFDL0M7MEVBTVUsS0FBSztzQkFBYixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJUU2VlQ29uZmVyZW5jZSB9IGZyb20gJ0BydHNlZS9jb25mZXJlbmNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbmd4LXJ0c2VlLXNldHRpbmdzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3J0c2VlLXNldHRpbmdzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcnRzZWUtc2V0dGluZ3MuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgUnRzZWVTZXR0aW5nc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIGF2YWlsYWJsZUF1ZGlvSW5wdXREZXZpY2VzOiBNZWRpYURldmljZUluZm9bXTtcbiAgYXZhaWxhYmxlVmlkZW9JbnB1dERldmljZXM6IE1lZGlhRGV2aWNlSW5mb1tdO1xuICBhdmFpbGFibGVBdWRpb091dHB1dERldmljZXM6IE1lZGlhRGV2aWNlSW5mb1tdO1xuXG4gIEBJbnB1dCgpIHJ0U2VlITogUlRTZWVDb25mZXJlbmNlO1xuICBASW5wdXQoKSBmdWxsU2NyZWVuTW9kZSE6IGJvb2xlYW47XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuYXZhaWxhYmxlQXVkaW9JbnB1dERldmljZXMgPSBbXTtcbiAgICB0aGlzLmF2YWlsYWJsZVZpZGVvSW5wdXREZXZpY2VzID0gW107XG4gICAgdGhpcy5hdmFpbGFibGVBdWRpb091dHB1dERldmljZXMgPSBbXTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMucmVmcmVzaFNlbGVjdE9wdGlvbnMoKTtcbiAgfVxuXG4gIHJlZnJlc2hTZWxlY3RPcHRpb25zKCkge1xuICAgIHZvaWQgdGhpcy5ydFNlZS5yZWZyZXNoTWVkaWFEZXZpY2VzTGlzdCgpO1xuICB9XG5cbiAgc2V0QXVkaW9JbnB1dChkZXZpY2VJZDogc3RyaW5nKSB7XG4gICAgdGhpcy5ydFNlZS5zZXRBdWRpb0lucHV0RGV2aWNlKGRldmljZUlkKTtcbiAgICBjb25zb2xlLmxvZyhkZXZpY2VJZCk7XG4gIH1cblxuICBzZXRBdWRpb091dHB1dChkZXZpY2VJZDogc3RyaW5nKSB7XG4gICAgdGhpcy5ydFNlZS5zZXRBdWRpb091dHB1dERldmljZShkZXZpY2VJZCk7XG4gIH1cblxuICBzZXRWaWRlb0lucHV0KGRldmljZUlkOiBzdHJpbmcpIHtcbiAgICB0aGlzLnJ0U2VlLnNldFZpZGVvSW5wdXREZXZpY2UoZGV2aWNlSWQpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwicnRzZWUtc2V0dGluZ3NcIiBbbmdDbGFzc109XCJ7J3J0c2VlLWZ1bGwtc2NyZWVuLXNldHRpbmdzJyA6IGZ1bGxTY3JlZW5Nb2RlfVwiPlxuICA8ZGl2IGNsYXNzPVwicnRzZWUtZGV2aWNlc1wiPlxuICAgIDxkaXYgY2xhc3M9XCJydHNlZS1kZXZpY2Utc2VsZWN0LXdyYXBwZXJcIj5cbiAgICAgIDxsYWJlbCBjbGFzcz1cInJ0c2VlLXNlbGVjdC1sYWJlbFwiIGZvcj1cImF1ZGlvLWlucHV0XCI+QXVkaW8gSW5wdXQ6PC9sYWJlbD5cbiAgICAgIDxzZWxlY3QgY2xhc3M9XCJydHNlZS1zZWxlY3RcIiBpZD1cImF1ZGlvLWlucHV0XCIgKGNsaWNrKT1cInJlZnJlc2hTZWxlY3RPcHRpb25zKClcIj5cbiAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgZGV2aWNlIG9mIHJ0U2VlLmF1ZGlvSW5wdXREZXZpY2VzXCIgW3ZhbHVlXT1cImRldmljZS5kZXZpY2VJZFwiIChjbGljayk9XCJzZXRBdWRpb0lucHV0KGRldmljZS5kZXZpY2VJZClcIj5cbiAgICAgICAgICB7e2RldmljZS5sYWJlbH19XG4gICAgICAgIDwvb3B0aW9uPlxuICAgICAgPC9zZWxlY3Q+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInJ0c2VlLWRldmljZS1zZWxlY3Qtd3JhcHBlclwiPlxuICAgICAgPGxhYmVsIGNsYXNzPVwicnRzZWUtc2VsZWN0LWxhYmVsXCIgZm9yPVwiYXVkaW8tb3V0cHV0XCI+QXVkaW8gT3V0cHV0OjwvbGFiZWw+XG4gICAgICA8c2VsZWN0IGNsYXNzPVwicnRzZWUtc2VsZWN0XCIgaWQ9XCJhdWRpby1vdXRwdXRcIiAoY2xpY2spPVwicmVmcmVzaFNlbGVjdE9wdGlvbnMoKVwiPlxuICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBkZXZpY2Ugb2YgcnRTZWUuYXVkaW9PdXRwdXREZXZpY2VzXCIgW3ZhbHVlXT1cImRldmljZS5kZXZpY2VJZFwiIChjbGljayk9XCJzZXRBdWRpb091dHB1dChkZXZpY2UuZGV2aWNlSWQpXCI+XG4gICAgICAgICAge3tkZXZpY2UubGFiZWx9fVxuICAgICAgICA8L29wdGlvbj5cbiAgICAgIDwvc2VsZWN0PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJydHNlZS1kZXZpY2Utc2VsZWN0LXdyYXBwZXJcIj5cbiAgICAgIDxsYWJlbCBjbGFzcz1cInJ0c2VlLXNlbGVjdC1sYWJlbFwiIGZvcj1cInZpZGVvLWlucHV0XCI+VmlkZW8gSW5wdXQ6PC9sYWJlbD5cbiAgICAgIDxzZWxlY3QgY2xhc3M9XCJydHNlZS1zZWxlY3RcIiBpZD1cInZpZGVvLWlucHV0XCIgKGNsaWNrKT1cInJlZnJlc2hTZWxlY3RPcHRpb25zKClcIj5cbiAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgZGV2aWNlIG9mIHJ0U2VlLnZpZGVvSW5wdXREZXZpY2VzXCIgW3ZhbHVlXT1cImRldmljZS5kZXZpY2VJZFwiIChjbGljayk9XCJzZXRWaWRlb0lucHV0KGRldmljZS5kZXZpY2VJZClcIj5cbiAgICAgICAgICB7e2RldmljZS5sYWJlbH19XG4gICAgICAgIDwvb3B0aW9uPlxuICAgICAgPC9zZWxlY3Q+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=