@acorex/components 22.1.7 → 22.2.0-next.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (324) hide show
  1. package/emoji/README.md +3 -0
  2. package/emojipicker/README.md +3 -0
  3. package/fesm2022/acorex-components-accordion.mjs +12 -12
  4. package/fesm2022/acorex-components-accordion.mjs.map +1 -1
  5. package/fesm2022/acorex-components-action-sheet.mjs +15 -14
  6. package/fesm2022/acorex-components-action-sheet.mjs.map +1 -1
  7. package/fesm2022/acorex-components-alert.mjs +7 -7
  8. package/fesm2022/acorex-components-alert.mjs.map +1 -1
  9. package/fesm2022/acorex-components-aspect-ratio.mjs +3 -3
  10. package/fesm2022/acorex-components-aspect-ratio.mjs.map +1 -1
  11. package/fesm2022/acorex-components-audio-wave.mjs +32 -11
  12. package/fesm2022/acorex-components-audio-wave.mjs.map +1 -1
  13. package/fesm2022/acorex-components-autocomplete.mjs +9 -8
  14. package/fesm2022/acorex-components-autocomplete.mjs.map +1 -1
  15. package/fesm2022/acorex-components-avatar.mjs +10 -10
  16. package/fesm2022/acorex-components-avatar.mjs.map +1 -1
  17. package/fesm2022/acorex-components-badge.mjs +7 -7
  18. package/fesm2022/acorex-components-badge.mjs.map +1 -1
  19. package/fesm2022/acorex-components-bottom-navigation.mjs +10 -10
  20. package/fesm2022/acorex-components-bottom-navigation.mjs.map +1 -1
  21. package/fesm2022/acorex-components-breadcrumbs.mjs +10 -10
  22. package/fesm2022/acorex-components-breadcrumbs.mjs.map +1 -1
  23. package/fesm2022/acorex-components-bubble.mjs +71 -0
  24. package/fesm2022/acorex-components-bubble.mjs.map +1 -0
  25. package/fesm2022/acorex-components-button-group.mjs +22 -15
  26. package/fesm2022/acorex-components-button-group.mjs.map +1 -1
  27. package/fesm2022/acorex-components-button.mjs +366 -56
  28. package/fesm2022/acorex-components-button.mjs.map +1 -1
  29. package/fesm2022/acorex-components-calendar.mjs +40 -37
  30. package/fesm2022/acorex-components-calendar.mjs.map +1 -1
  31. package/fesm2022/acorex-components-check-box.mjs +7 -7
  32. package/fesm2022/acorex-components-check-box.mjs.map +1 -1
  33. package/fesm2022/acorex-components-chips.mjs +7 -7
  34. package/fesm2022/acorex-components-chips.mjs.map +1 -1
  35. package/fesm2022/acorex-components-circular-progress.mjs +7 -7
  36. package/fesm2022/acorex-components-circular-progress.mjs.map +1 -1
  37. package/fesm2022/acorex-components-code-editor.mjs +44 -19
  38. package/fesm2022/acorex-components-code-editor.mjs.map +1 -1
  39. package/fesm2022/acorex-components-color-box.mjs +7 -7
  40. package/fesm2022/acorex-components-color-box.mjs.map +1 -1
  41. package/fesm2022/acorex-components-color-palette.mjs +28 -28
  42. package/fesm2022/acorex-components-color-palette.mjs.map +1 -1
  43. package/fesm2022/acorex-components-combo-box.mjs +188 -31
  44. package/fesm2022/acorex-components-combo-box.mjs.map +1 -1
  45. package/fesm2022/acorex-components-command.mjs +11 -7
  46. package/fesm2022/acorex-components-command.mjs.map +1 -1
  47. package/fesm2022/acorex-components-comment.mjs +28 -28
  48. package/fesm2022/acorex-components-comment.mjs.map +1 -1
  49. package/fesm2022/acorex-components-conversation-acorex-components-conversation-C1Lf9tAe.mjs +19538 -0
  50. package/fesm2022/acorex-components-conversation-acorex-components-conversation-C1Lf9tAe.mjs.map +1 -0
  51. package/fesm2022/acorex-components-conversation-composer-action-choice-dialog.component-F5fLD_SK.mjs +50 -0
  52. package/fesm2022/acorex-components-conversation-composer-action-choice-dialog.component-F5fLD_SK.mjs.map +1 -0
  53. package/fesm2022/acorex-components-conversation-emoji-categories-C7Gm95V0.mjs.map +1 -1
  54. package/fesm2022/acorex-components-conversation-image-picker-editor-dialog.component-Bk3ixvt2.mjs +87 -0
  55. package/fesm2022/acorex-components-conversation-image-picker-editor-dialog.component-Bk3ixvt2.mjs.map +1 -0
  56. package/fesm2022/{acorex-components-conversation-picker-rename-file-dialog.component-DuRLMEa3.mjs → acorex-components-conversation-picker-rename-file-dialog.component-DyOC1WEb.mjs} +5 -5
  57. package/fesm2022/{acorex-components-conversation-picker-rename-file-dialog.component-DuRLMEa3.mjs.map → acorex-components-conversation-picker-rename-file-dialog.component-DyOC1WEb.mjs.map} +1 -1
  58. package/fesm2022/acorex-components-conversation.mjs +1 -1
  59. package/fesm2022/acorex-components-cron-job.mjs +47 -47
  60. package/fesm2022/acorex-components-cron-job.mjs.map +1 -1
  61. package/fesm2022/acorex-components-data-list.mjs +3 -3
  62. package/fesm2022/acorex-components-data-list.mjs.map +1 -1
  63. package/fesm2022/acorex-components-data-pager.mjs +182 -184
  64. package/fesm2022/acorex-components-data-pager.mjs.map +1 -1
  65. package/fesm2022/acorex-components-data-table.mjs +809 -168
  66. package/fesm2022/acorex-components-data-table.mjs.map +1 -1
  67. package/fesm2022/acorex-components-datetime-box.mjs +7 -7
  68. package/fesm2022/acorex-components-datetime-box.mjs.map +1 -1
  69. package/fesm2022/acorex-components-datetime-input.mjs +7 -7
  70. package/fesm2022/acorex-components-datetime-input.mjs.map +1 -1
  71. package/fesm2022/acorex-components-datetime-picker.mjs +8 -8
  72. package/fesm2022/acorex-components-datetime-picker.mjs.map +1 -1
  73. package/fesm2022/acorex-components-decorators.mjs +59 -117
  74. package/fesm2022/acorex-components-decorators.mjs.map +1 -1
  75. package/fesm2022/acorex-components-dialog.mjs +11 -11
  76. package/fesm2022/acorex-components-dialog.mjs.map +1 -1
  77. package/fesm2022/acorex-components-drawer.mjs +11 -11
  78. package/fesm2022/acorex-components-drawer.mjs.map +1 -1
  79. package/fesm2022/acorex-components-dropdown-button.mjs +10 -9
  80. package/fesm2022/acorex-components-dropdown-button.mjs.map +1 -1
  81. package/fesm2022/acorex-components-dropdown.mjs +19 -14
  82. package/fesm2022/acorex-components-dropdown.mjs.map +1 -1
  83. package/fesm2022/acorex-components-editor.mjs +15 -14
  84. package/fesm2022/acorex-components-editor.mjs.map +1 -1
  85. package/fesm2022/acorex-components-emoji.mjs +74 -0
  86. package/fesm2022/acorex-components-emoji.mjs.map +1 -0
  87. package/fesm2022/acorex-components-emojipicker.mjs +425 -0
  88. package/fesm2022/acorex-components-emojipicker.mjs.map +1 -0
  89. package/fesm2022/acorex-components-fab.mjs +6 -6
  90. package/fesm2022/acorex-components-fab.mjs.map +1 -1
  91. package/fesm2022/acorex-components-file-viewer.mjs +250 -133
  92. package/fesm2022/acorex-components-file-viewer.mjs.map +1 -1
  93. package/fesm2022/acorex-components-form.mjs +17 -17
  94. package/fesm2022/acorex-components-form.mjs.map +1 -1
  95. package/fesm2022/acorex-components-grid-layout-builder.mjs +10 -10
  96. package/fesm2022/acorex-components-grid-layout-builder.mjs.map +1 -1
  97. package/fesm2022/acorex-components-highlight.mjs +80 -0
  98. package/fesm2022/acorex-components-highlight.mjs.map +1 -0
  99. package/fesm2022/acorex-components-image-editor.mjs +217 -79
  100. package/fesm2022/acorex-components-image-editor.mjs.map +1 -1
  101. package/fesm2022/acorex-components-image.mjs +7 -7
  102. package/fesm2022/acorex-components-image.mjs.map +1 -1
  103. package/fesm2022/acorex-components-inline-reaction.mjs +111 -0
  104. package/fesm2022/acorex-components-inline-reaction.mjs.map +1 -0
  105. package/fesm2022/acorex-components-json-viewer.mjs +7 -7
  106. package/fesm2022/acorex-components-json-viewer.mjs.map +1 -1
  107. package/fesm2022/acorex-components-kanban.mjs +3 -3
  108. package/fesm2022/acorex-components-kanban.mjs.map +1 -1
  109. package/fesm2022/acorex-components-kbd.mjs +6 -6
  110. package/fesm2022/acorex-components-kbd.mjs.map +1 -1
  111. package/fesm2022/acorex-components-label.mjs +7 -7
  112. package/fesm2022/acorex-components-label.mjs.map +1 -1
  113. package/fesm2022/acorex-components-list.mjs +28 -9
  114. package/fesm2022/acorex-components-list.mjs.map +1 -1
  115. package/fesm2022/acorex-components-loading-dialog.mjs +10 -10
  116. package/fesm2022/acorex-components-loading-dialog.mjs.map +1 -1
  117. package/fesm2022/acorex-components-loading.mjs +16 -16
  118. package/fesm2022/acorex-components-loading.mjs.map +1 -1
  119. package/fesm2022/acorex-components-lookup.mjs +919 -169
  120. package/fesm2022/acorex-components-lookup.mjs.map +1 -1
  121. package/fesm2022/acorex-components-map.mjs +20 -13
  122. package/fesm2022/acorex-components-map.mjs.map +1 -1
  123. package/fesm2022/acorex-components-media-viewer.mjs +215 -218
  124. package/fesm2022/acorex-components-media-viewer.mjs.map +1 -1
  125. package/fesm2022/acorex-components-menu.mjs +146 -45
  126. package/fesm2022/acorex-components-menu.mjs.map +1 -1
  127. package/fesm2022/acorex-components-message-status.mjs +71 -0
  128. package/fesm2022/acorex-components-message-status.mjs.map +1 -0
  129. package/fesm2022/acorex-components-message-time.mjs +36 -0
  130. package/fesm2022/acorex-components-message-time.mjs.map +1 -0
  131. package/fesm2022/acorex-components-message.mjs +120 -0
  132. package/fesm2022/acorex-components-message.mjs.map +1 -0
  133. package/fesm2022/acorex-components-navbar.mjs +7 -7
  134. package/fesm2022/acorex-components-navbar.mjs.map +1 -1
  135. package/fesm2022/acorex-components-notification.mjs +13 -14
  136. package/fesm2022/acorex-components-notification.mjs.map +1 -1
  137. package/fesm2022/acorex-components-number-box.mjs +17 -10
  138. package/fesm2022/acorex-components-number-box.mjs.map +1 -1
  139. package/fesm2022/acorex-components-otp.mjs +7 -7
  140. package/fesm2022/acorex-components-otp.mjs.map +1 -1
  141. package/fesm2022/acorex-components-page.mjs +10 -10
  142. package/fesm2022/acorex-components-page.mjs.map +1 -1
  143. package/fesm2022/acorex-components-paint.mjs +25 -25
  144. package/fesm2022/acorex-components-paint.mjs.map +1 -1
  145. package/fesm2022/acorex-components-password-box.mjs +10 -10
  146. package/fesm2022/acorex-components-password-box.mjs.map +1 -1
  147. package/fesm2022/acorex-components-pdf-reader.mjs +7 -7
  148. package/fesm2022/acorex-components-pdf-reader.mjs.map +1 -1
  149. package/fesm2022/acorex-components-phone-box.mjs +7 -7
  150. package/fesm2022/acorex-components-phone-box.mjs.map +1 -1
  151. package/fesm2022/acorex-components-picker.mjs +13 -13
  152. package/fesm2022/acorex-components-picker.mjs.map +1 -1
  153. package/fesm2022/acorex-components-popover.mjs +61 -13
  154. package/fesm2022/acorex-components-popover.mjs.map +1 -1
  155. package/fesm2022/acorex-components-popup.mjs +631 -167
  156. package/fesm2022/acorex-components-popup.mjs.map +1 -1
  157. package/fesm2022/acorex-components-progress-bar.mjs +7 -7
  158. package/fesm2022/acorex-components-progress-bar.mjs.map +1 -1
  159. package/fesm2022/acorex-components-qrcode.mjs +7 -7
  160. package/fesm2022/acorex-components-qrcode.mjs.map +1 -1
  161. package/fesm2022/acorex-components-radio.mjs +7 -7
  162. package/fesm2022/acorex-components-radio.mjs.map +1 -1
  163. package/fesm2022/acorex-components-rail-navigation.mjs +13 -13
  164. package/fesm2022/acorex-components-rail-navigation.mjs.map +1 -1
  165. package/fesm2022/acorex-components-range-slider.mjs +7 -7
  166. package/fesm2022/acorex-components-range-slider.mjs.map +1 -1
  167. package/fesm2022/acorex-components-rate-picker.mjs +7 -7
  168. package/fesm2022/acorex-components-rate-picker.mjs.map +1 -1
  169. package/fesm2022/acorex-components-reaction.mjs +144 -0
  170. package/fesm2022/acorex-components-reaction.mjs.map +1 -0
  171. package/fesm2022/acorex-components-rest-api-generator.mjs +23 -23
  172. package/fesm2022/acorex-components-rest-api-generator.mjs.map +1 -1
  173. package/fesm2022/acorex-components-result.mjs +7 -7
  174. package/fesm2022/acorex-components-result.mjs.map +1 -1
  175. package/fesm2022/acorex-components-routing-progress.mjs +7 -7
  176. package/fesm2022/acorex-components-routing-progress.mjs.map +1 -1
  177. package/fesm2022/acorex-components-rrule.mjs +9 -9
  178. package/fesm2022/acorex-components-rrule.mjs.map +1 -1
  179. package/fesm2022/acorex-components-scheduler-picker.mjs +56 -56
  180. package/fesm2022/acorex-components-scheduler-picker.mjs.map +1 -1
  181. package/fesm2022/acorex-components-scheduler.mjs +35 -35
  182. package/fesm2022/acorex-components-scheduler.mjs.map +1 -1
  183. package/fesm2022/acorex-components-search-box.mjs +7 -7
  184. package/fesm2022/acorex-components-search-box.mjs.map +1 -1
  185. package/fesm2022/acorex-components-select-box.mjs +9 -8
  186. package/fesm2022/acorex-components-select-box.mjs.map +1 -1
  187. package/fesm2022/acorex-components-selection-list.mjs +7 -8
  188. package/fesm2022/acorex-components-selection-list.mjs.map +1 -1
  189. package/fesm2022/acorex-components-side-menu.mjs +55 -42
  190. package/fesm2022/acorex-components-side-menu.mjs.map +1 -1
  191. package/fesm2022/acorex-components-sidebar.mjs +28 -28
  192. package/fesm2022/acorex-components-sidebar.mjs.map +1 -1
  193. package/fesm2022/acorex-components-skeleton.mjs +7 -7
  194. package/fesm2022/acorex-components-skeleton.mjs.map +1 -1
  195. package/fesm2022/acorex-components-slider.mjs +7 -7
  196. package/fesm2022/acorex-components-slider.mjs.map +1 -1
  197. package/fesm2022/acorex-components-sliding-item.mjs +13 -13
  198. package/fesm2022/acorex-components-sliding-item.mjs.map +1 -1
  199. package/fesm2022/acorex-components-step-wizard.mjs +16 -18
  200. package/fesm2022/acorex-components-step-wizard.mjs.map +1 -1
  201. package/fesm2022/acorex-components-switch.mjs +10 -10
  202. package/fesm2022/acorex-components-switch.mjs.map +1 -1
  203. package/fesm2022/acorex-components-tabs.mjs +393 -76
  204. package/fesm2022/acorex-components-tabs.mjs.map +1 -1
  205. package/fesm2022/acorex-components-tag-box.mjs +7 -7
  206. package/fesm2022/acorex-components-tag-box.mjs.map +1 -1
  207. package/fesm2022/acorex-components-tag.mjs +7 -7
  208. package/fesm2022/acorex-components-tag.mjs.map +1 -1
  209. package/fesm2022/acorex-components-text-area.mjs +7 -7
  210. package/fesm2022/acorex-components-text-area.mjs.map +1 -1
  211. package/fesm2022/acorex-components-text-box.mjs +7 -7
  212. package/fesm2022/acorex-components-text-box.mjs.map +1 -1
  213. package/fesm2022/acorex-components-time-duration.mjs +7 -7
  214. package/fesm2022/acorex-components-time-duration.mjs.map +1 -1
  215. package/fesm2022/acorex-components-time-line.mjs +10 -10
  216. package/fesm2022/acorex-components-time-line.mjs.map +1 -1
  217. package/fesm2022/acorex-components-toast.mjs +14 -14
  218. package/fesm2022/acorex-components-toast.mjs.map +1 -1
  219. package/fesm2022/acorex-components-toolbar.mjs +7 -7
  220. package/fesm2022/acorex-components-toolbar.mjs.map +1 -1
  221. package/fesm2022/acorex-components-tooltip.mjs +10 -10
  222. package/fesm2022/acorex-components-tooltip.mjs.map +1 -1
  223. package/fesm2022/acorex-components-tree-view.mjs +54 -14
  224. package/fesm2022/acorex-components-tree-view.mjs.map +1 -1
  225. package/fesm2022/acorex-components-uploader.mjs +13 -13
  226. package/fesm2022/acorex-components-uploader.mjs.map +1 -1
  227. package/fesm2022/acorex-components-video-player.mjs +7 -7
  228. package/fesm2022/acorex-components-video-player.mjs.map +1 -1
  229. package/fesm2022/acorex-components-wysiwyg.mjs +691 -295
  230. package/fesm2022/acorex-components-wysiwyg.mjs.map +1 -1
  231. package/fesm2022/acorex-components.mjs.map +1 -1
  232. package/highlight/README.md +13 -0
  233. package/inline-reaction/README.md +3 -0
  234. package/lookup/README.md +1 -1
  235. package/message/README.md +3 -0
  236. package/message-status/README.md +3 -0
  237. package/message-time/README.md +3 -0
  238. package/package.json +48 -13
  239. package/reaction/README.md +3 -0
  240. package/types/acorex-components-action-sheet.d.ts +1 -1
  241. package/types/acorex-components-audio-wave.d.ts +8 -0
  242. package/types/acorex-components-bubble.d.ts +31 -0
  243. package/types/acorex-components-button-group.d.ts +4 -0
  244. package/types/acorex-components-button.d.ts +75 -10
  245. package/types/acorex-components-calendar.d.ts +13 -4
  246. package/types/acorex-components-check-box.d.ts +1 -1
  247. package/types/acorex-components-code-editor.d.ts +4 -1
  248. package/types/acorex-components-color-box.d.ts +1 -1
  249. package/types/acorex-components-color-palette.d.ts +2 -2
  250. package/types/acorex-components-combo-box.d.ts +21 -2
  251. package/types/acorex-components-command.d.ts +3 -1
  252. package/types/acorex-components-conversation.d.ts +550 -242
  253. package/types/acorex-components-cron-job.d.ts +6 -6
  254. package/types/acorex-components-data-pager.d.ts +27 -9
  255. package/types/acorex-components-data-table.d.ts +226 -21
  256. package/types/acorex-components-datetime-box.d.ts +1 -1
  257. package/types/acorex-components-datetime-picker.d.ts +1 -1
  258. package/types/acorex-components-decorators.d.ts +15 -33
  259. package/types/acorex-components-dialog.d.ts +1 -1
  260. package/types/acorex-components-dropdown-button.d.ts +2 -1
  261. package/types/acorex-components-dropdown.d.ts +6 -1
  262. package/types/acorex-components-editor.d.ts +1 -1
  263. package/types/acorex-components-emoji.d.ts +42 -0
  264. package/types/acorex-components-emojipicker.d.ts +146 -0
  265. package/types/acorex-components-file-viewer.d.ts +14 -2
  266. package/types/acorex-components-highlight.d.ts +31 -0
  267. package/types/acorex-components-image-editor.d.ts +19 -2
  268. package/types/acorex-components-inline-reaction.d.ts +52 -0
  269. package/types/acorex-components-list.d.ts +12 -0
  270. package/types/acorex-components-loading-dialog.d.ts +1 -1
  271. package/types/acorex-components-loading.d.ts +1 -1
  272. package/types/acorex-components-lookup.d.ts +227 -79
  273. package/types/acorex-components-map.d.ts +7 -2
  274. package/types/acorex-components-media-viewer.d.ts +4 -3
  275. package/types/acorex-components-menu.d.ts +17 -5
  276. package/types/acorex-components-message-status.d.ts +23 -0
  277. package/types/acorex-components-message-time.d.ts +19 -0
  278. package/types/acorex-components-message.d.ts +59 -0
  279. package/types/acorex-components-notification.d.ts +1 -1
  280. package/types/acorex-components-number-box.d.ts +2 -1
  281. package/types/acorex-components-otp.d.ts +1 -1
  282. package/types/acorex-components-page.d.ts +2 -2
  283. package/types/acorex-components-paint.d.ts +2 -2
  284. package/types/acorex-components-password-box.d.ts +1 -1
  285. package/types/acorex-components-phone-box.d.ts +1 -1
  286. package/types/acorex-components-popover.d.ts +13 -1
  287. package/types/acorex-components-popup.d.ts +183 -50
  288. package/types/acorex-components-rail-navigation.d.ts +1 -1
  289. package/types/acorex-components-range-slider.d.ts +1 -1
  290. package/types/acorex-components-reaction.d.ts +85 -0
  291. package/types/acorex-components-rest-api-generator.d.ts +1 -1
  292. package/types/acorex-components-rrule.d.ts +1 -1
  293. package/types/acorex-components-scheduler-picker.d.ts +1 -1
  294. package/types/acorex-components-scheduler.d.ts +1 -1
  295. package/types/acorex-components-search-box.d.ts +1 -1
  296. package/types/acorex-components-selection-list.d.ts +1 -1
  297. package/types/acorex-components-side-menu.d.ts +6 -8
  298. package/types/acorex-components-slider.d.ts +1 -1
  299. package/types/acorex-components-step-wizard.d.ts +4 -4
  300. package/types/acorex-components-switch.d.ts +1 -1
  301. package/types/acorex-components-tabs.d.ts +109 -19
  302. package/types/acorex-components-tag-box.d.ts +2 -2
  303. package/types/acorex-components-text-area.d.ts +1 -1
  304. package/types/acorex-components-text-box.d.ts +1 -1
  305. package/types/acorex-components-time-duration.d.ts +1 -1
  306. package/types/acorex-components-toast.d.ts +1 -1
  307. package/types/acorex-components-tree-view.d.ts +23 -1
  308. package/types/acorex-components-wysiwyg.d.ts +426 -77
  309. package/fesm2022/acorex-components-conversation-acorex-components-conversation-EiqMwr9v.mjs +0 -16862
  310. package/fesm2022/acorex-components-conversation-acorex-components-conversation-EiqMwr9v.mjs.map +0 -1
  311. package/fesm2022/acorex-components-conversation-composer-action-choice-dialog.component-D4ca9Mvt.mjs +0 -51
  312. package/fesm2022/acorex-components-conversation-composer-action-choice-dialog.component-D4ca9Mvt.mjs.map +0 -1
  313. package/fesm2022/acorex-components-conversation-image-picker-editor-dialog.component-QVs1XWYf.mjs +0 -85
  314. package/fesm2022/acorex-components-conversation-image-picker-editor-dialog.component-QVs1XWYf.mjs.map +0 -1
  315. package/fesm2022/acorex-components-conversation-open-composer-picker-for-files-C7BnTUw2.mjs +0 -210
  316. package/fesm2022/acorex-components-conversation-open-composer-picker-for-files-C7BnTUw2.mjs.map +0 -1
  317. package/fesm2022/acorex-components-flow-chart.mjs +0 -735
  318. package/fesm2022/acorex-components-flow-chart.mjs.map +0 -1
  319. package/fesm2022/acorex-components-query-builder.mjs +0 -267
  320. package/fesm2022/acorex-components-query-builder.mjs.map +0 -1
  321. package/flow-chart/README.md +0 -3
  322. package/query-builder/README.md +0 -3
  323. package/types/acorex-components-flow-chart.d.ts +0 -187
  324. package/types/acorex-components-query-builder.d.ts +0 -52
@@ -1,65 +1,241 @@
1
1
  import { AXComponent, MXInputBaseValueComponent, MXLookComponent, AXFocusableComponent, AXValuableComponent } from '@acorex/cdk/common';
2
- import { isPlatformBrowser } from '@angular/common';
2
+ import { AXWysiwyg, AX_DEFAULT_WYSIWYG_FEATURES } from '@acorex/cdk/wysiwyg';
3
+ import { AXTranslationService, AXTranslatorPipe, toTranslatedSignal } from '@acorex/core/translation';
4
+ import { isPlatformBrowser, AsyncPipe } from '@angular/common';
3
5
  import * as i0 from '@angular/core';
4
- import { viewChild, ViewEncapsulation, Component, signal, Injectable, input, inject, contentChild, PLATFORM_ID, afterNextRender, effect, forwardRef, HostBinding, NgModule } from '@angular/core';
6
+ import { signal, computed, Injectable, viewChild, inject, ElementRef, Renderer2, PLATFORM_ID, DestroyRef, afterNextRender, ViewEncapsulation, Component, input, contentChild, effect, forwardRef, ChangeDetectionStrategy, NgModule } from '@angular/core';
7
+ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
8
+ import * as i1 from '@angular/forms';
5
9
  import { NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';
6
10
  import { classes } from 'polytype';
7
- import { QuillDeltaToHtmlConverter } from 'quill-delta-to-html';
8
- import { AXDecoratorColorIndicatorComponent, AXDecoratorModule } from '@acorex/components/decorators';
9
- import { AXButtonModule } from '@acorex/components/button';
10
- import { AXColorPaletteModule } from '@acorex/components/color-palette';
11
- import { AXPopoverModule } from '@acorex/components/popover';
12
- import { AXSelectBoxModule } from '@acorex/components/select-box';
13
- import { AXTextBoxModule } from '@acorex/components/text-box';
11
+ import { AXZIndexService } from '@acorex/core/z-index';
12
+ import { AXButtonComponent, AXButtonItemComponent, AXButtonItemListComponent } from '@acorex/components/button';
13
+ import { AXDecoratorGenericComponent, AXDecoratorIconComponent, AXDecoratorColorIndicatorComponent } from '@acorex/components/decorators';
14
+ import { AXDropdownPanelComponent } from '@acorex/components/dropdown';
15
+ import { AXColorPaletteComponent, AXColorPalettePickerComponent, AXColorPaletteSwatchesComponent, AXColorPaletteInputComponent } from '@acorex/components/color-palette';
16
+ import { AXPopoverComponent } from '@acorex/components/popover';
17
+ import { AXComboBoxComponent } from '@acorex/components/combo-box';
18
+ import { AXTextBoxComponent } from '@acorex/components/text-box';
19
+
20
+ class AXWysiwygContext {
21
+ constructor() {
22
+ this.disabled = signal(false, /* @ts-ignore */
23
+ ...(ngDevMode ? [{ debugName: "disabled" }] : /* istanbul ignore next */ []));
24
+ this.readonly = signal(false, /* @ts-ignore */
25
+ ...(ngDevMode ? [{ debugName: "readonly" }] : /* istanbul ignore next */ []));
26
+ this.mode = signal('compact', /* @ts-ignore */
27
+ ...(ngDevMode ? [{ debugName: "mode" }] : /* istanbul ignore next */ []));
28
+ this.compact = computed(() => this.mode() === 'compact', /* @ts-ignore */
29
+ ...(ngDevMode ? [{ debugName: "compact" }] : /* istanbul ignore next */ []));
30
+ this.interactionDisabled = computed(() => this.disabled() || this.readonly(), /* @ts-ignore */
31
+ ...(ngDevMode ? [{ debugName: "interactionDisabled" }] : /* istanbul ignore next */ []));
32
+ }
33
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: AXWysiwygContext, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
34
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: AXWysiwygContext }); }
35
+ }
36
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: AXWysiwygContext, decorators: [{
37
+ type: Injectable
38
+ }] });
14
39
 
15
40
  /**
41
+ * Toolbar for the WYSIWYG editor.
42
+ * Formatting controls belong in `ax-prefix`. Actions such as submit belong in `ax-suffix`.
16
43
  * @category Components
17
- * A component for viewing WYSIWYG content.
18
44
  */
