@heartlandone/vega 2.94.0 → 2.96.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 (381) hide show
  1. package/dist/cjs/{app-globals-d05c3410.js → app-globals-38afea36.js} +7 -7
  2. package/dist/cjs/{child-nodes-event-prevent-slimmer-e67ee84c.js → child-nodes-event-prevent-slimmer-e0ac8467.js} +1 -1
  3. package/dist/cjs/{code-block-493c7ce7.js → code-block-4126dc3b.js} +1501 -55
  4. package/dist/cjs/{component-value-history-controller-slimmer.abstract-ab21fcbf.js → component-value-history-controller-slimmer.abstract-38ba956e.js} +2 -2
  5. package/dist/cjs/{content-state-fc34a814.js → content-state-50e8a03c.js} +142 -580
  6. package/dist/cjs/{element-appender-slimmer-1d6323c2.js → element-appender-slimmer-7773fdab.js} +115 -0
  7. package/dist/cjs/{event-emit-slimmer-d234a619.js → event-emit-slimmer-34aa195e.js} +1 -1
  8. package/dist/cjs/{image-annotation-action-7c4cd316.js → image-annotation-action-89363de8.js} +2 -2
  9. package/dist/cjs/{image-extension-30a7c10f.js → image-extension-c881c454.js} +2 -2
  10. package/dist/cjs/index.cjs.js +11 -11
  11. package/dist/cjs/{internal-vega-event-manager-13c4012b.js → internal-vega-event-manager-7003c84a.js} +10 -2
  12. package/dist/cjs/{link-extension-92a63cb7.js → link-extension-b7f99a52.js} +2 -2
  13. package/dist/cjs/loader.cjs.js +9 -9
  14. package/dist/cjs/{public-rules-9e1ea1d9.js → public-rules-72894208.js} +3 -3
  15. package/dist/cjs/{range-30219330.js → range-95d41dea.js} +1 -1
  16. package/dist/cjs/{rich-text-editor-required-rule-23bf7485.js → rich-text-editor-required-rule-4d6d2493.js} +1 -1
  17. package/dist/cjs/shared-backdrop-manager-71e54fdb.js +199 -0
  18. package/dist/cjs/{split-cell-operation-43752212.js → split-cell-operation-70be116d.js} +2 -2
  19. package/dist/cjs/{token-extension-ea891d54.js → token-extension-eb828948.js} +36 -12
  20. package/dist/cjs/vega-accordion.cjs.entry.js +2 -2
  21. package/dist/cjs/vega-app-footer.cjs.entry.js +2 -2
  22. package/dist/cjs/vega-app-header-button.cjs.entry.js +3 -3
  23. package/dist/cjs/vega-banner.cjs.entry.js +2 -2
  24. package/dist/cjs/vega-breadcrumb.cjs.entry.js +3 -3
  25. package/dist/cjs/vega-button-circle.cjs.entry.js +3 -3
  26. package/dist/cjs/vega-button-group_2.cjs.entry.js +3 -3
  27. package/dist/cjs/vega-button-link.cjs.entry.js +3 -3
  28. package/dist/cjs/vega-button.cjs.entry.js +3 -3
  29. package/dist/cjs/vega-calendar_5.cjs.entry.js +3 -3
  30. package/dist/cjs/vega-carousel.cjs.entry.js +2 -2
  31. package/dist/cjs/vega-checkbox_2.cjs.entry.js +3 -3
  32. package/dist/cjs/vega-chip.cjs.entry.js +3 -3
  33. package/dist/cjs/vega-code-block.cjs.entry.js +6 -6
  34. package/dist/cjs/vega-color-picker.cjs.entry.js +2 -2
  35. package/dist/cjs/vega-color-swatch-picker.cjs.entry.js +3 -3
  36. package/dist/cjs/vega-color-swatch.cjs.entry.js +2 -2
  37. package/dist/cjs/vega-combo-box.cjs.entry.js +22 -4
  38. package/dist/cjs/vega-date-picker_2.cjs.entry.js +4 -4
  39. package/dist/cjs/vega-dialog_2.cjs.entry.js +160 -70
  40. package/dist/cjs/vega-dropdown_5.cjs.entry.js +41 -13
  41. package/dist/cjs/vega-env-manager-23b8b23c.js +2 -2
  42. package/dist/cjs/vega-field-label.cjs.entry.js +2 -2
  43. package/dist/cjs/vega-file-uploader.cjs.entry.js +2 -2
  44. package/dist/cjs/vega-form.cjs.entry.js +3 -3
  45. package/dist/cjs/vega-image-uploader.cjs.entry.js +3 -3
  46. package/dist/cjs/vega-input-credit-card.cjs.entry.js +3 -3
  47. package/dist/cjs/vega-input-numeric.cjs.entry.js +3 -3
  48. package/dist/cjs/vega-input-passcode.cjs.entry.js +3 -3
  49. package/dist/cjs/vega-input-phone-number.cjs.entry.js +3 -3
  50. package/dist/cjs/vega-input-range.cjs.entry.js +3 -3
  51. package/dist/cjs/vega-input-select.cjs.entry.js +54 -5
  52. package/dist/cjs/vega-input.cjs.entry.js +2 -2
  53. package/dist/cjs/vega-item-toggle.cjs.entry.js +2 -2
  54. package/dist/cjs/vega-left-nav_5.cjs.entry.js +32 -193
  55. package/dist/cjs/vega-pagination-page-selector-mobile.cjs.entry.js +2 -2
  56. package/dist/cjs/vega-pagination.cjs.entry.js +3 -3
  57. package/dist/cjs/vega-popover_2.cjs.entry.js +3 -3
  58. package/dist/cjs/vega-progress-tracker_2.cjs.entry.js +13 -3
  59. package/dist/cjs/vega-radio_2.cjs.entry.js +3 -3
  60. package/dist/cjs/vega-rich-text-content.cjs.entry.js +58 -9
  61. package/dist/cjs/vega-rich-text-editor_4.cjs.entry.js +611 -93
  62. package/dist/cjs/vega-rich-text-find-replace-panel.cjs.entry.js +2 -2
  63. package/dist/cjs/vega-rich-text-special-characters-panel.cjs.entry.js +2 -2
  64. package/dist/cjs/vega-rich-text-table-properties_3.cjs.entry.js +5 -5
  65. package/dist/cjs/vega-section-title.cjs.entry.js +896 -14
  66. package/dist/cjs/vega-segment-control.cjs.entry.js +2 -2
  67. package/dist/cjs/vega-selection-chip_2.cjs.entry.js +3 -3
  68. package/dist/cjs/vega-selection-tile_2.cjs.entry.js +3 -3
  69. package/dist/cjs/vega-sidenav_3.cjs.entry.js +2 -2
  70. package/dist/cjs/vega-signature-capture.cjs.entry.js +2 -2
  71. package/dist/cjs/vega-stepper.cjs.entry.js +3 -3
  72. package/dist/cjs/vega-tab-group_2.cjs.entry.js +3 -3
  73. package/dist/cjs/vega-table_11.cjs.entry.js +3 -3
  74. package/dist/cjs/vega-textarea.cjs.entry.js +3 -3
  75. package/dist/cjs/vega-time-picker_2.cjs.entry.js +4 -4
  76. package/dist/cjs/vega-toggle-switch.cjs.entry.js +2 -2
  77. package/dist/cjs/vega-tooltip_2.cjs.entry.js +1 -1
  78. package/dist/cjs/vega.cjs.js +9 -9
  79. package/dist/collection/components/vega-combo-box/slimmers/renderers/vega-combo-box-dropdown-renderer.js +5 -1
  80. package/dist/collection/components/vega-combo-box/vega-combo-box.js +52 -1
  81. package/dist/collection/components/vega-dialog/vega-dialog.js +1 -1
  82. package/dist/collection/components/vega-dropdown/slimmers/controllers/vega-dropdown-render-mode-controller.js +7 -6
  83. package/dist/collection/components/vega-dropdown/vega-dropdown.js +36 -8
  84. package/dist/collection/components/vega-input-select/slimmers/controllers/vega-input-select-dropdown-controller.js +11 -1
  85. package/dist/collection/components/vega-input-select/slimmers/controllers/vega-input-select-items-slot-controler.js +23 -2
  86. package/dist/collection/components/vega-input-select/slimmers/renderers/vega-input-select-dropdown-renderer.js +4 -0
  87. package/dist/collection/components/vega-input-select/vega-input-select.js +53 -2
  88. package/dist/collection/components/vega-modal/slimmers/controllers/vega-modal-backdrop-manager.js +141 -0
  89. package/dist/collection/components/vega-modal/slimmers/controllers/vega-modal-open-state-controller.js +10 -17
  90. package/dist/collection/components/vega-modal/slimmers/controllers/vega-modal-z-index-controller.js +2 -2
  91. package/dist/collection/components/vega-modal/slimmers/renderers/vega-modal-renderer.js +3 -2
  92. package/dist/collection/components/vega-modal/vega-modal.js +77 -8
  93. package/dist/collection/components/vega-progress-tracker/slimmers/controllers/vega-progress-tracker-current-steps-controller.js +7 -0
  94. package/dist/collection/components/vega-progress-tracker/vega-progress-tracker.js +6 -0
  95. package/dist/collection/components/vega-rich-text-content/vega-rich-text-content.css +4 -0
  96. package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/block-delete-node-content-strategy.js +29 -0
  97. package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/block-delete-text-or-decorator-node-strategy.js +10 -1
  98. package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/block-transform-to-list-strategy.js +8 -3
  99. package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/list-annotation-strategy.abstract.js +60 -0
  100. package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/list-item-replace-nest-list-strategy.js +36 -4
  101. package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/list-items-strategy.abstract.js +27 -0
  102. package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/list-nest-items-strategy.js +74 -0
  103. package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/list-remove-list-item-strategy.js +81 -1
  104. package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/list-transform-selection.js +30 -0
  105. package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/list-transform-to-list-strategy.js +160 -9
  106. package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/list-transform-to-paragraph-strategy.js +376 -10
  107. package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/list-unnest-items-strategy.js +104 -0
  108. package/dist/collection/components/vega-rich-text-editor/dto/actions/modify-content-action.abstract.js +2 -0
  109. package/dist/collection/components/vega-rich-text-editor/dto/actions/nest-list-items-action.js +12 -0
  110. package/dist/collection/components/vega-rich-text-editor/dto/actions/unnest-list-items-action.js +12 -0
  111. package/dist/collection/components/vega-rich-text-editor/dto/annotations/list-annotation.js +12 -0
  112. package/dist/collection/components/vega-rich-text-editor/dto/blocks/list-block.js +10 -1
  113. package/dist/collection/components/vega-rich-text-editor/dto/blocks/list-item-block.js +11 -3
  114. package/dist/collection/components/vega-rich-text-editor/dto/content-state.js +7 -1
  115. package/dist/collection/components/vega-rich-text-editor/dto/filter-styles-strategies/list-block/list-block-filter-styles-strategy.js +8 -4
  116. package/dist/collection/components/vega-rich-text-editor/dto/renderers/blocks/list-block-renderer.js +34 -1
  117. package/dist/collection/components/vega-rich-text-editor/dto/renderers/blocks/list-item-block-renderer.js +20 -3
  118. package/dist/collection/components/vega-rich-text-editor/extensions/table/annotation-handler/table-annotation-handler-base.js +25 -1
  119. package/dist/collection/components/vega-rich-text-editor/slimmers/controllers/helper/element-to-dto-strategy/li-to-rte-list-item-block-strategy.js +2 -0
  120. package/dist/collection/components/vega-rich-text-editor/slimmers/controllers/helper/input-event-handler/abstract-delete-content-handler.js +29 -0
  121. package/dist/collection/components/vega-rich-text-editor/slimmers/renderers/tools/bullets-numbers/bullets-numbers-toolbar-button-slimmer.js +30 -1
  122. package/dist/collection/components/vega-rich-text-editor/slimmers/renderers/tools/bullets-numbers/helper/abstract-list-keyboard-handler.js +204 -0
  123. package/dist/collection/components/vega-rich-text-editor/slimmers/renderers/tools/bullets-numbers/helper/list-shift-tab-outdent-handler.js +42 -0
  124. package/dist/collection/components/vega-rich-text-editor/slimmers/renderers/tools/bullets-numbers/helper/list-tab-indent-handler.js +34 -0
  125. package/dist/collection/components/vega-rich-text-editor/slimmers/renderers/tools/bullets-numbers/list-keyboard-slimmer.js +180 -0
  126. package/dist/collection/components/vega-section-title/slimmers/a11y-tree/build-section-title-a11y-tree.js +54 -0
  127. package/dist/collection/components/vega-section-title/slimmers/renderers/vega-section-title-renderer.js +4 -4
  128. package/dist/collection/components/vega-section-title/vega-section-title.js +18 -2
  129. package/dist/collection/helpers/a11y-tree/a11y-node-dto.js +210 -0
  130. package/dist/collection/helpers/a11y-tree/a11y-tree-applier.js +189 -0
  131. package/dist/collection/helpers/a11y-tree/a11y-tree.types.js +48 -0
  132. package/dist/collection/helpers/a11y-tree/strategies/baseline-strategy.js +78 -0
  133. package/dist/collection/helpers/a11y-tree/strategies/firefox-nvda-strategy.js +56 -0
  134. package/dist/collection/helpers/a11y-tree/strategies/webkit-voiceover-strategy.js +140 -0
  135. package/dist/collection/helpers/a11y-tree/strategy-resolver.js +172 -0
  136. package/dist/collection/helpers/backdrop/shared-backdrop-manager.js +32 -1
  137. package/dist/collection/helpers/event-manager/event-id/component-event-id-map.js +11 -3
  138. package/dist/collection/helpers/slimmers/a11y-tree-slimmer.js +54 -0
  139. package/dist/collection/helpers/slimmers/element-appender/element-appender-slimmer.js +29 -0
  140. package/dist/collection/helpers/slimmers/element-appender/visibility-modifiers/clip-on-scroll-modifier.js +70 -0
  141. package/dist/collection/helpers/slimmers/element-appender/visibility-modifiers/visibility-modifier.interface.js +1 -0
  142. package/dist/collection/helpers/ui/element-appender.js +16 -0
  143. package/dist/esm/{app-globals-f2336686.js → app-globals-d7b651c1.js} +7 -7
  144. package/dist/esm/{child-nodes-event-prevent-slimmer-96c14f5a.js → child-nodes-event-prevent-slimmer-82626871.js} +1 -1
  145. package/dist/esm/{code-block-e12588fe.js → code-block-0a88b481.js} +1495 -51
  146. package/dist/esm/{component-value-history-controller-slimmer.abstract-4e8eb313.js → component-value-history-controller-slimmer.abstract-6846edfa.js} +2 -2
  147. package/dist/esm/{content-state-8032467a.js → content-state-79ca99e5.js} +105 -541
  148. package/dist/esm/{element-appender-slimmer-7fcb944b.js → element-appender-slimmer-73ad10ae.js} +115 -0
  149. package/dist/esm/{event-emit-slimmer-db4a82e0.js → event-emit-slimmer-2452278f.js} +1 -1
  150. package/dist/esm/{image-annotation-action-b3b6c308.js → image-annotation-action-bb299ef1.js} +3 -3
  151. package/dist/esm/{image-extension-b6c7e4a7.js → image-extension-48a96f98.js} +2 -2
  152. package/dist/esm/index.js +10 -10
  153. package/dist/esm/{internal-vega-event-manager-48690e5b.js → internal-vega-event-manager-2ecc9186.js} +11 -3
  154. package/dist/esm/{link-extension-97fcb8fb.js → link-extension-09534514.js} +2 -2
  155. package/dist/esm/loader.js +10 -10
  156. package/dist/esm/{public-rules-c06f0d2a.js → public-rules-5eb03ef0.js} +3 -3
  157. package/dist/esm/{range-e999837f.js → range-d4deb7df.js} +1 -1
  158. package/dist/esm/{rich-text-editor-required-rule-71f8ee98.js → rich-text-editor-required-rule-5bbbce23.js} +1 -1
  159. package/dist/esm/shared-backdrop-manager-a7c63838.js +197 -0
  160. package/dist/esm/{split-cell-operation-359f8082.js → split-cell-operation-7f3058ad.js} +2 -2
  161. package/dist/esm/{token-extension-9896879b.js → token-extension-40c32bcc.js} +32 -8
  162. package/dist/esm/vega-accordion.entry.js +3 -3
  163. package/dist/esm/vega-app-footer.entry.js +3 -3
  164. package/dist/esm/vega-app-header-button.entry.js +4 -4
  165. package/dist/esm/vega-banner.entry.js +3 -3
  166. package/dist/esm/vega-breadcrumb.entry.js +4 -4
  167. package/dist/esm/vega-button-circle.entry.js +4 -4
  168. package/dist/esm/vega-button-group_2.entry.js +4 -4
  169. package/dist/esm/vega-button-link.entry.js +4 -4
  170. package/dist/esm/vega-button.entry.js +4 -4
  171. package/dist/esm/vega-calendar_5.entry.js +4 -4
  172. package/dist/esm/vega-carousel.entry.js +3 -3
  173. package/dist/esm/vega-checkbox_2.entry.js +4 -4
  174. package/dist/esm/vega-chip.entry.js +4 -4
  175. package/dist/esm/vega-code-block.entry.js +7 -7
  176. package/dist/esm/vega-color-picker.entry.js +3 -3
  177. package/dist/esm/vega-color-swatch-picker.entry.js +4 -4
  178. package/dist/esm/vega-color-swatch.entry.js +3 -3
  179. package/dist/esm/vega-combo-box.entry.js +23 -5
  180. package/dist/esm/vega-date-picker_2.entry.js +5 -5
  181. package/dist/esm/vega-dialog_2.entry.js +161 -71
  182. package/dist/esm/vega-dropdown_5.entry.js +42 -14
  183. package/dist/esm/vega-env-manager-8f8dc473.js +2 -2
  184. package/dist/esm/{vega-event-id-270fe47e.js → vega-event-id-f55f6977.js} +1 -1
  185. package/dist/esm/vega-field-label.entry.js +3 -3
  186. package/dist/esm/vega-file-uploader.entry.js +3 -3
  187. package/dist/esm/vega-form.entry.js +4 -4
  188. package/dist/esm/vega-image-uploader.entry.js +4 -4
  189. package/dist/esm/vega-input-credit-card.entry.js +4 -4
  190. package/dist/esm/vega-input-numeric.entry.js +4 -4
  191. package/dist/esm/vega-input-passcode.entry.js +4 -4
  192. package/dist/esm/vega-input-phone-number.entry.js +4 -4
  193. package/dist/esm/vega-input-range.entry.js +4 -4
  194. package/dist/esm/vega-input-select.entry.js +55 -6
  195. package/dist/esm/vega-input.entry.js +3 -3
  196. package/dist/esm/vega-item-toggle.entry.js +3 -3
  197. package/dist/esm/vega-left-nav_5.entry.js +32 -193
  198. package/dist/esm/vega-page-notification_2.entry.js +1 -1
  199. package/dist/esm/vega-pagination-page-selector-mobile.entry.js +3 -3
  200. package/dist/esm/vega-pagination-page-size-selector-mobile.entry.js +1 -1
  201. package/dist/esm/vega-pagination.entry.js +4 -4
  202. package/dist/esm/vega-popover_2.entry.js +4 -4
  203. package/dist/esm/vega-progress-tracker_2.entry.js +14 -4
  204. package/dist/esm/vega-radio_2.entry.js +4 -4
  205. package/dist/esm/vega-rich-text-content.entry.js +59 -10
  206. package/dist/esm/vega-rich-text-editor_4.entry.js +608 -90
  207. package/dist/esm/vega-rich-text-find-replace-panel.entry.js +3 -3
  208. package/dist/esm/vega-rich-text-special-characters-panel.entry.js +3 -3
  209. package/dist/esm/vega-rich-text-table-properties_3.entry.js +6 -6
  210. package/dist/esm/vega-section-title.entry.js +897 -15
  211. package/dist/esm/vega-segment-control.entry.js +3 -3
  212. package/dist/esm/vega-selection-chip_2.entry.js +4 -4
  213. package/dist/esm/vega-selection-tile_2.entry.js +4 -4
  214. package/dist/esm/vega-sidenav_3.entry.js +3 -3
  215. package/dist/esm/vega-signature-capture.entry.js +3 -3
  216. package/dist/esm/vega-stepper.entry.js +4 -4
  217. package/dist/esm/vega-tab-group_2.entry.js +4 -4
  218. package/dist/esm/vega-table_11.entry.js +4 -4
  219. package/dist/esm/vega-textarea.entry.js +4 -4
  220. package/dist/esm/vega-time-picker_2.entry.js +5 -5
  221. package/dist/esm/vega-toggle-switch.entry.js +3 -3
  222. package/dist/esm/vega-tooltip_2.entry.js +1 -1
  223. package/dist/esm/vega.js +10 -10
  224. package/dist/sri/vega-sri-manifest.json +272 -268
  225. package/dist/types/components/vega-combo-box/slimmers/renderers/vega-combo-box-dropdown-renderer.d.ts +1 -0
  226. package/dist/types/components/vega-combo-box/vega-combo-box.d.ts +21 -0
  227. package/dist/types/components/vega-dropdown/slimmers/controllers/vega-dropdown-render-mode-controller.d.ts +2 -1
  228. package/dist/types/components/vega-dropdown/types.d.ts +2 -2
  229. package/dist/types/components/vega-dropdown/vega-dropdown.d.ts +36 -9
  230. package/dist/types/components/vega-input-select/slimmers/controllers/vega-input-select-dropdown-controller.d.ts +2 -0
  231. package/dist/types/components/vega-input-select/slimmers/controllers/vega-input-select-items-slot-controler.d.ts +10 -0
  232. package/dist/types/components/vega-input-select/types.d.ts +1 -0
  233. package/dist/types/components/vega-input-select/vega-input-select.d.ts +21 -0
  234. package/dist/types/components/vega-modal/slimmers/controllers/vega-modal-backdrop-manager.d.ts +66 -0
  235. package/dist/types/components/vega-modal/slimmers/controllers/vega-modal-open-state-controller.d.ts +1 -5
  236. package/dist/types/components/vega-modal/slimmers/controllers/vega-modal-z-index-controller.d.ts +1 -1
  237. package/dist/types/components/vega-modal/slimmers/renderers/vega-modal-renderer.d.ts +1 -1
  238. package/dist/types/components/vega-modal/vega-modal.d.ts +34 -6
  239. package/dist/types/components/vega-progress-tracker/slimmers/controllers/vega-progress-tracker-current-steps-controller.d.ts +2 -0
  240. package/dist/types/components/vega-progress-tracker/vega-progress-tracker.d.ts +1 -0
  241. package/dist/types/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/list-annotation-strategy.abstract.d.ts +36 -0
  242. package/dist/types/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/list-item-replace-nest-list-strategy.d.ts +14 -2
  243. package/dist/types/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/list-items-strategy.abstract.d.ts +22 -0
  244. package/dist/types/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/list-nest-items-strategy.d.ts +21 -0
  245. package/dist/types/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/list-remove-list-item-strategy.d.ts +14 -0
  246. package/dist/types/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/list-transform-selection.d.ts +15 -0
  247. package/dist/types/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/list-transform-to-list-strategy.d.ts +30 -3
  248. package/dist/types/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/list-transform-to-paragraph-strategy.d.ts +99 -3
  249. package/dist/types/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/list-unnest-items-strategy.d.ts +22 -0
  250. package/dist/types/components/vega-rich-text-editor/dto/actions/modify-content-action.abstract.d.ts +2 -0
  251. package/dist/types/components/vega-rich-text-editor/dto/actions/nest-list-items-action.d.ts +11 -0
  252. package/dist/types/components/vega-rich-text-editor/dto/actions/unnest-list-items-action.d.ts +11 -0
  253. package/dist/types/components/vega-rich-text-editor/dto/annotations/list-annotation.d.ts +8 -0
  254. package/dist/types/components/vega-rich-text-editor/dto/blocks/list-block.d.ts +6 -1
  255. package/dist/types/components/vega-rich-text-editor/dto/blocks/list-item-block.d.ts +5 -1
  256. package/dist/types/components/vega-rich-text-editor/dto/content-state.d.ts +2 -2
  257. package/dist/types/components/vega-rich-text-editor/dto/renderers/blocks/list-block-renderer.d.ts +2 -0
  258. package/dist/types/components/vega-rich-text-editor/dto/renderers/blocks/list-item-block-renderer.d.ts +8 -0
  259. package/dist/types/components/vega-rich-text-editor/extensions/table/annotation-handler/table-annotation-handler-base.d.ts +18 -0
  260. package/dist/types/components/vega-rich-text-editor/slimmers/renderers/tools/bullets-numbers/bullets-numbers-toolbar-button-slimmer.d.ts +8 -0
  261. package/dist/types/components/vega-rich-text-editor/slimmers/renderers/tools/bullets-numbers/helper/abstract-list-keyboard-handler.d.ts +99 -0
  262. package/dist/types/components/vega-rich-text-editor/slimmers/renderers/tools/bullets-numbers/helper/list-shift-tab-outdent-handler.d.ts +15 -0
  263. package/dist/types/components/vega-rich-text-editor/slimmers/renderers/tools/bullets-numbers/helper/list-tab-indent-handler.d.ts +15 -0
  264. package/dist/types/components/vega-rich-text-editor/slimmers/renderers/tools/bullets-numbers/list-keyboard-slimmer.d.ts +73 -0
  265. package/dist/types/components/vega-section-title/slimmers/a11y-tree/build-section-title-a11y-tree.d.ts +41 -0
  266. package/dist/types/components/vega-section-title/vega-section-title.d.ts +9 -0
  267. package/dist/types/components.d.ts +42 -8
  268. package/dist/types/helpers/a11y-tree/a11y-node-dto.d.ts +173 -0
  269. package/dist/types/helpers/a11y-tree/a11y-tree-applier.d.ts +28 -0
  270. package/dist/types/helpers/a11y-tree/a11y-tree.types.d.ts +137 -0
  271. package/dist/types/helpers/a11y-tree/strategies/baseline-strategy.d.ts +18 -0
  272. package/dist/types/helpers/a11y-tree/strategies/firefox-nvda-strategy.d.ts +16 -0
  273. package/dist/types/helpers/a11y-tree/strategies/webkit-voiceover-strategy.d.ts +23 -0
  274. package/dist/types/helpers/a11y-tree/strategy-resolver.d.ts +59 -0
  275. package/dist/types/helpers/backdrop/shared-backdrop-manager.d.ts +16 -0
  276. package/dist/types/helpers/slimmers/a11y-tree-slimmer.d.ts +49 -0
  277. package/dist/types/helpers/slimmers/element-appender/element-appender-slimmer.d.ts +9 -0
  278. package/dist/types/helpers/slimmers/element-appender/visibility-modifiers/clip-on-scroll-modifier.d.ts +37 -0
  279. package/dist/types/helpers/slimmers/element-appender/visibility-modifiers/visibility-modifier.interface.d.ts +56 -0
  280. package/dist/types/helpers/ui/element-appender.d.ts +7 -0
  281. package/dist/vega/index.esm.js +1 -1
  282. package/dist/vega/{p-3e8baeac.entry.js → p-0512308f.entry.js} +1 -1
  283. package/dist/vega/{p-46fe3154.entry.js → p-1d8312d3.entry.js} +1 -1
  284. package/dist/vega/{p-f5d7b89f.entry.js → p-1dfbc542.entry.js} +1 -1
  285. package/dist/vega/{p-fbd3be00.entry.js → p-200c8914.entry.js} +1 -1
  286. package/dist/vega/{p-e235020b.entry.js → p-22cc174e.entry.js} +1 -1
  287. package/dist/vega/{p-b1ff70bf.js → p-2c737fc8.js} +1 -1
  288. package/dist/vega/{p-782eb312.entry.js → p-2d77ae73.entry.js} +1 -1
  289. package/dist/vega/{p-cb90163a.entry.js → p-2d8d4d5b.entry.js} +1 -1
  290. package/dist/vega/{p-f651df3b.entry.js → p-2df5d59b.entry.js} +1 -1
  291. package/dist/vega/p-31216140.js +1 -0
  292. package/dist/vega/{p-f7e459cd.js → p-312d8205.js} +1 -1
  293. package/dist/vega/{p-a7209700.js → p-3345d903.js} +1 -1
  294. package/dist/vega/{p-44439ecc.entry.js → p-36d2df7a.entry.js} +1 -1
  295. package/dist/vega/{p-02355de8.js → p-3c23ec90.js} +1 -1
  296. package/dist/vega/{p-2bf17505.entry.js → p-3d6f761a.entry.js} +1 -1
  297. package/dist/vega/p-4151f53a.entry.js +1 -0
  298. package/dist/vega/{p-a057285e.entry.js → p-49e1cf4d.entry.js} +1 -1
  299. package/dist/vega/{p-698fbd73.js → p-5447a8e8.js} +1 -1
  300. package/dist/vega/p-55e0014a.js +3 -0
  301. package/dist/vega/{p-45e8424a.entry.js → p-56d19601.entry.js} +1 -1
  302. package/dist/vega/{p-addbca58.entry.js → p-5924adae.entry.js} +1 -1
  303. package/dist/vega/{p-9dca874d.entry.js → p-5e4517eb.entry.js} +1 -1
  304. package/dist/vega/p-5f377954.js +1 -1
  305. package/dist/vega/p-65fee02f.entry.js +1 -0
  306. package/dist/vega/{p-140616fe.js → p-66647244.js} +1 -1
  307. package/dist/vega/{p-62d6e063.entry.js → p-6680ba17.entry.js} +1 -1
  308. package/dist/vega/p-6a51d720.js +1 -0
  309. package/dist/vega/{p-fe24b459.js → p-6c7b6d45.js} +1 -1
  310. package/dist/vega/{p-288d65ad.entry.js → p-6fcec7c7.entry.js} +1 -1
  311. package/dist/vega/{p-d08ffdf1.entry.js → p-74f86ff9.entry.js} +1 -1
  312. package/dist/vega/{p-6ad7144a.entry.js → p-775ecfad.entry.js} +1 -1
  313. package/dist/vega/{p-6f70a10f.entry.js → p-7950f3e2.entry.js} +1 -1
  314. package/dist/vega/{p-f246f125.entry.js → p-80b7945a.entry.js} +1 -1
  315. package/dist/vega/p-8354cff0.entry.js +1 -0
  316. package/dist/vega/{p-5db61a12.entry.js → p-841b3281.entry.js} +1 -1
  317. package/dist/vega/{p-579cdeae.js → p-84b7a775.js} +1 -1
  318. package/dist/vega/p-87e5cb56.entry.js +1 -0
  319. package/dist/vega/p-8c30a60d.js +1 -0
  320. package/dist/vega/{p-f8a29127.entry.js → p-8d96f0e8.entry.js} +1 -1
  321. package/dist/vega/{p-95913e3c.entry.js → p-91303402.entry.js} +1 -1
  322. package/dist/vega/p-96da7d30.entry.js +1 -0
  323. package/dist/vega/{p-51b68d25.js → p-9d3f69cb.js} +1 -1
  324. package/dist/vega/{p-ed103a1a.entry.js → p-9d96d83f.entry.js} +1 -1
  325. package/dist/vega/{p-6dfe2407.js → p-9f11b579.js} +1 -1
  326. package/dist/vega/p-9f201152.entry.js +1 -0
  327. package/dist/vega/{p-48ee3e24.entry.js → p-a775825e.entry.js} +1 -1
  328. package/dist/vega/{p-9d18ba7f.entry.js → p-acaff62d.entry.js} +1 -1
  329. package/dist/vega/{p-b8f8e480.entry.js → p-ae146458.entry.js} +1 -1
  330. package/dist/vega/{p-e8ee70c5.entry.js → p-b3a2ce06.entry.js} +1 -1
  331. package/dist/vega/{p-5107277d.entry.js → p-b4c26035.entry.js} +1 -1
  332. package/dist/vega/p-b63319e9.entry.js +1 -0
  333. package/dist/vega/{p-c9daabe1.entry.js → p-b660f38c.entry.js} +1 -1
  334. package/dist/vega/{p-8c083255.entry.js → p-b8c13ac9.entry.js} +1 -1
  335. package/dist/vega/p-b8ffa42f.entry.js +1 -0
  336. package/dist/vega/{p-7b57a845.entry.js → p-b9e72de2.entry.js} +1 -1
  337. package/dist/vega/{p-0af32f31.entry.js → p-bb60e381.entry.js} +1 -1
  338. package/dist/vega/p-bbad318e.entry.js +1 -0
  339. package/dist/vega/p-c0e42c03.entry.js +1 -0
  340. package/dist/vega/{p-c67b9aba.entry.js → p-c41f5684.entry.js} +1 -1
  341. package/dist/vega/{p-4fe40b76.js → p-c4564904.js} +1 -1
  342. package/dist/vega/{p-341a6b32.entry.js → p-c54b5a8f.entry.js} +1 -1
  343. package/dist/vega/p-cd1e976c.entry.js +1 -0
  344. package/dist/vega/p-d9158512.js +1 -0
  345. package/dist/vega/{p-2dc5edd0.entry.js → p-db11134b.entry.js} +1 -1
  346. package/dist/vega/{p-14559974.entry.js → p-e1737c8e.entry.js} +1 -1
  347. package/dist/vega/{p-0b311599.entry.js → p-e1b57e8f.entry.js} +1 -1
  348. package/dist/vega/{p-9f38448c.entry.js → p-e5ff77f7.entry.js} +1 -1
  349. package/dist/vega/p-e62d41ee.js +1 -0
  350. package/dist/vega/{p-6f01a71a.entry.js → p-ebe32b25.entry.js} +1 -1
  351. package/dist/vega/p-ec162599.entry.js +1 -0
  352. package/dist/vega/{p-9f7154d2.js → p-ec5dee32.js} +1 -1
  353. package/dist/vega/{p-d3a36d19.entry.js → p-ec64cc59.entry.js} +1 -1
  354. package/dist/vega/p-f29d9707.entry.js +1 -0
  355. package/dist/vega/{p-5df2d6a1.entry.js → p-f78944d7.entry.js} +1 -1
  356. package/dist/vega/{p-c9c6daa6.entry.js → p-f9bfee81.entry.js} +1 -1
  357. package/dist/vega/{p-26c7fe8b.entry.js → p-fa65956c.entry.js} +1 -1
  358. package/dist/vega/{p-f96d0503.entry.js → p-fc7e4c8a.entry.js} +1 -1
  359. package/dist/vega/{p-b39d4a88.entry.js → p-fd23c365.entry.js} +1 -1
  360. package/dist/vega/vega.esm.js +1 -1
  361. package/package.json +3 -2
  362. package/dist/collection/components/vega-modal/slimmers/controllers/vega-modal-backdrop-controller.js +0 -73
  363. package/dist/types/components/vega-modal/slimmers/controllers/vega-modal-backdrop-controller.d.ts +0 -27
  364. package/dist/vega/p-0b9c7c79.entry.js +0 -1
  365. package/dist/vega/p-0be4df0a.js +0 -1
  366. package/dist/vega/p-2364be92.entry.js +0 -1
  367. package/dist/vega/p-270697c0.entry.js +0 -1
  368. package/dist/vega/p-282b37cb.js +0 -1
  369. package/dist/vega/p-38c9d782.js +0 -1
  370. package/dist/vega/p-52c6a399.entry.js +0 -1
  371. package/dist/vega/p-73f2c3c0.entry.js +0 -1
  372. package/dist/vega/p-762ea523.entry.js +0 -1
  373. package/dist/vega/p-7a88a3d3.entry.js +0 -1
  374. package/dist/vega/p-83a16285.entry.js +0 -1
  375. package/dist/vega/p-91287214.entry.js +0 -1
  376. package/dist/vega/p-c66d2a1e.js +0 -1
  377. package/dist/vega/p-cad5222a.entry.js +0 -1
  378. package/dist/vega/p-d25ca0c3.entry.js +0 -1
  379. package/dist/vega/p-f05a193e.entry.js +0 -1
  380. package/dist/vega/p-f4da615a.js +0 -3
  381. package/dist/vega/p-f906a7bc.entry.js +0 -1
