@globalpayments/vega 2.95.0 → 2.97.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (518) hide show
  1. package/dist/cjs/{app-globals-76815382.js → app-globals-3f57f7b9.js} +10 -10
  2. package/dist/cjs/{code-block-493c7ce7.js → code-block-28a7732e.js} +1508 -56
  3. package/dist/cjs/{component-value-history-controller-slimmer.abstract-ab21fcbf.js → component-value-history-controller-slimmer.abstract-50cdba6e.js} +3 -3
  4. package/dist/cjs/{content-state-fc34a814.js → content-state-e2ab0f06.js} +143 -581
  5. package/dist/cjs/{date-required-rule-4ab06a82.js → date-required-rule-5250f26d.js} +1 -1
  6. package/dist/cjs/{design-token-d3d12fa0.js → design-token-74674ee7.js} +3 -3
  7. package/dist/cjs/{element-appender-slimmer-1d6323c2.js → element-appender-slimmer-ccb2e3c2.js} +117 -2
  8. package/dist/cjs/{form-field-controller-slimmer-d638ba12.js → form-field-controller-slimmer-58621b5e.js} +5 -14
  9. package/dist/cjs/form-field-key-8d5edf75.js +25 -0
  10. package/dist/cjs/{image-annotation-action-7c4cd316.js → image-annotation-action-b54dc669.js} +2 -2
  11. package/dist/cjs/{image-extension-30a7c10f.js → image-extension-1e3eeaa3.js} +2 -2
  12. package/dist/cjs/index.cjs.js +19 -19
  13. package/dist/cjs/{inject-keyboard-manager-5a105612.js → inject-keyboard-manager-6a6f5c9f.js} +1 -1
  14. package/dist/cjs/{internal-calendar-period-factory-b76006f7.js → internal-calendar-period-factory-dfcdd3f6.js} +1 -1
  15. package/dist/cjs/{internal-translation-controller-eb02c3b1.js → internal-translation-controller-1dac2df8.js} +7 -0
  16. package/dist/cjs/{keyboard-manager-ca76d4dc.js → keyboard-manager-c56033b1.js} +1 -1
  17. package/dist/cjs/{keyboard-manager-slimmer-a1223714.js → keyboard-manager-slimmer-7043a106.js} +1 -1
  18. package/dist/cjs/{link-extension-92a63cb7.js → link-extension-71c27ff3.js} +3 -3
  19. package/dist/cjs/loader.cjs.js +12 -12
  20. package/dist/cjs/{month-view-generator-876c50d4.js → month-view-generator-7b704a80.js} +1 -1
  21. package/dist/cjs/{public-rules-9e1ea1d9.js → public-rules-55e34d2e.js} +7 -7
  22. package/dist/cjs/{range-30219330.js → range-eebe0e3c.js} +1 -1
  23. package/dist/cjs/{responsive-format-facade-25e9f30d.js → responsive-format-facade-493d1763.js} +1 -1
  24. package/dist/cjs/{rich-text-editor-required-rule-23bf7485.js → rich-text-editor-required-rule-4fdee376.js} +1 -1
  25. package/dist/cjs/{split-cell-operation-43752212.js → split-cell-operation-51097409.js} +3 -3
  26. package/dist/cjs/{state-border-formatter-f1ce0f3b.js → state-border-formatter-711c7aaa.js} +1 -1
  27. package/dist/cjs/{string-format-strategy.abstract-b22f7754.js → string-format-strategy.abstract-b61bdcbd.js} +1 -1
  28. package/dist/cjs/{string-input-formatter-slimmer-d2c248f7.js → string-input-formatter-slimmer-18d45942.js} +1 -1
  29. package/dist/cjs/{string-mask-strategy-fc01a500.js → string-mask-strategy-ad3fa0ac.js} +2 -2
  30. package/dist/cjs/{style-formatter-73205450.js → style-formatter-8f711cb0.js} +2 -2
  31. package/dist/cjs/{time-required-rule-12d2f394.js → time-required-rule-87417359.js} +1 -1
  32. package/dist/cjs/{token-extension-d123d9d0.js → token-extension-608bbf7b.js} +38 -14
  33. package/dist/cjs/{translation-slimmer-9099f56c.js → translation-slimmer-77c7f37d.js} +1 -1
  34. package/dist/cjs/{type-guard-f354af8b.js → type-guard-a57ef3ac.js} +1 -1
  35. package/dist/cjs/{valid-credit-card-number-rule-8d370163.js → valid-credit-card-number-rule-4c0a3040.js} +1 -1
  36. package/dist/cjs/vega-accordion.cjs.entry.js +6 -6
  37. package/dist/cjs/vega-app-header-button.cjs.entry.js +5 -5
  38. package/dist/cjs/vega-backdrop.cjs.entry.js +63 -8
  39. package/dist/cjs/vega-box.cjs.entry.js +6 -6
  40. package/dist/cjs/vega-button-circle.cjs.entry.js +5 -5
  41. package/dist/cjs/vega-button.cjs.entry.js +3 -3
  42. package/dist/cjs/vega-calendar_5.cjs.entry.js +7 -7
  43. package/dist/cjs/vega-card.cjs.entry.js +5 -5
  44. package/dist/cjs/vega-carousel.cjs.entry.js +3 -3
  45. package/dist/cjs/vega-checkbox_2.cjs.entry.js +20 -3
  46. package/dist/cjs/vega-chip.cjs.entry.js +5 -5
  47. package/dist/cjs/vega-code-block.cjs.entry.js +8 -8
  48. package/dist/cjs/vega-color-picker.cjs.entry.js +11 -2
  49. package/dist/cjs/vega-color-swatch-picker.cjs.entry.js +12 -3
  50. package/dist/cjs/vega-color-swatch.cjs.entry.js +2 -2
  51. package/dist/cjs/vega-combo-box.cjs.entry.js +17 -8
  52. package/dist/cjs/vega-date-picker_2.cjs.entry.js +22 -13
  53. package/dist/cjs/vega-dialog_2.cjs.entry.js +3 -3
  54. package/dist/cjs/vega-divider.cjs.entry.js +5 -5
  55. package/dist/cjs/vega-dropdown_5.cjs.entry.js +33 -10
  56. package/dist/cjs/vega-env-manager-23b8b23c.js +2 -2
  57. package/dist/cjs/vega-field-label.cjs.entry.js +2 -2
  58. package/dist/cjs/vega-file-uploader.cjs.entry.js +12 -3
  59. package/dist/cjs/vega-flag-icon.cjs.entry.js +5 -5
  60. package/dist/cjs/vega-flex.cjs.entry.js +6 -6
  61. package/dist/cjs/vega-font.cjs.entry.js +5 -5
  62. package/dist/cjs/vega-form.cjs.entry.js +28 -25
  63. package/dist/cjs/vega-grid.cjs.entry.js +5 -5
  64. package/dist/cjs/vega-icon.cjs.entry.js +5 -5
  65. package/dist/cjs/vega-image-uploader.cjs.entry.js +14 -5
  66. package/dist/cjs/vega-input-credit-card.cjs.entry.js +16 -7
  67. package/dist/cjs/vega-input-numeric.cjs.entry.js +14 -5
  68. package/dist/cjs/vega-input-passcode.cjs.entry.js +14 -5
  69. package/dist/cjs/vega-input-phone-number.cjs.entry.js +13 -4
  70. package/dist/cjs/vega-input-range.cjs.entry.js +12 -3
  71. package/dist/cjs/vega-input-select.cjs.entry.js +14 -5
  72. package/dist/cjs/vega-input.cjs.entry.js +9 -7
  73. package/dist/cjs/vega-left-nav_5.cjs.entry.js +71 -11
  74. package/dist/cjs/vega-loader-wrapper_2.cjs.entry.js +3 -3
  75. package/dist/cjs/vega-pagination-page-size-selector-mobile.cjs.entry.js +2 -2
  76. package/dist/cjs/vega-pagination.cjs.entry.js +4 -4
  77. package/dist/cjs/vega-popover_2.cjs.entry.js +8 -8
  78. package/dist/cjs/vega-progress-tracker_2.cjs.entry.js +3 -3
  79. package/dist/cjs/vega-radio_2.cjs.entry.js +17 -5
  80. package/dist/cjs/vega-rich-text-content.cjs.entry.js +86 -14
  81. package/dist/cjs/vega-rich-text-editor_4.cjs.entry.js +2122 -451
  82. package/dist/cjs/vega-rich-text-find-replace-panel.cjs.entry.js +1 -1
  83. package/dist/cjs/vega-rich-text-special-characters-panel.cjs.entry.js +5 -5
  84. package/dist/cjs/vega-rich-text-table-properties_3.cjs.entry.js +8 -8
  85. package/dist/cjs/vega-section-title.cjs.entry.js +896 -14
  86. package/dist/cjs/vega-selection-chip_2.cjs.entry.js +13 -4
  87. package/dist/cjs/vega-selection-tile_2.cjs.entry.js +11 -2
  88. package/dist/cjs/vega-sidenav_3.cjs.entry.js +3 -3
  89. package/dist/cjs/vega-signature-capture.cjs.entry.js +16 -7
  90. package/dist/cjs/vega-stepper.cjs.entry.js +12 -3
  91. package/dist/cjs/vega-table_11.cjs.entry.js +4 -4
  92. package/dist/cjs/vega-textarea.cjs.entry.js +12 -3
  93. package/dist/cjs/vega-time-picker_2.cjs.entry.js +18 -9
  94. package/dist/cjs/vega-toggle-switch.cjs.entry.js +12 -3
  95. package/dist/cjs/vega-tooltip_2.cjs.entry.js +6 -6
  96. package/dist/cjs/vega.cjs.js +12 -12
  97. package/dist/collection/components/vega-backdrop/slimmers/controller/vega-backdrop-visible-controller.js +63 -8
  98. package/dist/collection/components/vega-checkbox/vega-checkbox-group/vega-checkbox-group.js +33 -1
  99. package/dist/collection/components/vega-checkbox/vega-checkbox.js +34 -2
  100. package/dist/collection/components/vega-color-picker/vega-color-picker.js +33 -1
  101. package/dist/collection/components/vega-color-swatch/vega-color-swatch-picker/vega-color-swatch-picker.js +33 -1
  102. package/dist/collection/components/vega-combo-box/vega-combo-box.js +35 -3
  103. package/dist/collection/components/vega-date-picker/vega-date-picker.js +33 -1
  104. package/dist/collection/components/vega-dropdown/vega-dropdown.js +30 -7
  105. package/dist/collection/components/vega-file-uploader/vega-file-uploader.js +33 -1
  106. package/dist/collection/components/vega-form/slimmers/controllers/vega-form-field-controller.js +9 -9
  107. package/dist/collection/components/vega-form/slimmers/controllers/vega-form-field-validation-state-controller.js +5 -5
  108. package/dist/collection/components/vega-form/slimmers/renderers/native-form-renderer.js +4 -1
  109. package/dist/collection/components/vega-form/vega-form.js +32 -0
  110. package/dist/collection/components/vega-image-uploader/vega-image-uploader.js +33 -1
  111. package/dist/collection/components/vega-input/vega-input.js +5 -4
  112. package/dist/collection/components/vega-input-credit-card/vega-input-credit-card.js +34 -2
  113. package/dist/collection/components/vega-input-numeric/vega-input-numeric.js +33 -1
  114. package/dist/collection/components/vega-input-passcode/vega-input-passcode.js +33 -1
  115. package/dist/collection/components/vega-input-phone-number/vega-input-phone-number.js +33 -1
  116. package/dist/collection/components/vega-input-range/vega-input-range.js +33 -1
  117. package/dist/collection/components/vega-input-select/vega-input-select.js +35 -3
  118. package/dist/collection/components/vega-nav/vega-left-nav/slimmers/controllers/vega-left-nav-backdrop-manager.js +17 -1
  119. package/dist/collection/components/vega-nav/vega-left-nav/slimmers/controllers/vega-left-nav-open-state-controller.js +48 -5
  120. package/dist/collection/components/vega-radio/vega-radio-group/vega-radio-group.js +18 -3
  121. package/dist/collection/components/vega-rich-text-content/vega-rich-text-content.css +4 -0
  122. package/dist/collection/components/vega-rich-text-editor/constants/constant.js +3 -0
  123. package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/block-delete-node-content-strategy.js +29 -0
  124. package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/block-delete-text-or-decorator-node-strategy.js +10 -1
  125. package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/block-transform-to-list-strategy.js +8 -3
  126. package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/list-annotation-strategy.abstract.js +60 -0
  127. package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/list-item-replace-nest-list-strategy.js +36 -4
  128. package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/list-items-strategy.abstract.js +27 -0
  129. package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/list-nest-items-strategy.js +74 -0
  130. package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/list-remove-list-item-strategy.js +81 -1
  131. package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/list-transform-selection.js +30 -0
  132. package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/list-transform-to-list-strategy.js +160 -9
  133. package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/list-transform-to-paragraph-strategy.js +376 -10
  134. package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/list-unnest-items-strategy.js +104 -0
  135. package/dist/collection/components/vega-rich-text-editor/dto/actions/modify-content-action.abstract.js +2 -0
  136. package/dist/collection/components/vega-rich-text-editor/dto/actions/nest-list-items-action.js +12 -0
  137. package/dist/collection/components/vega-rich-text-editor/dto/actions/unnest-list-items-action.js +12 -0
  138. package/dist/collection/components/vega-rich-text-editor/dto/annotations/list-annotation.js +12 -0
  139. package/dist/collection/components/vega-rich-text-editor/dto/blocks/list-block.js +10 -1
  140. package/dist/collection/components/vega-rich-text-editor/dto/blocks/list-item-block.js +11 -3
  141. package/dist/collection/components/vega-rich-text-editor/dto/content-state.js +7 -1
  142. package/dist/collection/components/vega-rich-text-editor/dto/filter-styles-strategies/list-block/list-block-filter-styles-strategy.js +8 -4
  143. package/dist/collection/components/vega-rich-text-editor/dto/renderers/blocks/link-wrapper-renderer.js +26 -3
  144. package/dist/collection/components/vega-rich-text-editor/dto/renderers/blocks/list-block-renderer.js +34 -1
  145. package/dist/collection/components/vega-rich-text-editor/dto/renderers/blocks/list-item-block-renderer.js +20 -3
  146. package/dist/collection/components/vega-rich-text-editor/extensions/table/annotation-handler/table-annotation-handler-base.js +25 -1
  147. package/dist/collection/components/vega-rich-text-editor/slimmers/controllers/helper/element-to-dto-strategy/li-to-rte-list-item-block-strategy.js +2 -0
  148. package/dist/collection/components/vega-rich-text-editor/slimmers/controllers/helper/input-event-handler/abstract-delete-content-handler.js +29 -0
  149. package/dist/collection/components/vega-rich-text-editor/slimmers/controllers/helper/input-event-handler/base-handler.js +1 -1
  150. package/dist/collection/components/vega-rich-text-editor/slimmers/controllers/helper/input-event-handler/keyboard-link-handler.js +297 -0
  151. package/dist/collection/components/vega-rich-text-editor/slimmers/controllers/user-input-controller.js +13 -0
  152. package/dist/collection/components/vega-rich-text-editor/slimmers/renderers/tools/bullets-numbers/bullets-numbers-toolbar-button-slimmer.js +30 -1
  153. package/dist/collection/components/vega-rich-text-editor/slimmers/renderers/tools/bullets-numbers/helper/abstract-list-keyboard-handler.js +204 -0
  154. package/dist/collection/components/vega-rich-text-editor/slimmers/renderers/tools/bullets-numbers/helper/list-shift-tab-outdent-handler.js +42 -0
  155. package/dist/collection/components/vega-rich-text-editor/slimmers/renderers/tools/bullets-numbers/helper/list-tab-indent-handler.js +34 -0
  156. package/dist/collection/components/vega-rich-text-editor/slimmers/renderers/tools/bullets-numbers/list-keyboard-slimmer.js +180 -0
  157. package/dist/collection/components/vega-rich-text-editor/slimmers/renderers/tools/link-toolbar-button-slimmer.js +8 -2
  158. package/dist/collection/components/vega-rich-text-editor/vega-rich-text-editor.js +33 -1
  159. package/dist/collection/components/vega-rich-text-editor/vega-rich-text-link-editor/slimmers/controllers/link-editor-controller.js +398 -0
  160. package/dist/collection/components/vega-rich-text-editor/vega-rich-text-link-editor/slimmers/controllers/link-editor-state-manager.js +111 -0
  161. package/dist/collection/components/vega-rich-text-editor/vega-rich-text-link-editor/slimmers/controllers/link-type-config-controller.js +173 -0
  162. package/dist/collection/components/vega-rich-text-editor/vega-rich-text-link-editor/slimmers/renderers/link-type-handler.js +49 -0
  163. package/dist/collection/components/vega-rich-text-editor/vega-rich-text-link-editor/slimmers/renderers/vega-rich-text-link-editor-renderer.js +114 -106
  164. package/dist/collection/components/vega-rich-text-editor/vega-rich-text-link-editor/slimmers/utils/link-url-normalizer.js +80 -0
  165. package/dist/collection/components/vega-rich-text-editor/vega-rich-text-link-editor/vega-rich-text-link-editor.js +44 -1
  166. package/dist/collection/components/vega-section-title/slimmers/a11y-tree/build-section-title-a11y-tree.js +54 -0
  167. package/dist/collection/components/vega-section-title/slimmers/renderers/vega-section-title-renderer.js +4 -4
  168. package/dist/collection/components/vega-section-title/vega-section-title.js +18 -2
  169. package/dist/collection/components/vega-selection-chip/vega-selection-chip-group/vega-selection-chip-group.js +33 -1
  170. package/dist/collection/components/vega-selection-tile/vega-selection-tile-group/vega-selection-tile-group.js +33 -1
  171. package/dist/collection/components/vega-signature-capture/vega-signature-capture.js +33 -1
  172. package/dist/collection/components/vega-stepper/vega-stepper.js +34 -2
  173. package/dist/collection/components/vega-textarea/vega-textarea.js +34 -2
  174. package/dist/collection/components/vega-time-picker/vega-time-picker.js +33 -1
  175. package/dist/collection/components/vega-toggle-switch/vega-toggle-switch.js +34 -2
  176. package/dist/collection/helpers/a11y-tree/a11y-node-dto.js +210 -0
  177. package/dist/collection/helpers/a11y-tree/a11y-tree-applier.js +189 -0
  178. package/dist/collection/helpers/a11y-tree/a11y-tree.types.js +48 -0
  179. package/dist/collection/helpers/a11y-tree/strategies/baseline-strategy.js +78 -0
  180. package/dist/collection/helpers/a11y-tree/strategies/firefox-nvda-strategy.js +56 -0
  181. package/dist/collection/helpers/a11y-tree/strategies/webkit-voiceover-strategy.js +140 -0
  182. package/dist/collection/helpers/a11y-tree/strategy-resolver.js +172 -0
  183. package/dist/collection/helpers/slimmers/a11y-tree-slimmer.js +54 -0
  184. package/dist/collection/helpers/slimmers/element-appender/element-appender-slimmer.js +29 -0
  185. package/dist/collection/helpers/slimmers/element-appender/visibility-modifiers/clip-on-scroll-modifier.js +70 -0
  186. package/dist/collection/helpers/slimmers/element-appender/visibility-modifiers/visibility-modifier.interface.js +1 -0
  187. package/dist/collection/helpers/slimmers/{field-error-controller-silmmer.js → form/field-error-controller-silmmer.js} +3 -3
  188. package/dist/collection/helpers/slimmers/{field-error-ui-controller-slimmer.js → form/field-error-ui-controller-slimmer.js} +9 -9
  189. package/dist/collection/helpers/slimmers/{form-field-controller-slimmer.js → form/form-field-controller-slimmer.js} +9 -18
  190. package/dist/collection/helpers/slimmers/{form-field-message-translator.js → form/form-field-message-translator.js} +1 -1
  191. package/dist/collection/helpers/slimmers/{form-field-state-controller-slimmer.js → form/form-field-state-controller-slimmer.js} +1 -1
  192. package/dist/collection/helpers/slimmers/{form-field-valid-invoke-slimmer.js → form/form-field-valid-invoke-slimmer.js} +2 -2
  193. package/dist/collection/helpers/slimmers/form/utils/form-field-key.js +20 -0
  194. package/dist/collection/helpers/translation/locales/en.js +7 -0
  195. package/dist/collection/helpers/ui/element-appender.js +16 -0
  196. package/dist/collection/helpers/validator/form-field-controller.js +5 -4
  197. package/dist/esm/{app-globals-eafcc7a1.js → app-globals-d3991e53.js} +10 -10
  198. package/dist/esm/{code-block-e12588fe.js → code-block-8df86434.js} +1499 -52
  199. package/dist/esm/{component-value-history-controller-slimmer.abstract-4e8eb313.js → component-value-history-controller-slimmer.abstract-e4b95997.js} +3 -3
  200. package/dist/esm/{content-state-8032467a.js → content-state-c63fbeda.js} +106 -542
  201. package/dist/esm/{date-required-rule-b88e1650.js → date-required-rule-85334d0c.js} +1 -1
  202. package/dist/esm/{design-token-76bd217c.js → design-token-10ff79b5.js} +3 -3
  203. package/dist/esm/{element-appender-slimmer-7fcb944b.js → element-appender-slimmer-24be8e94.js} +117 -2
  204. package/dist/esm/{form-field-controller-slimmer-395c23e3.js → form-field-controller-slimmer-d8628837.js} +5 -14
  205. package/dist/esm/form-field-key-44ab39d0.js +22 -0
  206. package/dist/esm/{image-annotation-action-08a20d5e.js → image-annotation-action-fcceff95.js} +2 -2
  207. package/dist/esm/{image-extension-b6c7e4a7.js → image-extension-3280bdb0.js} +2 -2
  208. package/dist/esm/index.js +17 -17
  209. package/dist/esm/{inject-keyboard-manager-86126b5b.js → inject-keyboard-manager-ea1aad5b.js} +1 -1
  210. package/dist/esm/{internal-calendar-period-factory-3a07dba0.js → internal-calendar-period-factory-7b294fb6.js} +1 -1
  211. package/dist/esm/{internal-translation-controller-16709132.js → internal-translation-controller-fac22598.js} +7 -0
  212. package/dist/esm/{keyboard-manager-a0c3e1cf.js → keyboard-manager-50da85d7.js} +1 -1
  213. package/dist/esm/{keyboard-manager-slimmer-f3f66c15.js → keyboard-manager-slimmer-1f7c8bfb.js} +1 -1
  214. package/dist/esm/{link-extension-97fcb8fb.js → link-extension-f92c06ef.js} +3 -3
  215. package/dist/esm/loader.js +12 -12
  216. package/dist/esm/{month-view-generator-fd0e1856.js → month-view-generator-a1a9a4ec.js} +1 -1
  217. package/dist/esm/{public-rules-c06f0d2a.js → public-rules-3695aaf7.js} +7 -7
  218. package/dist/esm/{range-e999837f.js → range-717d552d.js} +1 -1
  219. package/dist/esm/{responsive-format-facade-ced96b0b.js → responsive-format-facade-f19b601c.js} +1 -1
  220. package/dist/esm/{rich-text-editor-required-rule-71f8ee98.js → rich-text-editor-required-rule-2e39264a.js} +1 -1
  221. package/dist/esm/{split-cell-operation-359f8082.js → split-cell-operation-6c26af91.js} +3 -3
  222. package/dist/esm/{state-border-formatter-b680e922.js → state-border-formatter-bfda33aa.js} +1 -1
  223. package/dist/esm/{string-format-strategy.abstract-23faab71.js → string-format-strategy.abstract-1f4ff1b3.js} +1 -1
  224. package/dist/esm/{string-input-formatter-slimmer-4b4866a6.js → string-input-formatter-slimmer-68b2af39.js} +1 -1
  225. package/dist/esm/{string-mask-strategy-66586cd8.js → string-mask-strategy-bbbcdbef.js} +2 -2
  226. package/dist/esm/{style-formatter-f4e16af5.js → style-formatter-e9adc8f4.js} +2 -2
  227. package/dist/esm/{time-required-rule-6e80a9ab.js → time-required-rule-1ce2d0a0.js} +1 -1
  228. package/dist/esm/{token-extension-f5bf9c21.js → token-extension-5082a4d2.js} +33 -9
  229. package/dist/esm/{translation-slimmer-21748a0e.js → translation-slimmer-ee0f0e76.js} +1 -1
  230. package/dist/esm/{type-guard-ec5e8628.js → type-guard-f2624334.js} +1 -1
  231. package/dist/esm/{valid-credit-card-number-rule-ca5a47d6.js → valid-credit-card-number-rule-60212b1d.js} +1 -1
  232. package/dist/esm/vega-accordion.entry.js +6 -6
  233. package/dist/esm/vega-app-header-button.entry.js +5 -5
  234. package/dist/esm/vega-backdrop.entry.js +63 -8
  235. package/dist/esm/vega-box.entry.js +6 -6
  236. package/dist/esm/vega-button-circle.entry.js +5 -5
  237. package/dist/esm/vega-button.entry.js +3 -3
  238. package/dist/esm/vega-calendar_5.entry.js +7 -7
  239. package/dist/esm/vega-card.entry.js +5 -5
  240. package/dist/esm/vega-carousel.entry.js +3 -3
  241. package/dist/esm/vega-checkbox_2.entry.js +20 -3
  242. package/dist/esm/vega-chip.entry.js +5 -5
  243. package/dist/esm/vega-code-block.entry.js +8 -8
  244. package/dist/esm/vega-color-picker.entry.js +11 -2
  245. package/dist/esm/vega-color-swatch-picker.entry.js +12 -3
  246. package/dist/esm/vega-color-swatch.entry.js +2 -2
  247. package/dist/esm/vega-combo-box.entry.js +17 -8
  248. package/dist/esm/vega-date-picker_2.entry.js +22 -13
  249. package/dist/esm/vega-dialog_2.entry.js +3 -3
  250. package/dist/esm/vega-divider.entry.js +5 -5
  251. package/dist/esm/vega-dropdown_5.entry.js +33 -10
  252. package/dist/esm/vega-env-manager-8f8dc473.js +2 -2
  253. package/dist/esm/vega-field-label.entry.js +2 -2
  254. package/dist/esm/vega-file-uploader.entry.js +12 -3
  255. package/dist/esm/vega-flag-icon.entry.js +5 -5
  256. package/dist/esm/vega-flex.entry.js +6 -6
  257. package/dist/esm/vega-font.entry.js +5 -5
  258. package/dist/esm/vega-form.entry.js +28 -25
  259. package/dist/esm/vega-grid.entry.js +5 -5
  260. package/dist/esm/vega-icon.entry.js +5 -5
  261. package/dist/esm/vega-image-uploader.entry.js +14 -5
  262. package/dist/esm/vega-input-credit-card.entry.js +16 -7
  263. package/dist/esm/vega-input-numeric.entry.js +14 -5
  264. package/dist/esm/vega-input-passcode.entry.js +14 -5
  265. package/dist/esm/vega-input-phone-number.entry.js +13 -4
  266. package/dist/esm/vega-input-range.entry.js +12 -3
  267. package/dist/esm/vega-input-select.entry.js +14 -5
  268. package/dist/esm/vega-input.entry.js +9 -7
  269. package/dist/esm/vega-left-nav_5.entry.js +71 -11
  270. package/dist/esm/vega-loader-wrapper_2.entry.js +3 -3
  271. package/dist/esm/vega-pagination-page-size-selector-mobile.entry.js +2 -2
  272. package/dist/esm/vega-pagination.entry.js +4 -4
  273. package/dist/esm/vega-popover_2.entry.js +8 -8
  274. package/dist/esm/vega-progress-tracker_2.entry.js +3 -3
  275. package/dist/esm/vega-radio_2.entry.js +17 -5
  276. package/dist/esm/vega-rich-text-content.entry.js +86 -14
  277. package/dist/esm/vega-rich-text-editor_4.entry.js +2118 -447
  278. package/dist/esm/vega-rich-text-find-replace-panel.entry.js +1 -1
  279. package/dist/esm/vega-rich-text-special-characters-panel.entry.js +5 -5
  280. package/dist/esm/vega-rich-text-table-properties_3.entry.js +8 -8
  281. package/dist/esm/vega-section-title.entry.js +897 -15
  282. package/dist/esm/vega-selection-chip_2.entry.js +13 -4
  283. package/dist/esm/vega-selection-tile_2.entry.js +11 -2
  284. package/dist/esm/vega-sidenav_3.entry.js +3 -3
  285. package/dist/esm/vega-signature-capture.entry.js +16 -7
  286. package/dist/esm/vega-stepper.entry.js +12 -3
  287. package/dist/esm/vega-table_11.entry.js +4 -4
  288. package/dist/esm/vega-textarea.entry.js +12 -3
  289. package/dist/esm/vega-time-picker_2.entry.js +18 -9
  290. package/dist/esm/vega-toggle-switch.entry.js +12 -3
  291. package/dist/esm/vega-tooltip_2.entry.js +6 -6
  292. package/dist/esm/vega.js +12 -12
  293. package/dist/sri/vega-sri-manifest.json +319 -315
  294. package/dist/types/components/vega-backdrop/slimmers/controller/vega-backdrop-visible-controller.d.ts +21 -0
  295. package/dist/types/components/vega-checkbox/vega-checkbox-group/vega-checkbox-group.d.ts +9 -1
  296. package/dist/types/components/vega-checkbox/vega-checkbox.d.ts +9 -1
  297. package/dist/types/components/vega-color-picker/vega-color-picker.d.ts +9 -1
  298. package/dist/types/components/vega-color-swatch/vega-color-swatch-picker/vega-color-swatch-picker.d.ts +9 -1
  299. package/dist/types/components/vega-combo-box/vega-combo-box.d.ts +15 -7
  300. package/dist/types/components/vega-date-picker/vega-date-picker.d.ts +9 -1
  301. package/dist/types/components/vega-dropdown/types.d.ts +2 -2
  302. package/dist/types/components/vega-dropdown/vega-dropdown.d.ts +32 -9
  303. package/dist/types/components/vega-file-uploader/vega-file-uploader.d.ts +9 -1
  304. package/dist/types/components/vega-form/slimmers/controllers/vega-form-field-controller.d.ts +3 -2
  305. package/dist/types/components/vega-form/slimmers/renderers/native-form-renderer.d.ts +1 -0
  306. package/dist/types/components/vega-form/vega-form.d.ts +8 -0
  307. package/dist/types/components/vega-image-uploader/vega-image-uploader.d.ts +9 -1
  308. package/dist/types/components/vega-input/vega-input.d.ts +3 -2
  309. package/dist/types/components/vega-input-credit-card/vega-input-credit-card.d.ts +9 -1
  310. package/dist/types/components/vega-input-numeric/vega-input-numeric.d.ts +9 -1
  311. package/dist/types/components/vega-input-passcode/vega-input-passcode.d.ts +9 -1
  312. package/dist/types/components/vega-input-phone-number/vega-input-phone-number.d.ts +9 -1
  313. package/dist/types/components/vega-input-range/vega-input-range.d.ts +9 -1
  314. package/dist/types/components/vega-input-select/vega-input-select.d.ts +15 -7
  315. package/dist/types/components/vega-nav/vega-left-nav/slimmers/controllers/vega-left-nav-backdrop-manager.d.ts +7 -0
  316. package/dist/types/components/vega-nav/vega-left-nav/slimmers/controllers/vega-left-nav-open-state-controller.d.ts +17 -0
  317. package/dist/types/components/vega-radio/vega-radio-group/vega-radio-group.d.ts +5 -1
  318. package/dist/types/components/vega-rich-text-editor/constants/constant.d.ts +3 -0
  319. package/dist/types/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/list-annotation-strategy.abstract.d.ts +36 -0
  320. package/dist/types/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/list-item-replace-nest-list-strategy.d.ts +14 -2
  321. package/dist/types/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/list-items-strategy.abstract.d.ts +22 -0
  322. package/dist/types/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/list-nest-items-strategy.d.ts +21 -0
  323. package/dist/types/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/list-remove-list-item-strategy.d.ts +14 -0
  324. package/dist/types/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/list-transform-selection.d.ts +15 -0
  325. package/dist/types/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/list-transform-to-list-strategy.d.ts +30 -3
  326. package/dist/types/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/list-transform-to-paragraph-strategy.d.ts +99 -3
  327. package/dist/types/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/list-unnest-items-strategy.d.ts +22 -0
  328. package/dist/types/components/vega-rich-text-editor/dto/actions/modify-content-action.abstract.d.ts +2 -0
  329. package/dist/types/components/vega-rich-text-editor/dto/actions/nest-list-items-action.d.ts +11 -0
  330. package/dist/types/components/vega-rich-text-editor/dto/actions/unnest-list-items-action.d.ts +11 -0
  331. package/dist/types/components/vega-rich-text-editor/dto/annotations/list-annotation.d.ts +8 -0
  332. package/dist/types/components/vega-rich-text-editor/dto/blocks/list-block.d.ts +6 -1
  333. package/dist/types/components/vega-rich-text-editor/dto/blocks/list-item-block.d.ts +5 -1
  334. package/dist/types/components/vega-rich-text-editor/dto/content-state.d.ts +2 -2
  335. package/dist/types/components/vega-rich-text-editor/dto/renderers/blocks/list-block-renderer.d.ts +2 -0
  336. package/dist/types/components/vega-rich-text-editor/dto/renderers/blocks/list-item-block-renderer.d.ts +8 -0
  337. package/dist/types/components/vega-rich-text-editor/extensions/link/type.d.ts +34 -0
  338. package/dist/types/components/vega-rich-text-editor/extensions/table/annotation-handler/table-annotation-handler-base.d.ts +18 -0
  339. package/dist/types/components/vega-rich-text-editor/slimmers/controllers/helper/input-event-handler/base-handler.d.ts +4 -4
  340. package/dist/types/components/vega-rich-text-editor/slimmers/controllers/helper/input-event-handler/keyboard-link-handler.d.ts +111 -0
  341. package/dist/types/components/vega-rich-text-editor/slimmers/controllers/user-input-controller.d.ts +7 -0
  342. package/dist/types/components/vega-rich-text-editor/slimmers/renderers/tools/bullets-numbers/bullets-numbers-toolbar-button-slimmer.d.ts +8 -0
  343. package/dist/types/components/vega-rich-text-editor/slimmers/renderers/tools/bullets-numbers/helper/abstract-list-keyboard-handler.d.ts +99 -0
  344. package/dist/types/components/vega-rich-text-editor/slimmers/renderers/tools/bullets-numbers/helper/list-shift-tab-outdent-handler.d.ts +15 -0
  345. package/dist/types/components/vega-rich-text-editor/slimmers/renderers/tools/bullets-numbers/helper/list-tab-indent-handler.d.ts +15 -0
  346. package/dist/types/components/vega-rich-text-editor/slimmers/renderers/tools/bullets-numbers/list-keyboard-slimmer.d.ts +73 -0
  347. package/dist/types/components/vega-rich-text-editor/vega-rich-text-editor.d.ts +9 -1
  348. package/dist/types/components/vega-rich-text-editor/vega-rich-text-link-editor/slimmers/controllers/link-editor-controller.d.ts +149 -0
  349. package/dist/types/components/vega-rich-text-editor/vega-rich-text-link-editor/slimmers/controllers/link-editor-state-manager.d.ts +84 -0
  350. package/dist/types/components/vega-rich-text-editor/vega-rich-text-link-editor/slimmers/controllers/link-type-config-controller.d.ts +82 -0
  351. package/dist/types/components/vega-rich-text-editor/vega-rich-text-link-editor/slimmers/renderers/link-type-handler.d.ts +33 -0
  352. package/dist/types/components/vega-rich-text-editor/vega-rich-text-link-editor/slimmers/renderers/vega-rich-text-link-editor-renderer.d.ts +24 -17
  353. package/dist/types/components/vega-rich-text-editor/vega-rich-text-link-editor/slimmers/utils/link-url-normalizer.d.ts +37 -0
  354. package/dist/types/components/vega-rich-text-editor/vega-rich-text-link-editor/types.d.ts +4 -0
  355. package/dist/types/components/vega-rich-text-editor/vega-rich-text-link-editor/vega-rich-text-link-editor.d.ts +12 -0
  356. package/dist/types/components/vega-section-title/slimmers/a11y-tree/build-section-title-a11y-tree.d.ts +41 -0
  357. package/dist/types/components/vega-section-title/vega-section-title.d.ts +9 -0
  358. package/dist/types/components/vega-selection-chip/vega-selection-chip-group/vega-selection-chip-group.d.ts +9 -1
  359. package/dist/types/components/vega-selection-tile/vega-selection-tile-group/vega-selection-tile-group.d.ts +9 -1
  360. package/dist/types/components/vega-signature-capture/vega-signature-capture.d.ts +9 -1
  361. package/dist/types/components/vega-stepper/vega-stepper.d.ts +9 -1
  362. package/dist/types/components/vega-textarea/vega-textarea.d.ts +9 -1
  363. package/dist/types/components/vega-time-picker/vega-time-picker.d.ts +9 -1
  364. package/dist/types/components/vega-toggle-switch/vega-toggle-switch.d.ts +9 -1
  365. package/dist/types/components.d.ts +297 -14
  366. package/dist/types/helpers/a11y-tree/a11y-node-dto.d.ts +173 -0
  367. package/dist/types/helpers/a11y-tree/a11y-tree-applier.d.ts +28 -0
  368. package/dist/types/helpers/a11y-tree/a11y-tree.types.d.ts +137 -0
  369. package/dist/types/helpers/a11y-tree/strategies/baseline-strategy.d.ts +18 -0
  370. package/dist/types/helpers/a11y-tree/strategies/firefox-nvda-strategy.d.ts +16 -0
  371. package/dist/types/helpers/a11y-tree/strategies/webkit-voiceover-strategy.d.ts +23 -0
  372. package/dist/types/helpers/a11y-tree/strategy-resolver.d.ts +59 -0
  373. package/dist/types/helpers/slimmers/a11y-tree-slimmer.d.ts +49 -0
  374. package/dist/types/helpers/slimmers/element-appender/element-appender-slimmer.d.ts +9 -0
  375. package/dist/types/helpers/slimmers/element-appender/visibility-modifiers/clip-on-scroll-modifier.d.ts +37 -0
  376. package/dist/types/helpers/slimmers/element-appender/visibility-modifiers/visibility-modifier.interface.d.ts +56 -0
  377. package/dist/types/helpers/slimmers/{field-error-controller-silmmer.d.ts → form/field-error-controller-silmmer.d.ts} +1 -1
  378. package/dist/types/helpers/slimmers/{field-error-ui-controller-slimmer.d.ts → form/field-error-ui-controller-slimmer.d.ts} +2 -2
  379. package/dist/types/helpers/slimmers/{form-field-controller-slimmer.d.ts → form/form-field-controller-slimmer.d.ts} +6 -14
  380. package/dist/types/helpers/slimmers/{form-field-message-translator.d.ts → form/form-field-message-translator.d.ts} +2 -2
  381. package/dist/types/helpers/slimmers/{form-field-state-controller-slimmer.d.ts → form/form-field-state-controller-slimmer.d.ts} +2 -2
  382. package/dist/types/helpers/slimmers/{form-field-valid-invoke-slimmer.d.ts → form/form-field-valid-invoke-slimmer.d.ts} +3 -3
  383. package/dist/types/helpers/slimmers/form/utils/form-field-key.d.ts +17 -0
  384. package/dist/types/helpers/translation/interface.d.ts +7 -0
  385. package/dist/types/helpers/ui/element-appender.d.ts +7 -0
  386. package/dist/types/helpers/validator/form-field-controller.d.ts +3 -3
  387. package/dist/vega/index.esm.js +1 -1
  388. package/dist/vega/p-040ea356.entry.js +1 -0
  389. package/dist/vega/p-046203cb.entry.js +1 -0
  390. package/dist/vega/p-0499e65a.entry.js +1 -0
  391. package/dist/vega/{p-0be4df0a.js → p-0809c651.js} +1 -1
  392. package/dist/vega/{p-02355de8.js → p-09524fec.js} +1 -1
  393. package/dist/vega/{p-74f86ff9.entry.js → p-0cf3b5c1.entry.js} +1 -1
  394. package/dist/vega/p-10d43a80.entry.js +1 -0
  395. package/dist/vega/{p-3d6f761a.entry.js → p-1132a74e.entry.js} +1 -1
  396. package/dist/vega/{p-ba662fe5.js → p-12e8a1b2.js} +1 -1
  397. package/dist/vega/p-1d5e05d9.js +3 -0
  398. package/dist/vega/{p-3dee1e55.js → p-1e0a8fd3.js} +1 -1
  399. package/dist/vega/{p-919cddc3.js → p-1ea9ad9a.js} +1 -1
  400. package/dist/vega/p-21626b93.entry.js +1 -0
  401. package/dist/vega/p-21f608e8.entry.js +1 -0
  402. package/dist/vega/p-2540fd1c.entry.js +1 -0
  403. package/dist/vega/{p-9f201152.entry.js → p-26760c66.entry.js} +1 -1
  404. package/dist/vega/{p-892edf88.entry.js → p-2acf9b42.entry.js} +1 -1
  405. package/dist/vega/p-2bb60f89.js +1 -0
  406. package/dist/vega/{p-b1eb9ff0.js → p-2c2e8615.js} +1 -1
  407. package/dist/vega/p-2d158cbd.js +1 -0
  408. package/dist/vega/p-2d7388c9.entry.js +1 -0
  409. package/dist/vega/{p-b3a2ce06.entry.js → p-2eb8e167.entry.js} +1 -1
  410. package/dist/vega/p-2ff4ae1c.js +1 -0
  411. package/dist/vega/p-3488a3f1.entry.js +1 -0
  412. package/dist/vega/p-363ee8a5.entry.js +1 -0
  413. package/dist/vega/p-36c89520.entry.js +1 -0
  414. package/dist/vega/{p-e1737c8e.entry.js → p-3980dfa8.entry.js} +1 -1
  415. package/dist/vega/{p-14baa886.js → p-39c5054b.js} +1 -1
  416. package/dist/vega/p-3af5e87b.entry.js +1 -0
  417. package/dist/vega/{p-8db904dc.js → p-456f678b.js} +1 -1
  418. package/dist/vega/{p-6c9c2f8c.entry.js → p-461100b8.entry.js} +1 -1
  419. package/dist/vega/p-4c3a08be.entry.js +1 -0
  420. package/dist/vega/p-53fd3c41.entry.js +1 -0
  421. package/dist/vega/{p-6fcec7c7.entry.js → p-56417ec5.entry.js} +1 -1
  422. package/dist/vega/{p-8a001caa.js → p-5e37b041.js} +1 -1
  423. package/dist/vega/p-5f377954.js +1 -1
  424. package/dist/vega/{p-a0a58295.entry.js → p-5f96e741.entry.js} +1 -1
  425. package/dist/vega/p-65fee02f.entry.js +1 -0
  426. package/dist/vega/p-6b76b572.entry.js +1 -0
  427. package/dist/vega/{p-75e33859.js → p-6c95a6a3.js} +1 -1
  428. package/dist/vega/p-703ac992.entry.js +1 -0
  429. package/dist/vega/p-71909102.js +1 -0
  430. package/dist/vega/{p-e1b57e8f.entry.js → p-72ab5cd5.entry.js} +1 -1
  431. package/dist/vega/{p-8720816e.js → p-781b7a54.js} +1 -1
  432. package/dist/vega/{p-7950f3e2.entry.js → p-81d4dfcb.entry.js} +1 -1
  433. package/dist/vega/p-8611465f.entry.js +1 -0
  434. package/dist/vega/{p-0d18368b.js → p-874e5624.js} +1 -1
  435. package/dist/vega/{p-4fe40b76.js → p-8e7932bc.js} +1 -1
  436. package/dist/vega/p-8ed3b2b6.entry.js +1 -0
  437. package/dist/vega/{p-9c39f90b.entry.js → p-8ff92914.entry.js} +1 -1
  438. package/dist/vega/{p-9bdc6e11.entry.js → p-92528dc9.entry.js} +1 -1
  439. package/dist/vega/p-9664e914.entry.js +1 -0
  440. package/dist/vega/p-98fc5821.entry.js +1 -0
  441. package/dist/vega/{p-fe24b459.js → p-9be02fa5.js} +1 -1
  442. package/dist/vega/p-9c4c474e.entry.js +1 -0
  443. package/dist/vega/{p-8354cff0.entry.js → p-a034dfc0.entry.js} +1 -1
  444. package/dist/vega/{p-e48a870f.entry.js → p-a484e32d.entry.js} +1 -1
  445. package/dist/vega/{p-b9e72de2.entry.js → p-a8174ad8.entry.js} +1 -1
  446. package/dist/vega/{p-49e1cf4d.entry.js → p-a91927eb.entry.js} +1 -1
  447. package/dist/vega/{p-b187b82d.entry.js → p-abbceebf.entry.js} +1 -1
  448. package/dist/vega/{p-e4266b45.entry.js → p-ac94ba1b.entry.js} +1 -1
  449. package/dist/vega/{p-b775e51f.js → p-ae2abdfa.js} +1 -1
  450. package/dist/vega/{p-bb60e381.entry.js → p-aeb50cad.entry.js} +1 -1
  451. package/dist/vega/{p-a890d60b.entry.js → p-b00ec194.entry.js} +1 -1
  452. package/dist/vega/{p-f78944d7.entry.js → p-b3733762.entry.js} +1 -1
  453. package/dist/vega/p-b594a11c.entry.js +1 -0
  454. package/dist/vega/{p-b4e7c967.js → p-b622c455.js} +1 -1
  455. package/dist/vega/{p-1232b553.entry.js → p-b98ead05.entry.js} +1 -1
  456. package/dist/vega/{p-e5ff77f7.entry.js → p-c2277448.entry.js} +1 -1
  457. package/dist/vega/{p-9f7154d2.js → p-c29934ef.js} +1 -1
  458. package/dist/vega/p-c3646101.entry.js +1 -0
  459. package/dist/vega/p-ca270da3.entry.js +1 -0
  460. package/dist/vega/{p-b4c26035.entry.js → p-ccbe3f1b.entry.js} +1 -1
  461. package/dist/vega/{p-6cde45fc.js → p-cd69aeae.js} +1 -1
  462. package/dist/vega/{p-579cdeae.js → p-d25c1a48.js} +1 -1
  463. package/dist/vega/{p-5924adae.entry.js → p-d2cbcf5e.entry.js} +1 -1
  464. package/dist/vega/{p-df828d90.entry.js → p-d3413a78.entry.js} +1 -1
  465. package/dist/vega/{p-f1974321.js → p-d609c3fd.js} +1 -1
  466. package/dist/vega/{p-a7209700.js → p-dad7d2ac.js} +1 -1
  467. package/dist/vega/{p-61ce8029.js → p-dbb4b1d1.js} +1 -1
  468. package/dist/vega/p-dcd3e3a7.js +1 -0
  469. package/dist/vega/p-de8f0d98.js +1 -0
  470. package/dist/vega/{p-e235020b.entry.js → p-deaf037a.entry.js} +1 -1
  471. package/dist/vega/p-e1029acc.js +1 -0
  472. package/dist/vega/p-e18c0656.entry.js +1 -0
  473. package/dist/vega/p-e3fdb65c.entry.js +1 -0
  474. package/dist/vega/p-e7e963ba.entry.js +1 -0
  475. package/dist/vega/{p-f7e459cd.js → p-e9b005df.js} +1 -1
  476. package/dist/vega/{p-88be9ec5.js → p-e9d09211.js} +1 -1
  477. package/dist/vega/{p-3c309a38.js → p-f1078e63.js} +1 -1
  478. package/dist/vega/{p-595998d9.entry.js → p-f29ea345.entry.js} +1 -1
  479. package/dist/vega/p-f5095035.entry.js +1 -0
  480. package/dist/vega/{p-05d04c07.entry.js → p-f95d8d10.entry.js} +1 -1
  481. package/dist/vega/vega.esm.js +1 -1
  482. package/package.json +3 -2
  483. package/dist/vega/p-0512308f.entry.js +0 -1
  484. package/dist/vega/p-1d8312d3.entry.js +0 -1
  485. package/dist/vega/p-2d77ae73.entry.js +0 -1
  486. package/dist/vega/p-2d8d4d5b.entry.js +0 -1
  487. package/dist/vega/p-320091b7.js +0 -1
  488. package/dist/vega/p-36949349.js +0 -1
  489. package/dist/vega/p-38c9d782.js +0 -1
  490. package/dist/vega/p-4151f53a.entry.js +0 -1
  491. package/dist/vega/p-4ff48b84.js +0 -1
  492. package/dist/vega/p-513bc0d9.js +0 -1
  493. package/dist/vega/p-5e4517eb.entry.js +0 -1
  494. package/dist/vega/p-6680ba17.entry.js +0 -1
  495. package/dist/vega/p-80b7945a.entry.js +0 -1
  496. package/dist/vega/p-841b3281.entry.js +0 -1
  497. package/dist/vega/p-87e5cb56.entry.js +0 -1
  498. package/dist/vega/p-8d4b85e7.entry.js +0 -1
  499. package/dist/vega/p-91303402.entry.js +0 -1
  500. package/dist/vega/p-97215133.js +0 -1
  501. package/dist/vega/p-9d96d83f.entry.js +0 -1
  502. package/dist/vega/p-a05a2f1e.entry.js +0 -1
  503. package/dist/vega/p-a775825e.entry.js +0 -1
  504. package/dist/vega/p-ae146458.entry.js +0 -1
  505. package/dist/vega/p-b8c13ac9.entry.js +0 -1
  506. package/dist/vega/p-ba2b9663.entry.js +0 -1
  507. package/dist/vega/p-bbad318e.entry.js +0 -1
  508. package/dist/vega/p-c079c935.entry.js +0 -1
  509. package/dist/vega/p-c0e42c03.entry.js +0 -1
  510. package/dist/vega/p-c41f5684.entry.js +0 -1
  511. package/dist/vega/p-c54b5a8f.entry.js +0 -1
  512. package/dist/vega/p-c5d3b008.entry.js +0 -1
  513. package/dist/vega/p-cd1e976c.entry.js +0 -1
  514. package/dist/vega/p-d25ca0c3.entry.js +0 -1
  515. package/dist/vega/p-ebe32b25.entry.js +0 -1
  516. package/dist/vega/p-ec162599.entry.js +0 -1
  517. package/dist/vega/p-f4da615a.js +0 -3
  518. package/dist/vega/p-fc7e4c8a.entry.js +0 -1
