@acorex/components 22.1.0-next.32 → 22.1.0-next.34

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.
Files changed (30) hide show
  1. package/fesm2022/acorex-components-button.mjs +182 -39
  2. package/fesm2022/acorex-components-button.mjs.map +1 -1
  3. package/fesm2022/{acorex-components-conversation-acorex-components-conversation-BBWe3tfe.mjs → acorex-components-conversation-acorex-components-conversation-BZjCPB-7.mjs} +898 -456
  4. package/fesm2022/acorex-components-conversation-acorex-components-conversation-BZjCPB-7.mjs.map +1 -0
  5. package/fesm2022/{acorex-components-conversation-picker-rename-file-dialog.component-OAHRGH_G.mjs → acorex-components-conversation-picker-rename-file-dialog.component-CNwDWg_O.mjs} +2 -2
  6. package/fesm2022/{acorex-components-conversation-picker-rename-file-dialog.component-OAHRGH_G.mjs.map → acorex-components-conversation-picker-rename-file-dialog.component-CNwDWg_O.mjs.map} +1 -1
  7. package/fesm2022/acorex-components-conversation.mjs +1 -1
  8. package/fesm2022/acorex-components-data-table.mjs +2 -2
  9. package/fesm2022/acorex-components-data-table.mjs.map +1 -1
  10. package/fesm2022/acorex-components-dropdown-button.mjs +2 -1
  11. package/fesm2022/acorex-components-dropdown-button.mjs.map +1 -1
  12. package/fesm2022/acorex-components-dropdown.mjs +5 -0
  13. package/fesm2022/acorex-components-dropdown.mjs.map +1 -1
  14. package/fesm2022/acorex-components-file-viewer.mjs +2 -6
  15. package/fesm2022/acorex-components-file-viewer.mjs.map +1 -1
  16. package/fesm2022/acorex-components-number-box.mjs +10 -3
  17. package/fesm2022/acorex-components-number-box.mjs.map +1 -1
  18. package/fesm2022/acorex-components-popover.mjs +47 -6
  19. package/fesm2022/acorex-components-popover.mjs.map +1 -1
  20. package/fesm2022/acorex-components-popup.mjs +106 -54
  21. package/fesm2022/acorex-components-popup.mjs.map +1 -1
  22. package/package.json +3 -3
  23. package/types/acorex-components-button.d.ts +23 -6
  24. package/types/acorex-components-conversation.d.ts +144 -76
  25. package/types/acorex-components-dropdown-button.d.ts +2 -1
  26. package/types/acorex-components-dropdown.d.ts +5 -0
  27. package/types/acorex-components-number-box.d.ts +1 -0
  28. package/types/acorex-components-popover.d.ts +8 -0
  29. package/types/acorex-components-popup.d.ts +42 -16
  30. package/fesm2022/acorex-components-conversation-acorex-components-conversation-BBWe3tfe.mjs.map +0 -1
@@ -6,8 +6,10 @@ import { AXTranslationService } from '@acorex/core/translation';
6
6
  import * as _acorex_components_action_sheet from '@acorex/components/action-sheet';
7
7
  import { AXActionSheetRef } from '@acorex/components/action-sheet';
8
8
  import * as _acorex_components_popup from '@acorex/components/popup';
9
- import { AXPopupService, AXPopupRef } from '@acorex/components/popup';
9
+ import { AXPopupRef, AXPopupService } from '@acorex/components/popup';
10
10
  import { AXFileUploadOptions, AXUploadResult, AXUploadReference, AXUploaderService, AXUploaderFileChangeEvent } from '@acorex/cdk/uploader';
11
+ import { AXToastService } from '@acorex/components/toast';
12
+ import { AXValidationRuleResult } from '@acorex/core/validation';
11
13
  import { AXListComponent } from '@acorex/components/list';
12
14
  import * as rxjs from 'rxjs';
13
15
  import { Observable } from 'rxjs';
@@ -17,8 +19,6 @@ import { AXTabLocation } from '@acorex/components/tabs';
17
19
  import { AXBasePageComponent } from '@acorex/components/page';
18
20
  import * as _acorex_core_file from '@acorex/core/file';
19
21
  import { AXFileTypeRegistryService, AXFileTypeExtensionHint, AXFileTypeOpenContext, AXFileTypeInfoProvider, AXFileType, AXFileService } from '@acorex/core/file';
20
- import { AXToastService } from '@acorex/components/toast';
21
- import { AXValidationRuleResult } from '@acorex/core/validation';
22
22
  import { AXMapMarker } from '@acorex/components/map';
23
23
  import { AXWaveConfig, AXAudioWaveChangeEvent } from '@acorex/components/audio-wave';
24
24
  import { AXRangeSliderValue } from '@acorex/components/range-slider';
@@ -472,6 +472,8 @@ interface AXConversationMessageListThemeBackground {
472
472
  }
473
473
  /** Single CSS value (both themes) or per-theme `{ light, dark }` backgrounds. */
474
474
  type AXConversationMessageListBackground = string | AXConversationMessageListThemeBackground;
475
+ /** Composer file-attachment UI: picker popup vs inline strip above the input. */
476
+ type AXConversationComposerAttachmentPresentation = 'overlay' | 'banner';
475
477
  /**
476
478
  * Conversation metadata
477
479
  * Extensible map for app-specific conversation data.
@@ -482,10 +484,16 @@ interface AXConversationMetadata extends Record<string, unknown> {
482
484
  /** Optional custom empty-state component for the message list. */
483
485
  messageListEmptyComponent?: Type<AXConversationMessageListEmptyComponent>;
484
486
  /**
485
- * When `false`, hides reaction UI (add button, bubbles, picker) for this conversation.
486
- * Defaults to `true` when omitted.
487
+ * Explicit reaction UI override for this conversation.
488
+ * When omitted, reactions are enabled for `private` / `group` / `channel` and disabled for `bot`.
487
489
  */
488
490
  reactionsEnabled?: boolean;
491
+ /**
492
+ * How composer file attachments are presented.
493
+ * `overlay` opens the picker popup; `banner` keeps files above the composer (ChatGPT-style).
494
+ * When omitted, `bot` chats default to `banner` and other types to `overlay`.
495
+ */
496
+ composerAttachmentPresentation?: AXConversationComposerAttachmentPresentation;
489
497
  }
490
498
  /** Contract for custom empty-state components rendered by message list. */
491
499
  interface AXConversationMessageListEmptyComponent {
@@ -694,6 +702,72 @@ declare abstract class AXConversationBaseRegistry<T extends AXConversationRegist
694
702
  protected abstract getRegistryName(): string;
695
703
  }
