nerdagent-chat-widget-angular 1.0.2 → 1.0.3
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.
- package/dist/README.md +121 -0
- package/dist/esm2022/index.mjs +4 -0
- package/dist/esm2022/lib/chat-widget.component.mjs +136 -0
- package/dist/esm2022/lib/chat-widget.module.mjs +29 -0
- package/dist/esm2022/lib/chat-widget.types.mjs +2 -0
- package/dist/esm2022/nerdagent-chat-widget-angular.mjs +5 -0
- package/dist/fesm2022/nerdagent-chat-widget-angular.mjs +168 -0
- package/dist/fesm2022/nerdagent-chat-widget-angular.mjs.map +1 -0
- package/dist/lib/chat-widget.component.d.ts +3 -0
- package/dist/lib/chat-widget.module.d.ts +6 -0
- package/dist/package.json +47 -0
- package/package.json +5 -4
package/dist/README.md
ADDED
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
# @nerdagent/chat-widget-angular
|
|
2
|
+
|
|
3
|
+
Angular wrapper for the NerdAgent Chat Widget built with Stencil.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install @nerdagent/chat-widget-angular
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Usage
|
|
12
|
+
|
|
13
|
+
### 1. Import the Module
|
|
14
|
+
|
|
15
|
+
```typescript
|
|
16
|
+
import { NgModule } from '@angular/core';
|
|
17
|
+
import { BrowserModule } from '@angular/platform-browser';
|
|
18
|
+
import { NerdChatWidgetModule } from '@nerdagent/chat-widget-angular';
|
|
19
|
+
|
|
20
|
+
import { AppComponent } from './app.component';
|
|
21
|
+
|
|
22
|
+
@NgModule({
|
|
23
|
+
declarations: [
|
|
24
|
+
AppComponent
|
|
25
|
+
],
|
|
26
|
+
imports: [
|
|
27
|
+
BrowserModule,
|
|
28
|
+
NerdChatWidgetModule
|
|
29
|
+
],
|
|
30
|
+
providers: [],
|
|
31
|
+
bootstrap: [AppComponent]
|
|
32
|
+
})
|
|
33
|
+
export class AppModule { }
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
### 2. Use in Component Template
|
|
37
|
+
|
|
38
|
+
```html
|
|
39
|
+
<nerd-chat-widget
|
|
40
|
+
agentName="Support Agent"
|
|
41
|
+
agentRole="Customer Support"
|
|
42
|
+
primaryColor="#2d3e50"
|
|
43
|
+
accentColor="#4e8cff"
|
|
44
|
+
welcomeMessage="Hi! How can I help?"
|
|
45
|
+
position="bottom-right"
|
|
46
|
+
[width]="350"
|
|
47
|
+
[height]="500"
|
|
48
|
+
[showMinimizeButton]="true"
|
|
49
|
+
[showTimestamps]="true"
|
|
50
|
+
[enableFileUpload]="false"
|
|
51
|
+
[enableSpeech]="false"
|
|
52
|
+
[showPoweredBy]="true"
|
|
53
|
+
(messageSent)="onMessageSent($event)"
|
|
54
|
+
(widgetOpened)="onWidgetOpened()"
|
|
55
|
+
(widgetClosed)="onWidgetClosed()">
|
|
56
|
+
</nerd-chat-widget>
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
### 3. Handle Events in Component
|
|
60
|
+
|
|
61
|
+
```typescript
|
|
62
|
+
import { Component } from '@angular/core';
|
|
63
|
+
|
|
64
|
+
@Component({
|
|
65
|
+
selector: 'app-root',
|
|
66
|
+
templateUrl: './app.component.html'
|
|
67
|
+
})
|
|
68
|
+
export class AppComponent {
|
|
69
|
+
|
|
70
|
+
onMessageSent(event: { message: string; timestamp: Date }) {
|
|
71
|
+
console.log('Message sent:', event);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
onWidgetOpened() {
|
|
75
|
+
console.log('Widget opened');
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
onWidgetClosed() {
|
|
79
|
+
console.log('Widget closed');
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
## API
|
|
85
|
+
|
|
86
|
+
### Properties
|
|
87
|
+
|
|
88
|
+
| Property | Type | Default | Description |
|
|
89
|
+
|----------|------|---------|-------------|
|
|
90
|
+
| `agentName` | `string` | `'Support Agent'` | Name of the chat agent |
|
|
91
|
+
| `agentRole` | `string` | `'Customer Support'` | Role/title of the agent |
|
|
92
|
+
| `primaryColor` | `string` | `'#2d3e50'` | Primary theme color |
|
|
93
|
+
| `accentColor` | `string` | `'#4e8cff'` | Accent color for buttons |
|
|
94
|
+
| `welcomeMessage` | `string` | `'Hi! How can I help?'` | Initial message from agent |
|
|
95
|
+
| `placeholderText` | `string` | `'Type your message...'` | Input placeholder text |
|
|
96
|
+
| `position` | `WidgetPosition` | `'bottom-right'` | Widget position |
|
|
97
|
+
| `width` | `string` | `'350'` | Widget width in pixels |
|
|
98
|
+
| `height` | `string` | `'500'` | Widget height in pixels |
|
|
99
|
+
| `showMinimizeButton` | `boolean` | `true` | Show/hide minimize button |
|
|
100
|
+
| `showTimestamps` | `boolean` | `true` | Show/hide message timestamps |
|
|
101
|
+
| `enableFileUpload` | `boolean` | `false` | Enable file upload feature |
|
|
102
|
+
| `enableSpeech` | `boolean` | `false` | Enable speech input |
|
|
103
|
+
| `showPoweredBy` | `boolean` | `true` | Show/hide "Powered by" footer |
|
|
104
|
+
|
|
105
|
+
### Events
|
|
106
|
+
|
|
107
|
+
| Event | Type | Description |
|
|
108
|
+
|-------|------|-------------|
|
|
109
|
+
| `messageSent` | `{ message: string; timestamp: Date }` | Emitted when a message is sent |
|
|
110
|
+
| `widgetOpened` | `void` | Emitted when the widget is opened |
|
|
111
|
+
| `widgetClosed` | `void` | Emitted when the widget is closed |
|
|
112
|
+
|
|
113
|
+
### Types
|
|
114
|
+
|
|
115
|
+
```typescript
|
|
116
|
+
type WidgetPosition = 'bottom-right' | 'bottom-left' | 'top-right' | 'top-left';
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
## License
|
|
120
|
+
|
|
121
|
+
MIT
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { NerdChatWidgetModule } from './lib/chat-widget.module';
|
|
2
|
+
export { ChatWidgetComponent } from './lib/chat-widget.component';
|
|
3
|
+
export * from './lib/chat-widget.types';
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNsRSxjQUFjLHlCQUF5QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgTmVyZENoYXRXaWRnZXRNb2R1bGUgfSBmcm9tICcuL2xpYi9jaGF0LXdpZGdldC5tb2R1bGUnO1xuZXhwb3J0IHsgQ2hhdFdpZGdldENvbXBvbmVudCB9IGZyb20gJy4vbGliL2NoYXQtd2lkZ2V0LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jaGF0LXdpZGdldC50eXBlcyc7XG4iXX0=
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
import { Component, Input, Output, EventEmitter, ViewChild } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export class ChatWidgetComponent {
|
|
4
|
+
chatWidget;
|
|
5
|
+
agentName = 'Support Agent';
|
|
6
|
+
agentRole = 'Customer Support';
|
|
7
|
+
primaryColor = '#2d3e50';
|
|
8
|
+
accentColor = '#4e8cff';
|
|
9
|
+
welcomeMessage = 'Hi! How can I help?';
|
|
10
|
+
placeholderText = 'Type your message...';
|
|
11
|
+
position = 'bottom-right';
|
|
12
|
+
width = '350';
|
|
13
|
+
height = '500';
|
|
14
|
+
showMinimizeButton = true;
|
|
15
|
+
showTimestamps = true;
|
|
16
|
+
enableFileUpload = false;
|
|
17
|
+
enableSpeech = false;
|
|
18
|
+
showPoweredBy = true;
|
|
19
|
+
messageSent = new EventEmitter();
|
|
20
|
+
widgetOpened = new EventEmitter();
|
|
21
|
+
widgetClosed = new EventEmitter();
|
|
22
|
+
eventListeners = [];
|
|
23
|
+
ngAfterViewInit() {
|
|
24
|
+
if (this.chatWidget?.nativeElement) {
|
|
25
|
+
this.setupEventListeners();
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
ngOnDestroy() {
|
|
29
|
+
this.removeEventListeners();
|
|
30
|
+
}
|
|
31
|
+
setupEventListeners() {
|
|
32
|
+
const widget = this.chatWidget.nativeElement;
|
|
33
|
+
const messageSentListener = (event) => {
|
|
34
|
+
this.messageSent.emit(event.detail);
|
|
35
|
+
};
|
|
36
|
+
const widgetOpenedListener = (event) => {
|
|
37
|
+
this.widgetOpened.emit();
|
|
38
|
+
};
|
|
39
|
+
const widgetClosedListener = (event) => {
|
|
40
|
+
this.widgetClosed.emit();
|
|
41
|
+
};
|
|
42
|
+
widget.addEventListener('messageSent', messageSentListener);
|
|
43
|
+
widget.addEventListener('widgetOpened', widgetOpenedListener);
|
|
44
|
+
widget.addEventListener('widgetClosed', widgetClosedListener);
|
|
45
|
+
// Store cleanup functions
|
|
46
|
+
this.eventListeners = [
|
|
47
|
+
() => widget.removeEventListener('messageSent', messageSentListener),
|
|
48
|
+
() => widget.removeEventListener('widgetOpened', widgetOpenedListener),
|
|
49
|
+
() => widget.removeEventListener('widgetClosed', widgetClosedListener),
|
|
50
|
+
];
|
|
51
|
+
}
|
|
52
|
+
removeEventListeners() {
|
|
53
|
+
this.eventListeners.forEach(cleanup => cleanup());
|
|
54
|
+
this.eventListeners = [];
|
|
55
|
+
}
|
|
56
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ChatWidgetComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
57
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: ChatWidgetComponent, selector: "nerd-chat-widget", inputs: { 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" }, viewQueries: [{ propertyName: "chatWidget", first: true, predicate: ["chatWidget"], descendants: true }], ngImport: i0, template: `
|
|
58
|
+
<nerd-chat-widget
|
|
59
|
+
#chatWidget
|
|
60
|
+
[attr.agent-name]="agentName"
|
|
61
|
+
[attr.agent-role]="agentRole"
|
|
62
|
+
[attr.primary-color]="primaryColor"
|
|
63
|
+
[attr.accent-color]="accentColor"
|
|
64
|
+
[attr.welcome-message]="welcomeMessage"
|
|
65
|
+
[attr.placeholder-text]="placeholderText"
|
|
66
|
+
[attr.position]="position"
|
|
67
|
+
[attr.width]="width"
|
|
68
|
+
[attr.height]="height"
|
|
69
|
+
[attr.show-minimize-button]="showMinimizeButton?.toString()"
|
|
70
|
+
[attr.show-timestamps]="showTimestamps?.toString()"
|
|
71
|
+
[attr.enable-file-upload]="enableFileUpload?.toString()"
|
|
72
|
+
[attr.enable-speech]="enableSpeech?.toString()"
|
|
73
|
+
[attr.show-powered-by]="showPoweredBy?.toString()">
|
|
74
|
+
</nerd-chat-widget>
|
|
75
|
+
`, isInline: true, dependencies: [{ kind: "component", type: ChatWidgetComponent, selector: "nerd-chat-widget", inputs: ["agentName", "agentRole", "primaryColor", "accentColor", "welcomeMessage", "placeholderText", "position", "width", "height", "showMinimizeButton", "showTimestamps", "enableFileUpload", "enableSpeech", "showPoweredBy"], outputs: ["messageSent", "widgetOpened", "widgetClosed"] }] });
|
|
76
|
+
}
|
|
77
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ChatWidgetComponent, decorators: [{
|
|
78
|
+
type: Component,
|
|
79
|
+
args: [{ selector: 'nerd-chat-widget', template: `
|
|
80
|
+
<nerd-chat-widget
|
|
81
|
+
#chatWidget
|
|
82
|
+
[attr.agent-name]="agentName"
|
|
83
|
+
[attr.agent-role]="agentRole"
|
|
84
|
+
[attr.primary-color]="primaryColor"
|
|
85
|
+
[attr.accent-color]="accentColor"
|
|
86
|
+
[attr.welcome-message]="welcomeMessage"
|
|
87
|
+
[attr.placeholder-text]="placeholderText"
|
|
88
|
+
[attr.position]="position"
|
|
89
|
+
[attr.width]="width"
|
|
90
|
+
[attr.height]="height"
|
|
91
|
+
[attr.show-minimize-button]="showMinimizeButton?.toString()"
|
|
92
|
+
[attr.show-timestamps]="showTimestamps?.toString()"
|
|
93
|
+
[attr.enable-file-upload]="enableFileUpload?.toString()"
|
|
94
|
+
[attr.enable-speech]="enableSpeech?.toString()"
|
|
95
|
+
[attr.show-powered-by]="showPoweredBy?.toString()">
|
|
96
|
+
</nerd-chat-widget>
|
|
97
|
+
` }]
|
|
98
|
+
}], propDecorators: { chatWidget: [{
|
|
99
|
+
type: ViewChild,
|
|
100
|
+
args: ['chatWidget', { static: false }]
|
|
101
|
+
}], agentName: [{
|
|
102
|
+
type: Input
|
|
103
|
+
}], agentRole: [{
|
|
104
|
+
type: Input
|
|
105
|
+
}], primaryColor: [{
|
|
106
|
+
type: Input
|
|
107
|
+
}], accentColor: [{
|
|
108
|
+
type: Input
|
|
109
|
+
}], welcomeMessage: [{
|
|
110
|
+
type: Input
|
|
111
|
+
}], placeholderText: [{
|
|
112
|
+
type: Input
|
|
113
|
+
}], position: [{
|
|
114
|
+
type: Input
|
|
115
|
+
}], width: [{
|
|
116
|
+
type: Input
|
|
117
|
+
}], height: [{
|
|
118
|
+
type: Input
|
|
119
|
+
}], showMinimizeButton: [{
|
|
120
|
+
type: Input
|
|
121
|
+
}], showTimestamps: [{
|
|
122
|
+
type: Input
|
|
123
|
+
}], enableFileUpload: [{
|
|
124
|
+
type: Input
|
|
125
|
+
}], enableSpeech: [{
|
|
126
|
+
type: Input
|
|
127
|
+
}], showPoweredBy: [{
|
|
128
|
+
type: Input
|
|
129
|
+
}], messageSent: [{
|
|
130
|
+
type: Output
|
|
131
|
+
}], widgetOpened: [{
|
|
132
|
+
type: Output
|
|
133
|
+
}], widgetClosed: [{
|
|
134
|
+
type: Output
|
|
135
|
+
}] } });
|
|
136
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC13aWRnZXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvYW5ndWxhci9zcmMvbGliL2NoYXQtd2lkZ2V0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFjLFNBQVMsRUFBNEIsTUFBTSxlQUFlLENBQUM7O0FBMEJ4SCxNQUFNLE9BQU8sbUJBQW1CO0lBQ2MsVUFBVSxDQUEyQjtJQUV4RSxTQUFTLEdBQVcsZUFBZSxDQUFDO0lBQ3BDLFNBQVMsR0FBVyxrQkFBa0IsQ0FBQztJQUN2QyxZQUFZLEdBQVcsU0FBUyxDQUFDO0lBQ2pDLFdBQVcsR0FBVyxTQUFTLENBQUM7SUFDaEMsY0FBYyxHQUFXLHFCQUFxQixDQUFDO0lBQy9DLGVBQWUsR0FBVyxzQkFBc0IsQ0FBQztJQUNqRCxRQUFRLEdBQW1CLGNBQWMsQ0FBQztJQUMxQyxLQUFLLEdBQVcsS0FBSyxDQUFDO0lBQ3RCLE1BQU0sR0FBVyxLQUFLLENBQUM7SUFDdkIsa0JBQWtCLEdBQVksSUFBSSxDQUFDO0lBQ25DLGNBQWMsR0FBWSxJQUFJLENBQUM7SUFDL0IsZ0JBQWdCLEdBQVksS0FBSyxDQUFDO0lBQ2xDLFlBQVksR0FBWSxLQUFLLENBQUM7SUFDOUIsYUFBYSxHQUFZLElBQUksQ0FBQztJQUU3QixXQUFXLEdBQUcsSUFBSSxZQUFZLEVBQXdDLENBQUM7SUFDdkUsWUFBWSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7SUFDeEMsWUFBWSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7SUFFMUMsY0FBYyxHQUFzQixFQUFFLENBQUM7SUFFL0MsZUFBZTtRQUNiLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxhQUFhLEVBQUUsQ0FBQztZQUNuQyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztRQUM3QixDQUFDO0lBQ0gsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztJQUM5QixDQUFDO0lBRU8sbUJBQW1CO1FBQ3pCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDO1FBRTdDLE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxLQUFrQixFQUFFLEVBQUU7WUFDakQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3RDLENBQUMsQ0FBQztRQUVGLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxLQUFrQixFQUFFLEVBQUU7WUFDbEQsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUMzQixDQUFDLENBQUM7UUFFRixNQUFNLG9CQUFvQixHQUFHLENBQUMsS0FBa0IsRUFBRSxFQUFFO1lBQ2xELElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDM0IsQ0FBQyxDQUFDO1FBRUYsTUFBTSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsRUFBRSxtQkFBb0MsQ0FBQyxDQUFDO1FBQzdFLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLEVBQUUsb0JBQXFDLENBQUMsQ0FBQztRQUMvRSxNQUFNLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxFQUFFLG9CQUFxQyxDQUFDLENBQUM7UUFFL0UsMEJBQTBCO1FBQzFCLElBQUksQ0FBQyxjQUFjLEdBQUc7WUFDcEIsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLG1CQUFtQixDQUFDLGFBQWEsRUFBRSxtQkFBb0MsQ0FBQztZQUNyRixHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsbUJBQW1CLENBQUMsY0FBYyxFQUFFLG9CQUFxQyxDQUFDO1lBQ3ZGLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxjQUFjLEVBQUUsb0JBQXFDLENBQUM7U0FDeEYsQ0FBQztJQUNKLENBQUM7SUFFTyxvQkFBb0I7UUFDMUIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQ2xELElBQUksQ0FBQyxjQUFjLEdBQUcsRUFBRSxDQUFDO0lBQzNCLENBQUM7d0dBaEVVLG1CQUFtQjs0RkFBbkIsbUJBQW1CLDJxQkFyQnBCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FrQlQsNERBR1UsbUJBQW1COzs0RkFBbkIsbUJBQW1CO2tCQXZCL0IsU0FBUzsrQkFDRSxrQkFBa0IsWUFDbEI7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWtCVDs4QkFJMkMsVUFBVTtzQkFBckQsU0FBUzt1QkFBQyxZQUFZLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUVqQyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csa0JBQWtCO3NCQUExQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFFSSxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLFlBQVk7c0JBQXJCLE1BQU07Z0JBQ0csWUFBWTtzQkFBckIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBFbGVtZW50UmVmLCBWaWV3Q2hpbGQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgV2lkZ2V0UG9zaXRpb24gfSBmcm9tICcuL2NoYXQtd2lkZ2V0LnR5cGVzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbmVyZC1jaGF0LXdpZGdldCcsXG4gIHRlbXBsYXRlOiBgXG4gICAgPG5lcmQtY2hhdC13aWRnZXRcbiAgICAgICNjaGF0V2lkZ2V0XG4gICAgICBbYXR0ci5hZ2VudC1uYW1lXT1cImFnZW50TmFtZVwiXG4gICAgICBbYXR0ci5hZ2VudC1yb2xlXT1cImFnZW50Um9sZVwiXG4gICAgICBbYXR0ci5wcmltYXJ5LWNvbG9yXT1cInByaW1hcnlDb2xvclwiXG4gICAgICBbYXR0ci5hY2NlbnQtY29sb3JdPVwiYWNjZW50Q29sb3JcIlxuICAgICAgW2F0dHIud2VsY29tZS1tZXNzYWdlXT1cIndlbGNvbWVNZXNzYWdlXCJcbiAgICAgIFthdHRyLnBsYWNlaG9sZGVyLXRleHRdPVwicGxhY2Vob2xkZXJUZXh0XCJcbiAgICAgIFthdHRyLnBvc2l0aW9uXT1cInBvc2l0aW9uXCJcbiAgICAgIFthdHRyLndpZHRoXT1cIndpZHRoXCJcbiAgICAgIFthdHRyLmhlaWdodF09XCJoZWlnaHRcIlxuICAgICAgW2F0dHIuc2hvdy1taW5pbWl6ZS1idXR0b25dPVwic2hvd01pbmltaXplQnV0dG9uPy50b1N0cmluZygpXCJcbiAgICAgIFthdHRyLnNob3ctdGltZXN0YW1wc109XCJzaG93VGltZXN0YW1wcz8udG9TdHJpbmcoKVwiXG4gICAgICBbYXR0ci5lbmFibGUtZmlsZS11cGxvYWRdPVwiZW5hYmxlRmlsZVVwbG9hZD8udG9TdHJpbmcoKVwiXG4gICAgICBbYXR0ci5lbmFibGUtc3BlZWNoXT1cImVuYWJsZVNwZWVjaD8udG9TdHJpbmcoKVwiXG4gICAgICBbYXR0ci5zaG93LXBvd2VyZWQtYnldPVwic2hvd1Bvd2VyZWRCeT8udG9TdHJpbmcoKVwiPlxuICAgIDwvbmVyZC1jaGF0LXdpZGdldD5cbiAgYCxcbiAgc3R5bGVzOiBbXVxufSlcbmV4cG9ydCBjbGFzcyBDaGF0V2lkZ2V0Q29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgQFZpZXdDaGlsZCgnY2hhdFdpZGdldCcsIHsgc3RhdGljOiBmYWxzZSB9KSBjaGF0V2lkZ2V0ITogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG5cbiAgQElucHV0KCkgYWdlbnROYW1lOiBzdHJpbmcgPSAnU3VwcG9ydCBBZ2VudCc7XG4gIEBJbnB1dCgpIGFnZW50Um9sZTogc3RyaW5nID0gJ0N1c3RvbWVyIFN1cHBvcnQnO1xuICBASW5wdXQoKSBwcmltYXJ5Q29sb3I6IHN0cmluZyA9ICcjMmQzZTUwJztcbiAgQElucHV0KCkgYWNjZW50Q29sb3I6IHN0cmluZyA9ICcjNGU4Y2ZmJztcbiAgQElucHV0KCkgd2VsY29tZU1lc3NhZ2U6IHN0cmluZyA9ICdIaSEgSG93IGNhbiBJIGhlbHA/JztcbiAgQElucHV0KCkgcGxhY2Vob2xkZXJUZXh0OiBzdHJpbmcgPSAnVHlwZSB5b3VyIG1lc3NhZ2UuLi4nO1xuICBASW5wdXQoKSBwb3NpdGlvbjogV2lkZ2V0UG9zaXRpb24gPSAnYm90dG9tLXJpZ2h0JztcbiAgQElucHV0KCkgd2lkdGg6IHN0cmluZyA9ICczNTAnO1xuICBASW5wdXQoKSBoZWlnaHQ6IHN0cmluZyA9ICc1MDAnO1xuICBASW5wdXQoKSBzaG93TWluaW1pemVCdXR0b246IGJvb2xlYW4gPSB0cnVlO1xuICBASW5wdXQoKSBzaG93VGltZXN0YW1wczogYm9vbGVhbiA9IHRydWU7XG4gIEBJbnB1dCgpIGVuYWJsZUZpbGVVcGxvYWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgZW5hYmxlU3BlZWNoOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIHNob3dQb3dlcmVkQnk6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIEBPdXRwdXQoKSBtZXNzYWdlU2VudCA9IG5ldyBFdmVudEVtaXR0ZXI8eyBtZXNzYWdlOiBzdHJpbmc7IHRpbWVzdGFtcDogRGF0ZSB9PigpO1xuICBAT3V0cHV0KCkgd2lkZ2V0T3BlbmVkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBAT3V0cHV0KCkgd2lkZ2V0Q2xvc2VkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIHByaXZhdGUgZXZlbnRMaXN0ZW5lcnM6IEFycmF5PCgpID0+IHZvaWQ+ID0gW107XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIGlmICh0aGlzLmNoYXRXaWRnZXQ/Lm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgIHRoaXMuc2V0dXBFdmVudExpc3RlbmVycygpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcnMoKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0dXBFdmVudExpc3RlbmVycygpIHtcbiAgICBjb25zdCB3aWRnZXQgPSB0aGlzLmNoYXRXaWRnZXQubmF0aXZlRWxlbWVudDtcblxuICAgIGNvbnN0IG1lc3NhZ2VTZW50TGlzdGVuZXIgPSAoZXZlbnQ6IEN1c3RvbUV2ZW50KSA9PiB7XG4gICAgICB0aGlzLm1lc3NhZ2VTZW50LmVtaXQoZXZlbnQuZGV0YWlsKTtcbiAgICB9O1xuXG4gICAgY29uc3Qgd2lkZ2V0T3BlbmVkTGlzdGVuZXIgPSAoZXZlbnQ6IEN1c3RvbUV2ZW50KSA9PiB7XG4gICAgICB0aGlzLndpZGdldE9wZW5lZC5lbWl0KCk7XG4gICAgfTtcblxuICAgIGNvbnN0IHdpZGdldENsb3NlZExpc3RlbmVyID0gKGV2ZW50OiBDdXN0b21FdmVudCkgPT4ge1xuICAgICAgdGhpcy53aWRnZXRDbG9zZWQuZW1pdCgpO1xuICAgIH07XG5cbiAgICB3aWRnZXQuYWRkRXZlbnRMaXN0ZW5lcignbWVzc2FnZVNlbnQnLCBtZXNzYWdlU2VudExpc3RlbmVyIGFzIEV2ZW50TGlzdGVuZXIpO1xuICAgIHdpZGdldC5hZGRFdmVudExpc3RlbmVyKCd3aWRnZXRPcGVuZWQnLCB3aWRnZXRPcGVuZWRMaXN0ZW5lciBhcyBFdmVudExpc3RlbmVyKTtcbiAgICB3aWRnZXQuYWRkRXZlbnRMaXN0ZW5lcignd2lkZ2V0Q2xvc2VkJywgd2lkZ2V0Q2xvc2VkTGlzdGVuZXIgYXMgRXZlbnRMaXN0ZW5lcik7XG5cbiAgICAvLyBTdG9yZSBjbGVhbnVwIGZ1bmN0aW9uc1xuICAgIHRoaXMuZXZlbnRMaXN0ZW5lcnMgPSBbXG4gICAgICAoKSA9PiB3aWRnZXQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbWVzc2FnZVNlbnQnLCBtZXNzYWdlU2VudExpc3RlbmVyIGFzIEV2ZW50TGlzdGVuZXIpLFxuICAgICAgKCkgPT4gd2lkZ2V0LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3dpZGdldE9wZW5lZCcsIHdpZGdldE9wZW5lZExpc3RlbmVyIGFzIEV2ZW50TGlzdGVuZXIpLFxuICAgICAgKCkgPT4gd2lkZ2V0LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3dpZGdldENsb3NlZCcsIHdpZGdldENsb3NlZExpc3RlbmVyIGFzIEV2ZW50TGlzdGVuZXIpLFxuICAgIF07XG4gIH1cblxuICBwcml2YXRlIHJlbW92ZUV2ZW50TGlzdGVuZXJzKCkge1xuICAgIHRoaXMuZXZlbnRMaXN0ZW5lcnMuZm9yRWFjaChjbGVhbnVwID0+IGNsZWFudXAoKSk7XG4gICAgdGhpcy5ldmVudExpc3RlbmVycyA9IFtdO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { NgModule, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { ChatWidgetComponent } from './chat-widget.component';
|
|
4
|
+
// Import and define custom elements
|
|
5
|
+
import { defineCustomElements } from 'nerdagent-chat-widget/loader';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
// Define custom elements when module is imported
|
|
8
|
+
defineCustomElements();
|
|
9
|
+
export class NerdChatWidgetModule {
|
|
10
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: NerdChatWidgetModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
11
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.14", ngImport: i0, type: NerdChatWidgetModule, declarations: [ChatWidgetComponent], imports: [CommonModule], exports: [ChatWidgetComponent] });
|
|
12
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: NerdChatWidgetModule, imports: [CommonModule] });
|
|
13
|
+
}
|
|
14
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: NerdChatWidgetModule, decorators: [{
|
|
15
|
+
type: NgModule,
|
|
16
|
+
args: [{
|
|
17
|
+
declarations: [
|
|
18
|
+
ChatWidgetComponent
|
|
19
|
+
],
|
|
20
|
+
imports: [
|
|
21
|
+
CommonModule
|
|
22
|
+
],
|
|
23
|
+
exports: [
|
|
24
|
+
ChatWidgetComponent
|
|
25
|
+
],
|
|
26
|
+
schemas: [CUSTOM_ELEMENTS_SCHEMA]
|
|
27
|
+
}]
|
|
28
|
+
}] });
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC13aWRnZXQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvYW5ndWxhci9zcmMvbGliL2NoYXQtd2lkZ2V0Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLHNCQUFzQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUU5RCxvQ0FBb0M7QUFDcEMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sOEJBQThCLENBQUM7O0FBRXBFLGlEQUFpRDtBQUNqRCxvQkFBb0IsRUFBRSxDQUFDO0FBY3ZCLE1BQU0sT0FBTyxvQkFBb0I7d0dBQXBCLG9CQUFvQjt5R0FBcEIsb0JBQW9CLGlCQVY3QixtQkFBbUIsYUFHbkIsWUFBWSxhQUdaLG1CQUFtQjt5R0FJVixvQkFBb0IsWUFQN0IsWUFBWTs7NEZBT0gsb0JBQW9CO2tCQVpoQyxRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRTt3QkFDWixtQkFBbUI7cUJBQ3BCO29CQUNELE9BQU8sRUFBRTt3QkFDUCxZQUFZO3FCQUNiO29CQUNELE9BQU8sRUFBRTt3QkFDUCxtQkFBbUI7cUJBQ3BCO29CQUNELE9BQU8sRUFBRSxDQUFDLHNCQUFzQixDQUFDO2lCQUNsQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlLCBDVVNUT01fRUxFTUVOVFNfU0NIRU1BIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ2hhdFdpZGdldENvbXBvbmVudCB9IGZyb20gJy4vY2hhdC13aWRnZXQuY29tcG9uZW50JztcblxuLy8gSW1wb3J0IGFuZCBkZWZpbmUgY3VzdG9tIGVsZW1lbnRzXG5pbXBvcnQgeyBkZWZpbmVDdXN0b21FbGVtZW50cyB9IGZyb20gJ25lcmRhZ2VudC1jaGF0LXdpZGdldC9sb2FkZXInO1xuXG4vLyBEZWZpbmUgY3VzdG9tIGVsZW1lbnRzIHdoZW4gbW9kdWxlIGlzIGltcG9ydGVkXG5kZWZpbmVDdXN0b21FbGVtZW50cygpO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtcbiAgICBDaGF0V2lkZ2V0Q29tcG9uZW50XG4gIF0sXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGVcbiAgXSxcbiAgZXhwb3J0czogW1xuICAgIENoYXRXaWRnZXRDb21wb25lbnRcbiAgXSxcbiAgc2NoZW1hczogW0NVU1RPTV9FTEVNRU5UU19TQ0hFTUFdXG59KVxuZXhwb3J0IGNsYXNzIE5lcmRDaGF0V2lkZ2V0TW9kdWxlIHsgfVxuIl19
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC13aWRnZXQudHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyL3NyYy9saWIvY2hhdC13aWRnZXQudHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIFdpZGdldFBvc2l0aW9uID0gJ2JvdHRvbS1yaWdodCcgfCAnYm90dG9tLWxlZnQnIHwgJ3RvcC1yaWdodCcgfCAndG9wLWxlZnQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIENoYXRXaWRnZXRDb25maWcge1xuICBhZ2VudE5hbWU/OiBzdHJpbmc7XG4gIGFnZW50Um9sZT86IHN0cmluZztcbiAgcHJpbWFyeUNvbG9yPzogc3RyaW5nO1xuICBhY2NlbnRDb2xvcj86IHN0cmluZztcbiAgd2VsY29tZU1lc3NhZ2U/OiBzdHJpbmc7XG4gIHBsYWNlaG9sZGVyVGV4dD86IHN0cmluZztcbiAgcG9zaXRpb24/OiBXaWRnZXRQb3NpdGlvbjtcbiAgd2lkdGg/OiBzdHJpbmc7XG4gIGhlaWdodD86IHN0cmluZztcbiAgc2hvd01pbmltaXplQnV0dG9uPzogYm9vbGVhbjtcbiAgc2hvd1RpbWVzdGFtcHM/OiBib29sZWFuO1xuICBlbmFibGVGaWxlVXBsb2FkPzogYm9vbGVhbjtcbiAgZW5hYmxlU3BlZWNoPzogYm9vbGVhbjtcbiAgc2hvd1Bvd2VyZWRCeT86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2hhdFdpZGdldEV2ZW50cyB7XG4gIG1lc3NhZ2VTZW50OiBDdXN0b21FdmVudDx7IG1lc3NhZ2U6IHN0cmluZzsgdGltZXN0YW1wOiBEYXRlIH0+O1xuICB3aWRnZXRPcGVuZWQ6IEN1c3RvbUV2ZW50PHZvaWQ+O1xuICB3aWRnZXRDbG9zZWQ6IEN1c3RvbUV2ZW50PHZvaWQ+O1xufVxuIl19
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './index';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmVyZGFnZW50LWNoYXQtd2lkZ2V0LWFuZ3VsYXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyL3NyYy9uZXJkYWdlbnQtY2hhdC13aWRnZXQtYW5ndWxhci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ==
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { EventEmitter, Output, Input, ViewChild, Component, CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';
|
|
3
|
+
import { CommonModule } from '@angular/common';
|
|
4
|
+
import { defineCustomElements } from 'nerdagent-chat-widget/loader';
|
|
5
|
+
|
|
6
|
+
class ChatWidgetComponent {
|
|
7
|
+
chatWidget;
|
|
8
|
+
agentName = 'Support Agent';
|
|
9
|
+
agentRole = 'Customer Support';
|
|
10
|
+
primaryColor = '#2d3e50';
|
|
11
|
+
accentColor = '#4e8cff';
|
|
12
|
+
welcomeMessage = 'Hi! How can I help?';
|
|
13
|
+
placeholderText = 'Type your message...';
|
|
14
|
+
position = 'bottom-right';
|
|
15
|
+
width = '350';
|
|
16
|
+
height = '500';
|
|
17
|
+
showMinimizeButton = true;
|
|
18
|
+
showTimestamps = true;
|
|
19
|
+
enableFileUpload = false;
|
|
20
|
+
enableSpeech = false;
|
|
21
|
+
showPoweredBy = true;
|
|
22
|
+
messageSent = new EventEmitter();
|
|
23
|
+
widgetOpened = new EventEmitter();
|
|
24
|
+
widgetClosed = new EventEmitter();
|
|
25
|
+
eventListeners = [];
|
|
26
|
+
ngAfterViewInit() {
|
|
27
|
+
if (this.chatWidget?.nativeElement) {
|
|
28
|
+
this.setupEventListeners();
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
ngOnDestroy() {
|
|
32
|
+
this.removeEventListeners();
|
|
33
|
+
}
|
|
34
|
+
setupEventListeners() {
|
|
35
|
+
const widget = this.chatWidget.nativeElement;
|
|
36
|
+
const messageSentListener = (event) => {
|
|
37
|
+
this.messageSent.emit(event.detail);
|
|
38
|
+
};
|
|
39
|
+
const widgetOpenedListener = (event) => {
|
|
40
|
+
this.widgetOpened.emit();
|
|
41
|
+
};
|
|
42
|
+
const widgetClosedListener = (event) => {
|
|
43
|
+
this.widgetClosed.emit();
|
|
44
|
+
};
|
|
45
|
+
widget.addEventListener('messageSent', messageSentListener);
|
|
46
|
+
widget.addEventListener('widgetOpened', widgetOpenedListener);
|
|
47
|
+
widget.addEventListener('widgetClosed', widgetClosedListener);
|
|
48
|
+
// Store cleanup functions
|
|
49
|
+
this.eventListeners = [
|
|
50
|
+
() => widget.removeEventListener('messageSent', messageSentListener),
|
|
51
|
+
() => widget.removeEventListener('widgetOpened', widgetOpenedListener),
|
|
52
|
+
() => widget.removeEventListener('widgetClosed', widgetClosedListener),
|
|
53
|
+
];
|
|
54
|
+
}
|
|
55
|
+
removeEventListeners() {
|
|
56
|
+
this.eventListeners.forEach(cleanup => cleanup());
|
|
57
|
+
this.eventListeners = [];
|
|
58
|
+
}
|
|
59
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ChatWidgetComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
60
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: ChatWidgetComponent, selector: "nerd-chat-widget", inputs: { 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" }, viewQueries: [{ propertyName: "chatWidget", first: true, predicate: ["chatWidget"], descendants: true }], ngImport: i0, template: `
|
|
61
|
+
<nerd-chat-widget
|
|
62
|
+
#chatWidget
|
|
63
|
+
[attr.agent-name]="agentName"
|
|
64
|
+
[attr.agent-role]="agentRole"
|
|
65
|
+
[attr.primary-color]="primaryColor"
|
|
66
|
+
[attr.accent-color]="accentColor"
|
|
67
|
+
[attr.welcome-message]="welcomeMessage"
|
|
68
|
+
[attr.placeholder-text]="placeholderText"
|
|
69
|
+
[attr.position]="position"
|
|
70
|
+
[attr.width]="width"
|
|
71
|
+
[attr.height]="height"
|
|
72
|
+
[attr.show-minimize-button]="showMinimizeButton?.toString()"
|
|
73
|
+
[attr.show-timestamps]="showTimestamps?.toString()"
|
|
74
|
+
[attr.enable-file-upload]="enableFileUpload?.toString()"
|
|
75
|
+
[attr.enable-speech]="enableSpeech?.toString()"
|
|
76
|
+
[attr.show-powered-by]="showPoweredBy?.toString()">
|
|
77
|
+
</nerd-chat-widget>
|
|
78
|
+
`, isInline: true, dependencies: [{ kind: "component", type: ChatWidgetComponent, selector: "nerd-chat-widget", inputs: ["agentName", "agentRole", "primaryColor", "accentColor", "welcomeMessage", "placeholderText", "position", "width", "height", "showMinimizeButton", "showTimestamps", "enableFileUpload", "enableSpeech", "showPoweredBy"], outputs: ["messageSent", "widgetOpened", "widgetClosed"] }] });
|
|
79
|
+
}
|
|
80
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ChatWidgetComponent, decorators: [{
|
|
81
|
+
type: Component,
|
|
82
|
+
args: [{ selector: 'nerd-chat-widget', template: `
|
|
83
|
+
<nerd-chat-widget
|
|
84
|
+
#chatWidget
|
|
85
|
+
[attr.agent-name]="agentName"
|
|
86
|
+
[attr.agent-role]="agentRole"
|
|
87
|
+
[attr.primary-color]="primaryColor"
|
|
88
|
+
[attr.accent-color]="accentColor"
|
|
89
|
+
[attr.welcome-message]="welcomeMessage"
|
|
90
|
+
[attr.placeholder-text]="placeholderText"
|
|
91
|
+
[attr.position]="position"
|
|
92
|
+
[attr.width]="width"
|
|
93
|
+
[attr.height]="height"
|
|
94
|
+
[attr.show-minimize-button]="showMinimizeButton?.toString()"
|
|
95
|
+
[attr.show-timestamps]="showTimestamps?.toString()"
|
|
96
|
+
[attr.enable-file-upload]="enableFileUpload?.toString()"
|
|
97
|
+
[attr.enable-speech]="enableSpeech?.toString()"
|
|
98
|
+
[attr.show-powered-by]="showPoweredBy?.toString()">
|
|
99
|
+
</nerd-chat-widget>
|
|
100
|
+
` }]
|
|
101
|
+
}], propDecorators: { chatWidget: [{
|
|
102
|
+
type: ViewChild,
|
|
103
|
+
args: ['chatWidget', { static: false }]
|
|
104
|
+
}], agentName: [{
|
|
105
|
+
type: Input
|
|
106
|
+
}], agentRole: [{
|
|
107
|
+
type: Input
|
|
108
|
+
}], primaryColor: [{
|
|
109
|
+
type: Input
|
|
110
|
+
}], accentColor: [{
|
|
111
|
+
type: Input
|
|
112
|
+
}], welcomeMessage: [{
|
|
113
|
+
type: Input
|
|
114
|
+
}], placeholderText: [{
|
|
115
|
+
type: Input
|
|
116
|
+
}], position: [{
|
|
117
|
+
type: Input
|
|
118
|
+
}], width: [{
|
|
119
|
+
type: Input
|
|
120
|
+
}], height: [{
|
|
121
|
+
type: Input
|
|
122
|
+
}], showMinimizeButton: [{
|
|
123
|
+
type: Input
|
|
124
|
+
}], showTimestamps: [{
|
|
125
|
+
type: Input
|
|
126
|
+
}], enableFileUpload: [{
|
|
127
|
+
type: Input
|
|
128
|
+
}], enableSpeech: [{
|
|
129
|
+
type: Input
|
|
130
|
+
}], showPoweredBy: [{
|
|
131
|
+
type: Input
|
|
132
|
+
}], messageSent: [{
|
|
133
|
+
type: Output
|
|
134
|
+
}], widgetOpened: [{
|
|
135
|
+
type: Output
|
|
136
|
+
}], widgetClosed: [{
|
|
137
|
+
type: Output
|
|
138
|
+
}] } });
|
|
139
|
+
|
|
140
|
+
// Define custom elements when module is imported
|
|
141
|
+
defineCustomElements();
|
|
142
|
+
class NerdChatWidgetModule {
|
|
143
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: NerdChatWidgetModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
144
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.14", ngImport: i0, type: NerdChatWidgetModule, declarations: [ChatWidgetComponent], imports: [CommonModule], exports: [ChatWidgetComponent] });
|
|
145
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: NerdChatWidgetModule, imports: [CommonModule] });
|
|
146
|
+
}
|
|
147
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: NerdChatWidgetModule, decorators: [{
|
|
148
|
+
type: NgModule,
|
|
149
|
+
args: [{
|
|
150
|
+
declarations: [
|
|
151
|
+
ChatWidgetComponent
|
|
152
|
+
],
|
|
153
|
+
imports: [
|
|
154
|
+
CommonModule
|
|
155
|
+
],
|
|
156
|
+
exports: [
|
|
157
|
+
ChatWidgetComponent
|
|
158
|
+
],
|
|
159
|
+
schemas: [CUSTOM_ELEMENTS_SCHEMA]
|
|
160
|
+
}]
|
|
161
|
+
}] });
|
|
162
|
+
|
|
163
|
+
/**
|
|
164
|
+
* Generated bundle index. Do not edit.
|
|
165
|
+
*/
|
|
166
|
+
|
|
167
|
+
export { ChatWidgetComponent, NerdChatWidgetModule };
|
|
168
|
+
//# sourceMappingURL=nerdagent-chat-widget-angular.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nerdagent-chat-widget-angular.mjs","sources":["../../../packages/angular/src/lib/chat-widget.component.ts","../../../packages/angular/src/lib/chat-widget.module.ts","../../../packages/angular/src/nerdagent-chat-widget-angular.ts"],"sourcesContent":["import { Component, Input, Output, EventEmitter, ElementRef, ViewChild, AfterViewInit, OnDestroy } from '@angular/core';\nimport { WidgetPosition } from './chat-widget.types';\n\n@Component({\n selector: 'nerd-chat-widget',\n template: `\n <nerd-chat-widget\n #chatWidget\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 </nerd-chat-widget>\n `,\n styles: []\n})\nexport class ChatWidgetComponent implements AfterViewInit, OnDestroy {\n @ViewChild('chatWidget', { static: false }) chatWidget!: ElementRef<HTMLElement>;\n\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 if (this.chatWidget?.nativeElement) {\n this.setupEventListeners();\n }\n }\n\n ngOnDestroy() {\n this.removeEventListeners();\n }\n\n private setupEventListeners() {\n const widget = this.chatWidget.nativeElement;\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,5 +1,6 @@
|
|
|
1
1
|
import { EventEmitter, ElementRef, AfterViewInit, OnDestroy } from '@angular/core';
|
|
2
2
|
import { WidgetPosition } from './chat-widget.types';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
3
4
|
export declare class ChatWidgetComponent implements AfterViewInit, OnDestroy {
|
|
4
5
|
chatWidget: ElementRef<HTMLElement>;
|
|
5
6
|
agentName: string;
|
|
@@ -27,4 +28,6 @@ export declare class ChatWidgetComponent implements AfterViewInit, OnDestroy {
|
|
|
27
28
|
ngOnDestroy(): void;
|
|
28
29
|
private setupEventListeners;
|
|
29
30
|
private removeEventListeners;
|
|
31
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ChatWidgetComponent, never>;
|
|
32
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<ChatWidgetComponent, "nerd-chat-widget", never, { "agentName": { "alias": "agentName"; "required": false; }; "agentRole": { "alias": "agentRole"; "required": false; }; "primaryColor": { "alias": "primaryColor"; "required": false; }; "accentColor": { "alias": "accentColor"; "required": false; }; "welcomeMessage": { "alias": "welcomeMessage"; "required": false; }; "placeholderText": { "alias": "placeholderText"; "required": false; }; "position": { "alias": "position"; "required": false; }; "width": { "alias": "width"; "required": false; }; "height": { "alias": "height"; "required": false; }; "showMinimizeButton": { "alias": "showMinimizeButton"; "required": false; }; "showTimestamps": { "alias": "showTimestamps"; "required": false; }; "enableFileUpload": { "alias": "enableFileUpload"; "required": false; }; "enableSpeech": { "alias": "enableSpeech"; "required": false; }; "showPoweredBy": { "alias": "showPoweredBy"; "required": false; }; }, { "messageSent": "messageSent"; "widgetOpened": "widgetOpened"; "widgetClosed": "widgetClosed"; }, never, never, false, never>;
|
|
30
33
|
}
|
|
@@ -1,2 +1,8 @@
|
|
|
1
|
+
import * as i0 from "@angular/core";
|
|
2
|
+
import * as i1 from "./chat-widget.component";
|
|
3
|
+
import * as i2 from "@angular/common";
|
|
1
4
|
export declare class NerdChatWidgetModule {
|
|
5
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<NerdChatWidgetModule, never>;
|
|
6
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<NerdChatWidgetModule, [typeof i1.ChatWidgetComponent], [typeof i2.CommonModule], [typeof i1.ChatWidgetComponent]>;
|
|
7
|
+
static ɵinj: i0.ɵɵInjectorDeclaration<NerdChatWidgetModule>;
|
|
2
8
|
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "nerdagent-chat-widget-angular",
|
|
3
|
+
"version": "1.0.2",
|
|
4
|
+
"description": "NerdAgent Chat Widget for Angular",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"module": "fesm2022/nerdagent-chat-widget-angular.mjs",
|
|
7
|
+
"types": "dist/index.d.ts",
|
|
8
|
+
"files": [
|
|
9
|
+
"dist/"
|
|
10
|
+
],
|
|
11
|
+
"keywords": [
|
|
12
|
+
"angular",
|
|
13
|
+
"chat",
|
|
14
|
+
"widget",
|
|
15
|
+
"stencil",
|
|
16
|
+
"web-components"
|
|
17
|
+
],
|
|
18
|
+
"author": "NerdAgent",
|
|
19
|
+
"license": "MIT",
|
|
20
|
+
"peerDependencies": {
|
|
21
|
+
"@angular/common": "^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0",
|
|
22
|
+
"@angular/core": "^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0"
|
|
23
|
+
},
|
|
24
|
+
"dependencies": {
|
|
25
|
+
"nerdagent-chat-widget": "^1.0.0",
|
|
26
|
+
"tslib": "^2.3.0"
|
|
27
|
+
},
|
|
28
|
+
"repository": {
|
|
29
|
+
"type": "git",
|
|
30
|
+
"url": "https://github.com/nerdagent/chat-widget.git",
|
|
31
|
+
"directory": "packages/angular"
|
|
32
|
+
},
|
|
33
|
+
"gitHead": "f46abd47a7632d8fc690b202bfc7c202bcb8b18f",
|
|
34
|
+
"typings": "index.d.ts",
|
|
35
|
+
"exports": {
|
|
36
|
+
"./package.json": {
|
|
37
|
+
"default": "./package.json"
|
|
38
|
+
},
|
|
39
|
+
".": {
|
|
40
|
+
"types": "./index.d.ts",
|
|
41
|
+
"esm2022": "./esm2022/nerdagent-chat-widget-angular.mjs",
|
|
42
|
+
"esm": "./esm2022/nerdagent-chat-widget-angular.mjs",
|
|
43
|
+
"default": "./fesm2022/nerdagent-chat-widget-angular.mjs"
|
|
44
|
+
}
|
|
45
|
+
},
|
|
46
|
+
"sideEffects": false
|
|
47
|
+
}
|
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.3",
|
|
4
4
|
"description": "NerdAgent Chat Widget for Angular",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"module": "dist/index.js",
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
"dist/"
|
|
10
10
|
],
|
|
11
11
|
"scripts": {
|
|
12
|
-
"build": "
|
|
12
|
+
"build": "ng-packagr -p ng-package.json",
|
|
13
13
|
"prepublishOnly": "npm run build"
|
|
14
14
|
},
|
|
15
15
|
"keywords": [
|
|
@@ -32,12 +32,13 @@
|
|
|
32
32
|
"@angular/common": "^18.0.0",
|
|
33
33
|
"@angular/core": "^18.0.0",
|
|
34
34
|
"@types/node": "^20.0.0",
|
|
35
|
-
"typescript": "^5.0.0"
|
|
35
|
+
"typescript": "^5.0.0",
|
|
36
|
+
"ng-packagr": "^18.0.0"
|
|
36
37
|
},
|
|
37
38
|
"repository": {
|
|
38
39
|
"type": "git",
|
|
39
40
|
"url": "https://github.com/nerdagent/chat-widget.git",
|
|
40
41
|
"directory": "packages/angular"
|
|
41
42
|
},
|
|
42
|
-
"gitHead": "
|
|
43
|
+
"gitHead": "f46abd47a7632d8fc690b202bfc7c202bcb8b18f"
|
|
43
44
|
}
|