@acorex/components 22.1.0-next.11 → 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.
@@ -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, AXClosableComponent } from '@acorex/cdk/common';
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, BehaviorSubject, Subject } from 'rxjs';
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, AXFileService, AXFileTypeRegistryService, AXFileTypeExtensionHint, AXFileTypeOpenContext } from '@acorex/core/file';
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
- * Show a component in the composer (full-width mode)
740
+ * Open a composer action component in a popup (desktop) or action sheet (mobile).
750
741
  */
751
- showComponent(action: AXConversationComposerAction, inputs?: Record<string, unknown>): void;
742
+ openActionComponent(action: AXConversationComposerAction, inputs?: Record<string, unknown>, options?: {
743
+ toggleable?: boolean;
744
+ initialFiles?: File[];
745
+ }): Promise<void>;
752
746
  /**
753
- * Hide the active component
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 / full-width composer components */
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 — opens conversation profile panel */
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<_acorex_components_conversation.AXConversationInfoBarAction[]>;
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
- /** Open conversation info panel when the left info area is clicked */
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"; "avatarClick": "avatarClick"; "searchClick": "searchClick"; "searchQuery": "searchQuery"; "menuItemAction": "menuItemAction"; }, never, ["ax-prefix"], true, never>;
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
- /** Load files dropped onto the message list after the picker is mounted in a popup. */
4999
- declare function seedPickerInitialFiles(initialFiles: InputSignal<File[]>, handleFiles: (files: File[]) => void | Promise<void>): void;
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
- private readonly composerService;
5242
- private readonly conversationService;
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
- private readonly composerService;
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 { AXConversationAiResponderService, AXConversationApi, AXConversationApiLoggerService, AXConversationAudioAttachmentComponent, AXConversationAudioFileTypeProvider, AXConversationAudioPickerComponent, AXConversationAudioRendererComponent, AXConversationBaseRegistry, AXConversationComposerActionRegistry, AXConversationComposerComponent, AXConversationComposerFileTypesProvider, AXConversationComposerPopupComponent, AXConversationComposerService, AXConversationComposerTabRegistry, AXConversationContainerComponent, AXConversationContainerDirective, AXConversationDateUtilsService, AXConversationEmojiTabComponent, AXConversationErrorHandlerService, AXConversationFallbackRendererComponent, AXConversationFileAttachmentComponent, AXConversationFileFileTypeProvider, AXConversationFilePickerComponent, AXConversationFileRendererComponent, AXConversationForwardMessageDialogComponent, AXConversationImageAttachmentComponent, AXConversationImageFileTypeProvider, AXConversationImagePickerComponent, AXConversationImageRendererComponent, AXConversationIndexedDbConversationApi, AXConversationIndexedDbMessageAiApi, AXConversationIndexedDbMessageApi, AXConversationIndexedDbRealtimeApi, AXConversationIndexedDbStorage, AXConversationIndexedDbStores, AXConversationIndexedDbUserApi, AXConversationInfiniteScrollDirective, AXConversationInfoBarActionRegistry, AXConversationInfoBarComponent, AXConversationInfoBarSearchComponent, AXConversationInfoBarService, AXConversationInfoMediaViewComponent, AXConversationInfoPanelComponent, AXConversationItemActionRegistry, AXConversationLocationPickerComponent, AXConversationLocationRendererComponent, AXConversationMediaPlaybackInfoBarBannerComponent, AXConversationMessageActionRegistry, AXConversationMessageApi, AXConversationMessageListComponent, AXConversationMessageListNoActiveDefaultComponent, AXConversationMessageListService, AXConversationMessageRendererCopyHostComponent, AXConversationMessageRendererRegistry, AXConversationMessageRendererStateComponent, AXConversationMessageUtilsService, AXConversationModule, AXConversationNewDialogComponent, AXConversationPickerCaptionComponent, AXConversationPickerEmptyComponent, AXConversationPickerFooterComponent, AXConversationPickerHeaderComponent, AXConversationPickerShellComponent, AXConversationPickerToolbarComponent, AXConversationRealtimeApi, AXConversationRegistryService, AXConversationService, AXConversationSharedStorage, AXConversationSidebarComponent, AXConversationSidebarService, AXConversationStickerRendererComponent, AXConversationStickerTabComponent, AXConversationSystemRendererComponent, AXConversationTabRegistry, AXConversationTextRendererComponent, AXConversationUserApi, AXConversationVideoAttachmentComponent, AXConversationVideoFileTypeProvider, AXConversationVideoPickerComponent, AXConversationVideoRendererComponent, AXConversationVoiceFileTypeProvider, AXConversationVoiceRecorderComponent, AXConversationVoiceRendererComponent, AX_CONVERSATION_AI_API_KEY, AX_CONVERSATION_AUDIO_CATALOG, AX_CONVERSATION_AUDIO_PRESENTATION, AX_CONVERSATION_AUDIO_RENDERER, AX_CONVERSATION_BUILTIN_COMPOSER_TABS, AX_CONVERSATION_COMPOSER_AUDIO_ACTION, AX_CONVERSATION_COMPOSER_EMOJI_ACTION, AX_CONVERSATION_COMPOSER_EMOJI_TAB, AX_CONVERSATION_COMPOSER_FILE_ACTION, AX_CONVERSATION_COMPOSER_IMAGE_ACTION, AX_CONVERSATION_COMPOSER_LOCATION_ACTION, AX_CONVERSATION_COMPOSER_STICKER_TAB, AX_CONVERSATION_COMPOSER_VIDEO_ACTION, AX_CONVERSATION_COMPOSER_VOICE_RECORDING_ACTION, AX_CONVERSATION_CONFIG, AX_CONVERSATION_CONNECTION_ERRORS, AX_CONVERSATION_CONVERSATION_AVATAR_COMPONENT, AX_CONVERSATION_CURSOR_PREFIX, AX_CONVERSATION_DEFAULT_COMPOSER_ACTIONS, AX_CONVERSATION_DEFAULT_COMPOSER_TABS, AX_CONVERSATION_DEFAULT_CONVERSATION_ITEM_ACTIONS, AX_CONVERSATION_DEFAULT_CONVERSATION_TABS, AX_CONVERSATION_DEFAULT_GROUP_ICON, AX_CONVERSATION_DEFAULT_INFO_BAR_ACTIONS, AX_CONVERSATION_DEFAULT_MESSAGE_ACTIONS, AX_CONVERSATION_DEFAULT_MESSAGE_LIST_BACKGROUND, AX_CONVERSATION_DEFAULT_MESSAGE_LIST_BACKGROUND_PRESET_ID, AX_CONVERSATION_DEFAULT_MESSAGE_LIST_THEME_BACKGROUND, AX_CONVERSATION_DEFAULT_MESSAGE_RENDERERS, AX_CONVERSATION_DEFAULT_USER_ICON, AX_CONVERSATION_DEMO_CONVERSATION_IDS, AX_CONVERSATION_ERRORS, AX_CONVERSATION_ERROR_HANDLER_CONFIG, AX_CONVERSATION_ERROR_MESSAGES, AX_CONVERSATION_FALLBACK_RENDERER, AX_CONVERSATION_FILE_CATALOG, AX_CONVERSATION_FILE_ERRORS, AX_CONVERSATION_FILE_PRESENTATION, AX_CONVERSATION_FILE_RENDERER, AX_CONVERSATION_FILE_TYPES_READY, AX_CONVERSATION_IMAGE_CATALOG, AX_CONVERSATION_IMAGE_PRESENTATION, AX_CONVERSATION_IMAGE_RENDERER, AX_CONVERSATION_INFO_BAR_ARCHIVE_ACTION, AX_CONVERSATION_INFO_BAR_BLOCK_ACTION, AX_CONVERSATION_INFO_BAR_DELETE_ACTION, AX_CONVERSATION_INFO_BAR_DIVIDER, AX_CONVERSATION_INFO_BAR_MUTE_ACTION, AX_CONVERSATION_INFO_BAR_SEARCH_ACTION, AX_CONVERSATION_ITEM_BLOCK_ACTION, AX_CONVERSATION_ITEM_DELETE_ACTION, AX_CONVERSATION_ITEM_DIVIDER, AX_CONVERSATION_ITEM_MARK_READ_ACTION, AX_CONVERSATION_ITEM_MUTE_ACTION, AX_CONVERSATION_ITEM_PIN_ACTION, AX_CONVERSATION_LOCATION_ERRORS, AX_CONVERSATION_LOCATION_RENDERER, AX_CONVERSATION_MESSAGE_CURSOR_PREFIX, AX_CONVERSATION_MESSAGE_DELETE_ACTION, AX_CONVERSATION_MESSAGE_EDIT_ACTION, AX_CONVERSATION_MESSAGE_ERRORS, AX_CONVERSATION_MESSAGE_FORWARD_ACTION, AX_CONVERSATION_MESSAGE_LIST_BACKGROUND_PRESETS, AX_CONVERSATION_MESSAGE_REPLY_ACTION, AX_CONVERSATION_MESSAGE_TYPE_FILE_TYPE, AX_CONVERSATION_PEER_AVATAR_TYPES, AX_CONVERSATION_REGISTRY_CONFIG, AX_CONVERSATION_STICKER_API_KEY, AX_CONVERSATION_STICKER_RENDERER, AX_CONVERSATION_SYSTEM_RENDERER, AX_CONVERSATION_TAB_ALL, AX_CONVERSATION_TAB_ARCHIVED, AX_CONVERSATION_TAB_BOT, AX_CONVERSATION_TAB_CHANNELS, AX_CONVERSATION_TAB_GROUPS, AX_CONVERSATION_TAB_PRIVATE, AX_CONVERSATION_TAB_UNREAD, AX_CONVERSATION_TEXT_RENDERER, AX_CONVERSATION_URL_ERRORS, AX_CONVERSATION_USER_AVATAR_COMPONENT, AX_CONVERSATION_USER_ERRORS, AX_CONVERSATION_VIDEO_CATALOG, AX_CONVERSATION_VIDEO_PRESENTATION, AX_CONVERSATION_VIDEO_RENDERER, AX_CONVERSATION_VOICE_CATALOG, AX_CONVERSATION_VOICE_PRESENTATION, AX_CONVERSATION_VOICE_RENDERER, AX_DEFAULT_CONVERSATION_CONFIG, AX_MESSAGE_PAGINATION_CONVERSATION_ID, abortPickerUploads, applyAudioLocalPreview, applyConversationFilters, applyFileLocalPreview, applyLocalPreview, applyVideoLocalPreview, applyVoiceLocalPreview, audioItemFromUpload, axConversationIndexedDbStorage, axConversationSharedStorage, bindMediaRendererContentState, buildMediaGalleryTiles, canShowRendererContentError, cleanupPickerUploads, conversationAudioUtilities, conversationFileUtilities, conversationImageUtilities, conversationVideoUtilities, conversationVoiceUtilities, copyWithFileTypeFallback, createConversationAudioFileType, createConversationFileFileType, createConversationImageFileType, createConversationVideoFileType, createConversationVoiceFileType, createLocalPreviewUrl, createObjectUrl, createPickerDragHandlers, createResolvedMediaUrlSignal, deleteUploadedPickerMedia, dismissComposerPickerHost, encodeConversationCursor, encodeMessageCursor, ensurePaginationDemoData, fetchConversationMediaMessages, fetchConversationMediaPage, fileItemFromUpload, filterMessagesByMediaCategory, filterSupplementalInfoPanelMessages, findExistingPrivateConversation, formatDuration, formatErrorMessage, formatFileByteSize, formatFileSize, formatMediaDuration, formatPickerValidationMessage, getConversationLastActivity, getConversationMediaCategories, getConversationMessagesNewestFirst, getConversationProfileFields, getErrorMessage, getMessageAudioItems, getMessageVideoItems, getPickerCancelUploadLabel, getPrivatePeerParticipant, getSortedConversationsForInbox, inferFileExtensionHintFromMessage, isAttachmentListCategory, isComposerTabEnabled, isConversationReactionsEnabled, isGenericPrivateConversationTitle, isGridMediaCategory, isMessageDeliveryPending, isMessageListThemeBackground, isNonPersistableMediaUrl, isPickerItemReadyToSend, isSameMessageListBackground, isUploadAborted, limitFilesToCapacity, mediaCopyText, mergeAudioUploadResult, mergeFileUploadResult, mergeInfoPanelMessages, mergeUploadResult, mergeVideoUploadResult, mergeVoiceUploadResult, mergeWithDefaults, messageContainsLink, normalizeAllConversationMessageIndexes, normalizeAudioPayload, normalizeFilePayload, normalizeImagePayload, normalizeMessageListBackgroundValue, normalizeMessagePayload, normalizeMessagePayloadAsync, normalizeVideoPayload, notifyMaxFilesCapacityExceeded, notifyPickerValidationErrors, openWithFileType, paginateChatNewestFirst, paginateChatOldestFirst, parseChatCursor, pickDisplayMediaUrl, pickerItemToMediaReference, pickerItemToUploadResult, provideConversation, provideConversationComposerFileTypes, provideConversationFileCatalog, registerChatMessage, reportMediaLoadError, resolveComposerMaxFiles, resolveConversationAvatarDisplay, resolveConversationComposerTabs, resolveConversationForViewer, resolveConversationMessageFileType, resolveConversationPeerParticipant, resolveConversationPeerUserId, resolveConversationTitleForViewer, resolveGalleryImageUrl, resolveImageDisplayUrl, resolveMessageListBackgroundRaw, resolveMessageListBackgroundStyle, resolveParticipantProfile, resolvePersistableMediaUrl, resolvePersistedThumbnailUrl, resolvePrivatePeerParticipant, resolvePrivatePeerUserId, resolveUserAvatarDisplay, resolveVideoThumbnailUrl, revokeObjectUrl, revokePickerBlobPreviews, sanitizeInput, seedPickerInitialFiles, seedSharedStorageInitialData, shouldUseUserAvatarForConversation, sortConversationMessageIds, syncPlaybackInfoBarBanner, toUploaderReference as toMediaItemUploaderReference, toUploaderReference$1 as toUploaderReference, unregisterChatMessage, uploadPickerFile, validateConversationId, validateEmail, validateLatitude, validateLongitude, validateMessagePayload, validateMessageText, validateMessageType, validateUrl, validateUserId, validateUserIds, videoItemFromUpload };
7045
- export type { AXConversation, AXConversationAiResponderConfig, AXConversationApiError, AXConversationApiLogEntry, AXConversationApiName, AXConversationAudioMediaItem, AXConversationAudioPayload, AXConversationAvatarComponents, AXConversationAvatarDisplay, AXConversationAvatarKind, AXConversationBlockReportReason, AXConversationCallEvent, AXConversationChatCursorKind, AXConversationCleanupPickerUploadsOptions, AXConversationComposerAction, AXConversationComposerActionComponent, AXConversationComposerActionContext, AXConversationComposerActiveComponent, AXConversationComposerPickerUploadItem, AXConversationComposerTab, AXConversationComposerTabFeature, AXConversationConfig, AXConversationConnectionEvent, AXConversationConnectionOptions, AXConversationConnectionStatus, AXConversationConversationAvatarComponent, AXConversationCreateData, AXConversationDeleteMessageCommand, AXConversationDropdownMenuItem, AXConversationEditMessageCommand, AXConversationError, AXConversationErrorCode, AXConversationErrorHandlerConfig, AXConversationErrorMessage, AXConversationErrorSeverity, AXConversationFeatures, AXConversationFileMediaItem, AXConversationFilePayload, AXConversationFilter, AXConversationFilters, AXConversationGroupedReaction, AXConversationImageMediaItem, AXConversationImagePayload, AXConversationIndexedDbMediaRecord, AXConversationInfoBarAction, AXConversationInfoBarActionComponent, AXConversationInfoBarActionContext, AXConversationInfoBarActiveBanner, AXConversationInfoBarActiveComponent, AXConversationInfoProfileField, AXConversationItemAction, AXConversationItemActionContext, AXConversationLink, AXConversationLinkPreview, AXConversationLoadMessagesResult, AXConversationLocationPayload, AXConversationMediaCategory, AXConversationMediaCategoryId, AXConversationMediaGalleryTile, AXConversationMediaItemFields, AXConversationMediaPageResult, AXConversationMention, AXConversationMessage, AXConversationMessageAction, AXConversationMessageActionContext, AXConversationMessageForwardData, AXConversationMessageInfoBarBannerComponent, AXConversationMessageListBackground, AXConversationMessageListBackgroundPreset, AXConversationMessageListEmptyComponent, AXConversationMessageListThemeBackground, AXConversationMessagePayload, AXConversationMessageRenderer, AXConversationMessageRendererCapabilities, AXConversationMessageRendererComponent, AXConversationMessageRendererContentState, AXConversationMessageRendererState, AXConversationMessageSearchFilters, AXConversationMessageStatus, AXConversationMessageType, AXConversationMetadata, AXConversationNotificationEvent, AXConversationOptions, AXConversationPaginatedResult, AXConversationPagination, AXConversationPaginationState, AXConversationParsedChatCursor, AXConversationParticipant, AXConversationParticipantRole, AXConversationParticipantStatus, AXConversationParticipantUpdate, AXConversationPinnedMessage, AXConversationPlaybackBannerInputs, AXConversationPollOption, AXConversationPollPayload, AXConversationPresenceStatus, AXConversationPresenceUpdate, AXConversationReaction, AXConversationReadReceipt, AXConversationRegistryConfiguration, AXConversationRegistryItem, AXConversationSendMessageCommand, AXConversationSendMessageOptions, AXConversationSendMessageUploadSource, AXConversationSettings, AXConversationSettingsUpdate, AXConversationSort, AXConversationStatus, AXConversationStickerPayload, AXConversationSystemPayload, AXConversationTab, AXConversationTextFormat, AXConversationTextPayload, AXConversationType, AXConversationTypingIndicator, AXConversationUpdateData, AXConversationUploadOptions, AXConversationUploaderFilePreview, AXConversationUploaderReference, AXConversationUploaderResult, AXConversationUserAvatarComponent, AXConversationUserProfile, AXConversationUserProfileUpdate, AXConversationUserRole, AXConversationUserSearchFilters, AXConversationValidationResult, AXConversationVideoMediaItem, AXConversationVideoPayload, AXConversationVoicePayload };
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 };