@acorex/components 22.0.0-next.9 → 22.0.1-next.0

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 (205) hide show
  1. package/combo-box/README.md +35 -0
  2. package/emoji/README.md +3 -0
  3. package/emojipicker/README.md +3 -0
  4. package/fesm2022/acorex-components-accordion.mjs +4 -4
  5. package/fesm2022/acorex-components-accordion.mjs.map +1 -1
  6. package/fesm2022/acorex-components-action-sheet.mjs +1 -0
  7. package/fesm2022/acorex-components-action-sheet.mjs.map +1 -1
  8. package/fesm2022/acorex-components-alert.mjs +2 -2
  9. package/fesm2022/acorex-components-alert.mjs.map +1 -1
  10. package/fesm2022/acorex-components-audio-wave.mjs +291 -267
  11. package/fesm2022/acorex-components-audio-wave.mjs.map +1 -1
  12. package/fesm2022/acorex-components-bubble.mjs +71 -0
  13. package/fesm2022/acorex-components-bubble.mjs.map +1 -0
  14. package/fesm2022/acorex-components-button-group.mjs +12 -5
  15. package/fesm2022/acorex-components-button-group.mjs.map +1 -1
  16. package/fesm2022/acorex-components-button.mjs +6 -6
  17. package/fesm2022/acorex-components-button.mjs.map +1 -1
  18. package/fesm2022/acorex-components-calendar.mjs +328 -127
  19. package/fesm2022/acorex-components-calendar.mjs.map +1 -1
  20. package/fesm2022/acorex-components-check-box.mjs +2 -2
  21. package/fesm2022/acorex-components-check-box.mjs.map +1 -1
  22. package/fesm2022/acorex-components-combo-box.mjs +973 -0
  23. package/fesm2022/acorex-components-combo-box.mjs.map +1 -0
  24. package/fesm2022/acorex-components-conversation-acorex-components-conversation-DDkiZfPb.mjs +19058 -0
  25. package/fesm2022/acorex-components-conversation-acorex-components-conversation-DDkiZfPb.mjs.map +1 -0
  26. package/fesm2022/acorex-components-conversation-composer-action-choice-dialog.component-COUB9zrM.mjs +50 -0
  27. package/fesm2022/acorex-components-conversation-composer-action-choice-dialog.component-COUB9zrM.mjs.map +1 -0
  28. package/fesm2022/acorex-components-conversation-image-picker-editor-dialog.component-COT96F_v.mjs +87 -0
  29. package/fesm2022/acorex-components-conversation-image-picker-editor-dialog.component-COT96F_v.mjs.map +1 -0
  30. package/fesm2022/acorex-components-conversation-picker-rename-file-dialog.component-CH3Q6Hry.mjs +65 -0
  31. package/fesm2022/acorex-components-conversation-picker-rename-file-dialog.component-CH3Q6Hry.mjs.map +1 -0
  32. package/fesm2022/acorex-components-conversation.mjs +1 -22920
  33. package/fesm2022/acorex-components-conversation.mjs.map +1 -1
  34. package/fesm2022/acorex-components-cron-job.mjs +1 -1
  35. package/fesm2022/acorex-components-cron-job.mjs.map +1 -1
  36. package/fesm2022/acorex-components-data-pager.mjs +4 -4
  37. package/fesm2022/acorex-components-data-pager.mjs.map +1 -1
  38. package/fesm2022/acorex-components-data-table.mjs +310 -90
  39. package/fesm2022/acorex-components-data-table.mjs.map +1 -1
  40. package/fesm2022/acorex-components-datetime-box.mjs +14 -16
  41. package/fesm2022/acorex-components-datetime-box.mjs.map +1 -1
  42. package/fesm2022/acorex-components-datetime-input.mjs +61 -32
  43. package/fesm2022/acorex-components-datetime-input.mjs.map +1 -1
  44. package/fesm2022/acorex-components-datetime-picker.mjs +1 -1
  45. package/fesm2022/acorex-components-datetime-picker.mjs.map +1 -1
  46. package/fesm2022/acorex-components-decorators.mjs +57 -11
  47. package/fesm2022/acorex-components-decorators.mjs.map +1 -1
  48. package/fesm2022/acorex-components-dialog.mjs +7 -4
  49. package/fesm2022/acorex-components-dialog.mjs.map +1 -1
  50. package/fesm2022/acorex-components-drawer.mjs +2 -2
  51. package/fesm2022/acorex-components-drawer.mjs.map +1 -1
  52. package/fesm2022/acorex-components-dropdown-button.mjs +1 -1
  53. package/fesm2022/acorex-components-dropdown-button.mjs.map +1 -1
  54. package/fesm2022/acorex-components-dropdown.mjs +4 -4
  55. package/fesm2022/acorex-components-dropdown.mjs.map +1 -1
  56. package/fesm2022/acorex-components-emoji.mjs +74 -0
  57. package/fesm2022/acorex-components-emoji.mjs.map +1 -0
  58. package/fesm2022/acorex-components-emojipicker.mjs +425 -0
  59. package/fesm2022/acorex-components-emojipicker.mjs.map +1 -0
  60. package/fesm2022/acorex-components-fab.mjs +5 -5
  61. package/fesm2022/acorex-components-fab.mjs.map +1 -1
  62. package/fesm2022/acorex-components-file-viewer.mjs +359 -109
  63. package/fesm2022/acorex-components-file-viewer.mjs.map +1 -1
  64. package/fesm2022/acorex-components-form.mjs +22 -6
  65. package/fesm2022/acorex-components-form.mjs.map +1 -1
  66. package/fesm2022/acorex-components-grid-layout-builder.mjs +238 -36
  67. package/fesm2022/acorex-components-grid-layout-builder.mjs.map +1 -1
  68. package/fesm2022/acorex-components-highlight.mjs +80 -0
  69. package/fesm2022/acorex-components-highlight.mjs.map +1 -0
  70. package/fesm2022/acorex-components-image-editor.mjs +686 -416
  71. package/fesm2022/acorex-components-image-editor.mjs.map +1 -1
  72. package/fesm2022/acorex-components-inline-reaction.mjs +111 -0
  73. package/fesm2022/acorex-components-inline-reaction.mjs.map +1 -0
  74. package/fesm2022/acorex-components-kanban.mjs +1 -1
  75. package/fesm2022/acorex-components-kanban.mjs.map +1 -1
  76. package/fesm2022/acorex-components-label.mjs +2 -2
  77. package/fesm2022/acorex-components-label.mjs.map +1 -1
  78. package/fesm2022/acorex-components-list.mjs +2 -2
  79. package/fesm2022/acorex-components-list.mjs.map +1 -1
  80. package/fesm2022/acorex-components-loading-dialog.mjs +59 -42
  81. package/fesm2022/acorex-components-loading-dialog.mjs.map +1 -1
  82. package/fesm2022/acorex-components-lookup.mjs +3505 -0
  83. package/fesm2022/acorex-components-lookup.mjs.map +1 -0
  84. package/fesm2022/acorex-components-map.mjs +9 -2
  85. package/fesm2022/acorex-components-map.mjs.map +1 -1
  86. package/fesm2022/acorex-components-menu.mjs +322 -79
  87. package/fesm2022/acorex-components-menu.mjs.map +1 -1
  88. package/fesm2022/acorex-components-message-status.mjs +71 -0
  89. package/fesm2022/acorex-components-message-status.mjs.map +1 -0
  90. package/fesm2022/acorex-components-message-time.mjs +36 -0
  91. package/fesm2022/acorex-components-message-time.mjs.map +1 -0
  92. package/fesm2022/acorex-components-message.mjs +120 -0
  93. package/fesm2022/acorex-components-message.mjs.map +1 -0
  94. package/fesm2022/acorex-components-notification.mjs +13 -6
  95. package/fesm2022/acorex-components-notification.mjs.map +1 -1
  96. package/fesm2022/acorex-components-number-box.mjs +30 -29
  97. package/fesm2022/acorex-components-number-box.mjs.map +1 -1
  98. package/fesm2022/acorex-components-paint.mjs +1 -1
  99. package/fesm2022/acorex-components-paint.mjs.map +1 -1
  100. package/fesm2022/acorex-components-password-box.mjs +3 -3
  101. package/fesm2022/acorex-components-password-box.mjs.map +1 -1
  102. package/fesm2022/acorex-components-popover.mjs +40 -6
  103. package/fesm2022/acorex-components-popover.mjs.map +1 -1
  104. package/fesm2022/acorex-components-popup.mjs +4 -2
  105. package/fesm2022/acorex-components-popup.mjs.map +1 -1
  106. package/fesm2022/acorex-components-radio.mjs +2 -2
  107. package/fesm2022/acorex-components-radio.mjs.map +1 -1
  108. package/fesm2022/acorex-components-rail-navigation.mjs +2 -2
  109. package/fesm2022/acorex-components-rail-navigation.mjs.map +1 -1
  110. package/fesm2022/acorex-components-range-slider.mjs +2 -2
  111. package/fesm2022/acorex-components-range-slider.mjs.map +1 -1
  112. package/fesm2022/acorex-components-reaction.mjs +144 -0
  113. package/fesm2022/acorex-components-reaction.mjs.map +1 -0
  114. package/fesm2022/acorex-components-rest-api-generator.mjs +5 -5
  115. package/fesm2022/acorex-components-rest-api-generator.mjs.map +1 -1
  116. package/fesm2022/acorex-components-rrule.mjs +1 -1
  117. package/fesm2022/acorex-components-rrule.mjs.map +1 -1
  118. package/fesm2022/acorex-components-scheduler-picker.mjs +5 -5
  119. package/fesm2022/acorex-components-scheduler-picker.mjs.map +1 -1
  120. package/fesm2022/acorex-components-scheduler.mjs +12 -22
  121. package/fesm2022/acorex-components-scheduler.mjs.map +1 -1
  122. package/fesm2022/acorex-components-select-box.mjs +55 -18
  123. package/fesm2022/acorex-components-select-box.mjs.map +1 -1
  124. package/fesm2022/acorex-components-selection-list.mjs +3 -4
  125. package/fesm2022/acorex-components-selection-list.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 +510 -74
  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-text-area.mjs +2 -2
  133. package/fesm2022/acorex-components-text-area.mjs.map +1 -1
  134. package/fesm2022/acorex-components-toast.mjs +9 -2
  135. package/fesm2022/acorex-components-toast.mjs.map +1 -1
  136. package/fesm2022/acorex-components-tooltip.mjs +2 -2
  137. package/fesm2022/acorex-components-tooltip.mjs.map +1 -1
  138. package/fesm2022/acorex-components-tree-view.mjs +86 -6
  139. package/fesm2022/acorex-components-tree-view.mjs.map +1 -1
  140. package/fesm2022/acorex-components-wysiwyg.mjs +76 -6
  141. package/fesm2022/acorex-components-wysiwyg.mjs.map +1 -1
  142. package/highlight/README.md +13 -0
  143. package/inline-reaction/README.md +3 -0
  144. package/lookup/README.md +74 -0
  145. package/message/README.md +3 -0
  146. package/message-status/README.md +3 -0
  147. package/message-time/README.md +3 -0
  148. package/package.json +51 -16
  149. package/reaction/README.md +3 -0
  150. package/select-box/README.md +5 -0
  151. package/types/acorex-components-action-sheet.d.ts +9 -1
  152. package/types/acorex-components-audio-wave.d.ts +132 -73
  153. package/types/acorex-components-bubble.d.ts +31 -0
  154. package/types/acorex-components-button-group.d.ts +4 -0
  155. package/types/acorex-components-button.d.ts +1 -1
  156. package/types/acorex-components-calendar.d.ts +41 -9
  157. package/types/acorex-components-combo-box.d.ts +310 -0
  158. package/types/acorex-components-conversation.d.ts +1806 -1790
  159. package/types/acorex-components-data-table.d.ts +74 -12
  160. package/types/acorex-components-datetime-box.d.ts +2 -0
  161. package/types/acorex-components-datetime-input.d.ts +24 -5
  162. package/types/acorex-components-decorators.d.ts +14 -1
  163. package/types/acorex-components-dialog.d.ts +9 -0
  164. package/types/acorex-components-emoji.d.ts +42 -0
  165. package/types/acorex-components-emojipicker.d.ts +146 -0
  166. package/types/acorex-components-file-viewer.d.ts +48 -4
  167. package/types/acorex-components-grid-layout-builder.d.ts +34 -2
  168. package/types/acorex-components-highlight.d.ts +31 -0
  169. package/types/acorex-components-image-editor.d.ts +68 -48
  170. package/types/acorex-components-inline-reaction.d.ts +52 -0
  171. package/types/acorex-components-loading-dialog.d.ts +12 -4
  172. package/types/acorex-components-lookup.d.ts +962 -0
  173. package/types/acorex-components-map.d.ts +5 -0
  174. package/types/acorex-components-menu.d.ts +43 -7
  175. package/types/acorex-components-message-status.d.ts +23 -0
  176. package/types/acorex-components-message-time.d.ts +19 -0
  177. package/types/acorex-components-message.d.ts +59 -0
  178. package/types/acorex-components-notification.d.ts +11 -1
  179. package/types/acorex-components-number-box.d.ts +3 -1
  180. package/types/acorex-components-popover.d.ts +12 -1
  181. package/types/acorex-components-popup.d.ts +9 -1
  182. package/types/acorex-components-reaction.d.ts +85 -0
  183. package/types/acorex-components-scheduler.d.ts +2 -4
  184. package/types/acorex-components-select-box.d.ts +21 -4
  185. package/types/acorex-components-selection-list.d.ts +1 -1
  186. package/types/acorex-components-tabs.d.ts +148 -19
  187. package/types/acorex-components-toast.d.ts +10 -1
  188. package/types/acorex-components-tree-view.d.ts +39 -2
  189. package/types/acorex-components-wysiwyg.d.ts +13 -0
  190. package/fesm2022/acorex-components-conversation-composer-action-choice-dialog.component-CNHiM1Sp.mjs +0 -106
  191. package/fesm2022/acorex-components-conversation-composer-action-choice-dialog.component-CNHiM1Sp.mjs.map +0 -1
  192. package/fesm2022/acorex-components-conversation-open-composer-picker-for-files-Hh5Oyp3p.mjs +0 -223
  193. package/fesm2022/acorex-components-conversation-open-composer-picker-for-files-Hh5Oyp3p.mjs.map +0 -1
  194. package/fesm2022/acorex-components-flow-chart.mjs +0 -735
  195. package/fesm2022/acorex-components-flow-chart.mjs.map +0 -1
  196. package/fesm2022/acorex-components-query-builder.mjs +0 -267
  197. package/fesm2022/acorex-components-query-builder.mjs.map +0 -1
  198. package/fesm2022/acorex-components-selection-list-2.mjs +0 -168
  199. package/fesm2022/acorex-components-selection-list-2.mjs.map +0 -1
  200. package/flow-chart/README.md +0 -3
  201. package/query-builder/README.md +0 -3
  202. package/selection-list-2/README.md +0 -3
  203. package/types/acorex-components-flow-chart.d.ts +0 -187
  204. package/types/acorex-components-query-builder.d.ts +0 -52
  205. package/types/acorex-components-selection-list-2.d.ts +0 -52