19
45
  class AXWysiwygToolbarComponent {
20
46
  constructor() {
21
47
  this.toolbar = viewChild('toolbar', /* @ts-ignore */
22
48
  ...(ngDevMode ? [{ debugName: "toolbar" }] : /* istanbul ignore next */ []));
49
+ this.host = inject((ElementRef));
50
+ this.renderer = inject(Renderer2);
51
+ this.platformId = inject(PLATFORM_ID);
52
+ this.destroyRef = inject(DestroyRef);
53
+ this.zIndexService = inject(AXZIndexService);
54
+ this.observer = null;
55
+ this.overlayState = null;
56
+ this.unlistenClick = null;
57
+ this.clampFrame = 0;
58
+ afterNextRender(() => {
59
+ if (!isPlatformBrowser(this.platformId))
60
+ return;
61
+ this.setupPickerOverlay();
62
+ });
63
+ this.destroyRef.onDestroy(() => this.teardownPickerOverlay());
64
+ }
65
+ setupPickerOverlay() {
66
+ const toolbarEl = this.toolbar()?.nativeElement;
67
+ if (!toolbarEl)
68
+ return;
69
+ this.observer = new MutationObserver(() => this.syncPickerOverlay());
70
+ this.observer.observe(toolbarEl, {
71
+ attributes: true,
72
+ attributeFilter: ['class'],
73
+ subtree: true,
74
+ });
75
+ this.unlistenClick = this.renderer.listen(toolbarEl, 'click', (event) => {
76
+ const target = event.target;
77
+ if (!(target instanceof Element) || !target.closest('.ql-picker-label, .ql-picker-item'))
78
+ return;
79
+ this.queueClamp();
80
+ });
23
81
  }
24
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXWysiwygToolbarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
25
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "22.0.8", type: AXWysiwygToolbarComponent, isStandalone: true, selector: "ax-wysiwyg-toolbar", providers: [{ provide: AXComponent, useExisting: AXWysiwygToolbarComponent }], viewQueries: [{ propertyName: "toolbar", first: true, predicate: ["toolbar"], descendants: true, isSignal: true }], ngImport: i0, template: "<div #toolbar class=\"ax-wysiwyg-toolbar-content\">\n <ng-content select=\"ax-prefix\"></ng-content>\n <ng-content select=\"ax-suffix\"></ng-content>\n</div>\n", styles: ["@layer components{ax-wysiwyg-toolbar>.ax-wysiwyg-toolbar-content{display:flex!important;width:100%;flex-wrap:nowrap!important;align-items:center!important;gap:calc(var(--spacing, .25rem) * 1);overflow-x:auto;padding-inline:calc(var(--spacing, .25rem) * 2);padding-block:calc(var(--spacing, .25rem) * 1)}ax-wysiwyg-toolbar>.ax-wysiwyg-toolbar-content ax-prefix{display:flex!important;min-width:calc(var(--spacing, .25rem) * 0);flex:1;flex-wrap:nowrap!important;align-items:center!important;justify-content:flex-start;gap:calc(var(--spacing, .25rem) * 1)}ax-wysiwyg-toolbar>.ax-wysiwyg-toolbar-content ax-prefix>*{display:flex;flex-shrink:0;align-items:center}ax-wysiwyg-toolbar>.ax-wysiwyg-toolbar-content ax-suffix{margin-inline-start:auto;display:flex!important;flex-shrink:0;align-items:center!important;justify-content:flex-end;gap:calc(var(--spacing, .25rem) * 1)}ax-wysiwyg-toolbar:not(:first-child) .ql-toolbar .ql-picker.ql-expanded .ql-picker-options{top:auto!important;bottom:100%!important}}\n/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */\n"], encapsulation: i0.ViewEncapsulation.None }); }
82
+ syncPickerOverlay() {
83
+ const toolbarEl = this.toolbar()?.nativeElement;
84
+ if (!toolbarEl)
85
+ return;
86
+ const expandedPicker = toolbarEl.querySelector('.ql-picker.ql-expanded');
87
+ if (!expandedPicker) {
88
+ this.closePickerOverlay();
89
+ return;
90
+ }
91
+ if (this.overlayState?.picker !== expandedPicker) {
92
+ this.closePickerOverlay();
93
+ this.openPickerOverlay(expandedPicker);
94
+ }
95
+ this.queueClamp();
96
+ }
97
+ openPickerOverlay(picker) {
98
+ const zToken = this.zIndexService.acquire();
99
+ this.overlayState = {
100
+ picker,
101
+ options: picker.querySelector('.ql-picker-options'),
102
+ zToken,
103
+ };
104
+ this.renderer.setStyle(this.host.nativeElement, 'z-index', String(zToken.zIndex));
105
+ this.renderer.setStyle(picker, 'z-index', String(zToken.zIndex));
106
+ }
107
+ closePickerOverlay() {
108
+ if (!this.overlayState)
109
+ return;
110
+ const { picker, options, zToken } = this.overlayState;
111
+ this.renderer.removeStyle(this.host.nativeElement, 'z-index');
112
+ this.renderer.removeStyle(picker, 'z-index');
113
+ this.clearPickerOffset(options);
114
+ this.zIndexService.release(zToken);
115
+ this.overlayState = null;
116
+ }
117
+ queueClamp() {
118
+ cancelAnimationFrame(this.clampFrame);
119
+ this.clampFrame = requestAnimationFrame(() => this.keepPickerInViewport());
120
+ }
121
+ /**
122
+ * Keep expanded picker menus inside the viewport horizontally.
123
+ * Vertical direction is handled by CSS (open upward when the toolbar is below the editor).
124
+ */
125
+ keepPickerInViewport() {
126
+ const options = this.overlayState?.options;
127
+ const picker = this.overlayState?.picker;
128
+ if (!options || !picker || !picker.classList.contains('ql-expanded'))
129
+ return;
130
+ if (picker.classList.contains('ql-color-picker') || picker.classList.contains('ql-icon-picker'))
131
+ return;
132
+ this.renderer.removeStyle(options, 'left');
133
+ const pad = 8;
134
+ const viewportWidth = document.documentElement.clientWidth;
135
+ const rect = options.getBoundingClientRect();
136
+ if (rect.right > viewportWidth - pad) {
137
+ this.renderer.setStyle(options, 'left', `${options.offsetLeft - (rect.right - (viewportWidth - pad))}px`);
138
+ }
139
+ else if (rect.left < pad) {
140
+ this.renderer.setStyle(options, 'left', `${options.offsetLeft + (pad - rect.left)}px`);
141
+ }
142
+ }
143
+ clearPickerOffset(options) {
144
+ if (!options)
145
+ return;
146
+ this.renderer.removeStyle(options, 'left');
147
+ }
148
+ teardownPickerOverlay() {
149
+ cancelAnimationFrame(this.clampFrame);
150
+ this.unlistenClick?.();
151
+ this.unlistenClick = null;
152
+ this.observer?.disconnect();
153
+ this.observer = null;
154
+ this.closePickerOverlay();
155
+ }
156
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: AXWysiwygToolbarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
157
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "22.1.6", type: AXWysiwygToolbarComponent, isStandalone: true, selector: "ax-wysiwyg-toolbar", providers: [{ provide: AXComponent, useExisting: AXWysiwygToolbarComponent }], viewQueries: [{ propertyName: "toolbar", first: true, predicate: ["toolbar"], descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"ax-wysiwyg-toolbar-content\">\n <div #toolbar class=\"ax-wysiwyg-toolbar-tools\" role=\"toolbar\" aria-label=\"Formatting\">\n <ng-content select=\"ax-prefix\"></ng-content>\n <ng-content></ng-content>\n </div>\n <ng-content select=\"ax-suffix\"></ng-content>\n</div>\n", styles: ["@layer components{ax-wysiwyg-toolbar{position:relative;z-index:10;max-width:100%;min-width:calc(var(--spacing, .25rem) * 0);overflow:visible}ax-wysiwyg-toolbar>.ax-wysiwyg-toolbar-content{box-sizing:border-box;display:flex;width:100%;max-width:100%;min-width:calc(var(--spacing, .25rem) * 0);flex-wrap:wrap;align-items:center;column-gap:calc(var(--spacing, .25rem) * 1);row-gap:calc(var(--spacing, .25rem) * 1);overflow:visible;padding-inline:calc(var(--spacing, .25rem) * 1.5);padding-block:calc(var(--spacing, .25rem) * 1)}ax-wysiwyg-toolbar>.ax-wysiwyg-toolbar-content>.ax-wysiwyg-toolbar-tools{display:flex;min-width:calc(var(--spacing, .25rem) * 0);flex-wrap:wrap;align-items:center;gap:calc(var(--spacing, .25rem) * 1);overflow:visible;flex:1 1 16rem;min-width:min(100%,12rem);max-width:100%}ax-wysiwyg-toolbar>.ax-wysiwyg-toolbar-content ax-prefix{max-width:100%;min-width:calc(var(--spacing, .25rem) * 0);flex-wrap:wrap;align-items:center;justify-content:flex-start;gap:calc(var(--spacing, .25rem) * 1);overflow:visible;display:flex!important;flex:1 1 auto!important;align-self:center!important;width:auto!important;height:auto!important;max-height:none!important;margin:0!important;padding:0!important}ax-wysiwyg-toolbar>.ax-wysiwyg-toolbar-content ax-prefix>*{position:relative;display:flex;max-width:100%;flex-wrap:wrap;align-items:center;overflow:visible;flex:0 0 auto;min-width:auto}ax-wysiwyg-toolbar>.ax-wysiwyg-toolbar-content ax-prefix>*+*{padding-inline-start:calc(var(--spacing, .25rem) * 1.5);margin-inline-start:.125rem}ax-wysiwyg-toolbar>.ax-wysiwyg-toolbar-content ax-prefix>*+*:before{content:\"\";position:absolute;inset-inline-start:0;top:50%;width:1px;height:1rem;transform:translateY(-50%);background:var(--color-border-surface)}ax-wysiwyg-toolbar>.ax-wysiwyg-toolbar-content>ax-suffix{display:flex;max-width:100%;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:calc(var(--spacing, .25rem) * 1);overflow:visible;display:flex!important;flex:0 0 auto!important;align-self:center!important;width:auto!important;height:auto!important;max-height:none!important;margin-inline-start:auto!important;padding-inline-start:.25rem!important;border:0!important}ax-wysiwyg-toolbar ax-prefix>ax-wysiwyg-font-style{flex-wrap:nowrap}ax-wysiwyg-toolbar ax-wysiwyg-font-style>.ax-wysiwyg-block-menu-group{display:flex;flex-shrink:0;flex-wrap:nowrap;align-items:center}ax-wysiwyg-toolbar ax-prefix>*:empty,ax-wysiwyg-toolbar ax-wysiwyg-list>.ax-wysiwyg-tool-group:empty{display:none}ax-wysiwyg-toolbar ax-prefix>*:empty+*:before,ax-wysiwyg-toolbar ax-prefix>*:has(>.ax-wysiwyg-tool-group:only-child:empty)+*:before{content:none}ax-wysiwyg-toolbar ax-wysiwyg-font-style>.ax-wysiwyg-tool-group:not(.ax-wysiwyg-font-size-group),ax-wysiwyg-toolbar ax-wysiwyg-colors>.ax-wysiwyg-tool-group{display:contents}ax-wysiwyg-toolbar ax-wysiwyg-font-style>.ax-wysiwyg-font-size-group{display:flex;flex-shrink:0;flex-wrap:nowrap;align-items:center;width:5.75rem;max-width:7.5rem}ax-wysiwyg-toolbar ax-wysiwyg-font-style .ax-wysiwyg-font-size-combo{width:100%;max-width:100%;min-width:calc(var(--spacing, .25rem) * 0)}@media(max-width:40rem){ax-wysiwyg-toolbar>.ax-wysiwyg-toolbar-content ax-prefix>*+*{margin-inline-start:0;padding-inline-start:0}ax-wysiwyg-toolbar>.ax-wysiwyg-toolbar-content ax-prefix>*+*:before{content:none}}}\n/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */\n"], encapsulation: i0.ViewEncapsulation.None }); }
26
158
  }
27
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXWysiwygToolbarComponent, decorators: [{
159
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: AXWysiwygToolbarComponent, decorators: [{
28
160
  type: Component,
29
- args: [{ selector: 'ax-wysiwyg-toolbar', encapsulation: ViewEncapsulation.None, providers: [{ provide: AXComponent, useExisting: AXWysiwygToolbarComponent }], template: "<div #toolbar class=\"ax-wysiwyg-toolbar-content\">\n <ng-content select=\"ax-prefix\"></ng-content>\n <ng-content select=\"ax-suffix\"></ng-content>\n</div>\n", styles: ["@layer components{ax-wysiwyg-toolbar>.ax-wysiwyg-toolbar-content{display:flex!important;width:100%;flex-wrap:nowrap!important;align-items:center!important;gap:calc(var(--spacing, .25rem) * 1);overflow-x:auto;padding-inline:calc(var(--spacing, .25rem) * 2);padding-block:calc(var(--spacing, .25rem) * 1)}ax-wysiwyg-toolbar>.ax-wysiwyg-toolbar-content ax-prefix{display:flex!important;min-width:calc(var(--spacing, .25rem) * 0);flex:1;flex-wrap:nowrap!important;align-items:center!important;justify-content:flex-start;gap:calc(var(--spacing, .25rem) * 1)}ax-wysiwyg-toolbar>.ax-wysiwyg-toolbar-content ax-prefix>*{display:flex;flex-shrink:0;align-items:center}ax-wysiwyg-toolbar>.ax-wysiwyg-toolbar-content ax-suffix{margin-inline-start:auto;display:flex!important;flex-shrink:0;align-items:center!important;justify-content:flex-end;gap:calc(var(--spacing, .25rem) * 1)}ax-wysiwyg-toolbar:not(:first-child) .ql-toolbar .ql-picker.ql-expanded .ql-picker-options{top:auto!important;bottom:100%!important}}\n/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */\n"] }]
30
- }], propDecorators: { toolbar: [{ type: i0.ViewChild, args: ['toolbar', { isSignal: true }] }] } });
161
+ args: [{ selector: 'ax-wysiwyg-toolbar', encapsulation: ViewEncapsulation.None, providers: [{ provide: AXComponent, useExisting: AXWysiwygToolbarComponent }], template: "<div class=\"ax-wysiwyg-toolbar-content\">\n <div #toolbar class=\"ax-wysiwyg-toolbar-tools\" role=\"toolbar\" aria-label=\"Formatting\">\n <ng-content select=\"ax-prefix\"></ng-content>\n <ng-content></ng-content>\n </div>\n <ng-content select=\"ax-suffix\"></ng-content>\n</div>\n", styles: ["@layer components{ax-wysiwyg-toolbar{position:relative;z-index:10;max-width:100%;min-width:calc(var(--spacing, .25rem) * 0);overflow:visible}ax-wysiwyg-toolbar>.ax-wysiwyg-toolbar-content{box-sizing:border-box;display:flex;width:100%;max-width:100%;min-width:calc(var(--spacing, .25rem) * 0);flex-wrap:wrap;align-items:center;column-gap:calc(var(--spacing, .25rem) * 1);row-gap:calc(var(--spacing, .25rem) * 1);overflow:visible;padding-inline:calc(var(--spacing, .25rem) * 1.5);padding-block:calc(var(--spacing, .25rem) * 1)}ax-wysiwyg-toolbar>.ax-wysiwyg-toolbar-content>.ax-wysiwyg-toolbar-tools{display:flex;min-width:calc(var(--spacing, .25rem) * 0);flex-wrap:wrap;align-items:center;gap:calc(var(--spacing, .25rem) * 1);overflow:visible;flex:1 1 16rem;min-width:min(100%,12rem);max-width:100%}ax-wysiwyg-toolbar>.ax-wysiwyg-toolbar-content ax-prefix{max-width:100%;min-width:calc(var(--spacing, .25rem) * 0);flex-wrap:wrap;align-items:center;justify-content:flex-start;gap:calc(var(--spacing, .25rem) * 1);overflow:visible;display:flex!important;flex:1 1 auto!important;align-self:center!important;width:auto!important;height:auto!important;max-height:none!important;margin:0!important;padding:0!important}ax-wysiwyg-toolbar>.ax-wysiwyg-toolbar-content ax-prefix>*{position:relative;display:flex;max-width:100%;flex-wrap:wrap;align-items:center;overflow:visible;flex:0 0 auto;min-width:auto}ax-wysiwyg-toolbar>.ax-wysiwyg-toolbar-content ax-prefix>*+*{padding-inline-start:calc(var(--spacing, .25rem) * 1.5);margin-inline-start:.125rem}ax-wysiwyg-toolbar>.ax-wysiwyg-toolbar-content ax-prefix>*+*:before{content:\"\";position:absolute;inset-inline-start:0;top:50%;width:1px;height:1rem;transform:translateY(-50%);background:var(--color-border-surface)}ax-wysiwyg-toolbar>.ax-wysiwyg-toolbar-content>ax-suffix{display:flex;max-width:100%;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:calc(var(--spacing, .25rem) * 1);overflow:visible;display:flex!important;flex:0 0 auto!important;align-self:center!important;width:auto!important;height:auto!important;max-height:none!important;margin-inline-start:auto!important;padding-inline-start:.25rem!important;border:0!important}ax-wysiwyg-toolbar ax-prefix>ax-wysiwyg-font-style{flex-wrap:nowrap}ax-wysiwyg-toolbar ax-wysiwyg-font-style>.ax-wysiwyg-block-menu-group{display:flex;flex-shrink:0;flex-wrap:nowrap;align-items:center}ax-wysiwyg-toolbar ax-prefix>*:empty,ax-wysiwyg-toolbar ax-wysiwyg-list>.ax-wysiwyg-tool-group:empty{display:none}ax-wysiwyg-toolbar ax-prefix>*:empty+*:before,ax-wysiwyg-toolbar ax-prefix>*:has(>.ax-wysiwyg-tool-group:only-child:empty)+*:before{content:none}ax-wysiwyg-toolbar ax-wysiwyg-font-style>.ax-wysiwyg-tool-group:not(.ax-wysiwyg-font-size-group),ax-wysiwyg-toolbar ax-wysiwyg-colors>.ax-wysiwyg-tool-group{display:contents}ax-wysiwyg-toolbar ax-wysiwyg-font-style>.ax-wysiwyg-font-size-group{display:flex;flex-shrink:0;flex-wrap:nowrap;align-items:center;width:5.75rem;max-width:7.5rem}ax-wysiwyg-toolbar ax-wysiwyg-font-style .ax-wysiwyg-font-size-combo{width:100%;max-width:100%;min-width:calc(var(--spacing, .25rem) * 0)}@media(max-width:40rem){ax-wysiwyg-toolbar>.ax-wysiwyg-toolbar-content ax-prefix>*+*{margin-inline-start:0;padding-inline-start:0}ax-wysiwyg-toolbar>.ax-wysiwyg-toolbar-content ax-prefix>*+*:before{content:none}}}\n/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */\n"] }]
162
+ }], ctorParameters: () => [], propDecorators: { toolbar: [{ type: i0.ViewChild, args: ['toolbar', { isSignal: true }] }] } });
163
+
164
+ const SCOPE = '@acorex:wysiwyg';
165
+ const AX_WYSIWYG_I18N = {
166
+ placeholder: `${SCOPE}.placeholder`,
167
+ menu: {
168
+ blockType: `${SCOPE}.menu.block-type`,
169
+ insert: `${SCOPE}.menu.insert`,
170
+ align: `${SCOPE}.menu.align`,
171
+ },
172
+ tools: {
173
+ undo: `${SCOPE}.tools.undo`,
174
+ redo: `${SCOPE}.tools.redo`,
175
+ bold: `${SCOPE}.tools.bold`,
176
+ italic: `${SCOPE}.tools.italic`,
177
+ underline: `${SCOPE}.tools.underline`,
178
+ strike: `${SCOPE}.tools.strike`,
179
+ code: `${SCOPE}.tools.code`,
180
+ codeBlock: `${SCOPE}.tools.code-block`,
181
+ link: `${SCOPE}.tools.link`,
182
+ image: `${SCOPE}.tools.image`,
183
+ video: `${SCOPE}.tools.video`,
184
+ bulletList: `${SCOPE}.tools.bullet-list`,
185
+ orderedList: `${SCOPE}.tools.ordered-list`,
186
+ rtl: `${SCOPE}.tools.rtl`,
187
+ textColor: `${SCOPE}.tools.text-color`,
188
+ highlight: `${SCOPE}.tools.highlight`,
189
+ paragraph: `${SCOPE}.tools.paragraph`,
190
+ alignLeft: `${SCOPE}.tools.align-left`,
191
+ alignCenter: `${SCOPE}.tools.align-center`,
192
+ alignRight: `${SCOPE}.tools.align-right`,
193
+ alignJustify: `${SCOPE}.tools.align-justify`,
194
+ },
195
+ blocks: {
196
+ paragraph: `${SCOPE}.blocks.paragraph`,
197
+ blockquote: `${SCOPE}.blocks.blockquote`,
198
+ codeBlock: `${SCOPE}.blocks.code-block`,
199
+ bulletList: `${SCOPE}.blocks.bullet-list`,
200
+ orderedList: `${SCOPE}.blocks.ordered-list`,
201
+ image: `${SCOPE}.blocks.image`,
202
+ video: `${SCOPE}.blocks.video`,
203
+ heading: (level) => `${SCOPE}.blocks.heading${level}`,
204
+ },
205
+ fontSize: {
206
+ placeholder: `${SCOPE}.font-size.placeholder`,
207
+ small: `${SCOPE}.font-size.small`,
208
+ normal: `${SCOPE}.font-size.normal`,
209
+ large: `${SCOPE}.font-size.large`,
210
+ huge: `${SCOPE}.font-size.huge`,
211
+ },
212
+ insert: {
213
+ linkUrl: `${SCOPE}.insert.link-url`,
214
+ imageUrl: `${SCOPE}.insert.image-url`,
215
+ videoUrl: `${SCOPE}.insert.video-url`,
216
+ apply: `${SCOPE}.insert.apply`,
217
+ remove: `${SCOPE}.insert.remove`,
218
+ insert: `${SCOPE}.insert.insert`,
219
+ },
220
+ };
31
221
 
32
222
  /**
223
+ * Editing surface for the WYSIWYG editor.
33
224
  * @category Components
34
- * A component for viewing WYSIWYG content.
35
225
  */
36
226
  class AXWysiwygViewComponent {
37
227
  constructor() {
38
228
  this.editor = viewChild('editor', /* @ts-ignore */
39
229
  ...(ngDevMode ? [{ debugName: "editor" }] : /* istanbul ignore next */ []));
40
230
  }
41
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXWysiwygViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
42
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "22.0.8", type: AXWysiwygViewComponent, isStandalone: true, selector: "ax-wysiwyg-view", providers: [{ provide: AXComponent, useExisting: AXWysiwygViewComponent }], viewQueries: [{ propertyName: "editor", first: true, predicate: ["editor"], descendants: true, isSignal: true }], ngImport: i0, template: "<div #editor></div>\n", styles: ["@layer components{ax-wysiwyg-view{display:block;height:auto}}\n/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */\n"], encapsulation: i0.ViewEncapsulation.None }); }
231
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: AXWysiwygViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
232
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "22.1.6", type: AXWysiwygViewComponent, isStandalone: true, selector: "ax-wysiwyg-view", providers: [{ provide: AXComponent, useExisting: AXWysiwygViewComponent }], viewQueries: [{ propertyName: "editor", first: true, predicate: ["editor"], descendants: true, isSignal: true }], ngImport: i0, template: "<div #editor class=\"ax-wysiwyg-editor-host\"></div>\n", styles: ["@layer components{ax-wysiwyg-view{display:block;height:auto}}\n/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */\n"], encapsulation: i0.ViewEncapsulation.None }); }
43
233
  }
44
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXWysiwygViewComponent, decorators: [{
234
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: AXWysiwygViewComponent, decorators: [{
45
235
  type: Component,
46
- args: [{ selector: 'ax-wysiwyg-view', encapsulation: ViewEncapsulation.None, providers: [{ provide: AXComponent, useExisting: AXWysiwygViewComponent }], template: "<div #editor></div>\n", styles: ["@layer components{ax-wysiwyg-view{display:block;height:auto}}\n/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */\n"] }]
236
+ args: [{ selector: 'ax-wysiwyg-view', encapsulation: ViewEncapsulation.None, providers: [{ provide: AXComponent, useExisting: AXWysiwygViewComponent }], template: "<div #editor class=\"ax-wysiwyg-editor-host\"></div>\n", styles: ["@layer components{ax-wysiwyg-view{display:block;height:auto}}\n/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */\n"] }]
47
237
  }], propDecorators: { editor: [{ type: i0.ViewChild, args: ['editor', { isSignal: true }] }] } });
48
238
 
49
- class WysiwygService {
50
- constructor() {
51
- this.selectedColor = signal('', /* @ts-ignore */
52
- ...(ngDevMode ? [{ debugName: "selectedColor" }] : /* istanbul ignore next */ []));
53
- this.selectedBackgroundColor = signal('', /* @ts-ignore */
54
- ...(ngDevMode ? [{ debugName: "selectedBackgroundColor" }] : /* istanbul ignore next */ []));
55
- }
56
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: WysiwygService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
57
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: WysiwygService }); }
58
- }
59
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: WysiwygService, decorators: [{
60
- type: Injectable
61
- }] });
62
-
63
239
  /**
64
240
  * A container component for WYSIWYG (What You See Is What You Get) editor functionality.
65
241
  * @category Components
@@ -79,184 +255,46 @@ class AXWysiwygContainerComponent extends classes((MXInputBaseValueComponent), M
79
255
  */
80
256
  this.initialLine = input(3, /* @ts-ignore */
81
257
  ...(ngDevMode ? [{ debugName: "initialLine" }] : /* istanbul ignore next */ []));
82
- this.wysiwygService = inject(WysiwygService);
83
- this.isQuillLoaded = signal(false, /* @ts-ignore */
84
- ...(ngDevMode ? [{ debugName: "isQuillLoaded" }] : /* istanbul ignore next */ []));
85
- this.isEditorClean = signal(true, /* @ts-ignore */
86
- ...(ngDevMode ? [{ debugName: "isEditorClean" }] : /* istanbul ignore next */ []));
87
- this.wysiwyg = signal(null, /* @ts-ignore */
88
- ...(ngDevMode ? [{ debugName: "wysiwyg" }] : /* istanbul ignore next */ []));
89
- this.container = contentChild(AXWysiwygViewComponent, /* @ts-ignore */
90
- ...(ngDevMode ? [{ debugName: "container" }] : /* istanbul ignore next */ []));
258
+ /**
259
+ * Toolbar layout: `compact` groups block types and insert actions in a dropdown; `normal` shows all tools inline.
260
+ */
261
+ this.mode = input('compact', /* @ts-ignore */
262
+ ...(ngDevMode ? [{ debugName: "mode" }] : /* istanbul ignore next */ []));
263
+ this.wysiwyg = inject(AXWysiwyg);
264
+ this.context = inject(AXWysiwygContext);
265
+ this.platformId = inject(PLATFORM_ID);
266
+ this.destroyRef = inject(DestroyRef);
267
+ this.translation = inject(AXTranslationService);
268
+ this.view = contentChild(AXWysiwygViewComponent, /* @ts-ignore */
269
+ ...(ngDevMode ? [{ debugName: "view" }] : /* istanbul ignore next */ []));
91
270
  this.toolbar = contentChild(AXWysiwygToolbarComponent, /* @ts-ignore */
92
271
  ...(ngDevMode ? [{ debugName: "toolbar" }] : /* istanbul ignore next */ []));
93
- this.platformId = inject(PLATFORM_ID);
272
+ this.lastCommittedHtml = null;
273
+ this.alive = true;
94
274
  this.changeHandlerTimer = null;
95
- this.#init = afterNextRender(async () => {
96
- if (!isPlatformBrowser(this.platformId))
97
- return;
98
- const Quill = (await import('quill')).default;
99
- const icons = Quill.import('ui/icons');
100
- icons['bold'] = '<ax-icon class="ax-icon ax-icon-bold"></ax-icon>';
101
- icons['italic'] = '<ax-icon class="ax-icon ax-icon-italic"></ax-icon>';
102
- icons['underline'] = '<ax-icon class="ax-icon ax-icon-under-line"></ax-icon>';
103
- icons['strike'] = '<ax-icon class="ax-icon ax-icon-strike"></ax-icon>';
104
- icons['code-block'] = '<ax-icon class="ax-icon ax-icon-code"></ax-icon>';
105
- icons['color'] = '<ax-icon class="ax-icon ax-icon-color-palette"></ax-icon>';
106
- icons['background'] = '<ax-icon class="ax-icon ax-icon-highlight"></ax-icon>';
107
- icons.list['ordered'] = '<ax-icon class="ax-icon ax-icon-order-list"></ax-icon>';
108
- icons.list['bullet'] = '<ax-icon class="ax-icon ax-icon-un-order-list"></ax-icon>';
109
- icons['image'] = ' <ax-icon class="ax-icon ax-icon-image"></ax-icon>';
110
- icons['link'] = '<ax-icon class="ax-icon ax-icon-link"></ax-icon>';
111
- icons['video'] = '<ax-icon class="ax-icon ax-icon-attach"></ax-icon>';
112
- icons.direction[''] = '<ax-icon class="ax-icon ax-icon-paragraph "> </ax-icon>';
113
- icons.direction['rtl'] = '';
114
- icons.align[''] = '<ax-icon class="ax-icon ax-icon-align-left "></ax-icon>';
115
- icons.align['center'] = '<ax-icon class="ax-icon ax-icon-align-center"></ax-icon>';
116
- icons.align['justify'] = '<ax-icon class="ax-icon ax-icon-align-justify"></ax-icon>';
117
- icons.align['right'] = '<ax-icon class="ax-icon ax-icon-align-right"></ax-icon>';
118
- icons.undo = '<ax-icon class="ax-icon ax-icon-undo"></ax-icon>';
119
- icons.redo = ' <ax-icon class="ax-icon ax-icon-redo"></ax-icon>';
120
- await import('quill').then(async (e) => {
121
- const hljs = (await import('highlight.js')).default;
122
- const quill = new e.default(this.container().editor().nativeElement, {
123
- modules: {
124
- syntax: { hljs },
125
- toolbar: {
126
- container: this.toolbar()?.toolbar().nativeElement,
127
- handlers: {
128
- undo() {
129
- quill.getModule('history').undo();
130
- },
131
- redo() {
132
- quill.getModule('history').redo();
133
- },
134
- color: (value) => {
135
- this.wysiwygService.selectedColor.set(value);
136
- if (value)
137
- quill.format('color', value);
138
- else
139
- quill.format('color', false);
140
- },
141
- background: (value) => {
142
- this.wysiwygService.selectedBackgroundColor.set(value);
143
- if (value)
144
- quill.format('background', value);
145
- else
146
- quill.format('background', false);
147
- },
148
- },
149
- },
150
- history: {
151
- delay: 500, // ms between stack snapshots
152
- maxStack: 200, // undo/redo depth
153
- userOnly: true, // only record user changes (not API changes)
154
- },
155
- },
156
- theme: 'snow',
157
- });
158
- this.wysiwyg.set(quill);
159
- this.isQuillLoaded.set(true);
160
- });
161
- this.disabledChange.subscribe((disabled) => {
162
- if (disabled) {
163
- this.wysiwyg().disable();
164
- }
165
- else {
166
- this.wysiwyg().enable();
167
- }
168
- });
169
- this.readonlyChange.subscribe((readonly) => {
170
- if (readonly) {
171
- this.wysiwyg().disable();
172
- }
173
- else {
174
- this.wysiwyg().enable();
275
+ this.syncToolbarMode = effect(() => {
276
+ this.context.mode.set(this.mode());
277
+ }, /* @ts-ignore */
278
+ ...(ngDevMode ? [{ debugName: "syncToolbarMode" }] : /* istanbul ignore next */ []));
279
+ this.#init = afterNextRender(() => {
280
+ this.destroyRef.onDestroy(() => {
281
+ this.alive = false;
282
+ if (this.changeHandlerTimer != null) {
283
+ clearTimeout(this.changeHandlerTimer);
175
284
  }
285
+ this.wysiwyg.destroy();
176
286
  });
287
+ void this.initEditor();
177
288
  });
178
- this.#effect1 = effect(() => {
179
- if (!this.isQuillLoaded())
180
- return;
181
- if (this.placeHolder()) {
182
- this.wysiwyg().root.setAttribute('data-placeholder', this.placeHolder());
183
- }
184
- else {
185
- this.wysiwyg().root.setAttribute('data-placeholder', 'Write Your Message ...');
186
- }
187
- }, /* @ts-ignore */
188
- ...(ngDevMode ? [{ debugName: "#effect1" }] : /* istanbul ignore next */ []));
189
- this.#effect2 = effect(() => {
190
- if (this.isQuillLoaded() && this.value)
191
- this.setWysiwygContent(this.value);
192
- }, /* @ts-ignore */
193
- ...(ngDevMode ? [{ debugName: "#effect2" }] : /* istanbul ignore next */ []));
194
- this.#effect3 = effect(() => {
195
- if (this.isQuillLoaded()) {
196
- this.wysiwyg().on('text-change', this.changeHandler.bind(this));
197
- this.wysiwyg().on('selection-change', (range, oldRange) => {
198
- if (this.disabled)
199
- return;
200
- if (range && !oldRange) {
201
- this.emitOnFocusEvent();
202
- }
203
- else if (!range && oldRange) {
204
- this.emitOnBlurEvent();
205
- }
206
- if (range) {
207
- const format = this.wysiwyg().getFormat(range);
208
- this.wysiwygService.selectedColor.set(format['color']);
209
- this.wysiwygService.selectedBackgroundColor.set(format['background']);
210
- }
211
- });
212
- }
213
- }, /* @ts-ignore */
214
- ...(ngDevMode ? [{ debugName: "#effect3" }] : /* istanbul ignore next */ []));
215
289
  }
216
290
  #init;
217
- #effect1;
218
- #effect2;
219
- #effect3;
220
- changeHandler() {
221
- if (this.disabled)
222
- return;
223
- if (this.changeHandlerTimer) {
224
- clearTimeout(this.changeHandlerTimer);
225
- }
226
- this.changeHandlerTimer = setTimeout(() => {
227
- const value = this.wysiwyg()?.root.innerHTML;
228
- if (value === '<p><br></p>' || !value) {
229
- this.commitValue(null);
230
- if (this.isEditorClean())
231
- return;
232
- this.isEditorClean.set(true);
233
- }
234
- else {
235
- const delta = this.wysiwyg()?.getContents().ops;
236
- const converter = new QuillDeltaToHtmlConverter(delta, {
237
- inlineStyles: true,
238
- allowBackgroundClasses: true,
239
- });
240
- const html = converter.convert();
241
- this.commitValue(html, true);
242
- if (!this.isEditorClean())
243
- return;
244
- this.isEditorClean.set(false);
245
- }
246
- }, 300);
247
- }
248
- /** @ignore */
249
- ngOnDestroy() {
250
- this.wysiwyg()?.off('text-change', this.changeHandler);
251
- this.disabledChange.unsubscribe();
252
- }
253
291
  /**
254
292
  * Focuses the component.
255
293
  *
256
294
  * @returns void - No return value. The component gains focus.
257
295
  */
258
296
  focus() {
259
- this.wysiwyg().focus();
297
+ this.wysiwyg.focus();
260
298
  }
261
299
  /**
262
300
  * Removes focus from the component.
@@ -264,40 +302,100 @@ class AXWysiwygContainerComponent extends classes((MXInputBaseValueComponent), M
264
302
  * @returns void - No return value. The component loses focus.
265
303
  */
266
304
  blur() {
267
- this.wysiwyg().blur();
305
+ this.wysiwyg.blur();
268
306
  }
269
307
  /**
270
- * Checks if the component is focused or has any focused element.
271
- *
272
- * @returns boolean - True if the component has focus.
308
+ * Replaces the editor document. External value updates go through the form binding;
309
+ * this method does not emit a user change.
273
310
  */
274
- hasFocus() {
275
- return super.hasFocus();
276
- }
277
- /**
278
- * Sets the disabled state of the component.
279
- *
280
- * @param isDisabled - Whether the component should be disabled.
281
- * @returns void - No return value.
282
- */
283
- // override setDisabledState(isDisabled: boolean): void {
284
- // super.setDisabledState(isDisabled);
285
- // }
286
311
  setWysiwygContent(value) {
287
- const quill = this.wysiwyg();
288
- const delta = quill.clipboard.convert({ html: value });
289
- quill.setContents(delta);
312
+ this.syncEditorFromValue(value);
313
+ }
314
+ /** @ignore */
315
+ internalValueChanged(value) {
316
+ this.syncEditorFromValue(value);
317
+ }
318
+ async initEditor() {
319
+ if (!isPlatformBrowser(this.platformId)) {
320
+ return;
321
+ }
322
+ const editorElement = this.view()?.editor()?.nativeElement;
323
+ if (!editorElement) {
324
+ return;
325
+ }
326
+ void this.toolbar();
327
+ await this.wysiwyg.init(editorElement, {
328
+ content: this.value ?? '',
329
+ editable: !this.disabled && !this.readonly,
330
+ placeholder: this.placeHolder() ||
331
+ this.translation.translateSync(AX_WYSIWYG_I18N.placeholder, { waitForLoad: true }),
332
+ features: AX_DEFAULT_WYSIWYG_FEATURES,
333
+ onUpdate: () => {
334
+ if (this.disabled || this.readonly) {
335
+ return;
336
+ }
337
+ this.scheduleCommit();
338
+ },
339
+ onFocus: () => this.emitOnFocusEvent(),
340
+ onBlur: () => this.emitOnBlurEvent(),
341
+ });
342
+ if (!this.alive) {
343
+ return;
344
+ }
345
+ this.disabledChange.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {
346
+ this.context.disabled.set(this.disabled);
347
+ this.syncEditable();
348
+ });
349
+ this.readonlyChange.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {
350
+ this.context.readonly.set(this.readonly);
351
+ this.syncEditable();
352
+ });
353
+ this.context.disabled.set(this.disabled);
354
+ this.context.readonly.set(this.readonly);
355
+ this.syncEditable();
356
+ this.syncEditorFromValue(this.value);
290
357
  }
