@globalpayments/vega 2.91.0 → 2.92.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 (476) hide show
  1. package/dist/cjs/{app-globals-7bb10088.js → app-globals-2f326662.js} +13 -10
  2. package/dist/cjs/{child-nodes-event-prevent-slimmer-76d19d56.js → child-nodes-event-prevent-slimmer-b9a5b3e2.js} +1 -1
  3. package/dist/cjs/{code-block-c1039791.js → code-block-6435d641.js} +24 -1
  4. package/dist/cjs/{component-value-history-controller-slimmer.abstract-1d36641d.js → component-value-history-controller-slimmer.abstract-e4c9a5ba.js} +3 -3
  5. package/dist/cjs/{content-state-a6105949.js → content-state-96ec9114.js} +32 -3
  6. package/dist/cjs/copy-d021c780.js +7 -0
  7. package/dist/cjs/{date-required-rule-c4997459.js → date-required-rule-8c9e312b.js} +1 -1
  8. package/dist/cjs/{design-token-f65eab4a.js → design-token-3548af29.js} +3 -3
  9. package/dist/cjs/{element-appender-slimmer-316668d0.js → element-appender-slimmer-3bf69990.js} +3 -3
  10. package/dist/cjs/{file-uploader-required-rule-cc51d4ab.js → file-uploader-required-rule-5520bbec.js} +1 -1
  11. package/dist/cjs/{form-field-controller-slimmer-b0c35330.js → form-field-controller-slimmer-e0efac05.js} +1 -1
  12. package/dist/cjs/{image-annotation-action-e4596726.js → image-annotation-action-853f72c8.js} +2 -2
  13. package/dist/cjs/index-58ea899e.js +4 -0
  14. package/dist/cjs/index.cjs.js +25 -20
  15. package/dist/cjs/{inject-keyboard-manager-1f5bbb19.js → inject-keyboard-manager-0dccff1a.js} +1 -1
  16. package/dist/cjs/{internal-calendar-period-factory-9c66cf36.js → internal-calendar-period-factory-6187ec4c.js} +1 -1
  17. package/dist/cjs/{internal-translation-controller-5905469e.js → internal-translation-controller-48ebfd0f.js} +14 -0
  18. package/dist/cjs/{keyboard-manager-61e8ce38.js → keyboard-manager-dfe8d924.js} +1 -1
  19. package/dist/cjs/{keyboard-manager-slimmer-079a7e87.js → keyboard-manager-slimmer-4a2560a1.js} +1 -1
  20. package/dist/cjs/{link-extension-a7ac28f3.js → link-extension-28d95849.js} +3 -3
  21. package/dist/cjs/loader.cjs.js +14 -13
  22. package/dist/cjs/{month-view-generator-48215a05.js → month-view-generator-2e59b188.js} +1 -1
  23. package/dist/cjs/{public-rules-66540638.js → public-rules-8727c42c.js} +10 -10
  24. package/dist/cjs/{range-dea19a90.js → range-5cb3d1e4.js} +25 -3
  25. package/dist/cjs/{replace-selected-text-action-6d1ebbf9.js → replace-selected-text-action-a31563ed.js} +1 -1
  26. package/dist/cjs/{required-field-rule-b12a29e1.js → required-field-rule-400690c3.js} +1 -1
  27. package/dist/cjs/{responsive-format-facade-10ff730e.js → responsive-format-facade-98b89142.js} +2 -2
  28. package/dist/cjs/{rich-text-editor-required-rule-63492ca3.js → rich-text-editor-required-rule-8e4d577d.js} +1 -1
  29. package/dist/cjs/{split-cell-operation-30e5dd4a.js → split-cell-operation-9e3ab88d.js} +3 -3
  30. package/dist/cjs/{state-border-formatter-e7779964.js → state-border-formatter-626b0a14.js} +1 -1
  31. package/dist/cjs/{string-format-strategy.abstract-a22f0cb1.js → string-format-strategy.abstract-981f43e1.js} +1 -1
  32. package/dist/cjs/{string-input-formatter-slimmer-8179eb40.js → string-input-formatter-slimmer-fc4a0ba5.js} +1 -1
  33. package/dist/cjs/{string-mask-strategy-8b9bb0c1.js → string-mask-strategy-b47fa159.js} +2 -2
  34. package/dist/cjs/{style-formatter-380b9a86.js → style-formatter-baf18624.js} +2 -2
  35. package/dist/cjs/{time-required-rule-080d975b.js → time-required-rule-e77d174f.js} +1 -1
  36. package/dist/cjs/{token-extension-619379a3.js → token-extension-3aec039f.js} +1609 -15
  37. package/dist/cjs/{translation-slimmer-2af6f141.js → translation-slimmer-1e05769e.js} +1 -1
  38. package/dist/cjs/{type-guard-0171e779.js → type-guard-7ab48d6c.js} +1 -1
  39. package/dist/cjs/{valid-credit-card-number-rule-fdfca83e.js → valid-credit-card-number-rule-52ba9c67.js} +1 -1
  40. package/dist/cjs/vega-accordion.cjs.entry.js +18 -10
  41. package/dist/cjs/vega-app-header-button.cjs.entry.js +7 -7
  42. package/dist/cjs/vega-banner.cjs.entry.js +3 -6
  43. package/dist/cjs/vega-box.cjs.entry.js +7 -7
  44. package/dist/cjs/vega-breadcrumb.cjs.entry.js +2 -2
  45. package/dist/cjs/vega-button-circle.cjs.entry.js +7 -7
  46. package/dist/cjs/vega-button-group_2.cjs.entry.js +2 -2
  47. package/dist/cjs/vega-button-link.cjs.entry.js +2 -2
  48. package/dist/cjs/vega-button.cjs.entry.js +5 -5
  49. package/dist/cjs/vega-calendar_5.cjs.entry.js +9 -9
  50. package/dist/cjs/vega-card.cjs.entry.js +6 -6
  51. package/dist/cjs/vega-carousel.cjs.entry.js +4 -4
  52. package/dist/cjs/vega-checkbox_2.cjs.entry.js +5 -5
  53. package/dist/cjs/vega-chip.cjs.entry.js +7 -7
  54. package/dist/cjs/vega-code-block.cjs.entry.js +12 -15
  55. package/dist/cjs/vega-color-picker.cjs.entry.js +4 -4
  56. package/dist/cjs/vega-color-swatch-picker.cjs.entry.js +6 -6
  57. package/dist/cjs/vega-color-swatch.cjs.entry.js +2 -2
  58. package/dist/cjs/vega-combo-box.cjs.entry.js +11 -11
  59. package/dist/cjs/vega-date-picker_2.cjs.entry.js +15 -15
  60. package/dist/cjs/vega-dialog_2.cjs.entry.js +5 -5
  61. package/dist/cjs/vega-divider.cjs.entry.js +6 -6
  62. package/dist/cjs/vega-dropdown_5.cjs.entry.js +9 -9
  63. package/dist/cjs/vega-env-manager-23b8b23c.js +2 -2
  64. package/dist/cjs/vega-field-label.cjs.entry.js +13 -9
  65. package/dist/cjs/vega-file-uploader.cjs.entry.js +6 -6
  66. package/dist/cjs/vega-flag-icon.cjs.entry.js +6 -6
  67. package/dist/cjs/vega-flex.cjs.entry.js +7 -7
  68. package/dist/cjs/vega-font.cjs.entry.js +6 -6
  69. package/dist/cjs/vega-form.cjs.entry.js +5 -5
  70. package/dist/cjs/vega-grid.cjs.entry.js +6 -6
  71. package/dist/cjs/vega-icon.cjs.entry.js +6 -6
  72. package/dist/cjs/vega-image-uploader.cjs.entry.js +8 -8
  73. package/dist/cjs/vega-input-credit-card.cjs.entry.js +9 -9
  74. package/dist/cjs/vega-input-numeric.cjs.entry.js +8 -8
  75. package/dist/cjs/vega-input-passcode.cjs.entry.js +8 -8
  76. package/dist/cjs/vega-input-phone-number.cjs.entry.js +6 -6
  77. package/dist/cjs/vega-input-range.cjs.entry.js +5 -5
  78. package/dist/cjs/vega-input-select.cjs.entry.js +8 -8
  79. package/dist/cjs/vega-input.cjs.entry.js +9 -9
  80. package/dist/cjs/vega-left-nav_5.cjs.entry.js +8 -8
  81. package/dist/cjs/vega-loader-wrapper_2.cjs.entry.js +4 -4
  82. package/dist/cjs/vega-pagination-page-selector-mobile.cjs.entry.js +2 -2
  83. package/dist/cjs/vega-pagination-page-size-selector-mobile.cjs.entry.js +2 -2
  84. package/dist/cjs/vega-pagination.cjs.entry.js +6 -6
  85. package/dist/cjs/vega-popover_2.cjs.entry.js +9 -9
  86. package/dist/cjs/vega-progress-tracker_2.cjs.entry.js +4 -4
  87. package/dist/cjs/vega-radio_2.cjs.entry.js +8 -8
  88. package/dist/cjs/vega-rich-text-content.cjs.entry.js +6 -6
  89. package/dist/cjs/vega-rich-text-editor_4.cjs.entry.js +220 -48
  90. package/dist/cjs/vega-rich-text-find-replace-panel.cjs.entry.js +233 -0
  91. package/dist/cjs/vega-rich-text-special-characters-panel.cjs.entry.js +5 -5
  92. package/dist/cjs/vega-rich-text-table-properties_3.cjs.entry.js +11 -11
  93. package/dist/cjs/vega-selection-chip_2.cjs.entry.js +7 -7
  94. package/dist/cjs/vega-selection-tile_2.cjs.entry.js +5 -5
  95. package/dist/cjs/vega-sidenav_3.cjs.entry.js +4 -4
  96. package/dist/cjs/vega-signature-capture.cjs.entry.js +9 -9
  97. package/dist/cjs/vega-stepper.cjs.entry.js +4 -4
  98. package/dist/cjs/vega-tab-group_2.cjs.entry.js +2 -2
  99. package/dist/cjs/vega-table_11.cjs.entry.js +6 -6
  100. package/dist/cjs/vega-textarea.cjs.entry.js +5 -5
  101. package/dist/cjs/vega-time-picker_2.cjs.entry.js +11 -11
  102. package/dist/cjs/vega-toggle-switch.cjs.entry.js +2 -2
  103. package/dist/cjs/vega-tooltip_2.cjs.entry.js +7 -7
  104. package/dist/cjs/vega.cjs.js +14 -13
  105. package/dist/cjs/xmark-large-faae5a80.js +7 -0
  106. package/dist/collection/collection-manifest.json +6 -0
  107. package/dist/collection/components/vega-accordion/slimmers/vega-accordion-renderer.js +11 -3
  108. package/dist/collection/components/vega-box/vega-box.js +3 -3
  109. package/dist/collection/components/vega-code-block/slimmers/renderers/vega-code-block-copy-button-renderer.js +1 -1
  110. package/dist/collection/components/vega-field-label/slimmers/renderers/vega-field-label-suffix-element-renderer.js +5 -4
  111. package/dist/collection/components/vega-field-label/vega-field-label.css +20 -0
  112. package/dist/collection/components/vega-field-label/vega-field-label.js +6 -3
  113. package/dist/collection/components/vega-input/vega-input.css +1 -0
  114. package/dist/collection/components/vega-input/vega-input.js +1 -1
  115. package/dist/collection/components/vega-input-select/vega-input-select.js +1 -1
  116. package/dist/collection/components/vega-rich-text-editor/assets/cut.js +3 -0
  117. package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/block-delete-text-or-decorator-node-strategy.js +16 -1
  118. package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/block-merge-nodes-strategy.js +25 -0
  119. package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/delete-selected-content-strategy.js +16 -0
  120. package/dist/collection/components/vega-rich-text-editor/dto/actions/delete-selected-content-action.js +17 -0
  121. package/dist/collection/components/vega-rich-text-editor/dto/actions/modify-content-action.abstract.js +1 -0
  122. package/dist/collection/components/vega-rich-text-editor/dto/content-state.js +2 -0
  123. package/dist/collection/components/vega-rich-text-editor/dto/range.js +24 -2
  124. package/dist/collection/components/vega-rich-text-editor/extensions/copy/action-handler-strategies/copy-selected-content-strategy.js +226 -0
  125. package/dist/collection/components/vega-rich-text-editor/extensions/copy/actions/copy-selected-content-action.js +21 -0
  126. package/dist/collection/components/vega-rich-text-editor/extensions/copy/copy-extension.js +20 -0
  127. package/dist/collection/components/vega-rich-text-editor/extensions/copy/copy-toolbar-button-renderer.js +58 -0
  128. package/dist/collection/components/vega-rich-text-editor/extensions/cut/cut-extension.js +15 -0
  129. package/dist/collection/components/vega-rich-text-editor/extensions/cut/cut-toolbar-button-renderer.js +44 -0
  130. package/dist/collection/components/vega-rich-text-editor/extensions/find-replace/assets/find-and-replace.js +3 -0
  131. package/dist/collection/components/vega-rich-text-editor/extensions/find-replace/find-replace-extension.js +18 -0
  132. package/dist/collection/components/vega-rich-text-editor/extensions/find-replace/slimmer/controllers/find-controller.js +105 -0
  133. package/dist/collection/components/vega-rich-text-editor/extensions/find-replace/slimmer/controllers/find-replace-controller.abstract.js +68 -0
  134. package/dist/collection/components/vega-rich-text-editor/extensions/find-replace/slimmer/controllers/helper/block-search-strategies/block-search-strategy.abstract.js +8 -0
  135. package/dist/collection/components/vega-rich-text-editor/extensions/find-replace/slimmer/controllers/helper/block-search-strategies/code-block-search-strategy.js +19 -0
  136. package/dist/collection/components/vega-rich-text-editor/extensions/find-replace/slimmer/controllers/helper/block-search-strategies/container-block-search-strategy.js +23 -0
  137. package/dist/collection/components/vega-rich-text-editor/extensions/find-replace/slimmer/controllers/helper/block-search-strategies/list-item-block-search-strategy.js +30 -0
  138. package/dist/collection/components/vega-rich-text-editor/extensions/find-replace/slimmer/controllers/helper/block-search-strategies/text-block-search-strategy.js +20 -0
  139. package/dist/collection/components/vega-rich-text-editor/extensions/find-replace/slimmer/controllers/helper/find-replace-highlight-manager.js +266 -0
  140. package/dist/collection/components/vega-rich-text-editor/extensions/find-replace/slimmer/controllers/helper/find-replace-state.js +346 -0
  141. package/dist/collection/components/vega-rich-text-editor/extensions/find-replace/slimmer/controllers/replace-controller.js +113 -0
  142. package/dist/collection/components/vega-rich-text-editor/extensions/find-replace/slimmer/renderers/find-replace-toolbar-button-renderer.js +194 -0
  143. package/dist/collection/components/vega-rich-text-editor/extensions/find-replace/vega-rich-text-find-replace-panel/slimmers/renderers/find-replace-panel-renderer.js +153 -0
  144. package/dist/collection/components/vega-rich-text-editor/extensions/find-replace/vega-rich-text-find-replace-panel/vega-rich-text-find-replace-panel.css +50 -0
  145. package/dist/collection/components/vega-rich-text-editor/extensions/find-replace/vega-rich-text-find-replace-panel/vega-rich-text-find-replace-panel.js +156 -0
  146. package/dist/collection/components/vega-rich-text-editor/extensions/functions/function-extension.js +2 -1
  147. package/dist/collection/components/vega-rich-text-editor/extensions/horizontal-line/horizontal-line-extension.js +2 -1
  148. package/dist/collection/components/vega-rich-text-editor/extensions/languages/language-extension.js +2 -1
  149. package/dist/collection/components/vega-rich-text-editor/extensions/line-height/line-height-extension.js +2 -1
  150. package/dist/collection/components/vega-rich-text-editor/extensions/special-characters/special-characters-extension.js +2 -1
  151. package/dist/collection/components/vega-rich-text-editor/extensions/table/table-extension.js +2 -1
  152. package/dist/collection/components/vega-rich-text-editor/extensions/table/vega-rich-text-table-selection-widget/slimmers/controllers/selection-widget-keyboard-controller.js +1 -1
  153. package/dist/collection/components/vega-rich-text-editor/extensions/tokens/token-extension.js +2 -1
  154. package/dist/collection/components/vega-rich-text-editor/public-api.js +4 -0
  155. package/dist/collection/components/vega-rich-text-editor/slimmers/controllers/helper/input-event-handler/abstract-delete-content-handler.js +133 -0
  156. package/dist/collection/components/vega-rich-text-editor/slimmers/controllers/helper/input-event-handler/backward-delete-content-handler.js +35 -0
  157. package/dist/collection/components/vega-rich-text-editor/slimmers/controllers/helper/input-event-handler/forward-delete-content-handler.js +93 -0
  158. package/dist/collection/components/vega-rich-text-editor/slimmers/controllers/user-input-controller.js +9 -3
  159. package/dist/collection/components/vega-textarea/vega-textarea.js +1 -1
  160. package/dist/collection/global/scripts/before-vega-load.js +6 -0
  161. package/dist/collection/helpers/translation/locales/en.js +14 -0
  162. package/dist/esm/{app-globals-6041f52f.js → app-globals-5e0d319a.js} +13 -10
  163. package/dist/esm/{aria-dialog-focusable-trap-slimmer-1332c071.js → aria-dialog-focusable-trap-slimmer-9eae86c6.js} +1 -1
  164. package/dist/esm/{child-nodes-event-prevent-slimmer-50022584.js → child-nodes-event-prevent-slimmer-f24618c5.js} +2 -2
  165. package/dist/esm/{code-block-37294847.js → code-block-b71b2aa4.js} +26 -3
  166. package/dist/esm/{component-value-history-controller-slimmer.abstract-45ccddc9.js → component-value-history-controller-slimmer.abstract-282df6e5.js} +4 -4
  167. package/dist/esm/{content-state-67950b80.js → content-state-909099f8.js} +33 -4
  168. package/dist/esm/copy-54e45e2d.js +5 -0
  169. package/dist/esm/{date-required-rule-958cf380.js → date-required-rule-15edb04a.js} +1 -1
  170. package/dist/esm/{design-token-e7e78f18.js → design-token-cb5ed6b9.js} +3 -3
  171. package/dist/esm/{element-appender-slimmer-ebda526d.js → element-appender-slimmer-e41120ee.js} +4 -4
  172. package/dist/esm/{event-emit-slimmer-b94cec83.js → event-emit-slimmer-03deba18.js} +1 -1
  173. package/dist/esm/{file-uploader-required-rule-82188a61.js → file-uploader-required-rule-96952e1a.js} +1 -1
  174. package/dist/esm/{form-field-controller-slimmer-0a2ba886.js → form-field-controller-slimmer-cfe1d8a7.js} +3 -3
  175. package/dist/esm/{image-annotation-action-7f7a5678.js → image-annotation-action-98232dc4.js} +3 -3
  176. package/dist/esm/index-090d31ca.js +4 -0
  177. package/dist/esm/index.js +24 -23
  178. package/dist/esm/{inject-keyboard-manager-2b19c121.js → inject-keyboard-manager-13cc77ab.js} +1 -1
  179. package/dist/esm/{internal-calendar-period-factory-fff8aaee.js → internal-calendar-period-factory-c3d70f3b.js} +1 -1
  180. package/dist/esm/{internal-translation-controller-aa09ca87.js → internal-translation-controller-8e8a514a.js} +14 -0
  181. package/dist/esm/{internal-vega-event-manager-956cf128.js → internal-vega-event-manager-75e5e3bb.js} +1 -1
  182. package/dist/esm/{keyboard-manager-3e5b157f.js → keyboard-manager-fe885db1.js} +1 -1
  183. package/dist/esm/{keyboard-manager-slimmer-ba5cc767.js → keyboard-manager-slimmer-61d4c79b.js} +1 -1
  184. package/dist/esm/{link-extension-afb404fb.js → link-extension-f1a3bea7.js} +3 -3
  185. package/dist/esm/loader.js +17 -16
  186. package/dist/esm/{month-view-generator-7a0c869c.js → month-view-generator-85eecb95.js} +1 -1
  187. package/dist/esm/{public-rules-f64b0b78.js → public-rules-323bea4b.js} +11 -11
  188. package/dist/esm/{range-4d09a305.js → range-e63068d1.js} +25 -3
  189. package/dist/esm/{replace-selected-text-action-12bc8b82.js → replace-selected-text-action-c0817b2b.js} +1 -1
  190. package/dist/esm/{required-field-rule-a4634842.js → required-field-rule-897fe8d1.js} +1 -1
  191. package/dist/esm/{responsive-format-facade-844c5e09.js → responsive-format-facade-fb424f5b.js} +2 -2
  192. package/dist/esm/{rich-text-editor-required-rule-d62d418e.js → rich-text-editor-required-rule-0edb8ba7.js} +1 -1
  193. package/dist/esm/{split-cell-operation-c515669e.js → split-cell-operation-93b4d775.js} +3 -3
  194. package/dist/esm/{state-border-formatter-f53847a5.js → state-border-formatter-1a528ca4.js} +1 -1
  195. package/dist/esm/{string-format-strategy.abstract-a0327405.js → string-format-strategy.abstract-72fc98aa.js} +1 -1
  196. package/dist/esm/{string-input-formatter-slimmer-12de4a25.js → string-input-formatter-slimmer-b0c480d8.js} +3 -3
  197. package/dist/esm/{string-mask-strategy-3bb03155.js → string-mask-strategy-4e00c173.js} +2 -2
  198. package/dist/esm/{style-formatter-df7bf8ec.js → style-formatter-5c1bea8d.js} +2 -2
  199. package/dist/esm/{sub-state-notify-slimmer-7ef94141.js → sub-state-notify-slimmer-0f72ce74.js} +1 -1
  200. package/dist/esm/{sub-state-observer-slimmer-d9ad2bdd.js → sub-state-observer-slimmer-64532d94.js} +1 -1
  201. package/dist/esm/{time-required-rule-db0dee53.js → time-required-rule-df500b14.js} +1 -1
  202. package/dist/esm/{token-extension-8ff92d14.js → token-extension-32d1fa56.js} +1610 -20
  203. package/dist/esm/{translation-slimmer-4904e7fe.js → translation-slimmer-60408f13.js} +1 -1
  204. package/dist/esm/{type-guard-a2cbaae9.js → type-guard-91087018.js} +1 -1
  205. package/dist/esm/{valid-credit-card-number-rule-a3f9858d.js → valid-credit-card-number-rule-681ecb75.js} +1 -1
  206. package/dist/esm/vega-accordion.entry.js +21 -13
  207. package/dist/esm/vega-app-footer.entry.js +3 -3
  208. package/dist/esm/vega-app-header-button.entry.js +10 -10
  209. package/dist/esm/vega-banner.entry.js +5 -8
  210. package/dist/esm/vega-box.entry.js +7 -7
  211. package/dist/esm/vega-breadcrumb.entry.js +5 -5
  212. package/dist/esm/vega-button-circle.entry.js +11 -11
  213. package/dist/esm/vega-button-group_2.entry.js +8 -8
  214. package/dist/esm/vega-button-link.entry.js +5 -5
  215. package/dist/esm/vega-button.entry.js +9 -9
  216. package/dist/esm/vega-calendar_5.entry.js +15 -15
  217. package/dist/esm/vega-card.entry.js +6 -6
  218. package/dist/esm/vega-carousel.entry.js +7 -7
  219. package/dist/esm/vega-checkbox_2.entry.js +10 -10
  220. package/dist/esm/vega-chip.entry.js +10 -10
  221. package/dist/esm/vega-code-block.entry.js +15 -18
  222. package/dist/esm/vega-color-picker.entry.js +9 -9
  223. package/dist/esm/vega-color-swatch-picker.entry.js +11 -11
  224. package/dist/esm/vega-color-swatch.entry.js +5 -5
  225. package/dist/esm/vega-combo-box.entry.js +16 -16
  226. package/dist/esm/vega-date-picker_2.entry.js +22 -22
  227. package/dist/esm/vega-dialog_2.entry.js +10 -10
  228. package/dist/esm/vega-divider.entry.js +6 -6
  229. package/dist/esm/vega-dropdown_5.entry.js +16 -16
  230. package/dist/esm/vega-env-manager-8f8dc473.js +2 -2
  231. package/dist/esm/{vega-event-id-268f8def.js → vega-event-id-d3017041.js} +1 -1
  232. package/dist/esm/vega-field-label.entry.js +16 -12
  233. package/dist/esm/vega-file-uploader.entry.js +11 -11
  234. package/dist/esm/vega-flag-icon.entry.js +6 -6
  235. package/dist/esm/vega-flex.entry.js +7 -7
  236. package/dist/esm/vega-font.entry.js +6 -6
  237. package/dist/esm/vega-form.entry.js +11 -11
  238. package/dist/esm/vega-grid.entry.js +6 -6
  239. package/dist/esm/vega-icon.entry.js +6 -6
  240. package/dist/esm/vega-image-uploader.entry.js +13 -13
  241. package/dist/esm/vega-input-credit-card.entry.js +14 -14
  242. package/dist/esm/vega-input-numeric.entry.js +14 -14
  243. package/dist/esm/vega-input-passcode.entry.js +13 -13
  244. package/dist/esm/vega-input-phone-number.entry.js +11 -11
  245. package/dist/esm/vega-input-range.entry.js +10 -10
  246. package/dist/esm/vega-input-select.entry.js +13 -13
  247. package/dist/esm/vega-input.entry.js +15 -15
  248. package/dist/esm/{vega-internal-event-id-22151a4d.js → vega-internal-event-id-827eb1ce.js} +1 -1
  249. package/dist/esm/vega-item-toggle.entry.js +3 -3
  250. package/dist/esm/vega-left-nav_5.entry.js +14 -14
  251. package/dist/esm/vega-loader-wrapper_2.entry.js +4 -4
  252. package/dist/esm/vega-page-notification_2.entry.js +1 -1
  253. package/dist/esm/vega-pagination-page-selector-mobile.entry.js +5 -5
  254. package/dist/esm/vega-pagination-page-size-selector-mobile.entry.js +4 -4
  255. package/dist/esm/vega-pagination.entry.js +10 -10
  256. package/dist/esm/vega-popover_2.entry.js +14 -14
  257. package/dist/esm/vega-progress-tracker_2.entry.js +10 -10
  258. package/dist/esm/vega-radio_2.entry.js +13 -13
  259. package/dist/esm/vega-rich-text-content.entry.js +10 -10
  260. package/dist/esm/vega-rich-text-editor_4.entry.js +227 -55
  261. package/dist/esm/vega-rich-text-find-replace-panel.entry.js +229 -0
  262. package/dist/esm/vega-rich-text-special-characters-panel.entry.js +8 -8
  263. package/dist/esm/vega-rich-text-table-properties_3.entry.js +14 -14
  264. package/dist/esm/vega-segment-control.entry.js +3 -3
  265. package/dist/esm/vega-selection-chip_2.entry.js +13 -13
  266. package/dist/esm/vega-selection-tile_2.entry.js +11 -11
  267. package/dist/esm/vega-sidenav_3.entry.js +10 -10
  268. package/dist/esm/vega-signature-capture.entry.js +14 -14
  269. package/dist/esm/vega-stepper.entry.js +9 -9
  270. package/dist/esm/vega-tab-group_2.entry.js +5 -5
  271. package/dist/esm/vega-table_11.entry.js +12 -12
  272. package/dist/esm/vega-textarea.entry.js +10 -10
  273. package/dist/esm/vega-time-picker_2.entry.js +16 -16
  274. package/dist/esm/vega-toggle-switch.entry.js +7 -7
  275. package/dist/esm/vega-tooltip_2.entry.js +8 -8
  276. package/dist/esm/vega.js +17 -16
  277. package/dist/esm/{wait-for-component-did-render-0488922a.js → wait-for-component-did-render-0c237cb8.js} +1 -1
  278. package/dist/esm/xmark-large-c5ae7944.js +5 -0
  279. package/dist/sri/vega-sri-manifest.json +387 -375
  280. package/dist/types/components/vega-accordion/slimmers/vega-accordion-renderer.d.ts +2 -0
  281. package/dist/types/components/vega-field-label/slimmers/renderers/vega-field-label-suffix-element-renderer.d.ts +1 -0
  282. package/dist/types/components/vega-field-label/types.d.ts +12 -0
  283. package/dist/types/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/block-merge-nodes-strategy.d.ts +9 -0
  284. package/dist/types/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/delete-selected-content-strategy.d.ts +13 -0
  285. package/dist/types/components/vega-rich-text-editor/dto/actions/delete-selected-content-action.d.ts +12 -0
  286. package/dist/types/components/vega-rich-text-editor/dto/actions/modify-content-action.abstract.d.ts +2 -1
  287. package/dist/types/components/vega-rich-text-editor/dto/range.d.ts +16 -0
  288. package/dist/types/components/vega-rich-text-editor/extensions/copy/action-handler-strategies/copy-selected-content-strategy.d.ts +79 -0
  289. package/dist/types/components/vega-rich-text-editor/extensions/copy/actions/copy-selected-content-action.d.ts +18 -0
  290. package/dist/types/components/vega-rich-text-editor/extensions/copy/copy-extension.d.ts +10 -0
  291. package/dist/types/components/vega-rich-text-editor/extensions/copy/copy-toolbar-button-renderer.d.ts +36 -0
  292. package/dist/types/components/vega-rich-text-editor/extensions/cut/cut-extension.d.ts +11 -0
  293. package/dist/types/components/vega-rich-text-editor/extensions/cut/cut-toolbar-button-renderer.d.ts +24 -0
  294. package/dist/types/components/vega-rich-text-editor/extensions/find-replace/assets/find-and-replace.d.ts +3 -0
  295. package/dist/types/components/vega-rich-text-editor/extensions/find-replace/find-replace-extension.d.ts +15 -0
  296. package/dist/types/components/vega-rich-text-editor/extensions/find-replace/slimmer/controllers/find-controller.d.ts +65 -0
  297. package/dist/types/components/vega-rich-text-editor/extensions/find-replace/slimmer/controllers/find-replace-controller.abstract.d.ts +65 -0
  298. package/dist/types/components/vega-rich-text-editor/extensions/find-replace/slimmer/controllers/helper/block-search-strategies/block-search-strategy.abstract.d.ts +29 -0
  299. package/dist/types/components/vega-rich-text-editor/extensions/find-replace/slimmer/controllers/helper/block-search-strategies/code-block-search-strategy.d.ts +17 -0
  300. package/dist/types/components/vega-rich-text-editor/extensions/find-replace/slimmer/controllers/helper/block-search-strategies/container-block-search-strategy.d.ts +21 -0
  301. package/dist/types/components/vega-rich-text-editor/extensions/find-replace/slimmer/controllers/helper/block-search-strategies/list-item-block-search-strategy.d.ts +21 -0
  302. package/dist/types/components/vega-rich-text-editor/extensions/find-replace/slimmer/controllers/helper/block-search-strategies/text-block-search-strategy.d.ts +18 -0
  303. package/dist/types/components/vega-rich-text-editor/extensions/find-replace/slimmer/controllers/helper/find-replace-highlight-manager.d.ts +88 -0
  304. package/dist/types/components/vega-rich-text-editor/extensions/find-replace/slimmer/controllers/helper/find-replace-state.d.ts +200 -0
  305. package/dist/types/components/vega-rich-text-editor/extensions/find-replace/slimmer/controllers/replace-controller.d.ts +73 -0
  306. package/dist/types/components/vega-rich-text-editor/extensions/find-replace/slimmer/renderers/find-replace-toolbar-button-renderer.d.ts +64 -0
  307. package/dist/types/components/vega-rich-text-editor/extensions/find-replace/vega-rich-text-find-replace-panel/slimmers/renderers/find-replace-panel-renderer.d.ts +28 -0
  308. package/dist/types/components/vega-rich-text-editor/extensions/find-replace/vega-rich-text-find-replace-panel/vega-rich-text-find-replace-panel.d.ts +56 -0
  309. package/dist/types/components/vega-rich-text-editor/extensions/functions/function-extension.d.ts +1 -0
  310. package/dist/types/components/vega-rich-text-editor/extensions/horizontal-line/horizontal-line-extension.d.ts +1 -0
  311. package/dist/types/components/vega-rich-text-editor/extensions/languages/language-extension.d.ts +1 -0
  312. package/dist/types/components/vega-rich-text-editor/extensions/line-height/line-height-extension.d.ts +1 -0
  313. package/dist/types/components/vega-rich-text-editor/extensions/special-characters/special-characters-extension.d.ts +1 -0
  314. package/dist/types/components/vega-rich-text-editor/extensions/table/table-extension.d.ts +1 -0
  315. package/dist/types/components/vega-rich-text-editor/extensions/tokens/token-extension.d.ts +1 -0
  316. package/dist/types/components/vega-rich-text-editor/public-api.d.ts +4 -0
  317. package/dist/types/components/vega-rich-text-editor/slimmers/controllers/helper/input-event-handler/abstract-delete-content-handler.d.ts +60 -0
  318. package/dist/types/components/vega-rich-text-editor/slimmers/controllers/helper/input-event-handler/backward-delete-content-handler.d.ts +8 -0
  319. package/dist/types/components/vega-rich-text-editor/slimmers/controllers/helper/input-event-handler/forward-delete-content-handler.d.ts +8 -0
  320. package/dist/types/components/vega-rich-text-editor/slimmers/controllers/user-input-controller.d.ts +2 -1
  321. package/dist/types/components.d.ts +34 -0
  322. package/dist/types/global/icons/copy.d.ts +3 -0
  323. package/dist/types/helpers/translation/interface.d.ts +15 -1
  324. package/dist/types/types/ui.type.d.ts +1 -1
  325. package/dist/vega/index.esm.js +1 -1
  326. package/dist/vega/{p-cb4033ef.js → p-0179f55d.js} +1 -1
  327. package/dist/vega/{p-8bc23bcf.entry.js → p-06c2ce2c.entry.js} +1 -1
  328. package/dist/vega/{p-fb1ef3e6.entry.js → p-07b56f2b.entry.js} +1 -1
  329. package/dist/vega/{p-141f74ff.js → p-136226f8.js} +1 -1
  330. package/dist/vega/{p-e9a82603.entry.js → p-18413b62.entry.js} +1 -1
  331. package/dist/vega/p-209e0166.js +1 -0
  332. package/dist/vega/{p-014e2cf9.js → p-228c5de8.js} +1 -1
  333. package/dist/vega/{p-cc8bf6e7.entry.js → p-22f73e6e.entry.js} +1 -1
  334. package/dist/vega/p-2314494a.entry.js +1 -0
  335. package/dist/vega/p-2353b64f.entry.js +1 -0
  336. package/dist/vega/p-29e3eb12.js +1 -0
  337. package/dist/vega/p-2da12975.entry.js +1 -0
  338. package/dist/vega/{p-8019c156.js → p-2def8e3e.js} +1 -1
  339. package/dist/vega/{p-5bed3fd2.entry.js → p-2e58d99e.entry.js} +1 -1
  340. package/dist/vega/{p-bb0040d4.entry.js → p-30561e1d.entry.js} +1 -1
  341. package/dist/vega/{p-fc103347.entry.js → p-35df0f0a.entry.js} +1 -1
  342. package/dist/vega/{p-15da9d58.entry.js → p-37dffdf6.entry.js} +1 -1
  343. package/dist/vega/{p-5ffc7cb8.js → p-3a68b729.js} +1 -1
  344. package/dist/vega/{p-507612f6.entry.js → p-3cf4339a.entry.js} +1 -1
  345. package/dist/vega/{p-4cef4812.js → p-3f183b52.js} +1 -1
  346. package/dist/vega/{p-42ed76ee.entry.js → p-40501057.entry.js} +1 -1
  347. package/dist/vega/{p-12b5c5e3.entry.js → p-438b7404.entry.js} +1 -1
  348. package/dist/vega/{p-8982796b.entry.js → p-43c3848f.entry.js} +1 -1
  349. package/dist/vega/{p-9756c6b9.entry.js → p-450bf94d.entry.js} +1 -1
  350. package/dist/vega/{p-0e03daa6.js → p-45ab490c.js} +1 -1
  351. package/dist/vega/{p-94845302.entry.js → p-481601c0.entry.js} +1 -1
  352. package/dist/vega/{p-0707aa21.js → p-4953bb1a.js} +1 -1
  353. package/dist/vega/{p-2b22091e.js → p-4d9061fb.js} +1 -1
  354. package/dist/vega/{p-b2f9698a.entry.js → p-4e39adf5.entry.js} +1 -1
  355. package/dist/vega/{p-316a1e5c.entry.js → p-5038b6d7.entry.js} +1 -1
  356. package/dist/vega/{p-3cf298a4.entry.js → p-5319da71.entry.js} +1 -1
  357. package/dist/vega/p-53c76d9d.entry.js +1 -0
  358. package/dist/vega/{p-64b5fe2a.entry.js → p-5545a235.entry.js} +1 -1
  359. package/dist/vega/{p-c75872a4.entry.js → p-56cf1a65.entry.js} +1 -1
  360. package/dist/vega/{p-216ef41e.entry.js → p-5829a66d.entry.js} +1 -1
  361. package/dist/vega/p-590c8720.entry.js +1 -0
  362. package/dist/vega/{p-5e282e41.js → p-5946fadf.js} +1 -1
  363. package/dist/vega/{p-822f70b0.js → p-5beec481.js} +1 -1
  364. package/dist/vega/p-5de1acdb.js +1 -0
  365. package/dist/vega/p-5df9047c.js +1 -0
  366. package/dist/vega/p-5f377954.js +1 -1
  367. package/dist/vega/{p-aaa6e976.entry.js → p-625351a3.entry.js} +1 -1
  368. package/dist/vega/p-683cfe24.js +1 -0
  369. package/dist/vega/p-68e16c70.entry.js +1 -0
  370. package/dist/vega/{p-ef44d516.js → p-70817cf5.js} +1 -1
  371. package/dist/vega/{p-a14d8767.js → p-71e2a3ec.js} +1 -1
  372. package/dist/vega/{p-a4826f3f.entry.js → p-7798254d.entry.js} +1 -1
  373. package/dist/vega/p-7be548a7.js +1 -0
  374. package/dist/vega/{p-4037126d.js → p-802bf369.js} +1 -1
  375. package/dist/vega/{p-b77e85e0.entry.js → p-82279b03.entry.js} +1 -1
  376. package/dist/vega/{p-f362c07b.entry.js → p-8509c140.entry.js} +1 -1
  377. package/dist/vega/p-88a6c89a.js +1 -0
  378. package/dist/vega/p-890a5254.js +1 -0
  379. package/dist/vega/p-8aa07ed0.js +1 -0
  380. package/dist/vega/{p-da2b1fd0.entry.js → p-8b9a8603.entry.js} +1 -1
  381. package/dist/vega/{p-14bfc113.js → p-8bc15ed0.js} +1 -1
  382. package/dist/vega/{p-aea912ac.js → p-8d69b201.js} +1 -1
  383. package/dist/vega/p-8da860f6.js +1 -0
  384. package/dist/vega/{p-329c808e.entry.js → p-8f078d0d.entry.js} +1 -1
  385. package/dist/vega/p-916dfa7e.entry.js +1 -0
  386. package/dist/vega/{p-42a1d300.entry.js → p-9219201a.entry.js} +1 -1
  387. package/dist/vega/{p-cd2a1ffb.js → p-92823583.js} +1 -1
  388. package/dist/vega/{p-cec8ffdc.js → p-93dfab05.js} +1 -1
  389. package/dist/vega/{p-7f086e54.entry.js → p-9440a8a5.entry.js} +1 -1
  390. package/dist/vega/p-970115d6.js +1 -0
  391. package/dist/vega/{p-da067259.entry.js → p-9b1d718c.entry.js} +1 -1
  392. package/dist/vega/{p-c65a5778.entry.js → p-9cdedcfb.entry.js} +1 -1
  393. package/dist/vega/{p-6e7c1b19.entry.js → p-9fafc956.entry.js} +1 -1
  394. package/dist/vega/{p-70352240.entry.js → p-a268a4fb.entry.js} +1 -1
  395. package/dist/vega/{p-cd21adb8.js → p-a2bd621e.js} +1 -1
  396. package/dist/vega/p-a361456d.js +1 -0
  397. package/dist/vega/{p-73b9868f.js → p-aa32f2f3.js} +1 -1
  398. package/dist/vega/p-b6225d01.js +1 -0
  399. package/dist/vega/{p-58a00869.entry.js → p-b6ebfd5c.entry.js} +1 -1
  400. package/dist/vega/{p-fea33425.js → p-b730bf6e.js} +1 -1
  401. package/dist/vega/{p-81591449.entry.js → p-b799fc1f.entry.js} +1 -1
  402. package/dist/vega/{p-4644ccf9.entry.js → p-c0629528.entry.js} +1 -1
  403. package/dist/vega/{p-50d7a1c4.entry.js → p-c2e0f8b7.entry.js} +1 -1
  404. package/dist/vega/{p-522dd15f.entry.js → p-c67ce78c.entry.js} +1 -1
  405. package/dist/vega/{p-6ecb3c7d.entry.js → p-c78aeaf3.entry.js} +1 -1
  406. package/dist/vega/{p-5df53125.entry.js → p-c78e8081.entry.js} +1 -1
  407. package/dist/vega/{p-1acd5f04.entry.js → p-c8eaf91c.entry.js} +1 -1
  408. package/dist/vega/p-ca9852bb.js +1 -0
  409. package/dist/vega/{p-ce27c273.entry.js → p-cd1844ad.entry.js} +1 -1
  410. package/dist/vega/{p-a04b95aa.entry.js → p-cd9fb2ca.entry.js} +1 -1
  411. package/dist/vega/p-ce7e9515.entry.js +1 -0
  412. package/dist/vega/p-d0ce752f.entry.js +1 -0
  413. package/dist/vega/{p-044496e0.entry.js → p-d20587b4.entry.js} +1 -1
  414. package/dist/vega/{p-ae728041.entry.js → p-d3c8b871.entry.js} +1 -1
  415. package/dist/vega/{p-c87c7ef4.js → p-d7369441.js} +1 -1
  416. package/dist/vega/p-de885ef2.js +1 -0
  417. package/dist/vega/{p-b7b0930a.entry.js → p-dee38163.entry.js} +1 -1
  418. package/dist/vega/{p-6820b488.entry.js → p-e160a727.entry.js} +1 -1
  419. package/dist/vega/{p-49b4ab2b.js → p-e371738b.js} +1 -1
  420. package/dist/vega/{p-4979fd7d.js → p-e3803943.js} +1 -1
  421. package/dist/vega/p-e41d9d0e.entry.js +1 -0
  422. package/dist/vega/p-e5502873.entry.js +1 -0
  423. package/dist/vega/{p-5fcb825c.entry.js → p-e9cee498.entry.js} +1 -1
  424. package/dist/vega/p-ea22cba0.js +1 -0
  425. package/dist/vega/p-ea54ce0a.js +3 -0
  426. package/dist/vega/p-ee3155bd.js +1 -0
  427. package/dist/vega/{p-0605c656.entry.js → p-eee01ba7.entry.js} +1 -1
  428. package/dist/vega/{p-3fe43f7a.entry.js → p-ef2b9846.entry.js} +1 -1
  429. package/dist/vega/p-f0bc2bbb.js +1 -0
  430. package/dist/vega/{p-3863187f.entry.js → p-f365601c.entry.js} +1 -1
  431. package/dist/vega/p-f4a01959.js +1 -0
  432. package/dist/vega/{p-9e327397.entry.js → p-f515d189.entry.js} +1 -1
  433. package/dist/vega/{p-b504a8b4.entry.js → p-f5aefb2f.entry.js} +1 -1
  434. package/dist/vega/{p-2f48162f.entry.js → p-f6bccb06.entry.js} +1 -1
  435. package/dist/vega/{p-e75e75c9.entry.js → p-f70f7ad8.entry.js} +1 -1
  436. package/dist/vega/{p-42f3c0b1.entry.js → p-f7739cbb.entry.js} +1 -1
  437. package/dist/vega/{p-335e3237.entry.js → p-fc5dfb52.entry.js} +1 -1
  438. package/dist/vega/p-fd70418f.js +1 -0
  439. package/dist/vega/vega.esm.js +1 -1
  440. package/package.json +1 -1
  441. package/dist/collection/components/vega-rich-text-editor/slimmers/controllers/helper/input-event-handler/delete-content-handler.js +0 -92
  442. package/dist/types/components/vega-rich-text-editor/slimmers/controllers/helper/input-event-handler/delete-content-handler.d.ts +0 -26
  443. package/dist/vega/p-144d4b30.js +0 -1
  444. package/dist/vega/p-21775cc7.js +0 -1
  445. package/dist/vega/p-2944c76e.entry.js +0 -1
  446. package/dist/vega/p-3372f34a.entry.js +0 -1
  447. package/dist/vega/p-53ed3b1f.js +0 -1
  448. package/dist/vega/p-57f7c257.js +0 -1
  449. package/dist/vega/p-5a4e598f.js +0 -1
  450. package/dist/vega/p-5e1cd1cc.js +0 -1
  451. package/dist/vega/p-5e1ec2b8.entry.js +0 -1
  452. package/dist/vega/p-61d42e9b.entry.js +0 -1
  453. package/dist/vega/p-63ae5ada.entry.js +0 -1
  454. package/dist/vega/p-66905cbf.js +0 -1
  455. package/dist/vega/p-689070f9.entry.js +0 -1
  456. package/dist/vega/p-74fa0f5b.entry.js +0 -1
  457. package/dist/vega/p-7bb39b97.js +0 -1
  458. package/dist/vega/p-7f139b74.js +0 -1
  459. package/dist/vega/p-85d78ac1.js +0 -1
  460. package/dist/vega/p-92a144bc.js +0 -1
  461. package/dist/vega/p-9f608b97.js +0 -1
  462. package/dist/vega/p-aca134a3.entry.js +0 -1
  463. package/dist/vega/p-b2f89dbd.js +0 -1
  464. package/dist/vega/p-bd94b904.entry.js +0 -1
  465. package/dist/vega/p-c0c2a917.js +0 -3
  466. package/dist/vega/p-c40555c4.entry.js +0 -1
  467. package/dist/vega/p-d0060bdb.js +0 -1
  468. package/dist/vega/p-d00b3910.js +0 -1
  469. package/dist/vega/p-d14ddf80.js +0 -1
  470. package/dist/vega/p-dc78e8d6.js +0 -1
  471. package/dist/vega/p-ddc2d219.js +0 -1
  472. /package/dist/cjs/{feature-flag-controller-438a1510.js → feature-flag-controller-c19d0b58.js} +0 -0
  473. /package/dist/collection/{components/vega-code-block/assets → global/icons}/copy.js +0 -0
  474. /package/dist/esm/{feature-flag-controller-2a89f20c.js → feature-flag-controller-3fd04ea9.js} +0 -0
  475. /package/dist/types/components/{vega-code-block/assets/copy.d.ts → vega-rich-text-editor/assets/cut.d.ts} +0 -0
  476. /package/dist/vega/{p-bc73ce30.js → p-87a4d75f.js} +0 -0
