@acorex/components 19.8.0-next.0 → 19.8.0-next.10

Sign up to get free protection for your applications and to get access to all the features.
Files changed (213) hide show
  1. package/action-sheet/lib/action-sheet.class.d.ts +2 -1
  2. package/badge/lib/badge.component.d.ts +2 -2
  3. package/button/lib/button.component.d.ts +6 -1
  4. package/button-group/lib/button-group-item.component.d.ts +1 -3
  5. package/button-group/lib/button-group.module.d.ts +1 -2
  6. package/chips/lib/chips.component.d.ts +7 -11
  7. package/common/lib/classes/styles.class.d.ts +3 -5
  8. package/common/lib/components/button-base-component.class.d.ts +1 -0
  9. package/conversation/lib/conversation-container/conversation-container.component.d.ts +3 -2
  10. package/conversation/lib/conversation-input/conversation-input.component.d.ts +4 -2
  11. package/conversation/lib/conversation-message/conversation-message.component.d.ts +2 -1
  12. package/conversation/lib/conversation-view/conversation-view.component.d.ts +3 -1
  13. package/decorators/index.d.ts +4 -5
  14. package/decorators/lib/decorators.module.d.ts +6 -7
  15. package/dialog/lib/dialog.component.d.ts +0 -2
  16. package/dropdown-button/lib/dropdown-button.component.d.ts +1 -1
  17. package/fesm2022/acorex-components-action-sheet.mjs +3 -3
  18. package/fesm2022/acorex-components-action-sheet.mjs.map +1 -1
  19. package/fesm2022/acorex-components-alert.mjs +3 -3
  20. package/fesm2022/acorex-components-alert.mjs.map +1 -1
  21. package/fesm2022/acorex-components-audio-wave.mjs +4 -4
  22. package/fesm2022/acorex-components-audio-wave.mjs.map +1 -1
  23. package/fesm2022/acorex-components-avatar.mjs +3 -3
  24. package/fesm2022/acorex-components-avatar.mjs.map +1 -1
  25. package/fesm2022/acorex-components-badge.mjs +5 -5
  26. package/fesm2022/acorex-components-badge.mjs.map +1 -1
  27. package/fesm2022/acorex-components-bottom-navigation.mjs +2 -2
  28. package/fesm2022/acorex-components-bottom-navigation.mjs.map +1 -1
  29. package/fesm2022/acorex-components-breadcrumbs.mjs +2 -2
  30. package/fesm2022/acorex-components-breadcrumbs.mjs.map +1 -1
  31. package/fesm2022/acorex-components-button-group.mjs +146 -147
  32. package/fesm2022/acorex-components-button-group.mjs.map +1 -1
  33. package/fesm2022/acorex-components-button.mjs +21 -18
  34. package/fesm2022/acorex-components-button.mjs.map +1 -1
  35. package/fesm2022/acorex-components-calendar.mjs +4 -4
  36. package/fesm2022/acorex-components-calendar.mjs.map +1 -1
  37. package/fesm2022/acorex-components-check-box.mjs +2 -2
  38. package/fesm2022/acorex-components-check-box.mjs.map +1 -1
  39. package/fesm2022/acorex-components-chips.mjs +9 -11
  40. package/fesm2022/acorex-components-chips.mjs.map +1 -1
  41. package/fesm2022/acorex-components-circular-progress.mjs +6 -6
  42. package/fesm2022/acorex-components-circular-progress.mjs.map +1 -1
  43. package/fesm2022/acorex-components-collapse.mjs +2 -2
  44. package/fesm2022/acorex-components-collapse.mjs.map +1 -1
  45. package/fesm2022/acorex-components-color-box.mjs +2 -2
  46. package/fesm2022/acorex-components-color-box.mjs.map +1 -1
  47. package/fesm2022/acorex-components-color-palette.mjs +2 -2
  48. package/fesm2022/acorex-components-color-palette.mjs.map +1 -1
  49. package/fesm2022/acorex-components-comment.mjs +8 -8
  50. package/fesm2022/acorex-components-comment.mjs.map +1 -1
  51. package/fesm2022/acorex-components-common.mjs +6 -21
  52. package/fesm2022/acorex-components-common.mjs.map +1 -1
  53. package/fesm2022/acorex-components-conversation.mjs +58 -33
  54. package/fesm2022/acorex-components-conversation.mjs.map +1 -1
  55. package/fesm2022/acorex-components-cron-job.mjs +2 -2
  56. package/fesm2022/acorex-components-cron-job.mjs.map +1 -1
  57. package/fesm2022/acorex-components-data-pager.mjs +6 -6
  58. package/fesm2022/acorex-components-data-pager.mjs.map +1 -1
  59. package/fesm2022/acorex-components-data-table.mjs +4 -4
  60. package/fesm2022/acorex-components-data-table.mjs.map +1 -1
  61. package/fesm2022/acorex-components-datetime-box.mjs +2 -2
  62. package/fesm2022/acorex-components-datetime-box.mjs.map +1 -1
  63. package/fesm2022/acorex-components-datetime-input.mjs +2 -2
  64. package/fesm2022/acorex-components-datetime-input.mjs.map +1 -1
  65. package/fesm2022/acorex-components-datetime-picker.mjs +2 -2
  66. package/fesm2022/acorex-components-datetime-picker.mjs.map +1 -1
  67. package/fesm2022/acorex-components-decorators.mjs +17 -29
  68. package/fesm2022/acorex-components-decorators.mjs.map +1 -1
  69. package/fesm2022/acorex-components-dialog.mjs +3 -10
  70. package/fesm2022/acorex-components-dialog.mjs.map +1 -1
  71. package/fesm2022/acorex-components-drawer.mjs +4 -4
  72. package/fesm2022/acorex-components-drawer.mjs.map +1 -1
  73. package/fesm2022/acorex-components-dropdown-button.mjs +12 -6
  74. package/fesm2022/acorex-components-dropdown-button.mjs.map +1 -1
  75. package/fesm2022/acorex-components-dropdown.mjs +1 -1
  76. package/fesm2022/acorex-components-dropdown.mjs.map +1 -1
  77. package/fesm2022/acorex-components-file-explorer.mjs +231 -0
  78. package/fesm2022/acorex-components-file-explorer.mjs.map +1 -0
  79. package/fesm2022/acorex-components-form.mjs +3 -10
  80. package/fesm2022/acorex-components-form.mjs.map +1 -1
  81. package/fesm2022/acorex-components-grid-layout-builder.mjs +303 -85
  82. package/fesm2022/acorex-components-grid-layout-builder.mjs.map +1 -1
  83. package/fesm2022/acorex-components-image-editor.mjs +57 -42
  84. package/fesm2022/acorex-components-image-editor.mjs.map +1 -1
  85. package/fesm2022/acorex-components-image.mjs +2 -2
  86. package/fesm2022/acorex-components-image.mjs.map +1 -1
  87. package/fesm2022/acorex-components-json-viewer.mjs +2 -2
  88. package/fesm2022/acorex-components-json-viewer.mjs.map +1 -1
  89. package/fesm2022/acorex-components-label.mjs +2 -2
  90. package/fesm2022/acorex-components-label.mjs.map +1 -1
  91. package/fesm2022/acorex-components-list.mjs +2 -2
  92. package/fesm2022/acorex-components-list.mjs.map +1 -1
  93. package/fesm2022/acorex-components-loading-dialog.mjs +2 -2
  94. package/fesm2022/acorex-components-loading-dialog.mjs.map +1 -1
  95. package/fesm2022/acorex-components-loading.mjs +4 -4
  96. package/fesm2022/acorex-components-loading.mjs.map +1 -1
  97. package/fesm2022/acorex-components-map.mjs +11 -5
  98. package/fesm2022/acorex-components-map.mjs.map +1 -1
  99. package/fesm2022/acorex-components-media-viewer.mjs +4 -4
  100. package/fesm2022/acorex-components-media-viewer.mjs.map +1 -1
  101. package/fesm2022/acorex-components-menu.mjs +8 -8
  102. package/fesm2022/acorex-components-menu.mjs.map +1 -1
  103. package/fesm2022/acorex-components-navbar.mjs +2 -2
  104. package/fesm2022/acorex-components-navbar.mjs.map +1 -1
  105. package/fesm2022/acorex-components-notification.mjs +4 -4
  106. package/fesm2022/acorex-components-notification.mjs.map +1 -1
  107. package/fesm2022/acorex-components-number-box.mjs +8 -15
  108. package/fesm2022/acorex-components-number-box.mjs.map +1 -1
  109. package/fesm2022/acorex-components-otp.mjs +2 -2
  110. package/fesm2022/acorex-components-otp.mjs.map +1 -1
  111. package/fesm2022/acorex-components-paint.mjs +8 -8
  112. package/fesm2022/acorex-components-paint.mjs.map +1 -1
  113. package/fesm2022/acorex-components-password-box.mjs +6 -12
  114. package/fesm2022/acorex-components-password-box.mjs.map +1 -1
  115. package/fesm2022/acorex-components-phone-box.mjs +2 -2
  116. package/fesm2022/acorex-components-phone-box.mjs.map +1 -1
  117. package/fesm2022/acorex-components-picker.mjs +3 -3
  118. package/fesm2022/acorex-components-picker.mjs.map +1 -1
  119. package/fesm2022/acorex-components-popup.mjs +2 -2
  120. package/fesm2022/acorex-components-popup.mjs.map +1 -1
  121. package/fesm2022/acorex-components-progress-bar.mjs +22 -22
  122. package/fesm2022/acorex-components-progress-bar.mjs.map +1 -1
  123. package/fesm2022/acorex-components-rail-navigation.mjs +3 -3
  124. package/fesm2022/acorex-components-rail-navigation.mjs.map +1 -1
  125. package/fesm2022/acorex-components-range-slider.mjs +3 -3
  126. package/fesm2022/acorex-components-range-slider.mjs.map +1 -1
  127. package/fesm2022/acorex-components-rate-picker.mjs +6 -6
  128. package/fesm2022/acorex-components-rate-picker.mjs.map +1 -1
  129. package/fesm2022/acorex-components-result.mjs +2 -2
  130. package/fesm2022/acorex-components-result.mjs.map +1 -1
  131. package/fesm2022/acorex-components-routing-progress.mjs +2 -2
  132. package/fesm2022/acorex-components-routing-progress.mjs.map +1 -1
  133. package/fesm2022/acorex-components-scheduler.mjs +3 -3
  134. package/fesm2022/acorex-components-scheduler.mjs.map +1 -1
  135. package/fesm2022/acorex-components-search-box.mjs +10 -19
  136. package/fesm2022/acorex-components-search-box.mjs.map +1 -1
  137. package/fesm2022/acorex-components-select-box.mjs +2 -3
  138. package/fesm2022/acorex-components-select-box.mjs.map +1 -1
  139. package/fesm2022/acorex-components-selection-list.mjs +2 -2
  140. package/fesm2022/acorex-components-selection-list.mjs.map +1 -1
  141. package/fesm2022/acorex-components-side-menu.mjs +17 -8
  142. package/fesm2022/acorex-components-side-menu.mjs.map +1 -1
  143. package/fesm2022/acorex-components-skeleton.mjs +2 -2
  144. package/fesm2022/acorex-components-skeleton.mjs.map +1 -1
  145. package/fesm2022/acorex-components-slider.mjs +2 -2
  146. package/fesm2022/acorex-components-slider.mjs.map +1 -1
  147. package/fesm2022/acorex-components-step-wizard.mjs +2 -2
  148. package/fesm2022/acorex-components-step-wizard.mjs.map +1 -1
  149. package/fesm2022/acorex-components-switch.mjs +3 -8
  150. package/fesm2022/acorex-components-switch.mjs.map +1 -1
  151. package/fesm2022/acorex-components-tabs.mjs +5 -5
  152. package/fesm2022/acorex-components-tabs.mjs.map +1 -1
  153. package/fesm2022/acorex-components-tag.mjs +3 -3
  154. package/fesm2022/acorex-components-tag.mjs.map +1 -1
  155. package/fesm2022/acorex-components-text-area.mjs +4 -18
  156. package/fesm2022/acorex-components-text-area.mjs.map +1 -1
  157. package/fesm2022/acorex-components-text-box.mjs +4 -18
  158. package/fesm2022/acorex-components-text-box.mjs.map +1 -1
  159. package/fesm2022/acorex-components-time-line.mjs +7 -7
  160. package/fesm2022/acorex-components-time-line.mjs.map +1 -1
  161. package/fesm2022/acorex-components-toast.mjs +2 -2
  162. package/fesm2022/acorex-components-toast.mjs.map +1 -1
  163. package/fesm2022/acorex-components-toolbar.mjs +12 -3
  164. package/fesm2022/acorex-components-toolbar.mjs.map +1 -1
  165. package/fesm2022/acorex-components-tooltip.mjs +2 -2
  166. package/fesm2022/acorex-components-tooltip.mjs.map +1 -1
  167. package/fesm2022/acorex-components-tree-view.mjs +36 -67
  168. package/fesm2022/acorex-components-tree-view.mjs.map +1 -1
  169. package/fesm2022/acorex-components-uploader.mjs +6 -6
  170. package/fesm2022/acorex-components-uploader.mjs.map +1 -1
  171. package/fesm2022/acorex-components-wysiwyg.mjs +25 -25
  172. package/fesm2022/acorex-components-wysiwyg.mjs.map +1 -1
  173. package/file-explorer/README.md +3 -0
  174. package/file-explorer/index.d.ts +6 -0
  175. package/file-explorer/lib/file-explorer-container/file-explorer-container.component.d.ts +10 -0
  176. package/file-explorer/lib/file-explorer-item/file-explorer-item.component.d.ts +11 -0
  177. package/file-explorer/lib/file-explorer-types.d.ts +11 -0
  178. package/file-explorer/lib/file-explorer-view/file-explorer-view.component.d.ts +27 -0
  179. package/file-explorer/lib/file-explorer.module.d.ts +16 -0
  180. package/file-explorer/lib/file-explorer.service.d.ts +6 -0
  181. package/form/lib/form.component.d.ts +2 -3
  182. package/grid-layout-builder/index.d.ts +1 -0
  183. package/grid-layout-builder/lib/grid-layout-builder.module.d.ts +3 -2
  184. package/grid-layout-builder/lib/grid-layout-container.component.d.ts +87 -55
  185. package/grid-layout-builder/lib/grid-layout-widget.directive.d.ts +106 -0
  186. package/grid-layout-builder/lib/types.d.ts +2 -1
  187. package/image-editor/index.d.ts +1 -0
  188. package/image-editor/lib/image-editor-container/image-editor-container.component.d.ts +3 -22
  189. package/image-editor/lib/image-editor-toolbar/image-editor-toolbar.component.d.ts +27 -0
  190. package/image-editor/lib/image-editor.module.d.ts +17 -16
  191. package/loading/lib/loading-spinner.component.d.ts +1 -1
  192. package/menu/lib/menu-item.component.d.ts +1 -2
  193. package/notification/lib/notification.service.d.ts +1 -1
  194. package/number-box/lib/number-box.component.d.ts +0 -1
  195. package/package.json +5 -1
  196. package/password-box/lib/password-box.component.d.ts +0 -1
  197. package/progress-bar/lib/progress-bar.component.d.ts +19 -19
  198. package/search-box/lib/search-box.component.d.ts +1 -5
  199. package/side-menu/lib/side-menu-item/side-menu-item.component.d.ts +6 -3
  200. package/side-menu/lib/side-menu.component.d.ts +2 -1
  201. package/tabs/lib/tabs.class.d.ts +1 -1
  202. package/text-area/lib/text-area.component.d.ts +1 -6
  203. package/text-box/lib/text-box.component.d.ts +0 -4
  204. package/time-line/lib/time-line.component.d.ts +1 -1
  205. package/toolbar/lib/toolbar.component.d.ts +3 -1
  206. package/tree-view/lib/tree-view.class.d.ts +1 -0
  207. package/tree-view/lib/tree-view.component.d.ts +1 -7
  208. package/wysiwyg/lib/wysiwyg/wysiwyg-container/wysiwyg-container.component.d.ts +2 -2
  209. package/decorators/lib/components/color-indicator/color-indicator.component.d.ts +0 -6
  210. /package/decorators/lib/components/{clear-button/clear-button.component.d.ts → clear-button.component.d.ts} +0 -0
  211. /package/decorators/lib/components/{close-button/close-button.component.d.ts → close-button.component.d.ts} +0 -0
  212. /package/decorators/lib/components/{full-screen/full-screen-button.component.d.ts → full-screen-button.component.d.ts} +0 -0
  213. /package/decorators/lib/components/{icon/icon.component.d.ts → icon.component.d.ts} +0 -0
