@globalpayments/vega 2.98.0 → 2.100.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 (645) hide show
  1. package/dist/cjs/{accessibility-88f8af84.js → accessibility-6ca2a237.js} +21 -0
  2. package/dist/cjs/{action-color-accessibility-validator-24498816.js → action-color-accessibility-validator-b8a9ef0f.js} +2 -2
  3. package/dist/cjs/{app-globals-b3f05631.js → app-globals-48d067a7.js} +11 -10
  4. package/dist/cjs/{aria-attributes-value-mapper-9a41b9cf.js → aria-attributes-value-mapper-e8c6b0e0.js} +1 -1
  5. package/dist/cjs/{code-block-d78c2b2c.js → code-block-3b42c364.js} +95 -6
  6. package/dist/cjs/{component-global-style-slimmer-93c5fb50.js → component-global-style-slimmer-ba588eb4.js} +1 -1
  7. package/dist/cjs/{component-value-history-controller-slimmer.abstract-beb00fea.js → component-value-history-controller-slimmer.abstract-bbe3bcaf.js} +24 -5
  8. package/dist/cjs/{content-state-78a620a9.js → content-state-87a06c1a.js} +104 -8
  9. package/dist/cjs/{dark-mode-style-controller-32d4054a.js → dark-mode-style-controller-f3da3342.js} +2 -2
  10. package/dist/cjs/{date-required-rule-5250f26d.js → date-required-rule-45c802d3.js} +1 -1
  11. package/dist/cjs/{design-token-74674ee7.js → design-token-9d762da0.js} +3 -3
  12. package/dist/cjs/{element-appender-slimmer-597e9e48.js → element-appender-slimmer-f7ba5d9a.js} +2 -2
  13. package/dist/cjs/{form-field-controller-slimmer-a743be34.js → form-field-controller-slimmer-fbaddc91.js} +2 -2
  14. package/dist/cjs/{image-annotation-action-85c4bd83.js → image-annotation-action-03d3e01a.js} +7 -6
  15. package/dist/cjs/{image-extension-260fa69c.js → image-extension-ccda26d3.js} +2 -2
  16. package/dist/cjs/{index-592b4052.js → index-5d1adcd1.js} +86 -0
  17. package/dist/cjs/index.cjs.js +20 -19
  18. package/dist/cjs/{inject-keyboard-manager-6a6f5c9f.js → inject-keyboard-manager-540f0876.js} +1 -1
  19. package/dist/cjs/{internal-calendar-period-factory-dfcdd3f6.js → internal-calendar-period-factory-b11918ee.js} +1 -1
  20. package/dist/cjs/{internal-translation-controller-1dac2df8.js → internal-translation-controller-27bfc8c7.js} +17 -0
  21. package/dist/cjs/{keyboard-manager-c56033b1.js → keyboard-manager-16e96b62.js} +12 -5
  22. package/dist/cjs/{keyboard-manager-slimmer-7043a106.js → keyboard-manager-slimmer-0a4e556d.js} +1 -1
  23. package/dist/cjs/{link-extension-220ff6a9.js → link-extension-71eeaa9f.js} +26 -7
  24. package/dist/cjs/loader.cjs.js +14 -14
  25. package/dist/cjs/{month-view-generator-7b704a80.js → month-view-generator-0a3e04de.js} +1 -1
  26. package/dist/cjs/overlay-escape-coordination-901d8942.js +38 -0
  27. package/dist/cjs/{public-rules-5657bce4.js → public-rules-3dc5d02d.js} +9 -9
  28. package/dist/cjs/{range-c5afd53a.js → range-d29751e3.js} +1 -1
  29. package/dist/cjs/{responsive-format-facade-493d1763.js → responsive-format-facade-c6d7f0a1.js} +1 -1
  30. package/dist/cjs/{rich-text-editor-required-rule-385c1b61.js → rich-text-editor-required-rule-05de7f0c.js} +1 -1
  31. package/dist/cjs/{split-cell-operation-873d5db7.js → split-cell-operation-ef783850.js} +14 -4
  32. package/dist/cjs/{state-border-formatter-711c7aaa.js → state-border-formatter-dda9109a.js} +1 -1
  33. package/dist/cjs/{string-format-strategy.abstract-b61bdcbd.js → string-format-strategy.abstract-3a968a59.js} +1 -1
  34. package/dist/cjs/{string-input-formatter-slimmer-ef65cca7.js → string-input-formatter-slimmer-9747039f.js} +1 -1
  35. package/dist/cjs/{string-mask-strategy-ad3fa0ac.js → string-mask-strategy-d9f85c21.js} +2 -2
  36. package/dist/cjs/{style-formatter-8f711cb0.js → style-formatter-d21a9784.js} +2 -2
  37. package/dist/cjs/{time-required-rule-87417359.js → time-required-rule-580cbd3d.js} +1 -1
  38. package/dist/cjs/{token-extension-78b5a026.js → token-extension-8d7bd451.js} +3773 -252
  39. package/dist/cjs/{translation-slimmer-77c7f37d.js → translation-slimmer-31cd5a57.js} +1 -1
  40. package/dist/cjs/{type-guard-a57ef3ac.js → type-guard-00b8efc0.js} +1 -1
  41. package/dist/cjs/{valid-credit-card-number-rule-4c0a3040.js → valid-credit-card-number-rule-70885128.js} +1 -1
  42. package/dist/cjs/vega-accordion.cjs.entry.js +6 -6
  43. package/dist/cjs/vega-app-footer.cjs.entry.js +2 -2
  44. package/dist/cjs/vega-app-header-button.cjs.entry.js +6 -6
  45. package/dist/cjs/vega-banner.cjs.entry.js +1 -1
  46. package/dist/cjs/vega-box.cjs.entry.js +7 -7
  47. package/dist/cjs/vega-brand-logo.cjs.entry.js +2 -2
  48. package/dist/cjs/vega-breadcrumb.cjs.entry.js +2 -2
  49. package/dist/cjs/vega-button-circle.cjs.entry.js +7 -7
  50. package/dist/cjs/vega-button-group_2.cjs.entry.js +13 -6
  51. package/dist/cjs/vega-button-link.cjs.entry.js +4 -4
  52. package/dist/cjs/vega-button.cjs.entry.js +22 -6
  53. package/dist/cjs/vega-calendar_5.cjs.entry.js +22 -11
  54. package/dist/cjs/vega-card.cjs.entry.js +5 -5
  55. package/dist/cjs/vega-carousel.cjs.entry.js +4 -4
  56. package/dist/cjs/vega-checkbox_2.cjs.entry.js +4 -4
  57. package/dist/cjs/vega-chip.cjs.entry.js +6 -6
  58. package/dist/cjs/vega-code-block.cjs.entry.js +12 -12
  59. package/dist/cjs/vega-color-picker.cjs.entry.js +4 -4
  60. package/dist/cjs/vega-color-swatch-picker.cjs.entry.js +4 -4
  61. package/dist/cjs/vega-color-swatch.cjs.entry.js +3 -3
  62. package/dist/cjs/vega-combo-box.cjs.entry.js +10 -10
  63. package/dist/cjs/vega-counter-badge.cjs.entry.js +2 -2
  64. package/dist/cjs/vega-date-picker_2.cjs.entry.js +15 -15
  65. package/dist/cjs/vega-dialog_2.cjs.entry.js +72 -6
  66. package/dist/cjs/vega-divider.cjs.entry.js +5 -5
  67. package/dist/cjs/vega-dropdown_5.cjs.entry.js +116 -24
  68. package/dist/cjs/vega-env-manager-23b8b23c.js +2 -2
  69. package/dist/cjs/vega-field-label.cjs.entry.js +27 -34
  70. package/dist/cjs/vega-file-uploader.cjs.entry.js +5 -5
  71. package/dist/cjs/vega-flag-icon.cjs.entry.js +5 -5
  72. package/dist/cjs/vega-flex.cjs.entry.js +6 -6
  73. package/dist/cjs/vega-font.cjs.entry.js +5 -5
  74. package/dist/cjs/vega-form.cjs.entry.js +2 -2
  75. package/dist/cjs/vega-grid.cjs.entry.js +5 -5
  76. package/dist/cjs/vega-icon.cjs.entry.js +6 -6
  77. package/dist/cjs/vega-image-uploader.cjs.entry.js +8 -8
  78. package/dist/cjs/vega-input-credit-card.cjs.entry.js +7 -7
  79. package/dist/cjs/vega-input-numeric.cjs.entry.js +6 -6
  80. package/dist/cjs/vega-input-passcode.cjs.entry.js +6 -6
  81. package/dist/cjs/vega-input-phone-number.cjs.entry.js +42 -8
  82. package/dist/cjs/vega-input-range.cjs.entry.js +5 -5
  83. package/dist/cjs/vega-input-select.cjs.entry.js +25 -8
  84. package/dist/cjs/vega-input.cjs.entry.js +9 -9
  85. package/dist/cjs/vega-left-nav_5.cjs.entry.js +10 -10
  86. package/dist/cjs/vega-loader-wrapper_2.cjs.entry.js +3 -3
  87. package/dist/cjs/vega-page-notification_2.cjs.entry.js +1 -1
  88. package/dist/cjs/vega-pagination-page-size-selector-mobile.cjs.entry.js +2 -2
  89. package/dist/cjs/vega-pagination.cjs.entry.js +4 -4
  90. package/dist/cjs/vega-popover_2.cjs.entry.js +58 -9
  91. package/dist/cjs/vega-progress-tracker_2.cjs.entry.js +4 -4
  92. package/dist/cjs/vega-radio_2.cjs.entry.js +7 -7
  93. package/dist/cjs/vega-rich-text-content.cjs.entry.js +44 -13
  94. package/dist/cjs/vega-rich-text-editor_4.cjs.entry.js +767 -248
  95. package/dist/cjs/vega-rich-text-find-replace-panel.cjs.entry.js +3 -3
  96. package/dist/cjs/vega-rich-text-special-characters-panel.cjs.entry.js +5 -5
  97. package/dist/cjs/vega-rich-text-table-properties_3.cjs.entry.js +158 -105
  98. package/dist/cjs/vega-selection-chip_2.cjs.entry.js +6 -6
  99. package/dist/cjs/vega-selection-tile_2.cjs.entry.js +3 -3
  100. package/dist/cjs/vega-sidenav_3.cjs.entry.js +4 -4
  101. package/dist/cjs/vega-signature-capture.cjs.entry.js +8 -8
  102. package/dist/cjs/vega-stepper.cjs.entry.js +3 -3
  103. package/dist/cjs/vega-tab-group_2.cjs.entry.js +22 -9
  104. package/dist/cjs/vega-table_11.cjs.entry.js +82 -46
  105. package/dist/cjs/vega-textarea.cjs.entry.js +3 -3
  106. package/dist/cjs/vega-time-picker_2.cjs.entry.js +11 -11
  107. package/dist/cjs/vega-toggle-switch.cjs.entry.js +4 -4
  108. package/dist/cjs/vega-tooltip_2.cjs.entry.js +6 -6
  109. package/dist/cjs/vega.cjs.js +14 -14
  110. package/dist/collection/components/vega-button/vega-button.js +17 -2
  111. package/dist/collection/components/vega-button-group/vega-button-group-item/slimmers/renderers/vega-button-group-item-renderer.js +13 -6
  112. package/dist/collection/components/vega-button-link/vega-button-link.js +2 -2
  113. package/dist/collection/components/vega-calendar/slimmers/common/renderers/vega-calendar-event-item-renderer.js +5 -2
  114. package/dist/collection/components/vega-calendar/vega-calendar-event-preview/slimmers/renderers/vega-calendar-event-preview-detail-renderer.js +9 -1
  115. package/dist/collection/components/vega-code-block/vega-code-block.css +4 -4
  116. package/dist/collection/components/vega-counter-badge/vega-counter-badge.js +2 -2
  117. package/dist/collection/components/vega-dropdown/slimmers/controllers/vega-dropdown-keyboard-controller.js +148 -0
  118. package/dist/collection/components/vega-dropdown/slimmers/controllers/vega-dropdown-scrollable-controller.js +5 -2
  119. package/dist/collection/components/vega-dropdown/slimmers/renderers/vega-dropdown-renderer.js +17 -0
  120. package/dist/collection/components/vega-dropdown/vega-dropdown-group/slimmers/renderers/vega-dropdown-group-renderer.js +6 -4
  121. package/dist/collection/components/vega-dropdown/vega-dropdown-item/slimmers/renderers/vega-dropdown-item-renderer.js +12 -4
  122. package/dist/collection/components/vega-dropdown/vega-dropdown-item/vega-dropdown-item.css +2 -1
  123. package/dist/collection/components/vega-dropdown/vega-dropdown.js +1 -1
  124. package/dist/collection/components/vega-field-label/slimmers/renderers/vega-field-label-label-announcement-renderer.js +21 -30
  125. package/dist/collection/components/vega-field-label/vega-field-label.css +1 -0
  126. package/dist/collection/components/vega-field-label/vega-field-label.js +7 -5
  127. package/dist/collection/components/vega-input-select/slimmers/renderers/vega-input-select-dropdown-renderer.js +19 -2
  128. package/dist/collection/components/vega-modal/slimmers/controllers/vega-modal-open-state-controller.js +66 -0
  129. package/dist/collection/components/vega-popover/slimmers/renderers/vega-popover-appender-renderer.js +17 -0
  130. package/dist/collection/components/vega-popover/vega-popover.js +33 -1
  131. package/dist/collection/components/vega-rich-text-content/slimmers/renderers/vega-rich-text-content-renderer.js +4 -1
  132. package/dist/collection/components/vega-rich-text-editor/constants/constant.js +25 -0
  133. package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/commit-value-strategy.js +13 -0
  134. package/dist/collection/components/vega-rich-text-editor/dto/actions/commit-value-action.js +20 -0
  135. package/dist/collection/components/vega-rich-text-editor/dto/annotations/text-style-default-styles.js +2 -1
  136. package/dist/collection/components/vega-rich-text-editor/dto/blocks/block.abstract.js +22 -0
  137. package/dist/collection/components/vega-rich-text-editor/dto/blocks/list-item-block.js +10 -0
  138. package/dist/collection/components/vega-rich-text-editor/dto/content-state.js +11 -0
  139. package/dist/collection/components/vega-rich-text-editor/dto/filter-styles-strategies/filter-styles-strategy-registry.js +2 -1
  140. package/dist/collection/components/vega-rich-text-editor/dto/filter-styles-strategies/filter-styles-strategy.abstract.js +5 -2
  141. package/dist/collection/components/vega-rich-text-editor/dto/filter-styles-strategies/text-node/title-heading-node-filter-styles-strategy.js +36 -2
  142. package/dist/collection/components/vega-rich-text-editor/dto/nodes/code-block-node.js +6 -0
  143. package/dist/collection/components/vega-rich-text-editor/dto/nodes/node.abstract.js +8 -0
  144. package/dist/collection/components/vega-rich-text-editor/dto/nodes/text-node.js +6 -0
  145. package/dist/collection/components/vega-rich-text-editor/dto/renderers/blocks/block-text-nodes-renderer.abstract.js +20 -3
  146. package/dist/collection/components/vega-rich-text-editor/dto/renderers/nodes/text-node-renderer.js +12 -0
  147. package/dist/collection/components/vega-rich-text-editor/extensions/base-toolbar-button-renderer.js +30 -18
  148. package/dist/collection/components/vega-rich-text-editor/extensions/block-boundary-registry.js +34 -0
  149. package/dist/collection/components/vega-rich-text-editor/extensions/blockquote/renderers/blockquote-toolbar-button-renderer.js +1 -0
  150. package/dist/collection/components/vega-rich-text-editor/extensions/copy/copy-toolbar-button-renderer.js +1 -0
  151. package/dist/collection/components/vega-rich-text-editor/extensions/cut/cut-toolbar-button-renderer.js +1 -0
  152. package/dist/collection/components/vega-rich-text-editor/extensions/extension.abstract.js +20 -0
  153. package/dist/collection/components/vega-rich-text-editor/extensions/find-replace/slimmer/renderers/find-replace-toolbar-button-renderer.js +51 -0
  154. package/dist/collection/components/vega-rich-text-editor/extensions/find-replace/vega-rich-text-find-replace-panel/slimmers/renderers/find-replace-panel-renderer.js +2 -2
  155. package/dist/collection/components/vega-rich-text-editor/extensions/fullscreen/fullscreen-toolbar-button-renderer.js +3 -0
  156. package/dist/collection/components/vega-rich-text-editor/extensions/functions/action-handler-strategies/insert-function-block-strategy.js +3 -2
  157. package/dist/collection/components/vega-rich-text-editor/extensions/functions/constants.js +8 -0
  158. package/dist/collection/components/vega-rich-text-editor/extensions/functions/dto/function-block.js +14 -3
  159. package/dist/collection/components/vega-rich-text-editor/extensions/functions/dto/logic-control-block.js +2 -1
  160. package/dist/collection/components/vega-rich-text-editor/extensions/functions/dto/logic-control-node.js +6 -0
  161. package/dist/collection/components/vega-rich-text-editor/extensions/functions/element-to-dto-strategies/div-containing-function-block-strategy.js +19 -0
  162. package/dist/collection/components/vega-rich-text-editor/extensions/functions/element-to-dto-strategies/div-to-function-block-strategy.js +9 -5
  163. package/dist/collection/components/vega-rich-text-editor/extensions/functions/element-to-dto-strategies/div-to-function-content-strategy.js +3 -3
  164. package/dist/collection/components/vega-rich-text-editor/extensions/functions/element-to-dto-strategies/div-to-logic-control-block-strategy.js +4 -2
  165. package/dist/collection/components/vega-rich-text-editor/extensions/functions/function-extension.js +18 -0
  166. package/dist/collection/components/vega-rich-text-editor/extensions/functions/renderers/function-block-renderer.js +5 -2
  167. package/dist/collection/components/vega-rich-text-editor/extensions/functions/renderers/function-toolbar-button-renderer.js +1 -0
  168. package/dist/collection/components/vega-rich-text-editor/extensions/functions/renderers/logic-control-block-renderer.js +2 -1
  169. package/dist/collection/components/vega-rich-text-editor/extensions/functions/utils.js +36 -0
  170. package/dist/collection/components/vega-rich-text-editor/extensions/horizontal-line/renderers/horizontal-line-toolbar-button-renderer.js +1 -0
  171. package/dist/collection/components/vega-rich-text-editor/extensions/languages/language-extension.js +1 -0
  172. package/dist/collection/components/vega-rich-text-editor/extensions/languages/language-toolbar-button-renderer.js +5 -3
  173. package/dist/collection/components/vega-rich-text-editor/extensions/line-height/line-height-toolbar-button-renderer.js +16 -0
  174. package/dist/collection/components/vega-rich-text-editor/extensions/paste/action-handler-strategies/image-replace-src-strategy.js +21 -0
  175. package/dist/collection/components/vega-rich-text-editor/extensions/paste/actions/image-replace-src-action.js +13 -0
  176. package/dist/collection/components/vega-rich-text-editor/extensions/paste/parse-local-images-helper/paste-image-parser.js +295 -0
  177. package/dist/collection/components/vega-rich-text-editor/extensions/paste/parse-local-images-helper/pending-image-registry.js +116 -0
  178. package/dist/collection/components/vega-rich-text-editor/extensions/paste/paste-chooser-ui.js +13 -4
  179. package/dist/collection/components/vega-rich-text-editor/extensions/paste/paste-extension.js +70 -7
  180. package/dist/collection/components/vega-rich-text-editor/extensions/paste/strategies/default-paste-strategy.js +38 -0
  181. package/dist/collection/components/vega-rich-text-editor/extensions/paste/strategies/paste-processing-strategy.abstract.js +55 -0
  182. package/dist/collection/components/vega-rich-text-editor/extensions/paste/strategies/paste-strategy-selector.js +59 -0
  183. package/dist/collection/components/vega-rich-text-editor/extensions/paste/strategies/word-paste-strategy.js +416 -0
  184. package/dist/collection/components/vega-rich-text-editor/extensions/paste/word-paste-transformers/word-structure-code-block-transformer.js +106 -0
  185. package/dist/collection/components/vega-rich-text-editor/extensions/paste/word-paste-transformers/word-structure-image-transformer.js +198 -0
  186. package/dist/collection/components/vega-rich-text-editor/extensions/paste/word-paste-transformers/word-structure-list-transformer.js +591 -0
  187. package/dist/collection/components/vega-rich-text-editor/extensions/paste/word-paste-transformers/word-structure-paragraph-transformer.js +112 -0
  188. package/dist/collection/components/vega-rich-text-editor/extensions/paste/word-paste-transformers/word-structure-table-transformer.js +551 -0
  189. package/dist/collection/components/vega-rich-text-editor/extensions/paste/word-paste-transformers/word-structure-transformer.js +7 -0
  190. package/dist/collection/components/vega-rich-text-editor/extensions/special-characters/special-characters-toolbar-button-renderer.js +2 -0
  191. package/dist/collection/components/vega-rich-text-editor/extensions/table/dto/table-block.js +10 -0
  192. package/dist/collection/components/vega-rich-text-editor/extensions/table/renderers/table-caption-renderer.js +3 -9
  193. package/dist/collection/components/vega-rich-text-editor/extensions/table/renderers/table-cell-renderer.js +2 -2
  194. package/dist/collection/components/vega-rich-text-editor/extensions/table/renderers/table-dynamic-popover-renderer.js +81 -1
  195. package/dist/collection/components/vega-rich-text-editor/extensions/table/renderers/table-popover-base-renderer.js +148 -0
  196. package/dist/collection/components/vega-rich-text-editor/extensions/table/renderers/table-renderer.js +151 -5
  197. package/dist/collection/components/vega-rich-text-editor/extensions/table/renderers/table-setting-popover-renderer.js +144 -2
  198. package/dist/collection/components/vega-rich-text-editor/extensions/table/table-selection.js +26 -1
  199. package/dist/collection/components/vega-rich-text-editor/extensions/table/table-toolbar-button-renderer.js +1 -0
  200. package/dist/collection/components/vega-rich-text-editor/extensions/table/vega-rich-text-table-properties/slimmers/renderers/vega-rich-text-cell-properties-form-field-renderer.js +11 -2
  201. package/dist/collection/components/vega-rich-text-editor/extensions/table/vega-rich-text-table-properties/slimmers/renderers/vega-rich-text-table-properties-basic-form-field-renderer.abstract.js +5 -2
  202. package/dist/collection/components/vega-rich-text-editor/extensions/table/vega-rich-text-table-properties/slimmers/renderers/vega-rich-text-table-properties-form-field-renderer.js +5 -1
  203. package/dist/collection/components/vega-rich-text-editor/extensions/table/vega-rich-text-table-properties/vega-rich-text-table-properties.css +5 -0
  204. package/dist/collection/components/vega-rich-text-editor/extensions/table/vega-rich-text-table-properties/vega-rich-text-table-properties.js +16 -1
  205. package/dist/collection/components/vega-rich-text-editor/extensions/table/vega-rich-text-table-setting/slimmers/renderers/caption-button-slimmer.js +1 -0
  206. package/dist/collection/components/vega-rich-text-editor/extensions/table/vega-rich-text-table-setting/slimmers/renderers/cell-properties-button-slimmer.js +1 -0
  207. package/dist/collection/components/vega-rich-text-editor/extensions/table/vega-rich-text-table-setting/slimmers/renderers/column-button-slimmer.js +10 -9
  208. package/dist/collection/components/vega-rich-text-editor/extensions/table/vega-rich-text-table-setting/slimmers/renderers/merge-cells-button-slimmer.js +9 -8
  209. package/dist/collection/components/vega-rich-text-editor/extensions/table/vega-rich-text-table-setting/slimmers/renderers/row-button-slimmer.js +25 -10
  210. package/dist/collection/components/vega-rich-text-editor/extensions/table/vega-rich-text-table-setting/slimmers/renderers/table-properties-button-slimmer.js +1 -0
  211. package/dist/collection/components/vega-rich-text-editor/extensions/table/vega-rich-text-table-setting/slimmers/renderers/table-setting-button-slimmer.abstract.js +5 -4
  212. package/dist/collection/components/vega-rich-text-editor/extensions/table/vega-rich-text-table-setting/slimmers/renderers/vega-rich-text-table-setting-renderer.js +1 -1
  213. package/dist/collection/components/vega-rich-text-editor/extensions/table/vega-rich-text-table-setting/vega-rich-text-table-setting.css +10 -0
  214. package/dist/collection/components/vega-rich-text-editor/extensions/table/vega-rich-text-table-setting/vega-rich-text-table-setting.js +2 -0
  215. package/dist/collection/components/vega-rich-text-editor/extensions/tokens/span-to-token-node-strategy.js +4 -2
  216. package/dist/collection/components/vega-rich-text-editor/extensions/tokens/token-node.js +44 -0
  217. package/dist/collection/components/vega-rich-text-editor/extensions/tokens/token-toolbar-button-renderer.js +1 -0
  218. package/dist/collection/components/vega-rich-text-editor/extensions/word-count/action-handler-interceptors/prevent-hard-limit-exceed-interceptor.js +70 -0
  219. package/dist/collection/components/vega-rich-text-editor/extensions/word-count/type.js +1 -0
  220. package/dist/collection/components/vega-rich-text-editor/extensions/word-count/word-count-extension.js +62 -0
  221. package/dist/collection/components/vega-rich-text-editor/public-api.js +1 -0
  222. package/dist/collection/components/vega-rich-text-editor/slimmers/controllers/extension-controller.js +2 -0
  223. package/dist/collection/components/vega-rich-text-editor/slimmers/controllers/helper/element-to-dto-strategy/annotation-handler/text-style-annotation-handler.js +7 -4
  224. package/dist/collection/components/vega-rich-text-editor/slimmers/controllers/helper/element-to-dto-strategy/continue-inline-to-rte-text-block-strategy.js +17 -0
  225. package/dist/collection/components/vega-rich-text-editor/slimmers/controllers/helper/input-event-handler/insert-paste-handler.js +18 -4
  226. package/dist/collection/components/vega-rich-text-editor/slimmers/controllers/insert-composition-text-controller.js +2 -1
  227. package/dist/collection/components/vega-rich-text-editor/slimmers/controllers/selection-controller.js +21 -2
  228. package/dist/collection/components/vega-rich-text-editor/slimmers/controllers/user-input-controller.js +7 -1
  229. package/dist/collection/components/vega-rich-text-editor/slimmers/controllers/value-controller.js +52 -2
  230. package/dist/collection/components/vega-rich-text-editor/slimmers/controllers/word-count-controller.js +79 -0
  231. package/dist/collection/components/vega-rich-text-editor/slimmers/renderers/toolbar-renderer.js +6 -3
  232. package/dist/collection/components/vega-rich-text-editor/slimmers/renderers/tools/bullets-numbers/bullets-numbers-toolbar-button-slimmer.js +2 -1
  233. package/dist/collection/components/vega-rich-text-editor/slimmers/renderers/tools/horizontal-alignment/horizontal-alignment-toolbar-button-slimmer.js +2 -1
  234. package/dist/collection/components/vega-rich-text-editor/slimmers/renderers/tools/image-toolbar-button-slimmer.js +3 -2
  235. package/dist/collection/components/vega-rich-text-editor/slimmers/renderers/tools/link-toolbar-button-slimmer.js +111 -2
  236. package/dist/collection/components/vega-rich-text-editor/slimmers/renderers/tools/source-edit-toolbar-button-slimmer.js +24 -6
  237. package/dist/collection/components/vega-rich-text-editor/slimmers/renderers/tools/text-color-toolbar-button-slimmer.js +1 -1
  238. package/dist/collection/components/vega-rich-text-editor/slimmers/renderers/tools/text-styles-toolbar-button-slimmer.js +1 -1
  239. package/dist/collection/components/vega-rich-text-editor/slimmers/renderers/tools/toolbar-button-slimmer.abstract.js +3 -2
  240. package/dist/collection/components/vega-rich-text-editor/slimmers/renderers/vega-rich-text-editor-renderer.js +59 -8
  241. package/dist/collection/components/vega-rich-text-editor/slimmers/renderers/vega-rich-text-editor-source-view-renderer.js +5 -2
  242. package/dist/collection/components/vega-rich-text-editor/vega-rich-text-editor-toolbar-button/slimmers/renderers/vega-rich-text-editor-toolbar-button-renderer.js +1 -1
  243. package/dist/collection/components/vega-rich-text-editor/vega-rich-text-editor-toolbar-button/vega-rich-text-editor-toolbar-button.js +13 -1
  244. package/dist/collection/components/vega-rich-text-editor/vega-rich-text-editor.js +16 -0
  245. package/dist/collection/components/vega-rich-text-editor/vega-rich-text-link-editor/slimmers/controllers/link-editor-controller.js +124 -0
  246. package/dist/collection/components/vega-rich-text-editor/vega-rich-text-link-editor/slimmers/renderers/vega-rich-text-link-editor-renderer.js +9 -1
  247. package/dist/collection/components/vega-tab-group/slimmers/vega-tab-group/renderers/vega-tab-group-tab-list-renderer.js +14 -7
  248. package/dist/collection/components/vega-tab-group/vega-tab-group.css +6 -0
  249. package/dist/collection/components/vega-tab-group/vega-tab-group.js +5 -0
  250. package/dist/collection/components/vega-table/slimmers/controllers/vega-table-body-col-span-controller.js +31 -1
  251. package/dist/collection/components/vega-table/slimmers/renderers/vega-table-body-col-span-resolver.js +18 -11
  252. package/dist/collection/global/scripts/before-vega-load.js +2 -0
  253. package/dist/collection/helpers/keyboard/keyboard-manager.js +11 -4
  254. package/dist/collection/helpers/keyboard/overlay-escape-coordination.js +33 -0
  255. package/dist/collection/helpers/slimmers/mutation-observer/aria-attributes-value-mapper.js +1 -1
  256. package/dist/collection/helpers/translation/locales/en.js +17 -0
  257. package/dist/collection/polyfill/libphonenumber/as-you-type.js +21 -3
  258. package/dist/collection/polyfill/libphonenumber/metadata.js +16 -0
  259. package/dist/collection/utils/accessibility.js +20 -0
  260. package/dist/collection/utils/sanitize/index.js +3 -2
  261. package/dist/collection/utils/sanitize/strategies/index.js +1 -0
  262. package/dist/collection/utils/sanitize/strategies/label-sanitize-strategy.js +14 -0
  263. package/dist/collection/utils/sanitize/strategies/plain-text-sanitize-strategy.js +70 -0
  264. package/dist/esm/{accessibility-6af5cf2e.js → accessibility-c899a968.js} +21 -1
  265. package/dist/esm/{action-color-accessibility-validator-ce55cb07.js → action-color-accessibility-validator-08877515.js} +2 -2
  266. package/dist/esm/{app-globals-95c7110a.js → app-globals-1e1371d5.js} +11 -10
  267. package/dist/esm/{aria-attributes-value-mapper-2c632641.js → aria-attributes-value-mapper-a5c7478e.js} +1 -1
  268. package/dist/esm/{aria-dialog-focusable-trap-slimmer-f069f54d.js → aria-dialog-focusable-trap-slimmer-b2a24a45.js} +2 -2
  269. package/dist/esm/{child-nodes-notify-observer-slimmer-499a3aa7.js → child-nodes-notify-observer-slimmer-034bc78c.js} +1 -1
  270. package/dist/esm/{code-block-9c513169.js → code-block-741d6b8e.js} +91 -9
  271. package/dist/esm/{component-global-style-slimmer-ac703085.js → component-global-style-slimmer-7d60a04a.js} +1 -1
  272. package/dist/esm/{component-value-history-controller-slimmer.abstract-9cef2a2a.js → component-value-history-controller-slimmer.abstract-2bcd749e.js} +26 -7
  273. package/dist/esm/{content-state-25c81c08.js → content-state-2f6f4204.js} +104 -11
  274. package/dist/esm/{dark-mode-style-controller-ca5afd2d.js → dark-mode-style-controller-352f15ff.js} +2 -2
  275. package/dist/esm/{date-required-rule-85334d0c.js → date-required-rule-2ea3aec8.js} +1 -1
  276. package/dist/esm/{design-token-10ff79b5.js → design-token-82a4e107.js} +3 -3
  277. package/dist/esm/{dom-node-subject-observer-factory-ddff8662.js → dom-node-subject-observer-factory-bb7e68a0.js} +1 -1
  278. package/dist/esm/{element-appender-slimmer-8a06ecdd.js → element-appender-slimmer-c820c0bf.js} +4 -4
  279. package/dist/esm/{event-emit-slimmer-2452278f.js → event-emit-slimmer-e8bb2292.js} +1 -1
  280. package/dist/esm/{form-field-controller-slimmer-68fc5380.js → form-field-controller-slimmer-02165dbe.js} +5 -5
  281. package/dist/esm/{image-annotation-action-d7f2aecc.js → image-annotation-action-972c1074.js} +8 -7
  282. package/dist/esm/{image-extension-fbd1ed6e.js → image-extension-59484e9a.js} +2 -2
  283. package/dist/esm/{index-3b327f29.js → index-35451d12.js} +86 -1
  284. package/dist/esm/index.js +21 -21
  285. package/dist/esm/{inject-keyboard-manager-ea1aad5b.js → inject-keyboard-manager-6a10c9b7.js} +1 -1
  286. package/dist/esm/{internal-calendar-period-factory-7b294fb6.js → internal-calendar-period-factory-d1a60f81.js} +1 -1
  287. package/dist/esm/{internal-translation-controller-fac22598.js → internal-translation-controller-fff376d2.js} +17 -0
  288. package/dist/esm/{keyboard-manager-50da85d7.js → keyboard-manager-a58288df.js} +13 -6
  289. package/dist/esm/{keyboard-manager-slimmer-1f7c8bfb.js → keyboard-manager-slimmer-133b86cd.js} +1 -1
  290. package/dist/esm/{link-extension-e8ee103e.js → link-extension-e89acb5c.js} +26 -7
  291. package/dist/esm/loader.js +16 -16
  292. package/dist/esm/{month-view-generator-a1a9a4ec.js → month-view-generator-20e32b22.js} +1 -1
  293. package/dist/esm/overlay-escape-coordination-439f7d6f.js +35 -0
  294. package/dist/esm/{public-rules-49de79c7.js → public-rules-c154201b.js} +11 -11
  295. package/dist/esm/{range-b678c693.js → range-c818a1eb.js} +2 -2
  296. package/dist/esm/{responsive-format-facade-f19b601c.js → responsive-format-facade-07843ec3.js} +1 -1
  297. package/dist/esm/{rich-text-editor-required-rule-578e0958.js → rich-text-editor-required-rule-878e91c6.js} +1 -1
  298. package/dist/esm/{split-cell-operation-1c8e7585.js → split-cell-operation-cc0cdf90.js} +15 -5
  299. package/dist/esm/{state-border-formatter-bfda33aa.js → state-border-formatter-3b3dcfe8.js} +1 -1
  300. package/dist/esm/{string-format-strategy.abstract-1f4ff1b3.js → string-format-strategy.abstract-44381dcb.js} +1 -1
  301. package/dist/esm/{string-input-formatter-slimmer-0006a107.js → string-input-formatter-slimmer-76fe52d3.js} +3 -3
  302. package/dist/esm/{string-mask-strategy-bbbcdbef.js → string-mask-strategy-999fba4b.js} +2 -2
  303. package/dist/esm/{style-formatter-e9adc8f4.js → style-formatter-c4192c99.js} +2 -2
  304. package/dist/esm/{sub-state-notify-slimmer-23b7d0e8.js → sub-state-notify-slimmer-e306c849.js} +1 -1
  305. package/dist/esm/{sub-state-observer-slimmer-722f6b92.js → sub-state-observer-slimmer-bd85f381.js} +2 -2
  306. package/dist/esm/{time-required-rule-1ce2d0a0.js → time-required-rule-0554b114.js} +1 -1
  307. package/dist/esm/{token-extension-f2d009e3.js → token-extension-35c66684.js} +3773 -253
  308. package/dist/esm/{translation-slimmer-ee0f0e76.js → translation-slimmer-77022f2e.js} +1 -1
  309. package/dist/esm/{type-guard-f2624334.js → type-guard-26d83e7e.js} +1 -1
  310. package/dist/esm/{ui-d73f756a.js → ui-80e610f4.js} +1 -1
  311. package/dist/esm/{valid-credit-card-number-rule-60212b1d.js → valid-credit-card-number-rule-f60b6904.js} +1 -1
  312. package/dist/esm/vega-accordion.entry.js +9 -9
  313. package/dist/esm/vega-app-footer.entry.js +5 -5
  314. package/dist/esm/vega-app-header-button.entry.js +9 -9
  315. package/dist/esm/vega-backdrop.entry.js +1 -1
  316. package/dist/esm/vega-banner.entry.js +4 -4
  317. package/dist/esm/vega-box.entry.js +8 -8
  318. package/dist/esm/vega-brand-logo.entry.js +2 -2
  319. package/dist/esm/vega-breadcrumb.entry.js +5 -5
  320. package/dist/esm/vega-button-circle.entry.js +10 -10
  321. package/dist/esm/vega-button-group_2.entry.js +18 -11
  322. package/dist/esm/vega-button-link.entry.js +7 -7
  323. package/dist/esm/vega-button.entry.js +25 -9
  324. package/dist/esm/vega-calendar_5.entry.js +27 -16
  325. package/dist/esm/vega-card.entry.js +6 -6
  326. package/dist/esm/vega-carousel.entry.js +7 -7
  327. package/dist/esm/vega-checkbox_2.entry.js +9 -9
  328. package/dist/esm/vega-chip.entry.js +9 -9
  329. package/dist/esm/vega-code-block.entry.js +15 -15
  330. package/dist/esm/vega-color-picker.entry.js +8 -8
  331. package/dist/esm/vega-color-swatch-picker.entry.js +8 -8
  332. package/dist/esm/vega-color-swatch.entry.js +6 -6
  333. package/dist/esm/vega-combo-box.entry.js +14 -14
  334. package/dist/esm/vega-counter-badge.entry.js +2 -2
  335. package/dist/esm/vega-date-picker_2.entry.js +21 -21
  336. package/dist/esm/vega-dialog_2.entry.js +76 -10
  337. package/dist/esm/vega-divider.entry.js +5 -5
  338. package/dist/esm/vega-dropdown_5.entry.js +123 -31
  339. package/dist/esm/vega-env-manager-8f8dc473.js +2 -2
  340. package/dist/esm/vega-field-label.entry.js +30 -37
  341. package/dist/esm/vega-file-uploader.entry.js +9 -9
  342. package/dist/esm/vega-flag-icon.entry.js +5 -5
  343. package/dist/esm/vega-flex.entry.js +7 -7
  344. package/dist/esm/vega-font.entry.js +6 -6
  345. package/dist/esm/vega-form.entry.js +8 -8
  346. package/dist/esm/vega-grid.entry.js +6 -6
  347. package/dist/esm/vega-icon.entry.js +7 -7
  348. package/dist/esm/vega-image-uploader.entry.js +12 -12
  349. package/dist/esm/vega-input-credit-card.entry.js +11 -11
  350. package/dist/esm/vega-input-numeric.entry.js +11 -11
  351. package/dist/esm/vega-input-passcode.entry.js +10 -10
  352. package/dist/esm/vega-input-phone-number.entry.js +46 -12
  353. package/dist/esm/vega-input-range.entry.js +9 -9
  354. package/dist/esm/vega-input-select.entry.js +29 -12
  355. package/dist/esm/vega-input.entry.js +14 -14
  356. package/dist/esm/vega-item-toggle.entry.js +3 -3
  357. package/dist/esm/vega-left-nav_5.entry.js +15 -15
  358. package/dist/esm/vega-loader-wrapper_2.entry.js +4 -4
  359. package/dist/esm/vega-page-notification_2.entry.js +3 -3
  360. package/dist/esm/vega-pagination-page-selector-mobile.entry.js +2 -2
  361. package/dist/esm/vega-pagination-page-size-selector-mobile.entry.js +4 -4
  362. package/dist/esm/vega-pagination.entry.js +7 -7
  363. package/dist/esm/vega-popover_2.entry.js +62 -13
  364. package/dist/esm/vega-progress-tracker_2.entry.js +9 -9
  365. package/dist/esm/vega-radio_2.entry.js +12 -12
  366. package/dist/esm/vega-rich-text-content.entry.js +48 -17
  367. package/dist/esm/vega-rich-text-editor_4.entry.js +774 -255
  368. package/dist/esm/vega-rich-text-find-replace-panel.entry.js +6 -6
  369. package/dist/esm/vega-rich-text-special-characters-panel.entry.js +8 -8
  370. package/dist/esm/vega-rich-text-table-properties_3.entry.js +160 -107
  371. package/dist/esm/vega-segment-control.entry.js +3 -3
  372. package/dist/esm/vega-selection-chip_2.entry.js +11 -11
  373. package/dist/esm/vega-selection-tile_2.entry.js +9 -9
  374. package/dist/esm/vega-sidenav_3.entry.js +9 -9
  375. package/dist/esm/vega-signature-capture.entry.js +12 -12
  376. package/dist/esm/vega-stepper.entry.js +7 -7
  377. package/dist/esm/vega-tab-group_2.entry.js +25 -12
  378. package/dist/esm/vega-table_11.entry.js +59 -23
  379. package/dist/esm/vega-textarea.entry.js +7 -7
  380. package/dist/esm/vega-time-picker_2.entry.js +15 -15
  381. package/dist/esm/vega-toggle-switch.entry.js +8 -8
  382. package/dist/esm/vega-tooltip_2.entry.js +8 -8
  383. package/dist/esm/vega.js +16 -16
  384. package/dist/esm/{wait-for-component-did-render-ff7062aa.js → wait-for-component-did-render-9b91a826.js} +1 -1
  385. package/dist/sri/vega-sri-manifest.json +399 -395
  386. package/dist/types/components/vega-button/vega-button.d.ts +2 -0
  387. package/dist/types/components/vega-button-group/types.d.ts +12 -6
  388. package/dist/types/components/vega-calendar/vega-calendar-event-preview/slimmers/renderers/vega-calendar-event-preview-detail-renderer.d.ts +2 -0
  389. package/dist/types/components/vega-dropdown/vega-dropdown-item/slimmers/renderers/vega-dropdown-item-renderer.d.ts +1 -0
  390. package/dist/types/components/vega-dropdown/vega-dropdown.d.ts +1 -1
  391. package/dist/types/components/vega-field-label/slimmers/renderers/vega-field-label-label-announcement-renderer.d.ts +3 -10
  392. package/dist/types/components/vega-input-select/slimmers/renderers/vega-input-select-dropdown-renderer.d.ts +8 -0
  393. package/dist/types/components/vega-modal/slimmers/controllers/vega-modal-open-state-controller.d.ts +33 -0
  394. package/dist/types/components/vega-modal/types.d.ts +2 -1
  395. package/dist/types/components/vega-popover/slimmers/renderers/vega-popover-appender-renderer.d.ts +9 -0
  396. package/dist/types/components/vega-rich-text-editor/constants/constant.d.ts +22 -0
  397. package/dist/types/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/commit-value-strategy.d.ts +13 -0
  398. package/dist/types/components/vega-rich-text-editor/dto/actions/commit-value-action.d.ts +20 -0
  399. package/dist/types/components/vega-rich-text-editor/dto/annotations/text-style-default-styles.d.ts +1 -0
  400. package/dist/types/components/vega-rich-text-editor/dto/blocks/block.abstract.d.ts +15 -0
  401. package/dist/types/components/vega-rich-text-editor/dto/blocks/list-item-block.d.ts +4 -0
  402. package/dist/types/components/vega-rich-text-editor/dto/content-state.d.ts +6 -0
  403. package/dist/types/components/vega-rich-text-editor/dto/filter-styles-strategies/filter-styles-strategy-registry.d.ts +1 -0
  404. package/dist/types/components/vega-rich-text-editor/dto/filter-styles-strategies/filter-styles-strategy.abstract.d.ts +3 -2
  405. package/dist/types/components/vega-rich-text-editor/dto/filter-styles-strategies/text-node/title-heading-node-filter-styles-strategy.d.ts +25 -3
  406. package/dist/types/components/vega-rich-text-editor/dto/nodes/code-block-node.d.ts +4 -0
  407. package/dist/types/components/vega-rich-text-editor/dto/nodes/node.abstract.d.ts +6 -0
  408. package/dist/types/components/vega-rich-text-editor/dto/nodes/text-node.d.ts +4 -0
  409. package/dist/types/components/vega-rich-text-editor/dto/renderers/blocks/block-text-nodes-renderer.abstract.d.ts +7 -0
  410. package/dist/types/components/vega-rich-text-editor/dto/renderers/nodes/text-node-renderer.d.ts +11 -0
  411. package/dist/types/components/vega-rich-text-editor/extensions/base-toolbar-button-renderer.d.ts +5 -0
  412. package/dist/types/components/vega-rich-text-editor/extensions/block-boundary-registry.d.ts +21 -0
  413. package/dist/types/components/vega-rich-text-editor/extensions/extension.abstract.d.ts +15 -0
  414. package/dist/types/components/vega-rich-text-editor/extensions/find-replace/slimmer/renderers/find-replace-toolbar-button-renderer.d.ts +19 -0
  415. package/dist/types/components/vega-rich-text-editor/extensions/functions/constants.d.ts +4 -0
  416. package/dist/types/components/vega-rich-text-editor/extensions/functions/dto/function-block.d.ts +7 -0
  417. package/dist/types/components/vega-rich-text-editor/extensions/functions/dto/logic-control-node.d.ts +4 -0
  418. package/dist/types/components/vega-rich-text-editor/extensions/functions/element-to-dto-strategies/div-containing-function-block-strategy.d.ts +8 -0
  419. package/dist/types/components/vega-rich-text-editor/extensions/functions/function-extension.d.ts +6 -0
  420. package/dist/types/components/vega-rich-text-editor/extensions/functions/utils.d.ts +29 -0
  421. package/dist/types/components/vega-rich-text-editor/extensions/line-height/line-height-toolbar-button-renderer.d.ts +14 -1
  422. package/dist/types/components/vega-rich-text-editor/extensions/paste/action-handler-strategies/image-replace-src-strategy.d.ts +12 -0
  423. package/dist/types/components/vega-rich-text-editor/extensions/paste/actions/image-replace-src-action.d.ts +11 -0
  424. package/dist/types/components/vega-rich-text-editor/extensions/paste/parse-local-images-helper/paste-image-parser.d.ts +136 -0
  425. package/dist/types/components/vega-rich-text-editor/extensions/paste/parse-local-images-helper/pending-image-registry.d.ts +68 -0
  426. package/dist/types/components/vega-rich-text-editor/extensions/paste/paste-chooser-ui.d.ts +9 -4
  427. package/dist/types/components/vega-rich-text-editor/extensions/paste/paste-extension.d.ts +39 -2
  428. package/dist/types/components/vega-rich-text-editor/extensions/paste/strategies/default-paste-strategy.d.ts +29 -0
  429. package/dist/types/components/vega-rich-text-editor/extensions/paste/strategies/paste-processing-strategy.abstract.d.ts +61 -0
  430. package/dist/types/components/vega-rich-text-editor/extensions/paste/strategies/paste-strategy-selector.d.ts +45 -0
  431. package/dist/types/components/vega-rich-text-editor/extensions/paste/strategies/word-paste-strategy.d.ts +186 -0
  432. package/dist/types/components/vega-rich-text-editor/extensions/paste/word-paste-transformers/word-structure-code-block-transformer.d.ts +51 -0
  433. package/dist/types/components/vega-rich-text-editor/extensions/paste/word-paste-transformers/word-structure-image-transformer.d.ts +86 -0
  434. package/dist/types/components/vega-rich-text-editor/extensions/paste/word-paste-transformers/word-structure-list-transformer.d.ts +271 -0
  435. package/dist/types/components/vega-rich-text-editor/extensions/paste/word-paste-transformers/word-structure-paragraph-transformer.d.ts +25 -0
  436. package/dist/types/components/vega-rich-text-editor/extensions/paste/word-paste-transformers/word-structure-table-transformer.d.ts +240 -0
  437. package/dist/types/components/vega-rich-text-editor/extensions/paste/word-paste-transformers/word-structure-transformer.d.ts +36 -0
  438. package/dist/types/components/vega-rich-text-editor/extensions/table/dto/table-block.d.ts +8 -0
  439. package/dist/types/components/vega-rich-text-editor/extensions/table/renderers/table-caption-renderer.d.ts +2 -2
  440. package/dist/types/components/vega-rich-text-editor/extensions/table/renderers/table-dynamic-popover-renderer.d.ts +31 -1
  441. package/dist/types/components/vega-rich-text-editor/extensions/table/renderers/table-popover-base-renderer.d.ts +91 -0
  442. package/dist/types/components/vega-rich-text-editor/extensions/table/renderers/table-renderer.d.ts +46 -0
  443. package/dist/types/components/vega-rich-text-editor/extensions/table/renderers/table-setting-popover-renderer.d.ts +58 -0
  444. package/dist/types/components/vega-rich-text-editor/extensions/table/table-selection.d.ts +8 -0
  445. package/dist/types/components/vega-rich-text-editor/extensions/table/vega-rich-text-table-properties/slimmers/renderers/vega-rich-text-table-properties-basic-form-field-renderer.abstract.d.ts +2 -1
  446. package/dist/types/components/vega-rich-text-editor/extensions/table/vega-rich-text-table-properties/vega-rich-text-table-properties.d.ts +2 -0
  447. package/dist/types/components/vega-rich-text-editor/extensions/table/vega-rich-text-table-setting/slimmers/renderers/row-button-slimmer.d.ts +3 -0
  448. package/dist/types/components/vega-rich-text-editor/extensions/table/vega-rich-text-table-setting/slimmers/renderers/table-setting-button-slimmer.abstract.d.ts +3 -1
  449. package/dist/types/components/vega-rich-text-editor/extensions/table/vega-rich-text-table-setting/vega-rich-text-table-setting.d.ts +1 -0
  450. package/dist/types/components/vega-rich-text-editor/extensions/tokens/span-to-token-node-strategy.d.ts +2 -2
  451. package/dist/types/components/vega-rich-text-editor/extensions/tokens/token-node.d.ts +19 -1
  452. package/dist/types/components/vega-rich-text-editor/extensions/word-count/action-handler-interceptors/prevent-hard-limit-exceed-interceptor.d.ts +38 -0
  453. package/dist/types/components/vega-rich-text-editor/extensions/word-count/type.d.ts +46 -0
  454. package/dist/types/components/vega-rich-text-editor/extensions/word-count/word-count-extension.d.ts +38 -0
  455. package/dist/types/components/vega-rich-text-editor/interface.d.ts +22 -0
  456. package/dist/types/components/vega-rich-text-editor/public-api.d.ts +1 -0
  457. package/dist/types/components/vega-rich-text-editor/slimmers/controllers/helper/element-to-dto-strategy/annotation-handler/text-style-annotation-handler.d.ts +4 -1
  458. package/dist/types/components/vega-rich-text-editor/slimmers/controllers/helper/element-to-dto-strategy/continue-inline-to-rte-text-block-strategy.d.ts +8 -0
  459. package/dist/types/components/vega-rich-text-editor/slimmers/controllers/value-controller.d.ts +11 -1
  460. package/dist/types/components/vega-rich-text-editor/slimmers/controllers/word-count-controller.d.ts +40 -0
  461. package/dist/types/components/vega-rich-text-editor/slimmers/renderers/tools/link-toolbar-button-slimmer.d.ts +14 -0
  462. package/dist/types/components/vega-rich-text-editor/slimmers/renderers/tools/source-edit-toolbar-button-slimmer.d.ts +4 -1
  463. package/dist/types/components/vega-rich-text-editor/slimmers/renderers/tools/toolbar-button-slimmer.abstract.d.ts +3 -2
  464. package/dist/types/components/vega-rich-text-editor/slimmers/renderers/vega-rich-text-editor-renderer.d.ts +12 -0
  465. package/dist/types/components/vega-rich-text-editor/vega-rich-text-editor-toolbar-button/vega-rich-text-editor-toolbar-button.d.ts +2 -0
  466. package/dist/types/components/vega-rich-text-editor/vega-rich-text-editor.d.ts +4 -0
  467. package/dist/types/components/vega-rich-text-editor/vega-rich-text-link-editor/slimmers/controllers/link-editor-controller.d.ts +68 -0
  468. package/dist/types/components/vega-rich-text-editor/vega-rich-text-link-editor/slimmers/renderers/vega-rich-text-link-editor-renderer.d.ts +3 -0
  469. package/dist/types/components/vega-tab-group/slimmers/vega-tab-group/renderers/vega-tab-group-tab-list-renderer.d.ts +1 -0
  470. package/dist/types/components/vega-tab-group/types.d.ts +3 -1
  471. package/dist/types/components/vega-tab-group/vega-tab-group.d.ts +2 -0
  472. package/dist/types/components/vega-table/interface.d.ts +4 -4
  473. package/dist/types/components/vega-table/slimmers/controllers/vega-table-body-col-span-controller.d.ts +16 -0
  474. package/dist/types/components/vega-table/slimmers/renderers/vega-table-body-col-span-resolver.d.ts +8 -10
  475. package/dist/types/helpers/keyboard/keyboard-manager.d.ts +9 -0
  476. package/dist/types/helpers/keyboard/overlay-escape-coordination.d.ts +28 -0
  477. package/dist/types/helpers/slimmers/mutation-observer/aria-attributes-value-mapper.d.ts +1 -1
  478. package/dist/types/helpers/translation/interface.d.ts +18 -1
  479. package/dist/types/polyfill/libphonenumber/as-you-type.d.ts +1 -0
  480. package/dist/types/polyfill/libphonenumber/metadata.d.ts +10 -0
  481. package/dist/types/types/public-api.d.ts +2 -0
  482. package/dist/types/utils/accessibility.d.ts +9 -0
  483. package/dist/types/utils/sanitize/index.d.ts +3 -2
  484. package/dist/types/utils/sanitize/strategies/index.d.ts +1 -0
  485. package/dist/types/utils/sanitize/strategies/label-sanitize-strategy.d.ts +9 -0
  486. package/dist/types/utils/sanitize/strategies/plain-text-sanitize-strategy.d.ts +36 -0
  487. package/dist/vega/index.esm.js +1 -1
  488. package/dist/vega/{p-6f537797.entry.js → p-01ca92e6.entry.js} +1 -1
  489. package/dist/vega/{p-02d3ce79.entry.js → p-02b5d4ac.entry.js} +1 -1
  490. package/dist/vega/p-06a42a9f.entry.js +1 -0
  491. package/dist/vega/{p-fd23c365.entry.js → p-0cd362f3.entry.js} +1 -1
  492. package/dist/vega/p-0e10798b.entry.js +1 -0
  493. package/dist/vega/{p-2c2e8615.js → p-0eea1ca8.js} +1 -1
  494. package/dist/vega/{p-c98c2f5f.entry.js → p-0f344e02.entry.js} +1 -1
  495. package/dist/vega/{p-4cbfc01e.entry.js → p-23db0a92.entry.js} +1 -1
  496. package/dist/vega/{p-ccbe3f1b.entry.js → p-284a8828.entry.js} +1 -1
  497. package/dist/vega/{p-ac94ba1b.entry.js → p-2b26e182.entry.js} +1 -1
  498. package/dist/vega/{p-56598858.entry.js → p-2c8dc0d2.entry.js} +1 -1
  499. package/dist/vega/{p-2bb5a232.js → p-3091b105.js} +1 -1
  500. package/dist/vega/{p-9abf7d0a.entry.js → p-35d37477.entry.js} +1 -1
  501. package/dist/vega/{p-526e3634.js → p-36a57431.js} +1 -1
  502. package/dist/vega/{p-810c9c29.js → p-379736e2.js} +1 -1
  503. package/dist/vega/p-3abb793c.entry.js +1 -0
  504. package/dist/vega/{p-f29ea345.entry.js → p-3d6a43df.entry.js} +1 -1
  505. package/dist/vega/{p-c2277448.entry.js → p-3f2a4b34.entry.js} +1 -1
  506. package/dist/vega/p-401c6764.js +1 -0
  507. package/dist/vega/{p-da867019.entry.js → p-411cadbc.entry.js} +1 -1
  508. package/dist/vega/{p-ec64cc59.entry.js → p-46f22f6c.entry.js} +1 -1
  509. package/dist/vega/{p-8d2501b2.js → p-493108d5.js} +1 -1
  510. package/dist/vega/{p-085d1647.entry.js → p-49de5559.entry.js} +1 -1
  511. package/dist/vega/{p-781b7a54.js → p-4b35c748.js} +1 -1
  512. package/dist/vega/{p-a8174ad8.entry.js → p-4d1896e0.entry.js} +1 -1
  513. package/dist/vega/{p-b00ec194.entry.js → p-4e23e56c.entry.js} +1 -1
  514. package/dist/vega/{p-1cff027b.entry.js → p-5006404e.entry.js} +1 -1
  515. package/dist/vega/{p-56417ec5.entry.js → p-5789690b.entry.js} +1 -1
  516. package/dist/vega/{p-461100b8.entry.js → p-594cb986.entry.js} +1 -1
  517. package/dist/vega/p-5a086e93.js +1 -0
  518. package/dist/vega/{p-3e09aeed.js → p-5b3c8a56.js} +1 -1
  519. package/dist/vega/p-5b9b1631.entry.js +1 -0
  520. package/dist/vega/{p-c41a2d4a.js → p-5c3649f9.js} +1 -1
  521. package/dist/vega/{p-fb9475ab.entry.js → p-5d9be870.entry.js} +1 -1
  522. package/dist/vega/p-5f377954.js +1 -1
  523. package/dist/vega/{p-d609c3fd.js → p-60a74fb7.js} +1 -1
  524. package/dist/vega/{p-2acf9b42.entry.js → p-61ed7268.entry.js} +1 -1
  525. package/dist/vega/p-6336d446.entry.js +1 -0
  526. package/dist/vega/{p-dbb4b1d1.js → p-638b6a7d.js} +1 -1
  527. package/dist/vega/{p-bdb5180c.js → p-68744e7e.js} +1 -1
  528. package/dist/vega/p-6e9e7131.js +1 -0
  529. package/dist/vega/{p-014cd411.js → p-6eedbc4f.js} +1 -1
  530. package/dist/vega/{p-a090b2be.js → p-6fd8f14b.js} +1 -1
  531. package/dist/vega/{p-0cf3b5c1.entry.js → p-7469d0d1.entry.js} +1 -1
  532. package/dist/vega/p-74b20563.entry.js +1 -0
  533. package/dist/vega/{p-17c69503.entry.js → p-76999ea1.entry.js} +1 -1
  534. package/dist/vega/p-77bcdd35.js +1 -0
  535. package/dist/vega/{p-035e2f05.entry.js → p-79b49e8d.entry.js} +1 -1
  536. package/dist/vega/{p-8d96f0e8.entry.js → p-7a03ef96.entry.js} +1 -1
  537. package/dist/vega/{p-c5fb8a69.entry.js → p-7ae4cf82.entry.js} +1 -1
  538. package/dist/vega/{p-f9bfee81.entry.js → p-7cc8855d.entry.js} +1 -1
  539. package/dist/vega/{p-d470fce2.entry.js → p-7ddc0bec.entry.js} +1 -1
  540. package/dist/vega/{p-ca3c1317.entry.js → p-7e22610b.entry.js} +1 -1
  541. package/dist/vega/p-7f395622.entry.js +1 -0
  542. package/dist/vega/{p-3737b9e2.entry.js → p-816b5fd2.entry.js} +1 -1
  543. package/dist/vega/p-8387896e.js +1 -0
  544. package/dist/vega/p-844ad6aa.entry.js +1 -0
  545. package/dist/vega/p-853a05eb.js +1 -0
  546. package/dist/vega/p-85de755f.js +1 -0
  547. package/dist/vega/p-8663314e.js +1 -0
  548. package/dist/vega/{p-95c18f79.entry.js → p-86fb46d2.entry.js} +1 -1
  549. package/dist/vega/p-8cfdd0e8.entry.js +1 -0
  550. package/dist/vega/p-8ebe30a8.js +1 -0
  551. package/dist/vega/p-8f00dfe6.js +1 -0
  552. package/dist/vega/{p-66647244.js → p-8fc0a820.js} +1 -1
  553. package/dist/vega/{p-4fd0cf01.js → p-9034f709.js} +1 -1
  554. package/dist/vega/{p-456f678b.js → p-941a83db.js} +1 -1
  555. package/dist/vega/{p-ae2abdfa.js → p-96c090c4.js} +1 -1
  556. package/dist/vega/p-9ba2fdff.js +1 -0
  557. package/dist/vega/{p-d319ebb5.js → p-9e9f49f4.js} +1 -1
  558. package/dist/vega/p-9efa5d76.js +1 -0
  559. package/dist/vega/{p-a81ad3bd.js → p-a306bb39.js} +1 -1
  560. package/dist/vega/{p-db11134b.entry.js → p-a48468b5.entry.js} +1 -1
  561. package/dist/vega/{p-56db3323.js → p-a488447f.js} +1 -1
  562. package/dist/vega/p-a647c856.entry.js +1 -0
  563. package/dist/vega/{p-a484e32d.entry.js → p-a6a89f09.entry.js} +1 -1
  564. package/dist/vega/p-a92cd703.js +1 -0
  565. package/dist/vega/p-a93b3aed.js +1 -0
  566. package/dist/vega/{p-528748fa.js → p-aa135628.js} +1 -1
  567. package/dist/vega/{p-4bfe3258.entry.js → p-aaaf21eb.entry.js} +1 -1
  568. package/dist/vega/{p-36d9e782.entry.js → p-ab253867.entry.js} +1 -1
  569. package/dist/vega/{p-dcd3e3a7.js → p-ab9d53e9.js} +1 -1
  570. package/dist/vega/p-ad367b48.entry.js +1 -0
  571. package/dist/vega/{p-e18c0656.entry.js → p-af0cfea0.entry.js} +1 -1
  572. package/dist/vega/p-b07f587a.entry.js +1 -0
  573. package/dist/vega/p-b21cc390.entry.js +1 -0
  574. package/dist/vega/{p-12e8a1b2.js → p-b2a4314a.js} +1 -1
  575. package/dist/vega/p-b52d7724.js +3 -0
  576. package/dist/vega/{p-5f96e741.entry.js → p-b97ed9f7.entry.js} +1 -1
  577. package/dist/vega/{p-7dcd2850.entry.js → p-bc0e5598.entry.js} +1 -1
  578. package/dist/vega/p-bc119e75.entry.js +1 -0
  579. package/dist/vega/{p-0cbf09f7.entry.js → p-bedb575c.entry.js} +1 -1
  580. package/dist/vega/{p-cb81126a.entry.js → p-bfe5dff7.entry.js} +1 -1
  581. package/dist/vega/{p-52c69f9e.entry.js → p-c032f626.entry.js} +1 -1
  582. package/dist/vega/{p-1ea9ad9a.js → p-c34f4cbc.js} +1 -1
  583. package/dist/vega/{p-72ab5cd5.entry.js → p-c422ee02.entry.js} +1 -1
  584. package/dist/vega/{p-39c5054b.js → p-c576e846.js} +1 -1
  585. package/dist/vega/{p-c70748f7.entry.js → p-c7d46740.entry.js} +1 -1
  586. package/dist/vega/p-cc569b54.js +1 -0
  587. package/dist/vega/{p-4e065ef7.entry.js → p-cd04b149.entry.js} +1 -1
  588. package/dist/vega/{p-2a245138.entry.js → p-cd0a108b.entry.js} +1 -1
  589. package/dist/vega/{p-8c56d74d.entry.js → p-d1bb6e7a.entry.js} +1 -1
  590. package/dist/vega/{p-200c8914.entry.js → p-d340ee3d.entry.js} +1 -1
  591. package/dist/vega/p-d897acd5.js +1 -0
  592. package/dist/vega/p-debf9e06.entry.js +1 -0
  593. package/dist/vega/p-e0a51e49.js +1 -0
  594. package/dist/vega/{p-1aedbfd2.entry.js → p-e11c6ec4.entry.js} +1 -1
  595. package/dist/vega/{p-1e0a8fd3.js → p-e14323f3.js} +1 -1
  596. package/dist/vega/{p-6d4518d7.entry.js → p-e5abc288.entry.js} +1 -1
  597. package/dist/vega/{p-544ce391.entry.js → p-ea1a0046.entry.js} +1 -1
  598. package/dist/vega/{p-72fd17a1.entry.js → p-edd7aa92.entry.js} +1 -1
  599. package/dist/vega/p-ef1bbf14.js +1 -0
  600. package/dist/vega/{p-9834d5d4.entry.js → p-efc08027.entry.js} +1 -1
  601. package/dist/vega/{p-874e5624.js → p-f485448a.js} +1 -1
  602. package/dist/vega/{p-92528dc9.entry.js → p-f8b2dbb9.entry.js} +1 -1
  603. package/dist/vega/{p-cf4b3d40.entry.js → p-f8bf379c.entry.js} +1 -1
  604. package/dist/vega/{p-b98ead05.entry.js → p-f902305d.entry.js} +1 -1
  605. package/dist/vega/p-fe985b52.js +1 -0
  606. package/dist/vega/vega.esm.js +1 -1
  607. package/package.json +1 -1
  608. package/dist/collection/components/vega-dropdown/slimmers/controllers/vega-dropdown-keyboard-conttroller.js +0 -85
  609. package/dist/collection/components/vega-rich-text-editor/extensions/paste/paste-constants.js +0 -6
  610. package/dist/types/components/vega-rich-text-editor/extensions/paste/paste-constants.d.ts +0 -6
  611. package/dist/vega/p-03eeadc1.entry.js +0 -1
  612. package/dist/vega/p-0eb29065.js +0 -3
  613. package/dist/vega/p-10d30c03.js +0 -1
  614. package/dist/vega/p-1250b1ab.entry.js +0 -1
  615. package/dist/vega/p-1abd3c17.js +0 -1
  616. package/dist/vega/p-2d158cbd.js +0 -1
  617. package/dist/vega/p-2f07d719.entry.js +0 -1
  618. package/dist/vega/p-36d2df7a.entry.js +0 -1
  619. package/dist/vega/p-373541fa.js +0 -1
  620. package/dist/vega/p-3a620268.js +0 -1
  621. package/dist/vega/p-3d0b4074.js +0 -1
  622. package/dist/vega/p-56493601.js +0 -1
  623. package/dist/vega/p-571ec00b.js +0 -1
  624. package/dist/vega/p-585e4f1c.entry.js +0 -1
  625. package/dist/vega/p-5b1f5e4a.entry.js +0 -1
  626. package/dist/vega/p-6234852e.entry.js +0 -1
  627. package/dist/vega/p-67eaf77e.js +0 -1
  628. package/dist/vega/p-6c95a6a3.js +0 -1
  629. package/dist/vega/p-6fd4f2c6.js +0 -1
  630. package/dist/vega/p-7e8fdac4.js +0 -1
  631. package/dist/vega/p-83ad8988.js +0 -1
  632. package/dist/vega/p-94975537.entry.js +0 -1
  633. package/dist/vega/p-a91927eb.entry.js +0 -1
  634. package/dist/vega/p-b3733762.entry.js +0 -1
  635. package/dist/vega/p-b622c455.js +0 -1
  636. package/dist/vega/p-c6d775b8.entry.js +0 -1
  637. package/dist/vega/p-cd69aeae.js +0 -1
  638. package/dist/vega/p-cfe268a8.entry.js +0 -1
  639. package/dist/vega/p-daba4af1.js +0 -1
  640. package/dist/vega/p-de8f0d98.js +0 -1
  641. package/dist/vega/p-f0e828d8.js +0 -1
  642. package/dist/vega/p-f62c5a20.entry.js +0 -1
  643. package/dist/vega/p-f6c0e9e7.entry.js +0 -1
  644. package/dist/vega/p-fa65956c.entry.js +0 -1
  645. /package/dist/types/components/vega-dropdown/slimmers/controllers/{vega-dropdown-keyboard-conttroller.d.ts → vega-dropdown-keyboard-controller.d.ts} +0 -0