696
704
 
705
+ /**
706
+ * Shared upload state and helpers for composer media pickers.
707
+ */
708
+
709
+ /** Stable id for `@for` tracking while upload state is patched immutably. */
710
+ declare function createPickerUploadItemId(): string;
711
+ interface AXConversationComposerPickerUploadItem {
712
+ id: string;
713
+ file: File;
714
+ preview?: string;
715
+ duration?: number;
716
+ uploadProgress?: number;
717
+ uploading?: boolean;
718
+ uploaded?: boolean;
719
+ uploadedUrl?: string;
720
+ mediaId?: string;
721
+ error?: string;
722
+ abortController?: AbortController;
723
+ }
724
+ declare function getPickerCancelUploadLabel(translation: AXTranslationService): string;
725
+ declare function abortPickerUploads(items: Iterable<{
726
+ abortController?: AbortController;
727
+ } | null | undefined>): void;
728
+ interface AXConversationCleanupPickerUploadsOptions {
729
+ retainUploaded?: boolean;
730
+ }
731
+ /** Upload finished; reference is {@link mediaId} and/or a non-empty session url. */
732
+ declare function isPickerItemReadyToSend(item: Pick<AXConversationComposerPickerUploadItem, 'uploaded' | 'uploadedUrl' | 'mediaId'>): boolean;
733
+ /** Build uploader result shape for {@link *ItemFromUpload} after picker upload. */
734
+ declare function pickerItemToUploadResult(item: Pick<AXConversationComposerPickerUploadItem, 'uploaded' | 'uploadedUrl' | 'mediaId' | 'file'>): {
735
+ url: string;
736
+ mediaId?: string;
737
+ mimeType: string;
738
+ size: number;
739
+ } | null;
740
+ declare function pickerItemToMediaReference(item: Pick<AXConversationComposerPickerUploadItem, 'uploaded' | 'uploadedUrl' | 'mediaId' | 'file'>): AXConversationUploaderReference | null;
741
+ declare function deleteUploadedPickerMedia(uploader: AXUploaderService, items: Iterable<AXConversationComposerPickerUploadItem | null | undefined>): Promise<void>;
742
+ declare function cleanupPickerUploads(uploader: AXUploaderService, items: Iterable<AXConversationComposerPickerUploadItem | null | undefined>, options?: AXConversationCleanupPickerUploadsOptions): void;
743
+ declare function revokePickerBlobPreviews(items: Iterable<{
744
+ preview?: string;
745
+ } | null | undefined>): void;
746
+ declare function isUploadAborted(error: unknown, signal?: AbortSignal): boolean;
747
+ declare function limitFilesToCapacity(files: File[], currentCount: number, maxFiles: number): File[];
748
+ declare function uploadPickerFile(uploader: AXUploaderService, conversationId: string, file: File, onProgress: (percent: number) => void, signal?: AbortSignal): Promise<{
749
+ url: string;
750
+ mediaId?: string;
751
+ mimeType: string;
752
+ size: number;
753
+ }>;
754
+ declare function notifyMaxFilesCapacityExceeded(toast: AXToastService, translation: AXTranslationService, maxFiles: number): void;
755
+ /** User-facing message for a file validation failure. */
756
+ declare function formatPickerValidationMessage(translation: AXTranslationService, file: File, error: AXValidationRuleResult | undefined): string;
757
+ /** Show a warning toast for each failed validation rule result. */
758
+ declare function notifyPickerValidationErrors(toast: AXToastService, translation: AXTranslationService, rejected: {
759
+ file: File;
760
+ errors: AXValidationRuleResult[];
761
+ }[]): void;
762
+ /** Close popup/action-sheet host or inline composer shell after send/cancel. */
763
+ declare function dismissComposerPickerHost(composerService: AXConversationComposerService, popupRef?: AXPopupRef | null, actionSheetRef?: AXActionSheetRef | null): void;
764
+
765
+ type AXConversationComposerDraftAttachmentKind = 'image' | 'video' | 'audio' | 'file';
766
+ interface AXConversationComposerDraftAttachment extends AXConversationComposerPickerUploadItem {
767
+ kind: AXConversationComposerDraftAttachmentKind;
768
+ icon: string;
769
+ }
770
+
697
771
  /** Primary composer button mode (send / cancel / stopping / default action / locked). */
698
772
  type AXConversationComposerPrimaryButtonMode = 'send' | 'cancel' | 'stopping' | 'default-action' | 'locked';
