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

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 (151) hide show
  1. package/fesm2022/acorex-components-accordion.mjs +4 -4
  2. package/fesm2022/acorex-components-accordion.mjs.map +1 -1
  3. package/fesm2022/acorex-components-action-sheet.mjs +2 -2
  4. package/fesm2022/acorex-components-action-sheet.mjs.map +1 -1
  5. package/fesm2022/acorex-components-alert.mjs +2 -2
  6. package/fesm2022/acorex-components-alert.mjs.map +1 -1
  7. package/fesm2022/acorex-components-audio-wave.mjs +2 -2
  8. package/fesm2022/acorex-components-avatar.mjs +2 -2
  9. package/fesm2022/acorex-components-avatar.mjs.map +1 -1
  10. package/fesm2022/acorex-components-badge.mjs +2 -2
  11. package/fesm2022/acorex-components-badge.mjs.map +1 -1
  12. package/fesm2022/acorex-components-bottom-navigation.mjs +2 -2
  13. package/fesm2022/acorex-components-bottom-navigation.mjs.map +1 -1
  14. package/fesm2022/acorex-components-breadcrumbs.mjs +2 -2
  15. package/fesm2022/acorex-components-breadcrumbs.mjs.map +1 -1
  16. package/fesm2022/acorex-components-button-group.mjs +2 -2
  17. package/fesm2022/acorex-components-button.mjs +6 -6
  18. package/fesm2022/acorex-components-button.mjs.map +1 -1
  19. package/fesm2022/acorex-components-calendar.mjs +6 -6
  20. package/fesm2022/acorex-components-calendar.mjs.map +1 -1
  21. package/fesm2022/acorex-components-check-box.mjs +2 -2
  22. package/fesm2022/acorex-components-check-box.mjs.map +1 -1
  23. package/fesm2022/acorex-components-chips.mjs +2 -2
  24. package/fesm2022/acorex-components-chips.mjs.map +1 -1
  25. package/fesm2022/acorex-components-circular-progress.mjs +2 -2
  26. package/fesm2022/acorex-components-circular-progress.mjs.map +1 -1
  27. package/fesm2022/acorex-components-color-box.mjs +2 -2
  28. package/fesm2022/acorex-components-color-box.mjs.map +1 -1
  29. package/fesm2022/acorex-components-color-palette.mjs +2 -2
  30. package/fesm2022/acorex-components-color-palette.mjs.map +1 -1
  31. package/fesm2022/acorex-components-command.mjs +2 -2
  32. package/fesm2022/acorex-components-command.mjs.map +1 -1
  33. package/fesm2022/acorex-components-comment.mjs +6 -6
  34. package/fesm2022/acorex-components-comment.mjs.map +1 -1
  35. package/fesm2022/acorex-components-conversation2.mjs +3021 -2868
  36. package/fesm2022/acorex-components-conversation2.mjs.map +1 -1
  37. package/fesm2022/acorex-components-data-pager.mjs +2 -2
  38. package/fesm2022/acorex-components-data-pager.mjs.map +1 -1
  39. package/fesm2022/acorex-components-data-table.mjs +2 -2
  40. package/fesm2022/acorex-components-data-table.mjs.map +1 -1
  41. package/fesm2022/acorex-components-datetime-box.mjs +2 -2
  42. package/fesm2022/acorex-components-datetime-box.mjs.map +1 -1
  43. package/fesm2022/acorex-components-datetime-input.mjs +2 -2
  44. package/fesm2022/acorex-components-datetime-picker.mjs +2 -2
  45. package/fesm2022/acorex-components-datetime-picker.mjs.map +1 -1
  46. package/fesm2022/acorex-components-decorators.mjs +11 -18
  47. package/fesm2022/acorex-components-decorators.mjs.map +1 -1
  48. package/fesm2022/acorex-components-dialog.mjs +2 -2
  49. package/fesm2022/acorex-components-dialog.mjs.map +1 -1
  50. package/fesm2022/acorex-components-drawer.mjs +4 -4
  51. package/fesm2022/acorex-components-dropdown-button.mjs +2 -2
  52. package/fesm2022/acorex-components-dropdown-button.mjs.map +1 -1
  53. package/fesm2022/acorex-components-dropdown.mjs +2 -2
  54. package/fesm2022/acorex-components-dropdown.mjs.map +1 -1
  55. package/fesm2022/acorex-components-editor.mjs +2 -2
  56. package/fesm2022/acorex-components-form.mjs +2 -2
  57. package/fesm2022/acorex-components-form.mjs.map +1 -1
  58. package/fesm2022/acorex-components-image-editor.mjs +387 -188
  59. package/fesm2022/acorex-components-image-editor.mjs.map +1 -1
  60. package/fesm2022/acorex-components-image.mjs +2 -2
  61. package/fesm2022/acorex-components-json-viewer.mjs +2 -2
  62. package/fesm2022/acorex-components-json-viewer.mjs.map +1 -1
  63. package/fesm2022/acorex-components-kanban.mjs +2 -2
  64. package/fesm2022/acorex-components-kanban.mjs.map +1 -1
  65. package/fesm2022/acorex-components-kbd.mjs +4 -6
  66. package/fesm2022/acorex-components-kbd.mjs.map +1 -1
  67. package/fesm2022/acorex-components-label.mjs +2 -2
  68. package/fesm2022/acorex-components-label.mjs.map +1 -1
  69. package/fesm2022/acorex-components-list.mjs +2 -2
  70. package/fesm2022/acorex-components-list.mjs.map +1 -1
  71. package/fesm2022/acorex-components-loading-dialog.mjs +2 -2
  72. package/fesm2022/acorex-components-loading-dialog.mjs.map +1 -1
  73. package/fesm2022/acorex-components-loading.mjs +4 -4
  74. package/fesm2022/acorex-components-loading.mjs.map +1 -1
  75. package/fesm2022/acorex-components-map.mjs +2 -2
  76. package/fesm2022/acorex-components-media-viewer.mjs +10 -10
  77. package/fesm2022/acorex-components-media-viewer.mjs.map +1 -1
  78. package/fesm2022/{acorex-components-modal-acorex-components-modal-lJw2DGSj.mjs → acorex-components-modal-acorex-components-modal-B6-H9xfe.mjs} +4 -4
  79. package/fesm2022/{acorex-components-modal-acorex-components-modal-lJw2DGSj.mjs.map → acorex-components-modal-acorex-components-modal-B6-H9xfe.mjs.map} +1 -1
  80. package/fesm2022/{acorex-components-modal-modal-content.component-t9kRuhc_.mjs → acorex-components-modal-modal-content.component-OKCXGuv_.mjs} +4 -4
  81. package/fesm2022/{acorex-components-modal-modal-content.component-t9kRuhc_.mjs.map → acorex-components-modal-modal-content.component-OKCXGuv_.mjs.map} +1 -1
  82. package/fesm2022/acorex-components-modal.mjs +1 -1
  83. package/fesm2022/acorex-components-navbar.mjs +2 -2
  84. package/fesm2022/acorex-components-navbar.mjs.map +1 -1
  85. package/fesm2022/acorex-components-notification.mjs +2 -2
  86. package/fesm2022/acorex-components-notification.mjs.map +1 -1
  87. package/fesm2022/acorex-components-number-box.mjs +2 -2
  88. package/fesm2022/acorex-components-paint.mjs +4 -4
  89. package/fesm2022/acorex-components-paint.mjs.map +1 -1
  90. package/fesm2022/acorex-components-password-box.mjs +2 -2
  91. package/fesm2022/acorex-components-pdf-reader.mjs +2 -2
  92. package/fesm2022/acorex-components-phone-box.mjs +2 -2
  93. package/fesm2022/acorex-components-phone-box.mjs.map +1 -1
  94. package/fesm2022/acorex-components-picker.mjs +6 -6
  95. package/fesm2022/acorex-components-picker.mjs.map +1 -1
  96. package/fesm2022/acorex-components-popup.mjs +1 -0
  97. package/fesm2022/acorex-components-popup.mjs.map +1 -1
  98. package/fesm2022/acorex-components-progress-bar.mjs +2 -2
  99. package/fesm2022/acorex-components-progress-bar.mjs.map +1 -1
  100. package/fesm2022/acorex-components-qrcode.mjs +2 -2
  101. package/fesm2022/acorex-components-query-builder.mjs +2 -2
  102. package/fesm2022/acorex-components-query-builder.mjs.map +1 -1
  103. package/fesm2022/acorex-components-radio.mjs +2 -2
  104. package/fesm2022/acorex-components-rail-navigation.mjs +2 -2
  105. package/fesm2022/acorex-components-rail-navigation.mjs.map +1 -1
  106. package/fesm2022/acorex-components-range-slider.mjs +2 -2
  107. package/fesm2022/acorex-components-range-slider.mjs.map +1 -1
  108. package/fesm2022/acorex-components-rate-picker.mjs +2 -2
  109. package/fesm2022/acorex-components-rate-picker.mjs.map +1 -1
  110. package/fesm2022/acorex-components-result.mjs +2 -2
  111. package/fesm2022/acorex-components-result.mjs.map +1 -1
  112. package/fesm2022/acorex-components-routing-progress.mjs +2 -2
  113. package/fesm2022/acorex-components-routing-progress.mjs.map +1 -1
  114. package/fesm2022/acorex-components-scheduler.mjs +18 -18
  115. package/fesm2022/acorex-components-scheduler.mjs.map +1 -1
  116. package/fesm2022/acorex-components-select-box.mjs +23 -13
  117. package/fesm2022/acorex-components-select-box.mjs.map +1 -1
  118. package/fesm2022/acorex-components-selection-list-2.mjs +2 -2
  119. package/fesm2022/acorex-components-selection-list-2.mjs.map +1 -1
  120. package/fesm2022/acorex-components-selection-list.mjs +2 -2
  121. package/fesm2022/acorex-components-selection-list.mjs.map +1 -1
  122. package/fesm2022/acorex-components-skeleton.mjs +2 -2
  123. package/fesm2022/acorex-components-skeleton.mjs.map +1 -1
  124. package/fesm2022/acorex-components-sliding-item.mjs +2 -2
  125. package/fesm2022/acorex-components-sliding-item.mjs.map +1 -1
  126. package/fesm2022/acorex-components-switch.mjs +2 -2
  127. package/fesm2022/acorex-components-switch.mjs.map +1 -1
  128. package/fesm2022/acorex-components-tabs.mjs +2 -2
  129. package/fesm2022/acorex-components-tabs.mjs.map +1 -1
  130. package/fesm2022/acorex-components-tag-box.mjs +2 -2
  131. package/fesm2022/acorex-components-tag-box.mjs.map +1 -1
  132. package/fesm2022/acorex-components-tag.mjs +2 -2
  133. package/fesm2022/acorex-components-tag.mjs.map +1 -1
  134. package/fesm2022/acorex-components-text-area.mjs +2 -2
  135. package/fesm2022/acorex-components-text-area.mjs.map +1 -1
  136. package/fesm2022/acorex-components-text-box.mjs +2 -2
  137. package/fesm2022/acorex-components-time-line.mjs +4 -4
  138. package/fesm2022/acorex-components-time-line.mjs.map +1 -1
  139. package/fesm2022/acorex-components-toast.mjs +2 -2
  140. package/fesm2022/acorex-components-toast.mjs.map +1 -1
  141. package/fesm2022/acorex-components-toolbar.mjs +2 -2
  142. package/fesm2022/acorex-components-toolbar.mjs.map +1 -1
  143. package/fesm2022/acorex-components-tooltip.mjs +2 -2
  144. package/fesm2022/acorex-components-tooltip.mjs.map +1 -1
  145. package/fesm2022/acorex-components-uploader.mjs +6 -6
  146. package/fesm2022/acorex-components-uploader.mjs.map +1 -1
  147. package/fesm2022/acorex-components-wysiwyg.mjs +6 -6
  148. package/fesm2022/acorex-components-wysiwyg.mjs.map +1 -1
  149. package/package.json +4 -3
  150. package/types/acorex-components-conversation2.d.ts +75 -30
  151. package/types/acorex-components-image-editor.d.ts +74 -47