@@ -1,51 +1,52 @@
1
- import { h, H as Host, F as Fragment, f as forceUpdate, r as registerInstance, c as createEvent, g as getElement } from './index-090d31ca.js';
1
+ import { h, f as forceUpdate, H as Host, F as Fragment, r as registerInstance, c as createEvent, g as getElement } from './index-090d31ca.js';
2
2
  import { c as MapToComponentField, M as MapToComponentMethod, V as VegaSlimmer, I as InjectVegaSlimmer } from './global-slimmer-registry-17c4efd4.js';
3
3
  import { V as VegaComponentUsageRuntimeMetricsSlimmer, I as InjectVegaGlobalSlimmer } from './component-usage-runtime-metrics-4b1afd04.js';
4
4
  import { s as sanitizeVegaComponent } from './component-7d906393.js';
5
- import { c as createEnterKeyHandlerToTriggerClick } from './accessibility-6af5cf2e.js';
5
+ import { c as createEnterKeyHandlerToTriggerClick } from './accessibility-c899a968.js';
6
6
  import { C as ChangeManager } from './change-manager-6a7eb88c.js';
7
- import { d as domNodeSubjectFactory, D as DomNodeSubjectObserverFactory } from './dom-node-subject-observer-factory-ddff8662.js';
7
+ import { d as domNodeSubjectFactory, D as DomNodeSubjectObserverFactory } from './dom-node-subject-observer-factory-bb7e68a0.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-86fce049.js';
9
9
  import { S as SHADOW_ROOT_ELEMENT_SCROLLING, F as FORM_ELEMENT_VALUE_CHANGE } from './static-subject-title-1c86e974.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-9c513169.js';