@@ -7,6 +7,11 @@
7
7
  display: inline-block;
8
8
  }
9
9
 
10
+ :host(.center-align) {
11
+ display: inline-flex;
12
+ align-items: center;
13
+ }
14
+
10
15
  :host(.disabled) {
11
16
  pointer-events: none;
12
17
  }
@@ -52,10 +57,19 @@ label:first-of-type {
52
57
  }
53
58
  }
54
59
 
60
+ :host(.center-align) label:first-of-type {
61
+ display: inline-flex;
62
+ align-items: center;
63
+ }
64
+
55
65
  :host(.disabled) > label > span.vega-field-label {
56
66
  color: rgba(var(--v-text-secondary, 107, 116, 125, 1));
57
67
  }
58
68
 
69
+ :host(.center-align) .vega-field-label {
70
+ min-width: 0;
71
+ }
72
+
59
73
  .vega-field-label-required {
60
74
  color: rgba(var(--v-text-error, 189, 41, 71, 1));
61
75
  margin-left: 4px;
@@ -71,6 +85,12 @@ label:first-of-type {
71
85
  vertical-align: top;
72
86
  }
73
87
 
88
+ :host(.center-align) .label-suffix-button {
89
+ display: inline-flex;
90
+ align-items: center;
91
+ vertical-align: baseline;
92
+ }
93
+
74
94
  .optional {
75
95
  margin-left: 4px;
76
96
  font-family: "Inter", sans-serif;
@@ -99,9 +99,12 @@ export class VegaFieldLabel {
99
99
  }
100
100
  }
101
101
  render() {
102
+ var _a;
103
+ const shouldCenterAlign = !!((_a = this.suffixButtonConfig) === null || _a === void 0 ? void 0 : _a.centerAlign);
102
104
  return sanitizeVegaComponent(h(Host, { class: {
103
- hidden: this.label === '',
104
- disabled: this.disabled,
105
+ 'hidden': this.label === '',
106
+ 'disabled': this.disabled,
107
+ 'center-align': shouldCenterAlign,
105
108
  }, onClick: this.handleClick },
106
109
  this.labelAnnouncementRenderer.render(),
107
110
  h("label", { "aria-hidden": "true", part: "container" },
@@ -157,7 +160,7 @@ export class VegaFieldLabel {
157
160
  "mutable": false,
158
161
  "complexType": {
159
162
  "original": "Nullable<LabelSuffixButtonConfig>",
160
- "resolved": "{ icon: string; } & Partial<Pick<HTMLVegaTooltipElement, \"size\" | \"trigger\" | \"minWidth\" | \"maxWidth\" | \"text\" | \"placement\" | \"alignment\">>",
163
+ "resolved": "{ icon: string; buttonSize?: VegaButtonCircleSize; centerAlign?: boolean; } & Partial<Pick<HTMLVegaTooltipElement, \"size\" | \"trigger\" | \"minWidth\" | \"maxWidth\" | \"text\" | \"placement\" | \"alignment\">>",
161
164
  "references": {
162
165
  "Nullable": {
163
166
  "location": "import",
@@ -112,6 +112,7 @@ vega-field-label {
112
112
  letter-spacing: 0px;
113
113
  color: rgba(var(--v-text-primary, 32, 54, 69, 1));
114
114
  background-color: rgba(var(--v-bg-primary, 252, 252, 252, 1));
115
+ font-feature-settings: "calt" 0;
115
116
  }
116
117
  @media screen and (min-width: 768px) and (max-width: 1023px) {
117
118
  .vega-input-input input {
@@ -590,7 +590,7 @@ export class VegaInput {
590
590
  "mutable": false,
591
591
  "complexType": {
592
592
  "original": "Nullable<LabelSuffixButtonConfig>",
593
- "resolved": "{ icon: string; } & Partial<Pick<HTMLVegaTooltipElement, \"size\" | \"trigger\" | \"minWidth\" | \"maxWidth\" | \"text\" | \"placement\" | \"alignment\">>",
593
+ "resolved": "{ icon: string; buttonSize?: VegaButtonCircleSize; centerAlign?: boolean; } & Partial<Pick<HTMLVegaTooltipElement, \"size\" | \"trigger\" | \"minWidth\" | \"maxWidth\" | \"text\" | \"placement\" | \"alignment\">>",
594
594
  "references": {
595
595
  "Nullable": {
596
596
  "location": "import",
@@ -307,7 +307,7 @@ export class VegaInputSelect {
307
307
  "mutable": false,
308
308
  "complexType": {
309
309
  "original": "Nullable<LabelSuffixButtonConfig>",
310
- "resolved": "{ icon: string; } & Partial<Pick<HTMLVegaTooltipElement, \"size\" | \"trigger\" | \"minWidth\" | \"maxWidth\" | \"text\" | \"placement\" | \"alignment\">>",
310
+ "resolved": "{ icon: string; buttonSize?: VegaButtonCircleSize; centerAlign?: boolean; } & Partial<Pick<HTMLVegaTooltipElement, \"size\" | \"trigger\" | \"minWidth\" | \"maxWidth\" | \"text\" | \"placement\" | \"alignment\">>",
311
311
  "references": {
312
312
  "Nullable": {
313
313
  "location": "import",
@@ -0,0 +1,3 @@
1
+ export default {
2
+ icon: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Pro 7.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2026 Fonticons, Inc. --><path fill="currentColor" d="M48 112a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zm176 0C224 50.1 173.9 0 112 0S0 50.1 0 112 50.1 224 112 224c24 0 46.3-7.6 64.5-20.4l57.3 52.4-57.3 52.4C158.3 295.6 136 288 112 288 50.1 288 0 338.1 0 400s50.1 112 112 112 112-50.1 112-112c0-20.5-5.5-39.6-15.1-56.2L504.2 73.7c9.8-8.9 10.5-24.1 1.5-33.9s-24.1-10.5-33.9-1.5l-202.4 185.2-60.5-55.3c9.6-16.5 15.1-35.7 15.1-56.2zM471.8 473.7c9.8 8.9 25 8.3 33.9-1.5s8.3-25-1.5-33.9L338.6 286.8 302.7 319 471.8 473.7zM48 400a64 64 0 1 1 128 0 64 64 0 1 1 -128 0z"/></svg>`,
3
+ };
@@ -138,13 +138,28 @@ export class BlockDeleteTextOrDecoratorNodeStrategy extends BlockDeleteNodeConte
138
138
  }
139
139
  else {
140
140
  const shouldRemoveNode = previousNode;
141
- if (shouldRemoveNode && !shouldRemoveNode.isContentEditable()) {
141
+ if (shouldRemoveNode &&
142
+ !shouldRemoveNode.isContentEditable() &&
143
+ shouldRemoveNode.parent === target) {
142
144
  previousNode = this.getPreviousNode(shouldRemoveNode);
143
145
  shouldRemoveNode.parent.apply(new RemoveChildrenAction(shouldRemoveNode));
144
146
  if (!previousNode) {
145
147
  action.nextNode = startContainerNode;
146
148
  }
147
149
  }
150
+ else if (previousNode &&
151
+ previousNode.parent !== target &&
152
+ target.type === previousNode.parent.type) {
153
+ // The caret sits at the start of a block whose first node is a non-editable node
154
+ // (e.g. a token). Merge this block into the previous one, mirroring the text-node
155
+ // behavior so Backspace/Delete join the two blocks instead of doing nothing.
156
+ //
157
+ // This also covers the case where the previous block ENDS with a non-editable node
158
+ // (e.g. another token): the previous node is non-editable but lives in a different
159
+ // block, so it must not be removed here — the blocks merge instead, keeping that
160
+ // trailing token intact.
161
+ previousNode.parent.apply(new MergeTwoBlocksNodesAction(target));
162
+ }
148
163
  }
149
164
  if (previousNode) {
150
165
  action.previousNode = previousNode;
@@ -1,5 +1,8 @@
1
1
  import { AppendChildrenAction } from '../../actions/append-child-nodes-action';
2
+ import { LinkGroupAnnotationAction } from '../../actions/link-group-annotation-action';
2
3
  import { RemoveChildrenAction } from '../../actions/remove-child-action';
4
+ import { NodeAnnotationTypeEnum } from '../../annotations/node-annotation.abstract';
5
+ import { RTETextNode } from '../../nodes/text-node';
3
6
  import { ActionHandleStrategy } from '../action-handle-strategy.abstract';
4
7
  /**
5
8
  * Append the second block child nodes to the first block child nodes and remove the second block strategy.
@@ -19,7 +22,29 @@ export class BlockMergeNodesStrategy extends ActionHandleStrategy {
19
22
  shouldMergeNodes = anotherBlock.children.filter((node) => node.text);
20
23
  }
21
24
  target.apply(new AppendChildrenAction(shouldMergeNodes));
25
+ if (target.type !== 'image') {
26
+ this.transferLinkGroups(shouldMergeNodes, target);
27
+ }
22
28
  anotherBlock.parent.apply(new RemoveChildrenAction(anotherBlock));
23
29
  }
24
30
  }
31
+ /**
32
+ * Re-registers the link group annotation on the target block for any merged nodes that carry a
33
+ * link. The link group annotation lives on the block being removed, so without this the merged
34
+ * link nodes would lose their hyperlink rendering.
35
+ *
36
+ * @param {RTENode[]} mergedNodes - The nodes that were appended to the target block.
37
+ * @param {RTETextBlock} target - The text block that received the merged nodes.
38
+ */
39
+ transferLinkGroups(mergedNodes, target) {
40
+ mergedNodes.forEach((node) => {
41
+ if (!(node instanceof RTETextNode)) {
42
+ return;
43
+ }
44
+ const linkAnnotation = node.getAnnotationByType(NodeAnnotationTypeEnum.LINK);
45
+ if (linkAnnotation) {
46
+ target.apply(new LinkGroupAnnotationAction(linkAnnotation.link.groupKey, [node], 'link'));
47
+ }
48
+ });
49
+ }
25
50
  }
@@ -0,0 +1,16 @@
1
+ import changeManager from '../../../../../helpers/change-manager/change-manager';
2
+ import domNodeSubjectFactory from '../../../../../helpers/change-manager/subject/dom-node-subject/dom-node-subject-factory';
3
+ import { VegaInternalRichTextEditDeleteSelectedNodes } from '../../../../../helpers/event-manager/event-id/vega-internal-event-id';
4
+ import { ActionHandleStrategy } from '../action-handle-strategy.abstract';
5
+ /**
6
+ * DeleteSelectedContentStrategy is responsible for handling the deletion of selected content within the rich text editor.
7
+ */
8
+ export class DeleteSelectedContentStrategy extends ActionHandleStrategy {
9
+ /**
10
+ * @inheritDoc
11
+ */
12
+ handleAction(action) {
13
+ const { host, mergeFlag } = action;
14
+ changeManager.notify(domNodeSubjectFactory.getSubject(host, VegaInternalRichTextEditDeleteSelectedNodes), { host, detail: mergeFlag });
15
+ }
16
+ }
@@ -0,0 +1,17 @@
1
+ import { ModifyContentAction, ModifyContentActionType } from './modify-content-action.abstract';
2
+ /**
3
+ * Delete the currently selected content from the editor.
4
+ *
5
+ * @example currentVegaRTEContent.apply(new DeleteSelectedContentAction(host, mergeFlag))
6
+ */
7
+ export class DeleteSelectedContentAction extends ModifyContentAction {
8
+ constructor(host, mergeFlag, flushable = false) {
9
+ super();
10
+ this.type = ModifyContentActionType.DELETE_SELECTED_CONTENT;
11
+ // mergeFlag indicates whether the action should merge adjacent text nodes after deletion.
12
+ this.mergeFlag = false;
13
+ this.host = host;
14
+ this.mergeFlag = mergeFlag;
15
+ this.isFlushable = flushable;
16
+ }
17
+ }
@@ -30,6 +30,7 @@ export var ModifyContentActionType;
30
30
  ModifyContentActionType["INSERT_TEXT_TO_DECORATOR_NODE"] = "INSERT_TEXT_TO_DECORATOR_NODE";
31
31
  ModifyContentActionType["INSERT_NODE_TO_NEAREST_ROOT"] = "INSERT_NODE_TO_NEAREST_ROOT";
32
32
  ModifyContentActionType["PASTE_CONTENT"] = "PASTE_CONTENT";
33
+ ModifyContentActionType["DELETE_SELECTED_CONTENT"] = "DELETE_SELECTED_CONTENT";
33
34
  })(ModifyContentActionType || (ModifyContentActionType = {}));
34
35
  /**
35
36
  * Abstract class for update node content, delete node, insert node
@@ -23,6 +23,7 @@ import { StylePreservator } from '../../../helpers/csp/styles-preservator';
23
23
  import { LogUtility } from '../../../utils/log';
24
24
  import { HTMLContentCleaner } from '../slimmers/controllers/html-cleaner';
25
25
  import { RTEFilterStylesStrategyRegistry } from './filter-styles-strategies/filter-styles-strategy-registry';
26
+ import { DeleteSelectedContentStrategy } from './action-handle-strategies/modify-content-strategies/delete-selected-content-strategy';
26
27
  /**
27
28
  * Class representing the content state of the rich text editor.
28
29
  */
@@ -259,6 +260,7 @@ export class VegaRTEContent {
259
260
  ActionHandleStrategyRegistry.register(ModifyContentActionType.INSERT_CHILDREN_AFTER, VegaRTEContent.name, new InsertChildrenAfterStrategy());
260
261
  ActionHandleStrategyRegistry.register(ModifyContentActionType.TRANSFORM_TO_CODE_BLOCK, VegaRTEContent.name, new BlockTransformToCodeBlockStrategy());
261
262
  ActionHandleStrategyRegistry.register(ModifyContentActionType.UPDATE_CURSOR_POSITION, VegaRTEContent.name, new UpdateCursorPositionStrategy());
263
+ ActionHandleStrategyRegistry.register(ModifyContentActionType.DELETE_SELECTED_CONTENT, VegaRTEContent.name, new DeleteSelectedContentStrategy());
262
264
  })();
263
265
  /** Minimize-safe type discriminator for VegaRTEContent. */
264
266
  VegaRTEContent.dtoName = 'VegaRTEContent';
@@ -144,8 +144,8 @@ export class RTERange {
144
144
  : this._endNode.getRangeContainer();
145
145
  if (startContainer && endContainer) {
146
146
  range = new Range();
147
- range.setStart(startContainer, this._startOffset);
148
- range.setEnd(endContainer, this._endOffset);
147
+ range.setStart(startContainer, this.clampOffsetToContainer(startContainer, this._startOffset));
148
+ range.setEnd(endContainer, this.clampOffsetToContainer(endContainer, this._endOffset));
149
149
  this._startContainer = startContainer;
150
150
  this._endContainer = endContainer;
151
151
  this._oldNativeRange = range;
@@ -156,6 +156,28 @@ export class RTERange {
156
156
  return this._oldNativeRange;
157
157
  }
158
158
  }
159
+ /**
160
+ * Clamps an offset to the valid bound of a DOM container so that
161
+ * `Range.setStart` / `Range.setEnd` never throw `IndexSizeError`.
162
+ *
163
+ * A stored selection offset can become stale or unit-mismatched when an undo
164
+ * restores a selection captured against different content — for example after
165
+ * find-and-replace shrinks a text node, or when the selection node's DOM
166
+ * container is its parent element (offset measured in child-node count rather
167
+ * than characters, as for non-editable token / logic-control nodes). Text
168
+ * containers are bounded by character length, element containers by child count.
169
+ *
170
+ * @param {Node} container - The DOM container the offset applies to.
171
+ * @param {number} offset - The desired offset.
172
+ * @returns {number} The offset clamped to `[0, container length]`.
173
+ */
174
+ clampOffsetToContainer(container, offset) {
175
+ var _a, _b;
176
+ const max = container.nodeType === Node.TEXT_NODE
177
+ ? (_b = (_a = container.textContent) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0
178
+ : container.childNodes.length;
179
+ return Math.max(0, Math.min(offset, max));
180
+ }
159
181
  /**
160
182
  * Retrieves an RTENode based on the given element by checking its type and parent elements.
161
183
  *
@@ -0,0 +1,226 @@
1
+ import { LogUtility } from '../../../../../utils/log';
2
+ import { tryGetDocument } from '../../../../../utils/try-get-document';
3
+ import { ActionHandleStrategy } from '../../../dto/action-handle-strategies/action-handle-strategy.abstract';
4
+ /**
5
+ * Strategy that extracts the HTML and plain text content of the current selection, stores the
6
+ * result on the {@link CopySelectedContentAction} and writes it to the clipboard.
7
+ */
8
+ export class CopySelectedContentStrategy extends ActionHandleStrategy {
9
+ /**
10
+ * @inheritDoc
11
+ */
12
+ handleAction(action) {
13
+ const parentBlocks = this.getParentBlocks(action.selectedNodes);
14
+ const { html, text } = this.getSelectedContent(action.selection, parentBlocks);
15
+ if (text || html) {
16
+ action.copyResult = this.copyToClipboard(html, text);
17
+ }
18
+ }
19
+ /**
20
+ * Extracts the HTML and text content from the current selection.
21
+ *
22
+ * `Range.cloneContents()` returns only the nodes inside the selection, dropping the ancestor chain
23
+ * between the selection's common ancestor and its block. When the selection stays inside a single
24
+ * block, those dropped ancestors carry the styling, so the cloned fragment is re-wrapped with
25
+ * shallow clones of every ancestor from the common ancestor up to the block, preserving arbitrary
26
+ * inline nesting (e.g. `block > strong > em > span > text`).
27
+ *
28
+ * When the selection covers the whole block (its common ancestor sits above the block) or spans
29
+ * multiple blocks, each block is already kept by `cloneContents()`, so no re-wrapping is done.
30
+ *
31
+ * @param {Nullable<Selection>} selection - The current selection object.
32
+ * @param {RTEBlock[]} parentBlocks - The parent blocks of the selected nodes.
33
+ * @returns {RTESelectedContent} - The HTML and text content of the selected content.
34
+ */
35
+ getSelectedContent(selection, parentBlocks) {
36
+ const result = { html: '', text: '' };
37
+ if (!selection || selection.rangeCount === 0 || selection.isCollapsed) {
38
+ return result;
39
+ }
40
+ const range = selection.getRangeAt(0);
41
+ const doc = tryGetDocument();
42
+ if (!doc) {
43
+ return result;
44
+ }
45
+ // `cloneContents()` returns a `DocumentFragment` of real DOM nodes (already well-formed). Its
46
+ // `textContent` is the plain text; the fragment itself is wrapped/serialized into HTML below.
47
+ const fragment = range.cloneContents();
48
+ // A `DocumentFragment` has no `innerHTML`, so a temporary element is used to serialize it to HTML.
49
+ const container = doc.createElement('div');
50
+ const commonAncestor = range.commonAncestorContainer;
51
+ if (parentBlocks.length === 1) {
52
+ const block = this.getDOMByEntity(parentBlocks[0]);
53
+ // Only re-wrap when the block is dropped from the clone, i.e. the selection stays inside the
54
+ // block. When the whole block is selected, `commonAncestor` sits above it and the clone
55
+ // already keeps the block, so wrapping again would nest a duplicate block.
56
+ if (block && block.contains(commonAncestor)) {
57
+ // Wrap the cloned fragment with the dropped ancestor chain (from `commonAncestor` up to the
58
+ // block), preserving each element's styles, then serialize the rebuilt block to HTML.
59
+ const cloneNode = this.wrapWithAncestorChain(fragment, commonAncestor, block);
60
+ container.appendChild(cloneNode);
61
+ result.html = container.innerHTML;
62
+ result.text = container.textContent;
63
+ return result;
64
+ }
65
+ }
66
+ else if (parentBlocks.length > 1 &&
67
+ parentBlocks.every((block) => block.type === 'list-item')) {
68
+ const firstList = parentBlocks[0].parent;
69
+ if (firstList && parentBlocks.every((block) => block.parent === firstList)) {
70
+ const listElement = this.getDOMByEntity(firstList);
71
+ if (listElement && listElement.contains(commonAncestor)) {
72
+ const cloneListElement = listElement.cloneNode(false);
73
+ cloneListElement.appendChild(fragment);
74
+ container.appendChild(cloneListElement);
75
+ result.html = container.innerHTML;
76
+ result.text = container.textContent;
77
+ return result;
78
+ }
79
+ }
80
+ }
81
+ // The selection covers whole/multiple blocks: the clone already keeps them, so serialize as-is.
82
+ container.appendChild(fragment);
83
+ result.html = container.innerHTML;
84
+ result.text = container.textContent;
85
+ return result;
86
+ }
87
+ /**
88
+ * Wraps the cloned selection fragment with the ancestor chain that `cloneContents()` dropped,
89
+ * rebuilding every element from the selection's common ancestor up to the block while preserving
90
+ * each element's styles. Returns the cloned block that holds the rebuilt chain and content.
91
+ *
92
+ * When the common ancestor is the block itself, the fragment is appended directly under the cloned
93
+ * block, since no inline ancestor chain was dropped.
94
+ *
95
+ * @param {Node} content - The cloned selection fragment to place at the innermost level.
96
+ * @param {Node} commonAncestor - The selection's common ancestor container.
97
+ * @param {HTMLElement} block - The block element to stop cloning at.
98
+ * @returns {HTMLElement} - The cloned block wrapping the rebuilt ancestor chain and content.
99
+ */
100
+ wrapWithAncestorChain(content, commonAncestor, block) {
101
+ const blockClone = block.cloneNode(false);
102
+ // `cloneContents()` keeps everything inside `commonAncestor`, so the dropped chain runs from
103
+ // `commonAncestor` (its element, when the ancestor is a text node) up to the block.
104
+ const targetElement = commonAncestor.nodeType === Node.TEXT_NODE
105
+ ? commonAncestor.parentElement
106
+ : commonAncestor;
107
+ // The target is the block itself: the content sits directly under the block, no chain to rebuild.
108
+ if (targetElement === block) {
109
+ blockClone.appendChild(content);
110
+ return blockClone;
111
+ }
112
+ // Clone the target as the innermost container and place the content inside it.
113
+ const innermost = targetElement.cloneNode(false);
114
+ innermost.appendChild(content);
115
+ // Walk up from the target to the block, cloning each ancestor and nesting the chain bottom-up.
116
+ let shouldAppendNode = innermost;
117
+ let current = targetElement.parentElement;
118
+ while (current && current !== block) {
119
+ const parentClone = current.cloneNode(false);
120
+ parentClone.appendChild(shouldAppendNode);
121
+ shouldAppendNode = parentClone;
122
+ current = current.parentElement;
123
+ }
124
+ // Append the assembled ancestor chain to the cloned block.
125
+ blockClone.appendChild(shouldAppendNode);
126
+ // When the block is a list item inside an ordered list, wrap the cloned list item with a
127
+ // shallow clone of the ordered list to preserve the numbering.
128
+ if (blockClone.tagName === 'LI' &&
129
+ current &&
130
+ current.parentElement &&
131
+ current.parentElement.tagName === 'OL') {
132
+ const cloneList = current.parentElement.cloneNode(false);
133
+ cloneList.appendChild(blockClone);
134
+ return cloneList;
135
+ }
136
+ return blockClone;
137
+ }
138
+ /**
139
+ * Retrieves the parent blocks of the given selected nodes.
140
+ *
141
+ * @param {RTENode[]} selectedNodes - The nodes for which to find parent blocks.
142
+ * @returns {RTEBlock[]} An array of parent blocks.
143
+ */
144
+ getParentBlocks(selectedNodes) {
145
+ const parentBlocks = [];
146
+ for (const node of selectedNodes) {
147
+ const block = node.parent;
148
+ if (block && !parentBlocks.includes(block)) {
149
+ parentBlocks.push(block);
150
+ }
151
+ }
152
+ return parentBlocks;
153
+ }
154
+ /**
155
+ * Copies both HTML and plain text content to the clipboard using the Clipboard API.
156
+ *
157
+ * Browser compatibility for `navigator.clipboard.write()` with `ClipboardItem`:
158
+ * - Chrome 76+, Edge 79+, Safari 13.1+, Firefox 127+
159
+ *
160
+ * Since Firefox 86+ must be supported, fall back to `execCommand('copy')` when the
161
+ * Clipboard API is unavailable or fails (e.g. Firefox 86-126).
162
+ *
163
+ * @param {string} htmlContent - The HTML content to copy.
164
+ * @param {string} textContent - The plain text content to copy.
165
+ * @returns {Promise<boolean>} - A promise that resolves to true if the copy operation succeeded.
166
+ */
167
+ async copyToClipboard(htmlContent, textContent) {
168
+ let result = false;
169
+ try {
170
+ const htmlBlob = new Blob([htmlContent], { type: 'text/html' });
171
+ const textBlob = new Blob([textContent], { type: 'text/plain' });
172
+ const clipboardItem = new ClipboardItem({
173
+ 'text/html': htmlBlob,
174
+ 'text/plain': textBlob,
175
+ });
176
+ await navigator.clipboard.write([clipboardItem]);
177
+ result = true;
178
+ }
179
+ catch (_a) {
180
+ // Fallback for browsers without ClipboardItem support (e.g. Firefox 86-126)
181
+ result = this.copyWithExecCommand(htmlContent, textContent);
182
+ if (!result) {
183
+ LogUtility.warn('Failed to copy the selected content to the clipboard. Use keyboard shortcuts instead.');
184
+ }
185
+ }
186
+ return result;
187
+ }
188
+ /**
189
+ * Fallback copy method using `execCommand('copy')` for browsers that don't support the
190
+ * Clipboard API (e.g. Firefox 86-126).
191
+ *
192
+ * Instead of creating a temporary element and changing the selection (which would clear the
193
+ * editor's Shadow DOM selection and steal focus), this intercepts the native `copy` event that
194
+ * `execCommand('copy')` triggers and overrides its clipboard data. The user's original selection
195
+ * and focus stay untouched.
196
+ *
197
+ * @param {string} htmlContent - The HTML content to copy.
198
+ * @param {string} textContent - The plain text content to copy.
199
+ * @returns {boolean} - True if the copy command succeeded.
200
+ */
201
+ copyWithExecCommand(htmlContent, textContent) {
202
+ const doc = tryGetDocument();
203
+ if (!doc) {
204
+ return false;
205
+ }
206
+ /**
207
+ * Overrides the clipboard data of the native copy event triggered by `execCommand('copy')`.
208
+ *
209
+ * @param {ClipboardEvent} event - The native copy event.
210
+ */
211
+ const onCopy = (event) => {
212
+ if (event.clipboardData) {
213
+ event.clipboardData.setData('text/html', htmlContent);
214
+ event.clipboardData.setData('text/plain', textContent);
215
+ }
216
+ event.preventDefault();
217
+ };
218
+ doc.addEventListener('copy', onCopy);
219
+ try {
220
+ return doc.execCommand('copy');
221
+ }
222
+ finally {
223
+ doc.removeEventListener('copy', onCopy);
224
+ }
225
+ }
226
+ }
@@ -0,0 +1,21 @@
1
+ import { ModifyContentAction } from '../../../dto/actions/modify-content-action.abstract';
2
+ /**
3
+ * Action to extract the currently selected content (HTML and plain text) from the editor.
4
+ *
5
+ * The action is read-only: it does not mutate the content state. The handling strategy resolves
6
+ * the selected HTML and plain text and writes them directly to the clipboard.
7
+ *
8
+ * @example host.value.apply(new CopySelectedContentAction(selection, selectedNodes));
9
+ */
10
+ export class CopySelectedContentAction extends ModifyContentAction {
11
+ constructor(selection, selectedNodes) {
12
+ super();
13
+ this.type = 'COPY_SELECTED_CONTENT_ACTION';
14
+ this.selection = null;
15
+ this.selectedNodes = [];
16
+ // The result of the copy operation, which may be a Promise if the clipboard write is asynchronous.
17
+ this.copyResult = null;
18
+ this.selection = selection;
19
+ this.selectedNodes = selectedNodes;
20
+ }
21
+ }
@@ -0,0 +1,20 @@
1
+ import { VegaRTEExtension } from '../extension.abstract';
2
+ import { RTECopyToolbarButtonRenderer } from './copy-toolbar-button-renderer';
3
+ import { ActionHandleStrategyRegistry } from '../../dto/action-handle-strategies/action-handle-strategy-registry';
4
+ import { VegaRTEContent } from '../../dto/content-state';
5
+ import { CopySelectedContentStrategy } from './action-handler-strategies/copy-selected-content-strategy';
6
+ /**
7
+ * Vega Rich Text Editor Copy Extension.
8
+ * Adds a toolbar button that copies the currently selected editor content to the clipboard.
9
+ */
10
+ export class VegaRTECopyExtension extends VegaRTEExtension {
11
+ /** @inheritDoc */
12
+ prepareBeforeLoad(host) {
13
+ this.registerToolbarButtonRenderer(VegaRTECopyExtension.TOOLBAR_BUTTON_KEY, new RTECopyToolbarButtonRenderer(), host);
14
+ }
15
+ }
16
+ (() => {
17
+ ActionHandleStrategyRegistry.register('COPY_SELECTED_CONTENT_ACTION', VegaRTEContent.name, new CopySelectedContentStrategy());
18
+ })();
19
+ // The unique key for the copy toolbar button, used for registration and retrieval.
20
+ VegaRTECopyExtension.TOOLBAR_BUTTON_KEY = 'copy';
@@ -0,0 +1,58 @@
1
+ import { VegaInternalIconManager } from '../../../../helpers/icon/internal-icon-manager';
2
+ import { VegaRTEToolbarButtonRenderer } from '../base-toolbar-button-renderer';
3
+ import copyIcon from '../../../../global/icons/copy';
4
+ import { methodPlaceholder } from 'vega-slimmer/core';
5
+ import { CopySelectedContentAction } from './actions/copy-selected-content-action';
6
+ /**
7
+ * Toolbar button renderer for the Copy extension.
8
+ * Renders a toolbar button that copies the currently selected editor text to the clipboard.
9
+ */
10
+ export class RTECopyToolbarButtonRenderer extends VegaRTEToolbarButtonRenderer {
11
+ /**
12
+ * Renders the copy toolbar button.
13
+ *
14
+ * @param {VegaRTECreateElementFunction} h - Create element function.
15
+ * @param {VegaRTEToolbarRenderContext} editorContext - The render context for the editor.
16
+ * @returns {VegaRTERenderResult} - The toolbar button render result.
17
+ */
18
+ render(h, editorContext) {
19
+ return this.renderButton(h, editorContext, {
20
+ icon: 'rte-copy',
21
+ tooltip: { text: 'Copy' },
22
+ });
23
+ }
24
+ /**
25
+ * Determines if the copy button should be disabled.
26
+ * Disabled when the editor is disabled or when no content is selected.
27
+ *
28
+ * @param {VegaRTEToolbarRenderContext} editorContext - The render context for the editor.
29
+ * @returns {boolean} - True if the button should be disabled.
30
+ */
31
+ isDisabled(editorContext) {
32
+ const context = this.getExtensionContext(editorContext.host);
33
+ return (!context || context.host.disabled || !context.getSelection() || context.getSelection().isCollapsed);
34
+ }
35
+ /**
36
+ * Handles the copy button click event.
37
+ * Dispatches a copy action through `host.value`; the action handler extracts the current selection
38
+ * and writes the resulting HTML and plain text content to the clipboard.
39
+ *
40
+ * @param {VegaRTEToolbarRenderContext} editorContext - The render context for the editor.
41
+ */
42
+ handleButtonClick(editorContext) {
43
+ const context = this.getExtensionContext(editorContext.host);
44
+ if (context && context.host) {
45
+ context.host.value.apply(new CopySelectedContentAction(context.getSelection(), context.getSelectedNodes()));
46
+ }
47
+ }
48
+ /*istanbul ignore next*/
49
+ /**
50
+ * Handles dropdown click event. Not applicable for the copy button, so it's left empty.
51
+ */
52
+ handleDropdownClick() {
53
+ methodPlaceholder();
54
+ }
55
+ }
56
+ (() => {
57
+ VegaInternalIconManager.register({ 'rte-copy': copyIcon });
58
+ })();
@@ -0,0 +1,15 @@
1
+ import { VegaRTEExtension } from '../extension.abstract';
2
+ import { RTECutToolbarButtonRenderer } from './cut-toolbar-button-renderer';
3
+ /**
4
+ * Vega Rich Text Editor Cut Extension.
5
+ * Adds a toolbar button that copies the currently selected editor content to the clipboard
6
+ * and removes it from the editor.
7
+ */
8
+ export class VegaRTECutExtension extends VegaRTEExtension {
9
+ /** @inheritDoc */
10
+ prepareBeforeLoad(host) {
11
+ this.registerToolbarButtonRenderer(VegaRTECutExtension.TOOLBAR_BUTTON_KEY, new RTECutToolbarButtonRenderer(), host);
12
+ }
13
+ }
14
+ // The unique key for the cut toolbar button, used for registration and retrieval.
15
+ VegaRTECutExtension.TOOLBAR_BUTTON_KEY = 'cut';