@lucca-front/ng 21.3.0-rc.5 → 22.0.0-rc.2

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 (282) hide show
  1. package/fesm2022/lucca-front-ng-a11y.mjs +3 -3
  2. package/fesm2022/lucca-front-ng-activity-feed.mjs +12 -17
  3. package/fesm2022/lucca-front-ng-activity-feed.mjs.map +1 -1
  4. package/fesm2022/lucca-front-ng-api.mjs +122 -202
  5. package/fesm2022/lucca-front-ng-api.mjs.map +1 -1
  6. package/fesm2022/lucca-front-ng-app-layout.mjs +3 -3
  7. package/fesm2022/lucca-front-ng-box.mjs +3 -3
  8. package/fesm2022/lucca-front-ng-breadcrumbs.mjs +6 -6
  9. package/fesm2022/lucca-front-ng-bubble-icon.mjs +4 -10
  10. package/fesm2022/lucca-front-ng-bubble-icon.mjs.map +1 -1
  11. package/fesm2022/lucca-front-ng-bubble-illustration.mjs +5 -10
  12. package/fesm2022/lucca-front-ng-bubble-illustration.mjs.map +1 -1
  13. package/fesm2022/lucca-front-ng-callout.mjs +36 -36
  14. package/fesm2022/lucca-front-ng-callout.mjs.map +1 -1
  15. package/fesm2022/lucca-front-ng-chip.mjs +4 -10
  16. package/fesm2022/lucca-front-ng-chip.mjs.map +1 -1
  17. package/fesm2022/lucca-front-ng-clear.mjs +9 -15
  18. package/fesm2022/lucca-front-ng-clear.mjs.map +1 -1
  19. package/fesm2022/lucca-front-ng-code.mjs +4 -4
  20. package/fesm2022/lucca-front-ng-code.mjs.map +1 -1
  21. package/fesm2022/lucca-front-ng-color.mjs +4 -9
  22. package/fesm2022/lucca-front-ng-color.mjs.map +1 -1
  23. package/fesm2022/lucca-front-ng-comment.mjs +12 -17
  24. package/fesm2022/lucca-front-ng-comment.mjs.map +1 -1
  25. package/fesm2022/lucca-front-ng-container.mjs +4 -9
  26. package/fesm2022/lucca-front-ng-container.mjs.map +1 -1
  27. package/fesm2022/lucca-front-ng-core-select-api.mjs +29 -45
  28. package/fesm2022/lucca-front-ng-core-select-api.mjs.map +1 -1
  29. package/fesm2022/lucca-front-ng-core-select-department.mjs +13 -11
  30. package/fesm2022/lucca-front-ng-core-select-department.mjs.map +1 -1
  31. package/fesm2022/lucca-front-ng-core-select-establishment.mjs +9 -9
  32. package/fesm2022/lucca-front-ng-core-select-establishment.mjs.map +1 -1
  33. package/fesm2022/lucca-front-ng-core-select-job-qualification.mjs +6 -6
  34. package/fesm2022/lucca-front-ng-core-select-job-qualification.mjs.map +1 -1
  35. package/fesm2022/lucca-front-ng-core-select-occupation-category.mjs +3 -3
  36. package/fesm2022/lucca-front-ng-core-select-occupation-category.mjs.map +1 -1
  37. package/fesm2022/lucca-front-ng-core-select-user.mjs +42 -42
  38. package/fesm2022/lucca-front-ng-core-select-user.mjs.map +1 -1
  39. package/fesm2022/lucca-front-ng-core-select.mjs +204 -270
  40. package/fesm2022/lucca-front-ng-core-select.mjs.map +1 -1
  41. package/fesm2022/lucca-front-ng-core.mjs +37 -21
  42. package/fesm2022/lucca-front-ng-core.mjs.map +1 -1
  43. package/fesm2022/lucca-front-ng-data-table.mjs +61 -60
  44. package/fesm2022/lucca-front-ng-data-table.mjs.map +1 -1
  45. package/fesm2022/lucca-front-ng-date.mjs +144 -164
  46. package/fesm2022/lucca-front-ng-date.mjs.map +1 -1
  47. package/fesm2022/lucca-front-ng-date2.mjs +147 -150
  48. package/fesm2022/lucca-front-ng-date2.mjs.map +1 -1
  49. package/fesm2022/lucca-front-ng-department.mjs +26 -24
  50. package/fesm2022/lucca-front-ng-department.mjs.map +1 -1
  51. package/fesm2022/lucca-front-ng-dialog.mjs +92 -68
  52. package/fesm2022/lucca-front-ng-dialog.mjs.map +1 -1
  53. package/fesm2022/lucca-front-ng-divider.mjs +7 -14
  54. package/fesm2022/lucca-front-ng-divider.mjs.map +1 -1
  55. package/fesm2022/lucca-front-ng-dropdown.mjs +69 -72
  56. package/fesm2022/lucca-front-ng-dropdown.mjs.map +1 -1
  57. package/fesm2022/lucca-front-ng-empty-state.mjs +15 -20
  58. package/fesm2022/lucca-front-ng-empty-state.mjs.map +1 -1
  59. package/fesm2022/lucca-front-ng-error-page.mjs +4 -9
  60. package/fesm2022/lucca-front-ng-error-page.mjs.map +1 -1
  61. package/fesm2022/lucca-front-ng-establishment.mjs +81 -115
  62. package/fesm2022/lucca-front-ng-establishment.mjs.map +1 -1
  63. package/fesm2022/lucca-front-ng-fancy-box.mjs +5 -10
  64. package/fesm2022/lucca-front-ng-fancy-box.mjs.map +1 -1
  65. package/fesm2022/lucca-front-ng-file-upload.mjs +33 -52
  66. package/fesm2022/lucca-front-ng-file-upload.mjs.map +1 -1
  67. package/fesm2022/lucca-front-ng-filter-pills.mjs +41 -24
  68. package/fesm2022/lucca-front-ng-filter-pills.mjs.map +1 -1
  69. package/fesm2022/lucca-front-ng-footer.mjs +4 -10
  70. package/fesm2022/lucca-front-ng-footer.mjs.map +1 -1
  71. package/fesm2022/lucca-front-ng-form-field.mjs +43 -64
  72. package/fesm2022/lucca-front-ng-form-field.mjs.map +1 -1
  73. package/fesm2022/lucca-front-ng-form-header.mjs +4 -9
  74. package/fesm2022/lucca-front-ng-form-header.mjs.map +1 -1
  75. package/fesm2022/lucca-front-ng-form-label.mjs +4 -9
  76. package/fesm2022/lucca-front-ng-form-label.mjs.map +1 -1
  77. package/fesm2022/lucca-front-ng-form.mjs +6 -9
  78. package/fesm2022/lucca-front-ng-form.mjs.map +1 -1
  79. package/fesm2022/lucca-front-ng-formly.mjs +60 -59
  80. package/fesm2022/lucca-front-ng-formly.mjs.map +1 -1
  81. package/fesm2022/lucca-front-ng-forms-phone-number-input.mjs +53 -53
  82. package/fesm2022/lucca-front-ng-forms-phone-number-input.mjs.map +1 -1
  83. package/fesm2022/lucca-front-ng-forms-rich-text-input-formatters-html.mjs +18 -16
  84. package/fesm2022/lucca-front-ng-forms-rich-text-input-formatters-html.mjs.map +1 -1
  85. package/fesm2022/lucca-front-ng-forms-rich-text-input-formatters-markdown.mjs +9 -8
  86. package/fesm2022/lucca-front-ng-forms-rich-text-input-formatters-markdown.mjs.map +1 -1
  87. package/fesm2022/lucca-front-ng-forms-rich-text-input-formatters-plain-text.mjs +8 -6
  88. package/fesm2022/lucca-front-ng-forms-rich-text-input-formatters-plain-text.mjs.map +1 -1
  89. package/fesm2022/lucca-front-ng-forms-rich-text-input.mjs +64 -57
  90. package/fesm2022/lucca-front-ng-forms-rich-text-input.mjs.map +1 -1
  91. package/fesm2022/lucca-front-ng-forms.mjs +51 -109
  92. package/fesm2022/lucca-front-ng-forms.mjs.map +1 -1
  93. package/fesm2022/lucca-front-ng-gauge.mjs +3 -3
  94. package/fesm2022/lucca-front-ng-grid.mjs +9 -21
  95. package/fesm2022/lucca-front-ng-grid.mjs.map +1 -1
  96. package/fesm2022/lucca-front-ng-highlight-data.mjs +5 -27
  97. package/fesm2022/lucca-front-ng-highlight-data.mjs.map +1 -1
  98. package/fesm2022/lucca-front-ng-horizontal-navigation.mjs +15 -160
  99. package/fesm2022/lucca-front-ng-horizontal-navigation.mjs.map +1 -1
  100. package/fesm2022/lucca-front-ng-index-table.mjs +38 -44
  101. package/fesm2022/lucca-front-ng-index-table.mjs.map +1 -1
  102. package/fesm2022/lucca-front-ng-inline-message.mjs +4 -11
  103. package/fesm2022/lucca-front-ng-inline-message.mjs.map +1 -1
  104. package/fesm2022/lucca-front-ng-input.mjs +28 -26
  105. package/fesm2022/lucca-front-ng-input.mjs.map +1 -1
  106. package/fesm2022/lucca-front-ng-link.mjs +6 -6
  107. package/fesm2022/lucca-front-ng-link.mjs.map +1 -1
  108. package/fesm2022/lucca-front-ng-listbox.mjs +10 -15
  109. package/fesm2022/lucca-front-ng-listbox.mjs.map +1 -1
  110. package/fesm2022/lucca-front-ng-listing.mjs +8 -8
  111. package/fesm2022/lucca-front-ng-listing.mjs.map +1 -1
  112. package/fesm2022/lucca-front-ng-loading.mjs +4 -9
  113. package/fesm2022/lucca-front-ng-loading.mjs.map +1 -1
  114. package/fesm2022/lucca-front-ng-main-layout.mjs +6 -6
  115. package/fesm2022/lucca-front-ng-mobile-push.mjs +4 -4
  116. package/fesm2022/lucca-front-ng-mobile-push.mjs.map +1 -1
  117. package/fesm2022/lucca-front-ng-modal.mjs +36 -40
  118. package/fesm2022/lucca-front-ng-modal.mjs.map +1 -1
  119. package/fesm2022/lucca-front-ng-multi-select.mjs +174 -203
  120. package/fesm2022/lucca-front-ng-multi-select.mjs.map +1 -1
  121. package/fesm2022/lucca-front-ng-new-badge.mjs +3 -3
  122. package/fesm2022/lucca-front-ng-number-format.mjs +22 -25
  123. package/fesm2022/lucca-front-ng-number-format.mjs.map +1 -1
  124. package/fesm2022/lucca-front-ng-number.mjs +7 -7
  125. package/fesm2022/lucca-front-ng-numeric-badge.mjs +4 -9
  126. package/fesm2022/lucca-front-ng-numeric-badge.mjs.map +1 -1
  127. package/fesm2022/lucca-front-ng-option.mjs +159 -162
  128. package/fesm2022/lucca-front-ng-option.mjs.map +1 -1
  129. package/fesm2022/lucca-front-ng-page-header.mjs +3 -3
  130. package/fesm2022/lucca-front-ng-page-header.mjs.map +1 -1
  131. package/fesm2022/lucca-front-ng-pagination.mjs +5 -10
  132. package/fesm2022/lucca-front-ng-pagination.mjs.map +1 -1
  133. package/fesm2022/lucca-front-ng-plg-push.mjs +5 -5
  134. package/fesm2022/lucca-front-ng-plg-push.mjs.map +1 -1
  135. package/fesm2022/lucca-front-ng-popover.mjs +144 -255
  136. package/fesm2022/lucca-front-ng-popover.mjs.map +1 -1
  137. package/fesm2022/lucca-front-ng-popover2.mjs +41 -69
  138. package/fesm2022/lucca-front-ng-popover2.mjs.map +1 -1
  139. package/fesm2022/lucca-front-ng-popup.mjs +11 -11
  140. package/fesm2022/lucca-front-ng-popup.mjs.map +1 -1
  141. package/fesm2022/lucca-front-ng-progress-bar.mjs +4 -9
  142. package/fesm2022/lucca-front-ng-progress-bar.mjs.map +1 -1
  143. package/fesm2022/lucca-front-ng-progress-stepper.mjs +7 -12
  144. package/fesm2022/lucca-front-ng-progress-stepper.mjs.map +1 -1
  145. package/fesm2022/lucca-front-ng-read-more.mjs +5 -10
  146. package/fesm2022/lucca-front-ng-read-more.mjs.map +1 -1
  147. package/fesm2022/lucca-front-ng-resource-card.mjs +13 -19
  148. package/fesm2022/lucca-front-ng-resource-card.mjs.map +1 -1
  149. package/fesm2022/lucca-front-ng-safe-content.mjs +10 -10
  150. package/fesm2022/lucca-front-ng-scroll-box.mjs +3 -3
  151. package/fesm2022/lucca-front-ng-scroll-box.mjs.map +1 -1
  152. package/fesm2022/lucca-front-ng-scroll.mjs +7 -7
  153. package/fesm2022/lucca-front-ng-scroll.mjs.map +1 -1
  154. package/fesm2022/lucca-front-ng-segmented-control-tabs.mjs +8 -14
  155. package/fesm2022/lucca-front-ng-segmented-control-tabs.mjs.map +1 -1
  156. package/fesm2022/lucca-front-ng-segmented-control.mjs +6 -6
  157. package/fesm2022/lucca-front-ng-select.mjs +92 -138
  158. package/fesm2022/lucca-front-ng-select.mjs.map +1 -1
  159. package/fesm2022/lucca-front-ng-sidepanel.mjs +7 -7
  160. package/fesm2022/lucca-front-ng-sidepanel.mjs.map +1 -1
  161. package/fesm2022/lucca-front-ng-simple-select.mjs +43 -41
  162. package/fesm2022/lucca-front-ng-simple-select.mjs.map +1 -1
  163. package/fesm2022/lucca-front-ng-skeleton.mjs +28 -50
  164. package/fesm2022/lucca-front-ng-skeleton.mjs.map +1 -1
  165. package/fesm2022/lucca-front-ng-software-icon-wrapper.mjs +6 -6
  166. package/fesm2022/lucca-front-ng-software-icon.mjs +25 -29
  167. package/fesm2022/lucca-front-ng-software-icon.mjs.map +1 -1
  168. package/fesm2022/lucca-front-ng-sortable-list.mjs +6 -6
  169. package/fesm2022/lucca-front-ng-sortable-list.mjs.map +1 -1
  170. package/fesm2022/lucca-front-ng-status-badge.mjs +4 -9
  171. package/fesm2022/lucca-front-ng-status-badge.mjs.map +1 -1
  172. package/fesm2022/lucca-front-ng-table-of-content.mjs +6 -6
  173. package/fesm2022/lucca-front-ng-tag.mjs +5 -10
  174. package/fesm2022/lucca-front-ng-tag.mjs.map +1 -1
  175. package/fesm2022/lucca-front-ng-text-flow.mjs +4 -4
  176. package/fesm2022/lucca-front-ng-text-flow.mjs.map +1 -1
  177. package/fesm2022/lucca-front-ng-time.mjs +68 -316
  178. package/fesm2022/lucca-front-ng-time.mjs.map +1 -1
  179. package/fesm2022/lucca-front-ng-title.mjs +10 -10
  180. package/fesm2022/lucca-front-ng-title.mjs.map +1 -1
  181. package/fesm2022/lucca-front-ng-toast.mjs +11 -11
  182. package/fesm2022/lucca-front-ng-toast.mjs.map +1 -1
  183. package/fesm2022/lucca-front-ng-tooltip.mjs +17 -17
  184. package/fesm2022/lucca-front-ng-tree-select.mjs +17 -16
  185. package/fesm2022/lucca-front-ng-tree-select.mjs.map +1 -1
  186. package/fesm2022/lucca-front-ng-user-popover.mjs +27 -32
  187. package/fesm2022/lucca-front-ng-user-popover.mjs.map +1 -1
  188. package/fesm2022/lucca-front-ng-user.mjs +139 -195
  189. package/fesm2022/lucca-front-ng-user.mjs.map +1 -1
  190. package/fesm2022/lucca-front-ng-vertical-navigation.mjs +12 -12
  191. package/package.json +5 -13
  192. package/schematics/lib/local-deps/package-lock.json +79 -17
  193. package/schematics/lib/local-deps/package.json +1 -1
  194. package/schematics/palettes/index.js +1 -12
  195. package/src/components/_picker.scss +1 -2
  196. package/types/lucca-front-ng-activity-feed.d.ts +1 -8
  197. package/types/lucca-front-ng-api.d.ts +75 -81
  198. package/types/lucca-front-ng-bubble-icon.d.ts +1 -10
  199. package/types/lucca-front-ng-bubble-illustration.d.ts +4 -10
  200. package/types/lucca-front-ng-callout.d.ts +12 -20
  201. package/types/lucca-front-ng-chip.d.ts +1 -10
  202. package/types/lucca-front-ng-clear.d.ts +6 -11
  203. package/types/lucca-front-ng-color.d.ts +1 -8
  204. package/types/lucca-front-ng-comment.d.ts +1 -8
  205. package/types/lucca-front-ng-container.d.ts +1 -8
  206. package/types/lucca-front-ng-core-select-api.d.ts +28 -28
  207. package/types/lucca-front-ng-core-select-department.d.ts +10 -10
  208. package/types/lucca-front-ng-core-select-establishment.d.ts +12 -12
  209. package/types/lucca-front-ng-core-select-job-qualification.d.ts +6 -6
  210. package/types/lucca-front-ng-core-select-occupation-category.d.ts +6 -6
  211. package/types/lucca-front-ng-core-select-user.d.ts +20 -21
  212. package/types/lucca-front-ng-core-select.d.ts +186 -185
  213. package/types/lucca-front-ng-core.d.ts +16 -10
  214. package/types/lucca-front-ng-data-table.d.ts +41 -52
  215. package/types/lucca-front-ng-date.d.ts +30 -28
  216. package/types/lucca-front-ng-date2.d.ts +98 -106
  217. package/types/lucca-front-ng-department.d.ts +2 -2
  218. package/types/lucca-front-ng-dialog.d.ts +13 -13
  219. package/types/lucca-front-ng-divider.d.ts +2 -9
  220. package/types/lucca-front-ng-dropdown.d.ts +5 -4
  221. package/types/lucca-front-ng-empty-state.d.ts +7 -15
  222. package/types/lucca-front-ng-error-page.d.ts +4 -9
  223. package/types/lucca-front-ng-establishment.d.ts +26 -27
  224. package/types/lucca-front-ng-fancy-box.d.ts +1 -8
  225. package/types/lucca-front-ng-file-upload.d.ts +24 -39
  226. package/types/lucca-front-ng-filter-pills.d.ts +37 -32
  227. package/types/lucca-front-ng-footer.d.ts +2 -11
  228. package/types/lucca-front-ng-form-field.d.ts +27 -45
  229. package/types/lucca-front-ng-form-header.d.ts +1 -8
  230. package/types/lucca-front-ng-form-label.d.ts +1 -8
  231. package/types/lucca-front-ng-form.d.ts +0 -2
  232. package/types/lucca-front-ng-forms-phone-number-input.d.ts +19 -26
  233. package/types/lucca-front-ng-forms-rich-text-input.d.ts +15 -14
  234. package/types/lucca-front-ng-forms.d.ts +54 -95
  235. package/types/lucca-front-ng-grid.d.ts +8 -23
  236. package/types/lucca-front-ng-highlight-data.d.ts +1 -16
  237. package/types/lucca-front-ng-horizontal-navigation.d.ts +3 -40
  238. package/types/lucca-front-ng-index-table.d.ts +40 -49
  239. package/types/lucca-front-ng-inline-message.d.ts +4 -11
  240. package/types/lucca-front-ng-input.d.ts +8 -8
  241. package/types/lucca-front-ng-link.d.ts +4 -4
  242. package/types/lucca-front-ng-listbox.d.ts +1 -8
  243. package/types/lucca-front-ng-loading.d.ts +1 -8
  244. package/types/lucca-front-ng-mobile-push.d.ts +1 -1
  245. package/types/lucca-front-ng-modal.d.ts +12 -12
  246. package/types/lucca-front-ng-multi-select.d.ts +55 -58
  247. package/types/lucca-front-ng-number-format.d.ts +2 -2
  248. package/types/lucca-front-ng-numeric-badge.d.ts +1 -8
  249. package/types/lucca-front-ng-option.d.ts +26 -26
  250. package/types/lucca-front-ng-page-header.d.ts +1 -1
  251. package/types/lucca-front-ng-pagination.d.ts +1 -8
  252. package/types/lucca-front-ng-popover.d.ts +53 -47
  253. package/types/lucca-front-ng-popover2.d.ts +33 -31
  254. package/types/lucca-front-ng-popup.d.ts +8 -8
  255. package/types/lucca-front-ng-progress-bar.d.ts +1 -8
  256. package/types/lucca-front-ng-progress-stepper.d.ts +1 -8
  257. package/types/lucca-front-ng-read-more.d.ts +7 -14
  258. package/types/lucca-front-ng-resource-card.d.ts +1 -10
  259. package/types/lucca-front-ng-scroll-box.d.ts +3 -3
  260. package/types/lucca-front-ng-segmented-control-tabs.d.ts +1 -3
  261. package/types/lucca-front-ng-segmented-control.d.ts +2 -4
  262. package/types/lucca-front-ng-select.d.ts +34 -32
  263. package/types/lucca-front-ng-sidepanel.d.ts +1 -1
  264. package/types/lucca-front-ng-simple-select.d.ts +16 -17
  265. package/types/lucca-front-ng-skeleton.d.ts +10 -26
  266. package/types/lucca-front-ng-software-icon.d.ts +5 -10
  267. package/types/lucca-front-ng-sortable-list.d.ts +8 -8
  268. package/types/lucca-front-ng-status-badge.d.ts +1 -8
  269. package/types/lucca-front-ng-tag.d.ts +1 -8
  270. package/types/lucca-front-ng-time.d.ts +25 -103
  271. package/types/lucca-front-ng-title.d.ts +5 -5
  272. package/types/lucca-front-ng-toast.d.ts +1 -1
  273. package/types/lucca-front-ng-tree-select.d.ts +11 -11
  274. package/types/lucca-front-ng-user-popover.d.ts +10 -9
  275. package/types/lucca-front-ng-user.d.ts +31 -45
  276. package/fesm2022/lucca-front-ng-highlight-text.mjs +0 -26
  277. package/fesm2022/lucca-front-ng-highlight-text.mjs.map +0 -1
  278. package/fesm2022/lucca-front-ng-impersonation.mjs +0 -119
  279. package/fesm2022/lucca-front-ng-impersonation.mjs.map +0 -1
  280. package/schematics/package.json +0 -3
  281. package/types/lucca-front-ng-highlight-text.d.ts +0 -12
  282. package/types/lucca-front-ng-impersonation.d.ts +0 -33
