@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.
@@ -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: "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 providedIn: 'root'
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.InteractiveMessage>;
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.InteractiveMessage): void;
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.InteractiveMessage) => void, destroyRef?: DestroyRef): Subscription;
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 absolutely relative to the parent composer element.
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, i.e. clientX) */
7433
+ /** X coordinate (viewport-relative center of the link element) */
7247
7434
  x: number;
7248
- /** Y coordinate (viewport-relative, i.e. clientY) */
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
- * Position the popover centered horizontally, just above the composer.
7279
- * Uses estimated popover height for initial placement before layout.
7280
- * In Storybook docs mode, positions relative to the nearest
7281
- * [data-cometchat-container] ancestor instead of the full viewport.
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
- * After layout, refine position using actual popover dimensions.
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<"error" | "loading" | "loaded">;
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
- /** Current color scheme, updated via window.matchMedia listener. */
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
- export { AuxiliaryButtonAlignment, ButtonAction, COMETCHAT_GLOBAL_CONFIG, CalendarDatePipe, CallAnnouncerService, CallButtonsService, CallLogsService, CallWorkflow, ChatStateService, CometChatAIAssistantChat, CometChatAIAssistantChatHistory, CometChatAIAssistantMessageBubble, CometChatAIAssistantTools, CometChatAIStreamingService, CometChatActionBubbleComponent, CometChatActionSheetComponent, CometChatActions, CometChatActionsIcon, CometChatActionsView, CometChatAudioBubbleComponent, CometChatAvatarComponent, CometChatButtonComponent, CometChatCallBubbleComponent, CometChatCallButtonsComponent, CometChatCallEvents, CometChatCallLogsComponent, 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, 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, ConversationDatePipe, ConversationSubtitleService, ConversationsService, 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, OngoingCallService, OutgoingCallService, PanelAlignment, Placement, PreviewMessageMode, Receipts, RecordingType, RichTextEditorService, SearchConversationsService, SearchMessagesService, SelectionMode, States, TabAlignment, TabsVisibility, ThemeService, TimestampAlignment, TitleAlignment, ToastType, TranslatePipe, TypeAheadService, UIKitSettings, UIKitSettingsBuilder, UserMemberListType, applyFormatters, closeCurrentMediaPlayer, currentAudioPlayer, formatText, getAvailableFilters, getLocalizedString, getMaxVisibleEmojis, getVisibleFilters, hasValidMessageSearchCriteria, hasValidSearchCriteria, isConversationFilter, isMessageFilter, shouldRenderConversations, shouldRenderMessages, toggleFilter };
14911
- export type { AriaLivePoliteness, AttachmentFile, AudioAttachment, AudioState, BubblePart, BubblePartMap, CalendarObject, CallBubbleStatus, CallButtonClickEvent, CallLogTemplates, CallStatus, CallType, CollaborativePayload, CometChatEmoji, CometChatEmojiCategory, CometChatUiKitWindow, ComponentState, ComposerId, ContextMenuItem, ConversationSlotContext, ConversationSlots, ConversationTemplates, DialogConfig, ErrorCallback, FetchResult, FileAttachment, FocusTrapConfig, FormatterPipelineResult, FullscreenViewerMediaType, GlobalConfig, GridNavigationConfig, GridPosition, GroupMemberTemplates, GroupMembersErrorCallback, GroupTemplates, IAIStreamEvent, IActiveChatChanged, 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, OutgoingCallTemplateContext, PollBubbleOption, PollCreatePayload, PollData, PollOption, PollOptionResult, PollResults, PollVoteErrorEvent, PollVoteEvent, RelativeTimeConfig, RichTextEditorConfig, RichTextFormatState, RichTextMetadata, SearchConversationClickEvent, SearchMessageClickEvent, SearchTemplates, SelectionState, SharedListTemplates, StickerClickEvent, StickerItem, StickerSet, SubtitleFormatter, TextFormatterContext, ToastConfig, TypeAheadConfig, UserReceiptInfo, UserTemplates, VoterInfo };
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 };