@rtsee/ngx 0.0.38 → 0.0.40

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.
Files changed (114) hide show
  1. package/dist/ngx/esm2022/lib/common/components/preloader/preloader.component.mjs +33 -0
  2. package/dist/ngx/esm2022/lib/components/rtsee/rtsee-controls/rtsee-controls.component.mjs +25 -0
  3. package/dist/ngx/esm2022/lib/components/rtsee/rtsee.component.mjs +32 -0
  4. package/dist/ngx/esm2022/lib/components/rtsee-container/rtsee-container.component.mjs +11 -0
  5. package/dist/ngx/esm2022/lib/components/rtsee-events-dashboard/components/event-thumbnail/event-thumbnail.component.mjs +76 -0
  6. package/dist/ngx/esm2022/lib/components/rtsee-events-dashboard/components/rtsee-events-dashboard-client/rtsee-events-dashboard-client.component.mjs +11 -0
  7. package/dist/ngx/esm2022/lib/components/rtsee-events-dashboard/components/rtsee-events-dashboard-client-thumbnail/rtsee-events-dashboard-client-thumbnail.component.mjs +33 -0
  8. package/dist/ngx/esm2022/lib/components/rtsee-events-dashboard/components/rtsee-events-dashboard-session/rtsee-events-dashboard-session.component.mjs +21 -0
  9. package/dist/ngx/esm2022/lib/components/rtsee-events-dashboard/rtsee-events-dashboard.component.mjs +16 -0
  10. package/dist/ngx/esm2022/lib/components/rtsee-messenger/chat/chat.component.mjs +19 -0
  11. package/dist/ngx/esm2022/lib/components/rtsee-messenger/chat-input/chat-input.component.mjs +33 -0
  12. package/dist/ngx/esm2022/lib/components/rtsee-messenger/chat-thumbnail/chat-thumbnail.component.mjs +27 -0
  13. package/dist/ngx/esm2022/lib/components/rtsee-messenger/chats-list/chats-list.component.mjs +22 -0
  14. package/dist/ngx/esm2022/lib/components/rtsee-messenger/main-menu/components/contacts-multiselect/contacts-multiselect.component.mjs +18 -0
  15. package/dist/ngx/esm2022/lib/components/rtsee-messenger/main-menu/components/manage-chat/manage-chat.component.mjs +21 -0
  16. package/dist/ngx/esm2022/lib/components/rtsee-messenger/main-menu/components/search/search.component.mjs +31 -0
  17. package/dist/ngx/esm2022/lib/components/rtsee-messenger/main-menu/main-menu.component.mjs +32 -0
  18. package/dist/ngx/esm2022/lib/components/rtsee-messenger/message/components/message-time-and-status/message-time-and-status.component.mjs +24 -0
  19. package/dist/ngx/esm2022/lib/components/rtsee-messenger/message/message.component.mjs +58 -0
  20. package/dist/ngx/esm2022/lib/components/rtsee-messenger/message-widgets/call-widget/call-widget.component.mjs +34 -0
  21. package/dist/ngx/esm2022/lib/components/rtsee-messenger/messages-list/messages-list.component.mjs +70 -0
  22. package/dist/ngx/esm2022/lib/components/rtsee-messenger/messenger/messenger.component.mjs +31 -0
  23. package/dist/ngx/esm2022/lib/components/rtsee-messenger/messenger-header/messenger-header.component.mjs +33 -0
  24. package/dist/ngx/esm2022/lib/components/rtsee-messenger/profile/profile.component.mjs +26 -0
  25. package/dist/ngx/esm2022/lib/components/rtsee-peer/rtsee-peer.component.mjs +36 -0
  26. package/dist/ngx/esm2022/lib/components/rtsee-peers-list/rtsee-peers-list.component.mjs +11 -0
  27. package/dist/ngx/esm2022/lib/components/rtsee-settings/rtsee-settings.component.mjs +43 -0
  28. package/dist/ngx/esm2022/lib/components/rtsee-soundbar/rtsee-soundbar.component.mjs +59 -0
  29. package/dist/ngx/esm2022/lib/directives/shave.directive.mjs +22 -0
  30. package/dist/ngx/esm2022/lib/directives/widget.directive.mjs +17 -0
  31. package/dist/ngx/esm2022/lib/ngx.module.mjs +141 -0
  32. package/dist/ngx/esm2022/lib/ngx.service.mjs +17 -0
  33. package/dist/ngx/esm2022/lib/services/default-images.service.mjs +14 -0
  34. package/dist/ngx/esm2022/lib/services/events-widgets.service.mjs +23 -0
  35. package/dist/ngx/esm2022/lib/services/message-widgets.service.mjs +26 -0
  36. package/dist/ngx/esm2022/lib/services/time-format-helper.service.mjs +92 -0
  37. package/dist/ngx/fesm2022/rtsee-ngx.mjs +1089 -0
  38. package/dist/ngx/fesm2022/rtsee-ngx.mjs.map +1 -0
  39. package/dist/ngx/lib/common/components/preloader/preloader.component.d.ts +1 -1
  40. package/dist/ngx/lib/components/rtsee/rtsee-controls/rtsee-controls.component.d.ts +1 -1
  41. package/dist/ngx/lib/components/rtsee/rtsee.component.d.ts +1 -1
  42. package/dist/ngx/lib/components/rtsee-container/rtsee-container.component.d.ts +1 -1
  43. package/dist/ngx/lib/components/rtsee-events-dashboard/components/event-thumbnail/event-thumbnail.component.d.ts +1 -1
  44. package/dist/ngx/lib/components/rtsee-events-dashboard/components/rtsee-events-dashboard-client/rtsee-events-dashboard-client.component.d.ts +1 -1
  45. package/dist/ngx/lib/components/rtsee-events-dashboard/components/rtsee-events-dashboard-client-thumbnail/rtsee-events-dashboard-client-thumbnail.component.d.ts +1 -1
  46. package/dist/ngx/lib/components/rtsee-events-dashboard/components/rtsee-events-dashboard-session/rtsee-events-dashboard-session.component.d.ts +1 -1
  47. package/dist/ngx/lib/components/rtsee-events-dashboard/rtsee-events-dashboard.component.d.ts +1 -1
  48. package/dist/ngx/lib/components/rtsee-messenger/chat/chat.component.d.ts +1 -1
  49. package/dist/ngx/lib/components/rtsee-messenger/chat-input/chat-input.component.d.ts +1 -1
  50. package/dist/ngx/lib/components/rtsee-messenger/chat-thumbnail/chat-thumbnail.component.d.ts +1 -1
  51. package/dist/ngx/lib/components/rtsee-messenger/chats-list/chats-list.component.d.ts +1 -1
  52. package/dist/ngx/lib/components/rtsee-messenger/main-menu/components/contacts-multiselect/contacts-multiselect.component.d.ts +1 -1
  53. package/dist/ngx/lib/components/rtsee-messenger/main-menu/components/manage-chat/manage-chat.component.d.ts +1 -1
  54. package/dist/ngx/lib/components/rtsee-messenger/main-menu/components/search/search.component.d.ts +2 -2
  55. package/dist/ngx/lib/components/rtsee-messenger/main-menu/main-menu.component.d.ts +1 -1
  56. package/dist/ngx/lib/components/rtsee-messenger/message/components/message-time-and-status/message-time-and-status.component.d.ts +1 -1
  57. package/dist/ngx/lib/components/rtsee-messenger/message/message.component.d.ts +1 -1
  58. package/dist/ngx/lib/components/rtsee-messenger/message-widgets/call-widget/call-widget.component.d.ts +1 -1
  59. package/dist/ngx/lib/components/rtsee-messenger/messages-list/messages-list.component.d.ts +1 -1
  60. package/dist/ngx/lib/components/rtsee-messenger/messenger/messenger.component.d.ts +1 -1
  61. package/dist/ngx/lib/components/rtsee-messenger/messenger-header/messenger-header.component.d.ts +1 -1
  62. package/dist/ngx/lib/components/rtsee-messenger/profile/profile.component.d.ts +1 -1
  63. package/dist/ngx/lib/components/rtsee-peer/rtsee-peer.component.d.ts +1 -1
  64. package/dist/ngx/lib/components/rtsee-peers-list/rtsee-peers-list.component.d.ts +1 -1
  65. package/dist/ngx/lib/components/rtsee-settings/rtsee-settings.component.d.ts +1 -1
  66. package/dist/ngx/lib/components/rtsee-soundbar/rtsee-soundbar.component.d.ts +1 -1
  67. package/dist/ngx/lib/directives/shave.directive.d.ts +1 -1
  68. package/dist/ngx/lib/directives/widget.directive.d.ts +1 -1
  69. package/dist/ngx/package.json +13 -6
  70. package/package.json +30 -38
  71. package/dist/ngx/bundles/rtsee-ngx.umd.js +0 -1208
  72. package/dist/ngx/bundles/rtsee-ngx.umd.js.map +0 -1
  73. package/dist/ngx/esm2015/lib/common/components/preloader/preloader.component.js +0 -34
  74. package/dist/ngx/esm2015/lib/components/rtsee/rtsee-controls/rtsee-controls.component.js +0 -27
  75. package/dist/ngx/esm2015/lib/components/rtsee/rtsee.component.js +0 -33
  76. package/dist/ngx/esm2015/lib/components/rtsee-container/rtsee-container.component.js +0 -14
  77. package/dist/ngx/esm2015/lib/components/rtsee-events-dashboard/components/event-thumbnail/event-thumbnail.component.js +0 -73
  78. package/dist/ngx/esm2015/lib/components/rtsee-events-dashboard/components/rtsee-events-dashboard-client/rtsee-events-dashboard-client.component.js +0 -14
  79. package/dist/ngx/esm2015/lib/components/rtsee-events-dashboard/components/rtsee-events-dashboard-client-thumbnail/rtsee-events-dashboard-client-thumbnail.component.js +0 -32
  80. package/dist/ngx/esm2015/lib/components/rtsee-events-dashboard/components/rtsee-events-dashboard-session/rtsee-events-dashboard-session.component.js +0 -22
  81. package/dist/ngx/esm2015/lib/components/rtsee-events-dashboard/rtsee-events-dashboard.component.js +0 -18
  82. package/dist/ngx/esm2015/lib/components/rtsee-messenger/chat/chat.component.js +0 -20
  83. package/dist/ngx/esm2015/lib/components/rtsee-messenger/chat-input/chat-input.component.js +0 -37
  84. package/dist/ngx/esm2015/lib/components/rtsee-messenger/chat-thumbnail/chat-thumbnail.component.js +0 -27
  85. package/dist/ngx/esm2015/lib/components/rtsee-messenger/chats-list/chats-list.component.js +0 -23
  86. package/dist/ngx/esm2015/lib/components/rtsee-messenger/main-menu/components/contacts-multiselect/contacts-multiselect.component.js +0 -20
  87. package/dist/ngx/esm2015/lib/components/rtsee-messenger/main-menu/components/manage-chat/manage-chat.component.js +0 -23
  88. package/dist/ngx/esm2015/lib/components/rtsee-messenger/main-menu/components/search/search.component.js +0 -34
  89. package/dist/ngx/esm2015/lib/components/rtsee-messenger/main-menu/main-menu.component.js +0 -35
  90. package/dist/ngx/esm2015/lib/components/rtsee-messenger/message/components/message-time-and-status/message-time-and-status.component.js +0 -24
  91. package/dist/ngx/esm2015/lib/components/rtsee-messenger/message/message.component.js +0 -53
  92. package/dist/ngx/esm2015/lib/components/rtsee-messenger/message-widgets/call-widget/call-widget.component.js +0 -37
  93. package/dist/ngx/esm2015/lib/components/rtsee-messenger/messages-list/messages-list.component.js +0 -69
  94. package/dist/ngx/esm2015/lib/components/rtsee-messenger/messenger/messenger.component.js +0 -32
  95. package/dist/ngx/esm2015/lib/components/rtsee-messenger/messenger-header/messenger-header.component.js +0 -33
  96. package/dist/ngx/esm2015/lib/components/rtsee-messenger/profile/profile.component.js +0 -28
  97. package/dist/ngx/esm2015/lib/components/rtsee-peer/rtsee-peer.component.js +0 -35
  98. package/dist/ngx/esm2015/lib/components/rtsee-peers-list/rtsee-peers-list.component.js +0 -15
  99. package/dist/ngx/esm2015/lib/components/rtsee-settings/rtsee-settings.component.js +0 -42
  100. package/dist/ngx/esm2015/lib/components/rtsee-soundbar/rtsee-soundbar.component.js +0 -58
  101. package/dist/ngx/esm2015/lib/directives/shave.directive.js +0 -22
  102. package/dist/ngx/esm2015/lib/directives/widget.directive.js +0 -16
  103. package/dist/ngx/esm2015/lib/ngx.module.js +0 -143
  104. package/dist/ngx/esm2015/lib/ngx.service.js +0 -16
  105. package/dist/ngx/esm2015/lib/services/default-images.service.js +0 -16
  106. package/dist/ngx/esm2015/lib/services/events-widgets.service.js +0 -25
  107. package/dist/ngx/esm2015/lib/services/message-widgets.service.js +0 -28
  108. package/dist/ngx/esm2015/lib/services/time-format-helper.service.js +0 -92
  109. package/dist/ngx/fesm2015/rtsee-ngx.js +0 -1121
  110. package/dist/ngx/fesm2015/rtsee-ngx.js.map +0 -1
  111. /package/dist/ngx/{esm2015/lib/components/rtsee-messenger/main-menu/components/models/MainMenuState.js → esm2022/lib/components/rtsee-messenger/main-menu/components/models/MainMenuState.mjs} +0 -0
  112. /package/dist/ngx/{esm2015/public-api.js → esm2022/public-api.mjs} +0 -0
  113. /package/dist/ngx/{esm2015/rtsee-ngx.js → esm2022/rtsee-ngx.mjs} +0 -0
  114. /package/dist/ngx/{rtsee-ngx.d.ts → index.d.ts} +0 -0
