@cometchat/chat-uikit-angular 5.0.3 → 5.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/cometchat-chat-uikit-angular.mjs +4879 -1331
- package/fesm2022/cometchat-chat-uikit-angular.mjs.map +1 -1
- package/package.json +3 -2
- package/src/lib/assets/notifications_empty_state.svg +8 -0
- package/styles/rich-text-styles.css +80 -16
- package/types/cometchat-chat-uikit-angular.d.ts +869 -28
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
import { Observable, Subject, Subscription } from 'rxjs';
|
|
1
|
+
import { Observable, Subject, BehaviorSubject, Subscription } from 'rxjs';
|
|
2
2
|
import * as _cometchat_chat_sdk_javascript from '@cometchat/chat-sdk-javascript';
|
|
3
3
|
import { CometChatSettings, FlagReason } from '@cometchat/chat-sdk-javascript';
|
|
4
4
|
import * as _angular_core from '@angular/core';
|
|
5
|
-
import { PipeTransform, TemplateRef, Signal, OnDestroy, InjectionToken, WritableSignal, DestroyRef, EventEmitter as EventEmitter$1, AfterViewInit, QueryList, ElementRef, OnChanges, SimpleChanges, OnInit, ChangeDetectorRef, NgZone, DoCheck, Renderer2, ApplicationRef, EnvironmentInjector } from '@angular/core';
|
|
5
|
+
import { PipeTransform, TemplateRef, Signal, OnDestroy, InjectionToken, WritableSignal, DestroyRef, EventEmitter as EventEmitter$1, AfterViewInit, QueryList, ElementRef, OnChanges, SimpleChanges, OnInit, ChangeDetectorRef, NgZone, DoCheck, Renderer2, ApplicationRef, EnvironmentInjector, Injector, EffectRef } from '@angular/core';
|
|
6
6
|
import { Config } from 'dompurify';
|
|
7
7
|
import { DomSanitizer, SafeHtml } from '@angular/platform-browser';
|
|
8
|
+
import { CometChatCardThemeMode, CometChatCardThemeOverride, CometChatCardActionEvent, CometChatCardAction } from '@cometchat/cards-angular';
|
|
8
9
|
import { ControlValueAccessor } from '@angular/forms';
|
|
9
10
|
|
|
10
11
|
/**
|
|
@@ -697,6 +698,7 @@ declare class CometChatUIKitConstants {
|
|
|
697
698
|
call: string;
|
|
698
699
|
interactive: string;
|
|
699
700
|
agentic: _cometchat_chat_sdk_javascript.MessageCategory.AGENTIC;
|
|
701
|
+
card: "card";
|
|
700
702
|
}>;
|
|
701
703
|
static moderationStatus: Readonly<{
|
|
702
704
|
pending: _cometchat_chat_sdk_javascript.ModerationStatus.PENDING;
|
|
@@ -721,6 +723,21 @@ declare class CometChatUIKitConstants {
|
|
|
721
723
|
toolArguments: string;
|
|
722
724
|
toolResults: string;
|
|
723
725
|
}>;
|
|
726
|
+
static ExtensionTypes: Readonly<{
|
|
727
|
+
poll: "extension_poll";
|
|
728
|
+
sticker: "extension_sticker";
|
|
729
|
+
whiteboard: "extension_whiteboard";
|
|
730
|
+
document: "extension_document";
|
|
731
|
+
}>;
|
|
732
|
+
static ComposerAttachmentOption: Readonly<{
|
|
733
|
+
image: "image";
|
|
734
|
+
video: "video";
|
|
735
|
+
audio: "audio";
|
|
736
|
+
file: "file";
|
|
737
|
+
poll: "polls";
|
|
738
|
+
collaborativeDocument: "collaborative-document";
|
|
739
|
+
collaborativeWhiteboard: "collaborative-whiteboard";
|
|
740
|
+
}>;
|
|
724
741
|
static groupMemberAction: Readonly<{
|
|
725
742
|
ROLE: "role";
|
|
726
743
|
BLOCK: "block";
|
|
@@ -749,7 +766,7 @@ declare class CometChatUIKitConstants {
|
|
|
749
766
|
replyInThread: "replyInThread";
|
|
750
767
|
translateMessage: "translate";
|
|
751
768
|
reactToMessage: "react";
|
|
752
|
-
messageInformation: "
|
|
769
|
+
messageInformation: "info";
|
|
753
770
|
flagMessage: "flagMessage";
|
|
754
771
|
copyMessage: "copy";
|
|
755
772
|
shareMessage: "share";
|
|
@@ -2438,6 +2455,55 @@ interface MessageUpdatePayload {
|
|
|
2438
2455
|
|
|
2439
2456
|
declare var CometChatUIKitCalls: any;
|
|
2440
2457
|
|
|
2458
|
+
/**
|
|
2459
|
+
* ConnectionStateService
|
|
2460
|
+
*
|
|
2461
|
+
* A single, root-level service that owns exactly ONE CometChat ConnectionListener
|
|
2462
|
+
* for the entire application. All components and services that need to react to
|
|
2463
|
+
* WebSocket connect/disconnect events should inject this service instead of
|
|
2464
|
+
* registering their own listeners.
|
|
2465
|
+
*
|
|
2466
|
+
* Why one listener?
|
|
2467
|
+
* - The SDK fires the same event to every registered listener simultaneously.
|
|
2468
|
+
* Having N listeners (one per list component) causes N parallel refetches on
|
|
2469
|
+
* reconnect, which is wasteful and can cause race conditions.
|
|
2470
|
+
* - A single shared signal/observable lets any part of the UI (e.g. a
|
|
2471
|
+
* "reconnecting…" banner) read connection state without extra wiring.
|
|
2472
|
+
*
|
|
2473
|
+
* Usage in services:
|
|
2474
|
+
* ```typescript
|
|
2475
|
+
* private connectionState = inject(ConnectionStateService);
|
|
2476
|
+
*
|
|
2477
|
+
* constructor() {
|
|
2478
|
+
* this.connectionState.reconnected$
|
|
2479
|
+
* .pipe(takeUntilDestroyed(this.destroyRef))
|
|
2480
|
+
* .subscribe(() => this.refresh());
|
|
2481
|
+
* }
|
|
2482
|
+
* ```
|
|
2483
|
+
*
|
|
2484
|
+
* Usage in templates:
|
|
2485
|
+
* ```html
|
|
2486
|
+
* @if (connectionState.connected() === false) {
|
|
2487
|
+
* <div class="reconnecting-banner">Reconnecting…</div>
|
|
2488
|
+
* }
|
|
2489
|
+
* ```
|
|
2490
|
+
*/
|
|
2491
|
+
declare class ConnectionStateService {
|
|
2492
|
+
private readonly _connected;
|
|
2493
|
+
/** Current connection state as a read-only signal. */
|
|
2494
|
+
readonly connected: _angular_core.Signal<boolean | null>;
|
|
2495
|
+
/**
|
|
2496
|
+
* Observable that emits `true` every time the WebSocket reconnects.
|
|
2497
|
+
* Skips the initial `null → true` transition that happens at app startup
|
|
2498
|
+
* (that is not a reconnect, it is the first connect).
|
|
2499
|
+
*/
|
|
2500
|
+
readonly reconnected$: Observable<boolean>;
|
|
2501
|
+
private readonly listenerId;
|
|
2502
|
+
constructor();
|
|
2503
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ConnectionStateService, never>;
|
|
2504
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<ConnectionStateService>;
|
|
2505
|
+
}
|
|
2506
|
+
|
|
2441
2507
|
/**
|
|
2442
2508
|
* ChatStateService
|
|
2443
2509
|
*
|
|
@@ -2549,6 +2615,7 @@ declare class ChatStateService {
|
|
|
2549
2615
|
declare class ConversationsService {
|
|
2550
2616
|
private destroyRef;
|
|
2551
2617
|
private ngZone;
|
|
2618
|
+
private connectionState;
|
|
2552
2619
|
private conversationsSignal;
|
|
2553
2620
|
private loadingStateSignal;
|
|
2554
2621
|
private errorStateSignal;
|
|
@@ -2568,6 +2635,8 @@ declare class ConversationsService {
|
|
|
2568
2635
|
readonly hasConversations: _angular_core.Signal<boolean>;
|
|
2569
2636
|
readonly isLoading: _angular_core.Signal<boolean>;
|
|
2570
2637
|
readonly hasError: _angular_core.Signal<boolean>;
|
|
2638
|
+
private hasMoreSignal;
|
|
2639
|
+
readonly hasMore: _angular_core.Signal<boolean>;
|
|
2571
2640
|
private conversationsRequest?;
|
|
2572
2641
|
private requestBuilder?;
|
|
2573
2642
|
private messageListenerId;
|
|
@@ -2575,6 +2644,8 @@ declare class ConversationsService {
|
|
|
2575
2644
|
private groupListenerId;
|
|
2576
2645
|
private callListenerId;
|
|
2577
2646
|
private retryAttempts;
|
|
2647
|
+
/** Guard: only re-fetch on reconnect after the first fetch has completed. */
|
|
2648
|
+
private initialFetchDone;
|
|
2578
2649
|
private ccMessageSentSubscription;
|
|
2579
2650
|
private ccMessageDeletedSubscription;
|
|
2580
2651
|
private callEventSubscriptions;
|
|
@@ -2585,7 +2656,7 @@ declare class ConversationsService {
|
|
|
2585
2656
|
setConversationsRequestBuilder(builder: CometChat.ConversationsRequestBuilder): void;
|
|
2586
2657
|
setActiveConversation(conversation: CometChat.Conversation | null): void;
|
|
2587
2658
|
getConversations(): CometChat.Conversation[];
|
|
2588
|
-
fetchConversations(builder?: CometChat.ConversationsRequestBuilder): Promise<void>;
|
|
2659
|
+
fetchConversations(builder?: CometChat.ConversationsRequestBuilder, silent?: boolean): Promise<void>;
|
|
2589
2660
|
fetchNextConversations(): Promise<boolean>;
|
|
2590
2661
|
deleteConversation(conversationWith: string, conversationType: string): Promise<void>;
|
|
2591
2662
|
searchConversations(searchText: string): void;
|
|
@@ -3074,7 +3145,7 @@ interface MentionSuggestion$1 {
|
|
|
3074
3145
|
* Handles sending text/media messages, editing, typing indicators,
|
|
3075
3146
|
* file upload progress, and mention suggestions.
|
|
3076
3147
|
*
|
|
3077
|
-
* @Injectable
|
|
3148
|
+
* @Injectable — provided at component level via CometChatMessageComposerComponent providers
|
|
3078
3149
|
* @see Requirements 29.1–29.10
|
|
3079
3150
|
*/
|
|
3080
3151
|
declare class MessageComposerService {
|
|
@@ -3461,6 +3532,7 @@ declare class RichTextEditor {
|
|
|
3461
3532
|
private ariaLiveRegion;
|
|
3462
3533
|
private _pendingLinkClick;
|
|
3463
3534
|
private lastSavedRange;
|
|
3535
|
+
private autofocusTimer;
|
|
3464
3536
|
private currentFormatState;
|
|
3465
3537
|
constructor(config: RichTextEditorConfig, element?: HTMLElement);
|
|
3466
3538
|
private createAriaLiveRegion;
|
|
@@ -3842,6 +3914,21 @@ declare class MessageListService {
|
|
|
3842
3914
|
flagMessage(message: CometChat.BaseMessage, reasonId: string, remark?: string): Promise<void>;
|
|
3843
3915
|
}
|
|
3844
3916
|
|
|
3917
|
+
/**
|
|
3918
|
+
* Default message types fetched by the MessageList when no custom
|
|
3919
|
+
* `messagesRequestBuilder` is supplied. Exported so consumers can derive their
|
|
3920
|
+
* own type list (e.g. keep all defaults but drop a single extension):
|
|
3921
|
+
*
|
|
3922
|
+
* const types = DEFAULT_MESSAGE_TYPES.filter(t => t !== 'extension_poll');
|
|
3923
|
+
*/
|
|
3924
|
+
declare const DEFAULT_MESSAGE_TYPES: readonly string[];
|
|
3925
|
+
/**
|
|
3926
|
+
* Default message categories fetched by the MessageList when no custom
|
|
3927
|
+
* `messagesRequestBuilder` is supplied. Includes the `action` category, which
|
|
3928
|
+
* the MessageList omits at runtime when `hideGroupActionMessages` is set.
|
|
3929
|
+
*/
|
|
3930
|
+
declare const DEFAULT_MESSAGE_CATEGORIES: readonly string[];
|
|
3931
|
+
|
|
3845
3932
|
/**
|
|
3846
3933
|
* Types for MessageBubbleConfigService.
|
|
3847
3934
|
*/
|
|
@@ -4657,7 +4744,12 @@ declare class GroupMembersService {
|
|
|
4657
4744
|
private errorCallback;
|
|
4658
4745
|
private userListenerId;
|
|
4659
4746
|
private groupListenerId;
|
|
4747
|
+
/** Guard: only re-fetch on reconnect after the first fetch has completed. */
|
|
4748
|
+
private initialFetchDone;
|
|
4749
|
+
private connectionState;
|
|
4750
|
+
private destroyRef;
|
|
4660
4751
|
private static readonly DEFAULT_LIMIT;
|
|
4752
|
+
constructor();
|
|
4661
4753
|
setErrorCallback(callback: GroupMembersErrorCallback | null): void;
|
|
4662
4754
|
/**
|
|
4663
4755
|
* Initialize the service with a group and optional custom request builder.
|
|
@@ -4687,6 +4779,12 @@ declare class GroupMembersService {
|
|
|
4687
4779
|
attachListeners(groupGuid: string, hideUserStatus: boolean): void;
|
|
4688
4780
|
detachListeners(): void;
|
|
4689
4781
|
cleanup(): void;
|
|
4782
|
+
/**
|
|
4783
|
+
* Called by ConnectionStateService when the WebSocket reconnects.
|
|
4784
|
+
* Silently re-fetches page 1 without clearing the list or showing shimmer.
|
|
4785
|
+
* Resets hasMore to true so pagination works again from the new first page.
|
|
4786
|
+
*/
|
|
4787
|
+
private handleReconnect;
|
|
4690
4788
|
private handleError;
|
|
4691
4789
|
private toCometchatException;
|
|
4692
4790
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<GroupMembersService, never>;
|
|
@@ -6396,6 +6494,62 @@ declare class SearchConversationsService {
|
|
|
6396
6494
|
static ɵprov: _angular_core.ɵɵInjectableDeclaration<SearchConversationsService>;
|
|
6397
6495
|
}
|
|
6398
6496
|
|
|
6497
|
+
interface NotificationUnreadCountOptions {
|
|
6498
|
+
/** Filter count by category */
|
|
6499
|
+
category?: string;
|
|
6500
|
+
/** Polling interval in ms. Default: 30000 */
|
|
6501
|
+
pollingInterval?: number;
|
|
6502
|
+
}
|
|
6503
|
+
/**
|
|
6504
|
+
* NotificationUnreadCountService
|
|
6505
|
+
*
|
|
6506
|
+
* Injectable Angular service for consuming notification feed unread count.
|
|
6507
|
+
* Provides real-time updates via BehaviorSubject, polling, and WebSocket listener.
|
|
6508
|
+
*
|
|
6509
|
+
* Angular equivalent of React's useNotificationUnreadCount hook.
|
|
6510
|
+
*
|
|
6511
|
+
* NOTE: When used alongside CometChatNotificationFeedComponent, both register
|
|
6512
|
+
* separate NotificationFeedListeners. The ViewModel handles feed item insertion,
|
|
6513
|
+
* while this service handles badge count. Both optimistically update on
|
|
6514
|
+
* onFeedItemReceived — the badge may briefly over-count by 1 until the next
|
|
6515
|
+
* polling re-fetch corrects it (within 1 second). This is by design to avoid
|
|
6516
|
+
* tight coupling between the badge and the feed component.
|
|
6517
|
+
*
|
|
6518
|
+
* @Injectable providedIn: 'root'
|
|
6519
|
+
*/
|
|
6520
|
+
declare class NotificationUnreadCountService implements OnDestroy {
|
|
6521
|
+
/** Current unread count */
|
|
6522
|
+
readonly count$: BehaviorSubject<number>;
|
|
6523
|
+
/** Whether the initial fetch is in progress */
|
|
6524
|
+
readonly isLoading$: BehaviorSubject<boolean>;
|
|
6525
|
+
private pollingInterval;
|
|
6526
|
+
private listenerId;
|
|
6527
|
+
private isFetching;
|
|
6528
|
+
private isStarted;
|
|
6529
|
+
private focusHandler;
|
|
6530
|
+
/**
|
|
6531
|
+
* Start tracking unread count.
|
|
6532
|
+
* Fetches initial count, registers WebSocket listener, and starts polling.
|
|
6533
|
+
*/
|
|
6534
|
+
start(options?: NotificationUnreadCountOptions): void;
|
|
6535
|
+
/**
|
|
6536
|
+
* Stop tracking unread count.
|
|
6537
|
+
* Removes listener, clears polling, removes focus handler.
|
|
6538
|
+
*/
|
|
6539
|
+
stop(): void;
|
|
6540
|
+
/**
|
|
6541
|
+
* Manually refresh the unread count.
|
|
6542
|
+
*/
|
|
6543
|
+
refresh(): Promise<void>;
|
|
6544
|
+
ngOnDestroy(): void;
|
|
6545
|
+
private fetchCount;
|
|
6546
|
+
private registerListener;
|
|
6547
|
+
private removeListener;
|
|
6548
|
+
private stopPolling;
|
|
6549
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<NotificationUnreadCountService, never>;
|
|
6550
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<NotificationUnreadCountService>;
|
|
6551
|
+
}
|
|
6552
|
+
|
|
6399
6553
|
/**
|
|
6400
6554
|
* Conversation event subjects for handling actions related to conversations (e.g., conversation deletion)
|
|
6401
6555
|
*/
|
|
@@ -6431,6 +6585,27 @@ interface IMessages {
|
|
|
6431
6585
|
parentMessageId?: number | null;
|
|
6432
6586
|
}
|
|
6433
6587
|
|
|
6588
|
+
/**
|
|
6589
|
+
* Payload for the `ccCardActionClicked` event (Card Messages).
|
|
6590
|
+
* `message` is the owning message — the `CardMessage` for a developer card or
|
|
6591
|
+
* the `AIAssistantMessage` for a nested agent-card block. `action` is the raw
|
|
6592
|
+
* renderer action object, forwarded untouched (the kit performs no behavior).
|
|
6593
|
+
*/
|
|
6594
|
+
interface ICardActionEvent {
|
|
6595
|
+
/**
|
|
6596
|
+
* The owning message — `CardMessage` (developer) or `AIAssistantMessage`
|
|
6597
|
+
* (persisted agent card). `null` only for a card tapped while the agent run is
|
|
6598
|
+
* still streaming (no persisted message exists yet; the persisted bubble that
|
|
6599
|
+
* follows is the source of truth).
|
|
6600
|
+
*/
|
|
6601
|
+
message: CometChat.BaseMessage | null;
|
|
6602
|
+
/** The renderer's raw discriminated action (`CometChatCardAction`) — forwarded untouched. */
|
|
6603
|
+
action: unknown;
|
|
6604
|
+
/** The renderer element id that emitted the action (for `customCallback`). */
|
|
6605
|
+
elementId?: string;
|
|
6606
|
+
/** The raw card JSON the action originated from (for `customCallback`). */
|
|
6607
|
+
cardJson?: string;
|
|
6608
|
+
}
|
|
6434
6609
|
/**
|
|
6435
6610
|
* Message event subjects for handling actions related to messages (e.g., message sent, edited, deleted, etc.)
|
|
6436
6611
|
*/
|
|
@@ -6446,6 +6621,12 @@ declare class CometChatMessageEvents {
|
|
|
6446
6621
|
*/
|
|
6447
6622
|
static ccMessageRead: Subject<CometChat.BaseMessage>;
|
|
6448
6623
|
static ccMessageDeleted: Subject<CometChat.BaseMessage>;
|
|
6624
|
+
/**
|
|
6625
|
+
* Emitted when a user taps an action on a card (developer card or nested
|
|
6626
|
+
* agent-card block). Pure forward — the kit performs no behavior; the app
|
|
6627
|
+
* subscribes once and runs the action.
|
|
6628
|
+
*/
|
|
6629
|
+
static ccCardActionClicked: Subject<ICardActionEvent>;
|
|
6449
6630
|
static onTextMessageReceived: Subject<CometChat.TextMessage>;
|
|
6450
6631
|
static onMessageModerated: Subject<CometChat.BaseMessage>;
|
|
6451
6632
|
static onMediaMessageReceived: Subject<CometChat.MediaMessage>;
|
|
@@ -6462,7 +6643,7 @@ declare class CometChatMessageEvents {
|
|
|
6462
6643
|
static onMessageReactionRemoved: Subject<CometChat.ReactionEvent>;
|
|
6463
6644
|
static onCustomInteractiveMessageReceived: Subject<CometChat.InteractiveMessage>;
|
|
6464
6645
|
static onFormMessageReceived: Subject<CometChat.InteractiveMessage>;
|
|
6465
|
-
static onCardMessageReceived: Subject<CometChat.
|
|
6646
|
+
static onCardMessageReceived: Subject<CometChat.CardMessage>;
|
|
6466
6647
|
static onSchedulerMessageReceived: Subject<CometChat.InteractiveMessage>;
|
|
6467
6648
|
static onAIAssistantMessageReceived: Subject<CometChat.AIAssistantMessage>;
|
|
6468
6649
|
static onAIToolResultReceived: Subject<CometChat.AIToolResultMessage>;
|
|
@@ -6491,7 +6672,7 @@ declare class CometChatMessageEvents {
|
|
|
6491
6672
|
static publishMessageReactionRemoved(event: CometChat.ReactionEvent): void;
|
|
6492
6673
|
static publishCustomInteractiveMessageReceived(message: CometChat.InteractiveMessage): void;
|
|
6493
6674
|
static publishFormMessageReceived(message: CometChat.InteractiveMessage): void;
|
|
6494
|
-
static publishCardMessageReceived(message: CometChat.
|
|
6675
|
+
static publishCardMessageReceived(message: CometChat.CardMessage): void;
|
|
6495
6676
|
static publishSchedulerMessageReceived(message: CometChat.InteractiveMessage): void;
|
|
6496
6677
|
static publishAIAssistantMessageReceived(message: CometChat.AIAssistantMessage): void;
|
|
6497
6678
|
static publishAIToolResultReceived(message: CometChat.AIToolResultMessage): void;
|
|
@@ -6518,7 +6699,9 @@ declare class CometChatMessageEvents {
|
|
|
6518
6699
|
static subscribeOnMessageReactionRemoved(cb: (data: CometChat.ReactionEvent) => void, destroyRef?: DestroyRef): Subscription;
|
|
6519
6700
|
static subscribeOnCustomInteractiveMessageReceived(cb: (data: CometChat.InteractiveMessage) => void, destroyRef?: DestroyRef): Subscription;
|
|
6520
6701
|
static subscribeOnFormMessageReceived(cb: (data: CometChat.InteractiveMessage) => void, destroyRef?: DestroyRef): Subscription;
|
|
6521
|
-
static subscribeOnCardMessageReceived(cb: (data: CometChat.
|
|
6702
|
+
static subscribeOnCardMessageReceived(cb: (data: CometChat.CardMessage) => void, destroyRef?: DestroyRef): Subscription;
|
|
6703
|
+
/** Subscribes to card-action clicks; auto-cleans up when destroyRef is given. */
|
|
6704
|
+
static subscribeOnCardActionClicked(cb: (data: ICardActionEvent) => void, destroyRef?: DestroyRef): Subscription;
|
|
6522
6705
|
static subscribeOnSchedulerMessageReceived(cb: (data: CometChat.InteractiveMessage) => void, destroyRef?: DestroyRef): Subscription;
|
|
6523
6706
|
static subscribeOnAIAssistantMessageReceived(cb: (data: CometChat.AIAssistantMessage) => void, destroyRef?: DestroyRef): Subscription;
|
|
6524
6707
|
static subscribeOnAIToolResultReceived(cb: (data: CometChat.AIToolResultMessage) => void, destroyRef?: DestroyRef): Subscription;
|
|
@@ -6904,6 +7087,10 @@ declare class CometChatAvatarComponent implements OnChanges {
|
|
|
6904
7087
|
/**
|
|
6905
7088
|
* Generates an accessible label for screen readers.
|
|
6906
7089
|
* Describes the avatar content for assistive technologies.
|
|
7090
|
+
*
|
|
7091
|
+
* Falls back to a hardcoded template when the localization service has not
|
|
7092
|
+
* been initialized (e.g., in unit tests) so that the aria-label always
|
|
7093
|
+
* contains the name when one is provided.
|
|
6907
7094
|
*/
|
|
6908
7095
|
get ariaLabel(): string;
|
|
6909
7096
|
/**
|
|
@@ -7228,7 +7415,7 @@ interface LinkPopoverData {
|
|
|
7228
7415
|
*
|
|
7229
7416
|
* A small popover that appears when clicking on a link in the editor.
|
|
7230
7417
|
* Shows "Edit" and "Remove" buttons for quick link actions.
|
|
7231
|
-
* Positioned
|
|
7418
|
+
* Positioned above the clicked link using viewport coordinates.
|
|
7232
7419
|
*
|
|
7233
7420
|
* @component
|
|
7234
7421
|
*/
|
|
@@ -7243,9 +7430,9 @@ declare class CometChatLinkPopoverComponent implements OnInit, AfterViewInit, On
|
|
|
7243
7430
|
url: string;
|
|
7244
7431
|
/** The link text */
|
|
7245
7432
|
text: string;
|
|
7246
|
-
/** X coordinate (viewport-relative
|
|
7433
|
+
/** X coordinate (viewport-relative center of the link element) */
|
|
7247
7434
|
x: number;
|
|
7248
|
-
/** Y coordinate (viewport-relative
|
|
7435
|
+
/** Y coordinate (viewport-relative top of the link element) */
|
|
7249
7436
|
y: number;
|
|
7250
7437
|
/** Emitted when the Edit button is clicked */
|
|
7251
7438
|
editClick: EventEmitter$1<LinkPopoverData>;
|
|
@@ -7271,18 +7458,25 @@ declare class CometChatLinkPopoverComponent implements OnInit, AfterViewInit, On
|
|
|
7271
7458
|
ngAfterViewInit(): void;
|
|
7272
7459
|
ngOnDestroy(): void;
|
|
7273
7460
|
private handleKeydown;
|
|
7461
|
+
/**
|
|
7462
|
+
* Keeps Tab focus cycling within the popover (dialog focus trap), so the
|
|
7463
|
+
* close button and URL link are reachable instead of Tab closing the popover.
|
|
7464
|
+
*/
|
|
7465
|
+
private trapTabFocus;
|
|
7274
7466
|
private focusNextItem;
|
|
7275
7467
|
private focusPreviousItem;
|
|
7276
7468
|
private restoreFocus;
|
|
7277
7469
|
/**
|
|
7278
|
-
*
|
|
7279
|
-
* Uses estimated
|
|
7280
|
-
|
|
7281
|
-
|
|
7470
|
+
* Initial position estimate using link x/y coordinates.
|
|
7471
|
+
* Uses estimated dimensions before the popover has been laid out.
|
|
7472
|
+
*/
|
|
7473
|
+
private positionAboveLink;
|
|
7474
|
+
/**
|
|
7475
|
+
* Fallback positioning: center above the composer element.
|
|
7282
7476
|
*/
|
|
7283
7477
|
private positionAboveComposer;
|
|
7284
7478
|
/**
|
|
7285
|
-
*
|
|
7479
|
+
* Refine position after layout using actual popover dimensions.
|
|
7286
7480
|
*/
|
|
7287
7481
|
private refinePosition;
|
|
7288
7482
|
/**
|
|
@@ -7346,6 +7540,7 @@ declare class CometChatContextMenuComponent implements OnInit, OnDestroy, AfterV
|
|
|
7346
7540
|
private boundHandleResize;
|
|
7347
7541
|
handleKeydown(event: KeyboardEvent): void;
|
|
7348
7542
|
private focusItemAtIndex;
|
|
7543
|
+
private originalSubMenuParent;
|
|
7349
7544
|
private closeSubMenu;
|
|
7350
7545
|
get topMenu(): ContextMenuItem[];
|
|
7351
7546
|
get subMenu(): ContextMenuItem[];
|
|
@@ -7984,6 +8179,7 @@ declare class CometChatConversationsComponent implements OnInit, OnDestroy {
|
|
|
7984
8179
|
handleDeleteCancel(): void;
|
|
7985
8180
|
handleDialogKeydown(event: KeyboardEvent): void;
|
|
7986
8181
|
private setupSearchDebouncing;
|
|
8182
|
+
onSearch(value: string): void;
|
|
7987
8183
|
handleSearchBarClick(): void;
|
|
7988
8184
|
handleKeydown(event: KeyboardEvent): void;
|
|
7989
8185
|
private handleSelectionKeyboard;
|
|
@@ -8512,6 +8708,7 @@ declare class CometChatStickersKeyboardComponent implements OnInit, OnDestroy {
|
|
|
8512
8708
|
setComponentState(state: ComponentState): void;
|
|
8513
8709
|
/**
|
|
8514
8710
|
* Fetches stickers from the CometChat stickers extension.
|
|
8711
|
+
* Retries once if the first attempt fails (handles SDK not ready after page refresh).
|
|
8515
8712
|
* @see Requirements 8.4, 8.14, 8.15
|
|
8516
8713
|
*/
|
|
8517
8714
|
fetchStickers(): Promise<void>;
|
|
@@ -8583,6 +8780,14 @@ declare class CometChatStickersKeyboardComponent implements OnInit, OnDestroy {
|
|
|
8583
8780
|
getRowIndex(index: number): number;
|
|
8584
8781
|
/** Gets the 1-based column index for ARIA grid navigation */
|
|
8585
8782
|
getColIndex(index: number): number;
|
|
8783
|
+
/** Total number of grid rows for the current category (aria-rowcount). */
|
|
8784
|
+
getRowCount(): number;
|
|
8785
|
+
/** Roving tabindex for category tabs: only the focused tab is in tab order. */
|
|
8786
|
+
getTabTabIndex(index: number): number;
|
|
8787
|
+
/** Roving tabindex for sticker cells: focused cell (or first when none) is tabbable. */
|
|
8788
|
+
getStickerTabIndex(index: number): number;
|
|
8789
|
+
/** Keeps the roving anchor in sync when a sticker cell receives focus. */
|
|
8790
|
+
onStickerFocus(index: number): void;
|
|
8586
8791
|
ngOnDestroy(): void;
|
|
8587
8792
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<CometChatStickersKeyboardComponent, never>;
|
|
8588
8793
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<CometChatStickersKeyboardComponent, "cometchat-stickers-keyboard", never, { "errorStateText": { "alias": "errorStateText"; "required": false; }; "emptyStateText": { "alias": "emptyStateText"; "required": false; }; "autoFocus": { "alias": "autoFocus"; "required": false; }; "trapFocus": { "alias": "trapFocus"; "required": false; }; }, { "stickerClick": "stickerClick"; "closeKeyboard": "closeKeyboard"; }, never, never, true, never>;
|
|
@@ -8810,10 +9015,15 @@ declare class CometChatMessageComposerComponent implements OnInit, OnDestroy, On
|
|
|
8810
9015
|
maxHeight: number;
|
|
8811
9016
|
enterKeyBehavior: EnterKeyBehavior;
|
|
8812
9017
|
attachmentOptions?: CometChatMessageComposerAction[];
|
|
9018
|
+
/** @note kept for future attachment preview/queue support; active flow sends selected files directly. */
|
|
8813
9019
|
maxAttachments: number;
|
|
9020
|
+
/** @note kept for future attachment preview/queue support; active flow sends selected files directly. */
|
|
8814
9021
|
allowedFileTypes?: string[];
|
|
9022
|
+
/** @note kept for future attachment preview/queue support; active flow sends selected files directly. */
|
|
8815
9023
|
maxFileSize?: number;
|
|
9024
|
+
/** @note kept for future attachment preview/queue support; active flow sends selected files directly. */
|
|
8816
9025
|
showAttachmentPreview: boolean;
|
|
9026
|
+
/** @note kept for future attachment preview/queue support; active flow sends selected files directly. */
|
|
8817
9027
|
enableDragDrop: boolean;
|
|
8818
9028
|
hideAttachmentButton: boolean;
|
|
8819
9029
|
hideImageAttachmentOption: boolean;
|
|
@@ -8865,7 +9075,9 @@ declare class CometChatMessageComposerComponent implements OnInit, OnDestroy, On
|
|
|
8865
9075
|
sendButtonClick: EventEmitter$1<_cometchat_chat_sdk_javascript.BaseMessage>;
|
|
8866
9076
|
error: EventEmitter$1<_cometchat_chat_sdk_javascript.CometChatException>;
|
|
8867
9077
|
closePreview: EventEmitter$1<void>;
|
|
9078
|
+
/** @note currently retained for future use; the active file flow sends selected files directly. */
|
|
8868
9079
|
attachmentAdded: EventEmitter$1<File>;
|
|
9080
|
+
/** @note currently retained for future use; the active file flow sends selected files directly. */
|
|
8869
9081
|
attachmentRemoved: EventEmitter$1<File>;
|
|
8870
9082
|
mentionSelected: EventEmitter$1<_cometchat_chat_sdk_javascript.User | _cometchat_chat_sdk_javascript.GroupMember>;
|
|
8871
9083
|
textInputRef?: ElementRef<HTMLTextAreaElement>;
|
|
@@ -9403,8 +9615,13 @@ type MessagePreviewMode = 'reply' | 'edit';
|
|
|
9403
9615
|
* </cometchat-message-preview>
|
|
9404
9616
|
* ```
|
|
9405
9617
|
*/
|
|
9406
|
-
declare class CometChatMessagePreviewComponent implements OnInit, AfterViewInit, OnDestroy {
|
|
9618
|
+
declare class CometChatMessagePreviewComponent implements OnInit, OnChanges, AfterViewInit, OnDestroy {
|
|
9407
9619
|
private globalConfig;
|
|
9620
|
+
private readonly htmlSanitizer;
|
|
9621
|
+
private readonly formatterConfig;
|
|
9622
|
+
private readonly cdr;
|
|
9623
|
+
_cachedPreviewHasHtml: boolean;
|
|
9624
|
+
_cachedFormattedPreview: string;
|
|
9408
9625
|
private textFormattersExplicitlySet;
|
|
9409
9626
|
private _textFormatters;
|
|
9410
9627
|
/** Title to display in preview - accepts template */
|
|
@@ -9491,6 +9708,24 @@ declare class CometChatMessagePreviewComponent implements OnInit, AfterViewInit,
|
|
|
9491
9708
|
* @see Requirements 7.1, 7.3
|
|
9492
9709
|
*/
|
|
9493
9710
|
get messageContentPreview(): string;
|
|
9711
|
+
/**
|
|
9712
|
+
* Returns true when the message preview text should be rendered as HTML
|
|
9713
|
+
* (contains markdown, rich text metadata, or SDK mention tags).
|
|
9714
|
+
*/
|
|
9715
|
+
get messagePreviewHasHtml(): boolean;
|
|
9716
|
+
/**
|
|
9717
|
+
* Returns sanitized HTML for the preview when messagePreviewHasHtml is true.
|
|
9718
|
+
* Applies the same formatter pipeline as CometChatConversationItem.
|
|
9719
|
+
* Result is single-line (block elements collapsed to spaces).
|
|
9720
|
+
*/
|
|
9721
|
+
get formattedMessagePreview(): string;
|
|
9722
|
+
/** Get active formatters — explicit input takes priority over global config defaults. */
|
|
9723
|
+
private getActiveFormatters;
|
|
9724
|
+
/**
|
|
9725
|
+
* Sanitize HTML to safe inline tags, collapsing block elements to spaces
|
|
9726
|
+
* so the preview stays on a single line with ellipsis truncation.
|
|
9727
|
+
*/
|
|
9728
|
+
private sanitizePreviewHtml;
|
|
9494
9729
|
/**
|
|
9495
9730
|
* Returns the CSS class for the media type icon.
|
|
9496
9731
|
* Used to display appropriate icons for media messages.
|
|
@@ -9512,6 +9747,7 @@ declare class CometChatMessagePreviewComponent implements OnInit, AfterViewInit,
|
|
|
9512
9747
|
*/
|
|
9513
9748
|
get containerClass(): string;
|
|
9514
9749
|
ngOnInit(): void;
|
|
9750
|
+
ngOnChanges(changes: SimpleChanges): void;
|
|
9515
9751
|
ngAfterViewInit(): void;
|
|
9516
9752
|
ngOnDestroy(): void;
|
|
9517
9753
|
private setupResizeObserver;
|
|
@@ -9616,6 +9852,40 @@ declare class CometChatTextBubbleComponent implements OnInit, OnChanges, AfterVi
|
|
|
9616
9852
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<CometChatTextBubbleComponent, "cometchat-text-bubble", never, { "message": { "alias": "message"; "required": true; }; "alignment": { "alias": "alignment"; "required": false; }; "textFormatters": { "alias": "textFormatters"; "required": false; }; "translatedTextOverride": { "alias": "translatedTextOverride"; "required": false; }; }, { "linkClick": "linkClick"; "mentionClick": "mentionClick"; }, never, never, true, never>;
|
|
9617
9853
|
}
|
|
9618
9854
|
|
|
9855
|
+
/** Payload emitted by the bubble's `onCardAction` output. */
|
|
9856
|
+
interface CardBubbleAction {
|
|
9857
|
+
message: CometChat.CardMessage;
|
|
9858
|
+
action: unknown;
|
|
9859
|
+
}
|
|
9860
|
+
declare class CometChatCardBubbleComponent {
|
|
9861
|
+
/** The developer card message to render. */
|
|
9862
|
+
readonly message: _angular_core.InputSignal<_cometchat_chat_sdk_javascript.CardMessage>;
|
|
9863
|
+
/** Theme mode passed straight to the renderer. */
|
|
9864
|
+
themeMode: CometChatCardThemeMode;
|
|
9865
|
+
/** Optional renderer theme overrides. */
|
|
9866
|
+
themeOverride?: CometChatCardThemeOverride;
|
|
9867
|
+
/** Pure-forward of the raw renderer action (developer-card prop channel). */
|
|
9868
|
+
onCardAction: EventEmitter$1<CardBubbleAction>;
|
|
9869
|
+
/** Stringified raw card payload (`''` when there is nothing drawable). */
|
|
9870
|
+
protected readonly cardJson: _angular_core.Signal<string>;
|
|
9871
|
+
/** Whether a non-empty card payload is present. */
|
|
9872
|
+
protected readonly hasCard: _angular_core.Signal<boolean>;
|
|
9873
|
+
/**
|
|
9874
|
+
* Single-line fallback for the empty/invalid-payload case:
|
|
9875
|
+
* `getFallbackText()` → `getText()` → "Card Message". Lazy — the template only
|
|
9876
|
+
* reads it when `hasCard()` is false.
|
|
9877
|
+
*/
|
|
9878
|
+
protected readonly fallbackText: _angular_core.Signal<string>;
|
|
9879
|
+
/**
|
|
9880
|
+
* Forwards the raw renderer action on BOTH channels. The bubble runs
|
|
9881
|
+
* no behavior of its own. Apps should act on one channel only to avoid
|
|
9882
|
+
* double-handling (a stable messageId is available for dedupe).
|
|
9883
|
+
*/
|
|
9884
|
+
protected handleAction(event: CometChatCardActionEvent): void;
|
|
9885
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<CometChatCardBubbleComponent, never>;
|
|
9886
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<CometChatCardBubbleComponent, "cometchat-card-bubble", never, { "message": { "alias": "message"; "required": true; "isSignal": true; }; "themeMode": { "alias": "themeMode"; "required": false; }; "themeOverride": { "alias": "themeOverride"; "required": false; }; }, { "onCardAction": "onCardAction"; }, never, never, true, never>;
|
|
9887
|
+
}
|
|
9888
|
+
|
|
9619
9889
|
/**
|
|
9620
9890
|
* CometChatImageBubbleComponent renders image messages with single/multi-image layouts,
|
|
9621
9891
|
* overflow handling, fullscreen gallery, and keyboard accessibility.
|
|
@@ -10029,6 +10299,7 @@ declare class CometChatUsersComponent implements OnInit, OnDestroy {
|
|
|
10029
10299
|
private isFirstFetch;
|
|
10030
10300
|
private initialLoadComplete;
|
|
10031
10301
|
private userListenerId;
|
|
10302
|
+
constructor();
|
|
10032
10303
|
ngOnInit(): void;
|
|
10033
10304
|
ngOnDestroy(): void;
|
|
10034
10305
|
private initializeUsersManager;
|
|
@@ -10036,7 +10307,6 @@ declare class CometChatUsersComponent implements OnInit, OnDestroy {
|
|
|
10036
10307
|
private setupUserListener;
|
|
10037
10308
|
private removeUserListener;
|
|
10038
10309
|
private setupUserEventSubscriptions;
|
|
10039
|
-
private setupConnectionListener;
|
|
10040
10310
|
private updateUser;
|
|
10041
10311
|
private refreshUserList;
|
|
10042
10312
|
fetchNextAndAppendUsers(): void;
|
|
@@ -10185,12 +10455,12 @@ declare class CometChatGroupsComponent implements OnInit, OnDestroy {
|
|
|
10185
10455
|
readonly States: typeof States;
|
|
10186
10456
|
private searchSubject$;
|
|
10187
10457
|
private isFirstFetch;
|
|
10458
|
+
constructor();
|
|
10188
10459
|
ngOnInit(): void;
|
|
10189
10460
|
ngOnDestroy(): void;
|
|
10190
10461
|
private initializeGroupsManager;
|
|
10191
10462
|
private setupSearchDebouncing;
|
|
10192
10463
|
private setupGroupListeners;
|
|
10193
|
-
private setupConnectionListener;
|
|
10194
10464
|
private setupGroupEventSubscriptions;
|
|
10195
10465
|
private refreshGroupList;
|
|
10196
10466
|
handleLoadMore(): void;
|
|
@@ -10507,6 +10777,7 @@ declare class CometChatGroupMemberItemComponent {
|
|
|
10507
10777
|
effectiveHideUserStatus: _angular_core.Signal<boolean>;
|
|
10508
10778
|
effectiveDisableDefaultContextMenu: _angular_core.Signal<boolean>;
|
|
10509
10779
|
contextMenuOptions?: CometChatOption[];
|
|
10780
|
+
contextMenuRef?: CometChatContextMenuComponent;
|
|
10510
10781
|
leadingView?: TemplateRef<{
|
|
10511
10782
|
$implicit: CometChat.GroupMember;
|
|
10512
10783
|
}>;
|
|
@@ -10533,7 +10804,7 @@ declare class CometChatGroupMemberItemComponent {
|
|
|
10533
10804
|
get scopeLabel(): string;
|
|
10534
10805
|
get accessibleLabel(): string;
|
|
10535
10806
|
handleMouseDown(event: MouseEvent): void;
|
|
10536
|
-
handleClick(): void;
|
|
10807
|
+
handleClick(event?: MouseEvent): void;
|
|
10537
10808
|
onItemFocus(): void;
|
|
10538
10809
|
onKeyDown(event: KeyboardEvent): void;
|
|
10539
10810
|
handleContextMenuOpen(): void;
|
|
@@ -10663,6 +10934,7 @@ declare class CometChatGroupItemComponent {
|
|
|
10663
10934
|
group: CometChat.Group;
|
|
10664
10935
|
}>;
|
|
10665
10936
|
itemFocus: EventEmitter$1<void>;
|
|
10937
|
+
contextMenuRef?: CometChatContextMenuComponent;
|
|
10666
10938
|
readonly Placement: typeof Placement;
|
|
10667
10939
|
get groupIcon(): string;
|
|
10668
10940
|
get groupName(): string;
|
|
@@ -11782,6 +12054,7 @@ declare class CometChatMessageListComponent implements OnInit, OnDestroy, OnChan
|
|
|
11782
12054
|
group?: CometChat.Group;
|
|
11783
12055
|
parentMessageId?: number;
|
|
11784
12056
|
isAgentChat: boolean;
|
|
12057
|
+
loadLastAgentConversation: boolean;
|
|
11785
12058
|
messagesRequestBuilder?: CometChat.MessagesRequestBuilder;
|
|
11786
12059
|
reactionsRequestBuilder?: CometChat.ReactionsRequestBuilder;
|
|
11787
12060
|
set textFormatters(value: CometChatTextFormatter[]);
|
|
@@ -12045,6 +12318,10 @@ declare class CometChatMessageListComponent implements OnInit, OnDestroy, OnChan
|
|
|
12045
12318
|
private safeEmitUnreadCountChange;
|
|
12046
12319
|
private shouldShowSmartRepliesForMessage;
|
|
12047
12320
|
handleRetryClick(): void;
|
|
12321
|
+
/** Adds a message to the list (used by parent components for temporary messages). */
|
|
12322
|
+
addMessage(message: CometChat.BaseMessage): void;
|
|
12323
|
+
/** Removes a message from the list by ID (used by parent components to remove temporary messages). */
|
|
12324
|
+
removeMessage(messageId: number): void;
|
|
12048
12325
|
onUserTyping(): void;
|
|
12049
12326
|
onMessageSent(): void;
|
|
12050
12327
|
onSmartReplyClick(reply: string): void;
|
|
@@ -12095,8 +12372,9 @@ declare class CometChatMessageListComponent implements OnInit, OnDestroy, OnChan
|
|
|
12095
12372
|
trackByItem(_index: number, item: MessageListItem): string;
|
|
12096
12373
|
trackByMessage(_index: number, message: CometChat.BaseMessage): string | number;
|
|
12097
12374
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<CometChatMessageListComponent, never>;
|
|
12098
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<CometChatMessageListComponent, "cometchat-message-list", never, { "user": { "alias": "user"; "required": false; }; "group": { "alias": "group"; "required": false; }; "parentMessageId": { "alias": "parentMessageId"; "required": false; }; "isAgentChat": { "alias": "isAgentChat"; "required": false; }; "messagesRequestBuilder": { "alias": "messagesRequestBuilder"; "required": false; }; "reactionsRequestBuilder": { "alias": "reactionsRequestBuilder"; "required": false; }; "textFormatters": { "alias": "textFormatters"; "required": false; }; "messageAlignment": { "alias": "messageAlignment"; "required": false; }; "scrollToBottomOnNewMessages": { "alias": "scrollToBottomOnNewMessages"; "required": false; }; "quickOptionsCount": { "alias": "quickOptionsCount"; "required": false; }; "disableSoundForMessages": { "alias": "disableSoundForMessages"; "required": false; }; "customSoundForMessages": { "alias": "customSoundForMessages"; "required": false; }; "goToMessageId": { "alias": "goToMessageId"; "required": false; }; "showScrollbar": { "alias": "showScrollbar"; "required": false; }; "hideReceipts": { "alias": "hideReceipts"; "required": false; }; "hideDateSeparator": { "alias": "hideDateSeparator"; "required": false; }; "hideStickyDate": { "alias": "hideStickyDate"; "required": false; }; "hideAvatar": { "alias": "hideAvatar"; "required": false; }; "hideGroupActionMessages": { "alias": "hideGroupActionMessages"; "required": false; }; "hideError": { "alias": "hideError"; "required": false; }; "hideReplyInThreadOption": { "alias": "hideReplyInThreadOption"; "required": false; }; "hideTranslateMessageOption": { "alias": "hideTranslateMessageOption"; "required": false; }; "hideEditMessageOption": { "alias": "hideEditMessageOption"; "required": false; }; "hideDeleteMessageOption": { "alias": "hideDeleteMessageOption"; "required": false; }; "hideReactionOption": { "alias": "hideReactionOption"; "required": false; }; "hideMessagePrivatelyOption": { "alias": "hideMessagePrivatelyOption"; "required": false; }; "hideCopyMessageOption": { "alias": "hideCopyMessageOption"; "required": false; }; "hideMessageInfoOption": { "alias": "hideMessageInfoOption"; "required": false; }; "additionalOptions": { "alias": "additionalOptions"; "required": false; }; "optionsOverride": { "alias": "optionsOverride"; "required": false; }; "hideModerationView": { "alias": "hideModerationView"; "required": false; }; "hideFlagRemarkField": { "alias": "hideFlagRemarkField"; "required": false; }; "hideFlagMessageOption": { "alias": "hideFlagMessageOption"; "required": false; }; "showMarkAsUnreadOption": { "alias": "showMarkAsUnreadOption"; "required": false; }; "startFromUnreadMessages": { "alias": "startFromUnreadMessages"; "required": false; }; "hideReplyOption": { "alias": "hideReplyOption"; "required": false; }; "disableInteraction": { "alias": "disableInteraction"; "required": false; }; "emptyView": { "alias": "emptyView"; "required": false; }; "errorView": { "alias": "errorView"; "required": false; }; "loadingView": { "alias": "loadingView"; "required": false; }; "headerView": { "alias": "headerView"; "required": false; }; "footerView": { "alias": "footerView"; "required": false; }; "hideTimestamp": { "alias": "hideTimestamp"; "required": false; }; "bubbleFooterView": { "alias": "bubbleFooterView"; "required": false; }; "appendView": { "alias": "appendView"; "required": false; }; "listItemTemplate": { "alias": "listItemTemplate"; "required": false; }; "emptyStateTemplate": { "alias": "emptyStateTemplate"; "required": false; }; "errorStateTemplate": { "alias": "errorStateTemplate"; "required": false; }; "loadingStateTemplate": { "alias": "loadingStateTemplate"; "required": false; }; "separatorDateTimeFormat": { "alias": "separatorDateTimeFormat"; "required": false; }; "stickyDateTimeFormat": { "alias": "stickyDateTimeFormat"; "required": false; }; "messageSentAtDateTimeFormat": { "alias": "messageSentAtDateTimeFormat"; "required": false; }; "messageInfoDateTimeFormat": { "alias": "messageInfoDateTimeFormat"; "required": false; }; "showConversationStarters": { "alias": "showConversationStarters"; "required": false; }; "showSmartReplies": { "alias": "showSmartReplies"; "required": false; }; "smartRepliesKeywords": { "alias": "smartRepliesKeywords"; "required": false; }; "smartRepliesDelayDuration": { "alias": "smartRepliesDelayDuration"; "required": false; }; }, { "error": "error"; "threadRepliesClick": "threadRepliesClick"; "reactionClick": "reactionClick"; "reactionListItemClick": "reactionListItemClick"; "smartReplyClick": "smartReplyClick"; "conversationStarterClick": "conversationStarterClick"; "messagePrivatelyClick": "messagePrivatelyClick"; "replyClick": "replyClick"; }, never, never, true, never>;
|
|
12375
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<CometChatMessageListComponent, "cometchat-message-list", never, { "user": { "alias": "user"; "required": false; }; "group": { "alias": "group"; "required": false; }; "parentMessageId": { "alias": "parentMessageId"; "required": false; }; "isAgentChat": { "alias": "isAgentChat"; "required": false; }; "loadLastAgentConversation": { "alias": "loadLastAgentConversation"; "required": false; }; "messagesRequestBuilder": { "alias": "messagesRequestBuilder"; "required": false; }; "reactionsRequestBuilder": { "alias": "reactionsRequestBuilder"; "required": false; }; "textFormatters": { "alias": "textFormatters"; "required": false; }; "messageAlignment": { "alias": "messageAlignment"; "required": false; }; "scrollToBottomOnNewMessages": { "alias": "scrollToBottomOnNewMessages"; "required": false; }; "quickOptionsCount": { "alias": "quickOptionsCount"; "required": false; }; "disableSoundForMessages": { "alias": "disableSoundForMessages"; "required": false; }; "customSoundForMessages": { "alias": "customSoundForMessages"; "required": false; }; "goToMessageId": { "alias": "goToMessageId"; "required": false; }; "showScrollbar": { "alias": "showScrollbar"; "required": false; }; "hideReceipts": { "alias": "hideReceipts"; "required": false; }; "hideDateSeparator": { "alias": "hideDateSeparator"; "required": false; }; "hideStickyDate": { "alias": "hideStickyDate"; "required": false; }; "hideAvatar": { "alias": "hideAvatar"; "required": false; }; "hideGroupActionMessages": { "alias": "hideGroupActionMessages"; "required": false; }; "hideError": { "alias": "hideError"; "required": false; }; "hideReplyInThreadOption": { "alias": "hideReplyInThreadOption"; "required": false; }; "hideTranslateMessageOption": { "alias": "hideTranslateMessageOption"; "required": false; }; "hideEditMessageOption": { "alias": "hideEditMessageOption"; "required": false; }; "hideDeleteMessageOption": { "alias": "hideDeleteMessageOption"; "required": false; }; "hideReactionOption": { "alias": "hideReactionOption"; "required": false; }; "hideMessagePrivatelyOption": { "alias": "hideMessagePrivatelyOption"; "required": false; }; "hideCopyMessageOption": { "alias": "hideCopyMessageOption"; "required": false; }; "hideMessageInfoOption": { "alias": "hideMessageInfoOption"; "required": false; }; "additionalOptions": { "alias": "additionalOptions"; "required": false; }; "optionsOverride": { "alias": "optionsOverride"; "required": false; }; "hideModerationView": { "alias": "hideModerationView"; "required": false; }; "hideFlagRemarkField": { "alias": "hideFlagRemarkField"; "required": false; }; "hideFlagMessageOption": { "alias": "hideFlagMessageOption"; "required": false; }; "showMarkAsUnreadOption": { "alias": "showMarkAsUnreadOption"; "required": false; }; "startFromUnreadMessages": { "alias": "startFromUnreadMessages"; "required": false; }; "hideReplyOption": { "alias": "hideReplyOption"; "required": false; }; "disableInteraction": { "alias": "disableInteraction"; "required": false; }; "emptyView": { "alias": "emptyView"; "required": false; }; "errorView": { "alias": "errorView"; "required": false; }; "loadingView": { "alias": "loadingView"; "required": false; }; "headerView": { "alias": "headerView"; "required": false; }; "footerView": { "alias": "footerView"; "required": false; }; "hideTimestamp": { "alias": "hideTimestamp"; "required": false; }; "bubbleFooterView": { "alias": "bubbleFooterView"; "required": false; }; "appendView": { "alias": "appendView"; "required": false; }; "listItemTemplate": { "alias": "listItemTemplate"; "required": false; }; "emptyStateTemplate": { "alias": "emptyStateTemplate"; "required": false; }; "errorStateTemplate": { "alias": "errorStateTemplate"; "required": false; }; "loadingStateTemplate": { "alias": "loadingStateTemplate"; "required": false; }; "separatorDateTimeFormat": { "alias": "separatorDateTimeFormat"; "required": false; }; "stickyDateTimeFormat": { "alias": "stickyDateTimeFormat"; "required": false; }; "messageSentAtDateTimeFormat": { "alias": "messageSentAtDateTimeFormat"; "required": false; }; "messageInfoDateTimeFormat": { "alias": "messageInfoDateTimeFormat"; "required": false; }; "showConversationStarters": { "alias": "showConversationStarters"; "required": false; }; "showSmartReplies": { "alias": "showSmartReplies"; "required": false; }; "smartRepliesKeywords": { "alias": "smartRepliesKeywords"; "required": false; }; "smartRepliesDelayDuration": { "alias": "smartRepliesDelayDuration"; "required": false; }; }, { "error": "error"; "threadRepliesClick": "threadRepliesClick"; "reactionClick": "reactionClick"; "reactionListItemClick": "reactionListItemClick"; "smartReplyClick": "smartReplyClick"; "conversationStarterClick": "conversationStarterClick"; "messagePrivatelyClick": "messagePrivatelyClick"; "replyClick": "replyClick"; }, never, never, true, never>;
|
|
12099
12376
|
static ngAcceptInputType_isAgentChat: unknown;
|
|
12377
|
+
static ngAcceptInputType_loadLastAgentConversation: unknown;
|
|
12100
12378
|
static ngAcceptInputType_scrollToBottomOnNewMessages: unknown;
|
|
12101
12379
|
static ngAcceptInputType_disableSoundForMessages: unknown;
|
|
12102
12380
|
static ngAcceptInputType_showScrollbar: unknown;
|
|
@@ -12924,7 +13202,7 @@ declare class CometChatReactionInfoComponent implements OnInit, OnChanges {
|
|
|
12924
13202
|
/**
|
|
12925
13203
|
* Current component state: loading, loaded, or error.
|
|
12926
13204
|
*/
|
|
12927
|
-
state: _angular_core.WritableSignal<"
|
|
13205
|
+
state: _angular_core.WritableSignal<"loading" | "error" | "loaded">;
|
|
12928
13206
|
/**
|
|
12929
13207
|
* Formatted names of users who reacted.
|
|
12930
13208
|
*/
|
|
@@ -14237,7 +14515,7 @@ declare class CometChatConversationSummaryComponent implements OnInit {
|
|
|
14237
14515
|
* 15. Paragraphs
|
|
14238
14516
|
* 16. GFM tables | col | col |
|
|
14239
14517
|
*/
|
|
14240
|
-
type MarkdownNodeType = 'heading' | 'paragraph' | 'bold' | 'italic' | 'strikethrough' | 'inlineCode' | 'codeBlock' | 'blockquote' | 'orderedList' | 'unorderedList' | 'listItem' | 'link' | 'image' | 'hr' | 'lineBreak' | 'table' | 'text';
|
|
14518
|
+
type MarkdownNodeType = 'heading' | 'paragraph' | 'bold' | 'italic' | 'underline' | 'strikethrough' | 'inlineCode' | 'codeBlock' | 'blockquote' | 'orderedList' | 'unorderedList' | 'listItem' | 'link' | 'image' | 'hr' | 'lineBreak' | 'table' | 'text';
|
|
14241
14519
|
interface MarkdownNode {
|
|
14242
14520
|
type: MarkdownNodeType;
|
|
14243
14521
|
content?: string;
|
|
@@ -14249,6 +14527,7 @@ interface MarkdownNode {
|
|
|
14249
14527
|
rows?: string[][];
|
|
14250
14528
|
headers?: string[];
|
|
14251
14529
|
}
|
|
14530
|
+
declare function parseInline(text: string): MarkdownNode[];
|
|
14252
14531
|
declare class CometChatMarkdownParser {
|
|
14253
14532
|
parse(text: string, streaming?: boolean): MarkdownNode[];
|
|
14254
14533
|
}
|
|
@@ -14278,6 +14557,19 @@ declare class CometChatMarkdownRenderer {
|
|
|
14278
14557
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<CometChatMarkdownRenderer, "cometchat-markdown-renderer", never, { "text": { "alias": "text"; "required": true; "isSignal": true; }; "streaming": { "alias": "streaming"; "required": false; "isSignal": true; }; }, { "imageClick": "imageClick"; }, never, never, true, never>;
|
|
14279
14558
|
}
|
|
14280
14559
|
|
|
14560
|
+
/**
|
|
14561
|
+
* A normalized content block derived from one `AIAssistantElement`.
|
|
14562
|
+
* `text` blocks carry the assistant prose; `card` blocks carry the stringified raw
|
|
14563
|
+
* card payload (or a fallback string when the payload is empty/invalid).
|
|
14564
|
+
*/
|
|
14565
|
+
type AIAssistantContentBlock = {
|
|
14566
|
+
kind: 'text';
|
|
14567
|
+
text: string;
|
|
14568
|
+
} | {
|
|
14569
|
+
kind: 'card';
|
|
14570
|
+
cardJson: string;
|
|
14571
|
+
fallback: string;
|
|
14572
|
+
};
|
|
14281
14573
|
/**
|
|
14282
14574
|
* CometChatAIAssistantMessageBubble renders a completed AI assistant message
|
|
14283
14575
|
* with rich markdown formatting via CometChatMarkdownRenderer.
|
|
@@ -14291,7 +14583,14 @@ declare class CometChatAIAssistantMessageBubble {
|
|
|
14291
14583
|
readonly message: _angular_core.InputSignal<_cometchat_chat_sdk_javascript.AIAssistantMessage>;
|
|
14292
14584
|
/** Derived text from the message data — re-computes only when message() changes. */
|
|
14293
14585
|
readonly messageText: _angular_core.Signal<string>;
|
|
14294
|
-
/**
|
|
14586
|
+
/**
|
|
14587
|
+
* Ordered content blocks from `getElements()`, or `null`
|
|
14588
|
+
* when the message has no elements (older messages) — in which case the
|
|
14589
|
+
* template falls back to the existing `getText()` markdown render. The
|
|
14590
|
+
* `agentic/assistant` routing is unchanged; only this content view differs.
|
|
14591
|
+
*/
|
|
14592
|
+
readonly blocks: _angular_core.Signal<AIAssistantContentBlock[] | null>;
|
|
14593
|
+
/** Current color scheme, updated via window.matchMedia listener. Also handed to nested card renderers as the theme mode. */
|
|
14295
14594
|
readonly colorScheme: _angular_core.WritableSignal<"light" | "dark">;
|
|
14296
14595
|
/** Template ref for the image fullscreen viewer dialog. */
|
|
14297
14596
|
imageViewerTpl: TemplateRef<unknown>;
|
|
@@ -14303,10 +14602,28 @@ declare class CometChatAIAssistantMessageBubble {
|
|
|
14303
14602
|
* Opens the image in a dialog via CometChatUIEvents.ccShowDialog.
|
|
14304
14603
|
*/
|
|
14305
14604
|
onImageClick(url: string): void;
|
|
14605
|
+
/**
|
|
14606
|
+
* Pure-forward of a nested agent-card action. This bubble is
|
|
14607
|
+
* kit-instantiated, so no `(onCardAction)` prop reaches the app — the action is
|
|
14608
|
+
* emitted on the global event bus only, carrying the owning AIAssistantMessage.
|
|
14609
|
+
*/
|
|
14610
|
+
onCardAction(event: CometChatCardActionEvent): void;
|
|
14306
14611
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<CometChatAIAssistantMessageBubble, never>;
|
|
14307
14612
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<CometChatAIAssistantMessageBubble, "cometchat-ai-assistant-message-bubble", never, { "message": { "alias": "message"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
14308
14613
|
}
|
|
14309
14614
|
|
|
14615
|
+
/**
|
|
14616
|
+
* A card streamed live inside the AI bubble. Keyed by `cardId`
|
|
14617
|
+
* so the `card_start` loader is replaced in place by the `card` payload.
|
|
14618
|
+
*/
|
|
14619
|
+
interface StreamedCard {
|
|
14620
|
+
cardId: string;
|
|
14621
|
+
status: 'loading' | 'ready';
|
|
14622
|
+
/** Loader label from card_start (executionText), shown while status === 'loading'. */
|
|
14623
|
+
label: string;
|
|
14624
|
+
/** Stringified raw card payload, set on the `card` event. */
|
|
14625
|
+
cardJson: string;
|
|
14626
|
+
}
|
|
14310
14627
|
/**
|
|
14311
14628
|
* CometChatStreamMessageBubble renders a live-streaming AI response.
|
|
14312
14629
|
*
|
|
@@ -14327,9 +14644,19 @@ declare class CometChatStreamMessageBubble implements OnInit {
|
|
|
14327
14644
|
readonly hasError: _angular_core.WritableSignal<boolean>;
|
|
14328
14645
|
readonly streamedText: _angular_core.WritableSignal<string>;
|
|
14329
14646
|
readonly toolExecutionText: _angular_core.WritableSignal<string>;
|
|
14647
|
+
/** Cards streamed in this run (loader → rendered), in arrival order. */
|
|
14648
|
+
readonly streamedCards: _angular_core.WritableSignal<StreamedCard[]>;
|
|
14330
14649
|
readonly hasStreamedContent: _angular_core.Signal<boolean>;
|
|
14331
14650
|
ngOnInit(): void;
|
|
14332
14651
|
private _subscribeToStream;
|
|
14652
|
+
/**
|
|
14653
|
+
* Pure-forward of a streamed-card action. No persisted message
|
|
14654
|
+
* exists yet, so the event carries `message: null`; the persisted bubble that
|
|
14655
|
+
* follows is the source of truth.
|
|
14656
|
+
*/
|
|
14657
|
+
protected onCardAction(event: CometChatCardActionEvent): void;
|
|
14658
|
+
/** Inserts a new streamed card or updates the existing one (matched by cardId). */
|
|
14659
|
+
private _upsertCard;
|
|
14333
14660
|
private _registerOfflineListener;
|
|
14334
14661
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<CometChatStreamMessageBubble, never>;
|
|
14335
14662
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<CometChatStreamMessageBubble, "cometchat-stream-message-bubble", never, { "chatId": { "alias": "chatId"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
@@ -14387,6 +14714,7 @@ declare class CometChatToolCallResultBubble {
|
|
|
14387
14714
|
*/
|
|
14388
14715
|
declare class CometChatAIAssistantChatHistory implements OnInit {
|
|
14389
14716
|
private readonly destroyRef;
|
|
14717
|
+
private readonly hostRef;
|
|
14390
14718
|
readonly shimmerList: readonly number[];
|
|
14391
14719
|
readonly user: _angular_core.InputSignal<_cometchat_chat_sdk_javascript.User | undefined>;
|
|
14392
14720
|
readonly group: _angular_core.InputSignal<_cometchat_chat_sdk_javascript.Group | undefined>;
|
|
@@ -14437,6 +14765,11 @@ declare class CometChatAIAssistantChatHistory implements OnInit {
|
|
|
14437
14765
|
/** Emits newChatClick with null. */
|
|
14438
14766
|
onNewChatClick(): void;
|
|
14439
14767
|
onKeyDown(event: KeyboardEvent, index: number): void;
|
|
14768
|
+
/**
|
|
14769
|
+
* Updates the roving tabindex anchor and moves DOM focus to that option, so
|
|
14770
|
+
* arrow-key navigation actually moves keyboard focus (not just the tabindex).
|
|
14771
|
+
*/
|
|
14772
|
+
private moveFocusTo;
|
|
14440
14773
|
/** Returns tabindex for a given list item index. */
|
|
14441
14774
|
getTabIndex(index: number): number;
|
|
14442
14775
|
formatDate(timestampSeconds: number): string;
|
|
@@ -14455,9 +14788,10 @@ declare class CometChatAIAssistantChatHistory implements OnInit {
|
|
|
14455
14788
|
* Requirements: 10.1–10.18, 11.1, 12.1, 12.3–12.5, 12.7, 13.1, 13.3, 13.4, 13.7,
|
|
14456
14789
|
* 13.10, 13.12, 13.13, 16.1
|
|
14457
14790
|
*/
|
|
14458
|
-
declare class CometChatAIAssistantChat implements OnInit {
|
|
14791
|
+
declare class CometChatAIAssistantChat implements OnInit, AfterViewInit, OnDestroy {
|
|
14459
14792
|
readonly streamingService: CometChatAIStreamingService;
|
|
14460
14793
|
private readonly destroyRef;
|
|
14794
|
+
private readonly bubbleConfigService;
|
|
14461
14795
|
readonly user: _angular_core.InputSignal<_cometchat_chat_sdk_javascript.User>;
|
|
14462
14796
|
readonly streamingSpeed: _angular_core.InputSignal<number>;
|
|
14463
14797
|
readonly aiAssistantTools: _angular_core.InputSignal<CometChatAIAssistantTools | undefined>;
|
|
@@ -14486,9 +14820,21 @@ declare class CometChatAIAssistantChat implements OnInit {
|
|
|
14486
14820
|
readonly sidebarTriggerEl: _angular_core.WritableSignal<HTMLElement | null>;
|
|
14487
14821
|
readonly hasComposerText: _angular_core.WritableSignal<boolean>;
|
|
14488
14822
|
readonly activeRunId: _angular_core.WritableSignal<string | null>;
|
|
14823
|
+
/**
|
|
14824
|
+
* Local mutable copy of loadLastAgentConversation. Set to false after the
|
|
14825
|
+
* first load resolves or when "New Chat" is clicked — prevents the message
|
|
14826
|
+
* list from staying in shimmer state forever.
|
|
14827
|
+
*/
|
|
14828
|
+
readonly loadLastAgentConversationState: _angular_core.WritableSignal<boolean>;
|
|
14829
|
+
/** Sentinel message ID used for the temporary streaming placeholder message. */
|
|
14830
|
+
private readonly STREAMING_MESSAGE_ID;
|
|
14831
|
+
/** The currently logged-in user (used in templates for sender checks). */
|
|
14832
|
+
readonly loggedInUser: _angular_core.WritableSignal<_cometchat_chat_sdk_javascript.User | null>;
|
|
14489
14833
|
sidebarContainerRef?: ElementRef<HTMLElement>;
|
|
14490
14834
|
agentBubbleFooter?: TemplateRef<any>;
|
|
14835
|
+
streamBubbleViewTpl?: TemplateRef<any>;
|
|
14491
14836
|
composerRef?: CometChatMessageComposerComponent;
|
|
14837
|
+
messageListRef?: CometChatMessageListComponent;
|
|
14492
14838
|
/** True while the AI is streaming a response for this user. */
|
|
14493
14839
|
readonly isStreaming: _angular_core.WritableSignal<boolean>;
|
|
14494
14840
|
/** Suggestion pills: prefer explicit input, fall back to user metadata. */
|
|
@@ -14511,6 +14857,8 @@ declare class CometChatAIAssistantChat implements OnInit {
|
|
|
14511
14857
|
}>;
|
|
14512
14858
|
constructor();
|
|
14513
14859
|
ngOnInit(): void;
|
|
14860
|
+
ngAfterViewInit(): void;
|
|
14861
|
+
ngOnDestroy(): void;
|
|
14514
14862
|
/** Handle back button click — emits backClick output. */
|
|
14515
14863
|
onBackClick(): void;
|
|
14516
14864
|
/** Start a new chat: reset state, stop streaming, bump key. */
|
|
@@ -14537,7 +14885,8 @@ declare class CometChatAIAssistantChat implements OnInit {
|
|
|
14537
14885
|
handleRetryClick(): void;
|
|
14538
14886
|
/**
|
|
14539
14887
|
* Subscribe to the streaming state observable for this user and keep
|
|
14540
|
-
* the isStreaming signal in sync.
|
|
14888
|
+
* the isStreaming signal in sync. When streaming stops, remove the
|
|
14889
|
+
* temporary placeholder message from the list.
|
|
14541
14890
|
*/
|
|
14542
14891
|
private _subscribeToStreamingState;
|
|
14543
14892
|
/**
|
|
@@ -14551,6 +14900,15 @@ declare class CometChatAIAssistantChat implements OnInit {
|
|
|
14551
14900
|
* so the stream bubble disappears and only the final message shows.
|
|
14552
14901
|
*/
|
|
14553
14902
|
private _subscribeToAIMessageReceived;
|
|
14903
|
+
/**
|
|
14904
|
+
* Adds a temporary placeholder message to the message list that triggers
|
|
14905
|
+
* the streaming bubble view via MessageBubbleConfigService.
|
|
14906
|
+
*/
|
|
14907
|
+
private _addStreamingMessage;
|
|
14908
|
+
/**
|
|
14909
|
+
* Removes the temporary streaming placeholder message from the message list.
|
|
14910
|
+
*/
|
|
14911
|
+
private _removeStreamingMessage;
|
|
14554
14912
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<CometChatAIAssistantChat, never>;
|
|
14555
14913
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<CometChatAIAssistantChat, "cometchat-ai-assistant-chat", never, { "user": { "alias": "user"; "required": true; "isSignal": true; }; "streamingSpeed": { "alias": "streamingSpeed"; "required": false; "isSignal": true; }; "aiAssistantTools": { "alias": "aiAssistantTools"; "required": false; "isSignal": true; }; "loadLastAgentConversation": { "alias": "loadLastAgentConversation"; "required": false; "isSignal": true; }; "showSuggestedMessages": { "alias": "showSuggestedMessages"; "required": false; "isSignal": true; }; "suggestedMessages": { "alias": "suggestedMessages"; "required": false; "isSignal": true; }; "showBackButton": { "alias": "showBackButton"; "required": false; "isSignal": true; }; "greetingTemplate": { "alias": "greetingTemplate"; "required": false; "isSignal": true; }; }, { "backClick": "backClick"; }, never, never, true, never>;
|
|
14556
14914
|
}
|
|
@@ -14818,6 +15176,8 @@ declare class CometChatSearchMessagesListComponent implements OnInit, OnChanges,
|
|
|
14818
15176
|
toolArguments: string;
|
|
14819
15177
|
toolResults: string;
|
|
14820
15178
|
}>;
|
|
15179
|
+
private readonly htmlSanitizer;
|
|
15180
|
+
private readonly formatterConfig;
|
|
14821
15181
|
private loggedInUser;
|
|
14822
15182
|
constructor();
|
|
14823
15183
|
/** Whether the paginated list is in loading state (initial load only) */
|
|
@@ -14837,6 +15197,23 @@ declare class CometChatSearchMessagesListComponent implements OnInit, OnChanges,
|
|
|
14837
15197
|
getMessageTitle(message: CometChat.BaseMessage): string;
|
|
14838
15198
|
shouldShowDateSeparator(index: number): boolean;
|
|
14839
15199
|
getMessageSubtitle(message: CometChat.BaseMessage): string;
|
|
15200
|
+
/**
|
|
15201
|
+
* Returns true when the subtitle for a text message should be rendered as HTML
|
|
15202
|
+
* (i.e. it contains markdown, rich text metadata, or SDK mention tags).
|
|
15203
|
+
* Mirrors CometChatConversationItem.subtitleHasHtml.
|
|
15204
|
+
*/
|
|
15205
|
+
subtitleHasHtml(message: CometChat.BaseMessage): boolean;
|
|
15206
|
+
/**
|
|
15207
|
+
* Returns sanitized HTML for the subtitle when subtitleHasHtml() is true.
|
|
15208
|
+
* Mirrors CometChatConversationItem.formatLastMessageSubtitle.
|
|
15209
|
+
*/
|
|
15210
|
+
getMessageSubtitleHtml(message: CometChat.BaseMessage): string;
|
|
15211
|
+
/** Prepend "You: " or "SenderName: " as plain text before the HTML subtitle. */
|
|
15212
|
+
private prependSenderHtml;
|
|
15213
|
+
/** Get the active text formatters — explicit input takes priority over global config. */
|
|
15214
|
+
private getFormattersForSubtitle;
|
|
15215
|
+
/** Sanitize HTML to safe inline tags only for search subtitle — single line, truncated. */
|
|
15216
|
+
private sanitizeSubtitleHtml;
|
|
14840
15217
|
/**
|
|
14841
15218
|
* Convert SDK mention tags into plain-text `@DisplayName`.
|
|
14842
15219
|
* Falls back to the UID when a mentioned user is not hydrated on the message.
|
|
@@ -14907,5 +15284,469 @@ declare function hasValidSearchCriteria(keyword: string, filters: CometChatSearc
|
|
|
14907
15284
|
*/
|
|
14908
15285
|
declare function hasValidMessageSearchCriteria(keyword: string, filters: CometChatSearchFilter[], uid?: string, guid?: string): boolean;
|
|
14909
15286
|
|
|
14910
|
-
|
|
14911
|
-
|
|
15287
|
+
/**
|
|
15288
|
+
* Re-export the SDK's NotificationFeedItem type.
|
|
15289
|
+
* This provides full type safety for all SDK method calls (markFeedItemAsDelivered, etc.)
|
|
15290
|
+
* while giving consumers a convenient import path.
|
|
15291
|
+
*/
|
|
15292
|
+
type NotificationFeedItem = CometChat.NotificationFeedItem;
|
|
15293
|
+
/**
|
|
15294
|
+
* Represents a notification category for filter chips.
|
|
15295
|
+
*/
|
|
15296
|
+
interface NotificationCategory {
|
|
15297
|
+
id: string;
|
|
15298
|
+
label: string;
|
|
15299
|
+
}
|
|
15300
|
+
/**
|
|
15301
|
+
* Engagement type for feed interactions.
|
|
15302
|
+
*/
|
|
15303
|
+
type FeedEngagementType = 'viewed' | 'clicked' | 'interacted';
|
|
15304
|
+
/**
|
|
15305
|
+
* Action triggered from a card element (from @cometchat/cards-angular).
|
|
15306
|
+
*/
|
|
15307
|
+
interface CardAction {
|
|
15308
|
+
type: string;
|
|
15309
|
+
params: Record<string, any>;
|
|
15310
|
+
elementId?: string;
|
|
15311
|
+
cardJson?: string;
|
|
15312
|
+
}
|
|
15313
|
+
/**
|
|
15314
|
+
* Timestamp group for feed items grouped by date.
|
|
15315
|
+
*/
|
|
15316
|
+
interface TimestampGroup {
|
|
15317
|
+
label: string;
|
|
15318
|
+
items: NotificationFeedItem[];
|
|
15319
|
+
}
|
|
15320
|
+
/**
|
|
15321
|
+
* Style customization for CometChatNotificationFeed.
|
|
15322
|
+
*/
|
|
15323
|
+
interface CometChatNotificationFeedStyle {
|
|
15324
|
+
backgroundColor?: string;
|
|
15325
|
+
width?: string;
|
|
15326
|
+
height?: string;
|
|
15327
|
+
headerTitleColor?: string;
|
|
15328
|
+
headerTitleFont?: string;
|
|
15329
|
+
chipActiveBackgroundColor?: string;
|
|
15330
|
+
chipActiveTextColor?: string;
|
|
15331
|
+
chipInactiveBackgroundColor?: string;
|
|
15332
|
+
chipInactiveTextColor?: string;
|
|
15333
|
+
chipBorderColor?: string;
|
|
15334
|
+
badgeBackgroundColor?: string;
|
|
15335
|
+
badgeTextColor?: string;
|
|
15336
|
+
separatorColor?: string;
|
|
15337
|
+
timestampTextColor?: string;
|
|
15338
|
+
timestampFont?: string;
|
|
15339
|
+
cardBackgroundColor?: string;
|
|
15340
|
+
cardBorderColor?: string;
|
|
15341
|
+
cardBorderRadius?: string;
|
|
15342
|
+
cardBorderWidth?: string;
|
|
15343
|
+
unreadIndicatorColor?: string;
|
|
15344
|
+
}
|
|
15345
|
+
/**
|
|
15346
|
+
* Internal screen state for the feed.
|
|
15347
|
+
*/
|
|
15348
|
+
type ScreenState = 'loading' | 'loaded' | 'empty' | 'error';
|
|
15349
|
+
/**
|
|
15350
|
+
* Internal state for the NotificationFeed ViewModel.
|
|
15351
|
+
*/
|
|
15352
|
+
interface NotificationFeedState {
|
|
15353
|
+
items: NotificationFeedItem[];
|
|
15354
|
+
groupedItems: TimestampGroup[];
|
|
15355
|
+
categories: NotificationCategory[];
|
|
15356
|
+
activeCategory: string | null;
|
|
15357
|
+
totalUnreadCount: number;
|
|
15358
|
+
categoryUnreadCounts: Map<string, number>;
|
|
15359
|
+
screenState: ScreenState;
|
|
15360
|
+
isLoadingMore: boolean;
|
|
15361
|
+
isRefreshing: boolean;
|
|
15362
|
+
isOffline: boolean;
|
|
15363
|
+
error: CometChat.CometChatException | null;
|
|
15364
|
+
hasMorePages: boolean;
|
|
15365
|
+
paginationError: boolean;
|
|
15366
|
+
}
|
|
15367
|
+
|
|
15368
|
+
/**
|
|
15369
|
+
* CometChatNotificationFeed — Main notification feed component.
|
|
15370
|
+
* Displays campaign/promotional notifications in a scrollable list with
|
|
15371
|
+
* card rendering, real-time updates, and engagement reporting.
|
|
15372
|
+
*/
|
|
15373
|
+
declare class CometChatNotificationFeedComponent implements OnInit, OnDestroy, AfterViewInit {
|
|
15374
|
+
private ngZone;
|
|
15375
|
+
private cdr;
|
|
15376
|
+
/** Title displayed in the header. Default: localized 'notifications_title' */
|
|
15377
|
+
title: string;
|
|
15378
|
+
/** Whether to show the header. Default: true */
|
|
15379
|
+
showHeader: boolean;
|
|
15380
|
+
/** Whether to show the back button. Default: false */
|
|
15381
|
+
showBackButton: boolean;
|
|
15382
|
+
/** Whether to show filter chips. Default: true */
|
|
15383
|
+
showFilterChips: boolean;
|
|
15384
|
+
/** Deep link: scroll to a specific item by ID */
|
|
15385
|
+
scrollToItemId: string | undefined;
|
|
15386
|
+
/** Custom request builder for fetching feed items */
|
|
15387
|
+
notificationFeedRequestBuilder: any;
|
|
15388
|
+
/** Custom request builder for fetching categories */
|
|
15389
|
+
notificationCategoriesRequestBuilder: any;
|
|
15390
|
+
/** Custom header template */
|
|
15391
|
+
headerView: TemplateRef<any> | undefined;
|
|
15392
|
+
/** Custom empty state template */
|
|
15393
|
+
emptyStateView: TemplateRef<any> | undefined;
|
|
15394
|
+
/** Custom error state template */
|
|
15395
|
+
errorStateView: TemplateRef<any> | undefined;
|
|
15396
|
+
/** Custom loading state template */
|
|
15397
|
+
loadingStateView: TemplateRef<any> | undefined;
|
|
15398
|
+
/** Style customization */
|
|
15399
|
+
style: CometChatNotificationFeedStyle | undefined;
|
|
15400
|
+
/** Card theme mode forwarded to @cometchat/cards-angular */
|
|
15401
|
+
cardThemeMode: 'auto' | 'light' | 'dark';
|
|
15402
|
+
/** Card theme override forwarded to @cometchat/cards-angular */
|
|
15403
|
+
cardThemeOverride: Record<string, any> | undefined;
|
|
15404
|
+
/** Emitted when a feed item is clicked */
|
|
15405
|
+
itemClick: EventEmitter$1<_cometchat_chat_sdk_javascript.NotificationFeedItem>;
|
|
15406
|
+
/** Emitted when a card action button is clicked */
|
|
15407
|
+
actionClick: EventEmitter$1<{
|
|
15408
|
+
item: NotificationFeedItem;
|
|
15409
|
+
action: CometChatCardAction;
|
|
15410
|
+
}>;
|
|
15411
|
+
/** Emitted when an error occurs */
|
|
15412
|
+
error: EventEmitter$1<_cometchat_chat_sdk_javascript.CometChatException>;
|
|
15413
|
+
/** Emitted when back button is pressed */
|
|
15414
|
+
backClick: EventEmitter$1<void>;
|
|
15415
|
+
contentRef: ElementRef<HTMLDivElement>;
|
|
15416
|
+
state: _angular_core.WritableSignal<NotificationFeedState>;
|
|
15417
|
+
private viewModel;
|
|
15418
|
+
private visibilityTracker;
|
|
15419
|
+
private observedItemIds;
|
|
15420
|
+
ngOnInit(): void;
|
|
15421
|
+
ngAfterViewInit(): void;
|
|
15422
|
+
ngOnDestroy(): void;
|
|
15423
|
+
private initVisibilityTracker;
|
|
15424
|
+
/**
|
|
15425
|
+
* Called by the template to observe each feed item element.
|
|
15426
|
+
* Tracks observed items to avoid redundant IntersectionObserver.observe() calls.
|
|
15427
|
+
* Returns null for use in [attr.data-observe] binding.
|
|
15428
|
+
*/
|
|
15429
|
+
observeItem(element: HTMLElement, item: NotificationFeedItem): null;
|
|
15430
|
+
onScroll(event: Event): void;
|
|
15431
|
+
onItemClick(item: NotificationFeedItem): void;
|
|
15432
|
+
onCardAction(item: NotificationFeedItem, event: CometChatCardActionEvent): void;
|
|
15433
|
+
onChipClick(category: string | null): void;
|
|
15434
|
+
onRetry(): void;
|
|
15435
|
+
onRetryPagination(): void;
|
|
15436
|
+
onBackClick(): void;
|
|
15437
|
+
private scrollToItem;
|
|
15438
|
+
/**
|
|
15439
|
+
* TrackBy function for grouped items.
|
|
15440
|
+
*/
|
|
15441
|
+
trackByGroup(index: number, group: TimestampGroup): string;
|
|
15442
|
+
/**
|
|
15443
|
+
* TrackBy function for feed items.
|
|
15444
|
+
*/
|
|
15445
|
+
trackByItem(index: number, item: NotificationFeedItem): string;
|
|
15446
|
+
/**
|
|
15447
|
+
* TrackBy function for categories.
|
|
15448
|
+
*/
|
|
15449
|
+
trackByCategory(index: number, cat: NotificationCategory): string;
|
|
15450
|
+
/**
|
|
15451
|
+
* Get the card content as a JSON string for the cards renderer.
|
|
15452
|
+
*/
|
|
15453
|
+
getCardJson(item: NotificationFeedItem): string;
|
|
15454
|
+
/**
|
|
15455
|
+
* Get fallback text for card content.
|
|
15456
|
+
* Extracts readable text from the card JSON when @cometchat/cards-angular is not available.
|
|
15457
|
+
*/
|
|
15458
|
+
getFallbackText(item: NotificationFeedItem): string;
|
|
15459
|
+
/**
|
|
15460
|
+
* Get category unread count.
|
|
15461
|
+
*/
|
|
15462
|
+
getCategoryUnreadCount(categoryId: string): number;
|
|
15463
|
+
/**
|
|
15464
|
+
* Format badge count with 99+ cap.
|
|
15465
|
+
*/
|
|
15466
|
+
formatBadgeCount(count: number): string;
|
|
15467
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<CometChatNotificationFeedComponent, never>;
|
|
15468
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<CometChatNotificationFeedComponent, "cometchat-notification-feed", never, { "title": { "alias": "title"; "required": false; }; "showHeader": { "alias": "showHeader"; "required": false; }; "showBackButton": { "alias": "showBackButton"; "required": false; }; "showFilterChips": { "alias": "showFilterChips"; "required": false; }; "scrollToItemId": { "alias": "scrollToItemId"; "required": false; }; "notificationFeedRequestBuilder": { "alias": "notificationFeedRequestBuilder"; "required": false; }; "notificationCategoriesRequestBuilder": { "alias": "notificationCategoriesRequestBuilder"; "required": false; }; "headerView": { "alias": "headerView"; "required": false; }; "emptyStateView": { "alias": "emptyStateView"; "required": false; }; "errorStateView": { "alias": "errorStateView"; "required": false; }; "loadingStateView": { "alias": "loadingStateView"; "required": false; }; "style": { "alias": "style"; "required": false; }; "cardThemeMode": { "alias": "cardThemeMode"; "required": false; }; "cardThemeOverride": { "alias": "cardThemeOverride"; "required": false; }; }, { "itemClick": "itemClick"; "actionClick": "actionClick"; "error": "error"; "backClick": "backClick"; }, never, never, true, never>;
|
|
15469
|
+
static ngAcceptInputType_showHeader: unknown;
|
|
15470
|
+
static ngAcceptInputType_showBackButton: unknown;
|
|
15471
|
+
static ngAcceptInputType_showFilterChips: unknown;
|
|
15472
|
+
}
|
|
15473
|
+
|
|
15474
|
+
/**
|
|
15475
|
+
* ViewModel for CometChatNotificationFeed.
|
|
15476
|
+
* Manages all data operations: fetching, pagination, engagement, real-time updates.
|
|
15477
|
+
*/
|
|
15478
|
+
declare class NotificationFeedViewModel {
|
|
15479
|
+
private feedRequestBuilder;
|
|
15480
|
+
private customFeedRequestBuilder;
|
|
15481
|
+
private categoriesRequestBuilder;
|
|
15482
|
+
private listenerId;
|
|
15483
|
+
private pollingInterval;
|
|
15484
|
+
private deliveredItemIds;
|
|
15485
|
+
private fetchVersion;
|
|
15486
|
+
private onStateChange;
|
|
15487
|
+
private state;
|
|
15488
|
+
constructor(onStateChange: (state: NotificationFeedState) => void, feedRequestBuilder?: any, categoriesRequestBuilder?: any);
|
|
15489
|
+
/**
|
|
15490
|
+
* Get current state.
|
|
15491
|
+
*/
|
|
15492
|
+
getState(): NotificationFeedState;
|
|
15493
|
+
/**
|
|
15494
|
+
* Update state and notify the view.
|
|
15495
|
+
*/
|
|
15496
|
+
private setState;
|
|
15497
|
+
/**
|
|
15498
|
+
* Initialize: fetch categories, first page, register listener.
|
|
15499
|
+
*/
|
|
15500
|
+
init(): Promise<void>;
|
|
15501
|
+
/**
|
|
15502
|
+
* Cleanup: remove listener, stop polling.
|
|
15503
|
+
*/
|
|
15504
|
+
dispose(): void;
|
|
15505
|
+
/**
|
|
15506
|
+
* Fetch available categories for filter chips.
|
|
15507
|
+
*/
|
|
15508
|
+
fetchCategories(): Promise<void>;
|
|
15509
|
+
/**
|
|
15510
|
+
* Fetch the first page of feed items.
|
|
15511
|
+
* Uses fetchVersion to discard stale results from previous category switches.
|
|
15512
|
+
*/
|
|
15513
|
+
fetchInitialItems(): Promise<void>;
|
|
15514
|
+
/**
|
|
15515
|
+
* Fetch next page (infinite scroll).
|
|
15516
|
+
*/
|
|
15517
|
+
fetchNextPage(): Promise<void>;
|
|
15518
|
+
/**
|
|
15519
|
+
* Retry pagination after error.
|
|
15520
|
+
*/
|
|
15521
|
+
retryPagination(): void;
|
|
15522
|
+
/**
|
|
15523
|
+
* Refresh feed (pull-to-refresh or reconnect).
|
|
15524
|
+
*/
|
|
15525
|
+
refresh(): Promise<void>;
|
|
15526
|
+
/**
|
|
15527
|
+
* Switch category filter.
|
|
15528
|
+
*/
|
|
15529
|
+
switchCategory(category: string | null): void;
|
|
15530
|
+
/**
|
|
15531
|
+
* Report delivered for a batch of items (once per item).
|
|
15532
|
+
*/
|
|
15533
|
+
private reportDeliveredBatch;
|
|
15534
|
+
/**
|
|
15535
|
+
* Report item as delivered (fire-and-forget, once per item).
|
|
15536
|
+
*/
|
|
15537
|
+
reportDelivered(item: NotificationFeedItem): void;
|
|
15538
|
+
/**
|
|
15539
|
+
* Report item as viewed (fire-and-forget).
|
|
15540
|
+
*/
|
|
15541
|
+
reportViewed(item: NotificationFeedItem): void;
|
|
15542
|
+
/**
|
|
15543
|
+
* Report item as read (after 1s visibility).
|
|
15544
|
+
*/
|
|
15545
|
+
reportRead(item: NotificationFeedItem): void;
|
|
15546
|
+
/**
|
|
15547
|
+
* Report item as clicked.
|
|
15548
|
+
*/
|
|
15549
|
+
reportClicked(item: NotificationFeedItem): void;
|
|
15550
|
+
/**
|
|
15551
|
+
* Report item as interacted (action button tap).
|
|
15552
|
+
*/
|
|
15553
|
+
reportInteracted(item: NotificationFeedItem): void;
|
|
15554
|
+
/**
|
|
15555
|
+
* Register WebSocket listener for new feed items.
|
|
15556
|
+
*/
|
|
15557
|
+
private registerListener;
|
|
15558
|
+
/**
|
|
15559
|
+
* Remove WebSocket listener.
|
|
15560
|
+
*/
|
|
15561
|
+
private removeListener;
|
|
15562
|
+
/**
|
|
15563
|
+
* Handle new feed item received via WebSocket.
|
|
15564
|
+
*/
|
|
15565
|
+
onFeedItemReceived(item: NotificationFeedItem): void;
|
|
15566
|
+
/**
|
|
15567
|
+
* Fetch current unread count.
|
|
15568
|
+
*/
|
|
15569
|
+
private fetchUnreadCount;
|
|
15570
|
+
/**
|
|
15571
|
+
* Start polling unread count every 30 seconds.
|
|
15572
|
+
*/
|
|
15573
|
+
startUnreadCountPolling(intervalMs?: number): void;
|
|
15574
|
+
/**
|
|
15575
|
+
* Stop polling.
|
|
15576
|
+
*/
|
|
15577
|
+
stopUnreadCountPolling(): void;
|
|
15578
|
+
/**
|
|
15579
|
+
* Initialize or re-initialize the feed request builder.
|
|
15580
|
+
* Respects custom builder if provided via constructor (when no category filter active).
|
|
15581
|
+
*/
|
|
15582
|
+
private initFeedRequestBuilder;
|
|
15583
|
+
}
|
|
15584
|
+
|
|
15585
|
+
/**
|
|
15586
|
+
* Groups feed items by their sentAt timestamp into labeled sections.
|
|
15587
|
+
*
|
|
15588
|
+
* Rules:
|
|
15589
|
+
* - sentAt is today → localized "Today"
|
|
15590
|
+
* - sentAt is yesterday → localized "Yesterday"
|
|
15591
|
+
* - sentAt is within this week → Day name (e.g., "Monday")
|
|
15592
|
+
* - sentAt is older → Localized date (e.g., "Jan 15, 2025")
|
|
15593
|
+
*/
|
|
15594
|
+
declare function groupByTimestamp(items: NotificationFeedItem[]): TimestampGroup[];
|
|
15595
|
+
/**
|
|
15596
|
+
* Visibility tracker using IntersectionObserver.
|
|
15597
|
+
* Tracks which items are visible and manages read/viewed engagement timers.
|
|
15598
|
+
*/
|
|
15599
|
+
declare class VisibilityTracker {
|
|
15600
|
+
private observer;
|
|
15601
|
+
private timers;
|
|
15602
|
+
private viewedItems;
|
|
15603
|
+
private readItems;
|
|
15604
|
+
private onViewed;
|
|
15605
|
+
private onRead;
|
|
15606
|
+
private itemMap;
|
|
15607
|
+
constructor(onViewed: (item: NotificationFeedItem) => void, onRead: (item: NotificationFeedItem) => void);
|
|
15608
|
+
/**
|
|
15609
|
+
* Initialize the IntersectionObserver.
|
|
15610
|
+
*/
|
|
15611
|
+
init(root: HTMLElement | null): void;
|
|
15612
|
+
/**
|
|
15613
|
+
* Observe a DOM element for a feed item.
|
|
15614
|
+
*/
|
|
15615
|
+
observe(element: HTMLElement, item: NotificationFeedItem): void;
|
|
15616
|
+
/**
|
|
15617
|
+
* Unobserve a DOM element.
|
|
15618
|
+
*/
|
|
15619
|
+
unobserve(element: HTMLElement): void;
|
|
15620
|
+
/**
|
|
15621
|
+
* Handle item becoming visible in viewport.
|
|
15622
|
+
*/
|
|
15623
|
+
private handleItemVisible;
|
|
15624
|
+
/**
|
|
15625
|
+
* Handle item leaving viewport.
|
|
15626
|
+
*/
|
|
15627
|
+
private handleItemHidden;
|
|
15628
|
+
/**
|
|
15629
|
+
* Mark an item as already read (e.g., when state updates externally).
|
|
15630
|
+
*/
|
|
15631
|
+
markAsRead(itemId: string): void;
|
|
15632
|
+
/**
|
|
15633
|
+
* Reset the tracker state (call on category switch to prevent memory leak).
|
|
15634
|
+
* Note: After disconnect(), the existing IntersectionObserver instance remains valid.
|
|
15635
|
+
* Calling observe() on it after disconnect() will resume observation for newly
|
|
15636
|
+
* added elements — this is per the IntersectionObserver spec. No re-creation needed.
|
|
15637
|
+
*/
|
|
15638
|
+
reset(): void;
|
|
15639
|
+
/**
|
|
15640
|
+
* Cleanup all observers and timers.
|
|
15641
|
+
*/
|
|
15642
|
+
dispose(): void;
|
|
15643
|
+
}
|
|
15644
|
+
|
|
15645
|
+
/**
|
|
15646
|
+
* Pure pipe to format badge count with 99+ cap.
|
|
15647
|
+
* Replaces method call in template to avoid re-evaluation on every CD cycle.
|
|
15648
|
+
*/
|
|
15649
|
+
declare class BadgeCountPipe implements PipeTransform {
|
|
15650
|
+
transform(count: number, max?: number): string;
|
|
15651
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<BadgeCountPipe, never>;
|
|
15652
|
+
static ɵpipe: _angular_core.ɵɵPipeDeclaration<BadgeCountPipe, "badgeCount", true>;
|
|
15653
|
+
}
|
|
15654
|
+
/**
|
|
15655
|
+
* Pure pipe to extract card JSON string from a NotificationFeedItem.
|
|
15656
|
+
* Replaces method call in template to avoid JSON.stringify on every CD cycle.
|
|
15657
|
+
*/
|
|
15658
|
+
declare class CardJsonPipe implements PipeTransform {
|
|
15659
|
+
transform(item: NotificationFeedItem): string;
|
|
15660
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<CardJsonPipe, never>;
|
|
15661
|
+
static ɵpipe: _angular_core.ɵɵPipeDeclaration<CardJsonPipe, "cardJson", true>;
|
|
15662
|
+
}
|
|
15663
|
+
/**
|
|
15664
|
+
* Pure pipe to get category unread count from the Map.
|
|
15665
|
+
* Replaces method call in template to avoid re-evaluation on every CD cycle.
|
|
15666
|
+
*/
|
|
15667
|
+
declare class CategoryUnreadCountPipe implements PipeTransform {
|
|
15668
|
+
transform(categoryId: string, categoryUnreadCounts: Map<string, number>): number;
|
|
15669
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<CategoryUnreadCountPipe, never>;
|
|
15670
|
+
static ɵpipe: _angular_core.ɵɵPipeDeclaration<CategoryUnreadCountPipe, "categoryUnreadCount", true>;
|
|
15671
|
+
}
|
|
15672
|
+
|
|
15673
|
+
/**
|
|
15674
|
+
* Style customization for CometChatNotificationBadge.
|
|
15675
|
+
*/
|
|
15676
|
+
interface NotificationBadgeStyle {
|
|
15677
|
+
backgroundColor?: string;
|
|
15678
|
+
textColor?: string;
|
|
15679
|
+
fontSize?: string;
|
|
15680
|
+
borderRadius?: string;
|
|
15681
|
+
}
|
|
15682
|
+
|
|
15683
|
+
/**
|
|
15684
|
+
* CometChatNotificationBadge — Displays unread notification count.
|
|
15685
|
+
* Subscribes to real-time updates and re-syncs on window focus.
|
|
15686
|
+
*
|
|
15687
|
+
* Usage:
|
|
15688
|
+
* ```html
|
|
15689
|
+
* <cometchat-notification-badge [max]="99"></cometchat-notification-badge>
|
|
15690
|
+
* ```
|
|
15691
|
+
*/
|
|
15692
|
+
declare class CometChatNotificationBadgeComponent implements OnInit, OnDestroy {
|
|
15693
|
+
private unreadCountService;
|
|
15694
|
+
/** Filter count by category */
|
|
15695
|
+
category: string | undefined;
|
|
15696
|
+
/** Maximum count to display before showing "N+". Default: 99 */
|
|
15697
|
+
max: number;
|
|
15698
|
+
/** Style overrides */
|
|
15699
|
+
style: NotificationBadgeStyle | undefined;
|
|
15700
|
+
/** Internal count signal */
|
|
15701
|
+
count: _angular_core.WritableSignal<number>;
|
|
15702
|
+
private subscription;
|
|
15703
|
+
ngOnInit(): void;
|
|
15704
|
+
ngOnDestroy(): void;
|
|
15705
|
+
/**
|
|
15706
|
+
* Display text for the badge (computed signal for performance).
|
|
15707
|
+
*/
|
|
15708
|
+
readonly displayText: _angular_core.Signal<string>;
|
|
15709
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<CometChatNotificationBadgeComponent, never>;
|
|
15710
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<CometChatNotificationBadgeComponent, "cometchat-notification-badge", never, { "category": { "alias": "category"; "required": false; }; "max": { "alias": "max"; "required": false; }; "style": { "alias": "style"; "required": false; }; }, {}, never, never, true, never>;
|
|
15711
|
+
}
|
|
15712
|
+
|
|
15713
|
+
/**
|
|
15714
|
+
* Options for safeEffect — mirrors Angular's EffectOptions but always
|
|
15715
|
+
* includes allowSignalWrites: true so the effect works across Angular 18–21.
|
|
15716
|
+
*
|
|
15717
|
+
* Background:
|
|
15718
|
+
* - Angular 18/19: `allowSignalWrites` is REQUIRED when writing to signals
|
|
15719
|
+
* inside an effect body. Omitting it throws a runtime error.
|
|
15720
|
+
* - Angular 21+: `allowSignalWrites` is deprecated and optional (signal writes
|
|
15721
|
+
* inside effects are allowed by default).
|
|
15722
|
+
*
|
|
15723
|
+
* Using this wrapper means developers never need to remember to add the flag,
|
|
15724
|
+
* and the codebase stays compatible across all supported Angular versions.
|
|
15725
|
+
*/
|
|
15726
|
+
interface SafeEffectOptions {
|
|
15727
|
+
injector?: Injector;
|
|
15728
|
+
manualCleanup?: boolean;
|
|
15729
|
+
}
|
|
15730
|
+
/**
|
|
15731
|
+
* Drop-in replacement for Angular's `effect()` that is safe to use across
|
|
15732
|
+
* Angular 18, 19, 20, and 21.
|
|
15733
|
+
*
|
|
15734
|
+
* Always passes `allowSignalWrites: true` so signal writes inside the effect
|
|
15735
|
+
* body work on Angular 18/19 without requiring each call site to remember
|
|
15736
|
+
* the flag. On Angular 21+ the flag is a no-op.
|
|
15737
|
+
*
|
|
15738
|
+
* @example
|
|
15739
|
+
* // Instead of:
|
|
15740
|
+
* effect(() => { this.someSignal.set(value); }, { injector: this.injector });
|
|
15741
|
+
*
|
|
15742
|
+
* // Use:
|
|
15743
|
+
* safeEffect(() => { this.someSignal.set(value); }, { injector: this.injector });
|
|
15744
|
+
*
|
|
15745
|
+
* @param effectFn - The reactive effect function to run
|
|
15746
|
+
* @param options - Optional injector and manualCleanup settings
|
|
15747
|
+
* @returns EffectRef that can be used to destroy the effect manually
|
|
15748
|
+
*/
|
|
15749
|
+
declare function safeEffect(effectFn: () => void, options?: SafeEffectOptions): EffectRef;
|
|
15750
|
+
|
|
15751
|
+
export { AuxiliaryButtonAlignment, BadgeCountPipe, ButtonAction, COMETCHAT_GLOBAL_CONFIG, CalendarDatePipe, CallAnnouncerService, CallButtonsService, CallLogsService, CallWorkflow, CardJsonPipe, CategoryUnreadCountPipe, ChatStateService, CometChatAIAssistantChat, CometChatAIAssistantChatHistory, CometChatAIAssistantMessageBubble, CometChatAIAssistantTools, CometChatAIStreamingService, CometChatActionBubbleComponent, CometChatActionSheetComponent, CometChatActions, CometChatActionsIcon, CometChatActionsView, CometChatAudioBubbleComponent, CometChatAvatarComponent, CometChatButtonComponent, CometChatCallBubbleComponent, CometChatCallButtonsComponent, CometChatCallEvents, CometChatCallLogsComponent, CometChatCardBubbleComponent, CometChatChangeScopeComponent, CometChatCheckboxComponent, CometChatCollaborativeDocumentBubbleComponent, CometChatCollaborativeWhiteboardBubbleComponent, CometChatConfirmDialogComponent, CometChatContextMenuComponent, CometChatConversationEvents, CometChatConversationItemComponent, CometChatConversationStarterComponent, CometChatConversationSummaryComponent, CometChatConversationsComponent, CometChatCreatePollComponent, CometChatDateComponent, CometChatDeleteBubbleComponent, CometChatDropDownComponent, CometChatEmojiFormatter, CometChatEmojiKeyboardComponent, CometChatErrorBoundaryComponent, CometChatFileBubbleComponent, CometChatFlagMessageDialogComponent, CometChatFullScreenViewerComponent, CometChatGroupEvents, CometChatGroupItemComponent, CometChatGroupMemberItemComponent, CometChatGroupMembersComponent, CometChatGroupsComponent, CometChatImageBubbleComponent, CometChatIncomingCallComponent, CometChatLinkDialogComponent, CometChatLinkPopoverComponent, CometChatListItemComponent, CometChatLocalize, CometChatLogger, CometChatMarkdownFormatter, CometChatMarkdownParser, CometChatMarkdownRenderer, CometChatMediaRecorderComponent, CometChatMentionsFormatter, CometChatMessageBubbleComponent, CometChatMessageComposerAction, CometChatMessageComposerComponent, CometChatMessageEvents, CometChatMessageHeaderComponent, CometChatMessageInformationComponent, CometChatMessageListComponent, CometChatMessagePreviewComponent, CometChatNotificationBadgeComponent, CometChatNotificationFeedComponent, CometChatOngoingCallComponent, CometChatOption, CometChatOutgoingCallComponent, CometChatPaginatedListComponent, CometChatPollBubbleComponent, CometChatPopoverComponent, CometChatRadioButtonComponent, CometChatReactionInfoComponent, CometChatReactionListComponent, CometChatReactionsComponent, CometChatSearchBarComponent, CometChatSearchComponent, CometChatSearchConversationsListComponent, CometChatSearchFilter, CometChatSearchMessagesListComponent, CometChatSearchScope, CometChatSmartRepliesComponent, CometChatStickerBubbleComponent, CometChatStickersKeyboardComponent, CometChatStreamMessageBubble, CometChatTemplatesService, CometChatTextBubbleComponent, CometChatTextFormatter, CometChatThreadHeaderComponent, CometChatThreadViewComponent, CometChatToastComponent, CometChatToastService, CometChatToolCallArgumentBubble, CometChatToolCallResultBubble, CometChatTypingIndicatorComponent, CometChatUIEvents, CometChatUIKit, CometChatUIKitCalls, CometChatUIKitConstants, CometChatUrlFormatter, CometChatUserEvents, CometChatUserItemComponent, CometChatUsersComponent, CometChatVideoBubbleComponent, ConnectionStateService, ConversationDatePipe, ConversationSubtitleService, ConversationsService, DEFAULT_MESSAGE_CATEGORIES, DEFAULT_MESSAGE_TYPES, DateTimePickerMode, DialogFocusManager, DocumentIconAlignment, ElementType, EnterKeyBehavior, FocusTrapService, FormatterConfigService, GridNavigationService, GroupMembersService, HTTPSRequestMethods, HtmlSanitizerService, IconButtonAlignment, IncomingCallService, LabelAlignment, ListNavigationService, ListSelectionManager, LiveAnnouncerService, LogLevel, MENTIONS_LIMIT, MediaControlsService, MentionType, MentionsNavigationService, MentionsTargetElement, MentionsVisibility, MessageBubbleAlignment, MessageBubbleConfigService, MessageComposerService, MessageDatePipe, MessageHeaderService, MessageListAlignment, MessageListService, MessageStatus, MessageUtilsService, MouseEventSource, NotificationFeedViewModel, NotificationUnreadCountService, OngoingCallService, OutgoingCallService, PanelAlignment, Placement, PreviewMessageMode, Receipts, RecordingType, RichTextEditorService, SearchConversationsService, SearchMessagesService, SelectionMode, States, TabAlignment, TabsVisibility, ThemeService, TimestampAlignment, TitleAlignment, ToastType, TranslatePipe, TypeAheadService, UIKitSettings, UIKitSettingsBuilder, UserMemberListType, VisibilityTracker, applyFormatters, closeCurrentMediaPlayer, currentAudioPlayer, formatText, getAvailableFilters, getLocalizedString, getMaxVisibleEmojis, getVisibleFilters, groupByTimestamp, hasValidMessageSearchCriteria, hasValidSearchCriteria, isConversationFilter, isMessageFilter, parseInline, safeEffect, shouldRenderConversations, shouldRenderMessages, toggleFilter };
|
|
15752
|
+
export type { AIAssistantContentBlock, AriaLivePoliteness, AttachmentFile, AudioAttachment, AudioState, BubblePart, BubblePartMap, CalendarObject, CallBubbleStatus, CallButtonClickEvent, CallLogTemplates, CallStatus, CallType, CardAction, CardBubbleAction, CollaborativePayload, CometChatEmoji, CometChatEmojiCategory, CometChatNotificationFeedStyle, CometChatUiKitWindow, ComponentState, ComposerId, ContextMenuItem, ConversationSlotContext, ConversationSlots, ConversationTemplates, DialogConfig, ErrorCallback, FeedEngagementType, FetchResult, FileAttachment, FocusTrapConfig, FormatterPipelineResult, FullscreenViewerMediaType, GlobalConfig, GridNavigationConfig, GridPosition, GroupMemberTemplates, GroupMembersErrorCallback, GroupTemplates, IAIStreamEvent, IActiveChatChanged, ICardActionEvent, IDialog, IGroupLeft, IGroupMemberAdded, IGroupMemberJoined, IGroupMemberKickedBanned, IGroupMemberScopeChanged, IGroupMemberUnBanned, IMentionsCountWarning, IMessages, IModal, IMouseEvent, IOpenChat, IOwnershipChanged, IPanel, IShowOngoingCall, IncomingCallTemplateContext, InitResult, LinkData, LinkPopoverData, LinkPreviewData, ListNavigationConfig, ListSelectionState, ListTemplates, LocalizationSettings, LogoutResult, MarkdownNode, MarkdownNodeType, MediaAttachment, MediaControlsConfig, MediaControlsResult, MediaLayoutType, MentionData, MentionSuggestion, MentionsNavigationCallbacks, MessageListConfig, MessageListItem, MessageListTemplates, MessagePreviewMode, MessageTypeKey, MessageUpdatePayload, NotificationBadgeStyle, NotificationCategory, NotificationFeedItem, NotificationFeedState, NotificationUnreadCountOptions, OutgoingCallTemplateContext, PollBubbleOption, PollCreatePayload, PollData, PollOption, PollOptionResult, PollResults, PollVoteErrorEvent, PollVoteEvent, RelativeTimeConfig, RichTextEditorConfig, RichTextFormatState, RichTextMetadata, SafeEffectOptions, ScreenState, SearchConversationClickEvent, SearchMessageClickEvent, SearchTemplates, SelectionState, SharedListTemplates, StickerClickEvent, StickerItem, StickerSet, StreamedCard, SubtitleFormatter, TextFormatterContext, TimestampGroup, ToastConfig, TypeAheadConfig, UserReceiptInfo, UserTemplates, VoterInfo };
|