@@ -1,6 +1,6 @@
1
- import { AXEvent, MXInputBaseValueComponent, MXLookComponent, AXComponent, AXFocusableComponent, AXValuableComponent, MXBaseComponent, AXRippleDirective } from '@acorex/components/common';
1
+ import { AXEvent, MXLookComponent, AXComponent, AXFocusableComponent, AXClearableComponent, AXValuableComponent, MXInputBaseValueComponent, MXBaseComponent, AXRippleDirective } from '@acorex/components/common';
2
2
  import * as i0 from '@angular/core';
3
- import { Component, ViewEncapsulation, signal, Injectable, inject, computed, input, output, forwardRef, ChangeDetectionStrategy, ViewChild, viewChild, HostBinding, Renderer2, afterNextRender, PLATFORM_ID, NgModule, Optional, Inject } from '@angular/core';
3
+ import { forwardRef, Component, ViewEncapsulation, signal, Injectable, inject, computed, input, output, ChangeDetectionStrategy, ViewChild, viewChild, HostBinding, Renderer2, afterNextRender, PLATFORM_ID, NgModule, Optional, Inject } from '@angular/core';
4
4
  import * as i1 from '@angular/forms';
5
5
  import { NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';
6
6
  import { classes } from 'polytype';
@@ -10,9 +10,11 @@ import * as i2 from '@acorex/components/decorators';
10
10
  import { AXDecoratorModule } from '@acorex/components/decorators';
11
11
  import * as i4 from '@acorex/components/dropdown';
12
12
  import { AXDropdownModule } from '@acorex/components/dropdown';
13
- import * as i5 from '@angular/common';
13
+ import * as i5 from '@acorex/components/loading';
14
+ import { AXLoadingModule } from '@acorex/components/loading';
15
+ import * as i6 from '@angular/common';
14
16
  import { isPlatformBrowser, CommonModule, AsyncPipe } from '@angular/common';
15
- import * as i6 from '@acorex/core/translation';
17
+ import * as i7 from '@acorex/core/translation';
16
18
  import { AXTranslationModule } from '@acorex/core/translation';
17
19
  import { isBrowser } from '@acorex/core/platform';
18
20
  import * as i3 from '@angular/cdk/portal';
@@ -21,18 +23,16 @@ import * as i4$1 from '@acorex/components/avatar';
21
23
  import { AXAvatarModule } from '@acorex/components/avatar';
22
24
  import * as i5$1 from '@acorex/components/popover';
23
25
  import { AXPopoverModule } from '@acorex/components/popover';
24
- import * as i7 from '@acorex/core/format';
26
+ import * as i5$2 from '@acorex/core/format';
25
27
  import { AXFormatModule } from '@acorex/core/format';
26
- import * as i4$2 from '@acorex/components/range-slider';
28
+ import * as i3$1 from '@acorex/components/range-slider';
27
29
  import { AXRangeSliderModule } from '@acorex/components/range-slider';
28
30
  import { AXFileService, AXFileModule } from '@acorex/core/file';
29
31
  import { HttpClient } from '@angular/common/http';
30
32
  import * as i1$2 from '@acorex/cdk/virtual-scroll';
31
33
  import { AXVirtualScrollModule } from '@acorex/cdk/virtual-scroll';
32
- import * as i2$1 from '@acorex/components/loading';
33
- import { AXLoadingModule } from '@acorex/components/loading';
34
34
  import { AXPopupService } from '@acorex/components/popup';
35
- import * as i2$2 from '@acorex/components/audio-wave';
35
+ import * as i2$1 from '@acorex/components/audio-wave';
36
36
  import { AXAudioWaveModule } from '@acorex/components/audio-wave';
37
37
  import { AXCircularProgressModule } from '@acorex/components/circular-progress';
38
38
  import { AXDateTimeModule } from '@acorex/core/date-time';
@@ -44,13 +44,33 @@ class AXConversationActionEvent extends AXEvent {
44
44
  * A container for displaying and managing conversations.
45
45
  * @category Components
46
46
  */
47
- class AXConversationContainerComponent {
48
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXConversationContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
49
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.3", type: AXConversationContainerComponent, isStandalone: false, selector: "ax-conversation-container", ngImport: i0, template: "<div class=\"ax-conversation-container\">\n <ng-content> </ng-content>\n</div>\n", styles: ["ax-conversation-container{width:100%}\n"], encapsulation: i0.ViewEncapsulation.None }); }
47
+ class AXConversationContainerComponent extends MXLookComponent {
48
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXConversationContainerComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
49
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.3", type: AXConversationContainerComponent, isStandalone: false, selector: "ax-conversation-container", inputs: { look: "look" }, providers: [
50
+ { provide: AXComponent, useExisting: AXConversationContainerComponent },
51
+ { provide: AXFocusableComponent, useExisting: AXConversationContainerComponent },
52
+ { provide: AXClearableComponent, useExisting: AXConversationContainerComponent },
53
+ { provide: AXValuableComponent, useExisting: AXConversationContainerComponent },
54
+ {
55
+ provide: NG_VALUE_ACCESSOR,
56
+ useExisting: forwardRef(() => AXConversationContainerComponent),
57
+ multi: true,
58
+ },
59
+ ], usesInheritance: true, ngImport: i0, template: "<div class=\"ax-editor-container ax-look-{{ look }}\">\n <div class=\"ax-conversation-container\">\n <ng-content> </ng-content>\n </div>\n</div>\n", styles: ["ax-conversation-container{width:100%;display:block}ax-conversation-container>.ax-editor-container{display:block;height:100%!important}\n"], encapsulation: i0.ViewEncapsulation.None }); }
50
60
  }
51
61
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXConversationContainerComponent, decorators: [{
52
62
  type: Component,
53
- args: [{ selector: 'ax-conversation-container', encapsulation: ViewEncapsulation.None, standalone: false, template: "<div class=\"ax-conversation-container\">\n <ng-content> </ng-content>\n</div>\n", styles: ["ax-conversation-container{width:100%}\n"] }]
63
+ args: [{ selector: 'ax-conversation-container', encapsulation: ViewEncapsulation.None, standalone: false, inputs: ['look'], providers: [
64
+ { provide: AXComponent, useExisting: AXConversationContainerComponent },
65
+ { provide: AXFocusableComponent, useExisting: AXConversationContainerComponent },
66
+ { provide: AXClearableComponent, useExisting: AXConversationContainerComponent },
67
+ { provide: AXValuableComponent, useExisting: AXConversationContainerComponent },
68
+ {
69
+ provide: NG_VALUE_ACCESSOR,
70
+ useExisting: forwardRef(() => AXConversationContainerComponent),
71
+ multi: true,
72
+ },
73
+ ], template: "<div class=\"ax-editor-container ax-look-{{ look }}\">\n <div class=\"ax-conversation-container\">\n <ng-content> </ng-content>\n </div>\n</div>\n", styles: ["ax-conversation-container{width:100%;display:block}ax-conversation-container>.ax-editor-container{display:block;height:100%!important}\n"] }]
54
74
  }] });
55
75
 
