@hivegpt/hiveai-angular 0.0.380 → 0.0.382

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 (88) hide show
  1. package/README.md +23 -23
  2. package/bundles/hivegpt-hiveai-angular.umd.js +3145 -0
  3. package/bundles/hivegpt-hiveai-angular.umd.js.map +1 -0
  4. package/bundles/hivegpt-hiveai-angular.umd.min.js +2 -0
  5. package/bundles/hivegpt-hiveai-angular.umd.min.js.map +1 -0
  6. package/environments/environment.d.ts +15 -0
  7. package/environments/environment.d.ts.map +1 -0
  8. package/esm2015/environments/environment.js +15 -0
  9. package/esm2015/hivegpt-hiveai-angular.js +13 -0
  10. package/esm2015/lib/components/NotificationSocket.js +39 -0
  11. package/esm2015/lib/components/bot-html-editor/bot-html-editor.component.js +112 -0
  12. package/esm2015/lib/components/bot.service.js +50 -0
  13. package/esm2015/lib/components/chat-drawer/chat-drawer.component.js +1743 -0
  14. package/esm2015/lib/components/chatbot/chatbot.component.js +50 -0
  15. package/esm2015/lib/components/conversation.service.js +49 -0
  16. package/esm2015/lib/components/socket-service.service.js +72 -0
  17. package/esm2015/lib/components/translations/translation.service.js +244 -0
  18. package/esm2015/lib/components/video-player/video-player.component.js +123 -0
  19. package/esm2015/lib/hivegpt.module.js +21 -0
  20. package/esm2015/lib/models/video.js +2 -0
  21. package/esm2015/lib/pipes/safe-html.pipe.js +19 -0
  22. package/esm2015/lib/utils/utils.js +36 -0
  23. package/esm2015/public-api.js +7 -0
  24. package/fesm2015/hivegpt-hiveai-angular.js +2541 -0
  25. package/fesm2015/hivegpt-hiveai-angular.js.map +1 -0
  26. package/hivegpt-hiveai-angular.d.ts +13 -0
  27. package/hivegpt-hiveai-angular.d.ts.map +1 -0
  28. package/hivegpt-hiveai-angular.metadata.json +1 -0
  29. package/lib/components/NotificationSocket.d.ts +5 -0
  30. package/lib/components/NotificationSocket.d.ts.map +1 -0
  31. package/lib/components/bot-html-editor/bot-html-editor.component.d.ts +36 -0
  32. package/lib/components/bot-html-editor/bot-html-editor.component.d.ts.map +1 -0
  33. package/lib/components/bot.service.d.ts +12 -0
  34. package/lib/components/bot.service.d.ts.map +1 -0
  35. package/lib/components/chat-drawer/chat-drawer.component.d.ts +255 -0
  36. package/lib/components/chat-drawer/chat-drawer.component.d.ts.map +1 -0
  37. package/lib/components/chatbot/chatbot.component.d.ts +36 -0
  38. package/lib/components/chatbot/chatbot.component.d.ts.map +1 -0
  39. package/lib/components/conversation.service.d.ts +13 -0
  40. package/lib/components/conversation.service.d.ts.map +1 -0
  41. package/lib/components/socket-service.service.d.ts +20 -0
  42. package/lib/components/socket-service.service.d.ts.map +1 -0
  43. package/lib/components/translations/translation.service.d.ts +8 -0
  44. package/lib/components/translations/translation.service.d.ts.map +1 -0
  45. package/lib/components/video-player/video-player.component.d.ts +36 -0
  46. package/lib/components/video-player/video-player.component.d.ts.map +1 -0
  47. package/lib/hivegpt.module.d.ts +3 -0
  48. package/lib/hivegpt.module.d.ts.map +1 -0
  49. package/lib/models/video.d.ts +35 -0
  50. package/lib/models/video.d.ts.map +1 -0
  51. package/lib/pipes/safe-html.pipe.d.ts +8 -0
  52. package/lib/pipes/safe-html.pipe.d.ts.map +1 -0
  53. package/lib/utils/utils.d.ts +3 -0
  54. package/lib/utils/utils.d.ts.map +1 -0
  55. package/package.json +20 -20
  56. package/{src/public-api.ts → public-api.d.ts} +4 -7
  57. package/public-api.d.ts.map +1 -0
  58. package/karma.conf.js +0 -32
  59. package/ng-package.json +0 -7
  60. package/src/environments/environment.ts +0 -19
  61. package/src/lib/components/NotificationSocket.ts +0 -38
  62. package/src/lib/components/bot-html-editor/bot-html-editor.component.css +0 -10
  63. package/src/lib/components/bot-html-editor/bot-html-editor.component.html +0 -11
  64. package/src/lib/components/bot-html-editor/bot-html-editor.component.spec.ts +0 -25
  65. package/src/lib/components/bot-html-editor/bot-html-editor.component.ts +0 -152
  66. package/src/lib/components/bot.service.ts +0 -52
  67. package/src/lib/components/chat-drawer/chat-drawer.component.html +0 -1586
  68. package/src/lib/components/chat-drawer/chat-drawer.component.scss +0 -2907
  69. package/src/lib/components/chat-drawer/chat-drawer.component.ts +0 -2143
  70. package/src/lib/components/chatbot/chatbot.component.html +0 -37
  71. package/src/lib/components/chatbot/chatbot.component.scss +0 -97
  72. package/src/lib/components/chatbot/chatbot.component.ts +0 -44
  73. package/src/lib/components/conversation.service.spec.ts +0 -16
  74. package/src/lib/components/conversation.service.ts +0 -54
  75. package/src/lib/components/socket-service.service.spec.ts +0 -16
  76. package/src/lib/components/socket-service.service.ts +0 -77
  77. package/src/lib/components/translations/translation.service.ts +0 -221
  78. package/src/lib/components/video-player/video-player.component.html +0 -51
  79. package/src/lib/components/video-player/video-player.component.scss +0 -262
  80. package/src/lib/components/video-player/video-player.component.ts +0 -148
  81. package/src/lib/hivegpt.module.ts +0 -18
  82. package/src/lib/models/video.ts +0 -36
  83. package/src/lib/pipes/safe-html.pipe.ts +0 -16
  84. package/src/lib/utils/utils.ts +0 -37
  85. package/tsconfig.lib.json +0 -25
  86. package/tsconfig.lib.prod.json +0 -10
  87. package/tsconfig.spec.json +0 -17
  88. package/tslint.json +0 -17