11
- import { d as RTEDTORendererManager, V as VegaRTELinkExtension } from './link-extension-e8ee103e.js';
12
- import { i as isNonNullable } from './type-guard-f2624334.js';
10
+ import { ah as ZERO_WIDTH_SPACE, am as VegaRTEOneRowHeightPx, R as RTETextNode, an as BoldAnnotationAction, N as NodeAnnotationTypeEnum, ao as ItalicAnnotationAction, ap as UnderlineAnnotationAction, b as RTETextBlock, aq as TextStyleAnnotationAction, a2 as TextStyleAnnotation, ar as BoldAnnotation, as as BlockAnnotationTypeEnum, at as ClearFormattingAnnotationAction, au as CodeAnnotationAction, av as StrikethroughAnnotationAction, ak as SelectionChangeAction, ai as LinkAnnotationAction, aw as IndentAnnotationAction, M as ModifyContentAction, j as ModifyContentActionType, r as RTEListItemBlock, a3 as RTEHtmlBlock, ax as TransformParagraphAction, t as RTECodeBlockNode, A as ActionHandleStrategyRegistry, J as HorizontalAlignmentAnnotationAction, ay as RTEUpdateSource, s as stateEntityRenderingRegistry, f as AppendChildrenAction, U as UpdateTextAction, h as InsertChildrenBeforeAction, S as SplitBlockWithNodeAction, g as RTENode, a as RTEBlock, l as RemoveChildrenAction, E as ReplaceChildNodesAction, az as escapeHtml, w as RTE_PASTE_MODE_DATA_TYPE, aA as RTE_PASTE_MODE_WORD, q as RTECodeBlock, aB as RTE_UPDATE_SOURCE_KEY, I as InsertChildrenAfterAction, x as RTE_WORD_COUNT_KEY, V as VegaRTEPresetToolbarItems, ag as VegaRTEDefaultTextStyleItems, aC as RTE_EMAIL_LINK_TYPE_KEY, aD as RTE_DEFAULT_LINK_TYPE_KEY, aE as RTE_SUPPORTED_LINK_TYPE_KEYS } from './code-block-741d6b8e.js';
11
+ import { i as isNonNullable } from './type-guard-26d83e7e.js';
12
+ import { R as RTEDTORendererManager, e as extensionContextManager, V as VegaRTELinkExtension } from './link-extension-e89acb5c.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-d7f2aecc.js';
14
+ import { V as VisualModeToolbarButtonSlimmer, I as ImageAnnotationAction, a as ToolbarButtonSlimmer, T as TextColorToolbarButtonSlimmer, n as normalizeUrlByDefaultProtocol } from './image-annotation-action-972c1074.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
- import { w as waitForComponentDidRender } from './wait-for-component-did-render-ff7062aa.js';
18
- import { V as VegaRTEImageExtension, R as ReplaceSelectedTextAction } from './image-extension-fbd1ed6e.js';
19
- import { F as FormFieldControllerSlimmer } from './form-field-controller-slimmer-68fc5380.js';
20
- import { c as createEventEmitSlimmer } from './event-emit-slimmer-2452278f.js';
21
- import { c as createSubStateNotifySlimmer } from './sub-state-notify-slimmer-23b7d0e8.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-25c81c08.js';
17
+ import { w as waitForComponentDidRender } from './wait-for-component-did-render-9b91a826.js';
18
+ import { V as VegaRTEImageExtension, R as ReplaceSelectedTextAction } from './image-extension-59484e9a.js';
19
+ import { F as FormFieldControllerSlimmer } from './form-field-controller-slimmer-02165dbe.js';
20
+ import { c as createEventEmitSlimmer } from './event-emit-slimmer-e8bb2292.js';
21
+ import { c as createSubStateNotifySlimmer } from './sub-state-notify-slimmer-e306c849.js';
22
+ import { V as VegaRTEContent, b as RTEImageNode, f as CommitValueAction, M as MergeTwoBlocksNodesAction, I as InsertNewParagraphAction, S as StylePreservator, g as ElementToDtoStrategyProcessor, R as RTEImageBlock } from './content-state-2f6f4204.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-9cef2a2a.js';
24
+ import { R as RTESelectionState, C as ComponentValueHistoryControllerSlimmer, a as SelectionController } from './component-value-history-controller-slimmer.abstract-2bcd749e.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 { f as findParent } from './ui-d73f756a.js';
29
- import { R as RichTextEditorRequiredRule } from './rich-text-editor-required-rule-578e0958.js';
28
+ import { f as findParent, b as getDeepActiveElementInShadow, j as checkIsVoiceOverClick, k as getFirstFocusableElement } from './ui-80e610f4.js';
29
+ import { R as RichTextEditorRequiredRule } from './rich-text-editor-required-rule-878e91c6.js';
30
30
  import { C as ChildNodesEventPreventSlimmer } from './child-nodes-event-prevent-slimmer-82626871.js';