@@ -7,41 +7,41 @@ import { C as ChangeManager } from './change-manager-6a7eb88c.js';
7
7
  import { d as domNodeSubjectFactory, D as DomNodeSubjectObserverFactory } from './dom-node-subject-observer-factory-ddff8662.js';
8
8
  import { t as VegaInternalComponentDidRender, e as VegaInternalRichTextEditorFlushChanges, d as VegaInternalRichTextEditDeleteSelectedNodes, H as VegaInternalRichTextImageClick, I as VegaInternalRichTextImageDeleteButtonClicked, z as VegaInternalCodeBlockBlur, a as VegaInternalPopoverUpdateTarget } from './vega-internal-event-id-827eb1ce.js';
9
9
  import { S as SHADOW_ROOT_ELEMENT_SCROLLING, F as FORM_ELEMENT_VALUE_CHANGE } from './static-subject-title-1c86e974.js';
10
- import { ai as VegaRTEOneRowHeightPx, R as RTETextNode, aj as BoldAnnotationAction, N as NodeAnnotationTypeEnum, ak as ItalicAnnotationAction, al as UnderlineAnnotationAction, b as RTETextBlock, T as TextStyleAnnotationAction, a3 as TextStyleAnnotation, am as BoldAnnotation, F as BlockAnnotationTypeEnum, an as ClearFormattingAnnotationAction, ao as CodeAnnotationAction, ap as StrikethroughAnnotationAction, ag as SelectionChangeAction, ae as LinkAnnotationAction, aq as IndentAnnotationAction, M as ModifyContentAction, i as ModifyContentActionType, q as RTECodeBlockNode, A as ActionHandleStrategyRegistry, H as HorizontalAlignmentAnnotationAction, s as stateEntityRenderingRegistry, e as AppendChildrenAction, ad as ZERO_WIDTH_SPACE, U as UpdateTextAction, g as InsertChildrenBeforeAction, S as SplitBlockWithNodeAction, f as RTENode, a as RTEBlock, k as RemoveChildrenAction, O as ReplaceChildNodesAction, ar as escapeHtml, p as RTECodeBlock, I as InsertChildrenAfterAction, V as VegaRTEPresetToolbarItems, ac as VegaRTEDefaultTextStyleItems } from './code-block-e12588fe.js';
11
- import { d as RTEDTORendererManager, V as VegaRTELinkExtension } from './link-extension-97fcb8fb.js';
12
- import { i as isNonNullable } from './type-guard-ec5e8628.js';
10
+ import { ah as VegaRTEOneRowHeightPx, R as RTETextNode, ai as BoldAnnotationAction, N as NodeAnnotationTypeEnum, aj as ItalicAnnotationAction, ak as UnderlineAnnotationAction, b as RTETextBlock, al as TextStyleAnnotationAction, _ as TextStyleAnnotation, am as BoldAnnotation, an as BlockAnnotationTypeEnum, ao as ClearFormattingAnnotationAction, ap as CodeAnnotationAction, aq as StrikethroughAnnotationAction, af as SelectionChangeAction, ad as LinkAnnotationAction, ar as IndentAnnotationAction, M as ModifyContentAction, i as ModifyContentActionType, q as RTEListItemBlock, $ as RTEHtmlBlock, as as TransformParagraphAction, r as RTECodeBlockNode, A as ActionHandleStrategyRegistry, H as HorizontalAlignmentAnnotationAction, s as stateEntityRenderingRegistry, e as AppendChildrenAction, ac as ZERO_WIDTH_SPACE, U as UpdateTextAction, g as InsertChildrenBeforeAction, S as SplitBlockWithNodeAction, f as RTENode, a as RTEBlock, k as RemoveChildrenAction, y as ReplaceChildNodesAction, at as escapeHtml, p as RTECodeBlock, I as InsertChildrenAfterAction, V as VegaRTEPresetToolbarItems, ab as VegaRTEDefaultTextStyleItems, au as RTE_EMAIL_LINK_TYPE_KEY, av as RTE_DEFAULT_LINK_TYPE_KEY, aw as RTE_SUPPORTED_LINK_TYPE_KEYS } from './code-block-8df86434.js';
11
+ import { d as RTEDTORendererManager, V as VegaRTELinkExtension } from './link-extension-f92c06ef.js';
12
+ import { i as isNonNullable } from './type-guard-f2624334.js';
13
13
  import { V as VegaInternalIconManager } from './internal-icon-manager-e7c57096.js';
14
- import { V as VisualModeToolbarButtonSlimmer, I as ImageAnnotationAction, a as ToolbarButtonSlimmer, T as TextColorToolbarButtonSlimmer, n as normalizeUrlByDefaultProtocol } from './image-annotation-action-08a20d5e.js';
14
+ import { V as VisualModeToolbarButtonSlimmer, I as ImageAnnotationAction, a as ToolbarButtonSlimmer, T as TextColorToolbarButtonSlimmer, n as normalizeUrlByDefaultProtocol } from './image-annotation-action-fcceff95.js';
15
15
  import { V as VegaDropdownClick, d as VegaChange, a as VegaClick, a0 as VegaImageInserted, a1 as VegaSourceCodeChange, c as VegaPopoverShow, b as VegaPopoverHide } from './vega-event-id-f55f6977.js';
16
16
  import { g as generateUUID } from './misc-9fdbcfbb.js';
17
17
  import { w as waitForComponentDidRender } from './wait-for-component-did-render-0c237cb8.js';
18
- import { V as VegaRTEImageExtension, R as ReplaceSelectedTextAction } from './image-extension-b6c7e4a7.js';
19
- import { F as FormFieldControllerSlimmer } from './form-field-controller-slimmer-395c23e3.js';
18
+ import { V as VegaRTEImageExtension, R as ReplaceSelectedTextAction } from './image-extension-3280bdb0.js';
19
+ import { F as FormFieldControllerSlimmer } from './form-field-controller-slimmer-d8628837.js';
20
20
  import { c as createEventEmitSlimmer } from './event-emit-slimmer-2452278f.js';
21
21
  import { c as createSubStateNotifySlimmer } from './sub-state-notify-slimmer-0f72ce74.js';
22
- import { f as RTEImageNode, b as RTEListItemBlock, V as VegaRTEContent, M as MergeTwoBlocksNodesAction, I as InsertNewParagraphAction, S as StylePreservator, i as ElementToDtoStrategyProcessor, R as RTEImageBlock } from './content-state-8032467a.js';
22
+ import { V as VegaRTEContent, d as RTEImageNode, M as MergeTwoBlocksNodesAction, I as InsertNewParagraphAction, S as StylePreservator, f as ElementToDtoStrategyProcessor, R as RTEImageBlock } from './content-state-c63fbeda.js';
23
23
  import { b as AlignLeft, A as AlignCenter, c as AlignRight, a as AlignJustify } from './align-left-7f959adf.js';
24
- import { R as RTESelectionState, C as ComponentValueHistoryControllerSlimmer, a as SelectionController } from './component-value-history-controller-slimmer.abstract-4e8eb313.js';
24
+ import { R as RTESelectionState, C as ComponentValueHistoryControllerSlimmer, a as SelectionController } from './component-value-history-controller-slimmer.abstract-e4b95997.js';
25
25
  import { O as Observer } from './observer-3959f9dd.js';
26
26
  import { d as debounce } from './timer-9321173b.js';
27
27
  import { D as DarkModeStateControllerSlimmer } from './dark-mode-state-controller-slimmer-778dd929.js';
28
- import { R as RichTextEditorRequiredRule } from './rich-text-editor-required-rule-71f8ee98.js';
28
+ import { f as findParent } from './ui-d73f756a.js';
29
+ import { R as RichTextEditorRequiredRule } from './rich-text-editor-required-rule-2e39264a.js';
29
30
  import { C as ChildNodesEventPreventSlimmer } from './child-nodes-event-prevent-slimmer-82626871.js';
30
- import { T as TranslationSlimmer } from './translation-slimmer-21748a0e.js';
31
+ import { T as TranslationSlimmer } from './translation-slimmer-ee0f0e76.js';
31
32
  import { V as VegaInternalThemeManager } from './dark-mode-style-controller-ca5afd2d.js';
32
33
  import { A as AutoRunWhenReRenderTaskQueueSlimmer } from './auto-run-when-re-render-task-queue-slimmer.abstract-27820d4c.js';
33
34
  import { i as isArrayEqual } from './array-7888f339.js';
34
35
  import { c as chevronDown } from './chevron-down-4a75d28e.js';
35
36
  import { c as chevronUp } from './chevron-up-b1989751.js';
36
37
  import { t as trashCan } from './trash-can-8819a939.js';
37
- import { f as findParent } from './ui-d73f756a.js';
38
38
  import { r as remoteInvocationRegistry } from './remote-invocation-registry-d69245c2.js';
39
39
  import './string-a953eafc.js';
40
40
  import './typography-19c3b9be.js';
41
41
  import './object-0c277f57.js';
42
42
  import './breakpoints-d9faf11c.js';
43
43
  import './ui-93922c59.js';
44
- import './internal-translation-controller-16709132.js';
44
+ import './internal-translation-controller-fac22598.js';
45
45
  import './icon-manager-4ef3f6dd.js';
46
46
  import './create-public-api-runtime-metrics-slimmer-48f85199.js';
47
47
  import './dynamic-slimmer-90b8af32.js';
@@ -50,13 +50,14 @@ import './try-get-document-bef0f526.js';
50
50
  import './page-resize-observer-slimmer-e24d36c5.js';
51
51
  import './breakpoints-332702ed.js';
52
52
  import './internal-form-field-validation-rule.abstract-f5b6bdbf.js';
53
+ import './form-field-key-44ab39d0.js';
53
54
  import './mutation-observer-slimmer-58ebc13c.js';
54
55
  import './mutation-observer-filters-1a054fb0.js';
55
56
  import './sub-state-observer-slimmer-64532d94.js';
56
57
  import './internal-vega-event-manager-2ecc9186.js';
57
- import './range-e999837f.js';
58
- import './keyboard-manager-slimmer-f3f66c15.js';
59
- import './keyboard-manager-a0c3e1cf.js';
58
+ import './range-717d552d.js';
59
+ import './keyboard-manager-slimmer-1f7c8bfb.js';
60
+ import './keyboard-manager-50da85d7.js';
60
61
  import './vega-env-manager-8f8dc473.js';
