@globalpayments/vega 2.99.0 → 2.101.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 (649) hide show
  1. package/dist/cjs/{accessibility-88f8af84.js → accessibility-6ca2a237.js} +21 -0
  2. package/dist/cjs/{action-color-accessibility-validator-b8a9ef0f.js → action-color-accessibility-validator-61af71ae.js} +1 -1
  3. package/dist/cjs/{app-globals-a306dce6.js → app-globals-275ea7c7.js} +19 -10
  4. package/dist/cjs/{aria-attributes-value-mapper-9a41b9cf.js → aria-attributes-value-mapper-e8c6b0e0.js} +1 -1
  5. package/dist/cjs/{aria-dialog-focusable-trap-slimmer-62147489.js → aria-dialog-focusable-trap-slimmer-c79cc3f8.js} +1 -1
  6. package/dist/cjs/{child-nodes-event-prevent-slimmer-e0ac8467.js → child-nodes-event-prevent-slimmer-d720d7e9.js} +1 -1
  7. package/dist/cjs/{code-block-ea1f5eb3.js → code-block-c598832d.js} +815 -751
  8. package/dist/cjs/{component-value-history-controller-slimmer.abstract-7071b064.js → component-value-history-controller-slimmer.abstract-4bd47aa1.js} +4 -4
  9. package/dist/cjs/{content-state-8d07d530.js → content-state-da23e822.js} +47 -3
  10. package/dist/cjs/countries-a8e3812a.js +251 -0
  11. package/dist/cjs/{dark-mode-style-controller-f3da3342.js → dark-mode-style-controller-ec04ece9.js} +45 -45
  12. package/dist/cjs/{date-required-rule-c0c498ad.js → date-required-rule-45c802d3.js} +1 -1
  13. package/dist/cjs/{design-token-58bf7fe8.js → design-token-9d762da0.js} +3 -3
  14. package/dist/cjs/{element-appender-slimmer-a0269315.js → element-appender-slimmer-2aaf8e24.js} +22 -3
  15. package/dist/cjs/{event-emit-slimmer-34aa195e.js → event-emit-slimmer-67b5c186.js} +1 -1
  16. package/dist/cjs/{form-field-controller-slimmer-f73f200e.js → form-field-controller-slimmer-ac9337f4.js} +3 -3
  17. package/dist/cjs/{image-annotation-action-2a28038e.js → image-annotation-action-378838c2.js} +8 -7
  18. package/dist/cjs/{image-extension-9659708b.js → image-extension-673ebe7f.js} +2 -2
  19. package/dist/cjs/index.cjs.js +24 -21
  20. package/dist/cjs/{inject-keyboard-manager-4fa45f9c.js → inject-keyboard-manager-540f0876.js} +1 -1
  21. package/dist/cjs/{internal-calendar-period-factory-6196bc80.js → internal-calendar-period-factory-b11918ee.js} +1 -1
  22. package/dist/cjs/{internal-translation-controller-51f7f865.js → internal-translation-controller-27bfc8c7.js} +15 -0
  23. package/dist/cjs/{internal-vega-event-manager-7003c84a.js → internal-vega-event-manager-976b9526.js} +10 -2
  24. package/dist/cjs/{keyboard-manager-482fe257.js → keyboard-manager-16e96b62.js} +12 -5
  25. package/dist/cjs/{keyboard-manager-slimmer-a19430dd.js → keyboard-manager-slimmer-0a4e556d.js} +1 -1
  26. package/dist/cjs/{link-extension-11340e1c.js → link-extension-f493e432.js} +3 -3
  27. package/dist/cjs/loader.cjs.js +17 -16
  28. package/dist/cjs/{month-view-generator-1a534451.js → month-view-generator-0a3e04de.js} +1 -1
  29. package/dist/cjs/overlay-escape-coordination-901d8942.js +38 -0
  30. package/dist/cjs/{public-rules-6c77b545.js → public-rules-bae12c47.js} +9 -9
  31. package/dist/cjs/{range-22ddd452.js → range-9f42fb40.js} +1 -1
  32. package/dist/cjs/{responsive-format-facade-74e6d791.js → responsive-format-facade-c6d7f0a1.js} +1 -1
  33. package/dist/cjs/{rich-text-editor-required-rule-09d1093a.js → rich-text-editor-required-rule-bb232741.js} +1 -1
  34. package/dist/cjs/{split-cell-operation-11bfb305.js → split-cell-operation-0d33123e.js} +4 -4
  35. package/dist/cjs/{state-border-formatter-bf4f9f1c.js → state-border-formatter-dda9109a.js} +1 -1
  36. package/dist/cjs/{string-format-strategy.abstract-bf37b14c.js → string-format-strategy.abstract-3a968a59.js} +1 -1
  37. package/dist/cjs/{string-input-formatter-slimmer-ffeb18a6.js → string-input-formatter-slimmer-2e0a838e.js} +3 -3
  38. package/dist/cjs/{string-mask-strategy-7f394726.js → string-mask-strategy-d9f85c21.js} +2 -2
  39. package/dist/cjs/{style-formatter-4ac63910.js → style-formatter-d21a9784.js} +2 -2
  40. package/dist/cjs/{sub-state-notify-slimmer-e264a120.js → sub-state-notify-slimmer-3b33e31c.js} +1 -1
  41. package/dist/cjs/{sub-state-observer-slimmer-6033b824.js → sub-state-observer-slimmer-5b68ba3f.js} +1 -1
  42. package/dist/cjs/{time-required-rule-e2a50003.js → time-required-rule-580cbd3d.js} +1 -1
  43. package/dist/cjs/{token-extension-4686cb3b.js → token-extension-4badb962.js} +811 -53
  44. package/dist/cjs/{translation-slimmer-e4997f8f.js → translation-slimmer-31cd5a57.js} +1 -1
  45. package/dist/cjs/{type-guard-b8d7bb3f.js → type-guard-00b8efc0.js} +1 -1
  46. package/dist/cjs/{valid-credit-card-number-rule-f5a6f009.js → valid-credit-card-number-rule-70885128.js} +1 -1
  47. package/dist/cjs/vega-accordion.cjs.entry.js +9 -9
  48. package/dist/cjs/vega-app-footer.cjs.entry.js +4 -4
  49. package/dist/cjs/vega-app-header-button.cjs.entry.js +10 -10
  50. package/dist/cjs/vega-banner.cjs.entry.js +4 -4
  51. package/dist/cjs/vega-box.cjs.entry.js +6 -6
  52. package/dist/cjs/vega-brand-logo.cjs.entry.js +1 -1
  53. package/dist/cjs/vega-breadcrumb.cjs.entry.js +4 -4
  54. package/dist/cjs/vega-button-circle.cjs.entry.js +12 -12
  55. package/dist/cjs/vega-button-group_2.cjs.entry.js +20 -13
  56. package/dist/cjs/vega-button-link.cjs.entry.js +8 -8
  57. package/dist/cjs/vega-button.cjs.entry.js +27 -11
  58. package/dist/cjs/vega-calendar_5.cjs.entry.js +130 -24
  59. package/dist/cjs/vega-card.cjs.entry.js +5 -5
  60. package/dist/cjs/vega-carousel.cjs.entry.js +7 -7
  61. package/dist/cjs/vega-checkbox_2.cjs.entry.js +9 -9
  62. package/dist/cjs/vega-chip.cjs.entry.js +10 -10
  63. package/dist/cjs/vega-code-block.cjs.entry.js +15 -15
  64. package/dist/cjs/vega-color-picker.cjs.entry.js +8 -8
  65. package/dist/cjs/vega-color-swatch-picker.cjs.entry.js +9 -9
  66. package/dist/cjs/vega-color-swatch.cjs.entry.js +6 -6
  67. package/dist/cjs/vega-combo-box.cjs.entry.js +15 -15
  68. package/dist/cjs/vega-date-picker_2.cjs.entry.js +22 -22
  69. package/dist/cjs/vega-dialog_2.cjs.entry.js +76 -10
  70. package/dist/cjs/vega-divider.cjs.entry.js +5 -5
  71. package/dist/cjs/vega-dropdown_5.cjs.entry.js +108 -25
  72. package/dist/cjs/vega-env-manager-23b8b23c.js +2 -2
  73. package/dist/cjs/{vega-event-id-58afed7a.js → vega-event-id-987a170c.js} +2 -0
  74. package/dist/cjs/vega-field-label.cjs.entry.js +29 -36
  75. package/dist/cjs/vega-file-uploader.cjs.entry.js +9 -9
  76. package/dist/cjs/vega-flag-icon.cjs.entry.js +11 -11
  77. package/dist/cjs/vega-flex.cjs.entry.js +6 -6
  78. package/dist/cjs/vega-font.cjs.entry.js +5 -5
  79. package/dist/cjs/vega-form.cjs.entry.js +9 -9
  80. package/dist/cjs/vega-grid.cjs.entry.js +5 -5
  81. package/dist/cjs/vega-icon.cjs.entry.js +5 -5
  82. package/dist/cjs/vega-image-uploader.cjs.entry.js +13 -13
  83. package/dist/cjs/vega-input-credit-card.cjs.entry.js +12 -12
  84. package/dist/cjs/vega-input-numeric.cjs.entry.js +12 -12
  85. package/dist/cjs/vega-input-passcode.cjs.entry.js +11 -11
  86. package/dist/cjs/vega-input-phone-number.cjs.entry.js +56 -275
  87. package/dist/cjs/vega-input-range.cjs.entry.js +10 -10
  88. package/dist/cjs/vega-input-select.cjs.entry.js +39 -39
  89. package/dist/cjs/vega-input.cjs.entry.js +14 -14
  90. package/dist/cjs/{vega-internal-event-id-f4d33037.js → vega-internal-event-id-98d499d7.js} +6 -2
  91. package/dist/cjs/vega-item-toggle.cjs.entry.js +3 -3
  92. package/dist/cjs/vega-left-nav_5.cjs.entry.js +14 -14
  93. package/dist/cjs/vega-loader-wrapper_2.cjs.entry.js +3 -3
  94. package/dist/cjs/vega-page-notification_2.cjs.entry.js +2 -2
  95. package/dist/cjs/vega-pagination-page-selector-mobile.cjs.entry.js +4 -4
  96. package/dist/cjs/vega-pagination-page-size-selector-mobile.cjs.entry.js +4 -4
  97. package/dist/cjs/vega-pagination.cjs.entry.js +9 -9
  98. package/dist/cjs/vega-popover_2.cjs.entry.js +63 -14
  99. package/dist/cjs/vega-progress-tracker_2.cjs.entry.js +10 -10
  100. package/dist/cjs/vega-radio_2.cjs.entry.js +12 -12
  101. package/dist/cjs/vega-rich-text-content.cjs.entry.js +16 -13
  102. package/dist/cjs/vega-rich-text-editor_4.cjs.entry.js +712 -250
  103. package/dist/cjs/vega-rich-text-find-replace-panel.cjs.entry.js +6 -6
  104. package/dist/cjs/vega-rich-text-special-characters-panel.cjs.entry.js +8 -8
  105. package/dist/cjs/vega-rich-text-table-properties_3.cjs.entry.js +161 -108
  106. package/dist/cjs/vega-segment-control.cjs.entry.js +11 -4
  107. package/dist/cjs/vega-selection-chip_2.cjs.entry.js +12 -12
  108. package/dist/cjs/vega-selection-tile_2.cjs.entry.js +9 -9
  109. package/dist/cjs/vega-sidenav_3.cjs.entry.js +10 -10
  110. package/dist/cjs/vega-signature-capture.cjs.entry.js +12 -12
  111. package/dist/cjs/vega-stepper.cjs.entry.js +8 -8
  112. package/dist/cjs/vega-tab-group_2.cjs.entry.js +7 -7
  113. package/dist/cjs/vega-table_11.cjs.entry.js +625 -666
  114. package/dist/cjs/vega-textarea.cjs.entry.js +8 -8
  115. package/dist/cjs/vega-time-picker_2.cjs.entry.js +16 -16
  116. package/dist/cjs/vega-toggle-switch.cjs.entry.js +8 -8
  117. package/dist/cjs/vega-tooltip_2.cjs.entry.js +7 -7
  118. package/dist/cjs/vega.cjs.js +17 -16
  119. package/dist/cjs/{wait-for-component-did-render-44d006ee.js → wait-for-component-did-render-90edbc1a.js} +1 -1
  120. package/dist/collection/components/vega-button/vega-button.css +3 -3
  121. package/dist/collection/components/vega-button/vega-button.js +17 -2
  122. package/dist/collection/components/vega-button-circle/vega-button-circle.css +3 -3
  123. package/dist/collection/components/vega-button-group/vega-button-group-item/slimmers/renderers/vega-button-group-item-renderer.js +13 -6
  124. package/dist/collection/components/vega-button-link/vega-button-link.css +4 -4
  125. package/dist/collection/components/vega-button-link/vega-button-link.js +2 -2
  126. package/dist/collection/components/vega-calendar/slimmers/common/renderers/vega-calendar-event-item-renderer.js +45 -5
  127. package/dist/collection/components/vega-calendar/slimmers/common/renderers/vega-calendar-event-preview-popover-renderer.js +43 -1
  128. package/dist/collection/components/vega-calendar/slimmers/month-view/renderers/vega-calendar-month-event-renderer.js +23 -4
  129. package/dist/collection/components/vega-calendar/vega-calendar.js +77 -1
  130. package/dist/collection/components/vega-code-block/vega-code-block.css +4 -4
  131. package/dist/collection/components/vega-dropdown/slimmers/controllers/vega-dropdown-keyboard-controller.js +148 -0
  132. package/dist/collection/components/vega-dropdown/slimmers/controllers/vega-dropdown-scrollable-controller.js +5 -2
  133. package/dist/collection/components/vega-dropdown/slimmers/renderers/vega-dropdown-renderer.js +17 -0
  134. package/dist/collection/components/vega-dropdown/vega-dropdown-item/slimmers/renderers/vega-dropdown-item-renderer.js +2 -2
  135. package/dist/collection/components/vega-dropdown/vega-dropdown-item/vega-dropdown-item.css +2 -1
  136. package/dist/collection/components/vega-dropdown/vega-dropdown.js +1 -1
  137. package/dist/collection/components/vega-field-label/slimmers/renderers/vega-field-label-label-announcement-renderer.js +21 -30
  138. package/dist/collection/components/vega-field-label/vega-field-label.js +7 -5
  139. package/dist/collection/components/vega-flag-icon/slimmers/controllers/vega-flag-icon-controller.js +6 -6
  140. package/dist/collection/components/vega-input-phone-number/slimmers/renderers/country-select-renderer.js +4 -8
  141. package/dist/collection/components/vega-input-select/slimmers/renderers/vega-input-select-dropdown-renderer.js +19 -2
  142. package/dist/collection/components/vega-input-select/slimmers/renderers/vega-input-select-prefix-icon-renderer.js +8 -28
  143. package/dist/collection/components/vega-input-select/vega-input-select.js +3 -1
  144. package/dist/collection/components/vega-modal/slimmers/controllers/vega-modal-open-state-controller.js +66 -0
  145. package/dist/collection/components/vega-popover/slimmers/renderers/vega-popover-appender-renderer.js +17 -0
  146. package/dist/collection/components/vega-popover/vega-popover.js +33 -1
  147. package/dist/collection/components/vega-rich-text-content/slimmers/renderers/vega-rich-text-content-renderer.js +4 -1
  148. package/dist/collection/components/vega-rich-text-editor/constants/constant.js +9 -0
  149. package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/commit-value-strategy.js +13 -0
  150. package/dist/collection/components/vega-rich-text-editor/dto/actions/commit-value-action.js +20 -0
  151. package/dist/collection/components/vega-rich-text-editor/dto/blocks/block.abstract.js +11 -0
  152. package/dist/collection/components/vega-rich-text-editor/dto/blocks/list-item-block.js +11 -2
  153. package/dist/collection/components/vega-rich-text-editor/dto/blocks/text-block.js +18 -6
  154. package/dist/collection/components/vega-rich-text-editor/dto/content-state.js +11 -0
  155. package/dist/collection/components/vega-rich-text-editor/dto/nodes/code-block-node.js +6 -0
  156. package/dist/collection/components/vega-rich-text-editor/dto/nodes/node.abstract.js +8 -0
  157. package/dist/collection/components/vega-rich-text-editor/dto/nodes/text-node.js +6 -0
  158. package/dist/collection/components/vega-rich-text-editor/extensions/base-toolbar-button-renderer.js +30 -18
  159. package/dist/collection/components/vega-rich-text-editor/extensions/blockquote/renderers/blockquote-toolbar-button-renderer.js +1 -0
  160. package/dist/collection/components/vega-rich-text-editor/extensions/copy/copy-toolbar-button-renderer.js +1 -0
  161. package/dist/collection/components/vega-rich-text-editor/extensions/cut/cut-toolbar-button-renderer.js +1 -0
  162. package/dist/collection/components/vega-rich-text-editor/extensions/find-replace/slimmer/renderers/find-replace-toolbar-button-renderer.js +51 -0
  163. 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
  164. package/dist/collection/components/vega-rich-text-editor/extensions/fullscreen/fullscreen-toolbar-button-renderer.js +3 -0
  165. package/dist/collection/components/vega-rich-text-editor/extensions/functions/dto/logic-control-node.js +6 -0
  166. package/dist/collection/components/vega-rich-text-editor/extensions/functions/renderers/function-toolbar-button-renderer.js +1 -0
  167. package/dist/collection/components/vega-rich-text-editor/extensions/horizontal-line/renderers/horizontal-line-toolbar-button-renderer.js +1 -0
  168. package/dist/collection/components/vega-rich-text-editor/extensions/languages/language-toolbar-button-renderer.js +5 -3
  169. package/dist/collection/components/vega-rich-text-editor/extensions/line-height/line-height-toolbar-button-renderer.js +16 -0
  170. package/dist/collection/components/vega-rich-text-editor/extensions/special-characters/special-characters-toolbar-button-renderer.js +2 -0
  171. package/dist/collection/components/vega-rich-text-editor/extensions/table/renderers/table-caption-renderer.js +3 -9
  172. package/dist/collection/components/vega-rich-text-editor/extensions/table/renderers/table-cell-renderer.js +2 -2
  173. package/dist/collection/components/vega-rich-text-editor/extensions/table/renderers/table-dynamic-popover-renderer.js +81 -1
  174. package/dist/collection/components/vega-rich-text-editor/extensions/table/renderers/table-popover-base-renderer.js +148 -0
  175. package/dist/collection/components/vega-rich-text-editor/extensions/table/renderers/table-renderer.js +151 -5
  176. package/dist/collection/components/vega-rich-text-editor/extensions/table/renderers/table-setting-popover-renderer.js +144 -2
  177. package/dist/collection/components/vega-rich-text-editor/extensions/table/table-selection.js +26 -1
  178. package/dist/collection/components/vega-rich-text-editor/extensions/table/table-toolbar-button-renderer.js +1 -0
  179. 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
  180. 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
  181. 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
  182. package/dist/collection/components/vega-rich-text-editor/extensions/table/vega-rich-text-table-properties/vega-rich-text-table-properties.css +5 -0
  183. package/dist/collection/components/vega-rich-text-editor/extensions/table/vega-rich-text-table-properties/vega-rich-text-table-properties.js +16 -1
  184. package/dist/collection/components/vega-rich-text-editor/extensions/table/vega-rich-text-table-setting/slimmers/renderers/caption-button-slimmer.js +1 -0
  185. package/dist/collection/components/vega-rich-text-editor/extensions/table/vega-rich-text-table-setting/slimmers/renderers/cell-properties-button-slimmer.js +1 -0
  186. package/dist/collection/components/vega-rich-text-editor/extensions/table/vega-rich-text-table-setting/slimmers/renderers/column-button-slimmer.js +10 -9
  187. package/dist/collection/components/vega-rich-text-editor/extensions/table/vega-rich-text-table-setting/slimmers/renderers/merge-cells-button-slimmer.js +9 -8
  188. package/dist/collection/components/vega-rich-text-editor/extensions/table/vega-rich-text-table-setting/slimmers/renderers/row-button-slimmer.js +25 -10
  189. package/dist/collection/components/vega-rich-text-editor/extensions/table/vega-rich-text-table-setting/slimmers/renderers/table-properties-button-slimmer.js +1 -0
  190. 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
  191. 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
  192. package/dist/collection/components/vega-rich-text-editor/extensions/table/vega-rich-text-table-setting/vega-rich-text-table-setting.css +10 -0
  193. package/dist/collection/components/vega-rich-text-editor/extensions/table/vega-rich-text-table-setting/vega-rich-text-table-setting.js +2 -0
  194. package/dist/collection/components/vega-rich-text-editor/extensions/tokens/token-toolbar-button-renderer.js +1 -0
  195. package/dist/collection/components/vega-rich-text-editor/extensions/word-count/action-handler-interceptors/prevent-hard-limit-exceed-interceptor.js +70 -0
  196. package/dist/collection/components/vega-rich-text-editor/extensions/word-count/type.js +1 -0
  197. package/dist/collection/components/vega-rich-text-editor/extensions/word-count/word-count-extension.js +62 -0
  198. package/dist/collection/components/vega-rich-text-editor/public-api.js +1 -0
  199. package/dist/collection/components/vega-rich-text-editor/slimmers/controllers/insert-composition-text-controller.js +2 -1
  200. package/dist/collection/components/vega-rich-text-editor/slimmers/controllers/user-input-controller.js +7 -1
  201. package/dist/collection/components/vega-rich-text-editor/slimmers/controllers/value-controller.js +52 -2
  202. package/dist/collection/components/vega-rich-text-editor/slimmers/controllers/word-count-controller.js +79 -0
  203. package/dist/collection/components/vega-rich-text-editor/slimmers/renderers/toolbar-renderer.js +6 -3
  204. package/dist/collection/components/vega-rich-text-editor/slimmers/renderers/tools/bullets-numbers/bullets-numbers-toolbar-button-slimmer.js +2 -1
  205. package/dist/collection/components/vega-rich-text-editor/slimmers/renderers/tools/horizontal-alignment/horizontal-alignment-toolbar-button-slimmer.js +2 -1
  206. package/dist/collection/components/vega-rich-text-editor/slimmers/renderers/tools/image-toolbar-button-slimmer.js +3 -2
  207. package/dist/collection/components/vega-rich-text-editor/slimmers/renderers/tools/link-toolbar-button-slimmer.js +111 -2
  208. package/dist/collection/components/vega-rich-text-editor/slimmers/renderers/tools/source-edit-toolbar-button-slimmer.js +17 -6
  209. package/dist/collection/components/vega-rich-text-editor/slimmers/renderers/tools/text-color-toolbar-button-slimmer.js +1 -1
  210. package/dist/collection/components/vega-rich-text-editor/slimmers/renderers/tools/text-styles-toolbar-button-slimmer.js +1 -1
  211. package/dist/collection/components/vega-rich-text-editor/slimmers/renderers/tools/toolbar-button-slimmer.abstract.js +3 -2
  212. package/dist/collection/components/vega-rich-text-editor/slimmers/renderers/vega-rich-text-editor-renderer.js +59 -8
  213. 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
  214. package/dist/collection/components/vega-rich-text-editor/vega-rich-text-editor-toolbar-button/vega-rich-text-editor-toolbar-button.js +13 -1
  215. package/dist/collection/components/vega-rich-text-editor/vega-rich-text-editor.js +16 -0
  216. package/dist/collection/components/vega-rich-text-editor/vega-rich-text-link-editor/slimmers/controllers/link-editor-controller.js +124 -0
  217. package/dist/collection/components/vega-rich-text-editor/vega-rich-text-link-editor/slimmers/renderers/vega-rich-text-link-editor-renderer.js +9 -1
  218. package/dist/collection/components/vega-segment-control/slimmers/renderers/vega-segment-renderer.js +8 -1
  219. package/dist/collection/components/vega-segment-control/vega-segment-control.js +23 -0
  220. package/dist/collection/components/vega-table/slimmers/controllers/dto/column-render-input-model.js +25 -8
  221. package/dist/collection/components/vega-table/slimmers/controllers/dto/row-render-input-model.js +41 -0
  222. package/dist/collection/components/vega-table/slimmers/controllers/vega-table-head-template-structure-controller.js +1 -0
  223. package/dist/collection/components/vega-table/slimmers/controllers/vega-table-render-input-controller.js +316 -18
  224. package/dist/collection/components/vega-table/slimmers/renderers/vega-table-body-renderer.js +6 -1
  225. package/dist/collection/components/vega-table/slimmers/renderers/vega-table-header-renderer.js +1 -0
  226. package/dist/collection/components/vega-table/slimmers/renderers/vega-table-pinned-renderer.js +33 -530
  227. package/dist/collection/components/vega-table/slimmers/renderers/vega-table-row-renderer.js +1 -0
  228. package/dist/collection/components/vega-table/vega-table-cell/vega-table-cell.css +10 -0
  229. package/dist/collection/components/vega-table/vega-table-cell/vega-table-cell.js +25 -8
  230. package/dist/collection/components/vega-table/vega-table-expand-row/slimmers/renderers/vega-table-expand-row-renderer.js +14 -6
  231. package/dist/collection/components/vega-table/vega-table-expand-row/vega-table-expand-row.css +20 -0
  232. package/dist/collection/components/vega-table/vega-table-expand-row/vega-table-expand-row.js +7 -0
  233. package/dist/collection/components/vega-table/vega-table-foot-cell/slimmers/renderers/vega-table-foot-cell-renderer.js +21 -2
  234. package/dist/collection/components/vega-table/vega-table-foot-cell/vega-table-foot-cell.css +10 -0
  235. package/dist/collection/components/vega-table/vega-table-foot-cell/vega-table-foot-cell.js +12 -1
  236. package/dist/collection/components/vega-table/vega-table-foot-row/slimmers/renderers/vega-table-foot-row-renderer.js +20 -13
  237. package/dist/collection/components/vega-table/vega-table-foot-row/vega-table-foot-row.css +26 -0
  238. package/dist/collection/components/vega-table/vega-table-foot-row/vega-table-foot-row.js +12 -0
  239. package/dist/collection/components/vega-table/vega-table-head-cell/vega-table-head-cell.css +10 -0
  240. package/dist/collection/components/vega-table/vega-table-head-cell/vega-table-head-cell.js +19 -6
  241. package/dist/collection/components/vega-table/vega-table-head-row/slimmers/renderers/vega-table-head-row-renderer.js +21 -46
  242. package/dist/collection/components/vega-table/vega-table-head-row/vega-table-head-row.css +16 -7
  243. package/dist/collection/components/vega-table/vega-table-head-row/vega-table-head-row.js +9 -2
  244. package/dist/collection/components/vega-table/vega-table-row/slimmers/renderers/vega-table-row-renderer.js +28 -13
  245. package/dist/collection/components/vega-table/vega-table-row/vega-table-row.css +26 -0
  246. package/dist/collection/components/vega-table/vega-table-row/vega-table-row.js +11 -0
  247. package/dist/collection/constants/tokens/themes/v2-new-brand/dark-mode-border-tokens.js +1 -1
  248. package/dist/collection/constants/tokens/themes/v2-new-brand/dark-mode-color-tokens.js +20 -20
  249. package/dist/collection/constants/tokens/themes/v2-new-brand/dark-mode-ring-tokens.js +1 -1
  250. package/dist/collection/constants/tokens/themes/v2-new-brand/dark-mode-shadow-tokens.js +1 -1
  251. package/dist/collection/constants/tokens/themes/v2-new-brand/light-mode-border-tokens.js +1 -1
  252. package/dist/collection/constants/tokens/themes/v2-new-brand/light-mode-color-tokens.js +19 -19
  253. package/dist/collection/constants/tokens/themes/v2-new-brand/light-mode-shadow-tokens.js +1 -1
  254. package/dist/collection/constants/ui.js +1 -0
  255. package/dist/collection/global/scripts/before-vega-load.js +10 -0
  256. package/dist/collection/helpers/event-manager/event-id/component-event-id-map.js +10 -2
  257. package/dist/collection/helpers/event-manager/event-id/vega-event-id.js +1 -0
  258. package/dist/collection/helpers/event-manager/event-id/vega-internal-event-id.js +3 -1
  259. package/dist/collection/helpers/keyboard/keyboard-manager.js +11 -4
  260. package/dist/collection/helpers/keyboard/overlay-escape-coordination.js +33 -0
  261. package/dist/collection/helpers/public-api.js +1 -0
  262. package/dist/collection/helpers/slimmers/mutation-observer/aria-attributes-value-mapper.js +1 -1
  263. package/dist/collection/helpers/slimmers/position-calculation/position-calculation-controller.js +8 -0
  264. package/dist/collection/helpers/slimmers/position-calculation/screen-position-calculation-strategy.js +10 -0
  265. package/dist/collection/helpers/slimmers/vega-table-child-render-input-consumer-slimmer.js +2 -0
  266. package/dist/collection/helpers/translation/locales/en.js +15 -0
  267. package/dist/collection/helpers/ui/element-appender.js +1 -0
  268. package/dist/collection/polyfill/libphonenumber/as-you-type.js +21 -3
  269. package/dist/collection/polyfill/libphonenumber/metadata.js +16 -0
  270. package/dist/collection/utils/accessibility.js +20 -0
  271. package/dist/esm/{accessibility-6af5cf2e.js → accessibility-c899a968.js} +21 -1
  272. package/dist/esm/{action-color-accessibility-validator-08877515.js → action-color-accessibility-validator-3e824a59.js} +1 -1
  273. package/dist/esm/{app-globals-c59364c2.js → app-globals-ad3c7cea.js} +19 -10
  274. package/dist/esm/{aria-attributes-value-mapper-2c632641.js → aria-attributes-value-mapper-a5c7478e.js} +1 -1
  275. package/dist/esm/{aria-dialog-focusable-trap-slimmer-f069f54d.js → aria-dialog-focusable-trap-slimmer-27a6aa19.js} +3 -3
  276. package/dist/esm/{child-nodes-event-prevent-slimmer-82626871.js → child-nodes-event-prevent-slimmer-0ebcbf47.js} +1 -1
  277. package/dist/esm/{child-nodes-notify-observer-slimmer-499a3aa7.js → child-nodes-notify-observer-slimmer-034bc78c.js} +1 -1
  278. package/dist/esm/{code-block-e6443949.js → code-block-1cdf7a51.js} +816 -754
  279. package/dist/esm/{component-value-history-controller-slimmer.abstract-ee393213.js → component-value-history-controller-slimmer.abstract-bdeeb43f.js} +6 -6
  280. package/dist/esm/{content-state-43cdacff.js → content-state-6eb610b8.js} +48 -6
  281. package/dist/esm/countries-50d3339b.js +249 -0
  282. package/dist/esm/{dark-mode-style-controller-352f15ff.js → dark-mode-style-controller-4e04a2d3.js} +45 -45
  283. package/dist/esm/{date-required-rule-b5b67498.js → date-required-rule-2ea3aec8.js} +1 -1
  284. package/dist/esm/{design-token-8319bb59.js → design-token-82a4e107.js} +3 -3
  285. package/dist/esm/{dom-node-subject-observer-factory-ddff8662.js → dom-node-subject-observer-factory-bb7e68a0.js} +1 -1
  286. package/dist/esm/{element-appender-slimmer-c81d1fe3.js → element-appender-slimmer-dd4e2908.js} +24 -5
  287. package/dist/esm/{event-emit-slimmer-2452278f.js → event-emit-slimmer-12ee1593.js} +2 -2
  288. package/dist/esm/{form-field-controller-slimmer-511b7ac5.js → form-field-controller-slimmer-5c794b4d.js} +5 -5
  289. package/dist/esm/{image-annotation-action-d7cb80aa.js → image-annotation-action-cdd50dcc.js} +9 -8
  290. package/dist/esm/{image-extension-9b8abd0d.js → image-extension-f6dbd70c.js} +2 -2
  291. package/dist/esm/index.js +24 -23
  292. package/dist/esm/{inject-keyboard-manager-dd368d56.js → inject-keyboard-manager-6a10c9b7.js} +1 -1
  293. package/dist/esm/{internal-calendar-period-factory-d58f35c6.js → internal-calendar-period-factory-d1a60f81.js} +1 -1
  294. package/dist/esm/{internal-translation-controller-b33430c6.js → internal-translation-controller-fff376d2.js} +15 -0
  295. package/dist/esm/{internal-vega-event-manager-2ecc9186.js → internal-vega-event-manager-0c381f3b.js} +10 -2
  296. package/dist/esm/{keyboard-manager-b4a0d97d.js → keyboard-manager-a58288df.js} +13 -6
  297. package/dist/esm/{keyboard-manager-slimmer-0517fc70.js → keyboard-manager-slimmer-133b86cd.js} +1 -1
  298. package/dist/esm/{link-extension-230bae8d.js → link-extension-bc234cf7.js} +3 -3
  299. package/dist/esm/loader.js +19 -18
  300. package/dist/esm/{month-view-generator-f470caac.js → month-view-generator-20e32b22.js} +1 -1
  301. package/dist/esm/overlay-escape-coordination-439f7d6f.js +35 -0
  302. package/dist/esm/{public-rules-28ef32d3.js → public-rules-8dc3fb00.js} +11 -11
  303. package/dist/esm/{range-efad2578.js → range-d2439ba7.js} +2 -2
  304. package/dist/esm/{responsive-format-facade-dec87e46.js → responsive-format-facade-07843ec3.js} +1 -1
  305. package/dist/esm/{rich-text-editor-required-rule-a697e5bd.js → rich-text-editor-required-rule-a0663a84.js} +1 -1
  306. package/dist/esm/{split-cell-operation-89b91a38.js → split-cell-operation-1a889fa0.js} +5 -5
  307. package/dist/esm/{state-border-formatter-1e900a2f.js → state-border-formatter-3b3dcfe8.js} +1 -1
  308. package/dist/esm/{string-format-strategy.abstract-d0ce3f65.js → string-format-strategy.abstract-44381dcb.js} +1 -1
  309. package/dist/esm/{string-input-formatter-slimmer-6546cfc7.js → string-input-formatter-slimmer-69887c40.js} +4 -4
  310. package/dist/esm/{string-mask-strategy-dd13ae21.js → string-mask-strategy-999fba4b.js} +2 -2
  311. package/dist/esm/{style-formatter-057d7120.js → style-formatter-c4192c99.js} +2 -2
  312. package/dist/esm/{sub-state-notify-slimmer-23b7d0e8.js → sub-state-notify-slimmer-ba72f30b.js} +2 -2
  313. package/dist/esm/{sub-state-observer-slimmer-722f6b92.js → sub-state-observer-slimmer-bee1c7fa.js} +3 -3
  314. package/dist/esm/{time-required-rule-73753a54.js → time-required-rule-0554b114.js} +1 -1
  315. package/dist/esm/{token-extension-74a0eeb1.js → token-extension-530d9bde.js} +813 -56
  316. package/dist/esm/{translation-slimmer-ef970ffc.js → translation-slimmer-77022f2e.js} +1 -1
  317. package/dist/esm/{type-guard-6fc96870.js → type-guard-26d83e7e.js} +1 -1
  318. package/dist/esm/{ui-d73f756a.js → ui-80e610f4.js} +1 -1
  319. package/dist/esm/{valid-credit-card-number-rule-b54a31e7.js → valid-credit-card-number-rule-f60b6904.js} +1 -1
  320. package/dist/esm/vega-accordion.entry.js +11 -11
  321. package/dist/esm/vega-app-footer.entry.js +6 -6
  322. package/dist/esm/vega-app-header-button.entry.js +12 -12
  323. package/dist/esm/vega-backdrop.entry.js +1 -1
  324. package/dist/esm/vega-banner.entry.js +6 -6
  325. package/dist/esm/vega-box.entry.js +7 -7
  326. package/dist/esm/vega-brand-logo.entry.js +1 -1
  327. package/dist/esm/vega-breadcrumb.entry.js +6 -6
  328. package/dist/esm/vega-button-circle.entry.js +14 -14
  329. package/dist/esm/vega-button-group_2.entry.js +22 -15
  330. package/dist/esm/vega-button-link.entry.js +10 -10
  331. package/dist/esm/vega-button.entry.js +29 -13
  332. package/dist/esm/vega-calendar_5.entry.js +132 -26
  333. package/dist/esm/vega-card.entry.js +6 -6
  334. package/dist/esm/vega-carousel.entry.js +9 -9
  335. package/dist/esm/vega-checkbox_2.entry.js +12 -12
  336. package/dist/esm/vega-chip.entry.js +12 -12
  337. package/dist/esm/vega-code-block.entry.js +17 -17
  338. package/dist/esm/vega-color-picker.entry.js +10 -10
  339. package/dist/esm/vega-color-swatch-picker.entry.js +11 -11
  340. package/dist/esm/vega-color-swatch.entry.js +8 -8
  341. package/dist/esm/vega-combo-box.entry.js +17 -17
  342. package/dist/esm/vega-date-picker_2.entry.js +24 -24
  343. package/dist/esm/vega-dialog_2.entry.js +78 -12
  344. package/dist/esm/vega-divider.entry.js +5 -5
  345. package/dist/esm/vega-dropdown_5.entry.js +111 -28
  346. package/dist/esm/vega-env-manager-8f8dc473.js +2 -2
  347. package/dist/esm/{vega-event-id-f55f6977.js → vega-event-id-59cd9297.js} +2 -1
  348. package/dist/esm/vega-field-label.entry.js +31 -38
  349. package/dist/esm/vega-file-uploader.entry.js +11 -11
  350. package/dist/esm/vega-flag-icon.entry.js +11 -11
  351. package/dist/esm/vega-flex.entry.js +7 -7
  352. package/dist/esm/vega-font.entry.js +6 -6
  353. package/dist/esm/vega-form.entry.js +12 -12
  354. package/dist/esm/vega-grid.entry.js +6 -6
  355. package/dist/esm/vega-icon.entry.js +6 -6
  356. package/dist/esm/vega-image-uploader.entry.js +15 -15
  357. package/dist/esm/vega-input-credit-card.entry.js +14 -14
  358. package/dist/esm/vega-input-numeric.entry.js +14 -14
  359. package/dist/esm/vega-input-passcode.entry.js +13 -13
  360. package/dist/esm/vega-input-phone-number.entry.js +55 -274
  361. package/dist/esm/vega-input-range.entry.js +12 -12
  362. package/dist/esm/vega-input-select.entry.js +41 -41
  363. package/dist/esm/vega-input.entry.js +16 -16
  364. package/dist/esm/{vega-internal-event-id-86fce049.js → vega-internal-event-id-02093067.js} +4 -2
  365. package/dist/esm/vega-item-toggle.entry.js +5 -5
  366. package/dist/esm/vega-left-nav_5.entry.js +16 -16
  367. package/dist/esm/vega-loader-wrapper_2.entry.js +4 -4
  368. package/dist/esm/vega-page-notification_2.entry.js +4 -4
  369. package/dist/esm/vega-pagination-page-selector-mobile.entry.js +6 -6
  370. package/dist/esm/vega-pagination-page-size-selector-mobile.entry.js +6 -6
  371. package/dist/esm/vega-pagination.entry.js +11 -11
  372. package/dist/esm/vega-popover_2.entry.js +65 -16
  373. package/dist/esm/vega-progress-tracker_2.entry.js +12 -12
  374. package/dist/esm/vega-radio_2.entry.js +15 -15
  375. package/dist/esm/vega-rich-text-content.entry.js +18 -15
  376. package/dist/esm/vega-rich-text-editor_4.entry.js +715 -253
  377. package/dist/esm/vega-rich-text-find-replace-panel.entry.js +8 -8
  378. package/dist/esm/vega-rich-text-special-characters-panel.entry.js +10 -10
  379. package/dist/esm/vega-rich-text-table-properties_3.entry.js +163 -110
  380. package/dist/esm/vega-segment-control.entry.js +13 -6
  381. package/dist/esm/vega-selection-chip_2.entry.js +14 -14
  382. package/dist/esm/vega-selection-tile_2.entry.js +12 -12
  383. package/dist/esm/vega-sidenav_3.entry.js +12 -12
  384. package/dist/esm/vega-signature-capture.entry.js +14 -14
  385. package/dist/esm/vega-stepper.entry.js +10 -10
  386. package/dist/esm/vega-tab-group_2.entry.js +9 -9
  387. package/dist/esm/vega-table_11.entry.js +627 -668
  388. package/dist/esm/vega-textarea.entry.js +10 -10
  389. package/dist/esm/vega-time-picker_2.entry.js +18 -18
  390. package/dist/esm/vega-toggle-switch.entry.js +10 -10
  391. package/dist/esm/vega-tooltip_2.entry.js +9 -9
  392. package/dist/esm/vega.js +19 -18
  393. package/dist/esm/{wait-for-component-did-render-ff7062aa.js → wait-for-component-did-render-9e84d92d.js} +2 -2
  394. package/dist/sri/vega-sri-manifest.json +415 -407
  395. package/dist/types/components/vega-button/vega-button.d.ts +2 -0
  396. package/dist/types/components/vega-button-group/types.d.ts +12 -6
  397. package/dist/types/components/vega-calendar/slimmers/common/renderers/vega-calendar-event-item-renderer.d.ts +18 -0
  398. package/dist/types/components/vega-calendar/slimmers/common/renderers/vega-calendar-event-preview-popover-renderer.d.ts +9 -0
  399. package/dist/types/components/vega-calendar/slimmers/month-view/renderers/vega-calendar-month-event-renderer.d.ts +9 -1
  400. package/dist/types/components/vega-calendar/types.d.ts +22 -0
  401. package/dist/types/components/vega-calendar/vega-calendar.d.ts +23 -1
  402. package/dist/types/components/vega-dropdown/vega-dropdown.d.ts +1 -1
  403. package/dist/types/components/vega-field-label/slimmers/renderers/vega-field-label-label-announcement-renderer.d.ts +3 -10
  404. package/dist/types/components/vega-flag-icon/slimmers/controllers/vega-flag-icon-controller.d.ts +2 -2
  405. package/dist/types/components/vega-input-phone-number/slimmers/renderers/country-select-renderer.d.ts +0 -1
  406. package/dist/types/components/vega-input-select/slimmers/renderers/vega-input-select-dropdown-renderer.d.ts +8 -0
  407. package/dist/types/components/vega-input-select/slimmers/renderers/vega-input-select-prefix-icon-renderer.d.ts +2 -14
  408. package/dist/types/components/vega-input-select/vega-input-select.d.ts +1 -0
  409. package/dist/types/components/vega-modal/slimmers/controllers/vega-modal-open-state-controller.d.ts +33 -0
  410. package/dist/types/components/vega-modal/types.d.ts +2 -1
  411. package/dist/types/components/vega-popover/slimmers/renderers/vega-popover-appender-renderer.d.ts +9 -0
  412. package/dist/types/components/vega-rich-text-editor/constants/constant.d.ts +6 -0
  413. package/dist/types/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/commit-value-strategy.d.ts +13 -0
  414. package/dist/types/components/vega-rich-text-editor/dto/actions/commit-value-action.d.ts +20 -0
  415. package/dist/types/components/vega-rich-text-editor/dto/blocks/block.abstract.d.ts +6 -0
  416. package/dist/types/components/vega-rich-text-editor/dto/blocks/list-item-block.d.ts +4 -0
  417. package/dist/types/components/vega-rich-text-editor/dto/blocks/text-block.d.ts +11 -1
  418. package/dist/types/components/vega-rich-text-editor/dto/content-state.d.ts +6 -0
  419. package/dist/types/components/vega-rich-text-editor/dto/nodes/code-block-node.d.ts +4 -0
  420. package/dist/types/components/vega-rich-text-editor/dto/nodes/node.abstract.d.ts +6 -0
  421. package/dist/types/components/vega-rich-text-editor/dto/nodes/text-node.d.ts +4 -0
  422. package/dist/types/components/vega-rich-text-editor/extensions/base-toolbar-button-renderer.d.ts +5 -0
  423. package/dist/types/components/vega-rich-text-editor/extensions/find-replace/slimmer/renderers/find-replace-toolbar-button-renderer.d.ts +19 -0
  424. package/dist/types/components/vega-rich-text-editor/extensions/functions/dto/logic-control-node.d.ts +4 -0
  425. package/dist/types/components/vega-rich-text-editor/extensions/line-height/line-height-toolbar-button-renderer.d.ts +14 -1
  426. package/dist/types/components/vega-rich-text-editor/extensions/table/renderers/table-caption-renderer.d.ts +2 -2
  427. package/dist/types/components/vega-rich-text-editor/extensions/table/renderers/table-dynamic-popover-renderer.d.ts +31 -1
  428. package/dist/types/components/vega-rich-text-editor/extensions/table/renderers/table-popover-base-renderer.d.ts +91 -0
  429. package/dist/types/components/vega-rich-text-editor/extensions/table/renderers/table-renderer.d.ts +46 -0
  430. package/dist/types/components/vega-rich-text-editor/extensions/table/renderers/table-setting-popover-renderer.d.ts +58 -0
  431. package/dist/types/components/vega-rich-text-editor/extensions/table/table-selection.d.ts +8 -0
  432. 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
  433. package/dist/types/components/vega-rich-text-editor/extensions/table/vega-rich-text-table-properties/vega-rich-text-table-properties.d.ts +2 -0
  434. package/dist/types/components/vega-rich-text-editor/extensions/table/vega-rich-text-table-setting/slimmers/renderers/row-button-slimmer.d.ts +3 -0
  435. 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
  436. package/dist/types/components/vega-rich-text-editor/extensions/table/vega-rich-text-table-setting/vega-rich-text-table-setting.d.ts +1 -0
  437. package/dist/types/components/vega-rich-text-editor/extensions/word-count/action-handler-interceptors/prevent-hard-limit-exceed-interceptor.d.ts +38 -0
  438. package/dist/types/components/vega-rich-text-editor/extensions/word-count/type.d.ts +46 -0
  439. package/dist/types/components/vega-rich-text-editor/extensions/word-count/word-count-extension.d.ts +38 -0
  440. package/dist/types/components/vega-rich-text-editor/interface.d.ts +12 -0
  441. package/dist/types/components/vega-rich-text-editor/public-api.d.ts +1 -0
  442. package/dist/types/components/vega-rich-text-editor/slimmers/controllers/value-controller.d.ts +11 -1
  443. package/dist/types/components/vega-rich-text-editor/slimmers/controllers/word-count-controller.d.ts +40 -0
  444. package/dist/types/components/vega-rich-text-editor/slimmers/renderers/tools/link-toolbar-button-slimmer.d.ts +14 -0
  445. package/dist/types/components/vega-rich-text-editor/slimmers/renderers/tools/source-edit-toolbar-button-slimmer.d.ts +3 -1
  446. package/dist/types/components/vega-rich-text-editor/slimmers/renderers/tools/toolbar-button-slimmer.abstract.d.ts +3 -2
  447. package/dist/types/components/vega-rich-text-editor/slimmers/renderers/vega-rich-text-editor-renderer.d.ts +12 -0
  448. package/dist/types/components/vega-rich-text-editor/vega-rich-text-editor-toolbar-button/vega-rich-text-editor-toolbar-button.d.ts +2 -0
  449. package/dist/types/components/vega-rich-text-editor/vega-rich-text-editor.d.ts +4 -0
  450. package/dist/types/components/vega-rich-text-editor/vega-rich-text-link-editor/slimmers/controllers/link-editor-controller.d.ts +68 -0
  451. 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
  452. package/dist/types/components/vega-segment-control/slimmers/renderers/vega-segment-renderer.d.ts +1 -0
  453. package/dist/types/components/vega-segment-control/types.d.ts +2 -0
  454. package/dist/types/components/vega-segment-control/vega-segment-control.d.ts +7 -1
  455. package/dist/types/components/vega-table/slimmers/controllers/dto/column-render-input-model.d.ts +17 -0
  456. package/dist/types/components/vega-table/slimmers/controllers/dto/row-render-input-model.d.ts +39 -0
  457. package/dist/types/components/vega-table/slimmers/controllers/vega-table-render-input-controller.d.ts +71 -7
  458. package/dist/types/components/vega-table/slimmers/renderers/vega-table-body-renderer.d.ts +1 -0
  459. package/dist/types/components/vega-table/slimmers/renderers/vega-table-pinned-renderer.d.ts +3 -88
  460. package/dist/types/components/vega-table/vega-table-expand-row/slimmers/renderers/vega-table-expand-row-renderer.d.ts +1 -1
  461. package/dist/types/components/vega-table/vega-table-expand-row/vega-table-expand-row.d.ts +5 -0
  462. package/dist/types/components/vega-table/vega-table-foot-cell/slimmers/renderers/vega-table-foot-cell-renderer.d.ts +1 -0
  463. package/dist/types/components/vega-table/vega-table-foot-cell/vega-table-foot-cell.d.ts +5 -0
  464. package/dist/types/components/vega-table/vega-table-foot-row/slimmers/renderers/vega-table-foot-row-renderer.d.ts +1 -3
  465. package/dist/types/components/vega-table/vega-table-foot-row/vega-table-foot-row.d.ts +5 -0
  466. package/dist/types/components/vega-table/vega-table-head-row/slimmers/renderers/vega-table-head-row-renderer.d.ts +0 -4
  467. package/dist/types/components/vega-table/vega-table-head-row/vega-table-head-row.d.ts +2 -2
  468. package/dist/types/components/vega-table/vega-table-row/slimmers/renderers/vega-table-row-renderer.d.ts +2 -3
  469. package/dist/types/components/vega-table/vega-table-row/vega-table-row.d.ts +4 -0
  470. package/dist/types/components.d.ts +33 -2
  471. package/dist/types/constants/ui.d.ts +1 -1
  472. package/dist/types/helpers/event-manager/event-id/vega-event-id.d.ts +1 -0
  473. package/dist/types/helpers/event-manager/event-id/vega-internal-event-id.d.ts +3 -1
  474. package/dist/types/helpers/keyboard/keyboard-manager.d.ts +9 -0
  475. package/dist/types/helpers/keyboard/overlay-escape-coordination.d.ts +28 -0
  476. package/dist/types/helpers/public-api.d.ts +1 -0
  477. package/dist/types/helpers/slimmers/mutation-observer/aria-attributes-value-mapper.d.ts +1 -1
  478. package/dist/types/helpers/slimmers/position-calculation/position-calculation-controller.d.ts +6 -0
  479. package/dist/types/helpers/slimmers/position-calculation/screen-position-calculation-strategy.d.ts +6 -0
  480. package/dist/types/helpers/slimmers/position-calculation/screen-scroll-position-update.d.ts +2 -1
  481. package/dist/types/helpers/slimmers/vega-table-child-render-input-consumer-slimmer.d.ts +2 -1
  482. package/dist/types/helpers/translation/interface.d.ts +16 -1
  483. package/dist/types/polyfill/libphonenumber/as-you-type.d.ts +1 -0
  484. package/dist/types/polyfill/libphonenumber/metadata.d.ts +10 -0
  485. package/dist/types/types/components.type.d.ts +7 -1
  486. package/dist/types/types/public-api.d.ts +2 -0
  487. package/dist/types/utils/accessibility.d.ts +9 -0
  488. package/dist/vega/index.esm.js +1 -1
  489. package/dist/vega/p-022cbf8a.js +1 -0
  490. package/dist/vega/{p-c8ad7207.entry.js → p-02c1284e.entry.js} +1 -1
  491. package/dist/vega/{p-22edd3cc.js → p-069bbb4a.js} +1 -1
  492. package/dist/vega/p-08fd229c.js +1 -0
  493. package/dist/vega/{p-fcb6b499.js → p-0eea1ca8.js} +1 -1
  494. package/dist/vega/{p-ba6881da.entry.js → p-131ce9df.entry.js} +1 -1
  495. package/dist/vega/{p-024db952.entry.js → p-143ee395.entry.js} +1 -1
  496. package/dist/vega/p-178634f3.js +1 -0
  497. package/dist/vega/{p-9e9f49f4.js → p-1836a6a5.js} +1 -1
  498. package/dist/vega/p-1dbf8d1f.js +1 -0
  499. package/dist/vega/{p-d4d90ce2.entry.js → p-2b26e182.entry.js} +1 -1
  500. package/dist/vega/p-2dda5c65.entry.js +1 -0
  501. package/dist/vega/{p-df63c2fb.entry.js → p-30010c41.entry.js} +1 -1
  502. package/dist/vega/p-32f5a6dd.entry.js +1 -0
  503. package/dist/vega/{p-3c8421d5.entry.js → p-3460a1c5.entry.js} +1 -1
  504. package/dist/vega/p-34b523da.entry.js +1 -0
  505. package/dist/vega/p-357c0226.entry.js +1 -0
  506. package/dist/vega/p-361f8996.js +1 -0
  507. package/dist/vega/{p-526e3634.js → p-36a57431.js} +1 -1
  508. package/dist/vega/p-36ee9d54.js +1 -0
  509. package/dist/vega/{p-6659c910.entry.js → p-37d5c37e.entry.js} +1 -1
  510. package/dist/vega/{p-47a48329.entry.js → p-3d6a43df.entry.js} +1 -1
  511. package/dist/vega/{p-0ca3b4bf.entry.js → p-45ad2d90.entry.js} +1 -1
  512. package/dist/vega/{p-fb9475ab.entry.js → p-4b117bfd.entry.js} +1 -1
  513. package/dist/vega/p-4b35c748.js +1 -0
  514. package/dist/vega/{p-55dc3053.entry.js → p-4e23e56c.entry.js} +1 -1
  515. package/dist/vega/p-4e70836a.entry.js +1 -0
  516. package/dist/vega/{p-66647244.js → p-4ea477d5.js} +1 -1
  517. package/dist/vega/{p-5147c30d.entry.js → p-50e8e24f.entry.js} +1 -1
  518. package/dist/vega/{p-9c5289dc.entry.js → p-522a6eec.entry.js} +1 -1
  519. package/dist/vega/p-53e3f259.js +1 -0
  520. package/dist/vega/{p-2c737fc8.js → p-5536146c.js} +1 -1
  521. package/dist/vega/{p-944e284d.entry.js → p-55c2c0df.entry.js} +1 -1
  522. package/dist/vega/p-587130f6.entry.js +1 -0
  523. package/dist/vega/{p-9c9b0629.js → p-58c8a4ac.js} +1 -1
  524. package/dist/vega/{p-4f6aaac5.entry.js → p-594cb986.entry.js} +1 -1
  525. package/dist/vega/{p-b12de1bf.entry.js → p-5c17ddda.entry.js} +1 -1
  526. package/dist/vega/{p-7977352b.entry.js → p-5c9c0c0d.entry.js} +1 -1
  527. package/dist/vega/p-5f377954.js +1 -1
  528. package/dist/vega/p-60010f14.entry.js +1 -0
  529. package/dist/vega/p-6098c4bb.js +1 -0
  530. package/dist/vega/{p-2044eba9.js → p-60a74fb7.js} +1 -1
  531. package/dist/vega/p-61e63c0e.entry.js +1 -0
  532. package/dist/vega/{p-49d7cfed.entry.js → p-62254dc7.entry.js} +1 -1
  533. package/dist/vega/{p-2af1d8b8.entry.js → p-62ae9327.entry.js} +1 -1
  534. package/dist/vega/{p-b3c4943b.js → p-638b6a7d.js} +1 -1
  535. package/dist/vega/p-66245bc0.entry.js +1 -0
  536. package/dist/vega/{p-bdb5180c.js → p-68744e7e.js} +1 -1
  537. package/dist/vega/{p-f0a0fc77.entry.js → p-68ca8d3c.entry.js} +1 -1
  538. package/dist/vega/p-6a6c1279.js +1 -0
  539. package/dist/vega/{p-5e9e04f3.entry.js → p-6ae93679.entry.js} +1 -1
  540. package/dist/vega/{p-433b1395.entry.js → p-6d90d28d.entry.js} +1 -1
  541. package/dist/vega/p-6e9e7131.js +1 -0
  542. package/dist/vega/{p-014cd411.js → p-6eedbc4f.js} +1 -1
  543. package/dist/vega/{p-c348eaf5.js → p-6fae6768.js} +1 -1
  544. package/dist/vega/p-71813a9e.entry.js +1 -0
  545. package/dist/vega/{p-860e76f5.entry.js → p-729529d6.entry.js} +1 -1
  546. package/dist/vega/{p-aa433430.entry.js → p-75bfbffe.entry.js} +1 -1
  547. package/dist/vega/{p-d6023dc0.entry.js → p-764b4e51.entry.js} +1 -1
  548. package/dist/vega/p-77bcdd35.js +1 -0
  549. package/dist/vega/{p-c41a2d4a.js → p-7d3419c7.js} +1 -1
  550. package/dist/vega/p-8387896e.js +1 -0
  551. package/dist/vega/p-853a05eb.js +1 -0
  552. package/dist/vega/{p-db11134b.entry.js → p-8e8b5790.entry.js} +1 -1
  553. package/dist/vega/{p-444e24c6.js → p-8ebe30a8.js} +1 -1
  554. package/dist/vega/p-8f00dfe6.js +1 -0
  555. package/dist/vega/{p-4022412e.entry.js → p-9236b8d9.entry.js} +1 -1
  556. package/dist/vega/p-9402f32f.js +1 -0
  557. package/dist/vega/{p-691bdc20.js → p-941a83db.js} +1 -1
  558. package/dist/vega/{p-840444c9.entry.js → p-942f9ea6.entry.js} +1 -1
  559. package/dist/vega/{p-5110c84f.js → p-96c090c4.js} +1 -1
  560. package/dist/vega/{p-328ebbdb.entry.js → p-9fdf66a8.entry.js} +1 -1
  561. package/dist/vega/{p-867cc602.entry.js → p-a2c45173.entry.js} +1 -1
  562. package/dist/vega/{p-66fe8b4e.entry.js → p-a54ed341.entry.js} +1 -1
  563. package/dist/vega/{p-44999c88.entry.js → p-a6a89f09.entry.js} +1 -1
  564. package/dist/vega/{p-ccbed811.entry.js → p-a8a246e8.entry.js} +1 -1
  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-a1f220ca.js → p-ab9d53e9.js} +1 -1
  568. package/dist/vega/{p-e18c0656.entry.js → p-af0cfea0.entry.js} +1 -1
  569. package/dist/vega/p-af0e9bd5.entry.js +1 -0
  570. package/dist/vega/{p-daba4af1.js → p-b1557bbe.js} +1 -1
  571. package/dist/vega/{p-f13b39d8.js → p-b2a4314a.js} +1 -1
  572. package/dist/vega/p-b94f164a.entry.js +1 -0
  573. package/dist/vega/{p-23c1f378.entry.js → p-b97ed9f7.entry.js} +1 -1
  574. package/dist/vega/{p-1a37d63c.entry.js → p-bbfffe6b.entry.js} +1 -1
  575. package/dist/vega/{p-aa914dbd.entry.js → p-beccc38c.entry.js} +1 -1
  576. package/dist/vega/{p-dd0bd78b.js → p-c34f4cbc.js} +1 -1
  577. package/dist/vega/p-c51de680.js +3 -0
  578. package/dist/vega/{p-e1c82ca9.js → p-c576e846.js} +1 -1
  579. package/dist/vega/p-c601eea6.js +1 -0
  580. package/dist/vega/{p-200c8914.entry.js → p-c6d2513c.entry.js} +1 -1
  581. package/dist/vega/{p-d62e618a.entry.js → p-ca6bd3a0.entry.js} +1 -1
  582. package/dist/vega/{p-ce82d6bb.entry.js → p-cab890be.entry.js} +1 -1
  583. package/dist/vega/p-cb1cd15f.entry.js +1 -0
  584. package/dist/vega/p-d1f47512.js +1 -0
  585. package/dist/vega/{p-66a785d0.entry.js → p-d37d2ea4.entry.js} +1 -1
  586. package/dist/vega/{p-2f89ee14.entry.js → p-d3e99d4a.entry.js} +1 -1
  587. package/dist/vega/{p-f9bfee81.entry.js → p-d6bd3ce4.entry.js} +1 -1
  588. package/dist/vega/{p-f2384411.entry.js → p-d7838f6e.entry.js} +1 -1
  589. package/dist/vega/{p-a4360b7e.entry.js → p-d8c9ea46.entry.js} +1 -1
  590. package/dist/vega/p-d9588b3f.entry.js +1 -0
  591. package/dist/vega/p-db69a5c9.entry.js +1 -0
  592. package/dist/vega/{p-50eda925.js → p-de1d0284.js} +1 -1
  593. package/dist/vega/{p-3c559c8b.js → p-de6fc52c.js} +1 -1
  594. package/dist/vega/{p-fa5cd8b1.js → p-e14323f3.js} +1 -1
  595. package/dist/vega/{p-bd7725f7.entry.js → p-e48b7a8a.entry.js} +1 -1
  596. package/dist/vega/p-e6f67a44.js +1 -0
  597. package/dist/vega/{p-7754b10f.entry.js → p-e8e3bf74.entry.js} +1 -1
  598. package/dist/vega/p-eadc10bc.entry.js +1 -0
  599. package/dist/vega/p-ee329596.entry.js +1 -0
  600. package/dist/vega/p-f01bc6a2.js +1 -0
  601. package/dist/vega/{p-94b54a95.js → p-f324e90e.js} +1 -1
  602. package/dist/vega/{p-f9a3805d.js → p-f48519d2.js} +1 -1
  603. package/dist/vega/{p-52878ea9.js → p-f485448a.js} +1 -1
  604. package/dist/vega/{p-4afd6715.entry.js → p-f8b2dbb9.entry.js} +1 -1
  605. package/dist/vega/{p-35d37477.entry.js → p-f8d13d01.entry.js} +1 -1
  606. package/dist/vega/{p-4370b954.entry.js → p-f902305d.entry.js} +1 -1
  607. package/dist/vega/{p-3c152bad.entry.js → p-f99f054c.entry.js} +1 -1
  608. package/dist/vega/{p-77fb3971.entry.js → p-fe41e3b6.entry.js} +1 -1
  609. package/dist/vega/vega.esm.js +1 -1
  610. package/package.json +1 -1
  611. package/dist/collection/components/vega-dropdown/slimmers/controllers/vega-dropdown-keyboard-conttroller.js +0 -85
  612. package/dist/vega/p-0b2c4c0b.js +0 -1
  613. package/dist/vega/p-1fa22fda.js +0 -1
  614. package/dist/vega/p-2529820e.js +0 -1
  615. package/dist/vega/p-35628af4.js +0 -1
  616. package/dist/vega/p-3a230d4b.entry.js +0 -1
  617. package/dist/vega/p-3a620268.js +0 -1
  618. package/dist/vega/p-4473d8b1.js +0 -3
  619. package/dist/vega/p-4a2fe3a4.js +0 -1
  620. package/dist/vega/p-5447a8e8.js +0 -1
  621. package/dist/vega/p-5af312f8.js +0 -1
  622. package/dist/vega/p-5b3c8a56.js +0 -1
  623. package/dist/vega/p-6493f13a.entry.js +0 -1
  624. package/dist/vega/p-66728dd4.entry.js +0 -1
  625. package/dist/vega/p-67e88cd7.entry.js +0 -1
  626. package/dist/vega/p-67eaf77e.js +0 -1
  627. package/dist/vega/p-6d6b4495.entry.js +0 -1
  628. package/dist/vega/p-7b133734.entry.js +0 -1
  629. package/dist/vega/p-7b84a943.entry.js +0 -1
  630. package/dist/vega/p-83ad8988.js +0 -1
  631. package/dist/vega/p-8c30a60d.js +0 -1
  632. package/dist/vega/p-8d2a9012.js +0 -1
  633. package/dist/vega/p-8d4be607.js +0 -1
  634. package/dist/vega/p-8d77c7cf.js +0 -1
  635. package/dist/vega/p-8f3b93db.js +0 -1
  636. package/dist/vega/p-9c2b3279.js +0 -1
  637. package/dist/vega/p-9c9ff871.entry.js +0 -1
  638. package/dist/vega/p-9d90e271.entry.js +0 -1
  639. package/dist/vega/p-a7517760.entry.js +0 -1
  640. package/dist/vega/p-c8fb3aac.entry.js +0 -1
  641. package/dist/vega/p-cede3535.js +0 -1
  642. package/dist/vega/p-cf4b3d40.entry.js +0 -1
  643. package/dist/vega/p-d35a31a5.entry.js +0 -1
  644. package/dist/vega/p-ded1ecc1.entry.js +0 -1
  645. package/dist/vega/p-e1a65e06.entry.js +0 -1
  646. package/dist/vega/p-e469ba27.entry.js +0 -1
  647. package/dist/vega/p-e4c5cb4f.js +0 -1
  648. package/dist/vega/p-fd23c365.entry.js +0 -1
  649. /package/dist/types/components/vega-dropdown/slimmers/controllers/{vega-dropdown-keyboard-conttroller.d.ts → vega-dropdown-keyboard-controller.d.ts} +0 -0