291
- get __hostName() {
292
- return this.name;
358
+ scheduleCommit() {
359
+ if (this.changeHandlerTimer != null) {
360
+ clearTimeout(this.changeHandlerTimer);
361
+ }
362
+ this.changeHandlerTimer = setTimeout(() => {
363
+ this.changeHandlerTimer = null;
364
+ if (this.disabled || this.readonly) {
365
+ return;
366
+ }
367
+ if (this.wysiwyg.isEmpty()) {
368
+ this.publishHtml(null);
369
+ return;
370
+ }
371
+ this.publishHtml(this.wysiwyg.getHTML());
372
+ }, 300);
293
373
  }
294
- get __hostClass() {
295
- const style = this.disabled ? 'ax-disable' : '';
296
- return style;
374
+ publishHtml(html) {
375
+ if (html === this.lastCommittedHtml) {
376
+ return;
377
+ }
378
+ this.lastCommittedHtml = html;
379
+ this.commitValue(html, true);
297
380
  }
298
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXWysiwygContainerComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
299
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "22.0.8", type: AXWysiwygContainerComponent, isStandalone: true, selector: "ax-wysiwyg-container", inputs: { look: { classPropertyName: "look", publicName: "look", isSignal: false, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: false, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: false, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: false, isRequired: false, transformFunction: null }, placeHolder: { classPropertyName: "placeHolder", publicName: "placeHolder", isSignal: true, isRequired: false, transformFunction: null }, initialLine: { classPropertyName: "initialLine", publicName: "initialLine", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onValueChanged: "onValueChanged" }, host: { properties: { "style.--ax-comp-wysiwyg-initial-line": "initialLine() + \"\"", "attr.name": "this.__hostName", "class": "this.__hostClass" } }, providers: [
300
- WysiwygService,
381
+ syncEditorFromValue(value) {
382
+ if (!this.wysiwyg.ready()) {
383
+ return;
384
+ }
385
+ const next = normalizeWysiwygHtml(value);
386
+ if (next === this.lastCommittedHtml) {
387
+ return;
388
+ }
389
+ this.lastCommittedHtml = next;
390
+ this.wysiwyg.setContent(next, false);
391
+ }
392
+ syncEditable() {
393
+ this.wysiwyg.setEditable(!this.disabled && !this.readonly);
394
+ }
395
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: AXWysiwygContainerComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
396
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "22.1.6", type: AXWysiwygContainerComponent, isStandalone: true, selector: "ax-wysiwyg-container", inputs: { look: { classPropertyName: "look", publicName: "look", isSignal: false, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: false, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: false, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: false, isRequired: false, transformFunction: null }, placeHolder: { classPropertyName: "placeHolder", publicName: "placeHolder", isSignal: true, isRequired: false, transformFunction: null }, initialLine: { classPropertyName: "initialLine", publicName: "initialLine", isSignal: true, isRequired: false, transformFunction: null }, mode: { classPropertyName: "mode", publicName: "mode", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onValueChanged: "onValueChanged" }, host: { attributes: { "ngSkipHydration": "true" }, properties: { "style.--ax-comp-wysiwyg-initial-line": "initialLine() + \"\"", "attr.name": "name || null", "class.ax-disable": "disabled", "class.ax-readonly": "readonly && !disabled", "class.ax-wysiwyg-compact": "mode() === 'compact'" } }, providers: [
397
+ AXWysiwyg,
398
+ AXWysiwygContext,
301
399
  { provide: AXComponent, useExisting: AXWysiwygContainerComponent },
302
400
  { provide: AXFocusableComponent, useExisting: AXWysiwygContainerComponent },
303
401
  { provide: AXValuableComponent, useExisting: AXWysiwygContainerComponent },
@@ -306,14 +404,20 @@ class AXWysiwygContainerComponent extends classes((MXInputBaseValueComponent), M
306
404
  useExisting: forwardRef(() => AXWysiwygContainerComponent),
307
405
  multi: true,
308
406
  },
309
- ], queries: [{ propertyName: "container", first: true, predicate: AXWysiwygViewComponent, descendants: true, isSignal: true }, { propertyName: "toolbar", first: true, predicate: AXWysiwygToolbarComponent, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"ax-editor-container ax-default {{ look }}\">\n <div class=\"ax-quill-container\">\n <ng-content></ng-content>\n </div>\n <ng-content select=\"ax-validation-rule\"> </ng-content>\n</div>\n<div class=\"ax-error-container\"></div>\n", styles: ["@layer properties;pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#c9d1d9;background:#0d1117}.hljs-doctag,.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-template-tag,.hljs-template-variable,.hljs-type,.hljs-variable.language_{color:#ff7b72}.hljs-title,.hljs-title.class_,.hljs-title.class_.inherited__,.hljs-title.function_{color:#d2a8ff}.hljs-attr,.hljs-attribute,.hljs-literal,.hljs-meta,.hljs-number,.hljs-operator,.hljs-variable,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id{color:#79c0ff}.hljs-regexp,.hljs-string,.hljs-meta .hljs-string{color:#a5d6ff}.hljs-built_in,.hljs-symbol{color:#ffa657}.hljs-comment,.hljs-code,.hljs-formula{color:#8b949e}.hljs-name,.hljs-quote,.hljs-selector-tag,.hljs-selector-pseudo{color:#7ee787}.hljs-subst{color:#c9d1d9}.hljs-section{color:#1f6feb;font-weight:700}.hljs-bullet{color:#f2cc60}.hljs-emphasis{color:#c9d1d9;font-style:italic}.hljs-strong{color:#c9d1d9;font-weight:700}.hljs-addition{color:#aff5b4;background-color:#033a16}.hljs-deletion{color:#ffdcd7;background-color:#67060c}.ql-container{box-sizing:border-box;font-family:Helvetica,Arial,sans-serif;font-size:13px;height:100%;margin:0;position:relative}.ql-container.ql-disabled .ql-tooltip{visibility:hidden}.ql-container:not(.ql-disabled) li[data-list=checked]>.ql-ui,.ql-container:not(.ql-disabled) li[data-list=unchecked]>.ql-ui{cursor:pointer}.ql-clipboard{left:-100000px;height:1px;overflow-y:hidden;position:absolute;top:50%}.ql-clipboard p{margin:0;padding:0}.ql-editor{box-sizing:border-box;counter-reset:list-0 list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9;line-height:1.42;height:100%;outline:none;overflow-y:auto;padding:12px 15px;tab-size:4;-moz-tab-size:4;text-align:left;white-space:pre-wrap;word-wrap:break-word}.ql-editor>*{cursor:text}.ql-editor p,.ql-editor ol,.ql-editor pre,.ql-editor blockquote,.ql-editor h1,.ql-editor h2,.ql-editor h3,.ql-editor h4,.ql-editor h5,.ql-editor h6{margin:0;padding:0}@supports (counter-set:none){.ql-editor p,.ql-editor h1,.ql-editor h2,.ql-editor h3,.ql-editor h4,.ql-editor h5,.ql-editor h6{counter-set:list-0 list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9}}@supports not (counter-set:none){.ql-editor p,.ql-editor h1,.ql-editor h2,.ql-editor h3,.ql-editor h4,.ql-editor h5,.ql-editor h6{counter-reset:list-0 list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9}}.ql-editor table{border-collapse:collapse}.ql-editor td{border:1px solid #000;padding:2px 5px}.ql-editor ol{padding-left:1.5em}.ql-editor li{list-style-type:none;padding-left:1.5em;position:relative}.ql-editor li>.ql-ui:before{display:inline-block;margin-left:-1.5em;margin-right:.3em;text-align:right;white-space:nowrap;width:1.2em}.ql-editor li[data-list=checked]>.ql-ui,.ql-editor li[data-list=unchecked]>.ql-ui{color:#777}.ql-editor li[data-list=bullet]>.ql-ui:before{content:\"\\2022\"}.ql-editor li[data-list=checked]>.ql-ui:before{content:\"\\2611\"}.ql-editor li[data-list=unchecked]>.ql-ui:before{content:\"\\2610\"}@supports (counter-set:none){.ql-editor li[data-list]{counter-set:list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9}}@supports not (counter-set:none){.ql-editor li[data-list]{counter-reset:list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9}}.ql-editor li[data-list=ordered]{counter-increment:list-0}.ql-editor li[data-list=ordered]>.ql-ui:before{content:counter(list-0,decimal) \". \"}.ql-editor li[data-list=ordered].ql-indent-1{counter-increment:list-1}.ql-editor li[data-list=ordered].ql-indent-1>.ql-ui:before{content:counter(list-1,lower-alpha) \". \"}@supports (counter-set:none){.ql-editor li[data-list].ql-indent-1{counter-set:list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9}}@supports not (counter-set:none){.ql-editor li[data-list].ql-indent-1{counter-reset:list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9}}.ql-editor li[data-list=ordered].ql-indent-2{counter-increment:list-2}.ql-editor li[data-list=ordered].ql-indent-2>.ql-ui:before{content:counter(list-2,lower-roman) \". \"}@supports (counter-set:none){.ql-editor li[data-list].ql-indent-2{counter-set:list-3 list-4 list-5 list-6 list-7 list-8 list-9}}@supports not (counter-set:none){.ql-editor li[data-list].ql-indent-2{counter-reset:list-3 list-4 list-5 list-6 list-7 list-8 list-9}}.ql-editor li[data-list=ordered].ql-indent-3{counter-increment:list-3}.ql-editor li[data-list=ordered].ql-indent-3>.ql-ui:before{content:counter(list-3,decimal) \". \"}@supports (counter-set:none){.ql-editor li[data-list].ql-indent-3{counter-set:list-4 list-5 list-6 list-7 list-8 list-9}}@supports not (counter-set:none){.ql-editor li[data-list].ql-indent-3{counter-reset:list-4 list-5 list-6 list-7 list-8 list-9}}.ql-editor li[data-list=ordered].ql-indent-4{counter-increment:list-4}.ql-editor li[data-list=ordered].ql-indent-4>.ql-ui:before{content:counter(list-4,lower-alpha) \". \"}@supports (counter-set:none){.ql-editor li[data-list].ql-indent-4{counter-set:list-5 list-6 list-7 list-8 list-9}}@supports not (counter-set:none){.ql-editor li[data-list].ql-indent-4{counter-reset:list-5 list-6 list-7 list-8 list-9}}.ql-editor li[data-list=ordered].ql-indent-5{counter-increment:list-5}.ql-editor li[data-list=ordered].ql-indent-5>.ql-ui:before{content:counter(list-5,lower-roman) \". \"}@supports (counter-set:none){.ql-editor li[data-list].ql-indent-5{counter-set:list-6 list-7 list-8 list-9}}@supports not (counter-set:none){.ql-editor li[data-list].ql-indent-5{counter-reset:list-6 list-7 list-8 list-9}}.ql-editor li[data-list=ordered].ql-indent-6{counter-increment:list-6}.ql-editor li[data-list=ordered].ql-indent-6>.ql-ui:before{content:counter(list-6,decimal) \". \"}@supports (counter-set:none){.ql-editor li[data-list].ql-indent-6{counter-set:list-7 list-8 list-9}}@supports not (counter-set:none){.ql-editor li[data-list].ql-indent-6{counter-reset:list-7 list-8 list-9}}.ql-editor li[data-list=ordered].ql-indent-7{counter-increment:list-7}.ql-editor li[data-list=ordered].ql-indent-7>.ql-ui:before{content:counter(list-7,lower-alpha) \". \"}@supports (counter-set:none){.ql-editor li[data-list].ql-indent-7{counter-set:list-8 list-9}}@supports not (counter-set:none){.ql-editor li[data-list].ql-indent-7{counter-reset:list-8 list-9}}.ql-editor li[data-list=ordered].ql-indent-8{counter-increment:list-8}.ql-editor li[data-list=ordered].ql-indent-8>.ql-ui:before{content:counter(list-8,lower-roman) \". \"}@supports (counter-set:none){.ql-editor li[data-list].ql-indent-8{counter-set:list-9}}@supports not (counter-set:none){.ql-editor li[data-list].ql-indent-8{counter-reset:list-9}}.ql-editor li[data-list=ordered].ql-indent-9{counter-increment:list-9}.ql-editor li[data-list=ordered].ql-indent-9>.ql-ui:before{content:counter(list-9,decimal) \". \"}.ql-editor .ql-indent-1:not(.ql-direction-rtl){padding-left:3em}.ql-editor li.ql-indent-1:not(.ql-direction-rtl){padding-left:4.5em}.ql-editor .ql-indent-1.ql-direction-rtl.ql-align-right{padding-right:3em}.ql-editor li.ql-indent-1.ql-direction-rtl.ql-align-right{padding-right:4.5em}.ql-editor .ql-indent-2:not(.ql-direction-rtl){padding-left:6em}.ql-editor li.ql-indent-2:not(.ql-direction-rtl){padding-left:7.5em}.ql-editor .ql-indent-2.ql-direction-rtl.ql-align-right{padding-right:6em}.ql-editor li.ql-indent-2.ql-direction-rtl.ql-align-right{padding-right:7.5em}.ql-editor .ql-indent-3:not(.ql-direction-rtl){padding-left:9em}.ql-editor li.ql-indent-3:not(.ql-direction-rtl){padding-left:10.5em}.ql-editor .ql-indent-3.ql-direction-rtl.ql-align-right{padding-right:9em}.ql-editor li.ql-indent-3.ql-direction-rtl.ql-align-right{padding-right:10.5em}.ql-editor .ql-indent-4:not(.ql-direction-rtl){padding-left:12em}.ql-editor li.ql-indent-4:not(.ql-direction-rtl){padding-left:13.5em}.ql-editor .ql-indent-4.ql-direction-rtl.ql-align-right{padding-right:12em}.ql-editor li.ql-indent-4.ql-direction-rtl.ql-align-right{padding-right:13.5em}.ql-editor .ql-indent-5:not(.ql-direction-rtl){padding-left:15em}.ql-editor li.ql-indent-5:not(.ql-direction-rtl){padding-left:16.5em}.ql-editor .ql-indent-5.ql-direction-rtl.ql-align-right{padding-right:15em}.ql-editor li.ql-indent-5.ql-direction-rtl.ql-align-right{padding-right:16.5em}.ql-editor .ql-indent-6:not(.ql-direction-rtl){padding-left:18em}.ql-editor li.ql-indent-6:not(.ql-direction-rtl){padding-left:19.5em}.ql-editor .ql-indent-6.ql-direction-rtl.ql-align-right{padding-right:18em}.ql-editor li.ql-indent-6.ql-direction-rtl.ql-align-right{padding-right:19.5em}.ql-editor .ql-indent-7:not(.ql-direction-rtl){padding-left:21em}.ql-editor li.ql-indent-7:not(.ql-direction-rtl){padding-left:22.5em}.ql-editor .ql-indent-7.ql-direction-rtl.ql-align-right{padding-right:21em}.ql-editor li.ql-indent-7.ql-direction-rtl.ql-align-right{padding-right:22.5em}.ql-editor .ql-indent-8:not(.ql-direction-rtl){padding-left:24em}.ql-editor li.ql-indent-8:not(.ql-direction-rtl){padding-left:25.5em}.ql-editor .ql-indent-8.ql-direction-rtl.ql-align-right{padding-right:24em}.ql-editor li.ql-indent-8.ql-direction-rtl.ql-align-right{padding-right:25.5em}.ql-editor .ql-indent-9:not(.ql-direction-rtl){padding-left:27em}.ql-editor li.ql-indent-9:not(.ql-direction-rtl){padding-left:28.5em}.ql-editor .ql-indent-9.ql-direction-rtl.ql-align-right{padding-right:27em}.ql-editor li.ql-indent-9.ql-direction-rtl.ql-align-right{padding-right:28.5em}.ql-editor li.ql-direction-rtl{padding-right:1.5em}.ql-editor li.ql-direction-rtl>.ql-ui:before{margin-left:.3em;margin-right:-1.5em;text-align:left}.ql-editor table{table-layout:fixed;width:100%}.ql-editor table td{outline:none}.ql-editor .ql-code-block-container{font-family:monospace}.ql-editor .ql-video{display:block;max-width:100%}.ql-editor .ql-video.ql-align-center{margin:0 auto}.ql-editor .ql-video.ql-align-right{margin:0 0 0 auto}.ql-editor .ql-bg-black{background-color:#000}.ql-editor .ql-bg-red{background-color:#e60000}.ql-editor .ql-bg-orange{background-color:#f90}.ql-editor .ql-bg-yellow{background-color:#ff0}.ql-editor .ql-bg-green{background-color:#008a00}.ql-editor .ql-bg-blue{background-color:#06c}.ql-editor .ql-bg-purple{background-color:#93f}.ql-editor .ql-color-white{color:#fff}.ql-editor .ql-color-red{color:#e60000}.ql-editor .ql-color-orange{color:#f90}.ql-editor .ql-color-yellow{color:#ff0}.ql-editor .ql-color-green{color:#008a00}.ql-editor .ql-color-blue{color:#06c}.ql-editor .ql-color-purple{color:#93f}.ql-editor .ql-font-serif{font-family:Georgia,Times New Roman,serif}.ql-editor .ql-font-monospace{font-family:Monaco,Courier New,monospace}.ql-editor .ql-size-small{font-size:.75em}.ql-editor .ql-size-large{font-size:1.5em}.ql-editor .ql-size-huge{font-size:2.5em}.ql-editor .ql-direction-rtl{direction:rtl;text-align:inherit}.ql-editor .ql-align-center{text-align:center}.ql-editor .ql-align-justify{text-align:justify}.ql-editor .ql-align-right{text-align:right}.ql-editor .ql-ui{position:absolute}.ql-editor.ql-blank:before{color:#0009;content:attr(data-placeholder);font-style:italic;left:15px;pointer-events:none;position:absolute;right:15px}.ql-snow.ql-toolbar:after,.ql-snow .ql-toolbar:after{clear:both;content:\"\";display:table}.ql-snow.ql-toolbar button,.ql-snow .ql-toolbar button{background:none;border:none;cursor:pointer;display:inline-block;float:left;height:24px;padding:3px 5px;width:28px}.ql-snow.ql-toolbar button svg,.ql-snow .ql-toolbar button svg{float:left;height:100%}.ql-snow.ql-toolbar button:active:hover,.ql-snow .ql-toolbar button:active:hover{outline:none}.ql-snow.ql-toolbar input.ql-image[type=file],.ql-snow .ql-toolbar input.ql-image[type=file]{display:none}.ql-snow.ql-toolbar button:hover,.ql-snow .ql-toolbar button:hover,.ql-snow.ql-toolbar button:focus,.ql-snow .ql-toolbar button:focus,.ql-snow.ql-toolbar button.ql-active,.ql-snow .ql-toolbar button.ql-active,.ql-snow.ql-toolbar .ql-picker-label:hover,.ql-snow .ql-toolbar .ql-picker-label:hover,.ql-snow.ql-toolbar .ql-picker-label.ql-active,.ql-snow .ql-toolbar .ql-picker-label.ql-active,.ql-snow.ql-toolbar .ql-picker-item:hover,.ql-snow .ql-toolbar .ql-picker-item:hover,.ql-snow.ql-toolbar .ql-picker-item.ql-selected,.ql-snow .ql-toolbar .ql-picker-item.ql-selected{color:#06c}.ql-snow.ql-toolbar button:hover .ql-fill,.ql-snow .ql-toolbar button:hover .ql-fill,.ql-snow.ql-toolbar button:focus .ql-fill,.ql-snow .ql-toolbar button:focus .ql-fill,.ql-snow.ql-toolbar button.ql-active .ql-fill,.ql-snow .ql-toolbar button.ql-active .ql-fill,.ql-snow.ql-toolbar .ql-picker-label:hover .ql-fill,.ql-snow .ql-toolbar .ql-picker-label:hover .ql-fill,.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-fill,.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-fill,.ql-snow.ql-toolbar .ql-picker-item:hover .ql-fill,.ql-snow .ql-toolbar .ql-picker-item:hover .ql-fill,.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-fill,.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-fill,.ql-snow.ql-toolbar button:hover .ql-stroke.ql-fill,.ql-snow .ql-toolbar button:hover .ql-stroke.ql-fill,.ql-snow.ql-toolbar button:focus .ql-stroke.ql-fill,.ql-snow .ql-toolbar button:focus .ql-stroke.ql-fill,.ql-snow.ql-toolbar button.ql-active .ql-stroke.ql-fill,.ql-snow .ql-toolbar button.ql-active .ql-stroke.ql-fill,.ql-snow.ql-toolbar .ql-picker-label:hover .ql-stroke.ql-fill,.ql-snow .ql-toolbar .ql-picker-label:hover .ql-stroke.ql-fill,.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke.ql-fill,.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke.ql-fill,.ql-snow.ql-toolbar .ql-picker-item:hover .ql-stroke.ql-fill,.ql-snow .ql-toolbar .ql-picker-item:hover .ql-stroke.ql-fill,.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke.ql-fill,.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke.ql-fill{fill:#06c}.ql-snow.ql-toolbar button:hover .ql-stroke,.ql-snow .ql-toolbar button:hover .ql-stroke,.ql-snow.ql-toolbar button:focus .ql-stroke,.ql-snow .ql-toolbar button:focus .ql-stroke,.ql-snow.ql-toolbar button.ql-active .ql-stroke,.ql-snow .ql-toolbar button.ql-active .ql-stroke,.ql-snow.ql-toolbar .ql-picker-label:hover .ql-stroke,.ql-snow .ql-toolbar .ql-picker-label:hover .ql-stroke,.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke,.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke,.ql-snow.ql-toolbar .ql-picker-item:hover .ql-stroke,.ql-snow .ql-toolbar .ql-picker-item:hover .ql-stroke,.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke,.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke,.ql-snow.ql-toolbar button:hover .ql-stroke-miter,.ql-snow .ql-toolbar button:hover .ql-stroke-miter,.ql-snow.ql-toolbar button:focus .ql-stroke-miter,.ql-snow .ql-toolbar button:focus .ql-stroke-miter,.ql-snow.ql-toolbar button.ql-active .ql-stroke-miter,.ql-snow .ql-toolbar button.ql-active .ql-stroke-miter,.ql-snow.ql-toolbar .ql-picker-label:hover .ql-stroke-miter,.ql-snow .ql-toolbar .ql-picker-label:hover .ql-stroke-miter,.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke-miter,.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke-miter,.ql-snow.ql-toolbar .ql-picker-item:hover .ql-stroke-miter,.ql-snow .ql-toolbar .ql-picker-item:hover .ql-stroke-miter,.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke-miter,.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke-miter{stroke:#06c}@media(pointer:coarse){.ql-snow.ql-toolbar button:hover:not(.ql-active),.ql-snow .ql-toolbar button:hover:not(.ql-active){color:#444}.ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-fill,.ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-fill,.ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-stroke.ql-fill,.ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-stroke.ql-fill{fill:#444}.ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-stroke,.ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-stroke,.ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-stroke-miter,.ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-stroke-miter{stroke:#444}}.ql-snow,.ql-snow *{box-sizing:border-box}.ql-snow .ql-hidden{display:none}.ql-snow .ql-out-bottom,.ql-snow .ql-out-top{visibility:hidden}.ql-snow .ql-tooltip{position:absolute;transform:translateY(10px)}.ql-snow .ql-tooltip a{cursor:pointer;text-decoration:none}.ql-snow .ql-tooltip.ql-flip{transform:translateY(-10px)}.ql-snow .ql-formats{display:inline-block;vertical-align:middle}.ql-snow .ql-formats:after{clear:both;content:\"\";display:table}.ql-snow .ql-stroke{fill:none;stroke:#444;stroke-linecap:round;stroke-linejoin:round;stroke-width:2}.ql-snow .ql-stroke-miter{fill:none;stroke:#444;stroke-miterlimit:10;stroke-width:2}.ql-snow .ql-fill,.ql-snow .ql-stroke.ql-fill{fill:#444}.ql-snow .ql-empty{fill:none}.ql-snow .ql-even{fill-rule:evenodd}.ql-snow .ql-thin,.ql-snow .ql-stroke.ql-thin{stroke-width:1}.ql-snow .ql-transparent{opacity:.4}.ql-snow .ql-direction svg:last-child{display:none}.ql-snow .ql-direction.ql-active svg:last-child{display:inline}.ql-snow .ql-direction.ql-active svg:first-child{display:none}.ql-snow .ql-editor h1{font-size:2em}.ql-snow .ql-editor h2{font-size:1.5em}.ql-snow .ql-editor h3{font-size:1.17em}.ql-snow .ql-editor h4{font-size:1em}.ql-snow .ql-editor h5{font-size:.83em}.ql-snow .ql-editor h6{font-size:.67em}.ql-snow .ql-editor a{text-decoration:underline}.ql-snow .ql-editor blockquote{border-left:4px solid #ccc;margin-bottom:5px;margin-top:5px;padding-left:16px}.ql-snow .ql-editor code,.ql-snow .ql-editor .ql-code-block-container{background-color:#f0f0f0;border-radius:3px}.ql-snow .ql-editor .ql-code-block-container{margin-bottom:5px;margin-top:5px;padding:5px 10px}.ql-snow .ql-editor code{font-size:85%;padding:2px 4px}.ql-snow .ql-editor .ql-code-block-container{background-color:#23241f;color:#f8f8f2;overflow:visible}.ql-snow .ql-editor img{max-width:100%}.ql-snow .ql-picker{color:#444;display:inline-block;float:left;font-size:14px;font-weight:500;height:24px;position:relative;vertical-align:middle}.ql-snow .ql-picker-label{cursor:pointer;display:inline-block;height:100%;padding-left:8px;padding-right:2px;position:relative;width:100%}.ql-snow .ql-picker-label:before{display:inline-block;line-height:22px}.ql-snow .ql-picker-options{background-color:#fff;display:none;min-width:100%;padding:4px 8px;position:absolute;white-space:nowrap}.ql-snow .ql-picker-options .ql-picker-item{cursor:pointer;display:block;padding-bottom:5px;padding-top:5px}.ql-snow .ql-picker.ql-expanded .ql-picker-label{color:#ccc;z-index:2}.ql-snow .ql-picker.ql-expanded .ql-picker-label .ql-fill{fill:#ccc}.ql-snow .ql-picker.ql-expanded .ql-picker-label .ql-stroke{stroke:#ccc}.ql-snow .ql-picker.ql-expanded .ql-picker-options{display:block;margin-top:-1px;top:100%;z-index:1}.ql-snow .ql-color-picker,.ql-snow .ql-icon-picker{width:28px}.ql-snow .ql-color-picker .ql-picker-label,.ql-snow .ql-icon-picker .ql-picker-label{padding:2px 4px}.ql-snow .ql-color-picker .ql-picker-label svg,.ql-snow .ql-icon-picker .ql-picker-label svg{right:4px}.ql-snow .ql-icon-picker .ql-picker-options{padding:4px 0}.ql-snow .ql-icon-picker .ql-picker-item{height:24px;width:24px;padding:2px 4px}.ql-snow .ql-color-picker .ql-picker-options{padding:3px 5px;width:152px}.ql-snow .ql-color-picker .ql-picker-item{border:1px solid transparent;float:left;height:16px;margin:2px;padding:0;width:16px}.ql-snow .ql-picker:not(.ql-color-picker):not(.ql-icon-picker) svg{position:absolute;margin-top:-9px;right:0;top:50%;width:18px}.ql-snow .ql-picker.ql-header .ql-picker-label[data-label]:not([data-label=\"\"]):before,.ql-snow .ql-picker.ql-font .ql-picker-label[data-label]:not([data-label=\"\"]):before,.ql-snow .ql-picker.ql-size .ql-picker-label[data-label]:not([data-label=\"\"]):before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-label]:not([data-label=\"\"]):before,.ql-snow .ql-picker.ql-font .ql-picker-item[data-label]:not([data-label=\"\"]):before,.ql-snow .ql-picker.ql-size .ql-picker-item[data-label]:not([data-label=\"\"]):before{content:attr(data-label)}.ql-snow .ql-picker.ql-header{width:98px}.ql-snow .ql-picker.ql-header .ql-picker-label:before,.ql-snow .ql-picker.ql-header .ql-picker-item:before{content:\"Normal\"}.ql-snow .ql-picker.ql-header .ql-picker-label[data-value=\"1\"]:before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-value=\"1\"]:before{content:\"Heading 1\"}.ql-snow .ql-picker.ql-header .ql-picker-label[data-value=\"2\"]:before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-value=\"2\"]:before{content:\"Heading 2\"}.ql-snow .ql-picker.ql-header .ql-picker-label[data-value=\"3\"]:before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-value=\"3\"]:before{content:\"Heading 3\"}.ql-snow .ql-picker.ql-header .ql-picker-label[data-value=\"4\"]:before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-value=\"4\"]:before{content:\"Heading 4\"}.ql-snow .ql-picker.ql-header .ql-picker-label[data-value=\"5\"]:before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-value=\"5\"]:before{content:\"Heading 5\"}.ql-snow .ql-picker.ql-header .ql-picker-label[data-value=\"6\"]:before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-value=\"6\"]:before{content:\"Heading 6\"}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value=\"1\"]:before{font-size:2em}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value=\"2\"]:before{font-size:1.5em}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value=\"3\"]:before{font-size:1.17em}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value=\"4\"]:before{font-size:1em}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value=\"5\"]:before{font-size:.83em}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value=\"6\"]:before{font-size:.67em}.ql-snow .ql-picker.ql-font{width:108px}.ql-snow .ql-picker.ql-font .ql-picker-label:before,.ql-snow .ql-picker.ql-font .ql-picker-item:before{content:\"Sans Serif\"}.ql-snow .ql-picker.ql-font .ql-picker-label[data-value=serif]:before,.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=serif]:before{content:\"Serif\"}.ql-snow .ql-picker.ql-font .ql-picker-label[data-value=monospace]:before,.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=monospace]:before{content:\"Monospace\"}.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=serif]:before{font-family:Georgia,Times New Roman,serif}.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=monospace]:before{font-family:Monaco,Courier New,monospace}.ql-snow .ql-picker.ql-size{width:98px}.ql-snow .ql-picker.ql-size .ql-picker-label:before,.ql-snow .ql-picker.ql-size .ql-picker-item:before{content:\"Normal\"}.ql-snow .ql-picker.ql-size .ql-picker-label[data-value=small]:before,.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=small]:before{content:\"Small\"}.ql-snow .ql-picker.ql-size .ql-picker-label[data-value=large]:before,.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=large]:before{content:\"Large\"}.ql-snow .ql-picker.ql-size .ql-picker-label[data-value=huge]:before,.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=huge]:before{content:\"Huge\"}.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=small]:before{font-size:10px}.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=large]:before{font-size:18px}.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=huge]:before{font-size:32px}.ql-snow .ql-color-picker.ql-background .ql-picker-item{background-color:#fff}.ql-snow .ql-color-picker.ql-color .ql-picker-item{background-color:#000}.ql-code-block-container{position:relative}.ql-code-block-container .ql-ui{right:5px;top:5px}.ql-toolbar.ql-snow{border:1px solid #ccc;box-sizing:border-box;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;padding:8px}.ql-toolbar.ql-snow .ql-formats{margin-right:15px}.ql-toolbar.ql-snow .ql-picker-label{border:1px solid transparent}.ql-toolbar.ql-snow .ql-picker-options{border:1px solid transparent;box-shadow:#0003 0 2px 8px}.ql-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-label,.ql-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-options{border-color:#ccc}.ql-toolbar.ql-snow .ql-color-picker .ql-picker-item.ql-selected,.ql-toolbar.ql-snow .ql-color-picker .ql-picker-item:hover{border-color:#000}.ql-toolbar.ql-snow+.ql-container.ql-snow{border-top:0}.ql-snow .ql-tooltip{background-color:#fff;border:1px solid #ccc;box-shadow:0 0 5px #ddd;color:#444;padding:5px 12px;white-space:nowrap}.ql-snow .ql-tooltip:before{content:\"Visit URL:\";line-height:26px;margin-right:8px}.ql-snow .ql-tooltip input[type=text]{display:none;border:1px solid #ccc;font-size:13px;height:26px;margin:0;padding:3px 5px;width:170px}.ql-snow .ql-tooltip a.ql-preview{display:inline-block;max-width:200px;overflow-x:hidden;text-overflow:ellipsis;vertical-align:top}.ql-snow .ql-tooltip a.ql-action:after{border-right:1px solid #ccc;content:\"Edit\";margin-left:16px;padding-right:8px}.ql-snow .ql-tooltip a.ql-remove:before{content:\"Remove\";margin-left:8px}.ql-snow .ql-tooltip a{line-height:26px}.ql-snow .ql-tooltip.ql-editing a.ql-preview,.ql-snow .ql-tooltip.ql-editing a.ql-remove{display:none}.ql-snow .ql-tooltip.ql-editing input[type=text]{display:inline-block}.ql-snow .ql-tooltip.ql-editing a.ql-action:after{border-right:0;content:\"Save\";padding-right:0}.ql-snow .ql-tooltip[data-mode=link]:before{content:\"Enter link:\"}.ql-snow .ql-tooltip[data-mode=formula]:before{content:\"Enter formula:\"}.ql-snow .ql-tooltip[data-mode=video]:before{content:\"Enter video:\"}.ql-snow a{color:#06c}.ql-container.ql-snow{border:1px solid #ccc}@layer components{ax-wysiwyg-container{display:block;height:auto;width:100%}ax-wysiwyg-container.ax-disable{cursor:not-allowed;opacity:50%}ax-wysiwyg-container>.ax-editor-container{position:relative;display:block;height:auto!important;overflow:visible;padding:calc(var(--spacing, .25rem) * 0)!important;--ax-comp-editor-space-start-size: 0;--ax-comp-editor-space-end-size: 0;--ax-comp-wysiwyg-editor-min-height: calc(var(--ax-comp-wysiwyg-initial-line, 3) * 1.42em + 1.5rem)}ax-wysiwyg-container ax-wysiwyg-toolbar ax-prefix,ax-wysiwyg-container ax-wysiwyg-toolbar ax-suffix{gap:calc(var(--spacing, .25rem) * 1)!important}ax-wysiwyg-container .ax-quill-container{display:flex;height:auto;flex-direction:column}ax-wysiwyg-container ax-wysiwyg-view{height:auto;flex-shrink:0;flex-grow:0;flex-basis:auto;min-height:var(--ax-comp-wysiwyg-editor-min-height)}ax-wysiwyg-container .ql-snow.ql-toolbar button,ax-wysiwyg-container .ql-snow .ql-toolbar button{padding:calc(var(--spacing, .25rem) * 0)!important}ax-wysiwyg-container .ql-container.ql-snow{border-style:var(--tw-border-style)!important;border-width:0px!important;height:auto;min-height:var(--ax-comp-wysiwyg-editor-min-height)}ax-wysiwyg-container .ql-tooltip{left:calc(var(--spacing, .25rem) * 0)!important}ax-wysiwyg-container .ql-toolbar.ql-snow{border-style:var(--tw-border-style)!important;border-width:0px!important}ax-wysiwyg-container ax-wysiwyg-view:not(:first-child){border-top-style:var(--tw-border-style);border-top-width:1px;border-color:rgba(var(--ax-sys-color-border-surface))}ax-wysiwyg-container ax-wysiwyg-toolbar{border-top-style:var(--tw-border-style);border-top-width:1px;border-color:rgba(var(--ax-sys-color-border-surface))}ax-wysiwyg-container .ql-ui{background-color:rgba(var(--ax-sys-color-lighter-surface))!important;color:rgba(var(--ax-sys-color-on-surface))!important}ax-wysiwyg-container .ql-snow .ql-editor .ql-code-block-container{background-color:rgba(var(--ax-sys-color-surface))!important}ax-wysiwyg-container .ql-editor[data-placeholder]:before{color:var(--color-gray-300, oklch(87.2% .01 258.338))!important}ax-wysiwyg-container .ql-editor{text-align:start;height:auto;min-height:var(--ax-comp-wysiwyg-editor-min-height)}ax-wysiwyg-container ax-button button{height:auto!important;width:auto!important}ax-wysiwyg-container .ql-formats{margin:calc(var(--spacing, .25rem) * 0)!important;display:flex!important}ax-wysiwyg-container .ql-toolbar.ql-snow .ql-formats{margin-inline-end:5px!important}ax-wysiwyg-container .ql-snow .ql-picker{color:inherit!important}ax-wysiwyg-container .ql-snow .ql-picker-label{padding-inline-start:calc(var(--spacing, .25rem) * 5)}ax-wysiwyg-container .ql-picker-item{color:var(--color-black, #000)!important}ax-wysiwyg-container .ql-picker-item:where(.ax-dark,.ax-dark *):not(:where(.ax-light,.ax-light *)){color:var(--color-white, #fff)!important}ax-wysiwyg-container .ql-toolbar.ql-snow .ql-picker-options{background-color:var(--color-white, #fff)!important}ax-wysiwyg-container .ql-toolbar.ql-snow .ql-picker-options:where(.ax-dark,.ax-dark *):not(:where(.ax-light,.ax-light *)){background-color:var(--color-black, #000)!important}}@property --tw-border-style{syntax: \"*\"; inherits: false; initial-value: solid;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style: solid}}}\n/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */\n/*!\n Theme: GitHub Dark\n Description: Dark theme as seen on github.com\n Author: github.com\n Maintainer: @Hirse\n Updated: 2021-05-15\n\n Outdated base version: https://github.com/primer/github-syntax-dark\n Current colors taken from GitHub's CSS\n*/\n/*!\n * Quill Editor v2.0.3\n * https://quilljs.com\n * Copyright (c) 2017-2024, Slab\n * Copyright (c) 2014, Jason Chen\n * Copyright (c) 2013, salesforce.com\n */\n"], encapsulation: i0.ViewEncapsulation.None }); }
407
+ ], queries: [{ propertyName: "view", first: true, predicate: AXWysiwygViewComponent, descendants: true, isSignal: true }, { propertyName: "toolbar", first: true, predicate: AXWysiwygToolbarComponent, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<div\n class=\"ax-editor-container ax-default {{ look }}\"\n [class.ax-state-disabled]=\"disabled\"\n [class.ax-state-readonly]=\"readonly && !disabled\"\n>\n <div class=\"ax-wysiwyg-editor-inner\">\n <ng-content></ng-content>\n </div>\n <ng-content select=\"ax-validation-rule\"> </ng-content>\n</div>\n<div class=\"ax-error-container\"></div>\n", styles: ["@layer properties;@layer components{ax-wysiwyg-container{display:block;height:auto;width:100%;max-width:100%;min-width:calc(var(--spacing, .25rem) * 0);overflow:visible}ax-wysiwyg-container>.ax-editor-container{position:relative;display:block;height:auto;max-width:100%;min-width:calc(var(--spacing, .25rem) * 0);padding:calc(var(--spacing, .25rem) * 0);overflow:visible!important;--ax-comp-editor-space-start-size: 0;--ax-comp-editor-space-end-size: 0;--ax-comp-wysiwyg-editor-min-height: calc(var(--ax-comp-wysiwyg-initial-line, 3) * 1.42em + 1.5rem)}:is(ax-wysiwyg-container>.ax-editor-container.ax-state-disabled,ax-wysiwyg-container>.ax-editor-container.ax-state-readonly) ax-wysiwyg-toolbar{pointer-events:none;opacity:60%}ax-wysiwyg-container .ax-wysiwyg-editor-inner{display:flex;height:auto;flex-direction:column;overflow:visible}ax-wysiwyg-container ax-wysiwyg-view{position:relative;z-index:0;height:auto;width:100%;max-width:100%;min-width:calc(var(--spacing, .25rem) * 0);flex-shrink:0;flex-grow:0;flex-basis:auto;min-height:var(--ax-comp-wysiwyg-editor-min-height)}ax-wysiwyg-container ax-wysiwyg-view:not(:first-child),ax-wysiwyg-container ax-wysiwyg-toolbar:not(:first-child){border-top-style:var(--tw-border-style);border-top-width:1px;border-color:rgba(var(--ax-sys-color-border-surface))}ax-wysiwyg-container .ax-wysiwyg-editor-host,ax-wysiwyg-container .ax-wysiwyg-editor-host.tiptap,ax-wysiwyg-container .ax-wysiwyg-editor-host.ProseMirror,ax-wysiwyg-container .ax-wysiwyg-editor-host .tiptap,ax-wysiwyg-container .ax-wysiwyg-editor-host .ProseMirror{text-align:start;--tw-outline-style: none;outline-style:none;overflow-wrap:break-word;height:auto;width:100%;max-width:100%;max-height:24rem;overflow-y:auto;min-height:var(--ax-comp-wysiwyg-editor-min-height);padding:.75rem;color:inherit}ax-wysiwyg-container .ax-wysiwyg-editor-host p.is-editor-empty:first-child:before,ax-wysiwyg-container .ax-wysiwyg-editor-host .tiptap p.is-editor-empty:first-child:before,ax-wysiwyg-container .ax-wysiwyg-editor-host .ProseMirror p.is-editor-empty:first-child:before{pointer-events:none;float:inline-start;height:calc(var(--spacing, .25rem) * 0);color:rgba(var(--ax-sys-color-text-default));content:attr(data-placeholder)}@supports (color: color-mix(in lab,red,red)){ax-wysiwyg-container .ax-wysiwyg-editor-host p.is-editor-empty:first-child:before,ax-wysiwyg-container .ax-wysiwyg-editor-host .tiptap p.is-editor-empty:first-child:before,ax-wysiwyg-container .ax-wysiwyg-editor-host .ProseMirror p.is-editor-empty:first-child:before{color:color-mix(in oklab,rgba(var(--ax-sys-color-text-default)) 80%,transparent)}}ax-wysiwyg-container .ax-wysiwyg-editor-host p,ax-wysiwyg-container .ax-wysiwyg-editor-host .tiptap p,ax-wysiwyg-container .ax-wysiwyg-editor-host .ProseMirror p{margin-block:calc(var(--spacing, .25rem) * 2)}ax-wysiwyg-container .ax-wysiwyg-editor-host :is(h1,.tiptap h1,.ProseMirror h1){margin-block:calc(var(--spacing, .25rem) * 2);font-size:var(--text-2xl, 1.5rem);line-height:var(--tw-leading, var(--text-2xl--line-height, calc(2 / 1.5)));--tw-leading: var(--leading-tight, 1.25);line-height:var(--leading-tight, 1.25);--tw-font-weight: var(--font-weight-bold, 700);font-weight:var(--font-weight-bold, 700)}ax-wysiwyg-container .ax-wysiwyg-editor-host :is(h2,.tiptap h2,.ProseMirror h2){margin-block:calc(var(--spacing, .25rem) * 2);font-size:var(--text-xl, 1.25rem);line-height:var(--tw-leading, var(--text-xl--line-height, calc(1.75 / 1.25)));--tw-leading: var(--leading-snug, 1.375);line-height:var(--leading-snug, 1.375);--tw-font-weight: var(--font-weight-semibold, 600);font-weight:var(--font-weight-semibold, 600)}ax-wysiwyg-container .ax-wysiwyg-editor-host :is(h3,.tiptap h3,.ProseMirror h3){margin-block:calc(var(--spacing, .25rem) * 2);font-size:var(--text-lg, 1.125rem);line-height:var(--tw-leading, var(--text-lg--line-height, calc(1.75 / 1.125)));--tw-leading: var(--leading-snug, 1.375);line-height:var(--leading-snug, 1.375);--tw-font-weight: var(--font-weight-semibold, 600);font-weight:var(--font-weight-semibold, 600)}ax-wysiwyg-container .ax-wysiwyg-editor-host :is(h4,.tiptap h4,.ProseMirror h4){margin-block:calc(var(--spacing, .25rem) * 2);font-size:var(--text-base, 1rem);line-height:var(--tw-leading, var(--text-base--line-height, 1.5 ));--tw-leading: var(--leading-normal, 1.5);line-height:var(--leading-normal, 1.5);--tw-font-weight: var(--font-weight-semibold, 600);font-weight:var(--font-weight-semibold, 600)}ax-wysiwyg-container .ax-wysiwyg-editor-host :is(h5,.tiptap h5,.ProseMirror h5){margin-block:calc(var(--spacing, .25rem) * 2);font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));--tw-leading: var(--leading-normal, 1.5);line-height:var(--leading-normal, 1.5);--tw-font-weight: var(--font-weight-semibold, 600);font-weight:var(--font-weight-semibold, 600)}ax-wysiwyg-container .ax-wysiwyg-editor-host :is(h6,.tiptap h6,.ProseMirror h6){margin-block:calc(var(--spacing, .25rem) * 2);font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));--tw-leading: var(--leading-normal, 1.5);line-height:var(--leading-normal, 1.5);--tw-font-weight: var(--font-weight-medium, 500);font-weight:var(--font-weight-medium, 500)}ax-wysiwyg-container .ax-wysiwyg-editor-host :is(ul,.tiptap ul,.ProseMirror ul),ax-wysiwyg-container .ax-wysiwyg-editor-host :is(ol,.tiptap ol,.ProseMirror ol){margin-block:calc(var(--spacing, .25rem) * 2);padding-inline-start:1.5rem;list-style-position:outside}ax-wysiwyg-container .ax-wysiwyg-editor-host :is(ul,.tiptap ul,.ProseMirror ul){list-style-type:disc}ax-wysiwyg-container .ax-wysiwyg-editor-host :is(ol,.tiptap ol,.ProseMirror ol){list-style-type:decimal}ax-wysiwyg-container .ax-wysiwyg-editor-host :is(li,.tiptap li,.ProseMirror li){display:list-item}ax-wysiwyg-container .ax-wysiwyg-editor-host :is(li>p,.tiptap li>p,.ProseMirror li>p){margin:0}ax-wysiwyg-container .ax-wysiwyg-editor-host blockquote,ax-wysiwyg-container .ax-wysiwyg-editor-host .tiptap blockquote,ax-wysiwyg-container .ax-wysiwyg-editor-host .ProseMirror blockquote{margin-block:calc(var(--spacing, .25rem) * 2);border-inline-start-style:var(--tw-border-style);border-inline-start-width:4px;border-color:rgba(var(--ax-sys-color-border-surface));padding-inline-start:calc(var(--spacing, .25rem) * 4);font-style:italic}ax-wysiwyg-container .ax-wysiwyg-editor-host pre,ax-wysiwyg-container .ax-wysiwyg-editor-host .tiptap pre,ax-wysiwyg-container .ax-wysiwyg-editor-host .ProseMirror pre{margin-block:calc(var(--spacing, .25rem) * 2);max-width:100%;overflow-x:auto;border-radius:var(--radius-md, .375rem);padding-inline:calc(var(--spacing, .25rem) * 3);padding-block:calc(var(--spacing, .25rem) * 2);font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));background:#0d1117;color:#c9d1d9}ax-wysiwyg-container .ax-wysiwyg-editor-host code,ax-wysiwyg-container .ax-wysiwyg-editor-host .tiptap code,ax-wysiwyg-container .ax-wysiwyg-editor-host .ProseMirror code{border-radius:var(--radius-sm, .25rem);padding-inline:calc(var(--spacing, .25rem) * 1);padding-block:calc(var(--spacing, .25rem) * .5);font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));background:currentColor}@supports (color: color-mix(in lab,red,red)){ax-wysiwyg-container .ax-wysiwyg-editor-host code,ax-wysiwyg-container .ax-wysiwyg-editor-host .tiptap code,ax-wysiwyg-container .ax-wysiwyg-editor-host .ProseMirror code{background:color-mix(in srgb,currentColor 8%,transparent)}}ax-wysiwyg-container .ax-wysiwyg-editor-host pre code,ax-wysiwyg-container .ax-wysiwyg-editor-host .tiptap pre code,ax-wysiwyg-container .ax-wysiwyg-editor-host .ProseMirror pre code{background:transparent;padding:0}ax-wysiwyg-container .ax-wysiwyg-editor-host a,ax-wysiwyg-container .ax-wysiwyg-editor-host .tiptap a,ax-wysiwyg-container .ax-wysiwyg-editor-host .ProseMirror a{color:rgba(var(--ax-sys-color-primary-surface));text-decoration-line:underline}ax-wysiwyg-container .ax-wysiwyg-editor-host img,ax-wysiwyg-container .ax-wysiwyg-editor-host .tiptap img,ax-wysiwyg-container .ax-wysiwyg-editor-host .ProseMirror img,ax-wysiwyg-container .ax-wysiwyg-editor-host iframe,ax-wysiwyg-container .ax-wysiwyg-editor-host .tiptap iframe,ax-wysiwyg-container .ax-wysiwyg-editor-host .ProseMirror iframe{max-width:100%;height:auto}ax-wysiwyg-container .ax-wysiwyg-editor-host [data-wysiwyg-video] iframe{aspect-ratio:16 / 9;width:100%;min-height:12rem}ax-wysiwyg-container ax-wysiwyg-toolbar .ax-wysiwyg-toolbar-tools{display:flex;flex-wrap:wrap;align-items:center;gap:calc(var(--spacing, .25rem) * 1);padding:calc(var(--spacing, .25rem) * 1)}ax-wysiwyg-container ax-wysiwyg-toolbar .ax-wysiwyg-tool-group{display:flex;flex-wrap:wrap;align-items:center;gap:calc(var(--spacing, .25rem) * .5)}ax-wysiwyg-container ax-wysiwyg-toolbar .ax-wysiwyg-tool-group+.ax-wysiwyg-tool-group:before{content:\"\";margin-inline:calc(var(--spacing, .25rem) * 1);height:calc(var(--spacing, .25rem) * 4);width:1px;flex-shrink:0;align-self:center;background:var(--color-border-surface)}ax-wysiwyg-container ax-wysiwyg-toolbar ax-button.ax-button-icon>button.ax-state-selected,ax-wysiwyg-container ax-wysiwyg-toolbar ax-button.ax-button-icon>button.ax-state-selected:hover{background-color:rgba(var(--ax-sys-color-primary-surface));color:rgba(var(--ax-sys-color-primary-surface))}@supports (color: color-mix(in lab,red,red)){ax-wysiwyg-container ax-wysiwyg-toolbar ax-button.ax-button-icon>button.ax-state-selected,ax-wysiwyg-container ax-wysiwyg-toolbar ax-button.ax-button-icon>button.ax-state-selected:hover{background-color:color-mix(in oklab,rgba(var(--ax-sys-color-primary-surface)) 15%,transparent)}}ax-wysiwyg-container ax-wysiwyg-toolbar ax-wysiwyg-font-style .ax-wysiwyg-font-size-combo .ax-editor-container{min-height:var(--height-default);height:var(--height-default)}}@property --tw-border-style{syntax: \"*\"; inherits: false; initial-value: solid;}@property --tw-leading{syntax: \"*\"; inherits: false;}@property --tw-font-weight{syntax: \"*\"; inherits: false;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style: solid;--tw-leading: initial;--tw-font-weight: initial}}}\n/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */\n"], encapsulation: i0.ViewEncapsulation.None }); }
310
408
  }
311
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXWysiwygContainerComponent, decorators: [{
409
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: AXWysiwygContainerComponent, decorators: [{
312
410
  type: Component,
313
411
  args: [{ selector: 'ax-wysiwyg-container', inputs: ['look', 'readonly', 'disabled', 'value'], outputs: ['onValueChanged'], encapsulation: ViewEncapsulation.None, host: {
314
412
  '[style.--ax-comp-wysiwyg-initial-line]': 'initialLine() + ""',
413
+ '[attr.name]': 'name || null',
414
+ '[class.ax-disable]': 'disabled',
415
+ '[class.ax-readonly]': 'readonly && !disabled',
416
+ '[class.ax-wysiwyg-compact]': "mode() === 'compact'",
417
+ ngSkipHydration: 'true',
315
418
  }, providers: [
316
- WysiwygService,
419
+ AXWysiwyg,
420
+ AXWysiwygContext,
317
421
  { provide: AXComponent, useExisting: AXWysiwygContainerComponent },
318
422
  { provide: AXFocusableComponent, useExisting: AXWysiwygContainerComponent },
319
423
  { provide: AXValuableComponent, useExisting: AXWysiwygContainerComponent },
@@ -322,95 +426,398 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
322
426
  useExisting: forwardRef(() => AXWysiwygContainerComponent),
323
427
  multi: true,
324
428
  },
325
- ], template: "<div class=\"ax-editor-container ax-default {{ look }}\">\n <div class=\"ax-quill-container\">\n <ng-content></ng-content>\n </div>\n <ng-content select=\"ax-validation-rule\"> </ng-content>\n</div>\n<div class=\"ax-error-container\"></div>\n", styles: ["@layer properties;pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#c9d1d9;background:#0d1117}.hljs-doctag,.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-template-tag,.hljs-template-variable,.hljs-type,.hljs-variable.language_{color:#ff7b72}.hljs-title,.hljs-title.class_,.hljs-title.class_.inherited__,.hljs-title.function_{color:#d2a8ff}.hljs-attr,.hljs-attribute,.hljs-literal,.hljs-meta,.hljs-number,.hljs-operator,.hljs-variable,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id{color:#79c0ff}.hljs-regexp,.hljs-string,.hljs-meta .hljs-string{color:#a5d6ff}.hljs-built_in,.hljs-symbol{color:#ffa657}.hljs-comment,.hljs-code,.hljs-formula{color:#8b949e}.hljs-name,.hljs-quote,.hljs-selector-tag,.hljs-selector-pseudo{color:#7ee787}.hljs-subst{color:#c9d1d9}.hljs-section{color:#1f6feb;font-weight:700}.hljs-bullet{color:#f2cc60}.hljs-emphasis{color:#c9d1d9;font-style:italic}.hljs-strong{color:#c9d1d9;font-weight:700}.hljs-addition{color:#aff5b4;background-color:#033a16}.hljs-deletion{color:#ffdcd7;background-color:#67060c}.ql-container{box-sizing:border-box;font-family:Helvetica,Arial,sans-serif;font-size:13px;height:100%;margin:0;position:relative}.ql-container.ql-disabled .ql-tooltip{visibility:hidden}.ql-container:not(.ql-disabled) li[data-list=checked]>.ql-ui,.ql-container:not(.ql-disabled) li[data-list=unchecked]>.ql-ui{cursor:pointer}.ql-clipboard{left:-100000px;height:1px;overflow-y:hidden;position:absolute;top:50%}.ql-clipboard p{margin:0;padding:0}.ql-editor{box-sizing:border-box;counter-reset:list-0 list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9;line-height:1.42;height:100%;outline:none;overflow-y:auto;padding:12px 15px;tab-size:4;-moz-tab-size:4;text-align:left;white-space:pre-wrap;word-wrap:break-word}.ql-editor>*{cursor:text}.ql-editor p,.ql-editor ol,.ql-editor pre,.ql-editor blockquote,.ql-editor h1,.ql-editor h2,.ql-editor h3,.ql-editor h4,.ql-editor h5,.ql-editor h6{margin:0;padding:0}@supports (counter-set:none){.ql-editor p,.ql-editor h1,.ql-editor h2,.ql-editor h3,.ql-editor h4,.ql-editor h5,.ql-editor h6{counter-set:list-0 list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9}}@supports not (counter-set:none){.ql-editor p,.ql-editor h1,.ql-editor h2,.ql-editor h3,.ql-editor h4,.ql-editor h5,.ql-editor h6{counter-reset:list-0 list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9}}.ql-editor table{border-collapse:collapse}.ql-editor td{border:1px solid #000;padding:2px 5px}.ql-editor ol{padding-left:1.5em}.ql-editor li{list-style-type:none;padding-left:1.5em;position:relative}.ql-editor li>.ql-ui:before{display:inline-block;margin-left:-1.5em;margin-right:.3em;text-align:right;white-space:nowrap;width:1.2em}.ql-editor li[data-list=checked]>.ql-ui,.ql-editor li[data-list=unchecked]>.ql-ui{color:#777}.ql-editor li[data-list=bullet]>.ql-ui:before{content:\"\\2022\"}.ql-editor li[data-list=checked]>.ql-ui:before{content:\"\\2611\"}.ql-editor li[data-list=unchecked]>.ql-ui:before{content:\"\\2610\"}@supports (counter-set:none){.ql-editor li[data-list]{counter-set:list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9}}@supports not (counter-set:none){.ql-editor li[data-list]{counter-reset:list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9}}.ql-editor li[data-list=ordered]{counter-increment:list-0}.ql-editor li[data-list=ordered]>.ql-ui:before{content:counter(list-0,decimal) \". \"}.ql-editor li[data-list=ordered].ql-indent-1{counter-increment:list-1}.ql-editor li[data-list=ordered].ql-indent-1>.ql-ui:before{content:counter(list-1,lower-alpha) \". \"}@supports (counter-set:none){.ql-editor li[data-list].ql-indent-1{counter-set:list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9}}@supports not (counter-set:none){.ql-editor li[data-list].ql-indent-1{counter-reset:list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9}}.ql-editor li[data-list=ordered].ql-indent-2{counter-increment:list-2}.ql-editor li[data-list=ordered].ql-indent-2>.ql-ui:before{content:counter(list-2,lower-roman) \". \"}@supports (counter-set:none){.ql-editor li[data-list].ql-indent-2{counter-set:list-3 list-4 list-5 list-6 list-7 list-8 list-9}}@supports not (counter-set:none){.ql-editor li[data-list].ql-indent-2{counter-reset:list-3 list-4 list-5 list-6 list-7 list-8 list-9}}.ql-editor li[data-list=ordered].ql-indent-3{counter-increment:list-3}.ql-editor li[data-list=ordered].ql-indent-3>.ql-ui:before{content:counter(list-3,decimal) \". \"}@supports (counter-set:none){.ql-editor li[data-list].ql-indent-3{counter-set:list-4 list-5 list-6 list-7 list-8 list-9}}@supports not (counter-set:none){.ql-editor li[data-list].ql-indent-3{counter-reset:list-4 list-5 list-6 list-7 list-8 list-9}}.ql-editor li[data-list=ordered].ql-indent-4{counter-increment:list-4}.ql-editor li[data-list=ordered].ql-indent-4>.ql-ui:before{content:counter(list-4,lower-alpha) \". \"}@supports (counter-set:none){.ql-editor li[data-list].ql-indent-4{counter-set:list-5 list-6 list-7 list-8 list-9}}@supports not (counter-set:none){.ql-editor li[data-list].ql-indent-4{counter-reset:list-5 list-6 list-7 list-8 list-9}}.ql-editor li[data-list=ordered].ql-indent-5{counter-increment:list-5}.ql-editor li[data-list=ordered].ql-indent-5>.ql-ui:before{content:counter(list-5,lower-roman) \". \"}@supports (counter-set:none){.ql-editor li[data-list].ql-indent-5{counter-set:list-6 list-7 list-8 list-9}}@supports not (counter-set:none){.ql-editor li[data-list].ql-indent-5{counter-reset:list-6 list-7 list-8 list-9}}.ql-editor li[data-list=ordered].ql-indent-6{counter-increment:list-6}.ql-editor li[data-list=ordered].ql-indent-6>.ql-ui:before{content:counter(list-6,decimal) \". \"}@supports (counter-set:none){.ql-editor li[data-list].ql-indent-6{counter-set:list-7 list-8 list-9}}@supports not (counter-set:none){.ql-editor li[data-list].ql-indent-6{counter-reset:list-7 list-8 list-9}}.ql-editor li[data-list=ordered].ql-indent-7{counter-increment:list-7}.ql-editor li[data-list=ordered].ql-indent-7>.ql-ui:before{content:counter(list-7,lower-alpha) \". \"}@supports (counter-set:none){.ql-editor li[data-list].ql-indent-7{counter-set:list-8 list-9}}@supports not (counter-set:none){.ql-editor li[data-list].ql-indent-7{counter-reset:list-8 list-9}}.ql-editor li[data-list=ordered].ql-indent-8{counter-increment:list-8}.ql-editor li[data-list=ordered].ql-indent-8>.ql-ui:before{content:counter(list-8,lower-roman) \". \"}@supports (counter-set:none){.ql-editor li[data-list].ql-indent-8{counter-set:list-9}}@supports not (counter-set:none){.ql-editor li[data-list].ql-indent-8{counter-reset:list-9}}.ql-editor li[data-list=ordered].ql-indent-9{counter-increment:list-9}.ql-editor li[data-list=ordered].ql-indent-9>.ql-ui:before{content:counter(list-9,decimal) \". \"}.ql-editor .ql-indent-1:not(.ql-direction-rtl){padding-left:3em}.ql-editor li.ql-indent-1:not(.ql-direction-rtl){padding-left:4.5em}.ql-editor .ql-indent-1.ql-direction-rtl.ql-align-right{padding-right:3em}.ql-editor li.ql-indent-1.ql-direction-rtl.ql-align-right{padding-right:4.5em}.ql-editor .ql-indent-2:not(.ql-direction-rtl){padding-left:6em}.ql-editor li.ql-indent-2:not(.ql-direction-rtl){padding-left:7.5em}.ql-editor .ql-indent-2.ql-direction-rtl.ql-align-right{padding-right:6em}.ql-editor li.ql-indent-2.ql-direction-rtl.ql-align-right{padding-right:7.5em}.ql-editor .ql-indent-3:not(.ql-direction-rtl){padding-left:9em}.ql-editor li.ql-indent-3:not(.ql-direction-rtl){padding-left:10.5em}.ql-editor .ql-indent-3.ql-direction-rtl.ql-align-right{padding-right:9em}.ql-editor li.ql-indent-3.ql-direction-rtl.ql-align-right{padding-right:10.5em}.ql-editor .ql-indent-4:not(.ql-direction-rtl){padding-left:12em}.ql-editor li.ql-indent-4:not(.ql-direction-rtl){padding-left:13.5em}.ql-editor .ql-indent-4.ql-direction-rtl.ql-align-right{padding-right:12em}.ql-editor li.ql-indent-4.ql-direction-rtl.ql-align-right{padding-right:13.5em}.ql-editor .ql-indent-5:not(.ql-direction-rtl){padding-left:15em}.ql-editor li.ql-indent-5:not(.ql-direction-rtl){padding-left:16.5em}.ql-editor .ql-indent-5.ql-direction-rtl.ql-align-right{padding-right:15em}.ql-editor li.ql-indent-5.ql-direction-rtl.ql-align-right{padding-right:16.5em}.ql-editor .ql-indent-6:not(.ql-direction-rtl){padding-left:18em}.ql-editor li.ql-indent-6:not(.ql-direction-rtl){padding-left:19.5em}.ql-editor .ql-indent-6.ql-direction-rtl.ql-align-right{padding-right:18em}.ql-editor li.ql-indent-6.ql-direction-rtl.ql-align-right{padding-right:19.5em}.ql-editor .ql-indent-7:not(.ql-direction-rtl){padding-left:21em}.ql-editor li.ql-indent-7:not(.ql-direction-rtl){padding-left:22.5em}.ql-editor .ql-indent-7.ql-direction-rtl.ql-align-right{padding-right:21em}.ql-editor li.ql-indent-7.ql-direction-rtl.ql-align-right{padding-right:22.5em}.ql-editor .ql-indent-8:not(.ql-direction-rtl){padding-left:24em}.ql-editor li.ql-indent-8:not(.ql-direction-rtl){padding-left:25.5em}.ql-editor .ql-indent-8.ql-direction-rtl.ql-align-right{padding-right:24em}.ql-editor li.ql-indent-8.ql-direction-rtl.ql-align-right{padding-right:25.5em}.ql-editor .ql-indent-9:not(.ql-direction-rtl){padding-left:27em}.ql-editor li.ql-indent-9:not(.ql-direction-rtl){padding-left:28.5em}.ql-editor .ql-indent-9.ql-direction-rtl.ql-align-right{padding-right:27em}.ql-editor li.ql-indent-9.ql-direction-rtl.ql-align-right{padding-right:28.5em}.ql-editor li.ql-direction-rtl{padding-right:1.5em}.ql-editor li.ql-direction-rtl>.ql-ui:before{margin-left:.3em;margin-right:-1.5em;text-align:left}.ql-editor table{table-layout:fixed;width:100%}.ql-editor table td{outline:none}.ql-editor .ql-code-block-container{font-family:monospace}.ql-editor .ql-video{display:block;max-width:100%}.ql-editor .ql-video.ql-align-center{margin:0 auto}.ql-editor .ql-video.ql-align-right{margin:0 0 0 auto}.ql-editor .ql-bg-black{background-color:#000}.ql-editor .ql-bg-red{background-color:#e60000}.ql-editor .ql-bg-orange{background-color:#f90}.ql-editor .ql-bg-yellow{background-color:#ff0}.ql-editor .ql-bg-green{background-color:#008a00}.ql-editor .ql-bg-blue{background-color:#06c}.ql-editor .ql-bg-purple{background-color:#93f}.ql-editor .ql-color-white{color:#fff}.ql-editor .ql-color-red{color:#e60000}.ql-editor .ql-color-orange{color:#f90}.ql-editor .ql-color-yellow{color:#ff0}.ql-editor .ql-color-green{color:#008a00}.ql-editor .ql-color-blue{color:#06c}.ql-editor .ql-color-purple{color:#93f}.ql-editor .ql-font-serif{font-family:Georgia,Times New Roman,serif}.ql-editor .ql-font-monospace{font-family:Monaco,Courier New,monospace}.ql-editor .ql-size-small{font-size:.75em}.ql-editor .ql-size-large{font-size:1.5em}.ql-editor .ql-size-huge{font-size:2.5em}.ql-editor .ql-direction-rtl{direction:rtl;text-align:inherit}.ql-editor .ql-align-center{text-align:center}.ql-editor .ql-align-justify{text-align:justify}.ql-editor .ql-align-right{text-align:right}.ql-editor .ql-ui{position:absolute}.ql-editor.ql-blank:before{color:#0009;content:attr(data-placeholder);font-style:italic;left:15px;pointer-events:none;position:absolute;right:15px}.ql-snow.ql-toolbar:after,.ql-snow .ql-toolbar:after{clear:both;content:\"\";display:table}.ql-snow.ql-toolbar button,.ql-snow .ql-toolbar button{background:none;border:none;cursor:pointer;display:inline-block;float:left;height:24px;padding:3px 5px;width:28px}.ql-snow.ql-toolbar button svg,.ql-snow .ql-toolbar button svg{float:left;height:100%}.ql-snow.ql-toolbar button:active:hover,.ql-snow .ql-toolbar button:active:hover{outline:none}.ql-snow.ql-toolbar input.ql-image[type=file],.ql-snow .ql-toolbar input.ql-image[type=file]{display:none}.ql-snow.ql-toolbar button:hover,.ql-snow .ql-toolbar button:hover,.ql-snow.ql-toolbar button:focus,.ql-snow .ql-toolbar button:focus,.ql-snow.ql-toolbar button.ql-active,.ql-snow .ql-toolbar button.ql-active,.ql-snow.ql-toolbar .ql-picker-label:hover,.ql-snow .ql-toolbar .ql-picker-label:hover,.ql-snow.ql-toolbar .ql-picker-label.ql-active,.ql-snow .ql-toolbar .ql-picker-label.ql-active,.ql-snow.ql-toolbar .ql-picker-item:hover,.ql-snow .ql-toolbar .ql-picker-item:hover,.ql-snow.ql-toolbar .ql-picker-item.ql-selected,.ql-snow .ql-toolbar .ql-picker-item.ql-selected{color:#06c}.ql-snow.ql-toolbar button:hover .ql-fill,.ql-snow .ql-toolbar button:hover .ql-fill,.ql-snow.ql-toolbar button:focus .ql-fill,.ql-snow .ql-toolbar button:focus .ql-fill,.ql-snow.ql-toolbar button.ql-active .ql-fill,.ql-snow .ql-toolbar button.ql-active .ql-fill,.ql-snow.ql-toolbar .ql-picker-label:hover .ql-fill,.ql-snow .ql-toolbar .ql-picker-label:hover .ql-fill,.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-fill,.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-fill,.ql-snow.ql-toolbar .ql-picker-item:hover .ql-fill,.ql-snow .ql-toolbar .ql-picker-item:hover .ql-fill,.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-fill,.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-fill,.ql-snow.ql-toolbar button:hover .ql-stroke.ql-fill,.ql-snow .ql-toolbar button:hover .ql-stroke.ql-fill,.ql-snow.ql-toolbar button:focus .ql-stroke.ql-fill,.ql-snow .ql-toolbar button:focus .ql-stroke.ql-fill,.ql-snow.ql-toolbar button.ql-active .ql-stroke.ql-fill,.ql-snow .ql-toolbar button.ql-active .ql-stroke.ql-fill,.ql-snow.ql-toolbar .ql-picker-label:hover .ql-stroke.ql-fill,.ql-snow .ql-toolbar .ql-picker-label:hover .ql-stroke.ql-fill,.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke.ql-fill,.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke.ql-fill,.ql-snow.ql-toolbar .ql-picker-item:hover .ql-stroke.ql-fill,.ql-snow .ql-toolbar .ql-picker-item:hover .ql-stroke.ql-fill,.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke.ql-fill,.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke.ql-fill{fill:#06c}.ql-snow.ql-toolbar button:hover .ql-stroke,.ql-snow .ql-toolbar button:hover .ql-stroke,.ql-snow.ql-toolbar button:focus .ql-stroke,.ql-snow .ql-toolbar button:focus .ql-stroke,.ql-snow.ql-toolbar button.ql-active .ql-stroke,.ql-snow .ql-toolbar button.ql-active .ql-stroke,.ql-snow.ql-toolbar .ql-picker-label:hover .ql-stroke,.ql-snow .ql-toolbar .ql-picker-label:hover .ql-stroke,.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke,.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke,.ql-snow.ql-toolbar .ql-picker-item:hover .ql-stroke,.ql-snow .ql-toolbar .ql-picker-item:hover .ql-stroke,.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke,.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke,.ql-snow.ql-toolbar button:hover .ql-stroke-miter,.ql-snow .ql-toolbar button:hover .ql-stroke-miter,.ql-snow.ql-toolbar button:focus .ql-stroke-miter,.ql-snow .ql-toolbar button:focus .ql-stroke-miter,.ql-snow.ql-toolbar button.ql-active .ql-stroke-miter,.ql-snow .ql-toolbar button.ql-active .ql-stroke-miter,.ql-snow.ql-toolbar .ql-picker-label:hover .ql-stroke-miter,.ql-snow .ql-toolbar .ql-picker-label:hover .ql-stroke-miter,.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke-miter,.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke-miter,.ql-snow.ql-toolbar .ql-picker-item:hover .ql-stroke-miter,.ql-snow .ql-toolbar .ql-picker-item:hover .ql-stroke-miter,.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke-miter,.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke-miter{stroke:#06c}@media(pointer:coarse){.ql-snow.ql-toolbar button:hover:not(.ql-active),.ql-snow .ql-toolbar button:hover:not(.ql-active){color:#444}.ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-fill,.ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-fill,.ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-stroke.ql-fill,.ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-stroke.ql-fill{fill:#444}.ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-stroke,.ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-stroke,.ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-stroke-miter,.ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-stroke-miter{stroke:#444}}.ql-snow,.ql-snow *{box-sizing:border-box}.ql-snow .ql-hidden{display:none}.ql-snow .ql-out-bottom,.ql-snow .ql-out-top{visibility:hidden}.ql-snow .ql-tooltip{position:absolute;transform:translateY(10px)}.ql-snow .ql-tooltip a{cursor:pointer;text-decoration:none}.ql-snow .ql-tooltip.ql-flip{transform:translateY(-10px)}.ql-snow .ql-formats{display:inline-block;vertical-align:middle}.ql-snow .ql-formats:after{clear:both;content:\"\";display:table}.ql-snow .ql-stroke{fill:none;stroke:#444;stroke-linecap:round;stroke-linejoin:round;stroke-width:2}.ql-snow .ql-stroke-miter{fill:none;stroke:#444;stroke-miterlimit:10;stroke-width:2}.ql-snow .ql-fill,.ql-snow .ql-stroke.ql-fill{fill:#444}.ql-snow .ql-empty{fill:none}.ql-snow .ql-even{fill-rule:evenodd}.ql-snow .ql-thin,.ql-snow .ql-stroke.ql-thin{stroke-width:1}.ql-snow .ql-transparent{opacity:.4}.ql-snow .ql-direction svg:last-child{display:none}.ql-snow .ql-direction.ql-active svg:last-child{display:inline}.ql-snow .ql-direction.ql-active svg:first-child{display:none}.ql-snow .ql-editor h1{font-size:2em}.ql-snow .ql-editor h2{font-size:1.5em}.ql-snow .ql-editor h3{font-size:1.17em}.ql-snow .ql-editor h4{font-size:1em}.ql-snow .ql-editor h5{font-size:.83em}.ql-snow .ql-editor h6{font-size:.67em}.ql-snow .ql-editor a{text-decoration:underline}.ql-snow .ql-editor blockquote{border-left:4px solid #ccc;margin-bottom:5px;margin-top:5px;padding-left:16px}.ql-snow .ql-editor code,.ql-snow .ql-editor .ql-code-block-container{background-color:#f0f0f0;border-radius:3px}.ql-snow .ql-editor .ql-code-block-container{margin-bottom:5px;margin-top:5px;padding:5px 10px}.ql-snow .ql-editor code{font-size:85%;padding:2px 4px}.ql-snow .ql-editor .ql-code-block-container{background-color:#23241f;color:#f8f8f2;overflow:visible}.ql-snow .ql-editor img{max-width:100%}.ql-snow .ql-picker{color:#444;display:inline-block;float:left;font-size:14px;font-weight:500;height:24px;position:relative;vertical-align:middle}.ql-snow .ql-picker-label{cursor:pointer;display:inline-block;height:100%;padding-left:8px;padding-right:2px;position:relative;width:100%}.ql-snow .ql-picker-label:before{display:inline-block;line-height:22px}.ql-snow .ql-picker-options{background-color:#fff;display:none;min-width:100%;padding:4px 8px;position:absolute;white-space:nowrap}.ql-snow .ql-picker-options .ql-picker-item{cursor:pointer;display:block;padding-bottom:5px;padding-top:5px}.ql-snow .ql-picker.ql-expanded .ql-picker-label{color:#ccc;z-index:2}.ql-snow .ql-picker.ql-expanded .ql-picker-label .ql-fill{fill:#ccc}.ql-snow .ql-picker.ql-expanded .ql-picker-label .ql-stroke{stroke:#ccc}.ql-snow .ql-picker.ql-expanded .ql-picker-options{display:block;margin-top:-1px;top:100%;z-index:1}.ql-snow .ql-color-picker,.ql-snow .ql-icon-picker{width:28px}.ql-snow .ql-color-picker .ql-picker-label,.ql-snow .ql-icon-picker .ql-picker-label{padding:2px 4px}.ql-snow .ql-color-picker .ql-picker-label svg,.ql-snow .ql-icon-picker .ql-picker-label svg{right:4px}.ql-snow .ql-icon-picker .ql-picker-options{padding:4px 0}.ql-snow .ql-icon-picker .ql-picker-item{height:24px;width:24px;padding:2px 4px}.ql-snow .ql-color-picker .ql-picker-options{padding:3px 5px;width:152px}.ql-snow .ql-color-picker .ql-picker-item{border:1px solid transparent;float:left;height:16px;margin:2px;padding:0;width:16px}.ql-snow .ql-picker:not(.ql-color-picker):not(.ql-icon-picker) svg{position:absolute;margin-top:-9px;right:0;top:50%;width:18px}.ql-snow .ql-picker.ql-header .ql-picker-label[data-label]:not([data-label=\"\"]):before,.ql-snow .ql-picker.ql-font .ql-picker-label[data-label]:not([data-label=\"\"]):before,.ql-snow .ql-picker.ql-size .ql-picker-label[data-label]:not([data-label=\"\"]):before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-label]:not([data-label=\"\"]):before,.ql-snow .ql-picker.ql-font .ql-picker-item[data-label]:not([data-label=\"\"]):before,.ql-snow .ql-picker.ql-size .ql-picker-item[data-label]:not([data-label=\"\"]):before{content:attr(data-label)}.ql-snow .ql-picker.ql-header{width:98px}.ql-snow .ql-picker.ql-header .ql-picker-label:before,.ql-snow .ql-picker.ql-header .ql-picker-item:before{content:\"Normal\"}.ql-snow .ql-picker.ql-header .ql-picker-label[data-value=\"1\"]:before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-value=\"1\"]:before{content:\"Heading 1\"}.ql-snow .ql-picker.ql-header .ql-picker-label[data-value=\"2\"]:before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-value=\"2\"]:before{content:\"Heading 2\"}.ql-snow .ql-picker.ql-header .ql-picker-label[data-value=\"3\"]:before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-value=\"3\"]:before{content:\"Heading 3\"}.ql-snow .ql-picker.ql-header .ql-picker-label[data-value=\"4\"]:before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-value=\"4\"]:before{content:\"Heading 4\"}.ql-snow .ql-picker.ql-header .ql-picker-label[data-value=\"5\"]:before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-value=\"5\"]:before{content:\"Heading 5\"}.ql-snow .ql-picker.ql-header .ql-picker-label[data-value=\"6\"]:before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-value=\"6\"]:before{content:\"Heading 6\"}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value=\"1\"]:before{font-size:2em}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value=\"2\"]:before{font-size:1.5em}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value=\"3\"]:before{font-size:1.17em}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value=\"4\"]:before{font-size:1em}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value=\"5\"]:before{font-size:.83em}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value=\"6\"]:before{font-size:.67em}.ql-snow .ql-picker.ql-font{width:108px}.ql-snow .ql-picker.ql-font .ql-picker-label:before,.ql-snow .ql-picker.ql-font .ql-picker-item:before{content:\"Sans Serif\"}.ql-snow .ql-picker.ql-font .ql-picker-label[data-value=serif]:before,.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=serif]:before{content:\"Serif\"}.ql-snow .ql-picker.ql-font .ql-picker-label[data-value=monospace]:before,.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=monospace]:before{content:\"Monospace\"}.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=serif]:before{font-family:Georgia,Times New Roman,serif}.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=monospace]:before{font-family:Monaco,Courier New,monospace}.ql-snow .ql-picker.ql-size{width:98px}.ql-snow .ql-picker.ql-size .ql-picker-label:before,.ql-snow .ql-picker.ql-size .ql-picker-item:before{content:\"Normal\"}.ql-snow .ql-picker.ql-size .ql-picker-label[data-value=small]:before,.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=small]:before{content:\"Small\"}.ql-snow .ql-picker.ql-size .ql-picker-label[data-value=large]:before,.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=large]:before{content:\"Large\"}.ql-snow .ql-picker.ql-size .ql-picker-label[data-value=huge]:before,.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=huge]:before{content:\"Huge\"}.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=small]:before{font-size:10px}.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=large]:before{font-size:18px}.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=huge]:before{font-size:32px}.ql-snow .ql-color-picker.ql-background .ql-picker-item{background-color:#fff}.ql-snow .ql-color-picker.ql-color .ql-picker-item{background-color:#000}.ql-code-block-container{position:relative}.ql-code-block-container .ql-ui{right:5px;top:5px}.ql-toolbar.ql-snow{border:1px solid #ccc;box-sizing:border-box;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;padding:8px}.ql-toolbar.ql-snow .ql-formats{margin-right:15px}.ql-toolbar.ql-snow .ql-picker-label{border:1px solid transparent}.ql-toolbar.ql-snow .ql-picker-options{border:1px solid transparent;box-shadow:#0003 0 2px 8px}.ql-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-label,.ql-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-options{border-color:#ccc}.ql-toolbar.ql-snow .ql-color-picker .ql-picker-item.ql-selected,.ql-toolbar.ql-snow .ql-color-picker .ql-picker-item:hover{border-color:#000}.ql-toolbar.ql-snow+.ql-container.ql-snow{border-top:0}.ql-snow .ql-tooltip{background-color:#fff;border:1px solid #ccc;box-shadow:0 0 5px #ddd;color:#444;padding:5px 12px;white-space:nowrap}.ql-snow .ql-tooltip:before{content:\"Visit URL:\";line-height:26px;margin-right:8px}.ql-snow .ql-tooltip input[type=text]{display:none;border:1px solid #ccc;font-size:13px;height:26px;margin:0;padding:3px 5px;width:170px}.ql-snow .ql-tooltip a.ql-preview{display:inline-block;max-width:200px;overflow-x:hidden;text-overflow:ellipsis;vertical-align:top}.ql-snow .ql-tooltip a.ql-action:after{border-right:1px solid #ccc;content:\"Edit\";margin-left:16px;padding-right:8px}.ql-snow .ql-tooltip a.ql-remove:before{content:\"Remove\";margin-left:8px}.ql-snow .ql-tooltip a{line-height:26px}.ql-snow .ql-tooltip.ql-editing a.ql-preview,.ql-snow .ql-tooltip.ql-editing a.ql-remove{display:none}.ql-snow .ql-tooltip.ql-editing input[type=text]{display:inline-block}.ql-snow .ql-tooltip.ql-editing a.ql-action:after{border-right:0;content:\"Save\";padding-right:0}.ql-snow .ql-tooltip[data-mode=link]:before{content:\"Enter link:\"}.ql-snow .ql-tooltip[data-mode=formula]:before{content:\"Enter formula:\"}.ql-snow .ql-tooltip[data-mode=video]:before{content:\"Enter video:\"}.ql-snow a{color:#06c}.ql-container.ql-snow{border:1px solid #ccc}@layer components{ax-wysiwyg-container{display:block;height:auto;width:100%}ax-wysiwyg-container.ax-disable{cursor:not-allowed;opacity:50%}ax-wysiwyg-container>.ax-editor-container{position:relative;display:block;height:auto!important;overflow:visible;padding:calc(var(--spacing, .25rem) * 0)!important;--ax-comp-editor-space-start-size: 0;--ax-comp-editor-space-end-size: 0;--ax-comp-wysiwyg-editor-min-height: calc(var(--ax-comp-wysiwyg-initial-line, 3) * 1.42em + 1.5rem)}ax-wysiwyg-container ax-wysiwyg-toolbar ax-prefix,ax-wysiwyg-container ax-wysiwyg-toolbar ax-suffix{gap:calc(var(--spacing, .25rem) * 1)!important}ax-wysiwyg-container .ax-quill-container{display:flex;height:auto;flex-direction:column}ax-wysiwyg-container ax-wysiwyg-view{height:auto;flex-shrink:0;flex-grow:0;flex-basis:auto;min-height:var(--ax-comp-wysiwyg-editor-min-height)}ax-wysiwyg-container .ql-snow.ql-toolbar button,ax-wysiwyg-container .ql-snow .ql-toolbar button{padding:calc(var(--spacing, .25rem) * 0)!important}ax-wysiwyg-container .ql-container.ql-snow{border-style:var(--tw-border-style)!important;border-width:0px!important;height:auto;min-height:var(--ax-comp-wysiwyg-editor-min-height)}ax-wysiwyg-container .ql-tooltip{left:calc(var(--spacing, .25rem) * 0)!important}ax-wysiwyg-container .ql-toolbar.ql-snow{border-style:var(--tw-border-style)!important;border-width:0px!important}ax-wysiwyg-container ax-wysiwyg-view:not(:first-child){border-top-style:var(--tw-border-style);border-top-width:1px;border-color:rgba(var(--ax-sys-color-border-surface))}ax-wysiwyg-container ax-wysiwyg-toolbar{border-top-style:var(--tw-border-style);border-top-width:1px;border-color:rgba(var(--ax-sys-color-border-surface))}ax-wysiwyg-container .ql-ui{background-color:rgba(var(--ax-sys-color-lighter-surface))!important;color:rgba(var(--ax-sys-color-on-surface))!important}ax-wysiwyg-container .ql-snow .ql-editor .ql-code-block-container{background-color:rgba(var(--ax-sys-color-surface))!important}ax-wysiwyg-container .ql-editor[data-placeholder]:before{color:var(--color-gray-300, oklch(87.2% .01 258.338))!important}ax-wysiwyg-container .ql-editor{text-align:start;height:auto;min-height:var(--ax-comp-wysiwyg-editor-min-height)}ax-wysiwyg-container ax-button button{height:auto!important;width:auto!important}ax-wysiwyg-container .ql-formats{margin:calc(var(--spacing, .25rem) * 0)!important;display:flex!important}ax-wysiwyg-container .ql-toolbar.ql-snow .ql-formats{margin-inline-end:5px!important}ax-wysiwyg-container .ql-snow .ql-picker{color:inherit!important}ax-wysiwyg-container .ql-snow .ql-picker-label{padding-inline-start:calc(var(--spacing, .25rem) * 5)}ax-wysiwyg-container .ql-picker-item{color:var(--color-black, #000)!important}ax-wysiwyg-container .ql-picker-item:where(.ax-dark,.ax-dark *):not(:where(.ax-light,.ax-light *)){color:var(--color-white, #fff)!important}ax-wysiwyg-container .ql-toolbar.ql-snow .ql-picker-options{background-color:var(--color-white, #fff)!important}ax-wysiwyg-container .ql-toolbar.ql-snow .ql-picker-options:where(.ax-dark,.ax-dark *):not(:where(.ax-light,.ax-light *)){background-color:var(--color-black, #000)!important}}@property --tw-border-style{syntax: \"*\"; inherits: false; initial-value: solid;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style: solid}}}\n/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */\n/*!\n Theme: GitHub Dark\n Description: Dark theme as seen on github.com\n Author: github.com\n Maintainer: @Hirse\n Updated: 2021-05-15\n\n Outdated base version: https://github.com/primer/github-syntax-dark\n Current colors taken from GitHub's CSS\n*/\n/*!\n * Quill Editor v2.0.3\n * https://quilljs.com\n * Copyright (c) 2017-2024, Slab\n * Copyright (c) 2014, Jason Chen\n * Copyright (c) 2013, salesforce.com\n */\n"] }]
326
- }], propDecorators: { placeHolder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeHolder", required: false }] }], initialLine: [{ type: i0.Input, args: [{ isSignal: true, alias: "initialLine", required: false }] }], container: [{ type: i0.ContentChild, args: [i0.forwardRef(() => AXWysiwygViewComponent), { isSignal: true }] }], toolbar: [{ type: i0.ContentChild, args: [i0.forwardRef(() => AXWysiwygToolbarComponent), { isSignal: true }] }], __hostName: [{
327
- type: HostBinding,
328
- args: ['attr.name']
329
- }], __hostClass: [{
330
- type: HostBinding,
331
- args: ['class']
332
- }] } });
429
+ ], template: "<div\n class=\"ax-editor-container ax-default {{ look }}\"\n [class.ax-state-disabled]=\"disabled\"\n [class.ax-state-readonly]=\"readonly && !disabled\"\n>\n <div class=\"ax-wysiwyg-editor-inner\">\n <ng-content></ng-content>\n </div>\n <ng-content select=\"ax-validation-rule\"> </ng-content>\n</div>\n<div class=\"ax-error-container\"></div>\n", styles: ["@layer properties;@layer components{ax-wysiwyg-container{display:block;height:auto;width:100%;max-width:100%;min-width:calc(var(--spacing, .25rem) * 0);overflow:visible}ax-wysiwyg-container>.ax-editor-container{position:relative;display:block;height:auto;max-width:100%;min-width:calc(var(--spacing, .25rem) * 0);padding:calc(var(--spacing, .25rem) * 0);overflow:visible!important;--ax-comp-editor-space-start-size: 0;--ax-comp-editor-space-end-size: 0;--ax-comp-wysiwyg-editor-min-height: calc(var(--ax-comp-wysiwyg-initial-line, 3) * 1.42em + 1.5rem)}:is(ax-wysiwyg-container>.ax-editor-container.ax-state-disabled,ax-wysiwyg-container>.ax-editor-container.ax-state-readonly) ax-wysiwyg-toolbar{pointer-events:none;opacity:60%}ax-wysiwyg-container .ax-wysiwyg-editor-inner{display:flex;height:auto;flex-direction:column;overflow:visible}ax-wysiwyg-container ax-wysiwyg-view{position:relative;z-index:0;height:auto;width:100%;max-width:100%;min-width:calc(var(--spacing, .25rem) * 0);flex-shrink:0;flex-grow:0;flex-basis:auto;min-height:var(--ax-comp-wysiwyg-editor-min-height)}ax-wysiwyg-container ax-wysiwyg-view:not(:first-child),ax-wysiwyg-container ax-wysiwyg-toolbar:not(:first-child){border-top-style:var(--tw-border-style);border-top-width:1px;border-color:rgba(var(--ax-sys-color-border-surface))}ax-wysiwyg-container .ax-wysiwyg-editor-host,ax-wysiwyg-container .ax-wysiwyg-editor-host.tiptap,ax-wysiwyg-container .ax-wysiwyg-editor-host.ProseMirror,ax-wysiwyg-container .ax-wysiwyg-editor-host .tiptap,ax-wysiwyg-container .ax-wysiwyg-editor-host .ProseMirror{text-align:start;--tw-outline-style: none;outline-style:none;overflow-wrap:break-word;height:auto;width:100%;max-width:100%;max-height:24rem;overflow-y:auto;min-height:var(--ax-comp-wysiwyg-editor-min-height);padding:.75rem;color:inherit}ax-wysiwyg-container .ax-wysiwyg-editor-host p.is-editor-empty:first-child:before,ax-wysiwyg-container .ax-wysiwyg-editor-host .tiptap p.is-editor-empty:first-child:before,ax-wysiwyg-container .ax-wysiwyg-editor-host .ProseMirror p.is-editor-empty:first-child:before{pointer-events:none;float:inline-start;height:calc(var(--spacing, .25rem) * 0);color:rgba(var(--ax-sys-color-text-default));content:attr(data-placeholder)}@supports (color: color-mix(in lab,red,red)){ax-wysiwyg-container .ax-wysiwyg-editor-host p.is-editor-empty:first-child:before,ax-wysiwyg-container .ax-wysiwyg-editor-host .tiptap p.is-editor-empty:first-child:before,ax-wysiwyg-container .ax-wysiwyg-editor-host .ProseMirror p.is-editor-empty:first-child:before{color:color-mix(in oklab,rgba(var(--ax-sys-color-text-default)) 80%,transparent)}}ax-wysiwyg-container .ax-wysiwyg-editor-host p,ax-wysiwyg-container .ax-wysiwyg-editor-host .tiptap p,ax-wysiwyg-container .ax-wysiwyg-editor-host .ProseMirror p{margin-block:calc(var(--spacing, .25rem) * 2)}ax-wysiwyg-container .ax-wysiwyg-editor-host :is(h1,.tiptap h1,.ProseMirror h1){margin-block:calc(var(--spacing, .25rem) * 2);font-size:var(--text-2xl, 1.5rem);line-height:var(--tw-leading, var(--text-2xl--line-height, calc(2 / 1.5)));--tw-leading: var(--leading-tight, 1.25);line-height:var(--leading-tight, 1.25);--tw-font-weight: var(--font-weight-bold, 700);font-weight:var(--font-weight-bold, 700)}ax-wysiwyg-container .ax-wysiwyg-editor-host :is(h2,.tiptap h2,.ProseMirror h2){margin-block:calc(var(--spacing, .25rem) * 2);font-size:var(--text-xl, 1.25rem);line-height:var(--tw-leading, var(--text-xl--line-height, calc(1.75 / 1.25)));--tw-leading: var(--leading-snug, 1.375);line-height:var(--leading-snug, 1.375);--tw-font-weight: var(--font-weight-semibold, 600);font-weight:var(--font-weight-semibold, 600)}ax-wysiwyg-container .ax-wysiwyg-editor-host :is(h3,.tiptap h3,.ProseMirror h3){margin-block:calc(var(--spacing, .25rem) * 2);font-size:var(--text-lg, 1.125rem);line-height:var(--tw-leading, var(--text-lg--line-height, calc(1.75 / 1.125)));--tw-leading: var(--leading-snug, 1.375);line-height:var(--leading-snug, 1.375);--tw-font-weight: var(--font-weight-semibold, 600);font-weight:var(--font-weight-semibold, 600)}ax-wysiwyg-container .ax-wysiwyg-editor-host :is(h4,.tiptap h4,.ProseMirror h4){margin-block:calc(var(--spacing, .25rem) * 2);font-size:var(--text-base, 1rem);line-height:var(--tw-leading, var(--text-base--line-height, 1.5 ));--tw-leading: var(--leading-normal, 1.5);line-height:var(--leading-normal, 1.5);--tw-font-weight: var(--font-weight-semibold, 600);font-weight:var(--font-weight-semibold, 600)}ax-wysiwyg-container .ax-wysiwyg-editor-host :is(h5,.tiptap h5,.ProseMirror h5){margin-block:calc(var(--spacing, .25rem) * 2);font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));--tw-leading: var(--leading-normal, 1.5);line-height:var(--leading-normal, 1.5);--tw-font-weight: var(--font-weight-semibold, 600);font-weight:var(--font-weight-semibold, 600)}ax-wysiwyg-container .ax-wysiwyg-editor-host :is(h6,.tiptap h6,.ProseMirror h6){margin-block:calc(var(--spacing, .25rem) * 2);font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));--tw-leading: var(--leading-normal, 1.5);line-height:var(--leading-normal, 1.5);--tw-font-weight: var(--font-weight-medium, 500);font-weight:var(--font-weight-medium, 500)}ax-wysiwyg-container .ax-wysiwyg-editor-host :is(ul,.tiptap ul,.ProseMirror ul),ax-wysiwyg-container .ax-wysiwyg-editor-host :is(ol,.tiptap ol,.ProseMirror ol){margin-block:calc(var(--spacing, .25rem) * 2);padding-inline-start:1.5rem;list-style-position:outside}ax-wysiwyg-container .ax-wysiwyg-editor-host :is(ul,.tiptap ul,.ProseMirror ul){list-style-type:disc}ax-wysiwyg-container .ax-wysiwyg-editor-host :is(ol,.tiptap ol,.ProseMirror ol){list-style-type:decimal}ax-wysiwyg-container .ax-wysiwyg-editor-host :is(li,.tiptap li,.ProseMirror li){display:list-item}ax-wysiwyg-container .ax-wysiwyg-editor-host :is(li>p,.tiptap li>p,.ProseMirror li>p){margin:0}ax-wysiwyg-container .ax-wysiwyg-editor-host blockquote,ax-wysiwyg-container .ax-wysiwyg-editor-host .tiptap blockquote,ax-wysiwyg-container .ax-wysiwyg-editor-host .ProseMirror blockquote{margin-block:calc(var(--spacing, .25rem) * 2);border-inline-start-style:var(--tw-border-style);border-inline-start-width:4px;border-color:rgba(var(--ax-sys-color-border-surface));padding-inline-start:calc(var(--spacing, .25rem) * 4);font-style:italic}ax-wysiwyg-container .ax-wysiwyg-editor-host pre,ax-wysiwyg-container .ax-wysiwyg-editor-host .tiptap pre,ax-wysiwyg-container .ax-wysiwyg-editor-host .ProseMirror pre{margin-block:calc(var(--spacing, .25rem) * 2);max-width:100%;overflow-x:auto;border-radius:var(--radius-md, .375rem);padding-inline:calc(var(--spacing, .25rem) * 3);padding-block:calc(var(--spacing, .25rem) * 2);font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));background:#0d1117;color:#c9d1d9}ax-wysiwyg-container .ax-wysiwyg-editor-host code,ax-wysiwyg-container .ax-wysiwyg-editor-host .tiptap code,ax-wysiwyg-container .ax-wysiwyg-editor-host .ProseMirror code{border-radius:var(--radius-sm, .25rem);padding-inline:calc(var(--spacing, .25rem) * 1);padding-block:calc(var(--spacing, .25rem) * .5);font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));background:currentColor}@supports (color: color-mix(in lab,red,red)){ax-wysiwyg-container .ax-wysiwyg-editor-host code,ax-wysiwyg-container .ax-wysiwyg-editor-host .tiptap code,ax-wysiwyg-container .ax-wysiwyg-editor-host .ProseMirror code{background:color-mix(in srgb,currentColor 8%,transparent)}}ax-wysiwyg-container .ax-wysiwyg-editor-host pre code,ax-wysiwyg-container .ax-wysiwyg-editor-host .tiptap pre code,ax-wysiwyg-container .ax-wysiwyg-editor-host .ProseMirror pre code{background:transparent;padding:0}ax-wysiwyg-container .ax-wysiwyg-editor-host a,ax-wysiwyg-container .ax-wysiwyg-editor-host .tiptap a,ax-wysiwyg-container .ax-wysiwyg-editor-host .ProseMirror a{color:rgba(var(--ax-sys-color-primary-surface));text-decoration-line:underline}ax-wysiwyg-container .ax-wysiwyg-editor-host img,ax-wysiwyg-container .ax-wysiwyg-editor-host .tiptap img,ax-wysiwyg-container .ax-wysiwyg-editor-host .ProseMirror img,ax-wysiwyg-container .ax-wysiwyg-editor-host iframe,ax-wysiwyg-container .ax-wysiwyg-editor-host .tiptap iframe,ax-wysiwyg-container .ax-wysiwyg-editor-host .ProseMirror iframe{max-width:100%;height:auto}ax-wysiwyg-container .ax-wysiwyg-editor-host [data-wysiwyg-video] iframe{aspect-ratio:16 / 9;width:100%;min-height:12rem}ax-wysiwyg-container ax-wysiwyg-toolbar .ax-wysiwyg-toolbar-tools{display:flex;flex-wrap:wrap;align-items:center;gap:calc(var(--spacing, .25rem) * 1);padding:calc(var(--spacing, .25rem) * 1)}ax-wysiwyg-container ax-wysiwyg-toolbar .ax-wysiwyg-tool-group{display:flex;flex-wrap:wrap;align-items:center;gap:calc(var(--spacing, .25rem) * .5)}ax-wysiwyg-container ax-wysiwyg-toolbar .ax-wysiwyg-tool-group+.ax-wysiwyg-tool-group:before{content:\"\";margin-inline:calc(var(--spacing, .25rem) * 1);height:calc(var(--spacing, .25rem) * 4);width:1px;flex-shrink:0;align-self:center;background:var(--color-border-surface)}ax-wysiwyg-container ax-wysiwyg-toolbar ax-button.ax-button-icon>button.ax-state-selected,ax-wysiwyg-container ax-wysiwyg-toolbar ax-button.ax-button-icon>button.ax-state-selected:hover{background-color:rgba(var(--ax-sys-color-primary-surface));color:rgba(var(--ax-sys-color-primary-surface))}@supports (color: color-mix(in lab,red,red)){ax-wysiwyg-container ax-wysiwyg-toolbar ax-button.ax-button-icon>button.ax-state-selected,ax-wysiwyg-container ax-wysiwyg-toolbar ax-button.ax-button-icon>button.ax-state-selected:hover{background-color:color-mix(in oklab,rgba(var(--ax-sys-color-primary-surface)) 15%,transparent)}}ax-wysiwyg-container ax-wysiwyg-toolbar ax-wysiwyg-font-style .ax-wysiwyg-font-size-combo .ax-editor-container{min-height:var(--height-default);height:var(--height-default)}}@property --tw-border-style{syntax: \"*\"; inherits: false; initial-value: solid;}@property --tw-leading{syntax: \"*\"; inherits: false;}@property --tw-font-weight{syntax: \"*\"; inherits: false;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style: solid;--tw-leading: initial;--tw-font-weight: initial}}}\n/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */\n"] }]
430
+ }], propDecorators: { placeHolder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeHolder", required: false }] }], initialLine: [{ type: i0.Input, args: [{ isSignal: true, alias: "initialLine", required: false }] }], mode: [{ type: i0.Input, args: [{ isSignal: true, alias: "mode", required: false }] }], view: [{ type: i0.ContentChild, args: [i0.forwardRef(() => AXWysiwygViewComponent), { isSignal: true }] }], toolbar: [{ type: i0.ContentChild, args: [i0.forwardRef(() => AXWysiwygToolbarComponent), { isSignal: true }] }] } });
431
+ function normalizeWysiwygHtml(value) {
432
+ if (value == null) {
433
+ return null;
434
+ }
435
+ const trimmed = value.trim();
436
+ if (!trimmed || trimmed === '<p></p>' || trimmed === '<p><br></p>') {
437
+ return null;
438
+ }
439
+ return value;
440
+ }
441
+
442
+ function resolveAXWysiwygButton(key, defaults, config) {
443
+ const entry = config?.[key];
444
+ if (entry === false) {
445
+ return null;
446
+ }
447
+ return { ...defaults, ...entry };
448
+ }
333
449
 
334
450
  /**
335
- * A container component for WYSIWYG (What You See Is What You Get) editor functionality.
451
+ * Text alignment controls for the WYSIWYG toolbar.
336
452
  * @category Components
337
453
  */
338
454
  class AXWysiwygAlignmentComponent {
339
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXWysiwygAlignmentComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
340
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.8", type: AXWysiwygAlignmentComponent, isStandalone: true, selector: "ax-wysiwyg-alignment", providers: [{ provide: AXComponent, useExisting: AXWysiwygAlignmentComponent }], ngImport: i0, template: "<span class=\"ql-formats\">\n <select class=\"ql-align\"></select>\n</span>\n" }); }
455
+ constructor() {
456
+ this.buttons = input(/* @ts-ignore */
457
+ ...(ngDevMode ? [undefined, { debugName: "buttons" }] : /* istanbul ignore next */ []));
458
+ this.wysiwyg = inject(AXWysiwyg);
459
+ this.context = inject(AXWysiwygContext);
460
+ this.state = this.wysiwyg.state;
461
+ this.i18n = AX_WYSIWYG_I18N;
462
+ this.alignButtons = computed(() => {
463
+ const icons = {
464
+ left: 'ax-icon-align-left',
465
+ center: 'ax-icon-align-center',
466
+ right: 'ax-icon-align-right',
467
+ justify: 'ax-icon-align-justify',
468
+ };
469
+ const tooltips = {
470
+ left: AX_WYSIWYG_I18N.tools.alignLeft,
471
+ center: AX_WYSIWYG_I18N.tools.alignCenter,
472
+ right: AX_WYSIWYG_I18N.tools.alignRight,
473
+ justify: AX_WYSIWYG_I18N.tools.alignJustify,
474
+ };
475
+ return ['left', 'center', 'right', 'justify']
476
+ .map((align) => {
477
+ const resolved = resolveAXWysiwygButton(align, { icon: icons[align], tooltip: tooltips[align] }, this.buttons());
478
+ return resolved ? { align, config: resolved } : null;
479
+ })
480
+ .filter((item) => item != null);
481
+ }, /* @ts-ignore */
482
+ ...(ngDevMode ? [{ debugName: "alignButtons" }] : /* istanbul ignore next */ []));
483
+ this.activeAlignIcon = computed(() => {
484
+ const current = this.state().textAlign ?? 'left';
485
+ return this.alignButtons().find((item) => item.align === current)?.config.icon ?? 'ax-icon-align-left';
486
+ }, /* @ts-ignore */
487
+ ...(ngDevMode ? [{ debugName: "activeAlignIcon" }] : /* istanbul ignore next */ []));
488
+ }
489
+ isAlignActive(align) {
490
+ const current = this.state().textAlign;
491
+ if (align === 'left') {
492
+ return current === 'left' || current === null;
493
+ }
494
+ return current === align;
495
+ }
496
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: AXWysiwygAlignmentComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
497
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.6", type: AXWysiwygAlignmentComponent, isStandalone: true, selector: "ax-wysiwyg-alignment", inputs: { buttons: { classPropertyName: "buttons", publicName: "buttons", isSignal: true, isRequired: false, transformFunction: null } }, providers: [{ provide: AXComponent, useExisting: AXWysiwygAlignmentComponent }], ngImport: i0, template: "@if (context.compact()) {\n <div class=\"ax-wysiwyg-tool-group ax-wysiwyg-align-menu-group\">\n <ax-button\n class=\"ax-sm\"\n look=\"blank\"\n [iconOnly]=\"true\"\n [disabled]=\"context.interactionDisabled()\"\n [attr.title]=\"i18n.menu.align | translate | async\"\n [attr.aria-label]=\"i18n.menu.align | translate | async\"\n >\n <ax-icon class=\"ax-icon {{ activeAlignIcon() }}\"></ax-icon>\n <ax-dropdown-panel>\n <ax-button-item-list class=\"ax-wysiwyg-align-menu\">\n <ax-title>{{ i18n.menu.align | translate | async }}</ax-title>\n @for (item of alignButtons(); track item.align) {\n <ax-button-item\n [text]=\"item.config.tooltip!\"\n [selected]=\"isAlignActive(item.align)\"\n [disabled]=\"context.interactionDisabled()\"\n (onClick)=\"wysiwyg.setTextAlign(item.align)\"\n >\n <ax-prefix>\n <ax-icon class=\"ax-icon {{ item.config.icon }}\"></ax-icon>\n </ax-prefix>\n @if (isAlignActive(item.align)) {\n <ax-suffix>\n <ax-icon class=\"ax-icon ax-icon-check\"></ax-icon>\n </ax-suffix>\n }\n </ax-button-item>\n }\n </ax-button-item-list>\n </ax-dropdown-panel>\n </ax-button>\n </div>\n} @else {\n <div class=\"ax-wysiwyg-tool-group\">\n @for (item of alignButtons(); track item.align) {\n <ax-button\n class=\"ax-sm\"\n look=\"blank\"\n [iconOnly]=\"true\"\n [toggleable]=\"true\"\n [selected]=\"isAlignActive(item.align)\"\n [disabled]=\"context.interactionDisabled()\"\n [attr.title]=\"item.config.tooltip | translate | async\"\n (onClick)=\"wysiwyg.setTextAlign(item.align)\"\n >\n <ax-icon class=\"ax-icon {{ item.config.icon }}\"></ax-icon>\n </ax-button>\n }\n </div>\n}\n", styles: ["@layer properties;@layer components{ax-wysiwyg-alignment .ax-wysiwyg-align-menu-group{display:flex;flex-shrink:0;flex-wrap:nowrap;align-items:center}ax-wysiwyg-alignment .ax-wysiwyg-align-menu{min-width:calc(var(--spacing, .25rem) * 44);padding-block:calc(var(--spacing, .25rem) * 1)}ax-wysiwyg-alignment .ax-wysiwyg-align-menu ax-title{padding-inline:calc(var(--spacing, .25rem) * 3.5);padding-top:calc(var(--spacing, .25rem) * 2);padding-bottom:calc(var(--spacing, .25rem) * 1);font-size:var(--text-xs, .75rem);line-height:var(--tw-leading, var(--text-xs--line-height, calc(1 / .75)));--tw-font-weight: var(--font-weight-medium, 500);font-weight:var(--font-weight-medium, 500);opacity:60%}}@property --tw-font-weight{syntax: \"*\"; inherits: false;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-font-weight: initial}}}\n/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "component", type: AXButtonComponent, selector: "ax-button", inputs: ["disabled", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "component", type: AXButtonItemComponent, selector: "ax-button-item", inputs: ["color", "disabled", "text", "selected", "divided", "data", "name"], outputs: ["onClick", "onFocus", "onBlur", "disabledChange"] }, { kind: "component", type: AXButtonItemListComponent, selector: "ax-button-item-list", inputs: ["items", "closeParentOnClick", "lockOnLoading"], outputs: ["onItemClick"] }, { kind: "component", type: AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay" }, { kind: "component", type: AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: AXDropdownPanelComponent, selector: "ax-dropdown-panel", inputs: ["isOpen", "fitParent", "dropdownWidth", "position", "placement", "_target", "adaptivityEnabled"], outputs: ["onOpened", "onClosed"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
341
498
  }
342
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXWysiwygAlignmentComponent, decorators: [{
499
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: AXWysiwygAlignmentComponent, decorators: [{
343
500
  type: Component,
344
- args: [{ selector: 'ax-wysiwyg-alignment', imports: [], providers: [{ provide: AXComponent, useExisting: AXWysiwygAlignmentComponent }], template: "<span class=\"ql-formats\">\n <select class=\"ql-align\"></select>\n</span>\n" }]
345
- }] });
501
+ args: [{ selector: 'ax-wysiwyg-alignment', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, imports: [
502
+ AsyncPipe,
503
+ AXButtonComponent,
504
+ AXButtonItemComponent,
505
+ AXButtonItemListComponent,
506
+ AXDecoratorGenericComponent,
507
+ AXDecoratorIconComponent,
508
+ AXDropdownPanelComponent,
509
+ AXTranslatorPipe,
510
+ ], providers: [{ provide: AXComponent, useExisting: AXWysiwygAlignmentComponent }], template: "@if (context.compact()) {\n <div class=\"ax-wysiwyg-tool-group ax-wysiwyg-align-menu-group\">\n <ax-button\n class=\"ax-sm\"\n look=\"blank\"\n [iconOnly]=\"true\"\n [disabled]=\"context.interactionDisabled()\"\n [attr.title]=\"i18n.menu.align | translate | async\"\n [attr.aria-label]=\"i18n.menu.align | translate | async\"\n >\n <ax-icon class=\"ax-icon {{ activeAlignIcon() }}\"></ax-icon>\n <ax-dropdown-panel>\n <ax-button-item-list class=\"ax-wysiwyg-align-menu\">\n <ax-title>{{ i18n.menu.align | translate | async }}</ax-title>\n @for (item of alignButtons(); track item.align) {\n <ax-button-item\n [text]=\"item.config.tooltip!\"\n [selected]=\"isAlignActive(item.align)\"\n [disabled]=\"context.interactionDisabled()\"\n (onClick)=\"wysiwyg.setTextAlign(item.align)\"\n >\n <ax-prefix>\n <ax-icon class=\"ax-icon {{ item.config.icon }}\"></ax-icon>\n </ax-prefix>\n @if (isAlignActive(item.align)) {\n <ax-suffix>\n <ax-icon class=\"ax-icon ax-icon-check\"></ax-icon>\n </ax-suffix>\n }\n </ax-button-item>\n }\n </ax-button-item-list>\n </ax-dropdown-panel>\n </ax-button>\n </div>\n} @else {\n <div class=\"ax-wysiwyg-tool-group\">\n @for (item of alignButtons(); track item.align) {\n <ax-button\n class=\"ax-sm\"\n look=\"blank\"\n [iconOnly]=\"true\"\n [toggleable]=\"true\"\n [selected]=\"isAlignActive(item.align)\"\n [disabled]=\"context.interactionDisabled()\"\n [attr.title]=\"item.config.tooltip | translate | async\"\n (onClick)=\"wysiwyg.setTextAlign(item.align)\"\n >\n <ax-icon class=\"ax-icon {{ item.config.icon }}\"></ax-icon>\n </ax-button>\n }\n </div>\n}\n", styles: ["@layer properties;@layer components{ax-wysiwyg-alignment .ax-wysiwyg-align-menu-group{display:flex;flex-shrink:0;flex-wrap:nowrap;align-items:center}ax-wysiwyg-alignment .ax-wysiwyg-align-menu{min-width:calc(var(--spacing, .25rem) * 44);padding-block:calc(var(--spacing, .25rem) * 1)}ax-wysiwyg-alignment .ax-wysiwyg-align-menu ax-title{padding-inline:calc(var(--spacing, .25rem) * 3.5);padding-top:calc(var(--spacing, .25rem) * 2);padding-bottom:calc(var(--spacing, .25rem) * 1);font-size:var(--text-xs, .75rem);line-height:var(--tw-leading, var(--text-xs--line-height, calc(1 / .75)));--tw-font-weight: var(--font-weight-medium, 500);font-weight:var(--font-weight-medium, 500);opacity:60%}}@property --tw-font-weight{syntax: \"*\"; inherits: false;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-font-weight: initial}}}\n/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */\n"] }]
511
+ }], propDecorators: { buttons: [{ type: i0.Input, args: [{ isSignal: true, alias: "buttons", required: false }] }] } });
346
512
 
