@acorex/components 20.7.62 → 20.8.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,13 +1,12 @@
1
1
  import * as _acorex_components_conversation2 from '@acorex/components/conversation2';
2
2
  import * as _angular_core from '@angular/core';
3
3
  import { OnDestroy, ViewContainerRef, Type, InputSignal, WritableSignal, Signal, Provider, InjectionToken, OnInit, EventEmitter, TemplateRef, ModuleWithProviders } from '@angular/core';
4
- import { AXComponentCloseEvent, AXHtmlEvent, AXDataSource, AXClosableComponent } from '@acorex/cdk/common';
4
+ import { AXComponentCloseEvent, AXHtmlEvent, AXDataSource, AXPlacement, AXClosableComponent } from '@acorex/cdk/common';
5
5
  import { AXFileUploadOptions, AXUploadResult, AXUploadReference, AXUploaderService, AXUploaderFileChangeEvent } from '@acorex/cdk/uploader';
6
6
  import * as _acorex_components_popup from '@acorex/components/popup';
7
7
  import { AXPopupService, AXPopupRef } from '@acorex/components/popup';
8
8
  import * as rxjs from 'rxjs';
9
9
  import { Observable, BehaviorSubject, Subject } from 'rxjs';
10
- import { AXPopoverComponent } from '@acorex/components/popover';
11
10
  import { AXListComponent } from '@acorex/components/list';
12
11
  import { AXDialogService } from '@acorex/components/dialog';
13
12
  import { AXContextMenuOpeningEvent, AXContextMenuItemsClickEvent } from '@acorex/components/menu';
