@acorex/components 22.1.0-next.12 → 22.1.0-next.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/{acorex-components-conversation-open-composer-picker-for-files-BuNEjswI.mjs → acorex-components-conversation-open-composer-picker-for-files-DnSW908R.mjs} +6 -19
- package/fesm2022/acorex-components-conversation-open-composer-picker-for-files-DnSW908R.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation.mjs +6898 -9490
- package/fesm2022/acorex-components-conversation.mjs.map +1 -1
- package/package.json +3 -3
- package/types/acorex-components-conversation.d.ts +307 -737
- package/fesm2022/acorex-components-conversation-open-composer-picker-for-files-BuNEjswI.mjs.map +0 -1
|
@@ -1,18 +1,20 @@
|
|
|
1
1
|
import * as _acorex_components_conversation from '@acorex/components/conversation';
|
|
2
2
|
import * as _angular_core from '@angular/core';
|
|
3
|
-
import { OnDestroy, ViewContainerRef, Type, InputSignal, WritableSignal, Signal, Provider, OnInit, EventEmitter, TemplateRef, InjectionToken, ModuleWithProviders } from '@angular/core';
|
|
4
|
-
import { AXComponentCloseEvent, AXHtmlEvent, AXClickEvent, AXDataSource, AXPlacement
|
|
3
|
+
import { OnDestroy, ViewContainerRef, Type, InputSignal, WritableSignal, Signal, Provider, OnInit, EventEmitter, TemplateRef, ElementRef, InjectionToken, ModuleWithProviders } from '@angular/core';
|
|
4
|
+
import { AXComponentCloseEvent, AXHtmlEvent, AXClickEvent, AXDataSource, AXPlacement } from '@acorex/cdk/common';
|
|
5
|
+
import * as _acorex_components_action_sheet from '@acorex/components/action-sheet';
|
|
6
|
+
import { AXActionSheetRef } from '@acorex/components/action-sheet';
|
|
5
7
|
import * as _acorex_components_popup from '@acorex/components/popup';
|
|
6
8
|
import { AXPopupService, AXPopupRef } from '@acorex/components/popup';
|
|
7
9
|
import { AXFileUploadOptions, AXUploadResult, AXUploadReference, AXUploaderService, AXUploaderFileChangeEvent } from '@acorex/cdk/uploader';
|
|
8
10
|
import { AXListComponent } from '@acorex/components/list';
|
|
9
11
|
import * as rxjs from 'rxjs';
|
|
10
|
-
import { Observable
|
|
12
|
+
import { Observable } from 'rxjs';
|
|
11
13
|
import { AXDialogService } from '@acorex/components/dialog';
|
|
12
14
|
import { AXContextMenuOpeningEvent, AXContextMenuItemsClickEvent } from '@acorex/components/menu';
|
|
13
15
|
import { AXBasePageComponent } from '@acorex/components/page';
|
|
14
16
|
import * as _acorex_core_file from '@acorex/core/file';
|
|
15
|
-
import { AXFileTypeInfoProvider, AXFileType,
|
|
17
|
+
import { AXFileTypeInfoProvider, AXFileType, AXFileTypeRegistryService, AXFileService, AXFileTypeExtensionHint, AXFileTypeOpenContext } from '@acorex/core/file';
|
|
16
18
|
import { AXTranslationService } from '@acorex/core/translation';
|
|
17
19
|
import { AXToastService } from '@acorex/components/toast';
|
|
18
20
|
import { AXValidationRuleResult } from '@acorex/core/validation';
|
|
@@ -673,22 +675,17 @@ declare abstract class AXConversationBaseRegistry<T extends AXConversationRegist
|
|
|
673
675
|
protected abstract getRegistryName(): string;
|
|
674
676
|
}
|
|
675
677
|
|
|
676
|
-
/**
|
|
677
|
-
|
|
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
|
-
}
|
|
678
|
+
/** Primary composer button mode (send / cancel / stopping / default action / locked). */
|
|
679
|
+
type AXConversationComposerPrimaryButtonMode = 'send' | 'cancel' | 'stopping' | 'default-action' | 'locked';
|
|
689
680
|
declare class AXConversationComposerService {
|
|
690
681
|
private readonly conversationService;
|
|
682
|
+
private readonly generationState;
|
|
691
683
|
private readonly translation;
|
|
684
|
+
private readonly popupService;
|
|
685
|
+
private readonly actionSheetService;
|
|
686
|
+
private readonly platform;
|
|
687
|
+
private readonly config;
|
|
688
|
+
private readonly _activeActionOverlay;
|
|
692
689
|
private get registry();
|
|
693
690
|
private readonly _replyMessage;
|
|
694
691
|
private readonly _editMessage;
|
|
@@ -696,9 +693,6 @@ declare class AXConversationComposerService {
|
|
|
696
693
|
readonly editMessage: _angular_core.Signal<AXConversationMessage>;
|
|
697
694
|
readonly activeConversation: _angular_core.Signal<_acorex_components_conversation.AXConversation>;
|
|
698
695
|
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
696
|
/** Draft text */
|
|
703
697
|
readonly draftText: _angular_core.WritableSignal<string>;
|
|
704
698
|
/** Attachments */
|
|
@@ -712,8 +706,14 @@ declare class AXConversationComposerService {
|
|
|
712
706
|
readonly placeholder: _angular_core.Signal<string>;
|
|
713
707
|
/** Number of input rows */
|
|
714
708
|
readonly inputRows: _angular_core.Signal<number>;
|
|
715
|
-
/** Can send message */
|
|
709
|
+
/** Can send message (draft has content; does not include generation state). */
|
|
716
710
|
readonly canSend: _angular_core.Signal<boolean>;
|
|
711
|
+
/** Whether a background generation (e.g. AI response) is in progress. */
|
|
712
|
+
readonly isGenerating: _angular_core.Signal<boolean>;
|
|
713
|
+
/** Whether cancel cleanup is in progress (spinner on primary button). */
|
|
714
|
+
readonly isStopping: _angular_core.Signal<boolean>;
|
|
715
|
+
/** Primary end-button mode for send / cancel / stopping / voice / locked. */
|
|
716
|
+
readonly primaryButtonMode: _angular_core.Signal<AXConversationComposerPrimaryButtonMode>;
|
|
717
717
|
/** Composer action context */
|
|
718
718
|
readonly actionContext: _angular_core.Signal<AXConversationComposerActionContext>;
|
|
719
719
|
/** Start actions from registry */
|
|
@@ -730,6 +730,7 @@ declare class AXConversationComposerService {
|
|
|
730
730
|
readonly endMenuActions: _angular_core.Signal<AXConversationComposerAction[]>;
|
|
731
731
|
/** Default end action (voice/send morph button) */
|
|
732
732
|
readonly defaultAction: _angular_core.Signal<AXConversationComposerAction>;
|
|
733
|
+
cancelGeneration(): void;
|
|
733
734
|
startReply(message: AXConversationMessage): void;
|
|
734
735
|
startEdit(message: AXConversationMessage): void;
|
|
735
736
|
/** Focus the composer text area when the composer component is mounted. */
|
|
@@ -746,17 +747,16 @@ declare class AXConversationComposerService {
|
|
|
746
747
|
*/
|
|
747
748
|
clearComposerInput(conversationId?: string): void;
|
|
748
749
|
/**
|
|
749
|
-
*
|
|
750
|
+
* Open a composer action component in a popup (desktop) or action sheet (mobile).
|
|
750
751
|
*/
|
|
751
|
-
|
|
752
|
+
openActionComponent(action: AXConversationComposerAction, inputs?: Record<string, unknown>, options?: {
|
|
753
|
+
toggleable?: boolean;
|
|
754
|
+
initialFiles?: File[];
|
|
755
|
+
}): Promise<void>;
|
|
752
756
|
/**
|
|
753
|
-
* Hide the active
|
|
757
|
+
* Hide the active action overlay.
|
|
754
758
|
*/
|
|
755
759
|
hideComponent(): void;
|
|
756
|
-
/**
|
|
757
|
-
* Toggle component visibility
|
|
758
|
-
*/
|
|
759
|
-
toggleComponent(action: AXConversationComposerAction, inputs?: Record<string, unknown>): void;
|
|
760
760
|
/**
|
|
761
761
|
* Get actions for the active conversation
|
|
762
762
|
*/
|
|
@@ -797,6 +797,10 @@ interface AXConversationComposerActionContext {
|
|
|
797
797
|
isReplying: boolean;
|
|
798
798
|
/** Message being replied to (if any) */
|
|
799
799
|
replyingToMessageId?: string;
|
|
800
|
+
/** Whether a background generation (e.g. AI response) is in progress */
|
|
801
|
+
isGenerating?: boolean;
|
|
802
|
+
/** Whether cancel cleanup is in progress */
|
|
803
|
+
isStopping?: boolean;
|
|
800
804
|
/** Custom context data */
|
|
801
805
|
custom?: Record<string, unknown>;
|
|
802
806
|
}
|
|
@@ -813,6 +817,15 @@ interface AXConversationComposerActionComponent {
|
|
|
813
817
|
readonly initialFiles?: InputSignal<File[]>;
|
|
814
818
|
/** Set by {@link AXPopupService} when the picker is shown in a popup. */
|
|
815
819
|
readonly __popup__?: InputSignal<_acorex_components_popup.AXPopupRef | undefined>;
|
|
820
|
+
/** Set by {@link AXActionSheetService} when the picker is shown in an action sheet. */
|
|
821
|
+
readonly __actionSheet__?: InputSignal<_acorex_components_action_sheet.AXActionSheetRef | undefined>;
|
|
822
|
+
/**
|
|
823
|
+
* When true (from action {@link AXConversationComposerAction.autoRun}), runs {@link activate}
|
|
824
|
+
* once after the component is mounted.
|
|
825
|
+
*/
|
|
826
|
+
readonly autoRun?: InputSignal<boolean>;
|
|
827
|
+
/** Primary action when opened from the composer (record, browse files, etc.). */
|
|
828
|
+
activate?(): void | Promise<void>;
|
|
816
829
|
/** Cancel in-flight uploads when the picker is closed or replaced. */
|
|
817
830
|
abortInProgressUploads?(): void;
|
|
818
831
|
}
|
|
@@ -848,6 +861,11 @@ interface AXConversationComposerAction extends Omit<AXConversationRegistryItem,
|
|
|
848
861
|
* Whether this action is toggleable (shows/hides component)
|
|
849
862
|
*/
|
|
850
863
|
toggleable?: boolean;
|
|
864
|
+
/**
|
|
865
|
+
* When true, runs {@link AXConversationComposerActionComponent.activate} in
|
|
866
|
+
* {@link afterNextRender} after the upload panel is mounted.
|
|
867
|
+
*/
|
|
868
|
+
autoRun?: boolean;
|
|
851
869
|
/** Action handler (optional if component is provided) */
|
|
852
870
|
handler?: (context: AXConversationComposerActionContext) => void | Promise<void>;
|
|
853
871
|
/** Tooltip text */
|
|
@@ -1326,10 +1344,6 @@ declare class AXConversationInfoBarService {
|
|
|
1326
1344
|
* Reset info-bar overlays when the active conversation changes.
|
|
1327
1345
|
*/
|
|
1328
1346
|
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
1347
|
/**
|
|
1334
1348
|
* Get actions for the active conversation
|
|
1335
1349
|
*/
|
|
@@ -1433,7 +1447,7 @@ interface AXConversationInfoBarAction extends AXConversationRegistryItem {
|
|
|
1433
1447
|
/** Whether this is a divider */
|
|
1434
1448
|
divider?: boolean;
|
|
1435
1449
|
/** Display location: 'inline' for toolbar buttons, 'menu' for dropdown menu */
|
|
1436
|
-
location?: 'inline' | 'menu';
|
|
1450
|
+
location?: 'inline' | 'menu' | ((context: AXConversationInfoBarActionContext) => 'inline' | 'menu');
|
|
1437
1451
|
/**
|
|
1438
1452
|
* Component to show when action is activated (for inline actions)
|
|
1439
1453
|
* If provided, clicking the action will show this component in the info-bar
|
|
@@ -1483,6 +1497,10 @@ declare class AXConversationInfoBarActionRegistry extends AXConversationBaseRegi
|
|
|
1483
1497
|
* Get actions for a specific conversation
|
|
1484
1498
|
*/
|
|
1485
1499
|
getActionsForConversation(conversation: AXConversation, location?: 'inline' | 'menu'): AXConversationInfoBarAction[];
|
|
1500
|
+
/**
|
|
1501
|
+
* Resolve the display location for an action (supports dynamic location factories).
|
|
1502
|
+
*/
|
|
1503
|
+
getActionLocation(action: AXConversationInfoBarAction, conversation: AXConversation): 'inline' | 'menu' | undefined;
|
|
1486
1504
|
/**
|
|
1487
1505
|
* Get inline actions (toolbar buttons)
|
|
1488
1506
|
*/
|
|
@@ -1622,6 +1640,8 @@ declare class AXConversationComposerComponent implements OnDestroy {
|
|
|
1622
1640
|
readonly showTypingIndicator: _angular_core.WritableSignal<boolean>;
|
|
1623
1641
|
/** Message sent event */
|
|
1624
1642
|
readonly messageSent: _angular_core.OutputEmitterRef<AXConversationSendMessageCommand>;
|
|
1643
|
+
/** Emitted when the user cancels an in-progress generation from the composer. */
|
|
1644
|
+
readonly generationCancelled: _angular_core.OutputEmitterRef<void>;
|
|
1625
1645
|
/** Emoji clicked event */
|
|
1626
1646
|
readonly emojiClick: _angular_core.OutputEmitterRef<void>;
|
|
1627
1647
|
/** Attach clicked event */
|
|
@@ -1631,8 +1651,6 @@ declare class AXConversationComposerComponent implements OnDestroy {
|
|
|
1631
1651
|
/** Active conversation */
|
|
1632
1652
|
readonly activeConversation: _angular_core.Signal<_acorex_components_conversation.AXConversation>;
|
|
1633
1653
|
readonly activeMessages: _angular_core.Signal<AXConversationMessage[]>;
|
|
1634
|
-
/** Active component from service */
|
|
1635
|
-
readonly activeComponent: _angular_core.Signal<_acorex_components_conversation.AXConversationComposerActiveComponent>;
|
|
1636
1654
|
/** Emoji popover state */
|
|
1637
1655
|
private readonly emojiPopoverRef;
|
|
1638
1656
|
readonly emojiPopoverTarget: _angular_core.WritableSignal<HTMLElement>;
|
|
@@ -1650,6 +1668,12 @@ declare class AXConversationComposerComponent implements OnDestroy {
|
|
|
1650
1668
|
readonly inputRows: _angular_core.Signal<number>;
|
|
1651
1669
|
/** Can send message - use service */
|
|
1652
1670
|
readonly canSend: _angular_core.Signal<boolean>;
|
|
1671
|
+
/** Whether AI/generation is in progress */
|
|
1672
|
+
readonly isGenerating: _angular_core.Signal<boolean>;
|
|
1673
|
+
/** Whether cancel cleanup is in progress */
|
|
1674
|
+
readonly isStopping: _angular_core.Signal<boolean>;
|
|
1675
|
+
/** Primary button mode */
|
|
1676
|
+
readonly primaryButtonMode: _angular_core.Signal<_acorex_components_conversation.AXConversationComposerPrimaryButtonMode>;
|
|
1653
1677
|
/** Start actions from registry - use service */
|
|
1654
1678
|
readonly startActions: _angular_core.Signal<AXConversationComposerAction[]>;
|
|
1655
1679
|
/** End actions from registry - use service */
|
|
@@ -1690,9 +1714,14 @@ declare class AXConversationComposerComponent implements OnDestroy {
|
|
|
1690
1714
|
onAttachPopoverClosed(): void;
|
|
1691
1715
|
/** Handle attachment menu action selection */
|
|
1692
1716
|
onAttachMenuAction(actionId: string): Promise<void>;
|
|
1693
|
-
/** Handle
|
|
1717
|
+
/** Handle primary button click (send / cancel / stopping / voice / locked). */
|
|
1718
|
+
onPrimaryButtonClick(): Promise<void>;
|
|
1719
|
+
/** @deprecated Use onPrimaryButtonClick */
|
|
1694
1720
|
onDefaultActionClick(): Promise<void>;
|
|
1695
|
-
|
|
1721
|
+
getPrimaryButtonIcon(): string;
|
|
1722
|
+
getPrimaryButtonLabel(): string;
|
|
1723
|
+
isPrimaryButtonDisabled(): boolean;
|
|
1724
|
+
/** @deprecated Use getPrimaryButtonIcon */
|
|
1696
1725
|
getDefaultActionIcon(): string;
|
|
1697
1726
|
/** Handle voice click */
|
|
1698
1727
|
onVoiceClick(): void;
|
|
@@ -1708,7 +1737,7 @@ declare class AXConversationComposerComponent implements OnDestroy {
|
|
|
1708
1737
|
private focusTextArea;
|
|
1709
1738
|
private getClickTarget;
|
|
1710
1739
|
/** Handle action click */
|
|
1711
|
-
onActionClick(actionId: string, event?: AXClickEvent | MouseEvent): Promise<void>;
|
|
1740
|
+
onActionClick(actionId: string, event?: AXClickEvent | MouseEvent, initialFiles?: File[]): Promise<void>;
|
|
1712
1741
|
/** Check if action is enabled */
|
|
1713
1742
|
isActionEnabled(action: any): boolean;
|
|
1714
1743
|
/** Get replying sender name */
|
|
@@ -1739,13 +1768,11 @@ declare class AXConversationComposerComponent implements OnDestroy {
|
|
|
1739
1768
|
}): string;
|
|
1740
1769
|
/** Handle reply preview click - scroll to original message */
|
|
1741
1770
|
onReplyPreviewClick(): void;
|
|
1742
|
-
/** Inputs for picker /
|
|
1771
|
+
/** Inputs for picker components opened in popup / action sheet */
|
|
1743
1772
|
private buildPickerInputs;
|
|
1744
|
-
/** Get inputs for dynamic component */
|
|
1745
|
-
getComponentInputs(): Record<string, unknown>;
|
|
1746
1773
|
onEnter(event: AXHtmlEvent<KeyboardEvent>): Promise<void>;
|
|
1747
1774
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationComposerComponent, never>;
|
|
1748
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXConversationComposerComponent, "ax-conversation-composer", never, {}, { "messageSent": "messageSent"; "emojiClick": "emojiClick"; "attachClick": "attachClick"; "voiceClick": "voiceClick"; }, never, never, true, never>;
|
|
1775
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXConversationComposerComponent, "ax-conversation-composer", never, {}, { "messageSent": "messageSent"; "generationCancelled": "generationCancelled"; "emojiClick": "emojiClick"; "attachClick": "attachClick"; "voiceClick": "voiceClick"; }, never, never, true, never>;
|
|
1749
1776
|
}
|
|
1750
1777
|
|
|
1751
1778
|
declare class AXConversationContainerComponent {
|
|
@@ -1754,6 +1781,8 @@ declare class AXConversationContainerComponent {
|
|
|
1754
1781
|
private readonly fileService;
|
|
1755
1782
|
private readonly translation;
|
|
1756
1783
|
private readonly toast;
|
|
1784
|
+
private readonly platform;
|
|
1785
|
+
private readonly actionSheetService;
|
|
1757
1786
|
private readonly hostRef;
|
|
1758
1787
|
private readonly platformId;
|
|
1759
1788
|
protected readonly config: Required<_acorex_components_conversation.AXConversationConfig>;
|
|
@@ -1787,6 +1816,8 @@ declare class AXConversationContainerDirective {
|
|
|
1787
1816
|
private readonly platformId;
|
|
1788
1817
|
private readonly translation;
|
|
1789
1818
|
private readonly toast;
|
|
1819
|
+
private readonly platform;
|
|
1820
|
+
private readonly actionSheetService;
|
|
1790
1821
|
private readonly config;
|
|
1791
1822
|
constructor();
|
|
1792
1823
|
private get registry();
|
|
@@ -1814,7 +1845,12 @@ interface AXConversationDropdownMenuItem {
|
|
|
1814
1845
|
declare class AXConversationInfoBarComponent {
|
|
1815
1846
|
private readonly conversationService;
|
|
1816
1847
|
private readonly infoBar;
|
|
1848
|
+
private readonly platform;
|
|
1849
|
+
private readonly destroyRef;
|
|
1817
1850
|
private readonly customUserAvatarComponent;
|
|
1851
|
+
/** Bumps when viewport changes so dynamic action locations re-resolve. */
|
|
1852
|
+
private readonly layoutTick;
|
|
1853
|
+
constructor();
|
|
1818
1854
|
protected get registry(): _acorex_components_conversation.AXConversationRegistryService;
|
|
1819
1855
|
/** Whether a custom user avatar component is registered via conversation config. */
|
|
1820
1856
|
readonly hasCustomUserAvatar: _angular_core.Signal<boolean>;
|
|
@@ -1828,10 +1864,8 @@ declare class AXConversationInfoBarComponent {
|
|
|
1828
1864
|
readonly membersPopoverTarget: _angular_core.WritableSignal<HTMLElement>;
|
|
1829
1865
|
/** Loading state for async actions */
|
|
1830
1866
|
readonly actionLoading: _angular_core.WritableSignal<boolean>;
|
|
1831
|
-
/** Info area clicked —
|
|
1867
|
+
/** Info area clicked event — host apps can open a custom conversation details UI */
|
|
1832
1868
|
readonly infoClick: _angular_core.OutputEmitterRef<void>;
|
|
1833
|
-
/** @deprecated Use infoClick — kept for backward compatibility */
|
|
1834
|
-
readonly avatarClick: _angular_core.OutputEmitterRef<void>;
|
|
1835
1869
|
/** Search clicked event */
|
|
1836
1870
|
readonly searchClick: _angular_core.OutputEmitterRef<void>;
|
|
1837
1871
|
/** Search query changed event */
|
|
@@ -1839,17 +1873,18 @@ declare class AXConversationInfoBarComponent {
|
|
|
1839
1873
|
/** Menu item clicked event */
|
|
1840
1874
|
readonly menuItemAction: _angular_core.OutputEmitterRef<string>;
|
|
1841
1875
|
/** Inline action buttons from registry */
|
|
1842
|
-
readonly inlineActions: _angular_core.Signal<
|
|
1876
|
+
readonly inlineActions: _angular_core.Signal<AXConversationInfoBarAction[]>;
|
|
1843
1877
|
/** Dropdown menu items from registry */
|
|
1844
1878
|
readonly menuItems: _angular_core.Signal<AXConversationDropdownMenuItem[]>;
|
|
1845
1879
|
/** Get conversation status - delegate to utils */
|
|
1846
1880
|
getStatus(conversation: AXConversation): 'online' | 'offline' | 'away' | undefined;
|
|
1847
1881
|
/** Get subtitle text - delegate to utils */
|
|
1848
1882
|
getSubtitle(conversation: AXConversation): string;
|
|
1849
|
-
/**
|
|
1883
|
+
/** Info area clicked — emits for host apps to open a custom conversation details UI */
|
|
1850
1884
|
onInfoLeftClick(): void;
|
|
1851
1885
|
/** Handle inline action click */
|
|
1852
1886
|
onInlineActionClick(actionId: string): Promise<void>;
|
|
1887
|
+
private activateAction;
|
|
1853
1888
|
/** Get inputs for dynamic component */
|
|
1854
1889
|
getComponentInputs(): Record<string, unknown>;
|
|
1855
1890
|
getInlineComponentInputs(): Record<string, unknown>;
|
|
@@ -1861,7 +1896,7 @@ declare class AXConversationInfoBarComponent {
|
|
|
1861
1896
|
/** Handle menu item click */
|
|
1862
1897
|
onMenuItemClick(item: AXConversationDropdownMenuItem): Promise<void>;
|
|
1863
1898
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationInfoBarComponent, never>;
|
|
1864
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXConversationInfoBarComponent, "ax-conversation-info-bar", never, {}, { "infoClick": "infoClick"; "
|
|
1899
|
+
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
1900
|
}
|
|
1866
1901
|
|
|
1867
1902
|
/**
|
|
@@ -3168,6 +3203,27 @@ declare abstract class AXConversationUserApi {
|
|
|
3168
3203
|
protected createError(code: string, message: string, statusCode?: number, details?: unknown): AXConversationApiError;
|
|
3169
3204
|
}
|
|
3170
3205
|
|
|
3206
|
+
type AXConversationComposerGenerationPhase = 'idle' | 'generating' | 'stopping';
|
|
3207
|
+
declare class AXConversationComposerGenerationStateService {
|
|
3208
|
+
private readonly _phase;
|
|
3209
|
+
private readonly _cancelled$;
|
|
3210
|
+
/** Current generation lifecycle phase. */
|
|
3211
|
+
readonly phase: _angular_core.Signal<AXConversationComposerGenerationPhase>;
|
|
3212
|
+
/** Whether a background generation (e.g. AI response) is in progress. */
|
|
3213
|
+
readonly isGenerating: _angular_core.Signal<boolean>;
|
|
3214
|
+
/** Whether generation is being cancelled (spinner / locked until API finishes). */
|
|
3215
|
+
readonly isStopping: _angular_core.Signal<boolean>;
|
|
3216
|
+
/** Whether generation or stop-cleanup is in progress. */
|
|
3217
|
+
readonly isBusy: _angular_core.Signal<boolean>;
|
|
3218
|
+
/** Emits when the user presses the composer cancel/stop button. */
|
|
3219
|
+
readonly onCancelled: rxjs.Observable<void>;
|
|
3220
|
+
setGenerating(value: boolean): void;
|
|
3221
|
+
/** User requested cancel — enters `stopping` until {@link setGenerating}(false) is called. */
|
|
3222
|
+
cancel(): void;
|
|
3223
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationComposerGenerationStateService, never>;
|
|
3224
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXConversationComposerGenerationStateService>;
|
|
3225
|
+
}
|
|
3226
|
+
|
|
3171
3227
|
/**
|
|
3172
3228
|
* Central Registry Service
|
|
3173
3229
|
* Provides unified access to all registries
|
|
@@ -3234,6 +3290,13 @@ declare class AXConversationService {
|
|
|
3234
3290
|
private readonly destroy$;
|
|
3235
3291
|
/** Registry service - exposed for child services */
|
|
3236
3292
|
readonly registry: AXConversationRegistryService;
|
|
3293
|
+
private readonly composerGenerationState;
|
|
3294
|
+
/** Whether the composer primary button is in cancel (generation) mode. */
|
|
3295
|
+
readonly isGenerating: _angular_core.Signal<boolean>;
|
|
3296
|
+
/** Whether cancel cleanup is in progress. */
|
|
3297
|
+
readonly isStopping: _angular_core.Signal<boolean>;
|
|
3298
|
+
/** Emits when the user cancels an in-progress generation from the composer. */
|
|
3299
|
+
readonly onGenerationCancelled: rxjs.Observable<void>;
|
|
3237
3300
|
private readonly _activeConversationId;
|
|
3238
3301
|
private readonly _loading;
|
|
3239
3302
|
private readonly _loadingActiveMessages;
|
|
@@ -3340,6 +3403,7 @@ declare class AXConversationService {
|
|
|
3340
3403
|
* Resolve a media reference to a playback/download URL.
|
|
3341
3404
|
*/
|
|
3342
3405
|
resolveMediaUrl(reference: AXConversationUploaderReference, signal?: AbortSignal): Promise<string>;
|
|
3406
|
+
private resolveReplyTo;
|
|
3343
3407
|
/**
|
|
3344
3408
|
* Send a message
|
|
3345
3409
|
* Uses optimistic UI updates - message appears immediately
|
|
@@ -3390,6 +3454,15 @@ declare class AXConversationService {
|
|
|
3390
3454
|
* Marks messages locally and syncs with server
|
|
3391
3455
|
*/
|
|
3392
3456
|
markAsRead(conversationId: string): Promise<void>;
|
|
3457
|
+
/**
|
|
3458
|
+
* Set composer generation mode (shows cancel button instead of send/voice).
|
|
3459
|
+
* Call from message APIs while an AI or async response is in progress.
|
|
3460
|
+
*/
|
|
3461
|
+
setGenerating(value: boolean): void;
|
|
3462
|
+
/**
|
|
3463
|
+
* Cancel an in-progress generation from the composer UI or programmatically.
|
|
3464
|
+
*/
|
|
3465
|
+
cancelGeneration(): void;
|
|
3393
3466
|
/**
|
|
3394
3467
|
* Send typing indicator
|
|
3395
3468
|
* Non-critical operation, doesn't throw on failure
|
|
@@ -3829,6 +3902,7 @@ declare class AXConversationMessageListComponent implements OnDestroy {
|
|
|
3829
3902
|
private readonly translation;
|
|
3830
3903
|
private readonly document;
|
|
3831
3904
|
private readonly platform;
|
|
3905
|
+
private readonly actionSheetService;
|
|
3832
3906
|
protected readonly config: Required<_acorex_components_conversation.AXConversationConfig>;
|
|
3833
3907
|
/**
|
|
3834
3908
|
* Background for the message list scroll area from config, or the built-in soft wash when unset/empty.
|
|
@@ -4081,6 +4155,97 @@ declare class AXConversationMessageListService {
|
|
|
4081
4155
|
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXConversationMessageListService>;
|
|
4082
4156
|
}
|
|
4083
4157
|
|
|
4158
|
+
declare class AXConversationAvatarPickerComponent {
|
|
4159
|
+
readonly fileInput: _angular_core.Signal<ElementRef<HTMLInputElement>>;
|
|
4160
|
+
readonly showClearButton: _angular_core.InputSignal<boolean>;
|
|
4161
|
+
readonly avatarUrl: _angular_core.ModelSignal<string>;
|
|
4162
|
+
readonly onFileSelected: _angular_core.OutputEmitterRef<string>;
|
|
4163
|
+
triggerFileInput(): void;
|
|
4164
|
+
onFileInputChange(event: Event): Promise<void>;
|
|
4165
|
+
clearAvatar(): void;
|
|
4166
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationAvatarPickerComponent, never>;
|
|
4167
|
+
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>;
|
|
4168
|
+
}
|
|
4169
|
+
|
|
4170
|
+
/**
|
|
4171
|
+
* Pluggable avatar components for the conversation UI.
|
|
4172
|
+
* Register via `provideConversation({ avatarComponents: { user, conversation } })`.
|
|
4173
|
+
* When only `user` is registered, a built-in conversation avatar host is wired automatically.
|
|
4174
|
+
*/
|
|
4175
|
+
|
|
4176
|
+
/** Custom user avatar (e.g. platform `axp-user-avatar`). */
|
|
4177
|
+
interface AXConversationUserAvatarComponent {
|
|
4178
|
+
readonly userId: InputSignal<string>;
|
|
4179
|
+
readonly size: InputSignal<number>;
|
|
4180
|
+
/** Optional resolved display name (e.g. bot/assist peer title). */
|
|
4181
|
+
readonly displayName?: InputSignal<string | undefined>;
|
|
4182
|
+
/** Optional resolved avatar URL when `userId` is not a platform user row. */
|
|
4183
|
+
readonly displayAvatar?: InputSignal<string | undefined>;
|
|
4184
|
+
/** Optional icon class when no avatar image is available. */
|
|
4185
|
+
readonly displayIcon?: InputSignal<string | undefined>;
|
|
4186
|
+
}
|
|
4187
|
+
/** Optional custom group/channel conversation avatar. */
|
|
4188
|
+
interface AXConversationConversationAvatarComponent {
|
|
4189
|
+
readonly conversationId: InputSignal<string>;
|
|
4190
|
+
readonly size: InputSignal<number>;
|
|
4191
|
+
}
|
|
4192
|
+
type AXConversationAvatarKind = 'user' | 'conversation' | 'auto';
|
|
4193
|
+
declare const AX_CONVERSATION_USER_AVATAR_COMPONENT: InjectionToken<Type<AXConversationUserAvatarComponent>>;
|
|
4194
|
+
declare const AX_CONVERSATION_CONVERSATION_AVATAR_COMPONENT: InjectionToken<Type<AXConversationConversationAvatarComponent>>;
|
|
4195
|
+
interface AXConversationAvatarComponents {
|
|
4196
|
+
user?: Type<AXConversationUserAvatarComponent>;
|
|
4197
|
+
conversation?: Type<AXConversationConversationAvatarComponent>;
|
|
4198
|
+
}
|
|
4199
|
+
|
|
4200
|
+
declare class AXConversationAvatarComponent {
|
|
4201
|
+
private readonly conversationService;
|
|
4202
|
+
private readonly userAvatarComponent;
|
|
4203
|
+
private readonly conversationAvatarComponent;
|
|
4204
|
+
readonly kind: _angular_core.InputSignal<AXConversationAvatarKind>;
|
|
4205
|
+
readonly userId: _angular_core.InputSignal<string>;
|
|
4206
|
+
readonly conversation: _angular_core.InputSignal<AXConversation>;
|
|
4207
|
+
readonly message: _angular_core.InputSignal<AXConversationMessage>;
|
|
4208
|
+
readonly size: _angular_core.InputSignal<number>;
|
|
4209
|
+
readonly showStatus: _angular_core.InputSignal<boolean>;
|
|
4210
|
+
readonly name: _angular_core.InputSignal<string>;
|
|
4211
|
+
readonly avatar: _angular_core.InputSignal<string>;
|
|
4212
|
+
readonly icon: _angular_core.InputSignal<string>;
|
|
4213
|
+
private readonly currentUserId;
|
|
4214
|
+
readonly resolvedKind: _angular_core.Signal<"user" | "conversation">;
|
|
4215
|
+
readonly resolvedUserId: _angular_core.Signal<string>;
|
|
4216
|
+
readonly customComponent: _angular_core.Signal<Type<unknown>>;
|
|
4217
|
+
readonly customInputs: _angular_core.Signal<Record<string, unknown>>;
|
|
4218
|
+
readonly filteredCustomInputs: _angular_core.Signal<Record<string, unknown>>;
|
|
4219
|
+
readonly fallbackDisplay: _angular_core.Signal<{
|
|
4220
|
+
name: string;
|
|
4221
|
+
avatar: string;
|
|
4222
|
+
icon: string;
|
|
4223
|
+
}>;
|
|
4224
|
+
readonly fallbackInitials: _angular_core.Signal<string>;
|
|
4225
|
+
readonly resolvedStatus: _angular_core.Signal<"online" | "offline" | "away">;
|
|
4226
|
+
/** Hide presence badge when a registered custom avatar component is rendered. */
|
|
4227
|
+
readonly statusBadgePresence: _angular_core.Signal<"online" | "offline" | "away">;
|
|
4228
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationAvatarComponent, never>;
|
|
4229
|
+
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>;
|
|
4230
|
+
}
|
|
4231
|
+
|
|
4232
|
+
interface AXConversationRegistryComponentRef {
|
|
4233
|
+
component?: Type<unknown>;
|
|
4234
|
+
componentLoader?: () => Promise<Type<unknown>>;
|
|
4235
|
+
}
|
|
4236
|
+
declare class AXConversationRegistryComponentOutletComponent {
|
|
4237
|
+
readonly component: _angular_core.InputSignal<Type<unknown>>;
|
|
4238
|
+
readonly componentLoader: _angular_core.InputSignal<() => Promise<Type<unknown>>>;
|
|
4239
|
+
readonly inputs: _angular_core.InputSignal<Record<string, unknown>>;
|
|
4240
|
+
readonly resolvedComponent: _angular_core.WritableSignal<Type<unknown>>;
|
|
4241
|
+
readonly loading: _angular_core.WritableSignal<boolean>;
|
|
4242
|
+
constructor();
|
|
4243
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationRegistryComponentOutletComponent, never>;
|
|
4244
|
+
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>;
|
|
4245
|
+
}
|
|
4246
|
+
/** Resolve a registry component reference, preferring lazy loaders when provided. */
|
|
4247
|
+
declare function hasRegistryComponent(ref?: AXConversationRegistryComponentRef): boolean;
|
|
4248
|
+
|
|
4084
4249
|
declare class AXConversationSidebarService {
|
|
4085
4250
|
private readonly conversationService;
|
|
4086
4251
|
constructor();
|
|
@@ -4358,36 +4523,6 @@ declare const AX_CONVERSATION_CONFIG: InjectionToken<Required<AXConversationConf
|
|
|
4358
4523
|
*/
|
|
4359
4524
|
declare const AX_CONVERSATION_ERROR_HANDLER_CONFIG: InjectionToken<Partial<AXConversationErrorHandlerConfig>>;
|
|
4360
4525
|
|
|
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
4526
|
/**
|
|
4392
4527
|
* Registry Configuration Tokens
|
|
4393
4528
|
* Injection tokens for configuring default registry values
|
|
@@ -4457,472 +4592,6 @@ interface AXConversationRegistryConfiguration {
|
|
|
4457
4592
|
*/
|
|
4458
4593
|
declare const AX_CONVERSATION_REGISTRY_CONFIG: InjectionToken<AXConversationRegistryConfiguration>;
|
|
4459
4594
|
|
|
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
4595
|
declare const AX_CONVERSATION_AUDIO_PRESENTATION: {
|
|
4927
4596
|
readonly icon: "fa-light fa-music text-amber-500";
|
|
4928
4597
|
readonly title: "Audio";
|
|
@@ -4995,16 +4664,14 @@ declare function notifyPickerValidationErrors(toast: AXToastService, translation
|
|
|
4995
4664
|
file: File;
|
|
4996
4665
|
errors: AXValidationRuleResult[];
|
|
4997
4666
|
}[]): void;
|
|
4998
|
-
/**
|
|
4999
|
-
declare function
|
|
5000
|
-
/** Close inline composer shell or popup host after send/cancel. */
|
|
5001
|
-
declare function dismissComposerPickerHost(composerService: AXConversationComposerService, popupRef?: AXPopupRef | null): void;
|
|
4667
|
+
/** Close popup/action-sheet host or inline composer shell after send/cancel. */
|
|
4668
|
+
declare function dismissComposerPickerHost(composerService: AXConversationComposerService, popupRef?: AXPopupRef | null, actionSheetRef?: AXActionSheetRef | null): void;
|
|
5002
4669
|
|
|
5003
4670
|
interface AXConversationAudioFile extends AXConversationComposerPickerUploadItem {
|
|
5004
4671
|
duration?: number;
|
|
5005
4672
|
dataUrl?: string;
|
|
5006
4673
|
}
|
|
5007
|
-
declare class AXConversationAudioPickerComponent implements OnDestroy {
|
|
4674
|
+
declare class AXConversationAudioPickerComponent implements OnDestroy, AXConversationComposerActionComponent {
|
|
5008
4675
|
private uploadsDismissed;
|
|
5009
4676
|
private retainUploadedOnDismiss;
|
|
5010
4677
|
readonly service: _angular_core.InputSignal<AXConversationComposerService>;
|
|
@@ -5019,7 +4686,9 @@ declare class AXConversationAudioPickerComponent implements OnDestroy {
|
|
|
5019
4686
|
readonly conversation: _angular_core.InputSignal<AXConversation>;
|
|
5020
4687
|
readonly maxFiles: _angular_core.InputSignal<number>;
|
|
5021
4688
|
readonly initialFiles: _angular_core.InputSignal<File[]>;
|
|
4689
|
+
readonly autoRun: _angular_core.InputSignal<boolean>;
|
|
5022
4690
|
readonly __popup__: _angular_core.InputSignal<AXPopupRef<any>>;
|
|
4691
|
+
readonly __actionSheet__: _angular_core.InputSignal<AXActionSheetRef<unknown>>;
|
|
5023
4692
|
readonly catalogFileType: "conversation-audio";
|
|
5024
4693
|
readonly audioFiles: _angular_core.WritableSignal<AXConversationAudioFile[]>;
|
|
5025
4694
|
readonly isDragging: _angular_core.WritableSignal<boolean>;
|
|
@@ -5029,6 +4698,7 @@ declare class AXConversationAudioPickerComponent implements OnDestroy {
|
|
|
5029
4698
|
caption: string;
|
|
5030
4699
|
readonly allowMultiple: _angular_core.Signal<boolean>;
|
|
5031
4700
|
constructor();
|
|
4701
|
+
activate(): Promise<void>;
|
|
5032
4702
|
private createUtilityContext;
|
|
5033
4703
|
private getCatalogFileTypeDef;
|
|
5034
4704
|
private runUtility;
|
|
@@ -5050,7 +4720,7 @@ declare class AXConversationAudioPickerComponent implements OnDestroy {
|
|
|
5050
4720
|
getSelectedCountText(): string;
|
|
5051
4721
|
getSendText(): string;
|
|
5052
4722
|
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>;
|
|
4723
|
+
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
4724
|
}
|
|
5055
4725
|
|
|
5056
4726
|
declare const AX_CONVERSATION_COMPOSER_EMOJI_TAB: AXConversationComposerTab;
|
|
@@ -5125,7 +4795,7 @@ interface AXConversationAttachedFile {
|
|
|
5125
4795
|
error?: string;
|
|
5126
4796
|
abortController?: AbortController;
|
|
5127
4797
|
}
|
|
5128
|
-
declare class AXConversationFilePickerComponent implements OnDestroy {
|
|
4798
|
+
declare class AXConversationFilePickerComponent implements OnDestroy, AXConversationComposerActionComponent {
|
|
5129
4799
|
private uploadsDismissed;
|
|
5130
4800
|
private retainUploadedOnDismiss;
|
|
5131
4801
|
private readonly uploader;
|
|
@@ -5140,7 +4810,9 @@ declare class AXConversationFilePickerComponent implements OnDestroy {
|
|
|
5140
4810
|
readonly conversation: _angular_core.InputSignal<AXConversation>;
|
|
5141
4811
|
readonly maxFiles: _angular_core.InputSignal<number>;
|
|
5142
4812
|
readonly initialFiles: _angular_core.InputSignal<File[]>;
|
|
4813
|
+
readonly autoRun: _angular_core.InputSignal<boolean>;
|
|
5143
4814
|
readonly __popup__: _angular_core.InputSignal<AXPopupRef<any>>;
|
|
4815
|
+
readonly __actionSheet__: _angular_core.InputSignal<AXActionSheetRef<unknown>>;
|
|
5144
4816
|
readonly catalogFileType: "conversation-file";
|
|
5145
4817
|
readonly allowMultiple: _angular_core.Signal<boolean>;
|
|
5146
4818
|
readonly files: _angular_core.WritableSignal<AXConversationAttachedFile[]>;
|
|
@@ -5150,6 +4822,7 @@ declare class AXConversationFilePickerComponent implements OnDestroy {
|
|
|
5150
4822
|
private catalogFileTypeDef?;
|
|
5151
4823
|
caption: string;
|
|
5152
4824
|
constructor();
|
|
4825
|
+
activate(): Promise<void>;
|
|
5153
4826
|
private createUtilityContext;
|
|
5154
4827
|
private getCatalogFileTypeDef;
|
|
5155
4828
|
private pickerKind;
|
|
@@ -5171,7 +4844,7 @@ declare class AXConversationFilePickerComponent implements OnDestroy {
|
|
|
5171
4844
|
getSelectedCountText(): string;
|
|
5172
4845
|
getUploadingLabel(progress: number): string;
|
|
5173
4846
|
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>;
|
|
4847
|
+
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
4848
|
}
|
|
5176
4849
|
|
|
5177
4850
|
declare const AX_CONVERSATION_IMAGE_PRESENTATION: {
|
|
@@ -5191,7 +4864,7 @@ declare class AXConversationImageFileTypeProvider extends AXFileTypeInfoProvider
|
|
|
5191
4864
|
interface AXConversationImageFile extends AXConversationComposerPickerUploadItem {
|
|
5192
4865
|
preview: string;
|
|
5193
4866
|
}
|
|
5194
|
-
declare class AXConversationImagePickerComponent implements OnDestroy {
|
|
4867
|
+
declare class AXConversationImagePickerComponent implements OnDestroy, AXConversationComposerActionComponent {
|
|
5195
4868
|
private uploadsDismissed;
|
|
5196
4869
|
/** Uploaded blobs are referenced by the sent message — do not delete on dismiss. */
|
|
5197
4870
|
private retainUploadedOnDismiss;
|
|
@@ -5208,7 +4881,9 @@ declare class AXConversationImagePickerComponent implements OnDestroy {
|
|
|
5208
4881
|
readonly conversation: _angular_core.InputSignal<AXConversation>;
|
|
5209
4882
|
readonly maxFiles: _angular_core.InputSignal<number>;
|
|
5210
4883
|
readonly initialFiles: _angular_core.InputSignal<File[]>;
|
|
4884
|
+
readonly autoRun: _angular_core.InputSignal<boolean>;
|
|
5211
4885
|
readonly __popup__: _angular_core.InputSignal<AXPopupRef<any>>;
|
|
4886
|
+
readonly __actionSheet__: _angular_core.InputSignal<AXActionSheetRef<unknown>>;
|
|
5212
4887
|
readonly images: _angular_core.WritableSignal<AXConversationImageFile[]>;
|
|
5213
4888
|
readonly isDragging: _angular_core.WritableSignal<boolean>;
|
|
5214
4889
|
readonly emptyIconClass: _angular_core.Signal<"fa-light fa-image text-purple-500" | "fa-light fa-cloud-arrow-up">;
|
|
@@ -5216,6 +4891,7 @@ declare class AXConversationImagePickerComponent implements OnDestroy {
|
|
|
5216
4891
|
readonly allowMultiple: _angular_core.Signal<boolean>;
|
|
5217
4892
|
private imageFileType?;
|
|
5218
4893
|
constructor();
|
|
4894
|
+
activate(): Promise<void>;
|
|
5219
4895
|
private createUtilityContext;
|
|
5220
4896
|
private loadImageFileType;
|
|
5221
4897
|
handleFiles(files: File[]): Promise<void>;
|
|
@@ -5234,20 +4910,23 @@ declare class AXConversationImagePickerComponent implements OnDestroy {
|
|
|
5234
4910
|
getSelectedCountText(): string;
|
|
5235
4911
|
getSendText(): string;
|
|
5236
4912
|
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>;
|
|
4913
|
+
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
4914
|
}
|
|
5239
4915
|
|
|
5240
4916
|
declare class AXConversationLocationPickerComponent {
|
|
5241
|
-
|
|
5242
|
-
private readonly
|
|
4917
|
+
readonly service: _angular_core.InputSignal<AXConversationComposerService>;
|
|
4918
|
+
private readonly composerServiceFromInjector;
|
|
4919
|
+
private get composerService();
|
|
5243
4920
|
readonly translation: AXTranslationService;
|
|
5244
4921
|
readonly conversation: _angular_core.InputSignal<AXConversation>;
|
|
4922
|
+
readonly __popup__: _angular_core.InputSignal<AXPopupRef<any>>;
|
|
4923
|
+
readonly __actionSheet__: _angular_core.InputSignal<AXActionSheetRef<unknown>>;
|
|
5245
4924
|
readonly currentLocation: _angular_core.WritableSignal<AXConversationLocationPayload>;
|
|
5246
4925
|
onMarkerAdded(event: AXMapMarker): void;
|
|
5247
4926
|
sendLocation(): Promise<void>;
|
|
5248
4927
|
cancel(): void;
|
|
5249
4928
|
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>;
|
|
4929
|
+
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
4930
|
}
|
|
5252
4931
|
|
|
5253
4932
|
declare class AXConversationPickerFooterComponent {
|
|
@@ -5311,12 +4990,15 @@ declare class AXConversationPickerEmptyComponent {
|
|
|
5311
4990
|
declare class AXConversationPickerShellComponent {
|
|
5312
4991
|
private readonly toast;
|
|
5313
4992
|
private readonly translation;
|
|
4993
|
+
private readonly zone;
|
|
5314
4994
|
readonly fileType: _angular_core.InputSignal<string>;
|
|
5315
4995
|
readonly multiple: _angular_core.InputSignal<boolean>;
|
|
5316
4996
|
readonly filesSelected: _angular_core.OutputEmitterRef<File[]>;
|
|
5317
4997
|
readonly dragEnter: _angular_core.OutputEmitterRef<DragEvent>;
|
|
5318
4998
|
readonly dragLeave: _angular_core.OutputEmitterRef<DragEvent>;
|
|
5319
4999
|
readonly dragOver: _angular_core.OutputEmitterRef<DragEvent>;
|
|
5000
|
+
/** Open the OS file picker for this shell's catalog. */
|
|
5001
|
+
browse(): Promise<void>;
|
|
5320
5002
|
protected onZoneFileChange(event: AXUploaderFileChangeEvent): void;
|
|
5321
5003
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationPickerShellComponent, never>;
|
|
5322
5004
|
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 +5068,7 @@ interface AXConversationVideoFile extends AXConversationComposerPickerUploadItem
|
|
|
5386
5068
|
preview?: string;
|
|
5387
5069
|
duration?: number;
|
|
5388
5070
|
}
|
|
5389
|
-
declare class AXConversationVideoPickerComponent implements OnDestroy {
|
|
5071
|
+
declare class AXConversationVideoPickerComponent implements OnDestroy, AXConversationComposerActionComponent {
|
|
5390
5072
|
private uploadsDismissed;
|
|
5391
5073
|
private retainUploadedOnDismiss;
|
|
5392
5074
|
readonly service: _angular_core.InputSignal<AXConversationComposerService>;
|
|
@@ -5401,7 +5083,9 @@ declare class AXConversationVideoPickerComponent implements OnDestroy {
|
|
|
5401
5083
|
readonly conversation: _angular_core.InputSignal<AXConversation>;
|
|
5402
5084
|
readonly maxFiles: _angular_core.InputSignal<number>;
|
|
5403
5085
|
readonly initialFiles: _angular_core.InputSignal<File[]>;
|
|
5086
|
+
readonly autoRun: _angular_core.InputSignal<boolean>;
|
|
5404
5087
|
readonly __popup__: _angular_core.InputSignal<AXPopupRef<any>>;
|
|
5088
|
+
readonly __actionSheet__: _angular_core.InputSignal<AXActionSheetRef<unknown>>;
|
|
5405
5089
|
readonly catalogFileType: "conversation-video";
|
|
5406
5090
|
readonly videos: _angular_core.WritableSignal<AXConversationVideoFile[]>;
|
|
5407
5091
|
readonly isDragging: _angular_core.WritableSignal<boolean>;
|
|
@@ -5411,6 +5095,7 @@ declare class AXConversationVideoPickerComponent implements OnDestroy {
|
|
|
5411
5095
|
readonly emptyIconClass: _angular_core.Signal<"fa-light fa-video ax-text-blue-500" | "fa-light fa-cloud-arrow-up">;
|
|
5412
5096
|
private catalogFileTypeDef?;
|
|
5413
5097
|
constructor();
|
|
5098
|
+
activate(): Promise<void>;
|
|
5414
5099
|
private createUtilityContext;
|
|
5415
5100
|
private getCatalogFileTypeDef;
|
|
5416
5101
|
private runUtility;
|
|
@@ -5432,7 +5117,7 @@ declare class AXConversationVideoPickerComponent implements OnDestroy {
|
|
|
5432
5117
|
getSelectedCountText(): string;
|
|
5433
5118
|
getSendText(): string;
|
|
5434
5119
|
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>;
|
|
5120
|
+
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
5121
|
}
|
|
5437
5122
|
|
|
5438
5123
|
declare const AX_CONVERSATION_VOICE_PRESENTATION: {
|
|
@@ -5452,14 +5137,21 @@ declare class AXConversationVoiceFileTypeProvider extends AXFileTypeInfoProvider
|
|
|
5452
5137
|
declare function mergeVoiceUploadResult(payload: AXConversationMessagePayload, result: AXUploadResult): AXConversationMessagePayload;
|
|
5453
5138
|
declare function applyVoiceLocalPreview(payload: AXConversationMessagePayload, localUrl: string): AXConversationMessagePayload;
|
|
5454
5139
|
|
|
5455
|
-
declare class AXConversationVoiceRecorderComponent {
|
|
5140
|
+
declare class AXConversationVoiceRecorderComponent implements AXConversationComposerActionComponent {
|
|
5456
5141
|
private readonly platformId;
|
|
5457
5142
|
private readonly destroyRef;
|
|
5458
|
-
|
|
5143
|
+
readonly service: _angular_core.InputSignal<AXConversationComposerService>;
|
|
5144
|
+
private readonly composerServiceFromInjector;
|
|
5145
|
+
private get composerService();
|
|
5459
5146
|
private readonly uploader;
|
|
5147
|
+
private readonly fileTypeRegistry;
|
|
5460
5148
|
private readonly toast;
|
|
5461
5149
|
readonly translation: AXTranslationService;
|
|
5462
5150
|
readonly conversation: _angular_core.InputSignal<AXConversation>;
|
|
5151
|
+
readonly initialFiles: _angular_core.InputSignal<File[]>;
|
|
5152
|
+
readonly autoRun: _angular_core.InputSignal<boolean>;
|
|
5153
|
+
readonly __popup__: _angular_core.InputSignal<AXPopupRef<any>>;
|
|
5154
|
+
readonly __actionSheet__: _angular_core.InputSignal<AXActionSheetRef<unknown>>;
|
|
5463
5155
|
readonly recordingComplete: _angular_core.OutputEmitterRef<Blob>;
|
|
5464
5156
|
readonly recordingCancelled: _angular_core.OutputEmitterRef<void>;
|
|
5465
5157
|
readonly isRecording: _angular_core.WritableSignal<boolean>;
|
|
@@ -5475,7 +5167,9 @@ declare class AXConversationVoiceRecorderComponent {
|
|
|
5475
5167
|
private uploadAbortController?;
|
|
5476
5168
|
readonly formattedTime: _angular_core.Signal<string>;
|
|
5477
5169
|
constructor();
|
|
5170
|
+
activate(): Promise<void>;
|
|
5478
5171
|
startRecording(): Promise<void>;
|
|
5172
|
+
private dismissHost;
|
|
5479
5173
|
/** Stop recording and send */
|
|
5480
5174
|
stopRecording(): void;
|
|
5481
5175
|
cancelRecording(): void;
|
|
@@ -5489,7 +5183,7 @@ declare class AXConversationVoiceRecorderComponent {
|
|
|
5489
5183
|
private sendVoiceMessage;
|
|
5490
5184
|
private stopAndCleanup;
|
|
5491
5185
|
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>;
|
|
5186
|
+
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
5187
|
}
|
|
5494
5188
|
|
|
5495
5189
|
declare const AX_CONVERSATION_COMPOSER_EMOJI_ACTION: AXConversationComposerAction;
|
|
@@ -5511,6 +5205,8 @@ declare const AX_CONVERSATION_FILE_TYPES_READY: InjectionToken<boolean>;
|
|
|
5511
5205
|
/** Registers validation rules and lazy conversation file-type catalogs for composer actions. */
|
|
5512
5206
|
declare function provideConversationComposerFileTypes(): Provider[];
|
|
5513
5207
|
|
|
5208
|
+
/** Ensure a built-in conversation catalog is registered before pre-overlay file selection. */
|
|
5209
|
+
declare function ensureConversationFileCatalogRegistered(registry: AXFileTypeRegistryService, catalogName: string): Promise<void>;
|
|
5514
5210
|
/**
|
|
5515
5211
|
* Lazy-loads conversation file catalogs for the root file-type registry.
|
|
5516
5212
|
* Must not inject {@link AXConversationComposerActionRegistry} — that registry
|
|
@@ -5531,170 +5227,6 @@ declare function createLocalPreviewUrl(fileService: AXFileService, platformId: o
|
|
|
5531
5227
|
|
|
5532
5228
|
declare function resolveComposerMaxFiles(action: Pick<AXConversationComposerAction, 'maxFiles'> | undefined, config: Pick<Required<AXConversationConfig>, 'maxFilesPerMessage'>): number;
|
|
5533
5229
|
|
|
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
5230
|
declare class AXConversationInfoBarSearchComponent {
|
|
5699
5231
|
private readonly platformId;
|
|
5700
5232
|
private readonly destroyRef;
|
|
@@ -5737,7 +5269,7 @@ declare class AXConversationInfoBarSearchComponent {
|
|
|
5737
5269
|
*/
|
|
5738
5270
|
|
|
5739
5271
|
/**
|
|
5740
|
-
* Search in conversation action (inline)
|
|
5272
|
+
* Search in conversation action (inline on desktop, menu on mobile)
|
|
5741
5273
|
*/
|
|
5742
5274
|
declare const AX_CONVERSATION_INFO_BAR_SEARCH_ACTION: AXConversationInfoBarAction;
|
|
5743
5275
|
/**
|
|
@@ -6212,14 +5744,6 @@ declare const AX_CONVERSATION_MESSAGE_DELETE_ACTION: AXConversationMessageAction
|
|
|
6212
5744
|
*/
|
|
6213
5745
|
declare const AX_CONVERSATION_MESSAGE_FORWARD_ACTION: AXConversationMessageAction;
|
|
6214
5746
|
|
|
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
5747
|
declare const AX_CONVERSATION_TEXT_RENDERER: AXConversationMessageRenderer;
|
|
6224
5748
|
|
|
6225
5749
|
declare const AX_CONVERSATION_IMAGE_RENDERER: AXConversationMessageRenderer;
|
|
@@ -6649,6 +6173,52 @@ declare function copyWithFileTypeFallback(message: AXConversationMessage, regist
|
|
|
6649
6173
|
/** Use file-type `open` on the message when `message.fileType` is set. */
|
|
6650
6174
|
declare function openWithFileType(message: AXConversationMessage, registry: AXFileTypeRegistryService, ctx: AXFileTypeOpenContext): Promise<boolean>;
|
|
6651
6175
|
|
|
6176
|
+
interface AXConversationInfoProfileField {
|
|
6177
|
+
id: string;
|
|
6178
|
+
labelKey: string;
|
|
6179
|
+
value: string;
|
|
6180
|
+
icon: string;
|
|
6181
|
+
}
|
|
6182
|
+
type AXConversationMediaCategoryId = 'image' | 'video' | 'file' | 'audio' | 'voice' | 'sticker' | 'location' | 'link';
|
|
6183
|
+
interface AXConversationMediaCategory {
|
|
6184
|
+
id: AXConversationMediaCategoryId;
|
|
6185
|
+
labelKey: string;
|
|
6186
|
+
countLabelKey: string;
|
|
6187
|
+
icon: string;
|
|
6188
|
+
count: number;
|
|
6189
|
+
}
|
|
6190
|
+
declare function messageContainsLink(message: AXConversationMessage): boolean;
|
|
6191
|
+
declare function getPrivatePeerParticipant(conversation: AXConversation, currentUserId?: string): AXConversationParticipant | undefined;
|
|
6192
|
+
declare function getConversationProfileFields(conversation: AXConversation, currentUserId?: string): AXConversationInfoProfileField[];
|
|
6193
|
+
declare function getConversationMediaCategories(messages: AXConversationMessage[]): AXConversationMediaCategory[];
|
|
6194
|
+
declare function filterMessagesByMediaCategory(messages: AXConversationMessage[], categoryId: AXConversationMediaCategoryId): AXConversationMessage[];
|
|
6195
|
+
declare function isGridMediaCategory(categoryId: AXConversationMediaCategoryId): boolean;
|
|
6196
|
+
declare function isAttachmentListCategory(categoryId: AXConversationMediaCategoryId): boolean;
|
|
6197
|
+
interface AXConversationMediaGalleryTile {
|
|
6198
|
+
key: string;
|
|
6199
|
+
message: AXConversationMessage;
|
|
6200
|
+
kind: 'image' | 'video' | 'sticker';
|
|
6201
|
+
image?: AXConversationImageMediaItem;
|
|
6202
|
+
video?: AXConversationVideoMediaItem;
|
|
6203
|
+
stickerUrl?: string;
|
|
6204
|
+
stickerAlt?: string;
|
|
6205
|
+
}
|
|
6206
|
+
declare function buildMediaGalleryTiles(messages: AXConversationMessage[], categoryId: AXConversationMediaCategoryId): AXConversationMediaGalleryTile[];
|
|
6207
|
+
declare function resolveVideoThumbnailUrl(video: AXConversationVideoMediaItem): string | undefined;
|
|
6208
|
+
declare function resolveGalleryImageUrl(image: AXConversationImageMediaItem): string | undefined;
|
|
6209
|
+
declare function getMessageVideoItems(message: AXConversationMessage): AXConversationVideoMediaItem[];
|
|
6210
|
+
declare function getMessageAudioItems(message: AXConversationMessage): AXConversationAudioMediaItem[];
|
|
6211
|
+
interface AXConversationMediaPageResult {
|
|
6212
|
+
items: AXConversationMessage[];
|
|
6213
|
+
hasMore: boolean;
|
|
6214
|
+
nextCursor?: string;
|
|
6215
|
+
page: number;
|
|
6216
|
+
}
|
|
6217
|
+
declare function fetchConversationMediaPage(conversationApi: AXConversationApi, conversationId: string, page: number, pageSize?: number, cursor?: string): Promise<AXConversationMediaPageResult>;
|
|
6218
|
+
/** Merge media API results with in-memory messages needed for link/sticker/voice/location tabs. */
|
|
6219
|
+
declare function mergeInfoPanelMessages(mediaMessages: AXConversationMessage[], supplemental: AXConversationMessage[]): AXConversationMessage[];
|
|
6220
|
+
declare function filterSupplementalInfoPanelMessages(messages: AXConversationMessage[]): AXConversationMessage[];
|
|
6221
|
+
|
|
6652
6222
|
/**
|
|
6653
6223
|
* Error Message Constants
|
|
6654
6224
|
* Centralized error messages with i18n support structure
|
|
@@ -7041,5 +6611,5 @@ declare function getErrorMessage(code: string, params?: Record<string, string |
|
|
|
7041
6611
|
*/
|
|
7042
6612
|
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
6613
|
|
|
7044
|
-
export {
|
|
7045
|
-
export type { AXConversation,
|
|
6614
|
+
export { AXConversationApi, AXConversationApiLoggerService, AXConversationAudioAttachmentComponent, AXConversationAudioFileTypeProvider, AXConversationAudioPickerComponent, AXConversationAudioRendererComponent, AXConversationAvatarComponent, AXConversationAvatarPickerComponent, AXConversationBaseRegistry, AXConversationComposerActionRegistry, AXConversationComposerComponent, AXConversationComposerFileTypesProvider, AXConversationComposerGenerationStateService, 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 };
|
|
6615
|
+
export type { AXConversation, AXConversationApiError, AXConversationApiLogEntry, AXConversationApiName, AXConversationAudioMediaItem, AXConversationAudioPayload, AXConversationAvatarComponents, AXConversationAvatarDisplay, AXConversationAvatarKind, AXConversationBlockReportReason, AXConversationCallEvent, AXConversationCleanupPickerUploadsOptions, AXConversationComposerAction, AXConversationComposerActionComponent, AXConversationComposerActionContext, AXConversationComposerGenerationPhase, AXConversationComposerPickerUploadItem, AXConversationComposerPrimaryButtonMode, 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 };
|