31
- import { T as TranslationSlimmer } from './translation-slimmer-ee0f0e76.js';
32
- import { V as VegaInternalThemeManager } from './dark-mode-style-controller-ca5afd2d.js';
31
+ import { T as TranslationSlimmer } from './translation-slimmer-77022f2e.js';
32
+ import { V as VegaInternalThemeManager } from './dark-mode-style-controller-352f15ff.js';
33
33
  import { A as AutoRunWhenReRenderTaskQueueSlimmer } from './auto-run-when-re-render-task-queue-slimmer.abstract-27820d4c.js';
34
34
  import { i as isArrayEqual } from './array-7888f339.js';
35
+ import { d as deepEqual } from './object-0c277f57.js';
36
+ import { A as AriaAttributesValueMapper } from './aria-attributes-value-mapper-a5c7478e.js';
35
37
  import { c as chevronDown } from './chevron-down-4a75d28e.js';
36
38
  import { c as chevronUp } from './chevron-up-b1989751.js';
37
39
  import { t as trashCan } from './trash-can-8819a939.js';
38
40
  import { r as remoteInvocationRegistry } from './remote-invocation-registry-d69245c2.js';
39
41
  import './string-a953eafc.js';
40
42
  import './typography-19c3b9be.js';
41
- import './object-0c277f57.js';
42
43
  import './breakpoints-d9faf11c.js';
43
44
  import './ui-93922c59.js';
44
- import './internal-translation-controller-fac22598.js';
45
+ import './internal-translation-controller-fff376d2.js';
45
46
  import './icon-manager-4ef3f6dd.js';
46
47
  import './create-public-api-runtime-metrics-slimmer-48f85199.js';
47
48
  import './dynamic-slimmer-90b8af32.js';
48
- import './index-3b327f29.js';
49
+ import './index-35451d12.js';
49
50
  import './try-get-document-bef0f526.js';
50
51
  import './page-resize-observer-slimmer-e24d36c5.js';
51
52
  import './breakpoints-332702ed.js';
@@ -53,11 +54,11 @@ import './internal-form-field-validation-rule.abstract-f5b6bdbf.js';
53
54
  import './form-field-key-44ab39d0.js';
54
55
  import './mutation-observer-slimmer-58ebc13c.js';
55
56
  import './mutation-observer-filters-1a054fb0.js';
56
- import './sub-state-observer-slimmer-722f6b92.js';
57
+ import './sub-state-observer-slimmer-bd85f381.js';
57
58
  import './internal-vega-event-manager-2ecc9186.js';
58
- import './range-b678c693.js';
59
- import './keyboard-manager-slimmer-1f7c8bfb.js';
60
- import './keyboard-manager-50da85d7.js';
59
+ import './range-c818a1eb.js';
60
+ import './keyboard-manager-slimmer-133b86cd.js';
61
+ import './keyboard-manager-a58288df.js';
61
62
  import './vega-env-manager-8f8dc473.js';
62
63
  import './feature-flag-controller-3fd04ea9.js';
63
64
  import './index-9c9865c0.js';
@@ -66,7 +67,7 @@ import './vega-nonce-manager-497e5eb5.js';
66
67
  import './synchronize-task-queue-ac8acc3b.js';
67
68
  import './number-4398f2e1.js';
68
69
 
69
- var __decorate$H = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
70
+ var __decorate$I = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
70
71
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
71
72
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
72
73
  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;
@@ -87,11 +88,21 @@ class VegaRichTextEditorRenderer extends VegaSlimmer {
87
88
  const containerStyle = this.rows !== undefined
88
89
  ? { height: this.rows >= 2 ? `${this.rows * VegaRTEOneRowHeightPx}px` : defaultHeight }
89
90
  : { minHeight: defaultHeight };
90
- return (h("div", { class: {
91
+ return (
92
+ // This container delegates focus to the inner <vega-rich-text-content> editor when
93
+ // clicking anywhere in the editing area. It is a layout wrapper, not an interactive
94
+ // widget, so giving it a widget role (e.g. `textbox`) would expose a second,
95
+ // non-editable textbox that traps VoiceOver focus and prevents typing.
96
+ // eslint-disable-next-line jsx-a11y/no-static-element-interactions
97
+ h("div", { class: {
91
98
  'rich-text-editor-container': true,
92
99
  'disabled': this.disabled,
93
100
  'vega-hidden': this.sourceView,
94
- }, style: containerStyle, onClick: this.richTextContentFocus, role: "textbox", tabIndex: !this.disabled ? -1 : 0, onKeyDown: createEnterKeyHandlerToTriggerClick(), ref: (node) => (this.richTextContainerRef = node) },
101
+ }, style: containerStyle, onClick: this.richTextContentFocus,
102
+ // Keep this wrapper out of the tab order so AT lands directly on the inner text
103
+ // region (focusable via contenteditable when enabled, via tabindex when disabled)
104
+ // rather than announcing this generic wrapper as a group.
105
+ tabIndex: -1, onKeyDown: createEnterKeyHandlerToTriggerClick(), ref: (node) => (this.richTextContainerRef = node) },
95
106
  h("vega-rich-text-content", { ref: (ref) => (this.richTextContentRef = ref), content: this.value, extensions: this.extensions, onScroll: this.notifyContentScrolling }),
96
107
  this.renderCharacterCounter()));
97
108
  };
@@ -105,12 +116,20 @@ class VegaRichTextEditorRenderer extends VegaSlimmer {
105
116
  });
106
117
  };
107
118
  this.renderCharacterCounter = () => {
119
+ if (!this.wordCountController.shouldShowUI()) {
120
+ return null;
121
+ }
122
+ // The word count extension is registered, so the data is guaranteed to be non-null.
123
+ const data = this.wordCountController.getData();
124
+ const isSetMaxChars = isNonNullable(data.maxChars);
108
125
  return (h("div", { class: {
109
126
  'text-editor-counter': true,
110
- 'counter-exceed-max-length': false,
111
- }, style: { display: 'none' } },
112
- h("span", null, "0"),
113
- h("span", null, "/100")));
127
+ 'counter-exceed-max-length': isSetMaxChars && data.count > data.maxChars,
128
+ } },
129
+ h("span", null, data.count),
130
+ isSetMaxChars && h("span", null,
131
+ "/",
132
+ data.maxChars)));
114
133
  };
115
134
  this.renderErrorMessage = () => {
116
135
  return h("div", { class: "vega-error vega-hidden" });
@@ -159,6 +178,35 @@ class VegaRichTextEditorRenderer extends VegaSlimmer {
159
178
  return this.richTextContentRef.shadowRoot.querySelector('.rich-text-content');
160
179
  }
161
180
  }
181
+ /**
182
+ * Re-injects the zero-width space placeholder into empty text spans.
183
+ * When a commit is rejected and the model rolls back unchanged, the framework
184
+ * short-circuits the text diff and leaves the span empty, collapsing the line
185
+ * height, so the placeholder is restored here.
186
+ */
187
+ restoreEmptyTextPlaceholders() {
188
+ const editableElement = this.getRTEEditableElementRef();
189
+ if (!editableElement) {
190
+ return;
191
+ }
192
+ // The text node will only be rendered as a span and a code.
193
+ editableElement.querySelectorAll('span:empty, code:empty').forEach((element) => {
194
+ const textNode = element.firstChild;
195
+ if (textNode && textNode.nodeType === Node.TEXT_NODE) {
196
+ // Reuse the existing text node, `textContent` would swap in a new one and leave the framework patching a detached node.
197
+ textNode.nodeValue = ZERO_WIDTH_SPACE;
198
+ }
199
+ else {
200
+ element.textContent = ZERO_WIDTH_SPACE;
201
+ }
202
+ });
203
+ }
204
+ /**
205
+ * Forces a re-render of the rich text content component, which is useful when the content has changed but the framework has not detected it.
206
+ */
207
+ forceContentRepaint() {
208
+ forceUpdate(this.richTextContentRef);
209
+ }
162
210
  render() {
163
211
  return h(Host, null, this.renderRichTextEditor());
164
212
  }
@@ -179,59 +227,62 @@ class VegaRichTextEditorRenderer extends VegaSlimmer {
179
227
  this.richTextEditorSourceViewRenderer.render()));
180
228
  }
181
229
  }
