{"version":3,"file":"416.f9f0896530407d1f.js","mappings":"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","names":["i0","ctx_r11","ctx_r13","ctx_r15","ctx_r18","LobbyPeopleComponent","constructor","lobbyService","auth","toaster","this","EventRole","EventEmitter","Subject","filterChanged","pipe","debounceTime","distinctUntilChanged","subscribe","model","filter","getActiveUsers","ngOnInit","user","getUser","activeUsers","PagedLobbyActiveUserViewModel","users","initSignalR","initialized","pageCount","Array","totalPages","goToPrevPage","currentPage","goToNextPage","searching","lobby","id","length","usersUpdated","emit","throttleSubject","throttleTime","asyncScheduler","leading","trailing","map","searchText","connection","on","lobbyId","next","onFilterChanged","query","close","closed","selectors","ctx_r12","ctx_r14","ctx_r16","ctx_r17","ctx_r19","ctx_r20","ctx_r21","ctx_r22","ctx_r23","ctx_r25","LobbyChatComponent","ref","getChatHistory","result","exisitingMessages","name","message","userId","messages","push","ChatViewModel","detectChanges","scrollToBottom","sendMessage","invoke","firstName","lastName","chatMessage","onScroll","event","isNearBottom","isUserNearBottom","messageContainer","nativeElement","scrollTop","offsetHeight","scrollHeight","threshold","handleSelection","char","toggled","chatbox","focus","check","of","delay","scroll","top","left","behavior","onResize","windowHeight","window","innerHeight","messageHeight","getBoundingClientRect","style","height","resized","collapseChat","collapse","ctx","ctx_r27","ctx_r29","ctx_r35","ctx_r37","ctx_r38","ctx_r39","ctx_r42","_r14","ctx_r45","ctx_r47","ctx_r48","initLayoutContainer","require","LobbyComponent","analyticsService","modalService","renderer","opentokService","route","router","document","body","backgroundColor","zE","routeSubscription","paramMap","param","parseInt","get","getLobbyById","InitSignalR","InitOpenTok","HubConnectionBuilder","withUrl","accessTokenFactory","getToken","withAutomaticReconnect","DefaultReconnectPolicy","build","start","then","layout","webRTCLayoutContainer","initsessionForLobby","session","console","log","stream","data","streamCount","subscription","insertMode","nameDisplayMode","element","addEventListener","classList","contains","remove","add","getSubscribersForStream","forEach","subscriber","setTimeout","connect","catch","err","error","alert","showDeviceSettings","modalRef","open","CameraTestModalComponent","size","backdrop","ariaLabelledBy","selectedDevice","componentInstance","publisher","destroy","publishing","activateCamera","reason","OT","getOT","el","createElement","initPublisher","publishAudio","publishingAudio","publishVideo","publishingVideo","resolution","width","insertDefaultUI","archiveStatusDisplayMode","buttonDisplayMode","audioSource","audioDeviceId","videoSource","videoDeviceId","appendChild","isConnected","publish","toggleVideo","toggleAudio","unpublish","exitPage","confirmDialog","navigate","shareScreen","screenPublisher","publishScreen","screenPublishing","techSupportClicked","userCount","count","randomUserIds","stopScreenSharing","ngAfterViewInit","chatResized","chatCollapsed","openChat","elem","fullscreen","fullScreen","doc","isFullScreen","exitFullscreen","n","mozCancelFullScreen","webkitExitFullscreen","msExitFullscreen","requestFullscreen","t","mozRequestFullScreen","webkitRequestFullscreen","msRequestFullscreen","exit","ev","resize","evt","ngOnDestroy","unsubscribe","stop","disconnect","LobbyModule","NgbModalModule","ApplicationPipesModule","RouterModule","path","component","canActivate","IsAuthenticatedGuard"],"sourceRoot":"webpack:///","sources":["./src/app/lobbies/people/lobby-people.component.html","./src/app/lobbies/people/lobby-people.component.ts","./src/app/lobbies/chat/lobby-chat.component.html","./src/app/lobbies/chat/lobby-chat.component.ts","./src/app/lobbies/lobby.component.html","./src/app/lobbies/lobby.component.ts","./src/app/lobby.module.ts"],"sourcesContent":["
\r\n \r\n
\r\n
\r\n

People

\r\n\r\n \r\n
\r\n
\r\n \r\n\r\n \r\n
\r\n\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
    \r\n \r\n
  • \r\n
    \r\n
    \r\n \r\n {{ activeUser.firstName }} {{ activeUser.lastName }} \r\n
    \r\n\r\n \r\n This is you\r\n \r\n
    \r\n
  • \r\n
    \r\n
\r\n
\r\n
\r\n
\r\n \r\n
Page {{ currentPage + 1 }} of {{ activeUsers.totalPages + 1 }} ({{ activeUsers.count }} total)
\r\n \r\n\r\n \r\n
\r\n
\r\n \r\n\r\n \r\n
\r\n","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\r\nimport { LiveEventViewModel, ActiveUserViewModel, UserAuthenticationViewModel, ExhibitDesignerViewModel, ActiveExhibitUserViewModel, LobbyViewModel, PagedLobbyActiveUserViewModel } from 'src/app/_models/generatedModels';\r\nimport { HubConnection } from '@microsoft/signalr';\r\nimport { EventService, LiveEventService, ExhibitService, LobbyService } from 'src/app/_services/generatedServices';\r\nimport { EventRole } from 'src/app/_models/models';\r\nimport { AuthenticationService } from 'src/app/_services/authentication.service';\r\nimport { ToasterService } from 'src/app/_services/toaster.service';\r\nimport { debounce, debounceTime, delay, distinctUntilChanged, map, throttleTime } from 'rxjs/internal/operators';\r\nimport { asyncScheduler, Observable, Subject } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'lobby-people',\r\n templateUrl: 'lobby-people.component.html',\r\n})\r\nexport class LobbyPeopleComponent implements OnInit {\r\n initialized = false;\r\n @Input() lobby: LobbyViewModel;\r\n @Input() connection: HubConnection;\r\n public EventRole = EventRole;\r\n @Output()\r\n closed = new EventEmitter();\r\n\r\n @Output()\r\n usersUpdated = new EventEmitter();\r\n\r\n user: UserAuthenticationViewModel;\r\n currentPage = 0;\r\n activeUsers: PagedLobbyActiveUserViewModel;\r\n searching = false;\r\n active: boolean = true;\r\n filterChanged: Subject = new Subject();\r\n filter = '';\r\n throttleSubject = new Subject();\r\n\r\n constructor(private lobbyService: LobbyService, public auth: AuthenticationService, private toaster: ToasterService) {\r\n this.filterChanged.pipe(debounceTime(500), distinctUntilChanged()).subscribe((model) => {\r\n this.filter = model;\r\n this.getActiveUsers();\r\n });\r\n }\r\n\r\n ngOnInit(): void {\r\n this.user = this.auth.getUser();\r\n this.activeUsers = new PagedLobbyActiveUserViewModel();\r\n this.activeUsers.users = [];\r\n this.initSignalR();\r\n this.getActiveUsers();\r\n this.initialized = true;\r\n }\r\n\r\n get pageCount() {\r\n return new Array(this.activeUsers.totalPages);\r\n }\r\n\r\n goToPrevPage() {\r\n if (this.currentPage > 0) {\r\n this.currentPage--;\r\n this.getActiveUsers();\r\n }\r\n }\r\n\r\n goToNextPage() {\r\n if (this.currentPage < this.activeUsers.totalPages) {\r\n this.currentPage++;\r\n this.getActiveUsers();\r\n }\r\n }\r\n\r\n getActiveUsers() {\r\n this.searching = true;\r\n this.lobbyService.getActiveUsers(this.lobby.id, this.currentPage, this.filter).subscribe((activeUsers) => {\r\n this.activeUsers = activeUsers;\r\n if (!this.filter || this.filter.length === 0) {\r\n this.usersUpdated.emit(activeUsers);\r\n }\r\n this.currentPage = activeUsers.currentPage;\r\n this.searching = false;\r\n });\r\n }\r\n\r\n initSignalR() {\r\n this.throttleSubject\r\n .pipe(\r\n throttleTime(5000, asyncScheduler, { leading: false, trailing: true }),\r\n map((searchText) => {\r\n this.getActiveUsers();\r\n })\r\n )\r\n .subscribe();\r\n\r\n this.connection.on('userDisconnected', (lobbyId: number, user: ActiveExhibitUserViewModel) => {\r\n if (lobbyId !== this.lobby.id) {\r\n return;\r\n }\r\n this.throttleSubject.next('');\r\n });\r\n\r\n this.connection.on('userConnected', (lobbyId: number, user: ActiveExhibitUserViewModel) => {\r\n if (lobbyId !== this.lobby.id) {\r\n return;\r\n }\r\n this.throttleSubject.next('');\r\n });\r\n }\r\n\r\n onFilterChanged(query: string) {\r\n this.filterChanged.next(query);\r\n }\r\n\r\n close() {\r\n this.closed.emit();\r\n }\r\n}\r\n","\r\n
\r\n \r\n
\r\n
\r\n
    \r\n
  • \r\n \r\n {{ message.user.firstName + ' ' + message.user.lastName }}\r\n

    \r\n
  • \r\n
  • \r\n {{ message.name }}\r\n

    \r\n
  • \r\n
  •  
  • \r\n
