@ranjeethr/chat-widget 0.0.1 → 0.0.2

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.
@@ -42,6 +42,9 @@ export class ChatLauncherComponent {
42
42
  this.openNewRoom(roomId, header, user.id, user.name, this.chatUsers);
43
43
  }, { allowSignalWrites: true });
44
44
  }
45
+ ngOnInit() {
46
+ console.log('ChatLauncher initialized');
47
+ }
45
48
  openNewRoom(roomId, roomHeader, userId, username, chatUsers) {
46
49
  this.chatService.createRoom(roomId, roomHeader, userId, username, chatUsers).subscribe(room => {
47
50
  this.addWindow(room.roomKey, room.name);
@@ -72,10 +75,10 @@ export class ChatLauncherComponent {
72
75
  this.activeIndex.set(i);
73
76
  }
74
77
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ChatLauncherComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
75
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "17.3.12", type: ChatLauncherComponent, isStandalone: true, selector: "app-chat-launcher", inputs: { roomId: { classPropertyName: "roomId", publicName: "roomId", isSignal: true, isRequired: false, transformFunction: null }, roomHeader: { classPropertyName: "roomHeader", publicName: "roomHeader", isSignal: true, isRequired: false, transformFunction: null }, user: { classPropertyName: "user", publicName: "user", isSignal: true, isRequired: false, transformFunction: null }, userList: { classPropertyName: "userList", publicName: "userList", isSignal: true, isRequired: false, transformFunction: null }, chatUsers: { classPropertyName: "chatUsers", publicName: "chatUsers", isSignal: true, isRequired: false, transformFunction: null } }, providers: [MessageService], ngImport: i0, template: "<div class=\"chat-float-wrapper\">\r\n <p-tabView [activeIndex]=\"activeIndex()\" (activeIndexChange)=\"setActive($event)\" [scrollable]=\"true\"\r\n class=\"chat-tabview\">\r\n <p-tabPanel *ngFor=\"let w of openWindows(); let i = index\" [header]=\"w.header\">\r\n <app-chat-window [chatRoomId]=\"w.roomId\" [header]=\"w.header\">\r\n </app-chat-window>\r\n </p-tabPanel>\r\n </p-tabView>\r\n</div>", styles: ["@charset \"UTF-8\";.chat-float-wrapper{position:fixed!important;bottom:16px!important;right:16px!important;z-index:99999;pointer-events:auto}:host{all:initial;position:fixed;right:20px;bottom:20px;z-index:2147483647;font-family:Arial,sans-serif}:host *{box-sizing:border-box}.chat-tabview{width:100%;height:100%}:host ::ng-deep .p-tabview{height:100%;display:flex;flex-direction:column}:host ::ng-deep .p-tabview-nav{flex-shrink:0}:host ::ng-deep .p-tabview-panels{flex:1;overflow:hidden}:host ::ng-deep .p-tabview-panel{height:100%}:host ::ng-deep app-chat-window{display:block;height:100%}.chat-tabview ::ng-deep .p-tabview-nav{background:transparent;border:none;display:flex;gap:8px;padding:6px 4px}.chat-tabview ::ng-deep .p-tabview-nav li{border:none}.chat-tabview ::ng-deep .p-tabview-nav li .p-tabview-nav-link{border:none;border-radius:18px;padding:6px 14px;font-size:13px;font-weight:500;color:#555;box-shadow:0 1px 4px #00000014;transition:all .2s ease}.chat-tabview ::ng-deep .p-tabview-nav li .p-tabview-nav-link:hover{color:#1a73e8}.chat-tabview ::ng-deep .p-tabview-nav li.p-highlight .p-tabview-nav-link{background:#1a73e8;color:#fff;box-shadow:0 4px 10px #1a73e859}.chat-tabview ::ng-deep .p-tabview-ink-bar{display:none}.chat-tabview ::ng-deep .p-tabview-panels{padding:0;border:none;background:transparent}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: ChatWindowComponent, selector: "app-chat-window", inputs: ["chatRoomId", "header", "chatUsers", "refreshRoom"] }, { kind: "ngmodule", type: DropdownModule }, { kind: "ngmodule", type: ButtonModule }, { kind: "ngmodule", type: ToastModule }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: TabViewModule }, { kind: "component", type: i2.TabView, selector: "p-tabView", inputs: ["style", "styleClass", "controlClose", "scrollable", "activeIndex", "selectOnFocus", "nextButtonAriaLabel", "prevButtonAriaLabel", "autoHideButtons", "tabindex"], outputs: ["onChange", "onClose", "activeIndexChange"] }, { kind: "component", type: i2.TabPanel, selector: "p-tabPanel", inputs: ["closable", "headerStyle", "headerStyleClass", "cache", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "selected", "disabled", "header", "leftIcon", "rightIcon"] }], encapsulation: i0.ViewEncapsulation.ShadowDom }); }
78
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "17.3.12", type: ChatLauncherComponent, isStandalone: true, selector: "app-chat-launcher", inputs: { roomId: { classPropertyName: "roomId", publicName: "roomId", isSignal: true, isRequired: false, transformFunction: null }, roomHeader: { classPropertyName: "roomHeader", publicName: "roomHeader", isSignal: true, isRequired: false, transformFunction: null }, user: { classPropertyName: "user", publicName: "user", isSignal: true, isRequired: false, transformFunction: null }, userList: { classPropertyName: "userList", publicName: "userList", isSignal: true, isRequired: false, transformFunction: null }, chatUsers: { classPropertyName: "chatUsers", publicName: "chatUsers", isSignal: true, isRequired: false, transformFunction: null } }, providers: [MessageService], ngImport: i0, template: "<div class=\"chat-float-wrapper\">\r\n <p-tabView [activeIndex]=\"activeIndex()\" (activeIndexChange)=\"setActive($event)\" [scrollable]=\"true\"\r\n class=\"chat-tabview\">\r\n <p-tabPanel *ngFor=\"let w of openWindows(); let i = index\" [header]=\"w.header\">\r\n <app-chat-window [chatRoomId]=\"w.roomId\" [header]=\"w.header\">\r\n </app-chat-window>\r\n </p-tabPanel>\r\n </p-tabView>\r\n</div>", styles: ["@charset \"UTF-8\";.chat-float-wrapper{position:fixed!important;bottom:16px!important;right:16px!important;z-index:99999;pointer-events:auto}:host{display:block;position:fixed;right:20px;bottom:20px;z-index:2147483647;font-family:Arial,sans-serif;pointer-events:auto}:host *,:host *:before,:host *:after{box-sizing:border-box}.chat-tabview{width:100%;height:100%}:host ::ng-deep .p-tabview{height:100%;display:flex;flex-direction:column}:host ::ng-deep .p-tabview-nav{flex-shrink:0}:host ::ng-deep .p-tabview-panels{flex:1;overflow:hidden}:host ::ng-deep .p-tabview-panel{height:100%}:host ::ng-deep app-chat-window{display:block;height:100%}.chat-tabview ::ng-deep .p-tabview-nav{background:transparent;border:none;display:flex;gap:8px;padding:6px 4px}.chat-tabview ::ng-deep .p-tabview-nav li{border:none}.chat-tabview ::ng-deep .p-tabview-nav li .p-tabview-nav-link{border:none;border-radius:18px;padding:6px 14px;font-size:13px;font-weight:500;color:#555;box-shadow:0 1px 4px #00000014;transition:all .2s ease}.chat-tabview ::ng-deep .p-tabview-nav li .p-tabview-nav-link:hover{color:#1a73e8}.chat-tabview ::ng-deep .p-tabview-nav li.p-highlight .p-tabview-nav-link{background:#1a73e8;color:#fff;box-shadow:0 4px 10px #1a73e859}.chat-tabview ::ng-deep .p-tabview-ink-bar{display:none}.chat-tabview ::ng-deep .p-tabview-panels{padding:0;border:none;background:transparent}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: ChatWindowComponent, selector: "app-chat-window", inputs: ["chatRoomId", "header", "chatUsers", "refreshRoom"] }, { kind: "ngmodule", type: DropdownModule }, { kind: "ngmodule", type: ButtonModule }, { kind: "ngmodule", type: ToastModule }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: TabViewModule }, { kind: "component", type: i2.TabView, selector: "p-tabView", inputs: ["style", "styleClass", "controlClose", "scrollable", "activeIndex", "selectOnFocus", "nextButtonAriaLabel", "prevButtonAriaLabel", "autoHideButtons", "tabindex"], outputs: ["onChange", "onClose", "activeIndexChange"] }, { kind: "component", type: i2.TabPanel, selector: "p-tabPanel", inputs: ["closable", "headerStyle", "headerStyleClass", "cache", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "selected", "disabled", "header", "leftIcon", "rightIcon"] }], encapsulation: i0.ViewEncapsulation.ShadowDom }); }
76
79
  }
77
80
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ChatLauncherComponent, decorators: [{
78
81
  type: Component,
79
- args: [{ selector: 'app-chat-launcher', standalone: true, imports: [CommonModule, ChatWindowComponent, DropdownModule, ButtonModule, ToastModule, FormsModule, TabViewModule], providers: [MessageService], encapsulation: ViewEncapsulation.ShadowDom, template: "<div class=\"chat-float-wrapper\">\r\n <p-tabView [activeIndex]=\"activeIndex()\" (activeIndexChange)=\"setActive($event)\" [scrollable]=\"true\"\r\n class=\"chat-tabview\">\r\n <p-tabPanel *ngFor=\"let w of openWindows(); let i = index\" [header]=\"w.header\">\r\n <app-chat-window [chatRoomId]=\"w.roomId\" [header]=\"w.header\">\r\n </app-chat-window>\r\n </p-tabPanel>\r\n </p-tabView>\r\n</div>", styles: ["@charset \"UTF-8\";.chat-float-wrapper{position:fixed!important;bottom:16px!important;right:16px!important;z-index:99999;pointer-events:auto}:host{all:initial;position:fixed;right:20px;bottom:20px;z-index:2147483647;font-family:Arial,sans-serif}:host *{box-sizing:border-box}.chat-tabview{width:100%;height:100%}:host ::ng-deep .p-tabview{height:100%;display:flex;flex-direction:column}:host ::ng-deep .p-tabview-nav{flex-shrink:0}:host ::ng-deep .p-tabview-panels{flex:1;overflow:hidden}:host ::ng-deep .p-tabview-panel{height:100%}:host ::ng-deep app-chat-window{display:block;height:100%}.chat-tabview ::ng-deep .p-tabview-nav{background:transparent;border:none;display:flex;gap:8px;padding:6px 4px}.chat-tabview ::ng-deep .p-tabview-nav li{border:none}.chat-tabview ::ng-deep .p-tabview-nav li .p-tabview-nav-link{border:none;border-radius:18px;padding:6px 14px;font-size:13px;font-weight:500;color:#555;box-shadow:0 1px 4px #00000014;transition:all .2s ease}.chat-tabview ::ng-deep .p-tabview-nav li .p-tabview-nav-link:hover{color:#1a73e8}.chat-tabview ::ng-deep .p-tabview-nav li.p-highlight .p-tabview-nav-link{background:#1a73e8;color:#fff;box-shadow:0 4px 10px #1a73e859}.chat-tabview ::ng-deep .p-tabview-ink-bar{display:none}.chat-tabview ::ng-deep .p-tabview-panels{padding:0;border:none;background:transparent}\n"] }]
82
+ args: [{ selector: 'app-chat-launcher', standalone: true, imports: [CommonModule, ChatWindowComponent, DropdownModule, ButtonModule, ToastModule, FormsModule, TabViewModule], providers: [MessageService], encapsulation: ViewEncapsulation.ShadowDom, template: "<div class=\"chat-float-wrapper\">\r\n <p-tabView [activeIndex]=\"activeIndex()\" (activeIndexChange)=\"setActive($event)\" [scrollable]=\"true\"\r\n class=\"chat-tabview\">\r\n <p-tabPanel *ngFor=\"let w of openWindows(); let i = index\" [header]=\"w.header\">\r\n <app-chat-window [chatRoomId]=\"w.roomId\" [header]=\"w.header\">\r\n </app-chat-window>\r\n </p-tabPanel>\r\n </p-tabView>\r\n</div>", styles: ["@charset \"UTF-8\";.chat-float-wrapper{position:fixed!important;bottom:16px!important;right:16px!important;z-index:99999;pointer-events:auto}:host{display:block;position:fixed;right:20px;bottom:20px;z-index:2147483647;font-family:Arial,sans-serif;pointer-events:auto}:host *,:host *:before,:host *:after{box-sizing:border-box}.chat-tabview{width:100%;height:100%}:host ::ng-deep .p-tabview{height:100%;display:flex;flex-direction:column}:host ::ng-deep .p-tabview-nav{flex-shrink:0}:host ::ng-deep .p-tabview-panels{flex:1;overflow:hidden}:host ::ng-deep .p-tabview-panel{height:100%}:host ::ng-deep app-chat-window{display:block;height:100%}.chat-tabview ::ng-deep .p-tabview-nav{background:transparent;border:none;display:flex;gap:8px;padding:6px 4px}.chat-tabview ::ng-deep .p-tabview-nav li{border:none}.chat-tabview ::ng-deep .p-tabview-nav li .p-tabview-nav-link{border:none;border-radius:18px;padding:6px 14px;font-size:13px;font-weight:500;color:#555;box-shadow:0 1px 4px #00000014;transition:all .2s ease}.chat-tabview ::ng-deep .p-tabview-nav li .p-tabview-nav-link:hover{color:#1a73e8}.chat-tabview ::ng-deep .p-tabview-nav li.p-highlight .p-tabview-nav-link{background:#1a73e8;color:#fff;box-shadow:0 4px 10px #1a73e859}.chat-tabview ::ng-deep .p-tabview-ink-bar{display:none}.chat-tabview ::ng-deep .p-tabview-panels{padding:0;border:none;background:transparent}\n"] }]
80
83
  }], ctorParameters: () => [] });
81
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC1sYXVuY2hlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jaGF0LXdpZGdldC9zcmMvbGliL2NoYXQtbGF1bmNoZXIvY2hhdC1sYXVuY2hlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jaGF0LXdpZGdldC9zcmMvbGliL2NoYXQtbGF1bmNoZXIvY2hhdC1sYXVuY2hlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sRUFBWSxNQUFNLEVBQVMsTUFBTSxFQUFFLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNySCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDM0UsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzVELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsRUFBRSxJQUFJLE1BQU0sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNwQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7QUFnQmhELE1BQU0sT0FBTyxxQkFBcUI7SUFjaEM7UUFaQSxXQUFNLEdBQUcsS0FBSyxDQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQzNCLGVBQVUsR0FBRyxLQUFLLENB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QU0sRUFBRSxDQUFDLENBQUMsQ0FBQztRQUUzRCw4QkFBOEI7UUFDOUIsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNkLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2pDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNWLENBQUM7SUFHRCxXQUFXLENBQUMsTUFBYztRQUN4QixJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxLQUFLLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDckUsQ0FBQztJQUVELGFBQWE7UUFDWCxPQUFPLE1BQU0sRUFBRSxDQUFDO0lBQ2xCLENBQUM7SUFFRCxTQUFTLENBQUMsQ0FBUztRQUNqQixJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMxQixDQUFDOytHQTVFVSxxQkFBcUI7bUdBQXJCLHFCQUFxQix3c0JBSHJCLENBQUMsY0FBYyxDQUFDLDBCQ3ZCN0Isc2FBUU0sdTJDRFlNLFlBQVksNEpBQUUsbUJBQW1CLHlIQUFFLGNBQWMsOEJBQUUsWUFBWSw4QkFBRSxXQUFXLDhCQUFFLFdBQVcsOEJBQUUsYUFBYTs7NEZBTXZHLHFCQUFxQjtrQkFUakMsU0FBUzsrQkFDRSxtQkFBbUIsY0FDakIsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLG1CQUFtQixFQUFFLGNBQWMsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxhQUFhLENBQUMsYUFHeEcsQ0FBQyxjQUFjLENBQUMsaUJBQ1osaUJBQWlCLENBQUMsU0FBUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBzaWduYWwsIGNvbXB1dGVkLCBpbmplY3QsIElucHV0LCBlZmZlY3QsIGlucHV0LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBDaGF0V2luZG93Q29tcG9uZW50IH0gZnJvbSAnLi4vY2hhdC13aW5kb3cvY2hhdC13aW5kb3cuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ2hhdFNlcnZpY2UgfSBmcm9tICcuLi9jb3JlL3NlcnZpY2VzL2NoYXQuc2VydmljZSc7XHJcbmltcG9ydCB7IERyb3Bkb3duTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9kcm9wZG93bic7XHJcbmltcG9ydCB7IEJ1dHRvbk1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvYnV0dG9uJztcclxuaW1wb3J0IHsgVG9hc3RNb2R1bGUgfSBmcm9tICdwcmltZW5nL3RvYXN0JztcclxuaW1wb3J0IHsgTWVzc2FnZVNlcnZpY2UgfSBmcm9tICdwcmltZW5nL2FwaSc7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyB2NCBhcyB1dWlkdjQgfSBmcm9tICd1dWlkJztcclxuaW1wb3J0IHsgVGFiVmlld01vZHVsZSB9IGZyb20gJ3ByaW1lbmcvdGFidmlldyc7XHJcblxyXG5pbnRlcmZhY2UgT3BlbkNoYXRXaW5kb3cge1xyXG4gIHJvb21JZDogc3RyaW5nO1xyXG4gIGhlYWRlcjogc3RyaW5nO1xyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1jaGF0LWxhdW5jaGVyJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIENoYXRXaW5kb3dDb21wb25lbnQsIERyb3Bkb3duTW9kdWxlLCBCdXR0b25Nb2R1bGUsIFRvYXN0TW9kdWxlLCBGb3Jtc01vZHVsZSwgVGFiVmlld01vZHVsZV0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2NoYXQtbGF1bmNoZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2NoYXQtbGF1bmNoZXIuY29tcG9uZW50LnNjc3MnXSxcclxuICBwcm92aWRlcnM6IFtNZXNzYWdlU2VydmljZV0sXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uU2hhZG93RG9tXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDaGF0TGF1bmNoZXJDb21wb25lbnQge1xyXG5cclxuICByb29tSWQgPSBpbnB1dDxzdHJpbmc+KCcnKTtcclxuICByb29tSGVhZGVyID0gaW5wdXQ8c3RyaW5nPignJyk7XHJcbiAgdXNlciA9IGlucHV0PGFueT4obnVsbCk7XHJcbiAgdXNlckxpc3QgPSBpbnB1dDxhbnlbXT4oW10pO1xyXG4gIGNoYXRVc2VycyA9IGlucHV0PGFueVtdPihbXSk7XHJcblxyXG4gIGNoYXRTZXJ2aWNlID0gaW5qZWN0KENoYXRTZXJ2aWNlKTtcclxuICBtZXNzYWdlU2VydmljZSA9IGluamVjdChNZXNzYWdlU2VydmljZSk7XHJcbiAgb3BlbldpbmRvd3MgPSBzaWduYWw8T3BlbkNoYXRXaW5kb3dbXT4oW10pO1xyXG4gIGxhc3RPcGVuZWRSb29tID0gc2lnbmFsPHN0cmluZyB8IG51bGw+KG51bGwpO1xyXG4gIGFjdGl2ZUluZGV4ID0gc2lnbmFsKDApO1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIGVmZmVjdChcclxuICAgICAgKCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHJvb21JZCA9IHRoaXMucm9vbUlkKCk7XHJcbiAgICAgICAgY29uc3QgaGVhZGVyID0gdGhpcy5yb29tSGVhZGVyKCk7XHJcbiAgICAgICAgY29uc3QgdXNlciA9IHRoaXMudXNlcigpO1xyXG5cclxuICAgICAgICB0aGlzLmNoYXRTZXJ2aWNlLmN1cnJlbnRVc2VyLnNldCh7XHJcbiAgICAgICAgICByb29tSWQ6IHRoaXMucm9vbUlkKCksXHJcbiAgICAgICAgICB1c2VySWQ6IHVzZXI/LmlkLFxyXG4gICAgICAgICAgbmFtZTogdXNlcj8ubmFtZVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICB0aGlzLmNoYXRTZXJ2aWNlLnVzZXJMaXN0LnNldCh0aGlzLnVzZXJMaXN0KCkpO1xyXG5cclxuICAgICAgICBpZiAoIXJvb21JZCB8fCAhdXNlcj8uaWQpIHJldHVybjtcclxuICAgICAgICBpZiAodGhpcy5sYXN0T3BlbmVkUm9vbSgpID09PSByb29tSWQpIHJldHVybjtcclxuXHJcbiAgICAgICAgdGhpcy5sYXN0T3BlbmVkUm9vbS5zZXQocm9vbUlkKTtcclxuICAgICAgICB0aGlzLm9wZW5OZXdSb29tKHJvb21JZCwgaGVhZGVyLCB1c2VyLmlkLCB1c2VyLm5hbWUsIHRoaXMuY2hhdFVzZXJzKTtcclxuICAgICAgfSxcclxuICAgICAgeyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgb3Blbk5ld1Jvb20ocm9vbUlkOiBzdHJpbmcsIHJvb21IZWFkZXI6IHN0cmluZywgdXNlcklkOiBzdHJpbmcsIHVzZXJuYW1lOiBzdHJpbmcsIGNoYXRVc2VyczogYW55KSB7XHJcbiAgICB0aGlzLmNoYXRTZXJ2aWNlLmNyZWF0ZVJvb20ocm9vbUlkLCByb29tSGVhZGVyLCB1c2VySWQsIHVzZXJuYW1lLCBjaGF0VXNlcnMpLnN1YnNjcmliZShyb29tID0+IHtcclxuICAgICAgdGhpcy5hZGRXaW5kb3cocm9vbS5yb29tS2V5LCByb29tLm5hbWUpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBhZGRXaW5kb3cocm9vbUlkOiBzdHJpbmcsIGhlYWRlcjogc3RyaW5nKSB7XHJcbiAgICBjb25zdCB3aW5kb3dzID0gdGhpcy5vcGVuV2luZG93cygpO1xyXG4gICAgY29uc3QgZXhpc3RpbmdJbmRleCA9IHdpbmRvd3MuZmluZEluZGV4KHcgPT4gdy5yb29tSWQgPT09IHJvb21JZCk7XHJcbiAgXHJcbiAgICAvLyBhbHJlYWR5IG9wZW4g4oaSIGZvY3VzXHJcbiAgICBpZiAoZXhpc3RpbmdJbmRleCAhPT0gLTEpIHtcclxuICAgICAgdGhpcy5hY3RpdmVJbmRleC5zZXQoZXhpc3RpbmdJbmRleCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICBcclxuICAgIGNvbnN0IG5ld0luZGV4ID0gd2luZG93cy5sZW5ndGg7XHJcbiAgXHJcbiAgICB0aGlzLm9wZW5XaW5kb3dzLnVwZGF0ZSh3cyA9PiBbLi4ud3MsIHsgcm9vbUlkLCBoZWFkZXIgfV0pO1xyXG4gIFxyXG4gICAgLy8g4pyFIGZvcmNlIHJlYWwgY2hhbmdlOiAtMSDihpIgMFxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuYWN0aXZlSW5kZXguc2V0KG5ld0luZGV4KTtcclxuICAgIH0sIDUwMCk7XHJcbiAgfVxyXG4gIFxyXG5cclxuICBjbG9zZVdpbmRvdyhyb29tSWQ6IHN0cmluZykge1xyXG4gICAgdGhpcy5vcGVuV2luZG93cy51cGRhdGUod3MgPT4gd3MuZmlsdGVyKHcgPT4gdy5yb29tSWQgIT09IHJvb21JZCkpO1xyXG4gIH1cclxuXHJcbiAgZ2V0UmFuZG9tVXVpZCgpIHtcclxuICAgIHJldHVybiB1dWlkdjQoKTtcclxuICB9XHJcblxyXG4gIHNldEFjdGl2ZShpOiBudW1iZXIpIHtcclxuICAgIHRoaXMuYWN0aXZlSW5kZXguc2V0KGkpO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiY2hhdC1mbG9hdC13cmFwcGVyXCI+XHJcbiAgPHAtdGFiVmlldyBbYWN0aXZlSW5kZXhdPVwiYWN0aXZlSW5kZXgoKVwiIChhY3RpdmVJbmRleENoYW5nZSk9XCJzZXRBY3RpdmUoJGV2ZW50KVwiIFtzY3JvbGxhYmxlXT1cInRydWVcIlxyXG4gICAgY2xhc3M9XCJjaGF0LXRhYnZpZXdcIj5cclxuICAgIDxwLXRhYlBhbmVsICpuZ0Zvcj1cImxldCB3IG9mIG9wZW5XaW5kb3dzKCk7IGxldCBpID0gaW5kZXhcIiBbaGVhZGVyXT1cIncuaGVhZGVyXCI+XHJcbiAgICAgIDxhcHAtY2hhdC13aW5kb3cgW2NoYXRSb29tSWRdPVwidy5yb29tSWRcIiBbaGVhZGVyXT1cIncuaGVhZGVyXCI+XHJcbiAgICAgIDwvYXBwLWNoYXQtd2luZG93PlxyXG4gICAgPC9wLXRhYlBhbmVsPlxyXG4gIDwvcC10YWJWaWV3PlxyXG48L2Rpdj4iXX0=
84
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC1sYXVuY2hlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jaGF0LXdpZGdldC9zcmMvbGliL2NoYXQtbGF1bmNoZXIvY2hhdC1sYXVuY2hlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jaGF0LXdpZGdldC9zcmMvbGliL2NoYXQtbGF1bmNoZXIvY2hhdC1sYXVuY2hlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sRUFBWSxNQUFNLEVBQVMsTUFBTSxFQUFFLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNySCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDM0UsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzVELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsRUFBRSxJQUFJLE1BQU0sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNwQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7QUFnQmhELE1BQU0sT0FBTyxxQkFBcUI7SUFjaEM7UUFaQSxXQUFNLEdBQUcsS0FBSyxDQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQzNCLGVBQVUsR0FBRyxLQUFLLENB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bmplY3QsIElucHV0LCBlZmZlY3QsIGlucHV0LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBDaGF0V2luZG93Q29tcG9uZW50IH0gZnJvbSAnLi4vY2hhdC13aW5kb3cvY2hhdC13aW5kb3cuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ2hhdFNlcnZpY2UgfSBmcm9tICcuLi9jb3JlL3NlcnZpY2VzL2NoYXQuc2VydmljZSc7XHJcbmltcG9ydCB7IERyb3Bkb3duTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9kcm9wZG93bic7XHJcbmltcG9ydCB7IEJ1dHRvbk1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvYnV0dG9uJztcclxuaW1wb3J0IHsgVG9hc3RNb2R1bGUgfSBmcm9tICdwcmltZW5nL3RvYXN0JztcclxuaW1wb3J0IHsgTWVzc2FnZVNlcnZpY2UgfSBmcm9tICdwcmltZW5nL2FwaSc7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyB2NCBhcyB1dWlkdjQgfSBmcm9tICd1dWlkJztcclxuaW1wb3J0IHsgVGFiVmlld01vZHVsZSB9IGZyb20gJ3ByaW1lbmcvdGFidmlldyc7XHJcblxyXG5pbnRlcmZhY2UgT3BlbkNoYXRXaW5kb3cge1xyXG4gIHJvb21JZDogc3RyaW5nO1xyXG4gIGhlYWRlcjogc3RyaW5nO1xyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1jaGF0LWxhdW5jaGVyJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIENoYXRXaW5kb3dDb21wb25lbnQsIERyb3Bkb3duTW9kdWxlLCBCdXR0b25Nb2R1bGUsIFRvYXN0TW9kdWxlLCBGb3Jtc01vZHVsZSwgVGFiVmlld01vZHVsZV0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2NoYXQtbGF1bmNoZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2NoYXQtbGF1bmNoZXIuY29tcG9uZW50LnNjc3MnXSxcclxuICBwcm92aWRlcnM6IFtNZXNzYWdlU2VydmljZV0sXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uU2hhZG93RG9tXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDaGF0TGF1bmNoZXJDb21wb25lbnQge1xyXG5cclxuICByb29tSWQgPSBpbnB1dDxzdHJpbmc+KCcnKTtcclxuICByb29tSGVhZGVyID0gaW5wdXQ8c3RyaW5nPignJyk7XHJcbiAgdXNlciA9IGlucHV0PGFueT4obnVsbCk7XHJcbiAgdXNlckxpc3QgPSBpbnB1dDxhbnlbXT4oW10pO1xyXG4gIGNoYXRVc2VycyA9IGlucHV0PGFueVtdPihbXSk7XHJcblxyXG4gIGNoYXRTZXJ2aWNlID0gaW5qZWN0KENoYXRTZXJ2aWNlKTtcclxuICBtZXNzYWdlU2VydmljZSA9IGluamVjdChNZXNzYWdlU2VydmljZSk7XHJcbiAgb3BlbldpbmRvd3MgPSBzaWduYWw8T3BlbkNoYXRXaW5kb3dbXT4oW10pO1xyXG4gIGxhc3RPcGVuZWRSb29tID0gc2lnbmFsPHN0cmluZyB8IG51bGw+KG51bGwpO1xyXG4gIGFjdGl2ZUluZGV4ID0gc2lnbmFsKDApO1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIGVmZmVjdChcclxuICAgICAgKCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHJvb21JZCA9IHRoaXMucm9vbUlkKCk7XHJcbiAgICAgICAgY29uc3QgaGVhZGVyID0gdGhpcy5yb29tSGVhZGVyKCk7XHJcbiAgICAgICAgY29uc3QgdXNlciA9IHRoaXMudXNlcigpO1xyXG5cclxuICAgICAgICB0aGlzLmNoYXRTZXJ2aWNlLmN1cnJlbnRVc2VyLnNldCh7XHJcbiAgICAgICAgICByb29tSWQ6IHRoaXMucm9vbUlkKCksXHJcbiAgICAgICAgICB1c2VySWQ6IHVzZXI/LmlkLFxyXG4gICAgICAgICAgbmFtZTogdXNlcj8ubmFtZVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICB0aGlzLmNoYXRTZXJ2aWNlLnVzZXJMaXN0LnNldCh0aGlzLnVzZXJMaXN0KCkpO1xyXG5cclxuICAgICAgICBpZiAoIXJvb21JZCB8fCAhdXNlcj8uaWQpIHJldHVybjtcclxuICAgICAgICBpZiAodGhpcy5sYXN0T3BlbmVkUm9vbSgpID09PSByb29tSWQpIHJldHVybjtcclxuXHJcbiAgICAgICAgdGhpcy5sYXN0T3BlbmVkUm9vbS5zZXQocm9vbUlkKTtcclxuICAgICAgICB0aGlzLm9wZW5OZXdSb29tKHJvb21JZCwgaGVhZGVyLCB1c2VyLmlkLCB1c2VyLm5hbWUsIHRoaXMuY2hhdFVzZXJzKTtcclxuICAgICAgfSxcclxuICAgICAgeyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICBjb25zb2xlLmxvZygnQ2hhdExhdW5jaGVyIGluaXRpYWxpemVkJyk7XHJcbiAgfVxyXG4gIFxyXG4gIG9wZW5OZXdSb29tKHJvb21JZDogc3RyaW5nLCByb29tSGVhZGVyOiBzdHJpbmcsIHVzZXJJZDogc3RyaW5nLCB1c2VybmFtZTogc3RyaW5nLCBjaGF0VXNlcnM6IGFueSkge1xyXG4gICAgdGhpcy5jaGF0U2VydmljZS5jcmVhdGVSb29tKHJvb21JZCwgcm9vbUhlYWRlciwgdXNlcklkLCB1c2VybmFtZSwgY2hhdFVzZXJzKS5zdWJzY3JpYmUocm9vbSA9PiB7XHJcbiAgICAgIHRoaXMuYWRkV2luZG93KHJvb20ucm9vbUtleSwgcm9vbS5uYW1lKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgYWRkV2luZG93KHJvb21JZDogc3RyaW5nLCBoZWFkZXI6IHN0cmluZykge1xyXG4gICAgY29uc3Qgd2luZG93cyA9IHRoaXMub3BlbldpbmRvd3MoKTtcclxuICAgIGNvbnN0IGV4aXN0aW5nSW5kZXggPSB3aW5kb3dzLmZpbmRJbmRleCh3ID0+IHcucm9vbUlkID09PSByb29tSWQpO1xyXG4gIFxyXG4gICAgLy8gYWxyZWFkeSBvcGVuIOKGkiBmb2N1c1xyXG4gICAgaWYgKGV4aXN0aW5nSW5kZXggIT09IC0xKSB7XHJcbiAgICAgIHRoaXMuYWN0aXZlSW5kZXguc2V0KGV4aXN0aW5nSW5kZXgpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgXHJcbiAgICBjb25zdCBuZXdJbmRleCA9IHdpbmRvd3MubGVuZ3RoO1xyXG4gIFxyXG4gICAgdGhpcy5vcGVuV2luZG93cy51cGRhdGUod3MgPT4gWy4uLndzLCB7IHJvb21JZCwgaGVhZGVyIH1dKTtcclxuICBcclxuICAgIC8vIOKchSBmb3JjZSByZWFsIGNoYW5nZTogLTEg4oaSIDBcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLmFjdGl2ZUluZGV4LnNldChuZXdJbmRleCk7XHJcbiAgICB9LCA1MDApO1xyXG4gIH1cclxuICBcclxuXHJcbiAgY2xvc2VXaW5kb3cocm9vbUlkOiBzdHJpbmcpIHtcclxuICAgIHRoaXMub3BlbldpbmRvd3MudXBkYXRlKHdzID0+IHdzLmZpbHRlcih3ID0+IHcucm9vbUlkICE9PSByb29tSWQpKTtcclxuICB9XHJcblxyXG4gIGdldFJhbmRvbVV1aWQoKSB7XHJcbiAgICByZXR1cm4gdXVpZHY0KCk7XHJcbiAgfVxyXG5cclxuICBzZXRBY3RpdmUoaTogbnVtYmVyKSB7XHJcbiAgICB0aGlzLmFjdGl2ZUluZGV4LnNldChpKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImNoYXQtZmxvYXQtd3JhcHBlclwiPlxyXG4gIDxwLXRhYlZpZXcgW2FjdGl2ZUluZGV4XT1cImFjdGl2ZUluZGV4KClcIiAoYWN0aXZlSW5kZXhDaGFuZ2UpPVwic2V0QWN0aXZlKCRldmVudClcIiBbc2Nyb2xsYWJsZV09XCJ0cnVlXCJcclxuICAgIGNsYXNzPVwiY2hhdC10YWJ2aWV3XCI+XHJcbiAgICA8cC10YWJQYW5lbCAqbmdGb3I9XCJsZXQgdyBvZiBvcGVuV2luZG93cygpOyBsZXQgaSA9IGluZGV4XCIgW2hlYWRlcl09XCJ3LmhlYWRlclwiPlxyXG4gICAgICA8YXBwLWNoYXQtd2luZG93IFtjaGF0Um9vbUlkXT1cIncucm9vbUlkXCIgW2hlYWRlcl09XCJ3LmhlYWRlclwiPlxyXG4gICAgICA8L2FwcC1jaGF0LXdpbmRvdz5cclxuICAgIDwvcC10YWJQYW5lbD5cclxuICA8L3AtdGFiVmlldz5cclxuPC9kaXY+Il19
@@ -333,6 +333,9 @@ class ChatLauncherComponent {
333
333
  this.openNewRoom(roomId, header, user.id, user.name, this.chatUsers);
334
334
  }, { allowSignalWrites: true });
335
335
  }