@@ -0,0 +1,50 @@
1
+ import { Component, Input } from '@angular/core';
2
+ export class ChatBotComponent {
3
+ constructor() {
4
+ this.visible = false;
5
+ }
6
+ toggle() {
7
+ this.visible = !this.visible;
8
+ }
9
+ }
10
+ ChatBotComponent.decorators = [
11
+ { type: Component, args: [{
12
+ selector: 'hivegpt-chatbot',
13
+ template: "<button mat-icon-button class=\"chat-button\" color=\"primary\" (click)=\"toggle()\">\n <mat-icon>chat</mat-icon>\n</button>\n\n<ng-container *ngIf=\"visible\">\n <hivegpt-chat-drawer\n [apiKey]=\"apiKey\"\n [bgBubbleAi]=\"bgBubbleAi\"\n [bgBubbleUser]=\"bgBubbleUser\"\n [bgGradient]=\"bgGradient\"\n [botName]=\"botName\"\n [closeButtonbgColor]=\"closeButtonbgColor\"\n [closeButtonColor]=\"closeButtonColor\"\n [credentials]=\"credentials\"\n [dateTextColor]=\"dateTextColor\"\n [dateTimeColor]=\"dateTimeColor\"\n [eventId]=\"eventId\"\n [eventName]=\"eventName\"\n [formFieldBgColor]=\"formFieldBgColor\"\n [formFieldTextColor]=\"formFieldTextColor\"\n [fullView]=\"fullView\"\n [greeting]=\"greeting\"\n [gradientColors]=\"gradientColors\"\n [messageTextColorAi]=\"messageTextColorAi\"\n [messageTextColorUser]=\"messageTextColorUser\"\n [sendButtonColor]=\"sendButtonColor\"\n [sendButtonTextColor]=\"sendButtonTextColor\"\n [showClose]=\"showClose\"\n [thumbsDownMessages]=\"thumbsDownMessages\"\n [thumbsUpMessage]=\"thumbsUpMessage\"\n [unknownResponses]=\"unknownResponses\"\n [useOpenAi]=\"useOpenAi\"\n [userId]=\"userId\"\n [botId]=\"botId\"\n >\n </hivegpt-chat-drawer>\n</ng-container>\n",
14
+ styles: ["::-webkit-scrollbar{width:5px}::-webkit-scrollbar-track{background:#f1f1f1}::-webkit-scrollbar-thumb,::-webkit-scrollbar-thumb:hover{background:#e5ccbc}.spinner{align-items:center;display:flex;gap:2px;justify-content:center}.spinner>div{animation:bouncedelay 1.4s ease-in-out infinite;animation-fill-mode:both;background-color:#173330;border-radius:100%;display:inline-block;height:5px;width:5px}.spinner .bounce1{animation-delay:-.32s}.spinner .bounce2{animation-delay:-.16s}@keyframes bouncedelay{0%,80%,to{-webkit-transform:scale(0);transform:scale(0)}40%{-webkit-transform:scale(1);transform:scale(1)}}.chat-button{align-items:center;background:#17235b;border:#17235b;border-radius:50%;bottom:20px;color:#fff;display:inline-flex;font-size:24px;height:50px;justify-content:center;position:fixed;right:20px;width:50px}"]
15
+ },] }
16
+ ];
17
+ ChatBotComponent.propDecorators = {
18
+ userId: [{ type: Input }],
19
+ apiKey: [{ type: Input }],
20
+ botName: [{ type: Input }],
21
+ botSkills: [{ type: Input }],
22
+ botId: [{ type: Input }],
23
+ closeButtonColor: [{ type: Input }],
24
+ gradientColors: [{ type: Input }],
25
+ greeting: [{ type: Input }],
26
+ sendButtonColor: [{ type: Input }],
27
+ useOpenAi: [{ type: Input }],
28
+ showClose: [{ type: Input }],
29
+ bgGradient: [{ type: Input }],
30
+ sendButtonTextColor: [{ type: Input }],
31
+ fullView: [{ type: Input }],
32
+ bgBubbleAi: [{ type: Input }],
33
+ bgBubbleUser: [{ type: Input }],
34
+ closeButtonbgColor: [{ type: Input }],
35
+ messageTextColorAi: [{ type: Input }],
36
+ messageTextColorUser: [{ type: Input }],
37
+ dateTimeColor: [{ type: Input }],
38
+ dateTextColor: [{ type: Input }],
39
+ formFieldBgColor: [{ type: Input }],
40
+ formFieldTextColor: [{ type: Input }],
41
+ thumbsUpMessage: [{ type: Input }],
42
+ thumbsDownMessages: [{ type: Input }],
43
+ timezone: [{ type: Input }],
44
+ eventName: [{ type: Input }],
45
+ credentials: [{ type: Input }],
46
+ unknownResponses: [{ type: Input }],
47
+ rules: [{ type: Input }],
48
+ eventId: [{ type: Input }]
49
+ };
50
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdGJvdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiL21udC81MGIzY2RlYS1lMjk3LTQzNWMtYWQ5Yy0wNDgzYzk1YzZkMjUvcHJvZmVzc2lvbmFsL0hpdmVBSS1QYWNrYWdlcy9Bbmd1bGFyL3Byb2plY3RzL2hpdmVncHQvZXZlbnRzZ3B0LWFuZ3VsYXIvc3JjLyIsInNvdXJjZXMiOlsibGliL2NvbXBvbmVudHMvY2hhdGJvdC9jaGF0Ym90LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQU1qRCxNQUFNLE9BQU8sZ0JBQWdCO0lBTDdCO1FBcUNFLFlBQU8sR0FBRyxLQUFLLENBQUM7SUFLbEIsQ0FBQztJQUhDLE1BQU07UUFDSixJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUMvQixDQUFDOzs7WUF6Q0YsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxpQkFBaUI7Z0JBQzNCLCt0Q0FBdUM7O2FBRXhDOzs7cUJBRUUsS0FBSztxQkFDTCxLQUFLO3NCQUNMLEtBQUs7d0JBQ0wsS0FBSztvQkFDTCxLQUFLOytCQUNMLEtBQUs7NkJBQ0wsS0FBSzt1QkFDTCxLQUFLOzhCQUNMLEtBQUs7d0JBQ0wsS0FBSzt3QkFDTCxLQUFLO3lCQUNMLEtBQUs7a0NBQ0wsS0FBSzt1QkFDTCxLQUFLO3lCQUNMLEtBQUs7MkJBQ0wsS0FBSztpQ0FDTCxLQUFLO2lDQUNMLEtBQUs7bUNBQ0wsS0FBSzs0QkFDTCxLQUFLOzRCQUNMLEtBQUs7K0JBQ0wsS0FBSztpQ0FDTCxLQUFLOzhCQUNMLEtBQUs7aUNBQ0wsS0FBSzt1QkFDTCxLQUFLO3dCQUNMLEtBQUs7MEJBQ0wsS0FBSzsrQkFDTCxLQUFLO29CQUNMLEtBQUs7c0JBQ0wsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2hpdmVncHQtY2hhdGJvdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9jaGF0Ym90LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY2hhdGJvdC5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBDaGF0Qm90Q29tcG9uZW50IHtcbiAgQElucHV0KCkgdXNlcklkITogc3RyaW5nO1xuICBASW5wdXQoKSBhcGlLZXkhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGJvdE5hbWUhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGJvdFNraWxscyE6IHN0cmluZztcbiAgQElucHV0KCkgYm90SWQhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGNsb3NlQnV0dG9uQ29sb3IhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGdyYWRpZW50Q29sb3JzITogc3RyaW5nW107XG4gIEBJbnB1dCgpIGdyZWV0aW5nITogc3RyaW5nO1xuICBASW5wdXQoKSBzZW5kQnV0dG9uQ29sb3IhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHVzZU9wZW5BaSE6IGJvb2xlYW47XG4gIEBJbnB1dCgpIHNob3dDbG9zZSE6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGJnR3JhZGllbnQhOiBzdHJpbmdbXTtcbiAgQElucHV0KCkgc2VuZEJ1dHRvblRleHRDb2xvciE6IHN0cmluZztcbiAgQElucHV0KCkgZnVsbFZpZXchOiBib29sZWFuO1xuICBASW5wdXQoKSBiZ0J1YmJsZUFpITogc3RyaW5nO1xuICBASW5wdXQoKSBiZ0J1YmJsZVVzZXIhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGNsb3NlQnV0dG9uYmdDb2xvciE6IHN0cmluZztcbiAgQElucHV0KCkgbWVzc2FnZVRleHRDb2xvckFpITogc3RyaW5nO1xuICBASW5wdXQoKSBtZXNzYWdlVGV4dENvbG9yVXNlciE6IHN0cmluZztcbiAgQElucHV0KCkgZGF0ZVRpbWVDb2xvciE6IHN0cmluZztcbiAgQElucHV0KCkgZGF0ZVRleHRDb2xvciE6IHN0cmluZztcbiAgQElucHV0KCkgZm9ybUZpZWxkQmdDb2xvciE6IHN0cmluZztcbiAgQElucHV0KCkgZm9ybUZpZWxkVGV4dENvbG9yITogc3RyaW5nO1xuICBASW5wdXQoKSB0aHVtYnNVcE1lc3NhZ2UhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHRodW1ic0Rvd25NZXNzYWdlcyE6IHN0cmluZ1tdO1xuICBASW5wdXQoKSB0aW1lem9uZSE6IHN0cmluZztcbiAgQElucHV0KCkgZXZlbnROYW1lITogc3RyaW5nO1xuICBASW5wdXQoKSBjcmVkZW50aWFscyE6IFtdO1xuICBASW5wdXQoKSB1bmtub3duUmVzcG9uc2VzITogW107XG4gIEBJbnB1dCgpIHJ1bGVzITogc3RyaW5nO1xuICBASW5wdXQoKSBldmVudElkITogc3RyaW5nO1xuICB2aXNpYmxlID0gZmFsc2U7XG5cbiAgdG9nZ2xlKCkge1xuICAgIHRoaXMudmlzaWJsZSA9ICF0aGlzLnZpc2libGU7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,49 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { Subject } from 'rxjs';
3
+ import * as i0 from "@angular/core";
4
+ export class ConversationService {
5
+ constructor() {
6
+ this.conversationStorageKeyPrefix = 'conversationKey_';
7
+ this.sessionStorageKeyPrefix = 'sessionKey_';
8
+ this.userSpecificNotification = new Subject();
9
+ }
10
+ generateKey() {
11
+ const timestamp = Math.floor(new Date().getTime() / 1000).toString(16);
12
+ const randomHex = 'xxxxxxxxxxxxxxxx'.replace(/[x]/g, () => {
13
+ return Math.floor(Math.random() * 16).toString(16);
14
+ });
15
+ return timestamp + randomHex;
16
+ }
17
+ getKey(botId, resetKey = false) {
18
+ const storageKey = `${this.conversationStorageKeyPrefix}${botId}`;
19
+ let value = localStorage.getItem(storageKey);
20
+ if (!value || resetKey) {
21
+ value = this.generateKey();
22
+ localStorage.setItem(storageKey, value);
23
+ }
24
+ return value;
25
+ }
26
+ getSessionKey(sessionId, resetKey = false) {
27
+ const storageKey = `${this.sessionStorageKeyPrefix}${sessionId}`;
28
+ let value = localStorage.getItem(storageKey);
29
+ if (!value || resetKey) {
30
+ value = this.generateKey();
31
+ localStorage.setItem(storageKey, value);
32
+ }
33
+ return value;
34
+ }
35
+ sendValidatedUserData(message) {
36
+ this.userSpecificNotification.next(message);
37
+ }
38
+ getUserSpecificNotification() {
39
+ return this.userSpecificNotification.asObservable();
40
+ }
41
+ }
42
+ ConversationService.ɵprov = i0.ɵɵdefineInjectable({ factory: function ConversationService_Factory() { return new ConversationService(); }, token: ConversationService, providedIn: "root" });
43
+ ConversationService.decorators = [
44
+ { type: Injectable, args: [{
45
+ providedIn: 'root',
46
+ },] }
47
+ ];
48
+ ConversationService.ctorParameters = () => [];
49
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVyc2F0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiL21udC81MGIzY2RlYS1lMjk3LTQzNWMtYWQ5Yy0wNDgzYzk1YzZkMjUvcHJvZmVzc2lvbmFsL0hpdmVBSS1QYWNrYWdlcy9Bbmd1bGFyL3Byb2plY3RzL2hpdmVncHQvZXZlbnRzZ3B0LWFuZ3VsYXIvc3JjLyIsInNvdXJjZXMiOlsibGliL2NvbXBvbmVudHMvY29udmVyc2F0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQUszQyxNQUFNLE9BQU8sbUJBQW1CO0lBTTlCO1FBTFEsaUNBQTRCLEdBQUcsa0JBQWtCLENBQUM7UUFDbEQsNEJBQXVCLEdBQUcsYUFBYSxDQUFDO1FBRXhDLDZCQUF3QixHQUFpQixJQUFJLE9BQU8sRUFBTyxDQUFDO0lBRXBELENBQUM7SUFFakIsV0FBVztRQUNULE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDdkUsTUFBTSxTQUFTLEdBQUcsa0JBQWtCLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUU7WUFDeEQsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDckQsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLFNBQVMsR0FBRyxTQUFTLENBQUM7SUFDL0IsQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFhLEVBQUUsV0FBb0IsS0FBSztRQUM3QyxNQUFNLFVBQVUsR0FBRyxHQUFHLElBQUksQ0FBQyw0QkFBNEIsR0FBRyxLQUFLLEVBQUUsQ0FBQztRQUNsRSxJQUFJLEtBQUssR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRTdDLElBQUksQ0FBQyxLQUFLLElBQUksUUFBUSxFQUFFO1lBQ3RCLEtBQUssR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDM0IsWUFBWSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLENBQUM7U0FDekM7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxhQUFhLENBQUMsU0FBaUIsRUFBRSxXQUFvQixLQUFLO1FBQ3hELE1BQU0sVUFBVSxHQUFHLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixHQUFHLFNBQVMsRUFBRSxDQUFDO1FBQ2pFLElBQUksS0FBSyxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFN0MsSUFBSSxDQUFDLEtBQUssSUFBSSxRQUFRLEVBQUU7WUFDdEIsS0FBSyxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUMzQixZQUFZLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQztTQUN6QztRQUVELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELHFCQUFxQixDQUFDLE9BQVk7UUFDaEMsSUFBSSxDQUFDLHdCQUF3QixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRUQsMkJBQTJCO1FBQ3pCLE9BQU8sSUFBSSxDQUFDLHdCQUF3QixDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3RELENBQUM7Ozs7WUFqREYsVUFBVSxTQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgQ29udmVyc2F0aW9uU2VydmljZSB7XG4gIHByaXZhdGUgY29udmVyc2F0aW9uU3RvcmFnZUtleVByZWZpeCA9ICdjb252ZXJzYXRpb25LZXlfJztcbiAgcHJpdmF0ZSBzZXNzaW9uU3RvcmFnZUtleVByZWZpeCA9ICdzZXNzaW9uS2V5Xyc7XG5cbiAgcHJpdmF0ZSB1c2VyU3BlY2lmaWNOb3RpZmljYXRpb246IFN1YmplY3Q8YW55PiA9IG5ldyBTdWJqZWN0PGFueT4oKTtcblxuICBjb25zdHJ1Y3RvcigpIHsgfVxuXG4gIGdlbmVyYXRlS2V5KCk6IHN0cmluZyB7XG4gICAgY29uc3QgdGltZXN0YW1wID0gTWF0aC5mbG9vcihuZXcgRGF0ZSgpLmdldFRpbWUoKSAvIDEwMDApLnRvU3RyaW5nKDE2KTtcbiAgICBjb25zdCByYW5kb21IZXggPSAneHh4eHh4eHh4eHh4eHh4eCcucmVwbGFjZSgvW3hdL2csICgpID0+IHtcbiAgICAgIHJldHVybiBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAxNikudG9TdHJpbmcoMTYpO1xuICAgIH0pO1xuICAgIHJldHVybiB0aW1lc3RhbXAgKyByYW5kb21IZXg7XG4gIH1cblxuICBnZXRLZXkoYm90SWQ6IHN0cmluZywgcmVzZXRLZXk6IGJvb2xlYW4gPSBmYWxzZSk6IHN0cmluZyB7XG4gICAgY29uc3Qgc3RvcmFnZUtleSA9IGAke3RoaXMuY29udmVyc2F0aW9uU3RvcmFnZUtleVByZWZpeH0ke2JvdElkfWA7XG4gICAgbGV0IHZhbHVlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oc3RvcmFnZUtleSk7XG5cbiAgICBpZiAoIXZhbHVlIHx8IHJlc2V0S2V5KSB7XG4gICAgICB2YWx1ZSA9IHRoaXMuZ2VuZXJhdGVLZXkoKTtcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKHN0b3JhZ2VLZXksIHZhbHVlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuICBnZXRTZXNzaW9uS2V5KHNlc3Npb25JZDogc3RyaW5nLCByZXNldEtleTogYm9vbGVhbiA9IGZhbHNlKTogc3RyaW5nIHtcbiAgICBjb25zdCBzdG9yYWdlS2V5ID0gYCR7dGhpcy5zZXNzaW9uU3RvcmFnZUtleVByZWZpeH0ke3Nlc3Npb25JZH1gO1xuICAgIGxldCB2YWx1ZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKHN0b3JhZ2VLZXkpO1xuXG4gICAgaWYgKCF2YWx1ZSB8fCByZXNldEtleSkge1xuICAgICAgdmFsdWUgPSB0aGlzLmdlbmVyYXRlS2V5KCk7XG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShzdG9yYWdlS2V5LCB2YWx1ZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgc2VuZFZhbGlkYXRlZFVzZXJEYXRhKG1lc3NhZ2U6IGFueSkge1xuICAgIHRoaXMudXNlclNwZWNpZmljTm90aWZpY2F0aW9uLm5leHQobWVzc2FnZSk7XG4gIH1cblxuICBnZXRVc2VyU3BlY2lmaWNOb3RpZmljYXRpb24oKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy51c2VyU3BlY2lmaWNOb3RpZmljYXRpb24uYXNPYnNlcnZhYmxlKCk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,72 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { ConversationService } from './conversation.service';
3
+ import { NotificationSocket } from './NotificationSocket';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "./conversation.service";
6
+ import * as i2 from "./NotificationSocket";
7
+ export class SocketService {
8
+ constructor(conversationService, notificationSocket) {
9
+ this.conversationService = conversationService;
10
+ this.notificationSocket = notificationSocket;
11
+ this.isCommonSocketInitialized = false;
12
+ this.isUserSpecificSocketInitialized = false;
13
+ this.isUserSpecificEventReleased = true;
14
+ this.messageQueue = [];
15
+ this.releaseInterval = 1000;
16
+ this.intervalSetup = false;
17
+ this.startReleasingMessages();
18
+ }
19
+ isSocketInitialized(isCommon) {
20
+ return isCommon
21
+ ? this.isCommonSocketInitialized
22
+ : this.isUserSpecificSocketInitialized &&
23
+ !this.isUserSpecificEventReleased;
24
+ }
25
+ disconnectSocketConnection() {
26
+ this.notificationSocket.disconnect();
27
+ }
28
+ connectSocketConnection() {
29
+ this.notificationSocket.connect();
30
+ }
31
+ registerUserSpecificHiveSocket(botId, conversation_id, org_id) {
32
+ const commonNotification = 'commonNotification';
33
+ const groupId = `Hive_AI_Notifs_${botId}_${conversation_id}`;
34
+ const groupId_org = `Hive_AI_Notifs_${org_id}`;
35
+ // Remove any pre-existing listeners for commonNotification
36
+ // this.notificationSocket.removeAllListeners(commonNotification);
37
+ // Join the group again with updated botId and conversation_id
38
+ this.notificationSocket.emit('joinData', { groupId });
39
+ this.notificationSocket.emit('joinData', { groupId: groupId_org });
40
+ // Re-register for common notifications
41
+ this.notificationSocket.fromEvent(commonNotification).subscribe((res) => {
42
+ console.log('Received commonNotification:', res);
43
+ this.conversationService.sendValidatedUserData(res);
44
+ }, (error) => {
45
+ console.error('Error receiving commonNotification:', error);
46
+ });
47
+ }
48
+ startReleasingMessages() {
49
+ if (!this.intervalSetup) {
50
+ setInterval(() => {
51
+ if (this.messageQueue.length > 0) {
52
+ const message = this.messageQueue.shift(); // Remove the first message from the queue
53
+ // Handle the message here, e.g., send it to the server or process it
54
+ console.log('Releasing message from queue:', message);
55
+ // this.campaignService.sendValidatedUserData(message);
56
+ }
57
+ }, this.releaseInterval);
58
+ this.intervalSetup = true; // Prevents multiple intervals
59
+ }
60
+ }
61
+ }
62
+ SocketService.ɵprov = i0.ɵɵdefineInjectable({ factory: function SocketService_Factory() { return new SocketService(i0.ɵɵinject(i1.ConversationService), i0.ɵɵinject(i2.NotificationSocket)); }, token: SocketService, providedIn: "root" });
63
+ SocketService.decorators = [
64
+ { type: Injectable, args: [{
65
+ providedIn: 'root',
66
+ },] }
67
+ ];
68
+ SocketService.ctorParameters = () => [
69
+ { type: ConversationService },
70
+ { type: NotificationSocket }
71
+ ];
72
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ja2V0LXNlcnZpY2Uuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIvbW50LzUwYjNjZGVhLWUyOTctNDM1Yy1hZDljLTA0ODNjOTVjNmQyNS9wcm9mZXNzaW9uYWwvSGl2ZUFJLVBhY2thZ2VzL0FuZ3VsYXIvcHJvamVjdHMvaGl2ZWdwdC9ldmVudHNncHQtYW5ndWxhci9zcmMvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50cy9zb2NrZXQtc2VydmljZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFJM0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7Ozs7QUFLMUQsTUFBTSxPQUFPLGFBQWE7SUFTeEIsWUFDVSxtQkFBd0MsRUFDeEMsa0JBQXNDO1FBRHRDLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUFDeEMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQVR4Qyw4QkFBeUIsR0FBRyxLQUFLLENBQUM7UUFDbEMsb0NBQStCLEdBQUcsS0FBSyxDQUFDO1FBQ3hDLGdDQUEyQixHQUFHLElBQUksQ0FBQztRQUNuQyxpQkFBWSxHQUFVLEVBQUUsQ0FBQztRQUN6QixvQkFBZSxHQUFHLElBQUksQ0FBQztRQUN2QixrQkFBYSxHQUFZLEtBQUssQ0FBQztRQU1yQyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBRUQsbUJBQW1CLENBQUMsUUFBaUI7UUFDbkMsT0FBTyxRQUFRO1lBQ2IsQ0FBQyxDQUFDLElBQUksQ0FBQyx5QkFBeUI7WUFDaEMsQ0FBQyxDQUFDLElBQUksQ0FBQywrQkFBK0I7Z0JBQ3RDLENBQUMsSUFBSSxDQUFDLDJCQUEyQixDQUFDO0lBQ3RDLENBQUM7SUFFRCwwQkFBMEI7UUFDeEIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ3ZDLENBQUM7SUFDRCx1QkFBdUI7UUFDckIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ3BDLENBQUM7SUFDRCw4QkFBOEIsQ0FBQyxLQUFhLEVBQUUsZUFBdUIsRUFBRSxNQUFjO1FBQ25GLE1BQU0sa0JBQWtCLEdBQUcsb0JBQW9CLENBQUM7UUFDaEQsTUFBTSxPQUFPLEdBQUcsa0JBQWtCLEtBQUssSUFBSSxlQUFlLEVBQUUsQ0FBQztRQUM3RCxNQUFNLFdBQVcsR0FBRyxrQkFBa0IsTUFBTSxFQUFFLENBQUM7UUFFL0MsMkRBQTJEO1FBQzNELGtFQUFrRTtRQUVsRSw4REFBOEQ7UUFDOUQsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQ3RELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUM7UUFFbkUsdUNBQXVDO1FBQ3ZDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxTQUFTLENBQzdELENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDTixPQUFPLENBQUMsR0FBRyxDQUFDLDhCQUE4QixFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQ2pELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxxQkFBcUIsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN0RCxDQUFDLEVBQ0QsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNSLE9BQU8sQ0FBQyxLQUFLLENBQUMscUNBQXFDLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDOUQsQ0FBQyxDQUNGLENBQUM7SUFDSixDQUFDO0lBRU8sc0JBQXNCO1FBQzVCLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ3ZCLFdBQVcsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2YsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7b0JBQ2hDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQywwQ0FBMEM7b0JBQ3JGLHFFQUFxRTtvQkFDckUsT0FBTyxDQUFDLEdBQUcsQ0FBQywrQkFBK0IsRUFBRSxPQUFPLENBQUMsQ0FBQztvQkFDdEQsdURBQXVEO2lCQUN4RDtZQUNILENBQUMsRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7WUFDekIsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsQ0FBQyw4QkFBOEI7U0FDMUQ7SUFDSCxDQUFDOzs7O1lBcEVGLFVBQVUsU0FBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQjs7O1lBTFEsbUJBQW1CO1lBQ25CLGtCQUFrQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgd2ViU29ja2V0LCBXZWJTb2NrZXRTdWJqZWN0IH0gZnJvbSAncnhqcy93ZWJTb2NrZXQnO1xuaW1wb3J0IHsgQ29udmVyc2F0aW9uU2VydmljZSB9IGZyb20gJy4vY29udmVyc2F0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgTm90aWZpY2F0aW9uU29ja2V0IH0gZnJvbSAnLi9Ob3RpZmljYXRpb25Tb2NrZXQnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgU29ja2V0U2VydmljZSB7XG4gIHB1YmxpYyB0ZXN0TWVzc2FnZTogc3RyaW5nO1xuICBwcml2YXRlIGlzQ29tbW9uU29ja2V0SW5pdGlhbGl6ZWQgPSBmYWxzZTtcbiAgcHJpdmF0ZSBpc1VzZXJTcGVjaWZpY1NvY2tldEluaXRpYWxpemVkID0gZmFsc2U7XG4gIHByaXZhdGUgaXNVc2VyU3BlY2lmaWNFdmVudFJlbGVhc2VkID0gdHJ1ZTtcbiAgcHJpdmF0ZSBtZXNzYWdlUXVldWU6IGFueVtdID0gW107XG4gIHByaXZhdGUgcmVsZWFzZUludGVydmFsID0gMTAwMDtcbiAgcHJpdmF0ZSBpbnRlcnZhbFNldHVwOiBib29sZWFuID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjb252ZXJzYXRpb25TZXJ2aWNlOiBDb252ZXJzYXRpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgbm90aWZpY2F0aW9uU29ja2V0OiBOb3RpZmljYXRpb25Tb2NrZXRcbiAgKSB7XG4gICAgdGhpcy5zdGFydFJlbGVhc2luZ01lc3NhZ2VzKCk7XG4gIH1cblxuICBpc1NvY2tldEluaXRpYWxpemVkKGlzQ29tbW9uOiBib29sZWFuKSB7XG4gICAgcmV0dXJuIGlzQ29tbW9uXG4gICAgICA/IHRoaXMuaXNDb21tb25Tb2NrZXRJbml0aWFsaXplZFxuICAgICAgOiB0aGlzLmlzVXNlclNwZWNpZmljU29ja2V0SW5pdGlhbGl6ZWQgJiZcbiAgICAgICF0aGlzLmlzVXNlclNwZWNpZmljRXZlbnRSZWxlYXNlZDtcbiAgfVxuXG4gIGRpc2Nvbm5lY3RTb2NrZXRDb25uZWN0aW9uKCkge1xuICAgIHRoaXMubm90aWZpY2F0aW9uU29ja2V0LmRpc2Nvbm5lY3QoKTtcbiAgfVxuICBjb25uZWN0U29ja2V0Q29ubmVjdGlvbigpIHtcbiAgICB0aGlzLm5vdGlmaWNhdGlvblNvY2tldC5jb25uZWN0KCk7XG4gIH1cbiAgcmVnaXN0ZXJVc2VyU3BlY2lmaWNIaXZlU29ja2V0KGJvdElkOiBzdHJpbmcsIGNvbnZlcnNhdGlvbl9pZDogc3RyaW5nLCBvcmdfaWQ6IHN0cmluZykge1xuICAgIGNvbnN0IGNvbW1vbk5vdGlmaWNhdGlvbiA9ICdjb21tb25Ob3RpZmljYXRpb24nO1xuICAgIGNvbnN0IGdyb3VwSWQgPSBgSGl2ZV9BSV9Ob3RpZnNfJHtib3RJZH1fJHtjb252ZXJzYXRpb25faWR9YDtcbiAgICBjb25zdCBncm91cElkX29yZyA9IGBIaXZlX0FJX05vdGlmc18ke29yZ19pZH1gO1xuXG4gICAgLy8gUmVtb3ZlIGFueSBwcmUtZXhpc3RpbmcgbGlzdGVuZXJzIGZvciBjb21tb25Ob3RpZmljYXRpb25cbiAgICAvLyB0aGlzLm5vdGlmaWNhdGlvblNvY2tldC5yZW1vdmVBbGxMaXN0ZW5lcnMoY29tbW9uTm90aWZpY2F0aW9uKTtcblxuICAgIC8vIEpvaW4gdGhlIGdyb3VwIGFnYWluIHdpdGggdXBkYXRlZCBib3RJZCBhbmQgY29udmVyc2F0aW9uX2lkXG4gICAgdGhpcy5ub3RpZmljYXRpb25Tb2NrZXQuZW1pdCgnam9pbkRhdGEnLCB7IGdyb3VwSWQgfSk7XG4gICAgdGhpcy5ub3RpZmljYXRpb25Tb2NrZXQuZW1pdCgnam9pbkRhdGEnLCB7IGdyb3VwSWQ6IGdyb3VwSWRfb3JnIH0pO1xuXG4gICAgLy8gUmUtcmVnaXN0ZXIgZm9yIGNvbW1vbiBub3RpZmljYXRpb25zXG4gICAgdGhpcy5ub3RpZmljYXRpb25Tb2NrZXQuZnJvbUV2ZW50KGNvbW1vbk5vdGlmaWNhdGlvbikuc3Vic2NyaWJlKFxuICAgICAgKHJlcykgPT4ge1xuICAgICAgICBjb25zb2xlLmxvZygnUmVjZWl2ZWQgY29tbW9uTm90aWZpY2F0aW9uOicsIHJlcyk7XG4gICAgICAgIHRoaXMuY29udmVyc2F0aW9uU2VydmljZS5zZW5kVmFsaWRhdGVkVXNlckRhdGEocmVzKTtcbiAgICAgIH0sXG4gICAgICAoZXJyb3IpID0+IHtcbiAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgcmVjZWl2aW5nIGNvbW1vbk5vdGlmaWNhdGlvbjonLCBlcnJvcik7XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhcnRSZWxlYXNpbmdNZXNzYWdlcygpIHtcbiAgICBpZiAoIXRoaXMuaW50ZXJ2YWxTZXR1cCkge1xuICAgICAgc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5tZXNzYWdlUXVldWUubGVuZ3RoID4gMCkge1xuICAgICAgICAgIGNvbnN0IG1lc3NhZ2UgPSB0aGlzLm1lc3NhZ2VRdWV1ZS5zaGlmdCgpOyAvLyBSZW1vdmUgdGhlIGZpcnN0IG1lc3NhZ2UgZnJvbSB0aGUgcXVldWVcbiAgICAgICAgICAvLyBIYW5kbGUgdGhlIG1lc3NhZ2UgaGVyZSwgZS5nLiwgc2VuZCBpdCB0byB0aGUgc2VydmVyIG9yIHByb2Nlc3MgaXRcbiAgICAgICAgICBjb25zb2xlLmxvZygnUmVsZWFzaW5nIG1lc3NhZ2UgZnJvbSBxdWV1ZTonLCBtZXNzYWdlKTtcbiAgICAgICAgICAvLyB0aGlzLmNhbXBhaWduU2VydmljZS5zZW5kVmFsaWRhdGVkVXNlckRhdGEobWVzc2FnZSk7XG4gICAgICAgIH1cbiAgICAgIH0sIHRoaXMucmVsZWFzZUludGVydmFsKTtcbiAgICAgIHRoaXMuaW50ZXJ2YWxTZXR1cCA9IHRydWU7IC8vIFByZXZlbnRzIG11bHRpcGxlIGludGVydmFsc1xuICAgIH1cbiAgfVxufVxuIl19
@@ -0,0 +1,244 @@
1
+ import { Injectable } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class TranslationService {
4
+ constructor() {
5
+ this.eventId = null;
6
+ this.translationsData = [
7
+ {
8
+ Key: "Copy",
9
+ DefaultValue: "Copy",
10
+ Translations: {
11
+ en: "Copy",
12
+ fr: "Copier",
13
+ it: "Copia",
14
+ es: "Copiar",
15
+ de: "Kopieren",
16
+ "pt-br": "Copiar",
17
+ ar: "نسخ",
18
+ zh: "复制",
19
+ ru: "Копировать"
20
+ }
21
+ },
22
+ {
23
+ Key: "May I assist you with anything else",
24
+ DefaultValue: "Great. May I assist you with anything else?",
25
+ Translations: {
26
+ en: "Great. May I assist you with anything else?",
27
+ fr: "Parfait. Puis-je vous aider avec autre chose ?",
28
+ it: "Perfetto. Posso aiutarti con qualcos'altro?",
29
+ es: "Genial. ¿Puedo ayudarte con algo más?",
30
+ de: "Super. Kann ich Ihnen noch bei etwas anderem helfen?",
31
+ "pt-br": "Ótimo. Posso ajudar com mais alguma coisa?",
32
+ ar: "رائع. هل يمكنني مساعدتك في أي شيء آخر؟",
33
+ zh: "太好了。还有什么我可以帮您的吗?",
34
+ ru: "Отлично. Могу ли я помочь вам с чем-то ещё?"
35
+ }
36
+ },
37
+ {
38
+ Key: "We are sorry we've not been able to answer your question",
39
+ DefaultValue: "We are sorry we've not been able to answer your question. However, our dedicated support team is happy to help. Please <a href=\"mailto:support@social27.com\">click here</a> and a human agent will assist you as soon as possible.",
40
+ Translations: {
41
+ en: "We are sorry we've not been able to answer your question. However, our dedicated support team is happy to help. Please <a href=\"mailto:support@social27.com\">click here</a> and a human agent will assist you as soon as possible.",
42
+ fr: "Nous sommes désolés de ne pas avoir pu répondre à votre question. Cependant, notre équipe d'assistance se fera un plaisir de vous aider. Veuillez <a href=\"mailto:support@social27.com\">cliquer ici</a> et un agent humain vous assistera dès que possible.",
43
+ it: "Ci dispiace di non essere riusciti a rispondere alla tua domanda. Tuttavia, il nostro team di supporto dedicato sarà lieto di aiutarti. Ti preghiamo di <a href=\"mailto:support@social27.com\">fare clic qui</a> e un operatore umano ti assisterà al più presto.",
44
+ es: "Lamentamos no haber podido responder a tu pregunta. Sin embargo, nuestro equipo de soporte estará encantado de ayudarte. Por favor, <a href=\"mailto:support@social27.com\">haz clic aquí</a> y un agente humano te asistirá lo antes posible.",
45
+ de: "Es tut uns leid, dass wir Ihre Frage nicht beantworten konnten. Unser engagiertes Support-Team hilft Ihnen jedoch gerne weiter. Bitte <a href=\"mailto:support@social27.com\">klicken Sie hier</a>, und ein menschlicher Mitarbeiter wird Ihnen so bald wie möglich helfen.",
46
+ "pt-br": "Lamentamos não ter conseguido responder à sua pergunta. No entanto, nossa equipe de suporte dedicada ficará feliz em ajudar. Por favor, <a href=\"mailto:support@social27.com\">clique aqui</a> e um agente humano o ajudará o mais rápido possível.",
47
+ ar: "نأسف لعدم تمكننا من الإجابة على سؤالك. ومع ذلك، يسعد فريق الدعم المخصص لدينا بمساعدتك. يرجى <a href=\"mailto:support@social27.com\">النقر هنا</a> وسيساعدك أحد الوكلاء البشريين في أقرب وقت ممكن.",
48
+ zh: "很抱歉我们未能回答您的问题。不过,我们的专属支持团队很乐意为您提供帮助。请<a href=\"mailto:support@social27.com\">点击这里</a>,人工客服将尽快为您提供协助。",
49
+ ru: "К сожалению, мы не смогли ответить на ваш вопрос. Однако наша служба поддержки с радостью вам поможет. Пожалуйста, <a href=\"mailto:support@social27.com\">нажмите здесь</a>, и наш оператор свяжется с вами как можно скорее."
50
+ }
51
+ },
52
+ {
53
+ Key: 'Ask anything',
54
+ DefaultValue: 'Ask anything',
55
+ Translations: {
56
+ en: 'Ask anything',
57
+ fr: 'Demandez ce que vous voulez',
58
+ it: 'Chiedi qualsiasi cosa',
59
+ es: 'Pregunta lo que quieras',
60
+ de: 'Frag alles',
61
+ 'pt-br': 'Pergunte qualquer coisa',
62
+ ar: 'اسأل أي شيء',
63
+ zh: '随便问',
64
+ ru: 'Спросите что угодно',
65
+ },
66
+ },
67
+ {
68
+ Key: 'Assistant',
69
+ DefaultValue: 'Assistant',
70
+ Translations: {
71
+ en: 'Assistant',
72
+ fr: 'Assistant',
73
+ it: 'Assistente',
74
+ es: 'Asistente',
75
+ de: 'Assistent',
76
+ 'pt-br': 'Assistente',
77
+ ar: 'مساعد',
78
+ zh: '助手',
79
+ ru: 'Ассистент',
80
+ },
81
+ },
82
+ {
83
+ Key: 'Your personal or company information is kept private and secure within this chat.',
84
+ DefaultValue: 'Your personal or company information is kept private and secure within this chat.',
85
+ Translations: {
86
+ en: 'Your personal or company information is kept private and secure within this chat.',
87
+ fr: 'Vos informations personnelles ou celles de votre entreprise sont conservées privées et sécurisées dans cette conversation.',
88
+ it: "Le tue informazioni personali o aziendali sono mantenute private e sicure all'interno di questa chat.",
89
+ es: 'Tu información personal o de la empresa se mantiene privada y segura dentro de este chat.',
90
+ de: 'Ihre persönlichen oder geschäftlichen Informationen bleiben in diesem Chat privat und sicher.',
91
+ 'pt-br': 'Suas informações pessoais ou da empresa são mantidas privadas e seguras dentro deste chat.',
92
+ ar: 'تظل معلوماتك الشخصية أو معلومات شركتك خاصة وآمنة داخل هذه المحادثة.',
93
+ zh: '您的个人或公司信息在此聊天中保持私密和安全。',
94
+ ru: 'Ваша личная или корпоративная информация остается конфиденциальной и защищенной в этом чате.',
95
+ },
96
+ },
97
+ {
98
+ Key: 'Send message',
99
+ DefaultValue: 'Send message',
100
+ Translations: {
101
+ en: 'Send message',
102
+ fr: 'Envoyer un message',
103
+ it: 'Invia messaggio',
104
+ es: 'Enviar mensaje',
105
+ de: 'Nachricht senden',
106
+ 'pt-br': 'Enviar mensagem',
107
+ ar: 'إرسال رسالة',
108
+ zh: '发送消息',
109
+ ru: 'Отправить сообщение',
110
+ },
111
+ },
112
+ {
113
+ Key: 'Platform GPT',
114
+ DefaultValue: 'Platform GPT',
115
+ Translations: {
116
+ en: 'Platform GPT',
117
+ fr: 'Plateforme GPT',
118
+ it: 'Piattaforma GPT',
119
+ es: 'Plataforma GPT',
120
+ de: 'Plattform GPT',
121
+ 'pt-br': 'Plataforma GPT',
122
+ ar: 'منصة GPT',
123
+ zh: '平台 GPT',
124
+ ru: 'Платформа GPT',
125
+ },
126
+ },
127
+ {
128
+ Key: 'New Chat',
129
+ DefaultValue: 'New Chat',
130
+ Translations: {
131
+ en: 'New Chat',
132
+ fr: 'Nouvelle conversation',
133
+ it: 'Nuova chat',
134
+ es: 'Nuevo chat',
135
+ de: 'Neuer Chat',
136
+ 'pt-br': 'Novo chat',
137
+ ar: 'محادثة جديدة',
138
+ zh: '新聊天',
139
+ ru: 'Новый чат',
140
+ },
141
+ },
142
+ {
143
+ Key: 'You',
144
+ DefaultValue: 'You',
145
+ Translations: {
146
+ en: 'You',
147
+ fr: 'Vous',
148
+ it: 'Tu',
149
+ es: 'Tú',
150
+ de: 'Du',
151
+ 'pt-br': 'Você',
152
+ ar: 'أنت',
153
+ zh: '您',
154
+ ru: 'Вы',
155
+ },
156
+ },
157
+ {
158
+ Key: 'Write your message',
159
+ DefaultValue: 'Write your message',
160
+ Translations: {
161
+ en: 'Write your message',
162
+ fr: 'Écrivez votre message',
163
+ it: 'Scrivi il tuo messaggio',
164
+ es: 'Escribe tu mensaje',
165
+ de: 'Schreiben Sie Ihre Nachricht',
166
+ 'pt-br': 'Escreva sua mensagem',
167
+ ar: 'اكتب رسالتك',
168
+ zh: '写下您的消息',
169
+ ru: 'Напишите ваше сообщение',
170
+ },
171
+ },
172
+ {
173
+ Key: 'Send',
174
+ DefaultValue: 'Send',
175
+ Translations: {
176
+ en: 'Send',
177
+ fr: 'Envoyer',
178
+ it: 'Invia',
179
+ es: 'Enviar',
180
+ de: 'Senden',
181
+ 'pt-br': 'Enviar',
182
+ ar: 'إرسال',
183
+ zh: '发送',
184
+ ru: 'Отправить',
185
+ },
186
+ },
187
+ {
188
+ Key: 'Call Interface',
189
+ DefaultValue: 'Call Interface',
190
+ Translations: {
191
+ en: 'Call Interface',
192
+ fr: "Interface d'appel",
193
+ it: 'Interfaccia chiamata',
194
+ es: 'Interfaz de llamada',
195
+ de: 'Anrufoberfläche',
196
+ 'pt-br': 'Interface de chamada',
197
+ ar: 'واجهة الاتصال',
198
+ zh: '呼叫界面',
199
+ ru: 'Интерфейс звонка',
200
+ },
201
+ },
202
+ {
203
+ Key: 'Close',
204
+ DefaultValue: 'Close',
205
+ Translations: {
206
+ en: 'Close',
207
+ fr: 'Fermer',
208
+ it: 'Chiudi',
209
+ es: 'Cerrar',
210
+ de: 'Schließen',
211
+ 'pt-br': 'Fechar',
212
+ ar: 'إغلاق',
213
+ zh: '关闭',
214
+ ru: 'Закрыть',
215
+ },
216
+ },
217
+ ];
218
+ }
219
+ setEventId(id) {
220
+ this.eventId = id;
221
+ }
222
+ getTranslation(key) {
223
+ console.log('eventId', this.eventId);
224
+ // let lang = String(this.getLang(this.eventId)).replace(/^"|"$/g, '');
225
+ const lang = (localStorage.getItem('defaultLanguage-' + this.eventId) || 'en').replace(/^"|"$/g, '');
226
+ const entry = this.translationsData.find((item) => item.Key === key);
227
+ if (!entry) {
228
+ return key; // fallback
229
+ }
230
+ return entry.Translations[lang] || entry.DefaultValue || key;
231
+ }
232
+ getLang(eventId) {
233
+ const suffix = eventId ? `-${eventId}` : '';
234
+ const storageKey = `defaultLanguage${suffix}`;
235
+ return localStorage.getItem(storageKey) || 'en';
236
+ }
237
+ }
238
+ TranslationService.ɵprov = i0.ɵɵdefineInjectable({ factory: function TranslationService_Factory() { return new TranslationService(); }, token: TranslationService, providedIn: "root" });
239
+ TranslationService.decorators = [
240
+ { type: Injectable, args: [{
241
+ providedIn: 'root',
242
+ },] }
243
+ ];
244
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIvbW50LzUwYjNjZGVhLWUyOTctNDM1Yy1hZDljLTA0ODNjOTVjNmQyNS9wcm9mZXNzaW9uYWwvSGl2ZUFJLVBhY2thZ2VzL0FuZ3VsYXIvcHJvamVjdHMvaGl2ZWdwdC9ldmVudHNncHQtYW5ndWxhci9zcmMvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50cy90cmFuc2xhdGlvbnMvdHJhbnNsYXRpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUF1QixNQUFNLGVBQWUsQ0FBQzs7QUFNaEUsTUFBTSxPQUFPLGtCQUFrQjtJQUgvQjtRQUlVLFlBQU8sR0FBa0IsSUFBSSxDQUFDO1FBNkI5QixxQkFBZ0IsR0FBVTtZQUNoQztnQkFDRixHQUFHLEVBQUUsTUFBTTtnQkFDWCxZQUFZLEVBQUUsTUFBTTtnQkFDcEIsWUFBWSxFQUFFO29CQUNaLEVBQUUsRUFBRSxNQUFNO29CQUNWLEVBQUUsRUFBRSxRQUFRO29CQUNaLEVBQUUsRUFBRSxPQUFPO29CQUNYLEVBQUUsRUFBRSxRQUFRO29CQUNaLEVBQUUsRUFBRSxVQUFVO29CQUNkLE9BQU8sRUFBRSxRQUFRO29CQUNqQixFQUFFLEVBQUUsS0FBSztvQkFDVCxFQUFFLEVBQUUsSUFBSTtvQkFDUixFQUFFLEVBQUUsWUFBWTtpQkFDakI7YUFDRjtZQUVHO2dCQUVBLEdBQUcsRUFBRSxxQ0FBcUM7Z0JBQzFDLFlBQVksRUFBRSw2Q0FBNkM7Z0JBQzNELFlBQVksRUFBRTtvQkFDVixFQUFFLEVBQUUsNkNBQTZDO29CQUNqRCxFQUFFLEVBQUUsZ0RBQWdEO29CQUNwRCxFQUFFLEVBQUUsNkNBQTZDO29CQUNqRCxFQUFFLEVBQUUsdUNBQXVDO29CQUMzQyxFQUFFLEVBQUUsc0RBQXNEO29CQUMxRCxPQUFPLEVBQUUsNENBQTRDO29CQUNyRCxFQUFFLEVBQUUsd0NBQXdDO29CQUM1QyxFQUFFLEVB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RyxDQUNYLFlBQVksQ0FBQyxPQUFPLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLElBQUksQ0FDaEUsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRXhCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUssR0FBRyxDQUFDLENBQUM7UUFFckUsSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNWLE9BQU8sR0FBRyxDQUFDLENBQUMsV0FBVztTQUN4QjtRQUVELE9BQU8sS0FBSyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUMsWUFBWSxJQUFJLEdBQUcsQ0FBQztJQUMvRCxDQUFDO0lBRU8sT0FBTyxDQUFDLE9BQXVCO1FBQ3JDLE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQzVDLE1BQU0sVUFBVSxHQUFHLGtCQUFrQixNQUFNLEVBQUUsQ0FBQztRQUU5QyxPQUFPLFlBQVksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLElBQUksSUFBSSxDQUFDO0lBQ2xELENBQUM7Ozs7WUEvQkYsVUFBVSxTQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0LCBQTEFURk9STV9JRCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgVHJhbnNsYXRpb25TZXJ2aWNlIHtcbiAgcHJpdmF0ZSBldmVudElkOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcblxuICBzZXRFdmVudElkKGlkOiBzdHJpbmcpIHtcbiAgICB0aGlzLmV2ZW50SWQgPSBpZDtcbiAgfVxuXG4gIGdldFRyYW5zbGF0aW9uKGtleTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zb2xlLmxvZygnZXZlbnRJZCcsIHRoaXMuZXZlbnRJZCk7XG4gICAgLy8gbGV0IGxhbmcgPSBTdHJpbmcodGhpcy5nZXRMYW5nKHRoaXMuZXZlbnRJZCkpLnJlcGxhY2UoL15cInxcIiQvZywgJycpO1xuICAgIGNvbnN0IGxhbmcgPSAoXG4gICAgICBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnZGVmYXVsdExhbmd1YWdlLScgKyB0aGlzLmV2ZW50SWQpIHx8ICdlbidcbiAgICApLnJlcGxhY2UoL15cInxcIiQvZywgJycpO1xuXG4gICAgY29uc3QgZW50cnkgPSB0aGlzLnRyYW5zbGF0aW9uc0RhdGEuZmluZCgoaXRlbSkgPT4gaXRlbS5LZXkgPT09IGtleSk7XG5cbiAgICBpZiAoIWVudHJ5KSB7XG4gICAgICByZXR1cm4ga2V5OyAvLyBmYWxsYmFja1xuICAgIH1cblxuICAgIHJldHVybiBlbnRyeS5UcmFuc2xhdGlvbnNbbGFuZ10gfHwgZW50cnkuRGVmYXVsdFZhbHVlIHx8IGtleTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0TGFuZyhldmVudElkPzogc3RyaW5nIHwgbnVsbCk6IHN0cmluZyB7XG4gICAgY29uc3Qgc3VmZml4ID0gZXZlbnRJZCA/IGAtJHtldmVudElkfWAgOiAnJztcbiAgICBjb25zdCBzdG9yYWdlS2V5ID0gYGRlZmF1bHRMYW5ndWFnZSR7c3VmZml4fWA7XG5cbiAgICByZXR1cm4gbG9jYWxTdG9yYWdlLmdldEl0ZW0oc3RvcmFnZUtleSkgfHwgJ2VuJztcbiAgfVxuXG4gIHByaXZhdGUgdHJhbnNsYXRpb25zRGF0YTogYW55W10gPSBbXG4gICAgeyBcbiAgS2V5OiBcIkNvcHlcIixcbiAgRGVmYXVsdFZhbHVlOiBcIkNvcHlcIixcbiAgVHJhbnNsYXRpb25zOiB7XG4gICAgZW46IFwiQ29weVwiLFxuICAgIGZyOiBcIkNvcGllclwiLFxuICAgIGl0OiBcIkNvcGlhXCIsXG4gICAgZXM6IFwiQ29waWFyXCIsXG4gICAgZGU6IFwiS29waWVyZW5cIixcbiAgICBcInB0LWJyXCI6IFwiQ29waWFyXCIsXG4gICAgYXI6IFwi2YbYs9iuXCIsXG4gICAgemg6IFwi5aSN5Yi2XCIsXG4gICAgcnU6IFwi0JrQvtC/0LjRgNC+0LLQsNGC0YxcIlxuICB9XG59XG4sXG4gICAge1xuICAgIFxuICAgIEtleTogXCJNYXkgSSBhc3Npc3QgeW91IHdpdGggYW55dGhpbmcgZWxzZVwiLFxuICAgIERlZmF1bHRWYWx1ZTogXCJHcmVhdC4gTWF5IEkgYXNzaXN0IHlvdSB3aXRoIGFueXRoaW5nIGVsc2U/XCIsXG4gICAgVHJhbnNsYXRpb25zOiB7XG4gICAgICAgIGVuOiBcIkdyZWF0LiBNYXkgSSBhc3Npc3QgeW91IHdpdGggYW55dGhpbmcgZWxzZT9cIixcbiAgICAgICAgZnI6IFwiUGFyZmFpdC4gUHVpcy1qZSB2b3VzIGFpZGVyIGF2ZWMgYXV0cmUgY2hvc2UgP1wiLFxuICAgICAgICBpdDogXCJQZXJmZXR0by4gUG9zc28gYWl1dGFydGkgY29uIHF1YWxjb3MnYWx0cm8/XCIsXG4gICAgICAgIGVzOiBcIkdlbmlhbC4gwr9QdWVkbyBheXVkYXJ0ZSBjb24gYWxnbyBtw6FzP1wiLFxuICAgICAgICBkZTogXCJTdXBlci4gS2FubiBpY2ggSWhuZW4gbm9jaCBiZWkgZXR3YXMgYW5kZXJlbSBoZWxmZW4/XCIsXG4gICAgICAgIFwicHQtYnJcIjogXCLDk3RpbW8uIFBvc3NvIGFqdWRhciBjb20gbWFpcyBhbGd1bWEgY29pc2E/XCIsXG4gICAgICAgIGFyOiBcItix2KfYpti5LiDZh9mEINmK2YXZg9mG2YbZiiDZhdiz2KfYudiv2KrZgyDZgdmKINij2Yog2LTZitihINii2K7YsdifXCIsXG4gICAgICAgIHpoOiBcIuWkquWlveS6huOAgui/mOacieS7gOS5iOaIkeWPr+S7peW4ruaCqOeahOWQl++8n1wiLFxuICAgICAgICBydTogXCLQntGC0LvQuNGH0L3Qvi4g0JzQvtCz0YMg0LvQuCDRjyDQv9C+0LzQvtGH0Ywg0LLQsNC8INGBINGH0LXQvC3RgtC+INC10YnRkT9cIlxuICAgIH1cbn0sXG4gICAge1xuICAgIEtleTogXCJXZSBhcmUgc29ycnkgd2UndmUgbm90IGJlZW4gYWJsZSB0byBhbnN3ZXIgeW91ciBxdWVzdGlvblwiLFxuICAgIERlZmF1bHRWYWx1ZTogXCJXZSBhcmUgc29ycnkgd2UndmUgbm90IGJlZW4gYWJsZSB0byBhbnN3ZXIgeW91ciBxdWVzdGlvbi4gSG93ZXZlciwgb3VyIGRlZGljYXRlZCBzdXBwb3J0IHRlYW0gaXMgaGFwcHkgdG8gaGVscC4gUGxlYXNlIDxhIGhyZWY9XFxcIm1haWx0bzpzdXBwb3J0QHNvY2lhbDI3LmNvbVxcXCI+Y2xpY2sgaGVyZTwvYT4gYW5kIGEgaHVtYW4gYWdlbnQgd2lsbCBhc3Npc3QgeW91IGFzIHNvb24gYXMgcG9zc2libGUuXCIsXG4gICAgVHJhbnNsYXRpb25zOiB7XG4gICAgICAgIGVuOiBcIldlIGFyZSBzb3JyeSB3ZSd2ZSBub3QgYmVlbiBhYmxlIHRvIGFuc3dlciB5b3VyIHF1ZXN0aW9uLiBIb3dldmVyLCBvdXIgZGVkaWNhdGVkIHN1cHBvcnQgdGVhbSBpcyBoYXBweSB0byBoZWxwLiBQbGVhc2UgPGEgaHJlZj1cXFwibWFpbHRvOnN1cHBvcnRAc29jaWFsMjcuY29tXFxcIj5jbGljayBoZXJlPC9hPiBhbmQgYSBodW1hbiBhZ2VudCB3aWxsIGFzc2lzdCB5b3UgYXMgc29vbiBhcyBwb3NzaWJsZS5cIixcbiAgICAgICAgZnI6IFwiTm91cyBzb21tZXMgZMOpc29sw6lzIGRlIG5lIHBhcyBhdm9pciBwdSByw6lwb25kcmUgw6Agdm90cmUgcXVlc3Rpb24uIENlcGVuZGFudCwgbm90cmUgw6lxdWlwZSBkJ2Fzc2lzdGFuY2Ugc2UgZmVyYSB1biBwbGFpc2lyIGRlIHZvdXMgYWlkZXIuIFZldWlsbGV6IDxhIGhyZWY9XFxcIm1haWx0bzpzdXBwb3J0QHNvY2lhbDI3LmNvbVxcXCI+Y2xpcXVlciBpY2k8L2E+IGV0IHVuIGFnZW50IGh1bWFpbiB2b3VzIGFzc2lzdGVyYSBkw6hzIHF1ZSBwb3NzaWJsZS5cIixcbiAgICAgICAgaXQ6IFwiQ2kgZGlzcGlhY2UgZGkgbm9uIGVzc2VyZSByaXVzY2l0aSBhIHJpc3BvbmRlcmUgYWxsYSB0dWEgZG9tYW5kYS4gVHV0dGF2aWEsIGlsIG5vc3RybyB0ZWFtIGRpIHN1cHBvcnRvIGRlZGljYXRvIHNhcsOgIGxpZXRvIGRpIGFpdXRhcnRpLiBUaSBwcmVnaGlhbW8gZGkgPGEgaHJlZj1cXFwibWFpbHRvOnN1cHBvcnRAc29jaWFsMjcuY29tXFxcIj5mYXJlIGNsaWMgcXVpPC9hPiBlIHVuIG9wZXJhdG9yZSB1bWFubyB0aSBhc3Npc3RlcsOgIGFsIHBpw7kgcHJlc3RvLlwiLFxuICAgICAgICBlczogXCJMYW1lbnRhbW9zIG5vIGhhYmVyIHBvZGlkbyByZXNwb25kZXIgYSB0dSBwcmVndW50YS4gU2luIGVtYmFyZ28sIG51ZXN0cm8gZXF1aXBvIGRlIHNvcG9ydGUgZXN0YXLDoSBlbmNhbnRhZG8gZGUgYXl1ZGFydGUuIFBvciBmYXZvciwgPGEgaHJlZj1cXFwibWFpbHRvOnN1cHBvcnRAc29jaWFsMjcuY29tXFxcIj5oYXogY2xpYyBhcXXDrTwvYT4geSB1biBhZ2VudGUgaHVtYW5vIHRlIGFzaXN0aXLDoSBsbyBhbnRlcyBwb3NpYmxlLlwiLFxuICAgICAgICBkZTogXCJFcyB0dXQgdW5zIGxlaWQsIGRhc3Mgd2lyIElocmUgRnJhZ2UgbmljaHQgYmVhbnR3b3J0ZW4ga29ubnRlbi4gVW5zZXIgZW5nYWdpZXJ0ZXMgU3VwcG9ydC1UZWFtIGhpbGZ0IElobmVuIGplZG9jaCBnZXJuZSB3ZWl0ZXIuIEJpdHRlIDxhIGhyZWY9XFxcIm1haWx0bzpzdXBwb3J0QHNvY2lhbDI3LmNvbVxcXCI+a2xpY2tlbiBTaWUgaGllcjwvYT4sIHVuZCBlaW4gbWVuc2NobGljaGVyIE1pdGFyYmVpdGVyIHdpcmQgSWhuZW4gc28gYmFsZCB3aWUgbcO2Z2xpY2ggaGVsZmVuLlwiLFxuICAgICAgICBcInB0LWJyXCI6IFwiTGFtZW50YW1vcyBuw6NvIHRlciBjb25zZWd1aWRvIHJlc3BvbmRlciDDoCBzdWEgcGVyZ3VudGEuIE5vIGVudGFudG8sIG5vc3NhIGVxdWlwZSBkZSBzdXBvcnRlIGRlZGljYWRhIGZpY2Fyw6EgZmVsaXogZW0gYWp1ZGFyLiBQb3IgZmF2b3IsIDxhIGhyZWY9XFxcIm1haWx0bzpzdXBwb3J0QHNvY2lhbDI3LmNvbVxcXCI+Y2xpcXVlIGFxdWk8L2E+IGUgdW0gYWdlbnRlIGh1bWFubyBvIGFqdWRhcsOhIG8gbWFpcyByw6FwaWRvIHBvc3PDrXZlbC5cIixcbiAgICAgICAgYXI6IFwi2YbYo9iz2YEg2YTYudiv2YUg2KrZhdmD2YbZhtinINmF2YYg2KfZhNil2KzYp9io2Kkg2LnZhNmJINiz2KTYp9mE2YMuINmI2YXYuSDYsNmE2YPYjCDZitiz2LnYryDZgdix2YrZgiDYp9mE2K/YudmFINin2YTZhdiu2LXYtSDZhNiv2YrZhtinINio2YXYs9in2LnYr9iq2YMuINmK2LHYrNmJIDxhIGhyZWY9XFxcIm1haWx0bzpzdXBwb3J0QHNvY2lhbDI3LmNvbVxcXCI+2KfZhNmG2YLYsSDZh9mG2Kc8L2E+INmI2LPZitiz2KfYudiv2YMg2KPYrdivINin2YTZiNmD2YTYp9ihINin2YTYqNi02LHZitmK2YYg2YHZiiDYo9mC2LHYqCDZiNmC2Kog2YXZhdmD2YYuXCIsXG4gICAgICAgIHpoOiBcIuW+iOaKseatieaIkeS7rOacquiDveWbnuetlOaCqOeahOmXrumimOOAguS4jei/h++8jOaIkeS7rOeahOS4k+WxnuaUr+aMgeWboumYn+W+iOS5kOaEj+S4uuaCqOaPkOS+m+W4ruWKqeOAguivtzxhIGhyZWY9XFxcIm1haWx0bzpzdXBwb3J0QHNvY2lhbDI3LmNvbVxcXCI+54K55Ye76L+Z6YeMPC9hPu+8jOS6uuW3peWuouacjeWwhuWwveW/q+S4uuaCqOaPkOS+m+WNj+WKqeOAglwiLFxuICAgICAgICBydTogXCLQmiDRgdC+0LbQsNC70LXQvdC40Y4sINC80Ysg0L3QtSDRgdC80L7Qs9C70Lgg0L7RgtCy0LXRgtC40YLRjCDQvdCwINCy0LDRiCDQstC+0L/RgNC+0YEuINCe0LTQvdCw0LrQviDQvdCw0YjQsCDRgdC70YPQttCx0LAg0L/QvtC00LTQtdGA0LbQutC4INGBINGA0LDQtNC+0YHRgtGM0Y4g0LLQsNC8INC/0L7QvNC+0LbQtdGCLiDQn9C+0LbQsNC70YPQudGB0YLQsCwgPGEgaHJlZj1cXFwibWFpbHRvOnN1cHBvcnRAc29jaWFsMjcuY29tXFxcIj7QvdCw0LbQvNC40YLQtSDQt9C00LXRgdGMPC9hPiwg0Lgg0L3QsNGIINC+0L/QtdGA0LDRgtC+0YAg0YHQstGP0LbQtdGC0YHRjyDRgSDQstCw0LzQuCDQutCw0Log0LzQvtC20L3QviDRgdC60L7RgNC10LUuXCJcbiAgICB9XG59LFxuICAgIHtcbiAgICAgIEtleTogJ0FzayBhbnl0aGluZycsXG4gICAgICBEZWZhdWx0VmFsdWU6ICdBc2sgYW55dGhpbmcnLFxuICAgICAgVHJhbnNsYXRpb25zOiB7XG4gICAgICAgIGVuOiAnQXNrIGFueXRoaW5nJyxcbiAgICAgICAgZnI6ICdEZW1hbmRleiBjZSBxdWUgdm91cyB2b3VsZXonLFxuICAgICAgICBpdDogJ0NoaWVkaSBxdWFsc2lhc2kgY29zYScsXG4gICAgICAgIGVzOiAnUHJlZ3VudGEgbG8gcXVlIHF1aWVyYXMnLFxuICAgICAgICBkZTogJ0ZyYWcgYWxsZXMnLFxuICAgICAgICAncHQtYnInOiAnUGVyZ3VudGUgcXVhbHF1ZXIgY29pc2EnLFxuICAgICAgICBhcjogJ9in2LPYo9mEINij2Yog2LTZitihJyxcbiAgICAgICAgemg6ICfpmo/kvr/pl64nLFxuICAgICAgICBydTogJ9Ch0L/RgNC+0YHQuNGC0LUg0YfRgtC+INGD0LPQvtC00L3QvicsXG4gICAgICB9LFxuICAgIH0sXG4gICAge1xuICAgICAgS2V5OiAnQXNzaXN0YW50JyxcbiAgICAgIERlZmF1bHRWYWx1ZTogJ0Fzc2lzdGFudCcsXG4gICAgICBUcmFuc2xhdGlvbnM6IHtcbiAgICAgICAgZW46ICdBc3Npc3RhbnQnLFxuICAgICAgICBmcjogJ0Fzc2lzdGFudCcsXG4gICAgICAgIGl0OiAnQXNzaXN0ZW50ZScsXG4gICAgICAgIGVzOiAnQXNpc3RlbnRlJyxcbiAgICAgICAgZGU6ICdBc3Npc3RlbnQnLFxuICAgICAgICAncHQtYnInOiAnQXNzaXN0ZW50ZScsXG4gICAgICAgIGFyOiAn2YXYs9in2LnYrycsXG4gICAgICAgIHpoOiAn5Yqp5omLJyxcbiAgICAgICAgcnU6ICfQkNGB0YHQuNGB0YLQtdC90YInLFxuICAgICAgfSxcbiAgICB9LFxuICAgIHtcbiAgICAgIEtleTogJ1lvdXIgcGVyc29uYWwgb3IgY29tcGFueSBpbmZvcm1hdGlvbiBpcyBrZXB0IHByaXZhdGUgYW5kIHNlY3VyZSB3aXRoaW4gdGhpcyBjaGF0LicsXG4gICAgICBEZWZhdWx0VmFsdWU6XG4gICAgICAgICdZb3VyIHBlcnNvbmFsIG9yIGNvbXBhbnkgaW5mb3JtYXRpb24gaXMga2VwdCBwcml2YXRlIGFuZCBzZWN1cmUgd2l0aGluIHRoaXMgY2hhdC4nLFxuICAgICAgVHJhbnNsYXRpb25zOiB7XG4gICAgICAgIGVuOiAnWW91ciBwZXJzb25hbCBvciBjb21wYW55IGluZm9ybWF0aW9uIGlzIGtlcHQgcHJpdmF0ZSBhbmQgc2VjdXJlIHdpdGhpbiB0aGlzIGNoYXQuJyxcbiAgICAgICAgZnI6ICdWb3MgaW5mb3JtYXRpb25zIHBlcnNvbm5lbGxlcyBvdSBjZWxsZXMgZGUgdm90cmUgZW50cmVwcmlzZSBzb250IGNvbnNlcnbDqWVzIHByaXbDqWVzIGV0IHPDqWN1cmlzw6llcyBkYW5zIGNldHRlIGNvbnZlcnNhdGlvbi4nLFxuICAgICAgICBpdDogXCJMZSB0dWUgaW5mb3JtYXppb25pIHBlcnNvbmFsaSBvIGF6aWVuZGFsaSBzb25vIG1hbnRlbnV0ZSBwcml2YXRlIGUgc2ljdXJlIGFsbCdpbnRlcm5vIGRpIHF1ZXN0YSBjaGF0LlwiLFxuICAgICAgICBlczogJ1R1IGluZm9ybWFjacOzbiBwZXJzb25hbCBvIGRlIGxhIGVtcHJlc2Egc2UgbWFudGllbmUgcHJpdmFkYSB5IHNlZ3VyYSBkZW50cm8gZGUgZXN0ZSBjaGF0LicsXG4gICAgICAgIGRlOiAnSWhyZSBwZXJzw7ZubGljaGVuIG9kZXIgZ2VzY2jDpGZ0bGljaGVuIEluZm9ybWF0aW9uZW4gYmxlaWJlbiBpbiBkaWVzZW0gQ2hhdCBwcml2YXQgdW5kIHNpY2hlci4nLFxuICAgICAgICAncHQtYnInOlxuICAgICAgICAgICdTdWFzIGluZm9ybWHDp8O1ZXMgcGVzc29haXMgb3UgZGEgZW1wcmVzYSBzw6NvIG1hbnRpZGFzIHByaXZhZGFzIGUgc2VndXJhcyBkZW50cm8gZGVzdGUgY2hhdC4nLFxuICAgICAgICBhcjogJ9iq2LjZhCDZhdi52YTZiNmF2KfYqtmDINin2YTYtNiu2LXZitipINij2Ygg2YXYudmE2YjZhdin2Kog2LTYsdmD2KrZgyDYrtin2LXYqSDZiNii2YXZhtipINiv2KfYrtmEINmH2LDZhyDYp9mE2YXYrdin2K/Yq9ipLicsXG4gICAgICAgIHpoOiAn5oKo55qE5Liq5Lq65oiW5YWs5Y+45L+h5oGv5Zyo5q2k6IGK5aSp5Lit5L+d5oyB56eB5a+G5ZKM5a6J5YWo44CCJyxcbiAgICAgICAgcnU6ICfQktCw0YjQsCDQu9C40YfQvdCw0Y8g0LjQu9C4INC60L7RgNC/0L7RgNCw0YLQuNCy0L3QsNGPINC40L3RhNC+0YDQvNCw0YbQuNGPINC+0YHRgtCw0LXRgtGB0Y8g0LrQvtC90YTQuNC00LXQvdGG0LjQsNC70YzQvdC+0Lkg0Lgg0LfQsNGJ0LjRidC10L3QvdC+0Lkg0LIg0Y3RgtC+0Lwg0YfQsNGC0LUuJyxcbiAgICAgIH0sXG4gICAgfSxcbiAgICB7XG4gICAgICBLZXk6ICdTZW5kIG1lc3NhZ2UnLFxuICAgICAgRGVmYXVsdFZhbHVlOiAnU2VuZCBtZXNzYWdlJyxcbiAgICAgIFRyYW5zbGF0aW9uczoge1xuICAgICAgICBlbjogJ1NlbmQgbWVzc2FnZScsXG4gICAgICAgIGZyOiAnRW52b3llciB1biBtZXNzYWdlJyxcbiAgICAgICAgaXQ6ICdJbnZpYSBtZXNzYWdnaW8nLFxuICAgICAgICBlczogJ0VudmlhciBtZW5zYWplJyxcbiAgICAgICAgZGU6ICdOYWNocmljaHQgc2VuZGVuJyxcbiAgICAgICAgJ3B0LWJyJzogJ0VudmlhciBtZW5zYWdlbScsXG4gICAgICAgIGFyOiAn2KXYsdiz2KfZhCDYsdiz2KfZhNipJyxcbiAgICAgICAgemg6ICflj5HpgIHmtojmga8nLFxuICAgICAgICBydTogJ9Ce0YLQv9GA0LDQstC40YLRjCDRgdC+0L7QsdGJ0LXQvdC40LUnLFxuICAgICAgfSxcbiAgICB9LFxuICAgIHtcbiAgICAgIEtleTogJ1BsYXRmb3JtIEdQVCcsXG4gICAgICBEZWZhdWx0VmFsdWU6ICdQbGF0Zm9ybSBHUFQnLFxuICAgICAgVHJhbnNsYXRpb25zOiB7XG4gICAgICAgIGVuOiAnUGxhdGZvcm0gR1BUJyxcbiAgICAgICAgZnI6ICdQbGF0ZWZvcm1lIEdQVCcsXG4gICAgICAgIGl0OiAnUGlhdHRhZm9ybWEgR1BUJyxcbiAgICAgICAgZXM6ICdQbGF0YWZvcm1hIEdQVCcsXG4gICAgICAgIGRlOiAnUGxhdHRmb3JtIEdQVCcsXG4gICAgICAgICdwdC1icic6ICdQbGF0YWZvcm1hIEdQVCcsXG4gICAgICAgIGFyOiAn2YXZhti12KkgR1BUJyxcbiAgICAgICAgemg6ICflubPlj7AgR1BUJyxcbiAgICAgICAgcnU6ICfQn9C70LDRgtGE0L7RgNC80LAgR1BUJyxcbiAgICAgIH0sXG4gICAgfSxcbiAgICB7XG4gICAgICBLZXk6ICdOZXcgQ2hhdCcsXG4gICAgICBEZWZhdWx0VmFsdWU6ICdOZXcgQ2hhdCcsXG4gICAgICBUcmFuc2xhdGlvbnM6IHtcbiAgICAgICAgZW46ICdOZXcgQ2hhdCcsXG4gICAgICAgIGZyOiAnTm91dmVsbGUgY29udmVyc2F0aW9uJyxcbiAgICAgICAgaXQ6ICdOdW92YSBjaGF0JyxcbiAgICAgICAgZXM6ICdOdWV2byBjaGF0JyxcbiAgICAgICAgZGU6ICdOZXVlciBDaGF0JyxcbiAgICAgICAgJ3B0LWJyJzogJ05vdm8gY2hhdCcsXG4gICAgICAgIGFyOiAn2YXYrdin2K/Yq9ipINis2K/Zitiv2KknLFxuICAgICAgICB6aDogJ+aWsOiBiuWkqScsXG4gICAgICAgIHJ1OiAn0J3QvtCy0YvQuSDRh9Cw0YInLFxuICAgICAgfSxcbiAgICB9LFxuICAgIHtcbiAgICAgIEtleTogJ1lvdScsXG4gICAgICBEZWZhdWx0VmFsdWU6ICdZb3UnLFxuICAgICAgVHJhbnNsYXRpb25zOiB7XG4gICAgICAgIGVuOiAnWW91JyxcbiAgICAgICAgZnI6ICdWb3VzJyxcbiAgICAgICAgaXQ6ICdUdScsXG4gICAgICAgIGVzOiAnVMO6JyxcbiAgICAgICAgZGU6ICdEdScsXG4gICAgICAgICdwdC1icic6ICdWb2PDqicsXG4gICAgICAgIGFyOiAn2KPZhtiqJyxcbiAgICAgICAgemg6ICfmgqgnLFxuICAgICAgICBydTogJ9CS0YsnLFxuICAgICAgfSxcbiAgICB9LFxuICAgIHtcbiAgICAgIEtleTogJ1dyaXRlIHlvdXIgbWVzc2FnZScsXG4gICAgICBEZWZhdWx0VmFsdWU6ICdXcml0ZSB5b3VyIG1lc3NhZ2UnLFxuICAgICAgVHJhbnNsYXRpb25zOiB7XG4gICAgICAgIGVuOiAnV3JpdGUgeW91ciBtZXNzYWdlJyxcbiAgICAgICAgZnI6ICfDiWNyaXZleiB2b3RyZSBtZXNzYWdlJyxcbiAgICAgICAgaXQ6ICdTY3JpdmkgaWwgdHVvIG1lc3NhZ2dpbycsXG4gICAgICAgIGVzOiAnRXNjcmliZSB0dSBtZW5zYWplJyxcbiAgICAgICAgZGU6ICdTY2hyZWliZW4gU2llIElocmUgTmFjaHJpY2h0JyxcbiAgICAgICAgJ3B0LWJyJzogJ0VzY3JldmEgc3VhIG1lbnNhZ2VtJyxcbiAgICAgICAgYXI6ICfYp9mD2KrYqCDYsdiz2KfZhNiq2YMnLFxuICAgICAgICB6aDogJ+WGmeS4i+aCqOeahOa2iOaBrycsXG4gICAgICAgIHJ1OiAn0J3QsNC/0LjRiNC40YLQtSDQstCw0YjQtSDRgdC+0L7QsdGJ0LXQvdC40LUnLFxuICAgICAgfSxcbiAgICB9LFxuICAgIHtcbiAgICAgIEtleTogJ1NlbmQnLFxuICAgICAgRGVmYXVsdFZhbHVlOiAnU2VuZCcsXG4gICAgICBUcmFuc2xhdGlvbnM6IHtcbiAgICAgICAgZW46ICdTZW5kJyxcbiAgICAgICAgZnI6ICdFbnZveWVyJyxcbiAgICAgICAgaXQ6ICdJbnZpYScsXG4gICAgICAgIGVzOiAnRW52aWFyJyxcbiAgICAgICAgZGU6ICdTZW5kZW4nLFxuICAgICAgICAncHQtYnInOiAnRW52aWFyJyxcbiAgICAgICAgYXI6ICfYpdix2LPYp9mEJyxcbiAgICAgICAgemg6ICflj5HpgIEnLFxuICAgICAgICBydTogJ9Ce0YLQv9GA0LDQstC40YLRjCcsXG4gICAgICB9LFxuICAgIH0sXG4gICAgXG4gICAge1xuICAgICAgS2V5OiAnQ2FsbCBJbnRlcmZhY2UnLFxuICAgICAgRGVmYXVsdFZhbHVlOiAnQ2FsbCBJbnRlcmZhY2UnLFxuICAgICAgVHJhbnNsYXRpb25zOiB7XG4gICAgICAgIGVuOiAnQ2FsbCBJbnRlcmZhY2UnLFxuICAgICAgICBmcjogXCJJbnRlcmZhY2UgZCdhcHBlbFwiLFxuICAgICAgICBpdDogJ0ludGVyZmFjY2lhIGNoaWFtYXRhJyxcbiAgICAgICAgZXM6ICdJbnRlcmZheiBkZSBsbGFtYWRhJyxcbiAgICAgICAgZGU6ICdBbnJ1Zm9iZXJmbMOkY2hlJyxcbiAgICAgICAgJ3B0LWJyJzogJ0ludGVyZmFjZSBkZSBjaGFtYWRhJyxcbiAgICAgICAgYXI6ICfZiNin2KzZh9ipINin2YTYp9iq2LXYp9mEJyxcbiAgICAgICAgemg6ICflkbzlj6vnlYzpnaInLFxuICAgICAgICBydTogJ9CY0L3RgtC10YDRhNC10LnRgSDQt9Cy0L7QvdC60LAnLFxuICAgICAgfSxcbiAgICB9LFxuICAgIHtcbiAgICAgIEtleTogJ0Nsb3NlJyxcbiAgICAgIERlZmF1bHRWYWx1ZTogJ0Nsb3NlJyxcbiAgICAgIFRyYW5zbGF0aW9uczoge1xuICAgICAgICBlbjogJ0Nsb3NlJyxcbiAgICAgICAgZnI6ICdGZXJtZXInLFxuICAgICAgICBpdDogJ0NoaXVkaScsXG4gICAgICAgIGVzOiAnQ2VycmFyJyxcbiAgICAgICAgZGU6ICdTY2hsaWXDn2VuJyxcbiAgICAgICAgJ3B0LWJyJzogJ0ZlY2hhcicsXG4gICAgICAgIGFyOiAn2KXYutmE2KfZgicsXG4gICAgICAgIHpoOiAn5YWz6ZetJyxcbiAgICAgICAgcnU6ICfQl9Cw0LrRgNGL0YLRjCcsXG4gICAgICB9LFxuICAgIH0sXG4gIF07XG59XG4iXX0=
@@ -0,0 +1,123 @@
1
+ import { ChangeDetectorRef, Component, ElementRef, EventEmitter, Inject, Input, Output, ViewChild, } from '@angular/core';
2
+ import { DOCUMENT } from '@angular/common';
3
+ export class VideoPlayerComponent {
4
+ constructor(doc, el, cdr) {
5
+ this.doc = doc;
6
+ this.el = el;
7
+ this.cdr = cdr;
8
+ this.isMuted = true;
9
+ this.isFullscreen = false;
10
+ this.isFullscreenvideoPlaying = false;
11
+ this.connectWithUser = new EventEmitter();
12
+ this.scheduleMeeting = new EventEmitter();
13
+ }
14
+ ngOnInit() {
15
+ }
16
+ toggleSound(isMuted = null) {
17
+ this.isMuted = isMuted != null ? isMuted : !this.isMuted;
18
+ setTimeout(() => {
19
+ const video = this.doc
20
+ .getElementById(this.video.id.toString());
21
+ if (video) {
22
+ video.muted = this.isMuted;
23
+ this.video.isMuted = this.isMuted;
24
+ }
25
+ this.cdr.markForCheck();
26
+ //this.muteToggle.emit(this.isMuted);
27
+ });
28
+ }
29
+ togglePlay(playState, videoEl) {
30
+ this.videoObj.isPlaying = !this.videoObj.isPlaying;
31
+ setTimeout(() => {
32
+ if (playState) {
33
+ this.videoObj.isPlaying = true;
34
+ videoEl.play();
35
+ var pauseBtn = document.getElementById('pause-btn');
36
+ pauseBtn.classList.add('hide-pause-btn');
37
+ this.toggleSound(false);
38
+ }
39
+ else {
40
+ this.videoObj.isPlaying = false;
41
+ videoEl.pause();
42
+ }
43
+ this.cdr.markForCheck();
44
+ });
45
+ }
46
+ ngAfterViewInit() {
47
+ if (window.innerWidth <= 576) {
48
+ this.observer = new IntersectionObserver((entries) => {
49
+ if (entries[0].isIntersecting === true) {
50
+ this.video.nativeElement.play();
51
+ }
52
+ else {
53
+ this.video.nativeElement.pause();
54
+ }
55
+ }, {
56
+ threshold: 0.75,
57
+ });
58
+ this.observer.observe(this.el.nativeElement);
59
+ }
60
+ }
61
+ toggleFullscreen() {
62
+ this.isFullscreen = !this.isFullscreen;
63
+ if (!this.isFullscreen) {
64
+ this.fullscreenvideo.nativeElement.pause();
65
+ }
66
+ }
67
+ toggleFullscreenPlay() {
68
+ this.isFullscreenvideoPlaying = !this.isFullscreenvideoPlaying;
69
+ if (this.isFullscreenvideoPlaying) {
70
+ this.fullscreenvideo.nativeElement.play();
71
+ }
72
+ else {
73
+ this.fullscreenvideo.nativeElement.pause();
74
+ }
75
+ }
76
+ followUser(userId) {
77
+ this.connectWithUser.emit(userId);
78
+ }
79
+ checkPendingSentRequest(userId) {
80
+ var _a;
81
+ return (_a = this.myPendingSentRequests) === null || _a === void 0 ? void 0 : _a.find(a => a == userId);
82
+ }
83
+ canUnfollowUser() {
84
+ return false;
85
+ }
86
+ canFollowUser() {
87
+ return true;
88
+ }
89
+ getIniNames(firstName, lastName) {
90
+ if (!firstName && !lastName) {
91
+ return '';
92
+ }
93
+ if (firstName && lastName)
94
+ return (firstName.charAt(0).toUpperCase() + lastName.charAt(0).toUpperCase());
95
+ else
96
+ return firstName.charAt(0).toUpperCase();
97
+ }
98
+ }
99
+ VideoPlayerComponent.decorators = [
100
+ { type: Component, args: [{
101
+ selector: 'app-video-player',
102
+ template: "<div class=\"video-wrapper\" >\n <div class=\"overlymask-video\"></div>\n <video (click)=\"toggleFullscreen()\" #video [loop]=\"true\" [muted]=\"isMuted\" [src]=\"videoObj.processedUrls || videoObj.url\" playsinline\n [controls]=\"false\"></video>\n <div class=\"main-controls\" [class.no-opacity]=\"video.isPlaying\">\n <button mat-icon-button *ngIf=\"!videoObj.isPlaying\"\n attr.aria-label=\"Play Video\"\n title=\"Play Video\" class=\"play-pause-btn\"\n (click)=\"togglePlay(true, video)\">\n <!-- <mat-icon alt=\"Play\">play_arrow</mat-icon> -->\n <span class=\"material-icons notranslate \" aria-hidden=\"true\">play_circle_outline</span>\n </button>\n\n <button mat-icon-button id=\"pause-btn\" [hidden]=\"!videoObj.isPlaying\" class=\"pause_btn play-pause-btn playing\"\n title=\"Pause Video\"\n [class.half-opacity]=\"video.isPlaying\" (click)=\"togglePlay(false, video)\">\n <!-- <mat-icon alt=\"Pause\">pause</mat-icon> -->\n <span class=\"material-icons notranslate \" aria-hidden=\"true\">pause_circle_outline</span>\n </button>\n </div>\n <div class=\"video-actions\">\n <button class=\"button-trasparent action\" (click)=\"toggleSound()\" title=\"Mute\" *ngIf=\"isMuted\">\n <span class=\"material-icons notranslate \" aria-hidden=\"true\">volume_off</span>\n </button>\n <button class=\"button-trasparent action\" (click)=\"toggleSound()\" title=\"Unmute\" *ngIf=\"!isMuted\">\n <span class=\"material-icons notranslate \" aria-hidden=\"true\">volume_up</span>\n </button>\n\n </div>\n</div>\n\n<div class=\"full-screen\" *ngIf=\"isFullscreen\" [ngClass]=\"{'show': isFullscreen}\">\n <div class=\"video-wrapper\">\n <video #fullscreenvideo (click)=\"toggleFullscreenPlay()\" [loop]=\"true\" [muted]=\"isMuted\" [src]=\"videoObj.processedUrls || videoObj.url\"\n playsinline [controls]=\"false\"></video>\n <div (click)=\"toggleFullscreen()\" class=\"close-btn\">\n <span class=\"material-icons notranslate \">clear</span>\n </div>\n <div class=\"video-actions\">\n <button *ngIf=\"!video.isPlaying\" title=\"Play\"\n class=\"material-icons notranslate body-text-color fs-h2 play position-absolute transparent-btn\" (click)=\"togglePlay(true, video)\">\n play_circle_outline\n </button>\n <button id=\"pause-btn\" [hidden]=\"!videoObj.isPlaying\" title=\"Pause\"\n class=\"pause_btn material-icons body-text-color fs-h2 play position-absolute transparent-btn\"\n [class.half-opacity]=\"video.isPlaying\" (click)=\"togglePlay(false, video)\">\n pause_circle_outline\n </button>\n </div>\n </div>\n</div>\n",
103
+ styles: [".video-wrapper{position:relative}.video-wrapper video{-o-object-fit:cover;border-radius:5px;cursor:pointer;height:330px;object-fit:cover;outline:0;transition:.3s ease-in-out;width:100%}.video-wrapper .video-actions{display:flex;flex-direction:column;position:absolute;right:10px;top:10px}.video-wrapper .video-actions .action{color:#fff;cursor:pointer;margin-bottom:5px}.video-wrapper .author-details{bottom:18px;display:flex;flex-direction:column;justify-content:flex-start;left:12px;position:absolute;right:12px;transition:.3s ease-in-out}.video-wrapper .author-details .author-image{border-radius:50%;height:34px;margin-right:6px;overflow:hidden;width:34px}.video-wrapper .author-details .author-image img{-o-object-fit:cover;height:100%;object-fit:cover;width:100%}.video-wrapper .author-details .author-name,.video-wrapper .author-details .video-title{color:#fff;display:block;font-size:14px;mix-blend-mode:hard-light}.video-wrapper .connect-btn{bottom:20px;opacity:0;outline:0;position:absolute;text-align:center;transition:.3s ease-in-out;width:100%}@media only screen and (max-width:576px){.video-wrapper .connect-btn{opacity:1;right:20px;width:unset}}.video-wrapper .connect-btn button{margin:auto}.video-wrapper:hover .author-details{opacity:0}@media only screen and (max-width:576px){.video-wrapper:hover .author-details{opacity:1}}.video-wrapper:hover .connect-btn{opacity:1}.video-wrapper .half-opacity{opacity:.2}.video-wrapper .no-opacity{background-color:transparent}.like-btn{margin-bottom:20px;text-align:center;transition:.2s ease-in-out}.like-btn .count{font-size:16px;margin-left:3px}.like-btn span{cursor:pointer;font-size:30px}.like-btn:hover{transform:scale(1.1)}.like-btn.like{color:#025be7}.like-btn.dislike{color:#8d8d8d}.like-btn.info{color:#aeae3f}.full-screen.show{align-items:center;background:rgba(27,26,26,.9607843137254902);display:flex;height:100%;justify-content:center;left:0;position:fixed;top:0;width:100%;z-index:9999}.full-screen.show .video-wrapper video{height:270px;transform:none!important;transition:none;width:300px}.full-screen .close-btn{cursor:pointer;left:10px;position:absolute;top:10px}.full-screen .close-btn span{color:#fff}.main-controls{background-color:rgba(0,0,0,.3);bottom:0;left:0;right:0;top:0}.main-controls,.main-controls .play-pause-btn{align-items:center;display:flex;justify-content:center;position:absolute}.main-controls .play-pause-btn{background:none;border:none;color:#fff;line-height:0;top:34%}.main-controls .play-pause-btn.playing{cursor:pointer;left:50%;position:absolute;top:40%;transform:translate(-50%,-50%)}.main-controls .play-pause-btn.playing span{color:#fff;text-shadow:0 0 6px rgba(47,47,47,.36)}.main-controls .play-pause-btn:focus{outline:none}.main-controls .play-pause-btn .material-icons{font-size:40px}.main-controls .play-pause-btn .mat-icon{height:auto;width:auto}.main-controls .half-opacity{opacity:.2}.main-controls .no-opacity{background-color:transparent}button.transparent-btn{background:transparent;border:0!important}.pause_btn{height:100%;opacity:.02!important;width:100%}.pause_btn:hover{background-color:rgba(0,0,0,.7411764705882353);opacity:1!important}.hide-pause-btn{opacity:0!important}.no-photo{align-items:center;display:flex;font-size:14px;height:35px;justify-content:center;width:35px}.overlymask-video{background-image:linear-gradient(hsla(0,0%,100%,.058823529411764705),rgba(0,0,0,.1803921568627451));background-position:0 bottom;height:275px;position:absolute;width:100%;z-index:0}"]
104
+ },] }
105
+ ];
106
+ VideoPlayerComponent.ctorParameters = () => [
107
+ { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] },
108
+ { type: ElementRef },
109
+ { type: ChangeDetectorRef }
110
+ ];
111
+ VideoPlayerComponent.propDecorators = {
112
+ currentUserId: [{ type: Input }],
113
+ user: [{ type: Input }],
114
+ eventId: [{ type: Input }],
115
+ videoObj: [{ type: Input }],
116
+ isDev: [{ type: Input }],
117
+ type: [{ type: Input }],
118
+ video: [{ type: ViewChild, args: ['video',] }],
119
+ fullscreenvideo: [{ type: ViewChild, args: ['fullscreenvideo',] }],
120
+ connectWithUser: [{ type: Output }],
121
+ scheduleMeeting: [{ type: Output }]
122
+ };
123
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlkZW8tcGxheWVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIvbW50LzUwYjNjZGVhLWUyOTctNDM1Yy1hZDljLTA0ODNjOTVjNmQyNS9wcm9mZXNzaW9uYWwvSGl2ZUFJLVBhY2thZ2VzL0FuZ3VsYXIvcHJvamVjdHMvaGl2ZWdwdC9ldmVudHNncHQtYW5ndWxhci9zcmMvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50cy92aWRlby1wbGF5ZXIvdmlkZW8tcGxheWVyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBRUwsTUFBTSxFQUNOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFPM0MsTUFBTSxPQUFPLG9CQUFvQjtJQW9CL0IsWUFDNEIsR0FBUSxFQUMxQixFQUFjLEVBQ2QsR0FBc0I7UUFGSixRQUFHLEdBQUgsR0FBRyxDQUFLO1FBQzFCLE9BQUUsR0FBRixFQUFFLENBQVk7UUFDZCxRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQWJoQyxZQUFPLEdBQVksSUFBSSxDQUFDO1FBRXhCLGlCQUFZLEdBQVksS0FBSyxDQUFDO1FBRzlCLDZCQUF3QixHQUFZLEtBQUssQ0FBQztRQUVoQyxvQkFBZSxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFDN0Msb0JBQWUsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO0lBT3BELENBQUM7SUFFRCxRQUFRO0lBQ1IsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFPLEdBQUcsSUFBSTtRQUN4QixJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO1FBQ3pELFVBQVUsQ0FB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OztRQUM1QixPQUFPLE1BQUEsSUFBSSxDQUFDLHFCQUFxQiwwQ0FBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVELGVBQWU7UUFDYixPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxhQUFhO1FBQ1gsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsV0FBVyxDQUFDLFNBQVMsRUFBRSxRQUFRO1FBQzdCLElBQUcsQ0FBQyxTQUFTLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDMUIsT0FBTyxFQUFFLENBQUM7U0FDWDtRQUVELElBQUksU0FBUyxJQUFJLFFBQVE7WUFDdkIsT0FBTyxDQUNMLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FDckUsQ0FBQzs7WUFDQyxPQUFPLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDaEQsQ0FBQzs7O1lBbklGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsa0JBQWtCO2dCQUM1QixtcEZBQTRDOzthQUU3Qzs7OzRDQXNCSSxNQUFNLFNBQUMsUUFBUTtZQXJDbEIsVUFBVTtZQUZWLGlCQUFpQjs7OzRCQW9CaEIsS0FBSzttQkFDTCxLQUFLO3NCQUNMLEtBQUs7dUJBQ0wsS0FBSztvQkFDTCxLQUFLO21CQUdMLEtBQUs7b0JBSUwsU0FBUyxTQUFDLE9BQU87OEJBQ2pCLFNBQVMsU0FBQyxpQkFBaUI7OEJBRzNCLE1BQU07OEJBQ04sTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5qZWN0LFxuICBJbnB1dCxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJVmlkZW8gfSBmcm9tICcuLi8uLi9tb2RlbHMvdmlkZW8nO1xuaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtdmlkZW8tcGxheWVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3ZpZGVvLXBsYXllci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3ZpZGVvLXBsYXllci5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBWaWRlb1BsYXllckNvbXBvbmVudFxuICBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCB7XG4gIEBJbnB1dCgpIGN1cnJlbnRVc2VySWQ6IHN0cmluZztcbiAgQElucHV0KCkgdXNlcjogYW55O1xuICBASW5wdXQoKSBldmVudElkOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHZpZGVvT2JqOiBJVmlkZW87XG4gIEBJbnB1dCgpIGlzRGV2OiBib29sZWFuO1xuICBteUZvbGxvd2luZ0xpc3Q6IEFycmF5PHN0cmluZz47XG4gIG15UGVuZGluZ1NlbnRSZXF1ZXN0czogQXJyYXk8c3RyaW5nPjtcbiAgQElucHV0KCkgdHlwZTogc3RyaW5nO1xuICBpc011dGVkOiBib29sZWFuID0gdHJ1ZTtcbiAgcHJpdmF0ZSBvYnNlcnZlcjogSW50ZXJzZWN0aW9uT2JzZXJ2ZXI7XG4gIGlzRnVsbHNjcmVlbjogYm9vbGVhbiA9IGZhbHNlO1xuICBAVmlld0NoaWxkKCd2aWRlbycpIHZpZGVvOiBhbnk7XG4gIEBWaWV3Q2hpbGQoJ2Z1bGxzY3JlZW52aWRlbycpIGZ1bGxzY3JlZW52aWRlbzogYW55O1xuICBpc0Z1bGxzY3JlZW52aWRlb1BsYXlpbmc6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBAT3V0cHV0KCkgY29ubmVjdFdpdGhVc2VyID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gIEBPdXRwdXQoKSBzY2hlZHVsZU1lZXRpbmcgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIGRvYzogYW55LFxuICAgIHByaXZhdGUgZWw6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmXG4gICkge1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gIH1cblxuICB0b2dnbGVTb3VuZChpc011dGVkID0gbnVsbCkge1xuICAgIHRoaXMuaXNNdXRlZCA9IGlzTXV0ZWQgIT0gbnVsbCA/IGlzTXV0ZWQgOiAhdGhpcy5pc011dGVkO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgY29uc3QgdmlkZW86IGFueSA9IHRoaXMuZG9jXG4gICAgICAgIC5nZXRFbGVtZW50QnlJZCh0aGlzLnZpZGVvLmlkLnRvU3RyaW5nKCkpO1xuICAgICAgaWYgKHZpZGVvKSB7XG4gICAgICAgIHZpZGVvLm11dGVkID0gdGhpcy5pc011dGVkO1xuICAgICAgICB0aGlzLnZpZGVvLmlzTXV0ZWQgPSB0aGlzLmlzTXV0ZWQ7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIC8vdGhpcy5tdXRlVG9nZ2xlLmVtaXQodGhpcy5pc011dGVkKTtcbiAgICAgIH0pXG59XG5cbiAgdG9nZ2xlUGxheShwbGF5U3RhdGU6IGJvb2xlYW4sIHZpZGVvRWwpIHtcbiAgICB0aGlzLnZpZGVvT2JqLmlzUGxheWluZyA9ICF0aGlzLnZpZGVvT2JqLmlzUGxheWluZztcbiAgICBzZXRUaW1lb3V0KCgpID0+IHsgICAgIFxuICAgICAgaWYgKHBsYXlTdGF0ZSkgeyAgICAgXG4gICAgICAgIHRoaXMudmlkZW9PYmouaXNQbGF5aW5nID0gIHRydWU7XG4gICAgICAgIHZpZGVvRWwucGxheSgpO1xuICAgICAgICB2YXIgcGF1c2VCdG4gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncGF1c2UtYnRuJyk7XG4gICAgICAgIHBhdXNlQnRuLmNsYXNzTGlzdC5hZGQoJ2hpZGUtcGF1c2UtYnRuJyk7XG5cbiAgICAgICAgdGhpcy50b2dnbGVTb3VuZChmYWxzZSk7XG4gICAgICB9XG4gICAgICBlbHNle1xuICAgICAgICB0aGlzLnZpZGVvT2JqLmlzUGxheWluZyA9ICBmYWxzZTtcbiAgICAgICAgdmlkZW9FbC5wYXVzZSgpO1xuICAgICAgfVxuICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICB9KVxuICB9XG4gIFxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgaWYgKHdpbmRvdy5pbm5lcldpZHRoIDw9IDU3Nikge1xuICAgICAgdGhpcy5vYnNlcnZlciA9IG5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcihcbiAgICAgICAgKGVudHJpZXMpID0+IHtcbiAgICAgICAgICBpZiAoZW50cmllc1swXS5pc0ludGVyc2VjdGluZyA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgdGhpcy52aWRlby5uYXRpdmVFbGVtZW50LnBsYXkoKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy52aWRlby5uYXRpdmVFbGVtZW50LnBhdXNlKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdGhyZXNob2xkOiAwLjc1LFxuICAgICAgICB9XG4gICAgICApO1xuXG4gICAgICB0aGlzLm9ic2VydmVyLm9ic2VydmUodGhpcy5lbC5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50KTtcbiAgICB9XG4gIH1cblxuICB0b2dnbGVGdWxsc2NyZWVuKCkge1xuICAgIHRoaXMuaXNGdWxsc2NyZWVuID0gIXRoaXMuaXNGdWxsc2NyZWVuO1xuICAgIGlmICghdGhpcy5pc0Z1bGxzY3JlZW4pIHtcbiAgICAgIHRoaXMuZnVsbHNjcmVlbnZpZGVvLm5hdGl2ZUVsZW1lbnQucGF1c2UoKTtcbiAgICB9XG4gIH1cblxuICB0b2dnbGVGdWxsc2NyZWVuUGxheSgpIHtcbiAgICB0aGlzLmlzRnVsbHNjcmVlbnZpZGVvUGxheWluZyA9ICF0aGlzLmlzRnVsbHNjcmVlbnZpZGVvUGxheWluZztcblxuICAgIGlmICh0aGlzLmlzRnVsbHNjcmVlbnZpZGVvUGxheWluZykge1xuICAgICAgdGhpcy5mdWxsc2NyZWVudmlkZW8ubmF0aXZlRWxlbWVudC5wbGF5KCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZnVsbHNjcmVlbnZpZGVvLm5hdGl2ZUVsZW1lbnQucGF1c2UoKTtcbiAgICB9XG4gIH1cblxuICBmb2xsb3dVc2VyKHVzZXJJZCkge1xuICAgIHRoaXMuY29ubmVjdFdpdGhVc2VyLmVtaXQodXNlcklkKTtcbiAgfVxuXG4gIGNoZWNrUGVuZGluZ1NlbnRSZXF1ZXN0KHVzZXJJZCkge1xuICAgIHJldHVybiB0aGlzLm15UGVuZGluZ1NlbnRSZXF1ZXN0cz8uZmluZChhID0+IGEgPT0gdXNlcklkKTtcbiAgfVxuXG4gIGNhblVuZm9sbG93VXNlcigpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjYW5Gb2xsb3dVc2VyKCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgZ2V0SW5pTmFtZXMoZmlyc3ROYW1lLCBsYXN0TmFtZSkge1xuICAgIGlmKCFmaXJzdE5hbWUgJiYgIWxhc3ROYW1lKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICAgIFxuICAgIGlmIChmaXJzdE5hbWUgJiYgbGFzdE5hbWUpXG4gICAgICByZXR1cm4gKFxuICAgICAgICBmaXJzdE5hbWUuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBsYXN0TmFtZS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKVxuICAgICAgKTtcbiAgICBlbHNlIHJldHVybiBmaXJzdE5hbWUuY2hhckF0KDApLnRvVXBwZXJDYXNlKCk7XG4gIH1cbn1cbiJdfQ==