\r\n

Say hello.

\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n","import { Component, OnInit, Input, ViewChild, ElementRef, HostListener, Output, EventEmitter, ChangeDetectorRef } from '@angular/core';\r\nimport { LiveEventViewModel, UserAuthenticationViewModel, ChatHistoryViewModel, LobbyViewModel } from 'src/app/_models/generatedModels';\r\nimport { HubConnection } from '@microsoft/signalr';\r\nimport { AuthenticationService } from 'src/app/_services/authentication.service';\r\nimport { ChatViewModel } from 'src/app/_models/models';\r\nimport { of } from 'rxjs';\r\nimport { delay } from 'rxjs/operators';\r\nimport { EventService, LobbyService } from 'src/app/_services/generatedServices';\r\n\r\n@Component({\r\n selector: 'bxl-lobby-chat',\r\n templateUrl: 'lobby-chat.component.html',\r\n})\r\nexport class LobbyChatComponent implements OnInit {\r\n initialized = false;\r\n @Input() lobby: LobbyViewModel;\r\n @Input() connection: HubConnection;\r\n @ViewChild('messageContainer') private messageContainer: ElementRef;\r\n @ViewChild('chatbox') private chatbox: ElementRef;\r\n\r\n public user: UserAuthenticationViewModel;\r\n public messages: ChatViewModel[] = new Array();\r\n public exisitingMessages: ChatHistoryViewModel[] = new Array();\r\n public chatMessage: string;\r\n toggled: boolean = false;\r\n showPicker: boolean = false;\r\n\r\n @Output()\r\n resized = new EventEmitter();\r\n\r\n @Output()\r\n collapse = new EventEmitter();\r\n isNearBottom: boolean = true;\r\n\r\n constructor(private auth: AuthenticationService, private ref: ChangeDetectorRef, private lobbyService: LobbyService) {}\r\n\r\n ngOnInit(): void {\r\n this.user = this.auth.getUser();\r\n\r\n this.lobbyService.getChatHistory(this.lobby.id).subscribe((result) => {\r\n this.exisitingMessages = result;\r\n\r\n this.connection.on('postChat', (id: number, name: string, message: string, userId: number, lobbyId: number) => {\r\n if (lobbyId === this.lobby.id) {\r\n this.messages.push(new ChatViewModel(id, name, message, userId));\r\n this.ref.detectChanges();\r\n this.scrollToBottom(userId !== this.user.id);\r\n }\r\n });\r\n\r\n this.initialized = true;\r\n this.scrollToBottom(false);\r\n });\r\n }\r\n\r\n public sendMessage() {\r\n this.connection.invoke('postChat', this.user.firstName + ' ' + this.user.lastName, this.chatMessage, this.user.id, this.lobby.id);\r\n this.chatMessage = null;\r\n\r\n }\r\n\r\n onScroll(event) {\r\n this.isNearBottom = this.isUserNearBottom();\r\n }\r\n\r\n private isUserNearBottom(): boolean {\r\n const threshold = 50;\r\n const position = this.messageContainer.nativeElement.scrollTop + this.messageContainer.nativeElement.offsetHeight;\r\n const height = this.messageContainer.nativeElement.scrollHeight;\r\n return position > height - threshold;\r\n }\r\n\r\n handleSelection(char) {\r\n if (this.chatMessage == null) {\r\n this.chatMessage = '';\r\n }\r\n\r\n this.chatMessage = this.chatMessage + char;\r\n this.toggled = false;\r\n this.chatbox.nativeElement.focus();\r\n }\r\n\r\n public scrollToBottom(check: boolean): void {\r\n of(null)\r\n .pipe(delay(100))\r\n .subscribe((result) => {\r\n try {\r\n if (this.isNearBottom || !check) {\r\n this.messageContainer.nativeElement.scroll({\r\n top: this.messageContainer.nativeElement.scrollHeight,\r\n left: 0,\r\n behavior: 'smooth',\r\n });\r\n this.isNearBottom = true;\r\n }\r\n } catch (err) {}\r\n });\r\n }\r\n\r\n @HostListener('window:resize', ['$event'])\r\n onResize(event) {\r\n let windowHeight = window.innerHeight;\r\n let messageHeight = this.messageContainer.nativeElement.getBoundingClientRect().top;\r\n\r\n this.messageContainer.nativeElement.style.height = windowHeight - messageHeight - 58 + 'px';\r\n this.resized.emit();\r\n }\r\n\r\n collapseChat() {\r\n this.collapse.emit();\r\n }\r\n}\r\n","\r\n\r\n
\r\n
\r\n \r\n \r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
 
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
    \r\n
  • \r\n \r\n \r\n
  • \r\n
  • \r\n \r\n
  • \r\n
  • \r\n \r\n
  • \r\n
  • \r\n \r\n
  • \r\n
  • \r\n \r\n
  • \r\n\r\n
  • \r\n \r\n
  • \r\n
  • \r\n \r\n
  • \r\n
  • \r\n \r\n
  • \r\n
  • \r\n

    Help

    \r\n
  • \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
    \r\n
  • \r\n

    Chat

    \r\n
  • \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
    \r\n
  • 0 }\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"\" data-original-title=\"James Collins\">\r\n
    \r\n \r\n
    \r\n
  • \r\n\r\n
  • 0\" class=\"list-inline-item ml-n3 mr-0\">\r\n \r\n {{ userCount }}\r\n \r\n
  • \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n","import { Component, OnInit, OnDestroy, ElementRef, ViewChild, ChangeDetectorRef, Renderer2, HostListener, AfterViewInit } from '@angular/core';\r\nimport { LobbyService } from 'src/app/_services/generatedServices';\r\nimport { Subscription, of } from 'rxjs';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { UserAuthenticationViewModel, LobbyViewModel, PagedLobbyActiveUserViewModel } from 'src/app/_models/generatedModels';\r\nimport { ToasterService } from 'src/app/_services/toaster.service';\r\nimport { HubConnection, HubConnectionBuilder } from '@microsoft/signalr';\r\nimport { DefaultReconnectPolicy } from 'src/app/_helpers/signalR-retry-policy';\r\nimport { AuthenticationService } from 'src/app/_services/authentication.service';\r\nimport { OpentokService } from 'src/app/_services/opentok.service';\r\nimport { ChatViewModel, SelectedDevice } from 'src/app/_models/models';\r\nimport { CameraTestModalComponent } from '../events/live/camera-test/camera-test-modal.component';\r\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\r\nimport { delay } from 'rxjs/operators';\r\nimport { LobbyChatComponent } from './chat/lobby-chat.component';\r\nimport { AnalyticsService } from '../_services/analytics.service';\r\nconst initLayoutContainer = require('opentok-layout-js');\r\ndeclare var zE: any;\r\n\r\n@Component({\r\n selector: 'bxl-lobby',\r\n templateUrl: 'lobby.component.html',\r\n})\r\nexport class LobbyComponent implements OnInit, AfterViewInit, OnDestroy {\r\n initialized = false;\r\n public chatCollapsed = false;\r\n\r\n showVisitors = false;\r\n showAnalytics = false;\r\n session: OT.Session;\r\n userCount: number;\r\n randomUserIds: number[];\r\n public user: UserAuthenticationViewModel;\r\n lobbyId: number;\r\n public selectedDevice: SelectedDevice;\r\n public connection: HubConnection;\r\n public isFullScreen: boolean;\r\n publisher: OT.Publisher;\r\n public showChat = true;\r\n\r\n screenPublisher: OT.Publisher;\r\n public publishing: boolean;\r\n public screenPublishing: boolean;\r\n public publishingAudio = true;\r\n public publishingVideo = true;\r\n public streamCount = 0;\r\n public chatMessage: string;\r\n public messages: ChatViewModel[] = new Array();\r\n toggled: boolean = false;\r\n showPicker: boolean = false;\r\n\r\n lobby: LobbyViewModel;\r\n private routeSubscription: Subscription;\r\n @ViewChild('webRTCLayoutContainer') webRTCLayoutContainer: ElementRef;\r\n @ViewChild('fullScreen') fullScreen: ElementRef;\r\n @ViewChild('chatbox') private chatbox: ElementRef;\r\n layout: any;\r\n\r\n constructor(private analyticsService: AnalyticsService, private lobbyService: LobbyService, private modalService: NgbModal, private renderer: Renderer2, private opentokService: OpentokService, private ref: ChangeDetectorRef, private auth: AuthenticationService, private route: ActivatedRoute, private router: Router, private toaster: ToasterService) {}\r\n\r\n ngOnInit(): void {\r\n this.user = this.auth.getUser();\r\n document.body.style.backgroundColor = '#fff';\r\n zE('webWidget', 'hide');\r\n zE('webWidget:on', 'close', () => {\r\n zE('webWidget', 'hide');\r\n });\r\n\r\n this.routeSubscription = this.route.paramMap.subscribe((param) => {\r\n this.lobbyId = parseInt(param.get('id'));\r\n\r\n this.lobbyService.getLobbyById(this.lobbyId).subscribe((lobby) => {\r\n this.lobby = lobby;\r\n //this.analyticsService.setTitleAndLogPageView(lobby.title + \" - Lobbies\");\r\n this.InitSignalR();\r\n this.InitOpenTok();\r\n });\r\n });\r\n }\r\n\r\n InitSignalR(): any {\r\n this.connection = new HubConnectionBuilder()\r\n .withUrl('/lobbyHub', { accessTokenFactory: () => this.auth.getToken() })\r\n .withAutomaticReconnect(new DefaultReconnectPolicy())\r\n .build();\r\n\r\n this.connection.start().then(() => {\r\n this.connection.invoke('connectToLobby', this.lobbyId);\r\n });\r\n\r\n this.initialized = true;\r\n }\r\n\r\n\r\n InitOpenTok() {\r\n this.ref.detectChanges();\r\n this.layout = initLayoutContainer(this.webRTCLayoutContainer.nativeElement).layout;\r\n let layout = this.layout;\r\n\r\n this.opentokService\r\n .initsessionForLobby(this.lobbyId)\r\n .then((session: OT.Session) => {\r\n this.session = session;\r\n this.session.on('streamCreated', (event) => {\r\n console.log(event.stream.name);\r\n console.log(event.stream.connection.data);\r\n this.streamCount++;\r\n\r\n let subscription = this.session.subscribe(event.stream, 'webRTCLayoutContainer', {\r\n insertMode: 'append',\r\n style: { nameDisplayMode: 'on' },\r\n });\r\n\r\n subscription.element.addEventListener('dblclick', function () {\r\n if (subscription.element.classList.contains('OT_big')) {\r\n subscription.element.classList.remove('OT_big');\r\n } else {\r\n subscription.element.classList.add('OT_big');\r\n }\r\n layout();\r\n });\r\n layout();\r\n this.ref.detectChanges();\r\n });\r\n this.session.on('streamDestroyed', (event) => {\r\n this.streamCount--;\r\n session.getSubscribersForStream(event.stream).forEach((subscriber) => {\r\n subscriber.element.classList.remove('ot-layout');\r\n setTimeout(() => {\r\n layout();\r\n }, 200);\r\n });\r\n });\r\n })\r\n .then(() => this.opentokService.connect())\r\n .catch((err) => {\r\n console.error(err);\r\n alert('Unable to connect. Make sure you have updated the config.ts file with your OpenTok details.');\r\n });\r\n }\r\n\r\n showDeviceSettings() {\r\n const modalRef = this.modalService.open(CameraTestModalComponent, { size: 'lg', backdrop: 'static', ariaLabelledBy: 'modal-basic-title' });\r\n if (this.selectedDevice) {\r\n console.log(this.selectedDevice);\r\n modalRef.componentInstance.selectedDevice = this.selectedDevice;\r\n }\r\n modalRef.result.then(\r\n (result) => {\r\n this.selectedDevice = result;\r\n\r\n if (this.publisher) {\r\n this.publisher.destroy();\r\n if (this.publishing) {\r\n this.activateCamera();\r\n }\r\n }\r\n },\r\n (reason) => {}\r\n );\r\n return;\r\n }\r\n\r\n activateCamera() {\r\n this.ref.detectChanges();\r\n\r\n const OT = this.opentokService.getOT();\r\n const el = this.renderer.createElement('div');\r\n\r\n if (this.selectedDevice) {\r\n this.publisher = OT.initPublisher(el, { publishAudio: this.publishingAudio, publishVideo: this.publishingVideo, resolution: '1280x720', name: this.user.firstName + ' ' + this.user.lastName, width: '100%', insertDefaultUI: true, style: { nameDisplayMode: 'on', archiveStatusDisplayMode: 'off', buttonDisplayMode: 'off' }, audioSource: this.selectedDevice.audioDeviceId, videoSource: this.selectedDevice.videoDeviceId });\r\n } else {\r\n this.publisher = OT.initPublisher(el, { publishAudio: this.publishingAudio, publishVideo: this.publishingVideo, resolution: '1280x720', name: this.user.firstName + ' ' + this.user.lastName, width: '100%', insertDefaultUI: true, style: { nameDisplayMode: 'on', archiveStatusDisplayMode: 'off', buttonDisplayMode: 'off' } });\r\n }\r\n\r\n let layout = this.layout;\r\n\r\n el.addEventListener('dblclick', function () {\r\n if (el.classList.contains('OT_big')) {\r\n el.classList.remove('OT_big');\r\n } else {\r\n el.classList.add('OT_big');\r\n }\r\n layout();\r\n });\r\n\r\n this.renderer.appendChild(this.webRTCLayoutContainer.nativeElement, el);\r\n layout();\r\n\r\n if (this.session) {\r\n if (this.session['isConnected']()) {\r\n this.publish();\r\n }\r\n this.session.on('sessionConnected', () => this.publish());\r\n }\r\n }\r\n\r\n publish() {\r\n this.session.publish(this.publisher, (err) => {\r\n if (err) {\r\n alert(err.message);\r\n } else {\r\n this.publishing = true;\r\n this.layout();\r\n this.ref.detectChanges();\r\n this.layout();\r\n }\r\n });\r\n }\r\n\r\n toggleVideo() {\r\n this.publishingVideo = !this.publishingVideo;\r\n this.publisher.publishVideo(this.publishingVideo);\r\n }\r\n\r\n toggleAudio() {\r\n this.publishingAudio = !this.publishingAudio;\r\n this.publisher.publishAudio(this.publishingAudio);\r\n }\r\n\r\n unpublish() {\r\n this.publishing = false;\r\n this.ref.detectChanges();\r\n this.session.unpublish(this.publisher);\r\n this.layout();\r\n }\r\n\r\n exitPage() {\r\n this.toaster.confirmDialog('Are you sure you want to leave this lobby?', 'Exit?', 'Yes, Exit', 'Cancel').subscribe((result) => {\r\n if (result) {\r\n this.router.navigate(['/']);\r\n }\r\n });\r\n }\r\n\r\n public sendMessage() {\r\n this.connection.invoke('postChat', this.user.firstName + ' ' + this.user.lastName, this.chatMessage, this.user.id, this.lobbyId);\r\n this.chatMessage = null;\r\n }\r\n\r\n shareScreen() {\r\n const OT = this.opentokService.getOT();\r\n const el = this.renderer.createElement('div');\r\n this.screenPublisher = OT.initPublisher(el, { videoSource: 'screen', width: '100%', insertDefaultUI: true });\r\n\r\n let layout = this.layout;\r\n\r\n el.classList.add('OT_big');\r\n\r\n el.addEventListener('dblclick', function () {\r\n if (el.classList.contains('OT_big')) {\r\n el.classList.remove('OT_big');\r\n } else {\r\n el.classList.add('OT_big');\r\n }\r\n layout();\r\n });\r\n\r\n this.renderer.appendChild(this.webRTCLayoutContainer.nativeElement, el);\r\n layout();\r\n\r\n if (this.session) {\r\n if (this.session['isConnected']()) {\r\n this.publishScreen();\r\n }\r\n this.session.on('sessionConnected', () => this.publishScreen());\r\n }\r\n }\r\n\r\n publishScreen() {\r\n this.session.publish(this.screenPublisher, (err) => {\r\n if (err) {\r\n alert(err.message);\r\n this.layout();\r\n } else {\r\n this.screenPublishing = true;\r\n this.layout();\r\n this.ref.detectChanges();\r\n this.layout();\r\n }\r\n });\r\n }\r\n\r\n techSupportClicked() {\r\n zE('webWidget', 'show');\r\n zE('webWidget', 'open');\r\n }\r\n\r\n usersUpdated(event: PagedLobbyActiveUserViewModel) {\r\n this.userCount = event.count;\r\n this.randomUserIds = event.randomUserIds;\r\n this.ref.detectChanges();\r\n }\r\n\r\n stopScreenSharing() {\r\n this.session.unpublish(this.screenPublisher);\r\n this.screenPublishing = false;\r\n this.layout();\r\n }\r\n\r\n ngAfterViewInit() {\r\n of(null)\r\n .pipe(delay(1000))\r\n .subscribe((result) => {\r\n this.chatResized(null);\r\n });\r\n }\r\n\r\n chatResized(event) {\r\n if (this.layout) {\r\n this.layout();\r\n }\r\n }\r\n\r\n collapseChat() {\r\n this.chatCollapsed = true;\r\n of(null)\r\n .pipe(delay(200))\r\n .subscribe((result) => {\r\n this.chatResized(null);\r\n });\r\n }\r\n\r\n openChat(elem: LobbyChatComponent) {\r\n this.chatCollapsed = false;\r\n of(null)\r\n .pipe(delay(200))\r\n .subscribe((result) => {\r\n this.chatResized(null);\r\n elem.scrollToBottom(false);\r\n });\r\n }\r\n\r\n handleSelection(event) {\r\n if (this.chatMessage == null) {\r\n this.chatMessage = '';\r\n }\r\n\r\n this.chatMessage = this.chatMessage + event.char;\r\n this.toggled = false;\r\n this.chatbox.nativeElement.focus();\r\n }\r\n\r\n fullscreen() {\r\n this.ref.detectChanges();\r\n let elem = this.fullScreen.nativeElement;\r\n let doc = document;\r\n if (!this.isFullScreen) {\r\n if (elem.requestFullscreen) {\r\n elem.requestFullscreen();\r\n } else if (elem.mozRequestFullScreen) {\r\n /* Firefox */\r\n elem.mozRequestFullScreen();\r\n } else if (elem.webkitRequestFullscreen) {\r\n /* Chrome, Safari and Opera */\r\n elem.webkitRequestFullscreen();\r\n } else if (elem.msRequestFullscreen) {\r\n /* IE/Edge */\r\n elem.msRequestFullscreen();\r\n }\r\n setTimeout(() => {\r\n this.layout();\r\n this.isFullScreen = true;\r\n }, 500);\r\n } else {\r\n if (document.exitFullscreen) {\r\n doc.exitFullscreen();\r\n } else if (doc.mozCancelFullScreen) {\r\n /* Firefox */\r\n doc.mozCancelFullScreen();\r\n } else if (doc.webkitExitFullscreen) {\r\n /* Chrome, Safari and Opera */\r\n doc.webkitExitFullscreen();\r\n } else if (doc.msExitFullscreen) {\r\n /* IE/Edge */\r\n doc.msExitFullscreen();\r\n }\r\n setTimeout(() => {\r\n this.isFullScreen = false;\r\n this.layout();\r\n }, 500);\r\n }\r\n }\r\n\r\n @HostListener('document:fullscreenchange', ['$event'])\r\n @HostListener('document:webkitfullscreenchange', ['$event'])\r\n @HostListener('document:mozfullscreenchange', ['$event'])\r\n @HostListener('document:MSFullscreenChange', ['$event'])\r\n exit(ev) {\r\n if (this.isFullScreen) {\r\n of(null)\r\n .pipe(delay(3000))\r\n .subscribe((result) => {\r\n this.isFullScreen = false;\r\n console.log('exiting');\r\n this.layout();\r\n });\r\n }\r\n }\r\n\r\n @HostListener('window:resize', ['$event'])\r\n resize(evt) {\r\n this.layout();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n document.body.style.backgroundColor = '#fff';\r\n\r\n this.routeSubscription.unsubscribe();\r\n\r\n if (this.connection) {\r\n this.connection.stop();\r\n }\r\n\r\n if (this.publisher) {\r\n this.publisher.destroy();\r\n }\r\n\r\n if (this.screenPublisher) {\r\n this.screenPublisher.destroy();\r\n }\r\n\r\n if (this.session) {\r\n this.session.disconnect();\r\n }\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { RouterModule } from '@angular/router';\r\nimport { NgbModalModule } from '@ng-bootstrap/ng-bootstrap';\r\nimport { IsAuthenticatedGuard } from './_guards/isAuthenticated.gaurd';\r\nimport { ApplicationPipesModule } from './_shared/modules/application-pipes.module';\r\nimport { LobbyComponent } from './lobbies/lobby.component';\r\nimport { LobbyChatComponent } from './lobbies/chat/lobby-chat.component';\r\nimport { LobbyPeopleComponent } from './lobbies/people/lobby-people.component';\r\n\r\n@NgModule({\r\n declarations:[\r\n LobbyComponent,\r\n LobbyChatComponent,\r\n LobbyPeopleComponent\r\n ],\r\n entryComponents:[],\r\n imports: [\r\n NgbModalModule,\r\n ApplicationPipesModule,\r\n RouterModule.forChild([\r\n { path: ':id', component: LobbyComponent, canActivate: [IsAuthenticatedGuard] },\r\n ])\r\n ]\r\n})\r\n export class LobbyModule{}\r\n"]}