@@ -367,6 +366,16 @@ interface AXDeleteMessageCommand {
367
366
  */
368
367
  type AXParticipantRole = 'admin' | 'moderator' | 'member';
369
368
  type AXParticipantStatus = 'online' | 'offline' | 'away';
369
+ /** Extended profile fields shown in private-chat info panels. */
370
+ interface AXUserProfile {
371
+ bio?: string;
372
+ phone?: string;
373
+ email?: string;
374
+ username?: string;
375
+ location?: string;
376
+ company?: string;
377
+ title?: string;
378
+ }
370
379
  interface AXParticipant {
371
380
  /** Unique identifier for the participant */
372
381
  id: string;
@@ -374,9 +383,11 @@ interface AXParticipant {
374
383
  name: string;
375
384
  /**
376
385
  * Short line shown under the name in lists (e.g. job title, status line).
377
- * Distinct from long-form bio in optional `metadata` (e.g. profile fields).
386
+ * Distinct from long-form bio in optional `profile.bio`.
378
387
  */
379
388
  description?: string;
389
+ /** Optional extended profile details for private chats. */
390
+ profile?: AXUserProfile;
380
391
  /** Avatar/profile image URL */
381
392
  avatar?: string;
382
393
  /**
@@ -2696,11 +2707,13 @@ interface AXUserProfileUpdate {
2696
2707
  avatar?: string;
2697
2708
  /** Short line under the name in lists (e.g. job title) */
2698
2709
  description?: string;
2699
- /** Bio/status text */
2710
+ /** Extended profile fields */
2711
+ profile?: Partial<AXUserProfile>;
2712
+ /** @deprecated Prefer `profile.bio` */
2700
2713
  bio?: string;
2701
- /** Phone number */
2714
+ /** @deprecated Prefer `profile.phone` */
2702
2715
  phone?: string;
2703
- /** Email */
2716
+ /** @deprecated Prefer `profile.email` */
2704
2717
  email?: string;
2705
2718
  /** Custom fields */
2706
2719
  custom?: Record<string, unknown>;
@@ -3201,6 +3214,10 @@ declare class AXInfoBarService {
3201
3214
  * Reset info-bar overlays when the active conversation changes.
3202
3215
  */
3203
3216
  onConversationChanged(): void;
3217
+ /**
3218
+ * Open the Telegram-style conversation info panel for the active (or given) conversation.
3219
+ */
3220
+ openConversationInfoPanel(conversation?: AXConversation): Promise<void>;
3204
3221
  /**
3205
3222
  * Get actions for the active conversation
3206
3223
  */
@@ -3743,13 +3760,13 @@ declare class AXInfoBarComponent {
3743
3760
  readonly activeComponent: _angular_core.Signal<AXInfoBarActiveComponent>;
3744
3761
  /** Active banner from service */
3745
3762
  readonly activeBanner: _angular_core.Signal<AXInfoBarActiveBanner>;
3746
- /** Members popover reference */
3747
- readonly membersPopoverRef: _angular_core.Signal<AXPopoverComponent>;
3748
- /** Members popover target element */
3763
+ /** Members popover target element — retained for API compatibility */
3749
3764
  readonly membersPopoverTarget: _angular_core.WritableSignal<HTMLElement>;
3750
3765
  /** Loading state for async actions */
3751
3766
  readonly actionLoading: _angular_core.WritableSignal<boolean>;
3752
- /** Avatar clicked event */
3767
+ /** Info area clicked opens conversation profile panel */
3768
+ readonly infoClick: _angular_core.OutputEmitterRef<void>;
3769
+ /** @deprecated Use infoClick — kept for backward compatibility */
3753
3770
  readonly avatarClick: _angular_core.OutputEmitterRef<void>;
3754
3771
  /** Search clicked event */
3755
3772
  readonly searchClick: _angular_core.OutputEmitterRef<void>;
@@ -3765,10 +3782,8 @@ declare class AXInfoBarComponent {
3765
3782
  getStatus(conversation: AXConversation): 'online' | 'offline' | 'away' | undefined;
3766
3783
  /** Get subtitle text - delegate to utils */
3767
3784
  getSubtitle(conversation: AXConversation): string;
3768
- /** Handle avatar click */
3769
- onAvatarClick(): void;
3770
- /** Handle members click - open popover */
3771
- onMembersClick(event: MouseEvent): void;
3785
+ /** Open conversation info panel when the left info area is clicked */
3786
+ onInfoLeftClick(): void;
3772
3787
  /** Handle inline action click */
3773
3788
  onInlineActionClick(actionId: string): Promise<void>;
3774
3789
  /** Get inputs for dynamic component */
@@ -3782,7 +3797,7 @@ declare class AXInfoBarComponent {
3782
3797
  /** Handle menu item click */
3783
3798
  onMenuItemClick(item: DropdownMenuItem): Promise<void>;
3784
3799
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXInfoBarComponent, never>;
3785
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXInfoBarComponent, "ax-conversation-info-bar", never, {}, { "avatarClick": "avatarClick"; "searchClick": "searchClick"; "searchQuery": "searchQuery"; "menuItemAction": "menuItemAction"; }, never, ["ax-prefix"], true, never>;
3800
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXInfoBarComponent, "ax-conversation-info-bar", never, {}, { "infoClick": "infoClick"; "avatarClick": "avatarClick"; "searchClick": "searchClick"; "searchQuery": "searchQuery"; "menuItemAction": "menuItemAction"; }, never, ["ax-prefix"], true, never>;
3786
3801
  }
3787
3802
 
3788
3803
  declare class AXForwardMessageDialogComponent implements OnInit {
@@ -3812,9 +3827,6 @@ declare class AXForwardMessageDialogComponent implements OnInit {
3812
3827
  onForwardSearchChange(value: string): void;
3813
3828
  conversationFromItem(item: unknown): AXConversation | null;
3814
3829
  isSelected(conversationId: string): boolean;
3815
- getInitials(name: string): string;
3816
- getConversationAvatar(conversation: AXConversation): string | undefined;
3817
- getConversationAvatarIcon(conversation: AXConversation): string | undefined;
3818
3830
  private getFilteredConversationsForForward;
3819
3831
  onCancel(): void;
3820
3832
  onForward(): Promise<void>;
@@ -3823,36 +3835,28 @@ declare class AXForwardMessageDialogComponent implements OnInit {
3823
3835
  }
3824
3836
 
3825
3837
  /**
3826
- * Shared UI for message bubble bodies: sending / failed (with retry) and content load errors,
3827
- * driven by {@link AXMessageRendererState}.
3838
+ * Shared UI for message bubble bodies: failed delivery (with retry) and content load errors.
3839
+ * Sending state is shown in the message-list footer only — not here (avoids layout glitch in media bubbles).
3828
3840
  */
3829
3841
  declare class AXConversationMessageRendererStateComponent {
3830
3842
  private readonly conversation;
3831
3843
  readonly translation: AXTranslationService;
3832
3844
  readonly rendererState: _angular_core.InputSignal<AXMessageRendererState>;
3833
3845
  readonly message: _angular_core.InputSignal<AXMessage>;
3834
- /** Overrides default text when {@link AXMessageRendererState.contentState} is `error`. */
3835
3846
  readonly contentErrorLabel: _angular_core.InputSignal<string>;
3836
- /** Overrides default text when delivery failed. */
3837
3847
  readonly deliveryFailedLabel: _angular_core.InputSignal<string>;
3838
- /** Set false when the renderer shows content errors inline (e.g. inline media error state). */
3839
3848
  readonly showContentErrorChrome: _angular_core.InputSignal<boolean>;
3840
- /** `inline` matches legacy media rows (e.g. audio): compact danger text under the player. */
3841
3849
  readonly contentErrorStyle: _angular_core.InputSignal<"inline" | "banner">;
3842
- /** Icon class for content error (e.g. `fa-light fa-music` for audio). */
3843
3850
  readonly contentErrorIconClass: _angular_core.InputSignal<string>;
3844
- /** `below`: render after main bubble body (typical for media). */
3845
3851
  readonly placement: _angular_core.InputSignal<"above" | "below">;
3846
3852
  readonly contentRetryEnabled: _angular_core.InputSignal<boolean>;
3847
3853
  readonly contentRetry: _angular_core.OutputEmitterRef<void>;
3848
3854
  readonly retryBusy: _angular_core.WritableSignal<boolean>;
3849
3855
  private readonly currentUser;
3850
3856
  private readonly isOwn;
3851
- readonly showSending: _angular_core.Signal<boolean>;
3852
3857
  readonly showFailed: _angular_core.Signal<boolean>;
3853
3858
  readonly showContentError: _angular_core.Signal<boolean>;
3854
3859
  readonly hasVisibleChrome: _angular_core.Signal<boolean>;
3855
- readonly showRetryButton: _angular_core.Signal<boolean>;
3856
3860
  readonly contentErrorText: _angular_core.Signal<string>;
3857
3861
  readonly deliveryFailedText: _angular_core.Signal<string>;
3858
3862
  onRetry(): Promise<void>;
@@ -3904,6 +3908,7 @@ declare abstract class AXMessageRendererCopyHostComponent implements AXMessageRe
3904
3908
 
3905
3909
  declare class AXAudioRendererComponent extends AXMessageRendererCopyHostComponent {
3906
3910
  private readonly fileTypes;
3911
+ private readonly translation;
3907
3912
  private readonly destroyRef;
3908
3913
  private readonly infoBarService;
3909
3914
  private readonly attachments;
@@ -3920,6 +3925,7 @@ declare class AXAudioRendererComponent extends AXMessageRendererCopyHostComponen
3920
3925
  readonly payload: _angular_core.Signal<AXAudioPayload>;
3921
3926
  readonly audios: _angular_core.Signal<AXAudioMediaItem[]>;
3922
3927
  readonly caption: _angular_core.Signal<string>;
3928
+ readonly audioLoadErrorLabel: _angular_core.Signal<string>;
3923
3929
  copy(): Promise<string>;
3924
3930
  constructor();
3925
3931
  onPlayingChange(index: number, playing: boolean): void;
@@ -4058,15 +4064,17 @@ declare class AXTextRendererComponent extends AXMessageRendererCopyHostComponent
4058
4064
 
4059
4065
  declare class AXVideoRendererComponent extends AXMessageRendererCopyHostComponent {
4060
4066
  private readonly fileTypes;
4067
+ private readonly translation;
4061
4068
  private readonly platformId;
4062
4069
  private readonly destroyRef;
4063
4070
  private readonly infoBarService;
4064
4071
  private readonly attachments;
4072
+ private readonly _contentState;
4065
4073
  private readonly activeVideoIndex;
4066
4074
  readonly message: _angular_core.InputSignal<AXMessage>;
4067
4075
  readonly rendererState: _angular_core.Signal<{
4068
4076
  deliveryStatus: AXMessageStatus;
4069
- contentState: "ready";
4077
+ contentState: AXMessageRendererContentState;
4070
4078
  }>;
4071
4079
  readonly isPlaying: _angular_core.WritableSignal<boolean>;
4072
4080
  readonly currentTime: _angular_core.WritableSignal<number>;
@@ -4074,12 +4082,14 @@ declare class AXVideoRendererComponent extends AXMessageRendererCopyHostComponen
4074
4082
  readonly payload: _angular_core.Signal<AXVideoPayload>;
4075
4083
  readonly videos: _angular_core.Signal<AXVideoMediaItem[]>;
4076
4084
  readonly caption: _angular_core.Signal<string>;
4085
+ readonly videoLoadErrorLabel: _angular_core.Signal<string>;
4077
4086
  copy(): Promise<string>;
4078
4087
  constructor();
4079
4088
  onPlayingChange(index: number, playing: boolean): void;
4080
4089
  onTimeUpdate(index: number, time: number): void;
4081
4090
  onDurationChange(index: number, duration: number): void;
4082
4091
  onPlaybackEnded(index: number): void;
4092
+ onPlaybackError(): void;
4083
4093
  togglePlay(): void;
4084
4094
  private pauseOtherVideos;
4085
4095
  private pausePlayback;
@@ -4090,6 +4100,7 @@ declare class AXVideoRendererComponent extends AXMessageRendererCopyHostComponen
4090
4100
 
4091
4101
  declare class AXVoiceRendererComponent extends AXMessageRendererCopyHostComponent {
4092
4102
  private readonly fileTypes;
4103
+ private readonly translation;
4093
4104
  private readonly platformId;
4094
4105
  private readonly destroyRef;
4095
4106
  private readonly infoBarService;
@@ -4112,6 +4123,7 @@ declare class AXVoiceRendererComponent extends AXMessageRendererCopyHostComponen
4112
4123
  readonly waveformBars: _angular_core.Signal<number[]>;
4113
4124
  readonly activeBarIndex: _angular_core.Signal<number>;
4114
4125
  readonly timeLabel: _angular_core.Signal<string>;
4126
+ readonly voiceLoadErrorLabel: _angular_core.Signal<string>;
4115
4127
  copy(): Promise<string>;
4116
4128
  constructor();
4117
4129
  togglePlay(): void;
@@ -4144,6 +4156,7 @@ declare class AXMessageListComponent implements OnDestroy {
4144
4156
  private readonly toast;
4145
4157
  private readonly infoBarService;
4146
4158
  private readonly translation;
4159
+ private readonly document;
4147
4160
  protected readonly config: Required<AXConversationConfig>;
4148
4161
  /**
4149
4162
  * Background for the message list scroll area from config, or the built-in soft gradient when unset/empty.
@@ -4158,6 +4171,7 @@ declare class AXMessageListComponent implements OnDestroy {
4158
4171
  private readonly forwardCounts;
4159
4172
  readonly reactionPickerTarget: _angular_core.WritableSignal<string>;
4160
4173
  readonly reactionPickerElement: _angular_core.WritableSignal<HTMLElement>;
4174
+ readonly reactionPickerPlacement: _angular_core.WritableSignal<AXPlacement>;
4161
4175
  readonly reactionPopover: _angular_core.Signal<any>;
4162
4176
  /** Message id whose context menu is open (for active row styling). */
4163
4177
  readonly contextMenuMessageId: _angular_core.WritableSignal<string>;
@@ -4251,7 +4265,7 @@ declare class AXMessageListComponent implements OnDestroy {
4251
4265
  hasReacted: boolean;
4252
4266
  }): string;
4253
4267
  /** Toggle reaction picker */
4254
- toggleReactionPicker(messageId: string, event: MouseEvent): void;
4268
+ toggleReactionPicker(message: AXMessage, event: MouseEvent): void;
4255
4269
  /** Close reaction picker */
4256
4270
  closeReactionPicker(): void;
4257
4271
  /** Check if current user has reacted with specific emoji */
@@ -4499,7 +4513,6 @@ declare class AXNewConversationDialogComponent extends AXBasePageComponent {
4499
4513
  onSearchChange(value: string): void;
4500
4514
  isUserSelected(id: string): boolean;
4501
4515
  userFromItem(item: unknown): AXParticipant | null;
4502
- getInitials(name: string): string;
4503
4516
  private filteredUsers;
4504
4517
  onCreateConversation(): Promise<void>;
4505
4518
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXNewConversationDialogComponent, never>;
@@ -5416,73 +5429,127 @@ declare function createObjectUrl(platformId: object, blob: Blob): string;
5416
5429
  declare function revokeObjectUrl(platformId: object, url: string): void;
5417
5430
  declare function createLocalPreviewUrl(fileService: AXFileService, platformId: object, source: File | Blob, messageType: AXMessageType): Promise<string | undefined>;
5418
5431
 
5432
+ interface AXConversationInfoProfileField {
5433
+ id: string;
5434
+ labelKey: string;
5435
+ value: string;
5436
+ icon: string;
5437
+ }
5438
+ type AXConversationMediaCategoryId = 'image' | 'video' | 'file' | 'audio' | 'voice' | 'sticker' | 'location' | 'link';
5439
+ interface AXConversationMediaCategory {
5440
+ id: AXConversationMediaCategoryId;
5441
+ labelKey: string;
5442
+ countLabelKey: string;
5443
+ icon: string;
5444
+ count: number;
5445
+ }
5446
+ interface AXConversationMediaGalleryTile {
5447
+ key: string;
5448
+ message: AXMessage;
5449
+ kind: 'image' | 'video' | 'sticker';
5450
+ image?: AXImageMediaItem;
5451
+ video?: AXVideoMediaItem;
5452
+ stickerUrl?: string;
5453
+ stickerAlt?: string;
5454
+ }
5455
+ declare function getMessageVideoItems(message: AXMessage): AXVideoMediaItem[];
5456
+ declare function getMessageAudioItems(message: AXMessage): AXAudioMediaItem[];
5457
+
5458
+ interface AXInfoPanelQuickAction {
5459
+ id: string;
5460
+ labelKey: string;
5461
+ icon: string;
5462
+ danger?: boolean;
5463
+ }
5419
5464
  declare class AXConversationInfoPanelComponent extends AXClosableComponent implements OnInit, OnDestroy {
5420
5465
  private readonly toastService;
5421
5466
  readonly translation: AXTranslationService;
5422
- /** Event emitted when popup should close */
5467
+ private readonly injectedConversationService;
5423
5468
  readonly onClosed: _angular_core.OutputEmitterRef<AXComponentCloseEvent>;
5424
- /** Conversation (typically passed via popup data). */
5425
5469
  conversation: AXConversation;
5426
5470
  conversationService: AXConversationService;
5427
- /**
5428
- * Conversation service used by panel actions.
5429
- * Kept assignable for backward compatibility with popup `data`,
5430
- * but defaults to DI so this panel works without explicit data wiring.
5431
- */
5432
- notificationsEnabled: boolean;
5433
- showPreview: boolean;
5471
+ readonly activeTab: _angular_core.WritableSignal<"profile" | "manage">;
5472
+ readonly showMemberSearch: _angular_core.WritableSignal<boolean>;
5473
+ readonly panelView: _angular_core.WritableSignal<"media" | "main">;
5474
+ readonly selectedMediaCategory: _angular_core.WritableSignal<AXConversationMediaCategory>;
5475
+ readonly conversationMessages: _angular_core.WritableSignal<AXMessage[]>;
5476
+ readonly loadingMessages: _angular_core.WritableSignal<boolean>;
5477
+ readonly memberSearchQuery: _angular_core.WritableSignal<string>;
5434
5478
  archived: boolean;
5435
5479
  private initialNotifications;
5436
- private initialShowPreview;
5437
5480
  private initialArchived;
5438
- memberSearchQuery: string;
5439
- activeTab: string;
5440
5481
  editTitle: string;
5441
5482
  editAvatar: string;
5483
+ private groupTitleSaveTimer;
5484
+ private groupDetailsSaveInFlight;
5442
5485
  readonly backgroundPresets: Array<{
5443
5486
  id: string;
5444
5487
  label: string;
5445
5488
  value: string;
5446
5489
  }>;
5447
- /** Get filtered members based on search */
5448
- get filteredMembers(): AXParticipant[];
5449
- /** Handle tab change */
5450
- onTabChange(event: any): void;
5490
+ readonly heroSubtitle: _angular_core.Signal<string>;
5491
+ readonly liveConversation: _angular_core.Signal<AXConversation>;
5492
+ readonly isConversationMuted: _angular_core.Signal<boolean>;
5493
+ readonly profileFields: _angular_core.Signal<AXConversationInfoProfileField[]>;
5494
+ readonly mediaCategories: _angular_core.Signal<AXConversationMediaCategory[]>;
5495
+ readonly quickActions: _angular_core.Signal<AXInfoPanelQuickAction[]>;
5496
+ readonly filteredMembers: _angular_core.Signal<AXParticipant[]>;
5451
5497
  ngOnInit(): void;
5452
- /** Get conversation subtitle */
5453
- getSubtitle(): string;
5454
- /** Get type label */
5455
- getTypeLabel(): string;
5456
- /** Handle notifications change */
5498
+ private loadConversationMessages;
5499
+ isPrivateConversation(): boolean;
5500
+ isGroupConversation(): boolean;
5501
+ membersSectionTitle(): string;
5502
+ getMemberRoleLabel(participant: AXParticipant): string | null;
5503
+ onMemberSearchChange(value: string | null | undefined): void;
5504
+ setActiveTab(tab: 'profile' | 'manage'): void;
5505
+ toggleMemberSearch(): void;
5506
+ openMediaCategory(category: AXConversationMediaCategory): void;
5507
+ closeMediaView(): void;
5508
+ getMediaRowLabel(category: AXConversationMediaCategory): string;
5509
+ getMemberSubtitle(participant: AXParticipant): string;
5510
+ onQuickAction(actionId: string): void;
5511
+ toggleConversationMute(): Promise<void>;
5457
5512
  onNotificationsChange(value: boolean): Promise<void>;
5458
- /** Handle show preview change */
5459
- onShowPreviewChange(value: boolean): Promise<void>;
5460
- /** Handle archived change */
5461
5513
  onArchivedChange(value: boolean): Promise<void>;
5462
- /** Implement AXClosableComponent.close() */
5463
5514
  close(data?: unknown): void;
5464
- /** Implement AXClosableComponent.closeAll() */
5465
5515
  closeAll(): void;
5466
- /** Handle leave conversation */
5467
5516
  onLeave(): Promise<void>;
5468
- /** Get member count text */
5469
- getMemberCountText(): string;
5470
- /** Get formatted date */
5471
- getFormattedDate(date: Date): string;
5472
- /** Check if can save edit */
5473
- canSaveEdit(): boolean;
5474
- /** Save edit */
5475
- saveEdit(): Promise<void>;
5476
- currentBackground(): string;
5517
+ onGroupTitleChange(value: string): void;
5518
+ onGroupAvatarChange(value: string): void;
5519
+ private persistGroupDetails;
5477
5520
  isBackgroundSelected(value: string): boolean;
5478
5521
  applyMessageListBackground(value: string): Promise<void>;
5479
- ngOnDestroy(): void;
5480
- getMembersTabLabel(): string;
5481
5522
  getBackgroundAriaLabel(label: string): string;
5523
+ ngOnDestroy(): void;
5482
5524
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationInfoPanelComponent, never>;
5483
5525
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXConversationInfoPanelComponent, "ax-conversation-info-panel", never, {}, { "onClosed": "onClosed"; }, never, never, true, never>;
5484
5526
  }
5485
5527
 
5528
+ declare class AXConversationInfoMediaViewComponent {
5529
+ private readonly translation;
5530
+ private readonly parentInjector;
5531
+ readonly category: _angular_core.InputSignal<AXConversationMediaCategory>;
5532
+ readonly messages: _angular_core.InputSignal<AXMessage[]>;
5533
+ readonly conversation: _angular_core.InputSignal<AXConversation>;
5534
+ readonly conversationServiceInput: _angular_core.InputSignal<AXConversationService>;
5535
+ readonly back: _angular_core.OutputEmitterRef<void>;
5536
+ readonly items: _angular_core.Signal<AXMessage[]>;
5537
+ readonly isGrid: _angular_core.Signal<boolean>;
5538
+ readonly isAttachmentList: _angular_core.Signal<boolean>;
5539
+ readonly galleryTiles: _angular_core.Signal<AXConversationMediaGalleryTile[]>;
5540
+ readonly rendererInjector: _angular_core.Signal<_angular_core.DestroyableInjector>;
5541
+ readonly titleLabel: _angular_core.Signal<string>;
5542
+ readonly getMessageVideoItems: typeof getMessageVideoItems;
5543
+ readonly getMessageAudioItems: typeof getMessageAudioItems;
5544
+ getRendererComponent(message: AXMessage): typeof AXFallbackRendererComponent | _angular_core.Type<_acorex_components_conversation2.AXMessageRendererComponent>;
5545
+ getRendererInputs(message: AXMessage): {
5546
+ message: AXMessage;
5547
+ };
5548
+ formatTimestamp(message: AXMessage): string;
5549
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationInfoMediaViewComponent, never>;
5550
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXConversationInfoMediaViewComponent, "ax-conversation-info-media-view", never, { "category": { "alias": "category"; "required": true; "isSignal": true; }; "messages": { "alias": "messages"; "required": true; "isSignal": true; }; "conversation": { "alias": "conversation"; "required": true; "isSignal": true; }; "conversationServiceInput": { "alias": "conversationService"; "required": true; "isSignal": true; }; }, { "back": "back"; }, never, never, true, never>;
5551
+ }
5552
+
5486
5553
  declare class AXInfoBarSearchComponent {
5487
5554
  private readonly platformId;
5488
5555
  private readonly destroyRef;
@@ -5526,10 +5593,6 @@ declare class AXInfoBarSearchComponent {
5526
5593
  * Search in conversation action (inline)
5527
5594
  */
5528
5595
  declare const AX_CONVERSATION_INFO_BAR_SEARCH_ACTION: AXInfoBarAction;
5529
- /**
5530
- * Show conversation info action (menu)
5531
- */
5532
- declare const AX_CONVERSATION_INFO_BAR_INFO_ACTION: AXInfoBarAction;
5533
5596
  /**
5534
5597
  * Mute/Unmute notifications action (menu)
5535
5598
  */
@@ -5711,6 +5774,9 @@ declare function shouldUseUserAvatarForConversation(conversation: AXConversation
5711
5774
  declare function resolveUserAvatarDisplay(userId: string, conversation: AXConversation | undefined, message?: AXMessage): AXConversationAvatarDisplay;
5712
5775
  declare function resolveConversationAvatarDisplay(conversation: AXConversation): AXConversationAvatarDisplay;
5713
5776
 
5777
+ /** Resolves typed `profile`, falling back to legacy `metadata.profile`. */
5778
+ declare function resolveParticipantProfile(participant?: AXParticipant): AXUserProfile;
5779
+
5714
5780
  declare class AXConversationDateUtilsService {
5715
5781
  /**
5716
5782
  * Format relative time (e.g., "2m ago", "1h ago")
@@ -6295,5 +6361,5 @@ declare function getErrorMessage(code: string, params?: Record<string, string |
6295
6361
  */
6296
6362
  type AXErrorCode = typeof MESSAGE_ERRORS[keyof typeof MESSAGE_ERRORS]['code'] | typeof FILE_ERRORS[keyof typeof FILE_ERRORS]['code'] | typeof USER_ERRORS[keyof typeof USER_ERRORS]['code'] | typeof CONVERSATION_ERRORS[keyof typeof CONVERSATION_ERRORS]['code'] | typeof CONNECTION_ERRORS[keyof typeof CONNECTION_ERRORS]['code'] | typeof LOCATION_ERRORS[keyof typeof LOCATION_ERRORS]['code'] | typeof URL_ERRORS[keyof typeof URL_ERRORS]['code'];
6297
6363
 
6298
- export { AXAudioPickerComponent, AXAudioRendererComponent, AXBaseRegistry, AXCnvMediaPlaybackInfoBarBannerComponent, AXComposerActionRegistry, AXComposerComponent, AXComposerPopupComponent, AXComposerService, AXComposerTabRegistry, AXConversation2Module, AXConversationAiApiKey, AXConversationAiResponderService, AXConversationApi, AXConversationContainerComponent, AXConversationContainerDirective, AXConversationDateUtilsService, AXConversationIndexedDbConversationApi, AXConversationIndexedDbMessageAiApi, AXConversationIndexedDbMessageApi, AXConversationIndexedDbRealtimeApi, AXConversationIndexedDbStorage, AXConversationIndexedDbStores, AXConversationIndexedDbUserApi, AXConversationInfoPanelComponent, AXConversationItemActionRegistry, AXConversationMessageRendererStateComponent, AXConversationMessageUtilsService, AXConversationService, AXConversationSharedStorage, AXConversationTabRegistry, AXEmojiTabComponent, AXErrorHandlerService, AXFallbackRendererComponent, AXFilePickerComponent, AXFileRendererComponent, AXForwardMessageDialogComponent, AXImagePickerComponent, AXImageRendererComponent, AXInfiniteScrollDirective, AXInfoBarActionRegistry, AXInfoBarComponent, AXInfoBarSearchComponent, AXInfoBarService, AXLocationPickerComponent, AXLocationRendererComponent, AXMessageActionRegistry, AXMessageApi, AXMessageListComponent, AXMessageListNoActiveDefaultComponent, AXMessageListService, AXMessageRendererRegistry, AXNewConversationDialogComponent, AXPickerFooterComponent, AXPickerHeaderComponent, AXRealtimeApi, AXRegistryService, AXSidebarComponent, AXSidebarService, AXStickerRendererComponent, AXStickerTabComponent, AXSystemRendererComponent, AXTextRendererComponent, AXUserApi, AXVideoPickerComponent, AXVideoRendererComponent, AXVoiceRecorderComponent, AXVoiceRendererComponent, AX_CONVERSATION_AUDIO_RENDERER, AX_CONVERSATION_COMPOSER_AUDIO_ACTION, AX_CONVERSATION_COMPOSER_EMOJI_ACTION, AX_CONVERSATION_COMPOSER_EMOJI_TAB, AX_CONVERSATION_COMPOSER_FILE_ACTION, AX_CONVERSATION_COMPOSER_FILE_TYPE_PROVIDERS, 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_CONVERSATION_AVATAR_COMPONENT, AX_CONVERSATION_CURSOR_PREFIX, AX_CONVERSATION_FALLBACK_RENDERER, AX_CONVERSATION_FILE_RENDERER, 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_INFO_ACTION, 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_RENDERER, AX_CONVERSATION_MESSAGE_DELETE_ACTION, AX_CONVERSATION_MESSAGE_EDIT_ACTION, AX_CONVERSATION_MESSAGE_FORWARD_ACTION, AX_CONVERSATION_MESSAGE_REPLY_ACTION, 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_USER_AVATAR_COMPONENT, AX_CONVERSATION_VIDEO_RENDERER, AX_CONVERSATION_VOICE_RENDERER, AX_DEFAULT_CONVERSATION_CONFIG, AX_MESSAGE_CURSOR_PREFIX, AX_STICKER_API_KEY, CONNECTION_ERRORS, CONVERSATION_CONFIG, CONVERSATION_ERRORS, CONVERSATION_FILE_TYPES_READY, DEFAULT_COMPOSER_ACTIONS, DEFAULT_COMPOSER_TABS, DEFAULT_CONVERSATION_ITEM_ACTIONS, DEFAULT_CONVERSATION_TABS, DEFAULT_INFO_BAR_ACTIONS, DEFAULT_MESSAGE_ACTIONS, DEFAULT_MESSAGE_RENDERERS, ERROR_HANDLER_CONFIG, ERROR_MESSAGES, FILE_ERRORS, LOCATION_ERRORS, MESSAGE_ERRORS, REGISTRY_CONFIG, URL_ERRORS, USER_ERRORS, applyConversationFilters, applyLocalPreview, axConversationIndexedDbStorage, conversationSharedStorage, createLocalPreviewUrl, createObjectUrl, encodeConversationCursor, encodeMessageCursor, formatErrorMessage, getConversationLastActivity, getConversationMessagesNewestFirst, getErrorMessage, getSortedConversationsForInbox, mergeUploadResult, mergeWithDefaults, normalizeAllConversationMessageIndexes, paginateChatNewestFirst, paginateChatOldestFirst, parseChatCursor, provideConversation, provideConversationComposerFileTypes, provideConversationFileCatalog, registerChatMessage, resolveConversationAvatarDisplay, resolvePrivatePeerUserId, resolveUserAvatarDisplay, revokeObjectUrl, sanitizeInput, shouldUseUserAvatarForConversation, sortConversationMessageIds, toUploaderReference, unregisterChatMessage, validateConversationId, validateEmail, validateLatitude, validateLongitude, validateMessagePayload, validateMessageText, validateMessageType, validateUrl, validateUserId, validateUserIds };
6299
- export type { AXApiError, AXAudioMediaItem, AXAudioPayload, AXBlockReportReason, AXCallEvent, AXChatCursorKind, AXComposerAction, AXComposerActionComponent, AXComposerActionContext, AXComposerActiveComponent, AXComposerTab, AXConnectionEvent, AXConnectionOptions, AXConnectionStatus, AXConversation, AXConversationAiResponderConfig, AXConversationAvatarComponents, AXConversationAvatarDisplay, AXConversationAvatarKind, AXConversationConfig, AXConversationConversationAvatarComponent, AXConversationCreateData, AXConversationError, AXConversationFilter, AXConversationFilters, AXConversationIndexedDbMediaRecord, AXConversationItemAction, AXConversationItemActionContext, AXConversationMetadata, AXConversationOptions, AXConversationSettings, AXConversationSettingsUpdate, AXConversationSort, AXConversationStatus, AXConversationTab, AXConversationType, AXConversationUpdateData, AXConversationUploadOptions, AXConversationUserAvatarComponent, AXDeleteMessageCommand, AXEditMessageCommand, AXErrorCode, AXErrorHandlerConfig, AXErrorMessage, AXErrorSeverity, AXFileMediaItem, AXFilePayload, AXGroupedReaction, AXImageMediaItem, AXImagePayload, AXInfoBarAction, AXInfoBarActionComponent, AXInfoBarActionContext, AXInfoBarActiveBanner, AXInfoBarActiveComponent, AXLink, AXLinkPreview, AXLoadMessagesResult, AXLocationPayload, AXMediaItemFields, AXMention, AXMessage, AXMessageAction, AXMessageActionContext, AXMessageForwardData, AXMessageInfoBarBannerComponent, AXMessageListEmptyComponent, AXMessagePayload, AXMessageRenderer, AXMessageRendererCapabilities, AXMessageRendererComponent, AXMessageRendererContentState, AXMessageRendererState, AXMessageSearchFilters, AXMessageStatus, AXMessageType, AXNotificationEvent, AXPaginatedResult, AXPagination, AXPaginationState, AXParsedChatCursor, AXParticipant, AXParticipantRole, AXParticipantStatus, AXParticipantUpdate, AXPinnedMessage, AXPlaybackBannerInputs, AXPollOption, AXPollPayload, AXPresenceStatus, AXPresenceUpdate, AXReaction, AXReadReceipt, AXRegistryConfiguration, AXRegistryItem, AXSendMessageCommand, AXSendMessageOptions, AXSendMessageUploadSource, AXStickerPayload, AXSystemPayload, AXTextFormat, AXTextPayload, AXTypingIndicator, AXUploaderReference, AXUploaderResult, AXUserProfileUpdate, AXUserRole, AXUserSearchFilters, AXValidationResult, AXVideoMediaItem, AXVideoPayload, AXVoicePayload, DropdownMenuItem, UploaderFilePreview };
6364
+ export { AXAudioPickerComponent, AXAudioRendererComponent, AXBaseRegistry, AXCnvMediaPlaybackInfoBarBannerComponent, AXComposerActionRegistry, AXComposerComponent, AXComposerPopupComponent, AXComposerService, AXComposerTabRegistry, AXConversation2Module, AXConversationAiApiKey, AXConversationAiResponderService, AXConversationApi, AXConversationContainerComponent, AXConversationContainerDirective, AXConversationDateUtilsService, AXConversationIndexedDbConversationApi, AXConversationIndexedDbMessageAiApi, AXConversationIndexedDbMessageApi, AXConversationIndexedDbRealtimeApi, AXConversationIndexedDbStorage, AXConversationIndexedDbStores, AXConversationIndexedDbUserApi, AXConversationInfoMediaViewComponent, AXConversationInfoPanelComponent, AXConversationItemActionRegistry, AXConversationMessageRendererStateComponent, AXConversationMessageUtilsService, AXConversationService, AXConversationSharedStorage, AXConversationTabRegistry, AXEmojiTabComponent, AXErrorHandlerService, AXFallbackRendererComponent, AXFilePickerComponent, AXFileRendererComponent, AXForwardMessageDialogComponent, AXImagePickerComponent, AXImageRendererComponent, AXInfiniteScrollDirective, AXInfoBarActionRegistry, AXInfoBarComponent, AXInfoBarSearchComponent, AXInfoBarService, AXLocationPickerComponent, AXLocationRendererComponent, AXMessageActionRegistry, AXMessageApi, AXMessageListComponent, AXMessageListNoActiveDefaultComponent, AXMessageListService, AXMessageRendererRegistry, AXNewConversationDialogComponent, AXPickerFooterComponent, AXPickerHeaderComponent, AXRealtimeApi, AXRegistryService, AXSidebarComponent, AXSidebarService, AXStickerRendererComponent, AXStickerTabComponent, AXSystemRendererComponent, AXTextRendererComponent, AXUserApi, AXVideoPickerComponent, AXVideoRendererComponent, AXVoiceRecorderComponent, AXVoiceRendererComponent, AX_CONVERSATION_AUDIO_RENDERER, AX_CONVERSATION_COMPOSER_AUDIO_ACTION, AX_CONVERSATION_COMPOSER_EMOJI_ACTION, AX_CONVERSATION_COMPOSER_EMOJI_TAB, AX_CONVERSATION_COMPOSER_FILE_ACTION, AX_CONVERSATION_COMPOSER_FILE_TYPE_PROVIDERS, 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_CONVERSATION_AVATAR_COMPONENT, AX_CONVERSATION_CURSOR_PREFIX, AX_CONVERSATION_FALLBACK_RENDERER, AX_CONVERSATION_FILE_RENDERER, 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_RENDERER, AX_CONVERSATION_MESSAGE_DELETE_ACTION, AX_CONVERSATION_MESSAGE_EDIT_ACTION, AX_CONVERSATION_MESSAGE_FORWARD_ACTION, AX_CONVERSATION_MESSAGE_REPLY_ACTION, 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_USER_AVATAR_COMPONENT, AX_CONVERSATION_VIDEO_RENDERER, AX_CONVERSATION_VOICE_RENDERER, AX_DEFAULT_CONVERSATION_CONFIG, AX_MESSAGE_CURSOR_PREFIX, AX_STICKER_API_KEY, CONNECTION_ERRORS, CONVERSATION_CONFIG, CONVERSATION_ERRORS, CONVERSATION_FILE_TYPES_READY, DEFAULT_COMPOSER_ACTIONS, DEFAULT_COMPOSER_TABS, DEFAULT_CONVERSATION_ITEM_ACTIONS, DEFAULT_CONVERSATION_TABS, DEFAULT_INFO_BAR_ACTIONS, DEFAULT_MESSAGE_ACTIONS, DEFAULT_MESSAGE_RENDERERS, ERROR_HANDLER_CONFIG, ERROR_MESSAGES, FILE_ERRORS, LOCATION_ERRORS, MESSAGE_ERRORS, REGISTRY_CONFIG, URL_ERRORS, USER_ERRORS, applyConversationFilters, applyLocalPreview, axConversationIndexedDbStorage, conversationSharedStorage, createLocalPreviewUrl, createObjectUrl, encodeConversationCursor, encodeMessageCursor, formatErrorMessage, getConversationLastActivity, getConversationMessagesNewestFirst, getErrorMessage, getSortedConversationsForInbox, mergeUploadResult, mergeWithDefaults, normalizeAllConversationMessageIndexes, paginateChatNewestFirst, paginateChatOldestFirst, parseChatCursor, provideConversation, provideConversationComposerFileTypes, provideConversationFileCatalog, registerChatMessage, resolveConversationAvatarDisplay, resolveParticipantProfile, resolvePrivatePeerUserId, resolveUserAvatarDisplay, revokeObjectUrl, sanitizeInput, shouldUseUserAvatarForConversation, sortConversationMessageIds, toUploaderReference, unregisterChatMessage, validateConversationId, validateEmail, validateLatitude, validateLongitude, validateMessagePayload, validateMessageText, validateMessageType, validateUrl, validateUserId, validateUserIds };
6365
+ export type { AXApiError, AXAudioMediaItem, AXAudioPayload, AXBlockReportReason, AXCallEvent, AXChatCursorKind, AXComposerAction, AXComposerActionComponent, AXComposerActionContext, AXComposerActiveComponent, AXComposerTab, AXConnectionEvent, AXConnectionOptions, AXConnectionStatus, AXConversation, AXConversationAiResponderConfig, AXConversationAvatarComponents, AXConversationAvatarDisplay, AXConversationAvatarKind, AXConversationConfig, AXConversationConversationAvatarComponent, AXConversationCreateData, AXConversationError, AXConversationFilter, AXConversationFilters, AXConversationIndexedDbMediaRecord, AXConversationItemAction, AXConversationItemActionContext, AXConversationMetadata, AXConversationOptions, AXConversationSettings, AXConversationSettingsUpdate, AXConversationSort, AXConversationStatus, AXConversationTab, AXConversationType, AXConversationUpdateData, AXConversationUploadOptions, AXConversationUserAvatarComponent, AXDeleteMessageCommand, AXEditMessageCommand, AXErrorCode, AXErrorHandlerConfig, AXErrorMessage, AXErrorSeverity, AXFileMediaItem, AXFilePayload, AXGroupedReaction, AXImageMediaItem, AXImagePayload, AXInfoBarAction, AXInfoBarActionComponent, AXInfoBarActionContext, AXInfoBarActiveBanner, AXInfoBarActiveComponent, AXLink, AXLinkPreview, AXLoadMessagesResult, AXLocationPayload, AXMediaItemFields, AXMention, AXMessage, AXMessageAction, AXMessageActionContext, AXMessageForwardData, AXMessageInfoBarBannerComponent, AXMessageListEmptyComponent, AXMessagePayload, AXMessageRenderer, AXMessageRendererCapabilities, AXMessageRendererComponent, AXMessageRendererContentState, AXMessageRendererState, AXMessageSearchFilters, AXMessageStatus, AXMessageType, AXNotificationEvent, AXPaginatedResult, AXPagination, AXPaginationState, AXParsedChatCursor, AXParticipant, AXParticipantRole, AXParticipantStatus, AXParticipantUpdate, AXPinnedMessage, AXPlaybackBannerInputs, AXPollOption, AXPollPayload, AXPresenceStatus, AXPresenceUpdate, AXReaction, AXReadReceipt, AXRegistryConfiguration, AXRegistryItem, AXSendMessageCommand, AXSendMessageOptions, AXSendMessageUploadSource, AXStickerPayload, AXSystemPayload, AXTextFormat, AXTextPayload, AXTypingIndicator, AXUploaderReference, AXUploaderResult, AXUserProfile, AXUserProfileUpdate, AXUserRole, AXUserSearchFilters, AXValidationResult, AXVideoMediaItem, AXVideoPayload, AXVoicePayload, DropdownMenuItem, UploaderFilePreview };