@@ -0,0 +1,180 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { MapToComponentField, MapToComponentMethod, VegaSlimmer } from 'vega-slimmer/core';
8
+ import { RTETextNode } from '../../../../dto/nodes/text-node';
9
+ import { ListTabIndentHandler } from './helper/list-tab-indent-handler';
10
+ import { ListShiftTabOutdentHandler } from './helper/list-shift-tab-outdent-handler';
11
+ const LIST_TOOLBAR_ITEMS = ['bullets', 'numbers', 'bulletsNumbers'];
12
+ /**
13
+ * Handles list keyboard shortcuts (Tab/Shift+Tab) for list tooling.
14
+ */
15
+ export class ListKeyboardSlimmer extends VegaSlimmer {
16
+ constructor() {
17
+ super(...arguments);
18
+ this.isKeyboardListenerBound = false;
19
+ this.listTabIndentHandler = new ListTabIndentHandler();
20
+ this.listShiftTabOutdentHandler = new ListShiftTabOutdentHandler();
21
+ // Keyboard action execution
22
+ /**
23
+ * Handle Tab and Shift+Tab list keyboard interactions.
24
+ *
25
+ * @param {KeyboardEvent} e - Keyboard event to process.
26
+ * @returns {void}
27
+ */
28
+ this.handleListKeyboardAction = (e) => {
29
+ if (e.key !== 'Tab') {
30
+ return;
31
+ }
32
+ if (this.hasNonShiftModifierForTab(e)) {
33
+ return;
34
+ }
35
+ const selectedBlocks = this.selectionController.getSelectedBlocks();
36
+ const currentRange = this.selectionController.getCurrentRange().clone();
37
+ if (e.shiftKey) {
38
+ const selectionBoundaries = this.listShiftTabOutdentHandler.execute(selectedBlocks);
39
+ if (selectionBoundaries) {
40
+ e.preventDefault();
41
+ void this.valueController.flushChanges(this.value).then(() => {
42
+ this.restoreListSelection(selectionBoundaries, currentRange.startNode instanceof RTETextNode ? currentRange.startNode : null, currentRange.endNode instanceof RTETextNode ? currentRange.endNode : null, currentRange.startOffset, currentRange.endOffset);
43
+ });
44
+ }
45
+ return;
46
+ }
47
+ const selectionBoundaries = this.listTabIndentHandler.execute(selectedBlocks);
48
+ if (!selectionBoundaries) {
49
+ return;
50
+ }
51
+ e.preventDefault();
52
+ void this.valueController.flushChanges(this.value).then(() => {
53
+ this.restoreListSelection(selectionBoundaries, currentRange.startNode instanceof RTETextNode ? currentRange.startNode : null, currentRange.endNode instanceof RTETextNode ? currentRange.endNode : null, currentRange.startOffset, currentRange.endOffset);
54
+ });
55
+ };
56
+ }
57
+ // Listener lifecycle and gating
58
+ /**
59
+ * @inheritDoc
60
+ */
61
+ disconnectedCallback() {
62
+ this.removeListKeyboardListener();
63
+ }
64
+ /**
65
+ * @inheritDoc
66
+ */
67
+ componentDidLoad() {
68
+ this.syncListKeyboardListener();
69
+ }
70
+ /**
71
+ * Re-sync keyboard listener when toolbarItems prop changes at runtime,
72
+ * ensuring list shortcuts are bound/unbound as tools are added/removed.
73
+ */
74
+ watchToolbarItems() {
75
+ this.syncListKeyboardListener();
76
+ }
77
+ /**
78
+ * Synchronize the DOM keydown listener with the configured toolbar items.
79
+ */
80
+ syncListKeyboardListener() {
81
+ if (this.hasListToolbarConfigured()) {
82
+ this.addListKeyboardListener();
83
+ return;
84
+ }
85
+ this.removeListKeyboardListener();
86
+ }
87
+ /**
88
+ * Determine whether any list keyboard controls are enabled in the toolbar.
89
+ *
90
+ * @returns {boolean} True when any list toolbar item is configured.
91
+ */
92
+ hasListToolbarConfigured() {
93
+ const flatToolbarItems = this.toolbarItems.flat();
94
+ return flatToolbarItems.some((item) => LIST_TOOLBAR_ITEMS.includes(item));
95
+ }
96
+ /**
97
+ * Attach the keydown listener to the current editable element when available.
98
+ * Handles element ref changes by rebinding when the target element differs.
99
+ */
100
+ addListKeyboardListener() {
101
+ const editableElement = this.vegaRichTextEditorRenderer.getRTEEditableElementRef();
102
+ if (this.isKeyboardListenerBound && this.boundEditableElement === editableElement) {
103
+ return;
104
+ }
105
+ if (this.isKeyboardListenerBound) {
106
+ this.removeListKeyboardListener();
107
+ }
108
+ if (!editableElement) {
109
+ return;
110
+ }
111
+ editableElement.addEventListener('keydown', this.handleListKeyboardAction);
112
+ this.boundEditableElement = editableElement;
113
+ this.isKeyboardListenerBound = true;
114
+ }
115
+ /**
116
+ * Detach the keydown listener from the previously bound editable element.
117
+ */
118
+ removeListKeyboardListener() {
119
+ if (!this.isKeyboardListenerBound || !this.boundEditableElement) {
120
+ return;
121
+ }
122
+ this.boundEditableElement.removeEventListener('keydown', this.handleListKeyboardAction);
123
+ this.boundEditableElement = null;
124
+ this.isKeyboardListenerBound = false;
125
+ }
126
+ /**
127
+ * Check whether the Tab event includes modifiers other than Shift.
128
+ *
129
+ * @param {KeyboardEvent} e - Keyboard event to inspect.
130
+ * @returns {boolean} True when non-shift modifier keys are pressed.
131
+ */
132
+ hasNonShiftModifierForTab(e) {
133
+ return e.altKey || e.ctrlKey || e.metaKey || e.getModifierState('AltGraph');
134
+ }
135
+ /**
136
+ * Restore the logical selection after a list keyboard action completes.
137
+ *
138
+ * @param {Array<Nullable<[RTETextNode, RTETextNode]>>} selectionBoundaries - Boundaries produced by the handler.
139
+ * @param {Nullable<RTETextNode>} preferredStartNode - Preferred start node from prior selection.
140
+ * @param {Nullable<RTETextNode>} preferredEndNode - Preferred end node from prior selection.
141
+ * @param {number} startOffset - Preferred start offset.
142
+ * @param {number} endOffset - Preferred end offset.
143
+ * @returns {void}
144
+ */
145
+ restoreListSelection(selectionBoundaries, preferredStartNode, preferredEndNode, startOffset, endOffset) {
146
+ var _a, _b, _c, _d;
147
+ const firstBoundary = (_a = selectionBoundaries.find(Boolean)) !== null && _a !== void 0 ? _a : null;
148
+ const lastBoundary = (_b = [...selectionBoundaries].reverse().find(Boolean)) !== null && _b !== void 0 ? _b : null;
149
+ const firstNode = (_c = preferredStartNode !== null && preferredStartNode !== void 0 ? preferredStartNode : firstBoundary === null || firstBoundary === void 0 ? void 0 : firstBoundary[0]) !== null && _c !== void 0 ? _c : null;
150
+ const lastNode = (_d = preferredEndNode !== null && preferredEndNode !== void 0 ? preferredEndNode : lastBoundary === null || lastBoundary === void 0 ? void 0 : lastBoundary[1]) !== null && _d !== void 0 ? _d : null;
151
+ if (!firstNode || !lastNode) {
152
+ return;
153
+ }
154
+ this.selectionController.enqueueSelectionRangeFutureState(firstNode, Math.min(startOffset, firstNode.getRangeEndOffset()), lastNode, Math.min(endOffset, lastNode.getRangeEndOffset()), true);
155
+ }
156
+ }
157
+ __decorate([
158
+ MapToComponentField()
159
+ ], ListKeyboardSlimmer.prototype, "selectionController", void 0);
160
+ __decorate([
161
+ MapToComponentField()
162
+ ], ListKeyboardSlimmer.prototype, "valueController", void 0);
163
+ __decorate([
164
+ MapToComponentField()
165
+ ], ListKeyboardSlimmer.prototype, "value", void 0);
166
+ __decorate([
167
+ MapToComponentField()
168
+ ], ListKeyboardSlimmer.prototype, "toolbarItems", void 0);
169
+ __decorate([
170
+ MapToComponentField()
171
+ ], ListKeyboardSlimmer.prototype, "vegaRichTextEditorRenderer", void 0);
172
+ __decorate([
173
+ MapToComponentMethod('disconnectedCallback')
174
+ ], ListKeyboardSlimmer.prototype, "disconnectedCallback", null);
175
+ __decorate([
176
+ MapToComponentMethod('componentDidLoad')
177
+ ], ListKeyboardSlimmer.prototype, "componentDidLoad", null);
178
+ __decorate([
179
+ MapToComponentMethod('watchToolbarItems')
180
+ ], ListKeyboardSlimmer.prototype, "watchToolbarItems", null);
@@ -0,0 +1,54 @@
1
+ import { A11yHeadingNode, A11yIconNode } from '../../../../helpers/a11y-tree/a11y-node-dto';
2
+ /**
3
+ * Build the semantic A11y Tree for a `vega-section-title` instance.
4
+ *
5
+ * The structure uses a presentation wrapper so the container is transparent to
6
+ * assistive technology — the heading is the semantic anchor:
7
+ *
8
+ * ```
9
+ * presentation "st-root" (role=none — AT-transparent wrapper)
10
+ * ├── heading "st-heading" (titleText, level=2 by default)
11
+ * └── icon "st-icon" (decorative — only when an icon prop is set)
12
+ * ```
13
+ *
14
+ * Description text is not wired into the A11y tree. It is exposed as plain
15
+ * visible text in the component's shadow DOM, read by screen readers via normal
16
+ * linear traversal. This avoids three VoiceOver regressions introduced when the
17
+ * container carried `role="group"` with `aria-label` + `aria-describedby`:
18
+ *
19
+ * - Bug 1 (Safari): webkit folded the description into the heading `aria-label`,
20
+ * so focusing the H2 announced both title AND description together.
21
+ * - Bug 2 (Chrome, no description): `role="group"` created an extra navigation
22
+ * boundary and announced the title twice (group label + heading).
23
+ * - Bug 3 (Chrome, with description): description read twice — once via the
24
+ * hidden `aria-describedby` span on the group, once via the visible div.
25
+ *
26
+ * **No inline ARIA / no double projection**: this function must NOT set
27
+ * `aria-*` or `role` attributes directly on the component. The A11y Tree
28
+ * slimmer (`A11yTreeSlimmer`) calls `applyA11yTree()` on every render to
29
+ * project the semantic intent through the chosen strategy.
30
+ *
31
+ * @param {BuildArgs} args - Section-title fields used to author the semantic tree.
32
+ * @returns {A11yNode} The semantic A11y Tree root for the section title.
33
+ */
34
+ export function buildSectionTitleA11yTree(args) {
35
+ var _a;
36
+ const children = [];
37
+ // Only add heading if titleText is provided; avoid empty heading elements
38
+ // that cause cross-browser inconsistencies (Chrome skips them, Firefox may
39
+ // announce an empty group). The A11y Tree projection (via strategy) onto
40
+ // shadow DOM handles all ARIA semantics; no host-level ARIA is used.
41
+ if (args.titleText) {
42
+ children.push(new A11yHeadingNode('st-heading', {
43
+ level: (_a = args.headingLevel) !== null && _a !== void 0 ? _a : 2,
44
+ }).toA11yNode());
45
+ }
46
+ if (args.icon) {
47
+ children.push(new A11yIconNode('st-icon').toA11yNode());
48
+ }
49
+ return {
50
+ id: 'st-root',
51
+ role: 'none',
52
+ children,
53
+ };
54
+ }
@@ -8,13 +8,13 @@ import { h } from '@stencil/core';
8
8
  import { MapToComponentField, VegaSlimmer } from 'vega-slimmer/core';
