@aakash58/chatbot 1.1.16 → 1.1.18
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/esm2022/aakash58-chatbot.mjs +5 -0
- package/esm2022/lib/app/chat/chat-ui-state.service.mjs +170 -0
- package/esm2022/lib/app/chat/chat.service.mjs +445 -0
- package/esm2022/lib/app/chat/components/chat-button/chat-button.component.mjs +50 -0
- package/esm2022/lib/app/chat/components/chat-footer/chat-footer.component.mjs +12 -0
- package/esm2022/lib/app/chat/components/chat-header/chat-header.component.mjs +66 -0
- package/esm2022/lib/app/chat/components/chat-history-sidebar/chat-history-sidebar.component.mjs +186 -0
- package/esm2022/lib/app/chat/components/chat-window/chat-window.component.mjs +312 -0
- package/esm2022/lib/app/chat/components/message-input/message-input.component.mjs +36 -0
- package/esm2022/lib/app/chat/components/message-list/message-list.component.mjs +115 -0
- package/esm2022/lib/app/chat/model/chat-history.model.mjs +2 -0
- package/esm2022/lib/app/chat/model/chat-request.model.mjs +2 -0
- package/esm2022/lib/app/chat/model/chat-response.model.mjs +2 -0
- package/esm2022/lib/app/chat/model/chat-session.model.mjs +2 -0
- package/esm2022/lib/app/chat/model/chat-stream-message.model.mjs +2 -0
- package/esm2022/lib/app/chat/model/chat-stream-response.model.mjs +2 -0
- package/esm2022/lib/app/chat/services/chat-api.service.mjs +61 -0
- package/esm2022/lib/app/chat/services/chat-audio.service.mjs +50 -0
- package/esm2022/lib/app/chat/services/chat-history.service.mjs +252 -0
- package/esm2022/lib/app/login/login-form.component.mjs +46 -0
- package/esm2022/lib/app/personalization/personalization-dialog.component.mjs +194 -0
- package/esm2022/lib/app/personalization/personalization.service.mjs +149 -0
- package/esm2022/lib/app/personalization/sections/account/account-section.component.mjs +122 -0
- package/esm2022/lib/app/personalization/sections/preferences/color-picker-dialog.component.mjs +86 -0
- package/esm2022/lib/app/personalization/sections/preferences/preferences-section.component.mjs +115 -0
- package/esm2022/lib/app/personalization/sections/profile/profile-section.component.mjs +29 -0
- package/esm2022/lib/app/personalization/sections/settings/setting-section.component.mjs +30 -0
- package/esm2022/lib/app/personalization/sections/terms/terms-section.component.mjs +12 -0
- package/esm2022/lib/constant/doohbot-constant.mjs +28 -0
- package/esm2022/lib/constant/html-entities.mjs +9 -0
- package/esm2022/lib/constant/utf8.mjs +10 -0
- package/esm2022/lib/core/app-const.mjs +61 -0
- package/esm2022/lib/core/auth/account-api.service.mjs +40 -0
- package/esm2022/lib/core/auth/auth.service.mjs +391 -0
- package/esm2022/lib/core/auth/models/auth-result.model.mjs +3 -0
- package/esm2022/lib/core/auth/models/federated-login-request.model.mjs +6 -0
- package/esm2022/lib/core/auth/models/login-request.model.mjs +6 -0
- package/esm2022/lib/core/auth/storage.service.mjs +110 -0
- package/esm2022/lib/core/directives/draggable/draggable-dialog.directive.mjs +112 -0
- package/esm2022/lib/core/directives/fullscreen/fullscreen.directive.mjs +55 -0
- package/esm2022/lib/core/directives/resizable/resizable-dialog.directive.mjs +179 -0
- package/esm2022/lib/core/environments/environment.mjs +15 -0
- package/esm2022/lib/core/environments/environment.prod.mjs +15 -0
- package/esm2022/lib/core/helpers/crypto-helper.service.mjs +52 -0
- package/esm2022/lib/core/http/http-stream.service.mjs +97 -0
- package/esm2022/lib/core/http/http.service.mjs +103 -0
- package/esm2022/lib/core/interceptors/auth.interceptor.mjs +96 -0
- package/esm2022/lib/core/interceptors/license.interceptor.mjs +44 -0
- package/esm2022/lib/core/models/api-config.model.mjs +18 -0
- package/esm2022/lib/core/models/api-request.model.mjs +2 -0
- package/esm2022/lib/core/models/api-response.model.mjs +8 -0
- package/esm2022/lib/core/models/doohbot-config.model.mjs +18 -0
- package/esm2022/lib/core/models/license.model.mjs +2 -0
- package/esm2022/lib/core/models/message.mjs +2 -0
- package/esm2022/lib/core/models/theme-config.model.mjs +2 -0
- package/esm2022/lib/core/services/core-config.service.mjs +52 -0
- package/esm2022/lib/core/services/license.service.mjs +145 -0
- package/esm2022/lib/core/services/markdown.service.mjs +64 -0
- package/esm2022/lib/core/services/theme.service.mjs +248 -0
- package/esm2022/lib/core/types/auth-mode.type.mjs +2 -0
- package/esm2022/lib/core/types/auth-status.type.mjs +5 -0
- package/esm2022/lib/core/types/chat-stream.type.mjs +2 -0
- package/esm2022/lib/core/types/message-role.type.mjs +2 -0
- package/esm2022/lib/core/types/prompt-mode.type.mjs +5 -0
- package/esm2022/lib/core/types/snackbar-error.type.mjs +5 -0
- package/esm2022/lib/core/types/tenant-resolution-strategy.type.mjs +2 -0
- package/esm2022/lib/core/utils/logger.service.mjs +42 -0
- package/esm2022/lib/doohbot-input.mjs +20 -0
- package/esm2022/lib/doohbot.component.mjs +444 -0
- package/esm2022/lib/predefined_messages.mjs +15 -0
- package/esm2022/lib/shared/chips/chips.component.mjs +28 -0
- package/esm2022/lib/shared/dialog/dialog.component.mjs +36 -0
- package/esm2022/lib/shared/dialog/dialog.service.mjs +64 -0
- package/esm2022/lib/shared/dialog/dialog.utils.mjs +85 -0
- package/esm2022/lib/shared/dropdown-menu/dropdown-menu.component.mjs +29 -0
- package/esm2022/lib/shared/input-dialog/input-dialog.component.mjs +38 -0
- package/esm2022/lib/shared/menu-item/menu-item.component.mjs +24 -0
- package/esm2022/lib/shared/pipes/simple-markdown.pipe.mjs +27 -0
- package/esm2022/lib/shared/snackbar/snackbar.component.mjs +43 -0
- package/esm2022/lib/shared/snackbar/snackbar.service.mjs +46 -0
- package/esm2022/lib/shared/snackbar/snackbar.utils.mjs +43 -0
- package/esm2022/public-api.mjs +37 -0
- package/fesm2022/aakash58-chatbot.mjs +1037 -827
- package/fesm2022/aakash58-chatbot.mjs.map +1 -1
- package/index.d.ts +3 -373
- package/lib/app/chat/chat-ui-state.service.d.ts +96 -0
- package/lib/app/chat/chat.service.d.ts +88 -0
- package/lib/app/chat/components/chat-button/chat-button.component.d.ts +16 -0
- package/lib/app/chat/components/chat-footer/chat-footer.component.d.ts +5 -0
- package/lib/app/chat/components/chat-header/chat-header.component.d.ts +24 -0
- package/lib/app/chat/components/chat-history-sidebar/chat-history-sidebar.component.d.ts +49 -0
- package/lib/app/chat/components/chat-window/chat-window.component.d.ts +107 -0
- package/lib/app/chat/components/message-input/message-input.component.d.ts +12 -0
- package/lib/app/chat/components/message-list/message-list.component.d.ts +40 -0
- package/lib/app/chat/model/chat-history.model.d.ts +51 -0
- package/lib/app/chat/model/chat-request.model.d.ts +10 -0
- package/lib/app/chat/model/chat-response.model.d.ts +9 -0
- package/lib/app/chat/model/chat-session.model.d.ts +12 -0
- package/lib/app/chat/model/chat-stream-message.model.d.ts +5 -0
- package/lib/app/chat/model/chat-stream-response.model.d.ts +10 -0
- package/lib/app/chat/services/chat-api.service.d.ts +30 -0
- package/lib/app/chat/services/chat-audio.service.d.ts +19 -0
- package/lib/app/chat/services/chat-history.service.d.ts +53 -0
- package/lib/app/login/login-form.component.d.ts +20 -0
- package/lib/app/personalization/personalization-dialog.component.d.ts +53 -0
- package/lib/app/personalization/personalization.service.d.ts +66 -0
- package/lib/app/personalization/sections/account/account-section.component.d.ts +30 -0
- package/lib/app/personalization/sections/preferences/color-picker-dialog.component.d.ts +17 -0
- package/lib/app/personalization/sections/preferences/preferences-section.component.d.ts +27 -0
- package/lib/app/personalization/sections/profile/profile-section.component.d.ts +17 -0
- package/lib/app/personalization/sections/settings/setting-section.component.d.ts +10 -0
- package/lib/app/personalization/sections/terms/terms-section.component.d.ts +5 -0
- package/lib/constant/doohbot-constant.d.ts +12 -0
- package/lib/constant/html-entities.d.ts +8 -0
- package/lib/constant/utf8.d.ts +9 -0
- package/lib/core/app-const.d.ts +11 -0
- package/lib/core/auth/account-api.service.d.ts +20 -0
- package/lib/core/auth/auth.service.d.ts +90 -0
- package/lib/core/auth/models/auth-result.model.d.ts +4 -0
- package/lib/core/auth/models/federated-login-request.model.d.ts +5 -0
- package/lib/core/auth/models/login-request.model.d.ts +6 -0
- package/lib/core/auth/storage.service.d.ts +21 -0
- package/lib/core/directives/draggable/draggable-dialog.directive.d.ts +23 -0
- package/lib/core/directives/fullscreen/fullscreen.directive.d.ts +14 -0
- package/lib/core/directives/resizable/resizable-dialog.directive.d.ts +30 -0
- package/lib/core/environments/environment.d.ts +7 -0
- package/lib/core/environments/environment.prod.d.ts +7 -0
- package/lib/core/helpers/crypto-helper.service.d.ts +12 -0
- package/lib/core/http/http-stream.service.d.ts +18 -0
- package/lib/core/http/http.service.d.ts +20 -0
- package/lib/core/interceptors/auth.interceptor.d.ts +18 -0
- package/lib/core/interceptors/license.interceptor.d.ts +11 -0
- package/lib/core/models/api-config.model.d.ts +58 -0
- package/lib/core/models/api-request.model.d.ts +77 -0
- package/lib/core/models/api-response.model.d.ts +6 -0
- package/lib/core/models/doohbot-config.model.d.ts +81 -0
- package/lib/core/models/license.model.d.ts +23 -0
- package/lib/core/models/message.d.ts +16 -0
- package/lib/core/models/theme-config.model.d.ts +28 -0
- package/lib/core/services/core-config.service.d.ts +23 -0
- package/lib/core/services/license.service.d.ts +33 -0
- package/lib/core/services/markdown.service.d.ts +8 -0
- package/lib/core/services/theme.service.d.ts +40 -0
- package/lib/core/types/auth-mode.type.d.ts +4 -0
- package/lib/core/types/auth-status.type.d.ts +4 -0
- package/lib/core/types/chat-stream.type.d.ts +4 -0
- package/lib/core/types/message-role.type.d.ts +4 -0
- package/lib/core/types/prompt-mode.type.d.ts +4 -0
- package/lib/core/types/snackbar-error.type.d.ts +4 -0
- package/lib/core/types/tenant-resolution-strategy.type.d.ts +4 -0
- package/lib/core/utils/logger.service.d.ts +11 -0
- package/lib/doohbot-input.d.ts +19 -0
- package/lib/doohbot.component.d.ts +108 -0
- package/lib/predefined_messages.d.ts +2 -0
- package/lib/shared/chips/chips.component.d.ts +10 -0
- package/lib/shared/dialog/dialog.component.d.ts +19 -0
- package/lib/shared/dialog/dialog.service.d.ts +29 -0
- package/lib/shared/dialog/dialog.utils.d.ts +41 -0
- package/lib/shared/dropdown-menu/dropdown-menu.component.d.ts +11 -0
- package/lib/shared/input-dialog/input-dialog.component.d.ts +20 -0
- package/lib/shared/menu-item/menu-item.component.d.ts +9 -0
- package/lib/shared/pipes/simple-markdown.pipe.d.ts +10 -0
- package/lib/shared/snackbar/snackbar.component.d.ts +14 -0
- package/lib/shared/snackbar/snackbar.service.d.ts +19 -0
- package/lib/shared/snackbar/snackbar.utils.d.ts +33 -0
- package/package.json +4 -2
- package/public-api.d.ts +11 -0
|
@@ -0,0 +1,312 @@
|
|
|
1
|
+
import { Component, EventEmitter, Input, Output, } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { MatIconModule } from '@angular/material/icon';
|
|
4
|
+
import { MatMenuModule } from '@angular/material/menu';
|
|
5
|
+
import { MatDialog, MatDialogModule } from '@angular/material/dialog';
|
|
6
|
+
import { MessageListComponent } from '../message-list/message-list.component';
|
|
7
|
+
import { MessageInputComponent } from '../message-input/message-input.component';
|
|
8
|
+
import { inject } from '@angular/core';
|
|
9
|
+
import { ChatHistorySidebarComponent } from '../chat-history-sidebar/chat-history-sidebar.component';
|
|
10
|
+
import { FormsModule } from '@angular/forms';
|
|
11
|
+
import { AuthService } from '../../../../core/auth/auth.service';
|
|
12
|
+
import { DraggableDialogDirective } from '../../../../core/directives/draggable/draggable-dialog.directive';
|
|
13
|
+
import { ResizableDialogDirective } from '../../../../core/directives/resizable/resizable-dialog.directive';
|
|
14
|
+
import { ThemeService } from '../../../../core/services/theme.service';
|
|
15
|
+
import { ChatHeaderComponent } from '../chat-header/chat-header.component';
|
|
16
|
+
import { LoginFormComponent } from '../../../login/login-form.component';
|
|
17
|
+
import { ChatFooterComponent } from '../chat-footer/chat-footer.component';
|
|
18
|
+
import logger from '../../../../core/utils/logger.service';
|
|
19
|
+
import { Chips } from '../../../../shared/chips/chips.component';
|
|
20
|
+
import { PersonalizationDialogComponent } from '../../../personalization/personalization-dialog.component';
|
|
21
|
+
import * as i0 from "@angular/core";
|
|
22
|
+
import * as i1 from "@angular/material/icon";
|
|
23
|
+
import * as i2 from "@angular/material/menu";
|
|
24
|
+
export class ChatWindowComponent {
|
|
25
|
+
get canDrag() {
|
|
26
|
+
return this.enableDrag && this.buttonStyle === 'fab' && !this.isFullScreen;
|
|
27
|
+
}
|
|
28
|
+
get canResize() {
|
|
29
|
+
return this.enableResize && this.buttonStyle === 'fab' && !this.isFullScreen;
|
|
30
|
+
}
|
|
31
|
+
constructor() {
|
|
32
|
+
this.isChatOpen = false;
|
|
33
|
+
this.enableDrag = false;
|
|
34
|
+
this.enableResize = false;
|
|
35
|
+
this.isFullScreen = false;
|
|
36
|
+
this.isStreaming = true;
|
|
37
|
+
this.isAuthenticated = false;
|
|
38
|
+
this.appTitle = '';
|
|
39
|
+
this.appLogoUrl = '';
|
|
40
|
+
this.appTextLogoUrl = '';
|
|
41
|
+
this.appHeaderLogoUrl = '';
|
|
42
|
+
this.messages = [];
|
|
43
|
+
this.isBotTyping = false;
|
|
44
|
+
this.appSubtitle = '';
|
|
45
|
+
this.welcomeDesc = '';
|
|
46
|
+
this.predefinedMessages = [];
|
|
47
|
+
this.suggestedMessages = [];
|
|
48
|
+
this.botAvatarUrl = '';
|
|
49
|
+
this.userAvatarUrl = '';
|
|
50
|
+
this.userName = '';
|
|
51
|
+
this.trackByMessageId = (index, item) => item.id ?? index;
|
|
52
|
+
this.hintText = '';
|
|
53
|
+
this.messageError = null;
|
|
54
|
+
this.showSuggestionChips = false;
|
|
55
|
+
this.isHistorySidebarOpen = false;
|
|
56
|
+
this.chatSessions = [];
|
|
57
|
+
this.chatHistoryUserName = 'User';
|
|
58
|
+
this.isLoggingIn = false;
|
|
59
|
+
this.authError = null;
|
|
60
|
+
this.authSuccess = null;
|
|
61
|
+
this.isLoadingSessions = false;
|
|
62
|
+
this.hasMoreSessions = false;
|
|
63
|
+
this.isLoadingMoreSessions = false;
|
|
64
|
+
this.processingSessionId = null;
|
|
65
|
+
this.buttonStyle = 'fab';
|
|
66
|
+
this.toggleChat = new EventEmitter();
|
|
67
|
+
this.toggleFullScreen = new EventEmitter();
|
|
68
|
+
this.toggleHistorySidebar = new EventEmitter();
|
|
69
|
+
this.openSettings = new EventEmitter();
|
|
70
|
+
this.suggestionClick = new EventEmitter();
|
|
71
|
+
this.send = new EventEmitter();
|
|
72
|
+
this.stop = new EventEmitter();
|
|
73
|
+
this.clearMessageError = new EventEmitter();
|
|
74
|
+
this.clearChat = new EventEmitter();
|
|
75
|
+
this.sessionSelected = new EventEmitter();
|
|
76
|
+
this.sessionDeleted = new EventEmitter();
|
|
77
|
+
this.loadMoreSessions = new EventEmitter();
|
|
78
|
+
this.refreshSessions = new EventEmitter();
|
|
79
|
+
this.sessionRenamed = new EventEmitter();
|
|
80
|
+
this.deleteAllSessions = new EventEmitter();
|
|
81
|
+
this.loginSubmit = new EventEmitter();
|
|
82
|
+
this.logout = new EventEmitter();
|
|
83
|
+
this.themeService = inject(ThemeService);
|
|
84
|
+
this.authService = inject(AuthService);
|
|
85
|
+
this.dialog = inject(MatDialog);
|
|
86
|
+
// UI state
|
|
87
|
+
this.showLoginForm = false;
|
|
88
|
+
}
|
|
89
|
+
onToggleChat() {
|
|
90
|
+
this.toggleChat.emit();
|
|
91
|
+
}
|
|
92
|
+
onToggleHistorySidebar() {
|
|
93
|
+
logger.log('History button clicked!');
|
|
94
|
+
this.toggleHistorySidebar.emit();
|
|
95
|
+
}
|
|
96
|
+
onLoginClick() {
|
|
97
|
+
this.showLoginForm = true;
|
|
98
|
+
}
|
|
99
|
+
onLoginSubmit(credentials) {
|
|
100
|
+
this.loginSubmit.emit(credentials);
|
|
101
|
+
}
|
|
102
|
+
onCancelLogin() {
|
|
103
|
+
this.showLoginForm = false;
|
|
104
|
+
}
|
|
105
|
+
onToggleFullScreen() {
|
|
106
|
+
this.toggleFullScreen.emit();
|
|
107
|
+
}
|
|
108
|
+
onOpenSettings() {
|
|
109
|
+
this.openSettings.emit();
|
|
110
|
+
}
|
|
111
|
+
onOpenPersonalization() {
|
|
112
|
+
this.dialog.open(PersonalizationDialogComponent, {
|
|
113
|
+
width: '1100px',
|
|
114
|
+
height: '700px',
|
|
115
|
+
maxWidth: '95vw',
|
|
116
|
+
panelClass: 'personalization-dialog-panel',
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
onSuggestionClick(text) {
|
|
120
|
+
this.suggestionClick.emit(text);
|
|
121
|
+
}
|
|
122
|
+
onSend(text) {
|
|
123
|
+
this.send.emit(text);
|
|
124
|
+
}
|
|
125
|
+
onStop() {
|
|
126
|
+
this.stop.emit();
|
|
127
|
+
}
|
|
128
|
+
onClearMessageError() {
|
|
129
|
+
this.messageError = null;
|
|
130
|
+
this.clearMessageError.emit();
|
|
131
|
+
}
|
|
132
|
+
onClearAuthError() {
|
|
133
|
+
this.clearMessageError.emit();
|
|
134
|
+
}
|
|
135
|
+
onClearChat() {
|
|
136
|
+
this.clearChat.emit();
|
|
137
|
+
}
|
|
138
|
+
onLogout() {
|
|
139
|
+
this.logout.emit();
|
|
140
|
+
}
|
|
141
|
+
onSessionSelected(session) {
|
|
142
|
+
this.sessionSelected.emit(session);
|
|
143
|
+
}
|
|
144
|
+
onSessionDeleted(sessionId) {
|
|
145
|
+
this.sessionDeleted.emit(sessionId);
|
|
146
|
+
}
|
|
147
|
+
onSessionRenamed(event) {
|
|
148
|
+
this.sessionRenamed.emit(event);
|
|
149
|
+
}
|
|
150
|
+
onDeleteAllSessions() {
|
|
151
|
+
this.deleteAllSessions.emit();
|
|
152
|
+
}
|
|
153
|
+
onPopoutShown(win) {
|
|
154
|
+
// Apply theme classes
|
|
155
|
+
const activeTheme = this.themeService.activeTheme();
|
|
156
|
+
logger.log('Popout shown, applying theme:', activeTheme);
|
|
157
|
+
const body = win.document.body;
|
|
158
|
+
// We cannot use renderer easily on another document without custom renderer factory,
|
|
159
|
+
// but native DOM manipulation is fine here since it's a separate window object.
|
|
160
|
+
body.classList.remove('light-theme', 'dark-theme');
|
|
161
|
+
body.classList.add(activeTheme);
|
|
162
|
+
// Apply CSS variables
|
|
163
|
+
this.themeService.applyCssVariables(body, this.themeConfig);
|
|
164
|
+
}
|
|
165
|
+
ngOnInit() {
|
|
166
|
+
// Initialization logic if needed
|
|
167
|
+
}
|
|
168
|
+
ngOnChanges(changes) {
|
|
169
|
+
//? Handle authentication status changes
|
|
170
|
+
if (changes['isAuthenticated']) {
|
|
171
|
+
if (this.isAuthenticated) {
|
|
172
|
+
this.showLoginForm = false;
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
//? Handle logging in status changes
|
|
176
|
+
if (changes['isLoggingIn']) {
|
|
177
|
+
if (this.isLoggingIn) {
|
|
178
|
+
this.showLoginForm = false;
|
|
179
|
+
}
|
|
180
|
+
else if (!this.isAuthenticated && !changes['isLoggingIn'].firstChange) {
|
|
181
|
+
this.showLoginForm = true;
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
ngOnDestroy() { }
|
|
186
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ChatWindowComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
187
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: ChatWindowComponent, isStandalone: true, selector: "app-chat-window", inputs: { isChatOpen: "isChatOpen", enableDrag: "enableDrag", enableResize: "enableResize", isFullScreen: "isFullScreen", isStreaming: "isStreaming", isAuthenticated: "isAuthenticated", appTitle: "appTitle", appLogoUrl: "appLogoUrl", appTextLogoUrl: "appTextLogoUrl", appHeaderLogoUrl: "appHeaderLogoUrl", messages: "messages", isBotTyping: "isBotTyping", appSubtitle: "appSubtitle", welcomeDesc: "welcomeDesc", predefinedMessages: "predefinedMessages", suggestedMessages: "suggestedMessages", botAvatarUrl: "botAvatarUrl", userAvatarUrl: "userAvatarUrl", userName: "userName", trackByMessageId: "trackByMessageId", hintText: "hintText", messageError: "messageError", showSuggestionChips: "showSuggestionChips", isHistorySidebarOpen: "isHistorySidebarOpen", chatSessions: "chatSessions", chatHistoryUserName: "chatHistoryUserName", isLoggingIn: "isLoggingIn", authError: "authError", authSuccess: "authSuccess", isLoadingSessions: "isLoadingSessions", hasMoreSessions: "hasMoreSessions", isLoadingMoreSessions: "isLoadingMoreSessions", processingSessionId: "processingSessionId", themeConfig: "themeConfig", buttonStyle: "buttonStyle" }, outputs: { toggleChat: "toggleChat", toggleFullScreen: "toggleFullScreen", toggleHistorySidebar: "toggleHistorySidebar", openSettings: "openSettings", suggestionClick: "suggestionClick", send: "send", stop: "stop", clearMessageError: "clearMessageError", clearChat: "clearChat", sessionSelected: "sessionSelected", sessionDeleted: "sessionDeleted", loadMoreSessions: "loadMoreSessions", refreshSessions: "refreshSessions", sessionRenamed: "sessionRenamed", deleteAllSessions: "deleteAllSessions", loginSubmit: "loginSubmit", logout: "logout" }, usesOnChanges: true, ngImport: i0, template: "@if (isChatOpen) {\r\n <div\r\n draggableDialog\r\n [enableDrag]=\"canDrag\"\r\n resizableDialog\r\n [enableResize]=\"canResize\"\r\n class=\"chat-window\"\r\n [class.fullscreen]=\"isFullScreen\"\r\n [class.layout-sidebar]=\"buttonStyle.includes('sidebar')\"\r\n >\r\n <!-- chat window header -->\r\n <app-chat-header\r\n [appHeaderLogoUrl]=\"appHeaderLogoUrl\"\r\n [isAuthenticated]=\"isAuthenticated\"\r\n [isFullScreen]=\"isFullScreen\"\r\n [settingsMenu]=\"settingsMenu\"\r\n [isNewChatDisabled]=\"messages.length === 0\"\r\n (toggleChat)=\"onToggleChat()\"\r\n (toggleFullScreen)=\"onToggleFullScreen()\"\r\n (toggleHistorySidebar)=\"onToggleHistorySidebar()\"\r\n (clearChat)=\"onClearChat()\"\r\n ></app-chat-header>\r\n\r\n <!-- Main Content Area: Toggle between Messages and History -->\r\n <div class=\"chat-content-wrapper\">\r\n <!-- Chat History View -->\r\n <app-chat-history-sidebar\r\n [class.sidebar-closed]=\"!isHistorySidebarOpen\"\r\n [sessions]=\"chatSessions\"\r\n [isOpen]=\"isHistorySidebarOpen\"\r\n [userName]=\"chatHistoryUserName\"\r\n [isLoading]=\"isLoadingSessions\"\r\n [hasMoreSessions]=\"hasMoreSessions\"\r\n [isLoadingMore]=\"isLoadingMoreSessions\"\r\n [processingSessionId]=\"processingSessionId\"\r\n (sessionSelected)=\"onSessionSelected($event)\"\r\n (sessionDeleted)=\"onSessionDeleted($event)\"\r\n (loadMore)=\"loadMoreSessions.emit()\"\r\n (refresh)=\"refreshSessions.emit()\"\r\n (sessionRenamed)=\"onSessionRenamed($event)\"\r\n (deleteAll)=\"onDeleteAllSessions()\"\r\n (closed)=\"onToggleHistorySidebar()\"\r\n >\r\n </app-chat-history-sidebar>\r\n\r\n <!-- Messages View -->\r\n <div class=\"messages-view\" [class.hidden]=\"isHistorySidebarOpen && !isFullScreen\">\r\n <!-- Messages / Welcome Screen -->\r\n @if (!showLoginForm) {\r\n <app-message-list\r\n [messages]=\"messages\"\r\n [isBotTyping]=\"isBotTyping\"\r\n [isStreaming]=\"isStreaming\"\r\n [appLogoUrl]=\"appLogoUrl\"\r\n [appSubtitle]=\"appSubtitle\"\r\n [welcomeDesc]=\"welcomeDesc\"\r\n [predefinedMessages]=\"predefinedMessages\"\r\n [botAvatarUrl]=\"botAvatarUrl\"\r\n [userAvatarUrl]=\"userAvatarUrl\"\r\n [userName]=\"userName\"\r\n [isAuthenticated]=\"isAuthenticated\"\r\n [isLoggingIn]=\"isLoggingIn\"\r\n [trackByMessageId]=\"trackByMessageId\"\r\n (suggestionClick)=\"onSuggestionClick($event)\"\r\n (loginClick)=\"onLoginClick()\"\r\n ></app-message-list>\r\n }\r\n\r\n @if (showSuggestionChips && isAuthenticated) {\r\n <app-chips\r\n [messages]=\"suggestedMessages\"\r\n [disabled]=\"isBotTyping\"\r\n (chipClick)=\"onSuggestionClick($event)\"\r\n ></app-chips>\r\n }\r\n\r\n <!-- Chat Input: Only show when authenticated -->\r\n @if (isAuthenticated) {\r\n <app-message-input\r\n [isBotTyping]=\"isBotTyping\"\r\n [hintText]=\"hintText\"\r\n (send)=\"onSend($event)\"\r\n (stop)=\"onStop()\"\r\n ></app-message-input>\r\n }\r\n\r\n <!-- Login Form -->\r\n @if (showLoginForm && !isAuthenticated) {\r\n <app-login-form\r\n [isLoggingIn]=\"isLoggingIn\"\r\n (loginSubmit)=\"onLoginSubmit($event)\"\r\n (cancel)=\"onCancelLogin()\"\r\n ></app-login-form>\r\n }\r\n\r\n <!-- Auth error snackbar (login/logout errors only) -->\r\n <!-- <app-snackbar\r\n *ngIf=\"authError\"\r\n [message]=\"authError\"\r\n (closed)=\"onClearAuthError()\"\r\n ></app-snackbar> -->\r\n\r\n <!-- footer -->\r\n <app-chat-footer></app-chat-footer>\r\n </div>\r\n </div>\r\n </div>\r\n}\r\n\r\n<mat-menu #settingsMenu=\"matMenu\">\r\n <!-- Personalization -->\r\n @if (isAuthenticated) {\r\n <button\r\n mat-menu-item\r\n (click)=\"onOpenPersonalization()\"\r\n style=\"display: flex; align-items: center\"\r\n >\r\n <mat-icon>settings_suggest</mat-icon>\r\n <span>Personalization</span>\r\n </button>\r\n }\r\n\r\n <!-- Change Theme -->\r\n\r\n <!-- Full-Screen Button -->\r\n <button mat-menu-item (click)=\"onToggleFullScreen()\" style=\"display: flex; align-items: center\">\r\n <mat-icon>{{ isFullScreen ? 'fullscreen_exit' : 'fullscreen' }}</mat-icon>\r\n <span> {{ isFullScreen ? 'Minimize' : 'Expand' }}</span>\r\n </button>\r\n\r\n <!-- Clear Chat -->\r\n @if (isAuthenticated && messages.length > 0) {\r\n <button mat-menu-item (click)=\"onClearChat()\" style=\"display: flex; align-items: center\">\r\n <mat-icon> clear_all</mat-icon>\r\n <span>End Chat</span>\r\n </button>\r\n }\r\n\r\n <!-- Logout -->\r\n @if (isAuthenticated) {\r\n <button mat-menu-item (click)=\"onLogout()\" style=\"display: flex; align-items: center\">\r\n <mat-icon>logout</mat-icon>\r\n <span>Logout</span>\r\n </button>\r\n }\r\n</mat-menu>\r\n", styles: [".doohbot-container{position:fixed;bottom:20px;right:20px;z-index:1000}.chat-window{width:clamp(400px,30vw,450px);height:clamp(620px,70vh,660px);background-color:var(--background-color);border-radius:20px;border-color:var(--border-color);box-shadow:var(--border-shadow-color);display:flex;flex-direction:column;overflow:hidden;animation:slide-in .5s ease;position:fixed;right:20px;bottom:20px;-webkit-user-select:none;user-select:none;cursor:move}.chat-window:active{cursor:grabbing}@media (max-width: 768px){.chat-window{width:95%;height:calc(100vh - 20px)}}.chat-window.layout-sidebar{height:100vh;top:0;bottom:0;right:0;width:clamp(400px,25vw,450px);border-radius:20px 0 0 20px;animation:slide-in-sidebar .4s ease-out}.chat-window.layout-sidebar.fullscreen{width:100vw;height:100vh;border-radius:0;transform:none;top:0;left:0}@keyframes slide-in-sidebar{0%{transform:translate(100%)}to{transform:translate(0)}}@media (max-width: 480px){.chat-window{width:90%;height:calc(100vh - 40px)}}.chat-window.fullscreen{width:100vw;height:100vh;border-radius:0;position:fixed;top:0;left:0;transform:none;-webkit-user-select:none;user-select:none}.chat-content-wrapper{flex:1;display:flex;flex-direction:column;overflow:hidden;position:relative}.chat-content-wrapper app-chat-history-sidebar{height:100%;width:100%;display:flex;flex-direction:column;flex:1;min-height:0}.chat-window.fullscreen .chat-content-wrapper{flex-direction:row}.chat-window.fullscreen app-chat-history-sidebar{width:260px;flex:0 0 260px;border-right:1px solid var(--border-color)}.chat-window.fullscreen app-chat-history-sidebar.sidebar-closed{display:none}.messages-view{display:flex;flex-direction:column;height:100%;width:100%}.messages-view.hidden{display:none}.messages-view app-message-list,.messages-view app-login-form{flex:1;min-height:0}.messages-view app-snackbar{flex-shrink:0;margin-top:auto}.messages-view app-message-input{flex-shrink:0}.theme-selector{display:flex;align-items:center;padding:4px 12px;gap:8px}.theme-btn{background:none;border:none;color:var(--white);transition:color .2s ease}.theme-btn.selected{color:var(--primary-color)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i2.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i2.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "component", type: Chips, selector: "app-chips", inputs: ["messages", "disabled"], outputs: ["chipClick"] }, { kind: "component", type: MessageListComponent, selector: "app-message-list", inputs: ["messages", "isBotTyping", "isStreaming", "appLogoUrl", "appSubtitle", "welcomeDesc", "predefinedMessages", "botAvatarUrl", "userAvatarUrl", "userName", "isAuthenticated", "isLoggingIn", "trackByMessageId"], outputs: ["suggestionClick", "loginClick"] }, { kind: "component", type: MessageInputComponent, selector: "app-message-input", inputs: ["isBotTyping", "hintText"], outputs: ["send", "stop"] }, { kind: "directive", type: DraggableDialogDirective, selector: "[draggableDialog]", inputs: ["dragHandle", "enableDrag"] }, { kind: "directive", type: ResizableDialogDirective, selector: "[resizableDialog]", inputs: ["enableResize"] }, { kind: "component", type: ChatHistorySidebarComponent, selector: "app-chat-history-sidebar", inputs: ["sessions", "isOpen", "userName", "isLoading", "hasMoreSessions", "isLoadingMore", "processingSessionId"], outputs: ["sessionSelected", "sessionDeleted", "closed", "loadMore", "refresh", "sessionRenamed", "deleteAll"] }, { kind: "component", type: ChatHeaderComponent, selector: "app-chat-header", inputs: ["appHeaderLogoUrl", "isAuthenticated", "isFullScreen", "settingsMenu", "isNewChatDisabled"], outputs: ["toggleChat", "toggleFullScreen", "toggleHistorySidebar", "clearChat"] }, { kind: "component", type: LoginFormComponent, selector: "app-login-form", inputs: ["isLoggingIn"], outputs: ["loginSubmit", "cancel"] }, { kind: "component", type: ChatFooterComponent, selector: "app-chat-footer" }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: MatDialogModule }] }); }
|
|
188
|
+
}
|
|
189
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ChatWindowComponent, decorators: [{
|
|
190
|
+
type: Component,
|
|
191
|
+
args: [{ selector: 'app-chat-window', standalone: true, imports: [
|
|
192
|
+
CommonModule,
|
|
193
|
+
MatIconModule,
|
|
194
|
+
MatMenuModule,
|
|
195
|
+
Chips,
|
|
196
|
+
MessageListComponent,
|
|
197
|
+
MessageInputComponent,
|
|
198
|
+
DraggableDialogDirective,
|
|
199
|
+
ResizableDialogDirective,
|
|
200
|
+
ChatHistorySidebarComponent,
|
|
201
|
+
ChatHeaderComponent,
|
|
202
|
+
LoginFormComponent,
|
|
203
|
+
ChatFooterComponent,
|
|
204
|
+
FormsModule,
|
|
205
|
+
MatDialogModule,
|
|
206
|
+
], template: "@if (isChatOpen) {\r\n <div\r\n draggableDialog\r\n [enableDrag]=\"canDrag\"\r\n resizableDialog\r\n [enableResize]=\"canResize\"\r\n class=\"chat-window\"\r\n [class.fullscreen]=\"isFullScreen\"\r\n [class.layout-sidebar]=\"buttonStyle.includes('sidebar')\"\r\n >\r\n <!-- chat window header -->\r\n <app-chat-header\r\n [appHeaderLogoUrl]=\"appHeaderLogoUrl\"\r\n [isAuthenticated]=\"isAuthenticated\"\r\n [isFullScreen]=\"isFullScreen\"\r\n [settingsMenu]=\"settingsMenu\"\r\n [isNewChatDisabled]=\"messages.length === 0\"\r\n (toggleChat)=\"onToggleChat()\"\r\n (toggleFullScreen)=\"onToggleFullScreen()\"\r\n (toggleHistorySidebar)=\"onToggleHistorySidebar()\"\r\n (clearChat)=\"onClearChat()\"\r\n ></app-chat-header>\r\n\r\n <!-- Main Content Area: Toggle between Messages and History -->\r\n <div class=\"chat-content-wrapper\">\r\n <!-- Chat History View -->\r\n <app-chat-history-sidebar\r\n [class.sidebar-closed]=\"!isHistorySidebarOpen\"\r\n [sessions]=\"chatSessions\"\r\n [isOpen]=\"isHistorySidebarOpen\"\r\n [userName]=\"chatHistoryUserName\"\r\n [isLoading]=\"isLoadingSessions\"\r\n [hasMoreSessions]=\"hasMoreSessions\"\r\n [isLoadingMore]=\"isLoadingMoreSessions\"\r\n [processingSessionId]=\"processingSessionId\"\r\n (sessionSelected)=\"onSessionSelected($event)\"\r\n (sessionDeleted)=\"onSessionDeleted($event)\"\r\n (loadMore)=\"loadMoreSessions.emit()\"\r\n (refresh)=\"refreshSessions.emit()\"\r\n (sessionRenamed)=\"onSessionRenamed($event)\"\r\n (deleteAll)=\"onDeleteAllSessions()\"\r\n (closed)=\"onToggleHistorySidebar()\"\r\n >\r\n </app-chat-history-sidebar>\r\n\r\n <!-- Messages View -->\r\n <div class=\"messages-view\" [class.hidden]=\"isHistorySidebarOpen && !isFullScreen\">\r\n <!-- Messages / Welcome Screen -->\r\n @if (!showLoginForm) {\r\n <app-message-list\r\n [messages]=\"messages\"\r\n [isBotTyping]=\"isBotTyping\"\r\n [isStreaming]=\"isStreaming\"\r\n [appLogoUrl]=\"appLogoUrl\"\r\n [appSubtitle]=\"appSubtitle\"\r\n [welcomeDesc]=\"welcomeDesc\"\r\n [predefinedMessages]=\"predefinedMessages\"\r\n [botAvatarUrl]=\"botAvatarUrl\"\r\n [userAvatarUrl]=\"userAvatarUrl\"\r\n [userName]=\"userName\"\r\n [isAuthenticated]=\"isAuthenticated\"\r\n [isLoggingIn]=\"isLoggingIn\"\r\n [trackByMessageId]=\"trackByMessageId\"\r\n (suggestionClick)=\"onSuggestionClick($event)\"\r\n (loginClick)=\"onLoginClick()\"\r\n ></app-message-list>\r\n }\r\n\r\n @if (showSuggestionChips && isAuthenticated) {\r\n <app-chips\r\n [messages]=\"suggestedMessages\"\r\n [disabled]=\"isBotTyping\"\r\n (chipClick)=\"onSuggestionClick($event)\"\r\n ></app-chips>\r\n }\r\n\r\n <!-- Chat Input: Only show when authenticated -->\r\n @if (isAuthenticated) {\r\n <app-message-input\r\n [isBotTyping]=\"isBotTyping\"\r\n [hintText]=\"hintText\"\r\n (send)=\"onSend($event)\"\r\n (stop)=\"onStop()\"\r\n ></app-message-input>\r\n }\r\n\r\n <!-- Login Form -->\r\n @if (showLoginForm && !isAuthenticated) {\r\n <app-login-form\r\n [isLoggingIn]=\"isLoggingIn\"\r\n (loginSubmit)=\"onLoginSubmit($event)\"\r\n (cancel)=\"onCancelLogin()\"\r\n ></app-login-form>\r\n }\r\n\r\n <!-- Auth error snackbar (login/logout errors only) -->\r\n <!-- <app-snackbar\r\n *ngIf=\"authError\"\r\n [message]=\"authError\"\r\n (closed)=\"onClearAuthError()\"\r\n ></app-snackbar> -->\r\n\r\n <!-- footer -->\r\n <app-chat-footer></app-chat-footer>\r\n </div>\r\n </div>\r\n </div>\r\n}\r\n\r\n<mat-menu #settingsMenu=\"matMenu\">\r\n <!-- Personalization -->\r\n @if (isAuthenticated) {\r\n <button\r\n mat-menu-item\r\n (click)=\"onOpenPersonalization()\"\r\n style=\"display: flex; align-items: center\"\r\n >\r\n <mat-icon>settings_suggest</mat-icon>\r\n <span>Personalization</span>\r\n </button>\r\n }\r\n\r\n <!-- Change Theme -->\r\n\r\n <!-- Full-Screen Button -->\r\n <button mat-menu-item (click)=\"onToggleFullScreen()\" style=\"display: flex; align-items: center\">\r\n <mat-icon>{{ isFullScreen ? 'fullscreen_exit' : 'fullscreen' }}</mat-icon>\r\n <span> {{ isFullScreen ? 'Minimize' : 'Expand' }}</span>\r\n </button>\r\n\r\n <!-- Clear Chat -->\r\n @if (isAuthenticated && messages.length > 0) {\r\n <button mat-menu-item (click)=\"onClearChat()\" style=\"display: flex; align-items: center\">\r\n <mat-icon> clear_all</mat-icon>\r\n <span>End Chat</span>\r\n </button>\r\n }\r\n\r\n <!-- Logout -->\r\n @if (isAuthenticated) {\r\n <button mat-menu-item (click)=\"onLogout()\" style=\"display: flex; align-items: center\">\r\n <mat-icon>logout</mat-icon>\r\n <span>Logout</span>\r\n </button>\r\n }\r\n</mat-menu>\r\n", styles: [".doohbot-container{position:fixed;bottom:20px;right:20px;z-index:1000}.chat-window{width:clamp(400px,30vw,450px);height:clamp(620px,70vh,660px);background-color:var(--background-color);border-radius:20px;border-color:var(--border-color);box-shadow:var(--border-shadow-color);display:flex;flex-direction:column;overflow:hidden;animation:slide-in .5s ease;position:fixed;right:20px;bottom:20px;-webkit-user-select:none;user-select:none;cursor:move}.chat-window:active{cursor:grabbing}@media (max-width: 768px){.chat-window{width:95%;height:calc(100vh - 20px)}}.chat-window.layout-sidebar{height:100vh;top:0;bottom:0;right:0;width:clamp(400px,25vw,450px);border-radius:20px 0 0 20px;animation:slide-in-sidebar .4s ease-out}.chat-window.layout-sidebar.fullscreen{width:100vw;height:100vh;border-radius:0;transform:none;top:0;left:0}@keyframes slide-in-sidebar{0%{transform:translate(100%)}to{transform:translate(0)}}@media (max-width: 480px){.chat-window{width:90%;height:calc(100vh - 40px)}}.chat-window.fullscreen{width:100vw;height:100vh;border-radius:0;position:fixed;top:0;left:0;transform:none;-webkit-user-select:none;user-select:none}.chat-content-wrapper{flex:1;display:flex;flex-direction:column;overflow:hidden;position:relative}.chat-content-wrapper app-chat-history-sidebar{height:100%;width:100%;display:flex;flex-direction:column;flex:1;min-height:0}.chat-window.fullscreen .chat-content-wrapper{flex-direction:row}.chat-window.fullscreen app-chat-history-sidebar{width:260px;flex:0 0 260px;border-right:1px solid var(--border-color)}.chat-window.fullscreen app-chat-history-sidebar.sidebar-closed{display:none}.messages-view{display:flex;flex-direction:column;height:100%;width:100%}.messages-view.hidden{display:none}.messages-view app-message-list,.messages-view app-login-form{flex:1;min-height:0}.messages-view app-snackbar{flex-shrink:0;margin-top:auto}.messages-view app-message-input{flex-shrink:0}.theme-selector{display:flex;align-items:center;padding:4px 12px;gap:8px}.theme-btn{background:none;border:none;color:var(--white);transition:color .2s ease}.theme-btn.selected{color:var(--primary-color)}\n"] }]
|
|
207
|
+
}], ctorParameters: () => [], propDecorators: { isChatOpen: [{
|
|
208
|
+
type: Input
|
|
209
|
+
}], enableDrag: [{
|
|
210
|
+
type: Input
|
|
211
|
+
}], enableResize: [{
|
|
212
|
+
type: Input
|
|
213
|
+
}], isFullScreen: [{
|
|
214
|
+
type: Input
|
|
215
|
+
}], isStreaming: [{
|
|
216
|
+
type: Input
|
|
217
|
+
}], isAuthenticated: [{
|
|
218
|
+
type: Input
|
|
219
|
+
}], appTitle: [{
|
|
220
|
+
type: Input
|
|
221
|
+
}], appLogoUrl: [{
|
|
222
|
+
type: Input
|
|
223
|
+
}], appTextLogoUrl: [{
|
|
224
|
+
type: Input
|
|
225
|
+
}], appHeaderLogoUrl: [{
|
|
226
|
+
type: Input
|
|
227
|
+
}], messages: [{
|
|
228
|
+
type: Input
|
|
229
|
+
}], isBotTyping: [{
|
|
230
|
+
type: Input
|
|
231
|
+
}], appSubtitle: [{
|
|
232
|
+
type: Input
|
|
233
|
+
}], welcomeDesc: [{
|
|
234
|
+
type: Input
|
|
235
|
+
}], predefinedMessages: [{
|
|
236
|
+
type: Input
|
|
237
|
+
}], suggestedMessages: [{
|
|
238
|
+
type: Input
|
|
239
|
+
}], botAvatarUrl: [{
|
|
240
|
+
type: Input
|
|
241
|
+
}], userAvatarUrl: [{
|
|
242
|
+
type: Input
|
|
243
|
+
}], userName: [{
|
|
244
|
+
type: Input
|
|
245
|
+
}], trackByMessageId: [{
|
|
246
|
+
type: Input
|
|
247
|
+
}], hintText: [{
|
|
248
|
+
type: Input
|
|
249
|
+
}], messageError: [{
|
|
250
|
+
type: Input
|
|
251
|
+
}], showSuggestionChips: [{
|
|
252
|
+
type: Input
|
|
253
|
+
}], isHistorySidebarOpen: [{
|
|
254
|
+
type: Input
|
|
255
|
+
}], chatSessions: [{
|
|
256
|
+
type: Input
|
|
257
|
+
}], chatHistoryUserName: [{
|
|
258
|
+
type: Input
|
|
259
|
+
}], isLoggingIn: [{
|
|
260
|
+
type: Input
|
|
261
|
+
}], authError: [{
|
|
262
|
+
type: Input
|
|
263
|
+
}], authSuccess: [{
|
|
264
|
+
type: Input
|
|
265
|
+
}], isLoadingSessions: [{
|
|
266
|
+
type: Input
|
|
267
|
+
}], hasMoreSessions: [{
|
|
268
|
+
type: Input
|
|
269
|
+
}], isLoadingMoreSessions: [{
|
|
270
|
+
type: Input
|
|
271
|
+
}], processingSessionId: [{
|
|
272
|
+
type: Input
|
|
273
|
+
}], themeConfig: [{
|
|
274
|
+
type: Input
|
|
275
|
+
}], buttonStyle: [{
|
|
276
|
+
type: Input
|
|
277
|
+
}], toggleChat: [{
|
|
278
|
+
type: Output
|
|
279
|
+
}], toggleFullScreen: [{
|
|
280
|
+
type: Output
|
|
281
|
+
}], toggleHistorySidebar: [{
|
|
282
|
+
type: Output
|
|
283
|
+
}], openSettings: [{
|
|
284
|
+
type: Output
|
|
285
|
+
}], suggestionClick: [{
|
|
286
|
+
type: Output
|
|
287
|
+
}], send: [{
|
|
288
|
+
type: Output
|
|
289
|
+
}], stop: [{
|
|
290
|
+
type: Output
|
|
291
|
+
}], clearMessageError: [{
|
|
292
|
+
type: Output
|
|
293
|
+
}], clearChat: [{
|
|
294
|
+
type: Output
|
|
295
|
+
}], sessionSelected: [{
|
|
296
|
+
type: Output
|
|
297
|
+
}], sessionDeleted: [{
|
|
298
|
+
type: Output
|
|
299
|
+
}], loadMoreSessions: [{
|
|
300
|
+
type: Output
|
|
301
|
+
}], refreshSessions: [{
|
|
302
|
+
type: Output
|
|
303
|
+
}], sessionRenamed: [{
|
|
304
|
+
type: Output
|
|
305
|
+
}], deleteAllSessions: [{
|
|
306
|
+
type: Output
|
|
307
|
+
}], loginSubmit: [{
|
|
308
|
+
type: Output
|
|
309
|
+
}], logout: [{
|
|
310
|
+
type: Output
|
|
311
|
+
}] } });
|
|
312
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC13aW5kb3cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZG9vaGJvdC9zcmMvbGliL2FwcC9jaGF0L2NvbXBvbmVudHMvY2hhdC13aW5kb3cvY2hhdC13aW5kb3cuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZG9vaGJvdC9zcmMvbGliL2FwcC9jaGF0L2NvbXBvbmVudHMvY2hhdC13aW5kb3cvY2hhdC13aW5kb3cuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sR0FNUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkMsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sd0RBQXdELENBQUM7QUFDckcsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNqRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxrRUFBa0UsQ0FBQztBQUM1RyxPQUFPLEVBQUUsd0JBQXdCLEVB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LGdCQUFnQjtzQkFBekIsTUFBTTtnQkFDRyxlQUFlO3NCQUF4QixNQUFNO2dCQUNHLGNBQWM7c0JBQXZCLE1BQU07Z0JBQ0csaUJBQWlCO3NCQUExQixNQUFNO2dCQUVHLFdBQVc7c0JBQXBCLE1BQU07Z0JBS0csTUFBTTtzQkFBZixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIElucHV0LFxyXG4gIE91dHB1dCxcclxuICBUcmFja0J5RnVuY3Rpb24sXHJcbiAgT25EZXN0cm95LFxyXG4gIE9uSW5pdCxcclxuICBTaW1wbGVDaGFuZ2VzLFxyXG4gIE9uQ2hhbmdlcyxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xyXG5pbXBvcnQgeyBNYXRNZW51TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbWVudSc7XHJcbmltcG9ydCB7IE1hdERpYWxvZywgTWF0RGlhbG9nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuaW1wb3J0IHsgTWVzc2FnZUxpc3RDb21wb25lbnQgfSBmcm9tICcuLi9tZXNzYWdlLWxpc3QvbWVzc2FnZS1saXN0LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IE1lc3NhZ2VJbnB1dENvbXBvbmVudCB9IGZyb20gJy4uL21lc3NhZ2UtaW5wdXQvbWVzc2FnZS1pbnB1dC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ2hhdEhpc3RvcnlTaWRlYmFyQ29tcG9uZW50IH0gZnJvbSAnLi4vY2hhdC1oaXN0b3J5LXNpZGViYXIvY2hhdC1oaXN0b3J5LXNpZGViYXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vY29yZS9hdXRoL2F1dGguc2VydmljZSc7XHJcbmltcG9ydCB7IERyYWdnYWJsZURpYWxvZ0RpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uLy4uL2NvcmUvZGlyZWN0aXZlcy9kcmFnZ2FibGUvZHJhZ2dhYmxlLWRpYWxvZy5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBSZXNpemFibGVEaWFsb2dEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi8uLi9jb3JlL2RpcmVjdGl2ZXMvcmVzaXphYmxlL3Jlc2l6YWJsZS1kaWFsb2cuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgTWVzc2FnZSB9IGZyb20gJy4uLy4uLy4uLy4uL2NvcmUvbW9kZWxzL21lc3NhZ2UnO1xyXG5pbXBvcnQgeyBEb29oYm90VGhlbWVDb25maWcgfSBmcm9tICcuLi8uLi8uLi8uLi9jb3JlL21vZGVscy90aGVtZS1jb25maWcubW9kZWwnO1xyXG5pbXBvcnQgeyBUaGVtZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9jb3JlL3NlcnZpY2VzL3RoZW1lLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDaGF0SGVhZGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vY2hhdC1oZWFkZXIvY2hhdC1oZWFkZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgTG9naW5Gb3JtQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vbG9naW4vbG9naW4tZm9ybS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDaGF0Rm9vdGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vY2hhdC1mb290ZXIvY2hhdC1mb290ZXIuY29tcG9uZW50JztcclxuaW1wb3J0IGxvZ2dlciBmcm9tICcuLi8uLi8uLi8uLi9jb3JlL3V0aWxzL2xvZ2dlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ2hpcHMgfSBmcm9tICcuLi8uLi8uLi8uLi9zaGFyZWQvY2hpcHMvY2hpcHMuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ2hhdFNlc3Npb24gfSBmcm9tICcuLi8uLi9tb2RlbC9jaGF0LXNlc3Npb24ubW9kZWwnO1xyXG5pbXBvcnQgeyBQZXJzb25hbGl6YXRpb25EaWFsb2dDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9wZXJzb25hbGl6YXRpb24vcGVyc29uYWxpemF0aW9uLWRpYWxvZy5jb21wb25lbnQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtY2hhdC13aW5kb3cnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgTWF0SWNvbk1vZHVsZSxcclxuICAgIE1hdE1lbnVNb2R1bGUsXHJcbiAgICBDaGlwcyxcclxuICAgIE1lc3NhZ2VMaXN0Q29tcG9uZW50LFxyXG4gICAgTWVzc2FnZUlucHV0Q29tcG9uZW50LFxyXG4gICAgRHJhZ2dhYmxlRGlhbG9nRGlyZWN0aXZlLFxyXG4gICAgUmVzaXphYmxlRGlhbG9nRGlyZWN0aXZlLFxyXG4gICAgQ2hhdEhpc3RvcnlTaWRlYmFyQ29tcG9uZW50LFxyXG4gICAgQ2hhdEhlYWRlckNvbXBvbmVudCxcclxuICAgIExvZ2luRm9ybUNvbXBvbmVudCxcclxuICAgIENoYXRGb290ZXJDb21wb25lbnQsXHJcbiAgICBGb3Jtc01vZHVsZSxcclxuICAgIE1hdERpYWxvZ01vZHVsZSxcclxuICBdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jaGF0LXdpbmRvdy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vY2hhdC13aW5kb3cuY29tcG9uZW50LnNjc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIENoYXRXaW5kb3dDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgT25DaGFuZ2VzIHtcclxuICBASW5wdXQoKSBpc0NoYXRPcGVuOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgZW5hYmxlRHJhZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGVuYWJsZVJlc2l6ZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGlzRnVsbFNjcmVlbjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGlzU3RyZWFtaW5nOiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSBpc0F1dGhlbnRpY2F0ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBhcHBUaXRsZTogc3RyaW5nID0gJyc7XHJcbiAgQElucHV0KCkgYXBwTG9nb1VybDogc3RyaW5nID0gJyc7XHJcbiAgQElucHV0KCkgYXBwVGV4dExvZ29Vcmw6IHN0cmluZyA9ICcnO1xyXG4gIEBJbnB1dCgpIGFwcEhlYWRlckxvZ29Vcmw6IHN0cmluZyA9ICcnO1xyXG4gIEBJbnB1dCgpIG1lc3NhZ2VzOiBNZXNzYWdlW10gPSBbXTtcclxuICBASW5wdXQoKSBpc0JvdFR5cGluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGFwcFN1YnRpdGxlOiBzdHJpbmcgPSAnJztcclxuICBASW5wdXQoKSB3ZWxjb21lRGVzYzogc3RyaW5nID0gJyc7XHJcbiAgQElucHV0KCkgcHJlZGVmaW5lZE1lc3NhZ2VzOiBzdHJpbmdbXSA9IFtdO1xyXG4gIEBJbnB1dCgpIHN1Z2dlc3RlZE1lc3NhZ2VzOiBzdHJpbmdbXSA9IFtdO1xyXG4gIEBJbnB1dCgpIGJvdEF2YXRhclVybDogc3RyaW5nID0gJyc7XHJcbiAgQElucHV0KCkgdXNlckF2YXRhclVybDogc3RyaW5nID0gJyc7XHJcbiAgQElucHV0KCkgdXNlck5hbWU6IHN0cmluZyA9ICcnO1xyXG4gIEBJbnB1dCgpIHRyYWNrQnlNZXNzYWdlSWQ6IFRyYWNrQnlGdW5jdGlvbjxNZXNzYWdlPiA9IChpbmRleCwgaXRlbSkgPT4gaXRlbS5pZCA/PyBpbmRleDtcclxuICBASW5wdXQoKSBoaW50VGV4dDogc3RyaW5nID0gJyc7XHJcbiAgQElucHV0KCkgbWVzc2FnZUVycm9yOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcclxuICBASW5wdXQoKSBzaG93U3VnZ2VzdGlvbkNoaXBzOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgaXNIaXN0b3J5U2lkZWJhck9wZW46IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBjaGF0U2Vzc2lvbnM6IENoYXRTZXNzaW9uW10gPSBbXTtcclxuICBASW5wdXQoKSBjaGF0SGlzdG9yeVVzZXJOYW1lOiBzdHJpbmcgPSAnVXNlcic7XHJcblxyXG4gIEBJbnB1dCgpIGlzTG9nZ2luZ0luOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgYXV0aEVycm9yOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcclxuICBASW5wdXQoKSBhdXRoU3VjY2Vzczogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcbiAgQElucHV0KCkgaXNMb2FkaW5nU2Vzc2lvbnM6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBoYXNNb3JlU2Vzc2lvbnM6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBpc0xvYWRpbmdNb3JlU2Vzc2lvbnM6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBwcm9jZXNzaW5nU2Vzc2lvbklkOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcclxuICBASW5wdXQoKSB0aGVtZUNvbmZpZzogRG9vaGJvdFRoZW1lQ29uZmlnIHwgdW5kZWZpbmVkO1xyXG4gIEBJbnB1dCgpIGJ1dHRvblN0eWxlOiBzdHJpbmcgPSAnZmFiJztcclxuXHJcbiAgQE91dHB1dCgpIHRvZ2dsZUNoYXQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcbiAgQE91dHB1dCgpIHRvZ2dsZUZ1bGxTY3JlZW4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcbiAgQE91dHB1dCgpIHRvZ2dsZUhpc3RvcnlTaWRlYmFyID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG4gIEBPdXRwdXQoKSBvcGVuU2V0dGluZ3MgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcbiAgQE91dHB1dCgpIHN1Z2dlc3Rpb25DbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG4gIEBPdXRwdXQoKSBzZW5kID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcbiAgQE91dHB1dCgpIHN0b3AgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcbiAgQE91dHB1dCgpIGNsZWFyTWVzc2FnZUVycm9yID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG4gIEBPdXRwdXQoKSBjbGVhckNoYXQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcbiAgQE91dHB1dCgpIHNlc3Npb25TZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXI8Q2hhdFNlc3Npb24+KCk7XHJcbiAgQE91dHB1dCgpIHNlc3Npb25EZWxldGVkID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcbiAgQE91dHB1dCgpIGxvYWRNb3JlU2Vzc2lvbnMgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcbiAgQE91dHB1dCgpIHJlZnJlc2hTZXNzaW9ucyA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuICBAT3V0cHV0KCkgc2Vzc2lvblJlbmFtZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHsgc2Vzc2lvbklkOiBzdHJpbmc7IG5ld1RpdGxlOiBzdHJpbmcgfT4oKTtcclxuICBAT3V0cHV0KCkgZGVsZXRlQWxsU2Vzc2lvbnMgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcblxyXG4gIEBPdXRwdXQoKSBsb2dpblN1Ym1pdCA9IG5ldyBFdmVudEVtaXR0ZXI8e1xyXG4gICAgdXNlcm5hbWU6IHN0cmluZztcclxuICAgIHBhc3N3b3JkOiBzdHJpbmc7XHJcbiAgICByZW1lbWJlck1lOiBib29sZWFuO1xyXG4gIH0+KCk7XHJcbiAgQE91dHB1dCgpIGxvZ291dCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuXHJcbiAgcHVibGljIHRoZW1lU2VydmljZSA9IGluamVjdChUaGVtZVNlcnZpY2UpO1xyXG4gIHB1YmxpYyBhdXRoU2VydmljZSA9IGluamVjdChBdXRoU2VydmljZSk7XHJcbiAgcHJpdmF0ZSBkaWFsb2cgPSBpbmplY3QoTWF0RGlhbG9nKTtcclxuXHJcbiAgLy8gVUkgc3RhdGVcclxuICBwdWJsaWMgc2hvd0xvZ2luRm9ybSA9IGZhbHNlO1xyXG5cclxuICBwdWJsaWMgZ2V0IGNhbkRyYWcoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5lbmFibGVEcmFnICYmIHRoaXMuYnV0dG9uU3R5bGUgPT09ICdmYWInICYmICF0aGlzLmlzRnVsbFNjcmVlbjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgY2FuUmVzaXplKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZW5hYmxlUmVzaXplICYmIHRoaXMuYnV0dG9uU3R5bGUgPT09ICdmYWInICYmICF0aGlzLmlzRnVsbFNjcmVlbjtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge31cclxuXHJcbiAgb25Ub2dnbGVDaGF0KCkge1xyXG4gICAgdGhpcy50b2dnbGVDaGF0LmVtaXQoKTtcclxuICB9XHJcblxyXG4gIG9uVG9nZ2xlSGlzdG9yeVNpZGViYXIoKSB7XHJcbiAgICBsb2dnZXIubG9nKCdIaXN0b3J5IGJ1dHRvbiBjbGlja2VkIScpO1xyXG4gICAgdGhpcy50b2dnbGVIaXN0b3J5U2lkZWJhci5lbWl0KCk7XHJcbiAgfVxyXG5cclxuICBvbkxvZ2luQ2xpY2soKSB7XHJcbiAgICB0aGlzLnNob3dMb2dpbkZvcm0gPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgb25Mb2dpblN1Ym1pdChjcmVkZW50aWFsczogeyB1c2VybmFtZTogc3RyaW5nOyBwYXNzd29yZDogc3RyaW5nOyByZW1lbWJlck1lOiBib29sZWFuIH0pIHtcclxuICAgIHRoaXMubG9naW5TdWJtaXQuZW1pdChjcmVkZW50aWFscyk7XHJcbiAgfVxyXG5cclxuICBvbkNhbmNlbExvZ2luKCkge1xyXG4gICAgdGhpcy5zaG93TG9naW5Gb3JtID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBvblRvZ2dsZUZ1bGxTY3JlZW4oKSB7XHJcbiAgICB0aGlzLnRvZ2dsZUZ1bGxTY3JlZW4uZW1pdCgpO1xyXG4gIH1cclxuXHJcbiAgb25PcGVuU2V0dGluZ3MoKSB7XHJcbiAgICB0aGlzLm9wZW5TZXR0aW5ncy5lbWl0KCk7XHJcbiAgfVxyXG5cclxuICBvbk9wZW5QZXJzb25hbGl6YXRpb24oKSB7XHJcbiAgICB0aGlzLmRpYWxvZy5vcGVuKFBlcnNvbmFsaXphdGlvbkRpYWxvZ0NvbXBvbmVudCwge1xyXG4gICAgICB3aWR0aDogJzExMDBweCcsXHJcbiAgICAgIGhlaWdodDogJzcwMHB4JyxcclxuICAgICAgbWF4V2lkdGg6ICc5NXZ3JyxcclxuICAgICAgcGFuZWxDbGFzczogJ3BlcnNvbmFsaXphdGlvbi1kaWFsb2ctcGFuZWwnLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBvblN1Z2dlc3Rpb25DbGljayh0ZXh0OiBzdHJpbmcpIHtcclxuICAgIHRoaXMuc3VnZ2VzdGlvbkNsaWNrLmVtaXQodGV4dCk7XHJcbiAgfVxyXG5cclxuICBvblNlbmQodGV4dDogc3RyaW5nKSB7XHJcbiAgICB0aGlzLnNlbmQuZW1pdCh0ZXh0KTtcclxuICB9XHJcblxyXG4gIG9uU3RvcCgpIHtcclxuICAgIHRoaXMuc3RvcC5lbWl0KCk7XHJcbiAgfVxyXG5cclxuICBvbkNsZWFyTWVzc2FnZUVycm9yKCkge1xyXG4gICAgdGhpcy5tZXNzYWdlRXJyb3IgPSBudWxsO1xyXG4gICAgdGhpcy5jbGVhck1lc3NhZ2VFcnJvci5lbWl0KCk7XHJcbiAgfVxyXG5cclxuICBvbkNsZWFyQXV0aEVycm9yKCkge1xyXG4gICAgdGhpcy5jbGVhck1lc3NhZ2VFcnJvci5lbWl0KCk7XHJcbiAgfVxyXG5cclxuICBvbkNsZWFyQ2hhdCgpIHtcclxuICAgIHRoaXMuY2xlYXJDaGF0LmVtaXQoKTtcclxuICB9XHJcblxyXG4gIG9uTG9nb3V0KCkge1xyXG4gICAgdGhpcy5sb2dvdXQuZW1pdCgpO1xyXG4gIH1cclxuXHJcbiAgb25TZXNzaW9uU2VsZWN0ZWQoc2Vzc2lvbjogQ2hhdFNlc3Npb24pIHtcclxuICAgIHRoaXMuc2Vzc2lvblNlbGVjdGVkLmVtaXQoc2Vzc2lvbik7XHJcbiAgfVxyXG5cclxuICBvblNlc3Npb25EZWxldGVkKHNlc3Npb25JZDogc3RyaW5nKSB7XHJcbiAgICB0aGlzLnNlc3Npb25EZWxldGVkLmVtaXQoc2Vzc2lvbklkKTtcclxuICB9XHJcblxyXG4gIG9uU2Vzc2lvblJlbmFtZWQoZXZlbnQ6IHsgc2Vzc2lvbklkOiBzdHJpbmc7IG5ld1RpdGxlOiBzdHJpbmcgfSkge1xyXG4gICAgdGhpcy5zZXNzaW9uUmVuYW1lZC5lbWl0KGV2ZW50KTtcclxuICB9XHJcblxyXG4gIG9uRGVsZXRlQWxsU2Vzc2lvbnMoKSB7XHJcbiAgICB0aGlzLmRlbGV0ZUFsbFNlc3Npb25zLmVtaXQoKTtcclxuICB9XHJcblxyXG4gIG9uUG9wb3V0U2hvd24od2luOiBXaW5kb3cpIHtcclxuICAgIC8vIEFwcGx5IHRoZW1lIGNsYXNzZXNcclxuICAgIGNvbnN0IGFjdGl2ZVRoZW1lID0gdGhpcy50aGVtZVNlcnZpY2UuYWN0aXZlVGhlbWUoKTtcclxuICAgIGxvZ2dlci5sb2coJ1BvcG91dCBzaG93biwgYXBwbHlpbmcgdGhlbWU6JywgYWN0aXZlVGhlbWUpO1xyXG5cclxuICAgIGNvbnN0IGJvZHkgPSB3aW4uZG9jdW1lbnQuYm9keTtcclxuICAgIC8vIFdlIGNhbm5vdCB1c2UgcmVuZGVyZXIgZWFzaWx5IG9uIGFub3RoZXIgZG9jdW1lbnQgd2l0aG91dCBjdXN0b20gcmVuZGVyZXIgZmFjdG9yeSxcclxuICAgIC8vIGJ1dCBuYXRpdmUgRE9NIG1hbmlwdWxhdGlvbiBpcyBmaW5lIGhlcmUgc2luY2UgaXQncyBhIHNlcGFyYXRlIHdpbmRvdyBvYmplY3QuXHJcbiAgICBib2R5LmNsYXNzTGlzdC5yZW1vdmUoJ2xpZ2h0LXRoZW1lJywgJ2RhcmstdGhlbWUnKTtcclxuICAgIGJvZHkuY2xhc3NMaXN0LmFkZChhY3RpdmVUaGVtZSk7XHJcblxyXG4gICAgLy8gQXBwbHkgQ1NTIHZhcmlhYmxlc1xyXG4gICAgdGhpcy50aGVtZVNlcnZpY2UuYXBwbHlDc3NWYXJpYWJsZXMoYm9keSwgdGhpcy50aGVtZUNvbmZpZyk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIC8vIEluaXRpYWxpemF0aW9uIGxvZ2ljIGlmIG5lZWRlZFxyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xyXG4gICAgLy8/IEhhbmRsZSBhdXRoZW50aWNhdGlvbiBzdGF0dXMgY2hhbmdlc1xyXG4gICAgaWYgKGNoYW5nZXNbJ2lzQXV0aGVudGljYXRlZCddKSB7XHJcbiAgICAgIGlmICh0aGlzLmlzQXV0aGVudGljYXRlZCkge1xyXG4gICAgICAgIHRoaXMuc2hvd0xvZ2luRm9ybSA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8/IEhhbmRsZSBsb2dnaW5nIGluIHN0YXR1cyBjaGFuZ2VzXHJcbiAgICBpZiAoY2hhbmdlc1snaXNMb2dnaW5nSW4nXSkge1xyXG4gICAgICBpZiAodGhpcy5pc0xvZ2dpbmdJbikge1xyXG4gICAgICAgIHRoaXMuc2hvd0xvZ2luRm9ybSA9IGZhbHNlO1xyXG4gICAgICB9IGVsc2UgaWYgKCF0aGlzLmlzQXV0aGVudGljYXRlZCAmJiAhY2hhbmdlc1snaXNMb2dnaW5nSW4nXS5maXJzdENoYW5nZSkge1xyXG4gICAgICAgIHRoaXMuc2hvd0xvZ2luRm9ybSA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge31cclxufVxyXG4iLCJAaWYgKGlzQ2hhdE9wZW4pIHtcclxuICA8ZGl2XHJcbiAgICBkcmFnZ2FibGVEaWFsb2dcclxuICAgIFtlbmFibGVEcmFnXT1cImNhbkRyYWdcIlxyXG4gICAgcmVzaXphYmxlRGlhbG9nXHJcbiAgICBbZW5hYmxlUmVzaXplXT1cImNhblJlc2l6ZVwiXHJcbiAgICBjbGFzcz1cImNoYXQtd2luZG93XCJcclxuICAgIFtjbGFzcy5mdWxsc2NyZWVuXT1cImlzRnVsbFNjcmVlblwiXHJcbiAgICBbY2xhc3MubGF5b3V0LXNpZGViYXJdPVwiYnV0dG9uU3R5bGUuaW5jbHVkZXMoJ3NpZGViYXInKVwiXHJcbiAgPlxyXG4gICAgPCEtLSBjaGF0IHdpbmRvdyBoZWFkZXIgLS0+XHJcbiAgICA8YXBwLWNoYXQtaGVhZGVyXHJcbiAgICAgIFthcHBIZWFkZXJMb2dvVXJsXT1cImFwcEhlYWRlckxvZ29VcmxcIlxyXG4gICAgICBbaXNBdXRoZW50aWNhdGVkXT1cImlzQXV0aGVudGljYXRlZFwiXHJcbiAgICAgIFtpc0Z1bGxTY3JlZW5dPVwiaXNGdWxsU2NyZWVuXCJcclxuICAgICAgW3NldHRpbmdzTWVudV09XCJzZXR0aW5nc01lbnVcIlxyXG4gICAgICBbaXNOZXdDaGF0RGlzYWJsZWRdPVwibWVzc2FnZXMubGVuZ3RoID09PSAwXCJcclxuICAgICAgKHRvZ2dsZUNoYXQpPVwib25Ub2dnbGVDaGF0KClcIlxyXG4gICAgICAodG9nZ2xlRnVsbFNjcmVlbik9XCJvblRvZ2dsZUZ1bGxTY3JlZW4oKVwiXHJcbiAgICAgICh0b2dnbGVIaXN0b3J5U2lkZWJhcik9XCJvblRvZ2dsZUhpc3RvcnlTaWRlYmFyKClcIlxyXG4gICAgICAoY2xlYXJDaGF0KT1cIm9uQ2xlYXJDaGF0KClcIlxyXG4gICAgPjwvYXBwLWNoYXQtaGVhZGVyPlxyXG5cclxuICAgIDwhLS0gTWFpbiBDb250ZW50IEFyZWE6IFRvZ2dsZSBiZXR3ZWVuIE1lc3NhZ2VzIGFuZCBIaXN0b3J5IC0tPlxyXG4gICAgPGRpdiBjbGFzcz1cImNoYXQtY29udGVudC13cmFwcGVyXCI+XHJcbiAgICAgIDwhLS0gQ2hhdCBIaXN0b3J5IFZpZXcgLS0+XHJcbiAgICAgIDxhcHAtY2hhdC1oaXN0b3J5LXNpZGViYXJcclxuICAgICAgICBbY2xhc3Muc2lkZWJhci1jbG9zZWRdPVwiIWlzSGlzdG9yeVNpZGViYXJPcGVuXCJcclxuICAgICAgICBbc2Vzc2lvbnNdPVwiY2hhdFNlc3Npb25zXCJcclxuICAgICAgICBbaXNPcGVuXT1cImlzSGlzdG9yeVNpZGViYXJPcGVuXCJcclxuICAgICAgICBbdXNlck5hbWVdPVwiY2hhdEhpc3RvcnlVc2VyTmFtZVwiXHJcbiAgICAgICAgW2lzTG9hZGluZ109XCJpc0xvYWRpbmdTZXNzaW9uc1wiXHJcbiAgICAgICAgW2hhc01vcmVTZXNzaW9uc109XCJoYXNNb3JlU2Vzc2lvbnNcIlxyXG4gICAgICAgIFtpc0xvYWRpbmdNb3JlXT1cImlzTG9hZGluZ01vcmVTZXNzaW9uc1wiXHJcbiAgICAgICAgW3Byb2Nlc3NpbmdTZXNzaW9uSWRdPVwicHJvY2Vzc2luZ1Nlc3Npb25JZFwiXHJcbiAgICAgICAgKHNlc3Npb25TZWxlY3RlZCk9XCJvblNlc3Npb25TZWxlY3RlZCgkZXZlbnQpXCJcclxuICAgICAgICAoc2Vzc2lvbkRlbGV0ZWQpPVwib25TZXNzaW9uRGVsZXRlZCgkZXZlbnQpXCJcclxuICAgICAgICAobG9hZE1vcmUpPVwibG9hZE1vcmVTZXNzaW9ucy5lbWl0KClcIlxyXG4gICAgICAgIChyZWZyZXNoKT1cInJlZnJlc2hTZXNzaW9ucy5lbWl0KClcIlxyXG4gICAgICAgIChzZXNzaW9uUmVuYW1lZCk9XCJvblNlc3Npb25SZW5hbWVkKCRldmVudClcIlxyXG4gICAgICAgIChkZWxldGVBbGwpPVwib25EZWxldGVBbGxTZXNzaW9ucygpXCJcclxuICAgICAgICAoY2xvc2VkKT1cIm9uVG9nZ2xlSGlzdG9yeVNpZGViYXIoKVwiXHJcbiAgICAgID5cclxuICAgICAgPC9hcHAtY2hhdC1oaXN0b3J5LXNpZGViYXI+XHJcblxyXG4gICAgICA8IS0tIE1lc3NhZ2VzIFZpZXcgLS0+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJtZXNzYWdlcy12aWV3XCIgW2NsYXNzLmhpZGRlbl09XCJpc0hpc3RvcnlTaWRlYmFyT3BlbiAmJiAhaXNGdWxsU2NyZWVuXCI+XHJcbiAgICAgICAgPCEtLSBNZXNzYWdlcyAvIFdlbGNvbWUgU2NyZWVuIC0tPlxyXG4gICAgICAgIEBpZiAoIXNob3dMb2dpbkZvcm0pIHtcclxuICAgICAgICAgIDxhcHAtbWVzc2FnZS1saXN0XHJcbiAgICAgICAgICAgIFttZXNzYWdlc109XCJtZXNzYWdlc1wiXHJcbiAgICAgICAgICAgIFtpc0JvdFR5cGluZ109XCJpc0JvdFR5cGluZ1wiXHJcbiAgICAgICAgICAgIFtpc1N0cmVhbWluZ109XCJpc1N0cmVhbWluZ1wiXHJcbiAgICAgICAgICAgIFthcHBMb2dvVXJsXT1cImFwcExvZ29VcmxcIlxyXG4gICAgICAgICAgICBbYXBwU3VidGl0bGVdPVwiYXBwU3VidGl0bGVcIlxyXG4gICAgICAgICAgICBbd2VsY29tZURlc2NdPVwid2VsY29tZURlc2NcIlxyXG4gICAgICAgICAgICBbcHJlZGVmaW5lZE1lc3NhZ2VzXT1cInByZWRlZmluZWRNZXNzYWdlc1wiXHJcbiAgICAgICAgICAgIFtib3RBdmF0YXJVcmxdPVwiYm90QXZhdGFyVXJsXCJcclxuICAgICAgICAgICAgW3VzZXJBdmF0YXJVcmxdPVwidXNlckF2YXRhclVybFwiXHJcbiAgICAgICAgICAgIFt1c2VyTmFtZV09XCJ1c2VyTmFtZVwiXHJcbiAgICAgICAgICAgIFtpc0F1dGhlbnRpY2F0ZWRdPVwiaXNBdXRoZW50aWNhdGVkXCJcclxuICAgICAgICAgICAgW2lzTG9nZ2luZ0luXT1cImlzTG9nZ2luZ0luXCJcclxuICAgICAgICAgICAgW3RyYWNrQnlNZXNzYWdlSWRdPVwidHJhY2tCeU1lc3NhZ2VJZFwiXHJcbiAgICAgICAgICAgIChzdWdnZXN0aW9uQ2xpY2spPVwib25TdWdnZXN0aW9uQ2xpY2soJGV2ZW50KVwiXHJcbiAgICAgICAgICAgIChsb2dpbkNsaWNrKT1cIm9uTG9naW5DbGljaygpXCJcclxuICAgICAgICAgID48L2FwcC1tZXNzYWdlLWxpc3Q+XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBAaWYgKHNob3dTdWdnZXN0aW9uQ2hpcHMgJiYgaXNBdXRoZW50aWNhdGVkKSB7XHJcbiAgICAgICAgICA8YXBwLWNoaXBzXHJcbiAgICAgICAgICAgIFttZXNzYWdlc109XCJzdWdnZXN0ZWRNZXNzYWdlc1wiXHJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpc0JvdFR5cGluZ1wiXHJcbiAgICAgICAgICAgIChjaGlwQ2xpY2spPVwib25TdWdnZXN0aW9uQ2xpY2soJGV2ZW50KVwiXHJcbiAgICAgICAgICA+PC9hcHAtY2hpcHM+XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICA8IS0tIENoYXQgSW5wdXQ6IE9ubHkgc2hvdyB3aGVuIGF1dGhlbnRpY2F0ZWQgLS0+XHJcbiAgICAgICAgQGlmIChpc0F1dGhlbnRpY2F0ZWQpIHtcclxuICAgICAgICAgIDxhcHAtbWVzc2FnZS1pbnB1dFxyXG4gICAgICAgICAgICBbaXNCb3RUeXBpbmddPVwiaXNCb3RUeXBpbmdcIlxyXG4gICAgICAgICAgICBbaGludFRleHRdPVwiaGludFRleHRcIlxyXG4gICAgICAgICAgICAoc2VuZCk9XCJvblNlbmQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgIChzdG9wKT1cIm9uU3RvcCgpXCJcclxuICAgICAgICAgID48L2FwcC1tZXNzYWdlLWlucHV0PlxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgPCEtLSBMb2dpbiBGb3JtIC0tPlxyXG4gICAgICAgIEBpZiAoc2hvd0xvZ2luRm9ybSAmJiAhaXNBdXRoZW50aWNhdGVkKSB7XHJcbiAgICAgICAgICA8YXBwLWxvZ2luLWZvcm1cclxuICAgICAgICAgICAgW2lzTG9nZ2luZ0luXT1cImlzTG9nZ2luZ0luXCJcclxuICAgICAgICAgICAgKGxvZ2luU3VibWl0KT1cIm9uTG9naW5TdWJtaXQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgIChjYW5jZWwpPVwib25DYW5jZWxMb2dpbigpXCJcclxuICAgICAgICAgID48L2FwcC1sb2dpbi1mb3JtPlxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgPCEtLSAgQXV0aCBlcnJvciBzbmFja2JhciAobG9naW4vbG9nb3V0IGVycm9ycyBvbmx5KSAtLT5cclxuICAgICAgICA8IS0tIDxhcHAtc25hY2tiYXJcclxuICAgICAgICAqbmdJZj1cImF1dGhFcnJvclwiXHJcbiAgICAgICAgW21lc3NhZ2VdPVwiYXV0aEVycm9yXCJcclxuICAgICAgICAoY2xvc2VkKT1cIm9uQ2xlYXJBdXRoRXJyb3IoKVwiXHJcbiAgICAgID48L2FwcC1zbmFja2Jhcj4gLS0+XHJcblxyXG4gICAgICAgIDwhLS0gZm9vdGVyIC0tPlxyXG4gICAgICAgIDxhcHAtY2hhdC1mb290ZXI+PC9hcHAtY2hhdC1mb290ZXI+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbn1cclxuXHJcbjxtYXQtbWVudSAjc2V0dGluZ3NNZW51PVwibWF0TWVudVwiPlxyXG4gIDwhLS0gUGVyc29uYWxpemF0aW9uIC0tPlxyXG4gIEBpZiAoaXNBdXRoZW50aWNhdGVkKSB7XHJcbiAgICA8YnV0dG9uXHJcbiAgICAgIG1hdC1tZW51LWl0ZW1cclxuICAgICAgKGNsaWNrKT1cIm9uT3BlblBlcnNvbmFsaXphdGlvbigpXCJcclxuICAgICAgc3R5bGU9XCJkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyXCJcclxuICAgID5cclxuICAgICAgPG1hdC1pY29uPnNldHRpbmdzX3N1Z2dlc3Q8L21hdC1pY29uPlxyXG4gICAgICA8c3Bhbj5QZXJzb25hbGl6YXRpb248L3NwYW4+XHJcbiAgICA8L2J1dHRvbj5cclxuICB9XHJcblxyXG4gIDwhLS0gQ2hhbmdlIFRoZW1lIC0tPlxyXG5cclxuICA8IS0tIEZ1bGwtU2NyZWVuIEJ1dHRvbiAtLT5cclxuICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cIm9uVG9nZ2xlRnVsbFNjcmVlbigpXCIgc3R5bGU9XCJkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyXCI+XHJcbiAgICA8bWF0LWljb24+e3sgaXNGdWxsU2NyZWVuID8gJ2Z1bGxzY3JlZW5fZXhpdCcgOiAnZnVsbHNjcmVlbicgfX08L21hdC1pY29uPlxyXG4gICAgPHNwYW4+IHt7IGlzRnVsbFNjcmVlbiA/ICdNaW5pbWl6ZScgOiAnRXhwYW5kJyB9fTwvc3Bhbj5cclxuICA8L2J1dHRvbj5cclxuXHJcbiAgPCEtLSBDbGVhciBDaGF0IC0tPlxyXG4gIEBpZiAoaXNBdXRoZW50aWNhdGVkICYmIG1lc3NhZ2VzLmxlbmd0aCA+IDApIHtcclxuICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwib25DbGVhckNoYXQoKVwiIHN0eWxlPVwiZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlclwiPlxyXG4gICAgICA8bWF0LWljb24+IGNsZWFyX2FsbDwvbWF0LWljb24+XHJcbiAgICAgIDxzcGFuPkVuZCBDaGF0PC9zcGFuPlxyXG4gICAgPC9idXR0b24+XHJcbiAgfVxyXG5cclxuICA8IS0tIExvZ291dCAtLT5cclxuICBAaWYgKGlzQXV0aGVudGljYXRlZCkge1xyXG4gICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJvbkxvZ291dCgpXCIgc3R5bGU9XCJkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyXCI+XHJcbiAgICAgIDxtYXQtaWNvbj5sb2dvdXQ8L21hdC1pY29uPlxyXG4gICAgICA8c3Bhbj5Mb2dvdXQ8L3NwYW4+XHJcbiAgICA8L2J1dHRvbj5cclxuICB9XHJcbjwvbWF0LW1lbnU+XHJcbiJdfQ==
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { MatIconModule } from '@angular/material/icon';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "@angular/material/icon";
|
|
6
|
+
export class MessageInputComponent {
|
|
7
|
+
constructor() {
|
|
8
|
+
this.isBotTyping = false;
|
|
9
|
+
this.hintText = 'Type a message...';
|
|
10
|
+
this.send = new EventEmitter();
|
|
11
|
+
this.stop = new EventEmitter();
|
|
12
|
+
}
|
|
13
|
+
onSend(text) {
|
|
14
|
+
if (text.trim()) {
|
|
15
|
+
this.send.emit(text);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
onStop() {
|
|
19
|
+
this.stop.emit();
|
|
20
|
+
}
|
|
21
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MessageInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
22
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MessageInputComponent, isStandalone: true, selector: "app-message-input", inputs: { isBotTyping: "isBotTyping", hintText: "hintText" }, outputs: { send: "send", stop: "stop" }, ngImport: i0, template: "<!-- Chat Input -->\r\n<div class=\"chat-input\">\r\n <div class=\"input-wrapper\">\r\n <input #messageInput type=\"text\" [disabled]=\"isBotTyping\" (keydown.enter)=\"\r\n !isBotTyping && onSend(messageInput.value); !isBotTyping && (messageInput.value = '')\r\n \" [placeholder]=\"hintText\" />\r\n\r\n <button (click)=\"\r\n isBotTyping ? onStop() : onSend(messageInput.value);\r\n !isBotTyping && (messageInput.value = '')\r\n \">\r\n <mat-icon [class.stop-icon]=\"isBotTyping\">{{\r\n isBotTyping ? 'stop_circle' : 'send'\r\n }}</mat-icon>\r\n </button>\r\n </div>\r\n</div>", styles: [":host{display:block;width:100%}.chat-input{display:flex;padding:10px;border-top:1px solid var(--border-top-color);background-color:var(--background-color)}.chat-input .input-wrapper{position:relative;flex-grow:1}.chat-input input{width:100%;background-color:var(--background-color);border:1px solid var(--border-color);border-radius:16px;padding:10px 50px 10px 15px;font-size:14px;color:var(--text-color);caret-color:var(--hint-text-color);font-family:var(--font-family);box-sizing:border-box}.chat-input input::placeholder{color:var(--hint-text-color)}.chat-input input:focus{border-color:var(--primary-color);outline:none}.chat-input button{position:absolute;right:5px;top:50%;transform:translateY(-50%);background-color:transparent;color:var(--primary-color);border:none;cursor:pointer;display:flex;justify-content:center;align-items:center}.chat-input button .stop-icon{color:var(--red)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] }); }
|
|
23
|
+
}
|
|
24
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MessageInputComponent, decorators: [{
|
|
25
|
+
type: Component,
|
|
26
|
+
args: [{ selector: 'app-message-input', standalone: true, imports: [CommonModule, MatIconModule], template: "<!-- Chat Input -->\r\n<div class=\"chat-input\">\r\n <div class=\"input-wrapper\">\r\n <input #messageInput type=\"text\" [disabled]=\"isBotTyping\" (keydown.enter)=\"\r\n !isBotTyping && onSend(messageInput.value); !isBotTyping && (messageInput.value = '')\r\n \" [placeholder]=\"hintText\" />\r\n\r\n <button (click)=\"\r\n isBotTyping ? onStop() : onSend(messageInput.value);\r\n !isBotTyping && (messageInput.value = '')\r\n \">\r\n <mat-icon [class.stop-icon]=\"isBotTyping\">{{\r\n isBotTyping ? 'stop_circle' : 'send'\r\n }}</mat-icon>\r\n </button>\r\n </div>\r\n</div>", styles: [":host{display:block;width:100%}.chat-input{display:flex;padding:10px;border-top:1px solid var(--border-top-color);background-color:var(--background-color)}.chat-input .input-wrapper{position:relative;flex-grow:1}.chat-input input{width:100%;background-color:var(--background-color);border:1px solid var(--border-color);border-radius:16px;padding:10px 50px 10px 15px;font-size:14px;color:var(--text-color);caret-color:var(--hint-text-color);font-family:var(--font-family);box-sizing:border-box}.chat-input input::placeholder{color:var(--hint-text-color)}.chat-input input:focus{border-color:var(--primary-color);outline:none}.chat-input button{position:absolute;right:5px;top:50%;transform:translateY(-50%);background-color:transparent;color:var(--primary-color);border:none;cursor:pointer;display:flex;justify-content:center;align-items:center}.chat-input button .stop-icon{color:var(--red)}\n"] }]
|
|
27
|
+
}], propDecorators: { isBotTyping: [{
|
|
28
|
+
type: Input
|
|
29
|
+
}], hintText: [{
|
|
30
|
+
type: Input
|
|
31
|
+
}], send: [{
|
|
32
|
+
type: Output
|
|
33
|
+
}], stop: [{
|
|
34
|
+
type: Output
|
|
35
|
+
}] } });
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kb29oYm90L3NyYy9saWIvYXBwL2NoYXQvY29tcG9uZW50cy9tZXNzYWdlLWlucHV0L21lc3NhZ2UtaW5wdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZG9vaGJvdC9zcmMvbGliL2FwcC9jaGF0L2NvbXBvbmVudHMvbWVzc2FnZS1pbnB1dC9tZXNzYWdlLWlucHV0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7O0FBU3ZELE1BQU0sT0FBTyxxQkFBcUI7SUFQbEM7UUFRVyxnQkFBVyxHQUFZLEtBQUssQ0FBQztRQUM3QixhQUFRLEdBQVcsbUJBQW1CLENBQUM7UUFFdEMsU0FBSSxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFDbEMsU0FBSSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7S0FXM0M7SUFUQyxNQUFNLENBQUMsSUFBWTtRQUNqQixJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUNmLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ3RCO0lBQ0gsQ0FBQztJQUVELE1BQU07UUFDSixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ25CLENBQUM7K0dBZlUscUJBQXFCO21HQUFyQixxQkFBcUIsb0xDWGxDLGlvQkFnQk0sczdCRFRNLFlBQVksOEJBQUUsYUFBYTs7NEZBSTFCLHFCQUFxQjtrQkFQakMsU0FBUzsrQkFDRSxtQkFBbUIsY0FDakIsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLGFBQWEsQ0FBQzs4QkFLN0IsV0FBVztzQkFBbkIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUVJLElBQUk7c0JBQWIsTUFBTTtnQkFDRyxJQUFJO3NCQUFiLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1tZXNzYWdlLWlucHV0JyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIE1hdEljb25Nb2R1bGVdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9tZXNzYWdlLWlucHV0LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9tZXNzYWdlLWlucHV0LmNvbXBvbmVudC5zY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBNZXNzYWdlSW5wdXRDb21wb25lbnQge1xyXG4gIEBJbnB1dCgpIGlzQm90VHlwaW5nOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgaGludFRleHQ6IHN0cmluZyA9ICdUeXBlIGEgbWVzc2FnZS4uLic7XHJcblxyXG4gIEBPdXRwdXQoKSBzZW5kID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcbiAgQE91dHB1dCgpIHN0b3AgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcblxyXG4gIG9uU2VuZCh0ZXh0OiBzdHJpbmcpIHtcclxuICAgIGlmICh0ZXh0LnRyaW0oKSkge1xyXG4gICAgICB0aGlzLnNlbmQuZW1pdCh0ZXh0KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uU3RvcCgpIHtcclxuICAgIHRoaXMuc3RvcC5lbWl0KCk7XHJcbiAgfVxyXG59XHJcbiIsIjwhLS0gQ2hhdCBJbnB1dCAtLT5cclxuPGRpdiBjbGFzcz1cImNoYXQtaW5wdXRcIj5cclxuICA8ZGl2IGNsYXNzPVwiaW5wdXQtd3JhcHBlclwiPlxyXG4gICAgPGlucHV0ICNtZXNzYWdlSW5wdXQgdHlwZT1cInRleHRcIiBbZGlzYWJsZWRdPVwiaXNCb3RUeXBpbmdcIiAoa2V5ZG93bi5lbnRlcik9XCJcclxuICAgICAgICAhaXNCb3RUeXBpbmcgJiYgb25TZW5kKG1lc3NhZ2VJbnB1dC52YWx1ZSk7ICFpc0JvdFR5cGluZyAmJiAobWVzc2FnZUlucHV0LnZhbHVlID0gJycpXHJcbiAgICAgIFwiIFtwbGFjZWhvbGRlcl09XCJoaW50VGV4dFwiIC8+XHJcblxyXG4gICAgPGJ1dHRvbiAoY2xpY2spPVwiXHJcbiAgICAgICAgaXNCb3RUeXBpbmcgPyBvblN0b3AoKSA6IG9uU2VuZChtZXNzYWdlSW5wdXQudmFsdWUpO1xyXG4gICAgICAgICFpc0JvdFR5cGluZyAmJiAobWVzc2FnZUlucHV0LnZhbHVlID0gJycpXHJcbiAgICAgIFwiPlxyXG4gICAgICA8bWF0LWljb24gW2NsYXNzLnN0b3AtaWNvbl09XCJpc0JvdFR5cGluZ1wiPnt7XHJcbiAgICAgICAgaXNCb3RUeXBpbmcgPyAnc3RvcF9jaXJjbGUnIDogJ3NlbmQnXHJcbiAgICAgICAgfX08L21hdC1pY29uPlxyXG4gICAgPC9idXR0b24+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PiJdfQ==
|