@acorex/components 22.0.0 → 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 (149) hide show
  1. package/emoji/README.md +3 -0
  2. package/emojipicker/README.md +3 -0
  3. package/fesm2022/acorex-components-accordion.mjs +4 -4
  4. package/fesm2022/acorex-components-accordion.mjs.map +1 -1
  5. package/fesm2022/acorex-components-audio-wave.mjs +291 -267
  6. package/fesm2022/acorex-components-audio-wave.mjs.map +1 -1
  7. package/fesm2022/acorex-components-bubble.mjs +71 -0
  8. package/fesm2022/acorex-components-bubble.mjs.map +1 -0
  9. package/fesm2022/acorex-components-button-group.mjs +12 -5
  10. package/fesm2022/acorex-components-button-group.mjs.map +1 -1
  11. package/fesm2022/acorex-components-button.mjs +2 -2
  12. package/fesm2022/acorex-components-button.mjs.map +1 -1
  13. package/fesm2022/acorex-components-calendar.mjs +321 -118
  14. package/fesm2022/acorex-components-calendar.mjs.map +1 -1
  15. package/fesm2022/acorex-components-combo-box.mjs +238 -48
  16. package/fesm2022/acorex-components-combo-box.mjs.map +1 -1
  17. package/fesm2022/acorex-components-conversation-acorex-components-conversation-DDkiZfPb.mjs +19058 -0
  18. package/fesm2022/acorex-components-conversation-acorex-components-conversation-DDkiZfPb.mjs.map +1 -0
  19. package/fesm2022/acorex-components-conversation-composer-action-choice-dialog.component-COUB9zrM.mjs +50 -0
  20. package/fesm2022/acorex-components-conversation-composer-action-choice-dialog.component-COUB9zrM.mjs.map +1 -0
  21. package/fesm2022/acorex-components-conversation-image-picker-editor-dialog.component-COT96F_v.mjs +87 -0
  22. package/fesm2022/acorex-components-conversation-image-picker-editor-dialog.component-COT96F_v.mjs.map +1 -0
  23. package/fesm2022/acorex-components-conversation-picker-rename-file-dialog.component-CH3Q6Hry.mjs +65 -0
  24. package/fesm2022/acorex-components-conversation-picker-rename-file-dialog.component-CH3Q6Hry.mjs.map +1 -0
  25. package/fesm2022/acorex-components-conversation.mjs +1 -15470
  26. package/fesm2022/acorex-components-conversation.mjs.map +1 -1
  27. package/fesm2022/acorex-components-cron-job.mjs +1 -1
  28. package/fesm2022/acorex-components-cron-job.mjs.map +1 -1
  29. package/fesm2022/acorex-components-data-pager.mjs +4 -4
  30. package/fesm2022/acorex-components-data-pager.mjs.map +1 -1
  31. package/fesm2022/acorex-components-data-table.mjs +126 -30
  32. package/fesm2022/acorex-components-data-table.mjs.map +1 -1
  33. package/fesm2022/acorex-components-datetime-picker.mjs +1 -1
  34. package/fesm2022/acorex-components-datetime-picker.mjs.map +1 -1
  35. package/fesm2022/acorex-components-decorators.mjs +36 -6
  36. package/fesm2022/acorex-components-decorators.mjs.map +1 -1
  37. package/fesm2022/acorex-components-dialog.mjs +1 -1
  38. package/fesm2022/acorex-components-dialog.mjs.map +1 -1
  39. package/fesm2022/acorex-components-dropdown-button.mjs +1 -1
  40. package/fesm2022/acorex-components-dropdown-button.mjs.map +1 -1
  41. package/fesm2022/acorex-components-emoji.mjs +74 -0
  42. package/fesm2022/acorex-components-emoji.mjs.map +1 -0
  43. package/fesm2022/acorex-components-emojipicker.mjs +425 -0
  44. package/fesm2022/acorex-components-emojipicker.mjs.map +1 -0
  45. package/fesm2022/acorex-components-fab.mjs +2 -2
  46. package/fesm2022/acorex-components-fab.mjs.map +1 -1
  47. package/fesm2022/acorex-components-file-viewer.mjs +339 -89
  48. package/fesm2022/acorex-components-file-viewer.mjs.map +1 -1
  49. package/fesm2022/acorex-components-form.mjs +1 -1
  50. package/fesm2022/acorex-components-form.mjs.map +1 -1
  51. package/fesm2022/acorex-components-highlight.mjs +80 -0
  52. package/fesm2022/acorex-components-highlight.mjs.map +1 -0
  53. package/fesm2022/acorex-components-image-editor.mjs +686 -416
  54. package/fesm2022/acorex-components-image-editor.mjs.map +1 -1
  55. package/fesm2022/acorex-components-inline-reaction.mjs +111 -0
  56. package/fesm2022/acorex-components-inline-reaction.mjs.map +1 -0
  57. package/fesm2022/acorex-components-kanban.mjs +1 -1
  58. package/fesm2022/acorex-components-kanban.mjs.map +1 -1
  59. package/fesm2022/acorex-components-loading-dialog.mjs +1 -1
  60. package/fesm2022/acorex-components-loading-dialog.mjs.map +1 -1
  61. package/fesm2022/acorex-components-lookup.mjs +742 -134
  62. package/fesm2022/acorex-components-lookup.mjs.map +1 -1
  63. package/fesm2022/acorex-components-map.mjs +7 -0
  64. package/fesm2022/acorex-components-map.mjs.map +1 -1
  65. package/fesm2022/acorex-components-menu.mjs +96 -16
  66. package/fesm2022/acorex-components-menu.mjs.map +1 -1
  67. package/fesm2022/acorex-components-message-status.mjs +71 -0
  68. package/fesm2022/acorex-components-message-status.mjs.map +1 -0
  69. package/fesm2022/acorex-components-message-time.mjs +36 -0
  70. package/fesm2022/acorex-components-message-time.mjs.map +1 -0
  71. package/fesm2022/acorex-components-message.mjs +120 -0
  72. package/fesm2022/acorex-components-message.mjs.map +1 -0
  73. package/fesm2022/acorex-components-notification.mjs +1 -1
  74. package/fesm2022/acorex-components-notification.mjs.map +1 -1
  75. package/fesm2022/acorex-components-paint.mjs +1 -1
  76. package/fesm2022/acorex-components-paint.mjs.map +1 -1
  77. package/fesm2022/acorex-components-popover.mjs +19 -8
  78. package/fesm2022/acorex-components-popover.mjs.map +1 -1
  79. package/fesm2022/acorex-components-popup.mjs +1 -1
  80. package/fesm2022/acorex-components-popup.mjs.map +1 -1
  81. package/fesm2022/acorex-components-rail-navigation.mjs +2 -2
  82. package/fesm2022/acorex-components-rail-navigation.mjs.map +1 -1
  83. package/fesm2022/acorex-components-range-slider.mjs +2 -2
  84. package/fesm2022/acorex-components-range-slider.mjs.map +1 -1
  85. package/fesm2022/acorex-components-reaction.mjs +144 -0
  86. package/fesm2022/acorex-components-reaction.mjs.map +1 -0
  87. package/fesm2022/acorex-components-rest-api-generator.mjs +5 -5
  88. package/fesm2022/acorex-components-rest-api-generator.mjs.map +1 -1
  89. package/fesm2022/acorex-components-rrule.mjs +1 -1
  90. package/fesm2022/acorex-components-rrule.mjs.map +1 -1
  91. package/fesm2022/acorex-components-scheduler-picker.mjs +5 -5
  92. package/fesm2022/acorex-components-scheduler-picker.mjs.map +1 -1
  93. package/fesm2022/acorex-components-scheduler.mjs +1 -1
  94. package/fesm2022/acorex-components-scheduler.mjs.map +1 -1
  95. package/fesm2022/acorex-components-selection-list.mjs +1 -2
  96. package/fesm2022/acorex-components-selection-list.mjs.map +1 -1
  97. package/fesm2022/acorex-components-tabs.mjs +510 -74
  98. package/fesm2022/acorex-components-tabs.mjs.map +1 -1
  99. package/fesm2022/acorex-components-tree-view.mjs +49 -6
  100. package/fesm2022/acorex-components-tree-view.mjs.map +1 -1
  101. package/fesm2022/acorex-components-wysiwyg.mjs +76 -6
  102. package/fesm2022/acorex-components-wysiwyg.mjs.map +1 -1
  103. package/highlight/README.md +13 -0
  104. package/inline-reaction/README.md +3 -0
  105. package/lookup/README.md +1 -1
  106. package/message/README.md +3 -0
  107. package/message-status/README.md +3 -0
  108. package/message-time/README.md +3 -0
  109. package/package.json +42 -12
  110. package/reaction/README.md +3 -0
  111. package/types/acorex-components-audio-wave.d.ts +132 -73
  112. package/types/acorex-components-bubble.d.ts +31 -0
  113. package/types/acorex-components-button-group.d.ts +4 -0
  114. package/types/acorex-components-button.d.ts +1 -1
  115. package/types/acorex-components-calendar.d.ts +41 -9
  116. package/types/acorex-components-combo-box.d.ts +34 -4
  117. package/types/acorex-components-conversation.d.ts +1745 -1322
  118. package/types/acorex-components-data-table.d.ts +27 -7
  119. package/types/acorex-components-decorators.d.ts +13 -1
  120. package/types/acorex-components-emoji.d.ts +42 -0
  121. package/types/acorex-components-emojipicker.d.ts +146 -0
  122. package/types/acorex-components-file-viewer.d.ts +48 -4
  123. package/types/acorex-components-highlight.d.ts +31 -0
  124. package/types/acorex-components-image-editor.d.ts +68 -48
  125. package/types/acorex-components-inline-reaction.d.ts +52 -0
  126. package/types/acorex-components-lookup.d.ts +213 -82
  127. package/types/acorex-components-map.d.ts +5 -0
  128. package/types/acorex-components-menu.d.ts +15 -3
  129. package/types/acorex-components-message-status.d.ts +23 -0
  130. package/types/acorex-components-message-time.d.ts +19 -0
  131. package/types/acorex-components-message.d.ts +59 -0
  132. package/types/acorex-components-popover.d.ts +5 -3
  133. package/types/acorex-components-reaction.d.ts +85 -0
  134. package/types/acorex-components-selection-list.d.ts +1 -1
  135. package/types/acorex-components-tabs.d.ts +148 -19
  136. package/types/acorex-components-tree-view.d.ts +31 -2
  137. package/types/acorex-components-wysiwyg.d.ts +13 -0
  138. package/fesm2022/acorex-components-conversation-composer-action-choice-dialog.component-DCcRJYfF.mjs +0 -50
  139. package/fesm2022/acorex-components-conversation-composer-action-choice-dialog.component-DCcRJYfF.mjs.map +0 -1
  140. package/fesm2022/acorex-components-conversation-open-composer-picker-for-files-DnSW908R.mjs +0 -210
  141. package/fesm2022/acorex-components-conversation-open-composer-picker-for-files-DnSW908R.mjs.map +0 -1
  142. package/fesm2022/acorex-components-flow-chart.mjs +0 -735
  143. package/fesm2022/acorex-components-flow-chart.mjs.map +0 -1
  144. package/fesm2022/acorex-components-query-builder.mjs +0 -267
  145. package/fesm2022/acorex-components-query-builder.mjs.map +0 -1
  146. package/flow-chart/README.md +0 -3
  147. package/query-builder/README.md +0 -3
  148. package/types/acorex-components-flow-chart.d.ts +0 -187
  149. package/types/acorex-components-query-builder.d.ts +0 -52