347
513
  /**
348
- * A container component for WYSIWYG (What You See Is What You Get) editor functionality.
514
+ * Text and highlight color controls for the WYSIWYG toolbar.
349
515
  * @category Components
350
516
  */
351
517
  class AXWysiwygColorsComponent {
352
518
  constructor() {
353
- this.wysiwygService = inject(WysiwygService);
519
+ this.buttons = input(/* @ts-ignore */
520
+ ...(ngDevMode ? [undefined, { debugName: "buttons" }] : /* istanbul ignore next */ []));
521
+ this.clearLabel = '@acorex:common.general.clear';
522
+ this.wysiwyg = inject(AXWysiwyg);
523
+ this.context = inject(AXWysiwygContext);
524
+ this.state = this.wysiwyg.state;
525
+ this.textColorButton = computed(() => resolveAXWysiwygButton('textColor', { icon: 'ax-icon-color-palette', tooltip: AX_WYSIWYG_I18N.tools.textColor }, this.buttons()), /* @ts-ignore */
526
+ ...(ngDevMode ? [{ debugName: "textColorButton" }] : /* istanbul ignore next */ []));
527
+ this.highlightButton = computed(() => resolveAXWysiwygButton('highlight', { icon: 'ax-icon-highlight', tooltip: AX_WYSIWYG_I18N.tools.highlight }, this.buttons()), /* @ts-ignore */
528
+ ...(ngDevMode ? [{ debugName: "highlightButton" }] : /* istanbul ignore next */ []));
529
+ this.draftTextColor = signal('#111827', /* @ts-ignore */
530
+ ...(ngDevMode ? [{ debugName: "draftTextColor" }] : /* istanbul ignore next */ []));
531
+ this.draftHighlightColor = signal('#fef08a', /* @ts-ignore */
532
+ ...(ngDevMode ? [{ debugName: "draftHighlightColor" }] : /* istanbul ignore next */ []));
354
533
  }
355
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXWysiwygColorsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
356
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.8", type: AXWysiwygColorsComponent, isStandalone: true, selector: "ax-wysiwyg-colors", providers: [{ provide: AXComponent, useExisting: AXWysiwygColorsComponent }], ngImport: i0, template: "<div class=\"flex\">\n <div class=\"ql-formats\">\n <ax-color-indicator [previewColor]=\"wysiwygService.selectedColor()\"></ax-color-indicator>\n <select class=\"ql-color\"></select>\n </div>\n <div class=\"ql-formats\">\n <ax-color-indicator [previewColor]=\"wysiwygService.selectedBackgroundColor()\"></ax-color-indicator>\n <select class=\"ql-background\"></select>\n </div>\n</div>\n", dependencies: [{ kind: "component", type: AXDecoratorColorIndicatorComponent, selector: "ax-color-indicator", inputs: ["previewColor"] }], encapsulation: i0.ViewEncapsulation.None }); }
534
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: AXWysiwygColorsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
535
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.6", type: AXWysiwygColorsComponent, isStandalone: true, selector: "ax-wysiwyg-colors", inputs: { buttons: { classPropertyName: "buttons", publicName: "buttons", isSignal: true, isRequired: false, transformFunction: null } }, providers: [{ provide: AXComponent, useExisting: AXWysiwygColorsComponent }], ngImport: i0, template: "<div class=\"ax-wysiwyg-tool-group\">\n @if (textColorButton(); as btn) {\n <div class=\"ax-wysiwyg-color-control\">\n <ax-button\n class=\"ax-sm\"\n #textColorTrigger\n look=\"blank\"\n [iconOnly]=\"true\"\n [toggleable]=\"true\"\n [selected]=\"!!state().textColor\"\n [disabled]=\"context.interactionDisabled()\"\n [attr.title]=\"btn.tooltip | translate | async\"\n [attr.aria-label]=\"btn.tooltip | translate | async\"\n >\n <ax-icon class=\"ax-icon {{ btn.icon }}\"></ax-icon>\n <ax-color-indicator\n class=\"ax-wysiwyg-swatch ax-wysiwyg-text-swatch\"\n [previewColor]=\"state().textColor || 'currentColor'\"\n ></ax-color-indicator>\n </ax-button>\n <ax-popover [target]=\"textColorTrigger\" trigger=\"click\" placement=\"bottom-start\">\n <div class=\"ax-wysiwyg-color-panel ax-md\">\n <ax-color-palette\n [ngModel]=\"draftTextColor()\"\n (ngModelChange)=\"draftTextColor.set($event); wysiwyg.setColor($event)\"\n >\n <ax-color-palette-picker></ax-color-palette-picker>\n <ax-color-palette-swatches></ax-color-palette-swatches>\n <ax-color-palette-input></ax-color-palette-input>\n </ax-color-palette>\n <ax-button\n look=\"flat\"\n [text]=\"clearLabel\"\n [disabled]=\"!state().textColor\"\n (onClick)=\"wysiwyg.unsetColor()\"\n ></ax-button>\n </div>\n </ax-popover>\n </div>\n }\n\n @if (highlightButton(); as btn) {\n <div class=\"ax-wysiwyg-color-control\">\n <ax-button\n class=\"ax-sm\"\n #highlightTrigger\n look=\"blank\"\n [iconOnly]=\"true\"\n [toggleable]=\"true\"\n [selected]=\"!!state().highlightColor\"\n [disabled]=\"context.interactionDisabled()\"\n [attr.title]=\"btn.tooltip | translate | async\"\n [attr.aria-label]=\"btn.tooltip | translate | async\"\n >\n <ax-icon class=\"ax-icon {{ btn.icon }}\"></ax-icon>\n <ax-color-indicator\n class=\"ax-wysiwyg-swatch ax-wysiwyg-highlight-swatch\"\n [previewColor]=\"state().highlightColor || '#fef08a'\"\n ></ax-color-indicator>\n </ax-button>\n <ax-popover [target]=\"highlightTrigger\" trigger=\"click\" placement=\"bottom-start\">\n <div class=\"ax-wysiwyg-color-panel ax-md\">\n <ax-color-palette\n [ngModel]=\"draftHighlightColor()\"\n (ngModelChange)=\"draftHighlightColor.set($event); wysiwyg.setHighlight($event)\"\n >\n <ax-color-palette-picker></ax-color-palette-picker>\n <ax-color-palette-swatches></ax-color-palette-swatches>\n <ax-color-palette-input></ax-color-palette-input>\n </ax-color-palette>\n <ax-button\n look=\"flat\"\n [text]=\"clearLabel\"\n [disabled]=\"!state().highlightColor\"\n (onClick)=\"wysiwyg.unsetHighlight()\"\n ></ax-button>\n </div>\n </ax-popover>\n </div>\n }\n</div>\n", styles: ["@layer components{ax-wysiwyg-colors .ax-wysiwyg-color-control{position:relative;display:inline-flex}ax-wysiwyg-colors .ax-wysiwyg-swatch{pointer-events:none;position:absolute;z-index:1;display:block;left:50%;bottom:.1rem;width:.875rem;height:.3rem;transform:translate(-50%)}ax-wysiwyg-colors .ax-wysiwyg-swatch .ax-indicator-color{height:100%;width:100%;border-radius:var(--radius-sm, .25rem);box-shadow:inset 0 0 0 1px #00000059,0 0 0 1px #ffffffd9}ax-wysiwyg-colors .ax-wysiwyg-text-swatch .ax-indicator-color{background-color:currentColor}ax-wysiwyg-colors .ax-wysiwyg-highlight-swatch .ax-indicator-color{background-color:currentColor}@supports (color: color-mix(in lab,red,red)){ax-wysiwyg-colors .ax-wysiwyg-highlight-swatch .ax-indicator-color{background-color:color-mix(in srgb,currentColor 22%,transparent)}}ax-wysiwyg-colors .ax-wysiwyg-color-panel{display:flex;flex-direction:column;gap:calc(var(--spacing, .25rem) * 2);padding:calc(var(--spacing, .25rem) * 2)}}\n/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { 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: AXButtonComponent, selector: "ax-button", inputs: ["disabled", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "component", type: AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: AXDecoratorColorIndicatorComponent, selector: "ax-color-indicator", inputs: ["previewColor"] }, { kind: "component", type: AXPopoverComponent, selector: "ax-popover", inputs: ["width", "disablePanelClass", "visualContextScope", "disabled", "offsetX", "offsetY", "target", "placement", "content", "openOn", "closeOn", "hasBackdrop", "openAfter", "closeAfter", "closeOnScroll", "closeOnNavigation", "backdropClass", "panelClass", "adaptivityEnabled"], outputs: ["onOpened", "onClosed"] }, { kind: "component", type: AXColorPaletteComponent, selector: "ax-color-palette", inputs: ["disabled", "tabIndex", "readonly", "value", "state", "name"], outputs: ["onBlur", "onFocus", "valueChange", "stateChange", "onValueChanged", "readonlyChange", "disabledChange"] }, { kind: "component", type: AXColorPalettePickerComponent, selector: "ax-color-palette-picker" }, { kind: "component", type: AXColorPaletteSwatchesComponent, selector: "ax-color-palette-swatches, ax-color-palette-favorite", inputs: ["colors"] }, { kind: "component", type: AXColorPaletteInputComponent, selector: "ax-color-palette-input" }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
357
536
  }