699
773
  declare class AXConversationComposerService {
@@ -701,8 +775,13 @@ declare class AXConversationComposerService {
701
775
  private readonly generationState;
702
776
  private readonly translation;
703
777
  private readonly popupService;
778
+ private readonly uploader;
779
+ private readonly fileService;
780
+ private readonly toast;
704
781
  private readonly config;
782
+ private readonly destroyRef;
705
783
  private readonly _activeActionOverlay;
784
+ constructor();
706
785
  private get registry();
707
786
  private readonly _replyMessage;
708
787
  private readonly _editMessage;
@@ -712,8 +791,10 @@ declare class AXConversationComposerService {
712
791
  readonly activeMessages: _angular_core.Signal<AXConversationMessage[]>;
713
792
  /** Draft text */
714
793
  readonly draftText: _angular_core.WritableSignal<string>;
715
- /** Attachments */
716
- readonly attachments: _angular_core.WritableSignal<File[]>;
794
+ /** Inline composer attachments shown above the input in banner mode. */
795
+ readonly draftAttachments: _angular_core.WritableSignal<AXConversationComposerDraftAttachment[]>;
796
+ readonly draftAttachmentsReady: _angular_core.Signal<boolean>;
797
+ readonly usesAttachmentBanner: _angular_core.Signal<boolean>;
717
798
  /** Incremented to request focus on the composer text area (handled by AXConversationComposerComponent). */
718
799
  private readonly _focusRequest;
719
800
  readonly focusRequest: _angular_core.Signal<number>;
@@ -750,6 +831,7 @@ declare class AXConversationComposerService {
750
831
  startEdit(message: AXConversationMessage): void;
751
832
  /** Focus the composer text area when the composer component is mounted. */
752
833
  focusComposer(): void;
834
+ clearReplyEdit(): void;
753
835
  clear(): void;
754
836
  /**
755
837
  * Persist draft for the previous conversation and reset composer UI state when switching conversations.
@@ -768,6 +850,15 @@ declare class AXConversationComposerService {
768
850
  toggleable?: boolean;
769
851
  initialFiles?: File[];
770
852
  }): Promise<void>;
853
+ browseDraftAttachments(fileType?: string): Promise<number>;
854
+ addDraftAttachments(files: File[]): Promise<number>;
855
+ removeDraftAttachment(id: string): void;
856
+ clearDraftAttachments(options?: {
857
+ retainUploaded?: boolean;
858
+ }): void;
859
+ buildDraftAttachmentCommand(caption?: string): Promise<AXConversationSendMessageCommand | null>;
860
+ private uploadDraftAttachment;
861
+ private patchDraftAttachment;
771
862
  /**
772
863
  * Hide the active action overlay.
773
864
  */
@@ -1680,8 +1771,9 @@ declare class AXConversationComposerComponent implements OnDestroy {
1680
1771
  private readonly textAreaRef;
1681
1772
  /** Draft text - use service */
1682
1773
  readonly draftText: _angular_core.WritableSignal<string>;
1683
- /** Attachments - use service */
1684
- readonly attachments: _angular_core.WritableSignal<File[]>;
1774
+ /** Draft attachments shown above the composer in banner mode. */
1775
+ readonly draftAttachments: _angular_core.WritableSignal<_acorex_components_conversation.AXConversationComposerDraftAttachment[]>;
1776
+ readonly usesAttachmentBanner: _angular_core.Signal<boolean>;
1685
1777
  /** Editing message */
1686
1778
  readonly editingMessage: _angular_core.WritableSignal<any>;
1687
1779
  /** Replying to message */
@@ -1712,6 +1804,7 @@ declare class AXConversationComposerComponent implements OnDestroy {
1712
1804
  readonly placeholder: _angular_core.Signal<string>;
1713
1805
  constructor();
1714
1806
  private draftSaveTimeout?;
1807
+ private seededEditMessageId;
1715
1808
  /** Number of input rows - use service */
1716
1809
  readonly inputRows: _angular_core.Signal<number>;
1717
1810
  /** Can send message - use service */
@@ -1738,6 +1831,10 @@ declare class AXConversationComposerComponent implements OnDestroy {
1738
1831
  readonly defaultAction: _angular_core.Signal<AXConversationComposerAction>;
1739
1832
  /** Handle key down (send on Enter; typing is driven by draft changes only). */
1740
1833
  onKeyDown(event: AXHtmlEvent<KeyboardEvent>): void;
1834
+ /** Keep the draft signal in sync with ngModel (signal two-way bind is unreliable on ax-text-area). */
1835
+ onDraftModelChange(value: string): void;
1836
+ /** Keep the draft signal in sync with ax-text-area CVA output. */
1837
+ onDraftValueChanged(event: unknown): void;
1741
1838
  /** Handle draft text changes — throttled typing indicator via conversation service. */
1742
1839
  onDraftChanged(): void;
1743
1840
  /** Cleanup on destroy */
@@ -1781,9 +1878,13 @@ declare class AXConversationComposerComponent implements OnDestroy {
1781
1878
  getDefaultActionIcon(): string;
1782
1879
  /** Handle voice click */
1783
1880
  onVoiceClick(): void;
1784
- /** Remove attachment */
1785
- removeAttachment(index: number): void;
1786
- /** Cancel edit/reply mode */
1881
+ /** Remove a draft attachment from the composer banner. */
1882
+ removeDraftAttachment(id: string): void;
1883
+ addDraftAttachments(): void;
1884
+ dismissDraftAttachments(): void;
1885
+ draftAttachmentLabel(name: string): string;
1886
+ canAddDraftAttachments(): boolean;
1887
+ /** Cancel edit/reply mode without dropping draft attachments. */
1787
1888
  cancelEditReply(): void;
1788
1889
  /** Start editing a message */
1789
1890
  startEdit(message: any): void;
@@ -1791,6 +1892,11 @@ declare class AXConversationComposerComponent implements OnDestroy {
1791
1892
  startReply(message: AXConversationMessage): void;
1792
1893
  /** Focus the native textarea inside ax-text-area */
1793
1894
  private focusTextArea;
1895
+ /** Prefer the visible textarea when it differs from the original edit; else the draft signal. */
1896
+ private resolveComposerText;
1897
+ private readOriginalEditText;
1898
+ private readNativeComposerText;
1899
+ private readChangedText;
1794
1900
  private getClickTarget;
1795
1901
  /** Handle action click */
1796
1902
  onActionClick(actionId: string, event?: AXClickEvent | MouseEvent, initialFiles?: File[]): Promise<void>;
@@ -2085,6 +2191,7 @@ interface AXConversationUpdateData {
2085
2191
  interface AXConversationDeleteOptions {
2086
2192
  /**
2087
2193
  * Private: destroy the chat for every participant (Telegram "delete for both").
2194
+ * Bot: always delete for both sides.
2088
2195
  * Group/channel: only valid for the creator — destroys the room for everyone.
2089
2196
  * Defaults to `false` (hide / clear history for the current user only).
2090
2197
  */
@@ -3100,7 +3207,10 @@ interface AXConversationLoadMessagesResult {
3100
3207
  * - Automatic rollback on failures
3101
3208
  */
3102
3209
  declare class AXConversationService {
3210
+ private static readonly createDisplayMetadataKeys;
3103
3211
  private static normalizeOptionalString;
3212
+ /** Keep flags like `reactionsEnabled`; drop display fields already mapped onto the conversation. */
3213
+ private static toPersistedConversationMetadata;
3104
3214
  private readonly config;
3105
3215
  private readonly state;
3106
3216
  readonly userApi: AXConversationUserApi;
@@ -3443,8 +3553,10 @@ declare class AXConversationService {
3443
3553
  /**
3444
3554
  * Delete, hide, or leave a conversation.
3445
3555
  * Opens a confirmation popup (checkbox for private/creator destroy), then updates the store.
3556
+ * Bot chats skip the prompt and always delete for both sides.
3446
3557
  */
3447
3558
  deleteConversation(conversationId: string): Promise<boolean>;
3559
+ private performDeleteConversation;
3448
3560
  /**
3449
3561
  * Get reply count for a message
3450
3562
  * @param messageId - Message ID
@@ -3852,8 +3964,17 @@ declare function resolveConversationTitleForViewer(conversation: AXConversation,
3852
3964
  * Does not mutate the source object.
3853
3965
  */
3854
3966
  declare function resolveConversationForViewer(conversation: AXConversation, currentUserId?: string): AXConversation;
3855
- /** Whether message reactions are enabled for a conversation. Defaults to `true` when omitted. */
3967
+ /**
3968
+ * Whether message reactions are enabled for a conversation.
3969
+ * `metadata.reactionsEnabled` wins when set; otherwise `bot` chats default to off.
3970
+ */
3856
3971
  declare function isConversationReactionsEnabled(conversation?: AXConversation | null): boolean;
3972
+ /**
3973
+ * How file attachments are shown in the composer.
3974
+ * `metadata.composerAttachmentPresentation` wins when set; otherwise `bot` chats use `banner`.
3975
+ */
3976
+ declare function resolveComposerAttachmentPresentation(conversation?: AXConversation | null): AXConversationComposerAttachmentPresentation;
3977
+ declare function isComposerAttachmentBannerEnabled(conversation?: AXConversation | null): boolean;
3857
3978
 
3858
3979
  /** Group and channel rooms share join/leave and creator-destroy rules. */
3859
3980
  declare function isGroupLikeConversation(conversationOrType: AXConversation | AXConversationType | undefined): boolean;
@@ -4864,66 +4985,6 @@ declare function audioItemFromUpload(file: File, result: AXConversationUploaderR
4864
4985
  declare function mergeAudioUploadResult(payload: AXConversationMessagePayload, result: AXUploadResult): AXConversationMessagePayload;
4865
4986
  declare function applyAudioLocalPreview(payload: AXConversationMessagePayload, localUrl: string, mimeType?: string): AXConversationMessagePayload;
4866
4987
 
4867
- /**
4868
- * Shared upload state and helpers for composer media pickers.
4869
- */
4870
-
4871
- /** Stable id for `@for` tracking while upload state is patched immutably. */
4872
- declare function createPickerUploadItemId(): string;
4873
- interface AXConversationComposerPickerUploadItem {
4874
- id: string;
4875
- file: File;
4876
- preview?: string;
4877
- duration?: number;
4878
- uploadProgress?: number;
4879
- uploading?: boolean;
4880
- uploaded?: boolean;
4881
- uploadedUrl?: string;
4882
- mediaId?: string;
4883
- error?: string;
4884
- abortController?: AbortController;
4885
- }
4886
- declare function getPickerCancelUploadLabel(translation: AXTranslationService): string;
4887
- declare function abortPickerUploads(items: Iterable<{
4888
- abortController?: AbortController;
4889
- } | null | undefined>): void;
4890
- interface AXConversationCleanupPickerUploadsOptions {
4891
- retainUploaded?: boolean;
4892
- }
4893
- /** Upload finished; reference is {@link mediaId} and/or a non-empty session url. */
4894
- declare function isPickerItemReadyToSend(item: Pick<AXConversationComposerPickerUploadItem, 'uploaded' | 'uploadedUrl' | 'mediaId'>): boolean;
4895
- /** Build uploader result shape for {@link *ItemFromUpload} after picker upload. */
4896
- declare function pickerItemToUploadResult(item: Pick<AXConversationComposerPickerUploadItem, 'uploaded' | 'uploadedUrl' | 'mediaId' | 'file'>): {
4897
- url: string;
4898
- mediaId?: string;
4899
- mimeType: string;
4900
- size: number;
4901
- } | null;
4902
- declare function pickerItemToMediaReference(item: Pick<AXConversationComposerPickerUploadItem, 'uploaded' | 'uploadedUrl' | 'mediaId' | 'file'>): AXConversationUploaderReference | null;
4903
- declare function deleteUploadedPickerMedia(uploader: AXUploaderService, items: Iterable<AXConversationComposerPickerUploadItem | null | undefined>): Promise<void>;
4904
- declare function cleanupPickerUploads(uploader: AXUploaderService, items: Iterable<AXConversationComposerPickerUploadItem | null | undefined>, options?: AXConversationCleanupPickerUploadsOptions): void;
4905
- declare function revokePickerBlobPreviews(items: Iterable<{
4906
- preview?: string;
4907
- } | null | undefined>): void;
4908
- declare function isUploadAborted(error: unknown, signal?: AbortSignal): boolean;
4909
- declare function limitFilesToCapacity(files: File[], currentCount: number, maxFiles: number): File[];
4910
- declare function uploadPickerFile(uploader: AXUploaderService, conversationId: string, file: File, onProgress: (percent: number) => void, signal?: AbortSignal): Promise<{
4911
- url: string;
4912
- mediaId?: string;
4913
- mimeType: string;
4914
- size: number;
4915
- }>;
4916
- declare function notifyMaxFilesCapacityExceeded(toast: AXToastService, translation: AXTranslationService, maxFiles: number): void;
4917
- /** User-facing message for a file validation failure. */
4918
- declare function formatPickerValidationMessage(translation: AXTranslationService, file: File, error: AXValidationRuleResult | undefined): string;
4919
- /** Show a warning toast for each failed validation rule result. */
4920
- declare function notifyPickerValidationErrors(toast: AXToastService, translation: AXTranslationService, rejected: {
4921
- file: File;
4922
- errors: AXValidationRuleResult[];
4923
- }[]): void;
4924
- /** Close popup/action-sheet host or inline composer shell after send/cancel. */
4925
- declare function dismissComposerPickerHost(composerService: AXConversationComposerService, popupRef?: AXPopupRef | null, actionSheetRef?: AXActionSheetRef | null): void;
4926
-
4927
4988
  interface AXConversationAudioFile extends AXConversationComposerPickerUploadItem {
4928
4989
  duration?: number;
4929
4990
  dataUrl?: string;
@@ -5230,15 +5291,19 @@ declare class AXConversationPickerFooterComponent {
5230
5291
  }
5231
5292
 
5232
5293
  declare class AXConversationPickerHeaderComponent {
5294
+ private readonly translation;
5233
5295
  readonly title: _angular_core.InputSignal<string>;
5234
5296
  readonly showMenu: _angular_core.InputSignal<boolean>;
5235
5297
  readonly addMoreLabel: _angular_core.InputSignal<string>;
5298
+ readonly closeLabel: _angular_core.InputSignal<string>;
5236
5299
  readonly onClose: _angular_core.OutputEmitterRef<void>;
5237
5300
  readonly onAddMore: _angular_core.OutputEmitterRef<void>;
5238
5301
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationPickerHeaderComponent, never>;
5239
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXConversationPickerHeaderComponent, "ax-conversation-picker-header", never, { "title": { "alias": "title"; "required": true; "isSignal": true; }; "showMenu": { "alias": "showMenu"; "required": false; "isSignal": true; }; "addMoreLabel": { "alias": "addMoreLabel"; "required": false; "isSignal": true; }; }, { "onClose": "onClose"; "onAddMore": "onAddMore"; }, never, never, true, never>;
5302
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXConversationPickerHeaderComponent, "ax-conversation-picker-header", never, { "title": { "alias": "title"; "required": true; "isSignal": true; }; "showMenu": { "alias": "showMenu"; "required": false; "isSignal": true; }; "addMoreLabel": { "alias": "addMoreLabel"; "required": false; "isSignal": true; }; "closeLabel": { "alias": "closeLabel"; "required": false; "isSignal": true; }; }, { "onClose": "onClose"; "onAddMore": "onAddMore"; }, never, never, true, never>;
5240
5303
  }
5241
5304
 
5305
+ /** Explorer/OS paste often has an empty MIME type; catalogs reject that. */
5306
+ declare function normalizeConversationInboundFile(file: File): File;
5242
5307
  /** Extract OS-copied files from a paste event (e.g. Ctrl+V after copying a file in Explorer). */
5243
5308
  declare function filesFromClipboardEvent(event: ClipboardEvent): File[];
5244
5309
 
@@ -5248,6 +5313,7 @@ interface AXConversationMediaDimensions {
5248
5313
  duration: number;
5249
5314
  }
5250
5315
  declare function probeImageDimensions(source: Blob | string): Promise<Pick<AXConversationMediaDimensions, 'width' | 'height'>>;
5316
+ declare function probeAudioDuration(source: Blob): Promise<number>;
5251
5317
  declare function probeVideoMedia(source: Blob): Promise<AXConversationMediaDimensions>;
5252
5318
 
5253
5319
  declare function formatFileSize(bytes: number): string;
@@ -5675,6 +5741,7 @@ declare const AX_CONVERSATION_INFO_BAR_ARCHIVE_ACTION: AXConversationInfoBarActi
5675
5741
  /**
5676
5742
  * Delete/Leave conversation action (smart action that adapts based on conversation type)
5677
5743
  * - Private: "Delete" - Deletes the conversation
5744
+ * - Bot: "Delete" - Deletes for both sides without a confirmation prompt
5678
5745
  * - Group/Channel: "Leave & Delete" - Leaves the group and removes it from list
5679
5746
  */
5680
5747
  declare const AX_CONVERSATION_INFO_BAR_DELETE_ACTION: AXConversationInfoBarAction;
@@ -6308,6 +6375,7 @@ declare const AX_CONVERSATION_ITEM_DIVIDER: AXConversationItemAction;
6308
6375
  /**
6309
6376
  * Delete/Leave conversation action (smart action that adapts based on conversation type)
6310
6377
  * - Private: "Delete" - Deletes the conversation
6378
+ * - Bot: "Delete" - Deletes for both sides without a confirmation prompt
6311
6379
  * - Group/Channel: "Leave & Delete" - Leaves the group and removes it from list
6312
6380
  */
6313
6381
  declare const AX_CONVERSATION_ITEM_DELETE_ACTION: AXConversationItemAction;
@@ -6807,5 +6875,5 @@ declare function getErrorMessage(code: string, params?: Record<string, string |
6807
6875
  */
6808
6876
  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'];
6809
6877
 
6810
- export { AXConversationApi, AXConversationApiLoggerService, AXConversationAudioAttachmentComponent, AXConversationAudioFileTypeProvider, AXConversationAudioPickerComponent, AXConversationAudioRendererComponent, AXConversationAvatarComponent, AXConversationAvatarPickerComponent, AXConversationBaseRegistry, AXConversationComposerActionRegistry, AXConversationComposerComponent, AXConversationComposerFileTypesProvider, AXConversationComposerGenerationStateService, AXConversationComposerPopupComponent, AXConversationComposerService, AXConversationComposerTabRegistry, AXConversationContainerComponent, AXConversationContainerDirective, AXConversationDateUtilsService, AXConversationDeleteDialogComponent, 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_JUMBO_EMOJI_MAX, 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, countLoneEmojis, createConversationAudioFileType, createConversationFileFileType, createConversationImageFileType, createConversationVideoFileType, createConversationVoiceFileType, createLocalPreviewUrl, createObjectUrl, createPickerDragHandlers, createPickerUploadItemId, createResolvedMediaUrlSignal, deleteUploadedPickerMedia, dismissComposerPickerHost, ensureConversationFileCatalogRegistered, fetchConversationMediaPage, fileItemAsAudioMedia, fileItemFromUpload, filesFromClipboardEvent, filterMessagesByMediaCategory, filterSupplementalInfoPanelMessages, findExistingPrivateConversation, formatDuration, formatErrorMessage, formatFileByteSize, formatFileSize, formatMediaDuration, formatPickerValidationMessage, getActiveComposerPickerPasteHandler, getConversationMediaCategories, getConversationProfileFields, getErrorMessage, getMessageAudioItems, getMessageVideoItems, getPickerCancelUploadLabel, getPrivatePeerParticipant, hasRegistryComponent, inferFileExtensionHintFromMessage, isAttachmentListCategory, isComposerTabEnabled, isConversationReactionsEnabled, isConversationRoomCreator, isGenericPrivateConversationTitle, isGridMediaCategory, isGroupLikeConversation, isJumboEmojiText, isJumboEmojiTextMessage, isMessageDeliveryPending, isMessageListThemeBackground, isMessageVisibleAfterHistoryCutoff, isNonPersistableMediaUrl, isPickerItemReadyToSend, isPlainChromeMessage, isSameMessageListBackground, isUploadAborted, limitFilesToCapacity, listTextGraphemes, mediaCopyText, mergeAudioUploadResult, mergeFileUploadResult, mergeInfoPanelMessages, mergeUploadResult, mergeVideoUploadResult, mergeVoiceUploadResult, mergeWithDefaults, messageContainsLink, normalizeAudioPayload, normalizeFilePayload, normalizeImagePayload, normalizeMessageListBackgroundValue, normalizeVideoPayload, notifyMaxFilesCapacityExceeded, notifyPickerValidationErrors, openWithFileType, pickDisplayMediaUrl, pickEarliestJoinedParticipant, pickerItemToMediaReference, pickerItemToUploadResult, probeImageDimensions, probeVideoMedia, provideConversation, provideConversationComposerFileTypes, provideConversationFileCatalog, registerComposerPickerPasteHandler, reportMediaLoadError, resolveComposerMaxFiles, resolveConversationAvatarDisplay, resolveConversationComposerTabs, resolveConversationForViewer, resolveConversationMessageFileType, resolveConversationPeerParticipant, resolveConversationPeerUserId, resolveConversationTitleForViewer, resolveGalleryImageUrl, resolveImageDisplayUrl, resolveMessageChrome, resolveMessageListBackgroundRaw, resolveMessageListBackgroundStyle, resolveParticipantProfile, resolvePersistableMediaUrl, resolvePersistedThumbnailUrl, resolvePrivatePeerParticipant, resolvePrivatePeerUserId, resolveUserAvatarDisplay, resolveVideoThumbnailUrl, revokeObjectUrl, revokePickerBlobPreviews, sanitizeInput, shouldUseUserAvatarForConversation, sortUsersForForward, syncPlaybackInfoBarBanner, toUploaderReference as toMediaItemUploaderReference, toUploaderReference$1 as toUploaderReference, uploadPickerFile, usesDefaultMessageListWallpaper, validateConversationId, validateEmail, validateLatitude, validateLongitude, validateMessagePayload, validateMessageText, validateMessageType, validateUrl, validateUserId, validateUserIds, videoItemFromUpload };
6811
- 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, AXConversationDeleteDialogMode, AXConversationDeleteDialogResult, AXConversationDeleteMessageCommand, AXConversationDeleteOptions, AXConversationDropdownMenuItem, AXConversationEditMessageCommand, AXConversationError, AXConversationErrorCode, AXConversationErrorHandlerConfig, AXConversationErrorMessage, AXConversationErrorSeverity, AXConversationFeatures, AXConversationFileMediaItem, AXConversationFilePayload, AXConversationFilter, AXConversationFilters, AXConversationForwardUserSortEntry, AXConversationGroupedReaction, AXConversationImageMediaItem, AXConversationImagePayload, AXConversationInfoBarAction, AXConversationInfoBarActionComponent, AXConversationInfoBarActionContext, AXConversationInfoBarActiveBanner, AXConversationInfoBarActiveComponent, AXConversationInfoProfileField, AXConversationItemAction, AXConversationItemActionContext, AXConversationLink, AXConversationLinkPreview, AXConversationLoadMessagesResult, AXConversationLocationPayload, AXConversationMediaCategory, AXConversationMediaCategoryId, AXConversationMediaDimensions, AXConversationMediaGalleryTile, AXConversationMediaItemFields, AXConversationMediaPageResult, AXConversationMention, AXConversationMessage, AXConversationMessageAction, AXConversationMessageActionContext, AXConversationMessageChrome, 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, AXConversationPickerPasteHandler, 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 };
6878
+ export { AXConversationApi, AXConversationApiLoggerService, AXConversationAudioAttachmentComponent, AXConversationAudioFileTypeProvider, AXConversationAudioPickerComponent, AXConversationAudioRendererComponent, AXConversationAvatarComponent, AXConversationAvatarPickerComponent, AXConversationBaseRegistry, AXConversationComposerActionRegistry, AXConversationComposerComponent, AXConversationComposerFileTypesProvider, AXConversationComposerGenerationStateService, AXConversationComposerPopupComponent, AXConversationComposerService, AXConversationComposerTabRegistry, AXConversationContainerComponent, AXConversationContainerDirective, AXConversationDateUtilsService, AXConversationDeleteDialogComponent, 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_JUMBO_EMOJI_MAX, 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, countLoneEmojis, createConversationAudioFileType, createConversationFileFileType, createConversationImageFileType, createConversationVideoFileType, createConversationVoiceFileType, createLocalPreviewUrl, createObjectUrl, createPickerDragHandlers, createPickerUploadItemId, createResolvedMediaUrlSignal, deleteUploadedPickerMedia, dismissComposerPickerHost, ensureConversationFileCatalogRegistered, fetchConversationMediaPage, fileItemAsAudioMedia, fileItemFromUpload, filesFromClipboardEvent, filterMessagesByMediaCategory, filterSupplementalInfoPanelMessages, findExistingPrivateConversation, formatDuration, formatErrorMessage, formatFileByteSize, formatFileSize, formatMediaDuration, formatPickerValidationMessage, getActiveComposerPickerPasteHandler, getConversationMediaCategories, getConversationProfileFields, getErrorMessage, getMessageAudioItems, getMessageVideoItems, getPickerCancelUploadLabel, getPrivatePeerParticipant, hasRegistryComponent, inferFileExtensionHintFromMessage, isAttachmentListCategory, isComposerAttachmentBannerEnabled, isComposerTabEnabled, isConversationReactionsEnabled, isConversationRoomCreator, isGenericPrivateConversationTitle, isGridMediaCategory, isGroupLikeConversation, isJumboEmojiText, isJumboEmojiTextMessage, isMessageDeliveryPending, isMessageListThemeBackground, isMessageVisibleAfterHistoryCutoff, isNonPersistableMediaUrl, isPickerItemReadyToSend, isPlainChromeMessage, isSameMessageListBackground, isUploadAborted, limitFilesToCapacity, listTextGraphemes, mediaCopyText, mergeAudioUploadResult, mergeFileUploadResult, mergeInfoPanelMessages, mergeUploadResult, mergeVideoUploadResult, mergeVoiceUploadResult, mergeWithDefaults, messageContainsLink, normalizeAudioPayload, normalizeConversationInboundFile, normalizeFilePayload, normalizeImagePayload, normalizeMessageListBackgroundValue, normalizeVideoPayload, notifyMaxFilesCapacityExceeded, notifyPickerValidationErrors, openWithFileType, pickDisplayMediaUrl, pickEarliestJoinedParticipant, pickerItemToMediaReference, pickerItemToUploadResult, probeAudioDuration, probeImageDimensions, probeVideoMedia, provideConversation, provideConversationComposerFileTypes, provideConversationFileCatalog, registerComposerPickerPasteHandler, reportMediaLoadError, resolveComposerAttachmentPresentation, resolveComposerMaxFiles, resolveConversationAvatarDisplay, resolveConversationComposerTabs, resolveConversationForViewer, resolveConversationMessageFileType, resolveConversationPeerParticipant, resolveConversationPeerUserId, resolveConversationTitleForViewer, resolveGalleryImageUrl, resolveImageDisplayUrl, resolveMessageChrome, resolveMessageListBackgroundRaw, resolveMessageListBackgroundStyle, resolveParticipantProfile, resolvePersistableMediaUrl, resolvePersistedThumbnailUrl, resolvePrivatePeerParticipant, resolvePrivatePeerUserId, resolveUserAvatarDisplay, resolveVideoThumbnailUrl, revokeObjectUrl, revokePickerBlobPreviews, sanitizeInput, shouldUseUserAvatarForConversation, sortUsersForForward, syncPlaybackInfoBarBanner, toUploaderReference as toMediaItemUploaderReference, toUploaderReference$1 as toUploaderReference, uploadPickerFile, usesDefaultMessageListWallpaper, validateConversationId, validateEmail, validateLatitude, validateLongitude, validateMessagePayload, validateMessageText, validateMessageType, validateUrl, validateUserId, validateUserIds, videoItemFromUpload };
6879
+ export type { AXConversation, AXConversationApiError, AXConversationApiLogEntry, AXConversationApiName, AXConversationAudioMediaItem, AXConversationAudioPayload, AXConversationAvatarComponents, AXConversationAvatarDisplay, AXConversationAvatarKind, AXConversationBlockReportReason, AXConversationCleanupPickerUploadsOptions, AXConversationComposerAction, AXConversationComposerActionComponent, AXConversationComposerActionContext, AXConversationComposerAttachmentPresentation, AXConversationComposerDraftAttachment, AXConversationComposerDraftAttachmentKind, AXConversationComposerGenerationPhase, AXConversationComposerPickerUploadItem, AXConversationComposerPrimaryButtonMode, AXConversationComposerTab, AXConversationComposerTabFeature, AXConversationConfig, AXConversationConnectionStatus, AXConversationConversationAvatarComponent, AXConversationCreateData, AXConversationDateSeparatorKind, AXConversationDeleteDialogMode, AXConversationDeleteDialogResult, AXConversationDeleteMessageCommand, AXConversationDeleteOptions, AXConversationDropdownMenuItem, AXConversationEditMessageCommand, AXConversationError, AXConversationErrorCode, AXConversationErrorHandlerConfig, AXConversationErrorMessage, AXConversationErrorSeverity, AXConversationFeatures, AXConversationFileMediaItem, AXConversationFilePayload, AXConversationFilter, AXConversationFilters, AXConversationForwardUserSortEntry, AXConversationGroupedReaction, AXConversationImageMediaItem, AXConversationImagePayload, AXConversationInfoBarAction, AXConversationInfoBarActionComponent, AXConversationInfoBarActionContext, AXConversationInfoBarActiveBanner, AXConversationInfoBarActiveComponent, AXConversationInfoProfileField, AXConversationItemAction, AXConversationItemActionContext, AXConversationLink, AXConversationLinkPreview, AXConversationLoadMessagesResult, AXConversationLocationPayload, AXConversationMediaCategory, AXConversationMediaCategoryId, AXConversationMediaDimensions, AXConversationMediaGalleryTile, AXConversationMediaItemFields, AXConversationMediaPageResult, AXConversationMention, AXConversationMessage, AXConversationMessageAction, AXConversationMessageActionContext, AXConversationMessageChrome, 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, AXConversationPickerPasteHandler, 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 };
@@ -10,7 +10,8 @@ import * as i4 from '@acorex/components/loading';
10
10
  import * as i5 from '@acorex/components/dropdown';
11
11
 
12
12
  /**
13
- * The Button is a component which detects user interaction and triggers a corresponding event
13
+ * Combines a button and a dropdown menu. Prefer this over composing `ax-dropdown-panel` inside
14
+ * `ax-button`, which is deprecated.
14
15
  *
15
16
  * @category Components
16
17
  */
@@ -159,6 +159,11 @@ declare abstract class MXDropdownBoxBaseComponent extends MXInteractiveComponent
159
159
  /**
160
160
  * A panel for displaying dropdown content with configurable width and positioning.
161
161
  *
162
+ * Do not compose this component inside `ax-button` for menu triggers; use
163
+ * `AXDropdownButtonComponent` from `@acorex/components/dropdown-button` instead. That pattern is
164
+ * deprecated. `ax-dropdown-panel` remains supported for other hosts (for example `ax-dropdown-box`)
165
+ * and for internal use by `ax-dropdown-button`.
166
+ *
162
167
  * @category Components
163
168
  */
164
169
  declare class AXDropdownPanelComponent extends MXInteractiveComponent implements OnDestroy {
@@ -50,6 +50,7 @@ declare class AXNumberBoxComponent extends AXNumberBoxComponent_base {
50
50
  protected handleUpClick(): void;
51
51
  protected handleDownClick(): void;
52
52
  protected handleOnMaskChanged(e: AXInputMaskEvent): void;
53
+ protected handleOnBlurEvent(e: FocusEvent): void;
53
54
  protected onWheel(event: WheelEvent): void;
54
55
  reset(): void;
55
56
  private get __hostName();
@@ -33,6 +33,10 @@ declare class AXPopoverComponent extends MXBaseComponent implements OnDestroy {
33
33
  /** @ignore */
34
34
  private _scrollActivationFrame;
35
35
  /** @ignore */
36
+ private _leaveCloseTimer;
37
+ /** @ignore */
38
+ private _overlayLeaveEvents;
39
+ /** @ignore */
36
40
  private resizeObserver;
37
41
  /** @ignore */
38
42
  private resize$;
@@ -185,6 +189,10 @@ declare class AXPopoverComponent extends MXBaseComponent implements OnDestroy {
185
189
  /** @ignore */
186
190
  private bindOverlayEvents;
187
191
  /** @ignore */
192
+ private clearLeaveCloseTimer;
193
+ /** @ignore */
194
+ private scheduleLeaveClose;
195
+ /** @ignore */
188
196
  private removeOverlayEvents;
189
197
  /** @ignore */
190
198
  private setupScrollListener;
@@ -3,8 +3,10 @@ import { TemplateRef, ViewContainerRef, StaticProvider, ElementRef, OnInit, OnDe
3
3
  import * as i2 from '@acorex/cdk/common';
4
4
  import { NXComponent, MXBaseComponent, AXComponentClosedPromise } from '@acorex/cdk/common';
5
5
  import { AXComponentType, AXComponentInputs } from '@acorex/core/components';
6
+ import { AXResizeHandle } from '@acorex/cdk/resizable';
6
7
  import { AXOverlayAnimation } from '@acorex/cdk/overlay';
7
8
  import { Subject } from 'rxjs';
9
+ import * as _acorex_components_popup from '@acorex/components/popup';
8
10
  import * as i1 from '@angular/common';
9
11
  import * as i3 from '@acorex/components/decorators';
10
12
  import * as i4 from '@acorex/core/translation';
@@ -25,6 +27,28 @@ interface AXPopupButtonsConfig {
25
27
  maximize?: boolean;
26
28
  close?: boolean;
27
29
  }
30
+ interface AXPopupResizableConfig {
31
+ handles?: AXResizeHandle[];
32
+ minWidth?: number;
33
+ minHeight?: number;
34
+ /** Defaults to the viewport width when unset. */
35
+ maxWidth?: number;
36
+ /** Defaults to the viewport height when unset. */
37
+ maxHeight?: number;
38
+ lockAspectRatio?: boolean;
39
+ dblClickAction?: 'reset' | 'maximize' | 'fit';
40
+ }
41
+ declare const AX_POPUP_DEFAULT_RESIZE_HANDLES: AXResizeHandle[];
42
+ interface AXPopupResolvedResizableConfig {
43
+ enable: boolean;
44
+ handles: AXResizeHandle[];
45
+ minWidth: number;
46
+ minHeight: number;
47
+ maxWidth: number | null;
48
+ maxHeight: number | null;
49
+ lockAspectRatio: boolean;
50
+ dblClickAction: 'reset' | 'maximize' | 'fit';
51
+ }
28
52
  interface AXPopupConfig {
29
53
  title?: string;
30
54
  /** Flat alias; overridden by `buttons.close` when set. */
@@ -38,6 +62,8 @@ interface AXPopupConfig {
38
62
  data?: unknown;
39
63
  inputs?: unknown;
40
64
  draggable?: boolean;
65
+ /** Enable drag handles on the popup window. `true` uses defaults; pass an object to customize. */
66
+ resizable?: boolean | AXPopupResizableConfig;
41
67
  hasBackdrop?: boolean;
42
68
  backdropClass?: string;
43
69
  closeOnBackdropClick?: boolean;
@@ -124,6 +150,8 @@ declare function resolvePopupMinimize(config?: AXPopupConfig | null): {
124
150
  enable: boolean;
125
151
  position: AXPopupMinimizePosition;
126
152
  };
153
+ /** Resolves resize config. Disabled for `size: 'full'` and when `resizable` is false/omitted. */
154
+ declare function resolvePopupResizable(config?: AXPopupConfig | null): AXPopupResolvedResizableConfig;
127
155
 
128
156
  /**
129
157
  * Declarative popup host. Project content and call `open()` / `close()` on the component instance.
@@ -178,6 +206,7 @@ declare class AXPopupComponent extends MXBaseComponent implements OnInit, OnDest
178
206
  private loadingService;
179
207
  private _platform;
180
208
  private componentService;
209
+ private document;
181
210
  private contentContainerRef;
182
211
  private contentContainerEl;
183
212
  private popupEl;
@@ -200,17 +229,16 @@ declare class AXPopupComponent extends MXBaseComponent implements OnInit, OnDest
200
229
  protected skeletonTemplate: () => TemplateRef<unknown>;
201
230
  /** Current title */
202
231
  protected title: _angular_core.WritableSignal<string>;
203
- /** @ignore */
204
- protected isDragging: _angular_core.WritableSignal<boolean>;
205
- /** @ignore */
206
- protected dragOffset: _angular_core.WritableSignal<{
207
- x: number;
208
- y: number;
209
- }>;
210
- /** @ignore */
211
- private dragStartPos;
212
- /** @ignore */
213
- private elementStartPos;
232
+ /** Clamps dragging to the viewport (`document.documentElement`). */
233
+ protected readonly dragBoundary: _angular_core.WritableSignal<HTMLElement>;
234
+ protected readonly dragDisabled: _angular_core.Signal<boolean>;
235
+ protected readonly resizeConfig: _angular_core.Signal<_acorex_components_popup.AXPopupResolvedResizableConfig>;
236
+ protected readonly resizeActive: _angular_core.Signal<boolean>;
237
+ protected readonly resizeEnabled: _angular_core.Signal<boolean>;
238
+ private readonly viewportSize;
239
+ protected readonly resizeMaxWidth: _angular_core.Signal<number>;
240
+ protected readonly resizeMaxHeight: _angular_core.Signal<number>;
241
+ private viewportResizeHandler;
214
242
  protected popupSizeState: _angular_core.WritableSignal<"minimize" | "normal">;
215
243
  protected fullScreenState: _angular_core.WritableSignal<boolean>;
216
244
  protected minimizeLeft: _angular_core.WritableSignal<string>;
@@ -219,6 +247,7 @@ declare class AXPopupComponent extends MXBaseComponent implements OnInit, OnDest
219
247
  protected closeEnabled: () => boolean;
220
248
  protected maximizeEnabled: () => boolean;
221
249
  protected minimizeEnabled: () => boolean;
250
+ constructor();
222
251
  /** @ignore */
223
252
  ngOnInit(): void;
224
253
  /** @ignore */
@@ -259,9 +288,6 @@ declare class AXPopupComponent extends MXBaseComponent implements OnInit, OnDest
259
288
  * Sets the popup title.
260
289
  */
261
290
  setTitle(title: string): void;
262
- protected onDragStart(event: MouseEvent): void;
263
- onDragMove(event: MouseEvent): void;
264
- onDragEnd(): void;
265
291
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPopupComponent, never>;
266
292
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPopupComponent, "ax-popup", never, { "__content__": { "alias": "__content__"; "required": false; "isSignal": true; }; "__config__": { "alias": "__config__"; "required": false; "isSignal": true; }; "__popupRef__": { "alias": "__popupRef__"; "required": false; "isSignal": true; }; "__id__": { "alias": "__id__"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
267
293
  }
@@ -325,5 +351,5 @@ declare class AXPopupService {
325
351
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<any>;
326
352
  }
327
353
 
328
- export { AXPopupComponent, AXPopupComponentBase, AXPopupFooterComponent, AXPopupHostComponent, AXPopupModule, AXPopupService, resolvePopupCloseButton, resolvePopupMaximizable, resolvePopupMinimize };
329
- export type { AXPopupButtonsConfig, AXPopupConfig, AXPopupContentType, AXPopupData, AXPopupMinimizePosition, AXPopupRef, AXPopupSizeType };
354
+ export { AXPopupComponent, AXPopupComponentBase, AXPopupFooterComponent, AXPopupHostComponent, AXPopupModule, AXPopupService, AX_POPUP_DEFAULT_RESIZE_HANDLES, resolvePopupCloseButton, resolvePopupMaximizable, resolvePopupMinimize, resolvePopupResizable };
355
+ export type { AXPopupButtonsConfig, AXPopupConfig, AXPopupContentType, AXPopupData, AXPopupMinimizePosition, AXPopupRef, AXPopupResizableConfig, AXPopupResolvedResizableConfig, AXPopupSizeType };