@@ -215,6 +215,10 @@ declare abstract class AXBaseDataTable extends MXBaseComponent {
215
215
  * Returns the CSS class of a highlighted column, applied to its header and body cells.
216
216
  */
217
217
  getColumnCssClass(column: AXDataTableColumnComponent): string;
218
+ /**
219
+ * Header `<th>` classes: column highlight + column `cssClass` (e.g. `ax-select-column`).
220
+ */
221
+ getHeadColumnCssClass(column: AXDataTableColumnComponent): string;
218
222
  /**
219
223
  * Returns the temporary highlight state for a row, if any.
220
224
  */
@@ -382,6 +386,10 @@ declare class AXDataTableTextColumnComponent extends AXDataTableColumnComponent
382
386
  * @defaultValue false
383
387
  */
384
388
  wrapText: boolean;
389
+ /**
390
+ * When `true`, cell values are resolved as i18n expressions (e.g. `@acorex:common.actions.cancel`).
391
+ */
392
+ translate: boolean;
385
393
  /**
386
394
  * Provides a custom template for rendering cells within the column.
387
395
  */
@@ -441,6 +449,7 @@ declare class AXDataTableTextColumnComponent extends AXDataTableColumnComponent
441
449
  * @ignore
442
450
  */
443
451
  private formatService;
452
+ private translationService;
444
453
  protected getDisplayText(rowData: unknown, dataField: string): string;
445
454
  /**
446
455
  * Defines the format string for displaying values in the component.
@@ -451,7 +460,7 @@ declare class AXDataTableTextColumnComponent extends AXDataTableColumnComponent
451
460
  */
452
461
  formatOptions: AXFormatOptions;
453
462
  static ɵfac: i0.ɵɵFactoryDeclaration<AXDataTableTextColumnComponent, never>;
454
- static ɵcmp: i0.ɵɵComponentDeclaration<AXDataTableTextColumnComponent, "ax-text-column", never, { "width": { "alias": "width"; "required": false; }; "caption": { "alias": "caption"; "required": false; }; "allowSorting": { "alias": "allowSorting"; "required": false; }; "allowResizing": { "alias": "allowResizing"; "required": false; }; "fixed": { "alias": "fixed"; "required": false; }; "hasTitle": { "alias": "hasTitle"; "required": false; }; "customExpandIcon": { "alias": "customExpandIcon"; "required": false; }; "customCollapseIcon": { "alias": "customCollapseIcon"; "required": false; }; "dataField": { "alias": "dataField"; "required": false; }; "expandHandler": { "alias": "expandHandler"; "required": false; }; "wrapText": { "alias": "wrapText"; "required": false; }; "cellTemplate": { "alias": "cellTemplate"; "required": false; }; "footerTemplate": { "alias": "footerTemplate"; "required": false; }; "headerTemplate": { "alias": "headerTemplate"; "required": false; }; "format": { "alias": "format"; "required": false; }; "formatOptions": { "alias": "formatOptions"; "required": false; }; }, {}, never, never, true, never>;
463
+ static ɵcmp: i0.ɵɵComponentDeclaration<AXDataTableTextColumnComponent, "ax-text-column", never, { "width": { "alias": "width"; "required": false; }; "caption": { "alias": "caption"; "required": false; }; "allowSorting": { "alias": "allowSorting"; "required": false; }; "allowResizing": { "alias": "allowResizing"; "required": false; }; "fixed": { "alias": "fixed"; "required": false; }; "hasTitle": { "alias": "hasTitle"; "required": false; }; "customExpandIcon": { "alias": "customExpandIcon"; "required": false; }; "customCollapseIcon": { "alias": "customCollapseIcon"; "required": false; }; "dataField": { "alias": "dataField"; "required": false; }; "expandHandler": { "alias": "expandHandler"; "required": false; }; "wrapText": { "alias": "wrapText"; "required": false; }; "translate": { "alias": "translate"; "required": false; }; "cellTemplate": { "alias": "cellTemplate"; "required": false; }; "footerTemplate": { "alias": "footerTemplate"; "required": false; }; "headerTemplate": { "alias": "headerTemplate"; "required": false; }; "format": { "alias": "format"; "required": false; }; "formatOptions": { "alias": "formatOptions"; "required": false; }; }, {}, never, never, true, never>;
455
464
  }