358
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXWysiwygColorsComponent, decorators: [{
537
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: AXWysiwygColorsComponent, decorators: [{
359
538
  type: Component,
360
- args: [{ selector: 'ax-wysiwyg-colors', encapsulation: ViewEncapsulation.None, imports: [AXDecoratorColorIndicatorComponent], providers: [{ provide: AXComponent, useExisting: AXWysiwygColorsComponent }], template: "<div class=\"flex\">\n <div class=\"ql-formats\">\n <ax-color-indicator [previewColor]=\"wysiwygService.selectedColor()\"></ax-color-indicator>\n <select class=\"ql-color\"></select>\n </div>\n <div class=\"ql-formats\">\n <ax-color-indicator [previewColor]=\"wysiwygService.selectedBackgroundColor()\"></ax-color-indicator>\n <select class=\"ql-background\"></select>\n </div>\n</div>\n" }]
361
- }] });
539
+ args: [{ selector: 'ax-wysiwyg-colors', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, imports: [
540
+ AsyncPipe,
541
+ FormsModule,
542
+ AXButtonComponent,
543
+ AXDecoratorIconComponent,
544
+ AXDecoratorColorIndicatorComponent,
545
+ AXPopoverComponent,
546
+ AXColorPaletteComponent,
547
+ AXColorPalettePickerComponent,
548
+ AXColorPaletteSwatchesComponent,
549
+ AXColorPaletteInputComponent,
550
+ AXTranslatorPipe,
551
+ ], providers: [{ provide: AXComponent, useExisting: AXWysiwygColorsComponent }], template: "<div class=\"ax-wysiwyg-tool-group\">\n @if (textColorButton(); as btn) {\n <div class=\"ax-wysiwyg-color-control\">\n <ax-button\n class=\"ax-sm\"\n #textColorTrigger\n look=\"blank\"\n [iconOnly]=\"true\"\n [toggleable]=\"true\"\n [selected]=\"!!state().textColor\"\n [disabled]=\"context.interactionDisabled()\"\n [attr.title]=\"btn.tooltip | translate | async\"\n [attr.aria-label]=\"btn.tooltip | translate | async\"\n >\n <ax-icon class=\"ax-icon {{ btn.icon }}\"></ax-icon>\n <ax-color-indicator\n class=\"ax-wysiwyg-swatch ax-wysiwyg-text-swatch\"\n [previewColor]=\"state().textColor || 'currentColor'\"\n ></ax-color-indicator>\n </ax-button>\n <ax-popover [target]=\"textColorTrigger\" trigger=\"click\" placement=\"bottom-start\">\n <div class=\"ax-wysiwyg-color-panel ax-md\">\n <ax-color-palette\n [ngModel]=\"draftTextColor()\"\n (ngModelChange)=\"draftTextColor.set($event); wysiwyg.setColor($event)\"\n >\n <ax-color-palette-picker></ax-color-palette-picker>\n <ax-color-palette-swatches></ax-color-palette-swatches>\n <ax-color-palette-input></ax-color-palette-input>\n </ax-color-palette>\n <ax-button\n look=\"flat\"\n [text]=\"clearLabel\"\n [disabled]=\"!state().textColor\"\n (onClick)=\"wysiwyg.unsetColor()\"\n ></ax-button>\n </div>\n </ax-popover>\n </div>\n }\n\n @if (highlightButton(); as btn) {\n <div class=\"ax-wysiwyg-color-control\">\n <ax-button\n class=\"ax-sm\"\n #highlightTrigger\n look=\"blank\"\n [iconOnly]=\"true\"\n [toggleable]=\"true\"\n [selected]=\"!!state().highlightColor\"\n [disabled]=\"context.interactionDisabled()\"\n [attr.title]=\"btn.tooltip | translate | async\"\n [attr.aria-label]=\"btn.tooltip | translate | async\"\n >\n <ax-icon class=\"ax-icon {{ btn.icon }}\"></ax-icon>\n <ax-color-indicator\n class=\"ax-wysiwyg-swatch ax-wysiwyg-highlight-swatch\"\n [previewColor]=\"state().highlightColor || '#fef08a'\"\n ></ax-color-indicator>\n </ax-button>\n <ax-popover [target]=\"highlightTrigger\" trigger=\"click\" placement=\"bottom-start\">\n <div class=\"ax-wysiwyg-color-panel ax-md\">\n <ax-color-palette\n [ngModel]=\"draftHighlightColor()\"\n (ngModelChange)=\"draftHighlightColor.set($event); wysiwyg.setHighlight($event)\"\n >\n <ax-color-palette-picker></ax-color-palette-picker>\n <ax-color-palette-swatches></ax-color-palette-swatches>\n <ax-color-palette-input></ax-color-palette-input>\n </ax-color-palette>\n <ax-button\n look=\"flat\"\n [text]=\"clearLabel\"\n [disabled]=\"!state().highlightColor\"\n (onClick)=\"wysiwyg.unsetHighlight()\"\n ></ax-button>\n </div>\n </ax-popover>\n </div>\n }\n</div>\n", styles: ["@layer components{ax-wysiwyg-colors .ax-wysiwyg-color-control{position:relative;display:inline-flex}ax-wysiwyg-colors .ax-wysiwyg-swatch{pointer-events:none;position:absolute;z-index:1;display:block;left:50%;bottom:.1rem;width:.875rem;height:.3rem;transform:translate(-50%)}ax-wysiwyg-colors .ax-wysiwyg-swatch .ax-indicator-color{height:100%;width:100%;border-radius:var(--radius-sm, .25rem);box-shadow:inset 0 0 0 1px #00000059,0 0 0 1px #ffffffd9}ax-wysiwyg-colors .ax-wysiwyg-text-swatch .ax-indicator-color{background-color:currentColor}ax-wysiwyg-colors .ax-wysiwyg-highlight-swatch .ax-indicator-color{background-color:currentColor}@supports (color: color-mix(in lab,red,red)){ax-wysiwyg-colors .ax-wysiwyg-highlight-swatch .ax-indicator-color{background-color:color-mix(in srgb,currentColor 22%,transparent)}}ax-wysiwyg-colors .ax-wysiwyg-color-panel{display:flex;flex-direction:column;gap:calc(var(--spacing, .25rem) * 2);padding:calc(var(--spacing, .25rem) * 2)}}\n/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */\n"] }]
552
+ }], propDecorators: { buttons: [{ type: i0.Input, args: [{ isSignal: true, alias: "buttons", required: false }] }] } });
362
553
 
