@acorex/components 21.0.3-next.1 → 21.0.3-next.3

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/package.json CHANGED
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "name": "@acorex/components",
3
- "version": "21.0.3-next.1",
3
+ "version": "21.0.3-next.3",
4
4
  "peerDependencies": {
5
- "@acorex/core": "21.0.3-next.1",
6
- "@acorex/cdk": "21.0.3-next.1",
5
+ "@acorex/core": "21.0.3-next.3",
6
+ "@acorex/cdk": "21.0.3-next.3",
7
7
  "polytype": ">=0.17.0",
8
8
  "angular-imask": ">=7.6.1",
9
9
  "gridstack": ">=12.0.0",
@@ -1,11 +1,10 @@
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, OnInit, EventEmitter, TemplateRef, InjectionToken, 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 * as _acorex_components_popup from '@acorex/components/popup';
6
6
  import { AXPopupService, AXPopupRef } from '@acorex/components/popup';
7
7
  import { AXFileUploadOptions, AXUploadResult, AXUploadReference, AXUploaderService, AXUploaderFileChangeEvent } from '@acorex/cdk/uploader';
8
- import { AXPopoverComponent } from '@acorex/components/popover';
9
8
  import { AXListComponent } from '@acorex/components/list';
10
9
  import * as rxjs from 'rxjs';
11
10
  import { Observable, BehaviorSubject, Subject } from 'rxjs';
@@ -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
  /**
@@ -1600,13 +1611,13 @@ declare class AXInfoBarComponent {
1600
1611
  readonly activeComponent: _angular_core.Signal<_acorex_components_conversation2.AXInfoBarActiveComponent>;
1601
1612
  /** Active banner from service */
1602
1613
  readonly activeBanner: _angular_core.Signal<_acorex_components_conversation2.AXInfoBarActiveBanner>;
1603
- /** Members popover reference */
1604
- readonly membersPopoverRef: _angular_core.Signal<AXPopoverComponent>;
1605
- /** Members popover target element */
1614
+ /** Members popover target element — retained for API compatibility */
1606
1615
  readonly membersPopoverTarget: _angular_core.WritableSignal<HTMLElement>;
1607
1616
  /** Loading state for async actions */
1608
1617
  readonly actionLoading: _angular_core.WritableSignal<boolean>;
1609
- /** Avatar clicked event */
1618
+ /** Info area clicked opens conversation profile panel */
1619
+ readonly infoClick: _angular_core.OutputEmitterRef<void>;
1620
+ /** @deprecated Use infoClick — kept for backward compatibility */
1610
1621
  readonly avatarClick: _angular_core.OutputEmitterRef<void>;
1611
1622
  /** Search clicked event */
1612
1623
  readonly searchClick: _angular_core.OutputEmitterRef<void>;
@@ -1622,10 +1633,8 @@ declare class AXInfoBarComponent {
1622
1633
  getStatus(conversation: AXConversation): 'online' | 'offline' | 'away' | undefined;
1623
1634
  /** Get subtitle text - delegate to utils */
1624
1635
  getSubtitle(conversation: AXConversation): string;
1625
- /** Handle avatar click */
1626
- onAvatarClick(): void;
1627
- /** Handle members click - open popover */
1628
- onMembersClick(event: MouseEvent): void;
1636
+ /** Open conversation info panel when the left info area is clicked */
1637
+ onInfoLeftClick(): void;
1629
1638
  /** Handle inline action click */
1630
1639
  onInlineActionClick(actionId: string): Promise<void>;
1631
1640
  /** Get inputs for dynamic component */
@@ -1639,7 +1648,7 @@ declare class AXInfoBarComponent {
1639
1648
  /** Handle menu item click */
1640
1649
  onMenuItemClick(item: DropdownMenuItem): Promise<void>;
1641
1650
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXInfoBarComponent, never>;
1642
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXInfoBarComponent, "ax-conversation-info-bar", never, {}, { "avatarClick": "avatarClick"; "searchClick": "searchClick"; "searchQuery": "searchQuery"; "menuItemAction": "menuItemAction"; }, never, ["ax-prefix"], true, never>;
1651
+ 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>;
1643
1652
  }
1644
1653
 
1645
1654
  /**
@@ -1691,6 +1700,10 @@ declare class AXInfoBarService {
1691
1700
  * Reset info-bar overlays when the active conversation changes.
1692
1701
  */
1693
1702
  onConversationChanged(): void;
1703
+ /**
1704
+ * Open the Telegram-style conversation info panel for the active (or given) conversation.
1705
+ */
1706
+ openConversationInfoPanel(conversation?: AXConversation): Promise<void>;
1694
1707
  /**
1695
1708
  * Get actions for the active conversation
1696
1709
  */
@@ -2851,11 +2864,13 @@ interface AXUserProfileUpdate {
2851
2864
  avatar?: string;
2852
2865
  /** Short line under the name in lists (e.g. job title) */
2853
2866
  description?: string;
2854
- /** Bio/status text */
2867
+ /** Extended profile fields */
2868
+ profile?: Partial<AXUserProfile>;
2869
+ /** @deprecated Prefer `profile.bio` */
2855
2870
  bio?: string;
2856
- /** Phone number */
2871
+ /** @deprecated Prefer `profile.phone` */
2857
2872
  phone?: string;
2858
- /** Email */
2873
+ /** @deprecated Prefer `profile.email` */
2859
2874
  email?: string;
2860
2875
  /** Custom fields */
2861
2876
  custom?: Record<string, unknown>;
@@ -3640,36 +3655,28 @@ declare class AXForwardMessageDialogComponent implements OnInit {
3640
3655
  }
3641
3656
 
3642
3657
  /**
3643
- * Shared UI for message bubble bodies: sending / failed (with retry) and content load errors,
3644
- * driven by {@link AXMessageRendererState}.
3658
+ * Shared UI for message bubble bodies: failed delivery (with retry) and content load errors.
3659
+ * Sending state is shown in the message-list footer only — not here (avoids layout glitch in media bubbles).
3645
3660
  */
3646
3661
  declare class AXConversationMessageRendererStateComponent {
3647
3662
  private readonly conversation;
3648
3663
  readonly translation: AXTranslationService;
3649
3664
  readonly rendererState: _angular_core.InputSignal<AXMessageRendererState>;
3650
3665
  readonly message: _angular_core.InputSignal<AXMessage>;
3651
- /** Overrides default text when {@link AXMessageRendererState.contentState} is `error`. */
3652
3666
  readonly contentErrorLabel: _angular_core.InputSignal<string>;
3653
- /** Overrides default text when delivery failed. */
3654
3667
  readonly deliveryFailedLabel: _angular_core.InputSignal<string>;
3655
- /** Set false when the renderer shows content errors inline (e.g. inline media error state). */
3656
3668
  readonly showContentErrorChrome: _angular_core.InputSignal<boolean>;
3657
- /** `inline` matches legacy media rows (e.g. audio): compact danger text under the player. */
3658
3669
  readonly contentErrorStyle: _angular_core.InputSignal<"inline" | "banner">;
3659
- /** Icon class for content error (e.g. `fa-light fa-music` for audio). */
3660
3670
  readonly contentErrorIconClass: _angular_core.InputSignal<string>;
3661
- /** `below`: render after main bubble body (typical for media). */
3662
3671
  readonly placement: _angular_core.InputSignal<"above" | "below">;
3663
3672
  readonly contentRetryEnabled: _angular_core.InputSignal<boolean>;
3664
3673
  readonly contentRetry: _angular_core.OutputEmitterRef<void>;
3665
3674
  readonly retryBusy: _angular_core.WritableSignal<boolean>;
3666
3675
  private readonly currentUser;
3667
3676
  private readonly isOwn;
3668
- readonly showSending: _angular_core.Signal<boolean>;
3669
3677
  readonly showFailed: _angular_core.Signal<boolean>;
3670
3678
  readonly showContentError: _angular_core.Signal<boolean>;
3671
3679
  readonly hasVisibleChrome: _angular_core.Signal<boolean>;
3672
- readonly showRetryButton: _angular_core.Signal<boolean>;
3673
3680
  readonly contentErrorText: _angular_core.Signal<string>;
3674
3681
  readonly deliveryFailedText: _angular_core.Signal<string>;
3675
3682
  onRetry(): Promise<void>;
@@ -3721,6 +3728,7 @@ declare abstract class AXMessageRendererCopyHostComponent implements AXMessageRe
3721
3728
 
3722
3729
  declare class AXAudioRendererComponent extends AXMessageRendererCopyHostComponent {
3723
3730
  private readonly fileTypes;
3731
+ private readonly translation;
3724
3732
  private readonly destroyRef;
3725
3733
  private readonly infoBarService;
3726
3734
  private readonly attachments;
@@ -3737,6 +3745,7 @@ declare class AXAudioRendererComponent extends AXMessageRendererCopyHostComponen
3737
3745
  readonly payload: _angular_core.Signal<AXAudioPayload>;
3738
3746
  readonly audios: _angular_core.Signal<_acorex_components_conversation2.AXAudioMediaItem[]>;
3739
3747
  readonly caption: _angular_core.Signal<string>;
3748
+ readonly audioLoadErrorLabel: _angular_core.Signal<string>;
3740
3749
  copy(): Promise<string>;
3741
3750
  constructor();
3742
3751
  onPlayingChange(index: number, playing: boolean): void;
@@ -3875,15 +3884,17 @@ declare class AXTextRendererComponent extends AXMessageRendererCopyHostComponent
3875
3884
 
3876
3885
  declare class AXVideoRendererComponent extends AXMessageRendererCopyHostComponent {
3877
3886
  private readonly fileTypes;
3887
+ private readonly translation;
3878
3888
  private readonly platformId;
3879
3889
  private readonly destroyRef;
3880
3890
  private readonly infoBarService;
3881
3891
  private readonly attachments;
3892
+ private readonly _contentState;
3882
3893
  private readonly activeVideoIndex;
3883
3894
  readonly message: _angular_core.InputSignal<AXMessage>;
3884
3895
  readonly rendererState: _angular_core.Signal<{
3885
3896
  deliveryStatus: _acorex_components_conversation2.AXMessageStatus;
3886
- contentState: "ready";
3897
+ contentState: AXMessageRendererContentState;
3887
3898
  }>;
3888
3899
  readonly isPlaying: _angular_core.WritableSignal<boolean>;
3889
3900
  readonly currentTime: _angular_core.WritableSignal<number>;
@@ -3891,12 +3902,14 @@ declare class AXVideoRendererComponent extends AXMessageRendererCopyHostComponen
3891
3902
  readonly payload: _angular_core.Signal<AXVideoPayload>;
3892
3903
  readonly videos: _angular_core.Signal<_acorex_components_conversation2.AXVideoMediaItem[]>;
3893
3904
  readonly caption: _angular_core.Signal<string>;
3905
+ readonly videoLoadErrorLabel: _angular_core.Signal<string>;
3894
3906
  copy(): Promise<string>;
3895
3907
  constructor();
3896
3908
  onPlayingChange(index: number, playing: boolean): void;
3897
3909
  onTimeUpdate(index: number, time: number): void;
3898
3910
  onDurationChange(index: number, duration: number): void;
3899
3911
  onPlaybackEnded(index: number): void;
3912
+ onPlaybackError(): void;
3900
3913
  togglePlay(): void;
3901
3914
  private pauseOtherVideos;
3902
3915
  private pausePlayback;
@@ -3907,6 +3920,7 @@ declare class AXVideoRendererComponent extends AXMessageRendererCopyHostComponen
3907
3920
 
3908
3921
  declare class AXVoiceRendererComponent extends AXMessageRendererCopyHostComponent {
3909
3922
  private readonly fileTypes;
3923
+ private readonly translation;
3910
3924
  private readonly platformId;
3911
3925
  private readonly destroyRef;
3912
3926
  private readonly infoBarService;
@@ -3929,6 +3943,7 @@ declare class AXVoiceRendererComponent extends AXMessageRendererCopyHostComponen
3929
3943
  readonly waveformBars: _angular_core.Signal<number[]>;
3930
3944
  readonly activeBarIndex: _angular_core.Signal<number>;
3931
3945
  readonly timeLabel: _angular_core.Signal<string>;
3946
+ readonly voiceLoadErrorLabel: _angular_core.Signal<string>;
3932
3947
  copy(): Promise<string>;
3933
3948
  constructor();
3934
3949
  togglePlay(): void;
@@ -3961,6 +3976,7 @@ declare class AXMessageListComponent implements OnDestroy {
3961
3976
  private readonly toast;
3962
3977
  private readonly infoBarService;
3963
3978
  private readonly translation;
3979
+ private readonly document;
3964
3980
  protected readonly config: Required<_acorex_components_conversation2.AXConversationConfig>;
3965
3981
  /**
3966
3982
  * Background for the message list scroll area from config, or the built-in soft gradient when unset/empty.
@@ -3975,6 +3991,7 @@ declare class AXMessageListComponent implements OnDestroy {
3975
3991
  private readonly forwardCounts;
3976
3992
  readonly reactionPickerTarget: _angular_core.WritableSignal<string>;
3977
3993
  readonly reactionPickerElement: _angular_core.WritableSignal<HTMLElement>;
3994
+ readonly reactionPickerPlacement: _angular_core.WritableSignal<AXPlacement>;
3978
3995
  readonly reactionPopover: _angular_core.Signal<any>;
3979
3996
  /** Message id whose context menu is open (for active row styling). */
3980
3997
  readonly contextMenuMessageId: _angular_core.WritableSignal<string>;
@@ -4068,7 +4085,7 @@ declare class AXMessageListComponent implements OnDestroy {
4068
4085
  hasReacted: boolean;
4069
4086
  }): string;
4070
4087
  /** Toggle reaction picker */
4071
- toggleReactionPicker(messageId: string, event: MouseEvent): void;
4088
+ toggleReactionPicker(message: AXMessage, event: MouseEvent): void;
4072
4089
  /** Close reaction picker */
4073
4090
  closeReactionPicker(): void;
4074
4091
  /** Check if current user has reacted with specific emoji */
@@ -5412,73 +5429,127 @@ declare function createObjectUrl(platformId: object, blob: Blob): string;
5412
5429
  declare function revokeObjectUrl(platformId: object, url: string): void;
5413
5430
  declare function createLocalPreviewUrl(fileService: AXFileService, platformId: object, source: File | Blob, messageType: AXMessageType): Promise<string | undefined>;
5414
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
+ }
5415
5464
  declare class AXConversationInfoPanelComponent extends AXClosableComponent implements OnInit, OnDestroy {
5416
5465
  private readonly toastService;
5417
5466
  readonly translation: AXTranslationService;
5418
- /** Event emitted when popup should close */
5467
+ private readonly injectedConversationService;
5419
5468
  readonly onClosed: _angular_core.OutputEmitterRef<AXComponentCloseEvent>;
5420
- /** Conversation (typically passed via popup data). */
5421
5469
  conversation: AXConversation;
5422
5470
  conversationService: AXConversationService;
5423
- /**
5424
- * Conversation service used by panel actions.
5425
- * Kept assignable for backward compatibility with popup `data`,
5426
- * but defaults to DI so this panel works without explicit data wiring.
5427
- */
5428
- notificationsEnabled: boolean;
5429
- 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>;
5430
5478
  archived: boolean;
5431
5479
  private initialNotifications;
5432
- private initialShowPreview;
5433
5480
  private initialArchived;
5434
- memberSearchQuery: string;
5435
- activeTab: string;
5436
5481
  editTitle: string;
5437
5482
  editAvatar: string;
5483
+ private groupTitleSaveTimer;
5484
+ private groupDetailsSaveInFlight;
5438
5485
  readonly backgroundPresets: Array<{
5439
5486
  id: string;
5440
5487
  label: string;
5441
5488
  value: string;
5442
5489
  }>;
5443
- /** Get filtered members based on search */
5444
- get filteredMembers(): _acorex_components_conversation2.AXParticipant[];
5445
- /** Handle tab change */
5446
- 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[]>;
5447
5497
  ngOnInit(): void;
5448
- /** Get conversation subtitle */
5449
- getSubtitle(): string;
5450
- /** Get type label */
5451
- getTypeLabel(): string;
5452
- /** 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>;
5453
5512
  onNotificationsChange(value: boolean): Promise<void>;
5454
- /** Handle show preview change */
5455
- onShowPreviewChange(value: boolean): Promise<void>;
5456
- /** Handle archived change */
5457
5513
  onArchivedChange(value: boolean): Promise<void>;
5458
- /** Implement AXClosableComponent.close() */
5459
5514
  close(data?: unknown): void;
5460
- /** Implement AXClosableComponent.closeAll() */
5461
5515
  closeAll(): void;
5462
- /** Handle leave conversation */
5463
5516
  onLeave(): Promise<void>;
5464
- /** Get member count text */
5465
- getMemberCountText(): string;
5466
- /** Get formatted date */
5467
- getFormattedDate(date: Date): string;
5468
- /** Check if can save edit */
5469
- canSaveEdit(): boolean;
5470
- /** Save edit */
5471
- saveEdit(): Promise<void>;
5472
- currentBackground(): string;
5517
+ onGroupTitleChange(value: string): void;
5518
+ onGroupAvatarChange(value: string): void;
5519
+ private persistGroupDetails;
5473
5520
  isBackgroundSelected(value: string): boolean;
5474
5521
  applyMessageListBackground(value: string): Promise<void>;
5475
- ngOnDestroy(): void;
5476
- getMembersTabLabel(): string;
5477
5522
  getBackgroundAriaLabel(label: string): string;
5523
+ ngOnDestroy(): void;
5478
5524
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationInfoPanelComponent, never>;
5479
5525
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXConversationInfoPanelComponent, "ax-conversation-info-panel", never, {}, { "onClosed": "onClosed"; }, never, never, true, never>;
5480
5526
  }
5481
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
+
5482
5553
  declare class AXInfoBarSearchComponent {
5483
5554
  private readonly platformId;
5484
5555
  private readonly destroyRef;
@@ -5522,10 +5593,6 @@ declare class AXInfoBarSearchComponent {
5522
5593
  * Search in conversation action (inline)
5523
5594
  */
5524
5595
  declare const AX_CONVERSATION_INFO_BAR_SEARCH_ACTION: AXInfoBarAction;
5525
- /**
5526
- * Show conversation info action (menu)
5527
- */
5528
- declare const AX_CONVERSATION_INFO_BAR_INFO_ACTION: AXInfoBarAction;
5529
5596
  /**
5530
5597
  * Mute/Unmute notifications action (menu)
5531
5598
  */
@@ -5707,6 +5774,9 @@ declare function shouldUseUserAvatarForConversation(conversation: AXConversation
5707
5774
  declare function resolveUserAvatarDisplay(userId: string, conversation: AXConversation | undefined, message?: AXMessage): AXConversationAvatarDisplay;
5708
5775
  declare function resolveConversationAvatarDisplay(conversation: AXConversation): AXConversationAvatarDisplay;
5709
5776
 
5777
+ /** Resolves typed `profile`, falling back to legacy `metadata.profile`. */
5778
+ declare function resolveParticipantProfile(participant?: AXParticipant): AXUserProfile;
5779
+
5710
5780
  declare class AXConversationDateUtilsService {
5711
5781
  /**
5712
5782
  * Format relative time (e.g., "2m ago", "1h ago")
@@ -6291,5 +6361,5 @@ declare function getErrorMessage(code: string, params?: Record<string, string |
6291
6361
  */
6292
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'];
6293
6363
 
6294
- 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 };
6295
- 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 };