nerdagent-chat-widget-angular 1.0.2 → 1.0.4

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 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDaEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDbEUsY0FBYyx5QkFBeUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IE5lcmRDaGF0V2lkZ2V0TW9kdWxlIH0gZnJvbSAnLi9saWIvY2hhdC13aWRnZXQubW9kdWxlJztcbmV4cG9ydCB7IENoYXRXaWRnZXRDb21wb25lbnQgfSBmcm9tICcuL2xpYi9jaGF0LXdpZGdldC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY2hhdC13aWRnZXQudHlwZXMnO1xuIl19
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC13aWRnZXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9jaGF0LXdpZGdldC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBYyxTQUFTLEVBQTRCLE1BQU0sZUFBZSxDQUFDOztBQTBCeEgsTUFBTSxPQUFPLG1CQUFtQjtJQUNjLFVBQVUsQ0FBMkI7SUFFeEUsU0FBUyxHQUFXLGVBQWUsQ0FBQztJQUNwQyxTQUFTLEdBQVcsa0JBQWtCLENBQUM7SUFDdkMsWUFBWSxHQUFXLFNBQVMsQ0FBQztJQUNqQyxXQUFXLEdBQVcsU0FBUyxDQUFDO0lBQ2hDLGNBQWMsR0FBVyxxQkFBcUIsQ0FBQztJQUMvQyxlQUFlLEdBQVcsc0JBQXNCLENBQUM7SUFDakQsUUFBUSxHQUFtQixjQUFjLENBQUM7SUFDMUMsS0FBSyxHQUFXLEtBQUssQ0FBQztJQUN0QixNQUFNLEdBQVcsS0FBSyxDQUFDO0lBQ3ZCLGtCQUFrQixHQUFZLElBQUksQ0FBQztJQUNuQyxjQUFjLEdBQVksSUFBSSxDQUFDO0lBQy9CLGdCQUFnQixHQUFZLEtBQUssQ0FBQztJQUNsQyxZQUFZLEdBQVksS0FBSyxDQUFDO0lBQzlCLGFBQWEsR0FBWSxJQUFJLENBQUM7SUFFN0IsV0FBVyxHQUFHLElBQUksWUFBWSxFQUF3QyxDQUFDO0lBQ3ZFLFlBQVksR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO0lBQ3hDLFlBQVksR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO0lBRTFDLGNBQWMsR0FBc0IsRUFBRSxDQUFDO0lBRS9DLGVBQWU7UUFDYixJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsYUFBYSxFQUFFLENBQUM7WUFDbkMsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7UUFDN0IsQ0FBQztJQUNILENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUVPLG1CQUFtQjtRQUN6QixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQztRQUU3QyxNQUFNLG1CQUFtQixHQUFHLENBQUMsS0FBa0IsRUFBRSxFQUFFO1lBQ2pELElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN0QyxDQUFDLENBQUM7UUFFRixNQUFNLG9CQUFvQixHQUFHLENBQUMsS0FBa0IsRUFBRSxFQUFFO1lBQ2xELElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDM0IsQ0FBQyxDQUFDO1FBRUYsTUFBTSxvQkFBb0IsR0FBRyxDQUFDLEtBQWtCLEVBQUUsRUFBRTtZQUNsRCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzNCLENBQUMsQ0FBQztRQUVGLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLEVBQUUsbUJBQW9DLENBQUMsQ0FBQztRQUM3RSxNQUFNLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxFQUFFLG9CQUFxQyxDQUFDLENBQUM7UUFDL0UsTUFBTSxDQUFDLGdCQUFnQixDQUFDLGNBQWMsRUFBRSxvQkFBcUMsQ0FBQyxDQUFDO1FBRS9FLDBCQUEwQjtRQUMxQixJQUFJLENBQUMsY0FBYyxHQUFHO1lBQ3BCLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxhQUFhLEVBQUUsbUJBQW9DLENBQUM7WUFDckYsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLG1CQUFtQixDQUFDLGNBQWMsRUFBRSxvQkFBcUMsQ0FBQztZQUN2RixHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsbUJBQW1CLENBQUMsY0FBYyxFQUFFLG9CQUFxQyxDQUFDO1NBQ3hGLENBQUM7SUFDSixDQUFDO0lBRU8sb0JBQW9CO1FBQzFCLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUNsRCxJQUFJLENBQUMsY0FBYyxHQUFHLEVBQUUsQ0FBQztJQUMzQixDQUFDO3dHQWhFVSxtQkFBbUI7NEZBQW5CLG1CQUFtQiwycUJBckJwQjs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBa0JULDREQUdVLG1CQUFtQjs7NEZBQW5CLG1CQUFtQjtrQkF2Qi9CLFNBQVM7K0JBQ0Usa0JBQWtCLFlBQ2xCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FrQlQ7OEJBSTJDLFVBQVU7c0JBQXJELFNBQVM7dUJBQUMsWUFBWSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFFakMsU0FBUztzQkFBakIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBRUksV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxZQUFZO3NCQUFyQixNQUFNO2dCQUNHLFlBQVk7c0JBQXJCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgRWxlbWVudFJlZiwgVmlld0NoaWxkLCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFdpZGdldFBvc2l0aW9uIH0gZnJvbSAnLi9jaGF0LXdpZGdldC50eXBlcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ25lcmQtY2hhdC13aWRnZXQnLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxuZXJkLWNoYXQtd2lkZ2V0XG4gICAgICAjY2hhdFdpZGdldFxuICAgICAgW2F0dHIuYWdlbnQtbmFtZV09XCJhZ2VudE5hbWVcIlxuICAgICAgW2F0dHIuYWdlbnQtcm9sZV09XCJhZ2VudFJvbGVcIlxuICAgICAgW2F0dHIucHJpbWFyeS1jb2xvcl09XCJwcmltYXJ5Q29sb3JcIlxuICAgICAgW2F0dHIuYWNjZW50LWNvbG9yXT1cImFjY2VudENvbG9yXCJcbiAgICAgIFthdHRyLndlbGNvbWUtbWVzc2FnZV09XCJ3ZWxjb21lTWVzc2FnZVwiXG4gICAgICBbYXR0ci5wbGFjZWhvbGRlci10ZXh0XT1cInBsYWNlaG9sZGVyVGV4dFwiXG4gICAgICBbYXR0ci5wb3NpdGlvbl09XCJwb3NpdGlvblwiXG4gICAgICBbYXR0ci53aWR0aF09XCJ3aWR0aFwiXG4gICAgICBbYXR0ci5oZWlnaHRdPVwiaGVpZ2h0XCJcbiAgICAgIFthdHRyLnNob3ctbWluaW1pemUtYnV0dG9uXT1cInNob3dNaW5pbWl6ZUJ1dHRvbj8udG9TdHJpbmcoKVwiXG4gICAgICBbYXR0ci5zaG93LXRpbWVzdGFtcHNdPVwic2hvd1RpbWVzdGFtcHM/LnRvU3RyaW5nKClcIlxuICAgICAgW2F0dHIuZW5hYmxlLWZpbGUtdXBsb2FkXT1cImVuYWJsZUZpbGVVcGxvYWQ/LnRvU3RyaW5nKClcIlxuICAgICAgW2F0dHIuZW5hYmxlLXNwZWVjaF09XCJlbmFibGVTcGVlY2g/LnRvU3RyaW5nKClcIlxuICAgICAgW2F0dHIuc2hvdy1wb3dlcmVkLWJ5XT1cInNob3dQb3dlcmVkQnk/LnRvU3RyaW5nKClcIj5cbiAgICA8L25lcmQtY2hhdC13aWRnZXQ+XG4gIGAsXG4gIHN0eWxlczogW11cbn0pXG5leHBvcnQgY2xhc3MgQ2hhdFdpZGdldENvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gIEBWaWV3Q2hpbGQoJ2NoYXRXaWRnZXQnLCB7IHN0YXRpYzogZmFsc2UgfSkgY2hhdFdpZGdldCE6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gIEBJbnB1dCgpIGFnZW50TmFtZTogc3RyaW5nID0gJ1N1cHBvcnQgQWdlbnQnO1xuICBASW5wdXQoKSBhZ2VudFJvbGU6IHN0cmluZyA9ICdDdXN0b21lciBTdXBwb3J0JztcbiAgQElucHV0KCkgcHJpbWFyeUNvbG9yOiBzdHJpbmcgPSAnIzJkM2U1MCc7XG4gIEBJbnB1dCgpIGFjY2VudENvbG9yOiBzdHJpbmcgPSAnIzRlOGNmZic7XG4gIEBJbnB1dCgpIHdlbGNvbWVNZXNzYWdlOiBzdHJpbmcgPSAnSGkhIEhvdyBjYW4gSSBoZWxwPyc7XG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyVGV4dDogc3RyaW5nID0gJ1R5cGUgeW91ciBtZXNzYWdlLi4uJztcbiAgQElucHV0KCkgcG9zaXRpb246IFdpZGdldFBvc2l0aW9uID0gJ2JvdHRvbS1yaWdodCc7XG4gIEBJbnB1dCgpIHdpZHRoOiBzdHJpbmcgPSAnMzUwJztcbiAgQElucHV0KCkgaGVpZ2h0OiBzdHJpbmcgPSAnNTAwJztcbiAgQElucHV0KCkgc2hvd01pbmltaXplQnV0dG9uOiBib29sZWFuID0gdHJ1ZTtcbiAgQElucHV0KCkgc2hvd1RpbWVzdGFtcHM6IGJvb2xlYW4gPSB0cnVlO1xuICBASW5wdXQoKSBlbmFibGVGaWxlVXBsb2FkOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGVuYWJsZVNwZWVjaDogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBzaG93UG93ZXJlZEJ5OiBib29sZWFuID0gdHJ1ZTtcblxuICBAT3V0cHV0KCkgbWVzc2FnZVNlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPHsgbWVzc2FnZTogc3RyaW5nOyB0aW1lc3RhbXA6IERhdGUgfT4oKTtcbiAgQE91dHB1dCgpIHdpZGdldE9wZW5lZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgQE91dHB1dCgpIHdpZGdldENsb3NlZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICBwcml2YXRlIGV2ZW50TGlzdGVuZXJzOiBBcnJheTwoKSA9PiB2b2lkPiA9IFtdO1xuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBpZiAodGhpcy5jaGF0V2lkZ2V0Py5uYXRpdmVFbGVtZW50KSB7XG4gICAgICB0aGlzLnNldHVwRXZlbnRMaXN0ZW5lcnMoKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXJzKCk7XG4gIH1cblxuICBwcml2YXRlIHNldHVwRXZlbnRMaXN0ZW5lcnMoKSB7XG4gICAgY29uc3Qgd2lkZ2V0ID0gdGhpcy5jaGF0V2lkZ2V0Lm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICBjb25zdCBtZXNzYWdlU2VudExpc3RlbmVyID0gKGV2ZW50OiBDdXN0b21FdmVudCkgPT4ge1xuICAgICAgdGhpcy5tZXNzYWdlU2VudC5lbWl0KGV2ZW50LmRldGFpbCk7XG4gICAgfTtcblxuICAgIGNvbnN0IHdpZGdldE9wZW5lZExpc3RlbmVyID0gKGV2ZW50OiBDdXN0b21FdmVudCkgPT4ge1xuICAgICAgdGhpcy53aWRnZXRPcGVuZWQuZW1pdCgpO1xuICAgIH07XG5cbiAgICBjb25zdCB3aWRnZXRDbG9zZWRMaXN0ZW5lciA9IChldmVudDogQ3VzdG9tRXZlbnQpID0+IHtcbiAgICAgIHRoaXMud2lkZ2V0Q2xvc2VkLmVtaXQoKTtcbiAgICB9O1xuXG4gICAgd2lkZ2V0LmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2VTZW50JywgbWVzc2FnZVNlbnRMaXN0ZW5lciBhcyBFdmVudExpc3RlbmVyKTtcbiAgICB3aWRnZXQuYWRkRXZlbnRMaXN0ZW5lcignd2lkZ2V0T3BlbmVkJywgd2lkZ2V0T3BlbmVkTGlzdGVuZXIgYXMgRXZlbnRMaXN0ZW5lcik7XG4gICAgd2lkZ2V0LmFkZEV2ZW50TGlzdGVuZXIoJ3dpZGdldENsb3NlZCcsIHdpZGdldENsb3NlZExpc3RlbmVyIGFzIEV2ZW50TGlzdGVuZXIpO1xuXG4gICAgLy8gU3RvcmUgY2xlYW51cCBmdW5jdGlvbnNcbiAgICB0aGlzLmV2ZW50TGlzdGVuZXJzID0gW1xuICAgICAgKCkgPT4gd2lkZ2V0LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21lc3NhZ2VTZW50JywgbWVzc2FnZVNlbnRMaXN0ZW5lciBhcyBFdmVudExpc3RlbmVyKSxcbiAgICAgICgpID0+IHdpZGdldC5yZW1vdmVFdmVudExpc3RlbmVyKCd3aWRnZXRPcGVuZWQnLCB3aWRnZXRPcGVuZWRMaXN0ZW5lciBhcyBFdmVudExpc3RlbmVyKSxcbiAgICAgICgpID0+IHdpZGdldC5yZW1vdmVFdmVudExpc3RlbmVyKCd3aWRnZXRDbG9zZWQnLCB3aWRnZXRDbG9zZWRMaXN0ZW5lciBhcyBFdmVudExpc3RlbmVyKSxcbiAgICBdO1xuICB9XG5cbiAgcHJpdmF0ZSByZW1vdmVFdmVudExpc3RlbmVycygpIHtcbiAgICB0aGlzLmV2ZW50TGlzdGVuZXJzLmZvckVhY2goY2xlYW51cCA9PiBjbGVhbnVwKCkpO1xuICAgIHRoaXMuZXZlbnRMaXN0ZW5lcnMgPSBbXTtcbiAgfVxufVxuIl19
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC13aWRnZXQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9jaGF0LXdpZGdldC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFOUQsb0NBQW9DO0FBQ3BDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDOztBQUVwRSxpREFBaUQ7QUFDakQsb0JBQW9CLEVBQUUsQ0FBQztBQWN2QixNQUFNLE9BQU8sb0JBQW9CO3dHQUFwQixvQkFBb0I7eUdBQXBCLG9CQUFvQixpQkFWN0IsbUJBQW1CLGFBR25CLFlBQVksYUFHWixtQkFBbUI7eUdBSVYsb0JBQW9CLFlBUDdCLFlBQVk7OzRGQU9ILG9CQUFvQjtrQkFaaEMsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUU7d0JBQ1osbUJBQW1CO3FCQUNwQjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsWUFBWTtxQkFDYjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsbUJBQW1CO3FCQUNwQjtvQkFDRCxPQUFPLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQztpQkFDbEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSwgQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENoYXRXaWRnZXRDb21wb25lbnQgfSBmcm9tICcuL2NoYXQtd2lkZ2V0LmNvbXBvbmVudCc7XG5cbi8vIEltcG9ydCBhbmQgZGVmaW5lIGN1c3RvbSBlbGVtZW50c1xuaW1wb3J0IHsgZGVmaW5lQ3VzdG9tRWxlbWVudHMgfSBmcm9tICduZXJkYWdlbnQtY2hhdC13aWRnZXQvbG9hZGVyJztcblxuLy8gRGVmaW5lIGN1c3RvbSBlbGVtZW50cyB3aGVuIG1vZHVsZSBpcyBpbXBvcnRlZFxuZGVmaW5lQ3VzdG9tRWxlbWVudHMoKTtcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbXG4gICAgQ2hhdFdpZGdldENvbXBvbmVudFxuICBdLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlXG4gIF0sXG4gIGV4cG9ydHM6IFtcbiAgICBDaGF0V2lkZ2V0Q29tcG9uZW50XG4gIF0sXG4gIHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXVxufSlcbmV4cG9ydCBjbGFzcyBOZXJkQ2hhdFdpZGdldE1vZHVsZSB7IH1cbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC13aWRnZXQudHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2NoYXQtd2lkZ2V0LnR5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdHlwZSBXaWRnZXRQb3NpdGlvbiA9ICdib3R0b20tcmlnaHQnIHwgJ2JvdHRvbS1sZWZ0JyB8ICd0b3AtcmlnaHQnIHwgJ3RvcC1sZWZ0JztcblxuZXhwb3J0IGludGVyZmFjZSBDaGF0V2lkZ2V0Q29uZmlnIHtcbiAgYWdlbnROYW1lPzogc3RyaW5nO1xuICBhZ2VudFJvbGU/OiBzdHJpbmc7XG4gIHByaW1hcnlDb2xvcj86IHN0cmluZztcbiAgYWNjZW50Q29sb3I/OiBzdHJpbmc7XG4gIHdlbGNvbWVNZXNzYWdlPzogc3RyaW5nO1xuICBwbGFjZWhvbGRlclRleHQ/OiBzdHJpbmc7XG4gIHBvc2l0aW9uPzogV2lkZ2V0UG9zaXRpb247XG4gIHdpZHRoPzogc3RyaW5nO1xuICBoZWlnaHQ/OiBzdHJpbmc7XG4gIHNob3dNaW5pbWl6ZUJ1dHRvbj86IGJvb2xlYW47XG4gIHNob3dUaW1lc3RhbXBzPzogYm9vbGVhbjtcbiAgZW5hYmxlRmlsZVVwbG9hZD86IGJvb2xlYW47XG4gIGVuYWJsZVNwZWVjaD86IGJvb2xlYW47XG4gIHNob3dQb3dlcmVkQnk/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENoYXRXaWRnZXRFdmVudHMge1xuICBtZXNzYWdlU2VudDogQ3VzdG9tRXZlbnQ8eyBtZXNzYWdlOiBzdHJpbmc7IHRpbWVzdGFtcDogRGF0ZSB9PjtcbiAgd2lkZ2V0T3BlbmVkOiBDdXN0b21FdmVudDx2b2lkPjtcbiAgd2lkZ2V0Q2xvc2VkOiBDdXN0b21FdmVudDx2b2lkPjtcbn1cbiJdfQ==
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './index';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmVyZGFnZW50LWNoYXQtd2lkZ2V0LWFuZ3VsYXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbmVyZGFnZW50LWNoYXQtd2lkZ2V0LWFuZ3VsYXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9pbmRleCc7XG4iXX0=
@@ -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":["../../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, 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
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nerdagent-chat-widget-angular",
3
- "version": "1.0.2",
3
+ "version": "1.0.4",
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": "tsc",
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": "baebff96671fd060b15aa0ca587f2c9a1556c06b"
43
+ "gitHead": "f46abd47a7632d8fc690b202bfc7c202bcb8b18f"
43
44
  }