554
+ const HEADING_MENU_KEYS = {
555
+ 1: 'heading1',
556
+ 2: 'heading2',
557
+ 3: 'heading3',
558
+ 4: 'heading4',
559
+ 5: 'heading5',
560
+ 6: 'heading6',
561
+ };
363
562
  /**
364
- * A container component for WYSIWYG (What You See Is What You Get) editor functionality.
563
+ * Font style, size, and heading controls for the WYSIWYG toolbar.
365
564
  * @category Components
366
565
  */
367
566
  class AXWysiwygFontStyleComponent {
368
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXWysiwygFontStyleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
369
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.8", type: AXWysiwygFontStyleComponent, isStandalone: true, selector: "ax-wysiwyg-font-style", providers: [{ provide: AXComponent, useExisting: AXWysiwygFontStyleComponent }], ngImport: i0, template: "<div class=\"flex\">\n <span class=\"ql-formats\">\n <button class=\"ql-bold\" title=\"Bold\"></button>\n <button class=\"ql-italic\" title=\"Italic\"></button>\n <button class=\"ql-underline\" title=\"Underline\"></button>\n <button class=\"ql-strike\" title=\"Strikethrough\"></button>\n <button class=\"ql-code-block\" title=\"Code block\"></button>\n </span>\n\n <span class=\"ql-formats\">\n <select class=\"ql-size\">\n <option value=\"small\"></option>\n <option selected></option>\n <option value=\"large\"></option>\n <option value=\"huge\"></option>\n </select>\n </span>\n\n <span class=\"ql-formats\">\n <select class=\"ql-header\">\n <option value=\"1\">H1</option>\n <option value=\"2\">H2</option>\n <option value=\"3\">H3</option>\n <option value=\"4\">H4</option>\n <option value=\"5\">H5</option>\n <option value=\"6\">H6</option>\n <option selected></option>\n </select>\n </span>\n</div>\n" }); }
567
+ constructor() {
568
+ this.headingLevels = input([1, 2, 3, 4, 5, 6], /* @ts-ignore */
569
+ ...(ngDevMode ? [{ debugName: "headingLevels" }] : /* istanbul ignore next */ []));
570
+ this.buttons = input(/* @ts-ignore */
571
+ ...(ngDevMode ? [undefined, { debugName: "buttons" }] : /* istanbul ignore next */ []));
572
+ this.menuItems = input(/* @ts-ignore */
573
+ ...(ngDevMode ? [undefined, { debugName: "menuItems" }] : /* istanbul ignore next */ []));
574
+ this.wysiwyg = inject(AXWysiwyg);
575
+ this.context = inject(AXWysiwygContext);
576
+ this.state = this.wysiwyg.state;
577
+ this.i18n = AX_WYSIWYG_I18N;
578
+ this.insertPopover = viewChild('insertPopover', /* @ts-ignore */
579
+ ...(ngDevMode ? [{ debugName: "insertPopover" }] : /* istanbul ignore next */ []));
580
+ this.insertUrl = signal('', /* @ts-ignore */
581
+ ...(ngDevMode ? [{ debugName: "insertUrl" }] : /* istanbul ignore next */ []));
582
+ this.insertKind = signal(null, /* @ts-ignore */
583
+ ...(ngDevMode ? [{ debugName: "insertKind" }] : /* istanbul ignore next */ []));
584
+ this.boldButton = computed(() => resolveAXWysiwygButton('bold', { icon: 'ax-icon-bold', tooltip: AX_WYSIWYG_I18N.tools.bold }, this.buttons()), /* @ts-ignore */
585
+ ...(ngDevMode ? [{ debugName: "boldButton" }] : /* istanbul ignore next */ []));
586
+ this.italicButton = computed(() => resolveAXWysiwygButton('italic', { icon: 'ax-icon-italic', tooltip: AX_WYSIWYG_I18N.tools.italic }, this.buttons()), /* @ts-ignore */
587
+ ...(ngDevMode ? [{ debugName: "italicButton" }] : /* istanbul ignore next */ []));
588
+ this.underlineButton = computed(() => resolveAXWysiwygButton('underline', { icon: 'ax-icon-under-line', tooltip: AX_WYSIWYG_I18N.tools.underline }, this.buttons()), /* @ts-ignore */
589
+ ...(ngDevMode ? [{ debugName: "underlineButton" }] : /* istanbul ignore next */ []));
590
+ this.strikeButton = computed(() => resolveAXWysiwygButton('strike', { icon: 'ax-icon-strike', tooltip: AX_WYSIWYG_I18N.tools.strike }, this.buttons()), /* @ts-ignore */
591
+ ...(ngDevMode ? [{ debugName: "strikeButton" }] : /* istanbul ignore next */ []));
592
+ this.codeButton = computed(() => resolveAXWysiwygButton('code', { icon: 'ax-icon-code', tooltip: AX_WYSIWYG_I18N.tools.code }, this.buttons()), /* @ts-ignore */
593
+ ...(ngDevMode ? [{ debugName: "codeButton" }] : /* istanbul ignore next */ []));
594
+ this.codeBlockButton = computed(() => resolveAXWysiwygButton('codeBlock', { icon: 'ax-icon-code', tooltip: AX_WYSIWYG_I18N.tools.codeBlock }, this.buttons()), /* @ts-ignore */
595
+ ...(ngDevMode ? [{ debugName: "codeBlockButton" }] : /* istanbul ignore next */ []));
596
+ this.paragraphMenuItem = computed(() => resolveAXWysiwygButton('paragraph', { text: AX_WYSIWYG_I18N.blocks.paragraph }, this.menuItems()), /* @ts-ignore */
597
+ ...(ngDevMode ? [{ debugName: "paragraphMenuItem" }] : /* istanbul ignore next */ []));
598
+ this.blockquoteMenuItem = computed(() => resolveAXWysiwygButton('blockquote', { text: AX_WYSIWYG_I18N.blocks.blockquote }, this.menuItems()), /* @ts-ignore */
599
+ ...(ngDevMode ? [{ debugName: "blockquoteMenuItem" }] : /* istanbul ignore next */ []));
600
+ this.codeBlockMenuItem = computed(() => resolveAXWysiwygButton('codeBlock', { text: AX_WYSIWYG_I18N.blocks.codeBlock }, this.menuItems()), /* @ts-ignore */
601
+ ...(ngDevMode ? [{ debugName: "codeBlockMenuItem" }] : /* istanbul ignore next */ []));
602
+ this.bulletListMenuItem = computed(() => resolveAXWysiwygButton('bulletList', { text: AX_WYSIWYG_I18N.blocks.bulletList }, this.menuItems()), /* @ts-ignore */
603
+ ...(ngDevMode ? [{ debugName: "bulletListMenuItem" }] : /* istanbul ignore next */ []));
604
+ this.orderedListMenuItem = computed(() => resolveAXWysiwygButton('orderedList', { text: AX_WYSIWYG_I18N.blocks.orderedList }, this.menuItems()), /* @ts-ignore */
605
+ ...(ngDevMode ? [{ debugName: "orderedListMenuItem" }] : /* istanbul ignore next */ []));
606
+ this.imageMenuItem = computed(() => resolveAXWysiwygButton('image', { text: AX_WYSIWYG_I18N.blocks.image }, this.menuItems()), /* @ts-ignore */
607
+ ...(ngDevMode ? [{ debugName: "imageMenuItem" }] : /* istanbul ignore next */ []));
608
+ this.videoMenuItem = computed(() => resolveAXWysiwygButton('video', { text: AX_WYSIWYG_I18N.blocks.video }, this.menuItems()), /* @ts-ignore */
609
+ ...(ngDevMode ? [{ debugName: "videoMenuItem" }] : /* istanbul ignore next */ []));
610
+ this.headingButtons = computed(() => this.headingLevels().map((level) => ({
611
+ level,
612
+ label: `H${level}`,
613
+ menuKey: HEADING_MENU_KEYS[level],
614
+ config: resolveAXWysiwygButton(HEADING_MENU_KEYS[level], { text: AX_WYSIWYG_I18N.blocks.heading(level) }, this.menuItems()),
615
+ })), /* @ts-ignore */
616
+ ...(ngDevMode ? [{ debugName: "headingButtons" }] : /* istanbul ignore next */ []));
617
+ this.fontSizeItems = computed(() => [
618
+ { id: 'small', text: AX_WYSIWYG_I18N.fontSize.small, value: 'small' },
619
+ { id: 'normal', text: AX_WYSIWYG_I18N.fontSize.normal, value: 'normal' },
620
+ { id: 'large', text: AX_WYSIWYG_I18N.fontSize.large, value: 'large' },
621
+ { id: 'huge', text: AX_WYSIWYG_I18N.fontSize.huge, value: 'huge' },
622
+ ], /* @ts-ignore */
623
+ ...(ngDevMode ? [{ debugName: "fontSizeItems" }] : /* istanbul ignore next */ []));
624
+ this.fontSizeComboValue = computed(() => this.state().fontSize ?? 'normal', /* @ts-ignore */
625
+ ...(ngDevMode ? [{ debugName: "fontSizeComboValue" }] : /* istanbul ignore next */ []));
626
+ this.blockLabelSource = computed(() => {
627
+ const s = this.state();
628
+ if (s.orderedList) {
629
+ return this.orderedListMenuItem()?.text ?? AX_WYSIWYG_I18N.blocks.orderedList;
630
+ }
631
+ if (s.bulletList) {
632
+ return this.bulletListMenuItem()?.text ?? AX_WYSIWYG_I18N.blocks.bulletList;
633
+ }
634
+ if (s.blockquote) {
635
+ return this.blockquoteMenuItem()?.text ?? AX_WYSIWYG_I18N.blocks.blockquote;
636
+ }
637
+ if (s.codeBlock) {
638
+ return this.codeBlockMenuItem()?.text ?? AX_WYSIWYG_I18N.blocks.codeBlock;
639
+ }
640
+ if (s.headingLevel) {
641
+ const heading = this.headingButtons().find((h) => h.level === s.headingLevel);
642
+ return heading?.config?.text ?? AX_WYSIWYG_I18N.blocks.heading(s.headingLevel);
643
+ }
644
+ return this.paragraphMenuItem()?.text ?? AX_WYSIWYG_I18N.blocks.paragraph;
645
+ }, /* @ts-ignore */
646
+ ...(ngDevMode ? [{ debugName: "blockLabelSource" }] : /* istanbul ignore next */ []));
647
+ this.blockLabel = toTranslatedSignal(this.blockLabelSource);
648
+ this.insertPlaceholderSource = computed(() => this.insertKind() === 'video' ? AX_WYSIWYG_I18N.insert.videoUrl : AX_WYSIWYG_I18N.insert.imageUrl, /* @ts-ignore */
649
+ ...(ngDevMode ? [{ debugName: "insertPlaceholderSource" }] : /* istanbul ignore next */ []));
650
+ this.insertPlaceholder = toTranslatedSignal(this.insertPlaceholderSource);
651
+ }
652
+ isHeadingActive(level) {
653
+ return this.state().headingLevel === level;
654
+ }
655
+ isParagraphActive() {
656
+ const s = this.state();
657
+ return !s.headingLevel && !s.bulletList && !s.orderedList && !s.blockquote && !s.codeBlock;
658
+ }
659
+ onFontSizeComboChange(value) {
660
+ if (value == null || value === 'normal') {
661
+ this.wysiwyg.setFontSize(null);
662
+ return;
663
+ }
664
+ if (value === 'small' || value === 'large' || value === 'huge') {
665
+ this.wysiwyg.setFontSize(value);
666
+ }
667
+ }
668
+ beginInsert(kind) {
669
+ this.insertKind.set(kind);
670
+ this.insertUrl.set('');
671
+ queueMicrotask(() => this.insertPopover()?.open());
672
+ }
673
+ applyInsert() {
674
+ const url = this.insertUrl().trim();
675
+ if (!url) {
676
+ return;
677
+ }
678
+ if (this.insertKind() === 'image') {
679
+ this.wysiwyg.insertImage(url);
680
+ }
681
+ else if (this.insertKind() === 'video') {
682
+ this.wysiwyg.insertVideo(url);
683
+ }
684
+ this.insertPopover()?.close();
685
+ this.insertUrl.set('');
686
+ this.insertKind.set(null);
687
+ }
688
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: AXWysiwygFontStyleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
689
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.6", type: AXWysiwygFontStyleComponent, isStandalone: true, selector: "ax-wysiwyg-font-style", inputs: { headingLevels: { classPropertyName: "headingLevels", publicName: "headingLevels", isSignal: true, isRequired: false, transformFunction: null }, buttons: { classPropertyName: "buttons", publicName: "buttons", isSignal: true, isRequired: false, transformFunction: null }, menuItems: { classPropertyName: "menuItems", publicName: "menuItems", isSignal: true, isRequired: false, transformFunction: null } }, providers: [{ provide: AXComponent, useExisting: AXWysiwygFontStyleComponent }], viewQueries: [{ propertyName: "insertPopover", first: true, predicate: ["insertPopover"], descendants: true, isSignal: true }], ngImport: i0, template: "@if (context.compact()) {\n <div class=\"ax-wysiwyg-tool-group ax-wysiwyg-block-menu-group\">\n <ax-button\n #blockMenuTrigger\n class=\"ax-sm ax-wysiwyg-block-menu-trigger\"\n look=\"blank\"\n [text]=\"blockLabel()\"\n [disabled]=\"context.interactionDisabled()\"\n [attr.title]=\"i18n.menu.blockType | translate | async\"\n >\n <ax-suffix>\n <ax-icon class=\"ax-icon ax-icon-chevron-down\"></ax-icon>\n </ax-suffix>\n <ax-dropdown-panel>\n <ax-button-item-list class=\"ax-wysiwyg-block-menu\">\n <ax-title>{{ i18n.menu.blockType | translate | async }}</ax-title>\n @if (paragraphMenuItem(); as item) {\n <ax-button-item\n [text]=\"item.text!\"\n [selected]=\"isParagraphActive()\"\n [disabled]=\"context.interactionDisabled()\"\n (onClick)=\"wysiwyg.setParagraph()\"\n >\n @if (isParagraphActive()) {\n <ax-suffix>\n <ax-icon class=\"ax-icon ax-icon-check\"></ax-icon>\n </ax-suffix>\n }\n </ax-button-item>\n }\n @for (heading of headingButtons(); track heading.level) {\n @if (heading.config; as item) {\n <ax-button-item\n [text]=\"item.text!\"\n [selected]=\"isHeadingActive(heading.level)\"\n [disabled]=\"context.interactionDisabled()\"\n (onClick)=\"wysiwyg.toggleHeading(heading.level)\"\n >\n @if (isHeadingActive(heading.level)) {\n <ax-suffix>\n <ax-icon class=\"ax-icon ax-icon-check\"></ax-icon>\n </ax-suffix>\n }\n </ax-button-item>\n }\n }\n @if (blockquoteMenuItem(); as item) {\n <ax-button-item\n [text]=\"item.text!\"\n [selected]=\"state().blockquote\"\n [disabled]=\"context.interactionDisabled()\"\n (onClick)=\"wysiwyg.toggleBlockquote()\"\n >\n @if (state().blockquote) {\n <ax-suffix>\n <ax-icon class=\"ax-icon ax-icon-check\"></ax-icon>\n </ax-suffix>\n }\n </ax-button-item>\n }\n @if (codeBlockMenuItem(); as item) {\n <ax-button-item\n [text]=\"item.text!\"\n [selected]=\"state().codeBlock\"\n [disabled]=\"context.interactionDisabled()\"\n (onClick)=\"wysiwyg.toggleCodeBlock()\"\n >\n @if (state().codeBlock) {\n <ax-suffix>\n <ax-icon class=\"ax-icon ax-icon-check\"></ax-icon>\n </ax-suffix>\n }\n </ax-button-item>\n }\n @if (bulletListMenuItem(); as item) {\n <ax-button-item\n [text]=\"item.text!\"\n [selected]=\"state().bulletList\"\n [disabled]=\"context.interactionDisabled()\"\n (onClick)=\"wysiwyg.toggleBulletList()\"\n >\n @if (state().bulletList) {\n <ax-suffix>\n <ax-icon class=\"ax-icon ax-icon-check\"></ax-icon>\n </ax-suffix>\n }\n </ax-button-item>\n }\n @if (orderedListMenuItem(); as item) {\n <ax-button-item\n [text]=\"item.text!\"\n [selected]=\"state().orderedList\"\n [disabled]=\"context.interactionDisabled()\"\n (onClick)=\"wysiwyg.toggleOrderedList()\"\n >\n @if (state().orderedList) {\n <ax-suffix>\n <ax-icon class=\"ax-icon ax-icon-check\"></ax-icon>\n </ax-suffix>\n }\n </ax-button-item>\n }\n\n <ax-divider></ax-divider>\n <ax-title>{{ i18n.menu.insert | translate | async }}</ax-title>\n @if (imageMenuItem(); as item) {\n <ax-button-item\n [text]=\"item.text!\"\n [disabled]=\"context.interactionDisabled()\"\n (onClick)=\"beginInsert('image')\"\n ></ax-button-item>\n }\n @if (videoMenuItem(); as item) {\n <ax-button-item\n [text]=\"item.text!\"\n [disabled]=\"context.interactionDisabled()\"\n (onClick)=\"beginInsert('video')\"\n ></ax-button-item>\n }\n </ax-button-item-list>\n </ax-dropdown-panel>\n </ax-button>\n\n <ax-popover\n #insertPopover\n [target]=\"blockMenuTrigger\"\n openOn=\"manual\"\n closeOn=\"clickOut\"\n placement=\"bottom-start\"\n >\n <div class=\"ax-wysiwyg-block-insert-panel\">\n <ax-text-box\n look=\"none\"\n [placeholder]=\"insertPlaceholder()\"\n [ngModel]=\"insertUrl()\"\n (ngModelChange)=\"insertUrl.set($event)\"\n ></ax-text-box>\n <ax-button\n look=\"flat\"\n [text]=\"i18n.insert.insert\"\n (onClick)=\"applyInsert()\"\n ></ax-button>\n </div>\n </ax-popover>\n </div>\n}\n\n<div class=\"ax-wysiwyg-tool-group\">\n @if (boldButton(); as btn) {\n <ax-button\n class=\"ax-sm\"\n look=\"blank\"\n [iconOnly]=\"true\"\n [toggleable]=\"true\"\n [selected]=\"state().bold\"\n [disabled]=\"context.interactionDisabled()\"\n [attr.title]=\"btn.tooltip | translate | async\"\n (onClick)=\"wysiwyg.toggleBold()\"\n >\n <ax-icon class=\"ax-icon {{ btn.icon }}\"></ax-icon>\n </ax-button>\n }\n @if (italicButton(); as btn) {\n <ax-button\n class=\"ax-sm\"\n look=\"blank\"\n [iconOnly]=\"true\"\n [toggleable]=\"true\"\n [selected]=\"state().italic\"\n [disabled]=\"context.interactionDisabled()\"\n [attr.title]=\"btn.tooltip | translate | async\"\n (onClick)=\"wysiwyg.toggleItalic()\"\n >\n <ax-icon class=\"ax-icon {{ btn.icon }}\"></ax-icon>\n </ax-button>\n }\n @if (underlineButton(); as btn) {\n <ax-button\n class=\"ax-sm\"\n look=\"blank\"\n [iconOnly]=\"true\"\n [toggleable]=\"true\"\n [selected]=\"state().underline\"\n [disabled]=\"context.interactionDisabled()\"\n [attr.title]=\"btn.tooltip | translate | async\"\n (onClick)=\"wysiwyg.toggleUnderline()\"\n >\n <ax-icon class=\"ax-icon {{ btn.icon }}\"></ax-icon>\n </ax-button>\n }\n @if (strikeButton(); as btn) {\n <ax-button\n class=\"ax-sm\"\n look=\"blank\"\n [iconOnly]=\"true\"\n [toggleable]=\"true\"\n [selected]=\"state().strike\"\n [disabled]=\"context.interactionDisabled()\"\n [attr.title]=\"btn.tooltip | translate | async\"\n (onClick)=\"wysiwyg.toggleStrike()\"\n >\n <ax-icon class=\"ax-icon {{ btn.icon }}\"></ax-icon>\n </ax-button>\n }\n @if (context.compact()) {\n @if (codeButton(); as btn) {\n <ax-button\n class=\"ax-sm\"\n look=\"blank\"\n [iconOnly]=\"true\"\n [toggleable]=\"true\"\n [selected]=\"state().code\"\n [disabled]=\"context.interactionDisabled()\"\n [attr.title]=\"btn.tooltip | translate | async\"\n (onClick)=\"wysiwyg.toggleCode()\"\n >\n <ax-icon class=\"ax-icon {{ btn.icon }}\"></ax-icon>\n </ax-button>\n }\n } @else if (codeBlockButton(); as btn) {\n <ax-button\n class=\"ax-sm\"\n look=\"blank\"\n [iconOnly]=\"true\"\n [toggleable]=\"true\"\n [selected]=\"state().codeBlock\"\n [disabled]=\"context.interactionDisabled()\"\n [attr.title]=\"btn.tooltip | translate | async\"\n (onClick)=\"wysiwyg.toggleCodeBlock()\"\n >\n <ax-icon class=\"ax-icon {{ btn.icon }}\"></ax-icon>\n </ax-button>\n }\n</div>\n\n<div class=\"ax-wysiwyg-tool-group ax-wysiwyg-font-size-group\">\n <ax-combo-box\n class=\"ax-wysiwyg-font-size-combo ax-sm\"\n [items]=\"fontSizeItems()\"\n [searchable]=\"false\"\n [adaptivityEnabled]=\"false\"\n look=\"blank\"\n [placeholder]=\"i18n.fontSize.placeholder\"\n name=\"wysiwyg-font-size\"\n [disabled]=\"context.interactionDisabled()\"\n [ngModel]=\"fontSizeComboValue()\"\n (ngModelChange)=\"onFontSizeComboChange($event)\"\n ></ax-combo-box>\n</div>\n\n@if (!context.compact()) {\n <div class=\"ax-wysiwyg-tool-group\">\n <ax-button\n class=\"ax-sm\"\n look=\"blank\"\n text=\"P\"\n [toggleable]=\"true\"\n [selected]=\"isParagraphActive()\"\n [disabled]=\"context.interactionDisabled()\"\n [attr.title]=\"i18n.tools.paragraph | translate | async\"\n [attr.aria-label]=\"i18n.tools.paragraph | translate | async\"\n (onClick)=\"wysiwyg.setParagraph()\"\n ></ax-button>\n @for (item of headingButtons(); track item.level) {\n <ax-button\n class=\"ax-sm\"\n look=\"blank\"\n [text]=\"item.label\"\n [toggleable]=\"true\"\n [selected]=\"isHeadingActive(item.level)\"\n [disabled]=\"context.interactionDisabled()\"\n [attr.title]=\"(item.config?.text ?? i18n.blocks.heading(item.level)) | translate | async\"\n [attr.aria-label]=\"(item.config?.text ?? i18n.blocks.heading(item.level)) | translate | async\"\n (onClick)=\"wysiwyg.toggleHeading(item.level)\"\n ></ax-button>\n }\n </div>\n}\n", styles: ["@layer properties;@layer components{ax-wysiwyg-font-style .ax-wysiwyg-block-menu-group{display:flex;flex-shrink:0;flex-wrap:nowrap;align-items:center}ax-wysiwyg-font-style .ax-wysiwyg-block-menu-trigger{max-width:calc(var(--spacing, .25rem) * 40);min-width:calc(var(--spacing, .25rem) * 28);justify-content:space-between;gap:calc(var(--spacing, .25rem) * 1)}ax-wysiwyg-font-style .ax-wysiwyg-block-menu{min-width:calc(var(--spacing, .25rem) * 52);padding-block:calc(var(--spacing, .25rem) * 1)}ax-wysiwyg-font-style .ax-wysiwyg-block-menu ax-title{padding-inline:calc(var(--spacing, .25rem) * 3.5);padding-top:calc(var(--spacing, .25rem) * 2);padding-bottom:calc(var(--spacing, .25rem) * 1);font-size:var(--text-xs, .75rem);line-height:var(--tw-leading, var(--text-xs--line-height, calc(1 / .75)));--tw-font-weight: var(--font-weight-medium, 500);font-weight:var(--font-weight-medium, 500);opacity:60%}ax-wysiwyg-font-style .ax-wysiwyg-block-menu ax-divider{margin-block:calc(var(--spacing, .25rem) * 1)}ax-wysiwyg-font-style .ax-wysiwyg-block-insert-panel{display:flex;min-width:calc(var(--spacing, .25rem) * 56);flex-direction:column;gap:calc(var(--spacing, .25rem) * 2);padding:calc(var(--spacing, .25rem) * 2)}}@property --tw-font-weight{syntax: \"*\"; inherits: false;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-font-weight: initial}}}\n/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { 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: AXButtonComponent, selector: "ax-button", inputs: ["disabled", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "component", type: AXButtonItemComponent, selector: "ax-button-item", inputs: ["color", "disabled", "text", "selected", "divided", "data", "name"], outputs: ["onClick", "onFocus", "onBlur", "disabledChange"] }, { kind: "component", type: AXButtonItemListComponent, selector: "ax-button-item-list", inputs: ["items", "closeParentOnClick", "lockOnLoading"], outputs: ["onItemClick"] }, { kind: "component", type: AXComboBoxComponent, selector: "ax-combo-box", inputs: ["name", "items", "searchable", "multiple", "adaptivityEnabled", "caption", "alternate", "placeholder", "searchPlaceholder", "highlightSearch", "emptyTemplate", "itemTemplate", "selectedTemplate", "disabled", "readonly", "look", "value"], outputs: ["lookChange", "valueChange", "onValueChanged", "onFocus", "onBlur", "onItemClick", "onItemSelected", "onOpened", "onClosed"] }, { kind: "component", type: AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay" }, { kind: "component", type: AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: AXDropdownPanelComponent, selector: "ax-dropdown-panel", inputs: ["isOpen", "fitParent", "dropdownWidth", "position", "placement", "_target", "adaptivityEnabled"], outputs: ["onOpened", "onClosed"] }, { kind: "component", type: AXPopoverComponent, selector: "ax-popover", inputs: ["width", "disablePanelClass", "visualContextScope", "disabled", "offsetX", "offsetY", "target", "placement", "content", "openOn", "closeOn", "hasBackdrop", "openAfter", "closeAfter", "closeOnScroll", "closeOnNavigation", "backdropClass", "panelClass", "adaptivityEnabled"], outputs: ["onOpened", "onClosed"] }, { kind: "component", type: AXTextBoxComponent, selector: "ax-text-box", inputs: ["disabled", "tabIndex", "readonly", "value", "state", "name", "id", "placeholder", "maxLength", "allowNull", "type", "autoComplete", "look", "maskPattern", "customTokens", "class"], outputs: ["onBlur", "onFocus", "valueChange", "stateChange", "onValueChanged", "readonlyChange", "disabledChange", "onKeyDown", "onKeyUp", "onKeyPress", "onMaskChanged"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
370
690
  }
371
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXWysiwygFontStyleComponent, decorators: [{
691
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: AXWysiwygFontStyleComponent, decorators: [{
372
692
  type: Component,
373
- args: [{ selector: 'ax-wysiwyg-font-style', imports: [], providers: [{ provide: AXComponent, useExisting: AXWysiwygFontStyleComponent }], template: "<div class=\"flex\">\n <span class=\"ql-formats\">\n <button class=\"ql-bold\" title=\"Bold\"></button>\n <button class=\"ql-italic\" title=\"Italic\"></button>\n <button class=\"ql-underline\" title=\"Underline\"></button>\n <button class=\"ql-strike\" title=\"Strikethrough\"></button>\n <button class=\"ql-code-block\" title=\"Code block\"></button>\n </span>\n\n <span class=\"ql-formats\">\n <select class=\"ql-size\">\n <option value=\"small\"></option>\n <option selected></option>\n <option value=\"large\"></option>\n <option value=\"huge\"></option>\n </select>\n </span>\n\n <span class=\"ql-formats\">\n <select class=\"ql-header\">\n <option value=\"1\">H1</option>\n <option value=\"2\">H2</option>\n <option value=\"3\">H3</option>\n <option value=\"4\">H4</option>\n <option value=\"5\">H5</option>\n <option value=\"6\">H6</option>\n <option selected></option>\n </select>\n </span>\n</div>\n" }]
374
- }] });
693
+ args: [{ selector: 'ax-wysiwyg-font-style', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, imports: [
694
+ AsyncPipe,
695
+ FormsModule,
696
+ AXButtonComponent,
697
+ AXButtonItemComponent,
698
+ AXButtonItemListComponent,
699
+ AXComboBoxComponent,
700
+ AXDecoratorGenericComponent,
701
+ AXDecoratorIconComponent,
702
+ AXDropdownPanelComponent,
703
+ AXPopoverComponent,
704
+ AXTextBoxComponent,
705
+ AXTranslatorPipe,
706
+ ], providers: [{ provide: AXComponent, useExisting: AXWysiwygFontStyleComponent }], template: "@if (context.compact()) {\n <div class=\"ax-wysiwyg-tool-group ax-wysiwyg-block-menu-group\">\n <ax-button\n #blockMenuTrigger\n class=\"ax-sm ax-wysiwyg-block-menu-trigger\"\n look=\"blank\"\n [text]=\"blockLabel()\"\n [disabled]=\"context.interactionDisabled()\"\n [attr.title]=\"i18n.menu.blockType | translate | async\"\n >\n <ax-suffix>\n <ax-icon class=\"ax-icon ax-icon-chevron-down\"></ax-icon>\n </ax-suffix>\n <ax-dropdown-panel>\n <ax-button-item-list class=\"ax-wysiwyg-block-menu\">\n <ax-title>{{ i18n.menu.blockType | translate | async }}</ax-title>\n @if (paragraphMenuItem(); as item) {\n <ax-button-item\n [text]=\"item.text!\"\n [selected]=\"isParagraphActive()\"\n [disabled]=\"context.interactionDisabled()\"\n (onClick)=\"wysiwyg.setParagraph()\"\n >\n @if (isParagraphActive()) {\n <ax-suffix>\n <ax-icon class=\"ax-icon ax-icon-check\"></ax-icon>\n </ax-suffix>\n }\n </ax-button-item>\n }\n @for (heading of headingButtons(); track heading.level) {\n @if (heading.config; as item) {\n <ax-button-item\n [text]=\"item.text!\"\n [selected]=\"isHeadingActive(heading.level)\"\n [disabled]=\"context.interactionDisabled()\"\n (onClick)=\"wysiwyg.toggleHeading(heading.level)\"\n >\n @if (isHeadingActive(heading.level)) {\n <ax-suffix>\n <ax-icon class=\"ax-icon ax-icon-check\"></ax-icon>\n </ax-suffix>\n }\n </ax-button-item>\n }\n }\n @if (blockquoteMenuItem(); as item) {\n <ax-button-item\n [text]=\"item.text!\"\n [selected]=\"state().blockquote\"\n [disabled]=\"context.interactionDisabled()\"\n (onClick)=\"wysiwyg.toggleBlockquote()\"\n >\n @if (state().blockquote) {\n <ax-suffix>\n <ax-icon class=\"ax-icon ax-icon-check\"></ax-icon>\n </ax-suffix>\n }\n </ax-button-item>\n }\n @if (codeBlockMenuItem(); as item) {\n <ax-button-item\n [text]=\"item.text!\"\n [selected]=\"state().codeBlock\"\n [disabled]=\"context.interactionDisabled()\"\n (onClick)=\"wysiwyg.toggleCodeBlock()\"\n >\n @if (state().codeBlock) {\n <ax-suffix>\n <ax-icon class=\"ax-icon ax-icon-check\"></ax-icon>\n </ax-suffix>\n }\n </ax-button-item>\n }\n @if (bulletListMenuItem(); as item) {\n <ax-button-item\n [text]=\"item.text!\"\n [selected]=\"state().bulletList\"\n [disabled]=\"context.interactionDisabled()\"\n (onClick)=\"wysiwyg.toggleBulletList()\"\n >\n @if (state().bulletList) {\n <ax-suffix>\n <ax-icon class=\"ax-icon ax-icon-check\"></ax-icon>\n </ax-suffix>\n }\n </ax-button-item>\n }\n @if (orderedListMenuItem(); as item) {\n <ax-button-item\n [text]=\"item.text!\"\n [selected]=\"state().orderedList\"\n [disabled]=\"context.interactionDisabled()\"\n (onClick)=\"wysiwyg.toggleOrderedList()\"\n >\n @if (state().orderedList) {\n <ax-suffix>\n <ax-icon class=\"ax-icon ax-icon-check\"></ax-icon>\n </ax-suffix>\n }\n </ax-button-item>\n }\n\n <ax-divider></ax-divider>\n <ax-title>{{ i18n.menu.insert | translate | async }}</ax-title>\n @if (imageMenuItem(); as item) {\n <ax-button-item\n [text]=\"item.text!\"\n [disabled]=\"context.interactionDisabled()\"\n (onClick)=\"beginInsert('image')\"\n ></ax-button-item>\n }\n @if (videoMenuItem(); as item) {\n <ax-button-item\n [text]=\"item.text!\"\n [disabled]=\"context.interactionDisabled()\"\n (onClick)=\"beginInsert('video')\"\n ></ax-button-item>\n }\n </ax-button-item-list>\n </ax-dropdown-panel>\n </ax-button>\n\n <ax-popover\n #insertPopover\n [target]=\"blockMenuTrigger\"\n openOn=\"manual\"\n closeOn=\"clickOut\"\n placement=\"bottom-start\"\n >\n <div class=\"ax-wysiwyg-block-insert-panel\">\n <ax-text-box\n look=\"none\"\n [placeholder]=\"insertPlaceholder()\"\n [ngModel]=\"insertUrl()\"\n (ngModelChange)=\"insertUrl.set($event)\"\n ></ax-text-box>\n <ax-button\n look=\"flat\"\n [text]=\"i18n.insert.insert\"\n (onClick)=\"applyInsert()\"\n ></ax-button>\n </div>\n </ax-popover>\n </div>\n}\n\n<div class=\"ax-wysiwyg-tool-group\">\n @if (boldButton(); as btn) {\n <ax-button\n class=\"ax-sm\"\n look=\"blank\"\n [iconOnly]=\"true\"\n [toggleable]=\"true\"\n [selected]=\"state().bold\"\n [disabled]=\"context.interactionDisabled()\"\n [attr.title]=\"btn.tooltip | translate | async\"\n (onClick)=\"wysiwyg.toggleBold()\"\n >\n <ax-icon class=\"ax-icon {{ btn.icon }}\"></ax-icon>\n </ax-button>\n }\n @if (italicButton(); as btn) {\n <ax-button\n class=\"ax-sm\"\n look=\"blank\"\n [iconOnly]=\"true\"\n [toggleable]=\"true\"\n [selected]=\"state().italic\"\n [disabled]=\"context.interactionDisabled()\"\n [attr.title]=\"btn.tooltip | translate | async\"\n (onClick)=\"wysiwyg.toggleItalic()\"\n >\n <ax-icon class=\"ax-icon {{ btn.icon }}\"></ax-icon>\n </ax-button>\n }\n @if (underlineButton(); as btn) {\n <ax-button\n class=\"ax-sm\"\n look=\"blank\"\n [iconOnly]=\"true\"\n [toggleable]=\"true\"\n [selected]=\"state().underline\"\n [disabled]=\"context.interactionDisabled()\"\n [attr.title]=\"btn.tooltip | translate | async\"\n (onClick)=\"wysiwyg.toggleUnderline()\"\n >\n <ax-icon class=\"ax-icon {{ btn.icon }}\"></ax-icon>\n </ax-button>\n }\n @if (strikeButton(); as btn) {\n <ax-button\n class=\"ax-sm\"\n look=\"blank\"\n [iconOnly]=\"true\"\n [toggleable]=\"true\"\n [selected]=\"state().strike\"\n [disabled]=\"context.interactionDisabled()\"\n [attr.title]=\"btn.tooltip | translate | async\"\n (onClick)=\"wysiwyg.toggleStrike()\"\n >\n <ax-icon class=\"ax-icon {{ btn.icon }}\"></ax-icon>\n </ax-button>\n }\n @if (context.compact()) {\n @if (codeButton(); as btn) {\n <ax-button\n class=\"ax-sm\"\n look=\"blank\"\n [iconOnly]=\"true\"\n [toggleable]=\"true\"\n [selected]=\"state().code\"\n [disabled]=\"context.interactionDisabled()\"\n [attr.title]=\"btn.tooltip | translate | async\"\n (onClick)=\"wysiwyg.toggleCode()\"\n >\n <ax-icon class=\"ax-icon {{ btn.icon }}\"></ax-icon>\n </ax-button>\n }\n } @else if (codeBlockButton(); as btn) {\n <ax-button\n class=\"ax-sm\"\n look=\"blank\"\n [iconOnly]=\"true\"\n [toggleable]=\"true\"\n [selected]=\"state().codeBlock\"\n [disabled]=\"context.interactionDisabled()\"\n [attr.title]=\"btn.tooltip | translate | async\"\n (onClick)=\"wysiwyg.toggleCodeBlock()\"\n >\n <ax-icon class=\"ax-icon {{ btn.icon }}\"></ax-icon>\n </ax-button>\n }\n</div>\n\n<div class=\"ax-wysiwyg-tool-group ax-wysiwyg-font-size-group\">\n <ax-combo-box\n class=\"ax-wysiwyg-font-size-combo ax-sm\"\n [items]=\"fontSizeItems()\"\n [searchable]=\"false\"\n [adaptivityEnabled]=\"false\"\n look=\"blank\"\n [placeholder]=\"i18n.fontSize.placeholder\"\n name=\"wysiwyg-font-size\"\n [disabled]=\"context.interactionDisabled()\"\n [ngModel]=\"fontSizeComboValue()\"\n (ngModelChange)=\"onFontSizeComboChange($event)\"\n ></ax-combo-box>\n</div>\n\n@if (!context.compact()) {\n <div class=\"ax-wysiwyg-tool-group\">\n <ax-button\n class=\"ax-sm\"\n look=\"blank\"\n text=\"P\"\n [toggleable]=\"true\"\n [selected]=\"isParagraphActive()\"\n [disabled]=\"context.interactionDisabled()\"\n [attr.title]=\"i18n.tools.paragraph | translate | async\"\n [attr.aria-label]=\"i18n.tools.paragraph | translate | async\"\n (onClick)=\"wysiwyg.setParagraph()\"\n ></ax-button>\n @for (item of headingButtons(); track item.level) {\n <ax-button\n class=\"ax-sm\"\n look=\"blank\"\n [text]=\"item.label\"\n [toggleable]=\"true\"\n [selected]=\"isHeadingActive(item.level)\"\n [disabled]=\"context.interactionDisabled()\"\n [attr.title]=\"(item.config?.text ?? i18n.blocks.heading(item.level)) | translate | async\"\n [attr.aria-label]=\"(item.config?.text ?? i18n.blocks.heading(item.level)) | translate | async\"\n (onClick)=\"wysiwyg.toggleHeading(item.level)\"\n ></ax-button>\n }\n </div>\n}\n", styles: ["@layer properties;@layer components{ax-wysiwyg-font-style .ax-wysiwyg-block-menu-group{display:flex;flex-shrink:0;flex-wrap:nowrap;align-items:center}ax-wysiwyg-font-style .ax-wysiwyg-block-menu-trigger{max-width:calc(var(--spacing, .25rem) * 40);min-width:calc(var(--spacing, .25rem) * 28);justify-content:space-between;gap:calc(var(--spacing, .25rem) * 1)}ax-wysiwyg-font-style .ax-wysiwyg-block-menu{min-width:calc(var(--spacing, .25rem) * 52);padding-block:calc(var(--spacing, .25rem) * 1)}ax-wysiwyg-font-style .ax-wysiwyg-block-menu ax-title{padding-inline:calc(var(--spacing, .25rem) * 3.5);padding-top:calc(var(--spacing, .25rem) * 2);padding-bottom:calc(var(--spacing, .25rem) * 1);font-size:var(--text-xs, .75rem);line-height:var(--tw-leading, var(--text-xs--line-height, calc(1 / .75)));--tw-font-weight: var(--font-weight-medium, 500);font-weight:var(--font-weight-medium, 500);opacity:60%}ax-wysiwyg-font-style .ax-wysiwyg-block-menu ax-divider{margin-block:calc(var(--spacing, .25rem) * 1)}ax-wysiwyg-font-style .ax-wysiwyg-block-insert-panel{display:flex;min-width:calc(var(--spacing, .25rem) * 56);flex-direction:column;gap:calc(var(--spacing, .25rem) * 2);padding:calc(var(--spacing, .25rem) * 2)}}@property --tw-font-weight{syntax: \"*\"; inherits: false;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-font-weight: initial}}}\n/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */\n"] }]
707
+ }], propDecorators: { headingLevels: [{ type: i0.Input, args: [{ isSignal: true, alias: "headingLevels", required: false }] }], buttons: [{ type: i0.Input, args: [{ isSignal: true, alias: "buttons", required: false }] }], menuItems: [{ type: i0.Input, args: [{ isSignal: true, alias: "menuItems", required: false }] }], insertPopover: [{ type: i0.ViewChild, args: ['insertPopover', { isSignal: true }] }] } });
375
708
 
