@globalpayments/vega 2.37.0 → 2.37.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 (222) hide show
  1. package/dist/cjs/{app-globals-7980768c.js → app-globals-7087f121.js} +4 -4
  2. package/dist/cjs/{content-state-9a9a4bd8.js → content-state-f97d3278.js} +2 -2
  3. package/dist/cjs/{form-field-controller-slimmer-0303f4a7.js → form-field-controller-slimmer-48c0ad0b.js} +1 -1
  4. package/dist/cjs/{image-annotation-action-8e622f61.js → image-annotation-action-7d82f7e1.js} +2 -2
  5. package/dist/cjs/{index-7c81de06.js → index-0546e2ea.js} +1 -1
  6. package/dist/cjs/index.cjs.js +5 -5
  7. package/dist/cjs/loader.cjs.js +6 -6
  8. package/dist/cjs/{node-annotation.abstract-2c8373c1.js → node-annotation.abstract-4f6df9cf.js} +1 -1
  9. package/dist/cjs/{string-input-formatter-slimmer-396b1cee.js → string-input-formatter-slimmer-f45931fd.js} +113 -34
  10. package/dist/cjs/{sub-state-notify-slimmer-ae490543.js → sub-state-notify-slimmer-b1f1e61a.js} +1 -1
  11. package/dist/cjs/{sub-state-observer-slimmer-080731bc.js → sub-state-observer-slimmer-02634647.js} +1 -1
  12. package/dist/cjs/vega-app-footer.cjs.entry.js +3 -0
  13. package/dist/cjs/vega-button-group_2.cjs.entry.js +3 -3
  14. package/dist/cjs/vega-button-link.cjs.entry.js +1 -0
  15. package/dist/cjs/vega-calendar_3.cjs.entry.js +3 -3
  16. package/dist/cjs/vega-checkbox_2.cjs.entry.js +11 -4
  17. package/dist/cjs/vega-color-picker.cjs.entry.js +2 -2
  18. package/dist/cjs/vega-combo-box.cjs.entry.js +2 -2
  19. package/dist/cjs/vega-date-picker_2.cjs.entry.js +6 -6
  20. package/dist/cjs/vega-dropdown_5.cjs.entry.js +3 -3
  21. package/dist/cjs/vega-env-manager-23b8b23c.js +2 -2
  22. package/dist/cjs/vega-file-uploader.cjs.entry.js +2 -2
  23. package/dist/cjs/vega-form.cjs.entry.js +2 -2
  24. package/dist/cjs/vega-image-uploader.cjs.entry.js +3 -2
  25. package/dist/cjs/vega-input-credit-card.cjs.entry.js +2 -2
  26. package/dist/cjs/vega-input-numeric.cjs.entry.js +3 -3
  27. package/dist/cjs/vega-input-phone-number.cjs.entry.js +5 -2
  28. package/dist/cjs/vega-input-range.cjs.entry.js +2 -2
  29. package/dist/cjs/vega-input-select.cjs.entry.js +2 -2
  30. package/dist/cjs/vega-input.cjs.entry.js +10 -8
  31. package/dist/cjs/{vega-internal-event-id-b12071ea.js → vega-internal-event-id-bda63e14.js} +2 -0
  32. package/dist/cjs/vega-item-toggle.cjs.entry.js +2 -0
  33. package/dist/cjs/vega-left-nav_5.cjs.entry.js +6 -4
  34. package/dist/cjs/vega-loader-wrapper_2.cjs.entry.js +54 -1
  35. package/dist/cjs/vega-popover_2.cjs.entry.js +1 -1
  36. package/dist/cjs/vega-radio_2.cjs.entry.js +2 -2
  37. package/dist/cjs/vega-rich-text-content.cjs.entry.js +6 -6
  38. package/dist/cjs/vega-rich-text-editor_4.cjs.entry.js +681 -413
  39. package/dist/cjs/vega-selection-chip_2.cjs.entry.js +4 -4
  40. package/dist/cjs/vega-selection-tile_2.cjs.entry.js +4 -4
  41. package/dist/cjs/vega-sidenav_3.cjs.entry.js +3 -3
  42. package/dist/cjs/vega-signature-capture.cjs.entry.js +3 -2
  43. package/dist/cjs/{vega-skeleton-loader-controller-ef43cfc1.js → vega-skeleton-loader-controller-00dbdf29.js} +11 -3
  44. package/dist/cjs/vega-stepper.cjs.entry.js +2 -2
  45. package/dist/cjs/vega-table_8.cjs.entry.js +10 -7
  46. package/dist/cjs/vega-textarea.cjs.entry.js +2 -2
  47. package/dist/cjs/vega-time-picker_2.cjs.entry.js +2 -2
  48. package/dist/cjs/vega-toggle-switch.cjs.entry.js +2 -2
  49. package/dist/cjs/vega.cjs.js +6 -6
  50. package/dist/collection/components/vega-app-footer/vega-app-footer.js +12 -0
  51. package/dist/collection/components/vega-button-link/vega-button-link.js +4 -0
  52. package/dist/collection/components/vega-checkbox/vega-checkbox.js +9 -1
  53. package/dist/collection/components/vega-image-uploader/vega-image-uploader.js +4 -0
  54. package/dist/collection/components/vega-input-phone-number/vega-input-phone-number.js +12 -0
  55. package/dist/collection/components/vega-input-select/vega-input-select.js +1 -1
  56. package/dist/collection/components/vega-item-toggle/vega-item-toggle.js +8 -0
  57. package/dist/collection/components/vega-loader-wrapper/slimmers/controllers/manage-vega-loader-wrapper-z-index-controller.js +49 -0
  58. package/dist/collection/components/vega-loader-wrapper/vega-loader-wrapper.js +5 -0
  59. package/dist/collection/components/vega-nav/vega-left-nav-link/vega-left-nav-link.js +7 -2
  60. package/dist/collection/components/vega-rich-text-editor/slimmers/controllers/delete-selected-nodes-controller.js +190 -0
  61. package/dist/collection/components/vega-rich-text-editor/slimmers/controllers/helper/input-event-handler/base-handler.js +18 -123
  62. package/dist/collection/components/vega-rich-text-editor/slimmers/controllers/helper/input-event-handler/delete-content-handler.js +9 -11
  63. package/dist/collection/components/vega-rich-text-editor/slimmers/controllers/helper/input-event-handler/insert-line-break-handler.js +8 -18
  64. package/dist/collection/components/vega-rich-text-editor/slimmers/controllers/helper/input-event-handler/insert-paste-handler.js +2 -2
  65. package/dist/collection/components/vega-rich-text-editor/slimmers/controllers/helper/input-event-handler/insert-text-handler.js +5 -4
  66. package/dist/collection/components/vega-rich-text-editor/slimmers/controllers/insert-composition-text-controller.js +244 -0
  67. package/dist/collection/components/vega-rich-text-editor/slimmers/controllers/selection-controller.js +13 -5
  68. package/dist/collection/components/vega-rich-text-editor/slimmers/controllers/user-input-controller.js +16 -70
  69. package/dist/collection/components/vega-rich-text-editor/vega-rich-text-editor.js +22 -14
  70. package/dist/collection/components/vega-signature-capture/vega-signature-capture.js +4 -0
  71. package/dist/collection/components/vega-table/slimmers/controllers/vega-table-editable-controller.js +2 -3
  72. package/dist/collection/components/vega-table/slimmers/renderers/vega-table-renderer.js +5 -1
  73. package/dist/collection/helpers/event-manager/event-id/vega-internal-event-id.js +1 -0
  74. package/dist/collection/helpers/formatter/string-formatter/custom-formatter-strategy.js +3 -1
  75. package/dist/collection/helpers/formatter/string-formatter/number-mask-strategy.js +3 -1
  76. package/dist/collection/helpers/formatter/string-formatter/string-format-strategy.abstract.js +52 -0
  77. package/dist/collection/helpers/formatter/string-formatter/string-mask-strategy.js +6 -7
  78. package/dist/collection/helpers/formatter/string-formatter/thousand-comma-strategy.js +2 -1
  79. package/dist/collection/helpers/formatter/test/string-formatter/custom-formatter-strategy.test.js +2 -1
  80. package/dist/collection/helpers/formatter/test/string-formatter/number-mask-strategy.test.js +9 -0
  81. package/dist/collection/helpers/formatter/test/string-formatter/string-mask-strategy.test.js +62 -4
  82. package/dist/collection/helpers/loading-indicator/tests/vega-loader-controller.test.js +29 -2
  83. package/dist/collection/helpers/loading-indicator/vega-loader-controller.js +11 -3
  84. package/dist/collection/helpers/slimmers/string-input-formatter-slimmer.js +53 -25
  85. package/dist/collection/helpers/slimmers/test/string-input-formatter-slimmer.test.js +2 -1
  86. package/dist/esm/{app-globals-6912a75d.js → app-globals-4cca4a96.js} +4 -4
  87. package/dist/esm/{content-state-c2d29b35.js → content-state-ccf5f960.js} +3 -3
  88. package/dist/esm/{form-field-controller-slimmer-7136b7fa.js → form-field-controller-slimmer-3535e76a.js} +1 -1
  89. package/dist/esm/{image-annotation-action-84422458.js → image-annotation-action-3da42221.js} +2 -2
  90. package/dist/esm/{index-b2045ad0.js → index-6e05b241.js} +1 -1
  91. package/dist/esm/index.js +5 -5
  92. package/dist/esm/loader.js +6 -6
  93. package/dist/esm/{node-annotation.abstract-a58b5a49.js → node-annotation.abstract-b2e36bc4.js} +1 -1
  94. package/dist/esm/{string-input-formatter-slimmer-0ecbf367.js → string-input-formatter-slimmer-d4132497.js} +113 -35
  95. package/dist/esm/{sub-state-notify-slimmer-4a201088.js → sub-state-notify-slimmer-51151fc3.js} +1 -1
  96. package/dist/esm/{sub-state-observer-slimmer-0d6da563.js → sub-state-observer-slimmer-d77a1c46.js} +1 -1
  97. package/dist/esm/vega-app-footer.entry.js +3 -0
  98. package/dist/esm/vega-button-group_2.entry.js +3 -3
  99. package/dist/esm/vega-button-link.entry.js +1 -0
  100. package/dist/esm/vega-calendar_3.entry.js +3 -3
  101. package/dist/esm/vega-checkbox_2.entry.js +11 -4
  102. package/dist/esm/vega-color-picker.entry.js +2 -2
  103. package/dist/esm/vega-combo-box.entry.js +2 -2
  104. package/dist/esm/vega-date-picker_2.entry.js +6 -6
  105. package/dist/esm/vega-dropdown_5.entry.js +3 -3
  106. package/dist/esm/vega-env-manager-8f8dc473.js +2 -2
  107. package/dist/esm/vega-file-uploader.entry.js +2 -2
  108. package/dist/esm/vega-form.entry.js +2 -2
  109. package/dist/esm/vega-image-uploader.entry.js +3 -2
  110. package/dist/esm/vega-input-credit-card.entry.js +2 -2
  111. package/dist/esm/vega-input-numeric.entry.js +3 -3
  112. package/dist/esm/vega-input-phone-number.entry.js +5 -2
  113. package/dist/esm/vega-input-range.entry.js +2 -2
  114. package/dist/esm/vega-input-select.entry.js +2 -2
  115. package/dist/esm/vega-input.entry.js +10 -8
  116. package/dist/esm/{vega-internal-event-id-458939b6.js → vega-internal-event-id-d0690d0d.js} +2 -1
  117. package/dist/esm/vega-item-toggle.entry.js +2 -0
  118. package/dist/esm/vega-left-nav_5.entry.js +6 -4
  119. package/dist/esm/vega-loader-wrapper_2.entry.js +55 -2
  120. package/dist/esm/vega-popover_2.entry.js +1 -1
  121. package/dist/esm/vega-radio_2.entry.js +2 -2
  122. package/dist/esm/vega-rich-text-content.entry.js +6 -6
  123. package/dist/esm/vega-rich-text-editor_4.entry.js +681 -413
  124. package/dist/esm/vega-selection-chip_2.entry.js +4 -4
  125. package/dist/esm/vega-selection-tile_2.entry.js +4 -4
  126. package/dist/esm/vega-sidenav_3.entry.js +3 -3
  127. package/dist/esm/vega-signature-capture.entry.js +3 -2
  128. package/dist/esm/{vega-skeleton-loader-controller-0044d77f.js → vega-skeleton-loader-controller-5aea7aeb.js} +11 -3
  129. package/dist/esm/vega-stepper.entry.js +2 -2
  130. package/dist/esm/vega-table_8.entry.js +10 -7
  131. package/dist/esm/vega-textarea.entry.js +2 -2
  132. package/dist/esm/vega-time-picker_2.entry.js +2 -2
  133. package/dist/esm/vega-toggle-switch.entry.js +2 -2
  134. package/dist/esm/vega.js +6 -6
  135. package/dist/types/components/vega-app-footer/vega-app-footer.d.ts +3 -0
  136. package/dist/types/components/vega-button-link/vega-button-link.d.ts +1 -0
  137. package/dist/types/components/vega-checkbox/vega-checkbox.d.ts +2 -0
  138. package/dist/types/components/vega-date-picker/slimmers/controllers/vega-date-picker-format-controller.d.ts +1 -1
  139. package/dist/types/components/vega-image-uploader/vega-image-uploader.d.ts +1 -0
  140. package/dist/types/components/vega-input/slimmers/controllers/vega-input-mask-config-controller.d.ts +1 -1
  141. package/dist/types/components/vega-input-phone-number/vega-input-phone-number.d.ts +3 -0
  142. package/dist/types/components/vega-input-select/types.d.ts +1 -0
  143. package/dist/types/components/vega-item-toggle/vega-item-toggle.d.ts +2 -0
  144. package/dist/types/components/vega-loader-wrapper/slimmers/controllers/manage-vega-loader-wrapper-z-index-controller.d.ts +21 -0
  145. package/dist/types/components/vega-loader-wrapper/vega-loader-wrapper.d.ts +2 -0
  146. package/dist/types/components/vega-nav/vega-left-nav-link/vega-left-nav-link.d.ts +3 -1
  147. package/dist/types/components/vega-rich-text-editor/slimmers/controllers/delete-selected-nodes-controller.d.ts +57 -0
  148. package/dist/types/components/vega-rich-text-editor/slimmers/controllers/helper/input-event-handler/base-handler.d.ts +11 -28
  149. package/dist/types/components/vega-rich-text-editor/slimmers/controllers/helper/input-event-handler/delete-content-handler.d.ts +4 -4
  150. package/dist/types/components/vega-rich-text-editor/slimmers/controllers/helper/input-event-handler/insert-line-break-handler.d.ts +1 -8
  151. package/dist/types/components/vega-rich-text-editor/slimmers/controllers/insert-composition-text-controller.d.ts +99 -0
  152. package/dist/types/components/vega-rich-text-editor/slimmers/controllers/selection-controller.d.ts +1 -0
  153. package/dist/types/components/vega-rich-text-editor/slimmers/controllers/user-input-controller.d.ts +2 -21
  154. package/dist/types/components/vega-rich-text-editor/vega-rich-text-editor.d.ts +7 -2
  155. package/dist/types/components/vega-signature-capture/vega-signature-capture.d.ts +1 -0
  156. package/dist/types/components/vega-table/slimmers/renderers/vega-table-renderer.d.ts +1 -0
  157. package/dist/types/components.d.ts +31 -5
  158. package/dist/types/helpers/event-manager/event-id/vega-internal-event-id.d.ts +1 -0
  159. package/dist/types/helpers/formatter/string-formatter/custom-formatter-strategy.d.ts +3 -3
  160. package/dist/types/helpers/formatter/string-formatter/number-mask-strategy.d.ts +2 -2
  161. package/dist/types/helpers/formatter/string-formatter/string-format-strategy.abstract.d.ts +48 -0
  162. package/dist/types/helpers/formatter/string-formatter/string-mask-strategy.d.ts +6 -10
  163. package/dist/types/helpers/formatter/string-formatter/thousand-comma-strategy.d.ts +2 -2
  164. package/dist/types/helpers/loading-indicator/vega-loader-controller.d.ts +1 -0
  165. package/dist/types/helpers/slimmers/string-input-formatter-slimmer.d.ts +20 -4
  166. package/dist/types/types/components.type.d.ts +1 -5
  167. package/dist/types/types/public-api.d.ts +2 -0
  168. package/dist/vega/index.esm.js +1 -1
  169. package/dist/vega/{p-2d36dbfe.js → p-0461e318.js} +1 -1
  170. package/dist/vega/{p-1f67c930.entry.js → p-12fe63c1.entry.js} +1 -1
  171. package/dist/vega/{p-29dd376c.entry.js → p-1b67c443.entry.js} +1 -1
  172. package/dist/vega/{p-5f82eb88.js → p-1d93b3a9.js} +1 -1
  173. package/dist/vega/p-20326c64.js +1 -0
  174. package/dist/vega/{p-fbb91e25.entry.js → p-23fd9401.entry.js} +1 -1
  175. package/dist/vega/{p-5d7d0085.entry.js → p-267cde46.entry.js} +1 -1
  176. package/dist/vega/{p-ca239f51.js → p-29d6ec6c.js} +1 -1
  177. package/dist/vega/{p-d57920df.entry.js → p-2fecbcf9.entry.js} +1 -1
  178. package/dist/vega/{p-fe9644a0.js → p-348e95ba.js} +1 -1
  179. package/dist/vega/{p-00de36e4.js → p-34bd9204.js} +1 -1
  180. package/dist/vega/{p-3aec260c.entry.js → p-3cb90bdf.entry.js} +1 -1
  181. package/dist/vega/{p-fcab2244.entry.js → p-3e8f9fcf.entry.js} +1 -1
  182. package/dist/vega/{p-233e6715.entry.js → p-497f2f86.entry.js} +1 -1
  183. package/dist/vega/p-50eabdca.entry.js +1 -0
  184. package/dist/vega/{p-503ff1ef.js → p-52a8a4f8.js} +1 -1
  185. package/dist/vega/p-5f377954.js +1 -1
  186. package/dist/vega/{p-766a0cdd.entry.js → p-6419e13e.entry.js} +1 -1
  187. package/dist/vega/{p-b2b41aa4.entry.js → p-7198d675.entry.js} +1 -1
  188. package/dist/vega/p-76a8ccbb.js +1 -0
  189. package/dist/vega/{p-00f4cf6a.entry.js → p-7baa4fae.entry.js} +1 -1
  190. package/dist/vega/p-7edcb8d0.entry.js +1 -0
  191. package/dist/vega/{p-bbea0599.entry.js → p-904b489a.entry.js} +1 -1
  192. package/dist/vega/{p-fea15767.entry.js → p-9689ad99.entry.js} +1 -1
  193. package/dist/vega/p-9728d571.entry.js +1 -0
  194. package/dist/vega/{p-95e50f3a.entry.js → p-a2a34239.entry.js} +1 -1
  195. package/dist/vega/{p-b1096431.entry.js → p-a7e078ac.entry.js} +1 -1
  196. package/dist/vega/{p-eb798062.entry.js → p-a7f40a65.entry.js} +1 -1
  197. package/dist/vega/{p-7fedfba5.js → p-a8b16ff2.js} +1 -1
  198. package/dist/vega/{p-9625162b.entry.js → p-aed80794.entry.js} +1 -1
  199. package/dist/vega/{p-7da8b05f.js → p-b517ed15.js} +1 -1
  200. package/dist/vega/{p-b6b4e40f.entry.js → p-b809f3d7.entry.js} +1 -1
  201. package/dist/vega/{p-0b9480a9.entry.js → p-b9a0f136.entry.js} +1 -1
  202. package/dist/vega/{p-5a19bcb5.entry.js → p-ba077ca8.entry.js} +1 -1
  203. package/dist/vega/{p-53360bc2.entry.js → p-ba2833c0.entry.js} +1 -1
  204. package/dist/vega/{p-13c22d72.entry.js → p-bf4996d5.entry.js} +1 -1
  205. package/dist/vega/{p-570bdeb5.entry.js → p-cb4fd6e1.entry.js} +1 -1
  206. package/dist/vega/p-e4ce559d.entry.js +1 -0
  207. package/dist/vega/{p-cfd486ab.entry.js → p-e9785742.entry.js} +1 -1
  208. package/dist/vega/p-e9a5bd12.entry.js +1 -0
  209. package/dist/vega/p-ecaf4cfa.entry.js +1 -0
  210. package/dist/vega/{p-fb5c2cc6.entry.js → p-ee2e4bff.entry.js} +1 -1
  211. package/dist/vega/{p-8f8ab0d3.js → p-f86ec91b.js} +1 -1
  212. package/dist/vega/vega.esm.js +1 -1
  213. package/package.json +1 -1
  214. package/dist/types/helpers/formatter/string-formatter/string-format-strategy.d.ts +0 -12
  215. package/dist/vega/p-34caa637.entry.js +0 -1
  216. package/dist/vega/p-497db801.entry.js +0 -1
  217. package/dist/vega/p-4c18ff36.js +0 -1
  218. package/dist/vega/p-6705ce8f.entry.js +0 -1
  219. package/dist/vega/p-775fa5dd.entry.js +0 -1
  220. package/dist/vega/p-98043367.entry.js +0 -1
  221. package/dist/vega/p-a98475a2.entry.js +0 -1
  222. package/dist/vega/p-c2ded423.js +0 -1