56
76
  class AXConversationService {
@@ -167,9 +187,11 @@ class AXConversationInputComponent extends classes((MXInputBaseValueComponent),
167
187
  /** Maximum length of input text */
168
188
  this.maxLength = input();
169
189
  /** Indicates if an attachment is present */
170
- this.hasAttachment = input();
190
+ this.hasAttachment = input(true);
171
191
  /** Indicates if voice recording is enabled */
172
- this.haVoice = input();
192
+ this.hasVoice = input(true);
193
+ this.hasEmoji = input(true);
194
+ this.isLoading = input(false);
173
195
  /** Acceptable file types for attachment */
174
196
  this.acceptFileType = input('*');
175
197
  /**
@@ -291,7 +313,7 @@ class AXConversationInputComponent extends classes((MXInputBaseValueComponent),
291
313
  this.conversationService.replyId.set('');
292
314
  }
293
315
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXConversationInputComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
294
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.3", type: AXConversationInputComponent, isStandalone: false, selector: "ax-conversation-input", inputs: { look: { classPropertyName: "look", publicName: "look", isSignal: false, isRequired: false, transformFunction: null }, maxLength: { classPropertyName: "maxLength", publicName: "maxLength", isSignal: true, isRequired: false, transformFunction: null }, hasAttachment: { classPropertyName: "hasAttachment", publicName: "hasAttachment", isSignal: true, isRequired: false, transformFunction: null }, haVoice: { classPropertyName: "haVoice", publicName: "haVoice", isSignal: true, isRequired: false, transformFunction: null }, acceptFileType: { classPropertyName: "acceptFileType", publicName: "acceptFileType", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onSendClick: "onSendClick", onStartRecording: "onStartRecording", onCancelRecording: "onCancelRecording" }, providers: [
316
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.3", type: AXConversationInputComponent, isStandalone: false, selector: "ax-conversation-input", inputs: { look: { classPropertyName: "look", publicName: "look", isSignal: false, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: false, isRequired: false, transformFunction: null }, maxLength: { classPropertyName: "maxLength", publicName: "maxLength", isSignal: true, isRequired: false, transformFunction: null }, hasAttachment: { classPropertyName: "hasAttachment", publicName: "hasAttachment", isSignal: true, isRequired: false, transformFunction: null }, hasVoice: { classPropertyName: "hasVoice", publicName: "hasVoice", isSignal: true, isRequired: false, transformFunction: null }, hasEmoji: { classPropertyName: "hasEmoji", publicName: "hasEmoji", isSignal: true, isRequired: false, transformFunction: null }, isLoading: { classPropertyName: "isLoading", publicName: "isLoading", isSignal: true, isRequired: false, transformFunction: null }, acceptFileType: { classPropertyName: "acceptFileType", publicName: "acceptFileType", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onSendClick: "onSendClick", onStartRecording: "onStartRecording", onCancelRecording: "onCancelRecording" }, providers: [
295
317
  { provide: AXComponent, useExisting: AXConversationInputComponent },
296
318
  { provide: AXFocusableComponent, useExisting: AXConversationInputComponent },
297
319
  { provide: AXValuableComponent, useExisting: AXConversationInputComponent },
@@ -300,11 +322,11 @@ class AXConversationInputComponent extends classes((MXInputBaseValueComponent),
300
322
  useExisting: forwardRef(() => AXConversationInputComponent),
301
323
  multi: true,
302
324
  },
303
- ], viewQueries: [{ propertyName: "inputFile", first: true, predicate: ["inputFile"], descendants: true }], usesInheritance: true, ngImport: i0, template: "@if (replyChat()) {\n <div class=\"ax-editor-reply-container ax-editor-container ax-look-{{ look }}\">\n <div class=\"ax-reply-start\">\n <i class=\"fa-solid fa-reply\"></i>\n @switch (replyChat().type) {\n @case ('text') {\n <p>\n {{ replyChat().content }}\n </p>\n }\n @case ('image') {\n <div class=\"ax-reply-types\">\n <img src=\"{{ replyChat().content }}\" alt=\"\" />\n {{ replyChat().type }}\n </div>\n }\n @case ('video') {\n <div class=\"ax-reply-types\">\n <video src=\"{{ replyChat().content }}\" alt=\"\"></video>\n {{ replyChat().type }}\n </div>\n }\n @case ('file') {\n <div class=\"ax-reply-types\">\n <i class=\"fa-regular fa-folder-open\"></i>\n {{ replyChat().name }}\n </div>\n }\n @default {\n <p>\n {{ replyChat().type }}\n </p>\n }\n }\n </div>\n <i (click)=\"closeReplyHandler()\" class=\"fa-solid fa-xmark ax-cursor-pointer\"></i>\n </div>\n}\n\n<div class=\"ax-conversation-input ax-editor-container ax-look-{{ look }}\" [class.ax-state-recording]=\"recording()\">\n @if (recording()) {\n <div class=\"ax-conversation-input-start-side\">\n <span class=\"ax-record-dot\"></span>\n <span>{{ recordingService.timer() }}</span>\n </div>\n <div class=\"ax-conversation-input-main-side\">\n <ax-button\n class=\"ax-sm\"\n look=\"blank\"\n color=\"primary\"\n [text]=\"'cancel' | translate | async\"\n (onClick)=\"handleCancelRecordingClick()\"\n ></ax-button>\n </div>\n <div class=\"ax-conversation-input-end-side\">\n <ax-button look=\"solid\" color=\"danger\" class=\"ax-blob ax-sm\" (onClick)=\"handleSendVoiceClick()\">\n <ax-icon>\n <i class=\"ax-icon ax-icon-send\"></i>\n </ax-icon>\n </ax-button>\n </div>\n } @else {\n <div class=\"ax-conversation-input-start-side\">\n <ax-button look=\"blank\" class=\"ax-sm\">\n <ax-icon>\n <i class=\"ax-icon ax-icon-emoji\"></i>\n </ax-icon>\n <ax-dropdown-panel>\n <ng-container>\n <div class=\"ax-emoji-container\">\n <div>\u26A0\uFE0F</div>\n <div>\u27A1\uFE0F</div>\n <div>\uD83D\uDD03</div>\n <div>\uD83D\uDD37</div>\n <div>\uD83E\uDD1A</div>\n <div>\uD83D\uDE02</div>\n <div>\uD83D\uDE0A</div>\n </div>\n </ng-container>\n </ax-dropdown-panel>\n </ax-button>\n </div>\n\n <textarea\n class=\"ax-conversation-input-main-side\"\n oninput='this.style.height = \"\";this.style.height = this.scrollHeight + \"px\"'\n type=\"text\"\n rows=\"1\"\n [id]=\"id\"\n [name]=\"name\"\n [attr.placeholder]=\"placeholder\"\n [attr.maxlength]=\"maxLength()\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [tabindex]=\"tabIndex\"\n [ngModel]=\"value\"\n (ngModelChange)=\"_handleModelChange($event)\"\n [ngModelOptions]=\"{ updateOn: _updateOn }\"\n (keydown)=\"emitOnKeydownEvent($event)\"\n (keyup)=\"emitOnKeyupEvent($event)\"\n (keypress)=\"emitOnKeypressEvent($event)\"\n (focus)=\"emitOnFocusEvent($event)\"\n (blur)=\"emitOnBlurEvent($event)\"\n >\n </textarea>\n\n <div class=\"ax-conversation-input-end-side\">\n @if (!value) {\n <ax-button look=\"blank\" class=\"ax-sm\" (onClick)=\"handleAttachClick()\">\n <ax-icon>\n <i class=\"ax-icon ax-icon-attach\"></i>\n </ax-icon>\n </ax-button>\n <ax-button look=\"blank\" class=\"ax-sm\" (onClick)=\"handleRecordClick()\">\n <ax-icon>\n <i class=\"ax-icon ax-icon-mic\"></i>\n </ax-icon>\n </ax-button>\n <input multiple #inputFile [accept]=\"acceptFileType()\" type=\"file\" class=\"ax-attach-input\" (change)=\"handleChangeFile($event)\" />\n } @else {\n <ax-button look=\"solid\" color=\"primary\" class=\"ax-sm\" (onClick)=\"handleSendClick()\">\n <ax-icon>\n <i class=\"ax-icon ax-icon-send\"></i>\n </ax-icon>\n </ax-button>\n }\n </div>\n }\n</div>\n", styles: ["ax-conversation-input{width:100%}ax-conversation-input .ax-conversation-input{display:flex;align-items:flex-end;position:relative;resize:vertical;height:auto;padding:.5rem;font-size:.875rem;background-color:rgb(var(--ax-sys-surface-bg-color))}ax-conversation-input .ax-conversation-input.ax-state-recording{align-items:center;display:grid;grid-template-columns:repeat(3,1fr)}ax-conversation-input .ax-conversation-input.ax-state-recording .ax-conversation-input-start-side{justify-content:flex-start}ax-conversation-input .ax-conversation-input.ax-state-recording .ax-conversation-input-end-side{justify-content:flex-end}ax-conversation-input .ax-conversation-input>textarea{font-size:.875rem;background-color:transparent;max-height:10rem;min-height:1.5rem;line-height:2rem;flex:1 1 auto;height:auto;resize:none}ax-conversation-input .ax-conversation-input>textarea:focus,ax-conversation-input .ax-conversation-input>textarea:focus-visible{outline:unset}ax-conversation-input .ax-conversation-input .ax-conversation-input-start-side,ax-conversation-input .ax-conversation-input .ax-conversation-input-end-side{display:flex;align-items:center;justify-content:center}ax-conversation-input .ax-conversation-input .ax-conversation-input-start-side{padding-inline-end:.75rem}ax-conversation-input .ax-conversation-input .ax-conversation-input-main-side{flex:1 1 auto;display:flex;align-items:center;justify-content:center}ax-conversation-input .ax-conversation-input .ax-conversation-input-end-side{padding-inline-start:.75rem;gap:.5rem}ax-conversation-input .ax-conversation-input .ax-record-dot{display:inline-flex;width:.5rem;height:.5rem;background-color:rgba(var(--ax-sys-color-danger-500));border-radius:999rem;margin-inline-end:.5rem}ax-conversation-input .ax-conversation-input .ax-blob{animation:pulse .75s infinite}@keyframes pulse{0%{transform:scale(1);box-shadow:0 0 rgba(var(--ax-sys-color-danger-500),.7)}70%{transform:scale(1);box-shadow:0 0 0 10px rgba(var(--ax-sys-color-danger-500),0)}to{transform:scale(1);box-shadow:0 0 rgba(var(--ax-sys-color-danger-500),0)}}ax-conversation-input .ax-conversation-input .ax-attach-input{opacity:0;width:0;height:0;position:absolute}ax-conversation-input .ax-emoji-container{padding:.75rem;gap:.5rem;display:grid;grid-template-columns:repeat(7,1fr)}ax-conversation-input .ax-emoji-container>div{padding:.25rem;cursor:pointer;border-radius:var(--ax-sys-border-radius)}ax-conversation-input .ax-emoji-container>div:hover{background-color:rgba(var(--ax-color-on-surface))}ax-conversation-input .ax-editor-reply-container{display:flex;padding:.75rem;justify-content:space-between}ax-conversation-input .ax-reply-start{display:flex;align-items:center}ax-conversation-input .ax-cursor-pointer{cursor:pointer}ax-conversation-input .ax-reply-types{display:flex;align-items:center}ax-conversation-input .ax-reply-start i{margin-inline-end:1rem}ax-conversation-input .ax-reply-start img,ax-conversation-input .ax-reply-start video{margin-inline-end:.5rem;height:1.75rem;width:1.75rem}\n"], dependencies: [{ kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i1$1.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "component", type: i2.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i4.AXDropdownPanelComponent, selector: "ax-dropdown-panel", inputs: ["isOpen", "fitParent", "dropdownWidth", "position", "_target", "adaptivityEnabled"], outputs: ["onOpened", "onClosed"] }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }, { kind: "pipe", type: i6.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
325
+ ], viewQueries: [{ propertyName: "inputFile", first: true, predicate: ["inputFile"], descendants: true }], usesInheritance: true, ngImport: i0, template: "@if (replyChat()) {\n <div class=\"ax-editor-reply-container ax-editor-container ax-look-{{ look }}\">\n <div class=\"ax-reply-start\">\n <i class=\"fa-solid fa-reply\"></i>\n @switch (replyChat().type) {\n @case ('text') {\n <p>\n {{ replyChat().content }}\n </p>\n }\n @case ('image') {\n <div class=\"ax-reply-types\">\n <img src=\"{{ replyChat().content }}\" alt=\"\" />\n {{ replyChat().type }}\n </div>\n }\n @case ('video') {\n <div class=\"ax-reply-types\">\n <video src=\"{{ replyChat().content }}\" alt=\"\"></video>\n {{ replyChat().type }}\n </div>\n }\n @case ('file') {\n <div class=\"ax-reply-types\">\n <i class=\"fa-regular fa-folder-open\"></i>\n {{ replyChat().name }}\n </div>\n }\n @default {\n <p>\n {{ replyChat().type }}\n </p>\n }\n }\n </div>\n <i (click)=\"closeReplyHandler()\" class=\"fa-solid fa-xmark ax-cursor-pointer\"></i>\n </div>\n}\n\n<div\n class=\"ax-conversation-input ax-editor-container ax-look-{{ look }}\"\n [class.ax-state-recording]=\"recording()\"\n>\n @if (recording()) {\n <div class=\"ax-conversation-input-start-side\">\n <span class=\"ax-record-dot\"></span>\n <span>{{ recordingService.timer() }}</span>\n </div>\n <div class=\"ax-conversation-input-main-side\">\n <ax-button\n class=\"ax-sm\"\n look=\"blank\"\n color=\"primary\"\n [text]=\"'cancel' | translate | async\"\n (onClick)=\"handleCancelRecordingClick()\"\n ></ax-button>\n </div>\n <div class=\"ax-conversation-input-end-side\">\n <ax-button look=\"solid\" color=\"danger\" class=\"ax-blob ax-sm\" (onClick)=\"handleSendVoiceClick()\">\n <ax-icon>\n <i class=\"ax-icon ax-icon-send\"></i>\n </ax-icon>\n </ax-button>\n </div>\n } @else {\n @if (hasEmoji()) {\n <div class=\"ax-conversation-input-start-side\">\n <ax-button look=\"blank\" class=\"ax-sm\">\n <ax-icon>\n <i class=\"ax-icon ax-icon-emoji\"></i>\n </ax-icon>\n <ax-dropdown-panel>\n <ng-container>\n <div class=\"ax-emoji-container\">\n <div>\u26A0\uFE0F</div>\n <div>\u27A1\uFE0F</div>\n <div>\uD83D\uDD03</div>\n <div>\uD83D\uDD37</div>\n <div>\uD83E\uDD1A</div>\n <div>\uD83D\uDE02</div>\n <div>\uD83D\uDE0A</div>\n </div>\n </ng-container>\n </ax-dropdown-panel>\n </ax-button>\n </div>\n }\n\n <textarea\n class=\"ax-conversation-input-main-side\"\n oninput='this.style.height = \"\";this.style.height = this.scrollHeight + \"px\"'\n type=\"text\"\n rows=\"1\"\n [id]=\"id\"\n [name]=\"name\"\n [attr.placeholder]=\"placeholder\"\n [attr.maxlength]=\"maxLength()\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [tabindex]=\"tabIndex\"\n [ngModel]=\"value\"\n (ngModelChange)=\"_handleModelChange($event)\"\n [ngModelOptions]=\"{ updateOn: _updateOn }\"\n (keydown)=\"emitOnKeydownEvent($event)\"\n (keyup)=\"emitOnKeyupEvent($event)\"\n (keypress)=\"emitOnKeypressEvent($event)\"\n (focus)=\"emitOnFocusEvent($event)\"\n (blur)=\"emitOnBlurEvent($event)\"\n >\n </textarea>\n\n <div class=\"ax-conversation-input-end-side\">\n @if (!value) {\n @if (hasAttachment()) {\n <ax-button look=\"blank\" class=\"ax-sm\" (onClick)=\"handleAttachClick()\">\n <ax-icon>\n <i class=\"ax-icon ax-icon-attach\"></i>\n </ax-icon>\n </ax-button>\n <input\n multiple\n #inputFile\n [accept]=\"acceptFileType()\"\n type=\"file\"\n class=\"ax-attach-input\"\n (change)=\"handleChangeFile($event)\"\n />\n }\n @if (hasVoice()) {\n <ax-button look=\"blank\" class=\"ax-sm\" (onClick)=\"handleRecordClick()\">\n <ax-icon>\n <i class=\"ax-icon ax-icon-mic\"></i>\n </ax-icon>\n </ax-button>\n }\n } @else {\n <ax-button\n [disabled]=\"isLoading()\"\n look=\"solid\"\n color=\"primary\"\n class=\"ax-sm\"\n (onClick)=\"handleSendClick()\"\n >\n @if (isLoading()) {\n <ax-loading-spinner color=\"primary\"></ax-loading-spinner>\n } @else {\n <ax-icon>\n <i class=\"ax-icon ax-icon-send\"></i>\n </ax-icon>\n }\n </ax-button>\n }\n </div>\n }\n</div>\n", styles: [".ax-dark .ax-conversation-input:focus-within{box-shadow:0 0 0 1px rgba(var(--ax-color-primary-200));border-color:rgba(var(--ax-color-primary-200))}ax-conversation-input{width:100%}ax-conversation-input .ax-conversation-input{display:flex;align-items:center;position:relative;resize:vertical;height:auto;padding:.5rem;font-size:.875rem}ax-conversation-input .ax-conversation-input.ax-state-recording{align-items:center;display:grid;grid-template-columns:repeat(3,1fr)}ax-conversation-input .ax-conversation-input.ax-state-recording .ax-conversation-input-start-side{justify-content:flex-start}ax-conversation-input .ax-conversation-input.ax-state-recording .ax-conversation-input-end-side{justify-content:flex-end}ax-conversation-input .ax-conversation-input>textarea{font-size:.875rem;background-color:transparent;max-height:10rem;min-height:1.5rem;line-height:2rem;flex:1 1 auto;height:auto;resize:none}ax-conversation-input .ax-conversation-input>textarea:focus,ax-conversation-input .ax-conversation-input>textarea:focus-visible{outline:unset}ax-conversation-input .ax-conversation-input .ax-conversation-input-start-side,ax-conversation-input .ax-conversation-input .ax-conversation-input-end-side{display:flex;align-items:center;justify-content:center}ax-conversation-input .ax-conversation-input .ax-conversation-input-start-side{padding-inline-end:.75rem}ax-conversation-input .ax-conversation-input .ax-conversation-input-main-side{flex:1 1 auto;display:flex;align-items:center;justify-content:center;line-height:2.5rem}ax-conversation-input .ax-conversation-input .ax-conversation-input-main-side::placeholder{font-size:1rem;line-height:2.5rem}ax-conversation-input .ax-conversation-input .ax-conversation-input-end-side{padding-inline-start:.75rem;gap:.5rem}ax-conversation-input .ax-conversation-input .ax-record-dot{display:inline-flex;width:.5rem;height:.5rem;background-color:rgba(var(--ax-color-danger-500));border-radius:999rem;margin-inline-end:.5rem}ax-conversation-input .ax-conversation-input .ax-blob{animation:pulse .75s infinite}@keyframes pulse{0%{transform:scale(1);box-shadow:0 0 rgba(var(--ax-color-danger-500),.7)}70%{transform:scale(1);box-shadow:0 0 0 10px rgba(var(--ax-color-danger-500),0)}to{transform:scale(1);box-shadow:0 0 rgba(var(--ax-color-danger-500),0)}}ax-conversation-input .ax-conversation-input .ax-attach-input{opacity:0;width:0;height:0;position:absolute}ax-conversation-input .ax-emoji-container{padding:.75rem;gap:.5rem;display:grid;grid-template-columns:repeat(7,1fr)}ax-conversation-input .ax-emoji-container>div{padding:.25rem;cursor:pointer;border-radius:var(--ax-rounded-border-default)}ax-conversation-input .ax-emoji-container>div:hover{background-color:rgba(var(--ax-color-on-surface))}ax-conversation-input .ax-editor-reply-container{display:flex;padding:.75rem;justify-content:space-between}ax-conversation-input .ax-reply-start{display:flex;align-items:center}ax-conversation-input .ax-cursor-pointer{cursor:pointer}ax-conversation-input .ax-reply-types{display:flex;align-items:center}ax-conversation-input .ax-reply-start i{margin-inline-end:1rem}ax-conversation-input .ax-reply-start img,ax-conversation-input .ax-reply-start video{margin-inline-end:.5rem;height:1.75rem;width:1.75rem}\n"], dependencies: [{ kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i1$1.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "type", "responsiveOn", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "responsiveOnChange", "loadingTextChange"] }, { kind: "component", type: i2.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i4.AXDropdownPanelComponent, selector: "ax-dropdown-panel", inputs: ["isOpen", "fitParent", "dropdownWidth", "position", "_target", "adaptivityEnabled"], outputs: ["onOpened", "onClosed"] }, { kind: "component", type: i5.AXLoadingSpinnerComponent, selector: "ax-loading-spinner", inputs: ["text", "color", "size", "stroke"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "pipe", type: i7.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
304
326
  }
305
327
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXConversationInputComponent, decorators: [{
306
328
  type: Component,
307
- args: [{ selector: 'ax-conversation-input', inputs: ['look'], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, providers: [
329
+ args: [{ selector: 'ax-conversation-input', inputs: ['look', 'placeholder'], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, providers: [
308
330
  { provide: AXComponent, useExisting: AXConversationInputComponent },
309
331
  { provide: AXFocusableComponent, useExisting: AXConversationInputComponent },
310
332
  { provide: AXValuableComponent, useExisting: AXConversationInputComponent },
@@ -313,7 +335,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImpor
313
335
  useExisting: forwardRef(() => AXConversationInputComponent),
314
336
  multi: true,
315
337
  },
316
- ], standalone: false, template: "@if (replyChat()) {\n <div class=\"ax-editor-reply-container ax-editor-container ax-look-{{ look }}\">\n <div class=\"ax-reply-start\">\n <i class=\"fa-solid fa-reply\"></i>\n @switch (replyChat().type) {\n @case ('text') {\n <p>\n {{ replyChat().content }}\n </p>\n }\n @case ('image') {\n <div class=\"ax-reply-types\">\n <img src=\"{{ replyChat().content }}\" alt=\"\" />\n {{ replyChat().type }}\n </div>\n }\n @case ('video') {\n <div class=\"ax-reply-types\">\n <video src=\"{{ replyChat().content }}\" alt=\"\"></video>\n {{ replyChat().type }}\n </div>\n }\n @case ('file') {\n <div class=\"ax-reply-types\">\n <i class=\"fa-regular fa-folder-open\"></i>\n {{ replyChat().name }}\n </div>\n }\n @default {\n <p>\n {{ replyChat().type }}\n </p>\n }\n }\n </div>\n <i (click)=\"closeReplyHandler()\" class=\"fa-solid fa-xmark ax-cursor-pointer\"></i>\n </div>\n}\n\n<div class=\"ax-conversation-input ax-editor-container ax-look-{{ look }}\" [class.ax-state-recording]=\"recording()\">\n @if (recording()) {\n <div class=\"ax-conversation-input-start-side\">\n <span class=\"ax-record-dot\"></span>\n <span>{{ recordingService.timer() }}</span>\n </div>\n <div class=\"ax-conversation-input-main-side\">\n <ax-button\n class=\"ax-sm\"\n look=\"blank\"\n color=\"primary\"\n [text]=\"'cancel' | translate | async\"\n (onClick)=\"handleCancelRecordingClick()\"\n ></ax-button>\n </div>\n <div class=\"ax-conversation-input-end-side\">\n <ax-button look=\"solid\" color=\"danger\" class=\"ax-blob ax-sm\" (onClick)=\"handleSendVoiceClick()\">\n <ax-icon>\n <i class=\"ax-icon ax-icon-send\"></i>\n </ax-icon>\n </ax-button>\n </div>\n } @else {\n <div class=\"ax-conversation-input-start-side\">\n <ax-button look=\"blank\" class=\"ax-sm\">\n <ax-icon>\n <i class=\"ax-icon ax-icon-emoji\"></i>\n </ax-icon>\n <ax-dropdown-panel>\n <ng-container>\n <div class=\"ax-emoji-container\">\n <div>\u26A0\uFE0F</div>\n <div>\u27A1\uFE0F</div>\n <div>\uD83D\uDD03</div>\n <div>\uD83D\uDD37</div>\n <div>\uD83E\uDD1A</div>\n <div>\uD83D\uDE02</div>\n <div>\uD83D\uDE0A</div>\n </div>\n </ng-container>\n </ax-dropdown-panel>\n </ax-button>\n </div>\n\n <textarea\n class=\"ax-conversation-input-main-side\"\n oninput='this.style.height = \"\";this.style.height = this.scrollHeight + \"px\"'\n type=\"text\"\n rows=\"1\"\n [id]=\"id\"\n [name]=\"name\"\n [attr.placeholder]=\"placeholder\"\n [attr.maxlength]=\"maxLength()\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [tabindex]=\"tabIndex\"\n [ngModel]=\"value\"\n (ngModelChange)=\"_handleModelChange($event)\"\n [ngModelOptions]=\"{ updateOn: _updateOn }\"\n (keydown)=\"emitOnKeydownEvent($event)\"\n (keyup)=\"emitOnKeyupEvent($event)\"\n (keypress)=\"emitOnKeypressEvent($event)\"\n (focus)=\"emitOnFocusEvent($event)\"\n (blur)=\"emitOnBlurEvent($event)\"\n >\n </textarea>\n\n <div class=\"ax-conversation-input-end-side\">\n @if (!value) {\n <ax-button look=\"blank\" class=\"ax-sm\" (onClick)=\"handleAttachClick()\">\n <ax-icon>\n <i class=\"ax-icon ax-icon-attach\"></i>\n </ax-icon>\n </ax-button>\n <ax-button look=\"blank\" class=\"ax-sm\" (onClick)=\"handleRecordClick()\">\n <ax-icon>\n <i class=\"ax-icon ax-icon-mic\"></i>\n </ax-icon>\n </ax-button>\n <input multiple #inputFile [accept]=\"acceptFileType()\" type=\"file\" class=\"ax-attach-input\" (change)=\"handleChangeFile($event)\" />\n } @else {\n <ax-button look=\"solid\" color=\"primary\" class=\"ax-sm\" (onClick)=\"handleSendClick()\">\n <ax-icon>\n <i class=\"ax-icon ax-icon-send\"></i>\n </ax-icon>\n </ax-button>\n }\n </div>\n }\n</div>\n", styles: ["ax-conversation-input{width:100%}ax-conversation-input .ax-conversation-input{display:flex;align-items:flex-end;position:relative;resize:vertical;height:auto;padding:.5rem;font-size:.875rem;background-color:rgb(var(--ax-sys-surface-bg-color))}ax-conversation-input .ax-conversation-input.ax-state-recording{align-items:center;display:grid;grid-template-columns:repeat(3,1fr)}ax-conversation-input .ax-conversation-input.ax-state-recording .ax-conversation-input-start-side{justify-content:flex-start}ax-conversation-input .ax-conversation-input.ax-state-recording .ax-conversation-input-end-side{justify-content:flex-end}ax-conversation-input .ax-conversation-input>textarea{font-size:.875rem;background-color:transparent;max-height:10rem;min-height:1.5rem;line-height:2rem;flex:1 1 auto;height:auto;resize:none}ax-conversation-input .ax-conversation-input>textarea:focus,ax-conversation-input .ax-conversation-input>textarea:focus-visible{outline:unset}ax-conversation-input .ax-conversation-input .ax-conversation-input-start-side,ax-conversation-input .ax-conversation-input .ax-conversation-input-end-side{display:flex;align-items:center;justify-content:center}ax-conversation-input .ax-conversation-input .ax-conversation-input-start-side{padding-inline-end:.75rem}ax-conversation-input .ax-conversation-input .ax-conversation-input-main-side{flex:1 1 auto;display:flex;align-items:center;justify-content:center}ax-conversation-input .ax-conversation-input .ax-conversation-input-end-side{padding-inline-start:.75rem;gap:.5rem}ax-conversation-input .ax-conversation-input .ax-record-dot{display:inline-flex;width:.5rem;height:.5rem;background-color:rgba(var(--ax-sys-color-danger-500));border-radius:999rem;margin-inline-end:.5rem}ax-conversation-input .ax-conversation-input .ax-blob{animation:pulse .75s infinite}@keyframes pulse{0%{transform:scale(1);box-shadow:0 0 rgba(var(--ax-sys-color-danger-500),.7)}70%{transform:scale(1);box-shadow:0 0 0 10px rgba(var(--ax-sys-color-danger-500),0)}to{transform:scale(1);box-shadow:0 0 rgba(var(--ax-sys-color-danger-500),0)}}ax-conversation-input .ax-conversation-input .ax-attach-input{opacity:0;width:0;height:0;position:absolute}ax-conversation-input .ax-emoji-container{padding:.75rem;gap:.5rem;display:grid;grid-template-columns:repeat(7,1fr)}ax-conversation-input .ax-emoji-container>div{padding:.25rem;cursor:pointer;border-radius:var(--ax-sys-border-radius)}ax-conversation-input .ax-emoji-container>div:hover{background-color:rgba(var(--ax-color-on-surface))}ax-conversation-input .ax-editor-reply-container{display:flex;padding:.75rem;justify-content:space-between}ax-conversation-input .ax-reply-start{display:flex;align-items:center}ax-conversation-input .ax-cursor-pointer{cursor:pointer}ax-conversation-input .ax-reply-types{display:flex;align-items:center}ax-conversation-input .ax-reply-start i{margin-inline-end:1rem}ax-conversation-input .ax-reply-start img,ax-conversation-input .ax-reply-start video{margin-inline-end:.5rem;height:1.75rem;width:1.75rem}\n"] }]
338
+ ], standalone: false, template: "@if (replyChat()) {\n <div class=\"ax-editor-reply-container ax-editor-container ax-look-{{ look }}\">\n <div class=\"ax-reply-start\">\n <i class=\"fa-solid fa-reply\"></i>\n @switch (replyChat().type) {\n @case ('text') {\n <p>\n {{ replyChat().content }}\n </p>\n }\n @case ('image') {\n <div class=\"ax-reply-types\">\n <img src=\"{{ replyChat().content }}\" alt=\"\" />\n {{ replyChat().type }}\n </div>\n }\n @case ('video') {\n <div class=\"ax-reply-types\">\n <video src=\"{{ replyChat().content }}\" alt=\"\"></video>\n {{ replyChat().type }}\n </div>\n }\n @case ('file') {\n <div class=\"ax-reply-types\">\n <i class=\"fa-regular fa-folder-open\"></i>\n {{ replyChat().name }}\n </div>\n }\n @default {\n <p>\n {{ replyChat().type }}\n </p>\n }\n }\n </div>\n <i (click)=\"closeReplyHandler()\" class=\"fa-solid fa-xmark ax-cursor-pointer\"></i>\n </div>\n}\n\n<div\n class=\"ax-conversation-input ax-editor-container ax-look-{{ look }}\"\n [class.ax-state-recording]=\"recording()\"\n>\n @if (recording()) {\n <div class=\"ax-conversation-input-start-side\">\n <span class=\"ax-record-dot\"></span>\n <span>{{ recordingService.timer() }}</span>\n </div>\n <div class=\"ax-conversation-input-main-side\">\n <ax-button\n class=\"ax-sm\"\n look=\"blank\"\n color=\"primary\"\n [text]=\"'cancel' | translate | async\"\n (onClick)=\"handleCancelRecordingClick()\"\n ></ax-button>\n </div>\n <div class=\"ax-conversation-input-end-side\">\n <ax-button look=\"solid\" color=\"danger\" class=\"ax-blob ax-sm\" (onClick)=\"handleSendVoiceClick()\">\n <ax-icon>\n <i class=\"ax-icon ax-icon-send\"></i>\n </ax-icon>\n </ax-button>\n </div>\n } @else {\n @if (hasEmoji()) {\n <div class=\"ax-conversation-input-start-side\">\n <ax-button look=\"blank\" class=\"ax-sm\">\n <ax-icon>\n <i class=\"ax-icon ax-icon-emoji\"></i>\n </ax-icon>\n <ax-dropdown-panel>\n <ng-container>\n <div class=\"ax-emoji-container\">\n <div>\u26A0\uFE0F</div>\n <div>\u27A1\uFE0F</div>\n <div>\uD83D\uDD03</div>\n <div>\uD83D\uDD37</div>\n <div>\uD83E\uDD1A</div>\n <div>\uD83D\uDE02</div>\n <div>\uD83D\uDE0A</div>\n </div>\n </ng-container>\n </ax-dropdown-panel>\n </ax-button>\n </div>\n }\n\n <textarea\n class=\"ax-conversation-input-main-side\"\n oninput='this.style.height = \"\";this.style.height = this.scrollHeight + \"px\"'\n type=\"text\"\n rows=\"1\"\n [id]=\"id\"\n [name]=\"name\"\n [attr.placeholder]=\"placeholder\"\n [attr.maxlength]=\"maxLength()\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [tabindex]=\"tabIndex\"\n [ngModel]=\"value\"\n (ngModelChange)=\"_handleModelChange($event)\"\n [ngModelOptions]=\"{ updateOn: _updateOn }\"\n (keydown)=\"emitOnKeydownEvent($event)\"\n (keyup)=\"emitOnKeyupEvent($event)\"\n (keypress)=\"emitOnKeypressEvent($event)\"\n (focus)=\"emitOnFocusEvent($event)\"\n (blur)=\"emitOnBlurEvent($event)\"\n >\n </textarea>\n\n <div class=\"ax-conversation-input-end-side\">\n @if (!value) {\n @if (hasAttachment()) {\n <ax-button look=\"blank\" class=\"ax-sm\" (onClick)=\"handleAttachClick()\">\n <ax-icon>\n <i class=\"ax-icon ax-icon-attach\"></i>\n </ax-icon>\n </ax-button>\n <input\n multiple\n #inputFile\n [accept]=\"acceptFileType()\"\n type=\"file\"\n class=\"ax-attach-input\"\n (change)=\"handleChangeFile($event)\"\n />\n }\n @if (hasVoice()) {\n <ax-button look=\"blank\" class=\"ax-sm\" (onClick)=\"handleRecordClick()\">\n <ax-icon>\n <i class=\"ax-icon ax-icon-mic\"></i>\n </ax-icon>\n </ax-button>\n }\n } @else {\n <ax-button\n [disabled]=\"isLoading()\"\n look=\"solid\"\n color=\"primary\"\n class=\"ax-sm\"\n (onClick)=\"handleSendClick()\"\n >\n @if (isLoading()) {\n <ax-loading-spinner color=\"primary\"></ax-loading-spinner>\n } @else {\n <ax-icon>\n <i class=\"ax-icon ax-icon-send\"></i>\n </ax-icon>\n }\n </ax-button>\n }\n </div>\n }\n</div>\n", styles: [".ax-dark .ax-conversation-input:focus-within{box-shadow:0 0 0 1px rgba(var(--ax-color-primary-200));border-color:rgba(var(--ax-color-primary-200))}ax-conversation-input{width:100%}ax-conversation-input .ax-conversation-input{display:flex;align-items:center;position:relative;resize:vertical;height:auto;padding:.5rem;font-size:.875rem}ax-conversation-input .ax-conversation-input.ax-state-recording{align-items:center;display:grid;grid-template-columns:repeat(3,1fr)}ax-conversation-input .ax-conversation-input.ax-state-recording .ax-conversation-input-start-side{justify-content:flex-start}ax-conversation-input .ax-conversation-input.ax-state-recording .ax-conversation-input-end-side{justify-content:flex-end}ax-conversation-input .ax-conversation-input>textarea{font-size:.875rem;background-color:transparent;max-height:10rem;min-height:1.5rem;line-height:2rem;flex:1 1 auto;height:auto;resize:none}ax-conversation-input .ax-conversation-input>textarea:focus,ax-conversation-input .ax-conversation-input>textarea:focus-visible{outline:unset}ax-conversation-input .ax-conversation-input .ax-conversation-input-start-side,ax-conversation-input .ax-conversation-input .ax-conversation-input-end-side{display:flex;align-items:center;justify-content:center}ax-conversation-input .ax-conversation-input .ax-conversation-input-start-side{padding-inline-end:.75rem}ax-conversation-input .ax-conversation-input .ax-conversation-input-main-side{flex:1 1 auto;display:flex;align-items:center;justify-content:center;line-height:2.5rem}ax-conversation-input .ax-conversation-input .ax-conversation-input-main-side::placeholder{font-size:1rem;line-height:2.5rem}ax-conversation-input .ax-conversation-input .ax-conversation-input-end-side{padding-inline-start:.75rem;gap:.5rem}ax-conversation-input .ax-conversation-input .ax-record-dot{display:inline-flex;width:.5rem;height:.5rem;background-color:rgba(var(--ax-color-danger-500));border-radius:999rem;margin-inline-end:.5rem}ax-conversation-input .ax-conversation-input .ax-blob{animation:pulse .75s infinite}@keyframes pulse{0%{transform:scale(1);box-shadow:0 0 rgba(var(--ax-color-danger-500),.7)}70%{transform:scale(1);box-shadow:0 0 0 10px rgba(var(--ax-color-danger-500),0)}to{transform:scale(1);box-shadow:0 0 rgba(var(--ax-color-danger-500),0)}}ax-conversation-input .ax-conversation-input .ax-attach-input{opacity:0;width:0;height:0;position:absolute}ax-conversation-input .ax-emoji-container{padding:.75rem;gap:.5rem;display:grid;grid-template-columns:repeat(7,1fr)}ax-conversation-input .ax-emoji-container>div{padding:.25rem;cursor:pointer;border-radius:var(--ax-rounded-border-default)}ax-conversation-input .ax-emoji-container>div:hover{background-color:rgba(var(--ax-color-on-surface))}ax-conversation-input .ax-editor-reply-container{display:flex;padding:.75rem;justify-content:space-between}ax-conversation-input .ax-reply-start{display:flex;align-items:center}ax-conversation-input .ax-cursor-pointer{cursor:pointer}ax-conversation-input .ax-reply-types{display:flex;align-items:center}ax-conversation-input .ax-reply-start i{margin-inline-end:1rem}ax-conversation-input .ax-reply-start img,ax-conversation-input .ax-reply-start video{margin-inline-end:.5rem;height:1.75rem;width:1.75rem}\n"] }]
317
339
  }], propDecorators: { inputFile: [{
318
340
  type: ViewChild,
319
341
  args: ['inputFile']
@@ -349,6 +371,7 @@ class AXConversationMessageComponent extends MXBaseComponent {
349
371
  * @ignore
350
372
  */
351
373
  this.popover = viewChild('popover');
374
+ this.isReply = input(true);
352
375
  /**
353
376
  * @ignore
354
377
  */
@@ -424,11 +447,11 @@ class AXConversationMessageComponent extends MXBaseComponent {
424
447
  this.conversationService.replyId.set(e);
425
448
  }
426
449
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXConversationMessageComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
427
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.3", type: AXConversationMessageComponent, isStandalone: false, selector: "ax-conversation-message", inputs: { chatMessage: { classPropertyName: "chatMessage", publicName: "chatMessage", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "this.__hostClass" } }, viewQueries: [{ propertyName: "popover", first: true, predicate: ["popover"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "@if (chatMessage().fromId) {\n <ax-avatar color=\"primary\" [size]=\"36\"> </ax-avatar>\n}\n\n@if (isOwn) {\n <i (click)=\"replyHandler(chatMessage().id)\" class=\"fa-solid fa-reply ax-cursor-pointer\"></i>\n}\n\n<div\n class=\"ax-message-content\"\n [class.ax-state-own]=\"!chatMessage().fromId\"\n [class.ax-state-other]=\"chatMessage().fromId\"\n>\n <ng-template [cdkPortalOutlet]=\"portal()\" (attached)=\"_handleAttached($event)\"></ng-template>\n\n <div class=\"ax-chat-message-status\">\n <div class=\"ax-message-prefix\"></div>\n <div>\n <div class=\"ax-message-suffix\"></div>\n <span>\n {{ chatMessage().sendTime | format: 'datetime' : 'HH:mm' | async }}\n </span>\n <span>\n @if (isOwn) {\n @if (chatMessage().deliverTime && chatMessage().sendTime) {\n <i class=\"ax-icon ax-icon-check ax-message-status\"></i>\n }\n @if (chatMessage().readTime && chatMessage().sendTime) {\n <i class=\"ax-icon ax-icon-dobble-check ax-message-status\"></i>\n }\n }\n </span>\n </div>\n </div>\n</div>\n\n@if (!chatMessage().sendTime) {\n <ax-button class=\"ax-resend-button ax-xs\" color=\"danger\" #b>\n <ax-icon class=\"ax-icon ax-icon-error\"></ax-icon>\n\n <ax-popover [target]=\"b\" placement=\"bottom-end\" #popover>\n <div class=\"ax-overlay-pane\">\n <ax-content> </ax-content>\n <ax-button-item-list>\n @if (chatMessage().onResendClick) {\n <ax-button-item text=\"Resend\" (onClick)=\"handleResendClick()\">\n <ax-icon class=\"ax-icon ax-icon-reload ax-bold\"></ax-icon>\n </ax-button-item>\n }\n @if (chatMessage().onDeleteClick) {\n <ax-button-item text=\"Delete\" color=\"danger\" (onClick)=\"handleDeleteClick()\">\n <ax-icon class=\"ax-icon ax-icon-clear ax-bold\"></ax-icon>\n </ax-button-item>\n }\n </ax-button-item-list>\n </div>\n </ax-popover>\n </ax-button>\n}\n", styles: ["ax-conversation-container{--ax-comp-conversation-other-color: var(--ax-sys-color-primary-500);--ax-comp-conversation-other-color-fore: var(--ax-sys-color-primary-text);--ax-comp-conversation-status-color: var(--ax-sys-color-primary-text);--ax-comp-conversation-other-bar-color: var(--ax-sys-color-primary-400);--ax-comp-conversation-other-progress-color: var(--ax-sys-color-primary-text);--ax-comp-conversation-own-color: var(--ax-sys-color-primary-100);--ax-comp-conversation-own-color-fore: var(--ax-sys-color-primary-700);--ax-comp-conversation-own-reply-color: var(--ax-sys-color-primary-200);--ax-comp-conversation-own-reply-color-fore: var(--ax-sys-color-primary-800);--ax-comp-conversation-other-reply-color: var(--ax-sys-color-primary-700);--ax-comp-conversation-other-reply-color-fore: var(--ax-sys-surface-light-bg-color);--ax-comp-conversation-border-color: var(--ax-sys-color-primary-800);--ax-comp-conversation-own-bar-color: var(--ax-sys-color-primary-200);--ax-comp-conversation-own-progress-color: var(--ax-sys-color-primary-700)}ax-conversation-message{display:flex;align-items:flex-end;margin-bottom:.5rem}ax-conversation-message .ax-message-reply-container{border-left:.3rem solid rgb(var(--ax-comp-conversation-border-color));border-radius:.75rem;padding:.75rem;margin-bottom:.25rem}ax-conversation-message .ax-message-reply-container .file{display:flex;align-items:center}ax-conversation-message .ax-message-reply-container .file i{margin-inline-end:.5rem}ax-conversation-message .ax-message-reply-container img,ax-conversation-message .ax-message-reply-container video{width:6rem}ax-conversation-message.ax-state-own{justify-content:flex-end}ax-conversation-message.ax-state-own .ax-conversation-controller button{background-color:rgb(var(--ax-comp-conversation-own-color-fore));color:rgb(var(--ax-comp-conversation-own-color))}ax-conversation-message.ax-state-own .ax-message-reply-container{background-color:rgb(var(--ax-comp-conversation-own-reply-color));color:rgb(var(--ax-comp-conversation-own-reply-color-fore))}ax-conversation-message.ax-state-other .ax-conversation-controller button{background-color:rgb(var(--ax-comp-conversation-other-color-fore));color:rgb(var(--ax-comp-conversation-other-color))}ax-conversation-message.ax-state-other .ax-message-reply-container{background-color:rgb(var(--ax-comp-conversation-other-reply-color));color:rgb(var(--ax-comp-conversation-other-reply-color-fore))}ax-conversation-message .ax-conversation-controller button{width:2.5rem;height:2.5rem;border-radius:999rem;display:flex;align-items:center;justify-content:center}ax-conversation-message .ax-conversation-controller button ax-loading-spinner{display:flex}ax-conversation-message .ax-conversation-controller button.ax-state-error{background-color:rgb(var(--ax-sys-color-danger-500));color:rgb(var(--ax-sys-color-danger-fore))}ax-conversation-message .ax-conversation-controller button>i{width:1.5rem;height:1.5rem;display:flex;align-items:center;justify-content:center;font-size:1.25rem;font-weight:700}ax-conversation-message .ax-message-content{display:block;padding:.5rem .75rem;font-size:.875rem;line-height:1.25rem;border-radius:1rem;width:fit-content;max-width:50%}ax-conversation-message .ax-message-content.ax-state-own{border-end-end-radius:0!important;background-color:rgb(var(--ax-comp-conversation-own-color));color:rgb(var(--ax-comp-conversation-own-color-fore));justify-content:flex-end}ax-conversation-message .ax-message-content.ax-state-own .ax-chat-message-status{color:rgb(var(--ax-comp-conversation-own-color-fore))}ax-conversation-message .ax-message-content.ax-state-other{border-end-start-radius:0!important;background-color:rgb(var(--ax-comp-conversation-other-color));color:rgb(var(--ax-comp-conversation-other-color-fore))}ax-conversation-message .ax-message-content.ax-state-other .ax-chat-message-status{color:rgb(var(--ax-comp-conversation-other-color-fore))}ax-conversation-message .ax-message-content .ax-chat-message-status{display:flex;justify-content:space-between;align-items:center;font-size:.75rem}ax-conversation-message .ax-message-content .ax-chat-message-status>div{display:flex;gap:.125rem;align-items:center}ax-conversation-message .ax-message-content .ax-chat-message-status .ax-message-status{color:rgb(var(--ax-comp-conversation-status-color))}ax-conversation-message .ax-message-content .ax-chat-message-status .ax-icon{font-weight:700;font-size:.875rem}ax-conversation-message .ax-message-content .ax-chat-message-status .ax-icon-error{color:rgb(var(--ax-sys-color-danger-500))}ax-conversation-message .ax-message-content ax-prefix,ax-conversation-message .ax-message-content ax-suffix{display:none}ax-conversation-message .ax-resend-button{border-radius:999rem}ax-conversation-message .ax-cursor-pointer{cursor:pointer}ax-conversation-message .ax-rounded{border-radius:.75rem}ax-conversation-message .ax-message-content p{padding:.75rem;color:rgba(var(--ax-sys-color-primary-text))}@media (min-width: 320px) and (max-width: 640px){ax-conversation-message ax-avatar{display:none!important}ax-conversation-message .ax-message-content{max-width:100%}}\n"], dependencies: [{ kind: "component", type: i1$1.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "component", type: i1$1.AXButtonItemComponent, selector: "ax-button-item", inputs: ["color", "disabled", "text", "selected", "divided", "data", "name"], outputs: ["onClick", "onFocus", "onBlur", "disabledChange"] }, { kind: "component", type: i1$1.AXButtonItemListComponent, selector: "ax-button-item-list", inputs: ["items"], outputs: ["onItemClick"] }, { kind: "component", type: i2.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i2.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-sub-title, ax-placeholder, ax-overlay" }, { kind: "directive", type: i3.CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }, { kind: "component", type: i4$1.AXAvatarComponent, selector: "ax-avatar", inputs: ["color", "size", "look"], outputs: ["sizeChange"] }, { kind: "component", type: i5$1.AXPopoverComponent, selector: "ax-popover", inputs: ["offsetX", "offsetY", "target", "placement", "content", "openOn", "closeOn", "hasBackdrop", "openAfter", "closeAfter", "backdropClass", "panelClass", "adaptivityEnabled"], outputs: ["onOpened", "onClosed"] }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }, { kind: "pipe", type: i7.AXFormatPipe, name: "format" }], encapsulation: i0.ViewEncapsulation.None }); }
450
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.3", type: AXConversationMessageComponent, isStandalone: false, selector: "ax-conversation-message", inputs: { isReply: { classPropertyName: "isReply", publicName: "isReply", isSignal: true, isRequired: false, transformFunction: null }, chatMessage: { classPropertyName: "chatMessage", publicName: "chatMessage", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "this.__hostClass" } }, viewQueries: [{ propertyName: "popover", first: true, predicate: ["popover"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "@if (chatMessage().fromId) {\n <ax-avatar [size]=\"36\"></ax-avatar>\n}\n\n@if (isOwn && isReply()) {\n <i (click)=\"replyHandler(chatMessage().id)\" class=\"fa-solid fa-reply ax-cursor-pointer\"></i>\n}\n\n<div\n class=\"ax-message-content\"\n [class.ax-state-own]=\"!chatMessage().fromId\"\n [class.ax-state-other]=\"chatMessage().fromId\"\n>\n <ng-template [cdkPortalOutlet]=\"portal()\" (attached)=\"_handleAttached($event)\"></ng-template>\n\n <div class=\"ax-chat-message-status\">\n <div class=\"ax-message-prefix\"></div>\n <div>\n <div class=\"ax-message-suffix\"></div>\n <span>\n {{ chatMessage().sendTime | format: 'datetime' : 'HH:mm' | async }}\n </span>\n <span>\n @if (isOwn) {\n @if (chatMessage().deliverTime && chatMessage().sendTime) {\n <i class=\"ax-icon ax-icon-check ax-message-status\"></i>\n }\n @if (chatMessage().readTime && chatMessage().sendTime) {\n <i class=\"ax-icon ax-icon-dobble-check ax-message-status\"></i>\n }\n }\n </span>\n </div>\n </div>\n</div>\n\n@if (!chatMessage().sendTime) {\n <ax-button class=\"ax-resend-button ax-xs\" color=\"danger\" #b>\n <ax-icon class=\"ax-icon ax-icon-error\"></ax-icon>\n\n <ax-popover [target]=\"b\" placement=\"bottom-end\" #popover>\n <div class=\"ax-overlay-pane\">\n <ax-content> </ax-content>\n <ax-button-item-list>\n @if (chatMessage().onResendClick) {\n <ax-button-item text=\"Resend\" (onClick)=\"handleResendClick()\">\n <ax-icon class=\"ax-icon ax-icon-reload ax-bold\"></ax-icon>\n </ax-button-item>\n }\n @if (chatMessage().onDeleteClick) {\n <ax-button-item text=\"Delete\" color=\"danger\" (onClick)=\"handleDeleteClick()\">\n <ax-icon class=\"ax-icon ax-icon-clear ax-bold\"></ax-icon>\n </ax-button-item>\n }\n </ax-button-item-list>\n </div>\n </ax-popover>\n </ax-button>\n}\n", styles: [":root{--ax-message-other-color: rgba(var(--ax-color-primary-500));--ax-message-other-color-fore: rgba(var(--ax-color-primary-fore));--ax-message-status-color: rgba(var(--ax-color-primary-700));--ax-message-other-bar-color: rgba(var(--ax-color-primary-400));--ax-message-other-progress-color: rgba(var(--ax-color-primary-fore));--ax-message-own-color: rgba(var(--ax-color-primary-100));--ax-message-own-color-fore: rgba(var(--ax-color-primary-700));--ax-message-own-reply-color: rgba(var(--ax-color-primary-200));--ax-message-own-reply-color-fore: rgba(var(--ax-color-primary-800));--ax-message-other-reply-color: rgba(var(--ax-color-primary-700));--ax-message-other-reply-color-fore: white;--ax-message-border-color: rgba(var(--ax-color-primary-800));--ax-message-own-bar-color: rgba(var(--ax-color-primary-200));--ax-message-own-progress-color: rgba(var(--ax-color-primary-700))}ax-conversation-message{display:flex;align-items:flex-end;margin-bottom:.5rem}ax-conversation-message .ax-message-reply-container{border-left:.3rem solid var(--ax-message-border-color);border-radius:.75rem;padding:.75rem;margin-bottom:.25rem}ax-conversation-message .ax-message-reply-container .file{display:flex;align-items:center}ax-conversation-message .ax-message-reply-container .file i{margin-inline-end:.5rem}ax-conversation-message .ax-message-reply-container img,ax-conversation-message .ax-message-reply-container video{width:6rem}ax-conversation-message.ax-state-own{justify-content:flex-end}ax-conversation-message.ax-state-own .ax-conversation-controller button{background-color:var(--ax-message-own-color-fore);color:var(--ax-message-own-color)}ax-conversation-message.ax-state-own .ax-message-reply-container{background-color:var(--ax-message-own-reply-color);color:var(--ax-message-own-reply-color-fore)}ax-conversation-message.ax-state-other .ax-conversation-controller button{background-color:var(--ax-message-other-color-fore);color:var(--ax-message-other-color)}ax-conversation-message.ax-state-other .ax-message-reply-container{background-color:var(--ax-message-other-reply-color);color:var(--ax-message-other-reply-color-fore)}ax-conversation-message .ax-conversation-controller button{width:2.5rem;height:2.5rem;border-radius:999rem;display:flex;align-items:center;justify-content:center}ax-conversation-message .ax-conversation-controller button ax-loading-spinner{display:flex}ax-conversation-message .ax-conversation-controller button.ax-state-error{background-color:rgba(var(--ax-color-danger-500));color:rgba(var(--ax-color-danger-fore))}ax-conversation-message .ax-conversation-controller button>i{width:1.5rem;height:1.5rem;display:flex;align-items:center;justify-content:center;font-size:1.25rem;font-weight:700}ax-conversation-message .ax-message-content{display:block;padding:.5rem .75rem;font-size:.875rem;line-height:1.25rem;border-radius:1rem;width:fit-content;max-width:50%}ax-conversation-message .ax-message-content.ax-state-own{border-end-end-radius:0!important;background-color:var(--ax-message-own-color);color:var(--ax-message-own-color-fore);justify-content:flex-end}ax-conversation-message .ax-message-content.ax-state-own .ax-chat-message-status{color:var(--ax-message-own-color-fore)}ax-conversation-message .ax-message-content.ax-state-other{border-end-start-radius:0!important;background-color:var(--ax-message-other-color);color:var(--ax-message-other-color-fore)}ax-conversation-message .ax-message-content.ax-state-other .ax-chat-message-status{color:var(--ax-message-other-color-fore)}ax-conversation-message .ax-message-content .ax-chat-message-status{display:flex;justify-content:space-between;align-items:center;font-size:.75rem}ax-conversation-message .ax-message-content .ax-chat-message-status>div{display:flex;gap:.125rem;align-items:center}ax-conversation-message .ax-message-content .ax-chat-message-status .ax-message-status{color:var(--ax-message-status-color)}ax-conversation-message .ax-message-content .ax-chat-message-status .ax-icon{font-weight:700;font-size:.875rem}ax-conversation-message .ax-message-content .ax-chat-message-status .ax-icon-error{color:rgba(var(--ax-color-danger-500))}ax-conversation-message .ax-message-content ax-prefix,ax-conversation-message .ax-message-content ax-suffix{display:none}ax-conversation-message .ax-resend-button{border-radius:999rem}ax-conversation-message .ax-cursor-pointer{cursor:pointer}ax-conversation-message .ax-rounded{border-radius:.75rem}ax-conversation-message .ax-message-content p{padding:.75rem;color:rgba(var(--ax-color-primary-fore))}@media (min-width: 320px) and (max-width: 640px){ax-conversation-message ax-avatar{display:none!important}ax-conversation-message .ax-message-content{max-width:100%}}\n"], dependencies: [{ kind: "component", type: i1$1.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "type", "responsiveOn", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "responsiveOnChange", "loadingTextChange"] }, { kind: "component", type: i1$1.AXButtonItemComponent, selector: "ax-button-item", inputs: ["color", "disabled", "text", "selected", "divided", "data", "name"], outputs: ["onClick", "onFocus", "onBlur", "disabledChange"] }, { kind: "component", type: i1$1.AXButtonItemListComponent, selector: "ax-button-item-list", inputs: ["items"], outputs: ["onItemClick"] }, { kind: "component", type: i2.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i2.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-sub-title, ax-placeholder, ax-overlay" }, { kind: "directive", type: i3.CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }, { kind: "component", type: i4$1.AXAvatarComponent, selector: "ax-avatar", inputs: ["color", "size", "look"], outputs: ["sizeChange"] }, { kind: "component", type: i5$1.AXPopoverComponent, selector: "ax-popover", inputs: ["offsetX", "offsetY", "target", "placement", "content", "openOn", "closeOn", "hasBackdrop", "openAfter", "closeAfter", "backdropClass", "panelClass", "adaptivityEnabled"], outputs: ["onOpened", "onClosed"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "pipe", type: i5$2.AXFormatPipe, name: "format" }], encapsulation: i0.ViewEncapsulation.None }); }
428
451
  }
429
452
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXConversationMessageComponent, decorators: [{
430
453
  type: Component,
431
- args: [{ selector: 'ax-conversation-message', encapsulation: ViewEncapsulation.None, standalone: false, template: "@if (chatMessage().fromId) {\n <ax-avatar color=\"primary\" [size]=\"36\"> </ax-avatar>\n}\n\n@if (isOwn) {\n <i (click)=\"replyHandler(chatMessage().id)\" class=\"fa-solid fa-reply ax-cursor-pointer\"></i>\n}\n\n<div\n class=\"ax-message-content\"\n [class.ax-state-own]=\"!chatMessage().fromId\"\n [class.ax-state-other]=\"chatMessage().fromId\"\n>\n <ng-template [cdkPortalOutlet]=\"portal()\" (attached)=\"_handleAttached($event)\"></ng-template>\n\n <div class=\"ax-chat-message-status\">\n <div class=\"ax-message-prefix\"></div>\n <div>\n <div class=\"ax-message-suffix\"></div>\n <span>\n {{ chatMessage().sendTime | format: 'datetime' : 'HH:mm' | async }}\n </span>\n <span>\n @if (isOwn) {\n @if (chatMessage().deliverTime && chatMessage().sendTime) {\n <i class=\"ax-icon ax-icon-check ax-message-status\"></i>\n }\n @if (chatMessage().readTime && chatMessage().sendTime) {\n <i class=\"ax-icon ax-icon-dobble-check ax-message-status\"></i>\n }\n }\n </span>\n </div>\n </div>\n</div>\n\n@if (!chatMessage().sendTime) {\n <ax-button class=\"ax-resend-button ax-xs\" color=\"danger\" #b>\n <ax-icon class=\"ax-icon ax-icon-error\"></ax-icon>\n\n <ax-popover [target]=\"b\" placement=\"bottom-end\" #popover>\n <div class=\"ax-overlay-pane\">\n <ax-content> </ax-content>\n <ax-button-item-list>\n @if (chatMessage().onResendClick) {\n <ax-button-item text=\"Resend\" (onClick)=\"handleResendClick()\">\n <ax-icon class=\"ax-icon ax-icon-reload ax-bold\"></ax-icon>\n </ax-button-item>\n }\n @if (chatMessage().onDeleteClick) {\n <ax-button-item text=\"Delete\" color=\"danger\" (onClick)=\"handleDeleteClick()\">\n <ax-icon class=\"ax-icon ax-icon-clear ax-bold\"></ax-icon>\n </ax-button-item>\n }\n </ax-button-item-list>\n </div>\n </ax-popover>\n </ax-button>\n}\n", styles: ["ax-conversation-container{--ax-comp-conversation-other-color: var(--ax-sys-color-primary-500);--ax-comp-conversation-other-color-fore: var(--ax-sys-color-primary-text);--ax-comp-conversation-status-color: var(--ax-sys-color-primary-text);--ax-comp-conversation-other-bar-color: var(--ax-sys-color-primary-400);--ax-comp-conversation-other-progress-color: var(--ax-sys-color-primary-text);--ax-comp-conversation-own-color: var(--ax-sys-color-primary-100);--ax-comp-conversation-own-color-fore: var(--ax-sys-color-primary-700);--ax-comp-conversation-own-reply-color: var(--ax-sys-color-primary-200);--ax-comp-conversation-own-reply-color-fore: var(--ax-sys-color-primary-800);--ax-comp-conversation-other-reply-color: var(--ax-sys-color-primary-700);--ax-comp-conversation-other-reply-color-fore: var(--ax-sys-surface-light-bg-color);--ax-comp-conversation-border-color: var(--ax-sys-color-primary-800);--ax-comp-conversation-own-bar-color: var(--ax-sys-color-primary-200);--ax-comp-conversation-own-progress-color: var(--ax-sys-color-primary-700)}ax-conversation-message{display:flex;align-items:flex-end;margin-bottom:.5rem}ax-conversation-message .ax-message-reply-container{border-left:.3rem solid rgb(var(--ax-comp-conversation-border-color));border-radius:.75rem;padding:.75rem;margin-bottom:.25rem}ax-conversation-message .ax-message-reply-container .file{display:flex;align-items:center}ax-conversation-message .ax-message-reply-container .file i{margin-inline-end:.5rem}ax-conversation-message .ax-message-reply-container img,ax-conversation-message .ax-message-reply-container video{width:6rem}ax-conversation-message.ax-state-own{justify-content:flex-end}ax-conversation-message.ax-state-own .ax-conversation-controller button{background-color:rgb(var(--ax-comp-conversation-own-color-fore));color:rgb(var(--ax-comp-conversation-own-color))}ax-conversation-message.ax-state-own .ax-message-reply-container{background-color:rgb(var(--ax-comp-conversation-own-reply-color));color:rgb(var(--ax-comp-conversation-own-reply-color-fore))}ax-conversation-message.ax-state-other .ax-conversation-controller button{background-color:rgb(var(--ax-comp-conversation-other-color-fore));color:rgb(var(--ax-comp-conversation-other-color))}ax-conversation-message.ax-state-other .ax-message-reply-container{background-color:rgb(var(--ax-comp-conversation-other-reply-color));color:rgb(var(--ax-comp-conversation-other-reply-color-fore))}ax-conversation-message .ax-conversation-controller button{width:2.5rem;height:2.5rem;border-radius:999rem;display:flex;align-items:center;justify-content:center}ax-conversation-message .ax-conversation-controller button ax-loading-spinner{display:flex}ax-conversation-message .ax-conversation-controller button.ax-state-error{background-color:rgb(var(--ax-sys-color-danger-500));color:rgb(var(--ax-sys-color-danger-fore))}ax-conversation-message .ax-conversation-controller button>i{width:1.5rem;height:1.5rem;display:flex;align-items:center;justify-content:center;font-size:1.25rem;font-weight:700}ax-conversation-message .ax-message-content{display:block;padding:.5rem .75rem;font-size:.875rem;line-height:1.25rem;border-radius:1rem;width:fit-content;max-width:50%}ax-conversation-message .ax-message-content.ax-state-own{border-end-end-radius:0!important;background-color:rgb(var(--ax-comp-conversation-own-color));color:rgb(var(--ax-comp-conversation-own-color-fore));justify-content:flex-end}ax-conversation-message .ax-message-content.ax-state-own .ax-chat-message-status{color:rgb(var(--ax-comp-conversation-own-color-fore))}ax-conversation-message .ax-message-content.ax-state-other{border-end-start-radius:0!important;background-color:rgb(var(--ax-comp-conversation-other-color));color:rgb(var(--ax-comp-conversation-other-color-fore))}ax-conversation-message .ax-message-content.ax-state-other .ax-chat-message-status{color:rgb(var(--ax-comp-conversation-other-color-fore))}ax-conversation-message .ax-message-content .ax-chat-message-status{display:flex;justify-content:space-between;align-items:center;font-size:.75rem}ax-conversation-message .ax-message-content .ax-chat-message-status>div{display:flex;gap:.125rem;align-items:center}ax-conversation-message .ax-message-content .ax-chat-message-status .ax-message-status{color:rgb(var(--ax-comp-conversation-status-color))}ax-conversation-message .ax-message-content .ax-chat-message-status .ax-icon{font-weight:700;font-size:.875rem}ax-conversation-message .ax-message-content .ax-chat-message-status .ax-icon-error{color:rgb(var(--ax-sys-color-danger-500))}ax-conversation-message .ax-message-content ax-prefix,ax-conversation-message .ax-message-content ax-suffix{display:none}ax-conversation-message .ax-resend-button{border-radius:999rem}ax-conversation-message .ax-cursor-pointer{cursor:pointer}ax-conversation-message .ax-rounded{border-radius:.75rem}ax-conversation-message .ax-message-content p{padding:.75rem;color:rgba(var(--ax-sys-color-primary-text))}@media (min-width: 320px) and (max-width: 640px){ax-conversation-message ax-avatar{display:none!important}ax-conversation-message .ax-message-content{max-width:100%}}\n"] }]
454
+ args: [{ selector: 'ax-conversation-message', encapsulation: ViewEncapsulation.None, standalone: false, template: "@if (chatMessage().fromId) {\n <ax-avatar [size]=\"36\"></ax-avatar>\n}\n\n@if (isOwn && isReply()) {\n <i (click)=\"replyHandler(chatMessage().id)\" class=\"fa-solid fa-reply ax-cursor-pointer\"></i>\n}\n\n<div\n class=\"ax-message-content\"\n [class.ax-state-own]=\"!chatMessage().fromId\"\n [class.ax-state-other]=\"chatMessage().fromId\"\n>\n <ng-template [cdkPortalOutlet]=\"portal()\" (attached)=\"_handleAttached($event)\"></ng-template>\n\n <div class=\"ax-chat-message-status\">\n <div class=\"ax-message-prefix\"></div>\n <div>\n <div class=\"ax-message-suffix\"></div>\n <span>\n {{ chatMessage().sendTime | format: 'datetime' : 'HH:mm' | async }}\n </span>\n <span>\n @if (isOwn) {\n @if (chatMessage().deliverTime && chatMessage().sendTime) {\n <i class=\"ax-icon ax-icon-check ax-message-status\"></i>\n }\n @if (chatMessage().readTime && chatMessage().sendTime) {\n <i class=\"ax-icon ax-icon-dobble-check ax-message-status\"></i>\n }\n }\n </span>\n </div>\n </div>\n</div>\n\n@if (!chatMessage().sendTime) {\n <ax-button class=\"ax-resend-button ax-xs\" color=\"danger\" #b>\n <ax-icon class=\"ax-icon ax-icon-error\"></ax-icon>\n\n <ax-popover [target]=\"b\" placement=\"bottom-end\" #popover>\n <div class=\"ax-overlay-pane\">\n <ax-content> </ax-content>\n <ax-button-item-list>\n @if (chatMessage().onResendClick) {\n <ax-button-item text=\"Resend\" (onClick)=\"handleResendClick()\">\n <ax-icon class=\"ax-icon ax-icon-reload ax-bold\"></ax-icon>\n </ax-button-item>\n }\n @if (chatMessage().onDeleteClick) {\n <ax-button-item text=\"Delete\" color=\"danger\" (onClick)=\"handleDeleteClick()\">\n <ax-icon class=\"ax-icon ax-icon-clear ax-bold\"></ax-icon>\n </ax-button-item>\n }\n </ax-button-item-list>\n </div>\n </ax-popover>\n </ax-button>\n}\n", styles: [":root{--ax-message-other-color: rgba(var(--ax-color-primary-500));--ax-message-other-color-fore: rgba(var(--ax-color-primary-fore));--ax-message-status-color: rgba(var(--ax-color-primary-700));--ax-message-other-bar-color: rgba(var(--ax-color-primary-400));--ax-message-other-progress-color: rgba(var(--ax-color-primary-fore));--ax-message-own-color: rgba(var(--ax-color-primary-100));--ax-message-own-color-fore: rgba(var(--ax-color-primary-700));--ax-message-own-reply-color: rgba(var(--ax-color-primary-200));--ax-message-own-reply-color-fore: rgba(var(--ax-color-primary-800));--ax-message-other-reply-color: rgba(var(--ax-color-primary-700));--ax-message-other-reply-color-fore: white;--ax-message-border-color: rgba(var(--ax-color-primary-800));--ax-message-own-bar-color: rgba(var(--ax-color-primary-200));--ax-message-own-progress-color: rgba(var(--ax-color-primary-700))}ax-conversation-message{display:flex;align-items:flex-end;margin-bottom:.5rem}ax-conversation-message .ax-message-reply-container{border-left:.3rem solid var(--ax-message-border-color);border-radius:.75rem;padding:.75rem;margin-bottom:.25rem}ax-conversation-message .ax-message-reply-container .file{display:flex;align-items:center}ax-conversation-message .ax-message-reply-container .file i{margin-inline-end:.5rem}ax-conversation-message .ax-message-reply-container img,ax-conversation-message .ax-message-reply-container video{width:6rem}ax-conversation-message.ax-state-own{justify-content:flex-end}ax-conversation-message.ax-state-own .ax-conversation-controller button{background-color:var(--ax-message-own-color-fore);color:var(--ax-message-own-color)}ax-conversation-message.ax-state-own .ax-message-reply-container{background-color:var(--ax-message-own-reply-color);color:var(--ax-message-own-reply-color-fore)}ax-conversation-message.ax-state-other .ax-conversation-controller button{background-color:var(--ax-message-other-color-fore);color:var(--ax-message-other-color)}ax-conversation-message.ax-state-other .ax-message-reply-container{background-color:var(--ax-message-other-reply-color);color:var(--ax-message-other-reply-color-fore)}ax-conversation-message .ax-conversation-controller button{width:2.5rem;height:2.5rem;border-radius:999rem;display:flex;align-items:center;justify-content:center}ax-conversation-message .ax-conversation-controller button ax-loading-spinner{display:flex}ax-conversation-message .ax-conversation-controller button.ax-state-error{background-color:rgba(var(--ax-color-danger-500));color:rgba(var(--ax-color-danger-fore))}ax-conversation-message .ax-conversation-controller button>i{width:1.5rem;height:1.5rem;display:flex;align-items:center;justify-content:center;font-size:1.25rem;font-weight:700}ax-conversation-message .ax-message-content{display:block;padding:.5rem .75rem;font-size:.875rem;line-height:1.25rem;border-radius:1rem;width:fit-content;max-width:50%}ax-conversation-message .ax-message-content.ax-state-own{border-end-end-radius:0!important;background-color:var(--ax-message-own-color);color:var(--ax-message-own-color-fore);justify-content:flex-end}ax-conversation-message .ax-message-content.ax-state-own .ax-chat-message-status{color:var(--ax-message-own-color-fore)}ax-conversation-message .ax-message-content.ax-state-other{border-end-start-radius:0!important;background-color:var(--ax-message-other-color);color:var(--ax-message-other-color-fore)}ax-conversation-message .ax-message-content.ax-state-other .ax-chat-message-status{color:var(--ax-message-other-color-fore)}ax-conversation-message .ax-message-content .ax-chat-message-status{display:flex;justify-content:space-between;align-items:center;font-size:.75rem}ax-conversation-message .ax-message-content .ax-chat-message-status>div{display:flex;gap:.125rem;align-items:center}ax-conversation-message .ax-message-content .ax-chat-message-status .ax-message-status{color:var(--ax-message-status-color)}ax-conversation-message .ax-message-content .ax-chat-message-status .ax-icon{font-weight:700;font-size:.875rem}ax-conversation-message .ax-message-content .ax-chat-message-status .ax-icon-error{color:rgba(var(--ax-color-danger-500))}ax-conversation-message .ax-message-content ax-prefix,ax-conversation-message .ax-message-content ax-suffix{display:none}ax-conversation-message .ax-resend-button{border-radius:999rem}ax-conversation-message .ax-cursor-pointer{cursor:pointer}ax-conversation-message .ax-rounded{border-radius:.75rem}ax-conversation-message .ax-message-content p{padding:.75rem;color:rgba(var(--ax-color-primary-fore))}@media (min-width: 320px) and (max-width: 640px){ax-conversation-message ax-avatar{display:none!important}ax-conversation-message .ax-message-content{max-width:100%}}\n"] }]
432
455
  }], propDecorators: { __hostClass: [{
433
456
  type: HostBinding,
434
457
  args: ['class']
@@ -574,11 +597,11 @@ class AXConversationMessageAudioComponent extends AXConversationMessageBaseCompo
574
597
  }
575
598
  }
576
599
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXConversationMessageAudioComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
577
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.3", type: AXConversationMessageAudioComponent, isStandalone: false, selector: "ax-conversation-message-audio", usesInheritance: true, ngImport: i0, template: "<ax-prefix>\n <div class=\"ax-time-rate\">\n @switch (audioState()) {\n @case ('paused') {\n {{ currentTimeFormat() | format: 'time-duration' | async }}\n }\n @case ('playing') {\n {{ currentTimeFormat() | format: 'time-duration' | async }}\n }\n @default {\n {{ durationFormat() | format: 'time-duration' | async }}\n }\n }\n <ax-button text=\"{{ audioRate() }}X\" class=\"ax-audio-speed\" (click)=\"handleRateClick()\"></ax-button>\n </div>\n</ax-prefix>\n<div class=\"ax-conversation-controller\">\n @switch (audioState()) {\n @case ('playing') {\n <button (click)=\"handlePauseClick()\">\n <i class=\"ax-icon ax-icon-pause\"></i>\n </button>\n }\n @case ('paused') {\n <button (click)=\"handlePlayClick()\">\n <i class=\"ax-icon ax-icon-play\"></i>\n </button>\n }\n }\n</div>\n<ax-range-slider\n class=\"ax-modify-bgSlider\"\n (ngModelChange)=\"clickHandler($event)\"\n [max]=\"duration()\"\n [min]=\"0\"\n mode=\"single\"\n [ngModel]=\"currentTime()\"\n color=\"neutral\"\n>\n</ax-range-slider>\n", styles: ["ax-conversation-message-audio .ax-time-rate button{margin-inline-start:.3rem;background-color:rgba(var(--ax-sys-color-primary-text));color:rgba(var(--ax-sys-color-neutral-950));border-radius:.2rem;min-width:2rem}ax-conversation-message-audio .ax-modify-bgSlider{width:14rem;margin:0 1rem}.ax-time-rate{display:flex;align-items:center}.ax-audio-speed{--ax-comp-button-font-size: .6rem;--ax-comp-button-padding-x: .1rem;--ax-comp-button-padding-y: .1rem;--ax-comp-button-height: auto;--ax-comp-button-text-padding-x: .5rem;margin-inline-start:.5rem}\n"], dependencies: [{ kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i1$1.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "component", type: i2.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-sub-title, ax-placeholder, ax-overlay" }, { kind: "component", type: i4$2.AXRangeSliderComponent, selector: "ax-range-slider", inputs: ["disabled", "readonly", "orientation", "color", "values", "mode", "min", "max", "step", "snap", "tooltipMode", "snapMode", "hasStep", "hasSnap", "hasLable", "hasTooltip"], outputs: ["valuesChange"] }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }, { kind: "pipe", type: i7.AXFormatPipe, name: "format" }], encapsulation: i0.ViewEncapsulation.None }); }
600
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.3", type: AXConversationMessageAudioComponent, isStandalone: false, selector: "ax-conversation-message-audio", usesInheritance: true, ngImport: i0, template: "<ax-prefix>\n <div class=\"ax-time-rate\">\n @switch (audioState()) {\n @case ('paused') {\n {{ currentTimeFormat() | format: 'time-duration' | async }}\n }\n @case ('playing') {\n {{ currentTimeFormat() | format: 'time-duration' | async }}\n }\n @default {\n {{ durationFormat() | format: 'time-duration' | async }}\n }\n }\n <button class=\"ax-audio-speed\" (click)=\"handleRateClick()\">{{ audioRate() }}X</button>\n </div>\n</ax-prefix>\n<div class=\"ax-conversation-controller\">\n @switch (audioState()) {\n @case ('playing') {\n <button (click)=\"handlePauseClick()\">\n <i class=\"ax-icon ax-icon-pause\"></i>\n </button>\n }\n @case ('paused') {\n <button (click)=\"handlePlayClick()\">\n <i class=\"ax-icon ax-icon-play\"></i>\n </button>\n }\n }\n</div>\n<ax-range-slider\n class=\"ax-modify-bgSlider\"\n (ngModelChange)=\"clickHandler($event)\"\n [max]=\"duration()\"\n [min]=\"0\"\n mode=\"single\"\n [ngModel]=\"currentTime()\"\n color=\"neutral\"\n>\n</ax-range-slider>\n", styles: [".ax-time-rate button{margin-inline-start:.3rem;background-color:rgba(var(--ax-color-primary-fore));color:rgba(var(--ax-color-neutral-950));border-radius:.2rem;min-width:2rem}.ax-modify-bgSlider{width:14rem;margin:0 1rem}\n"], dependencies: [{ kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i2.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-sub-title, ax-placeholder, ax-overlay" }, { kind: "component", type: i3$1.AXRangeSliderComponent, selector: "ax-range-slider", inputs: ["disabled", "readonly", "orientation", "color", "values", "mode", "min", "max", "step", "snap", "tooltipMode", "snapMode", "hasStep", "hasSnap", "hasLable", "hasTooltip"], outputs: ["valuesChange"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "pipe", type: i5$2.AXFormatPipe, name: "format" }], encapsulation: i0.ViewEncapsulation.None }); }
578
601
  }
579
602
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXConversationMessageAudioComponent, decorators: [{
580
603
  type: Component,
581
- args: [{ selector: 'ax-conversation-message-audio', encapsulation: ViewEncapsulation.None, standalone: false, template: "<ax-prefix>\n <div class=\"ax-time-rate\">\n @switch (audioState()) {\n @case ('paused') {\n {{ currentTimeFormat() | format: 'time-duration' | async }}\n }\n @case ('playing') {\n {{ currentTimeFormat() | format: 'time-duration' | async }}\n }\n @default {\n {{ durationFormat() | format: 'time-duration' | async }}\n }\n }\n <ax-button text=\"{{ audioRate() }}X\" class=\"ax-audio-speed\" (click)=\"handleRateClick()\"></ax-button>\n </div>\n</ax-prefix>\n<div class=\"ax-conversation-controller\">\n @switch (audioState()) {\n @case ('playing') {\n <button (click)=\"handlePauseClick()\">\n <i class=\"ax-icon ax-icon-pause\"></i>\n </button>\n }\n @case ('paused') {\n <button (click)=\"handlePlayClick()\">\n <i class=\"ax-icon ax-icon-play\"></i>\n </button>\n }\n }\n</div>\n<ax-range-slider\n class=\"ax-modify-bgSlider\"\n (ngModelChange)=\"clickHandler($event)\"\n [max]=\"duration()\"\n [min]=\"0\"\n mode=\"single\"\n [ngModel]=\"currentTime()\"\n color=\"neutral\"\n>\n</ax-range-slider>\n", styles: ["ax-conversation-message-audio .ax-time-rate button{margin-inline-start:.3rem;background-color:rgba(var(--ax-sys-color-primary-text));color:rgba(var(--ax-sys-color-neutral-950));border-radius:.2rem;min-width:2rem}ax-conversation-message-audio .ax-modify-bgSlider{width:14rem;margin:0 1rem}.ax-time-rate{display:flex;align-items:center}.ax-audio-speed{--ax-comp-button-font-size: .6rem;--ax-comp-button-padding-x: .1rem;--ax-comp-button-padding-y: .1rem;--ax-comp-button-height: auto;--ax-comp-button-text-padding-x: .5rem;margin-inline-start:.5rem}\n"] }]
604
+ args: [{ selector: 'ax-conversation-message-audio', encapsulation: ViewEncapsulation.None, standalone: false, template: "<ax-prefix>\n <div class=\"ax-time-rate\">\n @switch (audioState()) {\n @case ('paused') {\n {{ currentTimeFormat() | format: 'time-duration' | async }}\n }\n @case ('playing') {\n {{ currentTimeFormat() | format: 'time-duration' | async }}\n }\n @default {\n {{ durationFormat() | format: 'time-duration' | async }}\n }\n }\n <button class=\"ax-audio-speed\" (click)=\"handleRateClick()\">{{ audioRate() }}X</button>\n </div>\n</ax-prefix>\n<div class=\"ax-conversation-controller\">\n @switch (audioState()) {\n @case ('playing') {\n <button (click)=\"handlePauseClick()\">\n <i class=\"ax-icon ax-icon-pause\"></i>\n </button>\n }\n @case ('paused') {\n <button (click)=\"handlePlayClick()\">\n <i class=\"ax-icon ax-icon-play\"></i>\n </button>\n }\n }\n</div>\n<ax-range-slider\n class=\"ax-modify-bgSlider\"\n (ngModelChange)=\"clickHandler($event)\"\n [max]=\"duration()\"\n [min]=\"0\"\n mode=\"single\"\n [ngModel]=\"currentTime()\"\n color=\"neutral\"\n>\n</ax-range-slider>\n", styles: [".ax-time-rate button{margin-inline-start:.3rem;background-color:rgba(var(--ax-color-primary-fore));color:rgba(var(--ax-color-neutral-950));border-radius:.2rem;min-width:2rem}.ax-modify-bgSlider{width:14rem;margin:0 1rem}\n"] }]
582
605
  }], ctorParameters: () => [] });
583
606
 
584
607
  /**
@@ -592,6 +615,8 @@ class AXConversationViewComponent extends MXBaseComponent {
592
615
  /** @ignore */
593
616
  this.conversationService = inject(AXConversationService);
594
617
  this.onScrollEnd = output();
618
+ this.height = input('30vh');
619
+ this.isReply = input(true);
595
620
  /**
596
621
  * Emits an event when an action is performed within the conversation view.
597
622
  *
@@ -609,11 +634,11 @@ class AXConversationViewComponent extends MXBaseComponent {
609
634
  this.conversationService.chats.update((prev) => [...prev, item]);
610
635
  }
611
636
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXConversationViewComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
612
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.3", type: AXConversationViewComponent, isStandalone: false, selector: "ax-conversation-view", outputs: { onScrollEnd: "onScrollEnd", onAction: "onAction" }, usesInheritance: true, ngImport: i0, template: "<div axVirtualScrollingContianer (ScrollEnd)=\"callForUpdate()\" height=\"30vh\">\n @for (item of conversationService.chats(); track item.id) {\n <ax-conversation-message axVirtualScrollingItem [chatMessage]=\"item\"></ax-conversation-message>\n }\n</div>\n", styles: ["ax-conversation-view{background-color:rgb(var(--ax-sys-surface-bg-color));display:block}ax-conversation-view .ax-conversation-container{overflow-y:auto;height:100%}\n"], dependencies: [{ kind: "directive", type: i1$2.AXVirtualScrollingContianerDirective, selector: "[axVirtualScrollingContianer]", inputs: ["height"], outputs: ["ScrollEnd"] }, { kind: "directive", type: i1$2.AXVirtualScrollingItemDirective, selector: "[axVirtualScrollingItem]" }, { kind: "component", type: AXConversationMessageComponent, selector: "ax-conversation-message", inputs: ["chatMessage"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
637
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.3", type: AXConversationViewComponent, isStandalone: false, selector: "ax-conversation-view", inputs: { height: { classPropertyName: "height", publicName: "height", isSignal: true, isRequired: false, transformFunction: null }, isReply: { classPropertyName: "isReply", publicName: "isReply", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onScrollEnd: "onScrollEnd", onAction: "onAction" }, usesInheritance: true, ngImport: i0, template: "<div axVirtualScrollingContainer (ScrollEnd)=\"callForUpdate()\" [height]=\"height()\">\n @for (item of conversationService.chats(); track item.id) {\n <ax-conversation-message\n [isReply]=\"isReply()\"\n axVirtualScrollingItem\n [chatMessage]=\"item\"\n ></ax-conversation-message>\n }\n</div>\n", styles: ["ax-conversation-view{display:block}ax-conversation-view .ax-conversation-container{overflow-y:auto;height:100%}\n"], dependencies: [{ kind: "directive", type: i1$2.AXVirtualScrollingContainerDirective, selector: "[axVirtualScrollingContainer]", inputs: ["height"], outputs: ["ScrollEnd"] }, { kind: "directive", type: i1$2.AXVirtualScrollingItemDirective, selector: "[axVirtualScrollingItem]" }, { kind: "component", type: AXConversationMessageComponent, selector: "ax-conversation-message", inputs: ["isReply", "chatMessage"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
613
638
  }
614
639
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXConversationViewComponent, decorators: [{
615
640
  type: Component,
616
- args: [{ selector: 'ax-conversation-view', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, standalone: false, template: "<div axVirtualScrollingContianer (ScrollEnd)=\"callForUpdate()\" height=\"30vh\">\n @for (item of conversationService.chats(); track item.id) {\n <ax-conversation-message axVirtualScrollingItem [chatMessage]=\"item\"></ax-conversation-message>\n }\n</div>\n", styles: ["ax-conversation-view{background-color:rgb(var(--ax-sys-surface-bg-color));display:block}ax-conversation-view .ax-conversation-container{overflow-y:auto;height:100%}\n"] }]
641
+ args: [{ selector: 'ax-conversation-view', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, standalone: false, template: "<div axVirtualScrollingContainer (ScrollEnd)=\"callForUpdate()\" [height]=\"height()\">\n @for (item of conversationService.chats(); track item.id) {\n <ax-conversation-message\n [isReply]=\"isReply()\"\n axVirtualScrollingItem\n [chatMessage]=\"item\"\n ></ax-conversation-message>\n }\n</div>\n", styles: ["ax-conversation-view{display:block}ax-conversation-view .ax-conversation-container{overflow-y:auto;height:100%}\n"] }]
617
642
  }] });
618
643
 
619
644
  /* eslint-disable @typescript-eslint/no-unused-vars */
@@ -678,11 +703,11 @@ class AXConversationFileMessageComponent extends AXConversationMessageBaseCompon
678
703
  this.parent.onAction.emit({ component: this, data: this.message, isUserInteraction: true });
679
704
  }
680
705
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXConversationFileMessageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
681
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.3", type: AXConversationFileMessageComponent, isStandalone: false, selector: "ax-conversation-message-file", usesInheritance: true, ngImport: i0, template: "<ax-prefix>\n {{ fileSize() | format: 'filesize' | async }}\n</ax-prefix>\n<div class=\"ax-file-container\">\n <div class=\"ax-conversation-controller\">\n @switch (fileState()) {\n @case ('ready') {\n <button (click)=\"handleDownloadFile()\">\n <i class=\"ax-icon ax-icon-download\"></i>\n </button>\n }\n\n @default {\n <button (click)=\"handleCancelLoading()\">\n <ax-loading-spinner\n [size]=\"24\"\n [stroke]=\"2\"\n [color]=\"message.fromId ? 'white' : 'warning'\"\n ></ax-loading-spinner>\n </button>\n }\n }\n </div>\n\n <div class=\"ax-file-name\">{{ fileName() }}</div>\n</div>\n", styles: ["ax-conversation-message-file .ax-file-container{display:flex;align-items:center;justify-content:center;gap:.5rem}ax-conversation-message-file .ax-file-container .ax-file-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}\n"], dependencies: [{ kind: "component", type: i2.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-sub-title, ax-placeholder, ax-overlay" }, { kind: "component", type: i2$1.AXLoadingSpinnerComponent, selector: "ax-loading-spinner", inputs: ["text", "color", "size", "stroke"] }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }, { kind: "pipe", type: i7.AXFormatPipe, name: "format" }], encapsulation: i0.ViewEncapsulation.None }); }
706
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.3", type: AXConversationFileMessageComponent, isStandalone: false, selector: "ax-conversation-message-file", usesInheritance: true, ngImport: i0, template: "<ax-prefix>\n {{ fileSize() | format: 'filesize' | async }}\n</ax-prefix>\n<div class=\"ax-file-container\">\n <div class=\"ax-conversation-controller\">\n @switch (fileState()) {\n @case ('ready') {\n <button (click)=\"handleDownloadFile()\">\n <i class=\"ax-icon ax-icon-download\"></i>\n </button>\n }\n\n @default {\n <button (click)=\"handleCancelLoading()\">\n <ax-loading-spinner\n [size]=\"24\"\n [stroke]=\"2\"\n [color]=\"message.fromId ? 'var(--ax-other-color)' : 'var(--ax-own-color)'\"\n ></ax-loading-spinner>\n </button>\n }\n }\n </div>\n\n <div class=\"ax-file-name\">{{ fileName() }}</div>\n</div>\n", styles: ["ax-conversation-message-file .ax-file-container{display:flex;align-items:center;justify-content:center;gap:.5rem}ax-conversation-message-file .ax-file-container .ax-file-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}\n"], dependencies: [{ kind: "component", type: i2.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-sub-title, ax-placeholder, ax-overlay" }, { kind: "component", type: i5.AXLoadingSpinnerComponent, selector: "ax-loading-spinner", inputs: ["text", "color", "size", "stroke"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "pipe", type: i5$2.AXFormatPipe, name: "format" }], encapsulation: i0.ViewEncapsulation.None }); }
682
707
  }
683
708
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXConversationFileMessageComponent, decorators: [{
684
709
  type: Component,
685
- args: [{ selector: 'ax-conversation-message-file', encapsulation: ViewEncapsulation.None, standalone: false, template: "<ax-prefix>\n {{ fileSize() | format: 'filesize' | async }}\n</ax-prefix>\n<div class=\"ax-file-container\">\n <div class=\"ax-conversation-controller\">\n @switch (fileState()) {\n @case ('ready') {\n <button (click)=\"handleDownloadFile()\">\n <i class=\"ax-icon ax-icon-download\"></i>\n </button>\n }\n\n @default {\n <button (click)=\"handleCancelLoading()\">\n <ax-loading-spinner\n [size]=\"24\"\n [stroke]=\"2\"\n [color]=\"message.fromId ? 'white' : 'warning'\"\n ></ax-loading-spinner>\n </button>\n }\n }\n </div>\n\n <div class=\"ax-file-name\">{{ fileName() }}</div>\n</div>\n", styles: ["ax-conversation-message-file .ax-file-container{display:flex;align-items:center;justify-content:center;gap:.5rem}ax-conversation-message-file .ax-file-container .ax-file-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}\n"] }]
710
+ args: [{ selector: 'ax-conversation-message-file', encapsulation: ViewEncapsulation.None, standalone: false, template: "<ax-prefix>\n {{ fileSize() | format: 'filesize' | async }}\n</ax-prefix>\n<div class=\"ax-file-container\">\n <div class=\"ax-conversation-controller\">\n @switch (fileState()) {\n @case ('ready') {\n <button (click)=\"handleDownloadFile()\">\n <i class=\"ax-icon ax-icon-download\"></i>\n </button>\n }\n\n @default {\n <button (click)=\"handleCancelLoading()\">\n <ax-loading-spinner\n [size]=\"24\"\n [stroke]=\"2\"\n [color]=\"message.fromId ? 'var(--ax-other-color)' : 'var(--ax-own-color)'\"\n ></ax-loading-spinner>\n </button>\n }\n }\n </div>\n\n <div class=\"ax-file-name\">{{ fileName() }}</div>\n</div>\n", styles: ["ax-conversation-message-file .ax-file-container{display:flex;align-items:center;justify-content:center;gap:.5rem}ax-conversation-message-file .ax-file-container .ax-file-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}\n"] }]
686
711
  }], ctorParameters: () => [] });
687
712
 
688
713
  /**
@@ -700,11 +725,11 @@ class ConversationMessageImagePopupComponent {
700
725
  });
701
726
  }
702
727
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: ConversationMessageImagePopupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
703
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.3", type: ConversationMessageImagePopupComponent, isStandalone: false, selector: "ax-conversation-message-image-popup", ngImport: i0, template: ` <div class="ax-image-popup-container"><img class="ax-image-popup" [src]="url" alt="" /></div>`, isInline: true, styles: ["ax-conversation-message-image-popup .ax-image-popup-container{display:flex;justify-content:center;align-items:center}ax-conversation-message-image-popup .ax-image-popup{width:100%;height:auto;object-fit:cover}\n"], encapsulation: i0.ViewEncapsulation.None }); }
728
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.3", type: ConversationMessageImagePopupComponent, isStandalone: false, selector: "ax-conversation-message-image-popup", ngImport: i0, template: ` <div class="ax-image-popup-container"><img class="ax-image-popup" [src]="url" alt="" /></div>`, isInline: true, styles: [".ax-image-popup-container{display:flex;justify-content:center;align-items:center}.ax-image-popup{width:100%;height:auto;object-fit:cover}\n"] }); }
704
729
  }
705
730
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: ConversationMessageImagePopupComponent, decorators: [{
706
731
  type: Component,
707
- args: [{ selector: 'ax-conversation-message-image-popup', template: ` <div class="ax-image-popup-container"><img class="ax-image-popup" [src]="url" alt="" /></div>`, standalone: false, encapsulation: ViewEncapsulation.None, styles: ["ax-conversation-message-image-popup .ax-image-popup-container{display:flex;justify-content:center;align-items:center}ax-conversation-message-image-popup .ax-image-popup{width:100%;height:auto;object-fit:cover}\n"] }]
732
+ args: [{ selector: 'ax-conversation-message-image-popup', template: ` <div class="ax-image-popup-container"><img class="ax-image-popup" [src]="url" alt="" /></div>`, standalone: false, styles: [".ax-image-popup-container{display:flex;justify-content:center;align-items:center}.ax-image-popup{width:100%;height:auto;object-fit:cover}\n"] }]
708
733
  }], ctorParameters: () => [] });
709
734
 
710
735
  /**
@@ -864,7 +889,7 @@ class AXConversationTextMessageComponent extends AXConversationMessageBaseCompon
864
889
  }
865
890
 
866
891
  <div class="ax-text-message" [innerHtml]="_text()"></div>
867
- `, isInline: true, styles: [".ax-text-message{word-break:break-all;white-space:break-spaces}\n"], encapsulation: i0.ViewEncapsulation.None }); }
892
+ `, isInline: true, styles: [".ax-text-message{word-break:normal;white-space:break-spaces}\n"], encapsulation: i0.ViewEncapsulation.None }); }
868
893
  }
869
894
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXConversationTextMessageComponent, decorators: [{
870
895
  type: Component,
@@ -895,7 +920,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImpor
895
920
  }
896
921
 
897
922
  <div class="ax-text-message" [innerHtml]="_text()"></div>
898
- `, encapsulation: ViewEncapsulation.None, inputs: ['message'], standalone: false, styles: [".ax-text-message{word-break:break-all;white-space:break-spaces}\n"] }]
923
+ `, encapsulation: ViewEncapsulation.None, inputs: ['message'], standalone: false, styles: [".ax-text-message{word-break:normal;white-space:break-spaces}\n"] }]
899
924
  }] });
900
925
 
901
926
  /**
@@ -1092,11 +1117,11 @@ class AXConversationVoiceMessageComponent extends AXConversationMessageBaseCompo
1092
1117
  return `${this.message.fromId ? 'ax-state-other' : 'ax-state-own'}`;
1093
1118
  }
1094
1119
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXConversationVoiceMessageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1095
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.3", type: AXConversationVoiceMessageComponent, isStandalone: false, selector: "ax-conversation-message-audio", inputs: { message: "message" }, host: { properties: { "class": "this.__hostClass" } }, viewQueries: [{ propertyName: "audio", first: true, predicate: ["a"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<ax-prefix>\n @switch (audioState()) {\n @case ('paused') {\n {{ currentTime() | format: 'time-duration' | async }}\n }\n @case ('playing') {\n {{ currentTime() | format: 'time-duration' | async }}\n }\n @default {\n {{ duration() | format: 'time-duration' | async }}\n }\n }\n <button class=\"ax-audio-speed\" (click)=\"handleRateClick()\"></button>\n</ax-prefix>\n<div class=\"ax-conversation-controller\">\n @switch (audioState()) {\n @case ('playing') {\n <button (click)=\"handlePauseClick()\">\n <i class=\"ax-icon ax-icon-pause\"></i>\n </button>\n }\n\n @case ('ready') {\n <button (click)=\"handlePlayClick()\">\n <i class=\"ax-icon ax-icon-play\"></i>\n </button>\n }\n\n @case ('paused') {\n <button (click)=\"handlePlayClick()\">\n <i class=\"ax-icon ax-icon-play\"></i>\n </button>\n }\n\n @case ('error') {\n <button class=\"ax-state-error\" (click)=\"handleReloadClick()\">\n <i class=\"ax-icon ax-icon-reload\"></i>\n </button>\n }\n\n @default {\n <button (click)=\"handleCancelLoading()\">\n <ax-loading-spinner\n [size]=\"24\"\n [stroke]=\"2\"\n [color]=\"message.fromId ? 'white' : 'warning'\"\n ></ax-loading-spinner>\n </button>\n }\n }\n</div>\n<ax-audio-wave #a [config]=\"config\" (onStatusChanged)=\"handleOnStatusChanged($event)\"></ax-audio-wave>\n<ax-suffix>\n <div class=\"ax-audio-rate-button\" [class.ax-state-own]=\"!message?.fromId\" (click)=\"handleRateClick()\">\n {{ selectedRate() }}X\n </div>\n</ax-suffix>\n", styles: ["ax-conversation-message-audio{display:flex;align-items:center;justify-content:space-between;gap:.5rem;min-width:18rem;max-width:100%}ax-conversation-message-audio .ax-audio-wave{flex:1}ax-conversation-message-audio .ax-audio-rate-button{background-color:var(--ax-message-other-color-fore);color:var(--ax-message-other-color);border-radius:.5rem;padding:0 .5rem;font-weight:700;margin-inline-end:.5rem;cursor:pointer;-webkit-user-select:none;user-select:none}ax-conversation-message-audio .ax-audio-rate-button.ax-state-own{background-color:var(--ax-message-own-color-fore);color:var(--ax-message-own-color)}ax-conversation-message-audio html[dir=rtl] ax-conversation-message-audio{flex-direction:row-reverse}\n"], dependencies: [{ kind: "component", type: i2.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-sub-title, ax-placeholder, ax-overlay" }, { kind: "component", type: i2$2.AXAudioWaveComponent, selector: "ax-audio-wave", inputs: ["config"], outputs: ["onStatusChanged"] }, { kind: "component", type: i2$1.AXLoadingSpinnerComponent, selector: "ax-loading-spinner", inputs: ["text", "color", "size", "stroke"] }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }, { kind: "pipe", type: i7.AXFormatPipe, name: "format" }], encapsulation: i0.ViewEncapsulation.None }); }
1120
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.3", type: AXConversationVoiceMessageComponent, isStandalone: false, selector: "ax-conversation-message-audio", inputs: { message: "message" }, host: { properties: { "class": "this.__hostClass" } }, viewQueries: [{ propertyName: "audio", first: true, predicate: ["a"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<ax-prefix>\n @switch (audioState()) {\n @case ('paused') {\n {{ currentTime() | format: 'time-duration' | async }}\n }\n @case ('playing') {\n {{ currentTime() | format: 'time-duration' | async }}\n }\n @default {\n {{ duration() | format: 'time-duration' | async }}\n }\n }\n <button class=\"ax-audio-speed\" (click)=\"handleRateClick()\"></button>\n</ax-prefix>\n<div class=\"ax-conversation-controller\">\n @switch (audioState()) {\n @case ('playing') {\n <button (click)=\"handlePauseClick()\">\n <i class=\"ax-icon ax-icon-pause\"></i>\n </button>\n }\n\n @case ('ready') {\n <button (click)=\"handlePlayClick()\">\n <i class=\"ax-icon ax-icon-play\"></i>\n </button>\n }\n\n @case ('paused') {\n <button (click)=\"handlePlayClick()\">\n <i class=\"ax-icon ax-icon-play\"></i>\n </button>\n }\n\n @case ('error') {\n <button class=\"ax-state-error\" (click)=\"handleReloadClick()\">\n <i class=\"ax-icon ax-icon-reload\"></i>\n </button>\n }\n\n @default {\n <button (click)=\"handleCancelLoading()\">\n <ax-loading-spinner\n [size]=\"24\"\n [stroke]=\"2\"\n [color]=\"message.fromId ? 'var(--ax-other-color)' : 'var(--ax-own-color)'\"\n ></ax-loading-spinner>\n </button>\n }\n }\n</div>\n<ax-audio-wave #a [config]=\"config\" (onStatusChanged)=\"handleOnStatusChanged($event)\"></ax-audio-wave>\n<ax-suffix>\n <div class=\"ax-audio-rate-button\" [class.ax-state-own]=\"!message?.fromId\" (click)=\"handleRateClick()\">{{ selectedRate() }}X</div>\n</ax-suffix>\n", styles: ["ax-conversation-message-audio{display:flex;align-items:center;justify-content:space-between;gap:.5rem;min-width:18rem;max-width:100%}ax-conversation-message-audio .ax-audio-wave{flex:1}.ax-audio-rate-button{background-color:var(--ax-message-other-color-fore);color:var(--ax-message-other-color);border-radius:.5rem;padding:0 .5rem;font-weight:700;margin-inline-end:.5rem;cursor:pointer;-webkit-user-select:none;user-select:none}.ax-audio-rate-button.ax-state-own{background-color:var(--ax-message-own-color-fore);color:var(--ax-message-own-color)}html[dir=rtl] ax-conversation-message-audio{flex-direction:row-reverse}\n"], dependencies: [{ kind: "component", type: i2.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-sub-title, ax-placeholder, ax-overlay" }, { kind: "component", type: i2$1.AXAudioWaveComponent, selector: "ax-audio-wave", inputs: ["config"], outputs: ["onStatusChanged"] }, { kind: "component", type: i5.AXLoadingSpinnerComponent, selector: "ax-loading-spinner", inputs: ["text", "color", "size", "stroke"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "pipe", type: i5$2.AXFormatPipe, name: "format" }], encapsulation: i0.ViewEncapsulation.None }); }
1096
1121
  }
1097
1122
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXConversationVoiceMessageComponent, decorators: [{
1098
1123
  type: Component,
1099
- args: [{ selector: 'ax-conversation-message-audio', encapsulation: ViewEncapsulation.None, inputs: ['message'], standalone: false, template: "<ax-prefix>\n @switch (audioState()) {\n @case ('paused') {\n {{ currentTime() | format: 'time-duration' | async }}\n }\n @case ('playing') {\n {{ currentTime() | format: 'time-duration' | async }}\n }\n @default {\n {{ duration() | format: 'time-duration' | async }}\n }\n }\n <button class=\"ax-audio-speed\" (click)=\"handleRateClick()\"></button>\n</ax-prefix>\n<div class=\"ax-conversation-controller\">\n @switch (audioState()) {\n @case ('playing') {\n <button (click)=\"handlePauseClick()\">\n <i class=\"ax-icon ax-icon-pause\"></i>\n </button>\n }\n\n @case ('ready') {\n <button (click)=\"handlePlayClick()\">\n <i class=\"ax-icon ax-icon-play\"></i>\n </button>\n }\n\n @case ('paused') {\n <button (click)=\"handlePlayClick()\">\n <i class=\"ax-icon ax-icon-play\"></i>\n </button>\n }\n\n @case ('error') {\n <button class=\"ax-state-error\" (click)=\"handleReloadClick()\">\n <i class=\"ax-icon ax-icon-reload\"></i>\n </button>\n }\n\n @default {\n <button (click)=\"handleCancelLoading()\">\n <ax-loading-spinner\n [size]=\"24\"\n [stroke]=\"2\"\n [color]=\"message.fromId ? 'white' : 'warning'\"\n ></ax-loading-spinner>\n </button>\n }\n }\n</div>\n<ax-audio-wave #a [config]=\"config\" (onStatusChanged)=\"handleOnStatusChanged($event)\"></ax-audio-wave>\n<ax-suffix>\n <div class=\"ax-audio-rate-button\" [class.ax-state-own]=\"!message?.fromId\" (click)=\"handleRateClick()\">\n {{ selectedRate() }}X\n </div>\n</ax-suffix>\n", styles: ["ax-conversation-message-audio{display:flex;align-items:center;justify-content:space-between;gap:.5rem;min-width:18rem;max-width:100%}ax-conversation-message-audio .ax-audio-wave{flex:1}ax-conversation-message-audio .ax-audio-rate-button{background-color:var(--ax-message-other-color-fore);color:var(--ax-message-other-color);border-radius:.5rem;padding:0 .5rem;font-weight:700;margin-inline-end:.5rem;cursor:pointer;-webkit-user-select:none;user-select:none}ax-conversation-message-audio .ax-audio-rate-button.ax-state-own{background-color:var(--ax-message-own-color-fore);color:var(--ax-message-own-color)}ax-conversation-message-audio html[dir=rtl] ax-conversation-message-audio{flex-direction:row-reverse}\n"] }]
1124
+ args: [{ selector: 'ax-conversation-message-audio', encapsulation: ViewEncapsulation.None, inputs: ['message'], standalone: false, template: "<ax-prefix>\n @switch (audioState()) {\n @case ('paused') {\n {{ currentTime() | format: 'time-duration' | async }}\n }\n @case ('playing') {\n {{ currentTime() | format: 'time-duration' | async }}\n }\n @default {\n {{ duration() | format: 'time-duration' | async }}\n }\n }\n <button class=\"ax-audio-speed\" (click)=\"handleRateClick()\"></button>\n</ax-prefix>\n<div class=\"ax-conversation-controller\">\n @switch (audioState()) {\n @case ('playing') {\n <button (click)=\"handlePauseClick()\">\n <i class=\"ax-icon ax-icon-pause\"></i>\n </button>\n }\n\n @case ('ready') {\n <button (click)=\"handlePlayClick()\">\n <i class=\"ax-icon ax-icon-play\"></i>\n </button>\n }\n\n @case ('paused') {\n <button (click)=\"handlePlayClick()\">\n <i class=\"ax-icon ax-icon-play\"></i>\n </button>\n }\n\n @case ('error') {\n <button class=\"ax-state-error\" (click)=\"handleReloadClick()\">\n <i class=\"ax-icon ax-icon-reload\"></i>\n </button>\n }\n\n @default {\n <button (click)=\"handleCancelLoading()\">\n <ax-loading-spinner\n [size]=\"24\"\n [stroke]=\"2\"\n [color]=\"message.fromId ? 'var(--ax-other-color)' : 'var(--ax-own-color)'\"\n ></ax-loading-spinner>\n </button>\n }\n }\n</div>\n<ax-audio-wave #a [config]=\"config\" (onStatusChanged)=\"handleOnStatusChanged($event)\"></ax-audio-wave>\n<ax-suffix>\n <div class=\"ax-audio-rate-button\" [class.ax-state-own]=\"!message?.fromId\" (click)=\"handleRateClick()\">{{ selectedRate() }}X</div>\n</ax-suffix>\n", styles: ["ax-conversation-message-audio{display:flex;align-items:center;justify-content:space-between;gap:.5rem;min-width:18rem;max-width:100%}ax-conversation-message-audio .ax-audio-wave{flex:1}.ax-audio-rate-button{background-color:var(--ax-message-other-color-fore);color:var(--ax-message-other-color);border-radius:.5rem;padding:0 .5rem;font-weight:700;margin-inline-end:.5rem;cursor:pointer;-webkit-user-select:none;user-select:none}.ax-audio-rate-button.ax-state-own{background-color:var(--ax-message-own-color-fore);color:var(--ax-message-own-color)}html[dir=rtl] ax-conversation-message-audio{flex-direction:row-reverse}\n"] }]
1100
1125
  }], ctorParameters: () => [], propDecorators: { audio: [{
1101
1126
  type: ViewChild,
1102
1127
  args: ['a']