456
465
 
457
466
  type AXRowCommandItem = AXButtonItemListItem & {
@@ -864,9 +873,10 @@ declare class AXDataTableComponent extends AXBaseDataTable implements OnInit, Af
864
873
  protected resizeColumnProp: {
865
874
  startX: number;
866
875
  startWidth: number;
867
- columnIndex: number;
868
- newColumnWidth: number;
869
- thElement: any;
876
+ column: AXDataTableColumnComponent | null;
877
+ thElement: HTMLElement | null;
878
+ /** True when the resize handle sits on the column's trailing edge in screen coordinates. */
879
+ resizeFromTrailingEdge: boolean;
870
880
  };
871
881
  /**
872
882
  * Columns that used `width="auto"` and received header-only sizing before rows were available.
@@ -1082,10 +1092,20 @@ declare class AXDataTableComponent extends AXBaseDataTable implements OnInit, Af
1082
1092
  protected toggleExpanded(rows: any[], expandedItem: any, children: any[]): any[];
1083
1093
  protected refreshExpandedItem(id: string | number): Promise<void>;
1084
1094
  private updateChildren;
1095
+ /**
1096
+ * CDK sort-predicate indices follow physical left-to-right order; map them to `columnsList` order.
1097
+ * @ignore
1098
+ */
1099
+ private cdkSortIndexToColumnIndex;
1100
+ /**
1101
+ * Restricts column reordering to non-fixed columns only.
1102
+ * @ignore
1103
+ */
1104
+ protected columnReorderSortPredicate: (index: number) => boolean;
1085
1105
  /**
1086
1106
  * @ignore
1087
1107
  */
1088
- protected drop(event: CdkDragDrop<any, any, any>): void;
1108
+ protected drop(event: CdkDragDrop<AXDataTableColumnComponent>): void;
1089
1109
  /**
1090
1110
  * @ignore
1091
1111
  */
@@ -1149,11 +1169,11 @@ declare class AXDataTableComponent extends AXBaseDataTable implements OnInit, Af
1149
1169
  * @param columnIndex - The index of the column to auto-fit
1150
1170
  * @ignore
1151
1171
  */
1152
- protected onResizeHandlerDoubleClick(event: MouseEvent, columnIndex: number): void;
1172
+ protected onResizeHandlerDoubleClick(event: MouseEvent, column: AXDataTableColumnComponent): void;
1153
1173
  /**
1154
1174
  * @ignore
1155
1175
  */
1156
- protected onResizeColumnStart(event: MouseEvent, columnIndex: number): void;
1176
+ protected onResizeColumnStart(event: MouseEvent, column: AXDataTableColumnComponent): void;
1157
1177
  /**
1158
1178
  * @ignore
1159
1179
  */
@@ -1,5 +1,6 @@
1
1
  import { MXBaseComponent, AXSurfaceType } from '@acorex/cdk/common';
2
2
  import * as i0 from '@angular/core';
3
+ import { AXFullScreenMode } from '@acorex/core/full-screen';
3
4
  import * as i1 from '@angular/common';
4
5
 
5
6
  /**
@@ -76,10 +77,21 @@ declare class AXDecoratorFullScreenButtonComponent extends MXBaseComponent {
76
77
  #private;
77
78
  private readonly fullScreenService;
78
79
  private readonly elementRef;
80
+ /**
81
+ * Target element to fullscreen. Falls back to the closest decorated parent when omitted.
82
+ */
79
83
  element: i0.ModelSignal<HTMLElement>;
84
+ /**
85
+ * Whether fullscreen mode is active.
86
+ */
80
87
  isActive: i0.ModelSignal<boolean>;
88
+ /**
89
+ * Fullscreen implementation mode.
90
+ * @defaultValue 'overlay'
91
+ */
92
+ mode: i0.InputSignal<AXFullScreenMode>;
81
93
  static ɵfac: i0.ɵɵFactoryDeclaration<AXDecoratorFullScreenButtonComponent, never>;
82
- static ɵcmp: i0.ɵɵComponentDeclaration<AXDecoratorFullScreenButtonComponent, "ax-fullscreen-button", never, { "element": { "alias": "element"; "required": false; "isSignal": true; }; "isActive": { "alias": "isActive"; "required": false; "isSignal": true; }; }, { "element": "elementChange"; "isActive": "isActiveChange"; }, never, never, true, never>;
94
+ static ɵcmp: i0.ɵɵComponentDeclaration<AXDecoratorFullScreenButtonComponent, "ax-fullscreen-button", never, { "element": { "alias": "element"; "required": false; "isSignal": true; }; "isActive": { "alias": "isActive"; "required": false; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; }, { "element": "elementChange"; "isActive": "isActiveChange"; }, never, never, true, never>;
83
95
  }
84
96
 
85
97
  /**
@@ -0,0 +1,42 @@
1
+ import * as _angular_core from '@angular/core';
2
+ import { AXEmoji } from '@acorex/core/constants';
3
+
4
+ /**
5
+ * Renders a single emoji using its Unicode character from metadata.
6
+ *
7
+ * @category Components
8
+ */
9
+ declare class AXEmojiComponent {
10
+ /**
11
+ * Emoji metadata to render.
12
+ */
13
+ readonly emoji: _angular_core.InputSignal<AXEmoji>;
14
+ /**
15
+ * Emoji rendering style.
16
+ * - `google`: Noto Color Emoji (Android/Google look) on all platforms, including Windows.
17
+ * - `native`: OS default fonts (Segoe UI Emoji on Windows).
18
+ *
19
+ * @defaultValue 'google'
20
+ */
21
+ readonly appearance: _angular_core.InputSignal<"google" | "native">;
22
+ /**
23
+ * Rendered size in pixels.
24
+ *
25
+ * @defaultValue 20
26
+ */
27
+ readonly size: _angular_core.InputSignal<number>;
28
+ /** Unicode glyph to display. */
29
+ protected readonly glyph: _angular_core.Signal<string>;
30
+ /** Accessible label sourced from emoji metadata. */
31
+ protected readonly ariaLabel: _angular_core.Signal<string>;
32
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXEmojiComponent, never>;
33
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXEmojiComponent, "ax-emoji", never, { "emoji": { "alias": "emoji"; "required": false; "isSignal": true; }; "appearance": { "alias": "appearance"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
34
+ }
35
+
36
+ declare class AXEmojiModule {
37
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXEmojiModule, never>;
38
+ static ɵmod: _angular_core.ɵɵNgModuleDeclaration<AXEmojiModule, never, [typeof AXEmojiComponent], [typeof AXEmojiComponent]>;
39
+ static ɵinj: _angular_core.ɵɵInjectorDeclaration<AXEmojiModule>;
40
+ }
41
+
42
+ export { AXEmojiComponent, AXEmojiModule };
@@ -0,0 +1,146 @@
1
+ import * as _angular_core from '@angular/core';
2
+ import { AXValueChangedEvent } from '@acorex/cdk/common';
3
+ import { AXGestureEvent } from '@acorex/cdk/gesture';
4
+ import { AXTabStripChangedEvent } from '@acorex/components/tabs';
5
+ import { AXEmoji, AXEmojiCategory, AXEmojiPickerCategoryId, AXEmojiCategoryMeta } from '@acorex/core/constants';
6
+
7
+ /**
8
+ * Telegram-style emoji picker with category tabs, search, and recent emojis.
9
+ *
10
+ * @category Components
11
+ */
12
+ declare class AXEmojiPickerComponent {
13
+ private readonly hostRef;
14
+ private readonly destroyRef;
15
+ /** Emoji entries available in the picker. */
16
+ readonly items: _angular_core.InputSignal<readonly AXEmoji[]>;
17
+ /** Rendered emoji size in the grid. */
18
+ readonly size: _angular_core.InputSignal<number>;
19
+ /**
20
+ * Emoji rendering style passed to {@link AXEmojiComponent}.
21
+ * `google` uses Noto Color Emoji (Android/Google look) on Windows too.
22
+ *
23
+ * @defaultValue 'google'
24
+ */
25
+ readonly appearance: _angular_core.InputSignal<"google" | "native">;
26
+ /** Whether the search box is shown. */
27
+ readonly showSearch: _angular_core.InputSignal<boolean>;
28
+ /** Whether the recent category tab is shown. */
29
+ readonly showRecent: _angular_core.InputSignal<boolean>;
30
+ /** Number of emoji columns in the virtualized grid. */
31
+ readonly columns: _angular_core.InputSignal<number>;
32
+ /** Search box placeholder text. */
33
+ readonly searchPlaceholder: _angular_core.InputSignal<string>;
34
+ /** Unicode emoji group categories to hide from tabs and results. */
35
+ readonly excludeCategories: _angular_core.InputSignal<readonly AXEmojiCategory[]>;
36
+ /** `AXEmoji.code` values to hide (e.g. `1f595`). */
37
+ readonly excludeCodes: _angular_core.InputSignal<readonly string[]>;
38
+ /** `AXEmoji.unicode` glyph values to hide (e.g. `🖕`). */
39
+ readonly excludeUnicode: _angular_core.InputSignal<readonly string[]>;
40
+ /** Emits when the user selects an emoji. */
41
+ readonly selected: _angular_core.OutputEmitterRef<AXEmoji>;
42
+ /**
43
+ * Recently used emojis supplied by the parent (e.g. API, LocalStorage).
44
+ * Rendered in the Recent tab when {@link showRecent} is enabled.
45
+ */
46
+ readonly recentItems: _angular_core.InputSignal<readonly AXEmoji[]>;
47
+ /** Emits the updated recent list after the user selects an allowed emoji. */
48
+ readonly recentChanged: _angular_core.OutputEmitterRef<readonly AXEmoji[]>;
49
+ /** Current search query. */
50
+ protected readonly searchQuery: _angular_core.WritableSignal<string>;
51
+ /** Active category tab. */
52
+ protected readonly activeCategoryId: _angular_core.WritableSignal<AXEmojiPickerCategoryId>;
53
+ private readonly containerWidth;
54
+ protected readonly effectiveColumns: _angular_core.Signal<number>;
55
+ protected readonly availableWidthCss: _angular_core.Signal<string>;
56
+ constructor();
57
+ /** Items after picker exclusions are applied. */
58
+ protected readonly filteredItems: _angular_core.Signal<readonly AXEmoji[]>;
59
+ private readonly categoryIndex;
60
+ /** Recent items after active exclusions are applied for display. */
61
+ protected readonly visibleRecentItems: _angular_core.Signal<AXEmoji[]>;
62
+ protected onCategorySwipe(event: AXGestureEvent): void;
63
+ /** Visible category tabs. */
64
+ protected readonly categories: _angular_core.Signal<readonly AXEmojiCategoryMeta[]>;
65
+ /** Emojis shown in the current view (category or search results). */
66
+ protected readonly visibleEmojis: _angular_core.Signal<readonly AXEmoji[]>;
67
+ /** Rows used by the virtual scroll viewport. */
68
+ protected readonly emojiRows: _angular_core.Signal<readonly (readonly AXEmoji[])[]>;
69
+ /** Virtual scroll row height in pixels. */
70
+ protected readonly rowHeight: _angular_core.Signal<number>;
71
+ /** Whether the user is searching. */
72
+ protected readonly isSearching: _angular_core.Signal<boolean>;
73
+ /** Whether the current view has no emojis. */
74
+ protected readonly isEmpty: _angular_core.Signal<boolean>;
75
+ /** Keeps the active tab valid when exclusions change. */
76
+ private readonly syncActiveCategory;
77
+ /** Selects a category tab and clears search. */
78
+ protected selectCategory(categoryId: AXEmojiPickerCategoryId): void;
79
+ /** Whether the given category tab is active. */
80
+ protected isCategoryActive(categoryId: AXEmojiPickerCategoryId): boolean;
81
+ /** Whether the category tab is the virtual recent group. */
82
+ protected isRecentCategory(categoryId: AXEmojiPickerCategoryId): boolean;
83
+ /** Syncs the active emoji category when a tab is selected. */
84
+ protected onCategoryTabChanged(event: AXTabStripChangedEvent): void;
85
+ /** Updates the search query from the search box. */
86
+ protected onSearchChanged(event: AXValueChangedEvent<string>): void;
87
+ /** Emits the selected emoji and notifies the parent of the updated recent list. */
88
+ protected selectEmoji(emoji: AXEmoji): void;
89
+ /** @ignore */
90
+ protected trackRow(index: number, row: readonly AXEmoji[]): string;
91
+ private rememberRecent;
92
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXEmojiPickerComponent, never>;
93
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXEmojiPickerComponent, "ax-emoji-picker", never, { "items": { "alias": "items"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "appearance": { "alias": "appearance"; "required": false; "isSignal": true; }; "showSearch": { "alias": "showSearch"; "required": false; "isSignal": true; }; "showRecent": { "alias": "showRecent"; "required": false; "isSignal": true; }; "columns": { "alias": "columns"; "required": false; "isSignal": true; }; "searchPlaceholder": { "alias": "searchPlaceholder"; "required": false; "isSignal": true; }; "excludeCategories": { "alias": "excludeCategories"; "required": false; "isSignal": true; }; "excludeCodes": { "alias": "excludeCodes"; "required": false; "isSignal": true; }; "excludeUnicode": { "alias": "excludeUnicode"; "required": false; "isSignal": true; }; "recentItems": { "alias": "recentItems"; "required": false; "isSignal": true; }; }, { "selected": "selected"; "recentChanged": "recentChanged"; }, never, never, true, never>;
94
+ }
95
+
96
+ /** Maximum number of emojis kept in the recent list. */
97
+ declare const RECENT_EMOJI_LIMIT = 20;
98
+ /** Grid cell size in px (`--ax-comp-emoji-picker-cell-size`). */
99
+ declare const EMOJI_PICKER_CELL_SIZE_PX = 36;
100
+ /** Grid cell size in px on narrow viewports. */
101
+ declare const EMOJI_PICKER_CELL_SIZE_PX_COMPACT = 32;
102
+ /** Gap between grid cells in px (`--ax-comp-emoji-picker-cell-gap`). */
103
+ declare const EMOJI_PICKER_CELL_GAP_PX = 2;
104
+ /** Horizontal padding around the emoji grid in px. */
105
+ declare const EMOJI_PICKER_GRID_PADDING_PX = 24;
106
+ /** Minimum column count. */
107
+ declare const EMOJI_PICKER_MIN_COLUMNS = 1;
108
+ /** Nearest ancestor that participates in layout (skips `display: contents`). */
109
+ declare function getEmojiPickerLayoutContainer(element: HTMLElement): HTMLElement;
110
+ /**
111
+ * Available width for the picker grid.
112
+ * Uses the tightest ancestor content box and the visible viewport slot so an
113
+ * overflowing parent cannot keep an 8-column grid that is clipped off-screen.
114
+ */
115
+ declare function resolveEmojiPickerContainerWidth(element: HTMLElement): number;
116
+ /** Resolves column count from container width while keeping a fixed cell size and gap. */
117
+ declare function resolveEmojiPickerColumns(containerWidth: number, requested: number): number;
118
+ /** Maximum number of emojis returned by search. */
119
+ declare const SEARCH_RESULT_LIMIT = 200;
120
+ /** User-defined exclusions for picker emoji lists. */
121
+ interface AXEmojiPickerFilter {
122
+ /** Unicode emoji group categories to hide from tabs and results. */
123
+ readonly excludeCategories?: readonly AXEmojiCategory[];
124
+ /** `AXEmoji.code` values to hide (hyphen-separated code points, e.g. `1f595`). */
125
+ readonly excludeCodes?: readonly string[];
126
+ /** `AXEmoji.unicode` glyph values to hide (e.g. `👋`). */
127
+ readonly excludeUnicode?: readonly string[];
128
+ }
129
+ /** Applies picker exclusions and default people-body curation. */
130
+ declare function filterPickerItems(items: readonly AXEmoji[], filter?: AXEmojiPickerFilter): readonly AXEmoji[];
131
+ /**
132
+ * Builds a category index for picker rendering.
133
+ * Expects items to be pre-filtered with {@link filterPickerItems}.
134
+ */
135
+ declare function buildEmojiPickerIndex(items: readonly AXEmoji[]): ReadonlyMap<AXEmojiCategory, readonly AXEmoji[]>;
136
+ /** Searches pre-filtered emoji metadata by name and keywords. */
137
+ declare function searchPickerEmojis(items: readonly AXEmoji[], query: string, limit?: number): readonly AXEmoji[];
138
+
139
+ declare class AXEmojiPickerModule {
140
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXEmojiPickerModule, never>;
141
+ static ɵmod: _angular_core.ɵɵNgModuleDeclaration<AXEmojiPickerModule, never, [typeof AXEmojiPickerComponent], [typeof AXEmojiPickerComponent]>;
142
+ static ɵinj: _angular_core.ɵɵInjectorDeclaration<AXEmojiPickerModule>;
143
+ }
144
+
145
+ export { AXEmojiPickerComponent, AXEmojiPickerModule, EMOJI_PICKER_CELL_GAP_PX, EMOJI_PICKER_CELL_SIZE_PX, EMOJI_PICKER_CELL_SIZE_PX_COMPACT, EMOJI_PICKER_GRID_PADDING_PX, EMOJI_PICKER_MIN_COLUMNS, RECENT_EMOJI_LIMIT, SEARCH_RESULT_LIMIT, buildEmojiPickerIndex, filterPickerItems, getEmojiPickerLayoutContainer, resolveEmojiPickerColumns, resolveEmojiPickerContainerWidth, searchPickerEmojis };
146
+ export type { AXEmojiPickerFilter };
@@ -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 };
@@ -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 };