@@ -13,7 +13,8 @@ import { AXContextMenuOpeningEvent, AXContextMenuItemsClickEvent } from '@acorex
13
13
  import { AXBasePageComponent } from '@acorex/components/page';
14
14
  import { AXTranslationService } from '@acorex/core/translation';
15
15
  import { AXMapMarker } from '@acorex/components/map';
16
- import { AXFileTypeInfoProvider, AXFileType, AXFileService } from '@acorex/core/file';
16
+ import * as _acorex_core_file from '@acorex/core/file';
17
+ import { AXFileTypeInfoProvider, AXFileType, AXFileService, AXFileTypeRegistryService, AXFileTypeExtensionHint, AXFileTypeOpenContext } from '@acorex/core/file';
17
18
  import { SafeHtml } from '@angular/platform-browser';
18
19
  import * as i1 from '@angular/common';
19
20
  import * as i2 from '@angular/forms';
@@ -460,6 +461,8 @@ interface AXConversation {
460
461
  id: string;
461
462
  /** Conversation type */
462
463
  type: AXConversationType;
464
+ /** User who created this conversation */
465
+ creatorId?: string;
463
466
  /** Conversation title/name */
464
467
  title: string;
465
468
  /** Conversation avatar/image URL */
@@ -1346,8 +1349,6 @@ declare class AXComposerComponent implements OnDestroy {
1346
1349
  readonly composerPopupComponent: typeof AXComposerPopupComponent;
1347
1350
  /** Input placeholder - use service */
1348
1351
  readonly placeholder: _angular_core.Signal<string>;
1349
- /** Sending message state */
1350
- readonly sendingMessage: _angular_core.WritableSignal<boolean>;
1351
1352
  /** Typing indicator subject for rate limiting */
1352
1353
  private readonly typingSubject;
1353
1354
  constructor();
@@ -1504,6 +1505,10 @@ declare class AXComposerService {
1504
1505
  onConversationChanged(previousConversationId: string | null, currentConversationId: string | null): void;
1505
1506
  sendTypingIndicator(conversationId: string): Promise<void>;
1506
1507
  sendMessage(command: AXSendMessageCommand, options?: AXSendMessageOptions): Promise<void>;
1508
+ /**
1509
+ * Resets composer input immediately when a send starts so upload/API work continues in the background.
1510
+ */
1511
+ clearComposerInput(conversationId?: string): void;
1507
1512
  /**
1508
1513
  * Show a component in the composer (full-width mode)
1509
1514
  */
@@ -1857,6 +1862,8 @@ interface AXConversationCreateData {
1857
1862
  type: AXConversationType;
1858
1863
  /** Participant user IDs */
1859
1864
  participantIds: string[];
1865
+ /** User who creates the conversation */
1866
+ creatorId?: string;
1860
1867
  /** Conversation title (for groups/channels) */
1861
1868
  title?: string;
1862
1869
  /** Conversation description */
@@ -3126,7 +3133,7 @@ declare class AXConversationService {
3126
3133
  private readonly _messageDeleted$;
3127
3134
  private readonly _typingIndicator$;
3128
3135
  private readonly _presenceUpdate$;
3129
- /** All conversations */
3136
+ /** All conversations (viewer-scoped display titles for private 1v1 chats) */
3130
3137
  readonly conversations: _angular_core.Signal<AXConversation[]>;
3131
3138
  /** Active conversation ID */
3132
3139
  readonly activeConversationId: _angular_core.Signal<string>;
@@ -3715,6 +3722,8 @@ declare class AXCnvMediaPlaybackInfoBarBannerComponent implements AXMessageInfoB
3715
3722
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXCnvMediaPlaybackInfoBarBannerComponent, "ax-cnv-media-playback-info-bar-banner", never, { "message": { "alias": "message"; "required": true; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "currentTime": { "alias": "currentTime"; "required": false; "isSignal": true; }; "duration": { "alias": "duration"; "required": false; "isSignal": true; }; "isPlaying": { "alias": "isPlaying"; "required": false; "isSignal": true; }; "onTogglePlay": { "alias": "onTogglePlay"; "required": false; "isSignal": true; }; "playbackSpeed": { "alias": "playbackSpeed"; "required": false; "isSignal": true; }; "onCycleSpeed": { "alias": "onCycleSpeed"; "required": false; "isSignal": true; }; "showSpeedControl": { "alias": "showSpeedControl"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
3716
3723
  }
3717
3724
 
3725
+ /** Caption first, else a label with optional extra lines (URLs, names). */
3726
+ declare function mediaCopyText(caption: string | undefined, singleLabel: string, pluralLabel: string, count: number, lines: (string | undefined)[]): string;
3718
3727
  /**
3719
3728
  * Registers the live renderer on {@link AXMessageListService} for message actions.
3720
3729
  */
@@ -4155,8 +4164,8 @@ declare class AXMessageListComponent implements OnDestroy {
4155
4164
  /** Handle context menu item click for messages */
4156
4165
  handleMessageContextMenuItemClick(event: AXContextMenuItemsClickEvent, message: AXMessage): void;
4157
4166
  /**
4158
- * TrackBy function for message groups
4159
- * Tracks by date only to prevent re-rendering when messages are added
4167
+ * TrackBy function for message groups.
4168
+ * Include the latest message id so new messages in the same date group re-render.
4160
4169
  */
4161
4170
  trackMessageGroup(index: number, group: {
4162
4171
  date: string;
@@ -5361,46 +5370,41 @@ declare class AXVoiceRecorderComponent {
5361
5370
  }
5362
5371
 
5363
5372
  declare class AXConversationAudioFileTypeProvider extends AXFileTypeInfoProvider {
5364
- items(): Promise<AXFileType<Record<string, (ctx: {
5365
- readAsDataUrl: (file: File | Blob) => Promise<string>;
5366
- platformId: object;
5367
- }, ...args: unknown[]) => Promise<unknown> | unknown>>[]>;
5373
+ items(): Promise<AXFileType<{
5374
+ [x: string]: (ctx: _acorex_core_file.AXFileTypeContext, ...args: unknown[]) => Promise<unknown> | unknown;
5375
+ }>[]>;
5368
5376
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationAudioFileTypeProvider, never>;
5369
5377
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXConversationAudioFileTypeProvider>;
5370
5378
  }
5371
5379
 
5372
5380
  declare class AXConversationFileFileTypeProvider extends AXFileTypeInfoProvider {
5373
- items(): Promise<AXFileType<Record<string, (ctx: {
5374
- readAsDataUrl: (file: File | Blob) => Promise<string>;
5375
- platformId: object;
5376
- }, ...args: unknown[]) => Promise<unknown> | unknown>>[]>;
5381
+ items(): Promise<AXFileType<{
5382
+ [x: string]: (ctx: _acorex_core_file.AXFileTypeContext, ...args: unknown[]) => Promise<unknown> | unknown;
5383
+ }>[]>;
5377
5384
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationFileFileTypeProvider, never>;
5378
5385
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXConversationFileFileTypeProvider>;
5379
5386
  }
5380
5387
 
5381
5388
  declare class AXConversationImageFileTypeProvider extends AXFileTypeInfoProvider {
5382
- items(): Promise<AXFileType<Record<string, (ctx: {
5383
- readAsDataUrl: (file: File | Blob) => Promise<string>;
5384
- platformId: object;
5385
- }, ...args: unknown[]) => Promise<unknown> | unknown>>[]>;
5389
+ items(): Promise<AXFileType<{
5390
+ [x: string]: (ctx: _acorex_core_file.AXFileTypeContext, ...args: unknown[]) => Promise<unknown> | unknown;
5391
+ }>[]>;
5386
5392
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationImageFileTypeProvider, never>;
5387
5393
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXConversationImageFileTypeProvider>;
5388
5394
  }
5389
5395
 
5390
5396
  declare class AXConversationVideoFileTypeProvider extends AXFileTypeInfoProvider {
5391
- items(): Promise<AXFileType<Record<string, (ctx: {
5392
- readAsDataUrl: (file: File | Blob) => Promise<string>;
5393
- platformId: object;
5394
- }, ...args: unknown[]) => Promise<unknown> | unknown>>[]>;
5397
+ items(): Promise<AXFileType<{
5398
+ [x: string]: (ctx: _acorex_core_file.AXFileTypeContext, ...args: unknown[]) => Promise<unknown> | unknown;
5399
+ }>[]>;
5395
5400
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationVideoFileTypeProvider, never>;
5396
5401
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXConversationVideoFileTypeProvider>;
5397
5402
  }
5398
5403
 
5399
5404
  declare class AXConversationVoiceFileTypeProvider extends AXFileTypeInfoProvider {
5400
- items(): Promise<AXFileType<Record<string, (ctx: {
5401
- readAsDataUrl: (file: File | Blob) => Promise<string>;
5402
- platformId: object;
5403
- }, ...args: unknown[]) => Promise<unknown> | unknown>>[]>;
5405
+ items(): Promise<AXFileType<{
5406
+ [x: string]: (ctx: _acorex_core_file.AXFileTypeContext, ...args: unknown[]) => Promise<unknown> | unknown;
5407
+ }>[]>;
5404
5408
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationVoiceFileTypeProvider, never>;
5405
5409
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXConversationVoiceFileTypeProvider>;
5406
5410
  }
@@ -5424,7 +5428,7 @@ declare const AX_CONVERSATION_COMPOSER_LOCATION_ACTION: AXComposerAction;
5424
5428
 
5425
5429
  declare function mergeUploadResult(type: AXMessageType, payload: AXMessagePayload, result: AXUploadResult): AXMessagePayload;
5426
5430
  declare function applyLocalPreview(type: AXMessageType, payload: AXMessagePayload, localUrl: string, mimeType?: string): AXMessagePayload;
5427
- declare function toUploaderReference(payload: AXMessagePayload): AXUploaderReference;
5431
+ declare function toUploaderReference$1(payload: AXMessagePayload): AXUploaderReference;
5428
5432
  declare function createObjectUrl(platformId: object, blob: Blob): string;
5429
5433
  declare function revokeObjectUrl(platformId: object, url: string): void;
5430
5434
  declare function createLocalPreviewUrl(fileService: AXFileService, platformId: object, source: File | Blob, messageType: AXMessageType): Promise<string | undefined>;
@@ -5470,7 +5474,7 @@ declare class AXConversationInfoPanelComponent extends AXClosableComponent imple
5470
5474
  conversationService: AXConversationService;
5471
5475
  readonly activeTab: _angular_core.WritableSignal<"profile" | "manage">;
5472
5476
  readonly showMemberSearch: _angular_core.WritableSignal<boolean>;
5473
- readonly panelView: _angular_core.WritableSignal<"media" | "main">;
5477
+ readonly panelView: _angular_core.WritableSignal<"main" | "media">;
5474
5478
  readonly selectedMediaCategory: _angular_core.WritableSignal<AXConversationMediaCategory>;
5475
5479
  readonly conversationMessages: _angular_core.WritableSignal<AXMessage[]>;
5476
5480
  readonly loadingMessages: _angular_core.WritableSignal<boolean>;
@@ -5772,7 +5776,22 @@ declare function resolvePrivatePeerUserId(conversation: AXConversation, currentU
5772
5776
  /** Whether `auto` kind should render a user avatar for this conversation. */
5773
5777
  declare function shouldUseUserAvatarForConversation(conversation: AXConversation, currentUserId?: string): boolean;
5774
5778
  declare function resolveUserAvatarDisplay(userId: string, conversation: AXConversation | undefined, message?: AXMessage): AXConversationAvatarDisplay;
5775
- declare function resolveConversationAvatarDisplay(conversation: AXConversation): AXConversationAvatarDisplay;
5779
+ declare function resolveConversationAvatarDisplay(conversation: AXConversation, currentUserId?: string): AXConversationAvatarDisplay;
5780
+
5781
+ /** True when the stored title is a placeholder, not a user-defined name. */
5782
+ declare function isGenericPrivateConversationTitle(title: string | undefined): boolean;
5783
+ /** Other participant in a private 1v1 chat (excludes the current viewer). */
5784
+ declare function resolvePrivatePeerParticipant(conversation: AXConversation, currentUserId?: string): AXParticipant | undefined;
5785
+ /**
5786
+ * Resolves the display title for the current viewer.
5787
+ * Private 1v1 chats show the other participant's name when no custom title is set.
5788
+ */
5789
+ declare function resolveConversationTitleForViewer(conversation: AXConversation, currentUserId?: string): string;
5790
+ /**
5791
+ * Returns a viewer-scoped copy of a conversation with dynamic private title/avatar/icon.
5792
+ * Does not mutate the source object.
5793
+ */
5794
+ declare function resolveConversationForViewer(conversation: AXConversation, currentUserId?: string): AXConversation;
5776
5795
 
5777
5796
  /** Resolves typed `profile`, falling back to legacy `metadata.profile`. */
5778
5797
  declare function resolveParticipantProfile(participant?: AXParticipant): AXUserProfile;
@@ -5969,6 +5988,32 @@ declare function validateLatitude(latitude: number | undefined | null): AXValida
5969
5988
  */
5970
5989
  declare function validateLongitude(longitude: number | undefined | null): AXValidationResult;
5971
5990
 
5991
+ /** First non-empty URL for img/video/audio at runtime (includes resolved blob: URLs). */
5992
+ declare function pickDisplayMediaUrl(...candidates: (string | null | undefined)[]): string;
5993
+
5994
+ /** Format image message payload for rendering (array shape, safe thumbnails). */
5995
+ declare function normalizeImagePayload(payload: AXImagePayload): AXImagePayload;
5996
+ /** Preferred URL for grid / lightbox (never inline base64 thumbnails). */
5997
+ declare function resolveImageDisplayUrl(image: AXImageMediaItem): string | undefined;
5998
+
5999
+ declare function toUploaderReference(item: AXMediaItemFields): AXUploaderReference;
6000
+
6001
+ /**
6002
+ * Resolves multimedia payload URLs for renderers (direct url or mediaId via uploader).
6003
+ */
6004
+
6005
+ /**
6006
+ * Creates a signal of the resolved playback URL for a media reference.
6007
+ */
6008
+ declare function createResolvedMediaUrlSignal(reference: Signal<AXUploaderReference | undefined>): Signal<string | null>;
6009
+
6010
+ /** Infer extension/MIME hints from a persisted message payload. */
6011
+ declare function inferFileExtensionHintFromMessage(message: AXMessage): AXFileTypeExtensionHint;
6012
+ /** Use file-type `copy` on the message when `message.fileType` is set; otherwise fallback. */
6013
+ declare function copyWithFileTypeFallback(message: AXMessage, registry: AXFileTypeRegistryService, fallback: () => string): Promise<string>;
6014
+ /** Use file-type `open` on the message when `message.fileType` is set. */
6015
+ declare function openWithFileType(message: AXMessage, registry: AXFileTypeRegistryService, ctx: AXFileTypeOpenContext): Promise<boolean>;
6016
+
5972
6017
  /**
5973
6018
  * Error Message Constants
5974
6019
  * Centralized error messages with i18n support structure
@@ -6361,5 +6406,5 @@ declare function getErrorMessage(code: string, params?: Record<string, string |
6361
6406
  */
6362
6407
  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'];
6363
6408
 
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 };
6409
+ 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, AXMessageRendererCopyHostComponent, 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, copyWithFileTypeFallback, createLocalPreviewUrl, createObjectUrl, createResolvedMediaUrlSignal, encodeConversationCursor, encodeMessageCursor, formatErrorMessage, getConversationLastActivity, getConversationMessagesNewestFirst, getErrorMessage, getSortedConversationsForInbox, inferFileExtensionHintFromMessage, isGenericPrivateConversationTitle, mediaCopyText, mergeUploadResult, mergeWithDefaults, normalizeAllConversationMessageIndexes, normalizeImagePayload, openWithFileType, paginateChatNewestFirst, paginateChatOldestFirst, parseChatCursor, pickDisplayMediaUrl, provideConversation, provideConversationComposerFileTypes, provideConversationFileCatalog, registerChatMessage, resolveConversationAvatarDisplay, resolveConversationForViewer, resolveConversationTitleForViewer, resolveImageDisplayUrl, resolveParticipantProfile, resolvePrivatePeerParticipant, resolvePrivatePeerUserId, resolveUserAvatarDisplay, revokeObjectUrl, sanitizeInput, shouldUseUserAvatarForConversation, sortConversationMessageIds, toUploaderReference as toMediaItemUploaderReference, toUploaderReference$1 as toUploaderReference, unregisterChatMessage, validateConversationId, validateEmail, validateLatitude, validateLongitude, validateMessagePayload, validateMessageText, validateMessageType, validateUrl, validateUserId, validateUserIds };
6365
6410
  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 };
@@ -12,8 +12,9 @@ import * as i7 from '@acorex/components/decorators';
12
12
  import * as i8 from '@acorex/components/loading';
13
13
  import * as i9 from '@acorex/components/dialog';
14
14
 
15
+ type AXImageEditorTool = 'pen' | 'highlight' | 'crop' | 'rotate';
15
16
  declare class AXImageEditorService {
16
- activeToolState: _angular_core.WritableSignal<"pen" | "highlight" | "crop" | "rotate" | "history">;
17
+ activeToolState: _angular_core.WritableSignal<AXImageEditorTool>;
17
18
  penColor: _angular_core.WritableSignal<string | CanvasGradient | CanvasPattern>;
18
19
  highlightColor: _angular_core.WritableSignal<string | CanvasGradient | CanvasPattern>;
19
20
  penWidth: _angular_core.WritableSignal<number>;
@@ -30,6 +31,9 @@ declare class AXImageEditorService {
30
31
  undoPressed: _angular_core.WritableSignal<boolean>;
31
32
  redoPressed: _angular_core.WritableSignal<boolean>;
32
33
  cropperRatio: _angular_core.WritableSignal<string>;
34
+ cropperSize: _angular_core.WritableSignal<number>;
35
+ toggleTool(tool: AXImageEditorTool): void;
36
+ activateTool(tool: AXImageEditorTool): void;
33
37
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXImageEditorService, never>;
34
38
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXImageEditorService>;
35
39
  }
@@ -41,6 +45,8 @@ declare class AXImageEditorService {
41
45
  declare class AXImageEditorCropperWindowComponent implements OnDestroy {
42
46
  #private;
43
47
  readonly showGrid: _angular_core.InputSignal<boolean>;
48
+ /** Base size in pixels used to calculate the initial cropper window dimensions. */
49
+ readonly size: _angular_core.InputSignal<number>;
44
50
  protected service: AXImageEditorService;
45
51
  private ngZone;
46
52
  private selectedHandle;
@@ -78,7 +84,7 @@ declare class AXImageEditorCropperWindowComponent implements OnDestroy {
78
84
  protected changeSizeHandler(e: MouseEvent): void;
79
85
  protected clearSelector(): void;
80
86
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXImageEditorCropperWindowComponent, never>;
81
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXImageEditorCropperWindowComponent, "ax-image-editor-cropper-window", never, { "showGrid": { "alias": "showGrid"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
87
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXImageEditorCropperWindowComponent, "ax-image-editor-cropper-window", never, { "showGrid": { "alias": "showGrid"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
82
88
  }
83
89
 
84
90
  declare class AXImageEditorViewComponent extends MXBaseComponent implements OnDestroy {
@@ -86,6 +92,10 @@ declare class AXImageEditorViewComponent extends MXBaseComponent implements OnDe
86
92
  * its change grid display state.
87
93
  */
88
94
  readonly showGrid: _angular_core.InputSignal<boolean>;
95
+ /**
96
+ * Base size in pixels for the initial cropper window dimensions.
97
+ */
98
+ readonly cropperSize: _angular_core.InputSignal<number>;
89
99
  /**
90
100
  * its change grid display state.
91
101
  */
@@ -141,13 +151,13 @@ declare class AXImageEditorViewComponent extends MXBaseComponent implements OnDe
141
151
  /** @ignore */
142
152
  protected mouseUpHandler(): void;
143
153
  /** @ignore */
144
- cropButtonHandler(): void;
154
+ crop(): Promise<void>;
145
155
  /** @ignore */
146
156
  protected rotateImage(): void;
147
157
  /** @ignore */
148
158
  protected saveImageChange(): Promise<void>;
149
159
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXImageEditorViewComponent, never>;
150
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXImageEditorViewComponent, "ax-image-editor-view", never, { "showGrid": { "alias": "showGrid"; "required": false; "isSignal": true; }; "src": { "alias": "src"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
160
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXImageEditorViewComponent, "ax-image-editor-view", never, { "showGrid": { "alias": "showGrid"; "required": false; "isSignal": true; }; "cropperSize": { "alias": "cropperSize"; "required": false; "isSignal": true; }; "src": { "alias": "src"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
151
161
  }
152
162
 
153
163
  declare const AXImageEditorContainerComponent_base: polytype.Polytype.ClusteredConstructor<[{
@@ -165,41 +175,48 @@ declare class AXImageEditorContainerComponent extends AXImageEditorContainerComp
165
175
  protected service: AXImageEditorService;
166
176
  imageEditorContainer: _angular_core.Signal<ElementRef<any>>;
167
177
  view: _angular_core.Signal<AXImageEditorViewComponent>;
168
- aspectRatio: _angular_core.InputSignal<string[]>;
169
- protected cropButtonHandler(): void;
178
+ /** Applies the current cropper selection. */
179
+ crop(): Promise<void>;
170
180
  get __hostClass(): string;
171
181
  private get __hostName();
172
182
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXImageEditorContainerComponent, never>;
173
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXImageEditorContainerComponent, "ax-image-editor-container", never, { "look": { "alias": "look"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "aspectRatio": { "alias": "aspectRatio"; "required": false; "isSignal": true; }; }, { "onValueChanged": "onValueChanged"; }, ["view"], ["ax-header", "ax-image-editor-view", "ax-validation-rule"], true, never>;
183
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXImageEditorContainerComponent, "ax-image-editor-container", never, { "look": { "alias": "look"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; }, { "onValueChanged": "onValueChanged"; }, ["view"], ["ax-header", "ax-image-editor-view", "ax-footer", "ax-validation-rule"], true, never>;
174
184
  }
175
185
 
176
186
  /**
177
- * paint mode.
187
+ * Base class for image editor tool trigger components.
178
188
  * @category Components
179
189
  */
180
- declare class AXImageEditorCropComponent {
190
+ declare abstract class AXImageEditorToolComponent {
181
191
  protected service: AXImageEditorService;
182
- cropPressed: _angular_core.OutputEmitterRef<void>;
192
+ abstract readonly tool: AXImageEditorTool;
193
+ setActive(): void;
194
+ }
195
+
196
+ /**
197
+ * Crop tool trigger for the image editor toolbar.
198
+ * @category Components
199
+ */
200
+ declare class AXImageEditorCropComponent extends AXImageEditorToolComponent {
201
+ #private;
202
+ readonly tool = "crop";
203
+ private container;
204
+ /** Aspect ratio presets. Append `:active` to mark the default ratio, e.g. `'2:1:active'`. */
183
205
  aspectRatio: _angular_core.InputSignal<string[]>;
184
- protected cropButtonHandler(): void;
185
- protected ratioHandler(r: '1:1' | '16:9' | string): void;
206
+ /** Base size in pixels for the initial cropper window dimensions. */
207
+ size: _angular_core.InputSignal<number>;
208
+ /** Applies the current cropper selection. */
209
+ crop(): void;
186
210
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXImageEditorCropComponent, never>;
187
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXImageEditorCropComponent, "ax-image-editor-crop", never, { "aspectRatio": { "alias": "aspectRatio"; "required": false; "isSignal": true; }; }, { "cropPressed": "cropPressed"; }, never, never, true, never>;
211
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXImageEditorCropComponent, "ax-image-editor-crop", never, { "aspectRatio": { "alias": "aspectRatio"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
188
212
  }
189
213
 
190
214
  /**
191
- * paint mode.
215
+ * Highlight tool trigger for the image editor toolbar.
192
216
  * @category Components
193
217
  */
194
- declare class AXImageEditorHighlightComponent {
195
- protected service: AXImageEditorService;
196
- /** @ignore */
197
- protected selectedColor: _angular_core.WritableSignal<string | CanvasGradient | CanvasPattern>;
198
- /** @ignore */
199
- protected value: number;
200
- protected changeColorHandler(e: string): void;
201
- /** @ignore */
202
- protected valueHandler(e: number): void;
218
+ declare class AXImageEditorHighlightComponent extends AXImageEditorToolComponent {
219
+ readonly tool = "highlight";
203
220
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXImageEditorHighlightComponent, never>;
204
221
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXImageEditorHighlightComponent, "ax-image-editor-highlight", never, {}, {}, never, never, true, never>;
205
222
  }
@@ -217,52 +234,62 @@ declare class AXImageEditorHistoryComponent {
217
234
  }
218
235
 
219
236
  /**
220
- * paint mode.
237
+ * Pen tool trigger for the image editor toolbar.
221
238
  * @category Components
222
239
  */
223
- declare class AXImageEditorPenComponent {
224
- protected service: AXImageEditorService;
225
- /** @ignore */
226
- protected value: number;
227
- /** @ignore */
228
- protected selectedColor: _angular_core.WritableSignal<string | CanvasGradient | CanvasPattern>;
229
- protected changeColorHandler(e: string): void;
230
- /** @ignore */
231
- protected valueHandler(e: number): void;
240
+ declare class AXImageEditorPenComponent extends AXImageEditorToolComponent {
241
+ readonly tool = "pen";
232
242
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXImageEditorPenComponent, never>;
233
243
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXImageEditorPenComponent, "ax-image-editor-pen", never, {}, {}, never, never, true, never>;
234
244
  }
235
245
 
236
246
  /**
237
- * paint mode.
247
+ * Rotate tool trigger for the image editor toolbar.
238
248
  * @category Components
239
249
  */
240
- declare class AXImageEditorRotateComponent {
241
- /** @ignore */
242
- protected service: AXImageEditorService;
243
- /** @ignore */
244
- protected rotateRightHandler(): void;
245
- /** @ignore */
246
- protected rotateLeftHandler(): void;
250
+ declare class AXImageEditorRotateComponent extends AXImageEditorToolComponent {
251
+ readonly tool = "rotate";
247
252
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXImageEditorRotateComponent, never>;
248
253
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXImageEditorRotateComponent, "ax-image-editor-rotate", never, {}, {}, never, never, true, never>;
249
254
  }
250
255
 
251
256
  /**
252
- * paint mode.
257
+ * Toolbar layout for configurable image editor tools.
253
258
  * @category Components
254
259
  */
255
- declare class AXImageEditorToolSelectorComponent {
260
+ declare class AXImageEditorToolsBarComponent {
261
+ #private;
256
262
  protected service: AXImageEditorService;
257
- protected changeToolHandler(tool: 'pen' | 'highlight' | 'crop' | 'rotate'): void;
263
+ /**
264
+ * Tool component reference to activate on load.
265
+ */
266
+ active: _angular_core.InputSignal<AXImageEditorToolComponent>;
267
+ /** Hides the tools bar UI while keeping projected tools configurable. */
268
+ hidden: _angular_core.InputSignal<boolean>;
269
+ protected penTool: _angular_core.Signal<AXImageEditorPenComponent>;
270
+ protected highlightTool: _angular_core.Signal<AXImageEditorHighlightComponent>;
271
+ protected cropTool: _angular_core.Signal<AXImageEditorCropComponent>;
272
+ protected rotateTool: _angular_core.Signal<AXImageEditorRotateComponent>;
273
+ protected cropAspectRatio: _angular_core.Signal<string[]>;
274
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXImageEditorToolsBarComponent, never>;
275
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXImageEditorToolsBarComponent, "ax-image-editor-tools-bar", never, { "active": { "alias": "active"; "required": false; "isSignal": true; }; "hidden": { "alias": "hidden"; "required": false; "isSignal": true; }; }, {}, ["penTool", "highlightTool", "cropTool", "rotateTool"], ["ax-image-editor-pen, ax-image-editor-highlight, ax-image-editor-crop, ax-image-editor-rotate"], true, never>;
276
+ }
277
+
278
+ /**
279
+ * Convenience wrapper that includes all image editor tools.
280
+ * @category Components
281
+ */
282
+ declare class AXImageEditorToolSelectorComponent {
283
+ aspectRatio: _angular_core.InputSignal<string[]>;
258
284
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXImageEditorToolSelectorComponent, never>;
259
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXImageEditorToolSelectorComponent, "ax-image-editor-tool-selector", never, {}, {}, never, never, true, never>;
285
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXImageEditorToolSelectorComponent, "ax-image-editor-tool-selector", never, { "aspectRatio": { "alias": "aspectRatio"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
260
286
  }
261
287
 
262
288
  declare class AXImageEditorModule {
263
289
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXImageEditorModule, never>;
264
- static ɵmod: _angular_core.ɵɵNgModuleDeclaration<AXImageEditorModule, never, [typeof i1.AXButtonModule, typeof i2.FormsModule, typeof i3.AXRangeSliderModule, typeof i4.AXSelectBoxModule, typeof i5.AXColorBoxModule, typeof i6.AXPopoverModule, typeof i7.AXDecoratorModule, typeof i8.AXLoadingModule, typeof i9.AXDialogModule, typeof AXImageEditorViewComponent, typeof AXImageEditorContainerComponent, typeof AXImageEditorCropComponent, typeof AXImageEditorHistoryComponent, typeof AXImageEditorToolSelectorComponent, typeof AXImageEditorPenComponent, typeof AXImageEditorHighlightComponent, typeof AXImageEditorRotateComponent, typeof AXImageEditorCropperWindowComponent], [typeof AXImageEditorViewComponent, typeof AXImageEditorContainerComponent, typeof AXImageEditorCropComponent, typeof AXImageEditorHistoryComponent, typeof AXImageEditorToolSelectorComponent, typeof AXImageEditorPenComponent, typeof AXImageEditorHighlightComponent, typeof AXImageEditorRotateComponent, typeof AXImageEditorCropperWindowComponent]>;
290
+ static ɵmod: _angular_core.ɵɵNgModuleDeclaration<AXImageEditorModule, never, [typeof i1.AXButtonModule, typeof i2.FormsModule, typeof i3.AXRangeSliderModule, typeof i4.AXSelectBoxModule, typeof i5.AXColorBoxModule, typeof i6.AXPopoverModule, typeof i7.AXDecoratorModule, typeof i8.AXLoadingModule, typeof i9.AXDialogModule, typeof AXImageEditorViewComponent, typeof AXImageEditorContainerComponent, typeof AXImageEditorCropComponent, typeof AXImageEditorHistoryComponent, typeof AXImageEditorToolSelectorComponent, typeof AXImageEditorToolsBarComponent, typeof AXImageEditorPenComponent, typeof AXImageEditorHighlightComponent, typeof AXImageEditorRotateComponent, typeof AXImageEditorCropperWindowComponent], [typeof AXImageEditorViewComponent, typeof AXImageEditorContainerComponent, typeof AXImageEditorCropComponent, typeof AXImageEditorHistoryComponent, typeof AXImageEditorToolSelectorComponent, typeof AXImageEditorToolsBarComponent, typeof AXImageEditorPenComponent, typeof AXImageEditorHighlightComponent, typeof AXImageEditorRotateComponent, typeof AXImageEditorCropperWindowComponent]>;
265
291
  static ɵinj: _angular_core.ɵɵInjectorDeclaration<AXImageEditorModule>;
266
292
  }
267
293
 
268
- export { AXImageEditorContainerComponent, AXImageEditorCropComponent, AXImageEditorCropperWindowComponent, AXImageEditorHighlightComponent, AXImageEditorHistoryComponent, AXImageEditorModule, AXImageEditorPenComponent, AXImageEditorRotateComponent, AXImageEditorService, AXImageEditorToolSelectorComponent, AXImageEditorViewComponent };
294
+ export { AXImageEditorContainerComponent, AXImageEditorCropComponent, AXImageEditorCropperWindowComponent, AXImageEditorHighlightComponent, AXImageEditorHistoryComponent, AXImageEditorModule, AXImageEditorPenComponent, AXImageEditorRotateComponent, AXImageEditorService, AXImageEditorToolComponent, AXImageEditorToolSelectorComponent, AXImageEditorToolsBarComponent, AXImageEditorViewComponent };
295
+ export type { AXImageEditorTool };