nerdagent-chat-widget-angular 1.0.9 → 1.0.11
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.
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { Component, Input, Output, EventEmitter,
|
|
1
|
+
import { Component, Input, Output, EventEmitter, ElementRef, inject } from '@angular/core';
|
|
2
2
|
import * as i0 from "@angular/core";
|
|
3
3
|
export class ChatWidgetComponent {
|
|
4
|
-
|
|
4
|
+
elementRef = inject(ElementRef);
|
|
5
5
|
apikey = '';
|
|
6
6
|
agentId = '';
|
|
7
7
|
agentName = 'Support Agent';
|
|
@@ -23,15 +23,18 @@ export class ChatWidgetComponent {
|
|
|
23
23
|
widgetClosed = new EventEmitter();
|
|
24
24
|
eventListeners = [];
|
|
25
25
|
ngAfterViewInit() {
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
26
|
+
// Use setTimeout to ensure the custom element is fully initialized
|
|
27
|
+
setTimeout(() => {
|
|
28
|
+
const chatWidget = this.elementRef.nativeElement.querySelector('nerd-chat-widget');
|
|
29
|
+
if (chatWidget) {
|
|
30
|
+
this.setupEventListeners(chatWidget);
|
|
31
|
+
}
|
|
32
|
+
}, 0);
|
|
29
33
|
}
|
|
30
34
|
ngOnDestroy() {
|
|
31
35
|
this.removeEventListeners();
|
|
32
36
|
}
|
|
33
|
-
setupEventListeners() {
|
|
34
|
-
const widget = this.chatWidget.nativeElement;
|
|
37
|
+
setupEventListeners(widget) {
|
|
35
38
|
const messageSentListener = (event) => {
|
|
36
39
|
this.messageSent.emit(event.detail);
|
|
37
40
|
};
|
|
@@ -56,7 +59,7 @@ export class ChatWidgetComponent {
|
|
|
56
59
|
this.eventListeners = [];
|
|
57
60
|
}
|
|
58
61
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ChatWidgetComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
59
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: ChatWidgetComponent, selector: "nerd-chat-widget", inputs: { apikey: "apikey", agentId: "agentId", agentName: "agentName", agentRole: "agentRole", primaryColor: "primaryColor", accentColor: "accentColor", welcomeMessage: "welcomeMessage", placeholderText: "placeholderText", position: "position", width: "width", height: "height", showMinimizeButton: "showMinimizeButton", showTimestamps: "showTimestamps", enableFileUpload: "enableFileUpload", enableSpeech: "enableSpeech", showPoweredBy: "showPoweredBy" }, outputs: { messageSent: "messageSent", widgetOpened: "widgetOpened", widgetClosed: "widgetClosed" },
|
|
62
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: ChatWidgetComponent, selector: "nerd-chat-widget", inputs: { apikey: "apikey", agentId: "agentId", agentName: "agentName", agentRole: "agentRole", primaryColor: "primaryColor", accentColor: "accentColor", welcomeMessage: "welcomeMessage", placeholderText: "placeholderText", position: "position", width: "width", height: "height", showMinimizeButton: "showMinimizeButton", showTimestamps: "showTimestamps", enableFileUpload: "enableFileUpload", enableSpeech: "enableSpeech", showPoweredBy: "showPoweredBy" }, outputs: { messageSent: "messageSent", widgetOpened: "widgetOpened", widgetClosed: "widgetClosed" }, ngImport: i0, template: `
|
|
60
63
|
<div
|
|
61
64
|
#chatWidget
|
|
62
65
|
nerd-chat-widget
|
|
@@ -103,10 +106,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
103
106
|
[attr.show-powered-by]="showPoweredBy?.toString()">
|
|
104
107
|
</div>
|
|
105
108
|
` }]
|
|
106
|
-
}], propDecorators: {
|
|
107
|
-
type: ViewChild,
|
|
108
|
-
args: ['chatWidget', { static: false }]
|
|
109
|
-
}], apikey: [{
|
|
109
|
+
}], propDecorators: { apikey: [{
|
|
110
110
|
type: Input
|
|
111
111
|
}], agentId: [{
|
|
112
112
|
type: Input
|
|
@@ -145,4 +145,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
145
145
|
}], widgetClosed: [{
|
|
146
146
|
type: Output
|
|
147
147
|
}] } });
|
|
148
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
148
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC13aWRnZXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9jaGF0LXdpZGdldC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQTRCLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUE2QnJILE1BQU0sT0FBTyxtQkFBbUI7SUFDdEIsVUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUUvQixNQUFNLEdBQVcsRUFBRSxDQUFDO0lBQ3BCLE9BQU8sR0FBVyxFQUFFLENBQUM7SUFDckIsU0FBUyxHQUFXLGVBQWUsQ0FBQztJQUNwQyxTQUFTLEdBQVcsa0JBQWtCLENBQUM7SUFDdkMsWUFBWSxHQUFXLFNBQVMsQ0FBQztJQUNqQyxXQUFXLEdBQVcsU0FBUyxDQUFDO0lBQ2hDLGNBQWMsR0FBVyxxQkFBcUIsQ0FBQztJQUMvQyxlQUFlLEdBQVcsc0JBQXNCLENBQUM7SUFDakQsUUFBUSxHQUFtQixjQUFjLENBQUM7SUFDMUMsS0FBSyxHQUFXLEtBQUssQ0FBQztJQUN0QixNQUFNLEdBQVcsS0FBSyxDQUFDO0lBQ3ZCLGtCQUFrQixHQUFZLElBQUksQ0FBQztJQUNuQyxjQUFjLEdBQVksSUFBSSxDQUFDO0lBQy9CLGdCQUFnQixHQUFZLEtBQUssQ0FBQztJQUNsQyxZQUFZLEdBQVksS0FBSyxDQUFDO0lBQzlCLGFBQWEsR0FBWSxJQUFJLENBQUM7SUFFN0IsV0FBVyxHQUFHLElBQUksWUFBWSxFQUF3QyxDQUFDO0lBQ3ZFLFlBQVksR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO0lBQ3hDLFlBQVksR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO0lBRTFDLGNBQWMsR0FBc0IsRUFBRSxDQUFDO0lBRS9DLGVBQWU7UUFDYixtRUFBbUU7UUFDbkUsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNkLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1lBQ25GLElBQUksVUFBVSxFQUFFLENBQUM7Z0JBQ2YsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ3ZDLENBQUM7UUFDSCxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDUixDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFFTyxtQkFBbUIsQ0FBQyxNQUFtQjtRQUU3QyxNQUFNLG1CQUFtQixHQUFHLENBQUMsS0FBa0IsRUFBRSxFQUFFO1lBQ2pELElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN0QyxDQUFDLENBQUM7UUFFRixNQUFNLG9CQUFvQixHQUFHLENBQUMsS0FBa0IsRUFBRSxFQUFFO1lBQ2xELElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDM0IsQ0FBQyxDQUFDO1FBRUYsTUFBTSxvQkFBb0IsR0FBRyxDQUFDLEtBQWtCLEVBQUUsRUFBRTtZQUNsRCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzNCLENBQUMsQ0FBQztRQUVGLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLEVBQUUsbUJBQW9DLENBQUMsQ0FBQztRQUM3RSxNQUFNLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxFQUFFLG9CQUFxQyxDQUFDLENBQUM7UUFDL0UsTUFBTSxDQUFDLGdCQUFnQixDQUFDLGNBQWMsRUFBRSxvQkFBcUMsQ0FBQyxDQUFDO1FBRS9FLDBCQUEwQjtRQUMxQixJQUFJLENBQUMsY0FBYyxHQUFHO1lBQ3BCLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxhQUFhLEVBQUUsbUJBQW9DLENBQUM7WUFDckYsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLG1CQUFtQixDQUFDLGNBQWMsRUFBRSxvQkFBcUMsQ0FBQztZQUN2RixHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsbUJBQW1CLENBQUMsY0FBYyxFQUFFLG9CQUFxQyxDQUFDO1NBQ3hGLENBQUM7SUFDSixDQUFDO0lBRU8sb0JBQW9CO1FBQzFCLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUNsRCxJQUFJLENBQUMsY0FBYyxHQUFHLEVBQUUsQ0FBQztJQUMzQixDQUFDO3dHQXJFVSxtQkFBbUI7NEZBQW5CLG1CQUFtQix1bUJBeEJwQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcUJUOzs0RkFHVSxtQkFBbUI7a0JBMUIvQixTQUFTOytCQUNFLGtCQUFrQixZQUNsQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcUJUOzhCQU1RLE1BQU07c0JBQWQsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBRUksV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxZQUFZO3NCQUFyQixNQUFNO2dCQUNHLFlBQVk7c0JBQXJCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgRWxlbWVudFJlZiwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95LCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFdpZGdldFBvc2l0aW9uIH0gZnJvbSAnLi9jaGF0LXdpZGdldC50eXBlcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ25lcmQtY2hhdC13aWRnZXQnLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXZcbiAgICAgICNjaGF0V2lkZ2V0XG4gICAgICBuZXJkLWNoYXQtd2lkZ2V0XG4gICAgICBbYXR0ci5hcGlrZXldPVwiYXBpa2V5XCJcbiAgICAgIFthdHRyLmFnZW50LWlkXT1cImFnZW50SWRcIlxuICAgICAgW2F0dHIuYWdlbnQtbmFtZV09XCJhZ2VudE5hbWVcIlxuICAgICAgW2F0dHIuYWdlbnQtcm9sZV09XCJhZ2VudFJvbGVcIlxuICAgICAgW2F0dHIucHJpbWFyeS1jb2xvcl09XCJwcmltYXJ5Q29sb3JcIlxuICAgICAgW2F0dHIuYWNjZW50LWNvbG9yXT1cImFjY2VudENvbG9yXCJcbiAgICAgIFthdHRyLndlbGNvbWUtbWVzc2FnZV09XCJ3ZWxjb21lTWVzc2FnZVwiXG4gICAgICBbYXR0ci5wbGFjZWhvbGRlci10ZXh0XT1cInBsYWNlaG9sZGVyVGV4dFwiXG4gICAgICBbYXR0ci5wb3NpdGlvbl09XCJwb3NpdGlvblwiXG4gICAgICBbYXR0ci53aWR0aF09XCJ3aWR0aFwiXG4gICAgICBbYXR0ci5oZWlnaHRdPVwiaGVpZ2h0XCJcbiAgICAgIFthdHRyLnNob3ctbWluaW1pemUtYnV0dG9uXT1cInNob3dNaW5pbWl6ZUJ1dHRvbj8udG9TdHJpbmcoKVwiXG4gICAgICBbYXR0ci5zaG93LXRpbWVzdGFtcHNdPVwic2hvd1RpbWVzdGFtcHM/LnRvU3RyaW5nKClcIlxuICAgICAgW2F0dHIuZW5hYmxlLWZpbGUtdXBsb2FkXT1cImVuYWJsZUZpbGVVcGxvYWQ/LnRvU3RyaW5nKClcIlxuICAgICAgW2F0dHIuZW5hYmxlLXNwZWVjaF09XCJlbmFibGVTcGVlY2g/LnRvU3RyaW5nKClcIlxuICAgICAgW2F0dHIuc2hvdy1wb3dlcmVkLWJ5XT1cInNob3dQb3dlcmVkQnk/LnRvU3RyaW5nKClcIj5cbiAgICA8L2Rpdj5cbiAgYCxcbiAgc3R5bGVzOiBbXVxufSlcbmV4cG9ydCBjbGFzcyBDaGF0V2lkZ2V0Q29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSBlbGVtZW50UmVmID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xuXG4gIEBJbnB1dCgpIGFwaWtleTogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIGFnZW50SWQ6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBhZ2VudE5hbWU6IHN0cmluZyA9ICdTdXBwb3J0IEFnZW50JztcbiAgQElucHV0KCkgYWdlbnRSb2xlOiBzdHJpbmcgPSAnQ3VzdG9tZXIgU3VwcG9ydCc7XG4gIEBJbnB1dCgpIHByaW1hcnlDb2xvcjogc3RyaW5nID0gJyMyZDNlNTAnO1xuICBASW5wdXQoKSBhY2NlbnRDb2xvcjogc3RyaW5nID0gJyM0ZThjZmYnO1xuICBASW5wdXQoKSB3ZWxjb21lTWVzc2FnZTogc3RyaW5nID0gJ0hpISBIb3cgY2FuIEkgaGVscD8nO1xuICBASW5wdXQoKSBwbGFjZWhvbGRlclRleHQ6IHN0cmluZyA9ICdUeXBlIHlvdXIgbWVzc2FnZS4uLic7XG4gIEBJbnB1dCgpIHBvc2l0aW9uOiBXaWRnZXRQb3NpdGlvbiA9ICdib3R0b20tcmlnaHQnO1xuICBASW5wdXQoKSB3aWR0aDogc3RyaW5nID0gJzM1MCc7XG4gIEBJbnB1dCgpIGhlaWdodDogc3RyaW5nID0gJzUwMCc7XG4gIEBJbnB1dCgpIHNob3dNaW5pbWl6ZUJ1dHRvbjogYm9vbGVhbiA9IHRydWU7XG4gIEBJbnB1dCgpIHNob3dUaW1lc3RhbXBzOiBib29sZWFuID0gdHJ1ZTtcbiAgQElucHV0KCkgZW5hYmxlRmlsZVVwbG9hZDogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBlbmFibGVTcGVlY2g6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgc2hvd1Bvd2VyZWRCeTogYm9vbGVhbiA9IHRydWU7XG5cbiAgQE91dHB1dCgpIG1lc3NhZ2VTZW50ID0gbmV3IEV2ZW50RW1pdHRlcjx7IG1lc3NhZ2U6IHN0cmluZzsgdGltZXN0YW1wOiBEYXRlIH0+KCk7XG4gIEBPdXRwdXQoKSB3aWRnZXRPcGVuZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBPdXRwdXQoKSB3aWRnZXRDbG9zZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgcHJpdmF0ZSBldmVudExpc3RlbmVyczogQXJyYXk8KCkgPT4gdm9pZD4gPSBbXTtcblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgLy8gVXNlIHNldFRpbWVvdXQgdG8gZW5zdXJlIHRoZSBjdXN0b20gZWxlbWVudCBpcyBmdWxseSBpbml0aWFsaXplZFxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgY29uc3QgY2hhdFdpZGdldCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJ25lcmQtY2hhdC13aWRnZXQnKTtcbiAgICAgIGlmIChjaGF0V2lkZ2V0KSB7XG4gICAgICAgIHRoaXMuc2V0dXBFdmVudExpc3RlbmVycyhjaGF0V2lkZ2V0KTtcbiAgICAgIH1cbiAgICB9LCAwKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcnMoKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0dXBFdmVudExpc3RlbmVycyh3aWRnZXQ6IEhUTUxFbGVtZW50KSB7XG5cbiAgICBjb25zdCBtZXNzYWdlU2VudExpc3RlbmVyID0gKGV2ZW50OiBDdXN0b21FdmVudCkgPT4ge1xuICAgICAgdGhpcy5tZXNzYWdlU2VudC5lbWl0KGV2ZW50LmRldGFpbCk7XG4gICAgfTtcblxuICAgIGNvbnN0IHdpZGdldE9wZW5lZExpc3RlbmVyID0gKGV2ZW50OiBDdXN0b21FdmVudCkgPT4ge1xuICAgICAgdGhpcy53aWRnZXRPcGVuZWQuZW1pdCgpO1xuICAgIH07XG5cbiAgICBjb25zdCB3aWRnZXRDbG9zZWRMaXN0ZW5lciA9IChldmVudDogQ3VzdG9tRXZlbnQpID0+IHtcbiAgICAgIHRoaXMud2lkZ2V0Q2xvc2VkLmVtaXQoKTtcbiAgICB9O1xuXG4gICAgd2lkZ2V0LmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2VTZW50JywgbWVzc2FnZVNlbnRMaXN0ZW5lciBhcyBFdmVudExpc3RlbmVyKTtcbiAgICB3aWRnZXQuYWRkRXZlbnRMaXN0ZW5lcignd2lkZ2V0T3BlbmVkJywgd2lkZ2V0T3BlbmVkTGlzdGVuZXIgYXMgRXZlbnRMaXN0ZW5lcik7XG4gICAgd2lkZ2V0LmFkZEV2ZW50TGlzdGVuZXIoJ3dpZGdldENsb3NlZCcsIHdpZGdldENsb3NlZExpc3RlbmVyIGFzIEV2ZW50TGlzdGVuZXIpO1xuXG4gICAgLy8gU3RvcmUgY2xlYW51cCBmdW5jdGlvbnNcbiAgICB0aGlzLmV2ZW50TGlzdGVuZXJzID0gW1xuICAgICAgKCkgPT4gd2lkZ2V0LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21lc3NhZ2VTZW50JywgbWVzc2FnZVNlbnRMaXN0ZW5lciBhcyBFdmVudExpc3RlbmVyKSxcbiAgICAgICgpID0+IHdpZGdldC5yZW1vdmVFdmVudExpc3RlbmVyKCd3aWRnZXRPcGVuZWQnLCB3aWRnZXRPcGVuZWRMaXN0ZW5lciBhcyBFdmVudExpc3RlbmVyKSxcbiAgICAgICgpID0+IHdpZGdldC5yZW1vdmVFdmVudExpc3RlbmVyKCd3aWRnZXRDbG9zZWQnLCB3aWRnZXRDbG9zZWRMaXN0ZW5lciBhcyBFdmVudExpc3RlbmVyKSxcbiAgICBdO1xuICB9XG5cbiAgcHJpdmF0ZSByZW1vdmVFdmVudExpc3RlbmVycygpIHtcbiAgICB0aGlzLmV2ZW50TGlzdGVuZXJzLmZvckVhY2goY2xlYW51cCA9PiBjbGVhbnVwKCkpO1xuICAgIHRoaXMuZXZlbnRMaXN0ZW5lcnMgPSBbXTtcbiAgfVxufVxuIl19
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { EventEmitter, Output, Input,
|
|
2
|
+
import { inject, ElementRef, EventEmitter, Output, Input, Component, CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';
|
|
3
3
|
import { CommonModule } from '@angular/common';
|
|
4
4
|
import { defineCustomElements } from 'nerdagent-chat-widget/loader';
|
|
5
5
|
|
|
6
6
|
class ChatWidgetComponent {
|
|
7
|
-
|
|
7
|
+
elementRef = inject(ElementRef);
|
|
8
8
|
apikey = '';
|
|
9
9
|
agentId = '';
|
|
10
10
|
agentName = 'Support Agent';
|
|
@@ -26,15 +26,18 @@ class ChatWidgetComponent {
|
|
|
26
26
|
widgetClosed = new EventEmitter();
|
|
27
27
|
eventListeners = [];
|
|
28
28
|
ngAfterViewInit() {
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
29
|
+
// Use setTimeout to ensure the custom element is fully initialized
|
|
30
|
+
setTimeout(() => {
|
|
31
|
+
const chatWidget = this.elementRef.nativeElement.querySelector('nerd-chat-widget');
|
|
32
|
+
if (chatWidget) {
|
|
33
|
+
this.setupEventListeners(chatWidget);
|
|
34
|
+
}
|
|
35
|
+
}, 0);
|
|
32
36
|
}
|
|
33
37
|
ngOnDestroy() {
|
|
34
38
|
this.removeEventListeners();
|
|
35
39
|
}
|
|
36
|
-
setupEventListeners() {
|
|
37
|
-
const widget = this.chatWidget.nativeElement;
|
|
40
|
+
setupEventListeners(widget) {
|
|
38
41
|
const messageSentListener = (event) => {
|
|
39
42
|
this.messageSent.emit(event.detail);
|
|
40
43
|
};
|
|
@@ -59,7 +62,7 @@ class ChatWidgetComponent {
|
|
|
59
62
|
this.eventListeners = [];
|
|
60
63
|
}
|
|
61
64
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ChatWidgetComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
62
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: ChatWidgetComponent, selector: "nerd-chat-widget", inputs: { apikey: "apikey", agentId: "agentId", agentName: "agentName", agentRole: "agentRole", primaryColor: "primaryColor", accentColor: "accentColor", welcomeMessage: "welcomeMessage", placeholderText: "placeholderText", position: "position", width: "width", height: "height", showMinimizeButton: "showMinimizeButton", showTimestamps: "showTimestamps", enableFileUpload: "enableFileUpload", enableSpeech: "enableSpeech", showPoweredBy: "showPoweredBy" }, outputs: { messageSent: "messageSent", widgetOpened: "widgetOpened", widgetClosed: "widgetClosed" },
|
|
65
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: ChatWidgetComponent, selector: "nerd-chat-widget", inputs: { apikey: "apikey", agentId: "agentId", agentName: "agentName", agentRole: "agentRole", primaryColor: "primaryColor", accentColor: "accentColor", welcomeMessage: "welcomeMessage", placeholderText: "placeholderText", position: "position", width: "width", height: "height", showMinimizeButton: "showMinimizeButton", showTimestamps: "showTimestamps", enableFileUpload: "enableFileUpload", enableSpeech: "enableSpeech", showPoweredBy: "showPoweredBy" }, outputs: { messageSent: "messageSent", widgetOpened: "widgetOpened", widgetClosed: "widgetClosed" }, ngImport: i0, template: `
|
|
63
66
|
<div
|
|
64
67
|
#chatWidget
|
|
65
68
|
nerd-chat-widget
|
|
@@ -106,10 +109,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
106
109
|
[attr.show-powered-by]="showPoweredBy?.toString()">
|
|
107
110
|
</div>
|
|
108
111
|
` }]
|
|
109
|
-
}], propDecorators: {
|
|
110
|
-
type: ViewChild,
|
|
111
|
-
args: ['chatWidget', { static: false }]
|
|
112
|
-
}], apikey: [{
|
|
112
|
+
}], propDecorators: { apikey: [{
|
|
113
113
|
type: Input
|
|
114
114
|
}], agentId: [{
|
|
115
115
|
type: Input
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nerdagent-chat-widget-angular.mjs","sources":["../../src/lib/chat-widget.component.ts","../../src/lib/chat-widget.module.ts","../../src/nerdagent-chat-widget-angular.ts"],"sourcesContent":["import { Component, Input, Output, EventEmitter, ElementRef,
|
|
1
|
+
{"version":3,"file":"nerdagent-chat-widget-angular.mjs","sources":["../../src/lib/chat-widget.component.ts","../../src/lib/chat-widget.module.ts","../../src/nerdagent-chat-widget-angular.ts"],"sourcesContent":["import { Component, Input, Output, EventEmitter, ElementRef, AfterViewInit, OnDestroy, inject } from '@angular/core';\nimport { WidgetPosition } from './chat-widget.types';\n\n@Component({\n selector: 'nerd-chat-widget',\n template: `\n <div\n #chatWidget\n nerd-chat-widget\n [attr.apikey]=\"apikey\"\n [attr.agent-id]=\"agentId\"\n [attr.agent-name]=\"agentName\"\n [attr.agent-role]=\"agentRole\"\n [attr.primary-color]=\"primaryColor\"\n [attr.accent-color]=\"accentColor\"\n [attr.welcome-message]=\"welcomeMessage\"\n [attr.placeholder-text]=\"placeholderText\"\n [attr.position]=\"position\"\n [attr.width]=\"width\"\n [attr.height]=\"height\"\n [attr.show-minimize-button]=\"showMinimizeButton?.toString()\"\n [attr.show-timestamps]=\"showTimestamps?.toString()\"\n [attr.enable-file-upload]=\"enableFileUpload?.toString()\"\n [attr.enable-speech]=\"enableSpeech?.toString()\"\n [attr.show-powered-by]=\"showPoweredBy?.toString()\">\n </div>\n `,\n styles: []\n})\nexport class ChatWidgetComponent implements AfterViewInit, OnDestroy {\n private elementRef = inject(ElementRef);\n\n @Input() apikey: string = '';\n @Input() agentId: string = '';\n @Input() agentName: string = 'Support Agent';\n @Input() agentRole: string = 'Customer Support';\n @Input() primaryColor: string = '#2d3e50';\n @Input() accentColor: string = '#4e8cff';\n @Input() welcomeMessage: string = 'Hi! How can I help?';\n @Input() placeholderText: string = 'Type your message...';\n @Input() position: WidgetPosition = 'bottom-right';\n @Input() width: string = '350';\n @Input() height: string = '500';\n @Input() showMinimizeButton: boolean = true;\n @Input() showTimestamps: boolean = true;\n @Input() enableFileUpload: boolean = false;\n @Input() enableSpeech: boolean = false;\n @Input() showPoweredBy: boolean = true;\n\n @Output() messageSent = new EventEmitter<{ message: string; timestamp: Date }>();\n @Output() widgetOpened = new EventEmitter<void>();\n @Output() widgetClosed = new EventEmitter<void>();\n\n private eventListeners: Array<() => void> = [];\n\n ngAfterViewInit() {\n // Use setTimeout to ensure the custom element is fully initialized\n setTimeout(() => {\n const chatWidget = this.elementRef.nativeElement.querySelector('nerd-chat-widget');\n if (chatWidget) {\n this.setupEventListeners(chatWidget);\n }\n }, 0);\n }\n\n ngOnDestroy() {\n this.removeEventListeners();\n }\n\n private setupEventListeners(widget: HTMLElement) {\n\n const messageSentListener = (event: CustomEvent) => {\n this.messageSent.emit(event.detail);\n };\n\n const widgetOpenedListener = (event: CustomEvent) => {\n this.widgetOpened.emit();\n };\n\n const widgetClosedListener = (event: CustomEvent) => {\n this.widgetClosed.emit();\n };\n\n widget.addEventListener('messageSent', messageSentListener as EventListener);\n widget.addEventListener('widgetOpened', widgetOpenedListener as EventListener);\n widget.addEventListener('widgetClosed', widgetClosedListener as EventListener);\n\n // Store cleanup functions\n this.eventListeners = [\n () => widget.removeEventListener('messageSent', messageSentListener as EventListener),\n () => widget.removeEventListener('widgetOpened', widgetOpenedListener as EventListener),\n () => widget.removeEventListener('widgetClosed', widgetClosedListener as EventListener),\n ];\n }\n\n private removeEventListeners() {\n this.eventListeners.forEach(cleanup => cleanup());\n this.eventListeners = [];\n }\n}\n","import { NgModule, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ChatWidgetComponent } from './chat-widget.component';\n\n// Import and define custom elements\nimport { defineCustomElements } from 'nerdagent-chat-widget/loader';\n\n// Define custom elements when module is imported\ndefineCustomElements();\n\n@NgModule({\n declarations: [\n ChatWidgetComponent\n ],\n imports: [\n CommonModule\n ],\n exports: [\n ChatWidgetComponent\n ],\n schemas: [CUSTOM_ELEMENTS_SCHEMA]\n})\nexport class NerdChatWidgetModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { EventEmitter,
|
|
1
|
+
import { EventEmitter, AfterViewInit, OnDestroy } from '@angular/core';
|
|
2
2
|
import { WidgetPosition } from './chat-widget.types';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
export declare class ChatWidgetComponent implements AfterViewInit, OnDestroy {
|
|
5
|
-
|
|
5
|
+
private elementRef;
|
|
6
6
|
apikey: string;
|
|
7
7
|
agentId: string;
|
|
8
8
|
agentName: string;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "nerdagent-chat-widget-angular",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.11",
|
|
4
4
|
"description": "NerdAgent Chat Widget for Angular",
|
|
5
5
|
"main": "dist/fesm2022/nerdagent-chat-widget-angular.mjs",
|
|
6
6
|
"module": "dist/fesm2022/nerdagent-chat-widget-angular.mjs",
|
|
@@ -40,5 +40,5 @@
|
|
|
40
40
|
"url": "https://github.com/nerdagent/chat-widget.git",
|
|
41
41
|
"directory": "packages/angular"
|
|
42
42
|
},
|
|
43
|
-
"gitHead": "
|
|
43
|
+
"gitHead": "c120d92a64fdd16aea5f95bda3d320d5c611ab43"
|
|
44
44
|
}
|