@@ -1 +0,0 @@
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 <div class=\"rtsee-messenger-control-item\" (click)=\"call()\">\n <div class=\"rtsee-messenger-control-icon\">\n <span class=\"material-icons-outlined\">call</span>\n </div>\n <span>Call</span>\n </div>\n </li>\n <li class=\"rtsee-messenger-profile-control\">\n <div class=\"rtsee-messenger-control-item\" (click)=\"videoCall()\">\n <div class=\"rtsee-messenger-control-icon\">\n <span class=\"material-icons-outlined\">videocam</span>\n </div>\n <span>Video</span>\n </div>\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\">arrow_back</span>\n <span class=\"unread-count\" *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\">menu</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 >Messaging</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 } from '@rtsee/messenger';\nimport { IMessageThumbnail } from '@rtsee/common';\nimport { TimeFormatHelperService } from '../../../../../services/time-format-helper.service';\n\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-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\">done_all</span>\n </span>\n <span class=\"rtsee-messenger-message-time\">{{timeFormatService.formatTimeOrDate(message.createdAt)}}</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 { RTSeeMessenger } from '@rtsee/messenger';\nimport { RTSeeChatTypes, IMessageThumbnail } from '@rtsee/common';\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 class=\"message-tail\"></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 <div class=\"rtsee-messenger-control-item\" (click)=\"onNewGroupClicked()\">\n <div class=\"rtsee-messenger-control-icon\">\n <span class=\"material-icons-outlined\">people</span>\n </div>\n <span>New Group</span>\n </div>\n </li>\n <li>\n <div class=\"rtsee-messenger-control-item\" (click)=\"onNewChannelClicked()\">\n <div class=\"rtsee-messenger-control-icon\">\n <span class=\"material-icons-outlined\">campaign</span>\n </div>\n <span>New Channel</span>\n </div>\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,34 +0,0 @@
1
- import { Component, Input, ViewChild } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- export class PreloaderComponent {
4
- constructor() {
5
- this.viewBox = '0 0 100 100';
6
- this.d = 'M 50 96 a 46 46 0 0 1 0 -92 46 46 0 0 1 0 92';
7
- this.color = '#000000';
8
- if (this.diameter) {
9
- this.viewBox = `0 0 ${this.diameter} ${this.diameter}`;
10
- this.d = `M ${this.diameter / 2} ${this.diameter * 0.96} a ${this.diameter * 0.46} ${this.diameter * 0.46} 0 0 1 0 -${this.diameter * 0.92} ${this.diameter * 0.46} ${this.diameter * 0.46} 0 0 1 0 ${this.diameter * 0.92}`;
11
- }
12
- }
13
- ngOnInit() {
14
- //viewBox="0 0 100 100"
15
- //d="M 50 96 a 46 46 0 0 1 0 -92 46 46 0 0 1 0 92"
16
- }
17
- }
18
- PreloaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.1.2", ngImport: i0, type: PreloaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
19
- PreloaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.1.2", type: PreloaderComponent, selector: "rtsee-preloader", inputs: { diameter: "diameter", color: "color" }, viewQueries: [{ propertyName: "canvas", first: true, predicate: ["canvas"], descendants: true }], ngImport: i0, template: "<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" });
20
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.1.2", ngImport: i0, type: PreloaderComponent, decorators: [{
21
- type: Component,
22
- args: [{
23
- selector: 'rtsee-preloader',
24
- templateUrl: './preloader.component.html',
25
- }]
26
- }], ctorParameters: function () { return []; }, propDecorators: { canvas: [{
27
- type: ViewChild,
28
- args: ['canvas']
29
- }], diameter: [{
30
- type: Input
31
- }], color: [{
32
- type: Input
33
- }] } });
34
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlbG9hZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC9zcmMvbGliL2NvbW1vbi9jb21wb25lbnRzL3ByZWxvYWRlci9wcmVsb2FkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4L3NyYy9saWIvY29tbW9uL2NvbXBvbmVudHMvcHJlbG9hZGVyL3ByZWxvYWRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLEtBQUssRUFBVSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBTWhGLE1BQU0sT0FBTyxrQkFBa0I7SUFPN0I7UUFOQSxZQUFPLEdBQUcsYUFBYSxDQUFDO1FBQ3hCLE1BQUMsR0FBRyw4Q0FBOEMsQ0FBQztRQUkxQyxVQUFLLEdBQVksU0FBUyxDQUFDO1FBRWxDLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNqQixJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDdkQsSUFBSSxDQUFDLENBQUMsR0FBRyxLQUFLLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxNQUNyRCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQ2xCLElBQUksSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLGFBQWEsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLElBQ3ZELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFDbEIsSUFBSSxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksWUFBWSxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksRUFBRSxDQUFDO1NBQzVEO0lBQ0gsQ0FBQztJQUVELFFBQVE7UUFDTix1QkFBdUI7UUFDdkIsa0RBQWtEO0lBQ3BELENBQUM7OytHQXJCVSxrQkFBa0I7bUdBQWxCLGtCQUFrQiwyTUNOL0IsdUxBS0E7MkZEQ2Esa0JBQWtCO2tCQUo5QixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxpQkFBaUI7b0JBQzNCLFdBQVcsRUFBRSw0QkFBNEI7aUJBQzFDOzBFQUtzQixNQUFNO3NCQUExQixTQUFTO3VCQUFDLFFBQVE7Z0JBQ1YsUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIElucHV0LCBPbkluaXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdydHNlZS1wcmVsb2FkZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vcHJlbG9hZGVyLmNvbXBvbmVudC5odG1sJyxcbn0pXG5leHBvcnQgY2xhc3MgUHJlbG9hZGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgdmlld0JveCA9ICcwIDAgMTAwIDEwMCc7XG4gIGQgPSAnTSA1MCA5NiBhIDQ2IDQ2IDAgMCAxIDAgLTkyIDQ2IDQ2IDAgMCAxIDAgOTInO1xuXG4gIEBWaWV3Q2hpbGQoJ2NhbnZhcycpIGNhbnZhcz86IEVsZW1lbnRSZWY8U1ZHRWxlbWVudD47XG4gIEBJbnB1dCgpIGRpYW1ldGVyPzogbnVtYmVyO1xuICBASW5wdXQoKSBjb2xvcj86IHN0cmluZyA9ICcjMDAwMDAwJztcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgaWYgKHRoaXMuZGlhbWV0ZXIpIHtcbiAgICAgIHRoaXMudmlld0JveCA9IGAwIDAgJHt0aGlzLmRpYW1ldGVyfSAke3RoaXMuZGlhbWV0ZXJ9YDtcbiAgICAgIHRoaXMuZCA9IGBNICR7dGhpcy5kaWFtZXRlciAvIDJ9ICR7dGhpcy5kaWFtZXRlciAqIDAuOTZ9IGEgJHtcbiAgICAgICAgdGhpcy5kaWFtZXRlciAqIDAuNDZcbiAgICAgIH0gJHt0aGlzLmRpYW1ldGVyICogMC40Nn0gMCAwIDEgMCAtJHt0aGlzLmRpYW1ldGVyICogMC45Mn0gJHtcbiAgICAgICAgdGhpcy5kaWFtZXRlciAqIDAuNDZcbiAgICAgIH0gJHt0aGlzLmRpYW1ldGVyICogMC40Nn0gMCAwIDEgMCAke3RoaXMuZGlhbWV0ZXIgKiAwLjkyfWA7XG4gICAgfVxuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgLy92aWV3Qm94PVwiMCAwIDEwMCAxMDBcIlxuICAgIC8vZD1cIk0gNTAgOTYgYSA0NiA0NiAwIDAgMSAwIC05MiA0NiA0NiAwIDAgMSAwIDkyXCJcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInJ0c2VlLXByZWxvYWRlclwiPlxuICA8c3ZnIFtzdHlsZS5tYXgtd2lkdGgucHhdPVwiZGlhbWV0ZXJcIiAjY2FudmFzIFthdHRyLnZpZXdCb3hdPVwidmlld0JveFwiPlxuICAgIDxwYXRoIFthdHRyLmRdPVwiZFwiIFthdHRyLnN0cm9rZV09XCJjb2xvclwiLz5cbiAgPC9zdmc+XG48L2Rpdj5cbiJdfQ==
@@ -1,27 +0,0 @@
1
- import { Component, Input } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- import * as i1 from "@angular/material/button";
4
- import * as i2 from "@angular/common";
5
- import * as i3 from "@angular/material/form-field";
6
- export class RTSeeControlsComponent {
7
- onPresentClicked() {
8
- return this.rtsee.isPresenter
9
- ? this.rtsee.stopScreenShare()
10
- : this.rtsee.startScreenShare();
11
- }
12
- }
13
- RTSeeControlsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.1.2", ngImport: i0, type: RTSeeControlsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
14
- RTSeeControlsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.1.2", type: RTSeeControlsComponent, selector: "ngx-rtsee-controls", inputs: { rtsee: "rtsee", fullScreenMode: "fullScreenMode" }, ngImport: i0, template: "<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", styles: [".rtsee-controls{display:inline-block;height:100%}.rtsee-controls .rtsee-buttons-container{height:35px;width:35px;border-radius:50%;display:flex;align-items:center;justify-content:center;margin:0 6px;cursor:pointer}.rtsee-controls .rtsee-buttons-container:last-child{margin-right:0}.rtsee-controls .rtsee-buttons-container:first-child{margin-left:0}.rtsee-controls .rtsee-buttons-container .mat-icon-button{background-color:#333;color:#fff}.rtsee-controls .rtsee-buttons-container.call-end .mat-icon-button{background-color:red}.rtsee-controls .rtsee-buttons-container.rtsee-present-button-container .mat-icon-button{background-color:#090}.rtsee-controls .full-screen{align-self:flex-end;padding:12px;cursor:pointer}.rtsee-controls .rtsee-bottom-panel{padding:12px;display:flex;justify-content:center;align-items:center;border-radius:45px;background-color:rgba(0,0,0,.7)}.rtsee-controls.rtsee-full-screen-controls .rtsee-buttons-container{height:60px;width:60px}"], components: [{ type: i1.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }], directives: [{ type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.MatSuffix, selector: "[matSuffix]" }] });
15
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.1.2", ngImport: i0, type: RTSeeControlsComponent, decorators: [{
16
- type: Component,
17
- args: [{
18
- selector: 'ngx-rtsee-controls',
19
- templateUrl: './rtsee-controls.component.html',
20
- styleUrls: ['./rtsee-controls.component.scss'],
21
- }]
22
- }], propDecorators: { rtsee: [{
23
- type: Input
24
- }], fullScreenMode: [{
25
- type: Input
26
- }] } });
27
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnRzZWUtY29udHJvbHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4L3NyYy9saWIvY29tcG9uZW50cy9ydHNlZS9ydHNlZS1jb250cm9scy9ydHNlZS1jb250cm9scy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gvc3JjL2xpYi9jb21wb25lbnRzL3J0c2VlL3J0c2VlLWNvbnRyb2xzL3J0c2VlLWNvbnRyb2xzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7OztBQVFqRCxNQUFNLE9BQU8sc0JBQXNCO0lBSWpDLGdCQUFnQjtRQUNkLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXO1lBQzNCLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGVBQWUsRUFBRTtZQUM5QixDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0lBQ3BDLENBQUM7O21IQVJVLHNCQUFzQjt1R0FBdEIsc0JBQXNCLHdIQ1JuQywwb0VBMERBOzJGRGxEYSxzQkFBc0I7a0JBTGxDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLG9CQUFvQjtvQkFDOUIsV0FBVyxFQUFFLGlDQUFpQztvQkFDOUMsU0FBUyxFQUFFLENBQUMsaUNBQWlDLENBQUM7aUJBQy9DOzhCQUVVLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUlRTZWVDb25mZXJlbmNlIH0gZnJvbSAnQHJ0c2VlL2NvbmZlcmVuY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICduZ3gtcnRzZWUtY29udHJvbHMnLFxuICB0ZW1wbGF0ZVVybDogJy4vcnRzZWUtY29udHJvbHMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9ydHNlZS1jb250cm9scy5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBSVFNlZUNvbnRyb2xzQ29tcG9uZW50IHtcbiAgQElucHV0KCkgcnRzZWUhOiBSVFNlZUNvbmZlcmVuY2U7XG4gIEBJbnB1dCgpIGZ1bGxTY3JlZW5Nb2RlPzogYm9vbGVhbjtcblxuICBvblByZXNlbnRDbGlja2VkKCkge1xuICAgIHJldHVybiB0aGlzLnJ0c2VlLmlzUHJlc2VudGVyXG4gICAgICA/IHRoaXMucnRzZWUuc3RvcFNjcmVlblNoYXJlKClcbiAgICAgIDogdGhpcy5ydHNlZS5zdGFydFNjcmVlblNoYXJlKCk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJydHNlZS1jb250cm9sc1wiIFtuZ0NsYXNzXT1cInsncnRzZWUtZnVsbC1zY3JlZW4tY29udHJvbHMnIDogZnVsbFNjcmVlbk1vZGUgfVwiPlxuICA8ZGl2IGNsYXNzPVwicnRzZWUtYm90dG9tLXBhbmVsXCI+XG4gICAgPGRpdiBjbGFzcz1cIm1pYyBydHNlZS1idXR0b25zLWNvbnRhaW5lclwiPlxuICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gbWF0U3VmZml4XG4gICAgICAgICAgICAgIGNsYXNzPVwicnRzZWUtcmlwcGxlLWJ1dHRvblwiXG4gICAgICAgICAgICAgICpuZ0lmPVwicnRzZWUubWljcm9waG9uZVwiXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAoY2xpY2spPVwidGhpcy5ydHNlZS5kaXNhYmxlTWljcm9waG9uZSgpXCJcbiAgICAgID5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1pY29ucy1vdXRsaW5lZFwiPm1pY19ub25lPC9zcGFuPlxuICAgICAgPC9idXR0b24+XG4gICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiBtYXRTdWZmaXhcbiAgICAgICAgICAgICAgY2xhc3M9XCJydHNlZS1yaXBwbGUtYnV0dG9uXCJcbiAgICAgICAgICAgICAgKm5nSWY9XCIhcnRzZWUubWljcm9waG9uZVwiXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwidGhpcy5ydHNlZS5lbmFibGVNaWNyb3Bob25lKClcIlxuICAgICAgPlxuICAgICAgICA8c3BhbiBjbGFzcz1cIm1hdGVyaWFsLWljb25zLW91dGxpbmVkXCI+bWljX29mZjwvc3Bhbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cInZpZGVvLWNhbWVyYSBydHNlZS1idXR0b25zLWNvbnRhaW5lclwiPlxuICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gbWF0U3VmZml4XG4gICAgICAgICAgICAgIGNsYXNzPVwicnRzZWUtcmlwcGxlLWJ1dHRvblwiXG4gICAgICAgICAgICAgICpuZ0lmPVwicnRzZWUuY2FtZXJhXCJcbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJydHNlZS5kaXNhYmxlQ2FtZXJhKClcIlxuICAgICAgPlxuICAgICAgICA8c3BhbiBjbGFzcz1cIm1hdGVyaWFsLWljb25zLW91dGxpbmVkXCI+dmlkZW9jYW08L3NwYW4+XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIG1hdFN1ZmZpeFxuICAgICAgICAgICAgICBjbGFzcz1cInJ0c2VlLXJpcHBsZS1idXR0b25cIlxuICAgICAgICAgICAgICAqbmdJZj1cIiFydHNlZS5jYW1lcmFcIlxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInJ0c2VlLmVuYWJsZUNhbWVyYSgpXCJcbiAgICAgID5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1pY29ucy1vdXRsaW5lZFwiPnZpZGVvY2FtX29mZjwvc3Bhbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJwcmVzZW50IHJ0c2VlLWJ1dHRvbnMtY29udGFpbmVyXCIgW25nQ2xhc3NdPVwieydydHNlZS1wcmVzZW50LWJ1dHRvbi1jb250YWluZXInOiBydHNlZS5pc1ByZXNlbnRlcn1cIj5cbiAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIG1hdFN1ZmZpeFxuICAgICAgICAgICAgICBjbGFzcz1cInJ0c2VlLXJpcHBsZS1idXR0b25cIlxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uUHJlc2VudENsaWNrZWQoKVwiXG4gICAgICA+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnMtb3V0bGluZWRcIj5wcmVzZW50X3RvX2FsbDwvc3Bhbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJjYWxsLWVuZCBydHNlZS1idXR0b25zLWNvbnRhaW5lclwiPlxuICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gbWF0U3VmZml4XG4gICAgICAgICAgICAgIGNsYXNzPVwicnRzZWUtcmlwcGxlLWJ1dHRvblwiXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAoY2xpY2spPVwicnRzZWUuZW5kKClcIlxuICAgICAgPlxuICAgICAgICA8c3BhbiBjbGFzcz1cIm1hdGVyaWFsLWljb25zLW91dGxpbmVkXCI+Y2FsbF9lbmQ8L3NwYW4+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -1,33 +0,0 @@
1
- import { Component, Input } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- import * as i1 from "@angular/material/button";
4
- import * as i2 from "../rtsee-settings/rtsee-settings.component";
5
- import * as i3 from "../rtsee-peer/rtsee-peer.component";
6
- import * as i4 from "./rtsee-controls/rtsee-controls.component";
7
- import * as i5 from "@angular/common";
8
- import * as i6 from "@angular/material/form-field";
9
- export class RTSeeComponent {
10
- constructor() {
11
- this.settingsViewEnabled = false;
12
- this.fullScreenModeEnabled = false;
13
- }
14
- toggleSettings() {
15
- this.settingsViewEnabled = !this.settingsViewEnabled;
16
- }
17
- toggleFullScreenMode() {
18
- this.fullScreenModeEnabled = !this.fullScreenModeEnabled;
19
- }
20
- }
21
- RTSeeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.1.2", ngImport: i0, type: RTSeeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
22
- RTSeeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.1.2", type: RTSeeComponent, selector: "ngx-rtsee", inputs: { rtSee: "rtSee" }, ngImport: i0, template: "<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", styles: [".rtsee-shell{position:fixed;z-index:10;right:16px;bottom:16px;background-color:#333;width:100%;max-width:320px;height:240px;overflow:hidden;border-radius:8px}.rtsee-shell:hover .rtsee-controls-wrapper{bottom:8px}.rtsee-shell:hover .rtsee-window-controls{top:8px}.rtsee-shell .rtsee-local-peer{position:absolute;top:8px;left:8px;width:80px;height:60px;text-align:center}.rtsee-shell .rtsee-local-peer .rtsee-local-video{height:100%;max-width:100%;border-radius:8px}.rtsee-shell .rtsee-screen-share{height:100%}.rtsee-shell .rtsee-screen-share .rtsee-screen-share-video{width:100%;height:calc(100% - 50px)}.rtsee-shell .rtsee-peers{height:100%}.rtsee-shell .rtsee-peers .rtsee-peer-wrapper{padding:8px;box-sizing:border-box;height:100%}.rtsee-shell .rtsee-peers .rtsee-peer-wrapper .rtsee-peer{position:relative}.rtsee-shell .rtsee-peers .rtsee-peer-wrapper .rtsee-peer ::ng-deep .rtsee-peer-video{border-radius:8px}.rtsee-shell .rtsee-controls-wrapper{height:60px;width:100%;position:absolute;left:0;bottom:-60px;transition:bottom .1s;text-align:center}.rtsee-shell .rtsee-window-controls{position:absolute;top:-60px;right:8px;transition:top .1s;z-index:4}.rtsee-shell .rtsee-window-controls .rtsee-window-controls-button{margin-left:8px;background-color:rgba(0,0,0,.7);color:#fff}.rtsee-shell .rtsee-settings-container{position:absolute;top:0;right:0;bottom:0;left:0;overflow:auto;z-index:4}.rtsee-shell.rtsee-shell-no-companions .rtsee-local-peer{box-sizing:border-box;padding:8px;height:100%;width:100%;top:0;bottom:0;left:0}.rtsee-shell .rtsee-close-settings-button{position:absolute;right:25px;top:5px;width:30px;height:30px;line-height:30px}.rtsee-shell.rtsee-shell-expanded{position:absolute;border-radius:0;max-width:unset;height:unset;width:unset;bottom:0;right:0;left:0;top:0}.rtsee-shell.rtsee-shell-expanded:hover .rtsee-controls-wrapper{bottom:16px}.rtsee-shell.rtsee-shell-expanded:hover .rtsee-window-controls{top:16px;right:16px}.rtsee-shell.rtsee-shell-expanded .rtsee-local-peer{top:unset;left:unset;width:211.2px;height:158.4px;bottom:16px;right:16px;padding:0;z-index:5}.rtsee-shell.rtsee-shell-expanded .rtsee-peers{width:100%;height:100%;display:table;table-layout:fixed}.rtsee-shell.rtsee-shell-expanded .rtsee-peers .rtsee-peer-wrapper{display:table-cell;vertical-align:middle}.rtsee-shell.rtsee-shell-expanded .rtsee-peers .rtsee-peer-wrapper ::ng-deep .rtsee-peer-video{border-radius:0}.rtsee-shell.rtsee-shell-expanded .rtsee-peers.rtsee-peers-one .rtsee-peer-wrapper{width:100%;height:100%}.rtsee-shell.rtsee-shell-expanded .rtsee-peers.rtsee-peers-one .rtsee-peer-wrapper ::ng-deep .rtsee-peer{height:70%;position:relative}.rtsee-shell.rtsee-shell-expanded .rtsee-peers.rtsee-peers-three-grid .rtsee-peer-wrapper{width:50%;height:100%}.rtsee-shell.rtsee-shell-expanded .rtsee-peers.rtsee-peers-three-grid .rtsee-peer-wrapper ::ng-deep .rtsee-peer{height:70%;position:relative}.rtsee-shell.rtsee-shell-expanded .rtsee-peers.rtsee-peers-six-grid .rtsee-peer-wrapper{width:33.3%;height:50%;float:left}.rtsee-shell.rtsee-shell-expanded .rtsee-peers.rtsee-shell-no-companions .rtsee-local-peer{height:100%;max-width:100%}.rtsee-shell.rtsee-shell-expanded .rtsee-controls-wrapper{height:84px;bottom:-84px}::ng-deep .rtsee-ripple-button{background-position:50%;transition:background .2s;outline:none}::ng-deep .rtsee-ripple-button:hover{background:hsla(0,0%,96%,.1) radial-gradient(circle,transparent 1%,hsla(0,0%,96%,.1) 0) 50%/15000%}::ng-deep .rtsee-ripple-button:active{background-size:100%;transition:background 0s}::ng-deep .rtsee-select{padding:8px;border-radius:4px;width:100%;outline:none}::ng-deep .material-icons-outlined{font-size:18px}::ng-deep .rtsee-shell.rtsee-shell-expanded .material-icons-outlined{font-size:24px}::ng-deep .rtsee-shell.rtsee-shell-expanded .rtsee-ripple-button{height:60px;width:60px;line-height:60px}"], components: [{ type: i1.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i2.RtseeSettingsComponent, selector: "ngx-rtsee-settings", inputs: ["rtSee", "fullScreenMode"] }, { type: i3.RtseePeerComponent, selector: "ngx-rtsee-peer", inputs: ["peer"] }, { type: i4.RTSeeControlsComponent, selector: "ngx-rtsee-controls", inputs: ["rtsee", "fullScreenMode"] }], directives: [{ type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i6.MatSuffix, selector: "[matSuffix]" }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
23
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.1.2", ngImport: i0, type: RTSeeComponent, decorators: [{
24
- type: Component,
25
- args: [{
26
- selector: 'ngx-rtsee',
27
- templateUrl: './rtsee.component.html',
28
- styleUrls: ['./rtsee.component.scss'],
29
- }]
30
- }], ctorParameters: function () { return []; }, propDecorators: { rtSee: [{
31
- type: Input
32
- }] } });
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
@@ -1,14 +0,0 @@
1
- import { Component } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- export class RtseeContainerComponent {
4
- }
5
- RtseeContainerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.1.2", ngImport: i0, type: RtseeContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
6
- RtseeContainerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.1.2", type: RtseeContainerComponent, selector: "rtsee-rtsee-container", ngImport: i0, template: "<p>rtsee-container works!</p>\n" });
7
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.1.2", ngImport: i0, type: RtseeContainerComponent, decorators: [{
8
- type: Component,
9
- args: [{
10
- selector: 'rtsee-rtsee-container',
11
- templateUrl: './rtsee-container.component.html',
12
- }]
13
- }] });
14
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnRzZWUtY29udGFpbmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC9zcmMvbGliL2NvbXBvbmVudHMvcnRzZWUtY29udGFpbmVyL3J0c2VlLWNvbnRhaW5lci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gvc3JjL2xpYi9jb21wb25lbnRzL3J0c2VlLWNvbnRhaW5lci9ydHNlZS1jb250YWluZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFNMUMsTUFBTSxPQUFPLHVCQUF1Qjs7b0hBQXZCLHVCQUF1Qjt3R0FBdkIsdUJBQXVCLDZEQ05wQyxpQ0FDQTsyRkRLYSx1QkFBdUI7a0JBSm5DLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHVCQUF1QjtvQkFDakMsV0FBVyxFQUFFLGtDQUFrQztpQkFDaEQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncnRzZWUtcnRzZWUtY29udGFpbmVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3J0c2VlLWNvbnRhaW5lci5jb21wb25lbnQuaHRtbCcsXG59KVxuZXhwb3J0IGNsYXNzIFJ0c2VlQ29udGFpbmVyQ29tcG9uZW50IHt9XG4iLCI8cD5ydHNlZS1jb250YWluZXIgd29ya3MhPC9wPlxuIl19
@@ -1,73 +0,0 @@
1
- import { Component, Input, ViewChild, } from '@angular/core';
2
- import { WidgetDirective } from '../../../../directives/widget.directive';
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "../../../../services/events-widgets.service";
5
- import * as i2 from "../../../../services/time-format-helper.service";
6
- import * as i3 from "@angular/common";
7
- import * as i4 from "../../../../directives/widget.directive";
8
- export class EventThumbnailComponent {
9
- constructor(widgetsService, componentFactoryResolver, timeFormatService) {
10
- this.widgetsService = widgetsService;
11
- this.componentFactoryResolver = componentFactoryResolver;
12
- this.timeFormatService = timeFormatService;
13
- }
14
- ngOnInit() {
15
- if (this.event.data) {
16
- this.generateTooltip();
17
- }
18
- }
19
- generateTooltip() {
20
- /* eslint-disable */
21
- let tooltip = '';
22
- if (typeof this.event.data !== 'object') {
23
- return;
24
- }
25
- try {
26
- for (const key in this.event.data) {
27
- if (this.event.data.hasOwnProperty(key)) {
28
- if (tooltip) {
29
- tooltip += '&#013;';
30
- }
31
- tooltip += key + ' -> ' + this.event.data[key];
32
- }
33
- }
34
- this.tooltip = tooltip;
35
- }
36
- catch (e) {
37
- console.log('Failed to generate a tooltip');
38
- }
39
- /* eslint-enable */
40
- }
41
- ngAfterViewInit() {
42
- /* eslint-disable */
43
- if (this.event.widget) {
44
- const widget = this.widgetsService.getWidgetComponentByName(this.event.widget);
45
- if (!widget) {
46
- return;
47
- }
48
- const viewContainerRef = this.widgetHost.viewContainerRef;
49
- viewContainerRef.clear();
50
- const componentToShow = this.componentFactoryResolver.resolveComponentFactory(widget);
51
- const componentRef = viewContainerRef.createComponent(componentToShow);
52
- componentRef.instance.event = this.event;
53
- componentRef.instance.event = this.event;
54
- componentRef.changeDetectorRef.detectChanges();
55
- }
56
- /* eslint-enable */
57
- }
58
- }
59
- EventThumbnailComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.1.2", ngImport: i0, type: EventThumbnailComponent, deps: [{ token: i1.EventsWidgetsService }, { token: i0.ComponentFactoryResolver }, { token: i2.TimeFormatHelperService }], target: i0.ɵɵFactoryTarget.Component });
60
- EventThumbnailComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.1.2", type: EventThumbnailComponent, selector: "rtsee-event-thumbnail", inputs: { event: "event" }, viewQueries: [{ propertyName: "widgetHost", first: true, predicate: WidgetDirective, descendants: true }], ngImport: i0, template: "<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", directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.WidgetDirective, selector: "[widgetHost]" }, { type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
61
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.1.2", ngImport: i0, type: EventThumbnailComponent, decorators: [{
62
- type: Component,
63
- args: [{
64
- selector: 'rtsee-event-thumbnail',
65
- templateUrl: './event-thumbnail.component.html',
66
- }]
67
- }], ctorParameters: function () { return [{ type: i1.EventsWidgetsService }, { type: i0.ComponentFactoryResolver }, { type: i2.TimeFormatHelperService }]; }, propDecorators: { event: [{
68
- type: Input
69
- }], widgetHost: [{
70
- type: ViewChild,
71
- args: [WidgetDirective, { static: false }]
72
- }] } });
73
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQtdGh1bWJuYWlsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC9zcmMvbGliL2NvbXBvbmVudHMvcnRzZWUtZXZlbnRzLWRhc2hib2FyZC9jb21wb25lbnRzL2V2ZW50LXRodW1ibmFpbC9ldmVudC10aHVtYm5haWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4L3NyYy9saWIvY29tcG9uZW50cy9ydHNlZS1ldmVudHMtZGFzaGJvYXJkL2NvbXBvbmVudHMvZXZlbnQtdGh1bWJuYWlsL2V2ZW50LXRodW1ibmFpbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUdULEtBQUssRUFFTCxTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHlDQUF5QyxDQUFDOzs7Ozs7QUFTMUUsTUFBTSxPQUFPLHVCQUF1QjtJQUtsQyxZQUNVLGNBQW9DLEVBQ3BDLHdCQUFrRCxFQUNuRCxpQkFBMEM7UUFGekMsbUJBQWMsR0FBZCxjQUFjLENBQXNCO1FBQ3BDLDZCQUF3QixHQUF4Qix3QkFBd0IsQ0FBMEI7UUFDbkQsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUF5QjtJQUNoRCxDQUFDO0lBRUosUUFBUTtRQUNOLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUU7WUFDbkIsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1NBQ3hCO0lBQ0gsQ0FBQztJQUVELGVBQWU7UUFDYixvQkFBb0I7UUFDcEIsSUFBSSxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLElBQUksT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxRQUFRLEVBQUU7WUFDdkMsT0FBTztTQUNSO1FBQ0QsSUFBSTtZQUNGLEtBQUssTUFBTSxHQUFHLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUU7Z0JBQ2pDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxFQUFFO29CQUN2QyxJQUFJLE9BQU8sRUFBRTt3QkFDWCxPQUFPLElBQUksUUFBUSxDQUFDO3FCQUNyQjtvQkFDRCxPQUFPLElBQUksR0FBRyxHQUFHLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztpQkFDaEQ7YUFDRjtZQUNELElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1NBQ3hCO1FBQUMsT0FBTyxDQUFDLEVBQUU7WUFDVixPQUFPLENBQUMsR0FBRyxDQUFDLDhCQUE4QixDQUFDLENBQUM7U0FDN0M7UUFDRCxtQkFBbUI7SUFDckIsQ0FBQztJQUVELGVBQWU7UUFDYixvQkFBb0I7UUFDcEIsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRTtZQUNyQixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLHdCQUF3QixDQUN6RCxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FDbEIsQ0FBQztZQUNGLElBQUksQ0FBQyxNQUFNLEVBQUU7Z0JBQ1gsT0FBTzthQUNSO1lBQ0QsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDO1lBQzFELGdCQUFnQixDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3pCLE1BQU0sZUFBZSxHQUNuQixJQUFJLENBQUMsd0JBQXdCLENBQUMsdUJBQXVCLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDaEUsTUFBTSxZQUFZLEdBQ2hCLGdCQUFnQixDQUFDLGVBQWUsQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUNwRCxZQUFZLENBQUMsUUFBUSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1lBQ3pDLFlBQVksQ0FBQyxRQUFRLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7WUFDekMsWUFBWSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsRUFBRSxDQUFDO1NBQ2hEO1FBQ0QsbUJBQW1CO0lBQ3JCLENBQUM7O29IQTNEVSx1QkFBdUI7d0dBQXZCLHVCQUF1QixxSUFJdkIsZUFBZSxnREN2QjVCLG83QkFvQkE7MkZERGEsdUJBQXVCO2tCQUpuQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSx1QkFBdUI7b0JBQ2pDLFdBQVcsRUFBRSxrQ0FBa0M7aUJBQ2hEO3dMQUlVLEtBQUs7c0JBQWIsS0FBSztnQkFDeUMsVUFBVTtzQkFBeEQsU0FBUzt1QkFBQyxlQUFlLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ29tcG9uZW50LFxuICBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXG4gIENvbXBvbmVudFJlZixcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJUU2VlRGFzaGJvYXJkRXZlbnQgfSBmcm9tICdAcnRzZWUvZXZlbnRzLW1hbmFnZXInO1xuaW1wb3J0IHsgV2lkZ2V0RGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vLi4vLi4vZGlyZWN0aXZlcy93aWRnZXQuZGlyZWN0aXZlJztcbmltcG9ydCB7IEV2ZW50c1dpZGdldHNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2VydmljZXMvZXZlbnRzLXdpZGdldHMuc2VydmljZSc7XG5pbXBvcnQgeyBUaW1lRm9ybWF0SGVscGVyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL3NlcnZpY2VzL3RpbWUtZm9ybWF0LWhlbHBlci5zZXJ2aWNlJztcbmltcG9ydCAqIGFzIGRheWpzIGZyb20gJ2RheWpzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncnRzZWUtZXZlbnQtdGh1bWJuYWlsJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2V2ZW50LXRodW1ibmFpbC5jb21wb25lbnQuaHRtbCcsXG59KVxuZXhwb3J0IGNsYXNzIEV2ZW50VGh1bWJuYWlsQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcbiAgdG9vbHRpcD86IHN0cmluZztcblxuICBASW5wdXQoKSBldmVudCE6IFJUU2VlRGFzaGJvYXJkRXZlbnQ7XG4gIEBWaWV3Q2hpbGQoV2lkZ2V0RGlyZWN0aXZlLCB7IHN0YXRpYzogZmFsc2UgfSkgd2lkZ2V0SG9zdCE6IFdpZGdldERpcmVjdGl2ZTtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSB3aWRnZXRzU2VydmljZTogRXZlbnRzV2lkZ2V0c1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb21wb25lbnRGYWN0b3J5UmVzb2x2ZXI6IENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcbiAgICBwdWJsaWMgdGltZUZvcm1hdFNlcnZpY2U6IFRpbWVGb3JtYXRIZWxwZXJTZXJ2aWNlXG4gICkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5ldmVudC5kYXRhKSB7XG4gICAgICB0aGlzLmdlbmVyYXRlVG9vbHRpcCgpO1xuICAgIH1cbiAgfVxuXG4gIGdlbmVyYXRlVG9vbHRpcCgpIHtcbiAgICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xuICAgIGxldCB0b29sdGlwID0gJyc7XG4gICAgaWYgKHR5cGVvZiB0aGlzLmV2ZW50LmRhdGEgIT09ICdvYmplY3QnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICBmb3IgKGNvbnN0IGtleSBpbiB0aGlzLmV2ZW50LmRhdGEpIHtcbiAgICAgICAgaWYgKHRoaXMuZXZlbnQuZGF0YS5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgICAgaWYgKHRvb2x0aXApIHtcbiAgICAgICAgICAgIHRvb2x0aXAgKz0gJyYjMDEzOyc7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRvb2x0aXAgKz0ga2V5ICsgJyAtPiAnICsgdGhpcy5ldmVudC5kYXRhW2tleV07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHRoaXMudG9vbHRpcCA9IHRvb2x0aXA7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5sb2coJ0ZhaWxlZCB0byBnZW5lcmF0ZSBhIHRvb2x0aXAnKTtcbiAgICB9XG4gICAgLyogZXNsaW50LWVuYWJsZSAqL1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIC8qIGVzbGludC1kaXNhYmxlICovXG4gICAgaWYgKHRoaXMuZXZlbnQud2lkZ2V0KSB7XG4gICAgICBjb25zdCB3aWRnZXQgPSB0aGlzLndpZGdldHNTZXJ2aWNlLmdldFdpZGdldENvbXBvbmVudEJ5TmFtZShcbiAgICAgICAgdGhpcy5ldmVudC53aWRnZXRcbiAgICAgICk7XG4gICAgICBpZiAoIXdpZGdldCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjb25zdCB2aWV3Q29udGFpbmVyUmVmID0gdGhpcy53aWRnZXRIb3N0LnZpZXdDb250YWluZXJSZWY7XG4gICAgICB2aWV3Q29udGFpbmVyUmVmLmNsZWFyKCk7XG4gICAgICBjb25zdCBjb21wb25lbnRUb1Nob3cgPVxuICAgICAgICB0aGlzLmNvbXBvbmVudEZhY3RvcnlSZXNvbHZlci5yZXNvbHZlQ29tcG9uZW50RmFjdG9yeSh3aWRnZXQpO1xuICAgICAgY29uc3QgY29tcG9uZW50UmVmOiBDb21wb25lbnRSZWY8dHlwZW9mIHdpZGdldD4gPVxuICAgICAgICB2aWV3Q29udGFpbmVyUmVmLmNyZWF0ZUNvbXBvbmVudChjb21wb25lbnRUb1Nob3cpO1xuICAgICAgY29tcG9uZW50UmVmLmluc3RhbmNlLmV2ZW50ID0gdGhpcy5ldmVudDtcbiAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5ldmVudCA9IHRoaXMuZXZlbnQ7XG4gICAgICBjb21wb25lbnRSZWYuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cbiAgICAvKiBlc2xpbnQtZW5hYmxlICovXG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJydHNlZS1ldmVudHMtZGFzaGJvYXJkLWV2ZW50LXRodW1ibmFpbFwiPlxuICA8bmctdGVtcGxhdGUgKm5nSWY9XCJldmVudC53aWRnZXRcIiB3aWRnZXRIb3N0PjwvbmctdGVtcGxhdGU+XG4gIDxkaXYgKm5nSWY9XCIhZXZlbnQud2lkZ2V0XCIgY2xhc3M9XCJydHNlZS1ldmVudHMtZGFzaGJvYXJkLWRlZmF1bHQtZXZlbnQtdGh1bWJuYWlsXCJcbiAgICAgICBbbmdDbGFzc109XCJ7J3J0c2VlLWV2ZW50cy1kYXNoYm9hcmQtZGVmYXVsdC1ldmVudC10aHVtYm5haWwtd2l0aC1kYXRhJzogZXZlbnQuZGF0YX1cIlxuICA+XG4gICAgPGRpdiBjbGFzcz1cInJ0c2VlLWV2ZW50cy1kYXNoYm9hcmQtZGVmYXVsdC1ldmVudC10aHVtYm5haWwtbmFtZVwiPnt7ZXZlbnQubmFtZX19PC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInJ0c2VlLWV2ZW50cy1kYXNoYm9hcmQtZGVmYXVsdC1ldmVudC10aHVtYm5haWwtaW5mb1wiPlxuICAgICAgPGRpdiAqbmdJZj1cImV2ZW50LmRhdGFcIiBjbGFzcz1cInJ0c2VlLWV2ZW50cy1kYXNoYm9hcmQtZGVmYXVsdC1ldmVudC10aHVtYm5haWwtZGV0YWlsc1wiXG4gICAgICAgICAgIFt0aXRsZV09XCJ0b29sdGlwXCJcbiAgICAgID5cbiAgICAgIDxzcGFuIGNsYXNzPVwicnRzZWUtZXZlbnRzLWRhc2hib2FyZC1kZWZhdWx0LWV2ZW50LXRodW1ibmFpbC1kZXRhaWxzLWljb24gbWF0ZXJpYWwtaWNvbnMtb3V0bGluZWRcIlxuICAgICAgPmluZm88L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJydHNlZS1ldmVudHMtZGFzaGJvYXJkLWRlZmF1bHQtZXZlbnQtdGh1bWJuYWlsLXRpbWVcIj5cbiAgICAgICAgPHNwYW4+e3sgdGltZUZvcm1hdFNlcnZpY2UudG9BZ28oZXZlbnQuY3JlYXRlZEF0KSB9fTwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
@@ -1,14 +0,0 @@
1
- import { Component } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- export class RtseeEventsDashboardClientComponent {
4
- }
5
- RtseeEventsDashboardClientComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.1.2", ngImport: i0, type: RtseeEventsDashboardClientComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
6
- RtseeEventsDashboardClientComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.1.2", type: RtseeEventsDashboardClientComponent, selector: "ngx-rtsee-events-dashboard-client", ngImport: i0, template: "<p>rtsee-events-dashboard-client works!</p>\n" });
7
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.1.2", ngImport: i0, type: RtseeEventsDashboardClientComponent, decorators: [{
8
- type: Component,
9
- args: [{
10
- selector: 'ngx-rtsee-events-dashboard-client',
11
- templateUrl: './rtsee-events-dashboard-client.component.html',
12
- }]
13
- }] });
14
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnRzZWUtZXZlbnRzLWRhc2hib2FyZC1jbGllbnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4L3NyYy9saWIvY29tcG9uZW50cy9ydHNlZS1ldmVudHMtZGFzaGJvYXJkL2NvbXBvbmVudHMvcnRzZWUtZXZlbnRzLWRhc2hib2FyZC1jbGllbnQvcnRzZWUtZXZlbnRzLWRhc2hib2FyZC1jbGllbnQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4L3NyYy9saWIvY29tcG9uZW50cy9ydHNlZS1ldmVudHMtZGFzaGJvYXJkL2NvbXBvbmVudHMvcnRzZWUtZXZlbnRzLWRhc2hib2FyZC1jbGllbnQvcnRzZWUtZXZlbnRzLWRhc2hib2FyZC1jbGllbnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFNMUMsTUFBTSxPQUFPLG1DQUFtQzs7Z0lBQW5DLG1DQUFtQztvSEFBbkMsbUNBQW1DLHlFQ05oRCwrQ0FDQTsyRkRLYSxtQ0FBbUM7a0JBSi9DLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLG1DQUFtQztvQkFDN0MsV0FBVyxFQUFFLGdEQUFnRDtpQkFDOUQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbmd4LXJ0c2VlLWV2ZW50cy1kYXNoYm9hcmQtY2xpZW50JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3J0c2VlLWV2ZW50cy1kYXNoYm9hcmQtY2xpZW50LmNvbXBvbmVudC5odG1sJyxcbn0pXG5leHBvcnQgY2xhc3MgUnRzZWVFdmVudHNEYXNoYm9hcmRDbGllbnRDb21wb25lbnQge31cbiIsIjxwPnJ0c2VlLWV2ZW50cy1kYXNoYm9hcmQtY2xpZW50IHdvcmtzITwvcD5cbiJdfQ==
@@ -1,32 +0,0 @@
1
- import { Component, Input } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- import * as i1 from "../../../../services/time-format-helper.service";
4
- import * as i2 from "../../../../services/default-images.service";
5
- import * as i3 from "../rtsee-events-dashboard-session/rtsee-events-dashboard-session.component";
6
- import * as i4 from "@angular/common";
7
- export class RtseeEventsDashboardClientThumbnailComponent {
8
- constructor(timeFormatService, defaultImagesService) {
9
- this.timeFormatService = timeFormatService;
10
- this.defaultImagesService = defaultImagesService;
11
- }
12
- ngOnInit() {
13
- console.log('client id', this.client.id);
14
- }
15
- openChat() {
16
- this.dashboard.openChat(this.client);
17
- }
18
- }
19
- RtseeEventsDashboardClientThumbnailComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.1.2", ngImport: i0, type: RtseeEventsDashboardClientThumbnailComponent, deps: [{ token: i1.TimeFormatHelperService }, { token: i2.DefaultImagesService }], target: i0.ɵɵFactoryTarget.Component });
20
- RtseeEventsDashboardClientThumbnailComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.1.2", type: RtseeEventsDashboardClientThumbnailComponent, selector: "ngx-rtsee-events-dashboard-client-thumbnail", inputs: { dashboard: "dashboard", client: "client" }, ngImport: i0, template: "<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", components: [{ type: i3.RtseeEventsDashboardSessionComponent, selector: "rtsee-rtsee-events-dashboard-session", inputs: ["session"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
21
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.1.2", ngImport: i0, type: RtseeEventsDashboardClientThumbnailComponent, decorators: [{
22
- type: Component,
23
- args: [{
24
- selector: 'ngx-rtsee-events-dashboard-client-thumbnail',
25
- templateUrl: './rtsee-events-dashboard-client-thumbnail.component.html',
26
- }]
27
- }], ctorParameters: function () { return [{ type: i1.TimeFormatHelperService }, { type: i2.DefaultImagesService }]; }, propDecorators: { dashboard: [{
28
- type: Input
29
- }], client: [{
30
- type: Input
31
- }] } });
32
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnRzZWUtZXZlbnRzLWRhc2hib2FyZC1jbGllbnQtdGh1bWJuYWlsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC9zcmMvbGliL2NvbXBvbmVudHMvcnRzZWUtZXZlbnRzLWRhc2hib2FyZC9jb21wb25lbnRzL3J0c2VlLWV2ZW50cy1kYXNoYm9hcmQtY2xpZW50LXRodW1ibmFpbC9ydHNlZS1ldmVudHMtZGFzaGJvYXJkLWNsaWVudC10aHVtYm5haWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4L3NyYy9saWIvY29tcG9uZW50cy9ydHNlZS1ldmVudHMtZGFzaGJvYXJkL2NvbXBvbmVudHMvcnRzZWUtZXZlbnRzLWRhc2hib2FyZC1jbGllbnQtdGh1bWJuYWlsL3J0c2VlLWV2ZW50cy1kYXNoYm9hcmQtY2xpZW50LXRodW1ibmFpbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQzs7Ozs7O0FBWXpELE1BQU0sT0FBTyw0Q0FBNEM7SUFJdkQsWUFDUyxpQkFBMEMsRUFDMUMsb0JBQTBDO1FBRDFDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBeUI7UUFDMUMseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFzQjtJQUNoRCxDQUFDO0lBRUosUUFBUTtRQUNOLE9BQU8sQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDdkMsQ0FBQzs7eUlBZlUsNENBQTRDOzZIQUE1Qyw0Q0FBNEMseUlDWnpELG9rQ0FzQkE7MkZEVmEsNENBQTRDO2tCQUp4RCxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSw2Q0FBNkM7b0JBQ3ZELFdBQVcsRUFBRSwwREFBMEQ7aUJBQ3hFO2lKQUVVLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBSVFNlZURhc2hib2FyZENsaWVudCxcbiAgUlRTZWVFdmVudHNEYXNoYm9hcmQsXG59IGZyb20gJ0BydHNlZS9ldmVudHMtbWFuYWdlcic7XG5pbXBvcnQgeyBUaW1lRm9ybWF0SGVscGVyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL3NlcnZpY2VzL3RpbWUtZm9ybWF0LWhlbHBlci5zZXJ2aWNlJztcbmltcG9ydCB7IERlZmF1bHRJbWFnZXNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2VydmljZXMvZGVmYXVsdC1pbWFnZXMuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ25neC1ydHNlZS1ldmVudHMtZGFzaGJvYXJkLWNsaWVudC10aHVtYm5haWwnLFxuICB0ZW1wbGF0ZVVybDogJy4vcnRzZWUtZXZlbnRzLWRhc2hib2FyZC1jbGllbnQtdGh1bWJuYWlsLmNvbXBvbmVudC5odG1sJyxcbn0pXG5leHBvcnQgY2xhc3MgUnRzZWVFdmVudHNEYXNoYm9hcmRDbGllbnRUaHVtYm5haWxDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKSBkYXNoYm9hcmQhOiBSVFNlZUV2ZW50c0Rhc2hib2FyZDtcbiAgQElucHV0KCkgY2xpZW50ITogUlRTZWVEYXNoYm9hcmRDbGllbnQ7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHRpbWVGb3JtYXRTZXJ2aWNlOiBUaW1lRm9ybWF0SGVscGVyU2VydmljZSxcbiAgICBwdWJsaWMgZGVmYXVsdEltYWdlc1NlcnZpY2U6IERlZmF1bHRJbWFnZXNTZXJ2aWNlXG4gICkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBjb25zb2xlLmxvZygnY2xpZW50IGlkJywgdGhpcy5jbGllbnQuaWQpO1xuICB9XG5cbiAgb3BlbkNoYXQoKSB7XG4gICAgdGhpcy5kYXNoYm9hcmQub3BlbkNoYXQodGhpcy5jbGllbnQpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwicnRzZWUtZGFzaGJvYXJkLWNsaWVudC10aHVtYm5haWxcIj5cbiAgPGRpdiBjbGFzcz1cInJ0c2VlLWRhc2hib2FyZC1jbGllbnQtaGVhZGVyXCI+XG4gICAgPGRpdiBjbGFzcz1cInJ0c2VlLWRhc2hib2FyZC1jbGllbnQtaGVhZGVyLXBob3RvXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwicnRzZWUtZGFzaGJvYXJkLWNsaWVudC1oZWFkZXItaW1hZ2VcIlxuICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZC1pbWFnZV09XCIndXJsKCcgKyBjbGllbnQuaW1hZ2VVcmwgfHwgZGVmYXVsdEltYWdlc1NlcnZpY2UuUFJPRklMRSArICcpJ1wiXG4gICAgICA+PC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwicnRzZWUtZGFzaGJvYXJkLWNsaWVudC1saXZlLWluZGljYXRvclwiICpuZ0lmPVwiY2xpZW50LmlzQ29ubmVjdGVkXCI+PC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPHAgY2xhc3M9XCJydHNlZS1kYXNoYm9hcmQtY2xpZW50LW5hbWVcIj5cbiAgICAgIDxzcGFuIGNsYXNzPVwicnRzZWUtZGFzaGJvYXJkLWNsaWVudC1uYW1lLXRleHRcIj57eyBjbGllbnQubmFtZSB8fCBjbGllbnQuaWQgfX08L3NwYW4+XG4gICAgICA8YnV0dG9uIChjbGljayk9XCJvcGVuQ2hhdCgpXCIgY2xhc3M9XCJydHNlZS1kYXNoYm9hcmQtY2xpZW50LWVuZ2FnZVwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInJ0c2VlLWRhc2hib2FyZC1jbGllbnQtZW5nYWdlLWljb24gbWF0ZXJpYWwtaWNvbnMtb3V0bGluZWRcIj5jaGF0X2J1YmJsZTwvc3Bhbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvcD5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJydHNlZS1kYXNoYm9hcmQtc2Vzc2lvbnNcIj5cbiAgICA8ZGl2ICpuZ0Zvcj1cImxldCBzZXNzaW9uIG9mIGNsaWVudC5zZXNzaW9uc1wiXG4gICAgICAgICBjbGFzcz1cInJ0c2VlLWRhc2hib2FyZC1zZXNzaW9ucy1jb250YWluZXJcIj5cbiAgICAgIDxydHNlZS1ydHNlZS1ldmVudHMtZGFzaGJvYXJkLXNlc3Npb24gW3Nlc3Npb25dPVwic2Vzc2lvblwiPjwvcnRzZWUtcnRzZWUtZXZlbnRzLWRhc2hib2FyZC1zZXNzaW9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19