package/dist/index.js DELETED
@@ -1,3 +0,0 @@
1
- export { NerdChatWidgetModule } from './lib/chat-widget.module';
2
- export { ChatWidgetComponent } from './lib/chat-widget.component';
3
- export * from './lib/chat-widget.types';
@@ -1,163 +0,0 @@
1
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
- return c > 3 && r && Object.defineProperty(target, key, r), r;
6
- };
7
- var __metadata = (this && this.__metadata) || function (k, v) {
8
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
- };
10
- import { Component, Input, Output, EventEmitter, ElementRef, ViewChild } from '@angular/core';
11
- let ChatWidgetComponent = class ChatWidgetComponent {
12
- constructor() {
13
- this.agentName = 'Support Agent';
14
- this.agentRole = 'Customer Support';
15
- this.primaryColor = '#2d3e50';
16
- this.accentColor = '#4e8cff';
17
- this.welcomeMessage = 'Hi! How can I help?';
18
- this.placeholderText = 'Type your message...';
19
- this.position = 'bottom-right';
20
- this.width = '350';
21
- this.height = '500';
22
- this.showMinimizeButton = true;
23
- this.showTimestamps = true;
24
- this.enableFileUpload = false;
25
- this.enableSpeech = false;
26
- this.showPoweredBy = true;
27
- this.messageSent = new EventEmitter();
28
- this.widgetOpened = new EventEmitter();
29
- this.widgetClosed = new EventEmitter();
30
- this.eventListeners = [];
31
- }
32
- ngAfterViewInit() {
33
- if (this.chatWidget?.nativeElement) {
34
- this.setupEventListeners();
35
- }
36
- }
37
- ngOnDestroy() {
38
- this.removeEventListeners();
39
- }
40
- setupEventListeners() {
41
- const widget = this.chatWidget.nativeElement;
42
- const messageSentListener = (event) => {
43
- this.messageSent.emit(event.detail);
44
- };
45
- const widgetOpenedListener = (event) => {
46
- this.widgetOpened.emit();
47
- };
48
- const widgetClosedListener = (event) => {
49
- this.widgetClosed.emit();
50
- };
51
- widget.addEventListener('messageSent', messageSentListener);
52
- widget.addEventListener('widgetOpened', widgetOpenedListener);
53
- widget.addEventListener('widgetClosed', widgetClosedListener);
54
- // Store cleanup functions
55
- this.eventListeners = [
56
- () => widget.removeEventListener('messageSent', messageSentListener),
57
- () => widget.removeEventListener('widgetOpened', widgetOpenedListener),
58
- () => widget.removeEventListener('widgetClosed', widgetClosedListener),
59
- ];
60
- }
61
- removeEventListeners() {
62
- this.eventListeners.forEach(cleanup => cleanup());
63
- this.eventListeners = [];
64
- }
65
- };
66
- __decorate([
67
- ViewChild('chatWidget', { static: false }),
68
- __metadata("design:type", ElementRef)
69
- ], ChatWidgetComponent.prototype, "chatWidget", void 0);
70
- __decorate([
71
- Input(),
72
- __metadata("design:type", String)
73
- ], ChatWidgetComponent.prototype, "agentName", void 0);
74
- __decorate([
75
- Input(),
76
- __metadata("design:type", String)
77
- ], ChatWidgetComponent.prototype, "agentRole", void 0);
78
- __decorate([
79
- Input(),
80
- __metadata("design:type", String)
81
- ], ChatWidgetComponent.prototype, "primaryColor", void 0);
82
- __decorate([
83
- Input(),
84
- __metadata("design:type", String)
85
- ], ChatWidgetComponent.prototype, "accentColor", void 0);
86
- __decorate([
87
- Input(),
88
- __metadata("design:type", String)
89
- ], ChatWidgetComponent.prototype, "welcomeMessage", void 0);
90
- __decorate([
91
- Input(),
92
- __metadata("design:type", String)
93
- ], ChatWidgetComponent.prototype, "placeholderText", void 0);
94
- __decorate([
95
- Input(),
96
- __metadata("design:type", String)
97
- ], ChatWidgetComponent.prototype, "position", void 0);
98
- __decorate([
99
- Input(),
100
- __metadata("design:type", String)
101
- ], ChatWidgetComponent.prototype, "width", void 0);
102
- __decorate([
103
- Input(),
104
- __metadata("design:type", String)
105
- ], ChatWidgetComponent.prototype, "height", void 0);
106
- __decorate([
107
- Input(),
108
- __metadata("design:type", Boolean)
109
- ], ChatWidgetComponent.prototype, "showMinimizeButton", void 0);
110
- __decorate([
111
- Input(),
112
- __metadata("design:type", Boolean)
113
- ], ChatWidgetComponent.prototype, "showTimestamps", void 0);
114
- __decorate([
115
- Input(),
116
- __metadata("design:type", Boolean)
117
- ], ChatWidgetComponent.prototype, "enableFileUpload", void 0);
118
- __decorate([
119
- Input(),
120
- __metadata("design:type", Boolean)
121
- ], ChatWidgetComponent.prototype, "enableSpeech", void 0);
122
- __decorate([
123
- Input(),
124
- __metadata("design:type", Boolean)
125
- ], ChatWidgetComponent.prototype, "showPoweredBy", void 0);
126
- __decorate([
127
- Output(),
128
- __metadata("design:type", Object)
129
- ], ChatWidgetComponent.prototype, "messageSent", void 0);
130
- __decorate([
131
- Output(),
132
- __metadata("design:type", Object)
133
- ], ChatWidgetComponent.prototype, "widgetOpened", void 0);
134
- __decorate([
135
- Output(),
136
- __metadata("design:type", Object)
137
- ], ChatWidgetComponent.prototype, "widgetClosed", void 0);
138
- ChatWidgetComponent = __decorate([
139
- Component({
140
- selector: 'nerd-chat-widget',
141
- template: `
142
- <nerd-chat-widget
143
- #chatWidget
144
- [attr.agent-name]="agentName"
145
- [attr.agent-role]="agentRole"
146
- [attr.primary-color]="primaryColor"
147
- [attr.accent-color]="accentColor"
148
- [attr.welcome-message]="welcomeMessage"
149
- [attr.placeholder-text]="placeholderText"
150
- [attr.position]="position"
151
- [attr.width]="width"
152
- [attr.height]="height"
153
- [attr.show-minimize-button]="showMinimizeButton?.toString()"
154
- [attr.show-timestamps]="showTimestamps?.toString()"
155
- [attr.enable-file-upload]="enableFileUpload?.toString()"
156
- [attr.enable-speech]="enableSpeech?.toString()"
157
- [attr.show-powered-by]="showPoweredBy?.toString()">
158
- </nerd-chat-widget>
159
- `,
160
- styles: []
161
- })
162
- ], ChatWidgetComponent);
163
- export { ChatWidgetComponent };
@@ -1,30 +0,0 @@
1
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
- return c > 3 && r && Object.defineProperty(target, key, r), r;
6
- };
7
- import { NgModule, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
8
- import { CommonModule } from '@angular/common';
9
- import { ChatWidgetComponent } from './chat-widget.component';
10
- // Import and define custom elements
11
- import { defineCustomElements } from 'nerdagent-chat-widget/loader';
12
- // Define custom elements when module is imported
13
- defineCustomElements();
14
- let NerdChatWidgetModule = class NerdChatWidgetModule {
15
- };
16
- NerdChatWidgetModule = __decorate([
17
- NgModule({
18
- declarations: [
19
- ChatWidgetComponent
20
- ],
21
- imports: [
22
- CommonModule
23
- ],
24
- exports: [
25
- ChatWidgetComponent
26
- ],
27
- schemas: [CUSTOM_ELEMENTS_SCHEMA]
28
- })
29
- ], NerdChatWidgetModule);
30
- export { NerdChatWidgetModule };
@@ -1 +0,0 @@
1
- export {};