9
9
  export class VegaSectionTitleRenderer extends VegaSlimmer {
10
10
  render() {
11
- return (h("vega-flex", { "aria-hidden": "true", "align-items": "start", "justify-content": "start", gap: "size-8", class: this.size === 'small' ? 'section-title-small' : undefined },
11
+ return (h("vega-flex", { "data-a11y-id": "st-root", "align-items": "start", "justify-content": "start", gap: "size-8", class: this.size === 'small' ? 'section-title-small' : undefined },
12
12
  this.renderPrefixIcon(),
13
13
  this.renderText()));
14
14
  }
15
15
  renderPrefixIcon() {
16
16
  return (this.icon &&
17
- this.iconAlign === 'left' && h("div", { class: "section-title-icon-container" }, this.renderIcon()));
17
+ this.iconAlign === 'left' && (h("div", { "data-a11y-id": "st-icon", class: "section-title-icon-container" }, this.renderIcon())));
18
18
  }
19
19
  renderText() {
20
20
  return (h("vega-flex", { class: "vega-flex-grow", direction: "col", "align-items": "start", "justify-content": "start", gap: "size-4" },
@@ -23,7 +23,7 @@ export class VegaSectionTitleRenderer extends VegaSlimmer {
23
23
  }
24
24
  renderTitle() {
25
25
  return (h("div", { class: "section-title-text vega-flex-grow" },
26
- h("span", null, this.titleText),
26
+ h("span", { "data-a11y-id": "st-heading" }, this.titleText),
27
27
  this.renderSuffixIcon()));
28
28
  }
29
29
  renderDescription() {
@@ -31,7 +31,7 @@ export class VegaSectionTitleRenderer extends VegaSlimmer {
31
31
  }
32
32
  renderSuffixIcon() {
33
33
  return (this.icon &&
34
- this.iconAlign === 'right' && h("div", { class: "right-icon-container" }, this.renderIcon()));
34
+ this.iconAlign === 'right' && (h("div", { "data-a11y-id": "st-icon", class: "right-icon-container" }, this.renderIcon())));
35
35
  }
36
36
  renderIcon() {
37
37
  return (h("vega-icon", { icon: this.icon, color: this.iconColor, size: this.size === 'small' ? 'size-16' : 'size-20', class: "vega-flex-shrink-0" }));
@@ -9,6 +9,8 @@ import { sanitizeVegaComponent } from '../../utils/component';
9
9
  import { InjectVegaGlobalSlimmer, InjectVegaSlimmer } from 'vega-slimmer/core';
10
10
  import { VegaSectionTitleRenderer } from './slimmers/renderers/vega-section-title-renderer';
11
11
  import { VegaComponentUsageRuntimeMetricsSlimmer } from '../../helpers/slimmers/component-usage-runtime-metrics';
12
+ import { A11yTreeSlimmer } from '../../helpers/slimmers/a11y-tree-slimmer';
13
+ import { buildSectionTitleA11yTree } from './slimmers/a11y-tree/build-section-title-a11y-tree';
12
14
  /**
13
15
  * @vegaVersion 2.1.0
14
16
  */
@@ -17,6 +19,18 @@ export class VegaSectionTitle {
17
19
  this.globalSlimmers = {};
18
20
  this.renderer = new VegaSectionTitleRenderer();
19
21
  this.vegaComponentUsageRuntimeMetricsSlimmer = new VegaComponentUsageRuntimeMetricsSlimmer();
22
+ /**
23
+ * Projects the component's semantic accessibility intent onto the shadow
24
+ * DOM via the A11y Tree foundation. Replaces the previous inline `role` /
25
+ * `aria-label` on the host element so ARIA is authored once, in
26
+ * `buildSectionTitleA11yTree`, and projected through the browser-engine
27
+ * strategy layer (no double projection).
28
+ */
29
+ this.a11yTreeSlimmer = new A11yTreeSlimmer((host) => buildSectionTitleA11yTree({
30
+ titleText: host.titleText,
31
+ icon: host.icon,
32
+ iconAlign: host.iconAlign,
33
+ }));
20
34
  /**
21
35
  * Specifies the text content of the title displayed
22
36
  * within the section title.
@@ -45,8 +59,7 @@ export class VegaSectionTitle {
45
59
  this.size = 'default';
46
60
  }
47
61
  render() {
48
- const ariaLabel = [this.titleText, this.description].filter(Boolean).join(', ');
49
- return sanitizeVegaComponent(h(Host, { role: ariaLabel ? 'group' : undefined, "aria-label": ariaLabel || undefined }, this.renderer.render()), this.host);
62
+ return sanitizeVegaComponent(h(Host, null, this.renderer.render()), this.host);
50
63
  }
51
64
  static get is() { return "vega-section-title"; }
52
65
  static get encapsulation() { return "shadow"; }
@@ -208,3 +221,6 @@ __decorate([
208
221
  __decorate([
209
222
  InjectVegaSlimmer()
210
223
  ], VegaSectionTitle.prototype, "vegaComponentUsageRuntimeMetricsSlimmer", void 0);
224
+ __decorate([
225
+ InjectVegaSlimmer()
226
+ ], VegaSectionTitle.prototype, "a11yTreeSlimmer", void 0);
@@ -0,0 +1,210 @@
1
+ /**
2
+ * Semantic DTO layer for the A11y Tree.
3
+ *
4
+ * Authoring an A11y Tree with raw `A11yNode` literals asks the developer to
5
+ * think in ARIA terms (`role: 'group'`, `decorative: true`, etc.). The DTO
6
+ * classes here provide a higher-level vocabulary that names the *content's
7
+ * meaning* — "this is a container", "this is a heading", "this is a
8
+ * decorative icon" — and lets the strategy layer translate intent into ARIA.
9
+ *
10
+ * ## Design (Visitor / Strategy + typed semantic DTOs)
11
+ *
12
+ * - DTOs are *type-holders for semantic intent*. They do NOT contain ARIA
13
+ * generation logic themselves.
14
+ * - Each DTO compiles to an `A11yNode` whose `kind` field carries the
15
+ * semantic discriminator. Strategies can then dispatch on `kind`
16
+ * (preferred) or fall back to `role` (for plain `A11yNode` authors).
17
+ * - This keeps strategies pure and independently testable, while letting
18
+ * authors write:
19
+ *
20
+ * ```ts
21
+ * new A11yContainerNode('st-root', { label, description })
22
+ * .childrenWith(
23
+ * new A11yHeadingNode('st-heading', { level: 2, label }),
24
+ * new A11yIconNode('st-icon'),
25
+ * );
26
+ * ```
27
+ *
28
+ * instead of hand-shaping `{ role: 'group', label, description, … }`.
29
+ *
30
+ * ## Migration path
31
+ *
32
+ * Phase 1 (this file): DTOs are an additive layer on top of `A11yNode`.
33
+ * Existing strategies continue to work unchanged because each DTO emits
34
+ * a fully-populated `A11yNode` with `role` set correctly.
35
+ *
36
+ * Phase 2 (follow-up): strategies grow `compileNode(node)` methods that
37
+ * dispatch on `node.kind` for cases where semantic intent is richer than
38
+ * `role` alone can express.
39
+ */
40
+ /**
41
+ * Base class for all semantic DTO nodes. Provides the `childrenWith()`
42
+ * composition helper and the abstract `toA11yNode()` contract.
43
+ */
44
+ export class A11yNodeDto {
45
+ constructor() {
46
+ this.childDtos = [];
47
+ }
48
+ /**
49
+ * Declare the semantic children of this node in reading order.
50
+ *
51
+ * @param {...A11yNodeDto} children - Semantic child DTOs in reading order.
52
+ * @returns {this} `this`, for fluent chaining.
53
+ */
54
+ childrenWith(...children) {
55
+ this.childDtos = children;
56
+ return this;
57
+ }
58
+ /**
59
+ * Compile the declared child DTOs into their `A11yNode` representations.
60
+ *
61
+ * @returns {A11yNode[] | undefined} The compiled children, or `undefined` when none.
62
+ */
63
+ compileChildren() {
64
+ if (this.childDtos.length === 0)
65
+ return undefined;
66
+ return this.childDtos.map((c) => c.toA11yNode());
67
+ }
68
+ }
69
+ /**
70
+ * A generic container that groups related content. Maps to `role="group"`
71
+ * by default; strategies may upgrade to `role="region"` when a description
72
+ * is present and the platform benefits (e.g. Firefox+NVDA landmark
73
+ * navigation — see `firefox-nvda-strategy.ts`).
74
+ */
75
+ export class A11yContainerNode extends A11yNodeDto {
76
+ constructor(id, opts = {}) {
77
+ super();
78
+ this.id = id;
79
+ this.opts = opts;
80
+ this.kind = 'container';
81
+ }
82
+ /**
83
+ * Compile this DTO into its `A11yNode` representation.
84
+ *
85
+ * @returns {A11yNode} The compiled semantic node.
86
+ */
87
+ toA11yNode() {
88
+ return {
89
+ id: this.id,
90
+ kind: this.kind,
91
+ role: 'group',
92
+ label: this.opts.label,
93
+ description: this.opts.description,
94
+ children: this.compileChildren(),
95
+ };
96
+ }
97
+ }
98
+ /**
99
+ * A navigable / discoverable section (landmark). Always renders as
100
+ * `role="region"` so it appears in AT landmark navigation.
101
+ */
102
+ export class A11yLandmarkNode extends A11yNodeDto {
103
+ constructor(id, opts = {}) {
104
+ super();
105
+ this.id = id;
106
+ this.opts = opts;
107
+ this.kind = 'landmark';
108
+ }
109
+ /**
110
+ * Compile this DTO into its `A11yNode` representation.
111
+ *
112
+ * @returns {A11yNode} The compiled semantic node.
113
+ */
114
+ toA11yNode() {
115
+ return {
116
+ id: this.id,
117
+ kind: this.kind,
118
+ role: 'region',
119
+ label: this.opts.label,
120
+ description: this.opts.description,
121
+ children: this.compileChildren(),
122
+ };
123
+ }
124
+ }
125
+ /**
126
+ * A heading at the given level (1–6, defaults to 2).
127
+ *
128
+ * Use this instead of a raw `{ role: 'heading', level: 2 }` literal to
129
+ * benefit from the default-level guard and the `kind` discriminator.
130
+ */
131
+ export class A11yHeadingNode extends A11yNodeDto {
132
+ constructor(id, opts = {}) {
133
+ super();
134
+ this.id = id;
135
+ this.opts = opts;
136
+ this.kind = 'heading';
137
+ }
138
+ /**
139
+ * Compile this DTO into its `A11yNode` representation.
140
+ *
141
+ * @returns {A11yNode} The compiled semantic node.
142
+ */
143
+ toA11yNode() {
144
+ var _a;
145
+ return {
146
+ id: this.id,
147
+ kind: this.kind,
148
+ role: 'heading',
149
+ level: (_a = this.opts.level) !== null && _a !== void 0 ? _a : 2,
150
+ label: this.opts.label,
151
+ children: this.compileChildren(),
152
+ };
153
+ }
154
+ }
155
+ /**
156
+ * A purely decorative icon. `decorative` is always `true` so authors never
157
+ * have to remember the flag — that is the whole point of this DTO class.
158
+ *
159
+ * Produces `aria-hidden="true"` via the baseline strategy; webkit-voiceover
160
+ * additionally sets `role="none"` as a belt-and-suspenders guard.
161
+ */
162
+ export class A11yIconNode extends A11yNodeDto {
163
+ constructor(id) {
164
+ super();
165
+ this.id = id;
166
+ this.kind = 'icon';
167
+ }
168
+ /**
169
+ * Compile this DTO into its `A11yNode` representation.
170
+ *
171
+ * @returns {A11yNode} The compiled semantic node.
172
+ */
173
+ toA11yNode() {
174
+ return {
175
+ id: this.id,
176
+ kind: this.kind,
177
+ role: 'img',
178
+ decorative: true,
179
+ children: this.compileChildren(),
180
+ };
181
+ }
182
+ }
183
+ /**
184
+ * An informative image that requires an accessible label (alt text).
185
+ *
186
+ * Produces `role="img"` + `aria-label` via the baseline strategy.
187
+ * Contrast with `A11yIconNode` which is always decorative.
188
+ */
189
+ export class A11yImageNode extends A11yNodeDto {
190
+ constructor(id, opts) {
191
+ super();
192
+ this.id = id;
193
+ this.opts = opts;
194
+ this.kind = 'image';
195
+ }
196
+ /**
197
+ * Compile this DTO into its `A11yNode` representation.
198
+ *
199
+ * @returns {A11yNode} The compiled semantic node.
200
+ */
201
+ toA11yNode() {
202
+ return {
203
+ id: this.id,
204
+ kind: this.kind,
205
+ role: 'img',
206
+ label: this.opts.label,
207
+ children: this.compileChildren(),
208
+ };
209
+ }
210
+ }