376
709
  /**
377
- * A container component for WYSIWYG (What You See Is What You Get) editor functionality.
710
+ * Undo and redo controls for the WYSIWYG toolbar.
378
711
  * @category Components
379
712
  */
380
713
  class AXWysiwygHistoryComponent {
381
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXWysiwygHistoryComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
382
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.8", type: AXWysiwygHistoryComponent, isStandalone: true, selector: "ax-wysiwyg-history", providers: [{ provide: AXComponent, useExisting: AXWysiwygHistoryComponent }], ngImport: i0, template: "<span class=\"ql-formats\">\n <button class=\"ql-undo\"></button>\n <button class=\"ql-redo\"></button>\n</span>\n", encapsulation: i0.ViewEncapsulation.None }); }
714
+ constructor() {
715
+ this.buttons = input(/* @ts-ignore */
716
+ ...(ngDevMode ? [undefined, { debugName: "buttons" }] : /* istanbul ignore next */ []));
717
+ this.wysiwyg = inject(AXWysiwyg);
718
+ this.context = inject(AXWysiwygContext);
719
+ this.state = this.wysiwyg.state;
720
+ this.undoButton = computed(() => resolveAXWysiwygButton('undo', { icon: 'ax-icon-undo', tooltip: AX_WYSIWYG_I18N.tools.undo }, this.buttons()), /* @ts-ignore */
721
+ ...(ngDevMode ? [{ debugName: "undoButton" }] : /* istanbul ignore next */ []));
722
+ this.redoButton = computed(() => resolveAXWysiwygButton('redo', { icon: 'ax-icon-redo', tooltip: AX_WYSIWYG_I18N.tools.redo }, this.buttons()), /* @ts-ignore */
723
+ ...(ngDevMode ? [{ debugName: "redoButton" }] : /* istanbul ignore next */ []));
724
+ }
725
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: AXWysiwygHistoryComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
726
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.6", type: AXWysiwygHistoryComponent, isStandalone: true, selector: "ax-wysiwyg-history", inputs: { buttons: { classPropertyName: "buttons", publicName: "buttons", isSignal: true, isRequired: false, transformFunction: null } }, providers: [{ provide: AXComponent, useExisting: AXWysiwygHistoryComponent }], ngImport: i0, template: "<div class=\"ax-wysiwyg-tool-group\">\n @if (undoButton(); as undo) {\n <ax-button\n class=\"ax-sm\"\n look=\"blank\"\n [iconOnly]=\"true\"\n [disabled]=\"context.interactionDisabled() || !state().canUndo\"\n [attr.title]=\"undo.tooltip | translate | async\"\n [attr.aria-label]=\"undo.tooltip | translate | async\"\n (onClick)=\"wysiwyg.undo()\"\n >\n <ax-icon class=\"ax-icon {{ undo.icon }}\"></ax-icon>\n </ax-button>\n }\n @if (redoButton(); as redo) {\n <ax-button\n class=\"ax-sm\"\n look=\"blank\"\n [iconOnly]=\"true\"\n [disabled]=\"context.interactionDisabled() || !state().canRedo\"\n [attr.title]=\"redo.tooltip | translate | async\"\n [attr.aria-label]=\"redo.tooltip | translate | async\"\n (onClick)=\"wysiwyg.redo()\"\n >\n <ax-icon class=\"ax-icon {{ redo.icon }}\"></ax-icon>\n </ax-button>\n }\n</div>\n", dependencies: [{ kind: "component", type: AXButtonComponent, selector: "ax-button", inputs: ["disabled", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "component", type: AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
383
727
  }
384
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXWysiwygHistoryComponent, decorators: [{
728
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: AXWysiwygHistoryComponent, decorators: [{
385
729
  type: Component,
386
- args: [{ selector: 'ax-wysiwyg-history', encapsulation: ViewEncapsulation.None, imports: [], providers: [{ provide: AXComponent, useExisting: AXWysiwygHistoryComponent }], template: "<span class=\"ql-formats\">\n <button class=\"ql-undo\"></button>\n <button class=\"ql-redo\"></button>\n</span>\n" }]
387
- }] });
730
+ args: [{ selector: 'ax-wysiwyg-history', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, imports: [AsyncPipe, AXButtonComponent, AXDecoratorIconComponent, AXTranslatorPipe], providers: [{ provide: AXComponent, useExisting: AXWysiwygHistoryComponent }], template: "<div class=\"ax-wysiwyg-tool-group\">\n @if (undoButton(); as undo) {\n <ax-button\n class=\"ax-sm\"\n look=\"blank\"\n [iconOnly]=\"true\"\n [disabled]=\"context.interactionDisabled() || !state().canUndo\"\n [attr.title]=\"undo.tooltip | translate | async\"\n [attr.aria-label]=\"undo.tooltip | translate | async\"\n (onClick)=\"wysiwyg.undo()\"\n >\n <ax-icon class=\"ax-icon {{ undo.icon }}\"></ax-icon>\n </ax-button>\n }\n @if (redoButton(); as redo) {\n <ax-button\n class=\"ax-sm\"\n look=\"blank\"\n [iconOnly]=\"true\"\n [disabled]=\"context.interactionDisabled() || !state().canRedo\"\n [attr.title]=\"redo.tooltip | translate | async\"\n [attr.aria-label]=\"redo.tooltip | translate | async\"\n (onClick)=\"wysiwyg.redo()\"\n >\n <ax-icon class=\"ax-icon {{ redo.icon }}\"></ax-icon>\n </ax-button>\n }\n</div>\n" }]
731
+ }], propDecorators: { buttons: [{ type: i0.Input, args: [{ isSignal: true, alias: "buttons", required: false }] }] } });
388
732
 
