@lucca-front/ng 21.1.0-rc.0 → 21.1.0-rc.1

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 (284) hide show
  1. package/fesm2022/lucca-front-ng-a11y.mjs +6 -6
  2. package/fesm2022/lucca-front-ng-a11y.mjs.map +1 -1
  3. package/fesm2022/lucca-front-ng-api.mjs +16 -48
  4. package/fesm2022/lucca-front-ng-api.mjs.map +1 -1
  5. package/fesm2022/lucca-front-ng-app-layout.mjs +2 -2
  6. package/fesm2022/lucca-front-ng-app-layout.mjs.map +1 -1
  7. package/fesm2022/lucca-front-ng-box.mjs.map +1 -1
  8. package/fesm2022/lucca-front-ng-breadcrumbs.mjs +5 -5
  9. package/fesm2022/lucca-front-ng-breadcrumbs.mjs.map +1 -1
  10. package/fesm2022/lucca-front-ng-bubble-icon.mjs +51 -0
  11. package/fesm2022/lucca-front-ng-bubble-icon.mjs.map +1 -0
  12. package/fesm2022/lucca-front-ng-bubble-illustration.mjs +135 -0
  13. package/fesm2022/lucca-front-ng-bubble-illustration.mjs.map +1 -0
  14. package/fesm2022/lucca-front-ng-button.mjs +21 -0
  15. package/fesm2022/lucca-front-ng-button.mjs.map +1 -1
  16. package/fesm2022/lucca-front-ng-callout.mjs +41 -15
  17. package/fesm2022/lucca-front-ng-callout.mjs.map +1 -1
  18. package/fesm2022/lucca-front-ng-chip.mjs +37 -7
  19. package/fesm2022/lucca-front-ng-chip.mjs.map +1 -1
  20. package/fesm2022/lucca-front-ng-clear.mjs +21 -6
  21. package/fesm2022/lucca-front-ng-clear.mjs.map +1 -1
  22. package/fesm2022/lucca-front-ng-color.mjs +28 -0
  23. package/fesm2022/lucca-front-ng-color.mjs.map +1 -0
  24. package/fesm2022/lucca-front-ng-comment.mjs +20 -18
  25. package/fesm2022/lucca-front-ng-comment.mjs.map +1 -1
  26. package/fesm2022/lucca-front-ng-container.mjs +7 -9
  27. package/fesm2022/lucca-front-ng-container.mjs.map +1 -1
  28. package/fesm2022/lucca-front-ng-core-select-job-qualification.mjs +0 -2
  29. package/fesm2022/lucca-front-ng-core-select-job-qualification.mjs.map +1 -1
  30. package/fesm2022/lucca-front-ng-core-select-user.mjs +14 -14
  31. package/fesm2022/lucca-front-ng-core-select-user.mjs.map +1 -1
  32. package/fesm2022/lucca-front-ng-core-select.mjs +68 -49
  33. package/fesm2022/lucca-front-ng-core-select.mjs.map +1 -1
  34. package/fesm2022/lucca-front-ng-core.mjs +13 -1
  35. package/fesm2022/lucca-front-ng-core.mjs.map +1 -1
  36. package/fesm2022/lucca-front-ng-data-table.mjs +6 -6
  37. package/fesm2022/lucca-front-ng-data-table.mjs.map +1 -1
  38. package/fesm2022/lucca-front-ng-date.mjs +66 -99
  39. package/fesm2022/lucca-front-ng-date.mjs.map +1 -1
  40. package/fesm2022/lucca-front-ng-date2.mjs +48 -40
  41. package/fesm2022/lucca-front-ng-date2.mjs.map +1 -1
  42. package/fesm2022/lucca-front-ng-department.mjs +8 -24
  43. package/fesm2022/lucca-front-ng-department.mjs.map +1 -1
  44. package/fesm2022/lucca-front-ng-dialog.mjs +33 -10
  45. package/fesm2022/lucca-front-ng-dialog.mjs.map +1 -1
  46. package/fesm2022/lucca-front-ng-divider.mjs +10 -1
  47. package/fesm2022/lucca-front-ng-divider.mjs.map +1 -1
  48. package/fesm2022/lucca-front-ng-empty-state.mjs +66 -8
  49. package/fesm2022/lucca-front-ng-empty-state.mjs.map +1 -1
  50. package/fesm2022/lucca-front-ng-establishment.mjs +11 -75
  51. package/fesm2022/lucca-front-ng-establishment.mjs.map +1 -1
  52. package/fesm2022/lucca-front-ng-fancy-box.mjs +12 -0
  53. package/fesm2022/lucca-front-ng-fancy-box.mjs.map +1 -1
  54. package/fesm2022/lucca-front-ng-file-upload.mjs +40 -34
  55. package/fesm2022/lucca-front-ng-file-upload.mjs.map +1 -1
  56. package/fesm2022/lucca-front-ng-filter-pills.mjs +14 -13
  57. package/fesm2022/lucca-front-ng-filter-pills.mjs.map +1 -1
  58. package/fesm2022/lucca-front-ng-footer.mjs +3 -0
  59. package/fesm2022/lucca-front-ng-footer.mjs.map +1 -1
  60. package/fesm2022/lucca-front-ng-form-field.mjs +25 -10
  61. package/fesm2022/lucca-front-ng-form-field.mjs.map +1 -1
  62. package/fesm2022/lucca-front-ng-form-header.mjs +3 -0
  63. package/fesm2022/lucca-front-ng-form-header.mjs.map +1 -1
  64. package/fesm2022/lucca-front-ng-form.mjs +19 -5
  65. package/fesm2022/lucca-front-ng-form.mjs.map +1 -1
  66. package/fesm2022/lucca-front-ng-formly.mjs +4 -4
  67. package/fesm2022/lucca-front-ng-formly.mjs.map +1 -1
  68. package/fesm2022/lucca-front-ng-forms-phone-number-input.mjs +2 -2
  69. package/fesm2022/lucca-front-ng-forms-phone-number-input.mjs.map +1 -1
  70. package/fesm2022/lucca-front-ng-forms-rich-text-input.mjs +91 -74
  71. package/fesm2022/lucca-front-ng-forms-rich-text-input.mjs.map +1 -1
  72. package/fesm2022/lucca-front-ng-forms.mjs +110 -41
  73. package/fesm2022/lucca-front-ng-forms.mjs.map +1 -1
  74. package/fesm2022/lucca-front-ng-gauge.mjs +28 -5
  75. package/fesm2022/lucca-front-ng-gauge.mjs.map +1 -1
  76. package/fesm2022/lucca-front-ng-grid.mjs +3 -3
  77. package/fesm2022/lucca-front-ng-grid.mjs.map +1 -1
  78. package/fesm2022/lucca-front-ng-highlight-data.mjs +31 -26
  79. package/fesm2022/lucca-front-ng-highlight-data.mjs.map +1 -1
  80. package/fesm2022/lucca-front-ng-horizontal-navigation.mjs +5 -2
  81. package/fesm2022/lucca-front-ng-horizontal-navigation.mjs.map +1 -1
  82. package/fesm2022/lucca-front-ng-icon.mjs +15 -0
  83. package/fesm2022/lucca-front-ng-icon.mjs.map +1 -1
  84. package/fesm2022/lucca-front-ng-index-table.mjs +1 -1
  85. package/fesm2022/lucca-front-ng-index-table.mjs.map +1 -1
  86. package/fesm2022/lucca-front-ng-inline-message.mjs +12 -0
  87. package/fesm2022/lucca-front-ng-inline-message.mjs.map +1 -1
  88. package/fesm2022/lucca-front-ng-input.mjs +7 -7
  89. package/fesm2022/lucca-front-ng-input.mjs.map +1 -1
  90. package/fesm2022/lucca-front-ng-link.mjs +21 -6
  91. package/fesm2022/lucca-front-ng-link.mjs.map +1 -1
  92. package/fesm2022/lucca-front-ng-listbox.mjs +17 -5
  93. package/fesm2022/lucca-front-ng-listbox.mjs.map +1 -1
  94. package/fesm2022/lucca-front-ng-listing.mjs +36 -7
  95. package/fesm2022/lucca-front-ng-listing.mjs.map +1 -1
  96. package/fesm2022/lucca-front-ng-loading.mjs.map +1 -1
  97. package/fesm2022/lucca-front-ng-main-layout.mjs +8 -2
  98. package/fesm2022/lucca-front-ng-main-layout.mjs.map +1 -1
  99. package/fesm2022/lucca-front-ng-mobile-push.mjs +22 -14
  100. package/fesm2022/lucca-front-ng-mobile-push.mjs.map +1 -1
  101. package/fesm2022/lucca-front-ng-modal.mjs +1 -1
  102. package/fesm2022/lucca-front-ng-modal.mjs.map +1 -1
  103. package/fesm2022/lucca-front-ng-multi-select.mjs +31 -28
  104. package/fesm2022/lucca-front-ng-multi-select.mjs.map +1 -1
  105. package/fesm2022/lucca-front-ng-new-badge.mjs +3 -0
  106. package/fesm2022/lucca-front-ng-new-badge.mjs.map +1 -1
  107. package/fesm2022/lucca-front-ng-numeric-badge.mjs +10 -1
  108. package/fesm2022/lucca-front-ng-numeric-badge.mjs.map +1 -1
  109. package/fesm2022/lucca-front-ng-option.mjs +227 -337
  110. package/fesm2022/lucca-front-ng-option.mjs.map +1 -1
  111. package/fesm2022/lucca-front-ng-page-header.mjs +9 -0
  112. package/fesm2022/lucca-front-ng-page-header.mjs.map +1 -1
  113. package/fesm2022/lucca-front-ng-pagination.mjs +29 -5
  114. package/fesm2022/lucca-front-ng-pagination.mjs.map +1 -1
  115. package/fesm2022/lucca-front-ng-plg-push.mjs +11 -5
  116. package/fesm2022/lucca-front-ng-plg-push.mjs.map +1 -1
  117. package/fesm2022/lucca-front-ng-popover.mjs +1 -33
  118. package/fesm2022/lucca-front-ng-popover.mjs.map +1 -1
  119. package/fesm2022/lucca-front-ng-popover2.mjs +30 -20
  120. package/fesm2022/lucca-front-ng-popover2.mjs.map +1 -1
  121. package/fesm2022/lucca-front-ng-progress-bar.mjs +12 -5
  122. package/fesm2022/lucca-front-ng-progress-bar.mjs.map +1 -1
  123. package/fesm2022/lucca-front-ng-read-more.mjs +38 -21
  124. package/fesm2022/lucca-front-ng-read-more.mjs.map +1 -1
  125. package/fesm2022/lucca-front-ng-resource-card.mjs +8 -8
  126. package/fesm2022/lucca-front-ng-resource-card.mjs.map +1 -1
  127. package/fesm2022/lucca-front-ng-scroll-box.mjs +5 -2
  128. package/fesm2022/lucca-front-ng-scroll-box.mjs.map +1 -1
  129. package/fesm2022/lucca-front-ng-segmented-control-tabs.mjs +9 -3
  130. package/fesm2022/lucca-front-ng-segmented-control-tabs.mjs.map +1 -1
  131. package/fesm2022/lucca-front-ng-segmented-control.mjs +16 -1
  132. package/fesm2022/lucca-front-ng-segmented-control.mjs.map +1 -1
  133. package/fesm2022/lucca-front-ng-simple-select.mjs +20 -14
  134. package/fesm2022/lucca-front-ng-simple-select.mjs.map +1 -1
  135. package/fesm2022/lucca-front-ng-skeleton.mjs +65 -14
  136. package/fesm2022/lucca-front-ng-skeleton.mjs.map +1 -1
  137. package/fesm2022/lucca-front-ng-sortable-list.mjs +25 -1
  138. package/fesm2022/lucca-front-ng-sortable-list.mjs.map +1 -1
  139. package/fesm2022/lucca-front-ng-status-badge.mjs +12 -0
  140. package/fesm2022/lucca-front-ng-status-badge.mjs.map +1 -1
  141. package/fesm2022/lucca-front-ng-tag.mjs +6 -0
  142. package/fesm2022/lucca-front-ng-tag.mjs.map +1 -1
  143. package/fesm2022/lucca-front-ng-text-flow.mjs +20 -0
  144. package/fesm2022/lucca-front-ng-text-flow.mjs.map +1 -0
  145. package/fesm2022/lucca-front-ng-time.mjs +63 -24
  146. package/fesm2022/lucca-front-ng-time.mjs.map +1 -1
  147. package/fesm2022/lucca-front-ng-toast.mjs +5 -5
  148. package/fesm2022/lucca-front-ng-toast.mjs.map +1 -1
  149. package/fesm2022/lucca-front-ng-tooltip.mjs +13 -27
  150. package/fesm2022/lucca-front-ng-tooltip.mjs.map +1 -1
  151. package/fesm2022/lucca-front-ng-tree-select.mjs +1 -1
  152. package/fesm2022/lucca-front-ng-tree-select.mjs.map +1 -1
  153. package/fesm2022/lucca-front-ng-user-popover.mjs +6 -6
  154. package/fesm2022/lucca-front-ng-user-popover.mjs.map +1 -1
  155. package/fesm2022/lucca-front-ng-user.mjs +20 -36
  156. package/fesm2022/lucca-front-ng-user.mjs.map +1 -1
  157. package/fesm2022/lucca-front-ng-vertical-navigation.mjs +30 -0
  158. package/fesm2022/lucca-front-ng-vertical-navigation.mjs.map +1 -1
  159. package/package.json +19 -3
  160. package/schematics/action-icon/index.js +4 -5
  161. package/schematics/action-icon/migration.js +3 -4
  162. package/schematics/action-icon/migration.spec.js +8 -8
  163. package/schematics/alignment-utilities/index.js +3 -4
  164. package/schematics/alignment-utilities/migration.spec.js +8 -8
  165. package/schematics/cdn-urls/index.js +3 -4
  166. package/schematics/cdn-urls/migration.js +7 -9
  167. package/schematics/cdn-urls/migration.spec.js +8 -8
  168. package/schematics/class-prefix/index.js +3 -4
  169. package/schematics/class-prefix/migration.spec.js +8 -8
  170. package/schematics/collection.json +10 -0
  171. package/schematics/color-text/index.js +3 -4
  172. package/schematics/color-text/migration.spec.js +8 -8
  173. package/schematics/component-path/index.js +3 -4
  174. package/schematics/component-path/migration.spec.js +8 -8
  175. package/schematics/empty-state-title/index.js +5 -7
  176. package/schematics/empty-state-title/migration.spec.js +5 -5
  177. package/schematics/lib/index.js +29 -0
  178. package/schematics/lib/local-deps/package-lock.json +2 -0
  179. package/schematics/lib/local-deps/package.json +1 -2
  180. package/schematics/lib/schematic.utils.js +5 -0
  181. package/schematics/lu-button/index.js +3 -4
  182. package/schematics/lu-button/migration.js +5 -11
  183. package/schematics/lu-button/migration.spec.js +5 -5
  184. package/schematics/lu-container/index.js +23 -0
  185. package/schematics/lu-container/migration.js +116 -0
  186. package/schematics/lu-container/migration.spec.js +23 -0
  187. package/schematics/lu-container/schema.json +23 -0
  188. package/schematics/lu-icon/index.js +3 -4
  189. package/schematics/lu-icon/migration.js +8 -14
  190. package/schematics/lu-icon/migration.spec.js +5 -5
  191. package/schematics/lu-loading/index.js +23 -0
  192. package/schematics/lu-loading/migration.js +136 -0
  193. package/schematics/lu-loading/migration.spec.js +23 -0
  194. package/schematics/lu-loading/schema.json +28 -0
  195. package/schematics/lu-select/index.js +3 -4
  196. package/schematics/lu-select/migration.js +18 -21
  197. package/schematics/lu-select/migration.spec.js +5 -5
  198. package/schematics/lu-select/util.js +17 -19
  199. package/schematics/lu-text-input/index.js +3 -4
  200. package/schematics/lu-text-input/migration.js +22 -28
  201. package/schematics/lu-text-input/migration.spec.js +5 -5
  202. package/schematics/new-icons/index.js +5 -6
  203. package/schematics/new-icons/migration.js +11 -16
  204. package/schematics/new-icons/migration.spec.js +8 -8
  205. package/schematics/palettes/index.js +3 -4
  206. package/schematics/palettes/migration.spec.js +8 -8
  207. package/schematics/tokens-radius/index.js +3 -4
  208. package/schematics/tokens-radius/migration.spec.js +8 -8
  209. package/schematics/tokens-spacing/index.js +3 -4
  210. package/schematics/tokens-spacing/migration.spec.js +8 -8
  211. package/schematics/tokens-typo/index.js +3 -4
  212. package/schematics/tokens-typo/migration.spec.js +8 -8
  213. package/src/components/cdk/_overlay.scss +5 -0
  214. package/src/definitions/option/_option-item.scss +1 -0
  215. package/types/lucca-front-ng-a11y.d.ts +3 -3
  216. package/types/lucca-front-ng-api.d.ts +1 -19
  217. package/types/lucca-front-ng-breadcrumbs.d.ts +9 -9
  218. package/types/lucca-front-ng-bubble-icon.d.ts +20 -0
  219. package/types/lucca-front-ng-bubble-illustration.d.ts +24 -0
  220. package/types/lucca-front-ng-button.d.ts +21 -0
  221. package/types/lucca-front-ng-callout.d.ts +33 -3
  222. package/types/lucca-front-ng-chip.d.ts +33 -3
  223. package/types/lucca-front-ng-clear.d.ts +21 -6
  224. package/types/lucca-front-ng-color.d.ts +12 -0
  225. package/types/lucca-front-ng-comment.d.ts +19 -11
  226. package/types/lucca-front-ng-container.d.ts +4 -4
  227. package/types/lucca-front-ng-core-select.d.ts +21 -16
  228. package/types/lucca-front-ng-core.d.ts +23 -2
  229. package/types/lucca-front-ng-data-table.d.ts +2 -2
  230. package/types/lucca-front-ng-date.d.ts +6 -24
  231. package/types/lucca-front-ng-date2.d.ts +6 -5
  232. package/types/lucca-front-ng-department.d.ts +3 -12
  233. package/types/lucca-front-ng-dialog.d.ts +12 -5
  234. package/types/lucca-front-ng-divider.d.ts +10 -0
  235. package/types/lucca-front-ng-empty-state.d.ts +21 -3
  236. package/types/lucca-front-ng-establishment.d.ts +3 -39
  237. package/types/lucca-front-ng-fancy-box.d.ts +12 -0
  238. package/types/lucca-front-ng-file-upload.d.ts +18 -8
  239. package/types/lucca-front-ng-filter-pills.d.ts +6 -5
  240. package/types/lucca-front-ng-footer.d.ts +3 -0
  241. package/types/lucca-front-ng-form-field.d.ts +12 -3
  242. package/types/lucca-front-ng-form-header.d.ts +3 -0
  243. package/types/lucca-front-ng-form.d.ts +9 -5
  244. package/types/lucca-front-ng-forms-rich-text-input.d.ts +16 -16
  245. package/types/lucca-front-ng-forms.d.ts +41 -12
  246. package/types/lucca-front-ng-gauge.d.ts +25 -0
  247. package/types/lucca-front-ng-grid.d.ts +1 -1
  248. package/types/lucca-front-ng-highlight-data.d.ts +36 -15
  249. package/types/lucca-front-ng-horizontal-navigation.d.ts +3 -0
  250. package/types/lucca-front-ng-icon.d.ts +15 -0
  251. package/types/lucca-front-ng-inline-message.d.ts +12 -0
  252. package/types/lucca-front-ng-input.d.ts +2 -2
  253. package/types/lucca-front-ng-link.d.ts +17 -2
  254. package/types/lucca-front-ng-listbox.d.ts +16 -4
  255. package/types/lucca-front-ng-listing.d.ts +33 -2
  256. package/types/lucca-front-ng-main-layout.d.ts +6 -0
  257. package/types/lucca-front-ng-mobile-push.d.ts +9 -2
  258. package/types/lucca-front-ng-multi-select.d.ts +26 -24
  259. package/types/lucca-front-ng-new-badge.d.ts +3 -0
  260. package/types/lucca-front-ng-numeric-badge.d.ts +9 -0
  261. package/types/lucca-front-ng-option.d.ts +86 -149
  262. package/types/lucca-front-ng-page-header.d.ts +9 -0
  263. package/types/lucca-front-ng-pagination.d.ts +26 -2
  264. package/types/lucca-front-ng-plg-push.d.ts +8 -2
  265. package/types/lucca-front-ng-popover.d.ts +1 -20
  266. package/types/lucca-front-ng-popover2.d.ts +8 -6
  267. package/types/lucca-front-ng-progress-bar.d.ts +9 -0
  268. package/types/lucca-front-ng-read-more.d.ts +25 -10
  269. package/types/lucca-front-ng-resource-card.d.ts +6 -0
  270. package/types/lucca-front-ng-scroll-box.d.ts +4 -1
  271. package/types/lucca-front-ng-segmented-control-tabs.d.ts +7 -1
  272. package/types/lucca-front-ng-segmented-control.d.ts +16 -1
  273. package/types/lucca-front-ng-simple-select.d.ts +5 -4
  274. package/types/lucca-front-ng-skeleton.d.ts +61 -6
  275. package/types/lucca-front-ng-sortable-list.d.ts +24 -0
  276. package/types/lucca-front-ng-status-badge.d.ts +12 -0
  277. package/types/lucca-front-ng-tag.d.ts +6 -0
  278. package/types/lucca-front-ng-text-flow.d.ts +8 -0
  279. package/types/lucca-front-ng-time.d.ts +22 -16
  280. package/types/lucca-front-ng-toast.d.ts +2 -2
  281. package/types/lucca-front-ng-tooltip.d.ts +7 -14
  282. package/types/lucca-front-ng-user-popover.d.ts +6 -7
  283. package/types/lucca-front-ng-user.d.ts +6 -15
  284. package/types/lucca-front-ng-vertical-navigation.d.ts +30 -0