@@ -11,19 +11,21 @@ class HtmlFormatter extends RichTextFormatter {
11
11
  return registerRichText(editor);
12
12
  }
13
13
  parse(editor, htmlString) {
14
- const parser = new DOMParser();
15
- const dom = parser.parseFromString(DOMPurify.sanitize(htmlString, {
16
- FORBID_ATTR: ['style', 'class'],
17
- }), 'text/html');
18
- editor.update(() => {
19
- // Once you have the DOM instance it's easy to generate LexicalNodes.
20
- const nodes = $generateNodesFromDOM(editor, dom);
21
- // Select the root
22
- $getRoot().clear();
23
- $getRoot().select();
24
- // Insert them at a selection.
25
- $insertNodes(nodes);
26
- });
14
+ if (htmlString) {
15
+ const parser = new DOMParser();
16
+ const dom = parser.parseFromString(DOMPurify.sanitize(htmlString, {
17
+ FORBID_ATTR: ['style', 'class'],
18
+ }), 'text/html');
19
+ editor.update(() => {
20
+ // Once you have the DOM instance it's easy to generate LexicalNodes.
21
+ const nodes = $generateNodesFromDOM(editor, dom);
22
+ // Select the root
23
+ $getRoot().clear();
24
+ $getRoot().select();
25
+ // Insert them at a selection.
26
+ $insertNodes(nodes);
27
+ });
28
+ }
27
29
  }