182
- __decorate$H([
230
+ __decorate$I([
183
231
  MapToComponentField()
184
232
  ], VegaRichTextEditorRenderer.prototype, "host", void 0);
185
- __decorate$H([
233
+ __decorate$I([
186
234
  MapToComponentField()
187
235
  ], VegaRichTextEditorRenderer.prototype, "toolbarRenderer", void 0);
188
- __decorate$H([
236
+ __decorate$I([
189
237
  MapToComponentField()
190
238
  ], VegaRichTextEditorRenderer.prototype, "label", void 0);
191
- __decorate$H([
239
+ __decorate$I([
192
240
  MapToComponentField()
193
241
  ], VegaRichTextEditorRenderer.prototype, "required", void 0);
194
- __decorate$H([
242
+ __decorate$I([
195
243
  MapToComponentField()
196
244
  ], VegaRichTextEditorRenderer.prototype, "optional", void 0);
197
- __decorate$H([
245
+ __decorate$I([
198
246
  MapToComponentField()
199
247
  ], VegaRichTextEditorRenderer.prototype, "hint", void 0);
200
- __decorate$H([
248
+ __decorate$I([
201
249
  MapToComponentField()
202
250
  ], VegaRichTextEditorRenderer.prototype, "disabled", void 0);
203
- __decorate$H([
251
+ __decorate$I([
204
252
  MapToComponentField()
205
253
  ], VegaRichTextEditorRenderer.prototype, "rows", void 0);
206
- __decorate$H([
254
+ __decorate$I([
207
255
  MapToComponentField()
208
256
  ], VegaRichTextEditorRenderer.prototype, "placeholder", void 0);
209
- __decorate$H([
257
+ __decorate$I([
210
258
  MapToComponentField()
211
259
  ], VegaRichTextEditorRenderer.prototype, "value", void 0);
212
- __decorate$H([
260
+ __decorate$I([
213
261
  MapToComponentField()
214
262
  ], VegaRichTextEditorRenderer.prototype, "sourceView", void 0);
215
- __decorate$H([
263
+ __decorate$I([
216
264
  MapToComponentField()
217
265
  ], VegaRichTextEditorRenderer.prototype, "toolbarItems", void 0);
218
- __decorate$H([
266
+ __decorate$I([
219
267
  MapToComponentField()
220
268
  ], VegaRichTextEditorRenderer.prototype, "sourceEditConfig", void 0);
221
- __decorate$H([
269
+ __decorate$I([
222
270
  MapToComponentField()
223
271
  ], VegaRichTextEditorRenderer.prototype, "allowSourceEdit", void 0);
224
- __decorate$H([
272
+ __decorate$I([
225
273
  MapToComponentField()
226
274
  ], VegaRichTextEditorRenderer.prototype, "extensions", void 0);
227
- __decorate$H([
275
+ __decorate$I([
276
+ MapToComponentField()
277
+ ], VegaRichTextEditorRenderer.prototype, "wordCountController", void 0);
278
+ __decorate$I([
228
279
  MapToComponentField()
229
280
  ], VegaRichTextEditorRenderer.prototype, "richTextEditorSourceViewRenderer", void 0);
230
- __decorate$H([
281
+ __decorate$I([
231
282
  MapToComponentMethod('componentDidRender')
232
283
  ], VegaRichTextEditorRenderer.prototype, "componentDidRender", null);
233
284
 
234
- var __decorate$G = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
285
+ var __decorate$H = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
235
286
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
236
287
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
237
288
  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;
@@ -283,14 +334,17 @@ class ToolbarRenderer extends VegaSlimmer {
283
334
  const [renderedItems, totalVisibleCount] = this.renderToolbarItems();
284
335
  return (h("vega-flex", { gap: "size-8", alignItems: "center", flexWrap: "wrap" },
285
336
  this.allowSourceEdit && (h(Fragment, null,
286
- h("div", { class: "toolbar-btn-group" }, this.sourceEditToolbarButtonSlimmer.render()),
337
+ h("div", { class: "toolbar-btn-group", role: "presentation" }, this.sourceEditToolbarButtonSlimmer.render()),
287
338
  this.uniqueToolbarItems.length > 0 &&
288
339
  totalVisibleCount > 0 &&
289
340
  this.renderVegaDivider())),
290
341
  renderedItems));
291
342
  }
292
343
  renderVegaDivider() {
293
- return (h("vega-box", { height: "size-32" },
344
+ // Mark the divider as decorative so screen readers (e.g. VoiceOver
345
+ // on Firefox) skip it when navigating from the Edit Source button
346
+ // to the next toolbar item.
347
+ return (h("vega-box", { height: "size-32", "aria-hidden": "true", role: "presentation" },
294
348
  h("vega-divider", { direction: "vertical" })));
295
349
  }
296
350
  /**
@@ -329,81 +383,81 @@ class ToolbarRenderer extends VegaSlimmer {
329
383
  return null;
330
384
  })
331
385
  .filter(isNonNullable);
332
- return (h("div", { class: { 'toolbar-btn-group': true, 'vega-hidden': visibleCountPerGroup < 1 } }, groupElement));
386
+ return (h("div", { class: { 'toolbar-btn-group': true, 'vega-hidden': visibleCountPerGroup < 1 }, role: "presentation" }, groupElement));
333
387
  });
334
388
  return [renderedItems, totalVisibleCount];
335
389
  }
336
390
  }
337
- __decorate$G([
391
+ __decorate$H([
338
392
  MapToComponentField()
339
393
  ], ToolbarRenderer.prototype, "uniqueToolbarItems", void 0);
340
- __decorate$G([
394
+ __decorate$H([
341
395
  MapToComponentField()
342
396
  ], ToolbarRenderer.prototype, "allowSourceEdit", void 0);
343
- __decorate$G([
397
+ __decorate$H([
344
398
  MapToComponentField()
345
399
  ], ToolbarRenderer.prototype, "host", void 0);
346
- __decorate$G([
400
+ __decorate$H([
347
401
  MapToComponentField()
348
402
  ], ToolbarRenderer.prototype, "clearStyleToolbarButtonSlimmer", void 0);
349
- __decorate$G([
403
+ __decorate$H([
350
404
  MapToComponentField()
351
405
  ], ToolbarRenderer.prototype, "boldToolbarButtonSlimmer", void 0);
352
- __decorate$G([
406
+ __decorate$H([
353
407
  MapToComponentField()
354
408
  ], ToolbarRenderer.prototype, "textStylesToolbarButtonSlimmer", void 0);
355
- __decorate$G([
409
+ __decorate$H([
356
410
  MapToComponentField()
357
411
  ], ToolbarRenderer.prototype, "italicToolbarButtonSlimmer", void 0);
358
- __decorate$G([
412
+ __decorate$H([
359
413
  MapToComponentField()
360
414
  ], ToolbarRenderer.prototype, "underlineToolbarButtonSlimmer", void 0);
361
- __decorate$G([
415
+ __decorate$H([
362
416
  MapToComponentField()
363
417
  ], ToolbarRenderer.prototype, "textColorToolbarButtonSlimmer", void 0);
364
- __decorate$G([
418
+ __decorate$H([
365
419
  MapToComponentField()
366
420
  ], ToolbarRenderer.prototype, "bulletsNumbersToolbarButtonSlimmer", void 0);
367
- __decorate$G([
421
+ __decorate$H([
368
422
  MapToComponentField()
369
423
  ], ToolbarRenderer.prototype, "horizontalAlignmentToolbarButtonSlimmer", void 0);
370
- __decorate$G([
424
+ __decorate$H([
371
425
  MapToComponentField()
372
426
  ], ToolbarRenderer.prototype, "strikethroughToolbarButtonSlimmer", void 0);
373
- __decorate$G([
427
+ __decorate$H([
374
428
  MapToComponentField()
375
429
  ], ToolbarRenderer.prototype, "imageToolbarButtonSlimmer", void 0);
376
- __decorate$G([
430
+ __decorate$H([
377
431
  MapToComponentField()
378
432
  ], ToolbarRenderer.prototype, "moreIndentToolbarButtonSlimmer", void 0);
379
- __decorate$G([
433
+ __decorate$H([
380
434
  MapToComponentField()
381
435
  ], ToolbarRenderer.prototype, "lessIndentToolbarButtonSlimmer", void 0);
382
- __decorate$G([
436
+ __decorate$H([
383
437
  MapToComponentField()
384
438
  ], ToolbarRenderer.prototype, "codeToolbarButtonSlimmer", void 0);
385
- __decorate$G([
439
+ __decorate$H([
386
440
  MapToComponentField()
387
441
  ], ToolbarRenderer.prototype, "linkToolbarButtonSlimmer", void 0);
388
- __decorate$G([
442
+ __decorate$H([
389
443
  MapToComponentField()
390
444
  ], ToolbarRenderer.prototype, "codeBlockToolbarButtonSlimmer", void 0);
391
- __decorate$G([
445
+ __decorate$H([
392
446
  MapToComponentField()
393
447
  ], ToolbarRenderer.prototype, "undoToolbarButtonSlimmer", void 0);
394
- __decorate$G([
448
+ __decorate$H([
395
449
  MapToComponentField()
396
450
  ], ToolbarRenderer.prototype, "redoToolbarButtonSlimmer", void 0);
397
- __decorate$G([
451
+ __decorate$H([
398
452
  MapToComponentField()
399
453
  ], ToolbarRenderer.prototype, "sourceEditToolbarButtonSlimmer", void 0);
400
- __decorate$G([
454
+ __decorate$H([
401
455
  MapToComponentField()
402
456
  ], ToolbarRenderer.prototype, "selectionController", void 0);
403
- __decorate$G([
457
+ __decorate$H([
404
458
  MapToComponentField()
405
459
  ], ToolbarRenderer.prototype, "translationSlimmer", void 0);
406
- __decorate$G([
460
+ __decorate$H([
407
461
  MapToComponentField()
408
462
  ], ToolbarRenderer.prototype, "sourceView", void 0);
409
463
 
@@ -411,7 +465,7 @@ const bold = {
411
465
  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>`,
412
466
  };
413
467
 
414
- var __decorate$F = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
468
+ var __decorate$G = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
415
469
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
416
470
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
417
471
  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;
@@ -453,7 +507,7 @@ class BoldToolbarButtonSlimmer extends VisualModeToolbarButtonSlimmer {
453
507
  (() => {
454
508
  VegaInternalIconManager.register({ bold });
455
509
  })();
456
- __decorate$F([
510
+ __decorate$G([
457
511
  MapToComponentField()
458
512
  ], BoldToolbarButtonSlimmer.prototype, "selectionController", void 0);
459
513
 
@@ -461,7 +515,7 @@ const italic = {
461
515
  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>`,
462
516
  };
463
517
 
464
- var __decorate$E = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
518
+ var __decorate$F = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
465
519
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
466
520
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
467
521
  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;
@@ -501,7 +555,7 @@ class ItalicToolbarButtonSlimmer extends VisualModeToolbarButtonSlimmer {
501
555
  (() => {
502
556
  VegaInternalIconManager.register({ italic });
503
557
  })();
504
- __decorate$E([
558
+ __decorate$F([
505
559
  MapToComponentField()
506
560
  ], ItalicToolbarButtonSlimmer.prototype, "selectionController", void 0);
507
561
 
@@ -509,7 +563,7 @@ const underline = {
509
563
  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>`,
510
564
  };
511
565
 
512
- var __decorate$D = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
566
+ var __decorate$E = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
513
567
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
514
568
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
515
569
  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;
@@ -552,7 +606,7 @@ class UnderlineToolbarButtonSlimmer extends VisualModeToolbarButtonSlimmer {
552
606
  (() => {
553
607
  VegaInternalIconManager.register({ underline });
554
608
  })();
555
- __decorate$D([
609
+ __decorate$E([
556
610
  MapToComponentField()
557
611
  ], UnderlineToolbarButtonSlimmer.prototype, "selectionController", void 0);
558
612
 
@@ -560,7 +614,7 @@ const textSize = {
560
614
  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>`,
561
615
  };
562
616
 
563
- var __decorate$C = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
617
+ var __decorate$D = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
564
618
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
565
619
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
566
620
  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;
@@ -597,7 +651,7 @@ class TextStylesToolbarButtonSlimmer extends VisualModeToolbarButtonSlimmer {
597
651
  };
598
652
  }
599
653
  renderBtnWrapper(renderBtn) {
600
- return (h("vega-dropdown", { selectType: "single", trigger: "click", alignment: "center", isScreenPosition: true, selectedSourceKey: this.getSelectedSourceKey(), ref: (ref) => {
654
+ return (h("vega-dropdown", { selectType: "single", trigger: "click", alignment: "center", isScreenPosition: true, role: "presentation", selectedSourceKey: this.getSelectedSourceKey(), ref: (ref) => {
601
655
  this.addDropdownObserver(ref);
602
656
  } },
603
657
  renderBtn({ showArrowIcon: true }),
@@ -688,13 +742,13 @@ TextStylesToolbarButtonSlimmer.allItems = [
688
742
  label: 'Paragraph',
689
743
  },
690
744
  ];
691
- __decorate$C([
745
+ __decorate$D([
692
746
  MapToComponentField()
693
747
  ], TextStylesToolbarButtonSlimmer.prototype, "selectionController", void 0);
694
- __decorate$C([
748
+ __decorate$D([
695
749
  MapToComponentField()
696
750
  ], TextStylesToolbarButtonSlimmer.prototype, "focusController", void 0);
697
- __decorate$C([
751
+ __decorate$D([
698
752
  MapToComponentField()
699
753
  ], TextStylesToolbarButtonSlimmer.prototype, "textStyleItems", void 0);
700
754
 
@@ -702,7 +756,7 @@ const TextSlash = {
702
756
  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>`,
703
757
  };
704
758
 
705
- var __decorate$B = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
759
+ var __decorate$C = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
706
760
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
707
761
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
708
762
  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;
@@ -739,7 +793,7 @@ class ClearStyleToolbarButtonSlimmer extends VisualModeToolbarButtonSlimmer {
739
793
  'text-slash': TextSlash,
740
794
  });
741
795
  })();
742
- __decorate$B([
796
+ __decorate$C([
743
797
  MapToComponentField()
744
798
  ], ClearStyleToolbarButtonSlimmer.prototype, "selectionController", void 0);
745
799
 
@@ -747,7 +801,7 @@ const codeSimple = {
747
801
  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>`,
748
802
  };
749
803
 
750
- var __decorate$A = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
804
+ var __decorate$B = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
751
805
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
752
806
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
753
807
  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;
@@ -785,7 +839,7 @@ class CodeToolbarButtonSlimmer extends VisualModeToolbarButtonSlimmer {
785
839
  (() => {
786
840
  VegaInternalIconManager.register({ 'code-simple': codeSimple });
787
841
  })();
788
- __decorate$A([
842
+ __decorate$B([
789
843
  MapToComponentField()
790
844
  ], CodeToolbarButtonSlimmer.prototype, "selectionController", void 0);
791
845
 
@@ -793,7 +847,7 @@ const strikethrough = {
793
847
  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>`,
794
848
  };
795
849
 
796
- var __decorate$z = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
850
+ var __decorate$A = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
797
851
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
798
852
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
799
853
  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;
@@ -836,7 +890,7 @@ class StrikethroughToolbarButtonSlimmer extends VisualModeToolbarButtonSlimmer {
836
890
  (() => {
837
891
  VegaInternalIconManager.register({ strikethrough });
838
892
  })();
839
- __decorate$z([
893
+ __decorate$A([
840
894
  MapToComponentField()
841
895
  ], StrikethroughToolbarButtonSlimmer.prototype, "selectionController", void 0);
842
896
 
@@ -844,12 +898,16 @@ const link = {
844
898
  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>`,
845
899
  };
846
900
 
847
- var __decorate$y = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
901
+ var __decorate$z = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
848
902
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
849
903
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
850
904
  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;
851
905
  return c > 3 && r && Object.defineProperty(target, key, r), r;
852
906
  };
907
+ // One rAF is ~16 ms; 50 ms gives roughly two frames of buffer for the popover's
908
+ // internal focus trap to settle (and for screen readers such as VoiceOver to
909
+ // observe focus on <body>) before we restore focus to the trigger button.
910
+ const FOCUS_RESTORE_DELAY_MS = 50;
853
911
  class LinkToolbarButtonSlimmer extends VisualModeToolbarButtonSlimmer {
854
912
  constructor() {
855
913
  super({
@@ -857,7 +915,21 @@ class LinkToolbarButtonSlimmer extends VisualModeToolbarButtonSlimmer {
857
915
  tooltip: {
858
916
  text: 'Link',
859
917
  },
918
+ ariaLabel: 'Insert Link',
860
919
  });
920
+ // Restoring focus to the link button on Escape: the popover lives in
921
+ // vega-rich-text-link-editor's shadow root and is portalled to <body>, so
922
+ // the popover's built-in focus trap can't put focus back on our trigger.
923
+ // We track an Escape press during the popover lifetime and restore focus
924
+ // on hide; submit / outside-click flows leave the flag false. Stale
925
+ // Escape presses (pressed while the popover was closed) are cleared by
926
+ // `handleWrapperClickCapture` on the next open.
927
+ this.escapePressedDuringPopover = false;
928
+ // Tracks whether the document-level keydown listener has been registered
929
+ // so it can be removed in disconnectedCallback. Without removal, document
930
+ // keeps a strong reference to this slimmer instance after the rich-text
931
+ // editor is destroyed, leaking memory.
932
+ this.documentKeydownRegistered = false;
861
933
  this.handleLinkEditorChange = ({ detail, }) => {
862
934
  switch (detail.action) {
863
935
  case 'link': {
@@ -882,9 +954,97 @@ class LinkToolbarButtonSlimmer extends VisualModeToolbarButtonSlimmer {
882
954
  }
883
955
  }
884
956
  };
957
+ this.handleWrapperClickCapture = () => {
958
+ // Reset the Escape flag for each new open; only an Escape during this
959
+ // popover's lifetime should trigger focus restoration. Activating the
960
+ // trigger via keyboard (Enter / Space on the inner native <button>) also
961
+ // dispatches a synthetic click in the capture phase, so this handler
962
+ // runs in both pointer and keyboard activation paths. Also clears any
963
+ // stale Escape press recorded while the popover was closed. The
964
+ // `vegaPopoverShow` listener provides the same guarantee for
965
+ // programmatic-open paths that don't go through a wrapper click.
966
+ this.escapePressedDuringPopover = false;
967
+ };
968
+ this.handlePopoverShow = () => {
969
+ // Belt-and-suspenders reset for programmatic opens (e.g. an external
970
+ // caller invoking `linkEditorRef.show()`): without this, an Escape press
971
+ // recorded while the popover was previously closed could survive into
972
+ // the new open and trigger a spurious focus restore on the next hide.
973
+ this.escapePressedDuringPopover = false;
974
+ };
975
+ this.handleDocumentKeydown = (event) => {
976
+ // We cannot guard on a local `isPopoverOpen` flag here: vega-popover's
977
+ // own KeyboardManager registers its capture-phase keydown listener on
978
+ // document before this slimmer's listener, so it runs first, calls
979
+ // hidePopover(), and synchronously fires `vegaPopoverHide` — which
980
+ // would flip our flag to closed before this handler ever observes the
981
+ // Escape key. Instead, always record the Escape press; stale presses
982
+ // (made while the popover was closed) are cleared by
983
+ // `handleWrapperClickCapture` on the next open.
984
+ // Use `event.code` for consistency with vega-modal's Escape handling
985
+ // (vega-modal-open-state-controller.ts).
986
+ if (event.code === 'Escape') {
987
+ this.escapePressedDuringPopover = true;
988
+ }
989
+ };
990
+ this.handlePopoverHide = () => {
991
+ // vegaPopoverHide fires synchronously from the popover's own Escape
992
+ // handler — before our document-capture keydown observes the key, and
993
+ // before the popover's internal focus trap settles focus on <body>.
994
+ // Defer the decision/restore past that internal restore.
995
+ // eslint-disable-next-line no-restricted-globals
996
+ setTimeout(() => {
997
+ var _a, _b, _c, _d;
998
+ const shouldRestore = this.escapePressedDuringPopover;
999
+ this.escapePressedDuringPopover = false;
1000
+ if (shouldRestore) {
1001
+ // The toolbar button uses shadow DOM without delegatesFocus,
1002
+ // so focusing the host is a no-op — focus the inner <button>.
1003
+ // The toolbar button may have been removed from the DOM during
1004
+ // the timeout window (e.g. editor destroyed), so guard each step.
1005
+ /* istanbul ignore next */
1006
+ (_d = (_c = (_b = (_a = this.linkBtnWrapperRef) === null || _a === void 0 ? void 0 : _a.querySelector('vega-rich-text-editor-toolbar-button')) === null || _b === void 0 ? void 0 : _b.shadowRoot) === null || _c === void 0 ? void 0 : _c.querySelector('button')) === null || _d === void 0 ? void 0 : _d.focus();
1007
+ }
1008
+ }, FOCUS_RESTORE_DELAY_MS);
1009
+ };
1010
+ }
1011
+ /**
1012
+ * Component lifecycle - [disconnectedCallback]
1013
+ *
1014
+ * Removes the document-level Escape listener registered in the wrapper
1015
+ * ref callback so the slimmer instance is not retained by document after
1016
+ * the rich-text editor is destroyed.
1017
+ */
1018
+ disconnectedCallback() {
1019
+ if (this.documentKeydownRegistered) {
1020
+ // eslint-disable-next-line no-restricted-globals
1021
+ document.removeEventListener('keydown', this.handleDocumentKeydown, { capture: true });
1022
+ this.documentKeydownRegistered = false;
1023
+ }
1024
+ this.linkBtnWrapperRef = undefined;
885
1025
  }
886
1026
  renderBtnWrapper(renderBtn) {
887
- return (h("div", { class: "toolbar-btn-link-wrapper", ref: (ref) => (this.linkBtnWrapperRef = ref) },
1027
+ return (h("div", { class: "toolbar-btn-link-wrapper", role: "presentation", ref: (ref) => {
1028
+ if (ref && ref !== this.linkBtnWrapperRef) {
1029
+ this.linkBtnWrapperRef = ref;
1030
+ ref.addEventListener('click', this.handleWrapperClickCapture, { capture: true });
1031
+ // `vegaPopoverShow` clears any stale Escape recorded while the
1032
+ // popover was closed, covering programmatic-open paths
1033
+ // (e.g. linkEditorRef.show()) where no wrapper click fires.
1034
+ ref.addEventListener('vegaPopoverShow', this.handlePopoverShow);
1035
+ ref.addEventListener('vegaPopoverHide', this.handlePopoverHide);
1036
+ // Esc inside the portalled popover doesn't bubble to the wrapper,
1037
+ // so observe it on document capture. Tracked so it can be removed
1038
+ // in disconnectedCallback to avoid leaking this slimmer instance.
1039
+ if (!this.documentKeydownRegistered) {
1040
+ // eslint-disable-next-line no-restricted-globals
1041
+ document.addEventListener('keydown', this.handleDocumentKeydown, {
1042
+ capture: true,
1043
+ });
1044
+ this.documentKeydownRegistered = true;
1045
+ }
1046
+ }
1047
+ } },
888
1048
  renderBtn(),
889
1049
  h("vega-rich-text-link-editor", { resetStatusAfterHide: false, status: "linkEdit", ref: (ref) => {
890
1050
  if (ref) {
@@ -933,15 +1093,18 @@ class LinkToolbarButtonSlimmer extends VisualModeToolbarButtonSlimmer {
933
1093
  (() => {
934
1094
  VegaInternalIconManager.register({ link: link });
935
1095
  })();
936
- __decorate$y([
1096
+ __decorate$z([
937
1097
  MapToComponentField()
938
1098
  ], LinkToolbarButtonSlimmer.prototype, "selectionController", void 0);
1099
+ __decorate$z([
1100
+ MapToComponentMethod('disconnectedCallback')
1101
+ ], LinkToolbarButtonSlimmer.prototype, "disconnectedCallback", null);
939
1102
 
940
1103
  const indent = {
941
1104
  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>`,
942
1105
  };
943
1106
 
944
- var __decorate$x = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
1107
+ var __decorate$y = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
945
1108
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
946
1109
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
947
1110
  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;
@@ -975,7 +1138,7 @@ class MoreIndentToolbarButtonSlimmer extends VisualModeToolbarButtonSlimmer {
975
1138
  (() => {
976
1139
  VegaInternalIconManager.register({ indent: indent });
977
1140
  })();
978
- __decorate$x([
1141
+ __decorate$y([
979
1142
  MapToComponentField()
980
1143
  ], MoreIndentToolbarButtonSlimmer.prototype, "selectionController", void 0);
981
1144
 
@@ -983,7 +1146,7 @@ const outdent = {
983
1146
  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>`,
984
1147
  };
985
1148
 
986
- var __decorate$w = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
1149
+ var __decorate$x = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
987
1150
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
988
1151
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
989
1152
  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;
@@ -1018,7 +1181,7 @@ class LessIndentToolbarButtonSlimmer extends VisualModeToolbarButtonSlimmer {
1018
1181
  (() => {
1019
1182
  VegaInternalIconManager.register({ outdent: outdent });
1020
1183
  })();
1021
- __decorate$w([
1184
+ __decorate$x([
1022
1185
  MapToComponentField()
1023
1186
  ], LessIndentToolbarButtonSlimmer.prototype, "selectionController", void 0);
1024
1187
 
@@ -1039,7 +1202,7 @@ class ImageUpdateUrlAction extends ModifyContentAction {
1039
1202
  }
1040
1203
  }
1041
1204
 
1042
- var __decorate$v = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
1205
+ var __decorate$w = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
1043
1206
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
1044
1207
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
1045
1208
  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;
@@ -1051,6 +1214,7 @@ class ImageToolbarButtonSlimmer extends VisualModeToolbarButtonSlimmer {
1051
1214
  icon: 'image',
1052
1215
  tooltip: { text: 'Image' },
1053
1216
  autoFocusOnClick: false,
1217
+ ariaLabel: 'Insert Image',
1054
1218
  });
1055
1219
  this.insertURLImage = async () => {
1056
1220
  const url = this.normalizeSafeImageUrl(this.insertURLInputRef.value);
@@ -1105,8 +1269,8 @@ class ImageToolbarButtonSlimmer extends VisualModeToolbarButtonSlimmer {
1105
1269
  if (!shouldRenderUpload && !shouldRenderUrlInsertion) {
1106
1270
  return null;
1107
1271
  }
1108
- return (h("vega-box", null,
1109
- shouldRenderDropdown ? (h("vega-dropdown", { selectType: "none", trigger: "click", alignment: "center", isScreenPosition: true, ref: (ref) => {
1272
+ return (h("vega-box", { role: "presentation" },
1273
+ shouldRenderDropdown ? (h("vega-dropdown", { selectType: "none", trigger: "click", alignment: "center", isScreenPosition: true, role: "presentation", ref: (ref) => {
1110
1274
  this.dropdownRef = ref;
1111
1275
  this.addDropdownObserver(ref);
1112
1276
  } },
@@ -1238,16 +1402,16 @@ ImageToolbarButtonSlimmer.allItems = [
1238
1402
  label: 'Insert via URL',
1239
1403
  },
1240
1404
  ];
1241
- __decorate$v([
1405
+ __decorate$w([
1242
1406
  MapToComponentField()
1243
1407
  ], ImageToolbarButtonSlimmer.prototype, "host", void 0);
1244
- __decorate$v([
1408
+ __decorate$w([
1245
1409
  MapToComponentField()
1246
1410
  ], ImageToolbarButtonSlimmer.prototype, "insertImageController", void 0);
1247
- __decorate$v([
1411
+ __decorate$w([
1248
1412
  MapToComponentField()
1249
1413
  ], ImageToolbarButtonSlimmer.prototype, "imageInsertedEventEmitter", void 0);
1250
- __decorate$v([
1414
+ __decorate$w([
1251
1415
  MapToComponentField()
1252
1416
  ], ImageToolbarButtonSlimmer.prototype, "selectionController", void 0);
1253
1417
 
@@ -1557,7 +1721,7 @@ class ListShiftTabOutdentHandler extends AbstractListKeyboardHandler {
1557
1721
  }
1558
1722
  }
1559
1723
 
1560
- var __decorate$u = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
1724
+ var __decorate$v = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
1561
1725
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
1562
1726
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
1563
1727
  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;
@@ -1709,28 +1873,28 @@ class ListKeyboardSlimmer extends VegaSlimmer {
1709
1873
  this.selectionController.enqueueSelectionRangeFutureState(firstNode, Math.min(startOffset, firstNode.getRangeEndOffset()), lastNode, Math.min(endOffset, lastNode.getRangeEndOffset()), true);
1710
1874
  }
1711
1875
  }
1712
- __decorate$u([
1876
+ __decorate$v([
1713
1877
  MapToComponentField()
1714
1878
  ], ListKeyboardSlimmer.prototype, "selectionController", void 0);
1715
- __decorate$u([
1879
+ __decorate$v([
1716
1880
  MapToComponentField()
1717
1881
  ], ListKeyboardSlimmer.prototype, "valueController", void 0);
1718
- __decorate$u([
1882
+ __decorate$v([
1719
1883
  MapToComponentField()
1720
1884
  ], ListKeyboardSlimmer.prototype, "value", void 0);
1721
- __decorate$u([
1885
+ __decorate$v([
1722
1886
  MapToComponentField()
1723
1887
  ], ListKeyboardSlimmer.prototype, "toolbarItems", void 0);
1724
- __decorate$u([
1888
+ __decorate$v([
1725
1889
  MapToComponentField()
1726
1890
  ], ListKeyboardSlimmer.prototype, "vegaRichTextEditorRenderer", void 0);
1727
- __decorate$u([
1891
+ __decorate$v([
1728
1892
  MapToComponentMethod('disconnectedCallback')
1729
1893
  ], ListKeyboardSlimmer.prototype, "disconnectedCallback", null);
1730
- __decorate$u([
1894
+ __decorate$v([
1731
1895
  MapToComponentMethod('componentDidLoad')
1732
1896
  ], ListKeyboardSlimmer.prototype, "componentDidLoad", null);
1733
- __decorate$u([
1897
+ __decorate$v([
1734
1898
  MapToComponentMethod('watchToolbarItems')
1735
1899
  ], ListKeyboardSlimmer.prototype, "watchToolbarItems", null);
1736
1900
 
@@ -1747,7 +1911,7 @@ class TransformListAction extends ModifyContentAction {
1747
1911
  }
1748
1912
  }
1749
1913
 
1750
- var __decorate$t = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
1914
+ var __decorate$u = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
1751
1915
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
1752
1916
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
1753
1917
  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;
@@ -1806,14 +1970,14 @@ class BulletsToolbarButtonSlimmer extends VisualModeToolbarButtonSlimmer {
1806
1970
  }
1807
1971
  }
1808
1972
  }
1809
- __decorate$t([
1973
+ __decorate$u([
1810
1974
  MapToComponentField()
1811
1975
  ], BulletsToolbarButtonSlimmer.prototype, "selectionController", void 0);
1812
- __decorate$t([
1976
+ __decorate$u([
1813
1977
  MapToComponentField()
1814
1978
  ], BulletsToolbarButtonSlimmer.prototype, "popoverRef", void 0);
1815
1979
 
1816
- var __decorate$s = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
1980
+ var __decorate$t = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
1817
1981
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
1818
1982
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
1819
1983
  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;
@@ -1870,14 +2034,14 @@ class NumbersToolbarButtonSlimmer extends VisualModeToolbarButtonSlimmer {
1870
2034
  }
1871
2035
  }
1872
2036
  }
1873
- __decorate$s([
2037
+ __decorate$t([
1874
2038
  MapToComponentField()
1875
2039
  ], NumbersToolbarButtonSlimmer.prototype, "selectionController", void 0);
1876
- __decorate$s([
2040
+ __decorate$t([
1877
2041
  MapToComponentField()
1878
2042
  ], NumbersToolbarButtonSlimmer.prototype, "popoverRef", void 0);
1879
2043
 
1880
- var __decorate$r = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
2044
+ var __decorate$s = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
1881
2045
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
1882
2046
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
1883
2047
  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;
@@ -1890,6 +2054,7 @@ class BulletsNumbersToolbarButtonSlimmer extends VisualModeToolbarButtonSlimmer
1890
2054
  tooltip: {
1891
2055
  text: 'Bullets',
1892
2056
  },
2057
+ ariaLabel: 'Bullets and Numbers',
1893
2058
  });
1894
2059
  this.bulletsToolbarButtonSlimmer = new BulletsToolbarButtonSlimmer();
1895
2060
  this.numbersToolbarButtonSlimmer = new NumbersToolbarButtonSlimmer();
@@ -1908,7 +2073,7 @@ class BulletsNumbersToolbarButtonSlimmer extends VisualModeToolbarButtonSlimmer
1908
2073
  }
1909
2074
  }
1910
2075
  renderBtnWrapper(renderBtn) {
1911
- return (h("vega-popover", { showArrow: false, trigger: "click", placement: "bottom", alignment: "center", isScreenPosition: true, ref: (ref) => (this.popoverRef = ref) },
2076
+ return (h("vega-popover", { showArrow: false, trigger: "click", placement: "bottom", alignment: "center", isScreenPosition: true, role: "presentation", ref: (ref) => (this.popoverRef = ref) },
1912
2077
  h("div", { slot: "popover-content" }, renderBtn({ showArrowIcon: true })),
1913
2078
  h("div", { slot: "popover" }, this.renderContent())));
1914
2079
  }
@@ -1957,41 +2122,41 @@ class BulletsNumbersToolbarButtonSlimmer extends VisualModeToolbarButtonSlimmer
1957
2122
  'list-ol': ListOL,
1958
2123
  });
1959
2124
  })();
1960
- __decorate$r([
2125
+ __decorate$s([
1961
2126
  MapToComponentField()
1962
2127
  ], BulletsNumbersToolbarButtonSlimmer.prototype, "selectionController", void 0);
1963
- __decorate$r([
2128
+ __decorate$s([
1964
2129
  MapToComponentField()
1965
2130
  ], BulletsNumbersToolbarButtonSlimmer.prototype, "valueController", void 0);
1966
- __decorate$r([
2131
+ __decorate$s([
1967
2132
  MapToComponentField()
1968
2133
  ], BulletsNumbersToolbarButtonSlimmer.prototype, "value", void 0);
1969
- __decorate$r([
2134
+ __decorate$s([
1970
2135
  MapToComponentField()
1971
2136
  ], BulletsNumbersToolbarButtonSlimmer.prototype, "toolbarItems", void 0);
1972
- __decorate$r([
2137
+ __decorate$s([
1973
2138
  MapToComponentField()
1974
2139
  ], BulletsNumbersToolbarButtonSlimmer.prototype, "vegaRichTextEditorRenderer", void 0);
1975
- __decorate$r([
2140
+ __decorate$s([
1976
2141
  InjectVegaSlimmer()
1977
2142
  ], BulletsNumbersToolbarButtonSlimmer.prototype, "bulletsToolbarButtonSlimmer", void 0);
1978
- __decorate$r([
2143
+ __decorate$s([
1979
2144
  InjectVegaSlimmer()
1980
2145
  ], BulletsNumbersToolbarButtonSlimmer.prototype, "numbersToolbarButtonSlimmer", void 0);
1981
- __decorate$r([
2146
+ __decorate$s([
1982
2147
  InjectVegaSlimmer()
1983
2148
  ], BulletsNumbersToolbarButtonSlimmer.prototype, "listKeyboardSlimmer", void 0);
1984
- __decorate$r([
2149
+ __decorate$s([
1985
2150
  MapToComponentMethod('disconnectedCallback')
1986
2151
  ], BulletsNumbersToolbarButtonSlimmer.prototype, "disconnectedCallback", null);
1987
- __decorate$r([
2152
+ __decorate$s([
1988
2153
  MapToComponentMethod('componentDidLoad')
1989
2154
  ], BulletsNumbersToolbarButtonSlimmer.prototype, "componentDidLoad", null);
1990
- __decorate$r([
2155
+ __decorate$s([
1991
2156
  MapToComponentMethod('componentWillRender')
1992
2157
  ], BulletsNumbersToolbarButtonSlimmer.prototype, "componentWillRender", null);
1993
2158
 
1994
- var __decorate$q = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
2159
+ var __decorate$r = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
1995
2160
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
1996
2161
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
1997
2162
  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;
@@ -2026,14 +2191,14 @@ class LeftAlignToolbarButtonSlimmer extends VisualModeToolbarButtonSlimmer {
2026
2191
  'align-left': AlignLeft,
2027
2192
  });
2028
2193
  })();
2029
- __decorate$q([
2194
+ __decorate$r([
2030
2195
  MapToComponentField()
2031
2196
  ], LeftAlignToolbarButtonSlimmer.prototype, "selectionController", void 0);
2032
- __decorate$q([
2197
+ __decorate$r([
2033
2198
  MapToComponentField()
2034
2199
  ], LeftAlignToolbarButtonSlimmer.prototype, "popoverRef", void 0);
2035
2200
 
2036
- var __decorate$p = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
2201
+ var __decorate$q = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
2037
2202
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
2038
2203
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
2039
2204
  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;
@@ -2068,14 +2233,14 @@ class CenterAlignToolbarButtonSlimmer extends VisualModeToolbarButtonSlimmer {
2068
2233
  'align-center': AlignCenter,
2069
2234
  });
2070
2235
  })();
2071
- __decorate$p([
2236
+ __decorate$q([
2072
2237
  MapToComponentField()
2073
2238
  ], CenterAlignToolbarButtonSlimmer.prototype, "selectionController", void 0);
2074
- __decorate$p([
2239
+ __decorate$q([
2075
2240
  MapToComponentField()
2076
2241
  ], CenterAlignToolbarButtonSlimmer.prototype, "popoverRef", void 0);
2077
2242
 
2078
- var __decorate$o = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
2243
+ var __decorate$p = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
2079
2244
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
2080
2245
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
2081
2246
  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;
@@ -2110,14 +2275,14 @@ class RightAlignToolbarButtonSlimmer extends VisualModeToolbarButtonSlimmer {
2110
2275
  'align-right': AlignRight,
2111
2276
  });
2112
2277
  })();
2113
- __decorate$o([
2278
+ __decorate$p([
2114
2279
  MapToComponentField()
2115
2280
  ], RightAlignToolbarButtonSlimmer.prototype, "selectionController", void 0);
2116
- __decorate$o([
2281
+ __decorate$p([
2117
2282
  MapToComponentField()
2118
2283
  ], RightAlignToolbarButtonSlimmer.prototype, "popoverRef", void 0);
2119
2284
 
2120
- var __decorate$n = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
2285
+ var __decorate$o = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
2121
2286
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
2122
2287
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
2123
2288
  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;
@@ -2152,14 +2317,14 @@ class JustifyAlignToolbarButtonSlimmer extends VisualModeToolbarButtonSlimmer {
2152
2317
  'align-justify': AlignJustify,
2153
2318
  });
2154
2319
  })();
2155
- __decorate$n([
2320
+ __decorate$o([
2156
2321
  MapToComponentField()
2157
2322
  ], JustifyAlignToolbarButtonSlimmer.prototype, "selectionController", void 0);
2158
- __decorate$n([
2323
+ __decorate$o([
2159
2324
  MapToComponentField()
2160
2325
  ], JustifyAlignToolbarButtonSlimmer.prototype, "popoverRef", void 0);
2161
2326
 
2162
- var __decorate$m = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
2327
+ var __decorate$n = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
2163
2328
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
2164
2329
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
2165
2330
  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;
@@ -2172,6 +2337,7 @@ class HorizontalAlignmentToolbarButtonSlimmer extends VisualModeToolbarButtonSli
2172
2337
  tooltip: {
2173
2338
  text: 'Left Align',
2174
2339
  },
2340
+ ariaLabel: 'Horizontal Alignment',
2175
2341
  });
2176
2342
  this.leftAlignToolbarButtonSlimmer = new LeftAlignToolbarButtonSlimmer();
2177
2343
  this.centerAlignToolbarButtonSlimmer = new CenterAlignToolbarButtonSlimmer();
@@ -2196,7 +2362,7 @@ class HorizontalAlignmentToolbarButtonSlimmer extends VisualModeToolbarButtonSli
2196
2362
  }
2197
2363
  }
2198
2364
  renderBtnWrapper(renderBtn) {
2199
- return (h("vega-popover", { trigger: "click", showArrow: false, alignment: "center", placement: "bottom", isScreenPosition: true, ref: (ref) => (this.popoverRef = ref) },
2365
+ return (h("vega-popover", { trigger: "click", showArrow: false, alignment: "center", placement: "bottom", isScreenPosition: true, role: "presentation", ref: (ref) => (this.popoverRef = ref) },
2200
2366
  h("div", { slot: "popover-content" }, renderBtn({ showArrowIcon: true })),
2201
2367
  h("div", { slot: "popover" }, this.renderContent())));
2202
2368
  }
@@ -2217,22 +2383,22 @@ class HorizontalAlignmentToolbarButtonSlimmer extends VisualModeToolbarButtonSli
2217
2383
  .some((block) => this.shouldDisabledToolbar(block, HorizontalAlignmentAnnotationAction.name)));
2218
2384
  }
2219
2385
  }
2220
- __decorate$m([
2386
+ __decorate$n([
2221
2387
  MapToComponentField()
2222
2388
  ], HorizontalAlignmentToolbarButtonSlimmer.prototype, "selectionController", void 0);
2223
- __decorate$m([
2389
+ __decorate$n([
2224
2390
  InjectVegaSlimmer()
2225
2391
  ], HorizontalAlignmentToolbarButtonSlimmer.prototype, "leftAlignToolbarButtonSlimmer", void 0);
2226
- __decorate$m([
2392
+ __decorate$n([
2227
2393
  InjectVegaSlimmer()
2228
2394
  ], HorizontalAlignmentToolbarButtonSlimmer.prototype, "centerAlignToolbarButtonSlimmer", void 0);
2229
- __decorate$m([
2395
+ __decorate$n([
2230
2396
  InjectVegaSlimmer()
2231
2397
  ], HorizontalAlignmentToolbarButtonSlimmer.prototype, "rightAlignToolbarButtonSlimmer", void 0);
2232
- __decorate$m([
2398
+ __decorate$n([
2233
2399
  InjectVegaSlimmer()
2234
2400
  ], HorizontalAlignmentToolbarButtonSlimmer.prototype, "justifiedToolbarButtonSlimmer", void 0);
2235
- __decorate$m([
2401
+ __decorate$n([
2236
2402
  MapToComponentMethod('componentWillRender')
2237
2403
  ], HorizontalAlignmentToolbarButtonSlimmer.prototype, "componentWillRender", null);
2238
2404
 
@@ -2273,7 +2439,7 @@ class RTEEditorState {
2273
2439
  }
2274
2440
  }
2275
2441
 
2276
- var __decorate$l = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
2442
+ var __decorate$m = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
2277
2443
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
2278
2444
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
2279
2445
  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;
@@ -2283,6 +2449,11 @@ var __decorate$l = (undefined && undefined.__decorate) || function (decorators,
2283
2449
  * The value controller is responsible for updating the value of the rich text editor.
2284
2450
  */
2285
2451
  class ValueController extends VegaSlimmer {
2452
+ constructor() {
2453
+ super(...arguments);
2454
+ // Deep clone of the last committed value, kept only while a commit validator is active, used to roll back rejected changes.
2455
+ this.committedSnapshot = null;
2456
+ }
2286
2457
  /**
2287
2458
  * Component lifecycle - [connectedCallback]{@link VegaRichTextEditor.connectedCallback}
2288
2459
  */
@@ -2327,15 +2498,47 @@ class ValueController extends VegaSlimmer {
2327
2498
  });
2328
2499
  }
2329
2500
  this.registerEditorRefAndContent();
2501
+ this.seedCommittedSnapshot();
2502
+ }
2503
+ /**
2504
+ * Seeds the rollback snapshot from the current value while a commit interceptor is active.
2505
+ * Runs on load and on extension changes so runtime re-registration stays protected.
2506
+ */
2507
+ seedCommittedSnapshot() {
2508
+ if (this.wordCountController.hasWordCountHardLimit()) {
2509
+ this.committedSnapshot = this.value ? this.value.clone(true) : null;
2510
+ }
2330
2511
  }
2331
2512
  /**
2332
2513
  * Updates the value of the editor and restore the selection.
2333
2514
  *
2334
2515
  * @param {VegaRTEContent} newValue The new value to set.
2335
2516
  * @param {boolean} recordHistory - Whether to record the change in history.
2336
- */
2337
- async flushChanges(newValue, recordHistory = true) {
2338
- this.value = newValue.clone();
2517
+ * @param {RTEUpdateSource} updateSource - The source of the update, defaulting to 'default'.
2518
+ */
2519
+ async flushChanges(newValue, recordHistory = true, updateSource = RTEUpdateSource.Default) {
2520
+ const previous = this.committedSnapshot;
2521
+ const action = new CommitValueAction(newValue, previous, this.host);
2522
+ const committed = ActionHandleStrategyRegistry.executeTheStrategy(action, newValue);
2523
+ if (!committed) {
2524
+ if (updateSource === RTEUpdateSource.Composition) {
2525
+ // The composition input characters cannot be deleted, so we force a repaint to restore the content from the model.
2526
+ this.vegaRichTextEditorRenderer.forceContentRepaint();
2527
+ }
2528
+ else {
2529
+ // The commit was vetoed, so restore the placeholder the framework skipped repainting and roll back.
2530
+ this.vegaRichTextEditorRenderer.restoreEmptyTextPlaceholders();
2531
+ }
2532
+ // Deep clone so the rolled-back value never shares nodes with the snapshot, which in-place edits would otherwise corrupt.
2533
+ this.value = (previous !== null && previous !== void 0 ? previous : newValue).clone(true);
2534
+ if (previous) {
2535
+ // Seed the snapshot again so the next commit attempt has a valid rollback point.
2536
+ this.seedCommittedSnapshot();
2537
+ }
2538
+ await waitForComponentDidRender(this.host);
2539
+ return;
2540
+ }
2541
+ this.value = committed.clone();
2339
2542
  if (recordHistory) {
2340
2543
  this.historyController.registerHistory(new RTEEditorState(this.value, new RTESelectionState(this.selectionController.getCurrentRange())));
2341
2544
  }
@@ -2359,39 +2562,49 @@ class ValueController extends VegaSlimmer {
2359
2562
  }
2360
2563
  }
2361
2564
  ValueController.VALUE_CHANGE_DEBOUNCE_TIME = 50;
2362
- __decorate$l([
2565
+ __decorate$m([
2363
2566
  MapToComponentField()
2364
2567
  ], ValueController.prototype, "host", void 0);
2365
- __decorate$l([
2568
+ __decorate$m([
2366
2569
  MapToComponentField({ writable: true })
2367
2570
  ], ValueController.prototype, "value", void 0);
2368
- __decorate$l([
2571
+ __decorate$m([
2369
2572
  MapToComponentField()
2370
2573
  ], ValueController.prototype, "changeEventEmitter", void 0);
2371
- __decorate$l([
2574
+ __decorate$m([
2372
2575
  MapToComponentField()
2373
2576
  ], ValueController.prototype, "valueController", void 0);
2374
- __decorate$l([
2577
+ __decorate$m([
2375
2578
  MapToComponentField()
2376
2579
  ], ValueController.prototype, "historyController", void 0);
2377
- __decorate$l([
2580
+ __decorate$m([
2378
2581
  MapToComponentField()
2379
2582
  ], ValueController.prototype, "selectionController", void 0);
2380
- __decorate$l([
2583
+ __decorate$m([
2584
+ MapToComponentField()
2585
+ ], ValueController.prototype, "wordCountController", void 0);
2586
+ __decorate$m([
2587
+ MapToComponentField()
2588
+ ], ValueController.prototype, "vegaRichTextEditorRenderer", void 0);
2589
+ __decorate$m([
2381
2590
  MapToComponentField()
2382
2591
  ], ValueController.prototype, "sourceEditConfig", void 0);
2383
- __decorate$l([
2592
+ __decorate$m([
2384
2593
  MapToComponentMethod('connectedCallback')
2385
2594
  ], ValueController.prototype, "connectedCallback", null);
2386
- __decorate$l([
2595
+ __decorate$m([
2387
2596
  MapToComponentMethod('disconnectedCallback')
2388
2597
  ], ValueController.prototype, "disconnectedCallback", null);
2389
- __decorate$l([
2598
+ __decorate$m([
2390
2599
  MapToComponentMethod('componentWillLoad')
2391
2600
  ], ValueController.prototype, "componentWillLoad", null);
2392
- __decorate$l([
2601
+ __decorate$m([
2393
2602
  MapToComponentMethod('watchValueUpdate')
2394
2603
  ], ValueController.prototype, "watchValueUpdate", null);
2604
+ __decorate$m([
2605
+ MapToComponentMethod('componentDidLoad'),
2606
+ MapToComponentMethod('watchExtensions')
2607
+ ], ValueController.prototype, "seedCommittedSnapshot", null);
2395
2608
 
2396
2609
  /**
2397
2610
  * The rich text content controller
@@ -3223,8 +3436,11 @@ class InsertPasteHandler extends BaseHandler {
3223
3436
  const body = parsedDoc.body;
3224
3437
  // Extract plain text from the parsed document
3225
3438
  const plainText = (body.textContent || '').replace(/\r\n?/g, '\n');
3226
- // Check for rich inline formatting
3227
- let hasFormatting = Boolean(body.querySelector('b,strong,i,em,s,del,strike,u,mark'));
3439
+ // Check for rich inline formatting. Code blocks (`pre` carrying
3440
+ // `data-language`, the marker the code-block strategy recognizes) count as
3441
+ // formatting so they are never flattened to inline plain text, which would
3442
+ // drop the code block on single-line pastes whose text equals the HTML text.
3443
+ let hasFormatting = Boolean(body.querySelector('b,strong,i,em,s,del,strike,u,mark,code,pre[data-language]'));
3228
3444
  if (!hasFormatting) {
3229
3445
  hasFormatting = Array.from(body.querySelectorAll('span')).some((span) => {
3230
3446
  const style = span.getAttribute('style') || span.getAttribute('data-style') || '';
@@ -3315,9 +3531,18 @@ class InsertPasteHandler extends BaseHandler {
3315
3531
  context.restore(rootElements);
3316
3532
  this.normalizeImportedHtmlArtifacts(parsedDoc.body);
3317
3533
  const htmlElements = Array.from(parsedDoc.body.childNodes);
3318
- const resultBlocks = ElementToDtoStrategyProcessor.process(htmlElements)
3534
+ // Word paste enables custom-annotation processing (skipCustomAnnotations: false)
3535
+ // so that inline styles produced by WordPasteStrategy (colors, font-weight, etc.)
3536
+ // are mapped to RTE annotations. Regular rich paste skips them (undefined → default).
3537
+ const transformOptions = payload.type === RTE_PASTE_MODE_WORD
3538
+ ? {
3539
+ autoMatchFormat: true,
3540
+ skipCustomAnnotations: false,
3541
+ }
3542
+ : undefined;
3543
+ const resultBlocks = ElementToDtoStrategyProcessor.process(htmlElements, transformOptions)
3319
3544
  .filter(Boolean)
3320
- .map((output) => output.toDto())
3545
+ .map((output) => output.toDto(transformOptions))
3321
3546
  .filter(Boolean);
3322
3547
  // Fallback for synthetic payloads: if strategy conversion yields no blocks
3323
3548
  // but we still have plain text, create paragraph/text blocks directly.
@@ -3586,6 +3811,7 @@ class InsertPasteHandler extends BaseHandler {
3586
3811
  return {
3587
3812
  html: event.dataTransfer.getData('text/html') || eventPayload.html || '',
3588
3813
  text: event.dataTransfer.getData('text/plain') || eventPayload.text || '',
3814
+ type: event.dataTransfer.getData(RTE_PASTE_MODE_DATA_TYPE) || '',
3589
3815
  };
3590
3816
  }
3591
3817
  }
@@ -3883,7 +4109,7 @@ class KeyboardLinkHandler extends BaseHandler {
3883
4109
  }
3884
4110
  }
3885
4111
 
3886
- var __decorate$k = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
4112
+ var __decorate$l = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
3887
4113
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3888
4114
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
3889
4115
  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;
@@ -3924,6 +4150,7 @@ class UserInputController extends VegaSlimmer {
3924
4150
  }
3925
4151
  this.insertCompositionTextController.removeObserver();
3926
4152
  let updateFlag = false;
4153
+ let updateSource = RTEUpdateSource.Default;
3927
4154
  switch (inputType) {
3928
4155
  case 'insertParagraph':
3929
4156
  updateFlag = true;
@@ -3931,6 +4158,10 @@ class UserInputController extends VegaSlimmer {
3931
4158
  break;
3932
4159
  case 'insertText':
3933
4160
  updateFlag = true;
4161
+ updateSource =
4162
+ e[RTE_UPDATE_SOURCE_KEY] === RTEUpdateSource.Composition
4163
+ ? RTEUpdateSource.Composition
4164
+ : RTEUpdateSource.Default;
3934
4165
  this.insertTextHandler.execute(this.value, this.selectionController, this.host, e);
3935
4166
  break;
3936
4167
  case 'insertLineBreak':
@@ -3951,7 +4182,7 @@ class UserInputController extends VegaSlimmer {
3951
4182
  break;
3952
4183
  }
3953
4184
  if (updateFlag) {
3954
- void this.valueController.flushChanges(this.value);
4185
+ void this.valueController.flushChanges(this.value, true, updateSource);
3955
4186
  }
3956
4187
  };
3957
4188
  }
@@ -4027,28 +4258,28 @@ class UserInputController extends VegaSlimmer {
4027
4258
  return false;
4028
4259
  }
4029
4260
  }
4030
- __decorate$k([
4261
+ __decorate$l([
4031
4262
  MapToComponentField()
4032
4263
  ], UserInputController.prototype, "host", void 0);
4033
- __decorate$k([
4264
+ __decorate$l([
4034
4265
  MapToComponentField()
4035
4266
  ], UserInputController.prototype, "value", void 0);
4036
- __decorate$k([
4267
+ __decorate$l([
4037
4268
  MapToComponentField()
4038
4269
  ], UserInputController.prototype, "valueController", void 0);
4039
- __decorate$k([
4270
+ __decorate$l([
4040
4271
  MapToComponentField()
4041
4272
  ], UserInputController.prototype, "vegaRichTextEditorRenderer", void 0);
4042
- __decorate$k([
4273
+ __decorate$l([
4043
4274
  MapToComponentField()
4044
4275
  ], UserInputController.prototype, "selectionController", void 0);
4045
- __decorate$k([
4276
+ __decorate$l([
4046
4277
  MapToComponentField()
4047
4278
  ], UserInputController.prototype, "insertCompositionTextController", void 0);
4048
- __decorate$k([
4279
+ __decorate$l([
4049
4280
  MapToComponentMethod('componentDidLoad')
4050
4281
  ], UserInputController.prototype, "addActionListener", null);
4051
- __decorate$k([
4282
+ __decorate$l([
4052
4283
  MapToComponentMethod('disconnectedCallback')
4053
4284
  ], UserInputController.prototype, "removeActionListener", null);
4054
4285
 
@@ -4068,7 +4299,7 @@ class InsertImageToBlockAction extends ModifyContentAction {
4068
4299
  }
4069
4300
  }
4070
4301
 
4071
- var __decorate$j = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
4302
+ var __decorate$k = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
4072
4303
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4073
4304
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4074
4305
  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;
@@ -4160,26 +4391,26 @@ class InsertImageController extends VegaSlimmer {
4160
4391
  }
4161
4392
  }
4162
4393
  }
4163
- __decorate$j([
4394
+ __decorate$k([
4164
4395
  MapToComponentField()
4165
4396
  ], InsertImageController.prototype, "selectionController", void 0);
4166
- __decorate$j([
4397
+ __decorate$k([
4167
4398
  MapToComponentField()
4168
4399
  ], InsertImageController.prototype, "value", void 0);
4169
- __decorate$j([
4400
+ __decorate$k([
4170
4401
  MapToComponentField()
4171
4402
  ], InsertImageController.prototype, "valueController", void 0);
4172
- __decorate$j([
4403
+ __decorate$k([
4173
4404
  MapToComponentField()
4174
4405
  ], InsertImageController.prototype, "vegaRichTextEditorRenderer", void 0);
4175
- __decorate$j([
4406
+ __decorate$k([
4176
4407
  MapToComponentMethod('componentDidLoad')
4177
4408
  ], InsertImageController.prototype, "registerObserver", null);
4178
- __decorate$j([
4409
+ __decorate$k([
4179
4410
  MapToComponentMethod('disconnectedCallback')
4180
4411
  ], InsertImageController.prototype, "unRegisterObserver", null);
4181
4412
 
4182
- var __decorate$i = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
4413
+ var __decorate$j = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
4183
4414
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4184
4415
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4185
4416
  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;
@@ -4245,20 +4476,20 @@ class FocusController extends VegaSlimmer {
4245
4476
  this.selectionController.setSelectionRange(range);
4246
4477
  }
4247
4478
  }
4248
- __decorate$i([
4479
+ __decorate$j([
4249
4480
  MapToComponentField()
4250
4481
  ], FocusController.prototype, "vegaRichTextEditorRenderer", void 0);
4251
- __decorate$i([
4482
+ __decorate$j([
4252
4483
  MapToComponentField()
4253
4484
  ], FocusController.prototype, "selectionController", void 0);
4254
- __decorate$i([
4485
+ __decorate$j([
4255
4486
  MapToComponentField()
4256
4487
  ], FocusController.prototype, "valueController", void 0);
4257
- __decorate$i([
4488
+ __decorate$j([
4258
4489
  MapToComponentField()
4259
4490
  ], FocusController.prototype, "value", void 0);
4260
4491
 
4261
- var __decorate$h = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
4492
+ var __decorate$i = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
4262
4493
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4263
4494
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4264
4495
  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;
@@ -4465,38 +4696,39 @@ class InsertCompositionTextController extends VegaSlimmer {
4465
4696
  const inputEvent = new CustomEvent('beforeinput');
4466
4697
  inputEvent['data'] = text;
4467
4698
  inputEvent['inputType'] = 'insertText';
4699
+ inputEvent[RTE_UPDATE_SOURCE_KEY] = RTEUpdateSource.Composition;
4468
4700
  this.editableElementRef.dispatchEvent(inputEvent);
4469
4701
  }
4470
4702
  }
4471
- __decorate$h([
4703
+ __decorate$i([
4472
4704
  MapToComponentField()
4473
4705
  ], InsertCompositionTextController.prototype, "selectionController", void 0);
4474
- __decorate$h([
4706
+ __decorate$i([
4475
4707
  MapToComponentField()
4476
4708
  ], InsertCompositionTextController.prototype, "host", void 0);
4477
- __decorate$h([
4709
+ __decorate$i([
4478
4710
  MapToComponentField()
4479
4711
  ], InsertCompositionTextController.prototype, "value", void 0);
4480
- __decorate$h([
4712
+ __decorate$i([
4481
4713
  MapToComponentField()
4482
4714
  ], InsertCompositionTextController.prototype, "valueController", void 0);
4483
- __decorate$h([
4715
+ __decorate$i([
4484
4716
  MapToComponentField()
4485
4717
  ], InsertCompositionTextController.prototype, "userInputController", void 0);
4486
- __decorate$h([
4718
+ __decorate$i([
4487
4719
  MapToComponentField()
4488
4720
  ], InsertCompositionTextController.prototype, "vegaRichTextEditorRenderer", void 0);
4489
- __decorate$h([
4721
+ __decorate$i([
4490
4722
  MapToComponentMethod('componentDidLoad')
4491
4723
  ], InsertCompositionTextController.prototype, "addCompositionTextEventListener", null);
4492
- __decorate$h([
4724
+ __decorate$i([
4493
4725
  MapToComponentMethod('disconnectedCallback')
4494
4726
  ], InsertCompositionTextController.prototype, "removeCompositionTextEventListener", null);
4495
- __decorate$h([
4727
+ __decorate$i([
4496
4728
  MapToComponentMethod('componentDidRender')
4497
4729
  ], InsertCompositionTextController.prototype, "reConnectObserver", null);
4498
4730
 
4499
- var __decorate$g = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
4731
+ var __decorate$h = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
4500
4732
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4501
4733
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4502
4734
  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;
@@ -4705,23 +4937,23 @@ class DeleteSelectedNodesController extends VegaSlimmer {
4705
4937
  }
4706
4938
  }
4707
4939
  }
4708
- __decorate$g([
4940
+ __decorate$h([
4709
4941
  MapToComponentField()
4710
4942
  ], DeleteSelectedNodesController.prototype, "host", void 0);
4711
- __decorate$g([
4943
+ __decorate$h([
4712
4944
  MapToComponentField()
4713
4945
  ], DeleteSelectedNodesController.prototype, "selectionController", void 0);
4714
- __decorate$g([
4946
+ __decorate$h([
4715
4947
  MapToComponentField()
4716
4948
  ], DeleteSelectedNodesController.prototype, "value", void 0);
4717
- __decorate$g([
4949
+ __decorate$h([
4718
4950
  MapToComponentMethod('connectedCallback')
4719
4951
  ], DeleteSelectedNodesController.prototype, "addDeleteObserver", null);
4720
- __decorate$g([
4952
+ __decorate$h([
4721
4953
  MapToComponentMethod('disconnectedCallback')
4722
4954
  ], DeleteSelectedNodesController.prototype, "removeDeleteObserver", null);
4723
4955
 
4724
- var __decorate$f = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
4956
+ var __decorate$g = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
4725
4957
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4726
4958
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4727
4959
  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;
@@ -4798,22 +5030,22 @@ class HistoryController extends ComponentValueHistoryControllerSlimmer {
4798
5030
  await this.valueController.flushChanges(content, false);
4799
5031
  }
4800
5032
  }
4801
- __decorate$f([
5033
+ __decorate$g([
4802
5034
  MapToComponentField()
4803
5035
  ], HistoryController.prototype, "host", void 0);
4804
- __decorate$f([
5036
+ __decorate$g([
4805
5037
  MapToComponentField()
4806
5038
  ], HistoryController.prototype, "vegaRichTextEditorRenderer", void 0);
4807
- __decorate$f([
5039
+ __decorate$g([
4808
5040
  MapToComponentField()
4809
5041
  ], HistoryController.prototype, "valueController", void 0);
4810
- __decorate$f([
5042
+ __decorate$g([
4811
5043
  MapToComponentField()
4812
5044
  ], HistoryController.prototype, "value", void 0);
4813
- __decorate$f([
5045
+ __decorate$g([
4814
5046
  MapToComponentField()
4815
5047
  ], HistoryController.prototype, "selectionController", void 0);
4816
- __decorate$f([
5048
+ __decorate$g([
4817
5049
  MapToComponentMethod('componentDidLoad')
4818
5050
  ], HistoryController.prototype, "registerInitState", null);
4819
5051
 
@@ -4834,7 +5066,7 @@ class TransformToCodeBlockAction extends ModifyContentAction {
4834
5066
  }
4835
5067
  }
4836
5068
 
4837
- var __decorate$e = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
5069
+ var __decorate$f = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
4838
5070
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4839
5071
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4840
5072
  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;
@@ -4890,13 +5122,13 @@ class CodeBlockToolbarButtonSlimmer extends VisualModeToolbarButtonSlimmer {
4890
5122
  (() => {
4891
5123
  VegaInternalIconManager.register({ 'rectangle-code': rectangleCode });
4892
5124
  })();
4893
- __decorate$e([
5125
+ __decorate$f([
4894
5126
  MapToComponentField()
4895
5127
  ], CodeBlockToolbarButtonSlimmer.prototype, "selectionController", void 0);
4896
- __decorate$e([
5128
+ __decorate$f([
4897
5129
  MapToComponentField()
4898
5130
  ], CodeBlockToolbarButtonSlimmer.prototype, "valueController", void 0);
4899
- __decorate$e([
5131
+ __decorate$f([
4900
5132
  MapToComponentField()
4901
5133
  ], CodeBlockToolbarButtonSlimmer.prototype, "value", void 0);
4902
5134
 
@@ -4904,7 +5136,7 @@ const undoIcon = {
4904
5136
  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>`,
4905
5137
  };
4906
5138
 
4907
- var __decorate$d = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
5139
+ var __decorate$e = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
4908
5140
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4909
5141
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4910
5142
  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;
@@ -4933,7 +5165,7 @@ class UndoToolbarButtonSlimmer extends VisualModeToolbarButtonSlimmer {
4933
5165
  (() => {
4934
5166
  VegaInternalIconManager.register({ 'arrow-turn-left': undoIcon });
4935
5167
  })();
4936
- __decorate$d([
5168
+ __decorate$e([
4937
5169
  MapToComponentField()
4938
5170
  ], UndoToolbarButtonSlimmer.prototype, "historyController", void 0);
4939
5171
 
@@ -4941,7 +5173,7 @@ const redoIcon = {
4941
5173
  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>`,
4942
5174
  };
4943
5175
 
4944
- var __decorate$c = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
5176
+ var __decorate$d = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
4945
5177
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4946
5178
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4947
5179
  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;
@@ -4970,7 +5202,7 @@ class RedoToolbarButtonSlimmer extends VisualModeToolbarButtonSlimmer {
4970
5202
  (() => {
4971
5203
  VegaInternalIconManager.register({ 'arrow-turn-right': redoIcon });
4972
5204
  })();
4973
- __decorate$c([
5205
+ __decorate$d([
4974
5206
  MapToComponentField()
4975
5207
  ], RedoToolbarButtonSlimmer.prototype, "historyController", void 0);
4976
5208
 
@@ -5041,7 +5273,7 @@ const displayCode = {
5041
5273
  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>`,
5042
5274
  };
5043
5275
 
5044
- var __decorate$b = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
5276
+ var __decorate$c = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
5045
5277
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
5046
5278
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5047
5279
  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;
@@ -5062,11 +5294,25 @@ class SourceEditToolbarButtonSlimmer extends ToolbarButtonSlimmer {
5062
5294
  if (isSelected) {
5063
5295
  await this.saveSourceCode();
5064
5296
  }
5065
- else {
5066
- this.selectionController.setSelectionRange(new Range());
5067
- }
5297
+ // VD-8789 (keyboard a11y): the previous implementation cleared the editor
5298
+ // selection here via `selectionController.setSelectionRange(new Range())`
5299
+ // when entering source view. That call is intentionally removed so the
5300
+ // caret position is preserved when toggling back to visual mode, and so
5301
+ // the source-edit button can be re-activated from the keyboard without
5302
+ // the selection being reset out from under the user.
5068
5303
  this.sourceView = !isSelected;
5069
5304
  }
5305
+ // VD-8789 (keyboard a11y): the default `preventLostFocus` calls
5306
+ // `e.preventDefault()` on mousedown so the button never receives focus and
5307
+ // the rich-text editor selection is preserved. The source-edit toggle is
5308
+ // different — activating it switches the editor to source-view mode, where
5309
+ // the visual-mode selection is no longer relevant. We override with a no-op
5310
+ // so the button is allowed to take focus on click, matching its keyboard
5311
+ // activation path and giving keyboard / screen-reader users a stable focus
5312
+ // target to toggle back out of source view.
5313
+ preventLostFocus() {
5314
+ return {};
5315
+ }
5070
5316
  isSelected() {
5071
5317
  return this.sourceView;
5072
5318
  }
@@ -5074,7 +5320,9 @@ class SourceEditToolbarButtonSlimmer extends ToolbarButtonSlimmer {
5074
5320
  return super.isDisabled();
5075
5321
  }
5076
5322
  async saveSourceCode() {
5323
+ var _a;
5077
5324
  const sourceViewValue = this.richTextEditorSourceViewRenderer.getSourceCode();
5325
+ const blockBoundaryRegistry = (_a = extensionContextManager.getExtensionContext(this.host)) === null || _a === void 0 ? void 0 : _a.blockBoundaryRegistry;
5078
5326
  if (!sourceViewValue && this.value.isEmpty()) {
5079
5327
  return;
5080
5328
  }
@@ -5082,6 +5330,7 @@ class SourceEditToolbarButtonSlimmer extends ToolbarButtonSlimmer {
5082
5330
  await this.valueController.flushChanges(VegaRTEContent.fromHtml(sourceViewValue, {
5083
5331
  autoMatchFormat: this.sourceEditConfig.autoMatchFormat,
5084
5332
  filterInlineStyles: this.sourceEditConfig.filterInlineStyles,
5333
+ blockBoundaryRegistry,
5085
5334
  }));
5086
5335
  }
5087
5336
  }
@@ -5089,26 +5338,61 @@ class SourceEditToolbarButtonSlimmer extends ToolbarButtonSlimmer {
5089
5338
  (() => {
5090
5339
  VegaInternalIconManager.register({ 'display-code': displayCode });
5091
5340
  })();
5092
- __decorate$b([
5341
+ __decorate$c([
5093
5342
  MapToComponentField({ writable: true })
5094
5343
  ], SourceEditToolbarButtonSlimmer.prototype, "sourceView", void 0);
5095
- __decorate$b([
5096
- MapToComponentField()
5097
- ], SourceEditToolbarButtonSlimmer.prototype, "selectionController", void 0);
5098
- __decorate$b([
5344
+ __decorate$c([
5099
5345
  MapToComponentField()
5100
5346
  ], SourceEditToolbarButtonSlimmer.prototype, "valueController", void 0);
5101
- __decorate$b([
5347
+ __decorate$c([
5102
5348
  MapToComponentField()
5103
5349
  ], SourceEditToolbarButtonSlimmer.prototype, "richTextEditorSourceViewRenderer", void 0);
5104
- __decorate$b([
5350
+ __decorate$c([
5105
5351
  MapToComponentField()
5106
5352
  ], SourceEditToolbarButtonSlimmer.prototype, "sourceEditConfig", void 0);
5107
- __decorate$b([
5353
+ __decorate$c([
5354
+ MapToComponentField()
5355
+ ], SourceEditToolbarButtonSlimmer.prototype, "host", void 0);
5356
+ __decorate$c([
5108
5357
  MapToComponentField()
5109
5358
  ], SourceEditToolbarButtonSlimmer.prototype, "value", void 0);
5110
5359
 
5111
- var __decorate$a = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
5360
+ /**
5361
+ * Per-editor registry for block-boundary predicates contributed by extensions.
5362
+ */
5363
+ class BlockBoundaryRegistry {
5364
+ constructor() {
5365
+ this.predicates = new Set();
5366
+ }
5367
+ /**
5368
+ * Register a block-boundary predicate.
5369
+ *
5370
+ * @param {BlockBoundaryPredicate} predicate - Predicate to register.
5371
+ * @returns {() => void} Unregister callback.
5372
+ */
5373
+ register(predicate) {
5374
+ this.predicates.add(predicate);
5375
+ return () => {
5376
+ this.predicates.delete(predicate);
5377
+ };
5378
+ }
5379
+ /**
5380
+ * Returns true when any registered predicate marks the element as a boundary.
5381
+ *
5382
+ * @param {HTMLElement} element - Element to inspect.
5383
+ * @returns {boolean} Whether the element is a boundary.
5384
+ */
5385
+ isBoundary(element) {
5386
+ for (const predicate of this.predicates) {
5387
+ if (predicate(element)) {
5388
+ return true;
5389
+ }
5390
+ }
5391
+ return false;
5392
+ }
5393
+ }
5394
+
5395
+ var __decorate$b = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
5112
5396
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
5113
5397
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5114
5398
  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;
@@ -5220,37 +5504,114 @@ class RTEExtensionController extends VegaSlimmer {
5220
5504
  getSelectedNodes: this.getSelectedNodes,
5221
5505
  setSelectedNodes: this.selectionController.setSelectedNodes.bind(this.selectionController),
5222
5506
  getSelection: this.selectionController.getSelection.bind(this.selectionController),
5507
+ blockBoundaryRegistry: new BlockBoundaryRegistry(),
5223
5508
  };
5224
5509
  }
5225
5510
  }
5226
- __decorate$a([
5511
+ __decorate$b([
5227
5512
  MapToComponentField()
5228
5513
  ], RTEExtensionController.prototype, "extensions", void 0);
5229
- __decorate$a([
5514
+ __decorate$b([
5230
5515
  MapToComponentField()
5231
5516
  ], RTEExtensionController.prototype, "host", void 0);
5232
- __decorate$a([
5517
+ __decorate$b([
5233
5518
  MapToComponentField()
5234
5519
  ], RTEExtensionController.prototype, "sourceView", void 0);
5235
- __decorate$a([
5520
+ __decorate$b([
5236
5521
  MapToComponentField()
5237
5522
  ], RTEExtensionController.prototype, "valueController", void 0);
5238
- __decorate$a([
5523
+ __decorate$b([
5239
5524
  MapToComponentField()
5240
5525
  ], RTEExtensionController.prototype, "selectionController", void 0);
5241
- __decorate$a([
5526
+ __decorate$b([
5242
5527
  MapToComponentMethod('componentWillLoad')
5243
5528
  ], RTEExtensionController.prototype, "prepareExtensionsBeforeLoad", null);
5244
- __decorate$a([
5529
+ __decorate$b([
5245
5530
  MapToComponentMethod('componentDidLoad')
5246
5531
  ], RTEExtensionController.prototype, "initialExtensionContext", null);
5247
- __decorate$a([
5532
+ __decorate$b([
5248
5533
  MapToComponentMethod('disconnectedCallback')
5249
5534
  ], RTEExtensionController.prototype, "destroyExtension", null);
5250
- __decorate$a([
5535
+ __decorate$b([
5251
5536
  MapToComponentMethod('watchExtensions')
5252
5537
  ], RTEExtensionController.prototype, "handleExtensionsChange", null);
5253
5538
 
5539
+ var __decorate$a = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
5540
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
5541
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5542
+ 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;
5543
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
5544
+ };
5545
+ /**
5546
+ * Bridges the word count extension to the editor component so the footer UI can
5547
+ * read whether the character count should be shown and its current value.
5548
+ */
5549
+ class WordCountController extends VegaSlimmer {
5550
+ constructor() {
5551
+ super(...arguments);
5552
+ this.cachedValue = null;
5553
+ this.cachedConfig = null;
5554
+ this.cachedData = null;
5555
+ }
5556
+ /**
5557
+ * Whether the character count UI should be rendered.
5558
+ *
5559
+ * @returns {boolean} True when a word count extension requests the UI.
5560
+ */
5561
+ shouldShowUI() {
5562
+ var _a;
5563
+ return !!((_a = this.findWordCountExtension()) === null || _a === void 0 ? void 0 : _a.getConfig().showCharCount);
5564
+ }
5565
+ /**
5566
+ * Compute the current character count data from the editor content.
5567
+ *
5568
+ * @returns {Nullable<VegaRTEWordCountData>} The count data or null when no word count extension is registered.
5569
+ */
5570
+ getData() {
5571
+ const extension = this.findWordCountExtension();
5572
+ if (!extension) {
5573
+ return null;
5574
+ }
5575
+ const value = this.host.value;
5576
+ const config = extension.getConfig();
5577
+ // VegaRTEContent is immutable, so a matching value/config reference means the data is unchanged.
5578
+ if (this.cachedData && value === this.cachedValue && deepEqual(config, this.cachedConfig)) {
5579
+ return this.cachedData;
5580
+ }
5581
+ this.cachedData = extension.getData(value);
5582
+ this.cachedValue = value;
5583
+ this.cachedConfig = config;
5584
+ return this.cachedData;
5585
+ }
5586
+ /**
5587
+ * Whether the word count extension gates commits with a hard character limit.
5588
+ *
5589
+ * @returns {boolean} True when a hard limit with a max character count is configured for this host.
5590
+ */
5591
+ hasWordCountHardLimit() {
5592
+ var _a;
5593
+ const config = (_a = this.findWordCountExtension()) === null || _a === void 0 ? void 0 : _a.getConfig();
5594
+ return !!config && Boolean(config.hardLimit) && isNonNullable(config.maxChars);
5595
+ }
5596
+ /**
5597
+ * Locate the word count extension by its runtime `type` discriminator.
5598
+ * Use this way instead of instanceof to avoid direct dependency on the extension class.
5599
+ *
5600
+ * @returns {Nullable<VegaRTEWordCountExtension>} The word count extension or null.
5601
+ */
5602
+ findWordCountExtension() {
5603
+ var _a;
5604
+ const extension = ((_a = this.extensions) !== null && _a !== void 0 ? _a : []).find((ext) => 'type' in ext && ext['type'] === RTE_WORD_COUNT_KEY);
5605
+ return extension !== null && extension !== void 0 ? extension : null;
5606
+ }
5607
+ }
5608
+ __decorate$a([
5609
+ MapToComponentField()
5610
+ ], WordCountController.prototype, "extensions", void 0);
5611
+ __decorate$a([
5612
+ MapToComponentField()
5613
+ ], WordCountController.prototype, "host", void 0);
5614
+
5254
5615
  /**
5255
5616
  * Class to format HTML code with proper indentation and style cleanup.
5256
5617
  */
@@ -5435,14 +5796,16 @@ class VegaRichTextEditorSourceViewRenderer extends VegaSlimmer {
5435
5796
  * Handle the blur event of the code block. When the code block loses focus, emit the source code change event with the current source code.
5436
5797
  */
5437
5798
  this.handleCodeBlockBlur = () => {
5438
- var _a;
5799
+ var _a, _b;
5439
5800
  // If source view is closed while blurring, it means the user switch back to normal mode, so we can skip emitting the change event.
5440
5801
  if (this.sourceView) {
5441
5802
  const filterInlineStyles = Boolean(this.sourceEditConfig.filterInlineStyles);
5442
5803
  const sourceCode = this.getSourceCode();
5804
+ const blockBoundaryRegistry = (_a = extensionContextManager.getExtensionContext(this.host)) === null || _a === void 0 ? void 0 : _a.blockBoundaryRegistry;
5443
5805
  const newValue = VegaRTEContent.fromHtml(sourceCode, {
5444
- autoMatchFormat: (_a = this.sourceEditConfig.autoMatchFormat) !== null && _a !== void 0 ? _a : true,
5806
+ autoMatchFormat: (_b = this.sourceEditConfig.autoMatchFormat) !== null && _b !== void 0 ? _b : true,
5445
5807
  filterInlineStyles,
5808
+ blockBoundaryRegistry,
5446
5809
  });
5447
5810
  const newSourceCode = newValue.toHtml({ filterInlineStyles });
5448
5811
  if (newSourceCode !== this.prevRecord) {
@@ -5565,6 +5928,13 @@ const VegaRichTextEditor = class {
5565
5928
  this.vegaSourceCodeChange = createEvent(this, "vegaSourceCodeChange", 7);
5566
5929
  this.sourceCodeChange = createEvent(this, "sourceCodeChange", 7);
5567
5930
  this.globalSlimmers = {};
5931
+ this.ariaAttributesValueMapper = new AriaAttributesValueMapper(() => this.vegaRichTextEditorRenderer.getRTEEditableElementRef(), {
5932
+ 'aria-label': {
5933
+ dependency: ['data-aria-label', 'label'],
5934
+ // When no label is provided, announce a meaningful role name
5935
+ defaultValue: () => this.translationSlimmer.t('Rich Text Editor. Editing area: main. '),
5936
+ },
5937
+ });
5568
5938
  this.translationSlimmer = new TranslationSlimmer();
5569
5939
  this.vegaComponentUsageRuntimeMetricsSlimmer = new VegaComponentUsageRuntimeMetricsSlimmer();
5570
5940
  this.formFieldController = new FormFieldControllerSlimmer({
@@ -5617,6 +5987,7 @@ const VegaRichTextEditor = class {
5617
5987
  this.historyController = new HistoryController();
5618
5988
  this.internalCodeBlockSelectionController = new InternalCodeBlockSelectionController();
5619
5989
  this.rteExtensionController = new RTEExtensionController();
5990
+ this.wordCountController = new WordCountController();
5620
5991
  this.sourceCodeChangeEventEmitter = createEventEmitSlimmer(VegaRichTextEditor, VegaSourceCodeChange);
5621
5992
  this.richTextEditorSourceViewRenderer = new VegaRichTextEditorSourceViewRenderer();
5622
5993
  this.richTextContentEditable = true;
@@ -5815,6 +6186,9 @@ const VegaRichTextEditor = class {
5815
6186
  __decorate$8([
5816
6187
  InjectVegaGlobalSlimmer()
5817
6188
  ], VegaRichTextEditor.prototype, "globalSlimmers", void 0);
6189
+ __decorate$8([
6190
+ InjectVegaSlimmer()
6191
+ ], VegaRichTextEditor.prototype, "ariaAttributesValueMapper", void 0);
5818
6192
  __decorate$8([
5819
6193
  InjectVegaSlimmer()
5820
6194
  ], VegaRichTextEditor.prototype, "translationSlimmer", void 0);
@@ -5935,6 +6309,9 @@ __decorate$8([
5935
6309
  __decorate$8([
5936
6310
  InjectVegaSlimmer()
5937
6311
  ], VegaRichTextEditor.prototype, "rteExtensionController", void 0);
6312
+ __decorate$8([
6313
+ InjectVegaSlimmer()
6314
+ ], VegaRichTextEditor.prototype, "wordCountController", void 0);
5938
6315
  __decorate$8([
5939
6316
  InjectVegaSlimmer()
5940
6317
  ], VegaRichTextEditor.prototype, "sourceCodeChangeEventEmitter", void 0);
@@ -5968,7 +6345,7 @@ class VegaRichTextEditorToolbarButtonRenderer extends VegaSlimmer {
5968
6345
  'rich-text-editor-toolbar-button-hidden': this.hidden,
5969
6346
  'rich-text-editor-toolbar-button-selected': this.selected,
5970
6347
  }, onClick: this.handleClick, disabled: this.disabled, hidden: this.hidden },
5971
- h("vega-flex", { gap: "size-8", justifyContent: "center", alignItems: "center" },
6348
+ h("vega-flex", { "aria-hidden": "true", gap: "size-8", justifyContent: "center", alignItems: "center" },
5972
6349
  this.icon && (h("vega-icon", { size: "size-16", color: this.iconColor, icon: VegaInternalIconManager.getIconKey(this.icon) })),
5973
6350
  this.showArrowIcon && (h("vega-icon", { size: "size-8", color: "text-secondary", icon: VegaInternalIconManager.getIconKey(this.arrowIcon || 'chevron-down') }))),
5974
6351
  h("slot", null)));
@@ -6034,6 +6411,12 @@ const VegaRichTextEditorToolbarButton = class {
6034
6411
  },
6035
6412
  });
6036
6413
  this.renderer = new VegaRichTextEditorToolbarButtonRenderer();
6414
+ this.ariaAttributesValueMapper = new AriaAttributesValueMapper(() => this.host.shadowRoot.querySelector('button'), {
6415
+ 'aria-label': {
6416
+ dependency: ['data-aria-label'],
6417
+ defaultValue: 'No label defined',
6418
+ },
6419
+ });
6037
6420
  /**
6038
6421
  * Specifies whether the rich text editor toolbar button element is disabled.
6039
6422
  *
@@ -6078,7 +6461,9 @@ const VegaRichTextEditorToolbarButton = class {
6078
6461
  this.iconColor = 'text-primary';
6079
6462
  }
6080
6463
  render() {
6081
- return sanitizeVegaComponent(h(Host, null, this.renderer.render()), this.host);
6464
+ // The host is a decorative wrapper around the shadow <button>; keep it out of the
6465
+ // a11y tree so VoiceOver doesn't announce it as a "group" when entering the button.
6466
+ return sanitizeVegaComponent(h(Host, { role: "presentation" }, this.renderer.render()), this.host);
6082
6467
  }
6083
6468
  get host() { return getElement(this); }
6084
6469
  };
@@ -6097,6 +6482,9 @@ __decorate$6([
6097
6482
  __decorate$6([
6098
6483
  InjectVegaSlimmer()
6099
6484
  ], VegaRichTextEditorToolbarButton.prototype, "renderer", void 0);
6485
+ __decorate$6([
6486
+ InjectVegaSlimmer()
6487
+ ], VegaRichTextEditorToolbarButton.prototype, "ariaAttributesValueMapper", void 0);
6100
6488
  VegaRichTextEditorToolbarButton.style = vegaRichTextEditorToolbarButtonCss;
6101
6489
 
6102
6490
  var __decorate$5 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
@@ -6324,6 +6712,11 @@ class VegaRichTextLinkEditorRenderer extends VegaSlimmer {
6324
6712
  this.handleFormRef = (ref) => {
6325
6713
  this.formRef = ref;
6326
6714
  };
6715
+ this.handlePopoverContentRef = (ref) => {
6716
+ if (ref) {
6717
+ this.popoverContentRef = ref;
6718
+ }
6719
+ };
6327
6720
  this.handleUrlInputRef = (ref) => {
6328
6721
  if (ref) {
6329
6722
  this.urlInputRef = ref;
@@ -6357,6 +6750,9 @@ class VegaRichTextLinkEditorRenderer extends VegaSlimmer {
6357
6750
  getPopoverRef() {
6358
6751
  return this.popoverRef;
6359
6752
  }
6753
+ getPopoverContentRef() {
6754
+ return this.popoverContentRef;
6755
+ }
6360
6756
  getFormRef() {
6361
6757
  return this.formRef;
6362
6758
  }
@@ -6370,7 +6766,7 @@ class VegaRichTextLinkEditorRenderer extends VegaSlimmer {
6370
6766
  return (h("vega-popover", { trigger: "click", alignment: "start", placement: "bottom", showArrow: false, isScreenPosition: true, ref: this.handlePopoverRef },
6371
6767
  h("span", { slot: "popover-content" },
6372
6768
  h("slot", null)),
6373
- h("div", { slot: "popover" },
6769
+ h("div", { slot: "popover", ref: this.handlePopoverContentRef },
6374
6770
  this.renderLinkUnlinkContent(),
6375
6771
  this.renderLinkEditContent())));
6376
6772
  }
@@ -6596,10 +6992,41 @@ class LinkEditorController extends VegaSlimmer {
6596
6992
  super(...arguments);
6597
6993
  this.linkUrlNormalizer = new LinkUrlNormalizer();
6598
6994
  this.linkTypeHandlers = LINK_TYPE_HANDLER_MAP;
6995
+ /**
6996
+ * The element the trigger click listener is currently attached to (the link
6997
+ * wrapper acting as the popover target).
6998
+ */
6999
+ this.triggerListenerEl = null;
7000
+ /**
7001
+ * Whether the popover was opened via a keyboard or screen-reader (VoiceOver)
7002
+ * activation. When true, focus is moved into the popover so screen reader
7003
+ * users land on the Edit button.
7004
+ */
7005
+ this.isVoiceOverTrigger = false;
7006
+ /**
7007
+ * The element that had focus when the VoiceOver activation happened, so focus
7008
+ * can be restored to the link once the popover is hidden.
7009
+ */
7010
+ this.focusReturnEl = null;
7011
+ /**
7012
+ * Records whether the popover was opened via a keyboard/VoiceOver activation
7013
+ * and, if so, the element to restore focus to when the popover closes.
7014
+ *
7015
+ * @param {MouseEvent} e - The click event on the link wrapper.
7016
+ * @returns {void} No return value.
7017
+ */
7018
+ this.handleTriggerClick = (e) => {
7019
+ this.isVoiceOverTrigger = this.isKeyboardOrScreenReaderActivation(e);
7020
+ this.focusReturnEl = this.isVoiceOverTrigger
7021
+ ? // eslint-disable-next-line no-restricted-globals
7022
+ getDeepActiveElementInShadow(document, true)
7023
+ : null;
7024
+ };
6599
7025
  }
6600
7026
  /** Initializes the popover target after the component loads. */
6601
7027
  componentDidLoad() {
6602
7028
  this.updatePopoverTarget();
7029
+ this.attachTriggerListener();
6603
7030
  }
6604
7031
  /** Notifies observers after each render cycle. */
6605
7032
  componentDidRender() {
@@ -6618,6 +7045,7 @@ class LinkEditorController extends VegaSlimmer {
6618
7045
  watchTargetChange() {
6619
7046
  this.linkTypeConfigController.invalidateConfiguredLinkTypesCache();
6620
7047
  this.updatePopoverTarget();
7048
+ this.attachTriggerListener();
6621
7049
  }
6622
7050
  /**
6623
7051
  * Prepares the editor state before the popover is shown.
@@ -6648,6 +7076,9 @@ class LinkEditorController extends VegaSlimmer {
6648
7076
  }
6649
7077
  await this.populateEditForm();
6650
7078
  }
7079
+ if (this.status !== 'linkEdit' && this.isVoiceOverTrigger) {
7080
+ this.focusPopoverContentForVoiceOver();
7081
+ }
6651
7082
  }
6652
7083
  /**
6653
7084
  * Clears form state after the popover hides.
@@ -6664,6 +7095,7 @@ class LinkEditorController extends VegaSlimmer {
6664
7095
  if (this.resetStatusAfterHide) {
6665
7096
  this.linkEditorStateManager.setShouldResetStatusOnNextShow(true);
6666
7097
  }
7098
+ this.restoreFocusAfterVoiceOver();
6667
7099
  }
6668
7100
  /**
6669
7101
  * Switches the editor into link edit mode.
@@ -6825,6 +7257,93 @@ class LinkEditorController extends VegaSlimmer {
6825
7257
  updatePopoverTarget() {
6826
7258
  remoteInvocationRegistry.call(domNodeSubjectFactory.getSubject(this.renderer.getPopoverRef(), VegaInternalPopoverUpdateTarget), this.target);
6827
7259
  }
7260
+ /**
7261
+ * Attaches a capture-phase click listener to the link wrapper (the popover
7262
+ * target) so a keyboard/VoiceOver activation can be distinguished from a real
7263
+ * pointer click before the popover opens. Re-attaches when the target changes.
7264
+ *
7265
+ * @returns {void} No return value.
7266
+ */
7267
+ attachTriggerListener() {
7268
+ if (this.triggerListenerEl === this.target) {
7269
+ return;
7270
+ }
7271
+ this.detachTriggerListener();
7272
+ if (this.target) {
7273
+ this.triggerListenerEl = this.target;
7274
+ this.target.addEventListener('click', this.handleTriggerClick, { capture: true });
7275
+ }
7276
+ }
7277
+ /**
7278
+ * Removes the trigger listener from the previously observed element.
7279
+ *
7280
+ * @returns {void} No return value.
7281
+ */
7282
+ detachTriggerListener() {
7283
+ if (this.triggerListenerEl) {
7284
+ this.triggerListenerEl.removeEventListener('click', this.handleTriggerClick, { capture: true });
7285
+ this.triggerListenerEl = null;
7286
+ }
7287
+ }
7288
+ /**
7289
+ * Determines whether a click on the link wrapper came from a keyboard or
7290
+ * screen reader (VoiceOver) rather than a real pointer.
7291
+ *
7292
+ * A genuine pointer click lands inside the activated element. Keyboard (Enter,
7293
+ * `detail === 0`) and VoiceOver activations dispatch a click with coordinates
7294
+ * that are not on the element, so we treat any click whose point falls outside
7295
+ * the wrapper as an assistive-technology activation.
7296
+ *
7297
+ * @param {MouseEvent} e - The click event on the link wrapper.
7298
+ * @returns {boolean} True when the activation is keyboard/screen-reader driven.
7299
+ */
7300
+ isKeyboardOrScreenReaderActivation(e) {
7301
+ if (checkIsVoiceOverClick(e)) {
7302
+ return true;
7303
+ }
7304
+ const rect = this.target ? this.target.getBoundingClientRect() : null;
7305
+ if (!rect || (rect.width === 0 && rect.height === 0)) {
7306
+ return false;
7307
+ }
7308
+ const isInsideTarget = e.clientX >= rect.left &&
7309
+ e.clientX <= rect.right &&
7310
+ e.clientY >= rect.top &&
7311
+ e.clientY <= rect.bottom;
7312
+ return !isInsideTarget;
7313
+ }
7314
+ /**
7315
+ * Moves focus to the first focusable element within the popover content (the
7316
+ * Edit button) so VoiceOver users land inside the opened toolbar.
7317
+ *
7318
+ * Deferred to the next macrotask so it runs after the editor has finished
7319
+ * placing the caret/focus into the content area on the activating click.
7320
+ *
7321
+ * @returns {void} No return value.
7322
+ */
7323
+ focusPopoverContentForVoiceOver() {
7324
+ setTimeout(() => {
7325
+ const contentRef = this.renderer.getPopoverContentRef();
7326
+ if (!contentRef) {
7327
+ return;
7328
+ }
7329
+ const focusable = getFirstFocusableElement(contentRef);
7330
+ (focusable !== null && focusable !== void 0 ? focusable : contentRef).focus();
7331
+ });
7332
+ }
7333
+ /**
7334
+ * Restores focus to the link wrapper after the popover is hidden following a
7335
+ * VoiceOver activation.
7336
+ *
7337
+ * @returns {void} No return value.
7338
+ */
7339
+ restoreFocusAfterVoiceOver() {
7340
+ if (this.isVoiceOverTrigger && this.focusReturnEl) {
7341
+ const returnEl = this.focusReturnEl;
7342
+ setTimeout(() => returnEl.focus());
7343
+ }
7344
+ this.isVoiceOverTrigger = false;
7345
+ this.focusReturnEl = null;
7346
+ }
6828
7347
  /**
6829
7348
  * Preserves an unchanged mailto URL when the form edits are equivalent.
6830
7349
  *