@acorex/components 22.0.0-next.8 → 22.1.0-next.0
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/combo-box/README.md +26 -0
- package/fesm2022/acorex-components-calendar.mjs +10 -12
- package/fesm2022/acorex-components-calendar.mjs.map +1 -1
- package/fesm2022/acorex-components-combo-box.mjs +237 -0
- package/fesm2022/acorex-components-combo-box.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-composer-action-choice-dialog.component-DCcRJYfF.mjs +50 -0
- package/fesm2022/acorex-components-conversation-composer-action-choice-dialog.component-DCcRJYfF.mjs.map +1 -0
- package/fesm2022/{acorex-components-conversation-open-composer-picker-for-files-Hh5Oyp3p.mjs → acorex-components-conversation-open-composer-picker-for-files-BuNEjswI.mjs} +2 -2
- package/fesm2022/{acorex-components-conversation-open-composer-picker-for-files-Hh5Oyp3p.mjs.map → acorex-components-conversation-open-composer-picker-for-files-BuNEjswI.mjs.map} +1 -1
- package/fesm2022/acorex-components-conversation.mjs +2034 -7467
- package/fesm2022/acorex-components-conversation.mjs.map +1 -1
- package/fesm2022/acorex-components-data-table.mjs +135 -45
- package/fesm2022/acorex-components-data-table.mjs.map +1 -1
- package/fesm2022/acorex-components-datetime-box.mjs +14 -16
- package/fesm2022/acorex-components-datetime-box.mjs.map +1 -1
- package/fesm2022/acorex-components-datetime-input.mjs +61 -32
- package/fesm2022/acorex-components-datetime-input.mjs.map +1 -1
- package/fesm2022/acorex-components-dialog.mjs +3 -2
- package/fesm2022/acorex-components-dialog.mjs.map +1 -1
- package/fesm2022/acorex-components-file-viewer.mjs +38 -78
- package/fesm2022/acorex-components-file-viewer.mjs.map +1 -1
- package/fesm2022/acorex-components-grid-layout-builder.mjs +238 -36
- package/fesm2022/acorex-components-grid-layout-builder.mjs.map +1 -1
- package/fesm2022/acorex-components-list.mjs +2 -2
- package/fesm2022/acorex-components-list.mjs.map +1 -1
- package/fesm2022/acorex-components-lookup.mjs +1292 -0
- package/fesm2022/acorex-components-lookup.mjs.map +1 -0
- package/fesm2022/acorex-components-menu.mjs +211 -74
- package/fesm2022/acorex-components-menu.mjs.map +1 -1
- package/fesm2022/acorex-components-number-box.mjs +30 -29
- package/fesm2022/acorex-components-number-box.mjs.map +1 -1
- package/fesm2022/acorex-components-scheduler.mjs +7 -17
- package/fesm2022/acorex-components-scheduler.mjs.map +1 -1
- package/fesm2022/acorex-components-select-box.mjs +2 -2
- package/fesm2022/acorex-components-select-box.mjs.map +1 -1
- package/fesm2022/acorex-components-tag-box.mjs +2 -2
- package/fesm2022/acorex-components-tag-box.mjs.map +1 -1
- package/lookup/README.md +47 -0
- package/package.json +11 -3
- package/types/acorex-components-combo-box.d.ts +114 -0
- package/types/acorex-components-conversation.d.ts +317 -94
- package/types/acorex-components-data-table.d.ts +35 -3
- package/types/acorex-components-datetime-box.d.ts +2 -0
- package/types/acorex-components-datetime-input.d.ts +24 -5
- package/types/acorex-components-file-viewer.d.ts +15 -52
- package/types/acorex-components-grid-layout-builder.d.ts +34 -2
- package/types/acorex-components-lookup.d.ts +454 -0
- package/types/acorex-components-menu.d.ts +26 -4
- package/types/acorex-components-number-box.d.ts +3 -1
- package/types/acorex-components-scheduler.d.ts +2 -4
- package/fesm2022/acorex-components-conversation-composer-action-choice-dialog.component-CNHiM1Sp.mjs +0 -106
- package/fesm2022/acorex-components-conversation-composer-action-choice-dialog.component-CNHiM1Sp.mjs.map +0 -1
|
@@ -37,9 +37,11 @@ declare class AXConversationComposerPopupComponent implements OnDestroy {
|
|
|
37
37
|
/** Close event for popup service */
|
|
38
38
|
readonly onClosed: _angular_core.OutputEmitterRef<AXComponentCloseEvent>;
|
|
39
39
|
/** Active tab ID */
|
|
40
|
-
|
|
40
|
+
readonly activeTabId: _angular_core.WritableSignal<string>;
|
|
41
41
|
/** Enabled tabs from registry */
|
|
42
42
|
readonly enabledTabs: _angular_core.Signal<_acorex_components_conversation.AXConversationComposerTab[]>;
|
|
43
|
+
/** Whether more than one tab is available */
|
|
44
|
+
readonly hasMultipleTabs: _angular_core.Signal<boolean>;
|
|
43
45
|
getTabTitle(tabId: string): string;
|
|
44
46
|
constructor();
|
|
45
47
|
/** Handle tab change */
|
|
@@ -284,6 +286,16 @@ interface AXConversationMessage {
|
|
|
284
286
|
};
|
|
285
287
|
/** Message reactions */
|
|
286
288
|
reactions: AXConversationReaction[];
|
|
289
|
+
/**
|
|
290
|
+
* Total reply count when provided by the message API (`getMessages` or realtime).
|
|
291
|
+
* When omitted, the UI derives a minimum from loaded messages in the active conversation.
|
|
292
|
+
*/
|
|
293
|
+
replyCount?: number;
|
|
294
|
+
/**
|
|
295
|
+
* Total forward count when provided by the message API (`getMessages` or realtime).
|
|
296
|
+
* When omitted, the UI derives a minimum from loaded messages in the active conversation.
|
|
297
|
+
*/
|
|
298
|
+
forwardCount?: number;
|
|
287
299
|
/** Whether message is pinned */
|
|
288
300
|
pinned?: boolean;
|
|
289
301
|
/** Edit timestamp (if edited) */
|
|
@@ -441,15 +453,27 @@ interface AXConversationSettings {
|
|
|
441
453
|
/** Custom settings */
|
|
442
454
|
custom?: Record<string, unknown>;
|
|
443
455
|
}
|
|
456
|
+
/** Theme-specific CSS `background` values for the message list area. */
|
|
457
|
+
interface AXConversationMessageListThemeBackground {
|
|
458
|
+
light: string;
|
|
459
|
+
dark: string;
|
|
460
|
+
}
|
|
461
|
+
/** Single CSS value (both themes) or per-theme `{ light, dark }` backgrounds. */
|
|
462
|
+
type AXConversationMessageListBackground = string | AXConversationMessageListThemeBackground;
|
|
444
463
|
/**
|
|
445
464
|
* Conversation metadata
|
|
446
465
|
* Extensible map for app-specific conversation data.
|
|
447
466
|
*/
|
|
448
467
|
interface AXConversationMetadata extends Record<string, unknown> {
|
|
449
|
-
/** Optional custom background CSS for message list */
|
|
450
|
-
messageListBackground?:
|
|
468
|
+
/** Optional custom background CSS for message list (per light/dark theme). */
|
|
469
|
+
messageListBackground?: AXConversationMessageListBackground;
|
|
451
470
|
/** Optional custom empty-state component for the message list. */
|
|
452
471
|
messageListEmptyComponent?: Type<AXConversationMessageListEmptyComponent>;
|
|
472
|
+
/**
|
|
473
|
+
* When `false`, hides reaction UI (add button, bubbles, picker) for this conversation.
|
|
474
|
+
* Defaults to `true` when omitted.
|
|
475
|
+
*/
|
|
476
|
+
reactionsEnabled?: boolean;
|
|
453
477
|
}
|
|
454
478
|
/** Contract for custom empty-state components rendered by message list. */
|
|
455
479
|
interface AXConversationMessageListEmptyComponent {
|
|
@@ -841,7 +865,7 @@ declare class AXConversationComposerActionRegistry {
|
|
|
841
865
|
private readonly _actions;
|
|
842
866
|
private readonly translation;
|
|
843
867
|
private readonly injector;
|
|
844
|
-
private readonly
|
|
868
|
+
private readonly composerTabRegistry;
|
|
845
869
|
constructor();
|
|
846
870
|
/** All registered actions */
|
|
847
871
|
readonly actions: _angular_core.Signal<AXConversationComposerAction[]>;
|
|
@@ -861,6 +885,8 @@ declare class AXConversationComposerActionRegistry {
|
|
|
861
885
|
* Register a composer action
|
|
862
886
|
*/
|
|
863
887
|
register(action: AXConversationComposerAction): void;
|
|
888
|
+
/** Resolved lazily to avoid a DI cycle with {@link AXConversationComposerFileTypesProvider}. */
|
|
889
|
+
private fileTypeRegistry;
|
|
864
890
|
private ensureFileTypeExists;
|
|
865
891
|
/**
|
|
866
892
|
* Unregister a composer action
|
|
@@ -935,6 +961,8 @@ declare class AXConversationComposerTabRegistry {
|
|
|
935
961
|
readonly tabs: _angular_core.Signal<AXConversationComposerTab[]>;
|
|
936
962
|
/** Enabled tabs sorted by priority */
|
|
937
963
|
readonly enabledTabs: _angular_core.Signal<AXConversationComposerTab[]>;
|
|
964
|
+
/** Whether the composer popup has any tabs to show. */
|
|
965
|
+
readonly hasEnabledTabs: _angular_core.Signal<boolean>;
|
|
938
966
|
/**
|
|
939
967
|
* Register a composer tab
|
|
940
968
|
*/
|
|
@@ -1703,6 +1731,7 @@ declare class AXConversationContainerComponent {
|
|
|
1703
1731
|
private readonly hostRef;
|
|
1704
1732
|
private readonly platformId;
|
|
1705
1733
|
protected readonly config: Required<_acorex_components_conversation.AXConversationConfig>;
|
|
1734
|
+
constructor();
|
|
1706
1735
|
private get registry();
|
|
1707
1736
|
/** Custom CSS class */
|
|
1708
1737
|
readonly customClass: _angular_core.InputSignal<string>;
|
|
@@ -1733,6 +1762,7 @@ declare class AXConversationContainerDirective {
|
|
|
1733
1762
|
private readonly translation;
|
|
1734
1763
|
private readonly toast;
|
|
1735
1764
|
private readonly config;
|
|
1765
|
+
constructor();
|
|
1736
1766
|
private get registry();
|
|
1737
1767
|
/** Active conversation */
|
|
1738
1768
|
readonly activeConversation: _angular_core.Signal<_acorex_components_conversation.AXConversation>;
|
|
@@ -1879,6 +1909,24 @@ type AXConversationPresenceStatus = 'online' | 'offline' | 'away' | 'busy' | 'in
|
|
|
1879
1909
|
*/
|
|
1880
1910
|
type AXConversationUserRole = 'owner' | 'admin' | 'member' | 'guest';
|
|
1881
1911
|
|
|
1912
|
+
type AXConversationApiName = 'userApi' | 'conversationApi' | 'messageApi' | 'realtimeApi';
|
|
1913
|
+
interface AXConversationApiLogEntry {
|
|
1914
|
+
/** Public method on AXConversationService that triggered the API call. */
|
|
1915
|
+
serviceMethod: string;
|
|
1916
|
+
/** Injected API instance name. */
|
|
1917
|
+
api: AXConversationApiName;
|
|
1918
|
+
/** Method invoked on the API instance. */
|
|
1919
|
+
apiMethod: string;
|
|
1920
|
+
/** Positional arguments passed to the API method. */
|
|
1921
|
+
context: unknown[];
|
|
1922
|
+
}
|
|
1923
|
+
declare class AXConversationApiLoggerService {
|
|
1924
|
+
private readonly config;
|
|
1925
|
+
log(entry: AXConversationApiLogEntry): void;
|
|
1926
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationApiLoggerService, never>;
|
|
1927
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXConversationApiLoggerService>;
|
|
1928
|
+
}
|
|
1929
|
+
|
|
1882
1930
|
/**
|
|
1883
1931
|
* Abstract Conversation Management API
|
|
1884
1932
|
* Handle conversation CRUD operations, participants, and settings
|
|
@@ -1907,6 +1955,11 @@ interface AXConversationCreateData {
|
|
|
1907
1955
|
icon?: string;
|
|
1908
1956
|
/** Custom metadata */
|
|
1909
1957
|
metadata?: Record<string, unknown>;
|
|
1958
|
+
/**
|
|
1959
|
+
* When `true`, create a new private chat even if one already exists with the same participants.
|
|
1960
|
+
* Defaults to `false` for private conversations.
|
|
1961
|
+
*/
|
|
1962
|
+
forceCreate?: boolean;
|
|
1910
1963
|
}
|
|
1911
1964
|
/**
|
|
1912
1965
|
* Conversation update data
|
|
@@ -2983,11 +3036,12 @@ declare abstract class AXConversationUserApi {
|
|
|
2983
3036
|
/**
|
|
2984
3037
|
* Get available users for conversation creation
|
|
2985
3038
|
*
|
|
3039
|
+
* @param pagination - Pagination parameters
|
|
2986
3040
|
* @param filters - Search filters
|
|
2987
|
-
* @returns
|
|
3041
|
+
* @returns Paginated list of users
|
|
2988
3042
|
* @throws {AXConversationApiError} If request fails
|
|
2989
3043
|
*/
|
|
2990
|
-
abstract getUsers(filters?: AXConversationUserSearchFilters): Promise<AXConversationParticipant
|
|
3044
|
+
abstract getUsers(pagination?: AXConversationPagination, filters?: AXConversationUserSearchFilters): Promise<AXConversationPaginatedResult<AXConversationParticipant>>;
|
|
2991
3045
|
/**
|
|
2992
3046
|
* Search users by query
|
|
2993
3047
|
*
|
|
@@ -3143,6 +3197,7 @@ declare class AXConversationService {
|
|
|
3143
3197
|
private readonly fileService;
|
|
3144
3198
|
private readonly platformId;
|
|
3145
3199
|
private readonly errorHandler;
|
|
3200
|
+
private readonly apiLogger;
|
|
3146
3201
|
readonly dialogService: AXDialogService;
|
|
3147
3202
|
readonly popupService: AXPopupService;
|
|
3148
3203
|
private readonly translation;
|
|
@@ -3190,14 +3245,30 @@ declare class AXConversationService {
|
|
|
3190
3245
|
readonly onMessageDeleted: rxjs.Observable<string>;
|
|
3191
3246
|
readonly onTypingIndicator: rxjs.Observable<AXConversationTypingIndicator>;
|
|
3192
3247
|
readonly onPresenceChange: rxjs.Observable<AXConversationPresenceUpdate>;
|
|
3193
|
-
private readonly _messageCountRefresh$;
|
|
3194
|
-
readonly onMessageCountRefresh: rxjs.Observable<{
|
|
3195
|
-
messageId: string;
|
|
3196
|
-
type: "reply" | "forward";
|
|
3197
|
-
}>;
|
|
3198
3248
|
private _currentUser;
|
|
3199
3249
|
readonly currentUser: _angular_core.Signal<_acorex_components_conversation.AXConversationParticipant>;
|
|
3250
|
+
/** One-time async initialization (connect, user, conversations, realtime). */
|
|
3251
|
+
private initPromise;
|
|
3252
|
+
/** Generation counter — stale page-0 loads are ignored after conversation switches. */
|
|
3253
|
+
private messageLoadGeneration;
|
|
3254
|
+
/** Bumps when a conversation is created while a list load is in flight. */
|
|
3255
|
+
private conversationListLoadGeneration;
|
|
3256
|
+
/** Batched read-receipt queue keyed by conversation ID. */
|
|
3257
|
+
private readonly readQueue;
|
|
3258
|
+
private readFlushHandle;
|
|
3259
|
+
/** Session cache for available reaction emojis. */
|
|
3260
|
+
private availableReactionsCache;
|
|
3261
|
+
private availableReactionsPromise;
|
|
3200
3262
|
constructor();
|
|
3263
|
+
/** Log and invoke an async API method from AXConversationService. */
|
|
3264
|
+
private callApi;
|
|
3265
|
+
/** Log a sync API invocation (e.g. realtime observable subscriptions). */
|
|
3266
|
+
private logApi;
|
|
3267
|
+
/**
|
|
3268
|
+
* Ensures the service is initialized exactly once.
|
|
3269
|
+
* Safe to call from container components or before any public API usage.
|
|
3270
|
+
*/
|
|
3271
|
+
ensureInitialized(): Promise<void>;
|
|
3201
3272
|
/**
|
|
3202
3273
|
* Initialize the service
|
|
3203
3274
|
* Connects to API and loads initial data
|
|
@@ -3219,9 +3290,7 @@ declare class AXConversationService {
|
|
|
3219
3290
|
*/
|
|
3220
3291
|
loadMoreConversations(page: number): Promise<boolean>;
|
|
3221
3292
|
/**
|
|
3222
|
-
* Select a conversation
|
|
3223
|
-
* Loads messages and subscribes to real-time updates
|
|
3224
|
-
* Note: Messages are now marked as read individually via intersection observer when viewed
|
|
3293
|
+
* Select a conversation and load page 0 of its message history.
|
|
3225
3294
|
*/
|
|
3226
3295
|
selectConversation(conversationId: string): Promise<void>;
|
|
3227
3296
|
closeActiveConversation(): void;
|
|
@@ -3273,10 +3342,20 @@ declare class AXConversationService {
|
|
|
3273
3342
|
*/
|
|
3274
3343
|
getAvailableReactions(): Promise<string[]>;
|
|
3275
3344
|
/**
|
|
3276
|
-
*
|
|
3277
|
-
|
|
3345
|
+
* Queue a message to be marked as read (batched/debounced API sync).
|
|
3346
|
+
*/
|
|
3347
|
+
queueMessageAsRead(messageId: string): void;
|
|
3348
|
+
/**
|
|
3349
|
+
* Mark a single message as read (queues for batched sync).
|
|
3278
3350
|
*/
|
|
3279
3351
|
markMessageAsRead(messageId: string): Promise<void>;
|
|
3352
|
+
private scheduleReadFlush;
|
|
3353
|
+
/**
|
|
3354
|
+
* Drop queued per-message read receipts without syncing to the API.
|
|
3355
|
+
* Used before conversation-level mark-as-read to avoid duplicate API calls.
|
|
3356
|
+
*/
|
|
3357
|
+
private discardReadQueue;
|
|
3358
|
+
private flushReadQueue;
|
|
3280
3359
|
/**
|
|
3281
3360
|
* Mark conversation as read
|
|
3282
3361
|
* Marks messages locally and syncs with server
|
|
@@ -3301,10 +3380,10 @@ declare class AXConversationService {
|
|
|
3301
3380
|
*/
|
|
3302
3381
|
private handleMessageUpdate;
|
|
3303
3382
|
/**
|
|
3304
|
-
*
|
|
3305
|
-
* Emits events when a message is a reply or forward so components can refresh counts
|
|
3383
|
+
* Bump reply/forward counts locally when realtime events arrive outside the active message list.
|
|
3306
3384
|
*/
|
|
3307
|
-
private
|
|
3385
|
+
private syncMessageCountFromRealtime;
|
|
3386
|
+
private bumpMessageCount;
|
|
3308
3387
|
/**
|
|
3309
3388
|
* Handle message deletion
|
|
3310
3389
|
*/
|
|
@@ -3322,6 +3401,11 @@ declare class AXConversationService {
|
|
|
3322
3401
|
* Updates conversation metadata including unread count, last message, etc.
|
|
3323
3402
|
*/
|
|
3324
3403
|
private handleConversationUpdate;
|
|
3404
|
+
/**
|
|
3405
|
+
* Insert or refresh a conversation in the in-memory inbox.
|
|
3406
|
+
* @param promote When true, bumps activity so the chat sorts to the top (create / reopen).
|
|
3407
|
+
*/
|
|
3408
|
+
private syncConversationToInbox;
|
|
3325
3409
|
/**
|
|
3326
3410
|
* Update conversation's last message
|
|
3327
3411
|
*/
|
|
@@ -3361,15 +3445,19 @@ declare class AXConversationService {
|
|
|
3361
3445
|
* @param participantIds - Array of participant user IDs
|
|
3362
3446
|
* @param type - Conversation type (private, group, channel)
|
|
3363
3447
|
* @param metadata - Optional metadata (title, avatar, etc.)
|
|
3364
|
-
* @
|
|
3448
|
+
* @param options - Optional flags (`forceCreate` recreates private chats even when one exists)
|
|
3449
|
+
* @returns Created or existing conversation
|
|
3365
3450
|
*/
|
|
3366
|
-
createConversation(participantIds: string[], type: AXConversationType, metadata?: AXConversationMetadata
|
|
3451
|
+
createConversation(participantIds: string[], type: AXConversationType, metadata?: AXConversationMetadata, options?: {
|
|
3452
|
+
forceCreate?: boolean;
|
|
3453
|
+
}): Promise<AXConversation>;
|
|
3367
3454
|
/**
|
|
3368
3455
|
* Get available users for conversation creation
|
|
3369
|
-
* @param
|
|
3370
|
-
* @
|
|
3456
|
+
* @param filters - Optional search filters (e.g. `query`)
|
|
3457
|
+
* @param pagination - Pagination parameters
|
|
3458
|
+
* @returns Paginated list of users
|
|
3371
3459
|
*/
|
|
3372
|
-
getUsers(
|
|
3460
|
+
getUsers(filters?: AXConversationUserSearchFilters, pagination?: AXConversationPagination): Promise<AXConversationPaginatedResult<AXConversationParticipant>>;
|
|
3373
3461
|
/**
|
|
3374
3462
|
* Mark entire conversation as read
|
|
3375
3463
|
* @param conversationId - Conversation ID
|
|
@@ -3711,18 +3799,18 @@ declare class AXConversationMessageListComponent implements OnDestroy {
|
|
|
3711
3799
|
private readonly infoBarService;
|
|
3712
3800
|
private readonly translation;
|
|
3713
3801
|
private readonly document;
|
|
3802
|
+
private readonly platform;
|
|
3714
3803
|
protected readonly config: Required<_acorex_components_conversation.AXConversationConfig>;
|
|
3715
3804
|
/**
|
|
3716
|
-
* Background for the message list scroll area from config, or the built-in soft
|
|
3805
|
+
* Background for the message list scroll area from config, or the built-in soft wash when unset/empty.
|
|
3717
3806
|
* Set `messageListBackground` to `transparent` or `none` for a flat look.
|
|
3807
|
+
* Supports `{ light, dark }` for theme-specific backgrounds.
|
|
3718
3808
|
*/
|
|
3719
|
-
messageListBackgroundStyle
|
|
3809
|
+
readonly messageListBackgroundStyle: _angular_core.Signal<string>;
|
|
3720
3810
|
resolvedEmptyStateComponent(): Type<AXConversationMessageListEmptyComponent>;
|
|
3721
3811
|
/** Fallback when no conversation is active and no `ax-conversation-message-list-no-active` content is projected. */
|
|
3722
3812
|
protected readonly noActiveFallbackComponent: typeof AXConversationMessageListNoActiveDefaultComponent;
|
|
3723
3813
|
private readonly timeouts;
|
|
3724
|
-
private readonly replyCounts;
|
|
3725
|
-
private readonly forwardCounts;
|
|
3726
3814
|
readonly reactionPickerTarget: _angular_core.WritableSignal<string>;
|
|
3727
3815
|
readonly reactionPickerElement: _angular_core.WritableSignal<HTMLElement>;
|
|
3728
3816
|
readonly reactionPickerPlacement: _angular_core.WritableSignal<AXPlacement>;
|
|
@@ -3734,6 +3822,7 @@ declare class AXConversationMessageListComponent implements OnDestroy {
|
|
|
3734
3822
|
/** While true, older history is being prepended — do not auto-scroll to the latest message. */
|
|
3735
3823
|
private restoringScrollAfterPrepend;
|
|
3736
3824
|
readonly availableReactions: _angular_core.WritableSignal<string[]>;
|
|
3825
|
+
private reactionsLoading;
|
|
3737
3826
|
private get registry();
|
|
3738
3827
|
/** Message list element reference */
|
|
3739
3828
|
private readonly messageListRef;
|
|
@@ -3749,6 +3838,8 @@ declare class AXConversationMessageListComponent implements OnDestroy {
|
|
|
3749
3838
|
readonly showScrollButton: _angular_core.WritableSignal<boolean>;
|
|
3750
3839
|
/** Active conversation */
|
|
3751
3840
|
readonly activeConversation: _angular_core.Signal<_acorex_components_conversation.AXConversation>;
|
|
3841
|
+
/** Whether the active conversation allows message reactions. */
|
|
3842
|
+
readonly reactionsEnabled: _angular_core.Signal<boolean>;
|
|
3752
3843
|
/** Messages */
|
|
3753
3844
|
readonly messages: _angular_core.Signal<AXConversationMessage[]>;
|
|
3754
3845
|
/** Message action event */
|
|
@@ -3766,6 +3857,7 @@ declare class AXConversationMessageListComponent implements OnDestroy {
|
|
|
3766
3857
|
}[]>;
|
|
3767
3858
|
constructor();
|
|
3768
3859
|
private intersectionObserver?;
|
|
3860
|
+
private readonly observedReadMessageIds;
|
|
3769
3861
|
/**
|
|
3770
3862
|
* Setup intersection observer to mark messages as read when visible
|
|
3771
3863
|
*/
|
|
@@ -3820,6 +3912,8 @@ declare class AXConversationMessageListComponent implements OnDestroy {
|
|
|
3820
3912
|
userIds: string[];
|
|
3821
3913
|
hasReacted: boolean;
|
|
3822
3914
|
}): string;
|
|
3915
|
+
/** Whether reactions can be shown or added for a message in the active conversation. */
|
|
3916
|
+
messageSupportsReactions(message: AXConversationMessage): boolean;
|
|
3823
3917
|
/** Toggle reaction picker */
|
|
3824
3918
|
toggleReactionPicker(message: AXConversationMessage, event: MouseEvent): void;
|
|
3825
3919
|
/** Close reaction picker */
|
|
@@ -3832,8 +3926,8 @@ declare class AXConversationMessageListComponent implements OnDestroy {
|
|
|
3832
3926
|
onReactionClickById(messageId: string, emoji: string): void;
|
|
3833
3927
|
/** Get message by ID */
|
|
3834
3928
|
getMessageById(messageId: string): AXConversationMessage | undefined;
|
|
3835
|
-
/** Load available reactions
|
|
3836
|
-
private
|
|
3929
|
+
/** Load available reactions when the picker is opened (session-cached in service). */
|
|
3930
|
+
private ensureAvailableReactions;
|
|
3837
3931
|
/** Get message actions from registry */
|
|
3838
3932
|
getMessageActions(message: AXConversationMessage): _acorex_components_conversation.AXConversationMessageAction[];
|
|
3839
3933
|
/** Handle reaction click */
|
|
@@ -3872,15 +3966,8 @@ declare class AXConversationMessageListComponent implements OnDestroy {
|
|
|
3872
3966
|
/** Get ARIA label for message */
|
|
3873
3967
|
getMessageAriaLabel(message: AXConversationMessage): string;
|
|
3874
3968
|
getDateSeparatorAriaLabel(dateLabel: string): string;
|
|
3875
|
-
/** Get reply count for a message (fetches from API across all conversations) */
|
|
3876
3969
|
getReplyCount(message: AXConversationMessage): number;
|
|
3877
|
-
/** Get forward count for a message (fetches from API across all conversations) */
|
|
3878
3970
|
getForwardCount(message: AXConversationMessage): number;
|
|
3879
|
-
/**
|
|
3880
|
-
* Refresh count for a specific message from API
|
|
3881
|
-
* This is called when a new reply or forward is detected globally
|
|
3882
|
-
*/
|
|
3883
|
-
private refreshCount;
|
|
3884
3971
|
onMessageListDragEnter(): void;
|
|
3885
3972
|
onMessageListDragLeave(): void;
|
|
3886
3973
|
/** Open the matching composer picker popup when files are dropped on the message list. */
|
|
@@ -3909,7 +3996,6 @@ declare class AXConversationMessageListComponent implements OnDestroy {
|
|
|
3909
3996
|
|
|
3910
3997
|
declare class AXConversationMessageListService {
|
|
3911
3998
|
private readonly conversationService;
|
|
3912
|
-
private readonly config;
|
|
3913
3999
|
private get registry();
|
|
3914
4000
|
readonly activeConversation: _angular_core.Signal<_acorex_components_conversation.AXConversation>;
|
|
3915
4001
|
readonly activeMessages: _angular_core.Signal<AXConversationMessage[]>;
|
|
@@ -3926,9 +4012,19 @@ declare class AXConversationMessageListService {
|
|
|
3926
4012
|
readonly scrollRequests: _angular_core.WritableSignal<number>;
|
|
3927
4013
|
/** Live renderer instances keyed by message id (for message actions). */
|
|
3928
4014
|
private readonly _rendererInstances;
|
|
4015
|
+
/**
|
|
4016
|
+
* Reply counts merged from API fields and loaded messages.
|
|
4017
|
+
*/
|
|
4018
|
+
readonly replyCounts: _angular_core.Signal<Map<string, number>>;
|
|
4019
|
+
/**
|
|
4020
|
+
* Forward counts merged from API fields and loaded messages.
|
|
4021
|
+
*/
|
|
4022
|
+
readonly forwardCounts: _angular_core.Signal<Map<string, number>>;
|
|
3929
4023
|
registerRendererInstance(messageId: string, instance: AXConversationMessageRendererComponent): void;
|
|
3930
4024
|
unregisterRendererInstance(messageId: string): void;
|
|
3931
4025
|
getRendererInstance(messageId: string): AXConversationMessageRendererComponent | undefined;
|
|
4026
|
+
getReplyCount(messageId: string): number;
|
|
4027
|
+
getForwardCount(messageId: string): number;
|
|
3932
4028
|
/** Message grouped by date */
|
|
3933
4029
|
readonly messageGroups: _angular_core.Signal<{
|
|
3934
4030
|
date: string;
|
|
@@ -3948,13 +4044,14 @@ declare class AXConversationMessageListService {
|
|
|
3948
4044
|
reactToMessage(messageId: string, emoji: string): Promise<void>;
|
|
3949
4045
|
/** Request message list to scroll to bottom */
|
|
3950
4046
|
requestScrollToBottom(): void;
|
|
4047
|
+
private buildCountMap;
|
|
3951
4048
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationMessageListService, never>;
|
|
3952
4049
|
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXConversationMessageListService>;
|
|
3953
4050
|
}
|
|
3954
4051
|
|
|
3955
4052
|
declare class AXConversationSidebarService {
|
|
3956
4053
|
private readonly conversationService;
|
|
3957
|
-
|
|
4054
|
+
constructor();
|
|
3958
4055
|
private get registry();
|
|
3959
4056
|
readonly searchQuery: _angular_core.WritableSignal<string>;
|
|
3960
4057
|
readonly activeTabId: _angular_core.WritableSignal<string>;
|
|
@@ -3963,7 +4060,6 @@ declare class AXConversationSidebarService {
|
|
|
3963
4060
|
readonly loading: _angular_core.Signal<boolean>;
|
|
3964
4061
|
readonly hasMoreConversations: _angular_core.Signal<boolean>;
|
|
3965
4062
|
readonly enabledTabs: _angular_core.Signal<_acorex_components_conversation.AXConversationTab[]>;
|
|
3966
|
-
private filterCache;
|
|
3967
4063
|
readonly filteredConversations: _angular_core.Signal<AXConversation[]>;
|
|
3968
4064
|
/**
|
|
3969
4065
|
* Filter and sort conversations
|
|
@@ -3995,6 +4091,8 @@ declare class AXConversationSidebarComponent implements OnDestroy {
|
|
|
3995
4091
|
private readonly conversationService;
|
|
3996
4092
|
private readonly popupService;
|
|
3997
4093
|
private readonly translation;
|
|
4094
|
+
private readonly ngZone;
|
|
4095
|
+
private readonly cdr;
|
|
3998
4096
|
/** Conversation selected event */
|
|
3999
4097
|
readonly conversationSelected: _angular_core.OutputEmitterRef<AXConversation>;
|
|
4000
4098
|
/** Search debouncing */
|
|
@@ -4038,6 +4136,10 @@ declare class AXConversationNewDialogComponent extends AXBasePageComponent {
|
|
|
4038
4136
|
conversationService: AXConversationService;
|
|
4039
4137
|
private readonly toastService;
|
|
4040
4138
|
private readonly translation;
|
|
4139
|
+
private readonly config;
|
|
4140
|
+
private readonly destroyRef;
|
|
4141
|
+
private searchDebounceTimer?;
|
|
4142
|
+
constructor();
|
|
4041
4143
|
/**
|
|
4042
4144
|
* Injected by {@link AXPopupComponent} when this dialog is opened via {@link AXPopupService}.
|
|
4043
4145
|
* Required for `setTitle` / dynamic header — {@link AXBasePageComponent#setTitle} is otherwise unset.
|
|
@@ -4061,6 +4163,7 @@ declare class AXConversationNewDialogComponent extends AXBasePageComponent {
|
|
|
4061
4163
|
private readonly _resetWizardWhenSingleEffect;
|
|
4062
4164
|
private readonly _syncPopupTitleEffect;
|
|
4063
4165
|
readonly usersListEmptyTpl: _angular_core.Signal<TemplateRef<unknown>>;
|
|
4166
|
+
readonly usersListLoadingTpl: _angular_core.Signal<TemplateRef<unknown>>;
|
|
4064
4167
|
readonly usersList: _angular_core.Signal<AXListComponent>;
|
|
4065
4168
|
readonly usersListDataSource: AXDataSource<unknown>;
|
|
4066
4169
|
onCancel(): void;
|
|
@@ -4070,7 +4173,7 @@ declare class AXConversationNewDialogComponent extends AXBasePageComponent {
|
|
|
4070
4173
|
onSearchChange(value: string): void;
|
|
4071
4174
|
isUserSelected(id: string): boolean;
|
|
4072
4175
|
userFromItem(item: unknown): AXConversationParticipant | null;
|
|
4073
|
-
private
|
|
4176
|
+
private mergeUsersCache;
|
|
4074
4177
|
onCreateConversation(): Promise<void>;
|
|
4075
4178
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationNewDialogComponent, never>;
|
|
4076
4179
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXConversationNewDialogComponent, "ax-conversation-new-dialog", never, { "__popup__": { "alias": "__popup__"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
@@ -4104,19 +4207,12 @@ declare class AXConversationInfiniteScrollDirective {
|
|
|
4104
4207
|
/**
|
|
4105
4208
|
* Conversation feature flags for configurable bundle size.
|
|
4106
4209
|
*/
|
|
4107
|
-
type AXConversationMediaPickerFeature = 'image' | 'video' | 'audio' | 'file' | 'voice' | 'location';
|
|
4108
4210
|
type AXConversationComposerTabFeature = 'emoji' | 'sticker';
|
|
4109
4211
|
interface AXConversationFeatures {
|
|
4110
|
-
/** Enabled composer
|
|
4111
|
-
mediaPickers?: AXConversationMediaPickerFeature[];
|
|
4112
|
-
/** Enabled composer popup tabs; defaults to all when omitted. */
|
|
4212
|
+
/** Enabled built-in composer popup tabs (`emoji`, `sticker`). Defaults to none when omitted. */
|
|
4113
4213
|
composerTabs?: AXConversationComposerTabFeature[];
|
|
4114
4214
|
}
|
|
4115
|
-
declare const AX_ALL_CONVERSATION_MEDIA_PICKERS: readonly AXConversationMediaPickerFeature[];
|
|
4116
|
-
declare const AX_ALL_CONVERSATION_COMPOSER_TABS: readonly AXConversationComposerTabFeature[];
|
|
4117
|
-
declare function resolveConversationMediaPickers(features?: AXConversationFeatures): readonly AXConversationMediaPickerFeature[];
|
|
4118
4215
|
declare function resolveConversationComposerTabs(features?: AXConversationFeatures): readonly AXConversationComposerTabFeature[];
|
|
4119
|
-
declare function isMediaPickerEnabled(picker: AXConversationMediaPickerFeature, features?: AXConversationFeatures): boolean;
|
|
4120
4216
|
declare function isComposerTabEnabled(tab: AXConversationComposerTabFeature, features?: AXConversationFeatures): boolean;
|
|
4121
4217
|
|
|
4122
4218
|
/**
|
|
@@ -4166,31 +4262,52 @@ interface AXConversationConfig {
|
|
|
4166
4262
|
maxFilesPerMessage?: number;
|
|
4167
4263
|
/** Threshold for marking messages as read (0.0 to 1.0, default: 0.3) */
|
|
4168
4264
|
messageReadThreshold?: number;
|
|
4265
|
+
/** Debounce window (ms) before flushing batched read-receipt API calls (default: 400) */
|
|
4266
|
+
messageReadDebounce?: number;
|
|
4267
|
+
/**
|
|
4268
|
+
* When true, marks the whole conversation as read once when it is selected (single API call).
|
|
4269
|
+
* Per-message intersection observer still handles new messages received while the chat is open.
|
|
4270
|
+
*/
|
|
4271
|
+
markConversationReadOnSelect?: boolean;
|
|
4169
4272
|
/**
|
|
4170
4273
|
* CSS `background` for the message list (`ax-conversation-message-list` area, all states: loading, empty, messages).
|
|
4171
4274
|
* Use full shorthand, or a bare `https://...` / `/path/to.png` (wrapped as `url(...)` with `center/cover`).
|
|
4172
|
-
*
|
|
4275
|
+
* Pass a string for the same value in both themes, or `{ light, dark }` for theme-specific backgrounds.
|
|
4276
|
+
* Empty string = library default. `transparent` or `none` = flat background.
|
|
4173
4277
|
*/
|
|
4174
|
-
messageListBackground?:
|
|
4278
|
+
messageListBackground?: AXConversationMessageListBackground;
|
|
4175
4279
|
/** Optional feature flags to reduce bundle size per app. */
|
|
4176
4280
|
features?: AXConversationFeatures;
|
|
4281
|
+
/** Log API calls made by AXConversationService to the console (default: false). */
|
|
4282
|
+
debugApiLogging?: boolean;
|
|
4177
4283
|
}
|
|
4178
4284
|
|
|
4179
4285
|
/**
|
|
4286
|
+
|
|
4180
4287
|
* Default Configuration Values
|
|
4288
|
+
|
|
4181
4289
|
* Centralized defaults to avoid magic numbers throughout the codebase
|
|
4290
|
+
|
|
4182
4291
|
*/
|
|
4183
4292
|
|
|
4184
4293
|
/**
|
|
4294
|
+
|
|
4185
4295
|
* Default conversation configuration
|
|
4296
|
+
|
|
4186
4297
|
* All values are explicitly defined here for easy maintenance and documentation
|
|
4298
|
+
|
|
4187
4299
|
*/
|
|
4188
4300
|
declare const AX_DEFAULT_CONVERSATION_CONFIG: Required<AXConversationConfig>;
|
|
4189
4301
|
/**
|
|
4302
|
+
|
|
4190
4303
|
* Helper function to merge user config with defaults
|
|
4304
|
+
|
|
4191
4305
|
* Properly handles array merging to avoid reference issues
|
|
4306
|
+
|
|
4192
4307
|
* @param userConfig - User-provided configuration
|
|
4308
|
+
|
|
4193
4309
|
* @returns Merged configuration with all required fields
|
|
4310
|
+
|
|
4194
4311
|
*/
|
|
4195
4312
|
declare function mergeWithDefaults(userConfig?: Partial<AXConversationConfig>): Required<AXConversationConfig>;
|
|
4196
4313
|
|
|
@@ -4212,12 +4329,19 @@ declare const AX_CONVERSATION_ERROR_HANDLER_CONFIG: InjectionToken<Partial<AXCon
|
|
|
4212
4329
|
/**
|
|
4213
4330
|
* Pluggable avatar components for the conversation UI.
|
|
4214
4331
|
* Register via `provideConversation({ avatarComponents: { user, conversation } })`.
|
|
4332
|
+
* When only `user` is registered, a built-in conversation avatar host is wired automatically.
|
|
4215
4333
|
*/
|
|
4216
4334
|
|
|
4217
4335
|
/** Custom user avatar (e.g. platform `axp-user-avatar`). */
|
|
4218
4336
|
interface AXConversationUserAvatarComponent {
|
|
4219
4337
|
readonly userId: InputSignal<string>;
|
|
4220
4338
|
readonly size: InputSignal<number>;
|
|
4339
|
+
/** Optional resolved display name (e.g. bot/assist peer title). */
|
|
4340
|
+
readonly displayName?: InputSignal<string | undefined>;
|
|
4341
|
+
/** Optional resolved avatar URL when `userId` is not a platform user row. */
|
|
4342
|
+
readonly displayAvatar?: InputSignal<string | undefined>;
|
|
4343
|
+
/** Optional icon class when no avatar image is available. */
|
|
4344
|
+
readonly displayIcon?: InputSignal<string | undefined>;
|
|
4221
4345
|
}
|
|
4222
4346
|
/** Optional custom group/channel conversation avatar. */
|
|
4223
4347
|
interface AXConversationConversationAvatarComponent {
|
|
@@ -4405,6 +4529,8 @@ declare class AXConversationSharedStorage {
|
|
|
4405
4529
|
* Seed initial data if not already seeded
|
|
4406
4530
|
*/
|
|
4407
4531
|
seedIfEmpty(): Promise<void>;
|
|
4532
|
+
/** Wipe in-memory and persisted demo data (used when seed version changes). */
|
|
4533
|
+
private clearAllData;
|
|
4408
4534
|
/** @internal Used by demo seed module */
|
|
4409
4535
|
markSeeded(): void;
|
|
4410
4536
|
/** @internal Starts demo presence and message simulations */
|
|
@@ -4428,6 +4554,11 @@ declare class AXConversationSharedStorage {
|
|
|
4428
4554
|
}
|
|
4429
4555
|
declare const axConversationSharedStorage: AXConversationSharedStorage;
|
|
4430
4556
|
|
|
4557
|
+
declare const AX_CONVERSATION_DEMO_CONVERSATION_IDS: {
|
|
4558
|
+
readonly private: "conv-demo-private";
|
|
4559
|
+
readonly group: "conv-demo-group";
|
|
4560
|
+
readonly channel: "conv-demo-channel";
|
|
4561
|
+
};
|
|
4431
4562
|
declare function seedSharedStorageInitialData(storage: AXConversationSharedStorage): Promise<void>;
|
|
4432
4563
|
|
|
4433
4564
|
/**
|
|
@@ -4465,11 +4596,12 @@ declare function paginateChatOldestFirst<T extends {
|
|
|
4465
4596
|
}>(sortedOldestFirst: T[], pagination: AXConversationPagination): AXConversationPaginatedResult<T>;
|
|
4466
4597
|
|
|
4467
4598
|
/**
|
|
4468
|
-
*
|
|
4469
|
-
|
|
4470
|
-
/**
|
|
4471
|
-
* Append demo chats/messages when the DB is too small for default page sizes (30 / 50).
|
|
4599
|
+
* Pagination demo data — disabled for the minimal 3-chat showcase seed.
|
|
4600
|
+
* Kept as a no-op so existing imports remain valid.
|
|
4472
4601
|
*/
|
|
4602
|
+
/** @deprecated Pagination demo chat removed from default seed. */
|
|
4603
|
+
declare const AX_MESSAGE_PAGINATION_CONVERSATION_ID = "conv-pag-msgs";
|
|
4604
|
+
/** No-op: showcase uses a fixed 3-conversation seed (private, group, channel). */
|
|
4473
4605
|
declare function ensurePaginationDemoData(): Promise<void>;
|
|
4474
4606
|
|
|
4475
4607
|
/**
|
|
@@ -4492,10 +4624,11 @@ declare function getSortedConversationsForInbox(filters?: AXConversationFilters)
|
|
|
4492
4624
|
declare function normalizeAllConversationMessageIndexes(): void;
|
|
4493
4625
|
|
|
4494
4626
|
declare class AXConversationIndexedDbUserApi extends AXConversationUserApi {
|
|
4627
|
+
private readonly API_DELAY_MS;
|
|
4495
4628
|
getCurrentUser(): Promise<AXConversationParticipant>;
|
|
4496
4629
|
updateProfile(updates: AXConversationUserProfileUpdate): Promise<AXConversationParticipant>;
|
|
4497
4630
|
uploadAvatar(file: File): Promise<string>;
|
|
4498
|
-
getUsers(filters?: AXConversationUserSearchFilters): Promise<AXConversationParticipant
|
|
4631
|
+
getUsers(pagination?: AXConversationPagination, filters?: AXConversationUserSearchFilters): Promise<AXConversationPaginatedResult<AXConversationParticipant>>;
|
|
4499
4632
|
searchUsers(query: string): Promise<AXConversationParticipant[]>;
|
|
4500
4633
|
getUserById(userId: string): Promise<AXConversationParticipant>;
|
|
4501
4634
|
getUsersByIds(userIds: string[]): Promise<AXConversationParticipant[]>;
|
|
@@ -4507,6 +4640,9 @@ declare class AXConversationIndexedDbUserApi extends AXConversationUserApi {
|
|
|
4507
4640
|
reportUser(_userId: string, _reason: AXConversationBlockReportReason): Promise<void>;
|
|
4508
4641
|
getUserSettings(): Promise<Record<string, unknown>>;
|
|
4509
4642
|
updateUserSettings(_settings: Record<string, unknown>): Promise<void>;
|
|
4643
|
+
private getCurrentUserWithoutDelay;
|
|
4644
|
+
private fetchUsers;
|
|
4645
|
+
private delay;
|
|
4510
4646
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationIndexedDbUserApi, never>;
|
|
4511
4647
|
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXConversationIndexedDbUserApi>;
|
|
4512
4648
|
}
|
|
@@ -4887,6 +5023,8 @@ declare class AXConversationAudioPickerComponent implements OnDestroy {
|
|
|
4887
5023
|
|
|
4888
5024
|
declare const AX_CONVERSATION_COMPOSER_EMOJI_TAB: AXConversationComposerTab;
|
|
4889
5025
|
declare const AX_CONVERSATION_COMPOSER_STICKER_TAB: AXConversationComposerTab;
|
|
5026
|
+
/** Built-in composer popup tabs keyed by {@link AXConversationComposerTabFeature}. */
|
|
5027
|
+
declare const AX_CONVERSATION_BUILTIN_COMPOSER_TABS: Record<AXConversationComposerTabFeature, AXConversationComposerTab>;
|
|
4890
5028
|
|
|
4891
5029
|
interface AXConversationEmoji {
|
|
4892
5030
|
char: string;
|
|
@@ -5135,17 +5273,6 @@ declare class AXConversationPickerEmptyComponent {
|
|
|
5135
5273
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXConversationPickerEmptyComponent, "ax-conversation-picker-empty", never, { "title": { "alias": "title"; "required": true; "isSignal": true; }; "hint": { "alias": "hint"; "required": true; "isSignal": true; }; "iconClass": { "alias": "iconClass"; "required": true; "isSignal": true; }; "dragOver": { "alias": "dragOver"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
5136
5274
|
}
|
|
5137
5275
|
|
|
5138
|
-
/**
|
|
5139
|
-
* Shell flex + max-height (on {@link AXConversationPickerShellComponent}).
|
|
5140
|
-
* Styles here target projected content inside the shell.
|
|
5141
|
-
*/
|
|
5142
|
-
declare const AX_CONVERSATION_PICKER_SHELL_STYLES = "\n :host {\n display: block;\n width: 100%;\n max-width: 100%;\n min-height: 0;\n container-type: inline-size;\n container-name: picker;\n }\n\n .ax-conversation-picker {\n display: flex;\n flex-direction: column;\n width: 100%;\n max-width: 100%;\n max-height: min(32rem, 85dvh);\n background: rgb(var(--ax-sys-color-lightest-surface));\n border-radius: var(--ax-sys-border-radius, 0.5rem);\n overflow: hidden;\n }\n\n .ax-conversation-picker__content {\n display: flex;\n flex: 1;\n flex-direction: column;\n min-height: 0;\n overflow: hidden;\n }\n\n @container picker (max-width: 480px) {\n .ax-conversation-picker {\n max-height: min(28rem, 90dvh);\n border-radius: 0;\n }\n }\n";
|
|
5143
|
-
/**
|
|
5144
|
-
* Shared layout and surface styles for composer media pickers.
|
|
5145
|
-
* Uses ACoreX system color tokens only.
|
|
5146
|
-
*/
|
|
5147
|
-
declare const AX_CONVERSATION_PICKER_SHARED_STYLES = "\n :host {\n display: block;\n width: 100%;\n max-width: 100%;\n min-height: 0;\n }\n\n .ax-conversation-picker__scroll {\n flex: 1;\n min-height: 0;\n overflow-y: auto;\n overscroll-behavior: contain;\n -webkit-overflow-scrolling: touch;\n }\n\n .ax-conversation-picker__empty {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: 0.375rem;\n min-height: 8.5rem;\n margin: 0.75rem;\n padding: 1rem 0.75rem;\n border: 1px dashed rgb(var(--ax-sys-color-border-surface));\n border-radius: var(--ax-sys-border-radius, 0.5rem);\n cursor: pointer;\n transition: border-color 0.15s ease, background-color 0.15s ease;\n text-align: center;\n touch-action: manipulation;\n }\n\n .ax-conversation-picker__empty:hover,\n .ax-conversation-picker__empty--drag {\n border-color: rgb(var(--ax-sys-color-primary-500));\n background: rgba(var(--ax-sys-color-primary-500), 0.06);\n }\n\n .ax-conversation-picker__empty-icon {\n font-size: 1.75rem;\n line-height: 1;\n color: rgba(var(--ax-sys-color-on-surface), 0.55);\n }\n\n .ax-conversation-picker__empty-title {\n margin: 0;\n font-size: 0.8125rem;\n font-weight: 600;\n color: rgb(var(--ax-sys-color-on-surface));\n }\n\n .ax-conversation-picker__empty-hint {\n margin: 0;\n font-size: 0.75rem;\n color: rgba(var(--ax-sys-color-on-surface), 0.6);\n }\n\n .ax-conversation-picker__body {\n padding: 0 0.75rem 0.75rem;\n }\n\n .ax-conversation-picker__list {\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n padding-top: 0.5rem;\n }\n\n .ax-conversation-picker__row {\n display: flex;\n align-items: center;\n gap: 0.625rem;\n padding: 0.5rem 0.625rem;\n border: 1px solid rgb(var(--ax-sys-color-border-light-surface));\n border-radius: var(--ax-sys-border-radius, 0.375rem);\n background: rgb(var(--ax-sys-color-surface));\n transition: background-color 0.15s ease;\n }\n\n @media (hover: hover) {\n .ax-conversation-picker__row:hover {\n background: rgb(var(--ax-sys-color-light-surface));\n }\n }\n\n .ax-conversation-picker__thumb {\n position: relative;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 2.5rem;\n height: 2.5rem;\n flex-shrink: 0;\n border-radius: var(--ax-sys-border-radius, 0.375rem);\n background: rgba(var(--ax-sys-color-primary-500), 0.08);\n color: rgb(var(--ax-sys-color-primary-500));\n font-size: 1.125rem;\n overflow: hidden;\n }\n\n .ax-conversation-picker__thumb img,\n .ax-conversation-picker__thumb video {\n width: 100%;\n height: 100%;\n object-fit: cover;\n display: block;\n pointer-events: none;\n }\n\n .ax-conversation-picker__thumb-badge {\n position: absolute;\n inset: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n background: rgb(0 0 0 / 0.32);\n color: rgb(var(--ax-sys-color-light));\n font-size: 0.625rem;\n pointer-events: none;\n }\n\n .ax-conversation-picker__details {\n flex: 1;\n min-width: 0;\n display: flex;\n flex-direction: column;\n gap: 0.125rem;\n }\n\n .ax-conversation-picker__name {\n font-size: 0.8125rem;\n font-weight: 500;\n color: rgb(var(--ax-sys-color-on-surface));\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .ax-conversation-picker__status {\n display: flex;\n flex-wrap: wrap;\n gap: 0.375rem;\n font-size: 0.6875rem;\n color: rgba(var(--ax-sys-color-on-surface), 0.65);\n }\n\n .ax-conversation-picker__status--ok {\n color: rgb(var(--ax-sys-color-success-600));\n font-weight: 500;\n }\n\n .ax-conversation-picker__status--err {\n color: rgb(var(--ax-sys-color-danger-600));\n font-weight: 500;\n }\n\n .ax-conversation-picker__progress {\n width: 100%;\n margin-top: 0.125rem;\n }\n\n .ax-conversation-picker__remove {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 2.75rem;\n height: 2.75rem;\n flex-shrink: 0;\n border: none;\n border-radius: var(--ax-sys-border-radius, 0.25rem);\n background: transparent;\n color: rgba(var(--ax-sys-color-on-surface), 0.55);\n font-size: 1rem;\n cursor: pointer;\n touch-action: manipulation;\n transition: background-color 0.15s ease, color 0.15s ease;\n }\n\n .ax-conversation-picker__remove:hover,\n .ax-conversation-picker__remove:focus-visible {\n background: rgba(var(--ax-sys-color-danger-500), 0.1);\n color: rgb(var(--ax-sys-color-danger-500));\n outline: none;\n }\n\n .ax-conversation-picker__grid {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(5.25rem, 1fr));\n gap: 0.5rem;\n }\n\n .ax-conversation-picker__tile {\n position: relative;\n aspect-ratio: 1;\n border-radius: var(--ax-sys-border-radius, 0.375rem);\n overflow: hidden;\n border: 1px solid rgb(var(--ax-sys-color-border-light-surface));\n background: rgb(var(--ax-sys-color-light-surface));\n }\n\n .ax-conversation-picker__tile img {\n width: 100%;\n height: 100%;\n object-fit: cover;\n display: block;\n }\n\n .ax-conversation-picker__tile-remove {\n position: absolute;\n top: 0.25rem;\n inset-inline-end: 0.25rem;\n z-index: 2;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 1.75rem;\n height: 1.75rem;\n border: none;\n border-radius: 50%;\n background: rgb(var(--ax-sys-color-danger-500));\n color: rgb(var(--ax-sys-color-light));\n font-size: 0.6875rem;\n cursor: pointer;\n touch-action: manipulation;\n box-shadow: 0 1px 3px rgb(0 0 0 / 0.2);\n }\n\n .ax-conversation-picker__tile-overlay {\n position: absolute;\n inset-inline: 0;\n bottom: 0;\n padding: 0.25rem;\n background: linear-gradient(transparent, rgb(0 0 0 / 0.55));\n }\n\n .ax-conversation-picker__tile-status {\n font-size: 0.625rem;\n color: rgb(var(--ax-sys-color-light));\n line-height: 1.2;\n }\n\n .ax-conversation-picker__caption-slot {\n flex-shrink: 0;\n padding: 0.5rem 0.75rem;\n border-top: 1px solid rgb(var(--ax-sys-color-border-light-surface));\n background: rgb(var(--ax-sys-color-lightest-surface));\n }\n\n .ax-conversation-picker__input-hidden {\n display: none;\n }\n\n @container picker (max-width: 480px) {\n .ax-conversation-picker__grid {\n grid-template-columns: repeat(3, minmax(0, 1fr));\n gap: 0.375rem;\n }\n\n .ax-conversation-picker__row {\n padding: 0.4375rem 0.5rem;\n gap: 0.5rem;\n }\n\n .ax-conversation-picker__thumb {\n width: 2.25rem;\n height: 2.25rem;\n }\n\n .ax-conversation-picker__empty {\n min-height: 7.5rem;\n margin: 0.5rem;\n }\n\n .ax-conversation-picker__body {\n padding-inline: 0.5rem;\n padding-bottom: 0.5rem;\n }\n }\n";
|
|
5148
|
-
|
|
5149
5276
|
/**
|
|
5150
5277
|
* Wraps composer pickers with {@link AXUploaderZoneDirective} for browse, drop, and validation.
|
|
5151
5278
|
*/
|
|
@@ -5349,13 +5476,15 @@ declare const AX_CONVERSATION_COMPOSER_LOCATION_ACTION: AXConversationComposerAc
|
|
|
5349
5476
|
|
|
5350
5477
|
/** Ensures built-in conversation catalogs exist on the root file-type registry. */
|
|
5351
5478
|
declare const AX_CONVERSATION_FILE_TYPES_READY: InjectionToken<boolean>;
|
|
5352
|
-
/** Registers validation rules and lazy conversation file-type catalogs for
|
|
5353
|
-
declare function provideConversationComposerFileTypes(
|
|
5479
|
+
/** Registers validation rules and lazy conversation file-type catalogs for composer actions. */
|
|
5480
|
+
declare function provideConversationComposerFileTypes(): Provider[];
|
|
5354
5481
|
|
|
5355
|
-
/**
|
|
5482
|
+
/**
|
|
5483
|
+
* Lazy-loads conversation file catalogs for the root file-type registry.
|
|
5484
|
+
* Must not inject {@link AXConversationComposerActionRegistry} — that registry
|
|
5485
|
+
* depends on {@link AXFileTypeRegistryService}, which would create a circular DI cycle.
|
|
5486
|
+
*/
|
|
5356
5487
|
declare class AXConversationComposerFileTypesProvider extends AXFileTypeInfoProvider {
|
|
5357
|
-
private readonly config;
|
|
5358
|
-
private cache;
|
|
5359
5488
|
items(): Promise<AXFileType[]>;
|
|
5360
5489
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationComposerFileTypesProvider, never>;
|
|
5361
5490
|
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXConversationComposerFileTypesProvider>;
|
|
@@ -5405,7 +5534,18 @@ declare function resolveVideoThumbnailUrl(video: AXConversationVideoMediaItem):
|
|
|
5405
5534
|
declare function resolveGalleryImageUrl(image: AXConversationImageMediaItem): string | undefined;
|
|
5406
5535
|
declare function getMessageVideoItems(message: AXConversationMessage): AXConversationVideoMediaItem[];
|
|
5407
5536
|
declare function getMessageAudioItems(message: AXConversationMessage): AXConversationAudioMediaItem[];
|
|
5408
|
-
|
|
5537
|
+
interface AXConversationMediaPageResult {
|
|
5538
|
+
items: AXConversationMessage[];
|
|
5539
|
+
hasMore: boolean;
|
|
5540
|
+
nextCursor?: string;
|
|
5541
|
+
page: number;
|
|
5542
|
+
}
|
|
5543
|
+
declare function fetchConversationMediaPage(conversationApi: AXConversationApi, conversationId: string, page: number, pageSize?: number, cursor?: string): Promise<AXConversationMediaPageResult>;
|
|
5544
|
+
/** @deprecated Use {@link fetchConversationMediaPage} — loads only the first page. */
|
|
5545
|
+
declare function fetchConversationMediaMessages(conversationApi: AXConversationApi, conversationId: string, pageSize: number): Promise<AXConversationMessage[]>;
|
|
5546
|
+
/** Merge media API results with in-memory messages needed for link/sticker/voice/location tabs. */
|
|
5547
|
+
declare function mergeInfoPanelMessages(mediaMessages: AXConversationMessage[], supplemental: AXConversationMessage[]): AXConversationMessage[];
|
|
5548
|
+
declare function filterSupplementalInfoPanelMessages(messages: AXConversationMessage[]): AXConversationMessage[];
|
|
5409
5549
|
|
|
5410
5550
|
interface AXInfoPanelQuickAction {
|
|
5411
5551
|
id: string;
|
|
@@ -5416,6 +5556,7 @@ interface AXInfoPanelQuickAction {
|
|
|
5416
5556
|
declare class AXConversationInfoPanelComponent extends AXClosableComponent implements OnInit, OnDestroy {
|
|
5417
5557
|
private readonly toastService;
|
|
5418
5558
|
readonly translation: AXTranslationService;
|
|
5559
|
+
private readonly platform;
|
|
5419
5560
|
private readonly injectedConversationService;
|
|
5420
5561
|
readonly onClosed: _angular_core.OutputEmitterRef<AXComponentCloseEvent>;
|
|
5421
5562
|
conversation: AXConversation;
|
|
@@ -5427,6 +5568,10 @@ declare class AXConversationInfoPanelComponent extends AXClosableComponent imple
|
|
|
5427
5568
|
readonly mediaViewLoader: () => Promise<typeof _acorex_components_conversation.AXConversationInfoMediaViewComponent>;
|
|
5428
5569
|
readonly conversationMessages: _angular_core.WritableSignal<AXConversationMessage[]>;
|
|
5429
5570
|
readonly loadingMessages: _angular_core.WritableSignal<boolean>;
|
|
5571
|
+
readonly loadingMoreMedia: _angular_core.WritableSignal<boolean>;
|
|
5572
|
+
readonly mediaHasMore: _angular_core.WritableSignal<boolean>;
|
|
5573
|
+
private mediaNextPage;
|
|
5574
|
+
private mediaNextCursor;
|
|
5430
5575
|
readonly memberSearchQuery: _angular_core.WritableSignal<string>;
|
|
5431
5576
|
archived: boolean;
|
|
5432
5577
|
private initialNotifications;
|
|
@@ -5435,11 +5580,11 @@ declare class AXConversationInfoPanelComponent extends AXClosableComponent imple
|
|
|
5435
5580
|
editAvatar: string;
|
|
5436
5581
|
private groupTitleSaveTimer;
|
|
5437
5582
|
private groupDetailsSaveInFlight;
|
|
5438
|
-
readonly backgroundPresets:
|
|
5439
|
-
id: string;
|
|
5583
|
+
readonly backgroundPresets: {
|
|
5440
5584
|
label: string;
|
|
5441
|
-
|
|
5442
|
-
|
|
5585
|
+
id: string;
|
|
5586
|
+
value: AXConversationMessageListThemeBackground;
|
|
5587
|
+
}[];
|
|
5443
5588
|
readonly heroSubtitle: _angular_core.Signal<string>;
|
|
5444
5589
|
readonly liveConversation: _angular_core.Signal<AXConversation>;
|
|
5445
5590
|
readonly isConversationMuted: _angular_core.Signal<boolean>;
|
|
@@ -5449,6 +5594,7 @@ declare class AXConversationInfoPanelComponent extends AXClosableComponent imple
|
|
|
5449
5594
|
readonly filteredMembers: _angular_core.Signal<AXConversationParticipant[]>;
|
|
5450
5595
|
ngOnInit(): void;
|
|
5451
5596
|
private loadConversationMessages;
|
|
5597
|
+
loadMoreMedia(): Promise<void>;
|
|
5452
5598
|
isPrivateConversation(): boolean;
|
|
5453
5599
|
isGroupConversation(): boolean;
|
|
5454
5600
|
membersSectionTitle(): string;
|
|
@@ -5471,9 +5617,14 @@ declare class AXConversationInfoPanelComponent extends AXClosableComponent imple
|
|
|
5471
5617
|
onGroupTitleChange(value: string): void;
|
|
5472
5618
|
onGroupAvatarChange(value: string): void;
|
|
5473
5619
|
private persistGroupDetails;
|
|
5474
|
-
isBackgroundSelected(
|
|
5475
|
-
|
|
5620
|
+
isBackgroundSelected(preset: {
|
|
5621
|
+
id: string;
|
|
5622
|
+
value: AXConversationMessageListThemeBackground;
|
|
5623
|
+
}): boolean;
|
|
5624
|
+
presetBackgroundPreview(preset: AXConversationMessageListThemeBackground): string;
|
|
5625
|
+
applyMessageListBackground(value: AXConversationMessageListBackground): Promise<void>;
|
|
5476
5626
|
getBackgroundAriaLabel(label: string): string;
|
|
5627
|
+
private translateBackgroundPresetLabel;
|
|
5477
5628
|
ngOnDestroy(): void;
|
|
5478
5629
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationInfoPanelComponent, never>;
|
|
5479
5630
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXConversationInfoPanelComponent, "ax-conversation-info-panel", never, {}, { "onClosed": "onClosed"; }, never, never, true, never>;
|
|
@@ -5486,6 +5637,9 @@ declare class AXConversationInfoMediaViewComponent {
|
|
|
5486
5637
|
readonly messages: _angular_core.InputSignal<AXConversationMessage[]>;
|
|
5487
5638
|
readonly conversation: _angular_core.InputSignal<AXConversation>;
|
|
5488
5639
|
readonly conversationServiceInput: _angular_core.InputSignal<AXConversationService>;
|
|
5640
|
+
readonly hasMoreMedia: _angular_core.InputSignal<boolean>;
|
|
5641
|
+
readonly loadingMoreMedia: _angular_core.InputSignal<boolean>;
|
|
5642
|
+
readonly onLoadMoreMedia: _angular_core.InputSignal<() => void | Promise<void>>;
|
|
5489
5643
|
/** Callback for lazy outlet wiring (alternative to the `back` output). */
|
|
5490
5644
|
readonly onBack: _angular_core.InputSignal<() => void>;
|
|
5491
5645
|
readonly back: _angular_core.OutputEmitterRef<void>;
|
|
@@ -5504,8 +5658,9 @@ declare class AXConversationInfoMediaViewComponent {
|
|
|
5504
5658
|
};
|
|
5505
5659
|
formatTimestamp(message: AXConversationMessage): string;
|
|
5506
5660
|
handleBack(): void;
|
|
5661
|
+
onScrollThreshold(edge: 'top' | 'bottom'): void;
|
|
5507
5662
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationInfoMediaViewComponent, never>;
|
|
5508
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXConversationInfoMediaViewComponent, "ax-conversation-info-media-view", never, { "category": { "alias": "category"; "required": true; "isSignal": true; }; "messages": { "alias": "messages"; "required": true; "isSignal": true; }; "conversation": { "alias": "conversation"; "required": true; "isSignal": true; }; "conversationServiceInput": { "alias": "conversationService"; "required": true; "isSignal": true; }; "onBack": { "alias": "onBack"; "required": false; "isSignal": true; }; }, { "back": "back"; }, never, never, true, never>;
|
|
5663
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXConversationInfoMediaViewComponent, "ax-conversation-info-media-view", never, { "category": { "alias": "category"; "required": true; "isSignal": true; }; "messages": { "alias": "messages"; "required": true; "isSignal": true; }; "conversation": { "alias": "conversation"; "required": true; "isSignal": true; }; "conversationServiceInput": { "alias": "conversationService"; "required": true; "isSignal": true; }; "hasMoreMedia": { "alias": "hasMoreMedia"; "required": false; "isSignal": true; }; "loadingMoreMedia": { "alias": "loadingMoreMedia"; "required": false; "isSignal": true; }; "onLoadMoreMedia": { "alias": "onLoadMoreMedia"; "required": false; "isSignal": true; }; "onBack": { "alias": "onBack"; "required": false; "isSignal": true; }; }, { "back": "back"; }, never, never, true, never>;
|
|
5509
5664
|
}
|
|
5510
5665
|
|
|
5511
5666
|
declare class AXConversationInfoBarSearchComponent {
|
|
@@ -5513,6 +5668,7 @@ declare class AXConversationInfoBarSearchComponent {
|
|
|
5513
5668
|
private readonly destroyRef;
|
|
5514
5669
|
private readonly infoBarService;
|
|
5515
5670
|
private readonly conversationService;
|
|
5671
|
+
private readonly config;
|
|
5516
5672
|
/** Conversation input */
|
|
5517
5673
|
readonly conversation: _angular_core.InputSignal<AXConversation>;
|
|
5518
5674
|
/** Service input */
|
|
@@ -5523,13 +5679,14 @@ declare class AXConversationInfoBarSearchComponent {
|
|
|
5523
5679
|
readonly resultsCount: _angular_core.Signal<number>;
|
|
5524
5680
|
/** Current index from service */
|
|
5525
5681
|
readonly currentIndex: _angular_core.Signal<number>;
|
|
5526
|
-
|
|
5527
|
-
|
|
5682
|
+
private readonly searchResults;
|
|
5683
|
+
private searchDebounceTimer?;
|
|
5528
5684
|
private scrollTimer?;
|
|
5685
|
+
private searchRequestId;
|
|
5529
5686
|
constructor();
|
|
5530
5687
|
/** Handle search input change */
|
|
5531
5688
|
onSearchChange(value: string): void;
|
|
5532
|
-
/** Perform search in messages */
|
|
5689
|
+
/** Perform server-side search in messages */
|
|
5533
5690
|
private performSearch;
|
|
5534
5691
|
/** Navigate to next result */
|
|
5535
5692
|
onNext(): void;
|
|
@@ -5734,11 +5891,6 @@ declare function syncPlaybackInfoBarBanner(infoBar: AXConversationInfoBarService
|
|
|
5734
5891
|
forceOpen?: boolean;
|
|
5735
5892
|
}): void;
|
|
5736
5893
|
|
|
5737
|
-
/**
|
|
5738
|
-
* Shared layout tokens for conversation message renderers.
|
|
5739
|
-
*/
|
|
5740
|
-
declare const AX_CONVERSATION_RENDERER_SHARED_STYLES = "\n :host {\n display: block;\n max-width: 100%;\n }\n\n .ax-conversation-msg {\n display: flex;\n flex-direction: column;\n gap: 0.375rem;\n }\n\n .ax-conversation-msg__stack {\n display: flex;\n flex-direction: column;\n gap: 0.375rem;\n }\n\n .ax-conversation-msg__grid {\n display: grid;\n gap: 2px;\n width: 100%;\n border-radius: var(--ax-sys-border-radius, 0.5rem);\n overflow: hidden;\n background: rgb(var(--ax-sys-color-border-light-surface));\n }\n\n .ax-conversation-msg__grid--single {\n grid-template-columns: 1fr;\n }\n\n .ax-conversation-msg__grid--single ::ng-deep .ax-conversation-image-attachment {\n max-height: min(50dvh, 20rem);\n }\n\n .ax-conversation-msg__grid--dual {\n grid-template-columns: repeat(2, 1fr);\n }\n\n .ax-conversation-msg__grid--multi {\n grid-template-columns: repeat(3, 1fr);\n grid-auto-rows: 10rem;\n }\n\n @container (max-width: 380px) {\n .ax-conversation-msg__grid--multi {\n grid-template-columns: repeat(2, 1fr);\n grid-auto-rows: 10rem;\n }\n }\n\n .ax-conversation-msg__caption {\n margin: 0;\n padding: 0 0.125rem;\n font-size: 0.8125rem;\n line-height: 1.4;\n word-break: break-word;\n opacity: 0.88;\n }\n\n /* Flush layout: media fills the message bubble edge-to-edge (image / video). */\n .ax-conversation-msg--flush {\n width: 100%;\n max-width: 100%;\n gap: 0;\n }\n\n .ax-conversation-msg--flush .ax-conversation-msg__caption {\n padding: 0.375rem 0.625rem 0;\n }\n\n .ax-conversation-msg--flush .ax-conversation-msg__grid {\n border-radius: 0;\n background: transparent;\n }\n\n .ax-conversation-msg--flush .ax-conversation-msg__stack {\n gap: 2px;\n }\n\n .ax-conversation-msg--flush ::ng-deep .ax-conversation-video {\n border-radius: 0;\n }\n\n .ax-conversation-msg__card {\n border-radius: var(--ax-sys-border-radius, 0.5rem);\n border: 1px solid rgb(var(--ax-sys-color-border-light-surface));\n background: rgb(var(--ax-sys-color-surface));\n overflow: hidden;\n }\n";
|
|
5741
|
-
|
|
5742
5894
|
declare class AXConversationVideoAttachmentComponent {
|
|
5743
5895
|
readonly item: _angular_core.InputSignal<AXConversationVideoMediaItem>;
|
|
5744
5896
|
readonly playingChange: _angular_core.OutputEmitterRef<boolean>;
|
|
@@ -6101,6 +6253,28 @@ declare const AX_CONVERSATION_TAB_BOT: AXConversationTab;
|
|
|
6101
6253
|
declare const AX_CONVERSATION_TAB_UNREAD: AXConversationTab;
|
|
6102
6254
|
declare const AX_CONVERSATION_TAB_ARCHIVED: AXConversationTab;
|
|
6103
6255
|
|
|
6256
|
+
declare class AXConversationDefaultConversationAvatarComponent {
|
|
6257
|
+
private readonly conversationService;
|
|
6258
|
+
private readonly userAvatarComponent;
|
|
6259
|
+
readonly conversationId: _angular_core.InputSignal<string>;
|
|
6260
|
+
readonly size: _angular_core.InputSignal<number>;
|
|
6261
|
+
private readonly currentUserId;
|
|
6262
|
+
private readonly conversation;
|
|
6263
|
+
readonly peerUserId: _angular_core.Signal<string>;
|
|
6264
|
+
readonly useUserAvatar: _angular_core.Signal<_angular_core.Type<_acorex_components_conversation.AXConversationUserAvatarComponent>>;
|
|
6265
|
+
readonly userAvatarInputs: _angular_core.Signal<{
|
|
6266
|
+
userId: string;
|
|
6267
|
+
size: number;
|
|
6268
|
+
displayName: string;
|
|
6269
|
+
displayAvatar: string;
|
|
6270
|
+
displayIcon: string;
|
|
6271
|
+
}>;
|
|
6272
|
+
readonly fallbackDisplay: _angular_core.Signal<_acorex_components_conversation.AXConversationAvatarDisplay>;
|
|
6273
|
+
readonly fallbackInitials: _angular_core.Signal<string>;
|
|
6274
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationDefaultConversationAvatarComponent, never>;
|
|
6275
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXConversationDefaultConversationAvatarComponent, "ax-conversation-default-conversation-avatar", never, { "conversationId": { "alias": "conversationId"; "required": true; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
6276
|
+
}
|
|
6277
|
+
|
|
6104
6278
|
/**
|
|
6105
6279
|
* Configuration options for conversation module
|
|
6106
6280
|
*/
|
|
@@ -6132,7 +6306,7 @@ declare class AXConversationModule {
|
|
|
6132
6306
|
*/
|
|
6133
6307
|
static forChild(options?: Omit<AXConversationOptions, 'userApi' | 'conversationApi' | 'messageApi' | 'realtimeApi'>): ModuleWithProviders<AXConversationModule>;
|
|
6134
6308
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationModule, never>;
|
|
6135
|
-
static ɵmod: _angular_core.ɵɵNgModuleDeclaration<AXConversationModule, never, [typeof i1.CommonModule, typeof i2.FormsModule, typeof AXConversationContainerComponent, typeof AXConversationSidebarComponent, typeof AXConversationInfoBarComponent, typeof AXConversationMessageListComponent, typeof AXConversationComposerComponent, typeof AXConversationInfiniteScrollDirective], [typeof AXConversationContainerComponent, typeof AXConversationSidebarComponent, typeof AXConversationInfoBarComponent, typeof AXConversationMessageListComponent, typeof AXConversationComposerComponent, typeof AXConversationInfiniteScrollDirective]>;
|
|
6309
|
+
static ɵmod: _angular_core.ɵɵNgModuleDeclaration<AXConversationModule, never, [typeof i1.CommonModule, typeof i2.FormsModule, typeof AXConversationContainerComponent, typeof AXConversationSidebarComponent, typeof AXConversationInfoBarComponent, typeof AXConversationMessageListComponent, typeof AXConversationComposerComponent, typeof AXConversationInfiniteScrollDirective, typeof AXConversationDefaultConversationAvatarComponent], [typeof AXConversationContainerComponent, typeof AXConversationSidebarComponent, typeof AXConversationInfoBarComponent, typeof AXConversationMessageListComponent, typeof AXConversationComposerComponent, typeof AXConversationInfiniteScrollDirective]>;
|
|
6136
6310
|
static ɵinj: _angular_core.ɵɵInjectorDeclaration<AXConversationModule>;
|
|
6137
6311
|
}
|
|
6138
6312
|
/**
|
|
@@ -6169,27 +6343,69 @@ interface AXConversationAvatarDisplay {
|
|
|
6169
6343
|
avatar?: string;
|
|
6170
6344
|
icon?: string;
|
|
6171
6345
|
}
|
|
6346
|
+
/** Conversation types that resolve a single peer participant for viewer-scoped avatar/title. */
|
|
6347
|
+
declare const AX_CONVERSATION_PEER_AVATAR_TYPES: ReadonlySet<AXConversationType>;
|
|
6348
|
+
/**
|
|
6349
|
+
* Other participant in a peer-scoped conversation (excludes the current viewer).
|
|
6350
|
+
* Applies to private 1:1 and bot assist chats with exactly one non-viewer participant.
|
|
6351
|
+
*/
|
|
6352
|
+
declare function resolveConversationPeerUserId(conversation: AXConversation, currentUserId?: string): string | undefined;
|
|
6172
6353
|
/** Other participant in a private chat (excludes the current user). */
|
|
6173
6354
|
declare function resolvePrivatePeerUserId(conversation: AXConversation, currentUserId?: string): string | undefined;
|
|
6174
|
-
/**
|
|
6355
|
+
/** Peer participant for private and bot conversations. */
|
|
6356
|
+
declare function resolveConversationPeerParticipant(conversation: AXConversation, currentUserId?: string): AXConversationParticipant | undefined;
|
|
6357
|
+
/** Whether `auto` kind should render a registered user avatar for this conversation. */
|
|
6175
6358
|
declare function shouldUseUserAvatarForConversation(conversation: AXConversation, currentUserId?: string): boolean;
|
|
6176
6359
|
declare function resolveUserAvatarDisplay(userId: string, conversation: AXConversation | undefined, message?: AXConversationMessage): AXConversationAvatarDisplay;
|
|
6177
6360
|
declare function resolveConversationAvatarDisplay(conversation: AXConversation, currentUserId?: string): AXConversationAvatarDisplay;
|
|
6178
6361
|
|
|
6362
|
+
interface AXConversationMessageListBackgroundPreset {
|
|
6363
|
+
id: string;
|
|
6364
|
+
value: AXConversationMessageListThemeBackground;
|
|
6365
|
+
}
|
|
6366
|
+
/** Library default when no per-conversation or global background is set. */
|
|
6367
|
+
declare const AX_CONVERSATION_DEFAULT_MESSAGE_LIST_THEME_BACKGROUND: AXConversationMessageListThemeBackground;
|
|
6368
|
+
/** Predefined chat-area backgrounds for the info panel (light + dark variants). */
|
|
6369
|
+
declare const AX_CONVERSATION_MESSAGE_LIST_BACKGROUND_PRESETS: AXConversationMessageListBackgroundPreset[];
|
|
6370
|
+
declare const AX_CONVERSATION_DEFAULT_MESSAGE_LIST_BACKGROUND_PRESET_ID = "solid-default";
|
|
6371
|
+
|
|
6372
|
+
/** Subtle chat-area wash when `messageListBackground` is not set (theme-aware). */
|
|
6373
|
+
declare const AX_CONVERSATION_DEFAULT_MESSAGE_LIST_BACKGROUND: string;
|
|
6374
|
+
declare function isMessageListThemeBackground(value: unknown): value is AXConversationMessageListThemeBackground;
|
|
6375
|
+
/** Pick the raw CSS string for the active theme; `undefined` when unset. */
|
|
6376
|
+
declare function resolveMessageListBackgroundRaw(value: AXConversationMessageListBackground | undefined, isDark: boolean): string | undefined;
|
|
6377
|
+
/** Turn bare `https://...` or `/path` into valid CSS `background` for images. */
|
|
6378
|
+
declare function normalizeMessageListBackgroundValue(raw: string): string;
|
|
6379
|
+
/** Resolve config/metadata background for the active theme, with library default fallback. */
|
|
6380
|
+
declare function resolveMessageListBackgroundStyle(value: AXConversationMessageListBackground | undefined, isDark: boolean): string;
|
|
6381
|
+
/** Whether two stored backgrounds represent the same preset (supports legacy string values). */
|
|
6382
|
+
declare function isSameMessageListBackground(a: AXConversationMessageListBackground | undefined, b: AXConversationMessageListThemeBackground, isDark: boolean): boolean;
|
|
6383
|
+
|
|
6384
|
+
/** Default Font Awesome icon for group conversations without a custom avatar image. */
|
|
6385
|
+
declare const AX_CONVERSATION_DEFAULT_GROUP_ICON = "fa-light fa-users";
|
|
6386
|
+
/** Default Font Awesome icon for private/bot conversations without a custom avatar image. */
|
|
6387
|
+
declare const AX_CONVERSATION_DEFAULT_USER_ICON = "fa-light fa-user";
|
|
6179
6388
|
/** True when the stored title is a placeholder, not a user-defined name. */
|
|
6180
6389
|
declare function isGenericPrivateConversationTitle(title: string | undefined): boolean;
|
|
6390
|
+
/**
|
|
6391
|
+
* Find an existing private 1:1 conversation between the current user and a peer.
|
|
6392
|
+
* Matches conversations with exactly those two participants.
|
|
6393
|
+
*/
|
|
6394
|
+
declare function findExistingPrivateConversation(conversations: AXConversation[], currentUserId: string, peerUserId: string): AXConversation | undefined;
|
|
6181
6395
|
/** Other participant in a private 1v1 chat (excludes the current viewer). */
|
|
6182
6396
|
declare function resolvePrivatePeerParticipant(conversation: AXConversation, currentUserId?: string): AXConversationParticipant | undefined;
|
|
6183
6397
|
/**
|
|
6184
6398
|
* Resolves the display title for the current viewer.
|
|
6185
|
-
* Private
|
|
6399
|
+
* Private and bot peer-scoped chats show the other participant's name when no custom title is set.
|
|
6186
6400
|
*/
|
|
6187
6401
|
declare function resolveConversationTitleForViewer(conversation: AXConversation, currentUserId?: string): string;
|
|
6188
6402
|
/**
|
|
6189
|
-
* Returns a viewer-scoped copy of a conversation with dynamic
|
|
6403
|
+
* Returns a viewer-scoped copy of a conversation with dynamic peer title/avatar/icon.
|
|
6190
6404
|
* Does not mutate the source object.
|
|
6191
6405
|
*/
|
|
6192
6406
|
declare function resolveConversationForViewer(conversation: AXConversation, currentUserId?: string): AXConversation;
|
|
6407
|
+
/** Whether message reactions are enabled for a conversation. Defaults to `true` when omitted. */
|
|
6408
|
+
declare function isConversationReactionsEnabled(conversation?: AXConversation | null): boolean;
|
|
6193
6409
|
|
|
6194
6410
|
/** Resolves typed `profile`, falling back to legacy `metadata.profile`. */
|
|
6195
6411
|
declare function resolveParticipantProfile(participant?: AXConversationParticipant): AXConversationUserProfile;
|
|
@@ -6231,6 +6447,13 @@ declare class AXConversationMessageUtilsService {
|
|
|
6231
6447
|
* Font Awesome icon class(es) for a conversation when there is no avatar image.
|
|
6232
6448
|
*/
|
|
6233
6449
|
static getConversationAvatarIcon(conversation: AXConversation): string | undefined;
|
|
6450
|
+
/**
|
|
6451
|
+
* Font Awesome icon for a participant when there is no avatar image.
|
|
6452
|
+
*/
|
|
6453
|
+
static getParticipantAvatarIcon(participant?: {
|
|
6454
|
+
avatar?: string;
|
|
6455
|
+
icon?: string;
|
|
6456
|
+
}): string | undefined;
|
|
6234
6457
|
/**
|
|
6235
6458
|
* Get sender name from message
|
|
6236
6459
|
*/
|
|
@@ -6785,5 +7008,5 @@ declare function getErrorMessage(code: string, params?: Record<string, string |
|
|
|
6785
7008
|
*/
|
|
6786
7009
|
type AXConversationErrorCode = typeof AX_CONVERSATION_MESSAGE_ERRORS[keyof typeof AX_CONVERSATION_MESSAGE_ERRORS]['code'] | typeof AX_CONVERSATION_FILE_ERRORS[keyof typeof AX_CONVERSATION_FILE_ERRORS]['code'] | typeof AX_CONVERSATION_USER_ERRORS[keyof typeof AX_CONVERSATION_USER_ERRORS]['code'] | typeof AX_CONVERSATION_ERRORS[keyof typeof AX_CONVERSATION_ERRORS]['code'] | typeof AX_CONVERSATION_CONNECTION_ERRORS[keyof typeof AX_CONVERSATION_CONNECTION_ERRORS]['code'] | typeof AX_CONVERSATION_LOCATION_ERRORS[keyof typeof AX_CONVERSATION_LOCATION_ERRORS]['code'] | typeof AX_CONVERSATION_URL_ERRORS[keyof typeof AX_CONVERSATION_URL_ERRORS]['code'];
|
|
6787
7010
|
|
|
6788
|
-
export { AXConversationAiResponderService, AXConversationApi, AXConversationAudioAttachmentComponent, AXConversationAudioFileTypeProvider, AXConversationAudioPickerComponent, AXConversationAudioRendererComponent, AXConversationBaseRegistry, AXConversationComposerActionRegistry, AXConversationComposerComponent, AXConversationComposerFileTypesProvider, AXConversationComposerPopupComponent, AXConversationComposerService, AXConversationComposerTabRegistry, AXConversationContainerComponent, AXConversationContainerDirective, AXConversationDateUtilsService, AXConversationEmojiTabComponent, AXConversationErrorHandlerService, AXConversationFallbackRendererComponent, AXConversationFileAttachmentComponent, AXConversationFileFileTypeProvider, AXConversationFilePickerComponent, AXConversationFileRendererComponent, AXConversationForwardMessageDialogComponent, AXConversationImageAttachmentComponent, AXConversationImageFileTypeProvider, AXConversationImagePickerComponent, AXConversationImageRendererComponent, AXConversationIndexedDbConversationApi, AXConversationIndexedDbMessageAiApi, AXConversationIndexedDbMessageApi, AXConversationIndexedDbRealtimeApi, AXConversationIndexedDbStorage, AXConversationIndexedDbStores, AXConversationIndexedDbUserApi, AXConversationInfiniteScrollDirective, AXConversationInfoBarActionRegistry, AXConversationInfoBarComponent, AXConversationInfoBarSearchComponent, AXConversationInfoBarService, AXConversationInfoMediaViewComponent, AXConversationInfoPanelComponent, AXConversationItemActionRegistry, AXConversationLocationPickerComponent, AXConversationLocationRendererComponent, AXConversationMediaPlaybackInfoBarBannerComponent, AXConversationMessageActionRegistry, AXConversationMessageApi, AXConversationMessageListComponent, AXConversationMessageListNoActiveDefaultComponent, AXConversationMessageListService, AXConversationMessageRendererCopyHostComponent, AXConversationMessageRendererRegistry, AXConversationMessageRendererStateComponent, AXConversationMessageUtilsService, AXConversationModule, AXConversationNewDialogComponent, AXConversationPickerCaptionComponent, AXConversationPickerEmptyComponent, AXConversationPickerFooterComponent, AXConversationPickerHeaderComponent, AXConversationPickerShellComponent, AXConversationPickerToolbarComponent, AXConversationRealtimeApi, AXConversationRegistryService, AXConversationService, AXConversationSharedStorage, AXConversationSidebarComponent, AXConversationSidebarService, AXConversationStickerRendererComponent, AXConversationStickerTabComponent, AXConversationSystemRendererComponent, AXConversationTabRegistry, AXConversationTextRendererComponent, AXConversationUserApi, AXConversationVideoAttachmentComponent, AXConversationVideoFileTypeProvider, AXConversationVideoPickerComponent, AXConversationVideoRendererComponent, AXConversationVoiceFileTypeProvider, AXConversationVoiceRecorderComponent, AXConversationVoiceRendererComponent,
|
|
6789
|
-
export type { AXConversation, AXConversationAiResponderConfig, AXConversationApiError, AXConversationAudioMediaItem, AXConversationAudioPayload, AXConversationAvatarComponents, AXConversationAvatarDisplay, AXConversationAvatarKind, AXConversationBlockReportReason, AXConversationCallEvent, AXConversationChatCursorKind, AXConversationCleanupPickerUploadsOptions, AXConversationComposerAction, AXConversationComposerActionComponent, AXConversationComposerActionContext, AXConversationComposerActiveComponent, AXConversationComposerPickerUploadItem, AXConversationComposerTab, AXConversationComposerTabFeature, AXConversationConfig, AXConversationConnectionEvent, AXConversationConnectionOptions, AXConversationConnectionStatus, AXConversationConversationAvatarComponent, AXConversationCreateData, AXConversationDeleteMessageCommand, AXConversationDropdownMenuItem, AXConversationEditMessageCommand, AXConversationError, AXConversationErrorCode, AXConversationErrorHandlerConfig, AXConversationErrorMessage, AXConversationErrorSeverity, AXConversationFeatures, AXConversationFileMediaItem, AXConversationFilePayload, AXConversationFilter, AXConversationFilters, AXConversationGroupedReaction, AXConversationImageMediaItem, AXConversationImagePayload, AXConversationIndexedDbMediaRecord, AXConversationInfoBarAction, AXConversationInfoBarActionComponent, AXConversationInfoBarActionContext, AXConversationInfoBarActiveBanner, AXConversationInfoBarActiveComponent, AXConversationInfoProfileField, AXConversationItemAction, AXConversationItemActionContext, AXConversationLink, AXConversationLinkPreview, AXConversationLoadMessagesResult, AXConversationLocationPayload, AXConversationMediaCategory, AXConversationMediaCategoryId, AXConversationMediaGalleryTile, AXConversationMediaItemFields,
|
|
7011
|
+
export { AXConversationAiResponderService, AXConversationApi, AXConversationApiLoggerService, AXConversationAudioAttachmentComponent, AXConversationAudioFileTypeProvider, AXConversationAudioPickerComponent, AXConversationAudioRendererComponent, AXConversationBaseRegistry, AXConversationComposerActionRegistry, AXConversationComposerComponent, AXConversationComposerFileTypesProvider, AXConversationComposerPopupComponent, AXConversationComposerService, AXConversationComposerTabRegistry, AXConversationContainerComponent, AXConversationContainerDirective, AXConversationDateUtilsService, AXConversationEmojiTabComponent, AXConversationErrorHandlerService, AXConversationFallbackRendererComponent, AXConversationFileAttachmentComponent, AXConversationFileFileTypeProvider, AXConversationFilePickerComponent, AXConversationFileRendererComponent, AXConversationForwardMessageDialogComponent, AXConversationImageAttachmentComponent, AXConversationImageFileTypeProvider, AXConversationImagePickerComponent, AXConversationImageRendererComponent, AXConversationIndexedDbConversationApi, AXConversationIndexedDbMessageAiApi, AXConversationIndexedDbMessageApi, AXConversationIndexedDbRealtimeApi, AXConversationIndexedDbStorage, AXConversationIndexedDbStores, AXConversationIndexedDbUserApi, AXConversationInfiniteScrollDirective, AXConversationInfoBarActionRegistry, AXConversationInfoBarComponent, AXConversationInfoBarSearchComponent, AXConversationInfoBarService, AXConversationInfoMediaViewComponent, AXConversationInfoPanelComponent, AXConversationItemActionRegistry, AXConversationLocationPickerComponent, AXConversationLocationRendererComponent, AXConversationMediaPlaybackInfoBarBannerComponent, AXConversationMessageActionRegistry, AXConversationMessageApi, AXConversationMessageListComponent, AXConversationMessageListNoActiveDefaultComponent, AXConversationMessageListService, AXConversationMessageRendererCopyHostComponent, AXConversationMessageRendererRegistry, AXConversationMessageRendererStateComponent, AXConversationMessageUtilsService, AXConversationModule, AXConversationNewDialogComponent, AXConversationPickerCaptionComponent, AXConversationPickerEmptyComponent, AXConversationPickerFooterComponent, AXConversationPickerHeaderComponent, AXConversationPickerShellComponent, AXConversationPickerToolbarComponent, AXConversationRealtimeApi, AXConversationRegistryService, AXConversationService, AXConversationSharedStorage, AXConversationSidebarComponent, AXConversationSidebarService, AXConversationStickerRendererComponent, AXConversationStickerTabComponent, AXConversationSystemRendererComponent, AXConversationTabRegistry, AXConversationTextRendererComponent, AXConversationUserApi, AXConversationVideoAttachmentComponent, AXConversationVideoFileTypeProvider, AXConversationVideoPickerComponent, AXConversationVideoRendererComponent, AXConversationVoiceFileTypeProvider, AXConversationVoiceRecorderComponent, AXConversationVoiceRendererComponent, AX_CONVERSATION_AI_API_KEY, AX_CONVERSATION_AUDIO_CATALOG, AX_CONVERSATION_AUDIO_PRESENTATION, AX_CONVERSATION_AUDIO_RENDERER, AX_CONVERSATION_BUILTIN_COMPOSER_TABS, AX_CONVERSATION_COMPOSER_AUDIO_ACTION, AX_CONVERSATION_COMPOSER_EMOJI_ACTION, AX_CONVERSATION_COMPOSER_EMOJI_TAB, AX_CONVERSATION_COMPOSER_FILE_ACTION, AX_CONVERSATION_COMPOSER_IMAGE_ACTION, AX_CONVERSATION_COMPOSER_LOCATION_ACTION, AX_CONVERSATION_COMPOSER_STICKER_TAB, AX_CONVERSATION_COMPOSER_VIDEO_ACTION, AX_CONVERSATION_COMPOSER_VOICE_RECORDING_ACTION, AX_CONVERSATION_CONFIG, AX_CONVERSATION_CONNECTION_ERRORS, AX_CONVERSATION_CONVERSATION_AVATAR_COMPONENT, AX_CONVERSATION_CURSOR_PREFIX, AX_CONVERSATION_DEFAULT_COMPOSER_ACTIONS, AX_CONVERSATION_DEFAULT_COMPOSER_TABS, AX_CONVERSATION_DEFAULT_CONVERSATION_ITEM_ACTIONS, AX_CONVERSATION_DEFAULT_CONVERSATION_TABS, AX_CONVERSATION_DEFAULT_GROUP_ICON, AX_CONVERSATION_DEFAULT_INFO_BAR_ACTIONS, AX_CONVERSATION_DEFAULT_MESSAGE_ACTIONS, AX_CONVERSATION_DEFAULT_MESSAGE_LIST_BACKGROUND, AX_CONVERSATION_DEFAULT_MESSAGE_LIST_BACKGROUND_PRESET_ID, AX_CONVERSATION_DEFAULT_MESSAGE_LIST_THEME_BACKGROUND, AX_CONVERSATION_DEFAULT_MESSAGE_RENDERERS, AX_CONVERSATION_DEFAULT_USER_ICON, AX_CONVERSATION_DEMO_CONVERSATION_IDS, AX_CONVERSATION_ERRORS, AX_CONVERSATION_ERROR_HANDLER_CONFIG, AX_CONVERSATION_ERROR_MESSAGES, AX_CONVERSATION_FALLBACK_RENDERER, AX_CONVERSATION_FILE_CATALOG, AX_CONVERSATION_FILE_ERRORS, AX_CONVERSATION_FILE_PRESENTATION, AX_CONVERSATION_FILE_RENDERER, AX_CONVERSATION_FILE_TYPES_READY, AX_CONVERSATION_IMAGE_CATALOG, AX_CONVERSATION_IMAGE_PRESENTATION, AX_CONVERSATION_IMAGE_RENDERER, AX_CONVERSATION_INFO_BAR_ARCHIVE_ACTION, AX_CONVERSATION_INFO_BAR_BLOCK_ACTION, AX_CONVERSATION_INFO_BAR_DELETE_ACTION, AX_CONVERSATION_INFO_BAR_DIVIDER, AX_CONVERSATION_INFO_BAR_MUTE_ACTION, AX_CONVERSATION_INFO_BAR_SEARCH_ACTION, AX_CONVERSATION_ITEM_BLOCK_ACTION, AX_CONVERSATION_ITEM_DELETE_ACTION, AX_CONVERSATION_ITEM_DIVIDER, AX_CONVERSATION_ITEM_MARK_READ_ACTION, AX_CONVERSATION_ITEM_MUTE_ACTION, AX_CONVERSATION_ITEM_PIN_ACTION, AX_CONVERSATION_LOCATION_ERRORS, AX_CONVERSATION_LOCATION_RENDERER, AX_CONVERSATION_MESSAGE_CURSOR_PREFIX, AX_CONVERSATION_MESSAGE_DELETE_ACTION, AX_CONVERSATION_MESSAGE_EDIT_ACTION, AX_CONVERSATION_MESSAGE_ERRORS, AX_CONVERSATION_MESSAGE_FORWARD_ACTION, AX_CONVERSATION_MESSAGE_LIST_BACKGROUND_PRESETS, AX_CONVERSATION_MESSAGE_REPLY_ACTION, AX_CONVERSATION_MESSAGE_TYPE_FILE_TYPE, AX_CONVERSATION_PEER_AVATAR_TYPES, AX_CONVERSATION_REGISTRY_CONFIG, AX_CONVERSATION_STICKER_API_KEY, AX_CONVERSATION_STICKER_RENDERER, AX_CONVERSATION_SYSTEM_RENDERER, AX_CONVERSATION_TAB_ALL, AX_CONVERSATION_TAB_ARCHIVED, AX_CONVERSATION_TAB_BOT, AX_CONVERSATION_TAB_CHANNELS, AX_CONVERSATION_TAB_GROUPS, AX_CONVERSATION_TAB_PRIVATE, AX_CONVERSATION_TAB_UNREAD, AX_CONVERSATION_TEXT_RENDERER, AX_CONVERSATION_URL_ERRORS, AX_CONVERSATION_USER_AVATAR_COMPONENT, AX_CONVERSATION_USER_ERRORS, AX_CONVERSATION_VIDEO_CATALOG, AX_CONVERSATION_VIDEO_PRESENTATION, AX_CONVERSATION_VIDEO_RENDERER, AX_CONVERSATION_VOICE_CATALOG, AX_CONVERSATION_VOICE_PRESENTATION, AX_CONVERSATION_VOICE_RENDERER, AX_DEFAULT_CONVERSATION_CONFIG, AX_MESSAGE_PAGINATION_CONVERSATION_ID, abortPickerUploads, applyAudioLocalPreview, applyConversationFilters, applyFileLocalPreview, applyLocalPreview, applyVideoLocalPreview, applyVoiceLocalPreview, audioItemFromUpload, axConversationIndexedDbStorage, axConversationSharedStorage, bindMediaRendererContentState, buildMediaGalleryTiles, canShowRendererContentError, cleanupPickerUploads, conversationAudioUtilities, conversationFileUtilities, conversationImageUtilities, conversationVideoUtilities, conversationVoiceUtilities, copyWithFileTypeFallback, createConversationAudioFileType, createConversationFileFileType, createConversationImageFileType, createConversationVideoFileType, createConversationVoiceFileType, createLocalPreviewUrl, createObjectUrl, createPickerDragHandlers, createResolvedMediaUrlSignal, deleteUploadedPickerMedia, dismissComposerPickerHost, encodeConversationCursor, encodeMessageCursor, ensurePaginationDemoData, fetchConversationMediaMessages, fetchConversationMediaPage, fileItemFromUpload, filterMessagesByMediaCategory, filterSupplementalInfoPanelMessages, findExistingPrivateConversation, formatDuration, formatErrorMessage, formatFileByteSize, formatFileSize, formatMediaDuration, formatPickerValidationMessage, getConversationLastActivity, getConversationMediaCategories, getConversationMessagesNewestFirst, getConversationProfileFields, getErrorMessage, getMessageAudioItems, getMessageVideoItems, getPickerCancelUploadLabel, getPrivatePeerParticipant, getSortedConversationsForInbox, inferFileExtensionHintFromMessage, isAttachmentListCategory, isComposerTabEnabled, isConversationReactionsEnabled, isGenericPrivateConversationTitle, isGridMediaCategory, isMessageDeliveryPending, isMessageListThemeBackground, isNonPersistableMediaUrl, isPickerItemReadyToSend, isSameMessageListBackground, isUploadAborted, limitFilesToCapacity, mediaCopyText, mergeAudioUploadResult, mergeFileUploadResult, mergeInfoPanelMessages, mergeUploadResult, mergeVideoUploadResult, mergeVoiceUploadResult, mergeWithDefaults, messageContainsLink, normalizeAllConversationMessageIndexes, normalizeAudioPayload, normalizeFilePayload, normalizeImagePayload, normalizeMessageListBackgroundValue, normalizeMessagePayload, normalizeMessagePayloadAsync, normalizeVideoPayload, notifyMaxFilesCapacityExceeded, notifyPickerValidationErrors, openWithFileType, paginateChatNewestFirst, paginateChatOldestFirst, parseChatCursor, pickDisplayMediaUrl, pickerItemToMediaReference, pickerItemToUploadResult, provideConversation, provideConversationComposerFileTypes, provideConversationFileCatalog, registerChatMessage, reportMediaLoadError, resolveComposerMaxFiles, resolveConversationAvatarDisplay, resolveConversationComposerTabs, resolveConversationForViewer, resolveConversationMessageFileType, resolveConversationPeerParticipant, resolveConversationPeerUserId, resolveConversationTitleForViewer, resolveGalleryImageUrl, resolveImageDisplayUrl, resolveMessageListBackgroundRaw, resolveMessageListBackgroundStyle, resolveParticipantProfile, resolvePersistableMediaUrl, resolvePersistedThumbnailUrl, resolvePrivatePeerParticipant, resolvePrivatePeerUserId, resolveUserAvatarDisplay, resolveVideoThumbnailUrl, revokeObjectUrl, revokePickerBlobPreviews, sanitizeInput, seedPickerInitialFiles, seedSharedStorageInitialData, shouldUseUserAvatarForConversation, sortConversationMessageIds, syncPlaybackInfoBarBanner, toUploaderReference as toMediaItemUploaderReference, toUploaderReference$1 as toUploaderReference, unregisterChatMessage, uploadPickerFile, validateConversationId, validateEmail, validateLatitude, validateLongitude, validateMessagePayload, validateMessageText, validateMessageType, validateUrl, validateUserId, validateUserIds, videoItemFromUpload };
|
|
7012
|
+
export type { AXConversation, AXConversationAiResponderConfig, AXConversationApiError, AXConversationApiLogEntry, AXConversationApiName, AXConversationAudioMediaItem, AXConversationAudioPayload, AXConversationAvatarComponents, AXConversationAvatarDisplay, AXConversationAvatarKind, AXConversationBlockReportReason, AXConversationCallEvent, AXConversationChatCursorKind, AXConversationCleanupPickerUploadsOptions, AXConversationComposerAction, AXConversationComposerActionComponent, AXConversationComposerActionContext, AXConversationComposerActiveComponent, AXConversationComposerPickerUploadItem, AXConversationComposerTab, AXConversationComposerTabFeature, AXConversationConfig, AXConversationConnectionEvent, AXConversationConnectionOptions, AXConversationConnectionStatus, AXConversationConversationAvatarComponent, AXConversationCreateData, AXConversationDeleteMessageCommand, AXConversationDropdownMenuItem, AXConversationEditMessageCommand, AXConversationError, AXConversationErrorCode, AXConversationErrorHandlerConfig, AXConversationErrorMessage, AXConversationErrorSeverity, AXConversationFeatures, AXConversationFileMediaItem, AXConversationFilePayload, AXConversationFilter, AXConversationFilters, AXConversationGroupedReaction, AXConversationImageMediaItem, AXConversationImagePayload, AXConversationIndexedDbMediaRecord, AXConversationInfoBarAction, AXConversationInfoBarActionComponent, AXConversationInfoBarActionContext, AXConversationInfoBarActiveBanner, AXConversationInfoBarActiveComponent, AXConversationInfoProfileField, AXConversationItemAction, AXConversationItemActionContext, AXConversationLink, AXConversationLinkPreview, AXConversationLoadMessagesResult, AXConversationLocationPayload, AXConversationMediaCategory, AXConversationMediaCategoryId, AXConversationMediaGalleryTile, AXConversationMediaItemFields, AXConversationMediaPageResult, AXConversationMention, AXConversationMessage, AXConversationMessageAction, AXConversationMessageActionContext, AXConversationMessageForwardData, AXConversationMessageInfoBarBannerComponent, AXConversationMessageListBackground, AXConversationMessageListBackgroundPreset, AXConversationMessageListEmptyComponent, AXConversationMessageListThemeBackground, AXConversationMessagePayload, AXConversationMessageRenderer, AXConversationMessageRendererCapabilities, AXConversationMessageRendererComponent, AXConversationMessageRendererContentState, AXConversationMessageRendererState, AXConversationMessageSearchFilters, AXConversationMessageStatus, AXConversationMessageType, AXConversationMetadata, AXConversationNotificationEvent, AXConversationOptions, AXConversationPaginatedResult, AXConversationPagination, AXConversationPaginationState, AXConversationParsedChatCursor, AXConversationParticipant, AXConversationParticipantRole, AXConversationParticipantStatus, AXConversationParticipantUpdate, AXConversationPinnedMessage, AXConversationPlaybackBannerInputs, AXConversationPollOption, AXConversationPollPayload, AXConversationPresenceStatus, AXConversationPresenceUpdate, AXConversationReaction, AXConversationReadReceipt, AXConversationRegistryConfiguration, AXConversationRegistryItem, AXConversationSendMessageCommand, AXConversationSendMessageOptions, AXConversationSendMessageUploadSource, AXConversationSettings, AXConversationSettingsUpdate, AXConversationSort, AXConversationStatus, AXConversationStickerPayload, AXConversationSystemPayload, AXConversationTab, AXConversationTextFormat, AXConversationTextPayload, AXConversationType, AXConversationTypingIndicator, AXConversationUpdateData, AXConversationUploadOptions, AXConversationUploaderFilePreview, AXConversationUploaderReference, AXConversationUploaderResult, AXConversationUserAvatarComponent, AXConversationUserProfile, AXConversationUserProfileUpdate, AXConversationUserRole, AXConversationUserSearchFilters, AXConversationValidationResult, AXConversationVideoMediaItem, AXConversationVideoPayload, AXConversationVoicePayload };
|