@@ -5,24 +5,24 @@ import { g as getActiveElement, s as sanitizeVegaComponent } from './component-c
5
5
  import { c as createEnterKeyHandlerToTriggerClick } from './accessibility-e5fd0fab.js';
6
6
  import { C as ChangeManager } from './change-manager-6a7eb88c.js';
7
7
  import { d as domNodeSubjectFactory, b as VegaDropdownClick, f as VegaChange, O as VegaImageInserted, a as VegaClick, L as VegaPopoverShow, M as VegaPopoverHide } from './dom-node-subject-factory-97deb349.js';
8
- import { a as VegaInternalComponentDidRender, b as VegaInternalRichTextEditorSelectionRangeChange, V as VegaInternalRichTextEditorFlushChanges, p as VegaInternalRichTextImageClick, q as VegaInternalRichTextImageDeleteButtonClicked, l as VegaInternalPopoverUpdateTarget } from './vega-internal-event-id-458939b6.js';
9
- import { b as ToolbarButtonSlimmer, I as ImageAnnotationAction, T as TextNodeRenderingRegistry, a as TextColorToolbarButtonSlimmer } from './image-annotation-action-84422458.js';
8
+ import { a as VegaInternalComponentDidRender, b as VegaInternalRichTextEditorSelectionRangeChange, V as VegaInternalRichTextEditorFlushChanges, p as VegaInternalRichTextEditDeleteSelectedNodes, q as VegaInternalRichTextImageClick, r as VegaInternalRichTextImageDeleteButtonClicked, l as VegaInternalPopoverUpdateTarget } from './vega-internal-event-id-d0690d0d.js';
9
+ import { b as ToolbarButtonSlimmer, I as ImageAnnotationAction, T as TextNodeRenderingRegistry, a as TextColorToolbarButtonSlimmer } from './image-annotation-action-3da42221.js';
10
10
  import { V as VegaInternalIconManager } from './internal-icon-manager-900a5bb4.js';
11
- import { f as RTETextNode, B as BoldAnnotationAction, T as TextSplittableAction, i as ItalicAnnotation, U as UnderlineAnnotation, R as RTETextBlock, j as TextStyleAnnotationAction, k as TextStyleAnnotation, l as BoldAnnotation, C as ClearFormattingAnnotationAction, m as CodeAnnotationAction, S as StrikethroughAnnotation, A as AnnotationAction, n as SelectionRangeAnnotation, L as LinkAnnotationAction, o as IndentAnnotation, e as RTEImageNode, b as RTEListItemBlock, H as HorizontalAlignmentAnnotation, Z as ZERO_WIDTH_SPACE, V as VegaRTEContent, p as UpdateTextAction, q as RemoveChildAction, r as AppendChildNodesAction, s as InsertBlocksBeforeAction, M as MergeTwoBlocksNodesAction, t as SplitBlockWithNodeAction, u as ReplaceChildNodesAction, h as RTE_TEXT_COLORS, c as RTEListBlock, a as RTEImageBlock, v as InsertBlocksAfterAction } from './content-state-c2d29b35.js';
12
- import { c as NodeAnnotationTypeEnum, a as BlockAnnotationTypeEnum, M as ModifyContentAction, b as ModifyContentActionType, R as RTENode, s as stateEntityRenderingRegistry, I as InternalAnnotationTypeEnum, V as VegaThemeManager } from './node-annotation.abstract-a58b5a49.js';
11
+ import { f as RTETextNode, B as BoldAnnotationAction, T as TextSplittableAction, i as ItalicAnnotation, U as UnderlineAnnotation, R as RTETextBlock, j as TextStyleAnnotationAction, k as TextStyleAnnotation, l as BoldAnnotation, C as ClearFormattingAnnotationAction, m as CodeAnnotationAction, S as StrikethroughAnnotation, A as AnnotationAction, n as SelectionRangeAnnotation, L as LinkAnnotationAction, o as IndentAnnotation, e as RTEImageNode, b as RTEListItemBlock, H as HorizontalAlignmentAnnotation, Z as ZERO_WIDTH_SPACE, V as VegaRTEContent, p as AppendChildNodesAction, q as UpdateTextAction, M as MergeTwoBlocksNodesAction, r as SplitBlockWithNodeAction, s as RemoveChildAction, t as ReplaceChildNodesAction, u as InsertBlocksBeforeAction, h as RTE_TEXT_COLORS, c as RTEListBlock, a as RTEImageBlock, v as InsertBlocksAfterAction } from './content-state-ccf5f960.js';
12
+ import { c as NodeAnnotationTypeEnum, a as BlockAnnotationTypeEnum, M as ModifyContentAction, b as ModifyContentActionType, R as RTENode, s as stateEntityRenderingRegistry, I as InternalAnnotationTypeEnum, V as VegaThemeManager } from './node-annotation.abstract-b2e36bc4.js';
13
13
  import { D as DomNodeSubjectObserverFactory } from './dom-node-subject-observer-factory-857c65fa.js';
14
14
  import { g as generateUUID } from './create-public-api-runtime-metrics-slimmer-9ab05523.js';
15
- import { a as waitForComponentDidRender } from './index-b2045ad0.js';
16
- import { F as FormFieldControllerSlimmer } from './form-field-controller-slimmer-7136b7fa.js';
15
+ import { a as waitForComponentDidRender } from './index-6e05b241.js';
16
+ import { F as FormFieldControllerSlimmer } from './form-field-controller-slimmer-3535e76a.js';
17
17
  import { c as createEventEmitSlimmer } from './event-emit-slimmer-36cf4e39.js';
18
- import { c as createSubStateNotifySlimmer } from './sub-state-notify-slimmer-4a201088.js';
18
+ import { c as createSubStateNotifySlimmer } from './sub-state-notify-slimmer-51151fc3.js';
19
19
  import { d as debounce } from './timer-9321173b.js';
20
20
  import { S as SynchronizeTaskQueue } from './synchronize-task-queue-ac8acc3b.js';
21
21
  import { O as Observer } from './observer-3959f9dd.js';
22
22
  import { f as findParent, r as rgbToHex } from './ui-62e4be97.js';
23
23
  import { b as FORM_ELEMENT_VALUE_CHANGE, D as DARK_MODE_CHANGE } from './static-subject-title-8268945e.js';
24
24
  import './vega-env-manager-8f8dc473.js';
25
- import './vega-skeleton-loader-controller-0044d77f.js';
25
+ import './vega-skeleton-loader-controller-5aea7aeb.js';
26
26
  import './feature-flag-controller-4b3fe6f8.js';
27
27
  import './vega-dialog-controller-34eb8967.js';
28
28
  import './icon-manager-b889176b.js';
@@ -49,7 +49,7 @@ import './internal-vega-event-manager-0a01ba12.js';
49
49
  import './internal-vega-z-index-manager-7d2b54c3.js';
50
50
  import './index-44c794b4.js';
51
51
 
52
- var __decorate$y = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
52
+ var __decorate$A = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
53
53
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
54
54
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
55
55
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
@@ -139,38 +139,38 @@ class VegaRichTextEditorRenderer extends VegaSlimmer {
139
139
  return (this.label && (h("vega-field-label", { onClick: this.richTextContentFocus, isFieldRequired: this.required, disabled: this.disabled, label: this.label })));
140
140
  }
141
141
  }
