@acorex/components 22.1.0-next.12 → 22.1.0-next.13
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/{acorex-components-conversation-open-composer-picker-for-files-BuNEjswI.mjs → acorex-components-conversation-open-composer-picker-for-files-DnSW908R.mjs} +6 -19
- package/fesm2022/acorex-components-conversation-open-composer-picker-for-files-DnSW908R.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation.mjs +6769 -9514
- package/fesm2022/acorex-components-conversation.mjs.map +1 -1
- package/package.json +3 -3
- package/types/acorex-components-conversation.d.ts +239 -733
- package/fesm2022/acorex-components-conversation-open-composer-picker-for-files-BuNEjswI.mjs.map +0 -1
|
@@ -1,18 +1,20 @@
|
|
|
1
1
|
import * as _acorex_components_conversation from '@acorex/components/conversation';
|
|
2
2
|
import * as _angular_core from '@angular/core';
|
|
3
|
-
import { OnDestroy, ViewContainerRef, Type, InputSignal, WritableSignal, Signal, Provider, OnInit, EventEmitter, TemplateRef, InjectionToken, ModuleWithProviders } from '@angular/core';
|
|
4
|
-
import { AXComponentCloseEvent, AXHtmlEvent, AXClickEvent, AXDataSource, AXPlacement
|
|
3
|
+
import { OnDestroy, ViewContainerRef, Type, InputSignal, WritableSignal, Signal, Provider, OnInit, EventEmitter, TemplateRef, ElementRef, InjectionToken, ModuleWithProviders } from '@angular/core';
|
|
4
|
+
import { AXComponentCloseEvent, AXHtmlEvent, AXClickEvent, AXDataSource, AXPlacement } from '@acorex/cdk/common';
|
|
5
|
+
import * as _acorex_components_action_sheet from '@acorex/components/action-sheet';
|
|
6
|
+
import { AXActionSheetRef } from '@acorex/components/action-sheet';
|
|
5
7
|
import * as _acorex_components_popup from '@acorex/components/popup';
|
|
6
8
|
import { AXPopupService, AXPopupRef } from '@acorex/components/popup';
|
|
7
9
|
import { AXFileUploadOptions, AXUploadResult, AXUploadReference, AXUploaderService, AXUploaderFileChangeEvent } from '@acorex/cdk/uploader';
|
|
8
10
|
import { AXListComponent } from '@acorex/components/list';
|
|
9
11
|
import * as rxjs from 'rxjs';
|
|
10
|
-
import { Observable
|
|
12
|
+
import { Observable } from 'rxjs';
|
|
11
13
|
import { AXDialogService } from '@acorex/components/dialog';
|
|
12
14
|
import { AXContextMenuOpeningEvent, AXContextMenuItemsClickEvent } from '@acorex/components/menu';
|
|
13
15
|
import { AXBasePageComponent } from '@acorex/components/page';
|
|
14
16
|
import * as _acorex_core_file from '@acorex/core/file';
|
|
15
|
-
import { AXFileTypeInfoProvider, AXFileType,
|
|
17
|
+
import { AXFileTypeInfoProvider, AXFileType, AXFileTypeRegistryService, AXFileService, AXFileTypeExtensionHint, AXFileTypeOpenContext } from '@acorex/core/file';
|
|
16
18
|
import { AXTranslationService } from '@acorex/core/translation';
|
|
17
19
|
import { AXToastService } from '@acorex/components/toast';
|
|
18
20
|
import { AXValidationRuleResult } from '@acorex/core/validation';
|
|
@@ -673,22 +675,14 @@ declare abstract class AXConversationBaseRegistry<T extends AXConversationRegist
|
|
|
673
675
|
protected abstract getRegistryName(): string;
|
|
674
676
|
}
|
|
675
677
|
|
|
676
|
-
/**
|
|
677
|
-
* Active component state in composer
|
|
678
|
-
*/
|
|
679
|
-
interface AXConversationComposerActiveComponent {
|
|
680
|
-
/** Action that triggered this component */
|
|
681
|
-
action: AXConversationComposerAction;
|
|
682
|
-
/** Component to render */
|
|
683
|
-
component?: Type<unknown>;
|
|
684
|
-
/** Lazy loader for the component */
|
|
685
|
-
componentLoader?: () => Promise<Type<unknown>>;
|
|
686
|
-
/** Component inputs */
|
|
687
|
-
inputs?: Record<string, unknown>;
|
|
688
|
-
}
|
|
689
678
|
declare class AXConversationComposerService {
|
|
690
679
|
private readonly conversationService;
|
|
691
680
|
private readonly translation;
|
|
681
|
+
private readonly popupService;
|
|
682
|
+
private readonly actionSheetService;
|
|
683
|
+
private readonly platform;
|
|
684
|
+
private readonly config;
|
|
685
|
+
private readonly _activeActionOverlay;
|
|
692
686
|
private get registry();
|
|
693
687
|
private readonly _replyMessage;
|
|
694
688
|
private readonly _editMessage;
|
|
@@ -696,9 +690,6 @@ declare class AXConversationComposerService {
|
|
|
696
690
|
readonly editMessage: _angular_core.Signal<AXConversationMessage>;
|
|
697
691
|
readonly activeConversation: _angular_core.Signal<_acorex_components_conversation.AXConversation>;
|
|
698
692
|
readonly activeMessages: _angular_core.Signal<AXConversationMessage[]>;
|
|
699
|
-
/** Active component being shown in composer (full-width mode) */
|
|
700
|
-
private readonly _activeComponent;
|
|
701
|
-
readonly activeComponent: _angular_core.Signal<AXConversationComposerActiveComponent>;
|
|
702
693
|
/** Draft text */
|
|
703
694
|
readonly draftText: _angular_core.WritableSignal<string>;
|
|
704
695
|
/** Attachments */
|
|
@@ -746,17 +737,16 @@ declare class AXConversationComposerService {
|
|
|
746
737
|
*/
|
|
747
738
|
clearComposerInput(conversationId?: string): void;
|
|
748
739
|
/**
|
|
749
|
-
*
|
|
740
|
+
* Open a composer action component in a popup (desktop) or action sheet (mobile).
|
|
750
741
|
*/
|
|
751
|
-
|
|
742
|
+
openActionComponent(action: AXConversationComposerAction, inputs?: Record<string, unknown>, options?: {
|
|
743
|
+
toggleable?: boolean;
|
|
744
|
+
initialFiles?: File[];
|
|
745
|
+
}): Promise<void>;
|
|
752
746
|
/**
|
|
753
|
-
* Hide the active
|
|
747
|
+
* Hide the active action overlay.
|
|
754
748
|
*/
|
|
755
749
|
hideComponent(): void;
|
|
756
|
-
/**
|
|
757
|
-
* Toggle component visibility
|
|
758
|
-
*/
|
|
759
|
-
toggleComponent(action: AXConversationComposerAction, inputs?: Record<string, unknown>): void;
|
|
760
750
|
/**
|
|
761
751
|
* Get actions for the active conversation
|
|
762
752
|
*/
|
|
@@ -813,6 +803,15 @@ interface AXConversationComposerActionComponent {
|
|
|
813
803
|
readonly initialFiles?: InputSignal<File[]>;
|
|
814
804
|
/** Set by {@link AXPopupService} when the picker is shown in a popup. */
|
|
815
805
|
readonly __popup__?: InputSignal<_acorex_components_popup.AXPopupRef | undefined>;
|
|
806
|
+
/** Set by {@link AXActionSheetService} when the picker is shown in an action sheet. */
|
|
807
|
+
readonly __actionSheet__?: InputSignal<_acorex_components_action_sheet.AXActionSheetRef | undefined>;
|
|
808
|
+
/**
|
|
809
|
+
* When true (from action {@link AXConversationComposerAction.autoRun}), runs {@link activate}
|
|
810
|
+
* once after the component is mounted.
|
|
811
|
+
*/
|
|
812
|
+
readonly autoRun?: InputSignal<boolean>;
|
|
813
|
+
/** Primary action when opened from the composer (record, browse files, etc.). */
|
|
814
|
+
activate?(): void | Promise<void>;
|
|
816
815
|
/** Cancel in-flight uploads when the picker is closed or replaced. */
|
|
817
816
|
abortInProgressUploads?(): void;
|
|
818
817
|
}
|
|
@@ -848,6 +847,11 @@ interface AXConversationComposerAction extends Omit<AXConversationRegistryItem,
|
|
|
848
847
|
* Whether this action is toggleable (shows/hides component)
|
|
849
848
|
*/
|
|
850
849
|
toggleable?: boolean;
|
|
850
|
+
/**
|
|
851
|
+
* When true, runs {@link AXConversationComposerActionComponent.activate} in
|
|
852
|
+
* {@link afterNextRender} after the upload panel is mounted.
|
|
853
|
+
*/
|
|
854
|
+
autoRun?: boolean;
|
|
851
855
|
/** Action handler (optional if component is provided) */
|
|
852
856
|
handler?: (context: AXConversationComposerActionContext) => void | Promise<void>;
|
|
853
857
|
/** Tooltip text */
|
|
@@ -1326,10 +1330,6 @@ declare class AXConversationInfoBarService {
|
|
|
1326
1330
|
* Reset info-bar overlays when the active conversation changes.
|
|
1327
1331
|
*/
|
|
1328
1332
|
onConversationChanged(): void;
|
|
1329
|
-
/**
|
|
1330
|
-
* Open the Telegram-style conversation info panel for the active (or given) conversation.
|
|
1331
|
-
*/
|
|
1332
|
-
openConversationInfoPanel(conversation?: AXConversation): Promise<void>;
|
|
1333
1333
|
/**
|
|
1334
1334
|
* Get actions for the active conversation
|
|
1335
1335
|
*/
|
|
@@ -1433,7 +1433,7 @@ interface AXConversationInfoBarAction extends AXConversationRegistryItem {
|
|
|
1433
1433
|
/** Whether this is a divider */
|
|
1434
1434
|
divider?: boolean;
|
|
1435
1435
|
/** Display location: 'inline' for toolbar buttons, 'menu' for dropdown menu */
|
|
1436
|
-
location?: 'inline' | 'menu';
|
|
1436
|
+
location?: 'inline' | 'menu' | ((context: AXConversationInfoBarActionContext) => 'inline' | 'menu');
|
|
1437
1437
|
/**
|
|
1438
1438
|
* Component to show when action is activated (for inline actions)
|
|
1439
1439
|
* If provided, clicking the action will show this component in the info-bar
|
|
@@ -1483,6 +1483,10 @@ declare class AXConversationInfoBarActionRegistry extends AXConversationBaseRegi
|
|
|
1483
1483
|
* Get actions for a specific conversation
|
|
1484
1484
|
*/
|
|
1485
1485
|
getActionsForConversation(conversation: AXConversation, location?: 'inline' | 'menu'): AXConversationInfoBarAction[];
|
|
1486
|
+
/**
|
|
1487
|
+
* Resolve the display location for an action (supports dynamic location factories).
|
|
1488
|
+
*/
|
|
1489
|
+
getActionLocation(action: AXConversationInfoBarAction, conversation: AXConversation): 'inline' | 'menu' | undefined;
|
|
1486
1490
|
/**
|
|
1487
1491
|
* Get inline actions (toolbar buttons)
|
|
1488
1492
|
*/
|
|
@@ -1631,8 +1635,6 @@ declare class AXConversationComposerComponent implements OnDestroy {
|
|
|
1631
1635
|
/** Active conversation */
|
|
1632
1636
|
readonly activeConversation: _angular_core.Signal<_acorex_components_conversation.AXConversation>;
|
|
1633
1637
|
readonly activeMessages: _angular_core.Signal<AXConversationMessage[]>;
|
|
1634
|
-
/** Active component from service */
|
|
1635
|
-
readonly activeComponent: _angular_core.Signal<_acorex_components_conversation.AXConversationComposerActiveComponent>;
|
|
1636
1638
|
/** Emoji popover state */
|
|
1637
1639
|
private readonly emojiPopoverRef;
|
|
1638
1640
|
readonly emojiPopoverTarget: _angular_core.WritableSignal<HTMLElement>;
|
|
@@ -1708,7 +1710,7 @@ declare class AXConversationComposerComponent implements OnDestroy {
|
|
|
1708
1710
|
private focusTextArea;
|
|
1709
1711
|
private getClickTarget;
|
|
1710
1712
|
/** Handle action click */
|
|
1711
|
-
onActionClick(actionId: string, event?: AXClickEvent | MouseEvent): Promise<void>;
|
|
1713
|
+
onActionClick(actionId: string, event?: AXClickEvent | MouseEvent, initialFiles?: File[]): Promise<void>;
|
|
1712
1714
|
/** Check if action is enabled */
|
|
1713
1715
|
isActionEnabled(action: any): boolean;
|
|
1714
1716
|
/** Get replying sender name */
|
|
@@ -1739,10 +1741,8 @@ declare class AXConversationComposerComponent implements OnDestroy {
|
|
|
1739
1741
|
}): string;
|
|
1740
1742
|
/** Handle reply preview click - scroll to original message */
|
|
1741
1743
|
onReplyPreviewClick(): void;
|
|
1742
|
-
/** Inputs for picker /
|
|
1744
|
+
/** Inputs for picker components opened in popup / action sheet */
|
|
1743
1745
|
private buildPickerInputs;
|
|
1744
|
-
/** Get inputs for dynamic component */
|
|
1745
|
-
getComponentInputs(): Record<string, unknown>;
|
|
1746
1746
|
onEnter(event: AXHtmlEvent<KeyboardEvent>): Promise<void>;
|
|
1747
1747
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationComposerComponent, never>;
|
|
1748
1748
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXConversationComposerComponent, "ax-conversation-composer", never, {}, { "messageSent": "messageSent"; "emojiClick": "emojiClick"; "attachClick": "attachClick"; "voiceClick": "voiceClick"; }, never, never, true, never>;
|
|
@@ -1754,6 +1754,8 @@ declare class AXConversationContainerComponent {
|
|
|
1754
1754
|
private readonly fileService;
|
|
1755
1755
|
private readonly translation;
|
|
1756
1756
|
private readonly toast;
|
|
1757
|
+
private readonly platform;
|
|
1758
|
+
private readonly actionSheetService;
|
|
1757
1759
|
private readonly hostRef;
|
|
1758
1760
|
private readonly platformId;
|
|
1759
1761
|
protected readonly config: Required<_acorex_components_conversation.AXConversationConfig>;
|
|
@@ -1787,6 +1789,8 @@ declare class AXConversationContainerDirective {
|
|
|
1787
1789
|
private readonly platformId;
|
|
1788
1790
|
private readonly translation;
|
|
1789
1791
|
private readonly toast;
|
|
1792
|
+
private readonly platform;
|
|
1793
|
+
private readonly actionSheetService;
|
|
1790
1794
|
private readonly config;
|
|
1791
1795
|
constructor();
|
|
1792
1796
|
private get registry();
|
|
@@ -1814,7 +1818,12 @@ interface AXConversationDropdownMenuItem {
|
|
|
1814
1818
|
declare class AXConversationInfoBarComponent {
|
|
1815
1819
|
private readonly conversationService;
|
|
1816
1820
|
private readonly infoBar;
|
|
1821
|
+
private readonly platform;
|
|
1822
|
+
private readonly destroyRef;
|
|
1817
1823
|
private readonly customUserAvatarComponent;
|
|
1824
|
+
/** Bumps when viewport changes so dynamic action locations re-resolve. */
|
|
1825
|
+
private readonly layoutTick;
|
|
1826
|
+
constructor();
|
|
1818
1827
|
protected get registry(): _acorex_components_conversation.AXConversationRegistryService;
|
|
1819
1828
|
/** Whether a custom user avatar component is registered via conversation config. */
|
|
1820
1829
|
readonly hasCustomUserAvatar: _angular_core.Signal<boolean>;
|
|
@@ -1828,10 +1837,8 @@ declare class AXConversationInfoBarComponent {
|
|
|
1828
1837
|
readonly membersPopoverTarget: _angular_core.WritableSignal<HTMLElement>;
|
|
1829
1838
|
/** Loading state for async actions */
|
|
1830
1839
|
readonly actionLoading: _angular_core.WritableSignal<boolean>;
|
|
1831
|
-
/** Info area clicked —
|
|
1840
|
+
/** Info area clicked event — host apps can open a custom conversation details UI */
|
|
1832
1841
|
readonly infoClick: _angular_core.OutputEmitterRef<void>;
|
|
1833
|
-
/** @deprecated Use infoClick — kept for backward compatibility */
|
|
1834
|
-
readonly avatarClick: _angular_core.OutputEmitterRef<void>;
|
|
1835
1842
|
/** Search clicked event */
|
|
1836
1843
|
readonly searchClick: _angular_core.OutputEmitterRef<void>;
|
|
1837
1844
|
/** Search query changed event */
|
|
@@ -1839,17 +1846,18 @@ declare class AXConversationInfoBarComponent {
|
|
|
1839
1846
|
/** Menu item clicked event */
|
|
1840
1847
|
readonly menuItemAction: _angular_core.OutputEmitterRef<string>;
|
|
1841
1848
|
/** Inline action buttons from registry */
|
|
1842
|
-
readonly inlineActions: _angular_core.Signal<
|
|
1849
|
+
readonly inlineActions: _angular_core.Signal<AXConversationInfoBarAction[]>;
|
|
1843
1850
|
/** Dropdown menu items from registry */
|
|
1844
1851
|
readonly menuItems: _angular_core.Signal<AXConversationDropdownMenuItem[]>;
|
|
1845
1852
|
/** Get conversation status - delegate to utils */
|
|
1846
1853
|
getStatus(conversation: AXConversation): 'online' | 'offline' | 'away' | undefined;
|
|
1847
1854
|
/** Get subtitle text - delegate to utils */
|
|
1848
1855
|
getSubtitle(conversation: AXConversation): string;
|
|
1849
|
-
/**
|
|
1856
|
+
/** Info area clicked — emits for host apps to open a custom conversation details UI */
|
|
1850
1857
|
onInfoLeftClick(): void;
|
|
1851
1858
|
/** Handle inline action click */
|
|
1852
1859
|
onInlineActionClick(actionId: string): Promise<void>;
|
|
1860
|
+
private activateAction;
|
|
1853
1861
|
/** Get inputs for dynamic component */
|
|
1854
1862
|
getComponentInputs(): Record<string, unknown>;
|
|
1855
1863
|
getInlineComponentInputs(): Record<string, unknown>;
|
|
@@ -1861,7 +1869,7 @@ declare class AXConversationInfoBarComponent {
|
|
|
1861
1869
|
/** Handle menu item click */
|
|
1862
1870
|
onMenuItemClick(item: AXConversationDropdownMenuItem): Promise<void>;
|
|
1863
1871
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationInfoBarComponent, never>;
|
|
1864
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXConversationInfoBarComponent, "ax-conversation-info-bar", never, {}, { "infoClick": "infoClick"; "
|
|
1872
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXConversationInfoBarComponent, "ax-conversation-info-bar", never, {}, { "infoClick": "infoClick"; "searchClick": "searchClick"; "searchQuery": "searchQuery"; "menuItemAction": "menuItemAction"; }, never, ["ax-prefix"], true, never>;
|
|
1865
1873
|
}
|
|
1866
1874
|
|
|
1867
1875
|
/**
|
|
@@ -3340,6 +3348,7 @@ declare class AXConversationService {
|
|
|
3340
3348
|
* Resolve a media reference to a playback/download URL.
|
|
3341
3349
|
*/
|
|
3342
3350
|
resolveMediaUrl(reference: AXConversationUploaderReference, signal?: AbortSignal): Promise<string>;
|
|
3351
|
+
private resolveReplyTo;
|
|
3343
3352
|
/**
|
|
3344
3353
|
* Send a message
|
|
3345
3354
|
* Uses optimistic UI updates - message appears immediately
|
|
@@ -3829,6 +3838,7 @@ declare class AXConversationMessageListComponent implements OnDestroy {
|
|
|
3829
3838
|
private readonly translation;
|
|
3830
3839
|
private readonly document;
|
|
3831
3840
|
private readonly platform;
|
|
3841
|
+
private readonly actionSheetService;
|
|
3832
3842
|
protected readonly config: Required<_acorex_components_conversation.AXConversationConfig>;
|
|
3833
3843
|
/**
|
|
3834
3844
|
* Background for the message list scroll area from config, or the built-in soft wash when unset/empty.
|
|
@@ -4081,6 +4091,97 @@ declare class AXConversationMessageListService {
|
|
|
4081
4091
|
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXConversationMessageListService>;
|
|
4082
4092
|
}
|
|
4083
4093
|
|
|
4094
|
+
declare class AXConversationAvatarPickerComponent {
|
|
4095
|
+
readonly fileInput: _angular_core.Signal<ElementRef<HTMLInputElement>>;
|
|
4096
|
+
readonly showClearButton: _angular_core.InputSignal<boolean>;
|
|
4097
|
+
readonly avatarUrl: _angular_core.ModelSignal<string>;
|
|
4098
|
+
readonly onFileSelected: _angular_core.OutputEmitterRef<string>;
|
|
4099
|
+
triggerFileInput(): void;
|
|
4100
|
+
onFileInputChange(event: Event): Promise<void>;
|
|
4101
|
+
clearAvatar(): void;
|
|
4102
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationAvatarPickerComponent, never>;
|
|
4103
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXConversationAvatarPickerComponent, "ax-conversation-avatar-picker", never, { "showClearButton": { "alias": "showClearButton"; "required": false; "isSignal": true; }; "avatarUrl": { "alias": "avatarUrl"; "required": false; "isSignal": true; }; }, { "avatarUrl": "avatarUrlChange"; "onFileSelected": "onFileSelected"; }, never, never, true, never>;
|
|
4104
|
+
}
|
|
4105
|
+
|
|
4106
|
+
/**
|
|
4107
|
+
* Pluggable avatar components for the conversation UI.
|
|
4108
|
+
* Register via `provideConversation({ avatarComponents: { user, conversation } })`.
|
|
4109
|
+
* When only `user` is registered, a built-in conversation avatar host is wired automatically.
|
|
4110
|
+
*/
|
|
4111
|
+
|
|
4112
|
+
/** Custom user avatar (e.g. platform `axp-user-avatar`). */
|
|
4113
|
+
interface AXConversationUserAvatarComponent {
|
|
4114
|
+
readonly userId: InputSignal<string>;
|
|
4115
|
+
readonly size: InputSignal<number>;
|
|
4116
|
+
/** Optional resolved display name (e.g. bot/assist peer title). */
|
|
4117
|
+
readonly displayName?: InputSignal<string | undefined>;
|
|
4118
|
+
/** Optional resolved avatar URL when `userId` is not a platform user row. */
|
|
4119
|
+
readonly displayAvatar?: InputSignal<string | undefined>;
|
|
4120
|
+
/** Optional icon class when no avatar image is available. */
|
|
4121
|
+
readonly displayIcon?: InputSignal<string | undefined>;
|
|
4122
|
+
}
|
|
4123
|
+
/** Optional custom group/channel conversation avatar. */
|
|
4124
|
+
interface AXConversationConversationAvatarComponent {
|
|
4125
|
+
readonly conversationId: InputSignal<string>;
|
|
4126
|
+
readonly size: InputSignal<number>;
|
|
4127
|
+
}
|
|
4128
|
+
type AXConversationAvatarKind = 'user' | 'conversation' | 'auto';
|
|
4129
|
+
declare const AX_CONVERSATION_USER_AVATAR_COMPONENT: InjectionToken<Type<AXConversationUserAvatarComponent>>;
|
|
4130
|
+
declare const AX_CONVERSATION_CONVERSATION_AVATAR_COMPONENT: InjectionToken<Type<AXConversationConversationAvatarComponent>>;
|
|
4131
|
+
interface AXConversationAvatarComponents {
|
|
4132
|
+
user?: Type<AXConversationUserAvatarComponent>;
|
|
4133
|
+
conversation?: Type<AXConversationConversationAvatarComponent>;
|
|
4134
|
+
}
|
|
4135
|
+
|
|
4136
|
+
declare class AXConversationAvatarComponent {
|
|
4137
|
+
private readonly conversationService;
|
|
4138
|
+
private readonly userAvatarComponent;
|
|
4139
|
+
private readonly conversationAvatarComponent;
|
|
4140
|
+
readonly kind: _angular_core.InputSignal<AXConversationAvatarKind>;
|
|
4141
|
+
readonly userId: _angular_core.InputSignal<string>;
|
|
4142
|
+
readonly conversation: _angular_core.InputSignal<AXConversation>;
|
|
4143
|
+
readonly message: _angular_core.InputSignal<AXConversationMessage>;
|
|
4144
|
+
readonly size: _angular_core.InputSignal<number>;
|
|
4145
|
+
readonly showStatus: _angular_core.InputSignal<boolean>;
|
|
4146
|
+
readonly name: _angular_core.InputSignal<string>;
|
|
4147
|
+
readonly avatar: _angular_core.InputSignal<string>;
|
|
4148
|
+
readonly icon: _angular_core.InputSignal<string>;
|
|
4149
|
+
private readonly currentUserId;
|
|
4150
|
+
readonly resolvedKind: _angular_core.Signal<"user" | "conversation">;
|
|
4151
|
+
readonly resolvedUserId: _angular_core.Signal<string>;
|
|
4152
|
+
readonly customComponent: _angular_core.Signal<Type<unknown>>;
|
|
4153
|
+
readonly customInputs: _angular_core.Signal<Record<string, unknown>>;
|
|
4154
|
+
readonly filteredCustomInputs: _angular_core.Signal<Record<string, unknown>>;
|
|
4155
|
+
readonly fallbackDisplay: _angular_core.Signal<{
|
|
4156
|
+
name: string;
|
|
4157
|
+
avatar: string;
|
|
4158
|
+
icon: string;
|
|
4159
|
+
}>;
|
|
4160
|
+
readonly fallbackInitials: _angular_core.Signal<string>;
|
|
4161
|
+
readonly resolvedStatus: _angular_core.Signal<"online" | "offline" | "away">;
|
|
4162
|
+
/** Hide presence badge when a registered custom avatar component is rendered. */
|
|
4163
|
+
readonly statusBadgePresence: _angular_core.Signal<"online" | "offline" | "away">;
|
|
4164
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationAvatarComponent, never>;
|
|
4165
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXConversationAvatarComponent, "ax-conversation-avatar", never, { "kind": { "alias": "kind"; "required": false; "isSignal": true; }; "userId": { "alias": "userId"; "required": false; "isSignal": true; }; "conversation": { "alias": "conversation"; "required": false; "isSignal": true; }; "message": { "alias": "message"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "showStatus": { "alias": "showStatus"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "avatar": { "alias": "avatar"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
4166
|
+
}
|
|
4167
|
+
|
|
4168
|
+
interface AXConversationRegistryComponentRef {
|
|
4169
|
+
component?: Type<unknown>;
|
|
4170
|
+
componentLoader?: () => Promise<Type<unknown>>;
|
|
4171
|
+
}
|
|
4172
|
+
declare class AXConversationRegistryComponentOutletComponent {
|
|
4173
|
+
readonly component: _angular_core.InputSignal<Type<unknown>>;
|
|
4174
|
+
readonly componentLoader: _angular_core.InputSignal<() => Promise<Type<unknown>>>;
|
|
4175
|
+
readonly inputs: _angular_core.InputSignal<Record<string, unknown>>;
|
|
4176
|
+
readonly resolvedComponent: _angular_core.WritableSignal<Type<unknown>>;
|
|
4177
|
+
readonly loading: _angular_core.WritableSignal<boolean>;
|
|
4178
|
+
constructor();
|
|
4179
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationRegistryComponentOutletComponent, never>;
|
|
4180
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXConversationRegistryComponentOutletComponent, "ax-conversation-registry-component-outlet", never, { "component": { "alias": "component"; "required": false; "isSignal": true; }; "componentLoader": { "alias": "componentLoader"; "required": false; "isSignal": true; }; "inputs": { "alias": "inputs"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
4181
|
+
}
|
|
4182
|
+
/** Resolve a registry component reference, preferring lazy loaders when provided. */
|
|
4183
|
+
declare function hasRegistryComponent(ref?: AXConversationRegistryComponentRef): boolean;
|
|
4184
|
+
|
|
4084
4185
|
declare class AXConversationSidebarService {
|
|
4085
4186
|
private readonly conversationService;
|
|
4086
4187
|
constructor();
|
|
@@ -4358,36 +4459,6 @@ declare const AX_CONVERSATION_CONFIG: InjectionToken<Required<AXConversationConf
|
|
|
4358
4459
|
*/
|
|
4359
4460
|
declare const AX_CONVERSATION_ERROR_HANDLER_CONFIG: InjectionToken<Partial<AXConversationErrorHandlerConfig>>;
|
|
4360
4461
|
|
|
4361
|
-
/**
|
|
4362
|
-
* Pluggable avatar components for the conversation UI.
|
|
4363
|
-
* Register via `provideConversation({ avatarComponents: { user, conversation } })`.
|
|
4364
|
-
* When only `user` is registered, a built-in conversation avatar host is wired automatically.
|
|
4365
|
-
*/
|
|
4366
|
-
|
|
4367
|
-
/** Custom user avatar (e.g. platform `axp-user-avatar`). */
|
|
4368
|
-
interface AXConversationUserAvatarComponent {
|
|
4369
|
-
readonly userId: InputSignal<string>;
|
|
4370
|
-
readonly size: InputSignal<number>;
|
|
4371
|
-
/** Optional resolved display name (e.g. bot/assist peer title). */
|
|
4372
|
-
readonly displayName?: InputSignal<string | undefined>;
|
|
4373
|
-
/** Optional resolved avatar URL when `userId` is not a platform user row. */
|
|
4374
|
-
readonly displayAvatar?: InputSignal<string | undefined>;
|
|
4375
|
-
/** Optional icon class when no avatar image is available. */
|
|
4376
|
-
readonly displayIcon?: InputSignal<string | undefined>;
|
|
4377
|
-
}
|
|
4378
|
-
/** Optional custom group/channel conversation avatar. */
|
|
4379
|
-
interface AXConversationConversationAvatarComponent {
|
|
4380
|
-
readonly conversationId: InputSignal<string>;
|
|
4381
|
-
readonly size: InputSignal<number>;
|
|
4382
|
-
}
|
|
4383
|
-
type AXConversationAvatarKind = 'user' | 'conversation' | 'auto';
|
|
4384
|
-
declare const AX_CONVERSATION_USER_AVATAR_COMPONENT: InjectionToken<Type<AXConversationUserAvatarComponent>>;
|
|
4385
|
-
declare const AX_CONVERSATION_CONVERSATION_AVATAR_COMPONENT: InjectionToken<Type<AXConversationConversationAvatarComponent>>;
|
|
4386
|
-
interface AXConversationAvatarComponents {
|
|
4387
|
-
user?: Type<AXConversationUserAvatarComponent>;
|
|
4388
|
-
conversation?: Type<AXConversationConversationAvatarComponent>;
|
|
4389
|
-
}
|
|
4390
|
-
|
|
4391
4462
|
/**
|
|
4392
4463
|
* Registry Configuration Tokens
|
|
4393
4464
|
* Injection tokens for configuring default registry values
|
|
@@ -4457,472 +4528,6 @@ interface AXConversationRegistryConfiguration {
|
|
|
4457
4528
|
*/
|
|
4458
4529
|
declare const AX_CONVERSATION_REGISTRY_CONFIG: InjectionToken<AXConversationRegistryConfiguration>;
|
|
4459
4530
|
|
|
4460
|
-
/**
|
|
4461
|
-
* IndexedDB Storage Wrapper
|
|
4462
|
-
* Provides persistent storage for conversation data
|
|
4463
|
-
*/
|
|
4464
|
-
|
|
4465
|
-
declare const AXConversationIndexedDbStores: {
|
|
4466
|
-
readonly PARTICIPANTS: "participants";
|
|
4467
|
-
readonly CONVERSATIONS: "conversations";
|
|
4468
|
-
readonly MESSAGES: "messages";
|
|
4469
|
-
readonly MEDIA: "media";
|
|
4470
|
-
readonly SETTINGS: "settings";
|
|
4471
|
-
};
|
|
4472
|
-
/** Blob stored for demo multimedia uploads */
|
|
4473
|
-
interface AXConversationIndexedDbMediaRecord {
|
|
4474
|
-
id: string;
|
|
4475
|
-
conversationId: string;
|
|
4476
|
-
mimeType: string;
|
|
4477
|
-
size: number;
|
|
4478
|
-
fileName?: string;
|
|
4479
|
-
blob: Blob;
|
|
4480
|
-
createdAt: string;
|
|
4481
|
-
}
|
|
4482
|
-
declare class AXConversationIndexedDbStorage {
|
|
4483
|
-
private db;
|
|
4484
|
-
private initPromise;
|
|
4485
|
-
/**
|
|
4486
|
-
* Initialize IndexedDB
|
|
4487
|
-
*/
|
|
4488
|
-
init(): Promise<void>;
|
|
4489
|
-
/**
|
|
4490
|
-
* Get a value from a store
|
|
4491
|
-
*/
|
|
4492
|
-
get<T>(storeName: string, key: string): Promise<T | undefined>;
|
|
4493
|
-
/**
|
|
4494
|
-
* Get all values from a store
|
|
4495
|
-
*/
|
|
4496
|
-
getAll<T>(storeName: string): Promise<T[]>;
|
|
4497
|
-
/**
|
|
4498
|
-
* Get values by index
|
|
4499
|
-
*/
|
|
4500
|
-
getAllByIndex<T>(storeName: string, indexName: string, query: IDBValidKey): Promise<T[]>;
|
|
4501
|
-
/**
|
|
4502
|
-
* Put a value into a store
|
|
4503
|
-
*/
|
|
4504
|
-
put<T>(storeName: string, value: T): Promise<void>;
|
|
4505
|
-
/**
|
|
4506
|
-
* Delete a value from a store
|
|
4507
|
-
*/
|
|
4508
|
-
delete(storeName: string, key: string): Promise<void>;
|
|
4509
|
-
/**
|
|
4510
|
-
* Clear all data from a store
|
|
4511
|
-
*/
|
|
4512
|
-
clear(storeName: string): Promise<void>;
|
|
4513
|
-
getParticipant(id: string): Promise<AXConversationParticipant | undefined>;
|
|
4514
|
-
getAllParticipants(): Promise<AXConversationParticipant[]>;
|
|
4515
|
-
putParticipant(participant: AXConversationParticipant): Promise<void>;
|
|
4516
|
-
getConversation(id: string): Promise<AXConversation | undefined>;
|
|
4517
|
-
getAllConversations(): Promise<AXConversation[]>;
|
|
4518
|
-
putConversation(conversation: AXConversation): Promise<void>;
|
|
4519
|
-
deleteConversation(id: string): Promise<void>;
|
|
4520
|
-
getMessage(id: string): Promise<AXConversationMessage | undefined>;
|
|
4521
|
-
getAllMessages(): Promise<AXConversationMessage[]>;
|
|
4522
|
-
getMessagesByConversation(conversationId: string): Promise<AXConversationMessage[]>;
|
|
4523
|
-
putMessage(message: AXConversationMessage): Promise<void>;
|
|
4524
|
-
deleteMessage(id: string): Promise<void>;
|
|
4525
|
-
getSetting(key: string): Promise<unknown>;
|
|
4526
|
-
putSetting(key: string, value: unknown): Promise<void>;
|
|
4527
|
-
getMedia(id: string): Promise<AXConversationIndexedDbMediaRecord | undefined>;
|
|
4528
|
-
putMedia(record: AXConversationIndexedDbMediaRecord): Promise<void>;
|
|
4529
|
-
deleteMedia(id: string): Promise<void>;
|
|
4530
|
-
}
|
|
4531
|
-
declare const axConversationIndexedDbStorage: AXConversationIndexedDbStorage;
|
|
4532
|
-
|
|
4533
|
-
/**
|
|
4534
|
-
* Shared In-Memory Storage
|
|
4535
|
-
* Internal storage shared between all IndexedDB API implementations
|
|
4536
|
-
* This is NOT a service - just a shared data structure
|
|
4537
|
-
*/
|
|
4538
|
-
|
|
4539
|
-
declare class AXConversationSharedStorage {
|
|
4540
|
-
readonly connectionStatus$: BehaviorSubject<AXConversationConnectionStatus>;
|
|
4541
|
-
readonly participants: Map<string, AXConversationParticipant>;
|
|
4542
|
-
readonly conversations: Map<string, AXConversation>;
|
|
4543
|
-
readonly messages: Map<string, AXConversationMessage>;
|
|
4544
|
-
readonly messagesByConversation: Map<string, string[]>;
|
|
4545
|
-
readonly messageStream$: Subject<AXConversationMessage>;
|
|
4546
|
-
readonly messageUpdates$: Subject<AXConversationMessage>;
|
|
4547
|
-
readonly messageDeletions$: Subject<string>;
|
|
4548
|
-
readonly typingIndicators$: Subject<AXConversationTypingIndicator>;
|
|
4549
|
-
readonly presenceUpdates$: Subject<AXConversationPresenceUpdate>;
|
|
4550
|
-
readonly conversationUpdates$: Subject<AXConversation>;
|
|
4551
|
-
readonly currentUserId = "current-user";
|
|
4552
|
-
private isSeeded;
|
|
4553
|
-
private presenceInterval?;
|
|
4554
|
-
private messageSimulationInterval?;
|
|
4555
|
-
private isLoadedFromDB;
|
|
4556
|
-
/**
|
|
4557
|
-
* Load data from IndexedDB
|
|
4558
|
-
*/
|
|
4559
|
-
loadFromIndexedDB(): Promise<void>;
|
|
4560
|
-
/**
|
|
4561
|
-
* Seed initial data if not already seeded
|
|
4562
|
-
*/
|
|
4563
|
-
seedIfEmpty(): Promise<void>;
|
|
4564
|
-
/** Wipe in-memory and persisted demo data (used when seed version changes). */
|
|
4565
|
-
private clearAllData;
|
|
4566
|
-
/** @internal Used by demo seed module */
|
|
4567
|
-
markSeeded(): void;
|
|
4568
|
-
/** @internal Starts demo presence and message simulations */
|
|
4569
|
-
startDemoSimulations(): void;
|
|
4570
|
-
/**
|
|
4571
|
-
* Simulate user presence changes (online/offline/away)
|
|
4572
|
-
*/
|
|
4573
|
-
private startPresenceSimulation;
|
|
4574
|
-
/**
|
|
4575
|
-
* Simulate random messages from users
|
|
4576
|
-
*/
|
|
4577
|
-
private startMessageSimulation;
|
|
4578
|
-
/**
|
|
4579
|
-
* Stop presence simulation
|
|
4580
|
-
*/
|
|
4581
|
-
stopPresenceSimulation(): void;
|
|
4582
|
-
/**
|
|
4583
|
-
* Stop message simulation
|
|
4584
|
-
*/
|
|
4585
|
-
stopMessageSimulation(): void;
|
|
4586
|
-
}
|
|
4587
|
-
declare const axConversationSharedStorage: AXConversationSharedStorage;
|
|
4588
|
-
|
|
4589
|
-
declare const AX_CONVERSATION_DEMO_CONVERSATION_IDS: {
|
|
4590
|
-
readonly private: "conv-demo-private";
|
|
4591
|
-
readonly group: "conv-demo-group";
|
|
4592
|
-
readonly channel: "conv-demo-channel";
|
|
4593
|
-
};
|
|
4594
|
-
declare function seedSharedStorageInitialData(storage: AXConversationSharedStorage): Promise<void>;
|
|
4595
|
-
|
|
4596
|
-
/**
|
|
4597
|
-
* Chat-oriented pagination helpers for IndexedDB demo APIs.
|
|
4598
|
-
*
|
|
4599
|
-
* Convention (matches {@link AXConversationService}):
|
|
4600
|
-
* - Page 0: newest items (sidebar: recent chats; messages: latest history window).
|
|
4601
|
-
* - Page 1+ or `cursor`: older items before the previous window.
|
|
4602
|
-
* - `hasMore`: true when older items remain.
|
|
4603
|
-
* - `nextCursor`: id of the oldest item in the current page (use as `pagination.cursor` for the next request).
|
|
4604
|
-
*/
|
|
4605
|
-
|
|
4606
|
-
declare const AX_CONVERSATION_MESSAGE_CURSOR_PREFIX = "msg:";
|
|
4607
|
-
declare const AX_CONVERSATION_CURSOR_PREFIX = "conv:";
|
|
4608
|
-
type AXConversationChatCursorKind = 'message' | 'conversation';
|
|
4609
|
-
interface AXConversationParsedChatCursor {
|
|
4610
|
-
kind: AXConversationChatCursorKind;
|
|
4611
|
-
id: string;
|
|
4612
|
-
}
|
|
4613
|
-
declare function encodeMessageCursor(messageId: string): string;
|
|
4614
|
-
declare function encodeConversationCursor(conversationId: string): string;
|
|
4615
|
-
/** Decode cursor from API pagination (supports prefixed or legacy raw message id). */
|
|
4616
|
-
declare function parseChatCursor(cursor?: string): AXConversationParsedChatCursor | null;
|
|
4617
|
-
/**
|
|
4618
|
-
* Paginate a list sorted newest-first (chats, message history windows).
|
|
4619
|
-
*/
|
|
4620
|
-
declare function paginateChatNewestFirst<T extends {
|
|
4621
|
-
id: string;
|
|
4622
|
-
}>(sortedNewestFirst: T[], pagination: AXConversationPagination, cursorKind: AXConversationChatCursorKind): AXConversationPaginatedResult<T>;
|
|
4623
|
-
/**
|
|
4624
|
-
* Paginate a list sorted oldest-first (replies, forward history).
|
|
4625
|
-
*/
|
|
4626
|
-
declare function paginateChatOldestFirst<T extends {
|
|
4627
|
-
id: string;
|
|
4628
|
-
}>(sortedOldestFirst: T[], pagination: AXConversationPagination): AXConversationPaginatedResult<T>;
|
|
4629
|
-
|
|
4630
|
-
/**
|
|
4631
|
-
* Pagination demo data — disabled for the minimal 3-chat showcase seed.
|
|
4632
|
-
* Kept as a no-op so existing imports remain valid.
|
|
4633
|
-
*/
|
|
4634
|
-
/** @deprecated Pagination demo chat removed from default seed. */
|
|
4635
|
-
declare const AX_MESSAGE_PAGINATION_CONVERSATION_ID = "conv-pag-msgs";
|
|
4636
|
-
/** No-op: showcase uses a fixed 3-conversation seed (private, group, channel). */
|
|
4637
|
-
declare function ensurePaginationDemoData(): Promise<void>;
|
|
4638
|
-
|
|
4639
|
-
/**
|
|
4640
|
-
* Shared read/write helpers for IndexedDB chat storage (in-memory + persistence).
|
|
4641
|
-
*/
|
|
4642
|
-
|
|
4643
|
-
declare function getConversationLastActivity(conv: AXConversation): number;
|
|
4644
|
-
/** Messages for a conversation, newest first (API / pagination order). */
|
|
4645
|
-
declare function getConversationMessagesNewestFirst(conversationId: string): AXConversationMessage[];
|
|
4646
|
-
/** Keep per-conversation id list sorted ascending by timestamp (store order). */
|
|
4647
|
-
declare function sortConversationMessageIds(conversationId: string): void;
|
|
4648
|
-
/** Register a message in maps and keep the conversation index sorted. */
|
|
4649
|
-
declare function registerChatMessage(message: AXConversationMessage): void;
|
|
4650
|
-
/** Remove a message from conversation index and global map. */
|
|
4651
|
-
declare function unregisterChatMessage(messageId: string, conversationId: string): void;
|
|
4652
|
-
declare function applyConversationFilters(conversations: AXConversation[], filters?: AXConversationFilters): AXConversation[];
|
|
4653
|
-
/** Sidebar list order: pinned first, then by last activity (newest first). */
|
|
4654
|
-
declare function getSortedConversationsForInbox(filters?: AXConversationFilters): AXConversation[];
|
|
4655
|
-
/** Sort all loaded conversation message indexes (after IndexedDB hydration). */
|
|
4656
|
-
declare function normalizeAllConversationMessageIndexes(): void;
|
|
4657
|
-
|
|
4658
|
-
declare class AXConversationIndexedDbUserApi extends AXConversationUserApi {
|
|
4659
|
-
private readonly API_DELAY_MS;
|
|
4660
|
-
getCurrentUser(): Promise<AXConversationParticipant>;
|
|
4661
|
-
updateProfile(updates: AXConversationUserProfileUpdate): Promise<AXConversationParticipant>;
|
|
4662
|
-
uploadAvatar(file: File): Promise<string>;
|
|
4663
|
-
getUsers(pagination?: AXConversationPagination, filters?: AXConversationUserSearchFilters): Promise<AXConversationPaginatedResult<AXConversationParticipant>>;
|
|
4664
|
-
searchUsers(query: string): Promise<AXConversationParticipant[]>;
|
|
4665
|
-
getUserById(userId: string): Promise<AXConversationParticipant>;
|
|
4666
|
-
getUsersByIds(userIds: string[]): Promise<AXConversationParticipant[]>;
|
|
4667
|
-
getUserPresence(userId: string): Promise<AXConversationPresenceUpdate>;
|
|
4668
|
-
updatePresence(_status: AXConversationPresenceStatus, _statusText?: string): Promise<void>;
|
|
4669
|
-
blockUser(_userId: string, _reason?: AXConversationBlockReportReason): Promise<void>;
|
|
4670
|
-
unblockUser(_userId: string): Promise<void>;
|
|
4671
|
-
getBlockedUsers(): Promise<string[]>;
|
|
4672
|
-
reportUser(_userId: string, _reason: AXConversationBlockReportReason): Promise<void>;
|
|
4673
|
-
getUserSettings(): Promise<Record<string, unknown>>;
|
|
4674
|
-
updateUserSettings(_settings: Record<string, unknown>): Promise<void>;
|
|
4675
|
-
private getCurrentUserWithoutDelay;
|
|
4676
|
-
private fetchUsers;
|
|
4677
|
-
private delay;
|
|
4678
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationIndexedDbUserApi, never>;
|
|
4679
|
-
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXConversationIndexedDbUserApi>;
|
|
4680
|
-
}
|
|
4681
|
-
|
|
4682
|
-
declare class AXConversationIndexedDbConversationApi extends AXConversationApi {
|
|
4683
|
-
createConversation(data: AXConversationCreateData): Promise<AXConversation>;
|
|
4684
|
-
getConversation(conversationId: string): Promise<AXConversation>;
|
|
4685
|
-
/**
|
|
4686
|
-
* Inbox page (pinned + recent activity, newest first).
|
|
4687
|
-
* Page 0 / cursor align with {@link AXConversationService.loadConversations} and sidebar infinite scroll.
|
|
4688
|
-
*/
|
|
4689
|
-
getConversations(pagination: AXConversationPagination, filters?: AXConversationFilters): Promise<AXConversationPaginatedResult<AXConversation>>;
|
|
4690
|
-
updateConversation(conversationId: string, updates: AXConversationUpdateData): Promise<AXConversation>;
|
|
4691
|
-
deleteConversation(conversationId: string): Promise<boolean>;
|
|
4692
|
-
archiveConversation(conversationId: string): Promise<void>;
|
|
4693
|
-
unarchiveConversation(conversationId: string): Promise<void>;
|
|
4694
|
-
pinConversation(conversationId: string): Promise<void>;
|
|
4695
|
-
unpinConversation(conversationId: string): Promise<void>;
|
|
4696
|
-
markConversationAsRead(conversationId: string): Promise<void>;
|
|
4697
|
-
markConversationAsUnread(conversationId: string): Promise<void>;
|
|
4698
|
-
searchConversations(query: string): Promise<AXConversation[]>;
|
|
4699
|
-
filterConversations(filters: AXConversationFilters, pagination?: AXConversationPagination): Promise<AXConversationPaginatedResult<AXConversation>>;
|
|
4700
|
-
getParticipants(conversationId: string): Promise<AXConversationParticipant[]>;
|
|
4701
|
-
addParticipants(_conversationId: string, _userIds: string[]): Promise<AXConversation>;
|
|
4702
|
-
removeParticipant(conversationId: string, _userId: string): Promise<AXConversation>;
|
|
4703
|
-
leaveConversation(_conversationId: string): Promise<void>;
|
|
4704
|
-
updateParticipant(conversationId: string, _update: AXConversationParticipantUpdate): Promise<AXConversation>;
|
|
4705
|
-
getConversationSettings(conversationId: string): Promise<AXConversationSettingsUpdate>;
|
|
4706
|
-
updateConversationSettings(conversationId: string, settings: AXConversationSettingsUpdate): Promise<void>;
|
|
4707
|
-
muteConversation(conversationId: string, duration?: number): Promise<void>;
|
|
4708
|
-
unmuteConversation(conversationId: string): Promise<void>;
|
|
4709
|
-
uploadConversationAvatar(_conversationId: string, file: File): Promise<string>;
|
|
4710
|
-
getConversationMedia(conversationId: string, pagination?: AXConversationPagination): Promise<AXConversationPaginatedResult<unknown>>;
|
|
4711
|
-
addConversationTags(conversationId: string, tags: string[]): Promise<void>;
|
|
4712
|
-
removeConversationTags(conversationId: string, tags: string[]): Promise<void>;
|
|
4713
|
-
getConversationTags(conversationId: string): Promise<string[]>;
|
|
4714
|
-
saveDraft(conversationId: string, draft: string): Promise<void>;
|
|
4715
|
-
getDraft(conversationId: string): Promise<string | null>;
|
|
4716
|
-
clearDraft(conversationId: string): Promise<void>;
|
|
4717
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationIndexedDbConversationApi, never>;
|
|
4718
|
-
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXConversationIndexedDbConversationApi>;
|
|
4719
|
-
}
|
|
4720
|
-
|
|
4721
|
-
declare class AXConversationIndexedDbMessageApi extends AXConversationMessageApi {
|
|
4722
|
-
sendMessage(command: AXConversationSendMessageCommand): Promise<AXConversationMessage>;
|
|
4723
|
-
getMessage(messageId: string): Promise<AXConversationMessage>;
|
|
4724
|
-
/**
|
|
4725
|
-
* Message history for a chat (newest-first pages).
|
|
4726
|
-
* - Page 0: latest `pageSize` messages.
|
|
4727
|
-
* - Page 1+ or `pagination.cursor`: older messages before the previous window.
|
|
4728
|
-
*/
|
|
4729
|
-
getMessages(conversationId: string, pagination: AXConversationPagination): Promise<AXConversationPaginatedResult<AXConversationMessage>>;
|
|
4730
|
-
editMessage(messageId: string, payload: AXConversationMessagePayload): Promise<AXConversationMessage>;
|
|
4731
|
-
deleteMessage(messageId: string, _forEveryone?: boolean): Promise<void>;
|
|
4732
|
-
deleteMessages(messageIds: string[], forEveryone?: boolean): Promise<void>;
|
|
4733
|
-
searchMessages(conversationId: string, filters: AXConversationMessageSearchFilters, pagination?: AXConversationPagination): Promise<AXConversationPaginatedResult<AXConversationMessage>>;
|
|
4734
|
-
searchAllMessages(filters: AXConversationMessageSearchFilters, pagination?: AXConversationPagination): Promise<AXConversationPaginatedResult<AXConversationMessage>>;
|
|
4735
|
-
addReaction(messageId: string, emoji: string): Promise<void>;
|
|
4736
|
-
removeReaction(messageId: string, emoji: string): Promise<void>;
|
|
4737
|
-
getAvailableReactions(): Promise<string[]>;
|
|
4738
|
-
markAsRead(conversationId: string, messageIds: string[]): Promise<void>;
|
|
4739
|
-
markAsUnread(conversationId: string): Promise<void>;
|
|
4740
|
-
getReadReceipts(_messageId: string): Promise<AXConversationReadReceipt[]>;
|
|
4741
|
-
forwardMessage(_data: AXConversationMessageForwardData): Promise<AXConversationMessage[]>;
|
|
4742
|
-
pinMessage(_conversationId: string, _messageId: string): Promise<void>;
|
|
4743
|
-
unpinMessage(_conversationId: string, _messageId: string): Promise<void>;
|
|
4744
|
-
getPinnedMessages(_conversationId: string): Promise<AXConversationPinnedMessage[]>;
|
|
4745
|
-
getMessageReplies(messageId: string, pagination?: AXConversationPagination): Promise<AXConversationPaginatedResult<AXConversationMessage>>;
|
|
4746
|
-
getReplyCount(messageId: string): Promise<number>;
|
|
4747
|
-
getForwardCount(messageId: string): Promise<number>;
|
|
4748
|
-
sendTypingIndicator(conversationId: string): Promise<void>;
|
|
4749
|
-
stopTypingIndicator(conversationId: string): Promise<void>;
|
|
4750
|
-
updateMessageMetadata(messageId: string, metadata: Record<string, unknown>): Promise<void>;
|
|
4751
|
-
getMessageMetadata(messageId: string): Promise<Record<string, unknown>>;
|
|
4752
|
-
updateMessageStatus(messageId: string, status: 'sending' | 'sent' | 'delivered' | 'read' | 'failed'): Promise<void>;
|
|
4753
|
-
getMessageDeliveryStatus(_messageId: string): Promise<{
|
|
4754
|
-
delivered: number;
|
|
4755
|
-
read: number;
|
|
4756
|
-
total: number;
|
|
4757
|
-
}>;
|
|
4758
|
-
markMessagesAsRead(messageIds: string[]): Promise<void>;
|
|
4759
|
-
bulkDeleteMessages(conversationId: string, messageIds: string[], forEveryone?: boolean): Promise<void>;
|
|
4760
|
-
exportMessages(conversationId: string, _format: 'json' | 'csv' | 'txt'): Promise<string | Blob>;
|
|
4761
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationIndexedDbMessageApi, never>;
|
|
4762
|
-
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXConversationIndexedDbMessageApi>;
|
|
4763
|
-
}
|
|
4764
|
-
|
|
4765
|
-
declare class AXConversationIndexedDbRealtimeApi extends AXConversationRealtimeApi {
|
|
4766
|
-
readonly connectionStatus$: Observable<AXConversationConnectionStatus>;
|
|
4767
|
-
connect(_options?: AXConversationConnectionOptions): Promise<void>;
|
|
4768
|
-
disconnect(): Promise<void>;
|
|
4769
|
-
isConnected(): boolean;
|
|
4770
|
-
reconnect(): Promise<void>;
|
|
4771
|
-
subscribeToConnectionEvents(): Observable<AXConversationConnectionEvent>;
|
|
4772
|
-
subscribeToMessages(conversationId: string): Observable<AXConversationMessage>;
|
|
4773
|
-
subscribeToMessageUpdates(_conversationId?: string): Observable<AXConversationMessage>;
|
|
4774
|
-
subscribeToMessageDeletions(_conversationId?: string): Observable<string>;
|
|
4775
|
-
subscribeToMessageReactions(_conversationId?: string): Observable<AXConversationMessage>;
|
|
4776
|
-
subscribeToConversationUpdates(): Observable<AXConversation>;
|
|
4777
|
-
subscribeToConversationCreated(): Observable<AXConversation>;
|
|
4778
|
-
subscribeToConversationDeleted(): Observable<string>;
|
|
4779
|
-
subscribeToTypingIndicators(conversationId: string): Observable<AXConversationTypingIndicator>;
|
|
4780
|
-
subscribeToPresenceUpdates(_userIds?: string[]): Observable<AXConversationPresenceUpdate>;
|
|
4781
|
-
subscribeToReadReceipts(_conversationId?: string): Observable<{
|
|
4782
|
-
messageId: string;
|
|
4783
|
-
userId: string;
|
|
4784
|
-
readAt: Date;
|
|
4785
|
-
}>;
|
|
4786
|
-
subscribeToNotifications(): Observable<AXConversationNotificationEvent>;
|
|
4787
|
-
subscribeToCallEvents(): Observable<AXConversationCallEvent>;
|
|
4788
|
-
subscribeToUserBlockEvents(): Observable<{
|
|
4789
|
-
userId: string;
|
|
4790
|
-
blocked: boolean;
|
|
4791
|
-
}>;
|
|
4792
|
-
subscribeToParticipantEvents(_conversationId?: string): Observable<{
|
|
4793
|
-
conversationId: string;
|
|
4794
|
-
userId: string;
|
|
4795
|
-
action: 'added' | 'removed';
|
|
4796
|
-
}>;
|
|
4797
|
-
subscribeToSystemEvents(): Observable<{
|
|
4798
|
-
type: string;
|
|
4799
|
-
message: string;
|
|
4800
|
-
data?: any;
|
|
4801
|
-
}>;
|
|
4802
|
-
subscribeToMessageStatusChanges(_conversationId?: string): Observable<{
|
|
4803
|
-
messageId: string;
|
|
4804
|
-
status: 'sending' | 'sent' | 'delivered' | 'read' | 'failed';
|
|
4805
|
-
timestamp: Date;
|
|
4806
|
-
}>;
|
|
4807
|
-
subscribeToConversationSettingsChanges(_conversationId?: string): Observable<{
|
|
4808
|
-
conversationId: string;
|
|
4809
|
-
settings: Record<string, unknown>;
|
|
4810
|
-
}>;
|
|
4811
|
-
subscribeToDraftChanges(_conversationId?: string): Observable<{
|
|
4812
|
-
conversationId: string;
|
|
4813
|
-
draft: string | null;
|
|
4814
|
-
}>;
|
|
4815
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationIndexedDbRealtimeApi, never>;
|
|
4816
|
-
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXConversationIndexedDbRealtimeApi>;
|
|
4817
|
-
}
|
|
4818
|
-
|
|
4819
|
-
/**
|
|
4820
|
-
* AI Responder Service
|
|
4821
|
-
* Provides AI-powered automatic responses using Google Gemini API
|
|
4822
|
-
*
|
|
4823
|
-
* @security API key should be provided via injection token in production
|
|
4824
|
-
* @example
|
|
4825
|
-
* ```typescript
|
|
4826
|
-
* export const AX_CONVERSATION_AI_API_KEY = new InjectionToken<string>('AX_CONVERSATION_AI_API_KEY');
|
|
4827
|
-
*
|
|
4828
|
-
* providers: [
|
|
4829
|
-
* { provide: AX_CONVERSATION_AI_API_KEY, useValue: environment.geminiApiKey }
|
|
4830
|
-
* ]
|
|
4831
|
-
* ```
|
|
4832
|
-
*/
|
|
4833
|
-
|
|
4834
|
-
/**
|
|
4835
|
-
* Injection token for AI API key
|
|
4836
|
-
* Provide this in your app config to avoid hardcoding the API key
|
|
4837
|
-
*/
|
|
4838
|
-
declare const AX_CONVERSATION_AI_API_KEY: InjectionToken<string>;
|
|
4839
|
-
/**
|
|
4840
|
-
* Configuration for AI Responder
|
|
4841
|
-
*/
|
|
4842
|
-
interface AXConversationAiResponderConfig {
|
|
4843
|
-
/** Maximum retry attempts for failed requests */
|
|
4844
|
-
maxRetries?: number;
|
|
4845
|
-
/** Timeout for API requests in milliseconds */
|
|
4846
|
-
timeout?: number;
|
|
4847
|
-
/** Enable fallback to random replies on error */
|
|
4848
|
-
useFallbackReplies?: boolean;
|
|
4849
|
-
}
|
|
4850
|
-
declare class AXConversationAiResponderService {
|
|
4851
|
-
private readonly injectedApiKey;
|
|
4852
|
-
private readonly config;
|
|
4853
|
-
/**
|
|
4854
|
-
* Get API key from injection token
|
|
4855
|
-
* Returns undefined if not configured - service will use fallback responses
|
|
4856
|
-
*/
|
|
4857
|
-
private getApiKey;
|
|
4858
|
-
/**
|
|
4859
|
-
* Get AI-powered response for a given prompt
|
|
4860
|
-
* @param prompt - The user's message to respond to
|
|
4861
|
-
* @param retryCount - Current retry attempt (internal use)
|
|
4862
|
-
* @returns AI-generated response or fallback message
|
|
4863
|
-
*/
|
|
4864
|
-
getAIResponse(prompt: string, retryCount?: number): Promise<string>;
|
|
4865
|
-
/**
|
|
4866
|
-
* Fetch with timeout
|
|
4867
|
-
*/
|
|
4868
|
-
private fetchWithTimeout;
|
|
4869
|
-
/**
|
|
4870
|
-
* Delay helper for retry logic
|
|
4871
|
-
*/
|
|
4872
|
-
private delay;
|
|
4873
|
-
/**
|
|
4874
|
-
* Get a random fallback reply when AI is unavailable
|
|
4875
|
-
*/
|
|
4876
|
-
private getFallbackReply;
|
|
4877
|
-
/**
|
|
4878
|
-
* Check if AI service is available
|
|
4879
|
-
* @returns true if API key is configured
|
|
4880
|
-
*/
|
|
4881
|
-
isAvailable(): boolean;
|
|
4882
|
-
/**
|
|
4883
|
-
* Update configuration
|
|
4884
|
-
*/
|
|
4885
|
-
configure(config: Partial<AXConversationAiResponderConfig>): void;
|
|
4886
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationAiResponderService, never>;
|
|
4887
|
-
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXConversationAiResponderService>;
|
|
4888
|
-
}
|
|
4889
|
-
|
|
4890
|
-
declare class AXConversationIndexedDbMessageAiApi extends AXConversationIndexedDbMessageApi {
|
|
4891
|
-
private readonly aiResponder;
|
|
4892
|
-
private readonly AI_TYPING_INDICATOR_DELAY;
|
|
4893
|
-
private readonly AI_RESPONSE_DELAY;
|
|
4894
|
-
/**
|
|
4895
|
-
* Override sendMessage to trigger AI auto-response
|
|
4896
|
-
*/
|
|
4897
|
-
sendMessage(command: AXConversationSendMessageCommand): Promise<AXConversationMessage>;
|
|
4898
|
-
/**
|
|
4899
|
-
* Extract context from different message types for AI processing
|
|
4900
|
-
*/
|
|
4901
|
-
private extractMessageContext;
|
|
4902
|
-
/**
|
|
4903
|
-
* Generate AI response to user message
|
|
4904
|
-
*/
|
|
4905
|
-
private generateAIResponse;
|
|
4906
|
-
/**
|
|
4907
|
-
* Get conversation for AI response
|
|
4908
|
-
*/
|
|
4909
|
-
private getConversationForAI;
|
|
4910
|
-
/**
|
|
4911
|
-
* Get conversation history (last N messages)
|
|
4912
|
-
*/
|
|
4913
|
-
private getConversationHistory;
|
|
4914
|
-
/**
|
|
4915
|
-
* Create AI message directly in storage
|
|
4916
|
-
*/
|
|
4917
|
-
private createAIMessage;
|
|
4918
|
-
/**
|
|
4919
|
-
* Delay helper
|
|
4920
|
-
*/
|
|
4921
|
-
private delay;
|
|
4922
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationIndexedDbMessageAiApi, never>;
|
|
4923
|
-
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXConversationIndexedDbMessageAiApi>;
|
|
4924
|
-
}
|
|
4925
|
-
|
|
4926
4531
|
declare const AX_CONVERSATION_AUDIO_PRESENTATION: {
|
|
4927
4532
|
readonly icon: "fa-light fa-music text-amber-500";
|
|
4928
4533
|
readonly title: "Audio";
|
|
@@ -4995,16 +4600,14 @@ declare function notifyPickerValidationErrors(toast: AXToastService, translation
|
|
|
4995
4600
|
file: File;
|
|
4996
4601
|
errors: AXValidationRuleResult[];
|
|
4997
4602
|
}[]): void;
|
|
4998
|
-
/**
|
|
4999
|
-
declare function
|
|
5000
|
-
/** Close inline composer shell or popup host after send/cancel. */
|
|
5001
|
-
declare function dismissComposerPickerHost(composerService: AXConversationComposerService, popupRef?: AXPopupRef | null): void;
|
|
4603
|
+
/** Close popup/action-sheet host or inline composer shell after send/cancel. */
|
|
4604
|
+
declare function dismissComposerPickerHost(composerService: AXConversationComposerService, popupRef?: AXPopupRef | null, actionSheetRef?: AXActionSheetRef | null): void;
|
|
5002
4605
|
|
|
5003
4606
|
interface AXConversationAudioFile extends AXConversationComposerPickerUploadItem {
|
|
5004
4607
|
duration?: number;
|
|
5005
4608
|
dataUrl?: string;
|
|
5006
4609
|
}
|
|
5007
|
-
declare class AXConversationAudioPickerComponent implements OnDestroy {
|
|
4610
|
+
declare class AXConversationAudioPickerComponent implements OnDestroy, AXConversationComposerActionComponent {
|
|
5008
4611
|
private uploadsDismissed;
|
|
5009
4612
|
private retainUploadedOnDismiss;
|
|
5010
4613
|
readonly service: _angular_core.InputSignal<AXConversationComposerService>;
|
|
@@ -5019,7 +4622,9 @@ declare class AXConversationAudioPickerComponent implements OnDestroy {
|
|
|
5019
4622
|
readonly conversation: _angular_core.InputSignal<AXConversation>;
|
|
5020
4623
|
readonly maxFiles: _angular_core.InputSignal<number>;
|
|
5021
4624
|
readonly initialFiles: _angular_core.InputSignal<File[]>;
|
|
4625
|
+
readonly autoRun: _angular_core.InputSignal<boolean>;
|
|
5022
4626
|
readonly __popup__: _angular_core.InputSignal<AXPopupRef<any>>;
|
|
4627
|
+
readonly __actionSheet__: _angular_core.InputSignal<AXActionSheetRef<unknown>>;
|
|
5023
4628
|
readonly catalogFileType: "conversation-audio";
|
|
5024
4629
|
readonly audioFiles: _angular_core.WritableSignal<AXConversationAudioFile[]>;
|
|
5025
4630
|
readonly isDragging: _angular_core.WritableSignal<boolean>;
|
|
@@ -5029,6 +4634,7 @@ declare class AXConversationAudioPickerComponent implements OnDestroy {
|
|
|
5029
4634
|
caption: string;
|
|
5030
4635
|
readonly allowMultiple: _angular_core.Signal<boolean>;
|
|
5031
4636
|
constructor();
|
|
4637
|
+
activate(): Promise<void>;
|
|
5032
4638
|
private createUtilityContext;
|
|
5033
4639
|
private getCatalogFileTypeDef;
|
|
5034
4640
|
private runUtility;
|
|
@@ -5050,7 +4656,7 @@ declare class AXConversationAudioPickerComponent implements OnDestroy {
|
|
|
5050
4656
|
getSelectedCountText(): string;
|
|
5051
4657
|
getSendText(): string;
|
|
5052
4658
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationAudioPickerComponent, never>;
|
|
5053
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXConversationAudioPickerComponent, "ax-conversation-audio-picker", never, { "service": { "alias": "service"; "required": false; "isSignal": true; }; "conversation": { "alias": "conversation"; "required": true; "isSignal": true; }; "maxFiles": { "alias": "maxFiles"; "required": false; "isSignal": true; }; "initialFiles": { "alias": "initialFiles"; "required": false; "isSignal": true; }; "__popup__": { "alias": "__popup__"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
4659
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXConversationAudioPickerComponent, "ax-conversation-audio-picker", never, { "service": { "alias": "service"; "required": false; "isSignal": true; }; "conversation": { "alias": "conversation"; "required": true; "isSignal": true; }; "maxFiles": { "alias": "maxFiles"; "required": false; "isSignal": true; }; "initialFiles": { "alias": "initialFiles"; "required": false; "isSignal": true; }; "autoRun": { "alias": "autoRun"; "required": false; "isSignal": true; }; "__popup__": { "alias": "__popup__"; "required": false; "isSignal": true; }; "__actionSheet__": { "alias": "__actionSheet__"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
5054
4660
|
}
|
|
5055
4661
|
|
|
5056
4662
|
declare const AX_CONVERSATION_COMPOSER_EMOJI_TAB: AXConversationComposerTab;
|
|
@@ -5125,7 +4731,7 @@ interface AXConversationAttachedFile {
|
|
|
5125
4731
|
error?: string;
|
|
5126
4732
|
abortController?: AbortController;
|
|
5127
4733
|
}
|
|
5128
|
-
declare class AXConversationFilePickerComponent implements OnDestroy {
|
|
4734
|
+
declare class AXConversationFilePickerComponent implements OnDestroy, AXConversationComposerActionComponent {
|
|
5129
4735
|
private uploadsDismissed;
|
|
5130
4736
|
private retainUploadedOnDismiss;
|
|
5131
4737
|
private readonly uploader;
|
|
@@ -5140,7 +4746,9 @@ declare class AXConversationFilePickerComponent implements OnDestroy {
|
|
|
5140
4746
|
readonly conversation: _angular_core.InputSignal<AXConversation>;
|
|
5141
4747
|
readonly maxFiles: _angular_core.InputSignal<number>;
|
|
5142
4748
|
readonly initialFiles: _angular_core.InputSignal<File[]>;
|
|
4749
|
+
readonly autoRun: _angular_core.InputSignal<boolean>;
|
|
5143
4750
|
readonly __popup__: _angular_core.InputSignal<AXPopupRef<any>>;
|
|
4751
|
+
readonly __actionSheet__: _angular_core.InputSignal<AXActionSheetRef<unknown>>;
|
|
5144
4752
|
readonly catalogFileType: "conversation-file";
|
|
5145
4753
|
readonly allowMultiple: _angular_core.Signal<boolean>;
|
|
5146
4754
|
readonly files: _angular_core.WritableSignal<AXConversationAttachedFile[]>;
|
|
@@ -5150,6 +4758,7 @@ declare class AXConversationFilePickerComponent implements OnDestroy {
|
|
|
5150
4758
|
private catalogFileTypeDef?;
|
|
5151
4759
|
caption: string;
|
|
5152
4760
|
constructor();
|
|
4761
|
+
activate(): Promise<void>;
|
|
5153
4762
|
private createUtilityContext;
|
|
5154
4763
|
private getCatalogFileTypeDef;
|
|
5155
4764
|
private pickerKind;
|
|
@@ -5171,7 +4780,7 @@ declare class AXConversationFilePickerComponent implements OnDestroy {
|
|
|
5171
4780
|
getSelectedCountText(): string;
|
|
5172
4781
|
getUploadingLabel(progress: number): string;
|
|
5173
4782
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationFilePickerComponent, never>;
|
|
5174
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXConversationFilePickerComponent, "ax-conversation-file-picker", never, { "service": { "alias": "service"; "required": false; "isSignal": true; }; "conversation": { "alias": "conversation"; "required": true; "isSignal": true; }; "maxFiles": { "alias": "maxFiles"; "required": false; "isSignal": true; }; "initialFiles": { "alias": "initialFiles"; "required": false; "isSignal": true; }; "__popup__": { "alias": "__popup__"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
4783
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXConversationFilePickerComponent, "ax-conversation-file-picker", never, { "service": { "alias": "service"; "required": false; "isSignal": true; }; "conversation": { "alias": "conversation"; "required": true; "isSignal": true; }; "maxFiles": { "alias": "maxFiles"; "required": false; "isSignal": true; }; "initialFiles": { "alias": "initialFiles"; "required": false; "isSignal": true; }; "autoRun": { "alias": "autoRun"; "required": false; "isSignal": true; }; "__popup__": { "alias": "__popup__"; "required": false; "isSignal": true; }; "__actionSheet__": { "alias": "__actionSheet__"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
5175
4784
|
}
|
|
5176
4785
|
|
|
5177
4786
|
declare const AX_CONVERSATION_IMAGE_PRESENTATION: {
|
|
@@ -5191,7 +4800,7 @@ declare class AXConversationImageFileTypeProvider extends AXFileTypeInfoProvider
|
|
|
5191
4800
|
interface AXConversationImageFile extends AXConversationComposerPickerUploadItem {
|
|
5192
4801
|
preview: string;
|
|
5193
4802
|
}
|
|
5194
|
-
declare class AXConversationImagePickerComponent implements OnDestroy {
|
|
4803
|
+
declare class AXConversationImagePickerComponent implements OnDestroy, AXConversationComposerActionComponent {
|
|
5195
4804
|
private uploadsDismissed;
|
|
5196
4805
|
/** Uploaded blobs are referenced by the sent message — do not delete on dismiss. */
|
|
5197
4806
|
private retainUploadedOnDismiss;
|
|
@@ -5208,7 +4817,9 @@ declare class AXConversationImagePickerComponent implements OnDestroy {
|
|
|
5208
4817
|
readonly conversation: _angular_core.InputSignal<AXConversation>;
|
|
5209
4818
|
readonly maxFiles: _angular_core.InputSignal<number>;
|
|
5210
4819
|
readonly initialFiles: _angular_core.InputSignal<File[]>;
|
|
4820
|
+
readonly autoRun: _angular_core.InputSignal<boolean>;
|
|
5211
4821
|
readonly __popup__: _angular_core.InputSignal<AXPopupRef<any>>;
|
|
4822
|
+
readonly __actionSheet__: _angular_core.InputSignal<AXActionSheetRef<unknown>>;
|
|
5212
4823
|
readonly images: _angular_core.WritableSignal<AXConversationImageFile[]>;
|
|
5213
4824
|
readonly isDragging: _angular_core.WritableSignal<boolean>;
|
|
5214
4825
|
readonly emptyIconClass: _angular_core.Signal<"fa-light fa-image text-purple-500" | "fa-light fa-cloud-arrow-up">;
|
|
@@ -5216,6 +4827,7 @@ declare class AXConversationImagePickerComponent implements OnDestroy {
|
|
|
5216
4827
|
readonly allowMultiple: _angular_core.Signal<boolean>;
|
|
5217
4828
|
private imageFileType?;
|
|
5218
4829
|
constructor();
|
|
4830
|
+
activate(): Promise<void>;
|
|
5219
4831
|
private createUtilityContext;
|
|
5220
4832
|
private loadImageFileType;
|
|
5221
4833
|
handleFiles(files: File[]): Promise<void>;
|
|
@@ -5234,20 +4846,23 @@ declare class AXConversationImagePickerComponent implements OnDestroy {
|
|
|
5234
4846
|
getSelectedCountText(): string;
|
|
5235
4847
|
getSendText(): string;
|
|
5236
4848
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationImagePickerComponent, never>;
|
|
5237
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXConversationImagePickerComponent, "ax-conversation-image-picker", never, { "service": { "alias": "service"; "required": false; "isSignal": true; }; "conversation": { "alias": "conversation"; "required": true; "isSignal": true; }; "maxFiles": { "alias": "maxFiles"; "required": false; "isSignal": true; }; "initialFiles": { "alias": "initialFiles"; "required": false; "isSignal": true; }; "__popup__": { "alias": "__popup__"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
4849
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXConversationImagePickerComponent, "ax-conversation-image-picker", never, { "service": { "alias": "service"; "required": false; "isSignal": true; }; "conversation": { "alias": "conversation"; "required": true; "isSignal": true; }; "maxFiles": { "alias": "maxFiles"; "required": false; "isSignal": true; }; "initialFiles": { "alias": "initialFiles"; "required": false; "isSignal": true; }; "autoRun": { "alias": "autoRun"; "required": false; "isSignal": true; }; "__popup__": { "alias": "__popup__"; "required": false; "isSignal": true; }; "__actionSheet__": { "alias": "__actionSheet__"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
5238
4850
|
}
|
|
5239
4851
|
|
|
5240
4852
|
declare class AXConversationLocationPickerComponent {
|
|
5241
|
-
|
|
5242
|
-
private readonly
|
|
4853
|
+
readonly service: _angular_core.InputSignal<AXConversationComposerService>;
|
|
4854
|
+
private readonly composerServiceFromInjector;
|
|
4855
|
+
private get composerService();
|
|
5243
4856
|
readonly translation: AXTranslationService;
|
|
5244
4857
|
readonly conversation: _angular_core.InputSignal<AXConversation>;
|
|
4858
|
+
readonly __popup__: _angular_core.InputSignal<AXPopupRef<any>>;
|
|
4859
|
+
readonly __actionSheet__: _angular_core.InputSignal<AXActionSheetRef<unknown>>;
|
|
5245
4860
|
readonly currentLocation: _angular_core.WritableSignal<AXConversationLocationPayload>;
|
|
5246
4861
|
onMarkerAdded(event: AXMapMarker): void;
|
|
5247
4862
|
sendLocation(): Promise<void>;
|
|
5248
4863
|
cancel(): void;
|
|
5249
4864
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationLocationPickerComponent, never>;
|
|
5250
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXConversationLocationPickerComponent, "ax-conversation-location-picker", never, { "conversation": { "alias": "conversation"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
4865
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXConversationLocationPickerComponent, "ax-conversation-location-picker", never, { "service": { "alias": "service"; "required": false; "isSignal": true; }; "conversation": { "alias": "conversation"; "required": true; "isSignal": true; }; "__popup__": { "alias": "__popup__"; "required": false; "isSignal": true; }; "__actionSheet__": { "alias": "__actionSheet__"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
5251
4866
|
}
|
|
5252
4867
|
|
|
5253
4868
|
declare class AXConversationPickerFooterComponent {
|
|
@@ -5311,12 +4926,15 @@ declare class AXConversationPickerEmptyComponent {
|
|
|
5311
4926
|
declare class AXConversationPickerShellComponent {
|
|
5312
4927
|
private readonly toast;
|
|
5313
4928
|
private readonly translation;
|
|
4929
|
+
private readonly zone;
|
|
5314
4930
|
readonly fileType: _angular_core.InputSignal<string>;
|
|
5315
4931
|
readonly multiple: _angular_core.InputSignal<boolean>;
|
|
5316
4932
|
readonly filesSelected: _angular_core.OutputEmitterRef<File[]>;
|
|
5317
4933
|
readonly dragEnter: _angular_core.OutputEmitterRef<DragEvent>;
|
|
5318
4934
|
readonly dragLeave: _angular_core.OutputEmitterRef<DragEvent>;
|
|
5319
4935
|
readonly dragOver: _angular_core.OutputEmitterRef<DragEvent>;
|
|
4936
|
+
/** Open the OS file picker for this shell's catalog. */
|
|
4937
|
+
browse(): Promise<void>;
|
|
5320
4938
|
protected onZoneFileChange(event: AXUploaderFileChangeEvent): void;
|
|
5321
4939
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationPickerShellComponent, never>;
|
|
5322
4940
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXConversationPickerShellComponent, "ax-conversation-picker-shell", never, { "fileType": { "alias": "fileType"; "required": true; "isSignal": true; }; "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; }, { "filesSelected": "filesSelected"; "dragEnter": "dragEnter"; "dragLeave": "dragLeave"; "dragOver": "dragOver"; }, never, ["*"], true, never>;
|
|
@@ -5386,7 +5004,7 @@ interface AXConversationVideoFile extends AXConversationComposerPickerUploadItem
|
|
|
5386
5004
|
preview?: string;
|
|
5387
5005
|
duration?: number;
|
|
5388
5006
|
}
|
|
5389
|
-
declare class AXConversationVideoPickerComponent implements OnDestroy {
|
|
5007
|
+
declare class AXConversationVideoPickerComponent implements OnDestroy, AXConversationComposerActionComponent {
|
|
5390
5008
|
private uploadsDismissed;
|
|
5391
5009
|
private retainUploadedOnDismiss;
|
|
5392
5010
|
readonly service: _angular_core.InputSignal<AXConversationComposerService>;
|
|
@@ -5401,7 +5019,9 @@ declare class AXConversationVideoPickerComponent implements OnDestroy {
|
|
|
5401
5019
|
readonly conversation: _angular_core.InputSignal<AXConversation>;
|
|
5402
5020
|
readonly maxFiles: _angular_core.InputSignal<number>;
|
|
5403
5021
|
readonly initialFiles: _angular_core.InputSignal<File[]>;
|
|
5022
|
+
readonly autoRun: _angular_core.InputSignal<boolean>;
|
|
5404
5023
|
readonly __popup__: _angular_core.InputSignal<AXPopupRef<any>>;
|
|
5024
|
+
readonly __actionSheet__: _angular_core.InputSignal<AXActionSheetRef<unknown>>;
|
|
5405
5025
|
readonly catalogFileType: "conversation-video";
|
|
5406
5026
|
readonly videos: _angular_core.WritableSignal<AXConversationVideoFile[]>;
|
|
5407
5027
|
readonly isDragging: _angular_core.WritableSignal<boolean>;
|
|
@@ -5411,6 +5031,7 @@ declare class AXConversationVideoPickerComponent implements OnDestroy {
|
|
|
5411
5031
|
readonly emptyIconClass: _angular_core.Signal<"fa-light fa-video ax-text-blue-500" | "fa-light fa-cloud-arrow-up">;
|
|
5412
5032
|
private catalogFileTypeDef?;
|
|
5413
5033
|
constructor();
|
|
5034
|
+
activate(): Promise<void>;
|
|
5414
5035
|
private createUtilityContext;
|
|
5415
5036
|
private getCatalogFileTypeDef;
|
|
5416
5037
|
private runUtility;
|
|
@@ -5432,7 +5053,7 @@ declare class AXConversationVideoPickerComponent implements OnDestroy {
|
|
|
5432
5053
|
getSelectedCountText(): string;
|
|
5433
5054
|
getSendText(): string;
|
|
5434
5055
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationVideoPickerComponent, never>;
|
|
5435
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXConversationVideoPickerComponent, "ax-conversation-video-picker", never, { "service": { "alias": "service"; "required": false; "isSignal": true; }; "conversation": { "alias": "conversation"; "required": true; "isSignal": true; }; "maxFiles": { "alias": "maxFiles"; "required": false; "isSignal": true; }; "initialFiles": { "alias": "initialFiles"; "required": false; "isSignal": true; }; "__popup__": { "alias": "__popup__"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
5056
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXConversationVideoPickerComponent, "ax-conversation-video-picker", never, { "service": { "alias": "service"; "required": false; "isSignal": true; }; "conversation": { "alias": "conversation"; "required": true; "isSignal": true; }; "maxFiles": { "alias": "maxFiles"; "required": false; "isSignal": true; }; "initialFiles": { "alias": "initialFiles"; "required": false; "isSignal": true; }; "autoRun": { "alias": "autoRun"; "required": false; "isSignal": true; }; "__popup__": { "alias": "__popup__"; "required": false; "isSignal": true; }; "__actionSheet__": { "alias": "__actionSheet__"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
5436
5057
|
}
|
|
5437
5058
|
|
|
5438
5059
|
declare const AX_CONVERSATION_VOICE_PRESENTATION: {
|
|
@@ -5452,14 +5073,21 @@ declare class AXConversationVoiceFileTypeProvider extends AXFileTypeInfoProvider
|
|
|
5452
5073
|
declare function mergeVoiceUploadResult(payload: AXConversationMessagePayload, result: AXUploadResult): AXConversationMessagePayload;
|
|
5453
5074
|
declare function applyVoiceLocalPreview(payload: AXConversationMessagePayload, localUrl: string): AXConversationMessagePayload;
|
|
5454
5075
|
|
|
5455
|
-
declare class AXConversationVoiceRecorderComponent {
|
|
5076
|
+
declare class AXConversationVoiceRecorderComponent implements AXConversationComposerActionComponent {
|
|
5456
5077
|
private readonly platformId;
|
|
5457
5078
|
private readonly destroyRef;
|
|
5458
|
-
|
|
5079
|
+
readonly service: _angular_core.InputSignal<AXConversationComposerService>;
|
|
5080
|
+
private readonly composerServiceFromInjector;
|
|
5081
|
+
private get composerService();
|
|
5459
5082
|
private readonly uploader;
|
|
5083
|
+
private readonly fileTypeRegistry;
|
|
5460
5084
|
private readonly toast;
|
|
5461
5085
|
readonly translation: AXTranslationService;
|
|
5462
5086
|
readonly conversation: _angular_core.InputSignal<AXConversation>;
|
|
5087
|
+
readonly initialFiles: _angular_core.InputSignal<File[]>;
|
|
5088
|
+
readonly autoRun: _angular_core.InputSignal<boolean>;
|
|
5089
|
+
readonly __popup__: _angular_core.InputSignal<AXPopupRef<any>>;
|
|
5090
|
+
readonly __actionSheet__: _angular_core.InputSignal<AXActionSheetRef<unknown>>;
|
|
5463
5091
|
readonly recordingComplete: _angular_core.OutputEmitterRef<Blob>;
|
|
5464
5092
|
readonly recordingCancelled: _angular_core.OutputEmitterRef<void>;
|
|
5465
5093
|
readonly isRecording: _angular_core.WritableSignal<boolean>;
|
|
@@ -5475,7 +5103,9 @@ declare class AXConversationVoiceRecorderComponent {
|
|
|
5475
5103
|
private uploadAbortController?;
|
|
5476
5104
|
readonly formattedTime: _angular_core.Signal<string>;
|
|
5477
5105
|
constructor();
|
|
5106
|
+
activate(): Promise<void>;
|
|
5478
5107
|
startRecording(): Promise<void>;
|
|
5108
|
+
private dismissHost;
|
|
5479
5109
|
/** Stop recording and send */
|
|
5480
5110
|
stopRecording(): void;
|
|
5481
5111
|
cancelRecording(): void;
|
|
@@ -5489,7 +5119,7 @@ declare class AXConversationVoiceRecorderComponent {
|
|
|
5489
5119
|
private sendVoiceMessage;
|
|
5490
5120
|
private stopAndCleanup;
|
|
5491
5121
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationVoiceRecorderComponent, never>;
|
|
5492
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXConversationVoiceRecorderComponent, "ax-conversation-voice-recorder", never, { "conversation": { "alias": "conversation"; "required": false; "isSignal": true; }; }, { "recordingComplete": "recordingComplete"; "recordingCancelled": "recordingCancelled"; }, never, never, true, never>;
|
|
5122
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXConversationVoiceRecorderComponent, "ax-conversation-voice-recorder", never, { "service": { "alias": "service"; "required": false; "isSignal": true; }; "conversation": { "alias": "conversation"; "required": true; "isSignal": true; }; "initialFiles": { "alias": "initialFiles"; "required": false; "isSignal": true; }; "autoRun": { "alias": "autoRun"; "required": false; "isSignal": true; }; "__popup__": { "alias": "__popup__"; "required": false; "isSignal": true; }; "__actionSheet__": { "alias": "__actionSheet__"; "required": false; "isSignal": true; }; }, { "recordingComplete": "recordingComplete"; "recordingCancelled": "recordingCancelled"; }, never, never, true, never>;
|
|
5493
5123
|
}
|
|
5494
5124
|
|
|
5495
5125
|
declare const AX_CONVERSATION_COMPOSER_EMOJI_ACTION: AXConversationComposerAction;
|
|
@@ -5511,6 +5141,8 @@ declare const AX_CONVERSATION_FILE_TYPES_READY: InjectionToken<boolean>;
|
|
|
5511
5141
|
/** Registers validation rules and lazy conversation file-type catalogs for composer actions. */
|
|
5512
5142
|
declare function provideConversationComposerFileTypes(): Provider[];
|
|
5513
5143
|
|
|
5144
|
+
/** Ensure a built-in conversation catalog is registered before pre-overlay file selection. */
|
|
5145
|
+
declare function ensureConversationFileCatalogRegistered(registry: AXFileTypeRegistryService, catalogName: string): Promise<void>;
|
|
5514
5146
|
/**
|
|
5515
5147
|
* Lazy-loads conversation file catalogs for the root file-type registry.
|
|
5516
5148
|
* Must not inject {@link AXConversationComposerActionRegistry} — that registry
|
|
@@ -5531,170 +5163,6 @@ declare function createLocalPreviewUrl(fileService: AXFileService, platformId: o
|
|
|
5531
5163
|
|
|
5532
5164
|
declare function resolveComposerMaxFiles(action: Pick<AXConversationComposerAction, 'maxFiles'> | undefined, config: Pick<Required<AXConversationConfig>, 'maxFilesPerMessage'>): number;
|
|
5533
5165
|
|
|
5534
|
-
interface AXConversationInfoProfileField {
|
|
5535
|
-
id: string;
|
|
5536
|
-
labelKey: string;
|
|
5537
|
-
value: string;
|
|
5538
|
-
icon: string;
|
|
5539
|
-
}
|
|
5540
|
-
type AXConversationMediaCategoryId = 'image' | 'video' | 'file' | 'audio' | 'voice' | 'sticker' | 'location' | 'link';
|
|
5541
|
-
interface AXConversationMediaCategory {
|
|
5542
|
-
id: AXConversationMediaCategoryId;
|
|
5543
|
-
labelKey: string;
|
|
5544
|
-
countLabelKey: string;
|
|
5545
|
-
icon: string;
|
|
5546
|
-
count: number;
|
|
5547
|
-
}
|
|
5548
|
-
declare function messageContainsLink(message: AXConversationMessage): boolean;
|
|
5549
|
-
declare function getPrivatePeerParticipant(conversation: AXConversation, currentUserId?: string): AXConversationParticipant | undefined;
|
|
5550
|
-
declare function getConversationProfileFields(conversation: AXConversation, currentUserId?: string): AXConversationInfoProfileField[];
|
|
5551
|
-
declare function getConversationMediaCategories(messages: AXConversationMessage[]): AXConversationMediaCategory[];
|
|
5552
|
-
declare function filterMessagesByMediaCategory(messages: AXConversationMessage[], categoryId: AXConversationMediaCategoryId): AXConversationMessage[];
|
|
5553
|
-
declare function isGridMediaCategory(categoryId: AXConversationMediaCategoryId): boolean;
|
|
5554
|
-
declare function isAttachmentListCategory(categoryId: AXConversationMediaCategoryId): boolean;
|
|
5555
|
-
interface AXConversationMediaGalleryTile {
|
|
5556
|
-
key: string;
|
|
5557
|
-
message: AXConversationMessage;
|
|
5558
|
-
kind: 'image' | 'video' | 'sticker';
|
|
5559
|
-
image?: AXConversationImageMediaItem;
|
|
5560
|
-
video?: AXConversationVideoMediaItem;
|
|
5561
|
-
stickerUrl?: string;
|
|
5562
|
-
stickerAlt?: string;
|
|
5563
|
-
}
|
|
5564
|
-
declare function buildMediaGalleryTiles(messages: AXConversationMessage[], categoryId: AXConversationMediaCategoryId): AXConversationMediaGalleryTile[];
|
|
5565
|
-
declare function resolveVideoThumbnailUrl(video: AXConversationVideoMediaItem): string | undefined;
|
|
5566
|
-
declare function resolveGalleryImageUrl(image: AXConversationImageMediaItem): string | undefined;
|
|
5567
|
-
declare function getMessageVideoItems(message: AXConversationMessage): AXConversationVideoMediaItem[];
|
|
5568
|
-
declare function getMessageAudioItems(message: AXConversationMessage): AXConversationAudioMediaItem[];
|
|
5569
|
-
interface AXConversationMediaPageResult {
|
|
5570
|
-
items: AXConversationMessage[];
|
|
5571
|
-
hasMore: boolean;
|
|
5572
|
-
nextCursor?: string;
|
|
5573
|
-
page: number;
|
|
5574
|
-
}
|
|
5575
|
-
declare function fetchConversationMediaPage(conversationApi: AXConversationApi, conversationId: string, page: number, pageSize?: number, cursor?: string): Promise<AXConversationMediaPageResult>;
|
|
5576
|
-
/** @deprecated Use {@link fetchConversationMediaPage} — loads only the first page. */
|
|
5577
|
-
declare function fetchConversationMediaMessages(conversationApi: AXConversationApi, conversationId: string, pageSize: number): Promise<AXConversationMessage[]>;
|
|
5578
|
-
/** Merge media API results with in-memory messages needed for link/sticker/voice/location tabs. */
|
|
5579
|
-
declare function mergeInfoPanelMessages(mediaMessages: AXConversationMessage[], supplemental: AXConversationMessage[]): AXConversationMessage[];
|
|
5580
|
-
declare function filterSupplementalInfoPanelMessages(messages: AXConversationMessage[]): AXConversationMessage[];
|
|
5581
|
-
|
|
5582
|
-
interface AXInfoPanelQuickAction {
|
|
5583
|
-
id: string;
|
|
5584
|
-
labelKey: string;
|
|
5585
|
-
icon: string;
|
|
5586
|
-
danger?: boolean;
|
|
5587
|
-
}
|
|
5588
|
-
declare class AXConversationInfoPanelComponent extends AXClosableComponent implements OnInit, OnDestroy {
|
|
5589
|
-
private readonly toastService;
|
|
5590
|
-
readonly translation: AXTranslationService;
|
|
5591
|
-
private readonly platform;
|
|
5592
|
-
private readonly injectedConversationService;
|
|
5593
|
-
readonly onClosed: _angular_core.OutputEmitterRef<AXComponentCloseEvent>;
|
|
5594
|
-
conversation: AXConversation;
|
|
5595
|
-
conversationService: AXConversationService;
|
|
5596
|
-
readonly activeTab: _angular_core.WritableSignal<"profile" | "manage">;
|
|
5597
|
-
readonly showMemberSearch: _angular_core.WritableSignal<boolean>;
|
|
5598
|
-
readonly panelView: _angular_core.WritableSignal<"main" | "media">;
|
|
5599
|
-
readonly selectedMediaCategory: _angular_core.WritableSignal<AXConversationMediaCategory>;
|
|
5600
|
-
readonly mediaViewLoader: () => Promise<typeof _acorex_components_conversation.AXConversationInfoMediaViewComponent>;
|
|
5601
|
-
readonly conversationMessages: _angular_core.WritableSignal<AXConversationMessage[]>;
|
|
5602
|
-
readonly loadingMessages: _angular_core.WritableSignal<boolean>;
|
|
5603
|
-
readonly loadingMoreMedia: _angular_core.WritableSignal<boolean>;
|
|
5604
|
-
readonly mediaHasMore: _angular_core.WritableSignal<boolean>;
|
|
5605
|
-
private mediaNextPage;
|
|
5606
|
-
private mediaNextCursor;
|
|
5607
|
-
readonly memberSearchQuery: _angular_core.WritableSignal<string>;
|
|
5608
|
-
archived: boolean;
|
|
5609
|
-
private initialNotifications;
|
|
5610
|
-
private initialArchived;
|
|
5611
|
-
editTitle: string;
|
|
5612
|
-
editAvatar: string;
|
|
5613
|
-
private groupTitleSaveTimer;
|
|
5614
|
-
private groupDetailsSaveInFlight;
|
|
5615
|
-
readonly backgroundPresets: {
|
|
5616
|
-
label: string;
|
|
5617
|
-
id: string;
|
|
5618
|
-
value: AXConversationMessageListThemeBackground;
|
|
5619
|
-
}[];
|
|
5620
|
-
readonly heroSubtitle: _angular_core.Signal<string>;
|
|
5621
|
-
readonly liveConversation: _angular_core.Signal<AXConversation>;
|
|
5622
|
-
readonly isConversationMuted: _angular_core.Signal<boolean>;
|
|
5623
|
-
readonly profileFields: _angular_core.Signal<_acorex_components_conversation.AXConversationInfoProfileField[]>;
|
|
5624
|
-
readonly mediaCategories: _angular_core.Signal<AXConversationMediaCategory[]>;
|
|
5625
|
-
readonly quickActions: _angular_core.Signal<AXInfoPanelQuickAction[]>;
|
|
5626
|
-
readonly filteredMembers: _angular_core.Signal<AXConversationParticipant[]>;
|
|
5627
|
-
ngOnInit(): void;
|
|
5628
|
-
private loadConversationMessages;
|
|
5629
|
-
loadMoreMedia(): Promise<void>;
|
|
5630
|
-
isPrivateConversation(): boolean;
|
|
5631
|
-
isGroupConversation(): boolean;
|
|
5632
|
-
membersSectionTitle(): string;
|
|
5633
|
-
getMemberRoleLabel(participant: AXConversationParticipant): string | null;
|
|
5634
|
-
onMemberSearchChange(value: string | null | undefined): void;
|
|
5635
|
-
setActiveTab(tab: 'profile' | 'manage'): void;
|
|
5636
|
-
toggleMemberSearch(): void;
|
|
5637
|
-
openMediaCategory(category: AXConversationMediaCategory): void;
|
|
5638
|
-
closeMediaView(): void;
|
|
5639
|
-
getMediaViewInputs(category: AXConversationMediaCategory): Record<string, unknown>;
|
|
5640
|
-
getMediaRowLabel(category: AXConversationMediaCategory): string;
|
|
5641
|
-
getMemberSubtitle(participant: AXConversationParticipant): string;
|
|
5642
|
-
onQuickAction(actionId: string): void;
|
|
5643
|
-
toggleConversationMute(): Promise<void>;
|
|
5644
|
-
onNotificationsChange(value: boolean): Promise<void>;
|
|
5645
|
-
onArchivedChange(value: boolean): Promise<void>;
|
|
5646
|
-
close(data?: unknown): void;
|
|
5647
|
-
closeAll(): void;
|
|
5648
|
-
onLeave(): Promise<void>;
|
|
5649
|
-
onGroupTitleChange(value: string): void;
|
|
5650
|
-
onGroupAvatarChange(value: string): void;
|
|
5651
|
-
private persistGroupDetails;
|
|
5652
|
-
isBackgroundSelected(preset: {
|
|
5653
|
-
id: string;
|
|
5654
|
-
value: AXConversationMessageListThemeBackground;
|
|
5655
|
-
}): boolean;
|
|
5656
|
-
presetBackgroundPreview(preset: AXConversationMessageListThemeBackground): string;
|
|
5657
|
-
applyMessageListBackground(value: AXConversationMessageListBackground): Promise<void>;
|
|
5658
|
-
getBackgroundAriaLabel(label: string): string;
|
|
5659
|
-
private translateBackgroundPresetLabel;
|
|
5660
|
-
ngOnDestroy(): void;
|
|
5661
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationInfoPanelComponent, never>;
|
|
5662
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXConversationInfoPanelComponent, "ax-conversation-info-panel", never, {}, { "onClosed": "onClosed"; }, never, never, true, never>;
|
|
5663
|
-
}
|
|
5664
|
-
|
|
5665
|
-
declare class AXConversationInfoMediaViewComponent {
|
|
5666
|
-
private readonly translation;
|
|
5667
|
-
private readonly parentInjector;
|
|
5668
|
-
readonly category: _angular_core.InputSignal<AXConversationMediaCategory>;
|
|
5669
|
-
readonly messages: _angular_core.InputSignal<AXConversationMessage[]>;
|
|
5670
|
-
readonly conversation: _angular_core.InputSignal<AXConversation>;
|
|
5671
|
-
readonly conversationServiceInput: _angular_core.InputSignal<AXConversationService>;
|
|
5672
|
-
readonly hasMoreMedia: _angular_core.InputSignal<boolean>;
|
|
5673
|
-
readonly loadingMoreMedia: _angular_core.InputSignal<boolean>;
|
|
5674
|
-
readonly onLoadMoreMedia: _angular_core.InputSignal<() => void | Promise<void>>;
|
|
5675
|
-
/** Callback for lazy outlet wiring (alternative to the `back` output). */
|
|
5676
|
-
readonly onBack: _angular_core.InputSignal<() => void>;
|
|
5677
|
-
readonly back: _angular_core.OutputEmitterRef<void>;
|
|
5678
|
-
readonly items: _angular_core.Signal<AXConversationMessage[]>;
|
|
5679
|
-
readonly isGrid: _angular_core.Signal<boolean>;
|
|
5680
|
-
readonly isAttachmentList: _angular_core.Signal<boolean>;
|
|
5681
|
-
readonly galleryTiles: _angular_core.Signal<_acorex_components_conversation.AXConversationMediaGalleryTile[]>;
|
|
5682
|
-
readonly rendererInjector: _angular_core.Signal<_angular_core.DestroyableInjector>;
|
|
5683
|
-
readonly titleLabel: _angular_core.Signal<string>;
|
|
5684
|
-
readonly getMessageVideoItems: typeof getMessageVideoItems;
|
|
5685
|
-
readonly getMessageAudioItems: typeof getMessageAudioItems;
|
|
5686
|
-
getRendererComponent(message: AXConversationMessage): _angular_core.Type<_acorex_components_conversation.AXConversationMessageRendererComponent>;
|
|
5687
|
-
getRendererComponentLoader(message: AXConversationMessage): (() => Promise<_angular_core.Type<_acorex_components_conversation.AXConversationMessageRendererComponent>>) | (() => Promise<typeof _acorex_components_conversation.AXConversationFallbackRendererComponent>);
|
|
5688
|
-
getRendererInputs(message: AXConversationMessage): {
|
|
5689
|
-
message: AXConversationMessage;
|
|
5690
|
-
};
|
|
5691
|
-
formatTimestamp(message: AXConversationMessage): string;
|
|
5692
|
-
handleBack(): void;
|
|
5693
|
-
onScrollThreshold(edge: 'top' | 'bottom'): void;
|
|
5694
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationInfoMediaViewComponent, never>;
|
|
5695
|
-
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>;
|
|
5696
|
-
}
|
|
5697
|
-
|
|
5698
5166
|
declare class AXConversationInfoBarSearchComponent {
|
|
5699
5167
|
private readonly platformId;
|
|
5700
5168
|
private readonly destroyRef;
|
|
@@ -5737,7 +5205,7 @@ declare class AXConversationInfoBarSearchComponent {
|
|
|
5737
5205
|
*/
|
|
5738
5206
|
|
|
5739
5207
|
/**
|
|
5740
|
-
* Search in conversation action (inline)
|
|
5208
|
+
* Search in conversation action (inline on desktop, menu on mobile)
|
|
5741
5209
|
*/
|
|
5742
5210
|
declare const AX_CONVERSATION_INFO_BAR_SEARCH_ACTION: AXConversationInfoBarAction;
|
|
5743
5211
|
/**
|
|
@@ -6212,14 +5680,6 @@ declare const AX_CONVERSATION_MESSAGE_DELETE_ACTION: AXConversationMessageAction
|
|
|
6212
5680
|
*/
|
|
6213
5681
|
declare const AX_CONVERSATION_MESSAGE_FORWARD_ACTION: AXConversationMessageAction;
|
|
6214
5682
|
|
|
6215
|
-
/** Normalize payload; loads media normalizers on demand. */
|
|
6216
|
-
declare function normalizeMessagePayloadAsync(payload: AXConversationMessagePayload): Promise<AXConversationMessagePayload>;
|
|
6217
|
-
/**
|
|
6218
|
-
* Sync normalize — uses cached normalizers when available.
|
|
6219
|
-
* Media payloads pass through until a normalizer chunk has loaded (renderers normalize on display).
|
|
6220
|
-
*/
|
|
6221
|
-
declare function normalizeMessagePayload(payload: AXConversationMessagePayload): AXConversationMessagePayload;
|
|
6222
|
-
|
|
6223
5683
|
declare const AX_CONVERSATION_TEXT_RENDERER: AXConversationMessageRenderer;
|
|
6224
5684
|
|
|
6225
5685
|
declare const AX_CONVERSATION_IMAGE_RENDERER: AXConversationMessageRenderer;
|
|
@@ -6649,6 +6109,52 @@ declare function copyWithFileTypeFallback(message: AXConversationMessage, regist
|
|
|
6649
6109
|
/** Use file-type `open` on the message when `message.fileType` is set. */
|
|
6650
6110
|
declare function openWithFileType(message: AXConversationMessage, registry: AXFileTypeRegistryService, ctx: AXFileTypeOpenContext): Promise<boolean>;
|
|
6651
6111
|
|
|
6112
|
+
interface AXConversationInfoProfileField {
|
|
6113
|
+
id: string;
|
|
6114
|
+
labelKey: string;
|
|
6115
|
+
value: string;
|
|
6116
|
+
icon: string;
|
|
6117
|
+
}
|
|
6118
|
+
type AXConversationMediaCategoryId = 'image' | 'video' | 'file' | 'audio' | 'voice' | 'sticker' | 'location' | 'link';
|
|
6119
|
+
interface AXConversationMediaCategory {
|
|
6120
|
+
id: AXConversationMediaCategoryId;
|
|
6121
|
+
labelKey: string;
|
|
6122
|
+
countLabelKey: string;
|
|
6123
|
+
icon: string;
|
|
6124
|
+
count: number;
|
|
6125
|
+
}
|
|
6126
|
+
declare function messageContainsLink(message: AXConversationMessage): boolean;
|
|
6127
|
+
declare function getPrivatePeerParticipant(conversation: AXConversation, currentUserId?: string): AXConversationParticipant | undefined;
|
|
6128
|
+
declare function getConversationProfileFields(conversation: AXConversation, currentUserId?: string): AXConversationInfoProfileField[];
|
|
6129
|
+
declare function getConversationMediaCategories(messages: AXConversationMessage[]): AXConversationMediaCategory[];
|
|
6130
|
+
declare function filterMessagesByMediaCategory(messages: AXConversationMessage[], categoryId: AXConversationMediaCategoryId): AXConversationMessage[];
|
|
6131
|
+
declare function isGridMediaCategory(categoryId: AXConversationMediaCategoryId): boolean;
|
|
6132
|
+
declare function isAttachmentListCategory(categoryId: AXConversationMediaCategoryId): boolean;
|
|
6133
|
+
interface AXConversationMediaGalleryTile {
|
|
6134
|
+
key: string;
|
|
6135
|
+
message: AXConversationMessage;
|
|
6136
|
+
kind: 'image' | 'video' | 'sticker';
|
|
6137
|
+
image?: AXConversationImageMediaItem;
|
|
6138
|
+
video?: AXConversationVideoMediaItem;
|
|
6139
|
+
stickerUrl?: string;
|
|
6140
|
+
stickerAlt?: string;
|
|
6141
|
+
}
|
|
6142
|
+
declare function buildMediaGalleryTiles(messages: AXConversationMessage[], categoryId: AXConversationMediaCategoryId): AXConversationMediaGalleryTile[];
|
|
6143
|
+
declare function resolveVideoThumbnailUrl(video: AXConversationVideoMediaItem): string | undefined;
|
|
6144
|
+
declare function resolveGalleryImageUrl(image: AXConversationImageMediaItem): string | undefined;
|
|
6145
|
+
declare function getMessageVideoItems(message: AXConversationMessage): AXConversationVideoMediaItem[];
|
|
6146
|
+
declare function getMessageAudioItems(message: AXConversationMessage): AXConversationAudioMediaItem[];
|
|
6147
|
+
interface AXConversationMediaPageResult {
|
|
6148
|
+
items: AXConversationMessage[];
|
|
6149
|
+
hasMore: boolean;
|
|
6150
|
+
nextCursor?: string;
|
|
6151
|
+
page: number;
|
|
6152
|
+
}
|
|
6153
|
+
declare function fetchConversationMediaPage(conversationApi: AXConversationApi, conversationId: string, page: number, pageSize?: number, cursor?: string): Promise<AXConversationMediaPageResult>;
|
|
6154
|
+
/** Merge media API results with in-memory messages needed for link/sticker/voice/location tabs. */
|
|
6155
|
+
declare function mergeInfoPanelMessages(mediaMessages: AXConversationMessage[], supplemental: AXConversationMessage[]): AXConversationMessage[];
|
|
6156
|
+
declare function filterSupplementalInfoPanelMessages(messages: AXConversationMessage[]): AXConversationMessage[];
|
|
6157
|
+
|
|
6652
6158
|
/**
|
|
6653
6159
|
* Error Message Constants
|
|
6654
6160
|
* Centralized error messages with i18n support structure
|
|
@@ -7041,5 +6547,5 @@ declare function getErrorMessage(code: string, params?: Record<string, string |
|
|
|
7041
6547
|
*/
|
|
7042
6548
|
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'];
|
|
7043
6549
|
|
|
7044
|
-
export {
|
|
7045
|
-
export type { AXConversation,
|
|
6550
|
+
export { AXConversationApi, AXConversationApiLoggerService, AXConversationAudioAttachmentComponent, AXConversationAudioFileTypeProvider, AXConversationAudioPickerComponent, AXConversationAudioRendererComponent, AXConversationAvatarComponent, AXConversationAvatarPickerComponent, AXConversationBaseRegistry, AXConversationComposerActionRegistry, AXConversationComposerComponent, AXConversationComposerFileTypesProvider, AXConversationComposerPopupComponent, AXConversationComposerService, AXConversationComposerTabRegistry, AXConversationContainerComponent, AXConversationContainerDirective, AXConversationDateUtilsService, AXConversationEmojiTabComponent, AXConversationErrorHandlerService, AXConversationFallbackRendererComponent, AXConversationFileAttachmentComponent, AXConversationFileFileTypeProvider, AXConversationFilePickerComponent, AXConversationFileRendererComponent, AXConversationForwardMessageDialogComponent, AXConversationImageAttachmentComponent, AXConversationImageFileTypeProvider, AXConversationImagePickerComponent, AXConversationImageRendererComponent, AXConversationInfiniteScrollDirective, AXConversationInfoBarActionRegistry, AXConversationInfoBarComponent, AXConversationInfoBarSearchComponent, AXConversationInfoBarService, AXConversationItemActionRegistry, AXConversationLocationPickerComponent, AXConversationLocationRendererComponent, AXConversationMediaPlaybackInfoBarBannerComponent, AXConversationMessageActionRegistry, AXConversationMessageApi, AXConversationMessageListComponent, AXConversationMessageListNoActiveDefaultComponent, AXConversationMessageListService, AXConversationMessageRendererCopyHostComponent, AXConversationMessageRendererRegistry, AXConversationMessageRendererStateComponent, AXConversationMessageUtilsService, AXConversationModule, AXConversationNewDialogComponent, AXConversationPickerCaptionComponent, AXConversationPickerEmptyComponent, AXConversationPickerFooterComponent, AXConversationPickerHeaderComponent, AXConversationPickerShellComponent, AXConversationPickerToolbarComponent, AXConversationRealtimeApi, AXConversationRegistryComponentOutletComponent, AXConversationRegistryService, AXConversationService, AXConversationSidebarComponent, AXConversationSidebarService, AXConversationStickerRendererComponent, AXConversationStickerTabComponent, AXConversationSystemRendererComponent, AXConversationTabRegistry, AXConversationTextRendererComponent, AXConversationUserApi, AXConversationVideoAttachmentComponent, AXConversationVideoFileTypeProvider, AXConversationVideoPickerComponent, AXConversationVideoRendererComponent, AXConversationVoiceFileTypeProvider, AXConversationVoiceRecorderComponent, AXConversationVoiceRendererComponent, 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_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_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_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, abortPickerUploads, applyAudioLocalPreview, applyFileLocalPreview, applyLocalPreview, applyVideoLocalPreview, applyVoiceLocalPreview, audioItemFromUpload, bindMediaRendererContentState, buildMediaGalleryTiles, canShowRendererContentError, cleanupPickerUploads, conversationAudioUtilities, conversationFileUtilities, conversationImageUtilities, conversationVideoUtilities, conversationVoiceUtilities, copyWithFileTypeFallback, createConversationAudioFileType, createConversationFileFileType, createConversationImageFileType, createConversationVideoFileType, createConversationVoiceFileType, createLocalPreviewUrl, createObjectUrl, createPickerDragHandlers, createResolvedMediaUrlSignal, deleteUploadedPickerMedia, dismissComposerPickerHost, ensureConversationFileCatalogRegistered, fetchConversationMediaPage, fileItemFromUpload, filterMessagesByMediaCategory, filterSupplementalInfoPanelMessages, findExistingPrivateConversation, formatDuration, formatErrorMessage, formatFileByteSize, formatFileSize, formatMediaDuration, formatPickerValidationMessage, getConversationMediaCategories, getConversationProfileFields, getErrorMessage, getMessageAudioItems, getMessageVideoItems, getPickerCancelUploadLabel, getPrivatePeerParticipant, hasRegistryComponent, inferFileExtensionHintFromMessage, isAttachmentListCategory, isComposerTabEnabled, isConversationReactionsEnabled, isGenericPrivateConversationTitle, isGridMediaCategory, isMessageDeliveryPending, isMessageListThemeBackground, isNonPersistableMediaUrl, isPickerItemReadyToSend, isSameMessageListBackground, isUploadAborted, limitFilesToCapacity, mediaCopyText, mergeAudioUploadResult, mergeFileUploadResult, mergeInfoPanelMessages, mergeUploadResult, mergeVideoUploadResult, mergeVoiceUploadResult, mergeWithDefaults, messageContainsLink, normalizeAudioPayload, normalizeFilePayload, normalizeImagePayload, normalizeMessageListBackgroundValue, normalizeVideoPayload, notifyMaxFilesCapacityExceeded, notifyPickerValidationErrors, openWithFileType, pickDisplayMediaUrl, pickerItemToMediaReference, pickerItemToUploadResult, provideConversation, provideConversationComposerFileTypes, provideConversationFileCatalog, reportMediaLoadError, resolveComposerMaxFiles, resolveConversationAvatarDisplay, resolveConversationComposerTabs, resolveConversationForViewer, resolveConversationMessageFileType, resolveConversationPeerParticipant, resolveConversationPeerUserId, resolveConversationTitleForViewer, resolveGalleryImageUrl, resolveImageDisplayUrl, resolveMessageListBackgroundRaw, resolveMessageListBackgroundStyle, resolveParticipantProfile, resolvePersistableMediaUrl, resolvePersistedThumbnailUrl, resolvePrivatePeerParticipant, resolvePrivatePeerUserId, resolveUserAvatarDisplay, resolveVideoThumbnailUrl, revokeObjectUrl, revokePickerBlobPreviews, sanitizeInput, shouldUseUserAvatarForConversation, syncPlaybackInfoBarBanner, toUploaderReference as toMediaItemUploaderReference, toUploaderReference$1 as toUploaderReference, uploadPickerFile, validateConversationId, validateEmail, validateLatitude, validateLongitude, validateMessagePayload, validateMessageText, validateMessageType, validateUrl, validateUserId, validateUserIds, videoItemFromUpload };
|
|
6551
|
+
export type { AXConversation, AXConversationApiError, AXConversationApiLogEntry, AXConversationApiName, AXConversationAudioMediaItem, AXConversationAudioPayload, AXConversationAvatarComponents, AXConversationAvatarDisplay, AXConversationAvatarKind, AXConversationBlockReportReason, AXConversationCallEvent, AXConversationCleanupPickerUploadsOptions, AXConversationComposerAction, AXConversationComposerActionComponent, AXConversationComposerActionContext, 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, 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, AXConversationParticipant, AXConversationParticipantRole, AXConversationParticipantStatus, AXConversationParticipantUpdate, AXConversationPinnedMessage, AXConversationPlaybackBannerInputs, AXConversationPollOption, AXConversationPollPayload, AXConversationPresenceStatus, AXConversationPresenceUpdate, AXConversationReaction, AXConversationReadReceipt, AXConversationRegistryComponentRef, 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 };
|