28
30
  format(editor) {
29
31
  let result = '';
@@ -41,10 +43,10 @@ function provideLuRichTextHTMLFormatter() {
41
43
  }
42
44
 
43
45
  class HtmlFormatterDirective {
44
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.15", ngImport: i0, type: HtmlFormatterDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
45
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.15", type: HtmlFormatterDirective, isStandalone: true, selector: "lu-rich-text-input[luWithHtmlFormatter]", providers: [provideLuRichTextHTMLFormatter()], ngImport: i0 }); }
46
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: HtmlFormatterDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
47
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.14", type: HtmlFormatterDirective, isStandalone: true, selector: "lu-rich-text-input[luWithHtmlFormatter]", providers: [provideLuRichTextHTMLFormatter()], ngImport: i0 }); }
46
48
  }
47
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.15", ngImport: i0, type: HtmlFormatterDirective, decorators: [{
49
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: HtmlFormatterDirective, decorators: [{
48
50
  type: Directive,
49
51
  args: [{
50
52
  selector: 'lu-rich-text-input[luWithHtmlFormatter]',
@@ -1 +1 @@
1
- {"version":3,"file":"lucca-front-ng-forms-rich-text-input-formatters-html.mjs","sources":["../../../packages/ng/forms/rich-text-input/formatters/html/html-formatter.ts","../../../packages/ng/forms/rich-text-input/formatters/html/html-formatter.directive.ts","../../../packages/ng/forms/rich-text-input/formatters/html/lucca-front-ng-forms-rich-text-input-formatters-html.ts"],"sourcesContent":["import { Provider } from '@angular/core';\nimport { $generateHtmlFromNodes, $generateNodesFromDOM } from '@lexical/html';\nimport { registerRichText } from '@lexical/rich-text';\nimport { RICH_TEXT_FORMATTER, RichTextFormatter } from '@lucca-front/ng/forms/rich-text-input';\nimport DOMPurify from 'isomorphic-dompurify';\nimport { $getRoot, $insertNodes, LexicalEditor } from 'lexical';\n\nexport class HtmlFormatter extends RichTextFormatter {\n\toverride registerTextPlugin(editor: LexicalEditor) {\n\t\treturn registerRichText(editor);\n\t}\n\n\toverride parse(editor: LexicalEditor, htmlString?: string | null): void {\n\t\tconst parser = new DOMParser();\n\t\tconst dom = parser.parseFromString(\n\t\t\tDOMPurify.sanitize(htmlString, {\n\t\t\t\tFORBID_ATTR: ['style', 'class'],\n\t\t\t}),\n\t\t\t'text/html',\n\t\t);\n\n\t\teditor.update(() => {\n\t\t\t// Once you have the DOM instance it's easy to generate LexicalNodes.\n\t\t\tconst nodes = $generateNodesFromDOM(editor, dom);\n\n\t\t\t// Select the root\n\t\t\t$getRoot().clear();\n\t\t\t$getRoot().select();\n\n\t\t\t// Insert them at a selection.\n\t\t\t$insertNodes(nodes);\n\t\t});\n\t}\n\n\toverride format(editor: LexicalEditor): string {\n\t\tlet result = '';\n\t\teditor.getEditorState().read(() => (result = $generateHtmlFromNodes(editor)));\n\t\treturn DOMPurify.sanitize(result, {\n\t\t\tFORBID_ATTR: ['style', 'class'],\n\t\t});\n\t}\n}\n\nexport function provideLuRichTextHTMLFormatter(): Provider {\n\treturn {\n\t\tprovide: RICH_TEXT_FORMATTER,\n\t\tuseFactory: () => new HtmlFormatter(),\n\t};\n}\n","import { Directive } from '@angular/core';\nimport { provideLuRichTextHTMLFormatter } from './html-formatter';\n\n@Directive({\n\tselector: 'lu-rich-text-input[luWithHtmlFormatter]',\n\tproviders: [provideLuRichTextHTMLFormatter()],\n})\nexport class HtmlFormatterDirective {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;;AAOM,MAAO,aAAc,SAAQ,iBAAiB,CAAA;AAC1C,IAAA,kBAAkB,CAAC,MAAqB,EAAA;AAChD,QAAA,OAAO,gBAAgB,CAAC,MAAM,CAAC;IAChC;IAES,KAAK,CAAC,MAAqB,EAAE,UAA0B,EAAA;AAC/D,QAAA,MAAM,MAAM,GAAG,IAAI,SAAS,EAAE;QAC9B,MAAM,GAAG,GAAG,MAAM,CAAC,eAAe,CACjC,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE;AAC9B,YAAA,WAAW,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC;SAC/B,CAAC,EACF,WAAW,CACX;AAED,QAAA,MAAM,CAAC,MAAM,CAAC,MAAK;;YAElB,MAAM,KAAK,GAAG,qBAAqB,CAAC,MAAM,EAAE,GAAG,CAAC;;AAGhD,YAAA,QAAQ,EAAE,CAAC,KAAK,EAAE;AAClB,YAAA,QAAQ,EAAE,CAAC,MAAM,EAAE;;YAGnB,YAAY,CAAC,KAAK,CAAC;AACpB,QAAA,CAAC,CAAC;IACH;AAES,IAAA,MAAM,CAAC,MAAqB,EAAA;QACpC,IAAI,MAAM,GAAG,EAAE;AACf,QAAA,MAAM,CAAC,cAAc,EAAE,CAAC,IAAI,CAAC,OAAO,MAAM,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAAC,CAAC;AAC7E,QAAA,OAAO,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE;AACjC,YAAA,WAAW,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC;AAC/B,SAAA,CAAC;IACH;AACA;SAEe,8BAA8B,GAAA;IAC7C,OAAO;AACN,QAAA,OAAO,EAAE,mBAAmB;AAC5B,QAAA,UAAU,EAAE,MAAM,IAAI,aAAa,EAAE;KACrC;AACF;;MCzCa,sBAAsB,CAAA;+GAAtB,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,yCAAA,EAAA,SAAA,EAFvB,CAAC,8BAA8B,EAAE,CAAC,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAEjC,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAJlC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,yCAAyC;AACnD,oBAAA,SAAS,EAAE,CAAC,8BAA8B,EAAE,CAAC;AAC7C,iBAAA;;;ACND;;AAEG;;;;"}
1
+ {"version":3,"file":"lucca-front-ng-forms-rich-text-input-formatters-html.mjs","sources":["../../../packages/ng/forms/rich-text-input/formatters/html/html-formatter.ts","../../../packages/ng/forms/rich-text-input/formatters/html/html-formatter.directive.ts","../../../packages/ng/forms/rich-text-input/formatters/html/lucca-front-ng-forms-rich-text-input-formatters-html.ts"],"sourcesContent":["import { Provider } from '@angular/core';\nimport { $generateHtmlFromNodes, $generateNodesFromDOM } from '@lexical/html';\nimport { registerRichText } from '@lexical/rich-text';\nimport { RICH_TEXT_FORMATTER, RichTextFormatter } from '@lucca-front/ng/forms/rich-text-input';\nimport DOMPurify from 'isomorphic-dompurify';\nimport { $getRoot, $insertNodes, LexicalEditor } from 'lexical';\n\nexport class HtmlFormatter extends RichTextFormatter {\n\toverride registerTextPlugin(editor: LexicalEditor) {\n\t\treturn registerRichText(editor);\n\t}\n\n\toverride parse(editor: LexicalEditor, htmlString?: string | null): void {\n\t\tif (htmlString) {\n\t\t\tconst parser = new DOMParser();\n\t\t\tconst dom = parser.parseFromString(\n\t\t\t\tDOMPurify.sanitize(htmlString, {\n\t\t\t\t\tFORBID_ATTR: ['style', 'class'],\n\t\t\t\t}),\n\t\t\t\t'text/html',\n\t\t\t);\n\t\t\teditor.update(() => {\n\t\t\t\t// Once you have the DOM instance it's easy to generate LexicalNodes.\n\t\t\t\tconst nodes = $generateNodesFromDOM(editor, dom);\n\n\t\t\t\t// Select the root\n\t\t\t\t$getRoot().clear();\n\t\t\t\t$getRoot().select();\n\n\t\t\t\t// Insert them at a selection.\n\t\t\t\t$insertNodes(nodes);\n\t\t\t});\n\t\t}\n\t}\n\n\toverride format(editor: LexicalEditor): string {\n\t\tlet result = '';\n\t\teditor.getEditorState().read(() => (result = $generateHtmlFromNodes(editor)));\n\t\treturn DOMPurify.sanitize(result, {\n\t\t\tFORBID_ATTR: ['style', 'class'],\n\t\t});\n\t}\n}\n\nexport function provideLuRichTextHTMLFormatter(): Provider {\n\treturn {\n\t\tprovide: RICH_TEXT_FORMATTER,\n\t\tuseFactory: () => new HtmlFormatter(),\n\t};\n}\n","import { Directive } from '@angular/core';\nimport { provideLuRichTextHTMLFormatter } from './html-formatter';\n\n@Directive({\n\tselector: 'lu-rich-text-input[luWithHtmlFormatter]',\n\tproviders: [provideLuRichTextHTMLFormatter()],\n})\nexport class HtmlFormatterDirective {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;;AAOM,MAAO,aAAc,SAAQ,iBAAiB,CAAA;AAC1C,IAAA,kBAAkB,CAAC,MAAqB,EAAA;AAChD,QAAA,OAAO,gBAAgB,CAAC,MAAM,CAAC;IAChC;IAES,KAAK,CAAC,MAAqB,EAAE,UAA0B,EAAA;QAC/D,IAAI,UAAU,EAAE;AACf,YAAA,MAAM,MAAM,GAAG,IAAI,SAAS,EAAE;YAC9B,MAAM,GAAG,GAAG,MAAM,CAAC,eAAe,CACjC,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE;AAC9B,gBAAA,WAAW,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC;aAC/B,CAAC,EACF,WAAW,CACX;AACD,YAAA,MAAM,CAAC,MAAM,CAAC,MAAK;;gBAElB,MAAM,KAAK,GAAG,qBAAqB,CAAC,MAAM,EAAE,GAAG,CAAC;;AAGhD,gBAAA,QAAQ,EAAE,CAAC,KAAK,EAAE;AAClB,gBAAA,QAAQ,EAAE,CAAC,MAAM,EAAE;;gBAGnB,YAAY,CAAC,KAAK,CAAC;AACpB,YAAA,CAAC,CAAC;QACH;IACD;AAES,IAAA,MAAM,CAAC,MAAqB,EAAA;QACpC,IAAI,MAAM,GAAG,EAAE;AACf,QAAA,MAAM,CAAC,cAAc,EAAE,CAAC,IAAI,CAAC,OAAO,MAAM,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAAC,CAAC;AAC7E,QAAA,OAAO,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE;AACjC,YAAA,WAAW,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC;AAC/B,SAAA,CAAC;IACH;AACA;SAEe,8BAA8B,GAAA;IAC7C,OAAO;AACN,QAAA,OAAO,EAAE,mBAAmB;AAC5B,QAAA,UAAU,EAAE,MAAM,IAAI,aAAa,EAAE;KACrC;AACF;;MC1Ca,sBAAsB,CAAA;+GAAtB,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,yCAAA,EAAA,SAAA,EAFvB,CAAC,8BAA8B,EAAE,CAAC,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAEjC,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAJlC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,yCAAyC;AACnD,oBAAA,SAAS,EAAE,CAAC,8BAA8B,EAAE,CAAC;AAC7C,iBAAA;;;ACND;;AAEG;;;;"}
@@ -2,6 +2,7 @@ import { UNORDERED_LIST, HEADING, ORDERED_LIST, BOLD_ITALIC_STAR, BOLD_ITALIC_UN
2
2
  import { registerRichText } from '@lexical/rich-text';
3
3
  import { mergeRegister } from '@lexical/utils';
4
4
  import { RichTextFormatter, RICH_TEXT_FORMATTER, $createTagNode, TagNode } from '@lucca-front/ng/forms/rich-text-input';
5
+ import DOMPurify from 'isomorphic-dompurify';
5
6
  import * as i0 from '@angular/core';
6
7
  import { Directive } from '@angular/core';
7
8
 
@@ -32,13 +33,13 @@ class MarkdownFormatter extends RichTextFormatter {
32
33
  }
33
34
  parse(editor, markdown) {
34
35
  editor.update(() => {
35
- $convertFromMarkdownString(markdown ?? '', this.#transformers, undefined, true);
36
+ $convertFromMarkdownString(DOMPurify.sanitize(markdown ?? ''), this.#transformers, undefined, true);
36
37
  });
37
38
  }
38
39
  format(editor) {
39
40
  let result = '';
40
41
  editor.getEditorState().read(() => (result = $convertToMarkdownString(this.#transformers, undefined, true)));
41
- return result;
42
+ return DOMPurify.sanitize(result);
42
43
  }
43
44
  }
44
45
  function provideLuRichTextMarkdownFormatter(transformers) {
@@ -70,10 +71,10 @@ const TAGS = {
70
71
  };
71
72
 
72
73
  class MarkdownFormatterDirective {
73
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.15", ngImport: i0, type: MarkdownFormatterDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
74
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.15", type: MarkdownFormatterDirective, isStandalone: true, selector: "lu-rich-text-input[luWithMarkdownFormatter]", providers: [provideLuRichTextMarkdownFormatter()], ngImport: i0 }); }
74
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: MarkdownFormatterDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
75
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.14", type: MarkdownFormatterDirective, isStandalone: true, selector: "lu-rich-text-input[luWithMarkdownFormatter]", providers: [provideLuRichTextMarkdownFormatter()], ngImport: i0 }); }
75
76
  }
76
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.15", ngImport: i0, type: MarkdownFormatterDirective, decorators: [{
77
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: MarkdownFormatterDirective, decorators: [{
77
78
  type: Directive,
78
79
  args: [{
79
80
  selector: 'lu-rich-text-input[luWithMarkdownFormatter]',
@@ -81,10 +82,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.15", ngImpo
81
82
  }]
82
83
  }] });
83
84
  class MarkdownFormatterWithTagsDirective {
84
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.15", ngImport: i0, type: MarkdownFormatterWithTagsDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
85
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.15", type: MarkdownFormatterWithTagsDirective, isStandalone: true, selector: "lu-rich-text-input[luWithMarkdownTagsFormatter]", providers: [provideLuRichTextMarkdownFormatter([...DEFAULT_MARKDOWN_TRANSFORMERS, TAGS])], ngImport: i0 }); }
85
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: MarkdownFormatterWithTagsDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
86
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.14", type: MarkdownFormatterWithTagsDirective, isStandalone: true, selector: "lu-rich-text-input[luWithMarkdownTagsFormatter]", providers: [provideLuRichTextMarkdownFormatter([...DEFAULT_MARKDOWN_TRANSFORMERS, TAGS])], ngImport: i0 }); }
86
87
  }
87
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.15", ngImport: i0, type: MarkdownFormatterWithTagsDirective, decorators: [{
88
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: MarkdownFormatterWithTagsDirective, decorators: [{
88
89
  type: Directive,
89
90
  args: [{
90
91
  selector: 'lu-rich-text-input[luWithMarkdownTagsFormatter]',
@@ -1 +1 @@
1
- {"version":3,"file":"lucca-front-ng-forms-rich-text-input-formatters-markdown.mjs","sources":["../../../packages/ng/forms/rich-text-input/formatters/markdown/markdown-formatter.ts","../../../packages/ng/forms/rich-text-input/formatters/markdown/transformers/tag.transformers.ts","../../../packages/ng/forms/rich-text-input/formatters/markdown/markdown-formatter.directive.ts","../../../packages/ng/forms/rich-text-input/formatters/markdown/lucca-front-ng-forms-rich-text-input-formatters-markdown.ts"],"sourcesContent":["import { Provider } from '@angular/core';\nimport {\n\t$convertFromMarkdownString,\n\t$convertToMarkdownString,\n\tBOLD_ITALIC_STAR,\n\tBOLD_ITALIC_UNDERSCORE,\n\tBOLD_STAR,\n\tBOLD_UNDERSCORE,\n\tHEADING,\n\tINLINE_CODE,\n\tITALIC_STAR,\n\tITALIC_UNDERSCORE,\n\tLINK,\n\tORDERED_LIST,\n\tregisterMarkdownShortcuts,\n\tSTRIKETHROUGH,\n\tTransformer,\n\tUNORDERED_LIST,\n} from '@lexical/markdown';\nimport { registerRichText } from '@lexical/rich-text';\nimport { mergeRegister } from '@lexical/utils';\nimport { RICH_TEXT_FORMATTER, RichTextFormatter } from '@lucca-front/ng/forms/rich-text-input';\nimport { LexicalEditor } from 'lexical';\n\nexport const DEFAULT_MARKDOWN_TRANSFORMERS: Transformer[] = [\n\tUNORDERED_LIST,\n\tHEADING,\n\tORDERED_LIST,\n\tBOLD_ITALIC_STAR,\n\tBOLD_ITALIC_UNDERSCORE,\n\tBOLD_STAR,\n\tBOLD_UNDERSCORE,\n\tINLINE_CODE,\n\tITALIC_STAR,\n\tITALIC_UNDERSCORE,\n\tSTRIKETHROUGH,\n\tLINK,\n];\n\nexport class MarkdownFormatter extends RichTextFormatter {\n\t#transformers: Transformer[] = DEFAULT_MARKDOWN_TRANSFORMERS;\n\n\tconstructor(transformers?: Transformer[]) {\n\t\tsuper();\n\t\tif (transformers) {\n\t\t\tthis.#transformers = transformers;\n\t\t}\n\t}\n\n\toverride registerTextPlugin(editor: LexicalEditor): () => void {\n\t\treturn mergeRegister(registerMarkdownShortcuts(editor, this.#transformers), registerRichText(editor));\n\t}\n\n\toverride parse(editor: LexicalEditor, markdown?: string | null): void {\n\t\teditor.update(() => {\n\t\t\t$convertFromMarkdownString(markdown ?? '', this.#transformers, undefined, true);\n\t\t});\n\t}\n\n\toverride format(editor: LexicalEditor): string {\n\t\tlet result = '';\n\t\teditor.getEditorState().read(() => (result = $convertToMarkdownString(this.#transformers, undefined, true)));\n\t\treturn result;\n\t}\n}\n\nexport function provideLuRichTextMarkdownFormatter(transformers?: Transformer[]): Provider {\n\treturn {\n\t\tprovide: RICH_TEXT_FORMATTER,\n\t\tuseFactory: () => new MarkdownFormatter(transformers),\n\t};\n}\n","import { TextMatchTransformer } from '@lexical/markdown';\nimport { $createTagNode, TagNode } from '@lucca-front/ng/forms/rich-text-input';\n\n/**\n * Transformer for tag nodes\n * It will match the following pattern `{{Tag}}` and create a TagNode (using `replace` function).\n * It will export the tag node to markdown (as `{{Tag}}`) using the `export` function.\n *\n * @docs https://github.com/facebook/lexical/tree/main/packages/lexical-markdown#transformers\n */\nexport const TAGS: TextMatchTransformer = {\n\tdependencies: [TagNode],\n\texport: (node) => (node instanceof TagNode ? `{{${node.getTagKey()}}}` : null),\n\timportRegExp: /{{(\\w+)}}/,\n\tregExp: /{{(\\w+)}}/,\n\treplace: (textNode, match) => {\n\t\tif (match[1]) {\n\t\t\ttextNode.replace($createTagNode(match[1].trim()));\n\t\t}\n\t},\n\ttype: 'text-match',\n\ttrigger: '{{',\n};\n","import { Directive } from '@angular/core';\nimport { DEFAULT_MARKDOWN_TRANSFORMERS, provideLuRichTextMarkdownFormatter } from './markdown-formatter';\nimport { TAGS } from './transformers';\n\n@Directive({\n\tselector: 'lu-rich-text-input[luWithMarkdownFormatter]',\n\tproviders: [provideLuRichTextMarkdownFormatter()],\n})\nexport class MarkdownFormatterDirective {}\n\n@Directive({\n\tselector: 'lu-rich-text-input[luWithMarkdownTagsFormatter]',\n\tproviders: [provideLuRichTextMarkdownFormatter([...DEFAULT_MARKDOWN_TRANSFORMERS, TAGS])],\n})\nexport class MarkdownFormatterWithTagsDirective {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lucca-front-ng-forms-rich-text-input-formatters-markdown.mjs","sources":["../../../packages/ng/forms/rich-text-input/formatters/markdown/markdown-formatter.ts","../../../packages/ng/forms/rich-text-input/formatters/markdown/transformers/tag.transformers.ts","../../../packages/ng/forms/rich-text-input/formatters/markdown/markdown-formatter.directive.ts","../../../packages/ng/forms/rich-text-input/formatters/markdown/lucca-front-ng-forms-rich-text-input-formatters-markdown.ts"],"sourcesContent":["import { Provider } from '@angular/core';\nimport {\n\t$convertFromMarkdownString,\n\t$convertToMarkdownString,\n\tBOLD_ITALIC_STAR,\n\tBOLD_ITALIC_UNDERSCORE,\n\tBOLD_STAR,\n\tBOLD_UNDERSCORE,\n\tHEADING,\n\tINLINE_CODE,\n\tITALIC_STAR,\n\tITALIC_UNDERSCORE,\n\tLINK,\n\tORDERED_LIST,\n\tregisterMarkdownShortcuts,\n\tSTRIKETHROUGH,\n\tTransformer,\n\tUNORDERED_LIST,\n} from '@lexical/markdown';\nimport { registerRichText } from '@lexical/rich-text';\nimport { mergeRegister } from '@lexical/utils';\nimport { RICH_TEXT_FORMATTER, RichTextFormatter } from '@lucca-front/ng/forms/rich-text-input';\nimport DOMPurify from 'isomorphic-dompurify';\nimport { LexicalEditor } from 'lexical';\n\nexport const DEFAULT_MARKDOWN_TRANSFORMERS: Transformer[] = [\n\tUNORDERED_LIST,\n\tHEADING,\n\tORDERED_LIST,\n\tBOLD_ITALIC_STAR,\n\tBOLD_ITALIC_UNDERSCORE,\n\tBOLD_STAR,\n\tBOLD_UNDERSCORE,\n\tINLINE_CODE,\n\tITALIC_STAR,\n\tITALIC_UNDERSCORE,\n\tSTRIKETHROUGH,\n\tLINK,\n];\n\nexport class MarkdownFormatter extends RichTextFormatter {\n\t#transformers: Transformer[] = DEFAULT_MARKDOWN_TRANSFORMERS;\n\n\tconstructor(transformers?: Transformer[]) {\n\t\tsuper();\n\t\tif (transformers) {\n\t\t\tthis.#transformers = transformers;\n\t\t}\n\t}\n\n\toverride registerTextPlugin(editor: LexicalEditor): () => void {\n\t\treturn mergeRegister(registerMarkdownShortcuts(editor, this.#transformers), registerRichText(editor));\n\t}\n\n\toverride parse(editor: LexicalEditor, markdown?: string | null): void {\n\t\teditor.update(() => {\n\t\t\t$convertFromMarkdownString(DOMPurify.sanitize(markdown ?? ''), this.#transformers, undefined, true);\n\t\t});\n\t}\n\n\toverride format(editor: LexicalEditor): string {\n\t\tlet result = '';\n\t\teditor.getEditorState().read(() => (result = $convertToMarkdownString(this.#transformers, undefined, true)));\n\t\treturn DOMPurify.sanitize(result);\n\t}\n}\n\nexport function provideLuRichTextMarkdownFormatter(transformers?: Transformer[]): Provider {\n\treturn {\n\t\tprovide: RICH_TEXT_FORMATTER,\n\t\tuseFactory: () => new MarkdownFormatter(transformers),\n\t};\n}\n","import { TextMatchTransformer } from '@lexical/markdown';\nimport { $createTagNode, TagNode } from '@lucca-front/ng/forms/rich-text-input';\n\n/**\n * Transformer for tag nodes\n * It will match the following pattern `{{Tag}}` and create a TagNode (using `replace` function).\n * It will export the tag node to markdown (as `{{Tag}}`) using the `export` function.\n *\n * @docs https://github.com/facebook/lexical/tree/main/packages/lexical-markdown#transformers\n */\nexport const TAGS: TextMatchTransformer = {\n\tdependencies: [TagNode],\n\texport: (node) => (node instanceof TagNode ? `{{${node.getTagKey()}}}` : null),\n\timportRegExp: /{{(\\w+)}}/,\n\tregExp: /{{(\\w+)}}/,\n\treplace: (textNode, match) => {\n\t\tif (match[1]) {\n\t\t\ttextNode.replace($createTagNode(match[1].trim()));\n\t\t}\n\t},\n\ttype: 'text-match',\n\ttrigger: '{{',\n};\n","import { Directive } from '@angular/core';\nimport { DEFAULT_MARKDOWN_TRANSFORMERS, provideLuRichTextMarkdownFormatter } from './markdown-formatter';\nimport { TAGS } from './transformers';\n\n@Directive({\n\tselector: 'lu-rich-text-input[luWithMarkdownFormatter]',\n\tproviders: [provideLuRichTextMarkdownFormatter()],\n})\nexport class MarkdownFormatterDirective {}\n\n@Directive({\n\tselector: 'lu-rich-text-input[luWithMarkdownTagsFormatter]',\n\tproviders: [provideLuRichTextMarkdownFormatter([...DEFAULT_MARKDOWN_TRANSFORMERS, TAGS])],\n})\nexport class MarkdownFormatterWithTagsDirective {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
+ import { registerPlainText } from '@lexical/plain-text';
2
+ import { $rootTextContent } from '@lexical/text';
1
3
  import { $createTagNode, RichTextFormatter, RICH_TEXT_FORMATTER } from '@lucca-front/ng/forms/rich-text-input';
2
4
  import { $getRoot, $createParagraphNode, $createTextNode } from 'lexical';
3
- import { $rootTextContent } from '@lexical/text';
4
- import { registerPlainText } from '@lexical/plain-text';
5
5
  import * as i0 from '@angular/core';
6
6
  import { Directive } from '@angular/core';
7
7
 
@@ -56,7 +56,9 @@ class PlainTextFormatter extends RichTextFormatter {
56
56
  }
57
57
  const startIndex = match.index || 0;
58
58
  const endIndex = startIndex + match[0].length;
59
- let transformedNode, nodeAfter, nodeBefore;
59
+ let transformedNode = undefined;
60
+ let nodeAfter = undefined;
61
+ let nodeBefore = undefined;
60
62
  if (startIndex === 0) {
61
63
  [transformedNode, nodeAfter] = textNode.splitText(endIndex);
62
64
  }
@@ -84,10 +86,10 @@ function provideLuRichTextPlainTextFormatter(transformers) {
84
86
  }
85
87
 
86
88
  class PlainTextFormatterWithTagsDirective {
87
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.15", ngImport: i0, type: PlainTextFormatterWithTagsDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
88
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.15", type: PlainTextFormatterWithTagsDirective, isStandalone: true, selector: "lu-rich-text-input[luWithPlainTextTagsFormatter]", providers: [provideLuRichTextPlainTextFormatter()], ngImport: i0 }); }
89
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PlainTextFormatterWithTagsDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
90
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.14", type: PlainTextFormatterWithTagsDirective, isStandalone: true, selector: "lu-rich-text-input[luWithPlainTextTagsFormatter]", providers: [provideLuRichTextPlainTextFormatter()], ngImport: i0 }); }
89
91
  }
90
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.15", ngImport: i0, type: PlainTextFormatterWithTagsDirective, decorators: [{
92
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PlainTextFormatterWithTagsDirective, decorators: [{
91
93
  type: Directive,
92
94
  args: [{
93
95
  selector: 'lu-rich-text-input[luWithPlainTextTagsFormatter]',
@@ -1 +1 @@
1
- {"version":3,"file":"lucca-front-ng-forms-rich-text-input-formatters-plain-text.mjs","sources":["../../../packages/ng/forms/rich-text-input/formatters/plain-text/transformers/tag.transformers.ts","../../../packages/ng/forms/rich-text-input/formatters/plain-text/plain-text-formatter.ts","../../../packages/ng/forms/rich-text-input/formatters/plain-text/plain-text-formatter.directive.ts","../../../packages/ng/forms/rich-text-input/formatters/plain-text/lucca-front-ng-forms-rich-text-input-formatters-plain-text.ts"],"sourcesContent":["import { $createTagNode } from '@lucca-front/ng/forms/rich-text-input';\nimport { PlainTextTransformer } from './plain-text-transformer';\n\n/**\n * Transformer for tag nodes\n * It will match the following pattern `{{Tag}}` and create a TagNode (using `replace` function).\n *\n */\nexport const PLAINTEXT_TAGS: PlainTextTransformer = {\n\tregExp: /{{(\\w+)}}/,\n\treplace: (textNode, match) => {\n\t\tif (match[1]) {\n\t\t\ttextNode.replace($createTagNode(match[1].trim()));\n\t\t}\n\t},\n};\n","import { Provider } from '@angular/core';\nimport { RICH_TEXT_FORMATTER, RichTextFormatter } from '@lucca-front/ng/forms/rich-text-input';\nimport { $createParagraphNode, $createTextNode, $getRoot, LexicalEditor, TextNode } from 'lexical';\nimport { $rootTextContent } from '@lexical/text';\nimport { PLAINTEXT_TAGS, PlainTextTransformer } from './transformers';\nimport { registerPlainText } from '@lexical/plain-text';\n\nexport class PlainTextFormatter extends RichTextFormatter {\n\t#transformers: PlainTextTransformer[] = [PLAINTEXT_TAGS];\n\n\tconstructor(transformers?: PlainTextTransformer[]) {\n\t\tsuper();\n\t\tif (transformers) {\n\t\t\tthis.#transformers = transformers;\n\t\t}\n\t}\n\n\toverride registerTextPlugin(editor: LexicalEditor) {\n\t\treturn registerPlainText(editor);\n\t}\n\n\toverride parse(editor: LexicalEditor, text?: string | null): void {\n\t\teditor.update(() => {\n\t\t\tconst rootNode = $getRoot();\n\t\t\trootNode.clear();\n\t\t\tif (text) {\n\t\t\t\tconst paragraphNode = $createParagraphNode();\n\t\t\t\tconst textNode = $createTextNode(text);\n\t\t\t\tparagraphNode.append(textNode);\n\t\t\t\trootNode.append(paragraphNode);\n\t\t\t\tthis.#applyTransformers(textNode);\n\t\t\t}\n\t\t});\n\t}\n\n\toverride format(editor: LexicalEditor): string {\n\t\tlet result = '';\n\t\teditor.getEditorState().read(() => (result = $rootTextContent()));\n\t\treturn result;\n\t}\n\n\t#applyTransformers(textNode: TextNode): void {\n\t\tfor (const t of this.#transformers) {\n\t\t\tconst match = textNode.getTextContent().match(t.regExp);\n\n\t\t\tif (!match) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tconst startIndex = match.index || 0;\n\t\t\tconst endIndex = startIndex + match[0].length;\n\n\t\t\tlet transformedNode: TextNode, nodeAfter: TextNode, nodeBefore: TextNode;\n\t\t\tif (startIndex === 0) {\n\t\t\t\t[transformedNode, nodeAfter] = textNode.splitText(endIndex);\n\t\t\t} else {\n\t\t\t\t[nodeBefore, transformedNode, nodeAfter] = textNode.splitText(startIndex, endIndex);\n\t\t\t}\n\t\t\tif (transformedNode) {\n\t\t\t\tt.replace(transformedNode, match);\n\t\t\t}\n\t\t\tif (nodeAfter) {\n\t\t\t\tthis.#applyTransformers(nodeAfter);\n\t\t\t}\n\t\t\tif (nodeBefore) {\n\t\t\t\tthis.#applyTransformers(nodeBefore);\n\t\t\t}\n\t\t\tbreak;\n\t\t}\n\t}\n}\n\nexport function provideLuRichTextPlainTextFormatter(transformers?: PlainTextTransformer[]): Provider {\n\treturn {\n\t\tprovide: RICH_TEXT_FORMATTER,\n\t\tuseFactory: () => new PlainTextFormatter(transformers),\n\t};\n}\n","import { Directive } from '@angular/core';\nimport { provideLuRichTextPlainTextFormatter } from './plain-text-formatter';\n\n@Directive({\n\tselector: 'lu-rich-text-input[luWithPlainTextTagsFormatter]',\n\tproviders: [provideLuRichTextPlainTextFormatter()],\n})\nexport class PlainTextFormatterWithTagsDirective {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lucca-front-ng-forms-rich-text-input-formatters-plain-text.mjs","sources":["../../../packages/ng/forms/rich-text-input/formatters/plain-text/transformers/tag.transformers.ts","../../../packages/ng/forms/rich-text-input/formatters/plain-text/plain-text-formatter.ts","../../../packages/ng/forms/rich-text-input/formatters/plain-text/plain-text-formatter.directive.ts","../../../packages/ng/forms/rich-text-input/formatters/plain-text/lucca-front-ng-forms-rich-text-input-formatters-plain-text.ts"],"sourcesContent":["import { $createTagNode } from '@lucca-front/ng/forms/rich-text-input';\nimport { PlainTextTransformer } from './plain-text-transformer';\n\n/**\n * Transformer for tag nodes\n * It will match the following pattern `{{Tag}}` and create a TagNode (using `replace` function).\n *\n */\nexport const PLAINTEXT_TAGS: PlainTextTransformer = {\n\tregExp: /{{(\\w+)}}/,\n\treplace: (textNode, match) => {\n\t\tif (match[1]) {\n\t\t\ttextNode.replace($createTagNode(match[1].trim()));\n\t\t}\n\t},\n};\n","import { Provider } from '@angular/core';\nimport { registerPlainText } from '@lexical/plain-text';\nimport { $rootTextContent } from '@lexical/text';\nimport { RICH_TEXT_FORMATTER, RichTextFormatter } from '@lucca-front/ng/forms/rich-text-input';\nimport { $createParagraphNode, $createTextNode, $getRoot, LexicalEditor, TextNode } from 'lexical';\nimport { PLAINTEXT_TAGS, PlainTextTransformer } from './transformers';\n\nexport class PlainTextFormatter extends RichTextFormatter {\n\t#transformers: PlainTextTransformer[] = [PLAINTEXT_TAGS];\n\n\tconstructor(transformers?: PlainTextTransformer[]) {\n\t\tsuper();\n\t\tif (transformers) {\n\t\t\tthis.#transformers = transformers;\n\t\t}\n\t}\n\n\toverride registerTextPlugin(editor: LexicalEditor) {\n\t\treturn registerPlainText(editor);\n\t}\n\n\toverride parse(editor: LexicalEditor, text?: string | null): void {\n\t\teditor.update(() => {\n\t\t\tconst rootNode = $getRoot();\n\t\t\trootNode.clear();\n\t\t\tif (text) {\n\t\t\t\tconst paragraphNode = $createParagraphNode();\n\t\t\t\tconst textNode = $createTextNode(text);\n\t\t\t\tparagraphNode.append(textNode);\n\t\t\t\trootNode.append(paragraphNode);\n\t\t\t\tthis.#applyTransformers(textNode);\n\t\t\t}\n\t\t});\n\t}\n\n\toverride format(editor: LexicalEditor): string {\n\t\tlet result = '';\n\t\teditor.getEditorState().read(() => (result = $rootTextContent()));\n\t\treturn result;\n\t}\n\n\t#applyTransformers(textNode: TextNode): void {\n\t\tfor (const t of this.#transformers) {\n\t\t\tconst match = textNode.getTextContent().match(t.regExp);\n\n\t\t\tif (!match) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tconst startIndex = match.index || 0;\n\t\t\tconst endIndex = startIndex + match[0].length;\n\n\t\t\tlet transformedNode: TextNode | undefined = undefined;\n\t\t\tlet nodeAfter: TextNode | undefined = undefined;\n\t\t\tlet nodeBefore: TextNode | undefined = undefined;\n\n\t\t\tif (startIndex === 0) {\n\t\t\t\t[transformedNode, nodeAfter] = textNode.splitText(endIndex);\n\t\t\t} else {\n\t\t\t\t[nodeBefore, transformedNode, nodeAfter] = textNode.splitText(startIndex, endIndex);\n\t\t\t}\n\t\t\tif (transformedNode) {\n\t\t\t\tt.replace(transformedNode, match);\n\t\t\t}\n\t\t\tif (nodeAfter) {\n\t\t\t\tthis.#applyTransformers(nodeAfter);\n\t\t\t}\n\t\t\tif (nodeBefore) {\n\t\t\t\tthis.#applyTransformers(nodeBefore);\n\t\t\t}\n\t\t\tbreak;\n\t\t}\n\t}\n}\n\nexport function provideLuRichTextPlainTextFormatter(transformers?: PlainTextTransformer[]): Provider {\n\treturn {\n\t\tprovide: RICH_TEXT_FORMATTER,\n\t\tuseFactory: () => new PlainTextFormatter(transformers),\n\t};\n}\n","import { Directive } from '@angular/core';\nimport { provideLuRichTextPlainTextFormatter } from './plain-text-formatter';\n\n@Directive({\n\tselector: 'lu-rich-text-input[luWithPlainTextTagsFormatter]',\n\tproviders: [provideLuRichTextPlainTextFormatter()],\n})\nexport class PlainTextFormatterWithTagsDirective {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}