@progress/kendo-angular-conversational-ui 21.4.1-develop.1 → 22.0.0-develop.1
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/ai-prompt/localization/messages.d.ts +1 -1
- package/ai-prompt/views/base-view.d.ts +1 -1
- package/chat/l10n/messages.d.ts +1 -1
- package/fesm2022/progress-kendo-angular-conversational-ui.mjs +182 -182
- package/inline-ai-prompt/localization/messages.d.ts +1 -1
- package/package.json +17 -25
- package/esm2022/ai-prompt/aiprompt.component.mjs +0 -556
- package/esm2022/ai-prompt/aiprompt.module.mjs +0 -53
- package/esm2022/ai-prompt/common/aiprompt.service.mjs +0 -75
- package/esm2022/ai-prompt/common/output-card.component.mjs +0 -230
- package/esm2022/ai-prompt/common/toolbar-focusable.directive.mjs +0 -72
- package/esm2022/ai-prompt/common/toolbar-navigation.service.mjs +0 -56
- package/esm2022/ai-prompt/localization/custom-messages.component.mjs +0 -54
- package/esm2022/ai-prompt/localization/localized-messages.directive.mjs +0 -39
- package/esm2022/ai-prompt/localization/messages.mjs +0 -77
- package/esm2022/ai-prompt/models/ai-prompt-settings.mjs +0 -5
- package/esm2022/ai-prompt/models/command-execute-event.mjs +0 -5
- package/esm2022/ai-prompt/models/command.interface.mjs +0 -5
- package/esm2022/ai-prompt/models/index.mjs +0 -5
- package/esm2022/ai-prompt/models/output-rating-change-event.mjs +0 -5
- package/esm2022/ai-prompt/models/prompt-output.interface.mjs +0 -5
- package/esm2022/ai-prompt/models/prompt-request-event.mjs +0 -5
- package/esm2022/ai-prompt/models/view-type.mjs +0 -5
- package/esm2022/ai-prompt/templates/aiprompt-output-body-template.directive.mjs +0 -33
- package/esm2022/ai-prompt/templates/aiprompt-output-template.directive.mjs +0 -33
- package/esm2022/ai-prompt/templates/toolbar-actions.template.mjs +0 -39
- package/esm2022/ai-prompt/utils.mjs +0 -26
- package/esm2022/ai-prompt/views/base-view.mjs +0 -98
- package/esm2022/ai-prompt/views/command-view.component.mjs +0 -100
- package/esm2022/ai-prompt/views/custom-view.component.mjs +0 -50
- package/esm2022/ai-prompt/views/index.mjs +0 -8
- package/esm2022/ai-prompt/views/output-view.component.mjs +0 -90
- package/esm2022/ai-prompt/views/prompt-view.component.mjs +0 -288
- package/esm2022/chat/api/action.interface.mjs +0 -5
- package/esm2022/chat/api/attachment.interface.mjs +0 -5
- package/esm2022/chat/api/chat-file-interface.mjs +0 -5
- package/esm2022/chat/api/chat-suggestion.interface.mjs +0 -5
- package/esm2022/chat/api/execute-action-event.mjs +0 -29
- package/esm2022/chat/api/file-action.mjs +0 -5
- package/esm2022/chat/api/file-download-event.interface.mjs +0 -5
- package/esm2022/chat/api/files-layout.mjs +0 -5
- package/esm2022/chat/api/index.mjs +0 -21
- package/esm2022/chat/api/message-action.mjs +0 -5
- package/esm2022/chat/api/message-settings.interface.mjs +0 -5
- package/esm2022/chat/api/message-width-mode.mjs +0 -5
- package/esm2022/chat/api/message.interface.mjs +0 -5
- package/esm2022/chat/api/post-message-event.mjs +0 -21
- package/esm2022/chat/api/preventable-event.mjs +0 -28
- package/esm2022/chat/api/send-button-settings.mjs +0 -5
- package/esm2022/chat/api/suggestions-layout.mjs +0 -5
- package/esm2022/chat/api/timestamp-visibility.mjs +0 -5
- package/esm2022/chat/api/user.interface.mjs +0 -5
- package/esm2022/chat/attachment.component.mjs +0 -105
- package/esm2022/chat/builtin-actions.mjs +0 -27
- package/esm2022/chat/cards/hero-card.component.mjs +0 -131
- package/esm2022/chat/chat-file.component.mjs +0 -144
- package/esm2022/chat/chat-item.mjs +0 -10
- package/esm2022/chat/chat-view.mjs +0 -80
- package/esm2022/chat/chat.component.mjs +0 -1015
- package/esm2022/chat/chat.directives.mjs +0 -18
- package/esm2022/chat/chat.module.mjs +0 -61
- package/esm2022/chat/common/chat.service.mjs +0 -179
- package/esm2022/chat/common/models/default-model-fields.mjs +0 -25
- package/esm2022/chat/common/models/formatted-text-parts.mjs +0 -5
- package/esm2022/chat/common/models/message-box-options.mjs +0 -5
- package/esm2022/chat/common/models/model-fields.mjs +0 -5
- package/esm2022/chat/common/scroll-anchor.directive.mjs +0 -80
- package/esm2022/chat/common/scroll-button.component.mjs +0 -81
- package/esm2022/chat/common/scroll.service.mjs +0 -110
- package/esm2022/chat/common/utils.mjs +0 -159
- package/esm2022/chat/l10n/custom-messages.component.mjs +0 -55
- package/esm2022/chat/l10n/localized-messages.directive.mjs +0 -40
- package/esm2022/chat/l10n/messages.mjs +0 -130
- package/esm2022/chat/message-attachments.component.mjs +0 -258
- package/esm2022/chat/message-box.component.mjs +0 -501
- package/esm2022/chat/message-list.component.mjs +0 -617
- package/esm2022/chat/message-reference-content.component.mjs +0 -86
- package/esm2022/chat/message.component.mjs +0 -740
- package/esm2022/chat/suggested-actions.component.mjs +0 -443
- package/esm2022/chat/templates/attachment-template.directive.mjs +0 -43
- package/esm2022/chat/templates/author-message-content-template.directive.mjs +0 -39
- package/esm2022/chat/templates/author-message-template.directive.mjs +0 -39
- package/esm2022/chat/templates/header-template.directive.mjs +0 -33
- package/esm2022/chat/templates/message-box.directive.mjs +0 -36
- package/esm2022/chat/templates/message-content-template.directive.mjs +0 -39
- package/esm2022/chat/templates/message-template.directive.mjs +0 -39
- package/esm2022/chat/templates/no-data-template.directive.mjs +0 -38
- package/esm2022/chat/templates/receiver-message-content-template.directive.mjs +0 -39
- package/esm2022/chat/templates/receiver-message-template.directive.mjs +0 -39
- package/esm2022/chat/templates/status-template.directive.mjs +0 -33
- package/esm2022/chat/templates/suggestion-template.directive.mjs +0 -36
- package/esm2022/chat/templates/timestamp-template.directive.mjs +0 -42
- package/esm2022/chat/templates/user-status-template.directive.mjs +0 -38
- package/esm2022/conversational-ui.module.mjs +0 -73
- package/esm2022/directives.mjs +0 -145
- package/esm2022/index.mjs +0 -40
- package/esm2022/inline-ai-prompt/inlineaiprompt-content.component.mjs +0 -548
- package/esm2022/inline-ai-prompt/inlineaiprompt.component.mjs +0 -351
- package/esm2022/inline-ai-prompt/inlineaiprompt.module.mjs +0 -46
- package/esm2022/inline-ai-prompt/inlineaiprompt.service.mjs +0 -92
- package/esm2022/inline-ai-prompt/localization/custom-messages.component.mjs +0 -51
- package/esm2022/inline-ai-prompt/localization/localized-messages.directive.mjs +0 -39
- package/esm2022/inline-ai-prompt/localization/messages.mjs +0 -35
- package/esm2022/inline-ai-prompt/models/command.interface.mjs +0 -5
- package/esm2022/inline-ai-prompt/models/index.mjs +0 -5
- package/esm2022/inline-ai-prompt/models/inlineaiprompt-popupsettings.mjs +0 -5
- package/esm2022/inline-ai-prompt/models/inlineaiprompt-settings.mjs +0 -59
- package/esm2022/inline-ai-prompt/models/messages.mjs +0 -8
- package/esm2022/inline-ai-prompt/models/output-action-click-event.mjs +0 -5
- package/esm2022/inline-ai-prompt/models/output-action.interface.mjs +0 -5
- package/esm2022/inline-ai-prompt/models/prompt-output.interface.mjs +0 -5
- package/esm2022/inline-ai-prompt/models/prompt-request-event.mjs +0 -5
- package/esm2022/inline-ai-prompt/output-template.directive.mjs +0 -38
- package/esm2022/inline-ai-prompt/utils.mjs +0 -57
- package/esm2022/package-metadata.mjs +0 -16
- package/esm2022/progress-kendo-angular-conversational-ui.mjs +0 -8
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
/**-----------------------------------------------------------------------------------------
|
|
2
|
-
* Copyright © 2026 Progress Software Corporation. All rights reserved.
|
|
3
|
-
* Licensed under commercial license. See LICENSE.md in the project root for more information
|
|
4
|
-
*-------------------------------------------------------------------------------------------*/
|
|
5
|
-
export { ChatComponent } from './chat.component';
|
|
6
|
-
export { AttachmentTemplateDirective } from './templates/attachment-template.directive';
|
|
7
|
-
export { MessageContentTemplateDirective } from './templates/message-content-template.directive';
|
|
8
|
-
export { MessageTemplateDirective } from './templates/message-template.directive';
|
|
9
|
-
export { ChatUserStatusTemplateDirective } from './templates/user-status-template.directive';
|
|
10
|
-
export { ChatMessageBoxTemplateDirective } from './templates/message-box.directive';
|
|
11
|
-
export { ChatHeaderTemplateDirective } from './templates/header-template.directive';
|
|
12
|
-
export { NoDataTemplateDirective } from './templates/no-data-template.directive';
|
|
13
|
-
export { ChatTimestampTemplateDirective } from './templates/timestamp-template.directive';
|
|
14
|
-
export { ChatStatusTemplateDirective } from './templates/status-template.directive';
|
|
15
|
-
export { AuthorMessageContentTemplateDirective } from './templates/author-message-content-template.directive';
|
|
16
|
-
export { ReceiverMessageContentTemplateDirective } from './templates/receiver-message-content-template.directive';
|
|
17
|
-
export { ReceiverMessageTemplateDirective } from './templates/receiver-message-template.directive';
|
|
18
|
-
export { AuthorMessageTemplateDirective } from './templates/author-message-template.directive';
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
/**-----------------------------------------------------------------------------------------
|
|
2
|
-
* Copyright © 2026 Progress Software Corporation. All rights reserved.
|
|
3
|
-
* Licensed under commercial license. See LICENSE.md in the project root for more information
|
|
4
|
-
*-------------------------------------------------------------------------------------------*/
|
|
5
|
-
import { ResizeBatchService } from '@progress/kendo-angular-common';
|
|
6
|
-
import { NgModule } from '@angular/core';
|
|
7
|
-
import { IconsService } from '@progress/kendo-angular-icons';
|
|
8
|
-
import { KENDO_CHAT } from '../directives';
|
|
9
|
-
import * as i0 from "@angular/core";
|
|
10
|
-
import * as i1 from "./chat.component";
|
|
11
|
-
import * as i2 from "./l10n/custom-messages.component";
|
|
12
|
-
import * as i3 from "./templates/attachment-template.directive";
|
|
13
|
-
import * as i4 from "./templates/author-message-content-template.directive";
|
|
14
|
-
import * as i5 from "./templates/receiver-message-content-template.directive";
|
|
15
|
-
import * as i6 from "./templates/message-content-template.directive";
|
|
16
|
-
import * as i7 from "./templates/author-message-template.directive";
|
|
17
|
-
import * as i8 from "./templates/receiver-message-template.directive";
|
|
18
|
-
import * as i9 from "./templates/message-template.directive";
|
|
19
|
-
import * as i10 from "./cards/hero-card.component";
|
|
20
|
-
import * as i11 from "./templates/message-box.directive";
|
|
21
|
-
import * as i12 from "./templates/header-template.directive";
|
|
22
|
-
import * as i13 from "./templates/no-data-template.directive";
|
|
23
|
-
import * as i14 from "./templates/timestamp-template.directive";
|
|
24
|
-
import * as i15 from "./templates/status-template.directive";
|
|
25
|
-
import * as i16 from "./templates/suggestion-template.directive";
|
|
26
|
-
import * as i17 from "./templates/user-status-template.directive";
|
|
27
|
-
// IMPORTANT: NgModule export kept for backwards compatibility
|
|
28
|
-
/**
|
|
29
|
-
* Represents the [`NgModule`](link:site.data.urls.angular['ngmodules']) for the Chat component.
|
|
30
|
-
*
|
|
31
|
-
* @example
|
|
32
|
-
* ```ts-no-run
|
|
33
|
-
* import { NgModule } from '@angular/core';
|
|
34
|
-
* import { Component } from '@angular/core';
|
|
35
|
-
* import { BrowserModule } from '@angular/platform-browser';
|
|
36
|
-
*
|
|
37
|
-
* import { ChatModule } from '@progress/kendo-angular-conversational-ui';
|
|
38
|
-
* import { AppComponent } from './app.component';
|
|
39
|
-
*
|
|
40
|
-
* _@NgModule({
|
|
41
|
-
* imports: [BrowserModule, ChatModule],
|
|
42
|
-
* declarations: [AppComponent],
|
|
43
|
-
* bootstrap: [AppComponent]
|
|
44
|
-
* })
|
|
45
|
-
*
|
|
46
|
-
* export class AppModule { }
|
|
47
|
-
* ```
|
|
48
|
-
*/
|
|
49
|
-
export class ChatModule {
|
|
50
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ChatModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
51
|
-
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.14", ngImport: i0, type: ChatModule, imports: [i1.ChatComponent, i2.CustomMessagesComponent, i3.AttachmentTemplateDirective, i4.AuthorMessageContentTemplateDirective, i5.ReceiverMessageContentTemplateDirective, i6.MessageContentTemplateDirective, i7.AuthorMessageTemplateDirective, i8.ReceiverMessageTemplateDirective, i9.MessageTemplateDirective, i10.HeroCardComponent, i11.ChatMessageBoxTemplateDirective, i12.ChatHeaderTemplateDirective, i13.NoDataTemplateDirective, i14.ChatTimestampTemplateDirective, i15.ChatStatusTemplateDirective, i16.ChatSuggestionTemplateDirective, i17.ChatUserStatusTemplateDirective], exports: [i1.ChatComponent, i2.CustomMessagesComponent, i3.AttachmentTemplateDirective, i4.AuthorMessageContentTemplateDirective, i5.ReceiverMessageContentTemplateDirective, i6.MessageContentTemplateDirective, i7.AuthorMessageTemplateDirective, i8.ReceiverMessageTemplateDirective, i9.MessageTemplateDirective, i10.HeroCardComponent, i11.ChatMessageBoxTemplateDirective, i12.ChatHeaderTemplateDirective, i13.NoDataTemplateDirective, i14.ChatTimestampTemplateDirective, i15.ChatStatusTemplateDirective, i16.ChatSuggestionTemplateDirective, i17.ChatUserStatusTemplateDirective] });
|
|
52
|
-
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ChatModule, providers: [IconsService, ResizeBatchService], imports: [i1.ChatComponent, i10.HeroCardComponent] });
|
|
53
|
-
}
|
|
54
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ChatModule, decorators: [{
|
|
55
|
-
type: NgModule,
|
|
56
|
-
args: [{
|
|
57
|
-
exports: [...KENDO_CHAT],
|
|
58
|
-
imports: [...KENDO_CHAT],
|
|
59
|
-
providers: [IconsService, ResizeBatchService]
|
|
60
|
-
}]
|
|
61
|
-
}] });
|
|
@@ -1,179 +0,0 @@
|
|
|
1
|
-
/**-----------------------------------------------------------------------------------------
|
|
2
|
-
* Copyright © 2026 Progress Software Corporation. All rights reserved.
|
|
3
|
-
* Licensed under commercial license. See LICENSE.md in the project root for more information
|
|
4
|
-
*-------------------------------------------------------------------------------------------*/
|
|
5
|
-
import { Injectable } from '@angular/core';
|
|
6
|
-
import { Subject } from 'rxjs';
|
|
7
|
-
import { STB_DEFAULT_SETTINGS, SEND_BTN_DEFAULT_SETTINGS, FILESELECT_DEFAULT_SETTINGS, SUGGESTIONS_LAYOUT_DEFAULT_SETTINGS } from './utils';
|
|
8
|
-
import * as i0 from "@angular/core";
|
|
9
|
-
/**
|
|
10
|
-
* @hidden
|
|
11
|
-
*/
|
|
12
|
-
export class ChatService {
|
|
13
|
-
authorId;
|
|
14
|
-
messageWidthMode;
|
|
15
|
-
messageToolbarActions = [];
|
|
16
|
-
messageContextMenuActions = [];
|
|
17
|
-
calculatedContextMenuActions = [];
|
|
18
|
-
fileActions = [];
|
|
19
|
-
toggleMessageState = false;
|
|
20
|
-
reply;
|
|
21
|
-
messages = [];
|
|
22
|
-
chatElement;
|
|
23
|
-
messageElementsMap = new Map();
|
|
24
|
-
messagesContextMenu;
|
|
25
|
-
activeMessage;
|
|
26
|
-
activeMessageElement;
|
|
27
|
-
selectOnMenuClose = false;
|
|
28
|
-
active = false;
|
|
29
|
-
messageFilesLayout = 'vertical';
|
|
30
|
-
timestampVisibility = 'focus';
|
|
31
|
-
showUsername = true;
|
|
32
|
-
showAvatar = true;
|
|
33
|
-
_enableSpeechToText = STB_DEFAULT_SETTINGS;
|
|
34
|
-
_enableFileSelect = FILESELECT_DEFAULT_SETTINGS;
|
|
35
|
-
_sendButtonSettings = SEND_BTN_DEFAULT_SETTINGS;
|
|
36
|
-
_suggestionsLayout = SUGGESTIONS_LAYOUT_DEFAULT_SETTINGS;
|
|
37
|
-
_quickActionsLayout = SUGGESTIONS_LAYOUT_DEFAULT_SETTINGS;
|
|
38
|
-
_authorMessageSettings;
|
|
39
|
-
_receiverMessageSettings;
|
|
40
|
-
_allowMessageCollapse;
|
|
41
|
-
subjects = {
|
|
42
|
-
toolbarAction: new Subject(),
|
|
43
|
-
contextMenuAction: new Subject(),
|
|
44
|
-
fileAction: new Subject(),
|
|
45
|
-
fileDownload: new Subject(),
|
|
46
|
-
replyReferenceClick: new Subject(),
|
|
47
|
-
inputValueChange: new Subject(),
|
|
48
|
-
contextMenuVisibilityChange: new Subject(),
|
|
49
|
-
suggestionsLayoutChange: new Subject(),
|
|
50
|
-
quickActionsLayoutChange: new Subject(),
|
|
51
|
-
authorMessageSettingsChange: new Subject(),
|
|
52
|
-
receiverMessageSettingsChange: new Subject(),
|
|
53
|
-
allowMessageCollapseChange: new Subject(),
|
|
54
|
-
};
|
|
55
|
-
toolbarAction$ = this.subjects.toolbarAction.asObservable();
|
|
56
|
-
contextMenuAction$ = this.subjects.contextMenuAction.asObservable();
|
|
57
|
-
fileAction$ = this.subjects.fileAction.asObservable();
|
|
58
|
-
fileDownload$ = this.subjects.fileDownload.asObservable();
|
|
59
|
-
replyReferenceClick$ = this.subjects.replyReferenceClick.asObservable();
|
|
60
|
-
inputValueChange$ = this.subjects.inputValueChange.asObservable();
|
|
61
|
-
contextMenuVisibilityChange$ = this.subjects.contextMenuVisibilityChange.asObservable();
|
|
62
|
-
suggestionsLayoutChange$ = this.subjects.suggestionsLayoutChange.asObservable();
|
|
63
|
-
quickActionsLayoutChange$ = this.subjects.quickActionsLayoutChange.asObservable();
|
|
64
|
-
authorMessageSettingsChange$ = this.subjects.authorMessageSettingsChange.asObservable();
|
|
65
|
-
receiverMessageSettingsChange$ = this.subjects.receiverMessageSettingsChange.asObservable();
|
|
66
|
-
allowMessageCollapseChange$ = this.subjects.allowMessageCollapseChange.asObservable();
|
|
67
|
-
set authorMessageSettings(settings) {
|
|
68
|
-
const previousSettings = this._authorMessageSettings;
|
|
69
|
-
if (JSON.stringify(previousSettings) !== JSON.stringify(settings)) {
|
|
70
|
-
this.updateComponentSettings('_authorMessageSettings', settings, null);
|
|
71
|
-
this.emit('authorMessageSettingsChange', this._authorMessageSettings);
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
get authorMessageSettings() {
|
|
75
|
-
return this._authorMessageSettings;
|
|
76
|
-
}
|
|
77
|
-
set receiverMessageSettings(settings) {
|
|
78
|
-
const previousSettings = this._receiverMessageSettings;
|
|
79
|
-
if (JSON.stringify(previousSettings) !== JSON.stringify(settings)) {
|
|
80
|
-
this.updateComponentSettings('_receiverMessageSettings', settings, null);
|
|
81
|
-
this.emit('receiverMessageSettingsChange', this._receiverMessageSettings);
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
get receiverMessageSettings() {
|
|
85
|
-
return this._receiverMessageSettings;
|
|
86
|
-
}
|
|
87
|
-
set enableSpeechToText(settings) {
|
|
88
|
-
this.updateComponentSettings('_enableSpeechToText', settings, STB_DEFAULT_SETTINGS);
|
|
89
|
-
}
|
|
90
|
-
get enableSpeechToText() {
|
|
91
|
-
return this._enableSpeechToText;
|
|
92
|
-
}
|
|
93
|
-
set enableFileSelect(settings) {
|
|
94
|
-
this.updateComponentSettings('_enableFileSelect', settings, FILESELECT_DEFAULT_SETTINGS);
|
|
95
|
-
}
|
|
96
|
-
get enableFileSelect() {
|
|
97
|
-
return this._enableFileSelect;
|
|
98
|
-
}
|
|
99
|
-
set sendButtonSettings(settings) {
|
|
100
|
-
this.updateComponentSettings('_sendButtonSettings', settings, SEND_BTN_DEFAULT_SETTINGS);
|
|
101
|
-
}
|
|
102
|
-
get sendButtonSettings() {
|
|
103
|
-
return this._sendButtonSettings;
|
|
104
|
-
}
|
|
105
|
-
set suggestionsLayout(layoutMode) {
|
|
106
|
-
this._suggestionsLayout = layoutMode;
|
|
107
|
-
this.emit('suggestionsLayoutChange', this._suggestionsLayout);
|
|
108
|
-
}
|
|
109
|
-
get suggestionsLayout() {
|
|
110
|
-
return this._suggestionsLayout;
|
|
111
|
-
}
|
|
112
|
-
set quickActionsLayout(layoutMode) {
|
|
113
|
-
this._quickActionsLayout = layoutMode;
|
|
114
|
-
this.emit('quickActionsLayoutChange', this._quickActionsLayout);
|
|
115
|
-
}
|
|
116
|
-
get quickActionsLayout() {
|
|
117
|
-
return this._quickActionsLayout;
|
|
118
|
-
}
|
|
119
|
-
set allowMessageCollapse(value) {
|
|
120
|
-
const previousValue = this._allowMessageCollapse;
|
|
121
|
-
if (previousValue !== value) {
|
|
122
|
-
this._allowMessageCollapse = value;
|
|
123
|
-
this.emit('allowMessageCollapseChange', this._allowMessageCollapse);
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
get allowMessageCollapse() {
|
|
127
|
-
return this._allowMessageCollapse;
|
|
128
|
-
}
|
|
129
|
-
calculateContextMenuActions(isOwn) {
|
|
130
|
-
const settings = isOwn ? this.authorMessageSettings : this.receiverMessageSettings;
|
|
131
|
-
if (settings?.messageContextMenuActions) {
|
|
132
|
-
this.calculatedContextMenuActions = settings.messageContextMenuActions;
|
|
133
|
-
return;
|
|
134
|
-
}
|
|
135
|
-
this.calculatedContextMenuActions = this.messageContextMenuActions || [];
|
|
136
|
-
}
|
|
137
|
-
emit(subjectKey, value) {
|
|
138
|
-
(this.subjects[subjectKey]).next(value);
|
|
139
|
-
}
|
|
140
|
-
getMessageById(id) {
|
|
141
|
-
return this.messages.find(message => message.id === id);
|
|
142
|
-
}
|
|
143
|
-
registerMessageElement(messageId, elementRef) {
|
|
144
|
-
this.messageElementsMap.set(messageId, elementRef);
|
|
145
|
-
}
|
|
146
|
-
unregisterMessageElement(messageId) {
|
|
147
|
-
this.messageElementsMap.delete(messageId);
|
|
148
|
-
if (this.reply?.id === messageId) {
|
|
149
|
-
this.reply = null;
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
scrollToMessage(messageId) {
|
|
153
|
-
const elementRef = this.messageElementsMap.get(messageId);
|
|
154
|
-
if (elementRef?.nativeElement) {
|
|
155
|
-
elementRef.nativeElement.scrollIntoView({ behavior: 'smooth', block: 'nearest' });
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
focusActiveMessageElement() {
|
|
159
|
-
if (this.activeMessageElement) {
|
|
160
|
-
this.activeMessageElement.element?.nativeElement?.focus();
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
|
-
updateComponentSettings(property, settings, defaultSettings) {
|
|
164
|
-
if (settings === true) {
|
|
165
|
-
this[property] = defaultSettings;
|
|
166
|
-
}
|
|
167
|
-
else if (settings === false) {
|
|
168
|
-
this[property] = null;
|
|
169
|
-
}
|
|
170
|
-
else {
|
|
171
|
-
this[property] = { ...defaultSettings, ...settings };
|
|
172
|
-
}
|
|
173
|
-
}
|
|
174
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ChatService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
175
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ChatService });
|
|
176
|
-
}
|
|
177
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ChatService, decorators: [{
|
|
178
|
-
type: Injectable
|
|
179
|
-
}] });
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
/**-----------------------------------------------------------------------------------------
|
|
2
|
-
* Copyright © 2026 Progress Software Corporation. All rights reserved.
|
|
3
|
-
* Licensed under commercial license. See LICENSE.md in the project root for more information
|
|
4
|
-
*-------------------------------------------------------------------------------------------*/
|
|
5
|
-
/**
|
|
6
|
-
* @hidden
|
|
7
|
-
*/
|
|
8
|
-
export const defaultModelFields = {
|
|
9
|
-
idField: 'id',
|
|
10
|
-
textField: 'text',
|
|
11
|
-
authorIdField: 'authorId',
|
|
12
|
-
authorNameField: 'authorName',
|
|
13
|
-
authorImageUrlField: 'authorImageUrl',
|
|
14
|
-
authorImageAltTextField: 'authorImageAltText',
|
|
15
|
-
timestampField: 'timestamp',
|
|
16
|
-
statusField: 'status',
|
|
17
|
-
filesField: 'files',
|
|
18
|
-
attachmentsField: 'attachments',
|
|
19
|
-
attachmentLayoutField: 'attachmentLayout',
|
|
20
|
-
suggestedActionsField: 'suggestedActions',
|
|
21
|
-
isPinnedField: 'isPinned',
|
|
22
|
-
replyToIdField: 'replyToId',
|
|
23
|
-
isDeletedField: 'isDeleted',
|
|
24
|
-
typingField: 'typing'
|
|
25
|
-
};
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
/**-----------------------------------------------------------------------------------------
|
|
2
|
-
* Copyright © 2026 Progress Software Corporation. All rights reserved.
|
|
3
|
-
* Licensed under commercial license. See LICENSE.md in the project root for more information
|
|
4
|
-
*-------------------------------------------------------------------------------------------*/
|
|
5
|
-
export {};
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
/**-----------------------------------------------------------------------------------------
|
|
2
|
-
* Copyright © 2026 Progress Software Corporation. All rights reserved.
|
|
3
|
-
* Licensed under commercial license. See LICENSE.md in the project root for more information
|
|
4
|
-
*-------------------------------------------------------------------------------------------*/
|
|
5
|
-
export {};
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
/**-----------------------------------------------------------------------------------------
|
|
2
|
-
* Copyright © 2026 Progress Software Corporation. All rights reserved.
|
|
3
|
-
* Licensed under commercial license. See LICENSE.md in the project root for more information
|
|
4
|
-
*-------------------------------------------------------------------------------------------*/
|
|
5
|
-
export {};
|
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
/**-----------------------------------------------------------------------------------------
|
|
2
|
-
* Copyright © 2026 Progress Software Corporation. All rights reserved.
|
|
3
|
-
* Licensed under commercial license. See LICENSE.md in the project root for more information
|
|
4
|
-
*-------------------------------------------------------------------------------------------*/
|
|
5
|
-
import { Directive, ElementRef, EventEmitter, HostBinding, Input, NgZone, Output, Renderer2 } from '@angular/core';
|
|
6
|
-
import * as i0 from "@angular/core";
|
|
7
|
-
// Consider scroll to be at the bottom when within this number of pixels from the container height.
|
|
8
|
-
const maxDelta = 2;
|
|
9
|
-
/**
|
|
10
|
-
* @hidden
|
|
11
|
-
*/
|
|
12
|
-
export class ScrollAnchorDirective {
|
|
13
|
-
element;
|
|
14
|
-
zone;
|
|
15
|
-
renderer;
|
|
16
|
-
autoScroll = true;
|
|
17
|
-
autoScrollChange = new EventEmitter();
|
|
18
|
-
overflowAnchor = 'none';
|
|
19
|
-
scrolling = false;
|
|
20
|
-
unsubscribe;
|
|
21
|
-
constructor(element, zone, renderer) {
|
|
22
|
-
this.element = element;
|
|
23
|
-
this.zone = zone;
|
|
24
|
-
this.renderer = renderer;
|
|
25
|
-
}
|
|
26
|
-
ngOnInit() {
|
|
27
|
-
this.zone.runOutsideAngular(() => {
|
|
28
|
-
this.unsubscribe = this.renderer.listen(this.element.nativeElement, 'scroll', () => this.onScroll());
|
|
29
|
-
});
|
|
30
|
-
}
|
|
31
|
-
ngAfterViewInit() {
|
|
32
|
-
this.scrollToBottom();
|
|
33
|
-
}
|
|
34
|
-
ngOnDestroy() {
|
|
35
|
-
if (this.unsubscribe) {
|
|
36
|
-
this.unsubscribe();
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
onScroll() {
|
|
40
|
-
if (this.scrolling) {
|
|
41
|
-
return;
|
|
42
|
-
}
|
|
43
|
-
const el = this.element.nativeElement;
|
|
44
|
-
const bottom = el.scrollTop + el.offsetHeight;
|
|
45
|
-
const height = el.scrollHeight;
|
|
46
|
-
const atBottom = height - bottom < maxDelta;
|
|
47
|
-
if (this.autoScroll !== atBottom) {
|
|
48
|
-
this.zone.run(() => {
|
|
49
|
-
this.autoScroll = atBottom;
|
|
50
|
-
this.autoScrollChange.emit(this.autoScroll);
|
|
51
|
-
});
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
scrollToBottom() {
|
|
55
|
-
if (!this.autoScroll) {
|
|
56
|
-
return;
|
|
57
|
-
}
|
|
58
|
-
const el = this.element.nativeElement;
|
|
59
|
-
el.scrollTop = el.scrollHeight - el.clientHeight;
|
|
60
|
-
this.scrolling = true;
|
|
61
|
-
this.zone.runOutsideAngular(() => setTimeout(() => this.scrolling = false, 1000));
|
|
62
|
-
}
|
|
63
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ScrollAnchorDirective, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });
|
|
64
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.14", type: ScrollAnchorDirective, isStandalone: true, selector: "[kendoChatScrollAnchor]", inputs: { autoScroll: "autoScroll" }, outputs: { autoScrollChange: "autoScrollChange" }, host: { properties: { "style.overflow-anchor": "this.overflowAnchor" } }, exportAs: ["scrollAnchor"], ngImport: i0 });
|
|
65
|
-
}
|
|
66
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ScrollAnchorDirective, decorators: [{
|
|
67
|
-
type: Directive,
|
|
68
|
-
args: [{
|
|
69
|
-
selector: '[kendoChatScrollAnchor]',
|
|
70
|
-
exportAs: 'scrollAnchor',
|
|
71
|
-
standalone: true
|
|
72
|
-
}]
|
|
73
|
-
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: i0.Renderer2 }], propDecorators: { autoScroll: [{
|
|
74
|
-
type: Input
|
|
75
|
-
}], autoScrollChange: [{
|
|
76
|
-
type: Output
|
|
77
|
-
}], overflowAnchor: [{
|
|
78
|
-
type: HostBinding,
|
|
79
|
-
args: ['style.overflow-anchor']
|
|
80
|
-
}] } });
|
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
/**-----------------------------------------------------------------------------------------
|
|
2
|
-
* Copyright © 2026 Progress Software Corporation. All rights reserved.
|
|
3
|
-
* Licensed under commercial license. See LICENSE.md in the project root for more information
|
|
4
|
-
*-------------------------------------------------------------------------------------------*/
|
|
5
|
-
import { Component, ElementRef, HostBinding, Input, Renderer2, NgZone, Output, EventEmitter, } from '@angular/core';
|
|
6
|
-
import { Subscription } from 'rxjs';
|
|
7
|
-
import { chevronLeftIcon, chevronRightIcon } from '@progress/kendo-svg-icons';
|
|
8
|
-
import { LocalizationService } from '@progress/kendo-angular-l10n';
|
|
9
|
-
import { IconWrapperComponent } from '@progress/kendo-angular-icons';
|
|
10
|
-
import * as i0 from "@angular/core";
|
|
11
|
-
import * as i1 from "@progress/kendo-angular-l10n";
|
|
12
|
-
const DIRECTION_CLASSES = {
|
|
13
|
-
left: 'chevron-left',
|
|
14
|
-
right: 'chevron-right',
|
|
15
|
-
};
|
|
16
|
-
/**
|
|
17
|
-
* @hidden
|
|
18
|
-
*/
|
|
19
|
-
export class ChatScrollableButtonComponent {
|
|
20
|
-
host;
|
|
21
|
-
renderer;
|
|
22
|
-
ngZone;
|
|
23
|
-
localization;
|
|
24
|
-
role = 'button';
|
|
25
|
-
prev = false;
|
|
26
|
-
onClick = new EventEmitter();
|
|
27
|
-
get scrollButtonIconClass() {
|
|
28
|
-
const defaultPrevIcon = !this.localization.rtl ? DIRECTION_CLASSES.left : DIRECTION_CLASSES.right;
|
|
29
|
-
const defaultNextIcon = !this.localization.rtl ? DIRECTION_CLASSES.right : DIRECTION_CLASSES.left;
|
|
30
|
-
return this.prev ? defaultPrevIcon : defaultNextIcon;
|
|
31
|
-
}
|
|
32
|
-
get scrollButtonSVGIcon() {
|
|
33
|
-
const defaultPrevSVGIcon = !this.localization.rtl ? this.chevronLeftIcon : this.chevronRightIcon;
|
|
34
|
-
const defaultNextSVGIcon = !this.localization.rtl ? this.chevronRightIcon : this.chevronLeftIcon;
|
|
35
|
-
return this.prev ? defaultPrevSVGIcon : defaultNextSVGIcon;
|
|
36
|
-
}
|
|
37
|
-
chevronLeftIcon = chevronLeftIcon;
|
|
38
|
-
chevronRightIcon = chevronRightIcon;
|
|
39
|
-
subs = new Subscription();
|
|
40
|
-
constructor(host, renderer, ngZone, localization) {
|
|
41
|
-
this.host = host;
|
|
42
|
-
this.renderer = renderer;
|
|
43
|
-
this.ngZone = ngZone;
|
|
44
|
-
this.localization = localization;
|
|
45
|
-
}
|
|
46
|
-
ngAfterViewInit() {
|
|
47
|
-
this.ngZone.runOutsideAngular(() => {
|
|
48
|
-
this.subs.add(this.renderer.listen(this.host.nativeElement, 'click', () => this.clickHandler()));
|
|
49
|
-
});
|
|
50
|
-
}
|
|
51
|
-
ngOnDestroy() {
|
|
52
|
-
this.subs.unsubscribe();
|
|
53
|
-
}
|
|
54
|
-
clickHandler() {
|
|
55
|
-
const buttonType = this.prev ? 'prev' : 'next';
|
|
56
|
-
this.onClick.emit(buttonType);
|
|
57
|
-
}
|
|
58
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ChatScrollableButtonComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.NgZone }, { token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });
|
|
59
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: ChatScrollableButtonComponent, isStandalone: true, selector: "[kendoChatScrollableButton]", inputs: { prev: "prev" }, outputs: { onClick: "onClick" }, host: { properties: { "attr.role": "this.role" } }, ngImport: i0, template: `
|
|
60
|
-
<kendo-icon-wrapper [name]="scrollButtonIconClass" [svgIcon]="scrollButtonSVGIcon" innerCssClass="k-button-icon"> </kendo-icon-wrapper>
|
|
61
|
-
`, isInline: true, dependencies: [{ kind: "component", type: IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }] });
|
|
62
|
-
}
|
|
63
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ChatScrollableButtonComponent, decorators: [{
|
|
64
|
-
type: Component,
|
|
65
|
-
args: [{
|
|
66
|
-
template: `
|
|
67
|
-
<kendo-icon-wrapper [name]="scrollButtonIconClass" [svgIcon]="scrollButtonSVGIcon" innerCssClass="k-button-icon"> </kendo-icon-wrapper>
|
|
68
|
-
`,
|
|
69
|
-
// eslint-disable-next-line @angular-eslint/component-selector
|
|
70
|
-
selector: '[kendoChatScrollableButton]',
|
|
71
|
-
standalone: true,
|
|
72
|
-
imports: [IconWrapperComponent],
|
|
73
|
-
}]
|
|
74
|
-
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.NgZone }, { type: i1.LocalizationService }], propDecorators: { role: [{
|
|
75
|
-
type: HostBinding,
|
|
76
|
-
args: ['attr.role']
|
|
77
|
-
}], prev: [{
|
|
78
|
-
type: Input
|
|
79
|
-
}], onClick: [{
|
|
80
|
-
type: Output
|
|
81
|
-
}] } });
|
|
@@ -1,110 +0,0 @@
|
|
|
1
|
-
/**-----------------------------------------------------------------------------------------
|
|
2
|
-
* Copyright © 2026 Progress Software Corporation. All rights reserved.
|
|
3
|
-
* Licensed under commercial license. See LICENSE.md in the project root for more information
|
|
4
|
-
*-------------------------------------------------------------------------------------------*/
|
|
5
|
-
import { Injectable, NgZone } from '@angular/core';
|
|
6
|
-
import { isDocumentAvailable } from '@progress/kendo-angular-common';
|
|
7
|
-
import { Subject } from 'rxjs';
|
|
8
|
-
import { LocalizationService } from '@progress/kendo-angular-l10n';
|
|
9
|
-
import * as i0 from "@angular/core";
|
|
10
|
-
import * as i1 from "@progress/kendo-angular-l10n";
|
|
11
|
-
const DEFAULT_SCROLL_BEHAVIOR = 'smooth';
|
|
12
|
-
const DEFAULT_SCROLL_SPEED = 100;
|
|
13
|
-
/**
|
|
14
|
-
* @hidden
|
|
15
|
-
*/
|
|
16
|
-
export class SuggestionsScrollService {
|
|
17
|
-
ngZone;
|
|
18
|
-
localization;
|
|
19
|
-
owner;
|
|
20
|
-
position = 0;
|
|
21
|
-
scrollButtonActiveStateChange = new Subject();
|
|
22
|
-
get scrollElement() {
|
|
23
|
-
return this.owner.suggestionsContainer?.nativeElement;
|
|
24
|
-
}
|
|
25
|
-
get scrollContainerOverflowSize() {
|
|
26
|
-
if (!isDocumentAvailable()) {
|
|
27
|
-
return 0;
|
|
28
|
-
}
|
|
29
|
-
if (!this.scrollElement) {
|
|
30
|
-
return 0;
|
|
31
|
-
}
|
|
32
|
-
const overflowSize = Math.floor(this.scrollElement.scrollWidth - this.scrollElement.offsetWidth);
|
|
33
|
-
return overflowSize < 0 ? 0 : overflowSize;
|
|
34
|
-
}
|
|
35
|
-
get suggestionsOverflow() {
|
|
36
|
-
return this.scrollContainerOverflowSize > 0;
|
|
37
|
-
}
|
|
38
|
-
constructor(ngZone, localization) {
|
|
39
|
-
this.ngZone = ngZone;
|
|
40
|
-
this.localization = localization;
|
|
41
|
-
}
|
|
42
|
-
toggleScrollButtonsState() {
|
|
43
|
-
const suggestedActions = this.owner;
|
|
44
|
-
if (!suggestedActions?.hasScrollButtons) {
|
|
45
|
-
return;
|
|
46
|
-
}
|
|
47
|
-
const currentPrevButtonActive = !this.isDisabled('prev');
|
|
48
|
-
const currentNextButtonActive = !this.isDisabled('next');
|
|
49
|
-
const defaultOffset = 1;
|
|
50
|
-
const rtlDelta = this.localization.rtl ? -1 : 1;
|
|
51
|
-
const calculatedPrevButtonActive = (this.position * rtlDelta) > 0 && this.scrollContainerOverflowSize > 0;
|
|
52
|
-
const calculatedNextButtonActive = (this.position * rtlDelta) < this.scrollContainerOverflowSize - defaultOffset && this.scrollContainerOverflowSize > 0;
|
|
53
|
-
if (calculatedPrevButtonActive !== currentPrevButtonActive) {
|
|
54
|
-
this.ngZone.run(() => this.toggleButtonActiveState('prev', calculatedPrevButtonActive));
|
|
55
|
-
}
|
|
56
|
-
if (calculatedNextButtonActive !== currentNextButtonActive) {
|
|
57
|
-
this.ngZone.run(() => this.toggleButtonActiveState('next', calculatedNextButtonActive));
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
onScroll(e) {
|
|
61
|
-
this.position = e.target.scrollLeft;
|
|
62
|
-
this.toggleScrollButtonsState();
|
|
63
|
-
}
|
|
64
|
-
scrollSuggestions(direction) {
|
|
65
|
-
this.calculateListPosition(direction, DEFAULT_SCROLL_SPEED);
|
|
66
|
-
if (this.scrollElement) {
|
|
67
|
-
this.scrollElement.scrollTo({ left: this.position, behavior: DEFAULT_SCROLL_BEHAVIOR });
|
|
68
|
-
}
|
|
69
|
-
this.toggleScrollButtonsState();
|
|
70
|
-
}
|
|
71
|
-
updateScrollPosition(element) {
|
|
72
|
-
this.position = element.scrollLeft;
|
|
73
|
-
}
|
|
74
|
-
calculateListPosition(direction, scrollSpeed) {
|
|
75
|
-
if (direction === 'prev') {
|
|
76
|
-
if (!this.localization.rtl) {
|
|
77
|
-
this.position = this.position - scrollSpeed <= 0 ? 0 : this.position - scrollSpeed;
|
|
78
|
-
}
|
|
79
|
-
else {
|
|
80
|
-
this.position = this.position + scrollSpeed >= 0 ? 0 : this.position + scrollSpeed;
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
else if (direction === 'next' && this.position < this.scrollContainerOverflowSize) {
|
|
84
|
-
if (this.position + scrollSpeed > this.scrollContainerOverflowSize) {
|
|
85
|
-
if (this.localization.rtl) {
|
|
86
|
-
this.position = -this.scrollContainerOverflowSize;
|
|
87
|
-
}
|
|
88
|
-
else {
|
|
89
|
-
this.position = this.scrollContainerOverflowSize;
|
|
90
|
-
}
|
|
91
|
-
return;
|
|
92
|
-
}
|
|
93
|
-
if (this.localization.rtl) {
|
|
94
|
-
this.position -= scrollSpeed;
|
|
95
|
-
}
|
|
96
|
-
else {
|
|
97
|
-
this.position += scrollSpeed;
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
toggleButtonActiveState(buttonType, active) {
|
|
102
|
-
this.scrollButtonActiveStateChange.next({ buttonType, active });
|
|
103
|
-
}
|
|
104
|
-
isDisabled = (buttonType) => this.owner[`${buttonType}ScrollButton`]?.nativeElement.classList.contains('k-disabled');
|
|
105
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SuggestionsScrollService, deps: [{ token: i0.NgZone }, { token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
106
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SuggestionsScrollService });
|
|
107
|
-
}
|
|
108
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SuggestionsScrollService, decorators: [{
|
|
109
|
-
type: Injectable
|
|
110
|
-
}], ctorParameters: () => [{ type: i0.NgZone }, { type: i1.LocalizationService }] });
|