@@ -1 +1 @@
1
- {"version":3,"file":"lucca-front-ng-forms-rich-text-input.mjs","sources":["../../../packages/ng/forms/rich-text-input/formatters/rich-text-formatter.ts","../../../packages/ng/forms/rich-text-input/rich-text-input.component.ts","../../../packages/ng/forms/rich-text-input/rich-text-input.component.html","../../../packages/ng/forms/rich-text-input/translations.ts","../../../packages/ng/forms/rich-text-input/rich-text-input.translate.ts","../../../packages/ng/forms/rich-text-input/utils/lexical.utils.ts","../../../packages/ng/forms/rich-text-input/plugins/clear-format/clear-format.command.ts","../../../packages/ng/forms/rich-text-input/plugins/clear-format/clear-format.component.ts","../../../packages/ng/forms/rich-text-input/plugins/clear-format/clear-format.component.html","../../../packages/ng/forms/rich-text-input/plugins/headings/headings.command.ts","../../../packages/ng/forms/rich-text-input/plugins/headings/headings.component.ts","../../../packages/ng/forms/rich-text-input/plugins/headings/headings.component.html","../../../packages/ng/forms/rich-text-input/plugins/link/link-dialog/link-dialog.component.ts","../../../packages/ng/forms/rich-text-input/plugins/link/link-dialog/link-dialog.component.html","../../../packages/ng/forms/rich-text-input/plugins/link/link.command.ts","../../../packages/ng/forms/rich-text-input/plugins/link/popover-autolink-node.ts","../../../packages/ng/forms/rich-text-input/plugins/link/popover-link-node.ts","../../../packages/ng/forms/rich-text-input/plugins/link/link.component.ts","../../../packages/ng/forms/rich-text-input/plugins/link/link.component.html","../../../packages/ng/forms/rich-text-input/plugins/list-format/list-format.command.ts","../../../packages/ng/forms/rich-text-input/plugins/list-format/list-format.component.ts","../../../packages/ng/forms/rich-text-input/plugins/list-format/list-format.component.html","../../../packages/ng/forms/rich-text-input/plugins/list-format/list-style-toolbar.component.ts","../../../packages/ng/forms/rich-text-input/plugins/list-format/list-style-toolbar.component.html","../../../packages/ng/forms/rich-text-input/plugins/tag/tag-node.ts","../../../packages/ng/forms/rich-text-input/plugins/tag/tag.component.ts","../../../packages/ng/forms/rich-text-input/plugins/tag/tag.component.html","../../../packages/ng/forms/rich-text-input/plugins/text-style/text-style.command.ts","../../../packages/ng/forms/rich-text-input/plugins/text-style/text-style.component.ts","../../../packages/ng/forms/rich-text-input/plugins/text-style/text-style.component.html","../../../packages/ng/forms/rich-text-input/plugins/text-style/text-style-toolbar.component.ts","../../../packages/ng/forms/rich-text-input/plugins/text-style/text-style-toolbar.component.html","../../../packages/ng/forms/rich-text-input/plugins/toolbar/toolbar.component.ts","../../../packages/ng/forms/rich-text-input/plugins/toolbar/toolbar.component.html","../../../packages/ng/forms/rich-text-input/lucca-front-ng-forms-rich-text-input.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nimport { LexicalEditor } from 'lexical';\n\ntype UnregisterFn = () => void;\n\nexport abstract class RichTextFormatter {\n\t/** Register the rich-text or plain-text Lexical plugin */\n\tabstract registerTextPlugin(editor: LexicalEditor): UnregisterFn;\n\tabstract parse(editor: LexicalEditor, text?: string | null): void;\n\tabstract format(editor: LexicalEditor): string;\n}\n\nclass NoopFormatter extends RichTextFormatter {\n\toverride registerTextPlugin(): UnregisterFn {\n\t\tthrow new Error('You must provide a RichTextFormatter');\n\t}\n\n\toverride parse(): void {\n\t\tthrow new Error('You must provide a RichTextFormatter');\n\t}\n\n\toverride format(): string {\n\t\tthrow new Error('You must provide a RichTextFormatter');\n\t}\n}\n\nexport const RICH_TEXT_FORMATTER = new InjectionToken<RichTextFormatter>('RICH_TEXT_FORMATTER', {\n\tfactory: () => new NoopFormatter(),\n});\n","import { CommonModule } from '@angular/common';\nimport {\n\tbooleanAttribute,\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tcontentChildren,\n\tElementRef,\n\tforwardRef,\n\tinject,\n\tInjectionToken,\n\tinput,\n\tOnDestroy,\n\tOnInit,\n\tSignal,\n\tsignal,\n\tviewChild,\n\tViewEncapsulation,\n\tWritableSignal,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { createEmptyHistoryState, registerHistory } from '@lexical/history';\nimport { $canShowPlaceholderCurry, $isRootTextContentEmpty } from '@lexical/text';\nimport { mergeRegister } from '@lexical/utils';\nimport { FormFieldComponent, InputDirective } from '@lucca-front/ng/form-field';\nimport { $getRoot, createEditor, Klass, LexicalEditor, LexicalNode, LexicalNodeReplacement, UpdateListenerPayload } from 'lexical';\nimport { RICH_TEXT_FORMATTER, RichTextFormatter } from './formatters';\n\nexport const INITIAL_UPDATE_TAG = 'initial-update';\n// TODO replace by lexical import when upgrade lexical\nexport const SKIP_DOM_SELECTION_TAG = 'skip-dom-selection';\n\nexport interface RichTextPluginComponent {\n\tsetEditorInstance(editor: LexicalEditor): void;\n\tgetLexicalNodes?(): (Klass<LexicalNode> | LexicalNodeReplacement)[];\n\tsetDisabledState(isDisabled: boolean): void;\n\n\t//embedded plugins\n\tpluginComponents?: Signal<readonly RichTextPluginComponent[]>;\n\n\t// accessibility\n\t// Rich Text Input sets tabindex to -1 on all plugins except the first one\n\ttabindex?: WritableSignal<number>;\n\t// What to do in the plugin when it receives focus from the editor\n\tfocus?(): void;\n}\n\nexport const RICH_TEXT_PLUGIN_COMPONENT = new InjectionToken<RichTextPluginComponent>('RichTextPlugin');\n\n@Component({\n\tselector: 'lu-rich-text-input',\n\timports: [InputDirective, CommonModule],\n\ttemplateUrl: './rich-text-input.component.html',\n\tstyleUrl: './rich-text-input.component.scss',\n\tencapsulation: ViewEncapsulation.None,\n\tproviders: [\n\t\t{\n\t\t\tprovide: NG_VALUE_ACCESSOR,\n\t\t\tuseExisting: forwardRef(() => RichTextInputComponent),\n\t\t\tmulti: true,\n\t\t},\n\t],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class RichTextInputComponent implements OnInit, OnDestroy, ControlValueAccessor {\n\treadonly #richTextFormatter = inject<RichTextFormatter>(RICH_TEXT_FORMATTER);\n\treadonly #formField = inject(FormFieldComponent, { optional: true });\n\n\treadonly placeholder = input<string>('');\n\treadonly disableSpellcheck = input(false, { transform: booleanAttribute });\n\treadonly autoResize = input(false, { transform: booleanAttribute });\n\treadonly hideToolbar = input(false, { transform: booleanAttribute });\n\n\treadonly content = viewChild.required<string, ElementRef<HTMLElement>>('content', {\n\t\tread: ElementRef,\n\t});\n\treadonly pluginComponents = contentChildren(RICH_TEXT_PLUGIN_COMPONENT, { descendants: true });\n\n\treadonly currentCanShowPlaceholder = signal(false);\n\treadonly isDisabled = signal(false);\n\treadonly formFieldId = computed(() => this.#formField?.id());\n\n\treadonly #customNodes = computed(() =>\n\t\tthis.pluginComponents()\n\t\t\t.map((c) => c.getLexicalNodes?.() ?? [])\n\t\t\t.flat(),\n\t);\n\treadonly #allPlugins = computed(() => this.#flattenPlugins(this.pluginComponents()));\n\treadonly #isTouched = signal(false);\n\n\t#onChange?: (markdown: string | null) => void;\n\t#onTouch?: () => void;\n\t#cleanup?: () => void;\n\t#focusedPlugin: number = 0;\n\t#editor?: LexicalEditor;\n\n\tngOnInit(): void {\n\t\tthis.#editor = createEditor({\n\t\t\ttheme: {\n\t\t\t\ttext: {\n\t\t\t\t\tstrikethrough: 'pr-u-textDecorationLineThrough',\n\t\t\t\t\tbold: 'pr-u-fontWeightBold',\n\t\t\t\t\titalic: 'pr-u-fontStyleItalic',\n\t\t\t\t\tunderline: 'pr-u-textDecorationUnderline',\n\t\t\t\t},\n\t\t\t},\n\t\t\tnodes: [...this.#customNodes()],\n\t\t});\n\n\t\tthis.#cleanup = mergeRegister(\n\t\t\tthis.#richTextFormatter.registerTextPlugin(this.#editor),\n\t\t\tregisterHistory(this.#editor, createEmptyHistoryState(), 300),\n\t\t\tthis.#editor.registerUpdateListener((payload) => this.#onEditorUpdate(payload)),\n\t\t);\n\t\tthis.#editor.setRootElement(this.content().nativeElement);\n\n\t\tthis.pluginComponents().forEach((plugin) => plugin.setEditorInstance(this.#editor));\n\n\t\tif (this.#allPlugins().length > 0) {\n\t\t\tthis.#allPlugins()[this.#focusedPlugin].tabindex?.set(0);\n\t\t}\n\t}\n\n\tngOnDestroy(): void {\n\t\tthis.#cleanup?.();\n\t}\n\n\twriteValue(value: string | null): void {\n\t\tconst updateTags = [SKIP_DOM_SELECTION_TAG, INITIAL_UPDATE_TAG];\n\t\tif (value) {\n\t\t\tthis.#editor?.update(\n\t\t\t\t() => {\n\t\t\t\t\tthis.#richTextFormatter.parse(this.#editor, value);\n\t\t\t\t},\n\t\t\t\t{ tag: updateTags },\n\t\t\t);\n\t\t} else if (!this.#editor?.getEditorState().isEmpty()) {\n\t\t\tthis.#editor.update(\n\t\t\t\t() => {\n\t\t\t\t\tconst root = $getRoot();\n\t\t\t\t\troot.clear();\n\t\t\t\t},\n\t\t\t\t{ tag: updateTags },\n\t\t\t);\n\t\t}\n\t}\n\n\tregisterOnChange(onChange: (markdown: string | null) => void): void {\n\t\tthis.#onChange = onChange;\n\t}\n\n\tregisterOnTouched(onTouch: () => void): void {\n\t\tthis.#onTouch = onTouch;\n\t}\n\n\tsetDisabledState(isDisabled: boolean): void {\n\t\tthis.#editor?.setEditable(!isDisabled);\n\t\tthis.isDisabled.set(isDisabled);\n\t\tthis.pluginComponents().forEach((c) => c.setDisabledState(isDisabled));\n\t}\n\n\tfocusSiblingPlugin(event: Event, direction: -1 | 1) {\n\t\tevent.preventDefault();\n\t\tconst plugins = this.#allPlugins();\n\n\t\tconst nextFocusedPlugin = this.#focusedPlugin + direction < 0 ? plugins.length - 1 : (this.#focusedPlugin + direction) % plugins.length;\n\t\tif (plugins[nextFocusedPlugin].tabindex()) {\n\t\t\tplugins[this.#focusedPlugin].tabindex?.set(-1);\n\t\t\tplugins[nextFocusedPlugin].tabindex.set(0);\n\t\t}\n\t\tthis.#focusedPlugin = nextFocusedPlugin;\n\t\tplugins[this.#focusedPlugin].focus();\n\t}\n\n\tfocus() {\n\t\tthis.content().nativeElement.focus();\n\t}\n\n\ttouch() {\n\t\tthis.#isTouched.set(true);\n\t\tthis.#onTouch?.();\n\t}\n\n\t#flattenPlugins(plugins: readonly RichTextPluginComponent[]): RichTextPluginComponent[] {\n\t\treturn plugins.flatMap((p) => {\n\t\t\tif (p.pluginComponents) {\n\t\t\t\treturn this.#flattenPlugins(p.pluginComponents());\n\t\t\t} else {\n\t\t\t\treturn p;\n\t\t\t}\n\t\t});\n\t}\n\n\t#onEditorUpdate({ tags, dirtyElements }: UpdateListenerPayload) {\n\t\tconst isComposing = this.#editor.isComposing();\n\t\tif (!tags.has(INITIAL_UPDATE_TAG) && dirtyElements.size) {\n\t\t\tthis.#editor.read(() => {\n\t\t\t\tlet result = '';\n\t\t\t\t// ignore empty nodes\n\t\t\t\tif (!$isRootTextContentEmpty(isComposing, false)) {\n\t\t\t\t\tresult = this.#richTextFormatter.format(this.#editor);\n\t\t\t\t}\n\t\t\t\tthis.touch();\n\t\t\t\tthis.#onChange?.(result);\n\t\t\t});\n\t\t}\n\t\tconst currentCanShowPlaceholder = this.#editor.getEditorState().read($canShowPlaceholderCurry(isComposing));\n\t\tthis.currentCanShowPlaceholder.set(currentCanShowPlaceholder);\n\t}\n}\n","<div class=\"richTextField\" [class.is-disabled]=\"isDisabled()\" [class.mod-autoResize]=\"autoResize()\">\n\t<div\n\t\t#content\n\t\tluInput\n\t\tclass=\"richTextField-content textFlow\"\n\t\trole=\"textbox\"\n\t\t[attr.contenteditable]=\"!isDisabled()\"\n\t\t[attr.aria-disabled]=\"isDisabled()\"\n\t\t[attr.aria-placeholder]=\"currentCanShowPlaceholder() ? placeholder() : null\"\n\t\t[attr.aria-labelledby]=\"formFieldId() + '-label'\"\n\t\t[attr.spellcheck]=\"!disableSpellcheck()\"\n\t\t(blur)=\"touch()\"\n\t></div>\n\t@if (currentCanShowPlaceholder()) {\n\t\t<div aria-hidden=\"true\" class=\"richTextField-content-placeholder\">{{ placeholder() }}</div>\n\t}\n\t<div\n\t\tclass=\"richTextField-toolbar\"\n\t\t[class.pr-u-displayNone]=\"hideToolbar()\"\n\t\t(keydown.arrowleft)=\"focusSiblingPlugin($event, -1)\"\n\t\t(keydown.arrowRight)=\"focusSiblingPlugin($event, 1)\"\n\t\trole=\"toolbar\"\n\t\t[attr.aria-labelledby]=\"formFieldId() + '-label'\"\n\t\t[attr.aria-controls]=\"formFieldId()\"\n\t>\n\t\t<ng-content />\n\t</div>\n</div>\n","export const Translations = {\n\t'nl-BE': {\n\t\tclearFormat: 'Opmaak wissen',\n\t\tlinksCancel: 'Annuleren',\n\t\tlinksDelete: 'Link verwijderen',\n\t\tlinksHref: 'Internetadres',\n\t\tlinksLabel: 'Link',\n\t\tlinksSubmit: 'Valideren',\n\t\tlistsNumberedLabel: 'Genummerde lijst',\n\t\tlistsBulletLabel: 'Lijst met opsommingstekens',\n\t\theadingsLabel: 'Niveau van de kop',\n\t\theadings0: 'Paragraaf',\n\t\theadings1: 'Kopniveau 1',\n\t\theadings2: 'Kopniveau 2',\n\t\theadings3: 'Kopniveau 3',\n\t\theadings4: 'Kopniveau 4',\n\t\theadings5: 'Kopniveau 5',\n\t\theadings6: 'Kopniveau 6',\n\t\tstylesItalic: 'Cursief',\n\t\tstylesBold: 'Vet',\n\t\tstylesUnderline: 'Onderstreept',\n\t\tstylesStrikethrough: 'Doorgehaald',\n\t\tlinksPlaceholder: 'https://www.nomDuSite.com',\n\t\tinsertTag: 'Invoegen:',\n\t},\n\tfr: {\n\t\tclearFormat: 'Effacer la mise en forme',\n\t\tlinksCancel: 'Annuler',\n\t\tlinksDelete: 'Supprimer le lien',\n\t\tlinksHref: 'Adresse web',\n\t\tlinksLabel: 'Lien',\n\t\tlinksSubmit: 'Valider',\n\t\tlistsNumberedLabel: 'Liste numérotée',\n\t\tlistsBulletLabel: 'Liste à puces',\n\t\theadingsLabel: 'Niveau de titre',\n\t\theadings0: 'Paragraphe',\n\t\theadings1: 'Titre de niveau 1',\n\t\theadings2: 'Titre de niveau 2',\n\t\theadings3: 'Titre de niveau 3',\n\t\theadings4: 'Titre de niveau 4',\n\t\theadings5: 'Titre de niveau 5',\n\t\theadings6: 'Titre de niveau 6',\n\t\tstylesItalic: 'Italique',\n\t\tstylesBold: 'Gras',\n\t\tstylesUnderline: 'Souligné',\n\t\tstylesStrikethrough: 'Barré',\n\t\tlinksPlaceholder: 'https://www.nomDuSite.com',\n\t\tinsertTag: 'Insérer :',\n\t},\n\ten: {\n\t\tclearFormat: 'Delete formatting',\n\t\tlinksCancel: 'Cancel',\n\t\tlinksDelete: 'Delete link',\n\t\tlinksHref: 'Web address',\n\t\tlinksLabel: 'Link',\n\t\tlinksSubmit: 'Confirm',\n\t\tlistsNumberedLabel: 'Numbered list',\n\t\tlistsBulletLabel: 'Bulleted list',\n\t\theadingsLabel: 'Title level',\n\t\theadings0: 'Paragraph',\n\t\theadings1: 'Level 1 title',\n\t\theadings2: 'Level 2 title',\n\t\theadings3: 'Level 3 title',\n\t\theadings4: 'Level 4 title',\n\t\theadings5: 'Level 5 title',\n\t\theadings6: 'Level 6 title',\n\t\tstylesItalic: 'Italic',\n\t\tstylesBold: 'Bold',\n\t\tstylesUnderline: 'Underline',\n\t\tstylesStrikethrough: 'Strikethrough',\n\t\tlinksPlaceholder: 'https://www.SiteName.com',\n\t\tinsertTag: 'Insert:',\n\t},\n\tde: {\n\t\tclearFormat: 'Formatierung löschen',\n\t\tlinksCancel: 'Stornieren',\n\t\tlinksDelete: 'Link löschen',\n\t\tlinksHref: 'Webadresse',\n\t\tlinksLabel: 'Link',\n\t\tlinksSubmit: 'Bestätigen',\n\t\tlistsNumberedLabel: 'Nummerierte Liste',\n\t\tlistsBulletLabel: 'Aufzählungsliste',\n\t\theadingsLabel: 'Ebene des Titels',\n\t\theadings0: 'Absatz',\n\t\theadings1: 'Titel der Ebene 1',\n\t\theadings2: 'Titel der Ebene 2',\n\t\theadings3: 'Titel der Ebene 3',\n\t\theadings4: 'Titel der Ebene 4',\n\t\theadings5: 'Titel der Ebene 5',\n\t\theadings6: 'Titel der Ebene 6',\n\t\tstylesItalic: 'Kursiv',\n\t\tstylesBold: 'Fettdruck',\n\t\tstylesUnderline: 'Unterstrichen',\n\t\tstylesStrikethrough: 'Durchgestrichen',\n\t\tlinksPlaceholder: 'https://www.NameDerSeite.com',\n\t\tinsertTag: 'Einfügen:',\n\t},\n\tit: {\n\t\tclearFormat: 'Cancellare la formattazione',\n\t\tlinksCancel: 'Annullare',\n\t\tlinksDelete: 'Eliminare il link',\n\t\tlinksHref: 'Indirizzo web',\n\t\tlinksLabel: 'Link',\n\t\tlinksSubmit: 'Convalidare',\n\t\tlistsNumberedLabel: 'Elenco numerato',\n\t\tlistsBulletLabel: 'Elenco puntato',\n\t\theadingsLabel: 'Livello di qualifica',\n\t\theadings0: 'Paragrafo',\n\t\theadings1: 'Qualifica di livello 1',\n\t\theadings2: 'Qualifica di livello 2',\n\t\theadings3: 'Qualifica di livello 3',\n\t\theadings4: 'Qualifica di livello 4',\n\t\theadings5: 'Qualifica di livello 5',\n\t\theadings6: 'Qualifica di livello 6',\n\t\tstylesItalic: 'Corsivo',\n\t\tstylesBold: 'Grassetto',\n\t\tstylesUnderline: 'Sottolineato',\n\t\tstylesStrikethrough: 'Barrato',\n\t\tlinksPlaceholder: 'https://www.nomDuSite.com',\n\t\tinsertTag: 'Inserire:',\n\t},\n\tnl: {\n\t\tclearFormat: 'Opmaak wissen',\n\t\tlinksCancel: 'Annuleren',\n\t\tlinksDelete: 'Link verwijderen',\n\t\tlinksHref: 'Internetadres',\n\t\tlinksLabel: 'Link',\n\t\tlinksSubmit: 'Valideren',\n\t\tlistsNumberedLabel: 'Genummerde lijst',\n\t\tlistsBulletLabel: 'Lijst met opsommingstekens',\n\t\theadingsLabel: 'Niveau van de kop',\n\t\theadings0: 'Paragraaf',\n\t\theadings1: 'Kopniveau 1',\n\t\theadings2: 'Kopniveau 2',\n\t\theadings3: 'Kopniveau 3',\n\t\theadings4: 'Kopniveau 4',\n\t\theadings5: 'Kopniveau 5',\n\t\theadings6: 'Kopniveau 6',\n\t\tstylesItalic: 'Cursief',\n\t\tstylesBold: 'Vet',\n\t\tstylesUnderline: 'Onderstreept',\n\t\tstylesStrikethrough: 'Doorgehaald',\n\t\tlinksPlaceholder: 'https://www.nomDuSite.com',\n\t\tinsertTag: 'Invoegen:',\n\t},\n\tes: {\n\t\tclearFormat: 'Borrar formato',\n\t\tlinksCancel: 'Cancelar',\n\t\tlinksDelete: 'Eliminar el enlace',\n\t\tlinksHref: 'Dirección web',\n\t\tlinksLabel: 'Enlace',\n\t\tlinksSubmit: 'Validar',\n\t\tlistsNumberedLabel: 'Lista numerada',\n\t\tlistsBulletLabel: 'Lista de viñetas',\n\t\theadingsLabel: 'Nivel del título',\n\t\theadings0: 'Apartado',\n\t\theadings1: 'Título de nivel 1',\n\t\theadings2: 'Título de nivel 2',\n\t\theadings3: 'Título de nivel 3',\n\t\theadings4: 'Título de nivel 4',\n\t\theadings5: 'Título de nivel 5',\n\t\theadings6: 'Título de nivel 6',\n\t\tstylesItalic: 'Cursiva',\n\t\tstylesBold: 'Negrita',\n\t\tstylesUnderline: 'Subrayado',\n\t\tstylesStrikethrough: 'Tachado',\n\t\tlinksPlaceholder: 'https://www.nomDuSite.com',\n\t\tinsertTag: 'Introducir:',\n\t},\n\tpt: {\n\t\tclearFormat: 'Eliminar a formatação',\n\t\tlinksCancel: 'Cancelar',\n\t\tlinksDelete: 'Eliminar a ligação',\n\t\tlinksHref: 'Endereço do sítio Web',\n\t\tlinksLabel: 'Ligação',\n\t\tlinksSubmit: 'Confirmar',\n\t\tlistsNumberedLabel: 'Lista numerada',\n\t\tlistsBulletLabel: 'Lista com marcadores',\n\t\theadingsLabel: 'Nível do título',\n\t\theadings0: 'Parágrafo',\n\t\theadings1: 'Qualificação de nível 1',\n\t\theadings2: 'Qualificação de nível 2',\n\t\theadings3: 'Qualificação de nível 3',\n\t\theadings4: 'Qualificação de nível 4',\n\t\theadings5: 'Qualificação de nível 5',\n\t\theadings6: 'Qualificação de nível 6',\n\t\tstylesItalic: 'Itálico',\n\t\tstylesBold: 'Gordura',\n\t\tstylesUnderline: 'Sublinhado',\n\t\tstylesStrikethrough: 'Barré',\n\t\tlinksPlaceholder: 'https://www.nomeDoSitio.com/',\n\t\tinsertTag: 'Inserir:',\n\t},\n};\n","import { InjectionToken } from '@angular/core';\nimport { LuTranslation } from '@lucca-front/ng/core';\nimport { Translations } from './translations';\n\nexport const LU_RICH_TEXT_INPUT_TRANSLATIONS = new InjectionToken('LuRichTextInputTranslations', {\n\tfactory: () => luRichTextInputTranslations,\n});\n\nexport interface ILuRichTextInputLabel {\n\tclearFormat: string;\n\n\tlinksCancel: string;\n\tlinksDelete: string;\n\tlinksHref: string;\n\tlinksLabel: string;\n\tlinksSubmit: string;\n\tlinksPlaceholder: string;\n\n\tlistsNumberedLabel: string;\n\tlistsBulletLabel: string;\n\n\theadingsLabel: string;\n\theadings0: string;\n\theadings1: string;\n\theadings2: string;\n\theadings3: string;\n\theadings4: string;\n\theadings5: string;\n\theadings6: string;\n\n\tstylesItalic: string;\n\tstylesBold: string;\n\tstylesUnderline: string;\n\tstylesStrikethrough: string;\n\n\tinsertTag: string;\n}\n\nexport const luRichTextInputTranslations: LuTranslation<ILuRichTextInputLabel> = Translations;\n","import { $createTextNode, ElementNode, LexicalNode, RangeSelection, TextNode } from 'lexical';\nimport { $isAtNodeEnd } from '@lexical/selection';\n\n/**\n * Cut a single text node into:\n * - A shorter text node\n * - A new node created by the replacer\n * - The remaining text in a new text node\n *\n * Returns the new node created by the replacer.\n */\nexport function replaceTextNodeContentPartWith<TNode extends LexicalNode>(textNode: TextNode, fromIndex: number, toIndex: number, replacer: (text: string) => TNode): TNode {\n\tconst safeFrom = Math.min(toIndex, fromIndex);\n\tconst safeTo = Math.max(toIndex, fromIndex);\n\tconst text = textNode.getTextContent();\n\tconst beforeText = text.slice(0, safeFrom);\n\tconst betweenText = text.slice(safeFrom, safeTo);\n\tconst afterText = text.slice(safeTo);\n\n\t// 1. Shorten the original text node\n\ttextNode.setTextContent(beforeText);\n\n\t// 2. Create the new node\n\tconst betweenNode = replacer(betweenText);\n\ttextNode.insertAfter(betweenNode);\n\n\t// 3. Add the remaining text\n\tconst afterNode = $createTextNode(afterText);\n\tafterNode.setStyle(textNode.getStyle());\n\tafterNode.setFormat(textNode.getFormat());\n\tbetweenNode.insertAfter(afterNode);\n\n\treturn betweenNode;\n}\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\nexport function getSelectedNode(selection: RangeSelection): TextNode | ElementNode {\n\tconst anchor = selection.anchor;\n\tconst focus = selection.focus;\n\tconst anchorNode = selection.anchor.getNode();\n\tconst focusNode = selection.focus.getNode();\n\tif (anchorNode === focusNode) {\n\t\treturn anchorNode;\n\t}\n\tconst isBackward = selection.isBackward();\n\tif (isBackward) {\n\t\treturn $isAtNodeEnd(focus) ? anchorNode : focusNode;\n\t} else {\n\t\treturn $isAtNodeEnd(anchor) ? anchorNode : focusNode;\n\t}\n}\n","import { $createParagraphNode, $createTextNode, $getSelection, $isRangeSelection, $isTextNode, COMMAND_PRIORITY_NORMAL, createCommand, LexicalEditor } from 'lexical';\nimport { $setBlocksType } from '@lexical/selection';\nimport { replaceTextNodeContentPartWith } from '../../utils';\n\nexport const CLEAR_FORMAT = createCommand<void>('CLEAR_FORMAT');\n\nexport function registerClearFormat(editor: LexicalEditor) {\n\treturn editor.registerCommand(\n\t\tCLEAR_FORMAT,\n\t\t() => {\n\t\t\teditor.update(() => {\n\t\t\t\tconst selection = $getSelection();\n\n\t\t\t\tif ($isRangeSelection(selection)) {\n\t\t\t\t\tconst { anchor, focus } = selection;\n\n\t\t\t\t\tselection.getNodes().forEach((node) => {\n\t\t\t\t\t\tif ($isTextNode(node)) {\n\t\t\t\t\t\t\t// use selection offsets if within current node\n\t\t\t\t\t\t\tconst start = node.getKey() === anchor.key ? anchor.offset : 0;\n\t\t\t\t\t\t\tconst end = node.getKey() === focus.key ? focus.offset : node.getTextContent().length;\n\t\t\t\t\t\t\tif (start === end) {\n\t\t\t\t\t\t\t\tnode.setFormat(0);\n\t\t\t\t\t\t\t\tnode.setStyle('');\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\treplaceTextNodeContentPartWith(node, start, end, (text) => $createTextNode(text));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\t$setBlocksType(selection, () => $createParagraphNode());\n\t\t\t});\n\n\t\t\treturn true;\n\t\t},\n\t\tCOMMAND_PRIORITY_NORMAL,\n\t);\n}\n","import { ChangeDetectionStrategy, Component, ElementRef, forwardRef, OnDestroy, signal, viewChild } from '@angular/core';\nimport { ButtonComponent } from '@lucca-front/ng/button';\nimport { getIntl } from '@lucca-front/ng/core';\nimport { IconComponent } from '@lucca-front/ng/icon';\nimport { LuTooltipTriggerDirective } from '@lucca-front/ng/tooltip';\nimport { LexicalEditor } from 'lexical';\nimport { RICH_TEXT_PLUGIN_COMPONENT, RichTextPluginComponent } from '../../rich-text-input.component';\nimport { LU_RICH_TEXT_INPUT_TRANSLATIONS } from '../../rich-text-input.translate';\nimport { CLEAR_FORMAT, registerClearFormat } from './clear-format.command';\n\n@Component({\n\tselector: 'lu-rich-text-plugin-clear-format',\n\ttemplateUrl: 'clear-format.component.html',\n\timports: [ButtonComponent, IconComponent, LuTooltipTriggerDirective],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\thost: {\n\t\tclass: 'richTextField-toolbar-col-group',\n\t},\n\tproviders: [\n\t\t{\n\t\t\tprovide: RICH_TEXT_PLUGIN_COMPONENT,\n\t\t\tuseExisting: forwardRef(() => ClearFormatComponent),\n\t\t},\n\t],\n})\nexport class ClearFormatComponent implements RichTextPluginComponent, OnDestroy {\n\t#editor?: LexicalEditor;\n\t#registeredCommands: () => void = () => {};\n\n\treadonly intl = getIntl(LU_RICH_TEXT_INPUT_TRANSLATIONS);\n\n\treadonly element = viewChild('element', { read: ElementRef<HTMLButtonElement> });\n\n\treadonly tabindex = signal<number>(-1);\n\treadonly isDisabled = signal(false);\n\n\tsetEditorInstance(editor: LexicalEditor) {\n\t\tthis.#editor = editor;\n\t\tthis.#registeredCommands = registerClearFormat(editor);\n\t}\n\n\tngOnDestroy() {\n\t\tthis.#registeredCommands();\n\t}\n\n\tdispatchCommand() {\n\t\tthis.#editor.dispatchCommand(CLEAR_FORMAT, undefined);\n\t}\n\n\tsetDisabledState(isDisabled: boolean) {\n\t\tthis.isDisabled.set(isDisabled);\n\t}\n\n\tfocus() {\n\t\t(this.element() as ElementRef<HTMLButtonElement>).nativeElement.focus();\n\t}\n}\n","<button\n\t#element\n\tluButton=\"ghost\"\n\ttype=\"button\"\n\tsize=\"S\"\n\t(click)=\"dispatchCommand()\"\n\t[luTooltip]=\"intl.clearFormat\"\n\tluTooltipOnlyForDisplay\n\t[attr.tabindex]=\"tabindex()\"\n\t[disabled]=\"isDisabled()\"\n\tclass=\"richTextField-toolbar-button\"\n>\n\t<lu-icon icon=\"formatClear\" [alt]=\"intl.clearFormat\" />\n</button>\n","import { $createParagraphNode, $getSelection, $isRangeSelection, COMMAND_PRIORITY_NORMAL, CommandPayloadType, createCommand, LexicalEditor, SELECTION_CHANGE_COMMAND } from 'lexical';\nimport { $setBlocksType } from '@lexical/selection';\nimport { $createHeadingNode, HeadingNode } from '@lexical/rich-text';\nimport { $getNearestNodeOfType } from '@lexical/utils';\nimport { getSelectedNode } from '../../utils';\n\nexport const FORMAT_HEADINGS = createCommand<'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' | 'paragraph'>('FORMAT_HEADINGS');\n\nexport function registerHeadings(editor: LexicalEditor) {\n\treturn editor.registerCommand(\n\t\tFORMAT_HEADINGS,\n\t\t(headingSize) => {\n\t\t\teditor.update(() => {\n\t\t\t\tconst selection = $getSelection();\n\t\t\t\t$setBlocksType(selection, () => {\n\t\t\t\t\tif (headingSize === 'paragraph') {\n\t\t\t\t\t\treturn $createParagraphNode();\n\t\t\t\t\t}\n\t\t\t\t\treturn $createHeadingNode(headingSize);\n\t\t\t\t});\n\t\t\t});\n\n\t\t\treturn true;\n\t\t},\n\t\tCOMMAND_PRIORITY_NORMAL,\n\t);\n}\n\nexport function registerHeadingsSelectionChange(editor: LexicalEditor, onselectionchange: (type: CommandPayloadType<typeof FORMAT_HEADINGS>) => void) {\n\treturn editor.registerCommand(\n\t\tSELECTION_CHANGE_COMMAND,\n\t\t() => {\n\t\t\tconst selection = $getSelection();\n\t\t\tif ($isRangeSelection(selection)) {\n\t\t\t\tconst node = getSelectedNode(selection);\n\t\t\t\tconst element = $getNearestNodeOfType(node, HeadingNode);\n\t\t\t\tconst type = element ? element.getTag() : 'paragraph';\n\t\t\t\tonselectionchange(type as CommandPayloadType<typeof FORMAT_HEADINGS>);\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\tCOMMAND_PRIORITY_NORMAL,\n\t);\n}\n","import { ChangeDetectionStrategy, Component, computed, DestroyRef, forwardRef, inject, input, OnDestroy, signal, viewChild } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { mergeRegister } from '@lexical/utils';\nimport { LuOptionDirective } from '@lucca-front/ng/core-select';\nimport { FormFieldComponent } from '@lucca-front/ng/form-field';\nimport { LuSimpleSelectInputComponent } from '@lucca-front/ng/simple-select';\nimport { CommandPayloadType, Klass, LexicalEditor, LexicalNode } from 'lexical';\nimport { filter } from 'rxjs';\nimport { RICH_TEXT_PLUGIN_COMPONENT, RichTextPluginComponent } from '../../rich-text-input.component';\n\nimport { HeadingNode } from '@lexical/rich-text';\nimport { getIntl } from '@lucca-front/ng/core';\nimport { LU_RICH_TEXT_INPUT_TRANSLATIONS } from '../../rich-text-input.translate';\nimport { FORMAT_HEADINGS, registerHeadings, registerHeadingsSelectionChange } from './headings.command';\n\n@Component({\n\tselector: 'lu-rich-text-plugin-headings',\n\ttemplateUrl: './headings.component.html',\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [LuSimpleSelectInputComponent, FormFieldComponent, ReactiveFormsModule, LuOptionDirective],\n\thost: {\n\t\tclass: 'richTextField-toolbar-col-group',\n\t},\n\tproviders: [\n\t\t{\n\t\t\tprovide: RICH_TEXT_PLUGIN_COMPONENT,\n\t\t\tuseExisting: forwardRef(() => HeadingsComponent),\n\t\t},\n\t],\n})\nexport class HeadingsComponent implements OnDestroy, RichTextPluginComponent {\n\treadonly #destroyRef = inject(DestroyRef);\n\n\treadonly element = viewChild<LuSimpleSelectInputComponent<string>>('selectRef');\n\n\treadonly tabindex = signal<number>(-1);\n\treadonly maxHeadingLevel = input<1 | 2 | 3 | 4 | 5 | 6>(6);\n\treadonly headingOptions = computed<CommandPayloadType<typeof FORMAT_HEADINGS>[]>(\n\t\t() => Object.keys(this.headingLabels).slice(0, this.maxHeadingLevel() + 1) as CommandPayloadType<typeof FORMAT_HEADINGS>[],\n\t);\n\n\treadonly intl = getIntl(LU_RICH_TEXT_INPUT_TRANSLATIONS);\n\treadonly headingLabels: Record<CommandPayloadType<typeof FORMAT_HEADINGS>, [string, number]> = {\n\t\tparagraph: [this.intl.headings0, 0],\n\t\th1: [this.intl.headings1, 1],\n\t\th2: [this.intl.headings2, 2],\n\t\th3: [this.intl.headings3, 3],\n\t\th4: [this.intl.headings4, 4],\n\t\th5: [this.intl.headings5, 5],\n\t\th6: [this.intl.headings6, 6],\n\t};\n\treadonly formControl = new FormControl<CommandPayloadType<typeof FORMAT_HEADINGS> | null>('paragraph');\n\n\t#registeredCommands: () => void = () => {};\n\n\tsetEditorInstance(editor: LexicalEditor): void {\n\t\tthis.#registeredCommands = mergeRegister(\n\t\t\tregisterHeadings(editor),\n\t\t\tregisterHeadingsSelectionChange(editor, (value) => this.formControl.setValue(value, { emitEvent: false })),\n\t\t);\n\t\tthis.formControl.valueChanges.pipe(takeUntilDestroyed(this.#destroyRef), filter(Boolean)).subscribe((heading) => editor.dispatchCommand(FORMAT_HEADINGS, heading));\n\t}\n\n\tgetLexicalNodes(): Klass<LexicalNode>[] {\n\t\treturn [HeadingNode];\n\t}\n\n\tngOnDestroy() {\n\t\tthis.#registeredCommands();\n\t}\n\n\tfocus() {\n\t\tthis.element().focusInput();\n\t}\n\n\tsetDisabledState(isDisabled: boolean) {\n\t\tif (isDisabled) {\n\t\t\tthis.formControl.disable();\n\t\t} else {\n\t\t\tthis.formControl.enable();\n\t\t}\n\t}\n}\n","<lu-form-field [label]=\"intl.headingsLabel\" size=\"S\" hiddenLabel class=\"mod-width20\">\n\t<lu-simple-select [options]=\"headingOptions()\" [formControl]=\"formControl\" #selectRef [inputTabindex]=\"tabindex()\">\n\t\t<ng-container *luOption=\"let heading; select: selectRef\">{{ headingLabels[heading][0] }}</ng-container>\n\t</lu-simple-select>\n</lu-form-field>\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { FormControl, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { ButtonComponent } from '@lucca-front/ng/button';\nimport { getIntl } from '@lucca-front/ng/core';\nimport { DialogComponent, DialogContentComponent, DialogDismissDirective, DialogFooterComponent, injectDialogData, injectDialogRef } from '@lucca-front/ng/dialog';\nimport { FormFieldComponent } from '@lucca-front/ng/form-field';\nimport { TextInputComponent } from '@lucca-front/ng/forms';\nimport { LU_RICH_TEXT_INPUT_TRANSLATIONS } from '../../../rich-text-input.translate';\n\n@Component({\n\tselector: 'lu-rich-text-plugin-link-dialog',\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\ttemplateUrl: 'link-dialog.component.html',\n\timports: [DialogComponent, DialogContentComponent, DialogFooterComponent, FormFieldComponent, TextInputComponent, ReactiveFormsModule, ButtonComponent, DialogDismissDirective],\n})\nexport class LinkDialogComponent {\n\tpublic readonly dialogData = injectDialogData<string>();\n\tpublic readonly dialogRef = injectDialogRef<string | undefined>();\n\n\tintl = getIntl(LU_RICH_TEXT_INPUT_TRANSLATIONS);\n\n\tpublic readonly formGroup = new FormGroup({\n\t\thref: new FormControl<string>(this.dialogData, Validators.required),\n\t});\n\n\tpublic save() {\n\t\tif (this.formGroup.invalid) {\n\t\t\tthis.formGroup.markAllAsTouched();\n\t\t\treturn;\n\t\t}\n\n\t\tthis.dialogRef.close(encodeURI(this.formGroup.controls.href.value.trim()));\n\t}\n\n\tpublic deleteLink() {\n\t\tthis.dialogRef.close(undefined);\n\t}\n}\n","<lu-dialog>\n\t<form class=\"dialog-form\" (submit)=\"save()\" [formGroup]=\"formGroup\">\n\t\t<lu-dialog-content>\n\t\t\t<lu-form-field [label]=\"intl.linksHref\">\n\t\t\t\t<lu-text-input formControlName=\"href\" type=\"url\" [placeholder]=\"intl.linksPlaceholder\" />\n\t\t\t</lu-form-field>\n\t\t</lu-dialog-content>\n\t\t<lu-dialog-footer>\n\t\t\t@if (dialogData) {\n\t\t\t\t<div class=\"footer-content\">\n\t\t\t\t\t<button type=\"button\" luButton=\"ghost\" delete (click)=\"deleteLink()\">{{ intl.linksDelete }}</button>\n\t\t\t\t</div>\n\t\t\t}\n\t\t\t<div class=\"footer-actions\">\n\t\t\t\t<button type=\"submit\" luButton>{{ intl.linksSubmit }}</button>\n\t\t\t\t<button type=\"button\" luButton=\"ghost\" luDialogDismiss>{{ intl.linksCancel }}</button>\n\t\t\t</div>\n\t\t</lu-dialog-footer>\n\t</form>\n</lu-dialog>\n","import { $createLinkNode, $isLinkNode, $toggleLink, AutoLinkNode, LinkNode } from '@lexical/link';\nimport { $getNearestNodeOfType } from '@lexical/utils';\nimport { $getSelection, $isRangeSelection, COMMAND_PRIORITY_NORMAL, createCommand, LexicalEditor, SELECTION_CHANGE_COMMAND } from 'lexical';\nimport { getSelectedNode } from '../../utils';\n\nexport const FORMAT_LINK = createCommand<string | undefined>('FORMAT_LINK');\n\nexport function registerLink(editor: LexicalEditor) {\n\treturn editor.registerCommand(\n\t\tFORMAT_LINK,\n\t\t(href) => {\n\t\t\teditor.update(() => {\n\t\t\t\tconst selection = $getSelection();\n\t\t\t\tif ($isRangeSelection(selection)) {\n\t\t\t\t\tconst node = getSelectedNode(selection);\n\t\t\t\t\tconst parent = $getNearestNodeOfType(node, LinkNode) || $getNearestNodeOfType(node, AutoLinkNode);\n\t\t\t\t\tif (parent) {\n\t\t\t\t\t\tif (href) {\n\t\t\t\t\t\t\tconst linkNode = $createLinkNode(href, {\n\t\t\t\t\t\t\t\trel: parent.__rel,\n\t\t\t\t\t\t\t\ttarget: parent.__target,\n\t\t\t\t\t\t\t\ttitle: parent.__title,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tparent.replace(linkNode, true);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t$toggleLink(null);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (href) {\n\t\t\t\t\t\t$toggleLink(href);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn true;\n\t\t},\n\t\tCOMMAND_PRIORITY_NORMAL,\n\t);\n}\n\nexport function registerLinkSelectionChange(editor: LexicalEditor, onselectionchange: (isLink: boolean) => void) {\n\treturn editor.registerCommand(\n\t\tSELECTION_CHANGE_COMMAND,\n\t\t() => {\n\t\t\tconst selection = $getSelection();\n\t\t\tif ($isRangeSelection(selection)) {\n\t\t\t\tconst node = getSelectedNode(selection);\n\t\t\t\tconst parent = node.getParent();\n\t\t\t\tonselectionchange($isLinkNode(node) || $isLinkNode(parent));\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\tCOMMAND_PRIORITY_NORMAL,\n\t);\n}\n","import { TemplateRef, ViewContainerRef } from '@angular/core';\nimport { AutoLinkNode } from '@lexical/link';\nimport { DOMExportOutput, LexicalEditor } from 'lexical';\n\nexport class PopoverAutoLinkNode extends AutoLinkNode {\n\tstatic #viewContainerRef: ViewContainerRef;\n\tstatic #templateRef: TemplateRef<{ href?: string; title?: string; target?: string }>;\n\n\tstatic setViewContainerRef(vcr: ViewContainerRef): void {\n\t\tPopoverAutoLinkNode.#viewContainerRef = vcr;\n\t}\n\tstatic setTemplateRef(vcr: TemplateRef<unknown>): void {\n\t\tPopoverAutoLinkNode.#templateRef = vcr;\n\t}\n\n\tstatic override getType(): string {\n\t\treturn 'popoverautolink';\n\t}\n\n\toverride createDOM() {\n\t\tif (PopoverAutoLinkNode.#viewContainerRef && PopoverAutoLinkNode.#templateRef) {\n\t\t\t// Create the view\n\t\t\tconst view = PopoverAutoLinkNode.#viewContainerRef.createEmbeddedView(PopoverAutoLinkNode.#templateRef, {\n\t\t\t\thref: this.sanitizeUrl(this.__url),\n\t\t\t\ttitle: this.__title,\n\t\t\t\ttarget: this.__target,\n\t\t\t});\n\n\t\t\t// Return the template DOM element\n\t\t\treturn view.rootNodes[0] as HTMLElement;\n\t\t}\n\t\tthrow new Error('ViewContainerRef is not set for PopoverAutoLinkNode. Ensure it is initialized before creating PopoverAutoLinkNode instances.');\n\t}\n\n\toverride exportDOM(editor: LexicalEditor): DOMExportOutput {\n\t\treturn {\n\t\t\telement: super.createDOM(editor._config),\n\t\t};\n\t}\n\n\tstatic override clone(node: PopoverAutoLinkNode): PopoverAutoLinkNode {\n\t\treturn new PopoverAutoLinkNode(node.__url, { target: node.__target, rel: node.__rel, title: node.__title }, node.__key);\n\t}\n}\n","import { TemplateRef, ViewContainerRef } from '@angular/core';\nimport { LinkNode } from '@lexical/link';\nimport { DOMExportOutput, LexicalEditor } from 'lexical';\n\nexport class PopoverLinkNode extends LinkNode {\n\tstatic #viewContainerRef: ViewContainerRef;\n\tstatic #templateRef: TemplateRef<{ href?: string; title?: string; target?: string }>;\n\n\tstatic setViewContainerRef(vcr: ViewContainerRef): void {\n\t\tPopoverLinkNode.#viewContainerRef = vcr;\n\t}\n\tstatic setTemplateRef(vcr: TemplateRef<unknown>): void {\n\t\tPopoverLinkNode.#templateRef = vcr;\n\t}\n\n\tstatic override getType(): string {\n\t\treturn 'popoverlink';\n\t}\n\n\toverride createDOM() {\n\t\tif (PopoverLinkNode.#viewContainerRef && PopoverLinkNode.#templateRef) {\n\t\t\t// Create the view\n\t\t\tconst view = PopoverLinkNode.#viewContainerRef.createEmbeddedView(PopoverLinkNode.#templateRef, {\n\t\t\t\thref: this.sanitizeUrl(this.__url),\n\t\t\t\ttitle: this.__title,\n\t\t\t\ttarget: this.__target,\n\t\t\t});\n\n\t\t\t// Return the template DOM element\n\t\t\treturn view.rootNodes[0] as HTMLElement;\n\t\t}\n\t\tthrow new Error('ViewContainerRef is not set for PopoverLinkNode. Ensure it is initialized before creating PopoverLinkNode instances.');\n\t}\n\n\toverride exportDOM(editor: LexicalEditor): DOMExportOutput {\n\t\treturn {\n\t\t\telement: super.createDOM(editor._config),\n\t\t};\n\t}\n\n\tstatic override clone(node: PopoverLinkNode): PopoverLinkNode {\n\t\treturn new PopoverLinkNode(node.__url, { target: node.__target, rel: node.__rel, title: node.__title }, node.__key);\n\t}\n}\n","import { AfterViewInit, ChangeDetectionStrategy, Component, ElementRef, forwardRef, inject, OnDestroy, signal, TemplateRef, viewChild, ViewContainerRef } from '@angular/core';\nimport { AutoLinkNode, createLinkMatcherWithRegExp, LinkNode, registerAutoLink } from '@lexical/link';\nimport { $getNearestNodeOfType, mergeRegister } from '@lexical/utils';\nimport { ButtonComponent } from '@lucca-front/ng/button';\nimport { getIntl } from '@lucca-front/ng/core';\nimport { LuDialogService, provideLuDialog } from '@lucca-front/ng/dialog';\nimport { IconComponent } from '@lucca-front/ng/icon';\nimport { LinkComponent as LuLinkComponent } from '@lucca-front/ng/link';\nimport { PopoverDirective } from '@lucca-front/ng/popover2';\nimport { LuTooltipTriggerDirective } from '@lucca-front/ng/tooltip';\nimport { $getSelection, $isRangeSelection, LexicalEditor, SELECTION_CHANGE_COMMAND } from 'lexical';\nimport { RICH_TEXT_PLUGIN_COMPONENT, RichTextPluginComponent } from '../../rich-text-input.component';\nimport { LU_RICH_TEXT_INPUT_TRANSLATIONS } from '../../rich-text-input.translate';\nimport { getSelectedNode } from '../../utils';\nimport { LinkDialogComponent } from './link-dialog';\nimport { FORMAT_LINK, registerLink, registerLinkSelectionChange } from './link.command';\nimport { PopoverAutoLinkNode } from './popover-autolink-node';\nimport { PopoverLinkNode } from './popover-link-node';\n\nconst URL_REGEX = /https?:\\/\\/(?:www\\.)?[-a-zA-Z0-9@:%._+~#=]{1,256}\\.[a-zA-Z0-9()]{1,6}\\b(?:[-a-zA-Z0-9()@:%_+.~#?&/=;,[\\]]*)/;\nconst EMAIL_REGEX = /(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))/;\n\n@Component({\n\tselector: 'lu-rich-text-plugin-link',\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\ttemplateUrl: './link.component.html',\n\tstyleUrl: 'link.component.scss',\n\timports: [ButtonComponent, IconComponent, LuTooltipTriggerDirective, PopoverDirective, LuLinkComponent],\n\thost: {\n\t\tclass: 'richTextField-toolbar-col-group',\n\t},\n\tproviders: [\n\t\tprovideLuDialog(),\n\t\t{\n\t\t\tprovide: RICH_TEXT_PLUGIN_COMPONENT,\n\t\t\tuseExisting: forwardRef(() => LinkComponent),\n\t\t},\n\t],\n})\nexport class LinkComponent implements OnDestroy, AfterViewInit, RichTextPluginComponent {\n\treadonly #luDialogService = inject(LuDialogService);\n\treadonly #viewContainerRef = inject(ViewContainerRef);\n\n\treadonly linkNodeTemplate = viewChild.required('linkNodeTemplate', { read: TemplateRef });\n\treadonly element = viewChild.required('element', { read: ElementRef<HTMLButtonElement> });\n\n\treadonly tabindex = signal<number>(-1);\n\treadonly active = signal(false);\n\treadonly isDisabled = signal(false);\n\n\t#editor?: LexicalEditor;\n\tintl = getIntl(LU_RICH_TEXT_INPUT_TRANSLATIONS);\n\n\t#registeredCommands: () => void = () => {};\n\n\tconstructor() {\n\t\tPopoverLinkNode.setViewContainerRef(this.#viewContainerRef);\n\t\tPopoverAutoLinkNode.setViewContainerRef(this.#viewContainerRef);\n\t}\n\n\tngAfterViewInit() {\n\t\tPopoverLinkNode.setTemplateRef(this.linkNodeTemplate());\n\t\tPopoverAutoLinkNode.setTemplateRef(this.linkNodeTemplate());\n\t}\n\n\tsetEditorInstance(editor: LexicalEditor) {\n\t\tthis.#editor = editor;\n\t\tthis.#registeredCommands = mergeRegister(\n\t\t\tregisterLink(editor),\n\t\t\tregisterLinkSelectionChange(editor, (isLink) => this.active.set(isLink)),\n\t\t\tregisterAutoLink(editor, {\n\t\t\t\tmatchers: [createLinkMatcherWithRegExp(URL_REGEX, (text) => (text.startsWith('http') ? text : `https://${text}`)), createLinkMatcherWithRegExp(EMAIL_REGEX, (text) => `mailto:${text}`)],\n\t\t\t\tchangeHandlers: [],\n\t\t\t}),\n\t\t);\n\t}\n\n\tgetLexicalNodes() {\n\t\treturn [\n\t\t\tPopoverLinkNode,\n\t\t\tPopoverAutoLinkNode,\n\t\t\t{\n\t\t\t\treplace: LinkNode,\n\t\t\t\twith: (node: LinkNode) =>\n\t\t\t\t\tnew PopoverLinkNode(node.getURL(), {\n\t\t\t\t\t\trel: node.getRel(),\n\t\t\t\t\t\ttarget: node.getTarget(),\n\t\t\t\t\t\ttitle: node.getTitle(),\n\t\t\t\t\t}),\n\t\t\t\twithKlass: PopoverLinkNode,\n\t\t\t},\n\t\t\t{\n\t\t\t\treplace: AutoLinkNode,\n\t\t\t\twith: (node: AutoLinkNode) =>\n\t\t\t\t\tnew PopoverAutoLinkNode(node.getURL(), {\n\t\t\t\t\t\trel: node.getRel(),\n\t\t\t\t\t\ttarget: node.getTarget(),\n\t\t\t\t\t\ttitle: node.getTitle(),\n\t\t\t\t\t}),\n\t\t\t\twithKlass: PopoverAutoLinkNode,\n\t\t\t},\n\t\t];\n\t}\n\n\tngOnDestroy() {\n\t\tthis.#registeredCommands();\n\t}\n\n\tdispatchCommand() {\n\t\tthis.#editor?.read(() => {\n\t\t\tlet url = '';\n\t\t\tconst selection = $getSelection();\n\t\t\tif ($isRangeSelection(selection)) {\n\t\t\t\tconst node = getSelectedNode(selection);\n\t\t\t\tconst parent = $getNearestNodeOfType(node, LinkNode);\n\t\t\t\tif (parent) {\n\t\t\t\t\turl = parent.getURL();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.#luDialogService\n\t\t\t\t.open({\n\t\t\t\t\tcontent: LinkDialogComponent,\n\t\t\t\t\tsize: 'S',\n\t\t\t\t\tdata: url,\n\t\t\t\t})\n\t\t\t\t.result$.subscribe((href) => {\n\t\t\t\t\tlet newHref = href;\n\t\t\t\t\tif (href && !href.startsWith('http')) {\n\t\t\t\t\t\tnewHref = `https://${href}`;\n\t\t\t\t\t}\n\t\t\t\t\tthis.#editor.dispatchCommand(FORMAT_LINK, newHref);\n\t\t\t\t\tthis.#editor.dispatchCommand(SELECTION_CHANGE_COMMAND, undefined);\n\t\t\t\t});\n\t\t});\n\t}\n\n\tdeleteLink() {\n\t\tthis.#editor?.dispatchCommand(FORMAT_LINK, undefined);\n\t\tthis.#editor?.dispatchCommand(SELECTION_CHANGE_COMMAND, undefined);\n\t}\n\n\tfocus() {\n\t\t(this.element() as ElementRef<HTMLButtonElement>).nativeElement.focus();\n\t}\n\n\tsetDisabledState(isDisabled: boolean): void {\n\t\tthis.isDisabled.set(isDisabled);\n\t}\n}\n","<button\n\t#element\n\tluButton=\"ghost\"\n\ttype=\"button\"\n\tsize=\"S\"\n\t(click)=\"dispatchCommand()\"\n\t[luTooltip]=\"intl.linksLabel\"\n\t[attr.aria-pressed]=\"active()\"\n\tluTooltipOnlyForDisplay\n\t[attr.tabindex]=\"tabindex()\"\n\t[disabled]=\"isDisabled()\"\n\tclass=\"richTextField-toolbar-button\"\n>\n\t<lu-icon icon=\"formatLink\" [alt]=\"intl.linksLabel\" />\n</button>\n\n<ng-template #linkNodeTemplate let-href=\"href\" let-title=\"title\" let-target=\"target\">\n\t<a [href]=\"href\" [title]=\"title\" [target]=\"target\" [luPopover2]=\"popover\" #trigger=\"luPopover2\"></a>\n\t<ng-template #popover>\n\t\t<div class=\"popover-contentOptional linkPopover\">\n\t\t\t<a [href]=\"href\" luLink external class=\"pr-u-ellipsis\">{{ href }}</a>\n\t\t\t<button\n\t\t\t\ttype=\"button\"\n\t\t\t\tluButton=\"ghost\"\n\t\t\t\tsize=\"XS\"\n\t\t\t\t(click)=\"trigger.close(); dispatchCommand()\"\n\t\t\t\t[luTooltip]=\"intl.linksLabel\"\n\t\t\t\tluTooltipOnlyForDisplay\n\t\t\t>\n\t\t\t\t<lu-icon icon=\"officePen\" [alt]=\"intl.linksLabel\" />\n\t\t\t</button>\n\t\t\t<button\n\t\t\t\ttype=\"button\"\n\t\t\t\tluButton=\"ghost\"\n\t\t\t\tsize=\"XS\"\n\t\t\t\t(click)=\"trigger.close(); deleteLink()\"\n\t\t\t\t[luTooltip]=\"intl.linksDelete\"\n\t\t\t\tluTooltipOnlyForDisplay\n\t\t\t>\n\t\t\t\t<lu-icon icon=\"trashDelete\" [alt]=\"intl.linksDelete\" />\n\t\t\t</button>\n\t\t</div>\n\t</ng-template>\n</ng-template>\n","import { $getSelection, $isRangeSelection, COMMAND_PRIORITY_NORMAL, createCommand, INSERT_PARAGRAPH_COMMAND, LexicalEditor, SELECTION_CHANGE_COMMAND } from 'lexical';\nimport { $handleListInsertParagraph, $insertList, $removeList, ListNode, ListType } from '@lexical/list';\nimport { $getNearestNodeOfType, mergeRegister } from '@lexical/utils';\nimport { getSelectedNode } from '../../utils';\n\nexport const FORMAT_LIST = createCommand<ListType>('FORMAT_LIST');\n\nexport function registerListsGlobal(editor: LexicalEditor) {\n\treturn mergeRegister(\n\t\teditor.registerCommand(\n\t\t\tFORMAT_LIST,\n\t\t\t(type) => {\n\t\t\t\tconst selection = $getSelection();\n\t\t\t\tif ($isRangeSelection(selection)) {\n\t\t\t\t\tconst node = getSelectedNode(selection);\n\t\t\t\t\tconst parent = $getNearestNodeOfType(node, ListNode);\n\t\t\t\t\tif (parent && parent.getListType() === type) {\n\t\t\t\t\t\t$removeList();\n\t\t\t\t\t} else if (parent) {\n\t\t\t\t\t\tparent.setListType(type);\n\t\t\t\t\t\teditor.dispatchCommand(SELECTION_CHANGE_COMMAND, undefined);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$insertList(type);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t},\n\t\t\tCOMMAND_PRIORITY_NORMAL,\n\t\t),\n\t\t// end list with enter key on an empty list item node\n\t\teditor.registerCommand(INSERT_PARAGRAPH_COMMAND, () => $handleListInsertParagraph(), COMMAND_PRIORITY_NORMAL),\n\t);\n}\n\nexport function registerListsSelectionChange(editor: LexicalEditor, type: ListType, onselectionchange: (isList: boolean) => void) {\n\treturn editor.registerCommand(\n\t\tSELECTION_CHANGE_COMMAND,\n\t\t() => {\n\t\t\tconst selection = $getSelection();\n\t\t\tif ($isRangeSelection(selection)) {\n\t\t\t\tconst node = getSelectedNode(selection);\n\t\t\t\tconst parent = $getNearestNodeOfType(node, ListNode);\n\t\t\t\tonselectionchange(Boolean(parent && parent.getListType() === type));\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\tCOMMAND_PRIORITY_NORMAL,\n\t);\n}\n","import { ChangeDetectionStrategy, Component, ElementRef, forwardRef, input, OnDestroy, signal, viewChild } from '@angular/core';\nimport { ListType } from '@lexical/list';\nimport { mergeRegister } from '@lexical/utils';\nimport { LuccaIcon } from '@lucca-front/icons';\nimport { ButtonComponent } from '@lucca-front/ng/button';\nimport { IconComponent } from '@lucca-front/ng/icon';\nimport { LuTooltipTriggerDirective } from '@lucca-front/ng/tooltip';\nimport { LexicalEditor } from 'lexical';\nimport { RICH_TEXT_PLUGIN_COMPONENT, RichTextPluginComponent } from '../../rich-text-input.component';\nimport { FORMAT_LIST, registerListsSelectionChange } from './list-format.command';\n\n@Component({\n\tselector: 'lu-rich-text-plugin-list',\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\ttemplateUrl: 'list-format.component.html',\n\timports: [ButtonComponent, IconComponent, LuTooltipTriggerDirective],\n\thost: {\n\t\tclass: 'richTextField-toolbar-col-group',\n\t},\n\tproviders: [\n\t\t{\n\t\t\tprovide: RICH_TEXT_PLUGIN_COMPONENT,\n\t\t\tuseExisting: forwardRef(() => ListFormatComponent),\n\t\t},\n\t],\n})\nexport class ListFormatComponent implements OnDestroy, RichTextPluginComponent {\n\tpublic format = input.required<ListType>();\n\tpublic icon = input.required<LuccaIcon>();\n\tpublic tooltip = input.required<string>();\n\n\tpublic element = viewChild('element', { read: ElementRef<HTMLButtonElement> });\n\n\tpublic tabindex = signal<number>(-1);\n\tpublic active = signal(false);\n\tpublic isDisabled = signal(false);\n\n\t#editor?: LexicalEditor;\n\n\t#registeredCommands: () => void = () => {};\n\n\tsetEditorInstance(editor: LexicalEditor): void {\n\t\tthis.#editor = editor;\n\t\tthis.#registeredCommands = mergeRegister(registerListsSelectionChange(editor, this.format(), (hasFormat) => this.active.set(hasFormat)));\n\t}\n\n\tngOnDestroy() {\n\t\tthis.#registeredCommands();\n\t}\n\n\tsetDisabledState(isDisabled: boolean) {\n\t\tthis.isDisabled.set(isDisabled);\n\t}\n\n\tdispatchCommand() {\n\t\tthis.#editor?.dispatchCommand(FORMAT_LIST, this.format());\n\t}\n\n\tfocus() {\n\t\t(this.element() as ElementRef<HTMLButtonElement>).nativeElement.focus();\n\t}\n}\n","<button\n\t#element\n\tluButton=\"ghost\"\n\ttype=\"button\"\n\tsize=\"S\"\n\t(click)=\"dispatchCommand()\"\n\t[luTooltip]=\"tooltip()\"\n\tluTooltipOnlyForDisplay\n\t[attr.aria-pressed]=\"active()\"\n\t[attr.tabindex]=\"tabindex()\"\n\t[disabled]=\"isDisabled()\"\n\tclass=\"richTextField-toolbar-button\"\n>\n\t<lu-icon [icon]=\"icon()\" [alt]=\"tooltip()\" />\n</button>\n","import { ChangeDetectionStrategy, Component, forwardRef, OnDestroy, viewChildren } from '@angular/core';\nimport { mergeRegister } from '@lexical/utils';\nimport { Klass, LexicalEditor, LexicalNode } from 'lexical';\nimport { RICH_TEXT_PLUGIN_COMPONENT, RichTextPluginComponent } from '../../rich-text-input.component';\nimport { registerListsGlobal } from './list-format.command';\n\nimport { ListItemNode, ListNode } from '@lexical/list';\nimport { getIntl } from '@lucca-front/ng/core';\nimport { LU_RICH_TEXT_INPUT_TRANSLATIONS } from '../../rich-text-input.translate';\nimport { ListFormatComponent } from './list-format.component';\n\n@Component({\n\tselector: 'lu-rich-text-toolbar-list-style',\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\ttemplateUrl: `list-style-toolbar.component.html`,\n\thost: {\n\t\tclass: 'richTextField-toolbar-col-group',\n\t\trole: 'radiogroup',\n\t},\n\tproviders: [\n\t\t{\n\t\t\tprovide: RICH_TEXT_PLUGIN_COMPONENT,\n\t\t\tuseExisting: forwardRef(() => ListStyleToolbarComponent),\n\t\t},\n\t],\n\timports: [ListFormatComponent],\n})\nexport class ListStyleToolbarComponent implements OnDestroy, RichTextPluginComponent {\n\t#registeredCommands: () => void = () => {};\n\n\tpluginComponents = viewChildren(RICH_TEXT_PLUGIN_COMPONENT);\n\n\tintl = getIntl(LU_RICH_TEXT_INPUT_TRANSLATIONS);\n\n\tsetEditorInstance(editor: LexicalEditor): void {\n\t\tthis.pluginComponents().forEach((plugin) => plugin.setEditorInstance(editor));\n\t\tthis.#registeredCommands = mergeRegister(registerListsGlobal(editor));\n\t}\n\tgetLexicalNodes?(): Klass<LexicalNode>[] {\n\t\treturn [ListNode, ListItemNode];\n\t}\n\n\tsetDisabledState(isDisabled: boolean) {\n\t\tthis.pluginComponents().forEach((plugin) => plugin.setDisabledState(isDisabled));\n\t}\n\n\tngOnDestroy() {\n\t\tthis.#registeredCommands();\n\t}\n}\n","<lu-rich-text-plugin-list format=\"bullet\" [tooltip]=\"intl.listsBulletLabel\" icon=\"formatBulletedList\" />\n<lu-rich-text-plugin-list format=\"number\" [tooltip]=\"intl.listsNumberedLabel\" icon=\"formatNumberedList\" />\n","import {\n\t$createTextNode,\n\tCOMMAND_PRIORITY_NORMAL,\n\tDecoratorNode,\n\ttype DOMConversion,\n\ttype DOMConversionMap,\n\ttype DOMExportOutput,\n\ttype EditorConfig,\n\ttype LexicalEditor,\n\ttype LexicalNode,\n\tLexicalUpdateJSON,\n\ttype NodeKey,\n\tSerializedLexicalNode,\n\tSpread,\n\tTextNode,\n} from 'lexical';\n\nimport { ComponentRef, ViewContainerRef } from '@angular/core';\nimport { ChipComponent } from '@lucca-front/ng/chip';\n\nexport type SerializedTagNode = Spread<\n\t{\n\t\ttagKey?: string;\n\t\ttagDescription?: string;\n\t\tdisabled?: boolean;\n\t},\n\tSerializedLexicalNode\n>;\n\nexport class TagNode extends DecoratorNode<string> {\n\t#tagKey: string;\n\t#tagDescription?: string;\n\t#disabled: boolean;\n\t// Store the component reference on the node instance\n\t#componentRef?: ComponentRef<ChipComponent>;\n\tstatic #viewContainerRef: ViewContainerRef;\n\n\tstatic setViewContainerRef(vcr: ViewContainerRef): void {\n\t\tTagNode.#viewContainerRef = vcr;\n\t}\n\n\tconstructor(tagKey = '', tagDescription?: string, disabled = false, key?: NodeKey) {\n\t\tsuper(key);\n\t\tthis.#tagKey = tagKey;\n\t\tthis.#tagDescription = tagDescription;\n\t\tthis.#disabled = disabled;\n\t}\n\n\tisDisabled(): boolean {\n\t\treturn this.#disabled;\n\t}\n\n\tsetDisabled(disabled: boolean): this {\n\t\tconst self = this.getWritable();\n\t\tself.#disabled = disabled;\n\t\treturn self;\n\t}\n\n\tgetTagKey(): string {\n\t\treturn this.#tagKey;\n\t}\n\n\tsetTagKey(tagKey: string): this {\n\t\tconst self = this.getWritable();\n\t\tself.#tagKey = tagKey;\n\t\treturn self;\n\t}\n\n\tgetTagDescription(): string {\n\t\treturn this.#tagDescription;\n\t}\n\n\tsetTagDescription(description: string): this {\n\t\tconst self = this.getWritable();\n\t\tself.#tagDescription = description;\n\t\treturn self;\n\t}\n\n\tstatic override getType(): string {\n\t\treturn 'tag';\n\t}\n\n\tstatic override clone(node: TagNode): TagNode {\n\t\treturn new TagNode(node.#tagKey, node.#tagDescription, node.#disabled, node.__key);\n\t}\n\n\t/**\n\t * This method must be implemented but has no purpose outside of react\n\t */\n\toverride decorate(): string {\n\t\treturn this.getTextContent();\n\t}\n\n\toverride createDOM(_config: EditorConfig, editor: LexicalEditor): HTMLElement {\n\t\tif (TagNode.#viewContainerRef) {\n\t\t\t// Create the component\n\t\t\tthis.#componentRef = TagNode.#viewContainerRef.createComponent(ChipComponent);\n\n\t\t\t// Set inputs on the component instance\n\t\t\tthis.#componentRef.setInput('unkillable', false);\n\t\t\tthis.#componentRef.setInput('palette', 'product');\n\t\t\tthis.#componentRef.setInput('disabled', this.#disabled);\n\n\t\t\t// Get the component's DOM element\n\t\t\tconst componentElement = this.#componentRef.location.nativeElement as HTMLElement;\n\n\t\t\tconst textNode = document.createTextNode(this.#tagDescription ?? this.#tagKey);\n\t\t\tcomponentElement.insertBefore(textNode, componentElement.firstChild);\n\t\t\tcomponentElement.classList.add('mod-S');\n\t\t\tcomponentElement.classList.add('richTextField-content-chip');\n\n\t\t\t// Add click handler ONLY to the delete button, not the whole chip\n\t\t\tthis.#componentRef.instance.kill.subscribe(() => {\n\t\t\t\teditor.update(() => {\n\t\t\t\t\tthis.remove();\n\t\t\t\t});\n\t\t\t});\n\n\t\t\t// Return the component's DOM element\n\t\t\treturn componentElement;\n\t\t}\n\t\tthrow new Error('ViewContainerRef is not set for TagNode. Ensure it is initialized before creating TagNode instances.');\n\t}\n\n\toverride updateDOM(prevNode: TagNode, _dom: HTMLElement, _config: EditorConfig): boolean {\n\t\treturn this.#tagDescription !== prevNode.#tagDescription || this.#tagKey !== prevNode.#tagKey || this.#disabled !== prevNode.#disabled;\n\t}\n\n\toverride remove(preserveEmptyParent?: boolean): void {\n\t\tsuper.remove(preserveEmptyParent);\n\t\tthis.#componentRef?.destroy();\n\t}\n\n\toverride exportDOM(): DOMExportOutput {\n\t\tconst element = document.createTextNode(this.getTextContent());\n\t\treturn { element };\n\t}\n\n\tstatic override importDOM(): DOMConversionMap {\n\t\tconst importers = TextNode.importDOM();\n\t\treturn {\n\t\t\t...importers,\n\t\t\t'#text': (domNode: Node) => domConversionFunction(domNode),\n\t\t};\n\t}\n\n\tstatic override importJSON(serializedNode: SerializedTagNode): TagNode {\n\t\treturn $createTagNode().updateFromJSON(serializedNode);\n\t}\n\n\toverride updateFromJSON(serializedNode: LexicalUpdateJSON<SerializedTagNode>): this {\n\t\treturn super\n\t\t\t.updateFromJSON(serializedNode)\n\t\t\t.setTagDescription(serializedNode.tagDescription ?? '')\n\t\t\t.setTagKey(serializedNode.tagKey ?? '')\n\t\t\t.setDisabled(serializedNode.disabled ?? false);\n\t}\n\n\toverride exportJSON(): SerializedTagNode {\n\t\treturn {\n\t\t\t...super.exportJSON(),\n\t\t\t...{ tagDescription: this.#tagDescription, tagKey: this.#tagKey, disabled: this.#disabled },\n\t\t};\n\t}\n\n\toverride getTextContent(): string {\n\t\t// node must have text content or it will be ignored when formatting\n\t\treturn `{{${this.#tagKey}}}`;\n\t}\n}\n\nfunction domConversionFunction(domNode: Node): DOMConversion {\n\tconst html = domNode.textContent ?? '';\n\n\tconst regex = /\\{\\{(?:.*?)\\}\\}/gu;\n\tconst convertedParts: LexicalNode[] = [];\n\tconst matches = html.match(regex);\n\n\tif (matches) {\n\t\t// Diviser le contenu en parties de texte et de balises\n\t\tconst otherText = html.split(regex);\n\t\tmatches.forEach((match, index) => {\n\t\t\tconvertedParts.push($createTextNode(otherText[index]));\n\t\t\t// Traiter le tag\n\t\t\tconst tagContent = match.replace(/\\{\\{|\\}\\}/gu, '').trim();\n\t\t\tconvertedParts.push($createTagNode(tagContent));\n\n\t\t\tif (index === matches.length - 1) {\n\t\t\t\tconvertedParts.push($createTextNode(otherText[index + 1]));\n\t\t\t}\n\t\t});\n\t} else {\n\t\tconvertedParts.push($createTextNode(html));\n\t}\n\n\treturn {\n\t\t// La fonction de conversion reçoit le nœud DOM et doit retourner un nœud Lexical\n\t\tconversion: () => ({\n\t\t\tnode: convertedParts,\n\t\t}),\n\n\t\t// Priorité (plus le nombre est élevé, plus la conversion est prioritaire)\n\t\tpriority: COMMAND_PRIORITY_NORMAL,\n\t};\n}\n\nexport function $createTagNode(key = '', description?: string): TagNode {\n\treturn new TagNode(key, description);\n}\n\nexport function $isTagNode(node: LexicalNode | null | undefined): node is TagNode {\n\treturn node instanceof TagNode;\n}\n","import { ChangeDetectionStrategy, Component, effect, ElementRef, forwardRef, inject, input, OnDestroy, signal, viewChildren, ViewContainerRef } from '@angular/core';\nimport { ChipComponent } from '@lucca-front/ng/chip';\nimport { getIntl } from '@lucca-front/ng/core';\nimport { $getNodeByKey, $getRoot, $getSelection, type Klass, type LexicalEditor, type LexicalNode, type NodeKey } from 'lexical';\nimport { INITIAL_UPDATE_TAG, RICH_TEXT_PLUGIN_COMPONENT, RichTextPluginComponent, SKIP_DOM_SELECTION_TAG } from '../../rich-text-input.component';\nimport { LU_RICH_TEXT_INPUT_TRANSLATIONS } from '../../rich-text-input.translate';\nimport { $createTagNode, TagNode } from './tag-node';\nimport type { Tag } from './tag.model';\n\nconst areSetsEqual = (a: Set<string>, b: Set<string>): boolean => a.size === b.size && [...a].every((value) => b.has(value));\n\n@Component({\n\tselector: 'lu-rich-text-plugin-tag',\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\ttemplateUrl: './tag.component.html',\n\tstyleUrl: './tag.component.scss',\n\timports: [ChipComponent],\n\tproviders: [\n\t\t{\n\t\t\tprovide: RICH_TEXT_PLUGIN_COMPONENT,\n\t\t\tuseExisting: forwardRef(() => RichTextPluginTagComponent),\n\t\t},\n\t],\n})\nexport class RichTextPluginTagComponent implements RichTextPluginComponent, OnDestroy {\n\treadonly #viewContainerRef = inject(ViewContainerRef);\n\treadonly intl = getIntl(LU_RICH_TEXT_INPUT_TRANSLATIONS);\n\n\treadonly tags = input.required<Tag[]>();\n\treadonly isDisabled = signal(false);\n\treadonly focusIndex = signal<number>(0);\n\n\treadonly focusableElements = viewChildren('tagButton', { read: ElementRef });\n\n\teditor: LexicalEditor | null = null;\n\n\treadonly #tagNodeKeys = signal(new Set<NodeKey>());\n\n\t#registeredCommands = () => {};\n\n\tconstructor() {\n\t\tTagNode.setViewContainerRef(this.#viewContainerRef);\n\n\t\t// Listen for new partial tag nodes and update their descriptions\n\t\teffect(() => {\n\t\t\tconst tags = this.tags();\n\t\t\t// filter out previously recorded nodes\n\t\t\tconst nodes = this.#tagNodeKeys();\n\t\t\tconst isDisabled = this.isDisabled();\n\n\t\t\tthis.editor?.update(\n\t\t\t\t() => {\n\t\t\t\t\tnodes.forEach((node) => {\n\t\t\t\t\t\tconst tagNode = $getNodeByKey<TagNode>(node);\n\t\t\t\t\t\tif (!tagNode) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst tag = tags.find((t) => t.key === tagNode.getTagKey());\n\t\t\t\t\t\tif (tag) {\n\t\t\t\t\t\t\ttagNode.setTagDescription(tag.description ?? '').setDisabled(isDisabled);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\ttagNode.remove();\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t\t{ tag: [SKIP_DOM_SELECTION_TAG, INITIAL_UPDATE_TAG] },\n\t\t\t);\n\t\t});\n\t}\n\n\tsetEditorInstance(editor: LexicalEditor): void {\n\t\tthis.editor = editor;\n\n\t\t// listen for new partial tag nodes (coming from formatters)\n\t\tthis.#registeredCommands = this.editor.registerMutationListener(\n\t\t\tTagNode,\n\t\t\t(mutations) => {\n\t\t\t\tconst newNodes = new Set<NodeKey>(this.#tagNodeKeys());\n\t\t\t\tthis.editor?.read(() => {\n\t\t\t\t\tmutations.forEach((m, k) => {\n\t\t\t\t\t\tif (m === 'created') {\n\t\t\t\t\t\t\tnewNodes.add(k);\n\t\t\t\t\t\t} else if (m === 'destroyed') {\n\t\t\t\t\t\t\tnewNodes.delete(k);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\tif (!areSetsEqual(newNodes, this.#tagNodeKeys())) {\n\t\t\t\t\t\tthis.#tagNodeKeys.set(newNodes);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t},\n\t\t\t{ skipInitialization: true },\n\t\t);\n\t}\n\n\tgetLexicalNodes(): Klass<LexicalNode>[] {\n\t\treturn [TagNode];\n\t}\n\n\tinsertTag(tag: Tag): void {\n\t\tthis.editor?.update(() => {\n\t\t\tlet selection = $getSelection();\n\t\t\tif (!selection) {\n\t\t\t\tselection = $getRoot().selectEnd();\n\t\t\t}\n\t\t\tconst node = $createTagNode(tag.key, tag.description);\n\t\t\tselection.insertNodes([node]);\n\t\t});\n\t}\n\n\tsetDisabledState(isDisabled: boolean): void {\n\t\tthis.isDisabled.set(isDisabled);\n\t}\n\n\tfocus() {\n\t\t// When receiving focus from the rich text input, focus the first tag button\n\t\tthis.focusIndex.set(0);\n\t\t(this.focusableElements().at(0) as ElementRef<HTMLButtonElement>).nativeElement.focus();\n\t}\n\n\tfocusTag(event: Event, direction: -1 | 1) {\n\t\tevent.stopPropagation();\n\n\t\tthis.focusIndex.update((v) => (v + direction) % this.focusableElements().length);\n\t\t(this.focusableElements().at(this.focusIndex()) as ElementRef<HTMLButtonElement>).nativeElement.focus();\n\t}\n\n\tngOnDestroy() {\n\t\tthis.#registeredCommands();\n\t}\n}\n","<div class=\"richTextField-toolbar-chips\" (keydown.arrowleft)=\"focusTag($event, -1)\" (keydown.arrowRight)=\"focusTag($event, 1)\">\n\t<span aria-hidden=\"true\">{{ intl.insertTag }}</span>\n\t@for (tag of tags(); track tag) {\n\t\t<lu-chip\n\t\t\t[attr.tabindex]=\"isDisabled() ? null : $first ? 0 : -1\"\n\t\t\t[disabled]=\"isDisabled()\"\n\t\t\t(click)=\"!isDisabled() ? insertTag(tag) : null\"\n\t\t\t(keyup.space)=\"!isDisabled() ? insertTag(tag) : null\"\n\t\t\t(keyup.enter)=\"!isDisabled() ? insertTag(tag) : null\"\n\t\t\tclass=\"richTextField-toolbar-chips-chip\"\n\t\t\tpalette=\"product\"\n\t\t\t#tagButton\n\t\t\tunkillable\n\t\t>\n\t\t\t<span class=\"pr-u-mask\">{{ intl.insertTag }}</span>\n\t\t\t{{ tag.description }}\n\t\t</lu-chip>\n\t}\n</div>\n","import { $getSelection, $isRangeSelection, COMMAND_PRIORITY_NORMAL, LexicalEditor, SELECTION_CHANGE_COMMAND, TextFormatType } from 'lexical';\n\nexport function registerFormatSelectionChange(editor: LexicalEditor, format: TextFormatType, onselectionchange: (hasFormat: boolean) => void) {\n\treturn editor.registerCommand(\n\t\tSELECTION_CHANGE_COMMAND,\n\t\t() => {\n\t\t\tconst selection = $getSelection();\n\t\t\tif ($isRangeSelection(selection)) {\n\t\t\t\tonselectionchange(selection.hasFormat(format));\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\tCOMMAND_PRIORITY_NORMAL,\n\t);\n}\n","import { ChangeDetectionStrategy, Component, ElementRef, forwardRef, input, OnDestroy, signal, viewChild } from '@angular/core';\nimport { LuccaIcon } from '@lucca-front/icons';\nimport { ButtonComponent } from '@lucca-front/ng/button';\nimport { IconComponent } from '@lucca-front/ng/icon';\nimport { LuTooltipTriggerDirective } from '@lucca-front/ng/tooltip';\nimport { FORMAT_TEXT_COMMAND, LexicalEditor, SELECTION_CHANGE_COMMAND, TextFormatType } from 'lexical';\nimport { RICH_TEXT_PLUGIN_COMPONENT, RichTextPluginComponent } from '../../rich-text-input.component';\nimport { registerFormatSelectionChange } from './text-style.command';\n\n@Component({\n\tselector: 'lu-rich-text-plugin-text-style',\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\ttemplateUrl: './text-style.component.html',\n\tstyleUrl: './text-style.component.scss',\n\timports: [ButtonComponent, IconComponent, LuTooltipTriggerDirective],\n\thost: {\n\t\tclass: 'richTextField-toolbar-col-group',\n\t},\n\tproviders: [\n\t\t{\n\t\t\tprovide: RICH_TEXT_PLUGIN_COMPONENT,\n\t\t\tuseExisting: forwardRef(() => TextStyleComponent),\n\t\t},\n\t],\n})\nexport class TextStyleComponent implements OnDestroy, RichTextPluginComponent {\n\tpublic format = input.required<TextFormatType>();\n\tpublic icon = input.required<LuccaIcon>();\n\tpublic tooltip = input.required<string>();\n\n\tpublic tabindex = signal<number>(-1);\n\tpublic active = signal(false);\n\tpublic isDisabled = signal(false);\n\n\tpublic element = viewChild('element', { read: ElementRef<HTMLButtonElement> });\n\n\t#editor?: LexicalEditor;\n\n\t#registeredCommands: () => void = () => {};\n\n\tsetEditorInstance(editor: LexicalEditor): void {\n\t\tthis.#editor = editor;\n\t\tthis.#registeredCommands = registerFormatSelectionChange(this.#editor, this.format(), (hasFormat) => this.active.set(hasFormat));\n\t}\n\n\tngOnDestroy() {\n\t\tthis.#registeredCommands();\n\t}\n\n\tdispatchCommand() {\n\t\tthis.#editor.dispatchCommand(FORMAT_TEXT_COMMAND, this.format());\n\t\t// force update selection\n\t\tthis.#editor.dispatchCommand(SELECTION_CHANGE_COMMAND, undefined);\n\t}\n\n\tsetDisabledState(isDisabled: boolean) {\n\t\tthis.isDisabled.set(isDisabled);\n\t}\n\n\tfocus() {\n\t\t(this.element() as ElementRef<HTMLButtonElement>).nativeElement.focus();\n\t}\n}\n","<button\n\t#element\n\tluButton=\"ghost\"\n\ttype=\"button\"\n\tsize=\"S\"\n\t(click)=\"dispatchCommand()\"\n\t[attr.aria-pressed]=\"active()\"\n\t[luTooltip]=\"tooltip()\"\n\tluTooltipOnlyForDisplay\n\t[attr.tabindex]=\"tabindex()\"\n\tclass=\"richTextField-toolbar-button\"\n\t[disabled]=\"isDisabled()\"\n>\n\t<lu-icon [icon]=\"icon()\" [alt]=\"tooltip()\" />\n</button>\n","import { ChangeDetectionStrategy, Component, forwardRef, viewChildren } from '@angular/core';\nimport { getIntl } from '@lucca-front/ng/core';\nimport { LexicalEditor } from 'lexical';\nimport { RICH_TEXT_PLUGIN_COMPONENT, RichTextPluginComponent } from '../../rich-text-input.component';\nimport { LU_RICH_TEXT_INPUT_TRANSLATIONS } from '../../rich-text-input.translate';\nimport { TextStyleComponent } from './text-style.component';\n\n@Component({\n\tselector: 'lu-rich-text-toolbar-text-style',\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\ttemplateUrl: `text-style-toolbar.component.html`,\n\timports: [TextStyleComponent],\n\thost: {\n\t\tclass: 'richTextField-toolbar-col-group',\n\t},\n\tproviders: [\n\t\t{\n\t\t\tprovide: RICH_TEXT_PLUGIN_COMPONENT,\n\t\t\tuseExisting: forwardRef(() => TextStyleToolbarComponent),\n\t\t},\n\t],\n})\nexport class TextStyleToolbarComponent implements RichTextPluginComponent {\n\tpluginComponents = viewChildren(RICH_TEXT_PLUGIN_COMPONENT);\n\n\tintl = getIntl(LU_RICH_TEXT_INPUT_TRANSLATIONS);\n\n\tsetEditorInstance(editor: LexicalEditor): void {\n\t\tthis.pluginComponents().forEach((plugin) => plugin.setEditorInstance(editor));\n\t}\n\n\tsetDisabledState(isDisabled: boolean): void {\n\t\tthis.pluginComponents().forEach((plugin) => plugin.setDisabledState(isDisabled));\n\t}\n}\n","<lu-rich-text-plugin-text-style icon=\"formatTextBold\" [tooltip]=\"intl.stylesBold\" format=\"bold\" />\n<lu-rich-text-plugin-text-style icon=\"formatTextItalic\" [tooltip]=\"intl.stylesItalic\" format=\"italic\" />\n<lu-rich-text-plugin-text-style icon=\"formatTextUnderline\" [tooltip]=\"intl.stylesUnderline\" format=\"underline\" />\n<lu-rich-text-plugin-text-style icon=\"formatTextStrikethrough\" [tooltip]=\"intl.stylesStrikethrough\" format=\"strikethrough\" />\n","import { ChangeDetectionStrategy, Component, forwardRef, viewChildren } from '@angular/core';\nimport { Klass, LexicalEditor, LexicalNode } from 'lexical';\nimport { RICH_TEXT_PLUGIN_COMPONENT, RichTextPluginComponent } from '../../rich-text-input.component';\nimport { ClearFormatComponent } from '../clear-format';\nimport { HeadingsComponent } from '../headings';\nimport { LinkComponent } from '../link';\nimport { ListStyleToolbarComponent } from '../list-format';\nimport { TextStyleToolbarComponent } from '../text-style';\n\n@Component({\n\tselector: 'lu-rich-text-input-toolbar',\n\ttemplateUrl: 'toolbar.component.html',\n\thost: {\n\t\tclass: 'richTextField-toolbar-formatting',\n\t},\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [TextStyleToolbarComponent, ListStyleToolbarComponent, HeadingsComponent, LinkComponent, ClearFormatComponent],\n\tproviders: [\n\t\t{\n\t\t\tprovide: RICH_TEXT_PLUGIN_COMPONENT,\n\t\t\tuseExisting: forwardRef(() => RichTextInputToolbarComponent),\n\t\t},\n\t],\n})\nexport class RichTextInputToolbarComponent implements RichTextPluginComponent {\n\tpluginComponents = viewChildren(RICH_TEXT_PLUGIN_COMPONENT);\n\n\tsetEditorInstance(editor: LexicalEditor): void {\n\t\tthis.pluginComponents().forEach((plugin) => plugin.setEditorInstance(editor));\n\t}\n\n\tgetLexicalNodes() {\n\t\treturn this.pluginComponents().reduce((acc, plugin) => [...acc, ...(plugin.getLexicalNodes?.() || [])], [] as Klass<LexicalNode>[]);\n\t}\n\n\tsetDisabledState(isDisabled: boolean): void {\n\t\tthis.pluginComponents().forEach((plugin) => plugin.setDisabledState(isDisabled));\n\t}\n}\n","<div class=\"richTextField-toolbar-col\">\n\t<lu-rich-text-toolbar-text-style />\n\t<lu-rich-text-plugin-headings />\n\t<lu-rich-text-toolbar-list-style />\n\t<lu-rich-text-plugin-link />\n</div>\n<div class=\"richTextField-toolbar-col\">\n\t<lu-rich-text-plugin-clear-format />\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["LuLinkComponent"],"mappings":"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"}
1
+ {"version":3,"file":"lucca-front-ng-forms-rich-text-input.mjs","sources":["../../../packages/ng/forms/rich-text-input/formatters/rich-text-formatter.ts","../../../packages/ng/forms/rich-text-input/rich-text-input.component.ts","../../../packages/ng/forms/rich-text-input/rich-text-input.component.html","../../../packages/ng/forms/rich-text-input/translations.ts","../../../packages/ng/forms/rich-text-input/rich-text-input.translate.ts","../../../packages/ng/forms/rich-text-input/utils/lexical.utils.ts","../../../packages/ng/forms/rich-text-input/plugins/clear-format/clear-format.command.ts","../../../packages/ng/forms/rich-text-input/plugins/clear-format/clear-format.component.ts","../../../packages/ng/forms/rich-text-input/plugins/clear-format/clear-format.component.html","../../../packages/ng/forms/rich-text-input/plugins/headings/headings.command.ts","../../../packages/ng/forms/rich-text-input/plugins/headings/headings.component.ts","../../../packages/ng/forms/rich-text-input/plugins/headings/headings.component.html","../../../packages/ng/forms/rich-text-input/plugins/link/link-dialog/link-dialog.component.ts","../../../packages/ng/forms/rich-text-input/plugins/link/link-dialog/link-dialog.component.html","../../../packages/ng/forms/rich-text-input/plugins/link/link.command.ts","../../../packages/ng/forms/rich-text-input/plugins/link/popover-autolink-node.ts","../../../packages/ng/forms/rich-text-input/plugins/link/popover-link-node.ts","../../../packages/ng/forms/rich-text-input/plugins/link/link.component.ts","../../../packages/ng/forms/rich-text-input/plugins/link/link.component.html","../../../packages/ng/forms/rich-text-input/plugins/list-format/list-format.command.ts","../../../packages/ng/forms/rich-text-input/plugins/list-format/list-format.component.ts","../../../packages/ng/forms/rich-text-input/plugins/list-format/list-format.component.html","../../../packages/ng/forms/rich-text-input/plugins/list-format/list-style-toolbar.component.ts","../../../packages/ng/forms/rich-text-input/plugins/list-format/list-style-toolbar.component.html","../../../packages/ng/forms/rich-text-input/plugins/tag/tag-node.ts","../../../packages/ng/forms/rich-text-input/plugins/tag/tag.component.ts","../../../packages/ng/forms/rich-text-input/plugins/tag/tag.component.html","../../../packages/ng/forms/rich-text-input/plugins/text-style/text-style.command.ts","../../../packages/ng/forms/rich-text-input/plugins/text-style/text-style.component.ts","../../../packages/ng/forms/rich-text-input/plugins/text-style/text-style.component.html","../../../packages/ng/forms/rich-text-input/plugins/text-style/text-style-toolbar.component.ts","../../../packages/ng/forms/rich-text-input/plugins/text-style/text-style-toolbar.component.html","../../../packages/ng/forms/rich-text-input/plugins/toolbar/toolbar.component.ts","../../../packages/ng/forms/rich-text-input/plugins/toolbar/toolbar.component.html","../../../packages/ng/forms/rich-text-input/lucca-front-ng-forms-rich-text-input.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nimport { LexicalEditor } from 'lexical';\n\ntype UnregisterFn = () => void;\n\nexport abstract class RichTextFormatter {\n\t/** Register the rich-text or plain-text Lexical plugin */\n\tabstract registerTextPlugin(editor: LexicalEditor): UnregisterFn;\n\tabstract parse(editor: LexicalEditor, text?: string | null): void;\n\tabstract format(editor: LexicalEditor): string;\n}\n\nclass NoopFormatter extends RichTextFormatter {\n\toverride registerTextPlugin(): UnregisterFn {\n\t\tthrow new Error('You must provide a RichTextFormatter');\n\t}\n\n\toverride parse(): void {\n\t\tthrow new Error('You must provide a RichTextFormatter');\n\t}\n\n\toverride format(): string {\n\t\tthrow new Error('You must provide a RichTextFormatter');\n\t}\n}\n\nexport const RICH_TEXT_FORMATTER = new InjectionToken<RichTextFormatter>('RICH_TEXT_FORMATTER', {\n\tfactory: () => new NoopFormatter(),\n});\n","import { CommonModule } from '@angular/common';\nimport {\n\tbooleanAttribute,\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tcontentChildren,\n\teffect,\n\tElementRef,\n\tforwardRef,\n\tinject,\n\tInjectionToken,\n\tinput,\n\tOnDestroy,\n\tOnInit,\n\tSignal,\n\tsignal,\n\tviewChild,\n\tViewEncapsulation,\n\tWritableSignal,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { createEmptyHistoryState, registerHistory } from '@lexical/history';\nimport { $canShowPlaceholderCurry, $isRootTextContentEmpty } from '@lexical/text';\nimport { mergeRegister } from '@lexical/utils';\nimport { FormFieldComponent, InputDirective, ɵPresentationDisplayDefaultDirective } from '@lucca-front/ng/form-field';\nimport { $getRoot, createEditor, Klass, LexicalEditor, LexicalNode, LexicalNodeReplacement, UpdateListenerPayload } from 'lexical';\nimport { RICH_TEXT_FORMATTER, RichTextFormatter } from './formatters';\n\nexport const INITIAL_UPDATE_TAG = 'initial-update';\n// TODO replace by lexical import when upgrade lexical\nexport const SKIP_DOM_SELECTION_TAG = 'skip-dom-selection';\n\nexport interface RichTextPluginComponent {\n\tsetEditorInstance(editor: LexicalEditor): void;\n\tgetLexicalNodes?(): (Klass<LexicalNode> | LexicalNodeReplacement)[];\n\tsetDisabledState(isDisabled: boolean): void;\n\n\t//embedded plugins\n\tpluginComponents?: Signal<readonly RichTextPluginComponent[]>;\n\n\t// accessibility\n\t// Rich Text Input sets tabindex to -1 on all plugins except the first one\n\ttabindex?: WritableSignal<number>;\n\t// What to do in the plugin when it receives focus from the editor\n\tfocus?(): void;\n}\n\nexport const RICH_TEXT_PLUGIN_COMPONENT = new InjectionToken<RichTextPluginComponent>('RichTextPlugin');\n\n@Component({\n\tselector: 'lu-rich-text-input',\n\timports: [InputDirective, CommonModule, ɵPresentationDisplayDefaultDirective],\n\ttemplateUrl: './rich-text-input.component.html',\n\tstyleUrl: './rich-text-input.component.scss',\n\tencapsulation: ViewEncapsulation.None,\n\tproviders: [\n\t\t{\n\t\t\tprovide: NG_VALUE_ACCESSOR,\n\t\t\tuseExisting: forwardRef(() => RichTextInputComponent),\n\t\t\tmulti: true,\n\t\t},\n\t],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class RichTextInputComponent implements OnInit, OnDestroy, ControlValueAccessor {\n\treadonly #richTextFormatter = inject<RichTextFormatter>(RICH_TEXT_FORMATTER);\n\treadonly #formField = inject(FormFieldComponent, { optional: true });\n\n\treadonly placeholder = input<string>('');\n\treadonly disableSpellcheck = input(false, { transform: booleanAttribute });\n\treadonly autoResize = input(false, { transform: booleanAttribute });\n\treadonly hideToolbar = input(false, { transform: booleanAttribute });\n\n\treadonly content = viewChild<string, ElementRef<HTMLElement>>('content', {\n\t\tread: ElementRef,\n\t});\n\treadonly contentPresentation = viewChild<string, ElementRef<HTMLElement>>('contentPresentation', {\n\t\tread: ElementRef,\n\t});\n\treadonly pluginComponents = contentChildren(RICH_TEXT_PLUGIN_COMPONENT, { descendants: true });\n\n\treadonly currentCanShowPlaceholder = signal(false);\n\treadonly isDisabled = signal(false);\n\treadonly formFieldId = computed(() => this.#formField?.id());\n\n\treadonly #customNodes = computed(() =>\n\t\tthis.pluginComponents()\n\t\t\t.map((c) => c.getLexicalNodes?.() ?? [])\n\t\t\t.flat(),\n\t);\n\treadonly #allPlugins = computed(() => this.#flattenPlugins(this.pluginComponents()));\n\treadonly #isTouched = signal(false);\n\n\t#onChange?: (markdown: string | null) => void;\n\t#onTouch?: () => void;\n\t#cleanup?: () => void;\n\t#focusedPlugin: number = 0;\n\t#editor?: LexicalEditor;\n\n\tconstructor() {\n\t\teffect(() => {\n\t\t\tif (this.#formField?.presentation() && this.contentPresentation()) {\n\t\t\t\tthis.#editor?.setRootElement(this.contentPresentation()?.nativeElement);\n\t\t\t\tthis.#editor?.setEditable(false);\n\t\t\t} else if (this.content()) {\n\t\t\t\tthis.#editor?.setRootElement(this.content()?.nativeElement);\n\t\t\t\tthis.#editor?.setEditable(true);\n\t\t\t}\n\t\t});\n\t}\n\n\tngOnInit(): void {\n\t\tthis.#editor = createEditor({\n\t\t\ttheme: {\n\t\t\t\ttext: {\n\t\t\t\t\tstrikethrough: 'pr-u-textDecorationLineThrough',\n\t\t\t\t\tbold: 'pr-u-fontWeightBold',\n\t\t\t\t\titalic: 'pr-u-fontStyleItalic',\n\t\t\t\t\tunderline: 'pr-u-textDecorationUnderline',\n\t\t\t\t},\n\t\t\t},\n\t\t\tnodes: [...this.#customNodes()],\n\t\t});\n\n\t\tthis.#cleanup = mergeRegister(\n\t\t\tthis.#richTextFormatter.registerTextPlugin(this.#editor),\n\t\t\tregisterHistory(this.#editor, createEmptyHistoryState(), 300),\n\t\t\tthis.#editor.registerUpdateListener((payload) => this.#onEditorUpdate(payload)),\n\t\t);\n\n\t\tthis.pluginComponents().forEach((plugin) => plugin.setEditorInstance(this.#editor));\n\n\t\tif (this.#allPlugins().length > 0) {\n\t\t\tthis.#allPlugins()[this.#focusedPlugin].tabindex?.set(0);\n\t\t}\n\t}\n\n\tngOnDestroy(): void {\n\t\tthis.#cleanup?.();\n\t}\n\n\twriteValue(value: string | null): void {\n\t\tconst updateTags = [SKIP_DOM_SELECTION_TAG, INITIAL_UPDATE_TAG];\n\t\tif (value) {\n\t\t\tthis.#editor?.update(\n\t\t\t\t() => {\n\t\t\t\t\tthis.#richTextFormatter.parse(this.#editor, value);\n\t\t\t\t},\n\t\t\t\t{ tag: updateTags },\n\t\t\t);\n\t\t} else if (!this.#editor?.getEditorState().isEmpty()) {\n\t\t\tthis.#editor?.update(\n\t\t\t\t() => {\n\t\t\t\t\tconst root = $getRoot();\n\t\t\t\t\troot.clear();\n\t\t\t\t},\n\t\t\t\t{ tag: updateTags },\n\t\t\t);\n\t\t}\n\t}\n\n\tregisterOnChange(onChange: (markdown: string | null) => void): void {\n\t\tthis.#onChange = onChange;\n\t}\n\n\tregisterOnTouched(onTouch: () => void): void {\n\t\tthis.#onTouch = onTouch;\n\t}\n\n\tsetDisabledState(isDisabled: boolean): void {\n\t\tthis.#editor?.setEditable(!isDisabled);\n\t\tthis.isDisabled.set(isDisabled);\n\t\tthis.pluginComponents().forEach((c) => c.setDisabledState(isDisabled));\n\t}\n\n\tfocusSiblingPlugin(event: Event, direction: -1 | 1) {\n\t\tevent.preventDefault();\n\t\tconst plugins = this.#allPlugins();\n\n\t\tconst nextFocusedPlugin = this.#focusedPlugin + direction < 0 ? plugins.length - 1 : (this.#focusedPlugin + direction) % plugins.length;\n\t\tif (plugins[nextFocusedPlugin].tabindex()) {\n\t\t\tplugins[this.#focusedPlugin].tabindex?.set(-1);\n\t\t\tplugins[nextFocusedPlugin].tabindex?.set(0);\n\t\t}\n\t\tthis.#focusedPlugin = nextFocusedPlugin;\n\t\tplugins[this.#focusedPlugin].focus();\n\t}\n\n\tfocus() {\n\t\tthis.content()?.nativeElement.focus();\n\t}\n\n\ttouch() {\n\t\tthis.#isTouched.set(true);\n\t\tthis.#onTouch?.();\n\t}\n\n\t#flattenPlugins(plugins: readonly RichTextPluginComponent[]): RichTextPluginComponent[] {\n\t\treturn plugins.flatMap((p) => {\n\t\t\tif (p.pluginComponents) {\n\t\t\t\treturn this.#flattenPlugins(p.pluginComponents());\n\t\t\t} else {\n\t\t\t\treturn p;\n\t\t\t}\n\t\t});\n\t}\n\n\t#onEditorUpdate({ tags, dirtyElements }: UpdateListenerPayload) {\n\t\tconst isComposing = this.#editor?.isComposing();\n\t\tif (!tags.has(INITIAL_UPDATE_TAG) && dirtyElements.size) {\n\t\t\tthis.#editor?.read(() => {\n\t\t\t\tlet result = '';\n\t\t\t\t// ignore empty nodes\n\t\t\t\tif (!$isRootTextContentEmpty(isComposing, false)) {\n\t\t\t\t\tresult = this.#richTextFormatter.format(this.#editor);\n\t\t\t\t}\n\t\t\t\tthis.touch();\n\t\t\t\tthis.#onChange?.(result);\n\t\t\t});\n\t\t}\n\t\tconst currentCanShowPlaceholder = this.#editor?.getEditorState().read($canShowPlaceholderCurry(isComposing));\n\t\tthis.currentCanShowPlaceholder.set(currentCanShowPlaceholder);\n\t}\n}\n","<div class=\"richTextField\" [class.is-disabled]=\"isDisabled()\" [class.mod-autoResize]=\"autoResize()\">\n\t<div\n\t\t#content\n\t\tluInput\n\t\tclass=\"richTextField-content textFlow\"\n\t\trole=\"textbox\"\n\t\t[attr.contenteditable]=\"!isDisabled()\"\n\t\t[attr.aria-disabled]=\"isDisabled()\"\n\t\t[attr.aria-placeholder]=\"currentCanShowPlaceholder() ? placeholder() : null\"\n\t\t[attr.aria-labelledby]=\"formFieldId() + '-label'\"\n\t\t[attr.spellcheck]=\"!disableSpellcheck()\"\n\t\t(blur)=\"touch()\"\n\t></div>\n\t@if (currentCanShowPlaceholder()) {\n\t\t<div aria-hidden=\"true\" class=\"richTextField-content-placeholder\">{{ placeholder() }}</div>\n\t}\n\t<div\n\t\tclass=\"richTextField-toolbar\"\n\t\t[class.pr-u-displayNone]=\"hideToolbar()\"\n\t\t(keydown.arrowleft)=\"focusSiblingPlugin($event, -1)\"\n\t\t(keydown.arrowRight)=\"focusSiblingPlugin($event, 1)\"\n\t\trole=\"toolbar\"\n\t\t[attr.aria-labelledby]=\"formFieldId() + '-label'\"\n\t\t[attr.aria-controls]=\"formFieldId()\"\n\t>\n\t\t<ng-container *ngTemplateOutlet=\"toolsProjection\" />\n\t</div>\n</div>\n\n<ng-container *luPresentationDisplayDefault>\n\t<span class=\"pr-u-displayNone\">\n\t\t<ng-container *ngTemplateOutlet=\"toolsProjection\" />\n\t</span>\n\t<div #contentPresentation class=\"textFlow\"></div>\n</ng-container>\n\n<ng-template #toolsProjection>\n\t<ng-content />\n</ng-template>\n","export const Translations = {\n\t'nl-BE': {\n\t\tclearFormat: 'Opmaak wissen',\n\t\tlinksCancel: 'Annuleren',\n\t\tlinksDelete: 'Link verwijderen',\n\t\tlinksHref: 'Internetadres',\n\t\tlinksLabel: 'Link',\n\t\tlinksSubmit: 'Valideren',\n\t\tlistsNumberedLabel: 'Genummerde lijst',\n\t\tlistsBulletLabel: 'Lijst met opsommingstekens',\n\t\theadingsLabel: 'Niveau van de kop',\n\t\theadings0: 'Paragraaf',\n\t\theadings1: 'Kopniveau 1',\n\t\theadings2: 'Kopniveau 2',\n\t\theadings3: 'Kopniveau 3',\n\t\theadings4: 'Kopniveau 4',\n\t\theadings5: 'Kopniveau 5',\n\t\theadings6: 'Kopniveau 6',\n\t\tstylesItalic: 'Cursief',\n\t\tstylesBold: 'Vet',\n\t\tstylesUnderline: 'Onderstreept',\n\t\tstylesStrikethrough: 'Doorgehaald',\n\t\tlinksPlaceholder: 'https://www.nomDuSite.com',\n\t\tinsertTag: 'Invoegen:',\n\t},\n\tfr: {\n\t\tclearFormat: 'Effacer la mise en forme',\n\t\tlinksCancel: 'Annuler',\n\t\tlinksDelete: 'Supprimer le lien',\n\t\tlinksHref: 'Adresse web',\n\t\tlinksLabel: 'Lien',\n\t\tlinksSubmit: 'Valider',\n\t\tlistsNumberedLabel: 'Liste numérotée',\n\t\tlistsBulletLabel: 'Liste à puces',\n\t\theadingsLabel: 'Niveau de titre',\n\t\theadings0: 'Paragraphe',\n\t\theadings1: 'Titre de niveau 1',\n\t\theadings2: 'Titre de niveau 2',\n\t\theadings3: 'Titre de niveau 3',\n\t\theadings4: 'Titre de niveau 4',\n\t\theadings5: 'Titre de niveau 5',\n\t\theadings6: 'Titre de niveau 6',\n\t\tstylesItalic: 'Italique',\n\t\tstylesBold: 'Gras',\n\t\tstylesUnderline: 'Souligné',\n\t\tstylesStrikethrough: 'Barré',\n\t\tlinksPlaceholder: 'https://www.nomDuSite.com',\n\t\tinsertTag: 'Insérer :',\n\t},\n\ten: {\n\t\tclearFormat: 'Delete formatting',\n\t\tlinksCancel: 'Cancel',\n\t\tlinksDelete: 'Delete link',\n\t\tlinksHref: 'Web address',\n\t\tlinksLabel: 'Link',\n\t\tlinksSubmit: 'Confirm',\n\t\tlistsNumberedLabel: 'Numbered list',\n\t\tlistsBulletLabel: 'Bulleted list',\n\t\theadingsLabel: 'Title level',\n\t\theadings0: 'Paragraph',\n\t\theadings1: 'Level 1 title',\n\t\theadings2: 'Level 2 title',\n\t\theadings3: 'Level 3 title',\n\t\theadings4: 'Level 4 title',\n\t\theadings5: 'Level 5 title',\n\t\theadings6: 'Level 6 title',\n\t\tstylesItalic: 'Italic',\n\t\tstylesBold: 'Bold',\n\t\tstylesUnderline: 'Underline',\n\t\tstylesStrikethrough: 'Strikethrough',\n\t\tlinksPlaceholder: 'https://www.SiteName.com',\n\t\tinsertTag: 'Insert:',\n\t},\n\tde: {\n\t\tclearFormat: 'Formatierung löschen',\n\t\tlinksCancel: 'Stornieren',\n\t\tlinksDelete: 'Link löschen',\n\t\tlinksHref: 'Webadresse',\n\t\tlinksLabel: 'Link',\n\t\tlinksSubmit: 'Bestätigen',\n\t\tlistsNumberedLabel: 'Nummerierte Liste',\n\t\tlistsBulletLabel: 'Aufzählungsliste',\n\t\theadingsLabel: 'Ebene des Titels',\n\t\theadings0: 'Absatz',\n\t\theadings1: 'Titel der Ebene 1',\n\t\theadings2: 'Titel der Ebene 2',\n\t\theadings3: 'Titel der Ebene 3',\n\t\theadings4: 'Titel der Ebene 4',\n\t\theadings5: 'Titel der Ebene 5',\n\t\theadings6: 'Titel der Ebene 6',\n\t\tstylesItalic: 'Kursiv',\n\t\tstylesBold: 'Fettdruck',\n\t\tstylesUnderline: 'Unterstrichen',\n\t\tstylesStrikethrough: 'Durchgestrichen',\n\t\tlinksPlaceholder: 'https://www.NameDerSeite.com',\n\t\tinsertTag: 'Einfügen:',\n\t},\n\tit: {\n\t\tclearFormat: 'Cancellare la formattazione',\n\t\tlinksCancel: 'Annullare',\n\t\tlinksDelete: 'Eliminare il link',\n\t\tlinksHref: 'Indirizzo web',\n\t\tlinksLabel: 'Link',\n\t\tlinksSubmit: 'Convalidare',\n\t\tlistsNumberedLabel: 'Elenco numerato',\n\t\tlistsBulletLabel: 'Elenco puntato',\n\t\theadingsLabel: 'Livello di qualifica',\n\t\theadings0: 'Paragrafo',\n\t\theadings1: 'Qualifica di livello 1',\n\t\theadings2: 'Qualifica di livello 2',\n\t\theadings3: 'Qualifica di livello 3',\n\t\theadings4: 'Qualifica di livello 4',\n\t\theadings5: 'Qualifica di livello 5',\n\t\theadings6: 'Qualifica di livello 6',\n\t\tstylesItalic: 'Corsivo',\n\t\tstylesBold: 'Grassetto',\n\t\tstylesUnderline: 'Sottolineato',\n\t\tstylesStrikethrough: 'Barrato',\n\t\tlinksPlaceholder: 'https://www.nomDuSite.com',\n\t\tinsertTag: 'Inserire:',\n\t},\n\tnl: {\n\t\tclearFormat: 'Opmaak wissen',\n\t\tlinksCancel: 'Annuleren',\n\t\tlinksDelete: 'Link verwijderen',\n\t\tlinksHref: 'Internetadres',\n\t\tlinksLabel: 'Link',\n\t\tlinksSubmit: 'Valideren',\n\t\tlistsNumberedLabel: 'Genummerde lijst',\n\t\tlistsBulletLabel: 'Lijst met opsommingstekens',\n\t\theadingsLabel: 'Niveau van de kop',\n\t\theadings0: 'Paragraaf',\n\t\theadings1: 'Kopniveau 1',\n\t\theadings2: 'Kopniveau 2',\n\t\theadings3: 'Kopniveau 3',\n\t\theadings4: 'Kopniveau 4',\n\t\theadings5: 'Kopniveau 5',\n\t\theadings6: 'Kopniveau 6',\n\t\tstylesItalic: 'Cursief',\n\t\tstylesBold: 'Vet',\n\t\tstylesUnderline: 'Onderstreept',\n\t\tstylesStrikethrough: 'Doorgehaald',\n\t\tlinksPlaceholder: 'https://www.nomDuSite.com',\n\t\tinsertTag: 'Invoegen:',\n\t},\n\tes: {\n\t\tclearFormat: 'Borrar formato',\n\t\tlinksCancel: 'Cancelar',\n\t\tlinksDelete: 'Eliminar el enlace',\n\t\tlinksHref: 'Dirección web',\n\t\tlinksLabel: 'Enlace',\n\t\tlinksSubmit: 'Validar',\n\t\tlistsNumberedLabel: 'Lista numerada',\n\t\tlistsBulletLabel: 'Lista de viñetas',\n\t\theadingsLabel: 'Nivel del título',\n\t\theadings0: 'Apartado',\n\t\theadings1: 'Título de nivel 1',\n\t\theadings2: 'Título de nivel 2',\n\t\theadings3: 'Título de nivel 3',\n\t\theadings4: 'Título de nivel 4',\n\t\theadings5: 'Título de nivel 5',\n\t\theadings6: 'Título de nivel 6',\n\t\tstylesItalic: 'Cursiva',\n\t\tstylesBold: 'Negrita',\n\t\tstylesUnderline: 'Subrayado',\n\t\tstylesStrikethrough: 'Tachado',\n\t\tlinksPlaceholder: 'https://www.nomDuSite.com',\n\t\tinsertTag: 'Introducir:',\n\t},\n\tpt: {\n\t\tclearFormat: 'Eliminar a formatação',\n\t\tlinksCancel: 'Cancelar',\n\t\tlinksDelete: 'Eliminar a ligação',\n\t\tlinksHref: 'Endereço do sítio Web',\n\t\tlinksLabel: 'Ligação',\n\t\tlinksSubmit: 'Confirmar',\n\t\tlistsNumberedLabel: 'Lista numerada',\n\t\tlistsBulletLabel: 'Lista com marcadores',\n\t\theadingsLabel: 'Nível do título',\n\t\theadings0: 'Parágrafo',\n\t\theadings1: 'Qualificação de nível 1',\n\t\theadings2: 'Qualificação de nível 2',\n\t\theadings3: 'Qualificação de nível 3',\n\t\theadings4: 'Qualificação de nível 4',\n\t\theadings5: 'Qualificação de nível 5',\n\t\theadings6: 'Qualificação de nível 6',\n\t\tstylesItalic: 'Itálico',\n\t\tstylesBold: 'Gordura',\n\t\tstylesUnderline: 'Sublinhado',\n\t\tstylesStrikethrough: 'Barré',\n\t\tlinksPlaceholder: 'https://www.nomeDoSitio.com/',\n\t\tinsertTag: 'Inserir:',\n\t},\n};\n","import { InjectionToken } from '@angular/core';\nimport { LuTranslation } from '@lucca-front/ng/core';\nimport { Translations } from './translations';\n\nexport const LU_RICH_TEXT_INPUT_TRANSLATIONS = new InjectionToken('LuRichTextInputTranslations', {\n\tfactory: () => luRichTextInputTranslations,\n});\n\nexport interface ILuRichTextInputLabel {\n\tclearFormat: string;\n\n\tlinksCancel: string;\n\tlinksDelete: string;\n\tlinksHref: string;\n\tlinksLabel: string;\n\tlinksSubmit: string;\n\tlinksPlaceholder: string;\n\n\tlistsNumberedLabel: string;\n\tlistsBulletLabel: string;\n\n\theadingsLabel: string;\n\theadings0: string;\n\theadings1: string;\n\theadings2: string;\n\theadings3: string;\n\theadings4: string;\n\theadings5: string;\n\theadings6: string;\n\n\tstylesItalic: string;\n\tstylesBold: string;\n\tstylesUnderline: string;\n\tstylesStrikethrough: string;\n\n\tinsertTag: string;\n}\n\nexport const luRichTextInputTranslations: LuTranslation<ILuRichTextInputLabel> = Translations;\n","import { $createTextNode, ElementNode, LexicalNode, RangeSelection, TextNode } from 'lexical';\nimport { $isAtNodeEnd } from '@lexical/selection';\n\n/**\n * Cut a single text node into:\n * - A shorter text node\n * - A new node created by the replacer\n * - The remaining text in a new text node\n *\n * Returns the new node created by the replacer.\n */\nexport function replaceTextNodeContentPartWith<TNode extends LexicalNode>(textNode: TextNode, fromIndex: number, toIndex: number, replacer: (text: string) => TNode): TNode {\n\tconst safeFrom = Math.min(toIndex, fromIndex);\n\tconst safeTo = Math.max(toIndex, fromIndex);\n\tconst text = textNode.getTextContent();\n\tconst beforeText = text.slice(0, safeFrom);\n\tconst betweenText = text.slice(safeFrom, safeTo);\n\tconst afterText = text.slice(safeTo);\n\n\t// 1. Shorten the original text node\n\ttextNode.setTextContent(beforeText);\n\n\t// 2. Create the new node\n\tconst betweenNode = replacer(betweenText);\n\ttextNode.insertAfter(betweenNode);\n\n\t// 3. Add the remaining text\n\tconst afterNode = $createTextNode(afterText);\n\tafterNode.setStyle(textNode.getStyle());\n\tafterNode.setFormat(textNode.getFormat());\n\tbetweenNode.insertAfter(afterNode);\n\n\treturn betweenNode;\n}\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\nexport function getSelectedNode(selection: RangeSelection): TextNode | ElementNode {\n\tconst anchor = selection.anchor;\n\tconst focus = selection.focus;\n\tconst anchorNode = selection.anchor.getNode();\n\tconst focusNode = selection.focus.getNode();\n\tif (anchorNode === focusNode) {\n\t\treturn anchorNode;\n\t}\n\tconst isBackward = selection.isBackward();\n\tif (isBackward) {\n\t\treturn $isAtNodeEnd(focus) ? anchorNode : focusNode;\n\t} else {\n\t\treturn $isAtNodeEnd(anchor) ? anchorNode : focusNode;\n\t}\n}\n","import { $createParagraphNode, $createTextNode, $getSelection, $isRangeSelection, $isTextNode, COMMAND_PRIORITY_NORMAL, createCommand, LexicalEditor } from 'lexical';\nimport { $setBlocksType } from '@lexical/selection';\nimport { replaceTextNodeContentPartWith } from '../../utils';\n\nexport const CLEAR_FORMAT = createCommand<void>('CLEAR_FORMAT');\n\nexport function registerClearFormat(editor: LexicalEditor) {\n\treturn editor.registerCommand(\n\t\tCLEAR_FORMAT,\n\t\t() => {\n\t\t\teditor.update(() => {\n\t\t\t\tconst selection = $getSelection();\n\n\t\t\t\tif ($isRangeSelection(selection)) {\n\t\t\t\t\tconst { anchor, focus } = selection;\n\n\t\t\t\t\tselection.getNodes().forEach((node) => {\n\t\t\t\t\t\tif ($isTextNode(node)) {\n\t\t\t\t\t\t\t// use selection offsets if within current node\n\t\t\t\t\t\t\tconst start = node.getKey() === anchor.key ? anchor.offset : 0;\n\t\t\t\t\t\t\tconst end = node.getKey() === focus.key ? focus.offset : node.getTextContent().length;\n\t\t\t\t\t\t\tif (start === end) {\n\t\t\t\t\t\t\t\tnode.setFormat(0);\n\t\t\t\t\t\t\t\tnode.setStyle('');\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\treplaceTextNodeContentPartWith(node, start, end, (text) => $createTextNode(text));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\t$setBlocksType(selection, () => $createParagraphNode());\n\t\t\t});\n\n\t\t\treturn true;\n\t\t},\n\t\tCOMMAND_PRIORITY_NORMAL,\n\t);\n}\n","import { ChangeDetectionStrategy, Component, ElementRef, forwardRef, input, OnDestroy, signal, viewChild } from '@angular/core';\nimport { ButtonComponent } from '@lucca-front/ng/button';\nimport { intlInputOptions } from '@lucca-front/ng/core';\nimport { IconComponent } from '@lucca-front/ng/icon';\nimport { LuTooltipTriggerDirective } from '@lucca-front/ng/tooltip';\nimport { LexicalEditor } from 'lexical';\nimport { RICH_TEXT_PLUGIN_COMPONENT, RichTextPluginComponent } from '../../rich-text-input.component';\nimport { LU_RICH_TEXT_INPUT_TRANSLATIONS } from '../../rich-text-input.translate';\nimport { CLEAR_FORMAT, registerClearFormat } from './clear-format.command';\n\n@Component({\n\tselector: 'lu-rich-text-plugin-clear-format',\n\ttemplateUrl: 'clear-format.component.html',\n\timports: [ButtonComponent, IconComponent, LuTooltipTriggerDirective],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\thost: {\n\t\tclass: 'richTextField-toolbar-col-group',\n\t},\n\tproviders: [\n\t\t{\n\t\t\tprovide: RICH_TEXT_PLUGIN_COMPONENT,\n\t\t\tuseExisting: forwardRef(() => ClearFormatComponent),\n\t\t},\n\t],\n})\nexport class ClearFormatComponent implements RichTextPluginComponent, OnDestroy {\n\t#editor?: LexicalEditor;\n\t#registeredCommands: () => void = () => {};\n\n\treadonly intl = input(...intlInputOptions(LU_RICH_TEXT_INPUT_TRANSLATIONS));\n\n\treadonly element = viewChild('element', { read: ElementRef<HTMLButtonElement> });\n\n\treadonly tabindex = signal<number>(-1);\n\treadonly isDisabled = signal(false);\n\n\tsetEditorInstance(editor: LexicalEditor) {\n\t\tthis.#editor = editor;\n\t\tthis.#registeredCommands = registerClearFormat(editor);\n\t}\n\n\tngOnDestroy() {\n\t\tthis.#registeredCommands();\n\t}\n\n\tdispatchCommand() {\n\t\tthis.#editor.dispatchCommand(CLEAR_FORMAT, undefined);\n\t}\n\n\tsetDisabledState(isDisabled: boolean) {\n\t\tthis.isDisabled.set(isDisabled);\n\t}\n\n\tfocus() {\n\t\t(this.element() as ElementRef<HTMLButtonElement>).nativeElement.focus();\n\t}\n}\n","<button\n\t#element\n\tluButton=\"ghost\"\n\ttype=\"button\"\n\tsize=\"S\"\n\t(click)=\"dispatchCommand()\"\n\t[luTooltip]=\"intl().clearFormat\"\n\tluTooltipOnlyForDisplay\n\t[attr.tabindex]=\"tabindex()\"\n\t[disabled]=\"isDisabled()\"\n\tclass=\"richTextField-toolbar-button\"\n>\n\t<lu-icon icon=\"formatClear\" [alt]=\"intl().clearFormat\" />\n</button>\n","import { $createParagraphNode, $getSelection, $isRangeSelection, COMMAND_PRIORITY_NORMAL, CommandPayloadType, createCommand, LexicalEditor, SELECTION_CHANGE_COMMAND } from 'lexical';\nimport { $setBlocksType } from '@lexical/selection';\nimport { $createHeadingNode, HeadingNode } from '@lexical/rich-text';\nimport { $getNearestNodeOfType } from '@lexical/utils';\nimport { getSelectedNode } from '../../utils';\n\nexport const FORMAT_HEADINGS = createCommand<'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' | 'paragraph'>('FORMAT_HEADINGS');\n\nexport function registerHeadings(editor: LexicalEditor) {\n\treturn editor.registerCommand(\n\t\tFORMAT_HEADINGS,\n\t\t(headingSize) => {\n\t\t\teditor.update(() => {\n\t\t\t\tconst selection = $getSelection();\n\t\t\t\t$setBlocksType(selection, () => {\n\t\t\t\t\tif (headingSize === 'paragraph') {\n\t\t\t\t\t\treturn $createParagraphNode();\n\t\t\t\t\t}\n\t\t\t\t\treturn $createHeadingNode(headingSize);\n\t\t\t\t});\n\t\t\t});\n\n\t\t\treturn true;\n\t\t},\n\t\tCOMMAND_PRIORITY_NORMAL,\n\t);\n}\n\nexport function registerHeadingsSelectionChange(editor: LexicalEditor, onselectionchange: (type: CommandPayloadType<typeof FORMAT_HEADINGS>) => void) {\n\treturn editor.registerCommand(\n\t\tSELECTION_CHANGE_COMMAND,\n\t\t() => {\n\t\t\tconst selection = $getSelection();\n\t\t\tif ($isRangeSelection(selection)) {\n\t\t\t\tconst node = getSelectedNode(selection);\n\t\t\t\tconst element = $getNearestNodeOfType(node, HeadingNode);\n\t\t\t\tconst type = element ? element.getTag() : 'paragraph';\n\t\t\t\tonselectionchange(type as CommandPayloadType<typeof FORMAT_HEADINGS>);\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\tCOMMAND_PRIORITY_NORMAL,\n\t);\n}\n","import { ChangeDetectionStrategy, Component, computed, DestroyRef, forwardRef, inject, input, OnDestroy, signal, viewChild } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { mergeRegister } from '@lexical/utils';\nimport { LuOptionDirective } from '@lucca-front/ng/core-select';\nimport { FormFieldComponent } from '@lucca-front/ng/form-field';\nimport { LuSimpleSelectInputComponent } from '@lucca-front/ng/simple-select';\nimport { CommandPayloadType, Klass, LexicalEditor, LexicalNode } from 'lexical';\nimport { filter } from 'rxjs';\nimport { RICH_TEXT_PLUGIN_COMPONENT, RichTextPluginComponent } from '../../rich-text-input.component';\n\nimport { HeadingNode } from '@lexical/rich-text';\nimport { intlInputOptions } from '@lucca-front/ng/core';\nimport { LU_RICH_TEXT_INPUT_TRANSLATIONS } from '../../rich-text-input.translate';\nimport { FORMAT_HEADINGS, registerHeadings, registerHeadingsSelectionChange } from './headings.command';\n\n@Component({\n\tselector: 'lu-rich-text-plugin-headings',\n\ttemplateUrl: './headings.component.html',\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [LuSimpleSelectInputComponent, FormFieldComponent, ReactiveFormsModule, LuOptionDirective],\n\thost: {\n\t\tclass: 'richTextField-toolbar-col-group',\n\t},\n\tproviders: [\n\t\t{\n\t\t\tprovide: RICH_TEXT_PLUGIN_COMPONENT,\n\t\t\tuseExisting: forwardRef(() => HeadingsComponent),\n\t\t},\n\t],\n})\nexport class HeadingsComponent implements OnDestroy, RichTextPluginComponent {\n\treadonly #destroyRef = inject(DestroyRef);\n\n\treadonly element = viewChild<LuSimpleSelectInputComponent<string>>('selectRef');\n\n\treadonly tabindex = signal<number>(-1);\n\treadonly maxHeadingLevel = input<1 | 2 | 3 | 4 | 5 | 6>(6);\n\treadonly headingOptions = computed<CommandPayloadType<typeof FORMAT_HEADINGS>[]>(\n\t\t() => Object.keys(this.headingLabels()).slice(0, this.maxHeadingLevel() + 1) as CommandPayloadType<typeof FORMAT_HEADINGS>[],\n\t);\n\n\treadonly intl = input(...intlInputOptions(LU_RICH_TEXT_INPUT_TRANSLATIONS));\n\treadonly headingLabels = computed<Record<CommandPayloadType<typeof FORMAT_HEADINGS>, [string, number]>>(() => ({\n\t\tparagraph: [this.intl().headings0, 0],\n\t\th1: [this.intl().headings1, 1],\n\t\th2: [this.intl().headings2, 2],\n\t\th3: [this.intl().headings3, 3],\n\t\th4: [this.intl().headings4, 4],\n\t\th5: [this.intl().headings5, 5],\n\t\th6: [this.intl().headings6, 6],\n\t}));\n\treadonly formControl = new FormControl<CommandPayloadType<typeof FORMAT_HEADINGS> | null>('paragraph');\n\n\t#registeredCommands: () => void = () => {};\n\n\tsetEditorInstance(editor: LexicalEditor): void {\n\t\tthis.#registeredCommands = mergeRegister(\n\t\t\tregisterHeadings(editor),\n\t\t\tregisterHeadingsSelectionChange(editor, (value) => this.formControl.setValue(value, { emitEvent: false })),\n\t\t);\n\t\tthis.formControl.valueChanges.pipe(takeUntilDestroyed(this.#destroyRef), filter(Boolean)).subscribe((heading) => editor.dispatchCommand(FORMAT_HEADINGS, heading));\n\t}\n\n\tgetLexicalNodes(): Klass<LexicalNode>[] {\n\t\treturn [HeadingNode];\n\t}\n\n\tngOnDestroy() {\n\t\tthis.#registeredCommands();\n\t}\n\n\tfocus() {\n\t\tthis.element().focusInput();\n\t}\n\n\tsetDisabledState(isDisabled: boolean) {\n\t\tif (isDisabled) {\n\t\t\tthis.formControl.disable();\n\t\t} else {\n\t\t\tthis.formControl.enable();\n\t\t}\n\t}\n}\n","<lu-form-field [label]=\"intl().headingsLabel\" size=\"S\" hiddenLabel class=\"mod-width20\">\n\t<lu-simple-select [options]=\"headingOptions()\" [formControl]=\"formControl\" #selectRef [inputTabindex]=\"tabindex()\">\n\t\t<ng-container *luOption=\"let heading; select: selectRef\">{{ headingLabels()[heading][0] }}</ng-container>\n\t</lu-simple-select>\n</lu-form-field>\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { FormControl, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { ButtonComponent } from '@lucca-front/ng/button';\nimport { intlInputOptions } from '@lucca-front/ng/core';\nimport { DialogComponent, DialogContentComponent, DialogDismissDirective, DialogFooterComponent, injectDialogData, injectDialogRef } from '@lucca-front/ng/dialog';\nimport { FormFieldComponent } from '@lucca-front/ng/form-field';\nimport { TextInputComponent } from '@lucca-front/ng/forms';\nimport { LU_RICH_TEXT_INPUT_TRANSLATIONS } from '../../../rich-text-input.translate';\n\n@Component({\n\tselector: 'lu-rich-text-plugin-link-dialog',\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\ttemplateUrl: 'link-dialog.component.html',\n\timports: [DialogComponent, DialogContentComponent, DialogFooterComponent, FormFieldComponent, TextInputComponent, ReactiveFormsModule, ButtonComponent, DialogDismissDirective],\n})\nexport class LinkDialogComponent {\n\tpublic readonly dialogData = injectDialogData<string>();\n\tpublic readonly dialogRef = injectDialogRef<string | undefined>();\n\n\tintl = input(...intlInputOptions(LU_RICH_TEXT_INPUT_TRANSLATIONS));\n\n\tpublic readonly formGroup = new FormGroup({\n\t\thref: new FormControl<string>(this.dialogData, Validators.required),\n\t});\n\n\tpublic save() {\n\t\tif (this.formGroup.invalid) {\n\t\t\tthis.formGroup.markAllAsTouched();\n\t\t\treturn;\n\t\t}\n\n\t\tthis.dialogRef.close(encodeURI(this.formGroup.controls.href.value.trim()));\n\t}\n\n\tpublic deleteLink() {\n\t\tthis.dialogRef.close(undefined);\n\t}\n}\n","<lu-dialog>\n\t<form class=\"dialog-form\" (submit)=\"save()\" [formGroup]=\"formGroup\">\n\t\t<lu-dialog-content>\n\t\t\t<lu-form-field [label]=\"intl().linksHref\">\n\t\t\t\t<lu-text-input formControlName=\"href\" type=\"url\" [placeholder]=\"intl().linksPlaceholder\" />\n\t\t\t</lu-form-field>\n\t\t</lu-dialog-content>\n\t\t<lu-dialog-footer>\n\t\t\t@if (dialogData) {\n\t\t\t\t<div class=\"footer-content\">\n\t\t\t\t\t<button type=\"button\" luButton=\"ghost\" delete (click)=\"deleteLink()\">{{ intl().linksDelete }}</button>\n\t\t\t\t</div>\n\t\t\t}\n\t\t\t<div class=\"footer-actions\">\n\t\t\t\t<button type=\"submit\" luButton>{{ intl().linksSubmit }}</button>\n\t\t\t\t<button type=\"button\" luButton=\"ghost\" luDialogDismiss>{{ intl().linksCancel }}</button>\n\t\t\t</div>\n\t\t</lu-dialog-footer>\n\t</form>\n</lu-dialog>\n","import { $createLinkNode, $isLinkNode, $toggleLink, AutoLinkNode, LinkNode } from '@lexical/link';\nimport { $getNearestNodeOfType } from '@lexical/utils';\nimport { $getSelection, $isRangeSelection, COMMAND_PRIORITY_NORMAL, createCommand, LexicalEditor, SELECTION_CHANGE_COMMAND } from 'lexical';\nimport { getSelectedNode } from '../../utils';\n\nexport const FORMAT_LINK = createCommand<string | undefined>('FORMAT_LINK');\n\nexport function registerLink(editor: LexicalEditor) {\n\treturn editor.registerCommand(\n\t\tFORMAT_LINK,\n\t\t(href) => {\n\t\t\teditor.update(() => {\n\t\t\t\tconst selection = $getSelection();\n\t\t\t\tif ($isRangeSelection(selection)) {\n\t\t\t\t\tconst node = getSelectedNode(selection);\n\t\t\t\t\tconst parent = $getNearestNodeOfType(node, LinkNode) || $getNearestNodeOfType(node, AutoLinkNode);\n\t\t\t\t\tif (parent) {\n\t\t\t\t\t\tif (href) {\n\t\t\t\t\t\t\tconst linkNode = $createLinkNode(href, {\n\t\t\t\t\t\t\t\trel: parent.__rel,\n\t\t\t\t\t\t\t\ttarget: parent.__target,\n\t\t\t\t\t\t\t\ttitle: parent.__title,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tparent.replace(linkNode, true);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t$toggleLink(null);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (href) {\n\t\t\t\t\t\t$toggleLink(href);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn true;\n\t\t},\n\t\tCOMMAND_PRIORITY_NORMAL,\n\t);\n}\n\nexport function registerLinkSelectionChange(editor: LexicalEditor, onselectionchange: (isLink: boolean) => void) {\n\treturn editor.registerCommand(\n\t\tSELECTION_CHANGE_COMMAND,\n\t\t() => {\n\t\t\tconst selection = $getSelection();\n\t\t\tif ($isRangeSelection(selection)) {\n\t\t\t\tconst node = getSelectedNode(selection);\n\t\t\t\tconst parent = node.getParent();\n\t\t\t\tonselectionchange($isLinkNode(node) || $isLinkNode(parent));\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\tCOMMAND_PRIORITY_NORMAL,\n\t);\n}\n","import { TemplateRef, ViewContainerRef } from '@angular/core';\nimport { AutoLinkNode } from '@lexical/link';\nimport { DOMExportOutput, LexicalEditor } from 'lexical';\n\nexport class PopoverAutoLinkNode extends AutoLinkNode {\n\tstatic #viewContainerRef: ViewContainerRef;\n\tstatic #templateRef: TemplateRef<{ href?: string; title?: string; target?: string }>;\n\n\tstatic setViewContainerRef(vcr: ViewContainerRef): void {\n\t\tPopoverAutoLinkNode.#viewContainerRef = vcr;\n\t}\n\tstatic setTemplateRef(vcr: TemplateRef<unknown>): void {\n\t\tPopoverAutoLinkNode.#templateRef = vcr;\n\t}\n\n\tstatic override getType(): string {\n\t\treturn 'popoverautolink';\n\t}\n\n\toverride createDOM() {\n\t\tif (PopoverAutoLinkNode.#viewContainerRef && PopoverAutoLinkNode.#templateRef) {\n\t\t\t// Create the view\n\t\t\tconst view = PopoverAutoLinkNode.#viewContainerRef.createEmbeddedView(PopoverAutoLinkNode.#templateRef, {\n\t\t\t\thref: this.sanitizeUrl(this.__url),\n\t\t\t\ttitle: this.__title,\n\t\t\t\ttarget: this.__target,\n\t\t\t});\n\n\t\t\t// Return the template DOM element\n\t\t\treturn view.rootNodes[0] as HTMLElement;\n\t\t}\n\t\tthrow new Error('ViewContainerRef is not set for PopoverAutoLinkNode. Ensure it is initialized before creating PopoverAutoLinkNode instances.');\n\t}\n\n\toverride exportDOM(editor: LexicalEditor): DOMExportOutput {\n\t\treturn {\n\t\t\telement: super.createDOM(editor._config),\n\t\t};\n\t}\n\n\tstatic override clone(node: PopoverAutoLinkNode): PopoverAutoLinkNode {\n\t\treturn new PopoverAutoLinkNode(node.__url, { target: node.__target, rel: node.__rel, title: node.__title }, node.__key);\n\t}\n}\n","import { TemplateRef, ViewContainerRef } from '@angular/core';\nimport { LinkNode } from '@lexical/link';\nimport { DOMExportOutput, LexicalEditor } from 'lexical';\n\nexport class PopoverLinkNode extends LinkNode {\n\tstatic #viewContainerRef: ViewContainerRef;\n\tstatic #templateRef: TemplateRef<{ href?: string; title?: string; target?: string }>;\n\n\tstatic setViewContainerRef(vcr: ViewContainerRef): void {\n\t\tPopoverLinkNode.#viewContainerRef = vcr;\n\t}\n\tstatic setTemplateRef(vcr: TemplateRef<unknown>): void {\n\t\tPopoverLinkNode.#templateRef = vcr;\n\t}\n\n\tstatic override getType(): string {\n\t\treturn 'popoverlink';\n\t}\n\n\toverride createDOM() {\n\t\tif (PopoverLinkNode.#viewContainerRef && PopoverLinkNode.#templateRef) {\n\t\t\t// Create the view\n\t\t\tconst view = PopoverLinkNode.#viewContainerRef.createEmbeddedView(PopoverLinkNode.#templateRef, {\n\t\t\t\thref: this.sanitizeUrl(this.__url),\n\t\t\t\ttitle: this.__title,\n\t\t\t\ttarget: this.__target,\n\t\t\t});\n\n\t\t\t// Return the template DOM element\n\t\t\treturn view.rootNodes[0] as HTMLElement;\n\t\t}\n\t\tthrow new Error('ViewContainerRef is not set for PopoverLinkNode. Ensure it is initialized before creating PopoverLinkNode instances.');\n\t}\n\n\toverride exportDOM(editor: LexicalEditor): DOMExportOutput {\n\t\treturn {\n\t\t\telement: super.createDOM(editor._config),\n\t\t};\n\t}\n\n\tstatic override clone(node: PopoverLinkNode): PopoverLinkNode {\n\t\treturn new PopoverLinkNode(node.__url, { target: node.__target, rel: node.__rel, title: node.__title }, node.__key);\n\t}\n}\n","import { AfterViewInit, ChangeDetectionStrategy, Component, ElementRef, forwardRef, inject, input, OnDestroy, signal, TemplateRef, viewChild, ViewContainerRef } from '@angular/core';\nimport { AutoLinkNode, createLinkMatcherWithRegExp, LinkNode, registerAutoLink } from '@lexical/link';\nimport { $getNearestNodeOfType, mergeRegister } from '@lexical/utils';\nimport { ButtonComponent } from '@lucca-front/ng/button';\nimport { intlInputOptions } from '@lucca-front/ng/core';\nimport { LuDialogService, provideLuDialog } from '@lucca-front/ng/dialog';\nimport { IconComponent } from '@lucca-front/ng/icon';\nimport { LinkComponent as LuLinkComponent } from '@lucca-front/ng/link';\nimport { PopoverDirective } from '@lucca-front/ng/popover2';\nimport { LuTooltipTriggerDirective } from '@lucca-front/ng/tooltip';\nimport { $getSelection, $isRangeSelection, LexicalEditor, SELECTION_CHANGE_COMMAND } from 'lexical';\nimport { RICH_TEXT_PLUGIN_COMPONENT, RichTextPluginComponent } from '../../rich-text-input.component';\nimport { LU_RICH_TEXT_INPUT_TRANSLATIONS } from '../../rich-text-input.translate';\nimport { getSelectedNode } from '../../utils';\nimport { LinkDialogComponent } from './link-dialog';\nimport { FORMAT_LINK, registerLink, registerLinkSelectionChange } from './link.command';\nimport { PopoverAutoLinkNode } from './popover-autolink-node';\nimport { PopoverLinkNode } from './popover-link-node';\n\nconst URL_REGEX = /https?:\\/\\/(?:www\\.)?[-a-zA-Z0-9@:%._+~#=]{1,256}\\.[a-zA-Z0-9()]{1,6}\\b(?:[-a-zA-Z0-9()@:%_+.~#?&/=;,[\\]]*)/;\nconst EMAIL_REGEX = /(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))/;\n\n@Component({\n\tselector: 'lu-rich-text-plugin-link',\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\ttemplateUrl: './link.component.html',\n\tstyleUrl: 'link.component.scss',\n\timports: [ButtonComponent, IconComponent, LuTooltipTriggerDirective, PopoverDirective, LuLinkComponent],\n\thost: {\n\t\tclass: 'richTextField-toolbar-col-group',\n\t},\n\tproviders: [\n\t\tprovideLuDialog(),\n\t\t{\n\t\t\tprovide: RICH_TEXT_PLUGIN_COMPONENT,\n\t\t\tuseExisting: forwardRef(() => LinkComponent),\n\t\t},\n\t],\n})\nexport class LinkComponent implements OnDestroy, AfterViewInit, RichTextPluginComponent {\n\treadonly #luDialogService = inject(LuDialogService);\n\treadonly #viewContainerRef = inject(ViewContainerRef);\n\n\treadonly linkNodeTemplate = viewChild.required('linkNodeTemplate', { read: TemplateRef });\n\treadonly element = viewChild.required('element', { read: ElementRef<HTMLButtonElement> });\n\n\treadonly tabindex = signal<number>(-1);\n\treadonly active = signal(false);\n\treadonly isDisabled = signal(false);\n\n\t#editor?: LexicalEditor;\n\tintl = input(...intlInputOptions(LU_RICH_TEXT_INPUT_TRANSLATIONS));\n\n\t#registeredCommands: () => void = () => {};\n\n\tconstructor() {\n\t\tPopoverLinkNode.setViewContainerRef(this.#viewContainerRef);\n\t\tPopoverAutoLinkNode.setViewContainerRef(this.#viewContainerRef);\n\t}\n\n\tngAfterViewInit() {\n\t\tPopoverLinkNode.setTemplateRef(this.linkNodeTemplate());\n\t\tPopoverAutoLinkNode.setTemplateRef(this.linkNodeTemplate());\n\t}\n\n\tsetEditorInstance(editor: LexicalEditor) {\n\t\tthis.#editor = editor;\n\t\tthis.#registeredCommands = mergeRegister(\n\t\t\tregisterLink(editor),\n\t\t\tregisterLinkSelectionChange(editor, (isLink) => this.active.set(isLink)),\n\t\t\tregisterAutoLink(editor, {\n\t\t\t\tmatchers: [createLinkMatcherWithRegExp(URL_REGEX, (text) => (text.startsWith('http') ? text : `https://${text}`)), createLinkMatcherWithRegExp(EMAIL_REGEX, (text) => `mailto:${text}`)],\n\t\t\t\tchangeHandlers: [],\n\t\t\t}),\n\t\t);\n\t}\n\n\tgetLexicalNodes() {\n\t\treturn [\n\t\t\tPopoverLinkNode,\n\t\t\tPopoverAutoLinkNode,\n\t\t\t{\n\t\t\t\treplace: LinkNode,\n\t\t\t\twith: (node: LinkNode) =>\n\t\t\t\t\tnew PopoverLinkNode(node.getURL(), {\n\t\t\t\t\t\trel: node.getRel(),\n\t\t\t\t\t\ttarget: node.getTarget(),\n\t\t\t\t\t\ttitle: node.getTitle(),\n\t\t\t\t\t}),\n\t\t\t\twithKlass: PopoverLinkNode,\n\t\t\t},\n\t\t\t{\n\t\t\t\treplace: AutoLinkNode,\n\t\t\t\twith: (node: AutoLinkNode) =>\n\t\t\t\t\tnew PopoverAutoLinkNode(node.getURL(), {\n\t\t\t\t\t\trel: node.getRel(),\n\t\t\t\t\t\ttarget: node.getTarget(),\n\t\t\t\t\t\ttitle: node.getTitle(),\n\t\t\t\t\t}),\n\t\t\t\twithKlass: PopoverAutoLinkNode,\n\t\t\t},\n\t\t];\n\t}\n\n\tngOnDestroy() {\n\t\tthis.#registeredCommands();\n\t}\n\n\tdispatchCommand() {\n\t\tthis.#editor?.read(() => {\n\t\t\tlet url = '';\n\t\t\tconst selection = $getSelection();\n\t\t\tif ($isRangeSelection(selection)) {\n\t\t\t\tconst node = getSelectedNode(selection);\n\t\t\t\tconst parent = $getNearestNodeOfType(node, LinkNode);\n\t\t\t\tif (parent) {\n\t\t\t\t\turl = parent.getURL();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.#luDialogService\n\t\t\t\t.open({\n\t\t\t\t\tcontent: LinkDialogComponent,\n\t\t\t\t\tsize: 'S',\n\t\t\t\t\tdata: url,\n\t\t\t\t})\n\t\t\t\t.result$.subscribe((href) => {\n\t\t\t\t\tlet newHref = href;\n\t\t\t\t\tif (href && !href.startsWith('http')) {\n\t\t\t\t\t\tnewHref = `https://${href}`;\n\t\t\t\t\t}\n\t\t\t\t\tthis.#editor.dispatchCommand(FORMAT_LINK, newHref);\n\t\t\t\t\tthis.#editor.dispatchCommand(SELECTION_CHANGE_COMMAND, undefined);\n\t\t\t\t});\n\t\t});\n\t}\n\n\tdeleteLink() {\n\t\tthis.#editor?.dispatchCommand(FORMAT_LINK, undefined);\n\t\tthis.#editor?.dispatchCommand(SELECTION_CHANGE_COMMAND, undefined);\n\t}\n\n\tfocus() {\n\t\t(this.element() as ElementRef<HTMLButtonElement>).nativeElement.focus();\n\t}\n\n\tsetDisabledState(isDisabled: boolean): void {\n\t\tthis.isDisabled.set(isDisabled);\n\t}\n}\n","<button\n\t#element\n\tluButton=\"ghost\"\n\ttype=\"button\"\n\tsize=\"S\"\n\t(click)=\"dispatchCommand()\"\n\t[luTooltip]=\"intl().linksLabel\"\n\t[attr.aria-pressed]=\"active()\"\n\tluTooltipOnlyForDisplay\n\t[attr.tabindex]=\"tabindex()\"\n\t[disabled]=\"isDisabled()\"\n\tclass=\"richTextField-toolbar-button\"\n>\n\t<lu-icon icon=\"formatLink\" [alt]=\"intl().linksLabel\" />\n</button>\n\n<ng-template #linkNodeTemplate let-href=\"href\" let-title=\"title\" let-target=\"target\">\n\t<a [href]=\"href\" [title]=\"title\" [target]=\"target\" [luPopover2]=\"popover\" #trigger=\"luPopover2\"></a>\n\t<ng-template #popover>\n\t\t<div class=\"popover-contentOptional linkPopover\">\n\t\t\t<a [href]=\"href\" luLink external class=\"pr-u-ellipsis\">{{ href }}</a>\n\t\t\t<button\n\t\t\t\ttype=\"button\"\n\t\t\t\tluButton=\"ghost\"\n\t\t\t\tsize=\"XS\"\n\t\t\t\t(click)=\"trigger.close(); dispatchCommand()\"\n\t\t\t\t[luTooltip]=\"intl().linksLabel\"\n\t\t\t\tluTooltipOnlyForDisplay\n\t\t\t>\n\t\t\t\t<lu-icon icon=\"officePen\" [alt]=\"intl().linksLabel\" />\n\t\t\t</button>\n\t\t\t<button\n\t\t\t\ttype=\"button\"\n\t\t\t\tluButton=\"ghost\"\n\t\t\t\tsize=\"XS\"\n\t\t\t\t(click)=\"trigger.close(); deleteLink()\"\n\t\t\t\t[luTooltip]=\"intl().linksDelete\"\n\t\t\t\tluTooltipOnlyForDisplay\n\t\t\t>\n\t\t\t\t<lu-icon icon=\"trashDelete\" [alt]=\"intl().linksDelete\" />\n\t\t\t</button>\n\t\t</div>\n\t</ng-template>\n</ng-template>\n","import { $getSelection, $isRangeSelection, COMMAND_PRIORITY_NORMAL, createCommand, INSERT_PARAGRAPH_COMMAND, LexicalEditor, SELECTION_CHANGE_COMMAND } from 'lexical';\nimport { $handleListInsertParagraph, $insertList, $removeList, ListNode, ListType } from '@lexical/list';\nimport { $getNearestNodeOfType, mergeRegister } from '@lexical/utils';\nimport { getSelectedNode } from '../../utils';\n\nexport const FORMAT_LIST = createCommand<ListType>('FORMAT_LIST');\n\nexport function registerListsGlobal(editor: LexicalEditor) {\n\treturn mergeRegister(\n\t\teditor.registerCommand(\n\t\t\tFORMAT_LIST,\n\t\t\t(type) => {\n\t\t\t\tconst selection = $getSelection();\n\t\t\t\tif ($isRangeSelection(selection)) {\n\t\t\t\t\tconst node = getSelectedNode(selection);\n\t\t\t\t\tconst parent = $getNearestNodeOfType(node, ListNode);\n\t\t\t\t\tif (parent && parent.getListType() === type) {\n\t\t\t\t\t\t$removeList();\n\t\t\t\t\t} else if (parent) {\n\t\t\t\t\t\tparent.setListType(type);\n\t\t\t\t\t\teditor.dispatchCommand(SELECTION_CHANGE_COMMAND, undefined);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$insertList(type);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t},\n\t\t\tCOMMAND_PRIORITY_NORMAL,\n\t\t),\n\t\t// end list with enter key on an empty list item node\n\t\teditor.registerCommand(INSERT_PARAGRAPH_COMMAND, () => $handleListInsertParagraph(), COMMAND_PRIORITY_NORMAL),\n\t);\n}\n\nexport function registerListsSelectionChange(editor: LexicalEditor, type: ListType, onselectionchange: (isList: boolean) => void) {\n\treturn editor.registerCommand(\n\t\tSELECTION_CHANGE_COMMAND,\n\t\t() => {\n\t\t\tconst selection = $getSelection();\n\t\t\tif ($isRangeSelection(selection)) {\n\t\t\t\tconst node = getSelectedNode(selection);\n\t\t\t\tconst parent = $getNearestNodeOfType(node, ListNode);\n\t\t\t\tonselectionchange(Boolean(parent && parent.getListType() === type));\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\tCOMMAND_PRIORITY_NORMAL,\n\t);\n}\n","import { ChangeDetectionStrategy, Component, ElementRef, forwardRef, input, OnDestroy, signal, viewChild } from '@angular/core';\nimport { ListType } from '@lexical/list';\nimport { mergeRegister } from '@lexical/utils';\nimport { LuccaIcon } from '@lucca-front/icons';\nimport { ButtonComponent } from '@lucca-front/ng/button';\nimport { IconComponent } from '@lucca-front/ng/icon';\nimport { LuTooltipTriggerDirective } from '@lucca-front/ng/tooltip';\nimport { LexicalEditor } from 'lexical';\nimport { RICH_TEXT_PLUGIN_COMPONENT, RichTextPluginComponent } from '../../rich-text-input.component';\nimport { FORMAT_LIST, registerListsSelectionChange } from './list-format.command';\n\n@Component({\n\tselector: 'lu-rich-text-plugin-list',\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\ttemplateUrl: 'list-format.component.html',\n\timports: [ButtonComponent, IconComponent, LuTooltipTriggerDirective],\n\thost: {\n\t\tclass: 'richTextField-toolbar-col-group',\n\t},\n\tproviders: [\n\t\t{\n\t\t\tprovide: RICH_TEXT_PLUGIN_COMPONENT,\n\t\t\tuseExisting: forwardRef(() => ListFormatComponent),\n\t\t},\n\t],\n})\nexport class ListFormatComponent implements OnDestroy, RichTextPluginComponent {\n\tpublic format = input.required<ListType>();\n\tpublic icon = input.required<LuccaIcon>();\n\tpublic tooltip = input.required<string>();\n\n\tpublic element = viewChild('element', { read: ElementRef<HTMLButtonElement> });\n\n\tpublic tabindex = signal<number>(-1);\n\tpublic active = signal(false);\n\tpublic isDisabled = signal(false);\n\n\t#editor?: LexicalEditor;\n\n\t#registeredCommands: () => void = () => {};\n\n\tsetEditorInstance(editor: LexicalEditor): void {\n\t\tthis.#editor = editor;\n\t\tthis.#registeredCommands = mergeRegister(registerListsSelectionChange(editor, this.format(), (hasFormat) => this.active.set(hasFormat)));\n\t}\n\n\tngOnDestroy() {\n\t\tthis.#registeredCommands();\n\t}\n\n\tsetDisabledState(isDisabled: boolean) {\n\t\tthis.isDisabled.set(isDisabled);\n\t}\n\n\tdispatchCommand() {\n\t\tthis.#editor?.dispatchCommand(FORMAT_LIST, this.format());\n\t}\n\n\tfocus() {\n\t\t(this.element() as ElementRef<HTMLButtonElement>).nativeElement.focus();\n\t}\n}\n","<button\n\t#element\n\tluButton=\"ghost\"\n\ttype=\"button\"\n\tsize=\"S\"\n\t(click)=\"dispatchCommand()\"\n\t[luTooltip]=\"tooltip()\"\n\tluTooltipOnlyForDisplay\n\t[attr.aria-pressed]=\"active()\"\n\t[attr.tabindex]=\"tabindex()\"\n\t[disabled]=\"isDisabled()\"\n\tclass=\"richTextField-toolbar-button\"\n>\n\t<lu-icon [icon]=\"icon()\" [alt]=\"tooltip()\" />\n</button>\n","import { ChangeDetectionStrategy, Component, forwardRef, input, OnDestroy, viewChildren } from '@angular/core';\nimport { mergeRegister } from '@lexical/utils';\nimport { Klass, LexicalEditor, LexicalNode } from 'lexical';\nimport { RICH_TEXT_PLUGIN_COMPONENT, RichTextPluginComponent } from '../../rich-text-input.component';\nimport { registerListsGlobal } from './list-format.command';\n\nimport { ListItemNode, ListNode } from '@lexical/list';\nimport { intlInputOptions } from '@lucca-front/ng/core';\nimport { LU_RICH_TEXT_INPUT_TRANSLATIONS } from '../../rich-text-input.translate';\nimport { ListFormatComponent } from './list-format.component';\n\n@Component({\n\tselector: 'lu-rich-text-toolbar-list-style',\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\ttemplateUrl: `list-style-toolbar.component.html`,\n\thost: {\n\t\tclass: 'richTextField-toolbar-col-group',\n\t\trole: 'radiogroup',\n\t},\n\tproviders: [\n\t\t{\n\t\t\tprovide: RICH_TEXT_PLUGIN_COMPONENT,\n\t\t\tuseExisting: forwardRef(() => ListStyleToolbarComponent),\n\t\t},\n\t],\n\timports: [ListFormatComponent],\n})\nexport class ListStyleToolbarComponent implements OnDestroy, RichTextPluginComponent {\n\t#registeredCommands: () => void = () => {};\n\n\tpluginComponents = viewChildren(RICH_TEXT_PLUGIN_COMPONENT);\n\n\tintl = input(...intlInputOptions(LU_RICH_TEXT_INPUT_TRANSLATIONS));\n\n\tsetEditorInstance(editor: LexicalEditor): void {\n\t\tthis.pluginComponents().forEach((plugin) => plugin.setEditorInstance(editor));\n\t\tthis.#registeredCommands = mergeRegister(registerListsGlobal(editor));\n\t}\n\tgetLexicalNodes?(): Klass<LexicalNode>[] {\n\t\treturn [ListNode, ListItemNode];\n\t}\n\n\tsetDisabledState(isDisabled: boolean) {\n\t\tthis.pluginComponents().forEach((plugin) => plugin.setDisabledState(isDisabled));\n\t}\n\n\tngOnDestroy() {\n\t\tthis.#registeredCommands();\n\t}\n}\n","<lu-rich-text-plugin-list format=\"bullet\" [tooltip]=\"intl().listsBulletLabel\" icon=\"formatBulletedList\" />\n<lu-rich-text-plugin-list format=\"number\" [tooltip]=\"intl().listsNumberedLabel\" icon=\"formatNumberedList\" />\n","import {\n\t$createTextNode,\n\tCOMMAND_PRIORITY_NORMAL,\n\tDecoratorNode,\n\ttype DOMConversion,\n\ttype DOMConversionMap,\n\ttype DOMExportOutput,\n\ttype EditorConfig,\n\ttype LexicalEditor,\n\ttype LexicalNode,\n\tLexicalUpdateJSON,\n\ttype NodeKey,\n\tSerializedLexicalNode,\n\tSpread,\n\tTextNode,\n} from 'lexical';\n\nimport { ComponentRef, ViewContainerRef } from '@angular/core';\nimport { ChipComponent } from '@lucca-front/ng/chip';\n\nexport type SerializedTagNode = Spread<\n\t{\n\t\ttagKey?: string;\n\t\ttagDescription?: string;\n\t\tdisabled?: boolean;\n\t},\n\tSerializedLexicalNode\n>;\n\nexport class TagNode extends DecoratorNode<string> {\n\t#tagKey: string;\n\t#tagDescription?: string;\n\t#disabled: boolean;\n\t// Store the component reference on the node instance\n\t#componentRef?: ComponentRef<ChipComponent>;\n\tstatic #viewContainerRef: ViewContainerRef;\n\n\tstatic setViewContainerRef(vcr: ViewContainerRef): void {\n\t\tTagNode.#viewContainerRef = vcr;\n\t}\n\n\tconstructor(tagKey = '', tagDescription?: string, disabled = false, key?: NodeKey) {\n\t\tsuper(key);\n\t\tthis.#tagKey = tagKey;\n\t\tthis.#tagDescription = tagDescription;\n\t\tthis.#disabled = disabled;\n\t}\n\n\tisDisabled(): boolean {\n\t\treturn this.#disabled;\n\t}\n\n\tsetDisabled(disabled: boolean): this {\n\t\tconst self = this.getWritable();\n\t\tself.#disabled = disabled;\n\t\treturn self;\n\t}\n\n\tgetTagKey(): string {\n\t\treturn this.#tagKey;\n\t}\n\n\tsetTagKey(tagKey: string): this {\n\t\tconst self = this.getWritable();\n\t\tself.#tagKey = tagKey;\n\t\treturn self;\n\t}\n\n\tgetTagDescription(): string {\n\t\treturn this.#tagDescription;\n\t}\n\n\tsetTagDescription(description: string): this {\n\t\tconst self = this.getWritable();\n\t\tself.#tagDescription = description;\n\t\treturn self;\n\t}\n\n\tstatic override getType(): string {\n\t\treturn 'tag';\n\t}\n\n\tstatic override clone(node: TagNode): TagNode {\n\t\treturn new TagNode(node.#tagKey, node.#tagDescription, node.#disabled, node.__key);\n\t}\n\n\t/**\n\t * This method must be implemented but has no purpose outside of react\n\t */\n\toverride decorate(): string {\n\t\treturn this.getTextContent();\n\t}\n\n\toverride createDOM(_config: EditorConfig, editor: LexicalEditor): HTMLElement {\n\t\tif (TagNode.#viewContainerRef) {\n\t\t\tif (!editor.isEditable()) {\n\t\t\t\tthis.#componentRef?.destroy();\n\t\t\t\tconst span = document.createElement('span');\n\t\t\t\tspan.textContent = this.#tagDescription ?? this.#tagKey;\n\t\t\t\treturn span;\n\t\t\t}\n\t\t\t// Create the component\n\t\t\tthis.#componentRef = TagNode.#viewContainerRef.createComponent(ChipComponent);\n\n\t\t\t// Set inputs on the component instance\n\t\t\tthis.#componentRef.setInput('unkillable', false);\n\t\t\tthis.#componentRef.setInput('palette', 'product');\n\t\t\tthis.#componentRef.setInput('disabled', this.#disabled);\n\n\t\t\t// Get the component's DOM element\n\t\t\tconst componentElement = this.#componentRef.location.nativeElement as HTMLElement;\n\t\t\tconst textNode = document.createTextNode(this.#tagDescription ?? this.#tagKey);\n\t\t\tcomponentElement.insertBefore(textNode, componentElement.firstChild);\n\t\t\tcomponentElement.classList.add('mod-S');\n\t\t\tcomponentElement.classList.add('richTextField-content-chip');\n\n\t\t\t// Add click handler ONLY to the delete button, not the whole chip\n\t\t\tthis.#componentRef.instance.kill.subscribe(() => {\n\t\t\t\teditor.update(() => {\n\t\t\t\t\tthis.remove();\n\t\t\t\t});\n\t\t\t});\n\n\t\t\t// Return the component's DOM element\n\t\t\treturn componentElement;\n\t\t}\n\t\tthrow new Error('ViewContainerRef is not set for TagNode. Ensure it is initialized before creating TagNode instances.');\n\t}\n\n\toverride updateDOM(prevNode: TagNode, _dom: HTMLElement, _config: EditorConfig): boolean {\n\t\treturn this.#tagDescription !== prevNode.#tagDescription || this.#tagKey !== prevNode.#tagKey || this.#disabled !== prevNode.#disabled || this.#componentRef !== prevNode.#componentRef;\n\t}\n\n\toverride remove(preserveEmptyParent?: boolean): void {\n\t\tsuper.remove(preserveEmptyParent);\n\t\tthis.#componentRef?.destroy();\n\t}\n\n\toverride exportDOM(): DOMExportOutput {\n\t\tconst element = document.createTextNode(this.getTextContent());\n\t\treturn { element };\n\t}\n\n\tstatic override importDOM(): DOMConversionMap {\n\t\tconst importers = TextNode.importDOM();\n\t\treturn {\n\t\t\t...importers,\n\t\t\t'#text': (domNode: Node) => domConversionFunction(domNode),\n\t\t};\n\t}\n\n\tstatic override importJSON(serializedNode: SerializedTagNode): TagNode {\n\t\treturn $createTagNode().updateFromJSON(serializedNode);\n\t}\n\n\toverride updateFromJSON(serializedNode: LexicalUpdateJSON<SerializedTagNode>): this {\n\t\treturn super\n\t\t\t.updateFromJSON(serializedNode)\n\t\t\t.setTagDescription(serializedNode.tagDescription ?? '')\n\t\t\t.setTagKey(serializedNode.tagKey ?? '')\n\t\t\t.setDisabled(serializedNode.disabled ?? false);\n\t}\n\n\toverride exportJSON(): SerializedTagNode {\n\t\treturn {\n\t\t\t...super.exportJSON(),\n\t\t\t...{ tagDescription: this.#tagDescription, tagKey: this.#tagKey, disabled: this.#disabled },\n\t\t};\n\t}\n\n\toverride getTextContent(): string {\n\t\t// node must have text content or it will be ignored when formatting\n\t\treturn `{{${this.#tagKey}}}`;\n\t}\n}\n\nfunction domConversionFunction(domNode: Node): DOMConversion {\n\tconst html = domNode.textContent ?? '';\n\n\tconst regex = /\\{\\{(?:.*?)\\}\\}/gu;\n\tconst convertedParts: LexicalNode[] = [];\n\tconst matches = html.match(regex);\n\n\tif (matches) {\n\t\t// Diviser le contenu en parties de texte et de balises\n\t\tconst otherText = html.split(regex);\n\t\tmatches.forEach((match, index) => {\n\t\t\tconvertedParts.push($createTextNode(otherText[index]));\n\t\t\t// Traiter le tag\n\t\t\tconst tagContent = match.replace(/\\{\\{|\\}\\}/gu, '').trim();\n\t\t\tconvertedParts.push($createTagNode(tagContent));\n\n\t\t\tif (index === matches.length - 1) {\n\t\t\t\tconvertedParts.push($createTextNode(otherText[index + 1]));\n\t\t\t}\n\t\t});\n\t} else {\n\t\tconvertedParts.push($createTextNode(html));\n\t}\n\n\treturn {\n\t\t// La fonction de conversion reçoit le nœud DOM et doit retourner un nœud Lexical\n\t\tconversion: () => ({\n\t\t\tnode: convertedParts,\n\t\t}),\n\n\t\t// Priorité (plus le nombre est élevé, plus la conversion est prioritaire)\n\t\tpriority: COMMAND_PRIORITY_NORMAL,\n\t};\n}\n\nexport function $createTagNode(key = '', description?: string): TagNode {\n\treturn new TagNode(key, description);\n}\n\nexport function $isTagNode(node: LexicalNode | null | undefined): node is TagNode {\n\treturn node instanceof TagNode;\n}\n","import { ChangeDetectionStrategy, Component, effect, ElementRef, forwardRef, inject, input, OnDestroy, signal, viewChildren, ViewContainerRef } from '@angular/core';\nimport { ChipComponent } from '@lucca-front/ng/chip';\nimport { intlInputOptions } from '@lucca-front/ng/core';\nimport { $getNodeByKey, $getRoot, $getSelection, type Klass, type LexicalEditor, type LexicalNode, type NodeKey } from 'lexical';\nimport { INITIAL_UPDATE_TAG, RICH_TEXT_PLUGIN_COMPONENT, RichTextPluginComponent, SKIP_DOM_SELECTION_TAG } from '../../rich-text-input.component';\nimport { LU_RICH_TEXT_INPUT_TRANSLATIONS } from '../../rich-text-input.translate';\nimport { $createTagNode, TagNode } from './tag-node';\nimport type { Tag } from './tag.model';\n\nconst areSetsEqual = (a: Set<string>, b: Set<string>): boolean => a.size === b.size && [...a].every((value) => b.has(value));\n\n@Component({\n\tselector: 'lu-rich-text-plugin-tag',\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\ttemplateUrl: './tag.component.html',\n\tstyleUrl: './tag.component.scss',\n\timports: [ChipComponent],\n\tproviders: [\n\t\t{\n\t\t\tprovide: RICH_TEXT_PLUGIN_COMPONENT,\n\t\t\tuseExisting: forwardRef(() => RichTextPluginTagComponent),\n\t\t},\n\t],\n})\nexport class RichTextPluginTagComponent implements RichTextPluginComponent, OnDestroy {\n\treadonly #viewContainerRef = inject(ViewContainerRef);\n\treadonly intl = input(...intlInputOptions(LU_RICH_TEXT_INPUT_TRANSLATIONS));\n\n\treadonly tags = input.required<Tag[]>();\n\treadonly isDisabled = signal(false);\n\treadonly focusIndex = signal<number>(0);\n\n\treadonly focusableElements = viewChildren('tagButton', { read: ElementRef });\n\n\teditor: LexicalEditor | null = null;\n\n\treadonly #tagNodeKeys = signal(new Set<NodeKey>());\n\n\t#registeredCommands = () => {};\n\n\tconstructor() {\n\t\tTagNode.setViewContainerRef(this.#viewContainerRef);\n\n\t\t// Listen for new partial tag nodes and update their descriptions\n\t\teffect(() => {\n\t\t\tconst tags = this.tags();\n\t\t\t// filter out previously recorded nodes\n\t\t\tconst nodes = this.#tagNodeKeys();\n\t\t\tconst isDisabled = this.isDisabled();\n\n\t\t\tthis.editor?.update(\n\t\t\t\t() => {\n\t\t\t\t\tnodes.forEach((node) => {\n\t\t\t\t\t\tconst tagNode = $getNodeByKey<TagNode>(node);\n\t\t\t\t\t\tif (!tagNode) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst tag = tags.find((t) => t.key === tagNode.getTagKey());\n\t\t\t\t\t\tif (tag) {\n\t\t\t\t\t\t\ttagNode.setTagDescription(tag.description ?? '').setDisabled(isDisabled);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\ttagNode.remove();\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t\t{ tag: [SKIP_DOM_SELECTION_TAG, INITIAL_UPDATE_TAG] },\n\t\t\t);\n\t\t});\n\t}\n\n\tsetEditorInstance(editor: LexicalEditor): void {\n\t\tthis.editor = editor;\n\n\t\t// listen for new partial tag nodes (coming from formatters)\n\t\tthis.#registeredCommands = this.editor.registerMutationListener(\n\t\t\tTagNode,\n\t\t\t(mutations) => {\n\t\t\t\tconst newNodes = new Set<NodeKey>(this.#tagNodeKeys());\n\t\t\t\tthis.editor?.read(() => {\n\t\t\t\t\tmutations.forEach((m, k) => {\n\t\t\t\t\t\tif (m === 'created') {\n\t\t\t\t\t\t\tnewNodes.add(k);\n\t\t\t\t\t\t} else if (m === 'destroyed') {\n\t\t\t\t\t\t\tnewNodes.delete(k);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\tif (!areSetsEqual(newNodes, this.#tagNodeKeys())) {\n\t\t\t\t\t\tthis.#tagNodeKeys.set(newNodes);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t},\n\t\t\t{ skipInitialization: true },\n\t\t);\n\t}\n\n\tgetLexicalNodes(): Klass<LexicalNode>[] {\n\t\treturn [TagNode];\n\t}\n\n\tinsertTag(tag: Tag): void {\n\t\tthis.editor?.update(() => {\n\t\t\tlet selection = $getSelection();\n\t\t\tif (!selection) {\n\t\t\t\tselection = $getRoot().selectEnd();\n\t\t\t}\n\t\t\tconst node = $createTagNode(tag.key, tag.description);\n\t\t\tselection.insertNodes([node]);\n\t\t});\n\t}\n\n\tsetDisabledState(isDisabled: boolean): void {\n\t\tthis.isDisabled.set(isDisabled);\n\t}\n\n\tfocus() {\n\t\t// When receiving focus from the rich text input, focus the first tag button\n\t\tthis.focusIndex.set(0);\n\t\t(this.focusableElements().at(0) as ElementRef<HTMLButtonElement>).nativeElement.focus();\n\t}\n\n\tfocusTag(event: Event, direction: -1 | 1) {\n\t\tevent.stopPropagation();\n\n\t\tthis.focusIndex.update((v) => (v + direction) % this.focusableElements().length);\n\t\t(this.focusableElements().at(this.focusIndex()) as ElementRef<HTMLButtonElement>).nativeElement.focus();\n\t}\n\n\tngOnDestroy() {\n\t\tthis.#registeredCommands();\n\t}\n}\n","<div class=\"richTextField-toolbar-chips\" (keydown.arrowleft)=\"focusTag($event, -1)\" (keydown.arrowRight)=\"focusTag($event, 1)\">\n\t<span aria-hidden=\"true\">{{ intl().insertTag }}</span>\n\t@for (tag of tags(); track tag) {\n\t\t<lu-chip\n\t\t\t[attr.tabindex]=\"isDisabled() ? null : $first ? 0 : -1\"\n\t\t\t[disabled]=\"isDisabled()\"\n\t\t\t(click)=\"!isDisabled() ? insertTag(tag) : null\"\n\t\t\t(keyup.space)=\"!isDisabled() ? insertTag(tag) : null\"\n\t\t\t(keyup.enter)=\"!isDisabled() ? insertTag(tag) : null\"\n\t\t\tclass=\"richTextField-toolbar-chips-chip\"\n\t\t\tpalette=\"product\"\n\t\t\t#tagButton\n\t\t\tunkillable\n\t\t>\n\t\t\t<span class=\"pr-u-mask\">{{ intl().insertTag }}</span>\n\t\t\t{{ tag.description }}\n\t\t</lu-chip>\n\t}\n</div>\n","import { $getSelection, $isRangeSelection, COMMAND_PRIORITY_NORMAL, LexicalEditor, SELECTION_CHANGE_COMMAND, TextFormatType } from 'lexical';\n\nexport function registerFormatSelectionChange(editor: LexicalEditor, format: TextFormatType, onselectionchange: (hasFormat: boolean) => void) {\n\treturn editor.registerCommand(\n\t\tSELECTION_CHANGE_COMMAND,\n\t\t() => {\n\t\t\tconst selection = $getSelection();\n\t\t\tif ($isRangeSelection(selection)) {\n\t\t\t\tonselectionchange(selection.hasFormat(format));\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\tCOMMAND_PRIORITY_NORMAL,\n\t);\n}\n","import { ChangeDetectionStrategy, Component, ElementRef, forwardRef, input, OnDestroy, signal, viewChild } from '@angular/core';\nimport { LuccaIcon } from '@lucca-front/icons';\nimport { ButtonComponent } from '@lucca-front/ng/button';\nimport { IconComponent } from '@lucca-front/ng/icon';\nimport { LuTooltipTriggerDirective } from '@lucca-front/ng/tooltip';\nimport { FORMAT_TEXT_COMMAND, LexicalEditor, SELECTION_CHANGE_COMMAND, TextFormatType } from 'lexical';\nimport { RICH_TEXT_PLUGIN_COMPONENT, RichTextPluginComponent } from '../../rich-text-input.component';\nimport { registerFormatSelectionChange } from './text-style.command';\n\n@Component({\n\tselector: 'lu-rich-text-plugin-text-style',\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\ttemplateUrl: './text-style.component.html',\n\tstyleUrl: './text-style.component.scss',\n\timports: [ButtonComponent, IconComponent, LuTooltipTriggerDirective],\n\thost: {\n\t\tclass: 'richTextField-toolbar-col-group',\n\t},\n\tproviders: [\n\t\t{\n\t\t\tprovide: RICH_TEXT_PLUGIN_COMPONENT,\n\t\t\tuseExisting: forwardRef(() => TextStyleComponent),\n\t\t},\n\t],\n})\nexport class TextStyleComponent implements OnDestroy, RichTextPluginComponent {\n\tpublic format = input.required<TextFormatType>();\n\tpublic icon = input.required<LuccaIcon>();\n\tpublic tooltip = input.required<string>();\n\n\tpublic tabindex = signal<number>(-1);\n\tpublic active = signal(false);\n\tpublic isDisabled = signal(false);\n\n\tpublic element = viewChild('element', { read: ElementRef<HTMLButtonElement> });\n\n\t#editor?: LexicalEditor;\n\n\t#registeredCommands: () => void = () => {};\n\n\tsetEditorInstance(editor: LexicalEditor): void {\n\t\tthis.#editor = editor;\n\t\tthis.#registeredCommands = registerFormatSelectionChange(this.#editor, this.format(), (hasFormat) => this.active.set(hasFormat));\n\t}\n\n\tngOnDestroy() {\n\t\tthis.#registeredCommands();\n\t}\n\n\tdispatchCommand() {\n\t\tthis.#editor.dispatchCommand(FORMAT_TEXT_COMMAND, this.format());\n\t\t// force update selection\n\t\tthis.#editor.dispatchCommand(SELECTION_CHANGE_COMMAND, undefined);\n\t}\n\n\tsetDisabledState(isDisabled: boolean) {\n\t\tthis.isDisabled.set(isDisabled);\n\t}\n\n\tfocus() {\n\t\t(this.element() as ElementRef<HTMLButtonElement>).nativeElement.focus();\n\t}\n}\n","<button\n\t#element\n\tluButton=\"ghost\"\n\ttype=\"button\"\n\tsize=\"S\"\n\t(click)=\"dispatchCommand()\"\n\t[attr.aria-pressed]=\"active()\"\n\t[luTooltip]=\"tooltip()\"\n\tluTooltipOnlyForDisplay\n\t[attr.tabindex]=\"tabindex()\"\n\tclass=\"richTextField-toolbar-button\"\n\t[disabled]=\"isDisabled()\"\n>\n\t<lu-icon [icon]=\"icon()\" [alt]=\"tooltip()\" />\n</button>\n","import { ChangeDetectionStrategy, Component, forwardRef, input, viewChildren } from '@angular/core';\nimport { intlInputOptions } from '@lucca-front/ng/core';\nimport { LexicalEditor } from 'lexical';\nimport { RICH_TEXT_PLUGIN_COMPONENT, RichTextPluginComponent } from '../../rich-text-input.component';\nimport { LU_RICH_TEXT_INPUT_TRANSLATIONS } from '../../rich-text-input.translate';\nimport { TextStyleComponent } from './text-style.component';\n\n@Component({\n\tselector: 'lu-rich-text-toolbar-text-style',\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\ttemplateUrl: `text-style-toolbar.component.html`,\n\timports: [TextStyleComponent],\n\thost: {\n\t\tclass: 'richTextField-toolbar-col-group',\n\t},\n\tproviders: [\n\t\t{\n\t\t\tprovide: RICH_TEXT_PLUGIN_COMPONENT,\n\t\t\tuseExisting: forwardRef(() => TextStyleToolbarComponent),\n\t\t},\n\t],\n})\nexport class TextStyleToolbarComponent implements RichTextPluginComponent {\n\tpluginComponents = viewChildren(RICH_TEXT_PLUGIN_COMPONENT);\n\n\tintl = input(...intlInputOptions(LU_RICH_TEXT_INPUT_TRANSLATIONS));\n\n\tsetEditorInstance(editor: LexicalEditor): void {\n\t\tthis.pluginComponents().forEach((plugin) => plugin.setEditorInstance(editor));\n\t}\n\n\tsetDisabledState(isDisabled: boolean): void {\n\t\tthis.pluginComponents().forEach((plugin) => plugin.setDisabledState(isDisabled));\n\t}\n}\n","<lu-rich-text-plugin-text-style icon=\"formatTextBold\" [tooltip]=\"intl().stylesBold\" format=\"bold\" />\n<lu-rich-text-plugin-text-style icon=\"formatTextItalic\" [tooltip]=\"intl().stylesItalic\" format=\"italic\" />\n<lu-rich-text-plugin-text-style icon=\"formatTextStrikethrough\" [tooltip]=\"intl().stylesStrikethrough\" format=\"strikethrough\" />\n","import { ChangeDetectionStrategy, Component, forwardRef, viewChildren } from '@angular/core';\nimport { Klass, LexicalEditor, LexicalNode } from 'lexical';\nimport { RICH_TEXT_PLUGIN_COMPONENT, RichTextPluginComponent } from '../../rich-text-input.component';\nimport { ClearFormatComponent } from '../clear-format';\nimport { HeadingsComponent } from '../headings';\nimport { LinkComponent } from '../link';\nimport { ListStyleToolbarComponent } from '../list-format';\nimport { TextStyleToolbarComponent } from '../text-style';\n\n@Component({\n\tselector: 'lu-rich-text-input-toolbar',\n\ttemplateUrl: 'toolbar.component.html',\n\thost: {\n\t\tclass: 'richTextField-toolbar-formatting',\n\t},\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [TextStyleToolbarComponent, ListStyleToolbarComponent, HeadingsComponent, LinkComponent, ClearFormatComponent],\n\tproviders: [\n\t\t{\n\t\t\tprovide: RICH_TEXT_PLUGIN_COMPONENT,\n\t\t\tuseExisting: forwardRef(() => RichTextInputToolbarComponent),\n\t\t},\n\t],\n})\nexport class RichTextInputToolbarComponent implements RichTextPluginComponent {\n\tpluginComponents = viewChildren(RICH_TEXT_PLUGIN_COMPONENT);\n\n\tsetEditorInstance(editor: LexicalEditor): void {\n\t\tthis.pluginComponents().forEach((plugin) => plugin.setEditorInstance(editor));\n\t}\n\n\tgetLexicalNodes() {\n\t\treturn this.pluginComponents().reduce((acc, plugin) => [...acc, ...(plugin.getLexicalNodes?.() || [])], [] as Klass<LexicalNode>[]);\n\t}\n\n\tsetDisabledState(isDisabled: boolean): void {\n\t\tthis.pluginComponents().forEach((plugin) => plugin.setDisabledState(isDisabled));\n\t}\n}\n","<div class=\"richTextField-toolbar-col\">\n\t<lu-rich-text-toolbar-text-style />\n\t<lu-rich-text-plugin-headings />\n\t<lu-rich-text-toolbar-list-style />\n\t<lu-rich-text-plugin-link />\n</div>\n<div class=\"richTextField-toolbar-col\">\n\t<lu-rich-text-plugin-clear-format />\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["ɵPresentationDisplayDefaultDirective","i1","LuLinkComponent"],"mappings":"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"}