61
62
  import './feature-flag-controller-3fd04ea9.js';
62
63
  import './index-9c9865c0.js';
@@ -65,7 +66,7 @@ import './vega-nonce-manager-497e5eb5.js';
65
66
  import './synchronize-task-queue-ac8acc3b.js';
66
67
  import './number-4398f2e1.js';
67
68
 
68
- var __decorate$E = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
69
+ var __decorate$H = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
69
70
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
70
71
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
71
72
  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;
@@ -178,59 +179,59 @@ class VegaRichTextEditorRenderer extends VegaSlimmer {
178
179
  this.richTextEditorSourceViewRenderer.render()));
179
180
  }
180
181
  }
181
- __decorate$E([
182
+ __decorate$H([
182
183
  MapToComponentField()
183
184
  ], VegaRichTextEditorRenderer.prototype, "host", void 0);
184
- __decorate$E([
185
+ __decorate$H([
185
186
  MapToComponentField()
186
187
  ], VegaRichTextEditorRenderer.prototype, "toolbarRenderer", void 0);
187
- __decorate$E([
188
+ __decorate$H([
188
189
  MapToComponentField()
189
190
  ], VegaRichTextEditorRenderer.prototype, "label", void 0);
190
- __decorate$E([
191
+ __decorate$H([
191
192
  MapToComponentField()
192
193
  ], VegaRichTextEditorRenderer.prototype, "required", void 0);
193
- __decorate$E([
194
+ __decorate$H([
194
195
  MapToComponentField()
195
196
  ], VegaRichTextEditorRenderer.prototype, "optional", void 0);
196
- __decorate$E([
197
+ __decorate$H([
197
198
  MapToComponentField()
198
199
  ], VegaRichTextEditorRenderer.prototype, "hint", void 0);
199
- __decorate$E([
200
+ __decorate$H([
200
201
  MapToComponentField()
201
202
  ], VegaRichTextEditorRenderer.prototype, "disabled", void 0);
202
- __decorate$E([
203
+ __decorate$H([
203
204
  MapToComponentField()
204
205
  ], VegaRichTextEditorRenderer.prototype, "rows", void 0);
205
- __decorate$E([
206
+ __decorate$H([
206
207
  MapToComponentField()
207
208
  ], VegaRichTextEditorRenderer.prototype, "placeholder", void 0);
208
- __decorate$E([
209
+ __decorate$H([
209
210
  MapToComponentField()
210
211
  ], VegaRichTextEditorRenderer.prototype, "value", void 0);
211
- __decorate$E([
212
+ __decorate$H([
212
213
  MapToComponentField()
213
214
  ], VegaRichTextEditorRenderer.prototype, "sourceView", void 0);
214
- __decorate$E([
215
+ __decorate$H([
215
216
  MapToComponentField()
216
217
  ], VegaRichTextEditorRenderer.prototype, "toolbarItems", void 0);
217
- __decorate$E([
218
+ __decorate$H([
218
219
  MapToComponentField()
219
220
  ], VegaRichTextEditorRenderer.prototype, "sourceEditConfig", void 0);
220
- __decorate$E([
221
+ __decorate$H([
221
222
  MapToComponentField()
222
223
  ], VegaRichTextEditorRenderer.prototype, "allowSourceEdit", void 0);
223
- __decorate$E([
224
+ __decorate$H([
224
225
  MapToComponentField()
225
226
  ], VegaRichTextEditorRenderer.prototype, "extensions", void 0);
226
- __decorate$E([
227
+ __decorate$H([
227
228
  MapToComponentField()
228
229
  ], VegaRichTextEditorRenderer.prototype, "richTextEditorSourceViewRenderer", void 0);
229
- __decorate$E([
230
+ __decorate$H([
230
231
  MapToComponentMethod('componentDidRender')
231
232
  ], VegaRichTextEditorRenderer.prototype, "componentDidRender", null);
232
233
 
233
- var __decorate$D = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
234
+ var __decorate$G = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
234
235
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
235
236
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
236
237
  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;
@@ -333,76 +334,76 @@ class ToolbarRenderer extends VegaSlimmer {
333
334
  return [renderedItems, totalVisibleCount];
334
335
  }
335
336
  }
336
- __decorate$D([
337
+ __decorate$G([
337
338
  MapToComponentField()
338
339
  ], ToolbarRenderer.prototype, "uniqueToolbarItems", void 0);
339
- __decorate$D([
340
+ __decorate$G([
340
341
  MapToComponentField()
341
342
  ], ToolbarRenderer.prototype, "allowSourceEdit", void 0);
342
- __decorate$D([
343
+ __decorate$G([
343
344
  MapToComponentField()
344
345
  ], ToolbarRenderer.prototype, "host", void 0);
345
- __decorate$D([
346
+ __decorate$G([
346
347
  MapToComponentField()
347
348
  ], ToolbarRenderer.prototype, "clearStyleToolbarButtonSlimmer", void 0);
348
- __decorate$D([
349
+ __decorate$G([
349
350
  MapToComponentField()
350
351
  ], ToolbarRenderer.prototype, "boldToolbarButtonSlimmer", void 0);
351
- __decorate$D([
352
+ __decorate$G([
352
353
  MapToComponentField()
353
354
  ], ToolbarRenderer.prototype, "textStylesToolbarButtonSlimmer", void 0);
354
- __decorate$D([
355
+ __decorate$G([
355
356
  MapToComponentField()
356
357
  ], ToolbarRenderer.prototype, "italicToolbarButtonSlimmer", void 0);
357
- __decorate$D([
358
+ __decorate$G([
358
359
  MapToComponentField()
359
360
  ], ToolbarRenderer.prototype, "underlineToolbarButtonSlimmer", void 0);
360
- __decorate$D([
361
+ __decorate$G([
361
362
  MapToComponentField()
362
363
  ], ToolbarRenderer.prototype, "textColorToolbarButtonSlimmer", void 0);
363
- __decorate$D([
364
+ __decorate$G([
364
365
  MapToComponentField()
365
366
  ], ToolbarRenderer.prototype, "bulletsNumbersToolbarButtonSlimmer", void 0);
366
- __decorate$D([
367
+ __decorate$G([
367
368
  MapToComponentField()
368
369
  ], ToolbarRenderer.prototype, "horizontalAlignmentToolbarButtonSlimmer", void 0);
369
- __decorate$D([
370
+ __decorate$G([
370
371
  MapToComponentField()
371
372
  ], ToolbarRenderer.prototype, "strikethroughToolbarButtonSlimmer", void 0);
372
- __decorate$D([
373
+ __decorate$G([
373
374
  MapToComponentField()
374
375
  ], ToolbarRenderer.prototype, "imageToolbarButtonSlimmer", void 0);
375
- __decorate$D([
376
+ __decorate$G([
376
377
  MapToComponentField()
377
378
  ], ToolbarRenderer.prototype, "moreIndentToolbarButtonSlimmer", void 0);
378
- __decorate$D([
379
+ __decorate$G([
379
380
  MapToComponentField()
380
381
  ], ToolbarRenderer.prototype, "lessIndentToolbarButtonSlimmer", void 0);
381
- __decorate$D([
382
+ __decorate$G([
382
383
  MapToComponentField()
383
384
  ], ToolbarRenderer.prototype, "codeToolbarButtonSlimmer", void 0);
384
- __decorate$D([
385
+ __decorate$G([
385
386
  MapToComponentField()
386
387
  ], ToolbarRenderer.prototype, "linkToolbarButtonSlimmer", void 0);
387
- __decorate$D([
388
+ __decorate$G([
388
389
  MapToComponentField()
389
390
  ], ToolbarRenderer.prototype, "codeBlockToolbarButtonSlimmer", void 0);
390
- __decorate$D([
391
+ __decorate$G([
391
392
  MapToComponentField()
392
393
  ], ToolbarRenderer.prototype, "undoToolbarButtonSlimmer", void 0);
393
- __decorate$D([
394
+ __decorate$G([
394
395
  MapToComponentField()
395
396
  ], ToolbarRenderer.prototype, "redoToolbarButtonSlimmer", void 0);
396
- __decorate$D([
397
+ __decorate$G([
397
398
  MapToComponentField()
398
399
  ], ToolbarRenderer.prototype, "sourceEditToolbarButtonSlimmer", void 0);
399
- __decorate$D([
400
+ __decorate$G([
400
401
  MapToComponentField()
401
402
  ], ToolbarRenderer.prototype, "selectionController", void 0);
402
- __decorate$D([
403
+ __decorate$G([
403
404
  MapToComponentField()
404
405
  ], ToolbarRenderer.prototype, "translationSlimmer", void 0);
405
- __decorate$D([
406
+ __decorate$G([
406
407
  MapToComponentField()
407
408
  ], ToolbarRenderer.prototype, "sourceView", void 0);
408
409
 
@@ -410,7 +411,7 @@ const bold = {
410
411
  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>`,
411
412
  };
412
413
 
413
- var __decorate$C = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
414
+ var __decorate$F = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
414
415
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
415
416
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
416
417
  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;
@@ -452,7 +453,7 @@ class BoldToolbarButtonSlimmer extends VisualModeToolbarButtonSlimmer {
452
453
  (() => {
453
454
  VegaInternalIconManager.register({ bold });
454
455
  })();
455
- __decorate$C([
456
+ __decorate$F([
456
457
  MapToComponentField()
457
458
  ], BoldToolbarButtonSlimmer.prototype, "selectionController", void 0);
458
459
 
@@ -460,7 +461,7 @@ const italic = {
460
461
  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="M128 64c0-17.7 14.3-32 32-32H352c17.7 0 32 14.3 32 32s-14.3 32-32 32H293.3L160 416h64c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H90.7L224 96H160c-17.7 0-32-14.3-32-32z"/></svg>`,
461
462
  };
462
463
 
463
- var __decorate$B = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
464
+ var __decorate$E = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
464
465
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
465
466
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
466
467
  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;
@@ -500,7 +501,7 @@ class ItalicToolbarButtonSlimmer extends VisualModeToolbarButtonSlimmer {
500
501
  (() => {
501
502
  VegaInternalIconManager.register({ italic });
502
503
  })();
503
- __decorate$B([
504
+ __decorate$E([
504
505
  MapToComponentField()
505
506
  ], ItalicToolbarButtonSlimmer.prototype, "selectionController", void 0);
506
507
 
@@ -508,7 +509,7 @@ const underline = {
508
509
  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="M16 64c0-17.7 14.3-32 32-32h96c17.7 0 32 14.3 32 32s-14.3 32-32 32H128V224c0 53 43 96 96 96s96-43 96-96V96H304c-17.7 0-32-14.3-32-32s14.3-32 32-32h96c17.7 0 32 14.3 32 32s-14.3 32-32 32H384V224c0 88.4-71.6 160-160 160s-160-71.6-160-160V96H48C30.3 96 16 81.7 16 64zM0 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-32z"/></svg>`,
509
510
  };
510
511
 
511
- var __decorate$A = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
512
+ var __decorate$D = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
512
513
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
513
514
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
514
515
  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;
@@ -551,7 +552,7 @@ class UnderlineToolbarButtonSlimmer extends VisualModeToolbarButtonSlimmer {
551
552
  (() => {
552
553
  VegaInternalIconManager.register({ underline });
553
554
  })();
554
- __decorate$A([
555
+ __decorate$D([
555
556
  MapToComponentField()
556
557
  ], UnderlineToolbarButtonSlimmer.prototype, "selectionController", void 0);
557
558
 
@@ -559,7 +560,7 @@ const textSize = {
559
560
  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>`,
560
561
  };
561
562
 
562
- var __decorate$z = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
563
+ var __decorate$C = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
563
564
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
564
565
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
565
566
  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;
@@ -687,13 +688,13 @@ TextStylesToolbarButtonSlimmer.allItems = [
687
688
  label: 'Paragraph',
688
689
  },
689
690
  ];
690
- __decorate$z([
691
+ __decorate$C([
691
692
  MapToComponentField()
692
693
  ], TextStylesToolbarButtonSlimmer.prototype, "selectionController", void 0);
693
- __decorate$z([
694
+ __decorate$C([
694
695
  MapToComponentField()
695
696
  ], TextStylesToolbarButtonSlimmer.prototype, "focusController", void 0);
696
- __decorate$z([
697
+ __decorate$C([
697
698
  MapToComponentField()
698
699
  ], TextStylesToolbarButtonSlimmer.prototype, "textStyleItems", void 0);
699
700
 
@@ -701,7 +702,7 @@ const TextSlash = {
701
702
  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>`,
702
703
  };
703
704
 
704
- var __decorate$y = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
705
+ var __decorate$B = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
705
706
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
706
707
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
707
708
  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;
@@ -738,7 +739,7 @@ class ClearStyleToolbarButtonSlimmer extends VisualModeToolbarButtonSlimmer {
738
739
  'text-slash': TextSlash,
739
740
  });
740
741
  })();
741
- __decorate$y([
742
+ __decorate$B([
742
743
  MapToComponentField()
743
744
  ], ClearStyleToolbarButtonSlimmer.prototype, "selectionController", void 0);
744
745
 
@@ -746,7 +747,7 @@ const codeSimple = {
746
747
  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>`,
747
748
  };
748
749
 
749
- var __decorate$x = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
750
+ var __decorate$A = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
750
751
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
751
752
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
752
753
  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;
@@ -784,7 +785,7 @@ class CodeToolbarButtonSlimmer extends VisualModeToolbarButtonSlimmer {
784
785
  (() => {
785
786
  VegaInternalIconManager.register({ 'code-simple': codeSimple });
786
787
  })();
787
- __decorate$x([
788
+ __decorate$A([
788
789
  MapToComponentField()
789
790
  ], CodeToolbarButtonSlimmer.prototype, "selectionController", void 0);
790
791
 
@@ -792,7 +793,7 @@ const strikethrough = {
792
793
  icon: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 6.1.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc. --><path fill="currentColor" d="M332.2 319.9c17.22 12.17 22.33 26.51 18.61 48.21c-3.031 17.59-10.88 29.34-24.72 36.99c-35.44 19.75-108.5 11.96-186-19.68c-16.34-6.686-35.03 1.156-41.72 17.53s1.188 35.05 17.53 41.71c31.75 12.93 95.69 35.37 157.6 35.37c29.62 0 58.81-5.156 83.72-18.96c30.81-17.09 50.44-45.46 56.72-82.11c3.998-23.27 2.168-42.58-3.488-59.05H332.2zM488 239.9l-176.5-.0309c-15.85-5.613-31.83-10.34-46.7-14.62c-85.47-24.62-110.9-39.05-103.7-81.33c2.5-14.53 10.16-25.96 22.72-34.03c20.47-13.15 64.06-23.84 155.4 .3438c17.09 4.531 34.59-5.654 39.13-22.74c4.531-17.09-5.656-34.59-22.75-39.12c-91.31-24.18-160.7-21.62-206.3 7.654C121.8 73.72 103.6 101.1 98.09 133.1C89.26 184.5 107.9 217.3 137.2 239.9L24 239.9c-13.25 0-24 10.75-24 23.1c0 13.25 10.75 23.1 24 23.1h464c13.25 0 24-10.75 24-23.1C512 250.7 501.3 239.9 488 239.9z"/></svg>`,
793
794
  };
794
795
 
795
- var __decorate$w = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
796
+ var __decorate$z = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
796
797
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
797
798
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
798
799
  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;
@@ -835,7 +836,7 @@ class StrikethroughToolbarButtonSlimmer extends VisualModeToolbarButtonSlimmer {
835
836
  (() => {
836
837
  VegaInternalIconManager.register({ strikethrough });
837
838
  })();
838
- __decorate$w([
839
+ __decorate$z([
839
840
  MapToComponentField()
840
841
  ], StrikethroughToolbarButtonSlimmer.prototype, "selectionController", void 0);
841
842
 
@@ -843,7 +844,7 @@ const link = {
843
844
  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="M562.8 267.7c56.5-56.5 56.5-148 0-204.5c-50-50-128.8-56.5-186.3-15.4l-1.6 1.1c-14.4 10.3-17.7 30.3-7.4 44.6s30.3 17.7 44.6 7.4l1.6-1.1c32.1-22.9 76-19.3 103.8 8.6c31.5 31.5 31.5 82.5 0 114L405.3 334.8c-31.5 31.5-82.5 31.5-114 0c-27.9-27.9-31.5-71.8-8.6-103.8l1.1-1.6c10.3-14.4 6.9-34.4-7.4-44.6s-34.4-6.9-44.6 7.4l-1.1 1.6C189.5 251.2 196 330 246 380c56.5 56.5 148 56.5 204.5 0L562.8 267.7zM43.2 244.3c-56.5 56.5-56.5 148 0 204.5c50 50 128.8 56.5 186.3 15.4l1.6-1.1c14.4-10.3 17.7-30.3 7.4-44.6s-30.3-17.7-44.6-7.4l-1.6 1.1c-32.1 22.9-76 19.3-103.8-8.6C57 372 57 321 88.5 289.5L200.7 177.2c31.5-31.5 82.5-31.5 114 0c27.9 27.9 31.5 71.8 8.6 103.9l-1.1 1.6c-10.3 14.4-6.9 34.4 7.4 44.6s34.4 6.9 44.6-7.4l1.1-1.6C416.5 260.8 410 182 360 132c-56.5-56.5-148-56.5-204.5 0L43.2 244.3z"/></svg>`,
844
845
  };
845
846
 
846
- var __decorate$v = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
847
+ var __decorate$y = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
847
848
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
848
849
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
849
850
  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;
@@ -860,12 +861,18 @@ class LinkToolbarButtonSlimmer extends VisualModeToolbarButtonSlimmer {
860
861
  this.handleLinkEditorChange = ({ detail, }) => {
861
862
  switch (detail.action) {
862
863
  case 'link': {
863
- const { url, text } = detail.payload;
864
+ const { url, text, linkType } = detail.payload;
864
865
  const textChanged = text !== this.currentSelectedText;
865
866
  const groupKey = generateUUID();
866
867
  this.currentSelectedNodes.forEach((node) => {
867
868
  node.apply(new SelectionChangeAction(this.currentRange)).apply(new LinkAnnotationAction({
868
- link: { href: url, groupKey: groupKey },
869
+ link: Object.assign({ href: url, groupKey: groupKey }, (linkType
870
+ ? {
871
+ customAttribute: {
872
+ 'data-link-type': linkType,
873
+ },
874
+ }
875
+ : {})),
869
876
  newText: textChanged ? text : undefined,
870
877
  needMergeNode: textChanged && this.currentSelectedNodes.length > 1,
871
878
  type: 'link',
@@ -926,7 +933,7 @@ class LinkToolbarButtonSlimmer extends VisualModeToolbarButtonSlimmer {
926
933
  (() => {
927
934
  VegaInternalIconManager.register({ link: link });
928
935
  })();
929
- __decorate$v([
936
+ __decorate$y([
930
937
  MapToComponentField()
931
938
  ], LinkToolbarButtonSlimmer.prototype, "selectionController", void 0);
932
939
 
@@ -934,7 +941,7 @@ const indent = {
934
941
  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="M0 64C0 46.3 14.3 32 32 32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32C14.3 96 0 81.7 0 64zM192 192c0-17.7 14.3-32 32-32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H224c-17.7 0-32-14.3-32-32zm32 96H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H224c-17.7 0-32-14.3-32-32s14.3-32 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-32zM127.8 268.6L25.8 347.9C15.3 356.1 0 348.6 0 335.3V176.7c0-13.3 15.3-20.8 25.8-12.6l101.9 79.3c8.2 6.4 8.2 18.9 0 25.3z"/></svg>`,
935
942
  };
936
943
 
937
- var __decorate$u = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
944
+ var __decorate$x = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
938
945
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
939
946
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
940
947
  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;
@@ -968,7 +975,7 @@ class MoreIndentToolbarButtonSlimmer extends VisualModeToolbarButtonSlimmer {
968
975
  (() => {
969
976
  VegaInternalIconManager.register({ indent: indent });
970
977
  })();
971
- __decorate$u([
978
+ __decorate$x([
972
979
  MapToComponentField()
973
980
  ], MoreIndentToolbarButtonSlimmer.prototype, "selectionController", void 0);
974
981
 
@@ -976,7 +983,7 @@ const outdent = {
976
983
  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>`,
977
984
  };
978
985
 
979
- var __decorate$t = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
986
+ var __decorate$w = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
980
987
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
981
988
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
982
989
  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;
@@ -1011,7 +1018,7 @@ class LessIndentToolbarButtonSlimmer extends VisualModeToolbarButtonSlimmer {
1011
1018
  (() => {
1012
1019
  VegaInternalIconManager.register({ outdent: outdent });
1013
1020
  })();
1014
- __decorate$t([
1021
+ __decorate$w([
1015
1022
  MapToComponentField()
1016
1023
  ], LessIndentToolbarButtonSlimmer.prototype, "selectionController", void 0);
1017
1024
 
@@ -1032,7 +1039,7 @@ class ImageUpdateUrlAction extends ModifyContentAction {
1032
1039
  }
1033
1040
  }
1034
1041
 
1035
- var __decorate$s = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
1042
+ var __decorate$v = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
1036
1043
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
1037
1044
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
1038
1045
  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;
@@ -1231,16 +1238,16 @@ ImageToolbarButtonSlimmer.allItems = [
1231
1238
  label: 'Insert via URL',
1232
1239
  },
1233
1240
  ];
1234
- __decorate$s([
1241
+ __decorate$v([
1235
1242
  MapToComponentField()
1236
1243
  ], ImageToolbarButtonSlimmer.prototype, "host", void 0);
1237
- __decorate$s([
1244
+ __decorate$v([
1238
1245
  MapToComponentField()
1239
1246
  ], ImageToolbarButtonSlimmer.prototype, "insertImageController", void 0);
1240
- __decorate$s([
1247
+ __decorate$v([
1241
1248
  MapToComponentField()
1242
1249
  ], ImageToolbarButtonSlimmer.prototype, "imageInsertedEventEmitter", void 0);
1243
- __decorate$s([
1250
+ __decorate$v([
1244
1251
  MapToComponentField()
1245
1252
  ], ImageToolbarButtonSlimmer.prototype, "selectionController", void 0);
1246
1253
 
@@ -1253,109 +1260,572 @@ const ListOL = {
1253
1260
  };
1254
1261
 
1255
1262
  /**
1256
- * Action to toggle bullet annotation
1263
+ * Action to nest the selected list items under the previous sibling.
1257
1264
  */
1258
- class TransformListAction extends ModifyContentAction {
1259
- constructor(listType, selectedBlocks) {
1265
+ class NestListItemsAction extends ModifyContentAction {
1266
+ constructor(selectedBlocks) {
1260
1267
  super();
1261
- this.type = ModifyContentActionType.TRANSFORM_LIST_BLOCK;
1268
+ this.type = ModifyContentActionType.NEST_LIST_ITEMS;
1262
1269
  this.isFlushable = true;
1263
- this.listType = listType;
1264
1270
  this.selectedBlocks = selectedBlocks;
1265
1271
  }
1266
1272
  }
1267
1273
 
1268
1274
  /**
1269
- * Action to toggle bullet annotation
1275
+ * Abstract base for list keyboard (Tab / Shift+Tab) handlers.
1276
+ * Provides shared selection-normalization utilities used by both the indent
1277
+ * and outdent concrete handlers.
1270
1278
  */
1271
- class TransformParagraphAction extends ModifyContentAction {
1272
- constructor(selectedBlocks) {
1273
- super();
1274
- this.type = ModifyContentActionType.TRANSFORM_PARAGRAPH_BLOCK;
1275
- this.isFlushable = true;
1276
- this.selectedBlocks = selectedBlocks;
1279
+ class AbstractListKeyboardHandler {
1280
+ /**
1281
+ * Filter the ordered selection down to only the "root" items —
1282
+ * items whose ancestor is not also present in the selection.
1283
+ *
1284
+ * @param {RTEListItemBlock[]} selection - Ordered selected list items.
1285
+ * @returns {RTEListItemBlock[]} Root items that do not have selected ancestors.
1286
+ */
1287
+ getOutdentRoots(selection) {
1288
+ const selectedItems = new Set(selection);
1289
+ return selection.filter((item) => !this.hasSelectedAncestor(item, selectedItems));
1277
1290
  }
1278
- }
1279
-
1280
- var __decorate$r = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
1281
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
1282
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
1283
- 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;
1284
- return c > 3 && r && Object.defineProperty(target, key, r), r;
1285
- };
1286
- class BulletsToolbarButtonSlimmer extends VisualModeToolbarButtonSlimmer {
1287
- constructor() {
1288
- super({
1289
- icon: 'list-ul',
1290
- tooltip: {
1291
- text: 'Bullets',
1292
- },
1291
+ /**
1292
+ * Check whether a list item has an ancestor that is also selected.
1293
+ *
1294
+ * @param {RTEListItemBlock} item - Item to inspect.
1295
+ * @param {Set<RTEListItemBlock>} selectedItems - Selected items lookup set.
1296
+ * @returns {boolean} True when an ancestor item is selected.
1297
+ */
1298
+ hasSelectedAncestor(item, selectedItems) {
1299
+ var _a, _b;
1300
+ let currentParent = (_a = item.parent) === null || _a === void 0 ? void 0 : _a.parent;
1301
+ while (currentParent instanceof RTEListItemBlock) {
1302
+ if (selectedItems.has(currentParent)) {
1303
+ return true;
1304
+ }
1305
+ currentParent = (_b = currentParent.parent) === null || _b === void 0 ? void 0 : _b.parent;
1306
+ }
1307
+ return false;
1308
+ }
1309
+ /**
1310
+ * Split an ordered flat list of items into groups that share the same
1311
+ * parent list and are contiguous siblings.
1312
+ *
1313
+ * @param {RTEListItemBlock[]} selection - Ordered list-item selection.
1314
+ * @returns {RTEListItemBlock[][]} Contiguous parent-based segments.
1315
+ */
1316
+ splitSelectionIntoParentSegments(selection) {
1317
+ const segments = [];
1318
+ let currentSegment = [];
1319
+ selection.forEach((item) => {
1320
+ if (currentSegment.length === 0) {
1321
+ currentSegment.push(item);
1322
+ return;
1323
+ }
1324
+ const previousItem = currentSegment[currentSegment.length - 1];
1325
+ const isSameParent = previousItem.parent === item.parent;
1326
+ const isContiguousSibling = isSameParent &&
1327
+ item.parent.children.indexOf(item) - item.parent.children.indexOf(previousItem) === 1;
1328
+ if (isContiguousSibling) {
1329
+ currentSegment.push(item);
1330
+ return;
1331
+ }
1332
+ segments.push(currentSegment);
1333
+ currentSegment = [item];
1293
1334
  });
1335
+ if (currentSegment.length > 0) {
1336
+ segments.push(currentSegment);
1337
+ }
1338
+ return segments;
1294
1339
  }
1295
- isSelected() {
1296
- const selectedBlocks = this.selectionController.getSelectedBlocks();
1297
- return this.isListType(selectedBlocks);
1340
+ /**
1341
+ * Normalize the selection and split into parent-based contiguous segments.
1342
+ * Returns null when the result is empty.
1343
+ *
1344
+ * @param {RTEBlock[]} selectedBlocks - Raw selected blocks.
1345
+ * @returns {RTEListItemBlock[][] | null} Contiguous segments or null when invalid.
1346
+ */
1347
+ normalizeToSegments(selectedBlocks) {
1348
+ const normalizedSelection = this.getOrderedListItems(selectedBlocks);
1349
+ if (!normalizedSelection) {
1350
+ return null;
1351
+ }
1352
+ const roots = this.getOutdentRoots(normalizedSelection);
1353
+ const segments = this.splitSelectionIntoParentSegments(roots);
1354
+ return segments.length ? segments : null;
1298
1355
  }
1299
- onClick() {
1300
- if (this.isSelected()) {
1301
- this.deselectBulletList();
1356
+ /**
1357
+ * Return the first and last RTETextNode spanning the provided blocks,
1358
+ * or null when either boundary cannot be resolved.
1359
+ *
1360
+ * @param {RTEBlock[]} blocks - Blocks defining the range boundary.
1361
+ * @returns {Nullable<[RTETextNode, RTETextNode]>} First and last boundary nodes.
1362
+ */
1363
+ getSelectionBoundary(blocks) {
1364
+ var _a, _b, _c, _d;
1365
+ const firstNode = (_b = (_a = blocks[0]) === null || _a === void 0 ? void 0 : _a.getFirstNode()) !== null && _b !== void 0 ? _b : null;
1366
+ const lastNode = (_d = (_c = blocks[blocks.length - 1]) === null || _c === void 0 ? void 0 : _c.getLastNode()) !== null && _d !== void 0 ? _d : null;
1367
+ if (!firstNode || !lastNode) {
1368
+ return null;
1302
1369
  }
1303
- else {
1304
- this.selectBulletList();
1370
+ return [firstNode, lastNode];
1371
+ }
1372
+ /**
1373
+ * Normalize the raw selectedBlocks into an ordered list of RTEListItemBlocks,
1374
+ * truncating at the first non-list block. Returns null when no list items
1375
+ * are present.
1376
+ *
1377
+ * @param {RTEBlock[]} selectedBlocks - Raw selected blocks.
1378
+ * @returns {RTEListItemBlock[] | null} Ordered list items or null.
1379
+ */
1380
+ getOrderedListItems(selectedBlocks) {
1381
+ const selectedListItems = this.getSelectedListItemsUntilFirstNonList(selectedBlocks);
1382
+ if (!selectedListItems.length) {
1383
+ return null;
1305
1384
  }
1306
- void this.popoverRef.hide();
1385
+ return [...selectedListItems].sort((a, b) => this.compareTreePath(this.getTreePath(a), this.getTreePath(b)));
1307
1386
  }
1308
- isDisabled() {
1309
- const selectedNodes = this.selectionController.getSelectedNodes();
1310
- return (super.isDisabled() ||
1311
- selectedNodes.some((node) => node instanceof RTEImageNode || node instanceof RTECodeBlockNode));
1387
+ /**
1388
+ * Collect contiguous selected list items until a non-list block is found.
1389
+ *
1390
+ * @param {RTEBlock[]} selectedBlocks - Raw selected blocks.
1391
+ * @returns {RTEListItemBlock[]} Selected list items up to first non-list block.
1392
+ */
1393
+ getSelectedListItemsUntilFirstNonList(selectedBlocks) {
1394
+ const selectedListItems = [];
1395
+ for (const block of selectedBlocks) {
1396
+ if (!(block instanceof RTEListItemBlock)) {
1397
+ if (selectedListItems.length > 0) {
1398
+ break;
1399
+ }
1400
+ return [];
1401
+ }
1402
+ selectedListItems.push(block);
1403
+ }
1404
+ return selectedListItems;
1312
1405
  }
1313
- isListType(selectedBlocks, type = 'bullet-list') {
1314
- return (selectedBlocks.length > 0 &&
1315
- selectedBlocks.every((block) => block instanceof RTEListItemBlock && block.parent.type === type));
1406
+ /**
1407
+ * Build a hierarchical index path for a list item in the list tree.
1408
+ *
1409
+ * @param {RTEListItemBlock} item - Item whose tree path is being resolved.
1410
+ * @returns {number[]} Tree index path from root to the item.
1411
+ */
1412
+ getTreePath(item) {
1413
+ var _a;
1414
+ const path = [];
1415
+ const visitedLists = new Set();
1416
+ let currentItem = item;
1417
+ let currentList = item.parent;
1418
+ while (currentList && this.hasChildren(currentList) && !visitedLists.has(currentList)) {
1419
+ visitedLists.add(currentList);
1420
+ const itemIndex = currentList.children.indexOf(currentItem);
1421
+ if (itemIndex < 0) {
1422
+ break;
1423
+ }
1424
+ path.unshift(itemIndex);
1425
+ const listParent = currentList.parent;
1426
+ if (listParent instanceof RTEListItemBlock) {
1427
+ const nestListIndex = ((_a = listParent.nestList) !== null && _a !== void 0 ? _a : []).indexOf(currentList);
1428
+ if (nestListIndex < 0) {
1429
+ break;
1430
+ }
1431
+ path.unshift(nestListIndex);
1432
+ currentItem = listParent;
1433
+ currentList = listParent.parent;
1434
+ continue;
1435
+ }
1436
+ let child = currentList;
1437
+ let container = listParent;
1438
+ while (container && this.hasChildren(container)) {
1439
+ const childIndex = container.children.indexOf(child);
1440
+ if (childIndex < 0) {
1441
+ return path;
1442
+ }
1443
+ path.unshift(childIndex);
1444
+ child = container;
1445
+ container = container.parent;
1446
+ }
1447
+ break;
1448
+ }
1449
+ return path;
1316
1450
  }
1317
1451
  /**
1318
- * Deselect bullet list item to convert it to default paragraph
1452
+ * Compare two list-item tree paths.
1453
+ *
1454
+ * @param {number[]} a - First tree path.
1455
+ * @param {number[]} b - Second tree path.
1456
+ * @returns {number} Negative when a < b, positive when a > b, otherwise 0.
1457
+ */
1458
+ compareTreePath(a, b) {
1459
+ const length = Math.min(a.length, b.length);
1460
+ for (let i = 0; i < length; i++) {
1461
+ if (a[i] !== b[i]) {
1462
+ return a[i] - b[i];
1463
+ }
1464
+ }
1465
+ return a.length - b.length;
1466
+ }
1467
+ /**
1468
+ * Check whether a value exposes a children array.
1469
+ *
1470
+ * @param {unknown} entity - Candidate value.
1471
+ * @returns {boolean} True when entity has children array.
1319
1472
  */
1320
- deselectBulletList() {
1321
- const selectedBlocks = this.selectionController.getSelectedBlocks();
1322
- if (selectedBlocks[0]) {
1323
- selectedBlocks[0].parent.apply(new TransformParagraphAction(selectedBlocks));
1473
+ hasChildren(entity) {
1474
+ return !!entity && Array.isArray(entity.children);
1475
+ }
1476
+ }
1477
+
1478
+ /**
1479
+ * Handles Tab key list indentation.
1480
+ * Normalizes the selection, applies a command-style gate on the first
1481
+ * eligible segment, then nests each qualifying segment.
1482
+ */
1483
+ class ListTabIndentHandler extends AbstractListKeyboardHandler {
1484
+ /**
1485
+ * @inheritDoc
1486
+ */
1487
+ execute(selectedBlocks) {
1488
+ const segments = this.normalizeToSegments(selectedBlocks);
1489
+ if (!segments) {
1490
+ return null;
1491
+ }
1492
+ const firstSegment = segments[0];
1493
+ const firstParentList = firstSegment[0].parent;
1494
+ if (firstParentList.children.indexOf(firstSegment[0]) <= 0) {
1495
+ return null;
1496
+ }
1497
+ const segmentSelectionBoundaries = new Array(segments.length).fill(null);
1498
+ for (let i = segments.length - 1; i >= 0; i--) {
1499
+ const segment = segments[i];
1500
+ const parentList = segment[0].parent;
1501
+ if (parentList.children.indexOf(segment[0]) <= 0) {
1502
+ continue;
1503
+ }
1504
+ parentList.apply(new NestListItemsAction(segment));
1505
+ segmentSelectionBoundaries[i] = this.getSelectionBoundary(segment);
1324
1506
  }
1507
+ return segmentSelectionBoundaries.some(Boolean) ? segmentSelectionBoundaries : null;
1508
+ }
1509
+ }
1510
+
1511
+ /**
1512
+ * Action to promote the selected nested list items one level up.
1513
+ */
1514
+ class UnnestListItemsAction extends ModifyContentAction {
1515
+ constructor(selectedBlocks) {
1516
+ super();
1517
+ this.type = ModifyContentActionType.UNNEST_LIST_ITEMS;
1518
+ this.isFlushable = true;
1519
+ this.selectedBlocks = selectedBlocks;
1325
1520
  }
1521
+ }
1522
+
1523
+ /**
1524
+ * Handles Shift+Tab key list outdent.
1525
+ * Normalizes the selection, then promotes each segment, either moving nested
1526
+ * items or promoting top-level items to paragraphs.
1527
+ */
1528
+ class ListShiftTabOutdentHandler extends AbstractListKeyboardHandler {
1326
1529
  /**
1327
- * Select texts or list items or texts and list items to convert it to bullet list
1530
+ * @inheritDoc
1328
1531
  */
1329
- selectBulletList() {
1330
- const selectedBlocks = this.selectionController.getSelectedBlocks();
1331
- if (selectedBlocks[0]) {
1332
- const selectedFirstBlock = selectedBlocks[0].type === 'list-item'
1333
- ? selectedBlocks[0].parent
1334
- : selectedBlocks[0];
1335
- selectedFirstBlock.apply(new TransformListAction('bullet-list', selectedBlocks));
1532
+ execute(selectedBlocks) {
1533
+ const segments = this.normalizeToSegments(selectedBlocks);
1534
+ if (!segments) {
1535
+ return null;
1536
+ }
1537
+ const segmentSelectionBoundaries = new Array(segments.length).fill(null);
1538
+ for (let i = segments.length - 1; i >= 0; i--) {
1539
+ const segment = segments[i];
1540
+ const parentList = segment[0].parent;
1541
+ if (parentList.parent instanceof VegaRTEContent || parentList.parent instanceof RTEHtmlBlock) {
1542
+ // Capture boundary before action moves text nodes into new paragraphs
1543
+ const boundary = this.getSelectionBoundary(segment);
1544
+ parentList.apply(new TransformParagraphAction(segment));
1545
+ segmentSelectionBoundaries[i] = boundary;
1546
+ continue;
1547
+ }
1548
+ if (parentList.parent instanceof RTEListItemBlock) {
1549
+ parentList.apply(new UnnestListItemsAction(segment));
1550
+ segmentSelectionBoundaries[i] = this.getSelectionBoundary(segment);
1551
+ }
1336
1552
  }
1553
+ if (segmentSelectionBoundaries.some(Boolean)) {
1554
+ return segmentSelectionBoundaries;
1555
+ }
1556
+ return null;
1337
1557
  }
1338
1558
  }
1339
- __decorate$r([
1340
- MapToComponentField()
1341
- ], BulletsToolbarButtonSlimmer.prototype, "selectionController", void 0);
1342
- __decorate$r([
1343
- MapToComponentField()
1344
- ], BulletsToolbarButtonSlimmer.prototype, "popoverRef", void 0);
1345
1559
 
1346
- var __decorate$q = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
1560
+ var __decorate$u = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
1347
1561
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
1348
1562
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
1349
1563
  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;
1350
1564
  return c > 3 && r && Object.defineProperty(target, key, r), r;
1351
1565
  };
1352
- class NumbersToolbarButtonSlimmer extends VisualModeToolbarButtonSlimmer {
1566
+ const LIST_TOOLBAR_ITEMS = ['bullets', 'numbers', 'bulletsNumbers'];
1567
+ /**
1568
+ * Handles list keyboard shortcuts (Tab/Shift+Tab) for list tooling.
1569
+ */
1570
+ class ListKeyboardSlimmer extends VegaSlimmer {
1353
1571
  constructor() {
1354
- super({
1355
- icon: 'list-ol',
1356
- tooltip: { text: 'Numbers' },
1357
- });
1358
- }
1572
+ super(...arguments);
1573
+ this.isKeyboardListenerBound = false;
1574
+ this.listTabIndentHandler = new ListTabIndentHandler();
1575
+ this.listShiftTabOutdentHandler = new ListShiftTabOutdentHandler();
1576
+ // Keyboard action execution
1577
+ /**
1578
+ * Handle Tab and Shift+Tab list keyboard interactions.
1579
+ *
1580
+ * @param {KeyboardEvent} e - Keyboard event to process.
1581
+ * @returns {void}
1582
+ */
1583
+ this.handleListKeyboardAction = (e) => {
1584
+ if (e.key !== 'Tab') {
1585
+ return;
1586
+ }
1587
+ if (this.hasNonShiftModifierForTab(e)) {
1588
+ return;
1589
+ }
1590
+ const selectedBlocks = this.selectionController.getSelectedBlocks();
1591
+ const currentRange = this.selectionController.getCurrentRange().clone();
1592
+ if (e.shiftKey) {
1593
+ const selectionBoundaries = this.listShiftTabOutdentHandler.execute(selectedBlocks);
1594
+ if (selectionBoundaries) {
1595
+ e.preventDefault();
1596
+ void this.valueController.flushChanges(this.value).then(() => {
1597
+ this.restoreListSelection(selectionBoundaries, currentRange.startNode instanceof RTETextNode ? currentRange.startNode : null, currentRange.endNode instanceof RTETextNode ? currentRange.endNode : null, currentRange.startOffset, currentRange.endOffset);
1598
+ });
1599
+ }
1600
+ return;
1601
+ }
1602
+ const selectionBoundaries = this.listTabIndentHandler.execute(selectedBlocks);
1603
+ if (!selectionBoundaries) {
1604
+ return;
1605
+ }
1606
+ e.preventDefault();
1607
+ void this.valueController.flushChanges(this.value).then(() => {
1608
+ this.restoreListSelection(selectionBoundaries, currentRange.startNode instanceof RTETextNode ? currentRange.startNode : null, currentRange.endNode instanceof RTETextNode ? currentRange.endNode : null, currentRange.startOffset, currentRange.endOffset);
1609
+ });
1610
+ };
1611
+ }
1612
+ // Listener lifecycle and gating
1613
+ /**
1614
+ * @inheritDoc
1615
+ */
1616
+ disconnectedCallback() {
1617
+ this.removeListKeyboardListener();
1618
+ }
1619
+ /**
1620
+ * @inheritDoc
1621
+ */
1622
+ componentDidLoad() {
1623
+ this.syncListKeyboardListener();
1624
+ }
1625
+ /**
1626
+ * Re-sync keyboard listener when toolbarItems prop changes at runtime,
1627
+ * ensuring list shortcuts are bound/unbound as tools are added/removed.
1628
+ */
1629
+ watchToolbarItems() {
1630
+ this.syncListKeyboardListener();
1631
+ }
1632
+ /**
1633
+ * Synchronize the DOM keydown listener with the configured toolbar items.
1634
+ */
1635
+ syncListKeyboardListener() {
1636
+ if (this.hasListToolbarConfigured()) {
1637
+ this.addListKeyboardListener();
1638
+ return;
1639
+ }
1640
+ this.removeListKeyboardListener();
1641
+ }
1642
+ /**
1643
+ * Determine whether any list keyboard controls are enabled in the toolbar.
1644
+ *
1645
+ * @returns {boolean} True when any list toolbar item is configured.
1646
+ */
1647
+ hasListToolbarConfigured() {
1648
+ const flatToolbarItems = this.toolbarItems.flat();
1649
+ return flatToolbarItems.some((item) => LIST_TOOLBAR_ITEMS.includes(item));
1650
+ }
1651
+ /**
1652
+ * Attach the keydown listener to the current editable element when available.
1653
+ * Handles element ref changes by rebinding when the target element differs.
1654
+ */
1655
+ addListKeyboardListener() {
1656
+ const editableElement = this.vegaRichTextEditorRenderer.getRTEEditableElementRef();
1657
+ if (this.isKeyboardListenerBound && this.boundEditableElement === editableElement) {
1658
+ return;
1659
+ }
1660
+ if (this.isKeyboardListenerBound) {
1661
+ this.removeListKeyboardListener();
1662
+ }
1663
+ if (!editableElement) {
1664
+ return;
1665
+ }
1666
+ editableElement.addEventListener('keydown', this.handleListKeyboardAction);
1667
+ this.boundEditableElement = editableElement;
1668
+ this.isKeyboardListenerBound = true;
1669
+ }
1670
+ /**
1671
+ * Detach the keydown listener from the previously bound editable element.
1672
+ */
1673
+ removeListKeyboardListener() {
1674
+ if (!this.isKeyboardListenerBound || !this.boundEditableElement) {
1675
+ return;
1676
+ }
1677
+ this.boundEditableElement.removeEventListener('keydown', this.handleListKeyboardAction);
1678
+ this.boundEditableElement = null;
1679
+ this.isKeyboardListenerBound = false;
1680
+ }
1681
+ /**
1682
+ * Check whether the Tab event includes modifiers other than Shift.
1683
+ *
1684
+ * @param {KeyboardEvent} e - Keyboard event to inspect.
1685
+ * @returns {boolean} True when non-shift modifier keys are pressed.
1686
+ */
1687
+ hasNonShiftModifierForTab(e) {
1688
+ return e.altKey || e.ctrlKey || e.metaKey || e.getModifierState('AltGraph');
1689
+ }
1690
+ /**
1691
+ * Restore the logical selection after a list keyboard action completes.
1692
+ *
1693
+ * @param {Array<Nullable<[RTETextNode, RTETextNode]>>} selectionBoundaries - Boundaries produced by the handler.
1694
+ * @param {Nullable<RTETextNode>} preferredStartNode - Preferred start node from prior selection.
1695
+ * @param {Nullable<RTETextNode>} preferredEndNode - Preferred end node from prior selection.
1696
+ * @param {number} startOffset - Preferred start offset.
1697
+ * @param {number} endOffset - Preferred end offset.
1698
+ * @returns {void}
1699
+ */
1700
+ restoreListSelection(selectionBoundaries, preferredStartNode, preferredEndNode, startOffset, endOffset) {
1701
+ var _a, _b, _c, _d;
1702
+ const firstBoundary = (_a = selectionBoundaries.find(Boolean)) !== null && _a !== void 0 ? _a : null;
1703
+ const lastBoundary = (_b = [...selectionBoundaries].reverse().find(Boolean)) !== null && _b !== void 0 ? _b : null;
1704
+ const firstNode = (_c = preferredStartNode !== null && preferredStartNode !== void 0 ? preferredStartNode : firstBoundary === null || firstBoundary === void 0 ? void 0 : firstBoundary[0]) !== null && _c !== void 0 ? _c : null;
1705
+ const lastNode = (_d = preferredEndNode !== null && preferredEndNode !== void 0 ? preferredEndNode : lastBoundary === null || lastBoundary === void 0 ? void 0 : lastBoundary[1]) !== null && _d !== void 0 ? _d : null;
1706
+ if (!firstNode || !lastNode) {
1707
+ return;
1708
+ }
1709
+ this.selectionController.enqueueSelectionRangeFutureState(firstNode, Math.min(startOffset, firstNode.getRangeEndOffset()), lastNode, Math.min(endOffset, lastNode.getRangeEndOffset()), true);
1710
+ }
1711
+ }
1712
+ __decorate$u([
1713
+ MapToComponentField()
1714
+ ], ListKeyboardSlimmer.prototype, "selectionController", void 0);
1715
+ __decorate$u([
1716
+ MapToComponentField()
1717
+ ], ListKeyboardSlimmer.prototype, "valueController", void 0);
1718
+ __decorate$u([
1719
+ MapToComponentField()
1720
+ ], ListKeyboardSlimmer.prototype, "value", void 0);
1721
+ __decorate$u([
1722
+ MapToComponentField()
1723
+ ], ListKeyboardSlimmer.prototype, "toolbarItems", void 0);
1724
+ __decorate$u([
1725
+ MapToComponentField()
1726
+ ], ListKeyboardSlimmer.prototype, "vegaRichTextEditorRenderer", void 0);
1727
+ __decorate$u([
1728
+ MapToComponentMethod('disconnectedCallback')
1729
+ ], ListKeyboardSlimmer.prototype, "disconnectedCallback", null);
1730
+ __decorate$u([
1731
+ MapToComponentMethod('componentDidLoad')
1732
+ ], ListKeyboardSlimmer.prototype, "componentDidLoad", null);
1733
+ __decorate$u([
1734
+ MapToComponentMethod('watchToolbarItems')
1735
+ ], ListKeyboardSlimmer.prototype, "watchToolbarItems", null);
1736
+
1737
+ /**
1738
+ * Action to toggle bullet annotation
1739
+ */
1740
+ class TransformListAction extends ModifyContentAction {
1741
+ constructor(listType, selectedBlocks) {
1742
+ super();
1743
+ this.type = ModifyContentActionType.TRANSFORM_LIST_BLOCK;
1744
+ this.isFlushable = true;
1745
+ this.listType = listType;
1746
+ this.selectedBlocks = selectedBlocks;
1747
+ }
1748
+ }
1749
+
1750
+ var __decorate$t = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
1751
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
1752
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
1753
+ 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;
1754
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
1755
+ };
1756
+ class BulletsToolbarButtonSlimmer extends VisualModeToolbarButtonSlimmer {
1757
+ constructor() {
1758
+ super({
1759
+ icon: 'list-ul',
1760
+ tooltip: {
1761
+ text: 'Bullets',
1762
+ },
1763
+ });
1764
+ }
1765
+ isSelected() {
1766
+ const selectedBlocks = this.selectionController.getSelectedBlocks();
1767
+ return this.isListType(selectedBlocks);
1768
+ }
1769
+ onClick() {
1770
+ if (this.isSelected()) {
1771
+ this.deselectBulletList();
1772
+ }
1773
+ else {
1774
+ this.selectBulletList();
1775
+ }
1776
+ void this.popoverRef.hide();
1777
+ }
1778
+ isDisabled() {
1779
+ const selectedNodes = this.selectionController.getSelectedNodes();
1780
+ return (super.isDisabled() ||
1781
+ selectedNodes.some((node) => node instanceof RTEImageNode || node instanceof RTECodeBlockNode));
1782
+ }
1783
+ isListType(selectedBlocks, type = 'bullet-list') {
1784
+ return (selectedBlocks.length > 0 &&
1785
+ selectedBlocks.every((block) => block instanceof RTEListItemBlock && block.parent.type === type));
1786
+ }
1787
+ /**
1788
+ * Deselect bullet list item to convert it to default paragraph
1789
+ */
1790
+ deselectBulletList() {
1791
+ const selectedBlocks = this.selectionController.getSelectedBlocks();
1792
+ if (selectedBlocks[0]) {
1793
+ selectedBlocks[0].parent.apply(new TransformParagraphAction(selectedBlocks));
1794
+ }
1795
+ }
1796
+ /**
1797
+ * Select texts or list items or texts and list items to convert it to bullet list
1798
+ */
1799
+ selectBulletList() {
1800
+ const selectedBlocks = this.selectionController.getSelectedBlocks();
1801
+ if (selectedBlocks[0]) {
1802
+ const selectedFirstBlock = selectedBlocks[0].type === 'list-item'
1803
+ ? selectedBlocks[0].parent
1804
+ : selectedBlocks[0];
1805
+ selectedFirstBlock.apply(new TransformListAction('bullet-list', selectedBlocks));
1806
+ }
1807
+ }
1808
+ }
1809
+ __decorate$t([
1810
+ MapToComponentField()
1811
+ ], BulletsToolbarButtonSlimmer.prototype, "selectionController", void 0);
1812
+ __decorate$t([
1813
+ MapToComponentField()
1814
+ ], BulletsToolbarButtonSlimmer.prototype, "popoverRef", void 0);
1815
+
1816
+ var __decorate$s = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
1817
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
1818
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
1819
+ 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;
1820
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
1821
+ };
1822
+ class NumbersToolbarButtonSlimmer extends VisualModeToolbarButtonSlimmer {
1823
+ constructor() {
1824
+ super({
1825
+ icon: 'list-ol',
1826
+ tooltip: { text: 'Numbers' },
1827
+ });
1828
+ }
1359
1829
  isSelected() {
1360
1830
  const selectedBlocks = this.selectionController.getSelectedBlocks();
1361
1831
  return this.isListType(selectedBlocks);
@@ -1400,14 +1870,14 @@ class NumbersToolbarButtonSlimmer extends VisualModeToolbarButtonSlimmer {
1400
1870
  }
1401
1871
  }
1402
1872
  }
1403
- __decorate$q([
1873
+ __decorate$s([
1404
1874
  MapToComponentField()
1405
1875
  ], NumbersToolbarButtonSlimmer.prototype, "selectionController", void 0);
1406
- __decorate$q([
1876
+ __decorate$s([
1407
1877
  MapToComponentField()
1408
1878
  ], NumbersToolbarButtonSlimmer.prototype, "popoverRef", void 0);
1409
1879
 
1410
- var __decorate$p = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
1880
+ var __decorate$r = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
1411
1881
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
1412
1882
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
1413
1883
  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;
@@ -1423,6 +1893,11 @@ class BulletsNumbersToolbarButtonSlimmer extends VisualModeToolbarButtonSlimmer
1423
1893
  });
1424
1894
  this.bulletsToolbarButtonSlimmer = new BulletsToolbarButtonSlimmer();
1425
1895
  this.numbersToolbarButtonSlimmer = new NumbersToolbarButtonSlimmer();
1896
+ this.listKeyboardSlimmer = new ListKeyboardSlimmer();
1897
+ }
1898
+ disconnectedCallback() {
1899
+ }
1900
+ componentDidLoad() {
1426
1901
  }
1427
1902
  componentWillRender() {
1428
1903
  if (this.numbersToolbarButtonSlimmer.isSelected()) {
@@ -1482,20 +1957,41 @@ class BulletsNumbersToolbarButtonSlimmer extends VisualModeToolbarButtonSlimmer
1482
1957
  'list-ol': ListOL,
1483
1958
  });
1484
1959
  })();
1485
- __decorate$p([
1960
+ __decorate$r([
1486
1961
  MapToComponentField()
1487
1962
  ], BulletsNumbersToolbarButtonSlimmer.prototype, "selectionController", void 0);
1488
- __decorate$p([
1963
+ __decorate$r([
1964
+ MapToComponentField()
1965
+ ], BulletsNumbersToolbarButtonSlimmer.prototype, "valueController", void 0);
1966
+ __decorate$r([
1967
+ MapToComponentField()
1968
+ ], BulletsNumbersToolbarButtonSlimmer.prototype, "value", void 0);
1969
+ __decorate$r([
1970
+ MapToComponentField()
1971
+ ], BulletsNumbersToolbarButtonSlimmer.prototype, "toolbarItems", void 0);
1972
+ __decorate$r([
1973
+ MapToComponentField()
1974
+ ], BulletsNumbersToolbarButtonSlimmer.prototype, "vegaRichTextEditorRenderer", void 0);
1975
+ __decorate$r([
1489
1976
  InjectVegaSlimmer()
1490
1977
  ], BulletsNumbersToolbarButtonSlimmer.prototype, "bulletsToolbarButtonSlimmer", void 0);
1491
- __decorate$p([
1978
+ __decorate$r([
1492
1979
  InjectVegaSlimmer()
1493
1980
  ], BulletsNumbersToolbarButtonSlimmer.prototype, "numbersToolbarButtonSlimmer", void 0);
1494
- __decorate$p([
1981
+ __decorate$r([
1982
+ InjectVegaSlimmer()
1983
+ ], BulletsNumbersToolbarButtonSlimmer.prototype, "listKeyboardSlimmer", void 0);
1984
+ __decorate$r([
1985
+ MapToComponentMethod('disconnectedCallback')
1986
+ ], BulletsNumbersToolbarButtonSlimmer.prototype, "disconnectedCallback", null);
1987
+ __decorate$r([
1988
+ MapToComponentMethod('componentDidLoad')
1989
+ ], BulletsNumbersToolbarButtonSlimmer.prototype, "componentDidLoad", null);
1990
+ __decorate$r([
1495
1991
  MapToComponentMethod('componentWillRender')
1496
1992
  ], BulletsNumbersToolbarButtonSlimmer.prototype, "componentWillRender", null);
1497
1993
 
1498
- var __decorate$o = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
1994
+ var __decorate$q = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
1499
1995
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
1500
1996
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
1501
1997
  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;
@@ -1530,14 +2026,14 @@ class LeftAlignToolbarButtonSlimmer extends VisualModeToolbarButtonSlimmer {
1530
2026
  'align-left': AlignLeft,
1531
2027
  });
1532
2028
  })();
1533
- __decorate$o([
2029
+ __decorate$q([
1534
2030
  MapToComponentField()
1535
2031
  ], LeftAlignToolbarButtonSlimmer.prototype, "selectionController", void 0);
1536
- __decorate$o([
2032
+ __decorate$q([
1537
2033
  MapToComponentField()
1538
2034
  ], LeftAlignToolbarButtonSlimmer.prototype, "popoverRef", void 0);
1539
2035
 
1540
- var __decorate$n = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
2036
+ var __decorate$p = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
1541
2037
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
1542
2038
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
1543
2039
  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;
@@ -1572,14 +2068,14 @@ class CenterAlignToolbarButtonSlimmer extends VisualModeToolbarButtonSlimmer {
1572
2068
  'align-center': AlignCenter,
1573
2069
  });
1574
2070
  })();
1575
- __decorate$n([
2071
+ __decorate$p([
1576
2072
  MapToComponentField()
1577
2073
  ], CenterAlignToolbarButtonSlimmer.prototype, "selectionController", void 0);
1578
- __decorate$n([
2074
+ __decorate$p([
1579
2075
  MapToComponentField()
1580
2076
  ], CenterAlignToolbarButtonSlimmer.prototype, "popoverRef", void 0);
1581
2077
 
1582
- var __decorate$m = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
2078
+ var __decorate$o = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
1583
2079
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
1584
2080
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
1585
2081
  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;
@@ -1614,14 +2110,14 @@ class RightAlignToolbarButtonSlimmer extends VisualModeToolbarButtonSlimmer {
1614
2110
  'align-right': AlignRight,
1615
2111
  });
1616
2112
  })();
1617
- __decorate$m([
2113
+ __decorate$o([
1618
2114
  MapToComponentField()
1619
2115
  ], RightAlignToolbarButtonSlimmer.prototype, "selectionController", void 0);
1620
- __decorate$m([
2116
+ __decorate$o([
1621
2117
  MapToComponentField()
1622
2118
  ], RightAlignToolbarButtonSlimmer.prototype, "popoverRef", void 0);
1623
2119
 
1624
- var __decorate$l = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
2120
+ var __decorate$n = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
1625
2121
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
1626
2122
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
1627
2123
  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;
@@ -1656,14 +2152,14 @@ class JustifyAlignToolbarButtonSlimmer extends VisualModeToolbarButtonSlimmer {
1656
2152
  'align-justify': AlignJustify,
1657
2153
  });
1658
2154
  })();
1659
- __decorate$l([
2155
+ __decorate$n([
1660
2156
  MapToComponentField()
1661
2157
  ], JustifyAlignToolbarButtonSlimmer.prototype, "selectionController", void 0);
1662
- __decorate$l([
2158
+ __decorate$n([
1663
2159
  MapToComponentField()
1664
2160
  ], JustifyAlignToolbarButtonSlimmer.prototype, "popoverRef", void 0);
1665
2161
 
1666
- var __decorate$k = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
2162
+ var __decorate$m = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
1667
2163
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
1668
2164
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
1669
2165
  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;
@@ -1721,22 +2217,22 @@ class HorizontalAlignmentToolbarButtonSlimmer extends VisualModeToolbarButtonSli
1721
2217
  .some((block) => this.shouldDisabledToolbar(block, HorizontalAlignmentAnnotationAction.name)));
1722
2218
  }
1723
2219
  }
1724
- __decorate$k([
2220
+ __decorate$m([
1725
2221
  MapToComponentField()
1726
2222
  ], HorizontalAlignmentToolbarButtonSlimmer.prototype, "selectionController", void 0);
1727
- __decorate$k([
2223
+ __decorate$m([
1728
2224
  InjectVegaSlimmer()
1729
2225
  ], HorizontalAlignmentToolbarButtonSlimmer.prototype, "leftAlignToolbarButtonSlimmer", void 0);
1730
- __decorate$k([
2226
+ __decorate$m([
1731
2227
  InjectVegaSlimmer()
1732
2228
  ], HorizontalAlignmentToolbarButtonSlimmer.prototype, "centerAlignToolbarButtonSlimmer", void 0);
1733
- __decorate$k([
2229
+ __decorate$m([
1734
2230
  InjectVegaSlimmer()
1735
2231
  ], HorizontalAlignmentToolbarButtonSlimmer.prototype, "rightAlignToolbarButtonSlimmer", void 0);
1736
- __decorate$k([
2232
+ __decorate$m([
1737
2233
  InjectVegaSlimmer()
1738
2234
  ], HorizontalAlignmentToolbarButtonSlimmer.prototype, "justifiedToolbarButtonSlimmer", void 0);
1739
- __decorate$k([
2235
+ __decorate$m([
1740
2236
  MapToComponentMethod('componentWillRender')
1741
2237
  ], HorizontalAlignmentToolbarButtonSlimmer.prototype, "componentWillRender", null);
1742
2238
 
@@ -1777,7 +2273,7 @@ class RTEEditorState {
1777
2273
  }
1778
2274
  }
1779
2275
 
1780
- var __decorate$j = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
2276
+ var __decorate$l = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
1781
2277
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
1782
2278
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
1783
2279
  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;
@@ -1863,37 +2359,37 @@ class ValueController extends VegaSlimmer {
1863
2359
  }
1864
2360
  }
1865
2361
  ValueController.VALUE_CHANGE_DEBOUNCE_TIME = 50;
1866
- __decorate$j([
2362
+ __decorate$l([
1867
2363
  MapToComponentField()
1868
2364
  ], ValueController.prototype, "host", void 0);
1869
- __decorate$j([
2365
+ __decorate$l([
1870
2366
  MapToComponentField({ writable: true })
1871
2367
  ], ValueController.prototype, "value", void 0);
1872
- __decorate$j([
2368
+ __decorate$l([
1873
2369
  MapToComponentField()
1874
2370
  ], ValueController.prototype, "changeEventEmitter", void 0);
1875
- __decorate$j([
2371
+ __decorate$l([
1876
2372
  MapToComponentField()
1877
2373
  ], ValueController.prototype, "valueController", void 0);
1878
- __decorate$j([
2374
+ __decorate$l([
1879
2375
  MapToComponentField()
1880
2376
  ], ValueController.prototype, "historyController", void 0);
1881
- __decorate$j([
2377
+ __decorate$l([
1882
2378
  MapToComponentField()
1883
2379
  ], ValueController.prototype, "selectionController", void 0);
1884
- __decorate$j([
2380
+ __decorate$l([
1885
2381
  MapToComponentField()
1886
2382
  ], ValueController.prototype, "sourceEditConfig", void 0);
1887
- __decorate$j([
2383
+ __decorate$l([
1888
2384
  MapToComponentMethod('connectedCallback')
1889
2385
  ], ValueController.prototype, "connectedCallback", null);
1890
- __decorate$j([
2386
+ __decorate$l([
1891
2387
  MapToComponentMethod('disconnectedCallback')
1892
2388
  ], ValueController.prototype, "disconnectedCallback", null);
1893
- __decorate$j([
2389
+ __decorate$l([
1894
2390
  MapToComponentMethod('componentWillLoad')
1895
2391
  ], ValueController.prototype, "componentWillLoad", null);
1896
- __decorate$j([
2392
+ __decorate$l([
1897
2393
  MapToComponentMethod('watchValueUpdate')
1898
2394
  ], ValueController.prototype, "watchValueUpdate", null);
1899
2395
 
@@ -1922,7 +2418,7 @@ class BaseHandler {
1922
2418
  * @param {VegaRTEContent} currentState - The current state of the VegaRTE content.
1923
2419
  * @param {SelectionController} selectionController - Manages the selection of items in the user interface.
1924
2420
  * @param {HTMLElement} richTextEditor - The current rich text editor component
1925
- * @param {InputEvent} [event] - It is used to pass an input event to the method for handling.
2421
+ * @param {Event} [event] - It is used to pass an input event to the method for handling.
1926
2422
  */
1927
2423
  execute(currentState, selectionController, richTextEditor, event) {
1928
2424
  this.initCurrentStateAndSelection(currentState, selectionController);
@@ -2381,11 +2877,25 @@ class AbstractDeleteContentHandler extends BaseHandler {
2381
2877
  * @returns {Nullable<RTENode>} The next node, or null when the given node is the last node of the content.
2382
2878
  */
2383
2879
  getNextNode(node) {
2880
+ var _a;
2384
2881
  const block = node.parent;
2385
2882
  const nodeIndex = block.children.indexOf(node);
2386
2883
  if (nodeIndex >= 0 && nodeIndex < block.children.length - 1) {
2387
2884
  return block.children[nodeIndex + 1];
2388
2885
  }
2886
+ // When the caret is at the end of a list item that owns nested lists, the next
2887
+ // caret position is the first node of the first non-empty nested list, not the following sibling
2888
+ // block. Descend into the item's own nestList before ascending to siblings so that
2889
+ // a forward delete merges the first nested item up instead of skipping the whole
2890
+ // nested list and merging the following sibling into the deepest nested item.
2891
+ if (block.isListItemBlock() && ((_a = block.nestList) === null || _a === void 0 ? void 0 : _a.length)) {
2892
+ for (const nestedList of block.nestList) {
2893
+ const firstNestedNode = nestedList.getFirstNode();
2894
+ if (firstNestedNode) {
2895
+ return firstNestedNode;
2896
+ }
2897
+ }
2898
+ }
2389
2899
  const nextBlock = this.getNextBlock(block);
2390
2900
  return nextBlock ? nextBlock.getFirstNode() : null;
2391
2901
  }
@@ -2396,10 +2906,25 @@ class AbstractDeleteContentHandler extends BaseHandler {
2396
2906
  * @returns {Nullable<RTEBlock>} The next block, or null when the given block is the last block of the content.
2397
2907
  */
2398
2908
  getNextBlock(block) {
2909
+ var _a, _b;
2399
2910
  const parent = block.parent;
2400
2911
  if (!parent || !parent.children) {
2401
2912
  return null;
2402
2913
  }
2914
+ // Nested lists are owned through a list item's nestList collection rather than
2915
+ // its children collection. Traverse the remaining nested-list branches before
2916
+ // ascending to the owning item and its following siblings.
2917
+ if (parent instanceof RTEBlock && parent.isListItemBlock()) {
2918
+ const nestedListIndex = ((_a = parent.nestList) !== null && _a !== void 0 ? _a : []).indexOf(block);
2919
+ if (nestedListIndex >= 0) {
2920
+ for (const nestedList of ((_b = parent.nestList) !== null && _b !== void 0 ? _b : []).slice(nestedListIndex + 1)) {
2921
+ if (nestedList.getFirstNode()) {
2922
+ return nestedList;
2923
+ }
2924
+ }
2925
+ return this.getNextBlock(parent);
2926
+ }
2927
+ }
2403
2928
  const siblings = parent.children;
2404
2929
  const blockIndex = siblings.indexOf(block);
2405
2930
  if (blockIndex >= 0 && siblings[blockIndex + 1]) {
@@ -3065,7 +3590,300 @@ class InsertPasteHandler extends BaseHandler {
3065
3590
  }
3066
3591
  }
3067
3592
 
3068
- var __decorate$i = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
3593
+ /**
3594
+ * Handles keyboard-based rich text link interactions (Escape close, Tab into the link popover, and
3595
+ * the Command/Control+K open shortcut). Follows the input-event handler workflow so the keyboard
3596
+ * link logic stays consistent with the other RTE handlers.
3597
+ */
3598
+ class KeyboardLinkHandler extends BaseHandler {
3599
+ constructor() {
3600
+ super(...arguments);
3601
+ this.activeLinkEditor = null;
3602
+ this.activeLinkWrapper = null;
3603
+ this.linkPopoverHideHandler = null;
3604
+ this.linkPopoverHideOwner = null;
3605
+ }
3606
+ /**
3607
+ * Handles keyboard shortcuts for link popover open, close, and focus behavior.
3608
+ *
3609
+ * @param {KeyboardEvent} [event] - The keydown event fired from the editor.
3610
+ */
3611
+ handleEvent(event) {
3612
+ if (!event) {
3613
+ return;
3614
+ }
3615
+ if (event.key === 'Escape') {
3616
+ if (this.activeLinkEditor) {
3617
+ event.preventDefault();
3618
+ event.stopPropagation();
3619
+ void this.activeLinkEditor.hide();
3620
+ return;
3621
+ }
3622
+ const linkWrapper = this.getFocusedLinkWrapper(event.target);
3623
+ const linkEditor = this.getLinkEditorFromWrapper(linkWrapper);
3624
+ if (linkEditor) {
3625
+ event.preventDefault();
3626
+ event.stopPropagation();
3627
+ void linkEditor.hide();
3628
+ return;
3629
+ }
3630
+ }
3631
+ const linkWrapper = this.getFocusedLinkWrapper(event.target);
3632
+ if (event.key === 'Tab' && !event.shiftKey && this.focusVisibleLinkPopoverAction(linkWrapper)) {
3633
+ event.preventDefault();
3634
+ event.stopPropagation();
3635
+ const linkEditor = this.getLinkEditorFromWrapper(linkWrapper) || this.activeLinkEditor;
3636
+ if (linkWrapper && linkEditor) {
3637
+ this.registerLinkPopoverHideHandler(linkEditor, () => {
3638
+ this.handleLinkPopoverHide(linkEditor, linkWrapper);
3639
+ });
3640
+ }
3641
+ return;
3642
+ }
3643
+ const isOpenLinkShortcut = (event.metaKey || event.ctrlKey) && event.key.toLowerCase() === 'k';
3644
+ if (!isOpenLinkShortcut || !linkWrapper) {
3645
+ return;
3646
+ }
3647
+ event.preventDefault();
3648
+ event.stopPropagation();
3649
+ const linkEditor = linkWrapper.querySelector('vega-rich-text-link-editor');
3650
+ if (!linkEditor) {
3651
+ return;
3652
+ }
3653
+ this.activeLinkEditor = linkEditor;
3654
+ this.activeLinkWrapper = linkWrapper;
3655
+ this.registerLinkPopoverHideHandler(linkEditor, () => {
3656
+ this.handleLinkPopoverHide(linkEditor, linkWrapper);
3657
+ });
3658
+ void linkEditor.show();
3659
+ }
3660
+ /**
3661
+ * Releases any registered popover-hide listener when the owning controller is torn down.
3662
+ */
3663
+ dispose() {
3664
+ this.unregisterLinkPopoverHideHandler();
3665
+ }
3666
+ /**
3667
+ * Registers a one-time hide listener on the currently open link editor popover.
3668
+ *
3669
+ * @param {Nullable<HTMLElement>} linkEditor - Link editor that owns the popover.
3670
+ * @param {EventListener} handler - Callback invoked when the popover hides.
3671
+ */
3672
+ registerLinkPopoverHideHandler(linkEditor, handler) {
3673
+ const linkPopoverHideOwner = this.getLinkEditorPopover(linkEditor);
3674
+ if (!linkPopoverHideOwner) {
3675
+ return;
3676
+ }
3677
+ this.unregisterLinkPopoverHideHandler();
3678
+ this.linkPopoverHideHandler = this.onLinkPopoverHide.bind(this, handler);
3679
+ this.linkPopoverHideOwner = linkPopoverHideOwner;
3680
+ linkPopoverHideOwner.addEventListener('vegaPopoverHide', this.linkPopoverHideHandler, {
3681
+ once: true,
3682
+ });
3683
+ }
3684
+ /**
3685
+ * Executes the registered popover-hide callback and clears hide-listener state.
3686
+ *
3687
+ * @param {EventListener} handler - Registered callback for popover hide.
3688
+ * @param {Event} event - Hide event payload.
3689
+ */
3690
+ onLinkPopoverHide(handler, event) {
3691
+ handler(event);
3692
+ this.linkPopoverHideHandler = null;
3693
+ this.linkPopoverHideOwner = null;
3694
+ }
3695
+ /**
3696
+ * Removes the currently registered popover hide listener if present.
3697
+ */
3698
+ unregisterLinkPopoverHideHandler() {
3699
+ if (this.linkPopoverHideOwner && this.linkPopoverHideHandler) {
3700
+ this.linkPopoverHideOwner.removeEventListener('vegaPopoverHide', this.linkPopoverHideHandler);
3701
+ }
3702
+ this.linkPopoverHideHandler = null;
3703
+ this.linkPopoverHideOwner = null;
3704
+ }
3705
+ /**
3706
+ * Resolves the closest focused link wrapper from event target or current selection.
3707
+ *
3708
+ * @param {EventTarget | null} target - Event target from the keydown event.
3709
+ * @returns {Nullable<HTMLElement>} Link wrapper element if found.
3710
+ */
3711
+ getFocusedLinkWrapper(target) {
3712
+ var _a;
3713
+ const targetElement = target && target.nodeType === Node.ELEMENT_NODE ? target : null;
3714
+ if (targetElement) {
3715
+ const directWrapper = targetElement.classList.contains('link-editor-wrapper')
3716
+ ? targetElement
3717
+ : findParent(targetElement, '.link-editor-wrapper');
3718
+ if (directWrapper) {
3719
+ return directWrapper;
3720
+ }
3721
+ }
3722
+ const anchorNode = ((_a = this.selectionController.getSelection()) === null || _a === void 0 ? void 0 : _a.anchorNode) || null;
3723
+ const anchorElement = (anchorNode === null || anchorNode === void 0 ? void 0 : anchorNode.nodeType) === Node.ELEMENT_NODE
3724
+ ? anchorNode
3725
+ : (anchorNode === null || anchorNode === void 0 ? void 0 : anchorNode.parentElement) || null;
3726
+ if (!anchorElement) {
3727
+ return null;
3728
+ }
3729
+ return anchorElement.classList.contains('link-editor-wrapper')
3730
+ ? anchorElement
3731
+ : findParent(anchorElement, '.link-editor-wrapper');
3732
+ }
3733
+ /**
3734
+ * Finds the link editor element inside a link wrapper.
3735
+ *
3736
+ * @typedef HTMLVegaRichTextLinkEditorElement - The type of the link editor element.
3737
+ * @param {Nullable<HTMLElement>} linkWrapper - Wrapper that may contain the link editor component.
3738
+ * @returns {Nullable<HTMLVegaRichTextLinkEditorElement>} Link editor if present.
3739
+ */
3740
+ getLinkEditorFromWrapper(linkWrapper) {
3741
+ return ((linkWrapper === null || linkWrapper === void 0 ? void 0 : linkWrapper.querySelector('vega-rich-text-link-editor')) ||
3742
+ null);
3743
+ }
3744
+ /**
3745
+ * Gets the popover element rendered by a link editor.
3746
+ *
3747
+ * @param {Nullable<HTMLElement>} linkEditor - Link editor owning the popover.
3748
+ * @returns {Nullable<LinkEditorPopoverElement>} Popover element when available.
3749
+ */
3750
+ getLinkEditorPopover(linkEditor) {
3751
+ var _a;
3752
+ return ((_a = linkEditor === null || linkEditor === void 0 ? void 0 : linkEditor.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('vega-popover')) || null;
3753
+ }
3754
+ /**
3755
+ * Returns the popover content box associated with a link editor.
3756
+ *
3757
+ * @param {Nullable<HTMLElement>} linkEditor - Link editor owning the popover.
3758
+ * @returns {Nullable<HTMLElement>} Popover content box element.
3759
+ */
3760
+ getLinkEditorPopoverContentBox(linkEditor) {
3761
+ var _a, _b;
3762
+ const popover = this.getLinkEditorPopover(linkEditor);
3763
+ return ((_b = (_a = popover === null || popover === void 0 ? void 0 : popover.appenderRenderer) === null || _a === void 0 ? void 0 : _a.getPopoverContentBox) === null || _b === void 0 ? void 0 : _b.call(_a)) || null;
3764
+ }
3765
+ /**
3766
+ * Clears active link editor state and restores focus to the provided wrapper.
3767
+ *
3768
+ * @param {Nullable<HTMLElement>} linkEditor - Link editor that has just hidden.
3769
+ * @param {Nullable<HTMLElement>} [focusTarget] - Optional element to receive focus.
3770
+ */
3771
+ handleLinkPopoverHide(linkEditor, focusTarget) {
3772
+ const resolvedFocusTarget = focusTarget || this.activeLinkWrapper;
3773
+ if (!linkEditor || this.activeLinkEditor === linkEditor) {
3774
+ this.activeLinkEditor = null;
3775
+ this.activeLinkWrapper = null;
3776
+ }
3777
+ if (resolvedFocusTarget) {
3778
+ this.placeLinkCaretAtEnd(resolvedFocusTarget);
3779
+ }
3780
+ }
3781
+ /**
3782
+ * Focuses the first visible link action in the current link popover.
3783
+ *
3784
+ * @param {Nullable<HTMLElement>} [linkWrapper] - Optional focused link wrapper context.
3785
+ * @returns {boolean} True when focus moved to an action button.
3786
+ */
3787
+ focusVisibleLinkPopoverAction(linkWrapper) {
3788
+ var _a;
3789
+ const ownerDocument = ((_a = this.richTextEditorRef) === null || _a === void 0 ? void 0 : _a.ownerDocument) || null;
3790
+ if (!ownerDocument) {
3791
+ return false;
3792
+ }
3793
+ const linkEditor = this.getLinkEditorFromWrapper(linkWrapper || null) || this.activeLinkEditor;
3794
+ const popoverContentBox = this.getPreferredLinkActionPopover(ownerDocument, linkEditor);
3795
+ if (!popoverContentBox) {
3796
+ return false;
3797
+ }
3798
+ const focusableActionButton = this.getFirstFocusableLinkActionButton(popoverContentBox);
3799
+ if (!focusableActionButton) {
3800
+ return false;
3801
+ }
3802
+ focusableActionButton.focus();
3803
+ return true;
3804
+ }
3805
+ /**
3806
+ * Prefers a scoped link-action popover and falls back to globally visible ones.
3807
+ *
3808
+ * @param {Document} ownerDocument - Document owning editor popovers.
3809
+ * @param {Nullable<HTMLElement>} [linkEditor] - Optional scoped link editor.
3810
+ * @returns {Nullable<HTMLElement>} Best popover content box to target.
3811
+ */
3812
+ getPreferredLinkActionPopover(ownerDocument, linkEditor) {
3813
+ const scopedPopoverContentBox = this.getLinkEditorPopoverContentBox(linkEditor || null);
3814
+ if (scopedPopoverContentBox &&
3815
+ !scopedPopoverContentBox.classList.contains('vega-force-hidden') &&
3816
+ this.isLinkActionPopover(scopedPopoverContentBox)) {
3817
+ return scopedPopoverContentBox;
3818
+ }
3819
+ const popoverContentBoxes = Array.from(ownerDocument.querySelectorAll('vega-popover-content-box'));
3820
+ const linkActionPopovers = popoverContentBoxes.filter((box) => this.isLinkActionPopover(box));
3821
+ const visibleLinkActionPopovers = linkActionPopovers.filter((box) => !box.classList.contains('vega-force-hidden'));
3822
+ return visibleLinkActionPopovers[visibleLinkActionPopovers.length - 1] || null;
3823
+ }
3824
+ /**
3825
+ * Checks whether a popover represents the link action menu.
3826
+ *
3827
+ * @param {HTMLElement} popoverContentBox - Popover content box to inspect.
3828
+ * @returns {boolean} True when both edit and unlink actions exist.
3829
+ */
3830
+ isLinkActionPopover(popoverContentBox) {
3831
+ const items = Array.from(popoverContentBox.querySelectorAll('vega-button-group-item'));
3832
+ const hasEditAction = items.some((item) => item.itemKey === 'edit');
3833
+ const hasUnlinkAction = items.some((item) => item.itemKey === 'unlink');
3834
+ return hasEditAction && hasUnlinkAction;
3835
+ }
3836
+ /**
3837
+ * Gets the preferred focusable element from the first link action item.
3838
+ *
3839
+ * @param {HTMLElement} popoverContentBox - Link action popover content box.
3840
+ * @returns {Nullable<HTMLElement>} Focusable anchor or button element.
3841
+ */
3842
+ getFirstFocusableLinkActionButton(popoverContentBox) {
3843
+ var _a, _b, _c, _d;
3844
+ const allItems = Array.from(popoverContentBox.querySelectorAll('vega-button-group-item'));
3845
+ const firstActionItem = allItems.find((item) => item.itemKey === 'edit') ||
3846
+ allItems[0] ||
3847
+ null;
3848
+ if (!firstActionItem) {
3849
+ return null;
3850
+ }
3851
+ const firstActionLinkWrapper = ((_a = firstActionItem.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('vega-button-link')) || null;
3852
+ const firstActionButtonWrapper = ((_b = firstActionItem.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('vega-button')) || null;
3853
+ return (((_c = firstActionLinkWrapper === null || firstActionLinkWrapper === void 0 ? void 0 : firstActionLinkWrapper.shadowRoot) === null || _c === void 0 ? void 0 : _c.querySelector('a')) ||
3854
+ ((_d = firstActionButtonWrapper === null || firstActionButtonWrapper === void 0 ? void 0 : firstActionButtonWrapper.shadowRoot) === null || _d === void 0 ? void 0 : _d.querySelector('button')) ||
3855
+ null);
3856
+ }
3857
+ /**
3858
+ * Places the editor caret at the end of the link when the popover closes.
3859
+ *
3860
+ * @param {Nullable<HTMLElement>} linkWrapper - The link wrapper element containing link text nodes.
3861
+ */
3862
+ placeLinkCaretAtEnd(linkWrapper) {
3863
+ var _a;
3864
+ if (!linkWrapper) {
3865
+ return;
3866
+ }
3867
+ const allTextSpans = Array.from(linkWrapper.querySelectorAll('span'));
3868
+ if (allTextSpans.length === 0) {
3869
+ return;
3870
+ }
3871
+ const lastTextSpan = allTextSpans[allTextSpans.length - 1];
3872
+ const lastNodeEntity = stateEntityRenderingRegistry.getEntityByDOM(lastTextSpan);
3873
+ if (!lastNodeEntity || lastNodeEntity instanceof RTEBlock) {
3874
+ return;
3875
+ }
3876
+ if (!(lastNodeEntity instanceof RTETextNode)) {
3877
+ return;
3878
+ }
3879
+ const lastNode = lastNodeEntity;
3880
+ const endOffset = ((_a = lastNode.text) === null || _a === void 0 ? void 0 : _a.length) || 0;
3881
+ // Place caret at the end of the link when popover closes
3882
+ this.selectionController.enqueueSelectionRangeFutureState(lastNode, endOffset, lastNode, endOffset, true);
3883
+ }
3884
+ }
3885
+
3886
+ var __decorate$k = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
3069
3887
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3070
3888
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
3071
3889
  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;
@@ -3081,6 +3899,15 @@ class UserInputController extends VegaSlimmer {
3081
3899
  this.forwardDeleteContentHandler = new ForwardDeleteContentHandler();
3082
3900
  this.backwardDeleteContentHandler = new BackwardDeleteContentHandler();
3083
3901
  this.insertPasteHandler = new InsertPasteHandler();
3902
+ this.keyboardLinkHandler = new KeyboardLinkHandler();
3903
+ /**
3904
+ * Dispatches editor keydown events to the keyboard link handler using the shared handler workflow.
3905
+ *
3906
+ * @param {KeyboardEvent} event - The keydown event fired from the editor.
3907
+ */
3908
+ this.handleKeyboardAction = (event) => {
3909
+ this.keyboardLinkHandler.execute(this.value, this.selectionController, this.host, event);
3910
+ };
3084
3911
  /**
3085
3912
  * When a user performs an input action within the editable element, this function is triggered.
3086
3913
  *
@@ -3135,6 +3962,7 @@ class UserInputController extends VegaSlimmer {
3135
3962
  const editableElement = this.getEditableElementRef();
3136
3963
  if (editableElement) {
3137
3964
  editableElement.addEventListener('beforeinput', this.handleUserInputAction);
3965
+ editableElement.addEventListener('keydown', this.handleKeyboardAction);
3138
3966
  editableElement.addEventListener('drop', this.preventDropEvent);
3139
3967
  }
3140
3968
  }
@@ -3145,8 +3973,10 @@ class UserInputController extends VegaSlimmer {
3145
3973
  const editableElement = this.getEditableElementRef();
3146
3974
  if (editableElement) {
3147
3975
  editableElement.removeEventListener('beforeinput', this.handleUserInputAction);
3976
+ editableElement.removeEventListener('keydown', this.handleKeyboardAction);
3148
3977
  editableElement.removeEventListener('drop', this.preventDropEvent);
3149
3978
  }
3979
+ this.keyboardLinkHandler.dispose();
3150
3980
  }
3151
3981
  /**
3152
3982
  * The function `getEditableElementRef` returns a reference to the editable HTMLDivElement within a rich text editor.
@@ -3197,28 +4027,28 @@ class UserInputController extends VegaSlimmer {
3197
4027
  return false;
3198
4028
  }
3199
4029
  }
3200
- __decorate$i([
4030
+ __decorate$k([
3201
4031
  MapToComponentField()
3202
4032
  ], UserInputController.prototype, "host", void 0);
3203
- __decorate$i([
4033
+ __decorate$k([
3204
4034
  MapToComponentField()
3205
4035
  ], UserInputController.prototype, "value", void 0);
3206
- __decorate$i([
4036
+ __decorate$k([
3207
4037
  MapToComponentField()
3208
4038
  ], UserInputController.prototype, "valueController", void 0);
3209
- __decorate$i([
4039
+ __decorate$k([
3210
4040
  MapToComponentField()
3211
4041
  ], UserInputController.prototype, "vegaRichTextEditorRenderer", void 0);
3212
- __decorate$i([
4042
+ __decorate$k([
3213
4043
  MapToComponentField()
3214
4044
  ], UserInputController.prototype, "selectionController", void 0);
3215
- __decorate$i([
4045
+ __decorate$k([
3216
4046
  MapToComponentField()
3217
4047
  ], UserInputController.prototype, "insertCompositionTextController", void 0);
3218
- __decorate$i([
4048
+ __decorate$k([
3219
4049
  MapToComponentMethod('componentDidLoad')
3220
4050
  ], UserInputController.prototype, "addActionListener", null);
3221
- __decorate$i([
4051
+ __decorate$k([
3222
4052
  MapToComponentMethod('disconnectedCallback')
3223
4053
  ], UserInputController.prototype, "removeActionListener", null);
3224
4054
 
@@ -3238,7 +4068,7 @@ class InsertImageToBlockAction extends ModifyContentAction {
3238
4068
  }
3239
4069
  }
3240
4070
 
3241
- var __decorate$h = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
4071
+ var __decorate$j = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
3242
4072
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3243
4073
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
3244
4074
  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;
@@ -3330,26 +4160,26 @@ class InsertImageController extends VegaSlimmer {
3330
4160
  }
3331
4161
  }
3332
4162
  }
3333
- __decorate$h([
4163
+ __decorate$j([
3334
4164
  MapToComponentField()
3335
4165
  ], InsertImageController.prototype, "selectionController", void 0);
3336
- __decorate$h([
4166
+ __decorate$j([
3337
4167
  MapToComponentField()
3338
4168
  ], InsertImageController.prototype, "value", void 0);
3339
- __decorate$h([
4169
+ __decorate$j([
3340
4170
  MapToComponentField()
3341
4171
  ], InsertImageController.prototype, "valueController", void 0);
3342
- __decorate$h([
4172
+ __decorate$j([
3343
4173
  MapToComponentField()
3344
4174
  ], InsertImageController.prototype, "vegaRichTextEditorRenderer", void 0);
3345
- __decorate$h([
4175
+ __decorate$j([
3346
4176
  MapToComponentMethod('componentDidLoad')
3347
4177
  ], InsertImageController.prototype, "registerObserver", null);
3348
- __decorate$h([
4178
+ __decorate$j([
3349
4179
  MapToComponentMethod('disconnectedCallback')
3350
4180
  ], InsertImageController.prototype, "unRegisterObserver", null);
3351
4181
 
3352
- var __decorate$g = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
4182
+ var __decorate$i = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
3353
4183
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3354
4184
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
3355
4185
  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;
@@ -3415,20 +4245,20 @@ class FocusController extends VegaSlimmer {
3415
4245
  this.selectionController.setSelectionRange(range);
3416
4246
  }
3417
4247
  }
3418
- __decorate$g([
4248
+ __decorate$i([
3419
4249
  MapToComponentField()
3420
4250
  ], FocusController.prototype, "vegaRichTextEditorRenderer", void 0);
3421
- __decorate$g([
4251
+ __decorate$i([
3422
4252
  MapToComponentField()
3423
4253
  ], FocusController.prototype, "selectionController", void 0);
3424
- __decorate$g([
4254
+ __decorate$i([
3425
4255
  MapToComponentField()
3426
4256
  ], FocusController.prototype, "valueController", void 0);
3427
- __decorate$g([
4257
+ __decorate$i([
3428
4258
  MapToComponentField()
3429
4259
  ], FocusController.prototype, "value", void 0);
3430
4260
 
3431
- var __decorate$f = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
4261
+ var __decorate$h = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
3432
4262
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3433
4263
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
3434
4264
  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;
@@ -3638,35 +4468,35 @@ class InsertCompositionTextController extends VegaSlimmer {
3638
4468
  this.editableElementRef.dispatchEvent(inputEvent);
3639
4469
  }
3640
4470
  }
3641
- __decorate$f([
4471
+ __decorate$h([
3642
4472
  MapToComponentField()
3643
4473
  ], InsertCompositionTextController.prototype, "selectionController", void 0);
3644
- __decorate$f([
4474
+ __decorate$h([
3645
4475
  MapToComponentField()
3646
4476
  ], InsertCompositionTextController.prototype, "host", void 0);
3647
- __decorate$f([
4477
+ __decorate$h([
3648
4478
  MapToComponentField()
3649
4479
  ], InsertCompositionTextController.prototype, "value", void 0);
3650
- __decorate$f([
4480
+ __decorate$h([
3651
4481
  MapToComponentField()
3652
4482
  ], InsertCompositionTextController.prototype, "valueController", void 0);
3653
- __decorate$f([
4483
+ __decorate$h([
3654
4484
  MapToComponentField()
3655
4485
  ], InsertCompositionTextController.prototype, "userInputController", void 0);
3656
- __decorate$f([
4486
+ __decorate$h([
3657
4487
  MapToComponentField()
3658
4488
  ], InsertCompositionTextController.prototype, "vegaRichTextEditorRenderer", void 0);
3659
- __decorate$f([
4489
+ __decorate$h([
3660
4490
  MapToComponentMethod('componentDidLoad')
3661
4491
  ], InsertCompositionTextController.prototype, "addCompositionTextEventListener", null);
3662
- __decorate$f([
4492
+ __decorate$h([
3663
4493
  MapToComponentMethod('disconnectedCallback')
3664
4494
  ], InsertCompositionTextController.prototype, "removeCompositionTextEventListener", null);
3665
- __decorate$f([
4495
+ __decorate$h([
3666
4496
  MapToComponentMethod('componentDidRender')
3667
4497
  ], InsertCompositionTextController.prototype, "reConnectObserver", null);
3668
4498
 
3669
- var __decorate$e = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
4499
+ var __decorate$g = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
3670
4500
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3671
4501
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
3672
4502
  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;
@@ -3875,23 +4705,23 @@ class DeleteSelectedNodesController extends VegaSlimmer {
3875
4705
  }
3876
4706
  }
3877
4707
  }
3878
- __decorate$e([
4708
+ __decorate$g([
3879
4709
  MapToComponentField()
3880
4710
  ], DeleteSelectedNodesController.prototype, "host", void 0);
3881
- __decorate$e([
4711
+ __decorate$g([
3882
4712
  MapToComponentField()
3883
4713
  ], DeleteSelectedNodesController.prototype, "selectionController", void 0);
3884
- __decorate$e([
4714
+ __decorate$g([
3885
4715
  MapToComponentField()
3886
4716
  ], DeleteSelectedNodesController.prototype, "value", void 0);
3887
- __decorate$e([
4717
+ __decorate$g([
3888
4718
  MapToComponentMethod('connectedCallback')
3889
4719
  ], DeleteSelectedNodesController.prototype, "addDeleteObserver", null);
3890
- __decorate$e([
4720
+ __decorate$g([
3891
4721
  MapToComponentMethod('disconnectedCallback')
3892
4722
  ], DeleteSelectedNodesController.prototype, "removeDeleteObserver", null);
3893
4723
 
3894
- var __decorate$d = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
4724
+ var __decorate$f = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
3895
4725
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3896
4726
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
3897
4727
  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;
@@ -3968,22 +4798,22 @@ class HistoryController extends ComponentValueHistoryControllerSlimmer {
3968
4798
  await this.valueController.flushChanges(content, false);
3969
4799
  }
3970
4800
  }
3971
- __decorate$d([
4801
+ __decorate$f([
3972
4802
  MapToComponentField()
3973
4803
  ], HistoryController.prototype, "host", void 0);
3974
- __decorate$d([
4804
+ __decorate$f([
3975
4805
  MapToComponentField()
3976
4806
  ], HistoryController.prototype, "vegaRichTextEditorRenderer", void 0);
3977
- __decorate$d([
4807
+ __decorate$f([
3978
4808
  MapToComponentField()
3979
4809
  ], HistoryController.prototype, "valueController", void 0);
3980
- __decorate$d([
4810
+ __decorate$f([
3981
4811
  MapToComponentField()
3982
4812
  ], HistoryController.prototype, "value", void 0);
3983
- __decorate$d([
4813
+ __decorate$f([
3984
4814
  MapToComponentField()
3985
4815
  ], HistoryController.prototype, "selectionController", void 0);
3986
- __decorate$d([
4816
+ __decorate$f([
3987
4817
  MapToComponentMethod('componentDidLoad')
3988
4818
  ], HistoryController.prototype, "registerInitState", null);
3989
4819
 
@@ -4004,7 +4834,7 @@ class TransformToCodeBlockAction extends ModifyContentAction {
4004
4834
  }
4005
4835
  }
4006
4836
 
4007
- var __decorate$c = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
4837
+ var __decorate$e = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
4008
4838
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4009
4839
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4010
4840
  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;
@@ -4060,13 +4890,13 @@ class CodeBlockToolbarButtonSlimmer extends VisualModeToolbarButtonSlimmer {
4060
4890
  (() => {
4061
4891
  VegaInternalIconManager.register({ 'rectangle-code': rectangleCode });
4062
4892
  })();
4063
- __decorate$c([
4893
+ __decorate$e([
4064
4894
  MapToComponentField()
4065
4895
  ], CodeBlockToolbarButtonSlimmer.prototype, "selectionController", void 0);
4066
- __decorate$c([
4896
+ __decorate$e([
4067
4897
  MapToComponentField()
4068
4898
  ], CodeBlockToolbarButtonSlimmer.prototype, "valueController", void 0);
4069
- __decorate$c([
4899
+ __decorate$e([
4070
4900
  MapToComponentField()
4071
4901
  ], CodeBlockToolbarButtonSlimmer.prototype, "value", void 0);
4072
4902
 
@@ -4074,7 +4904,7 @@ const undoIcon = {
4074
4904
  icon: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Pro 7.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2026 Fonticons, Inc. --><path fill="currentColor" d="M464 424c0 13.3 10.7 24 24 24s24-10.7 24-24l0-96c0-53-43-96-96-96l-334.1 0 95-95c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0L7 239c-4.5 4.5-7 10.6-7 17s2.5 12.5 7 17L143 409c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-95-95 334.1 0c26.5 0 48 21.5 48 48l0 96z"/></svg>`,
4075
4905
  };
4076
4906
 
4077
- var __decorate$b = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
4907
+ var __decorate$d = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
4078
4908
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4079
4909
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4080
4910
  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;
@@ -4103,7 +4933,7 @@ class UndoToolbarButtonSlimmer extends VisualModeToolbarButtonSlimmer {
4103
4933
  (() => {
4104
4934
  VegaInternalIconManager.register({ 'arrow-turn-left': undoIcon });
4105
4935
  })();
4106
- __decorate$b([
4936
+ __decorate$d([
4107
4937
  MapToComponentField()
4108
4938
  ], UndoToolbarButtonSlimmer.prototype, "historyController", void 0);
4109
4939
 
@@ -4111,7 +4941,7 @@ const redoIcon = {
4111
4941
  icon: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Pro 7.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2026 Fonticons, Inc. --><path fill="currentColor" d="M48 424c0 13.3-10.7 24-24 24S0 437.3 0 424l0-96c0-53 43-96 96-96l334.1 0-95-95c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0L505 239c4.5 4.5 7 10.6 7 17s-2.5 12.5-7 17L369 409c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l95-95-334.1 0c-26.5 0-48 21.5-48 48l0 96z"/></svg>`,
4112
4942
  };
4113
4943
 
4114
- var __decorate$a = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
4944
+ var __decorate$c = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
4115
4945
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4116
4946
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4117
4947
  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;
@@ -4140,7 +4970,7 @@ class RedoToolbarButtonSlimmer extends VisualModeToolbarButtonSlimmer {
4140
4970
  (() => {
4141
4971
  VegaInternalIconManager.register({ 'arrow-turn-right': redoIcon });
4142
4972
  })();
4143
- __decorate$a([
4973
+ __decorate$c([
4144
4974
  MapToComponentField()
4145
4975
  ], RedoToolbarButtonSlimmer.prototype, "historyController", void 0);
4146
4976
 
@@ -4211,7 +5041,7 @@ const displayCode = {
4211
5041
  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="M512 48c8.8 0 16 7.2 16 16V352c0 8.8-7.2 16-16 16H336.5c-.3 0-.6 0-.8 0H240.4c-.3 0-.6 0-.8 0H64c-8.8 0-16-7.2-16-16V64c0-8.8 7.2-16 16-16H512zM64 416H211.7l-8 48H152c-13.3 0-24 10.7-24 24s10.7 24 24 24h72H352h72c13.3 0 24-10.7 24-24s-10.7-24-24-24H372.3l-8-48H512c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H64C28.7 0 0 28.7 0 64V352c0 35.3 28.7 64 64 64zm188.3 48l8-48h55.3l8 48H252.3zM249 177c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-48 48c-9.4 9.4-9.4 24.6 0 33.9l48 48c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-31-31 31-31zM361 143c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l31 31-31 31c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l48-48c9.4-9.4 9.4-24.6 0-33.9l-48-48z"/></svg>`,
4212
5042
  };
4213
5043
 
4214
- var __decorate$9 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
5044
+ var __decorate$b = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
4215
5045
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4216
5046
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4217
5047
  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;
@@ -4259,26 +5089,26 @@ class SourceEditToolbarButtonSlimmer extends ToolbarButtonSlimmer {
4259
5089
  (() => {
4260
5090
  VegaInternalIconManager.register({ 'display-code': displayCode });
4261
5091
  })();
4262
- __decorate$9([
5092
+ __decorate$b([
4263
5093
  MapToComponentField({ writable: true })
4264
5094
  ], SourceEditToolbarButtonSlimmer.prototype, "sourceView", void 0);
4265
- __decorate$9([
5095
+ __decorate$b([
4266
5096
  MapToComponentField()
4267
5097
  ], SourceEditToolbarButtonSlimmer.prototype, "selectionController", void 0);
4268
- __decorate$9([
5098
+ __decorate$b([
4269
5099
  MapToComponentField()
4270
5100
  ], SourceEditToolbarButtonSlimmer.prototype, "valueController", void 0);
4271
- __decorate$9([
5101
+ __decorate$b([
4272
5102
  MapToComponentField()
4273
5103
  ], SourceEditToolbarButtonSlimmer.prototype, "richTextEditorSourceViewRenderer", void 0);
4274
- __decorate$9([
5104
+ __decorate$b([
4275
5105
  MapToComponentField()
4276
5106
  ], SourceEditToolbarButtonSlimmer.prototype, "sourceEditConfig", void 0);
4277
- __decorate$9([
5107
+ __decorate$b([
4278
5108
  MapToComponentField()
4279
5109
  ], SourceEditToolbarButtonSlimmer.prototype, "value", void 0);
4280
5110
 
4281
- var __decorate$8 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
5111
+ var __decorate$a = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
4282
5112
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4283
5113
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4284
5114
  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;
@@ -4393,31 +5223,31 @@ class RTEExtensionController extends VegaSlimmer {
4393
5223
  };
4394
5224
  }
4395
5225
  }
4396
- __decorate$8([
5226
+ __decorate$a([
4397
5227
  MapToComponentField()
4398
5228
  ], RTEExtensionController.prototype, "extensions", void 0);
4399
- __decorate$8([
5229
+ __decorate$a([
4400
5230
  MapToComponentField()
4401
5231
  ], RTEExtensionController.prototype, "host", void 0);
4402
- __decorate$8([
5232
+ __decorate$a([
4403
5233
  MapToComponentField()
4404
5234
  ], RTEExtensionController.prototype, "sourceView", void 0);
4405
- __decorate$8([
5235
+ __decorate$a([
4406
5236
  MapToComponentField()
4407
5237
  ], RTEExtensionController.prototype, "valueController", void 0);
4408
- __decorate$8([
5238
+ __decorate$a([
4409
5239
  MapToComponentField()
4410
5240
  ], RTEExtensionController.prototype, "selectionController", void 0);
4411
- __decorate$8([
5241
+ __decorate$a([
4412
5242
  MapToComponentMethod('componentWillLoad')
4413
5243
  ], RTEExtensionController.prototype, "prepareExtensionsBeforeLoad", null);
4414
- __decorate$8([
5244
+ __decorate$a([
4415
5245
  MapToComponentMethod('componentDidLoad')
4416
5246
  ], RTEExtensionController.prototype, "initialExtensionContext", null);
4417
- __decorate$8([
5247
+ __decorate$a([
4418
5248
  MapToComponentMethod('disconnectedCallback')
4419
5249
  ], RTEExtensionController.prototype, "destroyExtension", null);
4420
- __decorate$8([
5250
+ __decorate$a([
4421
5251
  MapToComponentMethod('watchExtensions')
4422
5252
  ], RTEExtensionController.prototype, "handleExtensionsChange", null);
4423
5253
 
@@ -4588,7 +5418,7 @@ CodeFormatter.VOID_TAGS = new Set([
4588
5418
  CodeFormatter.PRESERVE_CONTENT_TAGS = new Set(['pre']);
4589
5419
  const CodeFormatter$1 = new CodeFormatter();
4590
5420
 
4591
- var __decorate$7 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
5421
+ var __decorate$9 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
4592
5422
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4593
5423
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4594
5424
  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;
@@ -4688,34 +5518,34 @@ class VegaRichTextEditorSourceViewRenderer extends VegaSlimmer {
4688
5518
  });
4689
5519
  }
4690
5520
  }
4691
- __decorate$7([
5521
+ __decorate$9([
4692
5522
  MapToComponentField()
4693
5523
  ], VegaRichTextEditorSourceViewRenderer.prototype, "host", void 0);
4694
- __decorate$7([
5524
+ __decorate$9([
4695
5525
  MapToComponentField()
4696
5526
  ], VegaRichTextEditorSourceViewRenderer.prototype, "allowSourceEdit", void 0);
4697
- __decorate$7([
5527
+ __decorate$9([
4698
5528
  MapToComponentField()
4699
5529
  ], VegaRichTextEditorSourceViewRenderer.prototype, "sourceView", void 0);
4700
- __decorate$7([
5530
+ __decorate$9([
4701
5531
  MapToComponentField()
4702
5532
  ], VegaRichTextEditorSourceViewRenderer.prototype, "value", void 0);
4703
- __decorate$7([
5533
+ __decorate$9([
4704
5534
  MapToComponentField()
4705
5535
  ], VegaRichTextEditorSourceViewRenderer.prototype, "disabled", void 0);
4706
- __decorate$7([
5536
+ __decorate$9([
4707
5537
  MapToComponentField()
4708
5538
  ], VegaRichTextEditorSourceViewRenderer.prototype, "sourceEditConfig", void 0);
4709
- __decorate$7([
5539
+ __decorate$9([
4710
5540
  MapToComponentField()
4711
5541
  ], VegaRichTextEditorSourceViewRenderer.prototype, "sourceCodeChangeEventEmitter", void 0);
4712
- __decorate$7([
5542
+ __decorate$9([
4713
5543
  MapToComponentMethod('disconnectedCallback')
4714
5544
  ], VegaRichTextEditorSourceViewRenderer.prototype, "clearCodeBlockBlurObserver", null);
4715
5545
 
4716
5546
  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;color:rgba(var(--v-text-primary, 32, 54, 69, 1));margin-top:12px;overflow:hidden;resize:vertical;padding-top:12px;padding-right:16px;padding-bottom:12px;padding-left:16px}: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:3px;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));cursor:not-allowed;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}: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.disabled vega-rich-text-content{pointer-events:none;opacity:0.35}: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:3px;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;justify-content:center;align-items:center;margin-left:6px}.toolbar-btn-group .toolbar-btn-color-preview-box.disabled{opacity:0.35}.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 !important}.source-view-container{margin-top:12px}.source-view-container vega-code-block::part(editor-toolbar){display:none}";
4717
5547
 
4718
- var __decorate$6 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
5548
+ var __decorate$8 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
4719
5549
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4720
5550
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
4721
5551
  r = Reflect.decorate(decorators, target, key, desc);
@@ -4831,6 +5661,14 @@ const VegaRichTextEditor = class {
4831
5661
  * @vegaVersion 2.88.0
4832
5662
  */
4833
5663
  this.optional = false;
5664
+ /**
5665
+ * Specifies the name attribute used to identify the form field during data submission.
5666
+ * It functions identically to the `data-vega-form` attribute but operates at a lower priority.
5667
+ *
5668
+ * @default ''
5669
+ * @vegaVersion 2.97.0
5670
+ */
5671
+ this.name = '';
4834
5672
  /**
4835
5673
  * Specifies a placeholder string that displays as a
4836
5674
  * temporary hint or example within the rich text editor.
@@ -4974,138 +5812,138 @@ const VegaRichTextEditor = class {
4974
5812
  "extensions": ["watchExtensions"]
4975
5813
  }; }
4976
5814
  };
4977
- __decorate$6([
5815
+ __decorate$8([
4978
5816
  InjectVegaGlobalSlimmer()
4979
5817
  ], VegaRichTextEditor.prototype, "globalSlimmers", void 0);
4980
- __decorate$6([
5818
+ __decorate$8([
4981
5819
  InjectVegaSlimmer()
4982
5820
  ], VegaRichTextEditor.prototype, "translationSlimmer", void 0);
4983
- __decorate$6([
5821
+ __decorate$8([
4984
5822
  InjectVegaSlimmer()
4985
5823
  ], VegaRichTextEditor.prototype, "vegaComponentUsageRuntimeMetricsSlimmer", void 0);
4986
- __decorate$6([
5824
+ __decorate$8([
4987
5825
  InjectVegaSlimmer()
4988
5826
  ], VegaRichTextEditor.prototype, "formFieldController", void 0);
4989
- __decorate$6([
5827
+ __decorate$8([
4990
5828
  InjectVegaSlimmer()
4991
5829
  ], VegaRichTextEditor.prototype, "changeEventEmitter", void 0);
4992
- __decorate$6([
5830
+ __decorate$8([
4993
5831
  InjectVegaSlimmer()
4994
5832
  ], VegaRichTextEditor.prototype, "vegaRichTextEditorRenderer", void 0);
4995
- __decorate$6([
5833
+ __decorate$8([
4996
5834
  InjectVegaSlimmer()
4997
5835
  ], VegaRichTextEditor.prototype, "valueController", void 0);
4998
- __decorate$6([
5836
+ __decorate$8([
4999
5837
  InjectVegaSlimmer()
5000
5838
  ], VegaRichTextEditor.prototype, "selectionController", void 0);
5001
- __decorate$6([
5839
+ __decorate$8([
5002
5840
  InjectVegaSlimmer()
5003
5841
  ], VegaRichTextEditor.prototype, "focusController", void 0);
5004
- __decorate$6([
5842
+ __decorate$8([
5005
5843
  InjectVegaSlimmer()
5006
5844
  ], VegaRichTextEditor.prototype, "darkModeStateControllerSlimmer", void 0);
5007
- __decorate$6([
5845
+ __decorate$8([
5008
5846
  InjectVegaSlimmer()
5009
5847
  ], VegaRichTextEditor.prototype, "toolbarRenderer", void 0);
5010
- __decorate$6([
5848
+ __decorate$8([
5011
5849
  InjectVegaSlimmer()
5012
5850
  ], VegaRichTextEditor.prototype, "clearStyleToolbarButtonSlimmer", void 0);
5013
- __decorate$6([
5851
+ __decorate$8([
5014
5852
  InjectVegaSlimmer()
5015
5853
  ], VegaRichTextEditor.prototype, "boldToolbarButtonSlimmer", void 0);
5016
- __decorate$6([
5854
+ __decorate$8([
5017
5855
  InjectVegaSlimmer()
5018
5856
  ], VegaRichTextEditor.prototype, "italicToolbarButtonSlimmer", void 0);
5019
- __decorate$6([
5857
+ __decorate$8([
5020
5858
  InjectVegaSlimmer()
5021
5859
  ], VegaRichTextEditor.prototype, "underlineToolbarButtonSlimmer", void 0);
5022
- __decorate$6([
5860
+ __decorate$8([
5023
5861
  InjectVegaSlimmer()
5024
5862
  ], VegaRichTextEditor.prototype, "textColorToolbarButtonSlimmer", void 0);
5025
- __decorate$6([
5863
+ __decorate$8([
5026
5864
  InjectVegaSlimmer()
5027
5865
  ], VegaRichTextEditor.prototype, "textStylesToolbarButtonSlimmer", void 0);
5028
- __decorate$6([
5866
+ __decorate$8([
5029
5867
  InjectVegaSlimmer()
5030
5868
  ], VegaRichTextEditor.prototype, "codeToolbarButtonSlimmer", void 0);
5031
- __decorate$6([
5869
+ __decorate$8([
5032
5870
  InjectVegaSlimmer()
5033
5871
  ], VegaRichTextEditor.prototype, "strikethroughToolbarButtonSlimmer", void 0);
5034
- __decorate$6([
5872
+ __decorate$8([
5035
5873
  InjectVegaSlimmer()
5036
5874
  ], VegaRichTextEditor.prototype, "imageToolbarButtonSlimmer", void 0);
5037
- __decorate$6([
5875
+ __decorate$8([
5038
5876
  InjectVegaSlimmer()
5039
5877
  ], VegaRichTextEditor.prototype, "linkToolbarButtonSlimmer", void 0);
5040
- __decorate$6([
5878
+ __decorate$8([
5041
5879
  InjectVegaSlimmer()
5042
5880
  ], VegaRichTextEditor.prototype, "moreIndentToolbarButtonSlimmer", void 0);
5043
- __decorate$6([
5881
+ __decorate$8([
5044
5882
  InjectVegaSlimmer()
5045
5883
  ], VegaRichTextEditor.prototype, "lessIndentToolbarButtonSlimmer", void 0);
5046
- __decorate$6([
5884
+ __decorate$8([
5047
5885
  InjectVegaSlimmer()
5048
5886
  ], VegaRichTextEditor.prototype, "bulletsNumbersToolbarButtonSlimmer", void 0);
5049
- __decorate$6([
5887
+ __decorate$8([
5050
5888
  InjectVegaSlimmer()
5051
5889
  ], VegaRichTextEditor.prototype, "horizontalAlignmentToolbarButtonSlimmer", void 0);
5052
- __decorate$6([
5890
+ __decorate$8([
5053
5891
  InjectVegaSlimmer()
5054
5892
  ], VegaRichTextEditor.prototype, "codeBlockToolbarButtonSlimmer", void 0);
5055
- __decorate$6([
5893
+ __decorate$8([
5056
5894
  InjectVegaSlimmer()
5057
5895
  ], VegaRichTextEditor.prototype, "undoToolbarButtonSlimmer", void 0);
5058
- __decorate$6([
5896
+ __decorate$8([
5059
5897
  InjectVegaSlimmer()
5060
5898
  ], VegaRichTextEditor.prototype, "redoToolbarButtonSlimmer", void 0);
5061
- __decorate$6([
5899
+ __decorate$8([
5062
5900
  InjectVegaSlimmer()
5063
5901
  ], VegaRichTextEditor.prototype, "sourceEditToolbarButtonSlimmer", void 0);
5064
- __decorate$6([
5902
+ __decorate$8([
5065
5903
  InjectVegaSlimmer()
5066
5904
  ], VegaRichTextEditor.prototype, "placeholderNotifySlimmer", void 0);
5067
- __decorate$6([
5905
+ __decorate$8([
5068
5906
  InjectVegaSlimmer()
5069
5907
  ], VegaRichTextEditor.prototype, "disabledNotifySlimmer", void 0);
5070
- __decorate$6([
5908
+ __decorate$8([
5071
5909
  InjectVegaSlimmer()
5072
5910
  ], VegaRichTextEditor.prototype, "richTextContentController", void 0);
5073
- __decorate$6([
5911
+ __decorate$8([
5074
5912
  InjectVegaSlimmer()
5075
5913
  ], VegaRichTextEditor.prototype, "userInputController", void 0);
5076
- __decorate$6([
5914
+ __decorate$8([
5077
5915
  InjectVegaSlimmer()
5078
5916
  ], VegaRichTextEditor.prototype, "insertImageController", void 0);
5079
- __decorate$6([
5917
+ __decorate$8([
5080
5918
  InjectVegaSlimmer()
5081
5919
  ], VegaRichTextEditor.prototype, "insertCompositionTextController", void 0);
5082
- __decorate$6([
5920
+ __decorate$8([
5083
5921
  InjectVegaSlimmer()
5084
5922
  ], VegaRichTextEditor.prototype, "imageInsertedEventEmitter", void 0);
5085
- __decorate$6([
5923
+ __decorate$8([
5086
5924
  InjectVegaSlimmer()
5087
5925
  ], VegaRichTextEditor.prototype, "changeEventPreventSlimmer", void 0);
5088
- __decorate$6([
5926
+ __decorate$8([
5089
5927
  InjectVegaSlimmer()
5090
5928
  ], VegaRichTextEditor.prototype, "deleteSelectedNodesController", void 0);
5091
- __decorate$6([
5929
+ __decorate$8([
5092
5930
  InjectVegaSlimmer()
5093
5931
  ], VegaRichTextEditor.prototype, "historyController", void 0);
5094
- __decorate$6([
5932
+ __decorate$8([
5095
5933
  InjectVegaSlimmer()
5096
5934
  ], VegaRichTextEditor.prototype, "internalCodeBlockSelectionController", void 0);
5097
- __decorate$6([
5935
+ __decorate$8([
5098
5936
  InjectVegaSlimmer()
5099
5937
  ], VegaRichTextEditor.prototype, "rteExtensionController", void 0);
5100
- __decorate$6([
5938
+ __decorate$8([
5101
5939
  InjectVegaSlimmer()
5102
5940
  ], VegaRichTextEditor.prototype, "sourceCodeChangeEventEmitter", void 0);
5103
- __decorate$6([
5941
+ __decorate$8([
5104
5942
  InjectVegaSlimmer()
5105
5943
  ], VegaRichTextEditor.prototype, "richTextEditorSourceViewRenderer", void 0);
5106
5944
  VegaRichTextEditor.style = vegaRichTextEditorCss;
5107
5945
 
5108
- var __decorate$5 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
5946
+ var __decorate$7 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
5109
5947
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
5110
5948
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5111
5949
  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;
@@ -5142,34 +5980,34 @@ class VegaRichTextEditorToolbarButtonRenderer extends VegaSlimmer {
5142
5980
  'chevron-up': chevronUp,
5143
5981
  });
5144
5982
  })();
5145
- __decorate$5([
5983
+ __decorate$7([
5146
5984
  MapToComponentField()
5147
5985
  ], VegaRichTextEditorToolbarButtonRenderer.prototype, "disabled", void 0);
5148
- __decorate$5([
5986
+ __decorate$7([
5149
5987
  MapToComponentField()
5150
5988
  ], VegaRichTextEditorToolbarButtonRenderer.prototype, "hidden", void 0);
5151
- __decorate$5([
5989
+ __decorate$7([
5152
5990
  MapToComponentField()
5153
5991
  ], VegaRichTextEditorToolbarButtonRenderer.prototype, "selected", void 0);
5154
- __decorate$5([
5992
+ __decorate$7([
5155
5993
  MapToComponentField()
5156
5994
  ], VegaRichTextEditorToolbarButtonRenderer.prototype, "showArrowIcon", void 0);
5157
- __decorate$5([
5995
+ __decorate$7([
5158
5996
  MapToComponentField()
5159
5997
  ], VegaRichTextEditorToolbarButtonRenderer.prototype, "arrowIcon", void 0);
5160
- __decorate$5([
5998
+ __decorate$7([
5161
5999
  MapToComponentField()
5162
6000
  ], VegaRichTextEditorToolbarButtonRenderer.prototype, "icon", void 0);
5163
- __decorate$5([
6001
+ __decorate$7([
5164
6002
  MapToComponentField()
5165
6003
  ], VegaRichTextEditorToolbarButtonRenderer.prototype, "iconColor", void 0);
5166
- __decorate$5([
6004
+ __decorate$7([
5167
6005
  MapToComponentField()
5168
6006
  ], VegaRichTextEditorToolbarButtonRenderer.prototype, "clickEventEmitter", void 0);
5169
6007
 
5170
6008
  const vegaRichTextEditorToolbarButtonCss = ":host{display:inline-block}:host ::slotted(vega-font.v-font-field-label-sm){line-height:16px}.rich-text-editor-toolbar-btn{display:flex;justify-content:center;align-items:center;border-radius:4px;border:1px solid rgba(var(--v-border-input-field, 171, 198, 216, 1));padding-top:8px;padding-bottom:8px;padding-left:12px;padding-right:12px;cursor:pointer;position:relative;background-color:rgba(var(--v-bg-primary, 252, 252, 252, 1))}.rich-text-editor-toolbar-btn:hover{background-color:rgba(var(--v-bg-quaternary, 241, 248, 251, 1));border:1px solid rgba(var(--v-border-input-field-hover, 115, 160, 190, 1));z-index:1}.rich-text-editor-toolbar-btn:active{border:1px solid rgba(var(--v-border-input-field-focus, 19, 98, 226, 1));background-color:rgba(var(--v-bg-quaternary, 241, 248, 251, 1));z-index:1}.rich-text-editor-toolbar-btn:focus-visible{outline:2px solid rgba(var(--v-border-color-action, 19, 98, 226, 1));outline-offset:-1px;z-index:2}.rich-text-editor-toolbar-btn.rich-text-editor-toolbar-button-selected{border:1px solid rgba(var(--v-border-input-field-focus, 19, 98, 226, 1));background-color:rgba(var(--v-bg-quaternary, 241, 248, 251, 1));z-index:1}.rich-text-editor-toolbar-btn.rich-text-editor-toolbar-button-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));cursor:not-allowed}.rich-text-editor-toolbar-btn.rich-text-editor-toolbar-button-disabled vega-icon{color:rgba(var(--v-text-disabled, 176, 180, 181, 1))}.rich-text-editor-toolbar-btn.rich-text-editor-toolbar-button-hidden{display:none}";
5171
6009
 
5172
- var __decorate$4 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
6010
+ var __decorate$6 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
5173
6011
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
5174
6012
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
5175
6013
  r = Reflect.decorate(decorators, target, key, desc);
@@ -5244,24 +6082,24 @@ const VegaRichTextEditorToolbarButton = class {
5244
6082
  }
5245
6083
  get host() { return getElement(this); }
5246
6084
  };
5247
- __decorate$4([
6085
+ __decorate$6([
5248
6086
  InjectVegaGlobalSlimmer()
5249
6087
  ], VegaRichTextEditorToolbarButton.prototype, "globalSlimmers", void 0);
5250
- __decorate$4([
6088
+ __decorate$6([
5251
6089
  InjectVegaSlimmer()
5252
6090
  ], VegaRichTextEditorToolbarButton.prototype, "vegaComponentUsageRuntimeMetricsSlimmer", void 0);
5253
- __decorate$4([
6091
+ __decorate$6([
5254
6092
  InjectVegaSlimmer()
5255
6093
  ], VegaRichTextEditorToolbarButton.prototype, "clickEventEmitter", void 0);
5256
- __decorate$4([
6094
+ __decorate$6([
5257
6095
  InjectVegaSlimmer()
5258
6096
  ], VegaRichTextEditorToolbarButton.prototype, "eventPrevent", void 0);
5259
- __decorate$4([
6097
+ __decorate$6([
5260
6098
  InjectVegaSlimmer()
5261
6099
  ], VegaRichTextEditorToolbarButton.prototype, "renderer", void 0);
5262
6100
  VegaRichTextEditorToolbarButton.style = vegaRichTextEditorToolbarButtonCss;
5263
6101
 
5264
- var __decorate$3 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
6102
+ var __decorate$5 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
5265
6103
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
5266
6104
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5267
6105
  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;
@@ -5369,34 +6207,34 @@ class VegaRichTextImageEditorRenderer extends VegaSlimmer {
5369
6207
  (() => {
5370
6208
  VegaInternalIconManager.register({ 'trash-can': trashCan });
5371
6209
  })();
5372
- __decorate$3([
6210
+ __decorate$5([
5373
6211
  MapToComponentField({ writable: true })
5374
6212
  ], VegaRichTextImageEditorRenderer.prototype, "currentPage", void 0);
5375
- __decorate$3([
6213
+ __decorate$5([
5376
6214
  MapToComponentField({ writable: true })
5377
6215
  ], VegaRichTextImageEditorRenderer.prototype, "selected", void 0);
5378
- __decorate$3([
6216
+ __decorate$5([
5379
6217
  MapToComponentField()
5380
6218
  ], VegaRichTextImageEditorRenderer.prototype, "host", void 0);
5381
- __decorate$3([
6219
+ __decorate$5([
5382
6220
  MapToComponentField()
5383
6221
  ], VegaRichTextImageEditorRenderer.prototype, "alt", void 0);
5384
- __decorate$3([
6222
+ __decorate$5([
5385
6223
  MapToComponentField({ writable: true })
5386
6224
  ], VegaRichTextImageEditorRenderer.prototype, "size", void 0);
5387
- __decorate$3([
6225
+ __decorate$5([
5388
6226
  MapToComponentField()
5389
6227
  ], VegaRichTextImageEditorRenderer.prototype, "changeEventEmitter", void 0);
5390
- __decorate$3([
6228
+ __decorate$5([
5391
6229
  MapToComponentField()
5392
6230
  ], VegaRichTextImageEditorRenderer.prototype, "translationSlimmer", void 0);
5393
- __decorate$3([
6231
+ __decorate$5([
5394
6232
  MapToComponentMethod('componentDidLoad')
5395
6233
  ], VegaRichTextImageEditorRenderer.prototype, "findParentContainerRef", null);
5396
6234
 
5397
6235
  const vegaRichTextImageEditorCss = ":host{display:inline-block}:host(.rte-image-selected){outline:2px solid rgba(var(--v-border-color-tile-selected, 19, 98, 226, 1));outline-offset:-2px}";
5398
6236
 
5399
- var __decorate$2 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
6237
+ var __decorate$4 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
5400
6238
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
5401
6239
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
5402
6240
  r = Reflect.decorate(decorators, target, key, desc);
@@ -5437,24 +6275,24 @@ const VegaRichTextImageEditor = class {
5437
6275
  }
5438
6276
  get host() { return getElement(this); }
5439
6277
  };
5440
- __decorate$2([
6278
+ __decorate$4([
5441
6279
  InjectVegaGlobalSlimmer()
5442
6280
  ], VegaRichTextImageEditor.prototype, "globalSlimmers", void 0);
5443
- __decorate$2([
6281
+ __decorate$4([
5444
6282
  InjectVegaSlimmer()
5445
6283
  ], VegaRichTextImageEditor.prototype, "translationSlimmer", void 0);
5446
- __decorate$2([
6284
+ __decorate$4([
5447
6285
  InjectVegaSlimmer()
5448
6286
  ], VegaRichTextImageEditor.prototype, "vegaComponentUsageRuntimeMetricsSlimmer", void 0);
5449
- __decorate$2([
6287
+ __decorate$4([
5450
6288
  InjectVegaSlimmer()
5451
6289
  ], VegaRichTextImageEditor.prototype, "renderer", void 0);
5452
- __decorate$2([
6290
+ __decorate$4([
5453
6291
  InjectVegaSlimmer()
5454
6292
  ], VegaRichTextImageEditor.prototype, "changeEventEmitter", void 0);
5455
6293
  VegaRichTextImageEditor.style = vegaRichTextImageEditorCss;
5456
6294
 
5457
- var __decorate$1 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
6295
+ var __decorate$3 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
5458
6296
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
5459
6297
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5460
6298
  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;
@@ -5463,66 +6301,73 @@ var __decorate$1 = (undefined && undefined.__decorate) || function (decorators,
5463
6301
  class VegaRichTextLinkEditorRenderer extends VegaSlimmer {
5464
6302
  constructor() {
5465
6303
  super(...arguments);
5466
- this.handleKeyDown = (e) => {
5467
- if (e.key === 'Enter') {
5468
- void this.formRef.getValue().then(({ text, url }) => {
5469
- const normalizedUrl = this.normalizeUrlByDefaultProtocol(url);
5470
- if (normalizedUrl.length > 0) {
5471
- this.changeEventEmitter.emit({
5472
- action: 'link',
5473
- payload: { text: text || normalizedUrl, url: normalizedUrl },
5474
- });
5475
- void this.popoverRef.hide();
6304
+ this.handlePopoverRef = (ref) => {
6305
+ this.popoverRef = ref;
6306
+ DomNodeSubjectObserverFactory.addUniqueObserverToNode(ref, VegaPopoverShow, () => this.linkEditorController.handlePopoverShow());
6307
+ DomNodeSubjectObserverFactory.addUniqueObserverToNode(ref, VegaPopoverHide, () => {
6308
+ this.linkEditorController.handlePopoverHide();
6309
+ });
6310
+ };
6311
+ this.handleButtonGroupRef = (node) => {
6312
+ DomNodeSubjectObserverFactory.addUniqueObserverToNode(node, VegaClick, ({ detail }) => {
6313
+ switch (detail) {
6314
+ case 'edit': {
6315
+ this.linkEditorController.handleEditAction();
6316
+ return;
5476
6317
  }
5477
- });
6318
+ case 'unlink': {
6319
+ void this.linkEditorController.handleUnlinkAction();
6320
+ }
6321
+ }
6322
+ });
6323
+ };
6324
+ this.handleFormRef = (ref) => {
6325
+ this.formRef = ref;
6326
+ };
6327
+ this.handleUrlInputRef = (ref) => {
6328
+ if (ref) {
6329
+ this.urlInputRef = ref;
5478
6330
  }
5479
6331
  };
5480
- }
5481
- /**
5482
- * Component lifecycle - [componentDidLoad]{@link VegaRichTextLinkEditor.componentDidLoad}
5483
- */
5484
- componentDidLoad() {
5485
- this.updatePopoverTarget();
5486
- }
5487
- /**
5488
- * Component lifecycle - [componentDidRender]{@link VegaRichTextLinkEditor.componentDidRender}
5489
- */
5490
- componentDidRender() {
5491
- ChangeManager.notify(domNodeSubjectFactory.getSubject(this.host, VegaInternalComponentDidRender), {});
5492
- }
5493
- watchStatusChange() {
5494
- if (this.status === 'linkEdit') {
5495
- setTimeout(() => {
5496
- void this.urlInputRef.doFocus();
6332
+ this.handleTextInputRef = (ref) => {
6333
+ this.textInputRef = ref;
6334
+ };
6335
+ this.handleLinkFieldKeyDown = (e) => {
6336
+ this.linkEditorController.handleKeyDown(e);
6337
+ };
6338
+ this.handleUrlVegaChange = (e) => {
6339
+ this.linkEditorController.handleUrlVegaChange(e);
6340
+ };
6341
+ this.handleLinkTypeSelectRef = (ref) => {
6342
+ DomNodeSubjectObserverFactory.addUniqueObserverToNode(ref, VegaChange, (payload) => {
6343
+ void this.linkEditorController.handleLinkTypeChange(payload);
5497
6344
  });
5498
- }
5499
- }
5500
- watchTargetChange() {
5501
- this.updatePopoverTarget();
6345
+ };
6346
+ this.handleCancelButtonRef = (ref) => {
6347
+ DomNodeSubjectObserverFactory.addUniqueObserverToNode(ref, VegaClick, () => {
6348
+ void this.getPopoverRef().hide();
6349
+ });
6350
+ };
6351
+ this.handleSubmitButtonRef = (ref) => {
6352
+ DomNodeSubjectObserverFactory.addUniqueObserverToNode(ref, VegaClick, () => {
6353
+ void this.linkEditorController.submitLink();
6354
+ });
6355
+ };
5502
6356
  }
5503
6357
  getPopoverRef() {
5504
6358
  return this.popoverRef;
5505
6359
  }
6360
+ getFormRef() {
6361
+ return this.formRef;
6362
+ }
6363
+ getUrlInputRef() {
6364
+ return this.urlInputRef;
6365
+ }
6366
+ getTextInputRef() {
6367
+ return this.textInputRef;
6368
+ }
5506
6369
  render() {
5507
- return (h("vega-popover", { trigger: "click", alignment: "start", placement: "bottom", showArrow: false, isScreenPosition: true, ref: (ref) => {
5508
- this.popoverRef = ref;
5509
- DomNodeSubjectObserverFactory.addUniqueObserverToNode(ref, VegaPopoverShow, () => {
5510
- var _a, _b, _c;
5511
- if (this.status === 'linkEdit') {
5512
- void this.urlInputRef.doFocus();
5513
- }
5514
- void this.formRef.setValue({
5515
- text: (_a = this.record) === null || _a === void 0 ? void 0 : _a.text,
5516
- url: this.normalizeUrlByDefaultProtocol((_c = (_b = this.record) === null || _b === void 0 ? void 0 : _b.url) !== null && _c !== void 0 ? _c : ''),
5517
- });
5518
- });
5519
- DomNodeSubjectObserverFactory.addUniqueObserverToNode(ref, VegaPopoverHide, () => {
5520
- void this.formRef.reset();
5521
- if (this.resetStatusAfterHide) {
5522
- this.status = 'editOrUnlinkSelection';
5523
- }
5524
- });
5525
- } },
6370
+ return (h("vega-popover", { trigger: "click", alignment: "start", placement: "bottom", showArrow: false, isScreenPosition: true, ref: this.handlePopoverRef },
5526
6371
  h("span", { slot: "popover-content" },
5527
6372
  h("slot", null)),
5528
6373
  h("div", { slot: "popover" },
@@ -5531,74 +6376,879 @@ class VegaRichTextLinkEditorRenderer extends VegaSlimmer {
5531
6376
  }
5532
6377
  renderLinkUnlinkContent() {
5533
6378
  return (h("vega-box", { display: this.status === 'editOrUnlinkSelection' ? 'block' : 'none' },
5534
- h("vega-button-group", { size: "small", variant: "tertiary", ref: (node) => {
5535
- DomNodeSubjectObserverFactory.addUniqueObserverToNode(node, VegaClick, ({ detail }) => {
5536
- switch (detail) {
5537
- case 'edit': {
5538
- this.status = 'linkEdit';
5539
- return;
5540
- }
5541
- case 'unlink': {
5542
- this.changeEventEmitter.emit({ action: 'unlink' });
5543
- void this.popoverRef.hide();
5544
- }
5545
- }
5546
- });
5547
- } },
6379
+ h("vega-button-group", { size: "small", variant: "tertiary", ref: this.handleButtonGroupRef, onKeyDown: this.handleLinkFieldKeyDown },
5548
6380
  h("vega-button-group-item", { label: this.translationSlimmer.t('Edit'), itemKey: "edit" }),
5549
6381
  h("vega-button-group-item", { label: this.translationSlimmer.t('Unlink'), itemKey: "unlink" }))));
5550
6382
  }
5551
6383
  renderLinkEditContent() {
5552
6384
  return (h("vega-box", { display: this.status === 'linkEdit' ? 'block' : 'none' },
5553
- h("vega-form", { ref: (ref) => (this.formRef = ref) },
5554
- h("vega-flex", { style: { width: '419px' }, direction: "col", gap: "size-16" },
5555
- h("vega-input", { "data-vega-form": "url", ref: (ref) => {
5556
- this.urlInputRef = ref;
5557
- }, size: "small", label: this.translationSlimmer.t('URL'), onKeyDown: this.handleKeyDown }),
5558
- h("vega-input", { size: "small", label: this.translationSlimmer.t('Text'), "data-vega-form": "text", onKeyDown: this.handleKeyDown })))));
6385
+ h("vega-flex", { style: { width: '419px' }, direction: "col", gap: "size-16" },
6386
+ this.renderLinkTypeSelector(),
6387
+ h("vega-form", { ref: this.handleFormRef },
6388
+ h("vega-flex", { direction: "col", gap: "size-16" },
6389
+ this.renderTextInput(),
6390
+ this.renderCurrentLinkTypeEditFields())),
6391
+ this.renderActionButtons())));
6392
+ }
6393
+ renderCurrentLinkTypeEditFields() {
6394
+ switch (this.linkEditorStateManager.getSelectedLinkTypeKey()) {
6395
+ case RTE_EMAIL_LINK_TYPE_KEY:
6396
+ return this.renderEmailLinkEditFields();
6397
+ default:
6398
+ return this.renderUrlLinkEditFields();
6399
+ }
6400
+ }
6401
+ renderTextInput() {
6402
+ return (h("vega-input", { size: "small", label: this.translationSlimmer.t('Text'), "data-vega-form": "text", ref: this.handleTextInputRef, onKeyDown: this.handleLinkFieldKeyDown }));
6403
+ }
6404
+ renderEmailLinkEditFields() {
6405
+ return [
6406
+ h("vega-input", { key: "emailAddress", "data-vega-form": "emailAddress", required: true, ref: this.handleUrlInputRef, size: "small", label: this.translationSlimmer.t('E-Mail Address'), onVegaChange: this.handleUrlVegaChange, onKeyDown: this.handleLinkFieldKeyDown }),
6407
+ h("vega-input", { key: "messageSubject", size: "small", label: this.translationSlimmer.t('Message Subject'), "data-vega-form": "messageSubject", onKeyDown: this.handleLinkFieldKeyDown }),
6408
+ h("vega-textarea", { key: "messageBody", label: this.translationSlimmer.t('Message Body'), "data-vega-form": "messageBody", rows: 4, resizable: false }),
6409
+ ];
5559
6410
  }
5560
- updatePopoverTarget() {
5561
- remoteInvocationRegistry.call(domNodeSubjectFactory.getSubject(this.popoverRef, VegaInternalPopoverUpdateTarget), this.target);
6411
+ renderUrlLinkEditFields() {
6412
+ return [
6413
+ h("vega-input", { key: "url", "data-vega-form": "url", ref: this.handleUrlInputRef, size: "small", label: this.translationSlimmer.t('URL'), required: this.linkTypeConfigController.hasConfiguredLinkTypes(), onVegaChange: this.handleUrlVegaChange, onKeyDown: this.handleLinkFieldKeyDown }),
6414
+ ];
5562
6415
  }
5563
- normalizeUrlByDefaultProtocol(url) {
5564
- const rteHost = findParent(this.host, 'vega-rich-text-editor');
5565
- const linkConfig = VegaRTELinkExtension.configStore.get(rteHost) || {};
5566
- return normalizeUrlByDefaultProtocol(url, linkConfig.defaultProtocol);
6416
+ renderLinkTypeSelector() {
6417
+ if (!this.linkTypeConfigController.hasConfiguredLinkTypes()) {
6418
+ return null;
6419
+ }
6420
+ return (h("vega-input-select", { label: this.translationSlimmer.t('Link Type'), size: "small", source: this.linkTypeConfigController
6421
+ .getConfiguredLinkTypes()
6422
+ .map((item) => ({
6423
+ id: item.key,
6424
+ displayName: this.translationSlimmer.t(item.label),
6425
+ })), vegaDropdownProps: { searchable: false }, value: this.linkEditorStateManager.getSelectedLinkTypeKey(), ref: this.handleLinkTypeSelectRef }));
5567
6426
  }
5568
- }
5569
- __decorate$1([
6427
+ renderActionButtons() {
6428
+ if (!this.linkTypeConfigController.hasConfiguredLinkTypes()) {
6429
+ return null;
6430
+ }
6431
+ return (h("vega-flex", { style: { width: '100%' }, gap: "size-8", alignItems: "center", justifyContent: "end" },
6432
+ h("vega-button", { variant: "secondary", label: this.translationSlimmer.t('Cancel'), ref: this.handleCancelButtonRef }),
6433
+ h("vega-button", { label: this.translationSlimmer.t('Submit'), disabled: this.linkEditorStateManager.getIsSubmitDisabled(), ref: this.handleSubmitButtonRef })));
6434
+ }
6435
+ }
6436
+ __decorate$3([
5570
6437
  MapToComponentField()
5571
6438
  ], VegaRichTextLinkEditorRenderer.prototype, "host", void 0);
5572
- __decorate$1([
5573
- MapToComponentField({ writable: true })
6439
+ __decorate$3([
6440
+ MapToComponentField()
5574
6441
  ], VegaRichTextLinkEditorRenderer.prototype, "status", void 0);
5575
- __decorate$1([
6442
+ __decorate$3([
6443
+ MapToComponentField()
6444
+ ], VegaRichTextLinkEditorRenderer.prototype, "translationSlimmer", void 0);
6445
+ __decorate$3([
6446
+ MapToComponentField()
6447
+ ], VegaRichTextLinkEditorRenderer.prototype, "linkEditorController", void 0);
6448
+ __decorate$3([
6449
+ MapToComponentField()
6450
+ ], VegaRichTextLinkEditorRenderer.prototype, "linkTypeConfigController", void 0);
6451
+ __decorate$3([
6452
+ MapToComponentField()
6453
+ ], VegaRichTextLinkEditorRenderer.prototype, "linkEditorStateManager", void 0);
6454
+
6455
+ const urlLinkTypeHandler = {
6456
+ key: 'url',
6457
+ defaultFallbackProtocol: undefined,
6458
+ /** @inheritDoc */
6459
+ getRequiredValue: (record) => { var _a; return (_a = record === null || record === void 0 ? void 0 : record.url) !== null && _a !== void 0 ? _a : ''; },
6460
+ /** @inheritDoc */
6461
+ getTextValue: (formValues) => formValues.text || '',
6462
+ /** @inheritDoc */
6463
+ getFallbackText: () => '',
6464
+ /** @inheritDoc */
6465
+ buildFinalUrl: (formValues, { normalizeUrl }) => normalizeUrl(formValues.url || ''),
6466
+ /** @inheritDoc */
6467
+ getInitialFormValues: (record, { normalizeUrl }) => {
6468
+ var _a, _b;
6469
+ return ({
6470
+ text: (_a = record === null || record === void 0 ? void 0 : record.text) !== null && _a !== void 0 ? _a : '',
6471
+ url: normalizeUrl((_b = record === null || record === void 0 ? void 0 : record.url) !== null && _b !== void 0 ? _b : ''),
6472
+ });
6473
+ },
6474
+ };
6475
+ const emailLinkTypeHandler = {
6476
+ key: 'email',
6477
+ defaultFallbackProtocol: 'mailto:',
6478
+ /** @inheritDoc */
6479
+ getRequiredValue: (record, { parseMailtoUrl }) => {
6480
+ var _a;
6481
+ const { emailAddress } = parseMailtoUrl((_a = record === null || record === void 0 ? void 0 : record.url) !== null && _a !== void 0 ? _a : '');
6482
+ return emailAddress;
6483
+ },
6484
+ /** @inheritDoc */
6485
+ getTextValue: (formValues) => formValues.text || '',
6486
+ /** @inheritDoc */
6487
+ getFallbackText: (formValues) => formValues.emailAddress || '',
6488
+ /** @inheritDoc */
6489
+ buildFinalUrl: (formValues, { buildEmailUrl }) => buildEmailUrl(formValues.emailAddress || '', formValues.messageSubject || '', formValues.messageBody || ''),
6490
+ /** @inheritDoc */
6491
+ getInitialFormValues: (record, { parseMailtoUrl }) => {
6492
+ var _a, _b;
6493
+ const { emailAddress, subject, body } = parseMailtoUrl((_a = record === null || record === void 0 ? void 0 : record.url) !== null && _a !== void 0 ? _a : '');
6494
+ return {
6495
+ text: (_b = record === null || record === void 0 ? void 0 : record.text) !== null && _b !== void 0 ? _b : '',
6496
+ emailAddress,
6497
+ messageSubject: subject,
6498
+ messageBody: body,
6499
+ };
6500
+ },
6501
+ };
6502
+ const LINK_TYPE_HANDLERS = [urlLinkTypeHandler, emailLinkTypeHandler];
6503
+ const LINK_TYPE_HANDLER_MAP = new Map(LINK_TYPE_HANDLERS.map((handler) => [handler.key, handler]));
6504
+
6505
+ /**
6506
+ * Normalizes link URLs and mailto values for the link editor.
6507
+ */
6508
+ class LinkUrlNormalizer {
6509
+ /**
6510
+ * Normalizes a URL with the provided default protocol.
6511
+ *
6512
+ * @param {string} url - URL to normalize.
6513
+ * @param {string} defaultProtocol - Default protocol to apply.
6514
+ * @returns {string} The normalized URL.
6515
+ */
6516
+ normalizeUrlByDefaultProtocol(url, defaultProtocol) {
6517
+ return normalizeUrlByDefaultProtocol(url, defaultProtocol);
6518
+ }
6519
+ /**
6520
+ * Parses a mailto URL into its structured parts.
6521
+ *
6522
+ * @param {string} url - Mailto URL to parse.
6523
+ * @returns {MailtoUrlParts} The parsed mailto parts.
6524
+ */
6525
+ parseMailtoUrl(url) {
6526
+ var _a, _b;
6527
+ if (!url) {
6528
+ return { emailAddress: '', subject: '', body: '' };
6529
+ }
6530
+ const withoutProtocol = url.startsWith('mailto:') ? url.slice('mailto:'.length) : url;
6531
+ const questionIndex = withoutProtocol.indexOf('?');
6532
+ if (questionIndex === -1) {
6533
+ return {
6534
+ emailAddress: this.decodeURIComponentSafely(withoutProtocol),
6535
+ subject: '',
6536
+ body: '',
6537
+ };
6538
+ }
6539
+ const emailAddress = this.decodeURIComponentSafely(withoutProtocol.slice(0, questionIndex));
6540
+ const params = new URLSearchParams(withoutProtocol.slice(questionIndex + 1));
6541
+ return {
6542
+ emailAddress,
6543
+ subject: (_a = params.get('subject')) !== null && _a !== void 0 ? _a : '',
6544
+ body: (_b = params.get('body')) !== null && _b !== void 0 ? _b : '',
6545
+ };
6546
+ }
6547
+ /**
6548
+ * Builds a mailto URL from the provided fields.
6549
+ *
6550
+ * @param {string} emailAddress - Email address value.
6551
+ * @param {string} subject - Subject value.
6552
+ * @param {string} body - Body value.
6553
+ * @returns {string} The generated mailto URL.
6554
+ */
6555
+ buildEmailLinkUrl(emailAddress, subject, body) {
6556
+ const normalizedEmailAddress = (emailAddress || '').trim().replace(/^(mailto:)+/i, '');
6557
+ if (normalizedEmailAddress.length === 0) {
6558
+ return '';
6559
+ }
6560
+ const queryParams = [];
6561
+ if ((subject || '').trim().length > 0) {
6562
+ queryParams.push(`subject=${encodeURIComponent(subject.trim())}`);
6563
+ }
6564
+ if ((body || '').trim().length > 0) {
6565
+ queryParams.push(`body=${encodeURIComponent(body.trim())}`);
6566
+ }
6567
+ return `mailto:${normalizedEmailAddress}${queryParams.length > 0 ? `?${queryParams.join('&')}` : ''}`;
6568
+ }
6569
+ /**
6570
+ * Decodes a URI component without throwing on malformed input.
6571
+ *
6572
+ * @param {string} value - Encoded value.
6573
+ * @returns {string} The decoded value.
6574
+ */
6575
+ decodeURIComponentSafely(value) {
6576
+ try {
6577
+ return decodeURIComponent(value);
6578
+ }
6579
+ catch (_a) {
6580
+ return value;
6581
+ }
6582
+ }
6583
+ }
6584
+
6585
+ var __decorate$2 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
6586
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
6587
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
6588
+ 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;
6589
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6590
+ };
6591
+ /**
6592
+ * Coordinates link editor state, popover behavior, and submit actions.
6593
+ */
6594
+ class LinkEditorController extends VegaSlimmer {
6595
+ constructor() {
6596
+ super(...arguments);
6597
+ this.linkUrlNormalizer = new LinkUrlNormalizer();
6598
+ this.linkTypeHandlers = LINK_TYPE_HANDLER_MAP;
6599
+ }
6600
+ /** Initializes the popover target after the component loads. */
6601
+ componentDidLoad() {
6602
+ this.updatePopoverTarget();
6603
+ }
6604
+ /** Notifies observers after each render cycle. */
6605
+ componentDidRender() {
6606
+ ChangeManager.notify(domNodeSubjectFactory.getSubject(this.host, VegaInternalComponentDidRender), {});
6607
+ }
6608
+ /** Focuses the URL input when the status changes to linkEdit. */
6609
+ watchStatusChange() {
6610
+ if (this.status === 'linkEdit') {
6611
+ setTimeout(() => {
6612
+ var _a;
6613
+ void ((_a = this.renderer.getUrlInputRef()) === null || _a === void 0 ? void 0 : _a.doFocus());
6614
+ });
6615
+ }
6616
+ }
6617
+ /** Invalidates link type cache and updates the popover target when the target changes. */
6618
+ watchTargetChange() {
6619
+ this.linkTypeConfigController.invalidateConfiguredLinkTypesCache();
6620
+ this.updatePopoverTarget();
6621
+ }
6622
+ /**
6623
+ * Prepares the editor state before the popover is shown.
6624
+ *
6625
+ * @returns {Promise<void>} Resolves when the popover show work completes.
6626
+ * Resolves when the popover show work completes.
6627
+ */
6628
+ async handlePopoverShow() {
6629
+ var _a, _b, _c, _d;
6630
+ this.linkTypeConfigController.invalidateConfiguredLinkTypesCache();
6631
+ this.linkEditorStateManager.clearFormValues();
6632
+ if (this.linkEditorStateManager.getShouldResetStatusOnNextShow()) {
6633
+ this.linkEditorStateManager.setShouldResetStatusOnNextShow(false);
6634
+ if (this.status !== 'editOrUnlinkSelection') {
6635
+ this.status = 'editOrUnlinkSelection';
6636
+ forceUpdate(this.host);
6637
+ await this.waitForRender();
6638
+ }
6639
+ }
6640
+ if (this.status === 'linkEdit') {
6641
+ const resolvedKey = this.linkTypeConfigController.resolveInitialLinkTypeKey((_a = this.record) === null || _a === void 0 ? void 0 : _a.linkType, (_b = this.record) === null || _b === void 0 ? void 0 : _b.url);
6642
+ if (resolvedKey !== this.linkEditorStateManager.getSelectedLinkTypeKey()) {
6643
+ this.linkEditorStateManager.setSelectedLinkTypeKey(resolvedKey);
6644
+ this.linkEditorStateManager.setSubmitDisabled(true);
6645
+ await ((_d = (_c = this.renderer.getFormRef()) === null || _c === void 0 ? void 0 : _c.reset) === null || _d === void 0 ? void 0 : _d.call(_c));
6646
+ forceUpdate(this.host);
6647
+ await this.waitForRender();
6648
+ }
6649
+ await this.populateEditForm();
6650
+ }
6651
+ }
6652
+ /**
6653
+ * Clears form state after the popover hides.
6654
+ *
6655
+ * @returns {void} No return value.
6656
+ */
6657
+ handlePopoverHide() {
6658
+ var _a, _b;
6659
+ void ((_b = (_a = this.renderer.getFormRef()) === null || _a === void 0 ? void 0 : _a.reset) === null || _b === void 0 ? void 0 : _b.call(_a));
6660
+ this.linkEditorStateManager.clearFormValues();
6661
+ if (this.linkTypeConfigController.hasConfiguredLinkTypes()) {
6662
+ this.updateSubmitDisabledState('');
6663
+ }
6664
+ if (this.resetStatusAfterHide) {
6665
+ this.linkEditorStateManager.setShouldResetStatusOnNextShow(true);
6666
+ }
6667
+ }
6668
+ /**
6669
+ * Switches the editor into link edit mode.
6670
+ *
6671
+ * @returns {void} No return value.
6672
+ */
6673
+ handleEditAction() {
6674
+ var _a, _b;
6675
+ this.linkEditorStateManager.setSelectedLinkTypeKey(this.linkTypeConfigController.resolveInitialLinkTypeKey((_a = this.record) === null || _a === void 0 ? void 0 : _a.linkType, (_b = this.record) === null || _b === void 0 ? void 0 : _b.url));
6676
+ this.status = 'linkEdit';
6677
+ forceUpdate(this.host);
6678
+ void this.waitForRender().then(() => this.populateEditForm());
6679
+ }
6680
+ /**
6681
+ * Removes the current selection link and closes the popover.
6682
+ *
6683
+ * @returns {Promise<void>} Resolves when unlinking finishes.
6684
+ */
6685
+ async handleUnlinkAction() {
6686
+ this.changeEventEmitter.emit({ action: 'unlink' });
6687
+ await this.renderer.getPopoverRef().hide();
6688
+ }
6689
+ /**
6690
+ * Updates submit state from URL input changes.
6691
+ *
6692
+ * @param {CustomEvent<string>} e - URL input change event.
6693
+ * @returns {void} No return value.
6694
+ */
6695
+ handleUrlVegaChange(e) {
6696
+ if (this.linkTypeConfigController.hasConfiguredLinkTypes()) {
6697
+ this.updateSubmitDisabledState(e.detail);
6698
+ }
6699
+ }
6700
+ /**
6701
+ * Submits the current link when Enter is pressed or hides the popover when Escape is pressed.
6702
+ *
6703
+ * @param {KeyboardEvent} e - Key down event.
6704
+ * @returns {void} No return value.
6705
+ */
6706
+ handleKeyDown(e) {
6707
+ if (e.key === 'Escape') {
6708
+ void this.renderer.getPopoverRef().hide();
6709
+ return;
6710
+ }
6711
+ if (e.key === 'Enter') {
6712
+ if (this.linkTypeConfigController.hasConfiguredLinkTypes() &&
6713
+ this.linkEditorStateManager.getIsSubmitDisabled()) {
6714
+ return;
6715
+ }
6716
+ void this.submitLink();
6717
+ }
6718
+ }
6719
+ /**
6720
+ * Switches the active form when the link type changes.
6721
+ *
6722
+ * @param {NotifyObserverPayload<string>} payload - Selected link type change payload.
6723
+ * @returns {Promise<void>} Resolves when the link type switch completes.
6724
+ */
6725
+ async handleLinkTypeChange(payload) {
6726
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
6727
+ const previousLinkTypeKey = this.linkEditorStateManager.getSelectedLinkTypeKey();
6728
+ const nextLinkTypeKey = payload.detail ||
6729
+ ((_a = this.linkTypeConfigController.getConfiguredLinkTypes()[0]) === null || _a === void 0 ? void 0 : _a.key) ||
6730
+ RTE_DEFAULT_LINK_TYPE_KEY;
6731
+ if (previousLinkTypeKey === nextLinkTypeKey) {
6732
+ return;
6733
+ }
6734
+ const currentFormValues = (_d = (await ((_c = (_b = this.renderer.getFormRef()) === null || _b === void 0 ? void 0 : _b.getValue) === null || _c === void 0 ? void 0 : _c.call(_b)))) !== null && _d !== void 0 ? _d : {};
6735
+ const currentSharedTextValue = (_e = currentFormValues.text) !== null && _e !== void 0 ? _e : this.linkEditorStateManager.getSharedTextValue();
6736
+ this.linkEditorStateManager.setSharedTextValue(currentSharedTextValue);
6737
+ const currentTypeValues = Object.assign({}, currentFormValues);
6738
+ delete currentTypeValues.text;
6739
+ const hasAnyValue = Object.values(currentTypeValues).some((value) => value);
6740
+ if (hasAnyValue) {
6741
+ this.linkEditorStateManager.cacheFormValues(previousLinkTypeKey, currentTypeValues);
6742
+ }
6743
+ const savedValues = this.linkEditorStateManager.getCachedFormValues(nextLinkTypeKey);
6744
+ this.linkEditorStateManager.setSelectedLinkTypeKey(nextLinkTypeKey);
6745
+ this.linkEditorStateManager.setSubmitDisabled(true);
6746
+ forceUpdate(this.host);
6747
+ if (savedValues && ((_f = this.renderer.getFormRef()) === null || _f === void 0 ? void 0 : _f.setValue)) {
6748
+ void this.waitForRender().then(() => this.performFormRestore(Object.assign(Object.assign({}, savedValues), { text: this.linkEditorStateManager.getSharedTextValue() })));
6749
+ return;
6750
+ }
6751
+ await ((_h = (_g = this.renderer.getFormRef()) === null || _g === void 0 ? void 0 : _g.reset) === null || _h === void 0 ? void 0 : _h.call(_g));
6752
+ void this.waitForRender().then(() => { var _a; return (_a = this.renderer.getUrlInputRef()) === null || _a === void 0 ? void 0 : _a.doFocus(); });
6753
+ const sharedTextValue = this.linkEditorStateManager.getSharedTextValue();
6754
+ await ((_k = (_j = this.renderer.getFormRef()) === null || _j === void 0 ? void 0 : _j.setValue) === null || _k === void 0 ? void 0 : _k.call(_j, { text: sharedTextValue }));
6755
+ this.syncTextInputValue(sharedTextValue);
6756
+ }
6757
+ /**
6758
+ * Builds and emits the final link payload.
6759
+ *
6760
+ * @returns {Promise<void>} Resolves when the link submit flow completes.
6761
+ */
6762
+ async submitLink() {
6763
+ var _a, _b, _c, _d;
6764
+ const formValues = (_c = (await ((_b = (_a = this.renderer.getFormRef()) === null || _a === void 0 ? void 0 : _a.getValue) === null || _b === void 0 ? void 0 : _b.call(_a)))) !== null && _c !== void 0 ? _c : {};
6765
+ const selectedLinkTypeKey = this.linkEditorStateManager.getSelectedLinkTypeKey();
6766
+ const handler = this.linkTypeHandlers.get(selectedLinkTypeKey);
6767
+ if (!handler) {
6768
+ return;
6769
+ }
6770
+ const deps = {
6771
+ normalizeUrl: this.normalizeUrlByDefaultProtocol.bind(this),
6772
+ buildEmailUrl: this.buildEmailLinkUrl.bind(this),
6773
+ };
6774
+ const text = handler.getTextValue(formValues);
6775
+ let normalizedUrl = handler.buildFinalUrl(formValues, deps);
6776
+ normalizedUrl = this.preserveExistingMailtoUrlIfUnchanged(formValues, normalizedUrl);
6777
+ if (normalizedUrl.length === 0) {
6778
+ if ((_d = this.record) === null || _d === void 0 ? void 0 : _d.url) {
6779
+ this.changeEventEmitter.emit({ action: 'unlink' });
6780
+ await this.renderer.getPopoverRef().hide();
6781
+ }
6782
+ return;
6783
+ }
6784
+ if (normalizedUrl.length > 0) {
6785
+ this.changeEventEmitter.emit({
6786
+ action: 'link',
6787
+ payload: Object.assign({ text: text || handler.getFallbackText(formValues) || normalizedUrl, url: normalizedUrl }, (this.linkTypeConfigController.hasConfiguredLinkTypes()
6788
+ ? { linkType: selectedLinkTypeKey }
6789
+ : {})),
6790
+ });
6791
+ await this.renderer.getPopoverRef().hide();
6792
+ }
6793
+ }
6794
+ /**
6795
+ * Populates the edit form from the active record.
6796
+ *
6797
+ * @returns {Promise<void>} Resolves when the edit form is populated.
6798
+ */
6799
+ async populateEditForm() {
6800
+ var _a, _b, _c, _d, _e;
6801
+ const handler = this.linkTypeHandlers.get(this.linkEditorStateManager.getSelectedLinkTypeKey());
6802
+ if (!handler) {
6803
+ return;
6804
+ }
6805
+ const deps = {
6806
+ parseMailtoUrl: this.parseMailtoUrl.bind(this),
6807
+ normalizeUrl: this.normalizeUrlByDefaultProtocol.bind(this),
6808
+ };
6809
+ const requiredValue = this.linkTypeConfigController.hasConfiguredLinkTypes()
6810
+ ? handler.getRequiredValue(this.record, deps)
6811
+ : '';
6812
+ const initialFormValues = handler.getInitialFormValues(this.record, deps);
6813
+ this.linkEditorStateManager.setSharedTextValue(initialFormValues.text || '');
6814
+ await ((_b = (_a = this.renderer.getFormRef()) === null || _a === void 0 ? void 0 : _a.setValue) === null || _b === void 0 ? void 0 : _b.call(_a, initialFormValues));
6815
+ this.syncTextInputValue(initialFormValues.text || '');
6816
+ this.updateSubmitDisabledState(requiredValue);
6817
+ await ((_d = (_c = this.renderer.getFormRef()) === null || _c === void 0 ? void 0 : _c.setValue) === null || _d === void 0 ? void 0 : _d.call(_c, handler.getInitialFormValues(this.record, deps)));
6818
+ await ((_e = this.renderer.getUrlInputRef()) === null || _e === void 0 ? void 0 : _e.doFocus());
6819
+ }
6820
+ /**
6821
+ * Updates the popover target via the remote invocation registry.
6822
+ *
6823
+ * @returns {void} No return value.
6824
+ */
6825
+ updatePopoverTarget() {
6826
+ remoteInvocationRegistry.call(domNodeSubjectFactory.getSubject(this.renderer.getPopoverRef(), VegaInternalPopoverUpdateTarget), this.target);
6827
+ }
6828
+ /**
6829
+ * Preserves an unchanged mailto URL when the form edits are equivalent.
6830
+ *
6831
+ * @param {Record<string, string>} formValues - Current form values.
6832
+ * @param {string} normalizedUrl - Normalized URL candidate.
6833
+ * @returns {string} The preserved or normalized URL.
6834
+ */
6835
+ preserveExistingMailtoUrlIfUnchanged(formValues, normalizedUrl) {
6836
+ var _a;
6837
+ if (this.linkEditorStateManager.getSelectedLinkTypeKey() !== RTE_EMAIL_LINK_TYPE_KEY ||
6838
+ !((_a = this.record) === null || _a === void 0 ? void 0 : _a.url)) {
6839
+ return normalizedUrl;
6840
+ }
6841
+ const existingUrl = this.record.url;
6842
+ if (!existingUrl.startsWith('mailto:')) {
6843
+ return normalizedUrl;
6844
+ }
6845
+ const existingMailto = this.parseMailtoUrl(existingUrl);
6846
+ const nextEmailAddress = (formValues.emailAddress || '').trim();
6847
+ const nextSubject = (formValues.messageSubject || '').trim();
6848
+ const nextBody = (formValues.messageBody || '').trim();
6849
+ if (nextEmailAddress === existingMailto.emailAddress &&
6850
+ nextSubject === existingMailto.subject &&
6851
+ nextBody === existingMailto.body) {
6852
+ return existingUrl;
6853
+ }
6854
+ return normalizedUrl;
6855
+ }
6856
+ /**
6857
+ * Normalizes a URL using the currently selected link type protocol.
6858
+ *
6859
+ * @param {string} url - URL to normalize.
6860
+ * @returns {string} The normalized URL.
6861
+ */
6862
+ normalizeUrlByDefaultProtocol(url) {
6863
+ return this.linkUrlNormalizer.normalizeUrlByDefaultProtocol(url, this.linkTypeConfigController.getDefaultProtocolForLinkType(this.linkEditorStateManager.getSelectedLinkTypeKey()));
6864
+ }
6865
+ /**
6866
+ * Parses a mailto URL into structured parts.
6867
+ *
6868
+ * @param {string} url - Mailto URL to parse.
6869
+ * @returns {MailtoUrlParts} The parsed mailto parts.
6870
+ */
6871
+ parseMailtoUrl(url) {
6872
+ return this.linkUrlNormalizer.parseMailtoUrl(url);
6873
+ }
6874
+ /**
6875
+ * Builds a mailto URL from the email form fields.
6876
+ *
6877
+ * @param {string} emailAddress - Email address value.
6878
+ * @param {string} subject - Subject value.
6879
+ * @param {string} body - Body value.
6880
+ * @returns {string} The generated mailto URL.
6881
+ */
6882
+ buildEmailLinkUrl(emailAddress, subject, body) {
6883
+ return this.linkUrlNormalizer.buildEmailLinkUrl(emailAddress, subject, body);
6884
+ }
6885
+ /**
6886
+ * Enables or disables submit based on the normalized URL value.
6887
+ *
6888
+ * @param {string} url - URL value to evaluate.
6889
+ * @returns {void} No return value.
6890
+ */
6891
+ updateSubmitDisabledState(url) {
6892
+ const nextDisabled = this.normalizeUrlByDefaultProtocol(url).length === 0;
6893
+ if (this.linkEditorStateManager.getIsSubmitDisabled() !== nextDisabled) {
6894
+ this.linkEditorStateManager.setSubmitDisabled(nextDisabled);
6895
+ forceUpdate(this.host);
6896
+ }
6897
+ }
6898
+ /**
6899
+ * Restores cached form values after the next render.
6900
+ *
6901
+ * @param {Record<string, string>} savedValues - Link type-specific values to restore.
6902
+ * @returns {Promise<void>} Resolves after restoring cached values.
6903
+ */
6904
+ async performFormRestore(savedValues) {
6905
+ var _a, _b, _c, _d, _e;
6906
+ await ((_b = (_a = this.renderer.getFormRef()) === null || _a === void 0 ? void 0 : _a.reset) === null || _b === void 0 ? void 0 : _b.call(_a));
6907
+ await ((_d = (_c = this.renderer.getFormRef()) === null || _c === void 0 ? void 0 : _c.setValue) === null || _d === void 0 ? void 0 : _d.call(_c, savedValues));
6908
+ this.syncTextInputValue(savedValues.text || '');
6909
+ const restoredRequiredValue = savedValues.url || savedValues.emailAddress || '';
6910
+ this.updateSubmitDisabledState(restoredRequiredValue);
6911
+ await ((_e = this.renderer.getUrlInputRef()) === null || _e === void 0 ? void 0 : _e.doFocus());
6912
+ }
6913
+ /**
6914
+ * Keeps text input UI in sync as a fallback when form setValue timing misses visual update.
6915
+ *
6916
+ * @param {string} textValue - Text value to display.
6917
+ * @returns {void} No return value.
6918
+ */
6919
+ syncTextInputValue(textValue) {
6920
+ const textInput = this.renderer.getTextInputRef();
6921
+ if (textInput) {
6922
+ textInput.value = textValue;
6923
+ }
6924
+ }
6925
+ /**
6926
+ * Waits for the host to finish rendering.
6927
+ *
6928
+ * @returns {Promise<unknown>} A promise that resolves after the host renders.
6929
+ */
6930
+ waitForRender() {
6931
+ return waitForComponentDidRender(this.host);
6932
+ }
6933
+ }
6934
+ __decorate$2([
6935
+ MapToComponentField()
6936
+ ], LinkEditorController.prototype, "host", void 0);
6937
+ __decorate$2([
5576
6938
  MapToComponentField({ writable: true })
5577
- ], VegaRichTextLinkEditorRenderer.prototype, "record", void 0);
5578
- __decorate$1([
6939
+ ], LinkEditorController.prototype, "status", void 0);
6940
+ __decorate$2([
5579
6941
  MapToComponentField()
5580
- ], VegaRichTextLinkEditorRenderer.prototype, "changeEventEmitter", void 0);
5581
- __decorate$1([
6942
+ ], LinkEditorController.prototype, "record", void 0);
6943
+ __decorate$2([
5582
6944
  MapToComponentField()
5583
- ], VegaRichTextLinkEditorRenderer.prototype, "resetStatusAfterHide", void 0);
5584
- __decorate$1([
6945
+ ], LinkEditorController.prototype, "changeEventEmitter", void 0);
6946
+ __decorate$2([
5585
6947
  MapToComponentField()
5586
- ], VegaRichTextLinkEditorRenderer.prototype, "translationSlimmer", void 0);
5587
- __decorate$1([
6948
+ ], LinkEditorController.prototype, "resetStatusAfterHide", void 0);
6949
+ __decorate$2([
5588
6950
  MapToComponentField()
5589
- ], VegaRichTextLinkEditorRenderer.prototype, "target", void 0);
5590
- __decorate$1([
6951
+ ], LinkEditorController.prototype, "target", void 0);
6952
+ __decorate$2([
6953
+ MapToComponentField()
6954
+ ], LinkEditorController.prototype, "renderer", void 0);
6955
+ __decorate$2([
6956
+ MapToComponentField()
6957
+ ], LinkEditorController.prototype, "linkTypeConfigController", void 0);
6958
+ __decorate$2([
6959
+ MapToComponentField()
6960
+ ], LinkEditorController.prototype, "linkEditorStateManager", void 0);
6961
+ __decorate$2([
5591
6962
  MapToComponentMethod('componentDidLoad')
5592
- ], VegaRichTextLinkEditorRenderer.prototype, "componentDidLoad", null);
5593
- __decorate$1([
6963
+ ], LinkEditorController.prototype, "componentDidLoad", null);
6964
+ __decorate$2([
5594
6965
  MapToComponentMethod('componentDidRender')
5595
- ], VegaRichTextLinkEditorRenderer.prototype, "componentDidRender", null);
5596
- __decorate$1([
6966
+ ], LinkEditorController.prototype, "componentDidRender", null);
6967
+ __decorate$2([
5597
6968
  MapToComponentMethod('watchStatusChange')
5598
- ], VegaRichTextLinkEditorRenderer.prototype, "watchStatusChange", null);
5599
- __decorate$1([
6969
+ ], LinkEditorController.prototype, "watchStatusChange", null);
6970
+ __decorate$2([
5600
6971
  MapToComponentMethod('watchTargetChange')
5601
- ], VegaRichTextLinkEditorRenderer.prototype, "watchTargetChange", null);
6972
+ ], LinkEditorController.prototype, "watchTargetChange", null);
6973
+
6974
+ var __decorate$1 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
6975
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
6976
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
6977
+ 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;
6978
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6979
+ };
6980
+ /**
6981
+ * Resolves configured link types and their defaults.
6982
+ */
6983
+ class LinkTypeConfigController extends VegaSlimmer {
6984
+ constructor() {
6985
+ super(...arguments);
6986
+ this.configuredLinkTypesCache = null;
6987
+ this.linkTypeHandlers = LINK_TYPE_HANDLER_MAP;
6988
+ }
6989
+ /**
6990
+ * Returns the configured link types, using a cache when available.
6991
+ *
6992
+ * @returns {VegaRTELinkType[]} The configured link types.
6993
+ */
6994
+ getConfiguredLinkTypes() {
6995
+ if (this.configuredLinkTypesCache) {
6996
+ return this.configuredLinkTypesCache;
6997
+ }
6998
+ const configuredLinkTypes = this.resolveConfiguredLinkTypes();
6999
+ this.configuredLinkTypesCache = configuredLinkTypes;
7000
+ return configuredLinkTypes;
7001
+ }
7002
+ /**
7003
+ * Clears the cached configured link types.
7004
+ *
7005
+ * @returns {void} No return value.
7006
+ */
7007
+ invalidateConfiguredLinkTypesCache() {
7008
+ this.configuredLinkTypesCache = null;
7009
+ }
7010
+ /**
7011
+ * Resolves the initial link type key for the current record.
7012
+ *
7013
+ * @param {string} recordLinkType - Link type from the active record.
7014
+ * @param {string} recordUrl - URL from the active record.
7015
+ * @returns {string} The resolved initial link type key.
7016
+ */
7017
+ resolveInitialLinkTypeKey(recordLinkType, recordUrl) {
7018
+ var _a;
7019
+ const configuredLinkTypes = this.getConfiguredLinkTypes();
7020
+ if (recordLinkType &&
7021
+ configuredLinkTypes.some((item) => item.key === recordLinkType)) {
7022
+ return recordLinkType;
7023
+ }
7024
+ const normalizedRecordUrl = (recordUrl || '').trim().toLowerCase();
7025
+ if (normalizedRecordUrl.startsWith('mailto:') &&
7026
+ configuredLinkTypes.some((item) => item.key === RTE_EMAIL_LINK_TYPE_KEY)) {
7027
+ return RTE_EMAIL_LINK_TYPE_KEY;
7028
+ }
7029
+ return ((_a = configuredLinkTypes[0]) === null || _a === void 0 ? void 0 : _a.key) || RTE_DEFAULT_LINK_TYPE_KEY;
7030
+ }
7031
+ /**
7032
+ * Returns whether any configured link types are available.
7033
+ *
7034
+ * @returns {boolean} True when configured link types exist.
7035
+ */
7036
+ hasConfiguredLinkTypes() {
7037
+ return this.getConfiguredLinkTypes().length > 0;
7038
+ }
7039
+ /**
7040
+ * Returns the default protocol for a given link type key.
7041
+ *
7042
+ * @param {string} selectedLinkTypeKey - Selected link type key.
7043
+ * @returns {string | undefined} The default protocol, if configured.
7044
+ */
7045
+ getDefaultProtocolForLinkType(selectedLinkTypeKey) {
7046
+ var _a;
7047
+ const linkConfig = this.getLinkConfig();
7048
+ const selectedLinkType = this.getConfiguredLinkTypes().find((item) => item.key === selectedLinkTypeKey);
7049
+ return (_a = selectedLinkType === null || selectedLinkType === void 0 ? void 0 : selectedLinkType.defaultProtocol) !== null && _a !== void 0 ? _a : linkConfig.defaultProtocol;
7050
+ }
7051
+ /**
7052
+ * Returns the active link configuration for the current editor host.
7053
+ *
7054
+ * @returns {VegaRTELinkExtensionConfig} The active link configuration.
7055
+ */
7056
+ getLinkConfig() {
7057
+ const rteHost = findParent(this.host, 'vega-rich-text-editor');
7058
+ return VegaRTELinkExtension.configStore.get(rteHost) || {};
7059
+ }
7060
+ /**
7061
+ * Normalizes configured link types and filters unsupported entries.
7062
+ *
7063
+ * @returns {VegaRTELinkType[]} The normalized configured link types.
7064
+ */
7065
+ resolveConfiguredLinkTypes() {
7066
+ const linkConfig = this.getLinkConfig();
7067
+ const configLinkTypes = linkConfig.linkTypes || [];
7068
+ const normalizedByKey = new Map();
7069
+ configLinkTypes.forEach((item) => {
7070
+ const key = item.key.trim();
7071
+ if (!key || !LinkTypeConfigController.SUPPORTED_LINK_TYPE_KEYS.has(key)) {
7072
+ return;
7073
+ }
7074
+ if (!normalizedByKey.has(key)) {
7075
+ normalizedByKey.set(key, this.normalizeSupportedLinkType(item, key, linkConfig.defaultProtocol));
7076
+ }
7077
+ });
7078
+ if (normalizedByKey.size === 0) {
7079
+ return [];
7080
+ }
7081
+ if (normalizedByKey.has(RTE_EMAIL_LINK_TYPE_KEY)) {
7082
+ return [
7083
+ normalizedByKey.get(RTE_DEFAULT_LINK_TYPE_KEY) ||
7084
+ this.createDefaultUrlLinkType(linkConfig.defaultProtocol),
7085
+ normalizedByKey.get(RTE_EMAIL_LINK_TYPE_KEY),
7086
+ ];
7087
+ }
7088
+ return [
7089
+ normalizedByKey.get(RTE_DEFAULT_LINK_TYPE_KEY) ||
7090
+ this.createDefaultUrlLinkType(linkConfig.defaultProtocol),
7091
+ ];
7092
+ }
7093
+ /**
7094
+ * Creates the default URL link type descriptor.
7095
+ *
7096
+ * @param {string} configDefaultProtocol - Default protocol from config.
7097
+ * @returns {VegaRTELinkType} The default URL link type descriptor.
7098
+ */
7099
+ createDefaultUrlLinkType(configDefaultProtocol) {
7100
+ const normalizedConfigDefaultProtocol = (configDefaultProtocol || '').trim();
7101
+ return {
7102
+ key: RTE_DEFAULT_LINK_TYPE_KEY,
7103
+ label: this.translationSlimmer.t('URL'),
7104
+ defaultProtocol: normalizedConfigDefaultProtocol || undefined,
7105
+ };
7106
+ }
7107
+ /**
7108
+ * Normalizes a supported link type while preserving its key.
7109
+ *
7110
+ * @param {VegaRTELinkType} item - Raw configured link type.
7111
+ * @param {string} key - Normalized link type key.
7112
+ * @param {string} configDefaultProtocol - Default protocol from config.
7113
+ * @returns {VegaRTELinkType} The normalized link type descriptor.
7114
+ */
7115
+ normalizeSupportedLinkType(item, key, configDefaultProtocol) {
7116
+ var _a, _b;
7117
+ const normalizedItemDefaultProtocol = (item.defaultProtocol || '').trim();
7118
+ const normalizedConfigDefaultProtocol = (configDefaultProtocol || '').trim();
7119
+ const handler = this.linkTypeHandlers.get(key);
7120
+ const fallbackDefaultProtocol = (_a = handler === null || handler === void 0 ? void 0 : handler.defaultFallbackProtocol) !== null && _a !== void 0 ? _a : (normalizedConfigDefaultProtocol || undefined);
7121
+ return Object.assign(Object.assign({}, item), { key, label: ((_b = item.label) === null || _b === void 0 ? void 0 : _b.trim()) || this.getDefaultLinkTypeLabel(key), defaultProtocol: normalizedItemDefaultProtocol || fallbackDefaultProtocol });
7122
+ }
7123
+ /**
7124
+ * Returns the translated default label for a link type key.
7125
+ *
7126
+ * @param {string} key - Link type key.
7127
+ * @returns {string} The translated label for the link type.
7128
+ */
7129
+ getDefaultLinkTypeLabel(key) {
7130
+ return key === RTE_EMAIL_LINK_TYPE_KEY
7131
+ ? this.translationSlimmer.t('Email')
7132
+ : this.translationSlimmer.t('URL');
7133
+ }
7134
+ }
7135
+ LinkTypeConfigController.SUPPORTED_LINK_TYPE_KEYS = new Set(RTE_SUPPORTED_LINK_TYPE_KEYS);
7136
+ __decorate$1([
7137
+ MapToComponentField()
7138
+ ], LinkTypeConfigController.prototype, "host", void 0);
7139
+ __decorate$1([
7140
+ MapToComponentField()
7141
+ ], LinkTypeConfigController.prototype, "translationSlimmer", void 0);
7142
+
7143
+ /**
7144
+ * Stores link editor state across popover interactions.
7145
+ */
7146
+ class LinkEditorStateManager extends VegaSlimmer {
7147
+ constructor() {
7148
+ super(...arguments);
7149
+ this.isSubmitDisabled = true;
7150
+ this.selectedLinkTypeKey = RTE_DEFAULT_LINK_TYPE_KEY;
7151
+ this.shouldResetStatusOnNextShow = false;
7152
+ this.formValuesByType = new Map();
7153
+ this.sharedTextValue = '';
7154
+ }
7155
+ /**
7156
+ * Returns whether submit is currently disabled.
7157
+ *
7158
+ * @returns {boolean} True when submit is disabled.
7159
+ */
7160
+ getIsSubmitDisabled() {
7161
+ return this.isSubmitDisabled;
7162
+ }
7163
+ /**
7164
+ * Updates the submit disabled state.
7165
+ *
7166
+ * @param {boolean} isSubmitDisabled - Next disabled state.
7167
+ * @returns {void} No return value.
7168
+ */
7169
+ setSubmitDisabled(isSubmitDisabled) {
7170
+ this.isSubmitDisabled = isSubmitDisabled;
7171
+ }
7172
+ /**
7173
+ * Returns the selected link type key.
7174
+ *
7175
+ * @returns {string} The selected link type key.
7176
+ */
7177
+ getSelectedLinkTypeKey() {
7178
+ return this.selectedLinkTypeKey;
7179
+ }
7180
+ /**
7181
+ * Updates the selected link type key.
7182
+ *
7183
+ * @param {string} selectedLinkTypeKey - Next link type key.
7184
+ * @returns {void} No return value.
7185
+ */
7186
+ setSelectedLinkTypeKey(selectedLinkTypeKey) {
7187
+ this.selectedLinkTypeKey = selectedLinkTypeKey;
7188
+ }
7189
+ /**
7190
+ * Returns whether the status should reset on the next show.
7191
+ *
7192
+ * @returns {boolean} True when the next show should reset the status.
7193
+ */
7194
+ getShouldResetStatusOnNextShow() {
7195
+ return this.shouldResetStatusOnNextShow;
7196
+ }
7197
+ /**
7198
+ * Updates whether the status should reset on the next show.
7199
+ *
7200
+ * @param {boolean} shouldResetStatusOnNextShow - Next reset flag.
7201
+ * @returns {void} No return value.
7202
+ */
7203
+ setShouldResetStatusOnNextShow(shouldResetStatusOnNextShow) {
7204
+ this.shouldResetStatusOnNextShow = shouldResetStatusOnNextShow;
7205
+ }
7206
+ /**
7207
+ * Clears all cached form values.
7208
+ *
7209
+ * @returns {void} No return value.
7210
+ */
7211
+ clearFormValues() {
7212
+ this.formValuesByType.clear();
7213
+ this.sharedTextValue = '';
7214
+ }
7215
+ /**
7216
+ * Returns the text value shared across link types.
7217
+ *
7218
+ * @returns {string} Shared text value.
7219
+ */
7220
+ getSharedTextValue() {
7221
+ return this.sharedTextValue;
7222
+ }
7223
+ /**
7224
+ * Updates the text value shared across link types.
7225
+ *
7226
+ * @param {string} textValue - Next shared text value.
7227
+ * @returns {void} No return value.
7228
+ */
7229
+ setSharedTextValue(textValue) {
7230
+ this.sharedTextValue = textValue;
7231
+ }
7232
+ /**
7233
+ * Stores form values for a given link type key.
7234
+ *
7235
+ * @param {string} linkTypeKey - Link type cache key.
7236
+ * @param {Record<string, string>} formValues - Form values to cache.
7237
+ * @returns {void} No return value.
7238
+ */
7239
+ cacheFormValues(linkTypeKey, formValues) {
7240
+ this.formValuesByType.set(linkTypeKey, formValues);
7241
+ }
7242
+ /**
7243
+ * Returns cached form values for a given link type key.
7244
+ *
7245
+ * @param {string} linkTypeKey - Link type cache key.
7246
+ * @returns {Record<string, string> | undefined} The cached form values, if any.
7247
+ */
7248
+ getCachedFormValues(linkTypeKey) {
7249
+ return this.formValuesByType.get(linkTypeKey);
7250
+ }
7251
+ }
5602
7252
 
5603
7253
  const vegaRichTextLinkEditorCss = ":host{display:contents}:host vega-popover{display:inline}";
5604
7254
 
@@ -5621,6 +7271,9 @@ const VegaRichTextLinkEditor = class {
5621
7271
  this.translationSlimmer = new TranslationSlimmer();
5622
7272
  this.vegaComponentUsageRuntimeMetricsSlimmer = new VegaComponentUsageRuntimeMetricsSlimmer();
5623
7273
  this.renderer = new VegaRichTextLinkEditorRenderer();
7274
+ this.linkEditorController = new LinkEditorController();
7275
+ this.linkTypeConfigController = new LinkTypeConfigController();
7276
+ this.linkEditorStateManager = new LinkEditorStateManager();
5624
7277
  this.changeEventEmitter = createEventEmitSlimmer(VegaRichTextLinkEditor, VegaChange);
5625
7278
  /**
5626
7279
  * Specifies the status of the link editor
@@ -5648,6 +7301,15 @@ const VegaRichTextLinkEditor = class {
5648
7301
  async show() {
5649
7302
  await this.renderer.getPopoverRef().show();
5650
7303
  }
7304
+ /**
7305
+ * Provide a method to hide the link editor popover
7306
+ *
7307
+ * @vegaVersion 2.97.0
7308
+ */
7309
+ async hide() {
7310
+ var _a;
7311
+ await ((_a = this.renderer.getPopoverRef()) === null || _a === void 0 ? void 0 : _a.hide());
7312
+ }
5651
7313
  render() {
5652
7314
  return sanitizeVegaComponent(h(Host, null, this.renderer.render()), this.host);
5653
7315
  }
@@ -5669,6 +7331,15 @@ __decorate([
5669
7331
  __decorate([
5670
7332
  InjectVegaSlimmer()
5671
7333
  ], VegaRichTextLinkEditor.prototype, "renderer", void 0);
7334
+ __decorate([
7335
+ InjectVegaSlimmer()
7336
+ ], VegaRichTextLinkEditor.prototype, "linkEditorController", void 0);
7337
+ __decorate([
7338
+ InjectVegaSlimmer()
7339
+ ], VegaRichTextLinkEditor.prototype, "linkTypeConfigController", void 0);
7340
+ __decorate([
7341
+ InjectVegaSlimmer()
7342
+ ], VegaRichTextLinkEditor.prototype, "linkEditorStateManager", void 0);
5672
7343
  __decorate([
5673
7344
  InjectVegaSlimmer()
5674
7345
  ], VegaRichTextLinkEditor.prototype, "changeEventEmitter", void 0);