@acorex/components 22.0.3 → 22.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/acorex-components-audio-wave.mjs +15 -0
- package/fesm2022/acorex-components-audio-wave.mjs.map +1 -1
- package/fesm2022/acorex-components-conversation-acorex-components-conversation-BtkyQUlh.mjs +16548 -0
- package/fesm2022/acorex-components-conversation-acorex-components-conversation-BtkyQUlh.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-composer-action-choice-dialog.component-D4ca9Mvt.mjs +51 -0
- package/fesm2022/acorex-components-conversation-composer-action-choice-dialog.component-D4ca9Mvt.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-image-picker-editor-dialog.component-QVs1XWYf.mjs +85 -0
- package/fesm2022/acorex-components-conversation-image-picker-editor-dialog.component-QVs1XWYf.mjs.map +1 -0
- package/fesm2022/{acorex-components-conversation-open-composer-picker-for-files-DnSW908R.mjs → acorex-components-conversation-open-composer-picker-for-files-BKKO_8x6.mjs} +3 -3
- package/fesm2022/{acorex-components-conversation-open-composer-picker-for-files-DnSW908R.mjs.map → acorex-components-conversation-open-composer-picker-for-files-BKKO_8x6.mjs.map} +1 -1
- package/fesm2022/acorex-components-conversation-picker-rename-file-dialog.component-BNKFb5yO.mjs +65 -0
- package/fesm2022/acorex-components-conversation-picker-rename-file-dialog.component-BNKFb5yO.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation.mjs +1 -15531
- package/fesm2022/acorex-components-conversation.mjs.map +1 -1
- package/fesm2022/acorex-components-image-editor.mjs +600 -409
- package/fesm2022/acorex-components-image-editor.mjs.map +1 -1
- package/fesm2022/acorex-components-range-slider.mjs +2 -2
- package/fesm2022/acorex-components-range-slider.mjs.map +1 -1
- package/package.json +3 -3
- package/types/acorex-components-audio-wave.d.ts +3 -0
- package/types/acorex-components-conversation.d.ts +1407 -1295
- package/types/acorex-components-image-editor.d.ts +54 -49
- package/fesm2022/acorex-components-conversation-composer-action-choice-dialog.component-DCcRJYfF.mjs +0 -50
- package/fesm2022/acorex-components-conversation-composer-action-choice-dialog.component-DCcRJYfF.mjs.map +0 -1
|
@@ -1,7 +1,8 @@
|
|
|
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,
|
|
3
|
+
import { OnDestroy, ViewContainerRef, Type, InputSignal, WritableSignal, Signal, Provider, OnInit, EventEmitter, TemplateRef, InjectionToken, ElementRef, ModuleWithProviders } from '@angular/core';
|
|
4
4
|
import { AXComponentCloseEvent, AXHtmlEvent, AXClickEvent, AXDataSource, AXPlacement } from '@acorex/cdk/common';
|
|
5
|
+
import { AXTranslationService } from '@acorex/core/translation';
|
|
5
6
|
import * as _acorex_components_action_sheet from '@acorex/components/action-sheet';
|
|
6
7
|
import { AXActionSheetRef } from '@acorex/components/action-sheet';
|
|
7
8
|
import * as _acorex_components_popup from '@acorex/components/popup';
|
|
@@ -15,12 +16,13 @@ import { AXContextMenuOpeningEvent, AXContextMenuItemsClickEvent } from '@acorex
|
|
|
15
16
|
import { AXTabLocation } from '@acorex/components/tabs';
|
|
16
17
|
import { AXBasePageComponent } from '@acorex/components/page';
|
|
17
18
|
import * as _acorex_core_file from '@acorex/core/file';
|
|
18
|
-
import {
|
|
19
|
-
import { AXTranslationService } from '@acorex/core/translation';
|
|
19
|
+
import { AXFileTypeRegistryService, AXFileTypeExtensionHint, AXFileTypeOpenContext, AXFileTypeInfoProvider, AXFileType, AXFileService } from '@acorex/core/file';
|
|
20
20
|
import { AXToastService } from '@acorex/components/toast';
|
|
21
21
|
import { AXValidationRuleResult } from '@acorex/core/validation';
|
|
22
22
|
import { AXMapMarker } from '@acorex/components/map';
|
|
23
|
+
import { AXRangeSliderValue } from '@acorex/components/range-slider';
|
|
23
24
|
import { SafeHtml } from '@angular/platform-browser';
|
|
25
|
+
import { AXWaveConfig, AXAudioWaveChangeEvent } from '@acorex/components/audio-wave';
|
|
24
26
|
import * as i1 from '@angular/common';
|
|
25
27
|
import * as i2 from '@angular/forms';
|
|
26
28
|
|
|
@@ -1624,7 +1626,7 @@ declare class AXConversationComposerComponent implements OnDestroy {
|
|
|
1624
1626
|
private readonly composerService;
|
|
1625
1627
|
private readonly messageListService;
|
|
1626
1628
|
private readonly config;
|
|
1627
|
-
|
|
1629
|
+
protected readonly translation: AXTranslationService;
|
|
1628
1630
|
/** Access registry through conversation service */
|
|
1629
1631
|
protected get composerActionRegistry(): _acorex_components_conversation.AXConversationComposerActionRegistry;
|
|
1630
1632
|
/** Composer text area reference */
|
|
@@ -1856,6 +1858,7 @@ declare class AXConversationInfoBarComponent {
|
|
|
1856
1858
|
readonly activeConversation: _angular_core.Signal<AXConversation>;
|
|
1857
1859
|
readonly activeComponent: _angular_core.Signal<_acorex_components_conversation.AXConversationInfoBarActiveComponent>;
|
|
1858
1860
|
readonly activeBanner: _angular_core.Signal<_acorex_components_conversation.AXConversationInfoBarActiveBanner>;
|
|
1861
|
+
readonly bannerInputs: _angular_core.Signal<{}>;
|
|
1859
1862
|
readonly membersPopoverTarget: _angular_core.WritableSignal<HTMLElement>;
|
|
1860
1863
|
readonly actionLoading: _angular_core.WritableSignal<boolean>;
|
|
1861
1864
|
readonly infoClick: _angular_core.OutputEmitterRef<void>;
|
|
@@ -1874,7 +1877,6 @@ declare class AXConversationInfoBarComponent {
|
|
|
1874
1877
|
getInlineComponentInputs(): Record<string, unknown>;
|
|
1875
1878
|
isActiveComponentFullWidth(): boolean;
|
|
1876
1879
|
onCloseComponent(): void;
|
|
1877
|
-
getBannerInputs(): Record<string, unknown>;
|
|
1878
1880
|
onCloseBanner(): void;
|
|
1879
1881
|
onMenuItemClick(item: AXConversationDropdownMenuItem): Promise<void>;
|
|
1880
1882
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationInfoBarComponent, never>;
|
|
@@ -3681,6 +3683,47 @@ declare class AXConversationForwardMessageDialogComponent implements OnInit {
|
|
|
3681
3683
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXConversationForwardMessageDialogComponent, "ax-conversation-forward-message-dialog", never, { "__popup__": { "alias": "__popup__"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
3682
3684
|
}
|
|
3683
3685
|
|
|
3686
|
+
/**
|
|
3687
|
+
* Message Utilities Service
|
|
3688
|
+
* Helper functions for message formatting and display
|
|
3689
|
+
*/
|
|
3690
|
+
|
|
3691
|
+
/** Position of a message inside a consecutive same-sender cluster (Telegram grouping). */
|
|
3692
|
+
type AXConversationMessageClusterRole = 'single' | 'start' | 'middle' | 'end';
|
|
3693
|
+
declare class AXConversationMessageUtilsService {
|
|
3694
|
+
static getInitials(name: string): string;
|
|
3695
|
+
static getMessageText(message: AXConversationMessage): string;
|
|
3696
|
+
static getPreviewText(message: AXConversationMessage, maxLength?: number): {
|
|
3697
|
+
value: string;
|
|
3698
|
+
type: string;
|
|
3699
|
+
icon: string;
|
|
3700
|
+
};
|
|
3701
|
+
static isOwnMessage(message: AXConversationMessage, currentUserId: string): boolean;
|
|
3702
|
+
static getSenderName(message: AXConversationMessage, conversation: AXConversation): string;
|
|
3703
|
+
static getSenderAvatar(message: AXConversationMessage, conversation: AXConversation): string | undefined;
|
|
3704
|
+
static getSenderAvatarIcon(message: AXConversationMessage, conversation: AXConversation): string | undefined;
|
|
3705
|
+
static getConversationAvatar(conversation: AXConversation): string | undefined;
|
|
3706
|
+
static getConversationAvatarIcon(conversation: AXConversation): string | undefined;
|
|
3707
|
+
static getConversationStatus(conversation: AXConversation, presence?: AXConversationUserPresence): AXConversationPresenceStatus | undefined;
|
|
3708
|
+
/** Consecutive same-sender messages within this window share one Telegram-style cluster. */
|
|
3709
|
+
static readonly MESSAGE_CLUSTER_MAX_GAP_MS: number;
|
|
3710
|
+
/** Palette of existing theme tokens used to color group sender names (not bubble chrome). */
|
|
3711
|
+
private static readonly SENDER_NAME_COLORS;
|
|
3712
|
+
static toTimestampMs(value: Date | string | number): number;
|
|
3713
|
+
static shouldGroupMessages(message: AXConversationMessage, previousMessage?: AXConversationMessage): boolean;
|
|
3714
|
+
static getMessageClusterRole(message: AXConversationMessage, previousMessage?: AXConversationMessage, nextMessage?: AXConversationMessage): AXConversationMessageClusterRole;
|
|
3715
|
+
static getSenderNameColor(senderId: string): string;
|
|
3716
|
+
static getUserPresenceStatus(presence?: AXConversationUserPresence): AXConversationPresenceStatus | undefined;
|
|
3717
|
+
static getTypingText(conversation: AXConversation, typingUserIds: string[]): string;
|
|
3718
|
+
static formatLastSeen(date: Date): string;
|
|
3719
|
+
static getPrivateChatSubtitle(conversation: AXConversation, presence?: AXConversationUserPresence, currentUserId?: string): string;
|
|
3720
|
+
static getConversationSubtitle(conversation: AXConversation, options?: {
|
|
3721
|
+
typingUserIds?: string[];
|
|
3722
|
+
peerPresence?: AXConversationUserPresence;
|
|
3723
|
+
currentUserId?: string;
|
|
3724
|
+
}): string;
|
|
3725
|
+
}
|
|
3726
|
+
|
|
3684
3727
|
/** Default message list surface when no conversation is selected and no `ax-conversation-message-list-no-active` content is projected. */
|
|
3685
3728
|
declare class AXConversationMessageListNoActiveDefaultComponent {
|
|
3686
3729
|
private readonly translation;
|
|
@@ -3692,272 +3735,226 @@ declare class AXConversationMessageListNoActiveDefaultComponent {
|
|
|
3692
3735
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXConversationMessageListNoActiveDefaultComponent, "ax-conversation-message-list-no-active-default", never, {}, {}, never, never, true, never>;
|
|
3693
3736
|
}
|
|
3694
3737
|
|
|
3695
|
-
|
|
3696
|
-
|
|
3697
|
-
|
|
3698
|
-
|
|
3699
|
-
|
|
3700
|
-
|
|
3701
|
-
|
|
3702
|
-
|
|
3703
|
-
|
|
3704
|
-
|
|
3705
|
-
|
|
3706
|
-
|
|
3738
|
+
interface AXConversationAvatarDisplay {
|
|
3739
|
+
name: string;
|
|
3740
|
+
avatar?: string;
|
|
3741
|
+
icon?: string;
|
|
3742
|
+
}
|
|
3743
|
+
/** Conversation types that resolve a single peer participant for viewer-scoped avatar/title. */
|
|
3744
|
+
declare const AX_CONVERSATION_PEER_AVATAR_TYPES: ReadonlySet<AXConversationType>;
|
|
3745
|
+
/**
|
|
3746
|
+
* Other participant in a peer-scoped conversation (excludes the current viewer).
|
|
3747
|
+
* Applies to private 1:1 and bot assist chats with exactly one non-viewer participant.
|
|
3748
|
+
*/
|
|
3749
|
+
declare function resolveConversationPeerUserId(conversation: AXConversation, currentUserId?: string): string | undefined;
|
|
3750
|
+
/** Other participant in a private chat (excludes the current user). */
|
|
3751
|
+
declare function resolvePrivatePeerUserId(conversation: AXConversation, currentUserId?: string): string | undefined;
|
|
3752
|
+
/** Peer participant for private and bot conversations. */
|
|
3753
|
+
declare function resolveConversationPeerParticipant(conversation: AXConversation, currentUserId?: string): AXConversationParticipant | undefined;
|
|
3754
|
+
/** Whether `auto` kind should render a registered user avatar for this conversation. */
|
|
3755
|
+
declare function shouldUseUserAvatarForConversation(conversation: AXConversation, currentUserId?: string): boolean;
|
|
3756
|
+
declare function resolveUserAvatarDisplay(userId: string, conversation: AXConversation | undefined, message?: AXConversationMessage): AXConversationAvatarDisplay;
|
|
3757
|
+
declare function resolveConversationAvatarDisplay(conversation: AXConversation, currentUserId?: string): AXConversationAvatarDisplay;
|
|
3758
|
+
|
|
3759
|
+
interface AXConversationMessageListBackgroundPreset {
|
|
3760
|
+
id: string;
|
|
3761
|
+
value: AXConversationMessageListThemeBackground;
|
|
3762
|
+
}
|
|
3763
|
+
/** Library default when no per-conversation or global background is set (pattern-5 tile + gradient wash). */
|
|
3764
|
+
declare const AX_CONVERSATION_DEFAULT_MESSAGE_LIST_THEME_BACKGROUND: AXConversationMessageListThemeBackground;
|
|
3765
|
+
/** Predefined chat-area backgrounds for the info panel (light + dark variants). */
|
|
3766
|
+
declare const AX_CONVERSATION_MESSAGE_LIST_BACKGROUND_PRESETS: AXConversationMessageListBackgroundPreset[];
|
|
3767
|
+
declare const AX_CONVERSATION_DEFAULT_MESSAGE_LIST_BACKGROUND_PRESET_ID = "solid-default";
|
|
3768
|
+
|
|
3769
|
+
/** Subtle Telegram-style chat-area wash when `messageListBackground` is not set (theme-aware). */
|
|
3770
|
+
declare const AX_CONVERSATION_DEFAULT_MESSAGE_LIST_BACKGROUND: string;
|
|
3771
|
+
declare function isMessageListThemeBackground(value: unknown): value is AXConversationMessageListThemeBackground;
|
|
3772
|
+
/** Pick the raw CSS string for the active theme; `undefined` when unset. */
|
|
3773
|
+
declare function resolveMessageListBackgroundRaw(value: AXConversationMessageListBackground | undefined, isDark: boolean): string | undefined;
|
|
3774
|
+
/** Turn bare `https://...` or `/path` into valid CSS `background` for images. */
|
|
3775
|
+
declare function normalizeMessageListBackgroundValue(raw: string): string;
|
|
3776
|
+
/** Whether the built-in pattern-5 wallpaper (gradient + tiled SVG) should be used. */
|
|
3777
|
+
declare function usesDefaultMessageListWallpaper(value: AXConversationMessageListBackground | undefined): boolean;
|
|
3778
|
+
/** Resolve config/metadata background for the active theme, with library default fallback. */
|
|
3779
|
+
declare function resolveMessageListBackgroundStyle(value: AXConversationMessageListBackground | undefined, isDark: boolean): string;
|
|
3780
|
+
/** Whether two stored backgrounds represent the same preset (supports legacy string values). */
|
|
3781
|
+
declare function isSameMessageListBackground(a: AXConversationMessageListBackground | undefined, b: AXConversationMessageListThemeBackground, isDark: boolean): boolean;
|
|
3782
|
+
|
|
3783
|
+
/** Default Font Awesome icon for group conversations without a custom avatar image. */
|
|
3784
|
+
declare const AX_CONVERSATION_DEFAULT_GROUP_ICON = "fa-light fa-users";
|
|
3785
|
+
/** Default Font Awesome icon for private/bot conversations without a custom avatar image. */
|
|
3786
|
+
declare const AX_CONVERSATION_DEFAULT_USER_ICON = "fa-light fa-user";
|
|
3787
|
+
/** True when the stored title is a placeholder, not a user-defined name. */
|
|
3788
|
+
declare function isGenericPrivateConversationTitle(title: string | undefined): boolean;
|
|
3789
|
+
/**
|
|
3790
|
+
* Find an existing private 1:1 conversation between the current user and a peer.
|
|
3791
|
+
* Matches conversations with exactly those two participants.
|
|
3792
|
+
*/
|
|
3793
|
+
declare function findExistingPrivateConversation(conversations: AXConversation[], currentUserId: string, peerUserId: string): AXConversation | undefined;
|
|
3794
|
+
/** Other participant in a private 1v1 chat (excludes the current viewer). */
|
|
3795
|
+
declare function resolvePrivatePeerParticipant(conversation: AXConversation, currentUserId?: string): AXConversationParticipant | undefined;
|
|
3796
|
+
/**
|
|
3797
|
+
* Resolves the display title for the current viewer.
|
|
3798
|
+
* Private and bot peer-scoped chats show the other participant's name when no custom title is set.
|
|
3799
|
+
*/
|
|
3800
|
+
declare function resolveConversationTitleForViewer(conversation: AXConversation, currentUserId?: string): string;
|
|
3801
|
+
/**
|
|
3802
|
+
* Returns a viewer-scoped copy of a conversation with dynamic peer title/avatar/icon.
|
|
3803
|
+
* Does not mutate the source object.
|
|
3804
|
+
*/
|
|
3805
|
+
declare function resolveConversationForViewer(conversation: AXConversation, currentUserId?: string): AXConversation;
|
|
3806
|
+
/** Whether message reactions are enabled for a conversation. Defaults to `true` when omitted. */
|
|
3807
|
+
declare function isConversationReactionsEnabled(conversation?: AXConversation | null): boolean;
|
|
3808
|
+
|
|
3809
|
+
/** Resolves typed `profile`, falling back to legacy `metadata.profile`. */
|
|
3810
|
+
declare function resolveParticipantProfile(participant?: AXConversationParticipant): AXConversationUserProfile;
|
|
3811
|
+
|
|
3812
|
+
type AXConversationDateSeparatorKind = 'today' | 'yesterday' | 'other';
|
|
3813
|
+
declare class AXConversationDateUtilsService {
|
|
3707
3814
|
/**
|
|
3708
|
-
*
|
|
3709
|
-
* Set `messageListBackground` to `transparent` or `none` for a flat look.
|
|
3710
|
-
* Supports `{ light, dark }` for theme-specific backgrounds.
|
|
3815
|
+
* Format relative time (e.g., "2m ago", "1h ago")
|
|
3711
3816
|
*/
|
|
3712
|
-
|
|
3713
|
-
|
|
3714
|
-
|
|
3715
|
-
resolvedEmptyStateComponent(): Type<AXConversationMessageListEmptyComponent>;
|
|
3716
|
-
/** Fallback when no conversation is active and no `ax-conversation-message-list-no-active` content is projected. */
|
|
3717
|
-
protected readonly noActiveFallbackComponent: typeof AXConversationMessageListNoActiveDefaultComponent;
|
|
3718
|
-
private readonly timeouts;
|
|
3719
|
-
readonly reactionPickerTarget: _angular_core.WritableSignal<string>;
|
|
3720
|
-
readonly reactionPickerElement: _angular_core.WritableSignal<HTMLElement>;
|
|
3721
|
-
readonly reactionPickerPlacement: _angular_core.WritableSignal<AXPlacement>;
|
|
3722
|
-
readonly reactionPopover: _angular_core.Signal<any>;
|
|
3723
|
-
/** Message id whose context menu is open (for active row styling). */
|
|
3724
|
-
readonly contextMenuMessageId: _angular_core.WritableSignal<string>;
|
|
3725
|
-
/** True while files are dragged over the message list drop zone. */
|
|
3726
|
-
readonly messageListDragging: _angular_core.WritableSignal<boolean>;
|
|
3727
|
-
/** True when the message list uses single-column adaptive layout (matches CSS container query). */
|
|
3728
|
-
readonly isAdaptiveWideLayout: _angular_core.WritableSignal<boolean>;
|
|
3729
|
-
/** While true, older history is being prepended — do not auto-scroll to the latest message. */
|
|
3730
|
-
private restoringScrollAfterPrepend;
|
|
3731
|
-
private adaptiveLayoutResizeObserver?;
|
|
3732
|
-
readonly availableReactions: _angular_core.WritableSignal<string[]>;
|
|
3733
|
-
private reactionsLoading;
|
|
3734
|
-
private get registry();
|
|
3735
|
-
/** Message list element reference */
|
|
3736
|
-
private readonly messageListRef;
|
|
3737
|
-
/** Messages container element reference */
|
|
3738
|
-
private readonly messagesContainerRef;
|
|
3739
|
-
/** Loading state - use service */
|
|
3740
|
-
readonly loading: _angular_core.Signal<boolean>;
|
|
3741
|
-
/** Loading more messages state - use service */
|
|
3742
|
-
readonly loadingMore: _angular_core.WritableSignal<boolean>;
|
|
3743
|
-
/** Whether older messages remain on the server */
|
|
3744
|
-
readonly hasMoreMessages: _angular_core.Signal<boolean>;
|
|
3745
|
-
/** Show scroll to bottom button - use service */
|
|
3746
|
-
readonly showScrollButton: _angular_core.WritableSignal<boolean>;
|
|
3747
|
-
/** Active conversation */
|
|
3748
|
-
readonly activeConversation: _angular_core.Signal<_acorex_components_conversation.AXConversation>;
|
|
3749
|
-
readonly isGroupConversation: _angular_core.Signal<boolean>;
|
|
3750
|
-
/** Placeholder indices for the initial message list skeleton. */
|
|
3751
|
-
protected readonly loadingSkeletonItems: readonly [0, 1, 2, 3, 4, 5];
|
|
3752
|
-
/** Whether the active conversation allows message reactions. */
|
|
3753
|
-
readonly reactionsEnabled: _angular_core.Signal<boolean>;
|
|
3754
|
-
/** Messages */
|
|
3755
|
-
readonly messages: _angular_core.Signal<AXConversationMessage[]>;
|
|
3756
|
-
/** Message action event */
|
|
3757
|
-
readonly messageAction: _angular_core.OutputEmitterRef<{
|
|
3758
|
-
message: AXConversationMessage;
|
|
3759
|
-
action: string;
|
|
3760
|
-
}>;
|
|
3761
|
-
/** Current user from service */
|
|
3762
|
-
readonly currentUser: _angular_core.Signal<_acorex_components_conversation.AXConversationUser>;
|
|
3763
|
-
/** Message grouped by date - use service */
|
|
3764
|
-
readonly messageGroups: _angular_core.Signal<{
|
|
3765
|
-
date: string;
|
|
3766
|
-
dateLabel: string;
|
|
3767
|
-
messages: AXConversationMessage[];
|
|
3768
|
-
}[]>;
|
|
3769
|
-
constructor();
|
|
3770
|
-
private intersectionObserver?;
|
|
3771
|
-
private readonly readIntersectionObserver;
|
|
3772
|
-
private readonly observedReadMessageIds;
|
|
3817
|
+
static formatRelativeTime(date: Date): string;
|
|
3818
|
+
/** Resolve whether a message date should show Today, Yesterday, or a formatted date. */
|
|
3819
|
+
static getDateSeparatorKind(date: Date): AXConversationDateSeparatorKind;
|
|
3773
3820
|
/**
|
|
3774
|
-
*
|
|
3821
|
+
* Format date label for non-relative separators (localized calendar date).
|
|
3775
3822
|
*/
|
|
3776
|
-
|
|
3823
|
+
static formatDateLabel(date: Date, locale?: string): string;
|
|
3777
3824
|
/**
|
|
3778
|
-
*
|
|
3825
|
+
* Check if two dates are the same day
|
|
3779
3826
|
*/
|
|
3780
|
-
|
|
3781
|
-
/** Get message CSS classes */
|
|
3782
|
-
getMessageClasses(message: AXConversationMessage): string;
|
|
3783
|
-
/** Get bubble CSS classes */
|
|
3784
|
-
getBubbleClasses(message: AXConversationMessage): string;
|
|
3785
|
-
/** Check if message is from current user */
|
|
3786
|
-
isOwnMessage(message: AXConversationMessage): boolean;
|
|
3787
|
-
/** Whether the avatar slot is rendered (visibility is CSS-controlled per layout mode). */
|
|
3788
|
-
shouldRenderAvatar(message: AXConversationMessage): boolean;
|
|
3789
|
-
/** Should show sender name */
|
|
3790
|
-
shouldShowSenderName(message: AXConversationMessage): boolean;
|
|
3791
|
-
/** Get sender name */
|
|
3792
|
-
getSenderName(message: AXConversationMessage): string;
|
|
3793
|
-
/** Get original sender name for forwarded messages */
|
|
3794
|
-
getOriginalSenderName(message: AXConversationMessage): string;
|
|
3795
|
-
/** Get forwarded text with sender and conversation info */
|
|
3796
|
-
getForwardedText(message: AXConversationMessage): string;
|
|
3797
|
-
/** Resolve renderer component for message */
|
|
3798
|
-
getRendererComponent(message: AXConversationMessage): Type<_acorex_components_conversation.AXConversationMessageRendererComponent>;
|
|
3799
|
-
/** Resolve lazy renderer loader for message */
|
|
3800
|
-
private static readonly fallbackRendererLoader;
|
|
3801
|
-
getRendererComponentLoader(message: AXConversationMessage): (() => Promise<Type<_acorex_components_conversation.AXConversationMessageRendererComponent>>) | (() => Promise<typeof _acorex_components_conversation.AXConversationFallbackRendererComponent>);
|
|
3802
|
-
/** Provide inputs for the dynamic renderer */
|
|
3803
|
-
getRendererInputs(message: AXConversationMessage): {
|
|
3804
|
-
message: AXConversationMessage;
|
|
3805
|
-
};
|
|
3806
|
-
/** Get status icon CSS classes */
|
|
3807
|
-
getStatusIconClasses(message: AXConversationMessage): string;
|
|
3808
|
-
/** Get status tooltip text */
|
|
3809
|
-
getStatusTooltip(message: AXConversationMessage): string;
|
|
3810
|
-
/** Get first unread message ID */
|
|
3811
|
-
readonly firstUnreadMessageId: _angular_core.Signal<string>;
|
|
3812
|
-
/** Get grouped reactions */
|
|
3813
|
-
getGroupedReactions(message: AXConversationMessage): Array<{
|
|
3814
|
-
emoji: string;
|
|
3815
|
-
count: number;
|
|
3816
|
-
userIds: string[];
|
|
3817
|
-
hasReacted: boolean;
|
|
3818
|
-
}>;
|
|
3819
|
-
/** Get reaction tooltip text */
|
|
3820
|
-
getReactionTooltip(reaction: {
|
|
3821
|
-
emoji: string;
|
|
3822
|
-
count: number;
|
|
3823
|
-
userIds: string[];
|
|
3824
|
-
hasReacted: boolean;
|
|
3825
|
-
}): string;
|
|
3826
|
-
/** Whether reactions can be shown or added for a message in the active conversation. */
|
|
3827
|
-
messageSupportsReactions(message: AXConversationMessage): boolean;
|
|
3828
|
-
/** Toggle reaction picker */
|
|
3829
|
-
toggleReactionPicker(message: AXConversationMessage, event: MouseEvent): void;
|
|
3830
|
-
/** Close reaction picker */
|
|
3831
|
-
closeReactionPicker(): void;
|
|
3832
|
-
/** Check if current user has reacted with specific emoji */
|
|
3833
|
-
hasUserReacted(message: AXConversationMessage, emoji: string): boolean;
|
|
3834
|
-
/** Check if current user has reacted with specific emoji by message ID */
|
|
3835
|
-
hasUserReactedById(messageId: string, emoji: string): boolean;
|
|
3836
|
-
/** Handle reaction click by message ID */
|
|
3837
|
-
onReactionClickById(messageId: string, emoji: string): void;
|
|
3838
|
-
/** Get message by ID */
|
|
3839
|
-
getMessageById(messageId: string): AXConversationMessage | undefined;
|
|
3840
|
-
/** Load available reactions when the picker is opened (session-cached in service). */
|
|
3841
|
-
private ensureAvailableReactions;
|
|
3842
|
-
/** Get message actions from registry */
|
|
3843
|
-
getMessageActions(message: AXConversationMessage): _acorex_components_conversation.AXConversationMessageAction[];
|
|
3844
|
-
/** Handle reaction click */
|
|
3845
|
-
onReactionClick(message: AXConversationMessage, emoji: string): void;
|
|
3846
|
-
/** Handle message action */
|
|
3847
|
-
onMessageAction(message: AXConversationMessage, action: any): Promise<void>;
|
|
3848
|
-
/** Handle scroll events */
|
|
3849
|
-
onScroll(event: Event): void;
|
|
3850
|
-
/** Handle infinite scroll threshold */
|
|
3851
|
-
onScrollThreshold(edge: 'top' | 'bottom'): Promise<void>;
|
|
3852
|
-
/** Load older messages - delegate to service and preserve scroll anchor */
|
|
3853
|
-
private loadOlderMessages;
|
|
3827
|
+
static isSameDay(date1: Date, date2: Date): boolean;
|
|
3854
3828
|
/**
|
|
3855
|
-
*
|
|
3829
|
+
* Get date key for grouping (YYYY-MM-DD)
|
|
3856
3830
|
*/
|
|
3857
|
-
|
|
3858
|
-
/** Check if user is near bottom of scroll */
|
|
3859
|
-
private isUserNearBottom;
|
|
3831
|
+
static getDateKey(date: Date): string;
|
|
3860
3832
|
/**
|
|
3861
|
-
*
|
|
3862
|
-
* Poll with rAF until the feed exists, then scroll after double rAF so scrollHeight is stable.
|
|
3833
|
+
* Format time (HH:MM)
|
|
3863
3834
|
*/
|
|
3864
|
-
|
|
3865
|
-
/** Scroll to bottom */
|
|
3866
|
-
scrollToBottom(smooth?: boolean): void;
|
|
3867
|
-
/** Scroll to specific message */
|
|
3868
|
-
scrollToMessage(messageId: string): void;
|
|
3869
|
-
/** Cleanup timeouts and observers on destroy */
|
|
3870
|
-
ngOnDestroy(): void;
|
|
3871
|
-
/** Get message preview text for reply */
|
|
3872
|
-
getMessagePreviewText(message: AXConversationMessage): {
|
|
3873
|
-
value: string;
|
|
3874
|
-
type: string;
|
|
3875
|
-
icon: string;
|
|
3876
|
-
};
|
|
3877
|
-
/** Get ARIA label for message */
|
|
3878
|
-
getMessageAriaLabel(message: AXConversationMessage): string;
|
|
3879
|
-
getDateSeparatorAriaLabel(dateLabel: string): string;
|
|
3880
|
-
getReplyCount(message: AXConversationMessage): number;
|
|
3881
|
-
getForwardCount(message: AXConversationMessage): number;
|
|
3882
|
-
onMessageListDragEnter(): void;
|
|
3883
|
-
onMessageListDragLeave(): void;
|
|
3884
|
-
/** Open the matching composer picker popup when files are dropped on the message list. */
|
|
3885
|
-
onMessageListFilesDropped(event: AXUploaderFileChangeEvent): Promise<void>;
|
|
3886
|
-
private composerPickerDeps;
|
|
3887
|
-
/** Handle context menu opening for messages */
|
|
3888
|
-
handleMessageContextMenuOpening(event: AXContextMenuOpeningEvent, message: AXConversationMessage): void;
|
|
3889
|
-
/** Handle context menu item click for messages */
|
|
3890
|
-
handleMessageContextMenuItemClick(event: AXContextMenuItemsClickEvent, message: AXConversationMessage): void;
|
|
3891
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationMessageListComponent, never>;
|
|
3892
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXConversationMessageListComponent, "ax-conversation-message-list", never, {}, { "messageAction": "messageAction"; }, never, ["ax-conversation-message-list-empty, [ax-conversation-message-list-empty]", "ax-conversation-message-list-no-active, [ax-conversation-message-list-no-active]"], true, never>;
|
|
3835
|
+
static formatTime(date: Date): string;
|
|
3893
3836
|
}
|
|
3894
3837
|
|
|
3895
|
-
|
|
3896
|
-
|
|
3897
|
-
|
|
3898
|
-
|
|
3899
|
-
|
|
3900
|
-
|
|
3901
|
-
|
|
3902
|
-
|
|
3903
|
-
|
|
3904
|
-
|
|
3905
|
-
|
|
3906
|
-
|
|
3907
|
-
|
|
3908
|
-
|
|
3909
|
-
|
|
3910
|
-
|
|
3911
|
-
|
|
3912
|
-
|
|
3913
|
-
|
|
3914
|
-
|
|
3915
|
-
|
|
3916
|
-
|
|
3838
|
+
/**
|
|
3839
|
+
* Conversation feature flags for configurable bundle size.
|
|
3840
|
+
*/
|
|
3841
|
+
type AXConversationComposerTabFeature = 'emoji' | 'sticker';
|
|
3842
|
+
interface AXConversationFeatures {
|
|
3843
|
+
/** Enabled built-in composer popup tabs (`emoji`, `sticker`). Defaults to none when omitted. */
|
|
3844
|
+
composerTabs?: AXConversationComposerTabFeature[];
|
|
3845
|
+
}
|
|
3846
|
+
declare function resolveConversationComposerTabs(features?: AXConversationFeatures): readonly AXConversationComposerTabFeature[];
|
|
3847
|
+
declare function isComposerTabEnabled(tab: AXConversationComposerTabFeature, features?: AXConversationFeatures): boolean;
|
|
3848
|
+
|
|
3849
|
+
/**
|
|
3850
|
+
* Conversation Configuration Interface
|
|
3851
|
+
* Centralized configuration values to avoid magic numbers
|
|
3852
|
+
*/
|
|
3853
|
+
/**
|
|
3854
|
+
* Sidebar conversation tabs layout.
|
|
3855
|
+
* - `vertical`: horizontal tab strip above the conversation list.
|
|
3856
|
+
* - `horizontal`: vertical tab strip at inline-start beside the list (`ax-tabs` location `start`).
|
|
3857
|
+
*/
|
|
3858
|
+
type AXConversationSidebarTabsOrientation = 'vertical' | 'horizontal';
|
|
3859
|
+
/**
|
|
3860
|
+
* Main configuration interface for the conversation component
|
|
3861
|
+
*/
|
|
3862
|
+
interface AXConversationConfig {
|
|
3863
|
+
/** Number of messages to load per page */
|
|
3864
|
+
messagePageSize?: number;
|
|
3865
|
+
/** Number of conversations to load per page */
|
|
3866
|
+
conversationPageSize?: number;
|
|
3867
|
+
/** Scroll threshold for detecting scroll events */
|
|
3868
|
+
scrollThreshold?: number;
|
|
3869
|
+
/** Infinite scroll threshold */
|
|
3870
|
+
infiniteScrollThreshold?: number;
|
|
3871
|
+
/** Typing indicator timeout in milliseconds */
|
|
3872
|
+
typingIndicatorTimeout?: number;
|
|
3873
|
+
/** Typing indicator emit throttle in milliseconds while composing (default: 3000) */
|
|
3874
|
+
typingIndicatorThrottle?: number;
|
|
3875
|
+
/** How long to show received typing indicators in the UI (default: 4000) */
|
|
3876
|
+
typingDisplayDuration?: number;
|
|
3877
|
+
/** Message highlight duration in milliseconds */
|
|
3878
|
+
messageHighlightDuration?: number;
|
|
3879
|
+
/** Search debounce delay in milliseconds */
|
|
3880
|
+
debounceSearch?: number;
|
|
3881
|
+
/** Maximum messages per conversation */
|
|
3882
|
+
maxMessagesPerConversation?: number;
|
|
3883
|
+
/** Maximum total messages in store */
|
|
3884
|
+
maxTotalMessages?: number;
|
|
3885
|
+
/** Maximum cached conversations */
|
|
3886
|
+
maxCachedConversations?: number;
|
|
3887
|
+
/** Minimum sidebar width in pixels */
|
|
3888
|
+
minSidebarWidth?: number;
|
|
3889
|
+
/** Maximum sidebar width in pixels */
|
|
3890
|
+
maxSidebarWidth?: number;
|
|
3891
|
+
/** Default sidebar width in pixels */
|
|
3892
|
+
defaultSidebarWidth?: number;
|
|
3917
3893
|
/**
|
|
3918
|
-
*
|
|
3894
|
+
* Sidebar conversation tabs layout.
|
|
3895
|
+
* `vertical` places a horizontal tab strip above the list; `horizontal` places a vertical tab strip at inline-start beside the list.
|
|
3919
3896
|
*/
|
|
3920
|
-
|
|
3921
|
-
|
|
3922
|
-
|
|
3923
|
-
|
|
3924
|
-
|
|
3925
|
-
|
|
3926
|
-
|
|
3927
|
-
|
|
3928
|
-
|
|
3929
|
-
|
|
3930
|
-
|
|
3931
|
-
}[]>;
|
|
3897
|
+
sidebarTabsOrientation?: AXConversationSidebarTabsOrientation;
|
|
3898
|
+
/** Maximum message length in characters */
|
|
3899
|
+
maxMessageLength?: number;
|
|
3900
|
+
/** Minimum message length in characters */
|
|
3901
|
+
minMessageLength?: number;
|
|
3902
|
+
/** Max attachments per message when a composer action omits `maxFiles`. */
|
|
3903
|
+
maxFilesPerMessage?: number;
|
|
3904
|
+
/** Threshold for marking messages as read (0.0 to 1.0, default: 0.3) */
|
|
3905
|
+
messageReadThreshold?: number;
|
|
3906
|
+
/** Debounce window (ms) before flushing batched read-receipt API calls (default: 3000) */
|
|
3907
|
+
messageReadDebounce?: number;
|
|
3932
3908
|
/**
|
|
3933
|
-
*
|
|
3909
|
+
* When true, marks the whole conversation as read once when it is selected (single API call).
|
|
3910
|
+
* Per-message intersection observer still handles new messages received while the chat is open.
|
|
3934
3911
|
*/
|
|
3935
|
-
|
|
3912
|
+
markConversationReadOnSelect?: boolean;
|
|
3936
3913
|
/**
|
|
3937
|
-
*
|
|
3914
|
+
* CSS `background` for the message list (`ax-conversation-message-list` area, all states: loading, empty, messages).
|
|
3915
|
+
* Use full shorthand, or a bare `https://...` / `/path/to.png` (wrapped as `url(...)` with `center/cover`).
|
|
3916
|
+
* Pass a string for the same value in both themes, or `{ light, dark }` for theme-specific backgrounds.
|
|
3917
|
+
* Empty string = Telegram-inspired theme-aware library default (`{ light, dark }`). `transparent` or `none` = flat background.
|
|
3938
3918
|
*/
|
|
3939
|
-
|
|
3940
|
-
|
|
3941
|
-
|
|
3942
|
-
|
|
3943
|
-
|
|
3944
|
-
requestScrollToBottom(): void;
|
|
3945
|
-
private buildCountMap;
|
|
3946
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationMessageListService, never>;
|
|
3947
|
-
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXConversationMessageListService>;
|
|
3919
|
+
messageListBackground?: AXConversationMessageListBackground;
|
|
3920
|
+
/** Optional feature flags to reduce bundle size per app. */
|
|
3921
|
+
features?: AXConversationFeatures;
|
|
3922
|
+
/** Log API calls made by AXConversationService to the console (default: false). */
|
|
3923
|
+
debugApiLogging?: boolean;
|
|
3948
3924
|
}
|
|
3949
3925
|
|
|
3950
|
-
|
|
3951
|
-
|
|
3952
|
-
|
|
3953
|
-
|
|
3954
|
-
|
|
3955
|
-
|
|
3956
|
-
|
|
3957
|
-
|
|
3958
|
-
|
|
3959
|
-
|
|
3960
|
-
|
|
3926
|
+
/**
|
|
3927
|
+
* Default Configuration Values
|
|
3928
|
+
* Centralized defaults to avoid magic numbers throughout the codebase
|
|
3929
|
+
*/
|
|
3930
|
+
|
|
3931
|
+
/**
|
|
3932
|
+
* Default conversation configuration
|
|
3933
|
+
* All values are explicitly defined here for easy maintenance and documentation
|
|
3934
|
+
*/
|
|
3935
|
+
declare const AX_DEFAULT_CONVERSATION_CONFIG: Required<AXConversationConfig>;
|
|
3936
|
+
/**
|
|
3937
|
+
* Helper function to merge user config with defaults
|
|
3938
|
+
* Properly handles array merging to avoid reference issues
|
|
3939
|
+
* @param userConfig - User-provided configuration
|
|
3940
|
+
* @returns Merged configuration with all required fields
|
|
3941
|
+
*/
|
|
3942
|
+
declare function mergeWithDefaults(userConfig?: Partial<AXConversationConfig>): Required<AXConversationConfig>;
|
|
3943
|
+
|
|
3944
|
+
/**
|
|
3945
|
+
* Dependency Injection Tokens
|
|
3946
|
+
* InjectionTokens for configuration and dependencies
|
|
3947
|
+
*/
|
|
3948
|
+
|
|
3949
|
+
/**
|
|
3950
|
+
* Configuration token for conversation component
|
|
3951
|
+
* Uses centralized defaults from AX_DEFAULT_CONVERSATION_CONFIG
|
|
3952
|
+
*/
|
|
3953
|
+
declare const AX_CONVERSATION_CONFIG: InjectionToken<Required<AXConversationConfig>>;
|
|
3954
|
+
/**
|
|
3955
|
+
* Token for configuring AXConversationErrorHandlerService
|
|
3956
|
+
*/
|
|
3957
|
+
declare const AX_CONVERSATION_ERROR_HANDLER_CONFIG: InjectionToken<Partial<AXConversationErrorHandlerConfig>>;
|
|
3961
3958
|
|
|
3962
3959
|
/**
|
|
3963
3960
|
* Pluggable avatar components for the conversation UI.
|
|
@@ -3995,462 +3992,764 @@ interface AXConversationAvatarComponents {
|
|
|
3995
3992
|
conversation?: Type<AXConversationConversationAvatarComponent>;
|
|
3996
3993
|
}
|
|
3997
3994
|
|
|
3998
|
-
|
|
3999
|
-
|
|
4000
|
-
|
|
4001
|
-
|
|
4002
|
-
readonly kind: _angular_core.InputSignal<AXConversationAvatarKind>;
|
|
4003
|
-
readonly userId: _angular_core.InputSignal<string>;
|
|
4004
|
-
readonly conversation: _angular_core.InputSignal<AXConversation>;
|
|
4005
|
-
readonly message: _angular_core.InputSignal<AXConversationMessage>;
|
|
4006
|
-
readonly size: _angular_core.InputSignal<number>;
|
|
4007
|
-
readonly showStatus: _angular_core.InputSignal<boolean>;
|
|
4008
|
-
readonly name: _angular_core.InputSignal<string>;
|
|
4009
|
-
readonly avatar: _angular_core.InputSignal<string>;
|
|
4010
|
-
readonly icon: _angular_core.InputSignal<string>;
|
|
4011
|
-
private readonly currentUserId;
|
|
4012
|
-
readonly resolvedKind: _angular_core.Signal<"user" | "conversation">;
|
|
4013
|
-
readonly resolvedUserId: _angular_core.Signal<string>;
|
|
4014
|
-
readonly customComponent: _angular_core.Signal<Type<unknown>>;
|
|
4015
|
-
readonly customInputs: _angular_core.Signal<Record<string, unknown>>;
|
|
4016
|
-
readonly filteredCustomInputs: _angular_core.Signal<Record<string, unknown>>;
|
|
4017
|
-
readonly fallbackDisplay: _angular_core.Signal<{
|
|
4018
|
-
name: string;
|
|
4019
|
-
avatar: string;
|
|
4020
|
-
icon: string;
|
|
4021
|
-
}>;
|
|
4022
|
-
readonly fallbackInitials: _angular_core.Signal<string>;
|
|
4023
|
-
readonly resolvedStatus: _angular_core.Signal<_acorex_components_conversation.AXConversationPresenceStatus>;
|
|
4024
|
-
readonly statusBadgePresence: _angular_core.Signal<"online" | "offline" | "away" | "busy">;
|
|
4025
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationAvatarComponent, never>;
|
|
4026
|
-
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>;
|
|
4027
|
-
}
|
|
3995
|
+
/**
|
|
3996
|
+
* Registry Configuration Tokens
|
|
3997
|
+
* Injection tokens for configuring default registry values
|
|
3998
|
+
*/
|
|
4028
3999
|
|
|
4029
|
-
|
|
4030
|
-
|
|
4031
|
-
|
|
4032
|
-
|
|
4033
|
-
|
|
4034
|
-
|
|
4035
|
-
|
|
4036
|
-
|
|
4037
|
-
|
|
4038
|
-
|
|
4039
|
-
|
|
4040
|
-
|
|
4041
|
-
|
|
4042
|
-
|
|
4043
|
-
|
|
4044
|
-
|
|
4045
|
-
|
|
4046
|
-
|
|
4047
|
-
|
|
4048
|
-
|
|
4049
|
-
|
|
4050
|
-
|
|
4051
|
-
|
|
4052
|
-
|
|
4053
|
-
|
|
4054
|
-
|
|
4055
|
-
|
|
4056
|
-
|
|
4057
|
-
|
|
4058
|
-
|
|
4059
|
-
|
|
4060
|
-
|
|
4061
|
-
|
|
4062
|
-
|
|
4063
|
-
|
|
4064
|
-
|
|
4065
|
-
|
|
4066
|
-
|
|
4067
|
-
|
|
4068
|
-
|
|
4069
|
-
*/
|
|
4070
|
-
loadMoreConversations(): Promise<void>;
|
|
4071
|
-
/**
|
|
4072
|
-
* Handle scroll threshold (for infinite scroll)
|
|
4073
|
-
*/
|
|
4074
|
-
onScrollThreshold(edge: 'top' | 'bottom'): Promise<void>;
|
|
4075
|
-
/**
|
|
4076
|
-
* Reload conversation list from the first page (e.g. pull-to-refresh).
|
|
4077
|
-
*/
|
|
4078
|
-
reloadConversations(): Promise<void>;
|
|
4079
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationSidebarService, never>;
|
|
4080
|
-
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXConversationSidebarService>;
|
|
4081
|
-
}
|
|
4082
|
-
|
|
4083
|
-
declare class AXConversationSidebarComponent implements OnDestroy {
|
|
4084
|
-
readonly sidebar: AXConversationSidebarService;
|
|
4085
|
-
protected readonly config: Required<_acorex_components_conversation.AXConversationConfig>;
|
|
4086
|
-
private readonly conversationService;
|
|
4087
|
-
private readonly popupService;
|
|
4088
|
-
private readonly translation;
|
|
4089
|
-
private readonly ngZone;
|
|
4090
|
-
private readonly cdr;
|
|
4091
|
-
/** Conversation selected event */
|
|
4092
|
-
readonly conversationSelected: _angular_core.OutputEmitterRef<AXConversation>;
|
|
4093
|
-
/** Search debouncing */
|
|
4094
|
-
private readonly searchSubject;
|
|
4095
|
-
/** Derived state for template */
|
|
4096
|
-
readonly enabledTabs: _angular_core.Signal<_acorex_components_conversation.AXConversationTab[]>;
|
|
4097
|
-
readonly filteredConversations: _angular_core.Signal<AXConversation[]>;
|
|
4098
|
-
readonly loading: _angular_core.Signal<boolean>;
|
|
4099
|
-
readonly loadingMore: _angular_core.WritableSignal<boolean>;
|
|
4100
|
-
readonly hasMoreConversations: _angular_core.Signal<boolean>;
|
|
4101
|
-
readonly isSidebarTabsHorizontal: _angular_core.Signal<boolean>;
|
|
4102
|
-
readonly sidebarTabLocation: _angular_core.Signal<AXTabLocation>;
|
|
4103
|
-
constructor();
|
|
4104
|
-
/** Handle search input change with debouncing */
|
|
4105
|
-
onSearchChange(value: string): void;
|
|
4106
|
-
/** Handle tab change from ax-tabs */
|
|
4107
|
-
onTabChange(event: {
|
|
4108
|
-
tab?: {
|
|
4109
|
-
key?: string;
|
|
4110
|
-
};
|
|
4111
|
-
}): void;
|
|
4112
|
-
/** Select a conversation */
|
|
4113
|
-
selectConversation(conversation: AXConversation): void;
|
|
4114
|
-
/** Get badge value for tab */
|
|
4115
|
-
getBadgeValue(tabId: string): string | undefined;
|
|
4116
|
-
getTabLabel(tabId: string): string;
|
|
4117
|
-
openNewConversationPopup(): Promise<void>;
|
|
4118
|
-
/** Handle infinite scroll threshold - delegate to service */
|
|
4119
|
-
onScrollThreshold(edge: 'top' | 'bottom'): Promise<void>;
|
|
4120
|
-
/** Cleanup on destroy */
|
|
4121
|
-
ngOnDestroy(): void;
|
|
4122
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationSidebarComponent, never>;
|
|
4123
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXConversationSidebarComponent, "ax-conversation-sidebar", never, {}, { "conversationSelected": "conversationSelected"; }, never, ["ax-suffix"], true, never>;
|
|
4124
|
-
}
|
|
4125
|
-
|
|
4126
|
-
type AXConversationNewWizardStep = 'selectUsers' | 'groupDetails';
|
|
4127
|
-
declare class AXConversationNewDialogComponent extends AXBasePageComponent {
|
|
4128
|
-
/**
|
|
4129
|
-
* Assigned by {@link AXPopupComponent} from `open(..., { data: { conversationService } })`.
|
|
4130
|
-
* Not injected: popup content is created on the root view container, so route-scoped providers
|
|
4131
|
-
* would not see the same `AXConversationService` instance as the conversation feature.
|
|
4132
|
-
*/
|
|
4133
|
-
conversationService: AXConversationService;
|
|
4134
|
-
private readonly toastService;
|
|
4135
|
-
private readonly translation;
|
|
4136
|
-
private readonly config;
|
|
4137
|
-
private readonly destroyRef;
|
|
4138
|
-
private searchDebounceTimer?;
|
|
4139
|
-
constructor();
|
|
4000
|
+
/**
|
|
4001
|
+
* Additional message renderers configuration
|
|
4002
|
+
* Provide this token to add custom message renderers in addition to built-in ones
|
|
4003
|
+
* Note: Built-in renderers (text, system, fallback) are registered by default; other types are provided via plugins/constants.
|
|
4004
|
+
*/
|
|
4005
|
+
declare const AX_CONVERSATION_DEFAULT_MESSAGE_RENDERERS: InjectionToken<AXConversationMessageRenderer[]>;
|
|
4006
|
+
/**
|
|
4007
|
+
* Default message actions configuration
|
|
4008
|
+
* Provide this token to override default message actions
|
|
4009
|
+
*/
|
|
4010
|
+
declare const AX_CONVERSATION_DEFAULT_MESSAGE_ACTIONS: InjectionToken<AXConversationMessageAction[]>;
|
|
4011
|
+
/**
|
|
4012
|
+
* Default composer tabs configuration
|
|
4013
|
+
* Provide this token to override default composer tabs (emoji, stickers, etc.)
|
|
4014
|
+
*/
|
|
4015
|
+
declare const AX_CONVERSATION_DEFAULT_COMPOSER_TABS: InjectionToken<AXConversationComposerTab[]>;
|
|
4016
|
+
/**
|
|
4017
|
+
* Default composer actions configuration
|
|
4018
|
+
* Provide this token to override default composer actions (attach, voice, etc.)
|
|
4019
|
+
*/
|
|
4020
|
+
declare const AX_CONVERSATION_DEFAULT_COMPOSER_ACTIONS: InjectionToken<AXConversationComposerAction[]>;
|
|
4021
|
+
/**
|
|
4022
|
+
* Default conversation tabs configuration
|
|
4023
|
+
* Provide this token to override default conversation tabs (all, private, groups, etc.)
|
|
4024
|
+
*/
|
|
4025
|
+
declare const AX_CONVERSATION_DEFAULT_CONVERSATION_TABS: InjectionToken<AXConversationTab[]>;
|
|
4026
|
+
/**
|
|
4027
|
+
* Default info bar actions configuration
|
|
4028
|
+
* Provide this token to override default info bar actions (mute, archive, block, etc.)
|
|
4029
|
+
*/
|
|
4030
|
+
declare const AX_CONVERSATION_DEFAULT_INFO_BAR_ACTIONS: InjectionToken<AXConversationInfoBarAction[]>;
|
|
4031
|
+
/**
|
|
4032
|
+
* Default conversation item actions configuration
|
|
4033
|
+
* Provide this token to override default conversation item actions (mute, delete, archive, etc.)
|
|
4034
|
+
*/
|
|
4035
|
+
declare const AX_CONVERSATION_DEFAULT_CONVERSATION_ITEM_ACTIONS: InjectionToken<AXConversationItemAction[]>;
|
|
4036
|
+
/**
|
|
4037
|
+
* Registry configuration interface
|
|
4038
|
+
*/
|
|
4039
|
+
interface AXConversationRegistryConfiguration {
|
|
4140
4040
|
/**
|
|
4141
|
-
*
|
|
4142
|
-
*
|
|
4041
|
+
* Additional message renderers to register (built-in renderers are automatic).
|
|
4042
|
+
* Each {@link AXConversationMessageRenderer} may include optional `composerActions` for co-located send UX.
|
|
4143
4043
|
*/
|
|
4144
|
-
|
|
4145
|
-
|
|
4146
|
-
|
|
4147
|
-
|
|
4148
|
-
|
|
4149
|
-
|
|
4150
|
-
|
|
4151
|
-
/**
|
|
4152
|
-
|
|
4153
|
-
|
|
4154
|
-
|
|
4155
|
-
|
|
4156
|
-
|
|
4157
|
-
readonly showCreateButton: _angular_core.Signal<boolean>;
|
|
4158
|
-
readonly canGoNextToGroupDetails: _angular_core.Signal<boolean>;
|
|
4159
|
-
readonly canCreate: _angular_core.Signal<boolean>;
|
|
4160
|
-
private readonly _resetWizardWhenSingleEffect;
|
|
4161
|
-
private readonly _syncPopupTitleEffect;
|
|
4162
|
-
readonly usersListEmptyTpl: _angular_core.Signal<TemplateRef<unknown>>;
|
|
4163
|
-
readonly usersListLoadingTpl: _angular_core.Signal<TemplateRef<unknown>>;
|
|
4164
|
-
readonly usersList: _angular_core.Signal<AXListComponent>;
|
|
4165
|
-
readonly usersListDataSource: AXDataSource<unknown>;
|
|
4166
|
-
onCancel(): void;
|
|
4167
|
-
onSelectedUsersChange(ids: string[]): void;
|
|
4168
|
-
onNextToGroupDetails(): void;
|
|
4169
|
-
onBackFromGroupDetails(): void;
|
|
4170
|
-
onSearchChange(value: string): void;
|
|
4171
|
-
isUserSelected(id: string): boolean;
|
|
4172
|
-
userFromItem(item: unknown): AXConversationParticipant | null;
|
|
4173
|
-
private mergeUsersCache;
|
|
4174
|
-
onCreateConversation(): Promise<void>;
|
|
4175
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationNewDialogComponent, never>;
|
|
4176
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXConversationNewDialogComponent, "ax-conversation-new-dialog", never, { "__popup__": { "alias": "__popup__"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
4044
|
+
messageRenderers?: AXConversationMessageRenderer[];
|
|
4045
|
+
/** Message actions to register by default */
|
|
4046
|
+
messageActions?: AXConversationMessageAction[];
|
|
4047
|
+
/** Composer tabs to register by default */
|
|
4048
|
+
composerTabs?: AXConversationComposerTab[];
|
|
4049
|
+
/** Composer actions to register by default */
|
|
4050
|
+
composerActions?: AXConversationComposerAction[];
|
|
4051
|
+
/** Conversation tabs to register by default */
|
|
4052
|
+
conversationTabs?: AXConversationTab[];
|
|
4053
|
+
/** Info bar actions to register by default */
|
|
4054
|
+
infoBarActions?: AXConversationInfoBarAction[];
|
|
4055
|
+
/** Conversation item actions to register by default */
|
|
4056
|
+
conversationItemActions?: AXConversationItemAction[];
|
|
4177
4057
|
}
|
|
4058
|
+
/**
|
|
4059
|
+
* Complete registry configuration token
|
|
4060
|
+
* Provide this for comprehensive registry configuration
|
|
4061
|
+
*/
|
|
4062
|
+
declare const AX_CONVERSATION_REGISTRY_CONFIG: InjectionToken<AXConversationRegistryConfiguration>;
|
|
4178
4063
|
|
|
4179
|
-
|
|
4180
|
-
|
|
4181
|
-
|
|
4182
|
-
|
|
4183
|
-
readonly threshold: _angular_core.InputSignal<number>;
|
|
4184
|
-
/** Which edge to watch: 'top', 'bottom', or 'both' */
|
|
4185
|
-
readonly edge: _angular_core.InputSignal<"top" | "bottom" | "both">;
|
|
4186
|
-
/** When true, scroll events are ignored (e.g. while a page is loading). */
|
|
4187
|
-
readonly scrollDisabled: _angular_core.InputSignal<boolean>;
|
|
4188
|
-
/** Minimum time between emissions (ms) to avoid duplicate API calls. */
|
|
4189
|
-
readonly cooldownMs: _angular_core.InputSignal<number>;
|
|
4190
|
-
/** Event emitted when scrolling reaches the threshold */
|
|
4191
|
-
readonly scrollThreshold: _angular_core.OutputEmitterRef<"top" | "bottom">;
|
|
4192
|
-
private lastScrollTop;
|
|
4193
|
-
private ticking;
|
|
4194
|
-
private lastEmitAt;
|
|
4195
|
-
private pendingEmit;
|
|
4196
|
-
constructor();
|
|
4197
|
-
private setupScrollListener;
|
|
4198
|
-
private handleScroll;
|
|
4199
|
-
private emitThreshold;
|
|
4200
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationInfiniteScrollDirective, never>;
|
|
4201
|
-
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<AXConversationInfiniteScrollDirective, "[axInfiniteScroll]", never, { "threshold": { "alias": "threshold"; "required": false; "isSignal": true; }; "edge": { "alias": "edge"; "required": false; "isSignal": true; }; "scrollDisabled": { "alias": "scrollDisabled"; "required": false; "isSignal": true; }; "cooldownMs": { "alias": "cooldownMs"; "required": false; "isSignal": true; }; }, { "scrollThreshold": "scrollThreshold"; }, never, never, true, never>;
|
|
4202
|
-
}
|
|
4064
|
+
/**
|
|
4065
|
+
* Validation Utilities
|
|
4066
|
+
* Centralized validation functions for messages and user input
|
|
4067
|
+
*/
|
|
4203
4068
|
|
|
4204
4069
|
/**
|
|
4205
|
-
*
|
|
4070
|
+
* Validation result interface
|
|
4206
4071
|
*/
|
|
4207
|
-
|
|
4208
|
-
|
|
4209
|
-
|
|
4210
|
-
|
|
4072
|
+
interface AXConversationValidationResult {
|
|
4073
|
+
/** Whether validation passed */
|
|
4074
|
+
valid: boolean;
|
|
4075
|
+
/** Error message if validation failed */
|
|
4076
|
+
error?: string;
|
|
4077
|
+
/** Error code for programmatic handling */
|
|
4078
|
+
errorCode?: string;
|
|
4211
4079
|
}
|
|
4212
|
-
declare function resolveConversationComposerTabs(features?: AXConversationFeatures): readonly AXConversationComposerTabFeature[];
|
|
4213
|
-
declare function isComposerTabEnabled(tab: AXConversationComposerTabFeature, features?: AXConversationFeatures): boolean;
|
|
4214
|
-
|
|
4215
4080
|
/**
|
|
4216
|
-
*
|
|
4217
|
-
*
|
|
4081
|
+
* Validate message text content
|
|
4082
|
+
* @param text - Text to validate
|
|
4083
|
+
* @param config - Configuration for validation rules
|
|
4084
|
+
* @returns Validation result
|
|
4218
4085
|
*/
|
|
4086
|
+
declare function validateMessageText(text: string | undefined, config: AXConversationConfig): AXConversationValidationResult;
|
|
4219
4087
|
/**
|
|
4220
|
-
*
|
|
4221
|
-
*
|
|
4222
|
-
*
|
|
4088
|
+
* Validate conversation ID
|
|
4089
|
+
* @param conversationId - Conversation ID to validate
|
|
4090
|
+
* @returns Validation result
|
|
4223
4091
|
*/
|
|
4224
|
-
|
|
4092
|
+
declare function validateConversationId(conversationId: string | undefined): AXConversationValidationResult;
|
|
4225
4093
|
/**
|
|
4226
|
-
*
|
|
4094
|
+
* Validate message type
|
|
4095
|
+
* @param type - Message type to validate
|
|
4096
|
+
* @returns Validation result
|
|
4227
4097
|
*/
|
|
4228
|
-
|
|
4229
|
-
/** Number of messages to load per page */
|
|
4230
|
-
messagePageSize?: number;
|
|
4231
|
-
/** Number of conversations to load per page */
|
|
4232
|
-
conversationPageSize?: number;
|
|
4233
|
-
/** Scroll threshold for detecting scroll events */
|
|
4234
|
-
scrollThreshold?: number;
|
|
4235
|
-
/** Infinite scroll threshold */
|
|
4236
|
-
infiniteScrollThreshold?: number;
|
|
4237
|
-
/** Typing indicator timeout in milliseconds */
|
|
4238
|
-
typingIndicatorTimeout?: number;
|
|
4239
|
-
/** Typing indicator emit throttle in milliseconds while composing (default: 3000) */
|
|
4240
|
-
typingIndicatorThrottle?: number;
|
|
4241
|
-
/** How long to show received typing indicators in the UI (default: 4000) */
|
|
4242
|
-
typingDisplayDuration?: number;
|
|
4243
|
-
/** Message highlight duration in milliseconds */
|
|
4244
|
-
messageHighlightDuration?: number;
|
|
4245
|
-
/** Search debounce delay in milliseconds */
|
|
4246
|
-
debounceSearch?: number;
|
|
4247
|
-
/** Maximum messages per conversation */
|
|
4248
|
-
maxMessagesPerConversation?: number;
|
|
4249
|
-
/** Maximum total messages in store */
|
|
4250
|
-
maxTotalMessages?: number;
|
|
4251
|
-
/** Maximum cached conversations */
|
|
4252
|
-
maxCachedConversations?: number;
|
|
4253
|
-
/** Minimum sidebar width in pixels */
|
|
4254
|
-
minSidebarWidth?: number;
|
|
4255
|
-
/** Maximum sidebar width in pixels */
|
|
4256
|
-
maxSidebarWidth?: number;
|
|
4257
|
-
/** Default sidebar width in pixels */
|
|
4258
|
-
defaultSidebarWidth?: number;
|
|
4259
|
-
/**
|
|
4260
|
-
* Sidebar conversation tabs layout.
|
|
4261
|
-
* `vertical` places a horizontal tab strip above the list; `horizontal` places a vertical tab strip at inline-start beside the list.
|
|
4262
|
-
*/
|
|
4263
|
-
sidebarTabsOrientation?: AXConversationSidebarTabsOrientation;
|
|
4264
|
-
/** Maximum message length in characters */
|
|
4265
|
-
maxMessageLength?: number;
|
|
4266
|
-
/** Minimum message length in characters */
|
|
4267
|
-
minMessageLength?: number;
|
|
4268
|
-
/** Max attachments per message when a composer action omits `maxFiles`. */
|
|
4269
|
-
maxFilesPerMessage?: number;
|
|
4270
|
-
/** Threshold for marking messages as read (0.0 to 1.0, default: 0.3) */
|
|
4271
|
-
messageReadThreshold?: number;
|
|
4272
|
-
/** Debounce window (ms) before flushing batched read-receipt API calls (default: 3000) */
|
|
4273
|
-
messageReadDebounce?: number;
|
|
4274
|
-
/**
|
|
4275
|
-
* When true, marks the whole conversation as read once when it is selected (single API call).
|
|
4276
|
-
* Per-message intersection observer still handles new messages received while the chat is open.
|
|
4277
|
-
*/
|
|
4278
|
-
markConversationReadOnSelect?: boolean;
|
|
4279
|
-
/**
|
|
4280
|
-
* CSS `background` for the message list (`ax-conversation-message-list` area, all states: loading, empty, messages).
|
|
4281
|
-
* Use full shorthand, or a bare `https://...` / `/path/to.png` (wrapped as `url(...)` with `center/cover`).
|
|
4282
|
-
* Pass a string for the same value in both themes, or `{ light, dark }` for theme-specific backgrounds.
|
|
4283
|
-
* Empty string = Telegram-inspired theme-aware library default (`{ light, dark }`). `transparent` or `none` = flat background.
|
|
4284
|
-
*/
|
|
4285
|
-
messageListBackground?: AXConversationMessageListBackground;
|
|
4286
|
-
/** Optional feature flags to reduce bundle size per app. */
|
|
4287
|
-
features?: AXConversationFeatures;
|
|
4288
|
-
/** Log API calls made by AXConversationService to the console (default: false). */
|
|
4289
|
-
debugApiLogging?: boolean;
|
|
4290
|
-
}
|
|
4291
|
-
|
|
4292
|
-
/**
|
|
4293
|
-
* Default Configuration Values
|
|
4294
|
-
* Centralized defaults to avoid magic numbers throughout the codebase
|
|
4295
|
-
*/
|
|
4296
|
-
|
|
4297
|
-
/**
|
|
4298
|
-
* Default conversation configuration
|
|
4299
|
-
* All values are explicitly defined here for easy maintenance and documentation
|
|
4300
|
-
*/
|
|
4301
|
-
declare const AX_DEFAULT_CONVERSATION_CONFIG: Required<AXConversationConfig>;
|
|
4302
|
-
/**
|
|
4303
|
-
* Helper function to merge user config with defaults
|
|
4304
|
-
* Properly handles array merging to avoid reference issues
|
|
4305
|
-
* @param userConfig - User-provided configuration
|
|
4306
|
-
* @returns Merged configuration with all required fields
|
|
4307
|
-
*/
|
|
4308
|
-
declare function mergeWithDefaults(userConfig?: Partial<AXConversationConfig>): Required<AXConversationConfig>;
|
|
4309
|
-
|
|
4310
|
-
/**
|
|
4311
|
-
* Dependency Injection Tokens
|
|
4312
|
-
* InjectionTokens for configuration and dependencies
|
|
4313
|
-
*/
|
|
4314
|
-
|
|
4315
|
-
/**
|
|
4316
|
-
* Configuration token for conversation component
|
|
4317
|
-
* Uses centralized defaults from AX_DEFAULT_CONVERSATION_CONFIG
|
|
4318
|
-
*/
|
|
4319
|
-
declare const AX_CONVERSATION_CONFIG: InjectionToken<Required<AXConversationConfig>>;
|
|
4320
|
-
/**
|
|
4321
|
-
* Token for configuring AXConversationErrorHandlerService
|
|
4322
|
-
*/
|
|
4323
|
-
declare const AX_CONVERSATION_ERROR_HANDLER_CONFIG: InjectionToken<Partial<AXConversationErrorHandlerConfig>>;
|
|
4324
|
-
|
|
4325
|
-
/**
|
|
4326
|
-
* Registry Configuration Tokens
|
|
4327
|
-
* Injection tokens for configuring default registry values
|
|
4328
|
-
*/
|
|
4329
|
-
|
|
4330
|
-
/**
|
|
4331
|
-
* Additional message renderers configuration
|
|
4332
|
-
* Provide this token to add custom message renderers in addition to built-in ones
|
|
4333
|
-
* Note: Built-in renderers (text, system, fallback) are registered by default; other types are provided via plugins/constants.
|
|
4334
|
-
*/
|
|
4335
|
-
declare const AX_CONVERSATION_DEFAULT_MESSAGE_RENDERERS: InjectionToken<AXConversationMessageRenderer[]>;
|
|
4098
|
+
declare function validateMessageType(type: AXConversationMessageType | undefined): AXConversationValidationResult;
|
|
4336
4099
|
/**
|
|
4337
|
-
*
|
|
4338
|
-
*
|
|
4100
|
+
* Validate message payload
|
|
4101
|
+
* @param payload - Message payload to validate
|
|
4102
|
+
* @param type - Message type
|
|
4103
|
+
* @returns Validation result
|
|
4339
4104
|
*/
|
|
4340
|
-
declare
|
|
4105
|
+
declare function validateMessagePayload(payload: AXConversationMessagePayload | undefined, type: AXConversationMessageType): Promise<AXConversationValidationResult>;
|
|
4341
4106
|
/**
|
|
4342
|
-
*
|
|
4343
|
-
*
|
|
4107
|
+
* Validate user ID
|
|
4108
|
+
* @param userId - User ID to validate
|
|
4109
|
+
* @returns Validation result
|
|
4344
4110
|
*/
|
|
4345
|
-
declare
|
|
4111
|
+
declare function validateUserId(userId: string | undefined): AXConversationValidationResult;
|
|
4346
4112
|
/**
|
|
4347
|
-
*
|
|
4348
|
-
*
|
|
4113
|
+
* Validate array of user IDs
|
|
4114
|
+
* @param userIds - Array of user IDs to validate
|
|
4115
|
+
* @param minCount - Minimum number of users required
|
|
4116
|
+
* @param maxCount - Maximum number of users allowed
|
|
4117
|
+
* @returns Validation result
|
|
4349
4118
|
*/
|
|
4350
|
-
declare
|
|
4119
|
+
declare function validateUserIds(userIds: string[] | undefined, minCount?: number, maxCount?: number): AXConversationValidationResult;
|
|
4351
4120
|
/**
|
|
4352
|
-
*
|
|
4353
|
-
*
|
|
4121
|
+
* Validate email address
|
|
4122
|
+
* @param email - Email to validate
|
|
4123
|
+
* @returns Validation result
|
|
4354
4124
|
*/
|
|
4355
|
-
declare
|
|
4125
|
+
declare function validateEmail(email: string | undefined): AXConversationValidationResult;
|
|
4356
4126
|
/**
|
|
4357
|
-
*
|
|
4358
|
-
*
|
|
4127
|
+
* Validate URL
|
|
4128
|
+
* @param url - URL to validate
|
|
4129
|
+
* @returns Validation result
|
|
4359
4130
|
*/
|
|
4360
|
-
declare
|
|
4131
|
+
declare function validateUrl(url: string | undefined): AXConversationValidationResult;
|
|
4361
4132
|
/**
|
|
4362
|
-
*
|
|
4363
|
-
*
|
|
4133
|
+
* Sanitize user input to prevent XSS
|
|
4134
|
+
* Note: Angular provides built-in sanitization, but this is an additional layer
|
|
4135
|
+
* @param input - User input to sanitize
|
|
4136
|
+
* @returns Sanitized input
|
|
4364
4137
|
*/
|
|
4365
|
-
declare
|
|
4138
|
+
declare function sanitizeInput(input: string): string;
|
|
4366
4139
|
/**
|
|
4367
|
-
*
|
|
4140
|
+
* Validate latitude coordinate
|
|
4141
|
+
* @param latitude - Latitude to validate
|
|
4142
|
+
* @returns Validation result
|
|
4368
4143
|
*/
|
|
4369
|
-
|
|
4370
|
-
/**
|
|
4371
|
-
* Additional message renderers to register (built-in renderers are automatic).
|
|
4372
|
-
* Each {@link AXConversationMessageRenderer} may include optional `composerActions` for co-located send UX.
|
|
4373
|
-
*/
|
|
4374
|
-
messageRenderers?: AXConversationMessageRenderer[];
|
|
4375
|
-
/** Message actions to register by default */
|
|
4376
|
-
messageActions?: AXConversationMessageAction[];
|
|
4377
|
-
/** Composer tabs to register by default */
|
|
4378
|
-
composerTabs?: AXConversationComposerTab[];
|
|
4379
|
-
/** Composer actions to register by default */
|
|
4380
|
-
composerActions?: AXConversationComposerAction[];
|
|
4381
|
-
/** Conversation tabs to register by default */
|
|
4382
|
-
conversationTabs?: AXConversationTab[];
|
|
4383
|
-
/** Info bar actions to register by default */
|
|
4384
|
-
infoBarActions?: AXConversationInfoBarAction[];
|
|
4385
|
-
/** Conversation item actions to register by default */
|
|
4386
|
-
conversationItemActions?: AXConversationItemAction[];
|
|
4387
|
-
}
|
|
4144
|
+
declare function validateLatitude(latitude: number | undefined | null): AXConversationValidationResult;
|
|
4388
4145
|
/**
|
|
4389
|
-
*
|
|
4390
|
-
*
|
|
4146
|
+
* Validate longitude coordinate
|
|
4147
|
+
* @param longitude - Longitude to validate
|
|
4148
|
+
* @returns Validation result
|
|
4391
4149
|
*/
|
|
4392
|
-
declare
|
|
4393
|
-
|
|
4394
|
-
declare const AX_CONVERSATION_AUDIO_PRESENTATION: {
|
|
4395
|
-
readonly icon: "fa-light fa-music text-amber-500";
|
|
4396
|
-
readonly title: "Audio";
|
|
4397
|
-
};
|
|
4398
|
-
declare function conversationAudioUtilities(): NonNullable<AXFileType['utilities']>;
|
|
4399
|
-
declare function createConversationAudioFileType(): AXFileType;
|
|
4400
|
-
declare class AXConversationAudioFileTypeProvider extends AXFileTypeInfoProvider {
|
|
4401
|
-
items(): Promise<AXFileType<{
|
|
4402
|
-
[x: string]: (ctx: _acorex_core_file.AXFileTypeContext, ...args: unknown[]) => Promise<unknown> | unknown;
|
|
4403
|
-
}>[]>;
|
|
4404
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationAudioFileTypeProvider, never>;
|
|
4405
|
-
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXConversationAudioFileTypeProvider>;
|
|
4406
|
-
}
|
|
4407
|
-
|
|
4408
|
-
declare function audioItemFromUpload(file: File, result: AXConversationUploaderResult, duration: number): AXConversationAudioMediaItem;
|
|
4409
|
-
declare function mergeAudioUploadResult(payload: AXConversationMessagePayload, result: AXUploadResult): AXConversationMessagePayload;
|
|
4410
|
-
declare function applyAudioLocalPreview(payload: AXConversationMessagePayload, localUrl: string, mimeType?: string): AXConversationMessagePayload;
|
|
4150
|
+
declare function validateLongitude(longitude: number | undefined | null): AXConversationValidationResult;
|
|
4411
4151
|
|
|
4412
|
-
/**
|
|
4413
|
-
|
|
4414
|
-
*/
|
|
4152
|
+
/** Infer extension/MIME hints from a persisted message payload. */
|
|
4153
|
+
declare function inferFileExtensionHintFromMessage(message: AXConversationMessage): AXFileTypeExtensionHint;
|
|
4154
|
+
/** Use file-type `copy` on the message when `message.fileType` is set; otherwise fallback. */
|
|
4155
|
+
declare function copyWithFileTypeFallback(message: AXConversationMessage, registry: AXFileTypeRegistryService, fallback: () => string): Promise<string>;
|
|
4156
|
+
/** Use file-type `open` on the message when `message.fileType` is set. */
|
|
4157
|
+
declare function openWithFileType(message: AXConversationMessage, registry: AXFileTypeRegistryService, ctx: AXFileTypeOpenContext): Promise<boolean>;
|
|
4415
4158
|
|
|
4416
|
-
|
|
4417
|
-
declare function createPickerUploadItemId(): string;
|
|
4418
|
-
interface AXConversationComposerPickerUploadItem {
|
|
4159
|
+
interface AXConversationInfoProfileField {
|
|
4419
4160
|
id: string;
|
|
4420
|
-
|
|
4421
|
-
|
|
4422
|
-
|
|
4423
|
-
uploadProgress?: number;
|
|
4424
|
-
uploading?: boolean;
|
|
4425
|
-
uploaded?: boolean;
|
|
4426
|
-
uploadedUrl?: string;
|
|
4427
|
-
mediaId?: string;
|
|
4428
|
-
error?: string;
|
|
4429
|
-
abortController?: AbortController;
|
|
4161
|
+
labelKey: string;
|
|
4162
|
+
value: string;
|
|
4163
|
+
icon: string;
|
|
4430
4164
|
}
|
|
4431
|
-
|
|
4432
|
-
|
|
4433
|
-
|
|
4434
|
-
|
|
4435
|
-
|
|
4436
|
-
|
|
4165
|
+
type AXConversationMediaCategoryId = 'image' | 'video' | 'file' | 'audio' | 'voice' | 'sticker' | 'location' | 'link';
|
|
4166
|
+
interface AXConversationMediaCategory {
|
|
4167
|
+
id: AXConversationMediaCategoryId;
|
|
4168
|
+
labelKey: string;
|
|
4169
|
+
countLabelKey: string;
|
|
4170
|
+
icon: string;
|
|
4171
|
+
count: number;
|
|
4437
4172
|
}
|
|
4438
|
-
|
|
4439
|
-
declare function
|
|
4440
|
-
|
|
4441
|
-
declare function
|
|
4442
|
-
|
|
4443
|
-
|
|
4444
|
-
|
|
4445
|
-
|
|
4446
|
-
|
|
4447
|
-
|
|
4448
|
-
|
|
4449
|
-
|
|
4450
|
-
|
|
4451
|
-
|
|
4452
|
-
|
|
4453
|
-
|
|
4173
|
+
declare function messageContainsLink(message: AXConversationMessage): boolean;
|
|
4174
|
+
declare function getPrivatePeerParticipant(conversation: AXConversation, currentUserId?: string): AXConversationParticipant | undefined;
|
|
4175
|
+
declare function getConversationProfileFields(conversation: AXConversation, currentUserId?: string): AXConversationInfoProfileField[];
|
|
4176
|
+
declare function getConversationMediaCategories(messages: AXConversationMessage[]): AXConversationMediaCategory[];
|
|
4177
|
+
declare function filterMessagesByMediaCategory(messages: AXConversationMessage[], categoryId: AXConversationMediaCategoryId): AXConversationMessage[];
|
|
4178
|
+
declare function isGridMediaCategory(categoryId: AXConversationMediaCategoryId): boolean;
|
|
4179
|
+
declare function isAttachmentListCategory(categoryId: AXConversationMediaCategoryId): boolean;
|
|
4180
|
+
interface AXConversationMediaGalleryTile {
|
|
4181
|
+
key: string;
|
|
4182
|
+
message: AXConversationMessage;
|
|
4183
|
+
kind: 'image' | 'video' | 'sticker';
|
|
4184
|
+
image?: AXConversationImageMediaItem;
|
|
4185
|
+
video?: AXConversationVideoMediaItem;
|
|
4186
|
+
stickerUrl?: string;
|
|
4187
|
+
stickerAlt?: string;
|
|
4188
|
+
}
|
|
4189
|
+
declare function buildMediaGalleryTiles(messages: AXConversationMessage[], categoryId: AXConversationMediaCategoryId): AXConversationMediaGalleryTile[];
|
|
4190
|
+
declare function resolveVideoThumbnailUrl(video: AXConversationVideoMediaItem): string | undefined;
|
|
4191
|
+
declare function resolveGalleryImageUrl(image: AXConversationImageMediaItem): string | undefined;
|
|
4192
|
+
declare function getMessageVideoItems(message: AXConversationMessage): AXConversationVideoMediaItem[];
|
|
4193
|
+
declare function getMessageAudioItems(message: AXConversationMessage): AXConversationAudioMediaItem[];
|
|
4194
|
+
interface AXConversationMediaPageResult {
|
|
4195
|
+
items: AXConversationMessage[];
|
|
4196
|
+
hasMore: boolean;
|
|
4197
|
+
nextCursor?: string;
|
|
4198
|
+
page: number;
|
|
4199
|
+
}
|
|
4200
|
+
declare function fetchConversationMediaPage(conversationApi: AXConversationApi, conversationId: string, page: number, pageSize?: number, cursor?: string): Promise<AXConversationMediaPageResult>;
|
|
4201
|
+
/** Merge media API results with in-memory messages needed for link/sticker/voice/location tabs. */
|
|
4202
|
+
declare function mergeInfoPanelMessages(mediaMessages: AXConversationMessage[], supplemental: AXConversationMessage[]): AXConversationMessage[];
|
|
4203
|
+
declare function filterSupplementalInfoPanelMessages(messages: AXConversationMessage[]): AXConversationMessage[];
|
|
4204
|
+
|
|
4205
|
+
interface AXConversationMessageDateGroup {
|
|
4206
|
+
date: string;
|
|
4207
|
+
dateKind: AXConversationDateSeparatorKind;
|
|
4208
|
+
dateLabel?: string;
|
|
4209
|
+
messages: AXConversationMessage[];
|
|
4210
|
+
}
|
|
4211
|
+
declare class AXConversationMessageListService {
|
|
4212
|
+
private readonly conversationService;
|
|
4213
|
+
private readonly translation;
|
|
4214
|
+
private readonly eventService;
|
|
4215
|
+
private readonly activeLocale;
|
|
4216
|
+
private readonly translationRevision;
|
|
4217
|
+
private get registry();
|
|
4218
|
+
readonly activeConversation: _angular_core.Signal<_acorex_components_conversation.AXConversation>;
|
|
4219
|
+
readonly activeMessages: _angular_core.Signal<AXConversationMessage[]>;
|
|
4220
|
+
readonly currentUser: _angular_core.Signal<_acorex_components_conversation.AXConversationUser>;
|
|
4221
|
+
/** Initial message history load (conversation switch) */
|
|
4222
|
+
readonly loading: _angular_core.Signal<boolean>;
|
|
4223
|
+
/** Loading older messages (scroll-up pagination) */
|
|
4224
|
+
readonly loadingMore: _angular_core.WritableSignal<boolean>;
|
|
4225
|
+
/** Whether older messages can be loaded */
|
|
4226
|
+
readonly hasMoreMessages: _angular_core.Signal<boolean>;
|
|
4227
|
+
/** Show scroll to bottom button */
|
|
4228
|
+
readonly showScrollButton: _angular_core.WritableSignal<boolean>;
|
|
4229
|
+
/** Scroll requests counter */
|
|
4230
|
+
readonly scrollRequests: _angular_core.WritableSignal<number>;
|
|
4231
|
+
/** Live renderer instances keyed by message id (for message actions). */
|
|
4232
|
+
private readonly _rendererInstances;
|
|
4233
|
+
/**
|
|
4234
|
+
* Reply counts merged from API fields and loaded messages.
|
|
4235
|
+
*/
|
|
4236
|
+
readonly replyCounts: _angular_core.Signal<Map<string, number>>;
|
|
4237
|
+
/**
|
|
4238
|
+
* Forward counts merged from API fields and loaded messages.
|
|
4239
|
+
*/
|
|
4240
|
+
readonly forwardCounts: _angular_core.Signal<Map<string, number>>;
|
|
4241
|
+
registerRendererInstance(messageId: string, instance: AXConversationMessageRendererComponent): void;
|
|
4242
|
+
unregisterRendererInstance(messageId: string): void;
|
|
4243
|
+
getRendererInstance(messageId: string): AXConversationMessageRendererComponent | undefined;
|
|
4244
|
+
getReplyCount(messageId: string): number;
|
|
4245
|
+
getForwardCount(messageId: string): number;
|
|
4246
|
+
/** Message grouped by date */
|
|
4247
|
+
readonly messageGroups: _angular_core.Signal<AXConversationMessageDateGroup[]>;
|
|
4248
|
+
/**
|
|
4249
|
+
* Load older messages when the user scrolls near the top.
|
|
4250
|
+
*/
|
|
4251
|
+
loadMoreMessages(): Promise<boolean>;
|
|
4252
|
+
/**
|
|
4253
|
+
* Reset pagination when switching conversations (page 0 is loaded by {@link AXConversationService.selectConversation}).
|
|
4254
|
+
*/
|
|
4255
|
+
resetPagination(): void;
|
|
4256
|
+
getMenuActions(message: AXConversationMessage): _acorex_components_conversation.AXConversationMessageAction[];
|
|
4257
|
+
executeAction(message: AXConversationMessage, actionId: string): Promise<void>;
|
|
4258
|
+
reactToMessage(messageId: string, emoji: string): Promise<void>;
|
|
4259
|
+
/** Request message list to scroll to bottom */
|
|
4260
|
+
requestScrollToBottom(): void;
|
|
4261
|
+
private buildCountMap;
|
|
4262
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationMessageListService, never>;
|
|
4263
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXConversationMessageListService>;
|
|
4264
|
+
}
|
|
4265
|
+
|
|
4266
|
+
declare class AXConversationMessageListComponent implements OnDestroy {
|
|
4267
|
+
private readonly conversationService;
|
|
4268
|
+
private readonly messageListService;
|
|
4269
|
+
private readonly composerService;
|
|
4270
|
+
private readonly fileService;
|
|
4271
|
+
private readonly toast;
|
|
4272
|
+
private readonly infoBarService;
|
|
4273
|
+
private readonly translation;
|
|
4274
|
+
private readonly document;
|
|
4275
|
+
private readonly platform;
|
|
4276
|
+
private readonly actionSheetService;
|
|
4277
|
+
protected readonly config: Required<_acorex_components_conversation.AXConversationConfig>;
|
|
4278
|
+
/**
|
|
4279
|
+
* Background for the message list scroll area from config, or the built-in soft wash when unset/empty.
|
|
4280
|
+
* Set `messageListBackground` to `transparent` or `none` for a flat look.
|
|
4281
|
+
* Supports `{ light, dark }` for theme-specific backgrounds.
|
|
4282
|
+
*/
|
|
4283
|
+
readonly messageListUsesDefaultWallpaper: _angular_core.Signal<boolean>;
|
|
4284
|
+
readonly messageListWallpaperDark: _angular_core.Signal<boolean>;
|
|
4285
|
+
readonly messageListBackgroundStyle: _angular_core.Signal<string>;
|
|
4286
|
+
resolvedEmptyStateComponent(): Type<AXConversationMessageListEmptyComponent>;
|
|
4287
|
+
/** Fallback when no conversation is active and no `ax-conversation-message-list-no-active` content is projected. */
|
|
4288
|
+
protected readonly noActiveFallbackComponent: typeof AXConversationMessageListNoActiveDefaultComponent;
|
|
4289
|
+
private readonly timeouts;
|
|
4290
|
+
readonly reactionPickerTarget: _angular_core.WritableSignal<string>;
|
|
4291
|
+
readonly reactionPickerElement: _angular_core.WritableSignal<HTMLElement>;
|
|
4292
|
+
readonly reactionPickerPlacement: _angular_core.WritableSignal<AXPlacement>;
|
|
4293
|
+
readonly reactionPopover: _angular_core.Signal<any>;
|
|
4294
|
+
/** Message id whose context menu is open (for active row styling). */
|
|
4295
|
+
readonly contextMenuMessageId: _angular_core.WritableSignal<string>;
|
|
4296
|
+
/** True while files are dragged over the message list drop zone. */
|
|
4297
|
+
readonly messageListDragging: _angular_core.WritableSignal<boolean>;
|
|
4298
|
+
/** True when the message list uses single-column adaptive layout (matches CSS container query). */
|
|
4299
|
+
readonly isAdaptiveWideLayout: _angular_core.WritableSignal<boolean>;
|
|
4300
|
+
/** While true, older history is being prepended — do not auto-scroll to the latest message. */
|
|
4301
|
+
private restoringScrollAfterPrepend;
|
|
4302
|
+
private adaptiveLayoutResizeObserver?;
|
|
4303
|
+
readonly availableReactions: _angular_core.WritableSignal<string[]>;
|
|
4304
|
+
private reactionsLoading;
|
|
4305
|
+
private get registry();
|
|
4306
|
+
/** Message list element reference */
|
|
4307
|
+
private readonly messageListRef;
|
|
4308
|
+
/** Messages container element reference */
|
|
4309
|
+
private readonly messagesContainerRef;
|
|
4310
|
+
/** Loading state - use service */
|
|
4311
|
+
readonly loading: _angular_core.Signal<boolean>;
|
|
4312
|
+
/** Loading more messages state - use service */
|
|
4313
|
+
readonly loadingMore: _angular_core.WritableSignal<boolean>;
|
|
4314
|
+
/** Whether older messages remain on the server */
|
|
4315
|
+
readonly hasMoreMessages: _angular_core.Signal<boolean>;
|
|
4316
|
+
/** Show scroll to bottom button - use service */
|
|
4317
|
+
readonly showScrollButton: _angular_core.WritableSignal<boolean>;
|
|
4318
|
+
/** Active conversation */
|
|
4319
|
+
readonly activeConversation: _angular_core.Signal<_acorex_components_conversation.AXConversation>;
|
|
4320
|
+
readonly isGroupConversation: _angular_core.Signal<boolean>;
|
|
4321
|
+
/** Placeholder rows for the initial message list skeleton. */
|
|
4322
|
+
protected readonly loadingSkeletonItems: readonly [0, 1, 2, 3, 4, 5, 6, 7];
|
|
4323
|
+
/** Whether the active conversation allows message reactions. */
|
|
4324
|
+
readonly reactionsEnabled: _angular_core.Signal<boolean>;
|
|
4325
|
+
/** Messages */
|
|
4326
|
+
readonly messages: _angular_core.Signal<AXConversationMessage[]>;
|
|
4327
|
+
/** Message action event */
|
|
4328
|
+
readonly messageAction: _angular_core.OutputEmitterRef<{
|
|
4329
|
+
message: AXConversationMessage;
|
|
4330
|
+
action: string;
|
|
4331
|
+
}>;
|
|
4332
|
+
/** Current user from service */
|
|
4333
|
+
readonly currentUser: _angular_core.Signal<_acorex_components_conversation.AXConversationUser>;
|
|
4334
|
+
/** Message grouped by date - use service */
|
|
4335
|
+
readonly messageGroups: _angular_core.Signal<AXConversationMessageDateGroup[]>;
|
|
4336
|
+
constructor();
|
|
4337
|
+
private intersectionObserver?;
|
|
4338
|
+
private readonly readIntersectionObserver;
|
|
4339
|
+
private readonly observedReadMessageIds;
|
|
4340
|
+
/**
|
|
4341
|
+
* Setup intersection observer to mark messages as read when visible
|
|
4342
|
+
*/
|
|
4343
|
+
private setupIntersectionObserver;
|
|
4344
|
+
/**
|
|
4345
|
+
* Mark message as read
|
|
4346
|
+
*/
|
|
4347
|
+
private markMessageAsRead;
|
|
4348
|
+
getMessageClusterRole(message: AXConversationMessage, previous?: AXConversationMessage, next?: AXConversationMessage): AXConversationMessageClusterRole;
|
|
4349
|
+
getSenderNameColor(senderId: string): string;
|
|
4350
|
+
/** Get message CSS classes */
|
|
4351
|
+
getMessageClasses(message: AXConversationMessage, cluster: AXConversationMessageClusterRole): string;
|
|
4352
|
+
/** Get bubble CSS classes */
|
|
4353
|
+
getBubbleClasses(message: AXConversationMessage): string;
|
|
4354
|
+
/** Check if message is from current user */
|
|
4355
|
+
isOwnMessage(message: AXConversationMessage): boolean;
|
|
4356
|
+
/** Whether the avatar slot is rendered (visibility is CSS-controlled per layout mode). */
|
|
4357
|
+
shouldRenderAvatar(message: AXConversationMessage): boolean;
|
|
4358
|
+
/** Should show sender name */
|
|
4359
|
+
shouldShowSenderName(message: AXConversationMessage, cluster: AXConversationMessageClusterRole): boolean;
|
|
4360
|
+
/** Get sender name */
|
|
4361
|
+
getSenderName(message: AXConversationMessage): string;
|
|
4362
|
+
/** Get original sender name for forwarded messages */
|
|
4363
|
+
getOriginalSenderName(message: AXConversationMessage): string;
|
|
4364
|
+
/** Get forwarded text with sender and conversation info */
|
|
4365
|
+
getForwardedText(message: AXConversationMessage): string;
|
|
4366
|
+
/** Resolve renderer component for message */
|
|
4367
|
+
getRendererComponent(message: AXConversationMessage): Type<_acorex_components_conversation.AXConversationMessageRendererComponent>;
|
|
4368
|
+
/** Resolve lazy renderer loader for message */
|
|
4369
|
+
private static readonly fallbackRendererLoader;
|
|
4370
|
+
getRendererComponentLoader(message: AXConversationMessage): (() => Promise<Type<_acorex_components_conversation.AXConversationMessageRendererComponent>>) | (() => Promise<typeof _acorex_components_conversation.AXConversationFallbackRendererComponent>);
|
|
4371
|
+
/** Provide inputs for the dynamic renderer */
|
|
4372
|
+
getRendererInputs(message: AXConversationMessage): {
|
|
4373
|
+
message: AXConversationMessage;
|
|
4374
|
+
};
|
|
4375
|
+
/** Get status icon CSS classes */
|
|
4376
|
+
getStatusIconClasses(message: AXConversationMessage): string;
|
|
4377
|
+
/** Get status tooltip text */
|
|
4378
|
+
getStatusTooltip(message: AXConversationMessage): string;
|
|
4379
|
+
/** Get first unread message ID */
|
|
4380
|
+
readonly firstUnreadMessageId: _angular_core.Signal<string>;
|
|
4381
|
+
/** Get grouped reactions */
|
|
4382
|
+
getGroupedReactions(message: AXConversationMessage): Array<{
|
|
4383
|
+
emoji: string;
|
|
4384
|
+
count: number;
|
|
4385
|
+
userIds: string[];
|
|
4386
|
+
hasReacted: boolean;
|
|
4387
|
+
}>;
|
|
4388
|
+
/** Get reaction tooltip text */
|
|
4389
|
+
getReactionTooltip(reaction: {
|
|
4390
|
+
emoji: string;
|
|
4391
|
+
count: number;
|
|
4392
|
+
userIds: string[];
|
|
4393
|
+
hasReacted: boolean;
|
|
4394
|
+
}): string;
|
|
4395
|
+
/** Whether reactions can be shown or added for a message in the active conversation. */
|
|
4396
|
+
messageSupportsReactions(message: AXConversationMessage): boolean;
|
|
4397
|
+
/** Toggle reaction picker */
|
|
4398
|
+
toggleReactionPicker(message: AXConversationMessage, event: MouseEvent): void;
|
|
4399
|
+
/** Close reaction picker */
|
|
4400
|
+
closeReactionPicker(): void;
|
|
4401
|
+
/** Check if current user has reacted with specific emoji */
|
|
4402
|
+
hasUserReacted(message: AXConversationMessage, emoji: string): boolean;
|
|
4403
|
+
/** Check if current user has reacted with specific emoji by message ID */
|
|
4404
|
+
hasUserReactedById(messageId: string, emoji: string): boolean;
|
|
4405
|
+
/** Handle reaction click by message ID */
|
|
4406
|
+
onReactionClickById(messageId: string, emoji: string): void;
|
|
4407
|
+
/** Get message by ID */
|
|
4408
|
+
getMessageById(messageId: string): AXConversationMessage | undefined;
|
|
4409
|
+
/** Load available reactions when the picker is opened (session-cached in service). */
|
|
4410
|
+
private ensureAvailableReactions;
|
|
4411
|
+
/** Get message actions from registry */
|
|
4412
|
+
getMessageActions(message: AXConversationMessage): _acorex_components_conversation.AXConversationMessageAction[];
|
|
4413
|
+
/** Handle reaction click */
|
|
4414
|
+
onReactionClick(message: AXConversationMessage, emoji: string): void;
|
|
4415
|
+
/** Handle message action */
|
|
4416
|
+
onMessageAction(message: AXConversationMessage, action: any): Promise<void>;
|
|
4417
|
+
/** Handle scroll events */
|
|
4418
|
+
onScroll(event: Event): void;
|
|
4419
|
+
/** Handle infinite scroll threshold */
|
|
4420
|
+
onScrollThreshold(edge: 'top' | 'bottom'): Promise<void>;
|
|
4421
|
+
/** Load older messages - delegate to service and preserve scroll anchor */
|
|
4422
|
+
private loadOlderMessages;
|
|
4423
|
+
/**
|
|
4424
|
+
* Keep the user's viewport on the same messages after older rows are inserted above.
|
|
4425
|
+
*/
|
|
4426
|
+
private restoreScrollPositionAfterPrepend;
|
|
4427
|
+
/** Check if user is near bottom of scroll */
|
|
4428
|
+
private isUserNearBottom;
|
|
4429
|
+
/**
|
|
4430
|
+
* After switching chats, the template may still show loading (no #messagesContainer).
|
|
4431
|
+
* Poll with rAF until the feed exists, then scroll after double rAF so scrollHeight is stable.
|
|
4432
|
+
*/
|
|
4433
|
+
private scrollToBottomWhenContainerReady;
|
|
4434
|
+
/** Scroll to bottom */
|
|
4435
|
+
scrollToBottom(smooth?: boolean): void;
|
|
4436
|
+
/** Scroll to specific message */
|
|
4437
|
+
scrollToMessage(messageId: string): void;
|
|
4438
|
+
/** Cleanup timeouts and observers on destroy */
|
|
4439
|
+
ngOnDestroy(): void;
|
|
4440
|
+
/** Get message preview text for reply */
|
|
4441
|
+
getMessagePreviewText(message: AXConversationMessage): {
|
|
4442
|
+
value: string;
|
|
4443
|
+
type: string;
|
|
4444
|
+
icon: string;
|
|
4445
|
+
};
|
|
4446
|
+
/** Get ARIA label for message */
|
|
4447
|
+
getMessageAriaLabel(message: AXConversationMessage): string;
|
|
4448
|
+
getDateSeparatorAriaLabel(group: AXConversationMessageDateGroup): string;
|
|
4449
|
+
resolveDateSeparatorLabel(group: AXConversationMessageDateGroup): string;
|
|
4450
|
+
getReplyCount(message: AXConversationMessage): number;
|
|
4451
|
+
getForwardCount(message: AXConversationMessage): number;
|
|
4452
|
+
onMessageListDragEnter(): void;
|
|
4453
|
+
onMessageListDragLeave(): void;
|
|
4454
|
+
/** Open the matching composer picker popup when files are dropped on the message list. */
|
|
4455
|
+
onMessageListFilesDropped(event: AXUploaderFileChangeEvent): Promise<void>;
|
|
4456
|
+
private composerPickerDeps;
|
|
4457
|
+
/** Handle context menu opening for messages */
|
|
4458
|
+
handleMessageContextMenuOpening(event: AXContextMenuOpeningEvent, message: AXConversationMessage): void;
|
|
4459
|
+
/** Handle context menu item click for messages */
|
|
4460
|
+
handleMessageContextMenuItemClick(event: AXContextMenuItemsClickEvent, message: AXConversationMessage): void;
|
|
4461
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationMessageListComponent, never>;
|
|
4462
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXConversationMessageListComponent, "ax-conversation-message-list", never, {}, { "messageAction": "messageAction"; }, never, ["ax-conversation-message-list-empty, [ax-conversation-message-list-empty]", "ax-conversation-message-list-no-active, [ax-conversation-message-list-no-active]"], true, never>;
|
|
4463
|
+
}
|
|
4464
|
+
|
|
4465
|
+
declare class AXConversationAvatarPickerComponent {
|
|
4466
|
+
readonly fileInput: _angular_core.Signal<ElementRef<HTMLInputElement>>;
|
|
4467
|
+
readonly showClearButton: _angular_core.InputSignal<boolean>;
|
|
4468
|
+
readonly avatarUrl: _angular_core.ModelSignal<string>;
|
|
4469
|
+
readonly onFileSelected: _angular_core.OutputEmitterRef<string>;
|
|
4470
|
+
triggerFileInput(): void;
|
|
4471
|
+
onFileInputChange(event: Event): Promise<void>;
|
|
4472
|
+
clearAvatar(): void;
|
|
4473
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationAvatarPickerComponent, never>;
|
|
4474
|
+
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>;
|
|
4475
|
+
}
|
|
4476
|
+
|
|
4477
|
+
declare class AXConversationAvatarComponent {
|
|
4478
|
+
private readonly conversationService;
|
|
4479
|
+
private readonly userAvatarComponent;
|
|
4480
|
+
private readonly conversationAvatarComponent;
|
|
4481
|
+
readonly kind: _angular_core.InputSignal<AXConversationAvatarKind>;
|
|
4482
|
+
readonly userId: _angular_core.InputSignal<string>;
|
|
4483
|
+
readonly conversation: _angular_core.InputSignal<AXConversation>;
|
|
4484
|
+
readonly message: _angular_core.InputSignal<AXConversationMessage>;
|
|
4485
|
+
readonly size: _angular_core.InputSignal<number>;
|
|
4486
|
+
readonly showStatus: _angular_core.InputSignal<boolean>;
|
|
4487
|
+
readonly name: _angular_core.InputSignal<string>;
|
|
4488
|
+
readonly avatar: _angular_core.InputSignal<string>;
|
|
4489
|
+
readonly icon: _angular_core.InputSignal<string>;
|
|
4490
|
+
private readonly currentUserId;
|
|
4491
|
+
readonly resolvedKind: _angular_core.Signal<"user" | "conversation">;
|
|
4492
|
+
readonly resolvedUserId: _angular_core.Signal<string>;
|
|
4493
|
+
readonly customComponent: _angular_core.Signal<Type<unknown>>;
|
|
4494
|
+
readonly customInputs: _angular_core.Signal<Record<string, unknown>>;
|
|
4495
|
+
readonly filteredCustomInputs: _angular_core.Signal<Record<string, unknown>>;
|
|
4496
|
+
readonly fallbackDisplay: _angular_core.Signal<{
|
|
4497
|
+
name: string;
|
|
4498
|
+
avatar: string;
|
|
4499
|
+
icon: string;
|
|
4500
|
+
}>;
|
|
4501
|
+
readonly fallbackInitials: _angular_core.Signal<string>;
|
|
4502
|
+
readonly resolvedStatus: _angular_core.Signal<_acorex_components_conversation.AXConversationPresenceStatus>;
|
|
4503
|
+
readonly statusBadgePresence: _angular_core.Signal<"online" | "offline" | "away" | "busy">;
|
|
4504
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationAvatarComponent, never>;
|
|
4505
|
+
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>;
|
|
4506
|
+
}
|
|
4507
|
+
|
|
4508
|
+
interface AXConversationRegistryComponentRef {
|
|
4509
|
+
component?: Type<unknown>;
|
|
4510
|
+
componentLoader?: () => Promise<Type<unknown>>;
|
|
4511
|
+
}
|
|
4512
|
+
/** Placeholder shown while a lazy registry component is loading. */
|
|
4513
|
+
type AXConversationOutletSkeleton = 'auto' | 'text' | 'media' | 'none';
|
|
4514
|
+
declare class AXConversationRegistryComponentOutletComponent {
|
|
4515
|
+
readonly component: _angular_core.InputSignal<Type<unknown>>;
|
|
4516
|
+
readonly componentLoader: _angular_core.InputSignal<() => Promise<Type<unknown>>>;
|
|
4517
|
+
readonly inputs: _angular_core.InputSignal<Record<string, unknown>>;
|
|
4518
|
+
/**
|
|
4519
|
+
* Skeleton while a `componentLoader` is in flight.
|
|
4520
|
+
* `auto` uses `inputs.message.type`: text/system → single line, other types → multi-line.
|
|
4521
|
+
*/
|
|
4522
|
+
readonly skeleton: _angular_core.InputSignal<AXConversationOutletSkeleton>;
|
|
4523
|
+
readonly resolvedComponent: _angular_core.WritableSignal<Type<unknown>>;
|
|
4524
|
+
private readonly pending;
|
|
4525
|
+
readonly isLoading: _angular_core.Signal<boolean>;
|
|
4526
|
+
protected readonly skeletonVariant: _angular_core.Signal<"text" | "none" | "media" | "lines">;
|
|
4527
|
+
/** Avoid re-loading when the parent re-binds the same lazy loader reference. */
|
|
4528
|
+
private activeLoader;
|
|
4529
|
+
constructor();
|
|
4530
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationRegistryComponentOutletComponent, never>;
|
|
4531
|
+
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; }; "skeleton": { "alias": "skeleton"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
4532
|
+
}
|
|
4533
|
+
/** Resolve a registry component reference, preferring lazy loaders when provided. */
|
|
4534
|
+
declare function hasRegistryComponent(ref?: AXConversationRegistryComponentRef): boolean;
|
|
4535
|
+
|
|
4536
|
+
declare class AXConversationSidebarService {
|
|
4537
|
+
private readonly conversationService;
|
|
4538
|
+
constructor();
|
|
4539
|
+
private get registry();
|
|
4540
|
+
readonly searchQuery: _angular_core.WritableSignal<string>;
|
|
4541
|
+
readonly activeTabId: _angular_core.WritableSignal<string>;
|
|
4542
|
+
readonly loadingMore: _angular_core.WritableSignal<boolean>;
|
|
4543
|
+
readonly conversations: _angular_core.Signal<AXConversation[]>;
|
|
4544
|
+
readonly loading: _angular_core.Signal<boolean>;
|
|
4545
|
+
readonly hasMoreConversations: _angular_core.Signal<boolean>;
|
|
4546
|
+
readonly enabledTabs: _angular_core.Signal<_acorex_components_conversation.AXConversationTab[]>;
|
|
4547
|
+
readonly filteredConversations: _angular_core.Signal<AXConversation[]>;
|
|
4548
|
+
/**
|
|
4549
|
+
* Filter and sort conversations
|
|
4550
|
+
*/
|
|
4551
|
+
private filterAndSort;
|
|
4552
|
+
setSearchQuery(q: string): void;
|
|
4553
|
+
setActiveTab(tabId: string): void;
|
|
4554
|
+
selectConversation(conversation: AXConversation): void;
|
|
4555
|
+
getBadgeValue(tabId: string): string | undefined;
|
|
4556
|
+
/**
|
|
4557
|
+
* Load more conversations when the user scrolls near the bottom of the sidebar list.
|
|
4558
|
+
*/
|
|
4559
|
+
loadMoreConversations(): Promise<void>;
|
|
4560
|
+
/**
|
|
4561
|
+
* Handle scroll threshold (for infinite scroll)
|
|
4562
|
+
*/
|
|
4563
|
+
onScrollThreshold(edge: 'top' | 'bottom'): Promise<void>;
|
|
4564
|
+
/**
|
|
4565
|
+
* Reload conversation list from the first page (e.g. pull-to-refresh).
|
|
4566
|
+
*/
|
|
4567
|
+
reloadConversations(): Promise<void>;
|
|
4568
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationSidebarService, never>;
|
|
4569
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXConversationSidebarService>;
|
|
4570
|
+
}
|
|
4571
|
+
|
|
4572
|
+
declare class AXConversationSidebarComponent implements OnDestroy {
|
|
4573
|
+
readonly sidebar: AXConversationSidebarService;
|
|
4574
|
+
protected readonly config: Required<_acorex_components_conversation.AXConversationConfig>;
|
|
4575
|
+
private readonly conversationService;
|
|
4576
|
+
private readonly popupService;
|
|
4577
|
+
private readonly translation;
|
|
4578
|
+
private readonly ngZone;
|
|
4579
|
+
private readonly cdr;
|
|
4580
|
+
/** Conversation selected event */
|
|
4581
|
+
readonly conversationSelected: _angular_core.OutputEmitterRef<AXConversation>;
|
|
4582
|
+
/** Search debouncing */
|
|
4583
|
+
private readonly searchSubject;
|
|
4584
|
+
/** Derived state for template */
|
|
4585
|
+
readonly enabledTabs: _angular_core.Signal<_acorex_components_conversation.AXConversationTab[]>;
|
|
4586
|
+
readonly filteredConversations: _angular_core.Signal<AXConversation[]>;
|
|
4587
|
+
readonly loading: _angular_core.Signal<boolean>;
|
|
4588
|
+
readonly loadingMore: _angular_core.WritableSignal<boolean>;
|
|
4589
|
+
readonly hasMoreConversations: _angular_core.Signal<boolean>;
|
|
4590
|
+
readonly isSidebarTabsHorizontal: _angular_core.Signal<boolean>;
|
|
4591
|
+
readonly sidebarTabLocation: _angular_core.Signal<AXTabLocation>;
|
|
4592
|
+
constructor();
|
|
4593
|
+
/** Handle search input change with debouncing */
|
|
4594
|
+
onSearchChange(value: string): void;
|
|
4595
|
+
/** Handle tab change from ax-tabs */
|
|
4596
|
+
onTabChange(event: {
|
|
4597
|
+
tab?: {
|
|
4598
|
+
key?: string;
|
|
4599
|
+
};
|
|
4600
|
+
}): void;
|
|
4601
|
+
/** Select a conversation */
|
|
4602
|
+
selectConversation(conversation: AXConversation): void;
|
|
4603
|
+
/** Get badge value for tab */
|
|
4604
|
+
getBadgeValue(tabId: string): string | undefined;
|
|
4605
|
+
getTabLabel(tabId: string): string;
|
|
4606
|
+
openNewConversationPopup(): Promise<void>;
|
|
4607
|
+
/** Handle infinite scroll threshold - delegate to service */
|
|
4608
|
+
onScrollThreshold(edge: 'top' | 'bottom'): Promise<void>;
|
|
4609
|
+
/** Cleanup on destroy */
|
|
4610
|
+
ngOnDestroy(): void;
|
|
4611
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationSidebarComponent, never>;
|
|
4612
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXConversationSidebarComponent, "ax-conversation-sidebar", never, {}, { "conversationSelected": "conversationSelected"; }, never, ["ax-suffix"], true, never>;
|
|
4613
|
+
}
|
|
4614
|
+
|
|
4615
|
+
type AXConversationNewWizardStep = 'selectUsers' | 'groupDetails';
|
|
4616
|
+
declare class AXConversationNewDialogComponent extends AXBasePageComponent {
|
|
4617
|
+
/**
|
|
4618
|
+
* Assigned by {@link AXPopupComponent} from `open(..., { data: { conversationService } })`.
|
|
4619
|
+
* Not injected: popup content is created on the root view container, so route-scoped providers
|
|
4620
|
+
* would not see the same `AXConversationService` instance as the conversation feature.
|
|
4621
|
+
*/
|
|
4622
|
+
conversationService: AXConversationService;
|
|
4623
|
+
private readonly toastService;
|
|
4624
|
+
private readonly translation;
|
|
4625
|
+
private readonly config;
|
|
4626
|
+
private readonly destroyRef;
|
|
4627
|
+
private searchDebounceTimer?;
|
|
4628
|
+
constructor();
|
|
4629
|
+
/**
|
|
4630
|
+
* Injected by {@link AXPopupComponent} when this dialog is opened via {@link AXPopupService}.
|
|
4631
|
+
* Required for `setTitle` / dynamic header — {@link AXBasePageComponent#setTitle} is otherwise unset.
|
|
4632
|
+
*/
|
|
4633
|
+
readonly __popup__: _angular_core.InputSignal<AXPopupRef<any>>;
|
|
4634
|
+
readonly availableUsers: _angular_core.WritableSignal<AXConversationParticipant[]>;
|
|
4635
|
+
readonly selectedUserIds: _angular_core.WritableSignal<string[]>;
|
|
4636
|
+
readonly groupTitle: _angular_core.WritableSignal<string>;
|
|
4637
|
+
readonly groupAvatar: _angular_core.WritableSignal<string>;
|
|
4638
|
+
readonly searchQuery: _angular_core.WritableSignal<string>;
|
|
4639
|
+
readonly creating: _angular_core.WritableSignal<boolean>;
|
|
4640
|
+
/** For 2+ users: step 1 = pick users, step 2 = title + avatar. */
|
|
4641
|
+
readonly wizardStep: _angular_core.WritableSignal<AXConversationNewWizardStep>;
|
|
4642
|
+
readonly showUserPickerStep: _angular_core.Signal<boolean>;
|
|
4643
|
+
readonly showGroupDetailsStep: _angular_core.Signal<boolean>;
|
|
4644
|
+
readonly showNextButton: _angular_core.Signal<boolean>;
|
|
4645
|
+
readonly showGroupBackButton: _angular_core.Signal<boolean>;
|
|
4646
|
+
readonly showCreateButton: _angular_core.Signal<boolean>;
|
|
4647
|
+
readonly canGoNextToGroupDetails: _angular_core.Signal<boolean>;
|
|
4648
|
+
readonly canCreate: _angular_core.Signal<boolean>;
|
|
4649
|
+
private readonly _resetWizardWhenSingleEffect;
|
|
4650
|
+
private readonly _syncPopupTitleEffect;
|
|
4651
|
+
readonly usersListEmptyTpl: _angular_core.Signal<TemplateRef<unknown>>;
|
|
4652
|
+
readonly usersListLoadingTpl: _angular_core.Signal<TemplateRef<unknown>>;
|
|
4653
|
+
readonly usersList: _angular_core.Signal<AXListComponent>;
|
|
4654
|
+
readonly usersListDataSource: AXDataSource<unknown>;
|
|
4655
|
+
onCancel(): void;
|
|
4656
|
+
onSelectedUsersChange(ids: string[]): void;
|
|
4657
|
+
onNextToGroupDetails(): void;
|
|
4658
|
+
onBackFromGroupDetails(): void;
|
|
4659
|
+
onSearchChange(value: string): void;
|
|
4660
|
+
isUserSelected(id: string): boolean;
|
|
4661
|
+
userFromItem(item: unknown): AXConversationParticipant | null;
|
|
4662
|
+
private mergeUsersCache;
|
|
4663
|
+
onCreateConversation(): Promise<void>;
|
|
4664
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationNewDialogComponent, never>;
|
|
4665
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXConversationNewDialogComponent, "ax-conversation-new-dialog", never, { "__popup__": { "alias": "__popup__"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
4666
|
+
}
|
|
4667
|
+
|
|
4668
|
+
declare class AXConversationInfiniteScrollDirective {
|
|
4669
|
+
private readonly elementRef;
|
|
4670
|
+
private readonly platformId;
|
|
4671
|
+
/** Threshold in pixels from the edge to trigger the event */
|
|
4672
|
+
readonly threshold: _angular_core.InputSignal<number>;
|
|
4673
|
+
/** Which edge to watch: 'top', 'bottom', or 'both' */
|
|
4674
|
+
readonly edge: _angular_core.InputSignal<"top" | "bottom" | "both">;
|
|
4675
|
+
/** When true, scroll events are ignored (e.g. while a page is loading). */
|
|
4676
|
+
readonly scrollDisabled: _angular_core.InputSignal<boolean>;
|
|
4677
|
+
/** Minimum time between emissions (ms) to avoid duplicate API calls. */
|
|
4678
|
+
readonly cooldownMs: _angular_core.InputSignal<number>;
|
|
4679
|
+
/** Event emitted when scrolling reaches the threshold */
|
|
4680
|
+
readonly scrollThreshold: _angular_core.OutputEmitterRef<"top" | "bottom">;
|
|
4681
|
+
private lastScrollTop;
|
|
4682
|
+
private ticking;
|
|
4683
|
+
private lastEmitAt;
|
|
4684
|
+
private pendingEmit;
|
|
4685
|
+
constructor();
|
|
4686
|
+
private setupScrollListener;
|
|
4687
|
+
private handleScroll;
|
|
4688
|
+
private emitThreshold;
|
|
4689
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationInfiniteScrollDirective, never>;
|
|
4690
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<AXConversationInfiniteScrollDirective, "[axInfiniteScroll]", never, { "threshold": { "alias": "threshold"; "required": false; "isSignal": true; }; "edge": { "alias": "edge"; "required": false; "isSignal": true; }; "scrollDisabled": { "alias": "scrollDisabled"; "required": false; "isSignal": true; }; "cooldownMs": { "alias": "cooldownMs"; "required": false; "isSignal": true; }; }, { "scrollThreshold": "scrollThreshold"; }, never, never, true, never>;
|
|
4691
|
+
}
|
|
4692
|
+
|
|
4693
|
+
declare const AX_CONVERSATION_AUDIO_PRESENTATION: {
|
|
4694
|
+
readonly icon: "fa-light fa-music text-amber-500";
|
|
4695
|
+
readonly title: "Audio";
|
|
4696
|
+
};
|
|
4697
|
+
declare function conversationAudioUtilities(): NonNullable<AXFileType['utilities']>;
|
|
4698
|
+
declare function createConversationAudioFileType(): AXFileType;
|
|
4699
|
+
declare class AXConversationAudioFileTypeProvider extends AXFileTypeInfoProvider {
|
|
4700
|
+
items(): Promise<AXFileType<{
|
|
4701
|
+
[x: string]: (ctx: _acorex_core_file.AXFileTypeContext, ...args: unknown[]) => Promise<unknown> | unknown;
|
|
4702
|
+
}>[]>;
|
|
4703
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationAudioFileTypeProvider, never>;
|
|
4704
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXConversationAudioFileTypeProvider>;
|
|
4705
|
+
}
|
|
4706
|
+
|
|
4707
|
+
declare function audioItemFromUpload(file: File, result: AXConversationUploaderResult, duration: number): AXConversationAudioMediaItem;
|
|
4708
|
+
declare function mergeAudioUploadResult(payload: AXConversationMessagePayload, result: AXUploadResult): AXConversationMessagePayload;
|
|
4709
|
+
declare function applyAudioLocalPreview(payload: AXConversationMessagePayload, localUrl: string, mimeType?: string): AXConversationMessagePayload;
|
|
4710
|
+
|
|
4711
|
+
/**
|
|
4712
|
+
* Shared upload state and helpers for composer media pickers.
|
|
4713
|
+
*/
|
|
4714
|
+
|
|
4715
|
+
/** Stable id for `@for` tracking while upload state is patched immutably. */
|
|
4716
|
+
declare function createPickerUploadItemId(): string;
|
|
4717
|
+
interface AXConversationComposerPickerUploadItem {
|
|
4718
|
+
id: string;
|
|
4719
|
+
file: File;
|
|
4720
|
+
preview?: string;
|
|
4721
|
+
duration?: number;
|
|
4722
|
+
uploadProgress?: number;
|
|
4723
|
+
uploading?: boolean;
|
|
4724
|
+
uploaded?: boolean;
|
|
4725
|
+
uploadedUrl?: string;
|
|
4726
|
+
mediaId?: string;
|
|
4727
|
+
error?: string;
|
|
4728
|
+
abortController?: AbortController;
|
|
4729
|
+
}
|
|
4730
|
+
declare function getPickerCancelUploadLabel(translation: AXTranslationService): string;
|
|
4731
|
+
declare function abortPickerUploads(items: Iterable<{
|
|
4732
|
+
abortController?: AbortController;
|
|
4733
|
+
} | null | undefined>): void;
|
|
4734
|
+
interface AXConversationCleanupPickerUploadsOptions {
|
|
4735
|
+
retainUploaded?: boolean;
|
|
4736
|
+
}
|
|
4737
|
+
/** Upload finished; reference is {@link mediaId} and/or a non-empty session url. */
|
|
4738
|
+
declare function isPickerItemReadyToSend(item: Pick<AXConversationComposerPickerUploadItem, 'uploaded' | 'uploadedUrl' | 'mediaId'>): boolean;
|
|
4739
|
+
/** Build uploader result shape for {@link *ItemFromUpload} after picker upload. */
|
|
4740
|
+
declare function pickerItemToUploadResult(item: Pick<AXConversationComposerPickerUploadItem, 'uploaded' | 'uploadedUrl' | 'mediaId' | 'file'>): {
|
|
4741
|
+
url: string;
|
|
4742
|
+
mediaId?: string;
|
|
4743
|
+
mimeType: string;
|
|
4744
|
+
size: number;
|
|
4745
|
+
} | null;
|
|
4746
|
+
declare function pickerItemToMediaReference(item: Pick<AXConversationComposerPickerUploadItem, 'uploaded' | 'uploadedUrl' | 'mediaId' | 'file'>): AXConversationUploaderReference | null;
|
|
4747
|
+
declare function deleteUploadedPickerMedia(uploader: AXUploaderService, items: Iterable<AXConversationComposerPickerUploadItem | null | undefined>): Promise<void>;
|
|
4748
|
+
declare function cleanupPickerUploads(uploader: AXUploaderService, items: Iterable<AXConversationComposerPickerUploadItem | null | undefined>, options?: AXConversationCleanupPickerUploadsOptions): void;
|
|
4749
|
+
declare function revokePickerBlobPreviews(items: Iterable<{
|
|
4750
|
+
preview?: string;
|
|
4751
|
+
} | null | undefined>): void;
|
|
4752
|
+
declare function isUploadAborted(error: unknown, signal?: AbortSignal): boolean;
|
|
4454
4753
|
declare function limitFilesToCapacity(files: File[], currentCount: number, maxFiles: number): File[];
|
|
4455
4754
|
declare function uploadPickerFile(uploader: AXUploaderService, conversationId: string, file: File, onProgress: (percent: number) => void, signal?: AbortSignal): Promise<{
|
|
4456
4755
|
url: string;
|
|
@@ -4484,6 +4783,7 @@ declare class AXConversationAudioPickerComponent implements OnDestroy, AXConvers
|
|
|
4484
4783
|
private readonly fileTypeRegistry;
|
|
4485
4784
|
private readonly platformId;
|
|
4486
4785
|
private readonly toast;
|
|
4786
|
+
private readonly popupService;
|
|
4487
4787
|
readonly translation: AXTranslationService;
|
|
4488
4788
|
readonly conversation: _angular_core.InputSignal<AXConversation>;
|
|
4489
4789
|
readonly maxFiles: _angular_core.InputSignal<number>;
|
|
@@ -4495,10 +4795,10 @@ declare class AXConversationAudioPickerComponent implements OnDestroy, AXConvers
|
|
|
4495
4795
|
readonly audioFiles: _angular_core.WritableSignal<AXConversationAudioFile[]>;
|
|
4496
4796
|
readonly isDragging: _angular_core.WritableSignal<boolean>;
|
|
4497
4797
|
private readonly pickerShell;
|
|
4498
|
-
readonly typeIconClass: "fa-light fa-music text-amber-500";
|
|
4499
4798
|
readonly emptyIconClass: _angular_core.Signal<"fa-light fa-music text-amber-500" | "fa-light fa-cloud-arrow-up">;
|
|
4500
4799
|
private catalogFileTypeDef?;
|
|
4501
4800
|
caption: string;
|
|
4801
|
+
groupItems: boolean;
|
|
4502
4802
|
readonly allowMultiple: _angular_core.Signal<boolean>;
|
|
4503
4803
|
constructor();
|
|
4504
4804
|
activate(): Promise<void>;
|
|
@@ -4509,11 +4809,14 @@ declare class AXConversationAudioPickerComponent implements OnDestroy, AXConvers
|
|
|
4509
4809
|
private uploadAudioAt;
|
|
4510
4810
|
private patchAudio;
|
|
4511
4811
|
removeAudio(index: number): void;
|
|
4812
|
+
renameAudio(index: number): Promise<void>;
|
|
4813
|
+
replaceAttachment(index: number): Promise<void>;
|
|
4512
4814
|
sendAudio(): Promise<void>;
|
|
4513
4815
|
canSend(): boolean;
|
|
4514
4816
|
getUploadingLabel(progress: number): string;
|
|
4515
4817
|
getCancelUploadLabel(): string;
|
|
4516
4818
|
getHeaderTitle(): string;
|
|
4819
|
+
truncateFileName(fileName: string): string;
|
|
4517
4820
|
onAddMoreFiles(): void;
|
|
4518
4821
|
cancel(): void;
|
|
4519
4822
|
ngOnDestroy(): void;
|
|
@@ -4587,11 +4890,6 @@ declare function fileItemFromUpload(file: File, result: AXConversationUploaderRe
|
|
|
4587
4890
|
declare function mergeFileUploadResult(payload: AXConversationMessagePayload, result: AXUploadResult): AXConversationMessagePayload;
|
|
4588
4891
|
declare function applyFileLocalPreview(payload: AXConversationMessagePayload, localUrl: string, mimeType?: string): AXConversationMessagePayload;
|
|
4589
4892
|
|
|
4590
|
-
interface AXConversationPickerFileBadge {
|
|
4591
|
-
ext: string;
|
|
4592
|
-
color: string;
|
|
4593
|
-
}
|
|
4594
|
-
|
|
4595
4893
|
interface AXConversationAttachedFile extends AXConversationComposerPickerUploadItem {
|
|
4596
4894
|
icon: string;
|
|
4597
4895
|
type: 'image' | 'video' | 'audio' | 'file';
|
|
@@ -4607,6 +4905,7 @@ declare class AXConversationFilePickerComponent implements OnDestroy, AXConversa
|
|
|
4607
4905
|
private readonly composerServiceFromInjector;
|
|
4608
4906
|
private get composerService();
|
|
4609
4907
|
private readonly toast;
|
|
4908
|
+
private readonly popupService;
|
|
4610
4909
|
readonly translation: AXTranslationService;
|
|
4611
4910
|
readonly conversation: _angular_core.InputSignal<AXConversation>;
|
|
4612
4911
|
readonly maxFiles: _angular_core.InputSignal<number>;
|
|
@@ -4623,14 +4922,18 @@ declare class AXConversationFilePickerComponent implements OnDestroy, AXConversa
|
|
|
4623
4922
|
readonly emptyIconClass: _angular_core.Signal<"fa-light fa-file text-neutral-500" | "fa-light fa-cloud-arrow-up">;
|
|
4624
4923
|
private catalogFileTypeDef?;
|
|
4625
4924
|
caption: string;
|
|
4925
|
+
groupItems: boolean;
|
|
4626
4926
|
constructor();
|
|
4627
4927
|
activate(): Promise<void>;
|
|
4628
4928
|
private createUtilityContext;
|
|
4629
4929
|
private getCatalogFileTypeDef;
|
|
4630
4930
|
private pickerKind;
|
|
4631
4931
|
handleFiles(fileList: File[]): Promise<void>;
|
|
4932
|
+
private buildAttachedFileEntry;
|
|
4632
4933
|
private uploadFile;
|
|
4633
4934
|
removeFile(index: number): void;
|
|
4935
|
+
renameFile(index: number): Promise<void>;
|
|
4936
|
+
replaceAttachment(index: number): Promise<void>;
|
|
4634
4937
|
sendFiles(): Promise<void>;
|
|
4635
4938
|
private updateFileProgress;
|
|
4636
4939
|
private uploadFileWithProgress;
|
|
@@ -4638,7 +4941,7 @@ declare class AXConversationFilePickerComponent implements OnDestroy, AXConversa
|
|
|
4638
4941
|
ngOnDestroy(): void;
|
|
4639
4942
|
private dismissPicker;
|
|
4640
4943
|
getHeaderTitle(): string;
|
|
4641
|
-
|
|
4944
|
+
truncateFileName(fileName: string): string;
|
|
4642
4945
|
onAddMoreFiles(): void;
|
|
4643
4946
|
getCancelUploadLabel(): string;
|
|
4644
4947
|
formatFileSize(bytes: number): string;
|
|
@@ -4677,6 +4980,7 @@ declare class AXConversationImagePickerComponent implements OnDestroy, AXConvers
|
|
|
4677
4980
|
private readonly composerServiceFromInjector;
|
|
4678
4981
|
private get composerService();
|
|
4679
4982
|
private readonly uploader;
|
|
4983
|
+
private readonly popupService;
|
|
4680
4984
|
private readonly fileService;
|
|
4681
4985
|
private readonly fileTypeRegistry;
|
|
4682
4986
|
private readonly platformId;
|
|
@@ -4694,6 +4998,8 @@ declare class AXConversationImagePickerComponent implements OnDestroy, AXConvers
|
|
|
4694
4998
|
readonly isDragging: _angular_core.WritableSignal<boolean>;
|
|
4695
4999
|
readonly emptyIconClass: _angular_core.Signal<"fa-light fa-image text-purple-500" | "fa-light fa-cloud-arrow-up">;
|
|
4696
5000
|
caption: string;
|
|
5001
|
+
groupItems: boolean;
|
|
5002
|
+
sendAsDocuments: boolean;
|
|
4697
5003
|
readonly allowMultiple: _angular_core.Signal<boolean>;
|
|
4698
5004
|
private imageFileType?;
|
|
4699
5005
|
constructor();
|
|
@@ -4704,7 +5010,12 @@ declare class AXConversationImagePickerComponent implements OnDestroy, AXConvers
|
|
|
4704
5010
|
private uploadImageAt;
|
|
4705
5011
|
private patchImage;
|
|
4706
5012
|
removeImage(index: number): void;
|
|
5013
|
+
replaceAttachment(index: number): Promise<void>;
|
|
5014
|
+
editImage(index: number): Promise<void>;
|
|
5015
|
+
private applyReplacementFile;
|
|
4707
5016
|
sendImages(): Promise<void>;
|
|
5017
|
+
private sendImagesAsDocuments;
|
|
5018
|
+
getMediaGridClass(): string;
|
|
4708
5019
|
canSend(): boolean;
|
|
4709
5020
|
getUploadingLabel(progress: number): string;
|
|
4710
5021
|
getCancelUploadLabel(): string;
|
|
@@ -4738,12 +5049,16 @@ declare class AXConversationLocationPickerComponent {
|
|
|
4738
5049
|
}
|
|
4739
5050
|
|
|
4740
5051
|
declare class AXConversationPickerFooterComponent {
|
|
4741
|
-
readonly
|
|
5052
|
+
readonly showAdd: _angular_core.InputSignal<boolean>;
|
|
5053
|
+
readonly addLabel: _angular_core.InputSignal<string>;
|
|
5054
|
+
readonly cancelLabel: _angular_core.InputSignal<string>;
|
|
5055
|
+
readonly sendLabel: _angular_core.InputSignal<string>;
|
|
4742
5056
|
readonly sendDisabled: _angular_core.InputSignal<boolean>;
|
|
5057
|
+
readonly onAdd: _angular_core.OutputEmitterRef<void>;
|
|
4743
5058
|
readonly onCancel: _angular_core.OutputEmitterRef<void>;
|
|
4744
5059
|
readonly onSend: _angular_core.OutputEmitterRef<void>;
|
|
4745
5060
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationPickerFooterComponent, never>;
|
|
4746
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXConversationPickerFooterComponent, "ax-conversation-picker-footer", never, { "
|
|
5061
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXConversationPickerFooterComponent, "ax-conversation-picker-footer", never, { "showAdd": { "alias": "showAdd"; "required": false; "isSignal": true; }; "addLabel": { "alias": "addLabel"; "required": false; "isSignal": true; }; "cancelLabel": { "alias": "cancelLabel"; "required": true; "isSignal": true; }; "sendLabel": { "alias": "sendLabel"; "required": true; "isSignal": true; }; "sendDisabled": { "alias": "sendDisabled"; "required": false; "isSignal": true; }; }, { "onAdd": "onAdd"; "onCancel": "onCancel"; "onSend": "onSend"; }, never, never, true, never>;
|
|
4747
5062
|
}
|
|
4748
5063
|
|
|
4749
5064
|
declare class AXConversationPickerHeaderComponent {
|
|
@@ -4772,16 +5087,25 @@ declare function pickDisplayMediaUrl(...candidates: (string | null | undefined)[
|
|
|
4772
5087
|
declare class AXConversationPickerCaptionComponent {
|
|
4773
5088
|
readonly translation: AXTranslationService;
|
|
4774
5089
|
readonly caption: _angular_core.ModelSignal<string>;
|
|
5090
|
+
readonly showInlineSend: _angular_core.InputSignal<boolean>;
|
|
4775
5091
|
readonly sendDisabled: _angular_core.InputSignal<boolean>;
|
|
4776
5092
|
readonly onSend: _angular_core.OutputEmitterRef<void>;
|
|
4777
|
-
readonly emojiPopoverTarget: _angular_core.WritableSignal<HTMLElement>;
|
|
4778
5093
|
private readonly emojiPopoverRef;
|
|
4779
|
-
onEmojiClick(event:
|
|
4780
|
-
|
|
4781
|
-
onEmojiItemSelected: (item: string | AXConversationStickerPayload) => void;
|
|
5094
|
+
onEmojiClick(event: AXClickEvent): void;
|
|
5095
|
+
onEmojiSelected(emoji: string): void;
|
|
4782
5096
|
onCaptionKeyDown(event: AXHtmlEvent<KeyboardEvent>): void;
|
|
4783
5097
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationPickerCaptionComponent, never>;
|
|
4784
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXConversationPickerCaptionComponent, "ax-conversation-picker-caption", never, { "caption": { "alias": "caption"; "required": false; "isSignal": true; }; "sendDisabled": { "alias": "sendDisabled"; "required": false; "isSignal": true; }; }, { "caption": "captionChange"; "onSend": "onSend"; }, never, never, true, never>;
|
|
5098
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXConversationPickerCaptionComponent, "ax-conversation-picker-caption", never, { "caption": { "alias": "caption"; "required": false; "isSignal": true; }; "showInlineSend": { "alias": "showInlineSend"; "required": false; "isSignal": true; }; "sendDisabled": { "alias": "sendDisabled"; "required": false; "isSignal": true; }; }, { "caption": "captionChange"; "onSend": "onSend"; }, never, never, true, never>;
|
|
5099
|
+
}
|
|
5100
|
+
|
|
5101
|
+
/** Grouping and delivery options shown below composer picker previews. */
|
|
5102
|
+
declare class AXConversationPickerOptionsComponent {
|
|
5103
|
+
readonly showGroupItems: _angular_core.InputSignal<boolean>;
|
|
5104
|
+
readonly showSendAsDocuments: _angular_core.InputSignal<boolean>;
|
|
5105
|
+
readonly groupItems: _angular_core.ModelSignal<boolean>;
|
|
5106
|
+
readonly sendAsDocuments: _angular_core.ModelSignal<boolean>;
|
|
5107
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationPickerOptionsComponent, never>;
|
|
5108
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXConversationPickerOptionsComponent, "ax-conversation-picker-options", never, { "showGroupItems": { "alias": "showGroupItems"; "required": false; "isSignal": true; }; "showSendAsDocuments": { "alias": "showSendAsDocuments"; "required": false; "isSignal": true; }; "groupItems": { "alias": "groupItems"; "required": false; "isSignal": true; }; "sendAsDocuments": { "alias": "sendAsDocuments"; "required": false; "isSignal": true; }; }, { "groupItems": "groupItemsChange"; "sendAsDocuments": "sendAsDocumentsChange"; }, never, never, true, never>;
|
|
4785
5109
|
}
|
|
4786
5110
|
|
|
4787
5111
|
/** Shared drag-and-drop handlers for composer pickers. */
|
|
@@ -4910,6 +5234,8 @@ declare class AXConversationVideoPickerComponent implements OnDestroy, AXConvers
|
|
|
4910
5234
|
readonly isDragging: _angular_core.WritableSignal<boolean>;
|
|
4911
5235
|
private readonly pickerShell;
|
|
4912
5236
|
caption: string;
|
|
5237
|
+
groupItems: boolean;
|
|
5238
|
+
sendAsDocuments: boolean;
|
|
4913
5239
|
readonly allowMultiple: _angular_core.Signal<boolean>;
|
|
4914
5240
|
readonly typeIconClass: "fa-light fa-video ax-text-blue-500";
|
|
4915
5241
|
readonly emptyIconClass: _angular_core.Signal<"fa-light fa-video ax-text-blue-500" | "fa-light fa-cloud-arrow-up">;
|
|
@@ -4923,7 +5249,10 @@ declare class AXConversationVideoPickerComponent implements OnDestroy, AXConvers
|
|
|
4923
5249
|
private uploadVideoAt;
|
|
4924
5250
|
private patchVideo;
|
|
4925
5251
|
removeVideo(index: number): void;
|
|
5252
|
+
replaceAttachment(index: number): Promise<void>;
|
|
4926
5253
|
sendVideos(): Promise<void>;
|
|
5254
|
+
private sendVideosAsDocuments;
|
|
5255
|
+
getMediaGridClass(): string;
|
|
4927
5256
|
canSend(): boolean;
|
|
4928
5257
|
getUploadingLabel(progress: number): string;
|
|
4929
5258
|
getCancelUploadLabel(): string;
|
|
@@ -5120,6 +5449,7 @@ declare const AX_CONVERSATION_INFO_BAR_BLOCK_ACTION: AXConversationInfoBarAction
|
|
|
5120
5449
|
declare function toUploaderReference(item: AXConversationMediaItemFields): AXConversationUploaderReference;
|
|
5121
5450
|
|
|
5122
5451
|
declare class AXConversationAudioAttachmentComponent {
|
|
5452
|
+
private readonly platformId;
|
|
5123
5453
|
readonly item: _angular_core.InputSignal<AXConversationAudioMediaItem>;
|
|
5124
5454
|
readonly playingChange: _angular_core.OutputEmitterRef<boolean>;
|
|
5125
5455
|
readonly timeUpdate: _angular_core.OutputEmitterRef<number>;
|
|
@@ -5129,18 +5459,31 @@ declare class AXConversationAudioAttachmentComponent {
|
|
|
5129
5459
|
private readonly audioElementRef;
|
|
5130
5460
|
private readonly mediaReference;
|
|
5131
5461
|
private readonly resolvedUrl;
|
|
5462
|
+
readonly isPlaying: _angular_core.WritableSignal<boolean>;
|
|
5463
|
+
readonly currentTime: _angular_core.WritableSignal<number>;
|
|
5464
|
+
readonly liveDuration: _angular_core.WritableSignal<number>;
|
|
5465
|
+
readonly coverVisible: _angular_core.WritableSignal<boolean>;
|
|
5132
5466
|
readonly audioUrl: _angular_core.Signal<string>;
|
|
5133
5467
|
readonly title: _angular_core.Signal<string>;
|
|
5468
|
+
readonly coverUrl: _angular_core.Signal<string>;
|
|
5134
5469
|
readonly duration: _angular_core.Signal<number>;
|
|
5135
|
-
readonly
|
|
5470
|
+
readonly effectiveDuration: _angular_core.Signal<number>;
|
|
5471
|
+
readonly sliderMax: _angular_core.Signal<number>;
|
|
5472
|
+
readonly currentTimeLabel: _angular_core.Signal<string>;
|
|
5473
|
+
readonly downloadName: _angular_core.Signal<string>;
|
|
5474
|
+
constructor();
|
|
5136
5475
|
togglePlay(): void;
|
|
5137
5476
|
pause(): void;
|
|
5477
|
+
setPlaybackRate(rate: number): void;
|
|
5478
|
+
setMuted(muted: boolean): void;
|
|
5479
|
+
onSeek(value: AXRangeSliderValue): void;
|
|
5138
5480
|
onPlay(): void;
|
|
5139
5481
|
onPause(): void;
|
|
5140
5482
|
onTimeUpdate(): void;
|
|
5141
5483
|
onLoadedMetadata(): void;
|
|
5142
5484
|
onEnded(): void;
|
|
5143
5485
|
onError(): void;
|
|
5486
|
+
onCoverError(): void;
|
|
5144
5487
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationAudioAttachmentComponent, never>;
|
|
5145
5488
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXConversationAudioAttachmentComponent, "ax-conversation-audio-attachment", never, { "item": { "alias": "item"; "required": true; "isSignal": true; }; }, { "playingChange": "playingChange"; "timeUpdate": "timeUpdate"; "durationChange": "durationChange"; "playbackEnded": "playbackEnded"; "playbackError": "playbackError"; }, never, never, true, never>;
|
|
5146
5489
|
}
|
|
@@ -5153,7 +5496,6 @@ declare class AXConversationFileAttachmentComponent {
|
|
|
5153
5496
|
readonly fileName: _angular_core.Signal<string>;
|
|
5154
5497
|
readonly fileSize: _angular_core.Signal<number>;
|
|
5155
5498
|
readonly fileExtension: _angular_core.Signal<string>;
|
|
5156
|
-
readonly swatchColor: _angular_core.Signal<string>;
|
|
5157
5499
|
readonly formattedSize: _angular_core.Signal<string>;
|
|
5158
5500
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationFileAttachmentComponent, never>;
|
|
5159
5501
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXConversationFileAttachmentComponent, "ax-conversation-file-attachment", never, { "item": { "alias": "item"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
@@ -5175,7 +5517,7 @@ declare class AXConversationImageAttachmentComponent {
|
|
|
5175
5517
|
constructor();
|
|
5176
5518
|
onImageLoad(): void;
|
|
5177
5519
|
onImageError(): void;
|
|
5178
|
-
toggleFullscreen(event:
|
|
5520
|
+
toggleFullscreen(event: AXClickEvent): void;
|
|
5179
5521
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationImageAttachmentComponent, never>;
|
|
5180
5522
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXConversationImageAttachmentComponent, "ax-conversation-image-attachment", never, { "item": { "alias": "item"; "required": true; "isSignal": true; }; "alt": { "alias": "alt"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
5181
5523
|
}
|
|
@@ -5190,6 +5532,9 @@ interface AXConversationPlaybackBannerInputs {
|
|
|
5190
5532
|
playbackSpeed?: number;
|
|
5191
5533
|
onCycleSpeed?: () => void;
|
|
5192
5534
|
showSpeedControl?: boolean;
|
|
5535
|
+
isMuted?: boolean;
|
|
5536
|
+
onToggleMute?: () => void;
|
|
5537
|
+
showMuteControl?: boolean;
|
|
5193
5538
|
}
|
|
5194
5539
|
declare class AXConversationMediaPlaybackInfoBarBannerComponent implements AXConversationMessageInfoBarBannerComponent {
|
|
5195
5540
|
readonly message: _angular_core.InputSignal<AXConversationMessage>;
|
|
@@ -5201,14 +5546,18 @@ declare class AXConversationMediaPlaybackInfoBarBannerComponent implements AXCon
|
|
|
5201
5546
|
readonly playbackSpeed: _angular_core.InputSignal<number>;
|
|
5202
5547
|
readonly onCycleSpeed: _angular_core.InputSignal<() => void>;
|
|
5203
5548
|
readonly showSpeedControl: _angular_core.InputSignal<boolean>;
|
|
5549
|
+
readonly isMuted: _angular_core.InputSignal<boolean>;
|
|
5550
|
+
readonly onToggleMute: _angular_core.InputSignal<() => void>;
|
|
5551
|
+
readonly showMuteControl: _angular_core.InputSignal<boolean>;
|
|
5204
5552
|
readonly iconClass: _angular_core.Signal<string>;
|
|
5205
5553
|
readonly resolvedTitle: _angular_core.Signal<string>;
|
|
5206
5554
|
readonly progressPercent: _angular_core.Signal<number>;
|
|
5207
5555
|
readonly timeLabel: _angular_core.Signal<string>;
|
|
5208
5556
|
onTogglePlayClick(): void;
|
|
5209
5557
|
onCycleSpeedClick(): void;
|
|
5558
|
+
onToggleMuteClick(): void;
|
|
5210
5559
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationMediaPlaybackInfoBarBannerComponent, never>;
|
|
5211
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXConversationMediaPlaybackInfoBarBannerComponent, "ax-conversation-media-playback-info-bar-banner", never, { "message": { "alias": "message"; "required": true; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "currentTime": { "alias": "currentTime"; "required": false; "isSignal": true; }; "duration": { "alias": "duration"; "required": false; "isSignal": true; }; "isPlaying": { "alias": "isPlaying"; "required": false; "isSignal": true; }; "onTogglePlay": { "alias": "onTogglePlay"; "required": false; "isSignal": true; }; "playbackSpeed": { "alias": "playbackSpeed"; "required": false; "isSignal": true; }; "onCycleSpeed": { "alias": "onCycleSpeed"; "required": false; "isSignal": true; }; "showSpeedControl": { "alias": "showSpeedControl"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
5560
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXConversationMediaPlaybackInfoBarBannerComponent, "ax-conversation-media-playback-info-bar-banner", never, { "message": { "alias": "message"; "required": true; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "currentTime": { "alias": "currentTime"; "required": false; "isSignal": true; }; "duration": { "alias": "duration"; "required": false; "isSignal": true; }; "isPlaying": { "alias": "isPlaying"; "required": false; "isSignal": true; }; "onTogglePlay": { "alias": "onTogglePlay"; "required": false; "isSignal": true; }; "playbackSpeed": { "alias": "playbackSpeed"; "required": false; "isSignal": true; }; "onCycleSpeed": { "alias": "onCycleSpeed"; "required": false; "isSignal": true; }; "showSpeedControl": { "alias": "showSpeedControl"; "required": false; "isSignal": true; }; "isMuted": { "alias": "isMuted"; "required": false; "isSignal": true; }; "onToggleMute": { "alias": "onToggleMute"; "required": false; "isSignal": true; }; "showMuteControl": { "alias": "showMuteControl"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
5212
5561
|
}
|
|
5213
5562
|
|
|
5214
5563
|
/**
|
|
@@ -5258,10 +5607,11 @@ declare class AXConversationMessageRendererStateComponent {
|
|
|
5258
5607
|
readonly contentRetry: _angular_core.OutputEmitterRef<void>;
|
|
5259
5608
|
readonly retryBusy: _angular_core.WritableSignal<boolean>;
|
|
5260
5609
|
private readonly currentUser;
|
|
5261
|
-
|
|
5610
|
+
readonly isOwn: _angular_core.Signal<boolean>;
|
|
5262
5611
|
readonly showFailed: _angular_core.Signal<boolean>;
|
|
5263
5612
|
readonly showContentError: _angular_core.Signal<boolean>;
|
|
5264
5613
|
readonly hasVisibleChrome: _angular_core.Signal<boolean>;
|
|
5614
|
+
readonly resolvedContentErrorIconClass: _angular_core.Signal<string>;
|
|
5265
5615
|
readonly contentErrorText: _angular_core.Signal<string>;
|
|
5266
5616
|
readonly deliveryFailedText: _angular_core.Signal<string>;
|
|
5267
5617
|
onRetry(): Promise<void>;
|
|
@@ -5299,195 +5649,37 @@ declare class AXConversationVideoAttachmentComponent {
|
|
|
5299
5649
|
onEnded(): void;
|
|
5300
5650
|
onError(): void;
|
|
5301
5651
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationVideoAttachmentComponent, never>;
|
|
5302
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXConversationVideoAttachmentComponent, "ax-conversation-video-attachment", never, { "item": { "alias": "item"; "required": true; "isSignal": true; }; }, { "playingChange": "playingChange"; "timeUpdate": "timeUpdate"; "durationChange": "durationChange"; "playbackEnded": "playbackEnded"; "playbackError": "playbackError"; }, never, never, true, never>;
|
|
5303
|
-
}
|
|
5304
|
-
|
|
5305
|
-
declare class AXConversationAudioRendererComponent extends AXConversationMessageRendererCopyHostComponent {
|
|
5306
|
-
private readonly fileTypes;
|
|
5307
|
-
private readonly translation;
|
|
5308
|
-
private readonly destroyRef;
|
|
5309
|
-
private readonly infoBarService;
|
|
5310
|
-
private readonly attachments;
|
|
5311
|
-
private readonly _contentState;
|
|
5312
|
-
private readonly activeTrackIndex;
|
|
5313
|
-
private readonly isPlaying;
|
|
5314
|
-
private readonly currentTime;
|
|
5315
|
-
private readonly duration;
|
|
5316
|
-
readonly message: _angular_core.InputSignal<AXConversationMessage>;
|
|
5317
|
-
readonly rendererState: _angular_core.Signal<{
|
|
5318
|
-
deliveryStatus: _acorex_components_conversation.AXConversationMessageStatus;
|
|
5319
|
-
contentState: AXConversationMessageRendererContentState;
|
|
5320
|
-
}>;
|
|
5321
|
-
readonly payload: _angular_core.Signal<AXConversationAudioPayload>;
|
|
5322
|
-
readonly audios: _angular_core.Signal<_acorex_components_conversation.AXConversationAudioMediaItem[]>;
|
|
5323
|
-
readonly caption: _angular_core.Signal<string>;
|
|
5324
|
-
readonly audioLoadErrorLabel: _angular_core.Signal<string>;
|
|
5325
|
-
copy(): Promise<string>;
|
|
5326
|
-
constructor();
|
|
5327
|
-
onPlayingChange(index: number, playing: boolean): void;
|
|
5328
|
-
onTimeUpdate(index: number, time: number): void;
|
|
5329
|
-
onDurationChange(index: number, duration: number): void;
|
|
5330
|
-
onPlaybackEnded(index: number): void;
|
|
5331
|
-
onPlaybackError(): void;
|
|
5332
|
-
togglePlay(): void;
|
|
5333
|
-
private pauseOtherTracks;
|
|
5334
|
-
private pausePlayback;
|
|
5335
|
-
private syncInfoBarBanner;
|
|
5336
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationAudioRendererComponent, never>;
|
|
5337
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXConversationAudioRendererComponent, "ax-conversation-audio-renderer", never, { "message": { "alias": "message"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
5338
|
-
}
|
|
5339
|
-
|
|
5340
|
-
declare function normalizeAudioPayload(payload: AXConversationAudioPayload): AXConversationAudioPayload;
|
|
5341
|
-
|
|
5342
|
-
declare class AXConversationFallbackRendererComponent implements AXConversationMessageRendererComponent {
|
|
5343
|
-
private readonly _contentState;
|
|
5344
|
-
readonly message: _angular_core.InputSignal<AXConversationMessage>;
|
|
5345
|
-
readonly rendererState: _angular_core.Signal<{
|
|
5346
|
-
deliveryStatus: _acorex_components_conversation.AXConversationMessageStatus;
|
|
5347
|
-
contentState: AXConversationMessageRendererContentState;
|
|
5348
|
-
}>;
|
|
5349
|
-
readonly messageTypeLabel: _angular_core.Signal<string>;
|
|
5350
|
-
/** Same tone as content-error default in {@link AXConversationMessageRendererStateComponent}. */
|
|
5351
|
-
readonly fallbackDescription: _angular_core.Signal<string>;
|
|
5352
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationFallbackRendererComponent, never>;
|
|
5353
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXConversationFallbackRendererComponent, "ax-conversation-fallback-renderer", never, { "message": { "alias": "message"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
5354
|
-
}
|
|
5355
|
-
|
|
5356
|
-
declare class AXConversationFileRendererComponent extends AXConversationMessageRendererCopyHostComponent {
|
|
5357
|
-
private readonly fileTypes;
|
|
5358
|
-
readonly message: _angular_core.InputSignal<AXConversationMessage>;
|
|
5359
|
-
readonly rendererState: _angular_core.Signal<{
|
|
5360
|
-
deliveryStatus: _acorex_components_conversation.AXConversationMessageStatus;
|
|
5361
|
-
contentState: "ready";
|
|
5362
|
-
}>;
|
|
5363
|
-
readonly payload: _angular_core.Signal<AXConversationFilePayload>;
|
|
5364
|
-
readonly files: _angular_core.Signal<_acorex_components_conversation.AXConversationFileMediaItem[]>;
|
|
5365
|
-
readonly caption: _angular_core.Signal<string>;
|
|
5366
|
-
copy(): Promise<string>;
|
|
5367
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationFileRendererComponent, never>;
|
|
5368
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXConversationFileRendererComponent, "ax-conversation-file-renderer", never, { "message": { "alias": "message"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
5369
|
-
}
|
|
5370
|
-
|
|
5371
|
-
declare function normalizeFilePayload(payload: AXConversationFilePayload): AXConversationFilePayload;
|
|
5372
|
-
|
|
5373
|
-
declare class AXConversationImageRendererComponent extends AXConversationMessageRendererCopyHostComponent {
|
|
5374
|
-
private readonly fileTypes;
|
|
5375
|
-
readonly message: _angular_core.InputSignal<AXConversationMessage>;
|
|
5376
|
-
readonly rendererState: _angular_core.Signal<{
|
|
5377
|
-
deliveryStatus: _acorex_components_conversation.AXConversationMessageStatus;
|
|
5378
|
-
contentState: "ready";
|
|
5379
|
-
}>;
|
|
5380
|
-
readonly payload: _angular_core.Signal<AXConversationImagePayload>;
|
|
5381
|
-
readonly images: _angular_core.Signal<_acorex_components_conversation.AXConversationImageMediaItem[]>;
|
|
5382
|
-
readonly caption: _angular_core.Signal<string>;
|
|
5383
|
-
copy(): Promise<string>;
|
|
5384
|
-
readonly gridModeClass: _angular_core.Signal<"ax-conversation-msg__grid--single" | "ax-conversation-msg__grid--dual" | "ax-conversation-msg__grid--multi">;
|
|
5385
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationImageRendererComponent, never>;
|
|
5386
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXConversationImageRendererComponent, "ax-conversation-image-renderer", never, { "message": { "alias": "message"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
5387
|
-
}
|
|
5388
|
-
|
|
5389
|
-
/** Format image message payload for rendering (array shape, safe thumbnails). */
|
|
5390
|
-
declare function normalizeImagePayload(payload: AXConversationImagePayload): AXConversationImagePayload;
|
|
5391
|
-
/** Preferred URL for grid / lightbox (never inline base64 thumbnails). */
|
|
5392
|
-
declare function resolveImageDisplayUrl(image: AXConversationImageMediaItem): string | undefined;
|
|
5393
|
-
|
|
5394
|
-
declare class AXConversationLocationRendererComponent extends AXConversationMessageRendererCopyHostComponent {
|
|
5395
|
-
private readonly _contentState;
|
|
5396
|
-
readonly message: _angular_core.InputSignal<AXConversationMessage>;
|
|
5397
|
-
readonly rendererState: _angular_core.Signal<{
|
|
5398
|
-
deliveryStatus: _acorex_components_conversation.AXConversationMessageStatus;
|
|
5399
|
-
contentState: AXConversationMessageRendererContentState;
|
|
5400
|
-
}>;
|
|
5401
|
-
readonly payload: _angular_core.Signal<AXConversationLocationPayload>;
|
|
5402
|
-
readonly latitude: _angular_core.Signal<number>;
|
|
5403
|
-
readonly longitude: _angular_core.Signal<number>;
|
|
5404
|
-
readonly locationName: _angular_core.Signal<string>;
|
|
5405
|
-
readonly address: _angular_core.Signal<string>;
|
|
5406
|
-
readonly coordinatesText: _angular_core.Signal<string>;
|
|
5407
|
-
readonly mapsUrl: _angular_core.Signal<string>;
|
|
5408
|
-
copy(): string;
|
|
5409
|
-
readonly markers: _angular_core.Signal<{
|
|
5410
|
-
latitude: number;
|
|
5411
|
-
longitude: number;
|
|
5412
|
-
popup: string;
|
|
5413
|
-
popupOpen: boolean;
|
|
5414
|
-
popupCloseButton: boolean;
|
|
5415
|
-
}[]>;
|
|
5416
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationLocationRendererComponent, never>;
|
|
5417
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXConversationLocationRendererComponent, "ax-conversation-location-renderer", never, { "message": { "alias": "message"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
5418
|
-
}
|
|
5419
|
-
|
|
5420
|
-
declare class AXConversationStickerRendererComponent implements AXConversationMessageRendererComponent {
|
|
5421
|
-
private readonly _contentState;
|
|
5422
|
-
readonly message: _angular_core.InputSignal<AXConversationMessage>;
|
|
5423
|
-
readonly rendererState: _angular_core.Signal<{
|
|
5424
|
-
deliveryStatus: _acorex_components_conversation.AXConversationMessageStatus;
|
|
5425
|
-
contentState: AXConversationMessageRendererContentState;
|
|
5426
|
-
}>;
|
|
5427
|
-
readonly payload: _angular_core.Signal<AXConversationStickerPayload>;
|
|
5428
|
-
private readonly mediaReference;
|
|
5429
|
-
private readonly resolvedUrl;
|
|
5430
|
-
readonly stickerUrl: _angular_core.Signal<string>;
|
|
5431
|
-
readonly alt: _angular_core.Signal<string>;
|
|
5432
|
-
constructor();
|
|
5433
|
-
onLoad(): void;
|
|
5434
|
-
onError(): void;
|
|
5435
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationStickerRendererComponent, never>;
|
|
5436
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXConversationStickerRendererComponent, "ax-conversation-sticker-renderer", never, { "message": { "alias": "message"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
5437
|
-
}
|
|
5438
|
-
|
|
5439
|
-
declare class AXConversationSystemRendererComponent implements AXConversationMessageRendererComponent {
|
|
5440
|
-
private readonly _contentState;
|
|
5441
|
-
readonly message: _angular_core.InputSignal<AXConversationMessage>;
|
|
5442
|
-
readonly rendererState: _angular_core.Signal<{
|
|
5443
|
-
deliveryStatus: _acorex_components_conversation.AXConversationMessageStatus;
|
|
5444
|
-
contentState: AXConversationMessageRendererContentState;
|
|
5445
|
-
}>;
|
|
5446
|
-
readonly payload: _angular_core.Signal<AXConversationSystemPayload>;
|
|
5447
|
-
readonly iconClass: _angular_core.Signal<string>;
|
|
5448
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationSystemRendererComponent, never>;
|
|
5449
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXConversationSystemRendererComponent, "ax-conversation-system-renderer", never, { "message": { "alias": "message"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
5450
|
-
}
|
|
5451
|
-
|
|
5452
|
-
declare class AXConversationTextRendererComponent extends AXConversationMessageRendererCopyHostComponent {
|
|
5453
|
-
private readonly infoBarService;
|
|
5454
|
-
private readonly sanitizer;
|
|
5455
|
-
private readonly _contentState;
|
|
5456
|
-
readonly message: _angular_core.InputSignal<AXConversationMessage>;
|
|
5457
|
-
readonly rendererState: _angular_core.Signal<{
|
|
5458
|
-
deliveryStatus: _acorex_components_conversation.AXConversationMessageStatus;
|
|
5459
|
-
contentState: AXConversationMessageRendererContentState;
|
|
5460
|
-
}>;
|
|
5461
|
-
readonly searchQuery: _angular_core.Signal<string>;
|
|
5462
|
-
copy(): string;
|
|
5463
|
-
readonly formattedText: _angular_core.Signal<SafeHtml>;
|
|
5464
|
-
private linkify;
|
|
5465
|
-
private highlightSearch;
|
|
5466
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationTextRendererComponent, never>;
|
|
5467
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXConversationTextRendererComponent, "ax-conversation-text-renderer", never, { "message": { "alias": "message"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
5652
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXConversationVideoAttachmentComponent, "ax-conversation-video-attachment", never, { "item": { "alias": "item"; "required": true; "isSignal": true; }; }, { "playingChange": "playingChange"; "timeUpdate": "timeUpdate"; "durationChange": "durationChange"; "playbackEnded": "playbackEnded"; "playbackError": "playbackError"; }, never, never, true, never>;
|
|
5468
5653
|
}
|
|
5469
5654
|
|
|
5470
|
-
declare class
|
|
5655
|
+
declare class AXConversationAudioRendererComponent extends AXConversationMessageRendererCopyHostComponent {
|
|
5471
5656
|
private readonly fileTypes;
|
|
5472
5657
|
private readonly translation;
|
|
5473
|
-
private readonly platformId;
|
|
5474
5658
|
private readonly destroyRef;
|
|
5475
5659
|
private readonly infoBarService;
|
|
5476
5660
|
private readonly attachments;
|
|
5477
5661
|
private readonly _contentState;
|
|
5478
|
-
private readonly
|
|
5662
|
+
private readonly activeTrackIndex;
|
|
5663
|
+
private readonly isPlaying;
|
|
5664
|
+
private readonly currentTime;
|
|
5665
|
+
private readonly duration;
|
|
5666
|
+
readonly playbackSpeed: _angular_core.WritableSignal<number>;
|
|
5667
|
+
readonly isMuted: _angular_core.WritableSignal<boolean>;
|
|
5668
|
+
private lastBannerSyncAt;
|
|
5669
|
+
private readonly speeds;
|
|
5670
|
+
private readonly bannerTogglePlay;
|
|
5671
|
+
private readonly bannerClose;
|
|
5672
|
+
private readonly bannerCycleSpeed;
|
|
5673
|
+
private readonly bannerToggleMute;
|
|
5479
5674
|
readonly message: _angular_core.InputSignal<AXConversationMessage>;
|
|
5480
5675
|
readonly rendererState: _angular_core.Signal<{
|
|
5481
5676
|
deliveryStatus: _acorex_components_conversation.AXConversationMessageStatus;
|
|
5482
5677
|
contentState: AXConversationMessageRendererContentState;
|
|
5483
5678
|
}>;
|
|
5484
|
-
readonly
|
|
5485
|
-
readonly
|
|
5486
|
-
readonly duration: _angular_core.WritableSignal<number>;
|
|
5487
|
-
readonly payload: _angular_core.Signal<AXConversationVideoPayload>;
|
|
5488
|
-
readonly videos: _angular_core.Signal<_acorex_components_conversation.AXConversationVideoMediaItem[]>;
|
|
5679
|
+
readonly payload: _angular_core.Signal<AXConversationAudioPayload>;
|
|
5680
|
+
readonly audios: _angular_core.Signal<_acorex_components_conversation.AXConversationAudioMediaItem[]>;
|
|
5489
5681
|
readonly caption: _angular_core.Signal<string>;
|
|
5490
|
-
readonly
|
|
5682
|
+
readonly audioLoadErrorLabel: _angular_core.Signal<string>;
|
|
5491
5683
|
copy(): Promise<string>;
|
|
5492
5684
|
constructor();
|
|
5493
5685
|
onPlayingChange(index: number, playing: boolean): void;
|
|
@@ -5496,496 +5688,416 @@ declare class AXConversationVideoRendererComponent extends AXConversationMessage
|
|
|
5496
5688
|
onPlaybackEnded(index: number): void;
|
|
5497
5689
|
onPlaybackError(): void;
|
|
5498
5690
|
togglePlay(): void;
|
|
5499
|
-
|
|
5691
|
+
cyclePlaybackSpeed(): void;
|
|
5692
|
+
toggleMute(): void;
|
|
5693
|
+
private pauseOtherTracks;
|
|
5500
5694
|
private pausePlayback;
|
|
5695
|
+
private applyPlaybackSettings;
|
|
5501
5696
|
private syncInfoBarBanner;
|
|
5502
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<
|
|
5503
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<
|
|
5697
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationAudioRendererComponent, never>;
|
|
5698
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXConversationAudioRendererComponent, "ax-conversation-audio-renderer", never, { "message": { "alias": "message"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
5504
5699
|
}
|
|
5505
5700
|
|
|
5506
|
-
declare function
|
|
5701
|
+
declare function normalizeAudioPayload(payload: AXConversationAudioPayload): AXConversationAudioPayload;
|
|
5507
5702
|
|
|
5508
|
-
declare class
|
|
5509
|
-
private readonly fileTypes;
|
|
5510
|
-
private readonly translation;
|
|
5511
|
-
private readonly platformId;
|
|
5512
|
-
private readonly destroyRef;
|
|
5513
|
-
private readonly infoBarService;
|
|
5514
|
-
private readonly audioElementRef;
|
|
5703
|
+
declare class AXConversationFallbackRendererComponent implements AXConversationMessageRendererComponent {
|
|
5515
5704
|
private readonly _contentState;
|
|
5516
5705
|
readonly message: _angular_core.InputSignal<AXConversationMessage>;
|
|
5517
5706
|
readonly rendererState: _angular_core.Signal<{
|
|
5518
5707
|
deliveryStatus: _acorex_components_conversation.AXConversationMessageStatus;
|
|
5519
5708
|
contentState: AXConversationMessageRendererContentState;
|
|
5520
5709
|
}>;
|
|
5521
|
-
readonly
|
|
5522
|
-
|
|
5523
|
-
readonly
|
|
5524
|
-
|
|
5525
|
-
|
|
5526
|
-
readonly payload: _angular_core.Signal<AXConversationVoicePayload>;
|
|
5527
|
-
private readonly mediaReference;
|
|
5528
|
-
private readonly resolvedUrl;
|
|
5529
|
-
readonly voiceUrl: _angular_core.Signal<string>;
|
|
5530
|
-
readonly waveformBars: _angular_core.Signal<number[]>;
|
|
5531
|
-
readonly activeBarIndex: _angular_core.Signal<number>;
|
|
5532
|
-
readonly timeLabel: _angular_core.Signal<string>;
|
|
5533
|
-
readonly voiceLoadErrorLabel: _angular_core.Signal<string>;
|
|
5534
|
-
copy(): Promise<string>;
|
|
5535
|
-
constructor();
|
|
5536
|
-
togglePlay(): void;
|
|
5537
|
-
cyclePlaybackSpeed(): void;
|
|
5538
|
-
onTimeUpdate(): void;
|
|
5539
|
-
onEnded(): void;
|
|
5540
|
-
onError(): void;
|
|
5541
|
-
private pausePlayback;
|
|
5542
|
-
private syncInfoBarBanner;
|
|
5543
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationVoiceRendererComponent, never>;
|
|
5544
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXConversationVoiceRendererComponent, "ax-conversation-voice-renderer", never, { "message": { "alias": "message"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
5710
|
+
readonly messageTypeLabel: _angular_core.Signal<string>;
|
|
5711
|
+
/** Same tone as content-error default in {@link AXConversationMessageRendererStateComponent}. */
|
|
5712
|
+
readonly fallbackDescription: _angular_core.Signal<string>;
|
|
5713
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationFallbackRendererComponent, never>;
|
|
5714
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXConversationFallbackRendererComponent, "ax-conversation-fallback-renderer", never, { "message": { "alias": "message"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
5545
5715
|
}
|
|
5546
5716
|
|
|
5547
|
-
|
|
5548
|
-
|
|
5549
|
-
|
|
5550
|
-
|
|
5551
|
-
|
|
5552
|
-
|
|
5553
|
-
* Reply to message
|
|
5554
|
-
*/
|
|
5555
|
-
declare const AX_CONVERSATION_MESSAGE_REPLY_ACTION: AXConversationMessageAction;
|
|
5556
|
-
/**
|
|
5557
|
-
* Edit own message (text only)
|
|
5558
|
-
*/
|
|
5559
|
-
declare const AX_CONVERSATION_MESSAGE_EDIT_ACTION: AXConversationMessageAction;
|
|
5560
|
-
/**
|
|
5561
|
-
* Delete own message
|
|
5562
|
-
*/
|
|
5563
|
-
declare const AX_CONVERSATION_MESSAGE_DELETE_ACTION: AXConversationMessageAction;
|
|
5564
|
-
/**
|
|
5565
|
-
* Forward message to another conversation
|
|
5566
|
-
*/
|
|
5567
|
-
declare const AX_CONVERSATION_MESSAGE_FORWARD_ACTION: AXConversationMessageAction;
|
|
5568
|
-
|
|
5569
|
-
declare const AX_CONVERSATION_TEXT_RENDERER: AXConversationMessageRenderer;
|
|
5570
|
-
|
|
5571
|
-
declare const AX_CONVERSATION_IMAGE_RENDERER: AXConversationMessageRenderer;
|
|
5572
|
-
|
|
5573
|
-
declare const AX_CONVERSATION_VIDEO_RENDERER: AXConversationMessageRenderer;
|
|
5574
|
-
|
|
5575
|
-
declare const AX_CONVERSATION_AUDIO_RENDERER: AXConversationMessageRenderer;
|
|
5576
|
-
|
|
5577
|
-
declare const AX_CONVERSATION_VOICE_RENDERER: AXConversationMessageRenderer;
|
|
5578
|
-
|
|
5579
|
-
declare const AX_CONVERSATION_FILE_RENDERER: AXConversationMessageRenderer;
|
|
5580
|
-
|
|
5581
|
-
declare const AX_CONVERSATION_LOCATION_RENDERER: AXConversationMessageRenderer;
|
|
5582
|
-
|
|
5583
|
-
declare const AX_CONVERSATION_STICKER_RENDERER: AXConversationMessageRenderer;
|
|
5584
|
-
|
|
5585
|
-
declare const AX_CONVERSATION_SYSTEM_RENDERER: AXConversationMessageRenderer;
|
|
5586
|
-
|
|
5587
|
-
declare const AX_CONVERSATION_FALLBACK_RENDERER: AXConversationMessageRenderer;
|
|
5588
|
-
|
|
5589
|
-
/**
|
|
5590
|
-
* Default Conversation Item Actions Plugin
|
|
5591
|
-
* Individual action constants with AX_ prefix naming convention
|
|
5592
|
-
*/
|
|
5593
|
-
|
|
5594
|
-
/**
|
|
5595
|
-
* Mute/Unmute conversation notifications
|
|
5596
|
-
*/
|
|
5597
|
-
declare const AX_CONVERSATION_ITEM_MUTE_ACTION: AXConversationItemAction;
|
|
5598
|
-
/**
|
|
5599
|
-
* Pin/Unpin conversation to top
|
|
5600
|
-
*/
|
|
5601
|
-
declare const AX_CONVERSATION_ITEM_PIN_ACTION: AXConversationItemAction;
|
|
5602
|
-
/**
|
|
5603
|
-
* Mark conversation as read
|
|
5604
|
-
*/
|
|
5605
|
-
declare const AX_CONVERSATION_ITEM_MARK_READ_ACTION: AXConversationItemAction;
|
|
5606
|
-
/**
|
|
5607
|
-
* Divider separator before destructive actions
|
|
5608
|
-
*/
|
|
5609
|
-
declare const AX_CONVERSATION_ITEM_DIVIDER: AXConversationItemAction;
|
|
5610
|
-
/**
|
|
5611
|
-
* Delete/Leave conversation action (smart action that adapts based on conversation type)
|
|
5612
|
-
* - Private: "Delete" - Deletes the conversation
|
|
5613
|
-
* - Group/Channel: "Leave & Delete" - Leaves the group and removes it from list
|
|
5614
|
-
*/
|
|
5615
|
-
declare const AX_CONVERSATION_ITEM_DELETE_ACTION: AXConversationItemAction;
|
|
5616
|
-
/**
|
|
5617
|
-
* Block/Unblock user (private conversations only)
|
|
5618
|
-
*/
|
|
5619
|
-
declare const AX_CONVERSATION_ITEM_BLOCK_ACTION: AXConversationItemAction;
|
|
5620
|
-
|
|
5621
|
-
/**
|
|
5622
|
-
* Default Conversation Tabs Plugin
|
|
5623
|
-
* Provides sidebar conversation filter tabs (all, private, groups, etc.)
|
|
5624
|
-
*/
|
|
5625
|
-
|
|
5626
|
-
declare const AX_CONVERSATION_TAB_ALL: AXConversationTab;
|
|
5627
|
-
declare const AX_CONVERSATION_TAB_PRIVATE: AXConversationTab;
|
|
5628
|
-
declare const AX_CONVERSATION_TAB_GROUPS: AXConversationTab;
|
|
5629
|
-
declare const AX_CONVERSATION_TAB_CHANNELS: AXConversationTab;
|
|
5630
|
-
declare const AX_CONVERSATION_TAB_BOT: AXConversationTab;
|
|
5631
|
-
declare const AX_CONVERSATION_TAB_UNREAD: AXConversationTab;
|
|
5632
|
-
declare const AX_CONVERSATION_TAB_ARCHIVED: AXConversationTab;
|
|
5633
|
-
|
|
5634
|
-
declare class AXConversationDefaultConversationAvatarComponent {
|
|
5635
|
-
private readonly conversationService;
|
|
5636
|
-
private readonly userAvatarComponent;
|
|
5637
|
-
readonly conversationId: _angular_core.InputSignal<string>;
|
|
5638
|
-
readonly size: _angular_core.InputSignal<number>;
|
|
5639
|
-
private readonly currentUserId;
|
|
5640
|
-
private readonly conversation;
|
|
5641
|
-
readonly peerUserId: _angular_core.Signal<string>;
|
|
5642
|
-
readonly useUserAvatar: _angular_core.Signal<_angular_core.Type<_acorex_components_conversation.AXConversationUserAvatarComponent>>;
|
|
5643
|
-
readonly userAvatarInputs: _angular_core.Signal<{
|
|
5644
|
-
userId: string;
|
|
5645
|
-
size: number;
|
|
5646
|
-
displayName: string;
|
|
5647
|
-
displayAvatar: string;
|
|
5648
|
-
displayIcon: string;
|
|
5717
|
+
declare class AXConversationFileRendererComponent extends AXConversationMessageRendererCopyHostComponent {
|
|
5718
|
+
private readonly fileTypes;
|
|
5719
|
+
readonly message: _angular_core.InputSignal<AXConversationMessage>;
|
|
5720
|
+
readonly rendererState: _angular_core.Signal<{
|
|
5721
|
+
deliveryStatus: _acorex_components_conversation.AXConversationMessageStatus;
|
|
5722
|
+
contentState: "ready";
|
|
5649
5723
|
}>;
|
|
5650
|
-
readonly
|
|
5651
|
-
readonly
|
|
5652
|
-
readonly
|
|
5653
|
-
|
|
5654
|
-
static
|
|
5724
|
+
readonly payload: _angular_core.Signal<AXConversationFilePayload>;
|
|
5725
|
+
readonly files: _angular_core.Signal<_acorex_components_conversation.AXConversationFileMediaItem[]>;
|
|
5726
|
+
readonly caption: _angular_core.Signal<string>;
|
|
5727
|
+
copy(): Promise<string>;
|
|
5728
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationFileRendererComponent, never>;
|
|
5729
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXConversationFileRendererComponent, "ax-conversation-file-renderer", never, { "message": { "alias": "message"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
5655
5730
|
}
|
|
5656
5731
|
|
|
5657
|
-
|
|
5658
|
-
|
|
5659
|
-
|
|
5660
|
-
interface
|
|
5661
|
-
|
|
5662
|
-
|
|
5663
|
-
/** Conversation Management API implementation (required) */
|
|
5664
|
-
conversationApi: Type<AXConversationApi>;
|
|
5665
|
-
/** Message API implementation (required) */
|
|
5666
|
-
messageApi: Type<AXConversationMessageApi>;
|
|
5667
|
-
/** Realtime API implementation (optional) */
|
|
5668
|
-
realtimeApi?: Type<AXConversationRealtimeApi>;
|
|
5669
|
-
/** Configuration overrides */
|
|
5670
|
-
config?: Partial<AXConversationConfig>;
|
|
5671
|
-
/** Registry configuration */
|
|
5672
|
-
registry?: Partial<AXConversationRegistryConfiguration>;
|
|
5673
|
-
/** Optional custom avatar components for the entire conversation UI */
|
|
5674
|
-
avatarComponents?: AXConversationAvatarComponents;
|
|
5675
|
-
}
|
|
5676
|
-
declare class AXConversationModule {
|
|
5677
|
-
/**
|
|
5678
|
-
* Configure module for root module with singleton services.
|
|
5679
|
-
* @deprecated Use standalone components with provideConversation()
|
|
5680
|
-
*/
|
|
5681
|
-
static forRoot(options: AXConversationOptions): ModuleWithProviders<AXConversationModule>;
|
|
5682
|
-
/**
|
|
5683
|
-
* Configure module for lazy-loaded feature modules.
|
|
5684
|
-
* Reuses singleton services from root, optionally overrides config/registry.
|
|
5685
|
-
*/
|
|
5686
|
-
static forChild(options?: Omit<AXConversationOptions, 'userApi' | 'conversationApi' | 'messageApi' | 'realtimeApi'>): ModuleWithProviders<AXConversationModule>;
|
|
5687
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationModule, never>;
|
|
5688
|
-
static ɵmod: _angular_core.ɵɵNgModuleDeclaration<AXConversationModule, never, [typeof i1.CommonModule, typeof i2.FormsModule, typeof AXConversationContainerComponent, typeof AXConversationSidebarComponent, typeof AXConversationInfoBarComponent, typeof AXConversationMessageListComponent, typeof AXConversationComposerComponent, typeof AXConversationInfiniteScrollDirective, typeof AXConversationDefaultConversationAvatarComponent], [typeof AXConversationContainerComponent, typeof AXConversationSidebarComponent, typeof AXConversationInfoBarComponent, typeof AXConversationMessageListComponent, typeof AXConversationComposerComponent, typeof AXConversationInfiniteScrollDirective]>;
|
|
5689
|
-
static ɵinj: _angular_core.ɵɵInjectorDeclaration<AXConversationModule>;
|
|
5732
|
+
declare function normalizeFilePayload(payload: AXConversationFilePayload): AXConversationFilePayload;
|
|
5733
|
+
|
|
5734
|
+
type AXConversationMediaGalleryLayoutMode = 'single' | 'dual' | 'triple' | 'masonry';
|
|
5735
|
+
interface AXConversationMediaGalleryRow<T> {
|
|
5736
|
+
items: T[];
|
|
5737
|
+
startIndex: number;
|
|
5690
5738
|
}
|
|
5691
|
-
/**
|
|
5692
|
-
* Provides conversation functionality for standalone applications.
|
|
5693
|
-
* Use in app config or route providers.
|
|
5694
|
-
*
|
|
5695
|
-
* @example
|
|
5696
|
-
* ```typescript
|
|
5697
|
-
* import {
|
|
5698
|
-
* AXConversationIndexedDbUserApi,
|
|
5699
|
-
* AXConversationIndexedDbConversationApi,
|
|
5700
|
-
* AXConversationIndexedDbMessageApi,
|
|
5701
|
-
* AXConversationIndexedDbRealtimeApi
|
|
5702
|
-
* } from '@acorex/components/conversation';
|
|
5703
|
-
*
|
|
5704
|
-
* export const appConfig: ApplicationConfig = {
|
|
5705
|
-
* providers: [
|
|
5706
|
-
* provideConversation({
|
|
5707
|
-
* userApi: AXConversationIndexedDbUserApi,
|
|
5708
|
-
* conversationApi: AXConversationIndexedDbConversationApi,
|
|
5709
|
-
* messageApi: AXConversationIndexedDbMessageApi,
|
|
5710
|
-
* realtimeApi: AXConversationIndexedDbRealtimeApi,
|
|
5711
|
-
* config: { },
|
|
5712
|
-
* registry: { messageActions: [myCustomAction] }
|
|
5713
|
-
* })
|
|
5714
|
-
* ]
|
|
5715
|
-
* };
|
|
5716
|
-
* ```
|
|
5717
|
-
*/
|
|
5718
|
-
declare function provideConversation(options: AXConversationOptions): Provider[];
|
|
5719
5739
|
|
|
5720
|
-
|
|
5721
|
-
|
|
5722
|
-
|
|
5723
|
-
|
|
5740
|
+
declare class AXConversationImageRendererComponent extends AXConversationMessageRendererCopyHostComponent {
|
|
5741
|
+
private readonly fileTypes;
|
|
5742
|
+
readonly message: _angular_core.InputSignal<AXConversationMessage>;
|
|
5743
|
+
readonly rendererState: _angular_core.Signal<{
|
|
5744
|
+
deliveryStatus: _acorex_components_conversation.AXConversationMessageStatus;
|
|
5745
|
+
contentState: "ready";
|
|
5746
|
+
}>;
|
|
5747
|
+
readonly payload: _angular_core.Signal<AXConversationImagePayload>;
|
|
5748
|
+
readonly images: _angular_core.Signal<_acorex_components_conversation.AXConversationImageMediaItem[]>;
|
|
5749
|
+
readonly caption: _angular_core.Signal<string>;
|
|
5750
|
+
copy(): Promise<string>;
|
|
5751
|
+
readonly layoutMode: _angular_core.Signal<AXConversationMediaGalleryLayoutMode>;
|
|
5752
|
+
readonly imageRows: _angular_core.Signal<AXConversationMediaGalleryRow<_acorex_components_conversation.AXConversationImageMediaItem>[]>;
|
|
5753
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationImageRendererComponent, never>;
|
|
5754
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXConversationImageRendererComponent, "ax-conversation-image-renderer", never, { "message": { "alias": "message"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
5724
5755
|
}
|
|
5725
|
-
/** Conversation types that resolve a single peer participant for viewer-scoped avatar/title. */
|
|
5726
|
-
declare const AX_CONVERSATION_PEER_AVATAR_TYPES: ReadonlySet<AXConversationType>;
|
|
5727
|
-
/**
|
|
5728
|
-
* Other participant in a peer-scoped conversation (excludes the current viewer).
|
|
5729
|
-
* Applies to private 1:1 and bot assist chats with exactly one non-viewer participant.
|
|
5730
|
-
*/
|
|
5731
|
-
declare function resolveConversationPeerUserId(conversation: AXConversation, currentUserId?: string): string | undefined;
|
|
5732
|
-
/** Other participant in a private chat (excludes the current user). */
|
|
5733
|
-
declare function resolvePrivatePeerUserId(conversation: AXConversation, currentUserId?: string): string | undefined;
|
|
5734
|
-
/** Peer participant for private and bot conversations. */
|
|
5735
|
-
declare function resolveConversationPeerParticipant(conversation: AXConversation, currentUserId?: string): AXConversationParticipant | undefined;
|
|
5736
|
-
/** Whether `auto` kind should render a registered user avatar for this conversation. */
|
|
5737
|
-
declare function shouldUseUserAvatarForConversation(conversation: AXConversation, currentUserId?: string): boolean;
|
|
5738
|
-
declare function resolveUserAvatarDisplay(userId: string, conversation: AXConversation | undefined, message?: AXConversationMessage): AXConversationAvatarDisplay;
|
|
5739
|
-
declare function resolveConversationAvatarDisplay(conversation: AXConversation, currentUserId?: string): AXConversationAvatarDisplay;
|
|
5740
5756
|
|
|
5741
|
-
|
|
5742
|
-
|
|
5743
|
-
|
|
5757
|
+
/** Format image message payload for rendering (array shape, safe thumbnails). */
|
|
5758
|
+
declare function normalizeImagePayload(payload: AXConversationImagePayload): AXConversationImagePayload;
|
|
5759
|
+
/** Preferred URL for grid / lightbox (never inline base64 thumbnails). */
|
|
5760
|
+
declare function resolveImageDisplayUrl(image: AXConversationImageMediaItem): string | undefined;
|
|
5761
|
+
|
|
5762
|
+
declare class AXConversationLocationRendererComponent extends AXConversationMessageRendererCopyHostComponent {
|
|
5763
|
+
private readonly _contentState;
|
|
5764
|
+
readonly message: _angular_core.InputSignal<AXConversationMessage>;
|
|
5765
|
+
readonly rendererState: _angular_core.Signal<{
|
|
5766
|
+
deliveryStatus: _acorex_components_conversation.AXConversationMessageStatus;
|
|
5767
|
+
contentState: AXConversationMessageRendererContentState;
|
|
5768
|
+
}>;
|
|
5769
|
+
readonly payload: _angular_core.Signal<AXConversationLocationPayload>;
|
|
5770
|
+
readonly latitude: _angular_core.Signal<number>;
|
|
5771
|
+
readonly longitude: _angular_core.Signal<number>;
|
|
5772
|
+
readonly locationName: _angular_core.Signal<string>;
|
|
5773
|
+
readonly address: _angular_core.Signal<string>;
|
|
5774
|
+
readonly coordinatesText: _angular_core.Signal<string>;
|
|
5775
|
+
readonly mapsUrl: _angular_core.Signal<string>;
|
|
5776
|
+
copy(): string;
|
|
5777
|
+
readonly markers: _angular_core.Signal<{
|
|
5778
|
+
latitude: number;
|
|
5779
|
+
longitude: number;
|
|
5780
|
+
popup: string;
|
|
5781
|
+
popupOpen: boolean;
|
|
5782
|
+
popupCloseButton: boolean;
|
|
5783
|
+
}[]>;
|
|
5784
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationLocationRendererComponent, never>;
|
|
5785
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXConversationLocationRendererComponent, "ax-conversation-location-renderer", never, { "message": { "alias": "message"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
5744
5786
|
}
|
|
5745
|
-
/** Library default when no per-conversation or global background is set (pattern-5 tile + gradient wash). */
|
|
5746
|
-
declare const AX_CONVERSATION_DEFAULT_MESSAGE_LIST_THEME_BACKGROUND: AXConversationMessageListThemeBackground;
|
|
5747
|
-
/** Predefined chat-area backgrounds for the info panel (light + dark variants). */
|
|
5748
|
-
declare const AX_CONVERSATION_MESSAGE_LIST_BACKGROUND_PRESETS: AXConversationMessageListBackgroundPreset[];
|
|
5749
|
-
declare const AX_CONVERSATION_DEFAULT_MESSAGE_LIST_BACKGROUND_PRESET_ID = "solid-default";
|
|
5750
5787
|
|
|
5751
|
-
|
|
5752
|
-
|
|
5753
|
-
|
|
5754
|
-
|
|
5755
|
-
|
|
5756
|
-
|
|
5757
|
-
|
|
5758
|
-
|
|
5759
|
-
|
|
5760
|
-
|
|
5761
|
-
|
|
5762
|
-
|
|
5763
|
-
|
|
5788
|
+
declare class AXConversationStickerRendererComponent implements AXConversationMessageRendererComponent {
|
|
5789
|
+
private readonly _contentState;
|
|
5790
|
+
readonly message: _angular_core.InputSignal<AXConversationMessage>;
|
|
5791
|
+
readonly rendererState: _angular_core.Signal<{
|
|
5792
|
+
deliveryStatus: _acorex_components_conversation.AXConversationMessageStatus;
|
|
5793
|
+
contentState: AXConversationMessageRendererContentState;
|
|
5794
|
+
}>;
|
|
5795
|
+
readonly payload: _angular_core.Signal<AXConversationStickerPayload>;
|
|
5796
|
+
private readonly mediaReference;
|
|
5797
|
+
private readonly resolvedUrl;
|
|
5798
|
+
readonly stickerUrl: _angular_core.Signal<string>;
|
|
5799
|
+
readonly alt: _angular_core.Signal<string>;
|
|
5800
|
+
constructor();
|
|
5801
|
+
onLoad(): void;
|
|
5802
|
+
onError(): void;
|
|
5803
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationStickerRendererComponent, never>;
|
|
5804
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXConversationStickerRendererComponent, "ax-conversation-sticker-renderer", never, { "message": { "alias": "message"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
5805
|
+
}
|
|
5764
5806
|
|
|
5765
|
-
|
|
5766
|
-
|
|
5767
|
-
|
|
5768
|
-
|
|
5769
|
-
|
|
5770
|
-
|
|
5771
|
-
|
|
5772
|
-
|
|
5773
|
-
|
|
5774
|
-
|
|
5775
|
-
|
|
5776
|
-
|
|
5777
|
-
declare function resolvePrivatePeerParticipant(conversation: AXConversation, currentUserId?: string): AXConversationParticipant | undefined;
|
|
5778
|
-
/**
|
|
5779
|
-
* Resolves the display title for the current viewer.
|
|
5780
|
-
* Private and bot peer-scoped chats show the other participant's name when no custom title is set.
|
|
5781
|
-
*/
|
|
5782
|
-
declare function resolveConversationTitleForViewer(conversation: AXConversation, currentUserId?: string): string;
|
|
5783
|
-
/**
|
|
5784
|
-
* Returns a viewer-scoped copy of a conversation with dynamic peer title/avatar/icon.
|
|
5785
|
-
* Does not mutate the source object.
|
|
5786
|
-
*/
|
|
5787
|
-
declare function resolveConversationForViewer(conversation: AXConversation, currentUserId?: string): AXConversation;
|
|
5788
|
-
/** Whether message reactions are enabled for a conversation. Defaults to `true` when omitted. */
|
|
5789
|
-
declare function isConversationReactionsEnabled(conversation?: AXConversation | null): boolean;
|
|
5807
|
+
declare class AXConversationSystemRendererComponent implements AXConversationMessageRendererComponent {
|
|
5808
|
+
private readonly _contentState;
|
|
5809
|
+
readonly message: _angular_core.InputSignal<AXConversationMessage>;
|
|
5810
|
+
readonly rendererState: _angular_core.Signal<{
|
|
5811
|
+
deliveryStatus: _acorex_components_conversation.AXConversationMessageStatus;
|
|
5812
|
+
contentState: AXConversationMessageRendererContentState;
|
|
5813
|
+
}>;
|
|
5814
|
+
readonly payload: _angular_core.Signal<AXConversationSystemPayload>;
|
|
5815
|
+
readonly iconClass: _angular_core.Signal<string>;
|
|
5816
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationSystemRendererComponent, never>;
|
|
5817
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXConversationSystemRendererComponent, "ax-conversation-system-renderer", never, { "message": { "alias": "message"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
5818
|
+
}
|
|
5790
5819
|
|
|
5791
|
-
|
|
5792
|
-
|
|
5820
|
+
declare class AXConversationTextRendererComponent extends AXConversationMessageRendererCopyHostComponent {
|
|
5821
|
+
private readonly infoBarService;
|
|
5822
|
+
private readonly sanitizer;
|
|
5823
|
+
private readonly _contentState;
|
|
5824
|
+
readonly message: _angular_core.InputSignal<AXConversationMessage>;
|
|
5825
|
+
readonly rendererState: _angular_core.Signal<{
|
|
5826
|
+
deliveryStatus: _acorex_components_conversation.AXConversationMessageStatus;
|
|
5827
|
+
contentState: AXConversationMessageRendererContentState;
|
|
5828
|
+
}>;
|
|
5829
|
+
readonly searchQuery: _angular_core.Signal<string>;
|
|
5830
|
+
copy(): string;
|
|
5831
|
+
readonly formattedText: _angular_core.Signal<SafeHtml>;
|
|
5832
|
+
private linkify;
|
|
5833
|
+
private highlightSearch;
|
|
5834
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationTextRendererComponent, never>;
|
|
5835
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXConversationTextRendererComponent, "ax-conversation-text-renderer", never, { "message": { "alias": "message"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
5836
|
+
}
|
|
5793
5837
|
|
|
5794
|
-
declare class
|
|
5795
|
-
|
|
5796
|
-
|
|
5797
|
-
|
|
5798
|
-
|
|
5799
|
-
|
|
5800
|
-
|
|
5801
|
-
|
|
5802
|
-
|
|
5803
|
-
|
|
5804
|
-
|
|
5805
|
-
|
|
5806
|
-
|
|
5807
|
-
|
|
5808
|
-
|
|
5809
|
-
|
|
5810
|
-
|
|
5811
|
-
|
|
5812
|
-
|
|
5813
|
-
|
|
5814
|
-
|
|
5838
|
+
declare class AXConversationVideoRendererComponent extends AXConversationMessageRendererCopyHostComponent {
|
|
5839
|
+
private readonly fileTypes;
|
|
5840
|
+
private readonly translation;
|
|
5841
|
+
private readonly platformId;
|
|
5842
|
+
private readonly destroyRef;
|
|
5843
|
+
private readonly infoBarService;
|
|
5844
|
+
private readonly attachments;
|
|
5845
|
+
private readonly _contentState;
|
|
5846
|
+
private readonly activeVideoIndex;
|
|
5847
|
+
readonly message: _angular_core.InputSignal<AXConversationMessage>;
|
|
5848
|
+
readonly rendererState: _angular_core.Signal<{
|
|
5849
|
+
deliveryStatus: _acorex_components_conversation.AXConversationMessageStatus;
|
|
5850
|
+
contentState: AXConversationMessageRendererContentState;
|
|
5851
|
+
}>;
|
|
5852
|
+
readonly isPlaying: _angular_core.WritableSignal<boolean>;
|
|
5853
|
+
readonly currentTime: _angular_core.WritableSignal<number>;
|
|
5854
|
+
readonly duration: _angular_core.WritableSignal<number>;
|
|
5855
|
+
readonly payload: _angular_core.Signal<AXConversationVideoPayload>;
|
|
5856
|
+
readonly videos: _angular_core.Signal<_acorex_components_conversation.AXConversationVideoMediaItem[]>;
|
|
5857
|
+
readonly caption: _angular_core.Signal<string>;
|
|
5858
|
+
readonly videoLoadErrorLabel: _angular_core.Signal<string>;
|
|
5859
|
+
readonly layoutMode: _angular_core.Signal<AXConversationMediaGalleryLayoutMode>;
|
|
5860
|
+
readonly videoRows: _angular_core.Signal<AXConversationMediaGalleryRow<_acorex_components_conversation.AXConversationVideoMediaItem>[]>;
|
|
5861
|
+
copy(): Promise<string>;
|
|
5862
|
+
constructor();
|
|
5863
|
+
onPlayingChange(index: number, playing: boolean): void;
|
|
5864
|
+
onTimeUpdate(index: number, time: number): void;
|
|
5865
|
+
onDurationChange(index: number, duration: number): void;
|
|
5866
|
+
onPlaybackEnded(index: number): void;
|
|
5867
|
+
onPlaybackError(): void;
|
|
5868
|
+
togglePlay(): void;
|
|
5869
|
+
private pauseOtherVideos;
|
|
5870
|
+
private pausePlayback;
|
|
5871
|
+
private syncInfoBarBanner;
|
|
5872
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationVideoRendererComponent, never>;
|
|
5873
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXConversationVideoRendererComponent, "ax-conversation-video-renderer", never, { "message": { "alias": "message"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
5815
5874
|
}
|
|
5816
5875
|
|
|
5817
|
-
|
|
5818
|
-
* Message Utilities Service
|
|
5819
|
-
* Helper functions for message formatting and display
|
|
5820
|
-
*/
|
|
5876
|
+
declare function normalizeVideoPayload(payload: AXConversationVideoPayload): AXConversationVideoPayload;
|
|
5821
5877
|
|
|
5822
|
-
declare class
|
|
5823
|
-
|
|
5824
|
-
|
|
5825
|
-
|
|
5826
|
-
|
|
5827
|
-
|
|
5828
|
-
|
|
5829
|
-
|
|
5830
|
-
|
|
5831
|
-
|
|
5832
|
-
|
|
5833
|
-
|
|
5834
|
-
|
|
5835
|
-
|
|
5836
|
-
|
|
5837
|
-
|
|
5838
|
-
|
|
5839
|
-
|
|
5840
|
-
|
|
5841
|
-
|
|
5842
|
-
|
|
5843
|
-
|
|
5844
|
-
|
|
5845
|
-
|
|
5846
|
-
|
|
5878
|
+
declare class AXConversationVoiceRendererComponent extends AXConversationMessageRendererCopyHostComponent {
|
|
5879
|
+
private readonly fileTypes;
|
|
5880
|
+
private readonly translation;
|
|
5881
|
+
private readonly platformId;
|
|
5882
|
+
private readonly destroyRef;
|
|
5883
|
+
private readonly infoBarService;
|
|
5884
|
+
private readonly conversationService;
|
|
5885
|
+
private readonly waveRef;
|
|
5886
|
+
private readonly _contentState;
|
|
5887
|
+
readonly message: _angular_core.InputSignal<AXConversationMessage>;
|
|
5888
|
+
readonly rendererState: _angular_core.Signal<{
|
|
5889
|
+
deliveryStatus: _acorex_components_conversation.AXConversationMessageStatus;
|
|
5890
|
+
contentState: AXConversationMessageRendererContentState;
|
|
5891
|
+
}>;
|
|
5892
|
+
readonly isPlaying: _angular_core.WritableSignal<boolean>;
|
|
5893
|
+
readonly currentTime: _angular_core.WritableSignal<number>;
|
|
5894
|
+
readonly duration: _angular_core.WritableSignal<number>;
|
|
5895
|
+
readonly playbackSpeed: _angular_core.WritableSignal<number>;
|
|
5896
|
+
readonly isMuted: _angular_core.WritableSignal<boolean>;
|
|
5897
|
+
private readonly speeds;
|
|
5898
|
+
private lastBannerSyncAt;
|
|
5899
|
+
private readonly bannerTogglePlay;
|
|
5900
|
+
private readonly bannerClose;
|
|
5901
|
+
private readonly bannerCycleSpeed;
|
|
5902
|
+
private readonly bannerToggleMute;
|
|
5903
|
+
readonly payload: _angular_core.Signal<AXConversationVoicePayload>;
|
|
5904
|
+
private readonly mediaReference;
|
|
5905
|
+
private readonly resolvedUrl;
|
|
5906
|
+
readonly voiceUrl: _angular_core.Signal<string>;
|
|
5907
|
+
readonly isOwnMessage: _angular_core.Signal<boolean>;
|
|
5908
|
+
readonly waveConfig: _angular_core.Signal<AXWaveConfig>;
|
|
5909
|
+
readonly displayDuration: _angular_core.Signal<number>;
|
|
5910
|
+
readonly timeLabel: _angular_core.Signal<string>;
|
|
5911
|
+
readonly voiceLoadErrorLabel: _angular_core.Signal<string>;
|
|
5912
|
+
copy(): Promise<string>;
|
|
5913
|
+
constructor();
|
|
5914
|
+
togglePlay(): void;
|
|
5915
|
+
cyclePlaybackSpeed(): void;
|
|
5916
|
+
toggleMute(): void;
|
|
5917
|
+
onWaveStatusChanged(event: AXAudioWaveChangeEvent): void;
|
|
5918
|
+
onEnded(): void;
|
|
5919
|
+
onError(): void;
|
|
5920
|
+
private pausePlayback;
|
|
5921
|
+
private isWavePlayable;
|
|
5922
|
+
private applyPlaybackSettings;
|
|
5923
|
+
private syncPlaybackTimeFromWave;
|
|
5924
|
+
private syncInfoBarBanner;
|
|
5925
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationVoiceRendererComponent, never>;
|
|
5926
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXConversationVoiceRendererComponent, "ax-conversation-voice-renderer", never, { "message": { "alias": "message"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
5847
5927
|
}
|
|
5848
5928
|
|
|
5849
5929
|
/**
|
|
5850
|
-
*
|
|
5851
|
-
*
|
|
5930
|
+
* Default Message Actions Plugin
|
|
5931
|
+
* Individual message action constants
|
|
5852
5932
|
*/
|
|
5853
5933
|
|
|
5854
5934
|
/**
|
|
5855
|
-
*
|
|
5935
|
+
* Reply to message
|
|
5856
5936
|
*/
|
|
5857
|
-
|
|
5858
|
-
/** Whether validation passed */
|
|
5859
|
-
valid: boolean;
|
|
5860
|
-
/** Error message if validation failed */
|
|
5861
|
-
error?: string;
|
|
5862
|
-
/** Error code for programmatic handling */
|
|
5863
|
-
errorCode?: string;
|
|
5864
|
-
}
|
|
5937
|
+
declare const AX_CONVERSATION_MESSAGE_REPLY_ACTION: AXConversationMessageAction;
|
|
5865
5938
|
/**
|
|
5866
|
-
*
|
|
5867
|
-
* @param text - Text to validate
|
|
5868
|
-
* @param config - Configuration for validation rules
|
|
5869
|
-
* @returns Validation result
|
|
5939
|
+
* Edit own message (text only)
|
|
5870
5940
|
*/
|
|
5871
|
-
declare
|
|
5941
|
+
declare const AX_CONVERSATION_MESSAGE_EDIT_ACTION: AXConversationMessageAction;
|
|
5872
5942
|
/**
|
|
5873
|
-
*
|
|
5874
|
-
* @param conversationId - Conversation ID to validate
|
|
5875
|
-
* @returns Validation result
|
|
5943
|
+
* Delete own message
|
|
5876
5944
|
*/
|
|
5877
|
-
declare
|
|
5945
|
+
declare const AX_CONVERSATION_MESSAGE_DELETE_ACTION: AXConversationMessageAction;
|
|
5878
5946
|
/**
|
|
5879
|
-
*
|
|
5880
|
-
* @param type - Message type to validate
|
|
5881
|
-
* @returns Validation result
|
|
5947
|
+
* Forward message to another conversation
|
|
5882
5948
|
*/
|
|
5883
|
-
declare
|
|
5949
|
+
declare const AX_CONVERSATION_MESSAGE_FORWARD_ACTION: AXConversationMessageAction;
|
|
5950
|
+
|
|
5951
|
+
declare const AX_CONVERSATION_TEXT_RENDERER: AXConversationMessageRenderer;
|
|
5952
|
+
|
|
5953
|
+
declare const AX_CONVERSATION_IMAGE_RENDERER: AXConversationMessageRenderer;
|
|
5954
|
+
|
|
5955
|
+
declare const AX_CONVERSATION_VIDEO_RENDERER: AXConversationMessageRenderer;
|
|
5956
|
+
|
|
5957
|
+
declare const AX_CONVERSATION_AUDIO_RENDERER: AXConversationMessageRenderer;
|
|
5958
|
+
|
|
5959
|
+
declare const AX_CONVERSATION_VOICE_RENDERER: AXConversationMessageRenderer;
|
|
5960
|
+
|
|
5961
|
+
declare const AX_CONVERSATION_FILE_RENDERER: AXConversationMessageRenderer;
|
|
5962
|
+
|
|
5963
|
+
declare const AX_CONVERSATION_LOCATION_RENDERER: AXConversationMessageRenderer;
|
|
5964
|
+
|
|
5965
|
+
declare const AX_CONVERSATION_STICKER_RENDERER: AXConversationMessageRenderer;
|
|
5966
|
+
|
|
5967
|
+
declare const AX_CONVERSATION_SYSTEM_RENDERER: AXConversationMessageRenderer;
|
|
5968
|
+
|
|
5969
|
+
declare const AX_CONVERSATION_FALLBACK_RENDERER: AXConversationMessageRenderer;
|
|
5970
|
+
|
|
5884
5971
|
/**
|
|
5885
|
-
*
|
|
5886
|
-
*
|
|
5887
|
-
* @param type - Message type
|
|
5888
|
-
* @returns Validation result
|
|
5972
|
+
* Default Conversation Item Actions Plugin
|
|
5973
|
+
* Individual action constants with AX_ prefix naming convention
|
|
5889
5974
|
*/
|
|
5890
|
-
|
|
5975
|
+
|
|
5891
5976
|
/**
|
|
5892
|
-
*
|
|
5893
|
-
* @param userId - User ID to validate
|
|
5894
|
-
* @returns Validation result
|
|
5977
|
+
* Mute/Unmute conversation notifications
|
|
5895
5978
|
*/
|
|
5896
|
-
declare
|
|
5979
|
+
declare const AX_CONVERSATION_ITEM_MUTE_ACTION: AXConversationItemAction;
|
|
5897
5980
|
/**
|
|
5898
|
-
*
|
|
5899
|
-
* @param userIds - Array of user IDs to validate
|
|
5900
|
-
* @param minCount - Minimum number of users required
|
|
5901
|
-
* @param maxCount - Maximum number of users allowed
|
|
5902
|
-
* @returns Validation result
|
|
5981
|
+
* Pin/Unpin conversation to top
|
|
5903
5982
|
*/
|
|
5904
|
-
declare
|
|
5983
|
+
declare const AX_CONVERSATION_ITEM_PIN_ACTION: AXConversationItemAction;
|
|
5905
5984
|
/**
|
|
5906
|
-
*
|
|
5907
|
-
* @param email - Email to validate
|
|
5908
|
-
* @returns Validation result
|
|
5985
|
+
* Mark conversation as read
|
|
5909
5986
|
*/
|
|
5910
|
-
declare
|
|
5987
|
+
declare const AX_CONVERSATION_ITEM_MARK_READ_ACTION: AXConversationItemAction;
|
|
5911
5988
|
/**
|
|
5912
|
-
*
|
|
5913
|
-
* @param url - URL to validate
|
|
5914
|
-
* @returns Validation result
|
|
5989
|
+
* Divider separator before destructive actions
|
|
5915
5990
|
*/
|
|
5916
|
-
declare
|
|
5991
|
+
declare const AX_CONVERSATION_ITEM_DIVIDER: AXConversationItemAction;
|
|
5917
5992
|
/**
|
|
5918
|
-
*
|
|
5919
|
-
*
|
|
5920
|
-
*
|
|
5921
|
-
* @returns Sanitized input
|
|
5993
|
+
* Delete/Leave conversation action (smart action that adapts based on conversation type)
|
|
5994
|
+
* - Private: "Delete" - Deletes the conversation
|
|
5995
|
+
* - Group/Channel: "Leave & Delete" - Leaves the group and removes it from list
|
|
5922
5996
|
*/
|
|
5923
|
-
declare
|
|
5997
|
+
declare const AX_CONVERSATION_ITEM_DELETE_ACTION: AXConversationItemAction;
|
|
5924
5998
|
/**
|
|
5925
|
-
*
|
|
5926
|
-
* @param latitude - Latitude to validate
|
|
5927
|
-
* @returns Validation result
|
|
5999
|
+
* Block/Unblock user (private conversations only)
|
|
5928
6000
|
*/
|
|
5929
|
-
declare
|
|
6001
|
+
declare const AX_CONVERSATION_ITEM_BLOCK_ACTION: AXConversationItemAction;
|
|
6002
|
+
|
|
5930
6003
|
/**
|
|
5931
|
-
*
|
|
5932
|
-
*
|
|
5933
|
-
* @returns Validation result
|
|
6004
|
+
* Default Conversation Tabs Plugin
|
|
6005
|
+
* Provides sidebar conversation filter tabs (all, private, groups, etc.)
|
|
5934
6006
|
*/
|
|
5935
|
-
declare function validateLongitude(longitude: number | undefined | null): AXConversationValidationResult;
|
|
5936
6007
|
|
|
5937
|
-
|
|
5938
|
-
declare
|
|
5939
|
-
|
|
5940
|
-
declare
|
|
5941
|
-
|
|
5942
|
-
declare
|
|
6008
|
+
declare const AX_CONVERSATION_TAB_ALL: AXConversationTab;
|
|
6009
|
+
declare const AX_CONVERSATION_TAB_PRIVATE: AXConversationTab;
|
|
6010
|
+
declare const AX_CONVERSATION_TAB_GROUPS: AXConversationTab;
|
|
6011
|
+
declare const AX_CONVERSATION_TAB_CHANNELS: AXConversationTab;
|
|
6012
|
+
declare const AX_CONVERSATION_TAB_BOT: AXConversationTab;
|
|
6013
|
+
declare const AX_CONVERSATION_TAB_UNREAD: AXConversationTab;
|
|
6014
|
+
declare const AX_CONVERSATION_TAB_ARCHIVED: AXConversationTab;
|
|
5943
6015
|
|
|
5944
|
-
|
|
5945
|
-
|
|
5946
|
-
|
|
5947
|
-
|
|
5948
|
-
|
|
5949
|
-
|
|
5950
|
-
|
|
5951
|
-
|
|
5952
|
-
|
|
5953
|
-
|
|
5954
|
-
|
|
5955
|
-
|
|
5956
|
-
|
|
6016
|
+
declare class AXConversationDefaultConversationAvatarComponent {
|
|
6017
|
+
private readonly conversationService;
|
|
6018
|
+
private readonly userAvatarComponent;
|
|
6019
|
+
readonly conversationId: _angular_core.InputSignal<string>;
|
|
6020
|
+
readonly size: _angular_core.InputSignal<number>;
|
|
6021
|
+
private readonly currentUserId;
|
|
6022
|
+
private readonly conversation;
|
|
6023
|
+
readonly peerUserId: _angular_core.Signal<string>;
|
|
6024
|
+
readonly useUserAvatar: _angular_core.Signal<_angular_core.Type<_acorex_components_conversation.AXConversationUserAvatarComponent>>;
|
|
6025
|
+
readonly userAvatarInputs: _angular_core.Signal<{
|
|
6026
|
+
userId: string;
|
|
6027
|
+
size: number;
|
|
6028
|
+
displayName: string;
|
|
6029
|
+
displayAvatar: string;
|
|
6030
|
+
displayIcon: string;
|
|
6031
|
+
}>;
|
|
6032
|
+
readonly filteredUserAvatarInputs: _angular_core.Signal<Record<string, unknown>>;
|
|
6033
|
+
readonly fallbackDisplay: _angular_core.Signal<_acorex_components_conversation.AXConversationAvatarDisplay>;
|
|
6034
|
+
readonly fallbackInitials: _angular_core.Signal<string>;
|
|
6035
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationDefaultConversationAvatarComponent, never>;
|
|
6036
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXConversationDefaultConversationAvatarComponent, "ax-conversation-default-conversation-avatar", never, { "conversationId": { "alias": "conversationId"; "required": true; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
5957
6037
|
}
|
|
5958
|
-
|
|
5959
|
-
|
|
5960
|
-
|
|
5961
|
-
|
|
5962
|
-
|
|
5963
|
-
|
|
5964
|
-
|
|
5965
|
-
|
|
5966
|
-
|
|
5967
|
-
|
|
5968
|
-
|
|
5969
|
-
|
|
5970
|
-
|
|
5971
|
-
|
|
5972
|
-
|
|
6038
|
+
|
|
6039
|
+
/**
|
|
6040
|
+
* Configuration options for conversation module
|
|
6041
|
+
*/
|
|
6042
|
+
interface AXConversationOptions {
|
|
6043
|
+
/** User API implementation (required) */
|
|
6044
|
+
userApi: Type<AXConversationUserApi>;
|
|
6045
|
+
/** Conversation Management API implementation (required) */
|
|
6046
|
+
conversationApi: Type<AXConversationApi>;
|
|
6047
|
+
/** Message API implementation (required) */
|
|
6048
|
+
messageApi: Type<AXConversationMessageApi>;
|
|
6049
|
+
/** Realtime API implementation (optional) */
|
|
6050
|
+
realtimeApi?: Type<AXConversationRealtimeApi>;
|
|
6051
|
+
/** Configuration overrides */
|
|
6052
|
+
config?: Partial<AXConversationConfig>;
|
|
6053
|
+
/** Registry configuration */
|
|
6054
|
+
registry?: Partial<AXConversationRegistryConfiguration>;
|
|
6055
|
+
/** Optional custom avatar components for the entire conversation UI */
|
|
6056
|
+
avatarComponents?: AXConversationAvatarComponents;
|
|
5973
6057
|
}
|
|
5974
|
-
declare
|
|
5975
|
-
|
|
5976
|
-
|
|
5977
|
-
|
|
5978
|
-
|
|
5979
|
-
|
|
5980
|
-
|
|
5981
|
-
|
|
5982
|
-
|
|
5983
|
-
|
|
6058
|
+
declare class AXConversationModule {
|
|
6059
|
+
/**
|
|
6060
|
+
* Configure module for root module with singleton services.
|
|
6061
|
+
* @deprecated Use standalone components with provideConversation()
|
|
6062
|
+
*/
|
|
6063
|
+
static forRoot(options: AXConversationOptions): ModuleWithProviders<AXConversationModule>;
|
|
6064
|
+
/**
|
|
6065
|
+
* Configure module for lazy-loaded feature modules.
|
|
6066
|
+
* Reuses singleton services from root, optionally overrides config/registry.
|
|
6067
|
+
*/
|
|
6068
|
+
static forChild(options?: Omit<AXConversationOptions, 'userApi' | 'conversationApi' | 'messageApi' | 'realtimeApi'>): ModuleWithProviders<AXConversationModule>;
|
|
6069
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationModule, never>;
|
|
6070
|
+
static ɵmod: _angular_core.ɵɵNgModuleDeclaration<AXConversationModule, never, [typeof i1.CommonModule, typeof i2.FormsModule, typeof AXConversationContainerComponent, typeof AXConversationSidebarComponent, typeof AXConversationInfoBarComponent, typeof AXConversationMessageListComponent, typeof AXConversationComposerComponent, typeof AXConversationInfiniteScrollDirective, typeof AXConversationDefaultConversationAvatarComponent], [typeof AXConversationContainerComponent, typeof AXConversationSidebarComponent, typeof AXConversationInfoBarComponent, typeof AXConversationMessageListComponent, typeof AXConversationComposerComponent, typeof AXConversationInfiniteScrollDirective]>;
|
|
6071
|
+
static ɵinj: _angular_core.ɵɵInjectorDeclaration<AXConversationModule>;
|
|
5984
6072
|
}
|
|
5985
|
-
|
|
5986
|
-
|
|
5987
|
-
|
|
5988
|
-
|
|
6073
|
+
/**
|
|
6074
|
+
* Provides conversation functionality for standalone applications.
|
|
6075
|
+
* Use in app config or route providers.
|
|
6076
|
+
*
|
|
6077
|
+
* @example
|
|
6078
|
+
* ```typescript
|
|
6079
|
+
* import {
|
|
6080
|
+
* AXConversationIndexedDbUserApi,
|
|
6081
|
+
* AXConversationIndexedDbConversationApi,
|
|
6082
|
+
* AXConversationIndexedDbMessageApi,
|
|
6083
|
+
* AXConversationIndexedDbRealtimeApi
|
|
6084
|
+
* } from '@acorex/components/conversation';
|
|
6085
|
+
*
|
|
6086
|
+
* export const appConfig: ApplicationConfig = {
|
|
6087
|
+
* providers: [
|
|
6088
|
+
* provideConversation({
|
|
6089
|
+
* userApi: AXConversationIndexedDbUserApi,
|
|
6090
|
+
* conversationApi: AXConversationIndexedDbConversationApi,
|
|
6091
|
+
* messageApi: AXConversationIndexedDbMessageApi,
|
|
6092
|
+
* realtimeApi: AXConversationIndexedDbRealtimeApi,
|
|
6093
|
+
* config: { },
|
|
6094
|
+
* registry: { messageActions: [myCustomAction] }
|
|
6095
|
+
* })
|
|
6096
|
+
* ]
|
|
6097
|
+
* };
|
|
6098
|
+
* ```
|
|
6099
|
+
*/
|
|
6100
|
+
declare function provideConversation(options: AXConversationOptions): Provider[];
|
|
5989
6101
|
|
|
5990
6102
|
/**
|
|
5991
6103
|
* Error Message Constants
|
|
@@ -6379,5 +6491,5 @@ declare function getErrorMessage(code: string, params?: Record<string, string |
|
|
|
6379
6491
|
*/
|
|
6380
6492
|
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'];
|
|
6381
6493
|
|
|
6382
|
-
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_ROOM_PREFERENCES, 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, createPickerUploadItemId, 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, usesDefaultMessageListWallpaper, validateConversationId, validateEmail, validateLatitude, validateLongitude, validateMessagePayload, validateMessageText, validateMessageType, validateUrl, validateUserId, validateUserIds, videoItemFromUpload };
|
|
6383
|
-
export type { AXConversation, AXConversationApiError, AXConversationApiLogEntry, AXConversationApiName, AXConversationAudioMediaItem, AXConversationAudioPayload, AXConversationAvatarComponents, AXConversationAvatarDisplay, AXConversationAvatarKind, AXConversationBlockReportReason, AXConversationCleanupPickerUploadsOptions, AXConversationComposerAction, AXConversationComposerActionComponent, AXConversationComposerActionContext, AXConversationComposerGenerationPhase, AXConversationComposerPickerUploadItem, AXConversationComposerPrimaryButtonMode, AXConversationComposerTab, AXConversationComposerTabFeature, AXConversationConfig, 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, AXConversationOptions, AXConversationPaginatedResult, AXConversationPagination, AXConversationPaginationState, AXConversationParticipant, AXConversationParticipantRole, AXConversationParticipantUpdate, AXConversationPinnedMessage, AXConversationPlaybackBannerInputs, AXConversationPollOption, AXConversationPollPayload, AXConversationPresenceStatus, AXConversationPresenceUpdate, AXConversationReaction, AXConversationReadReceipt, AXConversationRegistryComponentRef, AXConversationRegistryConfiguration, AXConversationRegistryItem, AXConversationRoomPreferences, AXConversationRoomPreferencesMap, AXConversationSendMessageCommand, AXConversationSendMessageOptions, AXConversationSendMessageUploadSource, AXConversationSettingsUpdate, AXConversationSidebarTabsOrientation, AXConversationSort, AXConversationStickerPayload, AXConversationSystemPayload, AXConversationTab, AXConversationTextFormat, AXConversationTextPayload, AXConversationType, AXConversationTypingIndicator, AXConversationUpdateData, AXConversationUploadOptions, AXConversationUploaderFilePreview, AXConversationUploaderReference, AXConversationUploaderResult, AXConversationUser, AXConversationUserAvatarComponent, AXConversationUserPresence, AXConversationUserProfile, AXConversationUserProfileUpdate, AXConversationUserSearchFilters, AXConversationValidationResult, AXConversationVideoMediaItem, AXConversationVideoPayload, AXConversationVoicePayload };
|
|
6494
|
+
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, AXConversationPickerOptionsComponent, 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_ROOM_PREFERENCES, 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, createPickerUploadItemId, 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, usesDefaultMessageListWallpaper, validateConversationId, validateEmail, validateLatitude, validateLongitude, validateMessagePayload, validateMessageText, validateMessageType, validateUrl, validateUserId, validateUserIds, videoItemFromUpload };
|
|
6495
|
+
export type { AXConversation, AXConversationApiError, AXConversationApiLogEntry, AXConversationApiName, AXConversationAudioMediaItem, AXConversationAudioPayload, AXConversationAvatarComponents, AXConversationAvatarDisplay, AXConversationAvatarKind, AXConversationBlockReportReason, AXConversationCleanupPickerUploadsOptions, AXConversationComposerAction, AXConversationComposerActionComponent, AXConversationComposerActionContext, AXConversationComposerGenerationPhase, AXConversationComposerPickerUploadItem, AXConversationComposerPrimaryButtonMode, AXConversationComposerTab, AXConversationComposerTabFeature, AXConversationConfig, AXConversationConnectionStatus, AXConversationConversationAvatarComponent, AXConversationCreateData, AXConversationDateSeparatorKind, 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, AXConversationMessageClusterRole, AXConversationMessageDateGroup, AXConversationMessageForwardData, AXConversationMessageInfoBarBannerComponent, AXConversationMessageListBackground, AXConversationMessageListBackgroundPreset, AXConversationMessageListEmptyComponent, AXConversationMessageListThemeBackground, AXConversationMessagePayload, AXConversationMessageRenderer, AXConversationMessageRendererCapabilities, AXConversationMessageRendererComponent, AXConversationMessageRendererContentState, AXConversationMessageRendererState, AXConversationMessageSearchFilters, AXConversationMessageStatus, AXConversationMessageType, AXConversationMetadata, AXConversationOptions, AXConversationOutletSkeleton, AXConversationPaginatedResult, AXConversationPagination, AXConversationPaginationState, AXConversationParticipant, AXConversationParticipantRole, AXConversationParticipantUpdate, AXConversationPinnedMessage, AXConversationPlaybackBannerInputs, AXConversationPollOption, AXConversationPollPayload, AXConversationPresenceStatus, AXConversationPresenceUpdate, AXConversationReaction, AXConversationReadReceipt, AXConversationRegistryComponentRef, AXConversationRegistryConfiguration, AXConversationRegistryItem, AXConversationRoomPreferences, AXConversationRoomPreferencesMap, AXConversationSendMessageCommand, AXConversationSendMessageOptions, AXConversationSendMessageUploadSource, AXConversationSettingsUpdate, AXConversationSidebarTabsOrientation, AXConversationSort, AXConversationStickerPayload, AXConversationSystemPayload, AXConversationTab, AXConversationTextFormat, AXConversationTextPayload, AXConversationType, AXConversationTypingIndicator, AXConversationUpdateData, AXConversationUploadOptions, AXConversationUploaderFilePreview, AXConversationUploaderReference, AXConversationUploaderResult, AXConversationUser, AXConversationUserAvatarComponent, AXConversationUserPresence, AXConversationUserProfile, AXConversationUserProfileUpdate, AXConversationUserSearchFilters, AXConversationValidationResult, AXConversationVideoMediaItem, AXConversationVideoPayload, AXConversationVoicePayload };
|