@@ -1,8 +1,9 @@
1
1
  import * as _angular_core from '@angular/core';
2
2
  import { OnDestroy, TemplateRef, Type, Provider } from '@angular/core';
3
+ import { AXMenuItem } from '@acorex/components/menu';
3
4
  import { AXComponentContent, AXComponentInputs } from '@acorex/core/components';
4
5
  import { Subject } from 'rxjs';
5
- import { AXStyleColorType, AXComponentClosedPromise } from '@acorex/cdk/common';
6
+ import { AXStyleColorType, AXClickEvent, AXComponentClosedPromise } from '@acorex/cdk/common';
6
7
  import * as _acorex_core_file from '@acorex/core/file';
7
8
  import { AXFileTypeExtensionHint, AXFileType, AXFileTypeViewComponent } from '@acorex/core/file';
8
9
  import { SafeResourceUrl } from '@angular/platform-browser';
@@ -43,6 +44,16 @@ declare function resolveFileViewerFileType(item: AXFileViewerItem): string;
43
44
  /** Builds an extension hint from item metadata. */
44
45
  declare function buildFileViewerExtensionHint(item: AXFileViewerItem): AXFileTypeExtensionHint | undefined;
45
46
 
47
+ interface AXFileViewerHeaderActionClickEvent {
48
+ sender: AXFileViewerContainerComponent;
49
+ nativeEvent: Event;
50
+ canceled: boolean;
51
+ item: {
52
+ name?: string;
53
+ text: string;
54
+ data?: unknown;
55
+ };
56
+ }
46
57
  declare class AXFileViewerContainerComponent implements OnDestroy {
47
58
  #private;
48
59
  readonly items: _angular_core.InputSignal<AXFileViewerItem[]>;
@@ -51,18 +62,27 @@ declare class AXFileViewerContainerComponent implements OnDestroy {
51
62
  readonly pagination: _angular_core.InputSignal<boolean>;
52
63
  readonly download: _angular_core.InputSignal<boolean>;
53
64
  readonly fullscreen: _angular_core.InputSignal<boolean>;
65
+ /** Header action buttons rendered in the top-right actions area. */
66
+ readonly headerActions: _angular_core.InputSignal<AXMenuItem[]>;
54
67
  /** When true, opens in a gallery overlay and closes when fullscreen exits. */
55
68
  readonly galleryMode: _angular_core.InputSignal<boolean>;
56
69
  readonly headerContent: _angular_core.InputSignal<AXComponentContent>;
57
70
  readonly headerContentInputs: _angular_core.InputSignal<AXComponentInputs>;
58
71
  readonly fallbackContent: _angular_core.InputSignal<AXComponentContent>;
59
72
  readonly fallbackContentInputs: _angular_core.InputSignal<AXComponentInputs>;
73
+ /** Custom empty-state template or component. Falls back to the built-in empty state. */
74
+ readonly emptyContent: _angular_core.InputSignal<AXComponentContent>;
75
+ readonly emptyContentInputs: _angular_core.InputSignal<AXComponentInputs>;
60
76
  /** External loading flag — show overlay while parent data is being fetched. */
61
77
  readonly loading: _angular_core.InputSignal<boolean>;
78
+ readonly headerActionClick: _angular_core.OutputEmitterRef<AXFileViewerHeaderActionClickEvent>;
62
79
  readonly fullscreenClosed: _angular_core.OutputEmitterRef<void>;
63
80
  readonly service: AXFileViewerService;
64
81
  private readonly host;
65
82
  private readonly fullScreenService;
83
+ private readonly document;
84
+ private readonly platformId;
85
+ private readonly destroyRef;
66
86
  private readonly mainCarouselRef;
67
87
  private readonly thumbCarouselRef;
68
88
  private initToken;
@@ -70,6 +90,7 @@ declare class AXFileViewerContainerComponent implements OnDestroy {
70
90
  /** True while carousels are being (re)initialized. */
71
91
  readonly initializing: _angular_core.WritableSignal<boolean>;
72
92
  readonly isBusy: _angular_core.Signal<boolean>;
93
+ readonly isEmpty: _angular_core.Signal<boolean>;
73
94
  readonly isFirstSlide: _angular_core.Signal<boolean>;
74
95
  readonly isLastSlide: _angular_core.Signal<boolean>;
75
96
  readonly currentItem: _angular_core.Signal<AXFileViewerItem>;
@@ -80,6 +101,9 @@ declare class AXFileViewerContainerComponent implements OnDestroy {
80
101
  readonly headerTemplateContent: _angular_core.Signal<TemplateRef<any>>;
81
102
  readonly headerComponentContent: _angular_core.Signal<Type<unknown>>;
82
103
  readonly hasHeaderCenterContent: _angular_core.Signal<boolean>;
104
+ readonly emptyTemplateContent: _angular_core.Signal<TemplateRef<any>>;
105
+ readonly emptyComponentContent: _angular_core.Signal<Type<unknown>>;
106
+ readonly resolvedHeaderActions: _angular_core.Signal<AXMenuItem[]>;
83
107
  readonly headerContentContext: _angular_core.Signal<{
84
108
  item: AXFileViewerItem;
85
109
  items: AXFileViewerItem[];
@@ -91,11 +115,16 @@ declare class AXFileViewerContainerComponent implements OnDestroy {
91
115
  formatSize(size?: number): string;
92
116
  private readonly mainCarouselOptions;
93
117
  private readonly thumbnailCarouselOptions;
118
+ constructor();
119
+ resolveHeaderAction(action: AXMenuItem): AXMenuItem;
120
+ onHeaderActionClick(action: AXMenuItem, event: AXClickEvent): void;
121
+ private isFullscreenAction;
94
122
  toggleFullscreen(): void;
95
123
  enterFullscreen(): void;
96
124
  /** @param emitGalleryClose When false, skips gallery close notification (used during service teardown). */
97
125
  exitFullscreen(emitGalleryClose?: boolean): void;
98
126
  closeGallery(): void;
127
+ private onFullscreenEscape;
99
128
  private initCarousels;
100
129
  private readonly onSlideChange;
101
130
  next(): void;
@@ -104,7 +133,7 @@ declare class AXFileViewerContainerComponent implements OnDestroy {
104
133
  downloadCurrent(): Promise<void>;
105
134
  ngOnDestroy(): void;
106
135
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXFileViewerContainerComponent, never>;
107
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXFileViewerContainerComponent, "ax-file-viewer-container", never, { "items": { "alias": "items"; "required": false; "isSignal": true; }; "startIndex": { "alias": "startIndex"; "required": false; "isSignal": true; }; "thumbnail": { "alias": "thumbnail"; "required": false; "isSignal": true; }; "pagination": { "alias": "pagination"; "required": false; "isSignal": true; }; "download": { "alias": "download"; "required": false; "isSignal": true; }; "fullscreen": { "alias": "fullscreen"; "required": false; "isSignal": true; }; "galleryMode": { "alias": "galleryMode"; "required": false; "isSignal": true; }; "headerContent": { "alias": "headerContent"; "required": false; "isSignal": true; }; "headerContentInputs": { "alias": "headerContentInputs"; "required": false; "isSignal": true; }; "fallbackContent": { "alias": "fallbackContent"; "required": false; "isSignal": true; }; "fallbackContentInputs": { "alias": "fallbackContentInputs"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; }, { "fullscreenClosed": "fullscreenClosed"; }, never, never, true, never>;
136
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXFileViewerContainerComponent, "ax-file-viewer-container", never, { "items": { "alias": "items"; "required": false; "isSignal": true; }; "startIndex": { "alias": "startIndex"; "required": false; "isSignal": true; }; "thumbnail": { "alias": "thumbnail"; "required": false; "isSignal": true; }; "pagination": { "alias": "pagination"; "required": false; "isSignal": true; }; "download": { "alias": "download"; "required": false; "isSignal": true; }; "fullscreen": { "alias": "fullscreen"; "required": false; "isSignal": true; }; "headerActions": { "alias": "headerActions"; "required": false; "isSignal": true; }; "galleryMode": { "alias": "galleryMode"; "required": false; "isSignal": true; }; "headerContent": { "alias": "headerContent"; "required": false; "isSignal": true; }; "headerContentInputs": { "alias": "headerContentInputs"; "required": false; "isSignal": true; }; "fallbackContent": { "alias": "fallbackContent"; "required": false; "isSignal": true; }; "fallbackContentInputs": { "alias": "fallbackContentInputs"; "required": false; "isSignal": true; }; "emptyContent": { "alias": "emptyContent"; "required": false; "isSignal": true; }; "emptyContentInputs": { "alias": "emptyContentInputs"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; }, { "headerActionClick": "headerActionClick"; "fullscreenClosed": "fullscreenClosed"; }, never, never, true, never>;
108
137
  }
109
138
 
110
139
  interface AXFileViewerGalleryConfig {
@@ -112,12 +141,15 @@ interface AXFileViewerGalleryConfig {
112
141
  startIndex?: number;
113
142
  thumbnail?: boolean;
114
143
  download?: boolean;
144
+ headerActions?: AXMenuItem[];
115
145
  loading?: boolean;
116
146
  panelClass?: string[];
117
147
  headerContent?: AXComponentContent | null;
118
148
  headerContentInputs?: AXComponentInputs | null;
119
149
  fallbackContent?: AXComponentContent | null;
120
150
  fallbackContentInputs?: AXComponentInputs | null;
151
+ emptyContent?: AXComponentContent | null;
152
+ emptyContentInputs?: AXComponentInputs | null;
121
153
  }
122
154
  interface AXFileViewerGalleryRef<TResult = any> {
123
155
  close: (data?: TResult) => void;
@@ -171,6 +203,11 @@ declare class AXFileViewerHeaderPlaceholderComponent {
171
203
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXFileViewerHeaderPlaceholderComponent, "ax-file-viewer-header-placeholder", never, { "slideCounter": { "alias": "slideCounter"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
172
204
  }
173
205
 
206
+ declare class AXFileViewerEmptyStateComponent {
207
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXFileViewerEmptyStateComponent, never>;
208
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXFileViewerEmptyStateComponent, "ax-file-viewer-empty-state", never, {}, {}, never, never, true, never>;
209
+ }
210
+
174
211
  declare class AXFileViewerSlideComponent {
175
212
  readonly item: _angular_core.InputSignal<AXFileViewerItem>;
176
213
  readonly index: _angular_core.InputSignal<number>;
@@ -202,6 +239,7 @@ declare class AXFileViewerThumbPreviewComponent {
202
239
  private readonly service;
203
240
  readonly src: _angular_core.WritableSignal<string>;
204
241
  readonly icon: _angular_core.Signal<string>;
242
+ onImageError(): void;
205
243
  private resolvePreview;
206
244
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXFileViewerThumbPreviewComponent, never>;
207
245
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXFileViewerThumbPreviewComponent, "ax-file-viewer-thumb-preview", never, { "item": { "alias": "item"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
@@ -226,6 +264,7 @@ declare class AXFileViewerImageComponent implements AXFileTypeViewComponent<AXFi
226
264
  private readonly service;
227
265
  readonly src: _angular_core.WritableSignal<string>;
228
266
  readonly loading: _angular_core.WritableSignal<boolean>;
267
+ private loadedId;
229
268
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXFileViewerImageComponent, never>;
230
269
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXFileViewerImageComponent, "ax-file-viewer-image", never, { "payload": { "alias": "payload"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
231
270
  }
@@ -234,8 +273,10 @@ declare class AXFileViewerVideoComponent implements AXFileTypeViewComponent<AXFi
234
273
  #private;
235
274
  readonly payload: _angular_core.InputSignal<AXFileViewerViewPayload>;
236
275
  private readonly service;
276
+ private readonly mediaEl;
237
277
  readonly src: _angular_core.WritableSignal<string>;
238
278
  readonly loading: _angular_core.WritableSignal<boolean>;
279
+ private loadedId;
239
280
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXFileViewerVideoComponent, never>;
240
281
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXFileViewerVideoComponent, "ax-file-viewer-video", never, { "payload": { "alias": "payload"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
241
282
  }
@@ -244,8 +285,10 @@ declare class AXFileViewerAudioComponent implements AXFileTypeViewComponent<AXFi
244
285
  #private;
245
286
  readonly payload: _angular_core.InputSignal<AXFileViewerViewPayload>;
246
287
  private readonly service;
288
+ private readonly mediaEl;
247
289
  readonly src: _angular_core.WritableSignal<string>;
248
290
  readonly loading: _angular_core.WritableSignal<boolean>;
291
+ private loadedId;
249
292
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXFileViewerAudioComponent, never>;
250
293
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXFileViewerAudioComponent, "ax-file-viewer-audio", never, { "payload": { "alias": "payload"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
251
294
  }
@@ -257,6 +300,7 @@ declare class AXFileViewerPdfComponent implements AXFileTypeViewComponent<AXFile
257
300
  private readonly sanitizer;
258
301
  readonly safeSrc: _angular_core.WritableSignal<SafeResourceUrl>;
259
302
  readonly loading: _angular_core.WritableSignal<boolean>;
303
+ private loadedId;
260
304
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXFileViewerPdfComponent, never>;
261
305
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXFileViewerPdfComponent, "ax-file-viewer-pdf", never, { "payload": { "alias": "payload"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
262
306
  }
@@ -268,5 +312,5 @@ declare class AXFileViewerFileFallbackComponent implements AXFileTypeViewCompone
268
312
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXFileViewerFileFallbackComponent, "ax-file-viewer-fallback", never, { "payload": { "alias": "payload"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
269
313
  }
270
314
 
271
- export { AXFileViewerAudioComponent, AXFileViewerContainerComponent, AXFileViewerFileFallbackComponent, AXFileViewerGalleryService, AXFileViewerHeaderPlaceholderComponent, AXFileViewerImageComponent, AXFileViewerPdfComponent, AXFileViewerService, AXFileViewerSlideComponent, AXFileViewerThumbPreviewComponent, AXFileViewerThumbnailsComponent, AXFileViewerVideoComponent, buildFileViewerExtensionHint, createFileViewerFileTypes, provideFileViewer, resolveFileViewerFileType };
272
- export type { AXFileViewerGalleryConfig, AXFileViewerGalleryRef, AXFileViewerItem, AXFileViewerViewPayload };
315
+ export { AXFileViewerAudioComponent, AXFileViewerContainerComponent, AXFileViewerEmptyStateComponent, AXFileViewerFileFallbackComponent, AXFileViewerGalleryService, AXFileViewerHeaderPlaceholderComponent, AXFileViewerImageComponent, AXFileViewerPdfComponent, AXFileViewerService, AXFileViewerSlideComponent, AXFileViewerThumbPreviewComponent, AXFileViewerThumbnailsComponent, AXFileViewerVideoComponent, buildFileViewerExtensionHint, createFileViewerFileTypes, provideFileViewer, resolveFileViewerFileType };
316
+ export type { AXFileViewerGalleryConfig, AXFileViewerGalleryRef, AXFileViewerHeaderActionClickEvent, AXFileViewerItem, AXFileViewerViewPayload };
@@ -5,6 +5,8 @@ import { NXEvent, NXComponent } from '@acorex/cdk/common';
5
5
  import { Subscription } from 'rxjs';
6
6
  import * as gridstack from 'gridstack';
7
7
 
8
+ /** Grid size preset as `[width, height]` in column/row units. */
9
+ type AXGridLayoutSize = readonly [width: number, height: number];
8
10
  interface AXGridLayoutPosition {
9
11
  /** widget position x (default?: 0) */
10
12
  x?: number;
@@ -22,6 +24,11 @@ interface AXGridLayoutPosition {
22
24
  minWidth?: number;
23
25
  /** minimum height of widget in rows (default?: undefined = un-constrained) */
24
26
  minHeight?: number;
27
+ /**
28
+ * When set, resize is limited to these `[width, height]` presets.
29
+ * Invalid sizes revert to the previous size on resize end. Min/max bounds are derived from this list.
30
+ */
31
+ allowedSizes?: readonly AXGridLayoutSize[];
25
32
  }
26
33
  interface AXGridLayoutWidget extends AXGridLayoutPosition {
27
34
  id?: string;
@@ -318,5 +325,30 @@ declare class AXGridLayoutBuilderModule {
318
325
  static ɵinj: _angular_core.ɵɵInjectorDeclaration<AXGridLayoutBuilderModule>;
319
326
  }
320
327
 
321
- export { AXGridLayoutBuilderModule, AXGridLayoutContainerComponent, AXGridLayoutWidgetComponent };
322
- export type { AXGridLayout, AXGridLayoutContainerElement, AXGridLayoutEvent, AXGridLayoutNode, AXGridLayoutOptions, AXGridLayoutPosition, AXGridLayoutWidget, AXGridLayoutWidgetElement };
328
+ declare const AX_GRID_LAYOUT_ALLOWED_SIZES_ATTR = "data-ax-allowed-sizes";
329
+ declare function convertAXGridLayoutWidgetToGridStackWidget(widget: AXGridLayoutWidget): gridstack.GridStackWidget;
330
+ declare function convertGridStackWidgetToAXGridLayoutWidget(widget: gridstack.GridStackWidget): AXGridLayoutWidget;
331
+ declare function convertAXGridLayoutNodeToGridStackNode(node: AXGridLayoutNode): gridstack.GridStackNode;
332
+ declare function convertGridStackNodeToAXGridLayoutNode(node: gridstack.GridStackNode): AXGridLayoutNode;
333
+ declare function convertAXGridLayoutOptionsToGridStackOptions(options: AXGridLayoutOptions): gridstack.GridStackOptions;
334
+ declare function convertGridStackOptionsToAXGridLayoutOptions(options: gridstack.GridStackOptions): AXGridLayoutOptions;
335
+ /** remove keys which are undefined */
336
+ declare function removeUndefinedKeys<T extends object>(obj: T): T;
337
+ declare function writeAllowedSizesToElement(element: HTMLElement | undefined, allowedSizes: readonly AXGridLayoutSize[] | undefined): void;
338
+ declare function readAllowedSizesFromElement(element: HTMLElement): readonly AXGridLayoutSize[] | undefined;
339
+ declare const AX_GRID_LAYOUT_RESIZE_INVALID_CLASS = "ax-grid-layout-resize-invalid";
340
+ declare const AX_GRID_LAYOUT_RESIZE_PREV_SIZE_ATTR = "data-ax-resize-prev-size";
341
+ declare function isExactAllowedSize(width: number, height: number, allowedSizes: readonly AXGridLayoutSize[]): boolean;
342
+ declare function updateResizeValidityMarkers(gridEl: HTMLElement, element: gridstack.GridItemHTMLElement): void;
343
+ declare function clearResizeValidityMarkers(gridEl: HTMLElement): void;
344
+ declare function storeResizeStartSize(element: gridstack.GridItemHTMLElement): void;
345
+ declare function clearResizeStartSize(element: HTMLElement): void;
346
+ declare function readResizeStartSize(element: HTMLElement): AXGridLayoutSize | undefined;
347
+ declare function snapToAllowedSize(width: number, height: number, allowedSizes: readonly AXGridLayoutSize[]): AXGridLayoutSize;
348
+ declare function deriveMinMaxFromAllowedSizes(allowedSizes: readonly AXGridLayoutSize[]): Pick<AXGridLayoutWidget, 'minWidth' | 'maxWidth' | 'minHeight' | 'maxHeight'>;
349
+ declare function normalizeLayoutNodeWithAllowedSizes<T extends AXGridLayoutWidget>(node: T): T;
350
+ declare function snapElementToAllowedSize(grid: gridstack.GridStack, element: gridstack.GridItemHTMLElement): boolean;
351
+ declare function revertElementToAllowedSizeIfInvalid(grid: gridstack.GridStack, element: gridstack.GridItemHTMLElement): boolean;
352
+
353
+ export { AXGridLayoutBuilderModule, AXGridLayoutContainerComponent, AXGridLayoutWidgetComponent, AX_GRID_LAYOUT_ALLOWED_SIZES_ATTR, AX_GRID_LAYOUT_RESIZE_INVALID_CLASS, AX_GRID_LAYOUT_RESIZE_PREV_SIZE_ATTR, clearResizeStartSize, clearResizeValidityMarkers, convertAXGridLayoutNodeToGridStackNode, convertAXGridLayoutOptionsToGridStackOptions, convertAXGridLayoutWidgetToGridStackWidget, convertGridStackNodeToAXGridLayoutNode, convertGridStackOptionsToAXGridLayoutOptions, convertGridStackWidgetToAXGridLayoutWidget, deriveMinMaxFromAllowedSizes, isExactAllowedSize, normalizeLayoutNodeWithAllowedSizes, readAllowedSizesFromElement, readResizeStartSize, removeUndefinedKeys, revertElementToAllowedSizeIfInvalid, snapElementToAllowedSize, snapToAllowedSize, storeResizeStartSize, updateResizeValidityMarkers, writeAllowedSizesToElement };
354
+ export type { AXGridLayout, AXGridLayoutContainerElement, AXGridLayoutEvent, AXGridLayoutNode, AXGridLayoutOptions, AXGridLayoutPosition, AXGridLayoutSize, AXGridLayoutWidget, AXGridLayoutWidgetElement };
@@ -0,0 +1,31 @@
1
+ import * as _angular_core from '@angular/core';
2
+ import { AXHighlightOptions, AXHighlightSegment } from '@acorex/core/utils';
3
+ import { SafeHtml } from '@angular/platform-browser';
4
+
5
+ /**
6
+ * Renders text with search-term matches wrapped in `.ax-highlight` spans.
7
+ *
8
+ * Uses a single innerHTML string so Angular control-flow whitespace cannot insert
9
+ * gaps between highlighted and non-highlighted characters.
10
+ *
11
+ * Does not use the `ax-highlight-text` class on the host — that class is reserved for
12
+ * {@link AXHighlightService} DOM wrappers.
13
+ */
14
+ declare class AXHighlightTextComponent {
15
+ #private;
16
+ private readonly sanitizer;
17
+ /** The full text to render. */
18
+ readonly text: _angular_core.InputSignal<string>;
19
+ /** The search term or terms to highlight within the text. */
20
+ readonly query: _angular_core.InputSignal<string | readonly string[]>;
21
+ /** When true, highlighting is disabled and plain text is shown. */
22
+ readonly highlightDisabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
23
+ /** Optional highlight behavior configuration. */
24
+ readonly highlightOptions: _angular_core.InputSignal<AXHighlightOptions>;
25
+ protected readonly segments: _angular_core.Signal<AXHighlightSegment[]>;
26
+ protected readonly highlightedHtml: _angular_core.Signal<SafeHtml>;
27
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXHighlightTextComponent, never>;
28
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXHighlightTextComponent, "ax-highlight-text", never, { "text": { "alias": "text"; "required": false; "isSignal": true; }; "query": { "alias": "query"; "required": false; "isSignal": true; }; "highlightDisabled": { "alias": "highlightDisabled"; "required": false; "isSignal": true; }; "highlightOptions": { "alias": "highlightOptions"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
29
+ }
30
+
31
+ export { AXHighlightTextComponent };
@@ -2,15 +2,6 @@ import * as polytype from 'polytype';
2
2
  import * as _angular_core from '@angular/core';
3
3
  import { OnDestroy, ElementRef, Renderer2 } from '@angular/core';
4
4
  import { MXBaseComponent, MXInputBaseValueComponent, MXLookComponent } from '@acorex/cdk/common';
5
- import * as i1 from '@acorex/components/button';
6
- import * as i2 from '@angular/forms';
7
- import * as i3 from '@acorex/components/range-slider';
8
- import * as i4 from '@acorex/components/select-box';
9
- import * as i5 from '@acorex/components/color-box';
10
- import * as i6 from '@acorex/components/popover';
11
- import * as i7 from '@acorex/components/decorators';
12
- import * as i8 from '@acorex/components/loading';
13
- import * as i9 from '@acorex/components/dialog';
14
5
 
15
6
  type AXImageEditorTool = 'pen' | 'highlight' | 'crop' | 'rotate';
16
7
  declare class AXImageEditorService {
@@ -25,19 +16,27 @@ declare class AXImageEditorService {
25
16
  userInteract: boolean;
26
17
  }>;
27
18
  isImageLoad: _angular_core.WritableSignal<boolean>;
19
+ loadError: _angular_core.WritableSignal<boolean>;
28
20
  newImage: HTMLImageElement | null;
29
21
  initialImage: HTMLImageElement | null;
30
22
  imageBlob: _angular_core.WritableSignal<Blob[]>;
31
23
  undoPressed: _angular_core.WritableSignal<boolean>;
32
24
  redoPressed: _angular_core.WritableSignal<boolean>;
25
+ canUndo: _angular_core.WritableSignal<boolean>;
26
+ canRedo: _angular_core.WritableSignal<boolean>;
33
27
  cropperRatio: _angular_core.WritableSignal<string>;
34
28
  cropperSize: _angular_core.WritableSignal<number>;
35
29
  toggleTool(tool: AXImageEditorTool): void;
36
30
  activateTool(tool: AXImageEditorTool): void;
31
+ undo(): void;
32
+ redo(): void;
33
+ /** Handles Ctrl/Cmd+Z and Ctrl/Cmd+Y history shortcuts. Returns true when handled. */
34
+ handleHistoryShortcut(event: KeyboardEvent): boolean;
37
35
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXImageEditorService, never>;
38
36
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXImageEditorService>;
39
37
  }
40
38
 
39
+ type AXImageEditorCropHandle = 'right' | 'top' | 'left' | 'bottom' | 'right-top' | 'bottom-right' | 'bottom-left' | 'left-top';
41
40
  /**
42
41
  * paint mode.
43
42
  * @category Components
@@ -55,39 +54,41 @@ declare class AXImageEditorCropperWindowComponent implements OnDestroy {
55
54
  protected cropperWindow: _angular_core.Signal<ElementRef<any>>;
56
55
  private currentX;
57
56
  private currentY;
58
- private prevX;
59
- private prevY;
60
57
  private aspectWidth;
61
58
  private aspectHeight;
62
59
  private isMousePressed;
63
60
  protected renderer: Renderer2;
64
61
  private platformID;
65
- private mouseMoveEvent;
66
- private mouseUpEvent;
67
- private mouseMoveEvent2;
68
- private mouseUpEvent2;
69
- private mouseDownEvent;
70
- private mouseLeaveEvent;
62
+ private mouseMoveEvent?;
63
+ private mouseUpEvent?;
64
+ private mouseMoveEvent2?;
65
+ private mouseUpEvent2?;
66
+ private mouseDownEvent?;
67
+ private mouseLeaveEvent?;
68
+ private positioned;
71
69
  ngOnDestroy(): void;
72
- protected panMove(e: MouseEvent): void;
73
- protected panDown(e: MouseEvent): void;
70
+ protected panMove(e: PointerEvent): void;
71
+ protected panDown(e: PointerEvent): void;
74
72
  protected panUp(): void;
75
73
  getCropperArea(): DOMRect;
76
- private setPosition;
77
74
  private startX;
78
75
  private startY;
79
76
  private startWidth;
80
77
  private startHeight;
81
78
  private startLeft;
82
79
  private startTop;
83
- protected handleSelector(e: MouseEvent, value: string): void;
84
- protected changeSizeHandler(e: MouseEvent): void;
80
+ protected handleSelector(e: PointerEvent, value: AXImageEditorCropHandle): void;
81
+ protected changeSizeHandler(e: PointerEvent): void;
85
82
  protected clearSelector(): void;
83
+ private normalizeRatio;
84
+ private centerOnParent;
85
+ private clampToParent;
86
+ private applyPosition;
86
87
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXImageEditorCropperWindowComponent, never>;
87
88
  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>;
88
89
  }
89
90
 
90
- declare class AXImageEditorViewComponent extends MXBaseComponent implements OnDestroy {
91
+ declare class AXImageEditorViewComponent extends MXBaseComponent {
91
92
  /**
92
93
  * its change grid display state.
93
94
  */
@@ -118,44 +119,54 @@ declare class AXImageEditorViewComponent extends MXBaseComponent implements OnDe
118
119
  protected isDrawRectangleCreated: _angular_core.WritableSignal<boolean>;
119
120
  /** @ignore */
120
121
  protected parent: AXImageEditorContainerComponent;
121
- /** @ignore */
122
- protected renderer: Renderer2;
122
+ private readonly destroyRef;
123
+ private readonly host;
123
124
  /** @ignore */
124
125
  protected imageEditorHistory: _angular_core.WritableSignal<HTMLImageElement[]>;
125
126
  /** @ignore */
126
127
  protected imageEditorHistoryPointer: _angular_core.WritableSignal<number>;
127
- /** @ignore */
128
- private resizeEventListener;
129
- /** @ignore */
130
- private imageLoadEventListener;
131
- private originalWidth;
132
- private originalHeight;
133
- private scale;
128
+ private canvasReady;
129
+ private drawing;
130
+ private didDraw;
131
+ private highlightSnapshot;
132
+ private highlightPoints;
133
+ private persistGeneration;
134
+ private sourceToken;
135
+ constructor();
134
136
  /** @ignore */
135
137
  protected resizeWindow(): void;
136
138
  /** @ignore */
137
139
  protected canvasResponsive(image: HTMLImageElement): void;
138
- /** @ignore */
139
- constructor();
140
- /** @ignore */
141
- ngOnDestroy(): void;
142
- private setInitialImage;
143
- /** @ignore */
144
- protected imageChanged(): void;
140
+ private loadSource;
141
+ private paintImage;
142
+ private fitCanvasDisplay;
143
+ private replaceHistory;
144
+ private pushHistory;
145
+ private syncHistoryFlags;
146
+ private applyUndo;
147
+ private applyRedo;
148
+ private canvasPoint;
149
+ private isDrawTool;
145
150
  /** @ignore */
146
151
  protected penConfigHandler(penType: 'pen' | 'highlight'): void;
152
+ private strokeHighlight;
147
153
  /** @ignore */
148
- protected mouseDownHandler(e: MouseEvent): void;
154
+ protected historyKeyDown(event: KeyboardEvent): void;
149
155
  /** @ignore */
150
- protected mouseMoveHandler(e: MouseEvent): void;
156
+ protected focusCanvas(): void;
151
157
  /** @ignore */
152
- protected mouseUpHandler(): void;
158
+ protected mouseDownHandler(event: PointerEvent): void;
153
159
  /** @ignore */
154
- crop(): Promise<void>;
160
+ protected mouseMoveHandler(event: PointerEvent): void;
155
161
  /** @ignore */
156
- protected rotateImage(): void;
162
+ protected mouseUpHandler(event?: PointerEvent): void;
163
+ /** Applies the current cropper selection. */
164
+ crop(): Promise<void>;
165
+ /** Encodes the current canvas into JPEG, PNG, and WebP blobs. */
166
+ commitChanges(): Promise<Blob[]>;
157
167
  /** @ignore */
158
- protected saveImageChange(): Promise<void>;
168
+ protected rotateImage(): Promise<void>;
169
+ private persistCanvas;
159
170
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXImageEditorViewComponent, never>;
160
171
  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>;
161
172
  }
@@ -173,12 +184,21 @@ declare class AXImageEditorContainerComponent extends AXImageEditorContainerComp
173
184
  #private;
174
185
  /** @ignore */
175
186
  protected service: AXImageEditorService;
187
+ private readonly host;
188
+ private readonly destroyRef;
176
189
  imageEditorContainer: _angular_core.Signal<ElementRef<any>>;
177
190
  view: _angular_core.Signal<AXImageEditorViewComponent>;
191
+ constructor();
192
+ /** @ignore */
193
+ protected focusEditor(): void;
178
194
  /** Applies the current cropper selection. */
179
195
  crop(): Promise<void>;
180
- get __hostClass(): string;
181
- private get __hostName();
196
+ /** @ignore */
197
+ protected onEditorPointerDown(event: PointerEvent): void;
198
+ /** @ignore */
199
+ protected handleHistoryShortcut(event: KeyboardEvent): void;
200
+ /** Encodes the current canvas into JPEG, PNG, and WebP blobs. */
201
+ commitChanges(): Promise<Blob[]>;
182
202
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXImageEditorContainerComponent, never>;
183
203
  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>;
184
204
  }
@@ -287,7 +307,7 @@ declare class AXImageEditorToolSelectorComponent {
287
307
 
288
308
  declare class AXImageEditorModule {
289
309
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXImageEditorModule, never>;
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]>;
310
+ static ɵmod: _angular_core.ɵɵNgModuleDeclaration<AXImageEditorModule, never, [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]>;
291
311
  static ɵinj: _angular_core.ɵɵInjectorDeclaration<AXImageEditorModule>;
292
312
  }
293
313
 
@@ -0,0 +1,52 @@
1
+ import * as _angular_core from '@angular/core';
2
+ import { AXEmoji } from '@acorex/core/constants';
3
+
4
+ declare class AXInlineReactionComponent {
5
+ private readonly elementRef;
6
+ private readonly document;
7
+ private readonly platformId;
8
+ readonly emojis: _angular_core.InputSignal<readonly AXEmoji[]>;
9
+ readonly size: _angular_core.InputSignal<number>;
10
+ /** Whether the reaction bar is expanded to show all emojis. */
11
+ readonly expanded: _angular_core.WritableSignal<boolean>;
12
+ /**
13
+ * Maximum number of emojis to display in the bar.
14
+ *
15
+ * @defaultValue 8
16
+ */
17
+ readonly maxVisible: _angular_core.InputSignal<number>;
18
+ /**
19
+ * When true, hides the expand button and always shows the collapsed bar only.
20
+ *
21
+ * @defaultValue false
22
+ */
23
+ readonly showExpanded: _angular_core.InputSignal<boolean>;
24
+ /**
25
+ * When true, collapses the bar when the user clicks outside the component.
26
+ *
27
+ * @defaultValue true
28
+ */
29
+ readonly closeOnClickOutside: _angular_core.InputSignal<boolean>;
30
+ /**
31
+ * Emits when the user clicks a quick reaction.
32
+ */
33
+ readonly selected: _angular_core.OutputEmitterRef<AXEmoji>;
34
+ /**
35
+ * Emits when the expanded state changes (expand button or click outside).
36
+ */
37
+ readonly expandedChange: _angular_core.OutputEmitterRef<boolean>;
38
+ protected readonly visibleEmojis: _angular_core.Signal<readonly AXEmoji[]>;
39
+ constructor();
40
+ protected toggleExpanded(event: Event): void;
41
+ private setExpanded;
42
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXInlineReactionComponent, never>;
43
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXInlineReactionComponent, "ax-inline-reaction", never, { "emojis": { "alias": "emojis"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "maxVisible": { "alias": "maxVisible"; "required": false; "isSignal": true; }; "showExpanded": { "alias": "showExpanded"; "required": false; "isSignal": true; }; "closeOnClickOutside": { "alias": "closeOnClickOutside"; "required": false; "isSignal": true; }; }, { "selected": "selected"; "expandedChange": "expandedChange"; }, never, never, true, never>;
44
+ }
45
+
46
+ declare class AXInlineReactionModule {
47
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXInlineReactionModule, never>;
48
+ static ɵmod: _angular_core.ɵɵNgModuleDeclaration<AXInlineReactionModule, never, [typeof AXInlineReactionComponent], [typeof AXInlineReactionComponent]>;
49
+ static ɵinj: _angular_core.ɵɵInjectorDeclaration<AXInlineReactionModule>;
50
+ }
51
+
52
+ export { AXInlineReactionComponent, AXInlineReactionModule };
@@ -1,6 +1,7 @@
1
1
  import { AXStyleColorType, AXStyleLookType, AXHotKeyAction, MXBaseComponent } from '@acorex/cdk/common';
2
2
  import { AXOverlayRef } from '@acorex/cdk/overlay';
3
3
  import { AXDialogButtonItem } from '@acorex/components/dialog';
4
+ import { AXPopupSizeType, AXPopupRef } from '@acorex/components/popup';
4
5
  import { AXProgressMode } from '@acorex/components/progress-bar';
5
6
  import * as _angular_core from '@angular/core';
6
7
  import { OnInit } from '@angular/core';
@@ -13,6 +14,8 @@ interface AXLoadingDialogConfig {
13
14
  progressValue?: number;
14
15
  progressColor?: AXStyleColorType;
15
16
  progressHeight?: number;
17
+ /** Popup size token. Uses the same responsive sizes as `AXPopupService`. @default 'sm' */
18
+ size?: AXPopupSizeType;
16
19
  buttons?: AXLoadingDialogButtonItem[];
17
20
  }
18
21
  interface AXLoadingDialogButtonItem {
@@ -43,7 +46,7 @@ interface AXLoadingDialogRef {
43
46
  type AXDialogRef = AXLoadingDialogRef;
44
47
  /**
45
48
  * @internal
46
- * Internal reference used by loading dialog service to manage overlay instances
49
+ * Internal reference used by loading dialog service to manage overlay instances.
47
50
  */
48
51
  interface AXLoadingDialogInternalRef {
49
52
  overlayRef: AXOverlayRef<unknown>;
@@ -57,8 +60,13 @@ interface AXLoadingDialogInternalRef {
57
60
  declare class AXLoadingDialogComponent extends MXBaseComponent implements OnInit {
58
61
  /** Loading dialog configuration data */
59
62
  data: _angular_core.InputSignal<AXLoadingDialogConfig>;
60
- /** @internal Callback function to close the dialog */
63
+ /** Callback function to close the dialog */
61
64
  onClose: _angular_core.InputSignal<() => void>;
65
+ /**
66
+ * Injected by {@link AXPopupComponent} when this dialog is opened via {@link AXPopupService}.
67
+ * @internal
68
+ */
69
+ readonly __popup__: _angular_core.InputSignal<AXPopupRef<any>>;
62
70
  /** @ignore */
63
71
  protected progressText: _angular_core.WritableSignal<string>;
64
72
  /** @ignore */
@@ -116,7 +124,7 @@ declare class AXLoadingDialogComponent extends MXBaseComponent implements OnInit
116
124
  /** @ignore */
117
125
  protected _hasAutoFocus(button: AXLoadingDialogButtonItem): boolean;
118
126
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXLoadingDialogComponent, never>;
119
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXLoadingDialogComponent, "ax-loading-dialog", never, { "data": { "alias": "data"; "required": true; "isSignal": true; }; "onClose": { "alias": "onClose"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
127
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXLoadingDialogComponent, "ax-loading-dialog", never, { "data": { "alias": "data"; "required": true; "isSignal": true; }; "onClose": { "alias": "onClose"; "required": false; "isSignal": true; }; "__popup__": { "alias": "__popup__"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
120
128
  }
121
129
 
122
130
  declare class AXLoadingDialogModule {
@@ -126,7 +134,7 @@ declare class AXLoadingDialogModule {
126
134
  }
127
135
 
128
136
  declare class AXLoadingDialogService {
129
- private overlayService;
137
+ private popupService;
130
138
  /**
131
139
  * Opens a loading dialog with the specified configuration.
132
140
  *