@cometchat/chat-uikit-angular 5.0.2 → 5.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/cometchat-chat-uikit-angular.mjs +5140 -1535
- package/fesm2022/cometchat-chat-uikit-angular.mjs.map +1 -1
- package/package.json +3 -2
- package/src/lib/assets/notifications_empty_state.svg +8 -0
- package/styles/rich-text-styles.css +80 -16
- package/types/cometchat-chat-uikit-angular.d.ts +883 -30
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
import { Observable, Subject, Subscription } from 'rxjs';
|
|
2
|
-
import * as _angular_core from '@angular/core';
|
|
3
|
-
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';
|
|
1
|
+
import { Observable, Subject, BehaviorSubject, Subscription } from 'rxjs';
|
|
4
2
|
import * as _cometchat_chat_sdk_javascript from '@cometchat/chat-sdk-javascript';
|
|
5
|
-
import { FlagReason } from '@cometchat/chat-sdk-javascript';
|
|
3
|
+
import { CometChatSettings, FlagReason } from '@cometchat/chat-sdk-javascript';
|
|
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, 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
|
/**
|
|
@@ -646,6 +647,18 @@ declare class CometChatUIKit {
|
|
|
646
647
|
getLoggedInUser(): CometChat.User | null;
|
|
647
648
|
static init(uiKitSettings: UIKitSettings | null): Promise<InitResult> | undefined;
|
|
648
649
|
init(uiKitSettings: UIKitSettings | null): Promise<InitResult> | undefined;
|
|
650
|
+
/**
|
|
651
|
+
* File-based init for AI agent skills.
|
|
652
|
+
* Accepts a parsed `cometchat-settings.json` object and delegates to the
|
|
653
|
+
* Chat SDK's file-based init, which internally sets
|
|
654
|
+
* `integrationSource = "ai-agent"` for telemetry.
|
|
655
|
+
*
|
|
656
|
+
* This method is independent of `init()` — it does NOT call `init()`.
|
|
657
|
+
* It builds UIKitSettings internally so login/createUser/updateUser keep working.
|
|
658
|
+
*
|
|
659
|
+
* @internal — excluded from public API docs
|
|
660
|
+
*/
|
|
661
|
+
static initFromSettings(settings: CometChatSettings): Promise<InitResult>;
|
|
649
662
|
static isInitialized(): boolean;
|
|
650
663
|
isInitialized(): boolean;
|
|
651
664
|
static setLogLevel(level: LogLevel): void;
|
|
@@ -685,6 +698,7 @@ declare class CometChatUIKitConstants {
|
|
|
685
698
|
call: string;
|
|
686
699
|
interactive: string;
|
|
687
700
|
agentic: _cometchat_chat_sdk_javascript.MessageCategory.AGENTIC;
|
|
701
|
+
card: "card";
|
|
688
702
|
}>;
|
|
689
703
|
static moderationStatus: Readonly<{
|
|
690
704
|
pending: _cometchat_chat_sdk_javascript.ModerationStatus.PENDING;
|
|
@@ -709,6 +723,21 @@ declare class CometChatUIKitConstants {
|
|
|
709
723
|
toolArguments: string;
|
|
710
724
|
toolResults: string;
|
|
711
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
|
+
}>;
|
|
712
741
|
static groupMemberAction: Readonly<{
|
|
713
742
|
ROLE: "role";
|
|
714
743
|
BLOCK: "block";
|
|
@@ -737,7 +766,7 @@ declare class CometChatUIKitConstants {
|
|
|
737
766
|
replyInThread: "replyInThread";
|
|
738
767
|
translateMessage: "translate";
|
|
739
768
|
reactToMessage: "react";
|
|
740
|
-
messageInformation: "
|
|
769
|
+
messageInformation: "info";
|
|
741
770
|
flagMessage: "flagMessage";
|
|
742
771
|
copyMessage: "copy";
|
|
743
772
|
shareMessage: "share";
|
|
@@ -2426,6 +2455,55 @@ interface MessageUpdatePayload {
|
|
|
2426
2455
|
|
|
2427
2456
|
declare var CometChatUIKitCalls: any;
|
|
2428
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
|
+
|
|
2429
2507
|
/**
|
|
2430
2508
|
* ChatStateService
|
|
2431
2509
|
*
|
|
@@ -2537,6 +2615,7 @@ declare class ChatStateService {
|
|
|
2537
2615
|
declare class ConversationsService {
|
|
2538
2616
|
private destroyRef;
|
|
2539
2617
|
private ngZone;
|
|
2618
|
+
private connectionState;
|
|
2540
2619
|
private conversationsSignal;
|
|
2541
2620
|
private loadingStateSignal;
|
|
2542
2621
|
private errorStateSignal;
|
|
@@ -2556,6 +2635,8 @@ declare class ConversationsService {
|
|
|
2556
2635
|
readonly hasConversations: _angular_core.Signal<boolean>;
|
|
2557
2636
|
readonly isLoading: _angular_core.Signal<boolean>;
|
|
2558
2637
|
readonly hasError: _angular_core.Signal<boolean>;
|
|
2638
|
+
private hasMoreSignal;
|
|
2639
|
+
readonly hasMore: _angular_core.Signal<boolean>;
|
|
2559
2640
|
private conversationsRequest?;
|
|
2560
2641
|
private requestBuilder?;
|
|
2561
2642
|
private messageListenerId;
|
|
@@ -2563,6 +2644,8 @@ declare class ConversationsService {
|
|
|
2563
2644
|
private groupListenerId;
|
|
2564
2645
|
private callListenerId;
|
|
2565
2646
|
private retryAttempts;
|
|
2647
|
+
/** Guard: only re-fetch on reconnect after the first fetch has completed. */
|
|
2648
|
+
private initialFetchDone;
|
|
2566
2649
|
private ccMessageSentSubscription;
|
|
2567
2650
|
private ccMessageDeletedSubscription;
|
|
2568
2651
|
private callEventSubscriptions;
|
|
@@ -2573,7 +2656,7 @@ declare class ConversationsService {
|
|
|
2573
2656
|
setConversationsRequestBuilder(builder: CometChat.ConversationsRequestBuilder): void;
|
|
2574
2657
|
setActiveConversation(conversation: CometChat.Conversation | null): void;
|
|
2575
2658
|
getConversations(): CometChat.Conversation[];
|
|
2576
|
-
fetchConversations(builder?: CometChat.ConversationsRequestBuilder): Promise<void>;
|
|
2659
|
+
fetchConversations(builder?: CometChat.ConversationsRequestBuilder, silent?: boolean): Promise<void>;
|
|
2577
2660
|
fetchNextConversations(): Promise<boolean>;
|
|
2578
2661
|
deleteConversation(conversationWith: string, conversationType: string): Promise<void>;
|
|
2579
2662
|
searchConversations(searchText: string): void;
|
|
@@ -3062,7 +3145,7 @@ interface MentionSuggestion$1 {
|
|
|
3062
3145
|
* Handles sending text/media messages, editing, typing indicators,
|
|
3063
3146
|
* file upload progress, and mention suggestions.
|
|
3064
3147
|
*
|
|
3065
|
-
* @Injectable
|
|
3148
|
+
* @Injectable — provided at component level via CometChatMessageComposerComponent providers
|
|
3066
3149
|
* @see Requirements 29.1–29.10
|
|
3067
3150
|
*/
|
|
3068
3151
|
declare class MessageComposerService {
|
|
@@ -3449,6 +3532,7 @@ declare class RichTextEditor {
|
|
|
3449
3532
|
private ariaLiveRegion;
|
|
3450
3533
|
private _pendingLinkClick;
|
|
3451
3534
|
private lastSavedRange;
|
|
3535
|
+
private autofocusTimer;
|
|
3452
3536
|
private currentFormatState;
|
|
3453
3537
|
constructor(config: RichTextEditorConfig, element?: HTMLElement);
|
|
3454
3538
|
private createAriaLiveRegion;
|
|
@@ -3830,6 +3914,21 @@ declare class MessageListService {
|
|
|
3830
3914
|
flagMessage(message: CometChat.BaseMessage, reasonId: string, remark?: string): Promise<void>;
|
|
3831
3915
|
}
|
|
3832
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
|
+
|
|
3833
3932
|
/**
|
|
3834
3933
|
* Types for MessageBubbleConfigService.
|
|
3835
3934
|
*/
|
|
@@ -4645,7 +4744,12 @@ declare class GroupMembersService {
|
|
|
4645
4744
|
private errorCallback;
|
|
4646
4745
|
private userListenerId;
|
|
4647
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;
|
|
4648
4751
|
private static readonly DEFAULT_LIMIT;
|
|
4752
|
+
constructor();
|
|
4649
4753
|
setErrorCallback(callback: GroupMembersErrorCallback | null): void;
|
|
4650
4754
|
/**
|
|
4651
4755
|
* Initialize the service with a group and optional custom request builder.
|
|
@@ -4675,6 +4779,12 @@ declare class GroupMembersService {
|
|
|
4675
4779
|
attachListeners(groupGuid: string, hideUserStatus: boolean): void;
|
|
4676
4780
|
detachListeners(): void;
|
|
4677
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;
|
|
4678
4788
|
private handleError;
|
|
4679
4789
|
private toCometchatException;
|
|
4680
4790
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<GroupMembersService, never>;
|
|
@@ -6384,6 +6494,62 @@ declare class SearchConversationsService {
|
|
|
6384
6494
|
static ɵprov: _angular_core.ɵɵInjectableDeclaration<SearchConversationsService>;
|
|
6385
6495
|
}
|
|
6386
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
|
+
|
|
6387
6553
|
/**
|
|
6388
6554
|
* Conversation event subjects for handling actions related to conversations (e.g., conversation deletion)
|
|
6389
6555
|
*/
|
|
@@ -6419,6 +6585,27 @@ interface IMessages {
|
|
|
6419
6585
|
parentMessageId?: number | null;
|
|
6420
6586
|
}
|
|
6421
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
|
+
}
|
|
6422
6609
|
/**
|
|
6423
6610
|
* Message event subjects for handling actions related to messages (e.g., message sent, edited, deleted, etc.)
|
|
6424
6611
|
*/
|
|
@@ -6434,6 +6621,12 @@ declare class CometChatMessageEvents {
|
|
|
6434
6621
|
*/
|
|
6435
6622
|
static ccMessageRead: Subject<CometChat.BaseMessage>;
|
|
6436
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>;
|
|
6437
6630
|
static onTextMessageReceived: Subject<CometChat.TextMessage>;
|
|
6438
6631
|
static onMessageModerated: Subject<CometChat.BaseMessage>;
|
|
6439
6632
|
static onMediaMessageReceived: Subject<CometChat.MediaMessage>;
|
|
@@ -6450,7 +6643,7 @@ declare class CometChatMessageEvents {
|
|
|
6450
6643
|
static onMessageReactionRemoved: Subject<CometChat.ReactionEvent>;
|
|
6451
6644
|
static onCustomInteractiveMessageReceived: Subject<CometChat.InteractiveMessage>;
|
|
6452
6645
|
static onFormMessageReceived: Subject<CometChat.InteractiveMessage>;
|
|
6453
|
-
static onCardMessageReceived: Subject<CometChat.
|
|
6646
|
+
static onCardMessageReceived: Subject<CometChat.CardMessage>;
|
|
6454
6647
|
static onSchedulerMessageReceived: Subject<CometChat.InteractiveMessage>;
|
|
6455
6648
|
static onAIAssistantMessageReceived: Subject<CometChat.AIAssistantMessage>;
|
|
6456
6649
|
static onAIToolResultReceived: Subject<CometChat.AIToolResultMessage>;
|
|
@@ -6479,7 +6672,7 @@ declare class CometChatMessageEvents {
|
|
|
6479
6672
|
static publishMessageReactionRemoved(event: CometChat.ReactionEvent): void;
|
|
6480
6673
|
static publishCustomInteractiveMessageReceived(message: CometChat.InteractiveMessage): void;
|
|
6481
6674
|
static publishFormMessageReceived(message: CometChat.InteractiveMessage): void;
|
|
6482
|
-
static publishCardMessageReceived(message: CometChat.
|
|
6675
|
+
static publishCardMessageReceived(message: CometChat.CardMessage): void;
|
|
6483
6676
|
static publishSchedulerMessageReceived(message: CometChat.InteractiveMessage): void;
|
|
6484
6677
|
static publishAIAssistantMessageReceived(message: CometChat.AIAssistantMessage): void;
|
|
6485
6678
|
static publishAIToolResultReceived(message: CometChat.AIToolResultMessage): void;
|
|
@@ -6506,7 +6699,9 @@ declare class CometChatMessageEvents {
|
|
|
6506
6699
|
static subscribeOnMessageReactionRemoved(cb: (data: CometChat.ReactionEvent) => void, destroyRef?: DestroyRef): Subscription;
|
|
6507
6700
|
static subscribeOnCustomInteractiveMessageReceived(cb: (data: CometChat.InteractiveMessage) => void, destroyRef?: DestroyRef): Subscription;
|
|
6508
6701
|
static subscribeOnFormMessageReceived(cb: (data: CometChat.InteractiveMessage) => void, destroyRef?: DestroyRef): Subscription;
|
|
6509
|
-
static subscribeOnCardMessageReceived(cb: (data: CometChat.
|
|
6702
|
+
static subscribeOnCardMessageReceived(cb: (data: CometChat.CardMessage) => void, destroyRef?: DestroyRef): Subscription;
|
|
6703
|
+
/** Subscribes to card-action clicks; auto-cleans up when destroyRef is given. */
|
|
6704
|
+
static subscribeOnCardActionClicked(cb: (data: ICardActionEvent) => void, destroyRef?: DestroyRef): Subscription;
|
|
6510
6705
|
static subscribeOnSchedulerMessageReceived(cb: (data: CometChat.InteractiveMessage) => void, destroyRef?: DestroyRef): Subscription;
|
|
6511
6706
|
static subscribeOnAIAssistantMessageReceived(cb: (data: CometChat.AIAssistantMessage) => void, destroyRef?: DestroyRef): Subscription;
|
|
6512
6707
|
static subscribeOnAIToolResultReceived(cb: (data: CometChat.AIToolResultMessage) => void, destroyRef?: DestroyRef): Subscription;
|
|
@@ -6892,6 +7087,10 @@ declare class CometChatAvatarComponent implements OnChanges {
|
|
|
6892
7087
|
/**
|
|
6893
7088
|
* Generates an accessible label for screen readers.
|
|
6894
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.
|
|
6895
7094
|
*/
|
|
6896
7095
|
get ariaLabel(): string;
|
|
6897
7096
|
/**
|
|
@@ -7216,7 +7415,7 @@ interface LinkPopoverData {
|
|
|
7216
7415
|
*
|
|
7217
7416
|
* A small popover that appears when clicking on a link in the editor.
|
|
7218
7417
|
* Shows "Edit" and "Remove" buttons for quick link actions.
|
|
7219
|
-
* Positioned
|
|
7418
|
+
* Positioned above the clicked link using viewport coordinates.
|
|
7220
7419
|
*
|
|
7221
7420
|
* @component
|
|
7222
7421
|
*/
|
|
@@ -7231,9 +7430,9 @@ declare class CometChatLinkPopoverComponent implements OnInit, AfterViewInit, On
|
|
|
7231
7430
|
url: string;
|
|
7232
7431
|
/** The link text */
|
|
7233
7432
|
text: string;
|
|
7234
|
-
/** X coordinate (viewport-relative
|
|
7433
|
+
/** X coordinate (viewport-relative center of the link element) */
|
|
7235
7434
|
x: number;
|
|
7236
|
-
/** Y coordinate (viewport-relative
|
|
7435
|
+
/** Y coordinate (viewport-relative top of the link element) */
|
|
7237
7436
|
y: number;
|
|
7238
7437
|
/** Emitted when the Edit button is clicked */
|
|
7239
7438
|
editClick: EventEmitter$1<LinkPopoverData>;
|
|
@@ -7259,18 +7458,25 @@ declare class CometChatLinkPopoverComponent implements OnInit, AfterViewInit, On
|
|
|
7259
7458
|
ngAfterViewInit(): void;
|
|
7260
7459
|
ngOnDestroy(): void;
|
|
7261
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;
|
|
7262
7466
|
private focusNextItem;
|
|
7263
7467
|
private focusPreviousItem;
|
|
7264
7468
|
private restoreFocus;
|
|
7265
7469
|
/**
|
|
7266
|
-
*
|
|
7267
|
-
* Uses estimated
|
|
7268
|
-
|
|
7269
|
-
|
|
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.
|
|
7270
7476
|
*/
|
|
7271
7477
|
private positionAboveComposer;
|
|
7272
7478
|
/**
|
|
7273
|
-
*
|
|
7479
|
+
* Refine position after layout using actual popover dimensions.
|
|
7274
7480
|
*/
|
|
7275
7481
|
private refinePosition;
|
|
7276
7482
|
/**
|
|
@@ -7334,6 +7540,7 @@ declare class CometChatContextMenuComponent implements OnInit, OnDestroy, AfterV
|
|
|
7334
7540
|
private boundHandleResize;
|
|
7335
7541
|
handleKeydown(event: KeyboardEvent): void;
|
|
7336
7542
|
private focusItemAtIndex;
|
|
7543
|
+
private originalSubMenuParent;
|
|
7337
7544
|
private closeSubMenu;
|
|
7338
7545
|
get topMenu(): ContextMenuItem[];
|
|
7339
7546
|
get subMenu(): ContextMenuItem[];
|
|
@@ -7972,6 +8179,7 @@ declare class CometChatConversationsComponent implements OnInit, OnDestroy {
|
|
|
7972
8179
|
handleDeleteCancel(): void;
|
|
7973
8180
|
handleDialogKeydown(event: KeyboardEvent): void;
|
|
7974
8181
|
private setupSearchDebouncing;
|
|
8182
|
+
onSearch(value: string): void;
|
|
7975
8183
|
handleSearchBarClick(): void;
|
|
7976
8184
|
handleKeydown(event: KeyboardEvent): void;
|
|
7977
8185
|
private handleSelectionKeyboard;
|
|
@@ -8500,6 +8708,7 @@ declare class CometChatStickersKeyboardComponent implements OnInit, OnDestroy {
|
|
|
8500
8708
|
setComponentState(state: ComponentState): void;
|
|
8501
8709
|
/**
|
|
8502
8710
|
* Fetches stickers from the CometChat stickers extension.
|
|
8711
|
+
* Retries once if the first attempt fails (handles SDK not ready after page refresh).
|
|
8503
8712
|
* @see Requirements 8.4, 8.14, 8.15
|
|
8504
8713
|
*/
|
|
8505
8714
|
fetchStickers(): Promise<void>;
|
|
@@ -8571,6 +8780,14 @@ declare class CometChatStickersKeyboardComponent implements OnInit, OnDestroy {
|
|
|
8571
8780
|
getRowIndex(index: number): number;
|
|
8572
8781
|
/** Gets the 1-based column index for ARIA grid navigation */
|
|
8573
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;
|
|
8574
8791
|
ngOnDestroy(): void;
|
|
8575
8792
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<CometChatStickersKeyboardComponent, never>;
|
|
8576
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>;
|
|
@@ -8798,10 +9015,15 @@ declare class CometChatMessageComposerComponent implements OnInit, OnDestroy, On
|
|
|
8798
9015
|
maxHeight: number;
|
|
8799
9016
|
enterKeyBehavior: EnterKeyBehavior;
|
|
8800
9017
|
attachmentOptions?: CometChatMessageComposerAction[];
|
|
9018
|
+
/** @note kept for future attachment preview/queue support; active flow sends selected files directly. */
|
|
8801
9019
|
maxAttachments: number;
|
|
9020
|
+
/** @note kept for future attachment preview/queue support; active flow sends selected files directly. */
|
|
8802
9021
|
allowedFileTypes?: string[];
|
|
9022
|
+
/** @note kept for future attachment preview/queue support; active flow sends selected files directly. */
|
|
8803
9023
|
maxFileSize?: number;
|
|
9024
|
+
/** @note kept for future attachment preview/queue support; active flow sends selected files directly. */
|
|
8804
9025
|
showAttachmentPreview: boolean;
|
|
9026
|
+
/** @note kept for future attachment preview/queue support; active flow sends selected files directly. */
|
|
8805
9027
|
enableDragDrop: boolean;
|
|
8806
9028
|
hideAttachmentButton: boolean;
|
|
8807
9029
|
hideImageAttachmentOption: boolean;
|
|
@@ -8853,7 +9075,9 @@ declare class CometChatMessageComposerComponent implements OnInit, OnDestroy, On
|
|
|
8853
9075
|
sendButtonClick: EventEmitter$1<_cometchat_chat_sdk_javascript.BaseMessage>;
|
|
8854
9076
|
error: EventEmitter$1<_cometchat_chat_sdk_javascript.CometChatException>;
|
|
8855
9077
|
closePreview: EventEmitter$1<void>;
|
|
9078
|
+
/** @note currently retained for future use; the active file flow sends selected files directly. */
|
|
8856
9079
|
attachmentAdded: EventEmitter$1<File>;
|
|
9080
|
+
/** @note currently retained for future use; the active file flow sends selected files directly. */
|
|
8857
9081
|
attachmentRemoved: EventEmitter$1<File>;
|
|
8858
9082
|
mentionSelected: EventEmitter$1<_cometchat_chat_sdk_javascript.User | _cometchat_chat_sdk_javascript.GroupMember>;
|
|
8859
9083
|
textInputRef?: ElementRef<HTMLTextAreaElement>;
|
|
@@ -9391,8 +9615,13 @@ type MessagePreviewMode = 'reply' | 'edit';
|
|
|
9391
9615
|
* </cometchat-message-preview>
|
|
9392
9616
|
* ```
|
|
9393
9617
|
*/
|
|
9394
|
-
declare class CometChatMessagePreviewComponent implements OnInit, AfterViewInit, OnDestroy {
|
|
9618
|
+
declare class CometChatMessagePreviewComponent implements OnInit, OnChanges, AfterViewInit, OnDestroy {
|
|
9395
9619
|
private globalConfig;
|
|
9620
|
+
private readonly htmlSanitizer;
|
|
9621
|
+
private readonly formatterConfig;
|
|
9622
|
+
private readonly cdr;
|
|
9623
|
+
_cachedPreviewHasHtml: boolean;
|
|
9624
|
+
_cachedFormattedPreview: string;
|
|
9396
9625
|
private textFormattersExplicitlySet;
|
|
9397
9626
|
private _textFormatters;
|
|
9398
9627
|
/** Title to display in preview - accepts template */
|
|
@@ -9479,6 +9708,24 @@ declare class CometChatMessagePreviewComponent implements OnInit, AfterViewInit,
|
|
|
9479
9708
|
* @see Requirements 7.1, 7.3
|
|
9480
9709
|
*/
|
|
9481
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;
|
|
9482
9729
|
/**
|
|
9483
9730
|
* Returns the CSS class for the media type icon.
|
|
9484
9731
|
* Used to display appropriate icons for media messages.
|
|
@@ -9500,6 +9747,7 @@ declare class CometChatMessagePreviewComponent implements OnInit, AfterViewInit,
|
|
|
9500
9747
|
*/
|
|
9501
9748
|
get containerClass(): string;
|
|
9502
9749
|
ngOnInit(): void;
|
|
9750
|
+
ngOnChanges(changes: SimpleChanges): void;
|
|
9503
9751
|
ngAfterViewInit(): void;
|
|
9504
9752
|
ngOnDestroy(): void;
|
|
9505
9753
|
private setupResizeObserver;
|
|
@@ -9604,6 +9852,40 @@ declare class CometChatTextBubbleComponent implements OnInit, OnChanges, AfterVi
|
|
|
9604
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>;
|
|
9605
9853
|
}
|
|
9606
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
|
+
|
|
9607
9889
|
/**
|
|
9608
9890
|
* CometChatImageBubbleComponent renders image messages with single/multi-image layouts,
|
|
9609
9891
|
* overflow handling, fullscreen gallery, and keyboard accessibility.
|
|
@@ -10017,6 +10299,7 @@ declare class CometChatUsersComponent implements OnInit, OnDestroy {
|
|
|
10017
10299
|
private isFirstFetch;
|
|
10018
10300
|
private initialLoadComplete;
|
|
10019
10301
|
private userListenerId;
|
|
10302
|
+
constructor();
|
|
10020
10303
|
ngOnInit(): void;
|
|
10021
10304
|
ngOnDestroy(): void;
|
|
10022
10305
|
private initializeUsersManager;
|
|
@@ -10024,7 +10307,6 @@ declare class CometChatUsersComponent implements OnInit, OnDestroy {
|
|
|
10024
10307
|
private setupUserListener;
|
|
10025
10308
|
private removeUserListener;
|
|
10026
10309
|
private setupUserEventSubscriptions;
|
|
10027
|
-
private setupConnectionListener;
|
|
10028
10310
|
private updateUser;
|
|
10029
10311
|
private refreshUserList;
|
|
10030
10312
|
fetchNextAndAppendUsers(): void;
|
|
@@ -10173,12 +10455,12 @@ declare class CometChatGroupsComponent implements OnInit, OnDestroy {
|
|
|
10173
10455
|
readonly States: typeof States;
|
|
10174
10456
|
private searchSubject$;
|
|
10175
10457
|
private isFirstFetch;
|
|
10458
|
+
constructor();
|
|
10176
10459
|
ngOnInit(): void;
|
|
10177
10460
|
ngOnDestroy(): void;
|
|
10178
10461
|
private initializeGroupsManager;
|
|
10179
10462
|
private setupSearchDebouncing;
|
|
10180
10463
|
private setupGroupListeners;
|
|
10181
|
-
private setupConnectionListener;
|
|
10182
10464
|
private setupGroupEventSubscriptions;
|
|
10183
10465
|
private refreshGroupList;
|
|
10184
10466
|
handleLoadMore(): void;
|
|
@@ -10495,6 +10777,7 @@ declare class CometChatGroupMemberItemComponent {
|
|
|
10495
10777
|
effectiveHideUserStatus: _angular_core.Signal<boolean>;
|
|
10496
10778
|
effectiveDisableDefaultContextMenu: _angular_core.Signal<boolean>;
|
|
10497
10779
|
contextMenuOptions?: CometChatOption[];
|
|
10780
|
+
contextMenuRef?: CometChatContextMenuComponent;
|
|
10498
10781
|
leadingView?: TemplateRef<{
|
|
10499
10782
|
$implicit: CometChat.GroupMember;
|
|
10500
10783
|
}>;
|
|
@@ -10521,7 +10804,7 @@ declare class CometChatGroupMemberItemComponent {
|
|
|
10521
10804
|
get scopeLabel(): string;
|
|
10522
10805
|
get accessibleLabel(): string;
|
|
10523
10806
|
handleMouseDown(event: MouseEvent): void;
|
|
10524
|
-
handleClick(): void;
|
|
10807
|
+
handleClick(event?: MouseEvent): void;
|
|
10525
10808
|
onItemFocus(): void;
|
|
10526
10809
|
onKeyDown(event: KeyboardEvent): void;
|
|
10527
10810
|
handleContextMenuOpen(): void;
|
|
@@ -10651,6 +10934,7 @@ declare class CometChatGroupItemComponent {
|
|
|
10651
10934
|
group: CometChat.Group;
|
|
10652
10935
|
}>;
|
|
10653
10936
|
itemFocus: EventEmitter$1<void>;
|
|
10937
|
+
contextMenuRef?: CometChatContextMenuComponent;
|
|
10654
10938
|
readonly Placement: typeof Placement;
|
|
10655
10939
|
get groupIcon(): string;
|
|
10656
10940
|
get groupName(): string;
|
|
@@ -11770,6 +12054,7 @@ declare class CometChatMessageListComponent implements OnInit, OnDestroy, OnChan
|
|
|
11770
12054
|
group?: CometChat.Group;
|
|
11771
12055
|
parentMessageId?: number;
|
|
11772
12056
|
isAgentChat: boolean;
|
|
12057
|
+
loadLastAgentConversation: boolean;
|
|
11773
12058
|
messagesRequestBuilder?: CometChat.MessagesRequestBuilder;
|
|
11774
12059
|
reactionsRequestBuilder?: CometChat.ReactionsRequestBuilder;
|
|
11775
12060
|
set textFormatters(value: CometChatTextFormatter[]);
|
|
@@ -12033,6 +12318,10 @@ declare class CometChatMessageListComponent implements OnInit, OnDestroy, OnChan
|
|
|
12033
12318
|
private safeEmitUnreadCountChange;
|
|
12034
12319
|
private shouldShowSmartRepliesForMessage;
|
|
12035
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;
|
|
12036
12325
|
onUserTyping(): void;
|
|
12037
12326
|
onMessageSent(): void;
|
|
12038
12327
|
onSmartReplyClick(reply: string): void;
|
|
@@ -12083,8 +12372,9 @@ declare class CometChatMessageListComponent implements OnInit, OnDestroy, OnChan
|
|
|
12083
12372
|
trackByItem(_index: number, item: MessageListItem): string;
|
|
12084
12373
|
trackByMessage(_index: number, message: CometChat.BaseMessage): string | number;
|
|
12085
12374
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<CometChatMessageListComponent, never>;
|
|
12086
|
-
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>;
|
|
12087
12376
|
static ngAcceptInputType_isAgentChat: unknown;
|
|
12377
|
+
static ngAcceptInputType_loadLastAgentConversation: unknown;
|
|
12088
12378
|
static ngAcceptInputType_scrollToBottomOnNewMessages: unknown;
|
|
12089
12379
|
static ngAcceptInputType_disableSoundForMessages: unknown;
|
|
12090
12380
|
static ngAcceptInputType_showScrollbar: unknown;
|
|
@@ -12912,7 +13202,7 @@ declare class CometChatReactionInfoComponent implements OnInit, OnChanges {
|
|
|
12912
13202
|
/**
|
|
12913
13203
|
* Current component state: loading, loaded, or error.
|
|
12914
13204
|
*/
|
|
12915
|
-
state: _angular_core.WritableSignal<"
|
|
13205
|
+
state: _angular_core.WritableSignal<"loading" | "error" | "loaded">;
|
|
12916
13206
|
/**
|
|
12917
13207
|
* Formatted names of users who reacted.
|
|
12918
13208
|
*/
|
|
@@ -14225,7 +14515,7 @@ declare class CometChatConversationSummaryComponent implements OnInit {
|
|
|
14225
14515
|
* 15. Paragraphs
|
|
14226
14516
|
* 16. GFM tables | col | col |
|
|
14227
14517
|
*/
|
|
14228
|
-
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';
|
|
14229
14519
|
interface MarkdownNode {
|
|
14230
14520
|
type: MarkdownNodeType;
|
|
14231
14521
|
content?: string;
|
|
@@ -14237,6 +14527,7 @@ interface MarkdownNode {
|
|
|
14237
14527
|
rows?: string[][];
|
|
14238
14528
|
headers?: string[];
|
|
14239
14529
|
}
|
|
14530
|
+
declare function parseInline(text: string): MarkdownNode[];
|
|
14240
14531
|
declare class CometChatMarkdownParser {
|
|
14241
14532
|
parse(text: string, streaming?: boolean): MarkdownNode[];
|
|
14242
14533
|
}
|
|
@@ -14266,6 +14557,19 @@ declare class CometChatMarkdownRenderer {
|
|
|
14266
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>;
|
|
14267
14558
|
}
|
|
14268
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
|
+
};
|
|
14269
14573
|
/**
|
|
14270
14574
|
* CometChatAIAssistantMessageBubble renders a completed AI assistant message
|
|
14271
14575
|
* with rich markdown formatting via CometChatMarkdownRenderer.
|
|
@@ -14279,7 +14583,14 @@ declare class CometChatAIAssistantMessageBubble {
|
|
|
14279
14583
|
readonly message: _angular_core.InputSignal<_cometchat_chat_sdk_javascript.AIAssistantMessage>;
|
|
14280
14584
|
/** Derived text from the message data — re-computes only when message() changes. */
|
|
14281
14585
|
readonly messageText: _angular_core.Signal<string>;
|
|
14282
|
-
/**
|
|
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. */
|
|
14283
14594
|
readonly colorScheme: _angular_core.WritableSignal<"light" | "dark">;
|
|
14284
14595
|
/** Template ref for the image fullscreen viewer dialog. */
|
|
14285
14596
|
imageViewerTpl: TemplateRef<unknown>;
|
|
@@ -14291,10 +14602,28 @@ declare class CometChatAIAssistantMessageBubble {
|
|
|
14291
14602
|
* Opens the image in a dialog via CometChatUIEvents.ccShowDialog.
|
|
14292
14603
|
*/
|
|
14293
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;
|
|
14294
14611
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<CometChatAIAssistantMessageBubble, never>;
|
|
14295
14612
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<CometChatAIAssistantMessageBubble, "cometchat-ai-assistant-message-bubble", never, { "message": { "alias": "message"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
14296
14613
|
}
|
|
14297
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
|
+
}
|
|
14298
14627
|
/**
|
|
14299
14628
|
* CometChatStreamMessageBubble renders a live-streaming AI response.
|
|
14300
14629
|
*
|
|
@@ -14315,9 +14644,19 @@ declare class CometChatStreamMessageBubble implements OnInit {
|
|
|
14315
14644
|
readonly hasError: _angular_core.WritableSignal<boolean>;
|
|
14316
14645
|
readonly streamedText: _angular_core.WritableSignal<string>;
|
|
14317
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[]>;
|
|
14318
14649
|
readonly hasStreamedContent: _angular_core.Signal<boolean>;
|
|
14319
14650
|
ngOnInit(): void;
|
|
14320
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;
|
|
14321
14660
|
private _registerOfflineListener;
|
|
14322
14661
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<CometChatStreamMessageBubble, never>;
|
|
14323
14662
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<CometChatStreamMessageBubble, "cometchat-stream-message-bubble", never, { "chatId": { "alias": "chatId"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
@@ -14375,6 +14714,7 @@ declare class CometChatToolCallResultBubble {
|
|
|
14375
14714
|
*/
|
|
14376
14715
|
declare class CometChatAIAssistantChatHistory implements OnInit {
|
|
14377
14716
|
private readonly destroyRef;
|
|
14717
|
+
private readonly hostRef;
|
|
14378
14718
|
readonly shimmerList: readonly number[];
|
|
14379
14719
|
readonly user: _angular_core.InputSignal<_cometchat_chat_sdk_javascript.User | undefined>;
|
|
14380
14720
|
readonly group: _angular_core.InputSignal<_cometchat_chat_sdk_javascript.Group | undefined>;
|
|
@@ -14425,6 +14765,11 @@ declare class CometChatAIAssistantChatHistory implements OnInit {
|
|
|
14425
14765
|
/** Emits newChatClick with null. */
|
|
14426
14766
|
onNewChatClick(): void;
|
|
14427
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;
|
|
14428
14773
|
/** Returns tabindex for a given list item index. */
|
|
14429
14774
|
getTabIndex(index: number): number;
|
|
14430
14775
|
formatDate(timestampSeconds: number): string;
|
|
@@ -14443,9 +14788,10 @@ declare class CometChatAIAssistantChatHistory implements OnInit {
|
|
|
14443
14788
|
* Requirements: 10.1–10.18, 11.1, 12.1, 12.3–12.5, 12.7, 13.1, 13.3, 13.4, 13.7,
|
|
14444
14789
|
* 13.10, 13.12, 13.13, 16.1
|
|
14445
14790
|
*/
|
|
14446
|
-
declare class CometChatAIAssistantChat implements OnInit {
|
|
14791
|
+
declare class CometChatAIAssistantChat implements OnInit, AfterViewInit, OnDestroy {
|
|
14447
14792
|
readonly streamingService: CometChatAIStreamingService;
|
|
14448
14793
|
private readonly destroyRef;
|
|
14794
|
+
private readonly bubbleConfigService;
|
|
14449
14795
|
readonly user: _angular_core.InputSignal<_cometchat_chat_sdk_javascript.User>;
|
|
14450
14796
|
readonly streamingSpeed: _angular_core.InputSignal<number>;
|
|
14451
14797
|
readonly aiAssistantTools: _angular_core.InputSignal<CometChatAIAssistantTools | undefined>;
|
|
@@ -14474,9 +14820,21 @@ declare class CometChatAIAssistantChat implements OnInit {
|
|
|
14474
14820
|
readonly sidebarTriggerEl: _angular_core.WritableSignal<HTMLElement | null>;
|
|
14475
14821
|
readonly hasComposerText: _angular_core.WritableSignal<boolean>;
|
|
14476
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>;
|
|
14477
14833
|
sidebarContainerRef?: ElementRef<HTMLElement>;
|
|
14478
14834
|
agentBubbleFooter?: TemplateRef<any>;
|
|
14835
|
+
streamBubbleViewTpl?: TemplateRef<any>;
|
|
14479
14836
|
composerRef?: CometChatMessageComposerComponent;
|
|
14837
|
+
messageListRef?: CometChatMessageListComponent;
|
|
14480
14838
|
/** True while the AI is streaming a response for this user. */
|
|
14481
14839
|
readonly isStreaming: _angular_core.WritableSignal<boolean>;
|
|
14482
14840
|
/** Suggestion pills: prefer explicit input, fall back to user metadata. */
|
|
@@ -14499,6 +14857,8 @@ declare class CometChatAIAssistantChat implements OnInit {
|
|
|
14499
14857
|
}>;
|
|
14500
14858
|
constructor();
|
|
14501
14859
|
ngOnInit(): void;
|
|
14860
|
+
ngAfterViewInit(): void;
|
|
14861
|
+
ngOnDestroy(): void;
|
|
14502
14862
|
/** Handle back button click — emits backClick output. */
|
|
14503
14863
|
onBackClick(): void;
|
|
14504
14864
|
/** Start a new chat: reset state, stop streaming, bump key. */
|
|
@@ -14525,7 +14885,8 @@ declare class CometChatAIAssistantChat implements OnInit {
|
|
|
14525
14885
|
handleRetryClick(): void;
|
|
14526
14886
|
/**
|
|
14527
14887
|
* Subscribe to the streaming state observable for this user and keep
|
|
14528
|
-
* the isStreaming signal in sync.
|
|
14888
|
+
* the isStreaming signal in sync. When streaming stops, remove the
|
|
14889
|
+
* temporary placeholder message from the list.
|
|
14529
14890
|
*/
|
|
14530
14891
|
private _subscribeToStreamingState;
|
|
14531
14892
|
/**
|
|
@@ -14539,6 +14900,15 @@ declare class CometChatAIAssistantChat implements OnInit {
|
|
|
14539
14900
|
* so the stream bubble disappears and only the final message shows.
|
|
14540
14901
|
*/
|
|
14541
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;
|
|
14542
14912
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<CometChatAIAssistantChat, never>;
|
|
14543
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>;
|
|
14544
14914
|
}
|
|
@@ -14806,6 +15176,8 @@ declare class CometChatSearchMessagesListComponent implements OnInit, OnChanges,
|
|
|
14806
15176
|
toolArguments: string;
|
|
14807
15177
|
toolResults: string;
|
|
14808
15178
|
}>;
|
|
15179
|
+
private readonly htmlSanitizer;
|
|
15180
|
+
private readonly formatterConfig;
|
|
14809
15181
|
private loggedInUser;
|
|
14810
15182
|
constructor();
|
|
14811
15183
|
/** Whether the paginated list is in loading state (initial load only) */
|
|
@@ -14825,6 +15197,23 @@ declare class CometChatSearchMessagesListComponent implements OnInit, OnChanges,
|
|
|
14825
15197
|
getMessageTitle(message: CometChat.BaseMessage): string;
|
|
14826
15198
|
shouldShowDateSeparator(index: number): boolean;
|
|
14827
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;
|
|
14828
15217
|
/**
|
|
14829
15218
|
* Convert SDK mention tags into plain-text `@DisplayName`.
|
|
14830
15219
|
* Falls back to the UID when a mentioned user is not hydrated on the message.
|
|
@@ -14895,5 +15284,469 @@ declare function hasValidSearchCriteria(keyword: string, filters: CometChatSearc
|
|
|
14895
15284
|
*/
|
|
14896
15285
|
declare function hasValidMessageSearchCriteria(keyword: string, filters: CometChatSearchFilter[], uid?: string, guid?: string): boolean;
|
|
14897
15286
|
|
|
14898
|
-
|
|
14899
|
-
|
|
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 };
|