336
+ ngOnInit() {
337
+ console.log('ChatLauncher initialized');
338
+ }
336
339
  openNewRoom(roomId, roomHeader, userId, username, chatUsers) {
337
340
  this.chatService.createRoom(roomId, roomHeader, userId, username, chatUsers).subscribe(room => {
338
341
  this.addWindow(room.roomKey, room.name);
@@ -363,11 +366,11 @@ class ChatLauncherComponent {
363
366
  this.activeIndex.set(i);
364
367
  }
365
368
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ChatLauncherComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
366
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "17.3.12", type: ChatLauncherComponent, isStandalone: true, selector: "app-chat-launcher", inputs: { roomId: { classPropertyName: "roomId", publicName: "roomId", isSignal: true, isRequired: false, transformFunction: null }, roomHeader: { classPropertyName: "roomHeader", publicName: "roomHeader", isSignal: true, isRequired: false, transformFunction: null }, user: { classPropertyName: "user", publicName: "user", isSignal: true, isRequired: false, transformFunction: null }, userList: { classPropertyName: "userList", publicName: "userList", isSignal: true, isRequired: false, transformFunction: null }, chatUsers: { classPropertyName: "chatUsers", publicName: "chatUsers", isSignal: true, isRequired: false, transformFunction: null } }, providers: [MessageService], ngImport: i0, template: "<div class=\"chat-float-wrapper\">\r\n <p-tabView [activeIndex]=\"activeIndex()\" (activeIndexChange)=\"setActive($event)\" [scrollable]=\"true\"\r\n class=\"chat-tabview\">\r\n <p-tabPanel *ngFor=\"let w of openWindows(); let i = index\" [header]=\"w.header\">\r\n <app-chat-window [chatRoomId]=\"w.roomId\" [header]=\"w.header\">\r\n </app-chat-window>\r\n </p-tabPanel>\r\n </p-tabView>\r\n</div>", styles: ["@charset \"UTF-8\";.chat-float-wrapper{position:fixed!important;bottom:16px!important;right:16px!important;z-index:99999;pointer-events:auto}:host{all:initial;position:fixed;right:20px;bottom:20px;z-index:2147483647;font-family:Arial,sans-serif}:host *{box-sizing:border-box}.chat-tabview{width:100%;height:100%}:host ::ng-deep .p-tabview{height:100%;display:flex;flex-direction:column}:host ::ng-deep .p-tabview-nav{flex-shrink:0}:host ::ng-deep .p-tabview-panels{flex:1;overflow:hidden}:host ::ng-deep .p-tabview-panel{height:100%}:host ::ng-deep app-chat-window{display:block;height:100%}.chat-tabview ::ng-deep .p-tabview-nav{background:transparent;border:none;display:flex;gap:8px;padding:6px 4px}.chat-tabview ::ng-deep .p-tabview-nav li{border:none}.chat-tabview ::ng-deep .p-tabview-nav li .p-tabview-nav-link{border:none;border-radius:18px;padding:6px 14px;font-size:13px;font-weight:500;color:#555;box-shadow:0 1px 4px #00000014;transition:all .2s ease}.chat-tabview ::ng-deep .p-tabview-nav li .p-tabview-nav-link:hover{color:#1a73e8}.chat-tabview ::ng-deep .p-tabview-nav li.p-highlight .p-tabview-nav-link{background:#1a73e8;color:#fff;box-shadow:0 4px 10px #1a73e859}.chat-tabview ::ng-deep .p-tabview-ink-bar{display:none}.chat-tabview ::ng-deep .p-tabview-panels{padding:0;border:none;background:transparent}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: ChatWindowComponent, selector: "app-chat-window", inputs: ["chatRoomId", "header", "chatUsers", "refreshRoom"] }, { kind: "ngmodule", type: DropdownModule }, { kind: "ngmodule", type: ButtonModule }, { kind: "ngmodule", type: ToastModule }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: TabViewModule }, { kind: "component", type: i2$1.TabView, selector: "p-tabView", inputs: ["style", "styleClass", "controlClose", "scrollable", "activeIndex", "selectOnFocus", "nextButtonAriaLabel", "prevButtonAriaLabel", "autoHideButtons", "tabindex"], outputs: ["onChange", "onClose", "activeIndexChange"] }, { kind: "component", type: i2$1.TabPanel, selector: "p-tabPanel", inputs: ["closable", "headerStyle", "headerStyleClass", "cache", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "selected", "disabled", "header", "leftIcon", "rightIcon"] }], encapsulation: i0.ViewEncapsulation.ShadowDom }); }
369
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "17.3.12", type: ChatLauncherComponent, isStandalone: true, selector: "app-chat-launcher", inputs: { roomId: { classPropertyName: "roomId", publicName: "roomId", isSignal: true, isRequired: false, transformFunction: null }, roomHeader: { classPropertyName: "roomHeader", publicName: "roomHeader", isSignal: true, isRequired: false, transformFunction: null }, user: { classPropertyName: "user", publicName: "user", isSignal: true, isRequired: false, transformFunction: null }, userList: { classPropertyName: "userList", publicName: "userList", isSignal: true, isRequired: false, transformFunction: null }, chatUsers: { classPropertyName: "chatUsers", publicName: "chatUsers", isSignal: true, isRequired: false, transformFunction: null } }, providers: [MessageService], ngImport: i0, template: "<div class=\"chat-float-wrapper\">\r\n <p-tabView [activeIndex]=\"activeIndex()\" (activeIndexChange)=\"setActive($event)\" [scrollable]=\"true\"\r\n class=\"chat-tabview\">\r\n <p-tabPanel *ngFor=\"let w of openWindows(); let i = index\" [header]=\"w.header\">\r\n <app-chat-window [chatRoomId]=\"w.roomId\" [header]=\"w.header\">\r\n </app-chat-window>\r\n </p-tabPanel>\r\n </p-tabView>\r\n</div>", styles: ["@charset \"UTF-8\";.chat-float-wrapper{position:fixed!important;bottom:16px!important;right:16px!important;z-index:99999;pointer-events:auto}:host{display:block;position:fixed;right:20px;bottom:20px;z-index:2147483647;font-family:Arial,sans-serif;pointer-events:auto}:host *,:host *:before,:host *:after{box-sizing:border-box}.chat-tabview{width:100%;height:100%}:host ::ng-deep .p-tabview{height:100%;display:flex;flex-direction:column}:host ::ng-deep .p-tabview-nav{flex-shrink:0}:host ::ng-deep .p-tabview-panels{flex:1;overflow:hidden}:host ::ng-deep .p-tabview-panel{height:100%}:host ::ng-deep app-chat-window{display:block;height:100%}.chat-tabview ::ng-deep .p-tabview-nav{background:transparent;border:none;display:flex;gap:8px;padding:6px 4px}.chat-tabview ::ng-deep .p-tabview-nav li{border:none}.chat-tabview ::ng-deep .p-tabview-nav li .p-tabview-nav-link{border:none;border-radius:18px;padding:6px 14px;font-size:13px;font-weight:500;color:#555;box-shadow:0 1px 4px #00000014;transition:all .2s ease}.chat-tabview ::ng-deep .p-tabview-nav li .p-tabview-nav-link:hover{color:#1a73e8}.chat-tabview ::ng-deep .p-tabview-nav li.p-highlight .p-tabview-nav-link{background:#1a73e8;color:#fff;box-shadow:0 4px 10px #1a73e859}.chat-tabview ::ng-deep .p-tabview-ink-bar{display:none}.chat-tabview ::ng-deep .p-tabview-panels{padding:0;border:none;background:transparent}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: ChatWindowComponent, selector: "app-chat-window", inputs: ["chatRoomId", "header", "chatUsers", "refreshRoom"] }, { kind: "ngmodule", type: DropdownModule }, { kind: "ngmodule", type: ButtonModule }, { kind: "ngmodule", type: ToastModule }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: TabViewModule }, { kind: "component", type: i2$1.TabView, selector: "p-tabView", inputs: ["style", "styleClass", "controlClose", "scrollable", "activeIndex", "selectOnFocus", "nextButtonAriaLabel", "prevButtonAriaLabel", "autoHideButtons", "tabindex"], outputs: ["onChange", "onClose", "activeIndexChange"] }, { kind: "component", type: i2$1.TabPanel, selector: "p-tabPanel", inputs: ["closable", "headerStyle", "headerStyleClass", "cache", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "selected", "disabled", "header", "leftIcon", "rightIcon"] }], encapsulation: i0.ViewEncapsulation.ShadowDom }); }
367
370
  }
368
371
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ChatLauncherComponent, decorators: [{
369
372
  type: Component,
370
- args: [{ selector: 'app-chat-launcher', standalone: true, imports: [CommonModule, ChatWindowComponent, DropdownModule, ButtonModule, ToastModule, FormsModule, TabViewModule], providers: [MessageService], encapsulation: ViewEncapsulation.ShadowDom, template: "<div class=\"chat-float-wrapper\">\r\n <p-tabView [activeIndex]=\"activeIndex()\" (activeIndexChange)=\"setActive($event)\" [scrollable]=\"true\"\r\n class=\"chat-tabview\">\r\n <p-tabPanel *ngFor=\"let w of openWindows(); let i = index\" [header]=\"w.header\">\r\n <app-chat-window [chatRoomId]=\"w.roomId\" [header]=\"w.header\">\r\n </app-chat-window>\r\n </p-tabPanel>\r\n </p-tabView>\r\n</div>", styles: ["@charset \"UTF-8\";.chat-float-wrapper{position:fixed!important;bottom:16px!important;right:16px!important;z-index:99999;pointer-events:auto}:host{all:initial;position:fixed;right:20px;bottom:20px;z-index:2147483647;font-family:Arial,sans-serif}:host *{box-sizing:border-box}.chat-tabview{width:100%;height:100%}:host ::ng-deep .p-tabview{height:100%;display:flex;flex-direction:column}:host ::ng-deep .p-tabview-nav{flex-shrink:0}:host ::ng-deep .p-tabview-panels{flex:1;overflow:hidden}:host ::ng-deep .p-tabview-panel{height:100%}:host ::ng-deep app-chat-window{display:block;height:100%}.chat-tabview ::ng-deep .p-tabview-nav{background:transparent;border:none;display:flex;gap:8px;padding:6px 4px}.chat-tabview ::ng-deep .p-tabview-nav li{border:none}.chat-tabview ::ng-deep .p-tabview-nav li .p-tabview-nav-link{border:none;border-radius:18px;padding:6px 14px;font-size:13px;font-weight:500;color:#555;box-shadow:0 1px 4px #00000014;transition:all .2s ease}.chat-tabview ::ng-deep .p-tabview-nav li .p-tabview-nav-link:hover{color:#1a73e8}.chat-tabview ::ng-deep .p-tabview-nav li.p-highlight .p-tabview-nav-link{background:#1a73e8;color:#fff;box-shadow:0 4px 10px #1a73e859}.chat-tabview ::ng-deep .p-tabview-ink-bar{display:none}.chat-tabview ::ng-deep .p-tabview-panels{padding:0;border:none;background:transparent}\n"] }]
373
+ args: [{ selector: 'app-chat-launcher', standalone: true, imports: [CommonModule, ChatWindowComponent, DropdownModule, ButtonModule, ToastModule, FormsModule, TabViewModule], providers: [MessageService], encapsulation: ViewEncapsulation.ShadowDom, template: "<div class=\"chat-float-wrapper\">\r\n <p-tabView [activeIndex]=\"activeIndex()\" (activeIndexChange)=\"setActive($event)\" [scrollable]=\"true\"\r\n class=\"chat-tabview\">\r\n <p-tabPanel *ngFor=\"let w of openWindows(); let i = index\" [header]=\"w.header\">\r\n <app-chat-window [chatRoomId]=\"w.roomId\" [header]=\"w.header\">\r\n </app-chat-window>\r\n </p-tabPanel>\r\n </p-tabView>\r\n</div>", styles: ["@charset \"UTF-8\";.chat-float-wrapper{position:fixed!important;bottom:16px!important;right:16px!important;z-index:99999;pointer-events:auto}:host{display:block;position:fixed;right:20px;bottom:20px;z-index:2147483647;font-family:Arial,sans-serif;pointer-events:auto}:host *,:host *:before,:host *:after{box-sizing:border-box}.chat-tabview{width:100%;height:100%}:host ::ng-deep .p-tabview{height:100%;display:flex;flex-direction:column}:host ::ng-deep .p-tabview-nav{flex-shrink:0}:host ::ng-deep .p-tabview-panels{flex:1;overflow:hidden}:host ::ng-deep .p-tabview-panel{height:100%}:host ::ng-deep app-chat-window{display:block;height:100%}.chat-tabview ::ng-deep .p-tabview-nav{background:transparent;border:none;display:flex;gap:8px;padding:6px 4px}.chat-tabview ::ng-deep .p-tabview-nav li{border:none}.chat-tabview ::ng-deep .p-tabview-nav li .p-tabview-nav-link{border:none;border-radius:18px;padding:6px 14px;font-size:13px;font-weight:500;color:#555;box-shadow:0 1px 4px #00000014;transition:all .2s ease}.chat-tabview ::ng-deep .p-tabview-nav li .p-tabview-nav-link:hover{color:#1a73e8}.chat-tabview ::ng-deep .p-tabview-nav li.p-highlight .p-tabview-nav-link{background:#1a73e8;color:#fff;box-shadow:0 4px 10px #1a73e859}.chat-tabview ::ng-deep .p-tabview-ink-bar{display:none}.chat-tabview ::ng-deep .p-tabview-panels{padding:0;border:none;background:transparent}\n"] }]
371
374
  }], ctorParameters: () => [] });
372
375
 
373
376
  class ChatWidgetModule {
@@ -1 +1 @@
1
- {"version":3,"file":"ranjeethr-chat-widget.mjs","sources":["../../../projects/chat-widget/src/lib/core/services/chat.service.ts","../../../projects/chat-widget/src/lib/core/services/socket.service.ts","../../../projects/chat-widget/src/lib/chat-window/chat-window.component.ts","../../../projects/chat-widget/src/lib/chat-window/chat-window.component.html","../../../projects/chat-widget/src/lib/chat-launcher/chat-launcher.component.ts","../../../projects/chat-widget/src/lib/chat-launcher/chat-launcher.component.html","../../../projects/chat-widget/src/lib/chat-widget.module.ts","../../../projects/chat-widget/src/public-api.ts","../../../projects/chat-widget/src/ranjeethr-chat-widget.ts"],"sourcesContent":["import { Injectable, signal } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { map } from 'rxjs/operators';\r\nimport { Observable } from 'rxjs';\r\nimport { ChatMessage, Reaction } from '../models/chat.models';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class ChatService {\r\n private baseUrl = `http://localhost:3000/api`;\r\n\r\n currentUser = signal<any | null>(null);\r\n userList = signal<any[]>([]);\r\n\r\n constructor(private http: HttpClient) { }\r\n\r\n /* ---------------- CHAT ROOMS ---------------- */\r\n createRoom(roomId: string, name: string, createdBy: string, username: string, chatUsers: any): Observable<any> {\r\n return this.http.post(`${this.baseUrl}/chatrooms/${roomId}`, {\r\n name,\r\n createdBy,\r\n username,\r\n chatUsers\r\n });\r\n }\r\n\r\n getRoomUsers(roomId: string): Observable<any[]> {\r\n return this.http.get<any[]>(`${this.baseUrl}/chatrooms/${roomId}/users`).pipe(\r\n map(list =>\r\n list.map(u => ({\r\n id: u.UserId,\r\n username: u.UserName\r\n }))\r\n )\r\n );\r\n }\r\n\r\n addUserToRoom(roomId: string, userId: string, userName: string, createdBy: string) {\r\n return this.http.post(`${this.baseUrl}/chatrooms/${roomId}/users`, {\r\n userId,\r\n userName,\r\n createdBy\r\n });\r\n }\r\n\r\n /* ---------------- MESSAGES ---------------- */\r\n getMessages(roomId: string, since?: string): Observable<ChatMessage[]> {\r\n const params: any = {};\r\n if (since) params.since = since;\r\n\r\n return this.http.get<any[]>(`${this.baseUrl}/messages/rooms/${roomId}`, { params }).pipe(\r\n map(list =>\r\n list.map(m => ({\r\n id: m.id,\r\n chatRoomId: m.chatRoomId,\r\n senderId: m.senderId,\r\n senderName: m.senderName,\r\n content: m.content,\r\n replyToMessageId: m.replyToMessageId,\r\n createdAt: m.createdAt,\r\n hasAttachment: m.hasAttachment ?? false,\r\n }))\r\n )\r\n );\r\n }\r\n\r\n sendMessage(\r\n roomId: string,\r\n payload: { senderId: string; content: string; replyToMessageId?: string | null, createdBy: string }\r\n ): Observable<ChatMessage> {\r\n return this.http.post<any>(`${this.baseUrl}/messages/rooms/${roomId}`, payload).pipe(\r\n map(m => ({\r\n id: m.id,\r\n chatRoomId: m.chatRoomId,\r\n senderId: m.senderId,\r\n senderName: m.senderName,\r\n content: m.content,\r\n replyToMessageId: m.replyToMessageId,\r\n createdAt: m.createdAt,\r\n hasAttachment: m.hasAttachment ?? false,\r\n }))\r\n );\r\n }\r\n\r\n getRooms(loggedInUserId: string) {\r\n return this.http.get<any[]>(`${this.baseUrl}/chatrooms/${loggedInUserId}`);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { io, Socket } from 'socket.io-client';\r\nimport { Observable } from 'rxjs';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class SocketService {\r\n private socket: Socket;\r\n\r\n constructor() {\r\n this.socket = io('http://localhost:3000');\r\n }\r\n\r\n joinRoom(roomId: string) {\r\n this.socket.emit('joinRoom', roomId);\r\n }\r\n\r\n joinUserChannel(userId: string) {\r\n this.socket.emit('joinUserChannel', userId);\r\n }\r\n\r\n on<T>(event: string): Observable<T> {\r\n return new Observable(sub => {\r\n const handler = (data: T) => sub.next(data);\r\n this.socket.on(event, handler);\r\n return () => this.socket.off(event, handler);\r\n });\r\n }\r\n\r\n emit(event: string, data?: any) {\r\n this.socket.emit(event, data);\r\n }\r\n\r\n onNewMessage(cb: (msg: any) => void) {\r\n this.socket.on('newMessage', cb);\r\n }\r\n \r\n offNewMessage() {\r\n this.socket.off('newMessage');\r\n }\r\n\r\n onMessageSeen(cb: (data: { chatRoomId: string; userId: string }) => void) {\r\n this.socket.on('messageSeen', cb);\r\n }\r\n \r\n offMessageSeen() {\r\n this.socket.off('messageSeen');\r\n }\r\n}\r\n","import { Component, ElementRef, Input, OnInit, SimpleChanges, ViewChild, ViewEncapsulation, effect, inject, input, signal } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { ChatService } from '../core/services/chat.service';\r\nimport { SocketService } from '../core/services/socket.service';\r\nimport { ToastModule } from 'primeng/toast';\r\nimport { MessageService } from 'primeng/api';\r\nimport { ButtonModule } from 'primeng/button';\r\nimport { AvatarModule } from 'primeng/avatar';\r\nimport { TooltipModule } from 'primeng/tooltip';\r\nimport { InputTextareaModule } from 'primeng/inputtextarea';\r\nimport { DropdownModule } from 'primeng/dropdown';\r\nimport { ChipModule } from 'primeng/chip';\r\nimport { ChatMessage } from '../core/models/chat.models';\r\nimport { ChatLauncherComponent } from '../chat-launcher/chat-launcher.component';\r\nimport { debounceTime } from 'rxjs';\r\nimport { OverlayPanelModule } from 'primeng/overlaypanel';\r\nimport { OverlayPanel } from 'primeng/overlaypanel';\r\n\r\n@Component({\r\n selector: 'app-chat-window',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ToastModule,\r\n ButtonModule,\r\n AvatarModule,\r\n TooltipModule,\r\n InputTextareaModule,\r\n ChipModule,\r\n DropdownModule,\r\n OverlayPanelModule\r\n ],\r\n templateUrl: './chat-window.component.html',\r\n styleUrls: ['./chat-window.component.scss'],\r\n providers: [MessageService],\r\n encapsulation: ViewEncapsulation.ShadowDom\r\n})\r\nexport class ChatWindowComponent implements OnInit {\r\n @Input() chatRoomId!: string;\r\n @Input() header = 'Chat';\r\n @Input() chatUsers = [];\r\n refreshRoom = input<boolean>(false);\r\n // @Input() currentUser: any;\r\n\r\n chatService = inject(ChatService);\r\n socket = inject(SocketService);\r\n messageService = inject(MessageService);\r\n\r\n users = signal<any[]>([]);\r\n messages = signal<ChatMessage[]>([]);\r\n newMessage = '';\r\n minimized = false;\r\n loading = false;\r\n replyTo: ChatMessage | null = null;\r\n selectedUser: any;\r\n\r\n @ViewChild('messagesContainer') messagesContainer!: ElementRef<HTMLDivElement>;\r\n @ViewChild('reactionOverlay') reactionOverlay!: OverlayPanel;\r\n\r\n private observer!: MutationObserver;\r\n\r\n showUsers = true;\r\n suggestion = '';\r\n private suggestTimer: any;\r\n hoveredReactionUsers: string[] = [];\r\n\r\n constructor() {\r\n }\r\n\r\n ngOnInit() {\r\n this.socket.joinRoom(this.chatRoomId);\r\n this.socket.joinUserChannel(this.chatService.currentUser().userId);\r\n this.loadUsers();\r\n this.loadMessages();\r\n this.listenSocket();\r\n }\r\n\r\n loadUsers() {\r\n this.chatService.getRoomUsers(this.chatRoomId).subscribe(users => {\r\n this.users.set(users);\r\n });\r\n }\r\n\r\n loadMessages() {\r\n this.loading = true;\r\n this.chatService.getMessages(this.chatRoomId).subscribe({\r\n next: msgs => {\r\n this.messages.set(msgs);\r\n this.loading = false;\r\n },\r\n error: () => (this.loading = false)\r\n });\r\n }\r\n\r\n listenSocket() {\r\n this.socket.on<ChatMessage>('newMessage').subscribe(msg => {\r\n if (msg.chatRoomId === this.chatRoomId) {\r\n this.messages.update(list => [...list, msg]);\r\n }\r\n\r\n if (msg.senderId !== this.chatService.currentUser().userId) {\r\n this.messageService.add({\r\n severity: 'info',\r\n summary: this.header,\r\n detail: msg.content ?? 'New message',\r\n life: 2500\r\n });\r\n }\r\n });\r\n\r\n this.socket.on('roomUserAdded').subscribe((msg: any) => {\r\n if (msg.chatRoomId === this.chatRoomId) {\r\n this.loadUsers();\r\n this.messageService.add({\r\n severity: 'info',\r\n summary: 'User Added',\r\n detail: msg.user?.userName,\r\n life: 2500\r\n });\r\n }\r\n });\r\n\r\n this.socket.on('addedToRoom').subscribe((msg: any) => {\r\n if (msg.chatRoomId === this.chatRoomId) {\r\n this.loadUsers();\r\n }\r\n });\r\n\r\n this.socket.on('userAlreadyInRoom').subscribe((msg: any) => {\r\n console.log(msg);\r\n if (msg.chatRoomId === this.chatRoomId) {\r\n this.messageService.add({\r\n severity: 'info',\r\n summary: 'User Already Added',\r\n detail: msg.user?.userName,\r\n life: 2500\r\n });\r\n }\r\n });\r\n }\r\n\r\n send() {\r\n const content = this.newMessage.trim();\r\n if (!content) return;\r\n\r\n this.chatService\r\n .sendMessage(this.chatRoomId, {\r\n senderId: this.chatService.currentUser().userId,\r\n content,\r\n replyToMessageId: this.replyTo?.replyToMessageId ?? null,\r\n createdBy: this.chatService.currentUser().userId\r\n })\r\n .subscribe(() => {\r\n this.newMessage = '';\r\n this.replyTo = null;\r\n });\r\n }\r\n\r\n addUserToRoom() {\r\n this.chatService\r\n .addUserToRoom(\r\n this.chatRoomId,\r\n this.selectedUser?.id,\r\n this.selectedUser?.name,\r\n this.chatService.currentUser().userId)\r\n .subscribe((res) => {\r\n console.log(res);\r\n });\r\n }\r\n\r\n toggleMinimize() {\r\n this.minimized = !this.minimized;\r\n }\r\n\r\n setReply(msg: ChatMessage) {\r\n this.replyTo = msg;\r\n }\r\n\r\n clearReply() {\r\n this.replyTo = null;\r\n }\r\n\r\n trackById(index: number, msg: ChatMessage) {\r\n return msg.id;\r\n }\r\n\r\n ngOnDestroy() {\r\n this.socket.offNewMessage();\r\n this.socket.offMessageSeen();\r\n this.observer?.disconnect();\r\n }\r\n\r\n ngAfterViewInit() {\r\n const el = this.messagesContainer.nativeElement;\r\n\r\n this.observer = new MutationObserver(() => {\r\n // 🔥 Scroll AFTER DOM actually changes\r\n el.scrollTop = el.scrollHeight;\r\n });\r\n\r\n this.observer.observe(el, {\r\n childList: true,\r\n subtree: true,\r\n characterData: true\r\n });\r\n }\r\n\r\n toggleUsers() {\r\n this.showUsers = !this.showUsers;\r\n }\r\n}\r\n","<p-toast></p-toast>\r\n\r\n<div class=\"chat-window\" [class.minimized]=\"minimized\">\r\n <div class=\"chat-header\">\r\n <div class=\"title\">\r\n <span>{{ header }}</span>\r\n <small *ngIf=\"users().length\">({{ users().length }} participants)</small>\r\n </div>\r\n <div class=\"header-actions\">\r\n <button pButton icon=\"pi pi-users\" (click)=\"toggleUsers()\" style=\"font-size: 0.5rem\"></button>\r\n <button pButton icon=\"pi pi-minus\" (click)=\"toggleMinimize()\" style=\"font-size: 0.5rem\"></button>\r\n </div>\r\n </div>\r\n\r\n <div class=\"chat-body\" *ngIf=\"!minimized\">\r\n <div class=\"chat-layout\" [class.users-hidden]=\"!showUsers\">\r\n <div class=\"chat-main\">\r\n <div class=\"messages\" #messagesContainer [class.loading]=\"loading\">\r\n <div *ngFor=\"let msg of messages(); trackBy: trackById\" class=\"message-row\"\r\n [ngClass]=\"{ outgoing: msg.senderId === chatService.currentUser().userId, incoming: msg.senderId !== chatService.currentUser().userId }\">\r\n <div class=\"message-bubble\">\r\n <div class=\"message-meta\">\r\n <span class=\"sender\" *ngIf=\"msg.senderId !== chatService.currentUser().userId\">\r\n {{ msg.senderName }}\r\n </span>\r\n\r\n <span class=\"time\">\r\n {{ msg.createdAt | date: 'shortTime' }}\r\n </span>\r\n </div>\r\n\r\n <!-- MESSAGE TEXT -->\r\n <div class=\"message-content\">\r\n {{ msg.content }}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"input-area\">\r\n <div class=\"reply-banner\" *ngIf=\"replyTo\">\r\n <span>Replying to: {{ replyTo.content | slice: 0:50 }}</span>\r\n <button pButton icon=\"pi pi-times\" class=\"p-button-text p-button-sm\" (click)=\"clearReply()\"></button>\r\n </div>\r\n\r\n <textarea pInputTextarea [(ngModel)]=\"newMessage\" rows=\"2\" autoResize=\"true\" placeholder=\"Type a message\"\r\n (keyup.enter)=\"send()\">\r\n </textarea>\r\n\r\n <div class=\"input-actions\">\r\n <button pButton icon=\"pi pi-send\" label=\"Send\" (click)=\"send()\"></button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"chat-sidebar\">\r\n <div class=\"section-title\">Users</div>\r\n <div class=\"user-list\">\r\n <div class=\"user-row\" *ngFor=\"let u of users()\">\r\n <p-avatar [label]=\"u.username[0]\"></p-avatar>\r\n <span>{{ u.username }}</span>\r\n </div>\r\n </div>\r\n <div class=\"user-list-add\">\r\n <p-dropdown [options]=\"chatService.userList()\" [(ngModel)]=\"selectedUser\" optionLabel=\"name\"\r\n placeholder=\"Select User\" />\r\n <div style=\"margin-top: 2em;\">\r\n <button pButton icon=\"pi pi-plus\" label=\"Add\" (click)=\"addUserToRoom()\"></button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>","import { Component, OnInit, signal, computed, inject, Input, effect, input, ViewEncapsulation } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ChatWindowComponent } from '../chat-window/chat-window.component';\r\nimport { ChatService } from '../core/services/chat.service';\r\nimport { DropdownModule } from 'primeng/dropdown';\r\nimport { ButtonModule } from 'primeng/button';\r\nimport { ToastModule } from 'primeng/toast';\r\nimport { MessageService } from 'primeng/api';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { v4 as uuidv4 } from 'uuid';\r\nimport { TabViewModule } from 'primeng/tabview';\r\n\r\ninterface OpenChatWindow {\r\n roomId: string;\r\n header: string;\r\n}\r\n\r\n@Component({\r\n selector: 'app-chat-launcher',\r\n standalone: true,\r\n imports: [CommonModule, ChatWindowComponent, DropdownModule, ButtonModule, ToastModule, FormsModule, TabViewModule],\r\n templateUrl: './chat-launcher.component.html',\r\n styleUrls: ['./chat-launcher.component.scss'],\r\n providers: [MessageService],\r\n encapsulation: ViewEncapsulation.ShadowDom\r\n})\r\nexport class ChatLauncherComponent {\r\n\r\n roomId = input<string>('');\r\n roomHeader = input<string>('');\r\n user = input<any>(null);\r\n userList = input<any[]>([]);\r\n chatUsers = input<any[]>([]);\r\n\r\n chatService = inject(ChatService);\r\n messageService = inject(MessageService);\r\n openWindows = signal<OpenChatWindow[]>([]);\r\n lastOpenedRoom = signal<string | null>(null);\r\n activeIndex = signal(0);\r\n\r\n constructor() {\r\n effect(\r\n () => {\r\n const roomId = this.roomId();\r\n const header = this.roomHeader();\r\n const user = this.user();\r\n\r\n this.chatService.currentUser.set({\r\n roomId: this.roomId(),\r\n userId: user?.id,\r\n name: user?.name\r\n });\r\n\r\n this.chatService.userList.set(this.userList());\r\n\r\n if (!roomId || !user?.id) return;\r\n if (this.lastOpenedRoom() === roomId) return;\r\n\r\n this.lastOpenedRoom.set(roomId);\r\n this.openNewRoom(roomId, header, user.id, user.name, this.chatUsers);\r\n },\r\n { allowSignalWrites: true }\r\n );\r\n }\r\n\r\n openNewRoom(roomId: string, roomHeader: string, userId: string, username: string, chatUsers: any) {\r\n this.chatService.createRoom(roomId, roomHeader, userId, username, chatUsers).subscribe(room => {\r\n this.addWindow(room.roomKey, room.name);\r\n });\r\n }\r\n\r\n addWindow(roomId: string, header: string) {\r\n const windows = this.openWindows();\r\n const existingIndex = windows.findIndex(w => w.roomId === roomId);\r\n \r\n // already open → focus\r\n if (existingIndex !== -1) {\r\n this.activeIndex.set(existingIndex);\r\n return;\r\n }\r\n \r\n const newIndex = windows.length;\r\n \r\n this.openWindows.update(ws => [...ws, { roomId, header }]);\r\n \r\n // ✅ force real change: -1 → 0\r\n setTimeout(() => {\r\n this.activeIndex.set(newIndex);\r\n }, 500);\r\n }\r\n \r\n\r\n closeWindow(roomId: string) {\r\n this.openWindows.update(ws => ws.filter(w => w.roomId !== roomId));\r\n }\r\n\r\n getRandomUuid() {\r\n return uuidv4();\r\n }\r\n\r\n setActive(i: number) {\r\n this.activeIndex.set(i);\r\n }\r\n}\r\n","<div class=\"chat-float-wrapper\">\r\n <p-tabView [activeIndex]=\"activeIndex()\" (activeIndexChange)=\"setActive($event)\" [scrollable]=\"true\"\r\n class=\"chat-tabview\">\r\n <p-tabPanel *ngFor=\"let w of openWindows(); let i = index\" [header]=\"w.header\">\r\n <app-chat-window [chatRoomId]=\"w.roomId\" [header]=\"w.header\">\r\n </app-chat-window>\r\n </p-tabPanel>\r\n </p-tabView>\r\n</div>","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ChatLauncherComponent } from './chat-launcher/chat-launcher.component';\r\nimport { ChatWindowComponent } from './chat-window/chat-window.component';\r\n\r\n@NgModule({\r\n declarations: [\r\n ],\r\n imports: [\r\n CommonModule,\r\n ChatLauncherComponent,\r\n ChatWindowComponent\r\n ],\r\n exports: [ChatLauncherComponent]\r\n})\r\nexport class ChatWidgetModule { }\r\n","/*\r\n * Public API Surface of chat-widget\r\n */\r\n\r\nexport * from './lib/chat-widget.module';\r\nexport * from './lib/chat-launcher/chat-launcher.component';\r\nexport * from './lib/core/models/chat.models';\r\n\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","uuidv4","i2"],"mappings":"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"}
1
+ {"version":3,"file":"ranjeethr-chat-widget.mjs","sources":["../../../projects/chat-widget/src/lib/core/services/chat.service.ts","../../../projects/chat-widget/src/lib/core/services/socket.service.ts","../../../projects/chat-widget/src/lib/chat-window/chat-window.component.ts","../../../projects/chat-widget/src/lib/chat-window/chat-window.component.html","../../../projects/chat-widget/src/lib/chat-launcher/chat-launcher.component.ts","../../../projects/chat-widget/src/lib/chat-launcher/chat-launcher.component.html","../../../projects/chat-widget/src/lib/chat-widget.module.ts","../../../projects/chat-widget/src/public-api.ts","../../../projects/chat-widget/src/ranjeethr-chat-widget.ts"],"sourcesContent":["import { Injectable, signal } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { map } from 'rxjs/operators';\r\nimport { Observable } from 'rxjs';\r\nimport { ChatMessage, Reaction } from '../models/chat.models';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class ChatService {\r\n private baseUrl = `http://localhost:3000/api`;\r\n\r\n currentUser = signal<any | null>(null);\r\n userList = signal<any[]>([]);\r\n\r\n constructor(private http: HttpClient) { }\r\n\r\n /* ---------------- CHAT ROOMS ---------------- */\r\n createRoom(roomId: string, name: string, createdBy: string, username: string, chatUsers: any): Observable<any> {\r\n return this.http.post(`${this.baseUrl}/chatrooms/${roomId}`, {\r\n name,\r\n createdBy,\r\n username,\r\n chatUsers\r\n });\r\n }\r\n\r\n getRoomUsers(roomId: string): Observable<any[]> {\r\n return this.http.get<any[]>(`${this.baseUrl}/chatrooms/${roomId}/users`).pipe(\r\n map(list =>\r\n list.map(u => ({\r\n id: u.UserId,\r\n username: u.UserName\r\n }))\r\n )\r\n );\r\n }\r\n\r\n addUserToRoom(roomId: string, userId: string, userName: string, createdBy: string) {\r\n return this.http.post(`${this.baseUrl}/chatrooms/${roomId}/users`, {\r\n userId,\r\n userName,\r\n createdBy\r\n });\r\n }\r\n\r\n /* ---------------- MESSAGES ---------------- */\r\n getMessages(roomId: string, since?: string): Observable<ChatMessage[]> {\r\n const params: any = {};\r\n if (since) params.since = since;\r\n\r\n return this.http.get<any[]>(`${this.baseUrl}/messages/rooms/${roomId}`, { params }).pipe(\r\n map(list =>\r\n list.map(m => ({\r\n id: m.id,\r\n chatRoomId: m.chatRoomId,\r\n senderId: m.senderId,\r\n senderName: m.senderName,\r\n content: m.content,\r\n replyToMessageId: m.replyToMessageId,\r\n createdAt: m.createdAt,\r\n hasAttachment: m.hasAttachment ?? false,\r\n }))\r\n )\r\n );\r\n }\r\n\r\n sendMessage(\r\n roomId: string,\r\n payload: { senderId: string; content: string; replyToMessageId?: string | null, createdBy: string }\r\n ): Observable<ChatMessage> {\r\n return this.http.post<any>(`${this.baseUrl}/messages/rooms/${roomId}`, payload).pipe(\r\n map(m => ({\r\n id: m.id,\r\n chatRoomId: m.chatRoomId,\r\n senderId: m.senderId,\r\n senderName: m.senderName,\r\n content: m.content,\r\n replyToMessageId: m.replyToMessageId,\r\n createdAt: m.createdAt,\r\n hasAttachment: m.hasAttachment ?? false,\r\n }))\r\n );\r\n }\r\n\r\n getRooms(loggedInUserId: string) {\r\n return this.http.get<any[]>(`${this.baseUrl}/chatrooms/${loggedInUserId}`);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { io, Socket } from 'socket.io-client';\r\nimport { Observable } from 'rxjs';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class SocketService {\r\n private socket: Socket;\r\n\r\n constructor() {\r\n this.socket = io('http://localhost:3000');\r\n }\r\n\r\n joinRoom(roomId: string) {\r\n this.socket.emit('joinRoom', roomId);\r\n }\r\n\r\n joinUserChannel(userId: string) {\r\n this.socket.emit('joinUserChannel', userId);\r\n }\r\n\r\n on<T>(event: string): Observable<T> {\r\n return new Observable(sub => {\r\n const handler = (data: T) => sub.next(data);\r\n this.socket.on(event, handler);\r\n return () => this.socket.off(event, handler);\r\n });\r\n }\r\n\r\n emit(event: string, data?: any) {\r\n this.socket.emit(event, data);\r\n }\r\n\r\n onNewMessage(cb: (msg: any) => void) {\r\n this.socket.on('newMessage', cb);\r\n }\r\n \r\n offNewMessage() {\r\n this.socket.off('newMessage');\r\n }\r\n\r\n onMessageSeen(cb: (data: { chatRoomId: string; userId: string }) => void) {\r\n this.socket.on('messageSeen', cb);\r\n }\r\n \r\n offMessageSeen() {\r\n this.socket.off('messageSeen');\r\n }\r\n}\r\n","import { Component, ElementRef, Input, OnInit, SimpleChanges, ViewChild, ViewEncapsulation, effect, inject, input, signal } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { ChatService } from '../core/services/chat.service';\r\nimport { SocketService } from '../core/services/socket.service';\r\nimport { ToastModule } from 'primeng/toast';\r\nimport { MessageService } from 'primeng/api';\r\nimport { ButtonModule } from 'primeng/button';\r\nimport { AvatarModule } from 'primeng/avatar';\r\nimport { TooltipModule } from 'primeng/tooltip';\r\nimport { InputTextareaModule } from 'primeng/inputtextarea';\r\nimport { DropdownModule } from 'primeng/dropdown';\r\nimport { ChipModule } from 'primeng/chip';\r\nimport { ChatMessage } from '../core/models/chat.models';\r\nimport { ChatLauncherComponent } from '../chat-launcher/chat-launcher.component';\r\nimport { debounceTime } from 'rxjs';\r\nimport { OverlayPanelModule } from 'primeng/overlaypanel';\r\nimport { OverlayPanel } from 'primeng/overlaypanel';\r\n\r\n@Component({\r\n selector: 'app-chat-window',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ToastModule,\r\n ButtonModule,\r\n AvatarModule,\r\n TooltipModule,\r\n InputTextareaModule,\r\n ChipModule,\r\n DropdownModule,\r\n OverlayPanelModule\r\n ],\r\n templateUrl: './chat-window.component.html',\r\n styleUrls: ['./chat-window.component.scss'],\r\n providers: [MessageService],\r\n encapsulation: ViewEncapsulation.ShadowDom\r\n})\r\nexport class ChatWindowComponent implements OnInit {\r\n @Input() chatRoomId!: string;\r\n @Input() header = 'Chat';\r\n @Input() chatUsers = [];\r\n refreshRoom = input<boolean>(false);\r\n // @Input() currentUser: any;\r\n\r\n chatService = inject(ChatService);\r\n socket = inject(SocketService);\r\n messageService = inject(MessageService);\r\n\r\n users = signal<any[]>([]);\r\n messages = signal<ChatMessage[]>([]);\r\n newMessage = '';\r\n minimized = false;\r\n loading = false;\r\n replyTo: ChatMessage | null = null;\r\n selectedUser: any;\r\n\r\n @ViewChild('messagesContainer') messagesContainer!: ElementRef<HTMLDivElement>;\r\n @ViewChild('reactionOverlay') reactionOverlay!: OverlayPanel;\r\n\r\n private observer!: MutationObserver;\r\n\r\n showUsers = true;\r\n suggestion = '';\r\n private suggestTimer: any;\r\n hoveredReactionUsers: string[] = [];\r\n\r\n constructor() {\r\n }\r\n\r\n ngOnInit() {\r\n this.socket.joinRoom(this.chatRoomId);\r\n this.socket.joinUserChannel(this.chatService.currentUser().userId);\r\n this.loadUsers();\r\n this.loadMessages();\r\n this.listenSocket();\r\n }\r\n\r\n loadUsers() {\r\n this.chatService.getRoomUsers(this.chatRoomId).subscribe(users => {\r\n this.users.set(users);\r\n });\r\n }\r\n\r\n loadMessages() {\r\n this.loading = true;\r\n this.chatService.getMessages(this.chatRoomId).subscribe({\r\n next: msgs => {\r\n this.messages.set(msgs);\r\n this.loading = false;\r\n },\r\n error: () => (this.loading = false)\r\n });\r\n }\r\n\r\n listenSocket() {\r\n this.socket.on<ChatMessage>('newMessage').subscribe(msg => {\r\n if (msg.chatRoomId === this.chatRoomId) {\r\n this.messages.update(list => [...list, msg]);\r\n }\r\n\r\n if (msg.senderId !== this.chatService.currentUser().userId) {\r\n this.messageService.add({\r\n severity: 'info',\r\n summary: this.header,\r\n detail: msg.content ?? 'New message',\r\n life: 2500\r\n });\r\n }\r\n });\r\n\r\n this.socket.on('roomUserAdded').subscribe((msg: any) => {\r\n if (msg.chatRoomId === this.chatRoomId) {\r\n this.loadUsers();\r\n this.messageService.add({\r\n severity: 'info',\r\n summary: 'User Added',\r\n detail: msg.user?.userName,\r\n life: 2500\r\n });\r\n }\r\n });\r\n\r\n this.socket.on('addedToRoom').subscribe((msg: any) => {\r\n if (msg.chatRoomId === this.chatRoomId) {\r\n this.loadUsers();\r\n }\r\n });\r\n\r\n this.socket.on('userAlreadyInRoom').subscribe((msg: any) => {\r\n console.log(msg);\r\n if (msg.chatRoomId === this.chatRoomId) {\r\n this.messageService.add({\r\n severity: 'info',\r\n summary: 'User Already Added',\r\n detail: msg.user?.userName,\r\n life: 2500\r\n });\r\n }\r\n });\r\n }\r\n\r\n send() {\r\n const content = this.newMessage.trim();\r\n if (!content) return;\r\n\r\n this.chatService\r\n .sendMessage(this.chatRoomId, {\r\n senderId: this.chatService.currentUser().userId,\r\n content,\r\n replyToMessageId: this.replyTo?.replyToMessageId ?? null,\r\n createdBy: this.chatService.currentUser().userId\r\n })\r\n .subscribe(() => {\r\n this.newMessage = '';\r\n this.replyTo = null;\r\n });\r\n }\r\n\r\n addUserToRoom() {\r\n this.chatService\r\n .addUserToRoom(\r\n this.chatRoomId,\r\n this.selectedUser?.id,\r\n this.selectedUser?.name,\r\n this.chatService.currentUser().userId)\r\n .subscribe((res) => {\r\n console.log(res);\r\n });\r\n }\r\n\r\n toggleMinimize() {\r\n this.minimized = !this.minimized;\r\n }\r\n\r\n setReply(msg: ChatMessage) {\r\n this.replyTo = msg;\r\n }\r\n\r\n clearReply() {\r\n this.replyTo = null;\r\n }\r\n\r\n trackById(index: number, msg: ChatMessage) {\r\n return msg.id;\r\n }\r\n\r\n ngOnDestroy() {\r\n this.socket.offNewMessage();\r\n this.socket.offMessageSeen();\r\n this.observer?.disconnect();\r\n }\r\n\r\n ngAfterViewInit() {\r\n const el = this.messagesContainer.nativeElement;\r\n\r\n this.observer = new MutationObserver(() => {\r\n // 🔥 Scroll AFTER DOM actually changes\r\n el.scrollTop = el.scrollHeight;\r\n });\r\n\r\n this.observer.observe(el, {\r\n childList: true,\r\n subtree: true,\r\n characterData: true\r\n });\r\n }\r\n\r\n toggleUsers() {\r\n this.showUsers = !this.showUsers;\r\n }\r\n}\r\n","<p-toast></p-toast>\r\n\r\n<div class=\"chat-window\" [class.minimized]=\"minimized\">\r\n <div class=\"chat-header\">\r\n <div class=\"title\">\r\n <span>{{ header }}</span>\r\n <small *ngIf=\"users().length\">({{ users().length }} participants)</small>\r\n </div>\r\n <div class=\"header-actions\">\r\n <button pButton icon=\"pi pi-users\" (click)=\"toggleUsers()\" style=\"font-size: 0.5rem\"></button>\r\n <button pButton icon=\"pi pi-minus\" (click)=\"toggleMinimize()\" style=\"font-size: 0.5rem\"></button>\r\n </div>\r\n </div>\r\n\r\n <div class=\"chat-body\" *ngIf=\"!minimized\">\r\n <div class=\"chat-layout\" [class.users-hidden]=\"!showUsers\">\r\n <div class=\"chat-main\">\r\n <div class=\"messages\" #messagesContainer [class.loading]=\"loading\">\r\n <div *ngFor=\"let msg of messages(); trackBy: trackById\" class=\"message-row\"\r\n [ngClass]=\"{ outgoing: msg.senderId === chatService.currentUser().userId, incoming: msg.senderId !== chatService.currentUser().userId }\">\r\n <div class=\"message-bubble\">\r\n <div class=\"message-meta\">\r\n <span class=\"sender\" *ngIf=\"msg.senderId !== chatService.currentUser().userId\">\r\n {{ msg.senderName }}\r\n </span>\r\n\r\n <span class=\"time\">\r\n {{ msg.createdAt | date: 'shortTime' }}\r\n </span>\r\n </div>\r\n\r\n <!-- MESSAGE TEXT -->\r\n <div class=\"message-content\">\r\n {{ msg.content }}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"input-area\">\r\n <div class=\"reply-banner\" *ngIf=\"replyTo\">\r\n <span>Replying to: {{ replyTo.content | slice: 0:50 }}</span>\r\n <button pButton icon=\"pi pi-times\" class=\"p-button-text p-button-sm\" (click)=\"clearReply()\"></button>\r\n </div>\r\n\r\n <textarea pInputTextarea [(ngModel)]=\"newMessage\" rows=\"2\" autoResize=\"true\" placeholder=\"Type a message\"\r\n (keyup.enter)=\"send()\">\r\n </textarea>\r\n\r\n <div class=\"input-actions\">\r\n <button pButton icon=\"pi pi-send\" label=\"Send\" (click)=\"send()\"></button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"chat-sidebar\">\r\n <div class=\"section-title\">Users</div>\r\n <div class=\"user-list\">\r\n <div class=\"user-row\" *ngFor=\"let u of users()\">\r\n <p-avatar [label]=\"u.username[0]\"></p-avatar>\r\n <span>{{ u.username }}</span>\r\n </div>\r\n </div>\r\n <div class=\"user-list-add\">\r\n <p-dropdown [options]=\"chatService.userList()\" [(ngModel)]=\"selectedUser\" optionLabel=\"name\"\r\n placeholder=\"Select User\" />\r\n <div style=\"margin-top: 2em;\">\r\n <button pButton icon=\"pi pi-plus\" label=\"Add\" (click)=\"addUserToRoom()\"></button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>","import { Component, OnInit, signal, computed, inject, Input, effect, input, ViewEncapsulation } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ChatWindowComponent } from '../chat-window/chat-window.component';\r\nimport { ChatService } from '../core/services/chat.service';\r\nimport { DropdownModule } from 'primeng/dropdown';\r\nimport { ButtonModule } from 'primeng/button';\r\nimport { ToastModule } from 'primeng/toast';\r\nimport { MessageService } from 'primeng/api';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { v4 as uuidv4 } from 'uuid';\r\nimport { TabViewModule } from 'primeng/tabview';\r\n\r\ninterface OpenChatWindow {\r\n roomId: string;\r\n header: string;\r\n}\r\n\r\n@Component({\r\n selector: 'app-chat-launcher',\r\n standalone: true,\r\n imports: [CommonModule, ChatWindowComponent, DropdownModule, ButtonModule, ToastModule, FormsModule, TabViewModule],\r\n templateUrl: './chat-launcher.component.html',\r\n styleUrls: ['./chat-launcher.component.scss'],\r\n providers: [MessageService],\r\n encapsulation: ViewEncapsulation.ShadowDom\r\n})\r\nexport class ChatLauncherComponent {\r\n\r\n roomId = input<string>('');\r\n roomHeader = input<string>('');\r\n user = input<any>(null);\r\n userList = input<any[]>([]);\r\n chatUsers = input<any[]>([]);\r\n\r\n chatService = inject(ChatService);\r\n messageService = inject(MessageService);\r\n openWindows = signal<OpenChatWindow[]>([]);\r\n lastOpenedRoom = signal<string | null>(null);\r\n activeIndex = signal(0);\r\n\r\n constructor() {\r\n effect(\r\n () => {\r\n const roomId = this.roomId();\r\n const header = this.roomHeader();\r\n const user = this.user();\r\n\r\n this.chatService.currentUser.set({\r\n roomId: this.roomId(),\r\n userId: user?.id,\r\n name: user?.name\r\n });\r\n\r\n this.chatService.userList.set(this.userList());\r\n\r\n if (!roomId || !user?.id) return;\r\n if (this.lastOpenedRoom() === roomId) return;\r\n\r\n this.lastOpenedRoom.set(roomId);\r\n this.openNewRoom(roomId, header, user.id, user.name, this.chatUsers);\r\n },\r\n { allowSignalWrites: true }\r\n );\r\n }\r\n\r\n ngOnInit() {\r\n console.log('ChatLauncher initialized');\r\n }\r\n \r\n openNewRoom(roomId: string, roomHeader: string, userId: string, username: string, chatUsers: any) {\r\n this.chatService.createRoom(roomId, roomHeader, userId, username, chatUsers).subscribe(room => {\r\n this.addWindow(room.roomKey, room.name);\r\n });\r\n }\r\n\r\n addWindow(roomId: string, header: string) {\r\n const windows = this.openWindows();\r\n const existingIndex = windows.findIndex(w => w.roomId === roomId);\r\n \r\n // already open → focus\r\n if (existingIndex !== -1) {\r\n this.activeIndex.set(existingIndex);\r\n return;\r\n }\r\n \r\n const newIndex = windows.length;\r\n \r\n this.openWindows.update(ws => [...ws, { roomId, header }]);\r\n \r\n // ✅ force real change: -1 → 0\r\n setTimeout(() => {\r\n this.activeIndex.set(newIndex);\r\n }, 500);\r\n }\r\n \r\n\r\n closeWindow(roomId: string) {\r\n this.openWindows.update(ws => ws.filter(w => w.roomId !== roomId));\r\n }\r\n\r\n getRandomUuid() {\r\n return uuidv4();\r\n }\r\n\r\n setActive(i: number) {\r\n this.activeIndex.set(i);\r\n }\r\n}\r\n","<div class=\"chat-float-wrapper\">\r\n <p-tabView [activeIndex]=\"activeIndex()\" (activeIndexChange)=\"setActive($event)\" [scrollable]=\"true\"\r\n class=\"chat-tabview\">\r\n <p-tabPanel *ngFor=\"let w of openWindows(); let i = index\" [header]=\"w.header\">\r\n <app-chat-window [chatRoomId]=\"w.roomId\" [header]=\"w.header\">\r\n </app-chat-window>\r\n </p-tabPanel>\r\n </p-tabView>\r\n</div>","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ChatLauncherComponent } from './chat-launcher/chat-launcher.component';\r\nimport { ChatWindowComponent } from './chat-window/chat-window.component';\r\n\r\n@NgModule({\r\n declarations: [\r\n ],\r\n imports: [\r\n CommonModule,\r\n ChatLauncherComponent,\r\n ChatWindowComponent\r\n ],\r\n exports: [ChatLauncherComponent]\r\n})\r\nexport class ChatWidgetModule { }\r\n","/*\r\n * Public API Surface of chat-widget\r\n */\r\n\r\nexport * from './lib/chat-widget.module';\r\nexport * from './lib/chat-launcher/chat-launcher.component';\r\nexport * from './lib/core/models/chat.models';\r\n\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","uuidv4","i2"],"mappings":"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"}
@@ -17,6 +17,7 @@ export declare class ChatLauncherComponent {
17
17
  lastOpenedRoom: import("@angular/core").WritableSignal<string | null>;
18
18
  activeIndex: import("@angular/core").WritableSignal<number>;
19
19
  constructor();
20
+ ngOnInit(): void;
20
21
  openNewRoom(roomId: string, roomHeader: string, userId: string, username: string, chatUsers: any): void;
21
22
  addWindow(roomId: string, header: string): void;
22
23
  closeWindow(roomId: string): void;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ranjeethr/chat-widget",
3
- "version": "0.0.1",
3
+ "version": "0.0.2",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^17.3.0",
6
6
  "@angular/core": "^17.3.0"