389
733
  /**
390
- * A container component for WYSIWYG (What You See Is What You Get) editor functionality.
734
+ * Link, image, and video insertion controls for the WYSIWYG toolbar.
391
735
  * @category Components
392
736
  */
393
737
  class AXWysiwygInsertComponent {
394
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXWysiwygInsertComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
395
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.8", type: AXWysiwygInsertComponent, isStandalone: true, selector: "ax-wysiwyg-insert", providers: [{ provide: AXComponent, useExisting: AXWysiwygInsertComponent }], ngImport: i0, template: "<span class=\"ql-formats\">\n <button class=\"ql-image\" title=\"Insert image\"></button>\n <button class=\"ql-video\" title=\"Insert video\"></button>\n <button class=\"ql-link\" title=\"Insert link\"></button>\n</span>\n", encapsulation: i0.ViewEncapsulation.None }); }
738
+ constructor() {
739
+ this.buttons = input(/* @ts-ignore */
740
+ ...(ngDevMode ? [undefined, { debugName: "buttons" }] : /* istanbul ignore next */ []));
741
+ this.i18n = AX_WYSIWYG_I18N;
742
+ this.wysiwyg = inject(AXWysiwyg);
743
+ this.context = inject(AXWysiwygContext);
744
+ this.state = this.wysiwyg.state;
745
+ this.linkButton = computed(() => resolveAXWysiwygButton('link', { icon: 'ax-icon-link', tooltip: AX_WYSIWYG_I18N.tools.link }, this.buttons()), /* @ts-ignore */
746
+ ...(ngDevMode ? [{ debugName: "linkButton" }] : /* istanbul ignore next */ []));
747
+ this.imageButton = computed(() => resolveAXWysiwygButton('image', { icon: 'ax-icon-image', tooltip: AX_WYSIWYG_I18N.tools.image }, this.buttons()), /* @ts-ignore */
748
+ ...(ngDevMode ? [{ debugName: "imageButton" }] : /* istanbul ignore next */ []));
749
+ this.videoButton = computed(() => resolveAXWysiwygButton('video', { icon: 'ax-icon-play', tooltip: AX_WYSIWYG_I18N.tools.video }, this.buttons()), /* @ts-ignore */
750
+ ...(ngDevMode ? [{ debugName: "videoButton" }] : /* istanbul ignore next */ []));
751
+ this.linkUrl = signal('', /* @ts-ignore */
752
+ ...(ngDevMode ? [{ debugName: "linkUrl" }] : /* istanbul ignore next */ []));
753
+ this.imageUrl = signal('', /* @ts-ignore */
754
+ ...(ngDevMode ? [{ debugName: "imageUrl" }] : /* istanbul ignore next */ []));
755
+ this.videoUrl = signal('', /* @ts-ignore */
756
+ ...(ngDevMode ? [{ debugName: "videoUrl" }] : /* istanbul ignore next */ []));
757
+ }
758
+ applyLink() {
759
+ const url = this.linkUrl().trim();
760
+ if (url) {
761
+ this.wysiwyg.setLink(url);
762
+ }
763
+ }
764
+ removeLink() {
765
+ this.wysiwyg.unsetLink();
766
+ this.linkUrl.set('');
767
+ }
768
+ applyImage() {
769
+ const url = this.imageUrl().trim();
770
+ if (url) {
771
+ this.wysiwyg.insertImage(url);
772
+ }
773
+ }
774
+ applyVideo() {
775
+ const url = this.videoUrl().trim();
776
+ if (url) {
777
+ this.wysiwyg.insertVideo(url);
778
+ }
779
+ }
780
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: AXWysiwygInsertComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
781
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.6", type: AXWysiwygInsertComponent, isStandalone: true, selector: "ax-wysiwyg-insert", inputs: { buttons: { classPropertyName: "buttons", publicName: "buttons", isSignal: true, isRequired: false, transformFunction: null } }, providers: [{ provide: AXComponent, useExisting: AXWysiwygInsertComponent }], ngImport: i0, template: "<div class=\"ax-wysiwyg-tool-group\">\n @if (linkButton(); as btn) {\n <div class=\"ax-wysiwyg-insert-control\">\n <ax-button\n class=\"ax-sm\"\n #linkTrigger\n look=\"blank\"\n [iconOnly]=\"true\"\n [toggleable]=\"true\"\n [selected]=\"!!state().linkHref\"\n [disabled]=\"context.interactionDisabled()\"\n [attr.title]=\"btn.tooltip | translate | async\"\n [attr.aria-label]=\"btn.tooltip | translate | async\"\n >\n <ax-icon class=\"ax-icon {{ btn.icon }}\"></ax-icon>\n </ax-button>\n <ax-popover [target]=\"linkTrigger\" trigger=\"click\" placement=\"bottom-start\">\n <div class=\"ax-wysiwyg-insert-panel\">\n <ax-text-box\n look=\"none\"\n [placeholder]=\"i18n.insert.linkUrl | translate | async\"\n [ngModel]=\"linkUrl()\"\n (ngModelChange)=\"linkUrl.set($event)\"\n ></ax-text-box>\n <div class=\"ax-wysiwyg-insert-actions\">\n <ax-button look=\"flat\" [text]=\"i18n.insert.apply\" (onClick)=\"applyLink()\"></ax-button>\n <ax-button\n look=\"flat\"\n [text]=\"i18n.insert.remove\"\n [disabled]=\"!state().linkHref\"\n (onClick)=\"removeLink()\"\n ></ax-button>\n </div>\n </div>\n </ax-popover>\n </div>\n }\n\n @if (!context.compact()) {\n @if (imageButton(); as btn) {\n <div class=\"ax-wysiwyg-insert-control\">\n <ax-button\n class=\"ax-sm\"\n #imageTrigger\n look=\"blank\"\n [iconOnly]=\"true\"\n [disabled]=\"context.interactionDisabled()\"\n [attr.title]=\"btn.tooltip | translate | async\"\n [attr.aria-label]=\"btn.tooltip | translate | async\"\n >\n <ax-icon class=\"ax-icon {{ btn.icon }}\"></ax-icon>\n </ax-button>\n <ax-popover [target]=\"imageTrigger\" trigger=\"click\" placement=\"bottom-start\">\n <div class=\"ax-wysiwyg-insert-panel\">\n <ax-text-box\n look=\"none\"\n [placeholder]=\"i18n.insert.imageUrl | translate | async\"\n [ngModel]=\"imageUrl()\"\n (ngModelChange)=\"imageUrl.set($event)\"\n ></ax-text-box>\n <ax-button look=\"flat\" [text]=\"i18n.insert.insert\" (onClick)=\"applyImage()\"></ax-button>\n </div>\n </ax-popover>\n </div>\n }\n\n @if (videoButton(); as btn) {\n <div class=\"ax-wysiwyg-insert-control\">\n <ax-button\n class=\"ax-sm\"\n #videoTrigger\n look=\"blank\"\n [iconOnly]=\"true\"\n [disabled]=\"context.interactionDisabled()\"\n [attr.title]=\"btn.tooltip | translate | async\"\n [attr.aria-label]=\"btn.tooltip | translate | async\"\n >\n <ax-icon class=\"ax-icon {{ btn.icon }}\"></ax-icon>\n </ax-button>\n <ax-popover [target]=\"videoTrigger\" trigger=\"click\" placement=\"bottom-start\">\n <div class=\"ax-wysiwyg-insert-panel\">\n <ax-text-box\n look=\"none\"\n [placeholder]=\"i18n.insert.videoUrl | translate | async\"\n [ngModel]=\"videoUrl()\"\n (ngModelChange)=\"videoUrl.set($event)\"\n ></ax-text-box>\n <ax-button look=\"flat\" [text]=\"i18n.insert.insert\" (onClick)=\"applyVideo()\"></ax-button>\n </div>\n </ax-popover>\n </div>\n }\n }\n</div>\n", styles: ["@layer components{ax-wysiwyg-insert .ax-wysiwyg-insert-panel{display:flex;min-width:calc(var(--spacing, .25rem) * 56);flex-direction:column;gap:calc(var(--spacing, .25rem) * 2);padding:calc(var(--spacing, .25rem) * 2)}ax-wysiwyg-insert .ax-wysiwyg-insert-actions{display:flex;flex-wrap:wrap;gap:calc(var(--spacing, .25rem) * 1)}}\n/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { 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: AXButtonComponent, selector: "ax-button", inputs: ["disabled", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "component", type: AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: AXPopoverComponent, selector: "ax-popover", inputs: ["width", "disablePanelClass", "visualContextScope", "disabled", "offsetX", "offsetY", "target", "placement", "content", "openOn", "closeOn", "hasBackdrop", "openAfter", "closeAfter", "closeOnScroll", "closeOnNavigation", "backdropClass", "panelClass", "adaptivityEnabled"], outputs: ["onOpened", "onClosed"] }, { kind: "component", type: AXTextBoxComponent, selector: "ax-text-box", inputs: ["disabled", "tabIndex", "readonly", "value", "state", "name", "id", "placeholder", "maxLength", "allowNull", "type", "autoComplete", "look", "maskPattern", "customTokens", "class"], outputs: ["onBlur", "onFocus", "valueChange", "stateChange", "onValueChanged", "readonlyChange", "disabledChange", "onKeyDown", "onKeyUp", "onKeyPress", "onMaskChanged"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
396
782
  }
397
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXWysiwygInsertComponent, decorators: [{
783
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: AXWysiwygInsertComponent, decorators: [{
398
784
  type: Component,
399
- args: [{ selector: 'ax-wysiwyg-insert', encapsulation: ViewEncapsulation.None, imports: [], providers: [{ provide: AXComponent, useExisting: AXWysiwygInsertComponent }], template: "<span class=\"ql-formats\">\n <button class=\"ql-image\" title=\"Insert image\"></button>\n <button class=\"ql-video\" title=\"Insert video\"></button>\n <button class=\"ql-link\" title=\"Insert link\"></button>\n</span>\n" }]
400
- }] });
785
+ args: [{ selector: 'ax-wysiwyg-insert', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, imports: [
786
+ AsyncPipe,
787
+ FormsModule,
788
+ AXButtonComponent,
789
+ AXDecoratorIconComponent,
790
+ AXPopoverComponent,
791
+ AXTextBoxComponent,
792
+ AXTranslatorPipe,
793
+ ], providers: [{ provide: AXComponent, useExisting: AXWysiwygInsertComponent }], template: "<div class=\"ax-wysiwyg-tool-group\">\n @if (linkButton(); as btn) {\n <div class=\"ax-wysiwyg-insert-control\">\n <ax-button\n class=\"ax-sm\"\n #linkTrigger\n look=\"blank\"\n [iconOnly]=\"true\"\n [toggleable]=\"true\"\n [selected]=\"!!state().linkHref\"\n [disabled]=\"context.interactionDisabled()\"\n [attr.title]=\"btn.tooltip | translate | async\"\n [attr.aria-label]=\"btn.tooltip | translate | async\"\n >\n <ax-icon class=\"ax-icon {{ btn.icon }}\"></ax-icon>\n </ax-button>\n <ax-popover [target]=\"linkTrigger\" trigger=\"click\" placement=\"bottom-start\">\n <div class=\"ax-wysiwyg-insert-panel\">\n <ax-text-box\n look=\"none\"\n [placeholder]=\"i18n.insert.linkUrl | translate | async\"\n [ngModel]=\"linkUrl()\"\n (ngModelChange)=\"linkUrl.set($event)\"\n ></ax-text-box>\n <div class=\"ax-wysiwyg-insert-actions\">\n <ax-button look=\"flat\" [text]=\"i18n.insert.apply\" (onClick)=\"applyLink()\"></ax-button>\n <ax-button\n look=\"flat\"\n [text]=\"i18n.insert.remove\"\n [disabled]=\"!state().linkHref\"\n (onClick)=\"removeLink()\"\n ></ax-button>\n </div>\n </div>\n </ax-popover>\n </div>\n }\n\n @if (!context.compact()) {\n @if (imageButton(); as btn) {\n <div class=\"ax-wysiwyg-insert-control\">\n <ax-button\n class=\"ax-sm\"\n #imageTrigger\n look=\"blank\"\n [iconOnly]=\"true\"\n [disabled]=\"context.interactionDisabled()\"\n [attr.title]=\"btn.tooltip | translate | async\"\n [attr.aria-label]=\"btn.tooltip | translate | async\"\n >\n <ax-icon class=\"ax-icon {{ btn.icon }}\"></ax-icon>\n </ax-button>\n <ax-popover [target]=\"imageTrigger\" trigger=\"click\" placement=\"bottom-start\">\n <div class=\"ax-wysiwyg-insert-panel\">\n <ax-text-box\n look=\"none\"\n [placeholder]=\"i18n.insert.imageUrl | translate | async\"\n [ngModel]=\"imageUrl()\"\n (ngModelChange)=\"imageUrl.set($event)\"\n ></ax-text-box>\n <ax-button look=\"flat\" [text]=\"i18n.insert.insert\" (onClick)=\"applyImage()\"></ax-button>\n </div>\n </ax-popover>\n </div>\n }\n\n @if (videoButton(); as btn) {\n <div class=\"ax-wysiwyg-insert-control\">\n <ax-button\n class=\"ax-sm\"\n #videoTrigger\n look=\"blank\"\n [iconOnly]=\"true\"\n [disabled]=\"context.interactionDisabled()\"\n [attr.title]=\"btn.tooltip | translate | async\"\n [attr.aria-label]=\"btn.tooltip | translate | async\"\n >\n <ax-icon class=\"ax-icon {{ btn.icon }}\"></ax-icon>\n </ax-button>\n <ax-popover [target]=\"videoTrigger\" trigger=\"click\" placement=\"bottom-start\">\n <div class=\"ax-wysiwyg-insert-panel\">\n <ax-text-box\n look=\"none\"\n [placeholder]=\"i18n.insert.videoUrl | translate | async\"\n [ngModel]=\"videoUrl()\"\n (ngModelChange)=\"videoUrl.set($event)\"\n ></ax-text-box>\n <ax-button look=\"flat\" [text]=\"i18n.insert.insert\" (onClick)=\"applyVideo()\"></ax-button>\n </div>\n </ax-popover>\n </div>\n }\n }\n</div>\n", styles: ["@layer components{ax-wysiwyg-insert .ax-wysiwyg-insert-panel{display:flex;min-width:calc(var(--spacing, .25rem) * 56);flex-direction:column;gap:calc(var(--spacing, .25rem) * 2);padding:calc(var(--spacing, .25rem) * 2)}ax-wysiwyg-insert .ax-wysiwyg-insert-actions{display:flex;flex-wrap:wrap;gap:calc(var(--spacing, .25rem) * 1)}}\n/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */\n"] }]
794
+ }], propDecorators: { buttons: [{ type: i0.Input, args: [{ isSignal: true, alias: "buttons", required: false }] }] } });
401
795
 
402
796
  /**
403
- * A container component for WYSIWYG (What You See Is What You Get) editor functionality.
797
+ * List and text-direction controls for the WYSIWYG toolbar.
404
798
  * @category Components
405
799
  */
406
800
  class AXWysiwygListComponent {
407
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXWysiwygListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
408
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.8", type: AXWysiwygListComponent, isStandalone: true, selector: "ax-wysiwyg-list", providers: [{ provide: AXComponent, useExisting: AXWysiwygListComponent }], ngImport: i0, template: "<span class=\"ql-formats\">\n <button class=\"ql-list\" value=\"ordered\" title=\"Ordered list\"></button>\n <button class=\"ql-list\" value=\"bullet\" title=\"Bulleted list\"></button>\n <button class=\"ql-direction\" value=\"rtl\" title=\"Right-to-left\"></button>\n</span>\n", encapsulation: i0.ViewEncapsulation.None }); }
801
+ constructor() {
802
+ this.buttons = input(/* @ts-ignore */
803
+ ...(ngDevMode ? [undefined, { debugName: "buttons" }] : /* istanbul ignore next */ []));
804
+ this.wysiwyg = inject(AXWysiwyg);
805
+ this.context = inject(AXWysiwygContext);
806
+ this.state = this.wysiwyg.state;
807
+ this.bulletButton = computed(() => resolveAXWysiwygButton('bulletList', { icon: 'ax-icon-un-order-list', tooltip: AX_WYSIWYG_I18N.tools.bulletList }, this.buttons()), /* @ts-ignore */
808
+ ...(ngDevMode ? [{ debugName: "bulletButton" }] : /* istanbul ignore next */ []));
809
+ this.orderedButton = computed(() => resolveAXWysiwygButton('orderedList', { icon: 'ax-icon-order-list', tooltip: AX_WYSIWYG_I18N.tools.orderedList }, this.buttons()), /* @ts-ignore */
810
+ ...(ngDevMode ? [{ debugName: "orderedButton" }] : /* istanbul ignore next */ []));
811
+ this.rtlButton = computed(() => resolveAXWysiwygButton('rtl', { icon: 'ax-icon-text-direction-rtl', tooltip: AX_WYSIWYG_I18N.tools.rtl }, this.buttons()), /* @ts-ignore */
812
+ ...(ngDevMode ? [{ debugName: "rtlButton" }] : /* istanbul ignore next */ []));
813
+ }
814
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: AXWysiwygListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
815
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.6", type: AXWysiwygListComponent, isStandalone: true, selector: "ax-wysiwyg-list", inputs: { buttons: { classPropertyName: "buttons", publicName: "buttons", isSignal: true, isRequired: false, transformFunction: null } }, providers: [{ provide: AXComponent, useExisting: AXWysiwygListComponent }], ngImport: i0, template: "<div class=\"ax-wysiwyg-tool-group\">\n @if (!context.compact()) {\n @if (orderedButton(); as btn) {\n <ax-button\n class=\"ax-sm\"\n look=\"blank\"\n [iconOnly]=\"true\"\n [toggleable]=\"true\"\n [selected]=\"state().orderedList\"\n [disabled]=\"context.interactionDisabled()\"\n [attr.title]=\"btn.tooltip | translate | async\"\n (onClick)=\"wysiwyg.toggleOrderedList()\"\n >\n <ax-icon class=\"ax-icon {{ btn.icon }}\"></ax-icon>\n </ax-button>\n }\n @if (bulletButton(); as btn) {\n <ax-button\n class=\"ax-sm\"\n look=\"blank\"\n [iconOnly]=\"true\"\n [toggleable]=\"true\"\n [selected]=\"state().bulletList\"\n [disabled]=\"context.interactionDisabled()\"\n [attr.title]=\"btn.tooltip | translate | async\"\n (onClick)=\"wysiwyg.toggleBulletList()\"\n >\n <ax-icon class=\"ax-icon {{ btn.icon }}\"></ax-icon>\n </ax-button>\n }\n }\n @if (rtlButton(); as btn) {\n <ax-button\n class=\"ax-sm\"\n look=\"blank\"\n [iconOnly]=\"true\"\n [toggleable]=\"true\"\n [selected]=\"state().textDirection === 'rtl'\"\n [disabled]=\"context.interactionDisabled()\"\n [attr.title]=\"btn.tooltip | translate | async\"\n (onClick)=\"wysiwyg.setTextDirection(state().textDirection === 'rtl' ? 'ltr' : 'rtl')\"\n >\n <ax-icon class=\"ax-icon {{ btn.icon }}\"></ax-icon>\n </ax-button>\n }\n</div>\n", dependencies: [{ kind: "component", type: AXButtonComponent, selector: "ax-button", inputs: ["disabled", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "component", type: AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
409
816
  }
410
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXWysiwygListComponent, decorators: [{
817
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: AXWysiwygListComponent, decorators: [{
411
818
  type: Component,
412
- args: [{ selector: 'ax-wysiwyg-list', encapsulation: ViewEncapsulation.None, imports: [], providers: [{ provide: AXComponent, useExisting: AXWysiwygListComponent }], template: "<span class=\"ql-formats\">\n <button class=\"ql-list\" value=\"ordered\" title=\"Ordered list\"></button>\n <button class=\"ql-list\" value=\"bullet\" title=\"Bulleted list\"></button>\n <button class=\"ql-direction\" value=\"rtl\" title=\"Right-to-left\"></button>\n</span>\n" }]
413
- }] });
819
+ args: [{ selector: 'ax-wysiwyg-list', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, imports: [AsyncPipe, AXButtonComponent, AXDecoratorIconComponent, AXTranslatorPipe], providers: [{ provide: AXComponent, useExisting: AXWysiwygListComponent }], template: "<div class=\"ax-wysiwyg-tool-group\">\n @if (!context.compact()) {\n @if (orderedButton(); as btn) {\n <ax-button\n class=\"ax-sm\"\n look=\"blank\"\n [iconOnly]=\"true\"\n [toggleable]=\"true\"\n [selected]=\"state().orderedList\"\n [disabled]=\"context.interactionDisabled()\"\n [attr.title]=\"btn.tooltip | translate | async\"\n (onClick)=\"wysiwyg.toggleOrderedList()\"\n >\n <ax-icon class=\"ax-icon {{ btn.icon }}\"></ax-icon>\n </ax-button>\n }\n @if (bulletButton(); as btn) {\n <ax-button\n class=\"ax-sm\"\n look=\"blank\"\n [iconOnly]=\"true\"\n [toggleable]=\"true\"\n [selected]=\"state().bulletList\"\n [disabled]=\"context.interactionDisabled()\"\n [attr.title]=\"btn.tooltip | translate | async\"\n (onClick)=\"wysiwyg.toggleBulletList()\"\n >\n <ax-icon class=\"ax-icon {{ btn.icon }}\"></ax-icon>\n </ax-button>\n }\n }\n @if (rtlButton(); as btn) {\n <ax-button\n class=\"ax-sm\"\n look=\"blank\"\n [iconOnly]=\"true\"\n [toggleable]=\"true\"\n [selected]=\"state().textDirection === 'rtl'\"\n [disabled]=\"context.interactionDisabled()\"\n [attr.title]=\"btn.tooltip | translate | async\"\n (onClick)=\"wysiwyg.setTextDirection(state().textDirection === 'rtl' ? 'ltr' : 'rtl')\"\n >\n <ax-icon class=\"ax-icon {{ btn.icon }}\"></ax-icon>\n </ax-button>\n }\n</div>\n" }]
820
+ }], propDecorators: { buttons: [{ type: i0.Input, args: [{ isSignal: true, alias: "buttons", required: false }] }] } });
414
821
 
415
822
  const COMPONENT = [
416
823
  AXWysiwygContainerComponent,
@@ -423,24 +830,9 @@ const COMPONENT = [
423
830
  AXWysiwygListComponent,
424
831
  AXWysiwygToolbarComponent,
425
832
  ];
426
- const MODULES = [
427
- AXButtonModule,
428
- AXDecoratorModule,
429
- AXSelectBoxModule,
430
- FormsModule,
431
- AXColorPaletteModule,
432
- AXPopoverModule,
433
- AXTextBoxModule,
434
- ];
435
833
  class AXWysiwygModule {
436
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXWysiwygModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
437
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "22.0.8", ngImport: i0, type: AXWysiwygModule, imports: [AXButtonModule,
438
- AXDecoratorModule,
439
- AXSelectBoxModule,
440
- FormsModule,
441
- AXColorPaletteModule,
442
- AXPopoverModule,
443
- AXTextBoxModule, AXWysiwygContainerComponent,
834
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: AXWysiwygModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
835
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "22.1.6", ngImport: i0, type: AXWysiwygModule, imports: [AXWysiwygContainerComponent,
444
836
  AXWysiwygViewComponent,
445
837
  AXWysiwygAlignmentComponent,
446
838
  AXWysiwygColorsComponent,
@@ -457,14 +849,18 @@ class AXWysiwygModule {
457
849
  AXWysiwygInsertComponent,
458
850
  AXWysiwygListComponent,
459
851
  AXWysiwygToolbarComponent] }); }
460
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXWysiwygModule, imports: [MODULES, AXWysiwygColorsComponent] }); }
852
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: AXWysiwygModule, imports: [AXWysiwygAlignmentComponent,
853
+ AXWysiwygColorsComponent,
854
+ AXWysiwygFontStyleComponent,
855
+ AXWysiwygHistoryComponent,
856
+ AXWysiwygInsertComponent,
857
+ AXWysiwygListComponent] }); }
461
858
  }
462
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXWysiwygModule, decorators: [{
859
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: AXWysiwygModule, decorators: [{
463
860
  type: NgModule,
464
861
  args: [{
465
- imports: [...MODULES, ...COMPONENT],
862
+ imports: [...COMPONENT],
466
863
  exports: [...COMPONENT],
467
- providers: [],
468
864
  }]
469
865
  }] });
470
866
 
@@ -472,5 +868,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
472
868
  * Generated bundle index. Do not edit.
473
869
  */
474
870
 
475
- export { AXWysiwygAlignmentComponent, AXWysiwygColorsComponent, AXWysiwygContainerComponent, AXWysiwygFontStyleComponent, AXWysiwygHistoryComponent, AXWysiwygInsertComponent, AXWysiwygListComponent, AXWysiwygModule, AXWysiwygToolbarComponent, AXWysiwygViewComponent };
871
+ export { AXWysiwygAlignmentComponent, AXWysiwygColorsComponent, AXWysiwygContainerComponent, AXWysiwygFontStyleComponent, AXWysiwygHistoryComponent, AXWysiwygInsertComponent, AXWysiwygListComponent, AXWysiwygModule, AXWysiwygToolbarComponent, AXWysiwygViewComponent, AX_WYSIWYG_I18N };
476
872
  //# sourceMappingURL=acorex-components-wysiwyg.mjs.map