@@ -7,28 +7,28 @@ const createPublicApiRuntimeMetricsSlimmer = require('./create-public-api-runtim
7
7
  const internalVegaZIndexManager = require('./internal-vega-z-index-manager-f03ddb37.js');
8
8
  const dynamicSlimmer = require('./dynamic-slimmer-f31fdfd7.js');
9
9
  const pageResizeObserverSlimmer = require('./page-resize-observer-slimmer-273d62ef.js');
10
- const internalVegaEventManager = require('./internal-vega-event-manager-7003c84a.js');
11
- const internalTranslationController = require('./internal-translation-controller-51f7f865.js');
12
- const internalCalendarPeriodFactory = require('./internal-calendar-period-factory-6196bc80.js');
13
- const codeBlock = require('./code-block-ea1f5eb3.js');
14
- const contentState = require('./content-state-8d07d530.js');
15
- const typeGuard = require('./type-guard-b8d7bb3f.js');
16
- const linkExtension = require('./link-extension-11340e1c.js');
10
+ const internalVegaEventManager = require('./internal-vega-event-manager-976b9526.js');
11
+ const internalTranslationController = require('./internal-translation-controller-27bfc8c7.js');
12
+ const internalCalendarPeriodFactory = require('./internal-calendar-period-factory-b11918ee.js');
13
+ const codeBlock = require('./code-block-c598832d.js');
14
+ const contentState = require('./content-state-da23e822.js');
15
+ const typeGuard = require('./type-guard-00b8efc0.js');
16
+ const linkExtension = require('./link-extension-f493e432.js');
17
17
  const internalIconManager = require('./internal-icon-manager-40bcac72.js');
18
18
  const vegaNonceManager = require('./vega-nonce-manager-df69d3ed.js');
19
19
  const domNodeSubjectObserverFactory = require('./dom-node-subject-observer-factory-c82df135.js');
20
- const vegaEventId = require('./vega-event-id-58afed7a.js');
21
- const splitCellOperation = require('./split-cell-operation-11bfb305.js');
20
+ const vegaEventId = require('./vega-event-id-987a170c.js');
21
+ const splitCellOperation = require('./split-cell-operation-0d33123e.js');
22
22
  const changeManager = require('./change-manager-a297e4d2.js');
23
- const vegaInternalEventId = require('./vega-internal-event-id-f4d33037.js');
23
+ const vegaInternalEventId = require('./vega-internal-event-id-98d499d7.js');
24
24
  const remoteInvocationRegistry = require('./remote-invocation-registry-fc22fdd0.js');
25
- const darkModeStyleController = require('./dark-mode-style-controller-f3da3342.js');
25
+ const darkModeStyleController = require('./dark-mode-style-controller-ec04ece9.js');
26
26
  const tryGetDocument = require('./try-get-document-c0ebd39a.js');
27
27
  const pixel = require('./pixel-98f2a10c.js');
28
28
  const object = require('./object-b53e9416.js');
29
29
  const timer = require('./timer-5f33058b.js');
30
30
  const string = require('./string-39438062.js');
31
- const imageExtension = require('./image-extension-9659708b.js');
31
+ const imageExtension = require('./image-extension-673ebe7f.js');
32
32
  const copy = require('./copy-d021c780.js');
33
33
 
34
34
  const VegaLoaderRuntimeMetricsPayloadDefinition = [
@@ -1117,7 +1117,7 @@ class VegaRTEToolbarButtonRenderer {
1117
1117
  * @returns {VegaRTERenderResult} - The render result for the dropdown.
1118
1118
  */
1119
1119
  renderDropdown(h, editorContext, dropdownProps, children) {
1120
- return h('vega-dropdown', Object.assign({ trigger: 'click', searchable: false, maxWidth: '200', itemDisplayRule: 'ellipsis', isScreenPosition: true,
1120
+ return h('vega-dropdown', Object.assign({ trigger: 'click', searchable: false, maxWidth: '200', itemDisplayRule: 'ellipsis', isScreenPosition: true, role: 'presentation',
1121
1121
  // eslint-disable-next-line jsdoc/require-jsdoc
1122
1122
  ref: (el) => {
1123
1123
  this.dropdownEl = el;
@@ -1201,29 +1201,31 @@ class VegaRTEToolbarButtonRenderer {
1201
1201
  * @returns {VegaRTERenderResult} - The render result for the button.
1202
1202
  */
1203
1203
  renderButton(h, editorContext, buttonProps) {
1204
- const { icon, label, showArrowIcon, tooltip } = buttonProps;
1204
+ const { icon, label, showArrowIcon, tooltip, ariaLabel } = buttonProps;
1205
1205
  const isDisabled = this.isDisabled(editorContext);
1206
1206
  const button = h('vega-rich-text-editor-toolbar-button', {
1207
- disabled: isDisabled,
1208
- icon: icon,
1209
- hidden: this.isHidden(editorContext),
1210
- selected: this.isSelected(editorContext),
1207
+ 'disabled': isDisabled,
1208
+ 'icon': icon,
1209
+ 'data-aria-label': ariaLabel !== null && ariaLabel !== void 0 ? ariaLabel : label,
1210
+ 'hidden': this.isHidden(editorContext),
1211
+ 'selected': this.isSelected(editorContext),
1211
1212
  // eslint-disable-next-line jsdoc/require-jsdoc
1212
- ref: (el) => {
1213
+ 'ref': (el) => {
1213
1214
  this.buttonEl = el;
1214
1215
  domNodeSubjectObserverFactory.DomNodeSubjectObserverFactory.addUniqueObserverToNode(el, vegaEventId.VegaClick, () => this.handleButtonClick(editorContext));
1215
1216
  },
1216
- onMouseDown: this.preventDefault,
1217
+ 'onMouseDown': this.preventDefault,
1217
1218
  // eslint-disable-next-line jsdoc/require-jsdoc
1218
- onKeyDown: (e) => this.handleButtonKeyDown(e),
1219
+ 'onKeyDown': (e) => this.handleButtonKeyDown(e),
1219
1220
  }, [
1220
1221
  this.renderButtonLabel(h, editorContext, label),
1221
1222
  showArrowIcon
1222
1223
  ? h('vega-icon', {
1223
- size: 'size-8',
1224
- color: isDisabled ? 'text-disabled' : 'text-secondary',
1225
- style: { marginLeft: '8px' },
1226
- icon: internalIconManager.VegaInternalIconManager.getIconKey('chevron-down'),
1224
+ 'size': 'size-8',
1225
+ 'color': isDisabled ? 'text-disabled' : 'text-secondary',
1226
+ 'style': { marginLeft: '8px' },
1227
+ 'aria-hidden': 'true',
1228
+ 'icon': internalIconManager.VegaInternalIconManager.getIconKey('chevron-down'),
1227
1229
  })
1228
1230
  : null,
1229
1231
  ].filter(typeGuard.isNonNullable));
@@ -1244,8 +1246,9 @@ class VegaRTEToolbarButtonRenderer {
1244
1246
  if (label) {
1245
1247
  const isDisabled = this.isDisabled(editorContext);
1246
1248
  return h('vega-font', {
1247
- variant: 'font-field-label-sm',
1248
- color: isDisabled ? 'text-disabled' : 'text-primary',
1249
+ 'variant': 'font-field-label-sm',
1250
+ 'color': isDisabled ? 'text-disabled' : 'text-primary',
1251
+ 'aria-hidden': 'true',
1249
1252
  }, editorContext.translation.t(label));
1250
1253
  }
1251
1254
  return null;
@@ -1277,6 +1280,15 @@ class VegaRTEToolbarButtonRenderer {
1277
1280
  preventDefault(e) {
1278
1281
  e.preventDefault();
1279
1282
  }
1283
+ /**
1284
+ * Moves focus to the toolbar button. Targets the inner focusable `<button>`
1285
+ * inside the button's shadow root, falling back to the host element.
1286
+ */
1287
+ focusToolbarButton() {
1288
+ var _a, _b, _c, _d;
1289
+ const innerButton = (_c = (_b = (_a = this.buttonEl) === null || _a === void 0 ? void 0 : _a.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('button')) !== null && _c !== void 0 ? _c : null;
1290
+ (_d = (innerButton !== null && innerButton !== void 0 ? innerButton : this.buttonEl)) === null || _d === void 0 ? void 0 : _d.focus();
1291
+ }
1280
1292
  /**
1281
1293
  * Recursively searches for a dropdown list item by its key.
1282
1294
  *
@@ -1330,14 +1342,14 @@ class VegaRTEToolbarButtonRenderer {
1330
1342
  * @param {KeyboardEvent} e The keyboard event.
1331
1343
  */
1332
1344
  handleItemsKeyDown(e) {
1333
- var _a, _b, _c;
1345
+ var _a, _b;
1334
1346
  if (e.code === 'Escape') {
1335
1347
  e.preventDefault();
1336
1348
  e.stopPropagation();
1337
1349
  if (this.dropdownEl) {
1338
1350
  void this.dropdownEl.hide();
1339
1351
  }
1340
- (_a = this.buttonEl) === null || _a === void 0 ? void 0 : _a.focus();
1352
+ this.focusToolbarButton();
1341
1353
  return;
1342
1354
  }
1343
1355
  if (e.code !== 'ArrowDown' && e.code !== 'ArrowUp') {
@@ -1355,7 +1367,7 @@ class VegaRTEToolbarButtonRenderer {
1355
1367
  for (let offset = 0; offset < items.length; offset++) {
1356
1368
  const index = (startIndex + offset * direction + items.length) % items.length;
1357
1369
  if (!items[index].disabled) {
1358
- (_c = (_b = items[index].shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('li')) === null || _c === void 0 ? void 0 : _c.focus();
1370
+ (_b = (_a = items[index].shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('li')) === null || _b === void 0 ? void 0 : _b.focus();
1359
1371
  return;
1360
1372
  }
1361
1373
  }
@@ -1425,6 +1437,7 @@ class RTETokenToolbarButtonRenderer extends VegaRTEToolbarButtonRenderer {
1425
1437
  return this.renderDropdown(createElement, editorContext, {}, [
1426
1438
  this.renderButton(createElement, editorContext, {
1427
1439
  label: 'Tokens',
1440
+ ariaLabel: 'Tokens',
1428
1441
  showArrowIcon: true,
1429
1442
  tooltip: { text: 'Insert token' },
1430
1443
  }),
@@ -1708,6 +1721,7 @@ class RTELanguageToolbarButtonRenderer extends VegaRTEToolbarButtonRenderer {
1708
1721
  return this.renderDropdown(createElement, editorContext, { source: translatedSource }, [
1709
1722
  this.renderButton(createElement, editorContext, {
1710
1723
  label: this.getLanguageLabelByKey(this.selectedLanguage),
1724
+ ariaLabel: 'Language',
1711
1725
  showArrowIcon: true,
1712
1726
  tooltip: { text: 'Select language' },
1713
1727
  }),
@@ -1723,10 +1737,11 @@ class RTELanguageToolbarButtonRenderer extends VegaRTEToolbarButtonRenderer {
1723
1737
  this.translation = editorContext.translation;
1724
1738
  const isDisabled = this.isDisabled(editorContext);
1725
1739
  return h('vega-font', {
1726
- variant: 'font-field-label-sm',
1727
- color: isDisabled ? 'text-disabled' : 'text-primary',
1740
+ 'variant': 'font-field-label-sm',
1741
+ 'color': isDisabled ? 'text-disabled' : 'text-primary',
1742
+ 'aria-hidden': 'true',
1728
1743
  // eslint-disable-next-line jsdoc/require-jsdoc
1729
- ref: (el) => {
1744
+ 'ref': (el) => {
1730
1745
  this.labelRef = el;
1731
1746
  },
1732
1747
  }, editorContext.translation.t(label));
@@ -2197,6 +2212,12 @@ class RTELogicControlNode extends codeBlock.RTENode {
2197
2212
  isContentEditable() {
2198
2213
  return false;
2199
2214
  }
2215
+ /**
2216
+ * @inheritDoc
2217
+ */
2218
+ getPlainText() {
2219
+ return this.text;
2220
+ }
2200
2221
  }
2201
2222
  RTELogicControlNode.dtoName = 'RTELogicControlNode';
2202
2223
 
@@ -2285,6 +2306,7 @@ class FunctionToolbarButtonRenderer extends VegaRTEToolbarButtonRenderer {
2285
2306
  return this.renderDropdown(h, editorContext, {}, [
2286
2307
  this.renderButton(h, editorContext, {
2287
2308
  label: 'Functions',
2309
+ ariaLabel: 'Functions',
2288
2310
  showArrowIcon: true,
2289
2311
  tooltip: { text: 'Insert function' },
2290
2312
  }),
@@ -2811,7 +2833,7 @@ class VegaRTEFunctionExtension extends linkExtension.VegaRTEExtension {
2811
2833
  })();
2812
2834
  VegaRTEFunctionExtension.TOOLBAR_BUTTON_KEY = 'functions';
2813
2835
 
2814
- const tableBlockStylesCss = ".v-rte--extension-table-container{display:table}table.v-rte--extension-table{border-collapse:collapse}table.v-rte--extension-table th,table.v-rte--extension-table td{border:1px solid #ddd;padding:12px;text-align:left;vertical-align:middle;min-width:55px;box-sizing:border-box;position:relative}table.v-rte--extension-table th{background-color:#f2f2f2}.rte-table-setting-popover,.rte-table-dynamic-popover{display:block}table.v-rte--extension-table .v-rte-table-cell-focused::after,table.v-rte--extension-table .v-rte-table-cell-selected::after{content:'';position:absolute;top:0;left:0;right:0;bottom:0;pointer-events:none;background-color:rgba(158, 207, 250, 0.3)}table.v-rte--extension-table:has(.v-rte-table-cell-selected){caret-color:transparent}table.v-rte--extension-table:has(.v-rte-table-cell-selected) ::selection{background-color:transparent}table.v-rte--extension-table:has(.v-rte-table-cell-selected) ::-moz-selection{background-color:transparent}.v-rte--extension-table-caption{padding:8px;border:1px solid #ddd;border-bottom:none;background-color:rgba(var(--v-bg-table-header, 240, 243, 247, 1));position:relative;display:table-caption;caption-side:top;min-height:22px;text-align:center;word-break:break-word;overflow-wrap:break-word}.v-rte--extension-table-caption.showPlaceholder::before{position:absolute;left:0;right:0;content:attr(data-placeholder);font-family:'Inter', sans-serif;font-size:16px;font-weight:400;line-height:24px;letter-spacing:0;color:rgba(var(--v-text-input-placeholder, 176, 180, 181, 1));text-align:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}";
2836
+ const tableBlockStylesCss = ".v-rte--extension-table-container{display:table}table.v-rte--extension-table{border-collapse:collapse}table.v-rte--extension-table th,table.v-rte--extension-table td{border:1px solid #ddd;padding:12px;text-align:left;vertical-align:middle;min-width:55px;box-sizing:border-box;position:relative}table.v-rte--extension-table th:focus,table.v-rte--extension-table td:focus{outline:none}table.v-rte--extension-table th{background-color:#f2f2f2}.rte-table-setting-popover,.rte-table-dynamic-popover{display:block}table.v-rte--extension-table .v-rte-table-cell-focused::after,table.v-rte--extension-table .v-rte-table-cell-selected::after{content:'';position:absolute;top:0;left:0;right:0;bottom:0;pointer-events:none;background-color:rgba(158, 207, 250, 0.3)}table.v-rte--extension-table:has(.v-rte-table-cell-selected){caret-color:transparent}table.v-rte--extension-table:has(.v-rte-table-cell-selected) ::selection{background-color:transparent}table.v-rte--extension-table:has(.v-rte-table-cell-selected) ::-moz-selection{background-color:transparent}.v-rte--extension-table-caption{padding:8px;border:1px solid #ddd;border-bottom:none;background-color:rgba(var(--v-bg-table-header, 240, 243, 247, 1));position:relative;display:table-caption;caption-side:top;min-height:22px;text-align:center;word-break:break-word;overflow-wrap:break-word}.v-rte--extension-table-caption.showPlaceholder::before{position:absolute;left:0;right:0;content:attr(data-placeholder);font-family:'Inter', sans-serif;font-size:16px;font-weight:400;line-height:24px;letter-spacing:0;color:rgba(var(--v-text-input-placeholder, 176, 180, 181, 1));text-align:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}";
2815
2837
 
2816
2838
  const DELETE_TABLE_BLOCK = 'DELETE_TABLE_BLOCK';
2817
2839
  /**
@@ -3429,9 +3451,42 @@ class CellPropertiesCancelEventHandler extends CellPropertiesEventHandler {
3429
3451
 
3430
3452
  /**
3431
3453
  * Base renderer for table-related popovers, providing common functionalities such as accessing the table extension context.
3454
+ *
3455
+ * Popovers that move keyboard/VoiceOver focus into themselves (the setting toolbar and the
3456
+ * properties dialog) share the same focus-restoration machinery: they make the editor content
3457
+ * `inert` while open, track Escape presses at the document level, and return focus (and the caret)
3458
+ * to the originating cell when an Escape dismisses the popover. That behavior lives here so the two
3459
+ * renderers do not each carry a copy; subclasses only supply the two pieces that differ — how to
3460
+ * resolve the editor content root ({@link getInertContentTarget}) and how to tell whether an event
3461
+ * originated inside their own popover subtree ({@link isEventWithinPopover}).
3432
3462
  */
3433
3463
  class TablePopoverBaseRenderer {
3434
3464
  constructor(renderContext) {
3465
+ /** The editor content element made inert while the popover holds focus, cached so it can be restored. */
3466
+ this.inertedContentEl = null;
3467
+ /** The table cell to return focus to when the popover is dismissed via Escape. */
3468
+ this.returnFocusCell = null;
3469
+ /** Tracks whether Escape was pressed while the popover was open. */
3470
+ this.escapePressed = false;
3471
+ /** Document the Escape tracker keydown listener is bound to, for later removal. */
3472
+ this.keydownListenerDocument = null;
3473
+ /**
3474
+ * Tracks Escape key presses that originate inside the popover so focus can be returned to the
3475
+ * originating cell when that Escape dismisses the popover. vega-popover's own Escape handler hides
3476
+ * the popover without restoring focus, so the restore is coordinated here.
3477
+ *
3478
+ * The listener is bound at the document level (the popover renders in a portal, so its Escape does
3479
+ * not bubble back to the table), so scope it to the popover subtree via {@link isEventWithinPopover}:
3480
+ * a stray Escape elsewhere must not arm the restore and hijack focus on a later non-Escape dismissal
3481
+ * (e.g. click-outside).
3482
+ *
3483
+ * @param {KeyboardEvent} event - The keydown event.
3484
+ */
3485
+ this.handleDocumentKeydown = (event) => {
3486
+ if (event.code === 'Escape' && this.isEventWithinPopover(event)) {
3487
+ this.escapePressed = true;
3488
+ }
3489
+ };
3435
3490
  this.renderContext = renderContext;
3436
3491
  }
3437
3492
  /**
@@ -3444,6 +3499,121 @@ class TablePopoverBaseRenderer {
3444
3499
  ? linkExtension.extensionContextManager.getExtensionContext(this.renderContext.host)
3445
3500
  : null;
3446
3501
  }
3502
+ /**
3503
+ * Begins tracking so a later Escape can return focus to `returnCell`. Records the cell and clears
3504
+ * any stale Escape observed before the popover was opened.
3505
+ *
3506
+ * @param {Nullable<HTMLElement>} returnCell - The cell to return focus to if the popover is dismissed with Escape.
3507
+ */
3508
+ beginReturnFocusTracking(returnCell) {
3509
+ this.returnFocusCell = returnCell !== null && returnCell !== void 0 ? returnCell : null;
3510
+ this.escapePressed = false;
3511
+ }
3512
+ /**
3513
+ * Registers the document-level (capture phase) Escape tracker. The popover renders in a portal, so
3514
+ * its Escape does not bubble back to the table; observing on the document lets us know when to
3515
+ * return focus to the cell.
3516
+ *
3517
+ * @param {Document} doc - The document to bind the keydown listener to.
3518
+ */
3519
+ attachEscapeTracker(doc) {
3520
+ doc.addEventListener('keydown', this.handleDocumentKeydown, { capture: true });
3521
+ this.keydownListenerDocument = doc;
3522
+ }
3523
+ /**
3524
+ * Removes the document-level Escape tracker if one was registered.
3525
+ */
3526
+ detachEscapeTracker() {
3527
+ if (this.keydownListenerDocument) {
3528
+ this.keydownListenerDocument.removeEventListener('keydown', this.handleDocumentKeydown, {
3529
+ capture: true,
3530
+ });
3531
+ this.keydownListenerDocument = null;
3532
+ }
3533
+ }
3534
+ /**
3535
+ * Whether the given event originated inside this popover's subtree. Subclasses override this to
3536
+ * match their own portal-rendered content; the base returns `false` so renderers that do not move
3537
+ * focus never arm the restore.
3538
+ *
3539
+ * @param {Event} _event - The event to test.
3540
+ * @returns {boolean} `true` when the event originated inside the popover subtree.
3541
+ */
3542
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
3543
+ isEventWithinPopover(_event) {
3544
+ return false;
3545
+ }
3546
+ /**
3547
+ * When the popover hides after an Escape press, returns focus (and the caret) to the table cell
3548
+ * that had focus before the popover was opened.
3549
+ *
3550
+ * vegaPopoverHide fires synchronously from the popover's own Escape handler, before the
3551
+ * document-capture keydown observes the key and before the popover settles focus on `<body>`.
3552
+ * Defer past that so the flag is set and this focus restore wins.
3553
+ */
3554
+ restoreFocusOnEscapeHide() {
3555
+ // eslint-disable-next-line no-restricted-globals
3556
+ setTimeout(() => {
3557
+ const shouldRestore = this.escapePressed;
3558
+ const cell = this.returnFocusCell;
3559
+ this.escapePressed = false;
3560
+ this.returnFocusCell = null;
3561
+ if (shouldRestore && cell && cell.isConnected) {
3562
+ this.restoreFocusToCell(cell);
3563
+ }
3564
+ }, 0);
3565
+ }
3566
+ /**
3567
+ * Focuses the given table cell and collapses the caret at its start.
3568
+ *
3569
+ * @param {HTMLElement} cell - The table cell to focus.
3570
+ */
3571
+ restoreFocusToCell(cell) {
3572
+ var _a, _b, _c;
3573
+ cell.focus();
3574
+ const extensionContext = this.getTableExtensionContext();
3575
+ const selection = (_c = (_a = extensionContext === null || extensionContext === void 0 ? void 0 : extensionContext.getSelection()) !== null && _a !== void 0 ? _a : (_b = cell.ownerDocument) === null || _b === void 0 ? void 0 : _b.getSelection()) !== null && _c !== void 0 ? _c : null;
3576
+ if (selection) {
3577
+ const range = new Range();
3578
+ range.setStart(cell, 0);
3579
+ range.setEnd(cell, 0);
3580
+ selection.removeAllRanges();
3581
+ selection.addRange(range);
3582
+ }
3583
+ }
3584
+ /**
3585
+ * Resolves the `.rich-text-content` editor root to toggle `inert` on while the popover holds focus.
3586
+ * Subclasses override this because they reach the content from different anchors (the toolbar's
3587
+ * target vs. the current table ref); the base returns `null` so renderers that do not use inert are
3588
+ * unaffected.
3589
+ *
3590
+ * @returns {Nullable<HTMLElement>} The editor content element, or `null` when it cannot be resolved.
3591
+ */
3592
+ getInertContentTarget() {
3593
+ return null;
3594
+ }
3595
+ /**
3596
+ * Toggles `inert` on the editor content region while the popover holds keyboard/VoiceOver focus.
3597
+ * Safari VoiceOver keeps its reading cursor anchored to the cell caret and does not follow the
3598
+ * programmatic focus moved into the popover; making the editor content inert removes that text
3599
+ * context so the VoiceOver cursor lands inside the popover. The popover is a body-level portal, so it
3600
+ * is not a descendant of the inert content and stays interactive.
3601
+ *
3602
+ * @param {boolean} inert - Whether the editor content should be inert.
3603
+ */
3604
+ setEditorContentInert(inert) {
3605
+ if (inert) {
3606
+ const content = this.getInertContentTarget();
3607
+ if (content) {
3608
+ content.setAttribute('inert', '');
3609
+ this.inertedContentEl = content;
3610
+ }
3611
+ }
3612
+ else if (this.inertedContentEl) {
3613
+ this.inertedContentEl.removeAttribute('inert');
3614
+ this.inertedContentEl = null;
3615
+ }
3616
+ }
3447
3617
  }
3448
3618
 
3449
3619
  /**
@@ -3513,6 +3683,8 @@ class TableDynamicPopoverRenderer extends TablePopoverBaseRenderer {
3513
3683
  * and clears the internal reference.
3514
3684
  */
3515
3685
  destroy() {
3686
+ this.setEditorContentInert(false);
3687
+ this.detachEscapeTracker();
3516
3688
  if (this.selectionAnchorRef && this.selectionAnchorRef.parentNode) {
3517
3689
  domNodeSubjectObserverFactory.DomNodeSubjectObserverFactory.removeUniqueObserverFromNode(this.selectionAnchorRef, vegaInternalEventId.VegaInternalRTEExtensionTableCellsSelectionAnchor);
3518
3690
  this.selectionAnchorRef.parentNode.removeChild(this.selectionAnchorRef);
@@ -3525,8 +3697,13 @@ class TableDynamicPopoverRenderer extends TablePopoverBaseRenderer {
3525
3697
  *
3526
3698
  * @param {string} type - The table setting type determining which
3527
3699
  * content variant to display (for example, table properties or cell properties).
3700
+ * @param {Nullable<HTMLElement>} returnCell - The cell to move focus into the dialog for and
3701
+ * return focus to if the dialog is dismissed with Escape (set for keyboard/screen-reader users).
3528
3702
  */
3529
- async show(type) {
3703
+ async show(type, returnCell) {
3704
+ // Remember the cell to return focus to if the dialog is dismissed with Escape, and clear any
3705
+ // stale Escape recorded before the dialog was opened.
3706
+ this.beginReturnFocusTracking(returnCell);
3530
3707
  let target = this.getTableRef();
3531
3708
  const extensionContext = this.getTableExtensionContext();
3532
3709
  let cells = [];
@@ -3546,6 +3723,11 @@ class TableDynamicPopoverRenderer extends TablePopoverBaseRenderer {
3546
3723
  this.storeCurrentFocusNode();
3547
3724
  remoteInvocationRegistry.remoteInvocationRegistry.call(domNodeSubjectObserverFactory.domNodeSubjectFactory.getSubject(this.popoverRef, vegaInternalEventId.VegaInternalPopoverUpdateTarget), target);
3548
3725
  await this.popoverRef.show();
3726
+ // When opened for keyboard/screen-reader users (a return cell is known), move focus into the
3727
+ // dialog so it lands on the first focusable field (the Border Style control).
3728
+ if (returnCell) {
3729
+ this.focusFirstFormField(type);
3730
+ }
3549
3731
  }
3550
3732
  /**
3551
3733
  * hide the popover.
@@ -3580,7 +3762,11 @@ class TableDynamicPopoverRenderer extends TablePopoverBaseRenderer {
3580
3762
  if (this.popoverCloseType === 'change' && extensionContext) {
3581
3763
  extensionContext.flushValue(extensionContext.host.value);
3582
3764
  }
3765
+ this.handleDialogHide();
3583
3766
  });
3767
+ // Escape inside the dialog (rendered in a portal) does not bubble back to the table, so
3768
+ // observe it on the document (capture phase) to know when to return focus to the cell.
3769
+ this.attachEscapeTracker(safeDocument);
3584
3770
  const slotDiv = safeDocument.createElement('div');
3585
3771
  slotDiv.setAttribute('slot', 'popover');
3586
3772
  slotDiv.className = 'rte-table-dynamic-popover-content';
@@ -3607,6 +3793,28 @@ class TableDynamicPopoverRenderer extends TablePopoverBaseRenderer {
3607
3793
  return popover;
3608
3794
  }
3609
3795
  }
3796
+ /**
3797
+ * Whether the given event originated inside the properties dialog subtree (either the table or the
3798
+ * cell properties form).
3799
+ *
3800
+ * @param {Event} event - The event to test.
3801
+ * @returns {boolean} `true` when an active form is rendered and the event's composed path includes it.
3802
+ */
3803
+ isEventWithinPopover(event) {
3804
+ const path = event.composedPath();
3805
+ return ((!!this.tablePropertiesFormRef && path.includes(this.tablePropertiesFormRef)) ||
3806
+ (!!this.cellPropertiesFormRef && path.includes(this.cellPropertiesFormRef)));
3807
+ }
3808
+ /**
3809
+ * Resolves the `.rich-text-content` editor root from the current table ref so the content can be
3810
+ * made inert while the properties dialog holds keyboard/VoiceOver focus.
3811
+ *
3812
+ * @returns {Nullable<HTMLElement>} The editor content element, or `null` when it cannot be resolved.
3813
+ */
3814
+ getInertContentTarget() {
3815
+ var _a, _b, _c;
3816
+ return (_c = (_b = (_a = this.getTableRef) === null || _a === void 0 ? void 0 : _a.call(this)) === null || _b === void 0 ? void 0 : _b.closest('.rich-text-content')) !== null && _c !== void 0 ? _c : null;
3817
+ }
3610
3818
  /**
3611
3819
  * Updates the visibility of the pre-rendered content blocks based on type.
3612
3820
  *
@@ -3644,6 +3852,48 @@ class TableDynamicPopoverRenderer extends TablePopoverBaseRenderer {
3644
3852
  const extensionContext = this.getTableExtensionContext();
3645
3853
  extensionContext && (this.currentFocusNode = extensionContext.getSelectedNodes()[0]);
3646
3854
  }
3855
+ /**
3856
+ * Moves focus to the first focusable control in the active properties form so keyboard and
3857
+ * screen-reader users land inside the dialog when it opens. The first form field is the Border
3858
+ * Style select; its focusable trigger is the `.vega-input-select-container` element.
3859
+ *
3860
+ * @param {string} type - The table setting type that determines which form is visible.
3861
+ */
3862
+ focusFirstFormField(type) {
3863
+ const formRef = type === splitCellOperation.TableSettingType.TABLE ? this.tablePropertiesFormRef : this.cellPropertiesFormRef;
3864
+ if (!formRef) {
3865
+ return;
3866
+ }
3867
+ // Make the editor content inert up front so the table/cell cannot steal focus while the dialog
3868
+ // lays out. The cell form applies the selected cell's styles on open, whose async reset fires a
3869
+ // selectionchange that would otherwise re-focus the cell before we reach Border Style. Inert also
3870
+ // gives VoiceOver no cell-caret text context, so its cursor follows the focus. Lifted on hide.
3871
+ this.setEditorContentInert(true);
3872
+ // The CELL form applies the selected cell's styles on open (it sets both `styleMap` and
3873
+ // `defaultValue`), a heavier re-render than TABLE, so on the first open its Border Style control is
3874
+ // present but 0×0 for a frame. WebKit's VoiceOver cursor does not follow `.focus()` onto a
3875
+ // zero-area element, so defer through a double animation frame: the first schedules past the
3876
+ // popover's async reveal, the second runs after the browser has committed the layout pass that
3877
+ // sizes the control.
3878
+ requestAnimationFrame(() => {
3879
+ requestAnimationFrame(() => {
3880
+ var _a, _b, _c, _d, _e;
3881
+ const firstField = (_b = (_a = formRef.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('[data-vega-form]')) !== null && _b !== void 0 ? _b : null;
3882
+ const container = (_d = (_c = firstField === null || firstField === void 0 ? void 0 : firstField.shadowRoot) === null || _c === void 0 ? void 0 : _c.querySelector('.vega-input-select-container')) !== null && _d !== void 0 ? _d : null;
3883
+ (_e = (container !== null && container !== void 0 ? container : firstField)) === null || _e === void 0 ? void 0 : _e.focus();
3884
+ });
3885
+ });
3886
+ }
3887
+ /**
3888
+ * When the properties dialog hides after an Escape press, returns focus (and the caret) to the
3889
+ * table cell that had focus before the dialog was opened via the setting toolbar.
3890
+ */
3891
+ handleDialogHide() {
3892
+ // Lift the inert guard on the editor content synchronously, before any focus restore runs, so the
3893
+ // cell can receive focus and the editor is interactive again.
3894
+ this.setEditorContentInert(false);
3895
+ this.restoreFocusOnEscapeHide();
3896
+ }
3647
3897
  /**
3648
3898
  * Create and position an invisible anchor element whose position and size are identical to the geometry of the current multi-cell selection.
3649
3899
  * This anchor element will then be used as the target of the popup, so that the popup appears near the entire selection area.
@@ -3738,6 +3988,62 @@ class TableSettingPopoverRenderer extends TablePopoverBaseRenderer {
3738
3988
  this.tableSettingRef.selectedCells = this.getTableSelectedCells();
3739
3989
  }
3740
3990
  };
3991
+ /**
3992
+ * Hides the table setting toolbar and its dynamic popover. Used when focus leaves the table (e.g.
3993
+ * Escape moves focus from a cell back onto the table) so the contextual toolbar does not linger.
3994
+ */
3995
+ this.hide = () => {
3996
+ var _a;
3997
+ void this.tableDynamicPopover.hide();
3998
+ void ((_a = this.popoverRef) === null || _a === void 0 ? void 0 : _a.hide());
3999
+ };
4000
+ /**
4001
+ * Opens the table setting toolbar for keyboard/screen-reader users and moves focus to its first
4002
+ * enabled button. Used by the Alt+F10 shortcut so the toolbar can be reached from inside a cell
4003
+ * even when it is currently closed: it re-targets and shows the popover (the same path as a table
4004
+ * click) before deferring focus to the first enabled button.
4005
+ *
4006
+ * @param {RTETableBlock} tableBlock - The table's block data.
4007
+ * @param {() => HTMLElement} getTableRef - Getter for the table's DOM element.
4008
+ * @param {Nullable<HTMLElement>} returnCell - The cell to return focus to if the toolbar is dismissed with Escape.
4009
+ */
4010
+ this.openSettingToolbarForKeyboard = (tableBlock, getTableRef, returnCell) => {
4011
+ // Re-target and show the popover through the same path as a table click so the toolbar is
4012
+ // actually visible before focus lands on it — otherwise focus would be pushed onto a hidden
4013
+ // or stale toolbar that isn't shown.
4014
+ this.reTarget(tableBlock, getTableRef);
4015
+ void this.tableDynamicPopover.hide();
4016
+ remoteInvocationRegistry.remoteInvocationRegistry.call(domNodeSubjectObserverFactory.domNodeSubjectFactory.getSubject(this.popoverRef, vegaInternalEventId.VegaInternalPopoverUpdateTarget), getTableRef());
4017
+ void this.popoverRef.show(true);
4018
+ this.focusFirstSettingButton(returnCell);
4019
+ };
4020
+ /**
4021
+ * Moves focus to the first enabled button in the table setting toolbar. Used by the Alt+F10
4022
+ * shortcut so keyboard and screen-reader users can reach the toolbar from inside the table.
4023
+ *
4024
+ * @param {Nullable<HTMLElement>} returnCell - The cell to return focus to if the toolbar is dismissed with Escape.
4025
+ */
4026
+ this.focusFirstSettingButton = (returnCell) => {
4027
+ var _a, _b;
4028
+ // Remember the cell to return focus to if the toolbar is dismissed with Escape, and clear any
4029
+ // stale Escape recorded before the toolbar was focused.
4030
+ this.beginReturnFocusTracking(returnCell);
4031
+ // Safari VoiceOver ignores the toolbar's aria-modal and keeps driving a caret through the still
4032
+ // editable content, so on Ctrl+Opt+Right it walks the DOM caret out of the table into the editor
4033
+ // instead of staying on the toolbar. Clear the caret AND make the editor content inert so there is
4034
+ // no text context for VoiceOver to advance; the inert flag is lifted again when the toolbar hides.
4035
+ (_b = (_a = this.getTableExtensionContext()) === null || _a === void 0 ? void 0 : _a.getSelection()) === null || _b === void 0 ? void 0 : _b.removeAllRanges();
4036
+ this.setEditorContentInert(true);
4037
+ // The popover reveals its content asynchronously, so defer to the next tick to make sure
4038
+ // the setting buttons are present and focusable.
4039
+ // eslint-disable-next-line no-restricted-globals
4040
+ setTimeout(() => {
4041
+ var _a, _b, _c;
4042
+ const buttons = Array.from((_c = (_b = (_a = this.tableSettingRef) === null || _a === void 0 ? void 0 : _a.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelectorAll('.rte-table-setting-item')) !== null && _c !== void 0 ? _c : []);
4043
+ const firstEnabled = buttons.find((button) => !button.hasAttribute('disabled'));
4044
+ firstEnabled === null || firstEnabled === void 0 ? void 0 : firstEnabled.focus();
4045
+ }, 0);
4046
+ };
3741
4047
  /**
3742
4048
  * Handles setting menu click events.
3743
4049
  *
@@ -3750,11 +4056,16 @@ class TableSettingPopoverRenderer extends TablePopoverBaseRenderer {
3750
4056
  extensionContext && handler.execute(event.detail, extensionContext, this.tableBlock);
3751
4057
  if (event.detail[0] === splitCellOperation.TableSettingType.CAPTION) {
3752
4058
  this.updateTableSettingCaption();
4059
+ this.moveFocusToCaption();
3753
4060
  }
3754
4061
  }
3755
4062
  if (event.detail[0] === splitCellOperation.TableSettingType.TABLE || event.detail[0] === splitCellOperation.TableSettingType.CELL) {
4063
+ // Capture the return cell before hiding the setting popover, whose own hide handler clears
4064
+ // it, so the properties dialog can move focus into itself and restore it to the cell on
4065
+ // Escape for keyboard/screen-reader users.
4066
+ const returnCell = this.returnFocusCell;
3756
4067
  void this.popoverRef.hide();
3757
- void this.tableDynamicPopover.show(event.detail[0]);
4068
+ void this.tableDynamicPopover.show(event.detail[0], returnCell);
3758
4069
  }
3759
4070
  };
3760
4071
  /**
@@ -3762,6 +4073,17 @@ class TableSettingPopoverRenderer extends TablePopoverBaseRenderer {
3762
4073
  */
3763
4074
  this.handleTableSettingPopoverShow = () => {
3764
4075
  this.syncSelectedCells();
4076
+ this.labelSettingDialog();
4077
+ };
4078
+ /**
4079
+ * When the setting popover hides after an Escape press, returns focus (and the caret) to the
4080
+ * table cell that had focus before the toolbar was reached via Alt+F10.
4081
+ */
4082
+ this.handleTableSettingPopoverHide = () => {
4083
+ // Lift the inert guard on the editor content synchronously, before any focus restore runs, so the
4084
+ // cell (or the properties dialog) can receive focus and the editor is interactive again.
4085
+ this.setEditorContentInert(false);
4086
+ this.restoreFocusOnEscapeHide();
3765
4087
  };
3766
4088
  this.tableDynamicPopover = new TableDynamicPopoverRenderer(splitCellOperation.RTETableColorManager.getTableColors(), renderContext);
3767
4089
  }
@@ -3770,6 +4092,8 @@ class TableSettingPopoverRenderer extends TablePopoverBaseRenderer {
3770
4092
  */
3771
4093
  destroy() {
3772
4094
  this.tableDynamicPopover.destroy();
4095
+ this.setEditorContentInert(false);
4096
+ this.detachEscapeTracker();
3773
4097
  if (this.popoverContainer) {
3774
4098
  this.popoverContainer.remove();
3775
4099
  }
@@ -3790,6 +4114,10 @@ class TableSettingPopoverRenderer extends TablePopoverBaseRenderer {
3790
4114
  popover.isScreenPosition = true;
3791
4115
  popover.className = 'rte-table-setting-popover';
3792
4116
  domNodeSubjectObserverFactory.DomNodeSubjectObserverFactory.addUniqueObserverToNode(popover, vegaEventId.VegaPopoverShow, this.handleTableSettingPopoverShow);
4117
+ domNodeSubjectObserverFactory.DomNodeSubjectObserverFactory.addUniqueObserverToNode(popover, vegaEventId.VegaPopoverHide, this.handleTableSettingPopoverHide);
4118
+ // Escape inside the popover (rendered in a portal) does not bubble back to the table, so
4119
+ // observe it on the document (capture phase) to know when to return focus to the cell.
4120
+ this.attachEscapeTracker(safeDocument);
3793
4121
  const slotDiv = safeDocument.createElement('div');
3794
4122
  slotDiv.setAttribute('slot', 'popover');
3795
4123
  const tableSetting = safeDocument.createElement('vega-rich-text-table-setting');
@@ -3802,6 +4130,25 @@ class TableSettingPopoverRenderer extends TablePopoverBaseRenderer {
3802
4130
  this.tableSettingRef = tableSetting;
3803
4131
  }
3804
4132
  }
4133
+ /**
4134
+ * Whether the given event originated inside the setting toolbar subtree.
4135
+ *
4136
+ * @param {Event} event - The event to test.
4137
+ * @returns {boolean} `true` when the toolbar is rendered and the event's composed path includes it.
4138
+ */
4139
+ isEventWithinPopover(event) {
4140
+ return !!this.tableSettingRef && event.composedPath().includes(this.tableSettingRef);
4141
+ }
4142
+ /**
4143
+ * Resolves the `.rich-text-content` editor root from the setting toolbar's target so the content
4144
+ * can be made inert while the toolbar holds keyboard/VoiceOver focus.
4145
+ *
4146
+ * @returns {Nullable<HTMLElement>} The editor content element, or `null` when it cannot be resolved.
4147
+ */
4148
+ getInertContentTarget() {
4149
+ var _a, _b, _c;
4150
+ return (_c = (_b = (_a = this.tableSettingRef) === null || _a === void 0 ? void 0 : _a.target) === null || _b === void 0 ? void 0 : _b.closest('.rich-text-content')) !== null && _c !== void 0 ? _c : null;
4151
+ }
3805
4152
  /**
3806
4153
  * Updates the table setting component caption state to match the current table data.
3807
4154
  */
@@ -3811,6 +4158,35 @@ class TableSettingPopoverRenderer extends TablePopoverBaseRenderer {
3811
4158
  this.tableSettingRef.hasCaption = hasCaption;
3812
4159
  }
3813
4160
  }
4161
+ /**
4162
+ * When the caption is toggled on, moves keyboard/VoiceOver focus and the caret into the caption so
4163
+ * the user lands in it to start typing. The setting toolbar is opened as inert-guarded for
4164
+ * keyboard/screen-reader users, so lift that guard first; the caption is re-rendered by the toggle,
4165
+ * so defer the focus to the next tick when the `<caption>` element exists.
4166
+ */
4167
+ moveFocusToCaption() {
4168
+ if (!this.tableBlock.hasCaption()) {
4169
+ return;
4170
+ }
4171
+ this.setEditorContentInert(false);
4172
+ // eslint-disable-next-line no-restricted-globals
4173
+ setTimeout(() => {
4174
+ var _a, _b, _c, _d, _e, _f, _g;
4175
+ const caption = (_c = (_b = (_a = this.tableSettingRef) === null || _a === void 0 ? void 0 : _a.target) === null || _b === void 0 ? void 0 : _b.querySelector('caption')) !== null && _c !== void 0 ? _c : null;
4176
+ if (!caption) {
4177
+ return;
4178
+ }
4179
+ caption.focus();
4180
+ const selection = (_g = (_e = (_d = this.getTableExtensionContext()) === null || _d === void 0 ? void 0 : _d.getSelection()) !== null && _e !== void 0 ? _e : (_f = caption.ownerDocument) === null || _f === void 0 ? void 0 : _f.getSelection()) !== null && _g !== void 0 ? _g : null;
4181
+ if (selection) {
4182
+ const range = new Range();
4183
+ range.selectNodeContents(caption);
4184
+ range.collapse(false);
4185
+ selection.removeAllRanges();
4186
+ selection.addRange(range);
4187
+ }
4188
+ }, 0);
4189
+ }
3814
4190
  /**
3815
4191
  * Re-targets the shared popovers to the given table.
3816
4192
  *
@@ -3825,6 +4201,22 @@ class TableSettingPopoverRenderer extends TablePopoverBaseRenderer {
3825
4201
  this.tableDynamicPopover.reTarget(tableBlock, getTableRef);
3826
4202
  }
3827
4203
  }
4204
+ /**
4205
+ * `vega-popover-content-box` renders `role="dialog"` + `aria-modal="true"`, which on WebKit
4206
+ * VoiceOver confines the reading cursor to the popover. Keep those semantics so Ctrl+Opt+Arrow
4207
+ * cannot walk the VoiceOver cursor out of the toolbar past the last button (VoiceOver swallows
4208
+ * those keys, so this cannot be trapped in JS), and give the dialog an accessible name so it
4209
+ * announces "Table tools" on entry.
4210
+ */
4211
+ labelSettingDialog() {
4212
+ var _a, _b;
4213
+ const dialog = (_b = (_a = this.tableSettingRef) === null || _a === void 0 ? void 0 : _a.closest('vega-popover-content-box')) !== null && _b !== void 0 ? _b : null;
4214
+ if (dialog) {
4215
+ dialog.setAttribute('role', 'dialog');
4216
+ dialog.setAttribute('aria-modal', 'true');
4217
+ dialog.setAttribute('aria-label', 'Table tools');
4218
+ }
4219
+ }
3828
4220
  /**
3829
4221
  * Collects and returns the currently selected table cells.
3830
4222
  *
@@ -3850,7 +4242,7 @@ class RTETableBlockRenderer extends linkExtension.VegaRTEExtensionRenderer {
3850
4242
  */
3851
4243
  doRender(h, renderData, rteContext) {
3852
4244
  let tableRef;
3853
- const table = this.renderTable(h, renderData, (ref) => (tableRef = ref));
4245
+ const table = this.renderTable(h, renderData, (ref) => (tableRef = ref), rteContext);
3854
4246
  this.renderTableToolbar(rteContext);
3855
4247
  const tableAnnotation = renderData.getAnnotationByType(splitCellOperation.RTETableExtensionAnnotationTypeEnum.TABLE);
3856
4248
  const children = rteContext.editable
@@ -3874,9 +4266,16 @@ class RTETableBlockRenderer extends linkExtension.VegaRTEExtensionRenderer {
3874
4266
  }
3875
4267
  },
3876
4268
  }, [
3877
- // Add an extra div as slot container, to make sure the cursor can move to before/end of the table.
4269
+ // The table is a fully non-editable "widget" wrapped by a
4270
+ // `<div contenteditable="false">`: there is NO editable element wrapping the
4271
+ // table, so Chrome/VoiceOver exposes it as a real table ("table, N columns, M
4272
+ // rows") instead of flattening it into the surrounding text entry area. The
4273
+ // <table> stays a plain, semantically clean table and each cell re-enables editing
4274
+ // via contentEditable=true. The cursor moves to before/after the table via the
4275
+ // adjacent paragraphs in the editor content, treating the table as an atomic widget.
3878
4276
  h('div', {
3879
- contentEditable: true,
4277
+ class: 'v-rte--extension-table-widget',
4278
+ contentEditable: false,
3880
4279
  ref: this.useRef(renderData),
3881
4280
  }, [table]),
3882
4281
  ]),
@@ -3890,6 +4289,11 @@ class RTETableBlockRenderer extends linkExtension.VegaRTEExtensionRenderer {
3890
4289
  }
3891
4290
  const result = h('div', {
3892
4291
  class: 'v-rte--extension-table-container',
4292
+ // The container is `display: table` (for shrink-to-fit centering), which WebKit maps to an
4293
+ // AXTable. Without this, Safari VoiceOver lands its cursor on the container (or groups up to
4294
+ // the widget host) instead of the real `<table>`. `role="presentation"` strips the container's
4295
+ // implicit table semantics so VO descends to `table.v-rte--extension-table` like Chrome does.
4296
+ role: 'presentation',
3893
4297
  style: Object.assign({}, containerStyle),
3894
4298
  }, children);
3895
4299
  /**
@@ -3918,17 +4322,151 @@ class RTETableBlockRenderer extends linkExtension.VegaRTEExtensionRenderer {
3918
4322
  * @param {VegaRTECreateElementFunction} h - The create element function.
3919
4323
  * @param {RTETableBlock} renderData - The table block to render.
3920
4324
  * @param {(ref: HTMLElement) => HTMLElement} setTableRef - Set table ref to tableRef
4325
+ * @param {RTERenderContext} rteContext - The rendering context of the rich text editor.
3921
4326
  * @returns {VegaRTERenderResult} - The rendered table element.
3922
4327
  */
3923
- renderTable(h, renderData, setTableRef) {
4328
+ renderTable(h, renderData, setTableRef, rteContext) {
3924
4329
  var _a;
3925
- return h('table', Object.assign(Object.assign({ key: renderData.id }, (_a = renderData.getCustomAttributesAnnotation()) === null || _a === void 0 ? void 0 : _a.render()), { style: renderData.getStyles(), class: renderData.getClasses(),
4330
+ const editable = !!rteContext.editable;
4331
+ return h('table', Object.assign(Object.assign(Object.assign(Object.assign({ key: renderData.id }, (_a = renderData.getCustomAttributesAnnotation()) === null || _a === void 0 ? void 0 : _a.render()), { style: renderData.getStyles(), class: renderData.getClasses() }), (editable
4332
+ ? {
4333
+ // eslint-disable-next-line jsdoc/require-jsdoc
4334
+ onClick: (event) => this.handleTableActivate(event, rteContext),
4335
+ // eslint-disable-next-line jsdoc/require-jsdoc
4336
+ onKeyDown: (event) => this.handleTableKeyDown(event, rteContext, renderData),
4337
+ }
4338
+ : undefined)), {
3926
4339
  // eslint-disable-next-line jsdoc/require-jsdoc
3927
4340
  ref: (ref) => {
3928
4341
  this.useRef(renderData)(ref);
3929
4342
  setTableRef(ref);
3930
4343
  } }));
3931
4344
  }
4345
+ /**
4346
+ * Handles activation of the table itself (e.g. VoiceOver Ctrl+Option+Space, which dispatches a
4347
+ * click on the focused table) by moving focus into the first cell so the user can start editing.
4348
+ *
4349
+ * @param {MouseEvent} event - The click event dispatched on the table.
4350
+ * @param {RTERenderContext} rteContext - The rendering context of the rich text editor.
4351
+ */
4352
+ handleTableActivate(event, rteContext) {
4353
+ const tableRef = event.currentTarget;
4354
+ // Only treat this as "activate the table" when the click truly targets the table element
4355
+ // itself — i.e. VoiceOver Ctrl+Option+Space (which dispatches a click on the focused table)
4356
+ // or a click on the table's own padding/border. Clicks that bubble up from editable
4357
+ // descendants (cells, or the supported <caption>) keep their native contentEditable caret
4358
+ // placement, so we must not force focus into the first cell and break that interaction.
4359
+ if (event.target !== event.currentTarget) {
4360
+ return;
4361
+ }
4362
+ this.focusFirstCell(tableRef, rteContext);
4363
+ }
4364
+ /**
4365
+ * Handles table-scoped keyboard shortcuts while focus is inside the table:
4366
+ * - Alt+F10 opens the table setting toolbar (re-targeting and showing it when needed) and moves
4367
+ * focus to it (the common "focus the contextual toolbar" shortcut), so keyboard/screen-reader
4368
+ * users can reach the toolbar buttons even when it is currently closed.
4369
+ * - Escape moves focus back onto the table, so the caret leaves the cell (its focus highlight
4370
+ * is cleared), the contextual setting toolbar is dismissed, and screen readers announce the
4371
+ * table again.
4372
+ *
4373
+ * @param {KeyboardEvent} event - The keydown event.
4374
+ * @param {RTERenderContext} rteContext - The rendering context of the rich text editor.
4375
+ * @param {RTETableBlock} renderData - The table block being rendered.
4376
+ */
4377
+ handleTableKeyDown(event, rteContext, renderData) {
4378
+ var _a, _b;
4379
+ if (event.altKey && event.key === 'F10') {
4380
+ event.preventDefault();
4381
+ event.stopPropagation();
4382
+ const tableRef = event.currentTarget;
4383
+ const f10Target = event.target;
4384
+ const f10Cell = f10Target
4385
+ ? f10Target.closest('td, th')
4386
+ : null;
4387
+ (_a = this.tableToolbar) === null || _a === void 0 ? void 0 : _a.openSettingToolbarForKeyboard(renderData, () => tableRef, f10Cell);
4388
+ return;
4389
+ }
4390
+ if (event.key !== 'Escape') {
4391
+ return;
4392
+ }
4393
+ const tableRef = event.currentTarget;
4394
+ const target = event.target;
4395
+ const cell = target
4396
+ ? target.closest('td, th')
4397
+ : null;
4398
+ if (!cell || !tableRef.contains(cell)) {
4399
+ return;
4400
+ }
4401
+ event.preventDefault();
4402
+ event.stopPropagation();
4403
+ this.focusTable(tableRef, rteContext);
4404
+ // Focus moved from the cell back onto the table, so dismiss the contextual setting toolbar
4405
+ // that may have been opened (e.g. by activating the table) — otherwise it lingers with no
4406
+ // focused cell to act on.
4407
+ (_b = this.tableToolbar) === null || _b === void 0 ? void 0 : _b.hide();
4408
+ }
4409
+ /**
4410
+ * Moves focus (and the caret) into the first cell of the table.
4411
+ *
4412
+ * @param {HTMLElement} tableRef - The table element.
4413
+ * @param {RTERenderContext} rteContext - The rendering context of the rich text editor.
4414
+ */
4415
+ focusFirstCell(tableRef, rteContext) {
4416
+ const firstCell = tableRef.querySelector('td, th');
4417
+ if (!firstCell) {
4418
+ return;
4419
+ }
4420
+ firstCell.focus();
4421
+ const selection = this.getSelection(rteContext, tableRef);
4422
+ if (selection) {
4423
+ // Collapse the caret at the start of the cell content so the user can start typing.
4424
+ const range = new Range();
4425
+ range.setStart(firstCell, 0);
4426
+ range.setEnd(firstCell, 0);
4427
+ selection.removeAllRanges();
4428
+ selection.addRange(range);
4429
+ }
4430
+ }
4431
+ /**
4432
+ * Moves focus onto the table element and clears any cell caret and selection highlight.
4433
+ *
4434
+ * @param {HTMLElement} tableRef - The table element.
4435
+ * @param {RTERenderContext} rteContext - The rendering context of the rich text editor.
4436
+ */
4437
+ focusTable(tableRef, rteContext) {
4438
+ var _a;
4439
+ const selection = this.getSelection(rteContext, tableRef);
4440
+ selection === null || selection === void 0 ? void 0 : selection.removeAllRanges();
4441
+ const extensionContext = this.getExtensionContext(rteContext.host);
4442
+ (_a = extensionContext === null || extensionContext === void 0 ? void 0 : extensionContext.tableSelection) === null || _a === void 0 ? void 0 : _a.setSelectedCells([]);
4443
+ // The table is contentEditable=false, so it is not focusable by default. Add tabindex ONLY
4444
+ // while moving focus onto it, and remove it again on blur, so that during normal navigation
4445
+ // VoiceOver still announces it as "table, N columns, M rows" rather than a focusable widget.
4446
+ tableRef.setAttribute('tabindex', '-1');
4447
+ // eslint-disable-next-line jsdoc/require-jsdoc
4448
+ const removeTabindex = () => {
4449
+ tableRef.removeAttribute('tabindex');
4450
+ tableRef.removeEventListener('blur', removeTabindex);
4451
+ };
4452
+ tableRef.addEventListener('blur', removeTabindex);
4453
+ tableRef.focus();
4454
+ }
4455
+ /**
4456
+ * Resolves the editor selection, preferring the shadow-aware selection from the extension
4457
+ * context and falling back to the table's owning document.
4458
+ *
4459
+ * @param {RTERenderContext} rteContext - The rendering context of the rich text editor.
4460
+ * @param {HTMLElement} tableRef - The table element.
4461
+ * @returns {Nullable<Selection>} - The resolved selection, or null when unavailable.
4462
+ */
4463
+ getSelection(rteContext, tableRef) {
4464
+ const extensionContext = this.getExtensionContext(rteContext.host);
4465
+ if (extensionContext) {
4466
+ return extensionContext.getSelection();
4467
+ }
4468
+ return tableRef.ownerDocument ? tableRef.ownerDocument.getSelection() : null;
4469
+ }
3932
4470
  /**
3933
4471
  * Handles the removal of the table block.
3934
4472
  *
@@ -4031,9 +4569,9 @@ class RTETableCellRenderer extends linkExtension.VegaRTEExtensionRenderer {
4031
4569
  */
4032
4570
  renderByCellType(h, renderData, rteContext, elementType) {
4033
4571
  var _a;
4034
- return h(elementType, Object.assign(Object.assign(Object.assign({ key: `${renderData.id}-${elementType}`,
4572
+ return h(elementType, Object.assign(Object.assign(Object.assign(Object.assign({ key: `${renderData.id}-${elementType}`,
4035
4573
  // eslint-disable-next-line jsdoc/require-jsdoc
4036
- ref: this.useRef(renderData) }, (_a = renderData.getCustomAttributesAnnotation()) === null || _a === void 0 ? void 0 : _a.render()), { style: renderData.getStyles(rteContext), class: renderData.getClasses() }), (rteContext.editable ? this.onSelectionListeners(renderData, rteContext) : undefined)));
4574
+ ref: this.useRef(renderData) }, (rteContext.editable ? { contentEditable: true, tabindex: -1 } : undefined)), (_a = renderData.getCustomAttributesAnnotation()) === null || _a === void 0 ? void 0 : _a.render()), { style: renderData.getStyles(rteContext), class: renderData.getClasses() }), (rteContext.editable ? this.onSelectionListeners(renderData, rteContext) : undefined)));
4037
4575
  }
4038
4576
  /**
4039
4577
  * Returns the mouse event listeners for selection handling.
@@ -4312,6 +4850,7 @@ class RTETableToolbarButtonRenderer extends VegaRTEToolbarButtonRenderer {
4312
4850
  return createTablePopoverRenderer.render(h, super.renderButton(h, editorContext, {
4313
4851
  showArrowIcon: true,
4314
4852
  icon: 'rte-table',
4853
+ ariaLabel: 'Table',
4315
4854
  tooltip: { text: 'Insert table' },
4316
4855
  }));
4317
4856
  }
@@ -4492,16 +5031,10 @@ class RTETableCaptionRenderer extends linkExtension.VegaRTEExtensionRenderer {
4492
5031
  /**
4493
5032
  * @inheritDoc
4494
5033
  */
4495
- doRender(h, renderData) {
4496
- return h('caption', {
4497
- 'key': renderData.id,
4498
- 'ref': this.useRef(renderData),
4499
- 'style': renderData.getStyles(),
4500
- 'class': [renderData.getClasses(), renderData.isNotEmpty() ? null : 'showPlaceholder']
5034
+ doRender(h, renderData, rteContext) {
5035
+ return h('caption', Object.assign(Object.assign({ 'key': renderData.id, 'ref': this.useRef(renderData) }, (rteContext.editable ? { contentEditable: true } : undefined)), { 'style': renderData.getStyles(), 'class': [renderData.getClasses(), renderData.isNotEmpty() ? null : 'showPlaceholder']
4501
5036
  .filter(typeGuard.isNonNullable)
4502
- .join(' '),
4503
- 'data-placeholder': TABLE_CAPTION_PLACEHOLDER_TEXT,
4504
- });
5037
+ .join(' '), 'data-placeholder': TABLE_CAPTION_PLACEHOLDER_TEXT }));
4505
5038
  }
4506
5039
  }
4507
5040
 
@@ -5297,11 +5830,36 @@ class RTETableSelection {
5297
5830
  const commonAncestorContainer = range.commonAncestorContainer;
5298
5831
  const rangeInTable = !!ui.findParent(commonAncestorContainer, `table`);
5299
5832
  if (rangeInTable) {
5300
- const selectedCells = this.filterSelectedCell(range, commonAncestorContainer);
5833
+ let selectedCells = this.filterSelectedCell(range, commonAncestorContainer);
5834
+ if (selectedCells.length === 0) {
5835
+ // A collapsed caret placed at an element boundary (e.g. keyboard/VoiceOver entry via
5836
+ // Ctrl+Option+Space) does not intersect a text node, so filterSelectedCell finds nothing
5837
+ // on browsers that keep the caret on the element (Firefox) instead of normalizing it into
5838
+ // the text node (Chrome). Resolve the containing cell directly so the setting toolbar is
5839
+ // still enabled.
5840
+ selectedCells = this.resolveCaretCell(commonAncestorContainer);
5841
+ }
5301
5842
  this.setSelectedCells(selectedCells);
5302
5843
  }
5303
5844
  }
5304
5845
  }
5846
+ /**
5847
+ * Resolve the single table cell that contains the given selection node. Used as a fallback when a
5848
+ * collapsed caret does not intersect any text node (see handleSelectionChange).
5849
+ *
5850
+ * @param {Node} node - The selection's common ancestor container.
5851
+ * @returns {RTETableCellBlock[]} The containing cell block, or an empty list when none is found.
5852
+ */
5853
+ resolveCaretCell(node) {
5854
+ var _a;
5855
+ const startElement = node.nodeType === Node.TEXT_NODE ? node.parentElement : node;
5856
+ const cellRef = (_a = startElement === null || startElement === void 0 ? void 0 : startElement.closest('td, th')) !== null && _a !== void 0 ? _a : null;
5857
+ if (!cellRef) {
5858
+ return [];
5859
+ }
5860
+ const cellBlock = codeBlock.stateEntityRenderingRegistry.getEntityByDOM(cellRef);
5861
+ return cellBlock ? [cellBlock] : [];
5862
+ }
5305
5863
  /**
5306
5864
  * Mark the beginning of a drag operation.
5307
5865
  */
@@ -7870,6 +8428,7 @@ class RTEHorizontalLineToolbarButtonRenderer extends VegaRTEToolbarButtonRendere
7870
8428
  render(createElement, editorContext) {
7871
8429
  return this.renderButton(createElement, editorContext, {
7872
8430
  icon: 'horizontal-line',
8431
+ ariaLabel: internalTranslationController.VegaInternalTranslation.t('Horizontal line'),
7873
8432
  tooltip: { text: internalTranslationController.VegaInternalTranslation.t('Horizontal line') },
7874
8433
  });
7875
8434
  }
@@ -8465,6 +9024,7 @@ class RTEBlockquoteToolbarButtonRenderer extends VegaRTEToolbarButtonRenderer {
8465
9024
  render(createElement, editorContext) {
8466
9025
  return this.renderButton(createElement, editorContext, {
8467
9026
  icon: 'quote-left',
9027
+ ariaLabel: editorContext.translation.t('Block quote'),
8468
9028
  tooltip: { text: 'Block quote' },
8469
9029
  });
8470
9030
  }
@@ -9097,6 +9657,7 @@ class RTESpecialCharactersToolbarButtonRenderer extends VegaRTEToolbarButtonRend
9097
9657
  placement: 'bottom',
9098
9658
  showArrow: false,
9099
9659
  isScreenPosition: true,
9660
+ role: 'presentation',
9100
9661
  // eslint-disable-next-line jsdoc/require-jsdoc
9101
9662
  ref: (ref) => {
9102
9663
  if (ref) {
@@ -9124,6 +9685,7 @@ class RTESpecialCharactersToolbarButtonRenderer extends VegaRTEToolbarButtonRend
9124
9685
  ]),
9125
9686
  h('div', { slot: 'popover-content' }, this.renderButton(h, editorContext, {
9126
9687
  icon: 'rte-special-characters',
9688
+ ariaLabel: editorContext.translation.t('Special Characters'),
9127
9689
  tooltip: { text: 'Special Characters' },
9128
9690
  })),
9129
9691
  ]);
@@ -10337,14 +10899,22 @@ class FindReplaceToolbarButtonRenderer extends VegaRTEToolbarButtonRenderer {
10337
10899
  placement: 'bottom',
10338
10900
  showArrow: false,
10339
10901
  isScreenPosition: true,
10902
+ role: 'presentation',
10340
10903
  // eslint-disable-next-line jsdoc/require-jsdoc
10341
10904
  ref: (ref) => {
10342
10905
  if (ref) {
10343
10906
  this.popoverRef = ref;
10344
10907
  domNodeSubjectObserverFactory.DomNodeSubjectObserverFactory.addUniqueObserverToNode(ref, vegaEventId.VegaPopoverHide, () => {
10908
+ const shouldRestoreFocus = this.shouldRestoreFocusToButton();
10345
10909
  this.isPopoverOpen = false;
10346
10910
  this.findController.clear();
10347
10911
  this.updatePanel({ current: 0, total: 0 });
10912
+ if (shouldRestoreFocus) {
10913
+ // Defer so it runs after the popover's own focus-restore
10914
+ // (AriaDialogFocusableTrapSlimmer), returning focus to the toolbar
10915
+ // button for keyboard and VoiceOver users when the panel is dismissed.
10916
+ setTimeout(() => this.focusToolbarButton());
10917
+ }
10348
10918
  });
10349
10919
  domNodeSubjectObserverFactory.DomNodeSubjectObserverFactory.addUniqueObserverToNode(ref, vegaEventId.VegaPopoverShow, () => {
10350
10920
  this.isPopoverOpen = true;
@@ -10375,6 +10945,7 @@ class FindReplaceToolbarButtonRenderer extends VegaRTEToolbarButtonRenderer {
10375
10945
  ]),
10376
10946
  h('div', { slot: 'popover-content' }, this.renderButton(h, editorContext, {
10377
10947
  icon: 'rte-find-replace',
10948
+ ariaLabel: editorContext.translation.t('Find and replace'),
10378
10949
  tooltip: { text: internalTranslationController.VegaInternalTranslation.t('Find and replace') },
10379
10950
  })),
10380
10951
  ]);
@@ -10477,6 +11048,47 @@ class FindReplaceToolbarButtonRenderer extends VegaRTEToolbarButtonRenderer {
10477
11048
  void this.popoverRef.hide();
10478
11049
  }
10479
11050
  }
11051
+ /**
11052
+ * Decides whether closing the panel should return focus to the toolbar button.
11053
+ *
11054
+ * Focus is restored when the panel is dismissed while focus is still inside it
11055
+ * (Escape key or the Close button) — including the VoiceOver case where the
11056
+ * dialog's `inert` blur has already moved focus to `<body>`. It is not restored
11057
+ * when focus has intentionally moved to another element (Tab out of the panel
11058
+ * or interacting with something else), so we don't yank focus back.
11059
+ *
11060
+ * @returns {boolean} True when focus should return to the toolbar button.
11061
+ */
11062
+ shouldRestoreFocusToButton() {
11063
+ // eslint-disable-next-line no-restricted-globals
11064
+ const activeEl = ui.getDeepActiveElementInShadow(document, true);
11065
+ // eslint-disable-next-line no-restricted-globals
11066
+ return !activeEl || activeEl === document.body || this.isElementWithinPanel(activeEl);
11067
+ }
11068
+ /**
11069
+ * Checks whether an element is inside the panel, crossing shadow boundaries.
11070
+ *
11071
+ * @param {Nullable<HTMLElement>} el - The element to test.
11072
+ * @returns {boolean} True when the element is contained by the panel.
11073
+ */
11074
+ isElementWithinPanel(el) {
11075
+ if (!el || !this.panelRef) {
11076
+ return false;
11077
+ }
11078
+ let node = el;
11079
+ while (node) {
11080
+ if (node === this.panelRef) {
11081
+ return true;
11082
+ }
11083
+ const parent = node.parentNode;
11084
+ // Cross shadow boundaries: a shadow root (nodeType 11) exposes its `host`.
11085
+ node =
11086
+ parent && parent.nodeType === Node.DOCUMENT_FRAGMENT_NODE
11087
+ ? parent.host
11088
+ : parent;
11089
+ }
11090
+ return false;
11091
+ }
10480
11092
  }
10481
11093
  (() => {
10482
11094
  internalIconManager.VegaInternalIconManager.register({ 'rte-find-replace': findReplaceIcon });
@@ -10638,12 +11250,28 @@ class RTELineHeightToolbarButtonRenderer extends VegaRTEToolbarButtonRenderer {
10638
11250
  }, [
10639
11251
  this.renderButton(createElement, editorContext, {
10640
11252
  icon: 'line-height',
11253
+ ariaLabel: editorContext.translation.t('Line Height'),
10641
11254
  showArrowIcon: true,
10642
11255
  tooltip: { text: internalTranslationController.VegaInternalTranslation.t('Line Height') },
10643
11256
  }),
10644
11257
  this.renderDropdownListTemplate(createElement, dropdownItems, editorContext),
10645
11258
  ]);
10646
11259
  }
11260
+ /**
11261
+ * Renders each line-height option with its label as light-DOM children rather than the
11262
+ * `label` prop. This gives the focusable menuitem a light-DOM text anchor so Safari
11263
+ * VoiceOver's reading cursor follows focus into the item (Ctrl+Opt+Right walks item→item
11264
+ * instead of escaping to the next toolbar button).
11265
+ *
11266
+ * The label is wrapped in a `<span>` (not a bare text node) so a click targeting the label
11267
+ * lands on a slotted element that composes into the item's shadow `<li>`; a bare text node
11268
+ * resolves to the `vega-dropdown-item` host, whose click never reaches the shadow handler.
11269
+ *
11270
+ * @inheritDoc
11271
+ */
11272
+ renderDropdownItem(h, item, editorContext) {
11273
+ return h('vega-dropdown-item', { key: item.key, itemKey: item.key, prefixIcon: item.icon }, h('span', undefined, editorContext.translation.t(item.label)));
11274
+ }
10647
11275
  /**
10648
11276
  * @inheritDoc
10649
11277
  */
@@ -10945,6 +11573,9 @@ class RTEFullscreenToolbarButtonRenderer extends VegaRTEToolbarButtonRenderer {
10945
11573
  const selected = this.isSelected();
10946
11574
  return this.renderButton(createElement, editorContext, {
10947
11575
  icon: selected ? 'rte-fullscreen-exit' : 'rte-fullscreen-enter',
11576
+ ariaLabel: selected
11577
+ ? editorContext.translation.t('Exit fullscreen mode')
11578
+ : editorContext.translation.t('Enter fullscreen mode'),
10948
11579
  tooltip: {
10949
11580
  text: selected
10950
11581
  ? internalTranslationController.VegaInternalTranslation.t('Exit fullscreen mode')
@@ -14433,6 +15064,7 @@ class RTECopyToolbarButtonRenderer extends VegaRTEToolbarButtonRenderer {
14433
15064
  render(h, editorContext) {
14434
15065
  return this.renderButton(h, editorContext, {
14435
15066
  icon: 'rte-copy',
15067
+ ariaLabel: editorContext.translation.t('Copy'),
14436
15068
  tooltip: { text: 'Copy' },
14437
15069
  });
14438
15070
  }
@@ -14748,6 +15380,7 @@ class RTECutToolbarButtonRenderer extends RTECopyToolbarButtonRenderer {
14748
15380
  render(h, editorContext) {
14749
15381
  return this.renderButton(h, editorContext, {
14750
15382
  icon: 'rte-cut',
15383
+ ariaLabel: editorContext.translation.t('Cut'),
14751
15384
  tooltip: { text: 'Cut' },
14752
15385
  });
14753
15386
  }
@@ -14786,6 +15419,130 @@ class VegaRTECutExtension extends linkExtension.VegaRTEExtension {
14786
15419
  // The unique key for the cut toolbar button, used for registration and retrieval.
14787
15420
  VegaRTECutExtension.TOOLBAR_BUTTON_KEY = 'cut';
14788
15421
 
15422
+ /**
15423
+ * Vetoes a commit that would push the character count past the hard limit, while
15424
+ * still allowing deletions and formatting that keep or reduce the count.
15425
+ */
15426
+ class PreventHardLimitExceedInterceptor extends ActionHandlerInterceptor {
15427
+ /**
15428
+ * Intercept when the candidate exceeds the configured maximum. Hard-limit
15429
+ * commits are vetoed only when they increase the count.
15430
+ *
15431
+ * @param {CommitValueAction} action - the commit action carrying the candidate and previous values
15432
+ * @returns {boolean} - whether the commit should be vetoed
15433
+ */
15434
+ canIntercept(action) {
15435
+ var _a;
15436
+ const extension = (_a = action.host.extensions) === null || _a === void 0 ? void 0 : _a.find((item) => this.isWordCountExtension(item));
15437
+ if (!extension) {
15438
+ return false;
15439
+ }
15440
+ const { hardLimit, maxChars } = extension.getConfig();
15441
+ const nextContent = action.candidate.getPlainText();
15442
+ const nextCount = extension.calculateTextCount(nextContent);
15443
+ if (!typeGuard.isNonNullable(maxChars) || nextCount <= maxChars) {
15444
+ return false;
15445
+ }
15446
+ let result = false;
15447
+ let prevContent = '';
15448
+ if (hardLimit && action.previous) {
15449
+ prevContent = action.previous.getPlainText();
15450
+ result = nextCount > extension.calculateTextCount(prevContent);
15451
+ }
15452
+ this.notifyCharsLimitExceeded(nextContent, prevContent, extension, action);
15453
+ return result;
15454
+ }
15455
+ /**
15456
+ * Not invoke the origin action handle to veto the commit that would push the character count past the hard limit.
15457
+ */
15458
+ intercept() {
15459
+ }
15460
+ /**
15461
+ * Notify the consumer when the candidate exceeds the configured character limit.
15462
+ * The previous content is empty when hard limit is not enabled for the performance optimization.
15463
+ *
15464
+ * @param {string} nextContent - the candidate content string
15465
+ * @param {string} prevContent - the previous content string
15466
+ * @param {VegaRTEWordCountExtension} extension - the configured word count extension
15467
+ * @param {CommitValueAction} action - the commit action carrying the candidate value
15468
+ */
15469
+ notifyCharsLimitExceeded(nextContent, prevContent, extension, action) {
15470
+ const { maxChars, hardLimit, onCharsLimitExceeded } = extension.getConfig();
15471
+ if (typeof onCharsLimitExceeded === 'function') {
15472
+ if (!hardLimit || prevContent !== nextContent) {
15473
+ onCharsLimitExceeded(action.host, maxChars);
15474
+ }
15475
+ }
15476
+ }
15477
+ /**
15478
+ * Check if the given extension is a word count extension.
15479
+ *
15480
+ * @param {VegaRTEExtension} extension - the extension to check
15481
+ * @returns {boolean} - whether the extension is a word count extension
15482
+ */
15483
+ isWordCountExtension(extension) {
15484
+ return extension['type'] === codeBlock.RTE_WORD_COUNT_KEY;
15485
+ }
15486
+ }
15487
+
15488
+ /**
15489
+ * Default configuration applied when a word count option is not provided.
15490
+ */
15491
+ const DEFAULT_WORD_COUNT_CONFIG = {
15492
+ showCharCount: true,
15493
+ countInlineBreak: false,
15494
+ hardLimit: false,
15495
+ };
15496
+ /**
15497
+ * Rich Text Editor extension that provides character counting.
15498
+ */
15499
+ class VegaRTEWordCountExtension extends linkExtension.VegaRTEExtension {
15500
+ constructor(config = {}) {
15501
+ super();
15502
+ /**
15503
+ * Runtime discriminator used by the core to identify this extension.
15504
+ */
15505
+ this.type = codeBlock.RTE_WORD_COUNT_KEY;
15506
+ this.config = Object.assign(Object.assign({}, DEFAULT_WORD_COUNT_CONFIG), config);
15507
+ }
15508
+ /**
15509
+ * Get the extension configuration.
15510
+ *
15511
+ * @returns {ResolvedRTEWordCountConfig} The word count configuration.
15512
+ */
15513
+ getConfig() {
15514
+ return this.config;
15515
+ }
15516
+ /**
15517
+ * Compute the character count data for the given editor content.
15518
+ *
15519
+ * @param {VegaRTEContent} value - The editor content.
15520
+ * @returns {VegaRTEWordCountData} The computed character count data.
15521
+ */
15522
+ getData(value) {
15523
+ const plainText = value.getPlainText();
15524
+ const { maxChars, hardLimit } = this.config;
15525
+ const count = this.calculateTextCount(plainText);
15526
+ return { count, maxChars, hardLimit };
15527
+ }
15528
+ /**
15529
+ * Get the character count for the given content string.
15530
+ *
15531
+ * @param {string} content - The content string.
15532
+ * @returns {number} The character count.
15533
+ */
15534
+ calculateTextCount(content) {
15535
+ const { countInlineBreak } = this.config;
15536
+ const text = countInlineBreak ? content : content.replace(/\n/g, '');
15537
+ // Use the spread operator so that surrogate pairs (e.g. emoji) count as a single character.
15538
+ return [...text].length;
15539
+ }
15540
+ }
15541
+ (() => {
15542
+ // Gate over-limit commits through the shared action-interceptor pipeline.
15543
+ linkExtension.VegaRTEExtension.registerActionHandlerInterceptor(contentState.VegaRTEContent.name, contentState.COMMIT_VALUE, new PreventHardLimitExceedInterceptor());
15544
+ })();
15545
+
14789
15546
  /**
14790
15547
  * Insert a new children to the nearest position of the parent container
14791
15548
  *
@@ -14949,6 +15706,7 @@ exports.VegaRTESpecialCharactersText = VegaRTESpecialCharactersText;
14949
15706
  exports.VegaRTETableExtension = VegaRTETableExtension;
14950
15707
  exports.VegaRTETokenExtension = VegaRTETokenExtension;
14951
15708
  exports.VegaRTEToolbarButtonRenderer = VegaRTEToolbarButtonRenderer;
15709
+ exports.VegaRTEWordCountExtension = VegaRTEWordCountExtension;
14952
15710
  exports.VegaSkeletonLoader = VegaSkeletonLoader;
14953
15711
  exports.VegaTranslation = VegaTranslation;
14954
15712
  exports.VegaZIndexManager = VegaZIndexManager$1;