142
- __decorate$y([
142
+ __decorate$A([
143
143
  MapToComponentField()
144
144
  ], VegaRichTextEditorRenderer.prototype, "host", void 0);
145
- __decorate$y([
145
+ __decorate$A([
146
146
  MapToComponentField()
147
147
  ], VegaRichTextEditorRenderer.prototype, "toolbarRenderer", void 0);
148
- __decorate$y([
148
+ __decorate$A([
149
149
  MapToComponentField()
150
150
  ], VegaRichTextEditorRenderer.prototype, "label", void 0);
151
- __decorate$y([
151
+ __decorate$A([
152
152
  MapToComponentField()
153
153
  ], VegaRichTextEditorRenderer.prototype, "required", void 0);
154
- __decorate$y([
154
+ __decorate$A([
155
155
  MapToComponentField()
156
156
  ], VegaRichTextEditorRenderer.prototype, "hint", void 0);
157
- __decorate$y([
157
+ __decorate$A([
158
158
  MapToComponentField()
159
159
  ], VegaRichTextEditorRenderer.prototype, "disabled", void 0);
160
- __decorate$y([
160
+ __decorate$A([
161
161
  MapToComponentField()
162
162
  ], VegaRichTextEditorRenderer.prototype, "rows", void 0);
163
- __decorate$y([
163
+ __decorate$A([
164
164
  MapToComponentField()
165
165
  ], VegaRichTextEditorRenderer.prototype, "placeholder", void 0);
166
- __decorate$y([
166
+ __decorate$A([
167
167
  MapToComponentField()
168
168
  ], VegaRichTextEditorRenderer.prototype, "value", void 0);
169
- __decorate$y([
169
+ __decorate$A([
170
170
  MapToComponentMethod('componentDidRender')
171
171
  ], VegaRichTextEditorRenderer.prototype, "componentDidRender", null);
172
172
 
173
- var __decorate$x = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
173
+ var __decorate$z = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
174
174
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
175
175
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
176
176
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
@@ -220,49 +220,49 @@ class ToolbarRenderer extends VegaSlimmer {
220
220
  })));
221
221
  }
222
222
  }
223
- __decorate$x([
223
+ __decorate$z([
224
224
  MapToComponentField()
225
225
  ], ToolbarRenderer.prototype, "toolbarItems", void 0);
226
- __decorate$x([
226
+ __decorate$z([
227
227
  MapToComponentField()
228
228
  ], ToolbarRenderer.prototype, "clearStyleToolbarButtonSlimmer", void 0);
229
- __decorate$x([
229
+ __decorate$z([
230
230
  MapToComponentField()
231
231
  ], ToolbarRenderer.prototype, "boldToolbarButtonSlimmer", void 0);
232
- __decorate$x([
232
+ __decorate$z([
233
233
  MapToComponentField()
234
234
  ], ToolbarRenderer.prototype, "textStylesToolbarButtonSlimmer", void 0);
235
- __decorate$x([
235
+ __decorate$z([
236
236
  MapToComponentField()
237
237
  ], ToolbarRenderer.prototype, "italicToolbarButtonSlimmer", void 0);
238
- __decorate$x([
238
+ __decorate$z([
239
239
  MapToComponentField()
240
240
  ], ToolbarRenderer.prototype, "underlineToolbarButtonSlimmer", void 0);
241
- __decorate$x([
241
+ __decorate$z([
242
242
  MapToComponentField()
243
243
  ], ToolbarRenderer.prototype, "textColorToolbarButtonSlimmer", void 0);
244
- __decorate$x([
244
+ __decorate$z([
245
245
  MapToComponentField()
246
246
  ], ToolbarRenderer.prototype, "bulletsNumbersToolbarButtonSlimmer", void 0);
247
- __decorate$x([
247
+ __decorate$z([
248
248
  MapToComponentField()
249
249
  ], ToolbarRenderer.prototype, "horizontalAlignmentToolbarButtonSlimmer", void 0);
250
- __decorate$x([
250
+ __decorate$z([
251
251
  MapToComponentField()
252
252
  ], ToolbarRenderer.prototype, "strikethroughToolbarButtonSlimmer", void 0);
253
- __decorate$x([
253
+ __decorate$z([
254
254
  MapToComponentField()
255
255
  ], ToolbarRenderer.prototype, "imageToolbarButtonSlimmer", void 0);
256
- __decorate$x([
256
+ __decorate$z([
257
257
  MapToComponentField()
258
258
  ], ToolbarRenderer.prototype, "moreIndentToolbarButtonSlimmer", void 0);
259
- __decorate$x([
259
+ __decorate$z([
260
260
  MapToComponentField()
261
261
  ], ToolbarRenderer.prototype, "lessIndentToolbarButtonSlimmer", void 0);
262
- __decorate$x([
262
+ __decorate$z([
263
263
  MapToComponentField()
264
264
  ], ToolbarRenderer.prototype, "codeToolbarButtonSlimmer", void 0);
265
- __decorate$x([
265
+ __decorate$z([
266
266
  MapToComponentField()
267
267
  ], ToolbarRenderer.prototype, "linkToolbarButtonSlimmer", void 0);
268
268
 
@@ -270,7 +270,7 @@ const bold = {
270
270
  icon: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 384 512"><!--! Font Awesome Pro 6.3.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2023 Fonticons, Inc. --><path fill="currentColor" d="M0 64C0 46.3 14.3 32 32 32H80 96 224c70.7 0 128 57.3 128 128c0 31.3-11.3 60.1-30 82.3c37.1 22.4 62 63.1 62 109.7c0 70.7-57.3 128-128 128H96 80 32c-17.7 0-32-14.3-32-32s14.3-32 32-32H48V256 96H32C14.3 96 0 81.7 0 64zM224 224c35.3 0 64-28.7 64-64s-28.7-64-64-64H112V224H224zM112 288V416H256c35.3 0 64-28.7 64-64s-28.7-64-64-64H224 112z"/></svg>`,
271
271
  };
272
272
 
273
- var __decorate$w = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
273
+ var __decorate$y = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
274
274
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
275
275
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
276
276
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
@@ -311,7 +311,7 @@ class BoldToolbarButtonSlimmer extends ToolbarButtonSlimmer {
311
311
  (() => {
312
312
  VegaInternalIconManager.register({ bold });
313
313
  })();
314
- __decorate$w([
314
+ __decorate$y([
315
315
  MapToComponentField()
316
316
  ], BoldToolbarButtonSlimmer.prototype, "selectionController", void 0);
317
317
 
@@ -338,7 +338,7 @@ class ItalicAnnotationAction extends TextSplittableAction {
338
338
  }
339
339
  }
340
340
 
341
- var __decorate$v = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
341
+ var __decorate$x = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
342
342
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
343
343
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
344
344
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
@@ -377,7 +377,7 @@ class ItalicToolbarButtonSlimmer extends ToolbarButtonSlimmer {
377
377
  (() => {
378
378
  VegaInternalIconManager.register({ italic });
379
379
  })();
380
- __decorate$v([
380
+ __decorate$x([
381
381
  MapToComponentField()
382
382
  ], ItalicToolbarButtonSlimmer.prototype, "selectionController", void 0);
383
383
 
@@ -404,7 +404,7 @@ class UnderlineAnnotationAction extends TextSplittableAction {
404
404
  }
405
405
  }
406
406
 
407
- var __decorate$u = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
407
+ var __decorate$w = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
408
408
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
409
409
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
410
410
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
@@ -446,7 +446,7 @@ class UnderlineToolbarButtonSlimmer extends ToolbarButtonSlimmer {
446
446
  (() => {
447
447
  VegaInternalIconManager.register({ underline });
448
448
  })();
449
- __decorate$u([
449
+ __decorate$w([
450
450
  MapToComponentField()
451
451
  ], UnderlineToolbarButtonSlimmer.prototype, "selectionController", void 0);
452
452
 
@@ -454,7 +454,7 @@ const textSize = {
454
454
  icon: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 512"><!--! Font Awesome Pro 6.3.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2023 Fonticons, Inc. --><path fill="currentColor" d="M64 128V96h96l0 320H128c-17.7 0-32 14.3-32 32s14.3 32 32 32H256c17.7 0 32-14.3 32-32s-14.3-32-32-32H224l0-320h96v32c0 17.7 14.3 32 32 32s32-14.3 32-32V80c0-26.5-21.5-48-48-48H192 48C21.5 32 0 53.5 0 80v48c0 17.7 14.3 32 32 32s32-14.3 32-32zM384 304V288h64l0 128H432c-17.7 0-32 14.3-32 32s14.3 32 32 32h96c17.7 0 32-14.3 32-32s-14.3-32-32-32H512l0-128h64v16c0 17.7 14.3 32 32 32s32-14.3 32-32V272c0-26.5-21.5-48-48-48H368c-26.5 0-48 21.5-48 48v32c0 17.7 14.3 32 32 32s32-14.3 32-32z"/></svg>`,
455
455
  };
456
456
 
457
- var __decorate$t = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
457
+ var __decorate$v = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
458
458
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
459
459
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
460
460
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
@@ -563,10 +563,10 @@ TextStylesToolbarButtonSlimmer.items = [
563
563
  label: 'Paragraph',
564
564
  },
565
565
  ];
566
- __decorate$t([
566
+ __decorate$v([
567
567
  MapToComponentField()
568
568
  ], TextStylesToolbarButtonSlimmer.prototype, "selectionController", void 0);
569
- __decorate$t([
569
+ __decorate$v([
570
570
  MapToComponentField()
571
571
  ], TextStylesToolbarButtonSlimmer.prototype, "focusController", void 0);
572
572
 
@@ -574,7 +574,7 @@ const TextSlash = {
574
574
  icon: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 512"><!--! Font Awesome Pro 6.3.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2023 Fonticons, Inc. --><path fill="currentColor" d="M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L355.7 253.5 400.2 96H503L497 120.2c-4.3 17.1 6.1 34.5 23.3 38.8s34.5-6.1 38.8-23.3l11-44.1C577.6 61.3 554.7 32 523.5 32H376.1h-.3H204.5c-22 0-41.2 15-46.6 36.4l-6.3 25.2L38.8 5.1zm168 131.7c.1-.3 .2-.7 .3-1L217 96H333.7L301.3 210.8l-94.5-74.1zM243.3 416H192c-17.7 0-32 14.3-32 32s14.3 32 32 32H352c17.7 0 32-14.3 32-32s-14.3-32-32-32H309.8l17.6-62.1L272.9 311 243.3 416z"/></svg>`,
575
575
  };
576
576
 
577
- var __decorate$s = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
577
+ var __decorate$u = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
578
578
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
579
579
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
580
580
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
@@ -610,7 +610,7 @@ class ClearStyleToolbarButtonSlimmer extends ToolbarButtonSlimmer {
610
610
  'text-slash': TextSlash,
611
611
  });
612
612
  })();
613
- __decorate$s([
613
+ __decorate$u([
614
614
  MapToComponentField()
615
615
  ], ClearStyleToolbarButtonSlimmer.prototype, "selectionController", void 0);
616
616
 
@@ -618,7 +618,7 @@ const codeSimple = {
618
618
  icon: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512"><!--! Font Awesome Pro 6.3.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2023 Fonticons, Inc. --><path fill="currentColor" d="M214.6 118.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-160 160c-12.5 12.5-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L77.3 256 214.6 118.6zm146.7 0L498.7 256 361.4 393.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l160-160c12.5-12.5 12.5-32.8 0-45.3l-160-160c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3z"/></svg>`,
619
619
  };
620
620
 
621
- var __decorate$r = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
621
+ var __decorate$t = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
622
622
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
623
623
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
624
624
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
@@ -655,7 +655,7 @@ class CodeToolbarButtonSlimmer extends ToolbarButtonSlimmer {
655
655
  (() => {
656
656
  VegaInternalIconManager.register({ 'code-simple': codeSimple });
657
657
  })();
658
- __decorate$r([
658
+ __decorate$t([
659
659
  MapToComponentField()
660
660
  ], CodeToolbarButtonSlimmer.prototype, "selectionController", void 0);
661
661
 
@@ -682,7 +682,7 @@ class StrikethroughAnnotationAction extends TextSplittableAction {
682
682
  }
683
683
  }
684
684
 
685
- var __decorate$q = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
685
+ var __decorate$s = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
686
686
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
687
687
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
688
688
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
@@ -724,7 +724,7 @@ class StrikethroughToolbarButtonSlimmer extends ToolbarButtonSlimmer {
724
724
  (() => {
725
725
  VegaInternalIconManager.register({ strikethrough });
726
726
  })();
727
- __decorate$q([
727
+ __decorate$s([
728
728
  MapToComponentField()
729
729
  ], StrikethroughToolbarButtonSlimmer.prototype, "selectionController", void 0);
730
730
 
@@ -751,7 +751,7 @@ class SelectionChangeAction extends AnnotationAction {
751
751
  }
752
752
  }
753
753
 
754
- var __decorate$p = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
754
+ var __decorate$r = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
755
755
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
756
756
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
757
757
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
@@ -832,7 +832,7 @@ class LinkToolbarButtonSlimmer extends ToolbarButtonSlimmer {
832
832
  (() => {
833
833
  VegaInternalIconManager.register({ link: link });
834
834
  })();
835
- __decorate$p([
835
+ __decorate$r([
836
836
  MapToComponentField()
837
837
  ], LinkToolbarButtonSlimmer.prototype, "selectionController", void 0);
838
838
 
@@ -859,7 +859,7 @@ class IndentAnnotationAction extends AnnotationAction {
859
859
  }
860
860
  }
861
861
 
862
- var __decorate$o = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
862
+ var __decorate$q = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
863
863
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
864
864
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
865
865
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
@@ -894,7 +894,7 @@ class MoreIndentToolbarButtonSlimmer extends ToolbarButtonSlimmer {
894
894
  (() => {
895
895
  VegaInternalIconManager.register({ indent: indent });
896
896
  })();
897
- __decorate$o([
897
+ __decorate$q([
898
898
  MapToComponentField()
899
899
  ], MoreIndentToolbarButtonSlimmer.prototype, "selectionController", void 0);
900
900
 
@@ -902,7 +902,7 @@ const outdent = {
902
902
  icon: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Pro 6.3.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2023 Fonticons, Inc. --><path fill="currentColor" d="M6 64C6 46.3 20.3 32 38 32H422c17.7 0 32 14.3 32 32s-14.3 32-32 32H38C20.3 96 6 81.7 6 64zM198 192c0-17.7 14.3-32 32-32H422c17.7 0 32 14.3 32 32s-14.3 32-32 32H230c-17.7 0-32-14.3-32-32zm32 96H422c17.7 0 32 14.3 32 32s-14.3 32-32 32H230c-17.7 0-32-14.3-32-32s14.3-32 32-32zM6 448c0-17.7 14.3-32 32-32H422c17.7 0 32 14.3 32 32s-14.3 32-32 32H38c-17.7 0-32-14.3-32-32zm.2-179.4c-8.2-6.4-8.2-18.9 0-25.3l101.9-79.3c10.5-8.2 25.8-.7 25.8 12.6V335.3c0 13.3-15.3 20.8-25.8 12.6L6.2 268.6z"/></svg>`,
903
903
  };
904
904
 
905
- var __decorate$n = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
905
+ var __decorate$p = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
906
906
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
907
907
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
908
908
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
@@ -938,7 +938,7 @@ class LessIndentToolbarButtonSlimmer extends ToolbarButtonSlimmer {
938
938
  (() => {
939
939
  VegaInternalIconManager.register({ outdent: outdent });
940
940
  })();
941
- __decorate$n([
941
+ __decorate$p([
942
942
  MapToComponentField()
943
943
  ], LessIndentToolbarButtonSlimmer.prototype, "selectionController", void 0);
944
944
 
@@ -946,7 +946,7 @@ const image = {
946
946
  icon: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Pro 6.3.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2023 Fonticons, Inc. --><path fill="currentColor" d="M0 96C0 60.7 28.7 32 64 32H448c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zM323.8 202.5c-4.5-6.6-11.9-10.5-19.8-10.5s-15.4 3.9-19.8 10.5l-87 127.6L170.7 297c-4.6-5.7-11.5-9-18.7-9s-14.2 3.3-18.7 9l-64 80c-5.8 7.2-6.9 17.1-2.9 25.4s12.4 13.6 21.6 13.6h96 32H424c8.9 0 17.1-4.9 21.2-12.8s3.6-17.4-1.4-24.7l-120-176zM112 192a48 48 0 1 0 0-96 48 48 0 1 0 0 96z"/></svg>`,
947
947
  };
948
948
 
949
- var __decorate$m = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
949
+ var __decorate$o = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
950
950
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
951
951
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
952
952
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
@@ -1003,13 +1003,13 @@ class ImageToolbarButtonSlimmer extends ToolbarButtonSlimmer {
1003
1003
  (() => {
1004
1004
  VegaInternalIconManager.register({ image: image });
1005
1005
  })();
1006
- __decorate$m([
1006
+ __decorate$o([
1007
1007
  MapToComponentField()
1008
1008
  ], ImageToolbarButtonSlimmer.prototype, "insertImageController", void 0);
1009
- __decorate$m([
1009
+ __decorate$o([
1010
1010
  MapToComponentField()
1011
1011
  ], ImageToolbarButtonSlimmer.prototype, "imageInsertedEventEmitter", void 0);
1012
- __decorate$m([
1012
+ __decorate$o([
1013
1013
  MapToComponentField()
1014
1014
  ], ImageToolbarButtonSlimmer.prototype, "selectionController", void 0);
1015
1015
 
@@ -1046,7 +1046,7 @@ class TransformParagraphAction extends ModifyContentAction {
1046
1046
  }
1047
1047
  }
1048
1048
 
1049
- var __decorate$l = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
1049
+ var __decorate$n = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
1050
1050
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
1051
1051
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
1052
1052
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
@@ -1104,14 +1104,14 @@ class BulletsToolbarButtonSlimmer extends ToolbarButtonSlimmer {
1104
1104
  }
1105
1105
  }
1106
1106
  }
1107
- __decorate$l([
1107
+ __decorate$n([
1108
1108
  MapToComponentField()
1109
1109
  ], BulletsToolbarButtonSlimmer.prototype, "selectionController", void 0);
1110
- __decorate$l([
1110
+ __decorate$n([
1111
1111
  MapToComponentField()
1112
1112
  ], BulletsToolbarButtonSlimmer.prototype, "popoverRef", void 0);
1113
1113
 
1114
- var __decorate$k = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
1114
+ var __decorate$m = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
1115
1115
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
1116
1116
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
1117
1117
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
@@ -1167,14 +1167,14 @@ class NumbersToolbarButtonSlimmer extends ToolbarButtonSlimmer {
1167
1167
  }
1168
1168
  }
1169
1169
  }
1170
- __decorate$k([
1170
+ __decorate$m([
1171
1171
  MapToComponentField()
1172
1172
  ], NumbersToolbarButtonSlimmer.prototype, "selectionController", void 0);
1173
- __decorate$k([
1173
+ __decorate$m([
1174
1174
  MapToComponentField()
1175
1175
  ], NumbersToolbarButtonSlimmer.prototype, "popoverRef", void 0);
1176
1176
 
1177
- var __decorate$j = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
1177
+ var __decorate$l = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
1178
1178
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
1179
1179
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
1180
1180
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
@@ -1223,16 +1223,16 @@ class BulletsNumbersToolbarButtonSlimmer extends ToolbarButtonSlimmer {
1223
1223
  'list-ol': ListOL,
1224
1224
  });
1225
1225
  })();
1226
- __decorate$j([
1226
+ __decorate$l([
1227
1227
  MapToComponentField()
1228
1228
  ], BulletsNumbersToolbarButtonSlimmer.prototype, "selectionController", void 0);
1229
- __decorate$j([
1229
+ __decorate$l([
1230
1230
  InjectVegaSlimmer()
1231
1231
  ], BulletsNumbersToolbarButtonSlimmer.prototype, "bulletsToolbarButtonSlimmer", void 0);
1232
- __decorate$j([
1232
+ __decorate$l([
1233
1233
  InjectVegaSlimmer()
1234
1234
  ], BulletsNumbersToolbarButtonSlimmer.prototype, "numbersToolbarButtonSlimmer", void 0);
1235
- __decorate$j([
1235
+ __decorate$l([
1236
1236
  MapToComponentMethod('componentWillRender')
1237
1237
  ], BulletsNumbersToolbarButtonSlimmer.prototype, "componentWillRender", null);
1238
1238
 
@@ -1259,7 +1259,7 @@ const AlignLeft = {
1259
1259
  icon: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Pro 6.3.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2023 Fonticons, Inc. --><path fill="currentColor" d="M288 64c0 17.7-14.3 32-32 32H32C14.3 96 0 81.7 0 64S14.3 32 32 32H256c17.7 0 32 14.3 32 32zm0 256c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H256c17.7 0 32 14.3 32 32zM0 192c0-17.7 14.3-32 32-32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32zM448 448c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H416c17.7 0 32 14.3 32 32z"/></svg>`,
1260
1260
  };
1261
1261
 
1262
- var __decorate$i = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
1262
+ var __decorate$k = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
1263
1263
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
1264
1264
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
1265
1265
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
@@ -1294,10 +1294,10 @@ class LeftAlignToolbarButtonSlimmer extends ToolbarButtonSlimmer {
1294
1294
  'align-left': AlignLeft,
1295
1295
  });
1296
1296
  })();
1297
- __decorate$i([
1297
+ __decorate$k([
1298
1298
  MapToComponentField()
1299
1299
  ], LeftAlignToolbarButtonSlimmer.prototype, "selectionController", void 0);
1300
- __decorate$i([
1300
+ __decorate$k([
1301
1301
  MapToComponentField()
1302
1302
  ], LeftAlignToolbarButtonSlimmer.prototype, "popoverRef", void 0);
1303
1303
 
@@ -1305,7 +1305,7 @@ const AlignCenter = {
1305
1305
  icon: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Pro 6.3.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2023 Fonticons, Inc. --><path fill="currentColor" d="M352 64c0-17.7-14.3-32-32-32H128c-17.7 0-32 14.3-32 32s14.3 32 32 32H320c17.7 0 32-14.3 32-32zm96 128c0-17.7-14.3-32-32-32H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H416c17.7 0 32-14.3 32-32zM0 448c0 17.7 14.3 32 32 32H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H32c-17.7 0-32 14.3-32 32zM352 320c0-17.7-14.3-32-32-32H128c-17.7 0-32 14.3-32 32s14.3 32 32 32H320c17.7 0 32-14.3 32-32z"/></svg>`,
1306
1306
  };
1307
1307
 
1308
- var __decorate$h = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
1308
+ var __decorate$j = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
1309
1309
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
1310
1310
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
1311
1311
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
@@ -1340,10 +1340,10 @@ class CenterAlignToolbarButtonSlimmer extends ToolbarButtonSlimmer {
1340
1340
  'align-center': AlignCenter,
1341
1341
  });
1342
1342
  })();
1343
- __decorate$h([
1343
+ __decorate$j([
1344
1344
  MapToComponentField()
1345
1345
  ], CenterAlignToolbarButtonSlimmer.prototype, "selectionController", void 0);
1346
- __decorate$h([
1346
+ __decorate$j([
1347
1347
  MapToComponentField()
1348
1348
  ], CenterAlignToolbarButtonSlimmer.prototype, "popoverRef", void 0);
1349
1349
 
@@ -1351,7 +1351,7 @@ const AlignRight = {
1351
1351
  icon: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Pro 6.3.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2023 Fonticons, Inc. --><path fill="currentColor" d="M448 64c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32s14.3-32 32-32H416c17.7 0 32 14.3 32 32zm0 256c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32s14.3-32 32-32H416c17.7 0 32 14.3 32 32zM0 192c0-17.7 14.3-32 32-32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32zM448 448c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H416c17.7 0 32 14.3 32 32z"/></svg>`,
1352
1352
  };
1353
1353
 
1354
- var __decorate$g = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
1354
+ var __decorate$i = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
1355
1355
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
1356
1356
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
1357
1357
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
@@ -1386,10 +1386,10 @@ class RightAlignToolbarButtonSlimmer extends ToolbarButtonSlimmer {
1386
1386
  'align-right': AlignRight,
1387
1387
  });
1388
1388
  })();
1389
- __decorate$g([
1389
+ __decorate$i([
1390
1390
  MapToComponentField()
1391
1391
  ], RightAlignToolbarButtonSlimmer.prototype, "selectionController", void 0);
1392
- __decorate$g([
1392
+ __decorate$i([
1393
1393
  MapToComponentField()
1394
1394
  ], RightAlignToolbarButtonSlimmer.prototype, "popoverRef", void 0);
1395
1395
 
@@ -1397,7 +1397,7 @@ const AlignJustify = {
1397
1397
  icon: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Pro 6.3.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2023 Fonticons, Inc. --><path fill="currentColor" d="M448 64c0-17.7-14.3-32-32-32H32C14.3 32 0 46.3 0 64S14.3 96 32 96H416c17.7 0 32-14.3 32-32zm0 256c0-17.7-14.3-32-32-32H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H416c17.7 0 32-14.3 32-32zM0 192c0 17.7 14.3 32 32 32H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H32c-17.7 0-32 14.3-32 32zM448 448c0-17.7-14.3-32-32-32H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H416c17.7 0 32-14.3 32-32z"/></svg>`,
1398
1398
  };
1399
1399
 
1400
- var __decorate$f = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
1400
+ var __decorate$h = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
1401
1401
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
1402
1402
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
1403
1403
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
@@ -1432,14 +1432,14 @@ class JustifyAlignToolbarButtonSlimmer extends ToolbarButtonSlimmer {
1432
1432
  'align-justify': AlignJustify,
1433
1433
  });
1434
1434
  })();
1435
- __decorate$f([
1435
+ __decorate$h([
1436
1436
  MapToComponentField()
1437
1437
  ], JustifyAlignToolbarButtonSlimmer.prototype, "selectionController", void 0);
1438
- __decorate$f([
1438
+ __decorate$h([
1439
1439
  MapToComponentField()
1440
1440
  ], JustifyAlignToolbarButtonSlimmer.prototype, "popoverRef", void 0);
1441
1441
 
1442
- var __decorate$e = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
1442
+ var __decorate$g = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
1443
1443
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
1444
1444
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
1445
1445
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
@@ -1491,22 +1491,22 @@ class HorizontalAlignmentToolbarButtonSlimmer extends ToolbarButtonSlimmer {
1491
1491
  return false;
1492
1492
  }
1493
1493
  }
1494
- __decorate$e([
1494
+ __decorate$g([
1495
1495
  MapToComponentField()
1496
1496
  ], HorizontalAlignmentToolbarButtonSlimmer.prototype, "selectionController", void 0);
1497
- __decorate$e([
1497
+ __decorate$g([
1498
1498
  InjectVegaSlimmer()
1499
1499
  ], HorizontalAlignmentToolbarButtonSlimmer.prototype, "leftAlignToolbarButtonSlimmer", void 0);
1500
- __decorate$e([
1500
+ __decorate$g([
1501
1501
  InjectVegaSlimmer()
1502
1502
  ], HorizontalAlignmentToolbarButtonSlimmer.prototype, "centerAlignToolbarButtonSlimmer", void 0);
1503
- __decorate$e([
1503
+ __decorate$g([
1504
1504
  InjectVegaSlimmer()
1505
1505
  ], HorizontalAlignmentToolbarButtonSlimmer.prototype, "rightAlignToolbarButtonSlimmer", void 0);
1506
- __decorate$e([
1506
+ __decorate$g([
1507
1507
  InjectVegaSlimmer()
1508
1508
  ], HorizontalAlignmentToolbarButtonSlimmer.prototype, "justifiedToolbarButtonSlimmer", void 0);
1509
- __decorate$e([
1509
+ __decorate$g([
1510
1510
  MapToComponentMethod('componentWillRender')
1511
1511
  ], HorizontalAlignmentToolbarButtonSlimmer.prototype, "componentWillRender", null);
1512
1512
 
@@ -1849,7 +1849,7 @@ class RTERange {
1849
1849
  }
1850
1850
  }
1851
1851
 
1852
- var __decorate$d = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
1852
+ var __decorate$f = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
1853
1853
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
1854
1854
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
1855
1855
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
@@ -1970,17 +1970,22 @@ class SelectionController extends VegaSlimmer {
1970
1970
  */
1971
1971
  setSelectionRange(range) {
1972
1972
  const selection = this.getSelection();
1973
- selection.removeAllRanges();
1974
- selection.addRange(range);
1975
- this.saveSelection();
1973
+ if (selection) {
1974
+ selection.removeAllRanges();
1975
+ selection.addRange(range);
1976
+ this.saveSelection();
1977
+ }
1976
1978
  }
1977
1979
  /**
1978
1980
  * Save the current selection range detail
1979
1981
  */
1980
1982
  saveSelection() {
1981
1983
  const selection = this.getSelection();
1982
- // The range is out of date if the queue is not empty, so we should not update the RTERange
1983
- if (selection && selection.rangeCount > 0 && this.updateCaretPositionTaskQueue.queue.length === 0) {
1984
+ // The range is out of date if the queue is not empty, or the range is update by the composition text insert, so we should not update the RTERange
1985
+ if (selection &&
1986
+ selection.rangeCount > 0 &&
1987
+ this.updateCaretPositionTaskQueue.queue.length === 0 &&
1988
+ !this.insertCompositionTextController.isComposing()) {
1984
1989
  const range = selection.getRangeAt(0);
1985
1990
  const { startContainer: startNode, endContainer: endNode, startOffset, endOffset } = range;
1986
1991
  this.currentRange = this.currentRange.updateRTERange({ startNode, endNode, startOffset, endOffset }, range);
@@ -2098,38 +2103,41 @@ class SelectionController extends VegaSlimmer {
2098
2103
  }
2099
2104
  }
2100
2105
  SelectionController.SELECTION_CHANGE_DEBOUNCE_TIME = 50;
2101
- __decorate$d([
2106
+ __decorate$f([
2102
2107
  MapToComponentField()
2103
2108
  ], SelectionController.prototype, "vegaRichTextEditorRenderer", void 0);
2104
- __decorate$d([
2109
+ __decorate$f([
2105
2110
  MapToComponentField({ writable: true })
2106
2111
  ], SelectionController.prototype, "selectionMap", void 0);
2107
- __decorate$d([
2112
+ __decorate$f([
2108
2113
  MapToComponentField()
2109
2114
  ], SelectionController.prototype, "host", void 0);
2110
- __decorate$d([
2115
+ __decorate$f([
2111
2116
  MapToComponentField()
2112
2117
  ], SelectionController.prototype, "value", void 0);
2113
- __decorate$d([
2118
+ __decorate$f([
2114
2119
  MapToComponentField()
2115
2120
  ], SelectionController.prototype, "valueController", void 0);
2116
- __decorate$d([
2121
+ __decorate$f([
2122
+ MapToComponentField()
2123
+ ], SelectionController.prototype, "insertCompositionTextController", void 0);
2124
+ __decorate$f([
2117
2125
  MapToComponentMethod('connectedCallback')
2118
2126
  ], SelectionController.prototype, "connectedCallback", null);
2119
- __decorate$d([
2127
+ __decorate$f([
2120
2128
  MapToComponentMethod('disconnectedCallback')
2121
2129
  ], SelectionController.prototype, "disconnectedCallback", null);
2122
- __decorate$d([
2130
+ __decorate$f([
2123
2131
  MapToComponentMethod('componentDidLoad')
2124
2132
  ], SelectionController.prototype, "componentDidLoad", null);
2125
- __decorate$d([
2133
+ __decorate$f([
2126
2134
  MapToComponentMethod('watchValueUpdate')
2127
2135
  ], SelectionController.prototype, "watchValueUpdate", null);
2128
- __decorate$d([
2136
+ __decorate$f([
2129
2137
  MapToComponentMethod('componentDidUpdate')
2130
2138
  ], SelectionController.prototype, "updateCaretPosition", null);
2131
2139
 
2132
- var __decorate$c = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
2140
+ var __decorate$e = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
2133
2141
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
2134
2142
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
2135
2143
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
@@ -2200,32 +2208,32 @@ class ValueController extends VegaSlimmer {
2200
2208
  }
2201
2209
  }
2202
2210
  ValueController.VALUE_CHANGE_DEBOUNCE_TIME = 50;
2203
- __decorate$c([
2211
+ __decorate$e([
2204
2212
  MapToComponentField()
2205
2213
  ], ValueController.prototype, "host", void 0);
2206
- __decorate$c([
2214
+ __decorate$e([
2207
2215
  MapToComponentField({ writable: true })
2208
2216
  ], ValueController.prototype, "value", void 0);
2209
- __decorate$c([
2217
+ __decorate$e([
2210
2218
  MapToComponentField()
2211
2219
  ], ValueController.prototype, "changeEventEmitter", void 0);
2212
- __decorate$c([
2220
+ __decorate$e([
2213
2221
  MapToComponentField()
2214
2222
  ], ValueController.prototype, "valueController", void 0);
2215
- __decorate$c([
2223
+ __decorate$e([
2216
2224
  MapToComponentMethod('connectedCallback')
2217
2225
  ], ValueController.prototype, "connectedCallback", null);
2218
- __decorate$c([
2226
+ __decorate$e([
2219
2227
  MapToComponentMethod('disconnectedCallback')
2220
2228
  ], ValueController.prototype, "disconnectedCallback", null);
2221
- __decorate$c([
2229
+ __decorate$e([
2222
2230
  MapToComponentMethod('componentWillLoad')
2223
2231
  ], ValueController.prototype, "componentWillLoad", null);
2224
- __decorate$c([
2232
+ __decorate$e([
2225
2233
  MapToComponentMethod('watchValueUpdate')
2226
2234
  ], ValueController.prototype, "watchValueUpdate", null);
2227
2235
 
2228
- var __decorate$b = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
2236
+ var __decorate$d = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
2229
2237
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
2230
2238
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
2231
2239
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
@@ -2258,13 +2266,13 @@ class DarkModeStateControllerSlimmer extends VegaSlimmer {
2258
2266
  return true;
2259
2267
  }
2260
2268
  }
2261
- __decorate$b([
2269
+ __decorate$d([
2262
2270
  MapToComponentField({ writable: true })
2263
2271
  ], DarkModeStateControllerSlimmer.prototype, "isInDarkMode", void 0);
2264
- __decorate$b([
2272
+ __decorate$d([
2265
2273
  MapToComponentMethod('connectedCallback')
2266
2274
  ], DarkModeStateControllerSlimmer.prototype, "connectedCallback", null);
2267
- __decorate$b([
2275
+ __decorate$d([
2268
2276
  MapToComponentMethod('disconnectedCallback')
2269
2277
  ], DarkModeStateControllerSlimmer.prototype, "disconnectResizeObserver", null);
2270
2278
 
@@ -2284,21 +2292,6 @@ class RichTextContentController {
2284
2292
  }
2285
2293
  }
2286
2294
 
2287
- /**
2288
- * Replace the text node selected content to new text
2289
- *
2290
- * @example selectedNode.apply(new ReplaceSelectedTextAction(insertText))
2291
- */
2292
- class ReplaceSelectedTextAction extends ModifyContentAction {
2293
- constructor(text, currentRange) {
2294
- super();
2295
- this.type = ModifyContentActionType.REPLACE_SELECTED_TEXT;
2296
- this.textToBeInsert = '';
2297
- this.textToBeInsert = text;
2298
- this.currentRange = currentRange;
2299
- }
2300
- }
2301
-
2302
2295
  const ROOT_CONTAINER_CLASS_NAME = 'rich-text-content';
2303
2296
  /** This code snippet is defining an abstract class named `BaseHandler` with an abstract method `execute`. */
2304
2297
  class BaseHandler {
@@ -2307,30 +2300,14 @@ class BaseHandler {
2307
2300
  *
2308
2301
  * @param {VegaRTEContent} currentState - The current state of the VegaRTE content.
2309
2302
  * @param {SelectionController} selectionController - Manages the selection of items in the user interface.
2303
+ * @param {HTMLElement} richTextEditor - The current rich text editor component
2310
2304
  * @param {InputEvent} [event] - It is used to pass an input event to the method for handling.
2311
2305
  */
2312
- execute(currentState, selectionController, event) {
2306
+ execute(currentState, selectionController, richTextEditor, event) {
2313
2307
  this.initCurrentStateAndSelection(currentState, selectionController);
2308
+ this.setCurrentRichTextEditor(richTextEditor);
2314
2309
  this.handleEvent(event);
2315
2310
  }
2316
- /**
2317
- * Replaces the selected nodes with the provided text.
2318
- *
2319
- * @param {string} text - The insert text
2320
- * @returns {RTENode} - The selected start node
2321
- */
2322
- replaceSelectedNodesWithText(text) {
2323
- const selectedNodes = this.selectionController.getSelectedNodes();
2324
- const range = this.selectionController.getCurrentRange();
2325
- const { startContainer, endContainer } = range;
2326
- const result = this.removeSelectionRange();
2327
- const startNode = selectedNodes[0];
2328
- if (startNode instanceof RTETextNode && text) {
2329
- startNode.apply(new UpdateTextAction(startNode.text + text));
2330
- }
2331
- this.mergeRangeStartAndEnd(startContainer, endContainer);
2332
- return result;
2333
- }
2334
2311
  /**
2335
2312
  * The function `isRootContainer` checks if an HTML element is a root container with a class of 'rich-text-content'.
2336
2313
  *
@@ -2352,105 +2329,22 @@ class BaseHandler {
2352
2329
  return node && node.childNodes && node.childNodes.length === 0;
2353
2330
  }
2354
2331
  /**
2355
- * Removes the selected text at the start and end of a range in a Rich Text Editor.
2332
+ * Removes selected nodes within a range in a rich text editor content.
2333
+ * The method is only used for different nodes are selected
2334
+ *
2335
+ * @param {boolean} [mergeNode] Merge start node and end node or not, default value is false.
2336
+ * @returns {RTENode} The range start node, usually the start node is the first item of selectedNodes, if the selectedNodes is all removed, the start node will be a new text node.
2356
2337
  */
2357
- removeRangeStartAndEndSelectedText() {
2338
+ removeSelectionRange(mergeNode = false) {
2339
+ ChangeManager.notify(domNodeSubjectFactory.getSubject(this.richTextEditorRef, VegaInternalRichTextEditDeleteSelectedNodes), { host: this.richTextEditorRef, detail: mergeNode });
2340
+ const range = this.selectionController.getCurrentRange();
2358
2341
  const selectedNodes = this.selectionController.getSelectedNodes();
2359
- const currentRange = this.selectionController.getCurrentRange();
2360
- if (selectedNodes[0] instanceof RTETextNode) {
2361
- selectedNodes[0].apply(new ReplaceSelectedTextAction('', currentRange));
2362
- }
2363
- if (selectedNodes.length > 1 && selectedNodes[selectedNodes.length - 1] instanceof RTETextNode) {
2364
- selectedNodes[selectedNodes.length - 1].apply(new ReplaceSelectedTextAction('', currentRange));
2365
- }
2342
+ return range.startNode || selectedNodes[0];
2366
2343
  }
2367
2344
  /**
2368
- * Merges text nodes in a rich text editor.
2345
+ * Creates a new paragraph with an empty text node and returns it.
2369
2346
  *
2370
- * @param {Node} startContainer - Start text node element
2371
- * @param {Node} endContainer - End text node element
2372
- */
2373
- mergeRangeStartAndEnd(startContainer, endContainer) {
2374
- if (startContainer !== endContainer) {
2375
- if (startContainer.nodeType === Node.TEXT_NODE && endContainer.nodeType === Node.TEXT_NODE) {
2376
- const selectedNodes = this.selectionController.getSelectedNodes();
2377
- const startRTENode = selectedNodes[0];
2378
- const endRTENode = selectedNodes[selectedNodes.length - 1];
2379
- if (startRTENode && startRTENode.parentBlock && endRTENode && endRTENode.parentBlock) {
2380
- const endBlock = endRTENode.parentBlock;
2381
- if (this.shouldMergeTextNode(startRTENode, endRTENode)) {
2382
- startRTENode.apply(new UpdateTextAction(startRTENode.text + endRTENode.text));
2383
- if (startRTENode.parentBlock === endRTENode.parentBlock) {
2384
- startRTENode.parentBlock.apply(new RemoveChildAction(endRTENode));
2385
- }
2386
- else {
2387
- endRTENode.parentBlock.apply(new RemoveChildAction(endRTENode.parentBlock.nodes[0]));
2388
- }
2389
- }
2390
- if (startRTENode.parentBlock !== endRTENode.parentBlock) {
2391
- startRTENode.parentBlock.apply(new AppendChildNodesAction(endBlock.nodes));
2392
- endBlock.nodes = [];
2393
- }
2394
- if (endBlock.nodes.length < 1) {
2395
- endBlock.parent.apply(new RemoveChildAction(endBlock));
2396
- }
2397
- }
2398
- }
2399
- }
2400
- }
2401
- /**
2402
- * Removes selected nodes within a range in a rich text editor content.
2403
- * The method is only used for different nodes are selected
2404
- *
2405
- * @returns {RTENode} The range start node, usually the start node is the first item of selectedNodes, if the selectedNodes is all removed, the start node will be a new text node.
2406
- */
2407
- removeSelectionRange() {
2408
- const range = this.selectionController.getCurrentRange();
2409
- const selectedNodes = this.selectionController.getSelectedNodes();
2410
- const { endOffset, startOffset } = range;
2411
- const startNode = selectedNodes[0];
2412
- const endNode = selectedNodes[selectedNodes.length - 1];
2413
- if (selectedNodes.length > 1) {
2414
- // Remove all selected nodes except start node and end node(the end image node will be removed), the start node need to get the index of the block
2415
- const shouldRemovedItems = selectedNodes.filter((item) => {
2416
- if (item.type !== 'IMAGE') {
2417
- return item !== startNode && item !== endNode;
2418
- }
2419
- else {
2420
- return item !== startNode && (item !== endNode || (item === endNode && endOffset !== 0));
2421
- }
2422
- });
2423
- shouldRemovedItems.forEach((item) => {
2424
- item.parentBlock.apply(new RemoveChildAction(item));
2425
- });
2426
- }
2427
- this.removeRangeStartAndEndSelectedText();
2428
- /**
2429
- * if the range start node is image and the item is selected, so we need remove the image item, the image block will be removed if the item is the only item.
2430
- * but before remove the image block, we need insert a paragraph to make sure the start block and start node could be get correct before insert text or break paragraph action
2431
- */
2432
- if (startNode instanceof RTEImageNode &&
2433
- startOffset !== 1 &&
2434
- (endNode !== startNode || endOffset !== 0)) {
2435
- // the image block will be deleted when the image is the only item
2436
- if (startNode.parentBlock.nodes.length === 1) {
2437
- const paragraph = this.createEmptyParagraph();
2438
- startNode.parentBlock.parent.apply(new InsertBlocksBeforeAction(startNode.parentBlock, paragraph));
2439
- startNode.parentBlock.apply(new RemoveChildAction(startNode));
2440
- return paragraph.nodes[0];
2441
- }
2442
- else if (startNode === startNode.parentBlock.nodes[0]) {
2443
- // the start node should be the next image item if the image is first item
2444
- startNode.parentBlock.apply(new RemoveChildAction(startNode));
2445
- return startNode.parentBlock.nodes[0];
2446
- }
2447
- }
2448
- return startNode;
2449
- }
2450
- /**
2451
- * Creates a new paragraph with an empty text node and returns it.
2452
- *
2453
- * @returns {RTETextBlock} An empty paragraph with a unique identifier and a text node appended to it.
2347
+ * @returns {RTETextBlock} An empty paragraph with a unique identifier and a text node appended to it.
2454
2348
  */
2455
2349
  createEmptyParagraph() {
2456
2350
  const paragraph = new RTETextBlock(generateUUID(), 'paragraph');
@@ -2458,18 +2352,6 @@ class BaseHandler {
2458
2352
  paragraph.apply(new AppendChildNodesAction([textNode]));
2459
2353
  return paragraph;
2460
2354
  }
2461
- /**
2462
- * Compares the annotations of two RTETextNodes to determine if they can be merged.
2463
- *
2464
- * @param {RTETextNode} nodeA - node A
2465
- * @param {RTETextNode} nodeB - node B
2466
- * @returns {boolean} true or false
2467
- */
2468
- shouldMergeTextNode(nodeA, nodeB) {
2469
- const { annotations: annotationsA } = nodeA.toJSON();
2470
- const { annotations: annotationsB } = nodeB.toJSON();
2471
- return JSON.stringify(annotationsA) === JSON.stringify(annotationsB);
2472
- }
2473
2355
  /**
2474
2356
  * The function initializes the current state and selection controller in TypeScript.
2475
2357
  *
@@ -2480,6 +2362,14 @@ class BaseHandler {
2480
2362
  this.currentState = currentState;
2481
2363
  this.selectionController = selectionController;
2482
2364
  }
2365
+ /**
2366
+ * Queries the rich text editor element from the input event target.
2367
+ *
2368
+ * @param {HTMLElement} richTextEditor - The current rich text editor component
2369
+ */
2370
+ setCurrentRichTextEditor(richTextEditor) {
2371
+ this.richTextEditorRef = richTextEditor;
2372
+ }
2483
2373
  }
2484
2374
 
2485
2375
  /**
@@ -2496,6 +2386,21 @@ class InsertNodesBeforeAction extends ModifyContentAction {
2496
2386
  }
2497
2387
  }
2498
2388
 
2389
+ /**
2390
+ * Replace the text node selected content to new text
2391
+ *
2392
+ * @example selectedNode.apply(new ReplaceSelectedTextAction(insertText))
2393
+ */
2394
+ class ReplaceSelectedTextAction extends ModifyContentAction {
2395
+ constructor(text, currentRange) {
2396
+ super();
2397
+ this.type = ModifyContentActionType.REPLACE_SELECTED_TEXT;
2398
+ this.textToBeInsert = '';
2399
+ this.textToBeInsert = text;
2400
+ this.currentRange = currentRange;
2401
+ }
2402
+ }
2403
+
2499
2404
  /** Handles inserting text into a VegaRTEContent based on the current selection and input event. User input character will trigger this callback */
2500
2405
  class InsertTextHandler extends BaseHandler {
2501
2406
  /**
@@ -2539,10 +2444,11 @@ class InsertTextHandler extends BaseHandler {
2539
2444
  }
2540
2445
  else {
2541
2446
  // The selected nodes is multiple nodes
2542
- const cursorNode = this.replaceSelectedNodesWithText(text);
2543
- this.selectionController.enqueueSelectionRangeFutureState(cursorNode, cursorNode instanceof RTETextNode
2544
- ? Math.min(startOffset + text.length, cursorNode.text.length)
2545
- : startOffset);
2447
+ const cursorNode = this.removeSelectionRange(true);
2448
+ if (cursorNode instanceof RTETextNode) {
2449
+ cursorNode.apply(new ReplaceSelectedTextAction(text, currentRange));
2450
+ this.selectionController.enqueueSelectionRangeFutureState(cursorNode, Math.min(startOffset + text.length, cursorNode.text.length));
2451
+ }
2546
2452
  }
2547
2453
  }
2548
2454
  /**
@@ -2739,11 +2645,13 @@ class InsertLineBreakHandler extends BaseHandler {
2739
2645
  * </p>
2740
2646
  */
2741
2647
  breakNewBlock() {
2742
- const newBlock = new RTETextBlock(generateUUID(), 'paragraph');
2743
- const lineBreakNode = this.createLineBreakNode(newBlock);
2744
- newBlock.apply(new AppendChildNodesAction([this.createLineBreakNode(newBlock), lineBreakNode]));
2745
- this.currentState.apply(new AppendChildNodesAction([newBlock]));
2746
- this.switchCaretPositionToSpecifiedNode(lineBreakNode);
2648
+ if (this.currentState &&
2649
+ this.currentState.blocks[0] &&
2650
+ this.currentState.blocks[0] instanceof RTETextBlock) {
2651
+ const lineBreakAction = new LineBreakSingleBlockAction(this.currentState.blocks[0].nodes[0], 0);
2652
+ this.currentState.blocks[0].apply(lineBreakAction);
2653
+ this.switchCaretPositionToSpecifiedNode(lineBreakAction.lineBreakNode);
2654
+ }
2747
2655
  }
2748
2656
  /**
2749
2657
  * If the selected node is a text node
@@ -2780,7 +2688,7 @@ class InsertLineBreakHandler extends BaseHandler {
2780
2688
  /**
2781
2689
  * Moves the caret to the next node element in a rich text editor.
2782
2690
  *
2783
- * @param {RTETextNode} lineBreakNode - Represents a node element in a rich text editor.
2691
+ * @param {RTENode} lineBreakNode - Represents a node element in a rich text editor.
2784
2692
  */
2785
2693
  switchCaretPositionToSpecifiedNode(lineBreakNode) {
2786
2694
  this.selectionController.enqueueSelectionRangeFutureState(this.getNextRTENode(lineBreakNode), 0);
@@ -2796,15 +2704,6 @@ class InsertLineBreakHandler extends BaseHandler {
2796
2704
  const nextNode = lineBreakNode.parentBlock['nodes'][index + 1];
2797
2705
  return nextNode || lineBreakNode;
2798
2706
  }
2799
- /**
2800
- * Create a null text that will render a br element in a rich text editor.
2801
- *
2802
- * @param {RTEBlock} block - Represents a block element in a rich text editor.
2803
- * @returns {RTETextNode} the new line break node.
2804
- */
2805
- createLineBreakNode(block) {
2806
- return new RTETextNode(generateUUID(), '\n', block);
2807
- }
2808
2707
  }
2809
2708
 
2810
2709
  /**
@@ -2864,21 +2763,12 @@ class DeleteContentHandler extends BaseHandler {
2864
2763
  }
2865
2764
  }
2866
2765
  }
2867
- /**
2868
- * Creates a new paragraph element with a text node and appends it to the current state.
2869
- */
2870
- insertDefaultParagraph() {
2871
- const paragraph = this.createEmptyParagraph();
2872
- this.currentState.apply(new AppendChildNodesAction([paragraph]));
2873
- this.selectionController.enqueueSelectionRangeFutureState(paragraph.nodes[0], 1);
2874
- }
2875
2766
  /**
2876
2767
  * Deletes the content within multiple nodes selected by the user.
2877
2768
  */
2878
2769
  deleteContentWithMultipleNodes() {
2879
- const range = this.selectionController.getCurrentRange();
2880
2770
  const selectedNodes = this.selectionController.getSelectedNodes();
2881
- const cursorNode = this.replaceSelectedNodesWithText('');
2771
+ const cursorNode = this.removeSelectionRange(true);
2882
2772
  const lastSelectedNode = selectedNodes[selectedNodes.length - 1];
2883
2773
  if (selectedNodes.length > 1 &&
2884
2774
  lastSelectedNode instanceof RTETextNode &&
@@ -2886,7 +2776,6 @@ class DeleteContentHandler extends BaseHandler {
2886
2776
  lastSelectedNode.parentBlock.apply(new RemoveChildAction(lastSelectedNode));
2887
2777
  }
2888
2778
  this.convertFirstBlockToParagraph(cursorNode.parentBlock);
2889
- this.selectionController.enqueueSelectionRangeFutureState(cursorNode, range.startOffset);
2890
2779
  }
2891
2780
  /**
2892
2781
  * If the first block is not paragraph, convert the block to paragraph after delete all text
@@ -2906,6 +2795,14 @@ class DeleteContentHandler extends BaseHandler {
2906
2795
  block.parent.apply(new RemoveChildAction(block));
2907
2796
  }
2908
2797
  }
2798
+ /**
2799
+ * Creates a new paragraph element with a text node and appends it to the current state.
2800
+ */
2801
+ insertDefaultParagraph() {
2802
+ const paragraph = this.createEmptyParagraph();
2803
+ this.currentState.apply(new AppendChildNodesAction([paragraph]));
2804
+ this.selectionController.enqueueSelectionRangeFutureState(paragraph.nodes[0], 1);
2805
+ }
2909
2806
  /**
2910
2807
  * Returns the end offset of a given node in a Rich Text Editor based on its type and text content.
2911
2808
  *
@@ -3824,8 +3721,8 @@ class InsertPasteHandler extends BaseHandler {
3824
3721
  */
3825
3722
  insertBlocksToContent(blocks) {
3826
3723
  const cursorNode = this.removeSelectionRange();
3827
- const currentBlock = cursorNode === null || cursorNode === void 0 ? void 0 : cursorNode.parentBlock;
3828
- if (currentBlock) {
3724
+ if (cursorNode && cursorNode.parentBlock) {
3725
+ const currentBlock = cursorNode.parentBlock;
3829
3726
  const { startOffset } = this.selectionController.getCurrentRange();
3830
3727
  const breakAction = new SplitBlockWithNodeAction(cursorNode, startOffset);
3831
3728
  currentBlock.apply(breakAction);
@@ -3873,13 +3770,13 @@ class InsertPasteHandler extends BaseHandler {
3873
3770
  }
3874
3771
  }
3875
3772
 
3876
- var __decorate$a = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
3773
+ var __decorate$c = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
3877
3774
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3878
3775
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
3879
3776
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
3880
3777
  return c > 3 && r && Object.defineProperty(target, key, r), r;
3881
3778
  };
3882
- /** Used to monitoring the user input actions by event listener and mutationObserver */
3779
+ /** Used to monitoring the user input actions by event listener */
3883
3780
  class UserInputController extends VegaSlimmer {
3884
3781
  constructor() {
3885
3782
  super(...arguments);
@@ -3888,91 +3785,47 @@ class UserInputController extends VegaSlimmer {
3888
3785
  this.insertLineBreakHandler = new InsertLineBreakHandler();
3889
3786
  this.deleteContentHandler = new DeleteContentHandler();
3890
3787
  this.insertPasteHandler = new InsertPasteHandler();
3891
- this.observerOptions = {
3892
- characterData: true,
3893
- characterDataOldValue: true,
3894
- subtree: true,
3895
- childList: true,
3896
- };
3897
3788
  /**
3898
3789
  * When a user performs an input action within the editable element, this function is triggered.
3899
3790
  *
3900
3791
  * @param {InputEvent} e the before input event object
3901
3792
  */
3902
3793
  this.handleUserInputAction = (e) => {
3903
- this.removeObserver();
3794
+ const inputType = e.inputType;
3904
3795
  e.preventDefault();
3905
3796
  this.initValueIfEmpty();
3797
+ // The insertCompositionText type input event can not be prevented, so we process the current action by insertCompositionTextController.
3798
+ if (inputType === 'insertCompositionText') {
3799
+ return;
3800
+ }
3801
+ this.insertCompositionTextController.removeObserver();
3906
3802
  let updateFlag = false;
3907
- switch (e.inputType) {
3803
+ switch (inputType) {
3908
3804
  case 'insertParagraph':
3909
3805
  updateFlag = true;
3910
- this.insertParagraphHandler.execute(this.value, this.selectionController, e);
3806
+ this.insertParagraphHandler.execute(this.value, this.selectionController, this.host, e);
3911
3807
  break;
3912
3808
  case 'insertText':
3913
3809
  updateFlag = true;
3914
- this.insertTextHandler.execute(this.value, this.selectionController, e);
3810
+ this.insertTextHandler.execute(this.value, this.selectionController, this.host, e);
3915
3811
  break;
3916
3812
  case 'insertLineBreak':
3917
3813
  updateFlag = true;
3918
- this.insertLineBreakHandler.execute(this.value, this.selectionController, e);
3814
+ this.insertLineBreakHandler.execute(this.value, this.selectionController, this.host, e);
3919
3815
  break;
3920
3816
  case 'deleteContentBackward':
3921
3817
  updateFlag = true;
3922
- this.deleteContentHandler.execute(this.value, this.selectionController, e);
3818
+ this.deleteContentHandler.execute(this.value, this.selectionController, this.host, e);
3923
3819
  break;
3924
3820
  case 'insertFromPaste':
3925
3821
  updateFlag = true;
3926
- this.insertPasteHandler.execute(this.value, this.selectionController, e);
3822
+ this.insertPasteHandler.execute(this.value, this.selectionController, this.host, e);
3927
3823
  break;
3928
3824
  }
3929
3825
  if (updateFlag) {
3930
3826
  this.notifyComponentFlushValue();
3931
3827
  }
3932
3828
  };
3933
- /**
3934
- * Processes mutation records related to character data and updates the text content of a rich text node accordingly.
3935
- *
3936
- * @param {MutationRecord[]} records - Each `MutationRecord` object represents a single mutation that occurred in the DOM.
3937
- */
3938
- this.handleObserver = (records) => {
3939
- let updateFlag = false;
3940
- if (records.every((record) => record.type === 'characterData')) {
3941
- records.forEach((record) => {
3942
- const { target } = record;
3943
- if (target.nodeType === Node.TEXT_NODE && target.parentElement) {
3944
- const richTextNode = stateEntityRenderingRegistry.getEntityByDOM(target.parentElement);
3945
- if (richTextNode && richTextNode['text'] !== target.textContent) {
3946
- updateFlag = true;
3947
- richTextNode['text'] = target.textContent;
3948
- }
3949
- }
3950
- });
3951
- if (updateFlag) {
3952
- this.notifyComponentFlushValue();
3953
- }
3954
- }
3955
- };
3956
- }
3957
- /**
3958
- * The function `initMutationObserver` initializes a MutationObserver on an editable HTML element if it exists.
3959
- */
3960
- initMutationObserver() {
3961
- if (this.mutationObserver) {
3962
- const editableElement = this.getEditableElementRef();
3963
- if (editableElement) {
3964
- this.mutationObserver.disconnect();
3965
- this.mutationObserver.observe(editableElement, this.observerOptions);
3966
- }
3967
- }
3968
- }
3969
- /**
3970
- * Disconnects the mutation observer if it exists.
3971
- */
3972
- removeObserver() {
3973
- if (this.mutationObserver) {
3974
- this.mutationObserver.disconnect();
3975
- }
3976
3829
  }
3977
3830
  /**
3978
3831
  * Adds event listener to an editable HTML element to handle user input actions.
@@ -3983,8 +3836,6 @@ class UserInputController extends VegaSlimmer {
3983
3836
  editableElement.addEventListener('beforeinput', this.handleUserInputAction);
3984
3837
  editableElement.addEventListener('drop', this.preventDropEvent);
3985
3838
  }
3986
- this.mutationObserver = new MutationObserver(this.handleObserver);
3987
- this.initMutationObserver();
3988
3839
  }
3989
3840
  /**
3990
3841
  * Removes event listener for user input actions from an editable HTML div element.
@@ -3995,13 +3846,6 @@ class UserInputController extends VegaSlimmer {
3995
3846
  editableElement.removeEventListener('beforeinput', this.handleUserInputAction);
3996
3847
  editableElement.removeEventListener('drop', this.preventDropEvent);
3997
3848
  }
3998
- this.removeObserver();
3999
- }
4000
- /**
4001
- * re-connect the observer after the props change and component did render
4002
- */
4003
- reConnectObserver() {
4004
- this.initMutationObserver();
4005
3849
  }
4006
3850
  /**
4007
3851
  * The function `getEditableElementRef` returns a reference to the editable HTMLDivElement within a rich text editor.
@@ -4041,30 +3885,30 @@ class UserInputController extends VegaSlimmer {
4041
3885
  }
4042
3886
  }
4043
3887
  }
4044
- __decorate$a([
3888
+ __decorate$c([
4045
3889
  MapToComponentField()
4046
3890
  ], UserInputController.prototype, "host", void 0);
4047
- __decorate$a([
3891
+ __decorate$c([
4048
3892
  MapToComponentField()
4049
3893
  ], UserInputController.prototype, "value", void 0);
4050
- __decorate$a([
3894
+ __decorate$c([
4051
3895
  MapToComponentField()
4052
3896
  ], UserInputController.prototype, "valueController", void 0);
4053
- __decorate$a([
3897
+ __decorate$c([
4054
3898
  MapToComponentField()
4055
3899
  ], UserInputController.prototype, "vegaRichTextEditorRenderer", void 0);
4056
- __decorate$a([
3900
+ __decorate$c([
4057
3901
  MapToComponentField()
4058
3902
  ], UserInputController.prototype, "selectionController", void 0);
4059
- __decorate$a([
3903
+ __decorate$c([
3904
+ MapToComponentField()
3905
+ ], UserInputController.prototype, "insertCompositionTextController", void 0);
3906
+ __decorate$c([
4060
3907
  MapToComponentMethod('componentDidLoad')
4061
3908
  ], UserInputController.prototype, "addActionListener", null);
4062
- __decorate$a([
3909
+ __decorate$c([
4063
3910
  MapToComponentMethod('disconnectedCallback')
4064
3911
  ], UserInputController.prototype, "removeActionListener", null);
4065
- __decorate$a([
4066
- MapToComponentMethod('componentDidRender')
4067
- ], UserInputController.prototype, "reConnectObserver", null);
4068
3912
 
4069
3913
  /**
4070
3914
  * A rule that checks if the input range is empty or not
@@ -4140,7 +3984,7 @@ class InsertImageToBlockAction extends ModifyContentAction {
4140
3984
  }
4141
3985
  }
4142
3986
 
4143
- var __decorate$9 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
3987
+ var __decorate$b = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
4144
3988
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4145
3989
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4146
3990
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
@@ -4229,26 +4073,26 @@ class InsertImageController extends VegaSlimmer {
4229
4073
  }
4230
4074
  }
4231
4075
  }
4232
- __decorate$9([
4076
+ __decorate$b([
4233
4077
  MapToComponentField()
4234
4078
  ], InsertImageController.prototype, "selectionController", void 0);
4235
- __decorate$9([
4079
+ __decorate$b([
4236
4080
  MapToComponentField()
4237
4081
  ], InsertImageController.prototype, "value", void 0);
4238
- __decorate$9([
4082
+ __decorate$b([
4239
4083
  MapToComponentField()
4240
4084
  ], InsertImageController.prototype, "valueController", void 0);
4241
- __decorate$9([
4085
+ __decorate$b([
4242
4086
  MapToComponentField()
4243
4087
  ], InsertImageController.prototype, "vegaRichTextEditorRenderer", void 0);
4244
- __decorate$9([
4088
+ __decorate$b([
4245
4089
  MapToComponentMethod('componentDidLoad')
4246
4090
  ], InsertImageController.prototype, "registerObserver", null);
4247
- __decorate$9([
4091
+ __decorate$b([
4248
4092
  MapToComponentMethod('disconnectedCallback')
4249
4093
  ], InsertImageController.prototype, "unRegisterObserver", null);
4250
4094
 
4251
- var __decorate$8 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
4095
+ var __decorate$a = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
4252
4096
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4253
4097
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4254
4098
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
@@ -4304,20 +4148,20 @@ class FocusController extends VegaSlimmer {
4304
4148
  this.selectionController.setSelectionRange(range);
4305
4149
  }
4306
4150
  }
4307
- __decorate$8([
4151
+ __decorate$a([
4308
4152
  MapToComponentField()
4309
4153
  ], FocusController.prototype, "vegaRichTextEditorRenderer", void 0);
4310
- __decorate$8([
4154
+ __decorate$a([
4311
4155
  MapToComponentField()
4312
4156
  ], FocusController.prototype, "selectionController", void 0);
4313
- __decorate$8([
4157
+ __decorate$a([
4314
4158
  MapToComponentField()
4315
4159
  ], FocusController.prototype, "valueController", void 0);
4316
- __decorate$8([
4160
+ __decorate$a([
4317
4161
  MapToComponentField()
4318
4162
  ], FocusController.prototype, "value", void 0);
4319
4163
 
4320
- var __decorate$7 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
4164
+ var __decorate$9 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
4321
4165
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4322
4166
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4323
4167
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
@@ -4357,46 +4201,461 @@ class TextNodeColorController extends VegaSlimmer {
4357
4201
  return true;
4358
4202
  }
4359
4203
  }
4360
- __decorate$7([
4204
+ __decorate$9([
4361
4205
  MapToComponentMethod('connectedCallback')
4362
4206
  ], TextNodeColorController.prototype, "connectedCallback", null);
4363
- __decorate$7([
4207
+ __decorate$9([
4364
4208
  MapToComponentMethod('disconnectedCallback')
4365
4209
  ], TextNodeColorController.prototype, "disconnectResizeObserver", null);
4366
4210
 
4367
- const vegaRichTextEditorCss = ":host{display:block}:host vega-field-label{margin-bottom:8px}:host vega-text{margin-bottom:16px;font-family:\"Inter\", sans-serif;font-size:14px;font-weight:400;line-height:18px;letter-spacing:0px;color:rgba(var(--v-text-secondary, 107, 116, 125, 1))}@media screen and (min-width: 768px) and (max-width: 1023px){:host vega-text{font-family:\"Inter\", sans-serif;font-size:14px;font-weight:400;line-height:18px;letter-spacing:0px}}@media screen and (min-width: 1024px) and (max-width: 1439px){:host vega-text{font-family:\"Inter\", sans-serif;font-size:14px;font-weight:400;line-height:18px;letter-spacing:0px}}@media screen and (min-width: 1440px) and (max-width: 9999px){:host vega-text{font-family:\"Inter\", sans-serif;font-size:14px;font-weight:400;line-height:18px;letter-spacing:0px}}:host .rich-text-editor-container{display:flex;box-sizing:content-box;position:relative;box-sizing:content-box;background-color:rgba(var(--v-bg-primary, 252, 252, 252, 1));border:1px solid rgba(var(--v-border-input-field, 171, 198, 216, 1));border-radius:8px;font-family:\"Inter\", sans-serif;font-size:16px;font-weight:400;line-height:24px;letter-spacing:0px;color:rgba(var(--v-text-primary, 32, 54, 69, 1));margin-top:12px;overflow:auto;resize:vertical;padding-top:12px;padding-right:16px;padding-bottom:32px;padding-left:16px}@media screen and (min-width: 768px) and (max-width: 1023px){:host .rich-text-editor-container{font-family:\"Inter\", sans-serif;font-size:16px;font-weight:400;line-height:24px;letter-spacing:0px}}@media screen and (min-width: 1024px) and (max-width: 1439px){:host .rich-text-editor-container{font-family:\"Inter\", sans-serif;font-size:16px;font-weight:400;line-height:24px;letter-spacing:0px}}@media screen and (min-width: 1440px) and (max-width: 9999px){:host .rich-text-editor-container{font-family:\"Inter\", sans-serif;font-size:16px;font-weight:400;line-height:24px;letter-spacing:0px}}:host .rich-text-editor-container:hover{border:1px solid rgba(var(--v-border-input-field-hover, 115, 160, 190, 1))}:host .rich-text-editor-container:focus-within{border:1px solid rgba(var(--v-border-input-field-focus, 19, 98, 226, 1));outline:2px solid rgba(var(--v-border-color-action, 19, 98, 226, 1));outline-offset:2px;border:1px solid rgba(var(--v-border-color-input-field-focus, 19, 98, 226, 1))}:host .rich-text-editor-container.disabled{background-color:rgba(var(--v-bg-secondary, 245, 247, 247, 1));border:1px solid rgba(var(--v-border-input-field-disabled, 222, 225, 227, 1))}:host .rich-text-editor-container.disabled:hover,:host .rich-text-editor-container.disabled:focus-within{border:1px solid rgba(var(--v-border-input-field-disabled, 222, 225, 227, 1))}:host .rich-text-editor-container.disabled:focus-within{outline:none}:host .rich-text-editor-container.error{border:1px solid rgba(var(--v-border-input-field-danger, 230, 50, 87, 1))}:host .rich-text-editor-container.error:hover{border:1px solid rgba(var(--v-border-input-field-danger-hover, 255, 87, 114, 1))}:host .rich-text-editor-container.error:focus-within{outline:2px solid rgba(var(--v-border-color-danger, 230, 50, 87, 1));outline-offset:2px;border:1px solid rgba(var(--v-border-color-input-field-danger-focus, 233, 71, 104, 1))}:host .rich-text-editor-container .text-editor-counter{position:absolute;bottom:8px;right:8px;display:flex;padding-left:4px;padding-right:4px;padding-top:2px;padding-bottom:2px;border-radius:4px;font-family:\"Inter\", sans-serif;font-size:14px;font-weight:400;line-height:18px;letter-spacing:0px;color:rgba(var(--v-text-inverted-primary, 252, 252, 252, 1));background-color:rgba(var(--v-bg-textarea-count, 4, 4, 28, 0.6))}@media screen and (min-width: 768px) and (max-width: 1023px){:host .rich-text-editor-container .text-editor-counter{font-family:\"Inter\", sans-serif;font-size:14px;font-weight:400;line-height:18px;letter-spacing:0px}}@media screen and (min-width: 1024px) and (max-width: 1439px){:host .rich-text-editor-container .text-editor-counter{font-family:\"Inter\", sans-serif;font-size:14px;font-weight:400;line-height:18px;letter-spacing:0px}}@media screen and (min-width: 1440px) and (max-width: 9999px){:host .rich-text-editor-container .text-editor-counter{font-family:\"Inter\", sans-serif;font-size:14px;font-weight:400;line-height:18px;letter-spacing:0px}}:host .rich-text-editor-container .text-editor-counter.counter-exceed-max-length{background-color:rgba(var(--v-bg-textarea-counter-exceed-max-length, 214, 46, 81))}.toolbar-btn-group{display:flex;justify-content:center;align-items:center}.toolbar-btn-group>*:not(:first-child):not(:last-child) ::part(rich-text-editor-toolbar-button){border-radius:0px}.toolbar-btn-group>*:first-child:not(:last-child) ::part(rich-text-editor-toolbar-button){border-top-left-radius:4px;border-bottom-left-radius:4px;border-top-right-radius:0px;border-bottom-right-radius:0px}.toolbar-btn-group>*:last-child:not(:first-child) ::part(rich-text-editor-toolbar-button){border-top-left-radius:0px;border-bottom-left-radius:0px;border-top-right-radius:4px;border-bottom-right-radius:4px}.toolbar-btn-group>*:not(:first-child) ::part(rich-text-editor-toolbar-button){margin-left:-1px}.toolbar-btn-group .toolbar-btn-color-preview-box{display:flex;border:1px solid rgba(var(--v-border-chip, 205, 209, 211, 1));box-sizing:border-box;border-radius:4px;width:16px;height:16px;cursor:pointer;justify-content:center;align-items:center;margin-left:6px}.toolbar-btn-group .toolbar-btn-link-wrapper{position:relative}.toolbar-btn-group .toolbar-btn-link-wrapper vega-rich-text-link-editor{position:absolute;bottom:0;left:0;right:0}.vega-error{font-family:\"Inter\", sans-serif;font-size:14px;font-weight:400;line-height:18px;letter-spacing:0px;color:rgba(var(--v-text-error, 189, 41, 71, 1));display:block;margin-top:12px}@media screen and (min-width: 768px) and (max-width: 1023px){.vega-error{font-family:\"Inter\", sans-serif;font-size:14px;font-weight:400;line-height:18px;letter-spacing:0px}}@media screen and (min-width: 1024px) and (max-width: 1439px){.vega-error{font-family:\"Inter\", sans-serif;font-size:14px;font-weight:400;line-height:18px;letter-spacing:0px}}@media screen and (min-width: 1440px) and (max-width: 9999px){.vega-error{font-family:\"Inter\", sans-serif;font-size:14px;font-weight:400;line-height:18px;letter-spacing:0px}}.vega-hidden{display:none}";
4368
-
4369
- var __decorate$6 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
4211
+ var __decorate$8 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
4370
4212
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4371
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
4372
- r = Reflect.decorate(decorators, target, key, desc);
4373
- else
4374
- for (var i = decorators.length - 1; i >= 0; i--)
4375
- if (d = decorators[i])
4376
- r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
4213
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4214
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
4377
4215
  return c > 3 && r && Object.defineProperty(target, key, r), r;
4378
4216
  };
4379
- const VegaRichTextEditor = class {
4380
- constructor(hostRef) {
4381
- registerInstance(this, hostRef);
4382
- this.vegaChange = createEvent(this, "vegaChange", 7);
4383
- this.change = createEvent(this, "change", 7);
4384
- this.vegaImageInserted = createEvent(this, "vegaImageInserted", 7);
4385
- this.imageInserted = createEvent(this, "imageInserted", 7);
4386
- this.globalSlimmers = {};
4387
- this.vegaComponentUsageRuntimeMetricsSlimmer = new VegaComponentUsageRuntimeMetricsSlimmer();
4388
- this.formFieldController = new FormFieldControllerSlimmer({
4389
- propertyRules: [
4390
- {
4391
- propertyName: 'required',
4392
- ruleFactory: (isRequired) => isRequired ? new RichTextEditorRequiredRule() : null,
4393
- },
4394
- ],
4395
- validationRulesName: 'validationRules',
4396
- defaultValue: null,
4397
- attributeGetter: (propertyName) => this[propertyName],
4398
- inputContainerGetter: () => this.vegaRichTextEditorRenderer.getRichTextContainerRef(),
4399
- touchableAreaGetter: () => [this.vegaRichTextEditorRenderer.getRichTextContentRef()],
4217
+ /** Handles inserting composition text into a VegaRTEContent based on the current selection and input event. User input character will trigger this callback */
4218
+ class InsertCompositionTextController extends VegaSlimmer {
4219
+ constructor() {
4220
+ super(...arguments);
4221
+ this.insertCompositionTextEndFlag = true;
4222
+ this.observerOptions = {
4223
+ characterData: true,
4224
+ characterDataOldValue: true,
4225
+ subtree: true,
4226
+ childList: true,
4227
+ };
4228
+ /**
4229
+ * The current method is called when the insert text is update by the Pinyin input or the word correction plugin.
4230
+ *
4231
+ * @param {MutationRecord[]} records - The mutation record object array.
4232
+ */
4233
+ this.updateTextFromDom = (records) => {
4234
+ let updateFlag = false;
4235
+ if (this.insertCompositionTextEndFlag !== false) {
4236
+ records.forEach((record) => {
4237
+ const { target, oldValue } = record;
4238
+ if (target.nodeType === Node.TEXT_NODE && target.parentElement) {
4239
+ const richTextNode = stateEntityRenderingRegistry.getEntityByDOM(target.parentElement);
4240
+ const newValue = target.textContent;
4241
+ if (richTextNode instanceof RTETextNode) {
4242
+ updateFlag = this.updateCurrentNodeText(richTextNode, newValue, oldValue);
4243
+ }
4244
+ else if (newValue) {
4245
+ // The text element should removed if insert text to the image block.
4246
+ target.parentElement.removeChild(target);
4247
+ updateFlag = true;
4248
+ }
4249
+ }
4250
+ });
4251
+ }
4252
+ if (updateFlag) {
4253
+ void this.valueController.flushChanges(this.value);
4254
+ }
4255
+ };
4256
+ /**
4257
+ * Processes mutation records related to character data and updates the text content of a rich text node accordingly.
4258
+ *
4259
+ * @param {MutationRecord[]} records - Each `MutationRecord` object represents a single mutation that occurred in the DOM.
4260
+ */
4261
+ this.handleObserver = (records) => {
4262
+ if (records.every((record) => record.type === 'characterData')) {
4263
+ this.updateTextFromDom(records);
4264
+ }
4265
+ };
4266
+ /**
4267
+ * An event handler function that is triggered when the composition of text input starts. In this case,
4268
+ * it sets the `insertCompositionTextEndFlag` property of the `UserInputController` class to `false`.
4269
+ */
4270
+ this.handleCompositionStart = () => {
4271
+ this.insertCompositionTextEndFlag = false;
4272
+ ChangeManager.notify(domNodeSubjectFactory.getSubject(this.host, VegaInternalRichTextEditDeleteSelectedNodes), { host: this.host, detail: true });
4273
+ };
4274
+ /**
4275
+ * An event handler function that is triggered when the composition of text input ends. In this case,
4276
+ * it sets the `insertCompositionTextEndFlag` property of the `UserInputController` class to `true`.
4277
+ *
4278
+ * @param {CompositionEvent} event The composition event instance
4279
+ */
4280
+ this.handleCompositionEnd = (event) => {
4281
+ this.insertCompositionTextEndFlag = true;
4282
+ const insertData = event.data;
4283
+ if (insertData) {
4284
+ this.dispatchInsertTextEvent(insertData);
4285
+ }
4286
+ };
4287
+ }
4288
+ /**
4289
+ * The function `initMutationObserver` initializes a MutationObserver on an editable HTML element if it exists.
4290
+ */
4291
+ initMutationObserver() {
4292
+ if (this.mutationObserver) {
4293
+ const editableElement = this.getEditableElementRef();
4294
+ if (editableElement) {
4295
+ this.mutationObserver.disconnect();
4296
+ this.mutationObserver.observe(editableElement, this.observerOptions);
4297
+ }
4298
+ }
4299
+ }
4300
+ /**
4301
+ * Disconnects the mutation observer if it exists.
4302
+ */
4303
+ removeObserver() {
4304
+ if (this.mutationObserver) {
4305
+ this.mutationObserver.disconnect();
4306
+ }
4307
+ }
4308
+ /**
4309
+ * The method is to get the composition text insert end or not.
4310
+ *
4311
+ * @returns {boolean} The false is main that insert composition text process is end.
4312
+ */
4313
+ isComposing() {
4314
+ return !this.insertCompositionTextEndFlag;
4315
+ }
4316
+ /**
4317
+ * Adds event listener to an editable HTML element to handle composition text insert actions.
4318
+ */
4319
+ addCompositionTextEventListener() {
4320
+ const editableElement = this.getEditableElementRef();
4321
+ if (editableElement) {
4322
+ editableElement.addEventListener('compositionstart', this.handleCompositionStart);
4323
+ editableElement.addEventListener('compositionend', this.handleCompositionEnd);
4324
+ }
4325
+ this.mutationObserver = new MutationObserver(this.handleObserver);
4326
+ this.initMutationObserver();
4327
+ }
4328
+ /**
4329
+ * Removes event listener to an editable HTML element to handle composition text insert actions.
4330
+ */
4331
+ removeCompositionTextEventListener() {
4332
+ const editableElement = this.getEditableElementRef();
4333
+ if (editableElement) {
4334
+ editableElement.removeEventListener('compositionstart', this.handleCompositionStart);
4335
+ editableElement.removeEventListener('compositionend', this.handleCompositionEnd);
4336
+ }
4337
+ this.removeObserver();
4338
+ }
4339
+ /**
4340
+ * re-connect the observer after the props change and component did render
4341
+ */
4342
+ reConnectObserver() {
4343
+ this.initMutationObserver();
4344
+ }
4345
+ /**
4346
+ * Insert text to a line break node need a special logic if the line break has a next text node.
4347
+ *
4348
+ * @param {RTETextNode} currentNode The current line break node, the text value is \n
4349
+ */
4350
+ appendLineBreakNode(currentNode) {
4351
+ const textBlock = currentNode.parentBlock;
4352
+ const index = textBlock.nodes.indexOf(currentNode);
4353
+ if (textBlock.nodes[index + 1]) {
4354
+ const newTextNode = currentNode.cloneWithText('\n');
4355
+ textBlock.apply(new InsertNodesBeforeAction(textBlock.nodes[index + 1], newTextNode));
4356
+ }
4357
+ }
4358
+ /**
4359
+ * Updates the text content of a rich text node and handles line breaks.
4360
+ *
4361
+ * @param {RTETextNode} richTextNode - The current rich text node.
4362
+ * @param {string} newValue - The target element textContent
4363
+ * @param {Nullable<string>} oldValue - The target element old textContent
4364
+ * @returns {Nullable<boolean>} The node text is updated or not
4365
+ */
4366
+ updateCurrentNodeText(richTextNode, newValue, oldValue) {
4367
+ const insertText = this.removeZeroWidthSpace(newValue.replace(/(\n)$/, ''));
4368
+ if (richTextNode.text !== insertText) {
4369
+ const { startOffset } = this.selectionController.getCurrentRange();
4370
+ const currentIsLineBreakNode = richTextNode.text === '\n';
4371
+ richTextNode.apply(new UpdateTextAction(insertText));
4372
+ if (currentIsLineBreakNode) {
4373
+ this.appendLineBreakNode(richTextNode);
4374
+ }
4375
+ const lengthGap = oldValue ? oldValue.length - newValue.length : 0;
4376
+ const newOffset = Math.min(insertText.length, startOffset - lengthGap);
4377
+ this.selectionController.enqueueSelectionRangeFutureState(richTextNode, Math.max(0, newOffset));
4378
+ return true;
4379
+ }
4380
+ }
4381
+ /**
4382
+ * The function `getEditableElementRef` returns a reference to the editable HTMLDivElement within a rich text editor.
4383
+ *
4384
+ * @returns {HTMLDivElement|null} A reference to an HTMLDivElement element that is editable.
4385
+ */
4386
+ getEditableElementRef() {
4387
+ if (!this.editableElementRef) {
4388
+ this.editableElementRef = this.vegaRichTextEditorRenderer.getRTEEditableElementRef();
4389
+ }
4390
+ return this.editableElementRef;
4391
+ }
4392
+ /**
4393
+ * Remove the ZERO_WIDTH_SPACE from the text.
4394
+ *
4395
+ * @param {string} text The input text that could include ZERO_WIDTH_SPACE.
4396
+ * @returns {string} The result text.
4397
+ */
4398
+ removeZeroWidthSpace(text) {
4399
+ if (text.startsWith(ZERO_WIDTH_SPACE)) {
4400
+ return text.slice(ZERO_WIDTH_SPACE.length);
4401
+ }
4402
+ else if (text.endsWith(ZERO_WIDTH_SPACE)) {
4403
+ return text.slice(0, text.length - ZERO_WIDTH_SPACE.length);
4404
+ }
4405
+ return text;
4406
+ }
4407
+ /**
4408
+ * Dispatch a insert text event to handle the composition text insert logic.
4409
+ *
4410
+ * @param {string} text - The text need to insert.
4411
+ */
4412
+ dispatchInsertTextEvent(text) {
4413
+ const inputEvent = new CustomEvent('beforeinput');
4414
+ inputEvent['data'] = text;
4415
+ inputEvent['inputType'] = 'insertText';
4416
+ this.editableElementRef.dispatchEvent(inputEvent);
4417
+ }
4418
+ }
4419
+ __decorate$8([
4420
+ MapToComponentField()
4421
+ ], InsertCompositionTextController.prototype, "selectionController", void 0);
4422
+ __decorate$8([
4423
+ MapToComponentField()
4424
+ ], InsertCompositionTextController.prototype, "host", void 0);
4425
+ __decorate$8([
4426
+ MapToComponentField()
4427
+ ], InsertCompositionTextController.prototype, "value", void 0);
4428
+ __decorate$8([
4429
+ MapToComponentField()
4430
+ ], InsertCompositionTextController.prototype, "valueController", void 0);
4431
+ __decorate$8([
4432
+ MapToComponentField()
4433
+ ], InsertCompositionTextController.prototype, "userInputController", void 0);
4434
+ __decorate$8([
4435
+ MapToComponentField()
4436
+ ], InsertCompositionTextController.prototype, "vegaRichTextEditorRenderer", void 0);
4437
+ __decorate$8([
4438
+ MapToComponentMethod('componentDidLoad')
4439
+ ], InsertCompositionTextController.prototype, "addCompositionTextEventListener", null);
4440
+ __decorate$8([
4441
+ MapToComponentMethod('disconnectedCallback')
4442
+ ], InsertCompositionTextController.prototype, "removeCompositionTextEventListener", null);
4443
+ __decorate$8([
4444
+ MapToComponentMethod('componentDidRender')
4445
+ ], InsertCompositionTextController.prototype, "reConnectObserver", null);
4446
+
4447
+ var __decorate$7 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
4448
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4449
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4450
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
4451
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
4452
+ };
4453
+ /**
4454
+ * The `DeleteSelectedNodesController` class provides methods to delete selected nodes.
4455
+ */
4456
+ class DeleteSelectedNodesController extends VegaSlimmer {
4457
+ constructor() {
4458
+ super(...arguments);
4459
+ /**
4460
+ * Deletes the selected nodes.
4461
+ *
4462
+ * @param {NotifyObserverPayload<boolean>} payload The notify payload
4463
+ * @param {boolean} payload.detail The delete process need merge start node and end node or not, default value is true.
4464
+ */
4465
+ this.deleteActionProcess = (payload) => {
4466
+ const range = this.selectionController.getCurrentRange();
4467
+ const { startContainer, endContainer, startOffset, endOffset } = range;
4468
+ if (startContainer !== endContainer || startOffset !== endOffset) {
4469
+ const cursorNode = this.removeSelectionRange();
4470
+ const mergeStartAndEndFlag = payload && payload.detail ? payload.detail : false;
4471
+ if (mergeStartAndEndFlag) {
4472
+ this.mergeRangeStartAndEnd(startContainer, endContainer);
4473
+ }
4474
+ this.selectionController.enqueueSelectionRangeFutureState(cursorNode, range.startOffset);
4475
+ }
4476
+ };
4477
+ }
4478
+ /**
4479
+ * Adds the observer to the host element.
4480
+ */
4481
+ addDeleteObserver() {
4482
+ DomNodeSubjectObserverFactory.addUniqueObserverToNode(this.host, VegaInternalRichTextEditDeleteSelectedNodes, this.deleteActionProcess);
4483
+ }
4484
+ /**
4485
+ * Removes the observer from the host element.
4486
+ */
4487
+ removeDeleteObserver() {
4488
+ DomNodeSubjectObserverFactory.removeUniqueObserverFromNode(this.host, VegaInternalRichTextEditDeleteSelectedNodes);
4489
+ }
4490
+ /**
4491
+ * Removes selected nodes within a range in a rich text editor content.
4492
+ * The method is only used for different nodes are selected
4493
+ *
4494
+ * @returns {RTENode} The range start node, usually the start node is the first item of selectedNodes, if the selectedNodes is all removed, the start node will be a new text node.
4495
+ */
4496
+ removeSelectionRange() {
4497
+ const range = this.selectionController.getCurrentRange();
4498
+ const selectedNodes = this.selectionController.getSelectedNodes();
4499
+ const { endOffset, startOffset } = range;
4500
+ const startNode = selectedNodes[0];
4501
+ const endNode = selectedNodes[selectedNodes.length - 1];
4502
+ if (selectedNodes.length > 1) {
4503
+ // Remove all selected nodes except start node and end node(the end image node will be removed), the start node need to get the index of the block
4504
+ const shouldRemovedItems = selectedNodes.filter((item) => {
4505
+ if (item.type !== 'IMAGE') {
4506
+ return item !== startNode && item !== endNode;
4507
+ }
4508
+ else {
4509
+ return item !== startNode && (item !== endNode || (item === endNode && endOffset !== 0));
4510
+ }
4511
+ });
4512
+ shouldRemovedItems.forEach((item) => {
4513
+ item.parentBlock.apply(new RemoveChildAction(item));
4514
+ });
4515
+ }
4516
+ this.removeRangeStartAndEndSelectedText();
4517
+ /**
4518
+ * if the range start node is image and the item is selected, so we need remove the image item, the image block will be removed if the item is the only item.
4519
+ * but before remove the image block, we need insert a paragraph to make sure the start block and start node could be get correct before insert text or break paragraph action
4520
+ */
4521
+ if (startNode instanceof RTEImageNode &&
4522
+ startOffset !== 1 &&
4523
+ (endNode !== startNode || endOffset !== 0)) {
4524
+ // the image block will be deleted when the image is the only item
4525
+ if (startNode.parentBlock.nodes.length === 1) {
4526
+ const paragraph = this.createEmptyParagraph();
4527
+ startNode.parentBlock.parent.apply(new InsertBlocksBeforeAction(startNode.parentBlock, paragraph));
4528
+ startNode.parentBlock.apply(new RemoveChildAction(startNode));
4529
+ return paragraph.nodes[0];
4530
+ }
4531
+ else if (startNode === startNode.parentBlock.nodes[0]) {
4532
+ // the start node should be the next image item if the image is first item
4533
+ startNode.parentBlock.apply(new RemoveChildAction(startNode));
4534
+ return startNode.parentBlock.nodes[0];
4535
+ }
4536
+ }
4537
+ return startNode;
4538
+ }
4539
+ /**
4540
+ * Removes the selected text at the start and end of a range in a Rich Text Editor.
4541
+ */
4542
+ removeRangeStartAndEndSelectedText() {
4543
+ const selectedNodes = this.selectionController.getSelectedNodes();
4544
+ const currentRange = this.selectionController.getCurrentRange();
4545
+ if (selectedNodes[0] instanceof RTETextNode) {
4546
+ selectedNodes[0].apply(new ReplaceSelectedTextAction('', currentRange));
4547
+ }
4548
+ if (selectedNodes.length > 1 && selectedNodes[selectedNodes.length - 1] instanceof RTETextNode) {
4549
+ selectedNodes[selectedNodes.length - 1].apply(new ReplaceSelectedTextAction('', currentRange));
4550
+ }
4551
+ }
4552
+ /**
4553
+ * Creates a new paragraph with an empty text node and returns it.
4554
+ *
4555
+ * @returns {RTETextBlock} An empty paragraph with a unique identifier and a text node appended to it.
4556
+ */
4557
+ createEmptyParagraph() {
4558
+ const paragraph = new RTETextBlock(generateUUID(), 'paragraph');
4559
+ const textNode = new RTETextNode(`${paragraph.id}1`, '', paragraph);
4560
+ paragraph.apply(new AppendChildNodesAction([textNode]));
4561
+ return paragraph;
4562
+ }
4563
+ /**
4564
+ * Merges text nodes in a rich text editor.
4565
+ *
4566
+ * @param {Node} startContainer - Start text node element
4567
+ * @param {Node} endContainer - End text node element
4568
+ */
4569
+ mergeRangeStartAndEnd(startContainer, endContainer) {
4570
+ if (startContainer !== endContainer) {
4571
+ if (startContainer.nodeType === Node.TEXT_NODE && endContainer.nodeType === Node.TEXT_NODE) {
4572
+ const selectedNodes = this.selectionController.getSelectedNodes();
4573
+ const startRTENode = selectedNodes[0];
4574
+ const endRTENode = selectedNodes[selectedNodes.length - 1];
4575
+ if (startRTENode && startRTENode.parentBlock && endRTENode && endRTENode.parentBlock) {
4576
+ const endBlock = endRTENode.parentBlock;
4577
+ if (this.shouldMergeTextNode(startRTENode, endRTENode)) {
4578
+ startRTENode.apply(new UpdateTextAction(startRTENode.text + endRTENode.text));
4579
+ if (startRTENode.parentBlock === endRTENode.parentBlock) {
4580
+ startRTENode.parentBlock.apply(new RemoveChildAction(endRTENode));
4581
+ }
4582
+ else {
4583
+ endRTENode.parentBlock.apply(new RemoveChildAction(endRTENode.parentBlock.nodes[0]));
4584
+ }
4585
+ }
4586
+ if (startRTENode.parentBlock !== endRTENode.parentBlock) {
4587
+ startRTENode.parentBlock.apply(new AppendChildNodesAction(endBlock.nodes));
4588
+ endBlock.nodes = [];
4589
+ }
4590
+ if (endBlock.nodes.length < 1) {
4591
+ endBlock.parent.apply(new RemoveChildAction(endBlock));
4592
+ }
4593
+ }
4594
+ }
4595
+ }
4596
+ }
4597
+ /**
4598
+ * Compares the annotations of two RTETextNodes to determine if they can be merged.
4599
+ *
4600
+ * @param {RTETextNode} nodeA - node A
4601
+ * @param {RTETextNode} nodeB - node B
4602
+ * @returns {boolean} true or false
4603
+ */
4604
+ shouldMergeTextNode(nodeA, nodeB) {
4605
+ const { annotations: annotationsA } = nodeA.toJSON();
4606
+ const { annotations: annotationsB } = nodeB.toJSON();
4607
+ return JSON.stringify(annotationsA) === JSON.stringify(annotationsB);
4608
+ }
4609
+ }
4610
+ __decorate$7([
4611
+ MapToComponentField()
4612
+ ], DeleteSelectedNodesController.prototype, "host", void 0);
4613
+ __decorate$7([
4614
+ MapToComponentField()
4615
+ ], DeleteSelectedNodesController.prototype, "selectionController", void 0);
4616
+ __decorate$7([
4617
+ MapToComponentField()
4618
+ ], DeleteSelectedNodesController.prototype, "value", void 0);
4619
+ __decorate$7([
4620
+ MapToComponentMethod('connectedCallback')
4621
+ ], DeleteSelectedNodesController.prototype, "addDeleteObserver", null);
4622
+ __decorate$7([
4623
+ MapToComponentMethod('disconnectedCallback')
4624
+ ], DeleteSelectedNodesController.prototype, "removeDeleteObserver", null);
4625
+
4626
+ const vegaRichTextEditorCss = ":host{display:block}:host vega-field-label{margin-bottom:8px}:host vega-text{margin-bottom:16px;font-family:\"Inter\", sans-serif;font-size:14px;font-weight:400;line-height:18px;letter-spacing:0px;color:rgba(var(--v-text-secondary, 107, 116, 125, 1))}@media screen and (min-width: 768px) and (max-width: 1023px){:host vega-text{font-family:\"Inter\", sans-serif;font-size:14px;font-weight:400;line-height:18px;letter-spacing:0px}}@media screen and (min-width: 1024px) and (max-width: 1439px){:host vega-text{font-family:\"Inter\", sans-serif;font-size:14px;font-weight:400;line-height:18px;letter-spacing:0px}}@media screen and (min-width: 1440px) and (max-width: 9999px){:host vega-text{font-family:\"Inter\", sans-serif;font-size:14px;font-weight:400;line-height:18px;letter-spacing:0px}}:host .rich-text-editor-container{display:flex;box-sizing:content-box;position:relative;box-sizing:content-box;background-color:rgba(var(--v-bg-primary, 252, 252, 252, 1));border:1px solid rgba(var(--v-border-input-field, 171, 198, 216, 1));border-radius:8px;font-family:\"Inter\", sans-serif;font-size:16px;font-weight:400;line-height:24px;letter-spacing:0px;color:rgba(var(--v-text-primary, 32, 54, 69, 1));margin-top:12px;overflow:auto;resize:vertical;padding-top:12px;padding-right:16px;padding-bottom:32px;padding-left:16px}@media screen and (min-width: 768px) and (max-width: 1023px){:host .rich-text-editor-container{font-family:\"Inter\", sans-serif;font-size:16px;font-weight:400;line-height:24px;letter-spacing:0px}}@media screen and (min-width: 1024px) and (max-width: 1439px){:host .rich-text-editor-container{font-family:\"Inter\", sans-serif;font-size:16px;font-weight:400;line-height:24px;letter-spacing:0px}}@media screen and (min-width: 1440px) and (max-width: 9999px){:host .rich-text-editor-container{font-family:\"Inter\", sans-serif;font-size:16px;font-weight:400;line-height:24px;letter-spacing:0px}}:host .rich-text-editor-container:hover{border:1px solid rgba(var(--v-border-input-field-hover, 115, 160, 190, 1))}:host .rich-text-editor-container:focus-within{border:1px solid rgba(var(--v-border-input-field-focus, 19, 98, 226, 1));outline:2px solid rgba(var(--v-border-color-action, 19, 98, 226, 1));outline-offset:2px;border:1px solid rgba(var(--v-border-color-input-field-focus, 19, 98, 226, 1))}:host .rich-text-editor-container.disabled{background-color:rgba(var(--v-bg-secondary, 245, 247, 247, 1));border:1px solid rgba(var(--v-border-input-field-disabled, 222, 225, 227, 1))}:host .rich-text-editor-container.disabled:hover,:host .rich-text-editor-container.disabled:focus-within{border:1px solid rgba(var(--v-border-input-field-disabled, 222, 225, 227, 1))}:host .rich-text-editor-container.disabled:focus-within{outline:none}:host .rich-text-editor-container.error{border:1px solid rgba(var(--v-border-input-field-danger, 230, 50, 87, 1))}:host .rich-text-editor-container.error:hover{border:1px solid rgba(var(--v-border-input-field-danger-hover, 255, 87, 114, 1))}:host .rich-text-editor-container.error:focus-within{outline:2px solid rgba(var(--v-border-color-danger, 230, 50, 87, 1));outline-offset:2px;border:1px solid rgba(var(--v-border-color-input-field-danger-focus, 233, 71, 104, 1))}:host .rich-text-editor-container .text-editor-counter{position:absolute;bottom:8px;right:8px;display:flex;padding-left:4px;padding-right:4px;padding-top:2px;padding-bottom:2px;border-radius:4px;font-family:\"Inter\", sans-serif;font-size:14px;font-weight:400;line-height:18px;letter-spacing:0px;color:rgba(var(--v-text-inverted-primary, 252, 252, 252, 1));background-color:rgba(var(--v-bg-textarea-count, 4, 4, 28, 0.6))}@media screen and (min-width: 768px) and (max-width: 1023px){:host .rich-text-editor-container .text-editor-counter{font-family:\"Inter\", sans-serif;font-size:14px;font-weight:400;line-height:18px;letter-spacing:0px}}@media screen and (min-width: 1024px) and (max-width: 1439px){:host .rich-text-editor-container .text-editor-counter{font-family:\"Inter\", sans-serif;font-size:14px;font-weight:400;line-height:18px;letter-spacing:0px}}@media screen and (min-width: 1440px) and (max-width: 9999px){:host .rich-text-editor-container .text-editor-counter{font-family:\"Inter\", sans-serif;font-size:14px;font-weight:400;line-height:18px;letter-spacing:0px}}:host .rich-text-editor-container .text-editor-counter.counter-exceed-max-length{background-color:rgba(var(--v-bg-textarea-counter-exceed-max-length, 214, 46, 81))}.toolbar-btn-group{display:flex;justify-content:center;align-items:center}.toolbar-btn-group>*:not(:first-child):not(:last-child) ::part(rich-text-editor-toolbar-button){border-radius:0px}.toolbar-btn-group>*:first-child:not(:last-child) ::part(rich-text-editor-toolbar-button){border-top-left-radius:4px;border-bottom-left-radius:4px;border-top-right-radius:0px;border-bottom-right-radius:0px}.toolbar-btn-group>*:last-child:not(:first-child) ::part(rich-text-editor-toolbar-button){border-top-left-radius:0px;border-bottom-left-radius:0px;border-top-right-radius:4px;border-bottom-right-radius:4px}.toolbar-btn-group>*:not(:first-child) ::part(rich-text-editor-toolbar-button){margin-left:-1px}.toolbar-btn-group .toolbar-btn-color-preview-box{display:flex;border:1px solid rgba(var(--v-border-chip, 205, 209, 211, 1));box-sizing:border-box;border-radius:4px;width:16px;height:16px;cursor:pointer;justify-content:center;align-items:center;margin-left:6px}.toolbar-btn-group .toolbar-btn-link-wrapper{position:relative}.toolbar-btn-group .toolbar-btn-link-wrapper vega-rich-text-link-editor{position:absolute;bottom:0;left:0;right:0}.vega-error{font-family:\"Inter\", sans-serif;font-size:14px;font-weight:400;line-height:18px;letter-spacing:0px;color:rgba(var(--v-text-error, 189, 41, 71, 1));display:block;margin-top:12px}@media screen and (min-width: 768px) and (max-width: 1023px){.vega-error{font-family:\"Inter\", sans-serif;font-size:14px;font-weight:400;line-height:18px;letter-spacing:0px}}@media screen and (min-width: 1024px) and (max-width: 1439px){.vega-error{font-family:\"Inter\", sans-serif;font-size:14px;font-weight:400;line-height:18px;letter-spacing:0px}}@media screen and (min-width: 1440px) and (max-width: 9999px){.vega-error{font-family:\"Inter\", sans-serif;font-size:14px;font-weight:400;line-height:18px;letter-spacing:0px}}.vega-hidden{display:none}";
4627
+
4628
+ var __decorate$6 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
4629
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4630
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
4631
+ r = Reflect.decorate(decorators, target, key, desc);
4632
+ else
4633
+ for (var i = decorators.length - 1; i >= 0; i--)
4634
+ if (d = decorators[i])
4635
+ r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
4636
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
4637
+ };
4638
+ const VegaRichTextEditor = class {
4639
+ constructor(hostRef) {
4640
+ registerInstance(this, hostRef);
4641
+ this.vegaChange = createEvent(this, "vegaChange", 7);
4642
+ this.change = createEvent(this, "change", 7);
4643
+ this.vegaImageInserted = createEvent(this, "vegaImageInserted", 7);
4644
+ this.imageInserted = createEvent(this, "imageInserted", 7);
4645
+ this.globalSlimmers = {};
4646
+ this.vegaComponentUsageRuntimeMetricsSlimmer = new VegaComponentUsageRuntimeMetricsSlimmer();
4647
+ this.formFieldController = new FormFieldControllerSlimmer({
4648
+ propertyRules: [
4649
+ {
4650
+ propertyName: 'required',
4651
+ ruleFactory: (isRequired) => isRequired ? new RichTextEditorRequiredRule() : null,
4652
+ },
4653
+ ],
4654
+ validationRulesName: 'validationRules',
4655
+ defaultValue: null,
4656
+ attributeGetter: (propertyName) => this[propertyName],
4657
+ inputContainerGetter: () => this.vegaRichTextEditorRenderer.getRichTextContainerRef(),
4658
+ touchableAreaGetter: () => [this.vegaRichTextEditorRenderer.getRichTextContentRef()],
4400
4659
  });
4401
4660
  this.changeEventEmitter = createEventEmitSlimmer(VegaRichTextEditor, VegaChange);
4402
4661
  this.vegaRichTextEditorRenderer = new VegaRichTextEditorRenderer();
@@ -4424,9 +4683,11 @@ const VegaRichTextEditor = class {
4424
4683
  this.richTextContentController = new RichTextContentController(this);
4425
4684
  this.userInputController = new UserInputController();
4426
4685
  this.insertImageController = new InsertImageController();
4686
+ this.insertCompositionTextController = new InsertCompositionTextController();
4427
4687
  this.imageInsertedEventEmitter = createEventEmitSlimmer(VegaRichTextEditor, VegaImageInserted);
4428
4688
  this.changeEventPreventSlimmer = new ChildNodesEventPreventSlimmer([VegaChange], () => this.vegaRichTextEditorRenderer.getRichTextWrapperRef());
4429
4689
  this.textNodeColorController = new TextNodeColorController();
4690
+ this.deleteSelectedNodesController = new DeleteSelectedNodesController();
4430
4691
  this.richTextContentEditable = true;
4431
4692
  this.selectionMap = new Map();
4432
4693
  this.isInDarkMode = VegaThemeManager.isDarkMode();
@@ -4480,6 +4741,7 @@ const VegaRichTextEditor = class {
4480
4741
  * Only in exceptional cases should the original data in the VegaRTEContentBlock type be used.
4481
4742
  *
4482
4743
  * @vegaVersion 2.34.0
4744
+ * @defaultValue [{id:'UUID', type:'paragraph', nodes:[{id: 'UUID',type: 'text',text:''}]}]
4483
4745
  */
4484
4746
  // eslint-disable-next-line @stencil/strict-mutable
4485
4747
  this.value = VegaRTEContent.createEmptyContent();
@@ -4632,6 +4894,9 @@ __decorate$6([
4632
4894
  __decorate$6([
4633
4895
  InjectVegaSlimmer()
4634
4896
  ], VegaRichTextEditor.prototype, "insertImageController", void 0);
4897
+ __decorate$6([
4898
+ InjectVegaSlimmer()
4899
+ ], VegaRichTextEditor.prototype, "insertCompositionTextController", void 0);
4635
4900
  __decorate$6([
4636
4901
  InjectVegaSlimmer()
4637
4902
  ], VegaRichTextEditor.prototype, "imageInsertedEventEmitter", void 0);
@@ -4641,6 +4906,9 @@ __decorate$6([
4641
4906
  __decorate$6([
4642
4907
  InjectVegaSlimmer()
4643
4908
  ], VegaRichTextEditor.prototype, "textNodeColorController", void 0);
4909
+ __decorate$6([
4910
+ InjectVegaSlimmer()
4911
+ ], VegaRichTextEditor.prototype, "deleteSelectedNodesController", void 0);
4644
4912
  VegaRichTextEditor.style = vegaRichTextEditorCss;
4645
4913
 
4646
4914
  var __decorate$5 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {