{"version":3,"file":"122.cf82633efe9620f1.js","mappings":"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","names":["i0","ctx_r20","VisitorLogComponent","constructor","eventService","exhibitService","auth","toaster","this","EventRole","EventEmitter","ngOnInit","user","getUser","activeUsers","initSignalR","getActiveUsers","initialized","exhibit","id","subscribe","usersUpdated","emit","connection","on","exhibitId","mergeUser","index","findIndex","x","push","close","closed","selectors","ctx_r19","ctx_r21","ctx_r23","ctx_r25","ctx_r27","ctx_r29","ctx_r31","ctx_r33","ctx_r45","ctx_r47","ctx_r48","ctx_r49","ctx_r52","ctx_r54","ctx_r55","ctx_r56","ctx_r57","ctx_r58","ctx_r59","ctx_r60","ctx_r61","ctx_r62","ctx_r64","initLayoutContainer","require","ExhibitDashboardComponent","modalService","renderer","opentokService","ref","route","router","Array","document","body","style","backgroundColor","zE","preview","snapshot","data","routeSubscription","paramMap","param","parseInt","get","getExhibitById","InitSignalR","InitOpenTok","checkAndDisplayPreviewError","messageDialog","HubConnectionBuilder","withUrl","accessTokenFactory","getToken","withAutomaticReconnect","DefaultReconnectPolicy","build","start","then","invoke","name","message","userId","console","log","messages","ChatViewModel","scrollToBottom","of","pipe","delay","result","messageContainer","nativeElement","scrollTop","scrollHeight","detectChanges","layout","webRTCLayoutContainer","initSessionForExhibits","session","event","stream","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","navigate","confirmDialog","sendMessage","firstName","lastName","chatMessage","shareScreen","screenPublisher","publishScreen","screenPublishing","techSupportClicked","userCount","filter","connected","length","randomUserIds","map","slice","stopScreenSharing","handleSelection","char","toggled","chatbox","focus","fullscreen","elem","fullScreen","doc","isFullScreen","exitFullscreen","n","mozCancelFullScreen","webkitExitFullscreen","msExitFullscreen","requestFullscreen","t","mozRequestFullScreen","webkitRequestFullscreen","msRequestFullscreen","exit","ev","resize","evt","ngOnDestroy","unsubscribe","stop","disconnect","ctx","ctx_r3","ExhibitVideoModalComponent","actieveModal","sanitizer","url1","url2","url3","url","indexOf","youtubeVideoId","youtubeUrl","bypassSecurityTrustResourceUrl","vimeoId","vimeoUrl","ctx_r5","ctx_r7","ExhibitMaterialsComponent","materialsDownloaded","filesDownloaded","ctx_r15","ctx_r17","ctx_r35","ctx_r36","ctx_r37","ctx_r40","ctx_r41","ctx_r42","ctx_r43","ctx_r44","ctx_r46","ctx_r50","ExhibitorBoothComponent","checkAndShowVideo","introVideoAssetPath","turnedOnCamera","checkIn","websiteClicked","organizationSlug","fullScreenContainer","off","ExhibitsModule","NgbModalModule","ApplicationPipesModule","RouterModule","path","component","title"],"sourceRoot":"webpack:///","sources":["./src/app/exhibits/exhibit-dashboard/visitor-log/visitor-log.component.html","./src/app/exhibits/exhibit-dashboard/visitor-log/visitor-log.component.ts","./src/app/exhibits/exhibit-dashboard/exhibit-dashboard.component.html","./src/app/exhibits/exhibit-dashboard/exhibit-dashboard.component.ts","./src/app/exhibits/public/exhibit-video-modal.component.html","./src/app/exhibits/public/exhibit-video-modal.component.ts","./src/app/exhibits/public/materials/exhibit-materials.component.html","./src/app/exhibits/public/materials/exhibit-materials.component.ts","./src/app/exhibits/public/exhibitor-booth.component.html","./src/app/exhibits/public/exhibitor-booth.component.ts","./src/app/exhibits.module.ts"],"sourcesContent":["
\r\n \r\n
\r\n
\r\n

Visitor Log

\r\n\r\n \r\n
\r\n
\r\n \r\n\r\n \r\n
\r\n Active\r\n In-Active\r\n
\r\n
\r\n
    \r\n \r\n
  • \r\n
    \r\n
    \r\n \r\n {{ activeUser.firstName }} {{ activeUser.lastName }} \r\n {{ activeUser.email }} \r\n
    \r\n\r\n \r\n = 0 && activeUser.engagementIndex <= 33\" class=\"btn btn-icon btn-soft-danger rounded-circle mb-3\">\r\n {{ activeUser.engagementIndex }}%\r\n \r\n 33 && activeUser.engagementIndex <= 70\" class=\"btn btn-icon btn-soft-warning rounded-circle mb-3\">\r\n {{ activeUser.engagementIndex }}%\r\n \r\n 70 && activeUser.engagementIndex <= 100\" class=\"btn btn-icon btn-soft-success rounded-circle mb-3\">\r\n {{ activeUser.engagementIndex }}%\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 {{ activeUser.email }} \r\n
    \r\n\r\n \r\n = 0 && activeUser.engagementIndex <= 33\" class=\"btn btn-icon btn-soft-danger rounded-circle mb-3\">\r\n {{ activeUser.engagementIndex }}%\r\n \r\n 33 && activeUser.engagementIndex <= 70\" class=\"btn btn-icon btn-soft-warning rounded-circle mb-3\">\r\n {{ activeUser.engagementIndex }}%\r\n \r\n 70 && activeUser.engagementIndex <= 100\" class=\"btn btn-icon btn-soft-success rounded-circle mb-3\">\r\n {{ activeUser.engagementIndex }}%\r\n \r\n \r\n\r\n \r\n
    \r\n
  • \r\n
    \r\n
\r\n
\r\n
\r\n Download user data\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 } from 'src/app/_models/generatedModels';\r\nimport { HubConnection } from '@microsoft/signalr';\r\nimport { EventService, LiveEventService, ExhibitService } 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\n\r\n@Component({\r\n selector: 'visitor-log',\r\n templateUrl: 'visitor-log.component.html',\r\n})\r\nexport class VisitorLogComponent implements OnInit {\r\n initialized = false;\r\n @Input() exhibit: ExhibitDesignerViewModel;\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 activeUsers: ActiveExhibitUserViewModel[];\r\n user: UserAuthenticationViewModel;\r\n\r\n active:boolean = true;\r\n\r\n constructor(private eventService: LiveEventService, private exhibitService: ExhibitService, public auth: AuthenticationService, private toaster: ToasterService) {}\r\n\r\n ngOnInit(): void {\r\n this.user = this.auth.getUser();\r\n this.activeUsers = [];\r\n this.initSignalR();\r\n this.getActiveUsers();\r\n this.initialized = true;\r\n }\r\n\r\n getActiveUsers() {\r\n this.exhibitService.getActiveUsers(this.exhibit.id).subscribe((activeUsers) => {\r\n this.activeUsers = activeUsers;\r\n this.usersUpdated.emit(activeUsers);\r\n // activeUsers.forEach((user) => {\r\n // this.mergeUser(user);\r\n // });\r\n });\r\n }\r\n\r\n initSignalR() {\r\n this.connection.on('userDisconnected', (exhibitId: number, user: ActiveExhibitUserViewModel) => {\r\n if (exhibitId !== this.exhibit.id) {\r\n return;\r\n }\r\n this.mergeUser(user);\r\n });\r\n\r\n this.connection.on('userConnected', (exhibitId: number, user: ActiveExhibitUserViewModel) => {\r\n if (exhibitId !== this.exhibit.id) {\r\n return;\r\n }\r\n this.getActiveUsers();\r\n });\r\n\r\n this.connection.on('activeUserUpdated', (exhibitId: number, user: ActiveExhibitUserViewModel) => {\r\n if (exhibitId !== this.exhibit.id) {\r\n return;\r\n }\r\n this.mergeUser(user);\r\n });\r\n }\r\n\r\n mergeUser(user: ActiveExhibitUserViewModel) {\r\n let index = this.activeUsers.findIndex((x) => x.id === user.id);\r\n if (index === -1) {\r\n this.activeUsers.push(user);\r\n } else {\r\n this.activeUsers[index] = user;\r\n }\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
\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 {{ 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
\r\n
\r\n
\r\n
\r\n \r\n
\r\n","import { Component, OnInit, OnDestroy, ElementRef, ViewChild, ChangeDetectorRef, Renderer2, HostListener } from '@angular/core';\r\nimport { ExhibitService } from 'src/app/_services/generatedServices';\r\nimport { Subscription, of } from 'rxjs';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { ExhibitDesignerViewModel, UserAuthenticationViewModel, ActiveExhibitUserViewModel } 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\nconst initLayoutContainer = require('opentok-layout-js');\r\ndeclare var zE: any;\r\n\r\n@Component({\r\n selector: 'bxl-exhibit-dashboard',\r\n templateUrl: 'exhibit-dashboard.component.html',\r\n})\r\nexport class ExhibitDashboardComponent implements OnInit, OnDestroy {\r\n initialized = false;\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 exhibitId: 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 preview: boolean = false;\r\n\r\n exhibit: ExhibitDesignerViewModel;\r\n private routeSubscription: Subscription;\r\n @ViewChild('messageContainer') private messageContainer: ElementRef;\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 exhibitService: ExhibitService, 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.preview = this.route.snapshot.data.preview;\r\n\r\n this.routeSubscription = this.route.paramMap.subscribe((param) => {\r\n this.exhibitId = parseInt(param.get('id'));\r\n\r\n this.exhibitService.getExhibitById(this.exhibitId).subscribe((exhibit) => {\r\n this.exhibit = exhibit;\r\n this.InitSignalR();\r\n this.InitOpenTok();\r\n });\r\n });\r\n }\r\n\r\n checkAndDisplayPreviewError(): boolean {\r\n if (this.preview) {\r\n this.toaster.messageDialog('You are in preview mode, and this function is not available.', 'Preview Mode').subscribe();\r\n return this.preview;\r\n }\r\n return this.preview;\r\n }\r\n\r\n InitSignalR(): any {\r\n this.connection = new HubConnectionBuilder()\r\n .withUrl('/exhibitHub', { 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('connectToExhibit', this.exhibitId);\r\n });\r\n\r\n this.connection.on('postChat', (id: number, name: string, message: string, userId: number, exhibitId: number) => {\r\n console.log('chat received' + exhibitId);\r\n if (exhibitId === this.exhibitId) {\r\n this.messages.push(new ChatViewModel(id, name, message, userId));\r\n this.scrollToBottom();\r\n }\r\n });\r\n\r\n this.initialized = true;\r\n }\r\n\r\n scrollToBottom(): void {\r\n of(null)\r\n .pipe(delay(100))\r\n .subscribe((result) => {\r\n try {\r\n this.messageContainer.nativeElement.scrollTop = this.messageContainer.nativeElement.scrollHeight;\r\n } catch (err) {}\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 .initSessionForExhibits(this.exhibitId)\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: 'off' },\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 if (this.checkAndDisplayPreviewError()) {\r\n return;\r\n }\r\n\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: 'billbob', width: '100%', insertDefaultUI: true, style: { nameDisplayMode: 'off', 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: 'billbob', width: '100%', insertDefaultUI: true, style: { nameDisplayMode: 'off', 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 if (this.preview) {\r\n this.router.navigate(['/account/exhibits']);\r\n return;\r\n }\r\n\r\n this.toaster.confirmDialog('Are you sure you want to leave this exhibit?', 'Exit?', 'Yes, Exit', 'Cancel').subscribe((result) => {\r\n if (result) {\r\n this.router.navigate(['/account/exhibits']);\r\n }\r\n });\r\n }\r\n\r\n public sendMessage() {\r\n if (this.checkAndDisplayPreviewError()) {\r\n return;\r\n }\r\n\r\n this.connection.invoke('postChat', this.user.firstName + ' ' + this.user.lastName, this.chatMessage, this.user.id, this.exhibitId);\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\r\n usersUpdated(event: ActiveExhibitUserViewModel[]) {\r\n this.userCount = event.filter((x) => x.connected).length;\r\n this.randomUserIds = event\r\n .filter((x) => x.connected)\r\n .map((x) => x.id)\r\n .slice(0, 6);\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 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 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}\r\n","
\r\n
\r\n
\r\n

Welcome Video

\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 } from '@angular/core';\r\nimport { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';\r\nimport { DomSanitizer, SafeUrl } from '@angular/platform-browser';\r\n\r\n@Component({\r\n selector: 'bxl-exhibit-video-modal',\r\n templateUrl: 'exhibit-video-modal.component.html',\r\n})\r\nexport class ExhibitVideoModalComponent implements OnInit {\r\n initialized = false;\r\n\r\n @Input()\r\n url: string;\r\n\r\n\r\n youtubeUrl: SafeUrl;\r\n vimeoUrl: SafeUrl;\r\n\r\n constructor(public actieveModal: NgbActiveModal, private sanitizer: DomSanitizer) {}\r\n\r\n ngOnInit(): void {\r\n let url1 = 'https://youtu.be/';\r\n let url2 = 'https://www.youtube.com/watch?v=';\r\n let url3 = 'https://vimeo.com/';\r\n\r\n let index = this.url.indexOf(url1);\r\n if (index > -1) {\r\n let youtubeVideoId = this.url.slice(index + url1.length);\r\n this.youtubeUrl = this.sanitizer.bypassSecurityTrustResourceUrl('https://www.youtube.com/embed/' + youtubeVideoId + '?autoplay=1');\r\n }\r\n\r\n index = this.url.indexOf(url2);\r\n if (index > -1) {\r\n let youtubeVideoId = this.url.slice(index + url2.length);\r\n this.youtubeUrl = this.sanitizer.bypassSecurityTrustResourceUrl('https://www.youtube.com/embed/' + youtubeVideoId + '?autoplay=1');\r\n }\r\n\r\n index = this.url.indexOf(url3);\r\n if (index > -1) {\r\n let vimeoId = this.url.slice(index + url3.length);\r\n this.vimeoUrl = this.sanitizer.bypassSecurityTrustResourceUrl('https://player.vimeo.com/video/' + vimeoId + '?autoplay=1');\r\n }\r\n\r\n\r\n this.initialized = true;\r\n }\r\n\r\n\r\n}\r\n","
\r\n \r\n
\r\n
\r\n

Exhibit Materials

\r\n\r\n \r\n
\r\n
\r\n \r\n\r\n \r\n\r\n
\r\n
\r\n
\r\n

No Materials

\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n

\r\n {{ material.description }}\r\n

\r\n
\r\n
\r\n
\r\n
\r\n","import { Component, OnInit, Input, ViewChild, ElementRef, Output, EventEmitter, AfterViewChecked, OnDestroy } from '@angular/core';\r\nimport { EventViewModel, LiveEventViewModel, UserAuthenticationViewModel, ExhibitDesignerViewModel } from 'src/app/_models/generatedModels';\r\nimport { ChatViewModel } from 'src/app/_models/models';\r\nimport { AuthenticationService } from 'src/app/_services/authentication.service';\r\nimport { HubConnection } from '@microsoft/signalr';\r\nimport { of, interval, Subscription } from 'rxjs';\r\nimport { ExhibitService } from 'src/app/_services/generatedServices';\r\n\r\n@Component({\r\n selector: 'exhibit-materials',\r\n templateUrl: 'exhibit-materials.component.html',\r\n})\r\nexport class ExhibitMaterialsComponent implements OnInit {\r\n initialized = false;\r\n\r\n @Input() exhibit: ExhibitDesignerViewModel;\r\n @Output()\r\n closed = new EventEmitter();\r\n\r\n constructor(public auth: AuthenticationService, private exhibitService: ExhibitService) {}\r\n\r\n ngOnInit(): void {\r\n this.initialized = true;\r\n }\r\n\r\n materialsDownloaded(){\r\n this.exhibitService.filesDownloaded(this.exhibit.id).subscribe();\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\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
\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 \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 {{ message.user.firstName + ' ' + message.user.lastName }}\r\n

    \r\n
  • \r\n
  • \r\n {{ message.name }}\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
\r\n
\r\n
\r\n \r\n
\r\n","import { Component, OnInit, OnDestroy, ElementRef, ViewChild, ChangeDetectorRef, Renderer2, HostListener } from '@angular/core';\r\nimport { ExhibitService } from 'src/app/_services/generatedServices';\r\nimport { Subscription, of } from 'rxjs';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { ExhibitDesignerViewModel, UserAuthenticationViewModel } 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 { mapTo, delay } from 'rxjs/operators';\r\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\r\nimport { ExhibitVideoModalComponent } from './exhibit-video-modal.component';\r\nconst initLayoutContainer = require('opentok-layout-js');\r\ndeclare var zE: any;\r\n\r\n@Component({\r\n selector: 'bxl-exhibitor-booth',\r\n templateUrl: 'exhibitor-booth.component.html',\r\n})\r\nexport class ExhibitorBoothComponent implements OnInit, OnDestroy {\r\n initialized = false;\r\n showDownloads = false;\r\n session: OT.Session;\r\n public user: UserAuthenticationViewModel;\r\n exhibitId: number;\r\n public selectedDevice: SelectedDevice;\r\n public connection: HubConnection;\r\n public isFullScreen: boolean;\r\n publisher: OT.Publisher;\r\n @ViewChild('fullScreenContainer') fullScreenContainer: ElementRef;\r\n publishing: Boolean;\r\n public publishingAudio = true;\r\n public publishingVideo = true;\r\n public chatMessage: string;\r\n public messages: ChatViewModel[] = new Array();\r\n toggled: boolean = false;\r\n showPicker: boolean = false;\r\n preview: boolean = false;\r\n\r\n exhibit: ExhibitDesignerViewModel;\r\n private routeSubscription: Subscription;\r\n @ViewChild('messageContainer') private messageContainer: ElementRef;\r\n @ViewChild('webRTCLayoutContainer') webRTCLayoutContainer: ElementRef;\r\n @ViewChild('chatbox') private chatbox: ElementRef;\r\n layout: any;\r\n\r\n constructor(private exhibitService: ExhibitService, 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 console.log(this.user);\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.preview = this.route.snapshot.data.preview;\r\n\r\n this.routeSubscription = this.route.paramMap.subscribe((param) => {\r\n this.exhibitId = parseInt(param.get('id'));\r\n\r\n this.exhibitService.getExhibitById(this.exhibitId).subscribe((exhibit) => {\r\n this.exhibit = exhibit;\r\n this.InitSignalR();\r\n this.InitOpenTok();\r\n });\r\n });\r\n }\r\n\r\n checkAndDisplayPreviewError(): boolean {\r\n if (this.preview) {\r\n this.toaster.messageDialog('You are in preview mode, and this function is not available.', 'Preview Mode').subscribe();\r\n return this.preview;\r\n }\r\n return this.preview;\r\n }\r\n\r\n InitSignalR(): any {\r\n this.connection = new HubConnectionBuilder()\r\n .withUrl('/exhibitHub', { 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('connectToExhibit', this.exhibitId);\r\n });\r\n\r\n this.connection.on('postChat', (id: number, name: string, message: string, userId: number, exhibitId: number) => {\r\n console.log('chat received' + exhibitId);\r\n if (exhibitId === this.exhibitId) {\r\n this.messages.push(new ChatViewModel(id, name, message, userId));\r\n this.scrollToBottom();\r\n }\r\n });\r\n\r\n this.initialized = true;\r\n this.checkAndShowVideo();\r\n }\r\n\r\n techSupportClicked() {\r\n zE('webWidget', 'show');\r\n zE('webWidget', 'open');\r\n }\r\n\r\n checkAndShowVideo() {\r\n if (this.exhibit.introVideoAssetPath) {\r\n const modalRef = this.modalService.open(ExhibitVideoModalComponent, { size: 'lg', ariaLabelledBy: 'modal-basic-title' });\r\n modalRef.componentInstance.url = this.exhibit.introVideoAssetPath;\r\n modalRef.result.then(\r\n (result) => {},\r\n (reason) => {}\r\n );\r\n return;\r\n }\r\n }\r\n\r\n scrollToBottom(): void {\r\n of(null)\r\n .pipe(delay(100))\r\n .subscribe((result) => {\r\n try {\r\n this.messageContainer.nativeElement.scrollTop = this.messageContainer.nativeElement.scrollHeight;\r\n } catch (err) {}\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 .initSessionForExhibits(this.exhibitId)\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\r\n let subscription = this.session.subscribe(event.stream, 'webRTCLayoutContainer', {\r\n insertMode: 'append',\r\n style: { nameDisplayMode: 'off' },\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 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 if (this.checkAndDisplayPreviewError()) {\r\n return;\r\n }\r\n\r\n this.exhibitService.turnedOnCamera(this.exhibitId).subscribe();\r\n\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: 'billbob', width: '100%', insertDefaultUI: true, style: { nameDisplayMode: 'off', 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: 'billbob', width: '100%', insertDefaultUI: true, style: { nameDisplayMode: 'off', 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 }\r\n });\r\n }\r\n\r\n checkIn() {\r\n this.toaster.confirmDialog('Are you sure you want to check in? This will share your name and email with the exhibitor?', 'Check In?').subscribe((result) => {\r\n if (result) {\r\n this.exhibitService.checkIn(this.exhibitId).subscribe();\r\n }\r\n });\r\n }\r\n\r\n websiteClicked() {\r\n this.exhibitService.websiteClicked(this.exhibitId).subscribe();\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.session.unpublish(this.publisher);\r\n this.publishing = false;\r\n this.layout();\r\n }\r\n\r\n exitPage() {\r\n if (this.preview) {\r\n this.router.navigate(['/account/exhibits']);\r\n return;\r\n }\r\n\r\n this.toaster.confirmDialog('Are you sure you want to leave this exhibit?', 'Exit?', 'Yes, Exit', 'Cancel').subscribe((result) => {\r\n if (result) {\r\n this.router.navigate(['/', this.exhibit.organizationSlug, 'exhibits']);\r\n }\r\n });\r\n }\r\n\r\n public sendMessage() {\r\n if (this.checkAndDisplayPreviewError()) {\r\n return;\r\n }\r\n\r\n this.connection.invoke('postChat', this.user.firstName + ' ' + this.user.lastName, this.chatMessage, this.user.id, this.exhibitId);\r\n this.chatMessage = null;\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 fullscreen() {\r\n let elem = this.fullScreenContainer.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 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.session) {\r\n this.session.off('streamCreated');\r\n this.session.off('streamDestroyed');\r\n this.session.disconnect();\r\n }\r\n\r\n zE('webWidget', 'show');\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 { ExhibitDashboardComponent } from './exhibits/exhibit-dashboard/exhibit-dashboard.component';\r\nimport { VisitorLogComponent } from './exhibits/exhibit-dashboard/visitor-log/visitor-log.component';\r\nimport { ExhibitVideoModalComponent } from './exhibits/public/exhibit-video-modal.component';\r\nimport { ExhibitorBoothComponent } from './exhibits/public/exhibitor-booth.component';\r\nimport { ExhibitMaterialsComponent } from './exhibits/public/materials/exhibit-materials.component';\r\nimport { IsAuthenticatedGuard } from './_guards/isAuthenticated.gaurd';\r\nimport { ApplicationPipesModule } from './_shared/modules/application-pipes.module';\r\n\r\n@NgModule({\r\n declarations:[\r\n ExhibitorBoothComponent,\r\n ExhibitDashboardComponent,\r\n ExhibitMaterialsComponent,\r\n VisitorLogComponent,\r\n ExhibitVideoModalComponent\r\n ],\r\n entryComponents:[\r\n ExhibitVideoModalComponent,\r\n ],\r\n imports:[\r\n NgbModalModule,\r\n ApplicationPipesModule,\r\n RouterModule.forChild([\r\n { path: ':id', component: ExhibitorBoothComponent, data: { preview: false, title:'View Exhibit' } },\r\n { path: ':id/preview', component: ExhibitorBoothComponent, data: { preview: true, title:'Preview Exhibit' } },\r\n { path: ':id/dashboard', component: ExhibitDashboardComponent, data: { title: \"Exhibit Dashboard\"} },\r\n ])\r\n ],\r\n exports:[]\r\n})\r\nexport class ExhibitsModule{}\r\n"]}